diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..176a458f9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto diff --git a/extras/deploy/testdataset/elevation.asc b/extras/deploy/testdataset/elevation.asc index 896fe18ea..2128d8bfe 100644 --- a/extras/deploy/testdataset/elevation.asc +++ b/extras/deploy/testdataset/elevation.asc @@ -1,452 +1,452 @@ -NCOLS 611 -NROWS 446 -XLLCORNER 590310.0 -YLLCORNER 4914270.0 -CELLSIZE 30.0 -NODATA_VALUE -9999 -1095.172363 1095.546875 1095.806274 1096.040039 1096.100342 1096.373413 1096.741089 1097.159912 1097.883911 1098.542114 1099.082031 1099.360596 1099.557861 1099.715576 1099.7771 1100.104126 1100.623779 1101.188599 1101.920044 1102.695679 1103.609131 1104.435425 1105.321899 1106.204468 1107.048584 1107.990112 1108.820068 1109.640991 1110.856934 1112.417358 1113.867676 1115.546753 1117.732666 1120.108276 1121.867188 1123.802246 1125.272217 1126.844482 1128.707031 1130.589478 1132.137695 1132.934814 1134.506104 1136.941162 1139.794922 1142.093872 1144.509888 1149.543457 1157.48584 1164.46521 1169.712036 1174.21521 1180.037354 1190.238892 1203.616821 1217.396729 1224.419434 1226.6698 1228.449829 1226.588501 1219.773071 1222.678589 1226.719971 1223.166016 1222.198975 1237.053955 1246.560181 1247.0802 1244.123291 1240.102051 1245.019775 1246.843506 1253.254517 1260.290039 1264.511597 1267.026001 1267.403687 1266.057495 1263.580566 1257.489014 1245.803345 1246.072388 1245.141113 1236.123047 1223.330322 1221.803833 1222.341431 1218.349976 1214.708618 1210.964722 1206.628784 1200.388428 1197.589355 1195.441162 1187.49939 1185.246216 1179.417969 1172.025757 1160.204468 1153.933472 1149.087158 1145.499756 1145.47644 1146.17334 1142.504517 1135.393555 1133.408936 1136.716797 1147.702515 1154.48999 1160.359009 1163.407227 1165.002075 1167.44397 1168.422485 1162.951416 1154.633423 1145.694458 1141.020874 1136.167603 1131.814209 1135.05896 1133.275513 1130.722412 1129.044067 1133.269409 1139.770996 1147.666748 1150.131104 1152.930176 1155.202881 1156.44873 1156.955444 1157.845459 1159.706665 1164.116821 1168.262573 1170.672852 1171.038818 1171.644653 1171.925293 1172.385498 1173.68042 1174.502441 1176.040039 1178.872681 1182.169312 1183.889648 1184.32959 1184.423218 1183.922363 1182.949219 1181.584351 1179.184937 1177.498413 1176.08374 1175.141113 1174.797119 1174.741089 1174.97583 1175.462891 1176.002441 1176.661865 1177.413818 1178.187134 1178.85022 1179.589233 1180.161133 1180.69751 1181.27002 1181.870728 1182.337646 1182.973511 1183.208008 1184.518188 1184.928223 1184.915771 1184.338623 1183.722656 1184.045288 1184.835205 1184.503174 1183.737427 1182.998169 1182.826904 1182.524048 1182.018066 1182.663452 1184.369873 1184.345703 1183.196899 1182.246338 1181.996582 1182.228882 1181.70813 1181.087524 1181.254028 1181.658447 1181.595947 1181.141724 1180.867798 1180.61145 1180.04187 1179.267212 1178.417969 1177.746704 1177.201782 1177.105225 1177.463257 1178.413086 1181.077759 1183.515259 1181.569702 1176.064453 1172.762451 1171.008179 1169.293701 1167.524292 1166.103882 1164.928711 1164.055176 1163.284424 1162.559692 1162.022095 1161.607788 1160.650024 1159.449829 1158.489746 1158.375366 1158.302856 1158.250122 1158.174805 1157.745361 1156.727051 1155.762085 1154.913086 1153.898071 1153.03894 1152.322632 1151.669189 1151.019287 1150.391113 1149.787964 1149.217285 1148.727051 1148.160034 1147.760254 1147.70459 1147.577026 1147.42688 1147.382935 1147.316528 1147.401733 1147.389526 1147.201904 1147.140259 1146.811401 1146.599731 1146.489624 1146.535889 1146.606934 1146.875122 1147.083496 1147.241211 1147.660156 1148.159546 1148.399902 1148.575195 1148.467407 1148.320679 1148.272705 1148.61438 1149.508911 1150.68396 1151.952881 1153.435059 1154.991333 1156.490601 1157.324097 1157.670654 1158.45166 1163.283936 1168.500366 1173.719971 1181.475342 1187.868042 1192.800659 1196.092651 1196.292358 1195.510498 1193.083862 1190.414795 1188.767578 1187.971069 1185.748901 1181.887085 1171.787231 1175.537354 1181.022949 1181.387939 1181.674194 1185.667969 1191.981812 1195.203003 1200.113892 1207.515381 1212.860474 1218.425293 1221.818726 1222.623291 1220.825317 1219.104126 1218.415527 1217.213623 1216.369263 1214.945312 1214.725464 1214.064575 1212.53894 1211.264893 1210.785889 1209.689697 1209.015137 1208.701538 1207.119019 1202.601929 1195.741455 1190.729004 1185.046631 1178.339111 1170.864014 1160.482544 1153.943237 1148.917358 1147.145996 1145.092529 1143.510498 1139.412109 1136.910522 1135.005371 1134.697998 1133.96936 1132.608643 1130.547974 1128.717285 1127.155029 1125.65271 1124.04248 1122.502563 1121.665161 1121.144043 1120.794067 1120.316162 1119.846191 1119.351807 1118.589478 1117.817993 1117.063477 1116.440674 1115.697388 1114.993774 1114.343628 1113.752319 1112.95874 1112.340576 1111.916504 1111.366455 1110.882202 1110.609741 1110.777954 1110.803223 1110.876343 1111.07605 1111.262695 1111.388062 1111.338989 1111.343628 1111.18811 1110.997314 1110.722778 1110.422363 1110.126831 1109.548828 1108.174561 1106.535889 1104.606445 1102.939941 1101.787231 1102.066284 1102.113647 1102.12085 1102.225098 1102.342651 1102.537598 1102.918213 1103.327393 1103.908447 1104.510376 1105.103638 1105.790283 1106.505249 1107.297852 1108.130127 1108.960205 1109.794678 1109.703003 1107.868896 1106.227783 1105.564331 1106.19812 1109.16626 1111.839233 1116.112427 1122.172852 1121.907349 1119.766724 1119.635376 1121.309082 1121.937256 1122.113892 1131.297363 1136.14917 1138.5802 1140.734009 1147.270874 1150.181519 1149.099365 1148.913086 1152.14917 1161.015991 1171.694824 1181.081665 1186.315063 1188.014648 1182.594604 1180.400635 1182.091064 1189.977295 1196.286377 1202.676147 1214.36438 1223.523193 1223.047119 1221.258911 1216.505737 1210.901001 1208.402466 1204.637817 1201.330566 1198.281738 1192.038208 1204.554443 1214.732544 1227.229004 1235.41687 1236.935303 1236.627563 1236.453613 1235.95105 1234.824097 1233.928589 1232.891846 1228.006104 1221.196045 1216.071167 1211.737061 1208.580566 1199.168335 1191.071045 1176.114502 1171.015137 1161.225952 1157.743164 1158.338013 1158.217773 1154.94812 1149.897949 1146.150024 1145.385864 1144.688965 1141.890137 1138.381592 1136.322876 1135.533203 1134.437012 1133.133911 1131.552856 1129.880127 1128.412964 1127.163452 1126.072144 1124.922241 1123.715088 1122.403442 1121.026978 1119.948853 1118.875366 1117.889648 1116.805786 1115.727661 1114.821411 1113.727539 1112.69519 1111.64502 1110.442139 1109.004883 1107.905396 1107.006836 1106.307861 1104.661011 1108.35376 1111.33313 1113.080811 1114.696777 1116.239136 1117.250854 1117.852661 1118.674561 1119.665283 1121.252075 1122.280518 1122.3479 1121.742432 1120.432617 1119.745972 1119.615479 1120.219727 1120.723877 1119.903442 1118.537231 1116.945435 1115.533325 1114.092407 1112.881958 1111.898193 1111.736694 1112.154541 1112.675171 1113.142456 1113.607666 1114.168457 1115.083862 1116.135376 1117.532715 1119.157227 1121.140747 1122.277954 1122.348511 1122.234985 1122.203369 1122.054199 1122.391846 1123.621094 1125.041382 1126.413574 1128.248657 1129.973145 1131.443848 1132.65564 1133.317871 1135.047241 1137.221313 1138.859741 1141.95752 1145.475098 1147.430664 1148.610107 1147.051636 1145.868408 1156.339966 1167.081177 1174.663452 1180.866577 1184.948242 1187.163208 1193.221436 1196.467896 1197.767822 1194.528687 1184.011719 1171.950684 1163.036011 1161.045532 1159.003662 1157.190918 1162.282349 1165.635864 1164.214233 1158.958618 1151.425537 1141.924561 1131.445068 1135.808472 1146.690796 1149.347534 1152.023926 1159.729614 1173.684448 1181.821167 1181.728271 1170.703003 1165.660034 1162.532837 1160.925293 1159.181763 1155.205078 1151.291992 1148.336182 1148.034912 1147.66687 1143.21228 -1095.746704 1096.073975 1096.360596 1096.617798 1096.693726 1096.782593 1097.021973 1097.300781 1097.864502 1098.578491 1099.199707 1099.550049 1099.935181 1100.111816 1100.31604 1100.716309 1101.366577 1101.899048 1102.462036 1103.148193 1103.929077 1104.801758 1105.631348 1106.344116 1107.201538 1107.946533 1108.741577 1109.520996 1110.37793 1112.007324 1113.671509 1115.527832 1117.644653 1119.67749 1121.411133 1122.89978 1124.369507 1125.484741 1127.148804 1128.659546 1130.103882 1131.458008 1132.69165 1134.216431 1137.459229 1140.160156 1142.653442 1145.506104 1150.37207 1155.018311 1159.919312 1165.190552 1172.88147 1178.554199 1188.835327 1199.81604 1213.87207 1220.310791 1224.089478 1229.319336 1230.796631 1231.208984 1233.975952 1235.900269 1239.689087 1246.873535 1251.787598 1251.780396 1249.950439 1246.445923 1251.86792 1257.633911 1259.240967 1264.925415 1269.722656 1272.25708 1272.63208 1272.088379 1269.516968 1263.168457 1257.5354 1258.021729 1254.09314 1243.772827 1232.139038 1228.083008 1223.600586 1219.068604 1211.86145 1205.991211 1198.959473 1195.150024 1192.731689 1188.437378 1182.184326 1180.713623 1179.020142 1172.400513 1160.185547 1151.28894 1146.489136 1146.799805 1153.601685 1153.86084 1148.362549 1141.313965 1137.525391 1133.376465 1139.327759 1145.7052 1155.02832 1160.762695 1164.460327 1167.55127 1171.037476 1172.504761 1165.738037 1157.676392 1147.584839 1142.838379 1135.525757 1134.190186 1136.217285 1136.181274 1136.307617 1130.515137 1135.78418 1145.992676 1148.685791 1150.322388 1151.645142 1153.270874 1156.129395 1159.415161 1162.451782 1165.492432 1169.373901 1171.120728 1171.199097 1171.083496 1170.514404 1170.450439 1171.23938 1171.427979 1170.802002 1174.407593 1180.719482 1183.181274 1184.419678 1184.563354 1184.325928 1183.801392 1182.91333 1180.34314 1178.604614 1177.26001 1176.356567 1175.945679 1175.882568 1176.003174 1176.37085 1176.717407 1177.080933 1177.47583 1177.973633 1178.470337 1179.028564 1179.606567 1180.27002 1180.966675 1181.516235 1182.054321 1182.669922 1183.078491 1183.435791 1183.539185 1183.25708 1182.902344 1182.442261 1182.615234 1183.097168 1182.834106 1182.370605 1181.762451 1181.360718 1181.094482 1180.869385 1181.331177 1182.363159 1182.2146 1181.441406 1180.68335 1180.461548 1180.299194 1179.871582 1179.536377 1179.555176 1179.709229 1179.646851 1179.250488 1178.855469 1178.568359 1178.065063 1177.612671 1176.995728 1176.319946 1175.933228 1175.926636 1176.562012 1178.547241 1183.103027 1183.882324 1183.353027 1178.755249 1174.893066 1172.411011 1170.163696 1167.50354 1165.098633 1163.619019 1162.55896 1161.893799 1160.729126 1160.159058 1159.989624 1159.015015 1157.53418 1156.568848 1156.210449 1155.960693 1155.884277 1155.880249 1155.547974 1155.062378 1154.570068 1153.915405 1152.75647 1151.966553 1151.397705 1151.074707 1150.698486 1150.190796 1149.719116 1149.031128 1148.604614 1148.267456 1148.199463 1148.133789 1148.014404 1147.91748 1147.893188 1147.817017 1147.674438 1147.620483 1147.540405 1147.286621 1146.966797 1146.610718 1146.494873 1146.547485 1146.86438 1147.287109 1147.53125 1147.734619 1148.290161 1148.651733 1148.852905 1149.14978 1149.222534 1149.366333 1149.467407 1150.330078 1151.333618 1152.480591 1153.474854 1154.706421 1156.530029 1158.378296 1159.532959 1159.546631 1159.961792 1164.331665 1170.208984 1175.447388 1183.326782 1189.141602 1196.016968 1197.741455 1197.894409 1197.804077 1195.801514 1193.176758 1192.396851 1190.614502 1186.011597 1181.023071 1181.062744 1187.251343 1189.38916 1188.0896 1184.53418 1183.529541 1194.406372 1198.62085 1202.306274 1208.275024 1215.25647 1221.205444 1225.020264 1226.614746 1225.035522 1221.940674 1220.644897 1219.948608 1219.808594 1219.541626 1219.820557 1219.101929 1218.159912 1216.1521 1212.706909 1208.152588 1205.822266 1203.709961 1201.624512 1197.949585 1193.088135 1188.785156 1184.730957 1175.203735 1166.725586 1157.610352 1148.005371 1143.278076 1144.801758 1144.422119 1140.393188 1138.092529 1136.547119 1135.165405 1134.853271 1134.79895 1133.486328 1131.429688 1129.560791 1127.870728 1126.226685 1124.520752 1122.995605 1121.841187 1121.466309 1121.195068 1120.959106 1120.447632 1119.749756 1118.929321 1118.121948 1117.527832 1116.758545 1116.002563 1115.268799 1114.597778 1113.901733 1113.170776 1112.554443 1112.092041 1111.648438 1111.285767 1111.062622 1110.967529 1111.075073 1111.210938 1111.285156 1111.520508 1111.587891 1111.465454 1111.319214 1111.174561 1110.883667 1110.54187 1110.219971 1109.753174 1108.41272 1107.077026 1105.523804 1103.926514 1102.560425 1102.205688 1102.522339 1102.797241 1102.961182 1103.045776 1103.257324 1103.577271 1103.968018 1104.453125 1104.929932 1105.441895 1106.045166 1106.659302 1107.480103 1108.329224 1109.221558 1110.009644 1110.909302 1111.10144 1110.769043 1109.29541 1108.071777 1107.322266 1106.799683 1107.549194 1112.232178 1120.014404 1122.446045 1119.237061 1117.842163 1118.585083 1119.61792 1121.447388 1126.262085 1130.589722 1131.758179 1132.990601 1139.186157 1140.650024 1138.776611 1144.229492 1151.806885 1161.096802 1169.734375 1176.341675 1179.662476 1180.411743 1177.471313 1168.990234 1173.907104 1181.688843 1188.174805 1194.995117 1206.104248 1219.696655 1223.680542 1223.381104 1221.613159 1217.940796 1213.557373 1208.480957 1204.320923 1201.903442 1197.266968 1197.734863 1214.450195 1225.529541 1233.167358 1235.476562 1235.503662 1236.270508 1236.832397 1236.132324 1235.764648 1235.143921 1232.714355 1227.180542 1221.864624 1215.664185 1207.297119 1194.236572 1180.279541 1166.714355 1162.407837 1166.130127 1166.553101 1164.229858 1159.076172 1157.180176 1155.075928 1150.564209 1148.888184 1147.133301 1145.021973 1140.694946 1137.785767 1136.329834 1135.475586 1133.890747 1132.107056 1130.480957 1129.099243 1127.725586 1126.451172 1125.096191 1123.601318 1122.135864 1121.045166 1120.157959 1119.237915 1118.238037 1117.040771 1116.015747 1115.052734 1113.966064 1112.912598 1111.488892 1109.97937 1109.950684 1109.033325 1108.332397 1109.67981 1106.187622 1108.338867 1111.113037 1113.977417 1117.821777 1120.328247 1119.781128 1119.587158 1119.685425 1119.999756 1121.194946 1122.279297 1122.403564 1122.232178 1121.285522 1120.485474 1120.626953 1122.29834 1122.232544 1121.228516 1119.621704 1117.831543 1116.230591 1114.758423 1113.716553 1113.16687 1113.14856 1113.617188 1113.930664 1114.039673 1114.145752 1114.476685 1115.039185 1115.96521 1117.094116 1118.674561 1120.428833 1121.974854 1122.269653 1122.347168 1122.224243 1122.228027 1122.144287 1122.875732 1124.567749 1126.227905 1127.740356 1129.366333 1130.735718 1131.918091 1132.826172 1133.772583 1134.494873 1134.798096 1138.848389 1143.024292 1144.754517 1145.373047 1146.345825 1149.533569 1155.974609 1166.616211 1174.752075 1183.738281 1187.684082 1192.968262 1195.761841 1195.254883 1196.769653 1197.879272 1189.983521 1176.836548 1168.842163 1167.103882 1165.08667 1165.733032 1171.471069 1171.749634 1168.974487 1163.539429 1157.747681 1147.919067 1132.814941 1138.938354 1149.426147 1155.080322 1157.617676 1162.214233 1172.111816 1179.548096 1177.651733 1167.858765 1161.442749 1156.976929 1156.323608 1149.184814 1144.670776 1144.346436 1138.526489 1134.538818 1132.499878 1131.463867 -1096.367188 1096.740845 1096.978394 1097.174194 1097.21167 1097.378296 1097.365479 1097.48291 1097.920166 1098.633179 1099.323486 1099.764526 1100.151367 1100.515015 1100.869995 1101.322998 1101.915283 1102.582886 1103.125488 1103.7323 1104.404297 1104.996216 1105.764038 1106.570679 1107.308228 1107.99353 1108.602173 1109.316895 1110.00293 1111.458374 1113.262695 1115.295898 1117.277344 1119.076416 1120.488892 1121.59021 1122.669556 1123.841431 1125.298462 1127.109741 1128.843872 1130.584595 1132.316772 1134.234253 1136.722778 1138.904297 1141.314697 1143.640869 1145.236572 1147.169312 1152.362427 1157.910645 1166.036377 1168.464355 1177.231079 1186.489746 1198.964355 1209.123047 1218.524902 1228.914062 1232.837524 1237.2146 1241.797729 1249.144531 1255.690186 1259.381592 1259.252563 1256.807983 1258.155273 1258.555786 1259.141724 1265.216431 1267.35144 1270.408691 1276.230957 1278.919434 1279.395386 1278.688721 1275.195679 1269.441284 1264.206543 1260.634155 1256.913818 1244.806396 1235.802368 1229.216064 1223.289673 1217.812134 1209.250488 1197.733643 1193.75708 1189.01001 1180.87085 1180.028076 1175.679688 1169.104248 1169.709961 1162.733398 1154.150635 1146.150391 1147.841309 1162.174438 1166.932617 1161.697266 1149.603027 1145.059326 1145.582153 1137.664062 1136.378662 1142.486694 1148.420166 1156.531494 1161.312378 1165.924683 1170.262329 1173.286499 1171.36853 1164.804688 1161.004883 1153.697632 1144.714111 1135.287598 1136.369263 1140.640869 1141.754883 1139.304321 1132.598267 1132.255249 1139.14624 1147.920898 1147.312744 1150.068359 1155.125732 1159.730103 1162.012451 1164.687744 1168.244873 1170.947144 1171.078247 1170.665283 1168.679443 1168.870483 1169.555054 1170.315063 1171.088623 1174.470215 1179.173096 1182.087036 1183.908081 1184.40564 1184.230225 1183.813965 1183.244019 1181.446411 1179.722534 1178.365479 1177.571289 1177.14209 1177.071045 1177.151489 1177.396362 1177.477295 1177.570068 1177.671997 1177.862793 1178.243408 1178.697266 1179.189209 1179.81665 1180.463135 1180.950317 1181.506714 1181.893921 1182.267944 1182.418579 1182.371582 1182.135986 1181.84668 1181.672241 1181.509888 1181.534302 1181.494385 1181.091187 1180.64563 1180.09436 1179.821167 1179.737915 1179.988281 1180.311279 1180.204712 1179.564209 1179.081421 1178.812012 1178.588501 1178.1604 1177.854858 1177.738281 1177.832886 1177.718872 1177.284912 1176.937622 1176.658447 1176.27063 1175.837769 1175.383179 1175.074219 1174.661743 1174.389282 1174.926392 1177.330566 1182.915527 1182.687012 1180.509155 1177.713867 1174.56311 1172.110962 1170.279541 1166.446289 1163.424683 1161.919556 1161.347412 1160.476807 1159.341553 1158.277832 1157.528931 1156.246582 1155.649902 1155.515015 1155.13208 1154.685791 1154.138916 1153.823486 1153.761719 1153.502686 1153.311523 1152.829102 1151.875854 1151.47876 1151.178345 1150.760498 1150.442261 1150.015869 1149.620239 1149.269287 1148.764771 1148.666992 1148.628418 1148.567383 1148.421387 1148.334229 1148.298584 1148.190674 1147.980347 1147.781738 1147.721313 1147.418091 1147.055054 1146.708374 1146.586304 1146.745972 1147.248779 1147.751343 1148.026611 1148.294678 1148.683594 1149.186646 1149.450562 1149.852295 1150.207275 1150.414795 1151.03186 1152.148315 1153.397461 1154.534302 1155.190308 1155.975342 1157.32959 1159.228516 1160.76709 1161.614136 1163.090088 1166.02832 1169.699463 1174.646729 1180.321045 1184.056396 1191.856567 1196.062744 1198.312988 1199.169434 1197.664551 1195.758789 1196.641724 1193.808716 1186.819214 1182.137695 1186.876099 1197.585693 1197.872681 1195.36377 1189.741333 1187.070312 1197.990479 1203.102417 1206.62915 1210.564331 1217.937866 1223.537842 1229.019043 1231.098755 1231.24292 1230.299805 1229.151611 1228.961182 1229.569458 1230.928711 1230.774902 1228.957886 1222.146118 1218.864258 1213.690552 1209.429199 1202.519165 1197.035156 1195.795532 1192.023193 1187.501099 1184.660034 1177.667969 1169.43457 1162.66272 1152.186646 1144.762085 1149.036987 1151.694214 1150.969482 1146.388062 1141.835327 1138.404663 1136.043091 1134.349121 1134.377563 1133.580078 1132.083008 1130.349243 1128.680786 1126.922485 1125.232544 1123.635132 1122.444214 1122.163208 1122.084961 1121.932983 1121.044312 1120.125488 1119.273071 1118.570068 1117.917236 1117.080078 1116.28418 1115.505371 1114.829346 1114.099976 1113.413818 1112.82312 1112.310181 1112.050903 1111.685547 1111.454956 1111.269409 1111.200928 1111.436401 1111.496582 1111.623047 1111.723145 1111.597046 1111.360718 1111.067749 1110.771606 1110.385864 1110.109009 1108.785889 1107.031616 1105.686157 1104.312378 1103.092896 1102.323242 1102.638062 1102.990845 1103.302368 1103.598389 1103.752441 1103.971802 1104.498657 1104.948242 1105.327271 1105.822266 1106.2677 1106.812622 1107.403809 1108.017334 1108.928589 1109.783936 1111.116699 1112.092163 1112.377808 1112.415894 1111.68689 1110.443481 1109.996948 1109.513916 1108.404663 1107.323853 1111.543945 1117.504517 1116.442749 1115.99707 1116.771118 1118.13855 1120.493164 1123.166016 1126.029053 1127.771973 1129.849243 1132.980835 1132.775146 1135.514893 1145.221191 1152.134644 1158.177612 1165.572266 1171.822998 1173.815796 1173.846191 1171.597778 1160.375 1165.74707 1172.972656 1179.74353 1187.604126 1199.807251 1214.207153 1223.025513 1224.05188 1223.817261 1222.2229 1219.45105 1213.070801 1208.514038 1206.556152 1201.031128 1196.65918 1209.586426 1220.303101 1225.782471 1227.718872 1228.165161 1231.260132 1235.784912 1236.442627 1236.018433 1235.279297 1234.484009 1230.640259 1223.855957 1214.60022 1203.709106 1187.373535 1173.333618 1180.8927 1182.131104 1176.057129 1173.44873 1160.769409 1158.436401 1161.172485 1161.704346 1157.883667 1151.504761 1148.620605 1145.484741 1139.752075 1136.509277 1135.207886 1134.712646 1133.62207 1132.269531 1131.003418 1129.705566 1128.212646 1126.664917 1125.19104 1123.899292 1122.515137 1121.53479 1120.653564 1119.615845 1118.489014 1117.472778 1116.456665 1115.376831 1114.171875 1113.049927 1111.885254 1110.888062 1110.375122 1109.372925 1109.417114 1110.268921 1108.779541 1107.736084 1111.223633 1114.710693 1120.113281 1122.34082 1122.225464 1121.269043 1120.665283 1120.839844 1121.561401 1122.308228 1122.485596 1122.402954 1122.21582 1121.334106 1121.508057 1122.245972 1122.378418 1122.050537 1120.468872 1118.437378 1116.743164 1115.357666 1114.411133 1114.10791 1114.328369 1114.774536 1115.110596 1115.129883 1114.876465 1114.813843 1115.12207 1115.702881 1116.647339 1117.854004 1119.369263 1120.847046 1121.911865 1122.312744 1122.57019 1122.753784 1122.623535 1122.909302 1124.689575 1126.144775 1127.520264 1128.983154 1130.565674 1132.257568 1133.856079 1134.678223 1135.053345 1135.652588 1138.302979 1142.081177 1144.419434 1146.158936 1151.619141 1160.556152 1166.422729 1170.897095 1173.545044 1182.446777 1186.329468 1191.408081 1192.112549 1191.198242 1194.50647 1197.647827 1197.779297 1186.348633 1177.336304 1174.151611 1172.417236 1170.360474 1173.58728 1174.053589 1171.660156 1165.518311 1157.691162 1146.119629 1141.442505 1148.687378 1155.421387 1161.075317 1163.251465 1167.927734 1171.844604 1175.473877 1171.98877 1168.729614 1163.701538 1160.5448 1159.338135 1154.951416 1149.786987 1147.265991 1141.897461 1137.24707 1134.806396 1132.210327 -1096.927734 1097.414917 1097.546509 1097.642822 1097.727539 1097.826782 1097.890137 1097.716064 1097.943726 1098.614258 1099.385498 1099.981323 1100.493896 1100.89978 1101.302856 1101.851318 1102.453613 1103.166748 1103.749512 1104.276733 1104.884644 1105.53064 1106.191895 1106.845459 1107.59375 1108.207031 1108.772583 1109.264893 1109.731201 1110.950684 1112.972534 1114.928345 1116.789917 1118.412598 1119.605225 1120.514526 1121.263428 1121.924561 1123.292603 1125.94397 1128.202393 1130.17041 1132.018311 1133.828857 1135.783325 1137.948975 1140.964355 1143.031616 1144.716431 1146.312134 1152.537354 1160.419434 1167.144165 1173.545654 1184.731445 1195.612061 1205.663574 1217.813477 1228.187256 1234.348267 1235.07251 1241.554443 1248.297485 1258.007324 1266.524292 1269.303467 1268.58252 1267.642822 1268.121582 1267.335083 1269.493164 1272.181885 1275.457153 1279.744751 1284.970703 1291.710083 1293.164429 1286.296143 1280.659668 1271.971924 1265.023682 1258.732788 1249.973511 1240.422607 1234.01123 1225.787598 1218.381958 1213.001953 1207.57605 1206.756836 1207.354858 1199.891479 1187.591064 1178.880981 1171.24231 1167.19751 1158.94165 1155.698486 1153.413208 1152.160889 1156.263672 1170.037231 1172.912109 1166.167358 1157.343506 1156.832642 1152.529053 1147.03833 1144.933472 1140.720459 1142.348633 1148.495117 1157.53418 1163.53894 1171.264404 1173.318604 1172.136353 1167.719727 1163.731812 1159.109741 1150.40686 1142.363159 1139.497803 1144.26709 1147.506592 1149.12561 1145.30957 1138.577759 1135.412598 1133.360352 1136.933105 1147.367065 1150.590332 1158.269653 1160.350098 1162.617432 1164.273438 1166.99585 1167.546875 1166.815796 1166.351196 1167.486206 1169.389038 1171.3125 1173.086304 1175.301147 1178.343262 1181.672852 1183.651001 1184.391724 1184.069946 1183.516235 1183.266968 1182.195435 1180.784546 1179.648315 1178.762085 1178.351807 1178.12146 1178.127075 1178.103271 1178.083618 1178.047363 1177.942749 1177.923096 1178.194092 1178.479492 1178.914795 1179.327881 1179.853149 1180.353516 1180.732178 1180.922852 1181.064697 1181.163086 1181.026001 1180.921997 1180.797363 1180.619141 1180.469482 1180.350342 1180.066528 1179.832153 1179.408325 1178.897827 1178.634766 1178.530396 1178.475464 1178.591919 1178.450562 1177.87854 1177.524658 1177.145874 1176.819946 1176.403076 1176.009399 1176.012817 1175.965332 1175.775879 1175.370972 1174.950562 1174.885254 1174.63562 1174.155884 1173.920044 1173.754028 1173.364258 1172.845581 1172.631714 1174.570068 1176.749023 1177.69165 1176.694824 1175.190063 1173.3927 1171.445923 1168.306396 1163.878662 1160.962402 1160.022217 1159.630859 1158.938965 1157.240234 1156.731079 1156.883545 1157.438477 1158.022827 1158.291016 1158.291992 1157.414429 1155.671143 1154.084717 1153.268555 1152.931641 1152.609619 1152.586792 1152.519043 1152.533447 1152.104858 1151.651001 1151.074463 1150.617798 1150.091919 1149.687012 1149.373779 1149.296509 1149.285034 1149.13562 1148.978149 1148.765747 1148.620361 1148.472412 1148.299194 1148.104248 1147.835449 1147.513794 1146.968506 1146.607544 1146.664185 1147.20752 1147.689209 1147.956543 1148.231445 1148.551392 1149.08728 1149.747681 1150.230713 1150.773926 1151.113892 1151.628784 1152.503296 1153.768066 1155.497192 1156.709961 1156.900146 1157.012207 1157.628052 1159.006958 1160.386597 1161.55896 1163.358521 1165.757935 1168.277588 1171.072876 1175.940063 1181.003784 1185.92688 1193.775146 1198.68042 1201.928833 1201.572388 1200.265259 1199.609741 1196.604004 1185.84729 1183.944458 1196.143799 1204.909058 1204.366333 1200.912476 1194.581543 1193.97583 1200.055054 1209.573608 1212.693481 1215.918091 1220.973145 1227.053955 1232.541748 1233.946167 1234.240356 1234.343994 1234.496216 1234.028198 1234.129395 1234.967041 1234.562378 1229.785767 1223.103271 1217.768677 1212.108154 1207.787354 1199.487061 1185.152344 1183.774048 1182.659668 1179.344849 1173.037842 1167.250977 1162.461792 1157.274048 1147.186523 1147.942383 1153.755615 1159.168335 1158.152466 1150.675171 1145.216553 1141.146606 1137.872437 1135.962646 1135.527588 1134.4646 1132.983521 1131.185913 1129.445435 1127.700806 1126.03064 1124.647095 1123.629761 1123.476318 1123.212891 1122.377563 1121.447632 1120.577148 1119.683594 1118.853638 1118.134155 1117.382324 1116.677002 1115.813599 1115.050171 1114.332764 1113.622437 1113.034424 1112.736694 1112.446533 1112.158203 1111.736206 1111.538696 1111.509033 1111.537231 1111.682495 1111.802856 1111.825562 1111.678833 1111.462646 1111.134644 1110.746094 1110.466431 1109.94873 1107.650146 1104.832642 1103.896851 1103.122681 1102.731323 1102.923218 1103.126709 1103.418335 1103.846436 1104.048096 1104.323853 1104.664551 1105.143555 1105.7146 1106.149414 1106.697388 1107.086182 1107.398438 1107.838379 1108.438477 1109.343872 1110.214966 1111.996948 1113.317017 1114.153687 1114.623779 1114.423096 1113.564209 1113.047363 1112.302246 1110.980225 1109.54187 1107.906006 1110.526733 1112.27771 1113.977295 1115.076172 1116.609009 1118.62085 1120.87854 1122.931885 1125.169189 1126.299316 1128.733032 1132.52478 1138.79895 1146.000122 1150.816895 1154.683594 1158.727173 1163.681641 1166.375732 1166.141846 1161.541992 1153.815063 1158.204346 1166.073364 1173.734009 1185.565308 1198.928223 1209.586304 1220.160034 1224.667603 1224.689575 1223.731445 1222.842163 1219.857788 1214.58606 1210.062256 1204.74292 1201.301025 1200.782959 1209.737549 1214.438843 1216.101929 1216.729492 1221.420654 1228.01355 1231.657593 1233.010742 1234.643677 1234.574585 1230.375977 1218.506348 1207.943115 1195.681519 1184.937988 1189.757935 1189.22998 1179.804321 1170.878784 1158.415039 1164.154175 1170.510986 1171.467773 1162.869141 1155.369751 1147.812988 1145.380249 1141.415771 1134.754028 1134.150269 1133.965576 1133.680664 1133.312378 1132.93042 1131.817871 1130.297119 1128.675659 1127.107422 1125.452881 1124.248291 1123.332397 1122.279297 1121.242432 1119.956543 1118.828003 1117.784058 1116.740845 1115.577515 1114.359619 1113.059326 1111.935791 1110.944092 1109.900269 1109.764038 1110.212524 1110.56311 1109.525269 1107.618774 1110.112183 1114.105103 1119.468384 1122.315552 1122.259033 1122.277832 1122.183228 1121.617676 1121.932007 1122.290649 1122.566406 1122.610352 1122.562256 1122.362183 1122.066895 1122.239502 1122.372803 1122.284912 1120.863037 1118.946411 1117.277466 1115.963257 1115.140991 1114.916138 1115.324463 1115.906372 1116.264038 1116.236694 1115.751953 1115.390991 1115.26123 1115.49707 1116.046265 1117.005859 1118.156616 1119.50354 1120.845825 1121.681885 1122.317017 1123.214111 1123.576782 1124.028687 1124.901367 1125.835938 1127.045532 1128.597656 1130.560547 1132.720947 1134.688477 1135.907715 1136.53418 1137.452637 1139.303223 1142.060303 1145.612549 1149.036499 1153.872681 1159.727539 1167.052612 1172.838013 1176.951172 1182.033569 1185.747925 1186.174316 1183.657837 1186.316528 1193.004028 1199.062988 1204.954224 1198.811157 1185.414307 1180.46936 1177.65271 1176.13623 1176.0 1174.908325 1171.549683 1164.327759 1157.473511 1155.01001 1152.724365 1158.805542 1164.766479 1168.197632 1168.676147 1173.070679 1177.338257 1179.541382 1175.55835 1171.00647 1167.389282 1165.170288 1163.568481 1160.969727 1156.454224 1151.999023 1147.571167 1144.478027 1141.653198 1137.837524 -1097.302124 1097.848999 1097.980103 1098.091797 1098.19043 1098.293579 1098.328491 1097.921997 1098.074219 1098.935425 1099.733521 1100.314209 1100.904175 1101.371948 1101.75647 1102.354004 1103.044067 1103.743286 1104.377319 1104.949219 1105.504395 1106.007324 1106.615601 1107.222046 1107.989746 1108.585938 1109.223022 1109.66333 1110.170654 1111.238647 1113.122437 1114.994507 1116.62915 1118.072754 1119.061279 1119.930176 1120.65918 1121.665527 1123.44165 1125.514526 1127.963989 1130.158203 1131.921753 1133.065552 1134.036865 1137.473267 1141.1698 1144.162476 1147.819458 1153.043823 1160.222534 1167.89624 1178.695068 1186.218872 1195.55188 1200.889404 1212.222412 1222.757812 1230.212646 1237.50769 1243.014282 1250.498047 1259.588989 1269.016968 1274.139038 1275.843628 1275.280029 1274.59729 1273.989624 1274.083984 1275.816162 1277.946167 1281.348633 1286.94043 1293.68457 1295.243774 1295.240234 1290.159546 1282.246704 1270.459839 1263.888916 1257.717285 1247.535645 1233.824097 1230.158813 1224.930298 1222.643799 1220.742065 1214.762451 1212.383179 1210.503174 1203.226685 1196.934448 1182.504883 1174.057617 1170.971436 1161.404297 1158.384888 1158.505371 1158.720825 1161.671997 1169.691895 1174.098633 1169.882935 1166.476196 1163.965088 1159.565063 1154.288574 1151.405396 1148.371826 1144.604614 1140.416382 1147.972046 1159.889282 1166.041504 1170.02002 1171.625122 1168.509888 1164.699829 1160.006836 1153.63208 1146.252808 1143.704224 1144.74939 1149.429932 1155.379639 1161.247314 1154.046753 1146.411621 1141.610229 1136.82019 1138.408569 1143.261719 1150.371094 1158.116821 1162.170898 1159.994629 1161.442993 1162.576294 1162.340332 1163.150146 1165.771973 1169.530884 1172.090332 1173.039062 1175.110474 1178.510864 1181.461914 1183.784058 1184.288452 1184.020874 1183.350586 1183.168579 1182.55188 1181.418579 1180.372681 1179.671021 1179.15979 1178.910889 1178.77356 1178.66272 1178.506592 1178.345093 1178.145752 1178.146606 1178.206787 1178.450684 1178.61792 1178.894165 1179.170898 1179.436523 1179.788574 1179.924683 1179.995361 1179.957031 1179.930786 1179.880493 1179.830811 1179.670654 1179.43335 1179.128662 1178.699707 1178.424316 1178.158936 1177.808228 1177.406128 1177.233765 1177.035522 1176.98291 1176.702148 1176.307617 1175.894897 1175.607788 1175.099121 1174.533325 1174.08252 1174.119263 1174.303467 1174.187622 1173.656738 1173.044556 1173.060425 1172.991821 1172.719238 1172.424683 1172.285156 1171.985229 1171.51123 1170.498047 1171.059692 1172.238159 1172.595703 1172.155029 1171.500244 1170.186035 1166.67334 1162.053223 1159.653809 1158.504517 1158.160767 1157.902954 1157.921265 1157.893799 1158.422363 1159.029175 1159.468384 1159.605469 1159.699829 1159.627197 1159.361206 1157.402832 1154.440186 1153.555298 1153.08667 1153.783936 1153.91272 1153.91748 1153.478638 1152.956421 1152.415405 1151.824951 1151.279541 1150.833618 1150.510498 1150.183716 1149.995361 1149.814331 1149.606201 1149.385376 1149.18811 1149.005737 1148.794556 1148.578857 1148.369629 1147.972046 1147.424194 1146.814331 1146.591431 1146.786377 1147.108032 1147.539185 1147.813477 1148.076782 1148.545776 1149.289307 1150.405273 1151.296631 1151.863281 1151.912842 1152.541016 1153.664307 1155.394165 1157.89209 1159.08728 1158.926147 1158.181641 1157.959351 1158.162598 1158.596436 1159.879517 1162.163086 1164.421875 1166.637573 1169.571167 1175.565918 1184.049683 1191.727905 1197.799927 1202.054443 1205.626465 1206.0 1204.418335 1202.284546 1196.867432 1188.601074 1192.67041 1202.919434 1210.216675 1210.221436 1208.157349 1200.417725 1194.948364 1199.988037 1216.716675 1220.794922 1221.12439 1223.9104 1228.83667 1232.369385 1234.779785 1235.375122 1235.404785 1235.226318 1234.330811 1233.896729 1233.579712 1229.282837 1221.759766 1216.844604 1211.031494 1205.748291 1199.243286 1191.782471 1182.071533 1170.547974 1170.589355 1166.635986 1160.26709 1157.40332 1154.8302 1150.775513 1147.979126 1153.497314 1158.572876 1161.534424 1160.774536 1153.386108 1146.313354 1142.838135 1139.5896 1137.393188 1136.237793 1134.895264 1133.27356 1131.707153 1129.93103 1128.262451 1126.752808 1125.519165 1124.684692 1124.082642 1123.518433 1122.530029 1121.632935 1120.819824 1119.916626 1119.006226 1118.298462 1117.600464 1116.936279 1116.090942 1115.245605 1114.50061 1113.922607 1113.415771 1113.111694 1112.829102 1112.42395 1112.107056 1111.829468 1111.700806 1111.662354 1111.679321 1111.867554 1111.882446 1111.74585 1111.496094 1111.266357 1110.902954 1110.446167 1109.757202 1105.491699 1103.30896 1103.231079 1103.120728 1103.279907 1103.462769 1103.665649 1103.9646 1104.259277 1104.599487 1104.885986 1105.261475 1105.736938 1106.337036 1106.932861 1107.388794 1107.833374 1108.004272 1108.406982 1108.828491 1109.626343 1110.797607 1112.810181 1114.687622 1116.473511 1117.997925 1118.196411 1117.337646 1116.242432 1114.981201 1113.678711 1112.142944 1110.132446 1108.813721 1110.552612 1111.804932 1113.410645 1114.834473 1116.626587 1118.599365 1120.383545 1122.0354 1122.121704 1125.448486 1132.139648 1138.312622 1144.262817 1148.244873 1150.31958 1153.030151 1154.569946 1155.469116 1154.495117 1149.741699 1145.449951 1153.38562 1161.887573 1174.849487 1188.193848 1198.710327 1205.130859 1213.331665 1222.056885 1223.500977 1225.345947 1223.507324 1221.827515 1218.246704 1210.779175 1206.35791 1206.864258 1207.021729 1206.497925 1206.332275 1208.214233 1217.775391 1218.120972 1216.991089 1221.982056 1229.385742 1232.205688 1234.091675 1234.811157 1217.791138 1204.344604 1200.655884 1204.587036 1202.919434 1185.897217 1170.630981 1178.397705 1182.819702 1180.056396 1175.624023 1167.845093 1152.47522 1145.909424 1146.160034 1146.630859 1144.87207 1137.060791 1135.121582 1133.994995 1134.145874 1134.57605 1134.067017 1132.73938 1130.838501 1129.241943 1127.502808 1125.754028 1123.990356 1122.609863 1122.383789 1121.412842 1120.135742 1119.120361 1118.164429 1117.045898 1115.864746 1114.444092 1112.809082 1111.468872 1110.163086 1109.922852 1110.357056 1110.637085 1110.503052 1108.325439 1108.338623 1109.270508 1112.599976 1118.624634 1121.725464 1122.215698 1122.347046 1122.393066 1122.287354 1122.069336 1122.268799 1122.575073 1122.630737 1122.606079 1122.445068 1122.437378 1122.327026 1122.403809 1122.326172 1121.217773 1119.285767 1117.794312 1116.503662 1115.805542 1115.741577 1116.1698 1116.996216 1117.442261 1117.358032 1116.841675 1116.081543 1115.51709 1115.335938 1115.509888 1116.160645 1117.175537 1118.335938 1119.675659 1120.716064 1121.566162 1122.558716 1123.5802 1124.132568 1124.553955 1125.109741 1126.109375 1127.748169 1129.960571 1132.316772 1134.074829 1135.778809 1136.919312 1137.527954 1138.377197 1140.492432 1144.776245 1148.118286 1151.984619 1156.976074 1162.740845 1169.28186 1174.10498 1179.399292 1183.245972 1181.629028 1179.298096 1185.820923 1192.315918 1198.93335 1207.882812 1207.005127 1198.940796 1187.978394 1182.305176 1180.135132 1178.999634 1175.758911 1170.696289 1168.599976 1164.488159 1167.474487 1163.326416 1166.367676 1172.665283 1174.222778 1174.483154 1178.725342 1182.956299 1184.314697 1180.554688 1174.662842 1171.420288 1170.164185 1168.245728 1164.279785 1159.154541 1157.353638 1154.181519 1151.659424 1149.362549 1146.628052 -1097.577759 1097.91687 1098.344604 1098.5354 1098.709351 1098.808594 1098.792236 1098.714355 1099.003418 1099.487915 1100.122925 1100.719238 1101.311279 1101.806641 1102.282837 1102.862793 1103.635132 1104.304443 1104.93042 1105.541138 1106.119751 1106.605469 1107.146606 1107.736206 1108.542725 1109.245361 1109.871216 1110.571167 1111.262451 1112.37561 1113.729614 1115.300415 1116.694702 1117.988281 1118.903076 1119.776611 1120.581299 1121.640259 1123.178711 1125.549805 1128.199585 1130.564819 1132.180176 1133.686035 1135.931519 1139.06189 1142.283936 1144.832764 1151.451416 1159.354614 1167.224976 1183.52124 1194.827881 1201.444336 1206.659302 1212.355835 1220.316895 1225.171753 1231.13562 1239.829834 1248.657715 1258.140869 1265.197021 1273.499023 1280.867798 1282.128906 1281.344238 1280.462036 1278.731689 1279.000366 1282.080811 1282.985229 1286.249512 1291.989624 1294.784058 1293.117554 1290.956543 1283.629395 1275.203613 1266.800171 1261.457153 1254.358276 1243.072266 1235.712891 1231.140015 1232.889771 1233.067139 1226.122681 1217.578735 1218.742676 1213.15564 1204.521973 1198.206543 1183.273071 1187.592896 1179.910767 1170.030884 1167.652466 1165.468262 1165.389282 1168.359619 1169.011841 1175.568848 1184.628906 1176.457397 1172.40918 1167.113647 1161.482422 1160.498535 1155.116821 1150.124878 1145.020996 1143.215454 1150.776733 1157.94104 1162.717896 1167.206421 1167.432983 1165.966553 1162.64209 1157.240967 1148.721069 1144.845337 1144.917725 1145.103027 1149.020752 1157.414551 1161.518799 1158.936646 1153.399658 1150.056641 1148.389893 1141.783081 1139.634155 1142.93335 1144.040405 1144.59082 1150.49292 1156.030151 1158.196289 1160.042969 1162.925049 1167.446045 1169.849121 1170.535767 1174.39856 1178.292358 1181.866211 1184.151855 1184.16748 1183.909912 1183.256592 1183.052734 1182.414917 1181.492065 1180.623291 1179.984375 1179.566284 1179.306396 1179.092651 1178.85498 1178.749634 1178.5 1178.297119 1178.329468 1178.308716 1178.41687 1178.560303 1178.631958 1178.763428 1178.921509 1178.92041 1179.066284 1179.134644 1179.119507 1179.020142 1178.930176 1178.780151 1178.611328 1178.192017 1177.83374 1177.590454 1177.237061 1176.861694 1176.580078 1176.279541 1175.989868 1175.77002 1175.519531 1175.200684 1174.622192 1174.339844 1174.085693 1173.694214 1172.636841 1171.817139 1172.22583 1172.937988 1173.023682 1172.261108 1171.10022 1171.146606 1171.26001 1171.090698 1170.897583 1170.768311 1170.408691 1169.75 1169.117432 1169.37793 1169.357544 1168.960205 1168.092651 1165.281494 1160.168945 1158.935303 1158.901489 1158.961182 1159.155762 1159.167969 1159.175537 1159.050293 1159.094849 1159.363525 1159.53833 1159.63562 1159.896851 1159.885986 1159.601685 1158.812378 1156.725342 1154.365356 1153.475952 1154.61853 1156.754761 1156.7854 1155.897461 1154.821655 1154.091431 1153.364014 1152.838745 1152.270874 1151.825562 1151.430298 1151.112915 1150.874512 1150.491943 1150.168823 1149.900757 1149.670654 1149.404297 1149.275513 1149.084106 1148.760254 1148.324219 1147.664795 1146.969238 1146.600098 1146.724609 1146.988037 1146.989014 1147.296509 1147.650879 1148.291382 1149.454712 1151.024414 1152.46228 1153.544067 1153.679443 1153.686523 1154.109863 1156.41272 1159.197266 1160.87085 1161.03064 1160.234741 1158.609009 1158.338867 1158.206299 1158.491943 1160.429443 1162.895386 1165.807495 1169.429321 1175.121338 1183.214111 1192.90564 1200.153442 1206.849854 1208.935181 1209.276245 1208.319214 1206.006226 1198.164795 1193.911865 1197.402466 1208.254639 1212.838623 1214.5448 1212.7323 1207.841553 1201.52478 1199.560547 1215.176392 1219.922729 1223.398315 1227.196777 1230.063965 1232.525391 1235.786133 1236.721069 1236.366821 1235.294556 1232.216431 1230.119263 1226.955444 1220.916016 1210.043457 1204.580933 1199.618408 1193.03186 1186.595093 1179.549194 1173.487793 1163.932739 1157.41272 1155.01062 1152.626953 1152.124146 1151.477539 1152.417236 1156.322266 1160.421021 1162.538086 1162.740601 1160.817749 1153.598999 1146.354736 1143.487671 1140.602295 1138.182495 1136.632568 1134.97522 1133.420898 1131.830322 1130.317627 1128.775269 1127.320557 1126.210938 1125.175903 1124.481567 1123.602661 1122.542114 1121.689575 1120.844849 1119.884766 1119.112671 1118.544678 1117.75061 1117.030029 1116.360107 1115.637573 1114.94812 1114.25 1113.875732 1113.571655 1113.107422 1112.814209 1112.412964 1112.168457 1111.938232 1111.828979 1111.782104 1111.786499 1111.842651 1111.694092 1111.584595 1111.229614 1110.900513 1110.477417 1109.519287 1103.891846 1103.793335 1103.80835 1103.7229 1103.879272 1104.043457 1104.277344 1104.575439 1104.77356 1105.094849 1105.429199 1105.828125 1106.359253 1106.858276 1107.593262 1108.129883 1108.560791 1108.724609 1109.000732 1109.167725 1109.666138 1111.194336 1113.588379 1116.10083 1118.79187 1121.330566 1121.965576 1120.821167 1119.294067 1118.02124 1116.595581 1114.903809 1112.859375 1110.906494 1109.314087 1109.997803 1111.38623 1113.21582 1114.707886 1116.466431 1117.927612 1119.46582 1120.576904 1124.241089 1129.965942 1134.629761 1139.851318 1144.308228 1145.726929 1146.984375 1147.542236 1147.924438 1146.182983 1144.433472 1144.100708 1157.704102 1169.511597 1182.417603 1191.54126 1197.128662 1198.520752 1199.071045 1204.607422 1209.583008 1210.098145 1215.479004 1216.619751 1214.060669 1212.290405 1211.263916 1214.854736 1218.286743 1219.618896 1221.760986 1222.17627 1224.102539 1226.535645 1233.218262 1233.332764 1231.585815 1231.8927 1232.930908 1232.739502 1217.830322 1213.707275 1215.977295 1215.605347 1207.51062 1179.425659 1193.27832 1192.124756 1187.89502 1176.788208 1161.666748 1156.113159 1155.892212 1158.896973 1159.125488 1154.191162 1149.841431 1144.796265 1140.541992 1136.569458 1137.013672 1136.731812 1135.067017 1132.943115 1131.523438 1130.022583 1128.197754 1126.020752 1123.714844 1122.146729 1121.616943 1121.165405 1120.453003 1119.551514 1118.548096 1117.482666 1116.27417 1114.750244 1112.915039 1110.533081 1110.052856 1110.216431 1110.614868 1110.679565 1109.710083 1109.849731 1111.053345 1110.56311 1112.421997 1118.210571 1121.094727 1122.261475 1122.391113 1122.460205 1122.441406 1122.24231 1122.210449 1122.555908 1122.633667 1122.572021 1122.430542 1122.383545 1122.438721 1122.254395 1122.268188 1121.396606 1119.780396 1118.291748 1117.163696 1116.498901 1116.52356 1117.094238 1118.027466 1118.526245 1118.516968 1117.811768 1116.820068 1115.86438 1115.232666 1115.079712 1115.477661 1116.349121 1117.433838 1118.7146 1119.904053 1120.873291 1121.821777 1122.719971 1123.31311 1123.51355 1123.847046 1124.82312 1126.605835 1129.026489 1131.827026 1133.58374 1135.405151 1136.547363 1136.69165 1136.283691 1135.14563 1141.511841 1145.011108 1147.658936 1153.678345 1157.688477 1164.513428 1171.131348 1174.43396 1174.11731 1169.383057 1175.811401 1183.49292 1184.825928 1193.609863 1205.915405 1210.634399 1208.482544 1199.516479 1190.917969 1183.646973 1182.069092 1179.823364 1176.439331 1174.143555 1170.068604 1173.907471 1170.217407 1172.276733 1177.204468 1180.696655 1181.44873 1184.428345 1188.034058 1188.882568 1184.615845 1180.177612 1176.76123 1174.884521 1172.740845 1169.046387 1165.63208 1163.446045 1160.71936 1158.065308 1156.022461 1153.624146 -1098.080566 1098.231812 1098.650757 1098.942871 1099.100098 1099.247681 1099.331909 1099.452759 1099.770996 1100.105347 1100.61145 1101.121704 1101.701416 1102.237793 1102.804443 1103.428223 1104.091675 1104.805054 1105.464111 1105.975464 1106.585449 1107.090088 1107.750854 1108.228516 1108.973755 1109.727417 1110.490234 1111.390625 1112.160522 1113.243042 1114.378662 1115.630737 1116.938843 1118.096313 1119.125 1119.947876 1120.834106 1121.608398 1122.890869 1125.80957 1128.651367 1131.164917 1132.910034 1135.250488 1140.600952 1142.107422 1145.028442 1147.651367 1158.308472 1165.880371 1178.192505 1194.622925 1205.116455 1209.540527 1214.505127 1221.549194 1220.63623 1224.098633 1231.746826 1239.811035 1248.278076 1257.170776 1265.296631 1272.633057 1278.539307 1281.798706 1283.200806 1283.317627 1283.396729 1284.31958 1287.654785 1289.220581 1290.00769 1292.085938 1295.389404 1295.181641 1293.595947 1285.617554 1275.613281 1267.619751 1262.456299 1256.893188 1251.140259 1244.759644 1238.01062 1236.908203 1236.690308 1234.21106 1224.324463 1228.542236 1221.192383 1207.48584 1194.792358 1198.833008 1205.151001 1196.348877 1184.730835 1177.047485 1173.464355 1170.093384 1174.255737 1173.388794 1177.674805 1182.094116 1184.501221 1183.2229 1175.385986 1172.068481 1169.665649 1162.992432 1159.614258 1155.094482 1143.165039 1144.554443 1151.135498 1156.98291 1162.205688 1167.093018 1167.882568 1164.901489 1158.740845 1148.008179 1149.32666 1147.215454 1144.8302 1147.401001 1158.040527 1162.631714 1163.197021 1162.377563 1161.755737 1159.966553 1152.615479 1144.61084 1144.997314 1148.132812 1147.998169 1145.612061 1146.257446 1152.565674 1156.606445 1160.703125 1166.161133 1169.071533 1171.834106 1175.105591 1178.468872 1182.327026 1183.952026 1184.056152 1183.795654 1183.296021 1183.019531 1182.217773 1181.189575 1180.459595 1179.940186 1179.463867 1179.297485 1178.960449 1178.927856 1178.734375 1178.564697 1178.436646 1178.422119 1178.437622 1178.592163 1178.52417 1178.495605 1178.488647 1178.549072 1178.494263 1178.551025 1178.511963 1178.363037 1178.336914 1178.100586 1177.858154 1177.383301 1177.056885 1176.722168 1176.425903 1176.05835 1175.650513 1175.336548 1175.071533 1174.821411 1174.564575 1174.157959 1173.629761 1172.938354 1172.879761 1172.940308 1172.406372 1171.424438 1170.449951 1171.064453 1171.749634 1172.0979 1171.332031 1170.113892 1169.636475 1169.618164 1169.501587 1169.321899 1168.9729 1168.537842 1168.056396 1167.60083 1167.259155 1166.422852 1165.122314 1163.468018 1160.390259 1159.645142 1159.10437 1159.117432 1159.196289 1159.29541 1159.347778 1159.373779 1159.368286 1159.383789 1159.296997 1159.268677 1159.150757 1158.910889 1158.546265 1157.742065 1156.678223 1155.160645 1154.05896 1154.46582 1157.829712 1159.071655 1158.856689 1157.684082 1156.24939 1155.228149 1154.489746 1153.877441 1153.35437 1152.902344 1152.446655 1152.160278 1151.769287 1151.337769 1150.860962 1150.512451 1150.207397 1150.005127 1149.934082 1149.687012 1149.280273 1148.810669 1148.258789 1147.598877 1146.932739 1146.640381 1146.594604 1146.77478 1147.069092 1147.425781 1147.878296 1149.351562 1151.594971 1153.906494 1155.760742 1156.635132 1156.419312 1155.644653 1156.154663 1159.7146 1161.737427 1163.230835 1163.941284 1163.091797 1161.610596 1160.270142 1158.133911 1158.482422 1160.837524 1165.162476 1168.040894 1171.666504 1180.216797 1189.890259 1198.811035 1207.064087 1210.494629 1211.638428 1211.688354 1210.112915 1204.049194 1195.295166 1198.938721 1208.745483 1216.889771 1218.71936 1219.463745 1217.48645 1212.095459 1207.972168 1212.360229 1218.989746 1225.088257 1230.028076 1233.232056 1235.467285 1237.80835 1238.388306 1237.378296 1235.422729 1232.418579 1227.161377 1221.064209 1210.532227 1193.404541 1187.147949 1183.108154 1177.931885 1170.28772 1160.760986 1156.576416 1155.859009 1157.791992 1162.655518 1165.798462 1166.751221 1165.283936 1163.774292 1164.81189 1166.816772 1165.866577 1163.473145 1160.30249 1152.626343 1145.90625 1143.408813 1141.013428 1138.590698 1136.500977 1134.973877 1133.403076 1131.909302 1130.445923 1129.104126 1127.836304 1126.602295 1125.483887 1124.484863 1123.438599 1122.42749 1121.566406 1120.654053 1119.997437 1119.374512 1118.519409 1117.799316 1117.117676 1116.585938 1115.956543 1115.263794 1114.651001 1114.324707 1113.80603 1113.45874 1113.111816 1112.796753 1112.482422 1112.227417 1111.953003 1111.908936 1111.904907 1111.821045 1111.672729 1111.460327 1111.154785 1110.828247 1110.260864 1107.035767 1103.959106 1104.142212 1104.222046 1104.217529 1104.534302 1104.702759 1104.921265 1105.154541 1105.509155 1105.687134 1106.035522 1106.431763 1106.932495 1107.459839 1108.126221 1108.724365 1109.25708 1109.609497 1109.891357 1110.031006 1109.872681 1111.615112 1114.575928 1117.469238 1120.38147 1122.563232 1122.935669 1122.653931 1122.172974 1121.250732 1119.80249 1117.892456 1115.749023 1113.912109 1112.112183 1110.493164 1109.930664 1111.618408 1113.218994 1114.50354 1115.875366 1117.584961 1119.456299 1122.331055 1127.088867 1132.429565 1136.78479 1140.106445 1141.697266 1141.23877 1139.18396 1136.461426 1140.868164 1145.67749 1151.489502 1163.576416 1176.604858 1185.467407 1187.74231 1191.373291 1190.22644 1188.550293 1193.530396 1197.680542 1196.735352 1199.777344 1202.392334 1208.527344 1214.769531 1215.875488 1219.574219 1222.460083 1226.649658 1231.337402 1231.447021 1230.563599 1232.384644 1235.58252 1235.811768 1233.78772 1231.917969 1232.288696 1233.191528 1232.00647 1228.117432 1226.75061 1222.661743 1210.524292 1205.692993 1202.371094 1189.887451 1172.504028 1162.493652 1158.504272 1161.083984 1167.192383 1169.786255 1167.09436 1161.362549 1155.633179 1149.361328 1146.969238 1144.001099 1140.46167 1137.285767 1134.388428 1133.257324 1132.910156 1131.414795 1129.193726 1126.505737 1123.692749 1122.059082 1121.851074 1121.681763 1121.152344 1120.216919 1119.196045 1118.064575 1116.852661 1115.482666 1113.8479 1111.975952 1111.013306 1110.957886 1110.947754 1110.429443 1109.932983 1111.926147 1113.300537 1114.389038 1116.584961 1119.125244 1122.025635 1122.465088 1122.610962 1122.781616 1122.709595 1122.4552 1122.388062 1122.52417 1122.481567 1122.437744 1122.22876 1122.234985 1122.235352 1122.222046 1121.906982 1121.246338 1119.937866 1118.782227 1117.740601 1117.33313 1117.359863 1118.102905 1119.078735 1119.652954 1119.569702 1118.77478 1117.557373 1116.115845 1115.170044 1114.667603 1114.917603 1115.611816 1116.718628 1117.998169 1119.068726 1120.077148 1120.915894 1121.671509 1122.036133 1122.085327 1122.566284 1123.839478 1125.077759 1127.459106 1131.559814 1134.557617 1135.609375 1135.990112 1135.255127 1134.246338 1134.006958 1140.507568 1147.092529 1149.181763 1149.742188 1153.000366 1158.788208 1164.929688 1168.776245 1167.729126 1167.475952 1171.246216 1171.43103 1182.559814 1190.963013 1201.701416 1210.674805 1211.395996 1209.718994 1202.302368 1196.538452 1191.853271 1186.235962 1181.972534 1181.361328 1180.311523 1178.595581 1179.534058 1179.432007 1182.410767 1186.202148 1188.369507 1191.011719 1195.123535 1196.196655 1192.379761 1185.956909 1181.599487 1179.059937 1176.248779 1173.088989 1171.582764 1169.21167 1167.177979 1165.870728 1162.923828 1160.161499 -1098.317261 1098.603638 1098.907715 1099.239502 1099.384766 1099.6875 1099.810303 1100.056396 1100.424194 1100.849365 1101.218018 1101.606689 1102.042969 1102.536255 1103.195312 1103.765991 1104.54895 1105.197144 1105.833862 1106.397827 1106.988525 1107.584717 1108.151489 1108.671265 1109.307495 1110.093872 1111.056274 1111.886475 1112.765381 1113.934692 1115.050903 1116.176147 1117.375366 1118.509766 1119.610229 1120.628052 1121.578247 1122.564209 1124.153809 1126.641235 1129.557129 1132.045532 1134.108398 1143.516724 1150.968506 1150.182251 1154.424805 1162.068726 1166.009277 1171.996216 1181.251709 1196.871582 1205.70813 1208.415894 1209.207397 1208.912598 1216.167114 1222.249268 1228.579712 1234.988525 1242.012939 1249.145264 1257.52771 1266.217651 1268.480103 1270.032715 1278.894897 1283.68811 1286.066162 1290.427124 1293.907959 1294.972778 1295.04248 1293.780518 1298.105103 1298.178345 1295.728882 1285.936523 1278.179688 1270.293945 1268.839966 1263.741577 1257.22229 1246.932007 1241.661133 1241.758545 1242.009033 1236.15686 1233.216309 1234.887451 1225.965942 1211.425171 1202.43396 1213.603271 1221.266357 1212.139038 1197.962402 1185.174438 1183.196289 1181.108521 1181.856445 1179.547241 1179.709839 1180.71228 1181.522339 1182.871826 1179.200073 1174.422363 1172.578125 1167.25708 1162.696167 1158.664185 1145.895264 1143.149048 1146.501343 1155.483887 1161.995361 1169.280884 1170.649414 1167.417969 1161.823242 1152.627563 1154.448486 1159.141968 1145.247681 1145.460693 1156.049072 1161.818115 1162.562378 1162.614258 1162.421997 1162.15686 1159.983154 1153.897095 1151.783081 1154.967041 1157.280151 1152.86145 1147.5448 1148.812134 1157.942871 1163.179199 1170.326904 1171.867432 1173.384155 1175.161621 1177.116089 1179.821045 1182.370605 1183.344727 1183.537598 1183.298584 1183.088745 1181.67627 1180.431396 1179.775635 1179.414551 1179.122559 1178.849976 1178.691772 1178.667725 1178.625732 1178.576294 1178.575562 1178.549561 1178.546631 1178.650635 1178.665649 1178.590942 1178.521118 1178.388794 1178.393188 1178.389282 1178.315308 1178.138062 1177.837769 1177.495117 1177.057129 1176.54126 1176.113892 1175.79126 1175.343262 1174.942749 1174.529297 1174.158325 1173.915527 1173.648071 1173.410767 1172.933472 1171.730469 1171.174683 1171.753418 1171.886108 1171.520142 1170.678467 1169.78125 1170.010254 1170.453247 1170.75061 1170.097168 1169.058838 1168.344849 1168.086426 1168.056396 1167.604492 1167.215576 1166.77063 1166.283691 1165.710205 1165.028931 1164.095215 1162.623291 1160.83667 1160.135254 1159.638306 1159.255249 1159.251465 1159.258057 1159.339478 1159.320068 1159.41748 1159.393677 1159.024292 1158.461304 1158.204468 1157.545044 1155.992188 1155.306396 1154.849731 1154.611084 1154.220459 1154.833862 1157.037231 1159.126953 1159.359619 1159.051147 1158.109741 1157.086182 1156.329712 1155.579834 1155.043213 1154.436157 1153.848511 1153.366699 1153.004517 1152.605713 1152.196045 1151.547119 1151.177856 1150.851562 1150.635864 1150.453491 1150.20874 1149.85437 1149.304443 1148.768066 1148.207886 1147.566162 1147.176025 1147.047485 1147.151123 1147.298462 1147.390137 1147.786865 1148.975098 1151.843506 1155.415039 1157.98584 1158.833984 1159.143677 1158.79187 1157.057861 1158.435181 1161.972412 1165.511719 1167.848633 1169.417847 1170.208984 1169.863647 1168.620117 1161.029053 1160.551636 1166.59082 1168.943481 1170.95874 1178.139404 1184.682617 1193.547974 1204.70813 1210.874146 1214.051636 1214.544312 1212.57019 1208.484375 1206.579956 1205.578735 1207.546631 1220.308716 1223.55603 1225.774902 1225.595337 1222.241333 1215.152954 1212.370117 1219.345825 1226.807373 1232.193604 1235.260742 1238.354004 1241.019043 1241.010986 1238.193604 1234.538452 1230.814819 1224.781128 1217.43396 1205.932007 1192.558105 1177.791626 1168.099121 1162.788818 1159.679077 1164.536987 1167.664795 1169.028687 1174.383911 1177.779785 1179.000488 1177.720093 1175.075317 1172.900879 1172.932007 1171.182495 1168.049072 1163.698608 1159.48291 1151.595215 1145.72644 1143.486816 1141.008423 1138.674805 1136.473877 1134.694824 1133.291992 1131.870361 1130.485962 1129.304932 1127.963379 1126.809692 1125.605591 1124.335571 1123.189209 1122.119019 1121.038208 1120.515747 1120.053589 1119.387817 1118.618164 1117.890747 1117.321167 1116.722168 1116.128296 1115.658081 1115.192871 1114.643555 1114.198242 1113.789429 1113.361694 1113.107422 1112.741211 1112.462891 1112.229126 1112.099487 1111.938843 1111.709961 1111.558472 1111.38208 1111.057495 1110.610962 1110.057373 1105.87561 1104.202515 1104.495483 1104.629272 1104.833862 1105.095703 1105.276611 1105.610352 1106.010132 1106.219238 1106.356323 1106.624756 1106.982178 1107.495361 1108.062744 1108.726074 1109.437622 1109.908813 1110.548096 1111.11145 1111.05188 1111.361572 1112.996338 1115.493652 1118.437622 1121.098389 1122.489258 1123.110474 1123.316162 1123.384033 1123.198242 1122.579956 1120.967773 1118.69165 1116.643555 1114.848877 1113.194092 1111.84021 1110.766968 1111.38208 1112.5802 1113.820801 1115.874268 1118.078613 1120.52063 1124.259888 1130.229858 1135.003052 1137.515869 1138.141235 1136.842163 1133.603027 1134.574341 1144.637451 1150.812378 1158.703857 1169.785156 1176.886597 1181.57251 1182.703979 1181.998169 1181.116699 1181.135376 1186.624756 1187.321655 1186.221558 1190.01001 1198.025513 1207.441162 1219.268311 1219.343872 1219.067383 1219.839233 1225.21582 1232.775269 1233.759644 1235.349121 1237.210693 1239.430542 1239.218384 1237.019165 1234.019165 1231.927246 1236.002075 1236.706909 1235.47876 1234.529053 1230.790283 1224.305176 1212.318115 1194.708008 1180.972412 1181.592529 1174.554565 1167.71228 1173.68335 1175.396362 1175.359985 1172.477905 1167.175415 1160.360352 1155.080322 1150.933472 1147.459839 1141.006714 1135.995239 1134.150757 1134.515747 1134.869263 1132.962769 1130.415771 1127.653564 1124.755127 1122.98291 1123.222168 1122.806396 1121.896362 1120.978638 1119.668579 1118.704712 1117.664307 1116.409424 1115.086304 1113.813843 1112.659302 1111.956909 1111.377563 1110.916016 1112.135376 1113.751587 1115.812866 1117.6604 1119.98999 1121.14502 1122.213501 1122.764038 1122.989502 1122.950439 1122.902954 1122.748291 1122.540527 1122.297363 1122.273926 1122.258057 1122.249146 1122.153198 1121.925049 1121.916992 1121.594849 1120.891846 1120.038086 1119.150635 1118.343262 1117.94043 1118.272095 1118.875488 1120.337402 1121.155884 1120.696289 1119.512451 1117.980103 1116.260742 1115.040283 1114.370728 1114.423584 1115.058472 1116.138062 1117.262817 1118.192871 1119.129883 1119.881592 1120.466553 1120.84668 1120.962646 1121.553955 1122.32959 1122.41748 1124.566284 1129.57605 1134.006226 1135.417358 1135.868286 1135.029297 1128.016235 1132.425781 1138.377319 1144.430908 1147.68811 1145.899902 1145.768555 1152.911255 1159.836304 1161.533325 1161.849365 1159.31543 1161.023682 1173.139404 1182.482422 1189.183716 1195.725586 1204.722534 1207.673584 1209.459717 1207.818481 1202.675415 1200.219604 1198.365479 1193.67981 1192.032227 1190.048706 1185.637939 1189.280029 1188.449463 1190.01062 1191.803467 1194.086426 1199.286499 1206.03418 1207.315308 1203.221802 1195.368286 1187.417603 1182.540405 1179.993774 1178.576538 1177.06311 1174.369385 1172.550049 1172.839233 1169.06604 1163.327881 -1098.275879 1098.735596 1099.044556 1099.435547 1099.727417 1099.98584 1100.18689 1100.481812 1100.971313 1101.371582 1101.827881 1102.028687 1102.466919 1102.897705 1103.487183 1104.086426 1104.868042 1105.529907 1106.107788 1106.611816 1107.193726 1107.889404 1108.480469 1109.077393 1109.65918 1110.522461 1111.522949 1112.388794 1113.336792 1114.539917 1115.669556 1116.858521 1117.944336 1118.998169 1120.091064 1121.418091 1122.502686 1124.006958 1125.577637 1127.823364 1130.630127 1133.861084 1138.830444 1151.506836 1162.83252 1166.288696 1167.912964 1171.758667 1175.144165 1180.145874 1188.689941 1197.166626 1198.862305 1199.150391 1202.323608 1208.020874 1213.710205 1220.864258 1224.361572 1229.731079 1235.677368 1241.627686 1248.14856 1252.452515 1256.068848 1263.4375 1271.800537 1279.241943 1284.714844 1290.245239 1295.993774 1300.644165 1304.013672 1303.281616 1302.212402 1300.777954 1300.386719 1293.247314 1285.40332 1280.947998 1276.265625 1270.836304 1261.558716 1248.940796 1244.391968 1248.250122 1249.998413 1243.193726 1241.441406 1240.269531 1231.50354 1215.591797 1206.879395 1222.827881 1231.484131 1230.425903 1209.509155 1194.920288 1193.735107 1192.502563 1188.272095 1184.078247 1181.787476 1179.324585 1177.265503 1175.907349 1174.924438 1172.890869 1168.059937 1161.068726 1158.501465 1153.026855 1144.940674 1144.783691 1145.644409 1154.726685 1161.623047 1169.543335 1172.394287 1171.11377 1166.234863 1158.91626 1157.861206 1161.002441 1150.082764 1144.896484 1147.244507 1156.308228 1160.116455 1160.738892 1162.097168 1163.950806 1164.296875 1161.355469 1157.104858 1158.967163 1161.725464 1160.415894 1154.820801 1149.237915 1153.505249 1161.098145 1168.789673 1171.875854 1173.149658 1174.318359 1174.070801 1174.22522 1177.87915 1180.966675 1181.839355 1183.132202 1181.950073 1180.217773 1179.502808 1179.131714 1178.816895 1178.550781 1178.402832 1178.388184 1178.395996 1178.389893 1178.525269 1178.625488 1178.644897 1178.753296 1178.835815 1178.924194 1178.859131 1178.705688 1178.566284 1178.538086 1178.464233 1178.436035 1178.286865 1177.778931 1177.199097 1176.566528 1175.944214 1175.564819 1175.084839 1174.633423 1173.997681 1173.455322 1173.087769 1172.810669 1172.656982 1172.498291 1172.290283 1171.450928 1170.335449 1170.491211 1170.557007 1170.215942 1169.679932 1169.039307 1168.924805 1168.899658 1168.700317 1168.311157 1167.468262 1167.08313 1166.891479 1166.431519 1165.983765 1165.735718 1165.192017 1164.573242 1163.88208 1163.173218 1162.060913 1161.101318 1160.507935 1160.049561 1159.644043 1159.279297 1159.256836 1159.270752 1159.286743 1159.255981 1159.235107 1159.346436 1158.73938 1157.769165 1157.043335 1156.162964 1156.040161 1157.774414 1157.811035 1157.089722 1156.855835 1157.091675 1158.499756 1159.348267 1159.518677 1159.151489 1158.490356 1158.016357 1157.184082 1156.654297 1155.950439 1155.339355 1154.734009 1154.233398 1153.91272 1153.48645 1152.967896 1152.441895 1151.97876 1151.592773 1151.352417 1151.047729 1150.709473 1150.363892 1149.877197 1149.327026 1148.848633 1148.241577 1147.854492 1147.77063 1147.656616 1147.79895 1147.864624 1147.875244 1148.310425 1151.966431 1156.765381 1159.331787 1160.397217 1160.965454 1161.047363 1159.960938 1158.143311 1160.647339 1166.907959 1170.950073 1174.489258 1175.797729 1176.013428 1175.25415 1173.441284 1171.133911 1169.479736 1170.098755 1174.389893 1179.28125 1186.971069 1195.915527 1205.746826 1212.292358 1217.195557 1218.142456 1216.981445 1213.856201 1211.975342 1209.716309 1206.772705 1221.187622 1227.237549 1231.718018 1233.246094 1233.113525 1226.335938 1215.735474 1220.993286 1229.939209 1233.816528 1236.928955 1240.577271 1244.098877 1242.765625 1238.341797 1233.413818 1228.130371 1220.977905 1206.253052 1192.005493 1180.972778 1172.60022 1162.840332 1172.644409 1178.252197 1179.118286 1179.495483 1179.661377 1181.695312 1186.401001 1189.501099 1188.649414 1185.102417 1180.090454 1176.105469 1172.57605 1167.672363 1163.075439 1158.385498 1151.548462 1146.359863 1143.514282 1140.896118 1138.230957 1136.223633 1134.341309 1132.913086 1131.735229 1130.595337 1129.351074 1127.999146 1126.786499 1125.545654 1124.236572 1122.687012 1121.835938 1121.592407 1120.876831 1120.203369 1119.414673 1118.677246 1118.011597 1117.425659 1116.858154 1116.438232 1115.941406 1115.464966 1114.945557 1114.424927 1114.052856 1113.626099 1113.25647 1112.856445 1112.501831 1112.236694 1112.053345 1111.935669 1111.767822 1111.44165 1111.187744 1110.921631 1110.415527 1109.206665 1105.652954 1104.44751 1104.793335 1105.047241 1105.36084 1105.745117 1106.012695 1106.420166 1106.75 1106.868164 1107.013062 1107.279175 1107.612305 1107.981445 1108.615601 1109.300781 1109.903809 1110.883911 1111.585571 1112.155518 1112.536865 1113.255737 1114.743896 1116.579102 1118.935913 1121.007812 1122.260986 1123.067871 1123.49646 1123.752441 1123.921265 1123.728027 1122.695068 1121.436035 1119.457397 1117.729248 1115.625977 1113.997192 1112.609863 1112.063599 1111.77124 1111.984497 1114.479126 1116.840942 1119.197144 1121.870361 1126.901611 1131.897949 1134.5 1134.315186 1133.167603 1132.928711 1137.990112 1146.60791 1152.750977 1160.654175 1169.032715 1172.798462 1175.214966 1176.459106 1175.760376 1174.708618 1176.557495 1180.988647 1180.583496 1180.328735 1186.531738 1197.859253 1204.628052 1214.533081 1230.341309 1228.933594 1222.221313 1219.905396 1228.869141 1232.413696 1236.140747 1240.84375 1243.991577 1243.384644 1240.845093 1238.618164 1238.232056 1239.770508 1241.124268 1240.557983 1238.13623 1234.462402 1230.816772 1210.89624 1196.097656 1199.640015 1192.511353 1181.827393 1181.546143 1182.38623 1180.494629 1179.15625 1176.829956 1172.760376 1166.069214 1158.381836 1152.569458 1146.655273 1140.638184 1134.175049 1134.957153 1136.302979 1135.141479 1133.296631 1131.432007 1129.203857 1126.924072 1125.200317 1124.421997 1123.826904 1122.813232 1121.388794 1120.177002 1119.227417 1118.428955 1117.469238 1116.323364 1115.074829 1113.890259 1112.892578 1111.872803 1112.688599 1114.182617 1116.103027 1117.888062 1120.04248 1122.294067 1122.467651 1122.786255 1123.150879 1123.105225 1123.009888 1122.948242 1122.436157 1122.245605 1122.258057 1122.130371 1122.244751 1122.210205 1121.940674 1121.894287 1121.600464 1121.227539 1120.58313 1120.002075 1119.259644 1118.659912 1118.512085 1118.983398 1120.097778 1122.197021 1122.209106 1121.624634 1119.998291 1118.100098 1116.235718 1114.823242 1114.02832 1114.052612 1114.669556 1115.63208 1116.53064 1117.362427 1118.014282 1118.621094 1119.217651 1119.604492 1119.876587 1120.160034 1120.344238 1121.014038 1121.525757 1125.9646 1132.511353 1135.450928 1136.150879 1135.653198 1125.82605 1125.179321 1134.628052 1139.537842 1144.697754 1141.980713 1134.43103 1145.117432 1151.934692 1154.53479 1160.556641 1153.824707 1161.237305 1171.41333 1180.844604 1186.989014 1191.743408 1196.567017 1199.891846 1199.919678 1200.763062 1201.188721 1200.104004 1199.760254 1199.50415 1199.590698 1200.928833 1201.524658 1202.308594 1201.425049 1199.377808 1199.005737 1205.085815 1211.219238 1222.346802 1215.486694 1208.816406 1198.148071 1191.063965 1184.427124 1181.997314 1183.122314 1182.992798 1180.226929 1176.289917 1172.564941 1166.312378 1159.942505 -1098.138062 1098.666138 1099.138794 1099.576294 1099.931519 1100.236084 1100.542847 1100.875244 1101.372314 1101.810059 1102.330078 1102.620728 1102.834229 1103.259766 1103.748901 1104.369263 1105.090332 1105.797485 1106.395386 1106.893066 1107.501709 1108.09375 1108.794678 1109.377563 1110.124268 1111.010742 1111.996826 1112.881226 1113.906616 1114.960327 1116.291138 1117.537598 1118.691895 1119.67395 1120.616577 1121.972046 1123.661255 1125.050781 1126.699951 1128.919678 1131.610596 1134.901978 1140.638062 1150.868896 1163.312378 1172.901611 1186.005493 1185.363403 1179.290039 1174.90686 1183.164185 1188.118042 1188.987427 1192.219482 1197.227661 1203.30835 1207.521484 1211.968262 1218.283325 1224.359619 1232.80835 1238.599976 1241.952759 1241.829346 1247.793579 1256.358398 1263.377563 1269.504883 1275.590088 1286.709595 1296.573608 1304.165527 1307.169434 1307.746338 1305.120361 1302.404663 1304.702393 1303.538208 1290.48877 1285.41748 1282.43811 1276.389526 1266.770508 1255.787354 1252.350342 1256.765015 1259.50769 1254.056519 1253.053467 1249.604248 1241.123047 1225.962891 1215.29187 1229.977905 1237.343262 1237.893799 1225.871216 1208.368774 1205.187256 1201.09375 1195.603271 1187.614258 1181.364014 1177.932129 1171.576904 1170.424316 1169.710938 1167.667725 1159.275269 1158.442871 1158.791138 1152.063477 1146.707886 1157.700317 1147.733032 1152.760254 1162.075439 1169.085571 1172.842896 1173.202271 1169.180542 1159.677246 1161.493164 1164.190308 1160.32605 1151.410889 1144.762573 1149.484985 1156.083374 1158.172974 1158.253906 1164.575928 1169.868408 1169.102539 1160.904053 1159.285889 1164.707886 1166.462158 1163.664673 1159.707153 1152.867798 1152.732422 1161.189453 1168.330444 1171.059814 1171.495361 1169.942261 1170.013306 1171.659058 1178.110718 1178.585571 1178.778931 1178.637695 1178.698486 1178.639648 1178.584351 1178.42749 1178.390625 1178.395874 1178.397095 1178.396606 1178.423218 1178.671265 1178.865967 1178.849243 1178.96936 1179.180298 1179.21521 1179.201172 1178.990967 1178.875 1178.781494 1178.82605 1178.776733 1178.584106 1178.01062 1177.317749 1176.58606 1175.893555 1175.307251 1174.762329 1174.177002 1173.484741 1172.271362 1171.936646 1171.648804 1171.530762 1171.436157 1171.234619 1170.525635 1169.480835 1169.204834 1169.091675 1168.942261 1168.577759 1168.150635 1167.907593 1167.358154 1166.942017 1166.36499 1165.947876 1165.774902 1165.565674 1165.168091 1164.695679 1164.163574 1163.439575 1162.814575 1162.289429 1161.913696 1161.384766 1160.836914 1160.287842 1159.904663 1159.540283 1159.212036 1159.038818 1159.178833 1159.301514 1159.205566 1159.061279 1158.956543 1158.111816 1157.073364 1156.174072 1157.020142 1159.124023 1159.368408 1159.373901 1159.204834 1159.117432 1159.018311 1159.275269 1159.839722 1159.89624 1159.613403 1159.196167 1158.853027 1158.131836 1157.40686 1156.810303 1156.158569 1155.514404 1155.079712 1154.650024 1154.209717 1153.815796 1153.210449 1152.793213 1152.392212 1152.037231 1151.612671 1151.230957 1150.85083 1150.385742 1149.866455 1149.420898 1148.884766 1148.581421 1148.539795 1148.567749 1148.35083 1148.280396 1148.276611 1148.123901 1152.872437 1157.668945 1160.090454 1161.605347 1162.617554 1162.865967 1162.067627 1160.220093 1159.442749 1167.776489 1173.465698 1181.315796 1182.410889 1180.709473 1179.089478 1177.825928 1175.527954 1172.591431 1171.253296 1178.968628 1184.935913 1190.462769 1198.606079 1206.352783 1214.476929 1220.399292 1221.708008 1221.181152 1218.348511 1216.015625 1215.7854 1215.483276 1220.366333 1230.097046 1234.287598 1235.559448 1235.508057 1233.71936 1225.758545 1226.101196 1233.370728 1235.829834 1238.402222 1241.686523 1244.411987 1242.725342 1237.954956 1233.468506 1227.302612 1218.091187 1201.870728 1188.837158 1174.021118 1166.674561 1180.511108 1190.262451 1194.506836 1196.118286 1194.225464 1191.904419 1190.219604 1191.412964 1196.651245 1196.426636 1190.785278 1182.229126 1176.292236 1170.819214 1165.990723 1160.799683 1156.512085 1151.24231 1146.703125 1143.532837 1140.828369 1138.012085 1134.661255 1133.692017 1132.890015 1131.880859 1130.745361 1129.343994 1128.035645 1126.724609 1125.496704 1124.34668 1122.862305 1122.630737 1122.175293 1121.352295 1120.505737 1119.647949 1118.855469 1118.263916 1117.664551 1117.179077 1116.645508 1116.162964 1115.677856 1115.029419 1114.547241 1114.145752 1113.732544 1113.330078 1113.053223 1112.550415 1112.265381 1112.079712 1111.807007 1111.574463 1111.38623 1111.100464 1110.773071 1110.43457 1109.345337 1105.748291 1104.692017 1105.062256 1105.547974 1106.032349 1106.421021 1106.822388 1107.173828 1107.387817 1107.617676 1107.692261 1107.978149 1108.27832 1108.670044 1109.106201 1109.641479 1110.540283 1111.597656 1112.454102 1113.173828 1113.939941 1114.920288 1116.311646 1117.84668 1119.317871 1120.75 1121.782837 1122.740845 1123.487427 1123.863281 1124.13208 1124.329102 1123.948608 1122.968018 1122.176758 1120.449585 1118.290283 1116.457031 1114.937988 1113.994507 1113.32312 1112.538452 1113.599609 1115.710938 1117.970825 1120.702515 1124.010376 1127.412842 1129.064575 1127.200684 1129.107544 1132.707397 1139.208984 1146.452515 1151.825928 1156.13623 1160.244507 1165.577881 1168.420288 1170.069458 1170.229492 1168.202393 1171.449463 1173.096191 1170.130249 1177.029663 1185.455322 1194.486938 1200.952026 1209.040771 1223.274536 1236.263184 1234.762817 1231.755859 1229.750488 1231.12793 1232.587524 1241.830933 1245.401001 1245.584473 1244.211182 1242.23645 1241.749756 1243.759155 1244.860107 1244.397095 1241.639648 1237.612305 1232.336182 1207.827637 1212.215576 1209.813965 1202.539917 1196.429688 1195.01123 1193.394653 1187.225708 1184.281738 1182.585449 1176.385742 1171.300171 1160.392456 1150.491089 1145.540649 1143.455322 1141.589478 1139.324829 1136.824585 1134.260498 1133.52417 1132.56311 1130.763794 1128.634521 1126.493042 1124.849243 1123.776855 1122.604248 1121.426392 1120.495972 1119.870728 1119.412354 1118.655396 1117.524658 1116.15979 1114.700073 1113.71106 1112.625244 1114.190186 1116.087036 1117.873657 1119.635864 1120.998535 1122.63855 1122.911133 1123.251587 1123.281006 1123.234863 1123.036987 1122.494263 1122.244507 1122.248169 1122.251221 1122.262329 1122.017822 1122.00415 1121.965698 1121.717041 1121.294556 1120.918091 1120.409302 1119.9021 1119.310425 1119.015869 1118.967529 1119.536987 1120.652466 1122.276855 1122.247314 1122.026001 1120.218506 1118.032715 1116.007446 1114.508911 1113.724976 1113.755005 1114.151001 1114.980225 1115.743164 1116.350098 1116.857056 1117.447388 1117.772461 1118.136597 1118.344727 1118.380737 1118.697632 1119.407837 1120.910889 1124.783813 1130.106323 1133.617065 1135.660889 1133.649292 1125.087646 1121.204346 1129.447876 1134.316284 1137.218506 1136.757812 1130.42688 1135.742065 1139.678955 1148.09082 1149.112793 1144.372681 1153.687622 1167.333618 1176.985718 1183.532227 1187.698608 1191.5271 1190.756592 1188.619141 1190.669434 1195.83313 1196.530273 1197.53186 1199.234619 1200.171631 1203.484863 1207.001099 1208.997925 1209.815918 1206.986572 1206.597778 1211.592041 1217.076904 1215.848145 1204.388184 1193.767456 1188.817505 1184.916626 1181.221191 1180.312622 1181.383179 1183.988892 1183.202393 1176.404907 1170.105469 1160.178101 1152.338257 -1098.01355 1098.623657 1099.225586 1099.670532 1100.070435 1100.407959 1100.795044 1101.204468 1101.700684 1102.213379 1102.631592 1103.051636 1103.391846 1103.689941 1104.10791 1104.708496 1105.255493 1106.022461 1106.602539 1107.217041 1107.744873 1108.322754 1109.022095 1109.700073 1110.487061 1111.432617 1112.349854 1113.299561 1114.364014 1115.544556 1116.78479 1118.103394 1119.56604 1120.721191 1121.480591 1122.064941 1124.175049 1125.911865 1127.64856 1129.608643 1132.022583 1134.821899 1139.284058 1144.935669 1156.12085 1163.648926 1169.42395 1170.05127 1166.3573 1168.074463 1169.764648 1174.908325 1181.900391 1187.338135 1194.24292 1200.02063 1205.189819 1207.988159 1216.084473 1222.910889 1232.810303 1236.906128 1238.007568 1239.369873 1242.581787 1245.625366 1252.539551 1260.646973 1272.334961 1285.742798 1296.651733 1305.442261 1309.822998 1310.71814 1307.81958 1303.81311 1300.720459 1295.020508 1290.335327 1287.935425 1285.676147 1282.414795 1275.701904 1268.479004 1255.882446 1261.545166 1264.688843 1261.914673 1266.512329 1261.034424 1248.9375 1231.604492 1230.825195 1236.989258 1241.750488 1246.972412 1242.280273 1231.512695 1219.494019 1208.902222 1200.280273 1185.827515 1182.459717 1180.20752 1174.656372 1172.257935 1171.079346 1162.456421 1158.452393 1164.068115 1163.190063 1153.194946 1148.256592 1159.244995 1158.5448 1155.410767 1162.676392 1169.093018 1172.841797 1173.375244 1171.456909 1167.366089 1169.780884 1170.188965 1167.923462 1161.614868 1148.375366 1148.651733 1154.077515 1158.299194 1158.500488 1161.587158 1169.980835 1171.897217 1167.143066 1164.566895 1167.980103 1171.734619 1172.077148 1171.887573 1165.173706 1155.767578 1153.026855 1161.022095 1164.991455 1165.577759 1166.131104 1168.331421 1172.213257 1174.768555 1175.088257 1175.931519 1176.984985 1177.63916 1178.107056 1178.355469 1178.42981 1178.412231 1178.394043 1178.38855 1178.38208 1178.632568 1178.714111 1178.885864 1179.044189 1179.289185 1179.536499 1179.608276 1179.552124 1179.40686 1179.247559 1179.21814 1179.265137 1179.206543 1178.938965 1178.476074 1177.768555 1177.065552 1176.320923 1175.614136 1174.910156 1174.305054 1173.433594 1171.933594 1170.801392 1170.569946 1170.376587 1170.571289 1170.507324 1170.318115 1170.028442 1169.122559 1168.069702 1167.752075 1167.467041 1167.157593 1166.771484 1166.33606 1165.933594 1165.625977 1165.276367 1164.858032 1164.482544 1164.074463 1163.793457 1163.487183 1162.993896 1162.626831 1162.239624 1161.865845 1161.225952 1160.719971 1160.249023 1159.785278 1159.405884 1159.095337 1158.993164 1159.132202 1159.297485 1159.11499 1158.851685 1157.82666 1156.889404 1156.692749 1157.588623 1159.044189 1159.405029 1159.745605 1159.855347 1159.862549 1159.780762 1159.753784 1160.095703 1160.332397 1160.23877 1160.077759 1159.654175 1159.217773 1158.666138 1158.038208 1157.442017 1156.78833 1156.166626 1155.648438 1155.284546 1154.956665 1154.586426 1154.054077 1153.664429 1153.2052 1152.679932 1152.14502 1151.592285 1151.175537 1150.798462 1150.333618 1149.903564 1149.465088 1149.151978 1149.178833 1149.191895 1149.013428 1148.912598 1148.953369 1150.356934 1154.488281 1158.254395 1160.580933 1163.192505 1164.819702 1165.234009 1164.380493 1163.43103 1165.000732 1168.3396 1174.739136 1186.011719 1187.87207 1186.245728 1183.296143 1182.571777 1180.154907 1177.819458 1177.949219 1183.637817 1191.445923 1195.959351 1202.344849 1207.825562 1216.393799 1221.860107 1224.194946 1224.714966 1222.822632 1219.141602 1219.805664 1223.398804 1225.788574 1231.678467 1235.866455 1237.3479 1237.349487 1235.93042 1234.015381 1232.827026 1235.776001 1237.776367 1239.33252 1241.118042 1242.271729 1240.529297 1237.082642 1233.29248 1226.198608 1216.619995 1194.962158 1180.032104 1166.464966 1180.36084 1198.187256 1207.153198 1208.39917 1205.352661 1203.635254 1201.338867 1197.862915 1194.737549 1197.89563 1198.493896 1193.142334 1181.439331 1174.917358 1168.976074 1163.955933 1158.349731 1153.585327 1150.029175 1146.38562 1144.100586 1141.651123 1138.622192 1136.198486 1134.729492 1133.719849 1132.235107 1130.952393 1129.390625 1127.925537 1126.499756 1125.212158 1124.263062 1123.559937 1123.006714 1122.307495 1121.542236 1120.666504 1119.875122 1119.144897 1118.566772 1118.03772 1117.463135 1116.954712 1116.482056 1115.888794 1115.277588 1114.755615 1114.310181 1113.930176 1113.54541 1113.114624 1112.600098 1112.192749 1111.867432 1111.682251 1111.456665 1111.248169 1111.000854 1110.665527 1110.276855 1109.547607 1106.739868 1105.216187 1105.3302 1106.357666 1106.929932 1107.269531 1107.536743 1107.829956 1108.235107 1108.380371 1108.55542 1108.728394 1109.001709 1109.372559 1109.740112 1110.074219 1111.118652 1112.178101 1113.204712 1114.14502 1115.243164 1116.446777 1117.753784 1119.047363 1119.954346 1120.655396 1121.308838 1122.225586 1123.053589 1123.696533 1124.205444 1124.423218 1124.56958 1124.374878 1123.486084 1122.53125 1120.938477 1119.057373 1117.392334 1116.186035 1115.008057 1113.721924 1112.769531 1114.510254 1116.672974 1119.002441 1121.526489 1123.889771 1124.265625 1121.372925 1126.042725 1132.009033 1139.35376 1146.618652 1149.560669 1151.607422 1154.158569 1157.096558 1160.080322 1162.112427 1162.073975 1160.821655 1165.589111 1167.397583 1169.664917 1176.313599 1181.245972 1188.134399 1197.398071 1204.798218 1214.818359 1229.248657 1234.433472 1233.966919 1232.892456 1231.408936 1231.642944 1239.550903 1245.70752 1246.231812 1246.013794 1244.829346 1244.540039 1245.065674 1245.735962 1245.673462 1244.73999 1240.211792 1234.089966 1223.405151 1218.918457 1213.779175 1208.05542 1203.806274 1200.586426 1198.887329 1196.370483 1188.984741 1183.056152 1176.618286 1170.327515 1161.076172 1146.970703 1147.242798 1148.433594 1146.924805 1142.098877 1136.628418 1134.257202 1135.240234 1134.775269 1132.568604 1129.848022 1127.34729 1124.83313 1122.891113 1121.906738 1121.629761 1121.113037 1120.729248 1120.886475 1120.137939 1118.71875 1116.97583 1115.395508 1114.316528 1113.804199 1116.052979 1117.808105 1119.751465 1121.759888 1122.571533 1123.136475 1123.331665 1123.367065 1123.264038 1123.037598 1122.423706 1122.243286 1122.247803 1122.247437 1122.246094 1122.246216 1122.222778 1121.952759 1122.021362 1121.686401 1121.277954 1120.876221 1120.417847 1119.994751 1119.564697 1119.352783 1119.3927 1119.790771 1120.481201 1122.116333 1122.223145 1121.820801 1119.983765 1117.678711 1115.533081 1114.096924 1113.327271 1113.253662 1113.718262 1114.257935 1114.84668 1115.269043 1115.692261 1116.142944 1116.446045 1116.528931 1116.465088 1116.34668 1116.495483 1117.756958 1119.615967 1123.456909 1127.391113 1130.099365 1130.41687 1127.943481 1122.426392 1120.534424 1122.349731 1128.463013 1135.855591 1135.906738 1123.324829 1126.682373 1133.80603 1135.981812 1133.910767 1144.32666 1152.250122 1163.494995 1173.438477 1180.296997 1185.33252 1186.072144 1181.020996 1179.592896 1180.391357 1185.279541 1185.572632 1190.657349 1193.484009 1194.365601 1197.384033 1199.265747 1199.773071 1199.755249 1200.331543 1204.682617 1210.17041 1209.794922 1201.654663 1191.89563 1185.502563 1180.645264 1178.4021 1175.876953 1174.531738 1174.5177 1178.213135 1178.78064 1173.885864 1167.824951 1158.941528 1146.660767 -1098.030518 1098.630127 1099.234985 1099.71582 1100.164917 1100.544922 1100.936035 1101.334351 1101.987793 1102.511353 1103.014282 1103.317383 1103.743896 1104.040161 1104.392822 1104.960327 1105.496216 1106.109741 1106.904297 1107.472168 1108.07251 1108.609497 1109.198975 1109.872559 1110.89917 1111.989746 1112.872803 1113.836548 1114.875122 1116.139893 1117.370972 1118.705933 1120.277832 1121.799316 1123.047852 1123.647949 1125.124756 1126.880493 1128.5625 1130.300903 1132.202026 1134.041992 1138.120361 1142.459717 1145.817383 1151.370239 1153.487671 1155.702759 1159.223389 1167.571289 1173.840942 1182.474487 1187.783325 1194.299927 1199.317749 1204.398438 1209.00354 1216.567139 1226.023315 1234.981812 1241.42688 1240.314331 1234.940308 1234.470093 1235.638062 1243.453735 1253.386841 1266.484009 1280.370483 1288.403687 1297.713257 1307.294678 1312.504272 1315.739258 1312.40918 1305.893433 1301.225952 1295.356567 1292.089722 1290.436035 1290.462524 1288.601196 1282.632324 1275.165771 1264.630249 1272.788208 1272.686279 1268.616455 1274.238037 1271.314941 1255.989014 1236.88916 1241.30481 1244.914673 1251.975464 1259.74939 1254.119995 1245.27771 1233.030273 1217.890015 1203.521118 1195.567749 1188.747192 1184.123657 1178.295532 1174.344482 1171.690186 1162.366333 1164.780518 1171.575562 1166.863525 1155.279785 1156.011719 1159.132812 1159.984009 1158.293579 1161.776978 1168.335327 1172.716309 1173.825317 1172.978271 1169.655518 1172.72644 1173.577148 1172.633789 1167.625 1155.613525 1151.621826 1155.255615 1160.010864 1162.510986 1165.444214 1169.362061 1172.06604 1171.944824 1169.187866 1170.2146 1172.901001 1174.268921 1173.675049 1171.934937 1163.911133 1155.615479 1154.353882 1158.936035 1160.07959 1160.583862 1164.05249 1169.765991 1171.370117 1172.506958 1173.878418 1175.830811 1177.154419 1178.091064 1178.765747 1178.874756 1178.917969 1178.816284 1178.838013 1178.755859 1178.692749 1178.684204 1178.747559 1179.015625 1179.454102 1179.760742 1179.927002 1180.031128 1179.759155 1179.69812 1179.637085 1179.635376 1179.5271 1179.36377 1179.025635 1178.442627 1177.884888 1177.127441 1176.326416 1175.602783 1174.947266 1174.172729 1173.406494 1172.756714 1172.671509 1172.928589 1173.079224 1173.080566 1172.927856 1172.581177 1172.025757 1171.225586 1169.232178 1168.157959 1167.552856 1167.230225 1166.840942 1166.359131 1165.953369 1165.630859 1165.196533 1164.805664 1164.49646 1164.109863 1163.701416 1163.109131 1162.700439 1162.358521 1161.827271 1161.244995 1160.71582 1160.19165 1159.760986 1159.31958 1159.014526 1158.900513 1159.026367 1159.126953 1158.850952 1157.526733 1158.297363 1159.04126 1158.988403 1159.017578 1159.464844 1159.828979 1160.080566 1160.285522 1160.293701 1160.399292 1160.494141 1160.606934 1160.663696 1160.606567 1160.351929 1160.081543 1159.576538 1159.091064 1158.467529 1157.956055 1157.255371 1156.669922 1156.261719 1155.943237 1155.728149 1155.381592 1154.908447 1154.464478 1153.934692 1153.353149 1152.63269 1152.052002 1151.523804 1151.075806 1150.663818 1150.341187 1149.975098 1149.767456 1149.704346 1149.553223 1149.889893 1150.315918 1151.274292 1153.601074 1156.92334 1159.717041 1162.887329 1166.398438 1168.183472 1168.248169 1167.449707 1166.620483 1167.234375 1169.589722 1174.161865 1184.326782 1194.034546 1195.94519 1192.322876 1187.744751 1184.046509 1182.484131 1183.426514 1190.2677 1197.515869 1201.426636 1207.929443 1213.183594 1220.035156 1223.397705 1226.647461 1228.862793 1228.582153 1226.340088 1227.737671 1233.019287 1233.321289 1235.326904 1238.383911 1239.516968 1239.566772 1239.654419 1239.720337 1238.158203 1238.847534 1239.409546 1240.012451 1240.401611 1240.153076 1238.711304 1235.832764 1231.402954 1222.633057 1208.823364 1190.173462 1169.978149 1177.644287 1196.008789 1209.329834 1210.905762 1211.182129 1209.930054 1209.472656 1208.503296 1205.556763 1203.209473 1201.512573 1197.977051 1188.097778 1178.325439 1171.961426 1163.511841 1161.847778 1158.23584 1150.004517 1146.446533 1145.891113 1145.725708 1143.309082 1139.421021 1135.942871 1135.284058 1134.232422 1132.719604 1130.92627 1129.259033 1127.652588 1126.03894 1124.516235 1123.720093 1123.2948 1122.865356 1122.239136 1121.597778 1120.804565 1120.082886 1119.442139 1118.94397 1118.356445 1117.857788 1117.271973 1116.792114 1116.25293 1115.682739 1115.095337 1114.592896 1114.141235 1113.702393 1113.170898 1112.73877 1112.124634 1111.775635 1111.396851 1111.171875 1111.012085 1110.800781 1110.543945 1110.183594 1108.994751 1106.761353 1105.335083 1106.476562 1108.023682 1108.093872 1108.014648 1108.19104 1108.566772 1108.887939 1109.192017 1109.375977 1109.555786 1109.758667 1110.116333 1110.574585 1110.968506 1111.845215 1113.018311 1114.142944 1115.322998 1116.534424 1117.894897 1119.354736 1120.493652 1121.014282 1120.93457 1121.144653 1121.599121 1122.247314 1122.946899 1123.906982 1124.503296 1124.882202 1124.943237 1124.858276 1123.921387 1122.612671 1121.36145 1120.066528 1118.870239 1117.422974 1115.807007 1114.239624 1113.292969 1114.819702 1116.538818 1118.720459 1120.433472 1120.595581 1121.595947 1125.763184 1131.089844 1136.045654 1141.310547 1145.402222 1145.869507 1146.529541 1152.483521 1156.655762 1156.140625 1155.006226 1155.800171 1159.170898 1159.79248 1172.855713 1180.134888 1184.772461 1188.584595 1196.877197 1202.911011 1209.008911 1215.844238 1229.685913 1234.970825 1235.964844 1234.107788 1231.372925 1235.521729 1242.76355 1245.938599 1246.468506 1246.318237 1246.298584 1246.349365 1246.312378 1246.377319 1245.667969 1243.290649 1238.373169 1229.757324 1223.576416 1218.036011 1212.050171 1207.663574 1203.926147 1199.899292 1195.10083 1183.730713 1180.942017 1175.646362 1166.572021 1156.149536 1154.062134 1154.549072 1151.382812 1147.093384 1143.99292 1139.367676 1137.438477 1137.187744 1135.588257 1133.056396 1131.000366 1128.650391 1125.096802 1122.079834 1122.692017 1122.869629 1121.963257 1122.045166 1122.17627 1121.493896 1119.828735 1117.682251 1115.921631 1114.960815 1115.171021 1117.112793 1119.50293 1121.407104 1122.539307 1123.277344 1123.502686 1123.501465 1123.406372 1122.945068 1122.247681 1122.248901 1122.248291 1122.247559 1122.247559 1122.247559 1122.246948 1122.246948 1122.207153 1121.964844 1121.75 1121.311646 1120.983276 1120.528076 1120.174316 1119.908936 1119.733765 1119.687622 1119.890747 1120.351929 1121.569702 1122.250244 1122.202881 1119.439697 1116.866699 1114.863525 1113.469604 1112.794434 1112.66626 1113.014038 1113.489502 1113.901489 1114.25354 1114.507324 1114.897339 1114.998901 1114.960449 1114.563599 1113.790894 1113.562378 1115.238892 1117.989624 1121.513428 1124.00647 1124.857788 1122.003418 1121.853516 1119.901978 1119.322998 1120.332275 1122.55127 1134.306519 1132.360229 1121.476196 1121.97583 1122.351807 1132.059937 1140.02478 1150.326294 1159.808716 1165.432373 1169.910767 1173.309937 1180.103271 1179.706421 1171.308594 1173.369385 1171.39856 1174.750366 1177.052002 1181.439575 1181.712891 1183.994751 1188.478271 1190.275024 1190.140747 1190.563965 1193.0625 1199.965576 1203.979736 1197.947632 1191.697266 1185.440918 1180.254883 1176.366821 1171.929199 1169.717285 1168.698853 1168.324219 1172.395386 1173.841675 1172.553833 1164.924316 1154.647217 1144.966675 -1098.003418 1098.634888 1099.238403 1099.721924 1100.241943 1100.677246 1101.071045 1101.614868 1102.165405 1102.745728 1103.140991 1103.610352 1104.036499 1104.426514 1104.780762 1105.245117 1105.824707 1106.387329 1107.008301 1107.724854 1108.418213 1108.870483 1109.339966 1109.960693 1111.09314 1112.2323 1113.266724 1114.334106 1115.298096 1116.516357 1117.798706 1119.16272 1120.638306 1122.140747 1123.716187 1124.788574 1126.302368 1127.974487 1129.532837 1130.847778 1132.402588 1134.601685 1137.127686 1140.095825 1142.432129 1144.543945 1145.923706 1156.05249 1161.479736 1168.342163 1173.004272 1184.147827 1190.113281 1197.087891 1202.999512 1209.212769 1214.919067 1223.783813 1234.744629 1241.662231 1245.165649 1237.620972 1230.418457 1230.075684 1234.880615 1247.326172 1258.348633 1267.963257 1278.608276 1285.398315 1294.673462 1303.722656 1311.287598 1318.811401 1317.11731 1308.26001 1302.886108 1298.80957 1294.695068 1293.742798 1295.015869 1294.622681 1293.196533 1285.859009 1274.59729 1282.38269 1282.615601 1279.10144 1280.942261 1275.688843 1261.490479 1248.572876 1256.992798 1259.170166 1260.818604 1260.85791 1251.157349 1240.852783 1231.77417 1217.702881 1204.358521 1197.650391 1186.014526 1182.668945 1177.088745 1172.095459 1170.084595 1168.526733 1169.38269 1173.026855 1170.534668 1155.364502 1156.530518 1158.787109 1161.043945 1159.346802 1159.727295 1167.208618 1173.116211 1175.343506 1175.75708 1171.66687 1175.295776 1175.189087 1173.10083 1167.746704 1156.587891 1155.417847 1156.171631 1157.799438 1165.456421 1171.472656 1170.498291 1171.578003 1173.710815 1171.584595 1170.480957 1174.638184 1175.470581 1174.823975 1172.967163 1168.521484 1160.455322 1155.813843 1155.099609 1156.27124 1155.920654 1159.030518 1163.720581 1170.027832 1170.874634 1173.199951 1175.569092 1177.30603 1178.430054 1179.207275 1179.516479 1179.630859 1179.571289 1179.315796 1179.013428 1178.687378 1178.694092 1178.693848 1178.886475 1179.428833 1180.013672 1180.302734 1180.462036 1180.222534 1180.092529 1180.030273 1179.946899 1179.82959 1179.747314 1179.583252 1179.351685 1178.873413 1178.344482 1177.488892 1176.69397 1176.105347 1175.513184 1175.290649 1175.184937 1175.329224 1175.422607 1175.513306 1175.374878 1175.000854 1174.495972 1173.785278 1172.736206 1170.716064 1169.630737 1169.224854 1168.799316 1168.335693 1167.337524 1166.475952 1165.895996 1165.473755 1165.086426 1164.802734 1164.296997 1163.972534 1163.286499 1162.825928 1162.322144 1161.707642 1161.210205 1160.741699 1160.243774 1159.746216 1159.220093 1158.77417 1158.537476 1158.512573 1158.463623 1158.670898 1159.157104 1159.505127 1159.813477 1159.868408 1159.877686 1160.029541 1160.248413 1160.4729 1160.639893 1160.662964 1160.83667 1160.984253 1161.020142 1161.034546 1160.839844 1160.610229 1160.230103 1159.83374 1159.366211 1158.875977 1158.281128 1157.614624 1157.132202 1156.87915 1156.669678 1156.528687 1156.163818 1155.785767 1155.169922 1154.555176 1153.930298 1153.180298 1152.492432 1151.889526 1151.4375 1150.969971 1150.680786 1150.386475 1150.187134 1149.956543 1149.933105 1150.31897 1151.789429 1153.382812 1156.088013 1159.01416 1162.606079 1166.961914 1170.220459 1171.415161 1171.333862 1170.438477 1168.502197 1168.513306 1169.816895 1175.106567 1184.390503 1194.21582 1197.670898 1197.319336 1189.280396 1184.271851 1184.167236 1189.573608 1196.751953 1198.924927 1203.969604 1209.608643 1215.01355 1221.140137 1225.779907 1230.110718 1232.560181 1234.073486 1233.681641 1233.846802 1237.829468 1239.983521 1241.487671 1241.849365 1241.5896 1242.059692 1242.805298 1243.653076 1242.037598 1241.592407 1241.01355 1240.472656 1240.057983 1238.971191 1237.367188 1234.793457 1228.302734 1215.402832 1198.245117 1185.178711 1169.274902 1188.987915 1206.117432 1211.094482 1212.310425 1213.105591 1213.280396 1213.011597 1211.932861 1210.223267 1208.405762 1205.382568 1197.540771 1186.156006 1177.237427 1170.125 1161.401245 1157.988525 1151.70459 1146.584351 1146.866333 1148.116333 1148.000366 1144.778198 1140.044312 1135.591187 1134.222656 1133.572021 1132.362183 1130.682861 1129.116699 1127.339478 1125.578491 1123.494141 1122.206055 1122.24231 1121.95105 1121.757446 1121.350952 1120.798828 1120.142212 1119.58728 1119.088989 1118.754517 1118.210205 1117.617798 1117.048706 1116.661133 1116.008789 1115.411011 1114.877441 1114.372803 1113.754761 1113.18335 1112.641724 1112.161865 1111.561401 1111.106689 1110.766113 1110.593628 1110.462524 1110.240967 1109.959473 1108.319702 1106.275757 1106.361084 1109.560913 1109.922241 1109.085571 1108.701294 1108.904907 1109.281128 1109.595093 1109.881958 1110.13562 1110.375488 1110.657227 1110.966187 1111.513428 1112.072388 1112.921143 1114.089844 1115.196899 1116.449341 1117.855591 1119.27356 1120.832886 1121.965332 1122.287231 1121.800537 1121.314087 1121.379517 1121.784912 1122.252441 1123.068848 1124.154663 1124.957886 1125.404541 1125.593994 1125.485474 1124.582764 1122.974731 1122.667969 1121.875122 1120.506592 1118.809814 1116.654541 1114.929321 1114.03833 1114.36438 1115.685791 1117.129639 1118.800049 1121.127319 1124.308228 1127.662598 1132.277344 1134.526489 1134.530273 1133.32666 1143.037842 1153.51355 1159.890015 1154.241455 1147.060303 1148.319824 1153.478149 1161.843994 1171.966797 1179.300659 1185.081787 1190.428467 1196.731812 1200.520508 1204.729858 1211.206055 1226.277466 1236.487427 1241.144531 1239.049438 1234.322021 1231.283936 1237.467041 1243.349365 1246.077148 1246.638428 1246.518799 1246.565918 1246.662354 1246.425781 1246.108887 1244.51062 1240.627075 1232.725342 1225.6698 1219.166748 1214.39563 1209.97876 1205.880127 1200.984253 1196.552002 1192.71106 1186.776489 1181.139282 1168.547485 1159.178101 1166.008423 1161.225342 1155.334839 1148.254761 1147.018921 1144.42688 1141.266113 1138.194092 1134.53125 1134.088501 1132.752319 1130.091797 1126.969604 1124.850342 1124.44751 1124.028442 1123.089722 1123.006348 1123.27063 1122.544434 1120.789795 1118.250366 1116.515991 1115.618774 1116.762451 1118.626343 1120.72168 1122.501221 1123.031006 1123.575562 1123.673096 1123.57959 1123.285767 1122.490601 1122.250488 1122.249023 1122.247681 1122.247559 1122.247559 1122.247803 1122.248779 1122.254272 1122.345093 1122.200073 1121.809937 1121.539917 1121.159912 1120.767578 1120.498291 1120.271484 1120.170654 1120.038086 1120.102905 1120.181152 1120.630371 1121.905396 1122.238281 1118.979614 1115.620117 1113.615479 1112.509033 1111.978027 1112.055542 1112.38208 1112.672852 1112.927734 1113.148071 1113.20813 1113.588623 1113.725098 1113.581787 1112.877197 1110.911011 1110.436279 1112.684937 1115.287964 1118.459229 1120.667358 1120.913818 1119.797852 1119.19043 1117.710693 1117.49231 1118.807495 1121.664307 1126.192749 1123.725098 1121.064819 1121.995361 1125.0177 1132.937256 1138.520386 1144.561401 1152.200439 1157.97168 1161.13916 1164.767334 1168.768799 1169.924072 1166.08667 1166.598511 1166.377563 1167.508057 1169.995605 1173.221069 1173.237915 1177.139771 1180.871704 1181.998047 1181.841431 1184.500732 1193.429199 1197.455933 1191.882324 1187.431152 1183.117188 1177.496338 1174.411743 1173.028198 1169.607788 1163.891235 1162.058228 1162.39624 1164.981201 1166.804077 1166.32312 1161.21582 1152.587891 1140.276123 -1097.926392 1098.597778 1099.22229 1099.807495 1100.286743 1100.761475 1101.247437 1101.720459 1102.33606 1102.836914 1103.390503 1103.950806 1104.359131 1104.708374 1105.189819 1105.706787 1106.126831 1106.726318 1107.336182 1108.005615 1108.676392 1109.472656 1109.865723 1110.045044 1111.239502 1112.443481 1113.520142 1114.548828 1115.6604 1116.887207 1118.014404 1119.217651 1120.702515 1121.86377 1123.296997 1124.845703 1127.207886 1129.457886 1130.718262 1131.873657 1132.748779 1134.036499 1136.893921 1139.175293 1141.556396 1144.205322 1147.823242 1153.250977 1157.890137 1164.397583 1171.510498 1179.820679 1189.103638 1196.65686 1203.720337 1209.725586 1216.262451 1226.445312 1237.683228 1246.859497 1241.753662 1234.320679 1226.62561 1230.250244 1238.697144 1248.689819 1258.714722 1266.471558 1272.847534 1278.426025 1287.994629 1294.54895 1300.963135 1309.560303 1313.32959 1310.478516 1304.203979 1301.384766 1299.522583 1299.004883 1298.842773 1298.26001 1297.122681 1295.156494 1282.641479 1285.69458 1285.780396 1283.722778 1285.212524 1278.760254 1263.585693 1268.425537 1268.864258 1268.655518 1266.571167 1256.39917 1243.254028 1229.289062 1218.551392 1205.247437 1200.672363 1191.143433 1181.116455 1180.696899 1176.899536 1171.71582 1172.51062 1172.670532 1171.754883 1174.10083 1172.060791 1159.922607 1155.868896 1158.528687 1164.909668 1161.625122 1158.553955 1164.669312 1172.587402 1177.366943 1181.297119 1179.631714 1178.455444 1176.556885 1172.178467 1167.514526 1159.27771 1157.326782 1159.669922 1162.465942 1168.281128 1173.094971 1172.848145 1173.261475 1176.931885 1179.390625 1177.838867 1177.870239 1176.746826 1175.305786 1173.374268 1169.036011 1160.144531 1158.905151 1160.628174 1161.01709 1160.418091 1157.77124 1160.406982 1171.752686 1172.101074 1174.068726 1176.030273 1177.679199 1178.974609 1179.793091 1180.138916 1180.28418 1180.055176 1179.716675 1179.145752 1178.688232 1178.690674 1178.682983 1178.888794 1179.514282 1180.192261 1180.724609 1180.958374 1180.760498 1180.568726 1180.355591 1180.194092 1180.155273 1180.085327 1180.091309 1180.127441 1179.85376 1179.447876 1178.884155 1178.125977 1177.55542 1177.282593 1177.397461 1177.680908 1178.064453 1178.239746 1178.16394 1177.683716 1177.113892 1176.393555 1175.412476 1174.281128 1172.265991 1171.380249 1170.893311 1170.804077 1170.124756 1168.734741 1167.117432 1166.122681 1165.679932 1165.389893 1164.987793 1164.516968 1164.137085 1163.625732 1162.834473 1162.271606 1161.740601 1161.275879 1160.763794 1160.426392 1160.242188 1159.821289 1159.597656 1159.562866 1159.701294 1159.791626 1159.932983 1160.147095 1160.378662 1160.695557 1160.721069 1160.742432 1160.887573 1160.791504 1160.874634 1160.960327 1161.047974 1161.202026 1161.360229 1161.341675 1161.239746 1161.030273 1160.717529 1160.296021 1159.821899 1159.429565 1159.068604 1158.611206 1157.89209 1157.610474 1157.615723 1157.426392 1157.468384 1157.064697 1156.519897 1155.887817 1155.125977 1154.402588 1153.616577 1152.953979 1152.333618 1151.803955 1151.389038 1150.998535 1150.67627 1150.454956 1150.36853 1150.217896 1150.657959 1152.60498 1154.603027 1157.317627 1160.827515 1165.783813 1170.302734 1172.560303 1174.145386 1174.013306 1172.356445 1170.100952 1169.323364 1170.010132 1173.916626 1179.915894 1185.970337 1193.980835 1192.705933 1184.60022 1182.920044 1183.046143 1182.291138 1193.585571 1195.108276 1203.067139 1206.277344 1213.717285 1219.087646 1226.674316 1232.553467 1235.427002 1238.012085 1239.042847 1240.354004 1242.395508 1245.56543 1246.243652 1245.006836 1244.829834 1245.221558 1246.607544 1246.440674 1245.960205 1243.391846 1242.205566 1241.317749 1240.059692 1238.052002 1236.163818 1233.890503 1228.778442 1216.771973 1197.928955 1180.852417 1175.325928 1193.010132 1207.368896 1211.032349 1212.748413 1214.203491 1215.68689 1217.516235 1217.091797 1214.081909 1210.913086 1208.32959 1200.170532 1189.063965 1179.439453 1172.223877 1164.711914 1158.435059 1155.821167 1152.268555 1152.287354 1151.692017 1148.3479 1145.147949 1140.978394 1137.514526 1135.703491 1133.989868 1132.392822 1130.664551 1128.923584 1127.218262 1125.256836 1123.478882 1122.262085 1121.864746 1121.57251 1121.3125 1121.050659 1120.73645 1120.312622 1119.781372 1119.435547 1118.917236 1118.490845 1117.974365 1117.621948 1117.114502 1116.49353 1115.891479 1115.199219 1114.597168 1113.808838 1113.140381 1112.487305 1111.957275 1111.537354 1110.943115 1110.41626 1110.176147 1110.411987 1109.752563 1108.559082 1106.976196 1106.299316 1107.448364 1110.306152 1110.232056 1109.610474 1109.248779 1109.562622 1109.959839 1110.280151 1110.67395 1110.961792 1111.194702 1111.409546 1111.969482 1112.429565 1113.122314 1114.064453 1115.085205 1116.379761 1117.619751 1119.053711 1120.530884 1121.861938 1123.164795 1123.435425 1122.704346 1121.935059 1121.463379 1121.435791 1122.055298 1122.27417 1123.240967 1124.555664 1125.369263 1126.104248 1126.384521 1126.40686 1125.648315 1124.775146 1124.240479 1123.189941 1121.855469 1120.106201 1118.151489 1116.633667 1115.751343 1115.161987 1115.463135 1117.24585 1118.901001 1121.409668 1124.530762 1128.290039 1130.455811 1131.173218 1133.65686 1143.555664 1153.475464 1157.191162 1151.344849 1145.651245 1144.989746 1151.459595 1160.008911 1168.700073 1175.433228 1181.400391 1187.374268 1195.158081 1198.391602 1202.345825 1208.286865 1222.087158 1236.844727 1244.928467 1244.792236 1240.28186 1234.424561 1237.26709 1241.232544 1244.076416 1245.299316 1246.059814 1246.273438 1246.462402 1246.472534 1246.18335 1244.979736 1242.266724 1233.435669 1227.231445 1220.320801 1216.49292 1211.598267 1206.60022 1206.783936 1202.526611 1197.965332 1191.666992 1183.022583 1171.814087 1175.80603 1174.473267 1168.77124 1158.653809 1159.012573 1152.04834 1147.371704 1144.201538 1140.451538 1137.279541 1135.797485 1133.702393 1131.33667 1129.338379 1127.612183 1126.08313 1125.098877 1124.391235 1124.084595 1123.841797 1123.126221 1121.245483 1118.291992 1116.973999 1117.001953 1118.299927 1119.965576 1121.435303 1122.567993 1123.239258 1123.726318 1123.838501 1123.685669 1123.300171 1122.62146 1122.250488 1122.248047 1122.245117 1122.232788 1122.296875 1122.314087 1122.598877 1122.788452 1122.96521 1122.684692 1122.23584 1121.808105 1121.355713 1120.929565 1120.716797 1120.692017 1120.760376 1120.702881 1120.502197 1120.143066 1119.709473 1119.311035 1118.22937 1115.748047 1113.735718 1111.891846 1111.099243 1111.182861 1111.225464 1111.337158 1111.759277 1111.956421 1112.055664 1111.832886 1112.197632 1112.551147 1112.468872 1111.738647 1110.361694 1109.49939 1110.462891 1112.493896 1115.203247 1116.677734 1117.053955 1116.845215 1115.86499 1114.211304 1114.606201 1116.710938 1119.335205 1121.142212 1121.076904 1120.918213 1121.299194 1124.922363 1128.959717 1132.743652 1133.466064 1138.289307 1147.717407 1152.390137 1154.976074 1156.011963 1156.470703 1159.823975 1161.249878 1160.971558 1162.457275 1167.885498 1169.590576 1170.165039 1171.396362 1175.807617 1178.509399 1180.341675 1184.479614 1189.814331 1188.393188 1182.244751 1178.453247 1172.995728 1166.409302 1165.290161 1165.815063 1163.807007 1159.174316 1156.031128 1155.885376 1156.307983 1157.792969 1157.196533 1154.743164 1149.154663 1137.356934 -1097.899292 1098.537354 1099.219849 1099.828125 1100.423584 1100.93335 1101.469482 1101.928833 1102.481201 1103.015747 1103.664917 1104.227661 1104.728882 1105.186157 1105.708496 1106.118164 1106.620605 1107.071533 1107.640381 1108.282959 1109.033203 1109.801636 1110.586914 1111.057373 1111.835083 1112.822998 1113.878174 1114.873779 1115.990967 1117.102417 1118.280396 1119.554443 1120.507935 1121.398804 1122.222046 1124.34314 1128.664795 1131.145752 1132.515869 1133.789917 1134.670776 1135.901001 1138.36731 1140.317505 1141.700928 1143.559448 1145.94043 1149.002686 1156.20459 1162.718384 1171.43811 1179.713379 1188.159424 1195.028687 1201.399902 1206.961304 1212.700562 1220.535278 1228.639893 1232.721436 1230.444214 1226.140503 1218.620239 1229.845947 1237.422729 1245.888306 1254.528076 1260.428345 1266.861084 1272.699097 1280.007202 1286.546875 1289.601685 1299.113647 1313.956299 1318.635742 1307.087036 1304.15918 1303.105957 1303.127563 1303.410156 1302.032715 1300.124023 1297.315796 1293.577148 1291.013306 1289.6875 1292.252563 1292.235352 1281.82019 1281.362915 1283.674927 1280.729248 1275.087646 1270.600098 1260.695557 1247.913818 1234.991211 1222.939575 1210.836548 1199.335205 1190.307617 1189.812256 1186.931274 1182.630127 1184.525879 1183.515503 1180.918945 1178.716675 1175.604004 1170.529297 1159.835327 1155.713623 1158.922485 1169.803101 1170.132202 1161.307251 1159.772217 1168.958374 1176.450684 1183.960327 1182.806396 1180.805176 1178.221313 1175.17334 1173.26355 1164.257446 1158.257568 1166.108398 1172.069458 1170.041382 1173.938843 1176.703735 1179.049194 1180.055298 1183.780518 1182.787354 1180.289062 1177.75647 1175.129395 1172.406006 1169.774536 1167.008545 1166.909424 1166.493042 1164.669312 1162.746582 1160.446411 1157.942505 1172.615479 1173.422607 1174.837402 1176.711792 1178.419922 1179.667725 1180.479858 1180.738281 1180.726196 1180.429321 1179.842651 1179.407837 1179.035522 1179.034912 1179.273926 1179.664551 1180.12561 1180.779907 1181.452759 1181.752075 1181.512207 1181.090454 1180.786621 1180.603394 1180.474243 1180.4375 1180.635376 1180.815796 1180.746338 1180.515381 1180.133545 1179.646118 1179.25647 1179.105957 1179.347168 1180.268555 1180.741455 1180.987915 1180.882446 1180.192993 1179.145508 1178.16272 1177.443237 1177.012817 1176.403687 1175.493164 1174.535034 1173.447388 1171.565674 1169.824463 1167.39209 1166.353516 1166.001465 1165.55896 1165.278198 1164.842651 1164.41748 1163.810547 1163.123413 1162.410156 1161.883667 1161.414673 1161.376465 1161.353394 1161.189209 1160.863892 1160.802979 1160.847534 1160.864868 1160.896118 1161.048828 1161.201904 1161.392944 1161.591797 1161.572998 1161.484497 1161.494263 1161.49292 1161.408936 1161.39917 1161.442139 1161.503296 1161.529785 1161.489258 1161.307983 1161.026733 1160.647217 1160.28125 1159.893066 1159.47522 1159.038696 1158.562622 1158.105591 1158.075073 1158.321167 1158.417358 1158.355713 1157.930542 1157.253662 1156.437866 1155.627319 1154.837891 1154.091064 1153.426147 1152.810547 1152.248169 1151.757446 1151.331787 1151.011841 1150.791992 1150.539551 1150.384155 1151.210938 1152.977173 1155.255249 1157.843872 1162.369019 1168.282593 1172.921753 1176.099487 1178.122803 1177.46875 1174.822998 1171.447388 1170.160034 1170.161499 1170.070068 1173.086304 1176.875122 1182.959473 1182.958496 1180.401123 1180.177612 1181.51123 1184.372681 1192.763062 1199.582031 1206.481689 1210.77771 1216.758789 1221.740723 1228.348022 1232.408081 1239.094971 1242.649658 1243.097046 1245.226318 1246.157715 1248.664185 1249.640015 1249.979736 1251.288696 1252.50769 1252.172485 1249.857544 1248.265137 1244.421021 1243.448975 1242.569336 1240.086426 1236.77356 1233.646118 1232.151611 1226.041138 1215.819336 1200.287476 1185.653442 1176.370117 1190.764526 1203.22937 1208.893311 1213.1875 1215.493042 1216.768799 1219.638306 1220.327515 1215.953003 1212.242676 1208.915161 1197.606934 1189.348633 1181.189697 1174.040649 1167.884888 1163.25708 1159.827271 1156.359741 1159.18811 1153.628174 1146.928467 1144.195068 1141.105835 1138.272095 1136.303833 1134.334229 1132.663574 1130.844604 1129.012207 1127.259521 1125.517822 1124.123535 1122.850708 1121.976318 1121.434937 1121.206055 1120.90332 1120.656616 1120.377319 1120.110596 1119.673462 1119.194824 1118.760376 1118.324341 1117.980225 1117.494385 1116.925049 1116.268921 1115.642944 1114.786987 1113.908203 1113.166504 1112.440552 1111.829102 1111.302368 1110.805786 1110.257568 1107.401001 1106.987793 1106.758911 1106.60083 1106.316772 1105.969116 1109.498901 1110.59729 1110.628052 1110.069946 1109.691162 1110.189819 1110.657227 1111.011719 1111.37854 1111.77478 1112.017822 1112.3396 1112.79834 1113.463379 1114.189697 1115.132935 1116.226562 1117.349121 1118.527344 1119.80481 1121.152466 1122.311035 1123.877075 1124.196533 1123.783203 1122.248169 1121.510986 1121.444092 1121.452271 1122.088501 1122.291504 1123.235718 1124.969116 1126.076416 1126.98999 1127.562378 1127.689209 1127.293823 1126.765137 1125.786011 1124.422974 1123.234131 1121.880737 1120.294556 1118.629761 1117.000732 1115.879028 1115.613159 1116.390015 1119.575073 1122.947754 1125.414185 1127.932983 1130.094116 1133.925049 1142.751221 1148.462158 1150.839844 1146.766724 1143.210449 1144.009888 1147.843384 1156.211304 1164.877319 1172.151123 1177.337036 1181.793213 1187.887817 1194.917358 1199.166138 1205.58252 1215.726807 1233.836182 1243.291138 1246.206787 1245.394897 1241.915894 1241.107056 1241.625977 1242.749878 1244.143799 1244.471558 1245.412109 1246.045288 1246.289185 1246.171753 1245.605957 1243.981445 1234.492432 1229.105957 1223.98584 1219.698364 1214.653076 1208.567383 1209.763062 1206.50293 1200.73938 1195.076904 1184.701904 1186.025635 1182.345825 1177.162354 1171.192993 1166.484619 1161.943726 1155.479248 1150.58313 1146.487671 1142.637451 1139.040894 1136.122437 1133.533936 1132.745972 1131.402344 1129.315186 1127.543945 1126.145874 1125.220581 1124.473633 1123.73938 1122.629517 1120.121338 1118.212891 1117.973145 1118.743896 1120.447632 1122.092896 1122.56897 1123.052124 1123.666626 1123.802002 1123.849243 1123.618408 1123.158569 1122.46106 1122.249023 1122.251587 1122.30896 1122.744629 1123.309448 1123.798584 1123.871216 1123.703003 1123.493774 1123.250244 1122.720703 1122.20752 1121.519897 1121.160156 1121.026978 1121.105225 1121.342407 1121.389893 1121.233032 1120.363159 1119.364136 1117.690552 1114.78125 1109.969116 1110.591309 1109.735474 1110.202881 1110.394287 1110.082397 1110.527588 1110.890015 1110.767578 1111.039185 1110.268188 1110.881714 1111.745972 1111.759644 1111.209961 1109.950562 1108.91748 1109.075806 1110.288696 1112.35144 1113.419678 1113.723145 1113.964478 1113.216431 1109.892944 1112.144531 1114.603638 1116.195923 1118.7771 1121.504761 1126.026489 1127.090576 1123.94104 1128.649658 1131.13855 1131.694336 1132.355347 1138.590942 1145.809937 1146.769775 1148.882812 1152.586426 1155.272461 1156.915649 1157.709961 1162.793335 1170.497559 1172.235962 1172.347778 1172.001221 1174.191772 1176.126587 1177.668701 1180.71814 1182.000732 1179.019653 1173.462891 1168.551147 1161.178833 1152.50354 1147.772217 1155.810547 1159.470215 1158.237793 1150.701538 1147.714844 1150.271729 1150.036499 1146.128784 1143.485596 1141.483398 1131.410889 -1097.94873 1098.541382 1099.214111 1099.941406 1100.535034 1101.070312 1101.602417 1102.083496 1102.659546 1103.212891 1103.850708 1104.47998 1105.096802 1105.518799 1106.067627 1106.466797 1106.980591 1107.504639 1107.955444 1108.504395 1109.150024 1109.86145 1110.820801 1111.584106 1112.440918 1113.240967 1114.229736 1115.231445 1116.342285 1117.448242 1118.751221 1119.823242 1120.75354 1121.720947 1122.776489 1126.33728 1131.349121 1133.201538 1134.400513 1137.712402 1140.31604 1141.996704 1142.766968 1141.915649 1142.207153 1143.113647 1144.895752 1147.33728 1153.896851 1159.117676 1166.992065 1174.885254 1184.942261 1190.753662 1194.036743 1195.335083 1202.028687 1208.51416 1218.560547 1222.254395 1219.315674 1213.446289 1219.512573 1226.974243 1234.073242 1242.356079 1249.109131 1255.703369 1264.360107 1270.762573 1278.40564 1283.935913 1288.843018 1295.350342 1312.169434 1325.627197 1318.1604 1311.381226 1310.119263 1309.209351 1308.471436 1305.320312 1303.273682 1301.905884 1299.092163 1295.564575 1292.051514 1294.210571 1295.016235 1290.864746 1289.426392 1288.479004 1284.392944 1278.2052 1269.898804 1260.888916 1245.126343 1230.626221 1224.50769 1212.824585 1202.307129 1210.019043 1209.897461 1203.477905 1196.06311 1196.437744 1197.256226 1190.521484 1182.076904 1176.462402 1169.435181 1160.816772 1156.409546 1159.402588 1169.828247 1172.96228 1169.957031 1166.535522 1168.12085 1171.108154 1179.187012 1184.431641 1182.382935 1180.179199 1176.753784 1170.958252 1158.00354 1160.863892 1172.279175 1174.139771 1175.326294 1177.069336 1180.196899 1183.215576 1182.41687 1183.713745 1183.568359 1180.892212 1178.4729 1173.929688 1170.552002 1170.260254 1171.983521 1172.13208 1171.44751 1168.76416 1165.443115 1162.237549 1159.865479 1172.547119 1173.842773 1175.640381 1177.511719 1179.399536 1180.523682 1181.185425 1181.318604 1181.117188 1180.683716 1180.094849 1179.717041 1179.9646 1180.555542 1180.672974 1180.755371 1181.105469 1181.717407 1182.943726 1182.886597 1182.357056 1181.828125 1181.296265 1180.993042 1180.911377 1180.876709 1181.158203 1181.538696 1181.678955 1181.703979 1181.501587 1181.168213 1181.096802 1181.310425 1181.791382 1182.904175 1183.65918 1183.602905 1183.37146 1182.419312 1180.911621 1179.70459 1179.291138 1179.874268 1180.912231 1182.31665 1179.58252 1175.614258 1172.517944 1170.20105 1167.236328 1166.446289 1166.183105 1165.841309 1165.581543 1165.193237 1164.809082 1164.107788 1163.460327 1162.69812 1162.117798 1161.99707 1162.052734 1162.029541 1162.088135 1162.037964 1162.005493 1161.973633 1162.123901 1162.092529 1162.213623 1162.291382 1162.458496 1162.443481 1162.456177 1162.414429 1162.314575 1162.155151 1162.085449 1161.906372 1161.82019 1161.850952 1161.765015 1161.496826 1161.318237 1160.950073 1160.485962 1160.065674 1159.659546 1159.264648 1158.845215 1158.494263 1158.484009 1158.800659 1159.026245 1159.079712 1159.049072 1158.667236 1157.946167 1157.131592 1156.202026 1155.389282 1154.636963 1153.933716 1153.306763 1152.736328 1152.20166 1151.759033 1151.404053 1151.098267 1150.850342 1151.10498 1152.119751 1153.817505 1155.984863 1158.228271 1162.564331 1168.934448 1173.769897 1179.811157 1183.062744 1182.491089 1178.475952 1174.449585 1172.171265 1171.435303 1170.414795 1169.992188 1169.9646 1174.942139 1176.898682 1177.729004 1179.03772 1181.61499 1186.41626 1193.736328 1202.042114 1210.219238 1215.961182 1222.168457 1228.390869 1233.188232 1236.87439 1242.964722 1245.700439 1246.66626 1248.150024 1249.701782 1251.664307 1252.764404 1254.155518 1256.775391 1258.327881 1257.388062 1254.215088 1252.357788 1248.536011 1246.527832 1243.411377 1239.995483 1235.18335 1231.207886 1226.033325 1221.155029 1211.694946 1197.368164 1182.182495 1181.851074 1195.192749 1205.841187 1209.894409 1215.509644 1217.372437 1217.862549 1218.203857 1217.074707 1213.773315 1210.047729 1204.651245 1198.272461 1190.858032 1185.21936 1176.124268 1170.122314 1164.594727 1160.029663 1159.286743 1158.942261 1151.546021 1145.625488 1143.421143 1140.447998 1137.938599 1136.113281 1134.353516 1132.663452 1130.866333 1129.242676 1127.398438 1125.787231 1124.280518 1122.89917 1121.965698 1121.513672 1121.181519 1120.986816 1120.728027 1120.634644 1120.322754 1119.984741 1119.495361 1119.2677 1118.717529 1118.399536 1117.904663 1117.328247 1116.673462 1115.87207 1115.087036 1114.124512 1113.165283 1112.372925 1111.635498 1111.090576 1110.765137 1110.265625 1108.310791 1107.956665 1108.14917 1108.117798 1108.226196 1108.93811 1110.308838 1110.939087 1111.051025 1110.526733 1110.432373 1110.773438 1111.124512 1111.631348 1112.033081 1112.363892 1112.787109 1113.193359 1113.729126 1114.370605 1115.138184 1116.130493 1117.11084 1118.198486 1119.197754 1120.273193 1121.541748 1122.759399 1124.477905 1124.962891 1124.447266 1122.505127 1121.911011 1121.61853 1121.466797 1121.489136 1121.988525 1122.199219 1123.396851 1125.510132 1127.014404 1128.405273 1129.384644 1129.809326 1129.360962 1128.536621 1127.1875 1126.070923 1124.701294 1123.428345 1121.860107 1119.798218 1117.866333 1117.028931 1116.591797 1117.198853 1120.820557 1123.703979 1126.642944 1129.359985 1133.282959 1139.725098 1146.131714 1149.135986 1140.535767 1137.505005 1143.17041 1148.440918 1160.293823 1164.143066 1169.277222 1173.404907 1175.161255 1180.273926 1186.149536 1196.546387 1203.378906 1210.915771 1224.949707 1237.313843 1244.79187 1245.807739 1245.169067 1243.907104 1242.655273 1242.758301 1243.064209 1244.167358 1244.289795 1245.087891 1246.050537 1246.293091 1246.096191 1245.056519 1236.688354 1231.689941 1227.047485 1222.753052 1218.05603 1213.957275 1211.195435 1207.379272 1203.207764 1197.381348 1197.580933 1192.311279 1183.19812 1181.023315 1176.013428 1173.636841 1170.693604 1160.02771 1153.60083 1148.292603 1144.3302 1140.410278 1136.351807 1134.605957 1134.728882 1133.032349 1130.704712 1128.774658 1127.069092 1125.613525 1124.342773 1123.147217 1120.592285 1121.391113 1122.625977 1120.64856 1120.187622 1121.481689 1122.90686 1123.418701 1123.673462 1123.970215 1123.982788 1123.772949 1123.408081 1122.252686 1122.243774 1122.24585 1122.263916 1123.157104 1123.988525 1124.558472 1124.713501 1124.368896 1124.10144 1123.700928 1123.394531 1122.971802 1122.678833 1122.205322 1121.615845 1121.367798 1121.900146 1122.145874 1122.14624 1122.158936 1121.872559 1120.193848 1117.859863 1114.753784 1111.571655 1109.971313 1109.622192 1109.071411 1109.477905 1109.571655 1109.835571 1110.035889 1109.515747 1109.966553 1109.368774 1110.203613 1110.816406 1111.15625 1110.814697 1109.555908 1108.446045 1108.289917 1109.124634 1110.099976 1110.515625 1111.448364 1112.30896 1111.826782 1110.234741 1110.817139 1112.5979 1111.600952 1116.081543 1122.575073 1131.782837 1138.519897 1137.776245 1132.699951 1134.416626 1135.291138 1134.722656 1133.299438 1136.203491 1143.928345 1146.43103 1148.530762 1154.077271 1158.529297 1163.72168 1170.601318 1175.115234 1177.07019 1176.158447 1174.639893 1174.196411 1174.419556 1173.525269 1172.092285 1168.849243 1167.666382 1162.571045 1156.209717 1148.864014 1142.40979 1139.263794 1145.372803 1151.432739 1151.530518 1148.091064 1142.864258 1143.486572 1142.770752 1135.325073 1132.384277 1133.391724 1128.63269 -1098.058105 1098.6427 1099.298828 1099.874146 1100.529053 1101.087524 1101.560669 1102.203857 1102.869873 1103.586304 1104.106323 1104.701904 1105.277222 1105.882935 1106.414917 1106.841675 1107.342163 1107.861694 1108.279785 1108.784668 1109.42334 1109.909912 1110.900757 1111.860107 1112.809082 1113.726929 1114.624023 1115.674683 1116.813599 1117.953125 1119.119995 1120.274536 1121.485474 1123.037109 1126.026367 1130.801392 1134.628418 1137.537598 1141.258789 1144.526611 1148.643555 1149.321655 1146.830566 1143.427246 1142.487061 1143.106201 1144.720581 1147.628052 1152.40332 1158.154663 1163.922241 1170.2854 1184.405273 1186.1698 1182.720337 1187.192871 1193.446045 1199.197876 1205.303833 1205.281372 1203.632324 1208.661621 1219.499512 1223.034058 1228.889526 1237.085205 1247.099731 1257.006104 1264.507446 1272.396729 1279.993286 1284.572388 1289.474487 1294.837769 1309.110596 1333.84729 1332.827026 1323.488037 1321.399048 1317.755493 1315.199463 1313.253052 1310.11377 1307.708984 1304.859863 1301.111206 1296.525269 1296.904175 1297.188354 1295.0354 1294.639648 1293.248779 1287.714233 1279.382935 1266.480225 1255.182251 1243.717407 1232.168457 1219.951172 1221.306152 1225.353271 1225.930054 1221.443726 1212.26416 1205.349609 1206.09375 1203.30188 1195.802612 1184.573242 1179.366943 1173.717407 1164.837036 1156.932861 1156.904907 1166.07019 1173.359009 1172.130249 1171.290771 1170.261963 1169.817871 1173.415894 1182.32666 1184.415405 1182.887939 1179.186768 1170.901733 1163.370483 1161.608032 1172.638916 1175.877808 1178.334717 1180.288818 1181.289917 1183.813721 1183.954712 1184.265869 1183.785034 1182.68335 1180.543457 1176.594116 1173.168823 1173.60791 1174.411987 1174.005493 1172.985596 1171.373901 1167.632812 1164.170532 1161.893799 1172.678589 1174.25415 1176.360962 1178.711914 1180.700562 1181.830933 1182.068726 1181.98938 1181.513306 1180.998779 1180.443848 1180.867798 1183.05896 1184.122437 1184.531494 1185.274048 1184.956177 1184.976807 1184.60083 1184.299561 1183.575073 1182.997437 1181.923584 1181.423218 1181.353271 1181.409668 1181.732544 1182.265503 1182.588989 1182.469849 1182.673096 1182.707153 1183.176636 1183.646729 1184.748291 1186.029053 1186.794556 1187.34314 1186.807861 1184.784546 1182.624146 1180.88623 1180.771606 1181.831787 1183.254272 1184.074707 1181.630737 1177.075439 1173.322632 1169.689209 1167.052246 1166.949707 1166.582764 1166.398071 1166.206543 1165.848999 1165.331543 1164.609619 1163.925781 1163.283447 1162.686157 1162.486328 1162.55896 1162.687134 1163.017212 1163.117798 1163.207886 1163.264038 1163.348022 1163.39624 1163.503418 1163.530762 1163.632935 1163.585205 1163.505127 1163.345337 1163.224243 1163.039917 1162.77417 1162.482422 1162.257568 1161.99585 1161.817017 1161.458252 1161.207642 1160.754517 1160.378418 1159.845947 1159.234985 1158.90625 1158.79248 1158.824585 1159.089355 1159.381348 1159.62207 1159.616089 1159.522461 1159.108887 1158.422607 1157.606079 1156.701538 1155.80188 1154.9729 1154.267944 1153.735718 1153.252441 1152.636963 1152.095825 1151.606934 1151.264526 1151.603394 1152.166016 1153.196045 1154.478882 1156.174438 1157.834595 1161.353149 1168.525146 1172.900757 1178.649048 1183.507202 1183.081177 1180.208496 1177.207886 1174.99231 1173.819824 1172.188965 1170.357544 1170.070801 1170.751465 1172.799927 1175.337891 1177.902832 1181.157837 1185.937622 1192.201416 1201.272583 1209.632812 1217.927856 1225.708618 1233.093994 1235.921997 1238.79248 1242.741821 1245.732666 1248.280151 1250.561768 1252.893677 1254.883301 1255.691528 1257.34668 1259.995605 1262.039307 1262.766113 1261.133545 1257.836914 1253.939209 1248.831421 1243.291382 1236.116943 1230.361206 1226.175781 1220.707275 1210.986816 1203.610107 1190.508545 1177.835449 1183.845947 1194.036499 1207.666382 1214.473022 1218.720947 1219.746094 1219.461914 1218.439575 1213.478882 1208.830444 1208.272705 1199.635132 1192.040771 1185.808594 1181.360107 1174.109009 1168.517212 1163.670532 1158.858032 1160.245117 1156.006348 1149.94104 1145.103149 1142.508301 1139.446289 1134.661865 1134.682129 1133.720581 1132.445801 1130.990601 1129.269531 1127.706055 1125.970703 1124.293579 1122.674072 1122.026733 1121.670044 1121.312744 1121.115112 1121.124268 1120.949097 1120.624512 1120.314941 1120.040283 1119.663452 1119.244263 1118.805054 1118.269531 1117.610107 1116.934692 1116.103271 1115.195679 1114.254883 1113.240845 1112.293091 1111.554443 1110.837646 1110.500244 1110.363403 1107.714844 1109.203003 1109.894775 1110.127686 1110.159424 1110.41687 1110.874512 1111.357422 1111.557617 1111.471313 1111.315674 1111.464722 1111.842407 1112.202637 1112.604004 1113.139771 1113.601685 1114.077026 1114.608643 1115.259888 1116.041382 1116.896606 1117.861694 1118.76416 1119.595215 1120.676147 1121.510254 1122.969971 1125.350098 1125.942383 1125.327637 1123.181152 1122.23877 1121.860474 1121.554932 1121.480713 1121.61084 1121.990356 1122.219238 1123.783813 1126.556885 1128.851807 1131.01001 1132.331543 1132.105103 1131.324097 1130.246216 1128.836548 1127.653809 1126.173462 1124.331055 1122.260254 1120.448608 1119.33374 1117.69519 1116.664917 1120.141113 1123.474121 1125.52124 1127.50708 1131.109619 1134.869141 1138.521606 1135.910156 1133.106201 1137.8396 1146.743774 1151.728271 1157.86499 1160.900635 1162.919678 1166.131958 1169.769897 1178.599487 1189.616455 1197.220703 1200.951416 1206.1698 1217.055664 1231.152588 1242.644409 1245.815674 1245.71814 1244.462036 1244.097534 1243.274414 1243.067383 1243.202759 1243.917358 1244.224731 1245.753174 1246.588623 1246.77002 1246.055542 1239.641602 1234.319092 1229.427002 1224.058228 1218.750122 1215.927856 1212.485962 1207.847656 1206.553101 1203.468872 1198.042603 1193.949463 1189.354614 1185.179443 1180.482544 1176.353149 1172.551514 1162.389771 1154.778809 1148.476807 1144.944092 1141.858521 1139.114136 1137.349121 1135.611206 1133.363525 1131.450317 1129.625854 1127.664551 1125.681519 1123.718994 1121.923096 1122.118774 1123.515137 1123.857544 1122.692383 1121.515015 1121.677734 1122.863647 1123.666626 1124.173706 1124.251953 1124.161377 1123.830688 1123.107178 1122.348022 1122.87915 1123.194458 1123.860474 1124.713867 1125.454468 1125.539795 1125.26355 1124.831177 1124.200806 1123.717285 1123.212036 1122.858643 1122.235107 1121.944458 1121.874878 1121.860107 1122.290039 1122.492798 1122.58252 1122.521973 1122.533325 1122.21936 1121.521973 1117.064331 1113.357544 1110.698853 1109.479126 1108.623291 1108.303955 1108.318604 1108.532349 1108.409058 1108.045166 1108.209595 1108.279541 1108.909302 1109.341797 1110.210205 1110.124146 1108.941284 1107.870605 1107.662354 1108.12854 1108.639893 1109.008179 1110.36853 1111.527588 1111.260742 1110.078735 1110.239258 1111.045776 1109.541992 1114.380127 1121.265503 1129.933716 1137.313477 1145.664673 1144.331177 1141.903076 1140.812256 1140.282471 1141.053223 1143.415527 1146.812378 1152.093994 1155.505493 1157.7771 1162.307251 1168.208008 1175.114502 1180.487549 1182.493164 1181.492188 1175.169189 1173.032715 1173.468018 1170.739258 1162.122314 1155.995117 1154.645752 1151.877075 1147.400513 1141.289917 1136.278442 1132.165039 1139.243652 1145.406006 1145.653687 1142.71106 1134.279663 1136.147095 1136.802246 1129.015259 1120.435669 1121.500977 1120.952759 -1098.191406 1098.790649 1099.473022 1100.072388 1100.546631 1101.015991 1101.63562 1102.340454 1103.088379 1103.892578 1104.503174 1105.006226 1105.567383 1106.164429 1106.751465 1107.321167 1107.752441 1108.276245 1108.758545 1109.192261 1109.707397 1110.493286 1111.266113 1112.245361 1113.233765 1114.199097 1115.137939 1116.186035 1117.419312 1118.430054 1119.523438 1120.74646 1121.933716 1124.577881 1128.627808 1134.572632 1141.957397 1147.97168 1151.863403 1159.782349 1161.473633 1154.530273 1148.178589 1143.458374 1142.132812 1142.791626 1144.299683 1146.512207 1151.497192 1157.442139 1162.812866 1168.815674 1181.524292 1182.366211 1178.268433 1179.708862 1185.213257 1188.710938 1188.899414 1189.735229 1199.550537 1209.271362 1213.704712 1218.045654 1227.195557 1236.471069 1246.043579 1253.623291 1260.691772 1270.243896 1281.034302 1285.868896 1291.519531 1298.54248 1309.595703 1338.624146 1353.540649 1339.472412 1331.253296 1326.606445 1323.626343 1321.447998 1319.44397 1316.052856 1311.227661 1306.528687 1303.014893 1301.203003 1300.067627 1299.533325 1298.616211 1296.176147 1289.931396 1275.035767 1264.508545 1258.844971 1251.15918 1243.205811 1239.49939 1232.99353 1236.890991 1235.632446 1227.830444 1217.803711 1218.514282 1216.199219 1209.53894 1201.070557 1193.060791 1182.682129 1174.325439 1165.279297 1157.486206 1157.86792 1157.924927 1168.9198 1171.882935 1171.940308 1171.219849 1170.35437 1172.353394 1180.209961 1185.006958 1184.828369 1182.856567 1176.886353 1171.642944 1165.936646 1171.012939 1176.7948 1181.286621 1182.654053 1183.623169 1184.585205 1184.907593 1184.900146 1184.589722 1183.810669 1181.853516 1179.608398 1177.393066 1176.570923 1176.436401 1175.726929 1174.398804 1172.519165 1170.46521 1168.121094 1163.028809 1172.693237 1174.93335 1177.480225 1180.428833 1182.87915 1183.11731 1182.925537 1182.709229 1182.2229 1181.404297 1181.4104 1183.723999 1185.726807 1187.406738 1188.629517 1189.765381 1189.481079 1189.265137 1188.583374 1187.39624 1186.285889 1184.57019 1182.616333 1181.979736 1181.778931 1181.941406 1182.229614 1183.045044 1183.544556 1184.187744 1184.706909 1185.872314 1186.45459 1186.747925 1187.809082 1188.823242 1190.354004 1192.196411 1192.014771 1189.197876 1183.523193 1182.061523 1182.190308 1183.317261 1184.1698 1184.479736 1181.968628 1176.496582 1171.876343 1168.44458 1167.563965 1167.474243 1167.36438 1167.223633 1166.988159 1166.638062 1166.024292 1165.224365 1164.545776 1164.089478 1163.57373 1163.104126 1163.106689 1163.503174 1163.870728 1164.182617 1164.398438 1164.599976 1164.717529 1164.786865 1164.850708 1164.926147 1164.9646 1164.89917 1164.689087 1164.484863 1164.303833 1163.973022 1163.517822 1163.151611 1162.81543 1162.454224 1162.029907 1161.63562 1161.154907 1160.656738 1160.165039 1159.393066 1158.897949 1158.78479 1159.023682 1159.412354 1159.704834 1159.886963 1159.995483 1159.91333 1159.739502 1159.382935 1158.68335 1157.828247 1156.976929 1156.155273 1155.398926 1154.689087 1154.127686 1153.569092 1152.983154 1152.434326 1151.910889 1151.565552 1152.266846 1153.064087 1154.175049 1155.328613 1156.848389 1158.335693 1161.683105 1167.807617 1169.636108 1170.873413 1178.647827 1181.453125 1180.609863 1179.116943 1177.719238 1176.377319 1174.665771 1173.010742 1172.014648 1170.445679 1171.730469 1173.92981 1176.400513 1179.624756 1183.311157 1193.649536 1201.353882 1209.779907 1218.128418 1226.172607 1232.895386 1233.187134 1238.273071 1242.171021 1243.722046 1249.019897 1252.605591 1255.400146 1258.004517 1259.418701 1261.271973 1263.824829 1265.779663 1268.065796 1268.974609 1264.12854 1256.835815 1250.657471 1245.164795 1234.357056 1226.493042 1218.300537 1213.63208 1205.615723 1191.789185 1180.389648 1187.106812 1202.807007 1205.972412 1206.62207 1217.234009 1221.469849 1222.421021 1221.46582 1220.708008 1216.774536 1207.161133 1200.815674 1195.193115 1185.108521 1178.905151 1171.593994 1168.13269 1163.712158 1161.2677 1157.790039 1149.124023 1149.284058 1147.876953 1144.591187 1142.184814 1139.032471 1135.933228 1134.405884 1133.361572 1132.520752 1131.206299 1129.689819 1128.020508 1126.392334 1124.752808 1123.490723 1122.554199 1121.93396 1121.497803 1121.319214 1121.30188 1121.301636 1121.116089 1120.870483 1120.471558 1120.137329 1119.68457 1119.184692 1118.563232 1117.948364 1117.184326 1116.25415 1115.341919 1114.234009 1113.289917 1112.352173 1111.466187 1110.594482 1109.450073 1108.521484 1110.226807 1110.332153 1110.643677 1110.770874 1110.847534 1111.131836 1111.457275 1111.819946 1112.063599 1112.133911 1112.154297 1112.421387 1112.573975 1112.872925 1113.221069 1113.734985 1114.227661 1114.844849 1115.428345 1116.064819 1116.794922 1117.704468 1118.483643 1119.228027 1120.033447 1120.708984 1121.476074 1123.296387 1126.757568 1127.996216 1127.045776 1124.129395 1122.067749 1122.708374 1122.473633 1121.983032 1121.591431 1121.672363 1121.989746 1122.652466 1125.422852 1128.838379 1132.303589 1134.146362 1134.646973 1134.268066 1133.146118 1131.78833 1130.404053 1129.043091 1126.993408 1124.4552 1123.092651 1122.31665 1119.450684 1117.129395 1119.358765 1121.864624 1123.345947 1124.302002 1127.286255 1131.121826 1131.998169 1131.897949 1134.224365 1139.269531 1145.805176 1148.569336 1151.462402 1154.602783 1155.523193 1159.948975 1171.318359 1177.429321 1185.301147 1193.35083 1198.571289 1204.356689 1212.891113 1224.070557 1237.213623 1245.245361 1245.887939 1244.865845 1244.427002 1244.21106 1244.032715 1243.388306 1243.502441 1243.885376 1245.837891 1247.187866 1247.458984 1247.123535 1242.411377 1237.208862 1232.487793 1226.545898 1221.404175 1218.331543 1214.950439 1212.033203 1210.093384 1207.252075 1201.574219 1197.996826 1192.409912 1185.193115 1179.140869 1172.722778 1169.564209 1159.275513 1152.125244 1146.183594 1144.666504 1143.238647 1142.27771 1139.526245 1135.981079 1133.691406 1132.313965 1130.731567 1128.373657 1125.640137 1123.661377 1122.632568 1124.016357 1124.973511 1125.020874 1124.310181 1123.111694 1122.525391 1123.229248 1124.239746 1124.71167 1124.706299 1124.535278 1124.119263 1123.606445 1123.343994 1124.107056 1125.620728 1126.328247 1126.910522 1126.962769 1126.573975 1125.84729 1125.079712 1124.061279 1123.285767 1122.730103 1122.286377 1121.975342 1120.385986 1120.063843 1120.407715 1121.84082 1122.756348 1122.653442 1122.760376 1122.733765 1122.389404 1122.011475 1117.930908 1114.182861 1111.710449 1110.020508 1108.547607 1107.745728 1107.110718 1106.638062 1106.331177 1106.175171 1106.211426 1106.498413 1107.021729 1107.731201 1108.439331 1108.53125 1107.686035 1106.969116 1106.817627 1107.064087 1107.460327 1108.141113 1109.520996 1110.845215 1110.80249 1109.850342 1110.026978 1110.195312 1109.426636 1113.061401 1118.849731 1124.954956 1133.984131 1144.933105 1148.454346 1148.379761 1144.687378 1143.021118 1147.750854 1147.431763 1148.220947 1157.086792 1161.967529 1169.70752 1173.248291 1176.994995 1184.371216 1194.994141 1187.874634 1179.78064 1170.649658 1169.563843 1171.125 1170.764282 1157.402344 1145.585205 1143.536255 1143.055542 1139.31665 1134.055542 1129.808228 1127.930664 1135.428101 1139.828979 1139.765625 1138.072632 1132.613159 1130.488037 1128.391113 1122.717529 1116.887695 1112.687256 1113.742065 -1098.224609 1098.88501 1099.497192 1100.051392 1100.528198 1101.134399 1101.781982 1102.501709 1103.304443 1104.123901 1104.826294 1105.417603 1105.929932 1106.502075 1107.14978 1107.735962 1108.236572 1108.709717 1109.218018 1109.780396 1110.165894 1110.671387 1111.742676 1112.653198 1113.619141 1114.630371 1115.633057 1116.834595 1117.890503 1119.155029 1120.126465 1121.147583 1122.684692 1125.616699 1130.156372 1134.47522 1140.96167 1145.986816 1147.094116 1149.25415 1148.240845 1145.818237 1142.328003 1140.672852 1141.252686 1142.458618 1144.236572 1146.232422 1149.831177 1155.297241 1160.181885 1165.702881 1172.140259 1174.175659 1170.222046 1174.892822 1177.868774 1180.360962 1180.496704 1187.372925 1197.680786 1204.39624 1209.918213 1215.653564 1221.544067 1229.782593 1239.75 1247.270142 1253.488647 1264.232788 1280.403931 1285.72168 1292.570557 1300.912354 1313.339478 1343.054565 1355.584717 1358.40564 1351.706665 1343.221802 1332.907227 1327.39856 1324.887695 1321.719482 1317.411255 1311.03064 1305.057861 1303.360107 1303.404053 1303.275513 1303.072021 1299.105347 1290.003052 1281.508545 1279.108032 1273.49292 1269.631226 1263.260376 1259.14502 1245.28479 1247.408447 1245.648315 1234.915771 1231.385498 1233.12439 1227.692993 1217.124146 1206.123291 1198.384277 1182.782104 1173.853027 1168.567261 1162.619507 1162.303955 1162.157837 1166.470581 1171.309082 1172.059326 1171.895264 1171.025391 1170.803223 1177.803345 1184.421753 1185.224365 1184.606934 1179.969238 1173.38208 1169.764771 1173.318848 1178.610107 1182.73645 1184.267578 1184.688599 1185.313965 1185.572144 1185.580444 1185.363159 1184.512451 1183.315308 1181.655762 1179.874878 1179.185669 1178.66748 1177.588501 1176.103638 1174.307861 1172.720947 1171.792114 1167.67041 1172.307739 1175.825317 1178.849243 1181.358643 1183.52417 1184.616821 1184.499756 1183.766602 1183.069702 1182.429688 1183.848267 1186.678955 1188.733032 1191.16687 1192.963989 1194.750977 1194.444458 1194.218994 1193.414795 1191.685547 1189.559692 1187.169067 1184.854492 1183.043701 1182.46521 1182.396118 1182.62793 1183.526245 1185.422241 1187.002441 1188.980469 1191.143921 1191.477051 1190.951538 1191.081421 1191.817383 1193.38501 1195.861938 1196.052612 1194.426636 1186.509399 1182.865723 1183.266602 1183.977173 1184.69519 1184.704956 1180.49231 1175.140381 1170.488281 1168.04126 1168.094238 1168.134155 1168.334595 1168.271851 1168.018799 1167.588989 1166.84729 1165.852661 1164.983276 1164.562622 1164.112305 1163.570068 1163.932373 1164.443481 1164.983521 1165.432007 1165.789551 1165.985718 1166.238037 1166.294556 1166.367798 1166.413696 1166.349854 1166.195923 1166.065918 1165.824829 1165.470581 1164.995239 1164.466797 1163.978149 1163.463135 1162.99646 1162.502197 1161.96228 1161.473999 1160.809692 1160.151733 1159.262817 1158.811401 1158.966309 1159.592651 1159.956665 1160.187866 1160.283447 1160.264282 1160.099976 1159.878906 1159.561646 1158.849731 1158.108765 1157.233643 1156.462524 1155.739746 1155.152344 1154.515625 1153.927612 1153.329834 1152.749146 1152.192383 1151.86731 1152.401123 1153.443604 1154.588013 1155.922729 1157.760498 1160.711304 1165.643311 1171.207153 1172.853149 1174.643555 1178.618164 1182.521606 1182.580322 1181.901855 1180.851196 1179.302002 1177.983765 1176.311401 1174.921509 1173.065186 1170.838135 1171.787354 1174.936401 1178.845093 1184.88208 1191.612549 1198.547363 1205.869263 1213.266968 1219.920898 1226.195068 1232.246948 1240.670166 1245.391113 1247.733643 1251.428711 1254.653687 1256.819092 1260.01123 1262.499023 1264.93457 1267.325928 1271.487793 1274.452637 1274.610474 1269.336426 1259.243042 1251.555542 1245.635132 1232.822632 1224.651855 1215.520752 1204.613281 1199.655518 1185.979736 1185.752075 1205.172607 1215.075073 1218.715576 1218.917358 1221.146851 1223.935669 1224.38623 1221.984009 1221.061646 1218.198242 1211.015015 1201.897705 1189.204834 1180.425171 1171.927856 1168.602905 1164.974854 1158.181152 1157.892944 1153.998169 1147.690918 1147.04126 1146.08606 1145.353882 1142.59375 1139.244141 1136.454224 1134.552612 1133.599731 1132.880615 1131.821777 1130.246216 1128.481201 1126.852539 1125.438599 1124.165161 1123.183228 1122.172241 1121.696655 1121.581299 1121.645142 1121.717651 1121.637085 1121.453125 1121.004517 1120.541382 1120.050659 1119.527588 1118.963989 1118.193359 1117.357544 1116.483398 1115.499878 1114.469604 1113.445068 1112.497925 1111.592285 1110.662109 1109.152954 1110.292969 1110.801147 1110.897217 1111.088135 1111.349365 1111.5271 1111.784424 1112.09729 1112.298096 1112.581665 1112.744385 1112.889648 1113.161987 1113.427002 1113.569214 1113.90625 1114.30957 1114.899414 1115.520996 1116.166504 1116.880493 1117.549927 1118.203613 1118.940796 1119.711914 1120.484497 1121.179077 1121.60791 1122.823853 1129.793213 1131.035034 1129.488647 1126.891113 1125.005615 1124.982788 1124.512695 1123.414429 1121.953613 1121.812256 1121.908691 1122.022827 1124.218506 1127.54834 1132.152588 1135.429688 1134.812988 1134.638672 1134.760986 1134.44458 1133.474731 1132.154663 1129.794067 1127.484619 1125.900513 1124.32373 1121.135864 1117.717285 1118.702759 1119.680298 1120.75061 1121.345581 1124.244507 1127.855225 1130.076294 1132.240601 1135.383789 1138.165894 1141.986572 1144.348267 1145.500122 1146.941162 1154.052856 1160.1698 1167.748291 1173.11438 1179.82019 1185.602417 1197.018066 1202.739624 1209.921631 1220.030518 1230.553223 1239.358276 1243.986694 1244.660767 1244.668823 1244.770996 1244.729248 1244.414795 1244.493652 1244.693848 1247.067139 1247.967163 1248.227905 1247.855835 1244.643188 1239.79126 1234.717896 1229.40979 1224.560791 1220.733765 1217.064819 1214.636841 1211.862061 1208.058838 1203.066162 1196.262451 1195.687256 1185.91626 1177.589233 1170.364136 1166.833374 1159.241821 1149.337524 1147.534668 1147.12439 1145.48938 1145.605103 1143.649048 1138.997681 1135.540894 1133.807983 1132.872437 1128.667969 1125.615234 1124.437866 1125.093506 1126.388184 1127.688599 1127.512207 1126.713745 1125.675537 1125.006104 1125.101807 1125.343872 1125.459351 1125.419556 1125.104736 1124.909668 1124.505615 1124.470093 1126.83313 1129.344727 1129.809326 1129.336304 1128.608765 1127.656738 1126.511353 1125.022095 1123.632324 1122.68335 1122.175415 1121.690308 1120.726807 1119.355835 1118.722778 1118.45459 1118.967773 1119.889526 1121.017456 1121.232056 1121.031616 1121.196167 1119.46228 1116.777466 1114.051392 1111.785156 1110.229858 1108.814575 1107.342651 1106.022339 1104.69519 1103.819946 1103.502197 1103.815186 1104.353394 1105.122681 1105.562744 1105.951294 1105.999634 1105.652466 1105.400391 1105.437134 1105.871582 1106.418457 1107.278809 1108.712036 1109.561523 1109.674316 1108.953003 1109.641846 1109.028442 1109.122192 1112.428467 1116.246094 1120.854858 1129.529541 1137.0802 1138.285767 1139.464966 1138.235718 1139.463623 1140.783813 1140.188965 1143.995972 1152.421143 1159.582764 1165.204834 1170.892212 1177.073242 1184.908081 1193.476929 1181.844971 1171.942871 1164.701294 1159.993042 1162.359375 1162.874023 1159.416992 1145.860474 1135.772949 1135.593018 1134.016602 1128.409546 1123.944214 1121.294434 1132.007935 1136.660156 1135.346802 1133.493164 1128.35376 1124.533936 1123.288696 1111.626099 1109.571411 1108.266357 1108.130005 -1098.12439 1098.87207 1099.470337 1099.977051 1100.585938 1101.184937 1101.901611 1102.653809 1103.578857 1104.444214 1105.158203 1105.884155 1106.31604 1106.853516 1107.413452 1108.096436 1108.697754 1109.242432 1109.724976 1110.275513 1110.892334 1111.474121 1112.220215 1113.168945 1114.083496 1115.078491 1116.206543 1117.389648 1118.56958 1119.754639 1121.089844 1121.686523 1122.436035 1126.044189 1129.76062 1132.647949 1135.430542 1139.055176 1140.42688 1140.236206 1138.825928 1135.330933 1134.726685 1137.960083 1140.315063 1141.991211 1143.835815 1145.388916 1147.46582 1152.341187 1156.795776 1160.104248 1165.653198 1166.890869 1167.388306 1170.104858 1169.952271 1172.729492 1179.253662 1188.899414 1197.573608 1200.922729 1206.687988 1209.031738 1215.525391 1225.408691 1234.427612 1242.22229 1249.231201 1258.675293 1274.955811 1284.234131 1292.281616 1301.12439 1316.998901 1339.39563 1347.592651 1354.530396 1357.109497 1359.823486 1358.494751 1341.956787 1330.644287 1326.985962 1322.616211 1316.473267 1312.184204 1309.038696 1309.165405 1310.398804 1309.555542 1305.975708 1296.658813 1293.985718 1289.446167 1283.896484 1280.963501 1274.22168 1267.786865 1257.382935 1261.962769 1259.733154 1249.575073 1251.519775 1247.721436 1239.79895 1225.437866 1208.878418 1196.998413 1179.907227 1175.924805 1170.421997 1170.190063 1170.405273 1168.854492 1168.491455 1169.75647 1171.22583 1172.119385 1172.391235 1170.813965 1175.410522 1183.443848 1184.950928 1185.157715 1183.305908 1178.302368 1174.552856 1177.126587 1180.774048 1183.888794 1184.832886 1185.574219 1186.098633 1186.414429 1186.377319 1185.906982 1185.192261 1183.93396 1182.989624 1181.724487 1181.320801 1181.187012 1179.651489 1177.619751 1175.649658 1173.818359 1172.580322 1170.516479 1173.282593 1176.5896 1180.088745 1182.561401 1184.034668 1185.418091 1185.887573 1185.602539 1184.957031 1185.472168 1187.635132 1189.988403 1192.279175 1194.5625 1198.356079 1203.503174 1202.946777 1201.389282 1198.896729 1196.101074 1193.706299 1191.848511 1188.959106 1185.566528 1184.614136 1184.513184 1183.140625 1183.506714 1187.34021 1190.244385 1193.814453 1197.354248 1196.536255 1194.184692 1194.722412 1194.598022 1193.549194 1194.123535 1193.686157 1191.411621 1186.817139 1183.693237 1182.033936 1182.367798 1184.12207 1184.19519 1177.728027 1172.426636 1168.577026 1168.897583 1169.218872 1169.34375 1169.377808 1169.328125 1169.219482 1168.791504 1167.838379 1166.424316 1165.306763 1164.724731 1164.325562 1164.493774 1164.847168 1165.560913 1166.296387 1166.891357 1167.30127 1167.637573 1167.765747 1167.853149 1167.823364 1167.852051 1167.698242 1167.574585 1167.262939 1166.936646 1166.522461 1166.087524 1165.506348 1164.893311 1164.414062 1163.770508 1163.190063 1162.606567 1161.939697 1161.270752 1160.515747 1159.45752 1158.786255 1159.555298 1160.092407 1160.471436 1160.620239 1160.660034 1160.574341 1160.362549 1160.047852 1159.569092 1158.963013 1158.269775 1157.57605 1156.812134 1156.184204 1155.636108 1155.132935 1154.467773 1153.820801 1153.116089 1152.577637 1152.334595 1152.286743 1153.494751 1154.658936 1156.008057 1158.004761 1161.446045 1166.659546 1171.828247 1175.868774 1179.738647 1183.348755 1184.95752 1185.196533 1184.477661 1184.021362 1182.619751 1181.292969 1179.500122 1178.167725 1176.633667 1174.925293 1174.867065 1175.744385 1177.006592 1182.332642 1187.473389 1192.736328 1197.821899 1206.340942 1216.366821 1225.653198 1235.4021 1243.504395 1248.123169 1251.935425 1255.473999 1257.692871 1259.369263 1262.325195 1264.977417 1267.29126 1274.880981 1279.431152 1280.147461 1278.567505 1272.418091 1260.625488 1251.784546 1244.131958 1230.084717 1222.138428 1210.039673 1194.429688 1188.351074 1191.898926 1199.376953 1214.959229 1222.128418 1222.994141 1223.391846 1225.164307 1228.734497 1230.100708 1219.121582 1217.075195 1212.318115 1208.379517 1201.111572 1192.116699 1183.067749 1173.807373 1171.204468 1168.324219 1165.396362 1162.152588 1159.226318 1155.669312 1150.939575 1148.213257 1147.027954 1143.509521 1139.713745 1136.94104 1135.285034 1134.759766 1134.01062 1132.747314 1130.769409 1129.024902 1127.471191 1126.069946 1124.830688 1123.743164 1122.564819 1121.890137 1121.803101 1122.117554 1122.114258 1122.024658 1121.900269 1121.470337 1121.020996 1120.380615 1119.911865 1119.25 1118.534546 1117.662109 1116.74231 1115.787598 1114.700317 1113.672485 1112.792847 1111.901489 1111.093018 1110.38623 1109.63623 1110.702271 1111.031372 1111.246094 1111.639771 1111.884888 1112.189941 1112.451904 1112.771484 1113.041138 1113.2854 1113.494995 1113.831909 1114.088257 1114.374634 1114.582397 1114.97522 1115.397583 1116.057861 1116.772095 1117.443604 1118.163818 1118.867676 1119.555542 1120.245483 1121.122437 1122.172363 1123.887451 1128.014038 1134.360474 1134.163208 1132.609009 1130.771362 1128.786499 1128.346802 1128.0625 1126.742676 1124.395142 1123.529053 1122.631958 1121.999023 1122.059326 1124.11731 1128.598022 1132.160889 1132.866699 1133.218872 1133.900879 1135.052246 1135.468872 1134.900635 1132.814453 1130.376709 1128.281006 1126.249268 1123.265137 1117.656006 1118.657837 1118.767578 1120.885132 1119.703613 1122.974854 1125.640137 1129.348267 1132.875244 1136.046753 1136.644897 1137.871338 1144.858398 1148.17981 1152.835205 1155.31311 1158.028076 1164.11377 1169.467529 1176.804932 1185.218872 1194.915405 1199.407227 1206.890625 1214.119263 1222.093384 1230.075562 1234.831421 1240.420044 1244.237305 1244.734619 1245.172119 1245.934448 1246.522705 1247.229004 1248.000732 1248.266846 1248.482544 1248.05188 1245.73645 1241.761841 1236.434692 1230.841431 1226.633545 1221.570435 1218.337524 1217.321289 1214.370483 1209.185303 1206.298462 1199.680542 1196.69165 1190.248291 1182.401978 1178.332764 1173.596436 1160.823853 1157.449585 1156.803101 1153.780762 1150.873901 1149.338135 1147.508667 1143.930786 1138.155273 1136.1604 1134.25354 1128.416382 1126.284546 1126.821411 1127.942993 1129.961426 1131.65979 1131.049438 1129.753052 1128.518555 1127.680664 1127.238403 1126.92041 1126.560547 1126.266724 1125.91333 1125.640991 1125.248535 1126.816895 1131.018433 1134.546265 1133.220825 1131.496216 1130.122681 1128.957642 1127.372681 1125.147827 1123.036987 1122.101074 1121.234985 1120.132202 1118.933472 1117.873901 1116.913574 1116.357544 1115.726929 1115.539307 1116.30542 1117.158813 1117.568848 1116.923096 1115.042969 1114.435059 1113.342407 1112.006348 1110.358521 1109.306519 1107.055054 1105.144531 1103.010254 1100.338989 1100.141479 1101.223267 1102.124268 1102.903931 1103.404663 1103.720093 1103.596802 1103.330444 1103.273804 1103.772705 1104.395386 1105.306885 1106.229492 1107.262451 1107.833496 1108.05127 1107.792847 1107.826782 1107.997681 1108.728271 1110.93042 1114.642334 1119.146851 1124.256958 1130.274536 1130.114258 1130.465332 1131.063232 1132.154663 1132.668701 1132.286987 1134.624878 1143.962891 1149.978027 1156.939209 1164.985718 1172.078491 1183.9021 1186.734131 1176.658569 1165.83606 1158.288696 1153.687012 1154.752319 1156.010254 1151.479492 1142.698242 1133.022095 1129.423096 1127.012085 1122.905029 1120.554932 1120.001343 1127.194458 1133.993896 1132.113525 1128.14502 1125.021362 1120.442017 1120.685547 1111.716797 1107.495361 1105.000244 1103.835083 -1098.051392 1098.849487 1099.401123 1100.115234 1100.69812 1101.281982 1102.074829 1102.816162 1103.823975 1104.746582 1105.54126 1106.207275 1106.855347 1107.246826 1107.783447 1108.303101 1109.068726 1109.73645 1110.25293 1110.915405 1111.502197 1112.209473 1112.844971 1113.688477 1114.626953 1115.699219 1116.814087 1117.953613 1119.161743 1120.474243 1121.833984 1123.043579 1124.138672 1125.958984 1128.47522 1131.060303 1133.098877 1133.987305 1134.761353 1134.317139 1133.648193 1134.017212 1135.200806 1137.281982 1139.613037 1141.70459 1143.2677 1144.711182 1146.494873 1149.975952 1153.713501 1156.508545 1158.922852 1160.278687 1163.342896 1166.531006 1169.089844 1173.787476 1181.098999 1185.180664 1190.832886 1192.937134 1192.278931 1200.576416 1209.148682 1220.774048 1227.361206 1232.507568 1244.067383 1254.074707 1265.009644 1279.362671 1289.739502 1299.834717 1313.345093 1324.473389 1330.900146 1340.55249 1347.945068 1354.320312 1355.92981 1352.1604 1341.436157 1332.169312 1329.924316 1328.492798 1325.887573 1324.419678 1322.181274 1320.287476 1317.465454 1311.07666 1304.846802 1301.431396 1297.084961 1292.668335 1287.371338 1280.916626 1274.251953 1267.464111 1268.013794 1269.073364 1263.636597 1258.622559 1250.301758 1240.578247 1226.094482 1207.525757 1195.564453 1183.230103 1179.078125 1173.472412 1173.648315 1173.532104 1172.209595 1170.069458 1169.757324 1170.277588 1170.911743 1173.896362 1173.388794 1177.770142 1183.303955 1184.834961 1185.330322 1185.061279 1183.934814 1181.454224 1180.98877 1182.73584 1184.650269 1185.512329 1186.322388 1186.978394 1187.162476 1187.093506 1186.634033 1185.893799 1184.881226 1184.154541 1183.550293 1183.434692 1183.440674 1181.615479 1178.906006 1176.616455 1174.803711 1173.171631 1171.056519 1173.305176 1177.48584 1181.063354 1183.490234 1185.105103 1186.399658 1187.104736 1187.740845 1188.8479 1190.651733 1192.624146 1194.227173 1194.749023 1202.070312 1209.585815 1212.494995 1212.075806 1209.705444 1207.45166 1203.937012 1200.086426 1196.961182 1194.370972 1190.97522 1188.385498 1187.436279 1186.06665 1185.983276 1189.870361 1193.089722 1196.519897 1206.187622 1207.946533 1206.726562 1202.141479 1196.109741 1193.732056 1193.24292 1191.444458 1186.071411 1183.078491 1182.687988 1180.55835 1178.447388 1178.856445 1175.553711 1170.66394 1169.307251 1170.349609 1170.690674 1170.546021 1170.345703 1170.276978 1170.376099 1170.371338 1170.070923 1169.145508 1167.060303 1165.499146 1165.077637 1165.249146 1165.635132 1166.177734 1166.927612 1167.765381 1168.503418 1169.005493 1169.244629 1169.27832 1169.202515 1169.159302 1169.050415 1169.10083 1168.830811 1168.467651 1168.05603 1167.535522 1167.073975 1166.500366 1165.961426 1165.340454 1164.658936 1164.092285 1163.397705 1162.655762 1161.930298 1161.15332 1160.389893 1159.973999 1160.223511 1160.605103 1160.949219 1161.065552 1161.091675 1160.85498 1160.522461 1160.019531 1159.436279 1158.952271 1158.354492 1157.696777 1157.260254 1156.666504 1156.068359 1155.642578 1154.980225 1154.275146 1153.591553 1153.013306 1152.811157 1152.530762 1153.438721 1154.782349 1156.178223 1158.011963 1161.119507 1166.388672 1171.002686 1176.251099 1181.746826 1184.844238 1186.255615 1186.85022 1187.471436 1187.172729 1186.348145 1184.467163 1182.317017 1181.515137 1180.501587 1179.7146 1181.673218 1183.220581 1182.422607 1180.792969 1184.046753 1190.090942 1197.624512 1208.79895 1218.393677 1228.219604 1236.338989 1244.035767 1249.198364 1254.425049 1258.008057 1260.357422 1262.439941 1265.33252 1268.030518 1274.209839 1282.740723 1282.24353 1280.494385 1278.888184 1272.514648 1260.85022 1249.843018 1235.794189 1225.778564 1214.457642 1193.374756 1194.562378 1206.938965 1213.079102 1214.008301 1219.946167 1223.674072 1225.633667 1226.609253 1228.106812 1231.626587 1232.989258 1228.748779 1220.486206 1211.828003 1200.088257 1194.359375 1186.413696 1185.20166 1185.276855 1180.613281 1174.297852 1171.918091 1166.03186 1161.467529 1158.931152 1149.754761 1146.110474 1145.470703 1142.78186 1139.074585 1136.138916 1135.220215 1134.80481 1134.671875 1133.505127 1131.188477 1129.532104 1128.122559 1126.727539 1125.360229 1124.12439 1122.84082 1122.067627 1122.183838 1122.601929 1122.689331 1122.576294 1122.295288 1121.794556 1121.280029 1120.7323 1120.146606 1119.529785 1118.832642 1118.098511 1117.174683 1116.236206 1115.146484 1114.040283 1113.149902 1112.267456 1111.386108 1110.212891 1109.802734 1110.541382 1111.056763 1111.417603 1111.737427 1112.12793 1112.486694 1112.661865 1113.112793 1113.466309 1113.804321 1114.067261 1114.387207 1114.723755 1115.054565 1115.285156 1115.643921 1116.05896 1116.547729 1117.204346 1117.905518 1118.681519 1119.385986 1119.995972 1120.611816 1121.333862 1122.78894 1126.831909 1132.743774 1135.776489 1135.731079 1134.975708 1133.462036 1131.202637 1131.057373 1132.640259 1133.693848 1130.551514 1127.648315 1125.86438 1124.543213 1122.658447 1121.927734 1124.0625 1128.990845 1131.371826 1132.4375 1133.932251 1135.242798 1135.810059 1135.7677 1134.608521 1132.293701 1131.25415 1130.36145 1127.351685 1123.575562 1121.343872 1122.775146 1123.401245 1121.37793 1120.802856 1124.780151 1128.930542 1133.047485 1135.61792 1134.513428 1136.045654 1144.507202 1152.83252 1159.987549 1159.214722 1158.255615 1161.444946 1169.345947 1174.441528 1181.127563 1185.41687 1194.830078 1201.341675 1207.142944 1211.608521 1214.539795 1217.934082 1225.033203 1233.881348 1240.959595 1244.181641 1246.806274 1247.642334 1247.896729 1248.242432 1248.024414 1248.384399 1248.237793 1246.306519 1243.4552 1238.714722 1232.25769 1230.189819 1225.644653 1222.096191 1221.07373 1218.696533 1212.685791 1206.494141 1199.647095 1194.721191 1191.568726 1187.192139 1181.583618 1172.008057 1164.925049 1163.923096 1162.796021 1159.210938 1155.206177 1151.026489 1148.151245 1144.559937 1138.844116 1136.004028 1133.046997 1128.40686 1129.057129 1130.031738 1131.360107 1133.562012 1134.927612 1133.976562 1132.288452 1130.866821 1129.755493 1129.103027 1128.456665 1127.850708 1127.171875 1126.862183 1126.56189 1126.795166 1129.585938 1133.632812 1135.103027 1134.477905 1132.641235 1131.072998 1130.40332 1128.831299 1125.334229 1122.758179 1121.201538 1119.820557 1118.355835 1116.777344 1115.652466 1115.106934 1114.39978 1112.865967 1109.788696 1111.599609 1113.037964 1114.033936 1113.347168 1109.760742 1112.120239 1112.649902 1112.071045 1110.832031 1109.130493 1106.802124 1104.47998 1101.827026 1098.850342 1097.841309 1098.660156 1100.032104 1100.947021 1101.590576 1101.736328 1101.477295 1100.819336 1100.740845 1101.588257 1102.884521 1103.929199 1104.886597 1105.67334 1106.180298 1106.37561 1106.502075 1106.683228 1107.17627 1108.114014 1109.472778 1111.899536 1114.904053 1119.508301 1123.055298 1121.45874 1124.540894 1122.948853 1124.046631 1123.855103 1130.845093 1132.440308 1134.830078 1145.691528 1154.840942 1163.499146 1173.920166 1184.110474 1181.715332 1169.409546 1161.172729 1153.483154 1146.125366 1148.829102 1149.317261 1145.438965 1137.234131 1129.480713 1123.156006 1124.031494 1119.864868 1116.626709 1116.013184 1122.071167 1127.355713 1126.354858 1121.562866 1122.63147 1118.687622 1111.407959 1110.530273 1106.363892 1101.731323 1098.303223 -1097.880859 1098.651001 1099.452881 1100.123779 1100.787598 1101.426758 1102.208374 1103.056274 1103.933838 1104.993774 1105.802612 1106.587036 1107.206177 1107.798706 1108.279053 1108.783447 1109.275269 1110.035645 1110.811401 1111.504395 1112.080566 1112.741943 1113.410889 1114.157593 1115.0979 1116.145752 1117.236572 1118.280396 1119.552979 1120.799194 1122.003784 1123.445679 1124.719482 1126.020508 1127.841797 1129.755249 1131.281494 1132.187378 1132.751709 1133.125366 1133.677734 1134.943237 1136.304688 1137.712036 1139.542114 1141.333984 1142.953125 1144.412598 1145.792236 1147.996704 1151.130493 1154.523804 1156.532959 1157.901245 1161.260742 1164.718262 1168.017944 1171.32312 1174.48938 1178.36853 1180.170654 1183.574829 1186.293579 1194.104492 1199.295288 1209.552856 1223.252197 1238.176025 1249.9104 1259.684082 1268.985107 1278.38269 1289.738037 1300.528076 1308.9823 1314.674683 1315.551147 1318.794922 1322.933838 1330.673584 1337.101685 1333.828491 1329.371826 1329.180298 1331.859253 1333.532837 1333.900269 1333.167847 1329.364868 1323.111694 1318.740356 1314.25708 1309.027222 1306.823975 1304.080444 1298.909546 1293.461792 1286.999146 1279.161865 1268.918457 1265.156982 1267.587158 1260.398193 1252.949463 1243.009155 1231.394653 1218.780029 1204.995972 1197.014282 1186.570435 1181.79895 1180.832642 1178.127686 1174.601074 1171.315552 1170.285767 1170.213013 1171.140869 1172.976929 1175.025269 1177.056152 1179.596313 1181.525757 1184.241821 1185.839355 1185.989502 1185.194214 1183.525757 1183.67395 1183.974243 1185.591675 1186.686279 1187.407837 1187.841431 1187.956299 1187.722046 1187.328491 1186.619751 1185.863525 1185.153442 1184.495972 1184.167603 1183.522461 1181.554443 1179.191772 1177.160522 1175.153442 1173.057861 1170.534302 1173.625 1178.253052 1181.830322 1184.328491 1185.862915 1187.195312 1188.393066 1190.102051 1192.045898 1194.062378 1197.203369 1202.609741 1205.032837 1212.346191 1220.007812 1220.714355 1218.824219 1213.741943 1211.306519 1210.118774 1208.697754 1205.371826 1200.283081 1195.302368 1192.220703 1190.739624 1190.309692 1191.785034 1193.653198 1196.705688 1204.310791 1208.808716 1208.776245 1209.660889 1208.167358 1199.021729 1196.143311 1195.954956 1193.751953 1188.519043 1184.556519 1182.955444 1178.828979 1175.233276 1172.259033 1170.09082 1171.058472 1171.418579 1171.405396 1171.324463 1171.322876 1171.203857 1171.143799 1171.145264 1171.115356 1171.134766 1170.883423 1168.077759 1165.701172 1165.866455 1166.395264 1167.00769 1167.605957 1168.384277 1169.208862 1169.896851 1170.395752 1170.64209 1170.614258 1170.324341 1170.228394 1170.367798 1170.231445 1170.048584 1169.537964 1169.03418 1168.450317 1167.926025 1167.358643 1166.812988 1166.1427 1165.54248 1164.831299 1164.108276 1163.346558 1162.686157 1162.058228 1161.473877 1161.127441 1161.04895 1161.205322 1161.479248 1161.608032 1161.493286 1161.197266 1160.77356 1160.274414 1159.566772 1158.947144 1158.488159 1158.077881 1157.62915 1157.200317 1156.651855 1156.05542 1155.341309 1154.735107 1154.020996 1153.520264 1153.138916 1152.81189 1153.550293 1155.091309 1156.74292 1157.865601 1159.913086 1165.383545 1169.424805 1173.766235 1180.145508 1184.739746 1186.484253 1187.90918 1190.063721 1191.410522 1190.720825 1188.900879 1186.738403 1185.398926 1184.501343 1182.568359 1184.663574 1186.980347 1187.662598 1186.119629 1185.031616 1187.368896 1195.548096 1206.302002 1216.483398 1225.46167 1234.154541 1241.939575 1247.706177 1253.594482 1258.098633 1261.154175 1264.878784 1268.129761 1273.217896 1280.281372 1283.464966 1282.530273 1279.902832 1277.683472 1270.364746 1259.994751 1249.274658 1228.347534 1214.624512 1197.519043 1201.821045 1208.535156 1219.505371 1224.229248 1224.738403 1224.831055 1227.646851 1228.766968 1228.986938 1229.261353 1230.216553 1231.691772 1227.615845 1221.273315 1208.69397 1199.17041 1190.323853 1183.873901 1177.702148 1179.799438 1177.724365 1172.466309 1170.443237 1164.420532 1158.687134 1153.325928 1147.359985 1144.96875 1143.536011 1141.552002 1138.253174 1134.391235 1134.182617 1133.911865 1133.56958 1132.81665 1131.398438 1130.109863 1128.787354 1127.415894 1125.973267 1124.548462 1122.97229 1122.157837 1122.792603 1123.295532 1123.345337 1123.188843 1122.735352 1122.173584 1121.80188 1121.208496 1120.471313 1119.75354 1119.095337 1118.48877 1117.658447 1116.721802 1115.613037 1114.608154 1113.623779 1112.829102 1111.941895 1110.850952 1109.833008 1110.016235 1110.837158 1111.322266 1111.720093 1112.133545 1112.530396 1113.034668 1113.494263 1113.9021 1114.188965 1114.552979 1114.862427 1115.295898 1115.666382 1116.057983 1116.313721 1116.706177 1117.164429 1117.682861 1118.299072 1119.111328 1119.856934 1120.574585 1121.165894 1121.436279 1121.758545 1123.768188 1130.391968 1135.570312 1136.255859 1135.753418 1134.813965 1132.581909 1132.316528 1134.548218 1135.227417 1134.481079 1131.171387 1129.574463 1128.265015 1126.685913 1124.963989 1125.50708 1129.369019 1131.672607 1133.017212 1134.352051 1135.052612 1135.768799 1135.872681 1135.268677 1133.140747 1133.998413 1134.785767 1132.459106 1128.047241 1125.550659 1124.974365 1124.025146 1121.80896 1120.949341 1124.343872 1127.763794 1131.779419 1134.604736 1133.597412 1136.314209 1142.040527 1147.222412 1156.507812 1159.997437 1161.384033 1164.677246 1170.243042 1173.582886 1177.83606 1182.084717 1189.03833 1194.328613 1195.453125 1201.115234 1203.743042 1206.361938 1212.405151 1219.428955 1227.526123 1235.483032 1244.128296 1247.263062 1247.619019 1247.148438 1243.543579 1241.199341 1243.607178 1246.996216 1246.345093 1243.762207 1238.991211 1234.92395 1230.359619 1226.577515 1224.422363 1220.839111 1215.106445 1209.86438 1205.710449 1199.267944 1195.368652 1189.362671 1182.403198 1179.709473 1174.973633 1171.011108 1165.71521 1160.25415 1153.86853 1148.653442 1145.739746 1141.541748 1137.268555 1133.841187 1130.083374 1133.34021 1134.167969 1133.003174 1133.915283 1135.472168 1135.729614 1134.560425 1133.783325 1132.261475 1131.280151 1130.565308 1129.855591 1129.156982 1128.195557 1127.627563 1127.359253 1128.77417 1131.436646 1134.271118 1135.227783 1134.931152 1133.058228 1131.944458 1132.213745 1132.563477 1124.401001 1121.680298 1120.545288 1118.622192 1116.521606 1114.336548 1113.258545 1113.134399 1112.589478 1111.772461 1110.25 1109.63147 1109.973633 1110.887085 1111.971069 1109.935669 1110.088013 1111.860962 1111.861694 1111.150391 1109.109131 1106.790894 1104.248535 1101.68396 1099.189941 1097.618286 1097.642822 1098.680542 1099.704346 1100.215454 1100.269531 1099.552734 1098.714966 1098.256104 1098.946777 1101.242432 1102.605347 1103.503418 1104.13501 1104.629883 1104.926636 1105.240845 1105.621338 1106.264038 1107.191772 1108.407715 1109.387817 1110.200195 1112.706909 1115.364746 1118.813599 1120.262939 1120.643921 1121.65918 1128.907715 1135.722046 1136.839844 1132.826904 1143.966797 1154.205933 1164.245483 1174.30957 1179.962402 1172.945557 1161.019165 1154.372681 1148.684692 1143.534668 1143.434082 1144.005371 1140.286865 1133.715454 1125.269531 1120.825562 1123.348145 1120.443115 1113.66626 1109.647217 1119.025513 1124.209473 1123.451782 1119.515015 1116.837402 1113.966675 1111.551636 1107.701782 1104.50769 1100.393433 1097.624634 -1097.775757 1098.516113 1099.36731 1100.119629 1100.869019 1101.676392 1102.484985 1103.383667 1104.246582 1105.161377 1106.095337 1106.886353 1107.619385 1108.232178 1108.887451 1109.261963 1109.589478 1109.959351 1110.905396 1111.757202 1112.428223 1113.1604 1113.870239 1114.629395 1115.456055 1116.443848 1117.40564 1118.485107 1119.523926 1120.802856 1121.693237 1122.896606 1124.461792 1125.874268 1127.434937 1129.039917 1130.308716 1131.231445 1131.920044 1132.680664 1133.970825 1135.405762 1136.776489 1138.156982 1139.750732 1141.272217 1142.689453 1143.984375 1145.112183 1146.41748 1149.825562 1153.172607 1155.470581 1157.954102 1160.612427 1163.219849 1165.742676 1168.434937 1169.936157 1172.016724 1177.436768 1180.423828 1184.376831 1194.481201 1197.954834 1206.562744 1226.478394 1241.014526 1252.658569 1266.379639 1279.229858 1286.255737 1291.378784 1301.942749 1307.920654 1304.549316 1300.072266 1301.291626 1306.43042 1315.983887 1320.486694 1318.480103 1317.87439 1320.953613 1324.737305 1330.213257 1332.714355 1332.53125 1328.801147 1320.666382 1316.155029 1312.659302 1306.797485 1305.077271 1305.203857 1302.699219 1296.113647 1289.173828 1279.332886 1268.481079 1259.983154 1253.62561 1249.591675 1242.521118 1233.258301 1221.67334 1212.927368 1203.814453 1195.679321 1189.459473 1185.714355 1184.774292 1180.614868 1175.65332 1170.916016 1171.395508 1170.825806 1170.720825 1173.524902 1176.599609 1178.916504 1181.31189 1182.240112 1183.985962 1186.206543 1187.198608 1187.034424 1186.536743 1186.368408 1186.661499 1187.582153 1188.26709 1188.644409 1188.767578 1188.706055 1188.450684 1187.952759 1187.140137 1186.308105 1185.536499 1184.789917 1184.108765 1182.934082 1180.842163 1179.168823 1177.443237 1175.081909 1171.866455 1170.248901 1176.053223 1179.323242 1181.720459 1183.917358 1185.964722 1187.801147 1189.619507 1191.594727 1193.743896 1196.920044 1203.658813 1209.682129 1216.581787 1220.998779 1220.04834 1218.831543 1217.011841 1214.272095 1211.694458 1210.131348 1209.479736 1209.444946 1207.562012 1201.671509 1195.322876 1194.143188 1193.221436 1194.784546 1196.1073 1197.092285 1199.86731 1202.912476 1204.515503 1207.187866 1205.76709 1201.913452 1198.544556 1197.462646 1196.772217 1192.6073 1187.471558 1184.637329 1178.605835 1171.453735 1170.940063 1171.384033 1171.739014 1171.763428 1171.845459 1171.670776 1171.713867 1171.702637 1171.664429 1171.59436 1171.671631 1171.674683 1171.855713 1167.769409 1166.478638 1167.056274 1167.740967 1168.55188 1169.282837 1169.959106 1170.725342 1171.149414 1171.286499 1171.319824 1171.297607 1171.208618 1171.207642 1171.210205 1171.127808 1170.837158 1170.345947 1169.799072 1169.255737 1168.696533 1168.105347 1167.484375 1166.888672 1166.180054 1165.481079 1164.650269 1164.046387 1163.469727 1163.03186 1162.458496 1162.029175 1161.921997 1161.937744 1162.042969 1162.083008 1161.9646 1161.645264 1161.167114 1160.620483 1159.929443 1159.428101 1159.026245 1158.647827 1158.09436 1157.688721 1157.161743 1156.638794 1156.097656 1155.332642 1154.546387 1153.855469 1153.4375 1153.115845 1154.050415 1155.896484 1157.589966 1158.872192 1161.260864 1165.113037 1168.211914 1170.053833 1174.7771 1181.29187 1185.059082 1186.993408 1191.856812 1195.160522 1195.499023 1194.548462 1191.915894 1189.881226 1188.618164 1188.341675 1189.335938 1191.440063 1194.500854 1195.417236 1195.587891 1193.119873 1191.318481 1198.356323 1208.431641 1219.618896 1227.071655 1234.895996 1244.034302 1249.577271 1255.067871 1259.223755 1265.692505 1271.128662 1276.531006 1281.779907 1282.925537 1282.33667 1278.618774 1273.687134 1267.552734 1256.427002 1240.811646 1223.963745 1204.821533 1203.850464 1211.758179 1221.336182 1227.32251 1231.001465 1232.167725 1231.695435 1231.009888 1231.546509 1231.569458 1230.746216 1230.092651 1228.299072 1222.988525 1216.11731 1206.900024 1198.788208 1191.958618 1181.364868 1170.28064 1172.263672 1170.859741 1167.461548 1165.19165 1162.228882 1156.532471 1147.16626 1146.239258 1144.859985 1143.128906 1141.033691 1138.590332 1136.406372 1135.170898 1133.81311 1133.040527 1132.424072 1131.619873 1130.509399 1129.411987 1128.021729 1126.761841 1125.462402 1124.148804 1123.422729 1123.754028 1123.966309 1123.965454 1123.704102 1123.252686 1122.72229 1122.21814 1121.567871 1120.811401 1120.038818 1119.43457 1118.964111 1118.17395 1117.362549 1116.241455 1115.15271 1114.167725 1113.366089 1112.500977 1111.540771 1110.598145 1109.592896 1110.348633 1111.094116 1111.638916 1112.057495 1112.681274 1113.332153 1113.745117 1114.19104 1114.562012 1114.876221 1115.32605 1115.696411 1116.24292 1116.676758 1117.032837 1117.381836 1117.800049 1118.255371 1118.866821 1119.567993 1120.425049 1121.380493 1122.04248 1123.283325 1121.639771 1121.500854 1123.930298 1129.679443 1134.261475 1135.731079 1134.916016 1133.909912 1134.241943 1135.104248 1135.825684 1135.59436 1134.509399 1133.669556 1133.037354 1131.566772 1129.7146 1129.825073 1131.40271 1133.331787 1133.909302 1134.193359 1134.655029 1135.897095 1135.991699 1135.383789 1133.911377 1135.14978 1135.847778 1134.834351 1131.81897 1128.680664 1126.651611 1124.562134 1122.139648 1121.217407 1123.776855 1126.163086 1128.869873 1130.749023 1132.286133 1135.261353 1138.969849 1142.989014 1147.541992 1155.936279 1160.428345 1164.140747 1170.747437 1173.091553 1175.559448 1178.538208 1180.781982 1180.073486 1184.023682 1193.23999 1194.288452 1200.266479 1204.817139 1211.231689 1217.134888 1225.431885 1234.866333 1243.549927 1244.047119 1241.732056 1232.168701 1223.139038 1228.179199 1248.270386 1249.120605 1247.418701 1243.588501 1238.286743 1232.732178 1229.753906 1227.158203 1222.786865 1217.704834 1212.904785 1207.771362 1203.190796 1198.363159 1194.434814 1188.124268 1183.547485 1175.054688 1172.059692 1164.25061 1159.234985 1146.180176 1144.7229 1142.907471 1138.057617 1134.052734 1133.293701 1136.23877 1137.319824 1136.904419 1135.349609 1135.628052 1136.478027 1136.291626 1135.411499 1134.109253 1132.99707 1132.363892 1131.874512 1131.132202 1130.263062 1129.240845 1128.486572 1128.999512 1130.666504 1132.92749 1134.657715 1134.969116 1134.850708 1133.715576 1132.993408 1133.947388 1135.102661 1125.952026 1121.254272 1119.627319 1117.559692 1114.79895 1111.170166 1110.814941 1110.940308 1109.904785 1110.097778 1109.541138 1109.114136 1109.009399 1109.505493 1110.140747 1109.571777 1109.704102 1110.729004 1111.433105 1110.911499 1108.913086 1106.547485 1104.008911 1101.531616 1099.430542 1097.808716 1097.338745 1097.63623 1098.318726 1098.984009 1098.950073 1098.05957 1097.553101 1097.649902 1098.64978 1100.2146 1101.478149 1102.144653 1102.687256 1103.120239 1103.495972 1103.988159 1104.642822 1105.373535 1106.343628 1107.310425 1108.179321 1108.906494 1109.783203 1112.886353 1118.619751 1120.565186 1123.347656 1128.275146 1135.153931 1142.456543 1146.848389 1147.210083 1144.164917 1152.981812 1163.675537 1172.309448 1174.897583 1167.751953 1154.67334 1147.266357 1143.211792 1138.983398 1133.92688 1137.534668 1137.233398 1133.422729 1121.852417 1120.63916 1119.165283 1115.162231 1112.268921 1109.399292 1114.78833 1119.911621 1119.814819 1116.630127 1111.031738 1109.452881 1108.638672 1106.956665 1104.564453 1100.165894 1097.457153 -1098.289185 1098.70166 1099.534424 1100.330566 1101.107056 1101.965454 1102.804688 1103.740112 1104.609253 1105.473389 1106.399292 1107.265381 1108.03186 1108.695068 1109.354858 1109.920898 1110.172729 1110.565918 1111.262207 1112.115479 1112.95459 1113.544434 1114.395264 1115.077026 1115.830688 1116.717163 1117.646973 1118.571655 1119.674438 1120.53894 1121.405884 1122.330811 1124.072998 1125.744141 1127.436401 1128.883057 1130.166992 1131.008057 1131.784668 1132.619263 1133.851929 1135.254272 1136.905151 1138.456299 1139.94397 1141.3573 1142.684204 1144.02832 1145.197388 1147.018555 1149.37146 1152.360107 1155.018555 1157.497925 1159.658936 1161.280029 1163.796143 1166.431641 1168.625488 1172.138062 1178.660889 1185.16333 1198.281738 1208.927612 1216.846313 1221.462891 1226.101929 1239.526245 1252.314331 1267.101074 1280.721436 1291.651001 1295.854248 1300.800171 1300.928101 1292.700317 1289.322266 1290.970093 1297.205566 1302.937866 1308.096558 1308.962891 1308.196411 1311.001831 1314.487793 1321.479736 1327.401245 1326.717529 1322.465576 1316.657349 1313.481689 1310.771118 1307.371338 1303.501953 1301.963989 1300.506104 1295.326538 1285.830688 1274.13562 1262.810913 1252.934937 1243.266968 1237.658936 1231.725342 1223.734863 1213.82666 1205.795044 1196.52478 1193.238037 1190.421875 1187.002686 1183.892456 1180.616699 1177.729248 1175.264771 1174.160278 1173.522705 1173.360229 1175.536133 1178.199951 1180.9729 1183.612061 1183.784424 1183.314087 1187.21582 1188.788574 1189.405151 1189.623901 1189.653687 1189.864502 1190.16626 1190.100098 1190.000122 1189.743408 1189.360474 1188.931641 1188.331665 1187.377441 1186.303467 1185.432617 1184.56189 1183.502441 1182.779419 1180.820557 1179.729614 1178.484619 1176.700073 1173.75769 1174.396118 1179.696045 1181.447754 1182.417725 1183.391479 1186.414795 1188.821655 1190.556519 1192.457642 1194.857422 1201.417114 1208.213013 1212.115356 1217.86731 1218.86438 1218.107788 1216.769775 1214.851929 1212.748657 1210.352539 1208.036255 1207.582153 1209.60022 1210.077026 1209.620605 1204.223877 1198.103516 1195.758057 1194.810913 1194.756714 1194.409912 1195.141479 1196.945435 1199.554443 1200.543579 1199.487671 1198.566284 1197.99707 1197.382324 1196.215576 1192.030273 1185.666992 1180.889893 1174.947998 1171.032104 1171.145752 1171.276001 1171.664062 1171.900391 1171.961548 1171.954468 1171.961914 1171.974243 1171.919678 1171.797974 1171.67981 1171.660034 1169.190063 1167.034302 1167.525024 1168.360962 1169.109009 1169.948242 1170.669434 1171.164185 1171.455078 1171.657104 1171.801514 1171.800537 1171.71814 1171.637207 1171.624512 1171.602417 1171.483032 1171.240356 1170.960693 1170.378662 1169.834473 1169.280029 1168.753052 1168.126831 1167.409424 1166.756226 1166.005859 1165.348267 1164.806763 1164.353271 1163.881714 1163.38855 1162.897095 1162.649292 1162.571289 1162.623169 1162.570557 1162.369995 1162.004395 1161.567383 1160.943726 1160.365234 1159.867432 1159.44104 1159.022827 1158.480835 1158.25769 1157.682617 1157.391235 1157.021118 1156.218018 1155.125366 1154.20752 1153.663208 1153.374756 1154.89978 1157.158081 1158.802734 1160.539551 1163.148682 1166.182617 1168.443604 1169.656372 1170.047729 1172.033813 1180.794556 1182.973877 1191.187744 1196.25769 1196.782715 1197.142334 1196.114136 1193.412476 1193.161133 1194.149048 1194.841919 1195.347412 1199.154541 1200.397461 1200.452881 1199.208008 1197.292114 1195.830566 1205.039673 1212.218628 1221.963135 1231.713989 1240.079468 1245.80127 1254.232544 1258.704712 1266.653931 1272.297852 1278.320801 1282.322998 1282.198486 1279.547729 1274.342896 1268.42395 1261.77832 1251.524048 1229.927734 1218.202759 1205.523926 1208.824463 1220.980957 1230.329956 1236.435303 1238.667725 1238.449463 1237.433472 1236.516113 1236.429932 1235.608032 1233.878784 1231.895142 1228.680298 1224.637329 1221.564453 1213.537842 1204.558228 1195.392944 1183.483154 1175.105347 1169.397217 1164.200317 1159.070801 1159.403931 1158.204346 1154.083496 1150.016602 1148.076538 1145.486694 1143.243408 1141.374512 1139.070312 1135.559448 1134.136841 1133.768433 1133.264404 1132.650024 1132.017212 1131.163208 1130.022949 1128.919922 1127.671753 1126.613159 1125.637817 1124.928833 1124.710205 1124.626465 1124.373047 1124.091187 1123.66333 1123.146851 1122.546875 1121.800537 1120.96228 1120.344238 1119.848145 1119.406128 1118.86731 1118.064819 1116.970947 1115.787109 1114.687134 1113.772827 1112.748413 1111.873901 1111.093872 1110.26355 1110.156494 1110.825073 1111.352905 1112.079712 1112.74707 1113.434082 1114.023438 1114.561768 1114.853882 1115.314453 1115.678345 1116.114258 1116.691406 1117.189697 1117.591309 1118.101196 1118.388672 1118.853516 1119.31604 1119.991943 1120.812134 1121.818359 1125.575562 1134.154419 1135.317505 1124.584961 1122.240601 1122.030273 1127.396729 1133.135376 1134.619141 1134.951782 1135.399292 1136.208374 1136.671753 1136.547852 1136.090942 1135.837402 1135.754395 1135.294678 1134.123169 1132.873413 1134.051392 1134.944336 1134.586548 1134.26001 1134.302124 1135.694336 1136.50708 1135.846924 1134.458618 1136.411499 1136.533203 1135.374512 1133.081665 1130.256226 1128.011597 1125.95752 1123.916138 1121.764282 1121.660889 1123.937012 1126.286377 1128.620361 1130.902466 1133.749512 1136.383057 1139.422119 1143.105957 1149.30481 1155.863403 1159.913574 1165.960571 1170.588989 1173.240479 1173.821899 1170.823608 1171.688843 1175.921753 1180.235596 1188.563354 1195.922241 1197.77417 1205.043579 1211.275146 1219.569946 1227.575806 1233.049072 1228.939575 1226.489136 1221.888672 1215.287598 1231.882202 1249.683594 1252.937378 1250.881226 1246.843872 1243.11084 1238.250732 1234.015381 1231.213257 1226.295898 1220.212646 1215.667114 1210.920044 1205.480347 1200.647095 1196.83374 1188.652954 1177.577026 1170.064697 1166.892822 1158.209106 1157.868652 1150.029785 1145.865356 1140.804565 1136.538818 1139.881104 1142.513428 1141.327881 1140.419067 1139.769531 1138.636353 1138.036865 1137.785889 1136.993408 1135.608032 1134.630249 1134.441162 1133.590454 1133.022461 1132.369629 1131.387085 1130.303345 1129.475708 1130.337524 1131.882202 1133.739014 1134.561523 1134.819214 1134.621094 1133.254028 1133.522339 1134.528198 1135.448853 1127.439087 1121.127197 1119.036377 1116.774536 1113.759521 1110.482544 1109.908325 1109.765869 1109.493652 1109.179443 1108.856323 1108.588013 1108.519897 1108.602173 1108.980347 1108.914429 1108.924805 1109.807983 1110.560791 1110.400146 1108.574219 1106.186768 1103.66748 1101.50647 1099.610352 1097.813843 1097.182129 1097.124756 1097.328735 1097.609741 1097.562012 1097.314209 1097.615479 1098.151855 1099.254761 1100.024414 1100.629639 1101.056641 1101.303223 1101.680908 1102.138916 1102.831177 1103.525879 1104.493896 1105.561401 1106.602295 1107.796509 1109.331787 1111.90918 1116.776978 1121.82959 1123.261597 1124.98999 1129.914429 1136.217163 1145.14502 1148.611328 1149.832642 1149.804077 1152.175293 1159.560547 1170.675049 1173.865356 1163.81189 1152.820557 1144.36499 1134.501953 1135.310059 1133.095703 1131.706787 1132.362305 1131.89978 1129.051514 1124.228271 1117.637695 1110.099121 1109.671875 1108.437256 1109.713745 1111.666138 1112.742554 1112.831543 1110.648926 1108.564941 1108.506348 1108.271362 1107.905396 1105.058472 1101.212036 -1099.284668 1098.673462 1099.624268 1100.484863 1101.484131 1102.37854 1103.285156 1104.121094 1105.044067 1105.921997 1106.755249 1107.540649 1108.366333 1109.185059 1109.928467 1110.471924 1110.884888 1111.234253 1111.877808 1112.444092 1113.293701 1114.020386 1114.736206 1115.411133 1116.220337 1117.056763 1117.907715 1118.877808 1119.737183 1120.61731 1121.437256 1122.251587 1124.054077 1125.956787 1127.792236 1129.312256 1130.539429 1131.358154 1132.157227 1133.198975 1134.329346 1135.469849 1137.086304 1138.701782 1140.201782 1141.721558 1143.150269 1144.56189 1146.257935 1147.774536 1149.467285 1151.813232 1154.234985 1156.203979 1157.668213 1158.796143 1161.960327 1165.771729 1168.993652 1173.05896 1181.334473 1191.625977 1206.397583 1216.089233 1227.023315 1238.993652 1245.415649 1249.910278 1253.102417 1261.17395 1276.006714 1289.385376 1295.797119 1296.567139 1292.098389 1287.257202 1280.208008 1283.160034 1289.704956 1295.064697 1298.75769 1300.349243 1300.735229 1302.997314 1308.950439 1314.720947 1318.474609 1318.377075 1315.695068 1312.056519 1309.9552 1308.859619 1307.077271 1303.883423 1298.895996 1305.220093 1297.714966 1285.412842 1273.816406 1260.904541 1242.236694 1229.794067 1225.158203 1219.038452 1208.737061 1205.897095 1197.265747 1194.650146 1194.446777 1193.282715 1188.849365 1182.671387 1182.144409 1181.423218 1179.138916 1177.550903 1177.087769 1177.383911 1178.63269 1180.011719 1181.65564 1184.943604 1186.364136 1187.440552 1189.127197 1190.631958 1191.718872 1192.450073 1192.705933 1192.979858 1192.867065 1191.996704 1191.219116 1190.494629 1189.928955 1189.397827 1188.529175 1187.416016 1186.053467 1184.609497 1183.465332 1183.074219 1181.943726 1181.099487 1180.361694 1179.736084 1179.539185 1181.075806 1179.660278 1183.036987 1184.421631 1185.043701 1186.599365 1188.486084 1190.399902 1191.859009 1193.406128 1195.705566 1203.897705 1209.164917 1212.053101 1214.710205 1216.168457 1215.992188 1214.744507 1212.934814 1210.820312 1208.021118 1206.654053 1207.660034 1209.611816 1210.766235 1211.065674 1209.337524 1203.610596 1199.006226 1195.817993 1194.082275 1193.211914 1192.921265 1193.35791 1194.484497 1195.212769 1194.278564 1193.672485 1194.051636 1194.07019 1192.310181 1185.685181 1181.665283 1176.442139 1171.608643 1171.338379 1171.378784 1171.435669 1171.586548 1171.806396 1171.903809 1171.983276 1172.116211 1172.165405 1172.061401 1172.000122 1171.846069 1170.147705 1167.796143 1168.462769 1168.937012 1169.629272 1170.603882 1171.224731 1171.368042 1171.775391 1172.034668 1172.168213 1172.237793 1172.233887 1172.187012 1172.10498 1172.008667 1171.969727 1171.80603 1171.464478 1171.276001 1170.889038 1170.258789 1169.866089 1169.253662 1168.591797 1167.956543 1167.216064 1166.538452 1166.029663 1165.565796 1165.212036 1164.730225 1164.228394 1163.632812 1163.358032 1163.175659 1163.141968 1163.067383 1162.796387 1162.450684 1161.933228 1161.314331 1160.872437 1160.43689 1159.870117 1159.391602 1159.075317 1158.879639 1158.395874 1158.243896 1158.17041 1157.305298 1155.811768 1154.519165 1153.841431 1154.430298 1156.412842 1158.678955 1160.358276 1162.403931 1165.272827 1168.607056 1171.078003 1172.526611 1173.833862 1175.938843 1180.949707 1182.983887 1188.421387 1193.3302 1195.674072 1197.778198 1198.452759 1196.994507 1196.542725 1200.707275 1203.158569 1204.294678 1205.396851 1204.31604 1205.812744 1204.719482 1207.063721 1208.155884 1206.183838 1209.99231 1223.161865 1233.806885 1242.442383 1249.088623 1256.484619 1260.858765 1265.74939 1272.223267 1280.32312 1282.266724 1279.34668 1275.049561 1269.914185 1263.646729 1255.69165 1245.130859 1221.546265 1216.724731 1208.572144 1215.610474 1230.471191 1240.035034 1245.40332 1246.362671 1244.941772 1243.691406 1242.888306 1242.498047 1240.630615 1237.377808 1234.022339 1229.553101 1224.238403 1220.925537 1213.000488 1204.283936 1195.179199 1187.108643 1181.800415 1173.089355 1167.921997 1161.403931 1158.75647 1155.005615 1147.472046 1147.108643 1146.447144 1145.366089 1143.944946 1142.698364 1140.528931 1137.562988 1135.671143 1134.961304 1134.068115 1133.490356 1132.557129 1131.71936 1130.817139 1129.800781 1128.733521 1127.883179 1126.934692 1126.203125 1125.585815 1125.291382 1124.859619 1124.418213 1123.962036 1123.422852 1122.646362 1121.838989 1121.027832 1120.626343 1120.360107 1120.016357 1119.60437 1118.968018 1117.857788 1116.500977 1115.160645 1113.89856 1112.855713 1111.858887 1111.278076 1110.443359 1109.990601 1110.506104 1111.432983 1112.25769 1113.054688 1113.716919 1114.328369 1114.856079 1115.370728 1115.700073 1116.234009 1116.636841 1117.074219 1117.628174 1118.219971 1118.630981 1119.138428 1119.438599 1119.860474 1120.324341 1121.019897 1121.970337 1126.295166 1132.374512 1135.058228 1128.731812 1126.117798 1126.189819 1129.308594 1133.68103 1134.329834 1134.66333 1135.84375 1136.913696 1137.557617 1137.77771 1137.666626 1137.49646 1137.153564 1136.781982 1135.92688 1134.211304 1134.251343 1135.753662 1136.102295 1135.514282 1135.071045 1135.919312 1137.430176 1137.500244 1137.361938 1137.391602 1136.842285 1135.432495 1133.087646 1131.056885 1129.613403 1128.207397 1126.043213 1124.130859 1122.768188 1122.344849 1124.728516 1127.17041 1129.407959 1131.372314 1133.213989 1135.106689 1139.844116 1145.026611 1149.577393 1154.499512 1159.82373 1164.548218 1168.949463 1169.374878 1166.812988 1166.602051 1168.585693 1174.646851 1182.220459 1186.643188 1189.951538 1196.834595 1204.293457 1214.706909 1223.265991 1222.858765 1218.054932 1214.387207 1208.441895 1208.994751 1223.171021 1248.769165 1257.15564 1254.96936 1251.185425 1247.364624 1243.209961 1238.624634 1235.175781 1230.794678 1224.22998 1219.620728 1214.259399 1208.515869 1199.341064 1194.083374 1188.484131 1184.572632 1184.113281 1178.843506 1172.213623 1161.788208 1146.750977 1142.942017 1141.797974 1148.516846 1148.905884 1147.945435 1145.847778 1144.398682 1143.679077 1141.838501 1140.421875 1139.288696 1138.106812 1137.020386 1136.23645 1135.695923 1134.880615 1134.2854 1133.462402 1132.495728 1131.468506 1130.581299 1130.727051 1132.560181 1134.080566 1134.801514 1134.927979 1134.045044 1133.588989 1133.900391 1134.466064 1131.989014 1124.393555 1121.074585 1119.06604 1116.755005 1114.402466 1112.390747 1111.452026 1110.410889 1109.69165 1109.001831 1108.56665 1108.20105 1107.9729 1107.936401 1107.973999 1108.0625 1108.290649 1108.950195 1110.008911 1109.638062 1107.802124 1105.364624 1103.002075 1101.06543 1099.492798 1097.793945 1097.003418 1096.799316 1096.725098 1096.822388 1096.815186 1097.035034 1097.901978 1098.707886 1099.200317 1099.578857 1099.825684 1099.986084 1099.765747 1099.884888 1100.646118 1101.640869 1102.608765 1103.69043 1104.878174 1106.123535 1107.558838 1109.053833 1112.588867 1118.911987 1122.885498 1122.563721 1123.49353 1128.46875 1132.692627 1137.85376 1144.950928 1146.384399 1154.519897 1159.559692 1164.260498 1170.897095 1173.270142 1161.638428 1150.413696 1142.962769 1136.866821 1133.510864 1125.062866 1124.700195 1123.846436 1132.519287 1134.608887 1125.907104 1119.132568 1111.108154 1108.072144 1107.097412 1107.565674 1108.484009 1109.028687 1109.143433 1109.04541 1110.042847 1111.13855 1111.550781 1112.838623 1109.824463 1105.677002 -1100.278931 1099.14624 1099.669922 1100.714233 1101.677856 1102.657959 1103.751221 1104.627075 1105.612305 1106.347046 1107.13208 1107.880615 1108.638428 1109.546387 1110.297119 1110.902832 1111.361572 1111.82312 1112.364868 1112.893433 1113.492188 1114.375488 1115.055542 1115.79126 1116.621826 1117.473755 1118.369751 1119.080566 1119.84729 1120.813721 1121.778564 1123.042847 1124.565308 1126.575195 1128.630249 1130.326172 1131.562622 1132.286621 1132.960938 1134.039795 1135.130981 1136.22583 1137.416138 1138.776245 1140.307495 1142.070435 1143.840942 1145.451416 1146.888672 1148.24292 1149.716919 1151.480591 1153.467163 1154.982544 1156.405396 1157.961792 1161.039551 1165.424561 1170.120239 1175.503052 1183.814453 1195.331299 1207.51001 1215.345581 1223.168213 1234.639648 1246.372314 1256.966431 1258.918701 1266.171509 1273.128174 1281.692383 1294.255493 1295.759155 1293.112061 1285.437622 1278.76001 1275.751221 1280.42627 1285.396118 1290.28186 1292.235596 1293.610229 1299.484009 1305.404663 1309.656494 1312.495728 1312.537964 1308.945312 1304.911621 1305.498901 1304.873901 1302.44873 1298.08374 1292.849243 1296.832153 1295.149414 1287.118042 1276.953003 1262.949219 1248.610107 1236.132812 1229.425903 1221.97522 1217.557739 1213.165405 1211.206787 1208.641235 1201.770996 1197.874756 1195.632202 1191.205933 1187.563354 1184.909424 1181.936157 1180.634521 1180.555542 1180.659302 1181.670776 1182.756104 1183.592651 1186.452271 1189.255249 1190.753052 1191.99292 1192.422607 1193.413574 1194.57373 1195.281006 1195.509155 1194.811768 1193.524048 1192.154053 1191.223145 1190.542236 1189.823853 1188.848145 1187.31897 1184.619751 1183.141357 1182.808105 1182.405884 1182.063232 1181.541138 1181.141479 1181.04248 1181.936768 1183.71167 1183.924805 1185.075195 1187.02063 1188.246338 1189.980957 1191.423218 1192.306885 1192.934937 1193.911377 1196.233521 1204.670044 1208.901611 1210.822021 1212.556763 1213.75061 1213.762085 1213.019775 1211.521606 1209.633667 1207.579834 1206.29248 1207.539307 1209.576416 1210.486694 1210.897949 1209.579224 1205.386963 1202.079834 1197.209351 1194.705078 1193.223022 1191.210205 1188.885986 1188.81604 1189.26355 1190.014038 1189.550903 1186.716553 1184.964478 1183.002075 1179.231934 1175.568848 1171.548706 1171.67395 1171.570679 1171.635132 1171.623169 1171.779053 1171.630493 1171.804688 1171.852173 1171.988403 1172.218018 1171.930176 1171.719482 1171.810791 1168.375366 1170.028198 1170.490479 1170.263916 1170.879517 1171.282104 1171.681885 1171.946045 1172.1604 1172.497314 1172.584229 1172.62207 1172.645508 1172.659424 1172.546997 1172.439087 1172.214478 1172.046265 1171.736694 1171.459961 1171.170288 1170.762939 1170.282227 1169.687012 1168.977295 1168.2854 1167.623657 1167.09021 1166.703613 1166.395142 1165.960449 1165.495361 1164.953003 1164.350586 1163.99707 1163.804077 1163.656006 1163.48877 1163.141357 1162.763672 1162.263306 1161.864014 1161.359253 1160.879395 1160.326172 1159.957764 1159.606079 1159.36499 1159.020386 1159.090088 1158.961426 1158.210449 1156.675903 1154.893188 1154.1073 1155.471924 1158.077881 1160.105591 1161.5979 1163.665161 1166.797363 1170.053589 1172.909546 1175.216187 1178.768677 1183.240234 1187.946655 1187.630005 1191.140137 1192.926514 1195.200439 1198.309082 1201.228271 1202.785889 1204.116577 1207.915527 1210.383789 1210.620605 1210.055054 1207.92981 1209.908081 1208.577759 1210.2052 1214.327148 1216.779541 1215.363403 1220.595581 1231.253174 1242.644775 1250.200073 1257.075928 1261.114502 1264.942139 1270.216919 1280.013306 1279.875977 1273.849243 1270.55603 1266.001709 1254.854004 1247.628174 1234.491943 1232.182861 1223.669922 1211.379883 1222.394775 1236.436768 1246.403076 1251.819458 1252.902954 1251.56543 1249.295288 1247.677002 1246.612305 1244.944824 1241.398926 1236.115723 1228.954102 1218.586182 1209.947876 1203.972046 1198.551636 1193.187378 1187.968384 1183.805908 1176.567139 1171.854492 1165.074829 1160.856323 1156.993408 1151.155762 1148.373779 1147.045532 1146.069702 1145.391357 1144.8927 1142.477417 1139.995361 1137.851074 1136.620361 1135.374023 1134.362427 1133.471924 1132.323608 1131.588135 1130.783081 1129.999634 1129.093018 1128.100586 1127.185181 1126.37207 1125.88623 1125.299072 1124.742554 1124.105469 1123.477417 1122.504883 1121.701538 1121.119751 1120.9198 1120.783203 1120.751099 1120.674316 1120.099121 1118.933105 1117.340576 1115.54541 1114.016235 1112.628418 1111.551514 1111.149292 1110.727783 1110.338257 1110.562134 1111.586182 1112.604248 1113.406494 1114.223877 1114.891724 1115.439575 1115.963745 1116.354858 1116.734863 1117.171875 1117.56604 1118.12854 1118.617554 1119.239502 1119.787964 1120.111328 1120.456055 1120.761719 1121.147339 1121.508911 1122.633667 1126.902466 1129.494263 1129.226074 1130.561523 1133.574463 1134.986572 1135.106323 1134.692017 1134.451294 1135.385254 1137.627563 1138.436523 1138.880127 1139.022583 1138.923462 1138.483765 1137.970581 1136.927979 1135.586548 1134.500977 1135.70166 1137.574097 1137.82605 1137.926758 1138.488159 1139.110107 1139.230713 1139.150879 1138.33313 1137.325684 1134.904785 1132.959229 1132.137329 1131.556763 1130.676758 1128.845215 1126.607544 1124.781982 1123.755127 1125.117188 1126.976929 1128.425781 1129.856323 1131.241089 1133.18457 1135.875488 1138.960571 1143.577881 1148.098877 1153.499268 1156.145386 1157.843628 1159.901245 1161.75 1160.343628 1165.539551 1171.504272 1175.723022 1179.616943 1185.472412 1194.558228 1203.401245 1211.491699 1218.463867 1217.596802 1212.21228 1208.646973 1204.067871 1205.557129 1219.940674 1247.339844 1255.899536 1257.849365 1254.678711 1250.578491 1246.542725 1242.281982 1237.457275 1232.92749 1227.702271 1223.160034 1217.894409 1210.517334 1204.155762 1198.297974 1194.8927 1191.27063 1187.399902 1181.836304 1170.837158 1156.901611 1149.125977 1152.662842 1152.533569 1152.459595 1151.516113 1150.054688 1148.179565 1147.583008 1146.195679 1144.143799 1142.279053 1140.730835 1139.556519 1138.576416 1137.699097 1136.865723 1136.192871 1135.433594 1134.510742 1133.587036 1133.083008 1131.715454 1131.355347 1133.923584 1134.708008 1135.131592 1134.807373 1134.311279 1134.518921 1134.726807 1130.448486 1126.378662 1122.02478 1120.786499 1118.936157 1117.078979 1115.22583 1113.63562 1112.464722 1111.427246 1110.174683 1109.276123 1108.364746 1107.92334 1107.530762 1107.302734 1107.282593 1107.322998 1107.518066 1107.99707 1108.42749 1107.807739 1106.23877 1104.17749 1102.260864 1100.5 1099.128906 1097.842896 1097.065552 1096.631348 1096.391846 1096.22229 1096.263184 1096.491455 1097.769897 1098.33313 1098.585083 1098.604492 1098.69873 1099.109253 1098.78186 1097.696289 1099.138428 1100.728027 1101.694336 1102.719238 1103.946411 1105.558472 1107.237305 1109.257568 1112.065308 1117.364624 1120.958618 1119.685303 1120.976318 1124.150146 1127.264771 1131.021606 1137.326904 1145.603394 1154.771484 1161.637207 1168.260376 1173.483032 1168.681641 1156.918823 1145.917114 1138.319214 1136.515625 1134.330566 1125.306396 1120.679688 1119.687988 1125.104736 1128.05249 1122.428223 1116.251831 1111.101196 1107.175171 1104.924561 1104.833862 1105.675171 1106.627197 1108.291504 1110.670288 1113.549194 1116.08606 1118.057739 1118.991211 1114.489014 1111.27771 -1101.059814 1099.826416 1099.985352 1100.977417 1101.991089 1103.046997 1104.121826 1105.183838 1106.132568 1106.883301 1107.54541 1108.171997 1108.795532 1109.766357 1110.425659 1111.088013 1111.665405 1112.171143 1112.748047 1113.345215 1113.877686 1114.519897 1115.340942 1116.112671 1116.872314 1117.724609 1118.525635 1119.290283 1120.07959 1120.887207 1121.964966 1123.498535 1125.262085 1127.428223 1129.69751 1131.73291 1133.329102 1133.943726 1134.258179 1135.052368 1136.035767 1136.575684 1137.380737 1138.564697 1140.099731 1142.212036 1144.375732 1146.220581 1147.623169 1148.824707 1150.004272 1151.410522 1152.855225 1154.204468 1155.850708 1157.487427 1160.156372 1165.001221 1169.895874 1175.518433 1182.547607 1192.539429 1200.615112 1206.843018 1210.441284 1220.217041 1234.389648 1243.944946 1248.694092 1252.832153 1263.25061 1271.141602 1286.577148 1294.041138 1289.923096 1283.114868 1272.677002 1265.566406 1271.110474 1273.414551 1274.617065 1282.142212 1288.421387 1294.609741 1300.884521 1304.066284 1307.019043 1308.277588 1304.80249 1301.081177 1297.539795 1296.0448 1294.675415 1292.517334 1286.8573 1281.92627 1281.787354 1278.979736 1269.198853 1260.757812 1250.190186 1241.134888 1234.77417 1228.85376 1223.821777 1221.642212 1217.466309 1211.337036 1207.964844 1203.542114 1199.404419 1197.331909 1194.449463 1189.164673 1183.533691 1183.630371 1183.903931 1184.001953 1183.86731 1186.952881 1188.827271 1191.27771 1192.547607 1193.737793 1194.421265 1194.777954 1195.085449 1196.057617 1196.119751 1195.897949 1195.558472 1194.236694 1192.963989 1191.912109 1191.192749 1190.481934 1189.563965 1188.039917 1185.120605 1183.428467 1182.817383 1182.869873 1183.109497 1182.822144 1182.169434 1182.606934 1183.487183 1185.152588 1186.890991 1188.198242 1189.767578 1191.554932 1193.374512 1194.22644 1194.300049 1194.191528 1194.964355 1197.957275 1202.783081 1206.52478 1208.934814 1210.859985 1211.911621 1212.102295 1211.487671 1210.384399 1208.014038 1205.821411 1205.251953 1207.457397 1209.494141 1210.82373 1210.764893 1210.34021 1208.844727 1207.388916 1201.039673 1196.903198 1193.241699 1189.996094 1185.294067 1182.921875 1184.449341 1185.739258 1185.887939 1183.505005 1179.314575 1176.895386 1173.757202 1171.814697 1171.908691 1171.904907 1171.814697 1171.850952 1171.838867 1171.797729 1171.551147 1171.486206 1171.416626 1171.243286 1170.666748 1170.137329 1169.81189 1169.955078 1171.154053 1171.368774 1171.359131 1171.300049 1171.369263 1171.718506 1171.944214 1172.327759 1172.587524 1172.805786 1172.962769 1173.024658 1172.937866 1172.958008 1172.845703 1172.674316 1172.442627 1172.208374 1171.936401 1171.715454 1171.43335 1171.083008 1170.600342 1169.966675 1169.260986 1168.564209 1168.0979 1167.741699 1167.337769 1166.997192 1166.600464 1166.162842 1165.599976 1164.971069 1164.553467 1164.306763 1164.117065 1163.836426 1163.461304 1163.009399 1162.706299 1162.236206 1161.823975 1161.182007 1160.789917 1160.519775 1160.031616 1159.824341 1159.649414 1159.633423 1159.407104 1158.884277 1157.182251 1155.115356 1154.426025 1156.30603 1158.989502 1160.968262 1162.335815 1164.311768 1167.315918 1170.314087 1173.036133 1175.499878 1179.544922 1184.888184 1194.037598 1198.005737 1196.016724 1195.125122 1195.337036 1199.359619 1204.058716 1206.41333 1208.644653 1212.297974 1215.145508 1215.405762 1214.555664 1213.265381 1213.324707 1213.645752 1215.29187 1218.064575 1223.279297 1224.13147 1231.067749 1231.594116 1238.168579 1247.27771 1255.365479 1260.29187 1266.113159 1270.978027 1273.655151 1270.445312 1266.191162 1262.494019 1253.417603 1247.150269 1242.18457 1243.935059 1241.180542 1230.236816 1217.690796 1226.404907 1238.478516 1249.799072 1257.839478 1260.237183 1258.083008 1254.235229 1251.717896 1249.260864 1246.756958 1243.124268 1236.795898 1227.595703 1212.983765 1204.158691 1195.236938 1188.451416 1183.509277 1182.971191 1175.500977 1172.371216 1169.662964 1165.327515 1161.775635 1159.598022 1156.317749 1151.716675 1149.254517 1148.318604 1147.726685 1146.868042 1144.8396 1142.427124 1139.860107 1138.240967 1136.86377 1135.398193 1134.042236 1132.995239 1132.450073 1131.981567 1131.135376 1130.123779 1129.129028 1128.047852 1127.228027 1126.370117 1125.666138 1124.948853 1124.131836 1123.226929 1122.250366 1121.629517 1121.408936 1121.452393 1121.505981 1121.506104 1121.711792 1121.587524 1120.250366 1117.991211 1115.893433 1114.000366 1112.409058 1111.752563 1111.502197 1110.985474 1110.920532 1111.126587 1112.203125 1113.191284 1114.032837 1114.887939 1115.622437 1116.262329 1116.692993 1117.09314 1117.432861 1117.797485 1118.154663 1118.608398 1119.0896 1119.688477 1120.422485 1121.004517 1121.404175 1121.50708 1121.404541 1121.391113 1121.658936 1122.40979 1126.091919 1129.02478 1133.034912 1134.630127 1135.273926 1135.516235 1135.803467 1135.569458 1135.528564 1138.403687 1139.287476 1139.938599 1140.163208 1140.222046 1140.015503 1139.62561 1138.93042 1137.871338 1136.892944 1138.074829 1139.498901 1140.203491 1140.828247 1141.313232 1141.461182 1141.13855 1140.555542 1139.481079 1138.0354 1135.133179 1134.491089 1134.266602 1133.901245 1133.287231 1131.633911 1129.149658 1127.424561 1126.447266 1126.499023 1127.081421 1127.998779 1129.094727 1130.051514 1131.109619 1132.457153 1133.944946 1139.121704 1143.834229 1145.963623 1147.368652 1152.333374 1155.388794 1156.929443 1156.97583 1160.039185 1166.262695 1169.840454 1178.884766 1190.753906 1197.760742 1201.103882 1206.254883 1209.307983 1208.832642 1205.470459 1201.630371 1197.008423 1204.171265 1215.821533 1243.56958 1250.234253 1257.0354 1257.246216 1253.304932 1248.124634 1243.521484 1238.796265 1234.290894 1229.764038 1224.777222 1219.974854 1215.862183 1210.251343 1204.309937 1199.567871 1194.674561 1188.071533 1176.882446 1164.329224 1167.101929 1158.894897 1161.913086 1158.041138 1156.247437 1154.016479 1152.008179 1150.337158 1148.868164 1147.094116 1145.196411 1143.350342 1142.002686 1140.90979 1139.879639 1138.98645 1138.08606 1137.290161 1136.398193 1135.24353 1134.709717 1134.405273 1132.544922 1132.52124 1134.393433 1135.187744 1135.347534 1134.89502 1134.461304 1134.863647 1134.78833 1129.620605 1122.269653 1121.767578 1120.670288 1119.118164 1117.426147 1115.712036 1114.06189 1112.690918 1111.608887 1110.134766 1109.314453 1108.379639 1107.750244 1107.202271 1106.837158 1106.63208 1106.606323 1106.716797 1106.831177 1106.655396 1105.983154 1104.534668 1102.967651 1101.415649 1100.164429 1098.922607 1097.828857 1097.21582 1096.59375 1096.102295 1095.801636 1095.733643 1095.941528 1096.688232 1097.460571 1097.566284 1097.557983 1097.678223 1098.365356 1098.166748 1097.717773 1099.312134 1100.225708 1100.789551 1101.437012 1102.843994 1104.600464 1106.708618 1109.000854 1111.630737 1112.945312 1116.38916 1117.085938 1118.247803 1120.487793 1121.811279 1127.856323 1133.539062 1140.935303 1148.333008 1157.471069 1169.06311 1170.732178 1160.779175 1146.797852 1135.067871 1130.23938 1126.182007 1122.057983 1123.510742 1122.008301 1113.789429 1118.102783 1119.02771 1115.499512 1110.585083 1107.776978 1103.936646 1101.428467 1101.622925 1103.011841 1105.068115 1107.469604 1109.581909 1115.884888 1121.425415 1123.294189 1123.848755 1120.039673 1116.025879 -1101.783569 1100.262207 1100.52002 1101.491699 1102.334229 1103.420044 1104.530029 1105.707153 1106.606689 1107.509888 1108.191772 1108.576172 1108.954102 1109.657593 1110.402222 1111.169556 1111.834839 1112.507446 1113.070801 1113.613403 1114.18396 1114.823853 1115.52478 1116.266968 1117.147217 1117.828003 1118.640015 1119.421997 1120.204956 1121.050049 1121.838745 1123.624756 1126.084839 1128.485718 1130.859253 1133.034546 1134.591187 1135.226929 1135.496338 1135.9823 1136.183838 1136.326782 1136.758545 1137.674683 1139.619751 1142.047485 1144.667236 1146.495728 1147.812866 1149.006104 1150.042114 1151.138306 1152.288574 1153.704224 1155.251831 1157.118652 1159.446777 1164.050781 1169.177124 1174.557739 1180.193359 1186.215942 1192.30481 1195.937134 1197.487427 1209.298828 1221.091187 1226.779907 1229.130737 1233.880005 1247.270386 1262.652832 1276.213379 1282.861694 1281.746338 1274.485596 1263.016968 1255.177124 1259.63855 1258.656738 1263.585693 1273.478149 1281.299194 1290.361328 1296.73291 1301.212036 1305.77063 1306.82312 1304.682495 1297.911255 1292.133301 1288.528931 1286.58606 1283.1427 1279.199463 1273.204468 1271.959839 1269.79187 1263.81665 1257.528076 1251.175171 1243.825928 1236.245117 1229.290771 1221.578125 1219.4552 1216.3573 1211.704468 1208.80188 1205.396851 1201.526733 1198.981812 1197.069946 1194.041748 1189.214355 1187.969604 1188.152344 1189.300049 1190.740967 1192.772095 1194.80835 1195.616577 1196.004639 1195.834961 1195.856201 1196.090332 1196.373291 1196.506714 1196.362183 1196.144775 1195.618164 1194.596436 1193.484253 1192.635498 1191.944458 1191.330933 1190.621704 1189.427856 1187.86438 1185.613525 1184.096924 1184.268433 1184.90979 1184.780273 1183.651001 1183.697998 1186.306396 1188.938232 1190.851318 1192.136719 1192.441162 1194.210327 1197.311646 1198.190063 1198.502441 1197.314819 1195.753906 1198.88147 1201.353027 1203.855225 1207.090088 1208.991821 1210.208374 1210.692383 1210.45166 1209.478882 1206.879028 1202.931641 1202.355957 1205.759888 1209.177612 1210.732178 1210.883057 1210.380493 1208.906128 1207.050659 1202.064331 1197.506714 1193.884033 1189.696533 1186.478516 1183.649414 1182.240723 1182.03833 1181.861694 1178.967896 1174.977661 1172.481812 1172.333496 1172.270386 1172.133423 1172.087646 1172.093872 1172.066895 1171.942993 1171.79834 1171.572998 1171.406372 1171.22168 1170.910034 1171.239502 1171.356079 1171.380737 1171.407715 1171.571411 1171.714111 1171.814575 1171.896118 1172.061279 1172.115723 1172.36084 1172.521606 1172.921753 1173.098999 1173.240356 1173.242065 1173.237061 1173.139893 1173.053955 1172.778198 1172.611572 1172.420044 1172.110474 1171.783325 1171.540771 1171.271973 1170.770142 1170.106567 1169.408813 1168.993286 1168.5177 1168.224609 1167.889893 1167.540894 1167.158447 1166.693604 1166.211304 1165.517578 1165.029541 1164.752319 1164.438965 1164.189575 1163.768677 1163.336548 1162.96814 1162.601929 1162.235352 1161.757446 1161.312256 1160.917969 1160.514404 1160.353638 1160.126343 1159.892334 1159.644653 1159.130737 1157.634155 1155.185547 1155.141357 1156.880737 1159.020264 1160.933716 1162.401123 1164.539673 1167.122681 1169.5896 1171.379395 1174.534668 1178.59729 1182.372925 1192.623291 1196.821045 1197.293091 1197.595947 1198.839844 1201.450562 1205.702759 1209.579956 1215.921997 1219.875244 1220.463379 1220.605469 1219.371094 1216.941528 1216.62915 1216.967407 1219.057007 1218.976196 1224.738281 1230.055176 1233.646362 1237.855835 1240.154785 1242.429321 1249.997437 1257.672852 1265.256348 1270.063965 1269.593628 1266.628906 1265.802368 1262.216919 1259.650879 1259.475464 1254.624268 1252.001587 1248.289429 1235.026733 1217.690063 1225.84021 1237.487793 1252.683228 1266.132935 1268.940308 1264.19165 1258.294556 1254.091309 1249.97644 1244.42041 1240.772705 1235.445312 1227.430786 1216.166382 1205.583496 1197.235718 1187.425415 1176.129883 1168.84375 1169.213501 1168.719604 1167.121094 1163.014404 1160.00061 1159.160156 1157.748047 1153.71106 1151.151978 1149.856567 1149.079834 1148.040405 1146.390259 1144.213013 1141.736084 1139.633179 1137.378174 1135.273682 1133.981323 1133.644531 1133.552246 1133.158691 1132.1604 1131.158569 1129.977295 1128.984253 1127.956421 1127.060791 1126.077515 1125.161987 1124.113037 1123.009521 1122.129639 1121.955444 1122.067383 1122.184692 1122.262451 1122.391602 1122.485718 1122.318481 1121.294922 1118.671143 1116.273926 1114.301025 1112.813965 1112.08313 1112.141479 1111.932007 1111.965332 1112.293335 1112.940796 1113.832153 1114.744019 1115.617676 1116.359009 1117.00415 1117.490234 1117.882568 1118.106445 1118.486816 1118.861206 1119.175781 1119.72168 1120.312134 1121.009033 1121.687622 1122.195435 1122.515137 1122.209473 1121.894653 1121.823364 1121.940552 1121.83252 1127.755859 1132.084595 1134.498413 1134.847534 1135.465576 1135.970825 1136.528687 1137.571045 1138.89624 1139.921631 1140.767212 1141.33252 1141.666504 1141.851074 1141.882935 1141.443726 1140.976074 1140.759766 1141.292969 1141.947266 1142.609985 1143.378784 1144.208618 1143.86084 1143.054932 1141.94751 1140.817627 1139.265503 1137.611694 1136.708374 1136.31665 1135.883179 1135.312256 1134.185059 1131.550903 1129.541138 1128.392334 1127.910645 1127.776001 1128.156372 1128.685303 1129.546753 1130.489258 1131.504761 1133.206055 1136.922729 1139.935547 1142.673584 1145.886719 1149.707153 1151.661743 1156.742065 1159.415527 1159.664551 1167.45813 1173.661377 1177.848267 1184.156494 1191.78418 1195.5625 1201.37207 1203.515503 1201.598633 1197.445557 1196.876709 1193.574707 1204.052856 1215.684448 1234.721558 1244.898193 1252.31665 1257.668945 1254.91394 1248.928955 1243.956421 1239.953735 1235.501831 1231.424683 1226.890381 1222.978027 1218.531128 1213.161377 1208.658569 1202.870239 1196.900635 1184.959473 1179.936279 1180.248413 1175.814575 1170.176147 1166.477783 1161.746582 1158.077271 1155.879272 1153.640137 1151.196899 1149.065552 1146.905396 1145.085571 1143.831665 1142.894531 1142.050781 1141.102173 1140.163452 1139.2323 1138.323486 1137.403687 1136.516479 1135.384155 1133.988525 1134.19519 1134.086182 1134.81189 1135.708374 1135.750122 1135.448486 1134.914673 1134.756958 1133.289551 1129.751709 1125.762817 1124.252197 1121.832275 1119.838623 1118.035034 1116.014404 1114.086548 1112.252075 1110.614502 1109.940186 1109.099609 1108.378662 1107.670044 1107.056519 1106.559326 1106.271606 1106.042725 1105.944824 1105.849243 1105.351074 1104.456787 1103.161499 1101.637451 1100.553467 1099.817627 1099.125244 1097.936157 1097.681763 1097.090332 1095.945557 1095.465942 1095.177734 1095.305786 1095.660889 1096.341064 1096.571777 1096.620117 1096.901489 1097.446655 1097.349487 1097.936035 1099.225952 1099.543945 1099.687622 1099.781616 1101.287476 1103.588867 1105.827148 1107.782349 1109.068848 1110.654907 1113.520996 1113.505615 1113.112305 1116.680786 1120.230225 1126.385254 1134.308472 1140.51123 1148.444824 1156.020996 1165.071655 1162.051758 1149.679932 1137.655273 1128.50061 1122.169556 1119.955322 1121.874756 1121.230347 1113.747681 1108.708984 1110.38208 1110.473755 1108.321655 1106.036377 1103.325806 1100.325562 1097.728394 1099.034302 1101.09729 1103.9198 1106.797729 1109.940674 1117.26709 1123.307373 1125.07605 1124.372925 1123.700806 1122.684814 -1102.21936 1100.537964 1100.977295 1101.815674 1102.807251 1103.871704 1105.024658 1106.098633 1107.2948 1108.230469 1108.963135 1109.234253 1109.365234 1109.683472 1110.408569 1111.270508 1112.008423 1112.681396 1113.323364 1113.917114 1114.563599 1115.174194 1115.848755 1116.602173 1117.342651 1118.066528 1118.933716 1119.747437 1120.631592 1121.386475 1122.258789 1124.068848 1126.970703 1129.55542 1132.231445 1134.267822 1135.236084 1135.532837 1135.608154 1135.729736 1135.840698 1135.093384 1135.071289 1136.320557 1138.823364 1141.581543 1144.118286 1146.234253 1147.651611 1148.746826 1149.662231 1150.678223 1151.82373 1153.294189 1154.951294 1156.730103 1158.669189 1163.063232 1167.892212 1172.534546 1176.687256 1180.797119 1183.353882 1185.589844 1190.56543 1197.557373 1205.030518 1209.161621 1209.368896 1224.877319 1244.722778 1258.952759 1267.7323 1269.596436 1267.816406 1260.785156 1251.485352 1247.291992 1249.613525 1252.401123 1263.868652 1273.397217 1282.302124 1290.560547 1295.473633 1298.03125 1301.927246 1303.508057 1301.506226 1295.570679 1289.147461 1282.681274 1280.062012 1274.560059 1272.048828 1266.460693 1263.220459 1262.936157 1258.284912 1254.098145 1252.341675 1247.850098 1237.758057 1227.527588 1218.982422 1215.713379 1211.43457 1208.350708 1207.94812 1205.708862 1202.198242 1199.581055 1197.632202 1196.107178 1192.833984 1191.510498 1192.879761 1195.762085 1194.504395 1195.998291 1196.141846 1196.069458 1195.993652 1196.001587 1196.041016 1196.192627 1196.384521 1196.421265 1196.455566 1196.28833 1195.793823 1194.883057 1194.100952 1193.380859 1192.807373 1192.520386 1191.940674 1191.076538 1189.808472 1188.063965 1186.82312 1186.495117 1186.466187 1186.605591 1186.862305 1188.401733 1190.270508 1193.530396 1195.242065 1195.2854 1194.551392 1197.659912 1203.831787 1208.661255 1207.497559 1202.495972 1199.634155 1199.24231 1199.03186 1199.079712 1203.123657 1206.435059 1208.293823 1209.048218 1209.405518 1208.815063 1206.164551 1198.21228 1197.140625 1202.755859 1207.516235 1210.374878 1210.113037 1208.067261 1205.272583 1201.994385 1198.269165 1195.276123 1191.667236 1188.526367 1186.536743 1185.080566 1183.361816 1179.761963 1176.916016 1173.910278 1172.742554 1172.651123 1172.548706 1172.460449 1172.429932 1172.400391 1172.370605 1172.258301 1172.105591 1171.936768 1171.755005 1171.574951 1171.434448 1171.4729 1171.625488 1171.721191 1171.815918 1171.897949 1171.997803 1172.05957 1172.312378 1172.349731 1172.592285 1172.645874 1172.703247 1172.81665 1173.001221 1173.271973 1173.387451 1173.431641 1173.419434 1173.219604 1173.12085 1172.931396 1172.649292 1172.429932 1172.023804 1171.729004 1171.447021 1171.188354 1170.853516 1170.148315 1169.639771 1169.202148 1168.881348 1168.453857 1168.26355 1167.910278 1167.593872 1167.176636 1166.645996 1165.983398 1165.454224 1165.105957 1164.741821 1164.372559 1164.077026 1163.751343 1163.318726 1162.900757 1162.52771 1162.124878 1161.647339 1161.301514 1160.968628 1160.647705 1160.386841 1160.121948 1159.77063 1159.162842 1157.931885 1155.490234 1155.386719 1156.907837 1158.582275 1160.427368 1162.408691 1164.401001 1166.534912 1168.338501 1170.274536 1173.333862 1176.445435 1179.668701 1185.457397 1194.31604 1197.270996 1198.358643 1199.219727 1201.45459 1205.398682 1211.53125 1218.778687 1223.116089 1226.684814 1227.565674 1224.572388 1219.518677 1220.037109 1219.829224 1223.74231 1228.207764 1234.372681 1239.166626 1243.600098 1243.627197 1245.564209 1245.737305 1247.278442 1255.19043 1259.960938 1266.885742 1271.293457 1269.400391 1270.474365 1270.380493 1270.130005 1268.152344 1262.398315 1256.59436 1249.092041 1231.450439 1222.126465 1229.065063 1233.769043 1251.560913 1266.063232 1271.955322 1270.114136 1264.420532 1257.012207 1251.852295 1245.467163 1242.055664 1231.089844 1218.633545 1209.738037 1201.241577 1192.64917 1183.959351 1179.406128 1178.17749 1171.83667 1170.497192 1167.727051 1162.532959 1159.232666 1157.387207 1156.045166 1153.906006 1151.94165 1150.482666 1149.482178 1148.598877 1147.479004 1146.087646 1143.85083 1141.095459 1138.309326 1135.151001 1134.70105 1134.964355 1134.693848 1134.03772 1133.103638 1132.149658 1130.94397 1129.902832 1128.805664 1127.907471 1126.831299 1125.567505 1124.294189 1122.989136 1122.154297 1122.445557 1122.953125 1123.068481 1123.112915 1123.026489 1122.671509 1122.380859 1121.472168 1119.018555 1116.545898 1114.625854 1113.356689 1112.414795 1112.587769 1112.910156 1113.050293 1113.354126 1113.823242 1114.569092 1115.439575 1116.269165 1117.094604 1117.723267 1118.1698 1118.543213 1118.82373 1119.027344 1119.33728 1119.664185 1120.089233 1120.594482 1121.303955 1122.035522 1123.393311 1124.08252 1123.920898 1123.355469 1122.271606 1123.774536 1124.550781 1127.386963 1130.501221 1132.904053 1134.127197 1134.534668 1135.290527 1136.51001 1137.585693 1138.938599 1140.361084 1141.513062 1142.44043 1143.154053 1143.709961 1144.009521 1144.26001 1143.965088 1143.653931 1143.957764 1144.305664 1145.0177 1146.055542 1146.288818 1145.672363 1144.585449 1143.236694 1142.300171 1141.292847 1140.006226 1138.834717 1138.110474 1137.349854 1136.353394 1135.021362 1132.923706 1131.059448 1129.963379 1129.266235 1128.892334 1128.775757 1128.901367 1129.44458 1130.195923 1131.063599 1132.365234 1133.994385 1136.672974 1140.149048 1144.108276 1146.101807 1147.165283 1156.091187 1159.328735 1160.990967 1165.653809 1171.52356 1174.322144 1179.052002 1182.118774 1190.988037 1198.521729 1198.795654 1196.619873 1190.494019 1188.039185 1187.598145 1199.647583 1209.284546 1227.493896 1237.850342 1244.76709 1248.820068 1251.282959 1248.678711 1244.597778 1240.78186 1236.697144 1232.21582 1228.46228 1224.3927 1221.273804 1216.03186 1210.624756 1204.293579 1196.092896 1185.946411 1189.065552 1186.42334 1181.353394 1175.683594 1170.384033 1164.910767 1160.584839 1157.514893 1154.519897 1151.091064 1148.148438 1146.314331 1145.233276 1144.625122 1143.920654 1143.113525 1142.265503 1141.348511 1140.471924 1139.520508 1138.700073 1137.781006 1136.285889 1135.403687 1135.685059 1135.541626 1136.053589 1136.481323 1136.444702 1135.894653 1135.289307 1134.120483 1132.932495 1132.046875 1130.192139 1126.493408 1122.305542 1120.628906 1118.643311 1116.493652 1114.153931 1111.697876 1110.049438 1109.517212 1109.193848 1108.550659 1107.838745 1107.151245 1106.522217 1106.051147 1105.602417 1105.311279 1104.959351 1104.342407 1103.343506 1101.952393 1100.334717 1099.181885 1099.07605 1098.799194 1098.259644 1097.944092 1097.760742 1095.979126 1095.104614 1094.608887 1094.642456 1094.879395 1095.291504 1095.687134 1095.851562 1096.034058 1096.261108 1096.700439 1097.911011 1098.020996 1098.514282 1098.532471 1097.845337 1099.72937 1102.822876 1105.4375 1107.992188 1109.914917 1111.191772 1111.960083 1109.990723 1109.623779 1112.268433 1121.759155 1126.526855 1134.246338 1134.938599 1142.024414 1154.086548 1161.186035 1152.89978 1139.912231 1130.049438 1122.376099 1118.871094 1117.197754 1121.280151 1115.083252 1108.925049 1107.302368 1106.912842 1106.180542 1104.051636 1101.486084 1099.009399 1097.540894 1096.588989 1097.53418 1100.260132 1103.336792 1107.808228 1111.169189 1116.242554 1119.400635 1117.601074 1115.129883 1120.400635 1122.657593 -1102.616943 1100.977539 1101.382324 1102.285522 1103.207397 1104.37915 1105.515503 1106.794312 1108.008911 1108.937744 1109.726685 1110.007568 1110.148682 1110.101196 1110.632935 1111.486206 1112.346313 1112.984741 1113.625732 1114.29895 1114.918335 1115.637085 1116.270874 1116.922241 1117.640869 1118.415527 1119.205933 1120.130615 1121.054199 1122.017212 1123.089722 1125.079346 1127.736694 1130.650024 1133.080322 1134.671631 1135.177124 1135.337769 1135.234009 1134.987305 1134.620605 1134.165161 1134.139771 1135.089111 1138.097046 1141.010132 1143.385254 1145.421509 1147.05542 1148.125122 1148.768799 1149.925781 1151.228638 1152.900024 1154.683228 1156.319336 1158.226074 1161.672607 1166.101074 1170.779663 1173.522949 1174.497925 1176.488281 1180.960938 1184.855713 1190.044312 1193.916626 1197.374023 1206.155151 1218.536499 1236.717041 1252.248169 1260.524414 1265.820312 1268.349976 1253.086548 1244.673218 1241.063232 1241.964478 1253.513916 1264.76709 1273.644653 1282.0271 1286.625488 1291.562744 1293.002197 1293.528076 1293.821777 1296.139038 1291.602295 1282.827881 1277.052124 1272.211792 1263.185547 1261.617676 1259.067261 1253.637695 1257.247925 1254.58606 1249.272949 1257.236084 1256.112061 1239.499512 1226.643921 1217.843506 1212.583252 1207.318726 1205.282593 1204.213257 1203.170532 1201.124634 1199.354736 1197.52063 1196.098633 1194.129639 1193.704346 1194.919189 1195.777832 1195.373169 1195.05603 1195.427856 1195.613281 1195.52002 1195.441772 1195.647705 1196.00415 1196.23938 1196.46521 1196.292603 1196.224487 1195.997192 1195.35083 1194.653442 1193.873413 1193.608154 1193.494019 1193.552002 1192.989746 1191.959717 1190.317383 1189.218628 1188.717896 1188.665405 1189.016235 1189.949951 1192.126953 1194.675049 1197.318359 1200.018311 1202.780029 1202.178345 1204.563354 1213.165039 1221.286011 1211.626587 1206.309326 1201.76123 1199.338867 1196.271118 1194.830322 1197.806763 1201.207886 1204.417847 1206.679443 1207.648804 1207.729492 1202.856812 1195.591431 1194.84021 1199.814941 1206.250366 1208.751221 1206.872681 1203.401245 1200.043091 1196.450928 1192.097778 1189.334961 1186.143799 1185.373047 1185.118408 1184.725586 1184.043457 1178.360352 1173.688477 1173.058716 1173.016235 1172.953857 1172.859741 1172.743408 1172.691895 1172.702881 1172.644165 1172.547119 1172.387695 1172.194946 1172.048706 1171.915161 1171.843262 1171.888062 1171.975342 1172.0979 1172.243652 1172.349731 1172.387573 1172.574097 1172.687744 1172.824951 1173.002686 1173.125488 1173.143311 1173.133545 1173.273804 1173.35022 1173.459473 1173.52417 1173.464722 1173.349487 1173.168457 1172.950317 1172.715942 1172.320068 1171.930176 1171.717529 1171.557617 1171.329468 1170.843384 1170.263184 1169.770264 1169.396484 1169.164062 1168.904053 1168.65918 1168.318848 1168.004272 1167.594238 1167.0271 1166.345947 1165.818237 1165.36731 1164.986084 1164.677612 1164.512817 1164.096436 1163.64563 1163.279175 1162.823486 1162.419312 1161.947021 1161.616821 1161.280396 1160.952759 1160.523804 1160.104736 1159.697021 1159.191284 1157.929077 1155.93103 1155.264526 1156.61853 1158.14209 1159.9198 1161.891357 1163.868896 1165.935425 1167.662964 1169.209106 1170.79248 1172.774902 1176.473389 1181.729492 1188.599121 1194.688232 1197.759033 1197.136353 1197.049316 1197.84668 1205.307739 1212.03186 1222.543579 1230.369995 1233.756714 1231.536743 1226.608887 1226.422119 1228.384277 1229.440063 1232.542236 1242.152832 1246.390381 1247.984863 1248.863159 1249.821899 1251.969604 1255.377319 1259.459351 1268.306763 1272.744141 1277.84668 1278.586792 1277.678955 1278.844971 1279.225586 1275.291504 1267.673218 1259.735229 1248.037476 1231.039062 1232.702026 1237.554932 1242.909424 1249.482422 1258.865601 1270.914795 1272.165771 1269.956543 1262.92395 1254.622192 1248.414062 1241.843506 1235.676392 1226.614868 1212.951782 1198.965698 1185.029785 1183.66748 1189.275635 1188.093628 1181.324829 1174.674561 1169.729004 1164.490479 1161.306641 1158.892944 1156.342651 1154.087646 1151.83667 1150.203125 1149.043701 1148.283203 1147.751709 1147.211548 1145.589722 1142.373779 1139.417358 1137.219482 1136.293213 1136.107178 1135.904419 1134.867065 1134.155029 1133.021973 1131.838013 1130.996826 1129.981934 1128.810791 1127.599487 1126.276978 1124.949219 1123.421265 1122.458252 1123.387695 1123.567139 1123.353516 1123.22644 1122.966553 1122.879761 1122.566895 1121.244019 1119.063354 1116.644897 1114.868774 1113.783203 1112.856689 1113.145874 1113.431152 1113.839355 1114.213501 1114.702637 1115.285034 1116.086426 1116.894043 1117.791138 1118.333374 1118.82312 1119.144043 1119.293823 1119.545776 1119.822632 1120.132568 1120.405396 1120.820679 1121.390747 1122.134888 1123.74646 1125.082886 1125.789062 1126.005981 1126.208374 1126.437378 1127.32959 1128.727783 1130.408203 1131.956055 1132.922852 1133.552734 1134.312378 1135.358032 1137.075684 1138.869019 1140.59436 1142.145996 1143.450317 1144.523071 1145.17395 1145.833862 1146.35437 1146.536255 1146.130737 1145.720825 1145.787598 1146.873901 1147.727661 1147.591675 1146.968872 1146.060181 1144.743164 1144.121582 1143.380493 1142.092163 1140.858398 1139.616211 1138.279297 1136.868286 1135.325439 1133.639404 1132.192261 1131.358643 1130.799194 1130.208496 1129.808228 1129.557007 1129.749512 1130.299561 1131.19165 1132.25 1133.356445 1134.123291 1137.96582 1141.300659 1143.581909 1145.917725 1149.930176 1154.684204 1157.163818 1158.387573 1164.508911 1170.829468 1175.099609 1178.694946 1185.677856 1195.019775 1194.923706 1191.02832 1184.308228 1181.210815 1184.118774 1192.21936 1201.594116 1221.710571 1229.990234 1233.809204 1238.874756 1245.652344 1247.852417 1245.923218 1242.292725 1237.658447 1232.898193 1229.031494 1225.452148 1220.841309 1216.216919 1209.36792 1205.86377 1196.983276 1197.62561 1195.559326 1190.428101 1185.300415 1179.559814 1173.112915 1167.903564 1162.854736 1158.870728 1155.040771 1151.105347 1146.710449 1146.356567 1146.492432 1146.063477 1145.067749 1144.075562 1143.309082 1142.458618 1141.638062 1140.894287 1140.010864 1139.035645 1138.111084 1137.328003 1137.174316 1137.181641 1137.502319 1137.527954 1137.147217 1136.374023 1135.009033 1134.238037 1135.002441 1135.040649 1133.612061 1131.31604 1126.143921 1121.801392 1119.562378 1117.726685 1114.980103 1111.231201 1109.844971 1109.821167 1109.815063 1109.308105 1108.222656 1107.479004 1106.750732 1106.005859 1105.366943 1104.797607 1104.187866 1103.502563 1102.49585 1101.005371 1099.24585 1097.852783 1097.79187 1097.822754 1097.990479 1097.413086 1096.812866 1095.634277 1094.846924 1094.193848 1093.95166 1094.118164 1094.448364 1094.792969 1095.009644 1095.119019 1095.450073 1096.056641 1096.742798 1096.909546 1097.464966 1097.315063 1097.255127 1099.679321 1102.037964 1104.958618 1108.596313 1110.574219 1110.489502 1109.146484 1107.951294 1107.553955 1110.826416 1121.115723 1124.970703 1127.299316 1132.301514 1145.110474 1156.324707 1160.508667 1146.530151 1131.526611 1122.596558 1119.079468 1116.223511 1113.273315 1109.801025 1108.710815 1106.233154 1104.88208 1103.789307 1102.138184 1099.744385 1097.449951 1096.612915 1095.953613 1095.786987 1096.377197 1098.279175 1101.735962 1107.267334 1111.773315 1113.472168 1112.65979 1105.704834 1105.984985 1113.826904 1113.999268 -1103.387939 1101.731934 1101.625854 1102.588867 1103.594238 1104.830078 1106.297607 1107.560425 1108.761963 1109.507324 1110.342407 1110.695801 1110.794189 1110.825562 1111.251587 1111.883301 1112.623169 1113.413208 1114.047119 1114.722778 1115.352173 1115.986572 1116.672974 1117.30188 1118.013794 1118.747559 1119.507812 1120.403198 1121.377808 1122.452393 1124.049683 1125.873535 1128.674438 1131.646851 1133.918457 1134.778931 1135.031128 1135.072388 1134.484497 1133.936401 1133.661133 1133.620972 1134.025391 1135.45874 1137.838745 1140.19812 1142.490479 1144.231812 1145.889526 1146.939209 1147.593018 1148.865723 1150.587036 1152.44812 1154.376099 1155.982422 1157.412598 1159.034912 1163.319092 1168.222412 1169.909668 1169.761475 1171.026489 1177.846436 1181.078491 1186.116089 1192.057373 1198.49585 1210.935913 1224.428345 1240.302734 1257.354126 1263.500122 1267.940308 1259.312988 1246.321533 1239.802856 1232.550293 1241.015137 1250.927246 1258.962036 1268.626709 1275.760132 1280.893066 1282.361572 1283.456787 1287.34375 1291.335083 1294.032471 1292.283203 1282.049805 1275.134521 1268.077026 1256.951294 1245.364868 1248.828369 1244.174683 1246.157715 1245.071167 1240.015259 1249.017212 1246.253296 1237.100708 1226.380493 1217.584229 1210.683594 1206.455322 1203.19519 1200.248657 1199.174561 1198.899048 1198.470703 1197.17334 1195.453247 1194.608887 1194.455322 1195.30127 1195.630737 1194.693115 1194.022217 1194.231812 1194.683105 1194.563843 1194.392822 1194.678955 1195.156006 1195.54834 1196.213745 1196.290161 1196.140625 1196.066528 1195.667603 1194.903931 1194.217163 1194.057861 1194.410767 1194.91394 1194.56543 1193.885376 1192.433472 1191.285278 1190.803833 1190.947754 1191.445679 1192.07959 1194.066895 1197.533203 1201.174805 1204.797363 1210.895508 1210.416382 1209.040771 1213.63501 1215.179688 1209.643433 1205.317139 1201.864868 1198.821167 1196.00061 1194.112305 1194.004761 1194.992065 1197.88855 1200.645508 1201.675049 1201.190186 1197.613403 1194.382324 1193.617432 1195.796631 1199.053101 1200.951416 1199.740479 1195.893677 1192.742798 1186.654785 1183.425903 1182.572144 1182.206177 1182.096924 1182.13623 1182.365112 1180.826538 1174.733398 1173.3302 1173.352417 1173.231689 1173.17395 1173.160156 1173.065308 1172.973511 1173.007935 1172.970947 1172.860596 1172.668945 1172.475464 1172.405884 1172.243896 1172.141479 1172.268433 1172.350342 1172.468994 1172.621826 1172.700195 1172.914551 1172.963501 1173.159546 1173.210449 1173.456787 1173.547974 1173.533691 1173.496704 1173.433716 1173.568237 1173.552856 1173.568604 1173.4104 1173.325317 1173.141479 1172.883057 1172.576538 1172.168091 1171.86792 1171.6427 1171.460083 1171.052734 1170.792725 1170.251221 1169.963501 1169.719116 1169.583862 1169.330811 1169.092896 1168.775879 1168.459961 1167.897827 1167.342529 1166.5896 1166.10437 1165.68457 1165.281128 1165.067505 1164.681519 1164.364258 1163.999512 1163.60022 1163.136719 1162.600708 1162.240112 1161.819946 1161.474976 1160.987671 1160.506958 1160.033081 1159.498657 1158.877441 1157.9646 1156.42041 1155.634155 1156.29541 1157.732544 1159.011475 1160.718384 1163.105347 1165.687988 1167.72583 1168.901245 1169.480713 1170.262695 1173.54187 1177.734863 1181.632568 1184.286865 1184.616821 1183.816772 1191.708374 1194.824097 1202.591675 1206.879272 1217.381104 1225.286255 1233.423584 1233.998657 1232.395386 1233.379639 1235.410767 1237.139893 1242.433105 1247.228516 1250.473633 1251.833496 1252.879883 1254.697998 1257.088745 1260.166748 1265.010742 1273.963135 1280.967773 1285.713867 1286.703491 1286.548584 1286.994141 1284.617676 1280.240723 1272.176147 1260.645752 1247.918335 1230.547485 1238.310547 1245.433105 1253.952515 1257.880615 1259.605469 1268.668457 1273.920166 1272.997681 1269.887573 1259.468506 1249.479614 1241.888428 1231.901611 1225.28418 1216.492676 1198.460693 1184.049683 1193.595093 1197.323975 1191.353149 1182.49292 1174.978027 1169.74646 1164.617798 1160.982666 1158.578003 1156.245605 1153.246338 1150.824829 1148.918823 1147.014282 1147.281128 1146.997803 1146.537109 1145.226318 1142.843872 1140.471924 1138.276978 1136.968384 1136.251831 1135.694946 1135.092529 1134.309082 1133.371948 1132.86438 1132.093262 1130.98584 1129.7323 1128.292114 1126.865723 1125.588501 1124.447021 1123.776733 1123.67688 1123.677612 1123.379517 1123.133179 1122.992554 1122.847412 1122.517944 1120.932739 1118.688843 1116.470459 1114.894287 1113.695435 1113.102905 1113.481201 1113.858154 1114.318726 1115.043091 1115.603149 1116.116943 1116.781616 1117.50415 1118.324463 1118.989014 1119.388428 1119.735474 1119.898438 1120.056885 1120.245361 1120.537354 1120.841187 1121.158569 1121.481323 1122.05957 1123.680054 1125.907959 1128.047974 1129.781494 1130.29126 1130.492676 1130.319336 1130.561401 1131.081909 1131.975708 1132.94519 1133.466675 1133.715576 1134.306641 1135.729004 1138.432495 1140.861084 1142.700684 1144.094116 1145.703857 1146.575562 1147.299316 1147.858276 1148.168091 1147.91272 1147.337158 1147.291748 1148.104004 1148.747925 1148.79541 1148.205933 1147.450439 1146.685791 1146.078857 1145.291748 1143.969849 1142.655029 1140.911499 1139.200195 1137.443604 1135.804321 1133.916748 1132.773071 1132.583618 1132.401489 1131.840332 1131.034546 1130.505859 1130.248901 1130.587402 1131.380005 1132.624146 1134.055786 1135.411377 1137.190796 1139.070557 1141.296387 1143.557983 1145.695557 1150.199585 1153.779175 1156.373291 1162.008911 1167.858643 1171.167969 1175.979492 1182.693848 1188.327393 1188.93103 1187.015381 1181.702148 1179.326782 1181.293213 1186.319702 1198.209595 1214.50354 1217.081177 1217.85791 1230.382812 1236.944336 1240.008911 1244.600708 1243.941284 1238.64856 1234.031372 1230.10437 1226.177979 1220.891357 1217.407227 1210.214233 1206.613159 1204.491455 1200.69873 1197.312866 1192.292847 1187.270996 1182.424805 1175.202515 1169.258423 1162.571289 1158.511475 1156.170288 1152.514526 1148.66626 1148.249146 1148.308594 1147.401001 1146.050049 1145.178833 1144.427124 1143.695312 1143.010864 1142.124756 1141.239014 1140.476074 1139.757568 1139.207031 1138.850952 1138.855957 1138.78064 1138.609131 1138.110718 1137.463135 1136.206177 1135.991089 1135.998169 1135.663818 1134.939087 1134.879028 1132.15686 1121.901123 1121.464233 1119.561157 1116.445679 1113.239258 1112.015015 1112.155518 1111.545654 1110.745117 1109.465698 1108.101318 1107.032715 1106.153442 1105.266724 1104.480713 1103.701904 1102.83606 1101.835693 1100.552368 1099.180542 1098.053589 1097.848511 1097.841919 1097.72998 1097.857666 1096.499756 1095.52832 1094.557007 1093.760742 1093.471191 1093.442993 1093.666626 1093.929688 1094.052002 1094.231567 1094.561035 1094.973755 1095.401367 1095.848145 1096.098389 1096.24292 1097.055908 1098.705933 1100.997681 1103.65564 1106.85083 1108.253296 1106.314941 1103.787598 1103.797974 1106.105469 1109.469971 1113.853149 1120.078125 1124.62146 1133.64624 1146.847656 1156.704712 1157.333496 1143.8302 1127.373413 1119.853027 1116.335938 1113.579956 1111.578979 1108.220703 1104.843506 1102.222656 1101.600098 1101.313477 1100.259033 1098.123047 1096.237183 1095.289185 1094.895264 1094.872437 1095.456055 1096.74939 1098.650635 1102.914062 1108.723755 1108.882446 1102.715332 1095.59375 1102.47522 1106.825073 1106.073242 -1104.489746 1102.59729 1101.715332 1102.777344 1103.908325 1105.231323 1106.78479 1108.330322 1109.630127 1110.138062 1110.623901 1111.145874 1111.430054 1111.544556 1112.001953 1112.531372 1113.067627 1113.71814 1114.351562 1114.991455 1115.727417 1116.365723 1116.965942 1117.565918 1118.219116 1118.883667 1119.688477 1120.472534 1121.376221 1122.184204 1124.278564 1126.292603 1129.1875 1133.016968 1134.621216 1134.798828 1134.747559 1134.409668 1133.512573 1133.065186 1133.174316 1133.449951 1134.133057 1135.646362 1137.357422 1139.58374 1141.578369 1143.212891 1144.708862 1145.549072 1146.330933 1147.685791 1150.07312 1152.150635 1153.977051 1155.828735 1157.59436 1159.453491 1162.406616 1165.955566 1168.300415 1171.102783 1173.146118 1177.923584 1183.346436 1187.052002 1192.569946 1201.164795 1213.611206 1225.873779 1246.063232 1259.009766 1267.70874 1267.02771 1257.880859 1243.329224 1234.402344 1228.589233 1229.494019 1242.678467 1249.913574 1255.636841 1265.315674 1271.495605 1272.904419 1276.378906 1282.930054 1290.34436 1294.560059 1293.533447 1283.674438 1275.313965 1267.448975 1252.658936 1241.980347 1234.960449 1234.956543 1237.761963 1235.363159 1225.056274 1233.291016 1235.664429 1231.095093 1223.191895 1215.795776 1208.788086 1204.501465 1199.919678 1196.065552 1195.161621 1195.963379 1197.168823 1196.342407 1194.520386 1193.875366 1193.846313 1194.23938 1193.952393 1193.473022 1192.835815 1192.952026 1193.192505 1193.19043 1193.223389 1193.558716 1194.112915 1194.770508 1195.633423 1196.127563 1196.092407 1195.962769 1195.565186 1195.036987 1194.421875 1194.289062 1194.771118 1195.547852 1195.828369 1195.475342 1194.328247 1192.955078 1192.545044 1192.924438 1193.665894 1193.916748 1195.294189 1199.889648 1204.576782 1208.82605 1217.624146 1217.680054 1214.932495 1214.050415 1210.159668 1206.307739 1204.409912 1201.98877 1198.581665 1195.282104 1194.160156 1193.940918 1193.962646 1193.820801 1195.010742 1195.316284 1195.473022 1194.550415 1193.165527 1192.618896 1193.349243 1194.236816 1194.27002 1193.32312 1189.626343 1182.517334 1181.895752 1181.123901 1180.576782 1180.247192 1179.737915 1179.199951 1178.05957 1175.307617 1173.613403 1173.584717 1173.535889 1173.532959 1173.466431 1173.438843 1173.43103 1173.363281 1173.282837 1173.253662 1173.150757 1172.998657 1172.852905 1172.692139 1172.548096 1172.497437 1172.566895 1172.728882 1172.758057 1172.921143 1173.004272 1173.214966 1173.448975 1173.53186 1173.660156 1173.865234 1173.920776 1173.907349 1173.795166 1173.70459 1173.702759 1173.590942 1173.498779 1173.348755 1173.213135 1172.94873 1172.597534 1172.378906 1171.955444 1171.597046 1171.213013 1170.993042 1170.827148 1170.473145 1170.27478 1170.206177 1170.134033 1170.089722 1169.949097 1169.64624 1169.258789 1168.817139 1168.243896 1167.635254 1166.982178 1166.447754 1165.988281 1165.660889 1165.391968 1165.083984 1164.737915 1164.351562 1163.901733 1163.38501 1162.869385 1162.431519 1161.953003 1161.530396 1160.936401 1160.398438 1159.776123 1159.034424 1158.479492 1157.613892 1156.830078 1155.892944 1156.326416 1157.569824 1158.268799 1159.294312 1162.866821 1166.102905 1168.729248 1170.276489 1170.310303 1170.266968 1170.599365 1173.480957 1177.264404 1180.043823 1181.385132 1185.81543 1196.35144 1205.050293 1211.050171 1213.693359 1216.195068 1221.216797 1229.096313 1233.880005 1238.454346 1239.127075 1240.036133 1243.276611 1249.105225 1254.588501 1255.963379 1255.371948 1256.577393 1259.30957 1262.445557 1265.221802 1268.865723 1283.143433 1292.630615 1296.630981 1296.010254 1295.199707 1293.736328 1288.90271 1280.280151 1271.78894 1259.160767 1246.828125 1236.021118 1245.390015 1254.114502 1262.081177 1267.181763 1266.717041 1269.856323 1277.946045 1277.461548 1273.628296 1265.827637 1253.121216 1245.318604 1235.718506 1221.796387 1208.415894 1199.18396 1195.067139 1196.482178 1197.101929 1192.813599 1181.573853 1171.339966 1167.898926 1163.018433 1158.743286 1157.319824 1155.668213 1152.628052 1148.352661 1147.085449 1146.316528 1146.209961 1145.843018 1145.478271 1144.65564 1143.504761 1141.571777 1139.056274 1136.305786 1134.966187 1134.950684 1134.301025 1133.936646 1133.916626 1133.981812 1133.195801 1131.899048 1130.401001 1128.92688 1127.597412 1126.285034 1125.078491 1124.192993 1123.561523 1123.109741 1122.178101 1122.328979 1122.512573 1122.424438 1122.306152 1120.62439 1117.927979 1115.80896 1114.645996 1113.908813 1113.465698 1113.843628 1114.371338 1115.028931 1115.763794 1116.377808 1117.00354 1117.662476 1118.294678 1119.009155 1119.68457 1120.137207 1120.449829 1120.579224 1120.641235 1120.827881 1120.99353 1121.412842 1121.704834 1121.960327 1121.996216 1124.694336 1127.676514 1130.367188 1133.332764 1134.476807 1134.262817 1133.282349 1132.832397 1132.226929 1132.786011 1134.464355 1134.42041 1133.98938 1134.374634 1134.829834 1138.854492 1141.544678 1143.327637 1145.02063 1146.71814 1147.810913 1148.593262 1149.192261 1149.552368 1149.45874 1149.271118 1149.253052 1149.553711 1149.96106 1149.954956 1149.550659 1148.872314 1148.375244 1147.739868 1147.003296 1145.748779 1144.170776 1142.516724 1140.470825 1138.08313 1135.484497 1133.770752 1133.81604 1133.974243 1134.019897 1133.528931 1132.561768 1131.412476 1130.908447 1130.997681 1131.601318 1132.70874 1134.639404 1136.322388 1136.24231 1135.796875 1139.123169 1142.31543 1145.889526 1149.32605 1151.928833 1155.182617 1159.803589 1162.471802 1167.406982 1172.791748 1178.92395 1183.091187 1183.860352 1183.155518 1180.443115 1176.342529 1178.189819 1183.661743 1191.141357 1203.141357 1204.930176 1211.779785 1220.830933 1220.887451 1222.498291 1229.394165 1236.30603 1237.143066 1234.633301 1231.702637 1227.740479 1224.106812 1220.726685 1215.714355 1211.033813 1207.807129 1202.145142 1196.955811 1190.139771 1185.515259 1182.787598 1175.126709 1168.884521 1159.711548 1158.105103 1156.668701 1154.450806 1151.915894 1150.317749 1149.493774 1148.269653 1146.860474 1145.908325 1145.332886 1145.017456 1144.33313 1143.253418 1142.402466 1141.870361 1141.383789 1140.755005 1140.476562 1140.316895 1140.061646 1139.707031 1139.12561 1138.567139 1137.702148 1137.144165 1136.557007 1136.030273 1135.476685 1135.080322 1133.826538 1126.585938 1123.420044 1120.727173 1117.996216 1116.406738 1115.852661 1115.350342 1113.923462 1111.978638 1109.922852 1108.802002 1107.540405 1106.396973 1105.267822 1104.300903 1103.285156 1102.40979 1101.404907 1100.412231 1099.437988 1098.763062 1098.055908 1097.85083 1097.65332 1097.860229 1097.039551 1095.418091 1094.326904 1093.431274 1092.94043 1092.725098 1092.858643 1093.014282 1093.130005 1093.364746 1093.510986 1093.677734 1094.117065 1094.470703 1094.921265 1095.578979 1096.643066 1098.245239 1100.473511 1102.12085 1103.126831 1102.533936 1100.196899 1097.26709 1100.30896 1104.590332 1108.072021 1110.864502 1119.795532 1126.37561 1136.526367 1148.924438 1157.215576 1150.10791 1137.50354 1122.667969 1118.135376 1113.77124 1110.155884 1108.947632 1105.176636 1101.189575 1097.651611 1098.790039 1099.958008 1099.122681 1097.050171 1095.519409 1094.462891 1093.950073 1093.899414 1094.307617 1095.254883 1096.592163 1097.7677 1099.493164 1097.744141 1093.718506 1092.765259 1097.259888 1097.866821 1096.788452 -1105.906006 1103.605347 1102.214722 1102.898193 1104.233887 1105.503784 1107.285034 1108.942627 1110.199341 1110.712524 1111.126099 1111.555664 1111.934082 1112.1604 1112.638672 1113.076904 1113.53772 1114.250854 1114.700562 1115.477783 1116.182983 1116.783447 1117.395508 1117.892578 1118.487671 1119.132935 1119.910645 1120.730469 1121.475952 1122.127197 1123.47229 1125.930908 1128.616333 1131.596436 1133.619507 1133.681641 1132.934448 1132.523804 1132.438843 1132.636963 1132.8573 1133.290039 1134.029907 1135.327271 1137.21936 1139.324219 1141.114624 1142.74231 1144.055176 1145.095459 1146.251221 1147.859741 1150.04834 1151.968506 1154.013062 1156.257202 1158.546265 1160.747559 1162.51123 1165.114014 1168.273804 1171.56897 1174.345825 1177.784912 1182.289795 1186.430176 1191.048096 1198.62085 1210.271484 1223.656006 1240.109497 1259.687134 1261.506714 1259.630859 1252.52417 1242.66272 1233.361328 1223.103516 1221.925171 1230.40686 1239.900024 1248.925659 1257.765747 1261.969238 1263.8927 1271.750488 1281.993774 1287.893433 1292.31958 1289.491455 1281.868042 1273.220703 1265.083496 1253.20166 1242.776855 1232.617432 1228.018555 1231.816284 1226.773193 1217.690308 1217.71167 1225.059814 1224.632935 1218.55835 1212.986938 1208.318115 1202.27124 1197.155762 1194.571289 1194.097412 1194.916138 1195.813721 1195.542603 1193.69812 1192.71582 1192.378906 1192.214844 1192.104126 1191.626221 1191.418823 1191.417603 1191.603149 1191.750488 1192.082642 1192.660156 1193.353516 1194.255737 1195.283325 1195.919434 1195.950317 1195.722168 1195.243408 1194.904053 1194.394897 1194.337524 1194.751709 1195.40918 1195.602417 1195.641113 1195.638794 1193.869385 1193.623047 1194.18042 1195.177246 1196.626221 1198.283813 1203.071167 1208.018555 1213.493652 1221.956055 1221.427979 1219.401978 1217.043213 1211.338867 1207.487061 1206.180542 1204.036743 1201.024536 1197.797607 1196.52356 1195.45752 1194.227661 1194.020386 1193.998657 1194.015381 1193.597534 1192.983398 1192.178589 1191.719482 1191.260742 1191.054077 1189.987915 1188.178467 1185.836792 1184.307983 1182.55957 1180.297119 1179.239014 1178.576294 1177.886841 1176.832397 1175.668091 1173.808228 1173.831665 1173.838623 1173.838989 1173.833618 1173.767212 1173.745117 1173.790039 1173.661133 1173.574097 1173.55188 1173.46814 1173.342529 1173.194092 1172.991943 1172.85437 1172.861572 1172.868896 1173.027588 1173.06604 1173.224365 1173.333984 1173.523193 1173.759399 1173.969849 1174.089233 1174.174316 1174.254761 1174.158447 1174.032715 1173.936035 1173.836792 1173.639648 1173.460327 1173.216675 1172.977173 1172.669922 1172.408813 1172.025146 1171.692139 1171.330566 1171.043213 1170.727905 1170.579712 1170.536743 1170.602051 1170.705933 1170.773926 1170.733276 1170.534424 1170.236572 1169.736084 1169.232788 1168.689209 1167.922607 1167.368652 1166.756348 1166.402344 1166.087891 1165.812378 1165.531006 1165.131104 1164.806885 1164.359863 1163.859497 1163.298584 1162.745239 1162.233643 1161.670532 1161.122925 1160.423096 1159.364868 1158.652588 1158.265625 1157.758789 1156.725952 1156.147583 1157.103271 1158.506958 1159.25415 1160.687866 1163.648193 1167.078857 1170.011353 1171.873413 1172.544556 1172.033081 1171.133789 1171.000854 1176.452637 1180.097412 1182.780151 1191.890381 1201.644531 1210.140015 1216.414551 1220.123901 1220.654297 1218.890381 1231.243042 1237.341797 1244.223755 1244.852173 1244.557007 1247.686646 1254.722046 1258.361328 1259.460938 1259.809692 1261.272949 1264.232788 1267.933105 1271.443237 1279.066528 1292.138428 1300.942017 1307.00415 1305.323486 1301.315063 1296.590332 1289.397827 1276.271118 1268.900391 1258.006592 1243.642822 1245.670044 1253.536011 1262.639404 1270.581787 1274.827148 1275.042969 1278.593384 1282.739868 1281.729248 1276.570923 1269.088623 1254.737671 1246.280029 1238.644287 1230.046265 1218.114136 1209.357178 1197.459717 1192.565918 1194.080444 1191.7854 1183.177368 1173.881836 1168.918091 1163.099487 1159.128906 1157.697632 1156.011719 1152.89978 1148.033569 1147.103271 1147.000122 1146.845703 1146.142578 1145.528931 1145.504395 1145.089722 1143.139648 1139.918701 1136.506104 1134.674561 1134.447632 1134.604126 1134.841919 1135.015747 1134.91394 1134.083008 1132.593994 1131.002441 1129.599731 1128.34082 1127.075195 1125.729858 1124.137329 1122.780029 1122.609375 1122.271362 1122.115601 1122.15625 1121.994629 1121.451538 1119.500488 1116.384033 1114.743042 1114.503662 1114.111572 1113.735352 1114.28772 1114.972534 1115.704834 1116.408203 1117.153687 1117.850464 1118.584473 1119.226807 1119.826294 1120.388672 1120.976929 1121.142944 1121.24707 1121.268433 1121.289062 1121.513184 1121.930542 1122.907104 1125.415649 1126.827148 1128.534302 1129.757812 1132.008789 1134.446655 1136.091064 1136.435547 1135.762939 1134.629883 1133.988892 1133.678711 1135.235474 1136.124756 1135.410889 1134.895752 1137.874512 1140.741943 1142.971191 1144.327515 1145.587769 1147.233765 1148.371582 1149.511597 1150.404297 1150.86145 1151.042114 1151.019165 1151.034424 1151.276367 1151.349609 1151.139038 1150.822021 1150.396729 1149.888428 1149.279541 1148.407227 1147.351807 1146.089355 1144.423828 1142.196899 1139.698975 1136.784424 1135.663208 1135.723877 1135.747559 1135.602173 1134.879272 1133.884399 1132.356323 1131.515991 1130.953857 1131.820435 1132.626465 1134.295898 1135.264648 1134.254883 1134.203979 1137.459229 1140.449707 1144.530518 1147.442139 1149.047119 1150.293213 1155.302368 1159.169312 1165.211182 1170.485962 1173.873047 1176.047607 1177.337402 1177.397705 1175.351929 1171.621704 1174.724487 1181.88501 1186.80188 1189.213623 1196.809814 1204.431641 1205.63501 1208.93042 1211.760742 1217.119629 1223.479126 1233.845947 1234.74292 1233.280762 1230.012207 1226.370117 1222.47522 1218.062622 1213.252563 1208.331177 1204.025024 1195.687622 1187.360718 1183.206909 1181.038574 1171.994873 1169.604614 1165.060791 1161.301025 1158.901978 1157.061646 1154.62085 1152.468506 1151.022461 1149.569214 1147.977783 1146.871948 1146.593994 1146.48291 1145.593262 1144.472656 1143.623657 1143.264038 1142.724731 1142.271851 1141.891479 1141.586914 1141.206055 1140.787109 1140.207764 1139.516846 1138.686279 1137.807617 1136.913208 1136.102417 1135.130127 1134.466309 1131.886597 1126.651123 1122.855591 1120.739746 1119.511963 1118.909668 1120.077393 1120.075439 1116.590698 1112.487793 1110.060791 1109.042114 1107.875 1106.524414 1105.315186 1104.072632 1103.004517 1102.029541 1101.109375 1100.204102 1099.380127 1098.508789 1097.766602 1097.902588 1097.636841 1097.591675 1097.78894 1095.632812 1094.105713 1093.098145 1092.44397 1092.099731 1092.089233 1092.111572 1092.132935 1092.168823 1092.248779 1092.432251 1092.844482 1093.30896 1093.972168 1094.800171 1096.01416 1098.004395 1099.876343 1100.480469 1100.651611 1099.025391 1097.184082 1097.419556 1101.218506 1106.013062 1111.233276 1116.902832 1121.528687 1127.794678 1134.161743 1147.80188 1150.099976 1140.458984 1126.289429 1119.355225 1115.806274 1112.784912 1108.862793 1105.34729 1102.13147 1098.829834 1096.76355 1097.842041 1098.263916 1097.308472 1095.978516 1094.648315 1093.552246 1092.898193 1092.660522 1092.729248 1093.259155 1094.008057 1094.479614 1093.861084 1091.74585 1087.571777 1086.334229 1088.647705 1088.492065 1087.681763 -1107.304565 1104.871338 1103.133301 1102.814575 1104.139526 1105.558838 1107.365234 1109.050049 1110.240112 1110.898193 1111.354126 1111.85022 1112.270264 1112.643799 1113.221313 1113.797119 1114.165649 1114.73938 1115.262329 1115.836914 1116.571289 1117.145386 1117.682251 1118.25769 1118.849609 1119.387329 1120.066162 1120.935791 1121.786377 1122.575928 1123.688599 1125.646973 1127.929321 1129.901367 1131.124878 1131.528687 1131.53064 1131.804199 1132.048828 1132.422852 1132.875854 1134.009766 1135.126343 1136.383911 1137.934814 1139.793823 1141.277954 1142.656738 1143.982666 1145.525391 1147.024292 1148.434692 1150.046143 1152.018555 1154.088501 1156.439819 1158.543945 1160.616211 1162.167847 1164.509277 1167.583374 1170.491333 1173.477783 1176.247192 1179.784546 1183.18396 1189.427979 1197.018188 1207.258179 1224.626587 1240.683716 1258.512085 1257.114258 1253.114136 1245.413818 1238.151367 1230.318726 1220.126709 1216.66333 1223.147339 1235.216309 1244.783325 1250.160889 1253.297485 1253.883667 1266.793823 1278.891724 1283.956543 1285.12439 1282.140381 1276.851074 1268.058594 1257.927612 1249.802979 1241.002808 1232.64917 1219.446899 1222.405151 1223.30481 1214.509521 1207.140015 1216.621582 1217.945801 1213.791138 1209.231323 1205.087891 1199.692383 1195.74939 1193.960083 1193.318115 1193.768311 1194.622803 1194.236206 1192.65564 1191.430908 1190.647827 1190.189453 1189.872925 1189.449829 1189.440308 1189.482544 1189.875366 1190.374512 1191.064209 1191.765625 1192.72583 1193.767578 1194.886719 1195.631348 1195.84314 1195.511108 1195.25708 1194.592773 1194.136719 1194.144043 1194.418823 1195.062866 1195.422729 1195.383423 1194.973877 1193.957642 1194.060059 1194.950806 1196.749634 1199.045776 1202.061035 1205.952026 1211.516357 1217.733887 1223.259277 1222.960327 1221.816406 1220.408447 1216.048584 1211.496338 1208.742676 1206.280151 1204.062256 1202.029297 1200.686768 1199.353394 1197.179443 1194.569092 1194.395264 1193.645142 1193.037476 1192.551025 1191.743896 1190.868408 1189.755371 1188.221558 1186.274414 1183.896484 1182.41626 1181.998291 1181.18811 1179.430908 1178.087402 1177.217529 1176.42981 1175.539917 1174.195801 1174.158936 1174.150635 1174.205078 1174.260498 1174.138184 1174.135986 1174.144165 1174.138306 1174.02124 1173.968262 1173.89917 1173.818726 1173.668213 1173.484863 1173.290161 1173.209595 1173.1521 1173.264893 1173.302246 1173.452881 1173.501587 1173.575317 1173.804199 1173.953857 1174.222656 1174.479858 1174.500244 1174.461792 1174.364868 1174.166504 1173.964478 1173.733765 1173.506958 1173.286987 1173.026855 1172.747803 1172.476685 1172.080322 1171.707397 1171.300293 1171.092529 1170.781738 1170.765991 1170.955322 1171.013306 1171.176392 1171.316528 1171.346436 1171.271606 1171.040527 1170.635376 1170.140015 1169.668945 1168.993042 1168.2854 1167.754272 1167.219727 1166.804077 1166.616089 1166.341919 1166.108398 1165.850586 1165.496338 1165.064453 1164.463745 1163.776367 1163.181396 1162.603516 1162.104858 1161.44751 1160.786011 1159.733398 1159.160767 1159.106445 1158.496826 1156.616699 1156.861084 1158.325562 1159.675903 1160.509399 1161.939819 1164.411255 1167.492432 1170.310913 1172.425293 1173.723877 1174.634277 1174.917725 1175.071411 1177.626953 1181.31604 1184.330933 1191.459839 1201.833618 1212.069092 1220.267822 1224.106445 1227.157837 1228.181885 1232.205811 1241.537598 1246.671875 1249.022583 1251.032959 1253.746338 1256.804199 1259.937988 1262.053101 1263.965698 1265.68103 1267.792847 1272.276367 1276.664795 1283.930664 1296.56897 1306.075562 1308.861938 1307.281128 1303.535278 1297.648926 1289.030029 1273.967407 1265.265625 1254.306763 1244.131104 1252.916138 1262.265015 1272.371094 1280.379028 1282.496216 1283.228882 1283.838013 1285.200317 1283.731323 1278.429443 1270.212769 1256.294434 1246.101074 1238.99707 1231.119385 1218.4198 1210.455078 1201.695557 1193.152466 1182.379028 1184.638184 1185.519897 1178.425293 1170.709106 1165.131958 1161.276978 1158.578003 1156.7323 1154.040161 1151.358276 1149.489746 1148.751465 1148.467773 1147.948242 1147.576538 1147.308472 1146.939453 1144.738281 1141.255493 1137.665527 1134.482666 1135.319946 1135.904663 1135.929443 1135.626587 1135.36853 1134.284302 1132.719604 1131.474121 1130.262939 1129.066528 1127.729126 1126.244507 1124.361084 1122.456055 1122.484375 1122.743408 1122.855591 1122.727783 1122.414429 1121.175293 1119.286621 1116.47229 1115.138672 1115.051025 1114.702271 1114.762329 1115.130127 1115.75708 1116.446655 1117.188843 1118.009277 1118.760864 1119.466553 1120.307007 1120.980591 1121.481934 1121.900391 1122.000244 1122.057495 1122.057739 1122.051147 1121.979492 1123.982056 1127.855103 1133.66748 1134.480835 1132.192261 1131.369873 1132.093872 1134.384399 1136.365723 1137.435791 1137.446533 1136.761475 1136.150879 1134.796509 1135.030884 1137.577637 1138.494263 1139.492188 1141.207031 1143.491577 1144.590698 1145.370117 1145.636108 1146.318604 1148.024658 1150.239136 1151.576538 1152.209473 1152.534668 1152.680298 1152.70874 1152.830444 1152.817017 1152.637329 1152.20752 1151.770264 1151.259033 1150.556885 1149.575439 1148.469849 1147.366699 1145.988892 1143.800415 1141.857544 1140.44873 1139.330322 1138.546753 1137.915527 1136.988159 1135.73291 1134.327148 1132.875 1132.195435 1131.391846 1130.857422 1132.156494 1133.253906 1133.47229 1133.32373 1133.840332 1136.077637 1137.872559 1140.282715 1143.543457 1145.136108 1146.250122 1152.140991 1157.530884 1161.753784 1165.890747 1168.329224 1169.235962 1171.175415 1172.133545 1171.02417 1168.804443 1172.223022 1178.820557 1183.45874 1181.528931 1188.444214 1193.003052 1192.137085 1196.901855 1198.259888 1205.775146 1212.369263 1221.926392 1235.005371 1234.724243 1232.105835 1228.055054 1223.730103 1219.672729 1215.081299 1211.091553 1207.39624 1201.731079 1197.630981 1192.233643 1186.016602 1179.998291 1174.288208 1170.309448 1165.134399 1161.472534 1158.498657 1156.574097 1154.41687 1152.571655 1150.797729 1149.436279 1148.685913 1148.147461 1147.672119 1146.496704 1145.245605 1144.822754 1144.446045 1144.137939 1143.645996 1143.302002 1142.810913 1142.255371 1141.720825 1141.001831 1140.210327 1139.345215 1138.356079 1137.198364 1135.415283 1133.978638 1132.604736 1129.04187 1122.68396 1121.737305 1121.665771 1121.470215 1120.763306 1122.041748 1122.729248 1118.669556 1113.243286 1110.466919 1109.127808 1107.921997 1106.542603 1105.247925 1103.915527 1102.713379 1101.653687 1100.670166 1099.786621 1099.042603 1098.121826 1097.320801 1097.768799 1097.782104 1097.008667 1097.893921 1096.341309 1093.936523 1092.68811 1091.859497 1091.560913 1091.328979 1091.109741 1090.960571 1090.963379 1090.987061 1091.136108 1091.556641 1092.118042 1092.986084 1094.156372 1095.682861 1098.009155 1098.346436 1098.857056 1099.363281 1098.550537 1097.0271 1097.257202 1101.450928 1107.25354 1113.431152 1123.662842 1131.335205 1137.026123 1142.744385 1149.784912 1142.770508 1129.591064 1120.067139 1115.475952 1113.640869 1111.276489 1107.87854 1102.893677 1099.323486 1096.908691 1095.682983 1095.675171 1095.833008 1095.233643 1094.046021 1093.01062 1092.211548 1091.617432 1091.329956 1091.160034 1091.064697 1090.974731 1090.364014 1088.730225 1086.915894 1084.619385 1083.750732 1084.040649 1083.424072 1082.721313 -1108.952026 1106.406982 1104.101685 1102.981567 1104.067627 1105.626709 1107.39563 1108.928101 1110.033081 1110.729858 1111.473999 1112.065552 1112.564819 1113.042236 1113.700684 1114.334351 1114.898804 1115.348267 1115.823242 1116.339722 1116.861572 1117.508911 1118.018188 1118.393677 1118.933716 1119.575806 1120.228149 1121.012939 1121.782104 1122.721191 1124.061401 1125.535889 1127.070435 1128.493652 1129.605103 1130.384155 1130.892822 1131.324951 1131.967773 1132.431152 1133.208008 1134.441895 1136.425293 1137.833008 1139.33728 1140.853516 1141.992065 1142.981567 1144.083374 1145.699585 1147.250366 1148.768677 1149.95752 1151.77063 1153.887085 1156.065918 1158.020508 1159.834229 1161.488647 1163.50415 1165.94043 1168.707275 1171.490967 1173.868774 1177.070923 1180.411743 1187.755005 1201.970825 1212.765747 1224.796265 1236.020142 1244.654297 1247.330444 1247.036499 1241.296997 1233.799683 1223.501587 1212.760376 1213.004761 1221.384766 1231.151611 1237.960205 1242.777222 1243.780273 1246.727295 1260.811523 1271.511475 1279.023315 1278.992065 1275.941406 1272.337402 1265.494995 1255.735352 1245.639771 1234.521362 1226.649292 1217.941895 1216.454712 1221.53125 1213.848877 1204.939575 1208.723022 1209.229858 1206.364746 1202.345825 1198.399536 1196.413452 1194.44812 1193.19519 1192.538452 1192.382202 1192.516235 1191.960449 1191.001831 1189.854736 1188.857666 1188.033203 1187.314941 1186.893188 1186.875977 1187.438232 1188.217896 1188.932495 1189.914551 1190.833496 1191.788452 1192.770996 1193.8396 1194.747437 1195.003052 1195.059692 1194.467285 1193.935303 1193.807983 1193.862183 1194.098022 1194.371338 1194.55127 1194.462769 1194.030273 1194.020996 1194.254395 1195.675293 1197.988403 1200.696777 1203.940796 1207.824829 1214.291382 1220.226196 1223.770142 1223.582642 1222.755127 1221.525513 1219.548706 1215.129761 1211.251587 1208.581909 1206.872559 1205.918335 1205.231934 1204.086304 1202.416748 1199.850952 1197.660645 1195.551392 1194.496582 1193.003418 1191.942993 1190.629639 1188.956543 1186.694946 1184.251953 1182.855103 1182.353516 1181.54541 1180.275513 1178.477783 1177.085083 1176.184082 1175.322144 1174.411621 1174.465088 1174.571533 1174.528931 1174.549683 1174.612183 1174.518311 1174.525513 1174.558716 1174.484497 1174.397583 1174.4104 1174.297363 1174.200562 1173.959961 1173.763794 1173.570801 1173.647583 1173.714233 1173.703125 1173.784668 1173.846313 1173.959351 1174.065918 1174.184692 1174.362427 1174.562622 1174.752197 1174.92041 1174.866333 1174.71106 1174.439819 1174.22998 1173.950928 1173.667847 1173.397705 1173.10083 1172.706177 1172.417358 1172.032593 1171.52771 1171.145264 1170.914917 1170.795532 1170.987427 1171.135864 1171.403442 1171.652466 1171.72876 1171.762695 1171.731201 1171.49292 1171.068115 1170.608521 1170.005493 1169.31543 1168.708862 1168.12207 1167.635376 1167.307007 1167.038818 1166.83728 1166.61438 1166.292725 1165.978882 1165.582031 1164.999512 1164.340332 1163.70459 1163.072998 1162.484009 1161.880249 1161.162842 1160.509888 1159.77478 1159.442139 1158.549072 1156.950195 1157.090698 1158.633545 1160.214722 1161.343262 1162.782227 1164.89917 1167.509277 1169.990601 1171.762085 1173.949951 1176.678467 1178.705566 1178.973022 1179.651367 1181.133911 1184.485718 1191.946167 1202.350098 1212.608887 1220.890503 1225.633423 1231.992188 1234.917847 1233.481567 1237.790527 1246.57312 1251.677246 1255.974976 1258.654419 1260.096191 1262.256226 1264.500732 1266.803589 1269.554688 1272.245605 1276.713257 1281.021606 1289.122192 1301.546753 1309.093506 1309.453491 1308.031494 1304.240479 1295.918213 1283.015381 1269.930786 1261.551758 1252.34436 1252.826172 1262.228394 1273.092407 1282.439941 1285.706055 1287.269287 1288.44104 1288.815063 1287.809937 1284.895752 1279.008179 1269.773804 1257.128174 1245.927734 1238.920776 1232.343994 1219.446899 1210.586548 1202.158081 1193.299194 1184.90271 1179.725586 1179.368408 1176.723877 1171.686035 1166.063599 1161.280518 1158.540161 1156.807007 1155.596436 1153.657593 1151.689819 1150.450928 1149.640015 1148.934448 1147.980469 1147.268677 1146.807861 1145.380981 1142.468628 1139.469727 1136.902588 1136.781738 1136.895752 1136.610352 1136.087891 1135.356079 1134.108276 1132.880127 1131.935303 1130.791504 1129.50647 1128.233643 1126.763062 1125.119019 1124.125244 1123.704346 1123.577759 1123.413574 1123.328247 1122.962891 1122.169067 1119.549561 1117.208618 1115.988159 1115.573242 1115.766357 1115.9375 1116.120605 1116.651489 1117.239258 1117.957764 1118.83667 1119.543701 1120.313477 1121.034668 1121.753174 1122.434326 1123.184082 1123.546509 1123.66626 1123.6875 1123.641479 1124.416626 1127.387939 1132.122559 1135.137939 1135.198975 1133.769775 1133.131104 1133.656738 1134.154297 1136.256104 1138.168579 1139.116821 1139.111938 1138.784302 1137.966431 1138.548462 1140.349731 1141.900391 1143.296997 1144.786255 1146.833008 1146.779541 1146.69458 1146.690796 1147.313477 1147.978516 1151.544434 1153.0448 1153.893799 1154.187988 1154.217041 1154.278931 1154.492065 1154.393311 1154.098633 1153.624634 1153.168701 1152.571655 1151.81543 1150.286011 1148.397461 1147.030762 1146.522095 1144.482666 1144.035767 1144.385376 1143.220215 1142.123047 1139.918213 1137.665039 1135.675049 1134.237061 1133.113159 1132.724976 1132.569458 1132.290649 1131.893433 1131.864502 1132.272095 1132.638672 1132.904419 1134.273804 1134.979126 1134.191162 1139.856445 1142.693481 1145.292236 1149.924194 1154.463379 1158.381226 1161.2052 1163.216431 1164.654663 1166.052246 1166.568726 1166.324219 1166.563965 1169.487427 1173.652832 1175.897339 1175.976562 1179.844727 1181.211426 1184.19873 1190.895752 1197.608643 1208.282349 1215.94458 1232.86853 1237.000854 1236.256104 1233.580566 1229.509888 1225.059937 1220.638672 1216.511353 1212.942383 1208.988159 1204.494629 1200.172241 1195.872559 1189.254761 1182.804932 1177.366943 1172.765259 1168.067627 1163.523926 1160.138794 1157.58252 1155.572754 1153.696411 1151.999146 1150.653076 1149.702271 1148.822998 1147.73584 1146.38623 1145.666138 1145.733276 1145.77124 1145.540283 1145.138428 1144.535156 1143.782593 1143.145508 1142.436523 1141.65564 1140.772217 1139.681763 1138.6073 1137.57312 1136.207764 1135.209473 1134.617065 1131.828369 1124.614746 1125.297241 1125.900757 1124.597778 1121.922852 1120.552734 1120.545532 1117.002686 1112.755493 1110.133179 1109.032837 1107.709839 1106.368774 1105.02771 1103.819824 1102.586914 1101.276855 1100.06958 1099.111572 1098.47168 1097.802368 1097.297729 1097.020508 1096.557495 1096.078857 1097.213257 1097.541016 1093.483032 1091.800537 1091.19519 1090.913696 1090.610474 1090.167725 1089.884521 1089.732178 1089.628662 1089.79541 1090.211182 1090.958862 1091.955811 1093.269897 1095.271729 1098.120483 1097.340454 1098.230469 1098.7323 1098.585205 1096.981323 1097.504272 1102.260742 1108.747314 1116.516113 1125.878906 1135.898926 1138.128784 1142.678833 1145.013916 1132.491455 1121.046387 1111.980103 1111.37793 1111.256836 1107.90918 1103.995239 1100.540405 1097.297485 1095.622803 1094.359741 1093.604492 1093.328735 1092.737183 1091.719849 1091.043457 1090.53833 1090.193359 1089.966553 1089.748779 1089.243286 1088.30896 1087.758057 1086.338745 1084.872559 1083.379517 1082.031738 1081.385742 1080.412598 1079.256714 -1111.081055 1107.870483 1105.275757 1103.629272 1104.113159 1105.861572 1107.439575 1108.655518 1109.691406 1110.610107 1111.424072 1112.181519 1112.716431 1113.316772 1114.006714 1114.884277 1115.553589 1116.156372 1116.568115 1116.960693 1117.444702 1117.859619 1118.19812 1118.651367 1119.072632 1119.608032 1120.159058 1120.766968 1121.550903 1122.404907 1123.996948 1125.179199 1126.262329 1127.505005 1128.705566 1129.653198 1130.589966 1131.414062 1132.161499 1132.906616 1133.603882 1134.547974 1137.345459 1140.043701 1141.849976 1142.738281 1143.251099 1143.649536 1144.26416 1145.344482 1146.778076 1148.267944 1149.816284 1151.424316 1153.358032 1155.267212 1157.194092 1158.630249 1160.287109 1161.891968 1163.501831 1165.930298 1168.688354 1171.151001 1174.584351 1179.426147 1190.800903 1208.186401 1208.890015 1212.062012 1222.250977 1224.477905 1232.86438 1239.069336 1236.618408 1230.111694 1217.167603 1208.870483 1208.845947 1218.411255 1223.975708 1228.768555 1230.183594 1233.364258 1242.296753 1255.719116 1264.202026 1267.827026 1266.934448 1266.576538 1266.859009 1262.192993 1255.035156 1245.549561 1236.39209 1227.419678 1217.660034 1207.678101 1217.576538 1213.263306 1204.090942 1197.387329 1199.804565 1196.971558 1194.590698 1194.221313 1194.138672 1193.241211 1192.069946 1191.398682 1191.004639 1190.724854 1190.086914 1189.115356 1188.11377 1187.153687 1186.106567 1184.922607 1183.050415 1184.309082 1185.46582 1186.544189 1187.652588 1188.727661 1189.744385 1190.702759 1191.531982 1192.196167 1192.656616 1192.944824 1193.13855 1193.195557 1193.361938 1193.475342 1193.754639 1193.989014 1194.039062 1194.02417 1193.956299 1193.760498 1193.949951 1194.273926 1195.082397 1197.672485 1201.299316 1205.391113 1210.15564 1216.937378 1221.842651 1224.015015 1223.834106 1222.967285 1221.605713 1219.395752 1216.585571 1213.38269 1210.820068 1209.26416 1209.045776 1209.057861 1208.623047 1207.895752 1207.398804 1206.744507 1201.84314 1197.684204 1195.669434 1192.971558 1190.849976 1188.861206 1186.853516 1183.978882 1183.428589 1183.393677 1183.363037 1181.658447 1178.097046 1176.455566 1175.244873 1174.711548 1174.852173 1174.906982 1175.012939 1175.130371 1175.053345 1175.056519 1175.071777 1175.061157 1174.913696 1174.829102 1174.816895 1174.741089 1174.740845 1174.555542 1174.376221 1174.05542 1173.983032 1174.087891 1174.255615 1174.382324 1174.314819 1174.426636 1174.418213 1174.50354 1174.659058 1174.826416 1175.100342 1175.306641 1175.368286 1175.345337 1175.126709 1174.910034 1174.664062 1174.276123 1174.062134 1173.699951 1173.404297 1173.040405 1172.577759 1172.122681 1171.620239 1171.250854 1170.843384 1170.923828 1171.120483 1171.400757 1171.646729 1171.839233 1171.96814 1172.053955 1171.88147 1171.722046 1171.411621 1170.871826 1170.208252 1169.625977 1169.045654 1168.362671 1168.056885 1167.641724 1167.443359 1167.235596 1167.109375 1166.876709 1166.587769 1166.112671 1165.613403 1164.971313 1164.177002 1163.57019 1162.903076 1162.140137 1161.522705 1161.014038 1160.333008 1159.758423 1159.057129 1158.005859 1157.054199 1158.807129 1160.307251 1161.479736 1163.074707 1165.109985 1167.214478 1169.164673 1170.59375 1173.122437 1177.929199 1182.792969 1183.385254 1182.344604 1181.868774 1182.654297 1191.606445 1201.630493 1209.719238 1217.292358 1220.065674 1225.096802 1228.04834 1227.397705 1230.693604 1243.0 1251.717651 1258.009888 1261.840576 1263.967651 1264.796021 1266.100342 1268.967163 1272.911865 1276.825195 1281.836426 1289.634033 1299.841309 1308.629517 1310.779175 1309.575928 1306.227051 1300.504395 1292.48291 1276.643188 1266.597778 1259.228638 1258.865356 1265.193237 1273.648193 1281.801514 1286.790527 1289.768921 1291.646118 1292.898315 1293.160034 1290.554321 1285.545166 1278.574707 1267.843628 1256.942993 1243.671265 1238.38916 1234.174683 1222.557983 1212.380737 1205.581299 1195.855225 1185.37915 1176.051392 1170.459961 1171.315552 1171.20752 1164.527954 1159.110107 1158.082153 1157.781616 1157.723999 1155.746338 1153.450439 1151.869873 1150.784668 1149.617432 1147.48584 1146.680542 1145.840942 1144.67627 1143.057983 1140.995117 1139.292847 1138.377808 1137.721436 1137.204102 1136.22583 1134.746948 1133.708374 1132.984985 1132.220703 1131.166626 1129.94873 1128.672729 1127.27356 1125.981079 1125.014771 1124.206909 1123.827515 1123.529175 1123.301147 1122.970337 1122.335693 1119.182129 1116.595093 1116.013794 1116.124756 1116.43396 1116.753662 1117.069824 1117.522583 1118.029175 1118.757324 1119.456909 1120.199097 1120.890869 1121.632202 1122.410767 1123.373413 1124.193115 1124.771851 1125.217407 1125.60144 1126.127441 1127.379639 1130.401733 1134.641479 1134.668213 1134.679199 1135.392334 1135.28186 1134.436279 1134.420166 1134.935059 1139.02478 1141.037598 1142.334473 1142.591797 1142.223511 1142.485596 1143.218262 1144.389282 1146.296265 1147.244019 1148.746582 1149.896362 1150.072998 1150.248535 1150.787109 1151.853271 1153.509033 1154.812988 1155.565186 1155.789551 1155.858887 1155.891357 1155.952515 1155.978027 1155.689087 1155.165039 1154.551025 1154.067871 1153.139526 1151.472046 1147.588867 1146.741211 1145.998169 1145.475708 1145.524536 1146.775024 1146.88147 1145.04895 1141.5271 1138.252563 1135.840698 1133.88855 1133.321411 1133.282715 1133.50354 1133.247925 1132.972656 1132.522705 1131.830322 1132.199707 1132.661987 1132.600342 1133.189575 1135.091187 1138.024658 1141.21814 1144.050781 1147.232422 1150.834961 1154.318726 1157.030151 1158.479492 1159.560425 1160.376953 1161.066406 1159.776245 1161.629272 1165.952271 1169.111328 1170.895508 1170.237549 1171.952393 1183.365234 1191.228516 1198.324829 1203.515015 1211.634399 1225.17627 1237.262573 1240.648315 1238.77478 1235.22168 1231.173218 1226.341431 1221.703979 1217.713989 1214.052002 1210.273193 1206.247559 1201.584717 1196.929932 1191.207642 1184.666504 1179.904419 1174.836426 1170.199463 1165.282837 1161.189697 1158.279541 1156.307251 1154.509766 1153.027466 1151.622192 1150.367188 1149.02063 1147.432861 1146.286255 1146.441528 1146.830566 1146.988159 1146.838257 1146.332153 1145.493286 1144.631592 1144.023071 1142.996338 1141.977661 1140.872559 1139.797729 1138.820801 1137.7052 1136.749512 1135.916382 1135.03894 1132.675293 1133.202759 1133.970337 1133.779663 1127.111816 1122.488159 1119.577271 1117.355957 1114.743286 1112.388916 1109.939941 1108.749756 1107.476562 1106.297119 1105.05481 1103.770386 1102.443726 1101.02832 1099.502441 1098.441895 1097.811035 1097.749023 1097.646729 1097.003784 1095.957031 1094.614868 1094.464355 1096.982178 1091.864258 1090.922241 1090.458984 1090.091064 1089.740479 1089.433228 1088.845093 1088.399902 1088.142578 1088.334839 1088.841919 1089.599365 1090.680298 1092.077271 1094.177856 1096.362427 1096.189209 1097.573242 1098.199341 1098.092407 1096.42688 1097.2771 1101.943604 1107.200684 1116.122925 1126.027466 1130.990601 1130.50769 1130.454834 1129.931519 1121.560791 1114.87854 1107.936523 1111.000732 1107.922607 1103.166504 1099.95752 1097.325928 1095.532471 1093.755615 1092.464355 1091.738037 1091.161865 1090.312012 1089.318726 1088.927612 1088.770508 1088.795288 1088.74231 1088.646851 1088.121094 1086.688843 1085.419922 1084.785034 1083.300415 1081.9552 1080.378296 1078.685547 1077.172485 1076.395142 -1113.434814 1108.915894 1106.05542 1104.238281 1104.494141 1105.936035 1107.395508 1108.705688 1109.879517 1110.718262 1111.563843 1112.275757 1112.949829 1113.693359 1114.466919 1115.367188 1116.147095 1116.858032 1117.391113 1117.635376 1118.01123 1118.383423 1118.693237 1119.036011 1119.278442 1119.633667 1120.094849 1120.605713 1121.291138 1122.199097 1123.306519 1124.497803 1125.549194 1126.846436 1128.13916 1129.343018 1130.640381 1131.936646 1132.936768 1134.141113 1135.775391 1137.144897 1139.738892 1144.255371 1145.953125 1146.046265 1145.481812 1144.783203 1144.994629 1145.257446 1146.339355 1147.868896 1149.341309 1151.021729 1152.470093 1154.031372 1155.623047 1157.153687 1158.511353 1159.575806 1161.049561 1163.023193 1165.872437 1168.91687 1172.867554 1177.714233 1185.141357 1194.952637 1192.817993 1195.661621 1205.465088 1210.959106 1221.290771 1229.327393 1230.835815 1226.740845 1219.39209 1208.793823 1204.973633 1211.620117 1216.064209 1219.109375 1218.057129 1223.145508 1237.189453 1249.6073 1257.192627 1260.018921 1259.686768 1256.974243 1260.273071 1259.844238 1255.489502 1245.544922 1236.962524 1227.77478 1218.019775 1208.042725 1206.349731 1208.077759 1200.452026 1194.533936 1194.063354 1193.549805 1192.720459 1192.176636 1192.002441 1191.531006 1190.778564 1190.160034 1189.598022 1189.17627 1188.437378 1187.483887 1186.354004 1185.537109 1184.73645 1183.647339 1182.96106 1183.179199 1184.083252 1185.165771 1186.621704 1187.718872 1188.67749 1189.549438 1190.189087 1190.766846 1191.126831 1191.594971 1192.002686 1192.463867 1192.926636 1193.437378 1193.834473 1194.07959 1194.105591 1193.8927 1193.691895 1193.571411 1193.769165 1194.275757 1194.96875 1196.977905 1201.683716 1206.585449 1212.710571 1219.646118 1223.055298 1224.036255 1223.817505 1223.025146 1221.394165 1219.274902 1216.824097 1213.937134 1211.561646 1210.283447 1209.70459 1209.576782 1209.351562 1209.003052 1208.688843 1207.812012 1203.61792 1198.917969 1195.812866 1193.716431 1191.098755 1188.878906 1187.062622 1185.596558 1184.702271 1184.146851 1184.079102 1183.174438 1176.549438 1175.252808 1175.161865 1175.202271 1175.366821 1175.42981 1175.591797 1175.61499 1175.701904 1175.639038 1175.624878 1175.499756 1175.388916 1175.321777 1175.155518 1175.143677 1175.103149 1174.966187 1174.780518 1174.608154 1174.571655 1174.709473 1174.972168 1175.008057 1175.10498 1175.032959 1175.012085 1175.107666 1175.190674 1175.349976 1175.627686 1175.843018 1176.115112 1176.055298 1175.854858 1175.587524 1175.273804 1175.017822 1174.664062 1174.385376 1173.966309 1173.484131 1173.048462 1172.531372 1171.830933 1171.254517 1170.958862 1171.109497 1171.429932 1171.621094 1171.938477 1172.153442 1172.206055 1172.295166 1172.073853 1171.862915 1171.521118 1170.940308 1170.269897 1169.748047 1169.324219 1168.813965 1168.365601 1168.084229 1167.879883 1167.670532 1167.626343 1167.281982 1167.065186 1166.675171 1166.150391 1165.452026 1164.648682 1163.901978 1163.235718 1162.546631 1162.044434 1161.433228 1160.783447 1160.203003 1159.491943 1158.75647 1157.667969 1158.561646 1160.166138 1161.528931 1163.233887 1165.083496 1166.807251 1168.208496 1169.530396 1170.964722 1178.106201 1183.999634 1184.498657 1184.670654 1183.579224 1182.788696 1184.01062 1197.676025 1204.535156 1209.6073 1212.763306 1215.148804 1216.647339 1218.945435 1230.092407 1239.866089 1248.486694 1257.364258 1268.251099 1268.143799 1266.845093 1267.988647 1271.567749 1275.859985 1280.545776 1289.40564 1302.574219 1313.056274 1313.75708 1311.772705 1309.087036 1303.606079 1294.722656 1285.63623 1273.726562 1265.702393 1265.952759 1267.943848 1274.25061 1282.459961 1288.691162 1292.03894 1294.427246 1295.831787 1296.204834 1295.648926 1292.425537 1285.550537 1276.974976 1265.842163 1251.750244 1239.892212 1234.919556 1228.759155 1217.319702 1212.201172 1208.699951 1198.885132 1189.692505 1182.804932 1174.625 1171.756226 1169.127441 1163.616943 1159.560913 1159.602539 1160.047852 1159.429443 1157.277832 1154.847046 1153.06604 1151.639893 1150.413208 1149.098022 1148.244751 1147.234375 1145.63501 1144.158203 1142.414795 1140.673462 1139.524902 1138.587158 1137.647339 1136.709106 1135.352783 1134.536621 1133.681152 1132.695679 1131.519409 1130.233154 1128.837036 1127.539307 1126.333862 1125.282837 1124.387085 1123.673584 1123.251709 1122.99292 1122.353027 1120.986816 1117.49585 1116.598877 1116.622192 1116.734619 1116.968628 1117.396484 1117.863525 1118.317261 1118.832397 1119.424683 1120.245483 1120.873169 1121.400146 1122.08252 1123.125244 1124.051514 1124.884888 1125.741333 1126.587402 1127.344238 1128.242065 1129.47937 1131.118286 1132.787598 1134.054321 1135.226807 1136.83606 1136.884033 1134.366211 1136.137573 1137.983276 1141.553711 1143.473389 1145.27063 1146.5 1145.904175 1145.179565 1145.2677 1146.870117 1149.638062 1150.820679 1152.137573 1153.195923 1154.481445 1154.96814 1155.166626 1155.550415 1155.897705 1156.314819 1157.293213 1157.547607 1157.579224 1157.485474 1157.560669 1157.547852 1157.244019 1156.53479 1155.88208 1155.643677 1154.90271 1153.468506 1151.2771 1148.565918 1146.606323 1146.624268 1145.631348 1146.416016 1146.726685 1146.292114 1141.356323 1137.506348 1134.5 1133.931519 1133.99353 1134.692017 1134.894409 1134.732788 1134.2052 1133.254639 1132.611328 1131.804565 1132.160278 1132.644409 1133.003052 1134.894043 1137.429321 1139.785522 1142.53479 1145.129883 1147.762207 1149.884155 1151.50415 1154.393799 1156.461792 1156.939087 1157.035767 1157.546753 1160.494629 1161.921021 1161.358154 1159.680664 1172.21814 1180.894653 1189.466064 1198.231689 1207.921753 1218.801025 1223.755981 1229.507568 1240.6698 1244.484009 1241.215332 1236.841797 1232.359375 1227.600464 1222.899902 1218.657471 1215.034912 1211.288574 1207.588623 1202.01416 1197.123657 1191.922852 1186.826782 1182.175293 1175.893677 1171.312134 1166.32019 1161.995605 1158.878418 1156.798584 1155.245239 1153.931396 1152.514771 1150.890381 1149.079834 1147.051514 1146.4552 1147.569336 1147.926147 1147.884766 1147.614014 1147.101074 1146.563477 1145.726807 1144.711182 1143.229004 1141.859497 1140.632324 1139.47522 1138.533203 1137.555054 1136.785278 1135.920898 1135.279907 1134.821411 1135.302612 1134.895996 1133.117432 1127.032227 1122.171875 1119.115234 1115.914795 1113.045532 1111.11499 1109.346191 1108.404175 1107.292725 1106.261597 1105.140869 1103.976807 1102.63562 1101.148071 1099.140015 1097.805664 1097.829224 1097.853638 1097.884033 1097.866455 1097.083862 1093.389404 1092.183228 1092.971069 1094.088989 1090.19043 1089.910767 1089.280884 1088.807129 1088.392578 1087.914551 1087.207642 1086.683594 1086.769287 1087.509766 1088.333618 1089.437988 1090.658447 1091.932861 1093.51355 1094.790039 1096.340942 1098.012817 1096.140137 1095.682983 1097.450195 1101.891846 1105.72998 1110.884033 1119.703369 1119.949219 1117.646118 1117.030029 1116.140625 1113.893066 1109.852783 1103.855835 1103.073975 1101.348022 1097.154053 1095.679688 1093.638428 1092.004883 1090.989746 1090.443726 1090.050049 1089.515137 1088.348877 1086.595337 1086.912354 1087.415039 1087.552979 1087.547485 1087.652344 1087.513306 1086.595093 1085.061035 1083.37915 1082.067871 1080.786743 1078.968506 1076.36853 1073.688843 1073.776733 -1114.862183 1109.174194 1107.233521 1105.083008 1104.577393 1105.971924 1107.302612 1108.70813 1109.899292 1110.746826 1111.614014 1112.432251 1113.214111 1114.095947 1114.985596 1115.952271 1116.79541 1117.576172 1118.092041 1118.537842 1118.78418 1119.044556 1119.315552 1119.431763 1119.65271 1119.831055 1120.134033 1120.560425 1120.979614 1121.55249 1122.214478 1123.704712 1125.10022 1126.401001 1127.767944 1129.251831 1130.939453 1132.63147 1133.816406 1137.918823 1145.35791 1142.813599 1141.835449 1146.216187 1146.791992 1146.693115 1146.708618 1146.797485 1145.674561 1145.735229 1146.429077 1147.805176 1149.218506 1150.323975 1151.428223 1152.44458 1153.592041 1155.195801 1156.596313 1157.372559 1158.273071 1160.053101 1162.764282 1166.573242 1170.675781 1174.478516 1180.109863 1185.099854 1187.685181 1190.471436 1195.879395 1200.831665 1207.652954 1220.326294 1225.202515 1224.28125 1218.443604 1207.666382 1200.385498 1205.677124 1209.59375 1209.446411 1211.95752 1219.1521 1232.18457 1242.515625 1248.810059 1252.565552 1251.463257 1249.077148 1255.272339 1257.501709 1255.708008 1246.968018 1235.73291 1225.829102 1216.208374 1207.709595 1203.817017 1201.811768 1195.891235 1193.728638 1192.333252 1191.557251 1190.987793 1190.475586 1190.211304 1189.794189 1189.191895 1188.682007 1188.324829 1187.91394 1187.283447 1186.15271 1184.889282 1183.785767 1183.264893 1182.63623 1182.410889 1182.500732 1183.131592 1184.51709 1185.759277 1186.826416 1187.800293 1188.5979 1189.176392 1189.717041 1190.181519 1190.692017 1191.291016 1192.032715 1192.898926 1193.658325 1194.481323 1194.779419 1194.48291 1194.068359 1193.812256 1193.619873 1193.69043 1194.118774 1195.100098 1197.499023 1201.619629 1206.448486 1213.877686 1221.397827 1223.029419 1223.644897 1223.367432 1222.766724 1220.776489 1218.343262 1215.99939 1213.353271 1211.202881 1209.923218 1209.441772 1209.175049 1208.481079 1207.522705 1206.264038 1203.788574 1200.373901 1196.831909 1194.62146 1192.817993 1190.416748 1188.197021 1186.599976 1185.485474 1184.69751 1183.880127 1182.45813 1176.033691 1175.557983 1175.601074 1175.643555 1175.740234 1175.976807 1176.138184 1176.271362 1176.427002 1176.391602 1176.446045 1176.232544 1176.083862 1176.023071 1175.811646 1175.593384 1175.570557 1175.432251 1175.408081 1175.294678 1175.190552 1175.174072 1175.359985 1175.543701 1175.660278 1175.712769 1175.758179 1175.634521 1175.707397 1175.789917 1175.910645 1176.297485 1176.620361 1176.810181 1176.825317 1176.835449 1176.523804 1176.182861 1175.911865 1175.658325 1175.354736 1174.881226 1174.345337 1173.816284 1173.071777 1172.542725 1171.613037 1171.149536 1171.35437 1171.669189 1171.952637 1172.237793 1172.387817 1172.454712 1172.4646 1172.225342 1171.884521 1171.331543 1170.845215 1170.483765 1170.024292 1169.545044 1169.094727 1168.7771 1168.456909 1168.334351 1168.232056 1168.079712 1167.855103 1167.634033 1167.19519 1166.619751 1165.953857 1165.082275 1164.312744 1163.623779 1163.073853 1162.510986 1161.835083 1160.998901 1160.454712 1159.776733 1159.09314 1158.189697 1158.495605 1160.03479 1161.685791 1163.370239 1164.977905 1166.401855 1167.573486 1168.727905 1170.21106 1176.043701 1182.903564 1184.648926 1185.135498 1185.428833 1184.765015 1183.024414 1188.12915 1196.626831 1200.433716 1203.93457 1205.747925 1206.248047 1215.600952 1223.868164 1234.444336 1244.832153 1256.681885 1267.46875 1268.036255 1268.507202 1271.477661 1274.856201 1279.21814 1286.539673 1297.623657 1319.468872 1318.86853 1315.673462 1312.290405 1308.100342 1301.977661 1292.352417 1281.826294 1267.131104 1274.455322 1279.013794 1282.255005 1286.229614 1292.370972 1295.850586 1297.493408 1298.819458 1299.447876 1298.667969 1297.144653 1293.395996 1283.595947 1274.427002 1261.870728 1245.438354 1234.76001 1226.601807 1215.619385 1207.484375 1202.263794 1198.602539 1195.785645 1188.710449 1182.77417 1176.315552 1172.267212 1169.355469 1165.871948 1163.027954 1161.798828 1160.868652 1158.627441 1157.253052 1155.510376 1153.820312 1152.448975 1151.127075 1149.918945 1148.935913 1147.87915 1146.536621 1145.00293 1143.226807 1141.701538 1140.28894 1139.16687 1138.114258 1137.124634 1136.222656 1135.31665 1134.15979 1132.946411 1131.678589 1130.34021 1129.089355 1127.866211 1126.465454 1125.318115 1124.297974 1123.133667 1122.327515 1122.160156 1121.9729 1120.395874 1117.16272 1117.041382 1117.167847 1117.383179 1117.535645 1117.981201 1118.513672 1119.08313 1119.702515 1120.39502 1120.940063 1121.63562 1122.058472 1122.804688 1123.873169 1124.740601 1125.820435 1126.782349 1127.896729 1129.205322 1130.498657 1131.413818 1132.131958 1132.833618 1133.539673 1135.171875 1137.515991 1139.00061 1139.358765 1140.734253 1144.386841 1145.330688 1145.066162 1147.421265 1149.598999 1149.428711 1147.463745 1147.067993 1150.281616 1152.988037 1154.373169 1156.030396 1157.012085 1158.950562 1159.133301 1158.915161 1158.614502 1158.14917 1158.540771 1159.445801 1159.815063 1160.03772 1159.811646 1159.508423 1159.678833 1158.699829 1157.718506 1157.066528 1157.191895 1156.660522 1155.952515 1154.330566 1151.319214 1148.934204 1147.273682 1145.849487 1145.999146 1145.519165 1144.001709 1141.21582 1136.070312 1134.607788 1135.291992 1135.942749 1136.659424 1136.764648 1136.41394 1135.504761 1134.232788 1133.177856 1132.607544 1131.940552 1131.967529 1132.89856 1134.352295 1136.286743 1138.056763 1140.401611 1142.916626 1145.228271 1145.835571 1146.609009 1150.859863 1152.993408 1153.904297 1154.606567 1156.212158 1158.171753 1158.268799 1158.108276 1163.286865 1175.958862 1183.401245 1192.636597 1203.450928 1215.773804 1225.710938 1232.983398 1239.150757 1246.004395 1245.948486 1243.294434 1238.961914 1233.590088 1228.869995 1224.096558 1219.505615 1215.728271 1211.797241 1207.265503 1200.638916 1195.322388 1189.337036 1185.880859 1182.149658 1174.249023 1170.462158 1166.569458 1162.076416 1158.870972 1157.312622 1156.105347 1154.70166 1153.290894 1151.825439 1150.224731 1148.488403 1148.363159 1148.766968 1148.717407 1148.497681 1148.082153 1147.672729 1147.24707 1146.414551 1145.018066 1142.970581 1140.970459 1139.641968 1138.501709 1137.637695 1137.076782 1136.12915 1134.746094 1133.815186 1134.744263 1134.840698 1132.052246 1128.348755 1124.388062 1120.796021 1118.0448 1114.779907 1111.761719 1110.097168 1109.129639 1108.043579 1107.280518 1106.339355 1105.244385 1104.06604 1102.731567 1101.366821 1099.659424 1098.121582 1098.301758 1098.515869 1098.384521 1098.258179 1096.442383 1093.505737 1094.428589 1095.778442 1098.177246 1092.714233 1089.647339 1088.756104 1087.95166 1087.294678 1086.726318 1086.080688 1085.526611 1085.289307 1086.247437 1086.867432 1087.981567 1088.708984 1089.70459 1091.116089 1092.350952 1093.604614 1094.770752 1094.126221 1094.407593 1097.690552 1100.539429 1101.429443 1105.527344 1108.514282 1108.203247 1107.79187 1108.431519 1108.033813 1105.850464 1102.307617 1097.189941 1096.319214 1095.866455 1093.533691 1090.417114 1086.494629 1087.996216 1088.446777 1088.37439 1088.485718 1088.148071 1087.268555 1085.640137 1085.410278 1085.737671 1085.885986 1086.022827 1086.293213 1086.548096 1085.950684 1084.42627 1082.612305 1081.525024 1080.547729 1079.126709 1076.283447 1074.076172 1072.485962 -1117.1427 1110.646851 1109.47644 1107.560303 1104.709106 1105.831909 1107.375244 1108.723633 1109.92749 1110.887939 1111.800415 1112.585693 1113.536621 1114.468018 1115.523438 1116.661133 1117.605713 1118.376831 1118.933716 1119.30896 1119.532227 1119.809204 1120.042847 1120.117188 1119.98999 1120.041626 1120.186646 1120.524414 1120.943237 1121.575562 1122.320435 1123.588379 1124.783447 1126.042603 1127.5 1129.127563 1131.061523 1133.311401 1137.341064 1146.491211 1146.387451 1142.983154 1141.925049 1143.575928 1144.900757 1145.960693 1146.470093 1146.679077 1146.44873 1146.91394 1147.493042 1148.339722 1149.014038 1149.631714 1150.1875 1150.630249 1151.286011 1152.552979 1154.2323 1155.546021 1156.992188 1158.143555 1158.995117 1163.529053 1167.820435 1170.365723 1174.732178 1180.132202 1182.183838 1184.332764 1188.674927 1191.732544 1195.734497 1211.349976 1220.22998 1219.793335 1222.647705 1212.047974 1202.80188 1196.491455 1201.636719 1203.708984 1208.839722 1215.768188 1224.401367 1232.892822 1239.010254 1242.454468 1240.679443 1237.800415 1246.299072 1250.546265 1249.21228 1247.22937 1238.044189 1226.634277 1216.232422 1207.77478 1202.910645 1199.444824 1196.30957 1193.753784 1191.19873 1189.809937 1189.172852 1188.76355 1188.564819 1188.101929 1187.538452 1187.08374 1187.06189 1186.864136 1186.388184 1185.404175 1184.103027 1183.09082 1182.513306 1182.09436 1182.189331 1182.609497 1183.540283 1184.580078 1185.45752 1186.216064 1187.067871 1187.862671 1188.525757 1189.138428 1189.727661 1190.446289 1191.224121 1192.188965 1193.221924 1194.436401 1195.301147 1195.46228 1195.347534 1194.933228 1194.023926 1193.684692 1193.469482 1193.704468 1194.790527 1197.415405 1201.013306 1205.727905 1212.972168 1220.280396 1222.216797 1222.828857 1223.045898 1222.240967 1220.042847 1217.033691 1214.075439 1211.278809 1209.126831 1208.20166 1207.680542 1206.725098 1205.42395 1204.090088 1202.452637 1200.088013 1196.946045 1194.401123 1192.61499 1190.977173 1188.88623 1186.924316 1185.223022 1184.538452 1183.80957 1179.114746 1175.806519 1176.052734 1176.176025 1176.302856 1176.356445 1176.565552 1176.712524 1176.951904 1177.118164 1177.226685 1177.287476 1177.180542 1177.051025 1176.819702 1176.545776 1176.353638 1176.123047 1175.982544 1175.8125 1175.859741 1175.819214 1175.809082 1175.797119 1175.952759 1176.142334 1176.250122 1176.366577 1176.338501 1176.379639 1176.281494 1176.394043 1176.596802 1176.91748 1177.331177 1177.532471 1177.655884 1177.595703 1177.334839 1177.121704 1176.899048 1176.596558 1176.208496 1175.691162 1175.098022 1174.430786 1173.890137 1173.292114 1172.842285 1172.28125 1172.060669 1172.179443 1172.286011 1172.519653 1172.638428 1172.675781 1172.581787 1172.339111 1172.089233 1171.565063 1171.204834 1170.910889 1170.40686 1169.837402 1169.503174 1169.125122 1168.89978 1168.887695 1168.848511 1168.700684 1168.417236 1168.136719 1167.713257 1167.209961 1166.342163 1165.601196 1164.802734 1164.14917 1163.571411 1162.837036 1162.126709 1161.285767 1160.655518 1159.971191 1159.271973 1158.531738 1158.61853 1160.116455 1161.602051 1163.366211 1164.833618 1166.118896 1167.226929 1168.282837 1169.53418 1171.556274 1178.41272 1183.383911 1184.720581 1185.900391 1186.936768 1187.1073 1189.034668 1192.595093 1194.932495 1197.890259 1208.755005 1212.564697 1215.97229 1223.08606 1232.946289 1241.921631 1252.194946 1258.868286 1260.835571 1267.883301 1271.547119 1277.573608 1283.125244 1291.152588 1302.839355 1320.391113 1319.574707 1315.767578 1311.876953 1306.788208 1299.988647 1291.151367 1277.26355 1283.073364 1291.489624 1294.40271 1297.131226 1300.173706 1303.026123 1303.440308 1302.896606 1302.846924 1302.924927 1301.430298 1297.433716 1291.360229 1280.696777 1271.9646 1257.97644 1251.196777 1239.964722 1229.80188 1219.82373 1208.333374 1198.554565 1193.054565 1184.560913 1181.554932 1180.141602 1173.135986 1170.32605 1169.565796 1167.963989 1165.179443 1162.897339 1160.911255 1158.723145 1157.254639 1155.7854 1154.343384 1152.899902 1151.640259 1150.307617 1149.148438 1147.98645 1146.716309 1145.186768 1143.751587 1142.233765 1140.917603 1139.619263 1138.329956 1137.156372 1136.246948 1135.531372 1134.369385 1133.086304 1131.949829 1130.671509 1129.484619 1127.856934 1126.497314 1125.277954 1124.34436 1122.708252 1122.325928 1122.665161 1122.549561 1121.393677 1117.769897 1117.376099 1117.619263 1117.91333 1118.139648 1118.597412 1119.06604 1119.831543 1120.493774 1121.190552 1121.789185 1122.506104 1123.18042 1123.925903 1124.86438 1125.842407 1126.790283 1127.848633 1129.194946 1130.77832 1132.636475 1133.885498 1134.588501 1134.828613 1134.223755 1134.140137 1137.925781 1141.53125 1143.023193 1144.420044 1147.31543 1148.230469 1146.95166 1150.464722 1153.764893 1155.464478 1155.173096 1154.864136 1155.988037 1157.250854 1158.044067 1159.830566 1161.08606 1162.754517 1163.598633 1163.970825 1163.679565 1162.626709 1162.385864 1163.512329 1164.281982 1164.782104 1164.71936 1164.598145 1164.102295 1162.462036 1159.216675 1158.446533 1159.462524 1158.944946 1158.847778 1157.401611 1155.037231 1151.525024 1146.798462 1147.270752 1148.316406 1146.075073 1144.794678 1143.191162 1141.086182 1139.321777 1138.757935 1138.714111 1138.720581 1138.624512 1138.063965 1136.987549 1135.51062 1134.134155 1133.209229 1132.652222 1132.041504 1132.640991 1133.41394 1134.714233 1136.417236 1138.637329 1141.615234 1144.007812 1146.173218 1148.192627 1149.508179 1150.693848 1151.529907 1152.384399 1154.023804 1156.032959 1158.24292 1161.189087 1167.425049 1176.939331 1182.17627 1189.068604 1196.752563 1209.007935 1215.93457 1219.949829 1235.435791 1244.079102 1246.575684 1245.511475 1240.733887 1234.750244 1229.899292 1225.205933 1220.588623 1216.664307 1212.517944 1208.397827 1200.13208 1195.679199 1184.010986 1182.241089 1181.766235 1171.480347 1169.15979 1166.519653 1162.141968 1158.623291 1157.66687 1156.614014 1155.468872 1154.06604 1152.841675 1151.650757 1150.780029 1150.118408 1149.753662 1149.407959 1148.84021 1148.246338 1147.308594 1147.339966 1146.904419 1144.212402 1141.438965 1139.358398 1137.893433 1137.062134 1136.418335 1135.688965 1134.570435 1132.484497 1131.031128 1131.342407 1130.984863 1127.872437 1123.522583 1121.068726 1119.025513 1116.274536 1113.243286 1110.095581 1109.317383 1108.650757 1107.917358 1107.136475 1106.294678 1105.221802 1104.041992 1102.800659 1101.595337 1100.239624 1099.105225 1098.848022 1098.654419 1098.429199 1097.425415 1096.017822 1098.465454 1097.453003 1096.406006 1097.638062 1096.79248 1092.964478 1090.670532 1089.193848 1088.1521 1087.524292 1087.151978 1086.784668 1086.229126 1085.300781 1084.963623 1086.410889 1086.871338 1087.40271 1088.930786 1089.816284 1090.09375 1090.589722 1089.960449 1090.941772 1095.921875 1099.287354 1097.035645 1098.587891 1099.256348 1098.366089 1098.205688 1097.16748 1095.917969 1095.637695 1095.465698 1093.794067 1091.995361 1090.869019 1089.758057 1087.933105 1084.931641 1085.675049 1086.540161 1086.807739 1086.834229 1086.759521 1086.297607 1085.077881 1084.060181 1083.9021 1084.235352 1084.511719 1084.880737 1084.940552 1084.545654 1083.283936 1081.952637 1081.411133 1081.116577 1081.317749 1079.70874 1076.068726 1073.479004 -1120.736328 1115.39856 1112.712402 1110.400635 1106.330444 1105.60022 1107.313599 1108.905273 1110.01355 1111.032349 1112.022827 1112.969116 1113.968018 1115.024658 1116.27417 1117.39502 1118.399658 1119.165039 1119.764038 1120.15686 1120.411987 1120.647705 1120.783569 1120.810059 1120.641479 1120.487793 1120.42395 1120.55481 1120.925903 1121.621826 1122.39917 1123.663574 1124.619385 1125.73291 1127.10498 1128.896606 1131.069092 1133.577515 1135.930542 1139.589355 1139.950195 1139.494263 1140.12793 1141.556152 1143.191772 1144.530273 1145.856445 1146.974976 1147.173462 1147.449951 1147.828003 1148.37793 1148.617798 1148.920776 1148.924805 1148.820435 1148.678223 1149.331177 1151.7323 1154.233398 1156.10437 1157.487305 1158.50293 1161.786255 1165.753784 1168.714355 1172.063477 1175.810913 1178.554688 1180.752197 1184.369873 1187.605713 1191.712158 1201.079468 1208.870605 1213.358154 1220.51416 1216.974731 1206.601929 1196.508911 1195.696655 1199.866211 1205.930664 1211.330811 1217.014893 1222.279785 1226.815063 1228.133179 1226.959473 1227.409302 1233.161133 1239.123535 1241.587402 1242.612549 1236.528687 1227.477173 1216.387939 1209.7052 1200.273071 1196.745117 1195.203247 1192.00354 1188.704346 1187.261475 1187.076538 1187.025757 1186.921021 1186.541992 1185.737549 1185.168701 1185.483887 1185.884521 1185.682373 1185.151245 1184.074097 1183.181885 1182.203857 1181.970825 1182.022583 1182.999512 1184.041504 1184.484131 1184.747437 1185.453613 1186.376953 1187.262451 1188.153564 1188.879639 1189.617432 1190.579712 1191.609253 1192.727661 1193.918823 1194.990356 1195.404541 1196.008423 1196.514526 1195.493652 1194.809937 1193.628418 1193.158203 1193.064331 1193.863892 1195.362305 1198.176758 1203.474854 1210.201782 1217.89624 1219.2052 1219.580078 1221.689087 1221.585327 1218.711914 1214.188599 1211.414673 1208.548096 1206.723999 1205.358765 1204.085938 1202.851074 1201.51416 1200.276855 1198.643433 1196.703369 1194.444946 1192.380005 1190.297119 1188.574707 1187.195312 1185.665283 1183.9823 1181.809448 1176.648682 1176.408447 1176.567993 1176.721313 1176.887085 1177.201782 1177.341675 1177.527344 1177.703613 1177.907471 1178.149048 1178.264526 1178.288086 1178.198486 1178.02356 1177.588867 1177.330322 1176.961304 1176.757324 1176.441284 1176.193726 1176.202393 1176.197998 1176.251953 1176.278076 1176.469604 1176.64856 1176.751221 1176.827026 1176.932861 1176.958008 1176.930908 1177.010254 1177.324463 1177.600586 1178.081787 1178.308838 1178.408325 1178.333008 1178.134277 1177.938843 1177.709351 1177.386841 1176.990601 1176.466187 1175.786743 1175.191284 1174.71228 1174.264404 1173.75415 1173.282471 1172.957397 1172.772827 1172.763306 1172.816284 1172.955933 1172.822266 1172.710815 1172.552856 1172.204224 1171.874512 1171.589722 1171.199463 1170.707397 1170.195679 1169.753906 1169.579834 1169.482788 1169.399048 1169.470703 1169.302246 1169.030396 1168.796143 1168.261353 1167.709473 1166.861206 1166.138428 1165.350708 1164.741455 1163.917969 1163.165771 1162.37793 1161.625854 1160.800049 1160.07251 1159.545288 1158.871704 1158.694824 1160.155396 1161.721802 1163.398438 1165.003662 1166.213501 1167.236816 1168.210205 1169.138916 1169.968994 1171.565552 1178.944214 1182.606445 1184.47998 1188.821899 1192.174072 1194.279419 1193.952637 1194.828979 1201.118774 1211.379517 1221.519165 1220.917847 1223.258301 1229.299072 1234.822754 1242.236816 1247.219727 1251.546021 1260.624878 1268.872559 1277.644043 1284.308228 1291.52124 1304.47229 1321.145386 1320.642822 1317.473999 1310.972778 1305.166504 1297.777344 1283.290161 1284.289917 1296.589966 1299.947998 1300.636963 1302.982422 1308.606323 1312.201294 1312.55542 1309.161011 1307.42334 1306.353516 1303.894653 1297.252075 1289.047363 1279.128784 1271.756958 1266.53772 1259.000244 1244.411621 1233.463623 1224.232666 1213.741455 1203.451538 1195.580444 1187.869507 1185.360107 1183.631104 1181.257568 1176.286987 1172.93457 1169.805786 1166.91748 1163.847534 1161.086548 1159.311401 1157.470947 1156.022827 1154.748291 1153.473145 1152.07605 1150.562378 1148.77417 1147.1875 1146.276245 1145.142456 1143.873779 1142.641602 1141.250854 1139.936279 1138.422363 1136.76709 1135.491699 1134.749023 1133.992554 1133.399292 1132.708496 1131.411499 1129.671265 1127.979736 1126.540527 1125.220947 1124.255981 1123.448242 1122.964844 1122.890625 1122.495239 1121.188721 1118.601929 1117.581421 1117.989014 1118.281738 1118.622559 1119.208252 1119.700562 1120.373779 1121.140625 1121.833496 1122.513428 1123.417725 1124.210571 1125.054077 1125.895386 1126.829834 1127.831665 1128.942993 1130.200684 1131.887329 1133.945312 1135.557373 1136.675903 1137.369873 1137.364746 1137.858276 1141.171753 1144.429199 1145.896851 1147.144653 1148.69751 1150.998047 1152.286499 1155.078247 1158.583008 1160.70874 1161.151611 1161.112915 1161.099487 1161.480957 1162.82373 1164.027222 1165.619751 1167.253418 1168.553223 1169.847412 1171.063354 1170.268677 1167.859375 1168.088135 1169.758301 1170.689331 1170.718994 1170.728149 1170.732056 1168.9104 1163.490479 1162.408447 1165.410034 1167.311646 1166.371826 1162.782959 1158.964966 1155.443237 1152.351685 1152.884766 1152.763794 1148.997803 1146.697876 1145.861328 1145.455566 1143.97937 1143.120972 1141.981201 1141.367798 1140.62207 1140.030396 1139.21167 1137.753662 1136.425903 1134.689575 1132.733887 1132.659424 1132.647339 1132.948242 1133.738037 1133.991821 1137.449707 1140.455078 1143.387939 1146.696777 1147.488892 1146.748779 1149.225952 1149.778198 1149.3479 1150.983276 1155.137939 1158.568848 1162.450073 1167.343506 1174.89856 1177.803467 1182.327148 1189.094727 1193.789551 1208.458862 1219.699585 1228.242065 1235.494019 1240.879517 1242.539307 1239.440674 1235.390137 1231.168579 1226.24231 1221.51416 1217.147217 1213.236572 1209.327515 1203.892822 1197.951294 1191.308105 1187.459717 1185.448608 1178.053589 1171.682861 1167.932129 1163.787354 1160.956665 1158.625366 1157.108032 1155.994629 1154.888428 1153.910034 1152.898193 1151.97998 1151.231079 1150.655029 1150.05957 1149.290894 1147.828003 1146.391235 1146.337036 1144.67749 1141.577881 1138.670898 1136.490967 1135.071045 1134.627563 1134.206055 1133.487915 1132.115112 1128.677124 1123.183594 1126.57666 1127.172241 1124.872925 1121.341553 1119.153687 1117.141235 1114.62146 1111.973877 1110.241577 1109.281494 1108.695312 1108.091064 1107.307983 1106.322754 1105.206299 1103.932495 1102.721802 1101.574097 1100.501709 1099.567139 1099.012817 1098.62207 1097.901489 1095.298462 1098.461548 1098.923828 1098.381348 1097.029419 1097.343994 1097.971802 1095.582153 1092.978638 1091.115723 1089.925415 1089.253418 1088.918823 1088.722412 1087.810059 1086.686646 1084.032349 1084.842651 1085.180176 1085.405396 1086.921021 1087.354126 1087.251343 1086.9104 1086.844482 1085.37439 1092.006104 1098.467773 1095.389282 1093.741943 1093.782349 1093.550537 1092.951782 1092.2948 1091.340576 1090.357788 1089.960571 1088.927246 1088.550537 1087.140015 1086.259399 1086.363403 1084.382202 1083.913818 1084.576782 1084.795654 1084.773438 1084.716431 1084.53418 1083.622437 1082.825317 1082.410278 1082.599365 1082.919434 1083.027222 1082.98291 1082.583252 1081.709961 1081.04541 1080.934692 1082.021118 1086.001099 1084.753296 1079.537231 1074.035645 -1122.06604 1117.996704 1114.44043 1111.9729 1108.938721 1105.62439 1107.502808 1109.6073 1110.586792 1111.448242 1112.409302 1113.431763 1114.567261 1115.734619 1117.008057 1118.239624 1119.246704 1120.124023 1120.734009 1120.934692 1121.207153 1121.407349 1121.545166 1121.609375 1121.429321 1120.937378 1120.767212 1120.818848 1120.983887 1121.476074 1122.190552 1123.08606 1124.016968 1125.256592 1126.779297 1128.586914 1130.510132 1132.454712 1133.54187 1134.182495 1134.953857 1135.265381 1137.082764 1140.325317 1142.219116 1143.30957 1144.496094 1146.144897 1146.840454 1147.317627 1147.563354 1147.741333 1148.082397 1148.128296 1147.792969 1147.208252 1146.649658 1146.232178 1149.564941 1153.139771 1155.445068 1156.873535 1158.244629 1161.115845 1164.518555 1167.707275 1170.442383 1173.436523 1176.001587 1178.374512 1181.351318 1183.67981 1186.493774 1192.212891 1198.113281 1208.173218 1220.600464 1218.710815 1208.986084 1199.124756 1191.999023 1195.608398 1201.604004 1207.762451 1211.782959 1214.385986 1215.634155 1215.220581 1214.259521 1218.929199 1221.211304 1227.793579 1232.804565 1233.304321 1230.268921 1220.80896 1211.549072 1204.955933 1195.457886 1193.070068 1191.515869 1187.995972 1183.640137 1184.641357 1185.293701 1185.065918 1185.290283 1185.224121 1184.471069 1183.167236 1184.136108 1185.051636 1185.109985 1184.670166 1183.696167 1182.94397 1181.743896 1181.549927 1181.71582 1182.772461 1183.328857 1183.33606 1183.296387 1184.235229 1185.634766 1186.672607 1187.741333 1188.786621 1189.869751 1190.998047 1192.178955 1193.407471 1194.462158 1195.322876 1196.191162 1197.158569 1197.567627 1196.9198 1195.104004 1193.602905 1192.720703 1192.441528 1192.708984 1193.726318 1195.159912 1198.177368 1206.714233 1212.090454 1212.80603 1214.989136 1217.412354 1217.355835 1213.786255 1209.573975 1207.681519 1205.980957 1204.048096 1201.980957 1199.629395 1198.082031 1196.987549 1196.082764 1194.906616 1193.45166 1191.987183 1190.029541 1187.878906 1186.184692 1185.048218 1183.823608 1177.952759 1176.953735 1177.122192 1177.383545 1177.590576 1177.798584 1177.95874 1178.28064 1178.4375 1178.588501 1178.822754 1179.026489 1179.326416 1179.429199 1179.373535 1179.231812 1178.91333 1178.524902 1178.051758 1177.726685 1177.410278 1177.032104 1176.865723 1176.690674 1176.704102 1176.770874 1176.802734 1176.952148 1177.088745 1177.242676 1177.356934 1177.328613 1177.525146 1177.589844 1177.713501 1177.993774 1178.355713 1178.746216 1179.067505 1179.125977 1179.067627 1178.835938 1178.64209 1178.385376 1178.047974 1177.525757 1176.930176 1176.363159 1175.946289 1175.660034 1175.175415 1174.589111 1174.093262 1173.657715 1173.39856 1173.30481 1173.266357 1173.17395 1173.114136 1172.914185 1172.738037 1172.468994 1172.176392 1171.777466 1171.380859 1170.894165 1170.327637 1170.129883 1170.007935 1170.026489 1170.05127 1170.082397 1170.033936 1169.720459 1169.353394 1168.870972 1168.297852 1167.52124 1166.787476 1166.053223 1165.168213 1164.325806 1163.404663 1162.569824 1161.733398 1160.970093 1160.295654 1159.733398 1159.166748 1158.707153 1160.372803 1161.940918 1163.696167 1165.240601 1166.549927 1167.647705 1168.586548 1169.709839 1170.768677 1171.908569 1176.376587 1180.494263 1183.392334 1189.445923 1194.944458 1197.56665 1198.521484 1196.550049 1194.825317 1205.328491 1215.168701 1220.499878 1220.995483 1221.750977 1228.014404 1230.12915 1239.205444 1247.232422 1257.186646 1266.691162 1276.092407 1283.323975 1289.257202 1302.858521 1321.289185 1321.66333 1317.768433 1308.084473 1301.711792 1294.942627 1290.696167 1298.078125 1303.046753 1305.065063 1307.593384 1312.44043 1317.109619 1319.65979 1319.974609 1315.370117 1310.171021 1308.253784 1304.075317 1294.550659 1284.434448 1276.805786 1271.517456 1268.743164 1259.030762 1244.884766 1235.031616 1226.472168 1217.152222 1206.07019 1199.749023 1195.229004 1189.8573 1186.326538 1185.130371 1182.506226 1175.213379 1170.935303 1167.521851 1164.209106 1160.500244 1158.371582 1157.919312 1156.782104 1155.450439 1154.049561 1152.555542 1150.853271 1148.754517 1146.757202 1146.629761 1145.506714 1144.526611 1143.22937 1141.731323 1140.079346 1138.466431 1136.677734 1134.291138 1134.245605 1134.259766 1134.379395 1134.237061 1132.278442 1130.037598 1128.036499 1126.344971 1125.079956 1124.138916 1123.479248 1122.993042 1122.393921 1121.709351 1120.710205 1119.136841 1117.999878 1118.274658 1118.591309 1119.175781 1119.771973 1120.399902 1121.069092 1121.807739 1122.510986 1123.439575 1124.260498 1124.998413 1125.862427 1126.745972 1127.671875 1128.714111 1129.843262 1130.956543 1132.177979 1133.532349 1134.726196 1136.657471 1139.06189 1140.757202 1142.54248 1145.109985 1147.343506 1148.700806 1150.593384 1152.333008 1153.982788 1155.609375 1158.181641 1161.632568 1164.004883 1165.812378 1166.507568 1166.763306 1167.2052 1167.848999 1168.747314 1170.494263 1171.718994 1173.127441 1174.336792 1174.557251 1173.677612 1170.9375 1172.859253 1174.733521 1176.030273 1176.39856 1176.425781 1175.731201 1173.427246 1169.557373 1168.364746 1171.88916 1175.041504 1174.688232 1172.086426 1166.797974 1160.449585 1159.663452 1160.245239 1160.032349 1158.477661 1155.721313 1152.555176 1150.381958 1148.268311 1146.164429 1144.983887 1143.846191 1142.675781 1142.345703 1142.211548 1141.564819 1140.020996 1136.941406 1133.532837 1133.155762 1132.598389 1133.072876 1134.349609 1135.920044 1137.469482 1139.655273 1142.320801 1144.770142 1145.17981 1147.212036 1148.26001 1148.022827 1146.586182 1147.486694 1153.858765 1157.240967 1160.797485 1164.430664 1170.192749 1171.410278 1176.892822 1182.955322 1189.078735 1200.746704 1208.192871 1220.546265 1222.905762 1224.276123 1227.098267 1233.445435 1234.88916 1232.13501 1226.997192 1221.813477 1217.449463 1213.650269 1209.560791 1204.979736 1198.620117 1194.497192 1191.061523 1186.733643 1181.03064 1174.069946 1169.190918 1165.170654 1161.782593 1158.853882 1157.599243 1156.736084 1155.843262 1154.916504 1153.75 1152.755127 1151.85437 1151.030518 1150.352539 1149.564697 1148.516235 1147.345215 1145.944946 1141.170532 1136.322144 1134.751465 1133.662354 1132.86145 1132.08728 1131.173828 1129.946533 1128.264893 1125.710571 1122.047607 1123.286499 1124.957031 1123.26416 1120.252563 1117.688843 1115.431885 1113.285156 1110.928101 1110.151733 1109.890869 1109.249512 1108.796753 1107.834595 1106.56958 1104.880615 1103.524902 1102.450317 1101.56897 1100.62439 1099.553589 1098.829712 1098.354004 1095.941772 1098.652954 1099.30896 1099.572632 1099.1427 1097.822388 1097.807739 1097.816406 1097.154541 1094.888062 1093.066772 1091.907104 1091.258667 1090.832642 1090.392944 1089.422119 1088.14917 1086.659668 1083.560791 1083.807983 1084.342651 1085.494995 1085.905884 1085.236084 1084.351807 1084.748779 1084.536499 1086.844849 1090.887451 1089.510254 1088.958862 1089.3573 1089.174927 1088.904663 1088.380005 1087.542969 1085.561279 1085.381958 1084.952393 1085.660767 1084.574951 1083.637817 1083.498657 1082.863647 1082.301636 1082.494629 1082.724121 1082.772217 1082.484741 1082.160034 1081.645752 1081.095459 1080.761475 1080.693604 1080.803101 1080.835449 1080.94458 1080.660034 1080.209351 1080.003906 1080.099854 1081.243164 1083.646606 1083.424683 1083.019897 1086.115845 -1122.118164 1118.756836 1115.446533 1112.670288 1109.588989 1106.459595 1107.577271 1109.685791 1110.648315 1111.806763 1112.925293 1113.981079 1115.220947 1116.479858 1117.75769 1119.093384 1120.297485 1121.09021 1121.478882 1121.687134 1121.847412 1122.149048 1122.20752 1122.21167 1122.245483 1121.508057 1121.172485 1121.069458 1121.115234 1121.282959 1121.719116 1122.374023 1123.463623 1124.712524 1126.328125 1128.012207 1129.693115 1131.230469 1132.331543 1133.080688 1133.74646 1134.425171 1136.843262 1140.610962 1142.736572 1143.088379 1143.169678 1143.992554 1145.440796 1146.257446 1146.109985 1146.660278 1147.069336 1146.936401 1146.503052 1146.054443 1146.175537 1147.688843 1149.595947 1152.637085 1155.256226 1157.274658 1159.033447 1161.201782 1163.715942 1166.388794 1169.140015 1171.754028 1174.032715 1175.660278 1178.389771 1180.258301 1182.24292 1189.123535 1196.725952 1208.782227 1220.221558 1219.484375 1208.951172 1197.671997 1192.033936 1190.750122 1196.993896 1203.142456 1208.11084 1209.14209 1208.485107 1205.930054 1205.036499 1207.019897 1214.423096 1222.812378 1225.193604 1223.830444 1219.938721 1210.862793 1203.498901 1196.377441 1193.018188 1190.498169 1188.354248 1185.521729 1182.688599 1183.164307 1183.678833 1183.396729 1183.244629 1184.231567 1184.09375 1182.72583 1183.266479 1184.014282 1184.244019 1183.866211 1183.131592 1181.840332 1180.997925 1181.005005 1181.298706 1181.833862 1182.394531 1182.570801 1182.838623 1183.579956 1184.782349 1185.996704 1187.141602 1188.438843 1189.875854 1191.226074 1192.552856 1194.003906 1194.966187 1196.011475 1197.548706 1198.773804 1199.184326 1198.414062 1195.607178 1193.279419 1192.207642 1191.708618 1191.89502 1192.689819 1194.124634 1195.84668 1203.210449 1208.436523 1207.866821 1209.338501 1210.474609 1210.193359 1207.764893 1205.936157 1204.751343 1203.006592 1200.869873 1198.300171 1195.485962 1194.252563 1193.573486 1192.81189 1191.647827 1190.474731 1189.194336 1187.378174 1185.595703 1184.310913 1182.913452 1177.47522 1177.690186 1178.370483 1178.856323 1179.083862 1179.045044 1179.008301 1179.101562 1179.342407 1179.539551 1179.721069 1180.012329 1180.432983 1180.613892 1180.617676 1180.487915 1180.280273 1179.82312 1179.385254 1178.873291 1178.515991 1178.122925 1177.673096 1177.549316 1177.382568 1177.250122 1177.319458 1177.298706 1177.356812 1177.466431 1177.654053 1177.739136 1177.884766 1177.969604 1178.264526 1178.502563 1178.779907 1179.131226 1179.526978 1179.818359 1179.861938 1179.706055 1179.535767 1179.331665 1179.016113 1178.581177 1177.94873 1177.518311 1177.041626 1176.667236 1176.44812 1176.058838 1175.492554 1174.722168 1174.343018 1173.999023 1173.904663 1173.770264 1173.62793 1173.442627 1173.236572 1172.930542 1172.639404 1172.324097 1171.929565 1171.476074 1170.966553 1170.549316 1170.614502 1170.743042 1170.661621 1170.625 1170.814697 1170.731445 1170.34668 1169.943359 1169.502441 1168.970215 1168.218384 1167.46167 1166.585083 1165.61792 1164.674927 1163.662476 1162.707642 1161.986938 1161.26123 1160.604004 1160.00061 1159.324829 1158.904541 1160.828003 1162.619629 1164.464111 1165.996826 1167.285767 1168.471924 1169.709106 1170.229614 1172.164551 1173.931885 1176.485107 1179.832642 1183.175171 1189.060669 1195.47168 1199.663696 1204.582153 1204.603882 1203.527222 1203.803589 1206.123047 1212.404663 1216.881348 1219.500366 1226.440796 1233.127563 1239.621582 1247.532104 1255.306885 1267.137085 1274.60144 1281.192383 1286.443115 1296.017456 1314.587524 1321.321533 1312.753662 1301.646484 1295.740601 1293.195679 1299.59436 1306.772095 1309.097046 1312.444946 1315.594116 1319.384766 1321.144287 1320.910767 1319.108398 1311.905518 1306.312866 1304.121094 1298.039673 1290.426392 1280.240356 1271.658325 1265.0802 1260.628174 1253.464722 1243.050537 1234.10498 1225.859619 1217.967285 1206.740356 1199.042358 1194.504761 1189.207275 1185.065186 1183.787476 1180.097168 1174.035645 1171.312012 1168.348511 1165.105713 1161.974976 1160.422241 1159.600586 1158.063843 1156.411987 1154.896362 1153.117676 1151.333008 1149.59375 1148.376343 1147.391357 1146.339111 1145.659424 1144.159912 1142.187622 1140.389038 1138.400024 1136.683594 1135.533203 1134.953247 1134.908081 1134.654175 1134.268066 1132.456787 1130.081299 1127.85498 1126.057983 1124.553589 1123.715332 1123.003174 1122.222778 1122.219727 1122.343994 1121.697388 1119.916138 1118.401733 1118.502441 1118.99939 1119.542114 1120.249634 1121.007812 1121.706665 1122.479492 1123.337036 1124.20813 1125.02771 1125.842529 1126.648438 1127.556885 1128.607788 1129.543945 1130.631958 1131.681885 1132.561157 1133.060669 1133.767334 1135.8927 1140.828491 1143.47998 1145.743652 1147.819824 1150.441406 1152.799316 1154.397949 1155.841675 1157.466553 1159.771606 1160.463135 1165.311768 1168.278076 1170.606812 1172.147461 1171.194702 1172.611816 1173.309326 1173.058594 1175.35437 1176.629639 1177.867065 1178.603149 1178.183105 1176.974121 1177.197266 1178.335693 1180.269409 1181.869629 1182.379761 1181.961426 1180.517456 1175.865601 1170.750854 1169.910889 1177.224854 1183.43457 1180.99585 1177.318726 1173.682983 1169.62793 1166.198364 1168.983032 1170.017212 1168.985474 1165.893066 1162.16333 1159.081177 1156.012085 1151.796753 1148.513916 1146.04248 1144.833618 1144.779053 1144.942627 1145.888062 1146.0896 1141.585938 1137.450928 1136.668701 1133.468262 1132.994019 1134.031006 1135.578003 1136.983887 1138.750732 1140.481201 1142.276978 1144.6427 1147.198975 1147.276001 1146.189331 1147.264282 1149.025635 1152.428345 1155.581055 1157.885498 1159.168579 1169.449463 1170.43457 1173.370605 1182.443237 1197.289062 1203.408203 1209.736938 1214.224854 1207.271606 1208.993896 1215.583984 1225.181885 1234.197266 1232.740479 1227.359863 1221.750732 1217.575317 1213.407959 1209.54541 1205.921631 1201.041504 1197.714966 1193.62146 1187.904297 1183.077881 1176.209473 1170.377197 1166.709229 1162.86438 1160.157227 1158.956055 1158.077637 1157.205444 1155.755737 1154.107422 1152.899536 1151.894165 1151.14502 1150.518555 1149.741821 1149.040161 1148.046143 1146.827637 1141.265259 1135.373169 1135.248413 1134.05127 1131.951538 1129.450806 1126.062866 1125.092285 1125.296631 1123.902832 1121.269287 1120.918579 1122.281494 1121.021362 1118.146973 1115.560303 1113.518921 1112.36731 1111.773804 1111.160767 1110.652954 1110.275513 1109.8302 1108.960449 1106.671753 1104.440674 1103.035278 1102.11792 1101.32959 1100.552979 1099.36853 1098.343872 1098.230103 1096.752197 1099.000488 1099.885254 1100.24707 1099.929688 1099.258301 1098.298584 1097.796631 1097.9375 1096.175049 1094.697388 1093.699951 1093.247925 1093.06543 1092.699097 1091.62793 1090.083984 1088.196655 1086.617188 1085.561401 1082.930054 1083.261353 1082.984375 1082.655151 1082.231323 1082.206299 1082.729858 1083.973877 1084.628906 1085.012451 1085.02771 1085.615967 1085.209839 1084.791504 1084.614014 1083.71936 1082.703003 1082.17395 1082.14978 1082.41394 1081.903687 1081.20813 1080.916748 1080.36731 1080.324951 1080.478394 1080.600342 1080.425903 1080.34021 1079.910278 1079.333618 1078.748047 1078.449707 1078.406738 1078.604614 1078.864258 1079.037964 1079.019775 1078.843384 1078.588745 1078.69165 1078.738892 1078.515869 1078.127808 1080.429199 1083.950684 -1121.610474 1119.034912 1116.255493 1113.426758 1110.940796 1107.70166 1108.149292 1110.550171 1111.21521 1112.420288 1113.494873 1114.721436 1115.974854 1117.317383 1118.776123 1119.993042 1121.137451 1122.021118 1122.271362 1122.417236 1122.532349 1122.754272 1122.849976 1122.819946 1122.635376 1122.092285 1121.651245 1121.305786 1121.275391 1121.326416 1121.53894 1122.10144 1122.946533 1124.197632 1125.900757 1127.417847 1129.01123 1130.240479 1131.380615 1132.493652 1133.74646 1135.715942 1140.175415 1143.692871 1146.780762 1143.938232 1141.958008 1142.039429 1143.198853 1144.05249 1144.396606 1145.039795 1145.379517 1145.222656 1145.548462 1146.108887 1147.62561 1149.422974 1151.019043 1153.119751 1155.566162 1158.003906 1159.895874 1161.266724 1162.566772 1164.680298 1167.224609 1169.637329 1171.61731 1172.440186 1175.122559 1179.712036 1184.217651 1193.095337 1200.290161 1208.509277 1217.177734 1217.328003 1210.369263 1201.58728 1194.419189 1188.922607 1190.871826 1195.891113 1198.810547 1201.760376 1201.48877 1198.708008 1200.804199 1204.701172 1210.089966 1217.234497 1218.277466 1215.731201 1210.81189 1203.648071 1196.172729 1192.924805 1190.607422 1188.567749 1186.703247 1184.441528 1182.300415 1181.634644 1181.739624 1181.640625 1182.62439 1183.612915 1183.8302 1182.343506 1181.629761 1182.493042 1182.914185 1182.10791 1180.940796 1180.203735 1180.152222 1180.443848 1180.90332 1181.397949 1181.831421 1182.106689 1182.473511 1182.928589 1183.964111 1184.96521 1186.4823 1188.074097 1189.730957 1191.253418 1192.895386 1194.330811 1195.516724 1197.061157 1198.922241 1200.812256 1202.034424 1200.862427 1195.587402 1192.699219 1191.69751 1191.277466 1191.269775 1191.776245 1192.651367 1194.407227 1199.705444 1206.074585 1207.903564 1205.789673 1206.109375 1205.774048 1204.711548 1203.245117 1201.984497 1200.25293 1198.475952 1196.179443 1193.779297 1192.140747 1190.975342 1189.635132 1188.346436 1187.262207 1186.365356 1184.756836 1183.165039 1180.807373 1178.391602 1177.803345 1179.899658 1181.594604 1181.491699 1180.955811 1180.528442 1180.230225 1180.291138 1180.395142 1180.681274 1180.86438 1181.346802 1181.657959 1181.828735 1181.822632 1181.597168 1181.173096 1180.698975 1180.077271 1179.64624 1179.274658 1178.961792 1178.583984 1178.295166 1178.128174 1178.085693 1177.962646 1177.819092 1177.808838 1177.844604 1178.016113 1178.123779 1178.34021 1178.581421 1178.832642 1179.228882 1179.651733 1179.95459 1180.341431 1180.574829 1180.612915 1180.481445 1180.208862 1179.956421 1179.500854 1178.996338 1178.501465 1178.135132 1177.796631 1177.654297 1177.335205 1176.838013 1176.193359 1175.51062 1174.990845 1174.703613 1174.598511 1174.488281 1174.155396 1173.891846 1173.601929 1173.317871 1173.000488 1172.595215 1172.138184 1171.553467 1171.063843 1170.988159 1171.209595 1171.320679 1171.234741 1171.172363 1171.32959 1171.255737 1170.766846 1170.353149 1170.129761 1169.796265 1169.039673 1168.032227 1167.089111 1166.01123 1164.911011 1163.90979 1163.101685 1162.274658 1161.609985 1160.891968 1160.305298 1159.645264 1159.425537 1161.457642 1163.500122 1165.801392 1167.220581 1168.125 1169.379639 1171.131714 1171.731689 1172.603516 1174.520386 1176.81311 1179.629272 1182.479858 1187.640137 1193.729004 1200.662354 1208.399048 1216.495483 1212.918213 1209.607544 1209.340454 1212.081543 1216.649414 1219.84436 1226.040649 1232.744507 1238.504761 1245.95166 1255.581055 1265.379517 1272.200806 1277.079346 1281.916016 1288.78418 1297.96582 1303.810913 1299.161133 1292.459229 1287.102905 1294.1875 1305.02478 1309.215698 1313.083862 1316.964722 1319.247559 1320.546753 1321.0802 1319.018433 1311.568237 1303.895996 1300.345215 1297.380249 1292.128784 1285.599121 1278.683472 1272.363403 1263.574341 1248.676758 1240.697754 1233.963867 1223.37915 1217.630615 1211.675781 1202.856445 1194.760864 1188.474243 1184.511353 1182.263672 1179.134644 1170.802368 1170.67688 1169.833496 1168.278442 1165.755859 1163.424194 1161.776733 1160.03772 1158.401855 1157.276733 1155.526001 1153.596191 1151.790283 1150.328491 1149.214355 1148.244873 1147.52771 1146.620728 1144.720703 1142.651978 1140.313721 1138.032471 1136.300903 1135.248779 1134.622314 1133.928955 1133.475464 1133.040039 1131.707642 1129.70813 1127.71228 1125.6604 1123.712158 1122.413452 1122.161133 1122.221924 1122.600464 1122.832031 1122.450928 1120.903809 1119.178467 1118.633179 1119.222778 1119.826172 1120.625244 1121.476318 1122.258301 1123.167725 1124.134766 1125.029663 1125.889648 1126.704712 1127.541748 1128.569092 1129.428345 1130.526367 1131.595337 1132.858521 1133.992676 1134.291748 1134.547485 1138.553589 1143.721436 1146.056885 1148.432373 1150.917969 1153.456543 1156.745605 1158.508545 1159.189331 1160.246948 1164.292236 1167.114136 1169.926636 1172.886841 1175.25415 1177.800171 1177.460083 1178.109497 1180.801514 1180.510498 1180.2948 1181.584595 1182.37793 1183.248169 1182.47229 1180.376831 1181.485718 1183.984619 1186.367065 1188.301392 1188.967041 1187.792847 1184.691162 1177.866333 1170.002686 1169.442627 1179.249756 1190.195801 1198.046387 1181.198486 1177.074219 1173.70752 1170.51709 1171.118408 1175.46521 1179.978149 1177.389282 1173.416748 1169.830444 1165.007324 1160.01709 1155.592407 1150.951172 1147.544067 1146.433716 1146.971313 1148.071167 1148.598022 1145.096558 1143.052368 1143.325439 1135.208252 1132.836914 1133.479736 1134.438599 1135.693726 1137.04834 1138.298706 1140.054199 1142.337769 1144.994873 1145.291626 1146.995483 1148.442871 1149.362915 1151.260498 1153.813232 1156.416626 1160.002563 1173.110107 1178.811768 1183.381592 1187.443481 1200.096191 1208.093262 1210.786621 1208.93335 1203.46228 1202.236938 1207.679565 1217.565796 1225.339111 1232.425659 1227.046509 1221.590088 1217.05188 1212.924194 1208.034668 1204.722412 1200.143677 1197.328857 1194.300903 1188.110596 1184.458008 1176.807983 1170.830688 1167.35437 1163.87207 1161.559814 1160.660767 1159.531128 1158.431274 1155.997314 1153.783569 1152.181885 1151.263428 1150.696533 1150.250244 1149.740845 1149.225342 1148.713379 1147.638062 1146.171509 1143.210571 1139.891968 1136.37854 1132.328491 1127.405396 1122.719604 1121.658691 1122.097656 1121.827637 1119.740845 1118.491821 1118.144043 1116.940796 1114.4552 1112.689697 1111.043945 1110.687012 1110.699097 1110.945068 1110.211548 1109.687012 1110.79126 1110.06311 1105.992432 1103.776123 1102.570068 1101.580566 1100.77002 1100.192505 1099.256348 1098.510132 1097.715332 1097.364502 1099.324951 1100.580078 1100.937988 1100.64917 1100.054688 1099.018311 1097.833008 1097.891724 1097.292236 1095.675537 1094.952881 1095.283936 1095.8302 1095.395386 1093.921021 1091.878662 1089.978638 1088.06958 1086.382568 1084.392944 1083.544922 1083.396484 1083.840088 1086.75647 1082.389526 1081.008423 1081.862915 1082.194946 1082.851074 1082.88623 1082.689331 1082.37915 1081.755371 1081.102051 1080.266113 1079.133179 1078.900391 1079.036255 1079.494507 1079.04834 1078.483398 1078.20813 1077.842651 1078.042114 1078.43689 1078.483521 1078.414307 1078.109863 1077.757202 1077.04895 1076.050415 1075.371826 1075.95813 1076.618774 1077.155518 1077.478516 1077.64209 1077.590576 1077.424683 1076.935059 1075.947754 1075.165771 1073.426147 1075.89978 1079.710815 -1121.098511 1119.143799 1116.815674 1114.548218 1112.227051 1109.251343 1108.365356 1110.627319 1111.750977 1112.671021 1113.936768 1115.263428 1116.717896 1118.169189 1119.659546 1120.955444 1121.585693 1122.591064 1122.97229 1123.100464 1123.243042 1123.374634 1123.48584 1123.456055 1123.102173 1122.263428 1122.054077 1121.703613 1121.520752 1121.460571 1121.688843 1121.816772 1122.3479 1124.008667 1125.421753 1126.813843 1128.264282 1129.519287 1130.766113 1132.065063 1133.896973 1137.532471 1143.459717 1147.31604 1146.987549 1143.125732 1139.592407 1139.034912 1140.153564 1141.794434 1142.889771 1143.771729 1144.400391 1144.886108 1145.585693 1147.034668 1150.282593 1152.71582 1153.473999 1154.211426 1155.635254 1157.98877 1159.638672 1160.288574 1160.844849 1162.120361 1165.01062 1167.907471 1169.638062 1170.064087 1172.882568 1179.34729 1186.438232 1198.092163 1207.269409 1209.421997 1209.182983 1210.875 1210.552368 1205.643433 1198.054932 1190.841553 1185.861938 1188.67334 1192.104248 1195.162598 1195.165161 1193.467651 1197.723633 1201.827881 1205.858398 1209.437012 1210.7854 1208.804077 1202.132812 1197.216919 1193.283691 1190.352539 1188.275024 1186.690308 1185.419312 1183.377441 1181.536499 1180.44751 1180.213501 1180.432617 1181.655518 1183.172607 1183.395508 1181.572632 1179.792114 1179.344238 1178.850708 1178.171509 1177.867188 1178.381104 1179.268921 1180.055664 1180.74585 1181.218384 1181.624268 1181.915527 1182.226929 1182.699585 1183.120239 1183.935547 1185.955444 1187.804565 1189.477295 1191.051636 1192.719849 1194.557983 1195.778076 1198.092896 1200.400513 1202.969849 1205.581055 1205.864502 1198.030396 1192.856934 1191.603027 1191.272461 1190.86792 1191.080811 1191.471802 1192.789062 1195.94397 1203.701172 1208.209106 1204.298096 1203.426147 1202.654541 1201.776611 1200.700073 1199.620483 1198.004761 1196.469604 1194.39563 1192.07312 1190.244995 1188.495483 1186.796509 1184.906372 1183.912354 1183.280884 1181.824951 1178.883057 1177.99939 1178.659302 1180.119751 1182.568726 1183.376221 1183.231079 1182.539307 1182.041016 1181.536011 1181.412231 1181.769287 1181.924561 1182.07019 1182.413208 1182.84668 1183.073608 1182.789917 1182.481567 1182.027954 1181.344116 1180.831909 1180.3479 1180.132935 1179.884888 1179.685303 1179.270264 1179.012573 1178.93335 1178.737061 1178.441284 1178.310791 1178.27356 1178.479858 1178.580078 1178.831055 1179.143921 1179.46936 1180.002563 1180.427368 1180.863525 1181.161987 1181.361328 1181.38147 1181.225952 1180.902344 1180.507446 1179.974731 1179.503052 1179.083618 1178.776855 1178.630005 1178.386963 1178.039673 1177.623413 1176.900024 1176.196045 1175.709595 1175.325073 1175.224365 1175.102539 1174.842407 1174.420532 1174.140747 1173.857056 1173.440674 1173.049194 1172.618164 1172.043579 1171.533203 1171.451416 1171.776733 1171.815186 1171.817383 1171.754761 1171.823242 1171.600098 1171.234741 1171.122681 1170.99585 1170.595703 1169.742065 1168.599365 1167.458496 1166.439819 1165.368042 1164.391357 1163.483154 1162.717651 1161.973145 1161.323364 1160.635742 1160.016357 1159.768188 1161.545898 1164.910278 1168.002319 1169.021362 1169.067627 1169.575806 1170.759888 1172.034302 1172.895752 1174.295532 1176.35022 1178.702026 1181.172974 1183.693237 1189.723755 1194.375244 1204.195801 1222.483887 1220.281494 1211.5979 1209.491333 1211.776245 1217.88623 1220.853638 1225.291138 1229.914429 1234.781738 1242.134888 1250.971069 1260.436279 1268.820068 1273.140137 1276.673828 1278.71228 1282.961182 1285.454468 1285.706421 1281.382568 1278.615967 1294.368042 1306.265503 1311.116577 1315.007202 1317.741821 1319.139648 1321.750732 1317.214844 1310.702759 1303.481079 1298.62207 1294.997681 1291.750244 1286.91333 1281.762695 1277.050781 1271.900635 1264.059204 1249.0896 1235.729736 1226.927734 1214.891968 1204.576904 1201.361206 1194.561035 1193.36084 1184.634766 1184.267578 1183.733643 1181.476929 1177.412842 1173.87085 1171.678589 1168.996094 1166.716064 1164.476929 1162.509521 1160.995972 1159.716431 1158.025024 1155.86377 1153.787476 1151.916504 1150.496704 1149.460083 1148.718628 1147.804077 1146.224243 1145.119019 1142.737427 1140.008423 1137.645142 1135.72522 1134.147461 1133.572754 1133.062012 1132.665039 1132.035034 1130.886719 1129.408203 1127.427124 1125.417847 1123.451172 1122.560181 1122.204956 1122.558838 1123.079346 1123.070435 1122.733154 1121.949951 1120.030762 1118.932617 1119.41687 1120.041138 1120.931519 1121.795898 1122.745483 1123.785889 1124.675781 1125.690308 1126.714233 1127.65918 1128.531006 1129.371704 1130.326172 1131.437866 1132.534912 1133.793823 1135.841675 1136.851074 1137.438477 1142.708008 1147.12146 1148.82666 1151.783569 1154.72998 1156.46106 1159.040894 1162.218628 1163.475708 1165.63208 1169.013916 1172.258057 1174.863892 1177.950684 1181.407471 1184.457031 1182.302002 1183.201782 1185.573608 1185.884033 1185.782593 1187.402344 1189.43042 1190.003296 1183.505493 1181.879517 1185.699341 1192.165649 1194.253052 1194.837524 1196.500244 1191.237549 1184.951904 1173.520996 1169.870361 1171.005981 1176.406372 1186.263184 1195.86792 1183.50708 1179.369873 1177.018677 1174.453369 1171.558838 1175.344482 1183.786499 1184.240234 1183.2771 1179.437012 1174.488403 1169.727051 1164.989502 1159.693115 1155.54834 1151.488525 1147.256104 1150.218262 1149.670532 1146.108276 1145.755737 1147.77124 1143.174316 1134.243042 1133.203613 1133.805664 1133.919922 1135.011108 1136.558594 1137.828491 1138.078735 1139.587646 1143.678589 1147.136597 1148.278564 1147.999756 1149.556885 1152.824219 1156.678833 1160.806396 1174.538696 1183.544678 1189.079102 1196.773804 1201.052979 1207.250854 1209.754517 1207.408203 1198.970825 1195.429077 1205.270752 1210.723511 1215.544189 1223.781494 1224.546509 1220.858521 1217.244263 1213.437378 1209.938721 1205.765869 1196.81311 1193.682861 1185.573486 1184.157227 1181.789795 1175.55481 1170.320312 1166.68689 1163.368652 1160.935425 1159.927124 1159.550781 1158.314697 1155.099121 1152.289795 1150.675415 1149.98999 1149.841187 1149.729858 1149.543579 1149.163208 1148.893311 1148.517334 1148.150391 1147.603516 1142.77832 1137.814087 1133.245361 1126.014771 1122.330811 1121.258789 1120.847412 1119.82019 1117.903687 1116.23999 1114.837158 1112.749878 1111.544922 1110.923706 1110.331909 1109.62146 1108.912476 1107.71521 1106.984741 1106.973511 1105.393555 1105.308594 1104.67981 1102.788086 1102.322632 1102.035034 1101.522949 1100.473145 1099.920166 1100.143921 1100.235596 1100.036865 1100.974731 1101.761963 1102.061157 1101.627808 1100.642456 1099.415039 1098.299316 1097.831543 1097.981323 1096.435913 1096.009521 1097.020508 1098.050537 1097.879761 1095.868896 1093.879761 1091.950195 1089.294067 1085.353271 1087.282959 1087.363037 1086.856689 1087.290283 1087.007568 1084.304932 1081.473145 1080.238892 1080.70166 1081.053711 1081.02063 1080.618774 1079.730957 1078.671265 1077.925537 1077.553955 1077.578857 1076.950073 1076.576782 1077.353516 1076.771851 1075.753052 1075.576294 1075.32959 1075.904541 1076.341675 1076.760864 1076.680054 1076.367432 1075.569824 1074.950806 1074.378418 1072.071411 1074.321289 1075.209717 1075.780762 1076.362549 1076.587036 1076.652954 1076.393555 1075.677124 1074.052734 1073.35791 1072.654541 1074.462891 1076.425049 -1121.47168 1119.470093 1117.571045 1115.368042 1112.882324 1110.459351 1108.60083 1110.777954 1112.05603 1113.062866 1114.193237 1115.62085 1117.15625 1118.878906 1120.539673 1121.871704 1122.524536 1122.853027 1123.443237 1123.735474 1123.933228 1124.047607 1124.180908 1123.923218 1123.685303 1122.969482 1122.389771 1122.19519 1121.760132 1121.693726 1122.085205 1122.188477 1122.141113 1123.539307 1125.188843 1126.421387 1127.704834 1128.890747 1130.259888 1131.664673 1133.273315 1134.507568 1141.307495 1147.254272 1146.525146 1140.026245 1137.302246 1134.729248 1136.577759 1139.928955 1141.683838 1143.010376 1143.973633 1144.994141 1146.372803 1148.740479 1153.69751 1158.108643 1157.740112 1155.190186 1155.364624 1156.544067 1157.609009 1158.189087 1158.579346 1159.059204 1162.91272 1165.979126 1167.801392 1169.541016 1173.316528 1179.159912 1187.268311 1200.171509 1207.693604 1205.305542 1204.462769 1206.53064 1209.286133 1206.777344 1199.587524 1193.853394 1185.605591 1182.793823 1184.827026 1187.286499 1189.566528 1192.159668 1196.02832 1198.654053 1201.300293 1204.377808 1204.375488 1200.215942 1194.717529 1192.566528 1190.002441 1187.625732 1185.876343 1184.552124 1183.328003 1181.9375 1180.352173 1179.282593 1178.833984 1179.081665 1179.811523 1180.744141 1180.285767 1178.459595 1177.181763 1175.694702 1174.373779 1173.234741 1174.043091 1177.104492 1178.829468 1180.044067 1181.020874 1181.526978 1181.738281 1181.7854 1181.960815 1182.335083 1182.742432 1183.593506 1185.59375 1187.452393 1189.136475 1190.799438 1192.282104 1193.746826 1195.597168 1198.49292 1201.655884 1204.890625 1207.365234 1209.425293 1206.996338 1196.098389 1192.823364 1191.584961 1190.898682 1190.554688 1190.807495 1191.801758 1194.212402 1200.984619 1207.703247 1202.879517 1201.290405 1199.959839 1198.826294 1197.872437 1196.879517 1195.671753 1194.043457 1192.074463 1189.94165 1187.927856 1186.234985 1184.492676 1182.568848 1181.340454 1180.163452 1178.364868 1178.686768 1179.974609 1181.241455 1182.280151 1183.3302 1183.626465 1183.593262 1183.39209 1183.109741 1182.272949 1182.516113 1182.972778 1183.163208 1183.012207 1183.272217 1183.418945 1183.44165 1183.428467 1183.218384 1182.730957 1182.084717 1181.510132 1181.075317 1180.938232 1180.807983 1180.649536 1180.3927 1179.961914 1179.678589 1179.322266 1179.103271 1178.691162 1178.685913 1178.967773 1179.202148 1179.49292 1179.786255 1180.200928 1180.763428 1181.117432 1181.588989 1182.044067 1182.368408 1182.289185 1182.011108 1181.526978 1180.932983 1180.423828 1180.067627 1179.71521 1179.570679 1179.413696 1179.115723 1178.801147 1178.234619 1177.57019 1176.761719 1176.253296 1175.947876 1175.821167 1175.631836 1175.431152 1175.148682 1174.72998 1174.391357 1174.005493 1173.484375 1173.035034 1172.638916 1172.355225 1172.162109 1172.285645 1172.403931 1172.329224 1172.260376 1172.23645 1172.022949 1171.745239 1171.617065 1171.462769 1171.14917 1170.314453 1169.156494 1168.005005 1166.886963 1165.828125 1164.8302 1163.945312 1163.173584 1162.417847 1161.754028 1161.052734 1160.48584 1160.069458 1161.839966 1167.037964 1170.987549 1170.922974 1170.509888 1169.993164 1170.127563 1170.518555 1171.28125 1173.451294 1175.422241 1177.495483 1179.513672 1181.628906 1184.671509 1190.498291 1198.3573 1210.706665 1214.69043 1207.711792 1206.299438 1209.308105 1216.649536 1221.856934 1224.883667 1229.120605 1234.134033 1239.528442 1246.368774 1255.07605 1264.263916 1270.064209 1272.459473 1269.0448 1269.225708 1271.192749 1270.397217 1272.204834 1281.786255 1292.584351 1306.33374 1313.686035 1317.891724 1317.429443 1316.700073 1315.224365 1308.049561 1302.759399 1298.878784 1293.153442 1289.708252 1285.174683 1281.095703 1278.059937 1274.840698 1271.466553 1263.015625 1247.445801 1238.485229 1232.589722 1222.580566 1207.463379 1204.240112 1199.834717 1198.575806 1197.963501 1196.015503 1192.924805 1187.172363 1181.993774 1176.109253 1172.279175 1169.450562 1167.126343 1164.792114 1162.493042 1160.630005 1159.383301 1157.843018 1155.671265 1153.419434 1151.495361 1149.978882 1148.984375 1148.245117 1147.60498 1147.235596 1146.440674 1142.603149 1139.446167 1137.153931 1135.410034 1133.960083 1133.100098 1132.635864 1132.087036 1131.498901 1130.464233 1129.211914 1127.404175 1125.450806 1123.182861 1122.206299 1122.600464 1123.185791 1123.358643 1123.37915 1123.039429 1122.454712 1121.051758 1119.463867 1119.567993 1120.404053 1121.325439 1122.172241 1123.36792 1124.405762 1125.496216 1126.491577 1127.507324 1128.557861 1129.471558 1130.422852 1131.350464 1132.247559 1133.169922 1134.648193 1137.076172 1139.222168 1141.411499 1144.437622 1147.342407 1149.966553 1154.349365 1158.787476 1160.591431 1162.129272 1165.560547 1167.501953 1169.971924 1172.515259 1177.000854 1180.072876 1181.610596 1185.487549 1187.170044 1187.63916 1188.575317 1189.909546 1191.181885 1193.622681 1194.015869 1197.382324 1196.97644 1182.865112 1182.553223 1193.272705 1199.42688 1202.105347 1199.772217 1194.975708 1187.543701 1177.235474 1170.058594 1172.976929 1175.308594 1178.565186 1180.835693 1185.122314 1182.482788 1181.1521 1180.468506 1179.241089 1178.486694 1179.013672 1181.476318 1183.263672 1184.682495 1185.122314 1183.217773 1179.848511 1176.603516 1172.52063 1164.645142 1158.039429 1155.095093 1153.740479 1151.651367 1148.453247 1145.845337 1148.194214 1147.233032 1137.720459 1133.899414 1135.350708 1133.744019 1133.746948 1134.39563 1134.853638 1134.204102 1135.605591 1140.578735 1145.064819 1146.221313 1145.484253 1148.156006 1151.344116 1155.249634 1159.510376 1171.241821 1179.036377 1186.075684 1191.996704 1196.748901 1201.261841 1205.381104 1201.673584 1194.927856 1192.549805 1198.981812 1200.274658 1207.359741 1221.202515 1222.119873 1220.545654 1216.627563 1213.39856 1210.362427 1206.293945 1200.597046 1196.752563 1189.611572 1185.342407 1181.559204 1170.692261 1168.935303 1165.76709 1160.349854 1158.879639 1158.120605 1157.775635 1156.718384 1152.722168 1148.923462 1147.92627 1147.954712 1148.809692 1149.037109 1149.031494 1149.156006 1148.562256 1147.955933 1147.197144 1145.216064 1141.073853 1135.987793 1131.084717 1122.568115 1121.342773 1122.88623 1122.280151 1119.171753 1116.214233 1114.20813 1113.224121 1115.190674 1117.643066 1117.948975 1116.817505 1114.484253 1112.640869 1111.116455 1111.067871 1111.094727 1108.496948 1104.772583 1103.860352 1103.776367 1103.578369 1103.501587 1102.986816 1102.548706 1102.556885 1102.861206 1103.036011 1103.211182 1103.490601 1103.581421 1103.626831 1102.964355 1101.926147 1100.612305 1099.297485 1097.817017 1098.408691 1097.300537 1097.520508 1098.519531 1099.011475 1098.827637 1097.808472 1096.049927 1093.990234 1092.598755 1093.310791 1095.950562 1093.395264 1091.31958 1089.052368 1086.591309 1084.452637 1083.942627 1082.611206 1080.285278 1079.482544 1079.578125 1078.881104 1078.807129 1080.812866 1082.556763 1081.130981 1080.187256 1079.043579 1077.142456 1075.942627 1075.381226 1075.336792 1075.084351 1074.359009 1074.078125 1074.496338 1075.178589 1075.491821 1075.061157 1074.079346 1071.687378 1072.176392 1072.685791 1070.637695 1073.695923 1074.788818 1075.242188 1075.615845 1075.680298 1075.443848 1074.930542 1073.814941 1072.571045 1072.209473 1073.162598 1074.671631 -1123.00061 1120.511841 1118.416748 1116.07251 1113.529419 1111.054443 1108.795044 1110.861694 1112.129395 1113.121582 1114.293091 1115.638062 1117.455444 1119.297241 1121.110229 1122.355347 1123.098633 1123.497681 1123.965332 1124.346069 1124.648193 1124.828491 1124.853394 1124.613525 1124.381592 1123.819458 1123.158813 1122.464478 1122.087158 1121.906128 1122.348633 1122.796265 1123.01416 1123.818237 1124.967407 1126.054199 1127.247681 1128.431519 1129.649536 1130.786255 1131.853027 1132.899292 1133.66394 1137.479736 1137.385742 1134.59668 1133.984863 1134.328857 1136.111328 1138.907471 1141.276123 1143.2771 1144.845825 1147.073975 1149.498535 1153.004883 1157.638062 1159.389526 1158.171509 1154.685059 1154.550659 1155.601196 1156.648438 1157.702637 1158.76062 1160.115601 1162.388794 1165.006104 1167.122314 1169.414551 1172.669922 1177.448975 1183.916748 1195.003296 1200.544312 1200.83374 1199.483521 1199.515015 1203.08252 1202.273682 1197.87793 1193.231689 1188.040161 1184.783813 1181.175415 1181.829956 1185.128174 1188.384888 1192.259766 1195.570435 1197.26123 1197.112183 1195.526123 1193.135254 1190.822144 1188.98938 1186.877441 1184.971436 1183.210571 1182.196411 1181.156982 1180.126221 1178.947632 1177.970459 1177.298218 1177.022705 1177.060669 1177.12207 1176.38269 1175.130859 1174.039062 1172.689209 1171.108154 1170.646606 1173.356079 1177.157959 1179.31958 1180.691895 1182.729736 1183.009888 1182.592407 1183.349365 1183.056763 1182.259033 1183.765503 1184.608887 1185.900513 1187.672119 1189.156494 1190.59436 1192.10376 1193.489868 1194.933716 1198.313721 1202.132446 1206.225586 1208.917358 1209.680176 1207.426636 1198.796875 1194.765747 1192.416992 1191.090454 1190.419312 1190.358398 1190.952515 1193.334717 1196.94165 1200.418091 1199.864014 1199.133057 1198.02771 1196.527954 1194.788574 1193.79248 1192.638794 1191.190918 1189.440674 1187.526001 1185.923218 1184.205322 1182.521973 1180.939331 1179.455933 1178.513062 1179.317749 1180.826172 1182.89978 1183.332275 1183.470947 1183.62439 1183.826538 1183.929932 1183.68457 1183.488525 1183.116333 1183.302612 1183.501221 1183.557739 1183.622925 1183.637817 1183.768677 1183.750488 1183.672485 1183.44751 1183.263184 1182.687012 1182.133545 1181.769409 1181.740723 1181.742188 1181.700684 1181.417969 1181.090454 1180.697632 1180.096069 1179.47998 1179.036133 1179.302368 1179.62146 1179.897095 1180.209473 1180.477783 1180.968506 1181.310425 1181.77002 1182.311646 1182.681396 1183.169922 1183.126587 1182.633179 1182.027954 1181.420898 1181.048584 1180.695312 1180.468628 1180.244385 1180.030151 1179.739502 1179.382568 1178.79834 1178.118652 1177.368042 1176.9021 1176.550537 1176.397827 1176.299072 1175.959717 1175.730713 1175.294678 1174.75708 1174.375244 1174.024536 1173.609253 1173.290039 1172.94104 1172.79126 1172.848022 1172.780762 1172.805176 1172.708618 1172.634033 1172.360352 1172.178345 1171.879395 1171.5979 1171.248169 1170.593994 1169.429688 1168.409912 1167.279419 1166.371826 1165.401367 1164.516479 1163.691528 1162.871826 1162.149902 1161.551514 1161.119873 1160.806885 1160.849854 1166.788086 1171.475464 1171.808228 1171.759888 1171.147583 1170.772217 1170.60022 1171.059082 1172.82666 1174.510132 1176.489136 1178.740723 1180.857544 1182.787964 1187.287109 1192.470459 1196.807373 1198.664307 1199.005371 1204.387939 1206.045288 1210.164795 1220.877686 1224.418823 1229.206787 1233.525879 1237.759155 1244.004272 1250.967407 1257.483521 1263.952271 1267.37439 1264.436768 1261.206665 1262.387939 1266.639038 1272.798462 1283.463745 1296.425781 1309.134888 1318.170532 1318.823364 1315.846191 1312.187134 1307.025269 1302.815186 1299.454224 1296.187134 1291.817871 1286.743042 1281.496948 1277.547363 1271.374878 1271.515503 1270.724243 1265.688965 1251.080444 1241.111572 1235.259766 1228.127075 1220.608154 1212.835083 1206.947021 1204.728271 1203.358398 1201.307983 1198.425659 1192.859009 1183.316284 1176.79126 1171.13562 1169.255493 1167.369751 1164.854858 1162.009399 1158.889038 1158.063843 1156.674316 1155.060181 1152.640991 1150.194458 1148.663086 1147.813721 1147.104126 1146.643677 1146.003174 1144.826172 1141.569946 1138.356445 1135.914185 1134.523193 1133.750244 1133.02417 1132.374146 1131.846924 1131.262085 1130.397583 1129.203979 1127.893433 1126.214111 1124.327759 1122.883545 1123.080566 1123.628174 1123.657471 1123.619263 1123.403687 1122.757812 1122.091919 1120.253296 1119.694336 1120.732666 1121.798828 1122.735962 1124.112549 1125.20166 1126.359985 1127.403198 1128.39978 1129.337036 1130.303101 1131.339355 1132.618652 1133.473633 1133.849487 1135.676514 1138.688965 1141.541748 1144.760742 1146.446411 1146.067749 1146.803467 1151.521118 1158.681763 1162.460449 1168.661499 1170.006104 1171.02771 1173.795776 1178.066406 1181.473755 1185.425781 1186.882935 1189.13208 1191.495239 1192.305176 1193.797607 1194.204224 1196.295166 1198.331665 1201.836792 1203.389648 1197.60498 1185.808472 1182.587891 1195.382446 1203.954346 1209.046875 1199.621826 1190.988159 1184.189209 1175.179321 1175.18042 1177.945312 1180.148804 1182.398193 1184.256714 1186.728882 1187.987183 1186.588989 1185.404663 1184.386353 1183.747314 1183.41687 1183.069946 1182.841309 1182.934937 1186.56543 1187.077515 1186.674316 1186.296143 1183.328125 1174.9104 1166.494263 1159.363647 1156.95166 1155.067139 1152.347168 1149.755859 1149.996826 1148.552246 1143.644165 1139.397339 1142.598877 1142.020386 1137.887939 1135.681519 1134.807251 1134.914429 1133.912476 1137.855957 1140.998413 1142.727661 1143.92981 1147.00769 1149.682007 1152.883301 1156.59668 1166.119385 1169.959839 1177.046265 1182.412109 1187.529053 1191.476929 1193.023193 1191.947876 1184.866455 1183.543823 1187.535522 1192.908936 1207.882446 1219.750488 1221.713135 1220.081055 1216.63269 1212.702271 1209.613159 1205.818726 1201.218872 1197.112427 1192.303223 1187.227661 1183.253662 1176.137085 1171.689697 1167.06189 1160.185059 1159.065796 1158.389404 1157.150024 1155.695068 1151.265259 1146.571899 1145.596924 1145.088623 1145.006226 1145.817261 1145.964355 1145.821411 1145.495972 1144.09436 1141.553711 1136.173096 1134.804443 1131.222168 1122.277954 1121.69104 1125.921021 1125.771362 1123.773804 1119.387207 1114.587891 1115.56311 1118.852173 1123.161255 1124.071899 1123.96875 1122.747803 1119.374512 1116.03125 1114.131592 1112.988525 1111.401489 1109.09729 1107.467773 1106.578735 1106.015747 1105.516113 1105.199585 1105.057495 1105.137207 1105.725708 1106.348145 1106.432129 1106.105103 1106.011597 1105.825439 1105.481201 1104.716553 1103.582031 1102.308105 1100.889282 1099.125 1099.2677 1098.679199 1099.040405 1099.61377 1099.502808 1099.264893 1098.633911 1097.568848 1095.235962 1095.431519 1097.974976 1098.546021 1097.686157 1094.639038 1090.497314 1085.846436 1085.791382 1088.122437 1087.988281 1089.69043 1094.981323 1087.69397 1084.002563 1085.565186 1084.924683 1087.490234 1085.648926 1084.639282 1083.580688 1080.233643 1077.407104 1076.660767 1076.772461 1076.506226 1075.887207 1074.295044 1073.255737 1074.29834 1074.195435 1073.915527 1073.154663 1073.378906 1073.96582 1074.366943 1073.219482 1070.107422 1073.052246 1073.779541 1074.43335 1074.409546 1074.521851 1074.531738 1074.068481 1073.141235 1071.956055 1071.639404 1071.873535 -1125.081177 1121.4375 1118.990356 1116.99939 1114.377808 1111.372803 1108.863892 1110.734009 1111.891113 1112.767212 1113.993896 1115.519653 1117.432251 1119.35022 1121.108398 1122.503174 1123.31189 1123.844238 1124.43396 1124.893311 1125.23999 1125.404785 1125.49292 1125.368652 1125.072021 1124.639038 1123.971191 1123.342163 1122.496948 1122.186035 1122.233276 1122.628784 1123.336426 1123.920654 1124.664795 1125.66272 1126.806763 1127.853394 1128.852539 1129.814087 1130.744263 1131.44397 1132.037109 1132.329956 1132.665649 1132.826172 1133.413452 1134.521484 1136.564575 1138.515259 1141.472046 1144.690552 1147.078491 1149.356567 1152.118896 1156.468506 1159.616821 1157.938721 1153.022339 1152.158691 1153.803467 1156.002441 1157.27832 1158.47583 1159.839478 1161.567017 1163.120728 1164.978027 1167.003418 1169.057495 1171.019409 1174.967896 1180.455078 1187.380615 1195.167603 1195.762329 1194.00354 1192.909668 1195.611938 1196.735596 1194.216064 1191.555908 1188.318115 1186.042236 1183.997681 1179.195068 1181.799072 1184.141724 1188.000732 1191.113159 1192.243408 1192.227783 1190.94751 1189.190063 1187.226562 1186.100342 1184.408691 1182.520874 1181.227539 1180.059692 1179.079224 1178.199219 1177.180176 1176.346924 1175.534424 1174.962646 1174.380737 1174.163452 1173.581909 1172.471069 1171.317261 1169.728149 1171.188599 1174.098145 1177.42041 1179.939087 1181.122437 1183.169312 1185.597412 1186.69519 1186.607422 1187.131226 1186.64502 1184.730835 1185.298218 1186.106323 1187.121216 1188.226685 1189.428589 1190.62854 1192.05603 1193.491333 1194.929321 1197.532959 1201.173096 1206.314819 1209.403809 1209.376831 1204.668579 1198.249268 1194.945923 1192.963745 1191.420898 1190.224976 1189.743164 1189.781006 1190.684082 1193.021851 1195.062744 1197.047119 1197.529541 1196.581909 1194.547363 1192.556519 1190.778564 1189.446655 1188.066284 1186.69104 1185.460449 1183.927856 1182.324219 1180.937988 1179.6698 1178.778442 1180.035278 1181.370239 1182.996338 1183.511597 1183.844971 1183.993652 1184.089722 1184.138916 1184.169678 1184.035278 1183.823486 1183.724854 1183.739868 1183.82019 1184.005371 1184.078979 1184.15564 1184.065796 1184.056152 1183.984863 1183.668701 1183.466431 1183.256958 1182.692383 1182.331909 1182.639648 1182.773804 1182.716309 1182.388672 1182.189697 1182.047241 1181.48584 1180.016113 1179.431152 1179.746338 1180.375122 1180.701294 1181.010376 1181.213501 1181.531738 1181.8479 1182.39502 1182.855835 1183.210815 1183.56543 1183.45874 1183.085083 1182.450317 1181.907349 1181.646851 1181.395752 1181.123291 1180.88208 1180.587158 1180.243164 1179.814697 1179.292725 1178.67395 1177.916992 1177.421021 1177.071533 1176.952148 1176.786743 1176.477295 1176.207886 1175.734009 1175.391113 1174.911133 1174.493408 1174.311157 1173.92749 1173.571777 1173.380005 1173.301147 1173.28125 1173.250122 1173.109863 1172.928223 1172.612793 1172.349243 1172.039307 1171.713013 1171.243164 1170.558472 1169.717773 1168.525269 1167.558228 1166.718628 1165.80957 1164.918091 1164.081055 1163.251343 1162.62146 1162.127197 1161.683105 1161.390625 1161.046265 1164.279419 1169.992065 1171.676514 1172.343018 1172.680298 1172.550781 1171.21106 1170.770752 1171.395264 1173.374878 1175.939087 1178.045044 1179.859619 1181.449585 1183.499146 1188.574341 1191.917725 1193.872803 1200.630737 1208.539551 1213.177124 1216.768433 1219.640747 1223.897217 1227.755615 1231.276978 1234.079468 1238.019287 1244.853027 1246.616211 1252.397705 1256.202881 1255.915527 1254.651001 1256.899414 1269.009399 1275.053223 1284.15625 1298.12561 1312.732056 1319.385864 1318.545532 1313.688843 1309.138306 1303.645752 1300.257812 1296.989136 1294.13147 1289.828125 1285.52417 1281.588257 1275.71521 1269.213501 1267.523682 1268.349976 1259.802246 1249.307007 1240.449463 1234.129272 1229.143555 1224.016235 1221.215576 1214.644897 1210.323486 1208.691284 1204.983521 1198.694336 1191.50354 1181.861206 1177.860718 1173.077515 1170.722778 1168.254761 1165.378174 1162.464844 1160.105103 1158.35144 1156.560303 1154.570801 1152.112915 1148.465332 1146.779663 1146.469238 1145.83252 1145.048584 1143.981689 1142.214966 1139.734741 1137.071289 1135.084717 1134.075562 1133.336792 1132.799927 1132.268799 1131.757935 1131.194092 1130.461792 1129.523315 1128.371338 1127.089478 1125.67627 1124.585815 1124.069946 1124.004883 1123.930054 1123.75354 1123.470459 1123.038452 1122.425537 1120.937866 1119.850464 1121.34668 1122.639038 1123.598755 1125.095825 1126.234253 1127.393921 1128.61438 1129.52417 1130.29541 1131.140015 1132.407837 1133.736206 1135.02063 1135.795288 1137.717285 1141.268066 1144.478027 1147.354614 1150.419067 1151.619873 1147.666138 1145.73999 1149.817383 1157.262817 1169.200439 1173.05835 1175.944702 1179.057007 1183.490845 1186.421631 1191.089355 1193.864258 1194.134399 1194.978516 1198.071411 1200.044678 1202.70752 1205.11438 1206.532227 1209.087891 1209.462036 1202.321899 1189.419678 1181.885498 1188.97937 1199.302612 1202.473267 1195.980103 1188.135376 1181.92981 1180.788574 1181.983521 1184.148926 1187.06189 1190.378296 1193.044922 1194.791138 1195.737549 1196.430298 1196.237183 1195.594727 1194.849243 1192.330811 1190.478394 1188.553345 1187.506592 1188.729492 1190.125244 1193.039429 1195.673096 1191.796997 1184.912231 1176.955688 1169.686768 1162.866089 1158.52063 1156.834717 1154.854858 1153.497803 1150.677368 1147.017822 1143.740845 1146.117065 1147.585449 1145.861938 1141.952515 1138.999023 1137.957153 1136.43811 1135.776489 1138.178589 1139.595093 1140.606934 1144.180298 1146.878052 1150.096313 1154.033081 1161.705444 1165.46106 1169.574341 1174.99707 1178.59729 1180.946045 1182.221558 1178.453735 1179.367432 1181.073486 1190.014282 1198.060913 1210.458862 1220.219604 1221.890869 1220.089478 1216.305908 1212.110718 1207.378296 1203.468506 1199.252197 1195.249878 1190.631958 1186.843384 1182.919678 1177.42688 1172.494629 1167.776978 1163.106079 1160.805786 1159.84021 1158.770508 1158.586792 1153.037231 1149.431763 1147.754883 1140.680054 1135.237793 1135.929565 1133.603271 1135.431641 1136.503662 1135.143677 1133.653564 1133.318604 1132.046387 1124.901855 1126.810547 1132.23291 1132.993408 1128.707397 1123.274048 1119.042725 1115.947144 1120.630737 1123.749512 1127.19043 1127.621582 1126.580688 1124.250488 1121.213501 1119.344604 1117.086914 1114.630371 1110.380859 1110.103149 1110.212769 1109.646484 1108.931274 1107.603271 1107.331543 1107.057373 1107.430054 1108.740845 1109.652588 1109.535034 1108.518066 1107.954224 1107.591797 1107.396362 1106.794434 1105.436646 1104.036865 1102.776123 1101.616211 1100.936035 1100.397217 1100.304077 1100.036377 1099.6073 1099.134033 1098.360718 1097.91626 1096.015015 1096.253662 1097.865601 1098.732422 1098.943115 1097.624268 1091.217896 1085.203857 1089.079712 1093.773682 1097.21875 1100.507446 1105.548828 1104.38208 1103.791138 1101.629272 1094.281982 1092.363647 1091.020996 1088.91272 1087.122437 1084.238647 1081.349487 1079.604736 1079.259644 1079.209717 1078.407349 1075.894653 1073.116821 1073.227051 1072.65918 1073.053833 1073.933105 1074.896851 1075.490356 1075.392334 1074.409424 1072.259888 1072.596069 1069.194336 1072.074951 1072.939819 1073.213257 1073.906494 1074.100342 1074.001587 1073.181274 1070.427368 1068.688232 -1125.748657 1121.414185 1119.855225 1118.456665 1115.30542 1111.599731 1108.636841 1110.314087 1111.342285 1112.196777 1113.468506 1115.182495 1117.15332 1119.252319 1121.001953 1122.266235 1123.349243 1124.059448 1124.645142 1125.207642 1125.691528 1126.005737 1126.115845 1126.032959 1125.887939 1125.447632 1124.866333 1124.231323 1123.423462 1122.540527 1122.117065 1122.092651 1122.768921 1123.667236 1124.312378 1125.176636 1126.158081 1127.210693 1128.224976 1129.210327 1130.064697 1130.857178 1131.540894 1132.074829 1132.506104 1132.855957 1133.324097 1134.359375 1136.113647 1137.811646 1140.984375 1145.267944 1147.279297 1149.116699 1151.776489 1157.355835 1155.649658 1152.213623 1146.869629 1149.305664 1153.557251 1157.69043 1158.730103 1159.94397 1161.051392 1162.222046 1163.623169 1165.219604 1166.825195 1168.482422 1169.79126 1171.191528 1176.854736 1181.348022 1187.381958 1189.9198 1189.633911 1187.891968 1187.911011 1188.551514 1190.022583 1188.943359 1187.102417 1185.887329 1184.55188 1179.650513 1178.362061 1181.088013 1183.960449 1186.727539 1187.374512 1187.219971 1186.299072 1184.948242 1183.68811 1182.987671 1181.842896 1180.237061 1178.96875 1177.906982 1177.014526 1176.211548 1175.342163 1174.507812 1173.690796 1173.111572 1172.355347 1171.310669 1171.232544 1170.62915 1169.416138 1171.017334 1175.879272 1178.858521 1182.186646 1184.956787 1184.129395 1187.092896 1189.754028 1192.795166 1195.539551 1192.666504 1190.711182 1189.376953 1188.67627 1188.564209 1188.813599 1189.219727 1189.987671 1190.907959 1191.911499 1193.060669 1194.356323 1195.161255 1198.121094 1200.586548 1201.410645 1201.490845 1198.03125 1194.955322 1194.265137 1192.890015 1191.327881 1190.025146 1188.943237 1188.358398 1187.973999 1188.151367 1190.007202 1194.701416 1195.189819 1194.168091 1191.764771 1189.105347 1187.226074 1185.86853 1184.927856 1184.177368 1183.128296 1182.190186 1180.932251 1179.870605 1179.059692 1180.851929 1182.674805 1183.338257 1183.516357 1183.812378 1184.108521 1184.305298 1184.436523 1184.503784 1184.426392 1184.394043 1184.41687 1184.238159 1184.360229 1184.285278 1184.379272 1184.486084 1184.5 1184.577393 1184.373901 1184.222168 1183.988037 1183.740723 1183.506714 1183.293823 1182.852783 1183.240723 1183.452271 1183.347778 1183.317627 1183.280273 1183.240356 1183.021851 1181.265747 1179.788696 1180.357056 1181.105713 1181.542725 1181.73291 1181.834106 1181.925171 1182.269409 1182.707275 1183.220459 1183.636108 1183.824585 1183.777954 1183.255493 1182.611206 1182.450806 1182.23877 1182.008301 1181.718994 1181.308838 1181.010742 1180.667358 1180.300537 1179.765869 1179.120605 1178.464478 1177.962769 1177.577881 1177.461304 1177.294922 1176.994263 1176.60498 1176.193115 1175.733643 1175.376221 1175.107178 1174.782715 1174.42627 1174.080444 1173.755127 1173.738159 1173.668457 1173.539307 1173.331543 1173.140869 1172.757568 1172.480835 1171.985474 1171.610352 1171.11145 1170.563965 1169.747681 1168.869507 1167.904907 1166.977173 1166.147339 1165.09375 1164.398926 1163.666382 1163.102783 1162.6698 1162.318481 1162.03833 1161.724121 1161.959839 1167.049805 1170.455811 1172.110474 1172.968018 1173.302734 1173.226929 1171.615234 1170.867798 1173.181763 1175.980347 1178.046509 1179.679932 1181.352051 1183.594849 1188.661499 1192.813843 1196.004272 1206.547119 1220.140747 1222.176758 1221.812012 1221.8927 1223.21936 1224.621216 1227.140991 1229.163208 1230.470337 1236.118652 1240.409668 1243.947632 1248.717896 1251.388184 1253.955811 1260.697754 1269.706299 1275.003906 1282.705444 1295.657959 1308.140503 1318.692993 1317.55127 1311.51062 1306.361206 1301.926758 1297.397217 1294.187622 1290.758789 1285.787598 1282.921387 1279.705933 1275.365479 1270.176392 1261.084595 1253.817871 1251.992065 1245.83252 1235.914429 1229.998047 1225.197998 1221.234741 1219.645142 1214.966919 1210.622925 1209.797241 1206.176758 1199.787964 1193.866089 1186.135986 1180.243652 1175.043579 1171.458862 1168.69751 1165.973633 1163.312256 1161.278198 1159.136719 1157.203857 1154.597412 1151.705811 1149.193115 1147.76123 1147.106445 1146.782104 1144.484131 1142.398438 1140.233643 1137.5354 1134.454102 1134.062744 1133.674805 1133.248291 1132.858032 1132.342285 1131.865479 1131.325928 1130.767334 1129.985474 1128.971191 1127.792969 1126.648682 1125.683105 1124.730835 1124.438354 1124.123413 1123.765991 1123.459839 1122.900879 1122.450317 1120.713379 1120.185425 1122.202393 1123.581299 1124.605469 1125.974487 1127.365967 1128.712524 1129.887573 1130.837402 1131.337036 1131.961426 1132.973389 1134.514648 1136.529907 1137.86853 1139.985718 1142.884277 1146.484863 1150.956909 1154.966064 1159.283447 1160.463135 1156.905396 1153.906738 1155.106445 1159.252319 1170.764282 1178.057251 1183.750488 1189.002808 1195.574707 1196.716309 1198.892822 1200.737061 1203.170166 1207.205811 1209.182983 1209.853027 1209.608643 1209.914551 1209.881104 1209.335205 1201.532227 1191.803955 1184.91626 1183.136353 1191.574097 1193.89209 1191.861694 1186.099365 1183.522583 1185.391602 1189.934448 1194.039551 1198.093506 1201.745483 1204.661011 1206.731323 1206.697388 1206.711304 1206.864258 1207.329712 1207.648682 1205.325073 1200.863403 1196.155396 1193.450562 1192.805298 1191.953247 1193.592651 1196.175781 1197.064697 1194.072144 1186.846069 1181.072266 1176.050049 1170.007202 1163.574219 1158.279419 1156.794189 1154.376709 1150.992065 1147.853516 1145.789551 1147.503296 1148.698608 1146.020508 1143.123535 1141.867798 1141.072998 1138.535034 1137.447388 1137.869141 1138.691528 1141.348755 1144.872437 1147.606445 1151.538818 1157.298096 1161.142212 1166.338013 1170.617188 1173.118896 1172.679565 1170.162842 1171.193604 1184.923828 1198.318237 1204.663574 1210.699707 1216.448486 1221.749756 1221.992798 1220.173462 1216.759888 1212.213745 1208.774414 1201.170532 1194.421265 1189.903564 1185.905762 1181.998657 1177.677856 1174.856812 1171.150513 1166.447876 1161.047729 1159.071777 1158.541016 1157.657593 1155.236938 1151.168945 1148.115356 1146.982788 1138.200928 1132.611206 1133.005859 1132.677124 1132.141357 1131.895386 1131.896362 1132.078247 1132.437744 1133.143677 1134.907959 1135.394287 1136.033813 1135.669067 1130.582397 1123.617065 1118.205811 1117.653687 1123.648926 1129.237793 1132.582275 1131.006836 1128.703369 1126.06897 1124.056641 1121.97583 1119.228516 1117.25708 1116.014648 1114.993652 1114.406982 1113.246216 1110.839111 1109.775391 1109.737183 1109.295288 1109.370361 1111.121338 1112.297485 1111.794189 1110.566528 1109.648926 1109.223022 1109.114746 1108.897461 1107.219849 1105.703369 1104.408691 1103.462158 1102.693115 1102.0 1101.104858 1100.206665 1099.255737 1098.170166 1097.561401 1097.005615 1096.747925 1096.77771 1097.470581 1098.562622 1099.011108 1098.29248 1092.815796 1089.809814 1092.873779 1098.824585 1105.054932 1111.53064 1115.75647 1126.480103 1122.028809 1109.631836 1100.321289 1098.814941 1097.259644 1092.900269 1089.338013 1086.262085 1083.602417 1081.808838 1081.74939 1082.971313 1083.846924 1079.383423 1074.990845 1074.201782 1074.762329 1075.123901 1075.619629 1076.424561 1076.850952 1076.600464 1075.714966 1075.135986 1075.312988 1074.022583 1068.052734 1069.142578 1067.71521 1071.39624 1073.521851 1073.879639 1073.074707 1068.856201 1066.938843 -1126.993896 1121.998291 1122.158813 1120.745728 1117.50769 1113.530396 1110.627686 1109.152344 1110.414673 1111.15979 1112.732178 1114.735107 1116.907959 1118.954956 1120.848999 1122.077026 1123.059204 1123.923218 1124.584839 1125.251709 1125.815308 1126.330933 1126.608398 1126.629883 1126.55896 1126.259277 1125.766968 1125.188477 1124.443604 1123.637939 1122.307739 1122.081909 1122.363892 1123.097046 1123.925049 1124.736084 1125.843872 1126.955322 1127.918701 1128.9198 1129.801025 1130.713745 1131.522949 1132.226929 1132.781616 1133.282349 1133.585571 1133.783813 1134.228882 1136.33728 1139.671143 1144.718994 1146.952515 1147.998047 1149.676025 1150.543457 1150.133789 1147.506348 1145.944214 1149.001587 1153.663086 1158.434082 1159.72937 1160.489258 1161.472046 1162.561279 1163.849365 1165.280151 1166.745728 1167.910278 1169.105225 1170.816406 1175.134521 1179.245117 1183.116699 1185.544922 1185.586426 1183.491089 1181.903198 1182.039062 1185.852295 1186.600586 1185.654785 1184.91687 1183.580078 1179.162598 1176.109253 1178.577026 1181.391479 1183.128174 1183.851318 1183.398438 1182.55896 1181.883179 1181.202759 1180.290039 1179.357056 1177.98999 1176.5896 1175.357544 1174.381958 1174.159668 1173.730103 1172.92981 1171.451782 1171.232422 1170.57605 1169.365112 1168.720825 1169.225342 1172.824829 1178.964966 1183.529175 1184.952393 1184.080444 1188.150513 1191.756958 1194.847168 1195.457642 1195.305664 1199.787354 1195.949463 1195.360352 1193.945801 1192.901855 1191.18396 1190.679688 1190.651855 1190.942871 1191.383545 1191.895264 1192.495239 1192.942871 1193.118286 1193.581665 1194.19519 1195.009644 1194.989258 1196.277222 1195.018188 1193.709839 1192.314209 1190.894775 1189.489746 1188.161621 1186.955078 1185.510864 1183.723267 1184.896851 1190.098022 1190.588013 1190.020752 1188.131348 1185.658203 1183.110962 1182.782104 1182.551392 1182.20459 1181.624756 1180.809204 1180.026489 1179.231812 1181.616455 1183.442871 1183.575928 1183.79126 1183.953247 1184.237061 1184.430054 1184.644043 1184.810669 1184.830933 1184.818115 1184.9552 1184.893921 1184.815063 1184.84314 1184.961548 1184.866211 1184.770752 1184.862915 1184.869751 1184.749878 1184.478394 1184.278076 1184.109497 1183.871948 1183.571411 1183.388916 1183.626831 1183.848633 1183.71582 1183.695923 1183.800781 1183.786255 1183.667847 1183.47522 1180.285034 1180.658691 1182.47229 1182.681885 1182.2771 1182.069458 1182.218384 1182.520996 1182.931152 1183.29187 1183.966675 1184.120972 1184.009399 1183.401123 1183.103027 1182.934692 1182.795044 1182.519043 1182.062622 1181.715088 1181.272217 1180.833008 1180.560181 1180.103516 1179.530884 1178.873291 1178.416626 1178.043823 1177.862305 1177.607666 1177.316406 1176.908081 1176.515015 1176.181763 1175.973145 1175.636963 1175.282593 1174.884033 1174.557495 1174.150879 1174.078247 1173.979736 1173.795776 1173.598389 1173.246704 1172.7948 1172.378906 1171.910522 1171.344849 1170.888306 1170.413818 1169.75 1168.944702 1168.204468 1167.249268 1166.409546 1165.537964 1164.821289 1164.145264 1163.542236 1163.245483 1162.848633 1162.488281 1162.208984 1161.915039 1164.875366 1168.869751 1171.190552 1172.434082 1173.577637 1174.449585 1174.765625 1174.670776 1175.695312 1177.506348 1178.795898 1180.041992 1181.716431 1184.002319 1190.906128 1196.981812 1199.415771 1207.418579 1220.451294 1222.346802 1222.695679 1221.509155 1221.29541 1221.136963 1220.838501 1225.193115 1228.665649 1232.212891 1238.557495 1243.672241 1246.325684 1247.560181 1254.652466 1261.58374 1269.442505 1273.772705 1278.788818 1291.771973 1300.471313 1311.83667 1313.608887 1307.215576 1303.70459 1298.834961 1293.275391 1290.060669 1284.592407 1280.707031 1279.254272 1277.505859 1274.546753 1271.851196 1269.748535 1256.503784 1243.012451 1236.108154 1228.142944 1220.797241 1218.070068 1212.988281 1212.116699 1208.526123 1205.766602 1204.630371 1203.234985 1200.512207 1197.566406 1190.785645 1181.443481 1174.942505 1170.495361 1168.8125 1166.546997 1164.164307 1161.531616 1159.023315 1156.969849 1154.407349 1150.802856 1147.39502 1146.953247 1146.386963 1145.994507 1144.074219 1141.73999 1139.180786 1135.793945 1134.380615 1133.905273 1133.749756 1133.474121 1132.977417 1132.581299 1132.250244 1131.86792 1131.440552 1130.667725 1129.675781 1128.447266 1127.236816 1126.109253 1125.185303 1124.688232 1124.182251 1123.647339 1123.148682 1122.753784 1122.105225 1121.844116 1122.307861 1121.565063 1123.53125 1125.001709 1126.752686 1128.52478 1130.087524 1131.377197 1132.353271 1132.704346 1132.803589 1133.199951 1134.547485 1136.908203 1138.901367 1141.478027 1144.159058 1147.614624 1153.623047 1159.682617 1163.240356 1167.190308 1169.186401 1167.493408 1158.830566 1156.172607 1159.550903 1168.686157 1181.023315 1186.589478 1193.928467 1198.126953 1200.153076 1207.396484 1209.697876 1209.255127 1209.695312 1207.335571 1205.498169 1205.89563 1205.028198 1203.161865 1197.465942 1192.087402 1189.549072 1190.6073 1191.951172 1192.457764 1191.76001 1189.725708 1188.984497 1193.921387 1198.903198 1204.001709 1209.126099 1213.328491 1216.381104 1217.483032 1217.594849 1217.674438 1217.790771 1218.059692 1218.144531 1217.250366 1213.633911 1208.331055 1202.490723 1195.436401 1193.889893 1193.608154 1195.025635 1198.722656 1199.685181 1197.51062 1191.709717 1188.129761 1184.962769 1177.584229 1171.300537 1162.61377 1158.306396 1156.019653 1153.14209 1150.072632 1148.119263 1150.07959 1148.059692 1144.969116 1145.671631 1147.158203 1144.94397 1142.118286 1140.908203 1139.841309 1141.456787 1144.070923 1146.687012 1149.966553 1155.628052 1159.265503 1162.785645 1165.210815 1164.731445 1164.483643 1171.852905 1179.900513 1191.647705 1200.365723 1208.182251 1213.167969 1218.88623 1222.428833 1222.039307 1220.630005 1216.477295 1211.163574 1206.136475 1201.153931 1194.413452 1183.794434 1183.421387 1178.997925 1171.14209 1169.640869 1167.596436 1160.779663 1157.992676 1157.967529 1156.234863 1147.213013 1146.137573 1146.341187 1146.394775 1145.507935 1141.477051 1138.8573 1140.234009 1140.978882 1139.425537 1137.316162 1136.439209 1137.741333 1136.18457 1135.335938 1134.911499 1135.5979 1135.045166 1134.084106 1129.856445 1123.781128 1118.431641 1118.607178 1124.57605 1132.476929 1135.519165 1133.249146 1130.849731 1127.903809 1124.597656 1121.756958 1119.835449 1119.716431 1121.50061 1121.500732 1120.47522 1117.561401 1115.054565 1112.868408 1112.478516 1110.288574 1111.370605 1114.070557 1114.829712 1114.150635 1112.77771 1111.944214 1111.442383 1110.975952 1110.372559 1108.85144 1107.090088 1105.968262 1105.160889 1104.392456 1103.379761 1101.845947 1099.360474 1097.944702 1097.746216 1097.72583 1097.623047 1098.174316 1097.783813 1097.630371 1098.601562 1099.003174 1098.131104 1095.486084 1093.982544 1096.248657 1101.922119 1110.171387 1118.281128 1127.77771 1137.245117 1131.2229 1122.102661 1109.835938 1105.410645 1100.520386 1095.74231 1091.226929 1087.431763 1084.818726 1083.764648 1083.325195 1085.089233 1086.380737 1083.431641 1079.675781 1077.456421 1076.939941 1077.040649 1077.457397 1077.938354 1078.226685 1078.206055 1077.911255 1077.478149 1076.82605 1074.824463 1071.152222 1068.251953 1069.338623 1066.859131 1068.631226 1068.804199 1066.922607 1066.022461 1065.675049 -1130.651367 1128.706055 1126.926758 1123.192871 1119.737305 1117.570923 1115.201172 1113.016724 1110.324097 1110.137085 1112.029297 1114.265625 1116.550781 1118.584595 1120.328735 1121.490112 1122.30249 1123.48645 1124.232788 1124.940674 1125.716919 1126.342407 1126.763916 1127.147583 1127.142578 1127.087524 1126.738403 1126.249268 1125.52771 1124.564941 1123.22229 1122.204102 1122.085205 1122.367065 1123.205566 1124.420288 1125.782104 1126.95874 1128.031128 1129.017212 1129.999146 1130.982422 1131.889648 1132.876343 1133.686157 1134.386841 1134.16394 1134.188843 1134.046997 1134.331299 1136.321045 1140.754639 1144.94873 1146.077881 1146.227539 1146.300903 1146.082764 1145.790527 1145.77356 1148.020874 1152.624512 1157.51416 1159.283813 1160.294922 1161.467163 1162.655151 1163.863281 1165.164062 1166.331787 1167.59021 1168.913208 1170.543335 1173.03833 1176.213867 1179.486572 1181.626709 1181.462402 1180.152832 1179.208984 1180.215698 1183.167236 1184.477783 1184.430542 1183.544189 1181.224365 1177.316162 1174.746704 1175.880249 1178.435547 1180.489868 1181.259033 1181.155029 1180.584961 1179.758179 1178.862427 1177.785278 1176.64563 1175.6073 1174.461426 1172.778687 1171.545654 1172.350586 1172.17981 1171.449707 1169.829102 1168.627197 1167.635986 1168.695923 1171.149048 1173.323486 1177.864014 1183.977905 1187.766357 1191.248413 1191.432495 1192.008789 1195.892334 1201.809204 1205.209961 1207.235474 1206.565918 1204.936523 1200.768433 1197.687988 1195.334961 1193.766846 1192.703003 1192.333252 1192.192627 1192.217529 1192.298218 1192.337036 1192.396484 1192.405762 1192.581055 1193.139404 1193.749023 1194.387939 1194.522705 1193.962524 1192.969238 1191.66272 1190.308716 1188.894165 1187.538208 1186.250488 1184.721924 1183.608521 1182.86499 1184.892212 1186.147827 1186.119141 1184.743774 1183.057007 1182.128174 1181.881958 1181.802368 1181.064575 1180.61438 1180.10144 1179.682129 1182.334229 1183.433105 1183.755615 1184.044067 1184.252686 1184.443237 1184.64209 1184.802734 1184.961792 1185.114136 1185.118042 1185.323242 1185.380371 1185.367798 1185.343018 1185.348755 1185.400635 1185.325562 1185.253296 1185.166504 1185.165771 1185.047363 1184.878052 1184.679443 1184.470703 1184.201904 1184.061768 1183.869629 1184.056885 1184.08313 1184.047852 1183.989014 1184.002441 1184.018799 1184.035645 1183.897583 1181.755493 1181.700073 1183.418579 1183.224731 1182.536987 1182.408203 1182.557129 1183.016724 1183.293335 1184.044556 1184.363037 1184.423584 1184.37439 1183.944946 1183.610596 1183.464966 1183.328613 1182.928955 1182.508667 1182.068237 1181.667847 1181.255127 1180.878418 1180.435303 1179.921753 1179.274536 1178.826172 1178.575317 1178.368286 1177.964478 1177.649658 1177.225098 1176.934082 1176.757446 1176.479248 1176.053833 1175.73584 1175.338135 1174.841064 1174.589722 1174.420898 1174.184692 1173.968994 1173.666504 1173.213623 1172.775635 1172.13855 1171.536865 1170.981445 1170.390625 1170.117065 1169.645508 1169.060669 1168.428711 1167.617188 1166.722778 1165.960449 1165.225708 1164.717896 1164.129272 1163.754517 1163.291992 1162.970581 1162.652832 1162.39917 1164.185425 1167.47644 1169.911255 1171.264038 1172.973755 1175.663574 1178.031738 1179.743164 1179.695801 1179.464478 1179.901123 1180.648193 1181.317383 1182.63623 1188.049072 1194.459595 1195.619263 1204.867432 1213.766357 1220.88562 1220.449341 1215.062378 1213.502563 1216.668579 1219.44043 1223.145752 1226.798706 1230.333252 1237.281616 1244.470947 1242.393921 1246.869263 1253.703369 1260.331909 1267.754639 1272.194824 1277.638184 1285.550049 1293.611572 1303.448975 1306.216675 1303.222534 1300.202515 1295.531738 1290.791138 1286.561401 1280.666992 1279.275024 1277.796753 1275.953857 1273.904785 1272.122925 1269.813354 1259.212769 1249.155151 1240.389771 1229.143188 1219.223267 1207.052002 1205.73938 1205.052124 1202.700562 1199.735596 1195.481445 1196.390381 1197.483521 1197.953613 1193.557861 1183.424561 1177.857178 1172.317383 1170.150269 1168.233887 1164.957764 1161.811035 1159.019897 1157.048828 1154.485596 1150.822388 1147.600342 1147.074951 1146.647827 1145.443481 1144.065308 1141.877563 1139.251953 1136.649902 1135.296265 1134.778687 1134.42334 1133.932251 1133.24939 1132.965942 1132.697021 1132.735107 1132.610596 1131.763916 1130.419312 1128.899414 1127.488159 1126.189819 1125.350464 1124.792358 1124.248291 1123.57373 1122.85498 1122.538696 1121.912354 1123.284424 1123.351807 1121.91333 1122.971802 1125.150391 1127.647827 1129.755127 1131.531128 1132.978394 1133.928833 1134.293213 1134.228516 1133.89978 1134.055542 1136.354736 1139.353271 1142.621216 1145.741699 1149.916748 1155.59082 1160.074585 1167.096924 1172.522827 1174.56604 1175.644287 1172.282593 1164.847168 1158.822266 1157.873413 1165.003296 1172.810669 1182.338135 1187.898071 1191.060303 1191.879883 1192.421631 1194.431641 1194.441162 1193.124878 1196.150879 1196.062134 1196.533447 1197.344727 1195.598755 1193.883057 1194.511108 1196.558716 1195.234375 1196.061523 1195.232178 1194.098999 1193.676392 1200.995972 1207.640259 1214.271118 1219.561035 1223.371704 1225.555054 1226.350708 1226.688965 1227.124023 1227.638428 1227.681641 1227.258545 1226.319702 1224.082886 1220.099365 1214.944946 1210.200073 1202.740723 1196.082642 1194.622314 1199.186035 1206.26001 1207.486938 1201.899048 1197.752197 1195.679443 1189.317383 1180.247437 1176.202271 1170.488281 1163.609863 1158.840088 1156.2948 1154.36145 1152.345581 1149.671753 1146.445312 1146.915894 1148.670288 1147.829834 1146.253906 1144.499756 1140.922729 1142.076538 1143.103027 1145.279053 1147.817871 1154.109985 1157.878418 1160.493408 1159.908081 1158.092896 1165.960205 1174.786621 1185.070557 1194.748169 1200.814453 1206.146729 1211.755249 1218.438721 1222.169556 1222.573486 1221.289917 1217.793823 1212.310425 1208.641235 1202.974731 1198.91272 1194.425537 1189.359375 1185.7229 1177.547974 1171.01123 1167.404419 1162.427856 1161.000244 1160.655518 1159.625122 1155.343384 1152.257324 1150.890015 1150.233398 1149.794678 1148.671997 1146.027344 1147.650635 1149.114868 1148.439087 1147.910522 1147.920166 1142.31604 1136.531006 1135.314331 1134.281494 1132.006348 1130.371216 1128.94873 1126.858154 1124.015503 1118.907959 1119.263916 1122.71814 1133.219727 1136.252075 1135.660034 1133.884155 1129.464478 1124.917114 1121.342529 1120.2771 1121.218628 1123.633789 1124.519531 1123.899658 1121.872925 1119.168579 1117.911743 1116.346313 1115.471802 1116.043579 1117.529541 1118.148682 1117.001953 1115.28479 1113.936035 1112.608765 1111.403687 1110.374146 1108.909912 1108.045898 1107.461548 1106.889648 1106.055786 1104.74939 1102.945801 1099.507812 1098.582153 1098.691895 1098.237061 1098.137939 1099.20166 1098.316284 1097.782837 1098.89502 1099.436768 1098.765259 1096.745483 1095.854126 1097.246826 1102.95874 1111.533813 1120.176025 1129.309082 1136.655029 1136.574707 1128.794312 1119.53479 1111.040771 1103.498535 1097.392822 1093.533081 1089.786743 1087.52832 1086.369873 1084.749634 1085.55603 1087.038452 1085.270264 1082.703979 1080.365479 1079.299316 1078.917969 1079.024536 1079.395874 1079.737671 1080.054321 1080.265259 1080.290161 1079.796509 1077.875244 1075.701172 1074.838989 1074.771973 1072.980347 1068.008057 1066.760498 1066.71875 1066.316772 1066.036865 -1134.073853 1136.03418 1132.899536 1123.183716 1121.51355 1121.785156 1120.768555 1119.310059 1115.081421 1110.948486 1111.616821 1113.975586 1116.196777 1118.149048 1119.765747 1120.951538 1121.809204 1122.489136 1123.438721 1124.196045 1125.234985 1126.120361 1126.940674 1127.54187 1127.796387 1127.847778 1127.679565 1127.360596 1126.776123 1125.767944 1124.624146 1123.005981 1122.830322 1122.139893 1122.299927 1124.539062 1126.188477 1127.330322 1128.424561 1129.421509 1130.377686 1131.428711 1132.388794 1133.3302 1134.361084 1134.750977 1134.88269 1135.756714 1136.574463 1135.868042 1134.268555 1137.596191 1142.942261 1144.611328 1145.087891 1145.220459 1145.495117 1145.597046 1145.493286 1146.335815 1150.514038 1155.362061 1157.845947 1159.69104 1161.101807 1162.501709 1163.616577 1164.736206 1165.745361 1166.935791 1168.393311 1170.012695 1171.35498 1173.529541 1175.264771 1177.2146 1177.937256 1177.091919 1174.186279 1173.172729 1178.139282 1181.424805 1182.289062 1180.762573 1178.306763 1175.107544 1173.394531 1174.108765 1175.830078 1177.60791 1178.577637 1178.751099 1178.486572 1177.7677 1176.627319 1175.496704 1174.283569 1173.179321 1172.349487 1171.100952 1169.6875 1170.526489 1170.436157 1169.083496 1167.125854 1167.151855 1169.110962 1171.810181 1174.649902 1177.935913 1181.161011 1185.214722 1191.620239 1196.540771 1196.907104 1194.320068 1201.362305 1209.995972 1213.929688 1214.880493 1213.048828 1210.627808 1206.340332 1201.451782 1197.647583 1195.127563 1194.526489 1194.745117 1194.127441 1193.4198 1192.838745 1192.547485 1192.396606 1192.396973 1192.390747 1192.716919 1193.077515 1193.40979 1193.551636 1193.123535 1192.341064 1191.1875 1189.832764 1188.515991 1187.233643 1186.031006 1184.677368 1183.713379 1183.033813 1182.75769 1182.96814 1182.945435 1182.471802 1181.863647 1181.519531 1181.194092 1180.764038 1180.348022 1180.053345 1180.489868 1183.105469 1183.571411 1183.884644 1184.191406 1184.418823 1184.646362 1184.84436 1185.041382 1185.194946 1185.261963 1185.416992 1185.671997 1185.726562 1185.804565 1185.918823 1185.701294 1185.800171 1185.826538 1185.823486 1185.758057 1185.625122 1185.465332 1185.373535 1185.218872 1185.043091 1184.802124 1184.681763 1184.491821 1184.277954 1184.27124 1184.256104 1184.169434 1184.100952 1184.031982 1184.129517 1183.237549 1182.046143 1181.569092 1183.329224 1183.609009 1183.216797 1182.954468 1182.869019 1182.807617 1183.276733 1183.866333 1184.45166 1184.737793 1184.865601 1184.806152 1184.501831 1184.135254 1183.974121 1183.666626 1183.302979 1182.809448 1182.362305 1181.930786 1181.579224 1181.216797 1180.794434 1180.224365 1179.714722 1179.279175 1179.022827 1178.644043 1178.352539 1177.928589 1177.549805 1177.339966 1177.093506 1176.875122 1176.520264 1176.090698 1175.62854 1175.182617 1174.905273 1174.63855 1174.36438 1174.117188 1173.62207 1173.10498 1172.600708 1171.882935 1171.252686 1170.640869 1170.300171 1170.006836 1169.640137 1169.178223 1168.671631 1168.064087 1167.217407 1166.47998 1165.771484 1165.251099 1164.700317 1164.197632 1163.782471 1163.393433 1163.069702 1162.818237 1164.302612 1166.348755 1168.773193 1170.30127 1172.388672 1176.574829 1180.664551 1183.424438 1183.498535 1182.706787 1181.523804 1181.310059 1181.59375 1182.181519 1183.554932 1189.796753 1194.809082 1201.495483 1205.891357 1214.877563 1208.575684 1205.994019 1209.568848 1218.014282 1218.862915 1222.102661 1224.969971 1229.916382 1234.856934 1233.457275 1238.079956 1242.783203 1249.277222 1256.415527 1263.348755 1269.6521 1276.644287 1283.582275 1289.193848 1294.255737 1298.171631 1301.539917 1297.281128 1292.863525 1290.040527 1286.67395 1283.344482 1280.560547 1278.686157 1276.122314 1272.744141 1270.538208 1268.647095 1260.299438 1250.154419 1241.095825 1230.835449 1218.796143 1212.022827 1205.707397 1200.151978 1195.891479 1194.781982 1189.907471 1182.222534 1185.769897 1191.009521 1191.331177 1186.696289 1182.147705 1176.549927 1172.821777 1169.69397 1165.776611 1162.279663 1159.214478 1157.430054 1155.13916 1152.225952 1150.07019 1148.711914 1146.652832 1145.846313 1144.611694 1142.230957 1139.757935 1137.824585 1136.699829 1136.104248 1135.351562 1134.335327 1133.586548 1133.377686 1133.651245 1134.190552 1134.184448 1132.901611 1130.990112 1129.170654 1127.453857 1126.163086 1125.225098 1124.832031 1124.335205 1123.667603 1122.947876 1122.450562 1122.908203 1123.862671 1123.526367 1122.496826 1122.036743 1125.395386 1128.820923 1131.394287 1132.985962 1134.494507 1136.072266 1137.035767 1137.476196 1136.374634 1135.007568 1134.69397 1140.039062 1143.74585 1146.741333 1152.98938 1159.133179 1164.502808 1169.817627 1172.902954 1178.108154 1180.207642 1180.366577 1175.465088 1169.34375 1162.424683 1160.658203 1166.453247 1171.339478 1175.949829 1178.063599 1177.820068 1181.667603 1181.746948 1181.777588 1184.797974 1192.438354 1193.872192 1195.212402 1196.927246 1199.587891 1197.797852 1198.663452 1200.853394 1201.670166 1202.698975 1203.566895 1205.786377 1203.914673 1208.998291 1217.371216 1224.207642 1229.216553 1231.750854 1234.013672 1235.815308 1237.010864 1238.280884 1238.62854 1238.590698 1236.931152 1235.30957 1232.571533 1229.511597 1225.299805 1220.753052 1214.502197 1208.128784 1203.024414 1202.442749 1204.949951 1208.194702 1214.058838 1209.783203 1203.662476 1198.825928 1193.054321 1186.114868 1183.11438 1176.734375 1169.420898 1162.157837 1158.078857 1155.893188 1152.484741 1148.843384 1147.567505 1149.772583 1149.802979 1148.923828 1147.766602 1146.322388 1142.205933 1142.812988 1143.676147 1146.10437 1151.264282 1154.941528 1157.05896 1157.290771 1160.114502 1166.932129 1173.30835 1180.669556 1190.633301 1197.251099 1203.977905 1209.474121 1209.544434 1216.276855 1222.318115 1221.779907 1218.692749 1213.550049 1209.245361 1204.447021 1199.702393 1195.507568 1190.439087 1185.522705 1179.359497 1171.90979 1169.008301 1166.524292 1164.282227 1162.539429 1161.358887 1160.939697 1159.567261 1157.955566 1156.073975 1154.2229 1152.226074 1150.514282 1149.565918 1149.352539 1148.554932 1145.710449 1140.364136 1134.786133 1132.78418 1130.620605 1127.510376 1124.416504 1124.037354 1123.623779 1122.412109 1120.830688 1118.141357 1122.203491 1130.019043 1132.894165 1137.465698 1137.614502 1135.078735 1131.024292 1125.376099 1121.546509 1121.098755 1122.128662 1125.156006 1126.991089 1126.273804 1122.932861 1122.382202 1122.095215 1120.774536 1120.195923 1120.562866 1121.904175 1121.628784 1120.069702 1117.792969 1115.282959 1113.222046 1111.434937 1109.860352 1109.168091 1109.246704 1109.269043 1108.636353 1107.615479 1106.203613 1104.619629 1103.143311 1102.17395 1101.265137 1099.932129 1099.61792 1099.903809 1098.72937 1097.751465 1099.512451 1100.356689 1099.49231 1097.703613 1096.213013 1097.082275 1102.556641 1108.88147 1117.452393 1125.941772 1134.047119 1137.008545 1131.835083 1122.015747 1112.823364 1104.030518 1097.641724 1095.024292 1093.086548 1090.869873 1089.052246 1086.822021 1087.299561 1087.776978 1085.935181 1084.032471 1082.031372 1080.864624 1080.484863 1080.49353 1080.903687 1081.348022 1081.840576 1082.349365 1083.641235 1083.891479 1081.859863 1079.557495 1078.075684 1077.045044 1075.459351 1072.673462 1069.697998 1069.056152 1068.997192 1068.814331 -1137.38501 1136.931641 1133.587891 1130.637329 1127.766724 1125.257446 1125.107422 1123.966675 1120.088501 1112.937744 1111.525635 1113.686768 1115.89502 1117.823364 1119.381592 1120.466675 1121.23938 1121.754272 1122.161255 1122.717407 1124.400024 1125.855713 1126.959595 1127.84314 1128.383911 1128.657104 1128.704712 1128.446899 1127.985474 1127.13501 1126.101685 1125.012695 1124.496094 1123.830444 1123.585083 1125.29248 1126.839844 1128.017212 1129.078125 1130.057739 1130.953003 1131.797974 1132.774292 1133.641846 1134.310425 1135.223145 1136.554688 1138.256348 1140.769287 1142.750488 1143.135986 1144.220581 1144.827026 1144.96936 1144.452026 1145.055664 1146.352417 1147.739868 1149.922852 1152.123779 1153.533813 1156.022949 1157.789795 1159.467163 1160.866089 1162.256226 1163.268921 1164.146973 1164.9646 1165.885498 1167.196533 1168.648682 1169.877686 1170.75708 1171.801025 1173.609131 1175.167358 1174.588501 1172.008301 1170.557495 1172.886963 1174.64917 1175.256592 1176.131836 1175.311768 1173.38147 1172.109497 1172.44873 1174.006104 1175.545776 1176.417725 1176.649414 1176.491211 1175.927612 1174.87854 1173.601685 1172.291626 1171.198975 1170.134033 1169.017456 1167.981323 1167.445312 1167.021851 1166.029175 1167.031982 1168.895508 1171.683838 1174.029907 1178.185059 1182.060791 1185.088745 1188.2229 1192.910278 1197.695801 1200.94873 1202.047729 1210.039551 1219.363037 1222.039429 1221.197998 1218.095093 1214.266724 1209.559692 1205.539917 1201.0448 1196.065918 1196.303711 1196.865967 1196.127441 1195.170166 1194.139771 1193.140747 1192.815918 1192.58374 1192.42749 1192.565186 1192.779419 1192.957275 1192.913208 1192.537476 1191.71521 1190.793213 1189.600952 1188.414795 1187.273315 1186.07312 1185.019043 1183.704956 1183.245728 1182.744751 1182.178101 1182.023804 1181.617188 1181.387085 1181.112305 1180.797974 1180.652466 1180.993896 1181.761108 1183.168091 1183.665161 1184.038208 1184.28833 1184.648682 1184.862915 1185.034302 1185.235718 1185.438721 1185.542114 1185.580933 1185.796021 1186.047485 1186.167603 1186.183838 1186.226562 1186.167114 1186.173584 1186.206177 1186.244507 1186.131104 1186.020752 1185.931519 1185.800293 1185.66748 1185.399902 1185.258545 1185.055542 1184.895508 1184.587891 1184.50354 1184.237061 1184.162598 1183.76062 1183.243408 1182.622192 1183.551514 1183.521851 1183.559326 1183.627686 1183.721191 1183.289062 1183.367676 1183.402832 1183.27002 1183.374756 1184.094971 1184.736084 1185.025513 1185.192383 1185.168823 1184.921021 1184.592163 1184.401123 1184.048828 1183.540161 1183.056763 1182.595947 1182.169189 1181.745728 1181.468628 1181.164673 1180.694702 1180.158325 1179.72644 1179.347412 1179.063354 1178.604736 1178.273926 1178.049683 1177.731689 1177.474487 1177.183716 1176.797729 1176.397827 1176.005371 1175.626587 1175.307129 1174.983398 1174.665771 1174.357544 1173.864624 1173.278687 1172.532104 1171.729614 1171.086304 1170.642334 1170.367432 1170.288574 1169.863892 1169.458008 1168.931274 1168.471558 1167.861694 1167.195557 1166.461548 1165.863037 1165.257812 1164.736816 1164.365356 1163.927612 1163.619263 1163.434326 1163.57373 1165.96582 1169.333008 1172.144165 1173.665894 1177.272827 1181.234497 1183.358276 1183.95874 1184.099731 1183.572144 1182.691895 1181.910278 1182.140137 1183.457275 1188.122925 1194.645142 1199.469849 1204.346924 1208.540649 1203.143555 1204.427246 1216.236816 1220.420532 1219.643799 1218.994995 1221.631958 1225.798462 1230.12561 1230.218994 1235.577759 1240.822266 1246.678589 1252.357178 1257.595459 1267.400635 1275.050415 1280.678833 1285.185913 1288.828857 1292.43396 1295.440063 1293.673828 1291.204102 1288.824341 1286.34436 1284.427856 1282.721313 1280.224854 1276.7052 1271.444214 1267.152344 1264.563721 1255.510864 1249.214233 1242.300781 1233.206665 1228.721924 1222.814453 1210.124146 1204.122925 1198.217041 1196.626831 1194.888306 1189.191406 1183.991089 1182.530151 1185.389404 1186.008545 1184.150146 1178.429321 1173.176147 1169.803345 1166.151978 1162.764038 1160.528931 1158.769775 1156.11084 1153.584351 1151.386108 1149.59021 1148.023193 1146.945801 1145.011719 1142.581177 1140.161621 1138.111206 1136.761475 1135.985107 1134.853638 1134.244385 1133.813721 1134.150757 1134.702515 1135.009277 1134.67041 1133.410156 1131.326172 1129.130615 1127.228027 1125.814819 1125.047119 1124.680908 1124.243164 1123.595337 1123.348389 1123.723145 1124.04126 1124.19397 1123.657715 1122.934814 1121.961548 1126.018921 1130.154541 1133.077026 1134.729126 1136.171021 1138.01001 1140.538452 1143.596069 1142.975708 1140.923096 1139.743286 1142.435425 1146.323364 1149.530762 1155.086914 1161.098022 1168.043457 1172.998413 1177.555664 1181.901978 1184.14563 1186.495239 1184.38208 1177.577393 1171.221436 1167.126343 1166.709106 1167.934937 1169.66626 1169.95166 1172.729736 1180.774536 1184.62915 1188.802124 1194.481689 1197.570435 1199.266357 1201.658447 1203.7854 1205.886963 1206.228638 1204.739868 1206.503662 1209.190308 1211.7771 1213.322876 1216.458008 1217.971313 1219.182983 1228.375244 1235.470703 1241.307129 1246.790283 1250.822266 1251.922852 1251.815186 1251.905518 1251.999634 1251.731689 1250.294312 1247.298706 1243.891968 1239.629883 1234.717407 1229.367188 1222.937012 1217.00061 1209.057373 1206.644531 1205.873291 1206.773315 1217.044067 1218.89563 1207.346436 1198.86853 1193.533936 1191.002563 1186.769165 1184.071289 1176.251587 1172.479248 1165.986328 1158.689819 1155.71582 1153.660889 1152.972412 1152.822632 1152.138184 1151.125488 1149.702148 1148.111084 1146.095581 1145.112305 1144.804688 1145.230469 1147.828491 1151.472168 1154.329956 1156.926392 1160.95166 1165.474976 1171.259644 1178.830322 1188.125122 1196.876587 1200.546875 1203.29895 1203.408325 1205.090576 1214.746582 1221.278442 1218.383179 1212.797485 1207.895996 1203.711548 1198.998779 1194.928833 1189.759277 1185.410278 1180.360474 1175.020386 1171.43396 1168.720215 1165.759277 1163.523926 1161.935547 1161.22168 1161.258179 1160.889648 1159.835083 1157.748901 1154.152832 1151.483887 1149.855957 1147.573486 1143.000854 1137.187134 1132.540039 1130.815674 1127.512451 1123.704468 1122.754395 1122.189453 1121.314941 1120.44165 1119.855469 1120.056885 1124.911743 1130.12561 1137.416382 1138.213379 1140.578857 1139.303589 1136.807739 1131.90979 1124.484375 1121.692261 1123.52771 1126.455811 1129.40686 1130.314697 1128.643188 1125.305054 1124.892212 1122.456909 1123.313477 1122.140137 1123.460571 1124.067505 1123.593628 1122.352051 1119.234253 1115.517334 1113.037109 1110.94397 1109.855591 1109.764038 1110.555664 1110.872192 1109.960327 1108.802734 1107.091797 1106.378906 1106.768311 1106.953369 1105.191406 1103.520996 1102.110596 1100.985474 1099.254517 1097.767822 1100.223755 1102.07666 1101.908691 1098.981934 1096.36145 1096.528076 1100.634521 1106.068237 1111.697021 1120.640137 1131.033325 1136.986328 1131.699829 1120.104492 1109.688354 1101.40625 1096.797363 1096.850952 1096.019287 1093.795044 1092.379395 1090.646606 1089.467651 1088.295776 1086.350464 1084.362915 1082.928711 1082.075073 1081.81311 1082.011353 1082.502075 1083.086182 1083.637817 1083.673096 1085.033081 1086.312256 1084.956299 1082.853638 1081.038452 1079.441772 1077.140991 1073.567017 1072.526611 1072.426514 1072.029785 1072.480835 -1140.93042 1139.491455 1136.786743 1136.194092 1134.831055 1131.741333 1128.650391 1126.01416 1121.882935 1112.917603 1112.192749 1113.955566 1115.895142 1117.753052 1119.28125 1120.310547 1121.145264 1121.967651 1122.211548 1122.685303 1124.318604 1126.033447 1127.282593 1128.238525 1129.004761 1129.577393 1129.717529 1129.682983 1129.356201 1128.686157 1127.953491 1127.139404 1126.514526 1126.067627 1125.944946 1126.583008 1127.602661 1128.717285 1129.633301 1130.517822 1131.3573 1132.157227 1132.906128 1133.764038 1134.294434 1136.100342 1137.725952 1140.100586 1144.08313 1147.510864 1148.198486 1150.629395 1156.427124 1155.463135 1149.519897 1146.646362 1148.891724 1152.176636 1157.22522 1160.647095 1159.529297 1158.678101 1158.285156 1159.591919 1161.130005 1162.049194 1162.824097 1163.417603 1164.003174 1164.546387 1165.607422 1167.01001 1168.268433 1168.938721 1170.039551 1172.270386 1173.623047 1173.293213 1171.78418 1170.21167 1170.214478 1170.380249 1171.535522 1173.168945 1173.474976 1172.880859 1171.625366 1171.304077 1173.210571 1174.363647 1175.055298 1175.239502 1174.979858 1174.623291 1173.765869 1172.226562 1170.298462 1168.692871 1167.510742 1166.450928 1165.817139 1165.1521 1165.737427 1167.215332 1169.304932 1170.619019 1173.373047 1176.345947 1180.987183 1184.728394 1186.996216 1189.971558 1193.840332 1198.943848 1204.968262 1208.879639 1215.280029 1227.109863 1227.804199 1225.166016 1222.32373 1218.36499 1213.979858 1209.657227 1205.234131 1201.519897 1199.573975 1199.111694 1198.164307 1196.730835 1195.136719 1193.984863 1193.487305 1193.150024 1192.930786 1192.876343 1192.928467 1192.867188 1192.714233 1192.219727 1191.541138 1190.634644 1189.697021 1188.588135 1187.494629 1186.4198 1185.356812 1184.430054 1183.869507 1183.130005 1182.217163 1181.554688 1181.180908 1181.005981 1180.99353 1181.996826 1182.827637 1183.040771 1183.191528 1183.652222 1184.080322 1184.416138 1184.739014 1185.10022 1185.33728 1185.385376 1185.556885 1185.717407 1185.854614 1186.054199 1186.249023 1186.362915 1186.553833 1186.613281 1186.567749 1186.56665 1186.548218 1186.492676 1186.555542 1186.426025 1186.356812 1186.234863 1186.071777 1185.899048 1185.683228 1185.549805 1185.30188 1185.054932 1184.814697 1184.505615 1184.224609 1183.868286 1183.400513 1182.730713 1183.632446 1183.993286 1184.082886 1184.077148 1183.963745 1183.917725 1183.963989 1183.950684 1183.743286 1183.799194 1184.02002 1184.481934 1184.995972 1185.328003 1185.411621 1185.396118 1185.223633 1184.926147 1184.586182 1184.240967 1183.801025 1183.298218 1182.864014 1182.471069 1182.069946 1181.831909 1181.581055 1181.156128 1180.570801 1180.218262 1179.817261 1179.379761 1179.047241 1178.723877 1178.415649 1178.098877 1177.90918 1177.546753 1177.248779 1176.830933 1176.431519 1176.091187 1175.783813 1175.44519 1175.096802 1174.721802 1174.208374 1173.61792 1172.898804 1171.956177 1171.163208 1171.080811 1171.088623 1170.916382 1170.437012 1169.858643 1169.473389 1169.084106 1168.519043 1167.876221 1167.226196 1166.535522 1165.90979 1165.396851 1164.871338 1164.397217 1164.161377 1163.944336 1163.753174 1165.789795 1169.119385 1171.343628 1174.455322 1177.515991 1181.013428 1183.372192 1184.023438 1184.248169 1184.465454 1183.775269 1182.685303 1182.291626 1182.612305 1185.802856 1192.138062 1197.131714 1199.541626 1199.821655 1194.902466 1201.0354 1207.520996 1209.86084 1209.449707 1213.256836 1218.350952 1220.124756 1222.385864 1229.031494 1233.883057 1238.658203 1244.069214 1249.434937 1257.22168 1267.57959 1273.553345 1278.45752 1283.625366 1286.324463 1288.801758 1290.143677 1290.35144 1288.218384 1286.762085 1285.175415 1283.901367 1282.739746 1281.298706 1277.581421 1272.985718 1271.004272 1269.683838 1260.554565 1253.876221 1248.275513 1244.550903 1236.643433 1228.172852 1216.459717 1207.448364 1202.91748 1200.151733 1198.335327 1195.731323 1185.54541 1181.515503 1181.243408 1182.397583 1181.663818 1177.271973 1172.376953 1169.331909 1166.244873 1163.028687 1160.864624 1159.055664 1156.710205 1154.296875 1152.072632 1150.168091 1148.425781 1146.567261 1144.79248 1142.614624 1140.465454 1137.580688 1135.320557 1134.594116 1134.164185 1133.995972 1134.081787 1134.674194 1135.338745 1135.251709 1134.70166 1133.323853 1131.03186 1128.858398 1126.816406 1125.469849 1124.91626 1124.474976 1124.10498 1124.288208 1125.058228 1125.640259 1125.897217 1125.203735 1123.934692 1122.529297 1122.400513 1127.359863 1131.655273 1134.253906 1136.821533 1138.753296 1140.54126 1143.534668 1147.016113 1148.08667 1147.034912 1146.218018 1144.593994 1147.483276 1151.964478 1156.319336 1159.375732 1167.961914 1172.649536 1179.574829 1185.454346 1189.672974 1192.020508 1190.386841 1185.174683 1178.830078 1173.308472 1169.281738 1169.0625 1172.550171 1175.424927 1179.526855 1185.766113 1190.511841 1196.057129 1201.852173 1206.513306 1207.387207 1208.203613 1212.264282 1214.97644 1213.694336 1211.043823 1215.681274 1221.134888 1223.71167 1224.730347 1230.115234 1231.145996 1229.505737 1237.739014 1248.530762 1259.234863 1265.380737 1265.719604 1264.330566 1263.639771 1263.36377 1263.215088 1262.996582 1262.459106 1260.879883 1257.749756 1251.32959 1243.596802 1237.873657 1230.75293 1224.784912 1219.446167 1215.456055 1211.527344 1207.216553 1214.397705 1214.139771 1207.981934 1202.632202 1198.392822 1195.69165 1189.479126 1182.105591 1179.074097 1175.485352 1173.228027 1164.955322 1158.55188 1156.53418 1156.823608 1156.575684 1154.987671 1153.236694 1151.365723 1149.67334 1147.993286 1146.512207 1145.574951 1146.356079 1146.811035 1148.336792 1152.780884 1156.185547 1159.706177 1164.988037 1171.172607 1178.963135 1187.064575 1193.758179 1196.383789 1196.842163 1195.862915 1198.036987 1204.562866 1209.562988 1212.405273 1211.27417 1206.66394 1202.685059 1196.934448 1192.514282 1185.785767 1182.464478 1178.488525 1174.804199 1171.855225 1168.865479 1165.694458 1163.164062 1160.884399 1159.69104 1160.140381 1159.91333 1160.11377 1156.49646 1152.365112 1149.963745 1146.812866 1142.172119 1135.511841 1132.61853 1130.248291 1127.77771 1124.542114 1126.004761 1128.137695 1128.339111 1126.459351 1125.61084 1125.227173 1124.276123 1131.358765 1137.232666 1144.296143 1146.16626 1144.180054 1140.403442 1136.473755 1130.055786 1122.318604 1123.240112 1129.188232 1133.698853 1134.47937 1133.977173 1131.853638 1129.790771 1127.829712 1126.442993 1126.229126 1125.803833 1125.374268 1124.622559 1123.866577 1122.458862 1118.038696 1113.519287 1111.041626 1109.854004 1109.856689 1111.333496 1112.087402 1112.087646 1111.132812 1109.156128 1107.865723 1107.854492 1108.914795 1110.194458 1108.340576 1105.910278 1104.05603 1102.627686 1100.836304 1099.089844 1101.55542 1104.313232 1107.040161 1105.986328 1099.445923 1096.727051 1100.321411 1104.85376 1108.551025 1118.491699 1130.178345 1137.075073 1132.010498 1123.846313 1114.762817 1107.366943 1101.475952 1102.018555 1100.139526 1096.915161 1095.53833 1093.712524 1091.437744 1088.790283 1086.396729 1084.471436 1083.357666 1082.873169 1082.743652 1083.379272 1084.233276 1084.691772 1085.279419 1085.635254 1085.5271 1087.093872 1086.654419 1085.40918 1083.284912 1081.989746 1081.482178 1079.654907 1078.283325 1076.328247 1075.246826 1075.368408 -1143.531006 1143.318726 1141.708618 1139.558838 1137.346436 1133.802002 1131.01416 1127.51355 1122.106445 1112.141602 1113.133301 1114.594482 1116.197021 1117.890015 1119.337402 1120.583984 1121.519653 1122.43689 1123.2323 1123.859863 1125.014648 1126.468628 1127.838501 1128.998413 1129.909424 1130.555786 1130.829712 1130.977905 1130.833496 1130.535645 1129.864868 1129.251709 1128.805664 1128.266479 1128.074829 1128.139648 1128.658936 1129.343872 1130.158813 1130.927002 1131.531616 1132.301636 1133.040527 1133.651367 1134.450684 1136.119751 1137.803223 1140.233032 1143.378784 1145.853638 1147.130005 1150.175171 1155.281738 1159.068237 1159.906616 1153.595947 1151.83667 1154.643188 1159.21875 1160.389648 1160.198853 1160.00647 1160.040527 1160.701172 1161.347656 1161.883789 1162.303467 1162.56665 1162.787476 1163.081665 1163.82019 1165.332397 1166.862305 1168.230835 1169.932983 1171.775879 1172.320801 1171.848389 1170.944946 1169.380371 1168.878418 1169.323853 1170.815796 1171.801758 1172.524292 1172.633057 1171.284668 1170.835449 1172.765137 1173.655762 1174.046997 1174.027954 1173.919312 1173.460815 1172.907104 1171.397217 1168.335449 1165.709839 1164.52356 1163.981079 1164.505371 1165.512085 1167.320435 1170.305298 1171.994263 1172.847412 1174.733643 1177.540161 1180.619995 1182.786621 1185.501343 1190.59021 1193.721069 1200.302979 1208.456299 1216.125854 1222.095215 1230.926025 1232.062134 1228.703003 1226.494019 1222.867188 1218.313477 1213.322754 1207.759644 1204.733276 1202.85498 1201.720093 1200.031372 1198.144897 1196.012817 1194.875366 1194.188965 1193.877686 1193.658325 1193.49707 1193.479004 1193.275513 1192.96228 1192.453491 1191.585693 1190.817627 1189.880615 1188.945435 1187.891846 1186.656616 1185.672119 1184.906616 1184.470703 1183.224365 1182.006104 1181.580811 1182.523315 1183.206787 1183.428589 1183.677124 1183.720581 1183.710083 1183.890015 1184.158936 1184.528931 1184.855835 1185.125122 1185.481079 1185.671021 1185.903076 1185.950562 1186.054932 1186.275757 1186.384521 1186.542358 1186.663574 1186.789917 1186.84314 1186.876099 1186.827148 1186.766602 1186.751343 1186.768433 1186.723389 1186.617432 1186.453979 1186.31958 1186.080566 1185.900757 1185.718628 1185.405518 1185.217651 1184.907593 1184.536011 1184.118774 1183.656006 1183.226074 1183.461304 1183.99646 1184.307739 1184.378784 1184.383789 1184.273315 1184.401123 1184.356934 1184.320679 1184.457642 1184.443604 1184.689697 1184.88147 1185.207397 1185.466919 1185.603638 1185.604248 1185.449829 1185.088013 1184.747803 1184.412354 1184.025635 1183.611084 1183.165649 1182.785278 1182.411377 1182.276245 1182.07251 1181.636353 1181.093384 1180.688599 1180.197754 1179.781128 1179.510132 1179.159302 1178.829346 1178.511963 1178.398804 1178.109497 1177.74939 1177.30603 1177.004028 1176.620117 1176.219971 1175.954834 1175.609619 1175.143677 1174.624146 1174.026733 1173.185425 1172.493896 1171.936768 1171.815918 1171.660278 1171.421753 1170.953979 1170.339478 1170.038818 1169.785767 1169.247925 1168.638184 1167.929077 1167.210205 1166.414185 1165.876953 1165.348511 1164.932983 1164.634033 1164.423706 1164.553467 1166.582886 1169.647095 1171.844238 1174.593994 1177.58667 1180.715942 1182.90564 1183.422852 1184.298218 1184.678223 1184.650391 1183.919189 1182.952637 1182.832397 1182.987549 1186.389648 1192.427246 1194.616943 1194.44751 1194.531006 1196.363159 1203.382568 1206.352051 1208.914673 1218.488037 1220.147705 1220.104858 1221.912476 1225.89563 1231.023438 1234.541748 1239.996948 1246.589233 1255.999756 1266.566162 1272.074707 1279.954468 1282.773926 1281.813599 1283.481689 1285.96167 1286.616577 1285.369629 1284.652344 1283.302124 1282.480225 1281.961914 1280.433716 1275.312866 1271.683716 1271.275635 1269.871216 1262.282227 1254.563477 1249.34314 1243.874268 1235.401489 1225.927979 1216.690918 1209.514282 1205.606934 1201.947998 1196.958496 1194.920654 1185.057251 1180.828857 1177.608032 1174.258301 1174.759277 1174.073975 1172.046875 1168.938721 1165.770386 1162.649292 1159.869141 1158.055054 1156.501709 1154.545898 1152.447388 1150.22522 1148.337769 1146.549561 1144.768921 1143.123901 1141.155762 1137.920898 1134.622559 1134.688232 1134.530762 1134.055298 1134.487183 1135.501709 1135.638916 1135.477295 1134.484741 1132.679688 1130.457397 1128.477905 1126.671265 1125.690186 1125.666382 1125.458374 1125.610596 1126.499023 1127.734497 1128.626343 1128.86084 1127.861328 1124.852905 1122.292725 1124.900635 1130.236572 1134.782959 1136.518311 1138.681396 1140.580078 1142.129639 1143.783691 1145.547241 1148.346558 1152.46936 1154.066895 1146.20459 1147.232788 1154.847046 1160.316895 1164.650513 1169.328369 1170.335938 1178.209106 1185.281006 1193.937622 1197.420776 1196.846558 1192.831177 1185.88208 1180.266602 1174.567749 1170.853149 1174.958008 1181.48938 1183.689453 1190.380371 1195.893555 1202.530762 1209.066406 1213.873779 1215.045288 1217.743774 1222.58374 1223.904297 1221.81897 1220.187378 1226.251953 1232.40625 1234.59314 1233.332886 1239.398315 1241.787964 1241.965576 1241.408569 1255.427856 1268.464966 1275.959473 1280.19751 1278.180664 1277.934692 1277.483276 1276.596313 1275.656494 1275.553101 1275.862061 1274.200317 1269.676392 1257.308228 1247.011597 1238.220459 1231.907959 1227.158203 1224.830322 1223.365234 1221.918823 1220.31543 1218.733154 1212.829468 1209.818481 1208.569702 1204.667847 1198.592407 1187.687866 1181.006714 1175.640869 1170.312134 1164.113403 1158.457764 1158.283081 1160.870605 1159.384399 1157.309814 1155.312134 1152.967163 1150.730103 1147.817993 1146.267212 1146.185547 1146.685547 1147.07251 1148.33728 1152.097412 1155.539551 1158.833984 1164.049194 1169.807251 1176.629517 1182.972778 1187.862671 1191.414673 1191.454834 1190.942993 1192.458862 1196.399902 1200.959473 1205.779297 1209.221802 1207.739502 1202.691895 1198.704224 1194.123413 1183.777588 1179.842896 1172.272583 1171.025757 1169.164551 1166.25293 1163.734375 1161.920288 1160.209839 1156.921143 1150.359741 1147.499268 1148.170532 1148.969971 1147.333252 1144.130737 1139.485718 1134.187988 1132.599243 1133.458008 1129.918213 1126.709595 1125.976562 1132.669556 1135.793823 1135.046143 1132.275391 1133.465698 1130.927979 1129.572754 1134.993408 1148.751465 1149.622559 1149.081055 1145.78833 1138.491455 1133.252686 1126.665161 1122.425537 1129.590576 1135.545898 1138.018921 1138.219727 1136.991333 1134.625366 1132.508423 1131.369629 1130.268433 1129.521484 1128.023438 1126.1698 1124.232788 1122.418579 1119.709717 1116.571655 1110.192627 1109.818359 1109.87854 1111.758789 1113.766357 1113.817261 1112.878662 1111.446289 1109.365845 1108.746338 1108.982056 1109.479736 1110.05127 1109.293823 1107.170166 1105.625366 1104.575317 1103.634399 1103.392578 1104.341675 1106.218018 1109.71228 1110.824829 1107.141968 1097.532593 1099.514282 1105.27771 1111.79248 1119.182373 1130.833252 1138.689697 1134.847656 1128.009155 1118.346924 1110.73938 1108.462524 1109.801514 1110.036011 1102.71521 1098.460205 1096.143555 1093.133179 1089.433472 1086.22937 1084.510376 1083.65918 1083.402466 1083.572998 1084.516846 1085.40686 1086.206055 1086.780151 1087.229126 1087.886475 1088.070923 1087.714478 1086.541382 1084.113281 1083.403809 1085.124146 1086.374756 1085.880249 1083.35144 1082.162109 1078.807495 -1146.104126 1146.643433 1145.674194 1142.751465 1139.738403 1135.573486 1134.567383 1129.729004 1122.060059 1112.624268 1114.009888 1115.112793 1116.544678 1117.99353 1119.527588 1120.900024 1121.921509 1122.886108 1123.706909 1124.766846 1125.920776 1127.254028 1128.702148 1129.864136 1130.810669 1131.556274 1132.052979 1132.34021 1132.498169 1132.34375 1132.044312 1131.497559 1131.014893 1130.411743 1129.871216 1129.779175 1129.821411 1130.213989 1130.691162 1131.140015 1131.751343 1132.309204 1132.807495 1133.440063 1134.205078 1135.337646 1136.996338 1139.276611 1141.722046 1143.81543 1144.953247 1145.701904 1147.183594 1151.532471 1154.768433 1154.21167 1153.844604 1156.116577 1158.638428 1159.843994 1160.368652 1160.373169 1160.624023 1160.878784 1161.268066 1161.476562 1161.64502 1161.707642 1161.495972 1161.080322 1161.668213 1163.330322 1165.37915 1167.583374 1169.724609 1171.420288 1170.724854 1170.130005 1169.354858 1168.312988 1168.360229 1168.827759 1170.115723 1171.150024 1172.27356 1172.406372 1171.249634 1169.470215 1172.249512 1172.99292 1173.184082 1173.070557 1172.935303 1172.71167 1171.977417 1169.842529 1164.502441 1163.049438 1163.736084 1164.763428 1165.561768 1166.679443 1168.588379 1170.902588 1172.76001 1174.098022 1176.098755 1178.882202 1181.471436 1183.024048 1186.46875 1192.362305 1196.398682 1207.826538 1215.094116 1227.877686 1231.879517 1229.959106 1232.062744 1232.12854 1231.860474 1229.901978 1223.378418 1218.289062 1211.815308 1207.5625 1206.220459 1204.645508 1202.444824 1199.277954 1196.325806 1195.058472 1195.162964 1195.101196 1194.509766 1194.287109 1194.317139 1194.262329 1193.789185 1192.931519 1192.041016 1191.120117 1190.191772 1189.138062 1188.072266 1186.902222 1185.980713 1185.13916 1184.461548 1183.012329 1181.843872 1183.012451 1183.388428 1183.545654 1183.797119 1184.026978 1184.112915 1184.36377 1184.441528 1184.761475 1184.943237 1185.188965 1185.47168 1185.806641 1186.0896 1186.2323 1186.393066 1186.40332 1186.57666 1186.64563 1186.785645 1186.949341 1187.073364 1187.05957 1187.046021 1187.004028 1186.960693 1186.917358 1186.846436 1186.779419 1186.784912 1186.566406 1186.415771 1186.203125 1185.915649 1185.702637 1185.431274 1185.213135 1184.953125 1184.547119 1184.230103 1183.770264 1183.564331 1183.886108 1184.23584 1184.537842 1184.693481 1184.656128 1184.682373 1184.776001 1184.759399 1184.859375 1184.996216 1185.084473 1185.281128 1185.355713 1185.483643 1185.629395 1185.759277 1185.759399 1185.599609 1185.283936 1184.922485 1184.582764 1184.164673 1183.753662 1183.357422 1183.076172 1182.875488 1182.796753 1182.538696 1182.139893 1181.605103 1181.129272 1180.647583 1180.218628 1179.882935 1179.512329 1179.285034 1178.928955 1178.736572 1178.495972 1178.186035 1177.890625 1177.596069 1177.092651 1176.807129 1176.443359 1176.091919 1175.60022 1175.032959 1174.3927 1173.766479 1173.189331 1172.689209 1172.360962 1172.121948 1171.777222 1171.277344 1170.832275 1170.842041 1170.59729 1170.057251 1169.232178 1168.434326 1167.625244 1167.005249 1166.456421 1165.888184 1165.378296 1165.090698 1164.867676 1166.060303 1167.778198 1170.334595 1172.41394 1174.353394 1177.134644 1179.695923 1181.63269 1182.676514 1183.086914 1184.456421 1184.957642 1185.46875 1185.61853 1185.516479 1184.020996 1182.781616 1188.161499 1192.111328 1193.642456 1195.99939 1198.178223 1204.161987 1208.554199 1211.659668 1216.427002 1218.189453 1217.132935 1218.744873 1220.302368 1225.544067 1229.471802 1236.309448 1242.838867 1251.753174 1258.391724 1267.7854 1278.366821 1278.554443 1276.777832 1278.300781 1280.411743 1282.452759 1283.143677 1283.265015 1280.758545 1279.574341 1278.187988 1273.899292 1269.155396 1267.244263 1267.601807 1267.205688 1261.046143 1254.608276 1249.128418 1243.058105 1234.521851 1225.138184 1218.733276 1213.515869 1209.040039 1204.194824 1196.712524 1189.644409 1182.724365 1178.067383 1174.717285 1170.923706 1170.17981 1170.216187 1169.76709 1167.671021 1165.020508 1162.153687 1159.188965 1158.4729 1157.167847 1155.150635 1152.782837 1150.238037 1147.959717 1147.017578 1145.362305 1144.457397 1142.771606 1139.912842 1136.979126 1135.685303 1134.695679 1134.484863 1135.544189 1136.082153 1135.931641 1135.332886 1134.147217 1132.14856 1129.92688 1128.221436 1126.791504 1126.1073 1126.741211 1127.30127 1128.084717 1129.357788 1131.233643 1132.330566 1132.581299 1131.975342 1127.511475 1123.218872 1125.095093 1132.061401 1136.509399 1139.184204 1141.772461 1142.980957 1143.821655 1145.875977 1146.990234 1149.267822 1154.985229 1159.660034 1150.48645 1146.070923 1156.038818 1163.415527 1169.208862 1173.910889 1178.023926 1181.695312 1182.617676 1191.846313 1197.421387 1199.695801 1199.592285 1193.496704 1186.894531 1181.487915 1179.067505 1179.344238 1185.483643 1192.769531 1197.277588 1201.862671 1208.25415 1215.900269 1221.205566 1222.47876 1223.902466 1228.748047 1231.901855 1228.974365 1230.289551 1235.626221 1240.427368 1241.704834 1242.657471 1249.621338 1255.045776 1255.834351 1254.089722 1253.532837 1263.385498 1273.411499 1281.229736 1282.290039 1282.79126 1284.464111 1288.040283 1291.081787 1291.119019 1289.365479 1286.171875 1281.610352 1271.940918 1260.259766 1253.806885 1243.259155 1231.590698 1231.920532 1232.599731 1233.348633 1232.611694 1226.169434 1220.785522 1219.202515 1215.890015 1210.512207 1201.326538 1191.330811 1183.064209 1173.98877 1171.460938 1163.237305 1165.35791 1167.070923 1165.241821 1162.406128 1159.769409 1157.538696 1155.171509 1152.251343 1149.414185 1147.695435 1146.631592 1146.377441 1147.534302 1149.034302 1151.915161 1155.317871 1158.686768 1163.091675 1167.806396 1173.033691 1178.790405 1183.38623 1186.500854 1187.36499 1184.590454 1185.702026 1189.813721 1193.069702 1194.640747 1200.226074 1202.346069 1200.016602 1197.648804 1194.240356 1187.656128 1181.936157 1174.287842 1170.29541 1162.978027 1159.526855 1160.330811 1160.154297 1159.353394 1154.407471 1146.802612 1144.817749 1144.36145 1141.333374 1136.868774 1134.01062 1132.796753 1133.124512 1137.357788 1136.700317 1132.280396 1126.344116 1133.312012 1139.303589 1142.556396 1141.425537 1139.552246 1139.285034 1134.989624 1131.888916 1133.90686 1147.520996 1150.869263 1149.994873 1144.766235 1135.061646 1131.702759 1129.94458 1130.524414 1136.361084 1140.942993 1142.372803 1141.75647 1140.055664 1137.521362 1135.307983 1134.480225 1133.934326 1132.207153 1129.393555 1125.689697 1122.376709 1121.316528 1121.383545 1119.716797 1115.18396 1111.27063 1111.548584 1116.31189 1117.501831 1115.567383 1113.213867 1110.32605 1109.420654 1109.816772 1110.473022 1110.418579 1109.951904 1110.025269 1108.372192 1107.068604 1106.450562 1105.774658 1105.794678 1106.764404 1108.254883 1110.584351 1113.612183 1113.180298 1105.301392 1102.065063 1107.205322 1111.507935 1118.291626 1128.445312 1140.424072 1145.400146 1135.761597 1125.095215 1123.418213 1114.461792 1113.976318 1113.229492 1110.078735 1103.342285 1098.550415 1094.853027 1090.568359 1086.692749 1084.8927 1084.057251 1083.928467 1084.212646 1085.584839 1086.894409 1087.757935 1088.337646 1089.021362 1089.62561 1089.51001 1088.841431 1087.342041 1085.008301 1085.28772 1086.539429 1087.937866 1087.480225 1086.891113 1086.187012 1082.833862 -1148.737915 1148.69873 1147.436401 1144.882935 1143.329224 1140.161621 1137.287598 1132.379639 1124.009644 1113.182373 1114.533691 1115.597778 1116.752686 1118.20459 1119.670776 1121.15271 1122.314941 1123.407349 1124.358887 1125.547119 1126.790405 1128.133789 1129.530518 1130.760986 1131.776001 1132.608765 1133.037598 1133.474609 1133.823975 1134.010986 1134.090698 1133.638062 1133.031982 1132.320312 1131.632568 1131.363037 1131.189453 1131.305176 1131.429565 1131.77002 1132.071167 1132.392578 1132.792603 1133.190186 1133.660034 1134.357788 1135.77771 1138.008423 1139.854614 1141.574219 1142.587158 1143.630249 1144.922974 1146.443604 1149.071045 1151.30542 1153.686523 1156.13916 1158.264526 1159.939575 1160.293701 1160.437988 1160.632324 1160.77002 1160.852539 1160.956177 1160.941772 1160.727173 1160.150269 1158.92627 1159.467041 1160.953491 1163.755859 1166.282593 1168.978027 1170.89978 1168.971802 1167.31604 1167.012207 1167.171143 1167.712891 1168.878052 1170.498657 1171.67334 1172.260498 1172.291016 1171.123779 1167.799072 1171.212402 1172.141357 1172.229126 1172.09314 1172.07373 1171.750366 1170.863403 1166.940674 1162.530151 1163.345459 1164.176392 1165.532959 1166.854736 1168.038818 1169.259277 1170.589844 1172.235718 1174.252563 1176.881836 1180.129272 1183.376465 1188.389404 1194.962646 1196.138306 1199.739746 1210.512207 1221.267456 1233.454224 1230.677002 1228.880249 1229.78772 1232.694092 1233.888672 1233.616821 1228.586914 1223.270142 1218.598755 1213.572876 1209.896362 1207.661865 1205.389648 1201.057129 1196.205811 1195.345947 1195.883057 1195.811768 1195.390381 1195.175049 1195.233276 1195.389893 1195.072144 1193.742065 1192.705688 1191.737915 1190.672729 1189.415161 1188.254883 1187.171875 1186.199463 1185.323853 1184.369629 1182.609863 1182.465332 1183.346558 1183.696411 1183.951294 1184.140259 1184.281006 1184.534424 1184.832397 1184.976074 1185.218506 1185.467285 1185.719604 1185.940918 1186.213867 1186.427856 1186.597534 1186.82605 1186.896606 1186.980347 1187.056152 1187.16687 1187.338013 1187.355225 1187.357056 1187.291382 1187.261475 1187.179688 1187.218384 1187.069336 1187.068359 1186.960205 1186.84082 1186.662231 1186.393188 1186.180908 1185.841797 1185.638916 1185.305176 1185.065063 1184.795654 1184.458984 1184.165039 1183.999146 1184.32312 1184.599365 1184.795654 1184.974609 1185.036743 1185.104858 1185.2052 1185.371338 1185.42041 1185.662231 1185.63562 1185.838623 1185.881104 1185.960083 1185.871948 1185.924683 1185.801636 1185.715332 1185.469482 1185.169312 1184.863159 1184.547607 1184.178101 1183.805054 1183.510376 1183.407593 1183.323486 1183.023804 1182.72522 1182.133179 1181.562012 1181.070923 1180.621704 1180.333008 1180.067139 1179.790649 1179.463257 1179.250122 1178.996948 1178.738281 1178.309692 1177.995361 1177.651489 1177.338013 1176.863159 1176.496704 1176.029907 1175.380859 1174.871094 1174.335571 1173.848877 1173.393066 1172.935913 1172.693726 1172.28894 1171.770996 1171.486572 1171.405884 1171.225952 1170.668823 1169.896606 1168.972534 1168.223267 1167.671143 1167.113525 1166.474121 1165.898071 1165.509644 1165.495728 1166.790894 1168.578003 1169.877075 1171.015503 1173.633057 1176.625244 1178.965942 1180.48584 1181.360718 1182.321777 1183.504028 1184.911499 1186.301147 1187.375244 1188.134644 1188.168701 1187.918701 1189.906494 1192.763916 1194.722534 1196.700562 1197.978271 1202.576294 1207.265015 1209.180908 1207.732544 1206.540039 1208.847046 1215.266846 1217.47168 1221.878052 1229.6073 1235.23877 1243.023438 1248.35437 1253.016479 1260.576538 1269.401855 1271.303223 1268.885132 1270.692383 1273.654053 1275.294067 1277.322144 1276.486816 1274.279785 1272.590454 1270.206543 1262.43335 1254.331543 1253.650879 1255.005005 1260.154541 1259.181641 1253.87439 1248.251343 1242.484863 1234.378784 1228.343262 1222.324951 1217.327148 1211.942017 1206.759155 1197.792725 1188.107666 1180.359497 1175.13501 1172.418945 1170.269897 1169.3302 1168.822266 1167.716064 1166.187744 1164.285767 1162.289429 1160.691406 1159.815186 1158.547485 1155.92627 1153.321289 1150.659546 1146.99707 1146.884155 1146.731689 1146.547729 1145.083374 1142.029541 1139.067749 1136.662598 1134.35791 1136.011719 1136.66333 1136.612793 1136.276611 1135.06189 1133.505737 1130.827393 1128.486816 1127.19519 1126.89209 1127.674194 1128.737671 1129.511841 1130.822388 1132.496338 1134.290894 1135.247925 1135.365967 1135.049194 1130.939575 1125.602539 1123.946899 1130.99646 1135.872803 1142.157349 1145.735718 1146.25061 1146.260254 1147.44165 1149.741943 1152.17749 1155.529907 1159.057373 1154.578369 1145.353271 1154.300537 1163.262695 1172.95752 1176.217163 1183.920532 1187.258667 1193.925781 1194.118286 1194.745972 1200.105347 1207.065186 1202.87561 1194.290161 1189.004272 1185.213623 1182.085693 1188.66333 1195.480469 1201.260376 1206.993164 1214.598145 1221.471436 1226.714966 1228.779785 1229.976562 1234.677612 1237.947144 1236.190186 1238.670288 1245.195923 1249.388428 1250.265991 1251.227051 1260.141968 1266.932007 1269.387817 1269.650513 1268.816406 1267.905396 1267.046143 1274.277344 1279.938965 1283.183838 1286.008545 1291.069458 1293.912109 1294.054443 1294.452759 1293.480713 1288.081299 1281.39978 1274.144531 1266.735107 1255.168823 1244.743896 1246.11438 1245.509277 1244.001587 1238.174072 1231.935059 1229.432251 1225.53186 1220.847778 1210.630249 1196.376709 1189.253906 1181.424194 1172.738037 1170.490601 1171.303955 1176.564575 1178.90918 1169.571411 1165.93335 1161.573242 1159.031982 1156.664795 1154.005249 1151.795288 1150.009766 1148.873413 1148.114624 1148.962402 1149.566406 1151.991455 1154.919067 1157.880005 1161.224365 1165.079102 1169.298462 1174.217529 1179.622314 1184.385376 1184.496704 1181.92395 1181.164429 1183.483032 1185.32019 1187.606323 1192.61853 1195.48877 1195.899414 1194.921997 1191.396118 1187.381348 1182.992554 1177.136475 1172.952026 1168.292358 1159.598755 1157.482666 1155.581299 1150.029175 1145.74231 1145.646729 1147.224854 1147.451538 1141.9823 1135.581909 1132.852539 1135.907104 1145.270142 1147.612549 1140.530151 1131.637085 1127.91748 1135.382324 1146.113037 1149.627075 1148.700562 1148.064209 1145.38855 1137.244873 1132.320923 1136.010986 1145.3396 1150.447144 1149.285889 1140.973511 1132.705566 1131.412964 1133.176025 1136.844238 1145.35498 1146.884277 1146.695312 1145.605713 1143.55896 1140.979736 1138.861572 1137.055908 1135.884399 1134.262573 1129.536743 1124.003296 1122.138062 1122.848022 1123.685425 1123.123779 1119.465088 1118.147949 1122.225586 1122.606445 1121.10144 1117.032471 1111.735596 1109.872925 1110.205444 1111.436768 1112.049316 1111.661011 1110.026245 1110.067383 1110.143066 1108.963257 1108.077393 1107.220215 1107.262573 1108.467285 1109.722412 1111.933594 1116.9021 1121.178711 1115.429321 1109.329834 1109.397217 1116.644775 1124.174194 1132.394531 1143.130127 1150.533569 1141.391602 1131.312866 1125.009766 1119.726807 1117.364136 1115.2771 1111.982544 1106.33374 1100.607666 1096.076782 1092.081787 1088.336792 1085.83667 1084.847168 1084.467896 1085.115967 1086.647095 1088.099121 1089.352783 1090.266602 1091.09314 1091.623779 1091.493042 1090.631714 1089.22876 1087.728516 1087.798096 1088.645874 1088.994263 1088.428101 1087.57373 1086.647095 1084.243164 -1151.109253 1150.285522 1148.948853 1147.680786 1146.959229 1143.552124 1139.036743 1133.766479 1122.774414 1113.522217 1114.810913 1115.733765 1116.874268 1118.164062 1119.53479 1121.131348 1122.453857 1123.964478 1125.166504 1126.34375 1127.772217 1129.158203 1130.588135 1131.647827 1132.862183 1133.41272 1133.782471 1134.658691 1136.232666 1137.590454 1137.728516 1136.947021 1135.358276 1134.195801 1133.877319 1133.441528 1132.75 1132.489258 1132.393311 1132.513916 1132.667969 1132.889038 1133.003418 1133.141235 1133.233154 1133.462524 1134.700928 1136.749023 1138.272705 1139.601196 1140.860229 1142.097534 1143.524414 1144.917236 1146.123535 1149.287842 1152.883789 1156.202148 1158.980347 1159.852783 1160.075562 1160.217896 1160.299561 1160.277222 1160.224976 1160.083618 1159.837158 1159.997559 1158.995972 1157.92749 1158.232056 1159.899536 1162.602539 1164.590576 1166.022461 1165.955933 1161.074829 1163.10376 1164.705322 1165.635132 1166.801025 1168.664185 1170.746338 1171.937134 1172.306519 1171.896851 1168.904785 1166.09375 1169.403442 1170.839966 1170.929321 1171.057129 1171.104614 1170.454468 1168.27002 1164.384277 1162.153687 1163.418579 1165.03064 1166.775391 1168.222046 1169.933716 1170.894531 1170.697388 1170.930908 1173.432739 1176.898071 1180.069336 1183.411499 1189.724731 1196.017212 1198.261353 1203.642822 1210.221802 1221.572266 1232.958252 1230.698975 1225.225708 1224.418091 1230.102295 1233.770142 1234.249146 1232.437256 1226.111572 1222.124756 1218.26123 1213.164062 1210.015869 1208.278076 1204.238525 1197.903076 1198.13269 1197.737305 1197.134888 1196.732178 1196.633911 1196.494141 1196.288696 1196.055908 1195.195679 1193.973633 1192.472168 1191.136353 1189.729126 1188.512695 1187.457275 1186.453735 1185.49939 1184.304688 1182.348267 1183.214478 1183.60498 1183.879028 1184.127197 1184.354004 1184.633545 1184.947754 1185.174927 1185.4198 1185.751709 1185.968994 1186.145874 1186.356079 1186.533936 1186.697876 1187.008057 1187.200439 1187.405884 1187.47937 1187.471436 1187.630127 1187.697876 1187.831299 1187.700684 1187.703125 1187.599609 1187.5896 1187.581177 1187.574341 1187.445801 1187.29248 1187.165283 1186.935059 1186.659546 1186.40271 1186.182251 1185.846802 1185.560303 1185.368286 1185.147095 1184.833984 1184.617065 1184.435547 1184.637939 1184.930054 1185.110352 1185.262329 1185.389893 1185.567749 1185.703857 1185.907104 1186.15271 1186.15271 1186.194458 1186.293213 1186.387085 1186.426514 1186.335815 1186.185913 1185.996704 1185.972534 1185.736328 1185.444336 1185.217407 1184.875366 1184.516357 1184.308105 1184.008911 1183.880615 1183.75354 1183.474731 1183.125732 1182.549438 1182.016724 1181.488525 1181.078979 1180.791626 1180.484009 1180.228882 1179.977295 1179.743896 1179.560791 1179.231079 1178.857788 1178.478882 1177.974487 1177.665283 1177.287231 1176.801758 1176.345215 1175.945435 1175.425903 1174.999756 1174.479736 1173.920776 1173.425415 1173.096558 1172.722656 1172.449219 1172.062866 1171.978638 1171.614624 1171.035645 1170.282471 1169.499878 1168.776978 1168.231323 1167.737793 1167.079468 1166.452515 1165.953125 1165.743286 1167.467407 1170.48645 1171.677734 1172.066162 1174.244751 1177.022461 1179.234131 1180.710938 1181.957153 1182.699829 1182.898071 1184.544922 1187.260254 1189.003174 1190.380981 1191.732056 1192.979248 1195.129761 1195.463013 1195.139893 1195.124512 1195.194336 1199.016479 1204.210815 1206.070923 1206.884644 1208.338135 1212.278442 1218.13501 1220.447021 1222.511963 1227.856201 1231.2854 1238.686157 1245.550171 1249.617065 1255.885986 1261.919678 1262.890137 1261.653687 1262.827759 1265.132812 1265.052368 1264.740723 1264.581177 1264.620117 1263.366577 1259.878174 1252.804443 1248.421021 1248.669922 1249.948486 1253.6427 1254.056274 1249.060547 1245.024414 1237.109863 1229.913574 1225.024536 1222.598511 1219.87561 1213.724243 1207.935425 1197.484131 1188.172241 1179.529663 1171.026855 1170.210449 1169.391235 1168.512939 1167.891724 1166.630005 1164.995117 1163.281494 1161.809082 1160.40564 1159.271362 1158.244385 1156.094116 1153.616455 1151.222168 1149.214844 1148.002808 1147.371704 1147.390869 1146.476196 1143.784668 1140.865479 1138.650513 1137.795532 1137.588257 1137.349854 1136.97998 1136.324829 1135.074097 1132.673096 1128.920288 1128.094482 1128.356567 1128.857544 1130.351196 1131.144165 1131.484375 1132.527588 1134.323364 1136.081055 1136.977661 1137.300171 1136.301392 1133.772583 1128.081665 1123.828003 1124.825562 1134.311523 1143.418701 1147.923584 1148.97229 1149.531128 1150.759155 1152.142578 1154.233765 1156.091064 1158.402344 1158.846436 1149.922729 1146.032959 1155.973755 1164.390991 1171.247314 1179.4021 1186.143555 1195.276489 1197.724365 1199.554688 1203.390991 1207.076538 1208.015259 1199.842896 1195.916138 1192.894531 1184.975586 1196.470581 1199.977661 1204.674561 1209.534668 1218.052368 1226.823364 1233.156372 1236.733521 1238.369263 1241.545654 1245.588501 1245.312988 1247.111694 1253.511719 1259.071045 1261.181396 1260.876831 1270.394775 1278.394531 1281.951782 1283.522949 1283.386841 1281.729004 1279.527466 1280.388306 1280.514038 1280.499023 1282.560425 1286.973267 1291.258057 1293.615845 1294.573242 1294.625 1292.789673 1288.17688 1283.856079 1277.44873 1266.954834 1255.36145 1257.930542 1251.540283 1247.123169 1242.490967 1236.705933 1234.315918 1227.785034 1219.125366 1200.635864 1196.706055 1196.936646 1193.220703 1184.94873 1178.937256 1176.53894 1178.973633 1180.998169 1173.135254 1168.543335 1161.630127 1158.654541 1156.76355 1155.34668 1153.982178 1152.486816 1151.351074 1150.419678 1149.701782 1150.076416 1152.049438 1154.310913 1156.600464 1158.619263 1161.810669 1165.337646 1169.467163 1174.891968 1183.161743 1183.535278 1179.120117 1178.299316 1179.136597 1180.196167 1181.776978 1186.016602 1188.736206 1190.036621 1188.931641 1186.266357 1184.135498 1181.958984 1177.791626 1174.271729 1171.782104 1164.276733 1159.526733 1156.099121 1150.435425 1152.807495 1155.842651 1153.449097 1147.879395 1141.844604 1134.057495 1139.102783 1148.113525 1151.243164 1150.02478 1141.060669 1130.920776 1129.880127 1138.426758 1148.506348 1153.196777 1156.627686 1157.358154 1151.868286 1143.108398 1134.22229 1147.07373 1150.380005 1150.503174 1145.811523 1135.499878 1131.292603 1131.75769 1138.735229 1147.916382 1148.059448 1147.589478 1147.573608 1147.695801 1146.707642 1144.131836 1140.979736 1138.704468 1137.373657 1135.369385 1126.588013 1122.142334 1123.117188 1125.522705 1125.674316 1124.506958 1121.382568 1122.672485 1124.032349 1123.758423 1122.84314 1118.527832 1110.183594 1111.316162 1112.50293 1113.480713 1113.72937 1112.882324 1110.741821 1110.023193 1111.157593 1110.397095 1109.131226 1108.081299 1108.072388 1109.324951 1111.47583 1114.529541 1119.23999 1123.119995 1123.005005 1113.106689 1108.416626 1119.296265 1128.914185 1137.813477 1146.149902 1159.047485 1151.048706 1139.752075 1127.850952 1121.866333 1119.900635 1116.852173 1112.617798 1107.277954 1100.266235 1096.130005 1094.02771 1091.035889 1087.96521 1086.052979 1085.047119 1085.613403 1087.602051 1089.264893 1090.682129 1092.178711 1093.588379 1094.573975 1093.834717 1093.046631 1092.176758 1091.113525 1090.692871 1090.489014 1089.880249 1088.879517 1087.429443 1086.084839 1083.92981 -1152.942139 1151.757446 1150.674072 1149.458374 1148.060913 1145.276489 1139.067383 1132.646851 1126.467163 1114.87854 1115.065552 1115.938477 1116.868042 1118.087769 1119.559692 1121.062622 1122.367432 1124.119629 1125.627441 1127.259521 1128.832397 1130.252563 1131.402954 1132.61731 1133.893921 1134.422485 1135.385742 1137.473633 1140.819946 1143.947632 1144.513794 1142.768555 1140.729248 1138.9552 1137.361206 1135.925293 1134.76062 1134.083862 1133.809448 1133.385376 1133.289917 1133.413086 1133.438965 1133.155762 1133.194946 1133.299927 1134.387085 1135.955566 1136.94165 1138.101807 1139.303345 1140.751953 1142.118774 1143.745239 1145.828735 1148.461548 1151.37207 1155.056641 1158.314087 1159.528564 1159.709351 1159.836548 1159.764526 1159.202515 1158.985474 1159.158813 1158.373291 1159.192017 1158.466309 1157.483154 1158.14563 1160.324951 1161.804932 1162.7323 1162.70874 1161.352295 1158.700073 1160.471558 1162.625366 1163.822266 1165.162598 1167.156128 1169.533691 1171.214111 1171.332031 1170.157959 1165.110352 1164.247803 1166.319336 1168.035156 1168.67395 1168.949707 1168.765991 1167.819824 1165.523804 1163.007812 1161.775635 1163.785767 1166.430786 1168.728394 1169.631348 1171.222046 1172.203735 1172.304688 1171.534912 1173.528687 1177.352905 1180.289795 1182.843872 1187.450684 1191.822632 1196.11853 1201.78772 1207.779785 1215.774292 1227.445557 1230.33252 1222.235596 1219.181274 1225.594604 1230.961548 1232.393311 1229.085815 1224.044067 1220.367798 1217.363281 1212.870239 1209.710327 1207.788696 1205.588623 1202.191406 1200.180176 1199.159058 1198.353149 1197.907959 1197.552124 1197.162354 1196.756104 1196.414551 1195.71521 1194.504883 1193.020996 1191.531006 1190.161377 1188.893433 1187.700195 1186.616821 1185.635132 1184.56665 1182.464355 1183.418457 1183.739502 1183.949951 1184.194458 1184.545776 1184.928467 1185.249878 1185.64624 1185.794189 1186.053711 1186.370483 1186.623291 1186.707153 1186.991821 1187.108154 1187.310303 1187.551147 1187.789551 1187.999878 1188.134766 1188.109985 1188.272949 1188.370728 1188.306763 1188.201172 1188.092773 1188.03833 1187.995605 1188.017456 1187.927979 1187.795654 1187.647705 1187.317627 1187.082764 1186.761841 1186.458984 1186.2323 1185.942749 1185.72583 1185.538574 1185.30957 1185.050903 1184.833984 1185.009644 1185.246338 1185.534424 1185.732788 1185.861572 1186.09021 1186.340942 1186.615479 1186.701782 1186.774414 1186.692749 1186.806152 1186.904541 1186.827515 1186.716553 1186.575439 1186.336182 1186.141113 1185.860474 1185.756104 1185.484497 1185.158081 1184.982422 1184.735596 1184.436401 1184.283325 1184.072021 1183.775757 1183.298218 1182.759521 1182.188599 1181.688721 1181.393555 1181.090088 1180.781616 1180.53064 1180.279785 1180.187744 1179.96106 1179.612915 1179.129639 1178.849976 1178.376831 1177.967896 1177.44519 1177.093262 1176.736938 1176.452393 1176.101074 1175.636597 1174.98999 1174.398315 1173.88916 1173.494629 1173.241089 1172.898682 1172.623291 1172.404663 1171.839355 1171.153687 1170.450562 1169.717896 1169.21167 1168.749268 1168.371948 1167.729248 1167.043335 1166.473511 1166.22229 1167.682617 1171.01062 1172.467773 1173.968262 1175.702515 1178.022827 1180.160767 1181.894653 1183.441895 1184.506348 1185.31189 1186.630615 1188.332886 1190.186157 1192.291016 1193.915649 1195.31897 1196.617188 1196.88147 1197.114746 1197.44873 1197.829224 1199.926758 1204.97229 1207.694702 1211.349731 1216.163208 1220.534668 1223.20459 1225.126343 1227.734131 1231.212036 1232.452393 1235.240845 1242.669922 1244.986938 1251.237305 1253.910889 1254.424561 1253.022949 1254.001709 1254.744385 1254.204834 1254.428467 1253.936401 1253.473145 1252.799927 1250.459351 1246.123657 1238.639893 1242.83728 1242.264526 1248.180664 1247.176392 1243.590698 1239.900024 1234.494263 1228.01123 1222.419189 1218.885742 1218.508179 1213.251709 1208.312378 1200.305298 1190.605957 1182.006592 1173.343384 1170.255981 1169.236938 1168.275757 1167.342896 1165.911743 1164.067505 1162.316406 1161.166992 1159.746216 1158.083862 1156.926392 1155.510132 1153.5271 1151.379883 1149.595581 1147.984863 1146.459106 1146.424194 1145.737427 1143.941284 1141.983521 1140.296509 1139.238037 1138.434326 1137.828613 1137.138794 1136.146484 1134.912842 1132.318726 1128.614624 1129.165649 1130.054932 1131.363892 1133.537964 1134.04126 1132.692993 1133.860962 1135.532227 1137.980591 1139.485474 1139.904541 1138.665405 1135.521729 1131.12561 1126.878296 1124.992676 1127.654175 1136.597534 1146.669067 1149.478149 1153.027588 1154.578247 1154.576172 1155.653198 1157.313232 1158.315796 1160.63501 1157.268188 1150.204834 1152.841919 1155.428223 1161.276489 1170.317139 1180.124023 1191.783936 1199.160156 1203.566772 1207.986694 1208.768311 1200.771362 1196.741943 1197.68042 1198.134277 1195.827393 1196.17981 1205.915283 1207.091309 1215.400879 1222.58313 1228.577637 1237.903564 1245.395508 1247.90271 1251.466064 1254.401123 1252.541748 1255.806152 1262.397095 1268.845215 1272.165649 1272.64502 1278.214478 1286.19165 1290.787109 1292.381592 1292.439453 1289.117676 1287.620117 1287.092041 1286.280396 1283.715332 1280.929932 1284.456299 1289.125366 1291.454224 1293.489746 1294.405518 1294.328247 1293.30249 1291.78479 1284.747314 1273.810913 1264.307007 1255.398438 1248.993408 1242.909302 1237.495483 1234.123901 1230.956543 1221.396851 1214.447632 1217.416138 1208.94873 1203.234619 1198.302734 1191.393066 1182.552612 1178.179199 1175.425781 1172.252563 1167.858032 1161.672241 1158.483887 1158.254639 1157.703247 1156.909668 1156.049316 1154.770996 1153.462402 1152.224121 1150.352173 1150.43811 1152.130005 1153.775513 1155.606445 1157.171753 1158.386108 1160.203857 1163.244385 1167.665771 1174.0 1178.057373 1174.947876 1174.804688 1175.535156 1176.579102 1178.512817 1180.933594 1182.993896 1183.222046 1182.687866 1182.140381 1181.002075 1179.529907 1177.030029 1174.230347 1171.752563 1167.349609 1162.328125 1160.143677 1159.224609 1159.599487 1160.533813 1152.11084 1146.107666 1142.564941 1141.183716 1149.006714 1156.971191 1154.968994 1148.745117 1139.774048 1130.484009 1131.084595 1138.958252 1148.025513 1155.824829 1160.298706 1161.508789 1158.049561 1148.178711 1146.721069 1151.516479 1150.854126 1148.651855 1137.186279 1131.880493 1131.58252 1139.650879 1147.781006 1147.962646 1146.991943 1146.909546 1147.132324 1147.399658 1147.566772 1144.357422 1140.545776 1138.040771 1136.343628 1131.368042 1122.172974 1123.915161 1127.206177 1128.732178 1127.776855 1125.134399 1121.959351 1124.629395 1124.980469 1124.289062 1123.180908 1119.416504 1116.42395 1116.042969 1116.470581 1117.008057 1116.456665 1114.863525 1112.478882 1110.571655 1111.955078 1111.384521 1109.737061 1108.903931 1108.721191 1109.649536 1112.537231 1116.007935 1120.119629 1123.692871 1124.051025 1116.874023 1109.438477 1117.990479 1128.910522 1138.049072 1147.639648 1159.103882 1160.409668 1145.009277 1133.157227 1128.794678 1122.451416 1118.562134 1114.046387 1107.872192 1099.960693 1096.608276 1096.861572 1094.238647 1090.630737 1088.116333 1085.960571 1086.11084 1088.582397 1090.516602 1092.047363 1093.596191 1095.962646 1097.929443 1095.956543 1095.484863 1095.266113 1093.898926 1092.911743 1092.237793 1091.023315 1088.366089 1085.511597 1085.152588 1084.21936 -1154.324585 1152.890015 1151.581665 1150.095459 1148.469604 1145.899658 1139.797729 1135.376465 1134.163208 1125.713989 1114.544434 1115.790649 1116.906494 1118.066772 1119.428833 1120.900024 1122.213745 1123.733765 1125.754761 1127.952026 1129.937134 1131.55896 1132.424683 1132.959351 1134.658203 1137.011475 1138.811523 1141.598755 1145.759644 1147.520142 1147.903687 1147.68811 1146.721191 1145.013428 1142.847412 1140.496338 1138.464966 1136.477905 1134.50293 1134.217529 1134.597412 1134.897095 1134.609131 1134.09021 1133.493896 1133.432983 1133.669434 1134.321411 1135.410645 1136.580933 1137.913208 1139.189331 1140.373413 1142.187988 1144.464844 1146.382324 1148.86792 1151.342407 1154.224365 1157.075439 1158.533081 1159.03418 1159.071533 1158.034546 1157.137329 1157.189575 1157.06311 1157.580078 1157.004639 1157.243896 1157.845947 1160.062378 1161.034302 1161.199707 1160.205688 1158.847168 1158.765503 1159.99231 1161.319702 1162.153687 1163.187256 1164.562256 1166.265503 1167.64917 1167.13501 1164.727417 1162.332275 1162.652222 1164.066528 1165.366333 1165.970947 1166.061279 1165.799194 1164.7771 1163.43811 1162.078979 1161.833618 1164.446777 1167.890259 1170.802979 1171.499268 1172.32666 1173.46875 1174.05127 1174.583862 1176.124512 1178.186035 1180.409424 1182.231689 1184.952148 1190.225342 1194.944214 1198.699219 1203.217163 1208.953369 1219.72583 1223.677246 1221.041626 1218.865723 1221.256836 1224.292603 1224.637207 1221.362549 1219.150024 1217.051392 1213.887085 1210.406616 1207.765381 1206.729492 1205.275513 1203.104248 1201.169434 1199.939209 1199.110107 1198.441528 1197.999146 1197.425659 1196.952393 1196.335083 1195.568848 1194.610107 1193.210693 1191.700439 1190.332397 1188.954834 1187.793457 1186.669067 1185.567261 1184.654785 1182.775391 1183.478149 1183.876953 1184.065308 1184.373535 1184.77478 1185.126343 1185.579956 1185.834229 1186.142456 1186.412842 1186.6698 1186.912598 1187.127686 1187.335205 1187.543945 1187.631104 1187.805786 1188.109985 1188.377808 1188.560547 1188.808716 1188.846558 1188.988525 1188.937256 1188.769531 1188.656006 1188.519653 1188.52417 1188.563843 1188.433105 1188.334351 1188.131348 1187.867065 1187.553467 1187.148193 1186.939087 1186.656494 1186.352295 1186.159302 1186.042969 1185.745361 1185.536011 1185.31665 1185.429199 1185.658936 1185.954834 1186.255493 1186.505249 1186.721069 1187.009888 1187.252197 1187.339966 1187.333374 1187.220703 1187.197632 1187.246094 1187.328613 1187.204834 1186.966187 1186.718384 1186.359619 1186.146606 1185.887207 1185.76709 1185.615112 1185.29187 1185.109619 1184.742065 1184.577881 1184.259521 1183.834106 1183.350098 1182.81604 1182.234985 1181.960327 1181.588989 1181.342896 1181.098755 1180.932373 1180.735718 1180.622192 1180.433105 1180.069458 1179.620728 1179.126465 1178.665771 1178.29126 1177.833374 1177.581055 1177.319214 1177.061768 1176.712646 1176.201294 1175.494629 1174.92981 1174.390259 1173.979248 1173.677002 1173.402222 1172.986816 1172.572876 1171.991333 1171.297485 1170.685303 1170.19751 1169.7323 1169.4021 1168.938599 1168.296143 1167.711914 1167.05481 1166.586304 1167.831909 1169.821777 1171.433594 1174.085083 1176.741333 1178.962402 1181.131714 1183.041016 1184.456787 1185.413086 1186.260742 1187.442627 1188.993774 1190.82251 1192.927612 1194.731934 1196.086304 1196.866821 1197.010864 1197.594116 1198.681152 1200.380981 1203.096313 1206.335815 1210.797607 1216.025146 1221.325806 1225.034424 1228.31189 1230.647461 1231.942383 1234.761475 1236.390625 1242.474121 1245.115234 1246.257324 1246.711426 1245.195923 1246.467896 1244.855347 1243.078979 1244.283813 1245.994385 1245.523804 1247.139404 1246.483887 1244.656616 1241.47522 1235.887451 1228.648071 1229.93335 1234.539673 1242.596313 1241.164307 1235.69812 1231.698486 1229.920898 1224.58667 1221.300903 1215.425171 1211.946533 1208.566528 1205.989624 1200.571533 1194.754639 1187.361694 1180.333984 1172.107544 1169.835449 1168.557861 1167.096069 1165.349731 1163.401978 1161.27063 1159.630005 1159.459595 1158.139404 1156.365845 1154.975952 1153.356201 1151.541138 1149.587036 1147.820068 1146.518799 1145.363892 1144.929565 1144.203613 1142.887695 1141.385742 1140.053711 1139.030273 1138.037354 1137.129028 1135.924561 1134.805176 1131.979248 1129.098511 1130.865479 1132.2677 1133.414185 1134.585938 1134.04895 1133.901123 1135.737305 1137.848755 1140.038818 1142.483032 1144.19043 1143.656128 1138.402588 1133.337646 1129.536499 1126.190063 1124.881836 1128.779663 1135.733643 1145.259033 1154.584351 1158.616577 1157.005737 1157.587158 1159.934204 1161.444336 1162.967285 1161.457886 1158.994751 1156.990479 1155.944214 1157.741211 1167.269409 1178.302002 1189.644043 1200.517456 1208.95166 1205.535156 1196.859497 1190.173706 1192.667358 1196.696777 1200.149048 1198.74292 1196.065308 1209.991089 1214.229248 1217.036743 1228.186401 1231.653564 1237.868896 1248.220337 1254.805054 1259.412842 1262.004517 1255.052246 1265.497559 1271.994751 1277.785645 1282.833618 1285.81189 1285.064941 1292.028198 1296.958252 1297.921265 1297.009888 1293.875854 1293.147095 1294.281494 1292.892944 1288.715942 1287.281006 1287.803345 1289.518066 1291.23645 1292.849121 1294.197388 1294.658691 1294.386719 1293.517822 1289.932983 1277.156006 1268.389038 1258.975952 1250.372559 1243.237427 1234.672119 1230.987305 1224.559326 1219.473022 1220.969727 1218.315063 1211.134888 1205.001709 1200.30481 1196.438232 1184.050659 1176.53772 1171.024536 1165.890625 1158.001465 1159.884888 1165.743408 1164.183472 1160.971558 1159.134888 1158.180298 1156.935913 1155.53186 1153.868774 1151.302612 1150.957397 1152.407104 1153.822754 1155.234985 1156.474487 1157.77356 1158.704102 1158.517212 1158.850342 1166.859741 1169.284302 1170.488647 1171.2229 1171.904907 1173.587646 1174.522217 1176.156982 1178.381348 1180.141113 1180.562744 1180.312256 1179.449829 1178.100586 1176.334106 1173.966309 1170.795044 1167.419189 1163.348511 1160.313232 1159.340088 1158.118042 1152.064331 1144.534302 1144.15271 1145.188477 1150.369019 1160.022949 1161.566406 1156.889893 1147.377075 1139.175903 1131.560669 1130.226074 1136.129639 1144.258301 1155.297241 1161.291748 1161.826538 1161.450317 1158.538086 1159.260498 1155.437256 1148.331787 1140.697144 1134.481323 1134.866699 1136.634766 1147.463257 1147.593872 1146.388794 1146.314331 1146.064453 1146.014893 1145.09021 1142.782471 1139.20459 1136.625488 1134.895142 1133.806763 1125.434937 1128.119141 1132.946777 1133.952515 1132.739746 1129.853149 1127.343994 1125.911377 1126.261841 1125.740601 1124.400146 1122.396118 1120.562012 1119.525146 1120.443848 1121.196045 1120.981079 1119.657715 1117.528198 1115.63623 1114.1427 1113.48291 1111.799683 1109.993652 1110.111084 1110.302002 1109.779419 1113.037109 1116.583252 1120.167236 1123.934326 1125.519043 1121.4823 1116.865356 1120.122681 1128.846191 1137.59375 1146.23938 1158.891479 1167.306274 1154.841187 1144.569702 1137.078491 1126.841675 1121.874146 1119.063599 1111.36084 1104.367065 1099.32251 1099.540771 1097.086304 1092.980957 1090.469727 1089.025513 1089.378052 1090.800049 1092.204346 1093.426025 1094.792114 1096.71106 1098.192017 1097.307373 1097.766113 1097.591064 1095.624023 1094.765503 1094.286133 1092.722046 1089.225098 1086.835815 1085.622925 1085.538574 -1155.449341 1154.011841 1152.068848 1149.928223 1147.63855 1145.246704 1143.425293 1141.161011 1138.684204 1133.19458 1117.727051 1116.063721 1117.000244 1117.952637 1119.155518 1120.776123 1122.206543 1123.603638 1125.994751 1128.538086 1131.16687 1133.365112 1134.07019 1133.857666 1134.633545 1137.97998 1141.476074 1144.638184 1147.34436 1148.123657 1148.51062 1148.780884 1148.591553 1148.072876 1147.319824 1145.647217 1143.408813 1141.364258 1139.439697 1138.486572 1138.216675 1137.890869 1137.423096 1136.863159 1135.555908 1134.108765 1133.807739 1133.830322 1134.026001 1134.709839 1135.959839 1137.128662 1138.312256 1140.09021 1142.40332 1144.672119 1146.372314 1146.404907 1147.791504 1151.494873 1153.669312 1155.10498 1155.672607 1155.283936 1154.782349 1154.855957 1154.935059 1155.550293 1156.117676 1156.989868 1158.626099 1160.144653 1160.37439 1159.485962 1158.669922 1158.3479 1159.012451 1159.963379 1160.487427 1160.481079 1161.323242 1162.118896 1162.707031 1163.056152 1162.077515 1160.983154 1161.017822 1161.573608 1162.441528 1163.233887 1163.428955 1163.373047 1163.098999 1162.562134 1161.925171 1160.754639 1162.368042 1164.930298 1168.372925 1171.072266 1172.256348 1173.119263 1174.44519 1175.696167 1176.986328 1178.195068 1179.381104 1180.433228 1182.195312 1184.876587 1188.518677 1192.50293 1194.083496 1198.084961 1205.88855 1218.960693 1221.279297 1220.176392 1218.13623 1218.352905 1218.881348 1218.618896 1217.494507 1215.804932 1213.341675 1210.093384 1207.259033 1206.325195 1205.728149 1204.382202 1202.786011 1201.161865 1199.980591 1199.030273 1198.339111 1197.811279 1197.419556 1196.627686 1195.803833 1195.168213 1194.404175 1193.050537 1191.675781 1190.19458 1188.847534 1187.648926 1186.540161 1185.488647 1184.440552 1183.064575 1183.565063 1183.876831 1184.238037 1184.583008 1184.960449 1185.383667 1185.768555 1186.083008 1186.383423 1186.722656 1187.016357 1187.217896 1187.45752 1187.712891 1187.957886 1188.089111 1188.316284 1188.575684 1188.797607 1189.099976 1189.44397 1189.592896 1189.639771 1189.645386 1189.453857 1189.223022 1189.094604 1189.112305 1189.115723 1188.992798 1188.848145 1188.687378 1188.356079 1188.062378 1187.569702 1187.38562 1187.090454 1186.811401 1186.618286 1186.507446 1186.223877 1185.948853 1185.738525 1185.867798 1186.192627 1186.69043 1187.000244 1187.290894 1187.57251 1187.786499 1187.865356 1187.849976 1187.895264 1187.722778 1187.813354 1187.698608 1187.775391 1187.720581 1187.616455 1187.101318 1186.773071 1186.53418 1186.21875 1186.001221 1185.861816 1185.663208 1185.470459 1185.061768 1184.759155 1184.36731 1183.926514 1183.373047 1182.875 1182.372925 1182.050781 1181.882935 1181.717041 1181.491333 1181.390869 1181.178467 1181.025757 1180.775269 1180.472534 1180.059326 1179.55481 1179.098145 1178.604492 1178.30835 1178.099731 1178.003052 1177.747925 1177.333008 1176.819336 1176.081421 1175.507812 1174.953003 1174.571045 1174.297974 1173.861206 1173.436035 1172.97168 1172.379028 1171.626099 1171.099854 1170.752319 1170.445923 1170.079102 1169.770508 1169.253296 1168.571655 1167.699585 1167.100708 1167.825439 1169.373413 1171.214844 1173.977417 1177.430542 1180.580078 1182.655762 1184.03479 1184.926514 1185.596924 1186.43042 1187.572876 1189.028198 1190.837769 1192.92041 1194.934814 1196.147095 1196.375 1196.376587 1196.891846 1198.649658 1200.954346 1203.930664 1207.194702 1211.823608 1218.725952 1223.329224 1228.275269 1232.99585 1234.022705 1234.214966 1234.157471 1233.875122 1234.333618 1241.292236 1243.009277 1242.104736 1240.619629 1238.91687 1237.593018 1236.784668 1237.230591 1238.745117 1239.419556 1239.082275 1236.069458 1233.860962 1230.374756 1224.686279 1221.130249 1222.969482 1227.764526 1230.692871 1229.004517 1226.525757 1223.143921 1220.746704 1218.738647 1215.97876 1208.634033 1206.053589 1204.281006 1198.73291 1194.660767 1192.002686 1187.865967 1183.259644 1174.420898 1170.503052 1169.0177 1166.948486 1164.975342 1163.027222 1160.814941 1158.991455 1158.332031 1157.571655 1156.44104 1155.036255 1153.500854 1151.765991 1149.96582 1148.195679 1146.858154 1146.727661 1146.167603 1145.350464 1143.896118 1142.11731 1140.546753 1139.312744 1138.11145 1136.930786 1135.838745 1134.664551 1132.031128 1129.446899 1133.618408 1134.231323 1134.628784 1134.366943 1134.903198 1136.265625 1137.722168 1140.055176 1142.639526 1145.230591 1147.28064 1147.440796 1140.879272 1135.277954 1131.706909 1128.754761 1126.594238 1125.346191 1126.111328 1131.092651 1140.723267 1159.325928 1159.864136 1160.17395 1163.744141 1165.90564 1166.540039 1165.661865 1164.092285 1160.745483 1156.955688 1156.255371 1159.27356 1170.366821 1184.474365 1194.413818 1199.174194 1198.860474 1186.172852 1183.768433 1193.250488 1198.066772 1203.439331 1206.595825 1201.959473 1208.893311 1219.096191 1225.517456 1231.308472 1240.932251 1243.004883 1245.895508 1256.282227 1266.212402 1269.604492 1266.274536 1273.170654 1280.082764 1290.314209 1294.407837 1295.77771 1292.002319 1295.993774 1302.698608 1304.476196 1301.251831 1298.322388 1297.039917 1296.840454 1295.21228 1292.868774 1292.130005 1291.759277 1290.734131 1291.369507 1292.841553 1294.187378 1294.74353 1294.867676 1294.602295 1293.347656 1284.119873 1274.105469 1260.847046 1253.109253 1246.099487 1243.310913 1236.223022 1230.650757 1227.523315 1222.196289 1217.678833 1210.871582 1204.864746 1198.918823 1189.26062 1179.610596 1170.481323 1169.229492 1168.249023 1169.326172 1176.341309 1177.233643 1172.319458 1167.190796 1163.276978 1160.786133 1158.889282 1157.451782 1155.626953 1151.971924 1151.409424 1152.806519 1154.057495 1155.256226 1156.460693 1157.802002 1158.908936 1159.225098 1160.283813 1163.21582 1165.475586 1167.423828 1169.185425 1170.740234 1170.627197 1170.944946 1170.765625 1175.176025 1178.375 1179.457642 1179.553589 1178.837891 1177.517334 1175.92627 1173.762207 1170.664917 1166.845093 1161.445557 1158.408936 1158.485474 1158.122803 1150.290283 1144.991821 1146.935547 1155.928955 1162.308105 1162.784546 1161.629395 1156.122681 1147.348999 1139.173584 1133.471924 1129.876099 1133.077148 1142.077637 1153.605713 1160.828003 1162.006958 1162.309326 1161.508545 1160.526245 1153.12915 1145.72168 1147.97168 1147.729492 1140.194702 1143.96875 1147.767578 1146.749878 1146.672485 1147.352295 1146.436279 1145.209106 1144.223877 1141.303223 1134.474365 1134.487427 1134.223022 1133.178711 1135.448853 1136.381104 1136.342041 1135.760254 1134.651367 1131.5979 1130.070557 1129.060303 1128.189087 1126.508545 1123.859497 1121.785278 1121.060547 1121.469971 1123.971802 1124.274536 1123.384033 1122.372681 1120.63916 1118.570557 1116.814209 1115.394897 1113.664062 1111.285767 1112.39209 1112.463989 1111.865601 1113.80603 1116.781006 1119.942627 1123.924927 1129.25354 1130.721313 1120.310059 1125.498779 1136.880737 1144.687134 1152.117432 1160.426636 1173.522217 1164.984741 1154.913208 1146.229736 1138.389648 1131.720093 1125.426636 1115.66394 1108.370117 1103.505371 1101.179932 1098.319458 1094.683228 1093.206787 1092.560669 1092.746582 1093.594604 1094.277222 1094.948242 1096.134888 1097.324341 1098.827393 1097.999512 1098.004272 1098.125854 1097.257935 1096.755005 1096.641602 1095.172729 1091.992676 1089.296021 1087.532593 1086.504272 -1156.509521 1155.043579 1152.839966 1149.232666 1146.059082 1146.058716 1147.002808 1147.0979 1143.52356 1138.248169 1128.231201 1116.557983 1116.687622 1117.589844 1118.658936 1120.248413 1122.135254 1124.080322 1126.10376 1128.857178 1132.302979 1134.59021 1135.723755 1135.921509 1136.657593 1139.429077 1143.237061 1146.515381 1147.644897 1148.247192 1148.622681 1148.83606 1149.066528 1149.154663 1148.980225 1148.444336 1147.475952 1146.783203 1146.424561 1145.96936 1143.761353 1142.056152 1140.787109 1140.040771 1138.887085 1137.386963 1136.585449 1136.823608 1135.224609 1133.891113 1134.11499 1134.986938 1135.975342 1137.479126 1140.057617 1142.76416 1144.762207 1145.558716 1145.993408 1146.685181 1147.429932 1148.939209 1150.577026 1150.779907 1151.536621 1151.858276 1152.450073 1153.62915 1155.200928 1157.319702 1159.2323 1159.733032 1159.699219 1158.32373 1157.597656 1158.190552 1159.060669 1159.978027 1159.832031 1158.911621 1159.144043 1160.025146 1159.906982 1160.393311 1159.645386 1159.581909 1160.028687 1160.729736 1161.310425 1161.619507 1161.569702 1161.268188 1161.065674 1161.018555 1160.260986 1160.81665 1162.52417 1165.034912 1167.735718 1169.708374 1170.563843 1172.189697 1175.231812 1177.611572 1179.30603 1180.246216 1180.374634 1180.71875 1181.714844 1182.966431 1188.203247 1192.950928 1196.39624 1204.190918 1210.560791 1218.609253 1220.729736 1219.92981 1217.572754 1216.067627 1215.324097 1214.993286 1214.399902 1213.275024 1211.020264 1208.583496 1206.57312 1205.436523 1204.546997 1203.377563 1201.979736 1200.633423 1199.343018 1198.353516 1197.728271 1197.220703 1196.845215 1195.914307 1195.153076 1194.715942 1193.943481 1192.802734 1191.554565 1190.100098 1188.783569 1187.524414 1186.34668 1185.432373 1184.470215 1183.244995 1183.632202 1184.051025 1184.418213 1184.736328 1185.14624 1185.578857 1185.931396 1186.286987 1186.584106 1186.911377 1187.227539 1187.442261 1187.735352 1188.108521 1188.336792 1188.585449 1188.851685 1189.068237 1189.369507 1189.626831 1190.065308 1190.249146 1190.298462 1190.252319 1190.180786 1189.872314 1189.704956 1189.661255 1189.707275 1189.540039 1189.486084 1189.261597 1188.941895 1188.446167 1188.060181 1187.692627 1187.518555 1187.332764 1187.127441 1186.985596 1186.654663 1186.368408 1186.241577 1186.534424 1187.108765 1187.644165 1187.944946 1188.248657 1188.524292 1188.643311 1188.464844 1188.432861 1188.413696 1188.329468 1188.295044 1188.303955 1188.325806 1188.34436 1188.160034 1187.804443 1187.309692 1186.916992 1186.578125 1186.370483 1186.182373 1185.979248 1185.697632 1185.36853 1184.972534 1184.571655 1184.025146 1183.51123 1183.010864 1182.585815 1182.4021 1182.268799 1182.172729 1182.039917 1181.892944 1181.552979 1181.410034 1181.184937 1180.905396 1180.455078 1180.049438 1179.468018 1179.108032 1178.839111 1178.609619 1178.632568 1178.387207 1178.028809 1177.52124 1176.707642 1176.102539 1175.633179 1175.151733 1174.791626 1174.370361 1173.909546 1173.40918 1172.764526 1172.283081 1171.634521 1171.348145 1171.160767 1170.943359 1170.692383 1170.318237 1169.64978 1168.554199 1167.717163 1167.862061 1169.511841 1171.813721 1174.57373 1178.005859 1181.952026 1183.71167 1184.266113 1184.711792 1185.281738 1185.992432 1187.035156 1188.421753 1190.05542 1192.11084 1194.2229 1195.11499 1194.946777 1194.668701 1195.067505 1197.787476 1200.318848 1202.822021 1206.130737 1210.957886 1217.636353 1221.790039 1228.267334 1233.471191 1233.991089 1232.758179 1230.693604 1226.681519 1228.229004 1233.576538 1238.557739 1238.746826 1234.006836 1231.814941 1230.238037 1229.856323 1231.008789 1232.760132 1233.577515 1232.670654 1229.294922 1228.119507 1223.058228 1217.485229 1215.654175 1216.278442 1219.68335 1221.1521 1220.775879 1219.059448 1214.641968 1213.262329 1213.044312 1210.175293 1205.931641 1201.552124 1196.102417 1196.21106 1191.903809 1186.443481 1184.605835 1182.376831 1176.77124 1172.296143 1169.632935 1167.025513 1164.673828 1162.812378 1161.371094 1160.404907 1159.622314 1158.438354 1157.215088 1155.467407 1153.794556 1152.122681 1150.514038 1149.213745 1148.449829 1147.89978 1147.260254 1146.279663 1144.612183 1142.499878 1140.800903 1139.327026 1138.118286 1136.89978 1135.732544 1134.327148 1132.244263 1130.420288 1132.900879 1134.191284 1135.052979 1134.635864 1136.519287 1138.513184 1140.067261 1142.105591 1144.754272 1147.619263 1149.770752 1148.625977 1143.472046 1138.019165 1133.916992 1131.296387 1128.707642 1127.470703 1126.859131 1126.318604 1134.99231 1148.747437 1159.62439 1168.177002 1170.015747 1170.019165 1170.259888 1169.931396 1170.468628 1170.151489 1162.277832 1157.65625 1156.256104 1165.888184 1176.721924 1181.170898 1186.787109 1184.938477 1180.698975 1189.04895 1197.156738 1202.256836 1207.014282 1211.671265 1209.12854 1208.165894 1219.903564 1235.338013 1234.856201 1243.746948 1248.391724 1250.239868 1255.011841 1267.564819 1273.960205 1271.666748 1278.183838 1289.2323 1295.318481 1297.88501 1299.574585 1299.684692 1301.719116 1305.921875 1306.781738 1304.251831 1302.136719 1301.196899 1299.419922 1297.321655 1295.765869 1295.099854 1293.825439 1292.599121 1291.794556 1292.637085 1294.11731 1295.055908 1295.403198 1295.07605 1293.926025 1289.704224 1276.439331 1265.368164 1262.018555 1258.12854 1250.256958 1241.664307 1235.280762 1236.085205 1230.108398 1222.407104 1213.199341 1205.231201 1198.645386 1191.401611 1183.251465 1171.609009 1169.460815 1180.329346 1187.5896 1187.540894 1184.512451 1177.719238 1171.907227 1167.471436 1163.934937 1161.501953 1159.378174 1157.343872 1152.704346 1151.925171 1152.890015 1154.271729 1155.632935 1156.89624 1157.66687 1158.212891 1158.401489 1158.776611 1160.175537 1162.28894 1165.976807 1169.344116 1171.043457 1170.964355 1171.92981 1172.999146 1175.306152 1178.290405 1179.464844 1179.648804 1178.884644 1177.636597 1175.857788 1173.847046 1171.658813 1168.305786 1163.742676 1161.441406 1160.656494 1158.991089 1148.166992 1146.650635 1158.117065 1162.785278 1162.952026 1162.016724 1157.657837 1151.557495 1145.75415 1139.796143 1135.406738 1131.337524 1132.880493 1143.133911 1154.379028 1160.204834 1161.949951 1162.485596 1162.311401 1160.865112 1155.767212 1155.966919 1159.804688 1150.553223 1144.97168 1146.575439 1148.372314 1146.790649 1148.416138 1148.476807 1146.69873 1146.652954 1146.515503 1143.739258 1143.290161 1141.55127 1139.280396 1137.48999 1138.177979 1138.527222 1137.829712 1136.672363 1134.983032 1132.85376 1132.0896 1131.227905 1130.432739 1127.536011 1123.381958 1121.652222 1121.563843 1124.154907 1127.153076 1127.255615 1126.050781 1124.27356 1122.542725 1120.811768 1118.6521 1117.417847 1116.772583 1116.815186 1117.017334 1116.059692 1115.149414 1115.778076 1117.495239 1119.76062 1123.952881 1130.72937 1137.370483 1133.906494 1131.257446 1139.107422 1146.670288 1154.873291 1163.898438 1172.673828 1173.421143 1165.886475 1157.028809 1148.96521 1138.240845 1127.617065 1117.336426 1108.703491 1106.141235 1101.664307 1097.647217 1096.131836 1096.25769 1095.176392 1095.02063 1095.829468 1096.841431 1096.818604 1097.294922 1098.880859 1099.217529 1099.099731 1098.569458 1098.243774 1098.116699 1098.287598 1098.315063 1098.038696 1095.224487 1091.327759 1088.898193 1087.495605 -1158.12085 1156.540771 1154.565918 1151.451416 1148.833008 1148.854248 1149.279907 1148.446655 1146.207153 1140.684204 1134.855957 1124.16272 1118.098022 1117.037964 1117.978638 1119.229736 1121.0354 1122.861084 1125.39624 1127.916626 1131.610474 1135.005615 1136.312256 1137.272949 1138.353271 1140.354248 1143.394531 1146.051758 1147.237061 1147.887207 1148.260376 1148.849243 1149.227661 1149.597656 1149.767334 1149.825806 1149.53186 1148.872314 1148.925659 1148.631714 1147.701904 1145.934814 1144.158203 1143.265869 1142.875366 1142.787964 1142.609985 1142.357666 1140.200562 1138.197998 1135.936279 1134.060303 1134.044434 1134.53894 1138.075562 1141.406738 1143.466553 1144.608276 1145.069702 1145.462646 1145.733521 1146.162231 1146.413086 1147.128296 1148.366577 1148.825684 1149.692139 1151.636353 1154.222412 1157.055054 1159.104004 1159.577637 1159.151367 1157.630981 1157.460083 1159.040039 1159.743652 1159.979126 1158.721436 1157.705566 1157.416382 1158.077515 1158.213379 1158.110718 1158.078369 1159.200317 1159.603882 1159.871704 1160.010376 1159.998657 1159.869385 1159.894653 1159.850464 1159.569946 1159.900269 1161.283325 1163.072021 1165.21228 1167.307617 1169.061646 1171.10498 1172.954224 1176.491577 1180.391602 1182.301392 1182.52478 1181.442017 1181.354736 1182.424072 1185.163696 1189.563599 1195.196289 1203.69519 1210.485229 1213.614868 1217.123535 1218.603027 1217.129517 1215.023926 1213.416748 1212.042969 1211.459351 1211.412842 1211.088867 1209.68811 1207.453857 1206.003906 1204.682617 1203.435669 1202.312012 1201.099487 1199.65271 1197.972412 1196.429688 1196.31543 1196.399902 1196.148682 1195.397705 1194.783203 1194.205078 1193.567383 1192.621704 1191.436523 1190.146973 1188.677979 1187.427856 1186.380249 1185.282227 1184.547729 1183.319702 1183.765259 1184.209351 1184.555298 1184.961792 1185.407349 1185.721313 1186.115234 1186.420654 1186.78064 1187.083618 1187.436646 1187.748413 1188.130981 1188.579346 1188.973633 1189.302002 1189.504639 1189.742554 1190.009888 1190.223511 1190.539429 1190.869263 1190.968506 1190.973511 1190.86438 1190.533325 1190.389771 1190.276978 1190.164429 1190.267822 1190.078857 1189.710571 1189.400391 1188.91272 1188.420044 1188.132202 1187.950684 1187.772827 1187.57373 1187.442871 1187.052368 1186.747437 1186.956543 1187.692139 1188.401367 1188.912109 1189.300049 1189.477173 1189.510742 1189.486206 1189.40332 1189.139893 1188.997314 1188.942627 1188.919678 1188.961792 1189.00415 1188.985962 1188.751099 1188.440918 1187.94043 1187.46521 1187.102783 1186.813232 1186.485596 1186.284302 1185.982788 1185.584229 1185.18457 1184.726318 1184.204956 1183.700806 1183.196289 1182.710815 1182.63501 1182.805298 1182.774658 1182.537354 1182.237549 1181.949219 1181.800903 1181.614502 1181.240601 1180.765015 1180.386353 1180.049194 1179.609131 1179.439331 1179.259888 1179.303711 1179.03125 1178.67749 1178.16394 1177.365479 1176.808228 1176.239136 1175.810181 1175.344116 1174.849976 1174.264282 1173.746704 1173.266602 1172.713867 1172.11731 1171.860107 1171.581055 1171.438477 1171.276123 1171.149658 1170.830811 1169.627319 1168.439941 1167.946533 1169.599976 1171.715576 1174.035522 1177.51123 1181.538574 1183.411987 1183.754395 1184.166992 1184.527222 1184.954102 1185.892334 1187.199585 1188.868896 1190.608521 1192.102539 1192.880371 1193.421631 1194.389893 1196.113159 1197.886597 1198.994629 1199.950562 1202.507202 1206.928589 1211.551514 1215.31665 1217.910156 1218.906128 1219.445923 1219.293091 1216.780762 1215.694092 1223.684937 1232.685791 1235.45105 1236.062012 1234.2854 1231.194336 1226.968994 1224.181274 1222.777344 1224.557129 1225.798706 1225.411133 1225.251465 1225.367188 1223.705811 1219.405273 1208.84729 1210.082764 1212.543823 1213.194458 1213.355469 1209.21106 1206.75 1207.293579 1209.553345 1203.855347 1195.718384 1197.50769 1194.626831 1189.078613 1187.243896 1184.468628 1179.875977 1177.067627 1174.100586 1171.13501 1169.240479 1166.44104 1164.087891 1162.112061 1160.982056 1160.477905 1159.976318 1159.181396 1157.668457 1155.716309 1153.901855 1152.361816 1150.921875 1149.862061 1149.088745 1148.333496 1147.681763 1146.549072 1144.5271 1142.375366 1140.539795 1139.093018 1137.851685 1136.73291 1135.449219 1134.054321 1131.957031 1130.692383 1132.703857 1135.314453 1136.414307 1136.426147 1138.376587 1140.29541 1142.16394 1143.98938 1145.449951 1148.834961 1153.212891 1153.830444 1146.631836 1140.767944 1136.15686 1133.016846 1131.365479 1130.106567 1128.376831 1126.779175 1130.997925 1141.55249 1153.803833 1167.256104 1173.459595 1174.844849 1175.525757 1175.400024 1175.973511 1173.395264 1166.835449 1161.209106 1157.66687 1160.310425 1167.021729 1168.794434 1170.56897 1172.089844 1184.444214 1194.999512 1200.676147 1207.024414 1211.557983 1218.266968 1221.179321 1216.311279 1216.94751 1235.43103 1246.193481 1246.281128 1253.605957 1258.338623 1262.866943 1268.688477 1279.209229 1282.251831 1281.403198 1292.453491 1297.012329 1300.884155 1304.346924 1304.383423 1306.497559 1308.184937 1308.528931 1304.533569 1305.676758 1304.58374 1302.205811 1300.189209 1298.494751 1297.296143 1295.845947 1294.256958 1293.279175 1292.597168 1293.677612 1295.23584 1295.458008 1295.171997 1294.501953 1292.647583 1281.85498 1276.389038 1273.991699 1268.850952 1256.908813 1242.276367 1246.75708 1244.49646 1233.552612 1225.799561 1217.149048 1206.540039 1198.660034 1186.748779 1178.528564 1169.599243 1175.898682 1189.298706 1194.727051 1193.709351 1188.58252 1181.914795 1175.477173 1170.546631 1166.959106 1164.025635 1161.493896 1159.167603 1153.876343 1152.421143 1153.500732 1154.716797 1156.416504 1157.990845 1158.973511 1159.902954 1161.00708 1160.737183 1158.947266 1159.463135 1166.238281 1169.245117 1170.397095 1170.513184 1170.182495 1175.779053 1178.422363 1179.749756 1180.490967 1180.49585 1179.713867 1178.167969 1176.104858 1173.845459 1171.535278 1167.688354 1162.505615 1159.771851 1159.088135 1155.465576 1150.417236 1159.381348 1162.174805 1162.114502 1159.230957 1154.903931 1149.10083 1145.785889 1142.116577 1138.402466 1135.296997 1131.750488 1133.670654 1144.973145 1154.697754 1160.437866 1162.140991 1163.10376 1163.175537 1161.747314 1157.959351 1159.805176 1160.400879 1156.265381 1147.665649 1147.010498 1149.942505 1150.74292 1150.459473 1149.818604 1148.931885 1148.517456 1147.999634 1147.313721 1147.7229 1147.444702 1145.440063 1142.537109 1141.167847 1140.55603 1139.480591 1137.668457 1134.733887 1134.539551 1134.500122 1133.958496 1133.121704 1130.133179 1124.435791 1121.823608 1122.093384 1127.943115 1131.573364 1130.628418 1128.398926 1126.217529 1124.276001 1122.552368 1120.64978 1119.324463 1119.024902 1120.657715 1122.328491 1119.151611 1117.597046 1117.645386 1118.551514 1120.353516 1123.662598 1130.722534 1141.336304 1147.35376 1136.269165 1139.453979 1145.511108 1152.81543 1161.459839 1171.395874 1177.105347 1173.719971 1162.14978 1149.870239 1139.94751 1130.34436 1122.543945 1115.189819 1110.158569 1104.250977 1097.631592 1097.419067 1098.587646 1096.917358 1096.299927 1096.842773 1097.955933 1099.952271 1099.033813 1099.89624 1099.963013 1099.686523 1099.129395 1098.517212 1097.641846 1097.393188 1097.542358 1097.443848 1095.478027 1092.002441 1089.803223 1088.204224 -1158.519897 1157.885498 1156.560913 1154.596924 1152.41748 1151.342285 1150.578857 1149.084106 1146.86145 1141.249023 1135.60498 1129.438232 1124.282104 1122.483521 1120.489624 1118.890137 1118.891602 1120.78418 1122.572266 1124.570435 1128.746338 1133.014404 1135.62793 1136.778931 1138.30896 1140.42334 1142.548462 1144.230347 1145.719849 1146.618042 1146.929077 1147.891602 1149.029175 1149.718506 1150.328857 1150.753418 1150.882568 1150.874756 1151.007812 1151.070312 1151.052856 1150.374146 1148.040649 1146.490967 1146.634033 1148.487061 1150.146362 1149.643799 1146.0177 1143.410278 1140.068115 1136.747803 1134.886108 1135.133667 1138.005249 1140.720703 1142.546143 1143.7677 1144.345459 1144.708252 1145.034058 1145.353394 1145.443115 1145.757568 1146.144653 1146.31897 1147.384277 1150.046753 1152.303955 1155.313721 1158.470215 1159.088989 1158.038574 1156.253662 1157.570068 1159.330566 1159.574829 1158.834229 1157.353027 1156.376587 1156.240967 1156.510132 1156.668823 1156.588257 1156.795044 1158.404297 1158.65625 1158.765015 1158.763428 1158.572632 1158.450562 1158.57019 1158.747803 1158.71814 1159.151367 1161.267944 1163.419312 1165.457031 1167.404053 1169.029297 1171.478271 1173.908569 1177.506958 1182.131714 1186.602417 1192.953613 1185.537598 1182.677612 1184.306885 1189.181396 1192.071899 1194.75769 1207.731934 1212.261597 1213.748169 1214.925659 1215.333252 1214.013672 1212.132446 1210.63269 1209.025391 1208.641968 1208.514404 1208.259155 1207.407349 1206.146118 1204.721924 1203.517822 1202.344482 1201.144409 1200.050781 1198.694702 1196.96936 1195.362061 1195.231445 1195.293335 1195.438354 1195.050781 1194.53772 1193.923584 1193.185547 1192.399658 1191.281128 1190.054077 1188.684692 1187.39624 1186.334839 1185.372803 1184.536621 1183.606201 1184.067261 1184.471313 1184.809814 1185.125854 1185.586304 1185.953125 1186.312378 1186.677979 1187.026123 1187.323364 1187.733276 1188.158569 1188.600464 1189.078735 1189.533081 1189.886475 1190.197998 1190.474243 1190.654785 1190.884277 1191.142212 1191.480835 1191.660278 1191.664673 1191.516235 1191.226929 1191.065186 1190.945068 1190.896973 1190.825317 1190.638672 1190.31604 1189.802246 1189.313965 1188.910034 1188.560669 1188.293823 1188.171509 1188.026245 1187.862671 1187.63208 1187.91333 1188.684448 1189.583008 1190.190918 1190.614746 1190.716309 1190.621704 1190.53064 1190.34375 1190.227051 1189.849121 1189.689575 1189.60791 1189.537964 1189.658813 1189.760864 1189.761841 1189.545288 1189.080566 1188.62915 1188.146362 1187.727417 1187.421021 1187.034668 1186.707275 1186.335327 1185.831299 1185.371704 1184.894653 1184.283569 1183.731934 1183.227051 1182.852417 1183.091797 1183.366455 1183.238892 1182.905151 1182.626953 1182.391968 1182.225342 1182.012695 1181.586792 1181.161255 1180.860596 1180.592407 1180.219238 1180.039917 1179.897949 1179.918091 1179.734985 1179.436279 1178.938843 1178.17749 1177.535278 1177.025024 1176.402466 1175.782593 1175.179443 1174.578735 1174.13501 1173.624023 1173.082642 1172.537964 1172.250488 1171.963623 1171.780884 1171.641479 1171.534058 1171.278442 1170.942261 1169.084473 1168.346924 1169.30127 1170.822266 1173.118042 1176.437988 1179.517578 1181.643555 1182.374512 1182.783813 1183.343018 1183.688477 1184.640137 1186.007935 1187.382568 1188.764893 1189.997437 1191.338989 1192.928223 1195.18811 1196.317505 1196.898071 1196.889771 1195.74707 1196.167603 1200.605347 1204.41748 1206.036743 1206.81189 1207.591797 1208.390503 1208.355469 1204.734741 1205.809692 1216.528809 1227.999512 1233.611572 1234.732788 1234.514282 1233.37085 1227.833618 1218.77771 1217.046997 1217.934448 1218.519409 1217.826904 1221.719238 1223.334106 1223.248169 1221.381592 1213.832153 1206.433472 1206.190674 1205.515991 1207.298828 1200.075806 1200.981201 1208.555664 1207.216675 1199.140381 1192.501343 1191.361084 1188.85144 1183.242798 1181.574707 1181.341553 1174.297852 1171.885132 1170.080688 1169.088867 1167.373535 1165.266235 1163.046387 1160.84729 1159.437134 1159.267456 1159.033691 1158.347168 1157.210938 1155.363281 1153.71106 1152.22229 1151.084961 1150.027588 1149.185669 1148.240601 1147.097778 1145.788452 1143.79834 1141.509399 1139.672363 1138.300049 1137.383667 1136.30127 1134.907104 1132.409546 1133.437012 1132.392212 1134.78418 1136.598267 1138.036011 1139.411255 1140.843872 1142.243164 1143.584473 1146.033691 1147.792847 1151.147095 1157.309448 1160.284302 1149.317871 1143.403198 1139.302856 1135.136108 1134.523193 1133.391602 1130.883667 1128.693481 1127.122559 1135.408447 1147.833984 1159.640381 1170.180054 1176.523193 1182.189209 1182.75415 1181.171631 1177.474976 1171.489868 1166.319336 1161.015625 1163.084717 1165.990967 1168.767578 1173.436035 1181.168823 1189.531128 1197.934204 1203.340942 1210.036499 1216.075195 1221.769409 1227.792236 1229.000854 1221.111938 1227.546997 1244.03125 1249.554565 1257.543457 1265.177612 1271.955933 1276.523071 1286.014771 1291.859863 1287.907715 1291.827271 1296.501587 1302.454834 1307.277588 1309.936035 1311.378296 1312.51355 1311.585938 1309.091553 1308.698364 1307.406738 1304.614136 1302.66333 1300.934814 1299.562622 1298.067017 1296.444092 1295.220703 1293.747314 1294.041992 1295.559082 1295.69751 1294.984497 1294.224365 1293.797852 1292.4823 1285.961792 1280.398315 1272.05603 1257.251465 1253.167114 1253.882202 1245.049805 1237.678223 1229.842529 1221.362793 1209.851318 1196.656006 1185.128296 1184.532959 1170.890259 1182.599731 1196.945435 1204.231567 1200.329224 1192.752563 1184.766357 1178.582886 1172.968262 1169.182373 1166.219971 1163.51709 1160.846558 1155.245972 1153.439087 1153.681763 1155.30542 1156.820557 1158.667358 1160.940552 1163.163452 1166.263916 1168.268555 1168.609863 1166.873169 1168.285156 1170.982666 1173.408203 1177.236328 1180.388428 1182.306396 1182.330444 1181.829224 1181.786987 1181.943848 1181.088745 1179.265625 1176.68335 1173.712769 1170.456787 1168.718628 1162.360962 1158.681152 1157.605591 1156.633057 1159.40332 1161.843994 1160.841797 1156.388672 1146.373413 1144.524414 1144.632324 1143.794922 1140.413818 1134.61853 1133.397705 1132.411499 1135.870728 1143.579346 1150.774414 1159.184448 1162.38501 1164.205933 1164.896484 1163.756348 1160.895264 1161.9375 1161.785889 1160.150635 1152.918701 1149.24646 1152.528809 1153.324341 1152.863525 1152.27356 1151.428711 1150.602051 1149.930298 1149.137573 1148.801514 1148.089478 1146.718018 1144.206543 1143.330444 1142.586792 1141.049194 1139.285645 1137.687866 1136.698242 1136.140259 1135.761963 1135.280273 1134.148926 1126.413696 1121.764526 1122.549316 1133.311646 1134.958374 1133.432129 1131.056396 1128.116943 1125.782593 1123.956787 1122.50354 1120.961182 1120.423096 1120.748047 1122.302734 1121.801025 1119.480713 1119.184448 1119.594116 1121.252686 1125.388306 1131.812866 1137.912476 1138.342773 1133.51355 1136.747803 1139.928101 1146.584717 1157.569702 1170.456787 1181.046875 1181.140015 1165.863037 1153.684448 1143.831177 1136.951172 1129.351685 1122.030273 1115.153687 1109.0896 1100.438232 1097.608643 1099.694946 1099.071777 1099.874878 1099.993408 1100.345947 1105.114746 1103.202881 1101.565918 1100.741455 1100.117798 1099.497437 1098.955078 1098.057861 1096.920776 1096.058105 1095.559937 1094.01062 1091.87439 1090.129028 1088.93103 -1160.943604 1160.606689 1159.173584 1157.333618 1154.973877 1153.122803 1151.409302 1149.406982 1146.670288 1140.16333 1134.750977 1130.962402 1127.199097 1125.5448 1124.421143 1123.701172 1122.279175 1121.673584 1121.008667 1120.85376 1123.58374 1128.281494 1132.88208 1135.18396 1137.078369 1139.869751 1142.553101 1144.057617 1144.877075 1145.527466 1146.354858 1146.515015 1147.49353 1149.396973 1150.82373 1151.639771 1152.195068 1152.601196 1153.176758 1153.947021 1154.909058 1155.763184 1156.333252 1158.511108 1160.883179 1162.291626 1163.540771 1163.879272 1158.942871 1149.024658 1144.378296 1140.138062 1138.067871 1137.992554 1139.206787 1140.856323 1142.212769 1143.063599 1143.708008 1144.083618 1144.318481 1144.634155 1144.866699 1144.973389 1145.27124 1145.455811 1147.008301 1148.302246 1149.694702 1151.85498 1155.228638 1156.148071 1154.702026 1153.261841 1155.918823 1158.686279 1157.33313 1153.444946 1152.900269 1153.851318 1154.538818 1154.836304 1155.083618 1155.225098 1154.966553 1155.655762 1155.980835 1156.483398 1156.947632 1157.479492 1158.491943 1158.768677 1158.884277 1158.997314 1159.770996 1161.577026 1163.842773 1166.304199 1168.342407 1169.805298 1170.483276 1172.904785 1177.401733 1181.494385 1186.252563 1196.100098 1192.099365 1188.96228 1190.292603 1194.233887 1199.670654 1207.39563 1210.966553 1212.317383 1212.889771 1213.028809 1212.567261 1211.097778 1209.3396 1208.500732 1206.926392 1206.593018 1206.692749 1206.524414 1205.886108 1204.783203 1203.648193 1202.573242 1201.385742 1200.294434 1199.162109 1198.041016 1197.07605 1196.070679 1195.125732 1194.75 1194.524536 1194.229248 1193.932739 1193.451904 1192.878052 1192.133911 1191.202393 1190.063232 1188.757446 1187.494751 1186.506958 1185.585571 1184.796387 1184.005005 1184.335938 1184.796875 1185.112793 1185.420288 1185.823242 1186.218506 1186.553467 1186.912476 1187.255249 1187.700439 1188.114502 1188.685791 1189.143921 1189.641113 1190.05542 1190.486206 1190.799316 1191.113525 1191.37854 1191.568604 1191.820068 1192.137451 1192.202515 1192.303833 1192.114258 1192.016968 1191.784058 1191.637695 1191.510498 1191.392578 1191.19873 1190.859741 1190.324585 1189.815552 1189.338257 1189.031982 1188.741577 1188.578003 1188.515381 1188.704956 1189.119141 1189.964844 1191.151733 1192.170166 1192.460083 1192.247437 1192.075317 1191.810913 1191.583374 1191.235596 1190.865723 1190.637695 1190.379395 1190.302368 1190.264404 1190.340088 1190.481201 1190.490479 1190.369507 1189.991821 1189.42749 1188.958496 1188.539917 1188.08606 1187.747925 1187.317627 1186.819946 1186.31665 1185.861572 1185.180054 1184.651001 1183.876831 1183.337402 1183.097656 1183.5354 1183.831299 1183.708618 1183.267334 1183.003906 1182.802002 1182.631836 1182.393921 1182.031616 1181.564819 1181.2677 1181.023315 1180.892822 1180.644775 1180.539795 1180.530762 1180.449585 1180.182983 1179.634277 1178.997803 1178.343628 1177.64209 1176.962402 1176.210815 1175.540161 1174.871582 1174.371094 1173.93689 1173.446777 1172.876587 1172.445557 1172.059814 1171.815186 1171.63562 1171.561279 1171.447144 1171.063232 1169.066772 1169.040039 1169.620239 1170.945557 1173.062378 1175.318848 1177.445068 1179.278564 1180.211304 1180.857666 1181.607666 1182.177612 1183.046753 1184.141968 1185.444214 1186.697876 1188.017212 1189.426636 1191.446655 1193.802368 1194.410278 1194.394897 1193.545776 1192.849609 1193.069946 1194.493408 1197.105347 1198.89563 1200.212769 1200.917603 1200.824951 1199.751099 1197.551514 1205.338745 1212.412476 1217.505859 1225.846191 1232.577515 1233.749023 1233.588379 1231.470093 1223.94519 1218.570435 1214.293213 1207.454468 1211.227173 1218.984985 1222.123413 1222.473877 1222.017822 1218.48645 1209.412476 1196.439941 1198.442871 1198.908447 1194.055908 1200.378906 1206.773315 1202.18457 1194.725464 1186.089478 1185.086182 1184.926147 1185.275391 1180.842773 1176.113403 1171.785522 1169.756226 1168.538452 1167.054199 1165.477783 1163.776611 1161.991699 1160.154419 1158.596802 1158.011719 1157.678711 1157.206665 1156.249634 1154.991089 1153.509766 1152.115845 1150.937012 1149.890015 1148.832275 1147.777954 1146.645752 1145.069336 1142.92334 1140.362549 1138.212891 1136.85144 1136.279419 1135.778564 1134.2771 1134.364136 1134.637817 1134.194092 1136.2052 1137.824463 1139.718384 1141.552002 1143.36145 1144.858887 1145.338013 1146.22522 1150.561768 1154.670044 1158.900879 1160.052368 1153.949707 1147.504639 1143.678589 1140.146729 1138.814453 1136.76062 1133.504639 1131.578003 1127.971191 1130.648682 1140.72229 1153.229858 1163.156738 1171.470581 1185.894165 1186.412842 1185.858154 1183.293945 1177.479614 1172.022949 1167.479248 1166.896118 1168.999268 1171.36731 1170.20459 1180.148193 1187.338257 1193.591675 1202.030151 1208.0802 1215.527588 1220.790649 1229.911865 1234.01062 1235.355469 1231.670898 1236.006348 1247.280518 1256.929321 1266.558472 1274.655273 1281.49353 1288.633789 1287.126709 1285.5271 1289.347168 1292.545044 1302.850586 1309.26062 1315.050293 1317.188721 1316.990601 1315.94397 1313.714722 1312.505981 1310.35791 1307.108521 1304.404785 1302.824341 1301.68335 1300.396362 1298.765259 1297.449219 1296.567017 1296.572998 1296.109253 1294.650757 1292.679077 1293.257324 1293.458862 1293.277588 1286.657104 1279.526733 1267.661133 1262.21521 1263.739624 1256.481201 1248.966797 1240.190674 1230.725098 1221.803345 1209.550781 1202.655151 1197.684204 1188.61853 1179.593384 1186.748535 1199.641846 1210.651611 1208.213623 1197.023071 1188.360474 1181.371582 1176.05249 1171.590576 1168.491089 1165.513428 1162.555542 1156.748291 1153.794067 1154.355957 1155.228882 1156.734619 1158.162964 1161.980591 1166.745605 1170.850708 1173.668213 1175.051392 1173.755615 1170.258911 1172.927612 1179.477295 1185.104492 1187.246338 1186.78186 1185.946655 1184.892944 1184.391357 1183.933594 1182.748047 1180.56543 1177.557617 1173.045654 1171.246704 1171.187744 1171.233276 1168.1604 1162.415405 1160.431152 1163.139648 1162.708374 1159.635864 1152.217651 1145.940674 1144.691528 1145.673706 1146.10144 1143.080933 1137.744995 1135.199219 1133.03833 1134.877686 1141.594238 1145.112915 1154.824585 1161.400146 1166.070557 1167.673584 1166.928467 1165.283447 1164.139404 1163.012329 1160.954956 1158.9104 1156.773926 1155.898438 1156.078735 1155.632935 1154.789185 1153.731323 1152.696777 1151.727661 1150.653442 1149.540649 1147.795044 1146.166138 1145.265137 1144.691772 1144.560425 1143.019653 1140.667969 1138.489868 1137.063477 1136.356567 1135.91626 1135.196045 1135.343994 1125.83728 1121.770264 1124.126099 1132.966309 1135.762817 1135.046997 1132.860962 1129.964355 1127.328613 1125.298462 1123.417725 1122.837402 1122.099609 1122.110962 1122.148315 1122.267822 1121.187012 1120.290649 1120.615479 1122.070068 1125.339111 1129.717773 1133.434204 1132.34021 1131.349609 1132.420044 1136.904297 1149.598511 1161.094727 1172.940308 1183.89624 1181.184692 1166.756592 1154.697998 1144.428467 1136.040649 1129.796997 1123.131226 1116.877197 1110.86792 1104.662598 1099.064453 1101.748291 1105.66272 1111.430542 1112.18689 1111.665405 1109.470337 1105.082764 1102.499512 1100.911499 1100.20874 1099.50061 1099.035156 1098.361816 1097.110352 1095.25647 1094.074341 1092.736328 1091.39917 1090.081665 1089.159302 -1165.053589 1163.022217 1161.110352 1158.6073 1156.19751 1154.238647 1151.626709 1148.548706 1144.722656 1136.555786 1133.088013 1131.071045 1129.198486 1128.006592 1126.938599 1125.866821 1125.038086 1124.337769 1123.89624 1122.823242 1120.89624 1123.517944 1128.555908 1133.113281 1135.93103 1139.043335 1143.650269 1146.28186 1146.293579 1146.379028 1147.230957 1147.053345 1146.513306 1149.07666 1151.351562 1152.52417 1153.32373 1154.003296 1154.921997 1156.240967 1157.65918 1159.368164 1160.791504 1162.359253 1164.474854 1167.598022 1171.352173 1173.371216 1168.318115 1156.164673 1147.821655 1144.164917 1141.375977 1140.319214 1140.406982 1141.18457 1142.062012 1142.706421 1143.15564 1143.488037 1143.88501 1144.233521 1144.466675 1144.659912 1144.768677 1145.145142 1145.551636 1146.035522 1147.012207 1148.287964 1149.670288 1150.78894 1149.45813 1149.333984 1149.572388 1149.559204 1150.634033 1151.631958 1152.069702 1152.056152 1152.590454 1153.134644 1153.641968 1154.715332 1156.629761 1157.178345 1157.061768 1156.991821 1156.956909 1158.997437 1159.58313 1159.41272 1159.5354 1159.786987 1160.556274 1161.906128 1164.246704 1167.241943 1170.394043 1171.420776 1172.327515 1174.004517 1177.920166 1180.677856 1181.994751 1187.986084 1193.66626 1197.253662 1198.328247 1205.339111 1210.336182 1210.459961 1211.365967 1211.695068 1211.950806 1211.6521 1210.637939 1208.35083 1207.453369 1206.933594 1206.151001 1205.696777 1205.2771 1205.109985 1204.499756 1203.565796 1202.572266 1201.591675 1200.543579 1199.349854 1198.39563 1197.570435 1196.844971 1196.1875 1195.266846 1194.522461 1194.078735 1193.768555 1193.409668 1193.127808 1192.567993 1191.915283 1191.021362 1189.971191 1188.764404 1187.662598 1186.733765 1185.933105 1185.192993 1184.463623 1184.67395 1184.969482 1185.426025 1185.72583 1186.109985 1186.431519 1186.756714 1187.117065 1187.544922 1188.040771 1188.648315 1189.132202 1189.570068 1190.175659 1190.540771 1190.967041 1191.37854 1191.700684 1192.008911 1192.291504 1192.531128 1192.687744 1192.891846 1192.896851 1192.844849 1192.605835 1192.573608 1192.443481 1192.283325 1192.090576 1191.810547 1191.484497 1190.869263 1190.339844 1189.823486 1189.459229 1189.226196 1189.15918 1188.903687 1189.612671 1190.988892 1192.686768 1194.060913 1194.592651 1194.498901 1193.886597 1193.199585 1192.800659 1192.365479 1191.878906 1191.579102 1191.260376 1191.068359 1191.062012 1191.03186 1191.119629 1191.276489 1191.235229 1191.161865 1190.852905 1190.46936 1189.891724 1189.437988 1188.997681 1188.590332 1188.109009 1187.522949 1186.995117 1186.354614 1185.706177 1185.10376 1184.477173 1183.624268 1183.521973 1184.192627 1184.296021 1184.108154 1183.79541 1183.49353 1183.281494 1183.115234 1182.850464 1182.457397 1182.034546 1181.727905 1181.519531 1181.286987 1181.297119 1181.286011 1181.234497 1181.213623 1180.93396 1180.491333 1179.815063 1179.042847 1178.238892 1177.446411 1176.577393 1175.873657 1175.307739 1174.758179 1174.326294 1173.767944 1173.161987 1172.689087 1172.208252 1171.683105 1171.183105 1171.208984 1171.376221 1170.42627 1169.462402 1170.078613 1170.798462 1170.803345 1172.575439 1174.15979 1175.735962 1177.03064 1178.153809 1179.033325 1179.725464 1180.56958 1181.600342 1182.599609 1183.604858 1184.655273 1186.087646 1187.633057 1188.970337 1189.640503 1189.306274 1188.81897 1189.10022 1189.451172 1190.190186 1191.443604 1192.914185 1193.859619 1194.798462 1195.304321 1194.977051 1193.678101 1194.268311 1206.251831 1210.461182 1212.946533 1216.329102 1221.878296 1230.012695 1234.057617 1232.994385 1228.551514 1221.670166 1215.241821 1210.570801 1207.116455 1212.016113 1220.264771 1219.674805 1220.37207 1217.614868 1210.052856 1199.245361 1194.85144 1193.612549 1192.284424 1197.282227 1197.253296 1193.610718 1189.83313 1184.799927 1180.884521 1180.733154 1181.901245 1177.348755 1173.407227 1170.744141 1169.316406 1167.766846 1165.850952 1163.95813 1162.25647 1161.258667 1160.233765 1158.605835 1157.467285 1156.796021 1156.192017 1155.348267 1154.365479 1153.262329 1151.91626 1150.659546 1149.654663 1148.514038 1147.332764 1145.896362 1144.08728 1141.800415 1139.203735 1136.270264 1134.561768 1134.378052 1134.866699 1133.206299 1134.98291 1134.609741 1135.042236 1137.511597 1139.528564 1141.415161 1143.105957 1145.603271 1147.430054 1148.134888 1149.073608 1152.932861 1157.705688 1159.859863 1159.920044 1158.821899 1153.208496 1146.358521 1143.951416 1144.738281 1142.546875 1138.496948 1135.106812 1131.422852 1129.664185 1139.109009 1147.805176 1156.910156 1166.186401 1178.022949 1185.156006 1190.786377 1189.697144 1183.368652 1178.635132 1171.630493 1169.318481 1171.031616 1175.287842 1181.429932 1183.281006 1183.329224 1193.611694 1202.5354 1210.310669 1218.145752 1222.971924 1231.702026 1231.401855 1242.220703 1245.598267 1243.829834 1243.070679 1253.652222 1263.934082 1271.515137 1276.870972 1278.786987 1278.748657 1279.809937 1291.142578 1298.291016 1305.187378 1312.252197 1318.361206 1321.616089 1321.766724 1319.855957 1317.976685 1316.405762 1314.148804 1311.671631 1308.049438 1304.929321 1303.855225 1302.628174 1301.030151 1300.059448 1299.190918 1298.362549 1296.636475 1293.734619 1291.704956 1291.489868 1292.006348 1287.551147 1281.431152 1279.038208 1280.141968 1275.480347 1270.054688 1260.937012 1249.703857 1241.31897 1235.154907 1229.053833 1221.911377 1213.004761 1202.815063 1189.687988 1181.531494 1187.147583 1202.010742 1211.197632 1210.391113 1201.515503 1192.397827 1184.12854 1178.921753 1174.370728 1170.584473 1167.363403 1164.09021 1158.283447 1155.481934 1154.625366 1155.142578 1156.937988 1158.773438 1163.119873 1168.369995 1172.79248 1177.408813 1180.681519 1180.417725 1175.732666 1172.911255 1182.940918 1188.392578 1191.638184 1191.667847 1190.627686 1188.946777 1187.458008 1186.312012 1184.49646 1182.741333 1179.349121 1174.259521 1171.201172 1170.848999 1170.770508 1169.685181 1169.361206 1168.270386 1166.201782 1162.800903 1159.293579 1148.333496 1145.307495 1146.504761 1149.108887 1149.11853 1147.555542 1143.016724 1137.754883 1133.749268 1138.389282 1142.355469 1147.144897 1154.490112 1161.338379 1169.411743 1170.255981 1169.513794 1167.759033 1166.139771 1164.221313 1162.055298 1160.087402 1158.168091 1158.532227 1159.153564 1158.261719 1157.04248 1155.831543 1154.739502 1153.534668 1152.230713 1150.725464 1148.606812 1147.529297 1147.488037 1146.371704 1146.861816 1144.993408 1140.745728 1137.819336 1136.487305 1135.789673 1134.247192 1131.617188 1128.270752 1121.979858 1124.101562 1132.037842 1135.077271 1135.504517 1135.075928 1133.344604 1130.734131 1128.536011 1126.506104 1125.287231 1124.452881 1123.953125 1123.446289 1122.386963 1122.268677 1122.288818 1121.262329 1121.281494 1122.908813 1125.036133 1125.397095 1123.307373 1127.877441 1130.18103 1132.032471 1136.632812 1149.855469 1161.376953 1173.896729 1185.312256 1178.208618 1163.090088 1150.349609 1140.497559 1132.471924 1127.540161 1122.218018 1117.364502 1112.917358 1109.676392 1105.634521 1104.341797 1106.039673 1110.380371 1110.127563 1108.721069 1107.159302 1104.107422 1101.810181 1100.523438 1099.558472 1098.478638 1098.366821 1097.371948 1096.106445 1094.391846 1093.022095 1091.958252 1090.857544 1089.844727 1089.017212 -1168.127075 1165.134644 1162.595215 1159.65979 1157.001831 1155.620117 1152.253174 1146.587158 1143.251709 1135.555908 1133.078003 1131.572388 1130.889893 1130.45813 1129.674072 1128.695801 1127.373657 1126.249023 1125.377563 1124.171143 1122.836914 1121.449707 1123.44751 1129.04248 1134.225586 1136.975098 1143.084839 1147.077515 1147.145142 1147.496582 1147.905151 1148.482788 1149.28125 1150.696899 1152.180786 1153.282593 1154.182251 1155.126099 1156.081543 1157.461792 1158.900513 1160.762207 1162.104614 1163.79895 1166.235107 1169.396118 1171.721069 1173.566162 1168.887329 1155.574585 1148.480103 1146.016479 1143.306152 1141.760376 1141.283203 1141.435913 1141.895508 1142.344482 1142.816162 1143.167358 1143.440308 1143.730103 1144.103394 1144.390381 1144.950806 1145.622192 1146.386719 1146.934448 1146.987671 1146.818726 1147.191406 1147.894897 1148.345215 1149.611938 1150.318848 1151.152832 1152.375488 1153.694946 1154.729126 1154.797607 1154.791138 1155.294312 1156.088135 1158.034424 1160.165161 1160.206421 1159.794434 1158.896973 1157.579224 1157.922119 1159.200439 1159.276733 1159.608276 1159.96167 1160.578979 1161.793091 1164.023804 1167.287476 1170.69397 1172.164551 1173.468872 1175.696045 1178.758423 1181.951782 1184.735107 1191.711792 1200.006226 1207.963135 1209.788574 1209.276367 1209.332642 1208.689087 1210.120239 1210.76709 1210.964111 1210.63916 1209.565918 1207.407349 1206.860474 1206.366821 1205.679443 1205.07666 1204.530518 1203.960449 1203.359741 1202.473267 1201.620605 1200.640625 1199.629272 1198.713745 1197.672119 1196.712036 1196.035889 1195.371338 1195.033325 1194.456543 1193.895386 1193.422974 1193.055664 1192.576294 1192.34021 1191.681641 1190.879272 1189.931885 1188.866821 1187.862915 1186.979736 1186.297974 1185.741943 1184.928101 1185.022339 1185.22998 1185.575195 1185.928833 1186.249878 1186.641235 1187.03186 1187.496216 1187.936157 1188.497803 1189.029053 1189.68396 1190.138916 1190.61438 1190.968262 1191.352173 1191.760986 1192.217651 1192.610474 1192.868164 1193.104614 1193.342407 1193.442627 1193.508911 1193.43103 1193.358643 1193.260742 1193.196289 1193.093628 1192.845337 1192.48877 1192.048706 1191.608521 1190.954224 1190.393555 1190.013428 1189.749878 1189.564453 1189.607178 1190.880615 1193.05481 1195.038696 1195.678711 1195.683594 1195.420288 1194.886597 1194.292725 1193.615601 1193.034546 1192.674927 1192.213623 1192.005859 1191.875977 1191.86145 1191.895752 1191.977783 1192.037842 1192.092041 1191.923096 1191.69165 1191.317017 1190.802979 1190.33728 1189.856689 1189.375977 1188.750977 1188.084961 1187.564087 1186.906494 1186.266113 1185.724609 1185.220947 1184.88562 1184.630615 1184.747559 1184.734863 1184.68335 1184.368652 1184.079346 1183.874023 1183.623779 1183.364014 1182.938965 1182.528076 1182.184814 1181.938721 1181.774414 1181.747314 1181.925781 1182.04187 1182.064697 1181.856201 1181.332642 1180.53479 1179.691406 1178.702881 1177.783813 1177.090576 1176.269897 1175.70813 1175.126587 1174.626099 1174.123657 1173.607544 1173.088135 1172.494751 1171.853271 1171.08606 1170.911499 1170.879517 1171.211426 1170.841797 1170.914429 1170.968262 1171.147217 1171.130737 1172.564331 1173.887817 1175.220703 1176.275879 1177.065186 1177.999512 1179.104736 1180.200317 1181.37793 1182.553101 1183.347656 1184.709106 1186.044434 1186.45105 1185.951172 1183.49292 1183.352539 1184.033081 1185.239868 1187.221802 1188.599243 1189.836182 1190.806519 1191.557373 1191.956665 1192.005005 1191.852295 1194.000488 1198.376099 1205.266846 1207.857544 1211.85791 1215.344727 1221.437866 1229.738525 1232.535156 1231.388428 1225.507446 1218.579102 1213.982788 1208.589966 1204.056274 1205.029419 1207.248901 1210.701416 1212.028198 1208.665039 1201.891968 1196.241943 1188.053223 1183.783447 1189.07312 1188.836548 1187.240723 1185.867432 1183.404297 1179.364136 1176.966919 1172.595459 1171.483276 1170.828735 1169.797119 1168.484619 1166.849243 1164.940674 1162.4823 1160.464478 1159.816528 1159.179443 1158.154419 1157.098877 1156.254028 1155.516235 1154.713623 1153.947632 1152.840942 1151.616089 1150.389526 1149.201782 1148.230835 1147.086182 1145.318726 1142.993286 1140.724487 1138.161255 1135.108887 1134.55542 1134.787598 1134.70813 1135.037964 1135.634644 1134.583252 1135.446411 1138.525146 1141.315918 1143.768921 1144.645874 1146.187256 1148.508423 1150.385742 1152.492432 1155.348267 1158.083618 1160.734497 1161.456787 1161.430176 1159.9375 1151.421875 1149.197388 1150.324341 1148.207764 1144.583496 1140.644043 1136.529785 1129.804565 1134.917114 1147.239258 1153.390381 1158.401489 1169.455322 1178.573853 1190.706299 1197.594116 1192.53479 1185.188232 1174.808594 1169.815063 1173.170288 1177.511353 1184.067017 1190.23291 1196.608154 1196.109009 1197.78125 1209.955078 1218.478271 1226.455933 1234.229126 1239.770142 1243.039673 1247.692993 1250.103149 1254.797485 1256.400146 1257.072754 1266.687012 1267.766602 1267.42981 1275.130737 1281.955444 1292.194458 1301.822632 1310.109375 1317.367798 1322.192871 1326.055786 1327.228271 1326.06958 1324.11853 1321.567383 1319.028931 1317.403809 1315.744385 1311.439087 1307.811279 1304.905029 1303.393799 1302.121826 1301.406494 1300.478271 1298.11853 1294.772827 1292.505981 1291.150635 1289.365356 1286.446289 1282.794434 1286.209839 1286.652832 1281.36145 1273.082642 1264.908325 1253.766357 1250.252808 1244.13916 1233.981445 1224.756958 1214.992554 1204.078247 1196.890015 1191.133911 1186.745728 1204.212769 1218.201172 1214.134766 1205.473267 1195.583374 1187.038696 1181.114258 1176.635864 1172.685181 1169.172363 1165.588867 1159.321777 1157.254639 1155.803223 1155.254272 1157.592896 1160.536743 1164.800049 1169.031616 1174.652588 1181.134644 1185.122803 1186.312134 1184.163208 1180.208862 1183.763184 1191.581055 1196.095337 1196.379639 1195.678589 1193.307617 1190.560303 1188.453735 1186.649292 1184.756714 1181.307617 1177.376343 1172.172241 1171.907349 1172.715576 1172.89624 1172.664307 1171.923096 1166.766479 1161.11499 1146.510864 1147.197632 1148.550903 1150.668701 1153.596313 1152.641968 1149.759399 1145.762207 1141.744751 1136.429932 1143.216797 1147.047852 1145.770142 1153.462524 1161.544312 1171.197998 1171.959961 1171.244019 1169.633057 1167.80542 1165.477783 1162.795288 1160.198853 1158.346436 1160.143921 1160.685303 1159.88501 1158.875488 1157.671021 1156.548096 1155.331787 1153.752197 1152.169312 1150.735107 1149.591309 1148.862305 1148.240723 1147.476685 1143.057861 1137.174561 1134.248779 1134.263916 1134.224487 1133.154419 1130.616455 1125.2854 1123.570557 1131.506104 1136.025635 1135.919434 1135.109741 1134.268433 1132.582886 1130.857056 1129.01001 1127.525146 1126.306763 1125.41626 1124.770386 1124.110596 1122.853638 1122.226929 1122.311646 1121.977295 1121.752075 1123.191528 1123.939697 1122.446045 1122.135864 1127.283447 1131.66687 1133.853271 1138.981567 1148.27832 1159.280518 1172.149292 1180.429199 1172.532593 1159.813354 1145.006348 1138.312866 1131.834717 1125.42749 1120.322632 1116.540894 1113.132202 1110.449585 1108.134277 1105.085449 1103.951416 1104.686646 1104.567139 1103.261597 1102.435303 1101.247192 1100.020386 1099.224976 1098.497314 1097.184082 1096.677002 1095.984253 1094.531616 1093.268921 1092.079346 1090.976929 1090.2229 1089.385986 1088.495972 -1169.708984 1166.878296 1164.292603 1161.202637 1159.320923 1158.422485 1155.740967 1151.416382 1147.222534 1138.455322 1133.681274 1132.124023 1132.256104 1133.610107 1132.855347 1131.255005 1129.614258 1128.07605 1126.877563 1125.593262 1124.288818 1123.001343 1122.17688 1123.448242 1127.839111 1132.492065 1135.973267 1141.967285 1146.368042 1147.322388 1148.107056 1149.100098 1149.994507 1151.344482 1152.677002 1153.930054 1155.048584 1155.854614 1156.599487 1157.436279 1158.821411 1160.479858 1162.182007 1163.934692 1165.69043 1168.088379 1168.891968 1168.63501 1160.692871 1152.229248 1146.919067 1145.153931 1143.173828 1141.889771 1141.370483 1141.267822 1141.470825 1141.93457 1142.379028 1142.896484 1143.217773 1143.540283 1143.931763 1144.671021 1145.393677 1146.337158 1147.920654 1149.117676 1149.519775 1149.355957 1148.953369 1149.187378 1149.787109 1150.826782 1151.823486 1152.966309 1154.646973 1156.930298 1158.830444 1158.892334 1158.865479 1159.050049 1159.425415 1160.012695 1161.897339 1162.687866 1162.240967 1161.41394 1160.44165 1159.509888 1158.487305 1158.224365 1158.727051 1159.211304 1160.030518 1160.992065 1162.899536 1166.061157 1169.184204 1171.178345 1173.103027 1175.573975 1180.307251 1184.873901 1191.572632 1199.880493 1208.832397 1210.919189 1209.822266 1207.774902 1205.806885 1207.437256 1208.99353 1209.842896 1210.184448 1209.998901 1209.421997 1208.253418 1207.579224 1206.628052 1205.670898 1204.864624 1204.013794 1203.19397 1202.293945 1201.371216 1200.482178 1199.783447 1198.825195 1197.677368 1196.775269 1195.796021 1195.208862 1194.988892 1194.668335 1194.265991 1193.78418 1193.240601 1192.816162 1192.333862 1191.948364 1191.489258 1190.771484 1189.94873 1188.931641 1188.121216 1187.376831 1186.787231 1186.252441 1185.595093 1185.41748 1185.644165 1185.819336 1186.11084 1186.510132 1186.886108 1187.406006 1187.91333 1188.553833 1189.037598 1189.63208 1190.219971 1190.653076 1191.162354 1191.455688 1191.848022 1192.247803 1192.72229 1193.076294 1193.39917 1193.69812 1194.034424 1194.141724 1194.142334 1194.132202 1193.970459 1193.921265 1193.826904 1193.800049 1193.473633 1193.235229 1192.994751 1192.416016 1191.656982 1191.025879 1190.430908 1190.146484 1189.96582 1190.137451 1191.958618 1194.111328 1195.835938 1196.000366 1195.950928 1195.816284 1195.421875 1194.914673 1194.272095 1193.639404 1193.094604 1192.758301 1192.565918 1192.497803 1192.484863 1192.575073 1192.594727 1192.770874 1192.784546 1192.752808 1192.49231 1192.117554 1191.621704 1191.105103 1190.559692 1190.009888 1189.355835 1188.657104 1187.942627 1187.336426 1186.885254 1186.468506 1186.193481 1185.788696 1185.47168 1185.375122 1185.333008 1185.171387 1184.89563 1184.590576 1184.418945 1184.075073 1183.774658 1183.353271 1182.983643 1182.643188 1182.414673 1182.154419 1182.163208 1182.435059 1182.822632 1182.955566 1182.722778 1182.197388 1181.304443 1180.205322 1179.151245 1178.30249 1177.467896 1176.78186 1176.222412 1175.589844 1175.085938 1174.578125 1174.23584 1173.903564 1173.446167 1172.855835 1172.43689 1172.319336 1172.204346 1171.614014 1171.006958 1170.99646 1171.214233 1171.646606 1171.078491 1170.911499 1171.942261 1173.22583 1174.156738 1175.19397 1176.49939 1177.65979 1178.7677 1179.720825 1180.679199 1181.960327 1183.014771 1183.802246 1183.911011 1183.413818 1182.364746 1181.959351 1182.145386 1182.841187 1184.747925 1186.175293 1187.333374 1188.140015 1188.616211 1188.796387 1188.911255 1189.235107 1191.062012 1193.043823 1195.221558 1202.189087 1207.22229 1208.050537 1211.864502 1222.241455 1230.415771 1232.432983 1228.400269 1222.389893 1217.831787 1211.491455 1204.352417 1194.197876 1195.407349 1198.061279 1203.833496 1202.934448 1197.433472 1194.414062 1188.966309 1183.995239 1182.429443 1182.278564 1181.997314 1181.729614 1179.450195 1175.662964 1174.213623 1172.564087 1170.167847 1169.34436 1168.611206 1167.624512 1166.2323 1164.39209 1161.865234 1158.677246 1158.620361 1158.350098 1157.640137 1156.817383 1156.023804 1155.167236 1154.290649 1153.467163 1152.496826 1151.239502 1149.993042 1148.260376 1147.430786 1146.85083 1144.924927 1142.492065 1140.064087 1137.766113 1135.722046 1135.278076 1136.007812 1136.395752 1136.574951 1136.80542 1136.947144 1137.93689 1140.620483 1143.55603 1146.272095 1147.450806 1146.19873 1148.170654 1151.960571 1154.848511 1158.393311 1159.525635 1161.563232 1162.847534 1163.470825 1162.803955 1158.971313 1156.490356 1154.727173 1153.690063 1150.398315 1145.979492 1140.915771 1136.192261 1129.204834 1137.990479 1159.615234 1161.461182 1167.195923 1174.31189 1182.540649 1191.112305 1191.858643 1182.982056 1176.601685 1170.890869 1171.474854 1177.649048 1184.82605 1193.3396 1198.592651 1202.748291 1200.569336 1205.123901 1209.540527 1221.12793 1232.14917 1239.804932 1246.434204 1251.396851 1256.55603 1256.526611 1260.537842 1265.792236 1270.358521 1274.95105 1280.723267 1285.223511 1293.374023 1294.866089 1303.473633 1311.989868 1320.406494 1326.907104 1330.631104 1332.850708 1332.220581 1330.402344 1328.393921 1325.64502 1323.686646 1321.713257 1318.829468 1314.178467 1308.570068 1304.640015 1303.825195 1303.833862 1302.848389 1300.333008 1296.641724 1293.674072 1291.663086 1289.677734 1288.032715 1287.979126 1293.419189 1292.604736 1287.737671 1282.931152 1272.895508 1266.891235 1258.675781 1248.3396 1235.207153 1219.359741 1216.680542 1211.876221 1208.462769 1200.362549 1192.451294 1204.049927 1218.66626 1219.620239 1210.683594 1199.154785 1190.095215 1183.07251 1178.664307 1174.580688 1170.59668 1167.0448 1160.188843 1157.95874 1156.587036 1155.967163 1158.484497 1162.655518 1167.427124 1172.346436 1178.219116 1183.675049 1189.885376 1190.507324 1187.569214 1183.334351 1184.557739 1195.302124 1198.609375 1199.442139 1198.253906 1195.217896 1192.327026 1190.797974 1188.473999 1185.169434 1181.886475 1180.343628 1177.999756 1176.308838 1175.160889 1173.673706 1171.937134 1167.848267 1158.507446 1145.9375 1143.860229 1145.887329 1152.400513 1159.411865 1158.23291 1156.446289 1152.377441 1148.044556 1146.970459 1146.940918 1147.378906 1149.12146 1149.741821 1153.802368 1159.374512 1168.155884 1172.350952 1171.69043 1171.192017 1169.267334 1166.840454 1164.411133 1161.532959 1160.060181 1161.930298 1162.023926 1161.489136 1160.471069 1159.303589 1158.076172 1156.702271 1155.074707 1153.593628 1152.1073 1150.75354 1149.628784 1148.626221 1146.732056 1136.189331 1134.482056 1134.485474 1134.447144 1134.442749 1134.835083 1133.546509 1131.648315 1133.093994 1136.459351 1136.918335 1135.780151 1134.140991 1133.338135 1132.060303 1130.777588 1129.375244 1128.013916 1126.661133 1125.676514 1125.010376 1124.204468 1123.236328 1122.269897 1122.244263 1122.351929 1121.904541 1122.911011 1122.952515 1121.996094 1121.816406 1129.855713 1135.793457 1136.426392 1140.60144 1146.926758 1156.714355 1168.893799 1173.945068 1167.297852 1156.631104 1143.605713 1136.648926 1131.150757 1124.84436 1119.991699 1115.036621 1110.577393 1108.858032 1106.914307 1104.119385 1100.306152 1098.562988 1098.188599 1097.604614 1097.66687 1097.83374 1097.935669 1097.866089 1097.705811 1096.214722 1095.076294 1094.035278 1092.773926 1091.728271 1090.836182 1090.065186 1089.248535 1088.54187 1087.684082 -1170.47937 1168.499634 1166.588013 1164.607056 1162.914673 1161.709106 1159.942993 1155.990112 1148.380859 1137.283569 1133.098022 1132.585815 1133.688232 1136.207642 1135.331543 1133.206299 1131.589478 1130.027954 1128.554932 1127.223511 1125.830444 1124.482056 1123.603027 1123.226929 1123.036621 1126.470825 1130.75769 1133.095337 1137.968872 1144.439453 1147.373901 1148.951538 1150.153442 1151.305908 1152.967529 1154.528931 1155.761353 1156.626831 1156.896606 1157.440186 1158.650879 1159.96814 1161.979248 1163.418335 1164.602661 1164.877075 1162.702026 1159.231934 1153.426025 1147.725586 1145.314453 1143.314453 1141.885132 1140.920898 1140.797363 1140.818359 1140.917847 1141.315308 1141.855347 1142.354004 1143.015137 1143.218872 1144.22644 1145.197754 1145.607666 1146.470215 1148.843018 1150.736938 1151.623047 1152.065186 1151.990967 1152.154053 1152.510864 1152.955322 1153.640015 1154.749878 1156.539062 1158.774414 1160.677368 1161.510376 1161.788208 1162.460815 1163.20752 1163.98584 1165.277954 1165.456787 1165.002075 1164.003418 1163.060791 1162.449707 1161.588379 1160.462402 1159.628296 1159.895874 1159.889526 1160.329102 1161.623047 1164.28064 1166.919312 1169.191528 1171.034912 1174.239136 1179.879395 1185.530518 1193.316895 1201.043335 1208.847778 1210.281982 1209.166748 1204.247437 1202.373535 1206.958618 1208.575439 1209.097534 1209.480713 1209.480103 1209.155029 1208.666992 1207.766846 1207.356689 1206.31897 1205.004395 1203.731567 1202.422607 1201.16272 1200.107178 1199.410156 1198.848022 1198.079468 1196.93811 1195.713989 1195.193726 1194.761719 1194.53064 1194.37561 1194.094727 1193.608398 1193.179565 1192.675171 1192.178101 1191.769531 1191.196289 1190.669678 1189.945801 1189.058716 1188.306885 1187.689575 1187.190186 1186.819336 1186.213379 1186.023926 1185.937012 1186.136597 1186.414185 1186.865967 1187.31958 1187.901489 1188.46814 1189.161865 1189.764526 1190.297974 1190.823486 1191.283203 1191.660278 1191.953979 1192.317627 1192.771484 1193.146484 1193.502441 1193.909546 1194.299194 1194.613403 1194.793091 1194.81665 1194.79895 1194.615112 1194.411743 1194.37207 1194.424194 1194.417725 1194.271606 1193.924927 1193.377686 1192.459595 1191.545898 1190.912842 1190.536377 1190.289185 1191.13623 1192.716064 1194.601562 1195.870117 1196.11084 1196.109131 1196.075439 1195.737915 1195.293213 1194.704468 1193.99292 1193.518677 1193.2146 1193.1604 1193.06897 1193.085693 1193.266235 1193.348633 1193.436768 1193.564209 1193.496948 1193.224365 1192.837158 1192.379761 1191.771729 1191.182861 1190.524292 1189.821289 1189.059692 1188.444336 1187.848999 1187.553345 1187.292603 1186.893555 1186.494141 1186.174805 1186.011963 1185.950195 1185.778198 1185.513794 1185.219482 1184.873535 1184.520996 1184.13147 1183.771973 1183.398682 1183.232178 1183.129028 1182.678833 1182.54248 1182.929688 1183.241943 1183.457886 1183.383423 1182.786987 1182.011108 1180.799438 1179.769287 1178.782715 1177.964111 1177.307007 1176.816406 1176.256348 1175.684204 1175.291382 1174.912354 1174.656006 1174.319824 1173.992065 1173.652588 1173.448853 1172.802246 1171.836548 1171.035156 1171.008789 1171.165771 1171.724609 1172.005005 1171.461182 1171.030273 1171.243896 1172.270874 1173.968018 1175.582886 1176.772217 1177.870972 1178.764526 1179.654907 1180.536499 1181.420776 1181.956909 1182.157104 1181.996216 1181.795532 1181.994629 1181.946289 1182.188843 1182.912842 1184.161255 1185.283569 1185.994995 1186.390503 1186.437012 1185.858765 1184.693848 1187.077148 1189.872437 1192.415039 1195.553711 1198.902466 1200.704468 1204.793335 1215.099365 1226.310425 1231.689453 1229.653931 1225.143799 1220.778198 1215.572021 1210.890991 1203.603882 1195.10022 1193.822144 1194.045166 1193.522095 1191.952637 1189.377563 1187.435547 1185.553589 1183.803467 1181.903931 1179.721802 1178.560425 1175.20813 1171.071411 1171.17749 1170.666626 1169.74231 1168.716675 1167.86084 1166.963013 1165.73938 1164.116943 1162.389526 1160.824341 1159.932495 1159.291748 1158.359497 1156.958496 1155.925659 1154.963135 1154.047607 1153.081787 1152.117798 1150.957153 1149.540039 1147.664795 1146.35437 1145.655273 1144.284912 1142.059204 1139.592773 1137.560791 1136.0896 1135.790283 1136.944092 1137.594604 1138.068604 1138.555542 1139.314575 1140.674072 1142.636597 1144.782349 1147.130493 1149.025757 1149.082764 1150.713135 1153.938599 1156.297119 1158.651733 1160.685669 1162.629883 1164.340332 1165.705322 1166.006714 1164.602905 1162.621216 1160.572998 1160.71936 1156.440552 1148.883423 1141.745239 1136.614624 1129.300903 1135.034424 1158.587769 1165.198975 1169.504517 1171.419312 1175.832397 1179.603882 1180.993286 1183.2146 1182.980957 1177.817627 1170.786499 1178.223267 1183.320068 1193.427979 1200.133057 1207.10083 1210.429443 1210.875488 1210.970703 1213.807129 1217.524536 1232.51416 1243.347656 1251.812256 1257.667847 1258.952759 1260.826904 1264.962158 1268.532349 1274.193115 1280.035889 1287.528809 1293.951416 1297.044678 1302.298584 1311.242798 1321.923218 1330.660889 1335.097046 1338.369507 1339.095703 1336.891113 1334.432617 1332.122681 1329.957275 1327.081543 1323.630005 1319.276123 1313.889526 1308.056396 1307.072266 1307.465332 1305.656738 1302.976562 1299.224854 1294.959473 1291.932739 1290.562378 1289.843262 1290.172729 1292.503296 1293.206543 1292.9198 1287.903198 1283.502563 1272.7146 1259.226318 1246.268066 1235.77124 1232.460938 1227.884888 1222.837402 1217.674561 1209.987427 1195.376465 1201.105225 1215.267456 1222.969849 1215.974243 1203.555664 1192.936279 1185.673828 1180.589966 1176.076538 1172.014526 1168.511719 1161.260254 1158.471313 1156.922974 1157.202759 1159.315186 1164.464355 1169.683838 1175.778809 1182.062988 1189.656006 1196.109741 1196.108643 1192.434082 1186.698242 1185.18042 1196.463867 1202.0354 1202.905884 1200.643677 1195.639771 1194.822266 1194.330811 1192.032715 1188.239014 1184.789673 1184.476196 1182.829468 1179.768066 1176.328125 1172.934814 1168.223999 1160.667114 1147.143311 1147.70105 1145.699341 1152.463989 1161.706543 1170.378296 1167.003296 1160.465698 1153.988892 1146.982422 1145.821045 1146.292969 1146.769287 1150.705078 1153.009766 1155.059448 1156.721191 1162.21936 1168.750488 1171.207275 1171.072021 1169.468262 1167.843018 1166.231812 1164.847534 1164.117065 1163.932861 1163.668579 1162.950073 1161.964478 1160.796631 1159.329834 1158.061646 1156.584229 1154.893921 1152.632202 1151.132935 1149.7146 1147.903564 1139.745728 1134.394043 1137.259521 1138.061401 1134.469849 1135.080688 1137.348755 1134.83728 1135.465942 1135.502808 1138.379028 1137.016357 1134.371582 1133.517212 1132.900513 1132.229614 1131.253052 1129.632812 1127.975952 1126.421387 1125.252441 1124.55249 1123.981323 1123.471802 1122.580444 1122.252075 1122.251587 1121.929565 1122.209717 1122.384155 1121.233276 1120.861816 1127.028076 1134.284302 1134.247681 1139.353882 1144.455444 1153.55188 1163.754883 1167.473755 1161.193726 1151.574097 1139.019653 1132.542847 1128.541748 1125.107178 1120.716797 1113.830688 1109.331909 1107.431396 1105.750122 1103.339355 1100.127441 1097.902222 1097.393311 1097.160767 1097.136475 1097.037109 1097.06311 1096.624023 1096.047241 1094.911133 1093.594971 1092.075195 1090.817261 1089.998657 1089.583374 1088.946777 1088.260376 1087.65564 1087.059082 -1173.115601 1170.707275 1169.319214 1168.325317 1166.756348 1164.945068 1162.448364 1159.385742 1147.515869 1136.497192 1132.758911 1132.51123 1134.449219 1139.749023 1140.11438 1134.935669 1133.019653 1131.515869 1130.080688 1128.629639 1127.19104 1125.914795 1124.966553 1124.337769 1123.968262 1123.816772 1127.240479 1129.634766 1132.325439 1136.637695 1143.704346 1147.504395 1149.211792 1150.6521 1152.200439 1154.598145 1156.766113 1157.777466 1158.103149 1157.865112 1158.386841 1159.925415 1161.747803 1162.903687 1163.279175 1161.810303 1157.470215 1151.310791 1146.384399 1144.911743 1143.192383 1141.367432 1140.09082 1139.649658 1140.305176 1140.597656 1140.825317 1141.034912 1141.411865 1142.026733 1142.597534 1143.54187 1145.152588 1146.020752 1146.058838 1147.297241 1150.260864 1153.202759 1154.812622 1155.514404 1155.554688 1155.577637 1155.745239 1155.435547 1155.123535 1155.869507 1157.076782 1158.910034 1161.297974 1163.249512 1164.752075 1166.095215 1166.857788 1168.062378 1169.324707 1169.040894 1167.705444 1166.627319 1165.606812 1165.382568 1164.603882 1163.464966 1162.858765 1162.196533 1162.06604 1161.862183 1161.945801 1162.657471 1164.909424 1167.309204 1169.643555 1172.030762 1175.590332 1181.416748 1186.971069 1192.077881 1200.40918 1207.886719 1207.733276 1200.661621 1194.398438 1202.821411 1208.147949 1208.644897 1208.863403 1208.949341 1208.907837 1208.609131 1208.22876 1207.685913 1206.781982 1205.546143 1203.661621 1201.626709 1199.911133 1198.597168 1198.353516 1198.094971 1197.544067 1196.401489 1195.277222 1194.736938 1194.47644 1194.249268 1194.02002 1193.848267 1193.46814 1193.098022 1192.657104 1192.0625 1191.570923 1191.119263 1190.552246 1190.021118 1189.265991 1188.616821 1188.074585 1187.676758 1187.377441 1186.912109 1186.544922 1186.433105 1186.533447 1186.866455 1187.189453 1187.704834 1188.4198 1189.112305 1189.79895 1190.532715 1191.032715 1191.562134 1191.877075 1192.320435 1192.647095 1192.919556 1193.266968 1193.546265 1193.89978 1194.293945 1194.757568 1195.131714 1195.367065 1195.493408 1195.341309 1195.141724 1194.925781 1194.912109 1195.106079 1195.138184 1195.060669 1194.969604 1194.474365 1193.305786 1192.064697 1191.310059 1190.966919 1191.081421 1192.051758 1193.456421 1194.838623 1195.788208 1196.08374 1196.213867 1196.149902 1195.974121 1195.472656 1194.939087 1194.236694 1193.78418 1193.615112 1193.615234 1193.678589 1193.804321 1193.958496 1194.094971 1194.181885 1194.247314 1194.208374 1193.916748 1193.495239 1192.922485 1192.431519 1191.777222 1190.990723 1190.211304 1189.553955 1188.937378 1188.665527 1188.267212 1188.047119 1187.690552 1187.140015 1186.846558 1186.588867 1186.549316 1186.348389 1186.094971 1185.702148 1185.371338 1184.952881 1184.533691 1184.320679 1183.952637 1183.733521 1183.518677 1183.134644 1182.910522 1183.230347 1183.61792 1183.829224 1183.7854 1183.316528 1182.411743 1181.283447 1180.04541 1179.155273 1178.401611 1177.830322 1177.245605 1176.691528 1176.247803 1176.136597 1175.957764 1175.67981 1175.387695 1175.222046 1174.828613 1174.440063 1173.64563 1172.627197 1171.652466 1170.985474 1170.973267 1171.798218 1172.371582 1172.565552 1172.067017 1171.337036 1171.362671 1173.806152 1175.408325 1176.608643 1177.438354 1178.327759 1179.126099 1180.015381 1180.677368 1181.252197 1181.589844 1181.776978 1181.980957 1182.001709 1182.280762 1182.457764 1182.591553 1182.734009 1183.102661 1183.753052 1184.443359 1184.596069 1183.728394 1182.537231 1184.453979 1186.567139 1188.500854 1191.330688 1193.372803 1194.270752 1198.867188 1209.537476 1220.926025 1229.161499 1229.930542 1226.480713 1222.648682 1218.118408 1213.481934 1209.425415 1200.071411 1195.225586 1191.910156 1188.185791 1182.878418 1184.174194 1184.123047 1183.155273 1183.649902 1182.661133 1178.87561 1176.602295 1174.347168 1172.088135 1170.78772 1170.018921 1169.27771 1168.293579 1167.385742 1166.457764 1165.415405 1164.093506 1162.755859 1161.407837 1160.428711 1159.476196 1158.504395 1157.143555 1156.064819 1155.039185 1154.028564 1152.939697 1151.799683 1150.640991 1149.427856 1148.146362 1147.313965 1146.255005 1144.015747 1141.510498 1139.25647 1137.713379 1136.223145 1136.629517 1137.651123 1138.563232 1139.324097 1139.977905 1141.023193 1142.164307 1143.908569 1145.914673 1147.849243 1149.989624 1152.11853 1154.720093 1156.100952 1158.06604 1158.343018 1160.586304 1163.450928 1165.820435 1167.959351 1169.929077 1168.826904 1169.491577 1172.109985 1168.52417 1160.898804 1149.689209 1137.328613 1130.026733 1132.868652 1146.048584 1160.479736 1165.675293 1170.784912 1168.74707 1169.396973 1171.987671 1180.493896 1184.067993 1185.246826 1183.33667 1175.973389 1179.447388 1189.37207 1197.031616 1200.78418 1205.411011 1209.291748 1217.09436 1222.991089 1227.71936 1230.509399 1229.833984 1232.426514 1246.149658 1255.19104 1258.191528 1257.070679 1260.032715 1261.732178 1267.526489 1274.753418 1282.196777 1288.446289 1293.228882 1300.023682 1308.594971 1320.411865 1331.031982 1338.500977 1343.810181 1345.873901 1343.158325 1341.280518 1338.395996 1335.51123 1332.528442 1328.859741 1323.868042 1317.989624 1315.937988 1314.558838 1312.737793 1309.915039 1306.220947 1301.996704 1296.76355 1292.594116 1291.679199 1291.524902 1291.11145 1291.922363 1293.059448 1293.392334 1292.603638 1283.789673 1269.311157 1256.128052 1253.786133 1247.841919 1243.006714 1236.104736 1230.523193 1226.231201 1218.445557 1206.711182 1202.193726 1210.828369 1222.30249 1217.369873 1207.044067 1195.607178 1188.126221 1182.022705 1177.479004 1173.39856 1169.626709 1162.491699 1159.311035 1157.218506 1159.854126 1162.302246 1166.207642 1170.782593 1178.754028 1188.654663 1197.888916 1203.778564 1202.767334 1197.887695 1192.622681 1191.606323 1196.338257 1207.593994 1206.667603 1203.879028 1201.341431 1199.762573 1198.123169 1195.106445 1193.231445 1190.682373 1188.04541 1185.290771 1181.549072 1176.579468 1171.72876 1163.351196 1156.946045 1156.678589 1157.283081 1150.572998 1156.962524 1170.814331 1174.169067 1172.399292 1162.629639 1154.901978 1148.129272 1145.315796 1145.598022 1147.187988 1153.609619 1156.921387 1156.754395 1157.342773 1162.363525 1168.337036 1169.995361 1169.976807 1169.378906 1168.657959 1168.12085 1167.20166 1166.485962 1166.003052 1165.350708 1164.235962 1162.920898 1161.643188 1160.447998 1159.518066 1158.168457 1155.413696 1152.582031 1150.605957 1149.199463 1147.086792 1138.535034 1140.765869 1147.08252 1144.531982 1137.227417 1139.384277 1140.916992 1140.732178 1140.614014 1140.805176 1141.054932 1137.614258 1135.279419 1134.301147 1133.550781 1133.325806 1132.407104 1130.386353 1127.124268 1124.965942 1124.203003 1123.849365 1123.535889 1123.190063 1122.982788 1122.217529 1122.245483 1122.170776 1121.162354 1121.012085 1119.382202 1119.477539 1122.653442 1126.843018 1132.423218 1137.358643 1141.543457 1149.431152 1160.05957 1160.808594 1153.81958 1144.53833 1135.105225 1129.889893 1124.34082 1123.428345 1119.400879 1112.908447 1109.279053 1107.346069 1105.706665 1103.749023 1101.731567 1100.029419 1098.503418 1097.682617 1097.036133 1096.616089 1096.092285 1095.630981 1094.752686 1093.592163 1092.081909 1090.147095 1088.72522 1088.298096 1087.968628 1087.612915 1086.915039 1086.16394 1085.964233 -1176.640869 1173.930298 1172.530029 1171.677124 1170.398926 1167.710083 1164.236694 1159.476318 1146.496826 1136.144531 1132.468262 1132.468262 1135.862183 1144.373169 1147.560913 1141.110352 1134.410278 1132.881104 1131.359375 1130.009644 1128.540649 1127.456909 1126.297852 1125.448242 1124.742554 1124.157471 1124.98999 1127.114746 1129.202393 1131.904419 1135.807373 1142.880859 1147.145386 1148.723877 1149.899536 1153.202271 1157.87085 1159.255493 1159.285278 1159.092529 1159.267456 1160.831665 1161.468994 1162.248291 1162.037354 1158.663208 1151.680542 1145.914062 1143.760986 1142.540649 1141.11792 1139.757446 1139.199463 1139.373779 1139.66333 1140.488892 1140.375854 1141.402344 1141.84729 1141.980347 1143.584351 1147.258789 1146.23999 1148.411499 1146.813965 1148.390747 1153.599731 1156.903442 1158.065186 1158.663452 1158.796509 1158.946899 1158.478149 1157.448486 1156.459961 1156.95874 1158.365967 1158.557617 1162.197266 1165.383545 1167.764648 1169.605469 1170.78479 1171.817017 1174.223511 1172.717896 1170.312744 1169.15271 1168.33606 1168.072876 1167.641357 1166.775024 1165.805054 1165.15918 1164.738403 1164.348755 1163.413696 1162.427856 1163.400391 1165.826782 1167.598755 1169.217896 1170.179932 1175.154541 1180.356079 1182.445801 1191.193481 1199.205322 1200.68396 1196.988892 1193.175049 1198.642578 1204.549805 1207.429077 1207.918457 1208.021729 1207.911133 1208.174927 1208.28479 1207.976929 1207.484131 1206.287598 1203.621704 1200.716064 1197.680908 1196.690063 1197.227173 1197.278687 1197.05835 1196.324951 1195.315063 1194.744263 1194.429565 1194.011841 1193.726074 1193.570435 1193.266602 1192.897095 1192.607056 1192.135132 1191.478271 1191.021973 1190.454346 1189.966064 1189.441162 1188.918945 1188.497559 1188.165283 1187.913574 1187.431763 1187.234375 1186.951416 1186.877441 1187.234497 1187.643677 1188.187378 1188.887207 1189.759888 1190.532227 1191.229858 1191.86377 1192.330688 1192.62439 1193.058838 1193.288452 1193.479126 1193.709717 1193.998291 1194.39856 1194.756714 1195.222168 1195.612427 1195.84314 1195.89624 1195.786865 1195.682861 1195.514648 1195.519531 1195.695801 1195.771484 1195.711182 1195.662354 1195.251831 1194.197998 1192.435059 1191.807373 1191.93689 1192.070923 1193.245972 1194.431152 1195.490479 1195.844238 1196.21167 1196.366089 1196.174438 1195.91333 1195.538696 1195.056396 1194.517334 1194.149292 1194.097168 1194.213501 1194.414429 1194.554199 1194.667114 1194.772339 1194.90564 1195.014282 1194.932373 1194.615967 1194.251709 1193.521484 1192.96936 1192.278931 1191.429565 1190.751831 1190.147705 1189.645508 1189.279541 1189.093262 1188.753174 1188.350586 1187.814819 1187.538696 1187.209961 1187.158813 1186.941162 1186.666748 1186.191162 1185.823486 1185.455811 1185.225952 1184.904541 1184.527344 1184.254272 1183.954102 1183.51355 1183.315796 1183.71521 1183.98291 1184.07666 1183.898071 1183.422852 1182.661377 1181.471069 1180.250244 1179.42627 1178.836914 1178.210205 1177.657959 1177.291748 1177.078979 1176.970215 1176.978149 1176.888306 1176.788452 1176.599976 1176.372925 1175.74939 1174.943481 1173.929199 1172.863525 1171.920898 1170.998169 1171.361938 1172.840454 1173.433105 1173.151123 1173.103271 1173.749756 1175.045044 1176.197144 1177.040283 1177.857544 1178.436523 1179.200195 1179.833252 1180.503052 1181.090332 1181.553833 1181.86377 1182.368408 1182.744507 1183.069214 1183.157715 1183.011108 1182.674683 1182.453247 1182.429932 1182.737549 1182.786743 1182.385132 1181.726807 1182.435547 1183.348389 1185.125244 1187.92749 1189.958252 1191.817017 1195.638428 1202.609863 1213.164673 1224.578735 1228.455811 1226.74231 1223.856323 1219.892944 1213.630859 1206.729492 1200.655884 1194.851318 1191.654053 1188.025513 1185.371216 1183.724243 1182.619507 1181.558594 1180.799194 1179.865967 1177.404785 1175.44519 1174.073486 1172.874878 1171.81665 1170.500244 1169.296631 1168.089233 1167.100098 1166.058472 1165.088989 1164.0802 1162.941528 1161.675415 1160.272583 1158.781738 1157.93042 1157.09436 1156.162964 1155.097412 1153.881104 1152.608643 1151.387817 1150.271851 1149.229614 1148.403564 1147.674072 1146.564331 1143.653076 1140.656616 1138.924316 1137.706421 1136.705444 1137.441528 1138.392334 1139.368164 1140.29126 1141.189209 1142.133545 1143.129395 1144.285522 1145.733276 1148.216797 1150.716309 1153.971924 1158.465576 1159.008545 1158.368652 1160.709473 1162.257935 1164.637329 1167.171753 1169.646118 1171.566528 1172.05896 1171.556763 1173.011475 1169.702637 1161.456665 1135.809937 1130.953247 1134.114624 1139.484497 1148.839233 1158.865356 1160.213989 1165.87854 1168.717773 1172.007935 1175.954834 1182.629639 1183.798096 1185.928101 1185.140625 1181.368774 1181.407715 1188.431885 1198.230591 1206.405518 1207.798462 1212.40564 1218.81897 1228.393677 1237.444946 1243.64209 1245.11438 1245.1604 1243.752075 1242.697266 1244.092651 1253.903687 1254.258545 1258.245972 1265.977661 1267.626221 1273.470459 1280.990845 1291.562744 1298.717896 1307.341919 1316.354004 1328.700073 1339.328613 1349.07605 1354.514282 1351.163086 1347.648071 1344.300293 1340.875122 1337.222412 1333.388306 1328.88147 1325.015991 1324.019897 1322.101929 1319.375854 1315.625488 1310.518921 1305.281494 1300.24646 1295.218628 1293.531738 1293.123169 1292.195435 1291.787354 1292.319946 1293.047852 1292.832886 1281.877808 1266.824097 1267.364868 1262.259521 1255.524902 1248.744263 1242.717041 1238.460571 1234.313599 1227.008301 1214.608765 1204.548706 1211.150146 1220.98877 1218.631348 1210.047241 1199.157715 1190.439697 1183.153687 1178.532349 1174.146851 1170.273438 1163.529419 1160.435913 1157.787964 1160.826172 1164.295044 1167.784424 1171.855347 1182.052856 1193.833374 1204.488159 1210.797974 1210.230469 1205.162476 1197.770264 1193.762573 1195.599854 1208.555664 1209.089722 1207.741089 1207.737427 1205.566406 1202.358398 1198.521362 1197.734619 1195.849731 1191.836182 1187.241943 1182.320068 1175.861328 1169.771118 1157.953003 1158.99231 1163.232788 1162.837891 1156.803101 1159.878906 1174.037354 1174.492065 1172.680298 1163.885254 1156.77771 1150.371826 1145.637573 1144.917114 1147.668579 1158.271973 1163.382812 1164.473389 1158.734741 1166.644043 1171.760254 1171.459839 1171.01062 1170.761108 1170.568848 1169.718994 1169.05249 1168.371216 1168.27478 1167.245117 1165.595825 1163.43103 1161.278076 1159.591675 1158.611938 1157.855713 1153.875366 1150.381592 1148.585693 1147.619385 1147.160278 1147.611572 1147.84729 1148.259155 1145.908936 1143.504028 1144.877197 1146.104736 1146.486328 1146.473755 1145.365479 1143.744629 1142.05957 1139.458496 1136.982544 1135.624512 1135.090698 1132.936768 1131.775757 1126.904419 1122.053711 1122.195801 1122.233032 1122.548828 1122.812744 1122.738525 1122.399414 1122.179321 1122.238525 1120.144897 1118.368408 1117.28772 1117.487549 1119.697144 1122.081299 1128.141724 1133.75769 1133.906982 1146.348145 1158.796631 1160.030273 1148.221313 1139.611816 1132.889404 1127.35022 1122.862793 1120.247192 1116.360107 1111.009033 1108.899414 1107.301636 1105.608521 1103.933105 1102.357788 1101.097656 1100.084961 1098.907227 1097.6698 1096.456543 1095.641113 1095.079224 1094.224365 1092.95459 1090.904663 1087.530273 1086.306763 1086.418945 1086.36499 1085.969849 1085.587646 1085.363403 1085.057495 -1179.980835 1177.70874 1175.52771 1174.403687 1172.941528 1170.404053 1164.503418 1156.189697 1143.282715 1135.000977 1132.49707 1132.462891 1140.072876 1148.533691 1151.015381 1148.757812 1140.206665 1133.783936 1132.532349 1131.189575 1129.995972 1128.817993 1127.763916 1126.743286 1125.850098 1125.150513 1124.680908 1124.662231 1126.677612 1128.508789 1131.210693 1134.605469 1139.621338 1142.789062 1144.381836 1147.605103 1156.706909 1159.869751 1160.118042 1160.144897 1160.300171 1161.002808 1161.122192 1160.979126 1159.25647 1151.638062 1146.308105 1143.441528 1141.425171 1140.340088 1139.357056 1138.461182 1139.056885 1140.043457 1140.213867 1140.173706 1141.010132 1142.927612 1144.333252 1144.397827 1149.029053 1159.220947 1159.638306 1159.497681 1153.349365 1153.381226 1157.901001 1160.562744 1161.943481 1162.338135 1162.310059 1162.251831 1160.939209 1158.554688 1157.497681 1157.868896 1160.341553 1161.881592 1165.492432 1167.712891 1170.10144 1173.56665 1177.802124 1182.754883 1182.901978 1179.050537 1175.661133 1172.337524 1170.987549 1170.679199 1170.44104 1169.697266 1168.911621 1168.28186 1168.104492 1167.360962 1166.471802 1165.30957 1164.50708 1164.100708 1166.124023 1167.662842 1170.10376 1173.603882 1176.660156 1178.833252 1182.086548 1191.658203 1194.667358 1193.041748 1191.787354 1196.093262 1200.151489 1202.784546 1204.155151 1204.710693 1205.093262 1206.985718 1208.23999 1208.16748 1208.141968 1206.666016 1203.335815 1199.961548 1196.276733 1195.406982 1195.928589 1196.437134 1196.519043 1196.19165 1195.339233 1194.801392 1194.187256 1193.81665 1193.473267 1193.139648 1193.000732 1192.740967 1192.474976 1192.100708 1191.622925 1191.053589 1190.555176 1190.012695 1189.598267 1189.224121 1188.875366 1188.588135 1188.497437 1188.0177 1187.800781 1187.640991 1187.38623 1187.498535 1187.994019 1188.693481 1189.416382 1190.383667 1191.203491 1191.981323 1192.571655 1193.111328 1193.353516 1193.708862 1193.786743 1194.005005 1194.175293 1194.391724 1194.737915 1195.135132 1195.570312 1195.915649 1196.134155 1196.337646 1196.48877 1196.325439 1196.24231 1196.267334 1196.338989 1196.429199 1196.410645 1196.255981 1195.881714 1194.84668 1192.736328 1192.489136 1192.778076 1193.303345 1194.274414 1195.245117 1195.801514 1196.094849 1196.36084 1196.427734 1196.308472 1196.022827 1195.569824 1195.149536 1194.727905 1194.568359 1194.488647 1194.90918 1195.188477 1195.330566 1195.404053 1195.410889 1195.552612 1195.610474 1195.540649 1195.24585 1194.819824 1194.25415 1193.49646 1192.794922 1192.001709 1191.330322 1190.784668 1190.360229 1190.089722 1189.817505 1189.40979 1189.00769 1188.474243 1188.098755 1187.902954 1187.712524 1187.427856 1187.172729 1186.688232 1186.320312 1186.149536 1185.746704 1185.405273 1185.084106 1184.75354 1184.40979 1184.277832 1184.112915 1184.230103 1184.297729 1184.158081 1183.899048 1183.335693 1182.60083 1181.559692 1180.434448 1179.701538 1179.21521 1178.684937 1178.372559 1178.175537 1178.089966 1178.138794 1178.277954 1178.406006 1178.39856 1178.350708 1178.106934 1177.638184 1176.818481 1175.642212 1174.38623 1172.978027 1171.217529 1172.320557 1173.905396 1174.474243 1174.655273 1175.084839 1175.893799 1176.674683 1177.47168 1178.123657 1178.608887 1179.009888 1179.604004 1180.218994 1180.736328 1181.260986 1181.967773 1182.892334 1183.193481 1183.196777 1183.195679 1183.196167 1183.200806 1183.213135 1182.309082 1181.776001 1181.662476 1181.533203 1181.070679 1180.704712 1180.814819 1181.433472 1182.868408 1185.027222 1187.441162 1190.115723 1193.075928 1197.939697 1209.156128 1219.023682 1224.712891 1225.230835 1224.247314 1221.766357 1215.901001 1209.549194 1202.648804 1194.342285 1192.348511 1189.368896 1185.338745 1184.354126 1183.896729 1182.928955 1180.443359 1177.386841 1174.722168 1173.861572 1172.964722 1172.232544 1172.082397 1170.992432 1169.510132 1167.912109 1166.6698 1165.780762 1164.902466 1163.887207 1162.917969 1161.882812 1160.765747 1159.460083 1158.63562 1157.581665 1156.511108 1155.317505 1153.76001 1152.123413 1150.74292 1149.650513 1149.001221 1148.270142 1147.457153 1146.075195 1142.540894 1139.164551 1138.013062 1137.731689 1137.793213 1138.521362 1139.470825 1140.369141 1141.28772 1142.211304 1143.264893 1144.212646 1144.917114 1145.643066 1147.148804 1150.442627 1153.87915 1157.26062 1159.609863 1160.594482 1161.869019 1163.415527 1165.490723 1167.769165 1170.12439 1171.889648 1172.411133 1172.975098 1173.695557 1165.60144 1140.488037 1131.106323 1134.671387 1137.041626 1141.771729 1148.50647 1155.611938 1160.67334 1164.436768 1171.269653 1175.745605 1182.132568 1185.293457 1186.438599 1187.95105 1186.775391 1183.074829 1182.221558 1185.472412 1198.415649 1209.176147 1213.310059 1218.268066 1224.671997 1234.4021 1243.69873 1247.88855 1251.488037 1254.302368 1252.323364 1251.220215 1259.428345 1259.91272 1257.001587 1255.296143 1269.298706 1273.519287 1276.743042 1279.995605 1291.000732 1296.358276 1304.27771 1314.291748 1325.136841 1337.704346 1350.374023 1357.12146 1356.321777 1354.173706 1349.843262 1345.645996 1341.933472 1338.107544 1333.083862 1329.894165 1331.692383 1330.989868 1327.560425 1321.87793 1316.703613 1308.896362 1303.055908 1299.342041 1296.786255 1295.588013 1294.422852 1292.53125 1291.253296 1290.056763 1285.557373 1279.276611 1278.052979 1276.032227 1269.27356 1258.913452 1252.53418 1247.701904 1244.765869 1239.931396 1234.413086 1222.542358 1210.295898 1220.20874 1229.495239 1223.656372 1213.500977 1202.491943 1192.868042 1183.989624 1179.317261 1174.91626 1170.912231 1164.61438 1161.50769 1158.680908 1160.276245 1166.672485 1170.93811 1176.284058 1184.835938 1194.681519 1206.180054 1214.06958 1219.067261 1214.196167 1207.359863 1201.049683 1198.824219 1208.41333 1210.25769 1210.475098 1210.190918 1209.127197 1206.249878 1204.314941 1202.162476 1198.757812 1194.858276 1187.657593 1180.567383 1173.360107 1166.436035 1162.887939 1167.321533 1170.263062 1171.505371 1166.130249 1165.384521 1173.845581 1173.437988 1170.045044 1164.34375 1159.439941 1152.069946 1146.809082 1144.821289 1146.588989 1154.989746 1164.447632 1174.095825 1171.584106 1169.355957 1172.204956 1173.408203 1173.213867 1172.73877 1172.259644 1171.059814 1170.388062 1170.599976 1170.504761 1169.010986 1166.732422 1163.755493 1159.619263 1158.192505 1157.71521 1155.776245 1150.935791 1146.508301 1146.627808 1146.647461 1146.880981 1149.842163 1150.631836 1149.464478 1146.747192 1145.909424 1147.584961 1148.597656 1148.605591 1148.207397 1147.690552 1147.092529 1145.942505 1143.657837 1140.755981 1138.451782 1136.743164 1134.635254 1134.77478 1131.265991 1125.052246 1122.797363 1122.165894 1122.253906 1122.243896 1122.297363 1122.383545 1121.931763 1121.369873 1118.945435 1116.378418 1114.489624 1114.529785 1116.784302 1119.937988 1122.906006 1123.162354 1133.328857 1144.828247 1158.948242 1158.738525 1146.161255 1133.990601 1127.681885 1123.28125 1123.422607 1121.280518 1114.952271 1111.271973 1108.884766 1107.024902 1105.258057 1103.72876 1102.47168 1101.329468 1100.425293 1099.448975 1098.014038 1096.447876 1095.63147 1095.120728 1094.48645 1093.261108 1091.139404 1087.444336 1086.119385 1085.401611 1085.431885 1085.430298 1085.50647 1085.418457 1085.083252 -1183.312622 1180.340576 1178.189087 1176.151855 1174.224854 1171.419189 1163.419434 1152.741211 1141.370972 1133.662109 1132.871338 1138.168823 1147.175049 1155.732544 1157.450928 1154.589355 1147.242432 1135.798218 1133.70105 1132.683472 1131.628174 1130.22522 1129.186646 1128.226929 1127.304443 1126.661133 1125.864258 1125.465942 1125.223022 1125.44043 1127.244385 1129.656494 1131.993164 1133.189575 1134.850708 1141.113892 1147.075195 1154.092651 1158.961426 1159.77478 1159.235718 1159.096558 1158.894775 1156.513428 1149.349243 1144.357056 1141.944702 1139.927734 1138.907837 1138.135498 1137.936401 1139.156128 1140.325195 1141.503174 1142.483032 1142.902466 1143.608398 1145.164307 1147.609375 1146.958008 1149.666992 1156.081787 1159.344849 1160.148682 1157.972168 1158.345703 1161.837402 1165.147827 1166.728638 1167.044556 1166.78064 1166.129395 1163.991089 1159.944214 1158.538452 1158.129761 1160.193481 1165.350586 1170.262573 1170.359619 1171.131958 1177.509033 1184.650391 1191.478516 1189.100586 1186.124878 1184.775879 1180.353882 1179.970215 1180.492432 1177.610718 1175.751953 1171.990479 1171.250732 1172.105957 1170.274902 1169.836182 1170.19397 1168.356567 1165.72876 1164.905762 1166.620483 1168.255615 1171.334839 1173.51062 1175.464233 1178.613525 1182.096191 1185.467163 1186.88269 1185.913452 1193.200195 1196.340576 1197.144043 1198.035645 1199.964355 1201.389038 1203.351196 1205.91687 1207.511475 1207.646118 1206.411377 1202.659912 1199.546997 1196.861938 1195.361084 1195.348755 1195.420898 1195.670654 1195.583374 1195.151001 1194.494751 1193.892944 1193.467041 1193.091431 1192.783569 1192.58728 1192.498047 1192.250122 1192.018433 1191.714966 1191.142822 1190.715698 1190.266602 1189.919556 1189.64563 1189.436157 1189.219238 1188.975708 1188.438965 1188.295776 1188.161255 1188.0 1187.850586 1188.33667 1189.116943 1190.025269 1190.905151 1191.847534 1192.670532 1193.342285 1193.88147 1194.084595 1194.31897 1194.408936 1194.49939 1194.672241 1194.841553 1195.158081 1195.5 1195.816772 1196.199219 1196.479126 1196.853516 1196.989014 1197.042847 1197.027222 1196.966553 1196.996948 1196.95166 1196.797607 1196.496826 1196.127686 1195.357422 1193.29126 1192.929565 1193.463501 1193.908325 1194.736938 1195.289062 1195.909302 1196.255981 1196.496948 1196.485229 1196.410034 1196.129761 1195.7052 1195.450317 1194.962891 1194.972656 1194.988647 1195.494263 1195.700806 1195.813721 1195.893066 1195.951294 1196.002563 1196.029663 1195.897705 1195.752197 1195.348755 1194.78186 1194.051514 1193.255615 1192.593628 1192.009521 1191.572632 1191.121094 1190.761475 1190.384644 1190.073608 1189.621704 1189.129395 1188.675049 1188.535645 1188.248413 1187.996704 1187.651978 1187.222046 1187.020508 1186.692505 1186.32251 1186.019287 1185.614868 1185.3125 1185.113281 1184.923828 1184.71582 1184.685669 1184.516479 1184.238281 1183.789185 1183.246582 1182.444092 1181.671631 1180.89209 1180.127197 1179.777588 1179.457886 1179.194214 1179.013794 1179.066528 1179.349976 1179.616455 1179.946411 1180.236816 1180.354126 1180.238403 1179.766968 1178.796021 1177.568481 1176.157104 1174.821899 1174.063232 1174.656006 1175.438477 1175.852661 1176.206543 1176.772461 1177.511108 1178.262085 1178.839478 1179.109009 1179.451416 1179.682495 1180.047729 1180.463135 1181.016357 1181.633057 1182.320068 1183.202148 1183.191162 1183.191895 1182.976929 1183.07605 1183.19873 1183.285278 1181.975464 1181.072754 1180.534302 1180.208496 1179.750854 1179.467773 1179.567139 1180.244873 1181.420776 1183.476074 1186.108154 1188.158813 1191.274658 1195.965332 1203.927002 1212.166016 1218.444458 1221.286499 1222.348267 1221.684448 1217.614014 1212.859619 1208.924561 1199.296265 1194.471802 1191.157349 1185.69165 1182.987793 1183.407837 1183.389893 1180.665161 1175.801147 1171.252075 1171.953125 1171.757568 1170.75 1170.700684 1170.234741 1168.890625 1167.426147 1166.294312 1165.304932 1164.526978 1163.643921 1162.884399 1161.990479 1161.119629 1160.317017 1159.208862 1158.234009 1157.404663 1155.726318 1153.458618 1151.445557 1149.872803 1148.883911 1148.216919 1147.653931 1146.867432 1143.166016 1140.753296 1138.981445 1139.581177 1139.52124 1139.757446 1140.311035 1140.828491 1141.471313 1142.292969 1143.197998 1144.513306 1145.981934 1146.014648 1146.024292 1147.810425 1150.193726 1153.314819 1156.519165 1159.140869 1160.628418 1161.940796 1163.695801 1165.69043 1167.652832 1169.368286 1171.031372 1172.610107 1173.686523 1173.536621 1162.571777 1140.968994 1131.03479 1132.581421 1134.616943 1136.967773 1136.790771 1139.587036 1147.794556 1159.748535 1171.150146 1175.196655 1180.243652 1182.810913 1188.901245 1191.27356 1189.687378 1185.173706 1183.901611 1196.269165 1202.001343 1207.847046 1216.113281 1222.191772 1228.685303 1235.524902 1243.136475 1249.65979 1254.900391 1260.476196 1262.616821 1260.200073 1269.792603 1271.364624 1267.172607 1258.235718 1258.937988 1273.970093 1282.250854 1284.294434 1287.922485 1294.243652 1304.23999 1314.017212 1324.753296 1336.37207 1349.712036 1358.302246 1360.082153 1358.529907 1353.938477 1349.487061 1345.979126 1342.266724 1338.96936 1337.336792 1336.709961 1335.728394 1332.895264 1328.247681 1321.839233 1314.14209 1304.567139 1302.172363 1300.209595 1298.38147 1296.569702 1294.563477 1292.855835 1290.46875 1287.270386 1286.554443 1291.323486 1283.801758 1272.578491 1261.874146 1255.046753 1251.42627 1247.748413 1242.790771 1236.273193 1226.653687 1217.756958 1219.660889 1233.307617 1228.085693 1217.241211 1204.717407 1195.062378 1185.247925 1179.940796 1175.587524 1171.51355 1165.414185 1162.596436 1160.137085 1160.283569 1168.364624 1175.482178 1183.395386 1192.172363 1199.773315 1207.696167 1215.375488 1221.049438 1221.197998 1215.124878 1210.421143 1208.428589 1209.683472 1211.052856 1211.909424 1212.609375 1212.273682 1210.751099 1209.162842 1206.590088 1201.478394 1195.890015 1187.174316 1178.496216 1169.641357 1168.591309 1173.125732 1172.897095 1173.240479 1175.468628 1173.596924 1172.931641 1173.105591 1169.893555 1163.900146 1159.581787 1156.744141 1152.821289 1148.612305 1145.069092 1144.564819 1149.271484 1155.623291 1167.038574 1172.855103 1173.633301 1174.289185 1175.26709 1175.296387 1174.898438 1174.156982 1173.149048 1172.619263 1172.903076 1172.330322 1170.671631 1167.56311 1164.195923 1159.505737 1159.119263 1160.353394 1157.274048 1155.610596 1147.170654 1146.962036 1146.557129 1148.182251 1152.066284 1152.834229 1151.474243 1149.068359 1147.296997 1149.182373 1149.653198 1149.719482 1149.421875 1148.893066 1148.313354 1147.49585 1146.824097 1144.040894 1140.918579 1138.741577 1137.216064 1136.504395 1134.577515 1129.881348 1126.59668 1124.592285 1122.612915 1122.264038 1122.247559 1122.327637 1121.911987 1119.294189 1116.928345 1114.626343 1111.657959 1111.080078 1113.703735 1116.598022 1119.060303 1121.189331 1131.704834 1142.65979 1153.184814 1151.938477 1141.923828 1130.809204 1121.109131 1119.418091 1119.086426 1117.148804 1113.180176 1109.776123 1107.987915 1106.071167 1104.337158 1103.143555 1102.212402 1101.294556 1100.207153 1099.03125 1097.808594 1096.731079 1095.835693 1095.607178 1095.359863 1094.88269 1093.321899 1091.112549 1088.735107 1086.104858 1085.786743 1085.931763 1086.196289 1086.018677 1085.667603 -1184.577759 1183.031616 1180.775024 1177.184326 1173.77478 1170.445312 1163.202759 1151.596436 1139.318726 1132.255859 1140.967896 1149.864136 1157.203125 1162.307129 1162.983765 1160.233643 1152.934326 1143.72998 1137.414307 1134.0 1133.12085 1131.859131 1130.627686 1129.698486 1129.025513 1128.254639 1127.601196 1126.944824 1126.575806 1126.374146 1126.163818 1126.223511 1127.27063 1128.295776 1130.547974 1134.207886 1139.279175 1142.668701 1145.302734 1147.028564 1147.907837 1150.213745 1150.938232 1149.102295 1144.464233 1139.983154 1137.634888 1136.827515 1137.340576 1138.112427 1139.048218 1140.535034 1142.117676 1144.007935 1145.760498 1146.512573 1146.498535 1146.066162 1149.389282 1150.408325 1152.079468 1155.012085 1157.697632 1160.237305 1159.117554 1159.265747 1165.03772 1170.104736 1172.318604 1171.915527 1171.09021 1171.315552 1168.380249 1164.859863 1161.473389 1158.415894 1159.098145 1166.41687 1172.141846 1175.240601 1178.484253 1181.188721 1191.966919 1196.207275 1194.15918 1192.708496 1192.311523 1189.914062 1194.548218 1195.04126 1193.631958 1187.858032 1184.01001 1188.077271 1188.511841 1181.118286 1180.585449 1180.98938 1175.47522 1169.988281 1167.366821 1166.17981 1166.509644 1167.166504 1168.967773 1172.272949 1175.189819 1178.693237 1181.360718 1181.986084 1182.066284 1186.808228 1191.094482 1192.013672 1193.634033 1195.547607 1196.327026 1198.092651 1200.304077 1202.105713 1203.728638 1203.103394 1201.2052 1199.108032 1197.243286 1195.602051 1195.290771 1195.171143 1195.031372 1194.858765 1194.48291 1194.095703 1193.675659 1193.190796 1192.795532 1192.478638 1192.331421 1192.053223 1192.031372 1191.885254 1191.701782 1191.361328 1190.936157 1190.477295 1190.193359 1190.049438 1189.889771 1189.675781 1189.572876 1188.909424 1188.723511 1188.598633 1188.359497 1188.243164 1188.785278 1189.604004 1190.550659 1191.65332 1192.593628 1193.368408 1194.117065 1194.630249 1194.876221 1195.020508 1195.015381 1195.057251 1195.200073 1195.388062 1195.661621 1195.959839 1196.251831 1196.62146 1197.027954 1197.328247 1197.473755 1197.595093 1197.592041 1197.648438 1197.543213 1197.354858 1197.130493 1196.724365 1196.218018 1195.584473 1194.267944 1193.332764 1193.80542 1194.224487 1194.565674 1195.200928 1195.893555 1196.308594 1196.573486 1196.658203 1196.517456 1196.262817 1195.985962 1195.590332 1195.221313 1195.523071 1195.462036 1195.933838 1196.165649 1196.313232 1196.386108 1196.41272 1196.486816 1196.376221 1196.269531 1196.0979 1195.655518 1195.088379 1194.325439 1193.624146 1193.039185 1192.552612 1192.09021 1191.668091 1191.303467 1190.999878 1190.606445 1190.189209 1189.750488 1189.215332 1189.018188 1188.73645 1188.434448 1188.113525 1187.838989 1187.573364 1187.228271 1186.878418 1186.428711 1186.110107 1185.966064 1185.68396 1185.438599 1185.175293 1184.996338 1184.740845 1184.342163 1183.737549 1183.160156 1182.410645 1181.804321 1181.180054 1180.69104 1180.413818 1180.143066 1179.920898 1180.004639 1180.071777 1180.385986 1180.822632 1181.362793 1181.881958 1182.290405 1182.296387 1181.912354 1180.952026 1179.364868 1177.939575 1177.077026 1176.542847 1176.833008 1177.073608 1177.381958 1177.655151 1178.141724 1178.859375 1179.495117 1179.966309 1180.043823 1180.041016 1180.06665 1180.320068 1180.655151 1181.16272 1181.718506 1182.256348 1182.967773 1183.203125 1182.974487 1182.498779 1182.439697 1182.202759 1181.946289 1181.227905 1180.257202 1179.546875 1178.870728 1178.385376 1178.102295 1178.212524 1178.950928 1180.328857 1182.413086 1184.070068 1185.765503 1189.143433 1192.974243 1197.359741 1204.074829 1210.016724 1214.550171 1216.912476 1217.514282 1214.214233 1210.85498 1207.540527 1202.074463 1197.468994 1194.376465 1188.942139 1185.125854 1182.28064 1181.543579 1178.717163 1173.250854 1171.948364 1170.478394 1171.550293 1171.146973 1169.792603 1168.899048 1167.859741 1166.794434 1165.711548 1164.924072 1164.084595 1163.281006 1162.649536 1161.936646 1161.155884 1160.568481 1159.92041 1159.241089 1158.418701 1156.077881 1152.930176 1150.500366 1148.75 1147.698364 1147.053833 1146.349976 1143.765381 1140.872559 1140.454956 1140.615356 1142.287231 1142.509277 1142.211182 1142.201782 1142.358032 1142.723389 1143.159546 1143.997559 1145.5177 1146.731567 1146.910889 1146.702148 1147.007324 1149.344604 1151.989258 1155.177002 1157.826294 1159.130737 1161.075317 1163.144287 1165.588501 1168.124268 1170.143433 1171.251343 1173.465454 1175.11499 1174.519287 1163.842896 1146.192993 1137.991455 1136.206421 1133.616699 1133.830811 1134.9104 1134.224609 1132.973145 1142.817383 1161.505249 1172.500244 1182.608887 1186.873413 1192.23645 1194.551758 1193.357056 1189.167358 1189.029907 1198.4104 1206.022217 1213.948242 1221.807251 1222.71582 1229.903198 1238.422852 1245.923706 1251.866455 1256.603149 1265.200928 1270.378418 1272.647949 1274.392944 1278.104004 1274.898926 1269.213623 1263.755127 1266.861328 1277.30835 1282.294312 1283.312622 1290.886841 1300.31189 1311.042847 1321.983154 1333.711304 1346.898926 1357.420166 1364.881714 1364.017578 1357.98999 1352.907471 1349.956787 1347.02832 1344.380981 1342.929932 1342.130127 1340.787964 1337.71228 1331.828247 1324.832031 1317.297607 1310.546875 1306.251831 1303.794189 1301.466675 1299.01001 1296.61145 1294.381836 1291.544678 1290.537842 1290.94397 1293.39917 1286.361572 1276.000244 1266.09668 1259.338623 1254.233276 1249.009644 1243.558472 1235.952393 1227.133423 1218.48938 1216.399658 1220.798462 1225.004761 1220.766846 1206.896484 1196.564819 1186.450073 1180.609253 1176.273071 1172.265381 1166.13208 1163.5271 1161.132446 1160.919556 1170.35376 1177.303101 1185.869141 1196.211426 1203.540283 1210.182129 1215.897583 1220.794556 1220.022827 1214.484741 1210.563354 1209.550171 1210.028442 1210.78418 1212.335815 1214.295898 1215.923096 1216.932007 1214.27002 1209.10083 1203.202759 1196.292114 1187.275269 1177.067505 1169.191284 1170.38147 1182.044678 1181.560913 1179.734863 1180.374878 1179.785522 1177.128906 1170.30835 1164.850342 1156.99292 1157.571899 1157.63916 1154.999878 1146.809937 1144.551636 1144.489868 1146.677734 1153.37439 1157.795654 1170.091797 1175.021362 1176.809082 1177.731201 1177.637573 1177.07312 1176.446899 1175.744141 1175.034668 1174.707642 1173.580444 1171.230591 1168.956543 1167.617188 1160.411743 1163.720093 1163.504395 1160.649902 1160.631226 1146.953125 1156.300903 1158.079834 1148.847412 1155.695557 1155.925537 1154.172485 1152.412354 1151.518188 1151.203979 1150.911499 1150.488892 1149.976196 1149.468506 1148.752808 1148.02478 1147.122925 1145.073853 1142.428345 1140.57312 1139.12793 1137.419067 1134.911987 1132.060059 1129.760498 1127.237427 1124.972534 1122.778931 1122.277588 1122.318726 1121.656372 1118.660767 1115.07312 1112.622192 1110.72522 1109.93042 1110.267334 1114.006104 1116.754272 1119.80896 1127.521118 1140.229614 1149.565674 1146.733276 1137.179321 1126.692261 1119.879761 1116.647949 1114.907715 1112.860596 1110.624878 1108.052124 1105.964722 1104.140869 1102.784912 1102.085083 1101.567749 1101.174194 1100.013306 1098.366089 1097.325073 1096.592407 1096.231689 1096.179077 1097.196045 1097.989136 1096.838623 1094.354004 1090.884033 1088.62085 1087.63855 1087.427124 1087.420532 1086.971558 1086.441772 -1186.720337 1185.0896 1182.863037 1177.315063 1172.909668 1168.032104 1161.252441 1145.536987 1134.700806 1139.828369 1151.084717 1156.676514 1165.628418 1169.541626 1167.4375 1164.517334 1160.565552 1156.372681 1149.450562 1142.035034 1134.5 1133.155273 1131.89978 1131.13208 1130.831299 1130.329224 1129.658691 1129.01355 1128.464355 1127.781616 1127.38562 1127.276855 1127.115356 1127.148438 1127.583008 1131.027344 1133.543335 1135.217896 1137.131836 1139.189331 1142.301025 1144.264893 1144.753052 1143.685425 1139.775391 1136.168457 1137.323608 1138.233276 1139.1427 1140.204346 1141.091797 1142.212769 1143.733276 1145.887451 1151.043823 1157.859253 1156.846924 1150.623047 1152.796875 1153.550293 1154.986816 1156.15979 1157.815674 1160.960083 1160.393921 1160.387573 1167.537109 1174.063965 1178.018799 1180.108521 1180.060547 1178.195435 1174.227661 1170.283691 1164.987427 1158.754395 1160.283447 1166.34082 1171.248047 1179.893555 1185.065186 1191.218872 1195.928345 1196.848511 1196.66626 1196.207397 1196.519897 1196.322632 1196.969849 1196.947021 1196.578369 1196.132935 1196.202271 1196.698242 1196.498291 1195.198486 1193.386719 1192.11853 1187.894409 1178.084839 1170.381592 1169.276367 1169.225464 1168.997559 1168.411377 1169.619507 1172.164673 1175.263794 1177.935181 1179.49646 1180.960938 1183.509033 1186.237427 1187.922485 1189.584473 1191.276245 1193.11792 1194.307617 1194.860962 1195.883301 1198.62793 1199.015381 1198.76062 1198.157227 1197.387451 1196.523071 1195.403809 1195.182617 1194.842896 1194.583496 1194.30249 1193.805664 1193.376221 1192.951416 1192.604492 1192.327271 1192.066162 1191.865479 1191.741211 1191.822632 1191.654907 1191.410034 1191.16626 1190.847046 1190.585815 1190.389282 1190.39209 1190.145752 1189.989502 1189.439941 1189.224731 1188.997314 1188.782593 1188.642822 1189.290405 1190.117798 1191.204468 1192.425171 1193.422607 1194.121948 1194.65564 1195.187134 1195.664062 1195.722412 1195.721558 1195.765747 1195.906372 1196.109741 1196.273926 1196.488159 1196.805908 1197.127441 1197.565552 1197.821289 1197.994507 1198.095215 1198.110352 1198.132568 1198.02063 1197.721924 1197.300537 1196.768311 1196.168945 1195.513184 1194.567749 1193.826904 1194.085815 1194.396729 1194.747559 1195.272949 1195.830078 1196.347046 1196.637329 1196.774414 1196.719116 1196.458252 1196.133789 1195.744141 1195.345215 1195.618408 1195.981812 1196.194824 1196.527588 1196.691162 1196.855103 1196.865723 1196.868286 1196.677124 1196.519531 1196.210815 1195.704834 1195.163208 1194.403198 1193.832642 1193.458374 1193.023071 1192.578369 1192.078125 1191.698975 1191.355591 1191.130737 1190.661011 1190.170654 1189.723389 1189.416626 1189.16748 1188.931519 1188.664307 1188.418701 1188.01709 1187.703613 1187.256104 1186.956421 1186.678223 1186.462402 1186.205811 1185.837402 1185.610962 1185.33667 1184.967041 1184.423584 1183.717407 1183.094971 1182.635376 1182.092651 1181.797607 1181.382568 1181.064209 1180.834351 1180.686401 1180.864746 1181.192139 1181.490112 1182.08374 1182.59021 1183.095215 1183.476807 1183.643066 1183.495728 1182.620972 1180.880981 1179.760254 1178.834595 1178.559937 1178.722046 1178.847412 1178.841309 1178.967407 1179.312744 1179.864502 1180.43396 1180.760986 1180.72522 1180.566284 1180.498047 1180.625244 1180.868042 1181.262695 1181.642334 1182.134521 1182.701172 1182.976685 1182.930176 1182.689453 1182.315186 1181.912109 1181.267578 1180.376831 1179.49707 1178.552734 1177.684326 1176.929688 1176.583984 1176.670898 1177.357666 1178.596924 1180.259521 1181.449829 1183.721802 1186.608032 1189.412842 1192.376099 1196.627075 1201.041748 1205.257568 1207.379639 1208.254272 1207.006348 1204.424927 1200.221924 1197.02417 1195.612793 1193.833374 1188.243042 1184.996582 1182.945068 1177.091431 1172.770508 1172.088867 1170.650146 1169.845459 1169.710815 1169.677856 1168.726562 1167.581421 1166.705566 1165.826538 1164.960449 1164.099731 1163.330444 1162.87146 1162.268433 1161.680542 1161.062622 1160.534058 1160.061768 1159.416138 1158.616211 1155.456909 1152.082031 1149.347534 1147.634033 1146.097412 1144.201782 1142.476562 1141.746094 1143.764526 1145.389648 1146.11853 1146.162476 1145.437378 1144.285156 1143.684937 1143.825439 1144.055664 1144.022705 1144.394531 1145.02063 1146.595459 1147.116211 1147.006226 1146.484619 1146.812012 1151.049316 1154.195801 1156.258545 1157.518433 1159.098755 1162.030396 1165.124146 1168.403198 1171.354614 1173.42041 1175.564209 1178.49231 1178.533325 1163.765015 1148.728149 1142.939575 1140.579712 1138.678223 1138.844482 1139.159668 1138.392578 1135.510132 1133.642578 1145.732788 1167.392822 1176.936768 1184.570435 1195.153931 1208.096069 1201.540405 1193.835449 1192.604736 1197.098389 1205.443848 1208.700562 1219.174561 1228.773315 1233.880859 1242.398071 1249.269409 1255.694092 1262.93811 1270.125732 1275.006836 1279.621094 1280.693848 1282.556519 1280.089966 1272.993164 1268.544922 1266.005127 1266.338013 1273.335815 1279.263184 1287.529907 1296.335449 1306.755981 1316.714355 1327.033936 1341.957031 1354.132446 1364.558105 1368.017944 1363.524292 1357.858521 1353.489746 1352.350464 1350.640381 1349.372192 1348.048706 1346.187866 1343.043213 1335.723022 1327.360229 1322.746338 1319.277222 1314.209961 1308.421387 1304.638062 1301.754028 1299.218384 1296.268433 1293.504028 1293.744629 1293.463745 1291.239136 1286.453979 1278.507812 1270.705566 1263.797852 1256.894653 1249.745117 1243.200562 1235.359131 1226.259033 1218.265137 1212.480103 1210.87793 1220.449951 1221.700073 1208.098633 1198.291748 1187.952637 1181.171875 1176.886108 1173.092041 1167.107666 1164.35498 1162.004517 1160.611816 1171.129639 1177.551025 1185.781128 1196.532227 1204.863037 1210.567017 1214.654175 1218.122803 1213.502075 1207.753418 1205.707031 1207.169556 1208.47937 1208.467896 1211.160767 1215.091797 1218.138672 1220.46814 1218.696655 1211.616943 1203.623413 1194.730347 1182.439331 1172.041626 1172.53833 1178.486816 1185.69397 1183.396729 1183.828369 1185.642212 1184.09436 1181.612305 1176.521851 1173.915161 1174.08606 1170.808105 1166.741333 1160.247803 1152.19873 1146.009888 1144.436768 1148.063599 1153.587769 1162.770386 1172.467163 1175.752686 1179.023193 1180.660034 1180.272095 1179.464966 1178.842163 1178.119873 1177.417603 1176.505127 1174.619751 1170.689209 1171.194336 1171.752563 1172.009521 1171.416748 1169.719482 1165.558594 1160.026001 1156.128174 1159.970825 1160.826294 1157.721436 1160.143921 1158.797607 1156.895264 1155.516968 1154.107178 1152.766113 1151.707764 1150.795898 1149.949829 1149.32666 1148.827271 1148.191284 1147.036255 1145.078125 1143.407104 1142.296021 1141.019775 1139.274658 1137.071411 1135.379028 1132.968994 1130.324097 1127.401489 1124.732544 1122.237915 1121.640015 1120.896362 1117.754639 1113.168457 1109.911255 1109.357788 1109.357422 1111.407593 1113.2677 1115.417358 1118.219849 1123.153687 1137.357544 1145.611938 1139.387085 1130.737549 1122.679688 1117.591064 1113.611816 1111.110107 1109.622681 1108.381348 1105.860596 1103.296387 1101.141479 1100.314941 1100.442505 1100.972168 1101.850952 1101.779175 1098.408813 1097.250854 1096.641113 1096.346802 1096.419556 1097.305054 1097.727051 1097.904541 1096.270386 1092.115356 1089.994019 1088.951294 1088.315674 1087.903687 1087.322876 1086.764404 -1187.70105 1185.476562 1182.722412 1176.557983 1170.559448 1164.02124 1150.742798 1137.959595 1136.568481 1150.467285 1156.677368 1165.824829 1173.807373 1173.819946 1171.728638 1168.421143 1164.837402 1161.937256 1157.959961 1150.56189 1139.742188 1133.825195 1133.108154 1132.297852 1132.321289 1132.65918 1132.182739 1131.487549 1130.484741 1129.645508 1129.083618 1128.672241 1128.392456 1127.918213 1127.617676 1128.768555 1131.255493 1132.686523 1133.465698 1134.420776 1138.049561 1140.01001 1140.003784 1138.830078 1137.02356 1136.081299 1139.359619 1141.386719 1142.380127 1142.927246 1143.241211 1143.915039 1144.814941 1147.646729 1158.266846 1165.572754 1164.762329 1161.410034 1158.783447 1156.015625 1157.689331 1158.744141 1160.768677 1164.917236 1165.577515 1166.238403 1170.418335 1177.655273 1183.550293 1187.470337 1187.807007 1185.554688 1184.218506 1176.924438 1169.559692 1159.312744 1160.779785 1167.686646 1176.741333 1186.219604 1194.431641 1196.88623 1197.331055 1197.786987 1197.95459 1198.015503 1197.861084 1197.820312 1197.916626 1197.995728 1197.748779 1197.455933 1197.276733 1197.081299 1196.952515 1196.654785 1196.943726 1196.926147 1196.44165 1185.779907 1178.587891 1175.333008 1174.265015 1172.171021 1170.239502 1169.677734 1170.082764 1172.707642 1175.102295 1177.617065 1179.602905 1181.503662 1182.677246 1184.09729 1185.384521 1188.228149 1190.708984 1192.290771 1192.897827 1193.578369 1194.814941 1195.871704 1196.403564 1196.899536 1197.082031 1196.594604 1195.976685 1195.309814 1194.872314 1194.472656 1194.029541 1193.61731 1193.265137 1192.880371 1192.528687 1192.160278 1191.874512 1191.696533 1191.588013 1191.593384 1191.60083 1191.49353 1191.341675 1191.283203 1191.012329 1190.838989 1190.795166 1190.563354 1190.427734 1190.043213 1189.672241 1189.44104 1189.230835 1189.067017 1189.574951 1190.633301 1191.977783 1193.428589 1194.30127 1194.814453 1195.301392 1195.916138 1196.444824 1196.699707 1196.723877 1196.624512 1196.764038 1196.824097 1197.016724 1197.231201 1197.464722 1197.642944 1197.97998 1198.257446 1198.41748 1198.523926 1198.623901 1198.484375 1198.38269 1197.959717 1197.442383 1196.762573 1195.953003 1195.340942 1194.579712 1194.311646 1194.505493 1194.755859 1194.971069 1195.353882 1195.787109 1196.49231 1196.785156 1196.936401 1196.88501 1196.666626 1196.342896 1195.976196 1195.488647 1195.875122 1196.30127 1196.661743 1196.770142 1197.044067 1197.145386 1197.266846 1197.118042 1196.984131 1196.572632 1195.926514 1195.365601 1194.844604 1194.560303 1194.107666 1193.721313 1193.305298 1192.908569 1192.459106 1192.145142 1191.849487 1191.585815 1191.083618 1190.679321 1190.237671 1189.861816 1189.685913 1189.549805 1189.279053 1188.837402 1188.559692 1188.125854 1187.799316 1187.539429 1187.213623 1186.862183 1186.661499 1186.244385 1185.971313 1185.729126 1185.251831 1184.691284 1183.972046 1183.471191 1183.10376 1182.802002 1182.408813 1181.992798 1181.554565 1181.252319 1181.310059 1181.612671 1182.084106 1182.544678 1182.783691 1183.38269 1183.812988 1184.114258 1184.134277 1184.099854 1183.414551 1182.223999 1180.857788 1180.247192 1180.147461 1180.516602 1180.690186 1180.486938 1180.273071 1180.37085 1180.687988 1181.163452 1181.371948 1181.317871 1181.103882 1180.990601 1180.943848 1181.160767 1181.447266 1181.821289 1182.268921 1182.631348 1182.956543 1183.154907 1183.012573 1182.607544 1181.914307 1180.973511 1179.906128 1178.829468 1177.735352 1176.518555 1175.469238 1174.713745 1174.688843 1175.347046 1176.608154 1178.054932 1179.668701 1181.940796 1184.06958 1185.91748 1188.183228 1190.847656 1193.704834 1196.453003 1197.138794 1197.331177 1196.921997 1194.525513 1192.529541 1191.427246 1189.621216 1186.827393 1184.940796 1182.183105 1178.008057 1173.278564 1170.440918 1170.137817 1169.359497 1168.58728 1168.280029 1167.932007 1167.30835 1166.379395 1165.434937 1164.766968 1164.114014 1163.30188 1162.738525 1162.187744 1161.650879 1161.195312 1160.79248 1160.269043 1159.740356 1159.010986 1157.053467 1154.396484 1151.128662 1148.276489 1144.872314 1144.836304 1146.08374 1146.911865 1147.108643 1146.999023 1147.15979 1147.194092 1147.106323 1146.785767 1145.149536 1144.741333 1145.560425 1145.897339 1144.732422 1144.65564 1144.828491 1145.399658 1146.501831 1147.658447 1147.67627 1148.237549 1151.24646 1153.794922 1155.616211 1156.81897 1158.359863 1160.983521 1163.9021 1168.126221 1171.069946 1174.193726 1177.074951 1180.5354 1184.159302 1166.069946 1153.803467 1146.838257 1144.369751 1142.532837 1143.244995 1144.621948 1145.451782 1139.724487 1135.351074 1135.643921 1160.594482 1173.883179 1184.714355 1193.116211 1203.43811 1203.089966 1196.978149 1195.44043 1195.953247 1203.435791 1211.270508 1220.88855 1230.677979 1237.635498 1245.457153 1250.915039 1257.66626 1264.918701 1271.299438 1277.216309 1282.074463 1282.8479 1282.999268 1280.76709 1278.212158 1272.774048 1267.870239 1267.447021 1269.858521 1278.622192 1285.807129 1293.569092 1303.251465 1311.831299 1321.449707 1334.397949 1347.806274 1359.216919 1368.085815 1367.918579 1365.268066 1360.649536 1357.994263 1356.821289 1355.257812 1354.36084 1351.483765 1347.063477 1340.979248 1331.871338 1329.731201 1325.644897 1320.048828 1313.613281 1307.537964 1303.984497 1301.495972 1298.76709 1296.863647 1295.81897 1295.138184 1293.627686 1288.004761 1282.338501 1275.278076 1267.4552 1258.744385 1250.257568 1241.987671 1234.034424 1225.968994 1218.02832 1209.934692 1205.520142 1210.203735 1220.922119 1210.888184 1199.503052 1189.16333 1181.6521 1177.776001 1173.994751 1167.887085 1165.253296 1162.99707 1161.45166 1167.681885 1172.565796 1183.723755 1193.661255 1203.393799 1209.595215 1209.305054 1206.954956 1205.289429 1201.726318 1200.081421 1201.029297 1204.335571 1206.931763 1209.28894 1215.750488 1219.029785 1221.534424 1220.425537 1212.617676 1203.460205 1191.840576 1182.000366 1178.147461 1185.1427 1186.907104 1188.80542 1188.819946 1189.744141 1191.10144 1190.339111 1187.487793 1185.165771 1184.67749 1184.389648 1178.879028 1174.102173 1167.492432 1156.910645 1148.354614 1144.771484 1145.436523 1152.273315 1158.885498 1170.296753 1174.934204 1180.703003 1183.424683 1182.997192 1181.671753 1180.991333 1180.452759 1179.856689 1178.828003 1176.827271 1174.431763 1174.777222 1174.89624 1174.853149 1174.054077 1172.378052 1170.129395 1163.083618 1158.25354 1161.497559 1163.337646 1159.35144 1162.210693 1161.961304 1158.680786 1157.189331 1155.684326 1153.554321 1151.701416 1150.178711 1149.106812 1148.893066 1148.820557 1148.306641 1147.092285 1145.257324 1144.143921 1144.045044 1143.349609 1141.914795 1139.915283 1137.833618 1135.728394 1133.610596 1129.400024 1125.74707 1123.259888 1120.84375 1119.352295 1117.158325 1113.772827 1111.246704 1110.556274 1109.328369 1110.304077 1111.789673 1113.312988 1117.384766 1123.7677 1134.912598 1138.099609 1132.404663 1125.164551 1119.360229 1114.314209 1110.450806 1108.521973 1107.200439 1105.858032 1103.514526 1100.428955 1098.023071 1097.790039 1098.322998 1100.739014 1103.006592 1107.334229 1105.016113 1097.436157 1096.741089 1096.299927 1096.249023 1096.488647 1096.689453 1096.036865 1093.998413 1092.152466 1090.621948 1089.530762 1088.795166 1088.002441 1087.352539 1086.744873 -1188.191528 1183.734375 1182.478271 1178.561768 1168.513062 1159.710449 1141.337524 1132.589966 1150.518066 1155.888794 1165.260864 1175.161011 1179.12793 1177.642212 1174.676392 1171.700928 1167.883179 1163.991821 1160.200439 1153.188965 1144.388916 1134.724243 1134.224976 1133.176514 1133.831787 1135.052246 1134.788818 1133.700562 1132.692871 1131.601562 1130.931152 1130.366943 1129.737671 1128.868042 1128.280762 1128.315674 1130.50061 1132.309692 1134.236084 1135.660156 1137.001831 1137.336182 1136.994385 1136.384766 1135.560547 1138.13916 1144.740234 1146.164551 1145.709106 1145.983887 1145.483521 1146.334839 1146.028198 1148.479736 1158.845947 1172.578369 1171.263916 1166.049194 1161.839355 1158.703735 1161.799316 1165.139893 1169.542725 1170.893555 1170.63269 1168.734497 1171.359009 1182.595581 1190.524048 1194.945801 1194.961914 1191.408447 1187.21106 1180.819458 1171.701538 1164.427002 1165.38855 1168.737061 1177.035156 1188.246826 1196.683716 1198.591919 1199.234009 1199.543091 1199.557495 1199.335815 1199.02478 1198.952759 1198.951294 1198.919312 1198.57373 1198.109619 1197.540771 1196.923462 1196.523071 1196.409058 1196.527954 1196.75769 1196.662842 1193.555176 1187.163696 1185.101074 1183.759155 1178.702637 1174.082642 1172.624146 1171.470947 1170.762695 1173.095337 1176.348389 1178.986206 1180.941895 1182.147217 1182.589844 1183.542236 1187.08374 1190.020874 1191.814575 1192.580322 1193.042847 1193.662598 1194.655396 1194.921265 1195.233521 1195.7323 1196.063599 1195.575928 1195.169922 1194.646729 1194.105957 1193.776733 1193.322754 1192.965576 1192.725708 1192.401367 1192.091675 1191.875488 1191.658447 1191.649048 1191.62915 1191.596436 1191.596558 1191.634155 1191.416626 1191.247681 1191.145874 1191.059692 1190.993286 1190.87561 1190.385132 1190.115601 1189.908813 1189.733887 1189.563354 1189.841553 1191.119873 1193.001831 1194.377441 1195.12915 1195.598145 1196.087402 1196.700439 1197.192993 1197.451782 1197.519287 1197.718506 1197.818726 1197.9198 1198.036255 1198.102905 1198.324341 1198.423462 1198.551147 1198.734253 1198.803223 1198.936157 1198.950684 1198.888794 1198.544556 1198.169922 1197.460083 1196.722046 1195.786865 1195.235962 1194.789062 1194.954468 1195.196289 1195.388428 1195.5271 1195.699585 1196.021973 1196.641968 1196.966675 1197.097656 1197.050781 1196.919922 1196.742065 1196.629517 1196.5354 1196.694336 1196.724365 1196.944336 1197.150024 1197.266113 1197.517822 1197.560425 1197.352295 1197.143921 1196.714233 1195.796265 1195.309937 1195.141479 1194.973755 1194.578857 1194.136719 1193.694946 1193.332153 1192.927124 1192.597656 1192.374634 1192.044922 1191.647461 1191.085327 1190.740845 1190.388672 1190.34375 1190.114746 1189.833252 1189.368286 1189.046387 1188.722656 1188.42981 1188.15625 1187.688599 1187.376221 1187.129517 1186.820923 1186.461914 1185.932617 1185.584839 1184.914673 1184.45166 1184.046387 1183.658936 1183.441406 1182.985962 1182.408691 1181.979126 1181.662476 1181.739136 1182.016968 1182.565552 1183.256836 1183.51001 1183.94812 1184.479004 1184.610962 1184.530151 1184.342285 1183.814941 1182.731445 1181.616821 1181.223999 1181.390259 1182.130249 1182.492676 1182.249878 1181.365967 1181.194336 1181.44397 1181.688965 1181.891235 1181.847046 1181.70166 1181.558594 1181.434204 1181.606689 1181.794312 1182.00647 1182.485962 1182.896729 1183.123291 1183.218628 1183.199585 1183.224854 1183.278198 1181.211426 1179.572998 1178.160522 1176.964111 1175.561157 1173.868652 1172.557373 1172.899902 1173.282349 1174.517212 1176.185669 1177.994019 1179.861084 1181.390381 1182.571411 1184.210693 1186.454712 1188.304688 1189.598999 1190.102051 1190.541748 1190.131714 1188.959595 1187.265503 1185.621338 1183.618042 1181.390991 1179.40979 1176.031738 1171.933716 1170.194092 1169.278809 1168.705933 1167.946899 1167.293701 1166.875732 1166.448486 1165.785034 1165.064209 1164.32605 1163.61499 1163.084717 1162.603516 1162.010986 1161.478027 1161.095825 1160.744507 1160.303223 1159.604736 1159.12915 1157.850586 1155.450439 1152.955566 1150.092407 1147.568237 1145.157593 1147.023804 1147.346069 1147.510132 1147.609741 1147.68042 1147.638428 1147.384277 1147.166626 1146.615601 1145.564209 1145.575073 1146.673584 1146.876709 1146.121094 1145.066162 1145.04126 1145.460205 1146.464478 1147.849976 1148.87915 1149.9823 1151.921631 1153.99707 1155.613037 1156.881348 1157.943359 1158.638184 1163.001343 1167.705933 1170.942261 1174.081177 1177.541992 1180.849854 1184.258789 1172.916748 1164.055054 1155.578247 1148.288208 1144.96814 1146.448242 1151.931885 1156.470459 1142.928223 1135.193237 1140.910278 1155.455444 1171.020386 1178.839722 1184.307007 1192.904663 1194.713501 1195.528931 1201.395142 1204.712402 1206.39917 1211.632935 1221.919067 1229.170166 1234.479248 1243.468872 1249.481934 1256.939209 1263.591309 1269.524048 1276.501831 1281.43396 1282.624268 1282.893433 1282.435181 1282.039062 1279.182373 1274.606323 1273.801025 1272.199951 1277.644409 1283.921265 1293.691406 1301.399536 1309.58667 1319.292725 1331.665405 1344.670898 1356.064575 1366.987671 1369.287109 1368.73999 1365.89563 1362.996094 1365.299438 1364.576416 1358.881348 1355.963135 1351.525391 1345.270874 1340.521118 1335.273193 1331.186646 1324.136841 1317.01062 1310.588013 1305.536133 1302.904297 1300.663208 1297.991577 1295.996338 1294.488525 1292.704102 1288.643433 1283.446899 1278.322632 1270.067627 1259.29187 1249.61792 1240.955444 1233.47998 1225.031738 1217.05835 1206.776978 1201.13208 1200.471436 1211.007935 1210.754272 1199.569336 1189.932739 1182.64917 1178.580444 1174.816284 1168.879639 1166.216675 1163.954834 1162.431641 1164.759766 1170.660889 1179.664185 1189.140625 1199.94519 1209.224487 1206.848633 1199.973999 1197.960571 1194.960938 1193.901489 1195.345459 1203.419312 1208.5271 1212.74585 1217.408081 1221.115723 1222.443237 1220.714478 1213.005127 1203.653076 1192.241333 1181.500977 1185.790405 1193.69104 1194.620483 1193.351074 1194.504395 1195.829712 1196.580444 1196.201782 1190.772583 1185.461548 1184.852783 1182.41626 1177.96228 1173.868774 1168.685425 1158.684814 1147.484375 1144.981079 1145.831055 1151.587036 1158.800415 1167.73291 1171.555908 1180.653564 1184.684692 1185.527222 1183.842529 1183.129517 1182.940674 1182.184082 1181.301636 1180.88916 1179.468994 1178.728394 1178.200928 1177.197754 1175.810303 1174.100464 1172.319946 1169.224731 1159.082642 1165.80249 1168.265747 1167.739014 1167.96106 1167.041016 1161.914917 1158.385376 1156.36377 1153.467651 1149.599365 1147.747925 1147.15564 1146.754761 1148.725464 1148.446533 1146.453125 1145.067749 1144.899048 1146.411621 1146.227051 1144.490967 1142.709473 1139.58606 1136.319458 1133.847778 1130.074219 1126.346436 1122.393921 1120.723145 1119.503296 1117.748535 1115.827148 1114.136475 1112.111938 1109.50061 1109.05603 1109.045776 1110.450195 1115.392212 1124.421265 1135.242676 1132.576904 1124.972656 1119.793823 1115.592651 1111.360596 1108.49353 1106.675659 1105.264038 1103.80542 1101.787231 1099.484131 1097.352783 1097.098022 1097.714111 1099.605835 1102.815918 1108.642578 1109.704956 1097.525269 1097.009155 1096.103516 1095.617554 1095.389526 1095.053345 1094.166626 1093.065674 1091.795654 1090.59729 1089.702026 1088.879517 1087.994507 1086.919556 1086.304443 -1188.954468 1186.341675 1184.809082 1179.791382 1166.152832 1152.936157 1133.503052 1147.013794 1155.922241 1165.634888 1176.945923 1184.038818 1183.96814 1180.734863 1177.165649 1172.921997 1168.381226 1164.61438 1159.97583 1153.554199 1147.163696 1144.373291 1143.785156 1136.714355 1142.585938 1147.656494 1146.561157 1141.612671 1134.978394 1133.554932 1132.665161 1132.288452 1131.758545 1130.314087 1128.873779 1128.507935 1130.043457 1132.037598 1134.04895 1135.67395 1136.271362 1135.479614 1133.996826 1134.744629 1136.469604 1144.708496 1150.323608 1159.366211 1159.483521 1155.999512 1150.579346 1150.45752 1149.61145 1150.052734 1160.885742 1173.707764 1179.288452 1169.49585 1165.949219 1165.82312 1167.87207 1172.577637 1181.374756 1181.963379 1178.827393 1173.734497 1173.195435 1184.928833 1196.330322 1198.558472 1197.537842 1193.721069 1187.911011 1180.095215 1170.343262 1167.249634 1168.589478 1172.786743 1179.113403 1183.252808 1194.578491 1199.877075 1201.859375 1201.871948 1201.307739 1200.71936 1200.247925 1200.022949 1199.947998 1199.755493 1199.384521 1198.761963 1197.289795 1195.587158 1195.489746 1195.47998 1195.52417 1195.99939 1196.379272 1193.818115 1189.336426 1186.320312 1184.654663 1182.336914 1178.015503 1175.601685 1173.776733 1171.549561 1172.877686 1176.202515 1179.327759 1182.334106 1184.848511 1187.087402 1187.743042 1189.303833 1191.175415 1192.312744 1192.924927 1193.525024 1193.939575 1194.340698 1194.66272 1194.721313 1194.840576 1194.768066 1194.59729 1194.460327 1194.178467 1193.933716 1193.519287 1193.211548 1192.996704 1192.607544 1192.414307 1192.179565 1192.005249 1191.880249 1191.802979 1191.848999 1191.77124 1191.811279 1191.801514 1191.608643 1191.578491 1191.473267 1191.383301 1191.272705 1191.139282 1190.771851 1190.556274 1190.299316 1190.077637 1189.991089 1190.031738 1191.812256 1193.957886 1195.346558 1196.082275 1196.631226 1197.173462 1197.601685 1198.050659 1198.397217 1198.646484 1198.835938 1198.945312 1198.972778 1199.043945 1199.189331 1199.222534 1199.26709 1199.318115 1199.359741 1199.335815 1199.337646 1199.347168 1199.130981 1198.769897 1198.212891 1197.418701 1196.457764 1195.476318 1195.272095 1195.328125 1195.539429 1195.689575 1195.839111 1196.084839 1196.326172 1196.567627 1196.843262 1197.165649 1197.317871 1197.374146 1197.227661 1197.305298 1197.26001 1197.169922 1197.343262 1197.391602 1197.376953 1197.47583 1197.613892 1197.743286 1197.742676 1197.61084 1197.304199 1196.816528 1196.204956 1195.916138 1195.749146 1195.428467 1195.08313 1194.616455 1194.157715 1193.783447 1193.408203 1193.150513 1192.881958 1192.575684 1192.118286 1191.683838 1191.352905 1191.000854 1190.979858 1190.698242 1190.330322 1189.938232 1189.640503 1189.343262 1189.114136 1188.731079 1188.347534 1188.016724 1187.599976 1187.137207 1186.727661 1186.364014 1185.790161 1185.390015 1184.98645 1184.554565 1184.209351 1183.891724 1183.478638 1182.838379 1182.225708 1181.995728 1182.084106 1182.328979 1182.999146 1183.600586 1184.12915 1184.615479 1184.922852 1185.09021 1185.033081 1184.649048 1184.056885 1183.000366 1182.005859 1181.810913 1182.20459 1183.185181 1183.404663 1183.399292 1182.662231 1181.968872 1181.960083 1182.168823 1182.292847 1182.323364 1182.17627 1182.130127 1182.097656 1182.180054 1182.161133 1182.328613 1182.879272 1183.235352 1183.445068 1183.422974 1183.234497 1183.221313 1182.974976 1181.211792 1179.204468 1177.613403 1176.221069 1174.829834 1173.057617 1170.84021 1171.041748 1171.001343 1172.670898 1174.489624 1176.069214 1177.439697 1178.911255 1179.978882 1181.28125 1182.726929 1184.06543 1185.078979 1185.80603 1185.83252 1185.227173 1183.883057 1182.445923 1180.529663 1178.384155 1176.20813 1173.299072 1170.90332 1169.723145 1168.668091 1167.907349 1167.250732 1166.571899 1165.99585 1165.557617 1165.105103 1164.592407 1163.866211 1163.235107 1162.557373 1162.008911 1161.548096 1161.147705 1160.838379 1160.46228 1160.171265 1159.685303 1159.049683 1157.373779 1155.634766 1153.599365 1151.114624 1148.662109 1146.457397 1145.794434 1147.213135 1147.830811 1148.103271 1148.182251 1148.0625 1147.819458 1147.377808 1146.908203 1146.282715 1145.786865 1146.164062 1146.83313 1146.896118 1146.34082 1145.502319 1145.354614 1145.976685 1147.060669 1148.260864 1149.522827 1151.032104 1152.776611 1154.493652 1156.359741 1157.850342 1158.9198 1159.912109 1163.540649 1168.399414 1170.733765 1173.77478 1177.464111 1180.735962 1183.873535 1184.913574 1174.729126 1161.808594 1153.315186 1149.098877 1151.582031 1158.775635 1158.495239 1140.097168 1137.275513 1146.638306 1157.96814 1168.251343 1184.556396 1186.312378 1193.008545 1196.748901 1199.825684 1207.212402 1209.878784 1219.273438 1220.686401 1223.323486 1229.930908 1232.322388 1233.123047 1243.036499 1247.601807 1256.806885 1268.036743 1273.63623 1278.92041 1279.149536 1281.175781 1281.80127 1282.207275 1281.979126 1279.765991 1281.721558 1281.630737 1279.392456 1285.518433 1292.804199 1302.060669 1309.158081 1317.061401 1330.586304 1343.668091 1352.900391 1364.110352 1370.028687 1369.779663 1368.441284 1366.837646 1367.422363 1365.790161 1361.718872 1358.826172 1354.488037 1348.970947 1344.527222 1338.621704 1333.105957 1326.325073 1318.248413 1313.429077 1308.73999 1305.085327 1301.335083 1297.811768 1293.892456 1291.334106 1288.956055 1286.63916 1284.093018 1279.754883 1270.020386 1256.452515 1244.154541 1233.294556 1225.855347 1218.258423 1205.808838 1197.059814 1196.58313 1194.206543 1203.563599 1209.95752 1199.846313 1190.496094 1183.452881 1179.187256 1175.46228 1169.779053 1167.268433 1165.207642 1163.722168 1163.637329 1169.671997 1176.533813 1184.585205 1198.507446 1209.630493 1201.426636 1192.112427 1192.45459 1192.800293 1194.912109 1199.851196 1205.401245 1210.740479 1215.626099 1219.972656 1223.488647 1224.3396 1221.184448 1212.886353 1202.667847 1190.398193 1181.52832 1196.271362 1201.057495 1199.335205 1197.208374 1197.140015 1197.644653 1197.553467 1194.410767 1186.270386 1180.951416 1178.55481 1176.876709 1173.633789 1168.636475 1161.695679 1151.498047 1145.838501 1147.037598 1145.926147 1149.568237 1161.265747 1173.431763 1178.788574 1183.838745 1184.297363 1188.117188 1187.81665 1186.949463 1186.456909 1185.429077 1184.613403 1183.704956 1182.615479 1183.205811 1181.26709 1179.316895 1177.296875 1175.643555 1174.05542 1172.635986 1172.501221 1171.038452 1172.375122 1172.373779 1171.880859 1172.260376 1167.914307 1160.949097 1157.052979 1152.979614 1147.313477 1146.154907 1144.591675 1144.70105 1149.161377 1148.793823 1147.393066 1146.050537 1145.190308 1146.287842 1147.115112 1146.975342 1145.578125 1140.981567 1137.139038 1133.760132 1131.745728 1128.180054 1122.934814 1122.37146 1121.035034 1119.477051 1118.102539 1116.80249 1114.758423 1111.730835 1109.482422 1108.631104 1108.623169 1110.295044 1123.381592 1129.041382 1124.057129 1119.368652 1115.798218 1112.267456 1109.048706 1106.890869 1105.054565 1103.664673 1102.296021 1100.912842 1099.256714 1097.451904 1096.837158 1097.154541 1097.669922 1100.319092 1101.670532 1101.832642 1099.496338 1097.062012 1095.609741 1094.778198 1094.444702 1093.963257 1093.258545 1092.317505 1091.340088 1090.498901 1089.728149 1088.919189 1087.744995 1085.762207 1085.433594 -1188.816406 1186.610229 1182.823242 1170.694824 1160.858398 1140.890259 1143.568481 1156.195557 1165.542725 1175.96814 1183.793945 1185.644043 1185.587158 1184.16748 1177.908203 1170.420654 1168.986084 1166.128296 1158.728271 1156.245483 1153.456909 1153.676147 1152.164429 1147.075562 1150.553711 1159.242676 1158.028564 1152.497559 1146.156982 1137.358276 1134.313232 1134.237183 1134.221436 1132.400269 1129.854614 1128.750244 1130.000366 1131.687378 1133.520752 1135.18335 1135.444946 1133.503418 1135.020508 1135.352295 1138.820435 1146.326294 1153.581299 1160.18457 1162.879517 1162.5979 1160.982056 1156.94104 1155.184692 1155.536133 1163.393433 1178.411133 1185.554688 1171.531128 1170.24292 1169.24585 1175.684204 1187.018188 1193.159668 1193.272461 1190.0979 1186.037231 1185.236206 1189.138672 1198.362183 1200.255371 1198.76709 1195.124268 1188.697998 1180.383667 1168.847046 1167.721191 1168.2854 1174.522339 1185.377563 1191.818604 1198.125244 1204.331421 1205.463745 1204.225098 1203.001587 1202.093506 1201.385498 1200.984375 1200.796753 1200.566284 1200.214111 1199.35498 1197.860229 1195.804321 1195.570801 1195.537598 1195.220459 1194.619141 1193.422241 1189.886963 1185.769775 1183.96582 1182.958008 1181.409668 1181.317993 1178.696899 1175.378662 1172.775391 1172.37793 1175.403076 1178.71814 1182.029785 1186.724121 1194.796753 1194.389282 1193.078735 1193.823853 1194.315918 1193.977661 1194.119507 1194.503296 1194.797363 1194.794678 1194.800171 1194.80127 1194.781982 1194.599365 1194.36438 1194.098267 1193.911499 1193.609497 1193.326538 1193.097534 1192.85498 1192.655273 1192.427734 1192.337402 1192.291626 1192.223999 1192.23645 1192.253662 1192.161621 1192.081421 1192.042969 1191.922241 1191.863281 1191.726562 1191.760986 1191.625732 1191.243286 1191.026001 1190.795776 1190.61499 1190.501831 1190.49231 1192.92749 1195.134766 1196.197876 1197.032715 1197.689453 1198.315308 1198.800415 1199.115845 1199.440674 1199.739136 1199.953491 1200.143555 1200.300415 1200.391479 1200.364136 1200.240356 1200.354858 1200.276001 1200.203003 1200.070435 1199.870117 1199.669189 1199.306274 1198.892578 1198.135132 1197.350708 1196.134155 1195.353516 1195.536499 1195.734497 1195.867432 1196.105225 1196.346924 1196.559204 1196.843384 1197.089478 1197.230957 1197.392456 1197.472168 1197.598511 1197.747192 1197.84436 1197.866699 1197.834106 1197.875854 1197.961304 1197.997437 1197.935059 1197.947754 1198.026733 1197.970703 1197.768433 1197.492676 1197.04187 1196.660889 1196.354492 1196.060669 1195.859741 1195.467041 1194.886963 1194.629761 1194.385254 1193.954956 1193.6073 1193.318848 1193.070923 1192.651733 1192.241821 1191.940308 1191.716675 1191.531494 1191.293091 1190.994873 1190.578491 1190.244629 1190.066772 1189.734741 1189.299683 1188.864624 1188.444214 1187.923218 1187.451294 1186.987305 1186.563232 1186.191895 1185.807129 1185.312866 1184.908813 1184.508057 1184.146362 1183.667114 1183.040283 1182.470581 1182.272217 1182.206421 1182.661011 1183.125 1183.878784 1184.509521 1185.003784 1185.399902 1185.506958 1185.337524 1184.882568 1184.117676 1183.012451 1182.268188 1182.095703 1182.639526 1183.56958 1183.88269 1183.842896 1183.541504 1182.941772 1182.824585 1182.576782 1182.612671 1182.625732 1182.598877 1182.606323 1182.556641 1182.550781 1182.550537 1182.608154 1183.14502 1183.420532 1183.460571 1183.374023 1182.876831 1182.224609 1181.711182 1180.471924 1178.765869 1177.11853 1175.644165 1174.124634 1172.40918 1171.169189 1170.848755 1170.799316 1171.246094 1173.208252 1174.187134 1175.195068 1176.390503 1177.544189 1178.870972 1179.944824 1180.713379 1181.622559 1181.841553 1181.580933 1181.017212 1179.92395 1178.516968 1176.450928 1173.845215 1171.042725 1170.039917 1169.040527 1168.085449 1167.189575 1166.467163 1165.811035 1165.107788 1164.578857 1164.200684 1163.849121 1163.330933 1162.711914 1162.117188 1161.619141 1161.129272 1160.449219 1159.994385 1160.008911 1159.93457 1159.581543 1159.090454 1158.071289 1156.449707 1154.61438 1152.381226 1149.796509 1147.034058 1146.377075 1147.069824 1147.70459 1148.278931 1148.536621 1148.496338 1148.389038 1147.895752 1146.771973 1146.541382 1146.436523 1146.663452 1146.436035 1146.925293 1146.830444 1146.235962 1145.8125 1145.777466 1146.495361 1146.625366 1147.798462 1149.69519 1151.614136 1153.457153 1155.396362 1157.450195 1159.499512 1160.75061 1162.15332 1164.818359 1168.897949 1171.793579 1173.865234 1177.109131 1181.129883 1183.96521 1183.80542 1176.246582 1166.547607 1156.789673 1152.498535 1154.638916 1162.101807 1145.076538 1136.266113 1143.544067 1155.734985 1170.366821 1178.874512 1185.29895 1190.310913 1196.378418 1199.593262 1204.660767 1210.834106 1216.562866 1221.587646 1224.723022 1229.523071 1232.116455 1233.286865 1242.734985 1247.840576 1252.984253 1256.208618 1261.419189 1268.943604 1271.043213 1276.271729 1279.62439 1280.387573 1282.212036 1282.490601 1282.334473 1282.842529 1283.163696 1284.408447 1288.246338 1293.443237 1300.001099 1306.38147 1312.384888 1322.303467 1334.765503 1344.30127 1357.351807 1367.443848 1370.148682 1369.950073 1369.555908 1367.82605 1364.568848 1364.420288 1362.652344 1355.981445 1351.514648 1345.912231 1339.447144 1333.912109 1327.84021 1323.032959 1316.923828 1311.204346 1306.10144 1300.96875 1295.84668 1293.409668 1289.533691 1282.376831 1280.391113 1283.660767 1279.853394 1263.849854 1242.658691 1239.462646 1231.679199 1221.081421 1219.020142 1213.901978 1207.59082 1195.189453 1193.884277 1195.14978 1206.247559 1199.240479 1190.105103 1183.660156 1179.925659 1175.94458 1170.289551 1168.357788 1166.47876 1164.938721 1163.799194 1167.685059 1173.638062 1183.50647 1196.508545 1205.650391 1196.922485 1188.822388 1189.382446 1193.639282 1198.244019 1204.094238 1209.011841 1213.886719 1218.52124 1223.206055 1227.256592 1227.732544 1222.250366 1213.877808 1203.513916 1192.047974 1191.650635 1205.91272 1207.102173 1202.408691 1196.674683 1195.546387 1194.737061 1192.569092 1187.429077 1182.46167 1176.213501 1170.331055 1170.563232 1168.830322 1162.933716 1154.906738 1147.049194 1147.798828 1150.231323 1147.220093 1146.102295 1154.865356 1165.325195 1173.601562 1184.118042 1189.847778 1192.43335 1192.322021 1191.427979 1190.48584 1189.30835 1187.887939 1186.476807 1185.571533 1184.805786 1182.2323 1180.029053 1177.462524 1175.583496 1174.436157 1173.802612 1173.512207 1173.238892 1173.166382 1172.861816 1171.140259 1171.648071 1168.011475 1161.998169 1158.715332 1154.453369 1150.710449 1147.780273 1143.897583 1134.36377 1141.111694 1147.573853 1147.716431 1146.945068 1145.667725 1144.329102 1143.412476 1143.938599 1143.916992 1140.294067 1138.130737 1135.827026 1134.706177 1132.13208 1128.640991 1125.875977 1123.582642 1121.919189 1120.578247 1120.941528 1118.886841 1115.519043 1112.206055 1109.524048 1108.588135 1109.048096 1116.291016 1120.646973 1118.961304 1115.649536 1112.670654 1109.456665 1107.192871 1105.146362 1103.401489 1102.09668 1100.827759 1099.560913 1098.180176 1097.176392 1096.301392 1096.255371 1096.579956 1097.352905 1097.555786 1097.510864 1097.102661 1095.825439 1094.762695 1094.338257 1093.911621 1093.448608 1092.798828 1091.9198 1091.008545 1090.428955 1090.213867 1089.851807 1088.741333 1086.231934 1085.222046 -1185.243774 1179.157349 1168.805908 1158.006226 1145.0896 1140.810791 1153.057739 1164.105103 1173.473877 1182.343994 1185.446777 1186.621948 1186.110474 1183.853394 1179.160278 1173.83728 1173.808228 1171.158325 1164.786133 1160.845459 1159.505127 1160.643799 1158.26416 1154.431763 1155.282471 1160.205811 1161.191772 1159.414185 1153.728027 1149.735352 1145.911865 1141.685181 1138.134766 1134.211914 1131.542725 1129.034546 1129.80896 1130.558594 1132.260742 1133.752197 1132.251099 1131.659912 1132.188843 1134.50769 1138.364258 1143.636841 1148.872803 1155.084106 1160.766479 1162.818848 1162.714478 1161.781128 1161.071899 1158.606323 1160.236206 1174.724243 1182.873291 1177.322754 1177.736938 1182.446533 1186.998047 1197.087769 1204.463867 1204.427002 1200.190918 1197.186157 1199.575928 1201.031982 1203.345703 1202.336182 1199.930664 1196.740234 1190.793091 1183.258179 1172.265137 1167.953857 1167.973022 1174.852051 1187.531128 1197.813965 1204.443726 1208.248047 1207.408203 1205.966309 1204.360107 1203.28894 1202.434082 1201.947998 1201.685669 1201.445557 1200.891724 1200.184937 1199.031738 1197.742798 1196.925415 1196.588745 1196.205566 1195.209229 1193.417725 1189.057617 1184.673828 1183.54834 1184.475464 1184.950928 1184.197021 1181.140625 1177.086914 1174.38501 1172.759766 1174.786377 1177.58252 1181.228882 1186.067505 1195.721069 1195.762695 1195.750366 1195.848145 1195.613525 1195.335083 1195.326782 1195.390381 1195.40918 1195.199219 1194.987549 1195.003052 1195.012817 1194.722656 1194.513916 1194.261597 1194.029175 1193.856201 1193.598999 1193.434937 1193.232544 1193.109619 1193.019165 1192.906616 1192.918091 1192.855713 1192.855469 1192.824829 1192.678955 1192.531128 1192.379883 1192.365723 1192.304688 1192.302612 1192.211182 1192.172974 1191.791016 1191.517944 1191.286377 1191.129272 1190.927246 1191.416992 1193.996216 1195.831299 1197.050415 1197.919067 1198.732178 1199.455322 1200.006714 1200.436768 1200.712036 1201.014893 1201.309204 1201.572876 1201.646484 1201.650391 1201.684326 1201.441162 1201.2854 1201.110107 1200.952881 1200.652588 1200.382935 1200.014771 1199.550781 1198.882935 1198.164795 1197.122803 1195.538818 1195.493286 1196.038574 1196.133301 1196.276611 1196.518921 1196.740845 1197.031494 1197.344604 1197.538818 1197.610352 1197.760986 1197.882446 1198.067139 1198.266479 1198.341431 1198.373413 1198.342651 1198.393799 1198.436768 1198.554199 1198.549805 1198.434326 1198.300293 1198.254028 1197.935791 1197.648682 1197.339355 1196.974976 1196.695435 1196.367798 1195.991333 1195.521484 1195.307495 1195.216675 1194.947998 1194.496094 1194.039673 1193.769165 1193.61499 1193.24707 1192.87561 1192.548828 1192.377319 1192.230347 1191.907349 1191.613647 1191.234375 1191.021729 1190.705933 1190.302368 1189.854126 1189.278198 1188.707886 1188.113159 1187.619263 1187.1604 1186.834961 1186.452393 1186.014282 1185.478149 1185.075684 1184.630005 1184.162231 1183.621948 1183.021851 1182.53479 1182.394409 1182.699585 1182.946045 1183.377441 1184.073242 1184.793335 1185.392944 1185.751709 1185.882568 1185.631958 1184.994263 1184.011597 1183.030518 1182.371826 1182.304199 1182.941528 1183.917603 1184.288574 1184.384766 1184.173706 1183.970337 1183.658447 1183.30835 1182.748779 1182.866333 1182.948242 1182.954956 1182.807007 1182.693481 1182.612061 1182.839844 1183.115112 1183.44812 1183.433716 1182.732178 1181.968994 1181.381714 1180.609009 1179.538818 1178.187622 1176.714478 1175.044434 1173.558716 1172.677979 1171.999756 1171.276367 1170.836792 1170.759399 1171.244019 1172.149414 1172.8396 1174.355957 1175.407227 1176.291138 1176.944092 1178.042847 1178.150146 1178.178345 1177.963867 1177.541016 1176.631226 1175.015137 1172.799072 1170.453735 1169.370972 1168.357178 1167.571167 1166.630859 1165.856934 1165.025879 1164.269775 1163.632568 1163.060059 1162.768188 1162.531006 1162.151978 1161.649292 1161.061157 1160.494507 1160.204712 1159.558838 1158.889771 1158.919556 1158.925171 1158.760498 1158.300293 1157.115479 1155.547852 1153.807617 1151.935059 1149.580688 1147.600952 1147.428101 1147.866211 1148.408691 1148.824707 1148.930786 1148.895508 1148.588623 1147.665894 1146.696655 1146.616577 1146.633179 1147.136108 1146.856445 1147.252563 1147.020386 1146.418335 1146.012939 1146.29541 1146.714722 1146.623047 1147.643799 1149.710815 1151.796875 1153.909668 1156.04126 1157.620605 1159.351196 1160.640381 1162.229248 1164.944946 1167.763306 1169.922852 1171.390259 1176.049072 1181.091553 1184.58667 1179.004272 1171.596069 1163.893433 1156.661987 1151.21814 1148.803955 1144.256104 1138.615723 1138.606689 1145.602783 1156.678955 1173.466309 1179.970337 1183.480713 1188.000122 1195.00415 1196.395996 1203.436401 1208.167847 1216.496582 1220.862549 1226.327026 1232.385498 1237.052734 1245.206543 1246.263306 1248.013794 1258.924438 1265.425049 1269.713989 1269.3125 1269.788208 1275.703979 1278.961792 1281.032715 1282.031128 1282.209106 1281.267212 1282.099854 1282.997681 1284.946655 1288.903931 1294.062866 1295.62915 1301.239014 1306.783447 1313.71582 1325.025513 1336.747803 1353.235107 1365.512939 1370.279907 1370.63269 1370.251709 1370.488159 1369.913818 1369.821777 1367.774414 1362.412842 1356.439575 1351.693481 1343.802856 1339.613892 1333.500488 1329.075073 1320.453003 1312.860474 1305.541382 1298.167969 1292.389526 1291.59729 1289.055664 1283.557251 1281.065063 1270.40625 1268.167236 1261.043823 1259.326172 1254.758667 1244.378052 1236.51062 1228.868774 1218.761353 1208.620361 1200.620361 1196.092773 1193.296753 1196.026367 1196.197998 1189.22998 1183.207764 1179.790161 1176.285767 1170.344116 1169.950073 1168.22168 1166.256226 1164.909668 1166.268311 1171.508789 1181.572632 1190.971924 1196.051025 1189.823853 1182.541016 1188.212158 1194.787231 1200.98584 1207.162598 1212.240845 1217.227173 1222.015991 1228.205078 1231.724976 1232.243896 1225.133667 1216.098267 1207.675903 1193.78418 1200.501221 1211.705566 1209.262451 1201.781128 1194.461792 1190.223755 1186.733032 1184.128906 1180.546753 1175.608765 1171.259277 1167.442017 1164.165283 1162.792847 1159.970703 1152.874146 1146.246338 1157.533081 1159.114014 1152.616699 1145.798096 1151.658813 1159.040161 1171.133179 1182.925415 1193.649414 1196.329102 1196.146729 1195.47937 1194.591309 1192.947144 1191.201782 1189.780273 1187.875854 1185.939941 1183.953369 1174.867798 1174.584106 1174.162598 1172.96936 1173.417236 1172.295166 1173.500977 1172.662354 1166.863892 1164.043823 1163.620483 1157.671875 1160.472046 1159.078491 1154.374512 1150.438477 1148.747559 1148.083618 1142.385864 1132.813354 1137.830688 1144.755615 1147.530273 1146.942383 1143.307739 1138.338013 1134.578979 1136.683594 1138.091064 1137.915527 1136.848145 1135.863892 1135.252075 1131.856201 1127.440796 1125.009766 1123.765015 1122.184082 1122.713745 1122.76123 1119.56958 1113.758423 1109.89502 1108.723633 1108.082031 1108.321289 1108.980957 1111.927124 1111.868286 1109.274292 1106.773315 1104.605347 1102.827515 1101.758423 1100.567261 1099.280273 1097.915649 1096.967896 1096.18335 1095.544189 1095.373779 1095.703247 1096.124023 1096.248535 1096.111206 1095.270142 1094.587646 1094.327271 1094.161377 1093.861206 1093.357788 1092.646484 1091.537842 1090.813354 1090.545532 1090.954834 1091.743408 1092.123291 1088.848267 1085.382202 -1171.457153 1162.150146 1149.624023 1143.082397 1144.283813 1152.340088 1160.842896 1173.068726 1181.683228 1185.477417 1187.657959 1188.008789 1186.771973 1182.866333 1183.912842 1183.787964 1179.143066 1173.323608 1168.235474 1165.809814 1164.373047 1163.210571 1160.959717 1157.65918 1156.93042 1159.896851 1162.330078 1161.440063 1159.058838 1157.206543 1155.379883 1149.631348 1143.828369 1137.593384 1133.908569 1130.809326 1129.507812 1130.126343 1130.441895 1130.604736 1132.058838 1134.801025 1134.874268 1132.770264 1135.925903 1138.491333 1142.2677 1146.165283 1153.136353 1159.738037 1162.823364 1166.202759 1166.124023 1163.760376 1163.869019 1170.388672 1174.958374 1178.21106 1182.131348 1191.654663 1198.96228 1207.418457 1210.196533 1210.008545 1208.338501 1206.896606 1207.661621 1208.157227 1207.416504 1204.153809 1200.879517 1197.424316 1191.261108 1183.674683 1174.851318 1169.179688 1168.317627 1174.418823 1187.173096 1198.232056 1205.232422 1208.318726 1207.577148 1206.566162 1205.130615 1204.057495 1203.187012 1202.742554 1202.399292 1202.104858 1201.682129 1201.017578 1200.056396 1199.060547 1198.056274 1197.460327 1196.828491 1196.215576 1195.676758 1193.323608 1189.665161 1187.589844 1186.924805 1185.723511 1183.565063 1181.429321 1178.455688 1175.824829 1173.895752 1174.400146 1176.75647 1179.53772 1183.039795 1191.351807 1195.992554 1196.132446 1196.194092 1196.396484 1196.206177 1195.89209 1195.82373 1195.560669 1195.542847 1195.548218 1195.553833 1195.3927 1195.076782 1194.823853 1194.585205 1194.432373 1194.238281 1194.070679 1193.861816 1193.725098 1193.693115 1193.717163 1193.685059 1193.720459 1193.642212 1193.610229 1193.475464 1193.250366 1193.033203 1192.787354 1192.642944 1192.649414 1192.611084 1192.671875 1192.567505 1192.246216 1191.932251 1191.763428 1191.547119 1191.399536 1193.173462 1195.389893 1196.564453 1197.719482 1198.751343 1199.675903 1200.599731 1201.355835 1201.914185 1202.240723 1202.558472 1202.87561 1203.008057 1203.045898 1202.87561 1202.745117 1202.563721 1202.244751 1201.911133 1201.626587 1201.193726 1200.788574 1200.3302 1199.735962 1199.017456 1198.189087 1197.027344 1195.455566 1195.920654 1196.428101 1196.527222 1196.783325 1197.005127 1197.118774 1197.432251 1197.800293 1197.965698 1198.210815 1198.283447 1198.339844 1198.453613 1198.619019 1198.768433 1198.907837 1198.812256 1198.881714 1199.014038 1199.151245 1199.075684 1198.984497 1198.663086 1198.529541 1198.281128 1198.072754 1197.735962 1197.446533 1197.175537 1196.831177 1196.473755 1196.086914 1195.900391 1195.768555 1195.463501 1194.932495 1194.419434 1194.201294 1194.21936 1193.959961 1193.608276 1193.173218 1193.003784 1192.715332 1192.511475 1192.335815 1191.927246 1191.730957 1191.314087 1190.827148 1190.273804 1189.616821 1188.908325 1188.312622 1187.819824 1187.425415 1187.028198 1186.603271 1186.098511 1185.655151 1185.169312 1184.62207 1183.988525 1183.407959 1182.752197 1182.521606 1182.520874 1182.991699 1183.105225 1183.695435 1184.38147 1185.172241 1185.841431 1186.088379 1186.237671 1185.811523 1185.077148 1183.751953 1182.90625 1182.62915 1183.089966 1183.616577 1184.369263 1184.722778 1184.890625 1184.885254 1184.756592 1184.338745 1183.806885 1183.306396 1183.164429 1183.21582 1183.161743 1182.830811 1182.571899 1182.348633 1182.410889 1183.039551 1183.295898 1182.848999 1181.926514 1181.203003 1180.550659 1179.714478 1178.726807 1177.533813 1176.088501 1174.505859 1172.837402 1172.022827 1171.915283 1171.735107 1171.060669 1170.599854 1170.601685 1170.782471 1170.947632 1172.426392 1173.566284 1174.07605 1173.950928 1174.350708 1174.540161 1174.659058 1174.55188 1174.307129 1173.492554 1172.164185 1170.335327 1169.040161 1167.923096 1166.991577 1166.119629 1165.40918 1164.538696 1163.65564 1162.770752 1162.018799 1161.46936 1161.359497 1161.240112 1161.021118 1160.538452 1160.0802 1159.687012 1159.165771 1158.71167 1158.350708 1158.303833 1158.389526 1157.766846 1157.014404 1155.945923 1154.635498 1153.273193 1151.904785 1150.558716 1149.450684 1148.996094 1148.958008 1149.14624 1149.386108 1149.446167 1149.374512 1148.899658 1148.14917 1147.534302 1147.184814 1147.016968 1147.654175 1147.748535 1147.466553 1147.139893 1146.571045 1146.215698 1146.736816 1146.782349 1146.632446 1147.81311 1149.921021 1152.029297 1154.216309 1156.675903 1158.807129 1158.584961 1158.542236 1161.611084 1164.875854 1167.119873 1168.833374 1171.225464 1175.900757 1180.974731 1182.382324 1171.709839 1164.505737 1158.658203 1152.375 1147.245483 1141.103027 1136.928589 1136.617432 1144.593018 1156.771118 1164.72583 1170.9823 1177.954956 1183.68457 1183.021973 1188.496704 1196.332397 1205.841187 1211.658936 1216.896484 1221.745483 1227.405151 1230.974609 1239.202759 1246.093262 1254.079468 1257.060181 1256.048828 1268.670166 1271.302368 1272.965088 1275.266968 1277.843262 1280.343018 1281.027222 1281.751587 1281.209473 1278.65564 1276.274536 1279.55542 1281.58252 1284.83606 1288.276123 1289.672852 1292.275269 1301.273315 1310.990601 1321.213501 1332.339966 1345.838379 1359.547974 1368.437134 1370.028687 1370.091675 1372.004517 1376.385376 1378.19812 1373.437378 1365.715454 1360.23999 1355.679688 1348.901367 1343.924561 1337.73645 1331.638916 1322.372437 1313.047119 1304.512329 1299.080688 1294.933838 1293.246948 1290.573364 1287.329834 1283.773804 1278.520508 1277.724365 1274.145142 1266.143921 1257.887451 1246.898926 1236.625977 1228.293823 1216.405884 1206.430542 1200.825806 1196.010376 1191.169678 1183.740967 1184.902466 1184.98645 1182.48584 1179.81897 1176.794067 1171.502319 1171.666382 1170.173462 1167.845459 1166.205566 1166.103394 1171.674316 1177.91333 1183.251953 1185.06604 1181.846313 1185.282349 1191.299072 1196.665527 1203.135132 1209.324585 1215.085571 1220.852783 1227.615112 1233.327637 1235.504883 1235.19397 1229.99353 1218.280029 1210.231934 1197.101807 1209.494141 1211.012207 1207.9823 1199.348511 1192.317017 1184.686035 1181.220703 1179.668945 1173.356812 1169.999146 1170.126099 1168.331665 1158.542969 1158.002686 1156.328125 1153.704956 1156.303833 1162.473022 1163.274536 1159.283203 1150.817017 1150.259399 1159.833252 1172.914307 1184.219238 1195.213989 1198.147583 1197.939575 1197.747192 1197.402588 1196.161865 1194.516602 1192.688354 1189.997192 1187.179199 1184.692627 1173.206787 1159.744385 1162.37561 1167.197144 1171.697266 1166.872681 1165.552002 1164.06311 1156.94397 1156.523071 1160.186768 1154.581543 1151.299805 1155.379028 1150.486694 1145.866333 1146.148438 1146.705444 1146.405151 1134.4823 1132.995728 1137.118896 1142.04187 1144.767456 1141.791992 1137.723267 1134.691772 1132.744751 1127.223877 1133.629883 1135.870239 1134.621826 1132.854004 1129.602783 1125.62915 1124.036621 1123.28418 1122.493896 1121.923584 1123.109619 1122.05957 1116.34314 1112.185913 1110.195557 1108.784058 1106.559326 1104.926392 1106.216797 1106.026978 1104.844971 1102.957275 1101.420166 1100.454834 1100.005859 1098.893921 1097.466675 1096.343262 1095.519775 1094.702393 1094.342407 1094.403564 1094.671509 1094.880493 1094.760986 1094.424561 1094.133301 1094.095093 1094.136963 1094.39209 1094.686768 1093.953857 1092.557129 1091.191406 1090.515747 1090.849731 1091.960571 1094.803467 1097.758423 1092.787598 1087.561646 -1159.640747 1145.384888 1145.643799 1150.534058 1155.168335 1162.792847 1173.021729 1181.115967 1187.411377 1190.358154 1190.634766 1190.301758 1188.914673 1186.938599 1186.935303 1186.052002 1183.508667 1174.922974 1171.024292 1170.630737 1167.997559 1165.723145 1162.497803 1158.880981 1158.269409 1161.25061 1164.387329 1164.315308 1162.875854 1161.737793 1160.830811 1158.158203 1148.986206 1142.69397 1137.94751 1135.006714 1134.842529 1133.648071 1132.832764 1134.995972 1135.11145 1135.802734 1135.650513 1135.023926 1133.665894 1134.724487 1135.270386 1137.742554 1143.450806 1149.894531 1159.666138 1170.651489 1171.355469 1170.030029 1172.464111 1170.863281 1171.807007 1179.880127 1183.170166 1195.829956 1206.006592 1210.723145 1211.446899 1210.977539 1209.879761 1208.847534 1208.768677 1208.812988 1208.151611 1204.321899 1200.676758 1196.212158 1188.688232 1181.69458 1175.677612 1169.201294 1168.707886 1175.152954 1186.03186 1196.596436 1202.882202 1207.901489 1207.508789 1206.499512 1205.255859 1204.297241 1203.539062 1203.146973 1202.939819 1202.687256 1202.351685 1201.707397 1200.995239 1200.025879 1199.079956 1198.315674 1197.674316 1197.250244 1196.622559 1195.859863 1193.994263 1191.1521 1187.902466 1183.25415 1182.707886 1182.213135 1180.559692 1177.87146 1175.662109 1174.784424 1174.762695 1177.962158 1181.700928 1187.306274 1194.259277 1196.204468 1196.525513 1196.850464 1196.920288 1196.787964 1196.513184 1196.234131 1196.203491 1196.322876 1196.272339 1195.828247 1195.366821 1195.077026 1194.858276 1194.74939 1194.590454 1194.427368 1194.405029 1194.43042 1194.411987 1194.463379 1194.637817 1194.501343 1194.439453 1194.255859 1194.023071 1193.75 1193.472412 1193.148804 1193.021973 1192.994141 1192.976196 1193.044556 1193.055664 1192.584351 1192.346802 1192.129517 1192.154297 1193.325806 1194.697144 1196.095215 1197.225342 1198.429077 1199.719604 1200.845825 1201.973633 1202.924561 1203.578369 1203.999634 1204.308838 1204.488037 1204.55542 1204.28894 1204.039551 1203.827881 1203.43811 1203.10498 1202.629761 1202.207642 1201.723633 1201.31189 1200.786499 1200.118164 1199.379883 1198.483154 1197.545288 1197.025146 1196.860352 1196.836548 1196.97583 1197.155029 1197.37207 1197.586792 1197.821899 1198.212402 1198.456421 1198.739502 1198.84082 1198.865723 1198.937378 1199.084961 1199.220581 1199.282104 1199.371704 1199.489258 1199.675537 1199.634277 1199.618408 1199.406372 1199.154785 1198.792847 1198.577759 1198.327026 1198.05481 1197.819824 1197.568481 1197.199707 1196.879272 1196.53125 1196.325562 1196.097046 1195.594727 1195.058228 1194.737671 1194.865723 1194.822754 1194.629517 1194.155273 1193.832031 1193.550171 1193.334473 1193.271484 1193.010864 1192.641602 1192.345581 1191.832031 1191.314697 1190.618774 1189.837402 1189.227661 1188.57959 1188.063843 1187.572754 1187.120483 1186.63916 1186.127197 1185.632812 1185.127441 1184.458862 1183.760132 1183.184814 1182.720703 1182.672974 1182.721924 1183.303101 1184.031128 1184.263428 1184.969116 1185.692749 1186.232788 1186.539551 1186.47522 1185.959229 1185.119019 1183.622437 1182.970215 1182.913086 1183.473145 1184.217407 1184.809937 1185.12085 1185.45752 1185.51709 1185.33606 1184.984253 1184.447266 1184.023926 1183.811157 1183.500732 1182.983643 1182.611816 1182.334106 1182.156982 1181.89563 1181.918945 1181.980713 1181.727173 1181.111328 1180.418091 1179.684204 1178.809814 1177.943115 1176.901245 1175.522339 1173.866699 1171.924316 1170.931885 1171.004028 1171.337646 1171.155762 1170.32373 1170.082886 1169.942871 1170.022949 1170.646606 1171.403076 1171.791138 1171.61499 1171.220703 1171.455811 1171.373413 1171.629761 1171.338257 1170.675781 1169.935059 1168.809937 1167.315674 1166.343262 1165.532715 1164.796265 1164.112305 1163.408081 1162.561768 1161.407593 1160.356445 1159.749268 1159.872192 1159.858521 1159.674927 1159.44458 1159.044312 1158.713379 1158.511963 1158.122681 1157.936401 1157.854492 1157.249512 1156.255005 1155.616211 1155.853394 1154.083496 1153.165771 1152.282837 1151.390625 1150.735962 1150.276978 1150.006226 1149.924316 1150.090698 1150.051636 1149.777954 1149.460205 1148.952881 1148.369751 1148.15686 1148.147705 1148.31604 1148.253418 1147.814087 1147.026489 1146.502808 1146.70813 1147.278198 1146.6073 1146.63269 1148.121948 1150.268677 1152.216919 1154.422485 1156.724487 1158.719604 1160.25415 1160.896973 1162.512695 1165.052246 1167.393066 1169.583008 1172.036011 1175.074829 1177.307373 1174.92334 1164.872559 1156.855713 1151.624512 1145.710327 1140.291016 1137.860596 1140.309082 1145.765747 1148.282837 1158.568115 1171.447754 1175.696899 1182.469238 1184.802002 1186.406006 1190.521729 1194.042114 1203.022705 1209.598755 1218.169434 1224.401245 1230.480103 1235.190186 1240.696655 1249.289062 1257.905029 1260.919556 1262.461914 1266.030029 1269.563843 1275.133179 1278.487793 1281.354004 1282.491455 1282.546875 1282.470215 1279.808594 1273.506958 1268.413696 1271.038574 1273.547363 1280.709961 1279.950684 1279.762451 1289.129517 1297.84436 1306.979736 1315.801758 1325.268921 1336.210449 1350.636353 1364.673828 1365.363403 1365.627197 1369.856934 1375.539673 1379.889648 1377.030396 1368.004028 1362.591064 1355.913696 1350.057739 1344.535034 1338.70459 1331.666382 1322.759888 1312.905151 1305.135132 1303.740845 1301.060059 1297.921143 1294.583374 1290.912842 1287.638794 1283.541016 1282.935303 1275.813721 1261.74646 1250.160645 1240.978271 1230.877319 1218.03125 1209.026733 1205.320923 1194.52771 1194.991455 1195.643188 1193.478394 1188.322754 1183.766113 1182.080566 1180.236938 1177.824707 1173.697144 1172.769775 1171.430054 1169.245728 1167.224365 1166.279907 1170.069092 1174.326904 1178.884277 1180.638428 1182.927124 1190.424683 1196.750488 1200.816528 1205.168335 1211.222412 1217.750732 1225.076416 1232.487671 1237.072632 1238.838745 1237.067993 1231.04541 1220.964722 1211.983032 1205.724487 1209.359741 1208.533325 1198.93396 1192.769043 1188.881592 1184.492554 1180.822021 1177.480347 1174.153809 1172.374023 1171.711304 1171.744995 1171.213501 1161.186035 1156.935669 1155.627563 1159.525391 1167.347412 1168.586426 1165.141357 1158.494141 1149.413574 1157.324097 1169.104736 1179.108032 1189.691406 1198.220703 1198.908813 1198.865723 1199.198975 1198.575806 1197.035645 1195.197144 1191.473755 1186.276855 1176.692139 1170.82312 1163.558594 1159.812256 1158.735718 1160.356445 1157.117065 1158.52356 1155.734131 1151.527222 1147.41626 1151.91626 1149.157349 1144.220459 1148.951538 1148.404785 1143.547607 1141.03894 1140.956665 1139.665649 1135.225952 1131.128174 1131.952271 1135.767334 1137.688232 1136.880615 1135.605469 1135.041016 1133.133423 1123.710938 1122.021484 1126.795776 1127.627808 1124.965576 1122.63916 1121.744263 1121.630493 1121.855347 1121.532959 1119.37439 1119.622559 1118.179199 1115.363037 1111.984741 1109.763306 1110.216797 1107.088623 1100.262329 1098.429321 1099.911011 1099.526123 1098.959106 1098.366333 1097.910645 1098.26123 1097.026978 1095.314941 1094.161621 1093.68042 1093.217651 1093.213745 1093.403564 1093.616821 1093.592041 1093.575684 1093.267334 1093.264404 1093.567627 1094.418335 1097.493774 1097.419189 1094.941162 1092.098389 1090.487427 1089.995728 1090.858154 1092.91394 1097.397949 1098.623047 1098.018066 1093.494385 -1145.325317 1148.639404 1152.898682 1156.332275 1162.637695 1172.259033 1180.297485 1189.169922 1196.161987 1194.777344 1192.970581 1192.305908 1191.809448 1190.640381 1189.580688 1187.615234 1184.597778 1179.704956 1176.331177 1173.910889 1170.306274 1169.274658 1166.312988 1159.981812 1160.136841 1165.299683 1168.003418 1167.969116 1166.304688 1164.512573 1163.036865 1160.817383 1154.509399 1145.666138 1141.756958 1138.903442 1137.360107 1136.35437 1135.5 1136.221313 1136.549561 1136.434692 1136.182861 1135.618286 1133.504517 1134.777588 1135.32959 1136.26062 1137.729858 1143.697998 1155.212158 1168.87915 1173.404175 1175.598755 1183.257202 1186.789185 1177.289917 1182.036987 1188.473511 1196.469849 1207.151489 1210.830322 1211.622192 1211.280151 1210.882202 1210.15332 1209.790039 1209.383301 1208.758911 1205.057251 1197.020386 1191.775146 1183.814453 1181.491455 1180.400513 1170.919922 1168.905518 1173.216309 1182.471558 1194.269165 1201.271606 1206.238892 1207.006958 1206.306396 1205.008301 1204.265259 1203.617676 1203.403687 1203.238159 1203.184937 1202.936523 1202.452759 1201.755615 1200.807495 1199.991943 1199.266846 1198.587769 1198.119019 1197.517212 1196.856812 1195.894653 1193.563232 1190.919312 1187.303101 1187.297729 1185.531006 1182.633423 1180.073242 1177.775757 1176.272461 1175.62207 1176.935059 1180.574341 1182.447021 1193.523926 1196.183716 1196.755493 1197.146118 1197.365601 1197.384155 1197.24939 1196.938843 1196.857178 1196.944336 1196.920044 1196.554565 1195.903076 1195.358765 1195.317017 1195.117065 1194.957886 1194.990479 1195.076172 1195.075439 1195.192383 1195.335571 1195.371704 1195.217163 1195.042358 1194.773682 1194.461182 1194.189087 1193.828491 1193.536499 1193.417725 1193.317261 1193.351196 1193.543457 1193.59314 1193.017334 1192.801392 1192.559204 1193.745117 1195.451416 1195.968628 1196.90625 1198.200928 1199.555664 1200.933228 1202.280884 1203.704712 1204.712402 1205.456787 1205.810425 1205.9729 1206.025391 1206.084229 1205.67627 1205.209595 1204.764282 1204.320312 1203.911865 1203.388306 1202.982788 1202.447754 1202.024658 1201.403198 1200.764526 1200.042236 1199.152344 1198.427734 1197.900146 1197.594604 1197.281738 1197.374634 1197.529297 1197.727051 1197.954346 1198.296997 1198.677124 1199.017334 1199.346558 1199.538452 1199.421509 1199.470093 1199.561646 1199.692383 1199.794067 1199.977783 1200.191162 1200.274536 1200.145264 1200.005493 1199.696533 1199.417969 1199.234497 1198.962524 1198.685913 1198.466064 1198.148804 1197.84375 1197.591431 1197.232178 1196.901855 1196.513428 1196.094116 1195.565918 1195.131836 1195.202026 1195.477539 1195.512207 1195.211548 1194.752686 1194.356323 1194.227539 1194.119263 1193.978638 1193.748169 1193.310303 1192.911011 1192.303345 1191.658936 1190.920532 1190.185669 1189.456665 1188.939087 1188.333008 1187.831177 1187.384033 1186.856079 1186.284668 1185.68689 1185.09668 1184.4375 1183.750244 1183.113159 1182.845337 1182.774658 1182.944458 1183.776978 1184.682007 1185.298706 1185.907715 1186.427124 1186.921143 1187.014893 1186.755371 1186.093506 1185.179443 1183.963257 1183.20752 1183.121704 1183.735107 1184.563477 1185.130005 1185.667236 1186.007202 1186.058838 1186.006836 1185.717407 1185.151733 1184.757446 1184.329346 1183.91687 1183.424194 1182.809692 1182.300171 1181.929932 1181.660034 1181.463623 1181.225708 1180.872559 1180.351318 1179.744629 1179.026489 1178.221436 1177.283936 1176.207886 1175.03894 1173.811523 1172.244629 1171.452637 1171.092651 1170.939941 1170.592163 1170.091553 1169.753418 1169.459229 1169.276489 1169.393066 1169.968628 1170.121704 1170.488037 1170.139038 1169.783203 1169.609863 1169.598511 1169.347412 1168.890991 1168.178833 1166.907959 1165.589478 1164.670898 1163.980103 1163.403076 1162.890991 1162.264404 1161.670776 1160.620728 1158.986694 1158.424927 1158.489258 1158.500488 1158.491211 1158.489746 1158.395508 1158.218262 1158.071899 1157.817871 1157.387085 1155.633911 1155.634399 1155.652222 1155.687622 1155.896851 1153.792725 1153.404541 1152.902954 1152.514404 1151.912842 1151.375 1151.050049 1150.956299 1150.734741 1150.505615 1150.263794 1150.041748 1149.635132 1149.293213 1149.086914 1148.922485 1149.025391 1148.935913 1148.577515 1147.619751 1147.175781 1147.473022 1147.612305 1147.016968 1147.065552 1148.553223 1150.5354 1152.473755 1154.37085 1156.234985 1158.625366 1160.17627 1161.533203 1163.177612 1165.13147 1167.443604 1169.446777 1171.614502 1173.632324 1173.982178 1171.447632 1157.962524 1150.884277 1144.895752 1138.977173 1138.636963 1140.599121 1144.788574 1149.289307 1154.108154 1157.444946 1167.184692 1170.746582 1178.678955 1181.565186 1185.955444 1193.446533 1198.478271 1203.780273 1207.206665 1216.915771 1225.285889 1233.406982 1240.593018 1245.779541 1252.176392 1258.689209 1264.207275 1268.686157 1270.49646 1273.095459 1277.648438 1280.666992 1282.369629 1282.849365 1282.786621 1282.754639 1279.488525 1272.8125 1266.984497 1259.786499 1266.905518 1271.152466 1268.11792 1277.54187 1285.501343 1292.316406 1300.05188 1308.355347 1316.039429 1326.333984 1343.928711 1356.351074 1356.17395 1360.829712 1364.706055 1368.797119 1371.374756 1372.95105 1369.947632 1365.261719 1357.320435 1351.668945 1344.203735 1338.108032 1331.031494 1323.963867 1317.520752 1313.847412 1310.001831 1307.096924 1302.761719 1298.321777 1295.079224 1293.189331 1284.457031 1280.721924 1266.857178 1256.753296 1245.261963 1244.684082 1234.093018 1223.582397 1216.839111 1212.573975 1208.206665 1202.546387 1202.723022 1207.773804 1198.242432 1189.443848 1183.38208 1181.072632 1179.076538 1174.877197 1173.485474 1171.761108 1170.100586 1168.389648 1167.240845 1168.831299 1172.890869 1179.307251 1182.317871 1186.748779 1193.571899 1200.019775 1205.140381 1209.59668 1215.442871 1220.910522 1229.567505 1236.27478 1241.763916 1243.342163 1239.178589 1231.688477 1223.480347 1216.606812 1211.310669 1211.068604 1206.852661 1196.136719 1190.398438 1185.471436 1182.226929 1178.940552 1174.951904 1173.317383 1171.687134 1170.758057 1171.341919 1171.460083 1164.603271 1157.654419 1157.750244 1168.321289 1173.23645 1173.873657 1171.651733 1164.474731 1155.563599 1153.177368 1162.589966 1169.681519 1180.182007 1189.029541 1197.341431 1198.934448 1200.378174 1200.692505 1199.496338 1197.329102 1191.697021 1180.717041 1169.321411 1161.90271 1158.276367 1158.065796 1152.32251 1147.249756 1149.620605 1149.674927 1147.97644 1148.167358 1144.276489 1146.910034 1144.936279 1138.7677 1141.359009 1142.382568 1138.803101 1134.089233 1133.875366 1134.302734 1132.466431 1128.19104 1123.613159 1128.824585 1133.078369 1134.265137 1129.793457 1129.732666 1129.435425 1125.401123 1121.279297 1119.812134 1120.260498 1118.827148 1117.900269 1117.408325 1117.094116 1116.554443 1115.605957 1114.455566 1113.744873 1113.074219 1113.037476 1111.65979 1109.4104 1107.370117 1105.185913 1098.753052 1097.469482 1096.358398 1097.834106 1097.711548 1096.805054 1096.305176 1095.726562 1094.444458 1093.457275 1093.28833 1092.743042 1092.268677 1092.066895 1092.419312 1092.523682 1092.655396 1092.390381 1092.13501 1092.16394 1092.972046 1095.589233 1098.109985 1098.082275 1094.535889 1090.957886 1089.333374 1089.114868 1090.281006 1093.286987 1098.086548 1097.009766 1097.77417 1097.821899 -1152.906128 1157.044434 1160.280273 1163.594116 1169.911499 1178.398804 1187.281982 1195.994507 1197.904297 1196.512329 1193.971924 1194.795044 1194.276245 1193.501953 1193.505371 1190.569336 1185.470825 1183.860229 1182.038208 1177.433472 1173.903198 1172.936035 1170.621338 1166.53186 1166.666626 1170.291382 1171.561279 1171.036865 1168.942627 1166.841309 1164.667969 1162.104736 1157.517456 1147.052734 1144.206543 1141.918457 1139.984009 1138.558716 1137.728271 1137.557495 1137.280151 1136.820801 1136.027344 1135.019165 1133.960205 1135.0625 1135.724243 1136.373535 1137.681152 1142.374756 1152.463013 1162.572876 1169.64209 1172.641235 1176.534912 1177.105835 1169.893799 1175.933105 1187.107788 1198.814941 1205.985596 1210.278564 1211.484985 1211.787109 1211.571289 1211.017944 1210.584717 1210.037842 1208.867554 1205.842651 1198.135132 1195.33667 1193.172852 1189.657593 1187.693481 1182.940186 1170.842651 1169.844849 1181.014771 1193.235229 1200.505493 1207.57251 1207.528076 1205.583496 1204.216675 1203.733154 1203.609131 1203.654907 1203.69043 1203.702759 1203.429932 1203.139648 1202.453857 1201.620117 1200.879028 1200.20105 1199.649048 1199.018311 1198.271118 1197.359497 1196.270874 1194.465698 1194.63147 1195.554688 1194.267334 1188.899048 1183.953979 1181.391846 1179.261597 1177.716064 1176.629761 1176.435181 1183.602295 1187.250732 1192.279419 1195.461182 1196.764771 1197.469238 1197.880859 1198.011353 1197.839722 1197.663208 1197.464966 1197.646484 1197.484009 1197.273682 1196.760132 1196.233521 1196.003784 1195.518433 1195.367188 1195.513184 1195.650391 1195.614258 1195.814087 1196.047363 1196.031372 1195.860229 1195.508789 1195.181152 1194.934937 1194.629517 1194.263428 1193.971802 1193.7677 1193.685181 1193.836914 1193.992432 1194.200806 1193.547729 1193.04248 1193.675049 1195.477173 1196.265625 1197.041626 1198.064453 1199.338745 1200.680542 1202.253906 1203.948608 1205.462769 1206.515259 1207.071167 1207.160034 1207.251343 1207.523926 1207.171265 1206.776245 1206.175049 1205.573242 1205.026001 1204.568481 1204.179321 1203.797119 1203.307129 1202.938965 1202.448853 1201.715698 1200.911133 1200.004639 1199.175049 1198.525024 1197.959351 1197.680298 1197.913696 1197.971924 1198.183472 1198.393433 1198.826782 1199.225464 1199.752686 1200.065308 1200.19104 1200.111328 1200.11499 1200.182129 1200.321899 1200.470215 1200.608521 1200.826294 1200.817871 1200.631226 1200.393921 1200.137573 1199.943604 1199.687744 1199.440552 1199.190186 1198.935181 1198.695923 1198.392578 1198.039551 1197.71582 1197.292969 1196.747314 1196.112549 1195.450073 1195.290771 1195.717896 1196.074829 1196.019165 1195.67334 1195.303223 1194.942383 1194.941406 1194.825928 1194.658081 1194.485474 1193.991455 1193.387207 1192.709229 1192.055542 1191.295654 1190.618286 1189.926392 1189.286011 1188.726929 1188.161133 1187.568726 1186.997437 1186.397705 1185.77063 1185.23291 1184.472778 1183.763794 1183.185547 1182.993042 1183.071045 1183.101562 1184.127563 1185.556396 1186.571411 1187.081909 1187.553955 1187.633057 1187.512451 1187.1427 1186.436523 1185.402588 1184.341675 1183.383545 1183.131226 1184.157959 1184.959106 1185.596069 1186.059204 1186.50354 1186.794189 1186.734619 1186.470825 1186.025391 1185.390137 1184.883789 1184.375366 1183.756836 1183.220337 1182.656128 1182.005005 1181.672729 1181.274902 1180.87561 1180.427979 1179.92981 1179.373779 1178.542358 1177.738037 1176.758545 1175.736938 1174.744995 1173.720703 1172.974243 1172.436279 1171.950806 1171.295898 1170.797241 1170.077148 1169.538086 1169.047974 1168.659668 1168.498779 1168.501953 1168.600342 1169.112671 1169.266235 1168.966431 1168.794678 1168.423828 1167.888184 1167.2677 1166.265747 1164.974731 1163.735474 1162.953857 1162.42627 1162.11145 1161.837524 1161.406006 1160.772217 1159.920654 1158.608398 1158.157715 1157.998047 1157.872925 1157.900757 1157.908447 1158.022583 1156.171143 1156.885742 1156.489136 1155.658447 1155.666626 1155.754761 1155.861206 1155.990723 1154.752441 1154.38916 1154.061157 1153.869141 1153.475586 1152.942383 1152.403442 1151.994507 1151.763794 1151.514038 1151.123169 1150.866089 1150.767212 1150.449829 1150.102539 1149.882812 1149.796021 1149.76123 1149.696411 1149.475098 1149.071167 1148.638916 1148.533081 1148.464111 1148.516357 1148.729126 1149.727295 1151.277344 1152.77063 1154.453491 1156.204956 1157.633545 1158.575806 1160.869507 1163.14856 1165.22998 1167.169189 1169.19104 1171.023804 1172.67981 1173.468628 1165.556396 1153.498779 1144.573608 1138.568115 1139.085571 1140.197021 1142.797607 1146.074951 1152.295044 1159.116821 1166.766235 1172.970093 1175.63147 1179.926025 1184.508301 1192.140137 1198.15918 1202.608154 1208.924316 1214.915649 1221.580566 1226.804688 1234.234375 1243.781128 1248.514282 1254.435425 1259.322144 1264.699097 1269.227661 1272.248901 1276.132935 1280.163086 1282.136353 1282.564453 1282.680786 1282.784668 1282.526489 1279.039429 1273.110352 1266.694214 1257.351685 1256.934326 1260.065063 1262.629517 1272.243774 1281.71228 1285.067749 1294.322144 1300.832764 1308.877319 1327.070923 1343.025024 1346.486938 1349.353149 1355.070801 1358.126099 1361.428833 1363.417969 1366.971313 1369.367432 1368.189087 1362.277954 1355.894775 1346.577515 1339.313965 1334.211792 1329.247314 1325.640747 1322.255981 1316.736572 1312.118164 1307.093872 1303.276245 1297.902588 1291.736084 1289.462769 1281.219604 1274.461914 1266.558716 1256.684692 1247.31189 1235.993164 1228.151733 1222.188721 1219.964478 1213.907227 1207.703369 1207.542969 1207.022339 1197.221558 1190.915283 1184.908936 1182.845703 1180.103027 1175.454712 1173.598999 1171.724854 1170.453003 1170.69104 1168.409058 1170.166992 1177.25061 1183.828979 1189.135498 1194.957642 1197.446167 1203.133179 1208.895874 1215.220337 1221.000244 1225.996338 1232.324341 1239.976196 1245.576294 1246.873291 1243.1698 1232.671997 1226.383789 1220.299194 1215.812744 1211.26001 1206.172241 1195.039551 1189.287476 1184.901001 1180.750854 1177.596558 1170.977051 1170.792358 1170.616577 1171.641235 1170.832275 1166.933228 1162.040283 1157.652344 1162.700073 1173.6604 1177.330444 1178.119141 1175.842041 1170.898315 1160.737427 1152.898071 1164.046875 1172.004395 1179.975952 1181.717407 1190.862061 1196.053467 1202.699463 1203.359131 1201.595703 1199.078857 1191.627319 1173.237305 1168.883301 1165.364868 1162.663208 1158.741089 1147.635376 1145.313965 1145.255981 1145.378662 1143.321411 1142.415894 1140.164185 1139.444824 1137.706787 1133.658936 1133.099731 1134.141968 1134.160522 1131.209961 1129.000366 1128.687134 1127.733276 1125.36499 1122.446411 1121.574341 1123.69397 1124.310913 1122.258057 1119.687988 1120.590576 1120.316528 1116.827026 1114.680908 1114.186401 1113.555176 1111.918091 1111.809937 1111.921143 1110.884766 1109.355103 1109.131104 1110.865845 1108.699829 1109.017578 1108.106812 1104.727417 1102.359253 1099.374756 1099.71936 1098.286011 1096.467285 1095.674438 1096.947021 1097.113159 1094.825073 1094.106079 1095.117676 1097.05896 1097.180176 1095.79248 1093.695801 1092.275146 1091.407959 1091.561523 1091.547485 1091.313354 1091.041016 1091.137939 1091.696167 1093.553101 1096.727417 1097.714111 1092.296509 1088.976196 1087.175659 1087.178589 1088.938354 1091.825439 1094.554077 1093.70459 1094.360962 1096.955078 -1162.463989 1165.619263 1167.930054 1170.425415 1176.005005 1183.741089 1194.05127 1198.371704 1199.760742 1198.164185 1194.879395 1197.488647 1196.821167 1196.063843 1197.080322 1193.619385 1190.099731 1187.167236 1184.130249 1180.125732 1177.163818 1175.177002 1172.20459 1169.647949 1170.299072 1172.152466 1173.311523 1172.813354 1171.049438 1168.354736 1166.123535 1163.120239 1158.856201 1150.955566 1145.967407 1144.015381 1142.335083 1140.801392 1139.436523 1138.647949 1137.837158 1136.955811 1135.544434 1134.042725 1134.547607 1135.476074 1136.258423 1136.871338 1137.817871 1139.232056 1148.621948 1158.938599 1163.31543 1166.150513 1167.730957 1166.530029 1167.003174 1169.943359 1184.766602 1198.818237 1207.120972 1210.285034 1211.511597 1212.128296 1212.115234 1211.735352 1211.280518 1210.594604 1209.77832 1208.571045 1208.445923 1207.161377 1201.12915 1197.568726 1193.375732 1187.230469 1177.022949 1171.981812 1179.097046 1191.79126 1199.018066 1205.137207 1205.911255 1203.518555 1202.915527 1202.978516 1203.293823 1203.734009 1204.015503 1204.216064 1204.112427 1203.797852 1203.261475 1202.484131 1201.918457 1201.297241 1200.75293 1200.085205 1199.296997 1198.219727 1196.516235 1195.125977 1196.141357 1196.383667 1195.994385 1191.272461 1185.304077 1182.322876 1180.365112 1178.890747 1177.752686 1177.238892 1183.995239 1188.758789 1192.558838 1193.635132 1196.227173 1197.661133 1198.266113 1198.423096 1198.373657 1198.175781 1198.154907 1198.326904 1198.299072 1198.057617 1197.646606 1197.137817 1196.789185 1196.284912 1196.039551 1196.192749 1196.273315 1196.456055 1196.570435 1196.72937 1196.728516 1196.457275 1196.078613 1195.566406 1195.245239 1194.841553 1194.495605 1194.259766 1194.1427 1194.138062 1194.312866 1194.597778 1195.143555 1194.115356 1193.432129 1194.707886 1196.168579 1197.1875 1198.040894 1199.026245 1200.324219 1201.839355 1203.615601 1205.465942 1206.956787 1208.454956 1210.585449 1212.748657 1214.453369 1214.559448 1211.93103 1207.730591 1206.953369 1206.296021 1205.648438 1205.212769 1204.897827 1204.589478 1204.219238 1203.927856 1203.470581 1202.860596 1202.030029 1201.025757 1199.934814 1198.982056 1198.320557 1198.150513 1198.385986 1198.52417 1198.638916 1198.930298 1199.352661 1199.870605 1200.571655 1200.866455 1201.001221 1200.914795 1200.903198 1200.917603 1201.033081 1201.227417 1201.396362 1201.394775 1201.358154 1201.241333 1200.880371 1200.705811 1200.510132 1200.33606 1200.0802 1199.853516 1199.570435 1199.278442 1199.084473 1198.829956 1198.377197 1197.923096 1197.336548 1196.702271 1195.916138 1195.864258 1196.351562 1196.520752 1196.451294 1196.113159 1195.829346 1195.595581 1195.545044 1195.467407 1195.315918 1195.147949 1194.600952 1193.795654 1193.02063 1192.408691 1191.757812 1191.182007 1190.459595 1189.815918 1189.178955 1188.498657 1187.985596 1187.378784 1186.766113 1186.10376 1185.377075 1184.611084 1183.857544 1183.223389 1183.168213 1183.759888 1183.838257 1185.699097 1187.433228 1188.20874 1188.59729 1188.597656 1188.438843 1188.049683 1187.585571 1186.703125 1185.823364 1184.768066 1183.512085 1183.095337 1184.524902 1185.486694 1186.110229 1186.680054 1187.138428 1187.425903 1187.551025 1187.285034 1186.742554 1186.160767 1185.604248 1185.073242 1184.64563 1183.954346 1183.225708 1182.54895 1181.855957 1181.468872 1180.965942 1180.425171 1179.814209 1179.175049 1178.477051 1177.436157 1176.383667 1175.390625 1174.404907 1173.672729 1173.105103 1172.64917 1172.391479 1171.880859 1171.069458 1170.597412 1169.561279 1168.775391 1168.109497 1167.667236 1167.370728 1167.386475 1167.687866 1168.039551 1168.166504 1167.753906 1166.98584 1166.306519 1165.686279 1164.619995 1163.098755 1161.771729 1161.307251 1161.095703 1160.891479 1160.743896 1160.467529 1159.944214 1158.876343 1158.484009 1158.03125 1157.763428 1157.627075 1157.513916 1157.495239 1156.578735 1155.481079 1155.493652 1155.473755 1156.081543 1156.545776 1156.443359 1155.959839 1155.488525 1155.166748 1154.924194 1154.88623 1154.741089 1154.341431 1153.893555 1153.304443 1152.799683 1152.549927 1152.085815 1151.827271 1151.576904 1151.506104 1151.222168 1150.931274 1150.625977 1150.538574 1150.681763 1150.632324 1150.568848 1150.310181 1149.962646 1149.852051 1149.867188 1150.031982 1150.379517 1151.13147 1152.11792 1153.320679 1154.805542 1156.346069 1157.932983 1158.974121 1161.133545 1163.385986 1165.44165 1167.454224 1169.637573 1171.431274 1172.707275 1173.562256 1157.470703 1149.771484 1139.755493 1139.410767 1139.884033 1141.738525 1144.90332 1148.02124 1154.160645 1160.661133 1167.159302 1171.66626 1176.853149 1181.708862 1186.455078 1192.591675 1198.077881 1206.625 1212.454468 1219.410278 1225.367554 1231.269165 1235.339355 1242.36853 1247.888672 1253.548218 1256.871338 1263.305176 1268.02417 1272.137329 1277.145142 1281.059204 1282.333984 1281.846191 1281.82666 1281.64978 1282.026855 1279.339111 1272.746826 1265.779663 1258.5271 1252.985352 1251.689453 1255.769775 1264.650391 1271.645386 1279.938477 1284.96167 1295.117065 1309.956787 1327.66333 1335.613037 1334.424316 1343.615723 1347.633057 1348.412476 1353.432983 1358.512085 1364.709595 1368.010132 1366.306763 1362.609985 1357.233154 1351.012451 1343.413696 1339.760498 1335.687622 1333.65564 1330.790283 1324.442383 1317.764282 1312.474854 1306.95105 1301.082275 1296.728271 1295.900024 1290.371826 1274.564575 1264.210327 1254.944702 1243.474365 1230.634155 1218.436157 1218.969116 1220.679321 1217.421631 1209.682861 1206.844971 1201.53418 1194.647461 1189.332275 1185.292725 1182.383301 1180.353882 1175.907959 1173.584106 1171.024902 1171.675293 1171.530273 1169.246216 1172.90564 1183.782227 1191.119263 1197.20874 1201.473633 1205.102539 1207.883423 1213.009277 1220.046021 1225.894043 1231.020752 1236.429321 1243.467041 1248.032471 1248.87439 1245.817383 1235.835693 1228.342041 1222.684326 1216.228882 1208.321411 1199.669434 1192.221558 1186.483521 1182.56543 1182.328247 1183.203369 1176.203003 1170.944702 1175.899902 1182.942627 1177.256836 1168.110229 1157.388062 1157.937744 1167.551392 1175.421143 1181.506348 1182.983521 1179.790894 1174.503662 1165.672119 1156.458252 1162.385986 1178.62207 1189.133423 1196.959351 1196.919189 1200.474854 1207.63208 1205.819336 1203.460083 1200.817749 1197.472656 1187.750977 1173.229858 1172.880371 1169.880859 1165.302002 1164.371948 1157.929321 1151.717407 1146.862549 1136.381226 1135.695679 1134.473389 1133.980591 1133.272339 1133.191162 1132.94873 1132.050293 1129.419434 1125.932129 1124.484009 1123.355347 1123.930176 1123.276367 1122.169678 1121.075073 1120.888428 1120.655396 1119.490723 1118.576904 1117.434937 1115.136597 1109.602905 1109.262939 1109.110474 1108.129639 1108.123535 1106.677979 1105.599487 1104.919312 1103.800781 1105.153931 1110.023438 1108.028442 1101.942505 1100.021484 1099.180664 1098.398682 1097.683594 1097.293457 1097.424561 1096.594116 1098.604004 1096.647217 1095.869385 1096.723755 1098.174072 1099.096313 1099.847534 1099.613525 1098.588501 1096.432251 1093.80835 1091.854614 1091.005249 1090.485474 1090.400391 1090.246826 1090.016235 1089.940674 1089.884155 1089.755615 1088.770264 1087.886475 1087.635132 1086.063599 1085.520996 1087.317017 1088.567383 1089.557739 1088.031006 1088.396118 1089.245972 -1171.669556 1178.198608 1178.448242 1183.637939 1187.169922 1191.805786 1198.69165 1202.033203 1203.004761 1201.418701 1198.857666 1200.172363 1200.851929 1200.927246 1200.046509 1195.620361 1192.941406 1189.233765 1183.979004 1181.243774 1179.390625 1176.646973 1172.973145 1170.156372 1171.098022 1173.362915 1174.4198 1173.941284 1172.111572 1169.316772 1167.856812 1165.69165 1161.439819 1155.746094 1148.990112 1145.546509 1144.084961 1142.352905 1140.907471 1139.637329 1138.449463 1137.124512 1135.452026 1134.214233 1134.869873 1135.61438 1136.562012 1137.392822 1138.397095 1139.761475 1143.570435 1150.123169 1157.601807 1159.352539 1159.447021 1159.410034 1163.069824 1170.155151 1183.271484 1196.793579 1207.150024 1210.741943 1211.782349 1212.426147 1212.553345 1212.342285 1211.972656 1211.398682 1210.674072 1209.891235 1209.13562 1208.669556 1206.809692 1201.330688 1197.331055 1188.069824 1180.36731 1177.843262 1178.801147 1183.501587 1195.884766 1199.730347 1200.873413 1200.678345 1200.957764 1201.721802 1202.766724 1203.73291 1204.359497 1204.669922 1204.733765 1204.549438 1204.084961 1203.50708 1203.092529 1202.464233 1201.890747 1201.175415 1200.313477 1199.309204 1197.968384 1197.29834 1197.325806 1197.046997 1196.27771 1193.026367 1188.001953 1183.672974 1181.647461 1179.780151 1178.410889 1178.337646 1183.793457 1191.338989 1195.775879 1196.085205 1196.703125 1197.934937 1198.626343 1198.835205 1198.885376 1198.810059 1198.829712 1199.092896 1199.019409 1198.890869 1198.506958 1198.070801 1197.679199 1197.266846 1197.060425 1197.028931 1197.168579 1197.153442 1197.309448 1197.441528 1197.384399 1197.174316 1196.750488 1196.161133 1195.39856 1194.916992 1194.681152 1194.518555 1194.505615 1194.519043 1194.844116 1195.391479 1195.773682 1194.763306 1193.842041 1195.373779 1196.618042 1197.649902 1198.581543 1199.602417 1201.018433 1202.635986 1204.508667 1206.408081 1208.64978 1212.328369 1216.665161 1221.082031 1225.411499 1226.86377 1221.440918 1214.505859 1207.98645 1206.934204 1206.204712 1205.817383 1205.567749 1205.364624 1205.12793 1204.857788 1204.604126 1204.005737 1203.17395 1202.035645 1200.757568 1199.646484 1198.69751 1198.541382 1198.807617 1199.011475 1199.143311 1199.533203 1199.982178 1200.665161 1201.426147 1201.741211 1201.894409 1201.816528 1201.781494 1201.799438 1201.964355 1201.949951 1201.963257 1201.994629 1201.839478 1201.713257 1201.526855 1201.224487 1201.121338 1201.039795 1200.784424 1200.624146 1200.356812 1200.067139 1199.800659 1199.395264 1199.006714 1198.520752 1197.948975 1197.49646 1197.192383 1196.935669 1196.976196 1196.973511 1196.931274 1196.686279 1196.414185 1196.1875 1196.117798 1195.997681 1195.876587 1195.604614 1194.974121 1194.206055 1193.539429 1192.867432 1192.245361 1191.633057 1190.970947 1190.276001 1189.628662 1188.975098 1188.290039 1187.613403 1186.966675 1186.284912 1185.528198 1184.859375 1184.0802 1183.359497 1183.113892 1185.092285 1186.89563 1189.139771 1190.254761 1190.487671 1190.244141 1189.854004 1189.324463 1188.713257 1188.101318 1187.422974 1186.533447 1185.455566 1184.065552 1183.796753 1185.124146 1186.303101 1186.882324 1187.459229 1187.881348 1188.275146 1188.383301 1188.203735 1187.619019 1187.08374 1186.529541 1185.932495 1185.45166 1184.758301 1183.916992 1183.059937 1182.399902 1181.900879 1181.354004 1180.651855 1180.017822 1179.316528 1178.358398 1177.316406 1176.130127 1174.754761 1173.776978 1173.172241 1172.877686 1172.641602 1172.399902 1172.164429 1171.644897 1170.950684 1169.818604 1168.564087 1167.52478 1166.838379 1166.289917 1166.262817 1166.465332 1166.877075 1167.057495 1166.487793 1165.713623 1165.00354 1164.336548 1163.198242 1161.090942 1159.660522 1159.576416 1159.514893 1159.442505 1159.366943 1159.224976 1159.164062 1158.535889 1158.244995 1157.969238 1157.677246 1157.425293 1157.372803 1157.289673 1157.25061 1157.321777 1157.20459 1157.162109 1157.116577 1156.977173 1156.702393 1156.344116 1156.075928 1155.830322 1155.771606 1155.754395 1155.584473 1155.251099 1154.660889 1154.175537 1153.595581 1153.106323 1152.718262 1152.477417 1152.443115 1152.237793 1151.948853 1151.599976 1151.405762 1151.355225 1151.46228 1151.584595 1151.707764 1151.57312 1151.369385 1151.264404 1151.28772 1151.552856 1151.866699 1152.379517 1153.104492 1154.103882 1155.240601 1156.58374 1158.737915 1160.255737 1161.53064 1163.37146 1165.537964 1167.768799 1170.03186 1171.55835 1172.442993 1171.597534 1156.395264 1149.579956 1142.983643 1139.878296 1140.054077 1142.486572 1145.615356 1150.524414 1156.806885 1161.792358 1168.451782 1173.10376 1177.137939 1181.782715 1186.488892 1193.183228 1198.262695 1206.208862 1213.68457 1220.894287 1227.672974 1233.860474 1238.415649 1244.209717 1248.088013 1252.87439 1256.770508 1261.303955 1267.555176 1272.221924 1277.248657 1281.41687 1280.967529 1277.880371 1276.952637 1275.983276 1276.016357 1275.942627 1272.986938 1270.049438 1266.871338 1255.971558 1243.67688 1249.355835 1256.79541 1265.185181 1268.189453 1284.578857 1298.604736 1311.790527 1319.431763 1317.948975 1329.880249 1339.436401 1340.314575 1338.730469 1345.69104 1352.732422 1356.326294 1359.982544 1360.677124 1358.537842 1355.722046 1352.180908 1347.114868 1343.911133 1342.605957 1339.81958 1335.427856 1330.142456 1322.378296 1316.270386 1309.363892 1304.505371 1298.892212 1294.199585 1286.467163 1271.867432 1257.146729 1244.295288 1236.078735 1226.803345 1219.621582 1212.545044 1213.676636 1212.77063 1209.524902 1203.654297 1197.523682 1192.198486 1186.563965 1182.532837 1181.18396 1180.049194 1176.574829 1174.709839 1173.475586 1172.945557 1171.738892 1169.681396 1177.495483 1188.430908 1196.61792 1202.666626 1207.87439 1211.009155 1214.201172 1218.670898 1224.444702 1230.835205 1235.679077 1240.648193 1246.358398 1251.496216 1252.082153 1246.821167 1238.327148 1230.430054 1223.377563 1215.977417 1206.19458 1195.071167 1191.450562 1185.622437 1185.043823 1185.344238 1183.616821 1178.860596 1176.653564 1183.755249 1185.388672 1182.416504 1170.72583 1159.119629 1158.917969 1169.265625 1176.052246 1183.308228 1185.364746 1184.102539 1178.919189 1171.590942 1162.481201 1155.981079 1178.166992 1187.460693 1194.034912 1197.360962 1202.227783 1208.891235 1208.046387 1205.588013 1202.997925 1198.980835 1193.572388 1187.718262 1186.079102 1180.663574 1174.359985 1174.384766 1163.188721 1154.8927 1149.534668 1140.977905 1133.613281 1133.697754 1133.281494 1133.313843 1134.425049 1134.475708 1132.457642 1128.43811 1121.869873 1122.203735 1122.271118 1122.354248 1122.34729 1122.278198 1121.980591 1121.560425 1120.894287 1119.669678 1118.463501 1116.825439 1114.161011 1111.961304 1111.450928 1111.418823 1111.814941 1112.108887 1111.769897 1111.205933 1111.445557 1111.489258 1110.757812 1106.590698 1106.258545 1102.592529 1102.333496 1102.22583 1102.697021 1103.333984 1103.437622 1102.427734 1103.052002 1103.870605 1102.96875 1101.284546 1101.237305 1101.499756 1101.620117 1101.586914 1101.065552 1099.717041 1097.897095 1095.438965 1093.34668 1092.095215 1091.200684 1090.209961 1089.73645 1089.334961 1089.186768 1088.939819 1088.791748 1087.912598 1086.776367 1086.654541 1086.709717 1085.880737 1085.46875 1085.732666 1086.940308 1086.290161 1084.85791 1084.63501 -1188.9552 1190.547974 1190.309204 1195.90271 1197.782471 1197.760864 1202.817993 1206.117798 1206.784058 1206.193604 1204.058838 1204.495728 1205.476074 1206.252075 1204.240112 1199.609375 1196.619751 1193.068359 1187.185181 1184.507202 1181.555908 1180.113159 1176.345459 1172.218628 1172.983521 1175.066772 1176.039429 1175.432983 1172.921509 1170.389771 1170.697876 1169.186279 1165.012573 1159.888794 1152.313721 1146.844604 1145.091797 1143.523315 1141.82959 1140.445068 1139.009644 1137.405273 1135.63208 1134.350098 1134.744995 1135.463867 1136.491089 1137.713501 1139.095337 1140.22583 1141.9375 1146.003662 1150.642822 1153.119751 1154.115479 1156.205566 1161.894165 1169.316162 1179.450317 1192.417969 1205.674072 1210.953613 1212.081787 1212.687622 1212.899658 1212.814453 1212.485962 1211.987671 1211.35022 1210.476196 1209.647827 1208.793701 1207.266846 1201.928955 1197.40271 1182.271729 1183.575928 1184.41626 1181.449707 1180.22229 1189.140869 1196.197144 1197.064331 1197.297485 1198.453735 1200.338745 1202.114136 1203.678711 1204.696167 1205.287109 1205.400269 1205.301514 1205.005493 1204.446289 1204.151611 1203.588867 1202.932983 1202.256714 1201.446289 1200.578979 1199.975708 1199.282593 1198.611938 1197.914185 1196.90625 1195.608154 1191.648682 1186.215088 1182.7771 1180.811768 1179.392334 1178.400879 1181.619629 1192.857788 1196.258911 1196.959839 1197.691284 1198.352295 1198.94043 1199.185913 1199.324097 1199.322632 1199.492798 1199.810547 1199.888916 1199.716309 1199.485352 1198.993286 1198.547485 1198.238281 1198.017944 1198.028809 1198.100098 1198.034302 1198.001709 1198.107178 1197.940918 1197.642578 1197.224365 1196.454956 1195.445435 1195.094727 1194.937134 1194.933716 1194.90686 1194.852295 1195.112915 1195.478882 1195.981567 1195.568359 1194.241455 1195.631104 1196.882324 1197.831787 1198.801392 1200.08667 1201.585327 1203.371216 1205.120361 1206.976929 1210.767944 1215.698486 1220.849609 1226.780273 1232.872437 1234.158813 1229.192139 1222.122559 1212.944702 1207.404175 1206.648438 1206.370361 1206.360596 1206.231201 1206.031616 1205.941528 1205.868042 1205.363647 1204.422119 1203.057495 1201.647949 1200.288818 1199.202271 1198.926758 1199.126587 1199.368896 1199.681274 1200.210815 1200.784668 1201.518555 1202.30481 1202.705078 1202.888184 1202.762817 1202.734741 1202.749878 1202.771851 1202.697266 1202.554688 1202.420166 1202.394653 1202.233154 1201.998657 1201.983032 1201.721436 1201.678467 1201.514893 1201.287842 1201.090942 1200.85791 1200.475952 1200.101685 1199.561157 1199.125244 1198.754395 1198.457642 1198.063965 1197.816406 1197.645874 1197.698242 1197.460938 1197.197632 1196.950439 1196.750244 1196.601807 1196.462402 1196.139893 1195.635986 1195.02002 1194.374512 1193.896606 1193.302734 1192.626709 1191.929688 1191.328857 1190.690186 1189.974243 1189.281128 1188.548584 1187.806885 1187.121948 1186.412354 1185.661865 1184.917236 1184.22998 1183.569336 1183.132568 1186.271851 1190.001953 1193.775146 1194.049683 1192.694092 1191.687378 1190.901733 1190.2229 1189.552612 1188.914673 1188.287842 1187.525024 1186.732666 1186.114624 1185.955688 1186.533691 1187.346191 1187.928467 1188.355835 1188.846558 1189.328735 1189.44458 1189.317749 1188.711426 1188.075195 1187.450073 1186.893066 1186.213989 1185.457764 1184.55957 1183.251099 1183.205566 1182.841187 1182.069946 1181.154175 1180.322632 1179.384277 1178.418457 1177.235352 1175.760132 1174.039429 1172.484497 1172.110474 1172.257812 1172.453125 1172.298828 1172.196899 1171.724487 1170.901123 1169.651733 1168.240234 1166.881958 1165.942871 1165.335571 1165.268188 1165.496216 1165.717651 1165.852173 1165.319214 1164.557861 1163.813965 1163.167236 1162.196655 1160.541748 1158.810059 1158.738647 1158.745361 1158.744263 1158.739624 1158.602051 1158.389893 1158.466675 1158.214111 1158.003418 1157.755981 1157.563721 1157.352661 1157.30542 1157.255127 1157.296875 1157.304321 1157.202637 1157.316528 1157.309937 1157.265991 1157.035645 1156.835327 1156.718872 1156.706909 1156.591675 1156.408325 1156.009644 1155.416748 1154.758179 1154.158447 1153.630249 1153.394531 1153.156616 1153.006348 1152.843872 1152.620117 1152.175781 1152.108765 1152.121094 1152.359741 1152.579712 1152.736084 1152.829834 1152.69165 1152.673828 1152.846924 1152.950928 1153.337646 1153.647827 1154.222046 1154.819824 1155.722046 1156.768555 1158.958862 1160.127075 1161.490112 1163.257935 1165.302734 1167.458618 1169.332397 1170.871826 1172.183716 1172.278564 1157.075073 1151.15271 1145.765015 1141.863525 1140.229614 1142.778564 1145.979736 1151.203369 1157.851929 1163.124756 1168.880249 1173.062134 1176.108887 1180.463989 1183.705688 1193.424683 1200.473145 1208.628784 1214.292847 1221.00708 1228.733643 1233.993408 1237.842163 1242.022705 1244.275269 1251.140259 1256.382568 1262.291504 1268.080322 1271.824097 1275.313477 1277.573975 1274.294067 1271.111694 1269.727661 1267.302368 1267.29248 1271.2229 1271.94104 1270.889038 1270.112793 1260.339233 1243.551758 1242.34729 1252.083252 1261.555176 1274.521484 1289.163208 1300.663818 1306.918213 1303.882324 1311.776611 1327.009521 1331.428467 1329.399536 1335.064087 1339.372314 1345.060425 1348.96521 1351.901611 1353.495117 1352.62207 1349.042114 1346.248901 1345.455688 1344.852539 1344.380249 1343.275635 1336.997681 1330.266357 1323.342896 1316.88208 1310.742676 1306.088745 1297.526489 1289.569946 1280.574951 1269.12439 1252.014526 1238.345947 1229.498901 1223.361694 1217.232178 1208.136108 1207.214844 1207.488159 1205.481079 1199.965332 1194.693726 1189.991089 1184.946899 1181.996582 1180.858765 1179.613647 1177.349854 1175.970825 1174.681274 1173.399414 1171.527222 1171.2323 1183.313354 1192.139282 1199.941162 1207.168213 1211.797607 1215.735596 1219.588379 1223.495728 1229.122925 1234.571655 1239.013428 1243.628174 1250.202759 1255.704224 1256.480469 1248.418213 1239.52417 1230.962524 1222.917969 1214.376587 1202.900146 1194.054565 1194.791748 1196.193481 1191.335815 1184.22998 1182.326416 1182.72168 1181.546265 1184.032837 1183.56604 1176.903442 1168.227295 1159.66333 1159.029419 1167.174316 1174.181885 1180.695801 1185.011108 1185.26062 1183.400146 1176.829224 1169.267334 1158.080322 1168.196411 1179.781006 1181.713623 1182.477295 1196.537964 1208.614502 1209.637085 1208.139771 1205.519531 1202.608887 1198.977417 1194.339722 1186.477295 1181.203125 1173.230103 1166.696411 1156.480591 1153.24939 1148.621216 1142.649658 1138.699829 1139.668457 1137.748657 1136.111572 1137.086304 1136.307373 1134.665283 1131.119385 1128.02771 1125.951904 1125.392212 1125.229004 1124.912231 1124.425415 1123.419189 1122.602783 1121.949219 1120.390015 1118.821289 1117.264404 1115.727173 1114.620972 1114.303711 1114.757935 1115.101562 1115.294067 1114.889038 1114.134033 1113.730347 1113.293213 1112.30481 1111.179443 1110.458984 1106.715942 1105.453003 1106.320557 1108.062256 1110.218262 1111.394531 1111.657227 1112.605591 1112.662354 1111.154663 1108.184692 1106.814575 1105.872681 1104.807861 1103.632324 1102.298706 1100.681641 1098.532593 1096.446411 1094.707031 1093.19519 1092.090454 1091.212158 1090.645996 1090.433105 1090.268677 1089.969116 1089.260742 1087.344849 1085.427979 1085.859619 1085.852051 1085.999023 1085.858154 1085.383545 1084.775146 1084.374512 1083.692261 1082.833496 -1202.027466 1200.900513 1197.456543 1202.35144 1205.115112 1204.597412 1206.890137 1209.32373 1209.4552 1208.921997 1207.44519 1207.112061 1208.958496 1209.174316 1208.106201 1204.746094 1200.273682 1196.201172 1191.68042 1187.001953 1184.46106 1184.10144 1180.744141 1178.485718 1177.637573 1178.127197 1178.54126 1177.826294 1175.775024 1174.077271 1173.880737 1172.568604 1169.085083 1162.345459 1155.488647 1149.044189 1145.766724 1144.07959 1142.715698 1141.202271 1139.505127 1137.803955 1136.162354 1134.533691 1134.732422 1135.402344 1136.462769 1138.207031 1140.088867 1141.422974 1142.28833 1142.861572 1146.068237 1148.327637 1149.441162 1154.634521 1160.846069 1166.9823 1175.005981 1185.543457 1199.744019 1209.993042 1212.381714 1212.852539 1213.09436 1213.098877 1212.878174 1212.44873 1211.762329 1210.922729 1209.923462 1208.689697 1205.408936 1199.944824 1194.1604 1190.545776 1196.303467 1193.960693 1186.595825 1181.006836 1183.137085 1188.520996 1192.954956 1195.040771 1195.575928 1198.71228 1201.798584 1203.859863 1205.102295 1205.862793 1206.201538 1206.064697 1205.896484 1205.620117 1205.283081 1204.567139 1204.0625 1203.241333 1202.660278 1202.133179 1201.516357 1200.85022 1200.014771 1199.054565 1198.205688 1197.122803 1195.47583 1189.732544 1184.127563 1181.725342 1179.96228 1179.257324 1179.688965 1193.081421 1196.471069 1197.313354 1198.056152 1198.708862 1199.159302 1199.451416 1199.617798 1199.814209 1200.069702 1200.499023 1200.723389 1200.687012 1200.412354 1200.018921 1199.509033 1199.230225 1199.047974 1198.997559 1199.000488 1198.978027 1198.867554 1198.800537 1198.560913 1198.178833 1197.550171 1196.569824 1195.399536 1195.330566 1195.527832 1195.582275 1195.312256 1195.165283 1195.384644 1195.866577 1196.491943 1196.118164 1194.771606 1195.706421 1196.934692 1197.776001 1199.029907 1200.49231 1202.055054 1203.729736 1205.529053 1207.25354 1212.419922 1218.50769 1225.954956 1232.425659 1238.858398 1236.886841 1230.536865 1224.124023 1218.121582 1209.030518 1207.057007 1207.199097 1207.31958 1207.197754 1206.901978 1207.162842 1207.093994 1206.759766 1205.785645 1204.363647 1202.735474 1201.273804 1199.897095 1199.271118 1199.424927 1199.659912 1200.180664 1200.829834 1201.612915 1202.542236 1203.32959 1203.800659 1203.953369 1203.792603 1203.795532 1203.711426 1203.475098 1203.301147 1202.964355 1202.89209 1202.775635 1202.641357 1202.485229 1202.450195 1202.4104 1202.248657 1202.162842 1202.056641 1201.781494 1201.517212 1201.156616 1200.704956 1200.260864 1199.964355 1199.649658 1199.290649 1198.909058 1198.547241 1198.315552 1198.18457 1198.069336 1197.694702 1197.444946 1197.206055 1197.023926 1196.767456 1196.373169 1195.783936 1195.348267 1194.963013 1194.297607 1193.589966 1192.862305 1192.220093 1191.497803 1190.917725 1190.21936 1189.530518 1188.758423 1187.991943 1187.234863 1186.474365 1185.71106 1184.889648 1184.095459 1183.261108 1183.204834 1187.190674 1192.16626 1195.787598 1195.346069 1194.220459 1192.89978 1191.838013 1191.089355 1190.491577 1189.870239 1189.357544 1188.829956 1188.289185 1187.781982 1187.695068 1187.986938 1188.569336 1189.033325 1189.52832 1189.985229 1190.515869 1190.746826 1190.569458 1189.993896 1189.311157 1188.594971 1187.807007 1186.979858 1186.13562 1185.187378 1184.54248 1184.237915 1183.593994 1182.735229 1181.625488 1180.621094 1179.66626 1178.429199 1177.119385 1175.517456 1173.449585 1170.957642 1171.041016 1171.166748 1171.465454 1171.716064 1171.737427 1171.384033 1170.721069 1169.199463 1167.544434 1166.180908 1165.170898 1164.538696 1164.620117 1164.709595 1164.775513 1164.920044 1164.300415 1163.509399 1162.802124 1162.222534 1161.460693 1160.487305 1159.620972 1159.05188 1158.737549 1158.744873 1158.746582 1158.639893 1158.342896 1158.345703 1158.421509 1158.328491 1158.034546 1157.736938 1157.695923 1157.593384 1157.558472 1157.521973 1157.491089 1157.523193 1157.623901 1157.890747 1158.262817 1158.123047 1157.842407 1157.761353 1157.550171 1157.426025 1157.175415 1156.730225 1156.065796 1155.284668 1154.682739 1154.244507 1153.981689 1153.71582 1153.58252 1153.451538 1153.246826 1152.904907 1152.761719 1152.858887 1153.122437 1153.500854 1153.752441 1153.995361 1154.109619 1154.236694 1154.356445 1154.429932 1154.687012 1155.013306 1155.320923 1155.634399 1156.289795 1156.952393 1158.088013 1158.741943 1161.147949 1163.081909 1164.930542 1166.916748 1168.744507 1170.692383 1172.112061 1172.644409 1159.34021 1152.778442 1147.114746 1141.990967 1141.363159 1143.044067 1145.977051 1151.424072 1158.13855 1162.253418 1166.236328 1169.854004 1174.105591 1178.601318 1184.553101 1191.908691 1199.856323 1207.890869 1210.16394 1217.939575 1227.391602 1233.178345 1232.234253 1237.843628 1245.191895 1250.258789 1256.4646 1261.216797 1266.086426 1269.695312 1270.387939 1270.688965 1267.291504 1261.907593 1257.745483 1264.849243 1269.119629 1270.702393 1269.633545 1267.69812 1268.79248 1257.663086 1242.888428 1241.771851 1254.816284 1263.610596 1277.290405 1289.49585 1294.891479 1292.050293 1297.842285 1310.373901 1319.509399 1319.804077 1321.738403 1330.551392 1332.715088 1338.61499 1342.218262 1344.589111 1344.647339 1343.602051 1339.963379 1339.239014 1340.996216 1343.566895 1343.4104 1342.394165 1335.730225 1327.382568 1320.938721 1314.63855 1309.83374 1304.116455 1296.661377 1284.510254 1271.623901 1262.169678 1249.630371 1236.04126 1226.180054 1218.720947 1214.204346 1209.514526 1205.216553 1202.304199 1198.02771 1195.490234 1191.985962 1188.112427 1184.464722 1182.011719 1180.738159 1179.732178 1178.429321 1177.117432 1175.364136 1173.586426 1171.744263 1175.910156 1186.282227 1194.67395 1202.410156 1209.399048 1214.755981 1219.885254 1223.570312 1227.293213 1232.114502 1237.398804 1241.795898 1247.926025 1255.369263 1259.769531 1258.630005 1250.285156 1240.196533 1229.650269 1220.665894 1208.523438 1202.056396 1199.70166 1200.529175 1198.55835 1194.280762 1191.65625 1187.948853 1184.398682 1182.920166 1184.703125 1183.069214 1174.68335 1167.979614 1162.042725 1162.917725 1166.882446 1170.207397 1175.76355 1181.709961 1184.683105 1184.807251 1181.557983 1174.272095 1163.623413 1158.447754 1167.704346 1176.822021 1185.645264 1195.775269 1210.104126 1211.152344 1210.404541 1208.522339 1206.755493 1202.57959 1195.481323 1180.71228 1169.539429 1164.413696 1157.498169 1152.871948 1149.563721 1148.117065 1146.203247 1146.025757 1147.578247 1145.726929 1142.65271 1140.182007 1138.399292 1136.534058 1135.068115 1133.321045 1130.451904 1128.593018 1127.816406 1127.072266 1125.012817 1122.231689 1122.150757 1122.07019 1121.546509 1119.706787 1118.536255 1117.640015 1117.114624 1117.032349 1117.720581 1118.936035 1119.366333 1118.853271 1117.166504 1115.56958 1114.534058 1113.647949 1112.292358 1110.902344 1108.554688 1109.228271 1110.405151 1112.171875 1114.401245 1117.074829 1119.090698 1120.731445 1121.372681 1118.844604 1115.298096 1111.855225 1109.439941 1107.66333 1105.872314 1103.913818 1101.654541 1099.206055 1097.162842 1095.696533 1094.284668 1093.278198 1092.549683 1092.015625 1091.749878 1091.532959 1091.365479 1090.602173 1088.7323 1086.946167 1085.570557 1085.432861 1085.370361 1085.404419 1085.336792 1084.80188 1083.945801 1082.979614 1082.097534 -1209.894653 1209.495605 1206.198486 1208.981445 1210.32019 1208.789307 1208.884399 1211.473633 1211.769775 1211.059937 1210.145508 1209.934692 1210.808716 1210.683472 1209.676025 1208.006714 1202.251099 1196.887695 1193.467041 1190.907837 1188.126221 1185.921875 1182.953491 1181.087646 1180.899292 1181.419678 1181.572632 1180.884888 1179.506592 1177.717651 1176.631958 1174.956543 1172.058228 1165.758667 1160.021851 1152.594116 1146.107422 1144.762939 1143.477417 1141.906006 1140.209473 1138.555298 1137.047363 1135.610596 1135.664795 1135.845947 1137.060669 1139.148438 1141.348511 1143.593628 1145.309082 1146.065552 1148.011963 1146.201904 1145.51355 1149.242554 1159.178345 1164.223022 1170.154175 1178.686646 1192.106689 1207.841675 1212.30957 1212.791626 1212.985474 1213.127075 1213.115112 1212.776855 1212.154419 1211.253906 1209.884766 1208.087769 1206.088257 1201.714355 1197.932495 1199.970825 1204.205566 1201.174072 1195.839111 1182.140259 1181.083252 1181.946777 1189.39502 1194.302856 1194.898682 1198.437622 1202.053223 1204.403076 1205.984009 1206.755615 1206.806396 1206.93042 1206.963623 1206.748047 1206.496094 1205.672485 1204.809204 1204.328003 1203.958618 1203.492188 1203.009277 1202.336182 1201.377075 1200.414795 1199.317261 1198.192993 1196.694946 1193.437866 1186.838379 1183.981445 1180.027222 1180.062378 1180.484375 1192.929932 1196.769409 1197.465942 1198.15564 1198.670654 1199.216187 1199.586182 1199.859009 1200.214355 1200.713745 1201.181641 1201.467285 1201.473877 1201.277466 1200.923218 1200.509399 1200.250488 1200.068359 1200.033081 1200.032959 1199.925171 1199.731934 1199.585938 1199.304688 1198.838257 1198.132568 1197.168945 1196.072876 1196.199341 1196.490723 1196.500366 1196.082886 1195.416382 1195.471924 1196.268311 1196.811523 1196.429565 1195.261353 1195.548706 1196.895142 1197.942139 1199.270508 1200.77832 1202.389771 1204.366821 1206.068115 1208.043823 1213.78894 1220.951538 1229.782959 1238.578735 1246.5896 1237.790405 1230.062744 1225.471558 1220.790894 1211.839111 1207.284424 1208.730713 1209.864136 1209.342285 1208.296631 1209.046143 1208.854492 1208.002197 1206.938965 1205.594238 1204.008301 1202.445312 1201.025513 1200.072021 1199.749878 1199.963379 1200.628418 1201.548584 1202.603149 1203.682861 1204.474121 1204.931274 1205.014648 1204.911011 1204.691772 1204.447266 1204.133667 1203.785034 1203.521606 1203.393311 1203.291382 1203.197021 1203.00061 1202.903442 1202.925537 1202.914062 1202.791748 1202.674194 1202.451416 1202.218628 1201.735352 1201.427002 1201.083008 1200.777466 1200.505127 1200.111572 1199.671387 1199.26001 1198.975098 1198.821655 1198.584106 1198.321655 1198.019287 1197.734375 1197.372437 1197.05481 1196.705566 1196.251953 1195.859375 1195.413818 1194.72168 1193.992676 1193.324829 1192.613037 1191.898926 1191.217651 1190.591064 1189.866943 1188.979004 1188.158325 1187.432007 1186.647949 1185.894165 1185.087646 1184.121582 1183.330566 1183.13208 1186.047485 1191.14917 1195.994751 1195.534424 1194.651733 1193.470459 1192.491211 1191.768066 1191.272095 1190.818115 1190.439453 1190.020386 1189.615112 1189.191162 1189.035767 1189.223999 1189.675659 1190.198486 1190.655151 1191.337402 1191.88916 1192.26709 1192.062622 1191.528931 1190.687012 1189.771851 1188.760376 1187.880981 1186.99231 1186.122925 1185.492676 1184.99646 1184.181763 1183.147949 1182.04541 1180.903931 1179.837891 1178.572998 1177.224487 1175.547485 1173.385498 1171.612671 1171.054565 1170.879883 1170.92627 1171.00061 1170.974243 1170.822754 1169.891968 1168.468018 1167.002197 1165.596069 1164.565552 1164.3927 1164.281372 1164.228394 1164.109863 1164.010132 1163.375854 1162.546753 1161.805176 1161.252197 1160.824951 1160.001465 1159.221558 1159.169434 1158.711426 1158.741455 1158.76123 1158.471924 1158.323242 1158.602417 1158.808716 1158.940063 1158.729614 1158.263184 1157.976074 1158.027588 1157.987671 1157.944458 1157.844482 1157.900269 1158.149658 1158.713867 1158.935059 1158.84314 1158.586304 1158.22876 1158.420044 1158.405151 1158.06543 1157.349976 1156.560425 1155.759521 1155.193726 1154.742065 1154.497192 1154.219116 1154.113159 1154.06311 1153.849976 1153.505005 1153.390869 1153.444092 1153.716919 1154.185181 1154.621948 1155.013184 1155.291016 1155.580688 1155.726318 1155.864136 1155.933838 1156.218262 1156.4552 1156.501221 1156.806274 1157.235596 1158.076538 1159.69519 1161.002686 1162.72583 1164.629761 1166.607666 1168.52478 1170.578735 1171.922363 1172.996948 1161.125366 1154.010498 1148.56958 1143.03479 1141.161987 1142.859497 1145.115845 1148.516724 1155.019775 1157.37915 1159.097534 1168.307129 1171.223633 1178.640869 1183.05127 1191.157959 1197.696289 1200.582153 1208.807617 1216.825928 1220.570801 1228.338135 1233.181641 1237.662476 1242.18457 1247.157471 1253.584106 1257.064209 1260.945679 1264.073608 1264.562988 1263.688354 1259.110596 1255.360229 1255.955566 1268.270264 1270.930542 1271.306274 1269.75708 1253.97522 1257.217896 1250.171875 1238.262817 1238.405518 1248.071655 1260.158203 1272.879883 1283.818848 1286.341553 1283.558594 1295.200562 1304.627319 1309.802002 1307.251587 1312.745605 1317.329346 1327.122925 1332.989014 1335.876343 1337.429932 1337.354614 1336.104614 1332.979248 1330.885864 1334.753784 1337.04126 1337.503296 1335.880615 1331.841064 1325.162476 1318.796753 1308.665771 1304.07959 1297.710693 1290.354858 1280.764893 1269.64624 1256.9021 1241.687378 1230.779175 1223.235107 1217.463989 1212.176514 1208.271851 1203.701294 1199.209106 1194.694702 1192.247314 1189.352051 1186.533936 1183.912476 1181.768433 1179.822876 1180.63147 1179.927979 1178.462891 1176.345947 1173.845215 1172.118164 1177.744873 1186.422363 1195.046265 1203.074707 1209.909302 1216.391357 1221.753662 1225.698853 1230.045532 1235.150879 1241.348999 1246.615234 1253.356079 1260.652466 1264.889404 1261.314331 1253.273071 1242.9646 1228.61377 1217.115234 1211.908569 1207.369263 1206.835327 1206.54187 1203.610596 1199.942749 1197.14624 1193.822876 1187.514771 1186.339966 1184.424561 1180.988403 1170.893066 1172.32312 1171.802734 1172.066284 1169.509521 1169.695557 1170.428955 1177.213745 1182.177734 1184.385254 1183.842773 1176.557129 1169.560547 1164.462891 1167.783813 1173.762695 1182.536133 1189.019531 1202.118896 1211.971802 1211.355225 1210.656738 1209.771851 1206.273926 1196.530029 1184.04187 1175.203857 1168.482422 1160.797852 1152.762573 1146.761597 1145.905396 1146.515015 1149.237061 1150.172974 1149.033447 1145.811523 1143.582153 1141.470093 1139.302124 1137.289429 1135.304932 1132.60083 1131.58667 1130.761963 1129.528809 1126.749634 1124.272949 1123.234741 1123.677124 1122.474976 1120.500244 1119.887573 1119.531616 1119.231079 1119.539185 1121.081177 1123.992554 1125.180176 1122.010498 1119.056396 1117.164429 1116.108643 1115.132446 1113.681885 1111.668701 1110.360474 1112.011108 1113.615112 1115.688232 1118.86438 1122.609741 1126.148315 1130.981323 1132.625732 1129.188965 1124.828735 1123.869507 1116.979248 1110.09082 1107.938232 1105.724854 1103.268433 1100.470093 1098.062744 1096.613037 1095.334106 1094.547241 1093.932373 1093.554565 1093.340698 1093.310669 1093.163696 1092.861938 1092.456177 1091.087158 1090.311768 1089.679443 1089.743408 1088.845947 1087.44873 1086.101929 1085.334473 1084.29834 1083.502319 -1212.918823 1212.248047 1211.500732 1213.273438 1214.981201 1215.382935 1215.107178 1214.54187 1214.001709 1213.467529 1212.978271 1212.721191 1212.539062 1211.69104 1209.992432 1207.572388 1203.540771 1199.637329 1197.096558 1194.293457 1190.77124 1187.49231 1183.373291 1182.944824 1183.577637 1183.607544 1184.774414 1183.767578 1181.960083 1181.114624 1180.619751 1178.428223 1173.920288 1168.886108 1164.285034 1159.164917 1147.506348 1145.51001 1144.07666 1142.671265 1141.062988 1139.523926 1138.085327 1137.108887 1136.760742 1136.225342 1138.010254 1140.31311 1142.673706 1145.222534 1147.475464 1149.360352 1150.384888 1150.350586 1148.865479 1146.945557 1154.7948 1160.359863 1168.171875 1176.85022 1189.138062 1203.689575 1210.5979 1212.108643 1212.543823 1213.067017 1213.198608 1213.011841 1212.48584 1211.581787 1210.198853 1208.461304 1206.671753 1207.445068 1208.303955 1207.265991 1208.885254 1207.225586 1199.755371 1182.901001 1182.018066 1190.06958 1195.781006 1196.900024 1197.626709 1199.967407 1203.011963 1205.462036 1206.901245 1207.46521 1207.667603 1207.793579 1207.828857 1207.74939 1207.643066 1206.698486 1205.692993 1205.194092 1205.033813 1204.819336 1204.551392 1204.0177 1202.996094 1201.720337 1200.185181 1198.658936 1196.918335 1194.721436 1188.668457 1183.480347 1180.622192 1183.59668 1180.702515 1188.775513 1196.854126 1197.458496 1197.892334 1198.424683 1199.003052 1199.555786 1199.974487 1200.62146 1201.223999 1201.889526 1202.289185 1202.376709 1202.1698 1201.915283 1201.51709 1201.249634 1201.061157 1201.070557 1201.024414 1200.919556 1200.72583 1200.436768 1200.084717 1199.634521 1199.116089 1198.391724 1197.707153 1197.48877 1197.505005 1197.570557 1197.169556 1196.558472 1196.456299 1196.992065 1197.406372 1196.802612 1195.957397 1195.88562 1197.081665 1198.239746 1199.497559 1201.106812 1202.780273 1204.915161 1206.747803 1209.634399 1214.831299 1220.529541 1226.60144 1231.829956 1243.296753 1233.874512 1228.909912 1224.903198 1220.786255 1215.545044 1211.375244 1212.711304 1214.669678 1214.976318 1214.002197 1212.677612 1211.330688 1210.014893 1208.338989 1206.836182 1205.213623 1203.871582 1202.251831 1201.001831 1200.178467 1200.275391 1201.121826 1202.385132 1203.727417 1204.955566 1205.849854 1206.16687 1206.193848 1205.956543 1205.488647 1205.155884 1204.621948 1204.217285 1204.014038 1203.906372 1203.897217 1203.762695 1203.631104 1203.515015 1203.466064 1203.502808 1203.446167 1203.189331 1203.049561 1202.790527 1202.46936 1202.189209 1202.029663 1201.765625 1201.387451 1200.85498 1200.420288 1200.051025 1199.732178 1199.401245 1199.245361 1198.751831 1198.390625 1198.032349 1197.84729 1197.414062 1197.040894 1196.678223 1196.143799 1195.672119 1194.981079 1194.28772 1193.590332 1192.952637 1192.230103 1191.604126 1190.783691 1190.000488 1189.225098 1188.468506 1187.815063 1186.970093 1186.185303 1185.341919 1184.413208 1183.910767 1183.354004 1183.098755 1188.991943 1194.867065 1195.583374 1194.840576 1193.821899 1192.930298 1192.290894 1191.898926 1191.692627 1191.42749 1191.024658 1190.636597 1190.209106 1190.076904 1190.287231 1190.634277 1191.136108 1191.727905 1192.48584 1193.463135 1194.099365 1193.835693 1193.172974 1192.083374 1190.905762 1189.879272 1188.860596 1187.990112 1187.016724 1186.25354 1185.569702 1184.620605 1183.598999 1182.570312 1181.379517 1180.174438 1178.88269 1177.484497 1175.952637 1174.369141 1173.124512 1172.231567 1171.428467 1171.050049 1170.861694 1170.485474 1170.002808 1169.060181 1167.864014 1166.591431 1165.322266 1164.407349 1164.327026 1164.109009 1163.966187 1163.70166 1163.24646 1162.599854 1161.711548 1160.923828 1160.517334 1160.047119 1159.077393 1158.719727 1158.74353 1158.747803 1158.750488 1158.762451 1158.522827 1158.612183 1159.221069 1159.643555 1159.609863 1159.438965 1158.975342 1158.737549 1158.667847 1158.675659 1158.615479 1158.500244 1158.218506 1158.826782 1159.119751 1159.431519 1159.380615 1158.98645 1158.821167 1158.997925 1159.022095 1158.629761 1157.956665 1156.981812 1156.254639 1155.71875 1155.295532 1155.00708 1154.736572 1154.760498 1154.638428 1154.450562 1154.140991 1154.012695 1154.08374 1154.255249 1154.842529 1155.303955 1155.865479 1156.252319 1156.831909 1157.240479 1157.328369 1157.089844 1157.453003 1157.460693 1157.418579 1157.280029 1157.50647 1157.937988 1158.785522 1160.091064 1161.972046 1164.048584 1166.036865 1167.961304 1169.865845 1171.536255 1172.550781 1162.375732 1154.852905 1149.613281 1145.37561 1142.227539 1142.192017 1144.502441 1148.735474 1155.987061 1160.237793 1162.03186 1169.298828 1173.926025 1179.983276 1185.114868 1187.97168 1192.600952 1194.633057 1203.313965 1210.080444 1220.563721 1226.600098 1232.338257 1234.63208 1239.491821 1245.328247 1248.910767 1252.977051 1256.799561 1255.648315 1257.057251 1257.9646 1249.518311 1248.265625 1259.565918 1267.414917 1269.630249 1268.560181 1265.904785 1253.434204 1242.39209 1240.401123 1229.806274 1244.634155 1253.381226 1263.373169 1271.197876 1277.761841 1274.639282 1280.713135 1288.862183 1294.409546 1297.059814 1297.577515 1305.002441 1316.560913 1322.446411 1327.548218 1329.452148 1329.564697 1330.464844 1330.039917 1326.142334 1323.368042 1327.731567 1329.658569 1329.053955 1327.570923 1325.316528 1321.124023 1318.206665 1302.384521 1292.474609 1288.017578 1283.528687 1269.505005 1263.199463 1254.15979 1240.904175 1227.526489 1218.342407 1213.833618 1209.160156 1205.636963 1202.136963 1198.800781 1195.994507 1191.266235 1186.511841 1184.971924 1182.819824 1180.605225 1180.735474 1182.346802 1181.630371 1180.216553 1177.782959 1174.470093 1173.547119 1178.437988 1185.22937 1192.974609 1201.243408 1208.627441 1216.453613 1221.853516 1227.189819 1232.180786 1237.193237 1244.088867 1250.665405 1257.619995 1266.692261 1270.336792 1266.009399 1256.881592 1247.676147 1234.169678 1223.597046 1218.085693 1213.819702 1212.78479 1211.171265 1208.934204 1205.472656 1201.005249 1196.875732 1194.112671 1189.487305 1183.343872 1181.216187 1183.291748 1183.381958 1178.634644 1177.936157 1173.276123 1174.926147 1176.099487 1177.783325 1180.608398 1182.689697 1183.262939 1179.72229 1174.43103 1169.518555 1168.627075 1173.205933 1182.893066 1187.14856 1193.289429 1210.389526 1211.474854 1210.598877 1209.993286 1206.521606 1197.224487 1188.479736 1181.637085 1174.102539 1166.892456 1158.794434 1151.113403 1146.415161 1149.851562 1153.153687 1153.77356 1151.662354 1148.456055 1147.092529 1144.497559 1141.673706 1139.674194 1137.388306 1135.515259 1134.547729 1133.667236 1132.248169 1130.164185 1128.006958 1125.636475 1123.907227 1122.03064 1121.5979 1122.036377 1121.845825 1121.15332 1122.047119 1127.806519 1135.935547 1134.890869 1122.13562 1119.513794 1118.52832 1117.695557 1116.8573 1115.588745 1114.538696 1114.060547 1115.08728 1116.523438 1118.497559 1121.852051 1127.307129 1132.009399 1139.916504 1145.230469 1141.23999 1133.685303 1128.741211 1123.660278 1114.883545 1109.908936 1107.516846 1105.369385 1102.189941 1099.420776 1097.211914 1096.219238 1095.636597 1095.288208 1095.047363 1095.069946 1095.000244 1094.880859 1095.199707 1096.30603 1096.303467 1095.091309 1094.36499 1096.197266 1097.214478 1094.470581 1090.538208 1087.776855 1085.19397 1085.821411 -1215.71875 1215.410767 1215.728638 1217.954712 1220.078979 1220.608032 1219.828735 1217.89502 1216.390625 1215.749023 1215.402466 1215.03894 1214.743286 1213.141968 1209.974487 1206.67981 1205.611816 1203.166626 1199.113892 1195.735474 1192.936768 1190.934204 1188.877441 1188.760986 1188.355591 1187.903687 1187.384644 1186.059814 1184.850952 1184.404907 1184.054077 1182.840454 1178.259155 1172.486572 1168.000854 1163.262939 1155.312378 1146.435181 1144.877686 1143.388672 1142.081787 1140.506836 1139.012695 1137.812866 1137.21228 1136.884644 1138.788574 1140.966919 1143.212036 1145.598999 1147.98584 1152.396606 1154.392944 1154.907593 1155.010986 1150.991821 1151.578125 1158.408203 1167.296753 1175.640991 1184.941895 1196.597778 1207.592651 1210.682129 1212.162354 1212.938354 1213.287964 1213.252686 1212.82019 1211.954712 1210.857666 1209.56958 1208.562012 1208.567627 1208.684082 1208.869263 1208.838745 1207.090088 1199.614136 1183.89502 1185.187744 1196.609131 1198.26416 1199.188965 1200.460083 1202.186768 1204.143188 1206.625 1207.928223 1208.260498 1208.391479 1208.359253 1208.225952 1208.122192 1207.953125 1207.204712 1206.253174 1205.864624 1205.765015 1205.994629 1206.130737 1205.804321 1204.863892 1202.970947 1200.847168 1198.910767 1197.000977 1195.17688 1188.903687 1183.096802 1181.582764 1184.012207 1183.03125 1182.157471 1194.047485 1196.771606 1197.222656 1197.888672 1198.643311 1199.335693 1200.14502 1201.054077 1201.863647 1202.674194 1203.165283 1203.244873 1203.129517 1202.955566 1202.626221 1202.217041 1202.112305 1202.069458 1201.958862 1201.901855 1201.737793 1201.461426 1201.16687 1200.84375 1200.369263 1199.88855 1199.407104 1199.042603 1198.844238 1198.71521 1198.428223 1198.083618 1198.093872 1198.194824 1198.202148 1197.424072 1196.738159 1196.20752 1197.37793 1198.438721 1199.782104 1201.35498 1203.198486 1205.112061 1207.235962 1210.677979 1214.452148 1218.625244 1222.675659 1226.768311 1229.77417 1230.36499 1228.150391 1225.291748 1221.575317 1217.811279 1215.610352 1216.854736 1220.473145 1221.597046 1219.588135 1216.872559 1214.269043 1212.157959 1210.021973 1207.648193 1206.61377 1205.537354 1203.719482 1201.966309 1200.948364 1200.644775 1201.780029 1203.190308 1204.829956 1206.230591 1207.074341 1207.349731 1207.272827 1206.712036 1206.109131 1205.607422 1205.103027 1204.847778 1204.616333 1204.478027 1204.548828 1204.374146 1204.247681 1204.088623 1204.095337 1204.116943 1204.027954 1203.896362 1203.625488 1203.380127 1203.244263 1203.174561 1202.896484 1202.642212 1202.247803 1201.608276 1201.212769 1200.856323 1200.456787 1200.118652 1199.749146 1199.318726 1198.861328 1198.539551 1198.105713 1197.70166 1197.350342 1196.896362 1196.366455 1195.88269 1195.264893 1194.572144 1193.878784 1193.168457 1192.497681 1191.741577 1190.953735 1190.248413 1189.470703 1188.586182 1187.928833 1187.220337 1186.343994 1185.49292 1184.761108 1184.05127 1183.331909 1183.269043 1188.115723 1194.068848 1195.715088 1194.943604 1193.918579 1193.281128 1192.878052 1192.559448 1192.453491 1192.24707 1191.956909 1191.516846 1191.131958 1190.974976 1190.994263 1191.420166 1191.765747 1192.553223 1193.427124 1194.674927 1195.457275 1195.2229 1194.522705 1193.463745 1192.178711 1190.883911 1189.902466 1188.951782 1188.032837 1187.123169 1186.151978 1185.054688 1183.993042 1182.796021 1181.61731 1180.59314 1179.35376 1178.105591 1176.752319 1175.463135 1174.426147 1173.407227 1172.739014 1172.165161 1171.47644 1170.68811 1169.758911 1168.793213 1167.672607 1166.541382 1165.335449 1164.48584 1164.2948 1164.175049 1163.977905 1163.654297 1162.830078 1162.015015 1161.121338 1160.115723 1159.834351 1158.878052 1158.761108 1158.753174 1158.749268 1158.738647 1158.776733 1159.145386 1158.651733 1158.812378 1159.869751 1160.363281 1160.542969 1160.307983 1160.061401 1159.819214 1159.572021 1159.403198 1159.472168 1159.273193 1158.614258 1159.084595 1159.687866 1159.900757 1159.871094 1159.429199 1159.300171 1159.494385 1159.490234 1159.167725 1158.405396 1157.414185 1156.717529 1156.253662 1155.835449 1155.544922 1155.32019 1155.307373 1155.189209 1155.034058 1154.74646 1154.668457 1154.601196 1154.856934 1155.242676 1155.860596 1156.340576 1156.957642 1157.648071 1158.329834 1158.7052 1158.508911 1158.411987 1158.407715 1158.310303 1157.817749 1157.714233 1157.746948 1158.106934 1158.953247 1161.190308 1163.370728 1165.351196 1167.308472 1169.457764 1171.458008 1172.204224 1164.139526 1155.708252 1150.720703 1146.362915 1143.354126 1141.999146 1143.781982 1146.125488 1154.106689 1159.427734 1162.063965 1165.25647 1169.9729 1170.367065 1180.505981 1185.119141 1191.380859 1197.310059 1206.864624 1211.851562 1217.233643 1222.530518 1227.494507 1229.642212 1235.54187 1240.788696 1244.879883 1248.696899 1249.824097 1248.491943 1244.185425 1246.68335 1242.082153 1250.927612 1259.626343 1262.251343 1261.48938 1258.317871 1256.736694 1248.729614 1239.615601 1229.324097 1230.1073 1242.102417 1255.30835 1259.103516 1260.004517 1261.74646 1265.853882 1274.94104 1281.351562 1283.783691 1282.981445 1290.771851 1301.939453 1311.485229 1317.485352 1320.710815 1321.258301 1321.830078 1323.250488 1322.258667 1318.409546 1313.566406 1314.507324 1319.634766 1320.291992 1319.210815 1317.064575 1312.711792 1306.056396 1298.025391 1287.257568 1275.788086 1276.01416 1265.66333 1251.733765 1243.351074 1235.008301 1224.916748 1216.661011 1211.089844 1206.550659 1203.361694 1199.385498 1196.646851 1193.457397 1188.238159 1183.68042 1182.13855 1180.74585 1180.904419 1184.004028 1185.054321 1183.425537 1182.06958 1180.27832 1176.415894 1173.960083 1177.083862 1183.070801 1189.768677 1197.783447 1206.964966 1214.844971 1221.58728 1227.898315 1233.381104 1237.08313 1242.310425 1250.721924 1262.137939 1270.333984 1272.56189 1271.655273 1266.435303 1255.41748 1245.986328 1232.556641 1224.619385 1220.338745 1217.382202 1214.769897 1211.755615 1208.591553 1204.239014 1199.78772 1197.569824 1192.377686 1183.174438 1184.33313 1185.12085 1182.823853 1183.538452 1184.303101 1180.138428 1183.488647 1184.009521 1181.243652 1180.914307 1182.01062 1183.213257 1184.297729 1182.15625 1174.029785 1169.218994 1170.550171 1183.245728 1192.403198 1200.037109 1206.866943 1209.879639 1205.993042 1203.076294 1198.36853 1192.782104 1187.885986 1181.673462 1175.337891 1169.633667 1159.38208 1154.064575 1148.834717 1155.035767 1157.739624 1158.135132 1154.818115 1151.578369 1148.124023 1145.297119 1143.442871 1142.105103 1141.290527 1140.100952 1139.025024 1137.887329 1135.967407 1133.40918 1131.439819 1127.450073 1122.637329 1122.004517 1124.109497 1125.064941 1124.525513 1123.495483 1124.422363 1126.222168 1129.050415 1124.213257 1121.443604 1120.220459 1119.918945 1119.689575 1118.727783 1117.800659 1117.111084 1117.283447 1118.363525 1119.704468 1121.126465 1125.088013 1133.377075 1137.861084 1145.258179 1152.026855 1149.501709 1139.849854 1131.376831 1124.115234 1117.960815 1112.451782 1109.80957 1108.115356 1104.500122 1100.847778 1097.931152 1097.363647 1097.192139 1096.709229 1096.523315 1096.632812 1096.693115 1096.666626 1096.930664 1098.28186 1099.244263 1098.658813 1097.019775 1098.324707 1098.322021 1098.089355 1094.835449 1090.577515 1087.359863 1087.388428 -1218.365967 1217.547852 1217.935791 1219.995728 1222.002808 1222.432373 1221.554565 1219.984253 1218.13208 1217.363037 1217.751099 1217.701172 1217.489746 1215.608276 1212.343506 1209.683838 1209.060547 1206.776978 1201.145386 1195.664062 1195.088501 1194.817383 1192.905762 1194.695068 1193.94751 1191.943604 1190.234131 1188.786133 1187.56543 1186.788208 1186.038574 1184.904907 1183.24231 1176.989502 1172.417358 1167.238037 1158.998657 1149.002686 1145.614136 1144.432251 1143.243164 1141.650879 1139.950684 1138.326782 1137.440186 1137.902344 1139.516602 1141.35144 1143.370605 1145.358154 1150.018066 1158.32605 1159.093018 1159.539917 1160.762695 1159.87561 1150.882202 1155.791138 1162.843018 1172.116699 1183.249512 1193.52832 1207.906494 1210.009888 1211.759399 1212.84021 1213.347778 1213.423828 1213.15271 1212.555176 1211.684937 1210.750122 1209.912354 1209.424072 1209.237061 1209.051392 1208.49646 1206.019043 1198.218628 1181.48999 1186.743408 1197.21582 1199.803833 1201.615356 1202.856201 1204.250244 1205.475098 1207.564697 1208.447388 1208.691895 1208.806763 1208.759155 1208.510376 1208.220337 1207.651489 1206.977295 1206.812012 1206.813843 1206.673584 1206.987793 1207.508179 1207.691162 1206.62793 1203.971802 1201.368286 1199.255859 1197.341919 1194.759399 1188.404175 1182.810791 1182.012939 1184.695435 1184.572144 1182.800415 1186.004517 1194.55188 1196.355347 1197.166138 1198.227295 1199.180176 1200.305298 1201.465088 1202.571533 1203.532715 1204.111572 1204.30896 1204.205444 1203.965942 1203.709106 1203.373535 1203.02417 1202.920288 1202.800781 1202.849976 1202.807373 1202.65979 1202.441406 1202.183838 1202.038574 1201.577637 1201.062378 1200.708496 1200.343384 1200.187256 1199.914429 1199.711304 1199.616455 1199.631226 1199.541016 1198.546265 1197.559448 1196.927368 1197.49585 1198.545654 1200.012329 1201.594849 1203.26062 1204.987427 1206.966919 1209.545166 1212.643677 1216.566284 1219.199097 1221.92688 1223.764282 1225.861084 1227.4552 1226.053223 1222.746216 1219.445435 1217.312134 1219.420898 1224.650269 1230.351807 1228.256226 1219.707764 1216.897949 1214.918335 1212.325806 1209.997314 1208.567749 1207.423706 1205.443237 1202.894775 1201.539673 1201.30481 1202.640137 1204.235718 1206.006104 1207.178467 1207.80127 1207.908081 1207.663574 1207.215332 1206.585693 1206.08728 1205.661133 1205.420166 1205.287842 1205.266357 1205.243652 1205.068848 1204.828857 1204.766357 1204.735107 1204.680786 1204.642212 1204.534302 1204.384399 1204.15332 1204.052734 1203.941406 1203.747681 1203.482544 1203.152466 1202.621948 1202.129395 1201.722168 1201.324097 1200.878662 1200.450684 1199.884888 1199.491821 1198.989624 1198.702026 1198.153564 1197.787109 1197.212402 1196.743652 1196.162476 1195.483154 1194.760132 1194.072266 1193.367676 1192.69397 1191.991333 1191.036377 1190.320801 1189.535645 1188.800171 1188.077637 1187.276001 1186.500366 1185.724731 1184.723022 1183.755493 1183.134277 1185.113281 1189.545654 1194.258667 1195.707275 1194.945435 1194.145996 1193.677612 1193.407227 1193.267334 1193.254639 1193.072388 1192.701294 1192.318115 1191.850098 1191.661377 1191.669922 1191.907227 1192.361816 1193.022827 1194.019287 1195.368774 1195.693481 1195.791748 1195.659912 1194.572632 1193.165527 1191.98999 1190.912964 1190.099731 1189.140259 1188.003052 1186.812622 1185.487305 1184.10498 1182.742065 1181.831909 1181.02832 1179.897339 1178.824097 1177.709106 1176.633545 1175.536743 1174.469116 1173.601562 1172.855103 1172.091553 1171.19751 1170.023315 1168.85498 1167.849121 1166.854736 1165.823975 1164.920288 1164.587158 1164.483276 1164.306396 1163.92749 1162.866211 1161.939331 1160.655151 1159.555664 1158.938477 1158.758789 1158.741943 1158.735596 1158.890869 1159.298828 1159.672485 1160.054565 1159.484741 1159.851562 1160.507812 1161.087769 1161.357544 1161.481323 1161.209351 1161.000244 1160.722412 1160.456421 1160.358765 1160.185181 1159.498413 1159.924683 1160.240479 1160.393921 1160.245605 1159.994995 1159.977417 1159.955566 1159.82312 1159.474854 1158.628418 1157.729492 1157.216064 1156.809082 1156.477417 1156.178833 1155.943115 1155.793213 1155.76001 1155.631714 1155.337158 1155.242676 1155.265747 1155.415649 1155.726929 1156.264771 1156.765259 1157.313354 1158.046265 1158.889771 1159.204102 1159.116455 1158.991089 1159.055908 1158.825928 1158.345215 1157.918457 1157.93689 1157.904297 1158.765381 1160.751587 1162.696289 1164.348389 1166.146362 1168.233398 1170.325073 1171.91272 1165.747925 1156.509399 1151.39563 1147.17041 1144.53479 1142.604248 1142.460938 1145.442627 1150.384277 1156.239746 1158.442627 1161.360718 1170.700684 1171.115601 1179.212769 1183.657227 1191.724365 1197.709229 1203.555908 1206.410889 1212.687012 1218.65332 1223.05481 1227.547607 1232.945557 1234.205811 1240.372437 1243.228638 1241.884521 1244.974976 1240.40979 1234.166992 1238.153442 1249.087158 1254.957397 1255.581421 1251.566284 1244.999512 1243.220825 1239.770386 1233.408081 1228.716675 1229.665405 1235.154663 1242.005737 1245.361206 1247.691406 1255.157227 1261.490356 1267.266479 1270.336182 1270.595337 1279.016479 1289.322998 1298.512207 1306.625854 1311.250366 1312.473999 1311.318481 1312.588745 1315.936157 1315.114136 1311.682495 1307.215942 1300.051025 1304.344727 1307.85022 1308.655762 1306.05896 1296.602783 1286.302368 1284.074463 1275.119751 1262.131836 1257.49353 1253.781006 1245.671997 1234.088135 1226.005249 1218.93811 1212.987427 1208.264038 1204.741943 1201.316406 1197.235229 1193.268188 1189.690918 1184.6604 1181.770996 1180.553955 1181.733276 1187.219849 1190.102905 1191.811646 1189.542236 1186.202393 1183.817871 1180.438843 1176.473145 1175.008301 1180.003296 1185.668701 1193.008179 1202.238525 1211.472778 1218.886841 1225.661865 1230.967651 1231.099976 1237.099854 1247.135986 1263.198364 1272.650391 1273.862061 1272.784546 1269.728271 1262.415649 1255.667969 1244.384155 1232.099243 1226.405273 1221.895752 1217.969116 1213.837524 1209.721069 1205.300293 1201.37793 1198.292603 1194.0448 1189.284912 1189.633423 1186.262817 1183.137085 1186.513184 1185.799683 1182.603882 1184.525269 1185.63208 1183.443115 1181.669067 1182.967041 1186.914307 1188.249878 1186.142944 1178.428833 1170.26355 1172.531128 1179.77002 1191.274658 1202.971802 1210.794678 1209.904175 1203.894287 1194.377319 1189.010254 1185.467529 1183.27832 1178.304077 1172.939819 1167.23584 1158.320679 1158.492676 1156.33606 1162.312988 1171.589966 1168.433594 1157.240845 1154.188599 1148.296997 1146.575562 1145.268677 1144.622803 1144.812988 1144.754517 1144.735596 1143.182495 1140.692749 1137.078613 1135.399658 1127.374146 1121.890015 1125.251099 1128.673218 1129.641968 1128.781494 1126.989624 1125.353027 1123.781128 1122.412231 1121.262451 1121.356201 1121.482544 1121.777954 1121.746582 1120.742432 1119.790894 1119.103271 1119.194214 1120.400269 1122.28772 1126.279297 1130.840088 1140.558594 1150.244263 1153.478271 1157.639038 1157.779541 1146.862427 1134.867432 1127.205811 1120.582764 1115.390625 1110.3573 1110.052002 1107.289917 1103.738525 1100.858398 1099.779297 1099.370117 1098.338745 1097.579956 1098.182007 1098.930542 1099.101074 1099.853638 1100.825806 1100.658203 1100.171509 1099.406006 1098.958862 1098.696777 1098.355103 1097.141968 1094.190552 1091.241577 1089.238525 -1219.180176 1219.870239 1220.832886 1222.015503 1223.727905 1224.0177 1223.158203 1221.103027 1218.986572 1219.358398 1220.101562 1220.357178 1219.852783 1218.200439 1215.640747 1212.511963 1210.321533 1207.772583 1203.747192 1200.251953 1199.093384 1197.762695 1194.949463 1197.047974 1196.81311 1194.693359 1192.805176 1191.255615 1189.911987 1188.509888 1187.164429 1185.796265 1184.029663 1178.931274 1174.637451 1169.334229 1158.491577 1152.471558 1147.399536 1145.861328 1144.776123 1142.773315 1140.550293 1138.688232 1137.638306 1138.450806 1140.414429 1142.101685 1143.80188 1145.561768 1156.662109 1162.220093 1163.348022 1163.443481 1163.494263 1162.321411 1159.613281 1153.014404 1156.686035 1170.77771 1184.573853 1199.077881 1208.496338 1210.141113 1211.657471 1212.714844 1213.415527 1213.645752 1213.467529 1213.116699 1212.43811 1211.623535 1210.858521 1210.007202 1209.514893 1209.034302 1208.130005 1204.28894 1198.588623 1186.57019 1184.107788 1197.042847 1201.510132 1204.425049 1205.269043 1205.926392 1206.349731 1207.722778 1208.84436 1209.235107 1209.395264 1209.293335 1208.830566 1208.013062 1207.494629 1207.542847 1207.687378 1207.70459 1207.635254 1207.764404 1208.100464 1208.036621 1206.760376 1204.217407 1201.609131 1199.402466 1197.084595 1193.595215 1188.089722 1183.008301 1183.397705 1185.784058 1185.888184 1184.158569 1183.534668 1191.641235 1195.79541 1196.719238 1197.780029 1199.054077 1200.49646 1202.081665 1203.582642 1204.709839 1205.257568 1205.40686 1205.378052 1205.211792 1204.876465 1204.432617 1204.042725 1203.769287 1203.63623 1203.654297 1203.686646 1203.826172 1203.929321 1203.900391 1203.764404 1203.453979 1202.763428 1202.289062 1201.947388 1201.682739 1201.463257 1201.180054 1201.164307 1201.273926 1201.359741 1200.297363 1199.202881 1198.001587 1197.543701 1198.729492 1199.970581 1201.45813 1203.118408 1204.740234 1206.063477 1207.256348 1210.481812 1214.351807 1216.888306 1218.611328 1219.459229 1223.928955 1228.984985 1227.77478 1224.097534 1220.976685 1218.650635 1220.480225 1229.124878 1236.876465 1237.00061 1225.599487 1218.886108 1217.997192 1215.319702 1212.577393 1210.470215 1208.861084 1206.793579 1203.727051 1201.628296 1201.954468 1203.148926 1205.103882 1206.807129 1207.897827 1208.177368 1208.154053 1207.828125 1207.393921 1206.848145 1206.375244 1206.070923 1205.933228 1205.916992 1205.928467 1206.01123 1205.737671 1205.640869 1205.385498 1205.219849 1205.16626 1205.094971 1204.980225 1204.886719 1204.938477 1204.835449 1204.803345 1204.605347 1204.342285 1203.959839 1203.55542 1203.078369 1202.623169 1202.171509 1201.58667 1201.062256 1200.360962 1199.830322 1199.372803 1198.97937 1198.567383 1198.131958 1197.614746 1197.012451 1196.427368 1195.680298 1194.998779 1194.298828 1193.627197 1192.825928 1192.135498 1191.437622 1190.550781 1189.80127 1189.04126 1188.377686 1187.638184 1186.870239 1186.034668 1184.85022 1183.812622 1183.674194 1186.351562 1190.21582 1194.563354 1195.785522 1194.994995 1194.371094 1194.074951 1194.046997 1193.98877 1193.971191 1193.849609 1193.481812 1192.947144 1192.50769 1192.258301 1192.219971 1192.389038 1192.757568 1193.40979 1194.157471 1195.317017 1195.620483 1195.926392 1196.191528 1195.389526 1193.987061 1192.855957 1192.000366 1191.140503 1190.306396 1189.22998 1187.786987 1185.953247 1183.813477 1182.830933 1182.506348 1181.427002 1180.563843 1179.708984 1178.78064 1177.814941 1176.615112 1175.489624 1174.417603 1173.434937 1172.564087 1171.594971 1170.311523 1169.390503 1168.518433 1167.608521 1166.696655 1165.814575 1165.405884 1165.134033 1164.878174 1164.356934 1163.140991 1162.153198 1160.744629 1159.16687 1159.080078 1159.463623 1159.673462 1159.788086 1159.979858 1160.320435 1160.707153 1161.045288 1161.10022 1161.452271 1161.744019 1162.107422 1162.356445 1162.638916 1162.642212 1162.297852 1162.065308 1161.815308 1161.621948 1161.399658 1161.083618 1160.964478 1160.919312 1160.974731 1160.834961 1160.660889 1160.462036 1160.22876 1160.03772 1159.574219 1158.689087 1158.053955 1157.706177 1157.536743 1157.286255 1156.852173 1156.522217 1156.437622 1156.371338 1156.266602 1156.014404 1155.945068 1155.878296 1155.913574 1156.206299 1156.570801 1157.041992 1157.582886 1158.365845 1159.035522 1159.434448 1159.525146 1159.445435 1159.367676 1159.032471 1158.734131 1158.380371 1158.068604 1158.037842 1158.475098 1159.960938 1161.684692 1163.018433 1164.694458 1166.739868 1168.983398 1170.992554 1168.172241 1157.061279 1151.892578 1147.627319 1145.467163 1143.88501 1143.182739 1142.760498 1147.027832 1157.410767 1160.744385 1166.187866 1171.441406 1175.967896 1181.649658 1186.151001 1190.736328 1195.109497 1197.948364 1202.620728 1208.223145 1213.115601 1217.713745 1221.643066 1225.643066 1228.039185 1233.957886 1236.348267 1235.773438 1243.796265 1236.551514 1224.681274 1236.956055 1244.445923 1247.440186 1247.163574 1241.13208 1234.189575 1228.524048 1224.182007 1227.377075 1229.085571 1229.635132 1230.138428 1231.223145 1239.831299 1243.80542 1250.525391 1257.292725 1257.882446 1256.943604 1267.056519 1277.596558 1285.315674 1292.274292 1299.965942 1305.105103 1303.89624 1301.128052 1302.958984 1306.182373 1307.523071 1307.201904 1297.645996 1290.192383 1293.682861 1295.69458 1296.359619 1293.931152 1286.199341 1275.40332 1263.39502 1258.892456 1250.440308 1246.359131 1240.924805 1233.065063 1227.098755 1219.78833 1213.647705 1208.388672 1205.537231 1202.384521 1199.652954 1197.136719 1193.473511 1187.276367 1182.91333 1181.755615 1186.055908 1194.330811 1197.390137 1197.597778 1198.389404 1197.190918 1193.938721 1189.135132 1184.741577 1183.68689 1178.060303 1177.421021 1181.438599 1186.130737 1194.13208 1204.411987 1212.027222 1219.335938 1221.43103 1225.327881 1235.760864 1247.144653 1258.339722 1266.529053 1269.650146 1267.669434 1264.050781 1261.199829 1259.447144 1252.575562 1243.186523 1231.379883 1225.825928 1220.108643 1214.597412 1208.694092 1204.969238 1201.27417 1197.6521 1194.75415 1195.112671 1196.227905 1191.532837 1189.946533 1193.976929 1190.538452 1183.110229 1185.858032 1187.459961 1185.052734 1182.641724 1186.407227 1192.643799 1194.171631 1188.895996 1180.986694 1171.679077 1171.76062 1185.951172 1195.005249 1203.036133 1209.700928 1210.157227 1203.414185 1192.517822 1183.024414 1176.726074 1172.399048 1170.253174 1169.781372 1167.963867 1164.88562 1165.256104 1166.703369 1173.897949 1182.532715 1176.655396 1162.726807 1158.121826 1156.577271 1153.328857 1149.610474 1148.648071 1149.769531 1152.217041 1151.70166 1148.368652 1146.747437 1141.764648 1136.241577 1124.102539 1126.582153 1131.610718 1134.64917 1134.919312 1133.362305 1129.660889 1124.94751 1122.137451 1121.519897 1121.770508 1122.635864 1125.812988 1125.839355 1124.700928 1122.456543 1120.915283 1120.032471 1120.207886 1121.244019 1125.447998 1132.932373 1137.200806 1144.316406 1160.099731 1168.037231 1169.553833 1167.549561 1152.999268 1141.535767 1132.136963 1124.027832 1119.346069 1113.669678 1110.840576 1108.803345 1106.212402 1104.41626 1103.413452 1103.052734 1102.357056 1101.937866 1102.054199 1102.670288 1103.030273 1103.070923 1102.675415 1101.734009 1100.759766 1099.913086 1099.302368 1098.903687 1098.466675 1098.049927 1095.830933 1093.265869 1091.418091 -1219.607666 1222.73938 1224.368042 1225.525635 1226.258789 1225.928833 1224.810791 1222.75708 1221.41626 1222.273071 1222.84436 1222.50647 1222.069336 1220.83728 1218.063477 1213.486206 1209.931641 1206.667114 1205.574585 1204.782104 1204.032104 1201.555542 1199.161865 1199.192017 1198.378784 1196.705688 1194.737671 1193.107056 1191.635376 1189.768555 1187.192017 1184.661133 1182.133789 1177.495117 1172.740234 1168.625244 1161.083496 1158.83313 1153.456543 1148.641602 1146.279541 1143.822144 1140.921509 1138.984741 1138.125122 1139.311157 1141.278931 1143.446045 1144.980225 1147.897705 1161.299561 1168.483398 1168.177979 1166.87085 1166.248535 1165.227051 1162.320312 1156.803711 1156.890137 1172.700073 1184.190552 1201.531616 1208.975586 1210.377441 1211.677368 1212.786743 1213.449707 1213.812256 1213.831299 1213.534058 1213.017334 1212.253662 1211.40625 1210.443359 1209.535767 1208.176147 1206.153442 1202.145752 1196.608887 1187.542847 1181.901367 1197.814209 1205.186279 1207.525757 1207.774536 1207.807861 1207.893433 1208.690674 1209.520386 1209.926636 1209.984497 1209.846191 1209.500977 1208.692993 1208.05127 1208.072266 1208.188232 1208.377075 1208.502808 1208.491333 1208.314697 1207.796875 1205.799683 1203.664795 1201.303833 1198.862915 1196.004761 1192.431641 1187.703979 1182.94873 1184.375122 1187.711304 1190.904419 1189.280884 1184.541504 1191.245483 1196.275146 1196.600586 1197.260498 1198.549072 1200.25354 1202.550537 1204.683594 1205.988892 1206.4729 1206.61438 1206.541138 1206.289551 1205.952271 1205.417236 1204.918457 1204.694336 1204.597046 1204.577271 1204.665161 1204.867676 1205.242798 1205.59375 1205.692383 1205.296753 1204.602417 1203.944824 1203.599976 1203.194214 1202.826538 1202.625977 1202.672119 1202.989746 1203.245605 1202.842651 1201.452881 1199.900879 1198.631836 1198.556763 1199.886475 1201.381836 1203.100342 1204.980591 1206.767822 1208.237183 1210.333008 1213.481323 1215.796387 1217.027832 1218.571167 1224.766235 1232.733154 1229.658447 1225.730713 1221.92041 1218.881348 1219.784302 1231.125366 1243.941895 1245.154907 1234.453613 1226.437988 1222.023926 1218.213379 1214.847778 1212.08252 1209.798828 1207.336304 1204.354492 1202.098755 1202.441162 1203.7146 1205.636963 1207.629761 1208.165405 1208.31958 1208.257446 1207.958618 1207.508789 1206.974121 1206.665894 1206.540161 1206.388306 1206.402344 1206.723022 1206.900146 1206.624756 1206.239746 1205.898682 1205.746216 1205.619385 1205.602783 1205.565308 1205.644531 1205.665405 1205.651733 1205.571777 1205.429199 1205.237061 1204.877319 1204.407837 1203.945435 1203.373413 1202.836304 1202.278809 1201.653809 1200.907715 1200.306396 1199.776245 1199.294312 1198.864258 1198.416382 1197.802002 1197.206177 1196.624756 1195.859253 1195.327637 1194.63855 1193.849365 1193.071533 1192.287109 1191.585938 1190.846313 1190.104126 1189.495728 1188.848877 1188.214966 1187.510254 1186.505249 1185.308594 1184.190674 1183.682983 1185.8396 1189.56958 1193.661377 1195.849121 1195.604126 1195.081421 1194.758301 1194.768555 1194.85498 1194.778442 1194.547974 1194.212036 1193.700806 1193.177612 1192.85022 1192.732056 1192.848267 1193.276245 1193.749146 1194.370117 1194.982056 1195.415894 1196.010132 1196.1875 1195.930298 1194.661377 1193.631592 1193.091431 1192.540039 1191.939941 1190.884644 1189.386963 1187.292847 1185.164429 1184.108765 1183.37915 1182.358765 1181.552612 1180.947266 1180.12915 1178.944824 1177.740479 1176.451416 1175.36731 1174.320923 1173.462891 1172.235596 1171.146606 1170.431641 1169.67749 1168.679199 1167.63855 1166.798096 1166.293091 1165.959473 1165.62854 1164.934448 1163.871826 1162.891846 1161.540039 1160.305176 1160.469604 1160.634644 1160.852539 1161.014282 1161.099487 1161.311523 1161.685059 1162.095947 1162.423828 1162.852417 1163.199219 1163.461548 1163.786743 1164.07019 1164.120605 1163.995361 1163.649902 1163.46521 1163.190308 1162.880859 1162.419678 1162.139526 1161.892822 1161.664795 1161.499146 1161.187866 1160.852417 1160.456421 1160.070801 1159.562012 1158.771851 1158.305542 1158.439575 1158.435547 1158.003174 1157.424438 1157.08667 1156.936157 1156.818237 1156.85144 1156.807861 1156.679565 1156.528687 1156.537842 1156.650635 1156.966919 1157.385986 1157.817749 1158.53064 1159.199829 1159.638794 1159.816406 1159.731689 1159.628784 1159.33313 1159.032471 1158.765137 1158.504028 1158.312012 1158.369873 1159.172241 1160.407959 1161.836792 1163.181763 1164.826416 1166.853149 1168.882935 1165.793579 1157.243164 1152.335083 1148.241821 1145.945923 1144.810425 1143.982544 1143.595581 1143.238647 1147.171509 1156.46875 1163.39563 1169.436523 1175.867065 1183.075806 1185.883057 1187.966187 1190.685059 1193.584961 1195.471313 1203.900269 1207.397949 1212.765869 1218.363647 1217.88562 1220.617432 1228.743286 1229.725586 1229.556641 1234.697144 1231.544189 1217.699829 1231.090576 1233.647949 1238.990356 1238.415405 1232.379272 1224.636475 1218.499512 1221.355957 1234.6604 1241.002197 1242.637817 1243.31958 1245.006836 1244.597412 1242.697144 1242.849854 1244.607666 1252.34375 1255.417603 1267.931641 1274.797974 1280.049438 1287.189209 1290.668335 1292.757812 1290.61792 1294.405396 1296.431641 1298.427002 1300.950195 1301.175049 1293.959351 1282.560425 1280.658813 1283.409302 1281.496216 1277.24585 1273.94165 1266.697632 1251.368164 1246.351196 1241.123169 1232.046265 1229.308838 1224.297119 1219.303467 1214.650879 1207.735229 1205.411011 1203.164185 1200.213135 1196.670044 1195.1427 1190.956421 1183.820435 1181.900269 1189.597412 1198.190674 1201.704468 1203.797363 1204.988403 1205.004028 1201.732178 1198.60022 1193.74292 1190.185181 1188.036377 1184.473755 1176.76062 1178.898804 1181.046997 1186.745605 1193.595947 1200.469482 1206.922119 1212.612671 1222.305054 1232.17334 1239.989258 1248.13208 1256.222412 1256.974609 1252.338623 1248.09082 1250.443604 1253.520386 1252.165405 1247.109375 1238.578003 1229.409058 1221.157715 1216.49707 1209.996338 1205.825073 1201.07605 1195.561523 1194.938354 1198.124634 1198.438477 1194.268311 1194.024414 1197.22229 1195.932495 1190.450317 1190.584961 1191.187134 1189.522339 1188.289429 1190.728271 1196.465088 1196.949219 1192.607544 1183.188721 1174.809448 1169.765381 1186.097778 1196.509399 1206.835083 1210.099976 1210.887695 1204.609375 1192.242798 1182.541626 1177.888916 1175.106812 1175.109619 1175.041504 1172.874634 1171.592285 1175.0979 1181.90625 1185.164185 1183.097168 1182.470947 1175.22168 1172.437256 1166.159058 1161.671753 1159.459229 1158.781128 1159.829468 1161.567261 1158.192749 1150.409912 1146.535522 1135.67627 1128.203003 1128.063965 1134.740356 1138.219116 1138.938843 1137.253906 1134.710571 1131.962036 1130.371094 1128.494873 1129.210083 1129.988892 1132.534912 1133.081543 1130.709961 1127.453125 1123.38269 1121.042114 1120.27771 1120.610229 1122.392944 1130.296265 1140.781494 1149.793579 1151.048218 1158.90686 1173.175537 1181.916504 1174.82959 1157.818237 1146.901123 1136.341064 1128.974243 1123.654907 1118.646606 1114.203247 1110.162354 1107.981689 1106.681641 1106.636475 1107.570679 1107.869263 1107.881226 1107.151978 1106.587646 1106.83728 1106.307739 1104.314453 1102.385864 1100.817749 1099.882446 1099.28418 1098.908569 1098.035156 1097.240723 1095.967529 1094.852661 1093.921387 -1223.839233 1226.783691 1228.570801 1229.482056 1229.254395 1227.907349 1226.75354 1226.161987 1225.498657 1225.64209 1225.566162 1224.392944 1222.727539 1220.835815 1217.591309 1214.035156 1209.220215 1207.104736 1208.382202 1209.288818 1208.579834 1206.143799 1203.239624 1201.748169 1200.465088 1198.797485 1196.815063 1195.058228 1193.244019 1191.008057 1186.572266 1182.382812 1180.388184 1175.812378 1170.307373 1167.796143 1164.458374 1161.743408 1157.854126 1151.447754 1147.485352 1144.244385 1141.192139 1139.278198 1139.077026 1140.642822 1142.38855 1144.512085 1148.194336 1155.391357 1167.453003 1173.465698 1171.42334 1169.141479 1168.941162 1168.922607 1165.766846 1158.837524 1157.265259 1170.741211 1185.082397 1200.518433 1209.122437 1210.5625 1211.863525 1212.791992 1213.479004 1213.903809 1214.168457 1213.996704 1213.553711 1212.814575 1211.866211 1210.709961 1209.14624 1206.600708 1204.966675 1201.108032 1194.200195 1190.467896 1183.354736 1198.412842 1207.533569 1209.453979 1209.942383 1210.083008 1210.162109 1210.203125 1210.43689 1210.688721 1210.706543 1210.519897 1210.162842 1209.600708 1209.045898 1208.826172 1208.919189 1208.876099 1208.816528 1208.722778 1208.334717 1207.150024 1205.195923 1203.231812 1201.064697 1198.546997 1196.026001 1192.186768 1187.823853 1183.731567 1186.83313 1192.434326 1196.040771 1196.999146 1189.134033 1189.452393 1196.442627 1196.869385 1196.160156 1196.26416 1198.952637 1202.915771 1206.391968 1207.10498 1207.501709 1207.619385 1207.590088 1207.283447 1206.921509 1206.262207 1205.764526 1205.646729 1205.512573 1205.530396 1205.583618 1205.820068 1206.303345 1207.035156 1207.239502 1206.977051 1206.381104 1205.718872 1205.010742 1204.503052 1204.084351 1203.946045 1204.093384 1204.478271 1205.230103 1205.628052 1204.511597 1202.26062 1200.312378 1199.284668 1199.678833 1201.252441 1203.014404 1205.574829 1207.65979 1209.741333 1211.764893 1214.339111 1216.3573 1217.32605 1218.993408 1226.138672 1233.193237 1231.474609 1227.484131 1222.932007 1218.995972 1218.830444 1230.800659 1242.848511 1252.162598 1241.27002 1233.859253 1225.918457 1218.991943 1215.836914 1212.905518 1210.238159 1207.546875 1204.984741 1202.885254 1202.684937 1204.134521 1206.047485 1207.636597 1208.280396 1208.386353 1208.390015 1208.10144 1207.492065 1207.126465 1207.24292 1207.178589 1206.827515 1206.720825 1207.288696 1207.730103 1207.262329 1206.688965 1206.428589 1206.202637 1206.215332 1206.204834 1206.207764 1206.231323 1206.389038 1206.368042 1206.366333 1206.231934 1206.039673 1205.737305 1205.245361 1204.677002 1204.130737 1203.531372 1202.875 1202.183594 1201.402222 1200.858521 1200.221313 1199.708374 1199.265747 1198.771729 1198.174072 1197.521118 1196.765747 1196.18457 1195.689453 1195.032593 1194.265015 1193.383179 1192.619873 1191.878418 1191.262451 1190.648315 1190.091187 1189.520386 1188.859863 1188.226929 1187.218994 1186.08667 1185.002319 1184.469238 1184.507202 1188.071045 1191.857544 1194.691284 1195.858032 1195.557495 1195.21582 1195.4552 1195.549927 1195.398315 1195.222534 1194.921265 1194.400024 1193.713989 1193.297485 1193.15332 1193.282104 1193.656372 1194.23999 1194.774048 1195.156494 1195.313965 1195.672119 1196.398315 1196.368042 1195.305908 1194.702881 1194.235962 1194.130127 1193.733643 1192.825439 1191.182495 1189.407471 1187.399414 1185.894531 1184.808594 1183.649902 1183.278931 1182.639404 1181.460327 1180.09375 1178.723877 1177.483276 1176.411011 1175.409424 1174.416138 1173.459839 1172.455322 1171.575684 1170.86438 1169.936646 1168.708008 1167.826782 1167.02771 1166.702637 1166.316895 1165.596069 1164.724121 1163.713013 1162.673218 1161.592407 1161.679443 1161.937866 1162.101562 1162.214111 1162.324463 1162.502686 1162.785645 1163.165161 1163.610962 1164.096313 1164.574707 1164.994751 1165.308472 1165.722778 1165.796265 1165.640747 1165.454468 1165.060547 1164.841064 1164.461182 1163.916992 1163.414307 1162.946777 1162.493896 1162.13269 1161.593018 1161.079834 1160.50708 1160.005859 1159.213989 1158.668701 1158.701904 1159.062744 1159.106201 1158.536133 1157.876465 1157.562866 1157.451416 1157.368896 1157.53186 1157.506104 1157.484009 1157.157349 1157.132935 1157.190674 1157.388428 1157.713745 1158.112671 1158.721802 1159.419434 1159.907715 1160.088501 1160.050659 1159.937622 1159.631836 1159.323364 1159.127563 1158.942993 1158.83252 1158.665039 1158.842407 1159.50354 1160.45874 1161.61853 1162.599243 1163.780029 1164.271973 1161.995728 1157.585083 1153.018921 1148.669312 1146.192749 1145.231934 1144.552368 1144.182861 1143.889404 1146.169678 1153.473145 1160.327759 1168.229248 1174.103638 1180.082642 1184.001709 1184.65271 1184.24231 1190.753906 1196.588501 1202.914673 1208.510986 1206.820923 1211.22229 1213.73938 1216.228516 1221.836914 1223.276489 1219.187622 1226.429321 1223.945923 1216.724121 1222.351807 1219.746216 1229.670898 1228.122437 1221.365601 1212.095703 1219.545898 1236.062134 1245.75647 1251.552979 1258.543823 1253.709473 1252.894287 1252.99585 1251.06543 1249.601318 1252.378174 1256.453735 1257.4552 1270.083252 1277.852661 1282.156616 1282.540039 1281.888428 1279.722656 1279.183228 1284.114136 1286.688232 1290.978149 1291.909424 1295.150635 1291.549927 1279.479126 1270.997192 1270.604736 1267.795288 1264.825806 1260.283813 1252.335693 1243.90271 1234.29895 1230.408569 1226.201416 1221.528564 1218.256958 1215.989014 1212.104248 1207.677002 1204.393433 1201.425049 1198.643677 1195.654053 1193.859375 1193.873901 1192.316528 1190.553345 1194.260376 1201.195435 1206.407715 1209.812012 1211.467041 1210.944946 1206.402344 1202.53833 1197.692017 1194.791138 1193.146118 1189.683228 1184.64624 1179.580688 1178.737427 1182.579712 1187.68103 1192.009644 1201.765747 1210.855957 1217.415405 1225.927856 1233.928223 1240.644043 1247.151001 1246.127441 1239.122803 1232.379883 1235.271606 1238.151001 1241.198975 1243.25293 1238.74646 1231.438599 1224.687622 1220.645386 1213.11145 1207.592041 1200.809814 1195.299438 1198.648926 1205.055176 1201.074219 1194.792969 1195.906494 1198.983765 1196.755371 1193.465454 1194.524902 1195.848877 1194.934082 1192.865479 1194.778931 1197.748291 1198.650146 1196.152222 1189.723511 1181.950317 1170.828613 1179.578491 1188.773438 1197.987549 1209.682007 1211.275391 1206.420532 1193.345947 1185.369263 1187.795654 1188.632446 1183.912598 1181.810425 1179.960815 1181.248413 1184.58374 1183.727051 1179.640137 1176.214111 1176.702515 1176.122925 1174.763062 1173.807983 1172.415405 1172.005981 1169.550415 1163.036987 1156.989624 1149.078735 1141.363037 1132.71228 1128.400269 1131.642822 1137.873047 1142.467285 1145.029907 1144.252808 1136.454346 1133.709717 1132.918823 1134.484619 1137.272339 1138.228638 1139.71521 1142.800537 1142.442261 1136.233154 1131.377563 1122.959351 1120.202393 1120.232422 1120.871094 1125.866821 1134.218994 1145.790161 1156.533325 1162.432251 1165.749756 1174.774048 1187.012207 1176.103149 1161.089111 1148.767212 1137.456909 1130.612183 1125.371216 1120.9729 1119.515381 1112.215332 1109.926392 1108.584106 1109.002563 1110.424316 1111.678589 1112.147095 1110.795898 1110.508179 1110.330688 1108.767822 1104.589111 1102.244873 1100.348022 1098.844238 1098.872925 1098.782349 1098.431641 1097.948853 1097.995239 1097.607788 1096.510376 -1230.228882 1231.683594 1232.546997 1232.70813 1231.770996 1229.850342 1228.874023 1229.454956 1229.349854 1229.474854 1228.518066 1225.988892 1222.797119 1220.082764 1218.066406 1216.432251 1215.705566 1213.516968 1213.630127 1212.327148 1210.357788 1207.375 1204.909058 1203.984375 1202.588013 1200.843872 1199.123291 1197.398438 1195.678467 1192.851807 1188.080566 1184.86792 1181.975708 1176.624634 1172.551392 1168.72998 1165.398682 1161.632812 1157.147461 1152.182617 1147.032227 1144.190186 1141.234741 1139.266357 1139.548584 1140.955688 1142.814819 1144.765381 1147.66333 1161.313599 1172.912476 1178.393433 1176.09375 1172.839233 1172.361572 1172.793335 1171.908203 1159.033081 1163.564453 1177.360229 1191.273682 1205.332275 1208.762817 1210.728027 1211.997559 1212.987183 1213.61853 1214.080444 1214.393921 1214.343018 1213.942993 1213.244751 1212.34375 1210.944702 1209.310791 1208.117432 1207.788818 1207.40686 1206.531738 1196.223389 1191.729614 1194.677612 1205.415161 1210.209473 1211.163818 1211.252075 1211.455688 1211.52478 1211.502319 1211.441772 1211.433472 1211.194458 1210.860229 1210.36853 1209.817749 1209.510986 1209.44397 1209.43103 1209.174805 1208.750244 1207.781982 1206.313477 1204.87915 1203.081421 1200.771973 1198.510986 1196.074951 1192.412964 1187.921875 1184.680176 1189.287476 1193.918335 1196.907104 1197.575684 1194.197754 1188.577271 1188.868164 1193.339966 1195.283936 1194.220337 1196.1521 1202.881714 1207.828979 1208.248291 1208.505859 1208.72876 1208.706421 1208.404541 1207.683716 1206.963135 1206.423706 1206.500244 1206.67627 1206.653564 1206.604126 1206.660767 1207.330444 1207.802979 1208.68042 1208.661011 1207.949585 1206.921509 1206.360962 1205.937988 1205.390991 1204.988159 1205.134399 1205.878662 1206.792969 1207.920654 1207.237427 1204.855835 1202.390991 1200.70459 1199.822388 1200.974121 1202.796753 1205.404907 1207.767212 1209.964844 1213.041504 1217.201782 1219.202026 1219.181885 1219.049561 1226.232422 1233.22583 1233.278809 1229.285034 1225.111816 1219.493774 1222.207275 1230.876343 1241.721436 1257.877563 1245.971802 1237.973877 1230.003662 1219.399414 1216.549438 1213.543335 1210.431641 1207.527588 1205.447632 1203.359741 1202.838623 1204.374634 1205.996216 1207.468506 1208.182129 1208.444214 1208.47522 1208.231445 1207.481934 1207.503052 1207.771606 1207.692627 1207.301025 1207.095703 1207.703613 1208.088013 1207.650513 1207.122925 1206.685791 1206.735229 1206.849976 1206.940186 1206.814819 1206.790405 1206.990112 1207.075195 1207.12793 1207.103638 1206.872681 1206.567749 1206.05542 1205.361328 1204.736816 1204.146118 1203.409912 1202.637573 1202.006104 1201.361816 1200.65979 1200.143799 1199.633789 1198.995239 1198.392212 1197.735718 1197.127808 1196.461548 1195.934082 1195.317383 1194.607056 1193.695068 1192.934814 1192.197021 1191.724609 1191.311768 1190.861816 1190.307007 1189.917603 1189.256104 1188.197266 1187.101318 1186.028809 1185.384033 1184.897461 1186.704712 1189.765015 1192.449097 1194.070801 1195.368896 1195.583374 1195.667969 1195.97229 1195.804077 1195.625366 1195.461792 1195.053955 1194.197998 1193.76709 1193.568237 1193.744141 1194.001099 1194.687378 1195.185181 1195.633911 1195.942993 1196.289429 1196.918335 1196.977295 1196.350586 1195.689697 1195.438354 1195.540161 1195.383545 1194.597656 1193.161255 1191.657715 1189.691528 1187.879395 1186.3302 1185.280762 1184.657715 1183.681274 1182.398071 1181.122437 1179.794556 1178.49231 1177.39917 1176.418945 1175.357788 1174.314575 1173.375488 1172.564087 1171.661011 1170.866455 1169.904297 1168.763306 1168.010742 1167.365479 1167.115723 1166.584106 1165.45166 1164.427246 1163.27356 1163.035522 1163.051392 1163.193115 1163.349243 1163.512085 1163.531128 1163.707275 1163.906616 1164.258057 1164.675171 1165.264404 1165.868286 1166.471313 1167.15979 1167.543335 1167.694946 1167.478271 1167.190674 1166.884766 1166.554199 1166.177368 1165.521484 1164.885376 1164.168091 1163.43042 1162.594849 1161.805908 1161.079834 1160.42627 1159.612793 1158.81543 1158.685669 1158.969116 1159.428467 1159.425049 1158.811646 1158.159912 1157.846924 1157.893921 1158.083618 1158.318848 1158.283691 1158.181885 1157.859741 1157.613403 1157.668457 1157.895874 1158.317749 1158.63208 1159.050293 1159.781616 1160.201782 1160.348511 1160.351929 1160.254395 1159.928467 1159.757446 1159.581787 1159.383545 1159.234985 1159.103027 1159.06189 1158.740845 1159.068115 1159.86438 1160.265503 1159.963257 1161.640381 1160.532959 1157.782837 1153.226562 1148.963623 1146.358643 1145.492065 1144.871948 1144.487061 1144.60144 1145.398926 1149.759277 1158.398682 1163.14209 1169.424683 1174.170288 1176.462158 1180.425415 1184.571899 1188.729126 1194.072998 1198.934692 1203.209717 1204.354248 1209.170288 1209.922241 1206.627808 1217.258911 1220.658081 1216.656128 1219.470947 1217.47583 1208.723389 1211.268311 1212.138428 1216.325562 1210.340454 1205.25708 1210.561646 1224.662964 1234.037842 1241.705078 1247.447144 1253.316528 1253.16687 1255.410767 1258.200317 1258.07312 1257.368286 1260.825073 1266.235962 1270.690186 1269.155029 1269.695068 1272.63501 1272.654297 1270.160645 1267.681641 1265.993286 1271.591553 1273.378906 1277.594604 1282.551758 1285.557495 1283.587158 1271.65918 1262.966919 1261.165039 1258.258179 1253.491699 1245.600586 1238.914185 1231.967773 1228.221069 1224.175781 1221.555908 1218.282593 1215.810669 1213.559204 1211.060303 1208.037109 1203.944092 1199.890137 1197.41333 1194.883423 1194.91687 1196.645264 1197.817749 1196.498657 1194.375732 1203.971558 1210.286133 1214.558228 1217.340698 1218.723022 1211.799316 1207.030151 1203.298218 1200.716553 1198.708374 1196.343872 1192.050293 1186.93396 1181.121338 1180.386475 1182.806641 1189.493896 1197.805298 1205.138672 1213.224365 1221.559326 1228.28772 1232.808838 1235.305908 1232.334595 1227.766602 1225.702637 1225.5896 1225.721558 1226.553955 1230.095703 1231.316406 1227.953857 1223.544067 1219.359253 1209.856323 1206.443115 1201.880249 1196.633179 1207.285156 1209.700806 1204.940186 1194.915161 1199.747803 1202.742676 1198.957275 1194.266846 1196.860107 1198.814209 1198.153564 1194.694214 1197.043579 1200.738892 1201.437256 1199.463867 1195.47168 1186.823853 1179.374023 1179.629028 1185.453491 1195.158203 1209.077759 1211.261963 1209.100342 1196.04834 1199.684814 1200.975586 1199.139893 1196.478271 1189.86731 1186.191284 1183.956787 1182.016235 1175.5896 1170.616699 1168.173706 1169.960083 1171.169312 1171.827026 1172.555298 1171.612183 1170.05249 1163.729248 1152.14856 1141.87793 1134.443237 1131.704102 1133.863037 1140.055176 1145.134766 1149.537598 1152.972168 1153.89563 1146.8396 1137.37561 1133.026367 1134.606567 1141.97998 1144.677368 1145.451538 1147.104736 1149.302246 1149.29895 1142.553833 1134.681641 1122.46106 1120.231689 1120.245239 1122.15332 1131.157104 1138.884277 1148.060425 1157.835327 1165.755493 1173.849854 1181.124756 1187.232666 1175.795898 1158.089844 1146.226074 1135.466064 1129.740479 1125.417358 1121.570312 1122.432983 1116.902222 1111.880371 1110.627197 1111.427368 1113.024902 1114.629639 1113.868896 1110.706909 1110.65979 1108.856689 1105.53125 1102.556763 1100.345215 1097.886841 1097.830688 1097.950928 1098.423218 1098.383057 1098.144897 1098.237671 1098.234253 1097.925781 -1233.336426 1233.923096 1234.532227 1234.658203 1233.771362 1231.618164 1230.639526 1231.755127 1232.844849 1232.607178 1230.929688 1227.721802 1223.107178 1219.647949 1218.615845 1219.303833 1220.735229 1221.2229 1219.555298 1216.349121 1211.9104 1207.250122 1207.449341 1205.976807 1204.44165 1202.954956 1201.191895 1199.314209 1196.865356 1193.201416 1189.865479 1186.338013 1182.233398 1177.164551 1173.261353 1169.220337 1165.565552 1161.35144 1157.307129 1154.674316 1147.672241 1144.495361 1141.327271 1139.345825 1140.293091 1141.611694 1143.443237 1145.588257 1155.364624 1166.384766 1181.598877 1185.318115 1182.2854 1178.706909 1176.6427 1175.181763 1172.640015 1160.482544 1172.084961 1181.869995 1194.715332 1207.732178 1209.456909 1211.086182 1212.353882 1213.227905 1213.962646 1214.434937 1214.762695 1214.776733 1214.405151 1213.723755 1212.790039 1211.514526 1210.338501 1209.358032 1208.982544 1208.877563 1208.714111 1207.870117 1196.582153 1192.984131 1199.31189 1209.112061 1211.936157 1212.233276 1212.252563 1212.310181 1212.294312 1212.154053 1212.044312 1211.866577 1211.526733 1211.066772 1210.531616 1210.22998 1210.067139 1209.822388 1209.391357 1208.835693 1207.742798 1206.789917 1205.21814 1202.959961 1200.60498 1198.374756 1196.332031 1192.571533 1188.153931 1184.986206 1195.085938 1196.430542 1197.654541 1198.25354 1197.338745 1196.164673 1194.777466 1196.625366 1196.896851 1196.929077 1195.796143 1200.148193 1207.959717 1208.748657 1209.33374 1209.734131 1209.773071 1209.523926 1208.838013 1207.547729 1207.112061 1207.32666 1207.702271 1207.861572 1207.526001 1207.412476 1208.46814 1209.486572 1210.324829 1210.434204 1209.767456 1208.479004 1207.744751 1207.275879 1206.791382 1205.954346 1205.895142 1206.830566 1207.975708 1209.384521 1208.784912 1206.959473 1204.248413 1202.139893 1201.089722 1200.653564 1202.553223 1204.872559 1207.411133 1210.336304 1213.751221 1218.175537 1221.618896 1223.493164 1225.148315 1228.487671 1234.148193 1237.450439 1232.881714 1230.06958 1221.966919 1225.408325 1235.107788 1241.824585 1254.188721 1254.179321 1241.219116 1232.495361 1221.902466 1217.837891 1214.575806 1210.861816 1207.723267 1205.95459 1204.245728 1203.136719 1204.003418 1205.830078 1207.252808 1208.029663 1208.589722 1208.667236 1208.489014 1207.746704 1207.920532 1208.150513 1208.243286 1207.700684 1207.516357 1208.057983 1208.375854 1207.932983 1207.218262 1207.109619 1207.294556 1207.608032 1207.643311 1207.401733 1207.304565 1207.598145 1207.796509 1207.92981 1207.7854 1207.608398 1207.285645 1206.747437 1206.023804 1205.26709 1204.632812 1204.002563 1203.348389 1202.630127 1201.930176 1201.296143 1200.649292 1199.991089 1199.373535 1198.703491 1198.129761 1197.489502 1196.928589 1196.278687 1195.58374 1194.793213 1193.960693 1193.24231 1192.621216 1192.175293 1191.805908 1191.663574 1191.383789 1191.104248 1190.48999 1189.503906 1188.383911 1187.101807 1186.296875 1185.672241 1185.6427 1188.407104 1191.12561 1192.80835 1194.237671 1195.574097 1196.087646 1196.255249 1196.186646 1195.990967 1195.782593 1195.469238 1194.560181 1194.109375 1194.058716 1194.111084 1194.35083 1194.836426 1195.500366 1196.133301 1196.633057 1197.196289 1197.501343 1197.52771 1197.238525 1196.63269 1196.392456 1196.391846 1196.234619 1195.874146 1195.216675 1193.734985 1191.799072 1189.704468 1188.090576 1186.640503 1185.673462 1184.314209 1183.009277 1181.796509 1180.511841 1179.51709 1178.420044 1177.150757 1176.097656 1174.996948 1174.082642 1173.283569 1172.442749 1171.559937 1170.617065 1169.62561 1168.002441 1168.202881 1168.088013 1167.720581 1166.457642 1165.19397 1164.497437 1164.354248 1164.449097 1164.486206 1164.749023 1164.8479 1164.838379 1164.871216 1165.068359 1165.358521 1165.753784 1166.222046 1166.987549 1167.865234 1168.798218 1169.422607 1169.428589 1169.384033 1169.01416 1168.456177 1168.228516 1167.924805 1167.51062 1166.588379 1165.467896 1164.211914 1162.880249 1161.792969 1160.904907 1160.021729 1158.80249 1158.739136 1158.920898 1159.317383 1159.592163 1159.504395 1158.968994 1158.393799 1158.192627 1158.430542 1158.695312 1158.86084 1158.944336 1158.912109 1158.646973 1158.157837 1158.130981 1158.485474 1158.839355 1159.167603 1159.747314 1160.220581 1160.579712 1160.592773 1160.649536 1160.444214 1160.192505 1159.985107 1159.721313 1159.566772 1159.386719 1159.307983 1159.210938 1158.755005 1158.180054 1158.401123 1158.543335 1158.139038 1158.927979 1159.237793 1157.913452 1153.623169 1149.535522 1146.787231 1146.026611 1145.220093 1144.715088 1146.319458 1148.360229 1149.107788 1155.069336 1158.026733 1163.929199 1167.515381 1172.880371 1177.824097 1182.317139 1185.417358 1190.019165 1195.019897 1198.717529 1196.237915 1204.366211 1207.428101 1201.83313 1210.246216 1212.619263 1208.37439 1211.135498 1211.436401 1209.037598 1200.020264 1207.74292 1206.978882 1193.566528 1206.131714 1217.474731 1222.554077 1232.307861 1237.61438 1242.958374 1242.883301 1243.45105 1249.140747 1253.074829 1257.574707 1259.559082 1264.880859 1270.2854 1264.660278 1256.334961 1257.060181 1259.460571 1260.192749 1258.454102 1257.36084 1253.157104 1255.255127 1264.286377 1266.759033 1269.857788 1270.071777 1269.088623 1262.115723 1253.488647 1251.594482 1248.773071 1243.822876 1237.498169 1231.299683 1227.081055 1223.700317 1219.448975 1217.558716 1215.79834 1213.666748 1211.736572 1209.742676 1207.012207 1202.673706 1198.320068 1195.236816 1194.574341 1195.893188 1198.799805 1200.4729 1199.842163 1199.711792 1206.990967 1213.405884 1218.804199 1223.246338 1224.8396 1217.809082 1212.458252 1208.240845 1206.162109 1203.856812 1200.848877 1197.55896 1193.354614 1186.828979 1180.613159 1181.231323 1184.388184 1193.452148 1201.907715 1210.216309 1216.5896 1220.989746 1224.465454 1225.495972 1224.746704 1220.242188 1220.725098 1219.889526 1218.030273 1217.425781 1222.275024 1226.247437 1224.105347 1220.0625 1218.184448 1213.154907 1209.157959 1206.991943 1204.769775 1209.332275 1211.583984 1208.48938 1201.989258 1206.443481 1208.295776 1205.519043 1198.194824 1200.357544 1203.078125 1203.407593 1201.468262 1203.276123 1205.690552 1205.411499 1202.174927 1197.538696 1192.105957 1185.667358 1181.375 1183.627686 1190.239014 1198.829102 1208.897949 1209.285645 1206.286621 1209.888916 1209.883667 1206.349976 1199.536377 1192.901367 1187.871338 1181.830811 1178.657715 1172.940063 1169.358521 1162.734985 1159.809448 1158.864624 1157.718872 1155.239746 1151.428345 1150.825928 1146.822266 1140.820801 1135.404541 1136.226807 1140.450439 1147.185791 1152.391846 1155.697266 1159.941406 1161.469849 1160.604126 1146.836548 1135.363892 1134.239136 1145.792603 1149.805664 1150.207275 1149.875854 1150.106323 1150.442261 1147.541382 1140.448486 1133.241577 1122.553833 1120.276978 1121.009277 1122.750122 1130.102417 1135.267944 1144.542114 1152.750854 1160.69165 1171.081177 1179.979004 1186.917725 1171.190063 1155.840454 1141.384766 1132.056274 1127.338257 1123.161987 1120.40332 1118.262451 1114.223755 1109.885254 1110.404419 1112.005371 1115.459717 1118.542725 1118.856079 1109.063354 1107.141724 1101.943848 1098.539917 1097.813843 1098.044189 1097.860107 1097.856689 1097.841797 1098.079834 1098.25647 1098.295288 1098.337524 1098.348145 1098.325439 -1235.748657 1236.108398 1236.361938 1236.227661 1235.194336 1233.003296 1231.911743 1234.005127 1235.123657 1234.798462 1232.879395 1228.622803 1222.576416 1219.373291 1219.932861 1222.302368 1223.812988 1224.370361 1222.731689 1219.751221 1215.57605 1213.025391 1211.147705 1208.470337 1206.514526 1205.169434 1203.892944 1201.648926 1197.708618 1194.720215 1191.614624 1186.237305 1181.571777 1177.014038 1171.944702 1169.158203 1166.604858 1163.896729 1161.082764 1160.018555 1151.7771 1145.14563 1140.75415 1140.19873 1140.993042 1142.477417 1144.422241 1147.367798 1161.81543 1171.115112 1188.678711 1191.894531 1187.369141 1182.033081 1179.471191 1176.968506 1172.532837 1162.601807 1174.81958 1182.62207 1195.201782 1207.970337 1210.304077 1211.440674 1212.806763 1213.748291 1214.374756 1214.934326 1215.152466 1215.14917 1214.775146 1214.155396 1213.255737 1212.382812 1211.392456 1210.644409 1210.062622 1209.844116 1209.360352 1208.334229 1198.033325 1194.661011 1193.607056 1200.656616 1209.898315 1212.039917 1212.260376 1212.584961 1212.679199 1212.594971 1212.562134 1212.422363 1212.066895 1211.676636 1211.137329 1210.742554 1210.551514 1210.175903 1209.644897 1208.971313 1208.39502 1207.862427 1205.703979 1202.944824 1200.442261 1197.899536 1195.400757 1191.205078 1187.527588 1187.596558 1195.153687 1197.170166 1198.484863 1199.143921 1199.024292 1198.260498 1197.369507 1198.634155 1199.143799 1199.097534 1198.23584 1197.401611 1205.353027 1209.084839 1209.844116 1210.471924 1210.709961 1210.5625 1210.016968 1208.804321 1208.269897 1208.702026 1209.107422 1209.145264 1208.94104 1208.992432 1209.982422 1211.265259 1212.54541 1213.279663 1213.15625 1212.103394 1210.957642 1209.536255 1208.301636 1206.930664 1206.485352 1207.346313 1208.791138 1210.439819 1209.644897 1207.501465 1205.222046 1203.388916 1202.046875 1201.312988 1202.144775 1204.230591 1206.611816 1209.314453 1213.047119 1217.320435 1221.174927 1224.854736 1229.579102 1234.411743 1241.914795 1243.814697 1238.748169 1235.020142 1230.448486 1230.619385 1235.697632 1241.74646 1251.212646 1258.100586 1246.578003 1235.634277 1226.292236 1219.529541 1215.67627 1211.959351 1208.686646 1206.540771 1204.917969 1204.028442 1203.786621 1205.817383 1207.102051 1208.014648 1208.707275 1208.967896 1208.974121 1208.736084 1208.692139 1208.903198 1208.791382 1208.494995 1208.405151 1208.54187 1208.607544 1208.174683 1207.594971 1207.715576 1207.918091 1208.274902 1208.229858 1208.061035 1207.977905 1208.259033 1208.505005 1208.499756 1208.443604 1208.230713 1207.837524 1207.290283 1206.575806 1205.799805 1205.165283 1204.421143 1203.811646 1203.155396 1202.421631 1201.716309 1200.978638 1200.297241 1199.594116 1198.94458 1198.313477 1197.697144 1196.998779 1196.410278 1195.655884 1194.886597 1194.123413 1193.575928 1193.120605 1192.734375 1192.45752 1192.300537 1192.258423 1192.310913 1192.094116 1191.355591 1189.83252 1188.330933 1187.076294 1186.235107 1185.800903 1187.841797 1190.755493 1193.509766 1195.100586 1195.713867 1196.239258 1196.45813 1196.585205 1196.292236 1196.020752 1195.428711 1194.766846 1194.778076 1194.862183 1194.50647 1194.533203 1194.881348 1195.559814 1196.401611 1197.057373 1197.738647 1198.106934 1198.13208 1197.946777 1197.614014 1197.245728 1197.177979 1196.970947 1196.548096 1195.786011 1195.447754 1193.641357 1191.643555 1189.723267 1187.882446 1186.387207 1185.036133 1183.698853 1182.400513 1181.619995 1180.5448 1179.257568 1177.772095 1176.546143 1175.38623 1174.375854 1173.471313 1172.676758 1171.664795 1170.77832 1169.718872 1168.259277 1169.87915 1169.403564 1168.866455 1167.948242 1166.548462 1165.96814 1165.783691 1165.760864 1165.865723 1166.141602 1166.172729 1166.177368 1166.201782 1166.282837 1166.486206 1166.80542 1167.26709 1167.882202 1168.891235 1170.174805 1170.921387 1171.11792 1171.078979 1170.317749 1169.390503 1169.447754 1169.850586 1169.676025 1168.667969 1166.729614 1164.757446 1162.976562 1161.669067 1160.671753 1159.680542 1158.772827 1158.855225 1159.208374 1159.660156 1159.72229 1159.619019 1158.963745 1158.506226 1158.721436 1158.981079 1159.257446 1159.394165 1159.445801 1159.355103 1159.096313 1158.713745 1158.579468 1159.004517 1159.325439 1159.747559 1160.307739 1160.641968 1160.905762 1160.913086 1160.748901 1160.598389 1160.324097 1160.017944 1159.818604 1159.620361 1159.439331 1159.313354 1159.115479 1158.799194 1157.781494 1157.4646 1157.247192 1157.045654 1157.213257 1157.748291 1156.611572 1153.125854 1149.831421 1147.587158 1146.708496 1145.856445 1145.205566 1147.604248 1150.961792 1153.571533 1155.267944 1156.336304 1157.812866 1164.04187 1170.688843 1170.845947 1178.372192 1181.798462 1186.153687 1191.852051 1194.459106 1192.904785 1196.636597 1198.2677 1193.764771 1203.901855 1207.924683 1204.37146 1205.095215 1205.195923 1204.760864 1193.685547 1198.015381 1197.108276 1193.11377 1202.438965 1211.879639 1222.977539 1231.040649 1235.005127 1237.192627 1236.338013 1239.547119 1242.159424 1247.527222 1250.242188 1251.634277 1259.348511 1263.310669 1256.07373 1246.441162 1246.918823 1247.214966 1246.584595 1244.984741 1242.063232 1236.957397 1250.556274 1252.980103 1258.738403 1256.790527 1254.351196 1254.955444 1251.03479 1245.120972 1238.391357 1238.898682 1235.950684 1231.28125 1227.659546 1223.915039 1220.617065 1218.010986 1215.525757 1213.410767 1211.685791 1209.91626 1207.957764 1204.745117 1200.312012 1196.233765 1195.548096 1197.21936 1196.654175 1201.947144 1205.122681 1205.838135 1204.662354 1209.263184 1216.710083 1223.36438 1230.210327 1232.144897 1224.453735 1219.620972 1215.303589 1211.673828 1208.308838 1204.860718 1200.916016 1197.258667 1191.711426 1185.995361 1181.884155 1181.901123 1187.066406 1196.223633 1204.845093 1209.876587 1213.365356 1216.24939 1218.486816 1217.397949 1212.829102 1213.135742 1212.225586 1208.458618 1218.960693 1221.97229 1222.41333 1219.977905 1221.307495 1223.441895 1222.856934 1220.662354 1214.838501 1206.853149 1213.127563 1215.14209 1210.66272 1205.793579 1209.694946 1211.854248 1210.185425 1206.651489 1204.714722 1207.212769 1209.259033 1206.241089 1208.790771 1210.055786 1208.96936 1206.004517 1201.883789 1197.598145 1192.666626 1185.047852 1181.479492 1186.272095 1193.399536 1204.323608 1215.005371 1215.849487 1214.252319 1211.204834 1206.032959 1199.681152 1194.527466 1193.746582 1185.494507 1179.901733 1175.652222 1170.940552 1168.240967 1163.279907 1162.529053 1158.318726 1154.884155 1155.190063 1149.144287 1144.672607 1139.069824 1147.759277 1143.723877 1148.922119 1160.394287 1162.969849 1165.230225 1168.577515 1165.932983 1159.935425 1148.092651 1133.711182 1143.23645 1153.050293 1153.421753 1150.835205 1150.039429 1150.315552 1147.987793 1140.290405 1133.1073 1128.108887 1122.158569 1120.694702 1122.173218 1125.171753 1128.845703 1133.724731 1140.559814 1146.471069 1155.101074 1165.080933 1176.762085 1182.89856 1164.988892 1152.78064 1141.06897 1131.588623 1124.039795 1120.589844 1118.550659 1116.139526 1112.681763 1109.924072 1109.206421 1112.433105 1117.28772 1122.572388 1124.713989 1110.734985 1106.07251 1100.168457 1097.787598 1097.632202 1097.758667 1097.643799 1097.659058 1097.728638 1097.875366 1098.045166 1098.233887 1098.328613 1098.351929 1098.375977 -1237.938232 1238.347778 1238.370361 1238.041138 1237.146606 1236.172974 1235.773926 1236.690918 1237.32373 1236.512817 1234.046875 1229.970215 1222.671387 1221.195679 1224.56958 1227.357544 1228.168945 1227.553223 1224.25 1218.943726 1219.018677 1218.108276 1216.104004 1212.789307 1209.651978 1208.008667 1206.880859 1205.047729 1201.812256 1198.149658 1194.082031 1186.853638 1181.99585 1177.494995 1172.306396 1169.652954 1168.082886 1168.481689 1165.275269 1160.947876 1152.908936 1144.584595 1140.328369 1140.889893 1141.839478 1143.204712 1145.297485 1151.43811 1164.02356 1176.124878 1195.311523 1198.872559 1194.020874 1185.210938 1182.017212 1178.995239 1174.132324 1166.982422 1174.166748 1181.887573 1192.947266 1207.790405 1210.58252 1211.939209 1213.104492 1214.219727 1214.958008 1215.451538 1215.684082 1215.601807 1215.222534 1214.626709 1213.873901 1213.234009 1212.542114 1211.831665 1211.196777 1210.549927 1209.762695 1208.150757 1205.017822 1202.967896 1198.062622 1194.593628 1207.607666 1210.757812 1211.725464 1212.358398 1212.689697 1212.868652 1212.939453 1212.830322 1212.620972 1212.230713 1211.802612 1211.321533 1210.96814 1210.492798 1209.859619 1209.271729 1208.575806 1207.904785 1205.825317 1202.833496 1200.057495 1197.624512 1195.596924 1188.755493 1187.592651 1191.462402 1195.904175 1197.817383 1199.378784 1200.396973 1200.754395 1200.652466 1200.786011 1201.302734 1202.075073 1203.196777 1202.334595 1199.37085 1204.105957 1208.817017 1210.209717 1211.154297 1211.674927 1211.730103 1211.397827 1210.766846 1210.384766 1210.503906 1210.63208 1210.635376 1210.743774 1211.100586 1212.153442 1213.517944 1215.314209 1217.122314 1217.716919 1217.142578 1215.197632 1212.686035 1210.424072 1208.059204 1207.275146 1207.689209 1209.936768 1211.864014 1210.644287 1208.039673 1206.149658 1204.53064 1203.325317 1202.442139 1201.874512 1203.556274 1205.677734 1207.808594 1211.532104 1215.564209 1219.57666 1224.05481 1230.431763 1236.10376 1242.231812 1246.570679 1242.521606 1238.455566 1233.951172 1230.35022 1234.5896 1240.234009 1247.379761 1257.436646 1252.747314 1241.376953 1230.610596 1221.124146 1216.867554 1212.954346 1209.678467 1207.058105 1205.162964 1204.122681 1204.596191 1206.034912 1207.275879 1208.118896 1208.901611 1209.314575 1209.592773 1209.57019 1209.694214 1209.627197 1209.51062 1209.359131 1209.220093 1209.280396 1209.126953 1208.786011 1208.4375 1208.434692 1208.727173 1208.900635 1208.878418 1208.795532 1208.738647 1208.983765 1209.046631 1209.096313 1208.915894 1208.678589 1208.191162 1207.705811 1207.004517 1206.221313 1205.545776 1204.875854 1204.294312 1203.583374 1202.748657 1202.004883 1201.257324 1200.415649 1199.745728 1199.049194 1198.428345 1197.61438 1197.026367 1196.372803 1195.547974 1194.823364 1194.268799 1193.90332 1193.632935 1193.39978 1193.139404 1192.974731 1193.076782 1193.696289 1194.271729 1193.646729 1191.80835 1189.562988 1187.953125 1186.849487 1186.32251 1187.798462 1191.295654 1194.560425 1195.644531 1196.144653 1196.515991 1196.699097 1196.864624 1196.722168 1196.403198 1195.474609 1195.443604 1195.519409 1195.535767 1195.239136 1194.728271 1194.866211 1195.410278 1196.481934 1197.368042 1198.169434 1198.695557 1198.849121 1198.735962 1198.373291 1198.041138 1197.907104 1197.655396 1197.260742 1196.738647 1196.107422 1195.053833 1193.179565 1190.994995 1188.990601 1187.343994 1186.012207 1184.680786 1183.611328 1183.044189 1181.777832 1179.80188 1178.07251 1176.607544 1175.265747 1174.264893 1173.364258 1172.53833 1171.681641 1170.754517 1168.792969 1170.846802 1171.059448 1170.522583 1169.943726 1169.007568 1167.862427 1167.280884 1167.089722 1167.108521 1167.258545 1167.507202 1167.679688 1167.508545 1167.486206 1167.51001 1167.684204 1167.863647 1168.156982 1168.574341 1169.439087 1170.909424 1171.874878 1171.704346 1171.612671 1171.137573 1170.193481 1170.729004 1171.218384 1171.299683 1170.333008 1167.711426 1164.934937 1162.902222 1161.369019 1160.555786 1159.897583 1159.027466 1158.755737 1159.47229 1159.859619 1159.902466 1159.895752 1158.714233 1158.955444 1159.408936 1159.646851 1159.827148 1159.838135 1159.913574 1159.772095 1159.518433 1159.188721 1159.259766 1159.519287 1159.872559 1160.44397 1160.740112 1160.960571 1161.070557 1161.039062 1160.83667 1160.599243 1160.263306 1159.910767 1159.624023 1159.359497 1159.219604 1159.023682 1158.705811 1158.231079 1157.42395 1156.776978 1156.287964 1155.990234 1155.777344 1155.348022 1154.052856 1151.897095 1149.929199 1148.22522 1147.407104 1146.402466 1145.293701 1147.920044 1154.4104 1158.713135 1157.964355 1157.115601 1156.905029 1158.043457 1159.613403 1173.84021 1182.736694 1184.169922 1184.588013 1187.09729 1188.9552 1185.067261 1190.847168 1192.386841 1192.7771 1197.921875 1200.106689 1196.787354 1196.279907 1196.983398 1198.942139 1192.33313 1186.229614 1185.305542 1195.597168 1202.94812 1212.133789 1219.605713 1228.570801 1232.878174 1232.094604 1231.309326 1234.751953 1234.848755 1242.247803 1241.337036 1241.779175 1251.954224 1253.692871 1246.191772 1237.865234 1235.454468 1237.317017 1237.551392 1236.452026 1232.751221 1228.652222 1233.633057 1244.110474 1244.748291 1241.495239 1240.984619 1237.201782 1233.437744 1234.098633 1224.909912 1229.16333 1227.350586 1223.165283 1223.259521 1221.34668 1217.579102 1215.436646 1213.450928 1211.302612 1209.478394 1207.787598 1205.950195 1203.724731 1198.59314 1195.814575 1198.947021 1201.007935 1202.786499 1206.465942 1209.03479 1209.8396 1207.765381 1210.091675 1219.415039 1228.178345 1235.801392 1240.324219 1231.133911 1225.286255 1221.110107 1216.832886 1211.932861 1207.765015 1202.558105 1197.151367 1192.887573 1189.799438 1186.75 1183.74353 1182.41333 1188.775879 1196.102417 1201.138794 1204.861206 1207.34375 1207.714844 1206.398682 1204.055542 1205.845215 1205.289917 1209.215576 1217.703003 1220.55127 1218.949341 1219.174683 1223.048584 1227.207397 1230.417725 1228.648804 1224.026611 1219.165405 1218.963257 1220.37793 1216.948853 1211.297852 1213.074097 1216.516968 1215.894775 1211.61853 1207.160889 1210.296021 1212.782227 1212.604614 1213.210083 1213.679688 1212.030151 1209.122803 1205.26355 1201.077393 1196.840454 1189.251587 1182.514404 1185.165771 1194.887207 1207.886963 1218.099121 1221.465454 1217.395508 1210.687012 1206.016235 1207.472046 1208.138062 1201.199707 1191.076782 1182.087891 1179.867798 1176.616089 1175.436157 1175.043823 1173.9729 1170.639038 1169.487549 1168.849121 1157.231812 1146.873413 1144.516113 1157.841675 1145.371216 1157.788574 1170.658813 1171.81958 1172.744019 1173.7229 1167.490234 1155.758789 1143.57959 1144.919922 1154.696167 1160.692261 1151.818237 1147.712036 1142.73877 1143.013428 1138.028076 1133.194214 1129.356445 1125.70105 1122.564453 1121.658203 1121.909668 1125.295776 1128.679443 1133.490234 1138.968628 1146.64209 1152.309326 1160.881104 1173.73877 1173.150269 1157.268311 1147.810791 1138.374268 1130.430786 1123.129883 1119.817505 1117.280518 1114.974121 1112.522583 1110.164185 1109.106934 1110.176392 1114.734619 1119.786011 1119.829224 1111.965576 1106.185913 1101.49707 1099.21875 1097.693726 1097.638428 1097.59729 1097.667114 1097.75415 1097.863403 1097.853516 1097.839111 1097.971436 1098.07312 1098.183838 -1240.246216 1240.372803 1240.320923 1240.224854 1239.980835 1239.696411 1239.683838 1240.434814 1240.405273 1239.252441 1235.474854 1229.9552 1228.482178 1230.668945 1231.334595 1233.318848 1233.067017 1231.752319 1228.564575 1224.400024 1224.175415 1223.361816 1220.998047 1217.622437 1215.278687 1213.479614 1211.742065 1209.308594 1205.790405 1201.077148 1195.607788 1188.720093 1183.061157 1178.146118 1174.087158 1170.34436 1170.47583 1171.603882 1168.055298 1160.2052 1150.068481 1142.556152 1140.929199 1141.622437 1142.434814 1143.683228 1145.574951 1152.764893 1164.871704 1178.553589 1200.404175 1205.526611 1199.309204 1191.0896 1186.022949 1181.11499 1177.480103 1171.33728 1172.745728 1180.232056 1189.359009 1201.799194 1209.575073 1211.740967 1213.319946 1214.699829 1215.565308 1216.004272 1216.252197 1216.11438 1215.704102 1215.236816 1214.662354 1214.131226 1213.532227 1212.79126 1212.10437 1211.323853 1210.490601 1209.09375 1208.507446 1208.262451 1205.096313 1200.487671 1206.616333 1209.603149 1210.929443 1211.824341 1212.526611 1212.965698 1213.143433 1213.178955 1213.015991 1212.703125 1212.342529 1211.863403 1211.369507 1210.781372 1210.137451 1209.436157 1208.667847 1207.626099 1205.471436 1202.571289 1199.348999 1196.803833 1193.01416 1188.584839 1191.869507 1195.409058 1197.331665 1199.426025 1200.999634 1202.116821 1202.769165 1203.1073 1203.211914 1203.835571 1204.985718 1207.231201 1207.957764 1202.072632 1206.13855 1209.107056 1210.735474 1212.059937 1212.899536 1213.196167 1213.123169 1212.819824 1212.528564 1212.510254 1212.590454 1212.518921 1212.649414 1213.151978 1214.196289 1215.974365 1218.119019 1219.998291 1220.359497 1220.43335 1219.380615 1216.149292 1213.17749 1210.91333 1209.182129 1209.774414 1212.519165 1214.459717 1212.561279 1209.588257 1207.171509 1205.98645 1204.601562 1203.602783 1202.91272 1202.749756 1204.531006 1206.400024 1209.074097 1213.262939 1217.531128 1222.008789 1229.626709 1235.693115 1242.126587 1252.626221 1250.307739 1243.674561 1239.183594 1231.523438 1233.600342 1238.575439 1244.129517 1256.404541 1256.929199 1244.972778 1231.781738 1223.57666 1218.062988 1213.706665 1210.197632 1207.09668 1204.972778 1204.770142 1205.901855 1206.876709 1207.788452 1208.432617 1209.18396 1209.867188 1210.187256 1210.44397 1210.568726 1210.473877 1210.43811 1210.147339 1210.016968 1209.994873 1209.813965 1209.627441 1209.32312 1209.237061 1209.297729 1209.535767 1209.524048 1209.549072 1209.507935 1209.636963 1209.600586 1209.526245 1209.446655 1209.052856 1208.534424 1207.993774 1207.367065 1206.524902 1205.937256 1205.364868 1204.719116 1203.968872 1203.110107 1202.189453 1201.281616 1200.525757 1199.705444 1199.140991 1198.281982 1197.616699 1196.793335 1196.044312 1195.322266 1194.799683 1194.602783 1194.39209 1194.324951 1194.143188 1193.72644 1193.625 1193.799805 1194.449341 1195.463013 1195.525146 1193.619263 1190.607056 1188.677368 1187.579224 1187.029663 1187.963013 1191.657471 1194.895752 1195.783813 1196.256714 1196.731445 1197.046753 1197.196411 1197.082764 1196.762939 1196.348389 1195.953003 1195.965454 1195.958374 1195.647461 1195.159058 1194.981079 1195.177979 1195.891479 1197.547607 1198.505493 1199.25293 1199.44043 1199.415039 1199.067505 1198.853638 1198.638916 1198.344238 1197.881592 1197.215088 1196.606567 1195.631348 1193.831055 1191.628784 1189.533203 1187.822754 1186.38916 1185.295532 1184.519653 1183.874878 1182.325684 1180.030151 1177.896484 1176.072632 1174.77417 1173.748291 1172.674683 1172.018433 1171.213623 1168.990967 1170.216064 1172.09668 1172.217651 1171.658325 1170.841309 1169.823364 1168.671265 1168.511841 1168.30481 1168.412964 1168.62146 1169.060181 1169.220093 1168.9104 1168.629272 1168.592041 1168.930298 1169.116699 1169.241821 1169.242676 1169.86145 1171.096802 1171.999146 1172.268311 1172.015381 1171.619019 1171.281616 1171.689819 1171.94873 1171.770508 1170.38855 1167.825562 1164.70166 1162.500977 1161.103882 1160.453857 1159.772705 1158.82373 1158.877441 1159.499512 1160.059082 1160.233643 1160.165894 1159.730713 1159.598389 1159.768555 1160.018188 1160.213135 1160.257568 1160.326538 1160.307861 1160.11792 1159.913696 1159.954102 1160.139771 1160.54126 1160.809814 1161.062378 1161.162964 1161.193481 1161.026245 1160.802246 1160.45105 1160.02478 1159.563721 1159.11792 1158.869385 1158.737793 1158.55957 1158.036255 1157.456909 1156.802856 1156.20105 1155.509888 1154.965576 1154.33728 1153.587646 1152.357666 1150.71936 1149.388428 1147.617676 1146.529053 1146.0802 1145.782959 1146.646973 1155.291504 1162.543579 1167.907715 1168.087891 1161.629639 1162.171021 1157.886719 1167.494385 1174.614746 1178.857178 1180.619019 1184.607666 1185.15271 1182.827637 1185.854492 1186.61853 1183.669189 1191.79834 1193.928101 1194.471924 1185.863892 1190.720215 1193.259521 1186.789795 1182.388916 1186.877075 1198.175537 1208.214722 1212.173462 1217.985474 1223.559814 1226.35376 1220.825806 1232.830322 1231.012573 1230.498779 1234.094604 1231.464355 1232.682251 1241.81897 1241.705933 1236.563721 1232.893555 1224.111084 1228.593384 1230.647461 1230.146973 1225.950806 1218.955933 1226.675659 1232.411377 1234.719116 1233.17981 1232.861328 1227.150635 1222.9729 1222.854858 1217.120483 1216.2854 1212.120972 1217.713379 1220.68103 1216.077759 1212.188843 1212.176392 1211.115601 1209.367676 1207.293701 1206.545776 1206.040283 1205.011841 1203.218384 1203.21167 1204.994385 1205.391724 1205.12085 1208.481445 1212.042603 1213.854492 1213.43457 1215.331177 1220.732544 1230.914917 1241.05127 1246.700195 1235.544556 1229.446655 1224.285767 1219.494507 1213.765015 1208.601196 1203.912964 1198.897461 1196.53894 1192.932007 1191.653809 1189.181152 1186.082764 1184.935913 1190.186157 1193.426636 1196.798584 1198.771851 1199.50293 1198.825439 1196.660034 1195.671997 1199.748901 1205.266602 1208.103516 1207.939697 1215.657715 1218.348633 1221.865845 1229.199219 1233.557495 1233.999023 1230.234741 1225.829468 1224.671875 1225.144775 1222.403931 1218.79834 1218.609619 1221.744995 1221.98877 1218.691895 1215.991699 1214.927002 1218.443726 1219.691284 1219.03894 1217.939087 1215.693237 1211.630493 1207.676392 1202.913086 1197.929321 1192.732666 1185.731689 1185.824463 1191.74353 1207.166382 1218.299072 1222.158813 1219.422729 1212.971436 1212.069946 1215.923584 1213.406982 1205.845825 1195.365601 1190.48584 1185.089722 1181.240967 1181.644775 1180.020508 1178.716919 1177.289551 1175.387207 1172.731812 1156.200928 1144.513062 1156.517578 1163.611938 1148.455322 1161.30542 1173.221436 1175.432983 1175.307495 1174.737671 1163.174194 1149.480835 1144.604736 1154.230713 1161.601318 1155.361938 1146.016724 1134.923706 1132.205688 1131.744263 1130.695679 1129.074951 1127.783691 1125.751221 1124.058716 1123.015747 1121.780273 1124.00769 1128.054321 1131.374512 1135.407104 1142.419067 1147.076904 1156.445801 1169.47583 1171.858032 1154.732666 1140.258911 1132.936401 1127.593872 1122.783081 1119.402832 1116.311401 1113.765503 1111.995361 1110.285156 1108.73645 1108.503784 1109.349121 1109.309692 1109.012451 1108.506836 1104.688843 1100.747803 1098.126343 1097.740479 1097.728149 1097.543823 1097.490479 1097.459106 1097.552734 1097.560791 1097.568115 1097.637451 1097.800781 1097.814697 -1242.285889 1241.871704 1242.170776 1242.565918 1242.822388 1242.581055 1242.317871 1243.534668 1243.883667 1243.098511 1237.365356 1231.578003 1232.161133 1239.004395 1239.445068 1239.825562 1241.369019 1240.76123 1235.503174 1232.261475 1231.033936 1228.547241 1225.858765 1222.621948 1220.916992 1220.049316 1217.827393 1213.535156 1209.08667 1203.716553 1195.827026 1190.273926 1183.221069 1178.718262 1173.746216 1170.631226 1172.377686 1172.404907 1164.895386 1156.161987 1146.748169 1141.335205 1141.696167 1142.148804 1142.990112 1144.221313 1145.694214 1152.990356 1164.802612 1179.997437 1201.77832 1213.51123 1209.005737 1195.272461 1189.61499 1185.109131 1181.612915 1172.598877 1172.852173 1179.778076 1186.300293 1192.728882 1205.091431 1210.344971 1213.460327 1215.217651 1216.238525 1216.709595 1216.816895 1216.625488 1216.332153 1215.946045 1215.510498 1214.947144 1214.37561 1213.658203 1212.871582 1212.133057 1211.343872 1210.504639 1209.740601 1209.041992 1207.849731 1205.157104 1206.483765 1208.853027 1209.964355 1211.143066 1212.17041 1212.880859 1213.311523 1213.565063 1213.505737 1213.181885 1212.741089 1212.293701 1211.785034 1211.117554 1210.41394 1209.488647 1208.453857 1206.7948 1204.717407 1202.031616 1198.899658 1195.360474 1189.620605 1191.1875 1195.401001 1197.47998 1199.536255 1201.400391 1202.824097 1203.897583 1204.754883 1205.312378 1205.338867 1205.515869 1206.460205 1208.098145 1208.82959 1206.926758 1205.810791 1209.432495 1211.27417 1213.18103 1214.332275 1214.927368 1215.022339 1214.759155 1214.691162 1214.636719 1214.674683 1214.550537 1214.455811 1214.901611 1215.973511 1217.527832 1219.470459 1220.682007 1221.179199 1221.149414 1220.312134 1217.595215 1215.679688 1214.42395 1213.752319 1214.709351 1216.323486 1218.353149 1216.159546 1212.379272 1209.31604 1207.394409 1206.1875 1205.197144 1204.302734 1203.581909 1203.668701 1205.316284 1207.507935 1211.310425 1214.887329 1218.454346 1225.536255 1232.739258 1238.882935 1248.077637 1259.396362 1254.294922 1246.888428 1238.945068 1237.015869 1239.706787 1245.21936 1258.515137 1259.191406 1247.417236 1232.568359 1224.479004 1218.238037 1214.224976 1210.398804 1206.973999 1205.043457 1206.19751 1207.384888 1207.97168 1208.552246 1209.202148 1209.913086 1210.534424 1211.05249 1211.274292 1211.346924 1211.334595 1211.198364 1210.968872 1210.869995 1210.728638 1210.736084 1210.436157 1210.179199 1210.066284 1210.144897 1210.071411 1210.263062 1210.188477 1210.167236 1210.257935 1210.225586 1210.094727 1209.809692 1209.426147 1208.879395 1208.301392 1207.581543 1206.970581 1206.637329 1205.95874 1205.182861 1204.273682 1203.307007 1202.404297 1201.472168 1200.69873 1199.889648 1199.010132 1198.102661 1197.301147 1196.463867 1195.660034 1195.203857 1194.98291 1194.847778 1194.99353 1195.069946 1195.010864 1194.430054 1194.151978 1194.326782 1195.179688 1195.714966 1195.536133 1193.668091 1190.866211 1188.847534 1187.939697 1187.239624 1188.639404 1191.817017 1194.25647 1195.29541 1196.230347 1196.942871 1197.343384 1197.536865 1197.509644 1197.254761 1196.967651 1196.661011 1196.487549 1196.360352 1196.081543 1195.500977 1195.09375 1195.226807 1195.9552 1197.650879 1198.848755 1199.684814 1200.046875 1200.05249 1199.891968 1199.650513 1199.484619 1198.976807 1198.280396 1197.471558 1196.620117 1195.668579 1193.864746 1191.619751 1189.393188 1187.405151 1185.895508 1184.65686 1183.611694 1183.013306 1181.439941 1179.154907 1176.840576 1174.889282 1173.59082 1171.99646 1170.026367 1169.994507 1169.015137 1169.981445 1171.905151 1172.986816 1173.119263 1172.887817 1172.078003 1170.738525 1169.442383 1169.501343 1169.658081 1169.707031 1169.921631 1170.610474 1170.780151 1170.12561 1169.387817 1169.484985 1170.218018 1170.608032 1170.460205 1170.138306 1170.236694 1171.126343 1172.344849 1172.677246 1172.716797 1172.556763 1172.472534 1172.347046 1172.161011 1171.991943 1170.31604 1167.296631 1163.881714 1161.613037 1160.687744 1160.205078 1159.56543 1159.201416 1159.390503 1159.886475 1160.424561 1160.706421 1160.704346 1160.560791 1160.456665 1160.350708 1160.502808 1160.568359 1160.73291 1160.868286 1160.830688 1160.803467 1160.564575 1160.623535 1160.695435 1160.898926 1161.177979 1161.278076 1161.339111 1161.204834 1160.941284 1160.612183 1160.063354 1159.688599 1159.252075 1158.869751 1158.427856 1158.042725 1157.881226 1157.450073 1156.678711 1156.126953 1155.514648 1154.787598 1154.056396 1153.363525 1152.375854 1151.187134 1149.727783 1148.178345 1147.107544 1146.956177 1146.888306 1146.691895 1145.89209 1152.779297 1163.992432 1172.62439 1174.268677 1175.33313 1176.657471 1172.387085 1168.546631 1169.778076 1170.363281 1176.206665 1181.69165 1183.877808 1181.474365 1181.603394 1184.14502 1181.093384 1184.292114 1187.095581 1187.554565 1182.75415 1184.177124 1186.911621 1183.29834 1182.427979 1187.542236 1195.579346 1202.712402 1206.644775 1213.147949 1219.333008 1219.843262 1217.901855 1223.83606 1223.671509 1219.499878 1224.76709 1225.106812 1227.243042 1232.489868 1232.717041 1227.426025 1222.556519 1217.147827 1222.478882 1223.314331 1220.123291 1219.609985 1216.506836 1220.572388 1220.373047 1221.797119 1222.387817 1221.108032 1218.985718 1216.75708 1216.338745 1210.522461 1206.65918 1208.083496 1213.421021 1210.242798 1205.136475 1207.483643 1209.101318 1209.514648 1209.329346 1209.038818 1209.205444 1209.103882 1208.441284 1207.700195 1209.353027 1210.755615 1210.403687 1207.505493 1208.315186 1215.979004 1220.069702 1218.780518 1217.87439 1220.999878 1230.198975 1240.206787 1246.262573 1237.606445 1231.47583 1225.710693 1220.129395 1213.813477 1208.300171 1204.277222 1201.179321 1197.798706 1195.361816 1197.474487 1195.158081 1190.776855 1185.760254 1186.475464 1188.819214 1190.585205 1191.138794 1190.802856 1191.059692 1191.80835 1193.071899 1194.858154 1196.677734 1204.477295 1210.78894 1219.675415 1221.755127 1224.183716 1229.853027 1233.174927 1234.631348 1233.971313 1230.731689 1230.846191 1231.811157 1229.416382 1227.196655 1226.465698 1227.665039 1227.261475 1224.560547 1221.185425 1219.448364 1223.046631 1224.227295 1223.629395 1222.398071 1219.556519 1214.204102 1208.655151 1204.171753 1200.655273 1197.071411 1193.292969 1192.064697 1196.693726 1204.859375 1217.303345 1224.771362 1223.725952 1218.217407 1220.668579 1222.170166 1219.487427 1207.268066 1202.684937 1199.553223 1193.098633 1187.582275 1186.791016 1183.52478 1183.444824 1182.741943 1177.54187 1166.853149 1150.981079 1147.043701 1167.876465 1170.758667 1160.21582 1157.847168 1173.53894 1175.861328 1175.928345 1174.337769 1163.208862 1148.521362 1151.299316 1160.504883 1160.009888 1150.021118 1144.444336 1138.103394 1133.38501 1130.492554 1129.305542 1128.684204 1127.885742 1127.031372 1126.040894 1124.877686 1123.413696 1124.742676 1129.106689 1131.604736 1135.298096 1141.520752 1148.655151 1158.620483 1173.631958 1170.462158 1153.654053 1135.827759 1129.844849 1125.327637 1121.458618 1118.171631 1114.973755 1112.355957 1110.01123 1110.110107 1108.615845 1107.619751 1106.903809 1106.488525 1106.239746 1105.631714 1102.999878 1100.015625 1097.940308 1097.828125 1097.606567 1097.324219 1097.146729 1096.972168 1096.868042 1096.735107 1096.681519 1096.630005 1096.48584 1096.590088 -1244.524536 1243.771851 1244.138794 1245.013672 1245.523315 1245.700928 1245.731201 1246.7146 1247.445557 1246.604004 1240.336792 1231.650879 1244.399658 1248.24292 1247.480347 1247.668457 1250.047974 1250.163574 1247.531616 1242.649414 1238.947754 1234.645264 1231.666992 1229.609009 1227.69043 1226.336182 1222.976196 1217.921753 1213.165894 1208.994873 1201.550049 1193.228516 1183.846802 1180.942993 1175.261841 1174.622192 1174.517212 1170.663574 1159.477417 1152.189575 1145.132935 1141.512695 1142.108276 1142.590088 1143.434692 1144.740845 1146.19751 1156.069336 1167.800415 1183.021362 1202.110107 1223.814087 1216.045898 1199.280762 1192.349609 1187.879028 1183.72229 1173.134888 1178.04187 1183.817261 1188.536133 1194.317139 1204.023315 1209.941406 1214.220947 1216.07373 1217.060181 1217.372559 1217.355713 1217.245239 1217.061523 1216.734009 1216.283569 1215.787842 1215.171753 1214.433105 1213.684937 1213.009155 1212.190063 1211.324097 1210.442749 1209.335571 1207.932983 1206.456665 1207.006104 1207.500977 1208.73877 1210.452759 1211.787476 1212.867798 1213.491211 1213.816895 1213.781982 1213.531128 1213.108765 1212.642212 1212.107788 1211.421021 1210.54126 1209.597168 1208.157837 1206.612183 1204.329224 1201.786133 1198.754639 1195.775391 1190.585938 1191.676636 1196.124756 1198.881714 1202.015381 1203.93811 1204.690796 1205.273315 1206.327271 1207.401733 1207.802612 1207.540527 1206.88208 1208.28125 1209.771118 1208.860229 1204.067749 1209.540894 1212.325195 1215.046265 1216.172119 1216.738281 1216.957397 1216.895264 1216.840332 1217.132812 1216.77832 1216.299316 1215.98938 1216.201172 1217.102295 1218.296387 1219.661865 1221.095581 1221.66626 1221.59375 1220.522095 1218.271362 1217.805786 1217.289551 1216.847046 1217.858643 1219.821167 1220.576172 1219.478638 1216.270264 1212.337769 1209.435425 1207.737671 1207.103394 1206.084351 1205.097412 1204.516235 1204.408447 1206.247559 1209.373779 1212.684204 1216.549072 1221.577881 1228.743652 1235.132812 1244.581177 1256.449219 1259.495728 1255.249634 1244.989014 1240.454712 1241.976685 1249.88916 1259.035645 1260.235229 1247.602173 1235.761108 1225.798462 1218.752075 1214.740845 1210.348145 1206.442139 1206.055908 1207.672974 1208.516968 1208.870605 1209.497803 1210.224487 1210.887207 1211.496948 1211.843872 1212.053345 1212.079712 1212.082642 1211.984863 1211.768555 1211.665649 1211.622681 1211.445557 1211.258789 1210.949585 1210.848755 1210.82605 1210.855469 1210.790894 1210.813232 1210.8125 1210.800781 1210.811157 1210.533325 1210.282227 1209.846436 1209.192139 1208.609009 1207.991211 1207.810181 1207.379517 1206.607056 1205.593872 1204.608521 1203.675781 1202.782349 1201.896973 1201.023071 1200.132324 1199.119995 1198.010254 1196.766602 1195.703735 1195.325806 1195.274658 1195.30188 1195.413086 1195.583496 1195.729492 1195.689941 1195.191162 1194.650269 1195.095703 1195.580688 1195.878174 1195.131958 1193.021362 1190.668091 1188.702271 1188.033325 1187.896729 1190.483765 1193.834229 1195.314819 1195.613159 1196.44458 1197.210693 1197.631836 1197.947998 1197.908569 1197.78833 1197.426025 1197.186401 1196.970947 1196.613892 1196.191406 1195.684692 1195.272217 1195.344727 1196.32251 1197.875977 1199.240967 1200.221069 1200.681763 1200.793579 1200.692261 1200.552124 1200.222656 1199.487305 1198.623291 1197.324951 1195.965454 1194.894531 1193.115723 1191.345093 1188.78833 1185.675415 1183.272217 1183.056519 1182.998413 1182.573853 1180.99939 1178.371094 1175.200684 1173.112061 1171.690186 1170.443726 1169.108154 1169.831665 1170.631836 1171.846313 1173.05481 1174.095947 1174.105713 1173.897583 1172.96875 1171.845581 1170.637573 1170.598633 1170.920288 1171.101807 1170.822998 1171.989136 1171.910889 1170.784302 1170.333008 1170.172607 1171.398682 1171.763306 1171.538574 1171.245117 1171.053345 1171.486328 1172.921753 1173.29187 1173.35498 1173.202759 1173.033081 1172.781738 1172.447388 1171.90564 1169.810303 1166.141846 1163.007568 1161.285767 1160.900024 1160.39209 1160.064331 1159.999268 1160.298218 1160.680298 1160.988037 1161.175293 1161.320068 1161.201538 1161.131226 1160.956299 1160.941162 1161.021973 1161.166138 1161.354614 1161.474243 1161.415527 1161.30481 1161.251099 1161.283569 1161.405518 1161.510376 1161.553467 1161.335571 1161.134521 1160.684326 1160.267456 1159.884033 1159.460693 1159.122559 1158.873413 1158.174194 1157.721069 1157.374878 1156.828247 1156.210571 1155.535034 1154.840942 1154.14978 1153.379272 1152.517944 1151.695679 1150.540283 1149.234497 1148.038818 1147.546143 1147.523315 1147.60498 1147.349487 1146.830688 1145.86853 1158.205078 1168.248169 1173.467407 1178.982788 1184.143311 1183.682617 1175.24231 1169.842041 1170.527588 1171.102295 1176.623291 1178.596924 1177.780762 1175.989258 1175.834717 1175.601074 1181.809448 1181.809692 1181.419434 1180.761475 1181.277832 1183.701782 1181.489258 1182.495483 1185.806152 1191.33606 1196.487183 1197.325806 1207.864258 1211.637329 1211.501465 1209.765747 1216.428345 1216.176392 1212.857544 1216.850952 1217.051147 1217.035278 1220.483032 1221.509033 1217.524048 1213.049927 1208.796387 1219.123047 1219.179565 1215.299927 1213.130615 1207.576416 1211.783325 1213.435303 1214.323364 1214.089478 1212.659668 1210.187622 1210.447021 1209.933472 1205.917358 1207.130493 1208.90564 1207.609131 1205.275391 1205.197876 1206.119385 1207.02124 1209.330444 1211.128418 1212.208374 1213.069336 1213.717407 1213.801025 1214.616333 1216.390503 1218.352661 1219.166748 1216.178711 1211.828613 1218.433228 1222.298218 1222.958984 1220.520142 1220.041504 1229.584351 1236.803589 1242.049194 1237.75708 1232.557495 1226.449585 1220.068115 1212.602295 1207.126831 1206.154053 1204.214478 1200.555664 1203.612183 1205.919067 1202.473755 1197.236694 1193.048462 1187.825317 1186.955933 1188.146362 1189.809448 1193.428467 1195.498169 1194.542603 1193.404419 1192.928589 1197.480347 1209.228394 1215.333862 1220.932495 1222.659546 1224.955566 1228.586426 1231.955566 1235.290161 1238.608887 1239.470337 1238.643188 1237.568359 1235.58606 1236.080078 1236.941284 1235.256836 1232.931274 1230.906738 1227.875488 1227.568848 1228.856812 1229.606689 1228.308594 1225.520874 1221.602173 1215.646973 1209.168335 1205.847656 1203.504639 1200.718384 1196.687744 1193.833008 1199.521118 1208.830811 1216.555298 1230.539429 1231.280273 1219.388184 1222.74707 1225.078003 1223.140381 1215.825317 1210.274292 1206.265381 1198.379639 1193.32605 1191.447632 1189.119141 1187.672974 1185.687988 1178.347046 1158.92395 1148.69812 1163.738525 1174.201904 1173.216309 1164.431763 1157.210083 1168.205688 1175.275513 1177.482666 1176.036133 1166.277466 1157.594482 1158.763184 1161.429688 1159.652954 1153.264526 1146.979492 1137.099121 1132.952515 1130.163696 1129.467651 1129.002441 1128.831665 1128.89856 1128.811401 1128.203003 1128.186279 1129.891846 1131.312744 1132.353638 1135.828613 1141.293945 1148.358032 1160.055786 1171.201416 1163.343506 1150.552002 1134.27478 1127.736572 1122.533936 1119.574463 1116.6521 1113.550903 1110.649048 1109.88269 1110.071899 1108.720337 1107.216919 1106.232666 1105.353027 1104.595215 1103.634644 1102.105225 1099.985718 1098.614502 1097.65271 1097.305786 1096.950317 1096.646362 1096.287354 1096.081665 1095.816772 1095.604004 1095.372437 1095.15979 1094.895874 -1247.335571 1246.955322 1247.354614 1248.121094 1248.750366 1249.920898 1250.956787 1251.95105 1252.035156 1249.685303 1243.052124 1241.473877 1246.89502 1253.15918 1256.883301 1257.81311 1258.919556 1258.543579 1256.977905 1253.866211 1249.021362 1243.29126 1239.871582 1236.690063 1234.153564 1233.521484 1229.330688 1222.275879 1217.90332 1213.585938 1207.052734 1197.048828 1189.641602 1183.889282 1182.206543 1182.847778 1175.420532 1165.861084 1155.645264 1149.439575 1143.953857 1142.085938 1142.490356 1143.034302 1143.90564 1145.323853 1147.94397 1159.572144 1173.052734 1187.174805 1202.982666 1225.405273 1215.452271 1200.581055 1193.054199 1188.666382 1183.700562 1174.38269 1185.899902 1195.356567 1197.959961 1201.483887 1210.242065 1213.298584 1216.061523 1217.541382 1218.122803 1218.099731 1218.080811 1217.951172 1217.759399 1217.387329 1216.961548 1216.412598 1215.822876 1215.072754 1214.376343 1213.733765 1212.961426 1212.021362 1210.942017 1209.54541 1207.661621 1206.85144 1207.553223 1207.579346 1207.653076 1209.651855 1211.468506 1212.912231 1213.753784 1214.11853 1214.032349 1213.85083 1213.434692 1212.859741 1212.296265 1211.54895 1210.709839 1209.621338 1208.336792 1206.970581 1204.481079 1201.56311 1199.093384 1196.602539 1193.361328 1190.803833 1195.71106 1200.539673 1205.326172 1206.651001 1206.627075 1206.705078 1208.093506 1209.414062 1210.301514 1210.166016 1208.414795 1209.674072 1211.219849 1210.778809 1207.503784 1208.622314 1214.408691 1217.87085 1218.287964 1218.554688 1218.732422 1218.814209 1219.071777 1219.501953 1218.690918 1217.638916 1216.922241 1217.09729 1217.884155 1219.303345 1220.571167 1221.717773 1222.323853 1222.254272 1221.19751 1220.449585 1220.213989 1219.475464 1218.520508 1219.897095 1221.069458 1221.437378 1220.694092 1219.457153 1215.894287 1212.228882 1209.724731 1208.807861 1207.879272 1206.793701 1206.499512 1207.383301 1206.134399 1206.616455 1210.065918 1215.33374 1220.693848 1226.82666 1233.877319 1242.680176 1253.15979 1259.872437 1259.787964 1252.054688 1241.530884 1243.536499 1251.714355 1258.717163 1259.337769 1249.068604 1237.295654 1228.017456 1220.885986 1215.774536 1210.358154 1206.180786 1207.443726 1208.900513 1209.703857 1210.080933 1210.837158 1211.510864 1212.165527 1212.516479 1212.689087 1212.804321 1212.834351 1212.846924 1212.712646 1212.597046 1212.550171 1212.46936 1212.288086 1212.060669 1211.751953 1211.598145 1211.60791 1211.637695 1211.569458 1211.370483 1211.410767 1211.3302 1211.244995 1210.984741 1210.635742 1210.148682 1209.601807 1209.088867 1208.63562 1208.376953 1207.915649 1207.040283 1206.029419 1205.018921 1204.067627 1203.294067 1202.500854 1201.62439 1200.68103 1199.603638 1198.14624 1196.257446 1195.306152 1195.533813 1195.784058 1195.963745 1196.005127 1196.06604 1196.19519 1196.18689 1195.612793 1195.236206 1195.517456 1196.127808 1196.019775 1195.087646 1192.400879 1189.64856 1188.768677 1188.615967 1190.132324 1193.248901 1195.634155 1196.092041 1196.315796 1196.954834 1197.596436 1198.000122 1198.342773 1198.39502 1198.210205 1197.910278 1197.673828 1197.304443 1196.93811 1196.489746 1195.77832 1195.261353 1195.33252 1196.471558 1198.290771 1199.759521 1200.81958 1201.422607 1201.644287 1201.573608 1201.439209 1200.988159 1200.004028 1198.570679 1195.681641 1194.872803 1194.447266 1193.768555 1192.250244 1189.22583 1184.231201 1183.480591 1184.430054 1184.515747 1183.783813 1181.535522 1177.344727 1172.137573 1171.305542 1170.997803 1169.973267 1170.777588 1171.821655 1173.091797 1173.710327 1174.642578 1175.583862 1175.705322 1174.958374 1174.155396 1173.323242 1172.312134 1171.471191 1172.215942 1172.629883 1172.775391 1172.993042 1172.77771 1171.857544 1171.387573 1170.672974 1171.58728 1172.588379 1172.618896 1172.387329 1172.457764 1173.14563 1173.875488 1174.071533 1173.987183 1173.623535 1173.263672 1172.945312 1172.343018 1171.109985 1168.116821 1164.498169 1162.123779 1162.205322 1161.879517 1161.4729 1161.147095 1161.183838 1161.338135 1161.454346 1161.688965 1161.808594 1161.928589 1161.857666 1161.698242 1161.467041 1161.500977 1161.508423 1161.652954 1161.960571 1161.996338 1161.999756 1161.856079 1161.736572 1161.766968 1161.800781 1161.671509 1161.605347 1161.396606 1161.000854 1160.610718 1160.06897 1159.702393 1159.39502 1159.19043 1158.775513 1158.018433 1157.468872 1157.052368 1156.479004 1155.731323 1154.997681 1154.223267 1153.556885 1152.791016 1152.159546 1151.397705 1150.303223 1149.110229 1148.313599 1147.942383 1147.973633 1148.034058 1147.73999 1147.253784 1146.660034 1147.973145 1158.562256 1168.308472 1173.085815 1177.174683 1184.234863 1182.219971 1175.630493 1173.499878 1173.855713 1176.735962 1177.192261 1173.850952 1170.859985 1170.492065 1172.173584 1175.241089 1175.30603 1174.137695 1175.668091 1177.48584 1177.234619 1174.861816 1177.693726 1181.799072 1183.489258 1185.23584 1194.077515 1200.251221 1203.09375 1202.751831 1204.65625 1207.311401 1207.816528 1205.783447 1208.020142 1209.007812 1206.620361 1211.140259 1212.23291 1210.982422 1207.190674 1205.651367 1209.939941 1212.401123 1210.769897 1208.377197 1206.366943 1206.256104 1208.069824 1209.733521 1207.809937 1206.148926 1204.986694 1206.660767 1205.11084 1202.786621 1203.573364 1203.725342 1204.066406 1205.1073 1206.077881 1207.127686 1209.666504 1212.175293 1214.634399 1216.54895 1217.695923 1218.567017 1219.631592 1221.093628 1223.016968 1224.599976 1224.980347 1222.758545 1218.98291 1219.612305 1223.368774 1226.391357 1228.227173 1230.204834 1229.621094 1233.936279 1238.074829 1237.000488 1233.217285 1226.952026 1219.885742 1211.064941 1207.461548 1209.629517 1207.188354 1205.659546 1209.770508 1214.620239 1210.325195 1203.914551 1197.876709 1193.072021 1192.790405 1194.03186 1194.254517 1197.495483 1199.95459 1199.511108 1198.290283 1196.073853 1194.171509 1203.763062 1211.552124 1216.9823 1220.545288 1222.167358 1226.861206 1230.44751 1235.660767 1241.534424 1245.423462 1245.425049 1243.27771 1239.859497 1241.27356 1244.953491 1238.537354 1234.459717 1233.476685 1232.442261 1237.206421 1246.197876 1243.853027 1233.922729 1229.793945 1222.630615 1217.142944 1212.825562 1207.536865 1207.13562 1206.824707 1201.539429 1197.921265 1201.870117 1209.68042 1218.544434 1233.015381 1233.81543 1229.678833 1229.042847 1230.124268 1227.125122 1222.121582 1218.119507 1212.859497 1207.458862 1200.159912 1196.085327 1193.370117 1191.661499 1186.863403 1173.359863 1152.12915 1156.260742 1174.183105 1177.535156 1173.621704 1167.320679 1168.767456 1169.238525 1170.619263 1180.358887 1182.447632 1170.032349 1157.513428 1159.355713 1157.919678 1150.606079 1146.473511 1139.014771 1133.310181 1131.313721 1130.535645 1130.168335 1129.945801 1130.400146 1131.422974 1132.22876 1131.994507 1132.404297 1133.92688 1133.753296 1132.902344 1135.833374 1143.021362 1149.883423 1159.94458 1163.033081 1155.475098 1144.283569 1132.082764 1126.095337 1121.395874 1118.269165 1115.389526 1112.654663 1109.980103 1109.952637 1110.063721 1108.669189 1107.118042 1105.553955 1104.508789 1103.415039 1102.352051 1101.259399 1100.131226 1098.713989 1097.397583 1096.884521 1096.479248 1095.994385 1095.654541 1095.320312 1094.911743 1094.470459 1094.212891 1093.786743 1093.413208 -1250.28479 1250.51709 1251.071167 1251.667358 1252.762451 1254.1073 1255.53833 1257.433838 1257.314087 1255.956543 1248.152588 1243.061523 1250.480225 1260.624756 1266.221436 1266.394775 1266.256226 1266.048096 1265.240112 1262.997925 1259.839844 1255.05127 1248.353271 1243.842041 1242.071777 1240.204468 1235.976929 1229.402588 1223.653076 1218.837402 1208.753174 1200.096191 1192.936157 1184.772827 1184.92749 1185.376343 1170.511841 1161.341064 1152.919556 1146.388306 1143.039917 1142.693115 1142.830566 1143.401855 1144.20813 1145.662354 1149.849121 1161.582275 1176.063965 1191.06604 1208.445923 1223.304443 1213.497437 1201.122803 1193.447998 1188.712036 1182.682739 1179.713989 1192.513672 1200.400024 1205.250122 1208.47998 1212.865601 1217.375366 1218.453369 1218.66272 1218.898682 1218.719849 1218.678101 1218.685059 1218.568237 1218.174805 1217.5448 1216.971802 1216.490601 1215.649902 1215.080444 1214.502808 1213.714966 1212.75415 1211.555786 1210.0354 1208.556763 1208.788574 1208.712891 1208.084473 1207.57019 1208.694946 1211.327271 1212.997559 1214.063965 1214.395508 1214.290771 1213.991943 1213.528687 1212.946167 1212.358643 1211.506836 1210.630371 1209.619141 1208.525269 1207.176636 1204.43396 1201.488647 1198.671753 1196.203125 1193.779907 1191.814697 1197.562988 1203.545654 1208.234741 1208.826538 1208.976074 1209.173584 1210.447754 1211.852905 1212.579712 1212.744751 1212.375488 1213.300171 1214.599976 1214.348511 1210.464233 1207.546875 1218.698242 1220.243774 1220.163452 1220.604004 1220.567383 1220.647705 1220.90332 1221.222168 1219.927856 1218.519775 1217.726562 1217.78894 1218.394043 1220.016846 1221.739136 1222.760254 1223.30542 1223.291382 1222.832764 1222.405884 1221.855591 1220.990479 1220.431274 1221.512817 1222.194946 1221.679199 1221.001831 1220.29541 1218.281616 1214.813965 1212.091064 1210.498901 1209.247803 1208.15979 1207.758057 1208.390503 1208.221069 1206.678223 1208.483276 1213.847412 1219.676025 1225.578247 1232.223389 1239.70459 1249.179199 1258.329346 1260.328491 1259.51416 1246.576782 1243.411255 1252.629028 1259.187622 1260.449097 1254.573853 1240.938599 1230.195435 1222.918457 1216.417847 1210.151855 1206.29834 1208.475952 1210.09729 1211.075928 1211.765015 1212.349609 1212.989136 1213.389038 1213.63623 1213.640991 1213.62146 1213.561768 1213.593872 1213.5271 1213.420288 1213.367188 1213.372559 1213.163696 1212.75 1212.57373 1212.387329 1212.332031 1212.290405 1212.302002 1212.007446 1211.864746 1211.795532 1211.588013 1211.329468 1210.928223 1210.470093 1209.880859 1209.282227 1208.719727 1208.408447 1207.97876 1207.368164 1206.40625 1205.552856 1204.726074 1203.90686 1203.108887 1202.240479 1201.209717 1200.061523 1198.762451 1197.052612 1196.136963 1196.263794 1196.526123 1196.654419 1196.68103 1196.780273 1196.785278 1196.493408 1195.780151 1195.385254 1196.039185 1196.319702 1196.131104 1195.254639 1191.911621 1189.562988 1190.126831 1190.531616 1192.207642 1194.363647 1195.773315 1196.384277 1196.845337 1197.537842 1198.010254 1198.481201 1198.691895 1198.833984 1198.625244 1198.283203 1197.980713 1197.595947 1197.220581 1196.677856 1195.892334 1195.322144 1195.339966 1196.712158 1198.890259 1200.598633 1201.730835 1202.334229 1202.61145 1202.598389 1202.343994 1201.7854 1200.688599 1198.694946 1195.019897 1195.665283 1196.272217 1195.436401 1193.975708 1190.989258 1187.683838 1186.402222 1185.949585 1185.534546 1184.463745 1182.301758 1176.77356 1172.333496 1170.751953 1169.935425 1170.188843 1171.268433 1173.434082 1175.051758 1175.924561 1176.799316 1177.47644 1177.505737 1176.771729 1175.948364 1175.08606 1174.156616 1172.424438 1173.403198 1174.203003 1174.351685 1174.071533 1173.558228 1172.65271 1171.750977 1170.799438 1171.933472 1173.342163 1173.900757 1173.998413 1174.256348 1174.811279 1175.066528 1175.036133 1174.579468 1174.014038 1173.338013 1172.62915 1171.140625 1169.20105 1166.177734 1163.852173 1162.843506 1163.134033 1162.981201 1162.759277 1162.59082 1162.518555 1162.506592 1162.502808 1162.586548 1162.589966 1162.587646 1162.420288 1162.277588 1162.179077 1162.130981 1162.1698 1162.279541 1162.446289 1162.506226 1162.483643 1162.420288 1162.209839 1162.213745 1162.096191 1161.909668 1161.603027 1161.355835 1160.857666 1160.375244 1159.899048 1159.583008 1159.400757 1159.017822 1158.60022 1157.895386 1157.357422 1156.811523 1156.203613 1155.370728 1154.506714 1153.685913 1152.967651 1152.159058 1151.627319 1150.988037 1150.025879 1149.137817 1148.471069 1148.370972 1148.407837 1148.504761 1148.195923 1147.57605 1146.974976 1146.357666 1150.234619 1159.406616 1163.605957 1169.064453 1175.133545 1177.27771 1175.172485 1174.049561 1175.873047 1182.788818 1180.609741 1173.210083 1170.192871 1170.259521 1170.665161 1170.641113 1170.577393 1171.47583 1173.792603 1174.618896 1173.097412 1170.538818 1172.712524 1181.219849 1181.113159 1181.203369 1185.780273 1193.627319 1194.186523 1194.811646 1199.329102 1202.178101 1203.228271 1202.17981 1201.581421 1201.450439 1202.281616 1204.696289 1205.936401 1204.765747 1200.775635 1199.262695 1205.672119 1207.664551 1206.774048 1204.387817 1203.157471 1203.510742 1204.817749 1205.247681 1203.385742 1201.40918 1200.960083 1200.873901 1200.124878 1198.598267 1196.076904 1196.978394 1202.591064 1206.986816 1209.020508 1211.331665 1214.168701 1216.770996 1219.256226 1221.131714 1223.290649 1225.236328 1227.006714 1228.239868 1229.181885 1230.275269 1231.032471 1227.796021 1221.926514 1219.09729 1224.923462 1230.21228 1233.237549 1234.627686 1234.321655 1236.202026 1238.643921 1237.638916 1233.773804 1226.675537 1219.521484 1215.073608 1215.339966 1215.102905 1209.032593 1206.455444 1215.003052 1221.787964 1216.0448 1207.816528 1200.261475 1194.427368 1196.28125 1199.703369 1201.486084 1202.804321 1204.547485 1205.72583 1204.524658 1201.230103 1197.808594 1195.415039 1201.001587 1204.413208 1214.976074 1222.108154 1225.89624 1230.001099 1234.25647 1239.053223 1242.33728 1244.907837 1244.484131 1240.221069 1238.345459 1237.671509 1234.437378 1231.781982 1231.938721 1235.064331 1241.723633 1243.595337 1242.855713 1238.502686 1234.084351 1230.229492 1221.95752 1216.910156 1212.98877 1212.894043 1210.803345 1206.208374 1208.725708 1206.088257 1210.608276 1221.341919 1233.271729 1234.136353 1230.8479 1232.817993 1233.967407 1232.166504 1228.985962 1223.618896 1217.9198 1210.636719 1205.50647 1203.071045 1198.991211 1195.591187 1188.045166 1164.807861 1153.539062 1167.46875 1185.814941 1182.113525 1175.831055 1172.386353 1175.748657 1175.250122 1176.022095 1180.644531 1184.00415 1181.002563 1159.279663 1153.800293 1147.090088 1142.618164 1138.86145 1132.796997 1131.318359 1131.139404 1131.26123 1131.096924 1131.401978 1132.875366 1134.451416 1135.605469 1135.0625 1137.017578 1137.733521 1136.035767 1133.773315 1133.840088 1143.230835 1151.688232 1159.894897 1156.720825 1149.564819 1137.926147 1130.018799 1124.760254 1120.688477 1117.387451 1114.512939 1111.949951 1109.883911 1109.912231 1110.062256 1108.494629 1106.953857 1105.184692 1103.743286 1102.435303 1101.295166 1100.285522 1099.575439 1098.221191 1097.263916 1096.522705 1096.099243 1095.648682 1095.126343 1094.709717 1094.290649 1093.81543 1093.389404 1092.897217 1092.418335 -1252.879395 1253.518433 1254.410278 1255.172729 1256.530151 1259.106323 1262.463013 1265.132935 1265.059692 1262.72937 1257.454224 1252.270874 1252.575684 1264.108887 1272.999512 1275.720337 1274.994995 1273.852417 1272.538208 1270.603149 1267.139404 1261.956665 1256.21521 1251.914551 1249.248657 1247.001831 1243.108521 1233.921997 1227.68457 1222.19873 1209.330322 1199.828857 1193.157959 1193.671265 1191.347168 1184.820557 1168.685303 1158.40686 1150.056885 1144.863892 1142.876343 1143.131714 1143.227905 1143.666382 1144.484375 1145.729004 1150.57959 1162.335083 1176.750122 1192.959473 1212.908813 1223.828125 1213.519531 1202.228394 1193.784424 1189.678345 1182.846802 1181.449463 1194.383179 1202.053467 1209.332153 1213.76001 1218.741089 1220.346436 1220.058228 1220.054688 1219.893555 1219.696167 1219.577515 1219.430664 1219.250366 1218.829346 1218.141724 1217.531982 1216.846924 1216.263794 1215.696899 1215.165527 1214.516357 1213.559082 1212.589233 1211.536621 1210.785278 1210.344116 1209.786865 1208.947876 1207.768799 1207.5354 1211.791504 1213.521484 1214.401001 1214.654175 1214.485107 1214.093994 1213.553345 1212.884644 1212.173828 1211.380981 1210.505615 1209.532349 1208.519897 1207.073486 1204.18689 1201.228638 1198.157349 1195.131836 1193.673584 1194.207642 1200.059692 1205.260986 1208.489868 1210.13562 1211.07373 1211.830566 1213.166016 1214.388306 1215.625244 1215.795532 1215.609985 1216.357666 1218.39856 1219.582031 1215.365845 1208.158813 1219.121704 1221.414551 1221.991089 1222.800659 1222.709595 1222.667236 1222.815552 1222.343384 1220.881592 1219.289062 1218.401001 1218.298462 1218.748169 1219.858887 1222.431763 1223.837646 1224.667847 1224.942749 1224.939697 1224.425659 1223.866577 1223.246582 1222.814453 1223.129517 1222.988647 1221.608032 1219.970337 1219.765259 1218.742432 1216.029419 1213.630127 1211.847534 1210.568848 1209.756714 1209.454712 1209.371948 1209.119507 1208.213623 1206.819092 1211.884644 1218.258911 1223.598389 1229.842285 1236.400879 1243.852783 1253.264893 1258.831177 1260.373535 1256.671143 1246.220093 1254.450806 1259.781494 1260.44165 1257.365967 1243.323364 1231.657837 1222.920654 1215.643799 1208.650635 1207.193115 1209.626587 1211.788208 1213.022583 1213.715454 1214.07373 1214.419189 1214.652222 1214.745728 1214.687988 1214.574585 1214.436401 1214.369873 1214.346436 1214.21936 1214.190552 1214.164917 1213.993164 1213.675415 1213.326538 1213.167358 1213.140137 1212.989868 1212.867065 1212.630493 1212.418945 1212.162598 1211.888916 1211.546997 1211.071289 1210.469482 1209.856812 1209.199829 1208.783813 1208.21875 1207.625 1207.166504 1206.400024 1205.729126 1205.035767 1204.375122 1203.567505 1202.706177 1201.776367 1200.736206 1199.535889 1198.546753 1197.708862 1197.437378 1197.291016 1197.240845 1197.244629 1197.241821 1197.253906 1196.965942 1196.519653 1196.248413 1196.630493 1196.553589 1196.178955 1195.253906 1192.130859 1190.126099 1191.179932 1192.078491 1193.277832 1194.838989 1195.897705 1196.629272 1197.218262 1197.868774 1198.449097 1198.857056 1199.170898 1199.245117 1199.056519 1198.728027 1198.300537 1197.931885 1197.508179 1196.922119 1196.191406 1195.327148 1195.356812 1196.851929 1199.890991 1201.666138 1202.872437 1203.518799 1203.747803 1203.618042 1203.365479 1202.712769 1201.693848 1199.666504 1197.985229 1198.275757 1198.852295 1197.495117 1194.768188 1192.80481 1190.42334 1188.167114 1186.643188 1185.57666 1184.140747 1181.630737 1177.555786 1171.872437 1171.374756 1171.913574 1170.056763 1171.274902 1175.179932 1177.547729 1178.349487 1179.091675 1179.529053 1179.715332 1179.422729 1178.499634 1177.585693 1176.747314 1175.023682 1175.535156 1175.887085 1175.792114 1175.082275 1174.128296 1172.903809 1170.969482 1171.501709 1172.960327 1174.308838 1175.039795 1175.536377 1176.107422 1176.404175 1176.404053 1176.05481 1175.272827 1174.210083 1173.046265 1171.635864 1169.934692 1167.001587 1164.246826 1163.583008 1163.705078 1164.301514 1164.484009 1164.436646 1164.124634 1163.929688 1163.807251 1163.693726 1163.657104 1163.635376 1163.46521 1163.205811 1163.058716 1162.882324 1162.897461 1162.915771 1163.008911 1162.933472 1162.951538 1162.939575 1162.788208 1162.649414 1162.463867 1162.267212 1161.967407 1161.66333 1161.190796 1160.688232 1160.147827 1159.900269 1159.490723 1159.093628 1158.810303 1158.326416 1157.977295 1157.457153 1156.783691 1156.046387 1155.112427 1154.243408 1153.136475 1152.212524 1151.434937 1150.823608 1150.299194 1149.661865 1149.132568 1149.02832 1149.084595 1149.115723 1149.117432 1148.866333 1148.238647 1147.555664 1146.928467 1146.32373 1151.831665 1156.713257 1162.339478 1167.553833 1170.799194 1172.567871 1171.187256 1171.025024 1181.078613 1184.386963 1172.949707 1169.743774 1169.445801 1169.799438 1172.767944 1175.319458 1177.752686 1176.036987 1172.655273 1170.922974 1171.012817 1193.665527 1196.614014 1191.491943 1186.940063 1183.99292 1189.48645 1192.538452 1193.827148 1194.975708 1198.76355 1199.732666 1198.487427 1195.015503 1195.096924 1197.267944 1199.783691 1200.337524 1199.039917 1195.387329 1198.925171 1205.450439 1202.820557 1201.980103 1200.481445 1198.858887 1199.993408 1201.175171 1200.908691 1199.064209 1195.666626 1196.489868 1197.165527 1196.20166 1194.841797 1194.167725 1195.92395 1206.472778 1210.290039 1213.638184 1216.634888 1218.98877 1221.356567 1224.392334 1227.348999 1231.051392 1233.222168 1235.366699 1236.225464 1236.464844 1236.645142 1236.299805 1233.32251 1228.719482 1222.53186 1227.784546 1233.983643 1237.405029 1238.829468 1239.523071 1240.967285 1241.524414 1239.562012 1234.68103 1226.978516 1219.117798 1218.567017 1223.563354 1221.352661 1211.981323 1207.731689 1220.966187 1222.669556 1217.484375 1208.435181 1200.424561 1195.182617 1200.817261 1207.026001 1209.506714 1208.307861 1209.425903 1211.083496 1209.553467 1205.984741 1205.154785 1203.466553 1198.993286 1199.56543 1212.585449 1220.339355 1223.815063 1228.24585 1232.456421 1235.990234 1238.412842 1239.644653 1238.543945 1235.975708 1233.023315 1231.060791 1229.628174 1228.518066 1230.273804 1234.74939 1236.864014 1237.386475 1236.691284 1234.509399 1233.442261 1232.64917 1225.938843 1219.508301 1220.12561 1221.264771 1218.096924 1216.59668 1218.110718 1213.127075 1216.684326 1222.268311 1234.110474 1237.148926 1234.845337 1236.144409 1236.514893 1235.27417 1233.150269 1226.976074 1220.581787 1216.929565 1213.797729 1210.225952 1205.150757 1198.536011 1186.250488 1160.704834 1154.99292 1182.527344 1190.121338 1186.981445 1181.738525 1179.773438 1182.550537 1182.921997 1180.489014 1180.597656 1184.298218 1182.55957 1162.90271 1149.841675 1143.957031 1139.614258 1136.153931 1132.609253 1131.847168 1131.83252 1133.064697 1133.681274 1133.441772 1135.867676 1139.204102 1141.459473 1141.853149 1142.579346 1142.698975 1139.426392 1136.06897 1133.939331 1134.819458 1149.338257 1151.054443 1147.037842 1139.891357 1131.878784 1126.683105 1122.6521 1119.575439 1116.423828 1113.635864 1111.184448 1109.853027 1109.965942 1110.04126 1108.566284 1106.563721 1104.727295 1103.032593 1101.630859 1100.461548 1099.102051 1098.056396 1097.584961 1096.956055 1096.460693 1095.86145 1095.470581 1094.981689 1094.489502 1093.970947 1093.548706 1093.067505 1092.549316 1091.911499 -1254.881958 1256.426392 1258.413696 1260.234497 1263.361206 1267.181885 1270.642456 1272.90332 1272.918091 1270.543457 1265.781494 1260.127686 1255.758057 1259.277222 1272.382812 1281.525757 1282.636597 1281.321655 1278.954224 1276.435303 1273.060181 1268.24707 1262.950806 1258.545776 1255.496094 1252.421143 1247.945801 1240.98584 1230.47583 1224.332764 1211.178955 1203.733398 1201.083618 1201.331543 1196.375732 1184.072998 1167.838379 1157.904907 1150.401489 1145.060669 1143.264038 1143.469604 1143.613281 1144.028809 1144.645508 1145.775146 1148.951172 1160.397339 1175.257935 1191.088867 1212.616333 1224.963989 1218.22583 1205.592773 1197.955322 1192.860596 1185.626221 1180.59021 1192.693359 1201.761597 1208.410156 1215.125488 1221.154541 1221.042969 1220.501709 1220.349609 1220.365234 1220.294312 1220.206299 1220.23999 1220.021118 1219.654663 1218.88147 1218.137085 1217.558594 1216.867798 1216.36377 1215.862793 1215.313354 1214.596802 1213.879883 1213.164551 1212.617432 1211.927246 1211.268311 1210.38916 1209.525879 1210.989258 1213.07019 1214.273682 1214.959595 1214.945557 1214.664551 1214.033203 1213.433228 1212.594482 1211.935791 1211.158081 1210.237915 1209.329712 1208.32959 1206.804565 1204.125122 1201.243042 1198.365723 1196.198486 1194.125977 1195.185425 1201.639526 1207.738403 1209.80835 1211.657471 1213.178223 1214.521362 1215.92334 1217.189331 1218.744385 1219.236816 1218.632812 1218.02771 1219.859375 1221.378906 1220.755127 1212.103638 1215.907959 1222.400757 1224.055054 1225.372925 1225.454346 1225.101929 1224.484131 1223.527588 1221.85791 1219.834106 1219.276733 1218.942017 1219.589355 1220.858521 1223.23999 1225.1427 1226.329956 1227.029541 1227.199463 1226.849365 1226.41272 1225.782715 1225.116699 1224.500854 1223.765503 1220.840698 1219.224976 1218.625244 1217.842285 1216.344971 1214.612915 1213.174072 1212.139771 1211.249512 1210.760132 1210.272949 1209.650635 1208.677368 1207.4375 1210.119263 1215.937134 1219.921265 1225.494141 1231.794678 1238.487671 1245.984497 1254.244141 1258.55481 1257.80957 1257.399658 1257.138184 1260.557861 1261.004028 1257.338745 1242.846802 1232.034058 1223.952148 1215.317261 1207.053345 1208.464233 1211.94751 1214.710693 1216.030273 1216.015869 1215.821045 1215.768066 1215.820068 1215.820068 1215.701172 1215.550293 1215.358398 1215.271851 1215.124023 1215.076416 1215.108032 1214.983398 1214.765625 1214.529175 1214.121094 1214.058716 1213.882812 1213.670898 1213.462524 1213.147583 1212.774658 1212.468506 1212.108643 1211.64209 1211.004883 1210.221069 1209.512329 1208.883179 1208.199829 1207.590088 1207.305176 1206.829102 1206.412842 1205.851929 1205.313477 1204.610718 1203.881348 1203.11853 1202.160034 1201.328735 1200.4021 1199.694214 1199.048584 1198.519653 1198.229248 1198.048828 1197.926392 1197.824585 1197.776611 1197.613403 1197.444824 1197.245728 1197.044678 1196.805542 1196.162354 1195.15625 1192.735229 1190.625244 1191.161865 1193.79541 1194.522461 1195.194092 1196.03186 1196.838379 1197.468872 1198.085449 1198.766602 1199.235352 1199.549316 1199.599487 1199.556519 1199.104858 1198.729614 1198.422363 1198.039917 1197.601196 1196.965942 1196.590088 1197.312378 1198.827271 1201.439697 1203.193481 1204.278442 1204.831543 1204.887329 1204.715088 1204.428589 1203.892578 1202.984619 1202.074951 1201.618896 1202.556152 1203.637207 1201.839355 1197.729858 1194.963501 1192.167236 1188.720337 1186.135376 1184.566284 1182.955444 1181.275757 1179.075928 1176.290405 1174.229858 1173.288696 1170.036133 1170.897827 1177.635254 1180.951416 1181.1073 1181.409302 1181.486206 1181.931274 1181.960571 1181.217041 1180.577759 1180.053101 1179.276001 1178.481079 1177.809937 1177.24939 1176.138916 1174.565674 1172.218262 1171.188477 1172.926147 1174.20105 1175.496948 1176.412354 1177.017212 1177.696411 1178.064087 1178.044312 1177.256836 1176.005981 1174.348999 1172.615845 1170.956299 1168.762939 1165.328491 1164.774048 1164.878906 1165.670654 1166.405396 1166.508057 1166.27002 1165.77417 1165.371826 1165.148071 1164.960083 1164.911377 1164.764404 1164.471313 1164.214111 1164.018311 1163.841797 1163.785156 1163.892578 1163.860962 1163.642212 1163.440796 1163.275269 1163.157837 1162.974976 1162.72583 1162.396484 1161.963135 1161.62915 1161.089233 1160.634521 1160.152344 1159.660889 1159.293579 1159.000244 1158.601807 1158.375977 1158.529053 1158.525024 1157.081787 1155.894287 1154.872192 1153.789062 1152.72998 1151.544556 1150.833862 1150.565552 1150.178467 1149.900024 1149.892334 1149.969604 1150.074829 1150.107788 1150.011475 1149.698608 1149.279785 1148.630005 1147.927368 1147.317017 1150.851685 1154.727295 1157.518555 1160.296509 1165.317871 1168.202759 1168.765259 1173.16748 1176.765381 1178.813354 1172.263916 1169.447754 1169.964111 1178.503662 1182.318726 1182.553467 1184.440552 1180.019287 1171.084595 1170.080811 1182.499512 1192.209106 1192.910522 1195.769287 1190.978882 1187.808594 1190.029297 1194.308594 1195.122314 1196.387939 1197.690186 1196.917358 1195.430542 1193.931396 1193.236694 1194.356445 1195.530518 1197.241089 1195.001221 1195.012573 1203.75293 1203.822144 1198.265991 1197.246948 1196.715576 1194.789551 1197.463989 1198.698853 1198.158447 1196.503906 1194.10376 1193.519287 1193.63562 1193.679199 1193.798462 1195.528564 1203.132324 1210.52356 1215.527954 1219.229736 1221.986572 1224.660645 1227.470093 1230.392334 1233.368652 1237.653442 1241.172485 1245.030884 1245.600464 1245.17627 1244.064209 1241.705444 1238.415405 1234.241089 1230.190063 1231.613647 1237.533325 1242.320679 1243.769897 1244.272217 1243.67981 1245.547363 1241.661743 1235.840088 1227.515747 1218.519897 1226.970459 1231.036377 1224.779053 1217.341553 1215.074829 1222.07019 1222.674194 1217.329834 1207.91626 1202.265869 1200.679565 1204.894653 1210.698975 1214.298462 1215.694946 1216.056641 1215.947876 1214.981812 1212.401611 1211.358032 1210.236694 1205.028076 1200.201782 1202.191162 1213.24231 1219.956299 1223.71521 1228.356567 1232.575928 1233.90918 1234.154175 1233.027344 1230.630981 1228.410034 1226.05957 1223.884521 1223.645874 1227.012573 1231.428223 1231.632202 1231.317017 1231.057495 1230.151611 1229.264526 1229.232178 1227.514893 1228.206299 1232.985474 1232.616821 1227.203369 1227.509644 1228.203613 1223.340698 1226.410278 1229.252075 1237.857544 1242.245361 1240.847412 1239.714722 1239.019409 1237.442017 1234.450195 1230.00769 1226.33667 1224.299438 1221.497192 1215.196777 1207.691772 1197.785156 1184.845093 1163.561157 1157.844604 1187.232056 1196.513794 1194.000366 1186.247559 1183.185669 1185.22644 1185.219238 1183.665161 1177.448975 1172.847534 1168.695801 1155.415894 1146.996094 1142.211792 1138.181396 1134.197388 1133.159546 1133.203003 1134.404297 1137.44397 1138.623657 1139.015991 1141.158691 1146.091919 1148.888184 1147.795166 1148.206909 1147.391968 1142.416626 1138.118042 1135.617432 1132.784302 1131.284424 1136.512451 1136.078247 1131.842163 1126.898682 1122.953125 1120.865356 1118.065674 1115.33374 1112.759033 1110.33606 1109.861938 1109.951538 1109.96875 1108.325439 1106.112915 1104.059937 1102.242554 1100.725708 1099.712524 1098.493286 1097.483643 1097.158325 1096.864502 1096.511597 1096.095703 1095.579712 1095.122437 1094.530762 1094.110474 1093.556763 1093.102295 1092.57251 1091.961792 -1258.039307 1261.511719 1264.589844 1267.479614 1270.633179 1274.003052 1277.233765 1280.741699 1282.14563 1278.260376 1272.806152 1267.391968 1261.353027 1256.8396 1268.454102 1277.359375 1283.350586 1287.720703 1287.362305 1283.244141 1279.374756 1274.406616 1268.697998 1264.890991 1261.442139 1257.535889 1252.050171 1246.79541 1236.696167 1224.12207 1211.20105 1210.554199 1212.69397 1207.719971 1195.555054 1180.647705 1167.019287 1158.307373 1151.698975 1145.919067 1143.75354 1143.910889 1144.007324 1144.38562 1144.766235 1145.445312 1146.46936 1156.348511 1171.373779 1184.91272 1202.970337 1222.769775 1222.007202 1211.517334 1202.786743 1195.696899 1186.609009 1181.115967 1187.840698 1197.955566 1204.017212 1210.130127 1218.626465 1220.173706 1219.603027 1219.245361 1220.320923 1220.649048 1220.664673 1220.590698 1220.395264 1220.072876 1219.373169 1218.613403 1218.049316 1217.370605 1216.843384 1216.547729 1216.205688 1215.777954 1215.285522 1214.812988 1214.255615 1213.618286 1213.055054 1212.628418 1212.822388 1213.63208 1214.487915 1215.215942 1215.428101 1215.322388 1214.865112 1214.109131 1213.332886 1212.502808 1211.587036 1210.803589 1209.954102 1209.229614 1208.313965 1206.484131 1203.721924 1200.609741 1198.535034 1196.425659 1194.644165 1195.935181 1201.344971 1208.050293 1210.839111 1213.121826 1215.187866 1216.911011 1218.236328 1219.529297 1221.048096 1221.74707 1221.247681 1219.480591 1220.585938 1222.376343 1221.937866 1216.547607 1214.91626 1222.164673 1226.759888 1229.276123 1228.580811 1227.223145 1226.124268 1224.969238 1223.236206 1221.521484 1220.970703 1219.627686 1220.964111 1222.751465 1224.860107 1226.759155 1228.063232 1229.172363 1229.700684 1229.566406 1229.119141 1228.062744 1226.904907 1225.647827 1224.434204 1220.654541 1218.996948 1218.158081 1217.343506 1216.526611 1215.480835 1214.478149 1213.463379 1212.578491 1211.786743 1211.147339 1210.266235 1209.286621 1208.325684 1210.425537 1213.817017 1217.172485 1221.261353 1227.890503 1233.46228 1240.981689 1248.321289 1254.638184 1257.143921 1258.092285 1259.922852 1262.014648 1261.944458 1257.495972 1242.605713 1231.130005 1224.828979 1212.960205 1207.735718 1210.53772 1214.329102 1218.588989 1219.532837 1218.086304 1217.186523 1217.009155 1217.008179 1216.95459 1216.697998 1216.518433 1216.343506 1216.148804 1215.950073 1215.876831 1215.881104 1215.782959 1215.518799 1215.256714 1214.984863 1214.898926 1214.574585 1214.327759 1213.953735 1213.563843 1213.143677 1212.792725 1212.306885 1211.713013 1210.937256 1209.839478 1208.681274 1207.79248 1207.561768 1207.291748 1207.270752 1207.11853 1206.675781 1206.091064 1205.518799 1204.778809 1204.068604 1203.331299 1202.579224 1201.990967 1201.465942 1200.900513 1200.258057 1199.673218 1199.192505 1198.922485 1198.664429 1198.557617 1198.421997 1198.351929 1198.161499 1197.890015 1197.576172 1197.099243 1196.424927 1195.7323 1194.301758 1192.168457 1191.111694 1195.245972 1195.900879 1195.920898 1196.379883 1197.053711 1197.649902 1198.332397 1198.985962 1199.53064 1199.841797 1200.050537 1199.951172 1199.665283 1199.415894 1199.046631 1198.869629 1198.805908 1198.749023 1198.960938 1200.018311 1201.84082 1203.765015 1205.078613 1205.834351 1206.35437 1206.102417 1205.592285 1205.371704 1205.059082 1204.800293 1204.299316 1204.048584 1205.816284 1207.68335 1207.159668 1201.374268 1196.525513 1192.802368 1187.794067 1184.837402 1183.031128 1182.10083 1182.061768 1182.204102 1180.266846 1176.392456 1173.326904 1170.289673 1171.233276 1180.061646 1184.466187 1183.521118 1183.682617 1183.459839 1184.009399 1184.047607 1183.387329 1183.026978 1182.981323 1182.254028 1180.704834 1179.820557 1179.070068 1177.701294 1175.117432 1170.889404 1172.275879 1174.167114 1175.843018 1176.968384 1177.685303 1178.549316 1179.335327 1179.933838 1180.081543 1178.880615 1176.674561 1174.219604 1171.664185 1170.202515 1168.286255 1165.96167 1165.292603 1166.441528 1168.393066 1169.246582 1168.923096 1167.994507 1167.295044 1166.770386 1166.416504 1166.191162 1166.102295 1165.948853 1165.654053 1165.344482 1165.074707 1164.919434 1164.969238 1164.777954 1164.590332 1164.314209 1163.999634 1163.814331 1163.619019 1163.46814 1163.015137 1162.659668 1162.213013 1161.776611 1161.24231 1160.832886 1160.294678 1159.691406 1159.252075 1158.853638 1158.750732 1158.765259 1158.966675 1158.937988 1157.667969 1155.964722 1154.585815 1153.721802 1152.744263 1151.579102 1151.364624 1151.222412 1150.966309 1150.72937 1150.715576 1150.848877 1150.838989 1150.952759 1150.91394 1150.693115 1150.294434 1149.877686 1149.806885 1150.70874 1152.426392 1154.542603 1156.116821 1157.072632 1158.606323 1161.591187 1164.627441 1169.062378 1171.255737 1171.487671 1168.765991 1169.013184 1173.641113 1182.058228 1183.011597 1182.59436 1181.61377 1177.016968 1170.579956 1170.407593 1178.723389 1182.076172 1182.769165 1185.225952 1186.380005 1186.178345 1187.933105 1195.761963 1196.187134 1196.781982 1197.327148 1195.611084 1195.312256 1194.651733 1192.956177 1195.657837 1196.209595 1195.783936 1193.560669 1195.776245 1195.451782 1194.403076 1193.64624 1193.370117 1192.861206 1193.487061 1196.133545 1196.507446 1195.659302 1193.688354 1192.235718 1192.113403 1192.498779 1192.751709 1194.116577 1197.710083 1204.890137 1212.582275 1219.904541 1223.421631 1226.920166 1230.628174 1233.647095 1237.590454 1242.366455 1246.226074 1249.587891 1253.374878 1254.963623 1254.906372 1252.898315 1248.689575 1243.753174 1238.321899 1231.553833 1232.778076 1243.386841 1247.739258 1248.884644 1249.239868 1248.695679 1249.228027 1245.112061 1238.236328 1228.210571 1217.501221 1239.120728 1237.309082 1229.048828 1219.756226 1218.860107 1223.996216 1223.571167 1216.428101 1205.596802 1204.231323 1204.082397 1206.760132 1212.53894 1218.460083 1221.470703 1221.526367 1221.189331 1220.911865 1219.883301 1218.180664 1214.940063 1208.977051 1206.226807 1200.526489 1202.12085 1211.638184 1218.271484 1221.535767 1224.859497 1227.218506 1227.485107 1226.517578 1225.078125 1223.309082 1221.15332 1218.902466 1219.190186 1222.767456 1224.85498 1225.338379 1225.325195 1225.338501 1225.434326 1225.146362 1225.700806 1228.239868 1232.054932 1234.092285 1236.230103 1236.103882 1237.547974 1237.19458 1235.101807 1239.184204 1241.133911 1244.613281 1245.119507 1243.953003 1242.586914 1241.612183 1240.132812 1237.264038 1233.667114 1233.732178 1231.31665 1225.038208 1217.94873 1207.842651 1198.091919 1189.74353 1177.147827 1159.117065 1187.848511 1197.147583 1196.444214 1191.64563 1188.114136 1186.110596 1185.707031 1185.356812 1170.136475 1162.032104 1153.486572 1148.127563 1143.995728 1141.272461 1138.769897 1137.073364 1137.72168 1138.136597 1139.766602 1144.8479 1147.314575 1144.786377 1145.081055 1153.550049 1158.524536 1155.710571 1151.710205 1147.228516 1141.24939 1136.638672 1134.5979 1132.144287 1130.175293 1129.141724 1127.62439 1124.267822 1121.608032 1120.762329 1119.526001 1117.270142 1114.350098 1111.973389 1110.009155 1109.370483 1109.602417 1109.908813 1107.372314 1105.326904 1103.399414 1101.256226 1099.644043 1098.446777 1097.579712 1097.242065 1097.221924 1097.084229 1096.834839 1096.450806 1095.988403 1095.469971 1094.978027 1094.45459 1093.922241 1093.497681 1092.964111 1092.331909 -1265.743042 1268.122192 1270.915283 1272.981323 1277.167725 1280.636597 1284.678955 1288.518921 1289.653076 1285.088257 1278.82312 1273.551147 1269.833984 1266.56958 1266.043213 1270.69751 1279.293945 1290.116577 1295.387817 1293.853149 1287.905518 1281.333862 1275.118286 1270.616333 1267.323853 1260.489258 1253.281982 1246.711914 1234.695068 1220.597168 1219.918701 1222.558838 1215.839844 1204.357788 1188.979004 1173.154297 1166.654663 1160.113525 1153.186035 1146.62854 1144.092529 1144.345337 1144.437378 1144.817261 1145.243042 1145.679932 1146.103394 1148.240356 1165.439941 1178.194092 1193.883301 1211.551514 1224.51355 1217.246704 1205.290527 1195.235352 1190.198853 1184.602905 1183.61853 1190.917358 1196.581177 1202.377441 1209.02356 1211.725952 1211.526855 1207.525879 1213.919922 1220.462036 1220.880859 1220.792725 1220.578735 1220.236694 1219.699097 1218.886475 1218.34375 1217.796753 1217.398682 1217.177124 1216.976074 1216.79541 1216.522217 1216.227661 1215.874023 1215.421021 1215.123413 1214.913574 1215.019897 1215.394653 1215.743652 1216.146484 1216.079956 1215.781128 1215.195557 1214.428101 1213.385498 1212.431641 1211.451538 1210.524292 1209.810181 1208.986084 1208.029785 1205.847778 1202.576782 1199.605225 1197.660034 1195.803589 1197.41272 1199.31897 1198.583252 1206.050659 1210.599487 1214.108398 1216.976074 1219.095825 1220.529907 1221.482544 1222.748779 1223.65271 1223.427612 1222.431519 1223.212158 1223.905518 1223.709229 1219.783203 1214.782715 1222.257935 1228.841919 1232.453613 1230.742188 1228.794067 1227.883179 1226.736084 1225.411377 1224.064331 1223.159424 1222.55542 1223.383057 1225.193726 1227.094116 1228.544678 1229.404297 1230.696655 1231.95166 1232.014648 1231.142578 1229.795776 1228.297607 1226.770874 1225.022461 1220.921875 1219.460327 1218.299927 1217.566284 1216.927246 1216.474731 1215.804199 1214.860352 1213.84729 1212.917114 1212.009155 1211.084473 1210.021729 1209.32605 1209.947388 1213.217163 1216.999878 1221.454834 1225.599976 1230.016724 1235.753296 1242.244385 1247.138916 1252.888794 1256.327026 1259.722412 1263.805542 1262.30957 1258.384399 1244.567749 1233.134766 1225.200073 1211.159424 1210.174683 1212.68042 1216.372314 1219.953613 1219.99646 1218.885864 1217.937744 1217.918945 1218.10498 1217.909546 1217.793091 1217.422974 1217.115234 1216.958008 1216.770142 1216.651489 1216.560181 1216.490845 1216.233398 1215.975708 1215.755737 1215.494385 1215.315918 1214.95166 1214.545166 1214.222656 1213.759766 1213.34021 1212.728149 1212.022583 1211.05896 1209.401367 1207.568359 1207.557007 1207.696899 1207.908813 1207.928467 1207.721436 1207.221191 1206.643066 1205.9375 1205.203003 1204.343628 1203.736694 1203.179199 1202.724243 1202.37146 1201.869873 1201.324951 1200.700684 1200.171509 1199.773071 1199.555908 1199.406616 1199.324097 1199.104126 1198.724731 1198.452271 1198.054932 1197.568359 1196.904907 1196.244507 1195.57666 1193.781982 1192.404541 1192.675903 1196.203125 1196.463867 1196.78479 1197.186401 1197.819336 1198.493286 1199.096436 1199.726074 1200.147827 1200.34436 1200.483276 1200.365723 1200.116089 1200.031128 1200.035156 1200.180054 1200.496704 1201.15918 1202.30957 1204.519653 1206.565796 1207.045776 1207.153076 1207.720947 1207.278564 1206.508545 1206.114258 1206.601318 1206.624878 1206.158203 1205.158691 1206.306274 1207.833496 1207.78833 1201.9552 1197.238159 1192.525391 1186.202637 1183.204712 1182.622437 1183.120728 1184.018188 1184.059082 1182.918823 1178.460938 1173.409668 1170.035889 1172.632202 1180.057007 1184.770142 1185.578979 1185.408325 1185.279663 1185.442627 1185.439331 1185.274658 1185.070068 1184.575195 1183.735718 1182.224365 1182.216919 1181.332397 1179.56543 1177.376587 1175.345093 1174.939697 1176.377075 1177.671021 1178.504639 1178.956665 1179.742676 1180.724365 1181.857666 1182.311035 1181.119385 1177.4104 1173.281128 1170.854248 1169.358643 1167.968384 1166.868042 1166.071655 1168.372314 1170.65918 1171.151855 1170.57312 1169.482544 1168.559937 1167.962402 1167.601074 1167.401367 1167.293823 1167.169556 1166.951904 1166.634155 1166.324097 1166.130859 1165.83374 1165.609497 1165.344482 1164.905518 1164.772095 1164.462158 1164.029053 1163.71521 1163.477173 1163.039062 1162.576904 1162.099609 1161.565552 1161.05249 1160.435181 1159.891357 1159.136353 1158.72876 1158.874756 1159.064941 1158.964355 1158.421265 1157.261963 1155.720337 1154.311279 1153.611206 1152.861084 1152.106689 1151.915771 1151.974976 1151.828735 1151.705566 1151.709961 1151.83252 1151.88269 1151.922485 1151.977539 1151.758179 1151.452515 1151.283569 1151.401733 1152.190674 1153.33606 1154.535645 1155.420776 1156.241333 1157.098877 1158.526001 1158.123169 1161.27124 1163.609985 1163.67395 1161.068726 1167.356201 1172.14563 1172.171265 1171.87561 1171.569458 1172.733643 1170.981689 1169.880737 1170.514893 1173.673462 1176.25 1177.945923 1179.595215 1181.624878 1181.859375 1182.871826 1188.202271 1193.425171 1194.956787 1195.432617 1194.96106 1194.922485 1193.546265 1189.831177 1193.023193 1193.203003 1192.479736 1191.189819 1191.624023 1191.506226 1190.713501 1190.288574 1189.519897 1189.647095 1190.545288 1192.067383 1191.981201 1190.448853 1188.711426 1189.775879 1191.595215 1192.646973 1195.04834 1199.290039 1202.582031 1204.631348 1210.163574 1219.513184 1225.384521 1230.932861 1235.348022 1239.628784 1244.318237 1250.498291 1255.335205 1258.817017 1262.589355 1264.957764 1265.791626 1261.44458 1257.253662 1250.710205 1244.325439 1233.164917 1237.446655 1248.048828 1253.292236 1254.996338 1255.168213 1253.726318 1253.862549 1248.882935 1241.210815 1231.091919 1229.172852 1247.530396 1244.138306 1234.50769 1222.529785 1221.518066 1229.80542 1225.063843 1213.306274 1205.881958 1206.817749 1205.744629 1207.057739 1213.992065 1220.841431 1224.47583 1225.620239 1225.658325 1225.185791 1224.491699 1222.96814 1221.233398 1218.316284 1213.560913 1208.262939 1203.299927 1202.429077 1206.919189 1210.459351 1213.951172 1217.223511 1218.871704 1219.153687 1218.669556 1217.771362 1216.247437 1215.609619 1216.635376 1218.807617 1219.466187 1219.459106 1218.65686 1220.175781 1221.012329 1219.848511 1220.446411 1226.84375 1231.060791 1234.417114 1237.990723 1243.678345 1245.927246 1244.631958 1243.882568 1246.207153 1246.432251 1245.856689 1245.527466 1245.518433 1245.223389 1244.28894 1243.203979 1241.137573 1238.195557 1236.078613 1232.955688 1224.056396 1217.723389 1211.351318 1207.073975 1194.819946 1183.382324 1164.600586 1188.137085 1197.035278 1196.955688 1193.770996 1189.414307 1183.710449 1181.58374 1171.534424 1162.933472 1156.021851 1145.21521 1144.607056 1142.991943 1141.630981 1141.145264 1142.513428 1145.734497 1145.973267 1144.444824 1149.849854 1153.429321 1150.808472 1150.643677 1159.645508 1161.697998 1159.710205 1154.012939 1145.414429 1138.829102 1133.462524 1132.630737 1131.325195 1129.679443 1127.608765 1124.398682 1122.140503 1121.005493 1120.113892 1118.81543 1116.681396 1113.893921 1111.164307 1109.370728 1108.872559 1108.557617 1107.93042 1106.744507 1105.073853 1102.92688 1100.438477 1098.341675 1097.515503 1097.341553 1097.3479 1097.376587 1097.75354 1097.764282 1097.505493 1096.797241 1096.10437 1095.631836 1095.07373 1094.552734 1093.963501 1093.376343 1092.854614 -1268.696167 1267.871338 1273.34082 1277.519043 1282.377808 1288.991943 1294.127686 1296.01355 1296.548584 1292.680908 1284.409668 1277.724609 1274.844971 1271.160645 1269.425659 1269.800659 1274.951782 1279.21167 1292.329712 1294.908203 1295.101685 1287.595703 1278.927124 1274.763184 1271.310303 1264.546021 1254.768677 1246.456543 1233.395996 1226.034058 1229.011719 1222.640747 1208.136475 1193.638062 1180.891968 1173.743408 1174.734741 1165.988159 1155.500122 1147.818237 1144.819092 1144.899048 1145.158081 1145.527344 1145.975708 1146.497192 1146.852661 1146.14917 1154.230469 1167.328003 1184.189087 1197.58252 1215.333008 1220.803711 1207.848267 1199.932861 1195.021484 1194.686157 1195.364136 1189.273315 1188.448853 1190.493408 1193.196777 1194.794312 1196.077393 1200.22229 1209.103882 1219.074707 1221.138794 1221.05896 1220.752075 1220.307861 1219.80896 1219.137207 1218.683105 1218.356201 1218.049072 1217.911011 1217.918335 1217.813477 1217.560181 1217.549805 1217.33667 1217.227661 1217.228638 1216.978638 1216.71814 1216.82312 1216.862915 1216.860229 1216.661865 1216.207031 1215.526978 1214.72644 1213.604614 1212.569336 1211.447266 1210.461426 1209.515503 1208.6521 1207.480591 1204.398193 1200.875366 1197.932617 1196.940674 1198.733032 1205.178833 1208.996094 1204.480591 1201.952515 1208.57312 1215.926514 1218.67981 1220.76416 1222.567505 1223.713867 1224.899292 1225.751831 1225.895996 1225.634644 1225.948486 1225.897095 1224.632446 1220.912476 1215.281494 1222.408447 1228.963989 1232.683716 1231.345581 1230.078857 1229.525269 1229.017334 1227.650391 1226.553711 1225.994751 1225.925049 1226.682129 1227.854736 1229.40271 1230.709473 1231.139282 1232.153198 1233.133057 1233.645508 1232.545044 1231.023071 1229.359741 1227.443237 1225.589478 1221.598022 1219.92749 1218.757568 1218.047363 1217.745972 1217.568359 1217.23291 1216.316528 1215.219849 1214.098267 1212.924194 1211.893799 1210.950562 1210.21167 1209.95105 1212.630005 1216.197144 1219.459961 1223.254761 1227.320801 1230.468994 1236.887695 1242.285156 1248.585815 1254.632202 1258.61145 1263.522217 1262.444458 1259.526978 1247.385986 1235.222778 1225.815186 1208.748901 1211.268555 1214.532104 1217.481934 1220.176025 1219.968506 1219.0625 1218.488647 1218.959961 1219.174072 1218.923218 1218.528687 1218.362183 1218.167114 1217.825684 1217.595337 1217.451294 1217.390503 1217.306641 1217.08252 1216.890625 1216.548462 1216.346191 1216.05603 1215.754761 1215.359375 1214.904663 1214.519653 1214.000732 1213.443848 1212.549194 1211.401978 1210.061768 1208.195923 1208.32312 1208.715454 1208.842529 1208.695801 1208.260986 1207.634277 1206.987305 1206.195435 1205.383911 1204.641724 1204.160278 1203.797607 1203.553711 1203.212891 1202.856201 1202.321167 1201.642822 1201.175293 1200.775024 1200.568604 1200.36145 1200.059082 1199.763062 1199.426025 1198.850342 1198.54541 1198.000366 1197.318481 1196.647949 1195.875244 1194.69165 1193.152222 1192.315063 1195.834839 1196.433228 1196.940796 1197.360474 1197.976318 1198.609497 1199.216309 1199.78186 1200.322388 1200.619385 1200.846802 1201.001953 1201.026123 1201.134399 1201.359497 1201.679688 1202.158447 1202.820068 1204.046021 1206.021606 1207.651001 1207.980591 1208.285034 1208.256226 1208.041138 1207.617432 1207.492188 1207.849121 1207.872437 1207.496338 1207.362915 1206.323975 1206.579224 1204.628052 1198.880127 1194.964966 1192.305298 1185.558472 1183.974121 1184.202026 1184.924805 1185.381958 1185.046143 1183.901123 1179.59021 1172.967041 1170.190674 1174.308594 1178.89209 1182.413208 1185.532959 1186.592041 1186.887207 1186.872681 1186.731201 1186.687744 1186.346069 1185.707275 1184.85498 1183.756592 1183.877686 1182.998779 1181.20105 1180.040161 1178.998535 1178.647827 1179.081299 1179.666626 1180.051636 1180.252441 1180.930298 1182.318359 1183.327881 1183.613525 1182.681152 1177.736816 1173.079468 1170.169922 1168.375977 1167.109741 1167.084717 1167.814209 1170.002441 1171.368164 1171.65332 1171.053711 1170.281372 1169.446167 1168.717773 1168.370605 1168.241821 1168.360474 1168.268555 1168.112793 1167.812744 1167.510376 1167.123047 1166.771851 1166.362427 1166.008911 1165.780762 1165.371338 1165.047485 1164.592896 1164.1427 1163.661499 1163.418945 1162.987427 1162.538818 1162.050171 1161.441162 1160.882446 1160.25708 1159.58252 1159.379517 1159.369751 1159.029175 1158.519409 1157.712769 1156.509155 1155.396118 1153.984497 1153.228638 1152.663452 1152.436768 1152.440796 1152.6427 1152.562012 1152.668457 1152.814819 1152.838379 1152.947144 1153.076416 1153.053955 1152.915161 1152.631348 1152.44812 1152.608765 1153.070679 1153.886719 1154.599854 1155.224854 1155.576782 1155.923706 1156.241211 1156.463135 1156.715088 1157.244873 1158.095215 1158.904663 1162.174316 1165.976685 1166.713501 1167.649048 1168.475464 1169.06543 1169.089233 1168.517212 1169.174805 1170.425781 1171.765015 1173.282471 1174.727661 1176.332397 1177.313477 1178.654419 1180.707031 1183.067017 1184.878296 1185.668701 1185.355713 1185.624878 1183.584229 1183.984741 1187.272949 1188.123535 1188.483887 1187.968018 1187.970825 1187.345093 1186.566284 1186.415283 1186.33728 1186.314941 1185.968628 1185.182617 1184.631104 1184.250244 1182.80481 1187.738525 1191.950439 1194.263916 1200.495117 1207.222412 1209.138306 1206.02002 1210.336426 1216.821899 1224.195435 1231.981079 1237.617798 1243.877197 1250.533203 1258.079468 1263.893066 1268.746704 1272.253906 1273.879761 1272.187012 1268.021362 1262.05481 1256.397949 1248.437134 1241.203003 1243.944946 1254.475342 1258.822998 1259.898315 1259.776733 1258.422363 1258.221313 1254.9375 1246.687012 1231.923584 1242.098633 1250.644043 1247.712646 1240.732056 1230.980225 1233.551025 1235.665771 1225.321289 1216.375122 1212.636719 1213.058838 1210.023438 1206.667114 1214.959473 1222.584473 1227.254272 1229.376587 1229.966431 1229.520874 1228.489502 1227.047852 1225.378784 1223.479614 1220.544556 1213.924805 1208.142456 1204.930664 1207.949829 1206.534668 1206.346313 1206.502808 1208.785278 1209.890625 1210.207642 1210.716797 1211.400269 1212.110962 1213.269653 1214.143433 1214.242676 1214.446167 1215.983032 1216.724854 1216.792969 1218.705811 1221.097778 1224.526611 1228.603149 1231.673828 1235.59375 1240.958618 1245.273193 1246.418091 1246.826294 1247.133179 1246.588867 1245.93689 1245.435181 1245.126099 1245.830688 1246.450073 1246.011841 1244.227783 1240.718506 1236.33667 1231.131104 1219.611694 1221.701782 1221.180176 1212.472778 1200.907837 1185.404297 1168.329346 1188.109131 1196.454712 1197.552246 1194.404175 1189.891968 1183.554077 1179.124756 1173.923462 1173.534546 1166.250366 1154.485352 1145.938965 1143.621582 1142.599976 1143.36084 1147.088379 1151.5979 1152.355103 1151.42041 1156.970093 1161.267334 1160.229492 1156.944092 1161.070435 1164.322388 1162.360229 1156.993408 1148.531006 1141.691772 1135.182617 1132.824951 1131.353027 1129.950562 1128.278076 1126.150024 1124.643921 1122.581177 1120.790527 1119.164551 1117.00415 1114.234375 1111.087891 1109.549194 1109.033447 1108.635986 1108.101929 1106.999146 1105.263306 1103.194092 1100.566772 1098.091309 1098.089233 1097.979004 1097.514038 1097.760132 1098.129883 1098.295044 1097.920532 1097.579834 1097.138062 1096.457275 1095.840332 1095.331665 1094.651367 1094.031128 1093.467529 -1280.406006 1280.244995 1277.38623 1279.599976 1286.363037 1293.623413 1298.035034 1301.817017 1302.98291 1299.844238 1292.462402 1283.511353 1280.007324 1276.56958 1277.908936 1282.275269 1283.277466 1282.479004 1286.8573 1292.955933 1296.253296 1293.392334 1282.139404 1277.285522 1273.187256 1267.439575 1257.241089 1246.183838 1242.538452 1240.845703 1231.280518 1216.035156 1196.179443 1181.561401 1186.341187 1189.242065 1184.486572 1170.806519 1159.202515 1151.557129 1146.117676 1145.140869 1145.493042 1146.098755 1146.349487 1146.989014 1147.256592 1146.550293 1146.265747 1152.4375 1174.576416 1185.854736 1198.181763 1211.954712 1209.752075 1202.466919 1195.302856 1196.672485 1199.152466 1198.890015 1199.232544 1198.726074 1196.305542 1195.589355 1196.61377 1196.217041 1205.906372 1215.046753 1221.540405 1221.321289 1221.026123 1220.614502 1220.01123 1219.738403 1219.529297 1219.286011 1219.075562 1218.972778 1218.885986 1218.72644 1218.471191 1218.552368 1218.719482 1219.119141 1219.063477 1218.631226 1218.016602 1217.816772 1217.772583 1217.530396 1217.144287 1216.624512 1216.028198 1215.17395 1213.986938 1212.859985 1211.61438 1210.477173 1209.083496 1208.008423 1206.172974 1202.775146 1198.860474 1198.632446 1199.640381 1202.965454 1207.651733 1209.489624 1208.817993 1201.957886 1210.265991 1219.369751 1220.812256 1222.461914 1224.339355 1225.984253 1227.362061 1228.308716 1228.506714 1228.111694 1228.233887 1228.336426 1226.602295 1221.562622 1215.493164 1222.523071 1228.166992 1232.53418 1232.492798 1231.944336 1231.764404 1231.368408 1229.747559 1228.711792 1228.173828 1228.335938 1229.352783 1230.551025 1231.800049 1232.998169 1233.252197 1233.64209 1234.456421 1234.555054 1233.702515 1231.776367 1229.996704 1228.15332 1226.481323 1222.370239 1220.331055 1219.158325 1218.985596 1219.194702 1219.085815 1218.627808 1217.682129 1216.467285 1215.070312 1213.907837 1212.841797 1211.948364 1211.205444 1210.970093 1212.160156 1215.289795 1218.364502 1222.437378 1226.512939 1230.203613 1236.116943 1245.14978 1252.714966 1257.549072 1260.211304 1262.419556 1262.261353 1259.905884 1250.588989 1237.217041 1226.371216 1209.233154 1212.891968 1216.80481 1219.354248 1220.282715 1219.928955 1219.380005 1219.202515 1219.981079 1220.106201 1219.765991 1219.330933 1219.349731 1219.145508 1218.69519 1218.289429 1218.144287 1218.223755 1218.122437 1217.889282 1217.583252 1217.184326 1216.935791 1216.838501 1216.596436 1216.249512 1215.930786 1215.459717 1214.909912 1214.179199 1213.249512 1212.259399 1210.937378 1209.872437 1209.478394 1209.419678 1209.37146 1209.071899 1208.731079 1207.878906 1207.158691 1206.420898 1205.506348 1204.992188 1204.642822 1204.332642 1204.206543 1204.02478 1203.730713 1203.178589 1202.659546 1202.182739 1201.827271 1201.653076 1201.2771 1200.922607 1200.379395 1199.835449 1199.420776 1198.978882 1198.432129 1197.764526 1197.018433 1196.25415 1195.500366 1194.136108 1192.992554 1195.332886 1196.093384 1196.740845 1197.430054 1197.981934 1198.617676 1199.234619 1199.834961 1200.347534 1200.806641 1201.154297 1201.478638 1201.888916 1202.262085 1202.589233 1202.947876 1203.452026 1204.036011 1204.832153 1206.314209 1207.408691 1207.857178 1208.24939 1208.357788 1208.49707 1208.499146 1208.447266 1208.488892 1208.458618 1208.255615 1208.390503 1207.559814 1202.94812 1197.366699 1195.162354 1194.916626 1192.998047 1190.588135 1188.060181 1187.140259 1186.904297 1186.578491 1185.888062 1184.417847 1181.075684 1174.453979 1170.416504 1174.999268 1179.805176 1182.471069 1185.885254 1187.490967 1188.095581 1188.174683 1188.109619 1188.113892 1187.838745 1187.0354 1186.143433 1185.21814 1184.677734 1184.115112 1182.782104 1181.739502 1181.215942 1181.653442 1181.748535 1181.533691 1181.447388 1181.422241 1181.842651 1183.454224 1184.044922 1184.083862 1182.599854 1176.983643 1172.317261 1169.476318 1168.656982 1171.266113 1170.189087 1169.54126 1170.960449 1171.924683 1171.916138 1171.426758 1170.809204 1170.015015 1169.32251 1169.005859 1169.035156 1169.29541 1169.380859 1169.377075 1168.959717 1168.480713 1167.983521 1167.467896 1167.085327 1166.667603 1166.375977 1166.003906 1165.5271 1165.039307 1164.491821 1164.047607 1163.669189 1163.311768 1162.847656 1162.323975 1161.737183 1161.136841 1160.55896 1160.08374 1159.646484 1159.379395 1158.857056 1157.991089 1157.078613 1155.944946 1154.739258 1153.638916 1153.449219 1153.369141 1153.255981 1153.367798 1153.384155 1153.404053 1153.550049 1153.820435 1154.006104 1154.159058 1154.258545 1154.398926 1154.242798 1153.954346 1153.640015 1153.60791 1153.790771 1154.296021 1154.772095 1155.136353 1155.231323 1155.468384 1155.719482 1155.911255 1156.194946 1156.651611 1157.118408 1158.782593 1158.920166 1159.584229 1161.391968 1164.076172 1165.626831 1166.51062 1166.853638 1167.181885 1167.827026 1168.963013 1169.523804 1170.125732 1170.483765 1171.162109 1172.278198 1173.728149 1175.858643 1178.038818 1179.777954 1180.608887 1181.045654 1181.171143 1181.124756 1181.747803 1183.222656 1184.306152 1184.824463 1184.897949 1184.846191 1183.894409 1182.861206 1183.014404 1182.645386 1182.681885 1182.5448 1180.920776 1182.155151 1183.221436 1185.467163 1189.599731 1194.213623 1199.815674 1206.495483 1214.025024 1220.586792 1217.666382 1216.189087 1221.11145 1226.95105 1230.696655 1238.212402 1243.31958 1253.431274 1263.48877 1271.13562 1278.190186 1282.605957 1281.044922 1276.195801 1271.244629 1264.944702 1258.852051 1251.243286 1245.592285 1247.895996 1259.224609 1263.610352 1264.890259 1264.546997 1264.174316 1263.693237 1256.941772 1248.061035 1238.170654 1250.005005 1256.309937 1255.803345 1248.650269 1238.391968 1243.078125 1246.688843 1232.426025 1230.015015 1227.309692 1224.232056 1219.280396 1207.032959 1215.680786 1224.942261 1230.618896 1233.626465 1234.500366 1234.03125 1232.475098 1230.235596 1229.555908 1228.046875 1223.821655 1218.318115 1211.297852 1205.726074 1207.187866 1209.780518 1213.568604 1214.012817 1213.866699 1214.629395 1216.354614 1219.082642 1220.227905 1219.12915 1215.871704 1215.02771 1215.842896 1217.163452 1220.276611 1220.536011 1219.653442 1217.988159 1220.399658 1222.472168 1225.268433 1228.543091 1231.079956 1234.70459 1239.218872 1242.345337 1244.72998 1245.670288 1245.225098 1244.762817 1243.840698 1243.890747 1245.437378 1247.617554 1247.669434 1246.092773 1242.645996 1237.213501 1233.409912 1234.067749 1230.021729 1224.051636 1215.623901 1202.306152 1186.611816 1174.145508 1189.75293 1196.846191 1198.897705 1197.280029 1192.731812 1184.868774 1180.945923 1178.978027 1176.434814 1172.531128 1163.889526 1150.971191 1143.992676 1143.380005 1144.994263 1151.547119 1158.526367 1161.623047 1158.903442 1162.05188 1170.07019 1168.6427 1166.948608 1168.183472 1169.314453 1164.138672 1159.774048 1150.428711 1142.761963 1135.411621 1133.049805 1131.885132 1131.150635 1130.191895 1129.271973 1128.343506 1125.628418 1122.629395 1120.5354 1118.399902 1115.936401 1113.56189 1111.973755 1110.156128 1109.569946 1109.398193 1107.8396 1105.994873 1104.023804 1101.869995 1100.116699 1099.266235 1098.756104 1097.919922 1098.094727 1098.721802 1098.853882 1098.575806 1098.165405 1097.842651 1097.285278 1096.539062 1095.899292 1095.272949 1094.705566 1094.158325 -1281.300171 1283.549072 1282.293823 1279.524658 1286.841187 1294.981201 1300.776978 1305.828613 1307.330811 1306.739502 1300.688232 1292.260986 1285.149536 1279.921509 1281.272583 1286.802246 1289.132202 1289.747437 1294.426514 1298.621826 1300.858154 1296.80188 1286.677856 1278.671265 1273.353516 1267.114746 1260.917114 1258.043457 1251.326416 1242.405396 1220.921265 1203.123047 1191.683716 1197.37207 1200.953125 1197.636475 1187.11853 1172.185425 1163.64978 1155.533447 1147.06897 1145.915771 1145.833862 1146.932983 1147.187744 1147.838013 1147.735962 1146.578369 1146.349731 1145.559326 1163.420776 1174.101807 1186.819946 1205.40979 1209.782593 1204.685303 1196.205688 1198.722656 1203.800659 1206.641113 1206.285522 1205.23877 1204.769531 1204.114014 1200.520142 1197.711426 1202.498901 1210.963379 1218.755249 1221.327881 1221.297607 1221.018677 1220.770264 1220.546997 1220.54248 1220.18042 1220.024536 1220.183472 1219.965942 1219.817871 1219.560547 1219.618286 1220.011597 1220.164185 1220.129028 1219.900635 1219.241455 1218.722534 1218.447021 1218.035645 1217.549316 1217.133911 1216.529053 1215.782471 1214.706177 1213.309448 1211.848633 1210.506714 1209.078369 1207.577881 1205.327026 1202.262085 1199.344116 1200.250854 1202.612549 1204.750732 1208.071899 1210.207031 1209.377075 1203.812622 1211.718628 1221.186401 1222.292725 1223.771729 1225.6875 1228.072144 1230.164062 1230.809937 1230.968994 1230.577393 1229.996582 1230.829468 1230.969238 1222.696289 1215.570679 1221.279541 1225.944214 1230.855103 1233.245972 1233.422974 1233.103516 1232.480225 1231.359009 1229.93396 1229.544067 1229.868896 1231.3302 1232.271484 1233.925293 1235.336548 1235.856201 1236.037476 1236.052124 1235.628906 1234.41272 1232.425293 1230.684204 1229.189697 1227.777832 1224.017822 1221.718506 1220.334595 1220.651245 1220.91687 1220.686157 1219.966919 1218.802002 1217.575317 1216.075684 1214.863403 1213.75708 1213.00293 1212.401001 1212.031128 1212.324707 1215.095459 1218.334473 1222.511963 1228.235596 1232.384766 1237.526855 1246.706177 1256.803467 1259.100342 1260.701416 1261.855103 1261.342407 1260.0448 1253.52417 1238.622437 1226.313232 1210.394043 1214.788818 1219.666626 1220.372559 1220.796875 1220.695923 1220.165894 1219.896973 1220.420776 1220.609131 1220.503174 1220.211426 1220.257446 1220.047485 1219.45459 1218.918091 1219.010986 1219.188232 1219.172485 1218.638062 1218.12561 1217.799683 1217.661133 1217.532715 1217.466797 1217.071411 1216.721558 1216.207153 1215.588989 1214.87439 1213.908569 1212.954956 1211.931396 1211.040039 1210.484131 1210.121216 1209.776245 1209.35144 1208.652954 1207.895142 1207.196533 1206.239624 1205.672363 1205.226196 1204.928955 1204.724609 1204.70813 1204.646362 1204.496948 1204.080933 1203.660278 1203.222412 1202.972168 1202.565674 1202.102051 1201.68042 1201.091675 1200.44519 1199.828003 1199.437988 1198.894531 1198.284668 1197.515015 1196.831177 1196.252686 1195.598755 1193.569946 1194.552124 1195.740112 1196.494629 1197.189087 1197.939209 1198.518555 1199.222412 1199.780884 1200.355225 1200.833862 1201.297241 1201.962646 1202.579956 1203.117676 1203.620239 1204.07959 1204.34668 1204.689331 1205.224121 1205.940552 1206.988892 1207.632568 1207.815063 1208.271484 1208.497437 1208.636963 1208.826294 1208.989014 1208.966187 1208.866821 1208.729004 1207.878662 1204.137939 1197.353638 1196.527466 1196.902344 1196.386719 1194.728638 1191.999634 1190.044678 1188.810059 1187.922241 1186.788452 1185.335205 1183.204224 1175.847412 1171.723633 1176.535522 1182.406494 1185.064209 1187.195435 1188.412964 1189.164185 1189.436401 1189.406372 1189.484375 1189.439697 1188.077026 1186.982422 1185.903442 1184.849487 1183.551392 1182.766357 1182.84729 1183.31897 1183.366577 1183.291748 1183.171631 1182.952026 1182.737427 1182.785889 1183.873657 1184.282227 1184.166626 1181.190308 1175.776245 1171.181396 1168.866089 1171.293945 1171.246338 1170.360962 1170.954956 1171.760864 1172.267944 1172.152954 1171.809448 1171.126221 1170.537354 1169.743408 1169.592285 1169.961914 1170.265259 1170.427368 1170.443481 1169.982544 1169.271973 1168.609009 1168.135376 1167.738037 1167.343628 1166.902222 1166.432373 1165.928711 1165.342529 1164.798828 1164.279663 1163.879028 1163.53125 1163.075928 1162.470703 1161.911621 1161.236084 1160.739624 1160.274536 1159.805176 1159.310913 1158.580933 1157.615845 1156.70105 1155.650635 1154.631958 1154.051514 1154.140503 1154.161743 1154.296143 1154.412598 1154.361572 1154.345825 1154.571899 1154.736328 1155.147095 1155.405029 1155.593384 1155.743286 1155.610718 1155.223022 1154.738037 1154.447266 1154.3927 1154.5979 1154.914185 1155.101807 1155.147705 1155.28772 1155.492065 1155.695068 1156.06958 1156.490723 1156.908447 1157.785278 1158.266846 1158.688721 1159.02063 1161.586548 1163.084717 1164.093506 1165.026611 1165.766602 1166.548706 1167.407715 1168.007568 1168.564331 1169.137451 1169.502563 1169.895386 1170.311646 1171.45874 1173.956665 1175.805298 1177.405273 1178.175049 1178.631104 1179.200806 1180.153442 1180.972534 1181.571533 1182.047729 1182.247192 1182.160278 1181.690918 1181.103516 1180.864502 1180.584351 1180.280396 1179.808105 1181.682129 1184.977173 1187.320312 1188.962524 1192.456543 1197.858032 1205.413818 1213.279785 1220.292847 1226.797363 1226.814941 1223.716309 1228.007446 1234.234497 1239.885864 1245.681274 1251.081421 1260.31604 1270.810425 1277.93103 1283.747925 1286.258423 1284.339844 1278.842407 1272.609863 1266.703247 1261.961548 1257.654419 1255.688721 1254.559326 1262.640137 1268.726562 1270.443481 1269.428711 1269.211304 1268.985107 1259.370605 1253.611816 1244.480835 1258.898804 1261.039062 1260.447632 1255.428711 1248.392456 1248.542725 1253.985718 1249.046143 1247.371338 1243.404419 1233.02832 1224.841064 1216.187622 1218.700928 1229.800537 1235.663574 1238.981689 1239.947754 1239.157227 1236.94165 1234.649292 1234.17334 1232.79541 1228.048584 1220.651978 1212.874268 1206.496094 1214.341919 1220.791748 1221.896729 1222.415039 1222.927856 1223.625122 1224.660278 1225.500366 1225.223267 1223.656738 1220.957153 1219.165771 1219.85498 1218.629639 1221.300537 1223.221802 1223.085938 1220.381958 1218.912354 1220.153076 1221.916382 1224.6521 1227.359741 1229.993652 1231.844116 1234.460205 1236.640625 1237.327637 1237.89209 1240.608521 1242.728271 1244.995605 1247.81665 1249.818848 1249.848877 1248.098145 1245.616089 1244.596069 1240.97522 1236.639648 1231.542969 1223.999756 1215.760742 1201.59021 1185.649292 1180.343384 1191.570068 1198.963013 1201.134644 1201.441895 1196.471313 1190.543945 1185.774292 1183.424194 1180.975342 1175.732422 1167.953369 1152.075806 1144.11853 1144.558105 1145.691528 1154.442627 1165.054443 1171.336426 1169.565796 1169.971313 1178.185669 1177.480957 1174.116455 1173.449463 1168.904541 1159.716675 1154.098389 1145.772095 1138.319336 1133.680176 1133.287842 1132.639038 1133.567139 1133.363892 1134.104004 1133.690186 1130.465576 1125.726562 1122.138794 1120.614868 1118.59314 1116.728638 1114.748901 1112.707764 1111.665771 1110.037842 1108.7771 1106.711548 1104.856812 1103.11731 1101.704346 1100.518311 1099.683594 1099.288208 1099.205444 1099.382935 1099.452759 1099.236938 1098.767212 1098.245483 1097.606201 1097.019775 1096.351685 1095.864014 1095.340332 1094.897827 -1275.089233 1283.789185 1292.704468 1290.336426 1289.762207 1294.563232 1300.849731 1305.720093 1308.518799 1308.928955 1306.44043 1296.723633 1289.572388 1286.35498 1286.584473 1293.184692 1295.115234 1294.966187 1298.607422 1304.006104 1306.122925 1302.629028 1291.117188 1280.88855 1276.767944 1272.00415 1266.99353 1257.69519 1248.713135 1231.363281 1210.822021 1208.615479 1214.854492 1216.767578 1212.318115 1202.890747 1187.876465 1175.836304 1167.867065 1158.448364 1147.594238 1146.239868 1146.260986 1147.751099 1148.508057 1148.681152 1148.437622 1148.028442 1148.394653 1149.460693 1154.828247 1162.962769 1181.54834 1198.537109 1210.0802 1206.936768 1202.160522 1202.877197 1208.119995 1210.953369 1212.389648 1212.83606 1212.466309 1209.928345 1204.923584 1199.029053 1202.806519 1207.975464 1214.073242 1218.59729 1220.713501 1220.897827 1220.911987 1221.050537 1221.432129 1221.693481 1221.736572 1221.647461 1221.20813 1221.000244 1220.746948 1220.644775 1220.71521 1220.866455 1220.883057 1220.653809 1220.193481 1219.49939 1219.003662 1218.444458 1217.970459 1217.616089 1217.167114 1216.493042 1215.359985 1213.978638 1212.325439 1210.675049 1209.334473 1207.856812 1205.183105 1202.10498 1199.786987 1203.101074 1207.290649 1207.43042 1208.561279 1211.051514 1211.125854 1207.567261 1209.016479 1219.1875 1222.570801 1224.139526 1226.220093 1229.544434 1232.314087 1232.840454 1232.980225 1232.799927 1231.847412 1232.420654 1233.10791 1226.657593 1221.205444 1216.940308 1222.541504 1231.030518 1233.842651 1234.012207 1233.721313 1232.990845 1231.619263 1230.835327 1230.873047 1231.277344 1233.155762 1235.373901 1237.564575 1238.96106 1239.193237 1238.643433 1237.889526 1236.828735 1235.394409 1232.941772 1231.023315 1230.077393 1229.174805 1225.888794 1224.01709 1222.824463 1222.646484 1222.533325 1222.045776 1221.043701 1219.690796 1218.28418 1216.937378 1215.821899 1214.787598 1213.867432 1213.361938 1212.878906 1212.937256 1215.258179 1218.340942 1222.808105 1229.73999 1235.937744 1243.118164 1250.910156 1257.294312 1259.521973 1260.848022 1261.726807 1261.587524 1259.984863 1254.140137 1238.576538 1224.814941 1211.557983 1216.499756 1220.358765 1221.16748 1221.356812 1221.320068 1221.139771 1220.884644 1221.02417 1221.163086 1221.10791 1220.96875 1220.78418 1220.460693 1220.026489 1219.543335 1219.796387 1220.074829 1219.838501 1219.254272 1218.630859 1218.296631 1218.351074 1218.340088 1218.387573 1217.956787 1217.488892 1216.896362 1216.228149 1215.494263 1214.551636 1213.675659 1212.799683 1212.00769 1211.253174 1210.753906 1210.098999 1209.342407 1208.482544 1207.586914 1206.847778 1206.293091 1205.835938 1205.451416 1205.25769 1205.134155 1205.180176 1205.328857 1205.372559 1205.098511 1204.706543 1204.363159 1203.875366 1203.376099 1202.869751 1202.201294 1201.660645 1201.134277 1200.487549 1199.934204 1199.376099 1198.6875 1198.128296 1197.48645 1196.887573 1196.42041 1195.535767 1193.907715 1195.267822 1196.014038 1196.886841 1197.676025 1198.377563 1199.152466 1199.789795 1200.382812 1200.95752 1201.47229 1202.206543 1203.120117 1203.81665 1204.548828 1205.083618 1205.220825 1205.225342 1205.571167 1206.028198 1206.409546 1206.934814 1207.357666 1207.62854 1208.184204 1208.730591 1209.123901 1209.384888 1209.372681 1209.127197 1208.826782 1207.948975 1204.61853 1202.259033 1201.331299 1200.571167 1198.363525 1195.828735 1193.514893 1191.752319 1190.370972 1188.939331 1187.569214 1185.797119 1183.45874 1177.306885 1172.517334 1177.407959 1183.662598 1186.721191 1188.244873 1189.466553 1190.310791 1190.653687 1190.581299 1190.787964 1190.526123 1189.232544 1187.922241 1186.101685 1183.452881 1183.196655 1183.337769 1183.39624 1183.780029 1184.135376 1184.127808 1184.241821 1184.098022 1183.931763 1184.001831 1184.209961 1184.018433 1182.002319 1178.512939 1174.329834 1170.24231 1171.12915 1171.488037 1170.948975 1171.161499 1171.769897 1172.411377 1172.514404 1172.343628 1172.085938 1171.428589 1170.724121 1170.10791 1170.273682 1170.784302 1171.100464 1171.133423 1171.095825 1170.733765 1169.80127 1169.255005 1168.852661 1168.312378 1167.791504 1167.2948 1166.809082 1166.176025 1165.599854 1165.155396 1164.625 1164.167725 1163.707275 1163.178467 1162.611694 1162.033691 1161.501221 1160.84314 1160.357544 1159.80127 1159.18811 1158.470947 1157.561768 1156.781372 1155.959717 1155.104126 1154.538696 1155.07251 1155.373535 1155.488037 1155.540894 1155.368652 1155.403076 1155.523804 1155.853516 1156.305786 1156.626587 1156.896484 1157.190918 1157.131104 1156.540649 1155.759644 1155.204346 1155.036377 1155.026489 1155.078369 1155.122314 1155.223389 1155.365601 1155.513672 1155.792358 1156.028809 1156.393311 1156.982056 1157.494385 1158.39563 1158.981567 1160.151733 1160.5802 1160.946289 1162.354492 1163.420044 1164.292725 1165.224854 1166.115967 1166.734131 1167.213501 1167.704346 1168.281128 1168.808838 1169.321655 1170.204834 1171.450806 1173.304688 1174.462524 1175.659302 1176.622681 1177.376221 1178.142578 1178.838379 1179.325195 1179.732788 1180.145142 1180.069214 1179.706421 1179.341064 1179.052124 1178.889648 1178.908447 1179.253174 1183.644531 1187.344849 1191.502197 1192.671997 1192.960571 1197.97998 1208.016724 1217.119263 1226.480469 1233.506104 1234.776245 1234.090942 1235.010376 1242.015137 1248.366943 1254.203125 1261.071289 1269.529907 1277.217651 1284.702515 1291.796265 1291.70752 1287.276245 1281.089233 1274.95105 1269.654053 1267.825439 1264.687744 1262.055786 1259.737793 1265.749023 1272.921387 1274.990234 1275.369629 1274.967163 1273.772461 1265.463745 1259.934326 1254.574585 1262.19104 1265.763306 1265.91748 1262.910278 1257.496216 1257.273193 1262.15625 1262.584961 1261.220337 1254.869385 1241.057861 1229.337158 1222.542969 1218.892334 1235.706177 1241.695312 1244.816528 1245.726318 1244.266968 1241.852539 1240.300415 1238.785645 1236.058228 1232.545654 1222.328613 1213.961304 1208.001343 1221.698608 1226.794556 1228.991821 1229.623047 1229.366211 1230.904907 1232.724609 1232.312866 1230.095459 1227.444702 1224.814819 1223.040894 1222.477539 1220.114746 1221.408203 1226.475098 1230.216797 1227.037598 1223.436768 1222.830811 1222.947021 1222.233398 1223.749146 1226.411133 1228.557861 1229.84082 1230.559326 1230.700195 1232.718384 1239.723145 1244.273804 1248.049194 1252.001343 1252.935547 1252.4552 1251.30188 1249.460205 1247.563599 1245.048218 1238.078369 1229.686646 1221.433594 1212.714478 1199.588135 1183.335327 1182.128052 1190.829102 1197.448486 1203.636353 1206.472778 1204.774414 1199.719604 1198.2771 1193.21228 1184.793213 1176.536865 1167.52002 1150.086182 1144.816772 1148.333984 1150.391113 1155.265991 1166.608765 1174.14502 1176.911743 1178.215698 1183.981689 1183.450317 1178.484863 1174.415527 1164.841064 1151.190308 1144.863525 1144.404663 1141.319824 1136.700195 1134.464355 1133.774292 1136.938477 1138.360229 1140.612305 1140.447876 1135.564575 1130.916992 1127.275024 1124.477661 1122.25061 1119.838745 1118.706543 1116.287964 1112.916016 1110.125366 1108.875732 1107.161011 1105.613647 1104.172119 1102.89502 1101.742676 1101.016479 1100.484009 1100.272461 1100.211548 1100.055786 1099.663818 1099.132935 1098.239868 1097.602417 1097.167114 1096.807007 1096.480591 1096.101807 1095.675903 -1269.260986 1278.395752 1287.766479 1293.490112 1292.394165 1293.646729 1300.878784 1304.181885 1309.728271 1311.282227 1307.572266 1301.457153 1296.552002 1293.572754 1291.355225 1295.233887 1298.853882 1303.527588 1306.258423 1307.431396 1307.278076 1302.131958 1293.62207 1287.712769 1282.727051 1274.881104 1267.745728 1255.452393 1240.338745 1224.355713 1219.815918 1225.083618 1233.368408 1224.80896 1215.16626 1207.977539 1197.211548 1184.473755 1172.680542 1157.383423 1147.965332 1146.469849 1146.786621 1148.208984 1149.05835 1149.505493 1149.840332 1150.026611 1150.734009 1152.578247 1155.031128 1158.392944 1177.521729 1192.312988 1203.610229 1205.215698 1204.059692 1205.062866 1208.098267 1213.495361 1217.357422 1220.712036 1219.106201 1212.499878 1204.676147 1202.55188 1207.893433 1206.209595 1209.95459 1214.391724 1217.759644 1219.453369 1220.014038 1220.663208 1222.374878 1223.049805 1223.17981 1222.901611 1222.489136 1221.858887 1221.538208 1221.354492 1221.403564 1221.545776 1221.462769 1221.273804 1220.941284 1220.128418 1219.640381 1218.91687 1218.453247 1218.136108 1217.905518 1217.289795 1216.168457 1214.600586 1212.608521 1210.710327 1209.191406 1207.662476 1205.040894 1202.177734 1200.558472 1206.27002 1209.581909 1210.012939 1211.034424 1212.519409 1212.985352 1211.112305 1206.618164 1211.426392 1218.705811 1222.112427 1224.361572 1228.884766 1233.025391 1233.831299 1234.15918 1234.196899 1233.726318 1233.263672 1231.635376 1231.664917 1233.937012 1227.704102 1218.98584 1230.143921 1234.537476 1234.414062 1234.135864 1233.977295 1232.545532 1232.639771 1232.776123 1233.733154 1235.862793 1238.912231 1242.533081 1243.519287 1242.478149 1240.999023 1239.658203 1238.436646 1236.67627 1234.287476 1232.261963 1231.463257 1230.69458 1228.038086 1226.376587 1225.073853 1224.427856 1223.949219 1223.05481 1221.840088 1220.135498 1218.813232 1217.498901 1216.610229 1215.724854 1214.875732 1214.092407 1213.675781 1213.805054 1215.651123 1218.011353 1222.592041 1230.029785 1236.37561 1242.74646 1251.95459 1257.400513 1259.648804 1260.967896 1261.693359 1261.696289 1260.436035 1253.739868 1236.916748 1222.505737 1212.532349 1217.811768 1221.180176 1221.679077 1221.97998 1222.011475 1222.026367 1221.821045 1221.893311 1221.809692 1221.599121 1221.425415 1221.134766 1220.977661 1220.641113 1220.445435 1220.619019 1220.701172 1220.292603 1219.605713 1219.021362 1218.998901 1219.166992 1219.328491 1219.263184 1218.811646 1218.137939 1217.529907 1216.818848 1216.062866 1215.309448 1214.674072 1213.786621 1212.811768 1211.924438 1211.204346 1210.386597 1209.410522 1208.389404 1207.43042 1206.709717 1206.358521 1206.048584 1205.713745 1205.62561 1205.593872 1205.737305 1205.958008 1206.27417 1206.259644 1205.908691 1205.311646 1204.635986 1204.019531 1203.391479 1202.803223 1202.377808 1201.783325 1201.187012 1200.656128 1199.994385 1199.393555 1198.797852 1198.151855 1197.56958 1196.925171 1195.947876 1194.670532 1194.990234 1195.897217 1196.714966 1197.650391 1198.500488 1199.300781 1200.006714 1200.599121 1201.226929 1201.852539 1202.553467 1203.363647 1204.265137 1205.142822 1205.92981 1206.521606 1206.289429 1205.893433 1206.154541 1206.397217 1206.635498 1207.004639 1207.439453 1207.809448 1208.658447 1209.249634 1209.643921 1209.748291 1209.490356 1208.807495 1207.511108 1205.620728 1206.07605 1206.19043 1204.089966 1199.994019 1196.430786 1194.115601 1192.7677 1191.561035 1189.948364 1188.070679 1185.753174 1182.934814 1178.469849 1173.455566 1178.187622 1184.151245 1187.515015 1189.224243 1190.64209 1191.605103 1192.097778 1191.955688 1191.893188 1191.489624 1190.228271 1188.841919 1186.59314 1183.567261 1184.141846 1184.097656 1184.291504 1184.633911 1184.848877 1185.094116 1185.256958 1185.224365 1185.002197 1184.858643 1183.949585 1181.625854 1179.071533 1175.777222 1172.857178 1170.278809 1171.536011 1171.830688 1171.30603 1172.002075 1172.506592 1172.670166 1172.655151 1172.469604 1172.114746 1171.614136 1170.77356 1170.538818 1170.988647 1171.500977 1171.699463 1171.609375 1171.314819 1170.805176 1170.082275 1169.770508 1169.351074 1168.831421 1168.236572 1167.567627 1166.990356 1166.494263 1165.947998 1165.540161 1165.02063 1164.487427 1164.015503 1163.426392 1162.898804 1162.230347 1161.63855 1160.829346 1160.221802 1159.5802 1158.864258 1158.192261 1157.52124 1156.817871 1155.813599 1155.056641 1155.755371 1156.882568 1157.047363 1156.781982 1156.689331 1156.269165 1156.287842 1156.580566 1157.100098 1157.49231 1157.601196 1158.068726 1158.440186 1158.544189 1157.84375 1156.688721 1155.988647 1155.598389 1155.535645 1155.505737 1155.503052 1155.588379 1155.6073 1155.811523 1155.935425 1155.960083 1156.447876 1156.919067 1156.799683 1157.961182 1158.30542 1158.535522 1158.433228 1159.2323 1160.90686 1162.113037 1162.95166 1163.824585 1164.735352 1165.52771 1165.961914 1166.624512 1167.21521 1167.785767 1168.464478 1169.245483 1170.181885 1171.259521 1172.675415 1173.805908 1174.984497 1175.718018 1176.316772 1176.800781 1177.281982 1177.563232 1177.869995 1178.00647 1177.876221 1177.760742 1177.781128 1177.658936 1177.935791 1183.619751 1187.988281 1192.749634 1196.407837 1198.620972 1198.513062 1199.511963 1207.838867 1217.840942 1227.874634 1234.631348 1238.96167 1241.654785 1242.759521 1248.466064 1255.25415 1261.398193 1267.489258 1276.803467 1285.146362 1293.693115 1297.78833 1296.43042 1291.860107 1284.414551 1279.419556 1275.6073 1273.173218 1271.11853 1268.580078 1266.07959 1269.05835 1277.107666 1280.55249 1280.923706 1280.797974 1279.170776 1270.830078 1263.969604 1263.797119 1269.165405 1270.98938 1271.242188 1270.389893 1266.470581 1267.720825 1270.037842 1270.140259 1267.93103 1259.839966 1249.826172 1240.432373 1230.225708 1229.060913 1242.735962 1248.145386 1249.968628 1250.044922 1248.439575 1246.438721 1245.235596 1243.192261 1239.199097 1234.017212 1223.901245 1215.517456 1211.659424 1225.76709 1233.009399 1235.630371 1237.76416 1238.819092 1240.05542 1240.659302 1238.87439 1235.090332 1230.86377 1228.614014 1226.746948 1225.613403 1224.57959 1225.563599 1228.861206 1233.020996 1232.851685 1231.418579 1230.915283 1230.145508 1228.344849 1225.628052 1224.367798 1226.710571 1229.406372 1230.411255 1231.446167 1236.320068 1242.899536 1247.744995 1253.461426 1256.29187 1256.029419 1255.315674 1254.356567 1252.520386 1249.66626 1246.036865 1235.767212 1226.184082 1217.22583 1208.296997 1200.813965 1189.219238 1182.976929 1194.38916 1200.413818 1205.308472 1210.849976 1214.342285 1212.250854 1202.432861 1192.52124 1183.498047 1174.484253 1161.286499 1146.71814 1147.948975 1153.622925 1158.212036 1158.078979 1162.543701 1175.058838 1182.657959 1184.27124 1185.472534 1183.701172 1175.262939 1169.258667 1157.510376 1144.887085 1149.552124 1152.202148 1149.006958 1144.52002 1138.015015 1136.186401 1140.235962 1143.685303 1147.858643 1149.106445 1142.696411 1136.338623 1132.651001 1129.030396 1125.462402 1123.214966 1122.94397 1119.630859 1115.050659 1110.533325 1108.727417 1107.533936 1106.354248 1105.129272 1103.961792 1102.973267 1102.139771 1101.546631 1101.158325 1100.952881 1100.683228 1100.217407 1099.472412 1098.512451 1097.989014 1097.944336 1097.640259 1097.324341 1097.075684 1096.751831 -1265.463867 1273.826416 1280.416016 1290.331665 1295.520142 1298.726685 1303.598145 1308.528931 1312.940308 1315.433716 1313.590698 1308.230957 1306.035645 1302.056763 1296.312256 1298.929077 1301.054565 1305.672485 1314.008057 1305.552856 1303.012329 1299.696777 1296.391602 1294.537231 1281.107788 1273.122437 1262.893066 1249.666016 1232.831665 1229.896484 1234.46814 1225.406372 1219.780518 1214.85437 1210.072876 1205.497192 1195.933838 1186.253174 1167.763916 1153.1427 1146.74353 1146.460693 1147.701294 1148.791992 1149.654053 1150.507324 1151.267456 1151.947021 1152.800903 1154.321411 1155.809814 1156.639404 1168.346069 1182.134888 1195.318115 1200.863403 1204.899048 1208.32666 1210.346558 1216.337891 1220.739136 1222.506348 1221.197388 1213.519653 1204.053589 1206.710815 1215.99585 1216.776855 1211.063843 1216.518799 1218.248413 1219.238281 1219.699951 1220.26355 1224.006226 1224.653198 1224.726929 1224.22583 1223.510254 1222.845459 1222.39563 1222.224609 1222.154907 1222.278198 1222.214478 1221.972778 1221.565063 1220.941406 1220.225098 1219.528687 1219.039307 1218.976562 1218.724976 1218.376587 1217.19043 1215.226196 1212.990845 1210.577271 1208.511475 1206.641113 1204.799438 1202.487549 1201.568481 1207.485352 1209.758179 1211.620361 1213.249268 1214.543457 1215.430054 1215.375366 1215.668335 1217.100464 1216.205444 1214.962158 1218.373779 1222.930786 1231.422974 1234.359375 1235.108154 1235.148804 1234.988037 1234.124634 1231.947876 1232.241455 1233.619507 1232.708252 1219.993774 1226.380249 1233.09436 1234.027222 1234.522095 1234.967407 1235.399536 1236.090698 1236.446411 1237.344971 1239.381348 1242.537842 1244.741577 1244.945801 1244.375366 1242.698608 1241.100098 1240.209351 1238.865234 1236.884644 1234.839111 1233.766602 1232.692871 1230.131714 1228.512207 1226.996948 1226.100464 1225.338501 1224.247192 1222.588989 1220.614014 1219.166992 1218.290649 1217.414429 1216.482788 1215.748535 1214.842651 1214.35022 1214.76062 1216.182007 1217.932495 1221.685669 1229.607056 1235.907471 1242.217041 1250.041626 1256.419434 1259.655762 1260.709473 1261.390625 1261.666382 1258.293701 1247.554932 1232.144775 1219.152954 1213.214355 1220.376831 1221.621338 1222.236206 1222.524292 1222.741699 1222.73938 1222.635864 1222.525391 1222.360107 1222.137695 1221.873291 1221.729126 1221.594604 1221.664429 1221.452271 1221.376709 1221.218506 1220.789917 1219.90918 1219.706787 1219.885254 1220.076904 1220.223755 1220.09082 1219.479248 1218.561157 1217.995605 1217.417603 1216.785889 1216.221313 1215.476562 1214.612671 1213.63855 1212.743774 1211.669678 1210.648071 1209.506104 1208.137817 1207.327515 1206.875732 1206.510742 1206.236816 1206.033447 1205.977905 1206.02002 1206.264404 1206.599976 1207.422485 1207.397827 1207.02771 1206.092529 1205.215332 1204.504028 1203.963989 1203.474854 1202.978271 1202.511841 1202.040771 1201.407104 1200.919678 1200.248413 1199.722046 1199.020142 1198.294189 1197.302612 1196.24353 1195.225586 1194.915894 1195.721802 1196.665649 1197.831421 1198.8396 1199.671143 1200.464355 1201.069824 1201.640015 1202.28772 1202.915649 1203.730835 1204.552856 1205.626953 1206.669556 1207.349243 1207.675903 1206.738525 1206.558105 1206.578369 1206.773438 1207.050049 1207.560181 1207.684814 1208.446533 1209.276367 1209.832764 1210.147461 1209.964111 1209.253052 1207.579224 1207.505249 1207.762817 1207.965942 1207.266602 1203.086914 1198.718384 1196.087402 1194.377686 1192.818115 1191.029541 1188.914551 1186.666504 1184.498047 1182.236816 1174.554443 1178.236328 1183.470093 1187.532959 1189.822632 1191.764648 1193.022583 1193.721924 1193.522827 1192.781738 1192.163818 1191.084106 1189.816772 1188.108276 1186.755249 1185.692993 1185.512573 1185.460938 1185.561401 1185.743042 1185.99292 1186.067505 1185.972534 1185.791382 1185.128662 1182.359375 1178.854614 1176.298828 1173.305664 1170.877686 1171.063843 1171.944092 1172.253418 1172.320679 1172.618408 1172.787354 1172.901611 1172.755737 1172.414062 1172.03186 1171.432983 1170.772217 1171.128418 1171.757202 1172.089722 1172.009033 1171.821289 1170.963623 1170.769897 1170.608398 1170.296875 1169.896606 1169.220825 1168.446167 1167.851196 1167.295166 1166.813843 1166.4823 1166.060791 1165.505249 1164.941895 1164.424805 1163.895264 1163.287964 1162.62085 1161.985718 1161.018555 1159.744385 1158.78418 1158.613159 1158.663086 1158.567749 1156.564087 1155.859009 1157.579468 1158.669189 1158.67981 1158.47522 1158.130615 1157.736694 1157.177979 1157.03186 1157.505249 1158.351074 1158.765503 1158.516113 1158.906006 1159.264282 1159.138184 1158.702759 1157.535767 1156.728027 1156.250977 1156.033325 1156.026367 1155.953247 1156.066406 1156.139648 1156.25 1156.330566 1156.276611 1155.940918 1156.818481 1156.839478 1157.069214 1157.446899 1157.667725 1157.874878 1158.849854 1160.061646 1160.925537 1161.595703 1162.534302 1163.471802 1164.262817 1165.0177 1165.709229 1166.280273 1166.889404 1167.644653 1168.509155 1169.185181 1170.147949 1171.377319 1172.629883 1173.544922 1174.280762 1174.812866 1175.075195 1175.325317 1175.673218 1175.940186 1176.198853 1176.381348 1176.558472 1176.595337 1176.866455 1181.133179 1186.61499 1192.199951 1197.691406 1204.105835 1208.178101 1209.841064 1208.522583 1206.496094 1215.088501 1225.486816 1234.42981 1242.055054 1247.102051 1252.033691 1258.26709 1262.932495 1268.981934 1277.792358 1286.381348 1296.761108 1304.409302 1303.77478 1301.199341 1295.707397 1290.221802 1284.412842 1280.205933 1277.951782 1276.573364 1273.996948 1271.44165 1272.674316 1281.645142 1283.747803 1284.552979 1284.702393 1283.59375 1278.602051 1269.163818 1269.622437 1273.657593 1276.040649 1276.698486 1275.884033 1273.371216 1273.418579 1274.42688 1274.191528 1272.302612 1267.795288 1260.571289 1250.6427 1234.58252 1235.28064 1250.840454 1255.325684 1256.606323 1254.708862 1252.326172 1250.61145 1248.885132 1246.383423 1241.44458 1234.3927 1225.204468 1216.985352 1212.389282 1226.752197 1235.667603 1240.749756 1245.384888 1247.762817 1248.092285 1247.715698 1245.322388 1240.583862 1235.552856 1232.374268 1229.643799 1229.59082 1228.845459 1228.837891 1230.263062 1233.890259 1235.204956 1235.515991 1234.779175 1233.805176 1233.296265 1231.400757 1227.003662 1226.462769 1231.829224 1232.385254 1231.705566 1236.631836 1244.928589 1251.981079 1257.074097 1258.262207 1258.268311 1257.948975 1257.394043 1255.449829 1251.703247 1244.370117 1232.686035 1224.243408 1217.626221 1211.899414 1205.276978 1194.202759 1185.936523 1196.849365 1203.640747 1206.8396 1214.775513 1221.84668 1216.30957 1199.150757 1184.434082 1173.299805 1163.064453 1153.041748 1146.650146 1153.634521 1160.508423 1165.473267 1162.675903 1161.467163 1178.438477 1186.549927 1186.974854 1185.871216 1182.397339 1173.124268 1163.376831 1153.706665 1156.602539 1163.337402 1163.70752 1157.829224 1149.674805 1144.112793 1141.249634 1143.951538 1148.872803 1154.312134 1157.513428 1151.853882 1146.019653 1137.86377 1132.562622 1129.353027 1126.745972 1125.388672 1123.034546 1119.279297 1112.263794 1109.414551 1108.296997 1107.066406 1105.970581 1105.067749 1104.113037 1103.192017 1102.482544 1102.02771 1101.675659 1101.180298 1100.780884 1100.129639 1099.637939 1099.093872 1098.834839 1098.567017 1098.319336 1098.040894 1097.744507 -1265.421387 1273.135498 1280.462402 1289.704712 1295.520996 1302.999268 1304.079956 1310.838501 1317.681396 1323.139038 1324.645874 1316.573486 1311.504028 1307.550171 1304.405518 1302.86499 1301.824097 1302.819214 1319.481201 1300.779907 1296.023315 1294.149902 1290.946289 1284.861938 1275.677002 1267.74707 1255.867188 1243.708374 1233.227051 1238.618286 1229.942993 1204.840088 1197.541748 1192.980713 1187.676147 1180.994629 1176.23938 1161.978638 1152.861938 1146.977661 1146.370483 1147.470093 1148.608643 1149.658081 1150.627319 1151.6073 1152.603882 1153.628784 1154.622681 1155.919556 1157.853271 1160.292603 1170.770752 1180.162354 1191.888306 1201.140503 1209.271362 1216.62085 1220.917847 1219.923218 1222.749023 1224.226929 1222.043091 1215.085815 1205.772339 1205.234253 1218.888794 1222.794922 1221.848145 1220.975952 1221.520874 1222.310791 1223.434204 1225.231079 1226.312134 1226.456543 1226.130371 1225.503174 1224.611206 1223.90686 1223.414551 1223.10498 1222.988037 1223.05896 1223.00293 1222.727783 1222.256104 1221.622803 1220.831421 1220.083252 1219.866455 1219.884155 1219.757202 1219.24585 1218.061035 1216.000854 1213.333984 1210.478149 1208.157715 1206.304443 1204.516846 1202.839478 1202.57605 1207.499512 1210.67981 1213.332031 1215.409668 1216.820801 1217.70166 1219.456055 1222.440918 1224.702271 1224.697266 1223.050293 1221.586304 1220.91394 1223.382568 1230.731689 1234.781616 1235.654663 1235.308594 1234.93042 1233.640991 1233.455688 1234.051025 1233.214111 1228.024658 1222.72937 1229.855347 1233.072144 1234.206055 1235.454224 1237.167236 1238.699707 1239.828857 1240.523071 1242.27417 1243.501953 1245.152344 1245.62793 1245.215454 1243.833984 1242.473022 1242.055786 1241.359131 1239.760376 1237.679688 1236.106934 1234.734619 1231.645508 1230.030518 1228.774048 1228.02832 1227.447021 1226.158569 1224.282227 1221.871948 1220.242432 1219.260132 1218.408691 1217.248901 1216.369751 1215.767944 1216.064087 1217.713745 1217.901123 1218.220703 1220.154663 1227.291382 1234.301025 1241.209106 1248.228149 1255.305054 1259.049805 1260.533447 1261.162354 1259.565186 1252.502808 1239.321289 1226.236328 1216.787964 1217.626099 1221.608643 1222.298584 1222.769531 1223.1073 1223.378906 1223.366211 1223.287842 1223.090088 1222.874634 1222.624023 1222.427002 1222.404785 1222.371704 1222.417603 1222.303711 1222.207275 1221.887939 1221.3125 1220.858032 1220.750122 1220.872559 1221.028687 1221.141968 1220.813599 1219.570068 1219.140625 1218.676392 1218.298828 1217.865112 1217.112427 1216.32312 1215.431641 1214.499756 1213.442505 1212.380005 1211.271851 1210.072388 1208.662231 1207.935913 1207.366577 1206.816406 1206.621094 1206.500366 1206.389404 1206.487183 1206.717041 1207.191772 1207.936279 1208.183716 1207.4823 1206.413208 1205.596069 1204.974121 1204.429565 1204.005371 1203.701538 1203.329956 1202.861084 1202.473145 1201.89209 1201.331909 1200.77417 1200.036011 1199.303101 1198.262939 1197.227051 1196.282837 1195.450684 1195.442505 1197.030518 1198.383423 1199.358521 1200.264648 1201.035645 1201.734619 1202.282837 1202.813965 1203.222534 1203.815308 1204.60437 1205.605835 1206.92627 1207.692139 1207.58606 1207.04187 1207.027954 1207.067871 1206.967285 1207.10144 1207.390747 1207.578125 1208.24231 1209.25708 1210.072021 1210.461182 1210.463379 1210.009277 1209.076172 1208.47644 1208.452881 1208.467041 1208.092651 1205.518066 1201.309937 1198.478149 1195.927124 1194.035767 1191.959717 1189.797485 1187.838745 1186.072388 1184.542358 1180.591309 1176.070312 1181.814453 1186.314331 1190.277588 1192.860474 1194.413574 1195.348022 1195.178833 1193.808838 1192.980835 1191.886353 1190.78064 1189.570923 1188.490479 1187.48291 1186.937988 1186.692505 1186.651855 1186.682373 1186.753784 1186.596436 1186.458374 1186.043335 1184.464722 1180.168579 1175.051392 1173.085205 1172.141724 1172.017456 1172.159912 1172.499146 1172.827393 1172.963135 1173.084717 1173.127319 1172.955566 1172.709229 1172.26416 1171.619385 1171.043579 1171.029053 1171.80188 1172.284912 1172.386719 1172.308228 1172.070312 1171.361694 1171.348755 1171.245117 1170.880981 1170.366699 1169.583374 1168.820801 1168.144287 1167.705933 1167.281006 1166.99939 1166.612427 1166.051636 1165.574219 1165.078491 1164.549316 1164.015747 1163.292114 1162.44104 1161.408447 1160.19812 1159.126709 1159.21167 1159.46814 1159.271484 1156.954834 1157.581909 1159.171021 1159.356567 1159.298218 1159.189087 1159.020264 1158.592163 1157.993042 1157.647949 1158.014526 1158.997925 1159.62915 1159.473145 1159.622192 1159.854736 1159.613647 1159.007446 1158.299072 1157.285522 1156.973022 1156.716797 1156.654419 1156.693604 1156.730957 1156.853882 1156.852905 1156.860229 1157.044312 1156.815796 1156.842407 1156.847168 1156.844727 1156.815796 1157.157959 1157.702148 1158.049683 1158.688843 1159.645752 1160.31958 1161.246826 1162.226807 1163.230103 1164.044189 1164.803345 1165.421997 1166.008789 1166.785889 1167.547485 1168.334106 1169.206055 1170.254761 1171.485962 1172.364502 1173.016357 1173.469116 1173.643677 1173.685425 1173.887695 1174.282227 1174.74292 1175.105835 1175.468018 1175.487427 1177.593872 1182.057373 1188.356567 1195.680786 1203.933228 1211.294678 1217.761841 1219.799438 1219.476685 1217.028687 1217.033081 1220.127197 1230.816772 1240.490601 1248.157593 1255.801758 1262.555054 1269.363647 1279.543213 1287.307129 1295.459595 1305.221924 1308.099121 1307.249756 1306.078979 1300.879883 1295.105347 1290.215576 1285.712891 1283.824585 1282.349854 1280.91394 1278.955688 1278.950439 1283.304443 1286.008179 1287.690552 1288.398926 1287.819092 1284.224731 1279.845215 1277.256836 1279.411377 1281.351929 1281.987427 1282.203247 1280.59314 1279.521118 1279.119141 1278.499512 1276.773315 1273.454468 1268.765381 1258.272461 1241.308716 1251.114868 1261.765991 1264.377319 1262.560913 1259.124146 1255.954468 1254.44812 1252.206543 1248.136719 1242.862671 1234.145142 1226.705566 1219.263672 1214.585327 1224.147339 1236.328735 1243.232666 1249.387573 1254.46167 1254.847412 1253.124878 1250.473999 1246.335327 1243.006348 1238.361084 1232.646973 1233.323975 1232.990479 1231.076172 1231.025391 1234.243652 1237.357788 1238.454224 1238.053833 1236.839233 1235.339355 1233.528931 1230.003052 1227.75415 1228.666382 1232.797363 1234.656616 1239.043823 1245.863403 1253.783569 1258.412842 1259.484497 1259.449463 1259.633423 1259.22937 1258.075317 1255.19043 1248.296509 1240.125122 1229.483765 1222.255493 1215.174072 1207.927124 1196.930298 1194.351562 1202.960571 1208.917114 1210.524658 1213.924194 1216.978149 1207.919556 1190.545532 1170.923096 1158.429443 1154.021973 1152.372192 1153.528809 1160.629272 1171.078735 1174.261719 1172.349609 1167.611084 1179.68457 1187.496582 1187.829712 1186.315063 1182.776855 1174.464966 1165.189697 1156.879883 1165.79895 1172.757202 1170.920044 1161.715698 1152.348389 1145.30896 1143.17395 1145.981079 1153.410522 1159.485962 1164.678711 1160.589966 1152.202271 1142.410522 1134.57959 1132.14978 1130.106445 1127.883423 1125.443359 1123.438232 1116.945679 1110.219849 1108.956177 1107.814941 1106.887451 1105.912109 1105.03418 1104.129028 1103.346436 1102.786377 1102.303833 1101.814453 1101.333984 1100.959473 1100.482056 1100.007935 1099.758057 1099.417725 1099.12793 1098.842773 1098.127563 -1265.541626 1273.599609 1283.063721 1292.821045 1300.93811 1306.590576 1307.825439 1312.525146 1318.759888 1327.744507 1333.160645 1321.021118 1314.453003 1310.646118 1307.747681 1304.999023 1303.167725 1302.689575 1300.908081 1291.581909 1286.476685 1281.886597 1280.562744 1274.880737 1268.089722 1260.63562 1249.799805 1242.989502 1246.364746 1239.276245 1219.145264 1189.816284 1175.714478 1171.285156 1163.888794 1157.497681 1154.465088 1149.595825 1146.11499 1146.551392 1147.557007 1148.674072 1149.914795 1150.940796 1151.858765 1152.795166 1153.776855 1154.958496 1156.371826 1157.4729 1158.198853 1165.230103 1175.378662 1185.330444 1194.983032 1202.531616 1213.064819 1222.838013 1227.435425 1228.223022 1228.826416 1226.571899 1222.923096 1216.474854 1207.474121 1203.45813 1208.662354 1219.174561 1221.463013 1222.04126 1224.62854 1228.646729 1229.494019 1229.019775 1228.985352 1228.397217 1227.518799 1226.633179 1225.66687 1224.857544 1224.427612 1224.096436 1223.995117 1223.92041 1223.803467 1223.546021 1223.055664 1222.41333 1221.62854 1220.995728 1220.650269 1220.467163 1220.368042 1220.078003 1219.120483 1216.831543 1213.80603 1210.317627 1207.539307 1206.005981 1204.557495 1203.230957 1204.344238 1208.940796 1212.328491 1215.463745 1217.523804 1218.510254 1219.783813 1223.092407 1228.723877 1231.731934 1230.748169 1228.256592 1227.039429 1225.929199 1224.786621 1224.668579 1226.857178 1232.796875 1234.792969 1235.220215 1235.408081 1235.44751 1235.365845 1234.534424 1233.419678 1228.704834 1225.539795 1231.25354 1233.3479 1235.076416 1237.608276 1241.191528 1243.117676 1243.212891 1244.753662 1245.67688 1246.407959 1246.568726 1246.306763 1245.234985 1244.516968 1244.310791 1243.95459 1242.514282 1240.281616 1238.363892 1236.544312 1232.832031 1231.176636 1230.216187 1230.217163 1229.787109 1228.783936 1226.657715 1224.199463 1222.156006 1220.619141 1219.34314 1218.058716 1216.975342 1217.473511 1220.643066 1220.669678 1220.047729 1219.113159 1219.061646 1224.963867 1231.494629 1238.271362 1245.208862 1253.295898 1257.741211 1259.780884 1260.285156 1259.151733 1248.084839 1235.091064 1223.805908 1215.259399 1220.831787 1222.297974 1222.836182 1223.280884 1223.657227 1223.871826 1223.936279 1223.813843 1223.639648 1223.273438 1223.173218 1223.124146 1223.135132 1223.264648 1223.268188 1223.175537 1223.012695 1222.640747 1222.351685 1222.018921 1221.923462 1222.06958 1222.080322 1221.881592 1221.323608 1220.480957 1220.194214 1219.814087 1219.251953 1218.763428 1218.031372 1217.219849 1216.265259 1215.241455 1214.352783 1213.267822 1212.138916 1210.84314 1209.744751 1208.887329 1207.750122 1207.173584 1206.869995 1206.791748 1206.907959 1207.035156 1207.088989 1207.544434 1208.469482 1208.381714 1207.459106 1206.594238 1205.939209 1205.439941 1204.937744 1204.568481 1204.37207 1204.030273 1203.776489 1203.394897 1202.976318 1202.457275 1201.935547 1201.258301 1200.374878 1199.584351 1198.667725 1197.764526 1197.052002 1197.21875 1198.256958 1199.275757 1200.05603 1200.910889 1201.6521 1202.275879 1202.717407 1203.191528 1203.480347 1203.944824 1204.658203 1205.434692 1206.777832 1207.595825 1207.465332 1207.298096 1207.776245 1207.655396 1207.55249 1207.246582 1207.234131 1207.603149 1208.040161 1209.117432 1210.136353 1210.731323 1210.926025 1210.611816 1210.142578 1209.55127 1209.110352 1208.808716 1208.328857 1206.582275 1202.784058 1199.555298 1196.972656 1194.575073 1192.538086 1190.649414 1188.663452 1186.966309 1185.296021 1182.691284 1177.125244 1180.954468 1185.457031 1191.002441 1194.237305 1195.880981 1195.887207 1195.569946 1194.56665 1193.666138 1192.681274 1191.723389 1190.863403 1189.992065 1189.073242 1188.449951 1188.008667 1187.77356 1187.545166 1187.227295 1186.821777 1186.378662 1185.409058 1182.74585 1177.23584 1174.05127 1173.690186 1173.310547 1173.341187 1173.530396 1173.54541 1173.691528 1173.662354 1173.583618 1173.423584 1173.015137 1172.481445 1171.750854 1171.237305 1170.944458 1171.782227 1172.379395 1172.695068 1172.817017 1172.660034 1172.393799 1172.042725 1171.705811 1171.490723 1171.11499 1170.550903 1169.745972 1169.039795 1168.488403 1168.04248 1167.80188 1167.588257 1167.234619 1166.732788 1166.304321 1165.790283 1165.361816 1164.626343 1163.797363 1162.867432 1161.844727 1160.961304 1160.139282 1159.924805 1159.786377 1159.424561 1157.416138 1158.366089 1159.584351 1159.792114 1159.799561 1159.730469 1159.504517 1159.140381 1158.746094 1158.14502 1158.464844 1159.319824 1159.964478 1160.239868 1160.37561 1160.236694 1159.970947 1159.345215 1158.797363 1157.83313 1157.603149 1157.449463 1157.442993 1157.457031 1157.615601 1157.745117 1157.670532 1156.801636 1156.84082 1156.848755 1156.847534 1156.8479 1156.847778 1156.84729 1156.845215 1156.812134 1156.762939 1156.953125 1158.452393 1159.227417 1159.9646 1161.176636 1162.310791 1163.210693 1163.992676 1164.60083 1165.144653 1165.747437 1166.539185 1167.238159 1168.088623 1169.015747 1170.056152 1171.033936 1171.663086 1172.013428 1172.087158 1172.066772 1172.064453 1172.570435 1173.321533 1174.066406 1174.412109 1175.402832 1178.272705 1182.449585 1189.541016 1197.964966 1207.11731 1216.070312 1221.682251 1222.87146 1224.109497 1224.934692 1224.575439 1226.188477 1230.830933 1239.872803 1247.709961 1254.833008 1263.929932 1273.709595 1283.824585 1291.703491 1297.349365 1301.942749 1305.21106 1306.61084 1306.584473 1303.098267 1297.612915 1293.858521 1291.623779 1290.147583 1288.36792 1285.268311 1282.647949 1281.100342 1284.605591 1288.013428 1290.530396 1292.229492 1292.13147 1288.521606 1284.792725 1282.293701 1283.539185 1285.454834 1286.49353 1287.088867 1287.0979 1286.196289 1285.10498 1283.501953 1281.957397 1280.140503 1274.205322 1262.475098 1253.784546 1266.640869 1272.527588 1272.290527 1268.959717 1264.714355 1261.251709 1258.962891 1255.805298 1251.478638 1244.860596 1234.50415 1229.020996 1224.50769 1219.712646 1219.106934 1233.74231 1243.842407 1252.276001 1258.412598 1259.263306 1258.023682 1256.284424 1253.115723 1249.373535 1244.491699 1241.678345 1244.632568 1242.812378 1234.592529 1231.499023 1234.818726 1240.059204 1241.994385 1241.726074 1239.375122 1236.446167 1233.154175 1231.306641 1233.869751 1232.184082 1228.960083 1232.475708 1237.142212 1243.795776 1251.763306 1258.282104 1260.063232 1260.55542 1260.519897 1260.510864 1259.50415 1256.533813 1251.991577 1246.400635 1235.301758 1225.883179 1216.546387 1207.295044 1204.092896 1196.6073 1206.981201 1211.645142 1212.669556 1212.480835 1210.151978 1200.754761 1188.576538 1171.634399 1156.736206 1156.138672 1159.684814 1161.434692 1171.331543 1179.31604 1183.071289 1181.922363 1171.888062 1178.916626 1188.101929 1189.293335 1186.774658 1181.158081 1175.214478 1170.258179 1159.630249 1171.293091 1174.666504 1173.234253 1165.326416 1154.840088 1145.54126 1144.933594 1146.300049 1159.493774 1168.090088 1172.584229 1167.491943 1157.189087 1145.772583 1139.128052 1136.016113 1133.408447 1129.685425 1125.755493 1121.665649 1118.703369 1111.176147 1109.267334 1108.464478 1107.603027 1106.631104 1105.737671 1104.915649 1104.078613 1103.552612 1102.934204 1102.497192 1102.073242 1101.77417 1101.30896 1100.839478 1100.456055 1100.042114 1099.549927 1098.96228 1098.202393 -1264.85376 1272.169556 1282.446045 1290.512939 1297.622437 1304.023682 1306.882202 1310.769531 1316.316528 1322.020508 1324.922852 1319.426147 1315.678467 1312.560059 1309.614502 1307.554688 1305.628784 1303.413818 1298.96875 1295.074829 1286.831177 1277.939819 1268.577148 1266.541138 1261.752319 1255.481323 1252.538452 1252.48999 1244.917114 1225.228149 1203.722534 1182.726929 1167.44165 1158.923706 1156.102295 1153.295532 1148.869873 1146.24292 1146.894653 1148.380249 1149.390991 1150.376343 1151.494751 1152.505981 1153.361816 1154.083984 1154.884888 1155.869629 1157.607788 1159.878296 1162.355713 1167.817017 1177.354248 1187.599976 1197.222046 1206.452759 1216.30127 1225.989746 1232.954102 1233.450073 1232.406982 1228.506836 1223.58313 1217.875366 1212.627075 1208.949707 1205.591431 1208.111938 1217.078369 1221.175171 1224.814209 1230.887695 1232.77356 1231.676758 1230.599121 1229.935425 1228.705811 1227.457397 1226.605713 1225.832031 1225.327637 1225.156006 1224.928711 1224.856689 1224.624756 1224.361084 1223.823608 1223.165039 1222.462158 1221.897705 1221.504272 1221.238159 1220.998901 1220.578003 1220.039673 1217.638794 1214.123169 1209.974731 1207.14563 1205.736572 1204.489014 1203.691528 1208.578003 1211.892212 1215.359497 1217.855713 1219.784668 1221.66748 1224.057495 1228.860352 1233.086914 1234.492554 1234.177612 1232.30957 1232.571533 1230.959961 1231.742676 1231.667969 1229.953125 1228.845581 1233.027588 1235.214722 1236.368774 1237.119019 1237.52002 1237.089844 1236.023804 1234.116211 1229.322144 1227.380737 1231.005371 1233.025269 1236.066162 1240.502319 1244.702148 1245.036255 1245.823242 1246.779419 1247.401489 1247.755249 1247.579834 1247.092773 1246.485718 1246.139038 1245.501465 1244.587769 1242.567505 1240.560181 1238.842163 1234.84314 1232.640747 1232.039917 1232.47937 1232.146118 1231.364502 1229.677856 1226.766113 1224.104858 1222.002563 1220.364746 1218.755005 1217.542969 1220.542603 1222.013916 1222.161377 1221.612305 1220.172119 1219.120483 1223.455933 1229.57666 1236.488647 1243.860718 1250.221191 1255.286621 1258.181641 1259.699463 1260.236572 1245.962769 1234.126465 1222.069702 1215.70105 1220.883057 1222.367554 1223.098511 1223.676636 1224.013062 1224.275513 1224.252563 1224.2229 1224.001587 1223.863525 1223.880493 1223.839478 1223.925781 1224.081299 1224.184814 1224.109863 1223.798096 1223.532349 1223.305786 1223.224731 1223.110474 1223.102173 1223.046265 1222.739746 1222.218628 1221.784424 1221.304199 1220.917603 1220.286865 1219.577637 1218.792603 1217.886475 1217.094116 1216.041992 1215.123779 1214.258667 1213.226318 1212.070801 1210.945801 1209.687012 1208.36145 1207.609741 1207.318726 1207.20459 1207.485107 1207.598755 1207.713867 1208.382446 1208.92981 1208.63623 1207.407715 1206.925903 1206.339966 1205.9021 1205.402222 1205.196899 1204.877563 1204.763428 1204.536865 1204.289917 1203.920776 1203.54187 1203.05481 1202.387939 1201.755127 1200.998291 1200.353516 1199.84314 1199.614868 1199.708984 1199.937378 1200.47644 1200.977905 1201.481201 1202.173462 1202.696533 1203.134399 1203.473999 1203.658691 1204.105469 1204.642578 1205.286377 1206.040161 1206.941406 1207.098877 1207.504395 1208.317139 1208.602783 1207.790649 1207.599121 1207.356201 1207.505493 1207.672119 1208.817993 1209.985962 1210.804565 1211.335205 1211.217163 1210.847534 1210.273315 1209.680298 1209.102661 1208.405396 1207.06311 1203.536499 1200.201416 1197.04895 1194.606689 1192.95105 1191.373047 1189.301025 1186.912354 1184.874146 1182.369751 1178.273438 1182.74585 1187.077881 1193.022583 1196.016846 1196.846802 1196.612427 1195.901489 1195.068115 1194.107178 1193.435547 1192.707153 1192.067505 1191.414795 1190.629761 1189.955566 1189.353027 1188.859131 1188.152588 1187.333008 1186.437622 1185.019409 1182.926514 1180.224243 1176.567139 1174.914307 1175.078125 1175.071289 1175.050537 1175.000732 1174.857422 1174.647583 1174.468872 1174.254517 1173.931885 1173.455566 1172.624512 1171.394653 1170.927612 1171.306641 1172.451416 1172.900146 1173.083008 1173.088379 1172.850098 1172.543213 1172.117798 1171.793335 1171.413452 1170.946411 1170.301147 1169.635132 1169.108887 1168.731445 1168.384644 1168.314087 1168.20105 1167.968994 1167.482788 1167.046021 1166.636719 1165.946167 1165.163818 1164.286621 1163.287476 1162.113647 1161.28894 1160.644043 1160.258911 1159.775879 1159.370605 1157.891602 1158.619629 1159.805176 1160.24292 1160.316895 1160.26416 1159.975952 1159.653564 1159.262817 1158.805908 1158.687744 1159.634766 1160.376831 1160.709229 1160.786255 1160.746826 1160.446533 1159.864136 1159.070068 1158.606201 1158.203491 1158.548218 1158.427734 1158.110718 1158.558838 1158.723755 1158.424438 1158.479858 1156.802002 1156.833252 1156.846191 1156.8479 1156.834717 1156.834473 1156.847778 1156.848022 1156.854126 1156.874634 1157.486694 1158.358398 1159.046875 1160.450195 1161.527832 1162.369751 1162.991699 1163.631714 1164.193726 1164.692993 1165.266724 1165.874146 1166.536987 1167.338501 1168.057617 1168.859131 1169.525146 1170.0802 1170.233276 1170.103638 1170.796021 1171.39624 1172.176514 1172.951538 1173.675903 1175.440674 1178.867432 1182.178467 1189.41394 1198.207886 1206.924561 1215.115234 1220.964478 1222.449341 1224.44043 1229.841553 1233.065186 1234.436279 1235.860474 1241.406982 1247.428467 1254.292236 1263.322754 1272.370117 1281.949219 1289.237793 1294.176025 1296.287476 1298.294189 1299.182617 1299.588257 1299.178711 1297.526367 1296.102539 1295.205811 1294.669678 1293.148804 1289.359863 1286.50354 1285.569946 1286.988892 1289.821655 1292.739014 1294.48999 1294.934448 1293.521118 1290.638672 1288.310913 1287.61084 1288.723511 1290.900269 1292.723267 1293.540039 1293.433472 1292.133423 1289.792725 1288.011108 1285.502563 1281.973267 1271.281372 1267.834839 1275.658691 1280.595215 1278.018066 1273.800415 1269.307129 1265.967285 1263.547485 1260.247314 1255.736206 1246.420288 1239.758545 1233.926392 1231.583252 1225.7052 1218.345093 1227.862305 1241.78064 1251.989258 1259.223755 1261.574219 1262.418213 1261.684937 1259.178833 1255.505737 1251.373047 1249.510742 1248.7948 1246.675537 1239.913086 1231.47937 1235.824341 1243.379517 1245.147461 1244.536865 1241.032837 1236.875 1231.684326 1236.349487 1241.730469 1239.782837 1235.584839 1231.935669 1231.803955 1238.176636 1246.274292 1253.904419 1259.023682 1260.920532 1261.404663 1261.203003 1260.775879 1258.546753 1255.52356 1249.577759 1240.814575 1230.349365 1219.796143 1215.317749 1210.819336 1206.007446 1209.932007 1215.575562 1214.862793 1208.798584 1200.300659 1188.340576 1175.556152 1157.799927 1156.000732 1162.001953 1171.993408 1178.701538 1180.748169 1186.504883 1194.295654 1189.685181 1181.900024 1181.817017 1190.674683 1192.75647 1188.103271 1183.625244 1179.304077 1173.267944 1169.484985 1173.257446 1176.348877 1175.034424 1169.599976 1156.864746 1158.897583 1150.570068 1146.50708 1158.772583 1174.003784 1184.635132 1173.933228 1163.131836 1151.186768 1143.707764 1138.237793 1134.891357 1130.571655 1126.09314 1122.283691 1117.404175 1112.188599 1109.590454 1108.785767 1108.026978 1107.314087 1106.353027 1105.586304 1104.828979 1104.235962 1103.709839 1103.242676 1102.855225 1102.453491 1102.211182 1101.666748 1101.212036 1100.624146 1099.760986 1098.657959 1097.782715 -1267.293579 1268.662964 1279.832275 1285.710205 1290.596313 1296.508179 1301.851318 1303.748413 1306.015625 1311.954346 1316.273193 1316.425293 1315.108032 1313.423218 1311.648315 1309.782227 1307.833008 1305.796875 1300.358154 1294.707275 1287.929688 1279.844971 1272.866455 1267.279541 1262.088257 1258.57605 1258.484985 1251.052124 1220.893066 1203.335083 1188.487671 1174.274292 1160.432861 1156.540283 1153.733032 1150.137207 1146.61853 1147.112061 1148.844604 1150.070679 1151.223267 1152.419434 1153.515747 1154.327759 1154.739746 1155.298706 1155.943237 1156.671143 1157.79895 1161.237427 1167.179077 1173.054565 1179.588745 1187.568604 1198.352051 1210.973999 1218.047363 1226.531494 1233.193726 1234.255005 1233.576294 1230.397583 1226.302856 1220.856201 1217.093506 1214.10791 1211.193726 1208.224365 1207.43457 1215.633057 1220.131104 1225.536987 1231.079712 1232.512451 1231.772461 1230.707153 1228.848755 1227.778564 1226.960327 1226.487915 1226.131592 1225.860718 1225.750854 1225.600098 1225.315796 1225.007568 1224.460083 1223.809082 1223.139282 1222.549561 1222.226929 1221.840088 1221.462646 1221.041382 1220.364136 1218.948608 1214.490112 1209.49707 1206.989014 1205.776001 1204.642212 1206.382202 1210.767456 1214.914673 1218.299561 1220.687744 1222.893433 1225.117798 1228.411865 1231.802612 1235.182251 1236.789551 1236.805054 1235.794067 1235.051636 1234.221558 1234.031494 1233.987427 1233.087158 1230.513306 1233.001343 1235.258423 1237.141602 1238.531372 1239.779785 1240.557495 1240.111084 1238.386108 1234.315186 1228.258667 1233.622559 1231.878906 1231.564697 1233.744385 1240.509277 1244.551758 1246.13916 1247.049438 1247.945923 1248.770264 1249.306885 1249.287964 1248.956299 1248.335571 1247.434937 1246.427612 1244.039185 1242.634888 1241.248901 1237.428955 1235.575439 1234.958252 1234.599243 1234.463013 1233.602295 1232.171387 1229.192627 1225.692139 1223.244629 1221.38269 1218.888794 1219.962891 1221.942383 1223.414307 1223.717651 1223.099243 1221.860596 1219.991089 1223.086304 1230.050293 1235.925781 1242.513916 1247.527344 1252.218262 1255.716919 1258.449463 1260.249756 1245.567017 1230.470703 1219.768677 1216.669678 1220.946045 1222.344238 1223.159302 1223.863525 1224.241821 1224.475342 1224.660522 1224.557861 1224.564819 1224.540527 1224.595337 1224.720581 1224.815918 1224.986938 1225.144043 1224.979004 1224.799683 1224.61853 1224.392334 1224.240601 1224.276489 1224.333618 1224.05835 1223.765747 1223.445923 1222.987427 1222.425293 1222.01709 1221.477173 1220.491943 1219.461792 1218.723389 1217.859985 1216.876587 1216.095093 1215.252197 1214.434937 1213.519775 1212.350586 1211.07666 1209.743774 1208.849609 1208.015015 1207.689819 1208.62561 1208.990356 1208.921387 1209.480591 1209.47644 1209.088013 1208.225708 1207.642578 1206.935181 1206.313354 1205.931641 1205.689331 1205.648071 1205.514404 1205.386475 1205.168701 1204.862427 1204.529297 1204.055176 1203.554932 1203.126343 1202.690552 1202.2229 1201.735107 1201.610352 1201.647461 1201.732056 1201.841675 1201.962891 1202.187744 1202.508545 1202.944214 1203.353271 1203.558594 1203.867432 1204.151855 1204.646973 1205.234253 1205.838379 1206.378662 1206.83667 1207.3125 1208.478516 1209.030884 1208.88623 1207.643311 1207.381592 1207.39978 1207.583252 1208.290039 1209.832764 1210.827759 1211.595581 1211.715332 1211.395386 1210.751587 1210.094971 1209.272949 1208.400146 1206.813721 1203.999268 1200.812744 1197.806641 1195.779053 1193.957031 1192.148682 1189.768555 1187.024902 1184.151001 1179.790771 1181.7229 1186.337036 1190.680908 1195.179565 1197.621338 1197.634888 1197.201538 1196.660767 1195.4021 1194.592407 1194.119629 1193.604614 1193.318604 1192.805786 1192.109375 1191.297241 1190.421875 1189.540771 1188.44165 1187.191772 1184.86499 1182.604614 1179.678467 1176.960815 1176.183716 1176.98584 1177.375488 1177.35022 1177.027344 1176.651001 1176.242065 1175.901123 1175.547119 1175.158936 1174.694092 1174.208618 1173.537476 1172.001831 1171.482666 1172.390381 1173.036865 1173.32019 1173.415771 1173.240479 1172.86792 1172.420776 1172.022461 1171.644043 1171.206909 1170.772827 1170.066772 1169.536133 1169.215088 1168.923218 1168.819946 1168.838135 1168.83313 1168.650146 1168.275269 1167.869873 1167.231934 1166.576416 1165.690674 1164.621338 1163.583862 1162.526611 1161.575928 1160.659668 1160.027954 1159.254761 1158.685059 1157.694824 1159.082397 1160.050781 1160.558838 1160.745972 1160.75769 1160.483398 1160.172729 1159.716187 1159.256714 1158.890869 1160.055176 1160.857056 1161.259033 1161.418823 1161.369385 1161.021973 1160.612915 1160.058228 1159.566284 1158.670166 1159.002686 1158.802734 1158.457153 1158.676392 1159.205688 1158.842407 1158.908447 1158.356812 1156.776123 1156.851685 1157.222168 1158.951904 1158.800659 1156.781616 1156.831177 1156.846924 1156.832275 1157.67627 1158.507935 1159.428833 1160.242188 1161.01709 1161.77063 1162.454224 1162.933105 1163.266479 1163.629883 1164.106201 1164.476685 1165.020142 1165.645264 1166.154541 1166.429077 1166.911011 1167.88562 1170.220337 1171.822754 1171.562988 1171.482544 1171.907471 1172.581787 1173.768677 1175.747559 1178.422974 1181.494873 1186.081421 1195.389526 1203.534912 1210.361694 1216.687134 1219.222656 1220.099121 1227.005249 1233.254272 1234.506836 1234.311523 1237.778809 1244.355103 1252.178345 1259.889893 1266.705811 1274.632202 1280.730713 1284.626831 1287.878052 1289.752319 1290.2948 1290.840088 1291.817871 1295.299561 1296.610962 1296.346069 1295.720581 1294.579468 1291.241943 1288.000488 1287.129883 1288.428223 1291.312744 1294.495117 1295.758301 1296.146606 1295.505981 1293.933472 1291.498779 1290.401855 1291.091064 1293.72876 1295.130249 1295.818726 1295.94165 1295.574585 1294.618408 1293.598633 1290.466187 1283.467651 1280.508911 1277.43457 1282.050537 1285.37793 1283.06897 1278.704712 1274.432007 1271.190796 1268.782227 1265.121826 1258.993042 1248.598022 1242.278076 1238.971436 1236.704956 1233.046143 1224.896851 1224.311768 1236.248657 1249.903931 1259.044067 1263.040039 1266.514893 1267.555054 1266.287598 1262.379761 1258.88562 1255.799683 1251.8125 1246.919312 1240.890869 1236.063721 1242.292114 1245.977783 1246.531372 1245.654785 1243.015747 1238.934814 1238.263672 1245.37085 1246.789673 1246.504272 1244.095093 1240.557251 1235.240112 1232.531616 1240.452026 1245.555298 1253.721313 1258.823242 1261.569214 1261.825073 1261.766968 1260.884521 1258.814453 1254.652344 1245.452026 1233.282349 1227.615723 1222.518921 1215.335449 1206.654663 1213.487061 1220.494385 1217.53479 1203.715942 1190.407837 1177.67688 1156.961914 1163.521118 1159.554199 1170.512329 1183.24707 1191.212769 1191.307007 1192.119995 1196.796997 1196.123901 1185.853516 1181.702271 1194.379761 1195.38623 1190.635132 1186.575073 1182.97168 1176.145386 1171.024414 1176.506714 1180.328735 1179.767578 1172.853638 1165.794556 1171.107178 1161.992554 1155.380859 1157.636475 1172.78833 1186.896362 1179.916016 1168.68457 1155.767578 1144.497559 1137.032959 1133.190796 1130.829712 1127.097656 1123.540039 1118.795776 1113.425415 1109.933472 1109.233154 1108.573608 1107.803467 1107.016968 1106.279663 1105.63501 1105.032715 1104.514526 1104.15564 1103.783691 1103.403442 1102.957275 1102.517456 1102.040161 1101.428589 1100.489746 1098.941895 1098.106323 -1269.650146 1269.175903 1274.135986 1280.956665 1287.840088 1293.487915 1297.125977 1300.176392 1303.404907 1305.672485 1313.589233 1316.424194 1316.084717 1315.135498 1313.900879 1312.171875 1309.951904 1305.901611 1303.308594 1298.841553 1295.50769 1289.643555 1277.022949 1267.442627 1266.770508 1265.672241 1259.202515 1236.696411 1206.526367 1185.216553 1171.958008 1164.051392 1157.398315 1154.92688 1152.199341 1148.805298 1146.290039 1148.310913 1150.148315 1151.991089 1153.493896 1154.807251 1155.765259 1156.21936 1156.303467 1156.640747 1157.223511 1157.550171 1158.281494 1162.720337 1168.949219 1176.444092 1184.636719 1191.294067 1199.438843 1214.619995 1223.0354 1228.014648 1232.38147 1234.855103 1234.407959 1232.737183 1230.393921 1225.646118 1221.755859 1219.075928 1216.276245 1213.293091 1210.27124 1209.225586 1212.536621 1219.31543 1225.354858 1231.530029 1232.286011 1230.100952 1228.344971 1227.480225 1226.97522 1226.59082 1226.416626 1226.265625 1226.230835 1226.104736 1225.857666 1225.516724 1224.995361 1224.369873 1223.771729 1223.227905 1222.828857 1222.422607 1222.034424 1221.460571 1220.799316 1220.083008 1215.128174 1208.408447 1206.872437 1205.975586 1204.868408 1208.765747 1213.135498 1217.705322 1220.878418 1223.035278 1225.492554 1228.771484 1232.047241 1236.782837 1240.427979 1240.030518 1239.503296 1238.469849 1237.544067 1236.667114 1235.971558 1235.199951 1234.072388 1232.360107 1232.964966 1235.598511 1237.847656 1239.845337 1241.759277 1243.362061 1243.904053 1243.316284 1238.911743 1231.392212 1239.540283 1247.82605 1241.73877 1235.631592 1237.471436 1243.153809 1244.155518 1246.329102 1248.299927 1249.77832 1251.174927 1251.869263 1252.002319 1251.235229 1249.922485 1248.104126 1246.272217 1245.165405 1243.649902 1240.46875 1239.020752 1237.782959 1237.051025 1235.957642 1234.856201 1232.971069 1230.026611 1226.498413 1223.601196 1221.104248 1219.858154 1221.989136 1223.92749 1225.501221 1225.900146 1225.406128 1224.604248 1224.421143 1226.831299 1230.243896 1234.87146 1239.983643 1244.387451 1249.150757 1253.329224 1256.947632 1258.704834 1247.809448 1233.888062 1224.189331 1217.032104 1220.786865 1222.244019 1223.105713 1223.854248 1224.341919 1224.690552 1224.742554 1224.911499 1225.163452 1225.450928 1225.578979 1225.687988 1225.877197 1226.077026 1226.19873 1226.072144 1225.953491 1225.676758 1225.562134 1225.491211 1225.465576 1225.428589 1225.241333 1224.958496 1224.613159 1224.264526 1223.793701 1223.31665 1222.451538 1221.458862 1220.227539 1219.329834 1218.550903 1217.536255 1216.860229 1216.37146 1215.679199 1214.836548 1213.849243 1212.695801 1211.567871 1210.501831 1209.672119 1209.609131 1210.157593 1210.293457 1210.408447 1210.449585 1210.353149 1209.80249 1209.132446 1208.29126 1207.488159 1206.779053 1206.286499 1206.184448 1206.331909 1206.421387 1206.118286 1205.979004 1205.601929 1205.430176 1205.072998 1204.792725 1204.513428 1204.371094 1203.881348 1203.564453 1203.354126 1203.259766 1203.230591 1203.137085 1202.985229 1202.942627 1203.024658 1203.190918 1203.508301 1203.594727 1203.931885 1204.287231 1204.829102 1205.250244 1205.819702 1206.303833 1206.754395 1207.192749 1208.415649 1209.37207 1209.567993 1208.469482 1207.593262 1207.453247 1207.456177 1207.812866 1209.506836 1210.820312 1211.827271 1212.076172 1211.766724 1211.152954 1210.189331 1209.261841 1208.021484 1206.235596 1203.943481 1201.27832 1198.96228 1196.986084 1195.194336 1193.00415 1190.341064 1187.361572 1184.272095 1180.656128 1181.837524 1186.970703 1192.365479 1196.688965 1198.380249 1198.410156 1197.898193 1197.088135 1196.212646 1195.436401 1194.890625 1194.332764 1194.496582 1194.198608 1193.522583 1192.381836 1191.195557 1189.920898 1188.357544 1186.72644 1182.783447 1178.834717 1179.167603 1180.72168 1180.910278 1181.205688 1180.407349 1179.550903 1178.807617 1178.133667 1177.684448 1177.236694 1176.749023 1176.210205 1175.681885 1175.267944 1174.601318 1173.839966 1173.260376 1173.441162 1173.653809 1173.784302 1173.655029 1173.269287 1172.819092 1172.129761 1171.523071 1171.288696 1171.039307 1170.511475 1169.872681 1169.554688 1169.269043 1169.153931 1169.251953 1169.496826 1169.648315 1169.484253 1169.149292 1168.544556 1167.918213 1167.151001 1166.141602 1165.217163 1164.13147 1162.958252 1161.876343 1160.692139 1159.479126 1158.591309 1158.650635 1159.105225 1159.568481 1160.315186 1160.841797 1161.1875 1161.325806 1161.221069 1160.943726 1160.594849 1160.378906 1160.637695 1161.283691 1161.72522 1162.01062 1162.006104 1161.933716 1161.744019 1161.349609 1160.781616 1159.967896 1158.711914 1159.507812 1159.448608 1158.95105 1158.620483 1159.425049 1159.532837 1159.350708 1159.13916 1158.448364 1158.558594 1159.101318 1159.767456 1159.699707 1159.064697 1156.775391 1156.793457 1158.050781 1157.972656 1158.484863 1159.31189 1160.102295 1160.679321 1161.302734 1161.825073 1162.166992 1162.453613 1162.634644 1162.942505 1163.335449 1163.815186 1164.30896 1164.909424 1165.772583 1166.601196 1168.663818 1171.090332 1171.38501 1171.637329 1171.677002 1172.137207 1172.695679 1173.622803 1174.938965 1176.954468 1179.66687 1182.351807 1188.627686 1196.887329 1205.028198 1209.690796 1213.446411 1215.086426 1218.092529 1226.189575 1228.209229 1226.415283 1230.824463 1237.719238 1247.438477 1256.286011 1262.529175 1266.786011 1271.613037 1275.037354 1277.569946 1279.325317 1279.682495 1280.291504 1284.641724 1289.939575 1293.701172 1295.412109 1296.700073 1294.202515 1290.085449 1287.121338 1286.460571 1287.866577 1291.177124 1295.049561 1296.482422 1296.968628 1296.169556 1295.264648 1293.366699 1291.677246 1291.975342 1294.043457 1295.649536 1296.432739 1297.179321 1297.336182 1296.562866 1295.117554 1293.11853 1289.727905 1286.998047 1282.204956 1283.704102 1291.566895 1291.401489 1283.567017 1279.329102 1276.106201 1272.977539 1269.873291 1261.854858 1253.360474 1246.262573 1243.856445 1241.235596 1237.929932 1234.142212 1224.209839 1230.296265 1245.865112 1256.974487 1262.796631 1267.814331 1270.497437 1270.54834 1268.660156 1263.787231 1259.045776 1253.709717 1246.703003 1242.506104 1243.272827 1246.392456 1248.084473 1247.896118 1246.579956 1243.404907 1241.603394 1242.516968 1246.092041 1250.047241 1250.892578 1249.394287 1246.869141 1242.715088 1240.596558 1240.793457 1241.867065 1248.639893 1256.671387 1260.966675 1262.225342 1262.346802 1262.08667 1261.082397 1257.597168 1249.017334 1241.335815 1234.796997 1226.458862 1218.686768 1213.679565 1219.639404 1222.398193 1215.023682 1201.462036 1187.588745 1171.748291 1174.002197 1180.328369 1172.704956 1174.543091 1193.263062 1199.691284 1199.685425 1196.159546 1198.619385 1198.654297 1194.440552 1185.10437 1195.881958 1196.106323 1192.156494 1188.43335 1184.983032 1179.728394 1180.518921 1182.71521 1184.266724 1184.87146 1176.720581 1170.046021 1174.608154 1172.681274 1163.855713 1162.387939 1170.279785 1189.377197 1186.57312 1174.445557 1161.430664 1147.76062 1140.46582 1135.259766 1132.161133 1128.734741 1124.601318 1120.858154 1113.648682 1110.990845 1109.836304 1109.194214 1108.420532 1107.597778 1107.004639 1106.414917 1105.82959 1105.470703 1105.058472 1104.639526 1104.287476 1103.81604 1103.363159 1102.90918 1102.317383 1101.62146 1100.844482 1100.26709 -1278.935425 1269.678955 1272.35791 1282.7229 1289.743652 1292.053955 1293.111084 1299.670654 1305.357178 1309.388794 1315.497314 1318.406006 1318.303467 1317.536133 1316.313843 1314.809937 1312.09021 1309.199341 1306.650757 1300.938599 1296.21167 1285.803101 1277.230225 1270.675537 1271.958496 1270.989868 1251.035034 1221.837158 1200.852051 1180.817871 1166.886963 1159.267822 1156.283813 1153.763672 1151.11438 1148.427734 1146.564453 1149.459351 1152.548096 1154.80188 1156.238403 1157.284668 1158.032349 1158.21106 1158.031982 1158.078247 1159.127197 1159.066406 1163.898193 1170.97229 1179.27356 1185.91626 1192.132202 1199.211914 1207.315308 1219.823242 1229.938721 1232.295898 1233.947998 1235.890381 1235.900024 1234.645508 1233.151733 1230.557495 1226.382812 1223.259644 1220.862549 1218.604614 1214.873291 1212.328735 1211.592285 1211.818604 1220.275024 1226.881714 1229.210327 1227.895264 1227.176392 1226.658447 1226.41626 1226.414917 1226.411621 1226.536133 1226.505981 1226.488159 1226.290649 1225.906982 1225.359619 1224.859009 1224.247681 1223.747803 1223.306763 1222.923828 1222.525879 1221.986206 1221.261963 1220.495239 1217.806396 1209.565918 1207.95459 1206.508789 1206.441895 1210.595337 1215.032227 1219.452393 1222.177124 1224.34375 1226.968994 1229.699463 1235.517212 1244.192627 1244.7677 1243.050171 1242.554932 1241.073364 1239.896362 1238.864136 1237.885742 1236.725098 1235.212769 1233.931885 1234.84436 1236.6427 1238.791016 1240.763062 1242.924194 1244.478027 1245.465088 1245.469727 1244.295288 1237.024536 1231.72168 1244.093018 1246.115967 1244.809448 1243.700928 1243.444092 1244.398804 1245.283081 1248.539917 1250.591675 1252.751709 1254.708862 1255.829956 1254.401489 1252.237427 1250.403442 1248.845093 1247.52356 1245.430176 1243.401489 1241.65625 1240.142456 1239.000854 1237.660278 1235.689575 1232.802246 1230.415771 1227.473633 1224.153809 1222.479126 1222.951782 1224.787598 1226.963745 1228.483398 1228.773438 1228.307129 1227.975586 1227.822754 1228.982788 1230.550903 1233.217285 1237.604858 1242.030151 1246.454712 1251.049316 1255.353394 1257.319458 1247.827271 1236.076782 1227.169556 1219.743774 1219.802856 1221.895874 1222.862549 1223.673828 1224.262817 1224.673706 1225.036377 1225.303467 1225.804077 1226.144287 1226.459961 1226.80896 1226.974121 1227.159668 1227.295044 1227.276245 1227.122681 1226.919922 1226.72168 1226.660034 1226.548828 1226.582764 1226.500732 1226.235962 1225.908203 1225.659058 1225.337891 1224.730347 1223.959106 1222.84375 1221.481079 1220.083862 1219.217529 1218.335938 1217.877075 1217.466187 1216.924194 1216.195923 1215.353394 1214.479736 1213.466675 1212.712036 1212.139404 1211.844727 1211.910156 1212.073486 1211.804199 1211.613159 1211.203003 1210.578857 1209.8479 1208.908936 1208.002441 1207.10376 1206.659302 1206.58252 1207.214722 1207.202759 1207.022339 1206.752075 1206.335205 1206.182617 1206.034058 1205.972656 1206.085938 1205.855713 1205.540283 1204.968506 1204.675781 1204.465698 1204.371094 1204.319458 1204.047119 1203.691406 1203.547119 1203.42981 1203.540894 1203.736084 1203.993042 1204.557251 1204.925293 1205.415039 1205.904175 1206.460693 1206.933716 1207.250244 1208.336426 1210.074219 1210.457642 1209.886475 1208.210815 1207.692627 1207.452759 1207.599121 1209.131958 1210.85144 1211.977905 1212.326904 1212.077637 1211.346924 1210.265015 1209.011963 1207.403687 1205.558716 1203.571777 1201.527832 1199.570435 1197.846069 1195.99353 1193.833252 1190.999878 1188.016602 1185.452026 1184.125244 1181.651489 1184.57959 1192.689697 1198.049072 1199.181763 1198.954468 1198.397827 1197.558594 1196.831909 1196.155884 1195.717285 1195.195068 1195.579834 1195.610962 1194.266724 1193.12085 1191.786377 1190.092529 1188.119141 1185.211548 1180.670044 1180.377808 1183.693115 1183.693237 1183.564209 1183.487549 1182.75415 1181.421387 1180.245239 1179.56897 1179.027954 1178.506348 1177.990112 1177.398315 1176.905151 1176.373169 1175.781006 1175.139526 1174.600098 1174.339844 1174.306396 1174.186035 1173.864868 1173.283325 1172.460938 1170.914917 1170.956909 1170.914551 1170.621338 1170.295654 1169.878296 1169.617676 1169.479858 1169.470947 1169.641479 1170.253662 1170.593018 1170.533569 1169.954468 1169.222046 1168.561035 1167.713867 1166.898315 1165.886963 1164.865112 1163.625488 1162.317749 1161.126221 1159.798706 1159.109497 1159.41626 1159.664185 1160.15686 1160.636475 1161.229492 1161.557495 1161.852417 1161.879272 1161.835938 1161.860474 1162.079346 1162.258789 1162.661865 1162.966187 1162.991333 1162.963867 1162.826904 1162.601074 1162.056519 1161.390625 1160.71521 1160.069336 1159.924683 1159.570679 1158.755005 1159.209595 1159.852295 1160.22229 1160.201782 1159.895508 1159.58606 1159.598389 1160.059082 1160.260986 1160.144165 1159.661621 1158.525391 1157.82605 1158.060303 1158.122314 1158.467407 1158.998901 1159.726807 1160.291626 1160.800903 1161.260498 1161.4552 1161.541016 1161.692871 1161.920166 1162.259888 1162.741821 1163.343872 1164.164551 1164.918335 1166.233398 1168.14917 1169.93042 1170.862183 1171.334229 1171.579346 1171.9198 1172.366211 1172.725708 1173.496582 1174.900391 1177.242798 1180.306274 1183.446655 1193.01123 1199.34729 1203.845093 1208.81665 1208.472412 1209.18457 1216.589111 1218.91272 1217.090698 1220.843628 1233.957275 1245.991699 1254.184937 1259.08252 1262.309448 1265.339844 1267.577759 1267.853516 1267.673828 1270.213623 1268.194702 1273.215088 1281.452881 1284.365112 1285.924561 1286.006592 1284.916382 1284.780884 1282.937012 1282.565308 1284.775391 1288.644653 1292.977173 1295.828247 1296.446045 1296.991821 1295.700195 1294.373169 1291.996582 1290.883179 1293.007935 1295.626831 1297.141968 1297.855957 1298.101562 1297.541382 1296.44751 1292.681885 1293.683716 1293.421143 1290.309326 1290.920654 1293.773315 1294.178711 1289.044678 1283.768921 1279.914795 1276.351074 1272.425781 1266.408691 1256.488403 1251.665527 1248.243408 1245.385864 1241.780029 1237.823608 1232.06665 1227.351929 1239.061768 1251.837646 1260.391113 1268.130371 1271.437134 1271.714478 1270.953857 1267.149292 1261.44519 1255.195923 1245.622803 1244.497192 1248.022095 1250.482788 1250.718506 1249.269165 1247.14978 1244.254028 1242.689087 1242.62561 1244.771606 1253.040161 1255.378052 1254.28125 1251.384766 1248.709595 1246.841553 1245.214233 1242.11438 1243.478516 1251.391846 1258.087891 1261.144775 1262.484985 1263.809937 1263.842773 1261.033691 1257.176514 1249.276855 1237.900269 1229.716797 1221.861084 1222.350342 1223.337769 1221.001587 1206.101318 1197.527466 1178.89563 1177.408325 1194.901489 1192.877197 1179.946045 1178.540771 1199.187744 1205.425293 1207.457031 1206.569946 1205.549927 1202.202515 1197.591675 1193.672485 1197.785156 1196.89502 1193.861084 1190.762207 1186.723022 1182.877319 1186.533203 1187.804932 1188.381958 1187.210327 1180.894409 1174.898926 1178.099121 1180.239502 1176.85791 1178.173218 1177.506104 1192.414673 1192.946655 1179.746582 1166.933472 1154.039429 1144.488159 1138.404053 1133.778809 1129.814453 1126.066895 1122.14209 1110.704712 1110.179443 1110.45105 1109.684326 1109.094849 1108.35144 1107.646484 1107.156738 1106.756104 1106.360107 1105.858276 1105.455811 1105.055786 1104.626709 1104.139648 1103.779297 1103.414429 1103.137329 1102.858154 1102.449097 -1282.391846 1275.38147 1275.71106 1282.90625 1294.188965 1295.598755 1296.331665 1301.686768 1304.818481 1310.929565 1317.237427 1318.900146 1319.579712 1319.436401 1318.679443 1317.648926 1315.173828 1311.125122 1306.508667 1299.359131 1290.006714 1279.376709 1280.13916 1281.212524 1271.579224 1254.69873 1233.239014 1209.873291 1192.85376 1173.566162 1162.992432 1157.681641 1155.144043 1152.744995 1150.461548 1148.68457 1147.184204 1152.272705 1155.898682 1157.612793 1159.001343 1161.023438 1162.535767 1162.874512 1162.175415 1161.726929 1164.046997 1167.256714 1172.998657 1183.904053 1196.69519 1203.506592 1207.267944 1213.652222 1218.342407 1225.069458 1233.922729 1235.575928 1236.861938 1237.911377 1237.881714 1236.731689 1235.196289 1232.605835 1229.6604 1226.76062 1223.573608 1221.317383 1218.603149 1215.554688 1213.52124 1212.922974 1217.742676 1222.91272 1225.057739 1225.768433 1225.870361 1225.869141 1226.016113 1226.142456 1226.329346 1226.534302 1226.73877 1226.740845 1226.62854 1226.301025 1225.936523 1225.353027 1224.842896 1224.361694 1223.859497 1223.553101 1223.133179 1222.548584 1221.750366 1220.802124 1218.914551 1214.11731 1210.484009 1207.602905 1207.395508 1211.721069 1216.347778 1220.429443 1223.042603 1225.279785 1227.857422 1230.78772 1237.959595 1246.056274 1247.219482 1246.510132 1245.218506 1243.257935 1241.620605 1240.650635 1239.968384 1238.826538 1237.106934 1235.617188 1236.632812 1238.246216 1240.074097 1241.590698 1243.345825 1244.937744 1246.0448 1246.147705 1244.94751 1241.535889 1240.120728 1235.076294 1243.813354 1245.319458 1245.337769 1244.089722 1244.417847 1246.394775 1248.980225 1251.394165 1253.585938 1255.942627 1257.161133 1256.381104 1254.063232 1252.765747 1251.454712 1250.007568 1248.507202 1245.812378 1243.749756 1242.04541 1241.263794 1240.060791 1237.707153 1234.869629 1232.457642 1229.372437 1226.275513 1226.080444 1226.591919 1227.756958 1229.816772 1231.456909 1231.837646 1231.301392 1230.946655 1230.443237 1230.508545 1230.701904 1231.418213 1235.22876 1239.846558 1243.76001 1248.745117 1251.458252 1251.412109 1245.068848 1235.372314 1228.464233 1222.389038 1218.52417 1220.965698 1222.440063 1223.459106 1224.257202 1224.819214 1225.311279 1225.830078 1226.466553 1226.964111 1227.389038 1227.796753 1228.092773 1228.297729 1228.441772 1228.37854 1228.301636 1228.038208 1227.937744 1227.729004 1227.739746 1227.758667 1227.668579 1227.547852 1227.289795 1227.039795 1226.854248 1226.450439 1225.863647 1224.871826 1223.586914 1221.890625 1219.980713 1219.323608 1219.181152 1218.680786 1218.065796 1217.397339 1216.869507 1216.237061 1215.604614 1214.9375 1214.430542 1214.181152 1213.907227 1213.606079 1213.339722 1212.822388 1212.214478 1211.451294 1210.500854 1209.487305 1208.423462 1207.463501 1206.885986 1207.137329 1208.060425 1208.639038 1208.42041 1207.461182 1207.145142 1207.124268 1206.95813 1207.230591 1207.32666 1207.227051 1206.804321 1206.031128 1205.52771 1205.388184 1205.280029 1205.11499 1204.847534 1204.447632 1203.981934 1203.817017 1203.756104 1203.873657 1204.205811 1204.59021 1205.201904 1205.634033 1206.105469 1206.792847 1207.210083 1207.625122 1209.240967 1211.398315 1211.862671 1211.412842 1210.069824 1209.043335 1207.697021 1207.557251 1208.969727 1211.122437 1212.190674 1212.606567 1212.297607 1211.46521 1210.275269 1208.659424 1206.988159 1205.093506 1203.258057 1201.440796 1199.61499 1197.853027 1195.943481 1193.756592 1191.199829 1188.93811 1186.867798 1185.481689 1183.98645 1184.355957 1193.976562 1200.09375 1199.728394 1199.422607 1198.730103 1197.956787 1197.338135 1196.840942 1196.798462 1196.666016 1196.752319 1196.31543 1194.971313 1193.707886 1191.926514 1189.802856 1187.594116 1185.355713 1184.092285 1180.847778 1183.590454 1184.223145 1184.125366 1183.841675 1183.402222 1182.049316 1181.16272 1180.720947 1180.29248 1179.774292 1179.148193 1178.487915 1177.931152 1177.553345 1176.984863 1176.270752 1175.595093 1175.250732 1174.935913 1174.596436 1174.093628 1173.437988 1172.379883 1171.621704 1170.97998 1170.933472 1170.778198 1170.400391 1170.020142 1169.839966 1169.701904 1169.719849 1170.070557 1170.843994 1171.014038 1171.110962 1170.4104 1169.681274 1169.050903 1168.414795 1167.819824 1166.929321 1165.770142 1164.393799 1163.010986 1161.782227 1160.842041 1159.941284 1159.878296 1160.14978 1160.571045 1161.042725 1161.484375 1161.996582 1162.350952 1162.648804 1163.023193 1163.305664 1163.655273 1164.007324 1164.309448 1164.503662 1164.366211 1164.150757 1163.802612 1163.463013 1162.856323 1162.289062 1161.766235 1161.139282 1160.565796 1159.577515 1158.742554 1159.839478 1160.585083 1160.905151 1161.001221 1160.802612 1160.715942 1160.655151 1160.8396 1160.813843 1160.568237 1160.076416 1159.297974 1158.470215 1158.295166 1158.822144 1158.439453 1158.729736 1159.372681 1159.944214 1160.412476 1160.729858 1160.828613 1160.781494 1160.883667 1161.06189 1161.528931 1161.952148 1162.44165 1163.359375 1164.262939 1165.556641 1167.026855 1168.552002 1169.598267 1170.351318 1170.927124 1171.171631 1171.485474 1171.912598 1171.989868 1172.787354 1174.61792 1178.200317 1181.940674 1186.247314 1193.260498 1199.831055 1206.085083 1208.923218 1203.491699 1206.813477 1208.260376 1211.814697 1217.754883 1231.460327 1243.960205 1249.659058 1255.460571 1258.529297 1260.521362 1261.594604 1260.075317 1256.133789 1257.096924 1253.840454 1260.904297 1267.90564 1270.643188 1268.700073 1269.559448 1267.651245 1274.135986 1273.727661 1270.52771 1277.563477 1282.058472 1284.704956 1287.73645 1289.450317 1292.495728 1292.601196 1291.297852 1289.089966 1288.270142 1290.476929 1293.458496 1296.792358 1298.274292 1298.558105 1298.477295 1297.780273 1296.616089 1295.745239 1294.837036 1292.401245 1292.512817 1294.375732 1294.650513 1291.973877 1286.822021 1282.798584 1278.733398 1274.331421 1268.669312 1259.797485 1254.441528 1251.530762 1248.580933 1245.737671 1242.056885 1236.506104 1229.922485 1234.40271 1246.291626 1257.418213 1267.472656 1271.743164 1272.0896 1271.75708 1269.08606 1262.732666 1257.276123 1252.20874 1250.85376 1253.526978 1255.119263 1253.620361 1250.808716 1247.361206 1244.328369 1243.185913 1242.963013 1245.322632 1257.3927 1259.484985 1259.033569 1256.151978 1255.488892 1255.766113 1253.423462 1247.237915 1242.475342 1242.648804 1249.832886 1255.647339 1259.642944 1265.553101 1267.422607 1265.916138 1261.758179 1250.940063 1241.512939 1239.242676 1236.701294 1230.758057 1226.852051 1218.539062 1203.300293 1183.60498 1188.042603 1205.722046 1208.321777 1199.789062 1184.436646 1182.772827 1202.909302 1210.400391 1210.794067 1209.737183 1208.556641 1205.283081 1201.645752 1200.418823 1200.769531 1198.87915 1196.275513 1193.092407 1190.341919 1190.038452 1193.327271 1194.561401 1193.815186 1191.033203 1184.60437 1182.074707 1182.543579 1189.550171 1191.319336 1193.084717 1186.56665 1191.524292 1196.593384 1182.515869 1169.640625 1157.197021 1145.897217 1138.314819 1133.502075 1130.18335 1126.413086 1123.142334 1115.5448 1110.437744 1111.554199 1110.34436 1109.661865 1108.979858 1108.462158 1107.977661 1107.527954 1107.049561 1106.593018 1106.206665 1105.838257 1105.340942 1104.951172 1104.80835 1104.616211 1104.707031 1104.719116 1104.564697 -1282.916748 1278.99646 1280.941162 1278.009766 1288.709717 1296.010742 1301.475464 1306.126831 1308.266846 1312.197021 1315.63916 1317.699463 1320.02002 1320.673096 1320.36377 1319.438843 1317.564819 1311.964722 1305.1604 1295.247192 1290.312988 1290.414795 1286.357178 1280.159912 1250.120728 1233.982178 1212.908691 1197.880249 1179.197998 1167.963745 1159.525146 1156.665405 1154.144409 1151.98291 1150.223389 1148.67334 1148.965576 1156.556885 1160.903687 1169.028809 1172.713867 1171.908081 1171.111938 1171.193359 1171.563721 1169.612061 1169.217651 1174.172607 1180.924438 1194.88623 1207.987549 1215.984741 1223.142456 1228.899292 1232.707397 1233.682739 1235.98645 1237.893188 1239.40979 1240.298828 1240.388916 1239.02478 1237.096436 1234.959961 1232.669434 1229.499634 1225.847412 1223.102295 1220.492065 1217.507935 1215.063232 1215.524902 1218.111328 1220.751465 1222.861206 1223.994263 1224.704712 1225.288208 1225.720459 1226.066895 1226.439331 1226.71936 1226.942017 1227.086426 1227.039917 1226.846558 1226.491943 1225.988037 1225.496704 1224.939575 1224.591919 1224.246826 1223.721558 1223.035034 1222.201294 1221.262817 1219.609619 1215.646362 1211.861938 1208.484497 1207.741943 1212.719971 1217.386719 1221.134277 1223.806152 1226.21936 1228.861206 1232.408447 1242.944946 1248.161133 1250.238525 1249.745117 1247.73584 1244.640503 1242.985596 1242.632568 1241.922363 1241.164917 1239.858032 1237.578979 1238.12854 1240.155029 1242.208862 1243.026489 1244.787598 1245.979736 1247.097534 1247.246704 1246.285767 1245.741455 1245.943115 1243.496094 1241.786865 1245.640869 1246.411499 1245.948975 1244.531128 1246.445557 1249.895386 1251.992554 1253.914673 1255.914795 1257.560669 1257.175049 1255.410278 1254.668701 1254.036133 1253.239624 1251.667358 1247.892456 1245.544189 1244.342529 1243.723145 1242.528076 1240.422119 1237.438721 1234.422974 1231.388916 1229.397583 1229.866699 1229.784668 1230.338867 1232.293701 1233.88208 1234.043701 1233.540527 1233.318481 1233.157349 1231.982178 1231.388306 1231.164795 1233.054077 1238.496338 1242.920044 1246.365723 1245.759521 1243.575806 1240.108643 1232.702515 1228.198975 1223.336304 1219.329102 1220.355835 1221.961548 1223.223145 1224.289429 1225.07019 1225.609741 1226.369995 1226.93103 1227.640747 1228.146362 1228.645996 1229.060791 1229.379395 1229.598267 1229.638428 1229.457153 1229.197144 1228.933594 1228.74939 1228.78479 1228.957764 1228.937866 1228.754028 1228.666016 1228.453613 1228.371094 1228.170044 1227.865601 1227.428711 1226.666382 1225.100952 1223.209106 1222.015137 1221.249268 1220.262329 1219.405762 1218.785645 1218.305176 1218.074585 1217.77063 1217.215942 1216.702759 1216.184814 1215.879028 1215.405762 1214.820923 1214.234131 1213.297607 1212.207886 1211.028076 1209.751587 1208.602051 1207.471558 1207.098999 1207.418091 1208.189941 1209.532715 1210.689331 1211.03418 1209.640259 1209.031616 1208.780029 1208.788452 1208.767456 1208.392944 1207.697388 1206.834717 1206.111816 1206.021118 1205.880371 1205.674194 1205.393066 1204.967529 1204.528564 1204.168091 1204.025269 1204.094727 1204.362183 1204.764526 1205.443604 1205.880737 1206.282349 1206.978271 1207.434692 1209.097534 1211.484253 1213.5271 1214.032471 1213.219727 1211.763794 1210.296997 1208.683594 1207.50708 1210.040161 1211.857422 1212.717651 1212.817993 1212.402588 1211.508423 1210.173706 1208.652344 1207.190918 1204.754517 1202.871216 1201.030029 1199.076904 1197.075439 1195.147705 1193.109131 1191.569336 1190.116455 1188.629395 1187.130981 1184.89563 1189.438477 1198.286743 1200.24646 1200.139771 1199.678589 1199.145386 1198.328125 1197.928101 1197.703979 1197.935547 1198.12854 1197.752563 1196.996582 1195.879028 1194.116089 1191.927368 1189.57019 1187.22229 1185.473511 1183.805176 1181.662109 1184.134155 1184.549194 1184.535889 1184.274902 1183.336304 1182.563599 1182.098389 1181.643066 1181.382568 1180.861084 1180.075195 1179.605225 1179.098389 1178.61853 1177.985962 1177.363892 1176.552612 1176.00293 1175.583008 1175.189941 1174.531494 1173.741699 1172.840332 1172.115601 1171.349243 1170.939453 1170.795288 1170.664429 1170.488403 1170.089844 1170.031616 1170.137939 1170.779053 1171.056396 1171.447876 1171.5 1170.981812 1170.342041 1169.829468 1169.434204 1168.935425 1167.983032 1166.73999 1165.255493 1163.678711 1162.424805 1161.478271 1160.688354 1160.433594 1160.715576 1161.091675 1161.518433 1162.004272 1162.549805 1163.112915 1163.63562 1164.297119 1164.87854 1165.411377 1165.916504 1166.308105 1166.161743 1165.925903 1165.400879 1165.029297 1164.474854 1163.888184 1163.397095 1162.77356 1162.178711 1161.651489 1161.058105 1160.323486 1160.723389 1161.372681 1161.664551 1161.849487 1161.814087 1161.723022 1161.709106 1161.639648 1161.50708 1161.12793 1160.312988 1159.451172 1158.735596 1158.566284 1159.330688 1158.514648 1158.471313 1159.040527 1159.542603 1159.949829 1160.180176 1160.304932 1160.137329 1160.068848 1160.28186 1160.548706 1160.995972 1161.44751 1162.438477 1163.539062 1164.616455 1165.651123 1166.964233 1168.08606 1168.796143 1169.407227 1169.974243 1170.217529 1170.497559 1170.664429 1170.936279 1171.669434 1175.298218 1178.971436 1182.161743 1188.804443 1194.951416 1200.679199 1202.470825 1195.278809 1199.558228 1209.113892 1216.054199 1224.914185 1234.069336 1239.560425 1242.867798 1246.483765 1253.133423 1255.764038 1256.126221 1254.267822 1250.254761 1246.712769 1244.231689 1248.597168 1253.349976 1254.52063 1254.703491 1256.114136 1253.430298 1258.959961 1259.642578 1256.840942 1263.541748 1269.618408 1273.462524 1276.583252 1277.837402 1278.907837 1279.689087 1280.280029 1281.729248 1283.297363 1285.793457 1290.225464 1294.962769 1297.911377 1298.628662 1298.489258 1298.050415 1297.531494 1296.819092 1296.210327 1294.001587 1293.456665 1294.986206 1294.653809 1292.641479 1288.708374 1284.696777 1280.890869 1276.488892 1271.23938 1264.355713 1257.408203 1253.820557 1251.416138 1248.864502 1246.073853 1241.99707 1234.461548 1231.874634 1243.624756 1255.183838 1266.752808 1271.824951 1272.900757 1272.458862 1269.854126 1264.944458 1259.578857 1256.103516 1255.484619 1257.815186 1257.703247 1255.73999 1252.658813 1248.245483 1244.242676 1243.270996 1248.317749 1255.54126 1260.648193 1263.296021 1263.697266 1262.517212 1261.884888 1261.32959 1259.682373 1254.579102 1247.279785 1245.476074 1244.469971 1252.69751 1257.301147 1267.067505 1270.099487 1269.890381 1266.031006 1256.123535 1252.315063 1249.573608 1246.608032 1238.801514 1229.599609 1220.583984 1201.139282 1192.613892 1206.577515 1214.57605 1213.304199 1201.027344 1195.83374 1194.306396 1205.117065 1212.187378 1213.160522 1212.361572 1210.38501 1206.808594 1206.699341 1206.800171 1204.593994 1201.716187 1198.501953 1196.032471 1193.695923 1194.587158 1195.775024 1196.852783 1197.115479 1195.719849 1194.137817 1191.08374 1188.608398 1197.812622 1195.85144 1190.150513 1181.77002 1183.348145 1189.845093 1186.74707 1173.079956 1159.644653 1145.192871 1137.627075 1132.828613 1130.219116 1127.011963 1123.563843 1119.090942 1114.999512 1113.511108 1111.94043 1110.627563 1109.807739 1109.283569 1108.785278 1108.270264 1107.857544 1107.347778 1106.954834 1106.449463 1106.089966 1105.845703 1105.817017 1105.958496 1106.230957 1106.560181 1106.58313 -1282.209961 1280.602539 1284.017334 1282.796631 1284.119751 1295.911499 1303.092407 1307.918457 1313.366089 1316.649048 1316.348999 1317.452026 1320.957886 1322.119263 1322.041016 1320.934082 1318.578247 1313.327148 1306.259521 1303.8302 1298.205811 1296.162842 1285.499878 1262.725098 1243.038086 1226.202148 1207.259766 1185.286377 1170.111694 1163.695923 1158.152344 1155.544434 1153.21228 1151.247559 1149.580444 1148.199829 1157.416382 1167.292114 1175.750122 1180.461182 1182.702515 1183.601074 1182.286011 1180.247192 1178.248047 1174.841064 1176.319824 1185.706543 1191.263428 1200.307983 1215.586914 1231.200195 1236.23645 1237.246338 1238.046631 1238.224854 1239.33606 1240.199951 1241.601196 1242.629028 1242.861084 1241.343994 1239.068359 1236.678223 1234.042358 1231.005005 1227.69519 1224.47644 1221.630981 1218.53064 1216.40979 1218.730713 1218.869263 1219.557251 1221.589844 1222.667847 1223.953491 1224.906738 1225.754639 1226.341431 1226.645386 1227.024902 1227.313599 1227.489624 1227.580566 1227.376221 1227.016602 1226.621582 1226.098877 1225.611084 1225.249268 1224.815186 1224.270752 1223.493896 1222.603882 1221.465942 1219.869873 1216.181519 1212.245117 1209.03418 1209.481445 1214.040039 1218.54834 1221.77832 1224.290527 1227.287598 1229.909302 1234.136353 1244.463623 1251.350952 1254.549561 1253.902832 1250.727295 1247.478027 1245.508545 1245.246948 1243.891724 1243.658691 1243.384033 1241.671143 1239.431519 1242.170044 1245.025513 1244.491699 1246.287598 1247.957031 1248.941895 1249.098999 1248.800781 1248.312988 1247.71106 1245.700073 1242.491089 1246.353638 1247.674683 1247.969604 1248.38855 1249.900269 1251.483643 1252.752808 1254.134277 1255.732422 1257.382812 1258.097656 1257.199341 1257.056519 1256.884155 1256.451416 1254.708984 1250.786377 1248.959961 1247.680176 1246.823608 1245.447632 1243.510254 1240.28894 1235.991699 1232.709839 1232.845703 1233.978516 1232.64209 1231.820312 1234.288818 1235.658203 1236.010254 1235.78186 1235.559814 1235.083008 1233.860107 1233.041138 1232.125488 1232.786621 1238.10022 1242.27417 1245.062378 1244.783813 1240.907837 1235.728882 1230.744629 1227.491699 1224.076538 1220.754395 1220.000854 1221.582764 1223.21228 1224.422974 1225.337402 1226.011719 1226.682129 1227.426636 1228.116333 1228.71106 1229.27771 1229.907715 1230.49585 1230.816162 1230.926147 1230.664795 1230.166626 1229.779419 1229.759277 1229.940308 1230.143188 1229.994385 1229.847534 1229.761353 1229.774292 1229.846924 1229.786133 1229.695312 1229.840942 1230.060913 1229.537842 1228.088501 1226.490479 1225.13623 1223.736206 1222.303833 1220.263672 1219.55896 1219.865356 1219.564209 1219.184937 1218.70459 1218.093262 1217.618042 1217.101318 1216.579956 1215.753296 1214.516113 1213.096069 1211.472412 1210.080811 1208.725586 1207.530884 1207.132202 1207.317383 1208.225098 1210.346313 1212.726562 1215.837402 1216.384399 1214.709961 1212.773438 1211.567871 1210.676025 1209.826172 1208.831787 1207.48584 1206.72937 1206.622681 1206.434082 1206.125732 1205.645996 1205.224243 1204.857178 1204.590576 1204.394897 1204.389771 1204.657593 1205.008667 1205.486084 1206.019653 1206.517334 1207.183228 1208.146606 1210.941406 1214.574707 1216.805786 1216.850708 1215.307739 1213.567017 1212.086426 1210.581665 1210.908203 1212.166992 1212.924805 1213.308228 1213.125854 1212.513794 1211.54895 1210.185669 1208.718872 1206.634399 1204.733765 1202.74707 1200.615967 1198.505615 1196.65686 1194.733398 1193.217041 1192.300537 1191.413452 1190.508789 1189.582031 1189.706787 1193.748657 1198.266235 1199.598999 1199.987305 1199.903076 1199.421875 1198.887085 1198.452148 1198.33374 1199.006714 1199.447266 1198.60376 1197.614502 1196.19104 1194.220581 1191.532471 1189.110962 1186.834229 1184.366943 1182.729004 1183.588257 1184.530273 1184.814941 1184.83313 1184.629272 1183.936646 1183.691772 1183.313721 1182.857666 1182.369263 1181.812744 1181.109009 1180.696533 1180.150635 1179.634277 1178.921021 1178.205566 1177.447632 1176.818359 1176.399292 1175.846436 1175.102051 1174.335205 1173.50293 1172.611206 1171.858032 1171.356812 1171.254761 1171.168579 1170.916382 1170.342041 1170.279297 1170.408447 1170.949707 1171.498779 1171.797607 1171.849609 1171.516968 1171.161133 1170.786499 1170.479858 1170.004639 1169.225098 1167.803101 1166.036987 1164.321167 1162.927124 1161.805176 1161.046265 1161.084717 1161.288818 1161.842773 1162.25708 1162.734741 1163.274658 1163.909668 1164.725098 1165.570923 1166.424316 1167.442139 1168.176514 1168.467529 1168.177124 1167.506592 1166.792114 1166.207642 1165.626221 1164.976929 1164.393555 1163.911133 1163.326294 1162.9375 1162.484741 1162.055908 1162.083374 1162.23999 1162.59375 1162.84375 1162.795898 1162.846191 1162.85144 1162.791504 1162.528198 1162.072632 1161.255371 1160.310181 1159.317017 1159.50354 1159.436035 1158.491211 1158.450439 1158.644775 1159.07373 1159.405518 1159.552124 1159.544312 1159.365234 1159.239014 1159.356323 1159.272339 1159.594116 1160.290649 1161.61438 1162.78894 1163.584839 1164.233765 1165.307739 1166.283569 1166.954224 1167.790405 1168.536133 1169.027222 1169.352661 1169.643555 1169.904419 1170.457397 1172.741089 1177.030029 1180.694214 1182.86084 1188.200317 1195.447021 1195.988647 1193.609497 1202.431396 1210.855591 1219.478882 1227.650269 1233.396606 1235.085083 1237.033813 1241.261597 1247.42981 1249.246704 1246.543823 1246.281982 1244.122314 1238.999023 1237.464478 1239.169922 1241.048584 1240.795654 1241.292725 1241.137695 1242.339722 1245.87085 1247.314697 1245.147339 1249.662964 1254.014648 1258.538086 1263.24939 1268.610962 1269.242065 1270.019897 1268.676147 1271.346191 1276.10498 1279.878906 1284.744385 1291.9198 1295.901001 1297.687988 1298.003906 1297.71228 1297.758911 1297.30481 1297.221191 1296.690796 1296.260376 1295.849854 1294.917358 1292.537842 1289.712891 1286.871704 1283.205688 1278.844604 1273.935547 1268.573975 1261.252075 1256.046509 1253.710327 1251.710938 1249.244629 1246.299927 1241.087402 1233.937988 1242.255127 1254.266113 1266.115356 1272.270264 1274.130249 1274.381104 1271.158203 1266.854736 1262.583374 1259.259888 1259.177368 1260.032837 1259.497192 1257.56897 1255.128662 1249.591431 1244.003296 1245.024414 1257.364868 1260.766479 1264.272095 1267.009521 1268.630981 1269.209473 1268.103149 1266.66394 1264.31897 1259.069946 1253.963135 1252.81958 1252.117554 1253.730591 1259.906616 1268.611816 1271.263428 1271.091431 1269.544922 1263.868042 1258.646118 1250.942871 1245.257446 1236.337158 1226.935913 1214.533325 1197.854126 1206.71582 1216.897339 1221.423462 1216.990967 1204.919189 1209.269897 1201.456787 1207.815186 1215.758911 1216.627563 1214.872192 1212.134888 1209.56897 1209.411011 1208.842773 1206.881836 1204.741943 1201.550659 1197.864014 1195.100586 1194.34314 1195.563599 1196.982422 1198.069702 1197.931519 1197.944336 1197.886353 1197.406494 1195.147705 1182.537842 1176.627319 1171.322021 1170.690918 1178.238037 1185.24353 1176.296021 1161.574951 1146.678833 1139.102173 1133.289795 1131.536133 1128.207397 1124.122559 1120.897827 1117.74231 1115.588745 1113.539429 1112.061035 1110.917358 1110.081299 1109.518921 1109.077759 1108.634766 1108.057007 1107.580322 1107.135132 1106.852051 1106.811157 1106.913696 1107.211914 1107.894897 1108.482422 1108.449219 -1281.241333 1282.462524 1287.467773 1289.400879 1290.186157 1295.162476 1303.375 1308.752197 1315.865601 1319.227051 1319.549194 1320.492188 1323.484497 1324.465332 1324.081299 1322.708984 1319.1698 1315.366577 1313.18811 1309.059814 1302.558838 1290.612671 1265.339233 1247.922852 1228.18396 1214.720459 1198.505859 1181.123047 1168.556274 1161.366943 1157.452026 1154.804199 1152.546021 1150.5354 1148.554443 1156.298584 1169.129639 1179.983154 1186.773926 1190.58252 1190.755615 1190.050659 1190.331543 1188.706787 1184.881104 1183.33667 1183.044678 1196.629517 1206.652466 1215.206665 1227.921509 1239.634888 1244.285278 1244.367798 1242.560425 1241.267578 1242.242676 1243.024536 1243.829224 1244.865234 1245.119751 1243.481201 1240.824097 1238.141968 1235.384888 1232.5625 1229.197021 1225.142334 1221.931763 1218.689575 1218.815918 1220.948853 1220.022461 1219.296265 1220.338989 1221.612305 1223.118896 1224.514404 1225.803223 1226.637939 1227.174683 1227.482788 1227.755859 1227.99939 1227.984375 1227.927612 1227.7052 1227.224487 1226.750977 1226.222412 1225.812012 1225.424194 1224.747437 1223.964355 1222.908569 1221.629028 1219.974731 1217.023682 1213.344238 1209.176758 1211.178101 1215.277466 1219.601685 1222.289673 1225.189209 1228.21106 1231.499146 1240.531128 1248.137085 1254.498413 1257.37561 1257.062622 1254.159546 1251.900146 1250.176758 1249.043945 1247.818848 1247.147461 1246.78894 1245.917725 1244.039795 1242.190918 1246.029053 1248.049683 1249.177856 1250.598511 1251.212158 1251.303711 1250.96875 1250.296143 1248.962646 1245.965454 1243.498901 1247.133057 1249.714355 1251.484253 1252.036133 1252.583862 1252.991699 1253.523926 1254.425415 1255.746094 1257.250977 1258.828613 1259.331299 1259.266357 1259.390015 1258.834839 1257.019287 1253.802734 1252.582275 1251.091064 1249.94397 1248.272583 1246.065063 1243.233154 1237.057617 1234.540405 1237.314697 1240.867065 1239.762207 1237.738892 1237.616455 1237.993774 1238.085693 1237.859131 1237.561035 1237.095215 1236.325439 1235.196533 1234.434692 1235.8125 1239.504395 1243.781128 1245.056885 1244.975098 1240.881836 1234.661621 1230.712402 1227.576782 1224.429932 1221.791016 1220.24231 1221.741455 1223.457275 1224.782227 1225.817261 1226.655762 1227.234253 1227.807373 1228.469238 1229.122437 1229.751587 1230.471924 1231.231079 1231.815063 1232.052246 1231.713867 1230.78833 1230.46875 1230.626831 1231.198486 1231.409058 1231.232056 1230.806763 1230.782471 1231.062622 1231.338623 1231.47229 1231.456421 1231.68457 1232.774414 1233.164307 1232.515991 1230.417725 1229.933228 1228.950073 1226.785522 1224.663818 1223.968018 1223.97937 1222.992188 1221.656372 1220.780273 1219.928345 1219.255493 1218.841064 1218.094604 1217.250366 1215.84668 1213.901123 1211.862549 1209.904175 1208.246338 1207.300781 1207.100586 1207.10083 1208.072876 1210.613281 1213.570923 1218.54895 1220.869019 1220.226929 1217.257812 1214.817383 1212.930786 1211.433228 1209.934326 1208.214478 1207.856201 1207.164062 1206.777466 1206.193359 1205.695557 1205.261597 1205.088013 1204.88269 1204.886963 1204.824951 1205.014282 1205.306274 1205.794067 1206.165649 1206.699707 1207.244751 1208.67688 1213.155396 1217.73938 1219.976074 1219.429199 1217.399536 1215.485962 1214.138428 1213.522217 1213.538696 1213.714844 1214.005737 1213.952393 1213.483643 1212.677612 1211.502686 1210.342041 1208.80896 1207.555176 1205.553833 1202.851562 1200.0448 1197.911743 1196.175659 1194.536865 1193.661255 1193.168701 1193.015625 1192.781372 1192.330078 1192.536499 1194.966797 1197.570679 1199.306274 1200.081909 1200.112061 1199.82251 1199.421265 1198.997314 1199.036621 1199.918701 1200.487671 1199.44397 1198.002441 1196.140259 1193.888916 1191.25293 1188.626953 1186.024414 1183.807983 1183.841675 1184.481079 1184.961548 1185.225342 1185.306641 1185.152832 1184.846558 1184.393433 1184.121704 1183.713989 1183.25 1182.596802 1182.23999 1181.683716 1181.058594 1180.431396 1179.858032 1179.074707 1178.274536 1177.686157 1177.137573 1176.474609 1175.747192 1174.813477 1174.008545 1173.199707 1172.701172 1172.210205 1171.820923 1171.451294 1171.114014 1170.555786 1170.493286 1170.797363 1171.069702 1171.835449 1172.255859 1172.307983 1172.166626 1171.86084 1171.602905 1171.314209 1170.913696 1170.213379 1168.772461 1166.82959 1164.91687 1163.239868 1162.116455 1161.554077 1161.916138 1162.234985 1162.692505 1163.059692 1163.524658 1164.176392 1164.868042 1165.758667 1166.801758 1167.768677 1169.22644 1170.592773 1170.636841 1169.753784 1168.899902 1168.099365 1167.432373 1166.792114 1166.125488 1165.480835 1164.949829 1164.507812 1164.031982 1163.724976 1163.353638 1163.321167 1163.439209 1163.582031 1163.773071 1163.958496 1164.05188 1164.099731 1164.147705 1163.981934 1163.462402 1162.712036 1161.837646 1161.223877 1160.565674 1159.418335 1158.506226 1158.442749 1158.447754 1158.521851 1158.680176 1158.689209 1158.63562 1158.522461 1158.537842 1158.613647 1158.673462 1159.451904 1159.336304 1160.632935 1161.989014 1162.636597 1162.93811 1163.639648 1164.384277 1165.218262 1166.007446 1166.963989 1167.761841 1168.484741 1169.061646 1169.800659 1171.04834 1173.116211 1176.164429 1178.882324 1180.843384 1183.883057 1188.155273 1190.06543 1193.991943 1202.031128 1209.676025 1215.672485 1220.753052 1225.291748 1228.534424 1230.543091 1237.471558 1245.528198 1246.428223 1243.008911 1240.196777 1234.117798 1230.802002 1230.491089 1233.435913 1233.744385 1234.131348 1233.85791 1233.621826 1236.965576 1234.333984 1236.943604 1237.419312 1239.630737 1242.14917 1243.255859 1249.879639 1258.276001 1258.288452 1258.420166 1256.736328 1262.459351 1268.065674 1270.298218 1277.270752 1283.591797 1290.45166 1293.159546 1294.239258 1295.580566 1296.477539 1296.686279 1297.533813 1297.618164 1297.117676 1296.526367 1295.653687 1293.659546 1292.520264 1289.26062 1285.302979 1281.388794 1276.574585 1271.258667 1265.504028 1260.13855 1256.574951 1254.523682 1252.332764 1249.417603 1245.87146 1238.118896 1241.187378 1255.306274 1265.840576 1272.581665 1276.464966 1278.123901 1274.015869 1268.033203 1265.180054 1263.169189 1262.407471 1262.119385 1261.254395 1259.700928 1257.584839 1251.97998 1244.692383 1246.449707 1259.235352 1264.794189 1268.606323 1271.524902 1273.511963 1273.924805 1273.097778 1271.856567 1269.598145 1265.324097 1259.471313 1259.042847 1258.663574 1257.075562 1258.098755 1270.103271 1272.164673 1271.815186 1269.575073 1262.908081 1257.594238 1242.588623 1239.671875 1230.778931 1223.805908 1213.342529 1207.899536 1216.326782 1222.65271 1225.133667 1219.741089 1206.714722 1210.414673 1207.616089 1209.445923 1220.78418 1219.585205 1217.209961 1214.429565 1211.869385 1210.275269 1209.446655 1208.851685 1207.860229 1203.998169 1199.708374 1196.756226 1194.627563 1194.307495 1192.376221 1191.861938 1188.375488 1192.44519 1195.90918 1196.010498 1194.262329 1178.066406 1168.796509 1163.171875 1163.357666 1168.253296 1177.38562 1176.844604 1164.050781 1150.443237 1142.525513 1136.219604 1134.576904 1130.106689 1125.502441 1122.506958 1119.869141 1117.479004 1115.176147 1113.418823 1112.012573 1111.196655 1110.459717 1109.837891 1109.343628 1108.746704 1108.099121 1107.820923 1107.738037 1107.608521 1107.893188 1108.402954 1109.394165 1109.986084 1110.108032 -1284.141724 1287.919189 1293.117798 1294.894409 1294.416626 1293.387573 1302.787354 1308.067261 1313.91626 1317.564819 1321.127441 1325.296631 1327.670166 1327.410278 1326.357544 1325.638672 1322.700439 1319.684448 1318.565063 1311.911987 1298.596191 1277.958252 1253.204346 1233.648804 1216.893921 1202.445923 1187.62561 1175.187744 1166.747437 1160.202759 1156.878662 1154.258179 1151.884766 1149.938354 1151.809082 1166.991333 1180.61377 1190.490723 1198.074219 1200.260132 1198.038696 1194.90686 1197.568481 1196.462158 1192.101562 1193.618164 1194.715942 1208.057983 1223.415649 1234.983643 1239.768188 1247.245239 1249.099976 1248.198975 1244.930908 1242.864136 1245.241455 1246.257935 1246.61499 1247.161255 1246.449341 1244.60022 1241.793457 1239.192017 1236.464722 1233.605469 1230.30542 1225.126709 1221.583496 1218.810059 1220.530518 1221.803345 1221.156982 1219.557129 1219.366821 1220.227905 1222.039185 1223.999268 1225.701172 1226.978882 1227.678833 1228.119385 1228.310791 1228.537476 1228.566162 1228.445068 1228.2948 1227.921875 1227.403198 1226.845459 1226.44165 1225.892456 1225.141235 1224.320801 1223.253296 1221.99353 1220.514771 1220.218506 1215.175293 1209.755737 1212.386719 1215.867798 1219.160767 1222.619873 1225.660278 1228.883667 1233.562256 1244.536865 1250.31958 1256.32251 1258.377197 1258.209961 1256.180176 1255.551758 1254.82312 1253.047974 1251.889648 1251.693115 1251.217651 1249.677002 1246.90918 1243.884521 1246.443604 1251.329468 1252.81311 1253.305908 1253.756592 1253.473511 1252.906616 1252.361694 1250.811523 1247.434692 1243.861938 1247.769043 1253.536377 1255.753052 1254.940674 1254.71582 1254.47168 1254.493774 1255.032349 1256.120483 1257.976807 1259.611328 1261.218628 1262.496948 1263.231689 1262.262695 1260.037598 1256.984497 1255.980835 1254.571777 1253.312866 1251.339111 1248.427002 1245.593628 1237.644409 1239.177246 1241.699707 1245.082764 1244.930054 1243.270264 1241.681274 1240.379639 1239.999512 1239.836426 1239.832275 1239.565918 1238.611816 1237.758301 1237.461304 1238.602905 1240.661621 1243.889771 1245.14502 1244.929321 1241.010986 1235.921387 1232.386719 1228.502441 1224.556519 1221.656128 1221.193604 1222.462891 1224.125488 1225.693604 1226.684082 1227.40332 1227.894409 1228.317871 1228.881836 1229.468506 1230.242554 1231.016357 1231.80249 1232.634766 1232.738647 1232.199463 1231.158569 1231.05127 1231.568237 1231.875732 1232.577271 1232.560425 1231.822144 1231.80896 1232.536987 1233.132446 1233.516235 1233.719238 1234.346191 1235.358643 1236.203857 1235.75293 1234.429443 1234.462646 1233.861328 1231.999756 1229.464478 1230.94519 1231.038208 1228.084229 1225.428833 1223.499756 1222.174438 1221.352295 1220.53479 1219.638794 1218.662598 1217.129395 1214.736572 1211.805542 1208.843994 1207.506836 1207.430664 1207.493896 1207.091431 1207.266113 1208.516724 1211.149414 1214.873413 1218.690063 1220.837402 1219.697266 1217.262695 1215.015137 1213.030884 1211.142944 1209.814941 1208.753784 1207.59375 1207.004028 1206.286743 1205.806641 1205.427979 1205.217529 1205.1073 1205.196655 1205.272583 1205.373047 1205.747559 1206.00354 1206.426392 1206.840454 1207.786621 1210.832153 1215.172974 1219.819946 1220.739502 1220.390869 1218.929565 1217.37561 1216.32666 1215.526733 1215.210327 1215.169189 1215.020142 1214.675537 1213.952271 1212.945557 1211.82251 1210.561401 1209.514893 1208.401733 1206.101929 1202.420288 1199.218384 1196.995361 1195.256714 1194.188965 1193.962036 1194.037598 1194.779907 1194.935303 1194.85437 1194.165283 1195.039062 1197.824951 1199.553955 1200.404907 1200.594238 1200.23938 1199.883789 1199.55127 1199.665894 1200.725098 1201.31311 1199.998413 1198.387573 1195.988281 1193.676636 1191.438477 1188.7323 1186.114502 1184.543335 1184.707031 1185.046387 1185.444824 1185.734985 1185.792603 1185.775635 1185.537476 1185.258789 1184.887573 1184.433716 1184.033691 1183.572998 1183.15979 1182.502563 1181.712402 1181.206299 1180.61377 1179.924438 1179.204346 1178.575562 1177.850342 1177.074707 1176.247437 1175.502808 1174.63916 1173.873291 1173.148438 1172.351196 1171.598999 1170.988281 1170.841064 1170.71228 1170.908081 1171.074097 1171.569458 1172.306763 1172.648315 1172.822388 1172.755493 1172.666748 1172.294312 1172.041748 1171.566895 1171.203491 1169.997925 1167.888672 1165.459473 1163.524048 1162.387085 1162.365356 1162.747314 1163.035278 1163.449707 1163.906616 1164.440674 1165.109863 1165.795776 1166.672607 1167.533447 1168.638184 1169.901855 1171.019165 1171.175049 1170.647339 1169.728027 1169.077271 1168.514404 1167.865845 1167.231201 1166.508423 1165.949707 1165.452637 1165.071655 1164.730225 1164.42395 1164.474609 1164.577148 1164.626465 1164.76062 1164.989502 1165.258789 1165.654907 1165.90332 1165.837402 1165.46936 1164.616821 1163.640625 1162.623291 1161.344116 1159.459717 1158.55481 1159.711548 1158.660767 1158.454346 1158.453735 1158.44751 1158.44165 1159.153564 1160.038086 1159.953369 1160.626831 1160.414185 1159.999023 1160.078003 1161.426758 1161.903809 1162.209351 1162.459473 1162.98877 1163.372437 1164.365112 1165.429199 1166.688965 1167.848999 1168.82019 1170.129272 1171.961182 1173.832642 1175.516357 1177.464844 1179.575928 1181.884888 1182.60791 1185.261353 1194.80481 1200.372925 1205.558472 1209.688721 1211.971924 1216.205688 1221.667847 1230.618896 1237.306396 1242.913086 1245.851929 1245.021973 1239.413696 1232.067627 1226.914551 1221.723145 1225.282593 1227.152344 1227.978638 1228.140259 1229.464722 1234.2052 1231.151123 1229.580322 1229.969971 1232.087524 1232.011597 1230.918579 1238.47998 1243.355957 1243.771606 1246.503052 1243.636597 1255.65332 1258.854492 1261.424805 1270.644409 1276.147461 1280.178223 1283.596924 1286.043091 1288.459595 1291.202393 1292.967651 1294.655273 1297.715332 1297.721558 1296.96582 1296.400391 1295.436523 1294.184082 1291.140503 1287.56958 1283.817505 1279.502441 1274.414795 1269.646851 1265.459595 1261.438354 1258.383057 1255.400391 1252.430542 1248.270264 1241.964722 1240.969238 1255.708374 1265.506714 1272.611206 1278.476196 1281.887695 1278.515137 1270.120605 1267.20166 1265.410889 1264.672974 1264.299561 1263.321655 1261.346558 1258.744751 1253.810181 1245.63208 1245.764282 1257.564575 1267.067627 1272.035522 1276.299072 1279.463501 1279.031616 1277.831787 1276.397217 1274.297485 1270.530762 1266.13623 1266.478516 1268.887329 1269.27124 1267.93396 1271.428711 1272.885498 1271.77356 1267.083984 1256.447266 1251.172852 1249.606934 1247.72583 1240.571289 1231.649902 1216.877441 1213.161621 1228.226929 1231.568237 1228.783081 1221.24231 1206.412476 1216.610474 1210.654785 1212.24646 1221.814575 1221.216309 1218.427246 1215.214722 1211.990112 1209.180054 1207.656006 1207.853149 1207.883667 1204.840576 1200.665649 1198.609985 1196.746948 1194.8125 1188.957764 1182.163086 1180.060791 1179.064575 1180.831543 1187.213135 1187.240845 1176.241943 1165.437622 1157.830688 1157.62439 1163.220459 1174.033691 1179.903198 1166.612183 1153.971313 1144.941895 1139.047607 1135.074707 1130.569702 1126.352539 1123.563599 1121.09436 1118.974609 1116.579712 1114.61438 1113.294922 1112.270142 1111.557861 1110.802856 1110.054077 1109.212646 1108.687744 1108.546143 1108.595215 1108.76709 1108.937622 1109.651367 1110.375488 1110.636475 1110.494141 -1290.658569 1293.75061 1296.293457 1298.56189 1301.048096 1303.964966 1304.237671 1309.857544 1314.723755 1318.034912 1322.379761 1328.698486 1330.173828 1329.311035 1327.977051 1329.013916 1327.314575 1323.507812 1320.328003 1312.663208 1290.909302 1264.917236 1247.689209 1233.925903 1209.519165 1195.467041 1182.533936 1173.123779 1166.028076 1159.756714 1156.599854 1154.029785 1151.412964 1149.543823 1156.427734 1176.538696 1188.875366 1201.67041 1209.228271 1210.422729 1206.031616 1203.397583 1204.17688 1202.977051 1199.815186 1204.730591 1211.08252 1223.845947 1233.883301 1240.495605 1246.488037 1253.534668 1255.972412 1253.029053 1246.966309 1246.142822 1249.252319 1250.113892 1249.815063 1249.016479 1247.504517 1245.166626 1242.479858 1239.622803 1236.519409 1233.846924 1229.994629 1224.170288 1220.856445 1220.465454 1221.988892 1222.613647 1221.869385 1220.221069 1219.518555 1219.692017 1220.248291 1223.160156 1225.566772 1227.321899 1228.286865 1228.835938 1228.994507 1229.053589 1229.148682 1229.046509 1228.863159 1228.50647 1228.006104 1227.499512 1226.889648 1226.254639 1225.434937 1224.580322 1223.460938 1222.551147 1221.589478 1220.697754 1216.415771 1210.841309 1213.264771 1218.362915 1220.853638 1223.564697 1226.822144 1229.771973 1234.571289 1244.545532 1250.885254 1256.589355 1258.616943 1259.184082 1258.800537 1258.557983 1257.88269 1256.194702 1255.378052 1255.960815 1256.427612 1254.651733 1249.969238 1246.423096 1251.051758 1256.550537 1255.748169 1255.882324 1256.111816 1255.054688 1254.547119 1254.801758 1253.875732 1250.921387 1246.178223 1248.661377 1255.781616 1257.209229 1256.877808 1255.978882 1255.571167 1255.638184 1256.430908 1256.437378 1256.720215 1260.424438 1263.005127 1265.189453 1267.265747 1267.459473 1263.938232 1260.453857 1259.015869 1257.919312 1256.997192 1254.807739 1251.109741 1246.912476 1240.083252 1245.27063 1243.536499 1244.991943 1246.644165 1246.092285 1243.92395 1242.345825 1241.92749 1241.931641 1242.096191 1242.040649 1241.341553 1240.013062 1239.599243 1240.269897 1241.796143 1243.969238 1245.130615 1244.105957 1240.668945 1236.569824 1233.22644 1229.285645 1224.646606 1221.734131 1222.31665 1223.686157 1225.473633 1226.930054 1227.84436 1228.391724 1228.655273 1228.896729 1229.319458 1229.838501 1230.595459 1231.47876 1232.212402 1232.921753 1232.988281 1232.491943 1231.414307 1231.387573 1231.960571 1232.852417 1233.581421 1233.795288 1233.523804 1233.696899 1234.505005 1235.276367 1235.985352 1236.837769 1237.924438 1239.011841 1239.857056 1240.248169 1239.729126 1239.417114 1238.39209 1235.872803 1233.057251 1234.247437 1233.880615 1232.231445 1229.262085 1226.672974 1224.812622 1223.278687 1222.314331 1221.389526 1220.251587 1218.442505 1215.515747 1211.564453 1207.800293 1207.61731 1208.27356 1208.444946 1207.419189 1207.519775 1207.498169 1207.205078 1208.463135 1212.990723 1218.235596 1220.534302 1219.185547 1216.820557 1214.490112 1212.481934 1210.932373 1209.612915 1208.214355 1207.172974 1206.437012 1205.95874 1205.56958 1205.356934 1205.29187 1205.43103 1205.485352 1205.74353 1206.00293 1206.524658 1207.27356 1207.352295 1209.233765 1212.714966 1217.015015 1220.650391 1220.997437 1221.012085 1220.162964 1218.96936 1217.841064 1216.946411 1216.438232 1216.207886 1215.861206 1215.316406 1214.431519 1213.313232 1212.003296 1210.795044 1209.827148 1208.575439 1205.933105 1201.686157 1197.94043 1195.519287 1194.562256 1194.304688 1194.261963 1195.060425 1196.092041 1196.62561 1196.728149 1196.075806 1195.337646 1198.931519 1200.464355 1201.178467 1201.179199 1200.817261 1200.495361 1200.10437 1200.330933 1201.323853 1201.752686 1200.36145 1198.611206 1196.517212 1194.22583 1191.514038 1188.928101 1186.772461 1185.330322 1185.447388 1185.563232 1185.948364 1186.203247 1186.329224 1186.318237 1186.135864 1185.827393 1185.462524 1184.977783 1184.568604 1184.108154 1183.578857 1182.988281 1182.149048 1181.758789 1181.41748 1180.78064 1180.105225 1179.248413 1178.540283 1177.834717 1177.042114 1176.22522 1175.439819 1174.614624 1173.664307 1172.02771 1170.924316 1171.003052 1171.074707 1171.160645 1171.22229 1171.498047 1172.122559 1172.759644 1173.168213 1173.362915 1173.36731 1173.116699 1172.855591 1172.429077 1172.039185 1171.602539 1170.97876 1168.631958 1165.805542 1163.701416 1162.72522 1163.060181 1163.408569 1163.712769 1164.107788 1164.539429 1165.14978 1165.780396 1166.543579 1167.302612 1168.141602 1169.028198 1170.099976 1170.865601 1171.204102 1171.1521 1170.444214 1169.938354 1169.519531 1168.953613 1168.118652 1167.502319 1166.845703 1166.322388 1165.887573 1165.555664 1165.3125 1165.49939 1165.559692 1165.672485 1165.779907 1165.971802 1166.476318 1167.140991 1167.788574 1168.14563 1167.714722 1166.759521 1165.605957 1163.897339 1161.990234 1159.733521 1158.736816 1163.008179 1163.128784 1158.203857 1158.406738 1158.452881 1159.25769 1161.246826 1162.424683 1162.819214 1162.894775 1162.247681 1160.479736 1160.292358 1161.222778 1161.666626 1162.162231 1163.118896 1163.348633 1163.572388 1163.671143 1164.571899 1165.950195 1167.290039 1168.720947 1170.244019 1172.025879 1173.65625 1174.981567 1176.573486 1178.19873 1179.939209 1181.632202 1185.516479 1193.506836 1197.569458 1200.145508 1200.68042 1205.441895 1214.956665 1224.117798 1232.228149 1235.432861 1237.953735 1241.879272 1243.640259 1241.527466 1235.347534 1228.896851 1219.866699 1218.630859 1221.170532 1222.998657 1222.5896 1222.03186 1231.789307 1229.846802 1224.417725 1224.138672 1223.119263 1223.096924 1225.929932 1229.982666 1233.001343 1231.072632 1232.065796 1235.228271 1241.442017 1251.842163 1260.38855 1267.425903 1270.884888 1272.479858 1274.45459 1277.033325 1278.325562 1280.001343 1281.024414 1288.625 1295.432251 1296.917603 1297.12439 1296.735718 1295.908325 1294.858887 1292.345459 1289.727661 1286.498047 1282.440552 1277.977417 1273.760376 1269.924072 1266.113403 1262.886108 1259.531982 1255.660767 1251.38208 1245.557251 1240.445923 1254.017944 1265.532959 1272.863892 1279.007568 1282.68457 1282.215454 1274.771851 1268.893433 1267.464844 1266.846802 1266.575684 1265.900635 1263.567383 1259.658813 1255.189331 1245.592041 1244.369873 1254.168457 1265.842529 1272.860107 1279.423828 1283.348267 1284.183228 1283.460449 1281.658936 1279.194702 1277.70105 1275.320923 1274.881592 1275.769165 1275.333374 1274.612305 1275.885254 1275.44104 1270.160156 1258.879028 1258.446655 1260.566895 1259.538696 1254.762695 1244.973877 1234.231079 1224.305054 1226.46228 1235.807495 1235.795044 1233.275757 1225.12561 1216.987427 1222.120605 1219.050171 1218.370605 1222.293823 1221.779907 1218.641113 1214.342773 1209.953247 1207.167969 1206.235596 1204.837769 1200.651245 1199.810303 1199.230225 1198.507202 1197.930054 1197.802246 1197.824219 1194.145874 1186.560181 1173.652222 1168.834839 1177.755005 1178.953003 1170.75061 1160.511841 1155.194336 1154.82959 1158.578491 1174.343262 1185.801514 1168.375244 1155.963745 1145.557983 1137.424438 1133.171387 1129.912231 1125.604492 1123.60437 1122.186401 1119.654297 1117.548462 1115.756958 1114.485107 1113.328735 1112.568481 1111.638794 1110.677368 1109.576538 1109.364868 1109.348022 1109.51123 1109.878662 1109.945068 1110.294312 1110.723267 1110.598511 1110.591675 -1292.612305 1296.834717 1299.622192 1302.253418 1305.815674 1309.968018 1311.651245 1313.803711 1316.706543 1321.25415 1326.190796 1330.901367 1331.723877 1329.879272 1336.357056 1341.400146 1330.187134 1326.343262 1321.641357 1309.295044 1283.799927 1259.71582 1241.136719 1226.793213 1209.564087 1192.463013 1181.290894 1171.457153 1165.555908 1160.069702 1157.083008 1154.27124 1151.46936 1150.805908 1162.254395 1180.988647 1196.483154 1216.07605 1224.779175 1225.439819 1214.951416 1212.36499 1217.244385 1216.049316 1209.765015 1220.947632 1234.801147 1243.252075 1243.13916 1245.697754 1254.421265 1259.646606 1259.715942 1256.512573 1253.246094 1253.175415 1254.493896 1254.124634 1252.58606 1250.828735 1248.670776 1246.575439 1243.932983 1238.591309 1235.120728 1231.89624 1226.474854 1222.171387 1221.742798 1223.019775 1224.120605 1224.265381 1222.87854 1220.831909 1219.857422 1220.266357 1219.770752 1221.013428 1225.520508 1227.758545 1228.955444 1229.493774 1229.661133 1229.772949 1229.692993 1229.605713 1229.472534 1229.012939 1228.633545 1227.977661 1227.265381 1226.461548 1225.574097 1224.584473 1223.540527 1222.653931 1221.876953 1220.217041 1215.718628 1212.114624 1213.691895 1218.088989 1221.467285 1224.841797 1228.065552 1231.117676 1236.52356 1245.252197 1251.156006 1255.058838 1258.419678 1260.434692 1261.099487 1260.90686 1259.949585 1258.755737 1258.750977 1258.850708 1258.619629 1257.568237 1253.208374 1248.685425 1256.445923 1258.431274 1257.996094 1258.146362 1258.309814 1256.68457 1256.741211 1257.532959 1257.419556 1256.086548 1249.767456 1248.906494 1255.954834 1257.672241 1257.965332 1257.695801 1256.672852 1256.158081 1257.903076 1258.349609 1258.674438 1262.024292 1264.79126 1267.026489 1268.998413 1269.11731 1266.818115 1264.236572 1262.758911 1261.120483 1259.533691 1257.422607 1253.371704 1247.564087 1242.666138 1246.103271 1245.784546 1245.937012 1248.351685 1248.371216 1246.391113 1244.550293 1244.410278 1244.305664 1244.603516 1244.525757 1243.974487 1242.560059 1241.186646 1241.16687 1241.762695 1243.088501 1244.345337 1242.586182 1239.513062 1236.024048 1233.103149 1229.395996 1225.011963 1222.24292 1223.384766 1225.502563 1227.31189 1228.661987 1229.303589 1229.407471 1229.413452 1229.454834 1229.700195 1230.150757 1230.912231 1231.718384 1232.490601 1233.164917 1233.260254 1232.778564 1231.812866 1231.582886 1232.239746 1233.429199 1234.356079 1234.96521 1235.574707 1236.387085 1237.304199 1238.142578 1239.052734 1240.180786 1241.494263 1242.632202 1244.056885 1244.386719 1244.256104 1244.317261 1242.919922 1240.835083 1238.490479 1236.978394 1235.531128 1233.640747 1231.255005 1228.908936 1226.736206 1225.027466 1223.83728 1222.750977 1221.609253 1219.892212 1217.236206 1213.010986 1208.617432 1209.349487 1209.85791 1209.184204 1207.818115 1207.501221 1207.704224 1207.801758 1207.47522 1209.725952 1215.419067 1219.793579 1220.078735 1218.191895 1215.81543 1213.804565 1212.057739 1210.599121 1209.032104 1207.676758 1206.954468 1206.228516 1205.86731 1205.611694 1205.529907 1205.573608 1205.824463 1206.033203 1206.446411 1207.044556 1208.166138 1209.279541 1210.994385 1214.559082 1218.30542 1220.666626 1221.12085 1221.12854 1220.569458 1219.697754 1218.664673 1217.64563 1217.12207 1217.130005 1216.741455 1215.986572 1215.012451 1213.692261 1212.180176 1210.687866 1209.367065 1207.874878 1204.411377 1200.614624 1196.881592 1194.860352 1194.646729 1194.618164 1194.803833 1196.060181 1197.622192 1198.516357 1198.790283 1198.38147 1199.076416 1200.842773 1201.695312 1202.119995 1201.995117 1201.657715 1201.17688 1200.773071 1200.914185 1201.752319 1201.981567 1200.425293 1198.672974 1196.692749 1194.200684 1191.290161 1188.993652 1187.373901 1186.093994 1186.077637 1186.31311 1186.651733 1186.796265 1186.932983 1186.890747 1186.666382 1186.281616 1185.836304 1185.309937 1184.777832 1184.263672 1183.752319 1183.215698 1182.566528 1182.660645 1182.398682 1181.682861 1180.833374 1180.2146 1179.378296 1178.672974 1177.925659 1177.270142 1176.377075 1175.395508 1174.220947 1172.584106 1171.729004 1172.096436 1171.96875 1171.776611 1171.902222 1172.192749 1172.724609 1173.25415 1173.682495 1173.834106 1173.768555 1173.485107 1173.140015 1172.650269 1172.245239 1171.713867 1171.10022 1168.952759 1166.037231 1163.937012 1163.368652 1163.69104 1163.993164 1164.196777 1164.598877 1165.0271 1165.658691 1166.290771 1167.059937 1167.698364 1168.445068 1169.373657 1169.998657 1170.752075 1171.293213 1171.387573 1171.197266 1170.856445 1170.523682 1169.877441 1169.138062 1168.295776 1167.587402 1166.912109 1166.540894 1166.287964 1166.198486 1166.395508 1166.502686 1166.657227 1166.683472 1167.009521 1167.491211 1168.343994 1169.807373 1170.471069 1169.854492 1168.786621 1167.535889 1165.859497 1163.69458 1160.559326 1159.069214 1168.377075 1170.407715 1164.529541 1159.289429 1159.905029 1162.412109 1164.432617 1165.467773 1165.903687 1166.471436 1165.983765 1162.495239 1160.454712 1161.082764 1161.399536 1162.419312 1163.41272 1163.845947 1163.998413 1164.012817 1164.335571 1165.745239 1167.201904 1168.636963 1170.161743 1171.77417 1173.328369 1174.573608 1175.847656 1177.216431 1178.958984 1181.156494 1184.192383 1189.13147 1193.483643 1193.123047 1194.019409 1204.703369 1213.36853 1221.19165 1228.778687 1232.194336 1230.77124 1234.960938 1237.319092 1236.255737 1235.120605 1232.213745 1222.104858 1216.329224 1213.989258 1217.989136 1217.605103 1216.994751 1223.593506 1224.229858 1218.23291 1218.671631 1217.019165 1217.384033 1221.064575 1221.37439 1219.546387 1229.110107 1233.175537 1244.484497 1250.204712 1259.150269 1260.560669 1263.52832 1265.430054 1266.275146 1266.546143 1270.123291 1272.437378 1273.256104 1274.773071 1279.320312 1286.495239 1290.128052 1294.26123 1296.594727 1296.255005 1295.726074 1294.418823 1292.928101 1290.166992 1286.044312 1281.567383 1277.723389 1274.021484 1270.595459 1267.676025 1264.044922 1259.803345 1254.836304 1249.075317 1242.79834 1250.563599 1264.969238 1272.47937 1278.521118 1282.497925 1282.308716 1278.923828 1274.448486 1271.611572 1269.938965 1269.335205 1268.618652 1266.581543 1261.734009 1256.256592 1252.399048 1248.171631 1253.224365 1262.239746 1270.661133 1277.990356 1283.990601 1288.747559 1292.238647 1290.286255 1286.724854 1284.921143 1284.230835 1283.740845 1283.155396 1281.327026 1279.037476 1281.00293 1279.053833 1268.168579 1267.317383 1271.042969 1270.708618 1265.598633 1260.136353 1248.910767 1241.276855 1232.656494 1233.514893 1240.536987 1241.876221 1239.119629 1233.62085 1220.966187 1224.07251 1221.580933 1221.847046 1224.301636 1221.695435 1218.021484 1214.595459 1207.31665 1206.873413 1206.276001 1204.588257 1198.12439 1194.85791 1194.618652 1197.313721 1197.395996 1197.003052 1196.876953 1192.54126 1182.230225 1171.78894 1160.569092 1163.971069 1165.913574 1162.157959 1155.973022 1152.224609 1153.319458 1157.522705 1170.636719 1185.624146 1168.798218 1157.278442 1146.270508 1137.250244 1132.187988 1128.366577 1123.878418 1121.844849 1120.886841 1119.503906 1118.111816 1116.692017 1115.497437 1114.438965 1113.394653 1112.412842 1111.229126 1110.262207 1110.285034 1110.214111 1110.349243 1110.769897 1110.925781 1110.821167 1110.616943 1110.590454 1110.501709 -1294.822754 1300.674316 1303.937134 1305.27063 1311.534424 1318.015503 1319.035156 1318.017578 1316.463867 1321.982666 1326.720093 1330.820435 1332.832642 1334.310791 1340.772461 1341.872192 1335.311157 1329.398315 1319.281738 1299.24707 1270.742188 1254.284058 1241.664062 1217.552979 1200.341187 1183.306274 1177.429443 1170.632812 1165.822632 1161.407959 1157.980225 1154.307861 1151.394043 1152.679199 1166.745361 1184.87915 1207.050049 1227.461182 1251.372803 1245.408203 1224.268433 1229.944458 1234.764771 1236.020508 1229.12915 1237.54248 1251.873535 1257.491211 1256.329224 1256.686646 1265.269897 1265.9823 1262.631104 1257.462524 1255.238159 1257.191406 1258.198975 1256.895386 1254.491821 1252.712524 1249.79834 1246.753296 1241.468994 1235.440186 1231.360962 1227.457153 1223.073486 1224.546997 1225.958862 1227.268677 1228.001831 1227.479004 1225.535645 1223.195679 1222.032837 1223.24353 1222.261597 1220.217163 1226.54895 1228.674927 1229.71106 1230.121094 1230.402222 1230.429443 1230.366333 1230.157959 1230.097412 1229.626831 1229.129517 1228.424438 1227.582275 1226.560059 1225.407227 1224.292847 1223.22937 1222.400146 1221.727783 1218.840332 1214.095703 1212.517822 1215.514526 1219.102539 1222.479004 1226.93457 1229.670654 1232.89917 1243.04834 1248.438599 1254.719238 1257.80957 1259.86438 1262.081299 1263.276001 1263.563965 1262.890747 1262.253052 1261.876099 1261.422485 1260.296143 1258.394287 1254.407959 1252.603638 1257.912231 1260.201172 1260.750488 1260.750732 1260.337646 1259.671875 1259.599121 1259.740601 1259.369019 1258.339844 1253.600464 1250.194214 1257.190063 1258.164551 1258.849487 1259.092041 1258.759277 1258.479858 1259.919922 1261.862427 1264.096313 1264.873657 1266.282471 1268.314453 1269.31897 1269.647339 1268.345703 1268.310791 1266.268433 1263.582764 1261.268677 1258.812134 1255.197632 1247.810303 1244.237061 1247.806641 1249.489258 1250.097168 1250.901001 1251.59729 1251.022217 1249.77063 1248.663574 1247.609009 1246.984497 1246.41394 1245.66333 1244.287231 1242.502441 1241.753052 1241.511597 1241.462036 1241.366333 1240.365967 1238.341431 1235.524292 1232.812988 1229.230713 1225.325928 1222.969727 1224.949707 1228.025879 1229.785034 1230.617065 1230.946045 1230.560181 1230.052002 1229.916016 1230.048462 1230.392334 1231.102661 1231.860474 1232.699707 1233.384521 1233.566162 1233.246338 1232.241089 1231.779297 1232.854126 1234.078125 1235.201782 1236.469604 1237.984131 1239.490723 1240.778198 1241.612061 1242.35144 1242.995239 1244.851318 1246.010254 1246.832886 1246.928101 1246.325195 1246.291016 1245.555664 1244.479858 1241.942017 1239.525635 1237.066772 1234.840088 1232.213989 1229.758911 1228.002441 1226.657593 1225.145508 1223.791016 1222.166504 1220.124878 1217.809448 1215.945801 1214.118774 1212.765991 1211.679077 1210.643066 1209.246948 1207.634888 1208.05603 1208.654907 1207.437622 1209.61438 1213.580811 1217.377686 1220.214111 1219.024536 1216.744873 1214.936279 1213.30896 1211.668823 1210.069946 1208.682861 1207.459106 1206.617065 1206.220703 1205.963867 1205.863403 1205.913208 1206.094238 1206.310547 1206.748291 1207.406616 1209.22876 1210.647705 1212.790161 1215.671509 1218.634399 1220.679932 1221.237183 1221.296387 1221.010742 1220.061401 1219.079102 1217.979736 1217.761353 1217.947998 1217.598999 1216.965942 1215.766479 1214.218384 1212.266968 1210.137329 1208.354858 1206.172485 1202.745972 1199.121582 1195.705444 1195.269653 1196.37854 1196.87207 1197.032227 1198.245728 1199.597412 1200.543823 1201.08313 1201.199585 1201.856323 1202.53064 1203.15625 1203.347656 1203.074341 1202.525757 1201.976929 1201.469116 1201.434814 1202.026978 1201.931396 1200.273071 1198.311157 1196.122925 1193.444214 1190.639526 1188.82605 1187.500122 1186.890869 1187.16687 1187.425537 1187.586182 1187.651245 1187.568726 1187.493286 1187.153564 1186.702515 1186.116089 1185.465088 1184.817505 1184.154297 1183.549805 1183.085083 1183.093262 1183.423462 1183.124634 1182.442627 1181.572998 1181.128052 1180.428223 1179.689331 1179.000122 1178.229736 1177.303467 1176.267334 1175.050415 1174.022705 1173.345947 1173.18103 1172.892334 1172.738281 1172.699829 1172.926758 1173.313477 1173.668945 1173.999146 1174.136108 1174.03894 1173.651611 1173.296753 1172.69165 1172.2229 1171.645386 1170.913574 1168.573975 1166.196777 1164.253662 1164.016357 1164.246216 1164.549927 1164.845459 1165.227295 1165.583252 1166.173706 1166.787598 1167.467163 1168.146606 1168.860596 1169.523804 1170.075195 1170.79126 1171.310425 1171.541138 1171.728027 1171.577637 1171.324585 1170.798706 1169.98584 1169.030396 1168.085449 1167.548218 1167.226929 1166.968872 1166.972168 1167.110352 1167.367065 1167.510254 1167.688843 1167.926025 1168.293579 1169.073975 1170.556641 1171.244507 1171.132324 1170.08606 1169.301636 1168.650146 1166.626465 1162.118774 1158.279297 1170.512817 1171.463135 1171.360718 1170.449097 1168.432495 1168.037354 1168.859009 1168.705078 1169.024658 1169.927246 1170.900391 1166.145752 1161.7323 1161.559814 1162.635498 1164.500488 1165.105591 1164.998169 1164.733765 1164.560425 1164.454956 1165.702759 1167.242798 1168.568115 1169.953247 1171.342285 1172.656128 1173.862183 1174.868164 1176.110107 1177.834229 1179.993408 1182.277466 1184.675659 1186.442749 1183.65271 1193.026611 1201.63562 1208.714478 1216.187866 1220.155518 1222.476562 1225.403931 1229.5354 1230.793823 1231.414185 1232.667114 1232.448242 1225.740601 1216.986816 1207.324219 1208.831055 1210.377441 1216.303223 1221.082153 1221.318726 1217.229004 1209.880127 1209.042969 1208.975464 1211.72522 1217.447388 1219.943848 1234.494751 1241.049194 1245.327759 1251.63623 1256.774414 1258.259033 1259.393188 1260.453003 1260.188232 1259.511475 1262.873047 1265.945068 1266.361938 1267.869629 1271.764771 1274.899902 1279.578857 1291.916504 1296.135742 1296.351318 1295.846191 1295.860229 1295.460693 1293.971924 1290.917847 1286.363037 1281.894165 1278.13208 1274.712158 1271.667603 1268.828613 1264.567139 1259.317261 1253.907837 1246.389526 1248.284912 1263.392944 1271.323364 1276.651245 1280.982544 1282.266846 1280.183228 1276.64624 1273.637695 1272.102295 1271.427979 1270.57959 1269.273804 1265.029907 1259.763428 1256.435669 1254.220825 1250.329712 1254.196777 1264.462158 1271.996582 1280.511719 1286.953979 1294.315308 1295.151733 1294.129395 1291.605469 1289.69397 1289.442383 1288.660156 1286.914062 1285.536621 1285.21936 1283.27002 1274.334473 1277.145142 1278.955322 1274.739746 1268.144043 1261.092285 1253.360352 1248.993774 1242.101685 1240.583008 1245.832275 1247.373413 1244.482056 1236.836914 1230.191895 1229.719849 1229.505127 1228.286499 1227.978149 1223.914185 1220.765991 1217.804321 1211.898804 1209.643311 1209.41626 1208.244385 1204.057007 1198.804321 1191.9375 1182.489746 1184.838745 1185.703491 1183.078247 1177.607666 1169.482788 1160.424316 1154.278198 1152.248169 1154.877563 1151.614258 1146.647827 1148.332764 1151.361816 1155.873291 1164.939087 1174.87854 1167.399048 1154.471313 1144.664917 1136.9198 1132.432617 1128.410278 1124.343628 1122.069946 1120.791992 1119.720093 1118.626343 1117.584106 1116.448364 1115.30542 1114.332275 1113.233887 1112.280151 1111.562866 1111.285889 1111.234009 1111.326172 1111.376831 1111.280273 1110.212402 1110.052979 1110.072266 1110.268066 -1300.336426 1305.633057 1309.702393 1311.951294 1316.493164 1320.214478 1321.719116 1322.282593 1322.187378 1325.127686 1328.53064 1330.72583 1333.057129 1334.753662 1336.121582 1336.616089 1334.308472 1330.36377 1318.891968 1293.078613 1269.27771 1252.771484 1238.116089 1223.776733 1203.362183 1185.60791 1178.282471 1172.251587 1166.715332 1162.335205 1158.596558 1154.63208 1151.608887 1154.29187 1169.08374 1187.333618 1213.633179 1236.480347 1258.766968 1262.293335 1242.25647 1249.213135 1250.606812 1247.588623 1242.65686 1259.449341 1268.735596 1269.475708 1267.977539 1272.100586 1273.231201 1270.230347 1265.206421 1257.951416 1256.27356 1259.71167 1260.574341 1258.822144 1257.144043 1254.64502 1249.121582 1242.434692 1233.38623 1227.905151 1226.120972 1229.470825 1231.286011 1231.538208 1231.045898 1231.75708 1231.648315 1230.80188 1228.596924 1226.821655 1226.464478 1227.583008 1229.169312 1228.579712 1229.318359 1229.938232 1230.344727 1230.703979 1231.232178 1231.206055 1231.069824 1231.042603 1230.78894 1230.429199 1229.707397 1228.885986 1227.781982 1226.497681 1225.137817 1223.866943 1222.558594 1221.285034 1221.176514 1215.257202 1214.782104 1217.524658 1218.564209 1220.119873 1224.913574 1229.459229 1233.105835 1236.033569 1243.412964 1248.440063 1256.068237 1259.299316 1261.568604 1263.986206 1265.995361 1266.864868 1266.107056 1265.158936 1264.546387 1263.882935 1262.020142 1257.824585 1255.611938 1256.338501 1258.819336 1261.893433 1263.040283 1263.501953 1263.530762 1263.025513 1262.529297 1261.997437 1261.197998 1259.654541 1256.048218 1250.297852 1256.495117 1258.449097 1259.661621 1260.529663 1261.047607 1261.699829 1263.677734 1267.427124 1268.109009 1266.916626 1267.212036 1269.158325 1269.825562 1270.23291 1270.201172 1269.978638 1268.250854 1265.190796 1262.897949 1260.017944 1256.058105 1250.228027 1247.063965 1253.442139 1254.285889 1253.108643 1253.570435 1255.169067 1256.209961 1256.164429 1253.816772 1251.493164 1249.530762 1248.041992 1246.546265 1244.797119 1243.237061 1242.002441 1241.477539 1241.037842 1240.302734 1239.077393 1237.520142 1235.449097 1233.456787 1230.490967 1225.826294 1223.775635 1227.887817 1231.080078 1232.092651 1232.21936 1232.006104 1231.336914 1230.512695 1230.322754 1230.422852 1230.721313 1231.200073 1231.994751 1232.944458 1233.539795 1233.770142 1233.509277 1232.567139 1231.872681 1233.338989 1234.577148 1236.1521 1238.089233 1240.144653 1242.064697 1243.65918 1244.625366 1245.672241 1246.522705 1248.09729 1249.402222 1249.919434 1249.464111 1248.497437 1247.641235 1246.821655 1245.806641 1244.086304 1241.241089 1238.366211 1235.141968 1232.22876 1230.474243 1229.597168 1228.39209 1226.803223 1224.697998 1222.411621 1220.09021 1218.73291 1218.989868 1218.025635 1216.138062 1214.351562 1212.477295 1210.493896 1208.012939 1208.530029 1209.35791 1207.973999 1209.133301 1213.485718 1216.775269 1219.378174 1218.546021 1217.340698 1216.08313 1214.756226 1213.073486 1211.288574 1209.624878 1208.12854 1207.271851 1206.677124 1206.460693 1206.301514 1206.307373 1206.378296 1206.645752 1206.962524 1207.586914 1209.488159 1211.517578 1213.802612 1216.151611 1218.551025 1220.589355 1221.277466 1221.464844 1221.25293 1220.428589 1219.333618 1218.423096 1218.47998 1219.10791 1218.745728 1217.984253 1216.68396 1214.90918 1212.609985 1210.00769 1207.574707 1205.137451 1201.933838 1196.849487 1195.074097 1197.443237 1199.03125 1199.827881 1200.426147 1201.368896 1202.41687 1203.417969 1203.840454 1203.606201 1203.790894 1204.422485 1204.90271 1204.668823 1204.188354 1203.55188 1202.879395 1202.096802 1201.877319 1202.197998 1201.687012 1199.830078 1197.121704 1194.997803 1192.221802 1189.589355 1188.580444 1188.373779 1188.443726 1188.710205 1188.93396 1188.858643 1188.733276 1188.448975 1188.098999 1187.669189 1187.07959 1186.340454 1185.525757 1184.657959 1183.862793 1183.220337 1183.07312 1183.665771 1183.972412 1183.655884 1182.930542 1182.235474 1181.973267 1181.597656 1180.798462 1179.980225 1179.098755 1178.239502 1177.095825 1176.223877 1175.359619 1174.790649 1174.398193 1173.965942 1173.684692 1173.485718 1173.617188 1173.77478 1174.066528 1174.260742 1174.259644 1174.034912 1173.661499 1173.060669 1172.547852 1171.99707 1171.279297 1170.131226 1167.973877 1166.286133 1164.693115 1164.507324 1164.723633 1165.047363 1165.446411 1165.771729 1166.202637 1166.761963 1167.378784 1167.946045 1168.53772 1169.254028 1169.756836 1170.131714 1170.693726 1171.249023 1171.650757 1171.839722 1171.852051 1171.655884 1171.126465 1170.540039 1169.35022 1168.665039 1168.164062 1167.875977 1167.796753 1167.682617 1167.810059 1168.064087 1168.250488 1168.645996 1168.78186 1169.058105 1169.593628 1170.517944 1171.401855 1171.696533 1171.46936 1171.301758 1171.223145 1170.846191 1168.327515 1161.793701 1167.515625 1171.176147 1171.522217 1171.647095 1171.43689 1171.300903 1171.424438 1171.274902 1171.384521 1171.439819 1171.144287 1169.155762 1167.707886 1168.392334 1168.474487 1168.558228 1167.633545 1166.506104 1165.597534 1165.032959 1164.890747 1165.861572 1167.015625 1168.3479 1169.53894 1170.534668 1171.334595 1172.607422 1173.515625 1174.599365 1176.215454 1177.991943 1180.027222 1181.71228 1181.899536 1182.824951 1194.571167 1200.529297 1205.612183 1210.576172 1213.990601 1216.509155 1219.73584 1223.971802 1225.608398 1226.601562 1228.335571 1227.94873 1224.942627 1220.129639 1211.008423 1206.181641 1206.912598 1212.956421 1219.563843 1219.021606 1211.999023 1206.387329 1206.394653 1209.501343 1218.268188 1221.642456 1225.401367 1234.39209 1237.1073 1240.094238 1243.708496 1249.751465 1253.031982 1254.36853 1255.198853 1254.74707 1252.361938 1253.940063 1255.913818 1253.773315 1254.745483 1260.724976 1266.060913 1279.044556 1286.834717 1293.601929 1293.882324 1295.562744 1296.444092 1296.793335 1296.356689 1294.406982 1292.02771 1287.080444 1282.191406 1278.059204 1275.004883 1272.15564 1269.209473 1263.81189 1258.757935 1251.775269 1248.71521 1260.415771 1269.584595 1273.665894 1276.947266 1278.550171 1277.414429 1274.911011 1273.031982 1272.226196 1272.022217 1272.155151 1271.155396 1267.72522 1267.711304 1268.060059 1262.557495 1255.068726 1252.89624 1256.19458 1266.274292 1273.379272 1279.357178 1287.843628 1294.535645 1295.491943 1295.139893 1294.238159 1294.243408 1294.18103 1293.014526 1292.575684 1292.046509 1285.064575 1279.847046 1284.061523 1284.115479 1280.175903 1273.229248 1268.616577 1261.97168 1256.731079 1248.11438 1246.486816 1253.277588 1255.391602 1249.800537 1241.485474 1233.826904 1235.162598 1233.983521 1233.088867 1232.235474 1229.149902 1224.111328 1219.24707 1216.080933 1212.760132 1210.684326 1209.500854 1208.394043 1207.352173 1199.279053 1187.958374 1173.747437 1169.398071 1167.676147 1163.11731 1156.890625 1154.908936 1147.699585 1144.375488 1144.665405 1145.064819 1144.974731 1145.967773 1149.251831 1153.71875 1160.483398 1167.741089 1158.300293 1149.391724 1142.348022 1136.425537 1132.437866 1128.69397 1125.267578 1123.00415 1121.473145 1120.343628 1119.369629 1118.308716 1117.380371 1116.229736 1115.218628 1114.257446 1113.448364 1112.676758 1112.302979 1112.232056 1111.979004 1111.789551 1111.491333 1110.71228 1110.050293 1110.044189 1110.047119 -1304.249878 1309.480713 1316.397339 1317.980835 1317.512329 1321.864624 1325.378418 1328.25708 1329.726318 1328.901001 1329.532715 1332.402588 1333.77124 1334.563354 1334.363159 1333.554565 1331.955566 1328.369995 1319.028931 1290.672241 1270.220093 1255.476074 1240.922607 1226.500244 1206.530518 1189.540161 1180.451904 1172.39856 1167.020508 1162.193237 1158.21228 1155.055908 1152.468384 1153.137085 1168.942993 1189.972168 1212.470337 1239.479248 1262.327393 1274.703369 1279.532837 1279.127319 1263.390137 1262.628418 1263.537842 1274.661011 1277.819214 1279.818481 1280.0354 1280.421387 1278.48938 1273.909546 1268.059326 1260.066162 1258.929077 1262.794922 1263.745972 1262.21106 1259.889038 1257.33374 1247.21106 1233.995605 1227.819702 1234.567139 1238.986694 1238.384033 1237.022217 1235.484253 1234.779297 1234.549805 1234.280884 1233.213501 1231.455078 1229.076294 1228.980957 1231.154785 1232.895874 1232.757812 1231.653931 1230.560303 1230.699707 1231.086426 1232.085327 1231.933716 1231.790283 1231.875122 1231.700562 1231.208618 1230.391113 1229.297241 1228.058105 1226.621948 1224.956177 1223.364868 1221.637695 1220.258789 1216.669189 1217.530884 1220.585815 1221.498169 1221.724854 1223.197998 1227.436401 1230.753052 1235.095581 1241.608154 1246.849731 1251.249756 1254.743286 1259.305908 1263.203247 1265.237915 1268.297852 1269.21106 1268.275513 1267.649414 1267.526489 1266.462036 1264.027832 1261.174194 1261.930786 1262.655273 1262.973999 1263.880859 1265.404175 1266.655762 1266.80481 1266.007568 1265.171875 1264.376343 1263.284912 1261.456421 1257.989014 1253.336914 1255.707031 1258.49353 1260.363281 1261.93335 1262.875488 1263.862305 1266.03479 1268.400391 1268.34021 1267.929199 1267.753052 1269.317993 1270.221069 1270.865234 1271.300293 1270.74646 1268.616089 1266.780396 1264.771973 1261.659058 1258.056763 1253.27478 1252.815674 1257.498169 1257.291626 1255.168457 1255.27124 1258.350586 1261.839966 1262.033936 1257.485962 1254.39856 1251.994263 1249.510864 1247.507446 1245.153442 1243.279053 1242.249268 1241.545166 1240.960083 1240.077026 1238.725952 1237.104126 1235.424194 1233.702271 1231.037842 1225.826172 1225.694458 1231.192505 1232.584839 1233.062866 1233.25769 1232.700195 1231.661987 1230.960083 1230.727417 1230.760376 1230.967651 1231.415894 1232.157593 1233.150269 1233.935791 1234.146118 1233.78064 1232.840454 1231.833618 1233.396729 1234.8302 1236.966431 1239.630493 1241.996826 1243.835571 1245.973755 1248.127686 1249.537231 1251.002075 1252.190674 1252.857666 1253.19751 1252.179443 1250.666504 1249.183472 1247.674561 1246.403198 1245.060425 1243.248779 1239.846191 1236.302246 1233.207397 1232.291992 1231.998291 1230.782593 1228.44519 1226.071411 1223.807861 1221.716309 1220.780273 1220.776611 1220.373047 1219.00647 1216.813232 1214.54187 1212.377197 1210.508301 1210.396851 1210.452148 1210.054321 1211.504761 1214.322144 1217.596191 1219.769165 1219.585815 1218.580811 1217.550903 1216.286621 1214.74292 1212.750732 1210.527588 1208.772705 1207.654907 1207.287476 1206.876953 1206.740479 1206.62207 1206.681274 1206.743164 1207.062744 1207.559814 1209.5979 1212.140015 1214.510864 1216.757324 1218.723022 1220.460327 1221.49939 1221.765137 1221.532104 1220.726807 1219.463135 1219.004639 1219.834229 1220.17334 1219.712402 1219.011475 1217.845703 1215.85791 1213.626343 1210.873291 1208.629028 1206.49585 1202.210693 1197.175171 1197.888062 1200.409302 1202.444336 1203.483887 1203.812256 1204.283203 1205.389282 1206.708008 1206.786499 1205.343872 1205.235596 1206.192139 1206.650635 1206.127563 1205.374756 1204.431519 1203.69043 1202.781128 1202.25 1202.245483 1201.402222 1199.155273 1195.469849 1193.450317 1191.225708 1189.827759 1190.274902 1190.454956 1190.713501 1190.929932 1190.829224 1190.494141 1189.991455 1189.498413 1188.983276 1188.341919 1187.648682 1186.817139 1185.829712 1184.644287 1183.33313 1183.12439 1183.670166 1184.331177 1184.397339 1184.177856 1183.412598 1182.926025 1183.164551 1182.732788 1181.858765 1180.834595 1179.983276 1178.888184 1178.157227 1177.33252 1176.710815 1176.179199 1175.655762 1175.022339 1174.579468 1174.31189 1174.21228 1174.329834 1174.320068 1174.2854 1174.156738 1173.812378 1173.326294 1172.777954 1172.124634 1171.404541 1170.759155 1169.349121 1167.949585 1166.522949 1165.558472 1165.14917 1165.322266 1165.617432 1165.946655 1166.356934 1166.823364 1167.415771 1168.007202 1168.649292 1169.075928 1169.586914 1170.40271 1170.785278 1170.62915 1170.998413 1171.623535 1171.90979 1171.869629 1171.713989 1171.243042 1170.488037 1169.749756 1169.216309 1168.831543 1168.550903 1168.458008 1168.478027 1168.541016 1168.725098 1169.009155 1169.417236 1169.873169 1170.13501 1170.128906 1170.3927 1171.085449 1171.813599 1172.144775 1172.129761 1172.075562 1171.861572 1171.349243 1169.653809 1169.263062 1170.609741 1171.202759 1171.837524 1172.109375 1172.159546 1172.210327 1172.180054 1172.038574 1171.701416 1170.707764 1170.798096 1171.248047 1171.43103 1171.330688 1170.86731 1169.643188 1168.060913 1166.544434 1165.626831 1165.284912 1166.106812 1166.93457 1167.966797 1168.925537 1169.810669 1170.498657 1171.456543 1172.448486 1172.963257 1174.244629 1176.162476 1178.202759 1179.680908 1180.716919 1183.866211 1193.636353 1198.332764 1202.170654 1206.252441 1208.961548 1211.901855 1216.153809 1219.700806 1221.463135 1219.358154 1223.770996 1223.57605 1222.060059 1219.708252 1212.311401 1206.730591 1205.393311 1208.03064 1210.897339 1210.540161 1207.081787 1206.32312 1211.897461 1220.494629 1221.843506 1222.412354 1224.564453 1229.506714 1230.730225 1234.626709 1239.01355 1242.546753 1244.800049 1246.099976 1246.959839 1245.137329 1242.577515 1246.066284 1244.795288 1239.089355 1241.45459 1251.803223 1262.488037 1270.182495 1279.162109 1284.528931 1290.740723 1294.796875 1296.835083 1297.419189 1297.712158 1296.916382 1295.273926 1292.75354 1286.84375 1280.452026 1277.529175 1274.661133 1271.240723 1266.542725 1261.723999 1254.609375 1249.263794 1256.438354 1265.016357 1269.850952 1271.927979 1273.195312 1272.341431 1271.622437 1270.528931 1271.121582 1272.305542 1273.394165 1273.997314 1273.492432 1274.339722 1274.837646 1270.085327 1263.724365 1256.89978 1253.50769 1258.130005 1268.119751 1278.231567 1286.06311 1292.321533 1295.465942 1295.864624 1295.390991 1295.771484 1296.139404 1296.084839 1295.834106 1295.454346 1293.66748 1290.144287 1290.812988 1289.324951 1284.332153 1281.108154 1275.889282 1268.664429 1262.201538 1256.183228 1255.318604 1260.228394 1260.911865 1255.904175 1247.376831 1245.532715 1243.172363 1240.19458 1238.448975 1235.793823 1233.117798 1227.446533 1222.641235 1218.593628 1213.341797 1209.536255 1208.274414 1200.817871 1198.318237 1195.795288 1187.122314 1172.606079 1166.610352 1160.0177 1157.740601 1159.881714 1160.885498 1160.680664 1157.546265 1152.025146 1147.787842 1144.814087 1144.369751 1145.531616 1149.959473 1158.034668 1160.726807 1152.732178 1144.609619 1139.378052 1135.171875 1131.998291 1129.079956 1126.226685 1124.149658 1122.510986 1121.395386 1120.268188 1119.092041 1118.118164 1117.02832 1116.123535 1115.322266 1114.469116 1113.793335 1113.241089 1112.796265 1112.45166 1111.978882 1111.437866 1110.883911 1110.352417 1110.046631 1110.049927 -1313.445435 1313.896362 1319.40686 1321.653076 1322.296021 1324.751709 1328.057007 1330.741821 1331.714478 1331.700195 1332.035034 1334.151489 1334.98938 1334.868408 1333.769897 1331.106812 1328.279053 1323.78479 1314.08252 1286.317627 1267.525391 1250.844849 1236.237915 1220.629639 1202.740723 1190.525513 1181.193726 1174.078735 1168.390137 1161.856445 1157.693237 1155.131348 1152.992065 1152.601685 1168.781006 1190.217773 1211.202026 1237.197632 1262.553223 1285.621094 1294.176147 1284.395386 1277.654907 1278.087769 1282.386841 1283.876709 1285.11084 1286.311157 1286.851318 1286.073486 1283.409668 1277.855225 1269.77771 1266.974121 1265.425293 1267.056763 1267.919189 1265.960693 1261.987671 1258.431152 1246.856934 1230.463135 1236.312866 1246.316284 1246.348633 1245.381226 1242.984863 1239.912354 1238.156982 1237.330566 1236.316284 1234.846558 1232.784302 1230.503784 1230.099609 1232.061768 1233.700684 1233.630859 1232.320435 1231.229248 1231.255127 1231.613037 1231.821655 1231.989868 1232.148926 1232.698608 1232.590454 1232.021606 1230.996582 1229.905762 1228.454224 1226.737671 1224.79541 1222.950439 1221.37915 1219.297119 1216.857178 1220.868774 1222.316162 1223.581055 1225.080078 1227.752319 1230.296021 1231.199219 1233.454712 1240.595337 1245.711792 1254.123413 1260.539429 1266.098267 1265.9729 1266.787354 1268.909912 1270.007568 1270.071533 1269.700439 1269.573364 1268.635132 1266.108887 1265.490112 1268.549438 1268.611694 1266.264771 1265.669556 1267.44519 1268.944092 1269.026611 1268.582886 1268.000977 1266.437622 1266.09314 1266.144409 1263.026611 1257.97583 1254.314453 1257.636963 1260.686768 1263.578247 1264.823486 1265.281616 1266.07959 1267.467529 1268.74353 1268.564941 1267.84021 1268.566528 1269.877075 1271.428833 1272.36853 1271.776978 1270.435303 1269.292236 1266.98291 1263.823608 1260.076782 1254.904663 1257.036133 1259.099976 1258.984985 1256.707275 1256.007568 1262.578125 1269.05542 1269.290527 1262.748657 1256.418091 1253.405396 1250.71106 1248.309692 1245.668823 1243.691162 1242.856079 1242.154785 1241.370605 1240.438843 1239.014893 1237.177124 1235.148315 1233.279297 1230.274048 1225.696167 1227.992676 1232.529053 1233.336548 1233.724365 1233.927124 1233.416016 1231.908569 1231.588867 1231.339355 1231.181274 1231.526978 1231.817139 1232.556274 1233.619019 1234.504028 1234.854614 1234.326782 1233.120605 1232.392822 1233.144165 1234.495972 1237.418457 1241.401123 1243.891602 1246.05957 1248.693848 1251.518921 1253.397949 1255.855957 1256.404785 1256.583618 1256.054199 1254.509888 1252.610718 1250.514893 1248.607178 1246.792236 1245.581909 1244.187866 1241.134521 1237.754395 1235.357178 1234.165649 1233.351929 1231.715332 1229.533691 1227.311768 1225.369019 1223.797241 1222.526978 1222.027832 1221.442749 1220.404907 1218.30188 1216.151245 1214.772217 1213.380615 1212.595215 1212.167114 1212.330322 1213.623901 1215.699097 1218.866821 1220.920654 1220.914062 1220.119141 1219.466797 1218.552612 1217.087769 1214.705078 1212.104492 1209.859497 1207.780029 1207.358276 1207.093994 1207.055664 1206.897095 1206.796997 1206.876099 1206.880859 1207.455566 1209.920166 1212.65625 1215.264282 1217.530884 1219.437866 1220.568115 1221.752197 1222.198608 1222.005005 1221.220703 1219.530151 1219.318359 1220.213135 1220.822266 1220.633179 1220.084106 1218.885376 1217.02063 1214.705933 1212.313354 1210.337769 1208.406128 1202.878418 1198.218506 1201.111816 1203.854858 1206.09375 1207.251343 1207.483887 1206.4823 1207.557373 1208.255859 1208.029663 1206.46814 1206.795776 1207.756348 1207.831665 1207.265259 1206.2323 1205.23584 1204.350342 1203.428223 1202.536255 1202.051636 1200.852661 1198.011475 1194.148926 1191.831177 1191.009155 1192.112305 1192.942139 1193.231689 1193.294678 1193.206299 1192.68103 1192.032959 1191.451782 1190.71875 1190.06543 1189.314941 1188.486938 1187.550659 1186.52771 1185.386475 1183.743286 1183.677734 1184.604126 1184.90918 1184.885986 1184.650024 1184.06311 1183.848022 1183.693848 1183.352661 1182.494995 1181.505493 1180.641357 1179.800415 1179.097534 1178.5625 1178.03125 1177.400269 1176.846069 1176.240356 1175.547607 1175.195923 1174.861328 1174.633667 1174.462036 1174.216797 1173.891968 1173.474243 1172.910522 1172.215332 1171.450562 1170.887451 1169.997559 1169.010986 1167.99707 1167.097778 1166.37146 1166.140991 1166.022583 1166.126343 1166.463501 1166.947998 1167.539062 1168.18103 1168.908081 1169.278076 1169.557007 1169.921021 1170.663086 1171.193848 1170.894043 1170.814575 1171.115723 1171.928833 1171.888062 1171.822388 1171.133423 1170.465576 1170.033447 1169.703125 1169.365723 1169.257324 1169.348755 1169.272095 1169.43457 1169.579346 1169.546875 1170.012817 1170.823608 1171.071167 1171.044434 1170.861816 1170.882324 1172.016602 1172.586182 1172.729736 1172.712769 1172.39209 1171.908936 1171.222412 1170.561768 1170.282837 1171.160522 1171.935181 1172.369995 1172.724976 1172.781006 1172.814331 1172.433105 1171.60144 1170.912598 1171.675781 1172.02478 1172.08313 1171.897583 1171.411011 1170.959595 1169.316162 1167.545776 1165.97876 1165.57312 1166.377197 1166.978027 1167.651855 1168.399536 1169.186523 1169.800781 1170.475952 1170.923462 1170.881592 1172.134277 1174.638672 1176.483154 1178.076782 1179.793335 1182.225464 1187.802124 1194.942627 1197.217896 1199.509521 1204.282715 1209.148315 1211.701904 1213.73645 1216.089722 1219.041138 1220.644409 1219.072266 1218.659668 1215.794434 1210.798462 1206.122559 1202.75415 1203.292969 1204.687134 1204.60083 1204.776733 1205.86377 1210.955933 1217.843994 1219.453857 1220.354858 1220.891602 1222.661255 1225.731812 1230.028809 1234.297974 1236.255981 1237.435791 1239.401611 1240.456299 1239.482788 1236.657837 1236.202881 1232.048828 1234.056763 1249.12854 1261.871826 1271.219727 1275.920654 1282.162842 1286.588501 1292.34436 1295.026733 1297.092163 1298.085449 1298.187866 1297.989868 1297.268555 1295.693115 1293.053467 1286.201538 1280.28186 1276.738892 1272.972168 1268.322754 1264.042236 1256.717651 1250.109497 1253.238525 1257.227539 1263.8396 1266.766724 1267.504395 1268.036499 1268.037231 1267.922241 1269.07251 1271.919312 1274.492554 1276.836548 1278.463867 1280.828247 1282.177246 1278.78479 1270.347656 1263.335693 1255.109131 1254.266846 1266.345581 1274.369141 1281.312744 1286.285278 1290.560547 1292.204468 1293.778687 1296.134033 1297.011963 1296.945679 1297.098145 1297.005249 1296.186646 1295.298462 1295.079712 1294.097778 1290.764282 1286.527954 1282.046753 1273.99353 1267.016479 1264.517212 1268.007568 1268.838501 1265.875854 1261.698242 1255.230591 1254.712646 1251.486084 1246.306396 1243.291626 1239.156006 1233.993042 1225.919922 1219.727783 1217.858765 1215.575562 1207.026978 1206.767456 1197.230103 1189.080078 1178.063843 1169.98999 1169.001221 1170.565552 1169.623657 1172.056274 1174.596802 1175.128296 1172.503662 1166.640015 1159.587402 1152.672363 1146.372437 1144.253296 1144.010864 1146.343506 1152.622192 1152.062866 1145.838013 1140.195068 1134.688721 1133.197998 1131.071045 1129.122925 1127.182617 1125.295166 1123.939697 1122.35376 1121.046631 1119.910889 1118.810425 1117.858398 1116.966797 1116.221802 1115.487793 1114.603882 1113.988892 1113.350708 1112.726929 1111.996216 1111.126099 1110.150635 1110.046387 1110.046753 1110.047974 -1318.431152 1316.298096 1321.111816 1325.589233 1326.498413 1327.203857 1327.974609 1330.956177 1333.07373 1334.098755 1335.123047 1336.300781 1336.703247 1336.143555 1334.010254 1330.175293 1326.39978 1320.917847 1305.111084 1280.449219 1260.677002 1244.26416 1229.808105 1215.625122 1204.98291 1196.197144 1186.644653 1178.293213 1170.876465 1161.87439 1157.531616 1155.168091 1153.28064 1152.596313 1167.745483 1188.345581 1208.948975 1234.557495 1261.598022 1285.605225 1299.838013 1291.696045 1286.44397 1286.048584 1288.778931 1290.705933 1290.718994 1292.023193 1292.987915 1291.442627 1287.796021 1280.853271 1273.806396 1268.937012 1267.751709 1269.86731 1270.224487 1268.064575 1262.946899 1257.801636 1245.338867 1229.996948 1241.311646 1247.113892 1248.536621 1247.619141 1244.64856 1241.982056 1240.856934 1239.955933 1238.484497 1236.571533 1234.278442 1232.269409 1231.046021 1231.951904 1233.901123 1234.274048 1232.776978 1232.236694 1232.82373 1232.27771 1231.752319 1231.683716 1232.091064 1232.896484 1233.176758 1232.880493 1231.849609 1230.360718 1228.813965 1226.565674 1224.415039 1222.044312 1220.06665 1217.88269 1220.194702 1222.572388 1224.307129 1225.90918 1227.834473 1231.017578 1233.836304 1235.685791 1241.36853 1244.040039 1243.33374 1252.632324 1263.691772 1269.124634 1267.470825 1268.546021 1268.848145 1270.703491 1271.267822 1271.326416 1270.741455 1269.872192 1268.422485 1267.637695 1268.697021 1269.15625 1267.535278 1267.666504 1269.102417 1270.021362 1270.230469 1269.949829 1269.37793 1268.417969 1268.448608 1269.041992 1268.422852 1261.676392 1256.727051 1255.90686 1260.380371 1266.09314 1268.106079 1267.472656 1266.786133 1267.324707 1268.442627 1269.693359 1269.533325 1268.862671 1268.286255 1272.284668 1273.643921 1273.827393 1272.705566 1271.160034 1269.528931 1266.604858 1260.675293 1255.426025 1257.703247 1260.522461 1260.911865 1259.289307 1259.659302 1266.953247 1269.902344 1270.097412 1266.634888 1257.911865 1254.535156 1252.257446 1249.711304 1247.147217 1245.132446 1244.182129 1243.157104 1242.332153 1241.438354 1239.838013 1237.614868 1235.186279 1232.495483 1229.582031 1226.015503 1229.561401 1232.918823 1233.927979 1234.314697 1234.561157 1234.28894 1233.505615 1232.491821 1232.313965 1231.882324 1232.581909 1233.044189 1233.985107 1234.971436 1235.825684 1236.186279 1235.699585 1234.766724 1233.889771 1233.599609 1233.851318 1237.449219 1242.684082 1245.813721 1248.613525 1252.360474 1255.708984 1256.28064 1257.520264 1257.857666 1257.821533 1257.493896 1256.142578 1254.018677 1251.481567 1249.048218 1246.879395 1244.860474 1243.53186 1241.388306 1238.774048 1236.576294 1234.949829 1233.539062 1231.553589 1229.645874 1228.06311 1226.701538 1225.201416 1223.905762 1222.948486 1222.195801 1221.099243 1219.212036 1218.030273 1217.398804 1215.676392 1214.520508 1213.980591 1214.081177 1214.983765 1216.641479 1219.506714 1221.093018 1221.569092 1221.905396 1221.44104 1220.776489 1219.295288 1216.957886 1213.992798 1211.108154 1208.467041 1207.148682 1207.075073 1207.12207 1207.044189 1206.96814 1206.875488 1206.770996 1207.401123 1209.915161 1213.166382 1216.420898 1219.032837 1220.335083 1221.287109 1222.325195 1222.724121 1222.638916 1222.088379 1220.305176 1219.554443 1220.737427 1221.43811 1221.417358 1220.778564 1219.781494 1217.706177 1215.784424 1213.644775 1211.46167 1209.18103 1204.167603 1202.423462 1207.185181 1207.345825 1208.701172 1208.844604 1208.80481 1208.432861 1209.009766 1209.001221 1208.329956 1207.262329 1208.012451 1208.414429 1208.301636 1207.673096 1206.815674 1205.739136 1204.880127 1203.772339 1202.63623 1201.277588 1199.21814 1194.155029 1194.888916 1195.589966 1195.348633 1195.307495 1195.460815 1195.487793 1195.197876 1194.782593 1194.294678 1193.544312 1192.694336 1191.844971 1190.994751 1190.217773 1189.329956 1188.445679 1187.512451 1186.666138 1185.933838 1185.396484 1185.512329 1185.459717 1185.345825 1185.066772 1184.608398 1184.247437 1183.894775 1183.359497 1182.511475 1181.654175 1181.175049 1180.679321 1180.219238 1179.718628 1179.242432 1178.67688 1178.067871 1177.315796 1176.65332 1175.990356 1175.329712 1174.779175 1174.327026 1173.892212 1173.51001 1173.004272 1172.304688 1171.562378 1170.968506 1170.368286 1169.651489 1169.056885 1168.387939 1167.749268 1167.265503 1166.9729 1166.777344 1166.572388 1166.94519 1167.295898 1168.026489 1169.136475 1169.990234 1170.105713 1170.058105 1170.287109 1170.716675 1171.293701 1171.153076 1171.077271 1171.008423 1171.899048 1172.047363 1171.889526 1171.161499 1171.096802 1170.838135 1170.412964 1169.924316 1169.853516 1170.04541 1170.212524 1170.463623 1170.500122 1170.193115 1170.299927 1171.11377 1171.578125 1171.755249 1171.588257 1171.515747 1172.365601 1172.998779 1173.215088 1173.12854 1172.7854 1172.255249 1171.506958 1170.986572 1170.797485 1170.994141 1171.906982 1172.660522 1173.142334 1173.329468 1173.302368 1173.021362 1171.725098 1171.492432 1172.379517 1172.476196 1172.489502 1172.212402 1171.823242 1171.250366 1170.063721 1168.384399 1166.874512 1165.883545 1166.567993 1167.063599 1167.506104 1168.03894 1168.750366 1169.201782 1169.690308 1170.018433 1170.368164 1171.959106 1173.621094 1175.219727 1176.773315 1178.354492 1180.485352 1182.427979 1186.013916 1189.104248 1194.579468 1200.712402 1206.092896 1206.897827 1206.69519 1211.421143 1213.222656 1214.375977 1213.36377 1212.149292 1211.066772 1209.254761 1204.3302 1198.099731 1196.307373 1199.051636 1198.708374 1200.531372 1204.098145 1206.845825 1209.439209 1212.130127 1213.843994 1215.017578 1216.495239 1220.306152 1224.379395 1228.385864 1229.97876 1230.730225 1233.270142 1235.376221 1235.521729 1232.284546 1229.991943 1231.054932 1239.035889 1250.30249 1260.74231 1270.64563 1279.857666 1283.947998 1287.956421 1293.167725 1295.517944 1297.200806 1297.88623 1298.427246 1298.39856 1297.81897 1296.880371 1295.324097 1292.748657 1284.397827 1279.006958 1275.577271 1271.088501 1267.377441 1265.199585 1260.085693 1255.25354 1254.939575 1260.921997 1261.043091 1263.160278 1262.641235 1264.237549 1266.962891 1267.903442 1271.128052 1274.943359 1278.384766 1280.894165 1283.818726 1285.293579 1284.395508 1279.344849 1268.167847 1259.601807 1254.582153 1257.803955 1265.774536 1272.096436 1278.784912 1282.971436 1281.411987 1287.652222 1293.382568 1296.904785 1297.389526 1297.775269 1297.410889 1297.361816 1296.946289 1296.493164 1295.961426 1294.332764 1291.093018 1284.107544 1277.969482 1272.018921 1271.818726 1272.936035 1272.551025 1270.983154 1270.122314 1265.980103 1263.150391 1260.344727 1254.399048 1248.546021 1241.560547 1232.245483 1224.039917 1220.876465 1221.525757 1221.525879 1217.546875 1211.787476 1209.995728 1196.668213 1179.865845 1178.05835 1183.435669 1183.578491 1181.432495 1184.131958 1187.023682 1186.965332 1180.000366 1173.324341 1164.758911 1156.506592 1147.044067 1144.197998 1143.455322 1144.133179 1146.64917 1145.507568 1142.004639 1137.502563 1133.75 1132.182373 1130.922241 1129.598633 1128.129028 1126.578369 1124.883911 1122.595215 1121.885742 1120.542847 1119.461304 1118.558472 1117.840332 1117.138428 1116.316162 1115.475342 1114.59436 1113.788818 1112.906128 1111.747437 1110.551025 1110.064453 1110.046875 1110.023193 1109.859863 -1320.737183 1317.854492 1324.82312 1330.297974 1330.825684 1329.424683 1328.843262 1331.5625 1334.307007 1336.216797 1337.548828 1338.572998 1338.949951 1337.954224 1335.31311 1331.162598 1329.11731 1323.886963 1310.144775 1286.782471 1269.030151 1252.99292 1240.127563 1224.362915 1213.351318 1203.103882 1191.029297 1180.743286 1172.089966 1162.133301 1157.5177 1155.265015 1153.562744 1153.156616 1165.391602 1184.619263 1206.690063 1229.789185 1253.408569 1279.261841 1306.998657 1300.40979 1292.894409 1290.418457 1293.694946 1296.055298 1296.242676 1297.182739 1297.363403 1295.984497 1292.730225 1283.452637 1277.725098 1271.394043 1269.302979 1271.331665 1270.983032 1267.930176 1260.541016 1253.614868 1235.479126 1235.670044 1244.285522 1250.317749 1251.759277 1250.350098 1246.91333 1244.827515 1243.709717 1242.391846 1240.766479 1238.693481 1236.303711 1234.165649 1232.133301 1231.630493 1234.475342 1235.591553 1235.088989 1234.411255 1234.296631 1233.683472 1232.337158 1231.752808 1232.005981 1233.093628 1233.365723 1233.439453 1232.557739 1231.170532 1228.959595 1226.306152 1223.417358 1220.711792 1218.805054 1221.370728 1222.505737 1224.167358 1226.140503 1227.765747 1228.94043 1231.141113 1235.112427 1240.362061 1245.095703 1246.972412 1247.963257 1252.46167 1256.758667 1269.065918 1269.398682 1269.794067 1270.65686 1271.697876 1272.446899 1272.476562 1271.881592 1270.909668 1269.268433 1268.279541 1269.511963 1269.550903 1268.060059 1268.680176 1270.0354 1270.776245 1271.116333 1271.099854 1270.5271 1269.899658 1269.781982 1269.415405 1268.745605 1264.213989 1260.705933 1258.220581 1261.355835 1268.673584 1269.985352 1269.666138 1268.147095 1268.032104 1269.738647 1270.866943 1271.388428 1271.203857 1271.514404 1273.592773 1275.30481 1276.419678 1275.437012 1273.775635 1271.877319 1268.985596 1260.372437 1258.82666 1261.982178 1263.661011 1263.606934 1263.487305 1264.842041 1267.983887 1269.878174 1270.342651 1267.006958 1260.366455 1256.188232 1253.722778 1251.808716 1249.499146 1247.468018 1246.011475 1244.477905 1244.438721 1242.939453 1240.836792 1238.429688 1235.87439 1233.434692 1230.979858 1226.811157 1230.763184 1233.052002 1234.328857 1235.164185 1235.569336 1235.561035 1234.949585 1234.247925 1233.83313 1233.763306 1233.999756 1234.663574 1235.800659 1236.837158 1237.82605 1238.422241 1238.022827 1236.897949 1235.727051 1235.018921 1234.63623 1237.568848 1243.350464 1247.151489 1250.72937 1254.795776 1257.526855 1257.919922 1258.294067 1258.290894 1258.132202 1257.779907 1256.794312 1254.431641 1251.603027 1248.987793 1246.399658 1243.930054 1242.453735 1241.052979 1239.357666 1237.286987 1235.234497 1232.916016 1231.250122 1230.149292 1229.012573 1227.822632 1226.422852 1225.042969 1224.01416 1223.031006 1221.48291 1219.607544 1219.92334 1219.7323 1217.442261 1216.052368 1215.521606 1215.461548 1216.039307 1217.122681 1219.065063 1220.420776 1221.952515 1222.849854 1223.657227 1223.52832 1221.682007 1219.178589 1216.234619 1213.114014 1209.596436 1207.659424 1207.351807 1207.412964 1207.438477 1207.421753 1206.968994 1206.790771 1207.048584 1209.63208 1213.000122 1217.381104 1220.417725 1221.363037 1222.220703 1223.010498 1223.476807 1223.430542 1222.876587 1221.485962 1219.863037 1221.794312 1222.176025 1222.120483 1221.561646 1220.472168 1219.233643 1217.265991 1214.713135 1211.858154 1208.892822 1203.022949 1209.393677 1209.750732 1209.756714 1210.268555 1210.214966 1210.213379 1210.250488 1210.191406 1209.894775 1209.218872 1208.94751 1209.062744 1208.78125 1208.437256 1207.775391 1207.193726 1206.240356 1205.244141 1204.188721 1202.604492 1199.435669 1196.540039 1195.473389 1196.439819 1196.357544 1196.180542 1196.131836 1196.126099 1196.124756 1195.958374 1195.702515 1195.389771 1194.640259 1193.766968 1192.818237 1191.853271 1191.02771 1190.16748 1189.358398 1188.542114 1187.782471 1187.203735 1186.698608 1186.388794 1186.104126 1185.761353 1185.286255 1184.814087 1184.315308 1183.768188 1183.099854 1182.35498 1181.898071 1181.642456 1181.43335 1181.203979 1180.776489 1180.312256 1179.764282 1179.23291 1178.447388 1177.515137 1176.540894 1175.581665 1174.704224 1173.948486 1173.440186 1173.036987 1172.453857 1171.786987 1171.140259 1170.688354 1170.016968 1169.604126 1169.250977 1168.950073 1168.644043 1168.252197 1167.795776 1167.444946 1167.188599 1167.427612 1167.824097 1168.682739 1169.892578 1170.91687 1171.044189 1170.843628 1170.908203 1171.202271 1171.492188 1171.536743 1171.7146 1171.815796 1172.205811 1172.323364 1172.123291 1171.889404 1171.711426 1171.430908 1170.945801 1170.449707 1170.431885 1170.740967 1171.105469 1171.36499 1171.371826 1171.067383 1170.556274 1171.060303 1171.720215 1172.014771 1172.336548 1172.606567 1173.143066 1173.504517 1173.68457 1173.552856 1173.081421 1172.41272 1171.230591 1170.959473 1170.995117 1170.951538 1171.225952 1172.756348 1173.431396 1173.839844 1173.87085 1173.695679 1173.19165 1172.926514 1173.078125 1173.011719 1172.887573 1172.436279 1171.973511 1171.37561 1170.33374 1170.143188 1169.106567 1166.655273 1166.368652 1166.777832 1167.312256 1167.856445 1168.489258 1168.773926 1169.167236 1169.652832 1170.438721 1171.745972 1172.911377 1174.302979 1175.591553 1176.856812 1178.477417 1180.072144 1181.193115 1182.180908 1192.453857 1198.178101 1200.748169 1201.700439 1202.987915 1205.76355 1207.106201 1207.236572 1206.773315 1205.696289 1205.775269 1205.5177 1201.733643 1197.334229 1195.282837 1197.171631 1195.160156 1196.983398 1200.949219 1204.037354 1205.222412 1206.408569 1207.002319 1207.901855 1212.124268 1215.787231 1218.641479 1221.519043 1224.294312 1226.735718 1229.275513 1231.505127 1232.347412 1230.167603 1228.543823 1230.94519 1237.072998 1244.441162 1253.150269 1264.638916 1274.884888 1282.014893 1285.485596 1291.149048 1294.781616 1296.639038 1297.671997 1297.943604 1298.152344 1298.016113 1297.503174 1296.460938 1294.636353 1289.310425 1282.161987 1279.11084 1277.345703 1274.39978 1272.437134 1270.353638 1268.481201 1269.30603 1269.462402 1269.739746 1269.876831 1269.26062 1267.598389 1266.322876 1266.419312 1270.574585 1275.350098 1279.326782 1283.010254 1286.588135 1288.98584 1288.190186 1284.310059 1274.979492 1264.449097 1254.90564 1255.096802 1253.79834 1263.470581 1266.953491 1270.169678 1274.069824 1279.567749 1287.921509 1294.055176 1295.942261 1297.265625 1297.874878 1297.758911 1297.604614 1297.316772 1296.55481 1295.154419 1293.132202 1287.288208 1281.996948 1280.842529 1279.597412 1277.756104 1276.015869 1274.770752 1273.303101 1271.33313 1269.984619 1268.591553 1261.63208 1254.015747 1243.711426 1232.059692 1230.548706 1228.112793 1225.58606 1220.817505 1217.600586 1209.661621 1205.21167 1190.835205 1185.131348 1194.598999 1198.870239 1197.367676 1195.244507 1197.388062 1197.759521 1196.626099 1187.643066 1176.717407 1166.742798 1158.290894 1149.758301 1145.526001 1142.244263 1140.971436 1140.610718 1139.964111 1138.699829 1136.334351 1133.69751 1132.033813 1131.236816 1130.34021 1129.465576 1128.268188 1126.333008 1124.319214 1122.389648 1121.083496 1120.134644 1119.287598 1118.571533 1117.990967 1117.110596 1116.22168 1115.251343 1113.967896 1112.844482 1111.832275 1110.491089 1110.046875 1110.023804 1109.693481 1109.345581 -1325.92688 1324.883179 1327.417236 1332.149048 1338.681274 1335.685181 1331.61438 1333.562866 1336.116211 1338.449341 1339.776245 1340.700928 1340.9021 1339.846924 1337.961304 1335.707275 1333.894653 1331.167603 1319.767944 1295.578979 1273.412231 1258.829346 1244.944336 1230.698608 1218.549927 1207.478394 1193.202759 1180.691406 1172.712646 1162.029419 1157.506592 1156.244507 1154.192139 1153.968628 1164.483154 1180.937622 1203.02771 1227.44873 1254.911987 1279.986206 1306.965332 1306.255249 1296.437012 1292.837158 1297.115601 1300.200562 1301.983887 1302.443481 1301.544189 1298.967896 1294.318115 1287.881958 1281.206055 1276.647217 1273.892334 1272.490723 1270.613403 1264.214355 1255.874268 1246.429443 1232.330688 1239.526611 1247.877319 1255.172363 1255.844482 1253.869507 1250.721558 1248.156494 1246.594849 1245.037598 1243.256226 1240.928467 1238.456421 1235.635132 1232.063721 1233.865723 1236.623169 1238.154785 1237.837769 1236.822998 1235.923218 1234.720947 1233.306885 1231.922119 1232.042725 1233.168335 1233.653809 1233.758301 1233.153564 1231.980591 1229.105469 1225.374512 1221.783325 1219.113281 1220.861328 1222.889526 1224.567871 1226.145874 1227.83728 1229.560303 1231.059814 1231.972412 1235.324707 1241.461914 1245.412231 1248.258667 1251.481689 1255.089722 1255.694336 1265.217163 1269.620972 1271.143311 1272.407471 1273.407837 1273.959839 1273.847656 1273.283325 1272.16687 1270.600464 1269.637817 1270.500488 1270.318237 1269.256226 1269.301392 1270.690063 1271.630737 1272.072632 1272.092896 1271.81543 1271.310913 1270.490723 1269.366699 1267.727783 1265.995728 1266.94873 1264.150391 1261.795532 1268.93396 1270.584229 1270.888306 1269.515381 1268.492188 1271.019653 1272.79834 1273.668701 1274.244751 1274.847046 1275.714233 1276.838257 1279.538574 1278.56665 1276.368896 1273.241699 1269.515015 1261.650146 1265.303345 1267.901489 1267.263306 1266.505249 1266.223877 1266.384888 1268.194458 1270.82251 1271.198364 1269.182983 1262.825928 1257.033447 1254.779785 1253.932007 1252.094482 1249.793823 1247.953247 1246.834595 1245.671021 1243.935181 1241.671753 1239.046509 1236.659546 1234.545898 1232.074951 1227.626587 1231.255615 1233.688721 1234.96582 1236.285767 1237.261108 1237.512573 1237.161377 1236.804565 1236.460205 1236.22998 1236.238159 1236.769653 1237.682007 1238.937134 1240.289795 1241.246826 1240.978027 1239.584595 1237.63623 1236.286011 1235.510986 1237.39502 1243.653687 1247.660034 1251.306885 1255.223511 1257.884033 1258.418579 1258.490967 1258.48877 1258.213379 1257.758301 1256.88623 1254.579712 1251.816772 1249.00354 1246.159912 1244.06897 1242.529785 1241.293335 1239.838501 1237.875488 1235.869263 1233.878418 1232.702271 1231.499878 1230.176392 1228.849365 1227.4729 1226.193115 1225.080322 1223.924805 1222.490356 1221.094727 1221.145264 1220.393188 1218.745972 1217.435425 1216.766235 1216.594971 1216.983154 1217.539673 1218.22937 1219.576294 1220.672974 1223.461914 1226.022217 1226.801025 1224.701904 1221.665039 1218.430298 1215.78418 1212.75415 1210.404663 1209.150024 1208.81543 1208.921631 1208.603027 1207.954834 1206.985229 1206.900269 1208.37854 1212.357422 1216.990356 1220.484619 1221.921387 1223.000854 1223.791138 1224.277344 1224.259277 1223.83667 1222.944824 1222.470215 1222.963623 1223.109619 1222.902588 1222.378052 1221.478882 1220.550781 1218.82251 1215.40332 1210.915283 1205.573608 1210.667603 1212.227417 1212.39856 1212.16394 1211.900146 1211.686646 1211.674316 1211.52002 1211.310913 1210.908081 1210.454712 1209.97229 1209.599243 1209.062378 1208.501221 1207.784912 1207.417114 1206.495239 1205.418213 1204.44397 1202.600952 1198.482544 1195.53894 1196.212646 1196.968384 1197.066162 1196.910278 1196.838623 1196.772095 1196.749146 1196.447266 1196.293335 1195.905151 1195.266113 1194.483521 1193.530518 1192.513916 1191.692871 1190.911499 1190.15918 1189.568604 1188.912842 1188.269531 1187.624512 1187.055664 1186.582886 1186.068359 1185.45752 1184.714844 1183.907104 1183.228516 1182.572998 1182.477295 1182.42749 1182.417603 1182.392212 1182.042725 1181.775879 1181.492188 1181.050903 1180.538086 1179.643921 1178.328247 1176.906006 1175.517944 1174.360474 1173.484619 1172.912476 1172.512207 1171.922852 1171.256104 1170.889038 1170.260132 1169.948242 1169.763672 1169.662598 1169.596191 1169.520264 1169.224731 1168.836914 1168.602783 1169.243286 1170.334961 1168.910889 1168.884766 1170.116943 1171.200195 1171.426025 1171.410278 1171.595581 1171.706055 1171.918457 1172.135132 1172.379395 1172.540771 1172.675293 1172.69458 1172.614868 1172.53479 1172.28833 1171.93335 1171.471191 1171.134399 1171.169434 1171.472412 1171.862549 1172.085571 1172.02478 1171.771362 1171.197754 1170.893433 1171.457397 1172.375 1172.879883 1173.385498 1173.780396 1174.098999 1174.197632 1173.905273 1173.406982 1172.580811 1171.310669 1170.945679 1171.168091 1171.494629 1171.268311 1172.87793 1173.858643 1174.264404 1174.404175 1174.318604 1174.141602 1173.939941 1173.791992 1173.629395 1173.279419 1172.69397 1171.806641 1170.956055 1170.594116 1171.317993 1171.189575 1169.447998 1167.65332 1167.295166 1167.11377 1167.723511 1168.278076 1168.5448 1168.857666 1169.454956 1170.201294 1170.998291 1172.231079 1173.418579 1174.326538 1175.235596 1176.621582 1178.101318 1179.663208 1181.718872 1187.668335 1194.5448 1196.846558 1196.447388 1196.417603 1199.101685 1200.275879 1200.455078 1200.258667 1200.171143 1200.014648 1200.071655 1198.665527 1196.724243 1194.07605 1194.70813 1195.636841 1197.517822 1199.248901 1201.287354 1202.455078 1203.753296 1204.640503 1205.073486 1207.840454 1210.407104 1213.307251 1216.213623 1220.115723 1222.782715 1225.249634 1227.064087 1227.358765 1226.096436 1225.70813 1228.928589 1232.468018 1235.675781 1243.230713 1252.049683 1262.914429 1273.283936 1280.162964 1284.14624 1290.129883 1293.662109 1295.380981 1296.535156 1297.52124 1297.977417 1297.938232 1297.36499 1296.018311 1293.567749 1289.123291 1285.59082 1284.116333 1282.495117 1280.606689 1278.845825 1276.686401 1275.428833 1274.123291 1273.572021 1272.768555 1271.894653 1270.205566 1268.512451 1266.919434 1268.824341 1275.930908 1281.095459 1285.531982 1290.189453 1293.104614 1293.019287 1288.252319 1280.088135 1268.907227 1258.962402 1270.505981 1272.63916 1270.438721 1268.211182 1267.384033 1266.976196 1271.739136 1279.361328 1285.44873 1289.814575 1293.298706 1296.174805 1297.39624 1297.785767 1297.742798 1297.164062 1295.92749 1293.771606 1291.085938 1288.854614 1286.817749 1284.400024 1281.471924 1278.738037 1277.871216 1276.662964 1275.583496 1273.678223 1271.605591 1267.474976 1258.738403 1245.261963 1241.300293 1237.968872 1233.902222 1229.396606 1223.581055 1219.591919 1209.925171 1208.290039 1201.78186 1197.383301 1205.888428 1210.655884 1205.354004 1199.66333 1199.220703 1197.458862 1192.296509 1185.913208 1171.859741 1164.64209 1157.994873 1150.5896 1145.259033 1139.9375 1135.907837 1135.699585 1135.20459 1134.708984 1133.735962 1132.730713 1132.365234 1131.855591 1131.474731 1131.243408 1130.228027 1128.889771 1126.221436 1123.680786 1121.786743 1120.647827 1120.068481 1119.532349 1118.8302 1118.061768 1117.022583 1115.698608 1114.474731 1113.109497 1111.569702 1110.212524 1110.046753 1110.04834 1110.050537 1109.363037 -1329.537354 1327.630005 1329.365723 1332.950806 1341.265137 1341.25415 1336.38208 1336.516479 1338.053345 1340.643555 1342.067017 1342.292603 1342.512329 1342.095825 1341.874268 1339.861938 1335.217041 1330.210693 1319.004028 1296.07605 1276.296875 1261.992432 1247.867432 1233.337158 1221.973145 1210.48291 1193.065063 1180.272583 1172.12439 1161.386108 1157.835938 1158.828369 1158.675049 1154.787842 1164.888794 1182.749634 1207.892578 1228.220337 1258.457153 1282.944702 1309.306152 1314.464478 1301.067627 1299.076172 1301.27417 1304.383545 1306.235718 1306.313721 1305.161011 1301.829712 1297.43396 1292.712891 1282.153198 1279.061279 1276.156982 1272.328979 1267.665771 1255.228027 1257.820068 1249.727661 1235.17334 1244.531128 1253.241455 1258.99939 1260.167236 1256.978271 1253.788208 1251.20813 1249.277832 1247.574829 1245.521606 1243.595093 1241.186157 1238.604736 1236.358643 1238.203369 1240.687622 1241.524292 1241.019531 1239.40918 1237.449341 1235.464722 1233.661987 1231.997681 1231.970215 1233.304077 1233.94165 1233.985718 1233.507812 1232.319702 1229.098389 1225.115234 1221.269165 1221.077026 1222.609985 1224.520752 1226.50415 1228.19397 1229.822144 1231.539673 1233.572021 1235.541992 1238.981201 1241.837646 1244.488892 1248.715698 1252.704102 1257.091919 1260.976318 1264.995972 1268.713501 1272.271606 1274.070068 1275.297119 1275.760254 1275.460327 1274.788696 1273.858643 1272.789062 1272.135376 1271.995972 1271.624268 1271.258789 1271.315552 1271.922974 1272.577881 1273.036743 1273.103516 1272.912109 1272.293945 1271.129883 1268.744385 1268.430542 1268.622192 1269.978638 1269.38916 1265.677246 1267.975952 1270.795288 1272.016357 1271.897217 1272.120972 1273.680664 1275.293335 1276.672485 1277.140137 1277.503174 1277.885864 1278.32605 1281.312744 1281.208374 1278.38855 1274.208252 1268.92041 1266.829712 1270.750732 1271.994385 1270.325928 1269.372314 1269.646118 1268.481689 1269.329956 1272.37915 1272.230957 1269.667603 1265.600342 1260.068237 1257.962402 1256.688354 1254.489868 1251.915527 1249.99585 1248.256958 1246.474609 1244.423828 1241.771484 1239.336304 1237.063354 1234.957397 1232.685547 1228.846802 1231.428955 1234.066772 1235.977051 1237.904297 1239.431885 1240.171021 1240.060059 1239.710938 1239.24353 1238.74939 1238.515137 1238.808838 1239.615112 1240.908447 1242.569702 1243.89624 1243.80603 1242.38208 1239.819092 1237.715332 1236.522827 1237.192871 1243.624878 1247.537354 1251.362793 1255.013794 1257.825439 1258.557251 1258.796387 1258.629639 1258.252319 1257.676392 1256.525757 1254.381226 1251.818848 1249.094482 1246.707886 1244.901611 1243.100586 1241.731689 1240.244141 1238.458618 1236.576538 1235.037598 1233.713501 1232.233887 1230.729858 1229.790039 1228.624634 1227.382324 1226.025024 1224.811279 1223.72522 1222.718262 1221.786987 1220.713989 1219.369385 1218.363892 1218.047241 1217.808105 1217.901733 1218.133179 1218.34021 1218.481445 1219.283325 1222.33374 1228.525879 1230.762207 1228.491821 1224.866943 1220.618408 1218.550171 1216.067871 1213.986206 1212.72937 1211.836914 1211.343384 1210.765259 1209.837646 1208.386841 1206.947266 1207.146606 1211.912842 1217.59314 1220.37793 1222.351685 1223.703979 1224.664917 1225.197998 1225.255615 1224.921387 1224.418945 1224.130737 1224.237183 1224.178101 1223.835571 1223.188843 1222.348755 1221.44397 1220.103394 1215.561401 1208.622681 1208.941772 1214.87915 1215.780029 1215.096191 1214.286255 1213.596558 1213.175537 1212.995605 1212.627563 1212.223633 1211.819336 1211.239258 1210.609497 1209.888184 1209.242188 1208.525269 1207.833374 1207.595459 1206.664673 1205.571411 1204.421631 1202.624756 1199.571533 1197.046631 1197.409058 1197.755981 1197.815918 1197.728027 1197.510132 1197.432495 1197.247681 1196.983032 1196.689941 1196.266724 1195.707275 1194.875732 1193.845825 1192.970337 1192.321777 1191.658569 1191.076416 1190.564819 1189.893677 1189.141235 1188.367798 1187.662964 1186.955078 1186.238159 1185.429443 1184.364624 1183.249512 1182.764771 1182.693726 1183.081543 1183.272217 1183.265991 1183.066162 1182.703491 1182.513306 1182.545288 1182.359253 1182.096191 1180.935303 1179.105713 1177.059326 1175.289062 1173.850464 1172.879517 1172.312378 1172.002563 1171.503296 1171.003662 1170.395996 1170.114136 1170.105103 1169.963257 1170.115601 1170.44458 1170.369507 1170.201782 1169.793945 1169.71814 1170.780396 1171.179321 1171.384155 1170.322876 1169.677612 1171.029541 1171.546509 1171.837769 1171.962891 1172.208496 1172.430176 1172.647339 1172.897827 1173.126343 1173.193359 1173.213257 1173.122559 1173.059204 1172.887085 1172.516602 1172.183594 1172.059326 1172.121338 1172.275757 1172.543335 1172.71814 1172.740967 1172.450806 1171.835938 1171.030518 1170.997925 1172.626831 1173.41272 1173.973145 1174.487671 1174.694702 1174.718994 1174.425781 1173.81897 1172.830688 1171.860596 1171.122192 1171.105347 1171.922485 1172.664429 1173.425659 1174.098999 1174.719727 1174.94043 1174.947632 1174.869629 1174.637085 1174.497437 1174.198242 1173.643921 1172.863647 1171.074463 1171.216797 1171.546509 1171.775635 1171.591797 1170.657104 1169.05127 1167.938354 1167.645508 1167.635376 1168.151978 1168.522705 1168.831177 1169.184326 1169.694214 1170.284302 1170.957153 1171.955322 1172.903564 1173.581787 1174.939331 1176.491821 1178.40979 1180.710449 1182.738037 1187.453247 1189.734863 1188.862427 1188.722168 1191.953369 1193.378174 1193.445801 1193.692871 1194.380615 1194.978027 1195.603271 1195.401733 1194.480957 1193.088013 1194.136353 1196.203491 1197.166016 1197.651245 1198.912476 1199.786743 1201.034668 1202.358398 1203.428467 1205.928955 1206.804199 1207.764893 1209.918091 1215.713257 1219.628296 1221.85083 1222.719971 1223.116821 1222.094238 1220.043945 1225.468262 1229.348999 1230.759521 1235.239258 1240.607788 1252.127808 1263.168823 1269.590698 1278.576904 1281.149292 1286.139282 1291.091797 1293.524658 1296.431519 1297.79834 1298.440063 1298.346436 1297.526123 1295.895386 1294.087891 1293.354004 1292.142822 1289.698364 1286.814453 1284.537354 1282.738647 1281.124634 1279.264526 1277.782593 1276.381226 1274.871582 1272.618042 1270.553589 1268.457153 1268.329834 1276.62793 1283.518433 1289.332275 1293.648804 1295.407593 1295.750977 1293.239136 1282.328003 1272.30957 1266.715454 1277.44165 1282.9021 1281.14563 1278.276855 1274.973389 1271.17041 1267.835938 1273.75415 1278.651245 1281.604614 1287.119873 1292.761841 1296.042847 1297.445557 1297.889771 1297.692383 1296.976807 1295.634521 1294.095215 1293.804932 1292.370117 1289.054565 1285.097046 1282.080566 1281.725586 1279.694946 1279.348511 1277.13208 1273.84314 1270.091309 1264.3302 1255.759644 1252.993164 1247.71814 1241.018677 1232.137207 1227.341919 1222.759399 1218.52771 1215.335327 1209.517944 1207.377441 1210.865112 1209.69519 1197.423584 1192.838623 1189.352417 1184.570679 1179.331543 1170.763672 1163.034058 1157.193604 1151.514404 1146.131836 1141.035034 1136.610107 1134.47583 1133.933472 1133.482788 1133.46167 1132.817261 1132.86499 1133.222656 1132.938477 1133.035645 1133.095337 1132.904175 1132.421875 1129.2229 1125.074341 1122.145752 1121.335205 1120.968384 1120.512085 1119.880981 1118.919067 1117.751221 1116.460693 1115.181152 1113.842163 1112.017456 1110.735352 1109.956665 1110.04126 1110.045532 1110.050781 -1332.272705 1330.961548 1332.348511 1334.822266 1337.931885 1339.180176 1338.62915 1339.210205 1338.837036 1339.850586 1342.881958 1343.443359 1343.494019 1343.375732 1343.095581 1342.348877 1329.842041 1317.379395 1304.062378 1288.319214 1276.553711 1267.858887 1252.732422 1238.050781 1225.151001 1212.238647 1193.54541 1181.084106 1171.413696 1159.192383 1158.345703 1159.071167 1159.161377 1154.971313 1165.222778 1187.414307 1208.959595 1229.996216 1257.759277 1284.932129 1312.350952 1317.727905 1303.963257 1302.670532 1305.849731 1306.755615 1307.386475 1307.392456 1306.664429 1305.039062 1298.992188 1292.804077 1285.557739 1282.632935 1279.018555 1269.389526 1267.720215 1270.562988 1264.953125 1250.489746 1240.796997 1248.366333 1255.587158 1263.055176 1266.711426 1260.213623 1255.407471 1253.432983 1251.640503 1249.697754 1247.419312 1245.453125 1242.765381 1241.838623 1241.485352 1243.433228 1244.219604 1244.526245 1244.012451 1242.015991 1239.348145 1236.397827 1233.800781 1231.959106 1232.434814 1233.825806 1234.678833 1234.378174 1233.307129 1231.509644 1229.465088 1226.10376 1222.436523 1223.042236 1224.731812 1226.6427 1228.103882 1229.877686 1231.885864 1233.70874 1236.106812 1238.847412 1242.755615 1245.654541 1246.320923 1249.520752 1253.164673 1256.007935 1262.073608 1268.351929 1271.010498 1273.5802 1275.87439 1277.591797 1277.86438 1277.239624 1276.459106 1275.58606 1274.656006 1273.990967 1273.575439 1273.380493 1273.03125 1273.038574 1273.35437 1273.758423 1274.087036 1274.315796 1273.995972 1273.406494 1272.179932 1270.063232 1270.401245 1271.297729 1271.687134 1271.059814 1269.728271 1268.204468 1271.147095 1273.737427 1275.084961 1275.911865 1277.289307 1278.12915 1279.77771 1280.344849 1279.747925 1279.391357 1279.446655 1282.132935 1282.13501 1281.131226 1275.618286 1268.622314 1270.628418 1274.503296 1277.13208 1277.824585 1277.632324 1276.2229 1275.700928 1275.276489 1275.039551 1273.6604 1270.45166 1267.723145 1268.421509 1264.59375 1259.898682 1256.17395 1253.580566 1251.492798 1249.524658 1246.905518 1244.013184 1241.932861 1239.458618 1236.82251 1234.576538 1232.567383 1229.077026 1231.343262 1234.192993 1237.092651 1239.86084 1241.952393 1243.135986 1243.13501 1242.619873 1241.673584 1240.776978 1240.358154 1240.567017 1241.432617 1242.521973 1243.750977 1244.838623 1244.985352 1244.171021 1241.779175 1239.274658 1237.542236 1236.850952 1242.351196 1247.064819 1251.452637 1255.65686 1257.935913 1258.662476 1258.745239 1258.497681 1258.028076 1257.199219 1256.039795 1253.878296 1251.56897 1249.30603 1247.31189 1245.428589 1243.866699 1242.289307 1240.57605 1238.953247 1237.409546 1235.834717 1234.184204 1232.508423 1231.112793 1230.920532 1229.875854 1228.250488 1227.024658 1225.887329 1224.707275 1223.480347 1222.22583 1220.847534 1219.509644 1219.067505 1219.380615 1219.2948 1219.300537 1219.051514 1218.850342 1218.595459 1218.421265 1220.652344 1227.967407 1233.13562 1232.395142 1229.491089 1225.628662 1221.864624 1218.807739 1217.544556 1216.558105 1215.135254 1214.36438 1213.25 1211.828003 1210.100342 1207.909302 1206.86499 1210.659058 1219.407959 1221.536011 1223.117554 1224.655151 1225.716431 1226.180298 1226.292236 1226.066162 1225.721924 1225.513306 1225.459473 1225.245361 1224.803711 1224.09021 1223.098633 1221.924683 1220.270264 1217.328979 1214.871704 1218.718628 1220.3125 1218.736816 1217.317505 1216.048218 1215.160645 1214.531372 1214.117065 1213.685181 1213.12439 1212.421387 1211.64917 1210.849976 1209.95752 1209.210571 1208.475952 1208.051514 1207.547485 1206.538696 1205.40564 1204.460693 1202.842896 1200.939575 1199.548218 1198.887085 1198.694702 1198.664062 1198.463745 1198.222046 1198.049683 1197.785645 1197.368408 1196.999878 1196.500244 1195.970337 1195.054565 1194.038574 1193.398438 1192.94519 1192.595947 1192.13916 1191.585205 1190.817871 1189.94873 1189.040771 1188.325195 1187.501221 1186.629272 1185.790649 1184.576904 1183.723877 1182.983154 1183.273193 1183.796265 1183.914917 1183.887329 1183.654053 1183.39624 1183.322754 1183.352661 1183.467407 1183.199585 1182.142578 1179.77478 1177.074341 1174.771851 1173.135498 1172.068115 1171.723755 1171.179443 1170.905273 1170.65686 1170.437378 1170.373779 1170.302124 1170.52356 1171.050659 1171.219482 1171.168823 1171.078857 1170.903564 1170.826172 1170.858398 1171.062622 1171.794067 1171.791626 1170.863525 1170.610596 1171.438232 1171.817627 1172.117554 1172.505249 1172.744629 1173.119507 1173.334106 1173.575195 1173.766357 1173.766113 1173.71875 1173.660278 1173.386719 1173.264648 1173.164795 1173.022705 1173.011475 1173.184204 1173.271851 1173.478271 1173.380005 1173.181274 1172.55481 1171.832764 1172.085938 1173.119263 1174.032593 1174.615234 1175.083008 1175.417847 1175.292847 1174.990723 1174.221436 1173.402344 1172.344849 1171.185303 1171.015869 1172.279297 1173.131958 1173.939209 1174.573242 1175.113525 1175.327026 1175.486694 1175.365479 1175.229858 1174.967529 1174.61145 1174.043579 1173.237061 1172.157471 1172.041626 1172.18042 1172.16272 1171.856934 1171.172119 1169.997559 1168.473633 1168.052856 1167.72522 1168.026855 1168.499512 1168.820312 1169.118774 1169.438721 1169.905151 1170.251587 1170.554321 1170.957275 1171.587524 1173.035034 1174.908569 1176.608887 1178.300415 1180.359497 1181.844604 1182.345825 1181.901978 1181.68689 1183.015991 1184.506836 1186.359985 1188.839844 1189.702271 1189.396484 1188.365234 1187.601685 1190.575195 1191.370972 1193.044556 1194.696411 1195.104248 1195.409424 1196.094238 1196.886475 1198.233154 1200.296631 1202.054443 1204.703125 1205.812866 1206.568237 1207.166992 1211.004761 1216.788208 1218.960938 1219.792114 1219.901978 1219.246826 1219.538086 1228.17749 1234.998413 1241.60083 1251.21167 1264.20459 1274.732178 1279.970459 1283.084106 1282.942749 1281.95105 1282.386719 1289.341919 1292.506714 1295.581909 1297.924438 1299.193848 1299.563354 1299.046387 1298.191772 1296.912842 1296.227905 1295.463867 1294.241699 1292.320557 1289.370728 1286.588989 1284.463745 1282.849976 1281.47168 1280.10083 1278.596802 1275.846436 1273.068115 1270.287964 1267.657227 1277.162109 1285.424927 1291.985352 1295.389038 1296.422485 1296.577393 1295.293091 1286.116577 1275.724854 1266.940308 1278.706177 1288.828003 1292.596802 1289.828979 1284.400513 1279.736084 1275.51123 1276.173462 1281.43457 1281.291626 1283.73645 1292.082275 1295.538696 1296.978271 1297.879761 1297.998901 1297.570801 1296.952759 1296.034058 1295.219604 1294.323364 1293.105591 1289.574219 1286.912231 1285.193237 1283.786499 1282.552368 1279.304321 1276.746094 1274.052002 1271.512939 1268.69519 1262.187256 1256.464966 1247.089478 1237.270874 1231.460083 1227.615356 1224.425293 1220.989868 1217.710693 1213.713623 1209.765381 1199.31958 1186.528076 1179.724243 1176.509277 1172.521973 1166.54187 1159.870605 1154.24646 1148.828735 1144.74292 1141.297485 1137.418579 1137.865723 1140.129761 1139.520264 1137.025879 1138.084351 1140.843018 1139.060425 1136.641724 1134.900024 1134.782593 1135.651978 1135.848999 1135.520142 1132.856812 1127.728271 1123.21875 1122.809448 1121.795288 1121.614136 1120.845703 1119.841675 1118.604004 1117.20752 1116.151855 1115.234375 1114.564941 1114.307129 1112.401733 1110.022583 1110.018677 1109.830444 -1336.010254 1335.573486 1336.210815 1337.846313 1339.369019 1341.097656 1341.790649 1341.168457 1337.107544 1335.712158 1342.555298 1343.869141 1345.983887 1344.595459 1336.711182 1319.337402 1307.733276 1293.21814 1281.834229 1274.286743 1269.637939 1265.769531 1257.779663 1241.096558 1229.155273 1212.877563 1195.916382 1183.680542 1170.124268 1158.177612 1158.674438 1159.052612 1159.202515 1154.765381 1165.539307 1188.557739 1209.358032 1231.613403 1255.877441 1284.01062 1310.837769 1315.848022 1305.063232 1305.561523 1308.223389 1308.723389 1308.507935 1307.809204 1306.716797 1305.60144 1297.057739 1290.989136 1288.132812 1284.4646 1280.885864 1271.130371 1272.809204 1271.927246 1258.735107 1246.22644 1246.098877 1250.859253 1256.751953 1266.198853 1270.529419 1265.001953 1258.494751 1256.147705 1253.942871 1251.832397 1249.318237 1246.950928 1244.196655 1243.608521 1244.970093 1245.618042 1246.11084 1246.329712 1245.6604 1244.105591 1240.503662 1237.258667 1233.317383 1232.032349 1234.028564 1235.583862 1235.934204 1235.194824 1232.033325 1231.627075 1230.479004 1228.531982 1224.398682 1224.704712 1226.737061 1228.931396 1229.980103 1230.89978 1233.405273 1235.869751 1238.197876 1240.572144 1243.275024 1246.43457 1249.156494 1251.899048 1253.676758 1255.405396 1261.515747 1268.910889 1271.84436 1274.682739 1277.694336 1279.881226 1279.897339 1279.099487 1278.346069 1277.166504 1276.032227 1275.403931 1274.990723 1274.757446 1274.6521 1274.594238 1274.731079 1275.130981 1275.292358 1275.304688 1275.220215 1274.853516 1274.12439 1273.635864 1273.576416 1273.949951 1273.758789 1273.323242 1272.187866 1271.850708 1273.965698 1276.011597 1277.617798 1279.281738 1280.29541 1280.252197 1281.61853 1282.257202 1281.682251 1280.571899 1280.665161 1282.873535 1282.999634 1281.962036 1278.143677 1270.568237 1273.886108 1278.181641 1281.419922 1282.010742 1282.071533 1281.686523 1280.7052 1278.877197 1277.817261 1275.581421 1272.377686 1270.991211 1270.884521 1268.531494 1262.509888 1257.860229 1254.617798 1253.197266 1251.637329 1248.471558 1245.511353 1242.695312 1239.760742 1236.210205 1233.261597 1231.20166 1228.795776 1231.446899 1235.231079 1238.562012 1241.735718 1244.145508 1244.868774 1244.915039 1244.437744 1243.22937 1242.070801 1241.455078 1241.728271 1242.820801 1243.997925 1244.479004 1245.2052 1245.437256 1244.848389 1243.100586 1240.448242 1238.491211 1237.495605 1242.472656 1247.022461 1251.775391 1255.3479 1258.048096 1258.592163 1258.622192 1258.289673 1257.697266 1256.78833 1255.541748 1253.439087 1251.304932 1249.349121 1247.575073 1246.129639 1244.501343 1242.725586 1241.06311 1239.650146 1238.388794 1236.843628 1234.760254 1232.084351 1232.184082 1232.476807 1230.908691 1229.150391 1228.002197 1226.878784 1225.612305 1224.218872 1222.629028 1220.868286 1219.493774 1220.181641 1220.702759 1220.712891 1220.125488 1220.326294 1219.894043 1219.217407 1218.893188 1219.04541 1224.330688 1229.766724 1232.374146 1233.145142 1231.583618 1227.088013 1221.760986 1220.916138 1219.129761 1218.682983 1217.935791 1216.424683 1214.275513 1212.248535 1210.041504 1207.68103 1211.683716 1220.145996 1222.600464 1224.447998 1225.876587 1226.793335 1227.21936 1227.380249 1227.296021 1226.904907 1226.735718 1226.738525 1226.412354 1225.886719 1224.97583 1223.746704 1222.216553 1220.095093 1218.926758 1220.166504 1221.11853 1221.141479 1219.73877 1218.381104 1217.38623 1216.519531 1215.829102 1215.180176 1214.430664 1213.639282 1212.763794 1211.759277 1210.759277 1209.789551 1208.998169 1208.350342 1207.775757 1207.082764 1205.985718 1205.264526 1204.536377 1203.162109 1201.972412 1200.855469 1200.207764 1199.632812 1199.466064 1199.169434 1198.884644 1198.650146 1198.276245 1197.720703 1197.194824 1196.612061 1195.901978 1195.011719 1194.285034 1193.938965 1193.758423 1193.594727 1193.244629 1192.521362 1191.704102 1190.714478 1189.844482 1188.91394 1188.148315 1187.25647 1186.366455 1185.239624 1183.966431 1183.217529 1183.946045 1184.403442 1184.645386 1184.509399 1184.450439 1184.235474 1184.115845 1184.043701 1183.921509 1183.553223 1182.651367 1179.925781 1176.707275 1174.065674 1172.54126 1171.640259 1171.054932 1171.036133 1171.0802 1171.046265 1170.917603 1170.932617 1170.798462 1171.158691 1171.713989 1171.931763 1172.001587 1172.036133 1171.963379 1171.895996 1171.558228 1171.197876 1172.348511 1172.633057 1172.230469 1171.115234 1171.257935 1171.708862 1172.173706 1172.641724 1173.078369 1173.455811 1173.716064 1174.046143 1174.174683 1174.260498 1174.394409 1174.324341 1174.221558 1174.175415 1174.039795 1173.929199 1173.947998 1174.04126 1174.191528 1174.221802 1174.148193 1173.87085 1173.567139 1173.557129 1173.88562 1174.435791 1174.818115 1175.411011 1175.874023 1176.117554 1176.09021 1175.65332 1175.005371 1174.200928 1173.081665 1171.349121 1171.294434 1172.770752 1173.845947 1174.457397 1175.088989 1175.4104 1175.771606 1175.828491 1175.838867 1175.607178 1175.347168 1175.055542 1174.562256 1173.844727 1173.226929 1172.793701 1172.599121 1172.330688 1172.015015 1171.312988 1170.151245 1169.035034 1167.94397 1167.93042 1168.152832 1168.587402 1169.560669 1170.435913 1170.845459 1170.553955 1170.344849 1170.664917 1170.850464 1170.869873 1171.720093 1173.486206 1174.790039 1176.255249 1177.611816 1178.592773 1179.039673 1179.064819 1179.362671 1180.116211 1180.904297 1182.168579 1184.901978 1185.989014 1183.613525 1182.741211 1183.53894 1187.630493 1189.197998 1190.606201 1192.059814 1192.706787 1193.217041 1193.78125 1194.454224 1196.349487 1198.978882 1201.13855 1204.428101 1205.969238 1207.780518 1209.142334 1211.492065 1214.621704 1216.749268 1217.409302 1217.708862 1218.141846 1219.853638 1229.871094 1237.036011 1246.504517 1255.614624 1266.376831 1271.735718 1277.062988 1281.648438 1285.730957 1292.76001 1294.288452 1292.700317 1292.468994 1295.715942 1298.569336 1300.171387 1301.218628 1301.014893 1300.298462 1299.365845 1298.43457 1297.645264 1296.463867 1294.956665 1292.883545 1289.983154 1287.568848 1285.652222 1284.222168 1283.02002 1281.744507 1279.186401 1276.777832 1273.259399 1270.879028 1276.848267 1284.965576 1292.394897 1295.896606 1296.459839 1297.122681 1296.315186 1290.621582 1280.796509 1270.040039 1273.17749 1286.989624 1296.353516 1296.20105 1293.412354 1288.354736 1282.863892 1279.317261 1281.281372 1284.50293 1290.476562 1293.862793 1295.151611 1296.375977 1297.371338 1297.884766 1297.896973 1297.552002 1297.057251 1296.685303 1295.968994 1294.537354 1292.46106 1290.851074 1288.883667 1286.906616 1283.889893 1280.228516 1279.458008 1278.216553 1275.544922 1271.594971 1266.164307 1261.169189 1254.53833 1244.974243 1237.676392 1231.969604 1226.109253 1222.92627 1220.736328 1211.630127 1202.979004 1189.484009 1177.24585 1169.187866 1165.324463 1160.013184 1156.317871 1152.607666 1147.798462 1143.64563 1140.978027 1139.959595 1140.921753 1143.269165 1147.435791 1148.316772 1144.648804 1143.919067 1149.144531 1150.000977 1147.045898 1145.120972 1142.672974 1140.700928 1138.962891 1137.095825 1134.1521 1130.191162 1126.522095 1124.359253 1123.344116 1122.856445 1121.798218 1120.686279 1119.341797 1118.107178 1117.179688 1116.802979 1117.429932 1121.521118 1119.528442 1113.987915 1110.36792 1109.366333 -1339.357056 1338.66333 1339.407471 1341.064697 1342.027466 1342.933228 1343.059082 1342.497681 1335.775757 1321.307251 1327.722778 1331.86792 1328.643921 1313.912842 1296.351929 1290.573486 1282.086182 1270.631714 1264.388306 1255.437622 1249.861694 1250.05127 1248.613525 1237.523804 1224.935059 1212.550415 1197.907837 1184.557007 1162.734131 1157.959839 1158.702393 1158.921143 1158.704224 1154.799072 1169.31543 1188.609497 1209.583008 1229.41687 1251.822876 1280.260254 1310.612427 1315.167114 1312.734497 1311.09668 1311.143188 1310.569336 1309.483643 1308.141357 1305.89502 1302.330933 1295.183472 1292.608643 1289.909302 1283.9646 1279.468018 1280.924927 1280.523193 1273.986694 1263.207642 1243.979858 1247.479614 1252.067993 1257.539551 1267.304321 1270.355347 1267.200317 1262.518066 1259.194824 1256.097534 1254.062012 1251.568604 1248.025269 1244.361084 1244.999268 1247.0 1247.588379 1247.695557 1247.301147 1246.188354 1244.234253 1241.750854 1239.126343 1236.460083 1234.789185 1237.106689 1238.456787 1237.947144 1236.623169 1234.947388 1234.214355 1232.98938 1232.63269 1227.813354 1226.169678 1229.255249 1231.627197 1232.610352 1232.483398 1234.817871 1237.656494 1240.336426 1243.128296 1245.279663 1248.031494 1251.560791 1254.980957 1256.413574 1255.601318 1257.102173 1266.412109 1271.634399 1275.887451 1279.590332 1281.24585 1281.434326 1280.769897 1279.706787 1278.411865 1277.203857 1276.537231 1276.236938 1276.050415 1275.884644 1275.996826 1276.149658 1276.421631 1276.548828 1276.514404 1276.42334 1276.319214 1276.183228 1276.42627 1276.956299 1277.253418 1276.793579 1275.835327 1275.378296 1275.908081 1277.546875 1278.248291 1278.722168 1281.294434 1282.011475 1281.960938 1282.880493 1283.474731 1283.192505 1282.579224 1282.515259 1283.916016 1283.911255 1283.278809 1281.880127 1272.708862 1277.141968 1280.359253 1282.769287 1283.707275 1283.8479 1283.526978 1282.579712 1281.140137 1279.517456 1277.512939 1275.338135 1273.397095 1271.852905 1269.197266 1263.509033 1257.437134 1255.753906 1255.940186 1254.843994 1250.512085 1246.665649 1243.493408 1239.536499 1236.000977 1232.351318 1229.619019 1230.509033 1232.380249 1236.257324 1239.971558 1242.832153 1244.854248 1245.817871 1246.158936 1245.68042 1244.180908 1242.636108 1242.083374 1242.397827 1243.44751 1244.506226 1245.247925 1245.617554 1245.616577 1245.467773 1244.349731 1241.927612 1239.34668 1238.251831 1242.338867 1247.362671 1252.398193 1256.655884 1258.507324 1258.511475 1258.485962 1258.008057 1257.04834 1256.35144 1254.931396 1253.000977 1250.828003 1248.805054 1247.103027 1245.776733 1244.275024 1242.703125 1241.39563 1240.332642 1239.4552 1238.153687 1236.180786 1234.436279 1233.782349 1232.685791 1231.201538 1230.183594 1229.006836 1227.758545 1226.558228 1225.259521 1223.854004 1222.077759 1220.739136 1221.432251 1222.03479 1222.142212 1221.743896 1221.495728 1220.924805 1219.884155 1219.017822 1218.771484 1221.556519 1225.79541 1228.807373 1231.152954 1232.637695 1232.15686 1227.752563 1223.543457 1221.991577 1221.506958 1220.70813 1219.266968 1216.756958 1214.701782 1213.38562 1214.031616 1219.623657 1222.01062 1224.190552 1226.086792 1227.334595 1228.132324 1228.515137 1228.543213 1228.356934 1228.051514 1227.94519 1228.020142 1227.67041 1227.042725 1225.986694 1224.410522 1222.385376 1219.56604 1220.072876 1221.467529 1222.075684 1221.806152 1220.477783 1219.11792 1218.092041 1217.624756 1217.045898 1216.161011 1215.067749 1213.903809 1212.794067 1211.570679 1210.327515 1209.327026 1208.2771 1207.595703 1207.063354 1206.219849 1205.66333 1205.155396 1204.53833 1203.437012 1202.732422 1201.862549 1201.164185 1200.479736 1200.280884 1199.89624 1199.565308 1199.227295 1198.769531 1197.996582 1197.314941 1196.339355 1195.373291 1194.816528 1194.644897 1194.777344 1194.779175 1194.638184 1194.3927 1193.505249 1192.52356 1191.52063 1190.58313 1189.73938 1188.894287 1188.015015 1187.179443 1186.198608 1185.344849 1184.748047 1184.775024 1185.141479 1185.23291 1185.231201 1185.122681 1184.956421 1184.673828 1184.49646 1184.211914 1183.675903 1182.616455 1179.31189 1175.773315 1173.154541 1172.163452 1172.000854 1171.816772 1171.7948 1171.938599 1171.830811 1171.822876 1171.729492 1171.810791 1172.122681 1172.561279 1172.769531 1172.78064 1172.978516 1172.923218 1172.998901 1173.076904 1173.222046 1173.532593 1173.797241 1173.434692 1172.862305 1171.695801 1171.880615 1172.285645 1172.763184 1173.295166 1173.718994 1174.093018 1174.404785 1174.606567 1174.911011 1175.071167 1175.1698 1175.156738 1175.012085 1174.917725 1174.845459 1174.834717 1174.939331 1175.086426 1175.095703 1175.017334 1174.829956 1174.755737 1174.8927 1175.156006 1175.570068 1175.951416 1176.335205 1176.670654 1177.041382 1177.033813 1176.741455 1176.035522 1175.344604 1174.395996 1173.632446 1173.534424 1174.075439 1174.727539 1175.200806 1175.668945 1176.014404 1176.199829 1176.206909 1176.154907 1175.869873 1175.700073 1175.337769 1175.015991 1174.512695 1173.911255 1173.400391 1173.122559 1172.632812 1171.972656 1171.366455 1170.395386 1169.411499 1168.213013 1168.1073 1168.470093 1169.84375 1171.296753 1171.737427 1171.824707 1171.619019 1171.472534 1171.338989 1171.245483 1171.280762 1171.280151 1172.378296 1173.417236 1174.228394 1175.14624 1175.77771 1176.364868 1176.922241 1177.604614 1178.492065 1179.578979 1181.115479 1182.998413 1183.115234 1183.149414 1184.067017 1185.323853 1186.511963 1187.387817 1188.397949 1189.672485 1190.784912 1191.777588 1192.97583 1194.487427 1196.65918 1198.816895 1200.835938 1204.973267 1207.330933 1208.957153 1210.124878 1211.533569 1213.155884 1214.606445 1215.622192 1216.68103 1218.457886 1222.1698 1229.03479 1237.011597 1244.665527 1250.419434 1256.798584 1261.534668 1266.671997 1274.269897 1280.326416 1289.616211 1295.565308 1295.283203 1295.489502 1297.278564 1299.517456 1301.634766 1303.027954 1302.906006 1302.134277 1301.339966 1300.369507 1299.231201 1298.063232 1296.84082 1294.921753 1292.324097 1290.000122 1288.197998 1286.752319 1285.409668 1283.788574 1282.105713 1280.314087 1276.985474 1276.444946 1279.619629 1285.077148 1291.873901 1295.453613 1296.902954 1297.10022 1296.605835 1293.134277 1286.223022 1277.823242 1266.408203 1278.938354 1290.072876 1296.137207 1296.218628 1295.258911 1292.384521 1285.357788 1279.828003 1282.307983 1288.534912 1293.164795 1294.160645 1295.273315 1296.763794 1297.47522 1297.652344 1297.638428 1297.484741 1297.484619 1296.713745 1296.294556 1295.03833 1293.868652 1292.208374 1290.557739 1287.858887 1284.879395 1283.037964 1281.991333 1279.522217 1274.279053 1268.82312 1264.850098 1257.215088 1247.664307 1239.09375 1232.236328 1221.601074 1216.822998 1213.179443 1205.184204 1191.289551 1179.929443 1167.76355 1157.415161 1155.515259 1153.033081 1149.841919 1146.867188 1143.503296 1143.720459 1145.949707 1146.759155 1146.03125 1148.109375 1152.574219 1157.276611 1151.974243 1145.149292 1153.473999 1158.569214 1154.747437 1151.749023 1148.268799 1144.775146 1141.714233 1138.058594 1134.497192 1131.610107 1129.028931 1126.721191 1125.239502 1124.032959 1122.37561 1121.27771 1120.215332 1118.893433 1118.253662 1118.225464 1119.419189 1122.506226 1122.760132 1120.161621 1114.121216 1110.621704 -1342.082764 1341.780273 1342.047974 1342.612305 1343.425781 1343.955444 1343.9823 1343.608032 1338.794922 1307.247192 1299.920776 1298.930908 1288.599243 1277.995361 1269.334473 1265.077026 1260.167358 1255.630249 1249.23645 1239.578003 1233.973145 1231.445312 1229.261353 1224.618408 1217.195801 1209.132568 1196.673828 1179.211182 1164.145752 1158.419922 1157.394287 1157.614136 1155.363159 1158.742432 1173.815796 1188.090576 1209.52832 1225.983032 1247.713867 1271.025635 1307.544067 1318.588257 1317.162964 1315.014648 1313.873291 1312.306885 1310.652588 1308.140259 1304.907593 1303.234985 1300.406982 1296.242798 1292.658813 1287.46814 1285.676025 1285.767212 1282.610596 1274.222046 1261.979858 1243.941162 1248.764771 1253.140869 1258.114868 1268.19397 1271.845581 1269.604858 1265.81189 1261.982788 1258.774292 1256.935669 1254.157959 1250.585449 1247.683228 1248.011719 1249.713867 1249.96106 1249.190674 1247.612549 1245.814087 1243.77771 1242.245361 1241.464233 1240.946411 1241.106323 1242.2146 1241.759277 1240.111938 1239.037354 1238.192383 1237.042847 1235.722656 1234.192871 1230.681274 1227.70105 1230.911255 1233.581665 1234.801758 1235.776001 1237.517578 1239.54187 1241.739502 1244.532471 1247.439209 1249.858887 1253.002686 1256.348267 1261.156982 1261.550537 1255.170166 1263.371826 1269.963623 1276.215942 1280.310181 1281.649414 1281.970947 1281.774292 1280.811279 1279.223999 1278.091064 1277.437866 1277.177612 1277.126343 1277.087646 1277.233032 1277.468506 1277.763428 1277.844727 1277.733887 1277.60376 1277.52063 1277.824707 1278.390747 1279.368408 1280.713745 1279.548096 1278.372803 1277.54126 1278.185547 1280.293335 1280.729858 1279.979858 1281.202637 1283.050781 1284.087036 1284.723511 1284.973511 1285.023315 1284.82666 1284.9729 1285.24353 1284.866089 1284.129883 1283.109009 1275.753174 1281.598267 1282.771118 1284.348877 1285.123413 1285.510254 1285.165283 1284.090698 1282.457031 1281.392456 1279.598877 1277.233521 1274.762451 1271.912354 1268.436035 1266.189209 1265.502441 1263.613281 1261.224365 1257.598511 1252.06897 1246.323242 1242.897827 1239.420898 1235.630737 1232.874756 1230.554199 1232.897339 1235.36499 1238.554932 1241.324829 1243.685791 1245.683594 1246.987671 1247.160767 1246.397705 1244.618652 1243.013062 1242.375732 1242.677612 1243.501099 1244.503174 1245.3479 1245.705078 1245.878906 1245.787231 1245.032471 1243.032715 1240.364258 1238.997192 1243.293335 1248.149902 1253.470825 1257.37146 1258.451782 1258.413818 1258.220459 1257.434448 1256.512817 1255.304199 1254.016602 1252.381104 1250.274658 1247.870239 1245.793823 1244.378296 1243.293579 1242.406982 1241.722168 1241.221069 1240.705811 1239.777832 1238.273682 1236.44165 1235.039673 1233.661499 1232.230225 1231.27417 1229.896729 1228.599854 1227.41333 1226.403076 1225.41394 1224.599731 1223.921753 1223.66394 1223.667725 1223.562988 1223.115723 1222.630859 1221.729614 1220.626831 1219.375854 1218.884888 1219.720703 1223.210327 1226.1427 1228.814697 1230.942261 1231.659058 1229.040039 1226.114868 1224.650269 1223.675781 1222.696411 1221.185059 1218.949341 1217.11853 1216.550049 1217.829834 1220.725952 1223.453979 1226.069702 1228.059326 1229.091797 1229.651245 1229.818359 1229.628418 1229.435425 1229.108521 1229.122437 1229.430908 1229.124512 1228.374878 1227.060181 1225.391846 1222.392212 1220.404053 1221.705078 1222.803711 1222.88916 1222.505005 1221.275146 1220.090332 1219.258179 1218.907471 1218.377075 1216.966675 1215.336426 1213.857788 1212.544434 1211.245605 1209.931274 1208.667725 1207.637329 1206.708008 1206.165771 1205.849365 1205.524048 1205.234741 1204.821655 1203.981812 1203.442627 1202.771362 1201.999878 1201.413452 1200.997437 1200.601196 1200.14856 1199.806519 1199.210083 1198.429932 1197.36145 1195.29126 1195.310547 1195.500122 1195.562134 1195.564331 1195.579712 1195.470703 1195.251709 1194.480957 1193.204712 1192.212402 1191.306641 1190.549561 1189.649048 1188.908325 1188.105225 1187.305176 1186.639038 1185.979736 1185.742554 1185.921509 1185.896729 1185.91394 1185.747559 1185.442627 1185.110474 1184.651855 1184.265747 1183.835327 1182.426636 1178.568359 1174.921265 1172.73645 1172.677856 1172.570312 1172.609741 1172.548706 1172.66394 1172.669922 1172.569214 1172.744995 1172.723633 1173.089966 1173.448853 1173.535767 1173.718994 1173.901855 1174.122803 1174.406982 1174.759033 1175.204712 1175.606079 1175.792114 1175.561157 1174.487915 1173.033325 1172.274292 1172.608032 1173.088989 1173.605347 1174.112671 1174.564087 1175.016479 1175.28186 1175.669189 1176.053589 1176.200806 1176.173706 1176.020142 1175.901855 1175.841675 1175.837402 1175.901123 1176.017578 1175.978882 1175.952759 1175.922363 1175.83313 1175.923584 1176.306274 1176.658081 1177.09021 1177.3927 1177.750366 1178.144897 1178.166504 1177.893433 1177.428955 1176.779663 1176.217407 1175.87207 1175.720459 1175.670776 1175.934326 1176.194214 1176.451416 1176.678711 1176.849854 1176.763428 1176.596313 1176.437134 1176.188965 1175.909546 1175.60144 1175.086304 1174.507202 1173.976685 1173.487915 1172.993896 1172.348755 1171.568359 1171.065674 1170.207764 1168.993408 1168.149658 1168.154663 1169.772461 1171.015625 1171.57666 1171.768066 1171.775391 1171.690918 1171.660767 1171.506836 1171.134277 1171.055176 1171.003662 1171.828003 1172.425049 1172.743896 1173.258423 1174.166992 1174.973145 1175.981689 1177.250732 1178.689453 1180.407837 1181.779907 1182.718262 1183.701294 1184.494751 1185.187988 1185.451904 1185.515869 1186.296997 1187.598633 1189.06189 1190.766602 1192.841064 1194.901367 1197.141357 1198.775635 1200.611694 1205.352661 1207.695312 1209.13562 1209.966064 1210.786255 1211.701904 1212.917847 1214.383057 1216.048096 1218.147339 1221.197266 1227.144897 1233.213989 1238.944824 1242.307861 1243.946289 1248.416504 1254.615356 1265.559448 1272.15564 1276.934448 1286.860352 1294.03772 1296.406982 1297.668579 1299.83606 1302.804199 1304.672241 1304.585083 1304.090576 1303.150635 1301.803223 1300.202759 1299.355347 1298.506836 1296.780884 1293.977783 1291.842773 1290.179688 1288.855835 1287.526733 1286.153442 1284.361816 1282.01062 1279.713745 1278.524902 1280.11792 1289.476318 1292.239014 1294.371094 1296.503174 1296.46521 1296.28418 1294.504639 1292.114014 1286.380615 1279.231201 1275.079956 1280.834839 1289.461304 1295.632568 1295.806396 1294.666138 1293.673462 1289.549805 1283.786621 1289.379395 1291.450317 1292.609863 1292.968018 1294.438232 1296.312866 1296.907593 1295.879639 1295.880615 1296.976929 1296.874146 1296.354004 1296.519653 1295.59375 1294.641724 1294.036621 1292.147339 1288.05603 1284.906128 1282.954224 1279.866333 1275.311157 1272.356567 1270.228027 1256.63147 1242.369385 1230.429565 1221.687134 1211.084595 1201.08667 1198.932617 1192.226318 1176.782837 1168.091309 1160.231201 1155.666748 1151.113647 1148.211548 1145.800415 1147.500122 1149.601807 1152.172729 1154.013184 1153.859375 1153.532593 1155.68396 1157.763062 1162.236084 1160.702515 1151.390991 1153.077148 1160.874512 1160.596802 1156.987793 1152.329712 1147.857422 1143.360596 1138.646851 1134.015381 1133.566406 1131.928101 1129.260864 1127.004517 1125.096558 1123.461792 1122.357178 1120.93042 1119.560547 1119.03186 1119.089478 1119.923096 1121.697388 1122.375 1122.409424 1116.774414 1112.078247 -1344.179443 1343.648315 1343.276123 1343.652588 1344.193481 1344.867798 1345.250732 1344.571167 1330.717163 1307.357422 1278.950806 1265.856812 1265.676758 1260.855225 1254.753052 1247.216675 1240.64856 1236.928833 1229.994019 1222.30188 1215.981812 1213.085693 1212.215088 1205.887085 1202.300171 1199.950928 1190.484131 1170.70166 1160.64624 1157.04834 1156.353394 1157.832031 1161.557739 1167.511841 1176.046753 1186.512939 1205.386353 1221.865234 1243.142944 1263.629517 1300.0354 1320.749512 1320.511353 1317.241577 1315.50061 1313.738403 1311.723511 1309.446899 1307.534058 1306.505859 1304.292358 1297.888794 1291.892578 1293.536743 1294.824219 1289.495483 1282.223755 1269.657959 1255.209961 1246.166016 1251.063232 1254.872925 1261.961182 1269.949097 1277.289185 1274.056396 1268.319214 1264.553833 1261.435791 1258.528564 1255.102783 1253.477905 1252.4646 1253.190552 1253.895386 1253.094971 1250.933105 1248.086548 1244.572144 1243.852905 1243.730225 1243.460449 1243.058716 1244.544556 1244.984619 1243.85083 1241.734863 1241.347656 1241.597656 1241.180542 1238.892456 1235.223145 1231.434937 1230.664429 1232.485229 1234.833008 1236.849487 1238.341675 1240.165405 1241.712891 1242.755981 1245.079956 1248.115845 1251.007324 1253.348022 1256.145752 1264.528564 1269.938843 1269.828491 1265.304932 1271.537476 1276.385498 1280.387207 1281.799194 1282.062256 1281.913818 1281.040405 1279.699829 1278.666992 1278.112671 1277.975952 1278.065552 1278.165161 1278.390747 1278.69812 1278.972046 1278.97644 1279.011475 1279.03833 1278.67395 1278.666748 1279.481934 1280.862915 1281.936157 1281.355347 1280.039795 1279.074585 1279.341553 1281.383179 1282.418823 1281.697876 1281.859375 1284.434937 1285.660278 1286.533081 1287.114502 1287.210449 1287.054443 1287.227173 1286.717163 1285.804077 1284.403198 1282.226074 1279.331543 1283.149292 1284.823486 1286.006348 1286.88147 1287.327637 1287.254272 1286.2052 1284.618774 1283.207275 1280.965088 1278.471191 1276.213989 1272.259888 1268.025269 1269.459595 1270.39917 1270.217041 1265.041138 1258.814941 1250.111328 1243.793823 1241.652954 1238.431763 1235.382935 1232.598389 1231.587891 1234.898071 1237.975098 1241.325684 1243.331665 1245.435059 1247.763794 1248.693604 1248.343994 1247.130371 1244.952881 1243.731689 1242.99231 1243.033325 1243.426147 1244.282349 1245.358154 1245.861694 1246.08313 1245.831299 1245.389282 1243.68457 1241.02478 1239.838867 1243.76123 1249.025757 1253.715454 1257.303101 1258.258057 1258.389404 1257.994263 1256.800049 1255.533936 1254.508179 1253.369995 1251.893433 1249.938721 1247.385742 1244.251831 1243.701538 1243.358887 1242.712646 1242.226685 1242.112427 1242.349487 1242.044312 1240.585205 1238.364746 1236.200928 1234.488525 1232.965088 1231.754639 1230.425171 1229.081299 1228.338257 1227.694336 1227.357544 1226.890259 1226.464111 1226.031372 1225.855347 1225.387573 1224.745483 1224.008423 1222.995972 1221.79248 1220.140869 1219.556763 1219.288818 1220.687378 1224.478027 1228.016357 1230.287842 1230.412231 1228.89563 1227.783936 1226.808228 1225.873169 1224.661743 1223.004395 1220.990356 1220.161377 1218.275391 1219.064941 1221.734619 1224.966919 1228.055542 1230.203979 1230.755249 1230.936035 1230.900513 1230.785278 1230.251709 1230.019897 1230.388062 1231.009399 1230.724243 1229.852661 1228.418213 1226.775146 1225.121338 1223.88501 1223.915771 1224.088135 1223.861572 1223.273438 1222.264404 1221.303833 1220.684814 1220.206299 1219.535034 1217.358521 1215.275391 1213.451416 1211.949341 1210.71167 1209.433594 1208.479248 1207.068237 1206.248779 1206.094604 1205.875977 1205.651489 1205.523682 1205.288208 1204.610474 1204.259277 1203.45105 1202.80542 1202.204834 1201.787598 1201.345215 1200.809692 1200.394165 1199.738403 1198.887817 1197.644653 1196.579102 1196.515259 1196.478271 1196.320557 1196.144043 1196.029907 1195.835571 1195.523682 1194.779175 1193.722778 1192.740112 1191.794678 1190.993042 1190.338379 1189.5177 1188.917725 1188.192505 1187.495361 1186.931396 1186.598877 1186.549683 1186.462891 1186.469116 1186.119873 1185.778809 1185.30835 1184.799927 1184.033203 1183.036499 1181.240234 1177.617798 1174.270508 1173.184937 1173.181885 1173.265625 1173.246948 1173.381226 1173.427124 1173.527466 1173.577271 1173.634521 1173.787476 1174.019531 1174.316895 1174.571777 1174.917725 1175.169678 1175.513672 1175.988647 1176.475952 1177.236694 1177.973022 1178.76001 1178.968628 1177.83252 1174.643921 1172.80603 1173.200684 1173.561646 1174.085083 1174.618896 1175.144409 1175.650757 1176.176147 1176.633911 1177.008667 1177.287476 1177.275269 1177.109009 1176.94043 1176.80835 1176.794556 1176.791382 1176.85437 1176.970093 1177.011108 1176.891113 1176.78186 1176.839355 1177.185913 1177.772339 1178.15686 1178.661377 1179.033203 1179.31543 1179.429199 1179.196777 1178.936646 1178.487061 1178.035034 1177.609741 1177.366089 1177.243408 1177.339233 1177.317749 1177.385376 1177.467773 1177.582275 1177.529541 1177.280762 1177.033569 1176.807617 1176.667114 1176.283936 1175.7677 1175.182129 1174.519531 1173.952759 1173.491821 1172.824219 1172.253906 1171.675415 1171.087402 1170.074829 1168.987061 1168.271729 1169.037476 1170.361572 1171.019531 1171.376465 1171.837036 1171.911987 1171.787354 1171.741211 1171.702759 1171.558228 1171.052856 1171.048828 1170.987793 1171.004761 1171.111938 1172.35791 1173.218262 1174.084229 1175.947144 1178.081543 1179.898926 1181.309448 1182.640869 1183.600708 1183.605835 1183.502808 1183.255005 1183.521362 1184.238159 1185.71106 1187.272339 1189.58374 1192.270142 1194.7948 1196.738403 1198.347656 1199.9552 1204.526733 1206.477051 1207.720581 1208.453491 1208.920532 1209.912842 1211.546143 1213.336914 1215.238647 1217.214478 1219.584106 1225.20874 1230.573242 1234.604492 1236.930054 1239.591675 1242.606689 1248.730225 1254.330933 1260.110229 1269.077148 1275.687256 1285.800781 1293.638306 1296.447021 1298.832031 1302.048218 1305.505981 1305.989868 1305.7052 1304.849854 1301.961182 1299.902832 1299.863892 1300.76001 1299.949951 1296.823853 1294.026489 1292.327393 1290.979004 1289.838013 1288.511841 1286.184937 1283.789673 1281.469971 1279.220337 1279.466919 1290.245605 1294.342651 1295.440796 1295.817871 1295.708374 1294.952026 1294.209351 1293.80249 1293.670654 1291.728516 1285.617188 1279.246948 1279.244995 1287.93811 1293.142456 1294.624023 1295.452026 1295.329834 1294.68042 1293.512085 1292.565796 1292.205933 1293.123047 1294.487793 1295.064819 1295.027954 1292.675415 1282.142334 1285.535767 1287.67334 1285.507446 1294.359131 1293.553711 1286.907104 1292.748901 1291.379395 1286.78125 1283.651123 1275.492798 1271.520508 1270.91272 1269.251953 1265.523926 1252.507812 1239.692627 1220.292358 1204.957886 1198.488525 1190.060303 1181.624634 1172.55481 1166.417969 1160.2323 1154.640503 1150.435791 1149.723267 1151.116211 1153.258667 1154.905518 1155.474731 1158.606079 1161.160767 1161.200317 1158.554199 1162.808105 1166.887817 1169.595703 1167.862061 1160.592041 1157.355713 1162.323853 1165.819336 1161.206787 1155.900024 1150.258545 1145.460938 1141.260498 1137.737427 1136.369873 1134.320068 1131.348877 1128.63147 1127.151978 1125.788696 1123.484863 1121.460449 1120.133057 1119.493896 1119.592651 1119.9021 1120.194946 1120.681641 1120.953613 1116.865601 1112.553467 -1328.167114 1330.576782 1329.239624 1343.05249 1344.521973 1345.51416 1346.646729 1343.051758 1320.884521 1298.27002 1274.096558 1257.49939 1249.793945 1248.205933 1243.514038 1235.229858 1228.309326 1223.584351 1216.426758 1206.801514 1200.528564 1194.873535 1198.432373 1195.525635 1184.662354 1180.610107 1171.421387 1165.297485 1158.508667 1157.161865 1160.077148 1162.907104 1167.240967 1173.666748 1181.444946 1193.417725 1209.952515 1234.87439 1255.644531 1275.807129 1312.245483 1326.456055 1325.275391 1319.249146 1316.292725 1314.783447 1312.712891 1310.793457 1309.189819 1307.545654 1305.48645 1300.984863 1297.033936 1297.247437 1295.178833 1287.090454 1275.578491 1260.292969 1249.300293 1250.278809 1254.686035 1257.483032 1265.700806 1276.782715 1282.307007 1279.952393 1271.651733 1267.523071 1263.469604 1258.522827 1255.362915 1255.244385 1255.0979 1256.598633 1256.946289 1255.6698 1253.431274 1250.285156 1246.559082 1246.037476 1246.292603 1245.059937 1244.021851 1245.747803 1246.27356 1245.28064 1243.289429 1243.100952 1244.493286 1244.696899 1243.30957 1237.634888 1232.15332 1231.940552 1234.641357 1236.873779 1238.995361 1240.451172 1242.49585 1244.366211 1245.462036 1247.209106 1249.87793 1252.802734 1255.415161 1258.567383 1265.209473 1269.79187 1272.656616 1270.140381 1273.903198 1277.969971 1280.035278 1281.913086 1282.413086 1282.124756 1281.01355 1279.757812 1279.208618 1278.806519 1278.716064 1278.815186 1279.11853 1279.40979 1279.705688 1280.008911 1280.354858 1280.441284 1280.447998 1279.956787 1279.412964 1280.023804 1281.703003 1282.636963 1282.47229 1281.197388 1280.283691 1280.679565 1281.218994 1283.163086 1283.900879 1284.851685 1286.182129 1287.453857 1288.565796 1289.28186 1289.489502 1289.260254 1289.211182 1288.269409 1287.016968 1285.122192 1281.447388 1281.260132 1284.142334 1286.15686 1287.45105 1288.669678 1289.476807 1289.988281 1289.039429 1287.002075 1284.713379 1282.333984 1280.736084 1278.764771 1275.671021 1273.55188 1272.666748 1271.774292 1270.06897 1263.718872 1255.252563 1243.677368 1241.855225 1239.851685 1237.290771 1234.805542 1232.106201 1233.240112 1237.291748 1240.670166 1243.674927 1248.421143 1251.311035 1251.830933 1250.946655 1249.708496 1248.122803 1246.298462 1244.981567 1243.994385 1243.312012 1243.487915 1244.229614 1245.262085 1245.886475 1246.128418 1246.014404 1245.376831 1243.951782 1241.428345 1241.670654 1246.561157 1251.09314 1255.283936 1257.747314 1258.364258 1258.347534 1257.904419 1256.583618 1255.566895 1254.504883 1253.507568 1252.189209 1250.382568 1248.061279 1245.763062 1245.025024 1244.557495 1243.549561 1243.023071 1243.308716 1244.127197 1244.096558 1242.780884 1240.109253 1237.192383 1234.825806 1232.917969 1231.533081 1230.417847 1229.586914 1229.191772 1229.047729 1229.161987 1229.123779 1228.620361 1228.392456 1228.044678 1227.526855 1226.712158 1225.859497 1224.743408 1223.506348 1222.181396 1221.288696 1220.517456 1219.452637 1223.153809 1228.039551 1231.202393 1231.924927 1230.744629 1229.682739 1229.098389 1228.184204 1226.608765 1224.767822 1222.751709 1220.862305 1219.217529 1219.157837 1222.226318 1226.367554 1230.241455 1232.135864 1232.338989 1232.198608 1232.135254 1231.836426 1231.31958 1230.754761 1231.484375 1232.206055 1232.108276 1231.179688 1229.43335 1228.578003 1227.589722 1226.708496 1226.031738 1225.569702 1224.978638 1224.090332 1223.082031 1222.069824 1221.065674 1219.86438 1218.214722 1216.373413 1214.286011 1212.664429 1211.112549 1209.64856 1207.967163 1207.203613 1206.607788 1206.383789 1206.260254 1206.15918 1206.079224 1206.027344 1205.971069 1205.509766 1205.160645 1204.16626 1203.57959 1202.953369 1202.625244 1202.069214 1201.560303 1201.047974 1200.300903 1199.421387 1198.489502 1197.824097 1197.383911 1196.957764 1196.61084 1196.333618 1196.113281 1195.655518 1195.306763 1194.625977 1193.783691 1193.025146 1192.191406 1191.508301 1190.815063 1190.301392 1189.656128 1188.961304 1188.251587 1187.602051 1187.231323 1187.127686 1187.0177 1186.793823 1186.513672 1186.068237 1185.476318 1184.74292 1183.957275 1183.172729 1180.638184 1177.605103 1174.140991 1173.708252 1173.808105 1173.907104 1174.072754 1174.263916 1174.390991 1174.475464 1174.575806 1174.61499 1174.805664 1175.030518 1175.417236 1175.765991 1176.091919 1176.533691 1177.032593 1177.591309 1178.314453 1179.121826 1180.484253 1181.546753 1182.66272 1182.340454 1177.060913 1173.342407 1173.590942 1174.145752 1174.583862 1175.164307 1175.834229 1176.513672 1177.08606 1177.769165 1178.218018 1178.485962 1178.4552 1178.223267 1178.079346 1177.924561 1177.789062 1177.754272 1177.895386 1177.918823 1177.959717 1177.895996 1177.650635 1177.765015 1178.069336 1178.597778 1179.187256 1179.765625 1180.325928 1180.666016 1180.789917 1180.700806 1180.456055 1179.920532 1179.432007 1179.015625 1178.770142 1178.64624 1178.50415 1178.497559 1178.432739 1178.443115 1178.459106 1178.330688 1178.110229 1177.822144 1177.605957 1177.421021 1176.987549 1176.51355 1175.848022 1175.115479 1174.504639 1173.901733 1173.401001 1172.912598 1172.236694 1171.677612 1171.105957 1169.877075 1168.626831 1168.461304 1169.512085 1170.167969 1170.774658 1171.28479 1171.85791 1171.644653 1171.695435 1171.854492 1171.925659 1171.869263 1171.493286 1171.313965 1171.324463 1171.04126 1171.003174 1171.182617 1171.649048 1175.00415 1178.056152 1180.060913 1181.542969 1182.57251 1182.900513 1182.918945 1182.950073 1183.625122 1183.497803 1182.989136 1183.733154 1185.462158 1187.980103 1191.345703 1194.292358 1196.175171 1197.597656 1199.333252 1203.0 1204.729248 1205.89917 1206.347778 1206.959717 1208.574707 1210.521973 1212.46521 1214.473633 1216.702759 1219.393066 1223.412476 1227.846558 1230.627808 1231.39917 1237.637573 1244.804932 1248.122925 1253.260742 1256.97229 1263.661987 1266.944336 1274.562012 1285.266113 1293.459473 1295.339233 1297.845093 1300.595825 1303.788208 1303.852417 1302.292603 1298.716309 1296.333984 1297.39502 1303.720947 1303.911011 1300.347534 1297.628784 1295.746826 1293.744141 1292.506226 1290.917114 1288.759155 1286.598877 1284.04541 1281.481445 1279.802002 1281.436401 1291.036621 1293.931519 1294.588989 1293.458618 1293.208252 1293.123047 1293.231445 1293.553101 1293.727905 1293.538086 1294.223267 1290.900635 1287.340332 1291.860962 1293.224243 1296.406494 1297.647827 1297.252686 1295.725708 1294.551392 1293.902222 1295.100098 1294.799927 1293.450806 1292.939209 1286.715454 1276.264282 1271.265015 1271.947632 1268.701416 1275.062988 1274.03064 1263.457642 1272.806152 1279.777344 1280.446289 1277.242798 1266.664307 1251.003418 1252.453979 1256.850586 1257.827393 1247.724854 1239.676392 1223.376343 1205.872803 1191.374634 1180.873291 1171.689209 1165.768188 1161.279297 1156.427979 1151.982422 1154.638306 1157.999634 1160.3573 1161.293335 1161.753662 1160.346802 1164.807495 1168.662354 1167.066772 1166.570801 1169.554199 1174.792114 1175.788452 1174.841309 1168.478638 1160.21167 1167.555054 1171.542603 1165.109497 1159.382202 1153.113159 1147.922729 1144.138306 1140.183838 1137.3573 1134.487549 1131.741943 1130.203003 1129.896484 1129.981201 1126.250854 1121.921387 1120.645386 1120.135986 1120.069336 1119.956543 1119.652466 1118.687012 1117.125244 1115.023315 1112.865356 -1321.974487 1307.499878 1312.945679 1321.613647 1342.563232 1346.450317 1344.920898 1329.239258 1314.179443 1290.154419 1271.846313 1255.907104 1238.661011 1231.338989 1229.238159 1224.544312 1219.230347 1212.197754 1203.288574 1193.274658 1183.779541 1182.258301 1182.654419 1176.637817 1170.37439 1168.932007 1166.32605 1161.919067 1157.905762 1159.593994 1163.163696 1166.518066 1170.184448 1178.588989 1189.603638 1202.364136 1224.508667 1245.77478 1265.906006 1293.445435 1321.879028 1332.584717 1330.02417 1323.292847 1318.220703 1315.797852 1313.735352 1311.779541 1310.024658 1308.463745 1306.032959 1303.865845 1303.081543 1301.15979 1294.026611 1279.029663 1265.214355 1253.069946 1250.08606 1257.675293 1260.68103 1263.702515 1269.138916 1280.455566 1283.75061 1282.691284 1277.092163 1271.371948 1265.836548 1258.01709 1256.226562 1257.686401 1258.329102 1258.637817 1258.249756 1257.094849 1254.819214 1253.391357 1252.088989 1250.35083 1249.012817 1247.768921 1246.883545 1247.278198 1247.504517 1246.272583 1244.529907 1244.757935 1245.937744 1246.172485 1245.217407 1240.437988 1234.556885 1232.900269 1236.164917 1239.674438 1241.612305 1242.805786 1244.429199 1246.561035 1247.987671 1249.893555 1251.858765 1254.210815 1257.518433 1262.99585 1268.992432 1273.589111 1277.44165 1276.727417 1279.552368 1280.887817 1281.14624 1282.349731 1282.929688 1282.534546 1280.897705 1280.12146 1279.861328 1279.671143 1279.673218 1279.535278 1279.74585 1280.431396 1280.760254 1281.181396 1281.637085 1281.97583 1281.93689 1281.095581 1280.11438 1280.415039 1281.994019 1283.239624 1283.364014 1282.498901 1281.721802 1282.111206 1282.131226 1284.533325 1285.866455 1287.081421 1288.368896 1289.334106 1290.625244 1291.469727 1291.651733 1291.373169 1291.099731 1289.809937 1288.417603 1286.561157 1283.618408 1283.728516 1285.731079 1287.498169 1288.954712 1290.254517 1291.397949 1292.733276 1291.998901 1289.181763 1286.557251 1284.368164 1282.668701 1281.263794 1279.119019 1276.645996 1274.231323 1271.776733 1268.025879 1256.777954 1245.414795 1242.33252 1240.122192 1237.993652 1235.908203 1233.598633 1233.0 1235.75354 1239.308105 1242.633423 1249.644653 1257.293823 1257.023438 1255.341431 1253.16626 1251.163574 1249.609497 1247.900757 1246.30603 1244.535767 1243.571533 1243.847168 1244.444702 1245.25293 1245.948975 1246.244629 1246.086914 1245.093628 1242.891479 1241.509277 1244.73645 1249.109253 1253.911743 1257.285645 1258.314575 1258.622925 1258.469238 1258.044312 1257.122681 1256.358276 1255.340332 1254.126343 1252.792847 1251.131104 1249.19519 1247.403076 1246.278198 1245.524292 1244.754761 1244.083618 1244.508911 1245.06897 1244.842896 1244.291382 1241.602661 1238.100708 1235.351196 1233.237915 1231.778809 1230.508301 1230.218262 1230.126709 1230.451294 1230.765503 1231.091309 1230.708374 1230.471802 1229.928467 1229.655029 1229.124023 1228.067627 1226.630493 1225.44043 1224.22522 1223.014038 1222.219849 1221.675781 1223.557861 1227.519287 1232.187622 1232.519775 1232.375488 1231.802979 1231.790649 1230.436157 1228.801147 1226.614624 1224.296753 1222.108276 1219.744385 1219.69519 1223.489624 1227.7229 1231.645874 1232.827637 1233.138306 1233.097412 1232.984619 1232.728271 1232.169556 1231.392944 1232.145386 1232.762207 1232.745239 1232.144165 1230.853882 1230.336914 1229.828003 1228.77832 1227.983643 1227.09668 1226.0448 1224.820923 1223.6698 1222.303467 1220.854004 1219.152466 1216.708008 1214.997437 1213.061523 1211.398071 1209.70813 1207.895874 1207.065918 1206.831665 1206.796387 1206.932739 1207.020996 1206.811035 1206.621826 1206.616821 1206.738525 1206.735596 1206.046753 1204.938477 1204.266724 1203.774292 1203.331299 1202.884033 1202.237671 1201.5625 1200.837524 1199.987305 1199.174316 1198.531494 1198.014404 1197.373291 1196.766724 1196.092651 1195.475342 1195.240234 1194.712891 1194.39563 1193.841064 1193.327026 1192.641479 1192.056274 1191.458496 1190.917114 1190.302246 1189.53064 1188.766846 1188.173584 1187.719604 1187.617188 1187.437744 1187.145996 1186.704956 1186.148071 1185.514648 1184.562988 1183.552124 1182.796997 1183.239136 1178.407593 1174.279541 1174.249146 1174.335815 1174.60144 1174.884033 1175.065308 1175.239746 1175.41333 1175.540283 1175.579956 1175.792969 1176.05835 1176.5177 1177.019409 1177.439331 1177.936646 1178.515137 1179.156128 1179.832642 1180.946533 1182.239502 1183.358887 1184.052612 1184.06543 1180.84082 1174.447144 1174.072632 1174.620361 1175.169678 1175.830811 1176.497437 1177.366821 1178.219971 1178.938232 1179.405884 1179.700562 1179.700195 1179.4729 1179.286621 1179.019165 1178.822388 1178.774658 1178.862427 1178.856689 1178.814941 1178.756958 1178.47937 1178.550537 1178.845703 1179.258301 1180.036743 1180.759399 1181.456543 1182.069824 1182.059814 1182.151733 1181.865723 1181.273193 1180.687988 1180.099976 1179.804321 1179.713623 1179.696899 1179.621338 1179.569336 1179.402954 1179.353882 1179.150391 1178.952881 1178.63147 1178.476562 1178.204224 1177.758057 1177.207153 1176.436401 1175.765869 1175.100464 1174.577026 1174.023926 1173.472046 1172.800781 1172.200928 1171.592407 1170.880371 1169.580933 1168.587524 1168.872192 1169.272705 1169.49707 1169.702759 1170.469727 1170.984863 1171.458252 1171.944336 1172.075928 1172.245239 1172.42395 1172.44104 1172.47998 1172.436768 1171.967285 1171.180542 1171.622192 1175.563721 1179.057617 1181.703735 1183.289917 1184.067749 1185.098877 1185.896606 1187.040771 1190.141113 1189.651367 1186.509033 1183.081665 1183.547119 1186.107666 1189.75293 1193.341675 1195.723755 1197.16687 1198.631958 1201.574219 1203.027222 1204.310791 1205.134521 1206.236328 1207.960083 1210.068848 1211.753418 1213.662231 1216.195435 1218.990479 1222.38269 1225.677246 1228.008057 1231.341919 1237.421143 1243.970215 1247.601929 1254.163086 1258.463013 1261.050903 1261.980957 1265.700562 1275.02063 1283.322388 1288.516846 1291.438843 1293.307495 1291.867432 1290.276489 1292.818115 1292.467285 1286.348389 1290.558594 1299.614014 1303.921387 1301.441406 1301.388062 1300.588501 1298.312134 1296.152954 1293.614624 1291.764648 1289.630371 1287.457764 1284.645508 1281.59375 1279.421387 1282.344971 1287.035767 1290.057129 1291.272461 1291.660278 1291.911743 1292.39917 1293.146484 1293.643311 1293.884399 1294.312012 1294.99353 1294.815063 1293.35498 1292.708252 1297.882324 1299.959229 1299.800293 1298.569092 1297.750244 1297.438354 1296.661621 1295.671631 1291.193237 1281.60498 1277.385132 1268.677734 1260.154419 1258.792969 1253.964111 1262.901489 1260.773682 1247.727539 1252.825073 1257.963135 1271.424805 1265.006958 1254.840576 1238.798218 1233.054565 1240.935425 1244.489258 1233.758179 1230.076172 1219.537354 1205.066162 1191.832642 1179.030518 1172.177368 1161.978149 1157.340576 1154.275146 1157.002197 1162.061401 1165.2854 1168.165405 1169.909058 1168.592407 1167.41687 1171.086914 1175.027344 1172.806152 1169.721069 1174.406006 1180.671143 1184.211426 1180.829712 1173.530762 1168.640747 1173.224609 1173.838867 1167.25061 1160.294678 1154.601929 1149.655151 1145.330566 1140.763306 1137.017944 1133.788574 1132.047241 1131.558838 1132.767212 1135.061157 1133.591919 1123.608521 1121.349609 1120.745605 1120.72644 1120.908691 1119.964722 1118.191406 1116.231689 1113.887451 1112.060913 -1322.315796 1306.258667 1291.850952 1296.424683 1309.713135 1320.642944 1324.224243 1319.611572 1305.678711 1286.857544 1269.736328 1255.096558 1237.435913 1221.709351 1217.060669 1213.252197 1207.487305 1198.890503 1192.653931 1185.629761 1177.412598 1171.230469 1170.207397 1169.477295 1167.891724 1165.793335 1163.565186 1160.568726 1157.773193 1161.745728 1166.185425 1170.125122 1174.943848 1182.525757 1195.058472 1208.865967 1233.860474 1251.76001 1274.426636 1304.449219 1332.863159 1334.87207 1332.316162 1326.951904 1320.185303 1316.134033 1313.784546 1311.572021 1309.882935 1308.794678 1307.803101 1306.815796 1306.597168 1305.403931 1292.342529 1275.807251 1260.204956 1250.906128 1257.904175 1263.04834 1267.873901 1270.526367 1274.747314 1281.381958 1284.487793 1283.157227 1278.843384 1272.884521 1268.082886 1262.717041 1260.697632 1261.320312 1260.879395 1259.864136 1258.667603 1256.897705 1255.39917 1256.110474 1256.077393 1254.374146 1252.462769 1251.232178 1250.230713 1249.731201 1249.09436 1248.250977 1247.373169 1247.196167 1247.544922 1247.25769 1245.985352 1242.791382 1235.575684 1234.758301 1238.536133 1242.411133 1244.671631 1245.31311 1247.270752 1248.971313 1250.462646 1252.224731 1253.941162 1256.18042 1260.192627 1265.801392 1271.472534 1277.813477 1281.383667 1281.06543 1281.235596 1282.287476 1283.009155 1283.69812 1283.912476 1283.535767 1282.122192 1281.183105 1280.871094 1281.024048 1280.818359 1280.242188 1280.106323 1281.239136 1281.981079 1282.494995 1282.989136 1283.215698 1282.901489 1281.938354 1280.542358 1280.612671 1282.346802 1283.957275 1284.718018 1284.837646 1284.883667 1285.077759 1285.698608 1286.693848 1287.65564 1288.956787 1290.469727 1291.666504 1292.553467 1293.330811 1293.552612 1293.389282 1293.016113 1291.127075 1289.694946 1288.752563 1287.966675 1287.703735 1288.221802 1289.122681 1290.227661 1291.380859 1292.871216 1293.978516 1293.150391 1290.583252 1288.240601 1286.209106 1284.576782 1283.01709 1280.513672 1277.278442 1273.199341 1268.458862 1258.24585 1248.131226 1242.900391 1240.908081 1238.846924 1236.78186 1234.860474 1233.144653 1235.074097 1237.948975 1241.931396 1247.003906 1257.692017 1258.502319 1258.303589 1256.72998 1254.773682 1252.889771 1251.373291 1249.556763 1247.62439 1245.626709 1244.301514 1243.968628 1244.423462 1245.404907 1246.13269 1246.374878 1246.176147 1245.036499 1242.669922 1243.418335 1245.954956 1250.775024 1255.062744 1257.753052 1258.471313 1258.824707 1258.868774 1258.417603 1257.702515 1256.992065 1256.078491 1255.074097 1253.550415 1251.909546 1250.262451 1248.684326 1247.380737 1246.665649 1246.150879 1245.911377 1245.730469 1245.432129 1245.156494 1244.469849 1242.153564 1238.596802 1235.805176 1233.925659 1232.322632 1230.952393 1230.645386 1231.263428 1231.789307 1232.226074 1232.773315 1232.984131 1232.119507 1231.45105 1231.427002 1231.453979 1230.183105 1228.538452 1227.368652 1226.110352 1225.067017 1224.529053 1224.480469 1225.862183 1227.626099 1230.944214 1232.520264 1232.837646 1232.981689 1232.918091 1232.391113 1231.104004 1228.738281 1226.340332 1223.470703 1220.450562 1219.950317 1224.310791 1227.992432 1231.161621 1233.077393 1233.617065 1233.887817 1233.807617 1233.482544 1232.870605 1232.205322 1232.762695 1233.265625 1233.158569 1232.600952 1231.572876 1231.56189 1231.812866 1230.712036 1229.685669 1228.565674 1227.062134 1225.483276 1223.944702 1222.299194 1220.523193 1218.391602 1215.358154 1213.175659 1211.505859 1209.707886 1207.993896 1207.547241 1207.190918 1207.488892 1207.753296 1208.072266 1208.180542 1207.509644 1207.169678 1207.105469 1207.307251 1207.339844 1206.735107 1205.704834 1205.069336 1204.58374 1204.168823 1203.628052 1202.976074 1202.129883 1201.368164 1200.594971 1199.854492 1199.311035 1198.577515 1197.671387 1196.243896 1195.25061 1195.071045 1195.007446 1194.82019 1194.582397 1194.16626 1193.714844 1193.184937 1192.619873 1192.15625 1191.595459 1190.905518 1190.122559 1189.288818 1188.667603 1188.136597 1187.999512 1187.677368 1187.341797 1186.806152 1186.226074 1185.484863 1184.724487 1183.974487 1183.582642 1183.395264 1179.197266 1174.930786 1174.676514 1174.868896 1175.189819 1175.489868 1175.824219 1176.110107 1176.271362 1176.44458 1176.516113 1176.752075 1177.165771 1177.578979 1178.13916 1178.594849 1179.209595 1179.819824 1180.412598 1180.965454 1181.699341 1183.072266 1184.163086 1184.560791 1184.30835 1180.864746 1174.371826 1174.965698 1175.480469 1175.695557 1176.383179 1177.268677 1178.218872 1179.193359 1180.098389 1180.692017 1181.112183 1181.00354 1180.737549 1180.384155 1180.008179 1179.82251 1179.861328 1179.792969 1179.720215 1179.602539 1179.471558 1179.239014 1179.312256 1179.503296 1179.999756 1180.662231 1181.523438 1182.432739 1183.043335 1183.246216 1183.155396 1182.706787 1182.18689 1181.548096 1180.984863 1180.608276 1180.488525 1180.626099 1180.598022 1180.557983 1180.483887 1180.261963 1180.087524 1179.842163 1179.511963 1179.285767 1178.919922 1178.430908 1177.837769 1177.157837 1176.466675 1175.751709 1175.219238 1174.709595 1174.064209 1173.418945 1172.756836 1172.110229 1171.415283 1170.772705 1169.446167 1168.610474 1168.60498 1168.787476 1168.97522 1168.970093 1169.80249 1171.115601 1171.778076 1172.15564 1172.300171 1172.563477 1172.822144 1173.090088 1173.283447 1173.342041 1173.437256 1174.414185 1177.082642 1180.208496 1182.834473 1184.465454 1185.93042 1187.382812 1189.265625 1192.162476 1195.890259 1196.296875 1192.438721 1188.393066 1183.086914 1183.783447 1188.03186 1191.965576 1194.71582 1196.412476 1197.659302 1200.176392 1201.619141 1202.969482 1204.182739 1205.715088 1207.327759 1209.244873 1210.774658 1212.723633 1215.096924 1218.050415 1221.001953 1224.012817 1226.737427 1230.503662 1234.494263 1240.010864 1244.597778 1250.610718 1256.54895 1258.365967 1255.687866 1258.506592 1266.889526 1273.715698 1277.206665 1279.440674 1283.262329 1283.290405 1279.152832 1277.400024 1277.517334 1274.354614 1281.947632 1292.729248 1296.121948 1298.243042 1303.09082 1305.455566 1303.260376 1299.476196 1296.218872 1294.277222 1292.697754 1290.881836 1288.923462 1286.416016 1283.556519 1280.968628 1282.762451 1288.394043 1290.555786 1291.513672 1291.849976 1292.164429 1292.794678 1293.070435 1293.522949 1294.203491 1295.445801 1296.981689 1298.178833 1299.413696 1301.170166 1302.736816 1302.637695 1301.809082 1300.827881 1299.720581 1298.219238 1296.452881 1293.639526 1284.846802 1274.6875 1258.422119 1249.911743 1242.268799 1238.626221 1243.502563 1242.522705 1229.743774 1233.595947 1245.939575 1260.14917 1253.2146 1244.059204 1228.218262 1216.056885 1219.205688 1225.636597 1214.863403 1207.210449 1202.770264 1194.919189 1182.443848 1174.970703 1166.803833 1157.79126 1155.7229 1158.712524 1165.588623 1169.696411 1172.730835 1175.473511 1176.227905 1173.706909 1171.28894 1176.924194 1182.328491 1181.722046 1179.141113 1181.109009 1187.289429 1190.597168 1187.049438 1180.9646 1179.621704 1180.416748 1173.694458 1166.986328 1159.122559 1154.501099 1148.411133 1144.822144 1141.537964 1137.281494 1134.144409 1132.616821 1132.527344 1134.078247 1135.80127 1136.220947 1132.395508 1121.918945 1121.643188 1121.562256 1122.224854 1121.214233 1118.694702 1116.210205 1113.473877 1110.590332 -1331.65564 1314.984619 1289.332397 1278.762939 1287.994995 1293.844604 1296.047607 1296.706421 1293.247681 1279.429321 1264.397339 1249.764404 1235.068848 1220.718384 1208.869629 1201.199829 1193.767822 1190.429321 1185.50708 1180.491943 1174.232788 1169.939819 1168.471313 1167.109375 1165.561157 1163.747803 1161.644531 1159.434082 1158.796631 1164.402588 1169.47644 1174.835815 1180.001465 1187.085815 1200.603271 1214.393799 1240.457397 1258.504639 1282.167969 1314.123657 1339.635986 1338.74292 1332.439331 1326.412842 1318.660645 1315.812378 1311.672119 1309.409668 1308.576172 1307.876953 1307.564453 1307.523071 1307.450195 1299.359009 1286.58313 1275.014893 1258.446655 1254.549561 1262.94751 1268.804077 1273.544434 1276.766235 1279.122314 1283.527466 1287.286743 1284.937866 1279.506104 1274.713745 1269.342529 1266.757202 1265.76709 1264.937012 1263.09436 1260.518799 1257.844971 1256.06958 1256.197876 1257.618652 1258.380249 1256.880127 1254.987549 1254.102051 1252.909302 1252.020874 1251.270142 1250.806152 1250.117188 1249.692871 1249.410278 1248.514648 1246.95459 1244.755371 1241.102173 1235.688599 1240.800659 1244.852173 1246.735352 1247.867432 1250.128296 1252.029297 1253.294434 1254.518188 1255.657104 1259.112183 1264.392334 1270.137085 1276.925171 1281.568237 1282.708252 1283.155029 1283.275635 1283.827759 1284.654053 1285.107422 1285.30957 1284.960938 1284.154419 1283.119019 1282.786499 1282.619263 1282.16394 1280.96167 1280.302368 1281.19458 1282.581177 1283.388306 1284.01416 1284.208252 1283.872437 1282.835571 1281.226807 1281.848511 1283.839722 1285.545776 1286.78479 1287.426147 1287.812988 1288.124146 1288.576416 1288.87793 1289.342407 1290.373291 1292.089478 1293.398071 1294.212158 1294.907593 1295.112305 1294.950928 1294.766846 1292.357788 1291.111084 1290.972534 1290.520142 1290.129639 1290.466553 1290.788452 1291.577148 1292.802002 1294.34021 1294.469971 1293.338013 1290.817627 1289.039307 1287.165283 1285.421021 1283.773315 1281.57959 1273.338501 1266.643555 1257.678101 1249.497437 1243.599854 1241.555542 1239.862793 1237.999023 1236.128906 1234.576172 1234.175293 1236.91748 1240.470459 1244.542725 1252.475952 1258.386475 1259.615601 1259.447632 1258.439087 1256.579956 1254.491577 1253.101318 1251.321533 1249.235718 1247.38562 1245.464233 1244.005005 1244.60083 1245.829956 1246.653564 1246.774048 1246.354736 1245.438721 1243.338623 1244.73291 1246.928223 1253.474854 1256.270508 1257.898071 1258.837891 1259.260986 1259.300415 1259.081055 1258.43042 1257.666016 1256.695435 1255.685181 1254.244629 1252.828125 1251.062988 1249.426025 1248.117432 1247.022583 1246.335449 1246.039307 1245.757568 1245.459473 1244.987427 1244.046265 1241.27771 1238.455811 1235.739014 1233.852661 1232.124756 1231.209106 1231.121582 1232.234619 1233.486084 1233.851807 1234.60376 1234.792358 1233.875732 1233.35437 1233.727417 1233.437866 1231.891724 1230.06958 1229.067505 1228.082886 1227.191284 1226.573242 1226.45105 1227.031494 1228.161743 1229.800171 1232.193481 1233.067627 1233.332764 1233.575562 1233.450195 1232.528198 1231.16687 1228.601929 1225.674805 1222.224854 1220.689941 1225.93689 1229.653931 1231.667236 1233.596558 1234.373657 1234.677612 1234.648071 1234.312378 1234.05127 1233.932861 1234.028687 1233.98584 1233.706665 1232.937256 1232.107056 1232.390381 1232.42041 1232.493164 1231.259033 1229.74707 1227.950806 1225.862427 1223.983032 1222.258057 1220.337402 1217.213135 1212.939087 1210.930908 1209.571899 1208.015137 1207.589111 1207.764648 1207.713135 1208.310303 1208.956787 1209.189819 1208.930542 1208.109375 1207.701294 1207.501099 1208.056763 1207.980713 1207.29248 1206.27771 1205.826172 1205.459595 1205.040894 1204.450073 1203.597534 1202.790527 1201.967651 1201.158203 1200.53894 1199.890381 1199.034302 1198.04126 1196.435303 1195.497437 1195.50415 1195.489258 1195.464722 1195.277466 1194.98645 1194.549072 1194.0 1193.452271 1192.843994 1192.166992 1191.430664 1190.620605 1189.732666 1189.084351 1188.587769 1188.28186 1187.908447 1187.432373 1186.908569 1186.174561 1185.463867 1184.680054 1184.084839 1183.302612 1181.869995 1178.537354 1175.690186 1175.124023 1175.55249 1175.735962 1176.099731 1176.481079 1176.872925 1177.05835 1177.27124 1177.42688 1177.764526 1178.158081 1178.711792 1179.159546 1179.651855 1180.302368 1181.026123 1181.617065 1182.091187 1182.435913 1183.115723 1184.657349 1185.033203 1184.66687 1182.199829 1175.309082 1175.740845 1176.105103 1176.344482 1177.06604 1177.964233 1179.094116 1180.116211 1181.230225 1182.143066 1182.5 1182.228027 1181.812744 1181.2771 1180.952271 1180.904297 1180.719116 1180.621338 1180.454224 1180.324219 1180.143311 1179.969238 1179.936646 1180.088623 1180.499146 1181.274658 1182.062012 1182.953613 1183.473267 1183.784668 1183.802368 1183.380615 1182.813477 1182.276245 1181.610229 1181.299316 1181.311279 1181.433105 1181.457764 1181.461792 1181.307983 1181.191528 1181.027832 1180.71936 1180.386108 1180.113647 1179.677246 1179.16748 1178.5271 1177.758057 1177.083496 1176.507202 1175.957153 1175.359131 1174.73645 1174.023315 1173.409912 1172.708252 1171.996216 1171.343872 1170.480835 1169.586304 1169.273804 1169.550537 1169.645264 1169.231201 1169.473755 1170.57605 1171.317017 1171.654907 1171.991455 1172.435059 1172.868164 1173.421631 1173.674438 1174.06604 1174.90625 1176.063354 1178.059082 1180.461182 1182.594116 1184.447266 1186.719604 1188.884155 1191.210327 1193.624512 1196.185791 1197.827393 1197.191162 1196.213501 1193.108154 1184.956055 1188.925415 1192.127686 1193.894897 1195.287109 1196.363159 1198.930176 1200.393066 1201.813965 1203.224243 1204.766724 1206.389038 1207.895752 1209.692383 1211.482422 1213.858643 1216.982422 1220.116821 1222.599609 1224.554321 1227.45166 1230.709595 1236.305664 1240.648071 1244.993408 1251.321411 1254.116699 1252.79834 1254.744385 1260.047485 1265.314697 1265.61792 1266.868652 1270.753052 1268.664062 1265.236572 1266.277344 1264.715942 1265.368652 1272.868408 1279.717773 1283.220459 1289.792603 1297.432251 1302.877319 1305.06958 1299.88855 1296.878906 1295.478027 1294.668457 1294.02417 1293.247192 1292.358154 1291.113159 1290.209595 1289.281128 1290.122925 1291.120972 1291.833618 1292.209229 1292.469482 1292.707275 1292.865601 1292.903198 1293.406982 1295.582642 1298.337524 1301.933716 1304.131836 1305.315308 1305.722534 1305.385986 1304.584717 1303.14502 1301.536499 1299.72168 1297.582764 1295.608154 1293.518433 1286.546265 1276.106201 1259.153809 1243.526123 1231.333984 1229.004639 1227.687134 1223.648926 1220.119507 1235.986206 1249.625488 1242.74353 1230.476685 1220.552734 1206.880371 1200.147461 1208.023682 1203.799927 1193.111328 1186.258423 1179.963867 1175.170288 1168.499756 1158.664551 1157.223022 1163.099854 1170.32959 1174.68042 1177.585571 1180.726685 1183.896606 1182.428101 1180.310425 1180.459229 1185.957275 1194.547363 1193.463135 1187.681763 1191.715576 1198.36731 1199.171021 1194.358643 1189.880127 1187.480469 1184.493286 1176.315063 1167.407837 1158.014771 1155.063965 1148.916992 1146.684937 1143.812744 1138.047485 1134.253052 1133.255737 1133.543945 1133.980713 1135.866821 1138.932251 1137.268066 1130.741455 1123.073364 1121.840698 1122.672485 1121.97998 1119.583374 1117.078247 1114.195923 1111.258911 -1327.319458 1308.56958 1292.599854 1273.46106 1265.689087 1273.023926 1274.415771 1273.514038 1268.812256 1260.550537 1252.524414 1241.828125 1229.948608 1217.089844 1204.78186 1197.427124 1190.902344 1184.8302 1180.177734 1174.932495 1170.876831 1168.850708 1167.101807 1165.37146 1163.965942 1162.562378 1160.787231 1158.653442 1161.480957 1168.029419 1174.306763 1181.866943 1189.091675 1199.813843 1209.804565 1224.669434 1244.343628 1264.57605 1288.849854 1327.553101 1345.699219 1341.296631 1332.570312 1326.480835 1320.245605 1314.877197 1307.240723 1304.667603 1305.78833 1306.259399 1306.145142 1304.274658 1295.718628 1289.640381 1283.841309 1272.970215 1255.19043 1259.069214 1268.554688 1274.517578 1279.784668 1282.385864 1283.91687 1288.170654 1292.509644 1288.724121 1282.418457 1277.492065 1270.264893 1270.266968 1269.973267 1267.751099 1264.374023 1260.022339 1256.474121 1256.211792 1257.665771 1259.501099 1259.784424 1258.568237 1257.005005 1256.60498 1255.021118 1253.686035 1253.427124 1253.404541 1252.815308 1252.269531 1251.25415 1249.867188 1248.332031 1246.845947 1245.1521 1236.155762 1242.063232 1245.348267 1248.083984 1250.586548 1253.611084 1255.410522 1256.599243 1257.494629 1258.856567 1262.344604 1267.123169 1273.802979 1280.398926 1282.741577 1283.469604 1284.139526 1284.624268 1285.330566 1286.157471 1286.739746 1287.036377 1286.698364 1286.194092 1285.287964 1284.710083 1284.328369 1283.446777 1282.18335 1280.612793 1281.120728 1283.048706 1284.38623 1285.195312 1285.422485 1285.322144 1284.811279 1284.326538 1285.014038 1286.404663 1287.628662 1289.041016 1290.042114 1290.375 1290.891479 1290.943237 1290.937012 1290.705933 1291.283813 1292.76416 1294.691528 1295.651733 1296.251221 1296.480347 1296.332886 1296.092773 1293.576172 1292.318604 1292.487915 1292.567505 1291.858398 1291.621094 1292.605347 1293.857178 1294.843628 1295.418213 1294.938965 1293.008423 1290.750854 1289.407104 1287.678711 1285.283691 1282.773193 1278.024414 1266.907959 1255.61731 1249.510864 1243.827881 1242.124268 1240.426636 1238.99353 1237.386841 1235.777832 1234.312378 1235.76123 1238.808228 1242.760742 1248.899536 1256.303223 1259.803589 1261.36853 1261.300171 1260.151001 1257.82251 1256.037354 1255.073364 1253.354614 1251.316528 1249.203857 1247.004517 1244.794678 1244.9375 1246.967407 1247.475342 1247.342407 1246.68396 1245.438232 1243.794312 1247.330444 1253.026001 1256.991089 1257.822754 1258.453613 1259.148804 1259.69873 1259.939331 1259.726562 1259.235352 1258.493652 1257.652344 1256.63623 1255.235474 1253.494751 1251.663696 1249.754639 1247.924316 1246.766357 1245.985352 1245.652588 1245.153687 1244.623169 1243.952881 1241.977783 1240.198242 1238.097534 1235.513428 1233.089844 1231.84082 1231.733398 1231.974731 1234.046997 1235.401123 1236.420898 1237.189941 1237.388306 1236.725952 1236.066406 1235.595337 1234.81958 1233.026733 1231.156982 1231.143433 1230.446045 1229.196045 1228.407593 1228.064575 1228.158203 1228.792603 1229.620972 1230.91748 1232.554688 1233.506348 1233.879272 1234.011475 1233.621582 1232.599243 1231.100464 1228.495972 1226.764648 1227.03064 1229.254639 1232.218262 1233.297485 1234.686035 1235.290771 1235.541016 1235.509766 1235.350342 1235.355835 1235.260742 1235.076538 1234.839844 1234.309937 1233.714111 1233.298218 1233.11084 1233.208496 1233.035278 1232.26001 1230.591797 1228.147339 1225.543091 1223.495361 1221.771484 1218.995605 1214.477661 1209.589478 1207.688599 1207.585205 1207.592041 1208.163696 1208.946899 1209.1073 1209.603516 1209.973511 1210.094116 1209.765869 1209.301392 1208.93396 1208.760376 1208.501831 1208.202393 1207.680664 1206.818115 1206.597656 1206.45813 1206.121826 1205.359253 1204.360596 1203.421143 1202.578979 1201.848999 1201.261353 1200.432373 1199.595581 1198.488647 1197.5448 1196.857056 1196.716431 1196.495239 1196.309814 1195.90332 1195.68103 1195.390869 1194.86853 1194.182495 1193.557617 1192.792725 1192.028076 1191.15918 1190.242065 1189.506714 1188.910767 1188.438843 1187.985718 1187.427979 1186.783081 1186.056274 1185.258179 1184.482056 1183.77063 1182.888184 1180.334106 1177.935913 1176.056519 1175.744263 1176.050537 1176.410767 1176.727295 1177.086792 1177.608765 1177.862183 1178.106323 1178.344849 1178.797119 1179.30127 1179.807007 1180.268066 1180.585571 1181.10791 1181.971191 1182.825073 1183.656616 1183.860229 1184.224487 1185.643066 1185.983765 1185.548218 1184.605713 1183.634644 1178.775146 1176.952881 1177.131714 1177.721436 1178.663208 1179.824951 1180.997559 1181.982544 1182.919556 1183.369019 1183.130371 1182.689087 1182.189819 1181.959473 1181.718018 1181.530884 1181.394775 1181.176636 1180.958374 1180.741333 1180.588257 1180.446411 1180.589478 1180.917725 1181.533813 1182.15564 1183.03125 1183.809082 1184.1521 1184.267944 1184.072632 1183.463989 1182.876831 1182.214111 1182.076172 1182.038086 1182.189575 1182.209229 1182.16626 1182.113159 1182.107178 1181.965332 1181.63269 1181.181885 1180.858154 1180.357056 1179.787598 1179.240356 1178.442261 1177.77063 1177.137573 1176.619263 1176.026123 1175.328735 1174.611816 1173.882812 1173.174072 1172.466919 1171.784058 1171.086792 1170.419067 1170.046875 1170.47998 1170.879395 1170.845093 1170.572144 1170.123657 1169.474609 1169.731812 1170.61377 1171.198853 1171.950928 1173.068481 1173.822632 1174.576416 1175.520142 1176.833008 1178.563599 1180.342407 1181.855469 1183.661987 1186.703491 1189.61377 1192.133545 1194.288574 1196.739014 1199.010742 1199.956055 1199.413818 1197.641113 1195.60022 1193.467651 1193.458252 1193.903442 1194.507324 1195.103882 1197.784668 1199.342407 1200.763062 1202.050781 1203.613525 1205.010254 1206.437378 1208.13562 1209.962524 1211.806763 1214.804443 1218.380859 1220.423706 1221.621216 1223.559082 1229.239502 1233.027588 1236.928589 1241.35083 1245.602539 1247.831665 1247.591675 1250.141479 1254.38208 1255.48291 1253.754639 1254.363281 1256.7146 1257.396851 1259.397339 1256.231689 1254.556519 1258.752563 1264.283936 1266.578979 1269.283447 1278.858398 1289.658569 1294.373291 1295.77063 1296.22583 1295.779297 1295.396729 1294.980225 1294.580444 1294.618896 1294.733765 1294.372925 1293.814453 1293.356689 1293.334595 1292.70105 1292.369507 1292.769531 1292.807251 1292.851318 1292.848145 1292.856079 1292.876099 1294.082031 1298.310059 1302.905518 1306.260254 1306.328369 1305.921997 1306.046997 1305.835815 1304.686523 1302.473999 1300.865967 1299.051147 1297.391357 1295.654175 1293.33728 1282.832397 1266.120239 1251.133423 1236.400391 1227.55542 1220.76416 1216.195435 1211.916626 1217.648193 1237.276245 1231.335693 1223.235474 1209.348999 1193.208862 1191.510864 1192.048828 1190.185181 1186.326172 1182.322266 1170.843262 1165.46936 1160.931152 1162.187378 1167.411743 1172.479492 1177.581055 1182.238892 1185.897705 1189.27124 1190.390015 1188.991455 1186.82666 1185.557007 1194.723145 1200.985352 1202.517212 1202.195435 1207.373291 1210.060181 1204.298584 1199.60437 1196.180664 1185.873535 1182.652344 1185.003906 1175.747803 1166.551758 1157.938965 1153.116211 1149.652222 1146.253052 1138.348511 1133.771484 1134.192749 1135.791748 1135.944214 1137.258423 1143.471802 1145.310791 1138.712891 1131.352417 1126.077759 1125.069946 1122.740112 1120.638184 1118.246948 1115.629883 1113.509155 -1327.34082 1304.28186 1286.866455 1274.887085 1263.218262 1254.723389 1257.686523 1255.068726 1249.932861 1245.018433 1240.770996 1233.923706 1222.95459 1210.733643 1201.942749 1195.681641 1190.152222 1185.390259 1177.762085 1170.295532 1169.03833 1167.111938 1165.312134 1163.7948 1162.596191 1161.404297 1160.136108 1160.216431 1167.058105 1173.500732 1181.415894 1188.901855 1197.962769 1207.496826 1217.815308 1240.70874 1255.443848 1273.171021 1296.203979 1337.08728 1346.352783 1343.024902 1335.758667 1329.110352 1321.78772 1316.372925 1309.934692 1305.719849 1302.781616 1304.060547 1301.866333 1292.352539 1287.788696 1283.504395 1279.140503 1265.806641 1254.893311 1263.552979 1272.598511 1279.703857 1283.029907 1285.407593 1288.088501 1291.854492 1294.315063 1292.131104 1284.571777 1278.802124 1277.498169 1275.372192 1273.20166 1270.210815 1263.80835 1256.654663 1255.914551 1262.733398 1263.047119 1262.10437 1261.560425 1260.916382 1259.524292 1258.523315 1256.514038 1254.984009 1254.967651 1255.77356 1255.715576 1254.613281 1252.947021 1251.27478 1249.549438 1247.497925 1245.18689 1237.418823 1242.13623 1245.520142 1248.448975 1253.316895 1256.625 1257.956909 1259.562988 1261.094849 1262.626587 1265.057129 1268.227295 1275.216675 1280.599854 1282.676147 1283.710449 1284.53772 1285.348999 1286.402588 1287.502808 1288.589233 1288.957397 1288.695435 1288.094482 1287.345215 1286.643799 1286.015259 1285.042603 1283.735107 1282.523804 1283.117554 1284.563232 1285.80896 1286.735596 1287.432007 1287.512573 1287.339355 1287.281738 1287.977173 1289.01123 1289.79126 1291.068359 1292.38501 1292.92334 1293.140625 1293.057495 1292.373169 1292.218994 1292.023315 1293.248169 1295.505127 1296.723511 1297.392456 1297.659912 1297.692871 1297.411377 1295.051147 1293.955688 1294.768433 1294.803101 1293.667847 1292.695557 1294.432617 1296.427002 1297.179932 1296.692505 1295.521973 1292.845459 1291.298218 1290.844604 1288.231079 1284.008911 1279.674683 1270.552246 1258.337402 1250.432007 1244.164673 1242.472656 1240.80249 1239.53125 1238.332031 1237.03186 1235.604736 1235.110352 1237.922974 1240.593262 1245.014038 1254.55481 1260.588745 1264.002563 1264.405151 1263.576172 1262.116699 1260.257812 1258.529785 1257.190918 1255.738037 1253.432251 1251.420044 1249.602295 1248.328857 1248.317871 1248.731689 1248.868774 1248.262573 1247.312622 1245.872437 1244.657593 1248.535278 1255.274902 1258.172852 1258.701172 1259.060791 1259.584229 1260.122681 1260.414795 1260.33667 1259.914429 1259.108765 1258.24292 1256.920654 1255.445557 1253.739746 1251.946045 1249.706787 1247.447144 1245.151489 1244.531982 1244.307373 1243.955322 1243.201538 1242.295532 1241.174805 1239.93689 1238.153931 1235.87854 1232.572266 1232.157959 1233.172241 1233.915405 1235.603027 1237.593262 1239.447388 1240.972046 1241.292236 1240.452026 1238.736816 1237.270142 1235.918579 1233.957642 1232.183228 1232.790161 1232.267456 1231.063843 1229.91394 1229.176392 1229.083862 1229.305176 1229.811401 1230.52832 1231.671021 1233.392456 1234.033813 1234.416748 1234.342407 1233.853638 1232.991089 1231.618652 1229.881592 1230.339355 1232.188477 1233.557861 1234.780518 1235.690552 1236.273926 1236.619263 1236.540405 1236.567261 1236.457397 1236.28772 1236.0625 1235.678833 1235.168945 1234.693481 1234.280884 1234.065308 1233.832153 1233.568726 1232.934448 1230.721069 1227.314209 1223.89917 1221.689697 1219.228516 1215.892456 1210.856323 1208.516235 1208.248779 1208.524658 1208.82373 1209.522827 1210.116455 1210.380493 1210.704956 1211.113037 1211.056396 1210.910034 1210.59729 1210.166626 1209.793457 1209.062256 1208.254517 1207.78894 1207.194336 1207.389404 1207.390015 1207.325684 1206.258057 1204.955688 1204.082153 1203.290649 1202.543701 1201.779175 1201.025269 1200.071899 1199.176392 1198.45874 1197.935791 1197.602905 1197.348511 1196.995605 1196.634521 1196.289429 1195.956177 1195.501709 1194.864136 1194.102173 1193.37146 1192.501221 1191.689941 1190.810059 1189.819702 1189.099976 1188.502563 1187.952515 1187.360474 1186.648682 1185.885376 1185.049316 1184.158325 1183.237427 1181.208618 1178.901123 1176.688599 1176.08667 1176.335083 1176.71106 1177.071045 1177.456787 1177.837402 1178.287109 1178.640869 1178.842773 1179.203857 1179.718872 1180.29895 1180.892212 1181.351074 1181.671265 1181.843872 1182.438477 1183.563477 1184.769043 1185.302002 1186.133789 1186.98645 1187.384521 1187.036011 1185.896606 1184.069946 1181.116455 1177.782471 1177.759644 1178.364258 1179.363892 1180.461426 1181.646362 1182.854614 1183.173828 1183.719849 1183.712646 1183.517334 1183.120361 1182.747437 1182.446533 1182.258179 1182.091553 1181.891113 1181.674927 1181.410645 1181.124023 1181.070068 1181.042603 1181.281494 1181.729858 1182.488159 1183.218262 1184.014526 1184.387573 1184.544556 1184.573242 1184.140503 1183.49939 1182.900757 1182.792236 1182.951904 1183.006104 1182.987915 1182.927246 1182.921265 1182.919312 1182.775269 1182.513062 1182.010864 1181.568237 1181.09021 1180.472534 1179.916992 1179.178101 1178.437012 1177.782104 1177.307739 1176.629395 1175.9198 1175.127075 1174.369995 1173.607178 1172.880371 1172.168335 1171.364624 1170.734985 1170.564819 1171.122437 1171.535767 1171.683594 1171.748413 1171.455811 1171.150146 1171.324341 1170.996948 1169.961304 1171.06897 1172.388184 1173.563232 1174.549438 1175.69519 1177.199707 1178.700439 1180.122559 1181.439209 1182.865845 1186.385742 1189.856079 1193.21106 1195.601196 1198.722046 1201.351196 1202.230835 1201.366333 1199.931152 1198.127319 1196.204712 1194.6604 1194.216064 1194.334961 1194.668701 1196.96228 1198.308838 1199.71814 1200.980469 1202.221802 1203.561035 1204.985352 1206.629761 1207.793091 1209.509155 1211.473145 1214.546387 1216.751587 1218.071655 1219.974365 1224.471924 1228.832886 1232.588989 1236.922852 1241.112183 1242.908813 1242.466919 1245.059204 1246.343994 1245.764038 1246.188721 1248.257324 1249.920898 1251.961548 1252.756958 1248.826172 1245.906128 1253.712036 1259.143799 1260.859009 1266.871216 1273.238525 1278.010864 1281.692505 1284.377441 1285.425293 1286.215332 1288.661621 1289.720947 1289.509033 1290.490112 1292.472778 1294.946167 1294.353882 1294.194092 1294.168579 1294.131958 1293.50708 1293.07019 1292.882446 1292.83728 1292.845703 1292.849609 1292.842773 1292.901733 1296.388794 1300.997803 1303.977661 1303.528442 1303.648926 1304.868164 1305.959473 1305.732422 1303.880005 1302.028809 1299.534302 1297.611816 1296.686768 1294.740234 1287.123779 1268.457153 1255.162598 1241.003174 1229.805176 1222.925049 1215.153687 1206.471313 1211.614868 1221.57312 1222.122559 1209.250732 1199.810669 1191.319092 1185.817383 1184.558105 1177.344604 1168.232666 1166.415283 1166.500244 1166.784302 1167.352173 1170.16748 1174.799072 1179.20874 1182.768311 1192.312012 1197.108398 1198.301392 1197.089233 1195.502075 1195.893066 1193.85144 1201.026001 1208.155762 1210.842896 1211.172729 1210.254028 1199.953247 1196.082397 1196.282959 1189.749878 1179.775513 1172.653931 1179.376953 1176.606201 1173.011841 1161.093994 1152.834473 1148.055298 1144.659302 1138.668579 1134.625 1138.421753 1140.681885 1141.577881 1142.814941 1145.668579 1148.034546 1145.804443 1134.104004 1129.632568 1127.074463 1123.917603 1121.323364 1119.209473 1117.294434 1115.510742 -1333.147217 1312.151733 1295.839233 1279.947876 1265.861084 1253.28833 1241.898682 1237.820312 1236.566528 1233.940186 1227.587769 1221.49646 1214.7771 1206.467896 1198.943481 1193.040405 1187.586182 1183.94104 1176.278809 1170.539795 1168.099976 1165.897827 1163.722656 1162.182007 1161.299683 1160.69458 1159.656006 1164.00647 1170.086548 1178.809082 1187.786499 1196.064575 1204.213013 1214.398438 1230.860352 1249.054688 1266.24585 1283.432251 1312.665405 1341.962891 1346.924805 1344.340698 1337.798462 1329.009399 1321.320801 1315.392212 1311.674805 1308.016846 1304.019897 1292.843018 1295.675903 1292.757202 1284.97168 1278.622925 1271.831909 1261.134644 1257.97522 1267.554565 1275.788696 1281.975098 1285.036621 1287.450439 1290.087158 1293.190552 1294.346924 1293.613281 1285.283691 1280.536865 1281.970825 1280.282959 1275.699219 1271.053467 1260.297363 1256.223633 1264.304565 1270.657959 1267.320923 1264.673462 1264.296143 1263.70105 1261.917114 1259.690063 1256.943481 1255.759521 1256.532837 1257.772095 1257.709473 1256.385986 1254.124023 1252.539917 1251.041382 1248.327271 1244.944336 1238.432861 1241.539673 1244.408325 1247.702881 1253.604736 1257.426758 1258.611084 1260.621216 1265.01355 1266.514771 1267.791992 1272.272095 1277.555298 1281.497925 1282.909058 1283.726074 1284.33728 1285.463379 1287.060791 1288.893677 1290.416748 1290.848633 1290.722046 1290.119141 1289.319336 1288.543335 1287.954102 1287.18042 1286.38147 1285.714355 1285.962891 1286.748657 1287.592773 1288.769287 1289.642212 1290.016235 1289.774292 1289.61499 1290.195557 1291.311768 1291.888062 1292.988403 1294.598145 1295.539917 1295.932983 1295.768677 1294.873291 1294.440918 1293.925903 1295.031128 1296.833862 1298.20105 1298.719604 1298.986816 1299.015869 1298.971313 1298.369507 1298.470215 1299.211792 1298.742676 1298.085449 1297.455688 1298.363281 1299.497192 1299.594116 1298.467285 1296.610107 1293.775391 1292.991699 1293.399414 1290.768555 1282.619751 1274.238892 1262.944092 1253.692261 1247.088989 1243.19104 1241.503296 1239.979248 1238.737427 1237.86145 1236.741821 1235.296631 1237.704468 1242.428833 1242.835449 1247.20813 1259.596313 1266.745117 1268.412231 1267.04895 1265.770386 1264.618164 1263.084106 1261.208496 1259.275513 1256.785278 1254.806885 1253.294189 1252.266357 1251.407227 1251.086792 1250.955566 1250.574829 1249.860229 1248.734009 1246.920166 1245.064209 1247.784424 1254.347778 1257.970459 1258.852783 1259.232788 1259.753784 1260.485352 1260.977783 1261.03833 1260.594238 1259.769287 1258.601318 1257.151978 1255.68457 1254.17688 1252.123779 1249.586304 1246.932129 1244.800415 1243.786499 1243.792847 1243.464966 1242.818359 1242.18811 1241.384033 1240.345703 1239.044067 1237.241943 1235.102783 1234.217651 1234.671265 1235.610596 1237.114014 1239.220215 1242.458008 1244.235718 1244.474365 1243.407837 1240.812744 1239.044189 1237.689209 1236.251221 1234.81665 1234.25061 1233.581299 1232.324219 1231.800537 1230.36438 1229.888062 1229.88208 1230.222534 1230.63855 1231.516602 1233.201294 1234.065796 1234.738159 1234.902832 1234.660522 1233.964478 1232.802612 1231.2771 1231.602905 1232.916138 1234.607178 1235.848389 1236.763428 1237.35791 1237.661133 1237.666748 1237.592407 1237.389038 1237.211792 1236.892456 1236.488525 1236.022827 1235.496948 1235.042358 1234.714722 1234.416016 1234.054932 1233.241455 1230.507568 1224.624146 1220.919312 1215.935913 1214.08313 1212.884644 1209.222046 1209.616455 1209.84436 1210.124268 1210.424927 1210.928711 1211.319824 1211.638672 1212.038208 1212.282715 1212.4823 1212.376221 1212.194702 1211.737549 1211.195068 1210.300903 1208.776001 1208.028687 1207.665894 1208.184692 1208.038086 1207.747559 1206.752563 1205.619385 1204.650513 1203.862915 1203.092163 1202.336304 1201.477905 1200.602417 1199.872559 1199.294312 1198.817749 1198.379028 1198.023926 1197.630859 1197.254639 1196.891846 1196.515869 1195.99646 1195.358887 1194.528809 1193.713013 1193.015625 1192.152344 1191.24939 1190.332275 1189.385498 1188.553101 1187.74939 1187.091064 1186.485474 1185.639038 1184.796631 1183.671875 1182.291382 1179.742065 1177.053833 1176.754639 1176.77356 1177.060913 1177.388794 1177.737305 1178.198853 1178.616211 1179.080566 1179.373901 1179.728394 1180.103394 1180.561157 1181.088379 1181.816162 1182.404419 1182.736816 1182.862915 1182.663452 1183.185059 1185.213989 1186.598267 1187.835938 1188.884033 1189.431885 1189.082642 1187.64978 1185.230469 1182.345947 1178.533325 1178.114136 1178.805908 1180.076416 1181.275391 1182.309692 1183.188477 1183.466553 1184.003906 1184.155884 1184.053589 1183.801636 1183.426147 1183.239014 1183.038208 1182.860352 1182.599121 1182.39978 1182.141968 1181.831055 1181.511475 1181.479614 1181.638428 1181.952026 1182.541504 1183.463623 1184.222778 1184.65564 1184.962891 1184.944824 1184.692017 1184.110718 1183.755371 1183.773682 1183.822998 1183.88623 1183.853149 1183.791504 1183.734741 1183.692505 1183.537354 1183.2323 1182.76416 1182.182129 1181.630371 1181.169189 1180.569092 1179.819214 1179.134644 1178.641357 1178.004639 1177.291992 1176.609619 1175.837524 1174.985718 1174.160278 1173.376343 1172.575562 1171.684326 1170.882935 1170.768555 1171.199341 1171.867432 1172.173218 1172.400635 1172.256592 1172.060303 1171.98645 1171.775024 1170.913818 1170.760742 1172.108887 1173.363159 1174.573364 1175.814453 1177.221436 1178.68811 1180.013306 1181.303467 1182.778442 1186.113159 1190.235352 1193.918091 1197.049927 1201.150635 1205.13269 1205.270874 1203.732178 1202.247925 1200.478271 1198.459839 1196.987305 1195.795166 1195.191162 1194.748047 1195.965698 1197.256958 1198.36853 1199.588623 1201.00354 1202.433228 1203.686646 1204.768555 1205.769287 1207.020996 1207.932251 1210.186768 1213.336914 1215.449219 1217.557373 1220.492188 1225.003174 1228.824585 1232.670288 1235.371216 1236.870483 1238.318848 1240.693481 1240.868896 1240.102661 1240.954834 1242.929932 1245.328857 1245.66748 1245.014282 1242.612549 1242.184326 1247.572998 1253.474609 1254.512329 1257.009033 1268.689819 1271.565308 1273.551758 1275.032471 1275.391602 1276.307983 1281.805786 1281.967285 1281.87207 1283.182373 1287.633423 1293.747803 1294.059082 1294.283325 1294.483398 1294.860352 1294.885254 1294.3479 1293.743408 1293.11438 1292.9729 1292.903687 1292.836548 1292.810791 1295.011841 1297.709351 1299.541016 1298.891846 1299.765991 1302.278687 1305.848267 1306.284668 1305.115479 1301.668457 1297.172119 1296.610352 1296.908813 1295.998169 1290.835571 1278.302246 1259.668823 1244.274902 1231.280029 1226.151855 1217.938477 1208.100342 1195.855103 1207.990479 1202.991943 1198.889893 1187.412598 1178.438965 1174.999756 1172.260864 1172.315918 1173.931763 1176.175171 1178.43457 1180.065552 1177.930054 1177.166016 1180.528076 1186.468872 1193.788086 1201.137085 1204.244995 1204.972168 1203.697754 1203.369751 1202.816406 1203.457031 1209.165283 1215.921265 1218.709839 1215.681641 1207.430298 1195.46228 1184.736084 1183.853149 1179.988403 1172.680542 1165.352661 1171.018188 1170.291748 1165.936646 1158.422852 1146.366211 1145.33728 1143.859009 1141.438477 1140.625854 1145.064941 1146.919312 1147.003296 1146.305298 1147.045532 1148.01123 1145.330322 1133.649048 1131.998291 1130.689697 1126.89917 1122.932983 1120.902954 1119.163086 1117.353027 -1334.231079 1316.880493 1301.622925 1284.169556 1269.431641 1255.449341 1237.672974 1227.984741 1221.036987 1219.537354 1215.603027 1212.810791 1208.696411 1200.909912 1195.133179 1189.533325 1183.449219 1179.726562 1173.522583 1169.572876 1167.061279 1164.734375 1162.621216 1160.836792 1160.370483 1160.543701 1166.461426 1171.261597 1174.440063 1184.376831 1196.429932 1203.670776 1210.560669 1220.372925 1239.042114 1254.200684 1273.318359 1296.986206 1325.818237 1346.222412 1347.309082 1343.562134 1337.368042 1329.680908 1321.565796 1315.563843 1311.816284 1308.358154 1304.714722 1293.965332 1292.897949 1291.958374 1286.01355 1280.949951 1272.687012 1260.630737 1262.650269 1269.930542 1278.297974 1283.169556 1286.360107 1288.925415 1291.136353 1294.090698 1295.124756 1293.22229 1289.224976 1285.70813 1285.1073 1282.860229 1276.910156 1267.851562 1255.643677 1261.711914 1269.789062 1272.323486 1267.664185 1266.396484 1267.58728 1267.286865 1264.851074 1261.295532 1257.026733 1256.747437 1258.318481 1259.036255 1258.693848 1256.920654 1254.623535 1253.71521 1253.353638 1250.805176 1244.942627 1239.728516 1241.092773 1243.127319 1245.796021 1250.034302 1254.184692 1256.819336 1259.888428 1266.648315 1270.189819 1270.292603 1273.171021 1278.679688 1281.810303 1283.175171 1283.600342 1283.697266 1284.374146 1286.769775 1290.320435 1292.236084 1292.330933 1292.463013 1292.147461 1291.432251 1290.730591 1289.93811 1289.450195 1288.739258 1288.176758 1288.272827 1288.692139 1289.285278 1290.4375 1292.347778 1292.411987 1291.292114 1291.230469 1292.334351 1292.99646 1293.18457 1294.724121 1296.720093 1297.957886 1298.584717 1298.567261 1298.329224 1298.408569 1298.058716 1298.610962 1299.370972 1299.924805 1300.160645 1300.367188 1300.39917 1300.603027 1301.534912 1302.474365 1304.248535 1304.740234 1304.032349 1302.981201 1302.989136 1302.802124 1302.371094 1300.470825 1298.029663 1296.030884 1295.071777 1294.712646 1292.815796 1281.327148 1270.723877 1259.681885 1252.251343 1246.316895 1242.993408 1241.033569 1239.31958 1238.201782 1237.334595 1236.056641 1237.386719 1243.635498 1247.720581 1248.483032 1252.737549 1262.717407 1270.79126 1271.822876 1269.991089 1268.207275 1267.266357 1266.043335 1264.005249 1261.435181 1258.617432 1256.398682 1255.197021 1254.206177 1253.44519 1253.494019 1253.248291 1252.556763 1251.665527 1251.154297 1249.828491 1247.374268 1246.3125 1249.936279 1255.653442 1257.984375 1258.612549 1259.666748 1260.602905 1261.330811 1261.524658 1261.168823 1260.32666 1259.070557 1257.814331 1256.88916 1255.129883 1252.754028 1250.05481 1247.035034 1244.299683 1243.939941 1243.886719 1243.481323 1242.912598 1242.434937 1241.963135 1241.406738 1240.346436 1239.16626 1237.80603 1236.986328 1236.955811 1237.435913 1238.57312 1240.341187 1243.494873 1244.427368 1244.451416 1243.781494 1241.773682 1240.95105 1240.262085 1238.97998 1237.308838 1235.923218 1234.814575 1233.785034 1232.875854 1231.574707 1230.842041 1230.537964 1230.583618 1230.842407 1231.634521 1232.61084 1233.998901 1235.276611 1235.651489 1235.677979 1235.001099 1233.924316 1232.22229 1231.745117 1233.63855 1235.634033 1236.953613 1237.900757 1238.465576 1238.636353 1238.580933 1238.405762 1238.097656 1237.842529 1237.394897 1236.933838 1236.456055 1235.915527 1235.447876 1235.083374 1234.761719 1234.337769 1233.003418 1228.395996 1221.654297 1217.348389 1211.826904 1211.619019 1210.405884 1210.926147 1211.695801 1211.951904 1211.89209 1212.119385 1212.429443 1212.710083 1213.03479 1213.362915 1213.796753 1214.019287 1214.062378 1213.823608 1213.476196 1212.914185 1212.089111 1211.022583 1209.331787 1208.428467 1208.400757 1208.013916 1207.437012 1206.603271 1205.713501 1204.934204 1204.175293 1203.555542 1202.673462 1201.860107 1201.117676 1200.529053 1200.003662 1199.446899 1199.029419 1198.588989 1198.2146 1197.788818 1197.259644 1196.84021 1196.336914 1195.642334 1194.902588 1194.149536 1193.389404 1192.560303 1191.675171 1190.544434 1189.517822 1188.492798 1187.651855 1186.838623 1186.175293 1185.539551 1184.760132 1183.689087 1182.10022 1178.736694 1177.34082 1177.354126 1177.684814 1177.745483 1178.151611 1178.526978 1179.067505 1179.530396 1180.020508 1180.347534 1180.542725 1180.938965 1181.454346 1182.079102 1182.728394 1183.33374 1183.991089 1183.978516 1183.214478 1183.396973 1185.561157 1187.52832 1189.438843 1191.016235 1191.952271 1191.606567 1190.146973 1187.408325 1183.803955 1180.788208 1178.903076 1178.765747 1181.161621 1182.47937 1182.485352 1183.051392 1183.85144 1184.275391 1184.401733 1184.435791 1184.131714 1183.966675 1183.865112 1183.733154 1183.588989 1183.349121 1183.127075 1182.916504 1182.621216 1182.106079 1181.942505 1181.996338 1182.134399 1182.568481 1183.312744 1184.352783 1184.876953 1185.364502 1185.419678 1185.316528 1184.994019 1184.75647 1184.728271 1184.810059 1184.752563 1184.643188 1184.642456 1184.617188 1184.50354 1184.347534 1184.024048 1183.539185 1182.936768 1182.381226 1181.808594 1181.293945 1180.517212 1179.850708 1179.261353 1178.661255 1178.001099 1177.232178 1176.301025 1175.394287 1174.60376 1173.684937 1172.800659 1171.875732 1170.968018 1170.817017 1171.19397 1172.08313 1172.603149 1172.808594 1172.875977 1172.751831 1172.437134 1171.936279 1170.979004 1170.842529 1172.154541 1173.29187 1174.588867 1175.852539 1177.192993 1178.528076 1179.849731 1181.258179 1182.616333 1185.536987 1189.562988 1193.630737 1197.947998 1202.755127 1207.990601 1207.926514 1206.092651 1204.574219 1202.897827 1200.988281 1199.457275 1198.430054 1197.626343 1196.467773 1195.065063 1195.993286 1197.009033 1198.218506 1200.143555 1201.913818 1203.207397 1204.218262 1204.891602 1205.723022 1206.508545 1207.953369 1210.983765 1213.199219 1215.425171 1217.938477 1220.883057 1224.516724 1228.093506 1230.458008 1231.931274 1233.620605 1235.520264 1235.286865 1234.301392 1236.523804 1238.799438 1240.362793 1240.694092 1239.622192 1238.45874 1239.577759 1243.546631 1245.666382 1245.628906 1251.681763 1258.263794 1263.573608 1267.192139 1268.019775 1267.575562 1268.71814 1269.213989 1269.615356 1270.484619 1271.4104 1276.201904 1282.543091 1292.61438 1293.456787 1294.477295 1295.183105 1295.605713 1295.665405 1295.051147 1294.366089 1294.216431 1293.823853 1293.070679 1292.818359 1292.914429 1295.020264 1295.957275 1293.140015 1294.913696 1298.954956 1303.098267 1306.354492 1306.385254 1297.743774 1291.29248 1292.809448 1295.853516 1296.160522 1294.940308 1287.05835 1275.215942 1256.780151 1242.129028 1234.324829 1220.550781 1210.225708 1196.564819 1190.862793 1191.05249 1179.514038 1180.117798 1185.638428 1186.292847 1183.109375 1180.267944 1179.769043 1185.029297 1193.372681 1195.869385 1190.904175 1182.188721 1185.336914 1192.748535 1203.952881 1211.095459 1213.256592 1213.446167 1211.308472 1211.714478 1210.813232 1209.595459 1217.051514 1222.405273 1222.500122 1214.47998 1204.141724 1192.752686 1183.531982 1174.616699 1170.958374 1165.688477 1159.354492 1154.240234 1156.723511 1153.015137 1144.981689 1145.072388 1145.216553 1145.158569 1144.789551 1145.022461 1151.524902 1157.127197 1154.879517 1152.919312 1147.727539 1144.815552 1138.785767 1134.298828 1138.120728 1135.38562 1131.711914 1126.542969 1122.418945 1120.675049 1118.904297 -1333.116333 1317.105347 1305.922729 1286.795898 1271.238892 1259.6875 1247.063721 1235.27417 1224.423218 1216.192993 1207.871094 1206.223755 1199.882324 1194.316895 1191.412476 1186.834229 1181.627319 1175.721802 1170.862305 1168.422974 1165.977295 1163.939941 1162.066772 1161.914673 1164.747803 1169.417847 1175.92334 1184.578125 1185.889282 1191.549683 1201.610107 1208.547607 1215.419556 1228.136475 1245.935181 1261.514893 1281.054321 1306.319336 1330.746948 1348.044556 1349.636597 1342.96814 1336.992676 1329.060547 1320.119263 1314.478638 1309.943237 1306.751953 1300.46521 1292.533325 1289.533936 1288.653076 1284.270508 1279.306519 1272.306885 1259.806274 1267.44397 1273.471558 1278.622314 1283.573853 1288.174927 1290.608276 1292.900269 1298.399902 1297.51709 1292.616455 1292.370117 1291.610107 1286.327026 1281.068115 1274.122803 1264.925903 1260.905762 1270.24939 1278.945557 1280.541504 1271.387451 1267.718506 1269.833374 1270.018066 1267.725342 1264.27478 1261.616455 1260.167358 1260.263428 1260.315063 1259.135254 1256.944458 1255.076538 1255.320923 1256.194458 1255.821289 1250.353516 1243.965332 1241.0448 1242.57373 1244.305054 1246.217163 1248.499878 1249.427246 1251.357544 1255.228638 1258.345703 1263.248901 1269.197876 1273.812622 1278.171387 1280.833496 1282.569946 1281.79834 1280.966919 1285.531128 1290.919678 1293.374268 1293.468994 1293.065796 1293.101685 1292.946777 1292.787109 1292.147095 1291.374512 1290.513916 1289.880005 1289.925903 1290.378906 1290.943237 1291.743042 1293.546753 1293.671875 1292.465576 1292.654175 1294.115723 1294.890625 1295.499146 1296.914185 1298.758057 1300.433838 1301.421509 1302.095825 1302.453369 1302.628174 1302.045654 1302.039429 1302.09668 1301.799683 1301.614136 1301.429932 1301.632568 1302.326904 1303.760498 1304.94104 1305.729614 1305.518799 1306.093628 1306.605713 1305.43811 1305.656494 1304.838623 1302.104492 1298.625854 1296.674438 1296.164673 1295.683594 1292.794922 1278.574463 1266.591431 1257.893433 1251.267212 1245.963135 1242.778076 1240.347778 1238.634766 1237.567017 1236.755371 1237.958984 1242.403687 1249.076782 1254.748047 1257.308472 1256.614868 1264.126831 1270.773682 1274.993286 1278.448486 1278.233032 1273.160156 1269.352051 1266.9021 1263.744507 1260.798096 1257.875732 1255.880249 1255.848389 1255.739014 1255.597412 1255.312622 1254.006348 1253.554932 1254.000732 1254.956055 1252.639282 1248.411865 1247.307495 1252.497314 1255.486694 1256.322632 1259.120483 1260.729248 1261.729736 1262.009155 1261.730957 1260.986084 1259.655151 1258.481689 1257.124268 1255.663086 1253.565186 1251.070679 1248.406128 1246.101807 1245.602051 1245.331299 1244.470337 1243.802124 1243.129639 1242.715332 1242.627686 1242.282227 1241.097656 1239.921143 1239.124634 1238.973389 1239.263672 1239.9375 1241.024048 1242.839478 1244.332397 1244.345093 1243.306152 1242.931152 1243.269165 1242.845581 1241.800781 1239.603149 1237.70874 1236.160645 1234.781494 1233.460571 1232.41394 1231.822754 1231.025757 1230.955444 1231.077515 1231.4729 1231.887939 1231.971436 1235.431763 1236.613281 1237.135498 1236.823364 1235.653564 1233.524292 1232.176636 1234.724609 1237.012817 1238.273682 1239.094604 1239.513794 1239.536011 1239.28894 1238.936768 1238.438721 1237.998901 1237.497437 1236.911377 1236.327515 1235.907837 1235.442017 1234.810059 1233.463989 1231.813721 1227.959473 1220.905762 1217.674072 1215.125732 1212.964966 1214.706177 1215.066895 1215.192627 1214.896851 1214.316895 1213.853394 1213.736816 1213.773804 1214.10498 1214.388794 1214.843384 1215.419556 1215.758057 1215.845581 1215.612183 1215.200684 1214.69104 1213.999634 1212.701172 1210.714233 1209.318481 1208.325684 1207.657349 1206.836304 1206.072388 1205.587402 1205.126587 1204.495728 1203.723999 1202.95459 1202.316284 1201.752197 1201.100952 1200.50061 1199.925049 1199.432983 1199.043823 1198.621948 1198.178345 1197.677979 1197.120483 1196.446655 1195.869629 1195.189575 1194.463013 1193.851929 1193.002075 1191.954834 1190.833862 1189.532593 1188.415039 1187.526855 1186.710571 1185.98938 1185.344971 1184.684326 1183.885132 1182.541016 1179.096191 1177.682861 1177.945923 1178.252563 1178.563354 1178.846436 1179.362061 1179.875977 1180.488403 1181.159912 1181.455078 1181.447266 1181.612427 1182.056763 1182.751343 1183.509399 1184.538818 1184.96936 1184.903564 1183.971313 1183.07605 1185.305176 1188.516968 1191.127808 1193.181274 1194.34668 1194.383179 1193.051025 1189.193481 1183.897217 1181.731567 1180.289429 1179.450928 1183.248169 1183.534302 1183.296509 1183.404785 1184.118774 1184.492798 1184.682495 1184.746338 1184.687378 1184.539551 1184.507568 1184.449951 1184.285156 1184.09021 1183.895508 1183.682251 1183.310669 1182.803833 1182.402222 1182.317261 1182.359375 1182.654297 1183.15918 1184.265991 1185.063232 1185.769409 1186.033447 1186.037598 1185.942871 1185.737793 1185.707397 1185.689575 1185.535156 1185.516113 1185.490845 1185.403809 1185.369263 1185.162476 1184.78479 1184.282227 1183.715576 1183.11438 1182.519775 1181.998413 1181.283813 1180.518066 1179.946655 1179.319214 1178.606201 1177.821533 1176.935547 1175.937256 1175.056152 1174.12439 1173.07019 1172.080811 1171.046509 1170.940308 1171.423096 1172.302734 1172.903809 1173.215088 1173.238159 1173.033325 1172.566162 1172.011597 1171.078857 1170.859619 1172.161377 1173.46582 1174.588745 1175.771484 1177.073486 1178.356079 1179.700073 1180.900879 1182.408203 1185.077026 1189.139771 1193.393188 1197.548828 1202.386963 1207.258789 1208.71228 1208.276245 1206.834351 1205.18103 1203.509277 1202.17688 1200.959839 1199.918213 1198.875 1196.116089 1194.990967 1195.424927 1197.071289 1200.273193 1202.216187 1203.4375 1204.373901 1204.972168 1205.485718 1206.120239 1207.304077 1209.52417 1211.538452 1213.476807 1215.527466 1217.74646 1220.273804 1223.530151 1225.597534 1227.519043 1229.650391 1231.605591 1231.498169 1230.488037 1232.838989 1235.044067 1235.904785 1235.749756 1235.249634 1232.532227 1234.186157 1238.083496 1239.641724 1241.595215 1246.04895 1250.865723 1254.826416 1257.971436 1258.797241 1256.023682 1258.561279 1258.300293 1255.74585 1254.296265 1266.875244 1273.886475 1279.643555 1284.553589 1292.665161 1293.694824 1295.540039 1296.595947 1296.839355 1296.603271 1295.996826 1295.547241 1295.247681 1294.530151 1293.923706 1293.509644 1293.763794 1293.89917 1291.797119 1292.908447 1294.356934 1296.959595 1300.922119 1302.664062 1298.337524 1289.626343 1280.649292 1288.91687 1291.126343 1287.931763 1283.956787 1278.587769 1268.770264 1251.89502 1236.494507 1222.526001 1210.244141 1195.394043 1181.80542 1182.788696 1191.495728 1196.814575 1198.04834 1197.209595 1195.094727 1188.022583 1185.001099 1195.142578 1205.310059 1207.798828 1206.123657 1195.861938 1194.080811 1198.444214 1209.793213 1219.336426 1222.848267 1222.548462 1221.255859 1222.07312 1221.601807 1219.115967 1223.011108 1224.151123 1220.224487 1209.081787 1197.905029 1189.528076 1182.147949 1170.596436 1162.37915 1158.557251 1155.031982 1150.526123 1145.954834 1145.029907 1147.360229 1151.430664 1152.365234 1150.515137 1147.766846 1145.481201 1153.767334 1163.03186 1165.700562 1160.784424 1154.259766 1147.650635 1143.5177 1144.05957 1150.215942 1145.792725 1137.709961 1131.814819 1124.722168 1121.457031 1120.039673 -1330.185913 1316.223877 1304.950562 1291.181763 1280.890869 1277.205566 1265.437256 1246.551147 1234.042603 1223.458984 1212.48645 1205.916138 1200.789429 1195.950317 1191.403809 1184.170776 1179.475708 1173.71814 1169.733398 1167.25769 1165.120117 1163.497681 1162.075317 1163.56958 1168.890869 1174.980469 1181.865479 1191.264038 1197.697632 1199.976318 1207.382812 1216.219482 1223.932983 1240.754272 1260.563965 1274.532227 1295.39978 1316.951538 1336.869873 1351.789062 1353.811401 1347.396851 1340.383545 1331.059082 1317.395508 1312.516602 1305.735229 1302.062378 1292.987061 1286.804688 1283.031006 1283.640381 1282.246582 1275.834106 1268.305298 1260.970337 1269.30603 1277.019531 1280.39856 1285.29187 1290.984863 1293.849365 1300.943848 1305.418335 1299.680176 1292.614502 1294.62793 1294.016968 1286.336426 1278.547729 1271.632324 1266.253296 1265.761475 1274.966797 1282.716064 1282.546631 1277.682251 1271.652222 1271.967773 1271.519409 1268.295166 1266.861694 1265.486938 1263.67627 1262.760498 1261.665894 1259.771851 1257.005249 1255.569458 1257.025391 1258.833374 1258.433472 1256.31543 1248.831299 1243.112671 1244.258667 1245.257935 1245.116943 1245.248413 1246.470093 1247.151611 1247.168823 1249.314087 1253.669922 1260.817383 1268.331909 1271.688354 1274.414062 1277.287231 1277.199219 1277.373535 1281.637817 1287.069214 1292.115356 1293.964355 1293.387695 1293.447388 1293.683838 1293.7229 1293.335815 1292.639282 1291.589966 1291.281616 1291.60083 1291.636841 1292.366333 1293.113403 1294.183105 1294.730225 1293.972046 1294.396484 1295.7854 1296.944336 1298.071533 1299.780029 1301.533203 1303.131348 1304.401245 1305.453735 1306.103271 1306.186523 1305.413452 1304.565186 1304.106201 1303.679321 1302.908813 1302.485718 1302.729126 1303.754883 1305.211914 1305.94043 1306.094482 1305.509399 1304.252563 1303.309692 1300.499878 1302.585815 1304.490967 1297.818115 1296.324219 1296.104736 1295.905273 1294.614258 1288.404541 1275.645752 1263.282715 1255.312988 1249.7146 1245.318115 1242.119019 1239.452271 1237.903198 1237.973633 1239.025757 1241.869507 1247.99707 1257.002319 1262.856445 1266.276001 1265.785156 1266.253052 1268.967773 1275.92334 1281.593262 1282.207764 1280.808594 1275.023315 1269.675415 1266.227905 1263.207153 1260.21228 1257.9729 1258.660889 1258.550415 1257.734131 1256.718872 1255.034302 1254.977905 1256.010254 1256.956665 1256.189941 1250.1875 1247.667725 1251.50647 1255.213623 1256.387817 1258.835083 1261.006104 1262.172607 1262.66748 1262.509521 1261.736816 1260.422607 1258.733276 1256.726807 1255.513672 1253.941528 1252.029785 1250.098633 1248.557007 1247.60022 1247.093872 1246.214111 1245.231201 1244.221924 1243.781494 1244.605103 1243.942627 1242.802979 1241.504272 1240.821289 1240.805054 1241.197998 1241.275391 1241.856934 1242.659302 1244.160278 1244.143555 1243.81543 1244.512939 1244.913696 1244.79248 1244.245117 1241.795898 1239.331909 1237.486938 1235.874512 1234.557129 1233.472656 1232.401001 1231.665039 1231.298706 1231.3125 1231.770386 1232.251343 1232.69751 1235.572754 1237.796387 1239.074097 1239.594238 1238.734253 1237.40686 1236.896484 1237.421143 1238.599121 1239.734985 1240.333984 1240.554443 1240.345703 1239.755493 1238.949097 1238.246094 1237.606201 1236.90918 1236.437256 1235.720215 1235.036865 1234.314819 1232.46228 1229.233521 1226.025635 1222.646851 1217.469727 1215.113525 1214.109009 1215.652588 1219.268311 1220.320435 1219.56189 1217.81189 1216.472412 1215.616577 1215.058716 1215.065674 1215.303589 1215.759521 1216.350098 1217.112427 1217.481934 1217.607422 1217.392578 1216.889893 1216.459961 1215.873169 1213.855713 1211.842773 1210.076294 1208.120605 1207.226562 1206.607422 1206.177979 1205.639893 1205.187256 1204.631836 1204.084717 1203.368286 1202.738892 1202.177734 1201.49292 1200.81897 1200.222168 1199.738281 1199.382202 1198.92334 1198.440308 1197.93103 1197.353149 1196.760498 1196.106445 1195.517578 1194.92334 1194.321289 1193.387085 1192.215576 1190.997803 1189.669434 1188.472656 1187.502808 1186.584106 1185.869629 1185.108398 1184.470459 1183.958618 1182.503174 1178.933472 1178.111694 1178.434937 1178.736572 1179.107422 1179.636719 1180.161865 1180.773071 1181.538452 1182.368408 1182.596436 1182.455566 1182.212891 1182.351318 1183.285034 1184.60437 1185.568848 1186.025757 1185.857544 1185.098511 1184.341064 1186.108521 1189.706299 1192.782104 1194.974609 1195.8125 1195.987427 1195.537842 1191.399536 1186.325684 1182.658325 1180.563965 1181.317261 1183.646606 1183.819092 1183.811035 1184.017822 1184.51123 1184.762329 1185.071533 1185.180298 1185.235596 1185.188965 1185.119141 1185.104614 1184.984253 1184.824829 1184.636353 1184.397827 1183.999146 1183.426514 1182.979736 1182.991455 1182.88916 1182.781738 1183.08606 1184.251587 1185.311523 1186.08606 1186.619019 1186.868896 1186.843506 1186.668945 1186.617554 1186.581665 1186.451904 1186.398438 1186.260254 1186.317261 1186.151978 1185.975342 1185.578125 1185.114136 1184.398926 1183.835449 1183.305786 1182.707642 1182.043335 1181.245972 1180.573242 1179.896484 1179.238525 1178.50647 1177.557373 1176.595703 1175.63623 1174.640503 1173.497192 1172.28833 1171.135864 1171.063599 1171.753784 1172.664185 1173.233276 1173.518677 1173.488037 1173.203491 1172.654175 1171.952271 1170.599243 1171.110962 1172.277954 1173.46936 1174.499023 1175.664917 1176.905273 1178.067871 1179.268677 1180.557495 1182.06311 1183.996338 1188.07605 1192.552979 1196.704346 1201.497681 1206.098145 1208.883179 1209.05127 1208.653564 1207.585938 1205.857666 1204.384399 1203.311279 1202.487671 1201.601807 1199.250854 1198.162842 1197.100952 1198.716187 1201.825073 1203.47522 1204.434814 1205.054688 1205.403687 1205.762939 1206.112427 1206.991699 1207.716919 1209.665405 1211.310059 1212.858887 1214.843872 1216.995728 1219.790894 1220.973389 1222.075562 1225.876343 1227.713501 1228.112061 1228.176514 1229.725342 1231.475586 1232.274902 1232.36792 1231.651733 1229.994263 1231.074097 1233.731323 1234.682861 1236.934448 1241.004639 1244.069214 1246.74646 1248.407227 1247.051636 1245.006714 1245.139526 1242.539307 1253.444336 1266.056885 1275.788452 1285.130859 1293.272949 1293.625122 1292.359009 1292.86438 1295.86499 1297.615601 1298.161865 1298.105103 1297.639038 1297.082275 1296.738281 1296.185181 1295.57666 1294.677734 1293.171875 1292.469604 1291.387817 1289.604004 1288.091675 1291.723267 1294.56311 1294.528564 1295.521606 1294.911987 1280.113037 1272.929932 1277.921265 1274.530762 1269.312622 1269.604126 1263.237427 1251.245483 1237.510254 1223.540283 1203.049072 1187.19519 1193.501953 1204.836548 1208.061401 1210.077515 1210.54895 1209.134766 1205.494385 1197.470703 1192.865356 1205.150024 1214.498779 1218.21167 1219.045044 1209.866211 1203.79126 1206.93811 1213.185181 1222.849487 1229.563721 1229.49585 1229.917725 1232.115601 1232.037476 1233.11792 1230.799561 1222.63208 1214.327271 1201.618408 1191.551636 1183.966675 1175.666382 1165.35022 1157.595215 1155.982422 1155.478149 1153.008545 1150.766357 1150.667725 1154.782593 1162.61438 1165.607788 1162.662109 1157.188599 1151.520996 1154.204102 1163.134521 1173.463623 1171.841187 1164.236938 1157.124634 1148.345337 1149.085815 1160.934204 1157.307739 1146.321533 1136.849487 1128.712769 1122.631714 1121.263428 -1328.213989 1315.251221 1305.480225 1301.133789 1298.596802 1293.271362 1280.411743 1259.977295 1244.756592 1230.129395 1220.428955 1212.288574 1206.226318 1200.125244 1195.456055 1186.544312 1180.92981 1173.319824 1169.409424 1166.105713 1164.272827 1163.053955 1162.004517 1166.343384 1172.074341 1180.206055 1195.612183 1206.434326 1219.25293 1216.250854 1217.532715 1228.834106 1241.173828 1256.585938 1269.889282 1288.435669 1310.269165 1327.041748 1344.504028 1358.47644 1356.956787 1351.374512 1341.956543 1329.261597 1317.296387 1313.024292 1306.702271 1302.398315 1295.056519 1285.628784 1279.387207 1279.892456 1276.752686 1270.018921 1263.012817 1265.350098 1274.726807 1282.31543 1285.382446 1290.341187 1294.993774 1300.12207 1306.272339 1305.611084 1301.909302 1298.086182 1296.82605 1294.201416 1286.233765 1277.378296 1269.412598 1265.814087 1265.80896 1277.777344 1282.803467 1282.320435 1279.881104 1276.727173 1276.027954 1274.253784 1271.491455 1269.63501 1267.817017 1265.931274 1265.111206 1264.329712 1262.366455 1258.497192 1256.024292 1259.759766 1261.365112 1260.472046 1258.230713 1252.645142 1245.283447 1246.289673 1247.615356 1247.971924 1248.170532 1248.566895 1248.915405 1249.037231 1248.389404 1250.734619 1254.842896 1260.661865 1264.732544 1267.215942 1270.224243 1270.369385 1267.811646 1274.538818 1281.008789 1286.27417 1290.910034 1293.161377 1294.514404 1294.127686 1294.236694 1293.942627 1293.361816 1292.789551 1293.018066 1293.178833 1292.866211 1293.539307 1294.544678 1295.505249 1296.065552 1296.363403 1296.945312 1297.901733 1299.087402 1300.683838 1302.552856 1304.20813 1306.072998 1308.217773 1309.7771 1310.342407 1310.1604 1309.126831 1307.715454 1306.271729 1305.161133 1304.368774 1303.445801 1303.646606 1305.057373 1306.179565 1306.214355 1305.117188 1301.904175 1299.077637 1296.45166 1291.842285 1290.973999 1290.155151 1289.658447 1290.57605 1291.831665 1291.989502 1289.908081 1284.759155 1274.846436 1257.666504 1252.645874 1247.536377 1243.456665 1240.996704 1238.799805 1238.848511 1239.507202 1241.386841 1244.421265 1258.174927 1268.183472 1274.228394 1275.374634 1274.709229 1272.003296 1269.151611 1274.294312 1281.302734 1282.211426 1282.380737 1280.475464 1272.391602 1267.275757 1264.890137 1263.508057 1262.784424 1262.8927 1262.171265 1259.694824 1256.792114 1255.728394 1255.929932 1256.588501 1257.685303 1255.810913 1250.688965 1248.535767 1252.716553 1256.909058 1258.309082 1259.856079 1261.696045 1262.840332 1263.423462 1263.373901 1262.764038 1261.41626 1259.239136 1256.692383 1256.028931 1254.474609 1253.077271 1251.837524 1250.592896 1249.572266 1248.774292 1248.018555 1247.091675 1246.173706 1245.703125 1245.971436 1244.898438 1243.626953 1242.554932 1242.035156 1242.628052 1243.44104 1242.861694 1242.542358 1242.876465 1244.087524 1244.335938 1244.412354 1245.039062 1245.425537 1245.35437 1244.604004 1242.941406 1240.479004 1238.580811 1236.834106 1235.52832 1234.239624 1232.907349 1231.91626 1231.453735 1231.713867 1232.41272 1233.922974 1234.757812 1236.696411 1239.016724 1241.395874 1243.072021 1242.696045 1241.25293 1240.342896 1240.150146 1240.411865 1241.081543 1241.896973 1241.868408 1241.027832 1239.777466 1238.447876 1237.335815 1236.554321 1236.025146 1235.285034 1233.61792 1231.74646 1229.79126 1226.641968 1224.009521 1219.844482 1218.235352 1216.45105 1216.96167 1217.074585 1218.984009 1220.808105 1221.307251 1220.80957 1219.483398 1217.982178 1216.746704 1216.241089 1216.245972 1216.566406 1217.097168 1217.993896 1218.66626 1219.120117 1219.290283 1219.143066 1218.619629 1218.034668 1217.587891 1215.522461 1213.004517 1210.883423 1208.460327 1207.350342 1206.980957 1206.560181 1206.072876 1205.545776 1205.075806 1204.542603 1203.899292 1203.233032 1202.487061 1201.84021 1201.170166 1200.530762 1200.088989 1199.56897 1199.060913 1198.592896 1198.090088 1197.583496 1196.992188 1196.543091 1195.992798 1195.418579 1194.820435 1193.894775 1192.483887 1191.124634 1189.722534 1188.446289 1187.464478 1186.633789 1185.755127 1184.904053 1184.115356 1183.567261 1181.744385 1178.971436 1178.546509 1178.905762 1179.312622 1179.867432 1180.422852 1181.134888 1181.70105 1182.6073 1183.301392 1183.883179 1183.431396 1183.213989 1183.083496 1183.198975 1184.87085 1186.59314 1187.280518 1187.444824 1187.370361 1187.860962 1189.307739 1191.448608 1194.0354 1195.823364 1196.312256 1196.466919 1196.289551 1194.985107 1191.437134 1184.00708 1180.783081 1182.343262 1183.710693 1183.941528 1184.306152 1184.401245 1184.661377 1184.948975 1185.312134 1185.594971 1185.765259 1185.851685 1185.861816 1185.787354 1185.698242 1185.560547 1185.310547 1184.957642 1184.479614 1184.077759 1183.740967 1183.765259 1183.673096 1183.141968 1183.289917 1184.431641 1185.665283 1186.630371 1187.235718 1187.560913 1187.796143 1187.703613 1187.561646 1187.565186 1187.363403 1187.258179 1187.259766 1187.178711 1187.040527 1186.743408 1186.416138 1185.897949 1185.188843 1184.584961 1184.035889 1183.466064 1182.872192 1182.118774 1181.264404 1180.642212 1179.921021 1179.20874 1178.356323 1177.453125 1176.485474 1175.488281 1174.408447 1172.93396 1171.102295 1171.303589 1172.310547 1173.08728 1173.647095 1173.878418 1173.688354 1173.305664 1172.584106 1171.666992 1170.545532 1171.528931 1172.375 1173.311279 1174.377808 1175.44043 1176.539551 1177.583252 1178.797363 1180.100708 1181.485718 1183.034302 1187.119995 1191.151489 1195.245972 1199.848999 1204.182739 1207.866699 1209.330444 1209.317749 1209.006104 1207.984619 1206.679321 1205.613647 1204.889771 1204.317871 1203.253174 1202.693604 1202.528687 1203.136963 1204.564575 1205.753296 1206.136597 1206.221069 1206.220459 1206.070435 1206.309814 1206.530029 1207.154419 1207.608154 1209.001343 1210.264404 1211.477051 1213.101685 1215.646484 1217.576294 1220.324341 1223.013916 1224.2323 1224.665405 1224.993774 1226.010376 1227.193115 1227.587646 1227.648193 1227.661499 1227.582275 1229.043335 1230.011841 1230.318604 1232.234741 1234.527832 1236.383911 1238.095459 1238.707275 1238.934692 1241.654907 1243.77063 1250.602539 1261.790649 1273.371216 1284.679443 1295.250122 1297.957886 1297.555542 1296.172974 1295.336548 1297.173096 1299.425537 1299.907227 1299.715454 1299.241089 1298.922974 1298.399048 1297.865234 1297.035889 1295.598267 1293.161011 1292.248291 1291.585571 1287.135742 1280.525391 1281.609375 1285.195801 1287.807373 1291.686035 1295.795166 1286.840454 1272.033203 1262.038574 1261.876831 1259.45166 1258.377075 1253.875 1246.753174 1237.045898 1216.366333 1191.540649 1196.667114 1212.601562 1220.702881 1224.728638 1225.771729 1225.173584 1222.61438 1219.24646 1211.450806 1202.237183 1212.1521 1222.085205 1227.036621 1227.283813 1222.223389 1212.634277 1215.683228 1219.087036 1229.180542 1236.197388 1237.665161 1239.22644 1243.000488 1242.269409 1234.293823 1227.257935 1218.815918 1210.509766 1198.660522 1188.55481 1179.517822 1168.338867 1158.456177 1156.008789 1157.33252 1159.869629 1160.620361 1158.831421 1156.589966 1158.131714 1170.148071 1175.573608 1173.351807 1165.806152 1157.816772 1155.713379 1160.845703 1172.007202 1182.761841 1175.372192 1167.631714 1161.593262 1155.387939 1160.404297 1160.80127 1149.618774 1139.662476 1132.39502 1125.9375 1123.314941 -1327.00354 1314.792603 1309.816528 1308.106812 1302.398071 1295.299438 1288.419189 1279.083374 1259.597656 1245.473999 1232.660522 1221.322754 1211.675049 1204.198364 1197.575684 1189.567627 1182.531128 1170.404663 1167.001465 1164.580444 1162.901123 1163.030029 1165.42981 1171.355591 1177.690063 1187.604736 1203.391113 1220.286133 1232.689453 1230.616455 1231.024048 1244.945312 1263.512939 1276.637817 1285.810913 1299.922607 1318.862305 1336.231445 1354.35083 1359.760254 1358.392578 1352.687012 1340.048828 1331.026123 1322.081177 1314.644531 1309.805176 1305.751343 1299.450684 1292.806274 1281.955322 1276.792236 1268.480713 1264.926758 1264.939331 1272.439697 1280.625732 1285.771973 1289.261597 1293.84668 1299.209839 1304.43689 1306.97937 1304.959595 1303.521362 1300.665527 1297.362671 1293.498901 1282.680054 1274.204468 1266.960449 1265.546997 1268.077026 1279.905762 1283.369995 1283.092407 1280.245972 1280.284668 1279.689819 1278.375488 1275.696289 1272.55188 1269.318359 1267.276489 1267.096802 1267.381592 1266.140625 1263.514526 1261.934448 1264.137695 1265.294922 1263.7677 1259.632812 1255.008911 1251.723511 1250.281982 1250.336304 1251.098755 1251.528687 1251.946167 1251.819824 1251.136719 1249.919312 1249.105225 1251.187378 1254.295776 1257.414307 1259.509033 1261.839478 1262.204102 1260.623047 1267.85437 1274.343872 1279.41626 1283.395874 1287.164307 1290.765991 1293.266235 1294.424194 1294.289185 1294.028442 1293.805054 1294.126343 1294.290161 1294.549438 1294.928345 1295.754883 1296.666016 1297.49292 1298.27478 1299.028931 1299.962158 1300.983643 1302.487671 1304.294922 1306.920654 1309.628052 1313.318481 1315.321411 1315.53833 1314.980591 1313.588867 1311.687622 1309.496704 1307.599854 1305.958374 1304.601074 1304.478271 1305.594604 1306.789307 1306.670654 1305.723267 1301.682739 1295.044678 1291.997803 1286.710815 1284.134277 1283.827026 1280.907959 1281.888794 1283.194946 1282.94812 1282.775269 1280.477905 1271.406372 1256.717041 1251.360107 1246.520264 1243.002563 1240.662109 1239.018677 1239.84729 1241.078735 1242.914917 1255.51355 1269.560303 1280.895752 1282.802246 1282.898193 1282.13916 1281.162598 1278.508057 1277.352783 1280.188354 1281.500244 1282.176758 1281.987427 1278.900757 1270.057861 1266.734131 1265.820923 1266.331177 1267.779785 1267.459961 1260.829224 1256.171509 1256.83374 1258.58374 1258.607788 1257.818481 1253.849487 1249.797363 1249.896484 1255.157593 1257.556396 1259.662476 1261.348267 1262.744873 1263.73584 1264.376587 1264.486694 1264.035645 1262.958008 1260.896973 1259.048462 1257.567749 1255.789673 1254.482422 1253.405518 1252.413696 1251.514648 1250.883057 1250.06189 1249.307129 1248.809448 1248.046753 1247.273315 1245.946411 1244.068481 1243.082031 1242.971558 1244.479492 1245.032349 1244.279419 1243.479126 1243.279175 1243.943481 1244.193115 1244.407837 1245.251099 1245.606323 1245.689819 1244.885742 1243.123413 1241.033813 1239.09375 1237.508423 1235.989868 1234.630981 1233.165405 1231.693115 1231.53186 1231.778442 1233.420044 1235.35437 1236.732544 1238.211914 1240.046875 1242.407715 1244.512207 1244.477661 1243.419312 1242.260498 1242.109863 1242.340332 1242.650635 1243.430664 1243.483032 1241.763062 1239.119019 1237.272705 1235.686768 1234.577271 1234.125 1233.183105 1230.687256 1225.762939 1221.849121 1219.928467 1219.209595 1219.157227 1219.410278 1218.580688 1218.948975 1219.351562 1220.296631 1221.611572 1221.769409 1221.36377 1220.426514 1218.758667 1217.699707 1217.259766 1217.48291 1217.843018 1218.450562 1219.327637 1220.110474 1220.598633 1220.609619 1220.385376 1220.027344 1219.469116 1218.820923 1216.858643 1214.041992 1211.802979 1209.342529 1207.956177 1207.644531 1207.328247 1206.789551 1206.292603 1205.77832 1205.079956 1204.233765 1203.426025 1202.626587 1201.914917 1201.291992 1200.628418 1200.105835 1199.529175 1199.018188 1198.516846 1197.934814 1197.499023 1197.039429 1196.592041 1196.264893 1195.883179 1195.290771 1194.272095 1192.619751 1191.203125 1189.735962 1188.501587 1187.419067 1186.469116 1185.679565 1184.822632 1183.746826 1182.562378 1180.162354 1179.49585 1179.029419 1179.146606 1179.566895 1180.315063 1181.384277 1182.130737 1182.387573 1182.780396 1184.026855 1184.886475 1184.900146 1184.812866 1184.818726 1184.539062 1186.417358 1188.376587 1189.312622 1189.556885 1189.746582 1190.383911 1191.315918 1192.774536 1194.300415 1195.765503 1196.387329 1196.570557 1196.572876 1196.333984 1196.401001 1185.820068 1181.179932 1182.23584 1183.452148 1184.011597 1184.320435 1184.466797 1184.763916 1185.125732 1185.584351 1185.9729 1186.247681 1186.464844 1186.534058 1186.478149 1186.417236 1186.21106 1185.844482 1185.626587 1185.320068 1185.003662 1184.894287 1184.772217 1184.619507 1184.008301 1183.873901 1185.178223 1186.334717 1187.18396 1187.875732 1188.381592 1188.646729 1188.694092 1188.591431 1188.454468 1188.33728 1188.275513 1188.157837 1188.042236 1187.922729 1187.63147 1187.174072 1186.675171 1186.009033 1185.352539 1184.779785 1184.17627 1183.535645 1182.658325 1181.913574 1181.362305 1180.7146 1179.961792 1179.24353 1178.308105 1177.316895 1176.401611 1175.427734 1174.347168 1173.326904 1172.868896 1173.301636 1173.778076 1174.104614 1174.247559 1173.988647 1173.365601 1172.370117 1171.452148 1170.657349 1170.80188 1171.807251 1172.991699 1174.010376 1175.04126 1176.011597 1177.071533 1178.28479 1179.635498 1181.235962 1182.846558 1186.070557 1189.765503 1193.568726 1197.523926 1201.614624 1205.57251 1208.772705 1209.574219 1209.689087 1209.499756 1208.815674 1208.053833 1207.43689 1207.053833 1206.737671 1206.870728 1206.867798 1207.509399 1207.512939 1207.713135 1207.515869 1207.347778 1207.023682 1206.625 1206.471313 1206.448975 1206.419922 1206.623901 1206.996094 1207.315918 1207.972046 1208.242065 1211.604248 1218.48645 1220.915405 1221.683594 1222.176392 1221.83728 1221.486572 1222.14624 1222.729248 1222.577271 1221.970581 1222.123413 1225.01355 1226.130859 1226.626221 1227.237549 1228.819214 1229.992432 1231.076904 1231.109863 1230.777832 1236.165894 1244.685059 1250.975952 1258.833862 1269.562744 1281.765015 1293.717651 1300.504272 1303.876099 1302.511719 1300.996216 1300.407593 1301.08252 1301.684692 1301.805908 1301.37146 1300.899536 1300.483276 1300.223389 1299.710449 1298.763062 1297.114624 1294.982544 1294.521484 1293.284546 1288.466064 1283.513428 1280.727295 1278.880981 1279.735352 1279.153442 1288.331055 1287.132202 1276.848877 1262.948853 1257.320923 1254.177612 1246.50415 1246.607178 1238.74585 1220.019775 1204.145996 1192.686646 1211.533691 1226.872803 1234.676392 1237.817749 1239.275635 1237.703003 1235.201416 1231.702271 1225.043335 1214.083984 1216.302979 1228.302124 1235.035645 1235.13147 1230.078247 1219.640869 1223.42627 1226.967896 1233.818604 1243.71167 1247.958496 1249.719727 1248.042969 1239.318237 1228.011841 1218.982666 1213.012451 1206.047241 1196.361816 1187.148193 1177.94458 1167.365479 1156.818726 1156.529907 1163.776001 1169.175537 1170.317749 1167.741455 1162.29248 1160.630249 1174.063843 1183.027588 1180.410034 1173.804565 1163.513672 1157.367554 1158.856079 1171.084717 1183.074341 1185.616455 1178.332642 1171.753418 1162.27124 1161.778931 1160.508423 1150.01001 1138.951294 1132.883423 1129.355957 1126.133545 -1314.769165 1309.065063 1308.942017 1300.654419 1283.446045 1274.916382 1272.842285 1268.371948 1261.400879 1251.207642 1236.59314 1222.248169 1211.590332 1202.868896 1195.882812 1185.300415 1173.374634 1167.321533 1164.058228 1163.432617 1164.373047 1166.740601 1170.261353 1175.849365 1184.885864 1196.562622 1215.055908 1233.865723 1245.617432 1248.180786 1248.710938 1260.118774 1277.102295 1288.282471 1301.709106 1312.905762 1329.557739 1346.366455 1358.811035 1360.160645 1357.87793 1351.634277 1341.813721 1333.016724 1324.144531 1315.363647 1310.311035 1306.684937 1299.77417 1293.284668 1284.954712 1277.856689 1269.312134 1264.598755 1272.43042 1277.437866 1283.79895 1289.830078 1293.584839 1298.107666 1303.678101 1307.561401 1308.610229 1307.44458 1305.906738 1301.515137 1296.684326 1290.663818 1283.67041 1275.868774 1268.079346 1267.278687 1274.065918 1281.076904 1285.28772 1285.417603 1283.758057 1283.280396 1282.704346 1281.998169 1280.12561 1276.408325 1271.864502 1267.77832 1269.25415 1270.604126 1269.752808 1265.93457 1263.823242 1268.650635 1269.524292 1268.068604 1263.424683 1257.273071 1254.582397 1253.158569 1253.349976 1254.078613 1255.26123 1255.548584 1255.265869 1254.47998 1252.283936 1250.289795 1250.072876 1250.251221 1251.012939 1252.377808 1253.419922 1254.153564 1253.906372 1256.277222 1266.593018 1271.789917 1275.678589 1279.688354 1282.945312 1286.26123 1289.585083 1291.878174 1292.913818 1293.307251 1294.253418 1294.804565 1295.345215 1296.008789 1296.842285 1297.867188 1298.869019 1299.791626 1300.737183 1301.581421 1302.393677 1303.260498 1305.451904 1309.385498 1314.182129 1317.707886 1320.630127 1321.280029 1320.582031 1318.093628 1316.078979 1313.036987 1310.325073 1307.828979 1305.554688 1304.942383 1306.355713 1307.380249 1307.230591 1306.521606 1305.136108 1296.705933 1289.76355 1282.664062 1278.320801 1275.325928 1271.199463 1267.648682 1269.714233 1273.494507 1273.962402 1271.408447 1264.817871 1255.860107 1250.859985 1246.69812 1243.284058 1240.262817 1239.819458 1240.918091 1242.907593 1248.06189 1264.360474 1280.138672 1289.910522 1288.242676 1285.937866 1284.759277 1283.356201 1282.345215 1280.705688 1280.145264 1281.035278 1282.187988 1282.25769 1281.489868 1275.030396 1267.921997 1268.004272 1268.793091 1269.93689 1268.902466 1263.745361 1258.842896 1263.622803 1265.486816 1260.33374 1255.875854 1250.01709 1250.851196 1252.984863 1255.921631 1258.673706 1261.015503 1262.810059 1264.028076 1264.749634 1265.420898 1265.871948 1265.780273 1264.937012 1263.337769 1261.428955 1259.126221 1256.859985 1255.663818 1254.516846 1254.094971 1253.618896 1253.173584 1252.339478 1251.663818 1251.348022 1250.682373 1249.710205 1247.399658 1244.466919 1243.650513 1243.558594 1245.019653 1245.968018 1245.900757 1244.577148 1243.764282 1244.104858 1244.128662 1244.188843 1245.022461 1246.021606 1245.936768 1244.523438 1242.526489 1240.883301 1239.341309 1237.937378 1236.286011 1234.509399 1232.586914 1231.650513 1231.598267 1232.317627 1234.752197 1237.208008 1238.773804 1239.867432 1240.796143 1242.678589 1244.432129 1244.832642 1244.60437 1243.348389 1242.983276 1243.360718 1244.203979 1244.799561 1244.498413 1241.515259 1237.799072 1235.047363 1233.281006 1231.512817 1229.60437 1227.288818 1225.533691 1221.314697 1221.580688 1221.419556 1220.920288 1221.301514 1221.469849 1221.158203 1220.966187 1221.279785 1221.908081 1222.467285 1222.349731 1221.519287 1220.359619 1219.228638 1218.541992 1218.84668 1219.05957 1219.246582 1219.672729 1220.41333 1221.064087 1221.197266 1221.116089 1220.853394 1220.487915 1220.130859 1219.476196 1217.583252 1214.776733 1212.526611 1209.939819 1208.581421 1208.198242 1208.043457 1207.603638 1207.286743 1206.748291 1205.720337 1204.454468 1203.324341 1202.359497 1201.661621 1200.932007 1200.371216 1199.723511 1199.139893 1198.569824 1198.002319 1197.530884 1197.172363 1196.829956 1196.39624 1196.065308 1195.833618 1195.374878 1194.023804 1192.470703 1191.040405 1189.69458 1188.408691 1187.143921 1186.216919 1185.396484 1184.643555 1183.754517 1182.02063 1180.253784 1180.193237 1179.818726 1179.575684 1179.925903 1180.887451 1182.349487 1183.134766 1183.317017 1183.185059 1184.240967 1185.679077 1186.294067 1186.560547 1187.011963 1187.99292 1189.580322 1191.2677 1191.918457 1191.868652 1191.864502 1191.984497 1192.632568 1193.420288 1194.557983 1195.67981 1196.496826 1196.71875 1196.750977 1196.597534 1196.067261 1189.369873 1183.601074 1182.073853 1183.128174 1183.755859 1183.94397 1184.255127 1184.660889 1185.193726 1185.784302 1186.319824 1186.686768 1186.965454 1187.14856 1187.189697 1187.101074 1186.840942 1186.666748 1186.377075 1186.279907 1186.153564 1185.958984 1185.814941 1185.678467 1185.70105 1185.858765 1186.48291 1187.269165 1188.028931 1188.672607 1189.202271 1189.488525 1189.577881 1189.578491 1189.439087 1189.355469 1189.236206 1189.111328 1189.003174 1188.704712 1188.42688 1187.863647 1187.353149 1186.712158 1186.126099 1185.498291 1184.828125 1183.993408 1182.938232 1182.339355 1181.943604 1181.525391 1180.880249 1180.043701 1179.118286 1178.262329 1177.452148 1176.75 1175.911621 1175.138672 1174.695312 1174.631958 1174.748413 1174.801514 1174.753418 1174.311523 1173.630005 1172.606689 1171.312866 1170.892822 1170.664307 1171.336792 1172.575195 1173.540283 1174.439697 1175.32666 1176.515625 1177.77063 1179.274414 1180.773926 1182.323364 1184.796631 1188.029419 1191.528564 1194.740967 1198.554443 1202.823608 1206.575073 1209.454102 1210.071045 1210.48645 1210.824463 1211.175171 1211.078247 1210.639526 1210.213501 1210.13147 1209.653564 1208.410278 1207.825684 1207.866699 1207.878052 1207.543945 1207.355347 1207.060059 1206.599121 1206.507202 1206.268066 1206.043823 1205.906494 1206.164429 1206.462158 1206.637329 1208.564331 1214.211792 1218.582031 1218.949951 1219.230469 1218.951782 1218.523315 1218.688232 1218.947876 1218.732422 1219.349487 1220.973633 1222.938232 1223.400635 1223.059937 1223.292603 1226.311646 1229.751465 1231.717651 1233.302979 1237.911011 1244.790161 1250.340576 1257.199463 1267.849976 1275.591431 1284.944458 1295.33313 1304.172119 1306.52832 1305.94165 1304.574097 1304.309692 1304.416016 1303.948242 1303.558472 1302.861694 1302.237671 1302.10791 1302.171143 1301.777954 1300.780273 1299.692139 1298.230713 1296.292358 1293.799805 1291.895874 1291.999756 1288.145752 1281.051758 1269.390503 1271.575073 1278.801636 1281.197632 1275.306396 1264.629761 1249.331665 1235.635132 1229.37439 1224.267822 1215.397583 1209.784302 1198.934082 1201.889893 1222.115112 1237.048706 1244.755493 1247.547729 1249.743774 1249.633057 1247.271606 1242.536865 1235.47229 1223.118896 1219.933838 1234.440674 1243.225952 1244.026733 1238.098389 1230.32605 1230.925293 1234.41272 1241.134766 1250.266602 1257.044678 1257.907959 1247.038696 1235.255493 1223.667847 1215.344727 1206.908691 1200.166748 1192.124023 1185.111206 1175.742798 1164.659546 1156.35791 1161.506958 1172.570679 1179.126831 1180.237915 1176.331543 1171.20752 1167.892212 1175.888672 1186.504761 1185.805176 1179.746094 1170.321533 1163.161743 1161.152222 1171.067627 1181.991089 1192.231689 1187.355469 1180.971436 1173.807007 1168.321655 1158.802246 1147.535645 1140.220947 1134.723267 1131.819946 1128.968628 -1293.818726 1286.453003 1292.040771 1283.32959 1270.061157 1253.393311 1253.434204 1251.201538 1248.110474 1243.63501 1229.387939 1214.297729 1205.254028 1194.128662 1182.348999 1174.192871 1168.283203 1164.621094 1164.52417 1165.748535 1167.368408 1170.497437 1176.470947 1185.318604 1193.26062 1205.821899 1224.411865 1238.828735 1253.669678 1267.577759 1271.422974 1273.270508 1286.470337 1300.33374 1313.279419 1325.756836 1339.851685 1355.500366 1361.275879 1362.472534 1356.172852 1346.810669 1336.395752 1325.813599 1319.322632 1314.155762 1308.497559 1303.915771 1293.32019 1289.925415 1282.946289 1275.858032 1267.239136 1270.36499 1278.257446 1283.576416 1288.547241 1294.395264 1298.556152 1303.379272 1307.747437 1310.53894 1311.557739 1309.580444 1305.488037 1302.725952 1299.769775 1295.348022 1289.014771 1279.279663 1267.584961 1271.01062 1280.561035 1287.175781 1289.456055 1288.661011 1287.182983 1286.149902 1285.121094 1284.262695 1282.736572 1280.845825 1276.531372 1271.425293 1272.906616 1273.872681 1271.568115 1266.604492 1266.463257 1269.861328 1272.094238 1271.201904 1268.846313 1261.324341 1255.740234 1254.359619 1255.059326 1257.312012 1262.700684 1264.615967 1262.012817 1258.387817 1255.085571 1251.973389 1250.903687 1251.737793 1252.998413 1253.596924 1255.786133 1254.876709 1254.404663 1254.094482 1254.684082 1260.771118 1267.261841 1271.504395 1275.564087 1278.716675 1282.114014 1285.244385 1287.719971 1290.952881 1294.050659 1295.089233 1295.845703 1296.592163 1297.603638 1298.864258 1300.13562 1301.27771 1302.252319 1303.207886 1303.630981 1304.269531 1306.758545 1311.026978 1315.828369 1319.102539 1322.93103 1329.610718 1328.656494 1323.372192 1318.966309 1315.724243 1312.200928 1309.061401 1306.781006 1306.497681 1307.356934 1308.073486 1307.93396 1307.050049 1305.633057 1297.447754 1290.498169 1284.356079 1277.419312 1269.226562 1266.173584 1265.640503 1265.583374 1266.390869 1266.239014 1262.526367 1257.320068 1253.780029 1249.939575 1246.731689 1243.406372 1240.166504 1241.430542 1242.284912 1244.791382 1255.812866 1272.300171 1287.973511 1294.06604 1291.095459 1288.509888 1286.727051 1285.431274 1284.014648 1281.798218 1280.47644 1280.561523 1281.76123 1282.372314 1281.979736 1278.762817 1272.07959 1270.610596 1270.725098 1270.501221 1268.596436 1265.480835 1265.582031 1269.394653 1267.930908 1260.257935 1251.961426 1251.899414 1253.601929 1255.811279 1256.380005 1259.540405 1263.119751 1264.680054 1265.387939 1265.725708 1266.217651 1267.075073 1267.662354 1267.202881 1265.847656 1263.564331 1261.178711 1258.96582 1256.908325 1255.604614 1256.175415 1256.027344 1255.567871 1254.772217 1253.829102 1254.096436 1253.955566 1253.338257 1251.606812 1247.966187 1245.914062 1244.051392 1245.030518 1246.973022 1247.049316 1245.927734 1244.359863 1244.36731 1244.746582 1244.439819 1244.634521 1246.274414 1245.988647 1244.096802 1242.332642 1241.115601 1239.879517 1238.450195 1236.648682 1233.892578 1231.795532 1232.291992 1233.090454 1234.544189 1237.78186 1240.641357 1241.590454 1241.332275 1241.502075 1242.36145 1243.838501 1244.887207 1245.08252 1244.499512 1243.654541 1244.017334 1244.768188 1244.897217 1244.011719 1239.452148 1235.064697 1232.14624 1229.902954 1227.236694 1223.584839 1223.499268 1222.416016 1222.449707 1223.129517 1223.522949 1223.21875 1223.163452 1223.247192 1223.033813 1222.938477 1223.116089 1223.523682 1223.621826 1223.162476 1221.925659 1220.118896 1219.342407 1219.803955 1220.275879 1220.494873 1220.828857 1221.008057 1221.57373 1221.668213 1221.546509 1221.356079 1221.046875 1220.616211 1220.064697 1219.539429 1217.788208 1214.99353 1212.636963 1210.237061 1208.859497 1208.472412 1208.234253 1208.060791 1207.893921 1207.514893 1206.171509 1204.223511 1202.634766 1201.438354 1200.695068 1200.101929 1199.463501 1198.841797 1198.322021 1197.775879 1197.227905 1196.838135 1196.489746 1196.050049 1195.669312 1195.383057 1194.930298 1194.00415 1192.893677 1191.914185 1190.756836 1189.512817 1188.208374 1186.816162 1185.758301 1184.807251 1184.216431 1183.574463 1181.272827 1181.115234 1181.888184 1181.727783 1180.705566 1180.199829 1181.062378 1183.217651 1184.084595 1184.348389 1184.438843 1185.470093 1186.817993 1187.717285 1188.409668 1189.372681 1190.834717 1192.837036 1194.834473 1194.645142 1193.438721 1193.536621 1193.905273 1193.761353 1193.853638 1194.4823 1195.45166 1196.760864 1196.983887 1196.901855 1196.366211 1195.442871 1191.807983 1186.701904 1184.661133 1183.216309 1183.142944 1183.720825 1184.187866 1184.678711 1185.369751 1186.055298 1186.648926 1187.166138 1187.512939 1187.737671 1187.858276 1187.825684 1187.668579 1187.529297 1187.414307 1187.335327 1187.222168 1187.131714 1187.02124 1187.001343 1187.149658 1187.431396 1187.907227 1188.465454 1189.039795 1189.61145 1190.082764 1190.403442 1190.533447 1190.552612 1190.510498 1190.406616 1190.319092 1190.079956 1189.785889 1189.595703 1189.215698 1188.77478 1188.151001 1187.439697 1186.777588 1186.103516 1185.37793 1184.433716 1183.549927 1183.052979 1182.764526 1182.342773 1181.673828 1180.793335 1179.8927 1179.149048 1178.559082 1177.938599 1177.32605 1176.682861 1176.187866 1175.998779 1175.945435 1175.828857 1175.677612 1175.070557 1174.365723 1173.354126 1172.386963 1172.119629 1171.263672 1170.977783 1172.143799 1172.780884 1173.55835 1174.63501 1175.876831 1177.316528 1178.703735 1180.17749 1181.629028 1183.187256 1186.208618 1189.050781 1192.21228 1195.12854 1199.2323 1203.886963 1207.925415 1210.0802 1210.823364 1211.899902 1213.859375 1215.577637 1215.522705 1214.584961 1212.611816 1210.483276 1208.962769 1207.888306 1207.598145 1207.466309 1207.764893 1207.541016 1207.24707 1207.255493 1206.730835 1206.175903 1205.799072 1205.429321 1205.245605 1205.403931 1205.735107 1206.865845 1209.942871 1213.470093 1215.349854 1216.270386 1216.5448 1216.78418 1216.716064 1217.158569 1218.662964 1220.410889 1221.497681 1221.562988 1220.924683 1220.05127 1219.509399 1225.313232 1230.578125 1233.54895 1235.857056 1241.015259 1246.185791 1252.492065 1259.508911 1267.218628 1274.588013 1284.536621 1293.995239 1302.500366 1307.628052 1307.105103 1306.817383 1306.560303 1305.89563 1305.581543 1305.218994 1304.257202 1303.366455 1303.359375 1303.959351 1303.919434 1303.275879 1302.641846 1301.152588 1299.000488 1296.923584 1295.351074 1294.920166 1293.737915 1283.748169 1275.030396 1268.155518 1270.359009 1273.412231 1270.473999 1261.617798 1249.811646 1231.007568 1230.425659 1228.190674 1224.166748 1217.590332 1204.124268 1211.243774 1228.389771 1244.474609 1249.29541 1253.956177 1257.568359 1259.077881 1256.594604 1251.249756 1243.697876 1234.650391 1228.447144 1240.970825 1251.667114 1253.244751 1245.324341 1238.056396 1238.122314 1241.478271 1248.132935 1257.477051 1260.22998 1257.62915 1245.421143 1234.901367 1223.562988 1214.692139 1207.397949 1198.504395 1190.973145 1184.359009 1175.58606 1166.144653 1162.781616 1169.244507 1179.741333 1186.682373 1187.177856 1183.364868 1176.531372 1169.701538 1176.807373 1187.368286 1188.655884 1184.588501 1176.227539 1168.422363 1169.026611 1177.199219 1189.514648 1201.233032 1200.098145 1190.250122 1181.090332 1172.611084 1162.721069 1154.199585 1147.097656 1139.962036 1133.784424 1131.033569 -1270.909302 1269.710815 1268.809814 1264.579834 1253.537354 1232.365112 1224.066895 1222.416138 1223.548584 1231.275757 1219.581177 1205.467773 1193.356323 1185.738403 1173.742554 1168.868042 1165.925293 1164.604492 1166.468872 1168.886963 1170.988159 1173.106323 1179.835815 1189.990723 1203.234863 1212.522217 1223.559937 1239.336182 1254.802734 1274.574951 1288.820801 1296.75293 1299.929932 1309.540405 1324.962158 1335.951782 1350.015259 1358.702515 1364.33252 1366.724243 1358.971069 1348.836304 1337.316528 1331.237061 1315.898315 1312.293701 1304.830444 1301.974487 1298.441895 1295.104492 1287.456177 1276.130005 1266.331421 1272.692383 1281.604858 1287.852661 1291.16748 1297.18103 1302.397217 1307.394043 1311.919922 1314.883789 1315.439453 1312.239746 1306.002808 1306.717407 1306.302979 1299.071045 1290.999512 1279.346802 1266.882324 1276.617798 1287.980469 1293.978882 1293.30542 1291.626953 1289.654175 1288.477295 1287.44165 1286.31897 1284.902466 1283.263916 1281.119995 1277.816772 1278.787231 1278.730347 1275.509277 1266.741577 1266.809937 1271.210205 1275.203491 1274.682373 1271.880493 1266.814819 1257.512085 1254.542236 1257.103638 1265.161133 1272.42981 1273.990723 1270.723999 1264.83728 1259.202637 1254.804077 1251.938965 1253.393921 1256.171631 1256.993652 1259.001343 1258.37439 1256.899414 1256.087158 1255.635742 1255.276611 1256.859985 1264.151489 1269.975586 1273.49585 1276.533325 1278.769775 1282.141113 1287.770264 1292.76001 1295.461304 1295.848022 1296.858521 1297.951782 1299.456421 1301.381104 1302.842529 1304.075439 1304.984253 1305.53064 1305.844116 1308.325684 1312.012695 1315.393677 1317.083984 1321.340088 1327.294556 1331.165283 1328.092407 1320.288086 1316.237549 1312.060791 1308.822754 1306.555908 1307.071533 1307.725098 1308.559448 1308.504517 1307.755371 1305.314087 1297.471924 1291.087891 1286.075195 1282.530518 1280.344604 1269.914429 1266.069946 1264.635986 1263.151489 1259.686035 1255.512817 1253.902832 1251.54895 1248.836426 1246.113403 1242.560791 1241.573486 1244.786255 1244.086792 1251.23999 1262.504028 1276.105591 1291.547363 1293.790771 1291.638794 1290.144897 1288.674316 1287.179321 1285.257446 1282.746338 1280.707397 1280.553345 1281.535156 1282.491211 1281.141724 1278.089722 1274.868286 1273.105835 1271.599609 1269.279907 1268.102417 1267.585815 1267.450195 1269.625366 1267.284058 1259.608521 1251.479248 1253.32251 1255.850098 1258.716553 1260.387695 1263.173828 1265.767944 1266.920654 1266.859253 1266.542114 1267.043945 1268.344482 1269.171021 1269.339233 1267.889893 1265.96167 1263.811646 1261.348877 1258.301636 1257.670898 1258.857422 1259.292725 1258.477417 1256.675781 1255.335938 1257.248901 1257.190552 1256.568604 1256.338501 1255.081177 1251.216064 1247.516113 1247.275391 1248.506958 1248.589966 1247.615967 1246.821777 1246.685669 1246.623657 1246.421021 1246.516968 1246.661621 1246.041748 1244.410156 1242.836548 1241.925659 1240.822144 1239.413208 1237.873901 1235.571899 1234.393799 1236.035889 1236.990112 1238.52478 1241.135864 1244.276245 1244.025269 1242.656738 1242.328613 1242.720825 1244.092407 1245.058716 1245.446533 1245.169678 1244.591309 1244.680298 1245.063599 1245.002319 1242.056519 1237.613281 1232.145508 1225.904541 1225.620361 1224.777588 1226.054199 1226.643433 1226.028076 1226.003906 1225.989746 1225.884766 1225.560425 1225.174194 1225.132935 1225.060303 1224.925903 1225.090088 1225.226196 1225.046875 1224.627197 1223.55542 1221.811279 1221.128174 1221.389526 1221.716309 1222.042603 1222.210083 1222.277832 1222.195801 1221.974854 1221.766479 1221.444458 1221.166992 1220.672241 1219.976562 1219.46167 1217.573975 1214.46167 1212.190552 1210.174438 1208.864502 1208.452026 1208.219482 1208.074585 1207.948608 1207.730103 1205.894531 1203.213135 1201.057129 1199.82959 1199.049072 1198.686035 1198.33313 1197.774902 1196.994019 1196.288208 1195.661865 1195.408569 1195.271118 1194.988159 1194.67627 1194.322266 1193.755127 1193.075073 1192.385864 1191.476074 1190.452026 1189.374634 1187.980713 1186.370972 1184.845459 1183.962769 1183.436279 1182.82373 1181.656494 1182.500854 1183.380371 1183.47937 1182.714111 1181.486572 1180.851074 1183.065674 1184.290161 1185.007324 1185.673706 1186.896118 1187.995239 1189.145508 1190.182007 1191.384277 1192.808105 1194.529907 1195.651978 1195.515259 1194.384277 1194.796509 1195.782959 1195.122437 1194.85437 1195.386841 1195.679077 1197.352661 1197.403931 1197.082886 1196.032471 1194.68457 1192.34021 1189.288452 1186.732178 1185.011108 1184.208374 1184.381226 1184.62439 1184.923462 1185.619873 1186.312866 1186.972412 1187.54248 1188.053955 1188.442505 1188.665283 1188.704224 1188.743774 1188.596191 1188.587646 1188.468018 1188.4375 1188.32373 1188.415527 1188.375977 1188.526611 1188.866211 1189.324585 1189.824829 1190.191162 1190.561157 1190.940308 1191.194824 1191.555664 1191.582275 1191.459351 1191.37915 1191.157837 1190.962769 1190.70166 1190.383789 1189.999756 1189.527344 1188.834351 1188.182861 1187.423828 1186.659058 1185.845947 1185.082031 1184.351074 1183.905273 1183.536499 1183.163574 1182.50293 1181.575562 1180.688354 1180.055298 1179.556885 1179.042236 1178.462036 1177.929321 1177.567505 1177.376709 1177.318848 1177.156616 1176.816895 1176.154663 1175.348389 1174.525146 1173.695923 1172.936523 1171.752686 1170.619507 1170.937012 1171.45105 1172.630493 1173.858154 1175.317871 1176.677246 1178.095947 1179.451538 1180.694458 1182.171387 1184.115845 1186.883789 1189.693604 1192.615845 1195.52771 1200.098633 1204.898071 1208.517334 1210.344727 1212.090942 1215.155396 1219.17334 1219.789429 1218.561646 1213.926392 1210.957886 1209.174927 1207.877319 1206.939331 1206.966797 1207.617798 1207.711548 1207.560059 1207.515137 1207.404663 1206.543823 1205.638306 1204.985962 1204.567017 1204.664795 1205.046997 1205.982178 1207.30249 1209.515503 1211.637817 1213.322998 1214.145874 1214.505493 1214.885132 1215.827393 1218.573364 1220.049438 1219.931274 1219.212402 1219.111938 1219.296875 1221.628418 1225.648926 1230.990112 1233.891602 1236.819702 1241.196777 1245.187866 1250.366211 1255.813354 1261.781616 1268.402344 1280.585693 1288.448975 1296.687988 1306.143677 1307.790283 1307.727905 1307.371216 1307.052979 1306.479858 1305.967163 1305.260742 1304.034668 1304.445068 1305.210449 1305.674072 1305.449341 1304.809692 1303.791504 1301.657471 1300.031494 1298.13147 1296.722656 1294.546021 1288.87439 1280.226318 1270.896973 1264.846802 1263.437012 1260.805542 1250.897705 1242.329834 1241.368896 1244.028931 1242.686157 1238.643677 1230.648071 1210.929932 1214.114624 1230.019897 1245.409912 1251.92981 1258.345093 1265.235229 1269.292114 1266.556519 1260.141479 1252.252441 1242.452148 1235.902954 1245.704956 1258.662109 1261.68396 1253.013794 1245.463989 1243.371582 1249.156982 1256.087524 1260.484375 1260.515381 1249.933228 1240.263794 1230.448853 1222.022339 1212.462769 1204.153198 1194.977539 1185.37207 1181.581543 1180.232788 1173.051025 1171.41272 1173.636719 1184.678345 1192.197266 1194.956299 1190.908569 1183.995972 1175.891113 1179.408691 1190.334717 1193.322876 1188.583496 1180.332153 1171.011963 1173.579102 1181.968628 1191.639648 1207.206665 1210.131104 1194.444702 1181.438843 1173.60437 1165.662476 1158.511353 1155.418213 1146.077759 1135.78125 1132.132935 -1260.162231 1244.912842 1249.174438 1246.804932 1234.856323 1217.675903 1204.525024 1202.875244 1202.686035 1212.022583 1208.714844 1194.018188 1180.270996 1171.244873 1168.460449 1166.600464 1164.919189 1166.275757 1169.04126 1172.307495 1175.800049 1179.123657 1180.59668 1187.86731 1199.601807 1209.367554 1216.679443 1232.786987 1249.559937 1267.682861 1287.483887 1300.744141 1309.434814 1317.736206 1331.282959 1342.375 1355.665161 1362.224121 1367.940552 1367.638306 1360.813599 1352.835449 1345.018555 1336.43811 1321.997192 1314.957886 1311.618286 1308.553589 1306.676392 1302.251831 1292.869751 1279.356323 1267.140503 1275.609009 1285.735474 1293.592529 1295.799072 1299.940308 1305.267578 1311.229614 1316.663818 1319.257935 1318.386963 1316.045044 1314.798218 1310.588013 1306.348511 1296.042725 1284.43811 1274.196045 1267.838867 1283.151733 1294.637695 1296.54834 1296.147095 1293.855347 1291.759521 1290.546509 1289.428467 1288.543335 1287.31543 1285.520386 1282.752075 1280.333496 1282.484009 1282.801147 1281.870972 1266.810547 1266.2854 1273.691406 1280.262695 1278.175659 1274.822144 1269.882324 1258.024902 1254.589111 1260.320679 1271.697876 1282.841919 1281.818237 1278.026123 1273.335815 1267.211914 1257.802856 1253.566895 1254.628662 1263.326782 1266.7677 1263.585449 1261.5177 1259.947144 1258.871704 1258.541504 1258.18811 1256.494141 1258.552368 1264.587036 1269.180176 1271.849487 1273.686279 1277.56311 1281.896729 1286.039429 1290.514404 1294.683105 1297.018311 1297.026611 1299.069214 1302.631836 1304.456421 1305.642822 1306.539917 1307.230713 1308.21875 1309.966797 1312.236572 1314.590454 1315.925171 1317.184692 1322.18457 1325.095459 1323.130371 1318.122681 1313.900635 1309.658569 1306.242798 1303.657104 1306.145386 1307.844727 1308.868652 1308.68689 1308.199219 1305.844971 1299.029541 1292.033813 1289.560059 1287.161011 1283.876709 1276.078979 1267.724487 1265.352295 1262.667969 1259.003296 1255.5625 1252.894287 1250.473267 1248.000366 1245.25293 1241.400879 1244.915039 1248.694458 1253.383179 1259.352051 1266.546753 1279.857178 1293.369873 1295.36084 1293.869873 1292.496582 1290.903931 1289.220337 1287.428589 1285.074219 1283.13147 1282.410278 1283.282593 1282.581665 1280.025024 1278.233887 1276.454834 1274.704712 1272.293213 1268.37793 1270.325073 1269.867188 1269.219971 1270.659058 1266.631226 1259.777832 1252.212158 1254.220581 1257.319092 1262.978882 1264.597412 1266.627563 1268.742554 1269.015381 1268.246826 1267.652832 1268.080322 1269.72168 1270.947021 1270.925049 1269.4375 1268.734741 1266.549683 1264.088867 1263.057251 1262.685913 1263.432129 1263.884155 1262.489258 1259.522095 1257.302612 1259.819092 1260.597046 1260.322388 1259.936279 1258.894287 1256.560181 1254.057251 1251.973267 1251.021484 1250.561035 1250.20166 1249.768799 1249.531982 1249.476318 1248.833862 1248.255615 1247.537354 1245.859863 1243.991455 1243.613525 1243.283203 1242.13916 1240.547485 1239.41626 1239.14563 1240.48877 1242.437256 1242.401367 1242.036743 1242.751099 1244.804077 1244.696289 1243.968872 1242.968018 1243.454956 1244.612061 1245.501465 1245.875488 1246.005737 1245.95813 1245.793945 1245.442871 1243.136963 1239.659424 1236.432373 1232.532837 1226.509644 1229.046387 1231.830566 1231.386597 1231.180908 1231.467651 1230.791504 1229.358765 1228.607666 1227.887329 1227.445801 1227.149536 1226.961792 1226.784058 1226.795532 1226.956055 1226.828491 1226.574219 1225.853027 1224.815308 1223.872192 1223.613403 1223.616821 1223.656616 1223.407349 1223.018677 1222.594604 1222.040161 1221.59729 1221.255859 1221.107056 1220.73645 1219.881104 1218.664551 1216.366455 1213.355957 1211.17981 1209.666138 1208.497192 1208.049194 1207.781982 1207.67395 1207.592651 1206.490845 1204.279541 1201.605591 1199.022705 1197.337524 1196.692505 1196.710938 1196.555298 1195.831543 1195.232422 1195.063721 1194.953491 1194.907593 1194.803345 1194.630005 1194.327393 1193.876221 1193.358398 1192.816406 1192.091919 1191.361572 1190.550781 1189.455933 1188.129028 1186.352173 1183.812378 1183.116821 1182.73877 1182.132324 1182.584106 1183.362671 1184.175659 1184.523315 1183.933594 1183.226196 1182.525146 1181.582031 1183.198608 1184.945068 1186.607788 1188.314087 1189.682861 1190.676025 1191.571167 1192.911133 1194.12915 1195.245117 1195.857788 1195.907349 1195.433228 1195.463867 1196.296631 1196.239868 1195.879883 1196.469482 1197.511841 1198.050903 1197.937378 1197.479492 1196.297852 1194.800293 1193.025391 1190.880005 1188.517212 1186.783447 1185.96582 1185.714722 1185.277344 1185.655884 1186.104126 1186.816406 1187.536743 1188.203857 1188.830933 1189.259033 1189.705688 1189.926392 1189.838013 1189.852295 1189.861572 1189.720337 1189.667725 1189.651611 1189.60022 1189.609985 1189.779541 1190.18335 1190.626587 1191.016479 1191.416382 1191.728149 1191.953125 1192.282471 1192.542725 1192.612427 1192.57666 1192.508423 1192.250977 1192.00354 1191.706665 1191.391968 1191.023193 1190.562866 1189.835815 1188.994629 1188.178711 1187.398315 1186.58728 1185.900635 1185.152954 1184.647705 1184.287231 1183.816406 1183.213867 1182.332275 1181.487427 1180.945801 1180.396362 1179.828247 1179.465576 1178.960815 1178.737061 1178.728882 1178.719482 1178.5 1178.111328 1177.4552 1176.68689 1175.843872 1175.001709 1173.951782 1172.680786 1171.432007 1171.234375 1170.797729 1171.81665 1173.28186 1174.846313 1176.245117 1177.621582 1178.95813 1180.062256 1181.109619 1182.37146 1184.475952 1187.171021 1190.188965 1193.145264 1195.763672 1200.442505 1204.491333 1207.532349 1209.591675 1212.861694 1218.180054 1220.200195 1216.468262 1212.591187 1209.963989 1208.273804 1206.859131 1206.180054 1206.954346 1207.544312 1207.730347 1207.891235 1207.843262 1207.544556 1207.389771 1205.710327 1204.734009 1204.080444 1203.980103 1204.325073 1205.110962 1206.096191 1207.339844 1209.487427 1211.317871 1212.087158 1212.35437 1212.546387 1213.221924 1215.082153 1217.231934 1217.699463 1218.849976 1219.568604 1220.87146 1223.391724 1226.321167 1229.947876 1232.827881 1235.786377 1238.647949 1241.795654 1244.115356 1248.943115 1255.65271 1262.497803 1271.27356 1281.748657 1288.526611 1297.312866 1305.773438 1308.184326 1308.293213 1307.773315 1307.186523 1306.508423 1305.452515 1304.51709 1305.231689 1306.184448 1306.501465 1306.674561 1306.389893 1305.729248 1304.192993 1302.571045 1300.442261 1298.317627 1295.952271 1291.891846 1282.676025 1271.573242 1261.779907 1255.073853 1255.19104 1252.809082 1249.817383 1260.348633 1261.693726 1258.074463 1249.469604 1240.192261 1219.689331 1220.027222 1234.633423 1246.330078 1252.800415 1259.301758 1269.769897 1272.718018 1272.360474 1269.478394 1262.842163 1252.348145 1241.857056 1249.629028 1264.924438 1270.907349 1261.281738 1255.778198 1254.247192 1257.902832 1265.028198 1258.237061 1250.171631 1238.991333 1230.911621 1223.491333 1215.848755 1206.631714 1196.492798 1193.118164 1188.550171 1186.779297 1185.807373 1181.821533 1179.014893 1179.759399 1188.464111 1197.393311 1201.04895 1198.331787 1190.812866 1182.18042 1182.690918 1195.393921 1197.595825 1192.205688 1183.901855 1178.678345 1181.338989 1186.034912 1193.562256 1202.878662 1202.644043 1191.898438 1178.659912 1171.197144 1164.630371 1158.998901 1157.103516 1156.867188 1138.832153 1132.758789 -1247.69873 1228.646729 1234.845459 1235.555176 1214.905151 1208.79541 1196.126709 1189.371826 1188.045532 1190.00708 1183.97522 1172.891724 1168.72522 1167.219849 1166.188843 1165.404175 1166.322754 1168.779541 1171.014893 1176.450073 1181.685303 1186.330444 1187.308472 1187.896973 1193.550537 1200.753418 1208.777832 1221.627319 1238.594971 1254.631836 1273.800049 1287.847778 1307.673096 1318.447144 1327.579346 1343.021484 1355.590942 1363.221069 1373.596069 1367.413818 1361.166382 1355.800293 1347.860107 1340.653687 1330.044067 1322.439331 1320.114502 1317.157104 1312.332275 1305.503784 1292.480957 1279.960449 1267.884399 1281.980957 1292.894165 1297.781982 1300.165283 1302.262451 1307.581665 1315.37439 1321.559692 1324.52478 1322.837402 1320.764771 1319.079956 1310.23999 1301.882812 1291.224243 1280.473877 1271.745728 1272.632324 1287.690674 1300.152466 1301.187134 1299.241211 1296.909424 1294.916138 1292.364502 1291.428223 1291.056519 1289.811157 1288.12915 1286.476562 1285.758545 1286.262939 1284.993408 1282.473755 1267.19458 1266.949829 1276.763184 1283.812866 1281.645264 1278.56958 1271.489136 1258.953003 1254.559448 1261.288208 1273.200317 1284.041382 1293.102417 1290.717896 1282.812012 1272.741821 1262.03186 1255.383545 1253.92395 1269.029419 1269.5625 1266.90979 1264.582153 1263.022217 1262.061157 1261.972534 1261.901733 1260.879761 1259.218872 1258.394043 1262.511597 1266.571533 1267.321533 1271.211304 1275.287476 1278.221924 1280.539185 1282.310425 1289.00293 1292.428589 1294.754639 1303.449951 1305.771118 1306.860596 1307.715454 1308.331909 1309.15271 1310.442505 1311.987549 1313.403076 1314.605713 1316.096313 1317.52832 1318.992676 1316.844604 1313.540771 1309.34729 1305.671753 1303.078491 1298.05127 1305.690918 1307.730347 1308.827637 1308.604248 1308.269531 1308.000122 1306.628052 1301.488159 1294.353271 1291.121948 1285.378052 1279.014038 1271.870972 1267.494385 1263.460938 1260.04541 1257.045898 1253.650635 1249.743286 1246.973267 1244.45752 1242.86731 1247.894653 1252.774048 1258.169312 1264.031738 1271.787964 1284.368286 1295.935181 1298.796143 1297.324463 1295.0448 1292.241943 1290.923828 1289.685059 1287.988159 1286.410034 1285.506226 1285.139526 1283.698853 1281.821289 1280.052856 1278.164429 1277.070923 1275.476807 1273.073364 1273.931152 1275.097412 1274.75354 1271.471558 1266.440796 1260.414917 1252.717651 1254.539795 1262.624268 1269.212646 1268.473511 1269.036011 1270.512573 1270.98938 1270.169312 1269.4198 1269.508179 1271.380127 1272.629761 1272.685425 1272.052124 1270.809814 1267.977051 1266.592773 1266.921631 1267.791382 1268.532104 1269.331055 1267.579712 1265.119629 1263.410767 1264.419189 1265.326294 1264.703003 1263.416626 1261.463379 1258.942017 1255.927246 1254.400879 1253.413452 1252.809937 1252.793945 1252.57605 1252.671265 1252.492676 1251.665527 1250.504639 1249.20166 1247.093262 1244.996948 1245.162476 1244.606323 1243.140137 1241.573486 1241.106323 1241.536499 1243.462158 1245.037354 1245.181885 1244.613159 1243.348022 1244.950562 1245.265869 1244.488159 1243.594116 1244.140381 1245.278809 1245.692505 1246.031006 1246.364624 1246.658447 1245.686401 1242.745117 1239.085938 1236.012085 1233.314697 1232.320068 1227.516357 1231.819946 1233.059448 1233.135864 1233.229858 1233.126099 1232.567627 1231.835938 1231.132935 1230.112183 1229.458618 1229.050293 1228.657104 1228.372314 1228.500122 1228.612061 1228.691772 1228.61438 1228.35498 1227.553467 1226.567383 1225.924438 1225.50061 1225.059082 1224.430664 1223.709717 1222.862549 1221.900146 1220.861572 1220.744507 1220.768555 1220.37561 1219.023438 1216.662476 1214.180908 1211.474243 1209.832153 1208.656372 1207.653931 1207.220703 1206.798462 1206.428101 1205.770142 1204.764648 1203.125366 1200.545044 1196.84668 1195.428711 1195.241821 1195.242676 1195.277222 1195.262085 1195.124512 1195.015015 1195.029663 1195.052612 1195.036377 1194.768799 1194.229004 1193.875 1193.356567 1192.848022 1192.309204 1191.654053 1190.920898 1189.979858 1188.759277 1187.081665 1185.012817 1184.109985 1183.739746 1183.048462 1183.505737 1184.266968 1185.060913 1185.231079 1185.058716 1184.383789 1183.90271 1183.038574 1182.485596 1184.822998 1187.593384 1190.314331 1192.106445 1192.319946 1192.716431 1194.253296 1195.582886 1195.997314 1196.272583 1196.32959 1196.187012 1196.456787 1197.014404 1197.217285 1197.250122 1197.67041 1198.329468 1198.614746 1198.60144 1197.984253 1197.023071 1195.788696 1194.149292 1192.092041 1189.99231 1188.383423 1187.463013 1186.657104 1185.93335 1186.107178 1186.557007 1187.343628 1188.297485 1189.156006 1189.839111 1190.485596 1190.979858 1191.143799 1191.233154 1191.230103 1191.192383 1190.998535 1190.959351 1190.834839 1190.682983 1190.728271 1190.869629 1191.262695 1191.752075 1192.170898 1192.619019 1192.911133 1193.120972 1193.37207 1193.680786 1193.688354 1193.688965 1193.522949 1193.29248 1193.074219 1192.779419 1192.471924 1192.116821 1191.554199 1190.935425 1190.031128 1189.036499 1188.209595 1187.360474 1186.626953 1185.87915 1185.253296 1184.839355 1184.30127 1183.689941 1183.029419 1182.272583 1181.553711 1181.005981 1180.490234 1180.109131 1179.779419 1179.826416 1179.892578 1179.987915 1179.904907 1179.60022 1179.070435 1178.262573 1177.398071 1176.426514 1175.214478 1174.080811 1173.053223 1172.040161 1170.9104 1171.499878 1173.142944 1174.641235 1176.031982 1177.360474 1178.647827 1179.894043 1180.899536 1181.686523 1182.565308 1184.598999 1188.052612 1191.478882 1193.698486 1195.696045 1199.800049 1203.269897 1206.029053 1207.968994 1209.613159 1210.820679 1209.916016 1209.127441 1207.677979 1206.773438 1205.279907 1205.241455 1206.867432 1207.534302 1207.61377 1207.849976 1208.012573 1208.084961 1207.740112 1206.18396 1204.493286 1203.636475 1203.376587 1203.614868 1204.369263 1205.519287 1207.469238 1209.374146 1210.475952 1210.714844 1210.481689 1210.085449 1209.768555 1209.856689 1214.552368 1217.987915 1220.30481 1222.690796 1225.029297 1226.182983 1227.458862 1228.844849 1230.958252 1233.258545 1235.748657 1238.072266 1240.498291 1243.841553 1250.810547 1256.757202 1262.941284 1270.754639 1280.079956 1287.619019 1294.224976 1303.04248 1308.266602 1307.964844 1307.694702 1307.243774 1306.359985 1305.162842 1305.955566 1306.927612 1307.402466 1307.564209 1307.506348 1306.75708 1305.791016 1304.467529 1302.274902 1299.026855 1296.082642 1293.008423 1282.414062 1268.062744 1265.325317 1267.097656 1267.70752 1263.414795 1261.125854 1269.993408 1269.874512 1265.10144 1257.447754 1245.290527 1223.921997 1225.422485 1246.577881 1253.305786 1257.992798 1262.08313 1267.786011 1274.714478 1277.22522 1276.786621 1273.328003 1265.462158 1254.217163 1254.419189 1272.866211 1279.589722 1271.255859 1269.037476 1269.308472 1270.828125 1260.437134 1248.665405 1239.323853 1231.069458 1224.859375 1217.946411 1212.802979 1208.390259 1202.127319 1196.963623 1196.314819 1192.249878 1189.802124 1186.519287 1184.357178 1185.099487 1191.678101 1201.122559 1208.332275 1205.858643 1198.821655 1189.841919 1186.591064 1197.767578 1200.183838 1195.180786 1184.863281 1183.373779 1187.876953 1193.824341 1197.291138 1199.223511 1196.700684 1186.034912 1174.71582 1167.412476 1161.618042 1156.867188 1153.61792 1151.078857 1140.983032 1133.447998 -1235.745483 1219.234131 1215.371582 1227.529053 1212.275635 1192.405029 1185.822998 1179.932861 1177.353149 1169.628906 1168.236816 1167.29126 1166.446045 1166.402344 1167.518555 1170.287964 1172.227173 1173.579346 1175.381592 1180.363525 1189.366211 1199.461304 1200.203369 1193.905029 1199.03772 1204.065063 1205.302979 1215.007202 1226.590332 1242.925903 1261.155396 1273.779785 1288.925903 1303.396851 1320.698364 1342.413818 1356.615234 1364.244873 1374.036987 1366.274536 1359.512573 1352.850708 1344.699219 1339.046387 1334.169678 1330.596191 1324.60083 1320.334717 1315.313477 1305.496948 1292.568115 1278.148315 1273.501587 1287.212036 1297.403442 1303.857178 1305.697388 1305.244873 1310.134766 1318.695679 1327.994141 1329.774536 1327.326904 1322.539673 1317.707764 1310.326904 1302.923706 1295.176636 1285.144775 1277.539307 1276.62915 1289.487671 1306.234985 1304.922119 1302.892822 1301.072754 1298.339844 1295.472656 1294.501831 1294.123535 1292.057617 1290.86377 1290.405518 1290.746216 1290.961792 1287.33313 1282.187134 1268.85022 1266.94397 1278.133423 1284.703613 1284.95752 1282.992432 1276.854248 1265.300537 1256.012573 1259.581787 1270.620239 1277.529053 1289.46875 1290.699707 1283.437988 1274.638428 1264.696777 1256.947876 1254.238403 1268.349121 1269.943848 1268.483887 1266.922241 1265.47644 1264.551758 1265.575317 1267.226929 1267.120972 1266.411987 1265.282959 1262.14209 1260.614868 1262.711548 1266.140747 1269.299561 1272.027222 1274.162109 1275.83374 1278.544678 1283.817749 1291.187134 1303.360596 1306.762329 1307.639282 1308.059814 1308.634155 1309.362671 1310.305176 1311.406006 1312.538208 1313.566528 1314.508301 1315.319214 1314.53186 1312.079468 1308.969971 1305.222046 1301.451172 1297.195679 1291.814941 1300.507568 1306.642578 1308.114624 1306.560913 1307.493774 1308.303223 1308.810181 1308.104248 1303.117188 1294.558105 1287.9646 1282.637207 1274.812256 1268.18396 1265.018311 1260.809937 1257.311279 1253.15625 1248.333008 1245.692261 1242.553467 1245.745361 1250.487671 1255.783936 1261.066772 1267.69812 1275.262817 1287.709839 1302.063477 1303.789307 1300.504883 1297.59021 1294.417236 1293.458374 1292.481812 1290.53186 1289.002319 1288.005005 1287.437622 1285.707275 1283.185059 1280.995483 1279.22229 1279.655762 1279.741699 1277.445557 1278.505005 1281.084106 1280.631958 1274.684814 1267.574707 1261.264282 1253.893799 1254.642456 1264.243042 1269.607788 1270.59021 1271.48584 1272.518066 1273.361084 1273.019653 1272.685303 1272.858398 1273.891968 1274.885132 1275.200928 1274.662964 1273.270142 1269.979248 1268.984741 1270.095581 1271.123169 1271.590332 1271.952026 1270.819336 1268.734863 1267.075195 1268.898438 1269.841431 1268.874756 1267.204956 1265.196411 1261.478516 1257.458862 1255.904175 1255.129028 1255.32019 1255.319092 1255.619629 1255.672974 1255.340942 1254.047119 1252.590576 1251.352661 1250.002808 1248.491699 1247.432617 1246.050049 1244.102417 1242.64917 1242.533447 1242.875488 1244.078369 1245.431641 1246.069336 1245.765869 1245.00769 1245.818604 1245.825073 1245.126465 1244.168335 1244.50708 1245.652832 1245.855103 1246.006348 1245.961792 1245.187622 1241.341919 1234.674194 1232.921509 1232.162354 1229.356445 1228.612061 1228.756226 1233.335449 1233.990356 1234.39856 1234.442261 1234.328247 1233.863525 1233.325684 1232.77478 1231.984863 1231.013672 1230.5896 1230.340942 1230.020142 1229.949097 1230.293335 1230.575562 1230.792114 1230.791504 1230.171143 1228.980713 1228.239868 1227.259888 1226.288574 1225.340454 1224.214722 1223.008545 1221.472778 1219.799316 1219.458496 1219.265503 1218.061401 1216.380859 1214.094727 1210.845947 1209.096802 1208.387695 1207.494019 1206.855225 1206.547729 1206.244263 1205.95459 1205.369507 1204.497681 1203.037964 1200.828247 1197.663208 1196.153442 1196.427124 1195.883057 1195.240356 1195.311279 1195.352417 1195.422363 1195.360474 1195.42688 1196.069946 1195.312622 1194.762451 1194.071777 1193.563599 1193.168213 1192.736572 1192.33606 1191.722046 1190.88916 1189.770996 1188.569946 1187.216919 1186.221436 1185.489868 1184.896606 1184.954834 1185.504272 1185.976929 1186.086304 1185.833862 1185.35376 1184.629883 1183.894043 1182.757812 1185.011475 1188.660522 1192.522339 1195.265381 1194.195068 1193.630249 1194.564575 1195.716553 1196.141846 1196.414185 1196.59314 1196.887817 1197.409424 1197.832642 1198.238525 1198.447266 1198.778809 1199.250732 1199.398926 1199.19751 1198.456055 1197.565796 1196.291138 1194.710571 1192.823608 1191.102783 1189.631958 1188.479858 1187.672729 1186.947632 1186.578003 1187.077148 1187.860474 1189.013062 1190.062866 1191.019409 1191.856689 1192.401001 1192.589966 1192.562256 1192.499512 1192.380005 1192.262207 1192.119873 1191.790039 1191.696289 1191.706177 1191.893311 1192.315063 1192.724365 1193.314453 1193.807373 1194.013428 1194.265625 1194.559814 1194.920654 1194.896484 1194.730103 1194.592285 1194.392822 1194.106079 1193.875244 1193.553955 1193.257812 1192.719849 1192.02356 1191.069824 1190.070312 1189.081177 1188.209473 1187.389282 1186.589233 1185.931763 1185.318604 1184.617798 1184.006836 1183.287598 1182.438721 1181.942139 1181.468506 1180.975708 1180.531494 1180.435547 1180.499756 1180.793579 1181.068481 1181.301758 1181.137329 1180.702148 1179.904053 1178.952881 1177.875854 1176.739258 1175.688232 1174.542969 1173.050659 1171.710327 1172.387939 1173.647217 1174.831055 1175.955933 1177.3573 1178.676147 1179.956299 1181.080566 1181.897217 1182.443237 1183.040161 1186.453613 1190.007446 1192.355591 1193.946045 1195.270996 1198.518555 1201.033691 1203.164062 1204.246216 1205.032959 1204.993652 1204.573486 1203.509277 1202.892334 1202.151611 1203.664795 1206.247925 1207.560547 1207.53833 1207.818481 1207.984985 1208.10791 1208.00415 1206.80188 1204.33313 1203.22583 1202.658813 1202.845581 1203.655029 1205.149902 1207.498779 1209.055664 1209.576538 1209.546875 1209.002808 1207.790283 1207.258423 1207.802002 1213.475586 1217.731689 1220.400269 1225.495117 1230.627808 1230.801514 1229.221069 1229.130005 1229.255371 1230.61499 1232.4021 1234.515625 1237.309082 1240.810913 1244.941772 1249.031006 1254.666992 1261.952881 1270.855103 1278.129272 1283.149414 1288.09436 1296.850342 1306.378662 1307.796631 1307.999146 1307.792969 1307.331055 1307.262939 1307.866089 1308.307861 1308.456787 1308.275024 1307.858154 1307.062744 1306.033813 1303.56543 1297.447388 1292.222778 1286.148682 1275.075928 1267.292114 1274.420288 1278.009766 1275.814697 1270.505615 1267.150146 1273.082397 1273.808472 1270.010376 1262.181396 1249.779541 1231.869263 1232.09729 1249.205688 1259.768066 1269.656982 1270.398193 1272.489868 1277.919434 1281.312134 1282.760498 1281.146606 1275.435425 1266.062378 1263.383057 1281.51001 1284.913452 1282.031982 1278.445435 1272.37854 1265.243896 1255.146484 1244.085693 1233.274658 1230.505493 1225.828613 1221.873535 1217.733887 1213.100098 1207.749023 1206.835449 1200.885376 1196.977295 1194.1698 1194.201416 1192.920532 1192.941895 1194.327271 1202.736694 1210.26416 1210.411377 1206.725098 1197.840088 1193.15979 1202.847778 1205.678711 1197.891357 1191.07959 1190.718262 1194.957275 1197.829468 1196.859741 1193.704102 1187.437866 1177.878784 1168.564941 1162.23584 1157.240112 1152.314453 1149.921387 1147.263916 1141.296265 1134.060303 -1234.504028 1213.040527 1200.983521 1203.092163 1193.286621 1180.105835 1176.631592 1173.643921 1170.819824 1168.710205 1167.255737 1167.163574 1167.837891 1169.174438 1171.720825 1176.300537 1179.19397 1180.169556 1181.814575 1185.419189 1195.496338 1208.588989 1210.937988 1204.886597 1206.491821 1214.627808 1219.923706 1215.441406 1229.323364 1249.155762 1265.68335 1276.910278 1285.234375 1295.383423 1314.302612 1338.975586 1356.467163 1365.539062 1369.516968 1366.435547 1357.760132 1345.130737 1336.847168 1332.567383 1331.297729 1327.117798 1321.878174 1317.554199 1312.670654 1304.770264 1291.036865 1274.442993 1277.950806 1291.224487 1303.542358 1308.292725 1310.657104 1311.190796 1314.091553 1320.848145 1329.757446 1330.791748 1328.96106 1319.205078 1313.568237 1308.350464 1301.452881 1293.977173 1284.338623 1278.068115 1277.013794 1290.434937 1303.111328 1307.168213 1306.560913 1305.025146 1302.414429 1300.832764 1299.414551 1297.681519 1295.542725 1294.400391 1292.966797 1294.714478 1294.119629 1290.508179 1281.432373 1268.561279 1269.122925 1280.390869 1286.919312 1287.899658 1286.474243 1282.354614 1271.850586 1259.824341 1256.504395 1265.925659 1271.969116 1276.607056 1278.823486 1278.015747 1271.567871 1263.911011 1257.168335 1254.768188 1267.520508 1270.520264 1270.865601 1269.305054 1267.638672 1266.178833 1266.96167 1269.703613 1270.41748 1270.771729 1270.425415 1269.742554 1267.281616 1264.315063 1263.213623 1263.829956 1266.297485 1269.408936 1271.373047 1275.239746 1282.312622 1290.029053 1300.071533 1306.852905 1308.046021 1308.093506 1308.252197 1308.934937 1309.801147 1310.962402 1312.076294 1312.959839 1313.31543 1312.927979 1310.768799 1306.811646 1303.996704 1301.147339 1298.029053 1294.762207 1291.601929 1293.929321 1300.455444 1304.194336 1302.339722 1305.009644 1307.82312 1308.174805 1307.525024 1304.003052 1294.441284 1287.576782 1281.379761 1276.404663 1271.326172 1268.446899 1260.58252 1256.322021 1250.717407 1246.37854 1243.61731 1244.540527 1248.649536 1252.416016 1257.230835 1262.139038 1268.64978 1275.979614 1288.926758 1304.322021 1305.822754 1303.786865 1300.640747 1298.233765 1296.658569 1294.386597 1292.074097 1290.871338 1290.416748 1290.27478 1288.174927 1284.742065 1281.867432 1279.792969 1281.865601 1281.827271 1280.089844 1280.919067 1282.300415 1281.986572 1278.432739 1269.69873 1263.629028 1257.734985 1254.126221 1256.16333 1267.623535 1270.508789 1272.134888 1274.500122 1276.354858 1276.332886 1276.225342 1276.329834 1276.952637 1277.435791 1278.157715 1277.817627 1276.736572 1275.092163 1274.26709 1274.389038 1274.796265 1274.765503 1274.492065 1273.687622 1272.217896 1271.878784 1272.805786 1273.45813 1272.329834 1270.952759 1268.782349 1265.194214 1262.192383 1259.171753 1257.417847 1258.103638 1258.195557 1258.180542 1258.121582 1257.406738 1255.898193 1254.070557 1253.771973 1253.318726 1251.875 1250.073608 1247.668701 1244.894287 1243.796753 1243.905518 1243.567383 1243.843384 1245.862427 1247.041992 1247.345825 1247.153931 1247.181641 1246.851318 1246.31189 1245.586304 1245.637817 1245.714355 1245.731567 1244.886597 1243.592651 1241.147583 1234.335327 1231.621216 1231.49585 1231.610229 1232.793213 1232.636475 1232.406738 1233.824097 1234.857788 1235.341431 1235.446411 1235.341797 1235.078003 1234.658447 1233.897095 1232.990845 1232.441162 1232.322998 1232.226929 1231.718872 1231.643555 1232.108887 1232.469238 1232.509766 1232.458862 1232.145386 1231.077515 1230.217041 1228.791016 1227.243896 1225.990723 1224.619995 1223.241699 1221.739746 1220.612915 1219.19458 1217.377075 1215.535767 1213.4646 1211.400146 1207.835083 1207.280396 1207.043335 1207.197388 1206.913208 1206.677856 1206.369141 1205.996704 1205.597168 1204.873901 1203.768433 1202.193481 1200.184204 1198.819458 1198.322266 1196.661133 1195.896118 1196.156372 1196.555786 1196.67041 1196.599731 1196.864624 1196.605347 1195.454346 1194.795776 1194.322754 1193.897949 1193.675049 1193.42981 1193.070923 1192.493286 1191.801025 1190.985474 1190.112427 1189.305298 1188.458374 1187.907349 1187.370483 1187.115112 1187.084595 1187.049683 1186.938477 1186.645996 1186.079468 1185.291016 1184.395508 1183.409058 1184.084473 1189.202148 1193.365356 1195.529785 1194.900391 1194.060303 1194.166504 1195.086304 1195.454834 1196.437012 1196.854248 1197.442383 1198.158325 1198.77478 1199.242188 1199.452393 1199.704346 1200.005249 1200.078125 1199.737915 1198.967529 1197.903564 1196.424683 1194.674561 1193.020386 1191.647827 1190.355103 1189.267822 1188.424805 1187.756592 1187.164062 1187.783081 1188.416748 1189.570923 1190.986328 1192.235718 1193.338257 1193.865112 1193.923096 1193.848877 1193.614746 1193.584473 1193.455566 1193.198975 1192.945801 1192.644043 1192.578247 1192.807861 1193.050415 1193.705078 1194.289551 1194.675903 1195.00061 1195.249634 1195.570923 1195.764038 1195.758179 1195.669556 1195.514526 1195.397339 1195.228394 1194.887939 1194.55957 1194.339111 1193.955811 1193.175537 1192.087769 1191.208984 1190.26001 1189.22229 1188.243164 1187.348145 1186.546143 1185.866089 1185.163208 1184.340088 1183.386597 1182.912598 1182.437622 1181.858643 1181.285034 1180.92627 1180.847168 1181.025146 1181.555786 1182.217285 1182.648926 1182.531006 1182.085083 1181.38269 1180.467773 1179.442261 1178.346436 1177.216797 1175.990723 1174.842407 1174.187622 1174.114258 1174.57373 1175.210815 1176.075317 1177.253418 1178.644897 1180.091553 1181.444702 1182.612183 1183.268921 1184.35376 1186.274414 1188.877075 1190.942017 1192.57312 1193.87207 1194.966553 1196.948608 1199.036255 1200.209351 1200.630981 1200.920898 1199.942627 1198.987915 1197.633301 1196.117676 1200.622803 1205.092407 1207.479736 1207.537231 1207.620361 1207.835327 1207.995605 1208.002686 1207.219238 1204.23645 1202.666382 1201.87439 1201.986694 1202.735718 1204.443115 1206.591919 1208.063599 1208.259399 1207.934814 1207.111084 1206.584473 1208.172607 1210.382812 1213.310547 1217.042358 1220.326538 1226.635986 1232.556396 1232.625854 1232.157715 1230.601074 1228.405884 1228.287109 1229.979492 1231.029541 1233.074097 1236.965088 1239.983276 1242.5 1249.074951 1255.791626 1263.254272 1267.291504 1270.88147 1276.896729 1285.833008 1302.073364 1307.202881 1308.582153 1308.450928 1308.163086 1308.225586 1308.686646 1309.023315 1309.252563 1309.210327 1308.61731 1308.002075 1307.0448 1305.417847 1293.463257 1286.014526 1279.164551 1275.285645 1280.938354 1285.37146 1286.062622 1282.293091 1275.326538 1268.248047 1278.206299 1279.499512 1274.075806 1265.977417 1252.97998 1235.042969 1232.4646 1250.531006 1264.694946 1274.861816 1279.884277 1282.095093 1282.84375 1285.126953 1286.036255 1285.165405 1282.939209 1275.600464 1274.20166 1288.545532 1292.62561 1288.777954 1282.013306 1270.377441 1259.043457 1249.471436 1241.873169 1237.787842 1235.278809 1231.861694 1226.178711 1220.905029 1218.624878 1215.304199 1209.801147 1207.92395 1204.065918 1202.718262 1201.390259 1199.694702 1199.67627 1200.498413 1205.932373 1212.515137 1215.774658 1213.126465 1207.346436 1200.633789 1206.81604 1209.339722 1205.064575 1195.773682 1196.13208 1198.196045 1198.479614 1192.17749 1181.906738 1175.366577 1168.049927 1161.84668 1156.669312 1152.028687 1146.717407 1144.189331 1142.163696 1138.434692 1133.528076 -1234.859375 1218.894531 1192.160278 1180.441284 1178.595093 1174.553101 1170.678589 1168.342896 1168.157837 1168.414062 1169.080322 1169.983154 1170.355347 1172.408936 1178.509399 1184.672363 1192.035889 1193.79541 1190.81189 1196.889648 1206.017944 1209.641113 1216.838257 1215.359131 1210.790039 1223.396118 1233.572144 1239.013062 1237.085449 1251.199829 1271.131226 1283.220703 1291.042236 1301.912964 1323.187622 1341.748291 1354.716797 1365.593994 1367.832275 1363.731812 1354.214722 1342.390869 1330.77417 1325.365234 1319.216553 1316.750244 1314.140503 1310.910156 1306.378296 1297.243774 1284.762451 1275.276611 1284.869873 1291.005249 1305.057495 1313.187622 1316.244873 1316.741455 1316.738892 1320.358521 1324.268433 1321.383667 1316.431274 1312.563477 1308.961182 1303.517578 1296.580811 1289.032959 1281.701782 1277.376831 1277.002197 1286.131104 1298.600586 1306.426392 1311.631104 1310.893555 1306.831421 1305.72168 1303.861206 1302.344604 1300.514771 1298.758057 1297.975586 1298.259766 1295.845215 1291.355591 1277.942017 1267.90979 1273.109619 1285.120728 1292.621704 1290.494751 1292.089111 1284.802246 1275.485596 1265.345947 1256.301392 1262.282593 1266.944824 1269.77478 1273.164917 1271.934326 1267.703857 1262.145874 1256.63269 1257.446045 1265.93335 1270.440063 1272.488281 1271.78125 1269.588623 1267.536499 1268.79895 1270.773926 1272.4646 1273.185303 1273.129028 1272.23584 1271.094849 1269.465088 1268.761353 1269.232422 1268.960815 1266.767944 1266.773804 1269.976318 1279.16687 1285.29895 1291.71167 1299.061279 1304.237061 1306.464966 1307.00647 1307.760132 1309.135376 1310.543823 1312.14624 1313.185669 1313.12207 1311.86377 1308.708374 1304.642944 1300.62561 1296.661133 1294.194824 1291.868042 1286.483276 1287.072388 1293.017212 1295.110718 1293.821289 1300.837036 1304.733887 1304.96936 1303.631104 1298.043823 1290.560913 1283.270264 1278.339478 1272.450928 1270.185303 1265.183228 1258.289673 1252.432129 1245.559814 1243.812012 1245.622803 1249.119873 1254.098511 1255.142944 1256.63208 1261.838135 1266.677856 1274.257202 1284.580444 1298.043091 1306.69519 1305.977295 1303.68335 1301.440308 1299.895996 1297.628784 1294.568481 1293.327759 1293.102539 1293.368286 1290.798828 1286.751953 1282.267944 1281.194702 1283.224365 1282.983521 1280.790039 1281.501221 1282.545532 1282.210083 1279.545044 1269.8302 1264.895508 1259.776733 1255.719482 1256.235229 1262.216187 1267.016846 1269.645996 1276.333008 1279.869141 1279.622803 1279.151489 1278.919189 1279.524902 1280.199463 1281.08606 1281.334839 1280.858032 1279.633301 1278.900146 1279.160522 1278.771118 1278.455933 1277.561401 1276.885742 1277.689819 1278.576538 1278.693726 1277.680664 1275.917236 1273.737427 1270.944946 1268.265137 1265.984985 1265.476929 1264.335815 1262.904419 1261.480469 1260.487793 1259.187012 1258.269287 1256.61792 1255.359985 1255.835205 1256.16626 1255.173096 1253.427246 1250.442261 1247.428955 1246.097046 1245.773804 1244.299194 1244.086548 1246.906006 1248.193481 1248.671997 1248.763672 1248.366821 1247.799561 1247.187256 1246.533325 1246.045166 1245.684692 1244.896729 1242.914795 1240.606689 1237.109863 1232.491455 1233.054688 1233.483276 1233.838989 1234.10791 1234.18396 1234.247559 1235.085327 1235.848145 1236.339355 1236.461304 1236.499512 1236.30542 1235.809204 1235.176514 1234.609985 1234.128662 1234.085327 1233.71228 1233.533813 1233.515015 1233.473145 1233.39624 1233.210571 1232.93811 1232.768433 1232.285767 1231.325073 1229.678711 1227.884155 1226.266479 1224.79895 1223.42395 1222.212036 1221.179932 1219.606079 1216.822144 1214.09082 1211.259033 1209.37085 1206.8479 1207.150269 1207.081055 1206.989258 1207.007446 1206.924194 1206.741089 1206.658569 1206.286743 1205.787842 1204.985107 1203.905518 1202.673584 1201.355713 1200.295532 1199.073853 1198.24646 1198.088745 1198.054443 1198.15979 1198.320312 1198.015625 1196.973511 1195.2771 1194.92688 1194.683228 1194.364136 1194.174072 1194.109497 1193.856812 1193.395874 1192.742676 1192.151489 1191.809692 1191.195557 1190.830322 1190.302856 1189.831055 1189.294067 1188.742676 1188.402466 1188.021484 1187.529297 1186.823608 1186.184326 1185.429321 1185.0896 1186.994507 1190.324097 1193.924438 1195.68335 1195.303467 1194.54248 1194.540405 1194.720825 1194.925171 1195.680664 1196.860962 1197.800903 1198.910156 1199.683105 1200.282959 1200.588135 1200.730835 1200.891357 1200.855713 1200.359497 1199.448853 1198.155029 1196.464478 1194.800415 1193.372925 1192.158081 1191.088135 1190.069824 1189.218262 1188.434692 1187.793091 1188.112061 1188.841064 1190.375732 1191.921997 1193.424194 1194.644531 1195.157837 1195.085449 1194.939941 1194.857178 1194.652222 1194.42688 1194.153198 1193.835815 1193.762451 1193.60083 1193.540283 1193.800049 1194.479736 1194.965942 1195.40625 1195.752197 1196.056641 1196.271362 1196.436523 1196.464355 1196.290649 1196.154907 1195.998169 1195.922485 1195.717651 1195.551758 1195.484619 1195.111816 1194.234497 1193.271484 1192.271973 1191.209839 1190.099121 1189.088257 1188.107056 1187.239624 1186.549805 1185.796753 1184.849365 1184.178345 1183.479492 1182.889648 1182.272827 1181.604614 1181.313843 1181.177002 1181.427856 1181.974487 1182.803833 1183.188354 1183.484985 1183.3302 1182.632568 1181.823608 1180.834106 1179.771851 1178.661377 1177.610107 1176.643921 1175.780396 1175.656982 1175.555786 1175.793823 1176.304932 1177.212036 1178.439087 1180.007812 1181.773071 1183.179199 1184.226807 1185.067993 1186.308105 1187.976318 1189.742554 1191.338013 1192.637207 1193.644653 1194.640869 1195.440674 1196.025024 1196.314087 1196.53833 1196.068604 1195.308716 1194.869873 1194.976318 1198.696289 1203.09314 1206.072998 1207.591797 1207.557007 1207.565796 1207.632568 1207.676392 1206.633545 1203.498169 1201.656128 1200.890747 1200.810059 1201.335815 1202.646729 1204.330688 1205.767578 1206.096802 1205.995361 1205.641479 1206.164062 1208.158936 1210.164307 1212.33252 1214.988892 1217.988892 1221.711182 1226.687134 1229.885254 1231.903442 1232.328857 1226.354614 1225.578125 1227.025391 1228.50354 1231.108276 1234.138672 1236.355713 1240.778809 1246.762451 1252.486328 1257.87561 1260.919312 1265.929321 1274.47229 1286.765503 1298.358154 1305.687988 1309.061035 1308.351929 1307.594727 1308.235596 1308.857544 1309.922485 1309.891235 1309.708862 1309.413452 1308.724854 1307.849243 1306.023438 1295.447632 1285.880859 1278.225586 1284.384888 1292.849487 1294.42395 1292.62854 1287.623413 1280.611572 1277.886108 1281.874146 1282.496338 1278.539062 1267.787842 1254.719849 1237.377808 1230.335205 1250.396973 1266.8573 1277.650879 1283.373047 1286.333496 1288.810913 1290.313721 1289.559204 1288.623047 1286.430908 1282.103149 1283.467896 1295.100098 1295.441406 1292.810059 1278.747925 1266.202515 1256.490112 1252.639038 1247.902954 1243.615112 1239.886841 1234.694458 1230.338257 1227.022461 1224.05188 1220.658813 1217.309814 1215.314209 1210.718872 1210.846924 1208.709717 1206.608887 1207.5177 1206.698364 1210.396973 1218.515991 1221.54541 1219.870239 1214.303955 1207.670654 1209.226196 1212.213745 1210.468628 1203.48645 1197.978882 1198.123413 1193.50647 1184.901855 1175.660034 1167.050781 1160.616455 1154.876343 1150.478027 1146.848999 1142.549683 1139.011841 1136.660645 1134.107544 1130.244507 -1216.993896 1219.446533 1187.695068 1178.409302 1173.917847 1169.821411 1169.428833 1171.343018 1172.009644 1172.898315 1175.50647 1179.380737 1183.724976 1184.400024 1188.61792 1201.057739 1208.793823 1210.165161 1204.099365 1203.125732 1215.042603 1219.990601 1228.411377 1226.912842 1220.902222 1230.356812 1243.16272 1254.240234 1261.125977 1254.965454 1272.519653 1289.289795 1303.891602 1311.326538 1333.198364 1352.203491 1359.553223 1364.0979 1362.556396 1355.213623 1347.353882 1338.552734 1328.716187 1321.786499 1315.845093 1308.992676 1305.856567 1303.766602 1296.686401 1288.421631 1278.807739 1280.148071 1293.054688 1298.189087 1302.480713 1315.7771 1320.445312 1320.757568 1320.257812 1320.569824 1320.296387 1315.207275 1309.317383 1306.011475 1303.503784 1295.140381 1290.894897 1283.403564 1279.469482 1278.436279 1277.276001 1280.59082 1295.46875 1302.677124 1314.09729 1318.0896 1313.799805 1310.897461 1308.104614 1306.401489 1305.380249 1302.97998 1302.535278 1303.689697 1297.652588 1286.818726 1274.940308 1267.600708 1276.936157 1288.124146 1294.314453 1292.710938 1294.866943 1286.417236 1275.920288 1267.584229 1262.538452 1263.716797 1265.888916 1267.527222 1273.120239 1269.654053 1264.92749 1260.366699 1259.787476 1267.723877 1267.499268 1269.85022 1275.363037 1274.001221 1271.53479 1268.608887 1269.533813 1272.30249 1274.255493 1275.615967 1275.785278 1275.235474 1274.242432 1272.996094 1272.737427 1272.62793 1272.300415 1271.501587 1270.015381 1268.799561 1270.472168 1280.547607 1285.029907 1290.642212 1296.050049 1299.392334 1303.655151 1306.859741 1307.592529 1310.289307 1313.159424 1314.522461 1314.390015 1312.34082 1308.571289 1303.897705 1298.69458 1292.379272 1290.714233 1286.41687 1282.383911 1280.126465 1285.967651 1289.957275 1290.562256 1293.245483 1294.901611 1298.245972 1298.744507 1294.484741 1287.22644 1280.076538 1274.943604 1268.393188 1264.354614 1257.039429 1252.340576 1245.679932 1245.786499 1248.181152 1250.954712 1254.292725 1257.913818 1258.965454 1259.071533 1262.663696 1266.704102 1271.587769 1279.494873 1295.46167 1305.151855 1306.807007 1306.006592 1303.927246 1303.273438 1303.457764 1301.087158 1299.02124 1297.116333 1295.671265 1293.180298 1289.813965 1286.763916 1285.028687 1285.065918 1283.234009 1280.788086 1281.622559 1283.048584 1282.942871 1279.416382 1269.646729 1265.416504 1261.584839 1257.917969 1255.646362 1258.439697 1262.918945 1266.655884 1275.14563 1281.771484 1282.803223 1282.959473 1282.700928 1283.398926 1284.364502 1285.033936 1285.141846 1284.441162 1283.439819 1283.194458 1283.32251 1283.159546 1282.818481 1280.889893 1279.740479 1281.600708 1283.270874 1283.140259 1281.716675 1279.205933 1277.011475 1275.150391 1272.50354 1269.887939 1270.470581 1269.765747 1267.748413 1265.299927 1262.742432 1259.447998 1257.020508 1256.118042 1256.38501 1258.28418 1258.661743 1257.96875 1256.257935 1253.457031 1251.136353 1249.483643 1248.11499 1246.257202 1246.521729 1248.721436 1249.861938 1250.234741 1250.154541 1249.575928 1248.726685 1247.688843 1246.83667 1245.93396 1244.99939 1243.793579 1241.085938 1238.313843 1235.438965 1232.80127 1234.387939 1235.454712 1235.629639 1235.773071 1235.760376 1235.953125 1236.414795 1236.94458 1237.384888 1237.602295 1237.69165 1237.539185 1237.158325 1236.680786 1236.252441 1235.933105 1235.608276 1235.265747 1234.967773 1234.621216 1234.248169 1233.915405 1233.543579 1233.136475 1232.661743 1232.28064 1231.475586 1229.805908 1228.005249 1226.206543 1224.678467 1223.252197 1222.150391 1221.085327 1219.514404 1216.507324 1213.421631 1210.200562 1207.859009 1206.842285 1207.079346 1207.137817 1206.971558 1207.305298 1207.416382 1207.310791 1207.406128 1207.418457 1206.403687 1205.81189 1205.675293 1205.051147 1203.644897 1203.005249 1201.842529 1200.818481 1200.218994 1200.074219 1199.997803 1199.812988 1199.123291 1197.525879 1196.13623 1195.129395 1195.145386 1195.123535 1194.802856 1194.660645 1194.673462 1193.986328 1193.571045 1193.317505 1193.329102 1193.396606 1193.253174 1192.675781 1191.874634 1191.18689 1190.441528 1189.874878 1189.132446 1188.44751 1187.811157 1187.248779 1186.980347 1187.564819 1188.982544 1191.580322 1194.431763 1195.814331 1195.678955 1195.504517 1195.9104 1195.407715 1194.990845 1195.202515 1196.243652 1198.167969 1199.62854 1200.648804 1201.292725 1201.674194 1201.858765 1201.863525 1201.576782 1201.015625 1199.998901 1198.550537 1196.742554 1195.047974 1193.936523 1192.724609 1191.764526 1190.980347 1190.266602 1189.585083 1189.04187 1188.762207 1189.109619 1191.772339 1193.407593 1194.16272 1195.328003 1195.945923 1196.025879 1195.835327 1195.685791 1195.575317 1195.303955 1195.059814 1194.881592 1194.738403 1194.62085 1194.411743 1194.328735 1194.672974 1195.455566 1196.158691 1196.433105 1196.833496 1197.000122 1197.092285 1197.05127 1196.898315 1196.803589 1196.657227 1196.507446 1196.33728 1196.198853 1196.068604 1195.764771 1195.286743 1194.266113 1193.173706 1192.045288 1190.887207 1189.870728 1188.775024 1187.890503 1187.102417 1186.196533 1185.497925 1184.775757 1184.057861 1183.338501 1182.510132 1181.907715 1181.552979 1181.394165 1181.647583 1182.105591 1183.159302 1183.544922 1184.052002 1184.558105 1184.271484 1183.164307 1182.290283 1181.16333 1180.418091 1179.224243 1178.325928 1177.19104 1177.049683 1176.650269 1176.457153 1176.669556 1177.31604 1178.40271 1179.800049 1181.637085 1183.221558 1184.357666 1185.145508 1186.105835 1187.325439 1188.662109 1190.091064 1191.320557 1192.492432 1193.261475 1194.041992 1194.353149 1194.469116 1194.595215 1194.386597 1194.252563 1194.461182 1195.228271 1198.476074 1201.312378 1204.074829 1206.298706 1207.521362 1207.555542 1207.564575 1207.140137 1204.41333 1201.581909 1200.067017 1199.498291 1199.480591 1199.574585 1199.795288 1200.839844 1202.085815 1202.832642 1203.376709 1204.117188 1205.209595 1206.604248 1208.325073 1209.932495 1211.425659 1213.975586 1216.883789 1219.436035 1222.058105 1223.803223 1223.887695 1222.58252 1221.697754 1223.684692 1226.64209 1229.101685 1230.864136 1231.914185 1238.219116 1243.432739 1247.290527 1251.201172 1254.090332 1263.599731 1275.69812 1283.791504 1290.055176 1294.450562 1299.395142 1301.185791 1300.369385 1299.992554 1302.553101 1308.796143 1309.967896 1310.144531 1309.918701 1309.268066 1308.505615 1306.378662 1297.628174 1285.794312 1281.533081 1295.679077 1301.932251 1301.810181 1298.27124 1294.111572 1282.931641 1279.73584 1281.916748 1283.307617 1281.65686 1269.925171 1256.345093 1242.422729 1231.721436 1247.495605 1264.854126 1275.43396 1283.828857 1289.700195 1293.386108 1294.015747 1292.530029 1292.134644 1290.270874 1289.893311 1292.730835 1295.981567 1296.189209 1291.044312 1276.988403 1270.396362 1265.13208 1260.016479 1256.984497 1250.555054 1244.664795 1239.614746 1235.74292 1232.322632 1228.741455 1225.731689 1223.40332 1222.355347 1219.106689 1217.766846 1215.348267 1213.342529 1213.536987 1214.81604 1216.990356 1222.741089 1225.417358 1224.440063 1220.549194 1217.098511 1218.130371 1214.097168 1209.106812 1196.283936 1187.769287 1186.760742 1181.880493 1175.643188 1168.941162 1161.946655 1155.701904 1149.268921 1144.935547 1140.808838 1135.562012 1133.393677 1132.871948 1132.060425 1131.057007 -1202.528198 1201.904907 1180.268677 1174.894531 1169.803101 1171.248657 1172.613159 1174.368408 1176.618042 1180.131836 1185.115845 1191.795898 1197.497681 1200.597168 1200.878418 1214.974976 1221.895142 1220.347168 1219.458496 1210.794434 1223.656982 1235.851685 1243.090088 1241.278809 1230.996826 1233.290283 1250.506104 1267.305908 1277.522583 1277.69751 1274.717896 1298.315552 1316.295654 1327.935425 1340.666504 1353.845947 1363.158569 1365.083008 1359.556274 1349.544067 1339.796631 1330.805054 1325.681885 1318.613403 1313.743896 1306.741211 1303.161255 1299.554443 1292.775269 1288.739258 1279.161499 1284.819214 1299.302734 1306.706909 1311.648193 1316.255493 1322.298828 1323.897705 1322.673706 1320.450317 1317.859497 1311.242676 1304.374146 1302.796387 1296.907227 1293.177856 1293.310547 1289.737671 1283.81543 1280.783569 1278.619019 1279.241211 1293.250366 1300.157349 1307.927734 1318.105347 1317.919434 1314.915283 1310.61792 1308.415161 1307.423584 1306.148804 1306.049438 1306.016846 1297.246338 1286.020996 1274.832764 1268.484741 1278.284424 1288.670654 1295.552856 1295.56543 1294.380127 1285.051025 1275.330688 1267.401733 1265.556885 1266.164673 1268.549683 1276.201416 1281.118408 1270.008423 1263.952393 1259.94812 1274.40979 1279.734253 1281.913818 1281.176514 1278.552124 1276.428711 1273.091309 1269.412109 1269.522583 1274.251221 1276.730347 1278.78894 1278.843262 1278.021606 1277.112183 1276.609375 1276.442749 1276.233521 1275.858276 1275.070435 1274.14978 1273.440918 1274.631592 1277.587891 1278.823975 1282.678955 1287.71814 1290.514648 1292.815308 1300.829834 1305.555176 1309.496704 1315.261475 1317.374634 1316.915894 1314.19458 1308.734253 1304.873535 1299.755127 1295.73291 1290.465454 1283.803833 1279.858887 1280.07373 1282.587036 1286.12915 1287.699219 1289.153931 1290.376587 1293.516968 1295.056396 1291.525269 1283.310181 1278.371826 1274.02356 1270.045898 1262.038818 1253.279541 1247.045654 1247.060181 1248.963013 1252.569214 1255.617065 1257.438843 1261.040894 1262.637451 1263.152588 1264.744629 1267.723511 1272.307495 1279.838135 1292.547974 1301.53772 1306.963379 1306.997437 1306.384277 1306.44458 1306.638062 1306.482422 1304.94397 1301.316406 1298.08252 1294.432495 1291.711792 1290.221436 1289.060913 1288.319214 1284.599121 1280.944092 1282.144653 1284.787964 1283.840088 1279.406616 1269.547363 1265.954102 1263.135864 1259.986694 1257.400513 1256.602417 1259.652344 1263.71167 1268.885132 1279.34668 1283.362061 1290.037354 1291.510986 1291.158447 1290.466797 1289.814819 1288.935303 1287.899048 1287.742798 1288.2229 1288.913818 1289.108032 1288.59021 1286.747559 1285.85791 1286.955811 1287.999634 1287.283569 1285.308105 1282.6427 1279.959961 1280.420288 1278.405884 1275.579102 1274.092285 1272.511719 1270.254883 1267.588257 1264.328979 1261.211304 1257.377808 1258.362671 1260.489258 1260.872925 1260.882568 1259.946655 1258.315796 1255.787231 1253.901245 1252.420654 1251.312012 1250.228882 1250.082031 1251.102051 1251.738647 1252.062256 1251.737061 1250.557861 1249.226074 1247.735229 1246.237793 1244.694092 1243.518311 1241.559692 1238.994629 1236.30957 1234.089966 1235.418579 1238.893677 1238.459961 1238.112061 1237.671997 1237.477539 1237.572632 1237.838745 1238.33313 1238.618286 1239.039917 1239.18042 1239.077637 1238.873169 1238.359619 1237.85376 1237.543823 1237.0802 1236.574951 1236.039185 1235.46582 1234.891357 1234.337769 1233.678589 1233.198975 1232.611938 1232.046143 1231.009521 1229.415405 1227.610107 1225.87146 1224.124146 1222.699219 1221.476196 1220.047974 1218.082397 1216.47168 1214.207397 1210.864868 1208.657715 1206.858032 1207.126221 1207.149292 1208.311768 1209.439087 1209.361938 1209.099854 1209.011475 1208.962891 1208.14978 1207.115234 1207.489014 1207.117676 1206.383301 1205.932251 1204.745605 1203.214844 1202.298584 1202.088501 1202.00769 1201.825806 1200.870117 1198.782471 1196.6073 1195.268433 1196.087524 1196.349365 1195.357544 1195.237549 1195.612305 1195.150024 1194.453247 1194.712891 1194.6427 1195.051636 1195.595215 1194.550903 1193.355957 1193.00354 1192.138306 1191.098511 1190.126465 1189.479004 1188.899414 1188.393311 1188.298218 1188.859253 1190.161011 1192.354858 1195.228149 1195.91333 1196.317139 1196.702881 1196.811523 1196.813843 1196.151611 1195.58252 1196.136841 1198.789062 1200.518188 1201.712158 1202.48291 1202.739136 1202.829224 1202.823486 1202.52124 1201.765137 1200.660034 1199.127563 1197.240356 1195.636353 1194.468506 1193.356567 1192.379517 1191.58313 1191.076538 1190.724243 1190.269897 1189.76062 1189.77063 1194.140259 1195.095825 1194.967041 1195.57312 1196.369263 1196.706543 1196.654663 1196.522827 1196.402466 1196.15564 1195.838501 1195.743408 1195.632446 1195.55481 1195.434692 1194.961914 1194.928711 1195.548096 1196.459595 1196.932251 1197.386475 1197.666992 1197.787964 1197.746704 1197.578247 1197.416382 1197.229492 1197.139771 1197.000488 1196.803955 1196.596924 1196.295532 1195.757446 1194.969971 1193.804443 1192.635376 1191.564453 1190.499756 1189.44397 1188.416016 1187.537109 1186.706665 1185.990723 1185.188599 1184.340332 1183.459961 1182.611938 1182.242432 1181.810425 1181.703125 1181.773682 1182.177002 1183.096802 1184.240479 1185.252686 1186.017456 1186.166626 1185.087891 1183.649292 1182.869385 1182.255249 1180.821167 1179.722168 1178.553101 1178.304077 1177.680542 1177.186279 1177.261719 1177.71106 1178.504028 1179.754761 1181.296265 1182.856201 1183.931152 1184.925781 1185.821899 1186.818604 1187.889282 1188.980591 1190.216187 1191.230957 1191.942383 1192.784546 1193.193726 1193.529541 1193.537598 1193.626831 1193.759521 1194.279663 1195.302856 1197.527588 1199.234985 1200.870483 1202.740845 1204.455322 1205.415039 1205.082886 1203.101074 1200.198975 1198.424683 1198.211792 1198.446167 1198.103394 1197.598755 1196.71106 1197.166626 1198.276855 1199.735352 1201.114258 1202.316284 1203.335938 1204.57373 1205.890137 1206.871582 1207.949951 1209.515015 1212.165771 1214.150269 1216.28894 1217.593506 1217.655029 1218.36145 1218.526001 1221.583862 1224.784912 1227.151367 1229.420288 1232.538574 1235.783325 1239.682129 1242.39209 1242.687744 1248.314331 1262.875244 1270.63562 1276.542725 1279.032349 1283.877808 1285.832031 1287.296265 1287.290771 1286.697754 1288.601562 1296.681519 1307.927002 1310.152344 1310.242554 1309.84668 1308.42749 1305.465454 1296.602051 1287.074219 1291.787109 1302.796509 1306.842285 1306.310181 1302.683228 1296.858032 1286.277466 1280.066772 1282.289307 1284.889771 1282.514893 1272.852051 1260.432129 1245.032471 1237.883057 1241.683472 1255.244751 1266.485352 1279.98584 1290.660767 1294.759888 1295.399414 1295.297485 1294.90918 1293.470337 1291.500977 1294.439087 1296.678711 1297.654419 1296.169922 1290.025879 1281.953735 1274.064453 1267.956299 1263.230103 1257.30957 1249.79834 1244.26062 1240.915771 1237.208984 1233.999023 1232.141602 1229.419434 1227.365723 1225.498535 1223.822144 1221.501465 1219.036987 1220.025024 1222.04834 1223.776611 1228.051025 1230.910645 1229.269775 1224.874512 1222.536499 1221.121948 1214.093262 1203.953247 1190.115845 1178.954834 1173.258911 1170.189453 1165.733765 1159.806274 1156.133545 1149.288452 1145.047241 1144.706787 1141.227417 1136.262817 1136.198486 1132.644165 1133.005859 1134.055298 -1194.459106 1182.52417 1179.041016 1173.192627 1169.87085 1172.61377 1174.38855 1177.222656 1179.940796 1184.065552 1193.587769 1204.713867 1213.080566 1220.074951 1219.31311 1223.291138 1236.669312 1237.589355 1235.469238 1222.204468 1229.974609 1243.434326 1253.557495 1254.887817 1244.457397 1240.429321 1258.206543 1273.689819 1289.203979 1299.982056 1288.082153 1298.039917 1322.341797 1340.315308 1353.488159 1360.877075 1367.75708 1367.709839 1361.220215 1352.019531 1342.029785 1331.575806 1325.042969 1318.970337 1314.472046 1310.147583 1306.629517 1304.999268 1302.090454 1296.945435 1281.829102 1289.429688 1305.645996 1317.702515 1324.361816 1326.789429 1327.145752 1327.583374 1325.425171 1319.045044 1316.438232 1309.940186 1306.196655 1305.833984 1303.361816 1298.589966 1296.693115 1294.259155 1288.185547 1283.309692 1281.629272 1280.117065 1294.299072 1299.537598 1305.056641 1313.003418 1316.703613 1313.687988 1309.474365 1307.513184 1306.984131 1306.812378 1305.024292 1300.520996 1293.376587 1282.195312 1275.893921 1273.8302 1278.518311 1289.15271 1294.621338 1295.120117 1292.862915 1282.231445 1272.817749 1267.28833 1269.562988 1269.916992 1273.278687 1281.88623 1278.146484 1267.943115 1262.274902 1277.76709 1283.455322 1284.56311 1284.655396 1283.433472 1281.600952 1279.298584 1275.857544 1271.151245 1274.115723 1279.036987 1279.003174 1281.861084 1281.8927 1280.905518 1280.022461 1279.182129 1280.011108 1279.75293 1279.423218 1279.029541 1278.322998 1277.755249 1278.362549 1278.52478 1279.198486 1279.30835 1281.452881 1284.759033 1287.690918 1290.825562 1300.533936 1308.566162 1315.953125 1318.398071 1318.626099 1314.733032 1307.376831 1303.161133 1297.727417 1295.065308 1291.911987 1285.350342 1281.995117 1279.809692 1278.584961 1283.741455 1284.763916 1285.447266 1286.590454 1289.006348 1290.511963 1288.412964 1281.392944 1276.928833 1273.453613 1270.108887 1260.77417 1249.111206 1247.625977 1249.148315 1252.432251 1256.174561 1260.297241 1262.869995 1265.990601 1267.765625 1266.34436 1266.33728 1267.098267 1271.04895 1277.437744 1286.648315 1296.146729 1301.83252 1304.68457 1305.480469 1306.322876 1307.315063 1307.246704 1306.686646 1304.255737 1300.721313 1296.960571 1293.9823 1292.165771 1292.637085 1292.628418 1289.900635 1285.668701 1285.984863 1288.409058 1284.186401 1278.575439 1270.187378 1267.052856 1264.496948 1262.144043 1260.012939 1258.720825 1258.174927 1259.623291 1264.958252 1271.591797 1278.579102 1288.179443 1295.267578 1294.807373 1294.504517 1293.866089 1292.701172 1291.490112 1291.126831 1292.245728 1294.26062 1294.700439 1294.650879 1293.658813 1292.860718 1293.526733 1293.310059 1292.227051 1290.239136 1287.663574 1285.182861 1284.180786 1282.36145 1279.629761 1276.932373 1274.732788 1271.869019 1268.817383 1262.740723 1265.433105 1268.491577 1270.08313 1266.494507 1264.666504 1263.392578 1262.024658 1259.945557 1257.41272 1256.668823 1255.249634 1254.059692 1253.068115 1252.818726 1253.552979 1253.670898 1253.938477 1253.681641 1251.924316 1249.312622 1246.699097 1244.923584 1242.558472 1240.484009 1238.825195 1236.923584 1234.909302 1240.249878 1244.741577 1243.736328 1241.842041 1240.4823 1239.584473 1239.110596 1239.018433 1239.288574 1239.726196 1240.111694 1240.5177 1240.789429 1240.778442 1240.613525 1240.171631 1239.544678 1238.976685 1238.297363 1237.652466 1236.865112 1236.149658 1235.254028 1234.466187 1233.671631 1232.964355 1232.335693 1231.577271 1230.239136 1228.777588 1227.136841 1225.124023 1222.976929 1221.263306 1219.708374 1218.891235 1218.357666 1217.911743 1217.169189 1213.200317 1209.763428 1207.743042 1208.972046 1209.514771 1211.672729 1213.455933 1213.391235 1212.788208 1211.946045 1211.149292 1209.72644 1208.815308 1209.162476 1209.112427 1208.855835 1208.151245 1206.816284 1205.267578 1203.947998 1203.644165 1204.182617 1204.880005 1204.181641 1201.020386 1196.077515 1195.853027 1197.591553 1197.695679 1196.791504 1196.734863 1196.819702 1196.507324 1195.599365 1196.230713 1195.783325 1196.267334 1196.914673 1195.508057 1195.023071 1194.961548 1193.460571 1192.032715 1191.212036 1190.611206 1190.048218 1189.485352 1189.223755 1189.686523 1190.864624 1192.533081 1195.039185 1195.742798 1196.330322 1196.790283 1197.314575 1197.740845 1197.777954 1197.545044 1198.115234 1199.890869 1201.68457 1202.925903 1203.707764 1203.894653 1204.065796 1203.809448 1203.360718 1202.55603 1201.42395 1199.848145 1198.140625 1196.532104 1195.047974 1194.028198 1193.002808 1192.313599 1191.990112 1191.76123 1191.041626 1190.292969 1192.273926 1195.732544 1195.94751 1195.590576 1195.673462 1196.782715 1197.216064 1197.278687 1197.219116 1197.066895 1196.790283 1196.510376 1196.483643 1196.445679 1196.281372 1196.063232 1195.510254 1195.08252 1195.532837 1196.703125 1197.440308 1198.014648 1198.368286 1198.460205 1198.456421 1198.255737 1197.982788 1197.85022 1197.776367 1197.64209 1197.377686 1197.029663 1196.626709 1196.148071 1195.261597 1194.087402 1193.000244 1191.967163 1191.036987 1189.853638 1188.922241 1188.079224 1187.25647 1186.419189 1185.537598 1184.578247 1183.359985 1183.200684 1182.876587 1182.273682 1181.888672 1181.938477 1182.154175 1182.916504 1184.276489 1186.609497 1188.32959 1188.708862 1187.637329 1186.016602 1184.934692 1183.75647 1182.434204 1180.968628 1179.999634 1178.902466 1178.773804 1178.178101 1177.954468 1178.16748 1178.803711 1179.768921 1180.981079 1182.334961 1183.3396 1184.383301 1185.463257 1186.302856 1187.143433 1188.05249 1189.089111 1189.981812 1190.74353 1191.540894 1192.105347 1192.478271 1192.822266 1193.010986 1193.333984 1194.009033 1194.928589 1196.240356 1197.134521 1197.785278 1198.071167 1198.675659 1198.486572 1198.300781 1197.129517 1195.869873 1195.697021 1196.391113 1197.333618 1196.568115 1196.273804 1195.041748 1194.924072 1195.473999 1197.648071 1199.35791 1200.192627 1200.927734 1201.670288 1202.711792 1203.47876 1204.52771 1205.437256 1207.246094 1209.740356 1211.526245 1213.177979 1214.109741 1215.7854 1218.65686 1221.708496 1223.53833 1225.642944 1229.012207 1232.5896 1233.945679 1234.794067 1239.618896 1243.644897 1251.912476 1259.109375 1264.945557 1266.671387 1270.037231 1273.91626 1274.703125 1274.042725 1274.810059 1277.624634 1285.610229 1295.679565 1305.411621 1310.248047 1311.271851 1310.260742 1307.142334 1301.507324 1294.199585 1291.118042 1294.859253 1306.536621 1307.786987 1307.369751 1305.231445 1299.399658 1293.69751 1284.401978 1285.483643 1288.488892 1283.926147 1275.783325 1265.075439 1251.210205 1238.796997 1239.060303 1254.359375 1265.99353 1276.610352 1290.832886 1295.946899 1296.509399 1296.586548 1294.380859 1288.887451 1285.728882 1291.797241 1295.710327 1297.918701 1297.485718 1296.504517 1296.881226 1286.962891 1276.322266 1269.45813 1262.805786 1256.889771 1252.597168 1246.674194 1242.398438 1241.27124 1239.828491 1236.219482 1233.265503 1231.392334 1229.067627 1227.128418 1227.099365 1228.335327 1230.313232 1231.31311 1234.066895 1239.416626 1236.368042 1230.41748 1222.565063 1217.12915 1210.335571 1194.427856 1184.865112 1175.110718 1169.3302 1166.375488 1159.864258 1158.579224 1158.811523 1156.975098 1152.896362 1149.699341 1146.61438 1142.876587 1138.603149 1135.44043 1139.386597 1143.421509 -1198.578857 1184.411011 1179.14624 1174.582031 1170.199707 1172.393555 1175.700806 1180.090698 1183.386963 1192.405396 1203.544678 1216.458008 1228.923218 1235.855713 1233.137573 1229.31897 1245.16748 1251.159302 1251.734863 1243.576538 1246.157471 1258.815552 1266.665283 1266.743042 1263.725708 1257.200439 1260.299683 1277.071289 1301.841675 1314.302979 1312.435547 1306.671631 1320.643433 1340.94104 1354.95813 1363.943115 1369.08667 1369.63501 1364.769897 1353.0 1342.272827 1331.08606 1324.765015 1319.216553 1315.661865 1316.180054 1314.24353 1311.539062 1307.588501 1300.577759 1287.181519 1292.914917 1309.533569 1322.118652 1332.168457 1333.52417 1333.242188 1332.496704 1328.664307 1326.596069 1322.646118 1317.928223 1312.890381 1309.499146 1305.424805 1302.197021 1299.323608 1292.853027 1293.171021 1290.333252 1283.249146 1280.942505 1293.734985 1298.039917 1302.591187 1306.8302 1308.575562 1307.393677 1304.6604 1302.950562 1301.372192 1300.364746 1298.714111 1295.423584 1287.212402 1277.930664 1277.334351 1278.058594 1280.915527 1287.466187 1291.386841 1291.019775 1287.760742 1279.337769 1270.662842 1269.168213 1274.761353 1277.003906 1280.213379 1283.245972 1272.440308 1264.736816 1280.078613 1287.360474 1288.544312 1288.225464 1287.224365 1285.62561 1283.744507 1281.901367 1279.048218 1276.97229 1281.120239 1282.209106 1279.775879 1283.021484 1284.492554 1284.034668 1283.27417 1282.588135 1282.828857 1283.341064 1283.021484 1282.515869 1281.895386 1280.96106 1281.723755 1281.435181 1281.16333 1280.694458 1280.15271 1280.545166 1283.211182 1287.559204 1294.317017 1303.797363 1310.746094 1315.416748 1314.718018 1308.024292 1302.546753 1297.569824 1293.281494 1291.948364 1289.697876 1285.968872 1282.756226 1279.728149 1274.378418 1281.488525 1282.498901 1282.211792 1280.930298 1284.189819 1285.510132 1284.959595 1281.507812 1276.628784 1271.343262 1266.330933 1255.838745 1248.10144 1249.228394 1251.079468 1253.860718 1258.911133 1267.598267 1268.199829 1269.231079 1270.012329 1269.006592 1267.874512 1267.718628 1270.337158 1274.302368 1280.730591 1290.894775 1295.471802 1297.977905 1299.400635 1302.646851 1305.616699 1306.758789 1306.967407 1306.112427 1304.080566 1300.55896 1297.296753 1295.676392 1295.882324 1295.654053 1293.798828 1291.509888 1292.421387 1292.723999 1284.907837 1278.376465 1272.8479 1268.749878 1266.488281 1264.062256 1262.164673 1260.864746 1260.002563 1259.645996 1261.008423 1265.15918 1268.88562 1278.082642 1287.399048 1293.150757 1295.349731 1294.774902 1294.797241 1295.322632 1295.793457 1296.919434 1298.658813 1299.486328 1299.190796 1298.444336 1297.502808 1297.119263 1296.271973 1295.60144 1294.420776 1293.225586 1290.248169 1287.311157 1285.029053 1282.150757 1279.603027 1277.266724 1273.000488 1267.896851 1262.934204 1268.86731 1274.017456 1275.215942 1270.714844 1267.86792 1266.203247 1264.140503 1262.305664 1260.63269 1259.182495 1257.287476 1255.782593 1255.067505 1255.036133 1255.751221 1256.087769 1256.165283 1255.564453 1253.272583 1249.107422 1244.950195 1242.924438 1238.842407 1237.093872 1236.55249 1235.948486 1239.311157 1244.955811 1245.402588 1244.831543 1243.726562 1242.155029 1240.909912 1240.232788 1240.172974 1240.565063 1241.125977 1241.554932 1242.026123 1242.385742 1242.477783 1242.427734 1241.944702 1241.137329 1240.182617 1239.365234 1238.441162 1237.517212 1236.525391 1235.497559 1234.539795 1233.569092 1232.708862 1231.875854 1230.634521 1229.691528 1228.449951 1226.959595 1224.844238 1221.837769 1219.644775 1219.547485 1219.562988 1219.834961 1220.344116 1220.461182 1217.20459 1210.290161 1209.60376 1211.45813 1212.93103 1215.348145 1219.119141 1218.17981 1217.311035 1215.173218 1213.385742 1212.261108 1211.568848 1211.430542 1211.146118 1210.589844 1209.531616 1208.022217 1206.168945 1204.990112 1204.846436 1205.887207 1207.510498 1207.490723 1204.811157 1199.87915 1198.647339 1199.322021 1199.39502 1199.103394 1199.070679 1199.05835 1198.568115 1198.059448 1198.081055 1197.947388 1197.963501 1197.815186 1196.922119 1196.25 1195.617065 1193.753052 1192.933472 1192.201782 1191.791626 1191.14209 1190.421143 1190.10498 1190.32251 1191.137329 1192.328857 1194.166626 1195.373657 1195.874146 1196.866821 1197.550293 1198.233276 1198.666504 1199.214478 1200.155151 1201.498779 1203.089966 1204.438477 1205.051147 1205.201904 1205.180542 1204.92688 1204.419556 1203.47168 1202.213745 1200.75769 1199.031738 1197.418457 1195.666748 1194.557739 1193.627563 1193.100952 1193.045654 1192.953613 1191.794067 1190.846802 1194.250977 1196.086548 1196.42334 1196.64209 1196.922119 1197.427368 1197.697876 1197.865356 1197.894165 1197.653809 1197.507324 1197.350464 1197.302124 1197.195068 1196.991211 1196.590332 1196.050781 1195.308228 1195.309082 1196.731323 1197.826172 1198.598877 1199.0 1199.192993 1199.105347 1198.90686 1198.607056 1198.521729 1198.42395 1198.169922 1197.861816 1197.412354 1196.878662 1196.30896 1195.418091 1194.358154 1193.324463 1192.404785 1191.387207 1190.363403 1189.504883 1188.633301 1187.737427 1186.903687 1185.982422 1185.009888 1184.366699 1183.997803 1183.477417 1182.819214 1182.112549 1181.991455 1182.086914 1182.609253 1183.34668 1187.961792 1192.017578 1192.172607 1190.70813 1188.822876 1187.148438 1185.533569 1183.889038 1182.21167 1181.068115 1179.503784 1178.943359 1179.00708 1178.894287 1178.749756 1179.23584 1179.898804 1180.860352 1181.788452 1182.88916 1183.876831 1184.934326 1185.735474 1186.523438 1187.354248 1188.149902 1188.977783 1189.728271 1190.547852 1191.076416 1191.466064 1191.973145 1192.319092 1192.75293 1193.400757 1194.170288 1195.020996 1195.137939 1194.992798 1194.922974 1195.003296 1194.916504 1194.879272 1194.60144 1194.631958 1194.609497 1195.088501 1196.182251 1195.108643 1194.884644 1195.24939 1196.574463 1196.050415 1196.465088 1197.951782 1198.758423 1198.779297 1198.615356 1198.94104 1199.837646 1201.077026 1200.243286 1200.841797 1204.535767 1207.744385 1209.365356 1209.862793 1212.781006 1217.207153 1220.263794 1221.497437 1223.317017 1225.791626 1229.34021 1230.271729 1231.405273 1239.129761 1245.520874 1251.303589 1255.848877 1259.512695 1260.664062 1262.892456 1265.485962 1265.422974 1264.368042 1268.599487 1283.71521 1295.002197 1305.105591 1308.876465 1311.85437 1313.198242 1311.509155 1307.514282 1305.112915 1301.264404 1293.752075 1297.57312 1307.4729 1308.700439 1308.230713 1306.363525 1302.653442 1295.422485 1290.343384 1293.768921 1292.619873 1285.913086 1277.926392 1269.299561 1259.266602 1242.465454 1238.355103 1245.206787 1261.804688 1272.983398 1288.294067 1297.262939 1296.741333 1295.721191 1289.169312 1279.722778 1278.480225 1282.87854 1289.596313 1294.74231 1294.851929 1290.89209 1288.31897 1294.190063 1288.137817 1275.967651 1267.709961 1264.518066 1260.234619 1254.765869 1251.948608 1250.472168 1248.720825 1246.687256 1243.938232 1240.672485 1235.99585 1232.650024 1235.841675 1240.255493 1242.571533 1244.800537 1252.150757 1259.22876 1247.338135 1231.342529 1219.528442 1212.255615 1202.330566 1191.728394 1182.306641 1172.296631 1169.738037 1167.253296 1164.473999 1163.549194 1163.531982 1162.669434 1160.793457 1157.218262 1151.78833 1148.764282 1145.726929 1143.248901 1147.126587 1150.809692 -1207.546387 1188.804077 1181.62561 1177.358643 1172.242188 1171.160522 1175.923462 1182.232178 1194.799561 1204.069092 1219.467041 1232.690674 1244.920044 1249.653198 1247.325317 1244.464478 1252.001953 1261.676025 1267.038818 1267.704224 1268.13562 1275.004639 1281.495117 1282.107178 1279.790649 1273.219238 1267.38562 1284.58728 1308.240479 1320.912109 1326.400879 1322.312134 1327.53479 1336.720825 1351.745361 1364.490112 1370.312988 1370.369263 1360.232788 1344.956787 1338.313477 1333.024536 1329.097412 1323.69751 1323.997314 1327.700806 1323.002441 1317.405029 1311.379761 1303.828003 1294.270996 1291.102661 1311.530884 1323.463623 1331.691772 1335.800415 1339.042847 1340.192383 1339.494873 1334.449707 1330.859253 1322.740967 1316.041504 1313.177124 1307.996338 1306.76709 1302.332642 1302.020142 1300.091309 1294.281738 1283.321533 1281.971924 1291.015991 1295.959839 1300.042969 1302.878418 1303.552002 1303.722168 1301.978394 1297.222656 1294.146851 1293.163086 1291.991821 1288.111938 1281.137207 1279.03479 1278.816406 1280.121704 1283.386719 1287.129395 1288.706543 1287.560181 1283.824219 1277.594116 1270.300537 1274.3125 1282.043823 1284.143188 1284.772583 1280.180542 1267.009521 1278.779541 1292.946167 1294.608032 1293.622559 1291.630859 1289.556641 1287.568726 1285.316528 1283.095825 1280.607422 1279.11731 1281.292114 1283.843872 1281.998291 1284.011108 1286.762817 1287.477661 1287.400635 1287.369995 1287.391724 1286.945435 1286.42981 1285.608643 1284.943115 1284.465576 1284.317993 1283.980225 1283.568115 1283.05249 1282.106079 1280.976685 1280.088867 1284.747681 1290.815063 1297.134033 1302.43396 1305.163574 1305.751099 1301.965942 1296.762085 1292.532227 1290.44043 1289.282227 1287.54895 1285.383667 1282.911987 1278.408081 1268.401001 1275.114868 1278.847534 1278.891235 1277.7052 1279.722656 1280.888062 1282.99646 1282.227783 1276.960083 1269.030151 1260.136963 1248.44812 1249.77063 1251.695557 1253.440063 1254.529053 1259.356445 1268.601318 1269.596313 1270.379028 1271.042236 1270.920532 1269.736572 1268.708008 1268.072876 1271.055908 1276.843872 1282.917114 1288.866089 1291.249268 1292.537354 1296.655518 1300.975586 1304.803101 1307.085815 1306.953247 1305.702026 1303.578369 1301.286377 1299.940186 1299.846558 1298.956787 1297.340698 1296.533569 1296.238037 1294.459839 1286.568237 1278.914673 1274.718018 1270.743652 1268.02124 1265.932983 1264.176025 1263.245239 1262.505981 1261.580688 1260.680176 1261.260254 1266.633667 1273.337646 1279.14624 1284.468384 1288.883179 1292.200073 1293.964355 1298.576294 1303.011475 1302.921509 1303.379272 1304.41394 1304.431152 1303.183228 1301.665283 1300.380493 1298.987915 1297.265259 1295.733276 1294.525879 1292.561035 1289.752075 1287.733032 1285.415405 1283.026123 1280.37793 1275.156372 1268.15918 1264.026611 1268.657715 1279.998779 1281.723389 1279.04541 1272.853027 1268.552246 1266.303711 1265.037476 1263.78186 1262.264404 1260.203613 1258.191772 1257.237427 1257.327515 1257.477173 1257.746826 1257.486084 1257.059937 1253.791626 1248.813843 1244.157349 1240.883789 1238.228149 1239.981201 1240.345215 1240.942017 1244.45166 1245.952881 1245.786865 1245.248901 1244.175903 1242.615112 1241.543701 1241.061768 1241.121948 1241.700439 1242.24707 1242.83252 1243.295776 1243.918823 1244.11499 1244.207275 1243.563232 1242.403442 1241.228027 1240.113281 1238.999268 1237.929443 1236.759766 1235.617554 1234.51123 1233.492188 1232.601929 1231.694458 1230.614502 1229.570312 1228.459351 1227.010864 1225.271851 1223.11853 1221.335815 1221.217041 1221.535278 1221.380737 1221.396484 1221.109741 1219.62854 1209.703369 1211.205688 1213.787964 1215.570923 1218.321533 1220.076904 1220.445435 1219.845581 1217.249878 1215.619263 1214.76709 1214.292725 1214.356201 1213.891235 1212.461182 1210.294678 1208.18042 1206.343384 1205.536255 1205.703491 1207.157471 1208.211548 1208.387085 1207.490601 1204.829956 1202.421021 1201.723877 1201.486694 1201.389282 1201.514893 1201.807617 1201.500366 1201.072144 1200.914185 1200.25293 1199.44397 1198.186035 1196.874268 1195.439087 1194.809082 1194.012817 1193.6073 1193.404541 1193.032104 1192.19519 1191.298218 1190.842163 1190.828003 1191.372803 1192.347656 1193.437744 1194.621948 1195.294067 1196.242676 1197.549194 1198.458252 1199.340454 1200.225708 1201.422363 1203.141968 1204.843262 1206.071045 1206.50708 1206.463501 1206.150635 1205.991577 1205.53479 1204.469849 1203.170898 1201.736206 1200.055176 1198.309082 1196.599854 1195.120972 1194.298828 1193.943115 1194.12207 1194.98645 1193.718506 1191.734741 1193.945923 1195.769165 1196.786621 1197.279297 1197.53479 1197.88855 1198.215698 1198.419922 1198.43396 1198.341187 1198.268066 1198.121216 1198.037842 1197.890869 1197.570923 1197.318237 1196.669067 1195.827393 1195.269531 1196.685303 1198.210938 1199.045044 1199.566284 1199.769531 1199.733887 1199.460449 1199.249512 1199.166504 1198.919678 1198.684204 1198.282959 1197.77002 1197.143921 1196.441772 1195.36731 1194.350464 1193.574341 1192.692261 1191.770874 1190.880249 1189.986572 1189.03186 1188.171143 1187.265503 1186.366455 1185.669434 1185.060059 1184.466309 1183.872192 1183.15625 1182.348877 1182.09729 1182.058472 1182.19873 1182.26416 1188.129761 1195.28186 1195.488403 1193.781128 1191.568604 1189.464478 1187.364258 1185.446045 1183.407959 1181.962769 1181.516357 1180.658081 1179.444214 1178.942017 1179.643799 1179.703857 1180.219727 1180.874878 1181.590698 1182.608765 1183.489136 1184.537598 1185.352295 1186.027222 1186.733032 1187.414673 1188.174316 1188.846191 1189.622681 1190.246948 1190.541626 1191.300781 1191.70166 1192.181396 1192.773315 1193.495117 1194.029785 1194.250732 1194.312988 1194.389404 1194.561401 1194.619629 1194.650146 1194.713989 1194.656128 1194.649048 1194.656006 1194.77002 1194.631592 1194.824097 1197.006226 1198.269165 1198.078491 1196.743164 1196.472656 1197.254395 1197.277954 1199.004761 1199.952393 1200.051147 1199.709106 1200.53894 1200.949585 1200.845581 1202.611572 1205.234009 1206.081909 1209.126953 1213.122681 1216.9021 1219.254028 1220.816284 1222.107056 1225.216064 1229.426392 1233.80249 1239.831909 1245.348999 1248.902466 1252.596313 1254.584839 1254.243408 1256.008545 1258.542847 1257.662842 1254.726929 1270.000977 1287.535522 1297.405884 1305.601685 1310.027222 1315.64856 1316.231201 1313.327759 1310.699463 1307.986572 1306.449219 1301.820435 1303.242798 1307.329468 1309.073975 1309.017822 1307.783936 1305.940186 1296.153931 1292.33252 1296.196777 1294.773682 1288.383789 1280.556641 1272.625977 1263.920044 1250.730225 1239.190186 1238.008789 1253.340332 1267.189941 1279.30188 1292.643188 1295.323486 1292.255981 1283.181641 1276.410522 1269.220703 1274.036133 1279.204956 1282.990845 1283.165771 1280.331299 1278.31958 1289.586914 1297.137573 1283.366699 1275.761597 1271.918335 1267.820557 1266.941406 1265.94043 1263.297119 1259.204346 1256.000488 1252.794922 1249.517944 1244.812988 1246.734741 1255.263306 1256.718262 1250.483887 1249.544556 1255.55249 1260.428345 1251.084351 1232.173584 1220.67981 1210.63623 1199.829468 1190.7229 1184.404419 1177.305542 1172.425659 1168.650269 1169.128418 1169.494873 1169.241455 1167.583374 1164.201904 1160.265137 1158.101807 1155.970337 1151.639893 1149.582275 1154.044556 1156.301758 -1221.315796 1207.524536 1190.62207 1180.420776 1175.11438 1170.680542 1174.997925 1182.661621 1193.541626 1203.650635 1215.386963 1232.805664 1253.042114 1263.656006 1264.545044 1260.068604 1262.93811 1272.671753 1281.360474 1287.492188 1290.141357 1290.080933 1293.961548 1298.426636 1298.745483 1292.50293 1278.743164 1286.938599 1310.995117 1326.773926 1339.610718 1339.014893 1344.485596 1344.420898 1355.142822 1368.757202 1373.66272 1371.373169 1361.670654 1346.785767 1344.953369 1345.161255 1337.039429 1331.887451 1334.514404 1333.638794 1329.823853 1322.661743 1315.174927 1303.918945 1293.999146 1288.711304 1309.49707 1321.432495 1329.323975 1334.97937 1342.022705 1343.35498 1344.282715 1342.509277 1334.607056 1326.985229 1318.942261 1319.111572 1315.309692 1305.949829 1306.149536 1307.405396 1303.579102 1292.848877 1289.368774 1293.265625 1293.897949 1295.986938 1299.236084 1301.028931 1301.666626 1301.355713 1299.380615 1294.780029 1292.47876 1290.699219 1287.837769 1280.684204 1280.439819 1281.115845 1280.100464 1283.084473 1286.066406 1288.667358 1288.978271 1286.47583 1281.649536 1278.784546 1279.699463 1280.434814 1288.552124 1293.740845 1289.327759 1273.562134 1275.177002 1295.355591 1299.332764 1299.451782 1296.950439 1294.03418 1291.639771 1289.388306 1286.092529 1282.440918 1280.27124 1280.227783 1282.520996 1287.368652 1288.651978 1290.330322 1289.558105 1290.593384 1291.445435 1291.921509 1291.92981 1291.126221 1289.995728 1288.670654 1288.022095 1287.601318 1287.286621 1286.757324 1286.047729 1285.452271 1284.567749 1283.495483 1283.035156 1285.62561 1288.867798 1291.065186 1293.507324 1296.213257 1296.543823 1293.994141 1291.546143 1289.109619 1287.498169 1286.180054 1285.119629 1284.259888 1283.081909 1281.510376 1273.896851 1267.931396 1269.894897 1269.485718 1268.539917 1271.668457 1273.343262 1280.454346 1281.626343 1276.121094 1266.556885 1250.236328 1250.616577 1252.291016 1254.616821 1257.442139 1255.473633 1257.81958 1268.974121 1269.510498 1270.401367 1271.382812 1272.004761 1271.568237 1270.075317 1268.339478 1268.003052 1271.980957 1278.511963 1282.852417 1285.706909 1288.236328 1292.385498 1297.044067 1302.037964 1306.383301 1306.631714 1306.476562 1305.21228 1303.172974 1303.429077 1303.538696 1302.654175 1302.572754 1303.111816 1299.822754 1294.423706 1287.912231 1279.896729 1275.715088 1271.926025 1269.363037 1267.305908 1265.974243 1265.84729 1265.912598 1264.537354 1263.029053 1262.085449 1265.075073 1270.622559 1274.54895 1277.435913 1279.799438 1285.259277 1289.579346 1294.094604 1303.969727 1305.023804 1304.694702 1304.326172 1305.010254 1305.457397 1304.066162 1303.711304 1301.189209 1297.802734 1296.184082 1295.13916 1293.685913 1291.567017 1290.626465 1289.55957 1286.738403 1283.342896 1278.127075 1269.919067 1264.031372 1267.345947 1276.553833 1282.808716 1282.575195 1278.630371 1272.337646 1268.026245 1267.305298 1267.100708 1265.974365 1263.583008 1261.650513 1260.391602 1259.579346 1259.262085 1258.915527 1258.145752 1256.831299 1253.060303 1247.710449 1243.477539 1240.139526 1241.906494 1244.390625 1244.598633 1244.897339 1245.987183 1246.455444 1246.117188 1245.542969 1244.154419 1242.798218 1242.018066 1241.899658 1241.918945 1242.733276 1243.479126 1244.068848 1244.665161 1245.191284 1245.0448 1244.973389 1244.390015 1243.21167 1241.909546 1240.667847 1239.343506 1238.109619 1236.802368 1235.58667 1234.438599 1233.457275 1232.52478 1231.487793 1230.365723 1229.509155 1228.693726 1227.450073 1226.013672 1224.529785 1223.310669 1222.476929 1222.102295 1221.87146 1221.590088 1221.154175 1219.470215 1208.862061 1213.30542 1215.51416 1217.125244 1219.490356 1220.505615 1220.478271 1219.63147 1218.015991 1217.290894 1216.786011 1216.817871 1218.121094 1217.713257 1214.966675 1211.171021 1207.580933 1206.984253 1206.794189 1206.466553 1207.42749 1208.548706 1208.715698 1207.967773 1206.272705 1204.276978 1203.679321 1203.487183 1203.460938 1204.046387 1204.772461 1204.875854 1204.537842 1204.142334 1202.981934 1200.988403 1198.555542 1195.856689 1195.126221 1195.090454 1194.988892 1194.637695 1194.564331 1194.552368 1193.356445 1192.163086 1191.55835 1191.290894 1191.646118 1192.337036 1193.112183 1193.931274 1194.661133 1195.717773 1197.329468 1198.440308 1199.490234 1200.700684 1202.278442 1204.529785 1206.723022 1207.844849 1207.906616 1207.572021 1207.384766 1207.206909 1206.572632 1205.469971 1204.13623 1202.687866 1201.094971 1199.369507 1197.63208 1196.112793 1195.058472 1194.709351 1195.428345 1196.125244 1195.907593 1193.714355 1192.578247 1194.399414 1196.615479 1197.33374 1197.809937 1198.331055 1198.727173 1198.942383 1199.078003 1199.06311 1199.159668 1199.015015 1198.783325 1198.698486 1198.412598 1198.101685 1197.524658 1196.817261 1196.629272 1197.552002 1198.744629 1199.590698 1200.091553 1200.322876 1200.317871 1200.123901 1199.873535 1199.667114 1199.378174 1199.043213 1198.625244 1198.107422 1197.37085 1196.457153 1195.504028 1194.841187 1194.029541 1193.162354 1192.2854 1191.315796 1190.305908 1189.415039 1188.409668 1187.614258 1186.795166 1186.141357 1185.457642 1184.769775 1184.049194 1183.230469 1182.505737 1182.206421 1182.04895 1182.032837 1182.021362 1187.860474 1195.800781 1196.738037 1195.921997 1194.153564 1191.911133 1189.476318 1187.121948 1184.877075 1183.06311 1182.486206 1181.638794 1180.925659 1179.513184 1179.436279 1180.325928 1180.556885 1180.944946 1181.543823 1182.159912 1183.026367 1184.041016 1184.870605 1185.609131 1186.255737 1186.814941 1187.467163 1188.046875 1188.724487 1189.311279 1189.891724 1190.690796 1191.081909 1191.625854 1192.180786 1192.708618 1193.224365 1193.473022 1193.840332 1194.125122 1194.378418 1194.945557 1195.501221 1196.023682 1195.725708 1194.84375 1194.646851 1194.632324 1196.288574 1199.093872 1201.391724 1202.671875 1202.227905 1200.22644 1199.04126 1199.162842 1201.181641 1204.202148 1205.385498 1205.363525 1203.730591 1202.791138 1202.627319 1202.387817 1202.004517 1201.778687 1203.390137 1206.324341 1209.278076 1212.465698 1215.379395 1217.302734 1218.541382 1221.709229 1227.976929 1233.671021 1239.601807 1245.384766 1247.400757 1248.616821 1247.952393 1245.466553 1246.766968 1244.893188 1243.179443 1256.292114 1268.460938 1286.333252 1296.416504 1303.867188 1309.01709 1315.153809 1317.891479 1315.493408 1313.299194 1311.137085 1308.844238 1306.147339 1305.711914 1308.460449 1310.101318 1310.15979 1308.839478 1306.799805 1301.946899 1298.806641 1300.037231 1296.654541 1290.843506 1281.94397 1275.064209 1266.714722 1255.987671 1246.3302 1239.129761 1258.022461 1272.514893 1283.019531 1289.937134 1291.739136 1288.01001 1280.323608 1273.755737 1267.712891 1267.033325 1270.949707 1273.094116 1272.992554 1270.250488 1276.035156 1286.748779 1295.061279 1295.752441 1283.439453 1278.612793 1275.473877 1273.222656 1272.71875 1272.296265 1269.834595 1265.971191 1262.378052 1256.754761 1254.743896 1258.567627 1260.565308 1256.70813 1249.447144 1243.761719 1245.840698 1248.650391 1242.400879 1232.539429 1220.583374 1210.061646 1202.04187 1194.745483 1187.698608 1181.40918 1178.460571 1177.058105 1177.046753 1176.324463 1174.856934 1172.085693 1168.042969 1164.823975 1163.201538 1161.598389 1158.579712 1158.111084 1161.17981 1161.31189 -1223.187866 1213.443237 1196.515625 1182.265381 1177.732544 1172.64502 1173.085083 1178.755249 1184.540161 1194.300659 1202.622559 1219.31189 1242.314209 1262.447998 1272.906494 1272.957031 1277.119507 1283.539062 1297.126221 1305.844971 1306.294067 1306.502075 1309.638794 1312.608887 1311.465698 1304.554199 1302.619385 1290.36438 1313.170654 1329.928955 1347.51123 1353.531982 1354.577026 1360.017456 1366.478149 1372.900024 1377.92688 1375.615601 1368.797485 1359.289795 1359.822388 1354.020508 1345.52124 1345.725342 1340.980835 1334.756836 1329.824219 1322.132202 1314.438721 1301.597534 1290.98584 1292.152832 1300.941162 1314.533447 1321.13269 1326.392822 1331.458008 1338.179077 1343.624023 1344.574219 1336.97998 1328.416626 1325.739014 1321.209473 1315.807251 1316.362427 1314.382202 1308.85376 1299.824341 1291.362915 1295.63855 1298.020874 1298.212158 1298.840088 1300.332153 1301.137329 1301.084717 1300.098999 1298.317749 1295.804321 1293.503784 1292.54895 1291.307251 1285.069946 1283.461792 1282.826294 1280.749634 1284.8125 1289.500732 1292.540527 1292.71106 1286.219727 1279.704834 1281.385498 1284.047974 1287.614014 1293.822388 1296.648193 1292.871704 1272.775391 1283.9552 1301.355957 1305.57605 1304.034302 1300.428345 1296.919312 1294.097534 1290.71582 1286.655151 1280.960693 1281.25293 1285.20752 1289.780884 1293.134521 1294.650391 1294.289429 1293.625 1294.297485 1296.391846 1296.931763 1296.677612 1295.531494 1293.476562 1291.525024 1290.662964 1290.575806 1290.439087 1289.771973 1288.671997 1287.849365 1286.905396 1286.150879 1285.808472 1286.764526 1287.810791 1288.563232 1289.393555 1290.625977 1290.868286 1289.458862 1287.660889 1285.224609 1283.628662 1282.472778 1282.165283 1282.707764 1282.623535 1281.949341 1278.793091 1268.689087 1266.776367 1266.773682 1266.775269 1266.389404 1266.445557 1268.699219 1275.143066 1269.896851 1255.096802 1251.07019 1252.306396 1254.570679 1257.751831 1265.362183 1257.412598 1255.062866 1265.151489 1268.689087 1268.909912 1270.968384 1273.006104 1273.371094 1272.162109 1270.889648 1270.020264 1271.289795 1276.341064 1279.337769 1281.244141 1284.239868 1288.286743 1292.287109 1297.531494 1303.204834 1306.018799 1306.446899 1305.799683 1305.616089 1305.887573 1305.686646 1305.622314 1305.79126 1305.559082 1299.525513 1293.809692 1286.387695 1279.961426 1275.944824 1272.610596 1269.76416 1267.731567 1268.016846 1268.862549 1269.210815 1267.950195 1265.263794 1263.775269 1263.568604 1267.991821 1271.249634 1273.668945 1276.381714 1279.93396 1284.062378 1287.819946 1291.564697 1295.593872 1297.631592 1298.202393 1298.37561 1298.560059 1302.750854 1305.159668 1300.676147 1297.112061 1295.447754 1294.623901 1294.239136 1293.739502 1293.540894 1293.471069 1291.683838 1285.87439 1280.939453 1273.04248 1266.695312 1264.920776 1269.870483 1277.971069 1282.94043 1282.87085 1278.15625 1271.962646 1270.944824 1270.811279 1269.279541 1266.897705 1264.967285 1263.294922 1262.02002 1260.907471 1259.923096 1258.566406 1256.373779 1252.048218 1247.095093 1242.58606 1240.541138 1244.82666 1245.387207 1245.781738 1246.564087 1247.135742 1247.07019 1246.597168 1245.605591 1243.895752 1243.152832 1242.954224 1242.574585 1242.918579 1243.771973 1244.590942 1245.370239 1245.82251 1245.872681 1245.585815 1245.286621 1244.536011 1243.37146 1242.359985 1240.888306 1239.475342 1238.001587 1236.635376 1235.349487 1234.107544 1233.11145 1232.094116 1231.160889 1230.441284 1229.717529 1229.064087 1228.018677 1226.706055 1225.359619 1224.047852 1223.071899 1222.380737 1221.912598 1221.506836 1220.534424 1216.821777 1209.997925 1214.818359 1216.560059 1217.809937 1219.524902 1220.668213 1220.650757 1219.533936 1219.712402 1219.672974 1218.907715 1218.270386 1220.038818 1220.069458 1218.0 1213.687866 1209.805054 1208.956543 1208.683228 1207.884155 1207.398193 1208.699341 1208.819214 1208.000122 1206.295166 1205.387451 1205.315552 1205.311279 1205.509399 1206.586304 1207.288818 1207.526733 1207.525879 1207.244751 1206.149536 1203.59436 1200.013184 1195.626465 1196.038696 1196.473511 1196.26709 1195.574951 1195.488892 1195.683105 1194.853271 1192.933105 1192.063965 1191.796997 1191.990479 1192.4646 1193.112915 1193.722656 1194.334229 1195.390259 1196.845947 1198.069214 1199.18335 1200.569946 1202.331177 1204.877686 1207.298584 1208.480957 1208.709839 1208.633911 1208.521362 1208.321655 1207.718872 1206.811523 1205.427368 1203.99707 1202.433105 1200.83606 1199.080444 1197.567749 1196.268799 1195.832153 1196.326904 1197.125488 1197.112671 1196.502808 1195.934326 1194.695312 1194.448975 1196.728149 1197.67395 1198.286987 1198.999023 1199.447144 1199.677246 1199.927246 1199.958008 1199.856323 1199.773804 1199.636353 1199.364624 1199.152344 1198.788086 1198.566772 1198.53186 1198.974976 1199.621948 1200.19104 1200.596558 1200.86377 1200.820557 1200.667114 1200.439575 1200.123047 1199.772583 1199.422852 1198.890015 1198.361206 1197.668457 1196.758545 1196.060181 1195.486206 1194.722534 1193.820557 1192.839111 1191.687256 1190.733154 1189.678833 1188.690796 1187.939575 1187.187134 1186.383667 1185.646606 1184.927979 1184.044189 1183.221436 1182.500122 1182.211914 1182.098511 1182.180054 1182.449219 1188.58252 1195.520996 1197.300293 1196.812622 1195.884521 1194.231812 1191.559326 1188.938599 1186.635376 1184.858887 1183.502075 1182.56604 1181.661743 1181.198975 1180.890625 1180.794678 1180.931885 1181.09436 1181.550293 1182.009521 1182.67334 1183.445312 1184.373047 1185.145386 1185.818604 1186.346924 1186.82373 1187.392822 1187.957886 1188.518555 1189.101074 1190.12085 1190.607422 1191.155762 1191.672852 1192.140381 1192.601807 1192.983643 1193.411987 1193.930054 1194.650635 1195.403442 1196.709473 1197.502197 1197.671997 1196.618286 1196.029663 1197.444336 1200.94104 1204.29126 1206.522583 1207.249512 1207.122681 1205.413696 1203.468872 1204.439453 1207.468872 1209.062378 1209.616821 1209.020264 1207.200439 1205.486938 1205.050171 1205.608643 1204.967407 1203.520996 1202.401123 1204.582764 1206.511963 1208.37207 1211.913696 1214.664673 1217.025391 1220.863403 1225.564941 1230.263062 1235.708374 1244.307129 1245.71814 1244.990112 1241.621948 1239.740723 1241.462891 1242.356689 1248.219604 1258.24707 1269.318726 1282.367432 1293.142578 1299.695435 1305.219849 1310.903564 1315.457397 1315.375244 1315.14978 1313.62439 1312.070557 1311.215698 1310.816162 1311.289673 1312.11499 1311.820923 1310.47168 1307.543823 1305.059814 1305.784424 1304.768677 1299.938965 1292.576904 1283.078735 1277.632324 1270.394653 1264.739624 1256.986328 1242.990356 1255.59082 1273.060425 1284.756592 1291.81189 1290.225342 1285.635742 1280.091675 1273.342407 1267.988159 1263.830444 1261.257202 1259.925171 1261.110962 1263.424927 1274.310059 1283.988647 1292.173218 1293.879272 1288.616089 1282.640625 1277.630859 1273.205078 1272.820068 1272.571167 1272.225952 1271.362183 1268.251221 1262.643555 1260.116455 1260.276733 1257.843872 1246.804443 1240.236206 1234.874634 1234.102783 1236.804199 1235.745361 1231.307861 1225.274658 1219.641479 1209.304077 1199.733643 1192.690674 1185.916382 1186.432739 1186.933105 1186.278442 1184.676636 1181.105591 1174.77356 1169.658691 1169.105591 1168.12207 1165.870361 1163.670288 1164.195435 1165.728027 1165.667603 -1216.438477 1206.917236 1197.012085 1191.236938 1182.085327 1176.525391 1172.595337 1174.423096 1178.403687 1180.667114 1182.781616 1196.951904 1224.411987 1246.663452 1267.740356 1273.420898 1276.12146 1276.613892 1281.580933 1294.026367 1307.447388 1315.254517 1321.459106 1324.289795 1321.75415 1316.345825 1319.212524 1314.723022 1312.733765 1329.776001 1349.078003 1364.485352 1370.864258 1376.507324 1379.404907 1379.590454 1380.063232 1378.458984 1372.481567 1369.910522 1368.948853 1364.95813 1356.606323 1347.582031 1336.682129 1330.098877 1325.206909 1317.05603 1307.005371 1297.105347 1293.49707 1298.827637 1300.681763 1305.059326 1312.956665 1315.017212 1324.132812 1333.789429 1343.092529 1345.477417 1339.526978 1333.728271 1329.892334 1324.480469 1320.495605 1320.471069 1318.21228 1307.307495 1301.890869 1305.370483 1304.448242 1304.448975 1302.839478 1302.769775 1303.640503 1302.58728 1301.349609 1300.040405 1298.306152 1296.392578 1295.126221 1294.436401 1293.351929 1288.785767 1286.134888 1285.653076 1286.260498 1288.481812 1292.02832 1293.560547 1293.28479 1284.751831 1281.450195 1286.437744 1289.2854 1290.228027 1295.962646 1301.244019 1292.351074 1278.128418 1286.844604 1297.702271 1306.886475 1305.929443 1302.652954 1298.677002 1295.548218 1292.370483 1288.550171 1285.377075 1288.005249 1290.878662 1295.562134 1298.932861 1301.178833 1301.44104 1300.894043 1301.322144 1303.328857 1303.690186 1302.472168 1300.212769 1297.925537 1294.813843 1293.664185 1294.174805 1293.721191 1292.501465 1291.058838 1290.184204 1289.691895 1288.823242 1287.91626 1287.916748 1288.063599 1288.243164 1288.284546 1288.308228 1287.718994 1286.156006 1284.057129 1281.723999 1280.182129 1279.71814 1280.203247 1280.9552 1281.893555 1281.826416 1278.413452 1268.425171 1266.745361 1266.65564 1267.802979 1267.599365 1265.756958 1265.28186 1265.987549 1259.034302 1251.533691 1253.098145 1253.607422 1255.044312 1265.283569 1270.569458 1262.703003 1255.457642 1262.252319 1267.53833 1268.849121 1269.134766 1274.968872 1275.529297 1275.155518 1274.708374 1274.55542 1275.004517 1276.405029 1278.324585 1279.274414 1280.046143 1283.300171 1289.604126 1293.380737 1298.576294 1302.596924 1305.435791 1306.295166 1306.164185 1306.111328 1306.096558 1305.364868 1303.703125 1298.461548 1294.269287 1289.290283 1283.486938 1279.041382 1276.591309 1273.514526 1269.200562 1268.920288 1271.817749 1272.206421 1271.140381 1269.382812 1267.108154 1264.957031 1263.948242 1266.327271 1268.16748 1270.109497 1272.404541 1275.858765 1279.235718 1281.683838 1284.656616 1287.986572 1290.475342 1291.760986 1291.849487 1291.649292 1293.454956 1296.049194 1296.524658 1294.715088 1293.301514 1293.431519 1293.372559 1293.630127 1293.586182 1293.640137 1292.773438 1286.183838 1280.787231 1274.983643 1269.762329 1265.940552 1265.872314 1271.794189 1280.617676 1285.72168 1282.937256 1278.496948 1275.737549 1273.968994 1271.746826 1269.109009 1267.010498 1265.284424 1263.706665 1262.313599 1260.891846 1259.119507 1257.343262 1252.863281 1246.821655 1240.891968 1244.500122 1245.55835 1246.261597 1247.123779 1247.687378 1247.921265 1247.655762 1246.887207 1245.279907 1243.889893 1243.762939 1244.330566 1243.565918 1243.997192 1244.908813 1245.931519 1246.391602 1246.505615 1246.34668 1246.055786 1245.53772 1244.792236 1243.804443 1242.416992 1240.886108 1239.348633 1237.802124 1236.287109 1234.955566 1233.575928 1232.289917 1231.463623 1231.02771 1230.709595 1230.251465 1229.848389 1228.906738 1227.560791 1225.815552 1224.256958 1222.944702 1222.111328 1221.44519 1220.884155 1219.982056 1212.891113 1211.611206 1215.305176 1217.074219 1218.476196 1219.960938 1220.463501 1220.909058 1220.706299 1220.432129 1220.39209 1220.110596 1219.653442 1220.143677 1220.894775 1219.201782 1216.130127 1213.355103 1211.405273 1210.464722 1209.491333 1208.525879 1209.285156 1208.873047 1207.401733 1206.541382 1206.90686 1207.30127 1207.045898 1207.227173 1208.166748 1208.484985 1208.489624 1208.454346 1208.235962 1207.839478 1205.80957 1202.658936 1200.400391 1198.69751 1198.044434 1197.567017 1196.83252 1196.274292 1195.486816 1194.581055 1193.379761 1192.705322 1192.293701 1192.370972 1192.736694 1193.264404 1193.927612 1194.346802 1194.865356 1196.069214 1197.417114 1198.476074 1199.709229 1201.23584 1203.937866 1206.703491 1208.518066 1209.028809 1209.173462 1209.201782 1208.980347 1208.568115 1207.727173 1206.514526 1205.180786 1203.804199 1202.321045 1200.836548 1199.483276 1198.467773 1197.955444 1197.990723 1198.134033 1198.204956 1197.831177 1197.284668 1196.382446 1195.171631 1195.52002 1197.085815 1198.232422 1199.207397 1199.901489 1200.41272 1200.795288 1200.927246 1200.815796 1200.852295 1200.775391 1200.535889 1200.446045 1200.147827 1199.994019 1200.086182 1200.288574 1200.661377 1200.890137 1201.129639 1201.278564 1201.248047 1201.079468 1200.769043 1200.413696 1200.084595 1199.618774 1199.094849 1198.488647 1197.878662 1197.195068 1196.610718 1196.028198 1195.342163 1194.347046 1193.265503 1192.093628 1190.912598 1189.932739 1189.057007 1188.149292 1187.27832 1186.432495 1185.599487 1184.810547 1184.020752 1183.08606 1182.436035 1182.174072 1182.289551 1182.672974 1185.03418 1190.581909 1195.948242 1197.28772 1197.101074 1196.565796 1195.56189 1193.010376 1190.602051 1188.326538 1186.4823 1185.056885 1183.757324 1182.592651 1181.996216 1181.74646 1181.293823 1180.952271 1181.333252 1181.584229 1181.954346 1182.470825 1182.997559 1183.876343 1184.68335 1185.368042 1185.852417 1186.250977 1186.701172 1187.297363 1187.862427 1188.479492 1189.710083 1190.352539 1190.842163 1191.284912 1191.802124 1192.212646 1192.723877 1193.238892 1193.804443 1194.656372 1195.697266 1197.359009 1198.769287 1199.520386 1200.07019 1201.065674 1202.966187 1206.123291 1209.603149 1211.52771 1212.174316 1211.680054 1209.564087 1206.74646 1206.356079 1209.426147 1212.037842 1212.710449 1211.870361 1209.769775 1206.861572 1207.594727 1208.555664 1208.272949 1206.595581 1203.227173 1203.580078 1204.356323 1205.681519 1209.673584 1212.926025 1215.810547 1218.96936 1222.884521 1226.902344 1230.319458 1234.987915 1238.657837 1236.999023 1234.006714 1233.431274 1241.552979 1243.317505 1250.925049 1259.98877 1269.533447 1277.235962 1285.49585 1293.10437 1298.343262 1305.118286 1308.720215 1312.802856 1317.175659 1316.412109 1315.728882 1314.99585 1314.616089 1315.004395 1314.522217 1313.888672 1312.871338 1311.104004 1309.753906 1309.604248 1308.020386 1303.72522 1294.542847 1289.378052 1284.404175 1279.034302 1272.085815 1262.962891 1249.738281 1253.200806 1271.214233 1285.636108 1294.611084 1291.496094 1285.510376 1279.584961 1272.724976 1266.750854 1262.176636 1257.78479 1254.504639 1253.500488 1260.272339 1270.525391 1277.660767 1279.445679 1283.040039 1284.226685 1281.104858 1273.321533 1267.39563 1267.998291 1266.040283 1263.012451 1259.926025 1257.605591 1257.866333 1259.078003 1259.560425 1254.23291 1243.807861 1231.369385 1223.276245 1223.829468 1227.346191 1226.322632 1224.93396 1227.496826 1230.726807 1220.373291 1206.517334 1196.094971 1195.297729 1195.711792 1195.213135 1193.859619 1190.833618 1186.067871 1179.890137 1173.773193 1173.86499 1173.035034 1169.836548 1169.024292 1170.28064 1171.297729 1170.521729 -1230.574219 1222.968018 1215.23291 1203.142212 1188.692749 1180.188599 1176.01355 1172.904053 1174.706665 1176.974365 1178.967773 1181.696045 1202.894165 1229.332275 1247.847534 1262.032959 1263.475098 1261.301758 1264.908325 1273.810181 1299.203857 1319.231323 1331.948364 1337.385254 1335.034912 1329.914429 1327.775024 1325.397461 1321.572754 1326.906372 1344.050781 1364.279053 1371.756714 1379.178589 1381.102051 1381.808594 1381.568115 1378.093872 1378.682373 1374.15918 1369.91687 1367.795654 1358.882568 1344.789917 1329.896362 1324.352051 1317.057861 1309.131836 1300.962524 1296.415894 1307.340332 1306.970825 1302.871216 1308.00647 1317.08728 1318.637573 1324.779053 1330.722656 1342.416138 1353.238525 1342.761353 1336.343872 1330.213135 1328.652832 1325.914429 1321.469238 1316.072998 1304.633423 1308.022217 1311.016602 1309.708008 1308.406372 1306.529663 1305.857544 1306.533569 1305.023193 1302.618164 1300.532715 1298.7229 1297.144165 1295.819214 1294.479248 1292.683228 1290.506592 1288.864868 1288.946167 1290.609985 1292.197876 1293.188843 1293.999756 1292.459229 1289.78125 1290.845337 1294.27002 1295.486938 1296.213989 1301.61792 1306.874634 1289.288818 1280.712769 1290.770996 1295.570679 1303.424438 1305.44043 1303.470825 1301.2948 1297.826294 1292.868164 1290.665039 1291.924194 1294.985229 1297.17749 1301.297241 1305.599976 1307.301025 1308.18042 1307.628662 1308.01123 1309.190186 1309.124023 1307.626465 1305.279297 1302.744507 1304.094116 1302.836792 1300.970703 1298.421753 1296.011597 1293.177002 1292.988403 1292.194946 1291.358887 1289.969482 1289.20105 1288.861694 1288.695557 1288.371216 1287.707886 1286.41394 1284.31897 1281.94873 1279.915283 1279.018066 1278.723022 1278.690063 1279.177734 1280.985596 1281.503418 1271.819824 1266.77124 1269.20874 1274.18396 1274.779175 1271.601318 1267.603882 1262.036011 1256.289551 1252.693848 1256.649536 1257.001343 1256.392334 1255.349731 1264.062378 1270.433594 1269.25769 1260.802734 1265.75061 1272.265503 1275.771606 1277.194946 1278.031128 1277.938354 1277.696411 1278.72168 1279.452148 1278.488403 1277.945557 1279.264038 1280.703979 1280.271484 1281.831299 1288.340576 1291.382202 1295.151001 1298.580444 1301.439087 1303.917114 1305.079468 1305.439941 1304.716675 1301.12146 1296.358887 1291.380981 1287.59082 1284.107666 1280.297607 1278.447754 1277.432129 1276.188721 1275.502319 1276.147827 1277.131714 1275.811768 1273.196411 1270.754028 1268.61145 1265.836304 1265.293579 1267.463867 1267.952148 1267.789551 1268.285034 1273.138672 1276.467529 1277.85376 1278.9198 1280.480347 1282.350342 1284.340576 1286.118652 1288.070068 1289.911377 1290.961426 1291.855469 1292.080566 1292.705566 1292.755493 1292.788452 1292.910156 1292.906128 1292.901123 1290.706177 1284.905884 1279.556641 1275.213257 1271.214478 1267.263184 1265.835205 1269.817017 1280.510254 1293.723022 1288.134888 1282.188965 1279.015503 1276.93457 1274.056885 1270.928345 1268.071411 1266.381958 1265.091309 1263.444092 1261.690063 1259.978394 1258.020142 1253.937012 1247.264404 1241.375122 1244.874146 1246.151733 1247.12793 1248.006836 1248.532471 1248.744019 1248.459961 1247.283447 1244.633423 1243.927612 1244.835938 1244.879761 1243.9198 1245.159058 1246.567749 1247.11377 1247.176392 1247.063721 1246.788086 1246.305054 1245.691162 1245.152954 1244.087891 1242.462402 1240.769043 1239.193726 1237.516235 1235.930786 1234.164185 1232.77832 1231.708618 1231.359497 1231.171631 1231.27832 1231.392944 1231.293457 1230.560547 1228.391113 1225.868408 1223.684814 1222.149902 1220.954102 1220.131714 1219.195923 1217.204468 1211.349487 1211.725708 1214.943359 1217.769165 1219.439697 1220.009766 1220.541748 1220.86438 1221.087769 1221.171143 1221.0625 1220.876099 1220.739624 1221.511108 1221.569702 1220.188721 1217.788208 1215.372803 1213.472412 1212.264893 1211.339111 1210.699707 1210.007324 1209.037231 1207.758789 1207.379761 1208.208496 1208.812012 1208.575684 1208.672241 1209.244019 1209.327759 1209.368408 1209.23938 1208.884155 1208.341064 1206.492676 1205.323975 1203.682495 1201.409546 1199.892944 1198.618408 1197.505615 1196.227905 1195.282471 1194.480469 1193.731812 1193.075562 1192.796265 1192.854004 1193.189331 1193.792236 1194.26123 1194.532349 1194.828613 1195.082397 1195.95166 1197.324829 1198.180542 1199.605103 1202.115845 1205.154663 1207.794312 1209.295166 1209.60083 1209.704468 1209.509888 1209.146729 1208.289795 1207.388184 1206.087646 1204.84436 1203.612549 1202.553223 1201.573486 1200.772949 1200.27002 1200.015259 1199.662964 1199.294312 1198.903687 1198.345459 1197.496704 1196.177612 1195.150024 1196.566528 1198.129272 1199.356201 1200.462524 1201.118164 1201.627563 1201.925415 1201.984619 1201.942139 1201.983643 1201.793701 1201.634644 1201.50293 1201.280029 1201.404541 1201.562256 1201.759155 1201.750732 1201.763672 1201.738159 1201.619141 1201.36145 1200.979492 1200.577881 1200.176636 1199.67334 1199.173828 1198.564697 1197.947632 1197.295654 1196.736938 1196.290771 1195.685547 1194.69104 1193.520752 1192.296387 1191.146362 1190.0448 1189.09314 1188.168945 1187.265869 1186.253052 1185.358887 1184.46814 1183.411865 1182.835815 1182.552002 1182.200439 1182.831909 1185.308838 1188.169678 1192.867432 1196.671265 1197.539795 1197.334351 1196.828735 1195.88269 1194.035645 1191.777832 1189.798584 1187.906494 1186.30249 1184.968506 1183.396606 1182.946289 1183.022705 1182.220825 1181.463257 1181.108032 1181.865967 1182.054321 1182.286011 1182.746338 1183.454346 1184.233765 1184.821411 1185.346558 1185.628052 1186.176758 1186.677979 1187.29248 1187.934326 1189.486694 1190.054932 1190.490479 1191.067749 1191.632446 1192.086182 1192.659058 1193.185547 1193.816528 1194.705322 1195.843018 1197.715454 1199.433105 1201.259766 1203.219971 1205.120361 1206.925537 1210.934204 1215.204224 1217.12915 1218.085815 1217.414307 1214.174438 1210.349121 1206.813965 1210.546997 1214.983643 1216.85376 1216.445312 1213.519653 1210.544067 1210.551025 1211.100342 1210.577515 1209.185547 1205.701294 1203.544312 1204.223267 1204.878662 1208.447021 1211.697388 1214.491211 1217.394409 1220.157593 1223.317139 1226.392456 1228.96106 1230.181519 1230.462402 1232.395508 1238.78125 1245.510986 1248.722778 1253.679321 1260.463745 1267.756958 1272.961792 1279.85498 1285.287964 1289.115967 1292.362915 1299.502441 1308.438232 1316.963135 1318.471313 1318.035156 1317.51355 1317.430176 1317.274292 1316.785645 1315.632202 1315.015991 1315.104248 1314.074707 1313.663574 1311.24585 1306.248657 1301.015381 1296.355469 1291.829102 1284.946411 1277.542603 1268.362427 1255.136719 1254.290771 1269.707886 1285.217407 1295.02002 1292.225708 1286.032593 1279.902222 1273.555176 1267.264771 1262.023071 1256.405518 1253.139282 1252.108032 1258.011719 1266.707397 1267.900635 1267.035645 1270.229858 1276.695801 1276.605835 1272.749512 1265.117676 1254.545166 1251.471069 1248.57251 1247.625732 1247.113525 1247.230713 1248.807007 1249.4823 1246.68689 1240.593628 1228.726929 1220.357788 1217.381958 1219.171753 1215.353271 1217.351196 1224.581543 1232.930176 1231.571167 1216.798706 1206.001709 1205.88562 1204.983398 1203.611084 1201.291504 1197.494019 1191.502686 1184.5 1181.862915 1180.758301 1177.731934 1174.115601 1174.56665 1176.573242 1175.736938 1173.503662 -1249.433594 1239.266602 1229.157715 1214.352783 1196.210083 1184.643066 1181.417236 1176.973145 1173.321899 1175.17041 1176.956177 1179.864868 1185.881836 1205.024292 1230.483765 1241.588745 1243.699585 1243.702026 1258.445068 1269.608154 1292.028809 1319.192017 1335.129883 1343.601562 1344.433716 1340.776733 1339.339233 1335.220825 1335.338135 1338.737427 1340.385742 1354.479736 1366.783936 1375.796265 1380.800293 1382.156006 1382.928711 1382.024536 1379.971436 1368.460327 1364.325684 1359.814697 1352.382446 1342.24231 1328.329102 1322.270508 1315.824463 1305.329834 1300.944702 1315.394775 1320.205078 1314.869629 1303.138062 1314.177246 1322.990234 1326.849121 1330.4552 1340.39978 1351.271973 1356.125122 1345.637695 1339.094849 1335.766968 1332.969116 1328.572754 1320.450928 1315.583984 1319.153809 1319.223389 1317.259888 1314.406494 1311.877319 1310.497559 1309.571655 1308.425537 1305.223877 1303.202393 1301.240234 1299.500732 1297.505371 1295.540161 1293.467041 1292.705933 1292.904053 1291.857544 1291.306641 1293.783081 1295.749878 1296.069946 1294.830811 1292.427979 1293.110474 1294.952271 1298.464355 1301.696411 1304.895996 1306.86792 1306.670776 1288.81897 1283.737183 1299.409546 1306.000488 1303.35437 1304.813354 1305.742065 1304.790039 1300.834717 1293.074219 1292.209473 1295.853271 1299.946411 1302.661133 1306.746826 1310.393433 1312.413818 1313.319458 1314.996094 1315.928833 1315.536255 1314.166748 1312.273315 1309.748901 1308.248657 1309.067383 1308.565552 1306.959229 1304.044067 1300.440552 1298.030884 1297.154541 1296.099609 1294.758301 1292.513428 1290.944458 1290.318237 1289.588867 1289.066162 1288.217773 1286.455566 1284.104736 1281.719116 1279.855835 1278.645386 1278.269775 1278.326538 1278.185791 1277.655762 1275.095215 1268.620972 1273.124634 1281.169434 1288.335938 1281.3125 1274.650146 1268.402588 1261.792603 1257.590942 1255.592773 1260.01123 1263.056396 1265.287598 1261.327881 1264.59082 1272.282837 1276.504761 1267.095703 1268.430542 1279.021729 1282.69104 1282.720093 1282.029785 1280.434326 1279.367798 1281.533447 1282.815796 1280.513306 1279.381958 1280.619751 1283.438721 1285.353638 1287.724243 1289.973145 1291.914307 1292.287231 1295.133057 1298.462891 1301.886597 1303.713379 1303.977661 1302.718994 1298.890137 1292.971069 1289.783813 1285.482422 1280.433838 1279.098389 1278.701538 1278.85144 1279.22644 1281.406006 1283.035522 1281.802368 1279.308594 1275.756714 1272.382202 1269.650635 1266.641602 1267.418335 1270.828003 1272.512817 1272.173096 1271.944092 1274.028564 1276.384399 1277.310425 1277.587158 1277.970337 1278.529541 1279.406616 1282.365112 1284.995605 1286.897461 1288.414917 1289.981079 1291.246826 1291.993652 1292.409668 1292.383423 1292.303711 1291.687378 1290.675171 1288.510864 1283.954834 1279.377441 1276.887817 1272.168091 1267.495239 1266.624634 1268.835815 1280.857544 1294.459839 1290.788086 1285.990112 1282.78894 1280.218872 1276.918945 1273.014771 1269.3573 1267.47876 1266.177734 1264.366455 1262.472656 1260.263672 1257.801514 1253.470215 1246.835693 1241.993164 1245.173584 1246.560425 1247.676514 1248.681641 1249.398682 1249.774414 1249.450928 1248.282959 1246.044922 1245.532715 1246.656616 1246.418579 1246.69043 1247.748779 1248.106689 1248.117554 1247.946045 1247.557007 1246.952271 1246.412842 1245.759644 1245.109497 1244.088989 1242.362793 1240.802856 1239.190308 1237.488647 1235.817505 1233.644409 1231.918945 1231.779785 1231.820068 1232.041138 1232.19751 1232.282471 1232.265381 1231.872559 1228.889282 1225.26001 1222.735474 1221.312988 1220.071289 1218.538818 1216.727539 1214.324097 1211.580688 1210.862305 1215.241577 1218.563599 1219.726196 1219.688599 1220.327148 1220.959229 1221.42041 1221.619141 1221.744263 1221.641724 1221.90979 1221.98938 1221.862549 1220.739502 1218.700806 1216.715088 1215.057129 1213.917847 1212.987183 1212.044922 1210.940186 1209.432007 1207.817505 1207.856812 1208.897583 1209.592163 1209.900879 1210.220703 1210.254028 1210.191406 1210.149048 1209.94397 1209.523804 1208.990723 1207.904175 1207.489136 1206.582764 1204.14978 1201.543823 1199.484863 1197.964844 1196.755371 1195.874268 1195.348511 1194.048828 1193.549316 1193.264771 1193.314819 1193.693481 1194.424805 1194.907959 1195.22644 1195.336792 1195.279907 1195.191895 1195.459717 1196.473511 1197.844971 1199.639038 1202.664429 1206.335571 1208.90686 1209.83667 1209.97876 1209.934937 1209.570435 1208.888672 1207.959106 1207.187378 1205.920288 1205.031494 1204.299316 1203.596191 1202.839722 1202.232544 1201.858154 1201.439941 1200.785278 1200.117432 1199.186035 1198.135742 1196.918091 1195.888794 1196.738892 1198.46814 1199.984497 1201.098145 1201.988159 1202.606201 1202.814941 1203.021729 1203.049683 1203.112305 1203.074951 1202.916504 1202.788452 1202.536377 1202.54248 1202.68396 1202.719849 1202.703369 1202.500366 1202.209839 1201.99939 1201.567993 1201.106567 1200.640259 1200.13562 1199.592529 1199.005371 1198.511475 1197.942627 1197.356812 1196.817993 1196.209351 1195.685669 1194.879395 1193.556396 1192.337402 1191.204712 1190.149414 1189.078613 1188.044067 1186.906982 1185.880005 1184.896729 1183.74646 1183.010376 1182.887939 1183.001587 1182.552734 1182.93811 1186.323364 1190.143799 1194.812012 1197.356689 1197.690796 1197.53186 1197.019409 1196.215088 1194.927612 1193.001221 1191.13855 1189.300415 1187.533081 1185.9104 1184.122681 1183.232666 1183.533691 1182.60022 1182.192261 1181.033325 1181.580078 1182.150879 1182.30603 1182.485474 1183.037109 1183.704224 1184.297974 1184.752197 1185.157227 1185.468018 1186.072388 1186.71875 1187.600342 1189.104614 1189.804565 1190.356812 1191.031494 1191.657104 1192.106323 1192.746826 1193.407349 1193.939209 1194.525024 1195.377563 1197.641113 1199.874878 1202.276001 1205.157715 1207.816772 1212.630005 1218.031006 1220.680298 1222.156006 1222.52002 1221.944214 1219.638062 1215.660034 1210.887695 1213.07312 1218.401367 1220.484619 1220.555786 1219.216919 1216.053101 1215.363892 1214.321167 1212.941772 1211.239746 1208.815063 1206.491211 1207.094238 1205.637085 1207.926514 1210.328857 1212.71582 1215.370972 1218.042969 1220.45459 1223.275024 1225.735718 1228.612061 1232.449951 1235.571533 1241.095581 1246.304932 1250.857178 1256.671021 1260.394531 1264.348633 1266.58252 1269.754395 1276.071899 1279.113647 1281.076904 1291.068237 1301.550537 1309.55127 1317.239868 1318.931763 1319.437988 1320.080566 1320.273438 1319.956543 1318.694824 1317.880493 1318.049438 1318.289062 1317.763672 1316.716187 1313.240234 1307.674561 1302.422119 1296.807495 1290.065552 1282.004517 1272.865112 1257.67749 1253.059204 1271.820923 1284.385986 1294.773315 1292.927856 1287.431274 1282.554688 1275.407593 1268.259033 1262.176147 1258.091675 1252.303223 1245.515991 1253.288696 1260.2854 1259.893188 1256.333862 1263.227051 1270.002808 1270.575073 1271.15625 1271.023438 1261.258545 1247.955688 1240.331421 1235.380005 1236.752441 1237.000122 1236.703857 1235.198853 1235.594971 1235.500854 1230.158081 1220.880981 1212.111328 1206.741089 1206.165527 1206.034668 1215.773315 1225.815552 1234.209717 1231.662231 1223.110352 1219.20166 1215.894775 1213.219849 1209.682495 1205.635376 1199.455322 1194.857666 1192.619019 1187.907471 1182.221802 1181.751343 1184.400146 1183.562256 1179.951538 1175.699585 -1258.092041 1244.528442 1229.277588 1220.420166 1209.47229 1201.850586 1195.360596 1183.936279 1177.55127 1173.941284 1175.248535 1177.609985 1180.647461 1188.773071 1207.740845 1219.221069 1217.159668 1223.911255 1238.748657 1257.744019 1274.936279 1302.487915 1331.85791 1340.389404 1343.71875 1344.884888 1344.809692 1341.882812 1342.656128 1348.394897 1350.374756 1357.946289 1366.097168 1374.976685 1379.964722 1382.347534 1382.99646 1382.579834 1376.113037 1360.804688 1354.168091 1351.216675 1343.460815 1332.91687 1325.685303 1320.86438 1313.31665 1302.742188 1312.078491 1324.120972 1328.020874 1318.403076 1306.930908 1320.672241 1330.757812 1334.923462 1336.897095 1347.263672 1357.190674 1356.510864 1352.061279 1343.807251 1341.791382 1336.447876 1328.910034 1318.814209 1317.977295 1322.34436 1323.199219 1321.069824 1318.122437 1315.486328 1313.607544 1314.311157 1315.291138 1306.611206 1304.072632 1302.163818 1300.421631 1297.739136 1294.001587 1292.776489 1294.220581 1294.758301 1293.469116 1292.424072 1296.467163 1299.84375 1299.768433 1295.18457 1295.18396 1302.028442 1303.69397 1303.889526 1305.890137 1310.655273 1314.033691 1312.690918 1291.603027 1291.734863 1305.675903 1312.651001 1309.335205 1309.211914 1310.395752 1309.164795 1305.224487 1293.378662 1296.356323 1303.796265 1306.244873 1308.355103 1312.75415 1315.648804 1317.427734 1318.608643 1319.976929 1321.359131 1321.039307 1319.516602 1317.161987 1314.930176 1313.778931 1314.04248 1313.124512 1311.190796 1308.125366 1304.441895 1302.184937 1303.14209 1302.627808 1299.367065 1295.826294 1293.112183 1292.926758 1291.862671 1290.833496 1289.884399 1287.88269 1285.094971 1282.591553 1280.99707 1278.717407 1278.284668 1278.231079 1278.625 1278.1875 1276.197021 1274.949707 1279.64502 1293.891479 1296.483032 1284.764404 1272.163574 1265.980591 1259.849487 1254.695435 1259.251099 1263.844116 1268.548096 1273.129272 1267.936401 1266.29895 1273.337402 1282.104736 1269.774292 1268.268433 1280.85791 1286.154663 1288.351685 1287.513306 1284.802856 1281.734375 1284.156982 1285.579102 1282.330811 1280.213013 1281.084351 1285.75293 1291.164307 1293.483887 1294.497925 1294.735596 1293.938965 1293.135132 1297.642334 1301.218018 1302.824585 1303.151855 1301.891968 1298.505859 1294.266846 1292.38562 1287.689697 1282.947021 1279.800171 1279.624268 1281.767456 1283.803101 1286.743652 1288.421875 1285.735718 1281.130005 1276.728394 1273.202393 1270.247437 1267.295654 1269.467529 1275.045044 1278.754761 1278.483032 1276.506104 1276.52063 1277.934814 1278.558472 1277.859741 1277.98291 1277.864624 1278.405762 1280.070312 1282.320435 1284.355347 1287.104858 1289.553345 1291.036987 1291.88208 1292.260864 1292.218872 1291.860596 1291.214844 1290.161377 1288.159058 1285.228149 1282.143555 1280.685303 1277.350586 1272.243286 1269.006958 1266.655029 1277.9646 1289.588135 1289.302856 1287.453491 1285.374878 1282.98584 1280.045898 1275.721558 1271.923462 1269.489868 1267.40686 1265.464478 1262.986572 1260.206299 1257.135864 1252.645386 1245.835693 1242.317749 1245.068115 1246.625488 1247.930908 1249.241577 1250.293213 1250.821899 1250.853516 1250.241455 1249.542725 1249.111938 1249.262573 1249.497314 1249.612305 1249.588867 1249.341431 1249.038208 1248.44165 1247.75 1246.917236 1246.231323 1245.507568 1244.763306 1243.662964 1242.330933 1240.619751 1238.947021 1237.326416 1235.764038 1233.963745 1232.799805 1232.616943 1232.708008 1232.654663 1232.64856 1232.632812 1232.629761 1231.78479 1227.797119 1223.767334 1221.380615 1219.78125 1218.130493 1216.072876 1214.230957 1212.344727 1210.581665 1214.885742 1217.275757 1218.707886 1219.371338 1219.630493 1219.88855 1221.004883 1221.645752 1222.02832 1222.216553 1222.340698 1222.556885 1222.4823 1222.070435 1221.269165 1219.454102 1217.72876 1216.398071 1215.286499 1214.459961 1213.463013 1212.414062 1210.913086 1208.390991 1208.576782 1209.775879 1210.467407 1210.939087 1211.222534 1211.232178 1211.164307 1210.929932 1210.582886 1210.244995 1209.721436 1209.239136 1208.693115 1207.897461 1205.726074 1202.278442 1199.601929 1198.095581 1197.221924 1196.51416 1195.387085 1194.450195 1193.932251 1193.704346 1193.779297 1194.10083 1195.025391 1195.41626 1195.932251 1196.195801 1196.285278 1195.980103 1195.636963 1195.661743 1196.497437 1197.552979 1199.456177 1203.983887 1207.641968 1209.578491 1210.157349 1210.171631 1209.930908 1209.453491 1208.544312 1207.899658 1207.122681 1206.577026 1206.151123 1205.409912 1204.576538 1203.916382 1203.621704 1203.248413 1202.542114 1201.655762 1200.453247 1198.975586 1197.398804 1196.857056 1197.708984 1199.299561 1200.895996 1202.187622 1203.148071 1203.771606 1204.103638 1204.233276 1204.271973 1204.369141 1204.345825 1204.185913 1203.914917 1203.720459 1203.551514 1203.664795 1203.685791 1203.631836 1203.328735 1202.92334 1202.449341 1201.969727 1201.394043 1200.77771 1200.113159 1199.541504 1199.015137 1198.433838 1197.775269 1197.24292 1196.612183 1196.191772 1195.621582 1194.81958 1193.424438 1192.270264 1191.15332 1190.055298 1189.000488 1187.711792 1186.568604 1185.364014 1184.178101 1183.135498 1183.144043 1183.227905 1183.736206 1183.189209 1182.771973 1185.366089 1190.692505 1195.60022 1197.493652 1197.699829 1197.608276 1197.28479 1196.701294 1195.721313 1194.563354 1192.936157 1190.91687 1188.804688 1187.01355 1185.451294 1184.611816 1183.935425 1182.756348 1182.617554 1182.509399 1181.065674 1181.621094 1182.399536 1182.375366 1182.664551 1183.16333 1183.701904 1184.172119 1184.509277 1184.690674 1185.339111 1186.318726 1187.272095 1188.845703 1189.515015 1190.281738 1191.006104 1191.71228 1192.384033 1193.038696 1193.731812 1194.401367 1195.270386 1195.705688 1197.127808 1200.3927 1202.997925 1205.852539 1211.35437 1219.809082 1222.782715 1225.427612 1227.454834 1227.165405 1225.506226 1223.26001 1220.613159 1217.8125 1218.975342 1220.487061 1222.160522 1221.899048 1219.529785 1220.087524 1219.633057 1217.922241 1215.799194 1213.478638 1210.928467 1209.570435 1208.92334 1206.806763 1206.677979 1208.978394 1210.791748 1213.260376 1215.664185 1217.899292 1220.565674 1223.489746 1227.623779 1232.195801 1235.686523 1239.906372 1244.174805 1250.210571 1255.382568 1258.440063 1260.678833 1262.725342 1264.989624 1266.845215 1266.533691 1271.898438 1283.303833 1291.675049 1300.625488 1308.953369 1317.577515 1320.169678 1321.921631 1323.974976 1324.736328 1324.015137 1323.312622 1322.647949 1322.52417 1321.695679 1320.689331 1319.076782 1314.832031 1307.766357 1301.140137 1293.911255 1286.164307 1277.157959 1266.829956 1254.806763 1269.526733 1284.096924 1294.651855 1292.535034 1287.640991 1283.206299 1276.408447 1267.661499 1260.706299 1254.799316 1250.427124 1244.091797 1246.981934 1257.6875 1254.645386 1250.971191 1258.799683 1263.813965 1264.168457 1265.019531 1265.903076 1261.621704 1252.813965 1241.745972 1230.467896 1219.243774 1223.319946 1222.650757 1221.116089 1221.438599 1232.69397 1233.61853 1225.337158 1215.323364 1202.744385 1197.214355 1198.701538 1205.775269 1215.763672 1226.390381 1233.946045 1235.864746 1234.500122 1233.383789 1226.313965 1221.255615 1215.694824 1210.513672 1205.39624 1200.565796 1195.54541 1191.153687 1194.126953 1195.216553 1189.162231 1182.935059 1176.334595 -1254.263794 1245.240356 1237.501953 1233.187744 1224.542969 1215.293579 1205.516968 1197.597778 1183.473633 1177.952515 1174.683716 1175.929077 1178.526123 1180.898071 1190.030273 1201.005859 1210.307495 1233.14856 1252.481079 1272.818115 1288.880981 1307.500366 1328.785278 1335.068237 1339.8479 1343.11792 1345.454834 1348.48938 1353.114014 1356.591919 1358.542969 1364.320923 1372.446167 1379.996582 1382.021362 1382.551025 1382.112549 1379.990967 1373.149048 1362.224854 1352.302002 1345.744019 1335.839844 1327.301147 1322.549805 1317.588379 1309.670654 1309.995605 1322.407837 1331.601929 1335.064209 1324.035522 1314.266602 1320.864746 1336.074341 1343.848145 1341.289429 1352.85022 1358.632812 1358.4823 1354.721436 1349.095703 1345.367798 1339.716187 1329.630859 1321.148438 1326.923218 1330.057251 1327.679077 1324.154785 1321.056885 1317.495483 1315.074829 1317.077759 1317.474487 1310.946777 1305.738037 1303.88208 1302.011963 1299.406616 1295.424316 1295.313232 1296.403198 1296.096313 1293.682861 1293.290283 1300.099121 1305.421997 1302.917603 1302.789795 1306.530518 1308.986084 1310.106445 1309.973999 1311.66687 1315.821899 1319.412842 1319.051636 1291.423828 1295.771973 1312.66748 1319.345337 1318.873291 1316.266479 1316.032959 1313.399048 1306.739868 1302.822021 1304.55127 1309.556274 1312.204834 1314.980347 1319.10083 1321.404419 1322.748901 1323.765625 1324.766357 1326.003418 1327.001221 1326.641846 1324.069214 1319.720703 1318.561279 1319.616699 1318.379028 1316.330078 1313.557495 1309.080688 1306.02832 1308.403442 1307.802246 1304.44397 1301.439331 1299.407959 1297.981812 1294.614502 1292.57959 1292.354614 1289.905396 1286.05188 1282.753418 1280.707275 1279.114868 1279.936768 1282.213379 1283.35437 1282.802002 1280.156006 1279.138184 1294.405518 1297.467407 1295.043701 1277.495728 1266.214722 1261.082153 1255.567993 1258.364868 1262.157104 1266.374512 1272.9729 1280.335205 1270.165527 1268.012573 1277.264771 1283.984985 1274.624268 1266.809082 1280.175293 1288.563965 1293.773071 1294.001099 1291.879028 1289.453369 1290.342896 1290.302979 1284.518066 1280.298218 1280.523438 1286.63562 1293.746948 1295.803467 1297.359375 1298.149292 1297.746826 1297.554199 1299.27356 1301.619873 1303.324585 1303.888672 1302.851562 1301.078613 1298.723389 1296.109863 1291.211426 1284.115601 1279.753418 1283.071167 1287.17395 1291.109741 1293.721558 1294.189819 1287.987549 1280.702637 1276.813354 1272.866455 1270.189941 1267.586914 1273.236084 1280.579834 1283.933105 1283.821289 1280.956909 1278.602783 1280.705933 1283.182373 1282.115479 1280.980713 1279.794312 1278.693481 1278.4729 1280.130615 1282.640259 1287.361206 1290.272095 1291.730225 1292.22644 1292.606567 1292.365479 1291.642944 1291.262207 1290.346924 1289.401978 1288.22644 1285.99231 1284.147583 1282.099243 1278.412598 1273.197998 1268.009033 1271.703613 1281.295044 1286.358887 1288.598145 1287.722778 1285.142212 1281.143066 1277.843628 1274.609253 1271.744263 1268.909912 1266.16333 1263.309448 1259.621094 1255.833496 1252.459229 1247.691772 1244.135986 1243.674194 1245.953979 1248.096191 1249.830078 1251.175903 1252.153442 1252.544067 1252.942871 1252.939331 1252.451172 1252.592773 1252.249023 1251.62146 1251.005859 1250.334839 1249.570801 1248.604736 1247.644653 1246.667114 1245.696167 1244.710693 1244.056396 1242.8302 1241.553955 1239.984985 1238.459229 1236.922974 1235.654175 1234.360107 1233.644653 1233.22168 1233.067993 1232.675659 1232.045532 1230.831299 1229.613159 1227.955078 1225.130737 1221.741577 1219.717163 1217.572266 1215.348755 1213.506104 1212.252075 1213.513916 1218.005005 1220.69043 1219.509155 1219.130615 1219.21875 1219.459839 1219.755005 1220.868408 1221.66333 1222.290283 1222.691895 1222.997437 1222.97168 1222.773193 1222.116211 1221.322021 1219.742798 1218.45752 1217.315063 1216.539673 1215.835571 1215.014771 1214.250488 1213.196411 1212.098999 1211.400269 1211.427734 1211.822754 1212.076294 1212.206421 1212.238037 1211.995117 1211.668457 1211.182617 1210.740112 1210.203857 1209.713013 1209.209106 1208.197388 1205.975342 1201.850952 1199.124878 1197.681763 1196.997925 1196.055908 1194.986572 1194.645752 1194.237549 1194.165405 1194.22229 1194.541748 1195.214111 1195.752441 1196.292236 1196.606689 1196.795532 1196.782227 1196.478516 1196.659912 1197.403687 1198.010498 1198.722168 1201.121948 1205.667603 1208.762817 1209.981323 1210.204712 1210.144775 1209.827393 1209.38623 1208.764771 1208.491211 1208.172852 1207.640015 1207.134888 1206.301636 1205.514893 1205.1521 1204.983276 1204.525879 1203.771606 1202.342407 1200.222168 1198.206665 1198.029297 1199.037476 1200.654053 1202.349731 1203.617554 1204.577515 1205.124512 1205.458862 1205.477417 1205.648804 1205.66626 1205.57605 1205.367188 1205.100586 1204.745605 1204.591187 1204.666626 1204.684326 1204.395142 1204.118164 1203.659302 1203.15686 1202.422485 1201.781372 1201.106567 1200.36145 1199.688965 1198.988647 1198.259888 1197.55481 1196.973633 1196.294556 1195.772339 1195.333374 1194.043945 1193.194336 1192.340698 1191.30542 1190.22937 1189.03186 1187.644897 1185.844849 1184.396484 1183.21167 1183.152466 1183.479858 1184.201172 1184.56958 1184.079346 1183.208008 1183.77771 1190.518555 1196.189209 1197.282471 1197.42688 1197.601685 1197.255249 1197.01001 1196.46167 1195.672119 1194.400391 1192.420776 1190.089233 1188.162354 1186.575439 1185.206421 1183.734009 1183.196167 1183.200806 1183.130493 1182.805786 1181.769287 1181.921143 1182.547607 1182.544556 1182.768066 1183.083252 1183.485229 1183.665649 1183.391113 1184.610962 1185.908447 1186.874023 1188.580444 1189.289917 1190.139038 1190.996704 1191.919189 1192.679932 1193.532104 1194.394653 1195.382324 1196.636963 1197.77478 1199.294312 1201.512085 1203.992676 1206.084473 1209.802856 1220.981689 1224.912598 1229.891846 1232.514038 1231.633789 1229.020752 1226.357422 1223.421753 1222.118774 1221.514893 1222.277466 1223.451538 1223.104614 1221.951782 1222.121216 1221.570312 1220.293213 1218.284546 1215.741333 1214.305054 1212.991333 1211.280518 1208.739502 1206.859375 1206.981445 1208.471069 1211.150879 1213.697876 1215.973145 1218.591675 1221.467407 1224.719604 1228.81543 1233.036255 1238.066284 1244.15271 1248.671753 1252.42334 1255.876953 1257.966797 1259.409668 1259.407227 1258.406128 1257.713257 1266.130737 1274.728149 1282.39856 1290.692627 1299.01709 1307.89978 1318.065796 1321.882324 1327.147949 1329.494507 1330.018555 1329.212402 1327.620483 1326.344849 1325.225586 1323.685059 1321.682251 1318.542603 1312.196411 1304.973389 1297.048096 1288.866821 1280.363647 1276.088989 1268.586548 1266.464966 1283.611816 1294.675293 1291.936646 1286.352173 1280.38269 1275.988892 1269.738647 1263.771973 1257.313721 1252.110229 1243.993042 1241.927002 1246.876221 1244.657104 1244.263062 1254.028442 1257.33374 1256.242065 1255.7052 1256.882324 1255.055298 1249.943359 1243.719604 1235.936768 1223.555664 1211.815063 1208.487427 1208.696411 1213.381104 1225.725952 1234.401367 1229.384399 1218.365479 1205.182983 1191.365112 1192.442627 1197.192505 1206.296631 1217.325073 1225.087646 1227.835938 1226.932373 1227.490479 1228.044678 1224.091675 1221.530029 1215.187134 1210.573853 1206.105591 1201.640991 1201.772095 1203.867676 1200.647583 1194.520386 1184.379883 1176.894897 -1272.070923 1260.97937 1249.212036 1240.776978 1235.116455 1224.05127 1213.095825 1204.390259 1193.653076 1181.749878 1176.864014 1174.881226 1177.777588 1182.51001 1196.495972 1209.88916 1217.040161 1231.360718 1253.234497 1274.382935 1289.943115 1303.09375 1315.952759 1329.56665 1333.617065 1336.995361 1341.967285 1347.695557 1355.994507 1363.493286 1368.549316 1367.418457 1375.480347 1381.120972 1382.529053 1382.03125 1378.850708 1374.255981 1368.775146 1361.295044 1353.929688 1345.384644 1335.724609 1326.915649 1321.325562 1314.761353 1308.372314 1321.482544 1333.043579 1344.007568 1341.629883 1329.277588 1320.063599 1319.273804 1339.262695 1352.239258 1352.089233 1354.766724 1362.959961 1362.555908 1355.638794 1350.61792 1346.338013 1340.069824 1332.140747 1328.321045 1330.922729 1332.2229 1330.695068 1327.598511 1324.343506 1318.582031 1315.791626 1314.905396 1314.061401 1310.99231 1307.296875 1305.145142 1303.252319 1301.716797 1301.661011 1301.446533 1301.142212 1297.911011 1293.753296 1293.578125 1305.281372 1306.905029 1304.276855 1303.852539 1307.485962 1313.196655 1315.518555 1315.501343 1315.121948 1318.06189 1321.363525 1319.318115 1289.808716 1300.292236 1319.783447 1323.065674 1323.005127 1321.239502 1320.395142 1317.720703 1309.976807 1303.939453 1308.484253 1315.472778 1318.009888 1320.185059 1324.566772 1327.539062 1328.342041 1328.661499 1329.103516 1331.365479 1334.355103 1335.061279 1332.731079 1328.687866 1327.906738 1328.578003 1326.17981 1322.748047 1319.567017 1315.723877 1314.119873 1314.116699 1312.484741 1309.353882 1307.236572 1306.111816 1305.019897 1300.0271 1296.109131 1294.625244 1291.315552 1286.55481 1282.004395 1280.296509 1282.241577 1286.305542 1291.430908 1293.475342 1290.416748 1287.598389 1293.624756 1306.802368 1295.827026 1281.835693 1268.174683 1262.795532 1257.569092 1256.745239 1260.549561 1264.610229 1269.150757 1278.274292 1282.9198 1273.716309 1269.670044 1280.250488 1286.767212 1281.232178 1267.755859 1278.607056 1291.938843 1295.400391 1296.89917 1295.857666 1294.514038 1294.635498 1294.380371 1291.075684 1280.25 1280.585938 1287.209473 1293.831299 1296.928833 1300.208862 1301.860352 1301.937744 1301.484009 1301.758667 1302.585938 1304.296387 1305.179688 1306.125977 1305.749023 1303.048096 1298.524658 1292.989258 1289.470215 1286.827881 1288.758545 1293.153564 1297.130981 1298.133057 1295.891968 1287.603149 1279.840698 1276.050415 1272.550415 1269.477539 1268.893066 1279.199707 1286.743774 1291.235352 1290.805298 1286.059082 1280.583252 1280.862427 1292.293335 1293.007935 1290.350708 1288.692993 1288.723145 1287.715454 1284.049927 1285.572144 1290.473145 1293.303833 1294.816895 1295.058105 1294.371338 1292.656982 1292.20105 1292.236938 1291.72937 1291.688599 1291.657593 1289.561279 1287.144897 1284.522827 1282.171265 1278.481079 1271.74939 1271.483276 1277.531128 1285.208618 1291.566162 1290.551636 1288.205688 1284.328247 1280.711304 1277.264648 1273.828979 1270.435303 1267.123779 1263.50061 1259.789673 1255.881104 1253.11853 1250.326294 1246.830078 1243.953247 1245.117065 1247.980713 1250.481201 1252.463257 1253.563477 1254.263306 1255.053833 1255.614624 1255.965454 1255.617188 1254.555176 1253.278687 1251.957642 1250.819336 1249.601074 1248.512451 1247.334106 1246.130127 1244.736206 1243.665527 1242.688843 1241.626343 1240.425903 1238.996948 1237.624023 1236.302124 1235.085327 1234.197266 1233.570801 1232.973511 1232.212646 1231.005127 1229.02832 1227.059204 1225.568359 1223.628662 1221.099854 1218.740479 1216.323975 1214.183716 1214.018433 1214.873657 1217.058716 1220.429932 1221.829102 1222.209351 1220.498535 1219.687866 1219.410278 1219.549316 1219.767944 1220.677612 1221.646118 1222.518433 1223.048462 1223.301147 1223.342407 1222.886475 1222.185425 1221.005859 1219.559204 1218.56958 1217.893188 1217.661621 1217.173584 1216.524536 1216.047119 1215.337646 1214.574829 1213.957642 1213.55603 1213.559204 1213.544434 1213.463623 1213.246094 1212.887207 1212.293945 1211.585449 1210.973755 1210.408569 1209.873047 1209.289062 1208.14856 1204.891846 1200.847412 1198.570068 1197.448364 1196.362183 1195.175171 1195.416138 1195.455811 1194.838623 1194.625488 1194.608398 1194.751099 1195.147827 1195.512207 1196.196655 1196.629028 1197.022217 1197.231079 1197.388428 1197.857666 1198.481689 1199.109009 1199.553711 1200.116943 1203.88623 1207.375854 1209.331299 1209.90979 1210.073975 1210.093628 1210.025757 1209.880493 1209.749023 1209.541626 1209.175049 1208.567383 1208.153809 1207.248413 1206.848267 1206.516479 1206.302979 1206.148438 1205.144775 1202.455933 1199.346924 1198.903687 1200.493286 1202.450073 1203.982544 1205.231934 1205.907104 1206.491089 1206.664307 1206.891357 1206.849854 1206.755859 1206.61438 1206.404297 1206.194092 1205.778198 1205.617188 1205.675781 1205.512451 1205.235718 1204.916992 1204.452759 1203.807373 1203.062012 1202.332642 1201.547974 1200.772217 1199.942383 1199.220337 1198.369141 1197.552612 1196.439697 1195.390991 1195.236572 1194.512573 1194.024414 1193.347778 1192.564941 1191.694702 1190.599487 1189.449707 1187.849487 1185.842529 1183.129028 1183.247192 1184.0896 1184.818359 1185.30957 1185.447266 1185.206909 1184.477173 1184.610474 1190.336182 1195.393555 1196.702637 1197.122314 1197.209961 1197.184326 1196.984009 1196.677856 1196.125732 1195.552002 1193.689331 1191.416016 1189.18103 1187.025513 1185.490601 1183.977783 1183.398315 1183.511475 1183.310913 1183.089355 1182.866699 1181.986694 1182.284668 1182.650146 1182.829102 1182.950562 1182.979858 1183.017944 1183.052124 1184.110229 1185.605591 1186.588623 1188.177612 1189.094971 1190.113892 1190.996826 1191.952148 1192.931274 1193.769165 1194.720459 1195.800537 1197.393921 1199.059448 1200.7948 1202.872437 1205.232788 1206.914307 1207.700806 1217.328247 1223.623535 1231.603271 1233.962036 1233.659058 1231.580566 1228.822754 1227.101318 1225.990234 1225.39978 1225.334961 1225.258179 1225.035034 1224.565918 1223.957397 1222.786621 1221.161377 1218.996582 1218.289795 1217.326782 1215.706299 1214.713013 1213.304443 1210.978516 1207.78772 1207.306152 1209.745361 1211.700806 1213.583862 1215.678467 1218.183594 1220.503662 1224.25293 1229.284546 1234.346558 1242.955566 1246.209839 1248.467407 1251.599609 1253.547485 1254.369141 1252.507324 1249.70105 1251.983765 1257.061279 1264.03418 1269.205078 1278.833984 1289.802979 1303.267822 1314.63916 1321.585815 1329.346558 1332.944702 1335.105591 1335.188965 1333.104858 1330.161133 1328.106812 1326.696899 1324.287476 1320.434082 1315.186768 1307.095825 1300.572388 1294.116943 1289.186035 1285.059448 1277.978882 1266.159424 1280.836182 1289.060791 1289.521851 1285.638794 1280.796875 1277.863037 1273.140137 1267.395874 1261.143677 1254.115723 1245.215698 1242.160889 1240.609619 1237.000488 1238.968262 1246.611816 1248.620239 1248.606323 1247.282593 1248.080688 1248.012695 1245.438721 1241.567993 1236.869385 1232.134521 1221.814697 1209.095703 1204.350952 1207.268311 1216.386719 1224.631348 1223.797119 1216.959717 1206.507935 1190.937744 1188.883179 1192.428223 1199.637207 1208.064453 1214.479614 1216.040039 1214.130615 1214.572266 1216.115845 1215.779297 1212.682617 1211.189575 1212.203003 1209.98877 1211.845703 1213.337646 1212.181885 1206.219238 1195.818359 1183.838501 1181.544434 -1267.528809 1257.827271 1246.587402 1236.355225 1232.534424 1226.393188 1218.761108 1211.592896 1204.802368 1183.559326 1178.530762 1175.901855 1177.209229 1185.047729 1201.207031 1226.878052 1249.679443 1242.92749 1245.313599 1266.21521 1279.995117 1293.876709 1303.85022 1312.62561 1320.89978 1327.30603 1332.136719 1339.191284 1351.315186 1362.514771 1371.259155 1379.021851 1380.458984 1383.024902 1383.075073 1380.654419 1375.028931 1367.453491 1362.108643 1356.292847 1351.001221 1344.005859 1333.766113 1326.514893 1321.705811 1316.16626 1314.057983 1326.504028 1338.769409 1348.491211 1346.714233 1336.114868 1329.768433 1327.419678 1338.74939 1354.860352 1361.312988 1361.11377 1368.01416 1366.511963 1358.720093 1353.11499 1348.152954 1341.56897 1333.291138 1329.038452 1333.259888 1334.399414 1333.547729 1331.436523 1329.302368 1323.616577 1318.283813 1315.989746 1314.094116 1312.302979 1309.394409 1306.644775 1303.764526 1303.524414 1304.846313 1306.209229 1305.621338 1301.703491 1295.408325 1296.144287 1306.947632 1308.256958 1305.588745 1304.565918 1309.559082 1317.044189 1319.957764 1320.380981 1320.181641 1323.901367 1324.993652 1315.030151 1293.233154 1312.41626 1324.697632 1327.657471 1327.724976 1325.7229 1323.319824 1320.458862 1314.148682 1304.804077 1313.539307 1320.102295 1323.60498 1326.940796 1330.625122 1333.935425 1335.026245 1335.55188 1336.729614 1340.023315 1344.522339 1345.461426 1343.086304 1338.901367 1336.195923 1334.478516 1332.555054 1330.245728 1326.617676 1321.518188 1320.352173 1320.2146 1317.422363 1314.95874 1312.348511 1310.012207 1307.735474 1303.987549 1298.806519 1294.592163 1290.945312 1287.30603 1281.201172 1284.159424 1289.633789 1292.82312 1295.259277 1295.664185 1294.628784 1294.990845 1304.020142 1301.106689 1285.294067 1272.41394 1264.843994 1260.019287 1256.251587 1259.369263 1262.996826 1267.107178 1273.854126 1281.648804 1283.780762 1272.708618 1271.361084 1285.50415 1293.738037 1286.396973 1277.305664 1281.381348 1292.274658 1297.894897 1300.089111 1299.572266 1298.37146 1297.5271 1296.4104 1294.189453 1283.47229 1287.645142 1290.512939 1292.704712 1298.458862 1303.588257 1305.632812 1305.746216 1305.423462 1304.736084 1304.720093 1306.120361 1307.752686 1308.47583 1308.341064 1306.794067 1303.768555 1297.582397 1295.781128 1294.900146 1294.999878 1301.78833 1304.547119 1301.599365 1294.264648 1285.738892 1278.778564 1274.879639 1271.447876 1275.032349 1278.690674 1283.081543 1293.671997 1300.203247 1297.476807 1291.593628 1284.230713 1279.925171 1290.639038 1293.822266 1294.012695 1294.173462 1294.462769 1294.861694 1294.860107 1294.136719 1294.561768 1297.82019 1300.938965 1302.163818 1301.878296 1299.547729 1297.451172 1296.604004 1295.204346 1294.72644 1294.474609 1293.041626 1290.30188 1287.019165 1284.427856 1281.572754 1276.960571 1275.611084 1277.275635 1283.840942 1294.314575 1293.632935 1291.835693 1288.932617 1283.704102 1279.453125 1275.526001 1271.400879 1267.193604 1264.135254 1260.466187 1256.463135 1254.820068 1252.782837 1248.943359 1245.411743 1244.99585 1248.083374 1251.477051 1254.144775 1255.030762 1255.592285 1256.325684 1256.992554 1257.086182 1256.791504 1255.581055 1253.908325 1252.251343 1250.776123 1249.41626 1248.068848 1246.799927 1245.564331 1244.270264 1242.686768 1241.394043 1240.310181 1239.12793 1237.884644 1236.526123 1235.29834 1234.070557 1233.243164 1232.617554 1231.688843 1229.425171 1227.026489 1224.745483 1222.847168 1221.372437 1219.686279 1217.134399 1215.455566 1216.675415 1219.968262 1220.878906 1219.895264 1220.646851 1222.132202 1222.554321 1222.423096 1221.122559 1219.913208 1219.775024 1219.724854 1219.838501 1220.487183 1221.747803 1222.611816 1223.326782 1223.594604 1223.449951 1222.859009 1221.868652 1219.964478 1219.202026 1218.662109 1218.835083 1219.341675 1218.772339 1218.150146 1217.787354 1217.115112 1216.428101 1215.858398 1215.591064 1215.400879 1215.24939 1214.985352 1214.518921 1213.66748 1212.692993 1211.713867 1210.958862 1210.252808 1209.630005 1209.089111 1207.186401 1202.316162 1200.206787 1199.370728 1198.166382 1197.232666 1196.824341 1196.882324 1196.414429 1195.441162 1195.413696 1195.317017 1194.985352 1195.124878 1195.311646 1195.823975 1196.479492 1196.869385 1197.466064 1198.327881 1199.241089 1200.151367 1200.8302 1201.286377 1201.292358 1202.341675 1205.927979 1208.030151 1209.16394 1209.654297 1209.99292 1210.486938 1211.107422 1211.498047 1211.608521 1211.30957 1210.974731 1210.269897 1209.467651 1208.783569 1208.403564 1208.14978 1208.182617 1207.663452 1205.906006 1200.946411 1199.824829 1202.455078 1204.909912 1206.081055 1206.792358 1207.215454 1207.567749 1207.749268 1207.813721 1207.797729 1207.698486 1207.618408 1207.361816 1207.174683 1206.877075 1206.557861 1206.536377 1206.370361 1206.037109 1205.7052 1205.114136 1204.562622 1203.810669 1203.033081 1202.183716 1201.319946 1200.518311 1199.551025 1198.644165 1197.712402 1196.597412 1195.807617 1195.401978 1194.825684 1194.364868 1193.853394 1193.194214 1192.225464 1191.322388 1190.080566 1188.69104 1186.879639 1184.803101 1184.816162 1185.417847 1185.925415 1186.361694 1186.554077 1186.338501 1186.391235 1187.53125 1190.097168 1193.89917 1195.539062 1196.383423 1196.776978 1196.893188 1196.82605 1196.563354 1196.303101 1195.746338 1194.781006 1192.472046 1189.899414 1187.51001 1185.62793 1184.164307 1183.801514 1183.765503 1183.584229 1183.324829 1183.09729 1182.913818 1181.844604 1182.709229 1183.129395 1183.396118 1183.401245 1183.419922 1183.722656 1184.443848 1185.350586 1186.285767 1187.939209 1188.984619 1190.075317 1191.160767 1192.12915 1193.147095 1194.133301 1194.960327 1196.316162 1198.13623 1200.013428 1202.299072 1204.392212 1206.652466 1211.388428 1217.520386 1220.924927 1223.705078 1230.388062 1234.512939 1235.65686 1233.858521 1231.25293 1229.575806 1229.270508 1228.83374 1228.198364 1227.711182 1227.021851 1226.511841 1225.700317 1224.388184 1222.234741 1219.9021 1221.000977 1220.533813 1218.315918 1217.463013 1219.431763 1218.989014 1213.064575 1208.149536 1208.349121 1209.845947 1211.020264 1211.990356 1213.082153 1215.916382 1219.672363 1225.016235 1229.541748 1234.853271 1241.77832 1243.997192 1247.050781 1247.82666 1246.163452 1243.466431 1242.561768 1248.400635 1254.121582 1261.663696 1269.996582 1277.169312 1291.711426 1306.031006 1316.585938 1322.322266 1329.992798 1335.668579 1340.418091 1341.794312 1341.537231 1337.405518 1333.131836 1330.159058 1327.662109 1323.026245 1317.838989 1311.32251 1306.488647 1300.993408 1295.919312 1291.616089 1284.921753 1277.668335 1278.614746 1283.682251 1285.91333 1285.410156 1283.348877 1281.587158 1276.06189 1269.062134 1263.184937 1258.355225 1249.131958 1242.513306 1242.076538 1233.079102 1230.911011 1236.661987 1240.357178 1239.386475 1237.999878 1238.656738 1239.247925 1238.630493 1235.876099 1234.362671 1231.992676 1224.656372 1215.710571 1205.371094 1203.917236 1209.825317 1213.143311 1213.926147 1208.343262 1198.31665 1188.916016 1183.810181 1186.484009 1192.265259 1197.875854 1202.330444 1203.291748 1201.071899 1201.528564 1201.438477 1200.372925 1199.231934 1204.499878 1211.933716 1218.019775 1222.537109 1222.646362 1219.384155 1208.966309 1196.218018 1194.072388 1193.938843 -1250.314453 1231.511108 1223.411621 1218.166992 1209.077271 1205.737305 1203.472046 1197.1604 1188.859253 1181.523438 1178.492432 1176.508423 1177.592773 1185.510498 1199.845581 1220.698975 1255.670166 1280.937012 1276.86438 1272.738647 1276.616455 1280.966431 1291.115356 1302.207397 1310.453125 1321.222412 1333.462769 1342.538086 1348.923096 1357.983398 1368.722168 1379.960449 1384.883301 1386.80249 1384.631958 1378.954346 1366.988647 1362.547485 1355.420166 1350.608398 1345.205566 1339.898193 1330.182373 1326.231079 1322.027954 1315.955811 1318.921387 1330.319702 1344.262085 1354.551636 1352.884277 1341.440186 1335.251465 1330.427612 1339.047729 1350.696167 1367.005005 1366.421875 1369.98877 1367.620239 1362.346313 1355.910278 1351.491089 1346.008423 1340.52832 1334.775269 1337.575684 1338.420898 1337.360352 1335.084717 1332.721191 1329.07959 1322.910889 1318.833618 1316.859741 1315.204468 1311.30127 1306.488037 1304.708374 1305.080566 1307.344604 1308.745483 1307.730713 1304.653198 1301.649902 1303.906372 1307.987061 1310.437622 1310.071045 1306.588867 1309.295044 1317.69397 1322.396729 1325.380615 1328.774902 1330.841064 1329.731445 1316.043945 1298.112305 1317.211182 1332.058716 1334.296875 1332.866699 1328.706787 1325.811279 1321.992554 1316.986694 1312.887573 1317.551636 1323.551636 1327.713989 1332.004517 1336.874756 1340.738037 1342.960693 1343.373779 1344.74231 1351.151489 1355.255493 1356.825806 1354.513062 1348.759155 1343.63269 1339.51062 1338.160645 1335.63147 1332.067749 1327.545532 1327.413818 1328.332764 1326.259644 1320.80249 1315.988281 1312.880127 1308.769653 1304.513184 1300.007568 1295.448364 1293.788574 1288.966675 1287.633911 1290.482178 1294.5448 1295.846802 1297.229858 1297.677124 1297.375732 1298.656128 1301.465332 1291.269897 1275.350464 1264.870361 1259.779785 1257.156616 1258.817749 1261.799561 1265.481323 1270.027832 1278.541016 1282.040527 1281.115967 1273.734253 1278.097778 1289.909668 1295.443481 1290.856934 1279.597412 1282.548584 1292.601807 1301.279297 1304.596924 1303.187622 1301.324097 1299.803223 1297.908691 1294.652588 1292.575562 1295.623535 1294.719482 1292.20752 1299.713867 1305.71228 1307.433105 1308.033203 1307.958008 1307.29187 1308.067383 1309.596802 1311.039307 1311.810303 1311.341431 1310.829834 1309.041626 1305.555298 1303.817383 1303.041382 1305.624146 1308.189087 1308.329346 1298.709229 1290.642456 1283.246338 1277.433716 1274.871704 1281.678711 1283.469238 1284.838379 1288.283325 1296.066162 1307.241455 1303.442505 1295.870728 1290.373779 1283.47168 1282.129272 1290.968018 1293.377441 1294.560791 1295.303955 1296.655518 1297.619751 1298.770386 1301.860107 1305.075684 1306.603516 1307.029419 1307.706665 1307.195312 1305.75293 1303.144409 1300.063965 1298.069824 1296.991699 1295.134521 1292.757568 1288.890015 1285.032715 1281.81665 1278.824097 1277.723877 1278.063599 1280.065918 1288.833862 1295.630493 1294.473633 1293.705566 1288.236816 1282.310791 1277.337402 1269.997314 1267.37085 1265.169067 1263.038208 1260.263916 1258.140869 1255.984863 1251.400269 1245.574829 1245.37207 1248.822754 1253.154907 1256.236938 1256.940186 1257.378174 1257.715698 1257.765991 1257.53186 1257.139404 1255.240845 1253.5448 1251.861572 1250.324341 1248.76062 1247.421509 1245.960815 1244.438843 1243.508179 1241.796997 1240.135376 1238.902588 1237.663818 1236.591797 1235.496338 1234.009888 1232.707153 1231.583252 1230.221436 1228.798096 1225.231323 1221.88855 1219.647949 1218.785767 1217.932617 1216.604248 1217.220581 1218.992432 1220.882202 1222.323608 1222.590454 1222.011597 1222.381104 1222.953857 1223.043945 1222.938477 1221.695801 1220.749268 1220.243408 1219.932007 1219.78186 1220.162354 1221.621094 1222.702271 1223.379639 1223.711914 1223.501709 1222.756836 1221.041504 1219.500366 1218.940308 1218.858887 1220.004028 1220.450806 1220.188477 1219.697266 1218.980957 1218.549927 1217.668213 1217.23999 1217.115723 1217.217651 1217.356934 1217.055786 1215.910522 1214.466309 1212.95105 1211.668457 1210.409546 1209.651123 1209.092651 1208.217163 1204.383057 1202.033203 1201.583252 1200.867432 1199.951904 1199.075684 1198.677612 1198.199097 1197.696411 1197.026001 1196.528687 1195.519043 1195.276978 1195.697021 1195.33313 1195.346069 1195.74231 1196.606323 1197.9375 1199.515137 1201.04834 1202.318359 1203.4646 1204.563721 1204.867798 1203.072754 1204.045532 1206.617798 1207.887817 1208.628906 1209.273315 1210.592407 1212.380493 1213.867676 1214.446167 1214.153564 1213.552856 1212.705322 1211.797729 1211.114624 1210.793579 1210.459351 1210.233765 1209.411377 1208.482666 1203.525024 1200.971802 1205.340088 1207.269775 1207.737549 1208.059082 1208.298218 1208.37915 1208.516724 1208.593018 1208.529297 1208.42627 1208.275879 1208.140137 1207.96936 1207.819702 1207.6427 1207.347412 1207.123901 1206.758423 1206.332397 1205.890747 1205.200073 1204.534546 1203.75769 1202.920776 1202.040283 1201.173584 1200.174927 1199.098999 1198.170654 1197.21106 1196.457031 1195.853149 1195.237427 1194.991577 1194.685547 1193.851929 1192.937012 1191.934814 1190.922974 1189.831787 1188.732056 1187.742554 1187.23291 1187.299805 1187.562378 1187.723267 1187.806519 1187.685425 1187.968872 1188.824463 1190.294556 1192.327515 1194.558716 1195.390259 1196.242676 1196.490967 1196.60437 1196.545166 1196.328735 1195.9823 1195.311279 1193.029419 1190.354248 1187.815796 1185.657837 1184.429077 1184.235474 1184.165039 1183.951538 1183.745972 1183.619385 1183.485596 1182.612915 1182.02832 1183.039307 1183.618286 1183.883301 1184.078735 1184.390137 1184.796631 1185.36377 1186.040771 1187.717773 1188.793823 1190.034912 1191.120117 1192.302734 1193.291992 1194.321899 1195.267334 1196.838501 1198.630371 1200.789307 1203.3396 1206.068726 1208.011719 1216.052368 1224.132202 1229.419556 1233.352661 1235.052856 1237.581299 1238.459229 1236.837646 1233.57373 1231.13269 1232.279419 1231.782837 1230.468872 1230.186523 1229.026245 1228.423706 1227.665894 1226.440308 1225.014648 1224.234375 1224.124268 1223.17334 1220.800659 1219.234009 1221.934326 1222.592896 1220.137085 1215.979126 1213.681519 1212.751343 1212.381836 1212.79895 1213.23584 1213.151733 1216.529907 1221.697998 1226.057251 1229.448853 1232.281006 1236.33374 1240.710693 1241.172729 1241.351074 1242.565308 1246.830688 1255.252075 1259.498657 1267.983887 1271.883545 1276.273804 1287.309448 1300.428589 1309.813843 1317.903198 1326.722534 1335.808105 1344.15564 1344.848877 1344.670044 1343.1427 1338.751343 1333.89856 1330.559082 1325.360718 1320.513062 1315.394653 1309.498901 1305.828857 1300.3479 1295.326416 1289.62561 1282.690796 1280.625488 1281.952148 1284.912476 1285.505493 1284.837036 1282.890991 1278.375488 1270.193481 1263.265747 1255.71228 1254.523438 1250.435669 1246.026245 1236.130493 1230.746948 1224.285278 1224.76416 1225.462891 1223.699219 1223.95459 1228.21875 1227.808228 1227.037476 1224.974487 1221.983887 1216.907593 1208.946777 1201.929932 1197.046631 1200.153442 1202.780762 1200.28894 1194.446533 1188.424805 1182.381836 1181.286255 1181.179443 1183.525879 1187.165527 1190.263062 1190.869019 1190.130005 1190.540649 1189.92688 1188.879639 1188.644897 1193.941895 1205.876953 1214.733521 1223.241943 1228.945801 1229.590332 1217.046387 1208.625977 1207.859497 1207.094849 -1254.612427 1235.867188 1215.339355 1200.865723 1192.783447 1191.741577 1188.856201 1184.086792 1181.52417 1179.448486 1177.619629 1176.49707 1179.224365 1186.281372 1196.755127 1209.223022 1233.95459 1265.240601 1288.157227 1295.174072 1292.47168 1291.110352 1298.514893 1311.734863 1318.355713 1325.249878 1335.964478 1345.896362 1354.529785 1363.437866 1372.225464 1381.007568 1388.78833 1390.781616 1386.596191 1379.855347 1370.175537 1363.277832 1358.185303 1351.302002 1340.090576 1338.345093 1333.811523 1328.910034 1322.973511 1315.736572 1322.468018 1336.045288 1349.23584 1357.558594 1355.493896 1346.182495 1342.581055 1339.526489 1348.977417 1357.310425 1363.369629 1371.261353 1375.526367 1371.305298 1364.404785 1360.347168 1356.450439 1351.102783 1342.238647 1339.759644 1342.434204 1342.478149 1341.269043 1338.701172 1335.251099 1330.652466 1326.516846 1322.803955 1320.319702 1318.292847 1314.99646 1310.437012 1309.553833 1309.314331 1310.69104 1311.22168 1309.878906 1307.229614 1305.166504 1304.267822 1307.736084 1313.133911 1314.844727 1313.446411 1315.534546 1320.020996 1325.85498 1328.773926 1331.68396 1332.69397 1331.366699 1316.588745 1298.323486 1318.174805 1337.924805 1343.418335 1338.881958 1333.396973 1328.451904 1325.036377 1316.972412 1315.576538 1320.020752 1326.979858 1333.30127 1337.735962 1343.075684 1349.025513 1350.727173 1351.046753 1353.852661 1361.155762 1366.145264 1369.12146 1366.856689 1359.063965 1351.599854 1347.536621 1344.664062 1340.729492 1337.784546 1334.742676 1336.362427 1337.013062 1334.51709 1330.044189 1321.223999 1314.777466 1309.341797 1304.099976 1301.324829 1297.901001 1294.391968 1291.25708 1290.687622 1293.255127 1295.81897 1297.764648 1298.941772 1298.918823 1297.894531 1295.379761 1292.128418 1276.400513 1266.091064 1258.962402 1258.538208 1259.311523 1261.182861 1263.904297 1266.904419 1274.556396 1284.65271 1283.252441 1280.03064 1280.497925 1284.061035 1291.58667 1295.825317 1294.543945 1281.772461 1282.859863 1294.892944 1305.205444 1305.991821 1305.339966 1303.421509 1301.738037 1299.460693 1296.24646 1297.374878 1302.317017 1301.781982 1300.047363 1301.711182 1306.342896 1308.442383 1309.808838 1310.301025 1310.830444 1312.630371 1314.577148 1315.589966 1315.213379 1314.515259 1315.798462 1316.112671 1315.520874 1312.323975 1308.94165 1307.043945 1305.446167 1299.625366 1291.031616 1285.747925 1280.093384 1276.778442 1282.083862 1285.427979 1287.555054 1288.546631 1290.143677 1295.502319 1307.239624 1306.88501 1305.046265 1298.955933 1294.550659 1289.397827 1290.057739 1291.856079 1292.897217 1294.861084 1297.066895 1299.339111 1301.931274 1305.156006 1307.572632 1309.448242 1310.801758 1311.321777 1310.714844 1309.434814 1306.573608 1303.36145 1301.174316 1298.800293 1296.545044 1293.704712 1289.561401 1285.0802 1281.327515 1279.13269 1278.836426 1279.006836 1279.07373 1280.783813 1290.458862 1294.440063 1294.067383 1290.842163 1285.096313 1280.672974 1274.988647 1269.409424 1266.631836 1266.528442 1264.775024 1261.707275 1258.549316 1253.360107 1245.803101 1246.470459 1249.412598 1254.673584 1257.463989 1258.749878 1259.11792 1259.007935 1258.607666 1258.097778 1256.970703 1254.800293 1252.667847 1250.872559 1249.294312 1247.882935 1246.464722 1244.950073 1243.519897 1242.309448 1240.756226 1238.916504 1237.315674 1236.045776 1235.109863 1234.243286 1232.816895 1231.328613 1229.629883 1227.772583 1225.268921 1220.728149 1219.154297 1219.188965 1219.376953 1218.359131 1218.974731 1220.234741 1221.066895 1222.548828 1223.585327 1223.833374 1223.693359 1223.772583 1223.890381 1223.83667 1223.398438 1222.505615 1221.595337 1220.509766 1220.040527 1220.558716 1220.874512 1221.89209 1222.844971 1223.47876 1223.81897 1223.566284 1222.659058 1221.178223 1219.900024 1219.065674 1219.297485 1220.452759 1221.048462 1221.001221 1220.532349 1219.991333 1219.510864 1218.863647 1218.458862 1218.165649 1218.414062 1219.309937 1219.213379 1217.474121 1214.975098 1212.872192 1211.055786 1209.670288 1208.7052 1207.813232 1205.288818 1203.777588 1203.86499 1203.522827 1202.808838 1201.852295 1201.074707 1200.483765 1199.850952 1199.103027 1198.279907 1196.971924 1195.635864 1195.293091 1196.067993 1196.177246 1195.337769 1195.460205 1196.485718 1198.620117 1201.051514 1203.037109 1204.515991 1205.969604 1207.397705 1207.928101 1208.061401 1206.012817 1204.753662 1206.647095 1207.498657 1207.775391 1209.495605 1213.384277 1217.589233 1217.981079 1217.083984 1216.023682 1215.074341 1214.129028 1213.512817 1213.075073 1212.630981 1211.801025 1210.807617 1209.633179 1203.091675 1203.675171 1207.815186 1208.332275 1208.592773 1208.899902 1208.970581 1209.168457 1209.306763 1209.312378 1209.275391 1209.144653 1208.998291 1208.846924 1208.686401 1208.526611 1208.549683 1208.24231 1207.934814 1207.521606 1207.07251 1206.603394 1205.889282 1205.262329 1204.420776 1203.603149 1202.735107 1201.751953 1200.764038 1199.758057 1198.731567 1197.930176 1197.203735 1196.38916 1195.795288 1195.728882 1195.270386 1194.430176 1193.273804 1192.421143 1191.671631 1191.053467 1190.54541 1189.993774 1189.630493 1189.590576 1189.550903 1189.567139 1189.366577 1189.048828 1189.145752 1189.662231 1190.73999 1192.017334 1193.432495 1195.281128 1195.553467 1196.118408 1196.328613 1196.355103 1196.259644 1195.990479 1195.395264 1193.297974 1190.73938 1188.200317 1186.132202 1184.864136 1184.680176 1184.545776 1184.395874 1184.24939 1184.053833 1183.825439 1183.54187 1182.483398 1181.877808 1183.213257 1183.91333 1184.14624 1184.363647 1184.732422 1185.144043 1185.658569 1187.503784 1188.668701 1189.87207 1191.116821 1192.272705 1193.474365 1194.462646 1195.647583 1197.376587 1199.047241 1201.344971 1204.081909 1207.165527 1213.202271 1221.088989 1231.56311 1236.768555 1239.630493 1240.887207 1242.41687 1242.098022 1240.433838 1238.169556 1236.216187 1235.891846 1234.233887 1233.005493 1232.186523 1230.574829 1230.427246 1229.943237 1228.374878 1227.735474 1227.888306 1228.75769 1228.730103 1226.416992 1223.787109 1224.747314 1225.911499 1224.910645 1223.383545 1222.327271 1221.325073 1219.537964 1218.490967 1217.25769 1215.501709 1214.274292 1219.51709 1223.015747 1226.026978 1228.474121 1229.772705 1230.829468 1233.056519 1237.724976 1243.497559 1250.094116 1257.444946 1260.389771 1264.382324 1269.432251 1271.300781 1278.467163 1291.338013 1301.625 1310.432251 1319.973633 1331.612549 1344.421021 1345.805298 1344.929688 1343.356079 1339.577881 1335.217041 1331.328125 1325.668335 1320.233398 1315.15979 1310.016602 1306.130493 1301.324463 1295.846924 1291.396484 1285.679321 1280.973633 1282.412354 1286.476074 1286.871582 1285.422241 1282.85022 1277.927368 1268.133911 1265.607056 1263.32666 1260.987793 1256.350708 1245.914795 1238.348877 1231.664795 1225.814819 1220.862549 1219.310913 1218.433228 1216.298828 1209.95752 1210.043579 1210.865479 1209.576904 1207.197876 1204.405273 1200.275269 1194.866699 1193.1427 1192.624878 1193.149292 1190.829224 1185.020996 1181.557007 1181.720459 1181.103394 1180.673828 1180.235229 1180.414062 1181.228882 1181.435425 1180.690674 1179.720581 1179.004761 1178.717163 1180.353271 1187.810425 1196.123901 1206.37854 1218.355225 1226.613037 1233.086304 1233.260986 1224.425903 1221.004517 1214.682129 -1248.849365 1229.610596 1213.851807 1198.533813 1191.599243 1186.921753 1182.956787 1181.183228 1179.829102 1178.599365 1177.519531 1177.799805 1183.964478 1196.368896 1205.627319 1213.006836 1215.800537 1242.48291 1267.823975 1289.400635 1297.622681 1305.415771 1316.990112 1324.342773 1335.048584 1342.584473 1343.980225 1349.497681 1358.653076 1369.344116 1378.196533 1385.847046 1391.996216 1392.452637 1387.491455 1377.015625 1372.006104 1366.690796 1360.363525 1352.077759 1353.350952 1346.509766 1339.337158 1331.301514 1324.314575 1316.706665 1325.405029 1339.951782 1351.623657 1365.727295 1361.419189 1354.720581 1353.605225 1348.526489 1356.117676 1364.501221 1367.991089 1374.55957 1379.699463 1378.041992 1368.958618 1364.057861 1359.35083 1354.034058 1342.670776 1341.899048 1345.968994 1346.4552 1345.210083 1342.382446 1338.513306 1334.050415 1329.989014 1325.989868 1323.39563 1319.98584 1315.942139 1318.356323 1317.468628 1315.834717 1315.736084 1314.495605 1312.161011 1309.544434 1306.806763 1304.591064 1308.680664 1317.000366 1319.766235 1320.922607 1320.573975 1325.366943 1330.116333 1332.57251 1333.764282 1333.654785 1328.620117 1313.638184 1303.512939 1318.846924 1340.013306 1345.465332 1343.38269 1338.541626 1334.317017 1331.290405 1320.344604 1315.608154 1321.568848 1329.526855 1337.84436 1342.647949 1353.550171 1359.312378 1365.095215 1369.16626 1370.071289 1372.529663 1373.883301 1373.109863 1371.133545 1368.024048 1361.791992 1356.902222 1352.997681 1349.091797 1344.429199 1345.640381 1348.723633 1347.251709 1341.702759 1335.454834 1326.435669 1316.534668 1311.895142 1307.670288 1305.160522 1299.88208 1294.353394 1292.078613 1291.740112 1293.338013 1297.161621 1299.579956 1300.87561 1299.911865 1295.868896 1287.781494 1279.325806 1265.1521 1258.708496 1259.508057 1260.17334 1261.686523 1263.740967 1266.391968 1269.249756 1281.765991 1295.832886 1281.527466 1281.437744 1288.512451 1292.305908 1292.776611 1299.666504 1297.575562 1285.043823 1283.366577 1296.031006 1306.477783 1306.758423 1306.420288 1305.320435 1303.414185 1301.545166 1301.404785 1304.357544 1306.878906 1306.889404 1304.567261 1303.909912 1306.696533 1309.247437 1311.635864 1312.738037 1314.042236 1315.934814 1318.858521 1320.173828 1318.501343 1317.779785 1320.651489 1322.248779 1321.169678 1318.28125 1308.744873 1301.891357 1295.568726 1291.257935 1287.063354 1281.381104 1279.161743 1281.792114 1286.956543 1290.386719 1291.462158 1292.633789 1292.295898 1294.098145 1305.099487 1309.602051 1309.629028 1304.53418 1298.290161 1292.999268 1292.935181 1293.282837 1292.679199 1292.78064 1296.083008 1300.03479 1302.119751 1305.082764 1308.148193 1311.108398 1314.060669 1315.950562 1315.411377 1312.88501 1309.448853 1306.361694 1302.720093 1300.304077 1297.08667 1293.281372 1289.062134 1285.157959 1280.867554 1280.938354 1281.289551 1281.42334 1281.34314 1281.463989 1286.782593 1292.091919 1293.625854 1291.393433 1287.316162 1283.473511 1280.041504 1275.443359 1268.624878 1270.394775 1268.952393 1266.245972 1261.907715 1256.898193 1249.386597 1246.455322 1248.520386 1254.681763 1258.256958 1260.012817 1260.640381 1260.186279 1259.249634 1258.254028 1256.092163 1253.660522 1251.488037 1249.423218 1247.877319 1246.54541 1245.032715 1243.762451 1242.48291 1240.861938 1239.137451 1237.481079 1235.801147 1233.970825 1232.687378 1232.62561 1231.852173 1230.475464 1228.79834 1226.696655 1223.843872 1220.895752 1221.311646 1221.683594 1221.517944 1220.55249 1220.809082 1222.244629 1222.972778 1224.006714 1224.950195 1225.200317 1225.270508 1225.062866 1224.86377 1224.627441 1224.199341 1223.380371 1222.595825 1221.797729 1221.133789 1221.391724 1221.921875 1222.490967 1223.109497 1223.695312 1223.86438 1223.611816 1222.84314 1221.608154 1220.255249 1219.81543 1219.807251 1220.88562 1221.602539 1221.713867 1221.443726 1220.912231 1220.460815 1220.12085 1219.80188 1219.230347 1219.16333 1220.054321 1220.0896 1218.391113 1215.356323 1212.622803 1210.407593 1209.071289 1207.527588 1206.074097 1206.500732 1206.941162 1206.985474 1206.360352 1205.199707 1204.024902 1203.193604 1202.50647 1201.687988 1200.805176 1199.40332 1197.665771 1195.835205 1195.274902 1196.532227 1197.282593 1195.883423 1195.317017 1196.459839 1199.4375 1202.834961 1205.354492 1206.447876 1207.373047 1208.152954 1208.667847 1208.692993 1208.289795 1207.756226 1207.289185 1207.452637 1207.726196 1209.074829 1213.525146 1220.012329 1220.245361 1219.441528 1218.245972 1217.234863 1216.414062 1215.733765 1215.293457 1214.770386 1213.574707 1211.342163 1208.942749 1202.258423 1206.188965 1208.367676 1208.93396 1209.268677 1209.5802 1209.85022 1209.968506 1210.099976 1210.094482 1209.96106 1209.823364 1209.768555 1209.630615 1209.549316 1209.578491 1209.358643 1209.052734 1208.685181 1208.304199 1207.801636 1207.182129 1206.58728 1205.818848 1205.092651 1204.225464 1203.281128 1202.368408 1201.28125 1200.277466 1199.341431 1198.491455 1197.709961 1197.13623 1196.629395 1196.190308 1195.63208 1194.670898 1193.643677 1192.910522 1192.474121 1192.390259 1192.267944 1192.012817 1191.75769 1191.917236 1191.877686 1191.677246 1191.07312 1190.5177 1190.248291 1190.47876 1191.128784 1192.092285 1193.072632 1194.232666 1195.315796 1195.469849 1195.966309 1196.244507 1196.136841 1195.973267 1195.390747 1193.393311 1191.203857 1188.781128 1186.677979 1185.342407 1185.215942 1184.966553 1184.834473 1184.696289 1184.46936 1184.218628 1183.83374 1183.407593 1182.605957 1181.85022 1183.181274 1183.722412 1183.955933 1184.127563 1184.64502 1185.296509 1187.227905 1188.461426 1189.63623 1190.955811 1192.19751 1193.427979 1194.491211 1195.361328 1197.397705 1199.213623 1201.489014 1204.185303 1207.244751 1216.067261 1227.878174 1238.223999 1245.055664 1246.81958 1247.165527 1247.587158 1246.793091 1244.56665 1244.164917 1243.101929 1240.434814 1238.055298 1235.788086 1233.575684 1231.551514 1232.924805 1232.071655 1230.140381 1229.363892 1230.004272 1231.883667 1232.879883 1232.436035 1228.981567 1228.805786 1230.591187 1231.657959 1230.782227 1229.315796 1227.935059 1226.123901 1223.851074 1221.847168 1219.660645 1216.427979 1216.609253 1221.33374 1223.469849 1225.671875 1227.315063 1228.685913 1231.155396 1236.667358 1243.050171 1247.874512 1252.240723 1254.455322 1255.146851 1263.927856 1268.062866 1279.286255 1286.515015 1294.388184 1303.392944 1312.303833 1326.268921 1340.320801 1346.14917 1344.988037 1342.320923 1338.51062 1334.642822 1331.156738 1323.255371 1317.34375 1312.499023 1307.766357 1303.858276 1299.742798 1295.540283 1291.695068 1289.584106 1288.619385 1290.833008 1290.683472 1289.124756 1286.302124 1281.948364 1278.016357 1272.686279 1270.84314 1269.838013 1266.292603 1257.677856 1250.732544 1244.640747 1238.141724 1232.83728 1227.587402 1225.458862 1224.680054 1222.589722 1219.409424 1210.958984 1206.172241 1204.462769 1203.182861 1201.381714 1195.731323 1195.317261 1194.081299 1194.356323 1193.376587 1190.803223 1186.744141 1186.439087 1186.05896 1184.493408 1182.529419 1180.46936 1180.617554 1180.432739 1179.555298 1175.481812 1170.390625 1169.635742 1170.461304 1173.530396 1182.105469 1188.386719 1197.846436 1207.530273 1219.642212 1226.868652 1232.650879 1234.935059 1230.419434 1219.958618 -1232.532471 1218.878662 1203.487915 1192.917358 1188.550781 1184.72168 1181.798096 1180.047729 1178.745972 1177.751587 1178.241821 1182.166138 1189.827637 1202.336548 1214.367554 1232.361206 1246.557861 1236.884644 1245.936401 1271.750732 1291.727539 1310.421021 1325.817139 1338.4823 1344.410645 1349.14563 1351.203369 1352.864868 1361.155396 1370.000488 1378.860352 1387.243896 1392.75769 1392.622925 1388.387695 1381.818604 1374.962036 1369.120361 1363.368286 1370.12915 1368.399536 1355.957031 1344.402588 1332.88208 1325.267578 1318.94104 1324.099365 1343.96814 1355.330566 1368.003784 1366.263062 1364.395386 1361.317139 1355.97937 1363.491089 1370.692627 1373.465942 1377.051758 1380.257324 1378.714355 1372.414795 1366.969727 1360.575562 1354.317749 1342.273315 1347.41272 1353.524414 1351.653076 1349.154541 1345.94458 1341.554443 1336.898438 1332.551392 1329.199951 1326.674683 1325.903564 1323.295654 1323.759888 1322.420532 1321.553345 1320.280151 1317.825195 1314.950684 1313.526611 1308.592896 1304.651245 1313.443604 1320.488281 1324.41333 1328.690063 1331.027954 1331.536377 1334.650757 1336.979736 1335.768799 1331.2323 1320.999512 1304.876587 1319.633301 1330.87561 1340.371826 1350.284668 1348.005249 1343.987427 1340.428589 1335.741699 1327.640259 1319.36377 1324.036377 1335.617188 1343.908447 1348.52063 1356.960571 1367.478271 1379.458374 1382.956177 1383.033569 1380.840942 1378.15979 1375.107422 1372.223511 1370.308105 1369.020386 1368.428955 1367.875122 1359.700073 1353.568604 1355.208374 1356.83252 1356.813232 1351.812378 1339.408569 1329.959473 1320.838623 1315.270874 1311.271729 1307.342285 1300.769043 1293.482178 1292.756714 1294.859497 1296.49292 1299.300537 1301.585815 1303.342896 1302.034058 1291.771362 1278.627563 1270.760742 1259.782227 1260.317993 1260.975342 1262.283569 1264.041992 1266.190918 1268.398438 1280.956543 1296.548828 1292.123413 1279.48291 1287.991821 1295.044312 1297.7771 1300.26062 1305.258057 1304.63562 1290.547607 1287.289795 1295.153198 1305.803589 1307.329468 1307.259155 1306.85083 1305.356689 1303.387451 1303.264771 1305.256958 1308.301147 1309.278687 1308.088623 1304.644897 1306.561646 1311.183105 1314.14856 1314.47583 1315.853027 1318.837769 1323.563477 1325.065796 1324.638062 1326.250977 1328.874878 1328.210449 1324.67041 1317.790649 1304.69519 1294.276489 1290.039551 1286.947266 1283.585327 1281.932861 1283.522949 1288.477051 1293.800415 1296.336182 1298.685791 1302.103027 1302.641113 1303.799194 1303.560669 1311.882324 1317.909668 1309.430176 1301.948975 1298.493896 1298.081909 1298.486938 1298.305176 1297.106567 1298.857056 1301.207764 1302.556152 1303.949463 1306.353027 1311.752686 1315.924927 1318.800537 1318.448608 1316.248779 1311.988403 1307.4823 1304.092407 1302.763428 1297.200073 1292.326904 1289.466919 1286.870117 1284.790894 1284.868408 1285.261597 1285.223022 1284.112427 1284.448608 1287.521362 1291.292114 1293.386841 1292.011475 1289.257446 1286.68396 1284.575806 1282.969238 1279.79126 1275.649414 1272.953735 1271.014404 1266.228027 1257.431641 1252.991821 1249.281372 1247.719604 1254.370361 1258.861084 1261.884155 1262.57373 1261.508911 1259.563843 1257.442261 1254.985718 1252.0896 1249.445068 1247.244995 1245.489136 1244.661255 1243.557007 1242.115601 1240.77771 1239.078735 1237.164551 1235.555908 1234.425171 1232.532837 1231.390991 1231.184204 1230.883179 1230.188599 1228.919067 1227.084106 1224.899536 1223.644043 1223.37793 1223.54895 1223.639282 1223.44165 1223.662476 1224.419312 1225.251587 1226.098145 1226.759766 1226.960938 1226.740845 1226.360962 1225.815796 1225.39917 1224.948242 1224.171021 1223.62915 1222.901367 1222.635132 1222.667969 1223.000122 1223.28894 1223.69873 1223.945312 1224.154785 1223.963989 1223.264282 1222.343018 1221.311646 1220.904419 1221.14978 1221.733765 1222.341187 1222.485107 1222.343994 1221.94812 1221.509155 1221.302856 1221.018311 1220.322998 1219.609009 1220.532227 1220.304688 1218.42688 1215.300171 1212.422485 1210.171631 1208.592163 1208.557251 1208.860352 1209.113525 1209.565063 1209.292725 1208.506104 1207.199707 1206.223145 1205.690552 1204.940552 1203.900635 1202.805786 1201.176147 1198.866333 1196.100586 1195.205811 1197.694824 1198.794678 1197.782715 1195.370483 1196.809814 1200.425171 1204.281372 1207.123535 1208.001709 1208.378784 1209.029419 1209.205566 1209.220825 1208.758789 1208.469482 1208.435425 1208.823853 1208.716431 1208.733765 1212.458008 1218.653809 1220.990356 1220.703369 1220.12146 1219.139771 1218.180786 1217.793091 1217.834473 1217.494263 1215.937134 1211.995728 1208.161377 1203.925293 1207.229492 1208.876831 1209.501831 1209.899048 1210.362549 1210.634644 1210.805542 1210.868164 1210.806519 1210.742676 1210.651245 1210.629395 1210.526855 1210.545044 1210.48291 1210.159424 1209.811768 1209.459106 1209.018066 1208.519287 1207.90564 1207.162354 1206.380615 1205.565186 1204.5896 1203.803101 1202.783813 1201.736816 1200.818726 1199.911987 1199.074097 1198.37207 1197.776489 1197.127686 1196.510986 1195.702393 1194.735474 1193.817139 1193.509644 1193.347534 1193.536499 1193.889282 1193.796387 1193.686768 1194.071411 1194.112183 1193.842529 1193.009766 1191.947998 1191.488525 1191.356323 1191.749756 1192.472412 1193.251831 1193.849243 1194.344604 1195.098755 1195.398926 1195.991699 1196.052856 1195.882324 1195.187866 1193.466797 1191.614258 1189.619995 1187.5802 1186.084595 1185.810913 1185.556641 1185.353027 1185.164062 1184.900757 1184.607788 1184.253174 1183.854614 1183.466553 1182.741943 1181.829834 1183.053955 1183.098022 1183.41394 1184.090332 1184.858276 1186.912231 1188.078857 1189.240112 1190.640503 1192.018433 1193.221436 1194.49231 1195.765381 1197.367188 1199.303467 1201.611694 1204.253296 1206.917358 1216.012207 1228.460449 1240.704224 1251.038574 1256.769287 1256.043213 1255.138428 1253.582153 1251.85791 1249.718018 1247.223999 1244.413574 1241.828125 1238.882812 1236.086548 1234.640625 1234.89917 1233.349976 1231.24231 1230.276489 1230.920776 1233.183228 1234.007568 1232.772095 1230.126343 1230.735229 1232.986206 1234.250244 1234.406494 1233.78418 1233.199707 1232.555176 1230.345703 1227.153564 1223.6521 1219.707275 1216.497437 1218.903564 1221.62207 1223.7229 1226.043091 1228.470459 1230.916992 1234.982666 1240.140381 1243.11145 1243.492065 1250.617554 1258.124878 1264.717896 1272.672485 1281.940308 1289.462036 1295.489136 1300.116821 1305.02832 1316.471558 1332.664062 1345.338379 1344.61084 1341.780273 1337.422119 1332.715698 1327.227539 1316.127808 1313.0448 1308.15625 1304.008911 1302.857422 1300.83667 1295.605713 1292.778687 1293.51062 1294.822754 1294.736328 1293.808594 1290.900391 1289.681396 1285.476318 1281.504883 1278.28186 1275.446167 1273.209839 1270.126831 1262.554688 1255.998657 1248.943237 1242.599121 1234.685669 1229.660034 1232.021851 1233.026123 1232.515503 1229.27002 1223.94397 1216.136963 1209.379028 1209.31897 1210.313599 1210.769165 1210.03125 1207.981445 1204.810059 1199.456787 1194.293823 1193.111816 1193.469482 1192.765259 1190.399048 1186.501709 1182.914429 1182.99707 1183.475708 1182.400757 1179.5354 1175.77124 1173.437378 1169.326538 1169.549072 1175.900269 1182.927612 1190.623169 1199.188232 1210.386963 1220.395264 1227.585938 1232.783691 1234.450317 1225.630615 -1224.208618 1208.271729 1196.641724 1191.451416 1185.757202 1182.367676 1180.765747 1178.99646 1181.062866 1187.171509 1189.9104 1196.53833 1196.171509 1211.188843 1231.544189 1248.865723 1268.203735 1269.581177 1256.163452 1267.512207 1285.28418 1309.714233 1329.707031 1345.734131 1351.914673 1354.888306 1357.867432 1358.852661 1362.902222 1370.388184 1379.393066 1387.553223 1392.74707 1392.919556 1390.651978 1382.960327 1377.332275 1377.281372 1378.310669 1379.885986 1371.05127 1358.049927 1346.527222 1332.089722 1326.459473 1322.893555 1327.239624 1346.236816 1361.261963 1373.68335 1373.585938 1372.020264 1370.111572 1366.458374 1367.749634 1377.488403 1378.945801 1380.040649 1381.720459 1378.838623 1374.021362 1369.281372 1362.084839 1352.648438 1353.776245 1354.199463 1358.343262 1356.397095 1354.072144 1350.244751 1344.733765 1339.318481 1335.955078 1331.67395 1328.612305 1331.029297 1331.776123 1330.173096 1327.463135 1327.85437 1326.193237 1321.87561 1319.108521 1318.388184 1313.527344 1303.558472 1318.155029 1323.359863 1327.406616 1331.586914 1334.188721 1337.28833 1341.632935 1341.868896 1333.844604 1317.394775 1313.809082 1316.016479 1328.389282 1344.981323 1354.639038 1355.498047 1352.731323 1348.916626 1345.585815 1342.49939 1337.383545 1332.233154 1328.389893 1335.930542 1343.90332 1348.606934 1354.311523 1369.310547 1382.216675 1382.709229 1381.705078 1379.623291 1376.263184 1373.558105 1370.999756 1369.759766 1368.882324 1367.621948 1366.945068 1359.633301 1353.235474 1353.641357 1354.874756 1354.718384 1350.197388 1340.482788 1330.286865 1323.489868 1317.758423 1312.023682 1307.524414 1300.230469 1292.323486 1295.795776 1298.983032 1301.203003 1302.330078 1303.812012 1305.697021 1306.456543 1292.423584 1277.92395 1268.59436 1260.553711 1261.312744 1262.579224 1264.512939 1266.629517 1268.864502 1278.219604 1293.278198 1296.297607 1285.87146 1281.960938 1293.817017 1298.860107 1301.278564 1304.09314 1307.575073 1306.791748 1296.085205 1289.744507 1292.155029 1303.548828 1307.907593 1307.733887 1307.354004 1306.443481 1304.441528 1303.990845 1305.421143 1308.871216 1311.656982 1313.74646 1311.15271 1310.420288 1314.717285 1317.774658 1316.473633 1316.639038 1324.924316 1331.671509 1332.220215 1330.361938 1333.702637 1336.330688 1333.554443 1326.362793 1316.524048 1301.89856 1294.261963 1288.576538 1284.647949 1284.878784 1286.241577 1287.843262 1291.174438 1298.591553 1303.056641 1306.063965 1310.05957 1311.495483 1311.381714 1311.535767 1314.014893 1317.801025 1319.407104 1309.792603 1303.519897 1303.776611 1305.57251 1305.866455 1304.679199 1303.518311 1302.524048 1303.540771 1304.096069 1305.149048 1312.144043 1317.284058 1320.197998 1320.026001 1317.646484 1314.575439 1312.176392 1308.938232 1306.591431 1300.363647 1293.180054 1290.604858 1290.089966 1289.584229 1289.898315 1290.276733 1289.419556 1287.529175 1287.780151 1289.322266 1292.019287 1293.607544 1293.218994 1291.5448 1290.113037 1288.231201 1286.220337 1283.152954 1279.014648 1276.564575 1273.925659 1270.652466 1261.398438 1255.329468 1251.249268 1249.330322 1253.61084 1259.039795 1265.692749 1265.651978 1262.60144 1258.608032 1255.816406 1253.084351 1249.966187 1246.458618 1244.455078 1243.509277 1242.89978 1242.253418 1241.116333 1239.475708 1237.095215 1234.845581 1233.481323 1232.8302 1231.787231 1231.231445 1231.192139 1231.038696 1230.730469 1229.895142 1228.440186 1226.922485 1226.247925 1225.953979 1225.797729 1225.914673 1226.003906 1226.368286 1227.032349 1227.753052 1228.408081 1228.908691 1228.867676 1228.230713 1227.371094 1226.746094 1226.094727 1225.725342 1225.10437 1224.553223 1224.126343 1223.791626 1223.969604 1224.206787 1224.291626 1224.437744 1224.519897 1224.521729 1224.300171 1223.895386 1223.337402 1222.817017 1222.450806 1222.475708 1222.875 1223.229858 1223.363037 1223.373779 1223.14502 1222.860718 1222.58252 1222.26123 1221.807739 1221.442871 1220.936035 1219.934082 1217.991943 1215.396362 1212.591675 1210.423584 1209.798462 1210.60144 1211.163452 1211.61145 1211.565308 1211.280273 1210.599731 1209.296265 1208.50293 1208.093018 1207.047363 1205.888428 1205.283447 1204.061523 1201.633545 1198.989746 1198.2146 1201.20459 1201.946533 1199.645996 1196.353027 1197.86792 1201.122559 1204.827637 1207.541992 1208.315552 1208.906494 1209.400269 1209.658569 1209.780273 1209.732056 1209.480347 1209.418457 1209.682739 1209.651489 1209.560913 1210.764282 1216.275513 1219.793457 1220.845459 1220.909912 1220.562622 1219.898315 1219.680542 1220.014526 1220.022705 1218.919434 1214.832031 1210.447388 1204.485229 1207.866211 1209.485596 1210.12793 1210.668091 1211.109253 1211.48938 1211.64978 1211.694702 1211.707153 1211.666504 1211.593262 1211.535034 1211.599487 1211.512939 1211.300415 1210.950195 1210.606934 1210.216431 1209.724365 1209.244507 1208.476807 1207.664673 1206.803101 1205.994873 1204.937988 1204.153809 1203.067627 1202.285645 1201.400757 1200.508423 1199.698486 1198.943237 1198.146606 1197.47522 1196.787598 1195.877441 1194.893433 1194.180176 1193.914307 1194.09375 1194.640747 1195.053711 1195.282471 1195.664307 1195.745728 1195.627563 1195.45459 1194.92395 1193.416626 1192.491455 1192.325317 1192.468018 1192.979126 1193.541382 1194.0802 1194.463379 1194.777832 1195.074829 1195.374512 1196.033325 1195.94165 1195.119263 1193.599365 1192.312012 1190.832031 1188.840942 1187.287109 1186.439575 1186.263672 1186.00354 1185.712891 1185.378052 1185.054932 1184.738159 1184.387817 1183.960938 1183.666626 1183.270996 1182.774902 1182.780151 1183.006226 1183.533691 1184.55957 1186.556396 1187.680664 1188.891235 1190.277954 1191.681885 1193.052734 1194.342163 1195.872192 1197.401123 1199.248169 1201.523193 1203.934937 1206.71875 1213.872437 1224.511353 1237.689453 1249.200928 1258.315186 1259.545532 1259.218262 1258.558838 1257.660278 1254.758057 1250.824707 1247.414795 1244.464966 1241.466309 1239.723999 1238.167603 1236.8573 1234.634033 1232.058472 1230.883667 1231.883545 1234.15979 1234.760254 1233.16333 1230.835327 1231.520752 1234.202759 1236.064819 1236.742798 1236.545532 1235.977783 1235.343994 1233.923096 1232.499146 1228.341309 1222.145142 1218.525391 1217.185303 1219.716309 1222.084595 1224.953979 1228.537476 1231.669312 1234.49231 1237.988159 1240.875732 1243.271118 1250.898682 1258.973999 1266.879028 1274.338501 1282.553833 1290.058594 1295.149292 1298.512085 1302.136719 1309.90271 1321.4104 1336.389404 1343.604126 1340.97522 1335.978516 1330.164551 1321.931763 1315.821411 1313.010132 1308.513184 1305.86377 1305.287964 1304.157349 1301.831055 1298.596924 1298.00708 1298.689331 1298.386597 1296.814697 1294.374268 1294.022949 1291.854248 1286.496094 1282.506104 1279.027222 1275.67749 1270.973389 1264.745728 1257.531494 1249.771118 1243.269287 1237.999756 1236.212158 1239.044189 1239.978516 1239.225464 1237.154053 1233.724976 1226.307373 1221.58667 1222.174805 1222.374268 1221.912842 1220.983521 1219.068115 1214.884277 1209.429932 1203.751465 1201.457397 1200.556641 1199.141479 1196.433838 1191.926025 1189.389648 1189.415649 1189.412231 1187.897949 1184.822388 1180.917725 1176.640381 1172.457397 1166.993286 1172.646118 1178.946777 1185.220703 1193.877075 1203.400391 1212.792847 1221.881714 1227.095825 1227.569946 1223.570801 -1215.583008 1206.180542 1196.016968 1190.900269 1185.681763 1183.151001 1179.659058 1181.863525 1199.74353 1199.940308 1197.542725 1209.550537 1214.289185 1214.622925 1237.087769 1261.340576 1281.218994 1288.413574 1281.30835 1270.388672 1285.605347 1309.789307 1331.370239 1347.785522 1355.538086 1359.112671 1363.349731 1366.537598 1366.94812 1372.553223 1379.611206 1386.367188 1391.279175 1392.926025 1393.390869 1390.037598 1388.787354 1386.992554 1382.994385 1379.587769 1369.78479 1353.245972 1346.539185 1339.75647 1330.458496 1325.113647 1327.469971 1346.516235 1361.877808 1378.978394 1379.375977 1377.910278 1378.570068 1378.158203 1376.467773 1381.161743 1383.857788 1385.243408 1385.037231 1380.973511 1376.683228 1370.437256 1364.551758 1361.203003 1366.969604 1367.279175 1365.196411 1362.229736 1358.873657 1354.562866 1346.574829 1340.720215 1341.285767 1337.489746 1334.883789 1335.796021 1336.738525 1335.349731 1333.707275 1333.69458 1331.615723 1327.523438 1324.144531 1321.989014 1318.50061 1306.578491 1317.350464 1326.170776 1329.774048 1333.367188 1336.788574 1340.23291 1343.170044 1344.079102 1326.359131 1317.233887 1325.718384 1334.134033 1336.852051 1353.230225 1358.543945 1358.952271 1356.858154 1352.734375 1349.595337 1346.749146 1343.892212 1339.374146 1334.798584 1336.865723 1341.057373 1346.759399 1355.188721 1367.556396 1381.440186 1380.7146 1378.215332 1375.040527 1371.470215 1368.471313 1367.014526 1366.281982 1365.004395 1362.67749 1358.790894 1353.27478 1349.665894 1348.731323 1348.506348 1346.420044 1341.300293 1334.819458 1328.494873 1322.64917 1317.665894 1310.677368 1305.698853 1300.009399 1297.386841 1301.516724 1304.777466 1305.421021 1305.547485 1306.142456 1306.889893 1306.218872 1291.997314 1277.138184 1268.707153 1261.21106 1262.371704 1264.047485 1266.234863 1268.993652 1276.056763 1289.065308 1300.12146 1297.211304 1283.987549 1288.571289 1299.702759 1304.768799 1305.500854 1306.830566 1310.181396 1308.957397 1302.295776 1290.908081 1291.882324 1297.640503 1306.467896 1307.595581 1307.453735 1306.688721 1304.822998 1304.957642 1307.403442 1311.375977 1313.699097 1316.791138 1320.11853 1317.028931 1316.108398 1320.554321 1319.097534 1316.50293 1329.132935 1342.789673 1343.137939 1339.549438 1342.131958 1344.198853 1338.119751 1325.725586 1312.424927 1300.813599 1293.265015 1287.331909 1286.341919 1289.792603 1292.168213 1290.536377 1293.515625 1304.629395 1311.182617 1314.16272 1317.439209 1320.177979 1320.583374 1320.788696 1319.23291 1318.105469 1322.810669 1319.994873 1316.543335 1311.950806 1314.050537 1314.646851 1311.731323 1305.82373 1304.627441 1305.958496 1306.306274 1310.609741 1315.818481 1320.061768 1322.096313 1321.404053 1319.049072 1317.997559 1317.760132 1313.949951 1309.211792 1303.33374 1293.111328 1291.966553 1292.86438 1293.717407 1294.297852 1294.177002 1293.327148 1290.067871 1289.838135 1290.876709 1292.64856 1293.737305 1293.818848 1293.813232 1293.430054 1292.246704 1290.226929 1286.913208 1282.71936 1279.711914 1277.21106 1273.319458 1267.924072 1258.781494 1253.377319 1250.055786 1252.468018 1258.855713 1269.681885 1267.417969 1263.758179 1256.307251 1254.641479 1252.850098 1248.771851 1244.260742 1243.445435 1243.135132 1242.799805 1242.177979 1240.949585 1238.860474 1235.902344 1232.254517 1231.583618 1231.514526 1231.46875 1231.516602 1231.755981 1231.8927 1231.978882 1231.741211 1231.030884 1229.214233 1229.34375 1228.769897 1228.116699 1227.936279 1228.03479 1228.506104 1229.455811 1230.247803 1230.625488 1230.947388 1230.925293 1229.638428 1228.343872 1227.530029 1226.929199 1226.478394 1226.112671 1225.558105 1225.314087 1225.070068 1225.303467 1225.461426 1225.498535 1225.338257 1225.244263 1225.180664 1225.010132 1224.868286 1224.483032 1224.136841 1223.823486 1223.771973 1223.885742 1224.244385 1224.358765 1224.548584 1224.439941 1224.266724 1224.116577 1223.887451 1223.424561 1222.553101 1220.755981 1218.910522 1217.437866 1215.468994 1213.105835 1211.030029 1212.109985 1213.475586 1214.120972 1214.185425 1214.06958 1213.571655 1212.997314 1211.962402 1210.944458 1210.050537 1208.770752 1207.806152 1207.611328 1207.209106 1204.724365 1204.061523 1204.893433 1206.725586 1206.661011 1203.351196 1198.07019 1199.203125 1202.105347 1205.208984 1207.404419 1208.172852 1208.948242 1209.580688 1210.074951 1210.407227 1210.567749 1210.647217 1210.626587 1210.648926 1210.429688 1210.236694 1210.606689 1214.465698 1217.984985 1220.177979 1221.155029 1221.15918 1220.983032 1220.775513 1221.062012 1221.277466 1220.859619 1216.837524 1211.778564 1205.847046 1208.554688 1209.977295 1210.773071 1211.394531 1211.992798 1212.352173 1212.593018 1212.785278 1212.75354 1212.705688 1212.625244 1212.652222 1212.509766 1212.322388 1212.066284 1211.704712 1211.310669 1210.812378 1210.289795 1209.708374 1209.031982 1208.070435 1207.175049 1206.276489 1205.240112 1204.28479 1203.469116 1202.765259 1201.859497 1201.074829 1200.221069 1199.331665 1198.377686 1197.603271 1196.807373 1196.055664 1194.938843 1194.486572 1194.359375 1194.842285 1195.338135 1195.819214 1196.290039 1196.500244 1196.514282 1196.431641 1196.127563 1195.629517 1195.115479 1193.481567 1193.205322 1193.268555 1193.859253 1194.39563 1194.835571 1195.075684 1195.187012 1195.280762 1195.543579 1196.17749 1196.142212 1195.506348 1194.710938 1193.608398 1192.356201 1190.450195 1188.605103 1187.323853 1186.887207 1186.597412 1186.220215 1185.86438 1185.566162 1185.264771 1184.91394 1184.550781 1184.283325 1184.05188 1183.75708 1183.228271 1182.761353 1183.268066 1184.395752 1186.141968 1187.307373 1188.47583 1189.824463 1191.220703 1192.49353 1194.012573 1195.371338 1197.008789 1198.987915 1201.07666 1203.589355 1206.343628 1211.566895 1218.978149 1231.304199 1242.837158 1252.700439 1259.90625 1260.597656 1259.991455 1259.137817 1257.234863 1253.539429 1250.157349 1247.039062 1243.891724 1242.011719 1241.476562 1240.002075 1236.048828 1232.527222 1231.497314 1233.344116 1235.791382 1236.767578 1234.647339 1231.900024 1231.777588 1235.237793 1238.07251 1239.175903 1239.275513 1238.913818 1237.952026 1236.540771 1234.776978 1232.467407 1224.359253 1219.183105 1220.157837 1219.049438 1219.856812 1223.457397 1228.494873 1232.208374 1234.649658 1237.253662 1240.509399 1244.390747 1250.889526 1258.191406 1265.531128 1272.806885 1280.129883 1286.240356 1292.929199 1296.392456 1303.178711 1309.454102 1316.439697 1329.808472 1337.919556 1338.000854 1334.47583 1329.19043 1322.013916 1317.083008 1314.579346 1313.084839 1310.803223 1309.39563 1308.117188 1306.229126 1303.748535 1302.090088 1302.490234 1303.195557 1303.091309 1300.578491 1298.208618 1295.204834 1290.965576 1286.364258 1282.714478 1278.294189 1271.272461 1265.834473 1259.663818 1252.718384 1243.385498 1242.773682 1245.677002 1246.794434 1247.022583 1246.042358 1244.880981 1241.286133 1234.971313 1230.255493 1231.459106 1233.0979 1233.636475 1232.114136 1230.014404 1224.913574 1218.564697 1215.95874 1213.461426 1208.644653 1205.208862 1200.571899 1194.796265 1195.033325 1196.603271 1196.428223 1194.087646 1189.379395 1183.892334 1178.449829 1173.224487 1167.340942 1169.390869 1175.695435 1182.4375 1190.993774 1198.259766 1203.667114 1212.992188 1221.729614 1219.338989 1214.943115 -1228.428467 1218.099487 1195.499756 1190.696167 1186.170044 1182.164307 1180.010986 1193.621216 1215.121094 1216.66626 1208.052124 1217.644775 1234.609375 1238.907959 1243.297974 1263.147339 1283.791504 1298.201416 1300.626587 1293.509644 1291.706299 1313.347412 1332.438965 1346.657104 1355.630005 1359.621338 1366.124878 1368.189819 1370.339355 1373.852905 1377.935547 1384.166748 1389.106689 1392.681396 1393.53833 1393.555786 1392.872681 1390.084473 1384.66687 1377.764038 1366.62207 1356.598145 1350.4021 1344.833496 1332.215332 1327.915161 1327.693848 1345.907471 1359.457886 1371.881836 1380.315918 1381.84314 1382.357422 1382.971436 1383.238525 1385.043579 1388.375977 1390.687744 1388.493286 1384.092773 1379.722656 1374.531006 1369.352173 1373.70459 1375.963257 1374.939331 1371.630615 1368.24353 1363.855225 1356.971436 1352.015015 1349.121216 1345.641479 1341.365234 1339.477661 1341.715454 1343.077881 1342.379883 1341.40625 1339.580078 1336.344849 1331.53833 1328.320312 1324.450562 1318.753418 1315.137939 1321.445557 1329.91333 1332.686401 1335.649658 1338.391113 1341.711304 1343.648071 1338.559204 1325.969971 1321.550415 1329.567261 1344.768188 1356.099609 1356.51001 1363.366577 1363.542114 1361.81897 1357.094604 1352.511108 1351.503662 1349.602661 1344.98291 1343.002441 1343.807251 1341.823608 1345.652222 1354.644165 1366.281738 1376.789917 1375.143066 1370.476562 1367.043213 1365.103882 1362.799561 1361.230347 1359.874756 1357.634155 1354.84436 1350.417847 1346.060059 1342.51416 1342.94043 1342.480591 1338.355103 1332.292725 1327.76062 1323.04541 1318.920898 1313.298218 1307.432251 1303.815796 1302.915283 1303.437012 1306.400024 1307.944946 1308.10498 1308.264771 1308.008789 1307.702148 1301.106567 1289.001221 1275.228027 1267.509033 1261.634277 1263.179321 1265.205444 1267.51062 1273.825439 1284.284058 1298.437134 1307.825928 1299.991089 1290.340454 1295.067505 1306.38855 1310.645874 1312.208374 1313.994385 1314.830322 1311.336426 1304.312866 1298.188965 1300.178711 1292.049927 1302.187012 1306.680054 1307.836792 1306.967407 1304.874756 1306.1521 1310.48291 1314.916016 1316.05896 1317.25293 1325.291016 1319.23877 1317.124268 1326.875 1326.163086 1322.026733 1326.647583 1338.351562 1345.522217 1350.255615 1354.032349 1348.538818 1337.977295 1321.512939 1310.25769 1300.117432 1291.441162 1287.409668 1289.799438 1293.696899 1296.636353 1293.846436 1304.860229 1310.94043 1318.901245 1327.71167 1332.243408 1330.971802 1332.67627 1333.757935 1330.58728 1327.578369 1327.84082 1331.051758 1326.164185 1321.105347 1322.649658 1322.575073 1319.63916 1313.923096 1311.720947 1311.457031 1313.791138 1318.643188 1322.143677 1325.296143 1325.16748 1323.536255 1321.956421 1320.769531 1319.563599 1316.008667 1308.867188 1300.298218 1292.260254 1294.258545 1295.621216 1296.368774 1296.516968 1295.829102 1294.209473 1291.615112 1291.224976 1291.734619 1292.737183 1292.816895 1293.764282 1294.300781 1294.415649 1294.430664 1293.962402 1291.889038 1288.057739 1283.665161 1281.069458 1276.618774 1270.697876 1259.839478 1254.811035 1252.272461 1251.265625 1257.047241 1269.455566 1269.66748 1268.231567 1258.545288 1256.592285 1255.303345 1250.664917 1245.363037 1244.432983 1243.956055 1243.473633 1242.868286 1241.620728 1239.630981 1236.765381 1233.583984 1232.706543 1232.131226 1231.852173 1231.89624 1232.33728 1232.866577 1233.024048 1232.658569 1232.292603 1232.107788 1232.288452 1231.149048 1229.82312 1230.13855 1230.285767 1230.234741 1231.153931 1232.345337 1232.562134 1232.690308 1232.333862 1230.406372 1229.213379 1228.325684 1227.693237 1227.366577 1227.033569 1226.660767 1226.549561 1226.260132 1226.443604 1226.577026 1226.527954 1226.358887 1226.109131 1225.993652 1225.870239 1225.842896 1225.604736 1225.325195 1224.979736 1224.915283 1224.968262 1225.294312 1225.43811 1225.686035 1225.783813 1225.905518 1225.874023 1225.712769 1225.053223 1223.632324 1220.620361 1218.892456 1218.088379 1215.861328 1213.169189 1212.754883 1216.831909 1217.661621 1217.016357 1216.806885 1216.811157 1216.537964 1216.027588 1214.829346 1213.354126 1211.998535 1210.746948 1209.702393 1209.31311 1208.476318 1206.916382 1206.240723 1207.669312 1208.348145 1208.462402 1207.589355 1200.355469 1200.768921 1203.339478 1205.542114 1207.116699 1208.101685 1208.860962 1209.575562 1210.387817 1211.049438 1211.582764 1212.002808 1212.220947 1212.262207 1211.832275 1211.058594 1210.928223 1213.344238 1216.043091 1218.620728 1220.606201 1221.330444 1221.48938 1221.756104 1221.921387 1222.000122 1221.511475 1217.538818 1210.3479 1206.170044 1208.900146 1210.397827 1211.326294 1212.126343 1212.864746 1213.38269 1213.798218 1214.003418 1213.985229 1213.879639 1213.863159 1213.662476 1213.47937 1213.201294 1212.838013 1212.390137 1211.894897 1211.351807 1210.677856 1210.016602 1209.341431 1208.478882 1207.336304 1206.367188 1205.308838 1204.565308 1203.847778 1203.100464 1202.401611 1201.577271 1200.609619 1199.580444 1198.489014 1197.381714 1196.506958 1195.511353 1194.787231 1194.682739 1194.845947 1195.412476 1196.146851 1196.612915 1196.929688 1197.088501 1197.144775 1197.039673 1196.616089 1196.007202 1195.545288 1194.55542 1193.859009 1193.920166 1194.679688 1195.314453 1195.61145 1195.790283 1195.819092 1195.873657 1196.37146 1196.600708 1196.49353 1196.02002 1195.692139 1195.318848 1194.175781 1192.258911 1189.900635 1188.360107 1187.491943 1187.087769 1186.671875 1186.385864 1186.037964 1185.77832 1185.428101 1185.083984 1184.861206 1184.479004 1184.2146 1183.732544 1182.821899 1183.093506 1184.132202 1185.695557 1186.82019 1188.06604 1189.316284 1190.619141 1192.050903 1193.39917 1194.553711 1196.14502 1198.411133 1200.586304 1203.007324 1205.94519 1210.181763 1215.542725 1222.495483 1233.089111 1244.655396 1254.941895 1260.846313 1261.05249 1259.877075 1258.004517 1255.564941 1252.582153 1249.469482 1245.389526 1244.4104 1245.398193 1243.638672 1238.513184 1232.954102 1232.122192 1235.962646 1239.288696 1240.316772 1238.231812 1233.084839 1232.142944 1237.164917 1240.603149 1241.879517 1242.023804 1241.59082 1240.38501 1238.507935 1236.20752 1233.291016 1227.317505 1222.84375 1222.521606 1221.269653 1219.839722 1221.962891 1227.773438 1231.821411 1234.365234 1236.841919 1240.226807 1244.162354 1249.281372 1255.069702 1261.49585 1268.799194 1274.569214 1280.274292 1285.681763 1292.565674 1301.147339 1307.125366 1311.939331 1322.763672 1331.893066 1333.341064 1332.7229 1328.910645 1324.10083 1319.657837 1317.71875 1317.211426 1315.536621 1313.849121 1311.921143 1310.094849 1307.858765 1305.465576 1306.834717 1308.456055 1308.070557 1306.39624 1302.887573 1297.518188 1292.124878 1289.698486 1286.622681 1281.999268 1275.58728 1268.907471 1261.526123 1255.07373 1245.177124 1248.815063 1252.644775 1253.822632 1253.439697 1252.387695 1250.570435 1247.592163 1242.389038 1238.999634 1238.507446 1239.231201 1239.065186 1238.191895 1236.435303 1233.39917 1228.810913 1226.520142 1225.042236 1219.114258 1212.219116 1206.476562 1201.20166 1201.319458 1203.895264 1203.565674 1199.009521 1194.302368 1186.302002 1179.54895 1172.864502 1167.95459 1164.790283 1173.861938 1181.1427 1187.039673 1192.927979 1197.314941 1202.994873 1210.606812 1207.831055 1204.786499 -1237.857788 1221.709961 1201.414551 1191.002563 1184.985474 1180.051636 1181.955566 1199.185425 1231.597656 1233.810425 1222.893799 1225.643433 1232.651367 1249.703857 1259.133179 1265.321045 1279.515137 1302.013062 1310.806885 1313.012939 1307.629883 1312.127197 1331.903442 1344.104126 1351.862915 1356.139282 1362.517456 1366.800293 1369.772339 1373.326416 1377.668091 1382.724365 1387.901001 1392.006592 1393.765503 1394.420166 1394.343018 1391.795898 1384.074219 1376.185547 1369.050293 1360.538208 1352.393066 1344.201782 1339.342896 1333.878174 1327.650757 1343.957642 1355.332764 1365.25769 1377.947021 1380.936157 1384.123779 1387.748535 1389.229736 1389.398804 1391.175903 1393.049805 1391.281372 1386.539551 1380.631348 1376.046265 1377.940918 1380.270752 1380.987793 1380.161865 1378.271606 1373.406738 1368.139526 1363.12854 1358.723145 1355.588989 1350.391479 1344.441162 1342.128662 1350.476929 1354.173096 1355.045654 1352.567017 1347.197754 1342.17395 1337.912476 1333.020508 1327.562012 1318.595337 1317.674683 1326.293579 1331.86731 1334.919434 1337.71582 1339.228149 1341.68396 1344.483154 1334.664307 1321.221436 1329.325684 1329.077637 1343.111572 1357.021362 1366.003662 1367.016968 1367.37085 1366.543945 1365.212036 1359.510498 1357.432495 1355.802612 1352.628662 1349.289673 1348.452026 1350.020142 1354.137817 1355.679565 1364.397949 1369.824341 1368.150757 1363.91333 1360.855713 1357.696655 1354.883423 1354.450562 1352.871826 1349.245728 1345.579468 1341.305298 1338.771484 1336.304321 1334.451416 1330.509277 1326.436279 1324.42749 1321.380005 1317.169189 1312.523804 1307.232056 1303.564331 1303.594727 1304.122437 1306.662109 1308.969238 1310.356812 1310.665405 1310.126099 1309.200439 1305.181152 1295.822266 1283.16687 1271.319946 1266.170044 1262.238403 1263.913208 1266.331055 1269.714722 1282.29126 1297.401245 1306.430664 1311.096802 1302.450806 1292.316162 1297.011719 1308.910034 1315.354736 1318.479248 1318.813843 1319.108032 1314.706177 1305.481201 1309.36792 1308.335815 1301.515625 1300.190186 1307.078125 1309.786133 1308.228027 1304.849609 1307.486084 1313.868042 1318.934448 1322.023071 1325.180664 1332.462036 1325.978882 1326.068481 1335.542603 1332.831543 1326.88208 1331.109863 1339.390747 1344.944336 1355.383423 1353.338501 1341.570801 1329.230347 1318.355591 1309.637695 1300.353638 1291.712769 1289.016602 1292.772827 1301.814941 1302.449585 1301.056763 1306.599976 1313.771606 1322.8927 1334.697266 1343.575317 1347.215698 1351.234253 1351.359985 1345.434082 1333.710571 1334.109009 1342.353149 1333.594971 1328.498047 1331.260254 1330.669678 1325.565308 1321.967407 1318.378174 1316.494385 1321.181274 1328.02478 1330.051514 1329.539429 1327.720093 1325.689941 1323.326294 1321.808105 1320.603516 1312.228516 1304.015869 1301.557373 1298.872803 1300.277832 1300.420898 1299.420776 1298.439819 1296.773438 1294.378418 1292.232544 1291.665527 1291.803833 1291.786743 1291.730835 1291.895386 1293.289917 1293.045288 1292.715576 1294.057373 1293.781372 1291.831421 1284.915039 1282.827637 1279.233887 1272.59314 1263.336792 1255.740723 1253.387817 1252.662231 1255.277222 1266.115967 1271.026123 1268.010254 1263.231812 1259.37854 1257.382446 1253.201172 1248.876465 1246.421875 1245.566528 1244.622803 1243.998169 1243.135742 1240.959961 1238.497437 1236.13623 1234.459229 1233.633545 1233.106567 1233.090576 1233.69104 1234.192383 1234.055664 1233.543945 1233.13562 1233.109375 1233.074829 1232.029663 1231.071777 1231.945312 1232.597534 1231.71936 1232.468384 1233.461792 1233.628784 1233.399902 1232.588623 1230.799316 1229.807251 1229.131958 1228.552612 1228.212891 1227.962891 1227.665649 1227.582275 1227.412842 1227.546631 1227.726562 1227.584473 1227.353027 1227.061401 1226.875977 1226.772705 1226.75769 1226.63916 1226.367188 1226.110474 1226.029175 1226.135864 1226.368164 1226.674438 1226.915161 1227.036621 1227.349854 1227.660156 1227.816528 1227.331787 1225.480713 1222.556152 1220.292725 1219.817749 1216.890137 1213.547485 1216.872192 1220.794678 1220.573486 1219.783936 1219.544189 1219.595459 1219.477173 1218.820557 1217.544189 1215.842041 1214.242676 1212.717773 1211.489502 1210.311157 1208.885132 1207.137085 1206.864624 1207.931763 1208.75708 1208.81897 1208.455078 1202.549561 1202.739746 1204.583862 1205.697388 1206.962036 1208.065063 1208.95752 1209.957031 1210.962402 1211.750366 1212.72583 1213.532227 1214.156372 1214.514771 1214.231934 1213.248047 1212.342773 1212.0625 1213.724731 1216.585327 1219.094727 1220.776855 1221.782471 1222.257202 1222.516724 1222.51062 1221.974609 1216.18042 1207.115845 1209.496826 1209.866821 1210.772095 1211.843872 1212.689697 1213.753906 1214.54187 1215.040649 1215.300903 1215.225464 1215.161987 1214.939331 1214.729736 1214.410156 1213.918701 1213.494995 1213.005493 1212.390747 1211.703857 1211.061768 1210.305908 1209.516357 1208.637451 1207.465332 1206.309814 1205.548584 1204.917358 1204.30249 1203.720947 1202.999878 1202.263672 1201.181885 1200.071899 1198.488037 1196.566528 1195.359619 1195.085815 1194.874878 1194.848999 1195.412231 1195.878174 1196.61853 1197.156738 1197.481567 1197.666992 1197.526367 1197.273682 1196.861572 1196.38562 1195.804688 1195.11731 1194.465576 1194.368652 1195.181274 1195.926025 1196.230713 1196.395264 1196.4823 1196.711426 1196.983887 1197.10437 1196.968018 1196.658203 1196.328979 1195.987305 1195.602661 1194.091797 1191.088989 1188.972534 1187.927124 1187.562012 1187.143555 1186.782349 1186.415527 1186.172241 1185.95105 1185.68335 1185.299683 1184.87793 1184.428467 1183.821289 1183.137207 1182.740967 1183.510498 1185.200928 1186.30835 1187.501221 1188.591309 1190.129272 1191.514648 1192.878906 1194.3479 1196.104858 1197.97937 1199.950928 1202.501465 1205.519043 1208.282349 1212.23877 1216.821533 1223.593994 1233.589844 1244.081177 1255.734131 1261.068237 1260.537964 1259.216919 1257.018311 1255.213623 1252.501221 1249.722778 1247.775757 1247.043945 1244.998657 1240.478394 1237.738281 1237.22168 1239.987915 1242.98938 1244.335571 1242.82312 1235.907104 1235.269287 1240.051636 1243.68457 1244.600586 1244.838379 1243.92041 1242.343018 1240.265503 1236.960571 1233.093506 1229.199463 1226.127197 1225.016357 1223.738281 1223.007568 1224.69812 1227.744873 1231.206543 1233.602905 1236.140869 1239.408203 1242.812622 1247.16748 1251.769531 1256.118042 1262.343994 1267.657349 1272.344482 1279.055054 1289.230835 1295.699097 1299.934692 1304.416992 1314.143311 1322.611206 1329.199951 1330.828125 1327.106201 1323.702026 1321.728027 1320.394165 1319.791626 1319.528687 1317.992188 1315.743408 1314.371216 1314.661499 1314.649658 1314.442139 1313.634766 1312.385986 1309.510254 1305.56897 1300.640015 1296.025146 1294.630859 1291.7052 1285.825684 1279.115601 1269.56189 1260.921631 1254.726807 1255.554443 1257.610962 1259.5625 1259.91272 1259.426025 1258.202026 1256.326172 1252.818481 1247.581543 1245.473145 1245.239258 1244.912842 1244.610596 1243.016602 1241.532104 1240.368408 1238.284424 1236.013184 1234.76062 1233.528564 1220.498169 1210.744507 1205.503784 1207.491455 1209.598755 1208.580688 1202.334839 1196.352661 1187.318848 1179.440063 1171.27124 1167.312622 1163.627563 1171.966187 1176.560059 1181.893433 1185.696899 1189.987061 1196.642212 1201.44397 1198.551147 1197.745361 -1230.350952 1206.660278 1193.190063 1188.9729 1183.885254 1180.961548 1184.879395 1198.535522 1223.342896 1236.640869 1244.114746 1245.845947 1245.709106 1246.060547 1261.080444 1274.022583 1287.869751 1305.115845 1317.719727 1323.693237 1323.017212 1317.305786 1329.67981 1342.854736 1347.545532 1350.820068 1355.21228 1363.299561 1367.716919 1372.10083 1376.127197 1380.200439 1385.65918 1390.644653 1393.869873 1395.197144 1395.185669 1393.68103 1384.439209 1375.390381 1370.410522 1362.165039 1352.825317 1349.374146 1347.266113 1343.008545 1332.349854 1338.09314 1347.307617 1355.955322 1363.713379 1375.440918 1383.857666 1390.42395 1392.765259 1393.42041 1394.291748 1395.199341 1393.545166 1389.848022 1381.58313 1378.068115 1381.521484 1383.352905 1383.829712 1383.147461 1381.291504 1378.380981 1374.12793 1369.772583 1364.487305 1359.435425 1357.761963 1354.452393 1354.200073 1360.390991 1362.910522 1363.808716 1360.450806 1355.020996 1348.342407 1343.029419 1337.296021 1331.47522 1318.433594 1319.125732 1326.02832 1332.092529 1336.956665 1340.461426 1340.956665 1338.658081 1336.125977 1325.960449 1324.258301 1340.527466 1343.824585 1339.375 1347.752686 1360.728638 1367.491943 1366.259521 1366.968018 1367.530518 1366.701172 1364.884766 1362.956543 1358.23877 1352.346313 1354.384155 1354.644653 1364.874512 1366.657593 1364.725708 1364.599854 1362.691406 1359.327393 1355.987061 1351.814453 1348.812866 1346.16626 1341.390259 1338.797729 1336.963867 1334.962036 1333.001953 1329.699585 1326.83313 1323.475464 1321.228149 1319.03064 1315.804688 1313.468994 1306.552856 1304.031006 1304.840698 1304.413452 1304.970947 1309.157593 1311.702148 1313.137573 1313.09082 1311.329712 1309.086182 1300.977783 1287.085327 1273.178467 1266.849121 1264.277466 1263.097656 1264.812744 1267.404297 1275.611206 1293.226196 1309.543945 1318.35144 1316.667603 1307.005859 1293.396362 1296.302368 1309.139038 1317.389526 1320.835083 1321.894043 1320.600464 1315.946411 1315.81604 1315.922607 1310.649902 1305.553223 1304.192383 1308.505493 1314.161255 1313.338379 1304.857422 1308.40625 1315.352783 1321.812378 1328.974731 1337.275391 1341.267456 1335.177856 1335.068359 1344.42688 1341.367554 1331.858276 1336.155396 1346.839478 1354.028198 1356.826782 1352.24353 1338.740967 1326.243652 1316.336548 1309.125732 1300.360474 1292.058472 1290.702271 1302.539307 1308.927002 1308.273438 1303.286621 1306.612427 1312.824463 1321.335449 1336.759277 1347.236328 1353.227051 1355.627441 1356.616211 1356.017822 1348.528931 1345.132446 1351.159302 1343.55835 1338.711304 1337.463379 1335.272217 1331.49585 1329.277954 1324.127319 1324.945557 1330.014893 1332.411865 1332.606079 1331.499756 1329.580566 1327.09314 1322.953613 1317.418945 1312.717529 1303.664795 1304.512451 1305.381226 1306.323853 1306.252441 1304.584473 1302.285889 1300.721191 1299.357178 1296.619019 1293.140137 1292.103516 1291.69397 1290.835938 1289.204468 1286.121094 1281.994995 1282.474487 1282.886475 1282.740479 1282.131104 1281.152344 1280.510376 1280.660522 1277.661621 1270.28772 1264.007324 1256.389038 1254.642944 1253.612915 1254.499146 1259.147461 1270.832153 1269.259155 1264.979126 1260.909058 1256.095947 1254.027832 1251.117554 1248.664551 1247.192627 1246.082275 1245.039062 1243.945435 1241.890991 1239.84729 1238.05542 1236.63269 1235.76709 1235.362671 1235.545654 1235.552368 1235.399658 1234.824707 1234.375 1234.153198 1234.332764 1233.765015 1232.425415 1232.242554 1233.531372 1234.036499 1233.738159 1234.045898 1234.304443 1234.009155 1233.384766 1231.987915 1231.235718 1231.126953 1230.039795 1229.375244 1229.049316 1228.77356 1228.582153 1228.485229 1228.560791 1228.737305 1228.716919 1228.538574 1228.233765 1227.834473 1227.654297 1227.613647 1227.611328 1227.526611 1227.303833 1227.095825 1227.119995 1227.229614 1227.484375 1227.795166 1228.049316 1228.284302 1228.653564 1229.338989 1230.050049 1230.139893 1228.583862 1226.234985 1223.442383 1222.091431 1217.883179 1214.989624 1219.342163 1222.641357 1223.339233 1222.931396 1222.764771 1222.536865 1222.194214 1221.435913 1219.974731 1218.078247 1216.349731 1214.481445 1212.753052 1210.962158 1209.045654 1207.296997 1207.186035 1208.232544 1208.973999 1209.021973 1208.764893 1204.498779 1204.583984 1205.851685 1206.268555 1207.016235 1208.161377 1209.402832 1210.64978 1211.753662 1212.771606 1213.843994 1215.115967 1216.296387 1217.369995 1217.307495 1216.365234 1214.894287 1213.726685 1213.337036 1214.578125 1217.30481 1219.71582 1221.759888 1222.566406 1223.00769 1222.988037 1221.867798 1214.30896 1207.432983 1208.772339 1210.036133 1211.064575 1212.266113 1213.526611 1214.783691 1215.876343 1216.488037 1216.730957 1216.675659 1216.41394 1216.125122 1215.672607 1215.175537 1214.662231 1214.104492 1213.380127 1212.724609 1212.046875 1211.274536 1210.494385 1209.580933 1208.443848 1207.446533 1206.44165 1205.907837 1205.451294 1204.99646 1204.47229 1203.816772 1203.003296 1201.989014 1200.660522 1199.039673 1196.761597 1195.622925 1195.537598 1195.14856 1195.398682 1195.97876 1196.613525 1197.113647 1197.631104 1197.956055 1198.004761 1197.935303 1197.571411 1197.052124 1196.511597 1195.993286 1195.194824 1194.709229 1194.678711 1195.486694 1196.296265 1196.692627 1197.015015 1197.239746 1197.445923 1197.625488 1197.651855 1197.494385 1197.202271 1196.871094 1196.485474 1196.111328 1195.322998 1191.94104 1189.100464 1188.38269 1188.011353 1187.613281 1187.294556 1186.987549 1186.735107 1186.525024 1186.214233 1185.803833 1185.367798 1184.870728 1184.185791 1183.533447 1182.927124 1182.770874 1184.508667 1185.680786 1186.734253 1188.030396 1189.424805 1190.788574 1192.245239 1193.808594 1195.261963 1196.979858 1199.021606 1201.577271 1204.192017 1206.414429 1208.890503 1212.658569 1217.16272 1224.324219 1234.596313 1244.579712 1256.889526 1261.25769 1260.350464 1259.003784 1257.707886 1256.130981 1253.672852 1250.849609 1247.882935 1244.760498 1242.256836 1241.456543 1242.052979 1244.324585 1246.036255 1247.037109 1245.994019 1243.070801 1241.089355 1243.450195 1245.949219 1246.869995 1246.874512 1245.833618 1244.588867 1242.123657 1238.109131 1233.259644 1229.859985 1228.419556 1228.11731 1227.182007 1226.754639 1227.548706 1228.772827 1230.204834 1232.452515 1235.092163 1238.079956 1241.358276 1244.726074 1248.463867 1252.289673 1255.015015 1260.17688 1266.895996 1275.804321 1282.258789 1290.268433 1291.069824 1296.614502 1304.991577 1311.2771 1316.148071 1319.765015 1320.363647 1321.30603 1322.231079 1322.618408 1322.623901 1322.657959 1321.452393 1319.34314 1318.769287 1319.29126 1319.618408 1319.243164 1318.438843 1317.034668 1313.496582 1307.221924 1302.79834 1299.820312 1297.107056 1294.232544 1288.133667 1279.778564 1268.083984 1264.614258 1261.660889 1263.665283 1264.817139 1265.353516 1265.724609 1265.157227 1263.259644 1260.847778 1257.814209 1253.785034 1251.944214 1251.154297 1250.565186 1249.849854 1248.645386 1247.329224 1246.90918 1246.75061 1245.692505 1243.625854 1238.302856 1228.360596 1216.929932 1211.571167 1211.266846 1210.660278 1206.982056 1201.185425 1194.567993 1186.296753 1178.394775 1170.598511 1166.609253 1163.798218 1164.629517 1171.252808 1176.477417 1179.492188 1183.566162 1191.449829 1193.043579 1192.127319 1191.111206 -1232.47522 1213.508667 1193.646606 1188.707764 1183.282715 1181.481812 1184.645996 1194.577271 1207.605469 1222.175293 1241.343994 1257.343018 1258.517456 1263.623047 1264.162476 1280.554199 1299.787109 1313.556641 1325.587891 1331.134521 1333.341187 1330.933472 1328.170532 1340.681885 1345.534668 1349.686646 1354.749634 1361.933472 1367.169067 1371.05249 1374.405518 1376.888062 1383.993774 1389.893555 1394.402954 1396.612915 1396.658936 1393.95105 1386.099854 1376.614014 1371.19104 1362.30481 1353.141235 1355.96814 1355.508789 1347.984375 1338.312988 1343.284546 1344.917603 1352.624512 1360.253296 1369.119385 1379.973511 1391.398315 1395.025757 1397.289673 1398.915283 1398.900513 1396.648926 1393.074463 1387.610107 1385.030029 1386.706421 1387.597412 1387.120361 1385.789429 1384.033447 1381.81543 1380.210815 1378.012085 1368.240112 1365.452515 1368.438721 1367.877686 1364.529663 1368.23999 1370.102173 1369.469971 1366.368774 1358.903687 1351.824951 1346.392822 1340.4198 1331.005859 1322.150757 1321.48938 1326.966309 1332.209229 1338.983032 1342.676636 1343.22644 1334.141235 1326.25647 1329.828735 1335.304443 1351.863281 1357.513672 1356.03418 1350.787964 1353.378662 1359.669067 1363.936157 1366.497314 1368.811035 1369.440308 1369.072144 1368.091431 1366.500977 1361.355103 1361.314575 1359.591187 1361.169556 1362.374023 1361.054199 1359.223755 1356.300903 1354.419189 1351.27063 1346.947876 1343.98877 1339.550415 1331.779053 1329.575928 1329.127563 1328.864258 1328.226074 1325.366089 1319.130981 1316.355469 1316.437378 1315.821899 1315.487793 1315.379761 1311.378296 1310.045898 1308.958252 1307.666992 1308.526978 1311.927856 1314.744141 1316.038696 1315.554321 1311.319458 1303.807983 1290.022827 1273.605835 1264.375977 1263.711304 1263.276245 1264.519409 1266.214844 1268.348022 1281.871216 1302.955078 1318.905151 1321.880371 1318.941406 1308.366699 1297.957886 1293.347534 1307.238647 1317.556519 1322.922363 1325.218628 1324.165039 1319.609375 1321.248779 1319.927368 1314.484497 1306.95105 1304.175049 1310.164673 1317.326416 1318.178955 1312.692383 1312.153076 1314.584106 1319.835571 1330.269775 1342.236572 1347.431152 1346.617798 1347.947144 1352.609619 1350.162354 1339.722656 1339.377197 1349.985229 1358.700806 1357.04248 1349.747192 1338.287354 1325.292725 1314.521118 1308.248779 1299.507324 1292.040527 1295.667969 1308.966919 1314.914307 1315.817505 1309.949707 1308.374268 1312.641968 1316.235474 1327.67334 1342.941284 1353.238037 1356.631226 1357.667358 1357.751587 1356.004883 1355.554077 1355.557739 1352.564697 1345.019775 1343.43811 1341.498657 1338.15686 1333.377075 1328.273438 1332.487793 1334.210815 1334.880371 1334.207886 1332.87207 1331.07312 1328.176025 1322.068481 1315.289429 1305.122925 1305.199341 1307.128052 1308.160156 1309.196167 1308.925781 1307.253784 1304.279175 1303.162598 1302.908691 1301.807251 1298.283936 1295.416748 1293.903198 1291.888428 1288.372192 1283.362061 1280.134033 1279.142944 1278.589111 1277.553223 1275.989502 1272.658569 1271.825562 1273.291138 1272.455811 1268.280396 1263.487305 1257.32312 1256.986938 1257.086914 1255.151978 1255.616333 1265.812988 1269.600586 1267.921753 1263.299805 1259.31189 1255.740234 1252.977905 1250.641357 1248.808594 1247.31604 1245.871216 1244.20459 1242.460449 1240.938599 1239.632812 1238.608276 1238.015259 1237.756226 1237.845093 1237.77417 1236.983643 1235.716553 1235.385498 1235.619019 1235.536987 1235.30542 1235.196411 1235.108398 1235.51062 1236.086548 1236.09668 1235.875244 1235.376099 1234.364746 1232.828125 1231.741211 1232.126099 1232.405884 1231.026733 1230.143799 1229.77356 1229.693481 1229.384766 1229.353271 1229.720581 1229.899292 1229.790771 1229.4104 1228.828735 1228.570679 1228.425781 1228.408325 1228.427612 1228.311401 1228.177734 1227.983154 1228.011719 1228.251343 1228.495483 1228.854614 1229.286865 1229.521851 1229.655151 1230.354126 1231.566528 1232.190918 1232.058716 1229.973267 1226.226318 1222.419067 1217.701172 1217.300171 1220.963623 1224.751953 1226.248657 1226.53064 1226.350586 1225.73999 1224.857788 1223.574951 1221.856445 1219.761475 1217.810059 1215.616089 1213.402954 1211.235718 1208.966064 1207.303955 1207.495361 1208.564331 1209.244629 1209.453491 1208.824707 1205.753174 1207.219849 1207.720337 1207.85791 1208.157837 1209.281982 1210.503784 1211.667114 1212.738647 1213.770264 1214.980103 1216.408813 1218.195801 1219.448608 1219.868774 1219.293823 1217.932495 1216.113281 1215.01416 1214.305298 1214.80249 1218.679932 1221.528564 1222.770996 1223.237427 1223.218628 1221.802002 1212.958862 1208.359253 1209.171021 1210.127319 1211.371582 1212.834473 1214.450195 1216.062378 1217.404297 1218.057617 1218.273804 1218.146362 1217.697632 1217.177612 1216.420532 1215.870605 1215.364258 1214.669556 1214.071533 1213.294922 1212.584717 1211.72644 1210.72876 1209.550049 1208.337646 1207.417358 1206.730347 1206.370361 1206.212402 1205.892578 1205.359619 1204.740356 1203.843384 1202.816895 1201.460938 1199.951172 1198.328979 1197.137939 1196.680298 1196.029907 1196.210815 1196.762451 1197.291382 1197.811523 1198.11377 1198.308228 1198.259033 1198.093384 1197.610718 1197.148438 1196.425903 1195.815308 1195.189209 1194.794434 1194.953735 1195.59314 1196.612793 1197.173218 1197.665771 1197.964844 1198.137329 1198.248535 1198.211426 1198.006714 1197.636719 1197.325684 1196.827515 1196.390747 1195.685669 1192.672852 1189.643311 1188.891724 1188.561768 1188.195435 1187.80127 1187.47168 1187.39502 1187.087158 1186.785645 1186.375366 1185.894897 1185.343628 1184.744751 1184.271362 1183.872803 1182.862183 1183.717163 1184.755127 1186.105103 1187.41687 1188.730225 1190.208008 1191.750854 1193.130981 1194.409546 1195.57312 1198.207397 1200.596924 1202.761108 1204.69458 1206.375732 1208.579346 1213.300659 1217.791504 1225.854614 1235.473877 1248.278809 1259.633789 1261.206299 1260.256714 1259.176025 1257.865234 1256.352539 1252.909424 1248.42395 1244.346802 1243.145386 1243.6521 1245.354492 1247.489014 1249.643311 1250.315796 1248.637451 1244.877686 1242.91394 1245.049683 1247.703735 1248.789429 1248.782715 1247.837158 1246.452881 1244.337158 1239.438477 1233.393188 1230.525269 1230.592285 1231.792236 1229.749512 1229.800415 1230.874512 1230.269897 1230.416138 1231.107178 1233.53833 1236.34082 1239.335327 1242.307007 1245.479736 1248.832642 1252.551147 1257.583618 1265.738525 1274.614502 1282.349609 1285.091064 1286.546875 1289.907715 1295.387207 1301.065918 1304.853516 1308.909546 1312.192139 1317.717651 1322.088867 1324.362427 1325.970581 1326.225098 1325.283569 1324.125 1323.262207 1322.757935 1322.454224 1322.07373 1321.212402 1319.791382 1317.638672 1311.033936 1305.181152 1299.966187 1296.665283 1293.678345 1286.863892 1277.056885 1267.376953 1269.37207 1271.607422 1272.428711 1272.643311 1272.257324 1271.876831 1270.86499 1268.414429 1265.541382 1262.387329 1258.400146 1257.309814 1256.960815 1256.164917 1255.037109 1254.028931 1253.638794 1253.687012 1252.839111 1251.465576 1247.811279 1241.531006 1229.708984 1219.711914 1216.171875 1212.875244 1210.67749 1206.283569 1199.214355 1191.922363 1184.042725 1176.394653 1170.259277 1165.876709 1162.820435 1162.091553 1168.019531 1172.58728 1175.221802 1181.136108 1185.580566 1185.403564 1184.822754 1186.215088 -1242.861328 1219.010742 1195.199585 1189.018799 1183.850708 1181.894653 1187.572998 1200.411377 1215.112671 1224.204346 1233.876953 1245.721313 1261.371948 1272.6875 1276.038208 1289.382202 1309.227173 1325.439697 1337.141602 1342.059204 1342.488647 1339.151367 1337.181519 1339.391846 1343.345703 1349.012207 1354.942871 1361.06604 1366.900024 1370.431885 1374.726562 1378.312378 1385.674194 1392.469604 1396.449097 1399.046021 1399.181885 1395.601929 1388.367188 1379.672241 1371.454956 1364.069824 1363.597046 1363.922974 1360.250854 1353.406128 1340.667969 1353.637451 1358.274048 1358.051147 1359.012573 1363.622559 1374.799438 1389.20166 1395.239868 1400.268311 1403.180176 1402.803589 1400.068115 1394.142334 1389.542358 1391.142578 1392.075195 1391.562256 1390.169189 1388.412476 1386.631104 1385.343506 1383.821045 1382.22168 1379.156006 1374.062744 1375.147461 1376.195557 1375.296021 1376.637817 1375.836792 1372.768066 1368.85022 1362.69458 1353.881226 1347.89209 1341.876587 1334.949585 1332.427124 1329.919067 1328.29895 1334.94104 1339.824829 1343.578003 1344.036865 1330.752075 1330.192261 1346.201782 1353.234863 1357.334595 1362.79834 1364.487671 1362.9646 1359.496704 1360.75647 1364.546265 1367.223999 1370.143555 1371.85376 1372.214111 1371.279785 1369.990601 1368.313843 1367.01123 1363.641357 1361.534302 1360.420776 1357.740601 1355.090454 1352.036865 1350.591064 1346.527832 1341.510132 1339.763306 1332.661987 1329.130981 1329.035522 1329.575684 1329.456421 1329.014893 1327.580566 1323.679932 1320.581787 1317.937012 1316.815308 1318.444946 1319.385498 1319.195679 1318.067993 1314.935913 1313.55542 1313.484375 1315.371094 1318.192139 1319.143188 1318.1073 1312.529297 1299.132568 1281.416382 1268.526123 1264.979858 1264.655273 1264.633057 1266.310303 1267.564209 1276.431396 1287.141602 1306.143066 1321.040771 1324.537964 1320.287109 1309.531128 1306.48999 1302.770752 1303.865479 1316.26355 1323.998657 1328.750244 1328.712646 1327.463501 1326.309204 1322.737305 1317.314819 1308.321411 1304.087646 1310.421143 1317.531982 1319.793945 1316.591553 1315.760986 1316.881958 1322.22937 1326.520874 1331.825195 1348.879639 1355.635132 1356.474976 1357.761353 1357.667114 1348.145264 1347.09436 1354.186157 1362.783936 1358.288696 1349.275024 1337.878052 1325.370361 1314.535034 1307.303711 1299.184082 1292.802734 1302.49707 1314.199219 1319.011353 1320.820068 1319.955688 1317.47998 1314.252808 1314.441162 1322.391968 1342.761475 1351.078003 1356.907959 1358.218506 1358.731812 1358.520752 1357.381958 1354.80603 1351.661011 1348.819946 1347.031006 1345.308838 1343.480469 1339.579102 1336.018311 1338.035156 1338.568237 1337.316772 1335.648926 1333.661255 1331.558228 1328.237671 1321.213013 1315.929321 1308.765381 1308.570679 1310.168945 1311.264038 1312.616577 1312.658936 1310.750977 1307.257568 1306.498047 1306.956543 1306.55603 1305.68042 1301.857056 1297.921265 1294.985352 1292.080444 1287.077026 1282.970459 1280.108765 1278.134033 1276.307251 1273.544922 1269.68335 1268.003906 1267.422607 1267.829224 1266.628906 1263.608887 1261.008179 1259.43335 1257.701416 1256.404053 1256.398926 1262.2323 1268.693604 1269.414185 1266.888428 1261.78125 1256.371216 1254.558838 1252.291138 1250.264893 1248.2854 1246.384277 1244.169922 1242.908447 1241.940796 1241.04541 1240.416504 1239.897949 1239.877197 1240.198242 1240.417969 1239.42627 1237.202637 1236.438477 1236.50415 1236.658691 1237.284058 1237.844604 1238.261353 1238.783203 1239.068359 1238.837769 1238.203003 1237.018799 1235.431763 1233.55957 1232.272095 1232.800537 1232.473022 1231.282715 1230.730957 1230.665771 1230.796631 1230.642578 1230.388916 1231.064087 1231.113525 1230.782349 1230.084717 1229.568604 1229.26001 1229.040894 1228.991821 1229.165649 1229.106689 1228.923584 1228.92395 1228.947021 1229.158691 1229.618896 1229.896606 1230.52417 1230.817505 1230.587158 1231.233643 1232.371094 1232.871704 1232.929199 1232.49707 1227.870239 1221.824951 1217.101807 1220.018677 1226.8927 1228.709351 1229.17334 1230.363892 1230.438965 1229.117065 1227.328613 1225.478882 1223.598511 1221.201416 1218.695679 1216.310181 1213.902344 1211.297119 1208.463989 1207.43042 1208.148071 1209.031738 1209.612427 1209.700562 1209.05957 1207.380005 1208.264038 1208.968384 1209.54248 1209.962402 1210.84082 1211.875488 1212.916138 1213.849609 1214.838257 1215.942139 1217.385742 1218.88269 1219.963135 1220.241211 1220.309937 1220.063843 1218.821045 1217.110107 1216.021973 1215.679688 1217.038452 1221.703979 1222.852661 1223.361572 1223.267822 1221.732422 1214.460205 1208.974121 1209.630493 1210.555664 1211.794189 1213.49353 1215.577881 1217.604126 1218.935913 1219.527344 1219.572021 1219.283936 1218.674316 1218.016846 1217.34668 1216.810303 1216.212158 1215.569214 1214.860962 1214.115479 1213.315674 1212.452637 1211.427124 1210.109497 1208.552124 1207.519775 1207.136597 1207.008301 1206.910767 1206.757202 1206.243652 1205.559204 1204.758057 1203.649048 1202.4729 1201.198364 1199.984375 1198.812744 1198.174316 1197.692505 1197.525879 1197.789062 1198.164062 1198.360352 1198.618896 1198.650513 1198.50647 1198.151123 1197.547119 1196.935181 1196.248535 1195.564453 1195.046387 1194.868164 1195.149414 1195.809326 1196.966797 1197.627686 1198.176758 1198.509277 1198.749023 1198.775269 1198.709717 1198.500732 1198.117676 1197.656738 1197.190674 1196.610229 1195.727295 1192.527832 1190.002563 1189.341064 1188.977051 1188.674683 1188.382568 1188.104614 1187.914429 1187.635742 1187.317383 1186.93103 1186.35376 1185.863281 1185.360229 1184.888428 1184.402832 1183.799561 1182.854492 1183.904907 1185.523682 1186.777832 1188.194336 1189.559082 1191.210815 1193.154175 1194.904419 1196.494507 1198.086548 1199.94751 1201.691284 1203.574585 1205.175415 1207.300171 1211.288452 1215.231079 1219.60791 1228.157715 1238.184692 1248.006714 1257.730591 1260.556152 1259.973145 1258.849243 1257.792114 1254.465454 1248.746094 1244.057251 1244.07605 1246.356079 1249.026733 1251.99707 1254.110962 1254.882324 1253.540649 1248.052734 1243.523315 1246.30188 1249.841553 1251.332886 1251.161743 1250.024292 1248.160889 1246.01416 1240.84729 1233.267578 1231.24585 1232.237061 1233.180298 1231.341919 1231.517944 1232.921143 1232.252686 1231.14502 1230.843262 1231.89563 1234.579224 1237.371216 1240.074219 1242.799561 1246.865112 1251.141724 1255.903809 1263.624512 1270.877075 1279.321777 1280.403809 1281.514282 1284.249146 1287.611938 1292.651123 1295.587646 1297.217163 1301.123535 1311.73645 1320.372314 1325.650024 1329.332153 1329.891235 1329.348145 1328.18103 1327.160889 1326.496338 1325.560303 1324.470947 1323.344482 1321.50769 1318.728882 1311.797241 1304.154297 1294.956421 1292.40564 1290.137085 1283.730835 1278.695312 1279.542236 1280.71167 1282.127808 1282.134277 1281.478882 1279.86145 1278.25061 1276.270264 1273.277466 1270.191895 1267.700195 1265.313354 1263.828491 1262.677246 1261.894043 1261.064087 1260.08728 1259.845459 1259.473633 1258.504639 1257.364624 1252.344727 1243.925049 1232.601318 1221.626709 1215.992188 1210.407227 1209.045044 1205.023438 1197.921631 1190.212646 1182.317993 1174.55127 1169.155396 1164.487183 1161.760986 1160.526733 1163.927368 1167.493774 1169.186157 1172.455078 1177.153198 1177.549316 1177.959839 1179.357666 -1238.87085 1213.420776 1193.25293 1189.057129 1184.481201 1182.123657 1191.540405 1212.05896 1230.86438 1251.930298 1255.361694 1260.005371 1270.827026 1275.911743 1288.182373 1300.377197 1321.934937 1339.822144 1349.294434 1351.461304 1351.431641 1347.656128 1345.366089 1344.084839 1341.397339 1348.484741 1353.947754 1359.42688 1364.87793 1370.162842 1376.257568 1382.043701 1389.413574 1395.346802 1399.418945 1401.407349 1402.208374 1399.969238 1390.961426 1383.092163 1375.01355 1366.10376 1372.081787 1370.555542 1364.977417 1354.569336 1349.450195 1360.26416 1366.875854 1369.482544 1367.053223 1366.31897 1375.223267 1385.218628 1394.639893 1403.208496 1407.504272 1408.096802 1404.875732 1399.087769 1394.667114 1395.883423 1396.708252 1396.110596 1394.312744 1391.733643 1389.278442 1388.37146 1387.665283 1386.174438 1383.143921 1379.918701 1381.694946 1383.388184 1383.759521 1383.510864 1380.419312 1376.589844 1371.496582 1364.873047 1355.604492 1349.275757 1342.096069 1341.920044 1341.286499 1338.657837 1332.506592 1339.715454 1342.782715 1343.851196 1342.119141 1328.975342 1339.947388 1351.080566 1357.50647 1361.790405 1366.384277 1369.567383 1370.10437 1368.659912 1365.922363 1364.96167 1367.22229 1371.492188 1374.855957 1375.607666 1375.03894 1374.078003 1372.23291 1369.464478 1366.119019 1363.048828 1361.129761 1357.489746 1353.518799 1352.723633 1351.678833 1348.748169 1344.821167 1342.778809 1340.427002 1336.061523 1334.989136 1334.723999 1334.38623 1333.606323 1332.560303 1330.497681 1327.249878 1324.098145 1322.970947 1323.941162 1324.707886 1324.167847 1322.859131 1319.949463 1318.726196 1317.218872 1318.975098 1321.564453 1321.794067 1320.072266 1313.850342 1295.710449 1277.645752 1265.4646 1265.531738 1265.806519 1266.176514 1268.04895 1276.59021 1285.862671 1292.899414 1309.211548 1322.136841 1329.9198 1324.707153 1316.389648 1319.112915 1310.038574 1302.677368 1313.617188 1326.17627 1331.870728 1332.560913 1332.108276 1330.461304 1326.269897 1319.140747 1309.923706 1305.016479 1311.521118 1316.975464 1324.50708 1323.266602 1317.728149 1317.281128 1328.006714 1332.420776 1330.297974 1338.177979 1355.10022 1358.255493 1362.329834 1362.768921 1358.381958 1361.279297 1367.474487 1367.62146 1361.816772 1348.810791 1337.245972 1325.329468 1314.792969 1305.516968 1297.501465 1297.283325 1307.630005 1318.690308 1322.560303 1324.411987 1323.543579 1320.024414 1315.805786 1315.141113 1321.156494 1333.072388 1346.384888 1356.066895 1358.450073 1359.748413 1360.217651 1359.007568 1355.784424 1353.312134 1351.27771 1349.889282 1348.442749 1346.255859 1342.86499 1340.917236 1342.923218 1341.384033 1339.360474 1336.958984 1334.12915 1331.158325 1326.492676 1320.777588 1316.378418 1312.891724 1312.064697 1313.037964 1314.43103 1316.099731 1316.855225 1315.625366 1313.680908 1312.839111 1311.970581 1310.889526 1308.520752 1305.064087 1300.549561 1297.02771 1293.980225 1289.87085 1285.619629 1282.335815 1279.929932 1276.857422 1273.852051 1270.962646 1268.815674 1267.292358 1266.2771 1265.698364 1264.62915 1262.731812 1260.427002 1258.415039 1257.514526 1259.35144 1263.781738 1268.009644 1269.430664 1269.363281 1266.776733 1260.774902 1256.542358 1254.21106 1251.739746 1249.724976 1247.553345 1245.477905 1244.390503 1243.486206 1242.738403 1242.099609 1241.651001 1241.776489 1242.824585 1243.32251 1242.414917 1239.667236 1237.469238 1237.303345 1238.143311 1239.455322 1240.459595 1240.989868 1242.019409 1242.488647 1242.010864 1240.703125 1238.852417 1236.902954 1235.098999 1233.785278 1232.628906 1231.929688 1231.426636 1231.202026 1231.437744 1231.823242 1231.874756 1231.99292 1232.522705 1232.197144 1231.565796 1230.697876 1230.066284 1229.719116 1229.623901 1229.643921 1229.794556 1229.966187 1229.9729 1229.782715 1229.662964 1229.905762 1230.400146 1231.110596 1231.704224 1232.0271 1231.591187 1231.994141 1233.074707 1233.300415 1233.328003 1232.560425 1225.30249 1219.416504 1219.683228 1229.520996 1232.946289 1232.062134 1232.044678 1233.04248 1232.837036 1231.578491 1229.310791 1227.645508 1225.186401 1222.170776 1219.254272 1217.091187 1214.647095 1211.775269 1208.783081 1207.538086 1208.463867 1209.468506 1210.243042 1210.281494 1209.631348 1209.147217 1209.246094 1210.391235 1211.054077 1211.669922 1212.626831 1213.467529 1214.29834 1214.948486 1215.670288 1216.531494 1217.560303 1218.810059 1219.837402 1220.372803 1220.527466 1220.713745 1220.219238 1219.237671 1217.743286 1216.661621 1217.221558 1221.827881 1222.813354 1223.145508 1223.004028 1221.980957 1218.098877 1212.217163 1210.143799 1210.959106 1212.230103 1214.294922 1217.141357 1218.949463 1220.043945 1220.588989 1220.60791 1220.304321 1219.658569 1218.910034 1218.285889 1217.778076 1217.313599 1216.670898 1215.90918 1215.116943 1214.477905 1213.529419 1212.534058 1211.180786 1209.798096 1208.585327 1207.979126 1207.877197 1207.732666 1207.432739 1207.051758 1206.343628 1205.542603 1204.530029 1203.416138 1202.425293 1201.433105 1200.476929 1199.855591 1199.257446 1199.065918 1199.025757 1199.083618 1199.111694 1199.16394 1199.021484 1198.640503 1198.119263 1197.350342 1196.510132 1195.634521 1195.352051 1195.128784 1195.371704 1195.635254 1196.229614 1197.335327 1198.073242 1198.691162 1199.042236 1199.31543 1199.27356 1199.116333 1198.840698 1198.351196 1197.856934 1197.309814 1196.435181 1194.5802 1191.035156 1190.070068 1189.765015 1189.464355 1189.27356 1188.987793 1188.723633 1188.512207 1188.213623 1187.841431 1187.395752 1186.853394 1186.401123 1185.940186 1185.375244 1184.834961 1184.340576 1182.717285 1183.843506 1185.234619 1186.363403 1187.522095 1188.993896 1190.918213 1192.97937 1195.022705 1196.740356 1198.054321 1199.294922 1200.889526 1202.625488 1204.60498 1207.105103 1209.728638 1212.555298 1216.462158 1220.542236 1231.063477 1237.763672 1244.345093 1254.475708 1259.311157 1259.221802 1258.289917 1255.622192 1249.624023 1244.496948 1246.5979 1249.442017 1252.924805 1256.369629 1257.9021 1258.25415 1257.547485 1254.704224 1248.183716 1249.692139 1252.840088 1254.177979 1254.0979 1252.229614 1249.685913 1246.716919 1242.714111 1233.62146 1231.704468 1232.890259 1234.200195 1232.469482 1232.219604 1234.402466 1234.827515 1232.854614 1230.924927 1230.946167 1232.805298 1235.648193 1238.662598 1242.028687 1245.810425 1249.734375 1254.471069 1260.084961 1265.981201 1270.724731 1274.217041 1276.584473 1277.828491 1279.209839 1282.421387 1283.255737 1283.838257 1294.141357 1303.534058 1315.599365 1325.472778 1331.475708 1332.396484 1332.247314 1331.599243 1330.675903 1329.630859 1328.158203 1326.885498 1325.698486 1322.874878 1318.798218 1310.758789 1303.608887 1296.425415 1293.753052 1291.804688 1289.04187 1285.864624 1287.244019 1287.526367 1287.428101 1286.837402 1285.75 1284.525879 1283.363892 1281.531372 1278.309448 1275.192993 1272.370605 1270.626465 1269.333618 1268.437622 1267.693115 1267.520142 1267.393799 1266.467285 1264.767578 1261.932007 1258.897095 1253.755249 1243.447998 1234.854614 1224.564453 1213.885254 1205.591675 1203.698242 1199.666748 1194.666504 1187.024414 1179.526245 1172.171265 1167.210083 1162.366455 1160.22937 1159.140991 1159.700562 1161.540283 1163.52356 1165.998657 1168.287964 1168.909546 1169.793091 1171.648193 -1238.525146 1204.619629 1193.111328 1189.456787 1185.208984 1182.062134 1192.322998 1213.050537 1230.558472 1253.384033 1266.091064 1276.485352 1286.602295 1294.141479 1302.312744 1314.143311 1332.013916 1350.796509 1360.506104 1364.269043 1361.754639 1356.795532 1352.928223 1349.431641 1347.374634 1349.294678 1352.405029 1357.41272 1363.717407 1370.7948 1379.109131 1386.893921 1393.55896 1399.591675 1403.057983 1404.088135 1405.150635 1405.266968 1392.685669 1384.076172 1377.1073 1374.97229 1380.434937 1378.064331 1368.776123 1352.895508 1352.593018 1367.682861 1373.978271 1376.717896 1376.914917 1374.951782 1376.926514 1387.35144 1396.802979 1405.188965 1413.13208 1415.258057 1413.392578 1403.067505 1400.071167 1401.476074 1403.071777 1401.377563 1399.61377 1396.975342 1393.769409 1392.563721 1391.845215 1390.348877 1387.85376 1386.825317 1388.181274 1390.238892 1391.670654 1390.412109 1385.327148 1379.459595 1373.206909 1366.009644 1354.988281 1351.565552 1349.646606 1347.858643 1346.44873 1343.984985 1341.466675 1342.047363 1344.379883 1343.983032 1339.995483 1332.584839 1344.94104 1353.240601 1359.029541 1363.44519 1368.009521 1372.660522 1374.622314 1373.737549 1370.454224 1366.478027 1365.599976 1372.412964 1377.677368 1378.664795 1378.566406 1377.90564 1375.572266 1372.419556 1367.835815 1364.986694 1363.719727 1362.640259 1360.813477 1358.929688 1356.791382 1353.794067 1350.279785 1347.181152 1344.214966 1341.122437 1341.265991 1339.856689 1339.891602 1339.376587 1338.421021 1336.542236 1333.511963 1329.917969 1328.558716 1330.074585 1330.56543 1330.095093 1328.629761 1325.903809 1323.989502 1323.579712 1324.500854 1325.936646 1325.009644 1321.747681 1315.759888 1293.563843 1279.189697 1265.889771 1266.229858 1266.778076 1267.432007 1278.578491 1285.265503 1290.827881 1303.363525 1316.875 1328.18689 1332.461182 1330.514648 1324.301514 1322.042603 1317.580078 1305.959839 1313.147949 1327.905151 1334.015015 1335.715088 1335.184082 1333.654419 1330.252686 1320.658813 1311.943115 1309.753052 1315.559448 1320.368408 1330.560669 1331.981201 1326.642456 1316.001465 1337.297119 1344.714722 1347.187012 1346.539673 1347.653564 1354.098267 1366.290039 1367.662354 1367.215454 1368.042847 1368.586182 1368.079346 1361.465942 1349.840088 1335.572632 1325.141724 1316.564453 1303.612915 1296.889771 1301.123047 1312.327026 1320.962036 1325.483276 1328.765015 1327.277832 1326.020996 1320.583008 1316.093384 1318.81665 1330.042847 1340.240967 1352.280273 1358.09375 1361.396729 1362.474487 1361.479248 1359.187378 1356.407715 1354.201782 1353.218872 1351.978149 1349.414673 1345.848511 1344.415894 1344.908691 1343.217773 1340.874756 1337.920532 1334.018066 1329.913574 1324.162476 1318.777466 1315.519775 1314.466309 1314.937866 1316.453979 1317.901367 1319.505493 1319.977905 1319.326416 1318.45874 1317.982178 1317.510742 1315.967896 1311.159546 1305.147583 1301.744751 1297.98877 1294.935059 1291.861328 1286.716797 1283.512817 1281.295532 1278.2854 1275.149292 1272.405029 1270.203003 1268.990723 1267.473022 1266.912964 1266.966187 1265.009155 1261.185181 1258.104492 1259.279297 1261.304932 1264.539917 1267.143433 1268.830811 1269.572144 1269.880005 1265.948853 1258.642822 1255.113403 1253.270752 1251.199585 1249.179688 1247.366211 1245.929932 1244.956177 1244.424438 1243.641113 1242.885742 1243.563599 1244.606323 1245.05957 1244.737915 1243.235107 1239.562378 1238.82605 1239.78064 1241.616211 1243.278442 1243.885254 1244.206421 1244.705322 1244.520508 1242.793579 1240.208252 1238.384155 1236.540771 1233.968018 1231.983765 1231.626831 1231.610229 1232.380005 1232.853882 1233.809326 1233.918457 1233.633179 1233.819458 1233.186523 1232.041016 1231.052002 1230.537598 1230.296143 1230.16272 1230.16748 1230.532959 1231.116333 1231.133179 1230.732056 1230.462036 1230.703003 1230.97583 1231.723755 1232.471802 1232.788452 1232.846924 1233.305298 1233.555664 1233.552124 1233.203125 1228.99231 1221.954468 1219.987915 1226.095337 1232.245972 1233.896851 1234.079956 1234.140991 1234.562988 1234.195923 1232.817749 1231.913696 1230.248413 1227.491089 1223.875854 1220.408569 1218.19165 1215.548828 1212.317017 1208.355347 1207.689087 1209.221802 1210.795044 1211.578613 1211.719727 1211.38269 1210.932739 1210.883545 1211.616211 1212.501709 1213.323975 1214.227051 1215.072754 1215.621094 1215.974854 1216.37207 1216.855835 1217.610229 1218.460571 1219.440552 1220.047363 1220.605347 1220.861084 1220.898682 1220.324341 1219.446655 1217.739014 1217.715088 1220.782104 1222.330078 1222.64856 1222.547241 1221.630737 1219.980469 1216.255371 1213.091431 1211.297485 1212.541992 1214.688232 1218.210571 1220.174316 1220.626709 1221.242798 1221.463867 1221.217529 1220.598999 1219.752197 1219.0625 1218.713623 1218.271973 1217.70813 1216.960571 1216.176636 1215.418213 1214.608765 1213.763184 1212.619019 1211.488892 1210.304321 1209.527344 1209.352905 1209.030762 1208.56958 1207.807617 1206.956543 1206.029419 1205.307861 1204.460449 1203.629272 1202.808228 1202.055664 1201.410767 1200.713379 1200.417358 1200.341553 1200.306274 1200.106079 1199.79895 1199.44458 1198.887817 1198.067383 1196.911377 1195.672852 1195.344604 1195.34436 1195.30835 1195.750366 1196.190186 1196.804688 1197.505127 1198.381592 1198.962036 1199.440918 1199.650757 1199.659058 1199.473022 1199.036011 1198.51062 1197.805176 1197.193481 1195.376953 1191.592896 1190.845337 1190.588867 1190.262085 1190.039795 1189.852661 1189.692871 1189.493896 1189.219849 1188.840698 1188.348755 1187.880981 1187.380005 1186.903687 1186.344482 1185.794434 1185.219604 1184.616455 1182.715454 1183.405762 1184.555054 1185.586914 1186.64563 1188.182617 1190.249512 1192.424683 1194.540894 1196.271484 1197.504395 1198.513306 1199.786255 1201.47937 1203.539795 1205.735962 1206.94873 1210.243164 1213.372559 1216.84436 1221.505615 1231.677002 1237.077026 1243.638916 1255.50061 1259.449341 1258.524292 1256.268799 1252.256592 1249.944946 1250.116211 1252.297241 1255.938477 1258.622925 1260.08374 1260.483276 1259.710205 1257.345093 1254.286011 1255.200317 1256.687256 1257.180054 1256.620117 1254.589478 1251.712769 1248.459839 1245.196411 1234.699829 1231.553955 1234.437622 1236.05835 1234.738403 1234.083008 1237.883545 1238.793579 1236.750244 1233.543213 1230.954224 1231.29126 1234.020874 1237.190674 1240.646606 1243.908447 1247.790161 1252.303589 1256.984619 1261.930542 1265.960449 1269.623535 1271.306152 1272.222168 1272.915894 1272.672485 1278.389648 1283.935059 1289.832153 1299.075073 1307.824707 1320.189453 1331.372437 1334.040894 1334.806396 1334.619385 1333.678467 1332.58313 1331.192993 1329.625 1328.447876 1325.905151 1319.132446 1313.128662 1307.57666 1306.00061 1302.790771 1297.79541 1293.787476 1294.440796 1294.629639 1294.185303 1292.539795 1291.303955 1289.45752 1288.260132 1286.934814 1285.082153 1282.234985 1279.118164 1276.64978 1274.67627 1273.266602 1271.965576 1271.322388 1271.161377 1270.952515 1270.564087 1268.697144 1262.258667 1258.009766 1249.219604 1240.11438 1232.486694 1224.287231 1214.219971 1205.02417 1197.634766 1193.832886 1188.135376 1182.199219 1174.754272 1170.230713 1163.611084 1159.353027 1158.098022 1157.782837 1156.781616 1157.269287 1158.453003 1160.584229 1162.155884 1163.640869 1165.438721 1166.206299 -1245.423096 1218.223145 1194.36438 1190.302979 1186.109131 1182.759399 1195.150879 1206.162964 1217.628784 1233.304565 1253.001953 1267.592529 1284.893188 1298.779541 1308.973511 1322.140015 1336.791382 1358.298584 1369.329712 1371.00708 1369.314087 1364.942627 1359.588135 1354.982422 1352.341919 1352.042114 1351.814209 1354.281128 1363.047729 1371.544678 1380.70459 1390.706177 1397.70459 1403.539062 1404.984619 1405.967407 1406.242676 1404.424194 1391.890869 1383.533569 1377.591797 1382.96875 1389.250732 1383.559937 1373.511841 1360.524902 1362.102051 1374.442627 1380.718262 1383.66687 1383.8396 1381.140869 1376.445557 1389.399658 1400.46106 1410.433716 1417.101929 1418.809814 1419.550049 1412.08606 1401.780396 1413.206787 1416.594849 1413.768555 1409.564819 1403.893921 1401.798218 1399.574463 1397.377441 1395.688843 1392.640015 1392.130737 1394.031738 1395.967163 1396.238403 1393.644531 1389.942383 1382.10022 1374.508911 1366.252808 1360.217529 1357.351074 1355.591309 1352.87146 1350.181519 1347.65564 1344.171143 1343.684692 1345.292847 1344.378418 1339.476318 1337.010864 1349.296997 1356.415283 1361.14209 1363.880371 1369.036377 1375.750854 1378.735596 1379.47522 1377.684082 1372.111694 1369.425537 1373.765381 1379.456055 1380.862915 1381.249756 1381.130737 1379.373169 1375.825562 1370.405029 1365.662231 1366.753662 1367.436401 1367.418579 1366.239624 1364.711182 1360.625244 1354.669556 1351.049438 1347.87146 1345.996582 1345.146118 1344.450317 1344.408081 1343.907715 1343.480835 1342.883301 1340.702271 1336.73938 1335.024902 1335.166504 1335.46814 1335.000244 1333.643677 1331.303833 1328.993164 1329.015259 1330.63562 1330.76416 1328.764648 1324.457275 1315.874756 1295.114746 1278.349609 1268.677734 1266.880981 1267.722656 1270.295898 1284.698486 1288.90918 1296.62793 1310.826416 1324.107422 1332.380127 1335.201172 1331.93689 1327.515381 1326.401123 1319.697998 1313.083984 1316.165649 1330.386719 1337.184692 1339.36145 1338.989746 1336.901733 1333.054565 1322.139404 1314.157959 1316.125244 1321.916626 1328.340088 1336.483032 1339.19751 1336.726196 1329.119385 1337.625732 1349.757935 1355.750244 1360.613159 1360.963379 1361.765259 1365.924561 1368.816406 1369.302856 1368.991699 1367.451538 1363.666138 1357.203369 1347.374023 1333.377563 1323.802612 1315.36377 1303.0271 1298.136108 1302.809204 1317.155762 1324.158325 1329.023804 1333.35376 1334.88269 1339.60083 1337.035034 1328.102661 1321.963257 1337.637939 1347.306274 1354.740234 1359.046021 1363.596558 1364.844482 1364.287476 1362.719482 1359.789062 1357.678955 1356.428467 1355.189575 1352.888916 1350.39978 1348.174316 1346.658325 1344.844482 1342.198608 1337.850586 1332.685791 1327.182129 1321.078247 1316.451294 1315.5625 1315.640503 1318.493774 1320.432251 1322.200317 1323.040161 1322.884644 1321.865601 1320.857178 1319.918335 1319.093018 1318.512939 1316.137817 1307.45813 1302.110718 1297.880005 1293.7229 1290.185913 1283.546875 1282.022949 1280.76062 1278.267578 1275.929321 1273.953003 1272.380493 1270.971313 1269.746704 1269.210693 1269.089844 1268.137207 1262.865112 1259.000122 1260.480103 1262.249512 1264.763672 1266.598145 1268.475098 1269.624268 1270.130615 1267.296753 1260.13855 1255.81958 1254.485229 1252.73999 1251.049683 1249.180786 1247.629883 1246.440796 1245.82959 1244.602539 1244.249634 1244.575684 1245.508057 1245.888916 1245.657959 1244.921143 1242.84314 1239.742798 1241.011475 1243.204468 1244.695679 1245.627441 1245.70459 1245.545898 1245.100708 1243.506348 1241.483154 1239.911743 1237.90625 1235.138306 1232.823975 1232.953369 1233.015625 1234.565186 1235.483887 1236.013428 1235.92334 1235.577026 1235.207275 1233.882324 1232.308228 1231.448975 1230.939087 1230.89563 1230.763916 1230.765137 1231.095093 1232.081177 1232.375977 1231.670044 1231.30542 1231.65979 1231.723877 1232.198608 1233.084595 1233.55127 1233.75415 1233.910889 1233.713135 1233.402466 1231.611328 1225.634277 1225.817261 1230.744019 1232.341431 1234.012939 1235.027466 1235.700928 1236.031006 1236.012451 1235.564087 1234.672119 1233.834229 1232.186523 1230.494385 1226.537109 1222.734131 1220.248169 1217.845947 1214.109131 1209.734619 1209.644653 1211.702881 1212.953247 1213.579834 1213.903442 1213.807129 1213.158203 1212.73584 1213.114502 1213.855835 1214.824951 1215.923096 1216.686279 1217.03125 1217.047241 1217.071167 1217.325806 1217.729858 1218.270264 1219.058716 1219.74292 1220.391968 1220.9646 1221.088867 1220.921509 1220.395752 1219.33728 1217.809814 1220.115112 1221.678711 1222.165405 1222.133789 1221.490845 1220.628784 1219.990723 1217.015259 1213.729004 1212.227417 1214.552246 1218.302246 1220.624146 1221.341797 1221.853516 1222.013306 1221.87085 1221.488403 1220.657715 1219.996338 1219.709839 1219.297974 1218.565063 1217.782959 1217.03418 1216.470581 1215.858398 1215.147461 1214.287354 1213.198242 1212.213013 1211.352539 1210.774414 1210.329346 1209.623779 1208.593994 1207.31604 1206.864136 1206.38208 1205.555664 1204.92334 1204.110718 1203.316162 1202.685547 1202.043701 1201.803833 1201.675415 1201.532715 1201.289062 1200.825195 1200.209595 1199.511719 1198.510376 1197.068604 1195.536499 1195.336548 1195.350708 1195.396362 1196.03479 1196.67041 1197.191284 1197.870728 1198.535034 1199.182373 1199.697876 1199.856567 1199.842773 1199.574341 1199.06189 1198.373413 1197.562988 1196.39209 1193.833374 1191.435181 1191.344971 1191.140747 1190.921387 1190.750732 1190.545776 1190.335449 1190.209717 1189.968018 1189.527832 1188.957764 1188.553955 1188.039795 1187.514282 1186.975708 1186.397827 1185.809082 1185.063232 1183.279663 1182.969849 1183.587524 1184.284302 1185.633911 1187.020508 1189.169922 1191.439941 1193.511963 1195.265991 1196.400879 1197.263184 1198.315552 1200.356567 1202.559204 1204.732422 1206.614502 1208.868774 1211.276611 1214.388916 1217.553589 1223.013672 1231.001343 1237.764771 1249.044556 1259.300781 1259.203247 1257.244629 1255.118164 1252.970337 1252.936035 1254.925171 1258.607178 1261.312622 1262.728882 1262.896362 1261.619995 1258.678589 1255.172974 1257.202881 1258.470459 1258.881104 1258.393066 1256.348755 1253.144775 1249.372314 1245.490845 1235.621094 1231.571777 1235.733765 1239.558594 1239.985474 1239.956421 1242.588867 1244.0271 1241.043213 1236.981445 1233.031616 1231.067505 1232.511963 1235.881104 1238.995728 1242.119019 1246.145508 1250.148193 1254.291626 1258.368164 1261.670166 1264.780762 1265.815796 1267.297607 1267.431274 1267.109009 1280.159668 1290.179565 1299.046143 1308.84436 1316.377075 1324.081421 1331.404663 1335.872314 1337.602783 1337.50061 1336.961304 1336.054565 1334.648682 1333.379272 1332.056641 1329.70105 1324.290405 1317.981689 1315.239746 1312.46106 1309.373169 1304.691406 1302.896851 1302.187012 1300.971924 1299.675415 1297.604614 1295.19751 1292.53479 1291.726318 1291.207642 1289.868408 1286.200684 1282.41333 1279.515991 1277.844238 1275.660278 1273.334839 1272.427856 1271.956787 1271.844727 1270.015869 1263.312134 1256.240112 1250.647949 1242.364746 1233.828857 1226.581177 1218.791992 1210.792236 1201.342896 1192.960571 1186.006104 1180.867188 1175.242065 1169.188843 1165.374023 1159.227173 1157.97583 1158.34729 1157.341064 1155.739746 1154.259155 1155.171021 1156.368774 1157.465576 1158.757935 1160.86731 1161.965454 -1216.627686 1230.235718 1196.760986 1190.609497 1186.536865 1183.299561 1198.265625 1223.937744 1231.142212 1247.784424 1263.208496 1277.751221 1285.195557 1292.882324 1303.060425 1320.663452 1336.985229 1361.360229 1378.566162 1377.503906 1374.336426 1370.192871 1366.237061 1361.48584 1357.963745 1356.131592 1354.067383 1352.599487 1360.346802 1370.124634 1380.869751 1391.142334 1399.567505 1404.934814 1406.613647 1407.13269 1406.286621 1400.702515 1389.919556 1385.823608 1384.47229 1389.667847 1393.460327 1389.962769 1376.632812 1366.451782 1368.91687 1379.47644 1385.761475 1389.641602 1391.700684 1389.809448 1381.218018 1389.410522 1403.984985 1412.899902 1418.500977 1421.975464 1422.988159 1418.46582 1414.470215 1422.01062 1424.304565 1426.57373 1430.790771 1427.031982 1418.162964 1409.595947 1403.556152 1401.320435 1399.862061 1399.12854 1402.310303 1402.456787 1400.743774 1396.652344 1390.643799 1383.586914 1376.45166 1366.778687 1367.299194 1366.120728 1362.086426 1357.761108 1353.879761 1351.18689 1349.296387 1347.834106 1346.618164 1344.477905 1338.833618 1342.072998 1354.789307 1360.445679 1364.610107 1367.812012 1374.013916 1379.344849 1381.832031 1382.55835 1381.265625 1378.283813 1375.060181 1375.770386 1379.224487 1382.749268 1384.27356 1384.103027 1382.388062 1379.746826 1375.8396 1372.637695 1371.593994 1371.35144 1371.125122 1370.109619 1368.934204 1367.240845 1361.168579 1353.511841 1350.858887 1349.734009 1349.556885 1348.679321 1348.168213 1347.44812 1346.715942 1345.660034 1344.225586 1342.121216 1340.938477 1340.428467 1340.422974 1340.132935 1339.042358 1336.746582 1335.281006 1335.582764 1336.925293 1336.413696 1332.654175 1326.458618 1312.730225 1292.531982 1277.37207 1271.087769 1267.270264 1270.624634 1278.591919 1288.777588 1291.754395 1302.632568 1320.113403 1338.452393 1341.053101 1339.040039 1337.915405 1335.144897 1332.301392 1326.803833 1318.914307 1314.830444 1329.881714 1341.175415 1343.345581 1342.443604 1340.159668 1335.208618 1324.244629 1314.702026 1321.341675 1331.45459 1336.0271 1343.289307 1345.725342 1345.015503 1341.683105 1339.198242 1349.487671 1361.116089 1368.460205 1368.796631 1369.410767 1369.776611 1369.696411 1369.344849 1365.015137 1359.843018 1355.761353 1350.221558 1342.640259 1329.210327 1320.853149 1313.297119 1304.258179 1299.672607 1304.630371 1320.39563 1328.191528 1335.036987 1339.549194 1345.026245 1355.101196 1352.740601 1341.62915 1327.435059 1342.128418 1351.340576 1356.927368 1361.679443 1365.97644 1367.28064 1367.075806 1366.043701 1363.175171 1360.931519 1359.24707 1357.435669 1355.071045 1352.336182 1350.238525 1348.169189 1345.617188 1342.483765 1336.049805 1328.758301 1328.766724 1323.884033 1317.787109 1315.277344 1320.763794 1325.020386 1326.214233 1326.880737 1327.022461 1325.990967 1323.656128 1321.353149 1318.893433 1317.94751 1317.880859 1312.244019 1305.280762 1301.237305 1297.318848 1294.208618 1286.72522 1280.643555 1280.05957 1279.283813 1278.068726 1276.80957 1275.454712 1274.249878 1273.097534 1272.054199 1270.908325 1270.453003 1269.778076 1265.356445 1259.816772 1261.428589 1262.937622 1264.979126 1266.804443 1268.57666 1269.590454 1270.18042 1269.055908 1264.511719 1259.225464 1256.363281 1254.459106 1252.689087 1250.910034 1249.354126 1248.098022 1247.090332 1246.331787 1246.088135 1246.196167 1246.634399 1246.724609 1246.447632 1245.697144 1244.28772 1241.150269 1241.705444 1243.994629 1245.674438 1246.533813 1246.615112 1246.300537 1245.350098 1243.797607 1242.747681 1241.244751 1239.57251 1237.865601 1236.523193 1236.605469 1236.926025 1237.719482 1238.392456 1238.799561 1238.481689 1237.75708 1236.819336 1234.677002 1232.372437 1231.6604 1231.730835 1231.743774 1231.533081 1231.239014 1231.858398 1233.304199 1233.603882 1232.679199 1232.350708 1232.843994 1233.103271 1233.388672 1233.895264 1234.331177 1234.539307 1234.403198 1233.938721 1233.201294 1230.396606 1227.995239 1233.06311 1234.119995 1235.216675 1236.411743 1237.114624 1237.529175 1237.766357 1237.672852 1237.208984 1236.432129 1235.390259 1234.209229 1232.820312 1229.584595 1225.072388 1221.336792 1218.730469 1216.638184 1214.994141 1214.222534 1214.915161 1215.312866 1215.588745 1215.961792 1216.275024 1215.652588 1214.876343 1214.602295 1215.336426 1216.451782 1217.692261 1218.297241 1218.582642 1218.129761 1217.825806 1217.753296 1217.944092 1218.289551 1218.922241 1219.34314 1219.894043 1220.930298 1221.324829 1221.437744 1221.012085 1220.246704 1218.914429 1219.639648 1221.130981 1221.642944 1221.872803 1221.721802 1221.436646 1220.995483 1220.121216 1216.977539 1213.604492 1213.678589 1217.736938 1220.891602 1221.811401 1222.328003 1222.598633 1222.572144 1222.228516 1221.657227 1220.954468 1220.29895 1220.001099 1219.470215 1218.624023 1217.831299 1217.342651 1216.970215 1216.584106 1215.818848 1214.947021 1214.095581 1213.206177 1212.532227 1211.94519 1211.098877 1209.966187 1208.823608 1208.312988 1207.419678 1206.700928 1206.036987 1205.178833 1204.401978 1203.739868 1203.226929 1202.981323 1202.877075 1202.740112 1202.510376 1202.052856 1201.263184 1200.431396 1199.400635 1197.995239 1196.710938 1195.942627 1195.340332 1195.503052 1196.418945 1197.164429 1197.73938 1198.29187 1198.826416 1199.322754 1199.74707 1199.939575 1199.816162 1199.44043 1198.899414 1198.07312 1197.223267 1195.801636 1192.803345 1191.972778 1191.805908 1191.77771 1191.682495 1191.611816 1191.341675 1191.129517 1190.938599 1190.649658 1190.198364 1189.762939 1189.277222 1188.749634 1188.165771 1187.62915 1187.121216 1186.435425 1185.730835 1184.374146 1183.660034 1183.163208 1183.363037 1184.421753 1185.795288 1187.72229 1190.027344 1192.088867 1193.853149 1194.765259 1195.248657 1196.420776 1199.185425 1201.432007 1203.457642 1205.230347 1206.758179 1209.391968 1212.021851 1214.989014 1218.303711 1224.370239 1230.973999 1240.412598 1251.175049 1259.512207 1257.962402 1255.643677 1254.441895 1255.344482 1257.641113 1261.862183 1264.811523 1265.812134 1265.87085 1264.118652 1261.33313 1259.14209 1260.136475 1260.436523 1260.004761 1259.208496 1257.388672 1252.687256 1248.103149 1243.334351 1234.820923 1231.537598 1238.957886 1243.942749 1244.512207 1242.502319 1243.862061 1244.705933 1244.552856 1240.429688 1236.118164 1232.126587 1231.539429 1234.539795 1237.675781 1241.266602 1244.54248 1247.590332 1251.447998 1255.502441 1258.283203 1259.658813 1260.358032 1262.619873 1265.337402 1267.900757 1279.481812 1292.37439 1301.68811 1310.357056 1320.856323 1330.203003 1334.85022 1339.007202 1340.273682 1340.678223 1340.170776 1339.397339 1338.821411 1337.743286 1335.808105 1333.210571 1330.189209 1326.493042 1322.568726 1319.293945 1315.348389 1312.310547 1311.211426 1309.616211 1307.277222 1305.095581 1302.392944 1299.486206 1296.952271 1295.415283 1294.896484 1294.112183 1290.908203 1286.074707 1282.492432 1279.596924 1275.585693 1273.192871 1271.780029 1269.833008 1265.61084 1259.279785 1253.482178 1248.915161 1243.033936 1235.427734 1228.957031 1222.756348 1214.365845 1204.013794 1193.761719 1186.687866 1181.325928 1176.332397 1170.807007 1168.883179 1166.400269 1164.0271 1163.555298 1161.176636 1158.546387 1156.055542 1153.310303 1152.193481 1153.050903 1153.672241 1154.509521 1156.016235 1157.44873 -1208.185303 1220.718506 1194.349121 1190.444824 1186.952881 1183.970459 1191.491211 1220.305054 1234.871826 1259.084961 1276.832642 1288.433105 1298.638184 1306.729614 1318.295044 1331.773193 1348.218994 1364.627808 1378.864502 1380.712646 1379.026001 1374.653198 1370.457642 1366.608398 1362.720825 1360.476929 1359.347046 1358.276733 1361.02002 1366.457397 1379.273071 1389.962524 1399.49353 1405.58313 1407.543701 1408.26355 1407.014282 1401.851196 1391.528687 1390.204346 1388.899292 1394.520996 1394.957764 1389.5448 1375.161865 1365.829468 1375.385498 1384.300781 1391.25293 1399.649658 1401.51355 1398.045898 1390.522827 1389.888062 1402.817017 1412.540405 1418.993896 1425.598633 1427.523804 1425.345825 1426.54248 1430.719849 1434.283813 1440.13501 1441.622925 1440.392212 1429.150146 1422.290771 1419.177734 1418.02417 1417.553833 1417.663696 1416.053711 1411.888916 1406.070435 1399.998779 1391.019409 1384.304077 1377.704956 1375.831055 1375.23291 1372.315552 1368.352539 1363.724487 1358.881348 1354.552734 1352.094849 1350.365845 1348.20105 1344.565674 1338.426636 1349.02478 1358.966431 1364.909912 1370.783813 1375.920288 1379.213013 1382.600586 1385.328247 1386.041748 1384.84082 1381.440674 1377.22937 1377.008789 1379.173828 1385.604492 1388.500122 1387.914551 1386.234375 1383.487061 1379.828979 1378.061035 1378.09668 1376.278687 1374.658813 1373.039307 1371.473877 1369.566284 1366.289185 1357.46814 1353.286011 1353.243286 1353.316406 1352.767944 1351.8302 1350.865845 1349.648071 1348.293579 1346.863647 1345.418701 1344.987793 1344.97998 1345.024658 1344.991577 1344.129272 1342.43689 1340.913208 1341.902954 1343.076172 1342.580688 1338.764038 1328.560303 1306.783569 1286.716309 1276.881348 1271.338013 1267.936523 1275.43396 1282.742065 1292.199707 1301.061401 1310.499268 1322.344238 1342.72876 1344.71106 1343.0625 1343.102539 1343.168579 1340.930664 1334.431396 1325.407959 1316.103882 1326.730957 1341.835327 1344.464966 1344.63501 1343.597412 1339.197388 1328.534912 1319.856323 1331.54834 1339.567627 1343.82019 1350.67627 1353.008911 1350.090332 1349.1698 1345.778198 1348.322388 1358.205933 1366.622925 1368.825928 1369.454224 1369.722534 1369.294922 1366.7854 1357.039185 1351.041504 1347.282104 1342.291504 1334.695312 1325.660645 1316.785889 1311.994019 1306.172119 1301.146729 1307.744263 1323.085327 1333.185181 1343.547729 1348.990356 1356.00708 1363.406982 1360.934326 1348.451294 1341.94458 1341.206665 1351.112427 1357.550659 1362.754517 1367.245117 1368.749023 1368.926025 1367.972412 1365.530029 1363.240845 1361.577759 1359.277344 1356.611694 1353.745483 1352.166504 1349.861938 1345.223022 1341.213623 1340.046631 1338.297241 1334.994385 1330.619019 1320.895752 1322.72522 1331.105347 1331.126221 1331.242188 1331.164795 1330.39917 1328.47168 1324.474854 1319.389038 1314.40271 1308.549805 1306.397705 1304.484009 1299.812378 1295.564331 1293.692383 1291.909302 1285.776367 1281.736816 1281.166504 1280.213379 1278.877197 1277.790161 1277.013062 1276.28418 1275.465576 1274.139771 1272.616455 1271.487793 1270.407837 1266.984985 1260.440186 1262.085815 1263.449341 1265.308105 1266.995605 1268.655151 1269.602051 1270.127563 1270.174927 1268.808838 1262.956665 1257.742798 1255.258179 1253.839233 1252.340088 1250.885986 1249.782593 1248.901001 1248.393433 1248.079956 1247.976318 1247.948242 1247.640259 1247.044067 1246.249634 1244.922363 1242.742554 1242.186157 1244.737305 1246.298584 1247.204956 1247.515015 1247.190674 1246.282104 1245.118286 1243.942993 1242.179688 1241.182861 1240.540283 1240.127686 1240.278809 1241.093262 1241.949219 1241.842896 1241.939209 1241.491943 1240.279785 1238.485352 1235.620972 1232.751465 1231.979126 1232.87915 1233.137695 1232.736084 1231.804443 1232.839478 1234.387207 1234.977417 1234.82373 1234.585205 1234.746338 1234.90625 1235.187744 1235.355469 1235.47583 1235.287109 1234.904175 1234.168823 1233.095825 1230.161133 1232.407837 1234.724854 1236.229614 1237.616821 1238.576172 1239.254761 1239.62085 1239.756958 1239.648071 1238.947021 1237.825439 1236.540527 1235.285278 1233.896484 1231.533325 1225.559326 1221.420776 1218.956421 1218.697388 1218.164185 1217.345093 1217.953857 1217.405151 1217.026123 1217.416382 1218.520264 1218.904541 1217.876953 1216.304077 1217.13147 1218.220825 1219.27771 1219.803833 1219.762329 1219.020752 1218.48938 1218.509888 1218.508667 1218.813477 1219.191895 1219.425537 1219.634399 1220.763306 1221.428101 1221.694824 1221.488403 1220.881958 1220.129761 1219.315674 1220.634766 1221.39502 1221.821411 1221.955444 1221.92981 1221.714966 1221.01062 1220.056641 1216.883057 1214.619995 1214.696533 1221.605225 1222.203491 1222.785034 1223.208984 1223.261475 1222.930542 1222.416138 1221.765625 1221.150635 1220.671143 1220.374268 1219.380981 1218.55542 1218.293701 1218.23999 1217.981201 1217.472046 1216.662354 1215.673584 1214.900879 1214.491821 1213.929077 1213.139404 1212.19812 1210.953491 1209.852905 1208.696411 1207.494141 1206.829712 1206.026123 1205.147827 1204.549683 1204.224487 1204.106201 1204.061646 1204.057373 1203.756836 1203.353027 1202.641479 1201.821655 1200.716675 1199.511108 1198.204346 1196.726807 1195.435059 1195.540161 1197.011353 1197.957153 1198.520874 1198.964355 1199.273193 1199.57251 1199.725342 1199.827026 1199.618286 1199.172729 1198.486206 1197.605347 1196.594849 1195.077881 1192.558228 1192.500244 1192.611328 1192.768799 1192.704956 1192.549194 1192.27832 1191.983398 1191.682739 1191.393677 1191.018921 1190.606079 1190.09729 1189.573486 1189.002563 1188.335693 1187.789062 1187.128174 1186.499268 1185.274902 1184.699951 1184.227295 1183.985352 1183.922729 1184.318604 1186.441895 1188.666504 1190.830811 1192.661011 1193.679443 1194.775391 1196.14978 1198.50061 1200.607666 1202.50354 1204.093628 1205.815308 1207.554199 1210.239014 1213.369019 1216.725952 1220.489746 1226.645142 1233.094849 1239.337646 1243.272095 1247.272827 1251.817749 1256.588379 1259.124634 1263.422852 1267.336792 1268.258423 1268.875488 1269.063354 1266.974487 1265.546753 1264.15271 1263.427246 1262.352783 1260.963501 1259.301147 1256.881958 1250.103149 1244.313843 1240.255249 1235.961548 1235.070801 1243.707275 1245.700684 1246.075928 1244.490845 1243.781982 1244.45105 1244.971924 1242.987915 1238.652588 1234.913086 1231.4104 1232.986206 1236.255493 1239.529419 1242.122437 1244.275391 1247.098755 1251.318115 1254.493042 1255.137207 1255.385254 1259.670532 1264.564209 1268.922852 1277.432739 1288.330444 1298.444946 1307.352905 1319.049561 1332.123413 1337.314453 1342.58313 1343.085327 1343.04541 1342.825073 1342.533569 1342.450928 1341.998169 1339.634399 1336.374756 1333.483765 1332.149658 1329.800659 1326.226807 1321.183472 1318.892578 1318.944214 1317.172974 1312.155396 1308.516968 1306.243042 1303.55603 1300.309204 1297.541748 1296.594238 1295.375244 1291.198853 1285.145752 1281.939941 1276.057251 1270.922485 1269.416382 1266.133789 1261.64209 1256.062012 1251.050293 1246.952026 1242.293579 1236.059937 1229.558716 1224.88269 1219.700317 1211.996216 1200.527344 1189.81604 1181.774048 1178.809814 1174.62085 1170.622681 1169.682861 1169.860596 1170.612305 1171.845947 1169.908325 1161.950073 1157.391846 1152.993164 1150.203735 1149.987549 1150.343506 1147.817871 1147.071899 1146.680176 -1193.96521 1194.462158 1193.287354 1190.324707 1186.839844 1184.462036 1188.544678 1206.158203 1232.013916 1261.710449 1276.259399 1290.60791 1304.717041 1312.123535 1321.424683 1329.560303 1338.625732 1353.64624 1366.679932 1375.040039 1380.616455 1378.099365 1372.498047 1369.23584 1366.16272 1365.113892 1366.111084 1366.420044 1366.124146 1365.499878 1375.405151 1385.578735 1396.83728 1405.343994 1408.019531 1409.596558 1409.385498 1406.021729 1403.580444 1400.621948 1398.879883 1400.718384 1396.838623 1387.668823 1376.039673 1372.31958 1380.557373 1388.716675 1399.970215 1407.24231 1409.193481 1406.847656 1400.046509 1392.751709 1401.361694 1410.7323 1418.779297 1426.28833 1429.863403 1430.678711 1432.309448 1437.109619 1441.61853 1444.00769 1444.013062 1440.932373 1435.297363 1430.559082 1428.060425 1425.772339 1423.676147 1421.455566 1419.467041 1416.769897 1410.009277 1400.496704 1391.465454 1388.361694 1385.43042 1382.861816 1381.322632 1378.465088 1373.513794 1368.63501 1363.884399 1357.840576 1353.28125 1353.275391 1350.512573 1345.128784 1338.702393 1355.037842 1363.052612 1370.42627 1377.677002 1381.259033 1383.736328 1386.798828 1388.758667 1389.914307 1389.953491 1386.711792 1379.640015 1377.167236 1379.604492 1387.499146 1391.283569 1391.113525 1389.999146 1386.998535 1384.184326 1382.764526 1381.557495 1379.862671 1377.561646 1375.46228 1373.658081 1371.592651 1368.578491 1364.316162 1361.165161 1360.555786 1360.569092 1358.680054 1356.544189 1353.571411 1352.14502 1350.491455 1349.468506 1348.861084 1348.9729 1349.521973 1350.134766 1350.203613 1349.012451 1346.842651 1345.500244 1345.039673 1344.735229 1344.025635 1341.061646 1331.127686 1311.904907 1288.894653 1276.951538 1270.760742 1268.966064 1278.913574 1284.135986 1295.929565 1313.098389 1326.954224 1327.243896 1339.249268 1345.115479 1346.73877 1347.597778 1347.21106 1345.828003 1343.233276 1331.726929 1322.802979 1326.577148 1336.562012 1343.759277 1345.292236 1345.203491 1342.847778 1333.05188 1327.345337 1342.372437 1350.496704 1353.304321 1356.490112 1358.447144 1357.388062 1357.585449 1357.36084 1355.026611 1356.175781 1363.446045 1366.101685 1368.36438 1366.137329 1364.401733 1359.337158 1351.244141 1344.206543 1339.511108 1332.254639 1327.754761 1324.330688 1317.606201 1313.28418 1307.791138 1302.598633 1310.302612 1326.561401 1336.922729 1347.855591 1356.335205 1364.292847 1368.751831 1369.276001 1357.795288 1349.169189 1342.12085 1353.375244 1358.11499 1363.058228 1367.223267 1369.87146 1370.705811 1370.10376 1367.94165 1365.838501 1363.935425 1361.635986 1358.826538 1356.425659 1355.164307 1352.718018 1345.92334 1341.969238 1343.981689 1343.960693 1341.390137 1333.250122 1327.695557 1331.888062 1334.320435 1334.790039 1333.997803 1333.389526 1332.335938 1330.084839 1322.327026 1315.541138 1309.164062 1303.184448 1299.064941 1294.954712 1292.581543 1292.289673 1291.919067 1290.964844 1288.51001 1286.08667 1284.332764 1282.66394 1280.628784 1279.138428 1278.548218 1278.652832 1278.081543 1276.669922 1274.342529 1272.236816 1270.636719 1267.057495 1261.215332 1262.583984 1263.812988 1265.553345 1266.966675 1268.318726 1269.55127 1270.271606 1270.40332 1269.791138 1264.901489 1259.657104 1256.432983 1255.0354 1253.533813 1252.314087 1251.303589 1250.684937 1250.03833 1249.619751 1249.541748 1249.327026 1248.955688 1248.195068 1247.046509 1245.460571 1244.150513 1242.701904 1244.700439 1246.727417 1248.07605 1248.589233 1248.37085 1247.652954 1246.41748 1244.377075 1242.929321 1242.765869 1242.695923 1242.658203 1243.194458 1244.157959 1245.431152 1245.317383 1245.049316 1244.39502 1242.841431 1240.392822 1237.31897 1234.330078 1233.040771 1234.080566 1234.582031 1234.187378 1233.663818 1234.581665 1235.896973 1236.732056 1236.953613 1236.957275 1237.17749 1237.226685 1237.290894 1237.184814 1236.879883 1236.213135 1235.315063 1234.24646 1233.06543 1231.818604 1233.723389 1235.86438 1237.869507 1239.596924 1240.814697 1241.411255 1241.664307 1241.820068 1241.781006 1240.846558 1239.175415 1237.177368 1235.154541 1233.254272 1229.881226 1225.139893 1219.604248 1219.887939 1219.942505 1220.008911 1219.967651 1219.853638 1219.312012 1218.389526 1218.836182 1220.010376 1220.561157 1220.27124 1218.185059 1219.077637 1220.011963 1220.571777 1220.879272 1220.652832 1219.925293 1219.300781 1219.675171 1219.282471 1219.692749 1220.228027 1220.282349 1220.094727 1221.009155 1221.854004 1222.122437 1221.952759 1221.422119 1220.717896 1219.896118 1220.572021 1221.384644 1221.997559 1222.335083 1222.395386 1222.159912 1221.634644 1220.784668 1219.732178 1216.471313 1215.559448 1220.994751 1222.442383 1223.311157 1223.923584 1224.017212 1223.778809 1223.177612 1222.731445 1222.266479 1221.839966 1221.357544 1220.115845 1219.436768 1219.502808 1219.532593 1219.529053 1219.354858 1217.841553 1216.983032 1216.478882 1216.364746 1216.253296 1215.695435 1214.904297 1213.274658 1211.582764 1209.97229 1208.490356 1207.261963 1206.457153 1205.71521 1205.378662 1205.106567 1205.134888 1205.336792 1205.348877 1205.16333 1204.647095 1203.909058 1203.164185 1202.426636 1201.512939 1200.293335 1198.672485 1196.847412 1197.12561 1198.361084 1199.167358 1199.526733 1199.838013 1199.963379 1199.958252 1199.881958 1199.697998 1199.29187 1198.748413 1198.007812 1196.985474 1195.962402 1194.246948 1193.19165 1193.674927 1193.894653 1193.801758 1193.768311 1193.589233 1193.292847 1192.885376 1192.578857 1192.237915 1191.822266 1191.412598 1190.916626 1190.3396 1189.716553 1188.979736 1188.430908 1187.867188 1187.232422 1186.154175 1185.501343 1185.116943 1184.736938 1184.547241 1184.543823 1185.334717 1187.663452 1189.900635 1192.175781 1194.018311 1195.675171 1196.928833 1198.311646 1200.12854 1201.724609 1203.227661 1204.814697 1206.399292 1208.547852 1211.833374 1214.856934 1217.956177 1221.946045 1226.755615 1231.689453 1235.985474 1239.619629 1243.83374 1256.092285 1261.037231 1268.295288 1270.517456 1270.614746 1271.353027 1271.314331 1269.651123 1268.392822 1267.139282 1266.283325 1264.092896 1261.189697 1258.584473 1252.654663 1245.658081 1242.235107 1241.095459 1241.320557 1243.328613 1245.682251 1247.21814 1247.484741 1246.403442 1244.180908 1244.038086 1245.178467 1244.533813 1241.091675 1237.988037 1234.490601 1234.121948 1236.382812 1238.719971 1240.756958 1242.472656 1243.498657 1247.556519 1251.377808 1253.842896 1257.202881 1260.859131 1267.18396 1272.053955 1278.17749 1286.963989 1295.97937 1304.962524 1314.70813 1327.024292 1332.604248 1336.611572 1340.132568 1340.43103 1341.632935 1343.222534 1344.407104 1343.786499 1341.907104 1336.59375 1333.931274 1333.181641 1333.888794 1332.046631 1328.678711 1321.457642 1319.207031 1314.153564 1308.89856 1306.463745 1304.815063 1303.569214 1299.644287 1296.660156 1292.456787 1289.354614 1283.615234 1277.677368 1270.774414 1265.974976 1263.817505 1261.974609 1258.00708 1252.779053 1247.233032 1243.240723 1239.43103 1234.793335 1229.443115 1223.64624 1220.573364 1214.201294 1207.517334 1197.709839 1187.793945 1181.755859 1178.064819 1174.970093 1172.868408 1171.520386 1171.614746 1172.245972 1172.238037 1168.489258 1162.090454 1157.844849 1152.987549 1149.514038 1147.382935 1148.294189 1147.321777 1145.533691 1144.547241 -1190.718384 1195.275757 1194.631714 1190.356079 1187.030518 1185.246582 1187.210205 1200.979126 1225.687988 1243.696167 1267.224121 1284.882446 1296.587646 1304.575195 1314.057983 1319.736206 1327.246338 1338.949219 1349.423096 1360.625366 1369.408569 1373.237671 1372.013672 1371.309937 1370.634033 1369.867676 1370.577515 1371.737427 1371.617188 1373.348877 1376.324829 1386.169312 1395.781738 1404.035645 1408.331665 1411.269409 1412.788452 1413.257568 1412.702759 1409.581177 1408.155151 1406.640259 1402.705688 1391.625854 1381.87207 1375.935425 1383.144531 1393.39978 1404.653931 1413.177856 1416.457886 1415.81189 1408.118164 1398.99646 1400.678101 1408.556885 1415.897705 1425.338135 1430.488037 1433.981323 1437.770874 1444.547729 1448.865356 1447.832275 1445.917114 1442.908691 1440.320557 1438.30127 1435.346558 1431.091797 1427.685059 1424.553589 1421.914429 1417.948242 1412.009644 1403.618896 1399.367188 1395.515137 1392.676758 1388.389282 1385.610596 1382.064697 1377.784546 1372.393066 1367.633789 1362.198608 1357.917114 1356.338013 1352.799194 1346.237183 1338.804443 1358.347046 1367.921875 1375.540405 1380.90625 1384.804321 1387.945435 1390.908081 1392.927368 1393.992065 1394.098999 1392.472534 1384.221191 1377.530884 1377.762817 1387.102661 1392.185669 1392.428345 1392.139648 1390.5354 1388.052002 1386.375854 1384.910645 1382.893555 1380.490234 1377.80249 1375.980835 1374.859131 1373.078979 1370.018066 1368.874512 1369.043335 1369.199951 1367.243408 1363.265015 1358.930664 1354.938354 1352.253296 1351.273926 1350.994263 1351.717529 1353.253906 1354.503784 1354.803223 1353.620605 1350.793701 1347.786743 1346.509033 1346.209717 1345.368042 1340.395508 1329.360718 1311.021362 1287.132812 1275.984009 1270.632324 1271.063965 1279.831787 1285.005493 1304.726318 1324.497803 1336.224365 1336.483398 1339.230469 1344.888428 1349.087646 1351.396484 1352.619141 1351.75 1347.906494 1339.245117 1331.615112 1332.903442 1337.720459 1340.761963 1345.332764 1346.58728 1343.899658 1336.106445 1329.343018 1342.607666 1354.443481 1356.920166 1359.315918 1364.858032 1367.380493 1367.258179 1365.372803 1365.016479 1364.4552 1366.246338 1367.979614 1367.557617 1364.700073 1357.153442 1351.457275 1345.715698 1340.838013 1338.238037 1333.580933 1332.985229 1331.75415 1324.996582 1316.478271 1309.519653 1303.761841 1313.353516 1329.504028 1338.15918 1352.384521 1360.952393 1367.713745 1369.963257 1370.564575 1366.552612 1355.044434 1350.698853 1353.731079 1359.199341 1363.564331 1367.293701 1371.663086 1373.325928 1372.876831 1370.953613 1369.036621 1366.586548 1364.053223 1361.334229 1358.893188 1356.827515 1353.971924 1350.365967 1348.009399 1347.636108 1346.335205 1343.703369 1337.794922 1331.75769 1335.164917 1337.442261 1337.766479 1336.135864 1333.906738 1331.712036 1323.989868 1316.667358 1309.180176 1304.27478 1302.233521 1298.854248 1296.545044 1295.324341 1294.067871 1294.095337 1294.30481 1293.292847 1290.107178 1287.747559 1285.651245 1282.869263 1280.442139 1280.948975 1281.097412 1280.684448 1279.083862 1276.360718 1273.130005 1270.601318 1267.285767 1262.102905 1263.06311 1264.187622 1265.599243 1266.811646 1268.073608 1269.485107 1270.4823 1270.680786 1269.735474 1265.893311 1262.410278 1258.702515 1255.940796 1254.732422 1253.691406 1252.923096 1252.040405 1251.517456 1251.069824 1250.840942 1250.816406 1250.563477 1249.82605 1248.762085 1247.426392 1246.170044 1244.398071 1244.176636 1247.449829 1249.585693 1250.154419 1249.938354 1248.99231 1247.171753 1243.8302 1244.457153 1244.797241 1244.519775 1245.509277 1246.668945 1247.30957 1248.218994 1248.436279 1247.875977 1246.823853 1245.126587 1242.814819 1239.928467 1237.871948 1236.406372 1236.165527 1236.403687 1236.28772 1236.344482 1236.971558 1238.079224 1238.875732 1239.285767 1239.345459 1239.708374 1239.731812 1239.623535 1239.283081 1238.404663 1237.28833 1235.786255 1234.384155 1233.211426 1233.788452 1235.535767 1237.546997 1239.634399 1241.789429 1242.924316 1243.251221 1243.681152 1244.094849 1243.8573 1242.464722 1240.401367 1237.904907 1234.52417 1231.647461 1230.595459 1227.287354 1224.025146 1222.590454 1222.428223 1222.251343 1221.9646 1221.61084 1220.570557 1219.787354 1220.243774 1221.084839 1221.519043 1221.134277 1219.912354 1220.28418 1220.995972 1221.481934 1221.705444 1221.473755 1220.811157 1220.367188 1220.754395 1220.598267 1220.910034 1221.414307 1221.588745 1221.663208 1221.991577 1222.457031 1222.700073 1222.474854 1222.032715 1221.390625 1220.920288 1221.345581 1221.769409 1222.369995 1222.773926 1222.93689 1222.683105 1222.005737 1221.375488 1220.587402 1216.99585 1217.962891 1220.658081 1222.781372 1223.98938 1224.587769 1224.80249 1224.571655 1224.213867 1223.886475 1223.495605 1223.149658 1222.535278 1221.491455 1221.089233 1221.110107 1221.206543 1221.236084 1219.69165 1218.729248 1218.330811 1217.984375 1218.185425 1218.473145 1218.405396 1217.832153 1216.27356 1213.744995 1211.185303 1208.864868 1207.29541 1206.788574 1206.254272 1206.043579 1205.956299 1206.192871 1206.470459 1206.599854 1206.491089 1205.892944 1204.982056 1204.467041 1204.167358 1203.570435 1202.672241 1201.503052 1200.704346 1200.381592 1200.403198 1200.64563 1200.919922 1201.0177 1200.954956 1200.663818 1200.120605 1199.628784 1198.985352 1198.276855 1197.493774 1196.542236 1195.706787 1194.002686 1194.903687 1195.130737 1194.946167 1194.828735 1194.644165 1194.445679 1194.108032 1193.817993 1193.428345 1193.109619 1192.61438 1192.145386 1191.65332 1191.065552 1190.442383 1189.737183 1189.189941 1188.646606 1188.102417 1186.887939 1186.427856 1185.899048 1185.594727 1185.269531 1185.059937 1184.947021 1187.072754 1189.30603 1191.724121 1194.252197 1196.055786 1197.206909 1198.319702 1199.455811 1201.042725 1202.631958 1204.307739 1206.295532 1208.394531 1210.687988 1213.235596 1215.852661 1218.345825 1219.421631 1225.004028 1229.882568 1233.900146 1239.081421 1246.035645 1253.603394 1262.776978 1272.386475 1273.394165 1274.056885 1273.921387 1272.432983 1271.055176 1270.089111 1268.394531 1265.039185 1260.581055 1255.238403 1245.026123 1243.546265 1242.564697 1242.435059 1244.107178 1246.616699 1248.386108 1249.638428 1249.767456 1248.27832 1245.820923 1244.446045 1245.782104 1245.833374 1244.419434 1241.663452 1238.971069 1237.362183 1237.460449 1238.89563 1240.314209 1242.154907 1244.247192 1247.046021 1250.508667 1254.026733 1257.501343 1260.948608 1266.633179 1271.546509 1277.47168 1284.586914 1290.897217 1297.925293 1306.460571 1316.113892 1321.413208 1322.014648 1320.461304 1322.130127 1324.166748 1326.759766 1331.21936 1332.893677 1332.594727 1329.152344 1320.657227 1313.912842 1313.64856 1313.729614 1308.134766 1305.219116 1301.722168 1295.959351 1291.075317 1286.263794 1284.328979 1287.681641 1291.439209 1289.316162 1279.660645 1276.115112 1271.957642 1266.213379 1262.168457 1257.813232 1255.562744 1254.117432 1250.245972 1244.158691 1238.768921 1233.977905 1230.911499 1226.175781 1220.756714 1215.078857 1211.178589 1206.542236 1200.662598 1192.97168 1184.76709 1179.612671 1175.529541 1173.624878 1171.77002 1170.328125 1170.784912 1169.187012 1164.886841 1160.145874 1157.847412 1155.517212 1152.257446 1148.926636 1146.556274 1145.749634 1146.465576 1145.065918 1143.276611 -1188.946899 1191.734863 1194.844849 1189.545532 1187.020874 1185.573853 1186.454834 1195.28772 1210.805664 1226.824951 1257.33667 1271.371704 1280.623169 1291.479736 1299.911987 1307.701172 1312.83252 1320.980103 1332.165039 1345.086914 1360.48584 1369.035522 1371.228394 1373.390747 1375.770264 1375.043823 1375.193726 1377.177246 1379.225098 1379.492065 1387.445801 1393.536377 1398.840942 1403.050293 1408.907471 1412.788696 1415.156006 1417.39624 1418.229492 1416.877808 1415.417969 1412.322266 1405.73999 1396.69519 1388.740356 1379.240845 1385.283325 1395.759399 1409.499756 1421.769409 1426.574829 1422.793457 1417.105591 1400.621704 1405.469849 1414.713257 1417.221313 1424.623779 1430.744629 1435.896484 1439.003906 1448.552856 1452.625854 1450.457397 1448.281006 1446.153198 1444.154541 1442.394409 1440.30957 1435.40918 1430.920654 1427.130981 1424.186157 1421.258789 1417.390381 1415.717163 1412.723999 1405.456543 1399.835815 1394.33252 1389.346924 1385.577637 1380.447998 1374.869507 1369.735229 1364.689209 1361.252686 1358.263794 1353.673462 1346.071655 1339.841553 1360.247437 1372.170288 1379.37793 1383.705933 1387.685303 1391.317749 1394.373169 1397.466919 1399.12793 1398.723755 1395.840698 1390.520752 1388.418945 1378.403198 1383.262695 1390.811646 1392.807617 1393.205933 1392.704834 1390.935059 1389.967163 1388.067871 1386.75293 1384.379761 1381.176025 1378.039795 1377.507935 1377.422363 1376.991577 1376.826538 1377.140259 1376.302856 1374.234375 1370.577881 1366.122803 1360.890137 1354.326294 1353.615967 1352.863403 1354.006592 1355.550659 1355.940308 1355.874756 1354.926514 1347.905273 1346.456421 1346.762695 1347.101929 1343.781128 1328.279419 1314.371948 1297.047852 1278.763428 1273.474976 1272.428467 1275.358521 1280.506104 1285.971313 1310.737427 1334.649292 1343.501709 1343.59729 1341.353027 1346.783447 1351.415649 1354.449219 1355.940552 1355.89563 1351.814209 1342.847412 1338.661377 1341.74939 1343.113647 1342.80481 1347.037598 1350.087158 1347.183716 1340.767334 1338.410156 1339.214478 1344.886108 1353.171021 1356.852661 1364.367676 1367.6427 1367.898438 1368.02124 1367.889526 1367.50293 1368.435181 1368.805664 1368.216797 1362.557007 1354.059814 1347.622437 1340.879395 1340.890503 1341.7948 1342.75647 1340.117554 1335.261353 1329.47229 1317.780396 1310.012329 1305.463013 1316.488281 1330.428467 1338.693237 1351.619507 1360.760376 1367.452637 1369.927002 1370.187134 1367.457886 1360.245605 1355.314331 1353.324463 1361.157227 1366.263672 1370.424438 1374.678833 1376.417358 1376.161621 1374.816772 1372.60144 1369.832275 1366.626709 1363.697998 1361.037598 1358.21106 1354.353516 1353.593994 1352.746704 1351.150513 1348.247559 1344.674683 1341.011597 1338.352905 1340.251587 1341.142212 1341.067871 1337.230835 1331.334351 1323.369995 1312.663574 1304.879883 1305.355225 1306.645142 1307.039917 1307.886108 1308.800781 1305.17395 1301.297119 1299.209595 1297.821655 1295.890869 1293.077759 1291.328247 1289.784546 1286.952026 1284.969727 1284.514893 1284.125 1283.003174 1281.258301 1278.08606 1273.286377 1270.428223 1266.776489 1263.032959 1263.411987 1264.491699 1265.87793 1267.081909 1268.177002 1269.573242 1271.043823 1271.330688 1270.19519 1268.936157 1266.118164 1261.604492 1258.15686 1256.196045 1255.179565 1253.883179 1253.190674 1252.649292 1252.378662 1252.318481 1252.37085 1252.298828 1251.936646 1251.152954 1250.258423 1248.330811 1246.561523 1245.459595 1249.494751 1251.928955 1252.191162 1251.668701 1250.683105 1248.56604 1246.687134 1247.172974 1248.001465 1248.874512 1250.613159 1251.590942 1251.793945 1251.662231 1251.471069 1250.708374 1249.161377 1247.208008 1244.46106 1242.537354 1240.546021 1239.046997 1238.453003 1238.638916 1238.543457 1238.502441 1239.258911 1240.400757 1241.271118 1241.531006 1241.730835 1241.996582 1242.137207 1242.031006 1241.292847 1240.004761 1238.430908 1236.58313 1234.767212 1233.849976 1236.186646 1238.389526 1239.879028 1241.281128 1243.188843 1245.031128 1245.182495 1245.427612 1245.610596 1245.285645 1244.126709 1242.039795 1239.438599 1236.403687 1233.764648 1232.885376 1230.158691 1228.030762 1226.411133 1225.470337 1224.757202 1224.05127 1223.280884 1222.4021 1221.754028 1221.848877 1222.292603 1222.341919 1221.854736 1221.151245 1221.174194 1221.826416 1222.269531 1222.583862 1222.447998 1222.289795 1222.032837 1222.178955 1222.162842 1222.546143 1222.687378 1222.925659 1223.235229 1223.492188 1223.490601 1223.466431 1223.297852 1222.770386 1222.351929 1221.938599 1222.196167 1222.672974 1223.144775 1223.758545 1223.896973 1223.522217 1222.667603 1221.448364 1220.242554 1217.171509 1220.581543 1221.668579 1223.496826 1224.696045 1225.498291 1225.741577 1225.57666 1225.344238 1225.218872 1225.073364 1224.834839 1224.273315 1223.793213 1223.392822 1223.334106 1223.244629 1222.623291 1221.193726 1220.172729 1219.826294 1219.82312 1220.089478 1220.45105 1220.604736 1220.249268 1219.429199 1216.495239 1213.149902 1209.648926 1207.409912 1207.246094 1207.126099 1206.787964 1206.813721 1207.162231 1207.489746 1207.712891 1207.636963 1206.727295 1205.928345 1205.766602 1205.911987 1205.681763 1205.181519 1204.219482 1203.411011 1202.8573 1202.540405 1202.481323 1202.375 1202.352051 1202.074219 1201.526611 1200.76123 1199.869141 1198.970459 1198.051392 1197.148193 1196.403198 1195.393677 1194.66394 1195.985474 1195.952393 1195.88269 1195.782593 1195.566284 1195.254028 1194.922852 1194.630249 1194.256104 1193.860352 1193.403442 1192.849243 1192.378296 1191.644897 1191.146362 1190.495728 1189.995483 1189.549805 1188.955811 1187.77356 1187.262329 1186.77002 1186.299194 1185.951416 1185.69043 1185.324463 1186.586914 1188.747681 1191.539795 1194.129028 1195.91394 1196.947876 1197.812988 1198.827515 1200.181519 1201.875122 1203.884521 1205.743164 1207.431885 1209.721924 1211.705933 1213.907715 1215.803955 1217.866821 1220.94873 1224.247192 1228.446533 1232.806396 1238.080078 1243.285522 1250.686279 1263.111694 1274.400879 1277.755371 1277.37207 1275.458862 1273.656738 1271.945068 1269.268555 1264.515991 1258.422363 1252.877686 1245.693481 1246.99231 1244.853516 1243.506348 1246.931519 1250.503418 1252.223633 1253.206665 1252.883667 1251.03125 1249.233398 1248.139038 1248.337646 1248.050537 1246.947266 1244.899292 1241.68811 1239.253174 1238.920776 1239.29126 1240.512085 1242.001953 1244.310425 1246.850098 1249.949341 1253.284058 1256.073364 1259.208496 1263.027466 1266.59314 1273.400391 1282.123779 1287.527588 1294.20813 1301.146851 1306.780273 1311.598755 1308.354614 1305.750366 1307.04541 1308.735229 1311.574951 1312.455078 1312.670532 1311.747681 1307.815063 1300.714478 1297.068237 1295.812866 1292.949219 1290.726685 1287.234985 1283.503662 1280.382446 1278.117065 1275.183838 1273.035156 1274.414795 1277.529785 1276.800781 1270.263306 1263.440674 1260.838013 1258.144165 1255.132935 1252.270264 1250.201294 1247.329224 1243.703369 1239.762573 1234.301636 1224.600464 1217.563232 1215.115234 1210.21167 1204.344849 1201.740356 1198.924194 1193.751221 1185.146851 1179.981201 1175.280762 1171.466187 1170.776733 1168.210327 1165.220703 1162.938843 1159.889526 1157.590088 1156.600586 1155.304199 1152.877319 1150.725586 1148.69165 1146.198364 1143.7948 1143.341431 1142.939575 1141.87146 -1190.881348 1188.23291 1188.473877 1187.989868 1186.529541 1185.595947 1186.591309 1192.018799 1198.325317 1207.841309 1226.03418 1242.931396 1256.518677 1271.021484 1283.767822 1290.313232 1299.088379 1307.682983 1319.524292 1335.193115 1351.187012 1366.53064 1372.007202 1376.840698 1379.275146 1379.514893 1378.478149 1381.487427 1383.808716 1386.041992 1391.283936 1397.848877 1402.820801 1406.930908 1411.647217 1415.38623 1419.1073 1421.478516 1422.432861 1422.695923 1421.804321 1417.880859 1409.30896 1398.964722 1389.951416 1387.216919 1388.599976 1395.321899 1414.067383 1428.699097 1430.277588 1427.984619 1421.175415 1413.354858 1420.198853 1421.301758 1424.338379 1428.816162 1436.325684 1439.887817 1442.019287 1447.949341 1451.766968 1452.455078 1450.559082 1448.812744 1446.682861 1444.441895 1441.277588 1437.575073 1433.770142 1429.513306 1426.97998 1425.0625 1422.383301 1420.816528 1419.33313 1417.003906 1412.141724 1402.752686 1395.324585 1389.066162 1382.612549 1376.568848 1371.145874 1365.350098 1365.112793 1360.848389 1353.457275 1346.47876 1345.320068 1363.216309 1377.232178 1381.890015 1386.113403 1389.983521 1393.867188 1397.647949 1401.408813 1403.87439 1403.294189 1399.72229 1396.797852 1395.202026 1392.312622 1389.228149 1389.267822 1392.259277 1393.91626 1394.391602 1393.612061 1392.841187 1391.448364 1390.904907 1389.479248 1386.421265 1383.901855 1382.900513 1383.140869 1383.892334 1384.586182 1385.199097 1384.512329 1382.310547 1378.97998 1373.577393 1368.358032 1362.637939 1357.901123 1356.607178 1356.756592 1356.947998 1356.759033 1355.845947 1350.21228 1338.998413 1335.514526 1334.762695 1330.301392 1319.523804 1307.060059 1295.304077 1280.76416 1277.707153 1275.796387 1276.38623 1277.797241 1280.947021 1287.729736 1313.82373 1335.664673 1344.342529 1346.995239 1347.344238 1350.830078 1354.205566 1356.409546 1357.454224 1356.900146 1353.921387 1343.789307 1341.314941 1344.960327 1346.882446 1348.408447 1351.519043 1353.997681 1354.124756 1350.084961 1349.204712 1344.951294 1340.521362 1346.059814 1352.486816 1358.598145 1364.077637 1367.357788 1368.735107 1369.232788 1369.28772 1369.168213 1368.750732 1365.863525 1357.273071 1352.908936 1349.27124 1346.01416 1346.616211 1346.298096 1345.166504 1342.694458 1336.317383 1330.482544 1315.956177 1309.148193 1308.733276 1318.367676 1329.991089 1338.14917 1349.338623 1359.970337 1366.463379 1369.806274 1370.138916 1368.441406 1365.798462 1364.349487 1358.44104 1364.408203 1369.7052 1374.333374 1378.273804 1379.602783 1379.624023 1378.557617 1376.383545 1373.233521 1368.919434 1365.251221 1362.881958 1360.6521 1358.23291 1356.876831 1356.200073 1353.989502 1350.713501 1346.347534 1341.67981 1343.182251 1343.884033 1344.02002 1343.150513 1337.067627 1326.683838 1315.99292 1306.346313 1310.906738 1313.870117 1316.81189 1320.609741 1320.450439 1318.64917 1314.199829 1307.85376 1303.571655 1301.86853 1300.081055 1297.619019 1295.758301 1294.066284 1291.549194 1289.692017 1288.447998 1286.848145 1284.912109 1282.33728 1278.476929 1272.494263 1268.445923 1266.437256 1266.949951 1264.319214 1264.519409 1266.25061 1267.901978 1269.151855 1270.50708 1271.898682 1272.692505 1272.531128 1271.28833 1268.930176 1264.770996 1260.680298 1257.813354 1255.745728 1254.635742 1254.013306 1253.773682 1253.689087 1253.709229 1253.906982 1254.135376 1253.768677 1254.028076 1253.577393 1251.583008 1248.520996 1248.361328 1253.980103 1255.038574 1254.044678 1253.174316 1252.55542 1251.790527 1251.065186 1251.224976 1251.80957 1253.336548 1256.413818 1256.842896 1255.358032 1255.578369 1255.152954 1253.324341 1251.450195 1249.211548 1245.696289 1243.459229 1242.204956 1240.872437 1240.499512 1240.967773 1240.834106 1240.527832 1241.040283 1242.3479 1243.659546 1243.962158 1243.866821 1244.003052 1244.227661 1244.084961 1242.999634 1241.479614 1240.116211 1238.005493 1235.599609 1235.11792 1243.394043 1242.21582 1241.424316 1242.985596 1244.686279 1245.985718 1246.819092 1247.072388 1246.977783 1246.394165 1245.015625 1242.927368 1240.913086 1239.095703 1236.860962 1234.269775 1231.806519 1230.960449 1229.464355 1228.507324 1227.475952 1226.478516 1225.376953 1224.439209 1223.813354 1223.614624 1223.550049 1223.251465 1222.848022 1222.379517 1222.467529 1222.810791 1223.251831 1223.561768 1223.684326 1223.630493 1223.55249 1223.771606 1223.892334 1224.112305 1224.306396 1224.540039 1224.789185 1224.960693 1224.972534 1224.616211 1224.264893 1223.833252 1223.406372 1222.987061 1223.181396 1223.553345 1224.312012 1225.035156 1225.507446 1225.106323 1223.908447 1222.220337 1220.851196 1218.087646 1221.481201 1222.797363 1224.237427 1225.606323 1226.523071 1226.805054 1226.705322 1226.542236 1226.554321 1226.544556 1226.619263 1226.446167 1226.209351 1225.987427 1225.841064 1225.598755 1224.868896 1223.855347 1222.839111 1222.45459 1222.358521 1222.258789 1222.178223 1222.203247 1221.971191 1221.043335 1219.266235 1215.891235 1212.445068 1209.924927 1209.370483 1208.922729 1207.824097 1208.182739 1208.775146 1209.203369 1209.34021 1209.063721 1207.892456 1206.639526 1206.802612 1207.318359 1207.304565 1207.230225 1206.307007 1205.26416 1204.735596 1204.407593 1204.240112 1204.080078 1203.810547 1203.2948 1202.578491 1201.540405 1200.244995 1199.139038 1197.977905 1196.936035 1196.149048 1194.97229 1195.788574 1196.588013 1196.868652 1196.773804 1196.680054 1196.479492 1196.166382 1195.855713 1195.444336 1195.046021 1194.666504 1194.149414 1193.631104 1193.022095 1192.408203 1191.864624 1191.184326 1190.733643 1190.373535 1189.770142 1188.699829 1188.095947 1187.585327 1187.147461 1186.610596 1186.225708 1185.909668 1186.008545 1188.282593 1190.79248 1193.036865 1194.699951 1195.812744 1196.721802 1197.722534 1199.180054 1201.180176 1203.162354 1204.915649 1206.642578 1208.541992 1210.51001 1212.197876 1214.076172 1215.921021 1217.680542 1218.897949 1223.494263 1228.243652 1231.361572 1236.257568 1241.650757 1249.393799 1266.10791 1281.04248 1280.46167 1278.071411 1275.906738 1273.120728 1269.597656 1264.531616 1257.88147 1253.565186 1253.64209 1254.386841 1246.957031 1244.71814 1250.865723 1254.873779 1256.192383 1256.751587 1255.949707 1254.065796 1252.636597 1251.401245 1251.036377 1250.808838 1249.922607 1247.627441 1243.5802 1240.600952 1239.739624 1239.974243 1240.804688 1242.042236 1244.014771 1246.58374 1249.051025 1251.483154 1253.866455 1256.080933 1258.635132 1263.841797 1268.965088 1276.70874 1283.46875 1294.00293 1297.619385 1302.386353 1304.991577 1298.907227 1294.592163 1297.908936 1299.323975 1301.436768 1299.515015 1294.228882 1294.564209 1292.70459 1285.751343 1283.623413 1282.780396 1281.591675 1278.478516 1275.541504 1273.779297 1273.259277 1272.059937 1269.00293 1265.724487 1266.907227 1269.283813 1268.67749 1263.588501 1256.23999 1252.7146 1250.737427 1249.493774 1247.696655 1246.091431 1242.928711 1239.478516 1236.338013 1233.248291 1224.309326 1213.274902 1203.233765 1198.017822 1195.022949 1192.877075 1188.431641 1182.312378 1177.104248 1173.245117 1170.731201 1167.242188 1163.458496 1160.954224 1159.115479 1157.766602 1156.532104 1155.019653 1153.974609 1152.552124 1150.695923 1148.962646 1147.025024 1145.174438 1142.909302 1141.556641 1140.821777 1140.175903 -1193.483643 1189.447876 1187.179321 1186.781616 1186.861572 1185.8573 1188.559448 1202.661621 1219.269287 1220.42334 1219.949585 1221.162964 1228.836304 1245.316528 1261.538208 1272.58252 1284.645996 1301.616943 1313.864502 1327.742676 1339.398804 1355.22229 1369.052734 1377.435913 1380.787354 1383.32605 1384.870483 1387.463989 1389.315918 1388.171875 1393.629272 1402.148193 1407.585693 1412.13916 1415.223145 1422.159546 1425.314941 1426.023682 1426.847168 1428.126953 1428.296875 1424.349609 1414.542847 1401.74231 1394.958496 1394.645752 1394.400635 1396.243774 1414.112915 1429.141846 1430.985352 1429.915039 1424.773926 1426.640747 1429.40686 1427.897827 1427.909424 1433.701172 1439.859375 1441.350586 1440.484741 1442.805664 1447.277832 1451.310059 1452.519531 1451.248413 1448.95105 1446.359375 1443.406128 1440.047485 1436.755249 1434.404541 1431.706421 1428.889282 1426.066528 1424.534302 1423.299194 1421.207886 1418.013794 1411.826416 1400.201416 1391.245728 1384.747803 1378.938354 1374.390137 1367.502319 1368.581421 1362.249268 1352.136963 1344.282837 1359.161133 1369.856812 1379.408813 1383.899902 1388.04895 1392.374512 1396.168091 1400.461792 1404.051636 1405.59436 1405.671387 1403.449951 1401.73645 1399.890991 1396.568115 1392.127808 1389.907715 1390.62085 1394.661377 1396.192993 1396.470703 1396.073364 1395.305664 1394.849854 1393.620239 1391.567505 1389.174683 1388.774658 1389.740479 1391.596436 1392.687378 1393.517578 1392.977295 1390.978882 1385.848999 1380.273682 1373.038696 1366.689941 1363.059692 1359.942139 1358.154175 1357.676392 1357.237793 1355.950195 1348.225708 1333.392578 1320.667114 1314.365356 1310.231934 1301.882812 1291.78772 1281.095459 1279.096558 1278.376831 1278.054321 1279.37439 1280.343628 1282.695068 1290.056763 1317.883301 1330.237183 1344.019287 1350.778809 1351.798584 1354.07312 1356.871094 1358.790405 1359.53125 1357.404907 1351.961426 1345.737671 1345.39624 1349.552734 1351.761841 1351.808228 1354.474976 1356.48291 1357.00061 1356.576904 1356.513428 1355.530273 1348.822266 1349.520996 1352.997803 1353.460449 1361.378174 1366.845825 1369.173218 1369.670166 1369.67749 1369.080322 1367.318359 1360.966553 1353.639648 1352.941895 1354.864258 1354.067383 1352.609131 1350.04248 1346.253418 1341.717529 1333.810669 1324.920044 1314.018433 1307.985352 1314.962402 1323.307861 1330.30249 1338.989868 1348.87146 1361.506836 1367.884399 1369.526611 1369.91272 1369.678955 1369.332886 1369.215088 1367.56897 1367.003052 1372.41333 1377.162842 1380.807861 1382.210449 1382.759033 1381.88916 1380.170166 1377.166626 1371.224487 1365.553833 1364.263184 1364.201172 1362.759888 1360.578003 1358.207153 1354.950562 1352.449219 1349.855713 1346.861206 1346.373169 1345.798828 1344.917236 1343.394287 1335.317261 1321.80481 1313.611328 1319.468506 1326.026978 1330.110107 1333.792603 1331.786377 1328.97583 1327.417725 1323.602783 1318.296631 1312.170898 1307.508911 1305.350342 1303.653442 1300.484985 1297.944092 1295.628174 1293.911499 1291.930542 1289.556885 1286.206665 1282.730591 1278.364746 1271.732422 1269.090576 1270.782349 1271.085571 1268.445923 1265.127808 1266.619019 1268.32959 1269.96167 1271.391724 1272.822021 1274.208984 1276.169922 1277.09082 1272.491943 1266.7146 1262.899536 1258.792725 1256.192871 1255.332031 1254.918335 1255.12085 1255.467773 1254.924805 1255.707397 1255.978882 1255.125732 1256.001831 1256.828125 1255.921143 1250.855591 1253.784424 1257.579102 1257.304077 1255.748413 1254.502197 1254.910645 1254.508057 1253.71814 1254.393433 1255.918091 1255.913696 1258.637207 1259.727295 1259.505371 1259.38916 1258.556274 1255.182495 1253.614502 1252.055298 1248.619019 1245.340332 1243.798706 1242.262207 1242.12439 1243.499023 1243.307861 1242.054321 1242.626221 1243.559082 1246.17749 1247.524902 1247.396118 1247.046265 1246.819214 1246.107666 1243.969727 1242.961304 1242.506592 1240.758789 1236.553345 1241.394043 1245.392334 1244.235107 1242.738892 1243.914551 1246.081665 1247.405518 1248.172119 1248.298218 1248.134888 1247.27063 1245.721191 1243.360352 1243.066895 1241.987915 1239.423096 1236.766602 1234.512695 1233.478638 1232.007935 1231.355591 1230.399536 1228.851318 1227.555176 1226.36853 1225.65918 1225.279541 1224.924927 1224.331787 1224.082886 1223.953369 1223.938232 1224.103149 1224.406738 1224.748413 1224.873901 1224.986816 1225.065552 1225.31604 1225.569214 1225.854736 1225.891357 1226.127441 1226.423706 1226.428101 1226.420288 1226.086548 1225.518188 1225.019409 1224.627563 1224.368408 1224.197021 1224.518799 1225.7771 1226.965454 1227.544556 1227.27771 1225.976807 1223.600342 1221.493042 1218.400635 1221.033203 1223.159058 1225.000488 1226.782104 1227.783936 1228.162964 1227.979004 1227.662476 1227.659912 1227.907471 1228.245483 1228.665771 1228.574829 1228.306763 1228.252441 1228.387329 1228.092285 1227.103027 1226.154053 1225.75061 1225.373779 1224.807739 1224.326782 1223.810303 1223.070312 1221.869019 1219.957886 1217.223755 1215.699585 1213.967896 1212.885132 1212.053833 1211.192993 1210.930176 1211.071167 1211.133911 1211.017212 1210.330688 1208.813354 1207.209106 1207.750977 1208.73999 1208.749878 1208.427612 1207.522461 1206.397217 1205.980347 1205.851929 1205.90564 1205.778442 1205.405029 1204.634644 1203.631226 1202.349976 1200.904175 1199.426392 1198.136597 1197.014771 1195.979248 1195.464233 1196.585327 1197.173706 1197.467041 1197.597168 1197.547607 1197.379272 1197.160278 1196.99707 1196.540405 1196.019409 1195.455078 1194.895386 1194.391602 1193.772583 1193.115601 1192.62915 1191.99585 1191.647705 1191.159546 1190.75293 1189.679565 1189.164307 1188.53064 1187.959473 1187.411987 1186.845703 1186.48938 1186.054321 1187.701782 1189.726685 1191.789307 1193.491089 1194.46521 1195.210327 1196.199097 1198.319214 1200.496338 1202.336792 1204.266846 1205.997925 1208.028931 1209.63208 1210.848755 1212.449707 1214.098877 1215.892212 1218.079224 1220.62561 1224.841797 1228.015747 1231.026001 1236.864868 1244.623779 1258.405273 1279.137939 1281.959229 1280.48291 1277.87793 1274.600464 1270.299805 1266.843018 1262.963257 1256.495972 1259.095337 1259.028809 1254.872803 1250.349487 1255.627808 1257.684326 1258.466919 1258.571167 1257.846924 1256.553345 1254.952637 1253.398926 1253.004761 1253.690552 1255.400269 1253.781128 1246.234985 1242.832275 1240.898682 1240.567383 1241.184326 1242.008911 1243.933838 1245.998901 1248.096802 1250.469727 1252.901855 1255.102905 1256.31604 1262.570679 1266.700806 1272.825562 1279.706299 1288.438354 1292.649292 1296.479126 1297.761597 1291.336182 1286.592896 1289.854736 1290.921997 1295.144043 1293.547729 1285.939087 1284.785767 1280.442505 1274.552612 1272.592529 1272.332397 1270.908203 1269.488525 1267.320435 1266.502563 1267.737793 1268.159546 1265.81543 1262.010254 1259.113159 1258.164795 1260.212036 1258.374023 1252.58728 1244.607178 1244.543457 1244.85144 1242.364258 1240.766724 1238.547974 1235.57312 1231.935547 1225.815552 1218.253906 1210.769165 1198.93811 1182.964355 1181.341553 1181.241455 1177.508667 1172.91272 1169.68457 1167.671387 1165.369385 1161.097168 1157.884399 1157.23877 1156.396484 1155.590942 1154.418701 1153.011841 1151.487915 1150.16748 1148.834717 1147.943115 1147.353882 1145.342163 1142.171875 1140.204346 1139.314453 1138.398804 -1194.843262 1191.101196 1187.972656 1186.561523 1186.094482 1186.937012 1194.282227 1218.899658 1244.191284 1250.590088 1252.381104 1253.420898 1254.849121 1252.402344 1250.916138 1261.720581 1277.762207 1291.935059 1305.375732 1318.517334 1332.30896 1345.393799 1359.871094 1375.089111 1382.326172 1387.749878 1389.904175 1392.85791 1394.463013 1390.749023 1398.470703 1407.214722 1414.028809 1419.981201 1427.368774 1432.127563 1436.654663 1437.004639 1435.03479 1433.378174 1431.851929 1428.562744 1416.705444 1402.962158 1400.928833 1401.272583 1404.357178 1404.376465 1411.781494 1427.422119 1432.933716 1434.367065 1432.325806 1433.31311 1434.180176 1433.649292 1433.650635 1436.123291 1440.046753 1441.243042 1438.625488 1438.342041 1440.891968 1444.963623 1448.453003 1450.903442 1450.242432 1448.718872 1446.679321 1443.404907 1440.468262 1438.994873 1436.918457 1433.480103 1430.141724 1428.502563 1427.148193 1424.568848 1421.218384 1416.530396 1406.115112 1394.782349 1387.623169 1382.503174 1378.450806 1373.823486 1369.177612 1360.334229 1350.265991 1348.345337 1362.477905 1375.653687 1381.396362 1385.210938 1389.261719 1393.52124 1397.846191 1401.966431 1405.699951 1407.624512 1408.024292 1406.83374 1405.766724 1404.435669 1401.733521 1396.958008 1392.556396 1390.038452 1395.816895 1398.482422 1399.413208 1399.689209 1399.372925 1398.917603 1398.119263 1396.826904 1395.724731 1395.589233 1396.511597 1398.283081 1399.684448 1400.408936 1400.11853 1395.77771 1390.357544 1382.189819 1374.047729 1367.016479 1363.555786 1360.245728 1358.177856 1357.06543 1356.481445 1354.191895 1345.335815 1330.977295 1314.424194 1302.901733 1295.862915 1286.319214 1279.346924 1279.190063 1279.161133 1280.811035 1281.587769 1281.515381 1283.73291 1286.747437 1292.300537 1324.599854 1342.42395 1351.482666 1354.499512 1355.429199 1357.352295 1360.001587 1362.382446 1362.674927 1358.94104 1352.880737 1351.079956 1350.533936 1354.17041 1355.710571 1355.604492 1357.06543 1359.075073 1360.072021 1360.497681 1360.259521 1358.009766 1353.863037 1354.03186 1356.926392 1358.049683 1361.631348 1365.515259 1368.64624 1370.211304 1369.921753 1368.301758 1365.881348 1361.403076 1357.396973 1358.223877 1359.657104 1358.706909 1356.438965 1353.002686 1346.76416 1338.620728 1327.36438 1319.160156 1312.69873 1308.268799 1321.47937 1330.959961 1339.099243 1345.739136 1353.282349 1364.252563 1368.295288 1368.895874 1368.643188 1368.989502 1369.916992 1370.251221 1369.063599 1369.009766 1373.207642 1378.005249 1382.900635 1386.566772 1386.881714 1384.964233 1382.784912 1380.417114 1375.375244 1366.145508 1367.589722 1368.317993 1367.086426 1364.573853 1361.027954 1357.601318 1355.731567 1353.587036 1350.914185 1348.525757 1346.698975 1345.195801 1342.604492 1334.077881 1315.027832 1317.428467 1335.351196 1343.099609 1340.967041 1336.561646 1334.093018 1332.935669 1332.499878 1327.947754 1323.049561 1319.587769 1314.588623 1310.534912 1307.615723 1304.316162 1302.355713 1300.118164 1297.67749 1294.754883 1291.571167 1286.647949 1282.347656 1276.063232 1270.635254 1274.358765 1277.553345 1275.295288 1271.274414 1267.640625 1266.334717 1268.411621 1270.555908 1272.176025 1273.749756 1275.6604 1278.751465 1281.217773 1278.141602 1270.000122 1266.082031 1262.005127 1258.487915 1256.526855 1255.978882 1256.446777 1257.433472 1255.868286 1257.129028 1258.027222 1257.155151 1257.528198 1258.543823 1257.365601 1252.988525 1255.287842 1258.991577 1259.280273 1256.609497 1256.115234 1257.436157 1257.084473 1255.744873 1256.742432 1259.040283 1259.974731 1261.469482 1262.716309 1263.720703 1264.230835 1263.183105 1259.317017 1258.082764 1256.126831 1253.231812 1249.318481 1246.328369 1243.555542 1244.157837 1246.409546 1245.42395 1242.925293 1244.170654 1246.786865 1250.049316 1253.780518 1253.414917 1251.055176 1249.466675 1247.909302 1246.198608 1244.579468 1244.848145 1244.214355 1236.911499 1244.835938 1246.954346 1245.51062 1244.166138 1245.842651 1247.577148 1248.984131 1249.640991 1249.770752 1249.353882 1248.523804 1246.724121 1245.011108 1245.389771 1244.037964 1241.675049 1239.530029 1237.329346 1235.830688 1234.519287 1233.818726 1232.365845 1230.693237 1229.181641 1228.125854 1227.352661 1226.973145 1226.492554 1225.735962 1225.377563 1225.353027 1225.304565 1225.44519 1225.724976 1225.910889 1226.088623 1226.31543 1226.59314 1226.901978 1227.240967 1227.514771 1227.694092 1227.735474 1227.965088 1228.060181 1227.930298 1227.5979 1226.956909 1226.315186 1225.854492 1225.524902 1225.326172 1225.873657 1227.602661 1229.324951 1230.182129 1230.062256 1228.68335 1225.668213 1222.369873 1219.405518 1219.921631 1222.987793 1225.888672 1228.372803 1229.512573 1229.733643 1229.358276 1228.705444 1228.225952 1228.490845 1229.751099 1230.802002 1230.69751 1230.225464 1230.396484 1230.921875 1231.242676 1230.427856 1229.467896 1228.876953 1228.47583 1227.821777 1226.674561 1225.485718 1224.070923 1222.355591 1220.147827 1218.536987 1218.403442 1217.676025 1216.894653 1216.205322 1215.208374 1214.63147 1214.0979 1213.668823 1213.188477 1212.221924 1210.631714 1208.987671 1209.293335 1209.923828 1209.997803 1209.416748 1208.646606 1207.505859 1206.629272 1206.848389 1207.213379 1207.164429 1206.786987 1205.864136 1204.711914 1203.318115 1201.637695 1200.062988 1198.536255 1197.384277 1196.432983 1196.539673 1197.245483 1197.840698 1198.200195 1198.252319 1198.355103 1198.250122 1198.19751 1197.903931 1197.502808 1196.935181 1196.275391 1195.669189 1195.127808 1194.531006 1193.888184 1193.265869 1192.723755 1192.322876 1191.989502 1191.748291 1190.868774 1190.268555 1189.584229 1188.893555 1188.229614 1187.532715 1186.983643 1186.550537 1187.533325 1189.289062 1190.935547 1192.537476 1193.93457 1195.256592 1195.710327 1197.743042 1199.808838 1201.700073 1203.387573 1205.276123 1207.101807 1208.5177 1209.233032 1210.567505 1212.557617 1214.918213 1217.525269 1220.517944 1222.969482 1225.653198 1229.130249 1234.153198 1241.812744 1253.220825 1268.347656 1283.628296 1282.373657 1280.608643 1277.493774 1274.295044 1271.145996 1268.274536 1264.82019 1264.843262 1260.959351 1256.880249 1254.837646 1257.750244 1259.643799 1260.345459 1260.165894 1259.467529 1258.696411 1257.177856 1255.362061 1254.312256 1254.917358 1256.670898 1257.127563 1253.747559 1247.165161 1243.438354 1241.46106 1241.594727 1241.986206 1242.886719 1244.438599 1246.849121 1249.887573 1253.520264 1256.769897 1261.029053 1266.826782 1267.661377 1269.019897 1276.586426 1280.315674 1285.286621 1292.760986 1293.345825 1283.042603 1278.073608 1279.562744 1279.554077 1286.437378 1284.839355 1278.05542 1277.463867 1274.157104 1268.752563 1264.415039 1263.311401 1262.627686 1261.457886 1260.816772 1261.620972 1267.75708 1268.959595 1268.506592 1257.916016 1253.93811 1247.329346 1250.279541 1251.197144 1248.744629 1244.176025 1239.56665 1233.839111 1234.516846 1233.435059 1234.644287 1232.62561 1224.181641 1215.769897 1209.272949 1201.093018 1188.624023 1180.586914 1177.168579 1173.531982 1169.750366 1168.343872 1166.265503 1163.686401 1161.423462 1158.304077 1156.566284 1155.334717 1154.462524 1153.448486 1152.434204 1151.180054 1149.476562 1147.227539 1146.93103 1146.295166 1146.67981 1145.190308 1141.550537 1139.361328 1137.871338 1136.932739 -1194.857422 1194.244019 1192.760254 1190.194702 1189.494263 1191.321045 1209.509521 1236.17334 1259.121338 1269.219116 1274.626221 1287.635742 1284.52356 1273.873657 1265.921265 1265.443726 1270.950195 1282.136597 1298.235962 1310.400879 1328.21167 1343.604736 1359.093872 1372.556396 1383.649536 1391.360352 1394.910767 1398.295044 1399.226318 1399.684204 1404.832764 1413.738281 1421.968018 1429.119263 1434.337891 1439.698242 1446.119751 1446.953003 1443.410278 1437.665771 1434.54248 1430.250488 1418.104614 1405.41394 1409.584229 1416.713379 1421.977295 1425.205933 1426.194092 1431.643677 1438.395874 1439.100098 1440.37561 1440.351562 1439.648926 1438.769897 1437.168579 1437.190674 1439.362793 1440.185791 1438.578735 1436.478271 1435.94397 1437.786011 1440.237305 1443.498169 1447.086304 1451.063965 1450.124268 1447.046875 1444.209961 1442.157837 1440.743652 1438.059937 1434.450806 1431.965454 1430.119873 1427.929443 1424.447021 1418.683838 1409.594604 1398.375732 1389.261597 1384.484131 1380.146851 1374.876465 1368.565308 1353.563965 1346.802856 1360.129028 1370.165649 1378.121582 1382.334717 1386.228516 1389.824951 1394.514771 1399.165283 1402.98938 1407.671631 1410.396484 1410.991211 1410.224609 1409.272461 1407.741577 1405.203491 1401.315063 1397.713989 1396.983521 1398.945923 1400.270996 1401.618896 1402.94104 1403.421143 1403.509888 1402.730469 1402.561646 1403.321289 1404.327148 1405.387695 1406.81897 1406.606323 1405.344727 1404.21521 1397.470947 1390.705566 1380.017456 1372.160278 1364.842407 1360.133057 1357.67749 1356.702637 1352.309448 1351.849854 1348.795288 1341.272949 1326.675537 1307.869873 1294.87085 1286.32312 1280.029419 1280.194702 1281.4375 1282.822388 1283.791382 1283.948364 1283.970581 1284.915161 1288.282349 1295.349121 1325.571289 1342.202026 1351.963989 1356.771851 1357.393921 1358.964966 1363.294922 1366.054932 1366.405151 1362.703491 1356.780518 1353.414185 1353.376709 1355.925049 1357.827148 1358.987305 1360.645874 1362.196289 1363.282349 1363.651611 1363.940186 1363.060425 1358.109009 1355.585693 1360.711548 1362.902222 1365.940796 1367.959595 1369.96521 1371.481812 1370.574707 1367.344849 1364.783813 1363.356812 1362.484985 1363.45459 1365.743164 1363.92749 1359.232788 1354.807251 1346.990723 1339.121948 1327.215088 1317.826538 1312.245361 1309.955566 1327.336914 1338.244019 1345.430176 1352.106079 1356.099487 1359.342773 1360.819214 1358.588867 1358.600708 1360.279297 1364.093628 1365.98584 1365.255981 1365.237671 1370.458862 1377.289795 1384.325317 1390.495361 1390.398071 1387.473022 1384.942993 1381.878296 1377.47229 1376.605835 1377.067383 1374.661011 1370.482178 1366.097778 1363.03833 1361.084717 1358.07605 1355.402832 1352.064575 1348.380249 1345.531128 1344.269531 1339.77002 1328.362305 1313.965454 1330.515747 1344.636963 1343.99707 1339.377197 1333.030518 1330.752319 1328.731689 1324.526489 1321.380005 1321.078979 1319.30957 1315.786377 1313.249023 1312.188599 1309.670532 1307.191772 1304.817993 1300.498413 1295.926025 1291.069458 1284.275879 1279.435669 1272.685547 1276.943115 1282.09021 1282.586304 1280.630371 1275.800049 1271.328247 1269.069336 1268.17041 1270.556763 1272.668213 1274.587036 1276.647827 1279.113159 1280.927002 1281.68457 1277.564331 1269.096191 1265.512939 1262.225464 1260.60083 1259.142578 1258.174561 1259.286255 1256.588623 1257.462891 1260.296631 1260.508789 1260.414307 1259.660767 1258.071167 1254.704224 1258.09021 1260.769409 1261.464966 1260.632446 1260.835693 1262.275269 1262.44104 1261.258667 1261.324951 1262.766235 1263.957764 1265.189331 1265.697021 1266.880493 1268.950317 1268.986938 1266.567749 1263.760498 1260.24585 1256.481201 1255.310425 1251.042603 1246.503784 1249.148315 1251.422607 1248.161377 1243.335571 1246.532593 1250.5802 1254.921631 1257.848267 1256.923828 1254.165405 1251.929565 1250.585815 1248.963867 1247.678101 1246.987061 1245.196655 1238.257202 1245.999512 1248.743042 1248.416016 1246.692383 1248.692627 1250.140259 1251.10144 1251.447632 1251.344971 1250.852539 1250.052734 1249.077515 1248.069824 1247.425903 1246.003418 1244.028076 1241.690308 1239.44873 1238.054932 1236.642456 1235.051514 1232.758545 1231.057861 1230.127808 1229.551514 1229.095825 1228.934326 1228.077759 1227.084961 1226.762207 1226.854126 1226.850708 1227.016602 1227.106689 1227.260254 1227.355469 1227.543091 1227.919922 1228.373535 1228.767822 1229.230591 1229.338257 1229.381592 1229.575562 1229.666626 1229.49353 1229.016846 1228.616821 1227.859009 1226.993652 1226.543457 1226.655151 1228.233032 1230.134521 1231.429688 1231.997803 1232.10022 1231.353394 1228.318848 1224.506104 1221.295898 1219.467896 1222.728516 1227.393555 1230.633545 1231.216064 1231.339111 1230.664307 1229.330688 1227.722046 1227.426025 1229.852539 1232.342285 1232.335938 1232.2229 1232.314819 1232.049683 1231.955566 1232.0 1232.248901 1231.65564 1231.388794 1230.470825 1228.846069 1226.959595 1225.209961 1223.401489 1221.351562 1220.736572 1220.806274 1220.751709 1220.313965 1219.597412 1218.800537 1217.958008 1217.215698 1216.591919 1215.638184 1214.504395 1213.351807 1212.039673 1211.692017 1211.622681 1211.233398 1210.571289 1209.734741 1208.443115 1207.272339 1207.767334 1208.519653 1208.263916 1207.565186 1206.814087 1205.782593 1204.373169 1202.526855 1200.636108 1199.156738 1198.080688 1197.508179 1197.802734 1198.164917 1198.741577 1199.058472 1199.286621 1199.359497 1199.44104 1199.228882 1198.929199 1198.55957 1197.953979 1197.26355 1196.684692 1196.081787 1195.301392 1194.601685 1193.99292 1193.433594 1193.171021 1193.048706 1192.85791 1192.064941 1191.496582 1190.744385 1189.917114 1189.160522 1188.337036 1187.609009 1187.037476 1187.408447 1188.920044 1190.352539 1192.11853 1194.218628 1195.85144 1196.743286 1197.642334 1199.244507 1200.942139 1202.56543 1204.180054 1205.716431 1206.680664 1207.111206 1208.74646 1211.004761 1213.468384 1216.260742 1218.592041 1220.269775 1222.734619 1226.796997 1230.969849 1238.100342 1247.788696 1260.15625 1281.058838 1283.061523 1282.340576 1280.634644 1278.046997 1274.729736 1271.79541 1270.897461 1268.576172 1262.898193 1257.327271 1256.104614 1259.207031 1261.668213 1262.594238 1262.491821 1261.783936 1260.738525 1259.243408 1257.434204 1255.800659 1255.422119 1256.715088 1257.441895 1256.876221 1250.632935 1245.313843 1242.624878 1241.961426 1242.044189 1242.477295 1243.146973 1245.241089 1249.26709 1253.206909 1257.604858 1263.112061 1268.765747 1269.893433 1271.502563 1274.663696 1277.23877 1279.094727 1283.981934 1285.320557 1279.60437 1274.534058 1273.324219 1274.711426 1278.332275 1276.259521 1271.064819 1271.049561 1269.413818 1264.865356 1258.200806 1254.754395 1255.558228 1253.844116 1253.834473 1256.637085 1259.007324 1259.33667 1256.453857 1251.703979 1247.355713 1241.797974 1241.559448 1244.393066 1245.836792 1242.51123 1236.773804 1231.716797 1228.753662 1227.70874 1227.78833 1224.117554 1217.239014 1210.518066 1201.662598 1189.651123 1180.633667 1177.57666 1173.888062 1170.865967 1168.228882 1165.460938 1163.077148 1160.843628 1158.449829 1156.718872 1154.994995 1153.753784 1152.60083 1151.609497 1150.764771 1149.777466 1148.491577 1146.367432 1145.217285 1144.974121 1144.653931 1143.010742 1140.720825 1138.366699 1136.775635 1135.098877 -1199.019775 1201.183472 1199.340088 1196.531738 1196.67041 1193.910767 1212.762695 1244.615234 1273.507812 1293.845581 1301.843262 1303.204346 1300.110474 1295.010132 1287.095703 1278.523438 1284.965576 1287.71875 1297.387207 1312.252563 1331.315796 1344.989868 1359.859741 1372.246704 1383.293945 1393.252686 1400.056641 1404.199707 1406.190186 1406.635132 1410.846069 1419.871704 1428.700195 1434.190552 1439.434082 1449.206177 1457.021973 1462.12793 1454.242554 1443.342529 1437.296509 1431.515503 1423.365112 1417.021851 1417.785889 1423.410889 1429.867065 1434.612427 1439.901367 1440.28894 1442.054321 1442.529297 1443.274292 1443.065674 1442.377686 1441.521729 1440.471436 1439.019653 1439.02478 1440.150269 1439.217529 1434.817017 1431.610474 1428.741333 1430.296021 1436.602539 1441.700317 1447.346313 1452.608887 1450.244751 1446.176514 1443.664673 1442.234253 1439.929321 1436.883057 1434.294312 1432.127563 1430.089844 1427.223999 1420.40564 1410.760132 1398.564209 1389.74231 1385.078003 1380.730835 1373.754272 1361.064575 1350.973633 1348.846802 1364.181885 1375.045044 1380.495728 1383.953735 1387.115479 1389.650635 1394.786865 1399.663086 1403.642822 1410.296021 1413.566772 1414.095581 1413.678101 1412.554199 1411.055054 1408.374756 1404.442505 1401.885132 1402.679443 1403.00061 1403.11084 1404.55603 1408.818481 1413.614502 1415.873413 1417.324219 1417.309814 1416.800415 1417.123169 1417.345215 1417.37085 1409.333862 1404.547485 1398.980103 1392.321899 1384.391235 1375.453247 1369.564331 1362.337036 1353.593384 1352.024658 1350.147705 1339.031372 1344.403198 1344.62854 1337.268066 1319.733032 1301.34314 1292.401245 1283.042236 1281.322144 1282.500366 1284.150757 1285.61145 1286.631958 1287.48999 1287.903076 1287.52356 1288.142944 1294.182495 1319.686157 1331.544312 1338.54541 1344.483765 1348.920288 1354.140137 1363.523071 1367.781372 1367.761475 1367.322021 1362.014893 1355.508789 1354.655029 1357.732666 1359.980957 1361.73938 1363.832275 1365.493774 1366.782471 1367.140259 1367.865967 1368.013306 1365.79126 1365.818848 1366.4823 1365.872437 1368.536743 1371.073608 1372.922119 1373.938477 1372.809937 1365.908447 1366.325806 1366.928955 1366.858643 1367.688599 1368.115479 1366.339966 1360.663696 1354.967773 1347.308228 1337.227417 1325.776733 1317.543579 1312.023682 1312.901489 1332.058594 1344.709351 1348.798462 1353.411133 1352.742065 1350.759888 1347.806885 1344.033325 1342.159546 1343.359741 1347.037598 1350.147095 1354.90686 1361.01709 1368.333008 1375.75061 1383.376343 1391.945435 1393.042236 1390.012329 1387.728271 1384.929565 1380.738525 1381.137695 1380.868774 1379.376831 1374.315796 1366.534668 1365.754028 1364.414185 1360.586792 1356.461548 1351.731689 1342.220337 1341.526611 1340.205811 1332.337891 1320.994263 1323.380737 1343.801636 1344.248291 1341.030396 1333.082275 1324.382324 1319.235596 1313.817139 1311.397217 1311.705933 1312.129761 1309.529053 1308.117676 1311.630859 1317.612061 1315.611572 1309.467773 1304.787476 1297.892578 1293.122314 1285.834106 1280.229614 1275.581299 1277.077026 1281.944214 1284.717041 1284.820679 1282.852661 1278.349731 1272.934204 1269.384033 1269.403809 1271.298706 1273.348511 1275.350464 1277.367554 1278.901855 1280.53064 1282.566528 1282.725708 1274.766357 1267.905396 1266.001831 1266.741211 1266.282593 1264.62915 1262.906616 1261.387939 1262.824341 1263.672729 1263.797607 1263.770142 1261.649902 1258.994263 1258.567017 1262.976318 1264.629272 1265.226318 1264.976196 1265.888306 1268.675903 1269.922607 1267.721069 1266.458374 1266.802368 1268.447876 1268.762207 1268.90271 1272.196045 1274.144409 1274.203857 1272.555908 1269.540283 1265.516235 1263.191406 1261.415527 1257.87854 1254.040161 1257.382446 1258.045166 1256.976196 1252.890747 1251.570679 1254.058716 1257.329468 1259.658936 1258.559448 1255.314087 1253.818359 1253.152832 1252.18103 1250.488892 1248.166626 1244.932495 1239.773438 1247.047974 1251.384399 1252.153198 1251.813477 1252.424072 1252.908325 1253.587646 1253.668091 1252.960449 1252.420898 1251.854736 1251.452515 1251.116333 1250.709717 1249.114868 1246.558594 1243.189331 1241.259521 1239.985718 1238.589233 1236.371704 1232.782471 1231.610962 1231.550293 1230.930908 1230.416748 1231.363403 1231.086426 1228.287354 1228.18457 1228.351929 1228.466919 1228.483887 1228.501465 1228.550659 1228.63269 1228.774048 1229.061279 1229.575562 1230.342163 1231.002563 1230.967529 1230.766968 1231.18335 1231.235718 1230.790405 1230.380249 1230.199707 1229.730957 1228.439209 1227.590942 1228.495728 1230.248291 1231.961182 1232.416748 1232.582275 1232.857666 1232.630615 1230.49353 1226.447144 1222.318115 1220.186157 1224.09021 1229.563965 1232.369141 1232.533569 1232.404297 1231.779541 1229.326538 1225.346558 1223.00354 1225.446167 1229.106079 1230.075317 1230.629883 1230.957397 1231.59729 1231.968018 1232.111328 1233.441162 1233.602173 1233.121582 1232.044312 1230.160278 1228.218262 1226.661011 1225.095947 1224.034912 1223.160767 1222.828003 1222.675171 1222.170288 1221.713745 1221.191284 1220.475464 1220.075684 1219.356445 1218.254028 1217.444214 1216.123779 1214.746338 1214.101562 1213.860596 1213.179688 1212.266846 1210.986694 1209.236084 1207.509399 1208.760986 1209.544434 1209.41687 1208.669189 1207.799072 1206.889771 1205.531616 1203.426514 1201.271729 1199.738892 1198.864258 1198.790161 1199.037476 1199.353149 1199.775635 1200.140625 1200.387207 1200.644897 1200.565918 1200.545898 1200.270264 1199.812744 1199.244873 1198.542603 1197.77417 1197.013916 1196.082397 1195.089233 1194.686279 1194.146973 1193.997437 1194.070801 1193.977295 1193.344238 1192.833618 1192.057617 1191.056885 1190.175049 1189.269165 1188.351929 1187.733032 1187.294434 1188.10083 1189.36438 1191.277222 1193.426636 1194.77002 1195.585205 1197.278198 1198.647095 1200.130493 1201.587036 1202.975586 1204.240601 1205.470337 1206.383911 1207.829834 1209.901123 1212.244263 1214.674561 1216.676514 1218.039795 1220.271118 1224.650513 1228.883667 1234.168213 1242.765747 1253.2771 1265.11084 1283.016724 1283.432861 1282.451172 1280.79187 1277.795166 1275.429199 1273.072144 1269.692627 1265.698608 1261.708008 1260.033813 1261.917603 1264.051392 1265.461914 1265.420288 1264.455322 1262.803467 1261.151367 1259.3927 1257.512329 1256.044556 1256.247925 1257.706421 1256.667114 1252.351318 1247.574707 1245.056641 1243.848755 1242.262329 1242.51355 1243.379028 1245.685791 1248.934326 1252.793335 1256.284546 1261.498413 1265.919189 1269.541748 1271.583252 1272.814331 1274.473633 1276.71936 1279.300293 1280.924683 1276.453247 1268.17041 1267.687134 1269.165649 1270.504761 1267.725952 1264.42627 1264.444336 1263.108765 1259.863525 1255.796509 1247.049561 1245.704102 1243.899048 1245.366821 1247.085327 1248.741333 1248.993042 1247.895508 1245.932007 1242.222534 1238.747681 1234.638306 1232.87915 1237.535278 1237.090576 1235.017578 1231.512939 1225.606567 1219.937012 1218.804321 1215.623413 1208.341919 1201.375732 1193.90564 1190.674438 1184.670776 1177.223755 1171.122925 1168.658081 1166.342651 1163.373657 1159.978882 1158.186768 1156.611938 1155.108521 1153.445068 1152.102051 1150.945068 1149.953369 1149.390137 1148.903809 1148.039551 1146.357422 1144.483398 1143.39624 1142.584229 1141.134766 1139.755127 1138.053101 1136.217285 1134.960449 -1205.008423 1210.130981 1209.531006 1207.576904 1213.116211 1215.4021 1212.339722 1218.442627 1244.689941 1272.817993 1306.43042 1313.975952 1311.701782 1308.549561 1303.630859 1296.488403 1293.025879 1299.868164 1305.39978 1311.456909 1331.469116 1345.399658 1358.971436 1370.489136 1382.54187 1394.293335 1403.785645 1408.495117 1413.014893 1416.415039 1415.885376 1425.018433 1432.68335 1438.711792 1450.159668 1457.525391 1466.123047 1473.097412 1462.335571 1451.00415 1442.983154 1440.155518 1434.755615 1425.925659 1428.568848 1431.530273 1436.441895 1439.09082 1443.11792 1444.237427 1445.477173 1446.086304 1446.405762 1446.055664 1445.192261 1444.352905 1443.116455 1441.56189 1440.396973 1440.935303 1438.961182 1433.268799 1428.261963 1425.744385 1424.709351 1428.194092 1433.88562 1438.549805 1443.834229 1446.480591 1444.578369 1443.513916 1442.325928 1440.202515 1437.720581 1435.56958 1433.444214 1431.17627 1428.574219 1420.409058 1408.853882 1397.229736 1389.174927 1384.268188 1379.866211 1371.478271 1353.654297 1350.109131 1353.200806 1370.370605 1378.609497 1381.893066 1385.546387 1388.602661 1392.170776 1396.454468 1400.403809 1405.962769 1414.226318 1416.135498 1416.347168 1416.206543 1415.599365 1414.381958 1411.332275 1407.711304 1405.846924 1405.857544 1405.416748 1405.830566 1407.2323 1411.62854 1416.91333 1418.949707 1420.300537 1420.179565 1419.487793 1418.401978 1417.981689 1410.091187 1400.207764 1394.329102 1389.674683 1385.128906 1378.289185 1371.39978 1365.303589 1358.460571 1352.020752 1343.76062 1343.684204 1330.005249 1329.051514 1334.84314 1329.1604 1313.552612 1299.251953 1291.351074 1283.127808 1282.188232 1284.045166 1286.77478 1288.786377 1290.002319 1291.343628 1292.655518 1292.983887 1292.080566 1291.379761 1306.12793 1316.254028 1319.720093 1322.468262 1328.642822 1347.294434 1357.869141 1365.369141 1367.156372 1367.416504 1365.932861 1361.900635 1360.867798 1361.375854 1362.456543 1363.664673 1366.421387 1368.644531 1370.517578 1371.78064 1372.135742 1371.643311 1369.97168 1370.396851 1371.650635 1372.578857 1373.193237 1374.341187 1375.461304 1376.524292 1376.281494 1375.895874 1374.222534 1372.635986 1371.818848 1370.559326 1369.091553 1366.41687 1359.906372 1352.8479 1346.77063 1336.557373 1323.213989 1315.311279 1311.299561 1316.279175 1329.554688 1341.455078 1342.688843 1341.692139 1340.676147 1338.362061 1336.063354 1340.390747 1343.486816 1344.380981 1345.022339 1345.421509 1348.828491 1356.613281 1365.109009 1372.629883 1380.974976 1390.997192 1400.783936 1397.523315 1390.458496 1388.38855 1386.334473 1384.572388 1382.941162 1380.355225 1376.706787 1373.96521 1370.686035 1367.959961 1363.199951 1357.072021 1350.543213 1341.886475 1335.517334 1331.234375 1328.512695 1333.476929 1343.791626 1343.884766 1340.846191 1335.767822 1326.244751 1312.296387 1304.543091 1304.020996 1304.272705 1304.028442 1303.337891 1302.386597 1302.712891 1303.454102 1317.871094 1317.630005 1306.094604 1293.726807 1285.78186 1280.870483 1277.773315 1277.28186 1279.561768 1283.102051 1285.620728 1287.498291 1287.286377 1284.628296 1279.89856 1273.426392 1269.191406 1270.480347 1272.467041 1274.460205 1276.384644 1277.875122 1279.309448 1280.93457 1284.684204 1285.523071 1280.440063 1271.572021 1271.95166 1273.725464 1272.646973 1270.09314 1267.14563 1266.983887 1268.397461 1267.398926 1267.551392 1267.825317 1265.389038 1262.776855 1268.344482 1269.954346 1268.96814 1269.690308 1269.513916 1266.936646 1275.433105 1278.177856 1275.14917 1273.640869 1273.669434 1275.145996 1278.003784 1280.394653 1280.569336 1280.693237 1280.307251 1279.678589 1277.32666 1274.327026 1271.495728 1267.329712 1262.832886 1262.443359 1263.50769 1263.483154 1261.380493 1258.687866 1255.32666 1258.045044 1261.019897 1261.987061 1260.136475 1255.79834 1256.619751 1256.392822 1255.26123 1253.011353 1250.670166 1246.228149 1240.072021 1247.770508 1255.058228 1255.348022 1255.088257 1255.400146 1255.48584 1255.976807 1255.810547 1254.390381 1254.03125 1253.455811 1253.231201 1253.404175 1254.55603 1254.486084 1251.286499 1245.739746 1243.232422 1241.963501 1240.858887 1239.966675 1237.768066 1235.718506 1234.254028 1232.601929 1231.80542 1232.633789 1231.667114 1229.900269 1230.24646 1230.207642 1229.944824 1229.925415 1229.983398 1229.978271 1229.995239 1230.109253 1230.409058 1230.822021 1231.615845 1232.584717 1232.594849 1231.996826 1232.859863 1232.668213 1232.094482 1231.718994 1231.760864 1231.582886 1230.335083 1228.895264 1230.130615 1231.947632 1232.58252 1232.836182 1233.236084 1233.351807 1233.236572 1232.216187 1228.035034 1223.278442 1221.043335 1224.197998 1228.841064 1232.580444 1233.337402 1233.55127 1233.12439 1228.773071 1219.131592 1218.75647 1219.426392 1222.679199 1225.121704 1227.730469 1229.653198 1230.944092 1232.11438 1233.427368 1234.38562 1234.393433 1233.491211 1231.869751 1230.28479 1228.895386 1227.755859 1226.824219 1226.039185 1225.278931 1224.940552 1224.520874 1224.169556 1223.661133 1223.207153 1222.604736 1221.920654 1221.308228 1220.623169 1219.678833 1218.336548 1216.741211 1216.432007 1216.3479 1215.741211 1214.549438 1213.078979 1211.533691 1210.31189 1210.410645 1210.674438 1210.558594 1209.856934 1208.966675 1208.01001 1206.75293 1204.490112 1201.832031 1200.436035 1200.069946 1200.072266 1200.368042 1200.7771 1201.125732 1201.34729 1201.695068 1201.942627 1202.141235 1202.112183 1201.920776 1201.461426 1200.754395 1199.964966 1199.034668 1198.030762 1197.139526 1196.240723 1195.464722 1194.781006 1194.854004 1194.91626 1195.035034 1194.659546 1194.057739 1193.393921 1192.447266 1191.351685 1190.422852 1189.416382 1188.637817 1188.076294 1187.843018 1188.741455 1190.731201 1193.093018 1195.477417 1196.260742 1197.11438 1198.092041 1199.327148 1200.701904 1202.060669 1203.542969 1204.678833 1205.867065 1207.038574 1209.081665 1211.170166 1213.181396 1215.183838 1217.236084 1220.181885 1223.449219 1227.106934 1231.156128 1238.288696 1246.30957 1256.420654 1269.309448 1281.413696 1283.303345 1282.619385 1281.173462 1278.672607 1275.742432 1271.886841 1268.113037 1265.657715 1264.22644 1265.342163 1266.95752 1268.26709 1268.17627 1266.974121 1265.461792 1263.652954 1261.720825 1259.807739 1258.084473 1257.991211 1258.519897 1256.342896 1254.562988 1252.460327 1248.725586 1245.944458 1243.195923 1242.793701 1243.190674 1244.968994 1247.97937 1251.501099 1254.524902 1258.563354 1264.091553 1268.904663 1270.118652 1270.602905 1271.54187 1273.759155 1275.628906 1276.046265 1273.147705 1267.19519 1262.366211 1263.018677 1263.859619 1259.631226 1254.722778 1257.444824 1257.22876 1254.850708 1250.285645 1243.923706 1239.334351 1234.396973 1236.096924 1238.108154 1238.682861 1239.007202 1239.363037 1238.096313 1236.274902 1234.567993 1232.081787 1228.070679 1230.110352 1231.565308 1231.109131 1227.043091 1222.736328 1219.139282 1216.322754 1212.169678 1208.296875 1209.02478 1210.102783 1196.788818 1184.43335 1177.249023 1170.541382 1167.491089 1165.045166 1162.543213 1159.549805 1157.633423 1155.545288 1153.73999 1152.051514 1150.431152 1149.098633 1148.346802 1147.928955 1147.508545 1146.826172 1144.721313 1143.147461 1142.153076 1141.136841 1139.729248 1138.531006 1137.53479 1136.480103 1135.367798 -1210.154907 1216.115356 1218.45459 1216.812378 1226.191162 1238.453979 1254.224976 1257.1427 1259.57019 1270.808838 1304.961426 1323.909668 1323.126221 1319.395508 1314.687012 1307.649902 1301.823608 1308.395996 1316.553955 1318.070679 1329.575073 1346.274414 1358.91272 1370.790894 1384.025879 1396.23999 1405.880493 1412.485718 1418.293213 1422.283081 1423.358887 1428.596436 1437.218872 1447.985962 1456.764526 1463.785034 1477.863281 1481.257202 1464.101196 1451.776855 1447.7948 1445.107544 1442.926025 1439.32666 1440.290161 1441.882935 1442.434692 1443.415649 1446.330688 1447.953735 1449.272827 1449.570679 1449.866333 1449.135864 1447.98645 1446.782593 1445.784302 1445.001831 1444.358276 1442.372437 1438.782104 1433.067261 1426.568726 1423.76416 1421.365234 1420.296631 1424.329712 1427.537842 1432.915894 1437.0354 1439.126465 1441.69751 1442.473755 1440.753296 1438.580933 1436.412354 1434.401123 1431.82312 1428.731812 1419.380005 1405.375854 1394.942749 1388.292603 1382.798828 1376.460205 1366.449951 1354.601318 1350.497192 1359.013916 1379.164917 1381.768066 1384.322876 1387.51001 1389.55249 1394.287354 1398.848022 1402.713013 1412.426514 1416.211914 1417.564941 1418.069214 1417.839111 1417.315552 1416.29187 1414.847534 1411.812256 1409.418091 1408.662354 1407.955933 1407.192871 1407.249512 1409.516602 1415.464844 1419.100586 1419.862061 1419.801758 1417.226074 1413.701416 1409.863403 1401.266357 1394.020386 1387.2854 1382.662354 1377.758179 1371.130615 1366.095947 1357.76355 1351.275024 1345.371704 1331.619263 1326.654297 1319.86084 1317.887085 1322.217896 1318.560913 1306.93396 1296.952881 1290.550659 1285.343506 1282.825073 1286.02002 1289.924561 1292.246094 1293.446655 1295.864258 1298.032959 1298.656128 1298.019043 1295.859619 1299.095581 1303.756958 1308.931274 1314.128906 1328.080444 1341.727905 1355.091187 1361.795654 1365.040771 1366.940308 1367.004395 1365.804443 1365.744507 1365.033691 1365.158691 1365.078979 1368.061768 1371.268433 1374.106323 1376.359863 1377.394653 1375.871948 1374.860962 1375.884399 1377.027954 1378.209473 1378.050659 1376.97876 1377.527466 1378.678589 1379.220337 1379.760254 1379.96106 1377.995605 1375.599365 1372.660034 1369.687378 1366.44043 1359.187134 1352.075073 1345.767822 1331.659912 1317.064697 1312.71936 1312.154175 1317.516479 1324.276123 1329.284668 1330.139282 1330.828857 1332.481079 1344.689819 1346.133545 1347.68689 1348.8396 1351.505493 1353.985596 1353.075195 1348.584839 1351.456421 1360.761719 1369.005249 1377.652466 1388.299072 1399.492432 1404.939453 1397.872559 1392.081787 1389.870117 1387.788818 1385.25647 1382.69165 1380.317749 1379.121094 1375.439331 1369.483276 1362.872803 1355.891602 1348.144775 1340.363525 1332.384766 1334.189941 1340.324097 1344.414673 1345.427612 1341.570557 1336.969727 1331.682861 1317.85437 1311.953491 1309.515503 1309.619385 1309.919922 1309.476196 1307.828369 1305.102661 1301.866821 1298.72998 1296.149292 1300.152222 1292.648926 1285.69397 1280.545166 1281.731812 1283.207031 1283.745972 1284.910156 1287.329468 1289.900757 1291.101685 1290.572021 1286.810913 1281.397827 1272.977051 1270.257935 1271.678589 1273.769409 1275.761353 1277.458252 1278.644531 1279.914185 1282.755493 1289.733398 1290.990356 1286.727661 1282.627563 1282.605103 1282.298828 1281.067505 1279.241455 1273.533691 1273.487793 1274.023926 1273.019775 1272.692993 1271.84729 1269.131836 1269.395386 1276.425171 1279.87146 1282.092163 1283.022095 1281.715942 1281.004272 1284.532349 1285.181274 1283.700195 1283.613892 1282.182861 1281.977783 1284.538086 1285.900024 1286.663818 1286.781616 1285.607178 1284.062744 1282.266357 1281.944458 1278.886963 1273.824097 1268.779663 1270.855957 1271.463257 1269.814819 1266.196045 1265.168945 1264.903442 1265.675171 1266.528198 1265.470947 1263.185547 1261.067383 1260.681274 1260.05481 1258.114014 1256.075439 1255.427979 1249.01709 1241.089355 1251.630981 1257.433472 1257.782593 1257.833252 1257.460327 1257.534546 1257.789185 1257.365234 1255.871582 1256.076172 1254.989136 1254.45874 1255.005981 1256.735596 1257.214355 1256.645386 1251.467285 1246.158569 1243.825073 1242.699097 1243.250732 1243.723877 1241.846191 1238.55957 1235.784912 1234.322876 1233.21936 1231.280884 1232.391602 1232.419312 1231.714355 1231.085205 1231.118164 1231.384888 1231.380371 1230.998291 1231.142334 1231.79187 1231.923096 1232.888184 1234.165283 1234.327881 1234.356079 1234.59314 1234.508667 1234.216431 1233.741211 1233.698242 1233.583496 1232.729736 1230.327759 1231.115723 1232.533813 1232.975952 1233.366211 1233.633179 1233.693237 1233.584351 1232.789429 1230.681152 1226.255981 1221.557007 1224.241211 1227.704102 1231.942505 1233.773926 1234.005981 1234.208862 1231.397095 1222.671875 1217.231934 1218.070435 1219.023193 1222.14563 1226.90979 1229.357422 1231.675415 1233.610107 1234.927124 1235.505371 1234.918945 1232.88269 1231.422241 1230.269043 1229.487061 1228.843262 1228.375977 1227.741089 1227.161133 1226.778809 1226.593872 1226.019165 1225.471436 1225.099854 1224.473511 1223.616211 1222.934692 1222.255737 1221.247559 1219.684937 1218.559326 1218.883301 1218.883545 1218.170898 1216.760132 1215.474854 1214.357178 1213.309448 1212.801758 1212.453247 1211.793945 1211.01709 1210.108765 1209.058472 1207.850952 1205.608398 1202.835693 1201.399414 1201.429565 1201.592407 1202.008057 1202.409546 1202.525879 1202.74939 1203.052979 1203.412476 1203.727417 1203.934814 1203.749146 1203.338867 1202.645752 1201.549316 1200.46167 1199.253296 1198.075928 1196.925171 1195.582275 1195.248047 1195.653564 1195.866089 1196.068604 1195.756714 1195.287354 1194.603882 1193.757935 1192.692383 1191.595459 1190.568604 1189.687256 1189.005737 1188.618652 1188.321045 1189.364502 1192.069702 1194.866577 1195.889648 1196.558105 1197.23877 1198.318481 1199.741821 1201.217163 1202.686523 1204.102051 1205.5448 1207.227783 1209.002319 1210.057495 1211.493408 1214.097046 1216.966553 1219.544678 1222.221313 1225.207275 1229.08374 1233.976196 1240.587769 1248.065918 1257.902832 1269.435181 1277.673218 1283.574585 1282.989624 1281.886597 1279.143921 1274.678223 1269.664429 1267.30127 1266.339966 1267.636597 1269.200439 1270.279419 1270.24939 1269.087769 1267.743652 1266.109619 1264.234497 1262.430298 1261.183594 1260.7229 1260.026001 1258.572266 1257.719482 1256.55542 1252.493408 1248.186523 1244.499023 1243.478027 1242.959351 1243.761719 1247.144897 1250.13147 1252.843018 1255.772705 1260.069214 1265.601807 1267.141235 1267.692749 1268.301758 1270.839233 1272.060913 1272.810303 1271.053955 1265.439819 1256.609497 1257.503418 1259.163818 1255.643311 1249.791626 1250.020874 1249.93103 1248.851929 1247.224609 1242.849731 1235.298096 1229.228516 1226.984253 1230.389648 1230.365723 1230.033203 1230.287964 1230.32959 1230.13269 1228.906006 1224.977173 1219.81604 1222.950073 1223.715942 1222.965942 1220.67041 1218.709839 1216.598633 1214.698975 1212.47998 1210.643677 1209.405273 1207.144897 1193.72229 1184.386475 1175.739624 1170.262085 1167.325073 1164.495728 1162.096924 1160.367554 1158.024414 1154.799805 1152.256836 1150.462891 1149.00647 1146.992065 1146.373291 1145.93396 1144.931152 1143.762573 1143.020508 1142.03064 1141.371216 1140.023438 1139.258057 1138.211304 1137.353882 1136.519165 1135.745605 -1217.260986 1221.834351 1229.652588 1236.816895 1238.825317 1256.124023 1276.126221 1290.580078 1296.222656 1301.962769 1307.343506 1332.118286 1333.841431 1332.684814 1329.130371 1321.542358 1311.159668 1318.050415 1329.319702 1341.577393 1345.330811 1351.705322 1366.416992 1377.509644 1385.883545 1396.670166 1407.881714 1415.319946 1424.860474 1429.484863 1431.680054 1436.634399 1443.977295 1453.973755 1461.453247 1473.060791 1487.094238 1488.443481 1468.668701 1458.017456 1450.889893 1448.315308 1447.653076 1446.030396 1445.974854 1446.818359 1447.350342 1448.098145 1449.746948 1451.672607 1453.084717 1453.572388 1453.463257 1452.200439 1450.401001 1448.831787 1448.35498 1448.630737 1448.277344 1445.411987 1440.887451 1435.67334 1429.984985 1424.963501 1419.150879 1413.588501 1413.990601 1418.460815 1423.272705 1427.429199 1429.220947 1433.098389 1441.416016 1441.246826 1439.569458 1437.36853 1435.241821 1432.266479 1428.897949 1418.581665 1403.255127 1394.329224 1388.555176 1383.327148 1376.919556 1367.605713 1359.591431 1352.450317 1361.726685 1379.915649 1383.083252 1387.046875 1390.519043 1392.976196 1397.416138 1402.498291 1412.584106 1416.512451 1417.851685 1419.178955 1419.626221 1419.498535 1418.865723 1417.810791 1416.397827 1413.872192 1411.802612 1411.301636 1409.944336 1407.76123 1405.526733 1403.065552 1406.195923 1413.655396 1416.901245 1415.462646 1410.473511 1404.922363 1400.913208 1395.598022 1389.425537 1383.489624 1378.728882 1366.320679 1360.531128 1356.208618 1347.373413 1336.99292 1333.594849 1326.425415 1316.793457 1314.037476 1312.247192 1313.055298 1309.505005 1302.540405 1294.109741 1289.845581 1286.118896 1283.92749 1288.054443 1292.592285 1296.589111 1300.70752 1304.175049 1305.092285 1305.206543 1304.820801 1303.849976 1297.745972 1299.090088 1305.283813 1321.098267 1333.657471 1346.420654 1357.316772 1362.096191 1365.876343 1367.014038 1367.995239 1368.215576 1367.981445 1367.368164 1368.18042 1369.371338 1371.656006 1375.046753 1377.763794 1379.556152 1379.80542 1379.142212 1378.050781 1378.96582 1379.654663 1380.194336 1379.916382 1379.485474 1379.522461 1379.682251 1379.733521 1380.045044 1380.018311 1379.521606 1376.963501 1373.147705 1369.180908 1364.268066 1356.3479 1347.814209 1340.590332 1323.170654 1312.957886 1314.120728 1317.365723 1319.289062 1321.096069 1324.016602 1327.511108 1336.132812 1345.094604 1350.012207 1352.936646 1354.662109 1353.158813 1355.474121 1356.788208 1356.519287 1354.441284 1349.415649 1356.294556 1364.667847 1372.851562 1382.222046 1392.974731 1397.697144 1396.459229 1393.097656 1391.386353 1389.604736 1386.726562 1384.369873 1382.36084 1380.634155 1377.614014 1368.427002 1360.359497 1351.975464 1345.093506 1340.707153 1345.074585 1347.940186 1348.381348 1346.821899 1344.639648 1339.031128 1333.044678 1322.023071 1313.402588 1313.920166 1315.66748 1315.134521 1315.481323 1316.430542 1314.838379 1310.511597 1305.057739 1299.626953 1292.448975 1290.026001 1285.86084 1283.023438 1284.849365 1286.879761 1288.079712 1288.740967 1289.435669 1291.417725 1294.338257 1295.538086 1294.609375 1290.570068 1282.10022 1271.528931 1271.536743 1273.008179 1275.036499 1277.095337 1278.610596 1279.777344 1280.424927 1284.233643 1291.404419 1294.78064 1293.983032 1290.640137 1288.31897 1287.318604 1286.865112 1285.555298 1282.917847 1282.05127 1281.749512 1281.198975 1279.504272 1276.775513 1273.212646 1278.652954 1283.360107 1285.200684 1286.529541 1287.448486 1287.031006 1287.858765 1290.34729 1291.821899 1291.746216 1290.296875 1289.115112 1288.564941 1288.817383 1290.322998 1292.275024 1293.252075 1290.135986 1285.966431 1284.158569 1284.445679 1284.506958 1281.612793 1281.330322 1282.794312 1282.681763 1281.320068 1276.421875 1274.365479 1273.144409 1271.442871 1270.398682 1268.711426 1267.23938 1266.217163 1265.549927 1264.311523 1262.324341 1260.373901 1258.346313 1252.939209 1243.508423 1250.491333 1258.334717 1259.910156 1260.197876 1259.711182 1259.478516 1259.379883 1258.598145 1257.793823 1257.451538 1256.379883 1256.133667 1256.342651 1257.771851 1258.1521 1257.61853 1255.849365 1251.168457 1247.677979 1246.344971 1247.040527 1246.921265 1245.71875 1242.930298 1239.236816 1236.269043 1234.049072 1233.153564 1236.859619 1237.565674 1235.276611 1232.693481 1232.868896 1233.492554 1233.144043 1232.110718 1231.826294 1233.792725 1234.482422 1235.11438 1235.878906 1236.503906 1236.590332 1236.754272 1236.611572 1236.584229 1236.774536 1236.614868 1236.294678 1234.943726 1233.510498 1231.343994 1232.731567 1233.36731 1233.679932 1233.938721 1234.021484 1233.996582 1233.585205 1232.859009 1231.699585 1226.105835 1222.984009 1225.082031 1230.972412 1233.585083 1233.795776 1234.095825 1233.531128 1230.08728 1221.92688 1218.814819 1219.967285 1223.734375 1229.736694 1231.681152 1233.616577 1236.112183 1237.334351 1237.227417 1235.976807 1233.268188 1231.989136 1231.426636 1230.674927 1230.080688 1229.705322 1229.400024 1229.035034 1228.864014 1228.535156 1227.970093 1227.293213 1226.947266 1226.318604 1225.490845 1224.77124 1223.947144 1222.795166 1221.210693 1220.576538 1221.151611 1220.951904 1220.307373 1219.090942 1217.887207 1216.830566 1215.735107 1215.10437 1214.477905 1213.469604 1212.341064 1211.254517 1210.044189 1208.520508 1206.586304 1203.814941 1202.540039 1202.722656 1203.295898 1204.01416 1204.325684 1204.335938 1204.135864 1204.300049 1204.713379 1205.386475 1205.752075 1205.753296 1205.470703 1204.658691 1203.351929 1202.026611 1200.697876 1199.384399 1197.901855 1195.963135 1196.025757 1196.660156 1196.954346 1197.135254 1196.865845 1196.351685 1195.672485 1194.928101 1194.014282 1192.924683 1191.837158 1190.868774 1190.029297 1189.417236 1189.040649 1188.788452 1190.393433 1192.926636 1194.270142 1195.228394 1195.745117 1196.770264 1198.876465 1200.539185 1202.05896 1203.423584 1204.758301 1206.364868 1207.567993 1208.118286 1208.931274 1212.663452 1215.756348 1217.993896 1219.942261 1222.986938 1226.909058 1231.047485 1236.404175 1241.706421 1248.657349 1257.765259 1266.025269 1278.033936 1284.585083 1284.470337 1282.509766 1277.991943 1271.918091 1267.879028 1267.223389 1268.822388 1270.465088 1271.69397 1271.922607 1271.02478 1269.968262 1268.291382 1266.39856 1265.060425 1263.658203 1262.530396 1261.670776 1260.549072 1259.28064 1257.765015 1255.228638 1250.520264 1247.207886 1244.255493 1243.09729 1244.959961 1246.710693 1249.486084 1251.932373 1253.941895 1256.291016 1260.124512 1262.935181 1264.899536 1266.526123 1268.400635 1269.67041 1270.941528 1269.958862 1261.992554 1254.253296 1253.008179 1255.038452 1248.664429 1242.366821 1242.885376 1243.298218 1243.18457 1243.163818 1239.920288 1234.661133 1227.490112 1218.324951 1220.806885 1223.089111 1223.919312 1224.013672 1223.795654 1222.799072 1221.02478 1218.067261 1216.194458 1217.581177 1216.652466 1215.527954 1215.889893 1215.296387 1213.717896 1212.260376 1210.950195 1209.067261 1207.005493 1198.032349 1188.502319 1180.486938 1174.016724 1169.674683 1166.227417 1163.304932 1161.385742 1159.694946 1156.76709 1153.00354 1150.621948 1149.007446 1147.998657 1147.853516 1146.837036 1146.060547 1145.560303 1145.080566 1144.421875 1143.167847 1141.267334 1140.756592 1140.435913 1138.925049 1137.138062 1136.356079 1135.63916 -1218.259521 1222.167114 1236.303955 1256.782959 1264.713623 1271.169556 1284.387451 1307.620728 1324.977905 1331.091064 1326.217896 1341.460083 1343.747803 1341.970581 1339.469727 1333.306519 1323.738403 1325.775757 1342.775391 1354.729614 1359.833374 1360.745239 1370.039795 1381.307861 1390.406128 1403.403931 1411.688599 1421.653687 1430.794067 1436.512695 1441.487549 1445.099609 1450.066406 1458.039551 1467.033447 1480.958374 1495.243408 1495.595337 1476.644043 1465.423706 1456.021118 1452.899536 1452.723022 1449.886963 1450.702637 1451.923828 1451.780273 1451.492554 1454.299438 1456.575562 1457.580566 1457.63623 1457.286743 1455.9729 1453.621948 1451.089111 1450.384155 1451.369873 1452.349121 1449.89624 1443.948975 1438.797241 1432.950073 1427.699829 1421.474365 1415.67041 1411.997192 1410.485474 1411.641479 1413.706665 1416.658691 1422.614136 1432.317261 1440.101318 1440.509399 1438.883057 1435.997925 1433.175903 1430.193604 1423.864014 1408.642944 1398.072388 1391.316284 1386.53894 1381.327515 1373.694458 1363.453979 1354.373291 1362.308838 1379.799805 1383.318115 1388.275879 1392.498901 1396.273438 1401.368286 1408.453857 1416.717773 1419.09729 1420.300049 1421.132324 1421.488281 1421.129272 1420.390015 1419.166382 1417.319214 1414.44043 1413.9104 1413.852417 1411.952393 1408.387207 1404.758545 1398.3396 1396.371338 1401.421753 1405.404297 1405.409424 1400.805176 1396.650513 1393.542236 1389.800049 1384.221313 1378.740479 1369.667114 1355.762573 1348.222534 1344.956299 1340.041138 1331.361938 1323.160522 1320.71936 1316.500122 1310.651367 1306.855591 1307.350098 1304.383545 1299.432129 1294.145264 1290.144531 1286.647339 1284.979004 1289.773804 1295.951172 1302.349365 1306.996216 1309.206177 1309.736694 1309.490967 1309.263062 1308.479492 1305.324707 1301.529541 1300.94751 1319.275635 1332.389893 1338.196167 1355.963501 1365.737915 1367.699341 1368.503418 1369.023071 1369.354004 1369.594604 1369.932495 1371.026123 1373.262329 1375.997192 1378.425903 1379.630493 1380.302246 1380.222168 1379.76416 1379.293579 1379.559814 1380.099976 1380.244995 1380.19458 1379.97937 1379.918335 1379.877319 1379.531006 1379.404907 1379.681641 1379.229126 1376.92041 1371.692017 1367.967529 1362.219238 1353.123535 1339.947021 1331.230957 1319.021973 1314.287109 1317.593262 1323.545044 1329.567139 1329.364624 1334.764404 1339.722534 1344.214233 1352.542114 1357.434814 1359.440918 1359.87146 1358.669067 1359.353394 1359.897217 1359.1604 1356.552612 1351.494019 1353.352539 1360.988647 1367.61792 1374.324585 1381.53894 1386.783936 1389.448608 1390.99585 1390.648315 1389.162842 1387.373413 1385.759521 1383.753662 1381.240723 1375.873779 1365.116577 1362.321777 1357.066162 1355.049683 1354.395264 1355.767456 1353.815552 1351.142212 1346.908325 1342.452271 1333.256958 1327.032593 1314.850586 1323.822632 1328.979492 1328.274048 1323.640503 1324.948486 1328.02771 1326.522095 1318.842285 1313.437744 1306.436157 1296.052246 1288.85144 1284.743164 1286.613037 1289.83728 1292.048584 1293.517212 1293.092041 1292.077759 1295.95813 1300.506714 1302.268921 1300.372437 1295.151001 1280.233521 1271.582642 1272.676025 1274.451904 1276.597412 1278.456055 1280.165649 1281.798828 1283.16333 1286.277344 1290.867065 1294.110352 1297.814087 1297.532837 1292.10144 1292.608521 1291.654053 1290.817261 1289.968262 1289.467407 1288.653809 1287.057007 1284.651855 1281.717407 1279.544189 1284.629883 1288.259521 1289.722168 1290.2323 1291.646851 1292.455811 1291.891602 1295.487549 1297.734741 1298.228027 1297.762573 1296.137329 1294.13501 1293.616211 1294.291138 1294.146973 1293.793945 1290.693115 1285.96521 1284.002563 1283.965088 1284.351685 1283.987183 1283.801392 1283.588745 1283.375122 1283.559448 1283.368164 1283.193237 1279.456787 1272.700806 1270.762207 1270.192871 1269.915649 1270.153564 1269.603027 1268.944336 1266.760376 1263.539917 1259.364014 1254.001953 1244.924072 1248.180786 1260.623657 1262.531738 1262.770752 1262.16394 1261.396851 1260.812744 1260.203857 1259.415527 1258.856445 1258.15332 1257.498169 1257.61731 1258.689453 1258.873901 1258.308228 1256.619019 1254.891357 1252.613647 1251.725952 1251.605957 1249.943359 1247.458374 1244.097046 1240.520752 1237.664917 1235.171753 1237.175903 1244.523438 1244.731079 1241.584595 1238.343262 1236.9823 1236.567505 1236.00293 1234.821045 1233.532471 1235.709717 1236.965332 1237.833618 1238.638428 1238.928711 1238.874634 1239.001221 1239.028076 1239.202271 1239.592773 1240.311646 1240.358643 1238.143311 1235.167725 1232.421021 1232.77771 1233.547729 1233.993896 1234.288818 1234.459473 1234.478271 1234.178955 1233.718506 1232.935791 1232.01355 1227.209595 1224.467041 1229.586914 1232.549805 1232.599976 1233.822266 1234.189819 1233.599487 1231.199585 1231.048706 1230.462158 1230.224976 1233.674194 1237.000488 1239.945068 1240.489502 1240.32312 1239.502563 1237.741699 1235.815186 1234.168213 1233.259521 1232.294312 1231.398071 1230.677002 1231.185059 1231.275635 1230.989014 1230.39917 1229.670044 1229.03125 1228.705688 1228.142212 1227.417358 1226.530762 1225.568848 1224.745972 1223.836548 1223.380493 1223.04541 1222.773438 1221.991821 1220.646118 1219.275024 1218.814819 1217.866943 1217.436157 1216.607056 1215.375244 1213.901733 1212.460938 1210.940552 1209.401489 1207.876587 1205.775024 1203.691895 1203.993408 1205.300659 1206.263306 1206.414185 1206.010498 1205.474854 1205.525391 1206.11792 1206.891113 1207.365601 1207.530518 1207.302124 1206.511108 1205.237549 1203.762573 1202.283325 1201.005249 1199.739868 1198.716675 1198.097778 1198.089233 1198.130859 1198.179688 1197.849365 1197.405762 1196.703735 1195.953491 1195.226562 1194.240967 1193.150879 1192.092896 1191.194824 1190.486328 1189.872559 1189.472656 1189.281372 1191.970825 1194.513428 1195.354004 1195.549316 1196.290161 1198.413086 1200.071777 1201.449829 1202.873413 1204.217407 1205.450806 1206.410278 1207.130371 1208.271729 1211.462646 1214.22168 1216.350586 1218.239014 1221.009521 1225.054321 1229.071045 1233.283203 1237.472778 1241.933716 1248.14563 1255.685791 1266.070923 1283.317505 1287.109253 1285.828125 1281.812134 1274.927368 1268.339966 1267.776611 1269.410767 1271.841675 1273.23584 1273.712158 1273.254639 1272.170776 1270.50354 1268.486816 1266.85498 1265.16687 1264.091431 1263.009521 1261.774414 1260.079834 1258.152954 1255.099854 1252.027344 1247.654785 1243.703491 1244.28418 1245.035278 1247.726807 1250.07312 1251.900146 1253.488525 1255.066528 1257.355469 1260.881592 1263.305542 1264.956787 1266.118652 1266.822021 1267.717041 1265.661743 1259.161987 1252.42041 1246.632812 1246.477905 1243.546753 1239.466797 1235.054932 1236.279053 1237.418701 1238.80481 1236.969238 1233.779907 1227.265625 1219.818726 1211.8125 1214.500122 1217.014893 1217.663208 1217.306885 1215.289551 1209.317627 1209.775879 1212.820557 1211.763184 1208.015625 1206.960083 1211.551636 1212.283691 1211.032593 1210.084961 1209.089722 1206.817017 1198.752075 1191.344482 1184.003662 1177.018066 1171.339233 1167.626953 1164.125977 1161.735596 1159.954956 1157.648804 1153.790039 1150.806152 1150.769043 1151.175781 1151.776123 1151.134644 1150.206909 1149.087646 1148.238647 1147.440674 1146.673218 1145.615845 1144.088135 1143.087524 1142.046509 1140.711548 1138.677979 1136.860596 1135.352417 -1231.226929 1223.989014 1235.690186 1262.861206 1284.939941 1296.810303 1307.71521 1319.892334 1333.941284 1344.426025 1344.130249 1357.745117 1359.481567 1356.790771 1349.400513 1343.372803 1334.645996 1332.249634 1350.176147 1362.726685 1370.235596 1374.584229 1376.0354 1383.651367 1396.097534 1408.384277 1416.874634 1427.717163 1436.946167 1443.216187 1448.699829 1452.016602 1456.583984 1463.685669 1475.79248 1487.91333 1503.058838 1501.220093 1485.578125 1469.803467 1461.638794 1460.31958 1458.470703 1456.051025 1456.873657 1458.682373 1458.725708 1459.300415 1461.918701 1462.736938 1462.63916 1461.689575 1461.742554 1461.431519 1458.55896 1455.235107 1453.703857 1454.266724 1453.669312 1451.036255 1445.429199 1440.710693 1435.156616 1429.776123 1424.006714 1418.278076 1412.643555 1403.626831 1401.117188 1404.447266 1409.671265 1416.019653 1423.713379 1429.957031 1435.82312 1437.520386 1435.42749 1433.072388 1431.366821 1427.664551 1414.781982 1401.375244 1395.138428 1389.696899 1383.490112 1376.228638 1364.603882 1354.704224 1359.979004 1379.90979 1382.804443 1388.105591 1392.957642 1397.467407 1403.380981 1412.223877 1417.988403 1421.107788 1422.858032 1423.584717 1423.589355 1423.108887 1422.063965 1420.542358 1418.531128 1416.647217 1416.541138 1415.888916 1414.630737 1409.907349 1405.472168 1393.860596 1386.78772 1393.892822 1397.303223 1395.891357 1390.963745 1388.19873 1383.895264 1381.160522 1376.137207 1363.144653 1355.608398 1347.973999 1339.500854 1334.82605 1331.974243 1325.699829 1316.354492 1314.373901 1310.624878 1306.481689 1303.092651 1302.010254 1300.525391 1297.083618 1294.237549 1290.904663 1287.35437 1285.698853 1291.287598 1299.874146 1307.461426 1311.555664 1313.815186 1314.19873 1313.657349 1313.090454 1312.151855 1308.869995 1306.331665 1302.885986 1309.255737 1325.55542 1334.721313 1351.626587 1365.957886 1368.119141 1369.156494 1369.828125 1370.06189 1370.281372 1370.916138 1371.866211 1374.663696 1377.846191 1379.579834 1380.203857 1380.30835 1380.027222 1379.179077 1379.02771 1379.041748 1380.045532 1380.254272 1380.246826 1379.713867 1379.382446 1378.918213 1377.549927 1376.829468 1376.3302 1376.55957 1373.560303 1368.194824 1364.20459 1359.302002 1351.362915 1339.095459 1328.687378 1318.01062 1315.153931 1321.10498 1331.295654 1339.310425 1344.813232 1348.723633 1351.23584 1355.679321 1362.5625 1366.422241 1366.954346 1365.724487 1363.466553 1364.473877 1364.701294 1362.738403 1358.481445 1353.588989 1353.912964 1359.08606 1363.867676 1367.375977 1374.517944 1378.927246 1382.753296 1386.30249 1388.751709 1388.941895 1388.336548 1387.586182 1384.834229 1380.613281 1371.909424 1366.426758 1370.019653 1370.998047 1369.30957 1364.807495 1359.591064 1355.991699 1350.388184 1343.471436 1335.563232 1327.136963 1327.004883 1331.974609 1335.97937 1336.890259 1335.132935 1333.151978 1333.981689 1334.859863 1333.19458 1326.773438 1317.442993 1307.609985 1296.596069 1287.850586 1287.659302 1290.805176 1294.985352 1299.506348 1302.209229 1301.163086 1300.370605 1303.555298 1307.821655 1308.934082 1306.168457 1296.717285 1279.803223 1274.09375 1273.598267 1275.668701 1278.226807 1279.9729 1281.767944 1283.343262 1284.952026 1287.138306 1289.496704 1292.100586 1299.75 1306.649536 1304.014282 1300.75415 1299.916626 1298.718872 1297.533081 1296.48938 1295.557617 1293.503906 1289.06311 1284.141968 1284.032715 1290.672852 1293.942139 1294.411133 1294.302979 1296.588989 1298.063599 1298.614258 1300.408447 1303.033203 1305.064819 1306.089478 1306.720825 1305.944824 1300.40625 1295.496826 1291.055908 1288.506104 1286.469238 1284.313965 1282.338867 1281.588501 1280.765503 1281.396851 1282.17749 1281.258911 1279.803955 1278.037598 1275.472168 1272.544189 1269.916504 1268.081665 1266.935303 1266.737671 1267.298096 1270.487671 1271.550293 1270.680054 1269.95105 1264.409302 1257.649048 1251.429565 1245.006958 1247.108032 1263.301636 1265.83728 1265.511353 1264.461792 1263.293945 1262.434937 1261.680298 1261.033936 1260.499878 1259.913086 1259.573364 1259.604858 1259.775391 1259.672485 1259.220093 1258.335083 1257.237671 1255.375732 1256.463623 1256.323486 1253.21936 1248.014282 1243.67981 1242.056274 1240.317383 1235.897949 1244.450195 1246.016724 1246.254272 1244.984985 1242.144165 1241.074097 1241.086548 1240.050903 1238.709717 1238.265503 1238.9375 1239.611816 1240.76123 1241.704224 1241.760498 1241.275635 1241.114014 1241.30127 1242.038818 1242.38208 1243.306885 1244.47583 1241.59729 1236.980591 1233.652466 1233.307983 1233.866089 1234.380493 1234.708618 1235.152832 1235.394043 1235.309204 1234.734009 1233.8396 1232.907959 1230.962036 1226.302246 1229.514648 1232.332397 1232.435669 1232.855591 1234.820801 1235.681641 1235.667114 1235.53833 1235.570312 1236.564453 1240.400269 1244.845459 1245.131226 1243.707031 1242.837769 1241.576416 1239.981445 1238.348633 1236.520752 1235.224854 1234.094604 1232.46228 1231.422974 1232.510986 1233.341064 1232.954468 1232.233398 1231.105347 1230.573242 1230.618164 1230.155762 1229.09314 1228.171875 1227.595581 1227.138062 1226.460938 1225.893555 1225.288818 1224.520508 1223.560181 1222.376709 1221.356201 1220.81604 1220.240845 1219.508911 1218.562378 1217.310425 1215.636353 1213.868774 1212.273438 1210.682861 1209.230835 1207.95813 1205.735962 1205.471558 1207.294312 1207.840332 1207.818481 1207.261719 1206.571167 1206.381104 1207.313721 1207.971436 1208.364258 1208.525513 1208.41626 1207.82312 1206.748779 1205.266357 1203.774536 1202.5625 1201.796875 1200.979126 1200.314697 1199.907837 1199.605591 1199.352661 1198.865112 1198.411621 1197.734131 1196.960449 1196.080322 1195.181396 1194.261841 1193.24585 1192.31543 1191.655884 1190.860474 1190.129761 1189.756958 1192.537231 1195.635986 1196.230835 1196.624512 1197.378662 1198.419189 1199.72522 1201.079102 1202.4552 1203.861816 1205.319092 1207.064575 1208.341797 1209.567017 1211.2052 1213.461304 1215.645386 1217.744141 1219.99353 1223.304443 1226.796143 1230.237183 1233.769409 1237.740479 1241.703491 1247.209961 1258.019287 1276.560791 1291.250366 1290.279541 1285.59375 1279.874878 1272.712769 1269.239136 1271.448364 1273.74939 1275.280762 1275.923584 1275.754395 1274.672607 1272.805176 1270.710449 1268.233521 1266.402466 1265.323486 1264.33667 1262.970093 1261.085327 1258.448975 1256.662964 1255.355103 1249.950195 1246.53418 1248.726074 1249.759888 1250.644653 1251.66687 1252.838013 1253.922119 1255.800293 1258.263428 1260.296265 1261.800293 1262.834961 1263.020508 1262.321289 1261.463257 1259.83728 1256.300293 1248.510864 1242.34668 1240.978882 1239.491821 1236.004761 1232.12915 1230.822876 1233.414307 1235.916016 1235.263062 1232.579956 1226.971191 1221.289551 1210.740479 1205.846191 1207.968018 1210.027588 1210.712524 1208.349121 1203.69165 1206.555542 1209.754517 1209.769653 1206.307983 1207.889038 1209.87439 1209.836426 1208.65686 1207.376587 1203.658325 1195.321777 1190.447266 1185.274902 1179.175171 1172.916016 1168.518311 1164.671631 1161.751953 1159.702637 1157.397339 1154.433838 1152.272949 1156.81543 1157.794556 1158.493286 1158.172241 1155.338745 1153.511963 1152.456177 1151.529663 1150.528931 1149.6604 1148.486328 1146.621704 1145.406616 1144.948242 1144.165771 1141.901978 1139.3927 1137.442627 -1247.97168 1236.074951 1230.177246 1254.146851 1279.498779 1296.707397 1308.000854 1322.03479 1333.736816 1344.676147 1354.786987 1365.651855 1374.730957 1372.259277 1363.507568 1355.258911 1348.512207 1341.012085 1356.623779 1372.410645 1381.067383 1385.912964 1385.798706 1388.078125 1402.668091 1413.530884 1423.338623 1435.873901 1444.488037 1451.337646 1456.115356 1459.645874 1463.813599 1473.171143 1483.901978 1497.477783 1505.861572 1502.401611 1488.862793 1473.776489 1471.412964 1469.99646 1466.761597 1462.943481 1465.203857 1467.367798 1466.951782 1466.922241 1467.595947 1467.725708 1466.927368 1465.976929 1465.708618 1465.572754 1463.782715 1460.608765 1458.617065 1457.09314 1453.774658 1449.885864 1445.93689 1441.733765 1436.792603 1430.889526 1425.323242 1419.822388 1414.661865 1405.34436 1399.862427 1400.246704 1404.654907 1409.359619 1414.642334 1419.442871 1426.151489 1430.402222 1432.330566 1432.126709 1431.317139 1428.990845 1416.219971 1403.453125 1396.986084 1391.282227 1383.818359 1375.572876 1364.008301 1354.809448 1367.12561 1378.561768 1378.355835 1386.122925 1391.295776 1400.253784 1405.978149 1415.110352 1419.88623 1423.399658 1425.418701 1425.900146 1425.669556 1424.963867 1423.688232 1422.154907 1420.803589 1419.559448 1418.482544 1417.346313 1416.109009 1409.17627 1399.208862 1387.928345 1372.942261 1383.642822 1391.499146 1392.981567 1384.569702 1375.26062 1370.780518 1366.8927 1361.551758 1354.23999 1345.334961 1339.67334 1334.408936 1328.135254 1323.515503 1318.033936 1313.021484 1307.979492 1305.166016 1302.686157 1299.902832 1298.085327 1296.726074 1295.55835 1293.723145 1291.14502 1288.098633 1286.35376 1291.142578 1301.801025 1310.407593 1316.43103 1318.736572 1318.920166 1317.921631 1316.619629 1315.583984 1312.130859 1309.357178 1306.30188 1304.82666 1319.993164 1332.780151 1347.80188 1359.268066 1364.506226 1365.21521 1364.753906 1366.414917 1367.913696 1368.347046 1369.726074 1373.338623 1377.23999 1378.906982 1379.462769 1379.009399 1376.47937 1377.102173 1377.249634 1377.796631 1379.63208 1380.002441 1378.382324 1377.143799 1376.848633 1374.827637 1373.773071 1372.681274 1372.089233 1372.577637 1370.802979 1366.677002 1362.863403 1356.013062 1344.24231 1336.055908 1327.942261 1320.316284 1315.653931 1326.356079 1338.566162 1348.975342 1357.364258 1362.222412 1364.167603 1369.173096 1372.115234 1372.623657 1371.793335 1369.361206 1365.4104 1367.912598 1367.744629 1366.489624 1362.469604 1355.859497 1355.74292 1360.172485 1364.113403 1366.394531 1373.095947 1376.411011 1378.186279 1384.493652 1388.183105 1389.64563 1390.100952 1389.552612 1385.723389 1377.981445 1377.338867 1380.234375 1380.8927 1378.939575 1372.932617 1365.943237 1359.655396 1354.265259 1347.585938 1339.192383 1329.570801 1327.155518 1333.872681 1340.255859 1343.272827 1342.362549 1340.023682 1340.655884 1340.458496 1339.656006 1332.589844 1324.074951 1313.907349 1303.440308 1290.77771 1289.366699 1293.033813 1295.79895 1303.459106 1307.884399 1309.768433 1309.13208 1305.775391 1309.260132 1314.691406 1317.308716 1313.209229 1297.424194 1281.585693 1276.539185 1274.510132 1277.156738 1280.345581 1281.787598 1283.209961 1284.854492 1286.234497 1287.908813 1289.721802 1291.489136 1296.735718 1306.254517 1308.248535 1307.791016 1307.554199 1307.137085 1306.373779 1304.768066 1301.560303 1298.221436 1293.847778 1286.342896 1288.092407 1294.631958 1297.650879 1299.225464 1300.349243 1302.376709 1305.564819 1305.402344 1305.258301 1306.94458 1307.260864 1306.798706 1307.121948 1304.400757 1298.097046 1292.511963 1288.183716 1281.709229 1280.656006 1280.655762 1280.971802 1279.597656 1278.134521 1276.355713 1274.189331 1273.203735 1271.958252 1268.940063 1266.439331 1264.87793 1264.348877 1263.452393 1261.664062 1258.894165 1256.922485 1254.299316 1260.069214 1265.3479 1265.151367 1261.321533 1255.421143 1249.47876 1244.188477 1253.549072 1269.010864 1269.31897 1267.771851 1266.333984 1264.983398 1263.971069 1263.256836 1262.591675 1262.102173 1261.723389 1261.35498 1261.211426 1261.017822 1260.69873 1260.173096 1259.473022 1258.510498 1257.947021 1257.615112 1257.18396 1255.599121 1249.480103 1244.833374 1245.542236 1244.039307 1237.35022 1245.52771 1246.74939 1246.943604 1246.141479 1244.390259 1244.392334 1244.886963 1243.727417 1241.748779 1241.261963 1242.47522 1242.937744 1243.43335 1244.510254 1244.527466 1243.776978 1243.307617 1243.338745 1244.363281 1245.133789 1245.690552 1245.830566 1243.191406 1239.065918 1235.709473 1233.845825 1234.250122 1234.721191 1235.31189 1236.163452 1236.826904 1236.974609 1236.309082 1235.126465 1234.078125 1231.931763 1226.30249 1231.900757 1232.730591 1232.455444 1232.543579 1235.279663 1237.438477 1238.401733 1238.936768 1240.052612 1241.748535 1244.897583 1246.72522 1247.422363 1246.528687 1245.360962 1243.989624 1242.453125 1240.652222 1238.813721 1237.444214 1235.976562 1234.448608 1233.52417 1234.231567 1234.995972 1234.841309 1233.955444 1232.687378 1232.05542 1232.653442 1232.018066 1230.736938 1229.68689 1229.67981 1229.464478 1228.82251 1228.224731 1227.423828 1226.360474 1225.388062 1224.442871 1223.477783 1222.967896 1222.347412 1221.449951 1220.418457 1218.927124 1217.205078 1215.354614 1213.61499 1212.16272 1210.578613 1209.243042 1208.109009 1206.28772 1208.012085 1208.668579 1208.668823 1208.320923 1207.611938 1207.370605 1208.083008 1208.78125 1209.137451 1209.214355 1209.005859 1208.542603 1207.717407 1206.162476 1204.878418 1204.282715 1203.636108 1202.949829 1202.293457 1201.654053 1201.200073 1200.626465 1199.835815 1199.262451 1198.644287 1197.792847 1196.864014 1196.110474 1195.19458 1194.408569 1193.735107 1193.134277 1192.056763 1190.956299 1190.209717 1193.620483 1196.034302 1196.644531 1197.07019 1197.613403 1198.331665 1199.420166 1200.654541 1201.979492 1203.431519 1205.098511 1206.921875 1208.221558 1209.403931 1210.682129 1212.59729 1214.754272 1216.889893 1218.778931 1221.452393 1224.470459 1227.749268 1230.751709 1234.615723 1238.58667 1243.855225 1253.688965 1265.586548 1287.205322 1294.57251 1290.763794 1284.564453 1279.469238 1276.612061 1275.829346 1276.229004 1277.465942 1278.575073 1278.641113 1277.601196 1275.958984 1273.478027 1270.30835 1267.667358 1266.510742 1265.7677 1264.449707 1262.59436 1260.571655 1258.892578 1257.49646 1253.37561 1251.726807 1254.580566 1255.868896 1254.951172 1253.966553 1253.847534 1254.479736 1256.444946 1258.514648 1259.7677 1260.669312 1261.002197 1260.412598 1258.798096 1256.956055 1254.819702 1250.274658 1244.848389 1241.202759 1236.808838 1235.210693 1234.580566 1232.183716 1229.652832 1232.812744 1234.391846 1233.838867 1231.35376 1226.654907 1221.112915 1212.032715 1205.640503 1202.139404 1200.883301 1201.808838 1197.565552 1198.72229 1205.099365 1208.76709 1209.125 1202.533081 1206.987671 1208.023682 1204.588989 1197.958008 1193.227173 1191.178711 1187.867188 1184.026367 1178.978516 1173.710938 1168.943359 1165.00769 1161.387085 1158.908691 1156.11084 1154.282837 1156.194458 1160.404541 1162.115845 1162.534668 1162.828003 1161.54541 1157.671021 1156.874512 1155.989868 1154.775146 1153.680054 1152.844238 1151.841431 1150.60791 1148.610596 1148.408081 1148.282593 1145.14856 1143.008057 1141.108276 -1262.30603 1250.989868 1247.53833 1241.8396 1255.55603 1280.151611 1302.760254 1313.96228 1322.290283 1330.961426 1346.647339 1367.078857 1388.273438 1387.272827 1375.392212 1369.511353 1364.148193 1355.119629 1363.554077 1380.450928 1389.258423 1395.214478 1398.303833 1399.940674 1408.137817 1419.710205 1432.349609 1444.148804 1451.577881 1458.091675 1464.001587 1470.771118 1477.7771 1483.188354 1491.901855 1504.98999 1512.941772 1507.998901 1492.431152 1483.079834 1484.062622 1482.293823 1477.16394 1475.430542 1476.610107 1477.913208 1477.546997 1476.226562 1474.129028 1472.817627 1471.257812 1470.016724 1469.16748 1468.299438 1466.472046 1464.168579 1461.746094 1459.775146 1453.845337 1449.290283 1445.933594 1442.149902 1437.337036 1430.97522 1425.506714 1420.044189 1415.254883 1405.694336 1398.171997 1394.244263 1398.105103 1402.596313 1407.221191 1411.001709 1414.350586 1419.592407 1424.043701 1426.973389 1427.94397 1425.596558 1414.895264 1403.677979 1397.150146 1391.445801 1383.078247 1372.994629 1362.740723 1355.548706 1363.198242 1366.929321 1379.962402 1385.965332 1393.108276 1403.701294 1413.811279 1418.585693 1422.589722 1426.059814 1428.179077 1428.694458 1427.986572 1426.745728 1425.231934 1424.04834 1423.176392 1421.708618 1420.068604 1418.409424 1416.05896 1406.10144 1387.366821 1376.53418 1361.845093 1366.273071 1378.032471 1386.781372 1386.574585 1375.028076 1354.87085 1352.466553 1348.731934 1342.470947 1335.636597 1331.648926 1328.817749 1323.448364 1317.123413 1313.62854 1309.750366 1305.648438 1301.456665 1298.515015 1296.141357 1295.123535 1293.955566 1292.923706 1291.894165 1290.25293 1288.722046 1287.437378 1290.423584 1301.849976 1312.930786 1320.280273 1323.165649 1324.609131 1324.111206 1322.46582 1320.4198 1315.63562 1313.182251 1309.67395 1305.952759 1317.572632 1327.536621 1337.786377 1349.832397 1354.94519 1355.189575 1352.463745 1352.897217 1354.691284 1356.681641 1366.348633 1370.80957 1374.002563 1375.521851 1375.249268 1373.278442 1370.34021 1370.751953 1377.229126 1379.453247 1380.482178 1380.324951 1378.917114 1376.122314 1371.008789 1369.043091 1369.353638 1368.593506 1366.095459 1369.111694 1369.606201 1368.543457 1366.628906 1357.512695 1345.534668 1335.503784 1327.328613 1320.66687 1316.452881 1329.468628 1345.157104 1358.148804 1368.215698 1376.399902 1378.708374 1379.654663 1379.736694 1378.837769 1376.993408 1373.36499 1369.691895 1371.117432 1370.2677 1368.545166 1366.797974 1358.779785 1357.376953 1363.125122 1367.846436 1372.998291 1377.870728 1380.556885 1382.716431 1386.998779 1390.3927 1391.897705 1392.445923 1391.752686 1388.484863 1387.227905 1391.134644 1388.095459 1384.034424 1380.512207 1372.804688 1364.511841 1355.917114 1350.754639 1345.192505 1337.421021 1328.7052 1335.529541 1343.366211 1346.335205 1347.56311 1347.11084 1348.253174 1354.466919 1354.526123 1342.69873 1327.433228 1317.2854 1305.166748 1291.681152 1291.890259 1295.574341 1299.148071 1303.502686 1308.875244 1313.418457 1316.887939 1318.140137 1316.112793 1315.314087 1320.881348 1321.977173 1316.744263 1297.514404 1284.42688 1278.622925 1275.661865 1278.166626 1281.934692 1283.621948 1285.198364 1286.441284 1287.60791 1288.969971 1290.893066 1292.748047 1298.661133 1305.531372 1310.317749 1312.192261 1312.032104 1312.252319 1311.57373 1309.961548 1306.814941 1302.873779 1298.484863 1290.41272 1289.220337 1295.957031 1301.511597 1303.726929 1305.973633 1308.723755 1312.569092 1312.507935 1310.530273 1308.105713 1305.091431 1303.160156 1300.620728 1297.255005 1293.131226 1290.292725 1287.07019 1283.133301 1281.679565 1281.069092 1280.581299 1280.654419 1279.494385 1276.98645 1268.894043 1267.499268 1266.410522 1265.380493 1264.796509 1264.337402 1262.742432 1260.726685 1259.883667 1259.67395 1258.951904 1258.043701 1254.266357 1253.668579 1255.19458 1256.084106 1251.773804 1247.771484 1250.118896 1275.207031 1276.698608 1273.029419 1269.724121 1267.434692 1266.115479 1265.202271 1264.61853 1264.00769 1263.51062 1263.174927 1262.86731 1262.602051 1262.347168 1261.885742 1261.185913 1260.462402 1259.484497 1258.647949 1257.718018 1256.539062 1254.865601 1252.141602 1249.286743 1247.894409 1245.84082 1239.523438 1245.301025 1247.11145 1247.558472 1247.101685 1246.430298 1246.494995 1246.47522 1245.406006 1243.809814 1242.914551 1244.772583 1245.549072 1246.13208 1247.11145 1247.371094 1247.060425 1246.680542 1246.669678 1247.384766 1247.516724 1247.635132 1246.837524 1244.463867 1241.567261 1238.793945 1236.413696 1234.910522 1235.119873 1235.898804 1237.327881 1238.861572 1239.303467 1238.589844 1236.824585 1234.804688 1232.386841 1227.676636 1232.97644 1234.027466 1232.92749 1234.155396 1236.91626 1239.153687 1240.695923 1241.875854 1243.170776 1245.616089 1248.294189 1249.964355 1250.108398 1249.265137 1247.810181 1246.204834 1243.958496 1242.340576 1240.618408 1239.361084 1238.30835 1237.565063 1237.011719 1237.228516 1237.215698 1236.855835 1236.011108 1235.109009 1234.675293 1234.390747 1233.574707 1231.879639 1231.148438 1231.6604 1231.590576 1231.153564 1230.334717 1229.310669 1228.032837 1227.307739 1226.463501 1225.646362 1225.046021 1224.374878 1223.244873 1221.966187 1220.288574 1218.34021 1216.539429 1215.055542 1213.430908 1211.897217 1210.348389 1209.066284 1207.317627 1208.258911 1209.332397 1209.554932 1209.138062 1208.613892 1208.535034 1208.955444 1209.467041 1209.73938 1209.755493 1209.485596 1208.897217 1208.013306 1206.624023 1205.864868 1205.788086 1205.418701 1204.803833 1204.015503 1203.339478 1202.612427 1202.036621 1200.701294 1200.169312 1199.510132 1198.705933 1197.93689 1197.051392 1196.142334 1195.57959 1195.23938 1194.6698 1193.722656 1191.959106 1190.665894 1193.706665 1196.035767 1196.513184 1196.889893 1197.444458 1197.994141 1198.861938 1199.880859 1201.303589 1202.773315 1204.419067 1205.734375 1206.728516 1207.614258 1210.008423 1211.802979 1213.632324 1215.655518 1217.625488 1219.69397 1222.635864 1225.603271 1228.571167 1231.870361 1236.278564 1240.801636 1246.324707 1256.954346 1272.314331 1290.868164 1294.915771 1290.905029 1283.294434 1279.475464 1279.065796 1278.83313 1279.966797 1281.036987 1281.780884 1280.698608 1279.616089 1278.44751 1274.692871 1269.518921 1267.756592 1267.319336 1266.122925 1264.601318 1262.516602 1260.225464 1257.346436 1255.284546 1255.985229 1257.413452 1258.035522 1257.590698 1256.450562 1254.964111 1254.831177 1256.137573 1257.846069 1259.090454 1259.742798 1259.814331 1258.87146 1256.61145 1254.637939 1251.94812 1246.600952 1242.370483 1239.046021 1233.569092 1231.289917 1231.780029 1229.80249 1226.604126 1230.246216 1233.14563 1232.462036 1228.98938 1225.076538 1221.264282 1213.983276 1206.983521 1200.303467 1194.677002 1193.620117 1194.961182 1202.624023 1205.177856 1208.758057 1209.491333 1198.523071 1193.605347 1194.011841 1192.054932 1189.639526 1187.37439 1184.876831 1182.016113 1177.975464 1173.430542 1168.771484 1164.68103 1160.694946 1158.07373 1155.831909 1157.179688 1158.797241 1161.101562 1164.360474 1166.407715 1167.103516 1166.960083 1165.13269 1162.222656 1161.768921 1159.774902 1157.925659 1156.421387 1155.960815 1156.22168 1155.979858 1155.780762 1155.593872 1154.227905 1150.25769 1147.115112 1145.162598 -1285.072144 1269.237793 1256.799561 1246.476074 1248.684082 1274.146362 1291.395752 1295.116333 1300.76709 1324.147827 1345.933105 1365.23584 1390.391235 1402.33252 1389.731689 1381.838379 1377.039551 1368.836548 1368.341919 1385.714233 1396.332764 1403.916016 1410.092163 1413.397339 1418.262939 1428.98291 1440.916138 1450.404297 1457.668579 1465.182495 1474.863281 1481.11853 1485.383545 1491.638306 1501.307861 1513.240112 1517.7323 1515.595459 1498.769653 1496.876465 1497.51355 1494.820557 1488.617188 1486.178345 1488.286743 1487.693604 1486.06897 1484.074829 1481.001587 1477.776855 1474.837646 1473.28064 1472.186768 1470.985474 1469.524048 1467.554077 1465.751587 1463.921265 1457.548828 1450.375 1445.971802 1441.519531 1435.745972 1429.374756 1423.641846 1418.096802 1413.529907 1405.733521 1396.310669 1388.741943 1391.761353 1396.171265 1401.25769 1405.307495 1408.112427 1410.169678 1411.618774 1415.057739 1417.978149 1416.698242 1409.637085 1400.945435 1395.903442 1390.39856 1381.926514 1371.447754 1362.171265 1356.475708 1360.636841 1369.731079 1380.438843 1386.69165 1394.683594 1404.24292 1414.238647 1420.428223 1425.40625 1429.137085 1430.925049 1431.606201 1430.838623 1429.233276 1427.244263 1426.060547 1425.363281 1424.12854 1421.432007 1418.879028 1416.302612 1405.993652 1390.377075 1371.282227 1356.037231 1352.999268 1363.542969 1372.751587 1376.086914 1372.282349 1367.144287 1356.361816 1342.004517 1332.239502 1327.47583 1326.557617 1323.359497 1319.38269 1315.3396 1311.026978 1307.689331 1302.912964 1297.217651 1296.152466 1296.122925 1295.339478 1292.910522 1292.010254 1291.098755 1290.219849 1289.35083 1288.368286 1290.272949 1299.914551 1311.025879 1319.358765 1326.411621 1330.379883 1331.450317 1329.352295 1326.932251 1320.495972 1317.60437 1314.487061 1309.325073 1311.356567 1319.699585 1327.352783 1335.607788 1342.067627 1341.52356 1339.860229 1339.731934 1346.241699 1356.834106 1367.908569 1370.057739 1371.278809 1371.410522 1370.418701 1367.290161 1364.416992 1366.165649 1378.04541 1380.864868 1381.203247 1381.228149 1380.334229 1377.518433 1367.08252 1364.471069 1364.646606 1364.769653 1363.801758 1367.365112 1368.922119 1368.709229 1367.242065 1356.050537 1346.68457 1335.51416 1326.356079 1319.654785 1319.286133 1333.026978 1349.785156 1364.197266 1375.241699 1383.1073 1385.293457 1385.244141 1384.167603 1382.549805 1380.365479 1377.559814 1375.744995 1374.976074 1372.760742 1370.295654 1368.079346 1362.427368 1358.608765 1365.769531 1371.827637 1378.572144 1382.702881 1387.305786 1390.392578 1391.386475 1393.372803 1394.532349 1394.876465 1394.178833 1391.72998 1392.545166 1393.141602 1390.910645 1385.517456 1378.834351 1368.81897 1357.817017 1350.82251 1346.206421 1341.637695 1338.512207 1339.448242 1343.932617 1348.648071 1352.749512 1352.852783 1350.120483 1350.1073 1353.131348 1349.197632 1334.077271 1316.762329 1306.335205 1292.485962 1294.616333 1296.849609 1299.861206 1304.013794 1309.008789 1314.244751 1319.084106 1324.427856 1326.940674 1319.704102 1317.614746 1330.443481 1325.422363 1310.218994 1292.851807 1286.508545 1281.477661 1277.988403 1277.915894 1283.184692 1286.306763 1288.170776 1288.744507 1288.947021 1290.076782 1292.082642 1296.092651 1301.904907 1307.283447 1313.082031 1315.771973 1316.152588 1317.075928 1316.236938 1315.174561 1312.874878 1309.584351 1306.88623 1296.920654 1289.570923 1298.521118 1306.098022 1308.870728 1312.979614 1317.310913 1319.625854 1318.121094 1314.188721 1308.542969 1303.329346 1299.644409 1292.988525 1291.528442 1291.42749 1290.310913 1288.919067 1288.485596 1287.43042 1286.259644 1285.531372 1286.669434 1285.426514 1283.339478 1273.815308 1268.354248 1270.407593 1271.136475 1271.091431 1270.166016 1268.849731 1265.519043 1263.522095 1263.270142 1262.786133 1260.7677 1256.238647 1254.054077 1251.296021 1249.701538 1248.186157 1247.213501 1259.080322 1278.446045 1282.060547 1277.467651 1270.885742 1267.855591 1266.856445 1266.233521 1265.733887 1265.260986 1264.793091 1264.419189 1264.107544 1263.85498 1263.570557 1263.151001 1262.417236 1261.460815 1260.206665 1258.136108 1256.223755 1255.681763 1255.949707 1255.37207 1252.505737 1249.506836 1246.463623 1241.004028 1245.35498 1247.639038 1248.697754 1248.745361 1248.595093 1248.28125 1247.831787 1246.879639 1245.159424 1244.178101 1246.472412 1247.676636 1248.480835 1249.549072 1250.913208 1252.291504 1252.637085 1251.933838 1251.026489 1250.218506 1249.4198 1248.095459 1246.003906 1244.089111 1242.270142 1240.233398 1237.591309 1235.776367 1236.370483 1238.635498 1241.262939 1242.466797 1241.811035 1239.139893 1235.380737 1232.151123 1230.329712 1233.760254 1235.42395 1236.338379 1238.042725 1239.620605 1240.933594 1242.579468 1243.691284 1246.141968 1250.905396 1253.490234 1253.812134 1253.577393 1252.264038 1250.368408 1248.204468 1245.779419 1243.921143 1242.154175 1241.033447 1240.722046 1240.341187 1239.92981 1240.340088 1240.315063 1239.644897 1238.711548 1237.741577 1237.10083 1236.469727 1235.346191 1233.838623 1233.130737 1233.584961 1233.709595 1233.333252 1232.560669 1231.162476 1229.739502 1229.075073 1228.641602 1227.898438 1227.336792 1226.428589 1224.941162 1223.19458 1221.258301 1219.192871 1217.703857 1216.296631 1214.807983 1213.364624 1211.741699 1210.317749 1209.197754 1209.437622 1210.155273 1210.354736 1210.174683 1210.005981 1209.917603 1210.139648 1210.348633 1210.477173 1210.354248 1209.887085 1209.078369 1208.035889 1206.955078 1206.993286 1207.298828 1207.255859 1206.663086 1205.508911 1204.744873 1203.979858 1203.147949 1201.643188 1201.037109 1200.375732 1199.719116 1199.03479 1198.205078 1197.464844 1196.918213 1196.550537 1196.039062 1195.184326 1193.152466 1191.484375 1191.453003 1195.420776 1195.807861 1196.010742 1196.632202 1197.371704 1198.121094 1199.219971 1200.443848 1202.13623 1203.881348 1205.581909 1207.468018 1208.62085 1209.82605 1211.122925 1212.609863 1214.494263 1216.377197 1218.279297 1220.559082 1223.550293 1226.964111 1230.702759 1234.586304 1237.968384 1241.855957 1249.091309 1262.3479 1275.49231 1289.27771 1293.850586 1286.12439 1282.293579 1279.832275 1280.552979 1282.5 1283.554321 1284.318359 1284.028442 1283.169312 1282.552734 1281.151978 1276.201416 1271.726318 1270.002197 1268.390747 1266.753296 1264.602539 1261.78479 1258.738403 1255.967529 1257.284912 1259.193848 1259.600464 1259.209717 1257.902222 1256.158447 1255.128418 1255.561035 1256.462158 1257.973267 1259.30481 1259.39563 1258.587646 1256.600342 1255.082031 1252.114868 1247.60022 1244.172852 1240.151978 1235.547485 1232.039795 1229.37915 1225.28125 1220.0896 1223.287109 1226.651978 1227.433228 1224.780029 1221.865356 1221.326416 1220.487671 1208.670288 1200.579102 1196.000122 1193.359741 1198.988647 1209.368408 1199.525635 1203.949219 1204.17627 1196.485718 1190.930908 1188.046753 1187.040283 1184.487915 1182.098877 1179.814575 1176.633179 1173.048584 1168.779663 1164.875244 1160.087524 1157.694214 1159.113647 1160.533569 1161.535645 1163.026001 1165.570557 1168.802368 1171.026489 1171.593262 1171.446655 1171.144531 1169.989746 1169.671753 1168.502563 1164.458618 1159.268555 1159.172363 1161.303467 1162.581543 1163.862427 1164.239868 1163.455688 1161.665283 1158.66333 1154.23877 -1312.472778 1291.28833 1275.263916 1256.255615 1252.885376 1256.353394 1264.766602 1282.992676 1307.003906 1323.257812 1344.834961 1363.704346 1384.354004 1407.003418 1403.545166 1393.508545 1388.629761 1381.093018 1375.628784 1388.578125 1403.032227 1413.880127 1419.305908 1424.182617 1430.235229 1437.213745 1447.101074 1455.712402 1463.141113 1474.744873 1482.824341 1488.94397 1494.848267 1501.692993 1510.698975 1521.950073 1524.473633 1521.812988 1512.069336 1510.78064 1509.581543 1506.439453 1500.101807 1497.920288 1501.417725 1500.615967 1496.685913 1492.855591 1488.819458 1483.562622 1479.205444 1476.548096 1474.891357 1473.676514 1472.854492 1471.9104 1470.150391 1467.58313 1462.199219 1452.35791 1445.607788 1439.728149 1432.541748 1424.427246 1416.059204 1412.247681 1408.794434 1403.907104 1395.684692 1389.406982 1388.336304 1388.9823 1394.425049 1399.914551 1403.667603 1405.040161 1405.683105 1407.308838 1408.345215 1407.20166 1402.567139 1397.637817 1393.606934 1388.275513 1381.771118 1370.291016 1362.030396 1356.989014 1363.922119 1366.949585 1376.049927 1382.879517 1392.588989 1400.373413 1410.392212 1420.097412 1427.511719 1431.818848 1434.467896 1435.352539 1434.437256 1432.325806 1430.353027 1428.703979 1427.856445 1426.916138 1421.025391 1415.022095 1412.785034 1404.547485 1392.197876 1374.982666 1358.527222 1345.390259 1347.931152 1356.44812 1360.212402 1359.749268 1358.682495 1357.712402 1355.595215 1346.697266 1334.745361 1328.844116 1325.414429 1316.95752 1313.144409 1308.063965 1303.851074 1298.101562 1298.899048 1300.69104 1302.166748 1302.327637 1300.425293 1296.648315 1293.314575 1291.618896 1290.224976 1289.296753 1290.563354 1297.967163 1307.721313 1315.071533 1324.852539 1333.98938 1340.655029 1342.132812 1336.37207 1326.223389 1322.753784 1319.733521 1315.922241 1310.102417 1310.540405 1314.324341 1321.435669 1328.965942 1331.285645 1332.419922 1337.744751 1348.626221 1360.415771 1368.439697 1369.297485 1368.214844 1367.314087 1365.709106 1359.932495 1360.150513 1368.483887 1380.109863 1381.122803 1381.394043 1381.317383 1381.238647 1380.004028 1372.212402 1363.968994 1359.551392 1358.937256 1359.653687 1365.670776 1368.207764 1367.601929 1365.338501 1352.394531 1343.58252 1332.025757 1323.883667 1318.911987 1325.607056 1338.714722 1354.479248 1368.240479 1377.578735 1387.73877 1391.303711 1389.909546 1387.797729 1385.826172 1383.047852 1380.37854 1379.470337 1377.840454 1375.043335 1371.209717 1367.884155 1362.664795 1360.842041 1367.041992 1374.353516 1381.228271 1387.333984 1392.293945 1396.250366 1397.642578 1398.575806 1398.745605 1398.079834 1397.175903 1395.658081 1394.980957 1393.810547 1391.186768 1383.549194 1373.803955 1363.010498 1353.23584 1350.8125 1341.688721 1339.963379 1342.630981 1346.629517 1350.026489 1354.342407 1357.829224 1353.598267 1348.528687 1345.949829 1342.27356 1332.851562 1316.849243 1309.19043 1295.958618 1297.58667 1300.823608 1301.542358 1302.73999 1307.544312 1313.481567 1319.381836 1326.228027 1333.103271 1336.795044 1329.947021 1329.135132 1333.854248 1324.022217 1305.100952 1291.131104 1287.260132 1283.521729 1280.34436 1278.25647 1286.075562 1291.210815 1291.931641 1291.705933 1290.547974 1290.581665 1292.96814 1298.38208 1304.998169 1310.957275 1317.039429 1321.264893 1324.137573 1325.988525 1326.113892 1324.064697 1320.105957 1315.970947 1312.012573 1307.328003 1290.921509 1300.325195 1308.867432 1313.311035 1317.588989 1322.229248 1323.101807 1319.835693 1314.542236 1308.033569 1304.592651 1301.530762 1295.742798 1294.736084 1293.609985 1292.518555 1293.907104 1294.526855 1294.005737 1291.928467 1289.633057 1294.389771 1293.811523 1282.192383 1273.910034 1273.589844 1279.799927 1281.695068 1278.719604 1274.970337 1271.675415 1268.019531 1266.673218 1268.161377 1267.863647 1265.049805 1262.809204 1261.516235 1259.519165 1255.360718 1253.139893 1252.303101 1258.733154 1266.997437 1277.775146 1278.560303 1274.944946 1269.745361 1268.374268 1267.552734 1266.899536 1266.257446 1265.948608 1265.580444 1265.25415 1265.125977 1264.859375 1264.380493 1263.726929 1262.73291 1261.333008 1258.811523 1257.24353 1257.460571 1258.075684 1257.347534 1254.948242 1250.925049 1246.513794 1242.592407 1246.246704 1249.067261 1250.621704 1250.771484 1250.452881 1249.835449 1249.345215 1248.412476 1247.493652 1247.397339 1248.494751 1249.75415 1250.967163 1252.278564 1254.023315 1256.309814 1256.935791 1255.919189 1254.208862 1252.443848 1251.343628 1250.075195 1248.219116 1246.548584 1245.289429 1244.653564 1243.176025 1237.921265 1237.425781 1240.386841 1243.650635 1244.411011 1244.505127 1241.828003 1237.128174 1231.730835 1232.155518 1234.690308 1237.143433 1239.140259 1241.401611 1242.684326 1243.340454 1245.207886 1247.493164 1251.61084 1256.515747 1257.092407 1256.919434 1256.595459 1255.204102 1252.70459 1250.401733 1248.094482 1245.922119 1243.659668 1242.967407 1242.713257 1242.354858 1242.388184 1243.116821 1243.32312 1242.839355 1241.22583 1240.130127 1239.487915 1238.689697 1237.789673 1236.737671 1235.87561 1235.793213 1235.609985 1235.19519 1234.244385 1232.559692 1231.012573 1230.857788 1230.714722 1230.315796 1229.828491 1228.949707 1227.280884 1224.896973 1222.306274 1220.035889 1218.615845 1217.294556 1216.043457 1214.623535 1213.300903 1212.159424 1211.346191 1211.326172 1211.431152 1211.34729 1211.277466 1211.153198 1211.083008 1211.256104 1211.349121 1211.261841 1210.952637 1210.393555 1209.41748 1207.997437 1207.354736 1207.994629 1208.453125 1208.431396 1207.944702 1207.010498 1205.960571 1205.077637 1204.193237 1202.704712 1202.026123 1201.417236 1200.784302 1200.112061 1199.411865 1198.705811 1197.983398 1197.441772 1196.737061 1195.610596 1194.122192 1192.974854 1191.588989 1191.586304 1193.359009 1194.549805 1195.776611 1196.575684 1197.275146 1198.230591 1199.674194 1201.341309 1203.227905 1205.348511 1207.304565 1208.717896 1209.5802 1210.178833 1211.283325 1213.102783 1215.125977 1217.238403 1218.708862 1221.351318 1225.236938 1229.054932 1232.949951 1236.080322 1239.365234 1243.687744 1253.03894 1264.310425 1273.372437 1279.06958 1277.510498 1275.433105 1273.474121 1277.077271 1283.245117 1285.652588 1287.652954 1287.60791 1287.067017 1286.03064 1284.283569 1281.644653 1277.702759 1274.217407 1271.596436 1268.949097 1266.596924 1264.015747 1261.064209 1257.944092 1259.086304 1260.899292 1261.505493 1260.96521 1259.76062 1257.808838 1257.330444 1257.5448 1256.740234 1258.285278 1259.802246 1259.825073 1259.110474 1257.880859 1256.943726 1253.401123 1249.548096 1246.283813 1242.703369 1238.175659 1234.510132 1230.153687 1224.772583 1220.25708 1217.625732 1217.793335 1218.651489 1218.611206 1215.229614 1209.351562 1203.970947 1198.547607 1195.569702 1193.970581 1192.658691 1192.507324 1196.645996 1195.102051 1197.114868 1194.473755 1191.481201 1186.94397 1182.803467 1182.848877 1180.465454 1177.814575 1175.185669 1172.278809 1168.669189 1164.802002 1161.317993 1159.542847 1161.153564 1162.88147 1164.144165 1165.544678 1166.863525 1169.284424 1172.690308 1174.972412 1176.289307 1178.569824 1179.905762 1178.959473 1181.365112 1177.941772 1172.830078 1167.933838 1167.243774 1170.063599 1172.962646 1173.87207 1174.071777 1173.314087 1172.124756 1169.512695 1165.153198 -1329.78772 1311.402466 1288.939087 1268.217896 1264.137573 1265.083252 1263.545532 1283.852173 1307.133667 1319.125366 1339.042114 1360.437744 1375.963989 1404.182373 1412.626831 1405.939819 1399.789429 1394.391235 1385.226929 1392.386475 1409.35791 1419.061523 1425.098267 1431.070679 1436.315918 1443.488281 1452.495361 1460.361206 1470.435547 1481.677002 1490.346802 1497.632935 1504.302124 1509.620117 1520.994751 1531.014526 1533.60022 1530.531494 1525.036987 1522.00061 1519.607178 1516.822021 1511.682739 1508.325073 1512.01709 1512.298828 1507.522339 1501.995483 1496.009399 1487.864258 1484.14856 1481.800171 1479.552002 1477.369385 1476.696289 1476.139526 1475.377563 1472.638306 1464.896118 1453.01123 1444.317993 1437.116333 1430.654297 1418.59314 1412.458374 1408.782715 1405.220337 1400.859985 1394.822144 1390.178833 1387.849487 1387.243164 1389.050049 1392.865845 1396.539062 1398.717773 1399.35791 1399.972046 1400.360352 1399.296143 1396.567993 1393.375732 1390.060181 1385.349487 1380.111206 1369.620361 1362.181641 1357.91272 1370.890869 1378.766113 1379.231201 1377.02002 1387.014893 1393.679565 1401.422607 1420.819458 1429.80188 1434.630249 1438.015625 1439.44873 1438.254883 1435.708496 1433.539795 1431.678711 1430.095947 1428.219849 1417.413574 1403.567017 1405.020508 1401.566772 1388.374756 1370.61084 1357.136719 1342.532593 1338.829102 1341.379517 1344.175415 1346.648682 1345.811401 1345.653442 1350.581177 1356.023804 1349.713989 1342.846924 1334.336914 1324.432007 1314.967041 1306.601196 1299.763428 1301.332886 1304.306152 1306.392944 1308.346558 1308.922119 1308.586182 1305.30603 1299.242676 1294.321655 1291.693359 1290.433838 1290.76709 1296.306519 1304.678467 1311.399536 1319.112061 1331.209473 1343.346313 1350.22522 1347.214722 1332.58374 1327.478882 1324.38501 1321.236206 1318.171997 1315.008057 1313.411621 1313.065918 1314.812744 1318.933105 1324.954712 1333.466431 1342.715698 1351.204834 1358.563354 1362.191772 1362.154663 1359.685303 1354.785522 1351.790161 1358.734863 1369.498169 1378.74585 1380.640991 1381.139038 1381.157349 1380.912842 1381.156982 1376.713501 1366.526123 1354.068359 1353.820312 1353.946411 1361.817871 1365.026733 1363.198364 1356.385986 1345.69812 1336.081177 1326.720093 1320.720459 1324.828369 1334.37793 1345.911133 1362.080933 1373.078491 1383.63269 1392.858032 1395.133911 1394.373047 1391.046509 1388.370605 1385.963135 1383.22998 1381.698364 1379.909302 1376.165649 1370.478638 1366.229736 1361.925171 1363.104858 1367.511353 1375.742432 1382.814453 1389.766357 1397.138672 1403.107422 1403.838867 1403.376587 1402.506592 1401.303223 1400.50415 1398.760742 1396.713501 1393.412598 1388.442993 1380.361694 1375.433228 1370.427246 1365.265747 1356.377686 1347.391968 1348.281128 1351.474854 1353.337158 1360.57666 1369.125488 1359.670532 1350.18457 1341.60376 1335.821533 1327.167847 1320.120483 1309.731323 1300.192139 1303.178467 1307.084961 1307.463623 1306.134033 1304.051147 1310.574097 1317.151245 1325.017944 1332.59314 1341.459839 1345.075439 1339.281494 1339.974854 1336.910034 1322.730225 1303.987183 1291.783203 1288.029419 1284.749023 1281.659546 1277.82019 1294.373657 1298.949951 1297.918823 1295.454712 1292.579346 1291.494507 1293.224365 1300.208862 1306.167847 1312.674927 1319.985474 1327.532349 1332.555298 1337.02832 1338.169312 1333.598755 1328.969116 1322.064209 1315.878296 1310.446411 1295.956299 1301.111572 1311.521606 1318.059204 1322.261108 1327.611206 1328.297852 1320.969849 1315.200928 1309.778564 1306.939941 1303.51416 1299.983521 1298.64502 1298.182495 1298.406372 1301.125732 1304.470459 1303.619385 1298.50647 1294.237183 1292.727173 1286.523193 1277.8479 1274.312988 1281.696045 1285.210083 1286.149902 1283.165649 1279.055786 1273.706177 1268.193359 1269.411743 1272.135254 1272.237305 1269.574463 1269.84668 1268.970825 1264.369507 1261.476196 1260.807251 1257.431274 1254.995605 1260.334595 1266.954834 1276.64978 1280.162354 1275.344482 1271.95752 1269.053589 1267.732788 1267.236206 1267.15918 1266.94043 1266.604004 1266.257812 1266.071777 1265.765137 1265.122314 1264.202881 1262.965454 1261.432373 1260.047607 1259.543091 1259.274658 1258.505005 1256.394775 1251.486206 1245.452393 1244.238281 1248.497559 1252.315796 1253.428711 1252.981201 1252.072876 1251.416138 1250.903564 1250.662109 1250.379639 1250.372925 1250.966064 1251.716553 1252.832397 1254.269287 1255.857544 1257.185669 1257.51062 1257.136963 1255.938477 1253.923584 1253.296753 1252.596802 1250.948242 1248.920898 1247.594849 1246.156616 1244.932861 1242.313354 1237.862549 1241.252808 1245.008423 1245.782715 1245.964478 1244.340454 1238.279663 1230.991577 1232.813599 1235.801514 1238.930664 1241.661133 1243.888062 1245.178833 1246.537354 1248.954346 1251.657471 1255.274902 1257.388672 1258.214844 1258.422119 1258.146118 1257.105835 1255.272217 1253.234253 1251.130737 1248.597412 1245.764648 1245.075195 1244.917236 1244.46582 1244.751099 1245.220093 1245.239258 1244.768433 1243.312622 1242.257935 1242.266968 1241.507324 1240.694458 1239.559814 1238.518311 1238.200195 1237.972046 1237.37561 1236.34668 1234.644165 1233.130493 1233.237061 1233.065918 1232.742432 1232.398071 1231.394531 1229.770874 1227.292358 1224.361694 1221.627197 1219.632324 1218.332764 1217.070801 1215.794067 1214.881104 1213.85083 1213.237305 1212.922119 1212.72229 1212.589844 1212.314453 1212.21106 1212.194336 1212.278442 1212.310059 1212.170898 1211.833252 1211.104614 1210.344604 1209.346191 1208.87085 1209.023438 1209.269897 1209.251099 1208.86731 1207.961304 1206.947754 1205.958008 1204.910522 1203.584717 1203.037231 1202.41748 1201.798096 1201.174805 1200.523315 1199.640259 1198.801514 1197.722656 1196.449097 1195.197998 1194.982422 1195.186279 1195.011353 1193.274048 1192.297974 1192.162354 1193.34436 1195.32312 1195.954468 1197.458618 1198.602539 1200.194946 1202.131714 1204.365967 1206.274048 1208.099731 1208.778564 1208.985474 1209.558228 1211.819336 1214.105469 1216.10376 1218.12439 1220.505493 1223.939941 1227.458618 1231.147095 1234.415161 1237.294434 1240.814941 1245.526733 1252.351562 1258.549316 1263.282715 1264.605103 1264.06958 1263.618042 1267.608643 1279.284912 1286.995483 1291.699341 1291.675903 1290.738647 1289.231079 1287.074951 1284.639526 1281.864502 1278.556274 1274.897583 1271.152832 1267.899292 1266.092651 1264.620239 1262.976807 1262.77356 1263.361938 1263.832275 1263.927368 1263.324341 1262.396729 1261.636475 1261.201294 1260.772339 1260.981201 1261.304443 1261.081787 1260.178589 1259.021729 1257.32605 1254.149902 1251.532715 1248.428467 1244.550171 1240.762207 1235.937256 1230.902466 1227.551147 1223.611938 1218.543945 1207.389893 1204.445435 1204.60498 1200.216919 1193.66272 1191.942871 1193.940063 1194.464722 1194.252563 1192.699097 1193.189331 1194.876221 1195.060547 1187.133057 1184.761353 1184.599609 1182.845337 1180.702515 1179.226685 1176.947876 1174.35376 1171.472534 1168.211548 1164.706665 1161.832275 1162.22522 1163.249878 1164.641724 1166.366577 1167.551147 1168.920166 1169.731323 1172.185547 1177.158203 1179.17688 1180.184937 1183.837524 1186.146851 1185.764771 1186.534058 1182.999268 1179.098755 1177.09375 1176.571045 1178.045288 1179.256348 1180.408813 1180.738037 1178.670654 1176.846436 1175.609741 1172.53894 -1340.050171 1320.124878 1297.988525 1276.472046 1274.739136 1283.517578 1282.490234 1275.46106 1292.202515 1310.773193 1328.331299 1353.355591 1370.851318 1397.279541 1417.901611 1418.140991 1412.825562 1405.671631 1398.298462 1396.174072 1413.136475 1421.657837 1428.99646 1436.591187 1442.443359 1449.434692 1456.90979 1465.569824 1477.187256 1487.52002 1497.10022 1506.285522 1513.925537 1520.053955 1531.1604 1538.730835 1539.436768 1538.753906 1535.624878 1532.803589 1529.343506 1525.89502 1522.141846 1519.847412 1525.152344 1527.400635 1522.043579 1513.146851 1504.168945 1493.865845 1488.190308 1487.123047 1486.073364 1483.5802 1481.658936 1480.257935 1479.251221 1477.087036 1467.482788 1453.761597 1443.730713 1436.261719 1430.480591 1419.068237 1411.851807 1407.04248 1402.048218 1398.414307 1393.546753 1389.329468 1387.758301 1386.814697 1386.691528 1387.488892 1389.166016 1391.174683 1392.47998 1393.158447 1393.223145 1392.17334 1390.156616 1388.173218 1385.30481 1381.315063 1376.071167 1367.309814 1362.21582 1359.227417 1373.836304 1385.308472 1392.624268 1398.242065 1399.92041 1395.853271 1406.987915 1422.75 1431.765259 1438.275879 1441.160278 1441.140991 1439.975586 1438.400146 1436.652588 1433.936035 1430.098877 1418.408203 1404.652344 1392.039307 1393.149048 1403.003052 1399.517578 1384.94873 1373.480957 1360.262695 1346.417114 1339.278198 1337.774048 1335.106445 1334.671021 1333.905884 1337.342651 1340.824463 1344.034912 1344.054565 1342.690186 1331.630493 1313.833252 1304.445312 1301.045898 1305.454468 1308.758179 1311.835083 1314.208374 1315.654663 1314.987427 1310.917114 1304.62854 1297.131836 1292.53894 1291.26123 1291.504883 1296.534668 1303.52356 1311.071167 1318.397583 1328.573975 1340.370361 1352.773315 1357.227539 1344.001343 1335.920532 1329.149658 1326.219727 1323.378418 1320.16333 1318.291382 1317.711182 1317.143311 1316.129028 1316.743164 1327.524414 1334.852417 1342.010376 1345.570679 1349.254761 1350.253174 1348.895142 1349.062256 1352.626343 1359.826294 1368.226562 1374.87146 1377.521484 1378.984375 1379.644165 1380.097046 1379.968628 1376.759399 1367.297119 1357.257446 1351.259155 1352.397827 1356.107544 1355.063843 1352.664551 1346.335571 1335.743652 1327.378052 1322.794067 1323.483154 1332.44458 1341.173706 1355.088013 1367.575317 1377.901978 1387.828857 1395.631958 1399.975952 1399.58728 1395.224365 1391.242554 1388.569946 1385.605225 1383.098267 1380.79541 1376.140015 1367.797852 1364.886963 1366.867554 1365.644531 1367.448975 1375.618042 1382.912964 1390.36145 1400.057861 1406.084351 1408.192871 1408.226685 1406.978516 1405.583618 1403.512939 1401.474121 1399.314941 1395.497925 1391.762329 1390.705566 1386.424438 1381.371216 1370.264404 1363.463013 1363.57019 1360.910767 1359.76123 1359.174805 1361.189209 1361.999512 1356.0 1345.687622 1336.462891 1328.389038 1320.756592 1311.809082 1301.858765 1306.099121 1310.905273 1314.131836 1315.664917 1315.721069 1312.968018 1314.44165 1321.001953 1328.091431 1336.37146 1344.638672 1352.689697 1349.140503 1346.776855 1341.383057 1321.609131 1305.219849 1292.578003 1289.335938 1285.27478 1281.651245 1278.404419 1297.074829 1307.357788 1306.313599 1302.473267 1297.303589 1292.511353 1299.729858 1304.584473 1307.130859 1313.827637 1321.690796 1331.38147 1337.402222 1344.086548 1345.601196 1340.068359 1334.490356 1327.9552 1319.135254 1312.731567 1301.898071 1306.650269 1317.692993 1324.189087 1328.594727 1331.889526 1331.839355 1323.464844 1315.579956 1311.828979 1307.779541 1304.321533 1302.719604 1303.12915 1303.293945 1303.59668 1307.790283 1310.725464 1308.434326 1304.211548 1296.788086 1289.561279 1282.149902 1276.693726 1283.188354 1286.759277 1289.626953 1292.263184 1288.660278 1280.629639 1277.039795 1274.636719 1275.350952 1277.045166 1277.877686 1277.222534 1275.065552 1269.350586 1267.441528 1269.349365 1269.866821 1266.302979 1259.972168 1256.445312 1261.352417 1265.796753 1281.939331 1280.832031 1277.222778 1273.295288 1269.387207 1268.777466 1268.746948 1268.512695 1267.925537 1267.576538 1267.329346 1266.922607 1266.491821 1265.620728 1264.886597 1263.804565 1262.5 1261.37793 1260.583374 1259.15979 1256.865845 1252.450317 1246.96582 1245.588745 1252.759155 1256.369141 1256.053101 1254.88501 1253.713745 1252.863281 1252.721436 1252.789185 1252.612915 1252.565674 1253.04187 1253.622437 1254.45874 1256.269653 1257.129517 1257.976807 1257.895264 1257.480957 1256.182373 1254.863525 1255.708984 1255.348267 1253.787231 1251.463135 1249.014404 1247.197876 1245.730347 1244.532104 1240.066528 1240.675781 1245.390015 1246.445312 1246.651001 1245.596436 1239.813599 1231.981689 1232.422607 1236.387207 1240.629272 1243.869385 1246.261719 1247.940063 1250.197998 1252.410767 1254.261719 1256.671997 1258.000488 1259.053711 1259.446777 1259.349487 1258.544556 1257.081421 1255.93103 1254.041748 1251.621338 1249.369507 1248.003906 1247.246826 1246.969116 1247.067505 1246.982056 1246.511841 1245.699951 1244.024902 1244.244141 1244.908325 1244.193481 1243.177979 1241.91748 1240.789429 1240.353271 1240.467407 1240.209839 1239.33728 1238.0625 1236.766968 1236.455444 1236.031494 1235.764282 1235.212402 1233.958496 1232.228516 1229.942627 1226.792358 1223.585327 1221.111816 1219.317749 1218.016235 1217.113525 1216.204468 1215.315796 1214.725708 1214.299927 1213.961426 1213.739868 1213.362427 1213.299683 1213.184204 1213.307373 1213.28418 1213.121338 1212.818359 1212.245117 1211.633545 1211.116821 1210.676636 1210.434814 1210.244751 1210.03894 1209.510376 1208.735107 1207.78064 1206.570068 1205.58667 1204.536621 1204.120972 1203.558105 1202.999023 1202.346558 1201.665161 1200.862671 1199.887451 1198.296631 1195.71521 1195.599854 1196.5979 1197.017578 1196.814453 1195.747559 1194.546997 1193.541016 1193.009277 1193.135864 1195.107544 1196.203003 1197.047729 1198.875854 1200.870483 1203.007568 1205.203003 1206.979492 1207.16394 1207.140869 1207.492065 1210.730957 1213.098145 1215.062744 1216.931396 1219.092041 1222.078979 1225.370728 1229.132324 1232.5177 1234.87854 1237.516113 1240.872925 1243.3125 1245.384888 1248.308472 1250.972168 1252.041016 1252.942261 1259.055176 1273.004883 1284.855591 1294.475952 1294.432861 1293.82959 1291.987915 1289.683472 1287.448486 1284.901855 1282.207153 1279.333984 1274.744507 1270.59314 1269.060913 1267.539185 1265.890259 1265.535522 1266.000977 1266.255737 1266.868896 1267.197266 1266.85376 1266.091309 1265.575317 1264.969116 1264.336304 1263.449219 1262.787109 1261.883789 1260.555908 1258.396851 1256.800415 1254.609741 1250.830933 1247.69519 1245.47876 1242.70874 1235.98877 1231.865112 1226.494995 1220.480469 1210.804443 1209.391235 1209.994141 1209.523926 1203.498169 1199.889038 1201.117676 1200.843628 1198.675171 1195.085205 1194.469971 1195.81604 1183.164185 1182.547241 1182.379517 1181.24707 1180.408325 1178.56897 1176.190674 1173.711304 1171.334961 1168.209229 1164.95166 1164.194214 1164.914429 1165.924194 1167.526001 1169.072754 1170.125 1170.88208 1173.969604 1177.364868 1181.563843 1183.802612 1184.213257 1183.884766 1187.238037 1190.024536 1190.729004 1190.494873 1187.230225 1186.197998 1187.621094 1188.353516 1186.249268 1185.225952 1185.188965 1184.681885 1181.25293 1180.902466 1181.003052 1177.865112 -1340.772583 1318.855225 1299.015259 1298.139282 1292.853516 1295.218506 1300.072388 1298.410522 1290.961914 1297.808228 1319.942749 1342.751709 1365.661133 1388.933838 1412.141357 1427.939941 1425.172485 1419.431885 1413.907715 1405.071289 1413.928955 1423.728149 1433.40564 1441.764648 1447.544922 1453.976318 1460.496582 1471.854736 1482.068237 1492.07605 1504.176636 1515.165039 1521.749023 1532.216187 1538.953003 1541.296997 1542.30835 1541.778931 1540.512207 1539.563965 1538.339355 1536.18689 1532.771729 1534.045532 1537.823486 1537.448364 1533.022705 1522.161011 1511.337646 1501.716064 1498.999878 1495.102295 1492.034546 1488.783325 1486.212769 1484.044067 1481.493408 1478.44397 1469.83313 1455.958984 1445.295776 1437.217163 1428.764282 1415.341187 1411.741943 1407.480225 1403.075073 1399.709106 1394.105591 1389.927612 1388.13916 1386.686279 1385.546997 1384.300903 1383.687988 1385.030029 1386.137817 1386.900146 1387.118042 1386.121582 1383.483398 1381.381836 1379.526245 1376.820068 1371.329224 1365.106567 1361.593018 1362.840698 1376.176758 1386.050171 1396.095581 1404.056396 1414.002563 1415.20105 1419.943359 1426.924805 1434.018921 1440.52417 1441.694824 1441.571777 1441.244019 1440.074097 1439.297119 1434.003174 1427.936768 1412.613281 1397.707153 1382.057983 1376.069336 1389.837769 1394.490356 1389.581665 1382.852295 1372.860718 1360.853638 1348.393188 1342.828979 1329.813599 1328.592407 1327.582397 1328.412964 1332.42395 1335.712891 1337.764526 1336.812744 1330.447876 1310.945068 1302.10083 1304.043213 1308.796021 1313.354614 1317.110107 1323.198364 1326.321289 1322.346802 1316.303467 1305.922363 1300.402954 1295.124146 1292.161743 1292.196045 1303.342041 1308.927979 1314.053101 1320.233887 1327.864136 1336.321777 1345.11792 1354.638794 1354.410034 1347.600342 1341.221802 1332.797119 1328.592896 1326.35791 1324.995605 1324.526001 1325.044434 1325.575317 1322.681274 1320.002197 1326.226318 1332.063721 1336.442871 1340.371948 1340.096069 1340.427734 1345.570312 1351.078857 1358.695679 1366.633667 1370.103394 1372.702026 1374.512573 1376.491943 1377.150269 1376.991699 1373.410889 1367.008423 1358.736572 1350.51001 1341.646851 1346.787354 1347.138672 1343.006592 1333.162964 1326.962036 1323.352539 1325.811157 1331.186523 1339.70813 1349.675903 1360.69751 1370.840332 1380.733521 1389.923462 1398.707764 1404.569092 1404.335693 1400.094604 1394.515503 1390.400146 1386.93811 1383.353271 1380.015137 1373.019043 1367.929688 1369.079468 1369.98999 1369.012695 1369.58606 1376.107056 1382.327759 1389.830811 1399.13623 1406.846069 1412.02124 1413.127319 1412.90918 1410.978516 1407.981079 1404.760254 1401.488647 1399.864502 1396.949951 1394.621094 1391.020752 1381.808105 1376.779175 1377.337769 1374.59082 1369.913086 1366.012939 1360.458252 1356.057251 1352.154053 1347.758301 1339.588867 1331.573853 1323.6698 1312.162476 1302.745117 1306.490601 1312.751099 1317.938965 1321.360107 1323.509766 1323.380371 1322.167969 1323.529785 1327.138184 1329.737793 1338.769531 1350.101318 1356.723022 1354.389648 1348.921509 1341.063354 1318.437622 1303.925537 1296.961914 1291.693726 1285.370483 1281.531006 1280.887817 1291.362915 1308.726929 1309.03418 1307.560303 1302.44519 1301.003906 1306.156006 1308.753052 1311.296631 1315.630127 1324.342285 1333.019043 1339.848999 1351.79834 1352.733643 1344.371704 1338.157104 1331.125488 1323.222046 1317.122803 1306.068115 1308.30603 1321.077881 1329.977905 1334.438477 1336.682617 1333.1521 1323.833618 1316.223511 1313.839111 1307.23938 1304.556274 1306.592285 1311.550415 1312.667358 1312.881104 1317.007324 1316.541382 1309.067383 1303.778076 1296.035767 1286.023682 1280.898071 1285.069458 1290.765747 1292.651978 1293.356567 1293.721313 1287.694824 1279.893921 1280.535889 1280.598755 1281.392578 1282.621216 1283.235474 1283.428589 1280.319092 1273.358521 1273.05188 1275.163696 1276.871704 1273.623291 1267.72876 1263.016113 1262.722534 1264.414551 1273.140137 1283.017578 1282.176636 1279.629395 1276.555054 1274.401001 1272.929932 1271.85498 1270.634033 1269.567993 1268.745239 1267.97644 1267.360352 1267.015625 1266.74939 1266.06897 1264.686279 1263.300415 1262.012451 1260.206665 1257.403687 1254.277344 1249.317261 1249.675537 1256.627563 1258.022949 1257.55188 1256.811646 1255.124023 1254.16626 1254.421143 1254.895142 1254.710693 1254.360474 1254.640137 1254.999878 1256.188599 1257.37915 1258.354492 1258.462402 1258.102783 1257.578491 1256.235596 1255.596069 1256.52356 1256.60498 1256.177368 1253.433228 1250.494263 1248.310425 1246.777344 1245.338867 1242.137085 1240.278442 1245.119385 1246.540405 1246.912231 1246.69812 1243.032959 1235.673462 1231.270386 1235.558105 1241.006104 1245.235107 1247.883789 1250.666382 1253.846069 1256.527344 1257.103271 1258.228638 1259.234131 1260.126587 1260.5896 1260.516479 1259.97168 1258.871948 1257.794556 1256.768555 1255.157593 1252.890991 1250.913086 1249.94873 1249.374023 1249.100586 1248.713379 1248.066895 1246.824707 1245.006836 1245.361206 1246.4552 1246.030396 1245.005493 1243.805054 1242.378052 1242.244019 1242.853516 1243.086792 1242.527588 1241.556885 1240.238281 1239.742188 1239.379395 1238.780029 1238.147217 1236.576416 1234.393555 1232.324463 1229.176025 1225.714966 1222.819824 1220.486206 1219.159912 1218.202759 1217.336914 1216.515137 1215.770264 1215.427856 1215.09729 1214.769409 1214.545288 1214.339722 1214.177856 1214.324951 1214.274048 1214.220703 1213.780396 1213.487183 1213.123535 1212.662354 1212.132812 1211.727295 1211.214966 1210.668945 1210.093384 1209.281494 1208.0802 1207.011841 1206.206909 1205.759644 1205.330933 1204.913086 1204.419189 1203.754395 1203.086182 1202.140015 1201.299561 1200.150879 1198.772949 1198.266602 1198.490601 1198.611816 1198.36853 1197.474976 1196.298096 1195.060791 1194.162231 1193.670654 1193.612427 1194.745972 1195.901001 1197.725342 1199.65625 1201.797974 1203.758057 1205.183594 1206.373901 1207.807373 1208.78479 1210.240723 1212.261108 1214.206421 1216.035278 1218.161499 1220.038574 1222.873779 1225.959961 1229.371826 1232.013428 1234.059204 1236.215332 1237.987915 1239.442017 1240.647583 1241.900269 1243.02063 1245.036621 1253.062012 1264.397827 1276.549561 1289.383057 1295.631104 1294.957886 1294.032715 1292.327515 1290.207397 1287.816162 1285.237061 1282.117432 1278.586792 1274.70813 1271.358521 1268.991577 1267.194824 1267.066284 1267.779907 1268.734131 1269.619019 1270.172119 1270.254028 1269.762817 1269.349976 1268.507324 1267.017334 1265.670654 1265.125122 1264.079468 1262.646851 1260.7677 1258.912109 1256.91333 1252.430054 1247.985962 1245.953979 1245.313843 1241.702271 1235.092163 1229.12561 1219.4646 1220.537109 1223.358521 1222.458984 1217.94458 1213.19397 1211.590698 1210.610229 1208.897217 1207.827515 1198.558472 1195.275513 1193.692139 1187.077515 1185.69458 1183.72876 1180.84729 1178.749023 1176.743286 1174.305786 1171.332886 1168.860107 1166.139526 1166.384277 1167.639771 1169.284058 1170.540405 1172.519043 1177.084229 1179.701294 1181.321899 1181.966064 1185.783936 1188.76001 1190.481079 1190.961304 1190.817627 1192.470825 1194.295044 1194.922363 1195.23291 1195.554443 1196.593384 1197.706055 1198.085205 1193.216675 1186.632568 1179.157104 1174.768311 1174.99292 1180.320435 1184.40332 1177.142456 -1343.268311 1321.481812 1313.618408 1313.671997 1310.891724 1305.342773 1311.18457 1311.989502 1310.830688 1307.51416 1314.310303 1339.557495 1358.604004 1382.348877 1405.997437 1425.451782 1433.962524 1428.100586 1424.636353 1419.406616 1415.441895 1425.793335 1436.890747 1444.611572 1451.472656 1457.511353 1464.548828 1477.006104 1485.46167 1496.763428 1510.633545 1519.913086 1529.626587 1538.819214 1542.962891 1545.106567 1545.49353 1545.095459 1544.252686 1543.477173 1542.203613 1540.051636 1538.799683 1539.311646 1539.325073 1538.667358 1537.930542 1526.943115 1515.772705 1508.925537 1507.578003 1502.981079 1497.546387 1493.668335 1489.809814 1486.495117 1483.171875 1479.183228 1469.691528 1456.187256 1446.261597 1438.313477 1430.075073 1418.462402 1413.277954 1409.377319 1405.869385 1403.605713 1398.380371 1392.337036 1388.912354 1386.609619 1385.282227 1382.408325 1378.421021 1379.018921 1379.991699 1381.366699 1381.640259 1381.079468 1378.300293 1376.155029 1375.197144 1371.642456 1366.466309 1363.849487 1361.243164 1370.567017 1387.438965 1396.246948 1403.712402 1408.430298 1417.337646 1425.095581 1429.706787 1430.615356 1435.479614 1439.332031 1440.591431 1441.275635 1441.555298 1441.134033 1438.297363 1431.789795 1424.352295 1406.570435 1392.416504 1376.734619 1365.563599 1371.629639 1376.56311 1377.850098 1377.835938 1372.602661 1365.535522 1353.854248 1347.300781 1340.482544 1329.906128 1325.236816 1323.625122 1323.442871 1325.937988 1330.081055 1329.144775 1323.967896 1313.516968 1302.696167 1307.280518 1312.566406 1316.940918 1325.193848 1331.862793 1332.379761 1328.028809 1318.148071 1311.2771 1305.329834 1299.574951 1293.623047 1292.841309 1304.202515 1309.376099 1317.291626 1319.427856 1323.253906 1330.005615 1336.585938 1345.442505 1368.500488 1358.933105 1350.350464 1344.447266 1337.947876 1333.108276 1331.381592 1331.575928 1332.53833 1333.298706 1332.46582 1330.408691 1326.864014 1325.560669 1328.180664 1331.811401 1335.151245 1338.668091 1343.237915 1348.62793 1354.61792 1360.596924 1364.467407 1366.300171 1368.042236 1370.990601 1373.783325 1373.760864 1371.263794 1367.495728 1360.732544 1350.407104 1340.169312 1339.259399 1337.876953 1329.785034 1326.610718 1324.550537 1331.414185 1335.598511 1342.766968 1351.718628 1360.430054 1369.037354 1375.91333 1382.719238 1390.171875 1401.557983 1409.471924 1409.548706 1402.131836 1396.48938 1391.570801 1386.874878 1382.214355 1377.631836 1371.89502 1374.075439 1374.567017 1374.138794 1372.887817 1373.721313 1376.211426 1381.122437 1388.298096 1397.267334 1407.013184 1415.894409 1416.879028 1416.790771 1416.031128 1412.807007 1409.003662 1405.589111 1403.766968 1400.708984 1398.036621 1390.043335 1388.998413 1387.432495 1384.731201 1380.517822 1373.738647 1366.003052 1354.656982 1343.376221 1340.617798 1336.203979 1329.883179 1325.373169 1319.802002 1303.5177 1307.114746 1312.869507 1318.537476 1324.930176 1328.978516 1330.973145 1331.205322 1329.839233 1333.084229 1335.685547 1337.915161 1343.81604 1355.076172 1357.461792 1355.127075 1347.271851 1337.140503 1320.072021 1305.953491 1298.667358 1292.214966 1283.763306 1280.487915 1282.497559 1288.561035 1302.136963 1311.765137 1312.320923 1307.146729 1303.647827 1307.945557 1311.413452 1314.001709 1316.098633 1325.94165 1335.514282 1343.439087 1356.246216 1353.661377 1347.70813 1341.879639 1331.227783 1325.505859 1321.311279 1311.515625 1309.198975 1322.428467 1332.960205 1339.053955 1342.890747 1336.910278 1327.325195 1320.803101 1317.21106 1313.61499 1309.449585 1315.197021 1319.106323 1320.035156 1320.704468 1320.693115 1309.627197 1302.260376 1295.636108 1289.565186 1285.406006 1285.095825 1292.575562 1293.614746 1293.236938 1292.531128 1290.854126 1286.96167 1283.167358 1284.322266 1285.335083 1286.469116 1287.400879 1288.012939 1287.358521 1284.716309 1282.459229 1278.93396 1280.33313 1283.530396 1280.46228 1271.376465 1265.940796 1265.735352 1265.519897 1266.217773 1278.227295 1285.32373 1289.046509 1284.697754 1280.714722 1278.621826 1276.659302 1274.758545 1273.040039 1271.554932 1270.182495 1269.395752 1268.977173 1268.478271 1267.824585 1266.40271 1265.091675 1264.054443 1262.615479 1259.677124 1257.387817 1250.549194 1255.032837 1258.485229 1259.706787 1259.938721 1258.825806 1256.453735 1255.213623 1255.802368 1256.868042 1256.762817 1256.586426 1256.248901 1256.437744 1257.618774 1258.716064 1258.99939 1258.848511 1258.313843 1257.49231 1256.122925 1255.633179 1256.185547 1256.489624 1256.387695 1253.713379 1250.73877 1248.527954 1246.932495 1245.491333 1243.061646 1240.562256 1244.183594 1246.20105 1246.893433 1247.255737 1245.986938 1240.061157 1233.036133 1234.134033 1240.250488 1245.344238 1248.57373 1252.493774 1256.365356 1258.138184 1259.137695 1259.972778 1260.784546 1261.629639 1262.068848 1262.039185 1261.437378 1260.665405 1259.661499 1258.515015 1257.053345 1255.099854 1253.338379 1252.168457 1251.554932 1251.181274 1250.61084 1249.871094 1248.925659 1248.030151 1247.971436 1248.012451 1247.511719 1246.459839 1245.246704 1243.716187 1244.195557 1245.091675 1245.394287 1245.070068 1244.460449 1243.656128 1242.903687 1242.5448 1242.333984 1241.798584 1239.970825 1236.787476 1234.041626 1231.206421 1227.851562 1224.544678 1221.891479 1220.033569 1219.0177 1218.234131 1217.340088 1216.710693 1216.25354 1216.006836 1215.693481 1215.514648 1215.275391 1215.186768 1215.158936 1215.241699 1215.176392 1214.952637 1214.919434 1214.502319 1214.068604 1213.508545 1212.844116 1212.172607 1211.543579 1210.686035 1209.548584 1208.351929 1207.171631 1206.929077 1206.96106 1206.654175 1206.224121 1205.743042 1205.124268 1204.301636 1203.464111 1202.728149 1202.255859 1201.927734 1201.646362 1201.428833 1201.195679 1200.591309 1199.362549 1197.903809 1196.339233 1195.251221 1195.72583 1194.793335 1194.126953 1194.654297 1196.137085 1198.572998 1200.59668 1202.448608 1204.148926 1206.219116 1207.794312 1208.322632 1209.945068 1211.51123 1213.180908 1215.098145 1216.939575 1218.553345 1219.825562 1222.16394 1225.441406 1228.217407 1230.444336 1232.467163 1234.05835 1235.210327 1236.441284 1237.851318 1239.393066 1241.800293 1247.243042 1257.11377 1266.627319 1275.15918 1282.702637 1289.752075 1294.956177 1294.404907 1293.19458 1290.819824 1286.968018 1284.022461 1281.052368 1276.845703 1272.983521 1270.590454 1268.31543 1267.746826 1268.94043 1270.137085 1271.15686 1272.11084 1272.939697 1273.192749 1272.971313 1271.587402 1268.710571 1268.185059 1267.784058 1266.289185 1264.969849 1262.896851 1260.353516 1257.569702 1248.964844 1243.766724 1243.50647 1242.115845 1237.62854 1232.000366 1229.496948 1225.062378 1228.625488 1233.25647 1231.245117 1225.415527 1221.456421 1219.624634 1219.771484 1219.821899 1213.710571 1205.994019 1197.475708 1192.980469 1189.785034 1186.516235 1183.171143 1180.770264 1178.036011 1175.53418 1173.353271 1171.403442 1168.887451 1168.375977 1169.491211 1173.155273 1180.520752 1181.526733 1184.09436 1187.529663 1188.785278 1189.370605 1190.156006 1193.150024 1196.199707 1197.507568 1197.677612 1196.425049 1198.210205 1200.985962 1202.41748 1202.814331 1203.198975 1204.220337 1202.650146 1197.835449 1182.384644 1169.004028 1164.381348 1160.703491 1157.253418 1161.437012 1163.219971 1160.344116 -1356.2052 1349.019409 1344.09082 1337.617676 1330.076782 1323.822754 1324.9552 1328.826904 1328.206055 1324.288086 1315.86377 1335.404297 1354.413208 1375.341187 1399.317749 1418.059692 1439.374756 1440.724609 1435.910767 1430.840576 1425.711548 1428.14917 1438.610107 1446.75769 1453.945923 1460.610474 1470.197632 1479.851318 1487.641479 1499.911987 1512.519287 1522.800293 1536.359741 1542.196533 1546.63855 1548.917114 1548.75354 1547.904175 1547.381348 1546.87854 1545.703125 1543.632935 1541.835693 1540.494385 1539.422729 1538.605347 1537.557007 1529.2677 1521.414795 1514.448486 1516.113892 1514.861572 1505.5 1498.023438 1493.018799 1487.699219 1483.227417 1478.726562 1465.118164 1454.981323 1446.224121 1438.252319 1431.940552 1424.416016 1415.07251 1410.973145 1407.691162 1405.197998 1400.932983 1392.689087 1388.980469 1387.194336 1386.842896 1385.345703 1382.484375 1379.459961 1377.87561 1377.844238 1377.582275 1377.605713 1376.890015 1375.498169 1374.238525 1371.955078 1368.377197 1364.836182 1361.708374 1373.581421 1393.458862 1404.433105 1414.870972 1418.286987 1422.002563 1427.73584 1429.830444 1430.578613 1432.474487 1435.216675 1438.297241 1440.129883 1441.574951 1439.649658 1434.196655 1427.313721 1419.300781 1410.25708 1404.176758 1389.393311 1372.396606 1363.131958 1367.073608 1368.976685 1366.208252 1362.668945 1359.740845 1354.357056 1346.635986 1340.237671 1328.608398 1321.340942 1318.109619 1315.422485 1313.283325 1317.082886 1321.286133 1319.341553 1310.634277 1304.68689 1312.442627 1318.205933 1322.064819 1327.880005 1333.24292 1334.350708 1331.253052 1324.915771 1319.047852 1312.346191 1303.811157 1297.57251 1292.936768 1295.858521 1305.36499 1310.113892 1313.102417 1315.559448 1317.079102 1326.377563 1335.720093 1358.893188 1369.587402 1361.494995 1352.675293 1346.435181 1341.515137 1339.206421 1337.990234 1337.780151 1338.456787 1338.401733 1337.334839 1335.181274 1332.870972 1331.891113 1333.216919 1335.10498 1336.764404 1339.540405 1343.559326 1349.724976 1353.286987 1357.736816 1362.377197 1364.786499 1366.818848 1371.168091 1371.15564 1369.617554 1368.223755 1362.033691 1350.948486 1339.706421 1333.16687 1329.04248 1327.158936 1328.824219 1334.902344 1338.76123 1343.425171 1350.399414 1358.410645 1365.680054 1374.767456 1382.935425 1390.531128 1395.606689 1403.72644 1414.372681 1412.412109 1402.950195 1397.158569 1392.015503 1386.158936 1379.71521 1376.536987 1379.471313 1380.150757 1379.684082 1378.433716 1376.947021 1375.712402 1376.381836 1380.004517 1386.893921 1395.428955 1405.066406 1415.790527 1418.355957 1418.654053 1418.479858 1416.392944 1412.854248 1409.769653 1407.397583 1404.462769 1402.643555 1402.085327 1396.489136 1392.60144 1386.283325 1379.104492 1371.044922 1360.213867 1343.945312 1335.509888 1329.533691 1324.576538 1321.498413 1318.773926 1311.025024 1308.38147 1313.293823 1318.758057 1326.520752 1331.47998 1333.757812 1335.090942 1336.058594 1337.80542 1340.688965 1344.471436 1347.679932 1352.659668 1357.16394 1357.265625 1354.194336 1344.444458 1332.315552 1319.806763 1308.641846 1298.625854 1289.075806 1281.625244 1281.920044 1282.846069 1288.605347 1300.789551 1314.893799 1318.572266 1313.458008 1310.234375 1311.839478 1314.83728 1317.668823 1327.027832 1331.976929 1343.016724 1350.35144 1356.644531 1354.70459 1350.730103 1344.999756 1333.989868 1327.526611 1324.279541 1317.666016 1311.847778 1323.467163 1335.748291 1344.044189 1346.072754 1342.143311 1331.463379 1325.873047 1321.401123 1318.979126 1315.391968 1315.372437 1317.82251 1320.44812 1322.119141 1311.461914 1300.011353 1293.064575 1289.583984 1287.347046 1287.004028 1286.807617 1292.609985 1293.038696 1292.597778 1291.584229 1290.423218 1289.169067 1288.01123 1288.969971 1289.860718 1291.469116 1293.123901 1293.475098 1292.202271 1290.883545 1289.764038 1289.898804 1291.669312 1286.765015 1280.497437 1270.289062 1268.685791 1271.500366 1271.155396 1268.603027 1266.471558 1281.955078 1293.060181 1295.115234 1292.175537 1286.019409 1281.861938 1279.202515 1277.032471 1275.234985 1273.614746 1272.527832 1271.735718 1270.875977 1269.877441 1268.194458 1266.544678 1266.696777 1266.303955 1261.662842 1256.468506 1253.763916 1258.56311 1260.91272 1262.38147 1262.383179 1260.982544 1258.744385 1256.804443 1258.41626 1260.208496 1260.778687 1260.65918 1259.815796 1259.576782 1259.816284 1259.936279 1259.684082 1259.17688 1258.362183 1256.983887 1255.751343 1255.044312 1254.709595 1254.641602 1253.740112 1251.819092 1249.650391 1247.712646 1246.075317 1244.604736 1242.797852 1240.822021 1243.503418 1245.582764 1246.834351 1247.211304 1246.601562 1243.980591 1236.501099 1233.056274 1238.344727 1243.077148 1247.236206 1252.378296 1256.625732 1258.566528 1259.950195 1261.265259 1262.33606 1263.294067 1263.859863 1263.783936 1263.258789 1262.392944 1261.217529 1259.862793 1258.0177 1255.865723 1254.305664 1253.755127 1253.495728 1253.247559 1252.483643 1251.665161 1251.087891 1250.640381 1250.549194 1250.313354 1249.514282 1248.581665 1247.175415 1246.170898 1246.472656 1247.113159 1247.194458 1246.908203 1246.274658 1245.760864 1245.31604 1245.083984 1245.031738 1244.796143 1243.369629 1239.653931 1235.818726 1232.633179 1229.488159 1226.047241 1223.320679 1221.400391 1219.89856 1218.999878 1218.051636 1217.310303 1216.901733 1216.723999 1216.481323 1216.278564 1216.150879 1216.162476 1216.118286 1216.249634 1216.33606 1216.333252 1216.195801 1215.929199 1215.437988 1214.821411 1214.000244 1213.319458 1212.447266 1211.460571 1210.289307 1208.60144 1207.503418 1208.347412 1208.155273 1207.842773 1207.484131 1206.976074 1206.303345 1205.487793 1204.496216 1204.107788 1204.16748 1204.398804 1204.614014 1204.974976 1204.721436 1203.290527 1201.549805 1199.766113 1198.124268 1197.192871 1196.855591 1196.22998 1195.045898 1194.565674 1195.606689 1197.716064 1199.476929 1201.525635 1203.585571 1205.47644 1207.071411 1208.038574 1209.289307 1210.719971 1212.194458 1213.736328 1215.403931 1216.871826 1217.915649 1219.001953 1221.434204 1224.255371 1226.766602 1228.520508 1229.894287 1231.43335 1232.669556 1234.205566 1236.371582 1238.958862 1242.502075 1249.428833 1257.097046 1264.53479 1270.353882 1275.123535 1279.547852 1287.210571 1292.320312 1290.614868 1285.675293 1283.221436 1280.214111 1275.306641 1271.92395 1270.828735 1269.307007 1268.091187 1269.465088 1270.644897 1272.038818 1273.584961 1275.37561 1276.677368 1277.435181 1276.133423 1273.600586 1271.870605 1270.773682 1268.919312 1267.437378 1265.187866 1261.8573 1257.981689 1251.607422 1244.2229 1242.247437 1241.019409 1236.947266 1232.961792 1232.645752 1230.674194 1233.01709 1235.582153 1234.520386 1230.54126 1228.16748 1227.364136 1226.942505 1224.266479 1216.567261 1205.947388 1197.725342 1193.723511 1190.337036 1186.227539 1182.883667 1180.507324 1178.145264 1174.496216 1171.782104 1169.801758 1171.276245 1175.516113 1178.565308 1186.200684 1190.186279 1191.127441 1192.674561 1195.590698 1195.566406 1197.105591 1195.998291 1199.058594 1202.226807 1203.331055 1203.675659 1204.7146 1206.761841 1209.667969 1211.252319 1212.848877 1213.799438 1211.465576 1201.637329 1185.525269 1171.642944 1161.329224 1154.517822 1148.682861 1144.905518 1145.684448 1147.194336 1146.854614 -1368.204224 1369.32605 1365.968262 1359.092773 1351.914795 1346.050903 1341.797241 1343.166138 1342.308472 1340.987671 1337.076904 1332.274536 1351.05542 1369.399048 1391.90271 1416.109131 1435.689575 1444.716553 1446.290283 1442.813599 1437.704468 1435.293579 1439.027832 1448.610718 1456.026978 1463.316528 1474.796997 1481.3573 1488.822632 1501.731934 1512.879517 1525.225586 1537.130005 1544.455322 1550.384033 1552.18811 1553.026733 1551.827026 1551.275024 1550.41687 1548.936035 1546.861572 1543.474487 1540.755981 1538.929932 1537.6604 1536.219238 1528.976562 1524.298828 1525.513062 1523.108154 1519.169067 1513.301025 1503.410767 1496.092529 1488.452515 1479.530029 1472.051636 1460.510864 1452.459717 1444.627197 1437.761353 1430.600464 1422.788574 1414.300171 1411.061768 1408.054932 1405.161621 1400.003052 1391.528198 1388.901733 1391.301147 1393.14917 1392.841064 1389.526855 1391.865601 1392.944946 1392.00415 1391.059692 1382.567749 1378.347168 1376.55896 1375.342163 1378.88916 1379.677856 1368.451416 1363.560547 1369.140991 1390.47644 1401.150269 1414.503052 1417.488159 1419.739868 1421.825806 1424.072266 1425.366821 1426.595703 1432.278442 1436.998657 1439.96106 1440.907715 1433.67395 1428.581177 1423.509521 1412.996216 1400.935791 1389.926758 1387.543945 1376.729614 1359.750366 1353.908936 1358.108276 1357.678711 1356.751953 1353.899658 1344.576782 1339.37561 1328.05957 1320.83728 1316.749023 1314.717041 1316.402222 1315.877686 1311.144165 1313.181274 1312.761963 1305.980835 1308.014526 1317.064819 1322.450562 1327.238892 1331.869263 1337.870117 1339.14624 1335.841675 1331.599731 1326.68457 1320.640259 1309.049683 1301.58374 1297.102539 1294.640137 1296.014404 1303.125366 1306.639404 1308.929321 1311.457764 1317.046143 1329.30835 1350.653931 1364.093384 1369.69751 1363.159668 1355.224854 1350.141602 1346.558594 1343.842529 1343.40564 1344.003784 1344.214844 1343.673096 1341.857788 1339.425415 1338.243164 1339.361206 1341.983154 1343.871582 1344.478149 1345.326538 1347.638428 1350.879639 1354.771729 1362.963013 1366.246216 1368.839966 1369.789551 1369.166626 1367.116089 1365.192383 1357.096924 1346.095947 1336.067383 1329.174194 1327.367676 1331.645874 1337.616333 1343.033813 1349.319214 1355.66333 1359.588257 1365.89978 1373.525635 1380.224243 1388.831909 1395.356201 1399.975708 1406.672363 1415.341309 1409.559937 1401.926025 1396.793457 1391.486084 1384.327759 1379.690308 1381.322876 1382.687622 1383.85022 1383.15564 1382.045288 1380.68811 1378.377808 1377.016846 1379.045532 1386.022583 1393.831055 1402.191772 1412.849121 1418.568604 1420.172241 1420.904053 1418.961426 1414.503662 1413.71582 1412.591431 1408.887207 1405.64502 1402.940674 1396.730225 1391.561768 1382.618408 1374.628418 1365.839233 1350.377197 1338.308472 1331.945068 1320.063232 1315.156494 1315.662476 1312.931274 1310.259277 1312.909912 1318.382812 1325.299072 1331.620361 1335.328979 1337.966797 1339.24939 1340.452026 1343.455688 1347.958008 1353.017578 1356.199951 1357.898926 1357.992432 1356.832642 1350.663574 1340.591919 1328.360107 1318.8302 1308.961548 1295.873535 1283.984863 1282.790649 1282.834839 1283.64624 1288.704346 1302.031372 1314.61792 1319.213379 1317.937256 1315.266846 1316.838867 1319.795288 1329.38623 1333.164917 1337.53772 1342.646362 1346.681152 1351.872314 1354.273315 1355.219604 1349.42627 1342.460083 1333.982178 1328.776733 1320.390747 1315.460693 1327.706421 1339.730835 1350.254761 1351.719971 1343.975098 1335.391724 1328.358521 1324.167236 1320.515015 1316.917236 1314.104248 1312.93689 1309.855225 1307.755859 1296.270264 1291.154297 1290.532471 1294.440308 1294.491089 1289.426392 1288.245239 1289.939331 1292.440063 1293.008545 1293.051025 1292.624512 1292.16272 1291.216553 1293.72998 1294.903198 1298.700317 1305.890137 1307.00061 1302.199219 1299.770996 1301.977051 1301.44458 1295.063354 1285.866577 1279.622559 1280.185425 1282.059082 1281.788574 1280.053589 1276.749268 1270.02478 1270.809692 1284.175537 1292.728638 1294.433716 1293.294556 1289.429443 1284.712036 1281.03894 1278.942383 1277.353882 1275.766602 1274.51709 1273.204834 1271.685547 1269.736694 1267.905884 1268.666748 1269.293701 1263.166016 1255.824829 1258.983765 1262.683838 1264.824707 1265.486694 1265.223267 1264.467163 1263.02002 1262.353516 1263.50647 1265.376709 1266.706787 1266.249634 1264.487915 1262.860352 1261.821533 1261.10498 1260.238403 1259.225586 1258.196899 1256.494751 1255.284058 1254.443604 1253.974854 1253.236816 1252.180542 1250.698364 1248.72937 1246.302856 1244.416992 1243.697754 1243.442383 1242.111694 1242.899048 1245.244263 1246.734131 1246.866577 1246.501587 1244.888916 1239.181641 1234.025513 1238.332886 1244.523071 1247.540649 1252.410278 1255.166382 1257.897827 1260.287964 1262.255615 1263.932007 1265.175415 1265.93811 1265.827515 1265.174072 1264.121582 1262.657593 1260.948975 1258.697266 1256.193726 1255.039429 1255.228638 1255.695068 1255.40271 1254.301392 1253.442383 1252.888062 1252.763306 1253.024902 1252.945435 1252.031738 1250.780762 1249.749512 1248.89856 1248.804321 1249.000854 1249.003906 1248.583008 1248.216309 1247.821045 1247.323608 1246.879028 1246.361694 1245.787109 1244.77124 1241.035156 1236.929565 1233.369751 1230.267212 1227.204834 1224.250488 1222.3396 1220.723389 1219.4375 1218.458496 1217.894409 1217.555298 1217.344604 1217.156616 1216.946045 1216.895142 1216.986694 1217.28125 1217.265747 1217.524414 1217.605835 1217.542236 1217.350098 1216.845215 1216.093018 1215.364502 1214.515381 1213.658447 1212.658569 1211.532715 1210.372192 1209.61792 1209.517578 1209.403198 1209.212158 1208.773315 1208.194702 1207.49939 1206.489258 1205.519775 1205.291992 1205.752563 1206.387207 1206.904175 1207.667603 1207.448853 1205.862305 1203.766113 1201.903809 1200.310181 1199.042236 1198.28418 1197.242065 1195.63916 1195.234375 1195.160645 1196.717285 1198.748779 1200.654297 1202.862549 1205.200928 1207.642456 1207.943115 1207.615479 1209.84021 1211.168579 1212.307007 1213.714966 1215.025024 1216.182617 1217.439697 1219.049927 1221.285645 1223.321777 1224.648682 1225.690308 1227.661255 1229.083984 1231.116455 1233.657471 1235.981079 1239.069092 1242.862061 1248.782959 1254.63147 1259.825928 1264.797363 1268.197876 1272.23291 1276.601074 1278.633545 1278.086792 1276.256714 1273.04895 1270.064941 1267.098389 1268.073242 1267.839722 1265.972534 1266.92688 1269.421875 1271.696533 1274.961548 1277.568726 1279.121338 1281.177124 1281.343262 1278.908447 1276.108398 1273.909912 1271.995239 1269.63147 1266.863037 1263.726074 1260.102051 1255.217651 1246.909668 1245.232178 1243.838623 1241.111938 1238.739502 1237.661011 1236.670776 1237.07605 1238.178589 1237.674927 1235.376587 1234.157959 1233.971924 1233.631836 1229.588013 1216.41626 1205.30835 1199.643188 1195.241577 1190.548828 1185.817871 1182.658936 1183.031128 1178.530151 1173.753174 1171.185303 1177.165405 1184.214478 1187.567261 1189.721558 1194.456909 1197.937744 1199.175415 1202.510498 1206.818115 1207.57666 1208.336304 1205.664429 1205.606323 1209.900146 1211.978882 1213.596558 1214.541138 1215.460938 1218.159668 1221.275635 1223.205933 1223.19812 1207.834351 1192.239624 1176.477539 1162.543335 1150.863403 1139.443359 1134.027954 1133.789795 1134.833252 1136.473389 1137.992798 -1380.860229 1383.921509 1381.721558 1377.514648 1373.002441 1364.189819 1357.349976 1358.148438 1360.095215 1359.239868 1355.185059 1346.27832 1348.651978 1365.178223 1386.50708 1412.435059 1431.463501 1447.681274 1454.373047 1455.286987 1452.774902 1449.175293 1443.803589 1449.933105 1457.916748 1466.052368 1475.915161 1481.780518 1489.015747 1501.307983 1511.126099 1523.697998 1536.558838 1544.033569 1551.304321 1556.313232 1558.157593 1556.508179 1554.363525 1551.981201 1550.062378 1547.522217 1543.204224 1539.477173 1536.827515 1535.456299 1533.882324 1530.695068 1531.96228 1538.214966 1530.262329 1523.30957 1515.102783 1505.451294 1496.196777 1487.822388 1474.508667 1464.152344 1456.569946 1449.155762 1442.623291 1435.836426 1426.411743 1419.685303 1413.832764 1411.76123 1408.267822 1404.081909 1400.059448 1396.517822 1399.830078 1402.536133 1403.407471 1403.463379 1403.605591 1403.064209 1403.013306 1401.766724 1396.442017 1389.850708 1381.602295 1377.333008 1377.985962 1386.021729 1386.732422 1377.91626 1365.49353 1364.338745 1381.733032 1392.291382 1398.94397 1405.744263 1408.463867 1407.565308 1408.738647 1418.674316 1427.623657 1433.522583 1438.81604 1440.728394 1436.046143 1424.11438 1417.64856 1417.446777 1411.74707 1404.098755 1387.795532 1376.830566 1367.793945 1357.727417 1347.547241 1347.919189 1349.132324 1347.244507 1341.624512 1334.948242 1328.96582 1321.915283 1316.854614 1317.964966 1320.959106 1322.471436 1321.497681 1318.172607 1308.627075 1308.255737 1306.164429 1312.318604 1319.867188 1325.335938 1330.666504 1337.383057 1342.863037 1343.421631 1340.631958 1336.311768 1332.106567 1325.489624 1315.713379 1303.875854 1301.127441 1299.144409 1296.46936 1296.883911 1301.367432 1303.208862 1306.903809 1313.422119 1324.662598 1341.364624 1353.258301 1365.350708 1368.958008 1367.456421 1360.719971 1354.437012 1351.586426 1350.416504 1349.893799 1349.525879 1348.886719 1347.512329 1345.228638 1343.897705 1344.431274 1346.717773 1350.098999 1353.27063 1353.730103 1355.137939 1356.861328 1360.215698 1365.509521 1367.761597 1369.263672 1369.497803 1367.566895 1362.832275 1356.142578 1350.356689 1340.92981 1331.378296 1329.124634 1333.514526 1339.220215 1345.505615 1352.418701 1359.161743 1364.465454 1367.203125 1375.43689 1385.114258 1392.137695 1395.813354 1401.368042 1405.50415 1409.836792 1410.657104 1406.85791 1401.120239 1395.835571 1390.365845 1382.933105 1383.322876 1385.382935 1386.708984 1387.819092 1388.201416 1387.164551 1384.886475 1381.550659 1377.942871 1378.268066 1385.024902 1392.236572 1400.722412 1409.925659 1416.932251 1422.050537 1424.473999 1423.018433 1419.861328 1417.86438 1414.860596 1409.189575 1403.573486 1396.96228 1391.285278 1383.12146 1374.566528 1367.125732 1355.313354 1340.86377 1333.296753 1322.889771 1323.66626 1329.050659 1329.994751 1320.317993 1314.771973 1315.684448 1322.601196 1329.970703 1335.265381 1339.598755 1342.658569 1344.29187 1347.088257 1351.263184 1355.480103 1359.182251 1359.99292 1358.9823 1357.369629 1353.815796 1346.847656 1336.140991 1324.642212 1316.914917 1307.178955 1289.767456 1283.061035 1283.75354 1284.0271 1284.411377 1287.839966 1298.394531 1311.761108 1317.843506 1319.531982 1319.444336 1320.047119 1324.381226 1329.651489 1332.238037 1333.5354 1335.103394 1337.491699 1340.728516 1344.19751 1348.503418 1348.710083 1344.945435 1342.616455 1336.296387 1328.790283 1323.012939 1332.874634 1343.11145 1355.771362 1355.325806 1346.212158 1337.400635 1329.705566 1326.067749 1322.68103 1319.769287 1315.801636 1308.443115 1302.18689 1292.038452 1293.269165 1295.621216 1301.687744 1310.053223 1305.602417 1292.828369 1290.610474 1291.882812 1295.608521 1297.787476 1299.007324 1299.716675 1298.459351 1297.67749 1298.689087 1300.943481 1304.474609 1312.459839 1313.746704 1310.794678 1309.540894 1309.004639 1307.037354 1294.039185 1283.480225 1282.223511 1286.945068 1289.08374 1289.429932 1288.738647 1285.345337 1277.925171 1274.864502 1279.338501 1285.782227 1292.0625 1293.725098 1293.843994 1291.876709 1287.975708 1283.955811 1280.999512 1279.158325 1277.587646 1275.954834 1274.167969 1272.243774 1270.68103 1270.422485 1269.719238 1263.209595 1257.760132 1265.213989 1267.943115 1268.456421 1268.439087 1268.171997 1268.056396 1267.633179 1266.188354 1267.430542 1269.128052 1269.353882 1268.974609 1267.492065 1265.317383 1263.463379 1261.895874 1260.570312 1259.302124 1257.865845 1256.368164 1255.193481 1254.199951 1253.432373 1252.600586 1251.574341 1250.272339 1248.458374 1246.003662 1244.358765 1245.036011 1245.584473 1244.649536 1242.584473 1245.630737 1246.985107 1247.380615 1246.550415 1244.950684 1239.817139 1234.60791 1239.478149 1245.586426 1250.433472 1253.363892 1255.418091 1257.449219 1260.946167 1263.237793 1265.300537 1266.996704 1267.914917 1267.671753 1266.982056 1265.755859 1264.228394 1262.275879 1259.677124 1256.92334 1256.283447 1257.13562 1257.614502 1257.295044 1256.02417 1254.798828 1254.08252 1254.296875 1255.439087 1255.589844 1254.305542 1253.078491 1252.025879 1251.164551 1250.928467 1250.995117 1250.825806 1250.515015 1250.182373 1249.571777 1248.911865 1248.106323 1247.119141 1246.061646 1244.487061 1241.105591 1237.270264 1233.92041 1231.000732 1227.7948 1224.899902 1222.522339 1220.658691 1219.373291 1218.763062 1218.348145 1218.251831 1217.987061 1217.698486 1217.576538 1217.590942 1217.741089 1218.219604 1218.531616 1218.586426 1218.75 1218.817017 1218.641235 1218.256348 1217.296875 1216.605103 1215.692261 1214.832764 1213.976074 1213.14209 1212.345337 1211.556885 1211.135498 1210.604248 1210.435791 1210.003906 1209.425537 1208.707764 1207.825684 1206.834229 1206.250854 1206.692627 1207.628296 1208.613403 1208.807251 1208.394531 1207.479614 1205.593384 1203.778442 1202.003296 1200.583252 1199.605591 1198.513794 1197.556274 1196.710815 1195.707764 1195.922852 1197.876587 1199.679565 1201.76001 1203.997437 1205.724121 1207.009399 1208.250488 1209.406982 1210.139771 1210.646606 1211.916748 1213.270874 1214.768677 1216.193848 1217.696777 1219.022461 1220.165161 1220.776001 1220.7052 1223.565063 1226.461914 1228.675903 1230.806519 1232.926758 1235.575806 1238.933716 1242.495117 1246.776978 1251.380127 1255.385742 1258.977539 1261.40625 1263.492554 1265.865845 1267.002319 1266.066772 1264.603394 1261.760376 1258.265991 1260.591675 1260.725586 1259.019043 1257.133179 1264.353271 1269.50061 1276.880859 1280.286621 1281.282593 1282.745728 1282.654297 1281.60022 1279.412109 1277.179077 1274.904297 1272.160278 1269.828613 1266.182007 1260.278564 1255.501221 1256.283081 1254.514404 1248.612183 1244.121582 1243.979126 1244.299927 1242.789307 1241.328857 1241.466675 1241.905396 1241.992188 1241.882812 1241.093628 1235.059814 1225.641724 1212.86792 1204.295532 1198.647217 1194.171387 1190.512939 1186.414795 1184.747925 1183.000488 1177.378418 1173.213867 1179.81311 1186.585205 1191.525269 1195.785034 1197.837402 1201.539429 1204.799194 1206.051758 1211.303467 1214.739014 1215.919922 1217.761719 1213.783447 1215.133057 1222.723267 1225.280151 1226.390015 1225.732178 1225.092773 1227.137817 1228.838989 1224.710693 1215.636597 1201.898071 1183.817871 1167.83252 1154.711792 1133.928833 1132.903687 1133.501465 1132.400269 1131.751221 1131.553711 1132.064331 -1403.253784 1403.104858 1399.782471 1396.329224 1391.769775 1384.672485 1375.831787 1373.29126 1374.065063 1372.51416 1368.274048 1361.946411 1355.284302 1359.432861 1383.054443 1409.849854 1428.060791 1446.163574 1459.003784 1463.838013 1462.710449 1459.208008 1455.697021 1453.586548 1460.03479 1466.344604 1474.423096 1480.922852 1488.465332 1500.469482 1509.743774 1519.933838 1531.457764 1540.759277 1549.307129 1559.421387 1562.418945 1560.101562 1556.135376 1552.488647 1549.581543 1546.313721 1541.789307 1537.491211 1535.765015 1534.159546 1532.637939 1531.56189 1532.846313 1535.772461 1529.951538 1524.116821 1514.709351 1505.969727 1495.17041 1483.19104 1472.729248 1463.765869 1455.225708 1448.710571 1442.374756 1436.079834 1429.812256 1425.882812 1419.185303 1415.47522 1409.533691 1402.606934 1401.287231 1404.291382 1411.22522 1410.125 1407.906006 1407.650513 1409.293823 1411.148926 1414.069336 1409.566284 1398.087402 1388.029175 1379.207275 1376.749634 1385.374634 1395.620361 1394.379761 1383.923828 1372.322021 1364.706787 1371.815308 1379.368774 1387.678589 1390.988403 1395.612549 1400.474976 1414.344604 1427.340942 1431.489868 1436.126709 1440.44043 1438.467773 1425.335815 1410.028076 1399.680298 1406.898926 1404.550659 1397.306274 1384.713379 1374.621094 1365.676636 1358.511353 1347.733276 1339.462769 1340.47876 1336.66687 1330.408813 1326.325928 1320.827881 1319.283569 1321.996704 1325.734741 1329.062256 1329.930664 1327.46814 1321.638184 1313.968018 1310.055542 1316.131714 1316.558472 1323.400635 1329.636963 1334.422729 1340.967163 1345.102417 1345.71875 1343.329468 1340.61792 1336.359741 1330.342041 1318.389404 1309.437744 1307.883179 1305.63562 1301.363159 1296.195312 1298.528564 1301.206543 1304.367676 1310.689453 1318.334229 1336.29187 1345.954834 1355.106812 1365.520508 1368.953369 1369.459961 1367.18042 1362.55188 1358.67749 1356.842041 1355.441284 1354.481445 1353.5354 1351.785156 1350.167969 1349.395874 1350.268066 1354.572876 1357.399536 1359.023193 1361.397827 1362.375854 1364.183594 1367.671753 1369.446533 1369.724854 1369.337402 1366.703613 1357.058472 1349.842285 1344.099854 1335.446777 1330.703491 1335.258057 1340.696899 1346.863647 1353.581787 1362.158936 1368.547485 1373.584961 1377.362793 1383.398926 1392.797607 1399.480469 1404.455688 1408.854858 1412.994141 1414.733521 1411.004517 1404.537842 1399.804077 1395.06665 1389.026123 1385.817871 1389.672852 1390.801636 1390.486816 1392.170532 1392.633301 1391.979248 1390.308594 1386.895142 1381.640747 1378.33313 1384.396729 1391.295044 1399.293335 1407.680054 1415.258545 1423.615601 1427.265991 1427.635132 1424.615234 1419.311401 1413.635498 1406.05896 1397.652344 1389.063354 1380.809448 1372.29248 1364.187378 1353.463135 1342.896362 1332.650513 1325.606201 1333.859741 1339.887207 1340.828125 1336.172241 1321.959351 1315.336304 1319.616333 1327.614502 1334.078857 1339.399902 1343.734741 1346.85437 1349.607788 1353.578613 1360.576904 1365.309814 1365.071045 1361.759766 1357.473633 1352.241821 1345.365479 1340.329346 1328.660889 1320.023071 1312.2771 1299.857788 1284.318359 1285.327637 1286.889771 1287.053101 1286.251221 1286.142456 1290.429321 1307.984863 1313.557373 1317.794067 1319.679077 1320.045166 1319.016724 1318.186523 1321.775146 1323.811523 1324.695312 1327.35144 1331.496582 1334.676758 1338.130249 1340.928589 1342.751099 1342.858276 1342.506226 1335.806763 1328.745728 1334.644165 1344.666992 1356.561279 1354.725342 1347.072144 1339.463623 1333.054688 1328.797119 1325.136963 1321.068359 1317.669678 1307.538696 1302.153076 1298.814575 1300.113892 1301.099609 1313.475342 1318.431396 1308.841553 1293.908813 1292.621826 1295.905884 1300.162231 1303.735474 1306.026855 1307.477661 1307.484375 1304.923706 1304.292969 1307.241089 1315.26001 1322.341919 1325.779419 1319.86145 1318.163086 1313.974121 1305.934082 1290.746216 1290.464966 1291.85498 1295.586914 1296.884766 1297.422241 1297.017456 1293.839722 1283.386719 1279.069946 1282.782593 1285.726562 1289.509033 1292.056152 1293.841919 1294.539795 1293.911133 1291.116943 1286.730225 1283.010864 1280.287109 1278.277344 1276.420898 1275.265747 1273.640503 1272.031494 1270.034302 1263.168579 1262.122681 1269.593628 1270.338013 1270.442383 1270.317261 1270.18811 1269.991577 1269.691284 1268.909912 1268.985107 1270.125 1269.863892 1269.474365 1268.190308 1266.214844 1264.121094 1262.168457 1260.53894 1259.03186 1257.449707 1256.081421 1255.01355 1254.132324 1253.341431 1252.4729 1251.572876 1250.525879 1249.34314 1247.9646 1246.956055 1246.934326 1246.857056 1245.239014 1243.697754 1245.340576 1247.934814 1248.44104 1247.397217 1244.74292 1240.532104 1235.090942 1239.511597 1246.127319 1255.065063 1256.812866 1257.711426 1259.224854 1261.744263 1264.216187 1266.275879 1268.162842 1270.342407 1270.74939 1269.031006 1267.415161 1265.80603 1263.87854 1261.627441 1259.607178 1258.863525 1259.077393 1259.236572 1258.359985 1256.78772 1255.21875 1254.907837 1255.457642 1257.144775 1257.36792 1256.304199 1254.974609 1253.761719 1252.899414 1252.833252 1252.988647 1252.870239 1252.666626 1252.074829 1251.341553 1250.36731 1249.128906 1247.638428 1246.090576 1244.061646 1240.737427 1237.539551 1234.293457 1231.121826 1227.927979 1225.212891 1222.286499 1219.79541 1219.447266 1219.402466 1219.321533 1219.167603 1218.698242 1218.209229 1218.125244 1218.161499 1218.571777 1219.076538 1219.446533 1219.75 1219.924316 1220.018555 1219.873901 1219.387695 1218.578491 1217.847168 1216.861084 1215.97644 1215.310303 1214.666138 1214.041382 1213.331299 1212.814697 1212.068726 1211.737305 1211.223022 1210.56543 1209.750488 1208.801758 1207.850586 1206.929565 1207.563477 1208.457153 1209.238281 1209.381592 1209.084229 1208.228271 1206.856689 1204.984375 1203.214478 1201.893677 1200.929321 1200.026489 1199.012573 1198.113159 1197.062378 1196.27002 1196.988892 1198.63562 1200.606812 1202.694702 1205.37085 1207.874756 1208.740112 1209.047119 1209.086426 1208.657227 1209.862793 1211.749023 1213.39856 1214.87146 1216.257324 1217.5896 1218.376099 1218.310181 1218.924683 1221.430908 1223.801636 1226.003784 1227.971191 1229.994019 1231.956787 1235.227905 1238.513428 1241.532471 1244.281006 1247.979004 1250.972778 1253.166504 1254.532837 1254.97522 1254.662354 1256.725586 1256.471313 1254.083984 1252.592651 1253.777466 1253.77356 1253.650879 1254.981812 1266.409668 1272.374634 1277.728271 1282.415405 1283.389404 1283.803833 1283.556152 1282.917603 1281.713745 1280.332031 1277.943604 1275.04126 1271.899048 1268.142456 1264.570312 1261.410156 1260.9021 1258.033447 1253.072998 1253.631836 1253.626953 1251.390747 1247.895264 1244.326782 1245.707275 1247.52771 1249.373901 1249.095459 1244.07312 1231.274292 1217.447388 1207.44751 1202.115479 1197.451172 1193.195068 1189.274536 1185.965698 1183.182373 1179.745728 1175.202026 1183.637695 1187.735596 1192.100098 1197.229858 1201.874634 1204.2948 1208.490845 1212.989136 1215.451538 1219.696045 1222.42981 1223.668457 1225.941162 1223.000122 1224.052246 1230.195923 1234.040161 1236.439697 1236.592163 1236.546265 1240.619385 1236.329956 1217.61499 1202.661377 1191.216553 1175.381714 1160.979614 1147.083984 1133.264282 1134.951416 1135.754395 1135.507935 1135.415527 1135.652466 1135.248413 -1409.364502 1416.921265 1420.923218 1420.072754 1410.903076 1401.177979 1395.088989 1387.101685 1386.243774 1385.10376 1383.12439 1380.896851 1375.535889 1368.281738 1374.628662 1402.338257 1425.923584 1444.031738 1461.983398 1469.685425 1472.267334 1468.298462 1465.38623 1466.393433 1465.442017 1469.809448 1473.555908 1479.598999 1486.717285 1498.965454 1507.52002 1516.028809 1525.081421 1535.291382 1544.726929 1555.807617 1563.211792 1560.640747 1555.175415 1550.84436 1547.367065 1544.598022 1541.051758 1537.598022 1535.526245 1533.945923 1532.175537 1530.719849 1530.005127 1529.468384 1526.060303 1519.914429 1512.102783 1505.145386 1494.259033 1479.911499 1469.213501 1460.740479 1454.179199 1448.929077 1444.498535 1439.118652 1435.298096 1430.59021 1426.002563 1418.521973 1408.555298 1401.219482 1406.580566 1416.224976 1416.901489 1412.839111 1409.207153 1409.107788 1412.255493 1415.096924 1417.766846 1404.143799 1388.979736 1379.887695 1377.695312 1380.490723 1394.469727 1405.356567 1402.151245 1390.324707 1379.638184 1369.30481 1369.463013 1379.434814 1386.513184 1390.740845 1395.707153 1405.009277 1419.504028 1428.881226 1433.265259 1436.69397 1437.229248 1430.394897 1418.811035 1401.158081 1390.359375 1389.355225 1390.447754 1385.244507 1376.661743 1368.281372 1361.631836 1355.67688 1345.421021 1335.106934 1328.397705 1325.93335 1322.902588 1320.853516 1322.381836 1325.270874 1328.406616 1331.017822 1332.588989 1332.748535 1330.494507 1324.444946 1319.08313 1321.127319 1324.252441 1325.615601 1327.731079 1333.54248 1338.312012 1343.802368 1348.247803 1349.490479 1348.227661 1345.362915 1341.300537 1333.600586 1325.370972 1322.084473 1319.497192 1316.111206 1307.860352 1300.337524 1297.344238 1300.292847 1303.226196 1307.4646 1314.433838 1329.575562 1338.863525 1350.528931 1360.725708 1366.911011 1369.235718 1370.259155 1370.365601 1369.046021 1367.720703 1366.373169 1364.912476 1362.556885 1359.206299 1354.961426 1352.561401 1353.838745 1356.382324 1360.575806 1363.684204 1366.751587 1367.592773 1367.524536 1370.41333 1370.895508 1370.293091 1368.77832 1363.672729 1355.168335 1347.049805 1339.278931 1331.704102 1335.018555 1341.664551 1347.172241 1354.551758 1362.315186 1370.525024 1376.412109 1383.290283 1390.379272 1391.904541 1399.560547 1409.944336 1416.12146 1417.639404 1418.580811 1417.364258 1412.342651 1404.827393 1400.178833 1394.796143 1388.524414 1390.222656 1394.657471 1396.394409 1397.043335 1397.097046 1396.641113 1395.627563 1394.081665 1391.461548 1386.555664 1384.110107 1386.092773 1390.272339 1397.705933 1405.556885 1414.004395 1425.420776 1429.641968 1429.374268 1426.570312 1417.243896 1410.253296 1402.430786 1390.115845 1382.318726 1372.447021 1361.007935 1349.467407 1341.270142 1334.431885 1331.813232 1342.222168 1347.232422 1347.562134 1346.223022 1338.269897 1317.010376 1318.841064 1330.424072 1334.536987 1339.130981 1343.582031 1347.966431 1351.266846 1353.833984 1361.530884 1368.697144 1369.343994 1366.141235 1359.309937 1353.249023 1343.875977 1335.770508 1328.061035 1322.584106 1314.982788 1304.94104 1289.251343 1285.635864 1289.725342 1291.989258 1291.307983 1288.94812 1287.685913 1287.927856 1293.704468 1305.405151 1306.891968 1306.925171 1307.460205 1306.345337 1310.408447 1313.680542 1314.82251 1314.901733 1320.240967 1327.157593 1327.836426 1329.898926 1336.598877 1339.407227 1340.381226 1341.601318 1343.006958 1343.246704 1340.814941 1346.802002 1357.141724 1354.634766 1349.546631 1343.64856 1338.319824 1332.748169 1327.510132 1320.164185 1313.388916 1303.088379 1301.605225 1303.395752 1309.751465 1313.547485 1322.860596 1321.275269 1308.556641 1294.084839 1294.835327 1301.47583 1305.093994 1308.043213 1310.022217 1311.792236 1313.677002 1313.810913 1312.921631 1315.169434 1322.809204 1332.025513 1335.431274 1332.795654 1325.94519 1315.948486 1301.255249 1291.651245 1295.697144 1299.902588 1303.404541 1305.293701 1306.149048 1304.087036 1299.289307 1288.930908 1281.33606 1285.643433 1288.624146 1290.222046 1291.474365 1293.140869 1294.927856 1295.23877 1294.227051 1292.483032 1288.698608 1284.562378 1280.375122 1279.072144 1278.057617 1276.064819 1273.321411 1270.484985 1263.087769 1265.863037 1271.17395 1271.935181 1271.979736 1271.912476 1271.839111 1271.654907 1271.088257 1270.587769 1270.578613 1270.624512 1270.286011 1269.656616 1268.380249 1266.289307 1264.036133 1262.021729 1260.191772 1258.501709 1256.837646 1255.752441 1255.003174 1254.333496 1253.538086 1252.766968 1252.011108 1251.268921 1250.497681 1249.928223 1249.579224 1249.887085 1250.134155 1247.632812 1244.4375 1245.796143 1249.314941 1250.52356 1249.50293 1247.41748 1244.163208 1236.665161 1238.383301 1244.098267 1256.408936 1258.843872 1259.903809 1261.304565 1263.143677 1264.912598 1266.69165 1268.712036 1272.938354 1276.478394 1275.0802 1269.98999 1267.509155 1265.499512 1264.028442 1262.556885 1261.536743 1261.213989 1260.702515 1259.445435 1257.517822 1256.110229 1255.818726 1256.459595 1258.395142 1258.469971 1257.457642 1255.977783 1254.774048 1254.180176 1254.563477 1254.926025 1254.86438 1254.548218 1253.864868 1253.028076 1251.788818 1250.245972 1248.268677 1246.154663 1243.937622 1240.246216 1236.873047 1233.730957 1230.98938 1228.548462 1225.914062 1223.205566 1220.774292 1220.780396 1220.691162 1220.691772 1219.967407 1219.189087 1218.643677 1218.534668 1218.904907 1219.398193 1219.88501 1220.771118 1221.228638 1221.462158 1221.733032 1221.461182 1220.881958 1219.936523 1218.993774 1217.911377 1217.041382 1216.603638 1216.130005 1215.580444 1214.894409 1214.413696 1213.53418 1213.023071 1212.481689 1211.76123 1210.858032 1209.904541 1208.929932 1207.589233 1208.19043 1209.290161 1209.831299 1209.741577 1209.377197 1208.542969 1207.223145 1205.541748 1204.251221 1203.096802 1202.370605 1201.592529 1200.623413 1199.633911 1198.650391 1197.662964 1197.105713 1197.39917 1198.849243 1200.358643 1203.661133 1207.086914 1207.96106 1207.904785 1207.52832 1207.051025 1208.385864 1210.514282 1212.166748 1213.501465 1214.807739 1215.901978 1216.501343 1217.12854 1218.212402 1219.806885 1221.880005 1223.725098 1225.689819 1227.86853 1229.692017 1232.00061 1235.13855 1237.991699 1240.494751 1242.495117 1244.309082 1246.503784 1247.670166 1248.186401 1249.296631 1250.848877 1250.644775 1249.241577 1246.848145 1246.402954 1244.799805 1248.397949 1255.497803 1262.122559 1268.091553 1272.60083 1278.637695 1282.903198 1285.251465 1283.9021 1283.380127 1282.814575 1282.364746 1281.200562 1277.917603 1273.78125 1269.382202 1268.799316 1267.415527 1265.58374 1260.512085 1257.759521 1259.109741 1259.275146 1258.004639 1254.299683 1252.077881 1253.389526 1256.186768 1258.389404 1251.128906 1236.997314 1222.092529 1210.990967 1204.661011 1199.787476 1195.560303 1191.671875 1188.022827 1184.383789 1180.596191 1176.961792 1184.394897 1190.676025 1195.373535 1198.049194 1202.956787 1208.28894 1211.866577 1215.818726 1221.241821 1223.7229 1226.345825 1230.049683 1232.653198 1234.149536 1234.109497 1233.33313 1240.109497 1245.436401 1247.293213 1247.548218 1244.640503 1242.931641 1232.479248 1208.206055 1193.340576 1179.231445 1167.991821 1157.637695 1142.467285 1134.251831 1135.792114 1136.864624 1137.298462 1137.646851 1137.851807 1137.91333 -1402.469727 1412.448853 1425.222778 1436.969727 1436.806274 1427.75354 1422.113403 1412.299805 1403.840088 1401.818726 1400.435425 1395.784302 1393.254272 1391.640137 1387.667236 1398.061035 1422.700195 1441.142334 1463.203491 1475.863892 1479.673462 1479.157959 1473.697266 1473.221436 1476.510864 1478.335571 1480.205078 1484.595947 1487.722778 1496.917236 1504.167847 1511.9104 1520.301758 1528.413696 1537.614258 1545.875 1553.630737 1555.086792 1552.372925 1548.534668 1545.767578 1543.154907 1540.134521 1537.045288 1535.430298 1534.146729 1532.093384 1529.258301 1526.881348 1526.194946 1523.862793 1516.716064 1509.226196 1502.040771 1493.228638 1480.518555 1470.693481 1465.416504 1460.727905 1454.779907 1450.355103 1444.555786 1438.817383 1433.452393 1428.599365 1419.33667 1413.572998 1410.709839 1415.195312 1417.653687 1416.142822 1411.291748 1407.145386 1406.83313 1410.972046 1416.967773 1403.309082 1391.218628 1382.775879 1377.570435 1382.534912 1387.963379 1401.179565 1415.686768 1408.275391 1397.106567 1387.961426 1380.056274 1371.163086 1383.965332 1392.400513 1397.811035 1404.642456 1409.942749 1421.699707 1427.202148 1437.128662 1438.255371 1433.049194 1425.842041 1415.610229 1399.836914 1382.862671 1376.273926 1375.474609 1373.086304 1367.078003 1360.623535 1354.965576 1346.9552 1339.305664 1331.115356 1324.764282 1324.362549 1327.53064 1330.202637 1330.856445 1332.184448 1333.446777 1334.548218 1334.940186 1333.679565 1329.574829 1327.48938 1328.649414 1329.394531 1330.967163 1332.853149 1332.793457 1336.536133 1340.476074 1347.138428 1352.365845 1354.17041 1353.424927 1349.430664 1344.311768 1338.500244 1335.04541 1333.468018 1328.270996 1323.213501 1315.726196 1302.926392 1297.797729 1300.454346 1303.442383 1306.843872 1312.248413 1326.031494 1337.189453 1348.831177 1358.180908 1364.196411 1367.457886 1369.767578 1370.901489 1372.884766 1374.713745 1375.048096 1374.757568 1372.221313 1369.151489 1366.002319 1361.334229 1359.656738 1361.23877 1363.268188 1367.065308 1370.797241 1372.625122 1373.367065 1374.144287 1372.281738 1369.36084 1365.686279 1357.482178 1350.524536 1342.950562 1334.451904 1334.516724 1338.949707 1345.255371 1351.654663 1360.325439 1368.145996 1376.401245 1385.444214 1393.13916 1397.709961 1399.932983 1408.070068 1419.845825 1424.305664 1425.017212 1423.262817 1418.029175 1413.145386 1408.065308 1402.664917 1395.545654 1389.474976 1394.769653 1401.125 1403.018677 1403.812134 1402.234375 1400.8927 1399.385986 1397.051514 1393.536621 1389.704102 1387.64624 1387.998291 1389.66394 1396.230713 1403.556763 1413.829468 1424.19519 1429.62854 1430.105591 1423.440552 1413.620361 1406.617065 1397.130127 1386.538818 1377.871216 1366.818115 1354.425293 1341.683716 1337.609253 1345.702271 1353.7146 1355.849243 1355.292847 1352.572021 1347.292969 1333.226685 1320.001709 1330.4375 1337.500366 1342.585571 1344.972412 1348.902588 1353.255249 1356.829956 1360.759888 1366.598267 1369.359497 1366.877808 1358.50647 1352.521729 1345.939087 1337.822021 1330.942749 1323.365112 1316.980225 1310.425049 1299.474487 1285.56958 1288.505615 1293.186646 1295.373169 1294.136719 1291.852295 1290.116333 1289.371338 1289.641235 1291.73291 1297.682007 1300.392334 1304.077393 1308.930054 1312.08313 1317.469238 1320.763062 1326.53479 1331.38147 1332.9198 1334.633789 1336.260742 1338.178101 1339.75708 1340.425293 1340.734009 1341.533813 1346.468872 1352.783936 1354.007568 1356.460449 1355.89563 1352.996948 1347.687622 1342.833984 1335.220337 1328.123413 1318.737305 1310.269043 1302.990601 1301.365356 1311.792725 1322.447632 1327.210815 1331.718018 1321.08374 1303.848389 1298.727539 1300.744141 1306.204224 1310.041016 1312.716309 1313.939453 1315.471558 1319.702515 1322.036011 1322.144409 1328.184937 1332.916016 1339.065552 1342.60144 1336.319214 1326.646973 1312.696777 1298.602417 1297.036377 1302.72522 1309.845581 1315.620728 1316.329102 1314.292114 1310.342529 1305.053101 1293.80896 1287.088135 1290.036499 1293.184692 1293.57019 1293.231201 1292.898193 1295.242432 1294.771851 1293.764404 1293.477783 1293.419556 1291.3573 1286.773193 1282.399658 1280.54126 1278.435913 1274.894775 1270.916016 1263.476562 1267.633179 1271.852783 1273.122681 1273.37439 1273.546509 1273.375244 1273.025879 1272.576782 1272.126343 1271.649414 1271.063843 1270.495483 1269.783813 1268.143433 1265.775024 1263.505005 1261.427612 1259.358276 1257.539429 1256.149902 1255.649414 1255.238281 1254.643555 1253.88562 1253.212769 1252.594238 1252.050903 1251.729248 1251.587891 1251.854004 1253.059814 1255.929077 1252.625977 1245.780396 1247.18396 1253.188599 1253.81311 1252.297241 1251.142212 1246.496948 1240.062256 1237.151611 1240.702515 1245.880981 1257.531616 1259.673828 1261.996704 1264.535767 1265.660156 1266.823364 1269.766846 1276.308228 1281.618408 1282.879883 1278.685303 1270.455444 1267.58313 1266.30249 1264.886353 1263.728516 1263.273926 1262.557129 1261.264648 1259.759399 1258.457397 1257.857544 1258.942261 1259.966797 1259.72998 1258.692017 1257.128052 1255.744629 1255.347534 1256.321777 1256.784546 1256.734497 1256.21936 1255.484985 1254.503662 1253.261841 1251.444946 1249.1604 1246.803833 1244.244263 1240.539917 1235.864746 1232.617065 1230.61499 1228.663818 1226.530396 1224.514404 1223.049316 1222.352539 1222.155029 1221.724365 1220.75647 1219.509155 1218.922363 1218.859009 1219.501831 1220.472412 1221.499146 1222.365967 1223.005371 1223.275879 1223.396606 1223.345947 1222.709351 1221.734497 1220.194458 1218.934692 1218.055908 1217.830688 1217.545898 1217.030029 1216.335083 1215.887329 1214.95752 1214.387817 1213.794312 1213.075684 1212.306641 1211.419189 1210.532104 1209.840698 1209.83667 1210.294434 1210.543335 1210.360596 1209.7052 1208.430542 1207.157837 1206.244019 1205.136963 1204.234375 1203.640259 1203.254639 1202.47876 1201.642822 1200.6604 1199.619995 1198.685425 1198.059204 1197.758179 1198.356201 1200.338013 1203.37854 1205.635986 1206.030518 1206.056274 1206.799927 1208.408447 1210.080688 1211.199951 1212.308716 1213.418823 1214.450928 1215.314697 1216.288818 1217.485352 1218.618042 1219.61792 1221.801025 1223.631836 1225.842041 1227.882324 1230.34021 1232.508179 1235.006348 1237.073608 1239.067139 1240.826172 1241.97229 1242.61499 1242.900024 1244.481201 1246.352051 1246.411987 1245.136108 1242.917725 1242.373535 1242.536987 1246.053711 1251.338135 1254.708008 1257.456299 1262.25769 1265.780273 1270.054199 1275.864014 1282.393799 1282.636963 1282.796875 1282.924805 1282.210205 1279.545166 1276.7323 1273.812866 1272.256836 1271.14856 1269.865356 1266.756836 1263.705444 1263.190796 1262.964844 1262.050781 1259.46582 1257.732178 1258.700806 1259.371582 1251.17981 1238.975464 1228.065186 1215.384644 1206.423706 1202.369141 1198.218506 1194.448486 1190.075806 1186.596069 1183.075439 1178.942627 1180.199951 1190.692505 1197.945679 1203.765991 1205.711548 1207.970703 1216.002075 1221.301758 1223.848511 1228.272827 1229.667236 1232.270264 1236.230225 1239.066162 1241.31543 1242.38501 1246.468018 1252.031128 1250.431274 1247.118408 1239.628174 1227.482422 1219.747803 1214.154419 1202.34082 1191.102905 1178.078979 1166.719971 1157.670776 1141.757446 1134.511475 1136.453735 1137.975708 1139.487671 1140.231567 1140.771606 1141.603516 -1383.277466 1393.402222 1411.86145 1427.500122 1439.113037 1439.536011 1433.745483 1431.503296 1423.902832 1417.946045 1416.436523 1414.658081 1412.112549 1411.11731 1410.281372 1409.096558 1420.533203 1439.065674 1461.860718 1478.081421 1483.980957 1486.664917 1481.703003 1480.166992 1484.259155 1488.80603 1491.9646 1493.066772 1497.617554 1502.857544 1506.094116 1509.352783 1514.45874 1521.529541 1529.350952 1537.235352 1544.122192 1548.032349 1547.717529 1546.600098 1544.640869 1542.83728 1540.585938 1538.397827 1537.034424 1534.906982 1532.96521 1529.406494 1524.179321 1522.486328 1518.735352 1513.021118 1506.241333 1498.411011 1491.590576 1482.882446 1476.629028 1475.97583 1470.3573 1463.54126 1456.300537 1450.739746 1441.321777 1434.982178 1429.620728 1424.809082 1419.381348 1417.074097 1417.700684 1417.322266 1412.372681 1406.917603 1402.405273 1401.279663 1401.516479 1395.038696 1387.465454 1387.101318 1386.773438 1389.001953 1391.390259 1396.562744 1412.677734 1419.798218 1415.473145 1403.368896 1392.305786 1383.725586 1372.957397 1387.494507 1394.84668 1402.544312 1414.081177 1424.175049 1435.963135 1441.570923 1441.751343 1439.162964 1429.200562 1420.051758 1409.685791 1396.446167 1381.989136 1365.869263 1364.739136 1361.850464 1356.619751 1350.762451 1343.295166 1336.089355 1330.529907 1325.507935 1328.834961 1335.66333 1341.307373 1342.635254 1341.661621 1340.462891 1339.508789 1338.372314 1337.62207 1336.117798 1331.50293 1331.763306 1333.999146 1335.567749 1337.410767 1339.269531 1339.224487 1340.08374 1341.221069 1352.993896 1357.157471 1358.498291 1357.656372 1353.42041 1348.337891 1344.737183 1345.01416 1340.737915 1333.786255 1326.079468 1315.52356 1302.22522 1298.606812 1302.237915 1304.111084 1307.96106 1313.282471 1326.448608 1336.09729 1346.327637 1356.255127 1360.499634 1364.146973 1367.386108 1369.742554 1373.368286 1378.400391 1380.311279 1380.951782 1380.310913 1377.037964 1372.546509 1368.005493 1364.521973 1366.239624 1366.643188 1371.598145 1375.622681 1377.889893 1378.150757 1377.327148 1373.827637 1366.65332 1360.987427 1352.453979 1347.512695 1340.316895 1333.652344 1337.088745 1342.94812 1351.314087 1358.438354 1369.311035 1377.315674 1383.262329 1390.97168 1401.506348 1407.55481 1413.724854 1419.524902 1427.735107 1431.588989 1430.694946 1427.15564 1422.347534 1417.498779 1412.109985 1405.659302 1397.552246 1394.449585 1401.958374 1406.949585 1409.449707 1410.526001 1409.147339 1406.108643 1403.309814 1401.025879 1397.462524 1393.314209 1391.380127 1389.171631 1389.550171 1395.042236 1401.85144 1412.946045 1421.271606 1426.73645 1427.285645 1418.636353 1410.245483 1402.460449 1391.341797 1381.990479 1371.720093 1359.991943 1348.986206 1349.566162 1358.146729 1361.492554 1362.041016 1360.403931 1358.007568 1354.909058 1343.658203 1325.933228 1326.978516 1336.191895 1343.114014 1346.846191 1349.784058 1353.978882 1358.284058 1362.78418 1366.576416 1368.075562 1364.875244 1353.061157 1348.566772 1344.768188 1338.707275 1331.959839 1325.881226 1318.931152 1312.806152 1307.338257 1297.313843 1285.994019 1290.226074 1295.210449 1299.292114 1297.923706 1294.201904 1292.545166 1291.720337 1290.382446 1292.327515 1305.927002 1315.165527 1318.364746 1325.064697 1328.357666 1330.803711 1331.015869 1335.536255 1338.185547 1341.168945 1343.164795 1343.362915 1342.884399 1342.291016 1341.848633 1341.647705 1341.413086 1341.881104 1355.414185 1356.327759 1356.139893 1356.062622 1355.195801 1350.799683 1344.082886 1336.549683 1328.438843 1324.105835 1319.063232 1303.764282 1309.852051 1322.918945 1330.212158 1337.432861 1335.758667 1323.304199 1309.602905 1301.739746 1303.954834 1309.51416 1315.208984 1318.41687 1319.501587 1321.673706 1327.189697 1330.551758 1331.415894 1334.296509 1338.84375 1344.049438 1344.685791 1336.6073 1325.321045 1312.072021 1302.493042 1302.320312 1311.241577 1321.732178 1325.47876 1325.082275 1321.403198 1315.417358 1309.330444 1296.528076 1291.419067 1293.609863 1297.081909 1298.874634 1298.285889 1297.645142 1296.96167 1293.612305 1292.734009 1292.696167 1292.901489 1293.148804 1293.683594 1289.506226 1283.86792 1280.740723 1276.506104 1271.30127 1264.043091 1269.265991 1273.024902 1274.46936 1275.016357 1274.966919 1274.769897 1274.345947 1273.8302 1273.185425 1272.230347 1271.370361 1270.483887 1269.375 1267.42749 1265.16394 1263.273071 1260.951294 1258.37207 1256.390625 1256.113159 1256.208984 1256.229248 1255.379883 1254.398193 1253.742554 1253.326904 1253.051025 1252.941528 1253.165649 1253.694702 1255.84729 1256.824829 1253.981445 1246.814819 1252.776855 1257.546265 1256.64624 1254.925171 1257.169312 1253.418091 1244.136353 1238.07251 1238.312378 1240.900146 1243.986328 1255.068237 1260.331665 1266.567261 1267.682007 1267.912231 1271.995483 1278.501953 1283.614014 1285.354736 1282.77356 1276.868042 1270.027222 1267.608398 1266.283813 1265.499878 1265.284912 1264.922241 1263.720093 1262.656372 1261.942749 1261.762085 1262.230469 1262.37207 1261.52832 1260.129028 1258.503662 1256.800171 1256.34314 1257.700317 1258.141968 1257.958252 1257.536865 1256.844604 1256.015015 1254.55542 1252.77417 1250.389526 1247.880249 1245.2146 1241.114136 1234.299561 1231.145386 1230.104126 1228.668579 1227.174072 1225.919922 1224.697021 1223.832031 1223.312012 1222.438599 1221.025513 1219.614868 1219.116333 1219.599487 1220.578735 1221.860352 1223.241089 1224.161865 1224.914429 1225.417358 1225.808472 1225.609497 1225.056641 1223.730591 1221.898438 1219.549561 1218.740112 1218.873169 1218.740112 1218.523193 1217.796265 1217.401001 1216.192139 1215.773926 1215.212158 1214.569336 1213.833618 1213.220825 1212.553833 1211.89978 1211.796631 1211.69873 1211.468628 1211.012085 1210.281494 1209.126343 1208.326904 1207.440552 1206.325684 1205.299805 1205.155396 1205.039185 1204.463989 1203.88562 1203.140381 1201.993042 1200.873291 1200.043701 1199.510376 1199.219604 1199.035278 1200.122314 1202.416138 1204.142822 1205.392822 1207.366943 1208.583496 1209.553345 1210.503784 1211.202637 1212.170532 1213.255737 1214.342773 1215.588745 1216.60437 1217.577759 1218.733521 1219.926392 1221.463013 1223.668579 1226.470947 1228.796265 1230.626221 1232.700806 1234.564941 1236.185791 1237.586792 1238.778809 1239.42688 1240.046387 1241.41626 1242.376099 1242.648071 1241.653931 1240.684814 1240.356079 1241.50769 1244.294556 1246.126587 1248.349487 1250.200684 1253.642578 1256.539917 1261.36145 1268.501099 1277.039429 1279.489868 1281.324707 1283.543335 1283.206421 1281.091553 1279.919678 1277.405273 1275.440186 1274.308838 1271.884766 1268.359375 1267.111694 1267.117065 1266.333374 1266.619995 1268.495605 1263.684937 1256.706055 1248.213501 1239.149414 1228.848877 1218.022095 1208.865601 1203.991699 1200.27124 1196.797852 1192.574707 1188.095947 1184.554565 1180.282104 1187.651367 1198.686768 1203.828369 1210.509033 1212.988403 1214.588623 1216.801025 1223.346924 1230.03772 1233.808594 1235.859131 1237.289185 1239.248779 1242.397949 1246.168335 1250.717529 1255.94873 1260.301392 1260.576294 1243.068359 1232.232178 1225.05188 1214.796143 1202.924072 1200.675171 1195.673096 1186.665039 1175.937012 1163.64624 1155.166382 1141.222412 1134.527954 1136.917114 1139.828735 1142.503418 1143.765503 1144.161621 1144.378418 -1361.724487 1369.190186 1393.37561 1407.757324 1408.665161 1422.189087 1435.868774 1437.958496 1436.998413 1434.333252 1432.288208 1430.846924 1430.214844 1431.131836 1432.328369 1430.571045 1427.130859 1437.310181 1460.323608 1480.570923 1488.907593 1492.440674 1492.686279 1487.325073 1492.547485 1499.21228 1502.286743 1502.824463 1503.937866 1507.256592 1510.833252 1512.464966 1515.345459 1521.336304 1524.018799 1531.301758 1535.192261 1538.980835 1542.491943 1543.685303 1543.846069 1543.312134 1542.272827 1540.863281 1539.070557 1537.462524 1535.062134 1531.994629 1526.323364 1522.378906 1517.536011 1511.791016 1505.603027 1499.330933 1493.566284 1489.751953 1487.138062 1483.460449 1478.251343 1470.095581 1461.812012 1454.302612 1443.885864 1436.565063 1430.182861 1427.164917 1424.426025 1419.336426 1416.050659 1411.118774 1405.010864 1401.172974 1398.907959 1395.651367 1392.379272 1387.632202 1388.029541 1391.211792 1394.114746 1398.426392 1404.125854 1416.733521 1417.124756 1417.322266 1417.66333 1404.024292 1391.779175 1383.670898 1374.056763 1388.490479 1395.054565 1401.822998 1416.52356 1429.127197 1440.643188 1441.809204 1442.552124 1434.136108 1423.708008 1413.630371 1404.376099 1392.498901 1380.789795 1364.555298 1354.866089 1348.978027 1344.543701 1338.039062 1330.790405 1327.420898 1326.818115 1333.360107 1343.290283 1347.588135 1349.855835 1349.813354 1348.102661 1346.005737 1343.634399 1340.773804 1340.135986 1340.16748 1338.546509 1337.874634 1338.942261 1341.445312 1343.666382 1344.833374 1345.943359 1347.510254 1350.878052 1358.063232 1361.797852 1364.030396 1364.225952 1361.292114 1356.925171 1356.92749 1356.262207 1347.85498 1336.126343 1325.151733 1305.642334 1300.168823 1301.265137 1305.72229 1307.91333 1311.139648 1316.601318 1331.784546 1337.984009 1345.750854 1354.162842 1356.442383 1356.898682 1359.431274 1364.199951 1367.386475 1374.551514 1378.807861 1380.154419 1380.93457 1380.731445 1377.955933 1375.426147 1371.345825 1372.205322 1376.398682 1377.014404 1379.442261 1380.200562 1380.054321 1379.547363 1374.442261 1367.330811 1360.23645 1353.873047 1347.177246 1340.953247 1334.494385 1339.616333 1350.904907 1358.501709 1365.947266 1377.997192 1388.113037 1394.132202 1399.174194 1409.141235 1418.071411 1424.595337 1428.541504 1437.584961 1439.104126 1435.594849 1431.244873 1426.247925 1420.807617 1414.909058 1407.644653 1400.278564 1401.513306 1407.548828 1412.352539 1416.210083 1417.841309 1416.971069 1412.125122 1408.759033 1405.217285 1402.087891 1399.046021 1395.145752 1391.379883 1389.212158 1393.675659 1400.452271 1410.954712 1418.858643 1422.195312 1421.582397 1415.701172 1407.390991 1396.9021 1384.613647 1374.599365 1363.422485 1357.880371 1366.135376 1372.591187 1373.129883 1371.353394 1368.089111 1363.974731 1359.286499 1352.877808 1343.040527 1327.407715 1332.570068 1343.14917 1347.00708 1350.663208 1353.769287 1358.226074 1363.039673 1368.505249 1372.802368 1364.726196 1355.639038 1348.634521 1341.109985 1337.036011 1331.08606 1325.110229 1319.556519 1314.257935 1308.734253 1303.834961 1297.270508 1288.039062 1290.584229 1299.899048 1305.88208 1302.745239 1299.168701 1296.89624 1295.140625 1292.45166 1291.647705 1305.080933 1329.461304 1335.883911 1340.088257 1340.419067 1340.537842 1341.440796 1342.868896 1345.475098 1347.088623 1348.036621 1348.095825 1347.362549 1346.543579 1345.673218 1344.874512 1344.194946 1345.241821 1353.189575 1354.938477 1355.597656 1355.623169 1355.476929 1352.782959 1346.150635 1340.770264 1333.928833 1328.599854 1322.814697 1307.672363 1317.411865 1333.137573 1340.810791 1349.740234 1340.313599 1327.552856 1314.856934 1305.567261 1303.933228 1313.440552 1320.654663 1326.216553 1331.250732 1331.928345 1333.755615 1335.966064 1337.562866 1339.414429 1343.476562 1350.949463 1346.176147 1335.47876 1323.799805 1309.644409 1305.043335 1312.996216 1321.422241 1331.486816 1333.673828 1332.946655 1328.337646 1321.584717 1313.864624 1301.176514 1291.708618 1295.417725 1300.635986 1305.575317 1304.493286 1301.677002 1299.694336 1296.149536 1293.504028 1292.073364 1291.613525 1291.17749 1291.054077 1289.245239 1284.916626 1282.061523 1277.392822 1270.27063 1263.822754 1270.437134 1275.092896 1276.552368 1276.753052 1276.508423 1276.244019 1275.745605 1275.00708 1273.98645 1272.716919 1271.225098 1269.669434 1268.424072 1266.803467 1265.291138 1263.45166 1261.192627 1258.16272 1256.495361 1257.222412 1257.503784 1256.832764 1255.579712 1254.839233 1254.433716 1254.140137 1253.94043 1254.089233 1254.440918 1255.494385 1257.715454 1257.416382 1254.091553 1248.267334 1255.557373 1259.397949 1259.432739 1257.490723 1259.647949 1258.230713 1251.21167 1242.841553 1238.041748 1239.25647 1241.071045 1244.115479 1256.902344 1268.675781 1270.75061 1271.415771 1275.160278 1279.529297 1285.189575 1290.122803 1287.216187 1280.735718 1272.877319 1268.437988 1267.189941 1266.634888 1267.477905 1267.288818 1266.043091 1265.274902 1265.067993 1265.486694 1265.839966 1265.492432 1263.929077 1262.132568 1260.29248 1258.764648 1258.458008 1259.12146 1259.297241 1259.075073 1258.462769 1257.765381 1256.986938 1256.000854 1254.078979 1251.631958 1249.07959 1246.498535 1243.628296 1236.857056 1232.753052 1231.158691 1229.495361 1228.219604 1227.16333 1226.21582 1225.338623 1224.46106 1223.246826 1221.603638 1219.832031 1219.412598 1220.689331 1222.145386 1223.716064 1225.159058 1226.381226 1227.318359 1228.078491 1228.514771 1228.623535 1227.958618 1225.913574 1222.980103 1219.783325 1219.612183 1220.180298 1220.01123 1219.891968 1219.377319 1218.88562 1217.369385 1217.125488 1216.727661 1216.109741 1215.478027 1214.908569 1214.254272 1213.746582 1213.321533 1213.030273 1212.622559 1211.911377 1211.046509 1210.148315 1209.213379 1208.221069 1206.954346 1206.175781 1206.421875 1206.755493 1206.624634 1206.12793 1205.54834 1204.576782 1203.523682 1202.425415 1201.568481 1200.818237 1200.218384 1199.670898 1201.090332 1202.783691 1204.878296 1206.348755 1207.363159 1209.011963 1209.619873 1209.839844 1210.569458 1212.208984 1213.822144 1215.015869 1216.153931 1217.050659 1218.075684 1218.970581 1219.512329 1222.161865 1225.00293 1226.877563 1228.720093 1230.653687 1232.30835 1233.935059 1235.104614 1235.953979 1236.76123 1237.435425 1238.029907 1238.222412 1238.121582 1237.881104 1237.542847 1238.124634 1239.543701 1241.324341 1242.53186 1243.237183 1243.544312 1249.324219 1253.395996 1262.445435 1272.277588 1281.185547 1282.419067 1284.040649 1284.88855 1284.727783 1283.570312 1282.013672 1279.975952 1278.945068 1277.915649 1275.143066 1271.459351 1271.171265 1270.580322 1270.069214 1269.987061 1268.44751 1257.95874 1244.27063 1235.033447 1222.908936 1216.548218 1211.190186 1205.638672 1201.644897 1198.026245 1194.6521 1190.475952 1185.633667 1181.982056 1192.238892 1200.541748 1206.850464 1213.370117 1218.256714 1221.168945 1223.112427 1225.747192 1232.119751 1236.797729 1240.28772 1242.775635 1245.233765 1247.497437 1252.505005 1258.831055 1261.582764 1263.446899 1260.927734 1251.596436 1231.501709 1220.086304 1212.305054 1201.23291 1189.706421 1188.923828 1186.982666 1177.187378 1165.645386 1157.353394 1145.431152 1139.873657 1134.957397 1138.203125 1142.427368 1145.407104 1146.971436 1147.807983 1146.667236 -1343.11438 1353.034668 1373.090698 1379.481201 1396.039551 1417.244141 1434.916748 1448.87915 1456.302124 1455.527222 1454.094238 1451.561157 1450.411377 1450.850342 1451.16333 1449.920532 1447.329468 1444.827759 1459.554443 1482.542847 1492.010132 1497.919067 1499.293335 1497.882324 1501.796875 1506.325073 1509.89209 1511.424561 1511.698486 1512.183228 1516.39502 1520.927979 1524.865723 1527.062134 1529.073364 1532.657593 1535.907715 1536.394897 1538.539673 1542.487915 1543.853271 1544.374023 1544.660767 1544.267822 1542.633057 1540.323975 1537.857666 1536.597046 1531.156494 1525.43042 1520.423096 1516.408203 1511.087524 1501.32373 1498.717285 1498.252197 1496.442871 1489.14502 1481.780151 1472.920776 1463.133301 1455.047119 1446.762085 1438.626465 1432.288818 1428.985596 1425.812378 1416.090332 1409.611694 1401.299194 1400.473389 1400.94751 1399.722778 1395.613647 1389.620972 1392.007324 1393.62439 1398.526855 1403.099487 1407.165894 1416.450928 1413.104614 1409.906128 1408.8302 1405.783447 1397.092407 1388.486084 1382.051025 1373.996338 1384.767822 1393.162109 1400.842529 1412.69519 1423.790771 1431.979858 1438.150146 1440.768555 1428.312134 1417.92041 1408.391357 1397.888306 1385.787109 1372.9552 1360.72937 1349.833008 1338.671753 1334.420166 1328.060425 1329.508667 1335.553833 1339.502563 1346.439697 1352.832642 1356.083496 1356.757568 1356.062988 1354.222656 1351.010986 1347.952148 1344.919556 1344.419678 1344.644165 1342.739014 1341.063965 1343.93103 1346.647339 1348.456543 1350.024902 1352.748901 1356.424927 1358.878052 1363.171875 1366.957397 1368.984375 1369.869263 1368.020264 1364.332886 1361.108276 1357.045044 1344.036255 1332.31604 1315.712036 1300.424561 1301.276367 1304.248535 1307.805786 1310.686157 1313.393433 1317.487549 1333.729858 1342.049927 1344.681519 1347.308472 1347.484741 1348.152344 1351.272705 1356.643433 1361.041016 1365.683472 1370.168091 1373.405273 1379.102417 1381.540039 1381.271973 1380.077271 1378.233398 1378.26709 1379.926025 1380.380005 1380.794189 1380.801147 1380.98645 1379.339966 1373.768433 1367.771606 1359.596313 1353.419556 1346.893311 1340.877075 1336.190918 1344.469849 1357.208252 1364.126465 1372.801025 1385.669434 1394.856812 1400.883789 1405.981812 1414.026367 1424.625122 1435.231567 1442.684692 1447.104126 1445.39978 1440.472778 1435.478027 1429.999512 1423.803589 1416.569214 1409.437988 1402.129883 1408.085693 1414.02002 1419.270386 1425.012695 1426.307495 1424.162842 1417.484985 1414.893799 1410.804077 1406.55127 1403.711548 1399.37146 1394.519165 1391.061401 1392.694092 1399.180176 1408.109619 1416.162109 1418.033081 1417.536865 1413.114502 1404.456421 1389.356934 1376.500244 1367.668945 1364.474487 1376.832764 1381.503052 1382.364136 1381.933838 1379.783325 1374.377319 1366.602295 1360.57373 1353.685425 1347.237793 1337.916504 1341.667847 1347.010254 1350.386108 1354.20105 1358.643188 1363.266602 1369.697754 1380.148438 1379.488525 1366.509277 1355.724243 1348.89624 1341.976318 1334.745605 1327.77417 1321.876709 1315.999878 1310.907104 1304.396484 1301.420898 1297.194458 1292.817505 1288.95813 1301.427856 1308.067505 1306.901733 1303.4375 1301.302246 1301.061401 1298.066895 1293.891113 1298.507568 1318.51123 1333.689941 1344.669678 1345.57019 1346.553833 1350.52832 1353.716797 1354.324829 1352.971802 1353.006592 1353.324097 1352.830933 1351.945923 1350.21228 1348.834717 1348.029175 1348.987305 1351.57312 1353.913452 1354.543579 1355.133423 1355.363892 1354.197266 1350.702759 1345.713867 1340.113159 1333.703613 1326.630127 1316.052856 1319.782471 1334.074097 1344.778931 1357.75415 1347.232422 1331.029297 1319.230347 1311.318848 1305.256226 1316.836548 1326.641846 1332.060913 1336.805664 1338.917969 1339.836548 1341.129517 1342.989624 1346.777222 1354.483765 1355.424927 1346.2948 1335.375732 1320.991577 1313.125366 1320.844727 1323.868774 1330.40332 1337.079468 1342.030762 1340.969238 1335.386108 1329.136719 1318.413574 1303.152222 1295.509277 1299.269775 1302.220215 1308.449829 1307.343628 1305.268066 1302.575317 1299.581177 1296.36731 1293.255249 1291.486206 1290.354492 1288.929321 1286.791382 1284.664673 1282.635376 1277.217407 1268.419556 1265.883301 1274.958984 1278.597412 1278.934204 1278.615723 1278.199707 1277.732056 1277.06189 1276.032715 1274.800171 1273.062988 1270.343628 1268.368896 1267.933228 1267.078979 1265.922852 1264.203735 1262.333618 1260.208618 1258.748535 1258.678589 1258.257935 1256.550537 1255.710815 1255.391235 1255.084717 1254.899658 1255.087891 1255.077759 1255.577637 1257.470581 1259.489258 1258.050171 1254.165039 1248.951294 1256.730957 1261.289185 1262.536621 1263.203491 1264.513916 1263.566895 1259.231323 1249.456055 1242.145386 1238.731079 1239.924072 1242.532104 1251.342651 1265.609131 1271.970093 1275.024414 1277.542847 1280.314331 1287.457153 1293.831055 1291.76001 1282.549805 1276.094849 1271.167358 1268.90625 1267.687622 1268.943848 1269.598389 1267.964478 1267.061401 1266.952881 1268.306763 1268.997437 1268.018677 1266.133301 1264.216797 1262.576538 1261.301392 1260.667603 1260.533691 1260.453369 1260.042358 1259.438599 1258.817871 1258.082886 1257.103394 1255.51062 1252.947144 1250.376221 1247.829468 1245.141724 1240.304688 1235.630737 1232.596558 1230.445312 1229.267334 1228.415039 1227.777466 1227.19812 1226.239868 1224.838623 1222.630737 1220.131348 1219.846802 1222.204712 1224.071533 1225.897095 1227.5802 1228.743652 1229.692871 1230.61377 1231.331909 1231.567627 1231.049927 1228.336914 1223.40271 1219.47998 1220.78064 1221.926514 1222.006836 1221.719482 1221.279785 1220.324219 1218.532593 1218.65979 1218.293457 1217.691284 1217.165161 1216.406616 1215.837158 1215.164185 1214.746826 1214.424194 1213.874756 1213.094727 1212.069336 1210.907349 1209.764038 1208.502441 1207.18811 1207.202759 1207.883667 1208.200806 1208.21582 1207.925659 1207.650879 1207.258789 1206.4646 1205.164795 1203.895264 1202.782593 1201.980713 1201.169434 1200.21814 1202.080078 1204.411499 1207.285522 1208.317627 1208.647461 1208.259766 1208.073364 1208.369385 1211.702271 1213.529907 1214.985229 1216.009033 1216.877441 1218.198242 1219.77478 1221.191895 1222.394653 1223.841675 1225.15686 1226.852173 1228.799194 1230.242798 1231.807861 1233.147949 1234.064697 1234.577881 1234.796631 1234.859253 1234.69812 1234.242432 1233.548096 1234.065186 1235.731689 1237.320557 1239.158447 1240.675293 1242.619263 1245.677856 1248.805176 1253.532349 1260.523926 1269.132446 1278.116089 1283.566406 1285.330933 1286.561768 1286.654663 1285.809326 1284.154175 1282.606934 1282.071411 1281.374512 1279.277588 1276.413574 1275.151123 1273.329956 1271.428223 1268.970947 1259.817627 1246.827393 1236.717896 1219.036743 1215.605713 1211.761719 1207.400269 1203.278076 1199.47937 1195.857056 1192.012939 1188.162354 1184.518677 1192.485474 1200.912476 1207.479858 1215.405518 1221.51416 1225.200562 1228.020142 1230.013672 1232.54834 1238.962769 1243.539185 1247.192261 1251.206665 1254.806641 1258.302979 1264.647949 1268.962891 1270.286743 1267.898926 1257.260986 1243.905762 1224.410034 1211.397217 1199.065552 1189.969238 1181.894897 1178.360229 1178.043701 1171.686768 1158.866821 1154.497437 1151.263428 1143.717041 1135.382446 1139.373657 1144.987549 1149.289307 1155.272095 1157.356812 1155.985229 -1321.37207 1338.160278 1351.797485 1356.475342 1379.1073 1410.033203 1426.574341 1452.534668 1466.359497 1471.514282 1473.33728 1474.866699 1475.273071 1474.800415 1472.786255 1471.568604 1468.881836 1465.107056 1464.242676 1484.192383 1496.371826 1502.268799 1504.622681 1503.530396 1507.221191 1512.721802 1516.403198 1518.517334 1519.830688 1521.135498 1524.619629 1529.190796 1532.271484 1533.616821 1534.625366 1537.582764 1538.952637 1539.312134 1540.860107 1542.964355 1544.536743 1545.740479 1547.509033 1547.860474 1547.09729 1544.804321 1541.907349 1539.853027 1536.421997 1529.600708 1525.186768 1520.690308 1515.2854 1509.302856 1513.463867 1514.334839 1505.831421 1495.2146 1483.575317 1471.430054 1460.355713 1453.276611 1446.359985 1438.370361 1426.500488 1424.754272 1419.273926 1414.139893 1406.997314 1404.949707 1405.670288 1406.09082 1406.368408 1406.741333 1407.169678 1405.442627 1404.61084 1407.709106 1408.616333 1405.003174 1404.4646 1402.021118 1399.376953 1397.525391 1391.737305 1388.699463 1381.798462 1377.161743 1379.703369 1384.604858 1389.468018 1395.876465 1403.212891 1414.748413 1425.667358 1433.390869 1434.281616 1426.661133 1416.979126 1404.250366 1391.411133 1376.371094 1364.608398 1356.496216 1342.399536 1332.466797 1330.751587 1338.662964 1345.44458 1348.853394 1350.923706 1356.950928 1363.640869 1365.501343 1363.579102 1360.775269 1358.320068 1354.92688 1352.484863 1351.81958 1350.68811 1348.889038 1347.606079 1347.322632 1348.918335 1352.384155 1354.078491 1355.349243 1359.859741 1364.739136 1365.831543 1367.858765 1371.477295 1374.384155 1375.124878 1371.61499 1367.313232 1362.190063 1355.220093 1337.621338 1325.670654 1308.469727 1301.925293 1303.473267 1306.105835 1310.247559 1314.358276 1315.821167 1315.653687 1329.834351 1335.777466 1339.849609 1339.296631 1339.090454 1340.905029 1343.831787 1349.639771 1354.153198 1358.526733 1362.188965 1365.030029 1375.997192 1381.484253 1381.140381 1380.459595 1380.057251 1380.024658 1380.858643 1381.29126 1381.104858 1380.680908 1378.941895 1374.178833 1369.133545 1363.595825 1355.249756 1349.897827 1345.169434 1338.36853 1339.906738 1351.35376 1361.139282 1369.508423 1378.819092 1392.280518 1399.991455 1406.293091 1411.390869 1418.782227 1431.12439 1443.34314 1452.45105 1454.036865 1451.490967 1445.175659 1439.245728 1432.955688 1426.109009 1418.067749 1410.560547 1406.161011 1414.897949 1420.758423 1427.092163 1433.44751 1434.776367 1430.183594 1424.666992 1418.903076 1414.928345 1410.068848 1405.98999 1402.057861 1397.850708 1396.224854 1396.299805 1398.661499 1403.803467 1410.602783 1413.390869 1413.309937 1408.541504 1400.137939 1384.05249 1373.429077 1368.532471 1378.029053 1383.918823 1387.084473 1389.356812 1389.516113 1387.572876 1381.276733 1370.706665 1363.412354 1357.320923 1350.59729 1342.508179 1345.317017 1351.625 1354.071167 1357.815308 1363.285156 1370.403198 1383.044922 1388.007812 1379.206421 1366.607422 1358.081543 1350.466553 1343.215088 1336.375854 1331.254517 1327.109009 1319.150146 1311.13916 1304.625854 1300.893921 1297.76062 1293.87561 1288.629028 1300.588989 1309.674805 1310.708252 1307.048218 1305.382568 1306.669434 1306.529907 1302.817383 1296.77124 1301.569214 1319.119751 1333.378418 1341.634888 1346.165771 1352.858643 1356.235962 1356.689819 1356.344604 1355.874756 1356.09729 1355.89917 1355.392578 1354.286255 1352.460693 1351.466553 1351.461914 1352.093384 1352.920898 1354.131836 1355.008667 1355.676636 1355.574219 1354.499634 1350.730103 1345.13623 1338.714966 1331.250977 1320.84375 1316.862549 1330.133789 1341.588135 1349.26355 1343.907227 1332.060181 1322.773438 1316.522461 1310.240967 1318.16394 1331.618652 1338.788208 1343.00708 1345.24585 1346.170288 1347.537231 1350.065308 1354.052612 1358.199219 1355.966797 1346.146118 1335.715942 1318.953125 1321.059692 1327.961182 1330.747437 1336.578491 1341.928589 1347.575195 1347.319702 1340.717896 1332.285645 1318.763672 1310.835327 1316.716187 1308.04834 1302.844727 1311.519043 1318.53479 1315.11145 1305.664429 1303.747803 1300.415161 1295.914917 1292.519653 1290.85376 1289.238647 1286.11499 1281.402344 1280.313232 1273.871826 1266.986816 1271.253906 1281.990234 1281.943359 1281.154419 1280.270508 1279.599609 1278.987305 1278.307251 1277.200195 1275.593994 1273.649414 1271.077393 1269.664062 1269.049683 1268.169312 1266.77478 1264.9646 1263.53894 1262.219971 1261.096802 1260.137207 1259.272583 1257.729248 1256.601196 1256.441406 1256.0448 1256.077026 1256.067505 1255.977783 1256.689575 1260.417969 1262.656982 1259.873535 1254.562378 1250.830688 1258.619629 1264.158203 1265.531372 1266.836914 1268.950928 1269.560547 1267.272827 1258.774414 1248.028076 1242.016113 1239.625366 1241.495361 1246.180176 1259.591187 1270.984497 1279.525757 1281.799561 1284.068604 1290.507446 1294.122437 1293.515381 1283.165405 1277.963013 1275.63269 1272.915283 1269.777466 1270.090088 1270.964722 1269.405762 1267.802368 1268.510254 1270.113403 1270.303345 1269.397827 1267.583618 1265.857544 1264.476685 1263.262207 1262.481934 1262.070679 1261.531372 1261.083984 1260.427979 1259.713623 1258.889893 1257.952026 1256.633545 1254.116577 1251.30957 1248.731201 1245.734619 1241.067871 1235.338257 1232.105469 1230.957031 1230.238037 1229.786377 1229.631714 1229.494385 1228.611206 1227.371094 1225.727661 1223.76123 1222.78772 1224.25293 1226.184814 1228.589233 1230.451172 1231.296631 1231.981445 1232.529907 1232.988647 1232.908203 1232.734863 1231.517944 1222.770996 1220.122925 1222.706055 1223.922119 1224.230835 1223.67688 1222.65979 1221.028687 1219.666138 1220.25 1219.942505 1219.358398 1218.488647 1217.676758 1217.032104 1216.450195 1216.105835 1215.873779 1215.306641 1214.452515 1213.30542 1212.047974 1210.587402 1208.732544 1207.376099 1208.241943 1208.87146 1209.183594 1209.303101 1209.151001 1208.865967 1208.45874 1208.093384 1207.487305 1206.227539 1204.550659 1203.509766 1202.497925 1201.328613 1200.843018 1203.490234 1207.147827 1207.934448 1207.297485 1206.998657 1207.562378 1208.621094 1211.768555 1214.09436 1215.516968 1216.387207 1217.014404 1218.130249 1219.647339 1220.939453 1221.627441 1222.334473 1223.145874 1224.677612 1226.563843 1228.232544 1229.757568 1230.977661 1231.765015 1232.139771 1232.225098 1232.018188 1231.763062 1231.397095 1230.933838 1231.762329 1233.137207 1235.220703 1237.151733 1239.279663 1242.401978 1245.078979 1247.00354 1249.965576 1254.505859 1261.356201 1268.895874 1278.68042 1285.154297 1288.760986 1289.197998 1287.949951 1286.556641 1285.454956 1284.44873 1283.375244 1281.086426 1279.934937 1278.805298 1274.563965 1269.419067 1260.748657 1249.858765 1238.698975 1224.810425 1216.82605 1213.101074 1208.920898 1205.162964 1201.193848 1197.132935 1193.696533 1190.266846 1186.895874 1192.012695 1200.069702 1207.302979 1215.614136 1222.997437 1228.506592 1232.168945 1234.961548 1237.623291 1241.055298 1246.488647 1251.369263 1256.164185 1261.084473 1265.677856 1269.552124 1272.522217 1272.901245 1269.794922 1256.800171 1248.014526 1234.221802 1218.678955 1205.978638 1194.032593 1184.423584 1177.756348 1171.661133 1168.230103 1158.228516 1159.901001 1163.391846 1158.96582 1145.512329 1136.04541 1140.117065 1147.886475 1156.5625 1164.175171 1165.774902 1163.669067 -1341.150146 1347.521118 1360.479492 1365.249268 1381.976074 1404.665161 1421.703369 1445.072754 1473.115967 1482.968628 1488.739136 1491.700684 1493.668335 1493.421753 1492.769165 1492.518921 1491.211914 1487.949341 1483.656128 1486.504517 1501.450562 1508.121338 1510.189575 1509.372437 1511.363281 1517.756104 1522.584717 1526.233643 1529.565552 1531.799316 1533.933716 1538.246216 1539.862549 1540.411011 1540.99707 1542.268799 1542.924438 1543.118652 1543.43042 1544.382446 1545.848267 1547.557251 1549.55188 1551.441284 1550.998047 1548.944458 1545.515137 1542.153442 1538.235352 1533.484863 1530.085571 1525.768555 1521.328857 1522.650879 1523.231689 1517.396606 1509.155884 1498.033203 1484.034058 1470.026123 1458.734375 1449.490845 1443.832275 1436.033081 1426.510986 1422.335938 1417.89209 1413.175049 1410.195679 1409.383667 1412.66394 1415.587891 1417.167725 1418.213135 1419.497925 1419.02063 1418.324219 1417.939331 1409.463989 1402.010742 1399.435669 1396.249023 1389.778687 1387.974487 1386.863037 1383.7323 1380.169556 1386.146362 1391.425049 1390.483398 1391.797485 1394.827515 1402.557617 1413.716553 1426.038574 1431.333374 1431.026611 1425.164185 1416.650513 1404.082275 1387.484985 1372.097412 1359.434082 1345.324219 1332.46814 1334.045288 1340.046875 1347.416748 1353.445068 1358.677246 1362.944824 1368.124512 1370.015259 1370.047729 1367.989258 1364.802856 1362.201172 1359.725342 1357.837646 1357.156494 1355.920532 1353.851685 1352.819702 1351.865723 1354.054688 1357.759888 1360.476318 1363.667969 1367.730225 1368.779907 1370.204346 1372.159546 1375.337036 1378.598389 1379.509155 1373.362183 1366.849365 1360.596069 1353.330078 1336.298462 1325.116211 1306.42395 1302.618042 1304.692017 1308.699951 1314.032837 1318.70105 1322.968262 1325.701782 1329.099854 1330.601562 1337.47998 1339.311157 1339.325439 1339.094849 1339.671387 1342.757935 1349.568481 1352.998901 1357.807251 1361.995239 1367.74292 1376.21228 1378.400513 1378.924927 1380.572021 1381.147095 1381.592773 1381.569946 1381.245972 1379.509033 1375.037964 1368.19397 1362.216675 1356.752197 1351.309937 1346.834595 1342.391968 1336.883179 1343.375122 1353.983032 1365.224976 1373.476807 1385.030029 1394.937378 1402.395752 1408.766235 1416.108032 1425.211792 1436.931763 1450.126587 1454.348999 1454.55835 1453.514771 1448.154419 1441.837891 1434.766968 1427.979004 1419.411377 1411.359009 1412.444214 1419.580444 1425.709473 1433.676758 1440.889771 1439.577026 1432.452759 1426.208618 1420.958374 1416.75415 1411.986938 1407.311401 1403.244507 1400.473877 1399.921143 1399.591553 1399.909546 1401.452759 1406.613892 1409.115479 1408.711914 1405.639038 1394.746582 1381.822998 1372.849976 1374.45752 1382.373779 1388.422607 1393.24646 1398.523193 1399.702148 1395.966919 1389.975098 1377.592651 1367.478516 1360.791382 1353.766968 1349.66272 1354.186646 1356.380371 1357.930176 1361.317871 1366.248901 1375.589966 1391.446533 1388.131958 1374.773071 1364.388916 1357.954956 1350.706665 1341.490967 1338.424561 1334.733398 1330.949463 1321.474243 1312.432007 1304.47168 1301.50293 1297.914551 1294.481445 1289.549561 1300.531616 1313.831909 1315.766846 1313.445068 1311.922607 1311.183472 1310.376221 1308.118042 1303.951904 1299.37854 1301.768555 1309.476685 1323.325562 1333.649048 1340.361938 1344.534058 1349.600952 1353.262085 1355.872681 1357.012939 1356.817505 1356.396729 1355.800781 1354.962524 1354.596802 1354.438477 1354.007324 1353.265137 1353.634277 1355.111084 1355.943115 1356.405518 1355.953369 1354.703857 1349.950928 1343.145752 1335.410034 1325.767578 1316.283325 1324.276245 1332.426636 1341.534058 1341.794067 1334.201782 1325.650146 1320.203613 1315.478394 1320.893066 1334.635742 1343.307617 1347.742065 1350.520996 1352.363159 1354.077393 1356.534912 1361.959106 1363.460815 1357.329346 1347.15686 1334.949951 1326.567261 1332.718262 1338.569946 1342.513794 1346.466919 1352.873657 1355.165894 1354.313965 1346.053589 1330.127441 1321.544067 1323.951782 1330.63208 1322.406982 1310.133423 1317.976196 1325.224731 1320.659302 1314.956299 1310.287109 1305.482178 1300.653076 1296.140015 1293.340332 1291.367432 1287.411987 1281.982178 1277.31189 1271.198486 1267.078857 1279.215698 1284.312866 1284.437988 1283.555908 1282.668213 1281.311279 1280.263672 1279.515015 1278.378174 1276.508667 1274.339844 1272.420044 1271.172974 1270.011963 1268.709473 1267.024658 1265.932373 1264.949707 1263.85083 1262.801758 1261.667603 1260.701294 1259.803955 1259.060913 1258.683594 1258.55896 1258.800781 1259.135132 1259.26416 1260.686157 1264.765137 1268.093018 1262.307861 1254.810913 1253.801392 1262.4375 1268.919189 1268.797241 1270.463989 1272.390625 1273.075439 1271.990967 1269.207397 1258.881226 1245.459595 1241.012573 1242.557861 1246.597168 1257.616211 1268.3302 1281.15332 1285.152588 1288.425903 1292.394165 1294.039307 1292.861694 1283.195557 1280.857178 1280.90332 1278.570923 1275.966309 1273.914429 1272.23877 1269.678101 1268.138672 1270.306763 1271.377441 1271.149536 1269.994873 1268.079102 1266.884033 1265.802612 1264.733398 1263.88208 1263.224487 1262.726318 1262.124146 1261.318726 1260.412476 1259.530151 1258.484253 1257.079346 1254.440552 1251.611572 1248.777344 1245.371704 1239.5354 1233.689697 1231.473022 1231.726685 1231.515503 1230.87793 1231.603882 1231.797974 1230.792969 1229.940063 1229.414185 1227.674194 1226.544189 1226.841919 1228.211182 1230.789185 1232.574707 1233.107422 1233.383423 1233.861206 1233.919067 1233.59436 1233.13501 1232.437256 1227.751465 1225.752686 1226.793091 1227.268799 1227.015625 1225.976929 1224.331909 1222.24585 1221.399292 1221.7948 1221.505493 1220.583252 1219.498291 1218.678345 1218.338989 1217.736572 1217.484619 1217.146606 1216.765991 1215.837646 1214.682617 1213.348877 1211.989136 1210.405518 1209.381836 1209.564819 1209.903809 1210.231934 1210.385376 1210.266602 1209.865601 1209.570679 1209.115723 1208.599731 1207.898438 1206.295898 1204.872314 1203.82959 1202.687012 1201.812378 1201.868042 1203.594116 1204.939819 1206.113159 1207.909668 1208.857666 1209.901733 1212.18103 1215.294434 1217.348389 1217.42627 1217.178833 1217.338867 1218.469849 1219.321655 1219.904541 1220.478638 1221.085327 1222.328491 1224.207764 1226.016357 1227.543945 1228.726562 1229.531128 1229.818604 1229.994995 1229.877563 1229.477295 1229.286133 1229.476196 1230.246704 1231.630859 1233.654663 1235.303589 1237.373657 1239.885742 1242.193604 1243.561035 1245.702515 1250.18396 1254.650635 1262.061768 1271.388428 1281.949951 1292.955078 1291.781616 1289.973877 1288.774048 1287.369873 1285.920654 1284.564453 1283.092651 1282.320801 1281.520752 1271.588745 1262.302124 1251.001465 1240.290161 1229.210327 1217.953857 1214.505737 1211.43042 1208.444092 1203.897827 1199.81665 1195.637085 1192.130615 1189.310669 1192.398804 1197.893921 1205.134644 1214.379272 1222.783936 1230.160156 1234.709717 1238.317749 1242.007935 1245.771851 1248.723999 1253.667114 1259.511108 1266.321289 1270.80249 1273.78479 1276.400757 1277.031128 1267.751221 1255.060181 1247.178345 1236.744995 1223.23584 1211.311523 1198.865479 1188.649292 1181.592896 1178.912476 1174.28064 1173.378906 1171.26709 1172.368164 1170.317505 1160.907471 1144.453491 1137.321411 1141.118774 1150.723389 1160.933838 1171.517822 1173.636475 1171.304443 -1360.037476 1376.24939 1388.400024 1395.459717 1407.573486 1424.178345 1436.787354 1452.81189 1470.790283 1489.088501 1500.462402 1504.876465 1508.784058 1508.692017 1507.456421 1508.57312 1509.430176 1506.757446 1501.878174 1495.765747 1509.512329 1515.728638 1516.944336 1514.847778 1516.394043 1524.378296 1531.61377 1537.668701 1539.768799 1540.922974 1542.148315 1544.482422 1546.250122 1547.894165 1549.41394 1548.289673 1546.70874 1546.073853 1546.149292 1545.995361 1546.627808 1548.293091 1551.450562 1555.885376 1556.401489 1553.343994 1548.384888 1544.373901 1540.868408 1537.710327 1537.536743 1535.117065 1530.596924 1529.237671 1526.521729 1518.452881 1508.56897 1496.647583 1483.637817 1472.085449 1459.758667 1449.975708 1441.60498 1434.173828 1427.612915 1423.12561 1419.515991 1415.009888 1413.451416 1412.562134 1417.445557 1420.618408 1422.538086 1424.276001 1426.000854 1424.401855 1418.766846 1412.322876 1401.344971 1400.548096 1399.315796 1396.930298 1393.249023 1390.120972 1387.865479 1390.082275 1393.985596 1396.757812 1398.185303 1396.905884 1397.394409 1401.955322 1406.918945 1415.798706 1426.636475 1430.86853 1430.410278 1424.953735 1415.550781 1404.135254 1386.970825 1372.338135 1356.121704 1336.043945 1335.025146 1339.776245 1347.468384 1355.572876 1365.241943 1370.321167 1374.522705 1376.37207 1376.009277 1374.162354 1371.482666 1368.512329 1366.283203 1364.688965 1363.153687 1362.141602 1360.706177 1359.065063 1358.237305 1357.585449 1359.163452 1362.346069 1366.107178 1367.973755 1369.17041 1369.934692 1371.121338 1373.113647 1376.325073 1379.314209 1378.311401 1372.266479 1365.545166 1358.309326 1346.862549 1334.465088 1320.447266 1306.05896 1303.431519 1306.467896 1310.743896 1316.457764 1325.074341 1331.984131 1335.670776 1339.216431 1340.52002 1341.644775 1343.618042 1345.458984 1348.052979 1348.802246 1350.032471 1351.101929 1352.261963 1354.612305 1358.316284 1362.61499 1367.474609 1373.031982 1377.330322 1380.880493 1381.526855 1381.916626 1381.802368 1381.155151 1379.396851 1374.175293 1368.101074 1360.966675 1354.717041 1348.745972 1344.044922 1339.432007 1339.415649 1346.355835 1355.134033 1367.822388 1375.912842 1386.252808 1394.744263 1402.618652 1409.57666 1417.394531 1427.095947 1438.244629 1449.29895 1453.83313 1454.449951 1453.998657 1449.847534 1442.686523 1435.620728 1428.500488 1419.947266 1412.410278 1417.127319 1423.352051 1431.081787 1439.86145 1441.731934 1439.328857 1432.158691 1425.815308 1420.601196 1416.189575 1412.679321 1410.167969 1406.048828 1403.873413 1403.394165 1402.907593 1401.839233 1402.450684 1404.984253 1406.733887 1406.423828 1403.883545 1393.346191 1382.911133 1373.995972 1378.141113 1386.518799 1393.675659 1401.326294 1405.990112 1406.709839 1403.021362 1394.921753 1384.173096 1373.900024 1364.947754 1356.254272 1353.28418 1356.816284 1359.303467 1360.978516 1362.70813 1366.462646 1375.816406 1389.237305 1382.757446 1369.699341 1363.264648 1357.834839 1352.773071 1347.381714 1342.225586 1337.147949 1330.260376 1321.956421 1314.93396 1307.695312 1302.554077 1298.288086 1294.583374 1291.030884 1303.873413 1320.544922 1320.901123 1318.245483 1317.07251 1317.082275 1315.094238 1311.245239 1306.905762 1302.178345 1304.560913 1306.598999 1312.081421 1316.380249 1325.314575 1330.02124 1336.057983 1341.158691 1344.868042 1349.568481 1353.506104 1355.956665 1356.533203 1356.188965 1355.886597 1355.734009 1355.437622 1354.422363 1353.683472 1355.043701 1356.671265 1356.913452 1356.799683 1356.010132 1354.317627 1346.841675 1339.044312 1328.881104 1316.568115 1325.988403 1332.980469 1340.187134 1342.150635 1338.598999 1331.125732 1322.832031 1318.123535 1322.167725 1337.660156 1347.292847 1352.928345 1356.187256 1358.531738 1361.36792 1364.986816 1371.679565 1368.859375 1360.004028 1348.52478 1333.207031 1332.426392 1342.456787 1347.216064 1351.344238 1355.619873 1359.772095 1360.699219 1359.105957 1352.357422 1335.328979 1329.934204 1336.932373 1338.007324 1324.78418 1318.019775 1330.068115 1332.93457 1331.194458 1327.536499 1318.288452 1311.874512 1306.090942 1302.255493 1298.177734 1294.453247 1289.033569 1283.264893 1277.202759 1270.119995 1273.384888 1283.634155 1287.464233 1288.220947 1286.962769 1285.233887 1283.455444 1282.150635 1281.000732 1279.515625 1277.289185 1275.276855 1273.333496 1271.51355 1269.756714 1268.328857 1267.322754 1266.756104 1266.294556 1265.33374 1264.213501 1263.258545 1262.445679 1262.028564 1261.720459 1262.039185 1262.523926 1263.267578 1264.719604 1265.501953 1266.126221 1269.074219 1270.325317 1264.06958 1255.094727 1255.066895 1265.855347 1271.95813 1273.944336 1275.127319 1276.189819 1276.75415 1276.084106 1273.04541 1266.101318 1251.430786 1241.315552 1244.805176 1249.850342 1256.896973 1267.459961 1281.547485 1287.385986 1291.602173 1294.008667 1293.795532 1291.515747 1287.239624 1284.62439 1283.803101 1282.197144 1279.682007 1277.294922 1274.588623 1271.996094 1270.470703 1272.130615 1272.607056 1272.149658 1270.469849 1268.747803 1267.610229 1266.604126 1265.715088 1264.889526 1264.246338 1263.761108 1263.02832 1262.194824 1261.173828 1260.063477 1258.7677 1257.223755 1254.487427 1251.172363 1247.722656 1243.25061 1235.978638 1231.42749 1232.322754 1233.877686 1233.157593 1231.637817 1234.068237 1234.359985 1233.780029 1232.99646 1231.654541 1230.198853 1228.982422 1229.222412 1229.793701 1231.420288 1232.897827 1233.918701 1234.414062 1234.594116 1234.351196 1233.852295 1233.123169 1231.912109 1230.409424 1230.216553 1231.402344 1230.690186 1229.983887 1228.453613 1226.637817 1225.338135 1223.760864 1223.414185 1222.780396 1221.646606 1220.077026 1219.42041 1219.794189 1219.169678 1218.65564 1218.544434 1218.182617 1217.318481 1216.035034 1214.782227 1213.641235 1212.608765 1211.727905 1211.504028 1211.405396 1211.466064 1211.381714 1211.27478 1210.924438 1210.529907 1210.032349 1209.396973 1208.615845 1207.444946 1207.133301 1205.841553 1204.32605 1203.056152 1202.444092 1202.666138 1202.887817 1205.246704 1208.623291 1209.317749 1210.099609 1212.099487 1217.357178 1219.940186 1220.094727 1216.809937 1216.313232 1216.81665 1217.568848 1218.253418 1218.936523 1219.251831 1220.16394 1222.151611 1223.979858 1225.307373 1226.364868 1226.942261 1227.219482 1227.538452 1227.561157 1227.483887 1227.622314 1228.229492 1229.274414 1231.057861 1232.329834 1233.871216 1235.257446 1236.809082 1238.854736 1240.471558 1242.492676 1246.624512 1251.407959 1258.012817 1265.906982 1278.091553 1291.481689 1293.316528 1291.98645 1290.617188 1288.797241 1286.48999 1285.169312 1283.913696 1282.602661 1276.16748 1264.776245 1252.821411 1242.638428 1231.689209 1219.848877 1216.318237 1212.947876 1209.618164 1206.437988 1202.514282 1198.251465 1194.552979 1192.232788 1196.946289 1200.21814 1205.071655 1212.74292 1222.115234 1229.126953 1235.254639 1239.706055 1243.871216 1248.1604 1252.276733 1256.52478 1262.854736 1269.383911 1273.486572 1276.699951 1279.632812 1281.943359 1276.218506 1257.719116 1246.69751 1235.387451 1223.759399 1209.817261 1203.391846 1196.328369 1195.449829 1189.064209 1184.664307 1182.513672 1181.015747 1182.881592 1183.259888 1175.675537 1161.617554 1144.872192 1138.082886 1141.338135 1152.78125 1165.283203 1175.858643 1178.695679 1176.61499 -1385.618774 1400.664429 1411.775757 1421.06543 1423.644775 1438.204956 1453.392578 1471.701782 1485.313477 1500.858643 1508.674805 1514.181763 1516.809814 1518.11438 1520.015869 1523.967407 1525.973145 1525.977783 1523.137451 1513.273682 1521.418091 1525.966187 1526.397827 1524.866211 1523.720093 1532.87146 1539.075928 1542.071899 1544.96228 1547.17981 1549.412109 1552.085327 1555.872925 1557.610229 1556.958862 1553.762329 1549.924683 1548.979492 1548.38916 1547.353271 1547.922974 1549.852905 1556.832642 1561.532959 1562.304077 1559.828857 1549.529175 1546.504272 1544.310669 1542.294312 1541.594238 1539.994873 1537.376587 1532.967041 1525.666504 1515.523682 1505.0896 1494.039795 1482.635498 1471.155029 1459.867432 1449.901001 1439.169189 1435.853394 1428.237549 1427.914062 1426.390503 1421.209595 1417.980713 1418.22229 1423.913696 1425.650879 1426.881836 1428.970215 1428.787964 1424.766235 1412.480591 1402.697388 1400.781738 1402.747803 1403.750122 1402.275757 1396.530151 1390.625732 1389.545776 1396.80896 1402.411499 1405.66394 1405.43042 1402.837158 1400.524536 1407.162354 1414.857422 1421.751221 1427.665527 1431.712158 1430.588745 1423.255005 1413.162354 1401.353027 1384.965332 1369.197876 1352.016602 1334.578979 1338.430176 1345.532104 1356.529419 1366.383057 1377.617676 1380.959839 1382.443237 1382.707031 1381.269775 1378.014404 1375.252686 1372.96875 1370.875122 1369.226562 1367.890869 1366.620483 1365.535156 1364.466675 1365.056519 1365.160889 1365.404663 1367.016968 1368.195923 1368.798584 1368.906616 1368.932251 1369.706055 1371.113281 1372.814819 1373.999512 1372.619141 1369.140625 1363.859497 1358.078491 1347.739014 1335.310181 1322.305542 1305.026855 1305.169556 1307.830322 1312.745117 1318.978638 1330.827026 1340.202393 1342.814697 1345.396973 1347.302856 1349.234253 1353.220459 1356.241577 1357.278809 1357.651611 1356.907349 1355.623901 1354.219727 1353.029053 1354.5448 1359.95459 1363.446045 1369.957031 1378.064575 1381.238403 1381.73877 1381.631226 1381.404419 1380.858032 1378.941284 1373.302002 1365.951782 1358.651855 1351.357056 1345.653931 1340.850708 1339.220947 1344.274536 1350.470459 1356.622192 1364.33374 1371.956665 1382.4646 1391.93811 1400.655029 1407.773926 1415.448975 1425.082031 1435.513428 1444.018433 1450.067871 1453.826416 1454.477051 1452.834351 1445.922241 1438.303589 1428.364746 1421.025146 1415.381714 1421.181519 1426.860229 1437.670898 1441.853149 1441.251221 1437.424316 1430.651367 1424.363892 1418.611694 1414.349976 1413.731934 1413.877808 1413.326782 1410.843872 1408.950562 1406.534424 1404.41333 1402.735474 1405.280762 1406.459717 1405.836914 1403.609375 1396.582275 1386.402954 1376.541016 1381.215942 1390.433472 1397.394287 1404.651367 1411.893188 1412.143921 1407.434814 1399.312744 1388.532227 1378.057007 1369.395142 1360.51709 1358.828613 1362.333496 1363.621826 1363.137085 1364.067139 1367.988281 1375.694702 1381.251221 1379.449585 1369.902832 1363.988647 1360.38855 1357.035889 1353.704468 1346.510864 1339.210083 1330.488281 1325.498657 1319.815186 1309.135376 1302.627197 1298.119507 1294.150879 1292.34729 1309.763184 1322.381958 1324.92627 1325.181519 1326.608276 1325.476929 1320.52832 1315.061157 1309.350586 1304.001709 1307.181763 1311.601685 1314.657227 1315.828003 1316.084106 1318.134155 1326.795776 1332.253418 1335.641479 1339.136475 1344.524292 1350.776367 1355.34729 1356.443481 1356.384277 1356.442505 1356.337769 1356.460449 1356.485962 1356.852051 1357.506592 1357.743774 1357.509033 1356.703979 1355.301514 1349.162109 1340.869141 1334.316528 1328.237061 1330.081421 1341.224609 1343.381104 1344.447632 1342.502686 1337.182007 1325.419189 1321.154419 1329.575562 1340.411499 1351.983398 1357.27832 1360.976929 1364.265137 1368.231567 1377.245483 1382.143921 1377.87793 1360.320435 1347.540161 1333.733521 1341.703125 1349.201294 1354.315186 1358.737793 1363.170166 1366.460693 1366.961182 1361.588745 1352.89209 1346.592529 1347.761353 1347.001709 1338.05542 1322.985229 1330.81604 1337.702148 1340.427979 1339.18811 1335.605225 1328.898804 1320.113281 1317.079712 1309.562012 1302.863892 1296.821777 1289.036499 1281.382568 1273.439087 1276.811768 1282.61438 1287.205566 1291.704834 1292.569702 1290.391235 1288.009399 1285.951904 1284.216187 1282.550293 1280.778564 1278.503174 1276.292969 1273.923828 1271.055786 1268.639893 1267.972534 1267.976562 1267.934326 1267.495972 1266.717285 1265.502319 1264.748291 1264.439453 1264.049438 1264.067749 1264.891602 1266.116821 1267.575806 1269.475586 1270.821167 1270.918823 1272.749634 1271.402954 1263.385132 1254.670532 1255.576782 1267.886841 1274.693115 1279.501587 1279.865967 1280.212891 1280.83728 1280.328613 1275.078003 1265.314453 1249.797974 1242.948364 1247.239136 1251.772949 1257.999756 1270.072754 1282.219116 1291.344238 1294.370239 1294.560669 1293.421387 1291.060669 1289.362793 1287.661621 1286.146484 1284.15918 1281.625977 1278.856079 1276.755981 1275.185547 1274.164062 1274.220581 1274.149048 1273.381958 1271.792969 1270.298706 1268.800537 1267.690552 1266.538696 1265.75354 1265.266846 1264.776733 1263.963013 1262.975952 1261.797852 1260.483521 1259.068726 1257.450317 1254.505371 1250.837891 1246.472412 1240.012085 1231.793823 1232.276367 1236.267334 1237.009155 1235.081543 1233.96875 1236.807495 1237.900635 1237.24231 1236.062622 1234.243164 1232.207275 1230.963745 1231.201172 1231.359253 1231.186646 1231.709839 1234.02771 1234.939331 1235.154785 1234.653442 1233.187622 1231.951172 1231.720093 1232.344727 1233.327271 1233.662476 1233.30835 1232.448975 1231.195068 1229.276367 1228.078979 1226.558472 1225.812622 1224.704224 1223.323975 1221.901001 1221.064575 1221.131836 1220.483276 1220.113892 1219.915283 1219.468506 1218.623413 1217.20459 1216.111816 1215.189819 1214.358398 1213.630737 1213.293945 1213.143188 1212.830811 1212.587402 1212.30188 1211.862793 1211.273315 1210.787109 1210.115112 1209.230469 1208.221558 1208.102051 1207.201782 1205.662842 1204.823242 1204.058716 1203.907104 1203.718506 1203.280396 1207.562134 1208.296387 1208.56897 1210.04834 1214.153198 1217.566406 1216.41626 1214.916138 1214.956421 1215.721436 1216.759155 1217.689941 1218.303101 1218.807861 1219.505493 1221.23645 1222.751343 1223.617554 1224.061035 1224.429443 1224.630249 1224.98584 1225.325317 1225.628784 1226.087158 1226.78479 1227.930908 1229.459473 1230.616089 1231.269775 1232.631714 1233.926636 1235.61377 1237.509277 1240.151489 1243.201294 1247.631958 1253.7677 1260.534546 1270.266235 1283.574463 1294.414429 1293.823364 1292.153687 1287.887695 1285.61792 1283.741333 1280.916138 1275.418945 1264.416138 1253.896118 1243.585815 1235.455444 1224.088623 1217.697021 1214.560913 1211.728027 1208.383789 1204.581665 1200.582764 1196.365601 1194.661865 1199.184326 1203.356079 1207.769165 1215.15918 1224.420654 1232.610962 1235.774292 1239.759399 1244.245972 1249.569946 1254.507935 1258.976929 1264.46167 1270.36377 1275.227295 1279.376465 1281.81958 1283.053955 1282.703003 1272.809692 1252.914185 1236.226562 1225.510864 1217.950439 1209.488037 1204.30127 1203.224121 1200.535278 1196.861328 1192.611328 1189.315552 1189.354248 1191.760498 1191.249146 1181.355103 1162.224854 1146.113525 1138.243774 1141.265259 1152.730103 1167.881714 1182.115967 1184.948975 1182.167358 -1409.665649 1417.12793 1427.01709 1438.593872 1448.615234 1451.796387 1464.350952 1480.605469 1493.059204 1505.503174 1514.133301 1518.494995 1521.434814 1524.554932 1529.192627 1533.746338 1536.623535 1536.243896 1533.952148 1531.779663 1533.162842 1535.084473 1535.373535 1534.871216 1533.852905 1535.400024 1541.345215 1545.89502 1549.691406 1553.936523 1559.052734 1564.159546 1569.307129 1568.353027 1565.380737 1561.1427 1557.459717 1553.793335 1551.056885 1548.664795 1549.385498 1555.937866 1563.070557 1566.151123 1566.30481 1564.194214 1557.859497 1549.75 1547.353882 1546.313965 1544.993042 1542.744751 1539.899536 1535.032227 1523.400635 1511.087891 1499.573242 1490.275391 1479.834839 1468.370972 1459.544922 1450.429932 1448.341431 1444.475098 1441.184326 1435.806885 1430.770142 1426.16748 1424.260376 1428.365845 1431.858398 1435.496338 1438.711548 1432.910767 1429.138184 1420.285889 1410.172119 1402.817505 1405.525391 1417.370972 1415.236328 1408.378418 1400.694092 1389.710083 1395.029663 1405.845337 1415.314819 1414.803833 1412.166138 1408.868164 1405.824097 1414.38916 1421.362671 1427.740356 1433.410034 1437.322266 1429.874268 1420.092773 1409.021606 1395.659424 1379.268311 1363.363281 1347.218018 1335.351318 1341.376465 1353.738892 1363.484009 1378.436279 1384.191528 1387.439453 1388.647705 1388.631836 1387.023926 1382.810181 1379.157227 1376.899658 1375.466797 1373.846558 1371.853149 1370.056396 1369.039307 1368.226685 1368.162231 1368.369873 1368.092773 1368.021362 1368.325562 1367.833862 1366.98938 1364.90918 1365.045044 1366.741943 1367.638916 1367.248169 1366.061157 1363.87915 1359.657349 1355.274292 1346.255615 1335.128784 1317.396484 1304.351318 1306.378784 1308.851074 1313.525513 1319.811279 1333.50061 1343.015503 1342.217773 1346.262939 1350.038818 1353.684204 1357.457764 1360.481934 1362.782471 1363.154297 1362.464233 1361.086426 1359.633301 1358.236084 1357.562378 1360.625977 1364.367554 1368.955688 1376.871338 1380.769653 1381.156494 1380.912109 1380.824585 1380.363892 1378.087402 1373.502441 1367.091675 1359.344482 1350.748657 1341.694946 1339.902466 1345.666626 1352.907959 1356.748779 1362.085815 1364.193726 1365.228638 1376.193359 1384.046509 1394.391235 1403.219116 1410.67334 1419.475952 1429.090942 1439.992065 1448.393066 1453.836548 1454.938965 1454.468506 1450.346069 1442.890747 1433.11377 1423.817627 1421.490479 1428.281372 1435.88501 1441.433838 1441.805542 1440.160889 1434.379517 1428.082764 1424.937256 1420.126343 1416.619141 1416.972656 1417.659912 1417.414795 1416.22583 1414.514282 1411.113281 1408.632202 1407.032837 1407.403564 1407.615723 1406.645386 1404.571899 1401.953491 1391.770264 1380.800659 1383.606812 1390.446899 1397.531494 1406.879395 1417.324219 1416.639648 1411.799072 1402.670288 1392.393799 1382.796997 1373.264771 1364.80249 1366.417969 1368.262817 1368.456543 1366.556763 1365.068359 1369.721924 1375.353638 1378.684204 1377.190918 1369.113037 1364.975464 1362.266968 1359.182739 1356.153442 1351.088257 1344.840576 1338.457886 1329.292847 1322.208496 1310.508179 1302.629272 1298.122192 1293.012451 1293.911255 1311.735962 1323.954346 1329.249756 1330.032471 1332.026733 1331.896606 1327.701538 1319.156006 1311.635986 1305.43457 1309.968506 1316.570557 1320.221436 1322.439941 1322.669312 1322.654175 1325.102173 1326.995483 1328.856689 1330.70874 1335.543457 1339.989746 1348.160156 1352.85376 1354.617676 1355.792114 1356.790527 1357.236694 1357.240845 1357.793823 1358.322266 1358.448364 1358.172241 1357.259155 1355.451416 1349.47644 1341.522827 1339.119141 1330.640381 1332.737427 1344.835449 1348.0271 1348.946899 1346.704712 1340.304199 1327.648682 1323.34375 1331.599243 1341.275269 1355.963623 1361.258545 1365.868774 1370.662598 1376.483276 1386.437622 1388.647339 1380.994141 1361.258911 1346.456055 1339.653809 1350.048096 1356.440063 1361.367554 1365.963257 1371.747681 1373.159302 1370.871826 1364.345947 1364.311279 1365.150269 1358.985596 1348.350464 1333.946777 1333.048462 1343.450562 1349.601562 1352.789673 1348.826294 1342.978394 1336.672241 1330.105957 1323.650513 1314.724731 1303.979004 1296.107788 1279.505249 1281.353027 1282.898804 1284.385986 1286.84668 1290.874634 1294.074463 1294.982788 1292.836792 1290.644775 1288.388306 1286.027466 1284.105103 1282.112671 1279.913574 1277.744019 1275.548706 1271.57605 1268.296387 1269.840942 1270.297607 1270.046387 1268.655396 1268.141968 1266.903687 1266.357788 1266.380981 1265.93103 1265.948853 1266.929932 1268.962646 1271.099365 1273.37207 1275.572021 1277.562378 1279.205322 1272.328979 1262.578491 1255.066772 1257.592163 1269.524536 1278.39502 1282.815918 1283.532104 1283.714966 1283.903931 1283.127197 1276.196411 1256.887939 1244.396606 1243.81665 1248.234253 1252.978516 1260.194946 1273.065063 1286.439941 1294.84729 1296.088501 1295.650391 1293.238403 1291.953125 1291.788208 1290.985718 1289.141602 1285.799194 1282.549194 1279.741455 1278.601807 1277.489868 1276.484131 1276.376953 1276.030884 1275.146484 1273.570435 1271.911865 1270.312988 1268.481079 1267.289307 1266.775391 1266.432495 1265.875854 1264.991821 1263.625244 1262.230225 1260.738892 1259.486572 1257.759033 1254.497192 1249.800049 1245.755615 1234.64856 1231.802612 1240.874512 1243.983643 1240.802368 1240.224976 1240.89563 1241.970947 1241.587402 1241.679321 1240.579712 1238.417358 1236.396118 1234.906738 1234.60791 1234.270386 1232.800781 1231.678833 1233.496216 1235.61731 1235.823975 1234.240112 1231.852661 1231.907471 1233.152954 1234.357666 1235.466797 1235.526855 1235.109863 1234.134399 1232.317505 1230.5802 1230.464233 1229.386353 1228.398438 1226.93042 1225.40979 1224.092896 1223.114136 1222.614136 1222.112305 1221.681885 1221.304077 1220.69458 1219.710449 1218.295654 1217.416138 1216.496704 1215.776001 1215.162598 1214.894165 1214.668457 1214.442505 1214.068359 1213.515381 1212.864136 1212.068115 1211.483276 1210.836182 1210.054321 1209.247803 1208.58667 1207.399902 1206.970337 1206.568115 1205.766235 1205.080322 1204.799438 1204.419434 1204.015869 1206.13562 1206.911133 1207.952759 1210.071655 1211.911987 1212.118652 1212.095337 1213.253418 1214.848877 1216.395508 1217.518433 1218.187744 1218.714233 1219.490601 1220.894043 1221.98938 1222.451782 1222.093994 1221.781982 1222.122314 1222.579224 1223.299561 1224.110962 1224.605591 1225.102051 1226.070312 1227.362427 1228.483032 1229.568726 1231.05249 1231.524048 1232.088501 1234.857422 1237.091797 1239.994507 1243.321899 1248.236938 1254.058472 1261.473999 1272.538574 1283.824829 1287.532715 1285.408691 1282.199829 1280.138794 1275.322266 1269.704468 1264.230835 1252.379028 1243.32312 1236.560425 1229.488159 1219.659546 1216.405884 1213.540283 1210.734131 1208.002686 1203.124023 1198.725952 1196.219727 1200.078491 1204.698975 1210.234131 1218.270264 1226.399658 1234.049927 1239.547974 1242.949341 1244.141846 1249.665039 1255.60022 1260.889282 1265.561279 1270.102417 1272.059326 1270.827271 1275.241699 1275.203979 1273.428345 1272.151123 1267.562744 1255.164795 1244.21582 1232.777466 1224.286621 1216.46875 1211.886719 1209.858154 1206.19397 1203.265869 1198.720581 1194.641846 1196.996704 1201.177734 1199.752319 1182.675293 1165.839233 1148.130493 1138.584473 1140.956543 1149.884155 1168.116943 1187.582397 1192.578613 1192.070068 -1419.148315 1425.299927 1440.60083 1455.442017 1464.341797 1472.591797 1487.697144 1498.326416 1505.368774 1513.254517 1519.462524 1522.535645 1526.345581 1530.771729 1536.483643 1539.591064 1540.987061 1541.123657 1540.008301 1539.594849 1540.376343 1541.162964 1541.519165 1541.391235 1540.902588 1540.157227 1544.449829 1548.216675 1553.872559 1560.382202 1569.318359 1577.691772 1583.066895 1579.914917 1572.634399 1566.83252 1563.177246 1558.109375 1554.754395 1550.55127 1552.973999 1559.009277 1567.967285 1572.154297 1570.565674 1567.084595 1561.380249 1554.260254 1551.982788 1550.500977 1547.967163 1545.505127 1541.774658 1535.871826 1523.547485 1514.354248 1502.261108 1490.819336 1481.97229 1474.697998 1467.758545 1462.02417 1456.692017 1452.768311 1446.230835 1439.125854 1433.172241 1427.909424 1429.72876 1435.771973 1440.021729 1441.839844 1438.374268 1430.691772 1423.971558 1415.466919 1410.144043 1407.941528 1419.080566 1429.098145 1422.815796 1411.720093 1401.387939 1393.434326 1401.300659 1415.675049 1425.052734 1426.507202 1421.634766 1416.610596 1413.47229 1417.762817 1424.934326 1432.046631 1438.307129 1442.018799 1429.280884 1417.805176 1404.596313 1389.553711 1374.615234 1358.773804 1343.39856 1337.464233 1346.556885 1359.829834 1371.860718 1383.525269 1389.55249 1393.130249 1393.749634 1393.421143 1391.83313 1387.964478 1383.929932 1381.373535 1379.594971 1377.96875 1375.437012 1372.838257 1370.460815 1369.406128 1369.291992 1368.995728 1367.691895 1364.824463 1363.374878 1362.133423 1359.114258 1355.841675 1356.526978 1358.352417 1359.799438 1359.617798 1358.980347 1357.800537 1354.895508 1350.585815 1344.598511 1333.981567 1313.80896 1305.60498 1307.511719 1309.657593 1312.515625 1316.511963 1323.208862 1324.30481 1326.584473 1340.822876 1348.011597 1355.182617 1361.336182 1365.912842 1367.794678 1368.377319 1368.08728 1366.762207 1365.381958 1364.053589 1362.621826 1362.430542 1363.554565 1366.325562 1372.797241 1377.928833 1379.06311 1378.828857 1379.245117 1380.424438 1380.384277 1378.320801 1371.138306 1361.262451 1347.541992 1340.90271 1344.790771 1354.220947 1358.749023 1362.502075 1367.680176 1373.554932 1380.742798 1384.326294 1387.782593 1389.135498 1397.454346 1405.013062 1414.769531 1428.74353 1440.153198 1447.972778 1454.481323 1455.554077 1455.022461 1452.08252 1445.647949 1439.082642 1426.76062 1428.281982 1437.974731 1441.603394 1443.063477 1441.614014 1437.357422 1432.777344 1426.97998 1425.893921 1424.585815 1422.591553 1421.980347 1421.416504 1420.439331 1418.810425 1416.99585 1414.758301 1412.634766 1410.650757 1410.0448 1409.651001 1408.770874 1407.332642 1405.170532 1398.473022 1388.008911 1383.544189 1389.905518 1396.595459 1405.065186 1416.049561 1418.011719 1416.111572 1406.012207 1395.657837 1385.698364 1376.695435 1368.797607 1375.767578 1376.627197 1375.196899 1373.042847 1371.038452 1373.876953 1376.001709 1376.002197 1374.424805 1370.935547 1367.593872 1364.311768 1360.800659 1357.341797 1353.217285 1347.075806 1340.857422 1332.332031 1324.097168 1313.916504 1303.880737 1298.756714 1293.055786 1292.821777 1310.406128 1325.545776 1332.606201 1333.905762 1334.629028 1333.973511 1331.120605 1322.628418 1314.459106 1307.489868 1311.914795 1319.16394 1327.227905 1330.544189 1330.853882 1329.177734 1327.607056 1326.557495 1326.598877 1326.575928 1328.770264 1332.256958 1337.738647 1343.531128 1347.168823 1351.106567 1355.382568 1356.962158 1357.50354 1357.982056 1358.575317 1359.063477 1359.017334 1358.063599 1355.763184 1351.695068 1347.491943 1344.770752 1338.80188 1339.797974 1347.556152 1351.901855 1353.559937 1351.752441 1343.59668 1330.016113 1322.83606 1329.635742 1342.934326 1357.867554 1365.12854 1370.705688 1376.453003 1385.148804 1393.986572 1393.346802 1381.295166 1363.926025 1349.686768 1345.819336 1357.543457 1363.5448 1369.935547 1379.421997 1381.172119 1379.740356 1375.61853 1372.918579 1373.038086 1369.453613 1361.163696 1342.96228 1342.92395 1355.905884 1361.932739 1365.926147 1364.059326 1357.22644 1343.564331 1336.677612 1329.697754 1315.188232 1306.734985 1297.423462 1286.102539 1285.930176 1290.006348 1289.465332 1288.543701 1289.465576 1292.334106 1296.239502 1297.96106 1295.734985 1292.802979 1290.184692 1287.582642 1285.182373 1282.898804 1280.664185 1278.981323 1277.775391 1276.204102 1274.703613 1274.422241 1273.897217 1273.058594 1271.89624 1270.639526 1268.423218 1267.922974 1268.359741 1267.85498 1267.493164 1269.600708 1272.517456 1275.404907 1277.866821 1280.008423 1282.122314 1282.61438 1271.983032 1261.535278 1255.654297 1260.692261 1269.1698 1279.460693 1284.624023 1286.443481 1286.833496 1286.071533 1284.085938 1270.394531 1246.81604 1243.277954 1245.908936 1249.407593 1253.970703 1262.565674 1276.699707 1290.933716 1297.593872 1298.506348 1297.48938 1295.763184 1294.817627 1294.637939 1294.227295 1291.968506 1288.080444 1284.593872 1281.127441 1279.815063 1279.260132 1278.432007 1278.353638 1277.946899 1277.275635 1275.732544 1273.849976 1271.735107 1269.479858 1268.341431 1268.149536 1267.711792 1267.002319 1265.935913 1264.337891 1262.532837 1260.832275 1259.036987 1257.356445 1252.91626 1247.693726 1241.517944 1230.483154 1241.569214 1246.671753 1245.803223 1243.061523 1243.808838 1245.784912 1246.076782 1245.810181 1246.36792 1245.337524 1243.181519 1242.034302 1241.912109 1240.880127 1239.110352 1236.412598 1233.717285 1234.647583 1237.013672 1237.030029 1234.358765 1233.70752 1234.698242 1235.907227 1236.84082 1237.40332 1237.296021 1236.508301 1234.560059 1232.013794 1231.611816 1232.737671 1231.896118 1230.761108 1229.263916 1227.726562 1226.342651 1225.014771 1224.262939 1223.537354 1222.938232 1222.374756 1221.613647 1220.37561 1219.198364 1218.222534 1217.390503 1216.852539 1216.422852 1216.279785 1216.238037 1216.023315 1215.576172 1214.871338 1213.93689 1212.984863 1212.245605 1211.659546 1210.922119 1210.32312 1209.61145 1208.859375 1208.46936 1208.044312 1207.13916 1206.708496 1206.325684 1205.772827 1205.789307 1205.71936 1205.563232 1205.806763 1207.375244 1208.138916 1209.050415 1209.410156 1211.634521 1214.413818 1216.701782 1218.257324 1218.634766 1218.952148 1219.608521 1220.984741 1221.519287 1221.481323 1220.233154 1219.709961 1219.913574 1220.484741 1221.924927 1222.762085 1223.074951 1223.165161 1223.912964 1225.32312 1226.928345 1228.357544 1229.432861 1230.241577 1231.082031 1232.022705 1233.583496 1236.928589 1240.243164 1243.229004 1247.479492 1252.637451 1259.886475 1269.377686 1273.350342 1272.833008 1271.426147 1268.433594 1263.509766 1259.411621 1252.834473 1243.894287 1235.085938 1229.887817 1225.454712 1219.553955 1215.924072 1212.620972 1209.515015 1205.980469 1201.075562 1197.262573 1199.944214 1204.962036 1213.776123 1222.863037 1229.351562 1234.696777 1241.25354 1246.360352 1249.961914 1252.928711 1255.815552 1261.519043 1266.845337 1270.570557 1272.054077 1268.593872 1254.669312 1256.302734 1257.62207 1249.626953 1255.587158 1255.676636 1251.774048 1247.977417 1244.644409 1228.974854 1224.504639 1222.888062 1217.907959 1215.71521 1212.02356 1207.239136 1206.176514 1208.786133 1211.144409 1202.244629 1179.358887 1161.535034 1146.036133 1138.595581 1142.614014 1151.219849 1166.83606 1190.773193 1199.552734 1201.934692 -1424.584961 1433.692627 1447.826172 1460.879639 1471.717773 1486.6698 1505.772461 1516.7146 1522.329224 1525.795288 1526.789917 1530.203369 1533.597168 1535.804565 1539.081543 1542.819946 1544.832886 1545.656128 1545.50061 1545.221436 1545.210449 1545.642822 1546.516602 1547.220459 1548.003784 1549.131226 1548.345703 1547.685303 1554.074341 1564.310303 1575.722412 1586.102539 1594.226807 1590.864624 1577.559937 1570.836548 1566.222778 1561.073975 1560.0 1558.31311 1560.518677 1561.377808 1572.71582 1575.08252 1574.062622 1570.4552 1564.907715 1561.207886 1559.227173 1555.256836 1551.701904 1548.380127 1544.484375 1537.88269 1528.410645 1520.445068 1512.644043 1499.201172 1490.284424 1482.369995 1476.173828 1467.578125 1461.151611 1455.849976 1449.202271 1439.169556 1435.184082 1435.417847 1438.684448 1441.204346 1441.587891 1437.330322 1429.078857 1423.977051 1417.344604 1412.426147 1413.719849 1419.254761 1428.987305 1427.677246 1420.404053 1411.140381 1401.13916 1401.561768 1405.302246 1417.707153 1427.157104 1429.280396 1428.448364 1423.608398 1421.750488 1424.380127 1429.751343 1436.48291 1449.752197 1443.27063 1428.174561 1416.879639 1405.098633 1385.852661 1372.123901 1356.886719 1337.7229 1338.646851 1353.182373 1365.120728 1378.749512 1388.378906 1394.992188 1397.89978 1398.212524 1396.865112 1394.337891 1390.938232 1387.494141 1384.976685 1382.790283 1380.147339 1377.4198 1373.604004 1370.296875 1367.911011 1366.846191 1364.767578 1361.526245 1357.217041 1356.357056 1354.706299 1351.655396 1349.538696 1349.341919 1350.205444 1350.999634 1351.018433 1350.876221 1350.012085 1347.306396 1343.336548 1337.925293 1324.490601 1306.849487 1306.741821 1307.724243 1308.955933 1310.203979 1312.647949 1314.065918 1315.071777 1316.743652 1328.963135 1344.009155 1355.310181 1363.642456 1368.423218 1370.149902 1371.984741 1373.498291 1373.139282 1371.753418 1369.98291 1367.565308 1365.564941 1364.121094 1364.481445 1367.417603 1372.06604 1375.494995 1377.005859 1378.847046 1380.899292 1381.219971 1380.840088 1372.274414 1359.251953 1345.375 1343.259033 1351.243774 1358.193726 1363.331421 1366.623169 1373.289917 1381.006836 1390.180786 1394.666016 1396.918823 1401.025879 1402.242432 1403.559204 1416.011597 1426.593018 1435.008667 1443.065308 1453.551025 1455.876953 1455.093628 1452.153809 1446.595093 1441.323975 1431.939941 1436.654419 1442.833374 1444.935669 1445.410034 1443.044556 1438.878906 1436.225586 1434.8396 1432.943359 1428.6698 1427.531006 1427.019409 1425.726074 1423.704956 1421.293091 1418.817383 1416.275146 1413.874512 1412.327026 1412.259399 1412.550171 1412.252563 1411.131348 1408.280273 1404.139893 1395.991089 1386.945801 1387.835693 1393.009277 1400.607178 1410.453979 1417.5896 1417.228882 1408.842407 1398.581421 1388.367676 1380.339844 1377.04248 1381.120117 1381.944824 1381.174683 1379.735352 1378.83313 1379.128906 1378.726318 1377.401245 1375.526001 1372.847534 1369.606079 1365.885986 1361.614868 1357.428467 1353.598511 1347.206177 1341.185181 1333.994385 1325.97229 1315.675171 1305.475708 1300.420654 1295.668579 1291.492432 1307.724609 1322.304565 1333.346802 1336.162598 1337.118042 1335.857178 1332.689941 1325.434937 1316.568481 1309.259644 1314.388184 1322.281982 1330.169678 1335.348755 1337.868042 1337.3479 1334.683838 1330.25 1327.037598 1327.140991 1327.619629 1327.388306 1327.689453 1332.664551 1339.31897 1341.463379 1347.518921 1353.515625 1355.366455 1356.736328 1358.474609 1359.577271 1359.900513 1359.420288 1357.665039 1355.119263 1352.390381 1347.681641 1344.08313 1345.423096 1353.177856 1357.526367 1360.875122 1358.231567 1348.749756 1333.55249 1323.233032 1331.766724 1344.440796 1358.100952 1367.23877 1375.672607 1382.362427 1390.332764 1398.903931 1397.473389 1383.811279 1369.821411 1354.246216 1355.814941 1362.442139 1371.030884 1380.865601 1386.468262 1388.364136 1387.108521 1383.327271 1381.139282 1379.281494 1371.964233 1355.360962 1353.640259 1362.699219 1369.722168 1371.663696 1370.415527 1364.410645 1348.810791 1333.425903 1322.20105 1308.919434 1297.137573 1288.923462 1289.063843 1293.665527 1298.562378 1296.796875 1293.137207 1291.219116 1290.540283 1293.010864 1300.937866 1303.707642 1298.976807 1294.755615 1291.363281 1288.575806 1285.879395 1283.434814 1280.976929 1279.412598 1279.505127 1280.605591 1280.861816 1279.932007 1278.39502 1277.394287 1276.505127 1274.698242 1271.55835 1271.571899 1272.035767 1270.812622 1270.253906 1274.243408 1277.703979 1280.325684 1282.443359 1283.603882 1283.54895 1279.64563 1268.654663 1260.018066 1258.099731 1263.608887 1269.641724 1281.898804 1287.461914 1289.53064 1289.901245 1288.200195 1282.677246 1267.374634 1244.769775 1245.266235 1247.612915 1250.772705 1254.828491 1264.852905 1279.13916 1293.626099 1300.693481 1301.503906 1299.863892 1298.510376 1297.649414 1297.047241 1295.726807 1292.61499 1290.486938 1288.51355 1285.08252 1282.821411 1281.777954 1280.837646 1280.200317 1280.262207 1279.525757 1277.91272 1276.200317 1274.025391 1272.067017 1270.893555 1269.929565 1268.987061 1268.071045 1266.930908 1265.014404 1262.405762 1259.097168 1255.189087 1248.899536 1245.250244 1243.134521 1233.560425 1241.95459 1248.296021 1250.422119 1247.408203 1243.785645 1247.387939 1249.388306 1250.300781 1251.028931 1251.628784 1251.137695 1249.109009 1247.70874 1247.500366 1246.23291 1244.412476 1241.248047 1239.369995 1239.079346 1239.072388 1239.221802 1239.290649 1238.948486 1239.100342 1239.688965 1239.84436 1240.174438 1239.761597 1238.749512 1236.146973 1232.322144 1233.455078 1234.750488 1234.19458 1232.913452 1231.386963 1229.88916 1228.246094 1226.822998 1225.811035 1224.928101 1224.014771 1223.066528 1221.993896 1220.53479 1219.338379 1218.434814 1217.947144 1217.707031 1217.588257 1217.713379 1217.762085 1217.556274 1217.14624 1216.371338 1215.178955 1213.972534 1213.158203 1212.496582 1212.018433 1211.494019 1211.021484 1210.427368 1209.856079 1209.174927 1208.252686 1208.135376 1207.633911 1206.745972 1207.638916 1208.150513 1207.810913 1206.87085 1206.661011 1206.776001 1207.078613 1207.785278 1211.211548 1214.48938 1217.141846 1219.461548 1219.806396 1219.676392 1220.171387 1220.89978 1221.058105 1220.376587 1219.413818 1219.085693 1219.214966 1219.823975 1221.209106 1221.625854 1221.544189 1221.183838 1221.352783 1223.414795 1225.459473 1227.021729 1228.230713 1229.146606 1229.930786 1230.767334 1231.736328 1234.838257 1237.301147 1239.653198 1242.346191 1245.733521 1250.293457 1254.809326 1258.889526 1261.100342 1260.227539 1257.486816 1253.804932 1249.411255 1242.185303 1235.832275 1230.526123 1227.132812 1223.646484 1219.375122 1215.743286 1211.74353 1208.571167 1203.528809 1198.633545 1200.398804 1204.610229 1212.375244 1226.194946 1233.605469 1237.415649 1242.083252 1247.756714 1252.707031 1256.917847 1261.294678 1264.821899 1268.63916 1271.767944 1272.27417 1266.839355 1253.324463 1235.210205 1235.532104 1234.165649 1228.919678 1235.307617 1238.119629 1245.903564 1242.828247 1241.043701 1234.150513 1233.069092 1229.299561 1227.669434 1226.001831 1222.94165 1216.947632 1216.587524 1219.216431 1219.646729 1202.259033 1178.115723 1165.574585 1150.427124 1138.690918 1144.812622 1157.125244 1169.440918 1193.101318 1204.665649 1211.254517 -1419.182495 1426.496948 1438.189331 1456.666748 1471.804932 1488.796753 1507.804077 1524.52771 1532.662964 1536.873169 1538.855591 1540.539795 1542.362915 1543.796143 1545.282715 1546.531372 1548.834839 1550.362671 1550.683228 1550.32019 1550.406128 1551.075317 1553.230957 1555.066528 1557.013062 1560.717407 1561.824829 1559.261719 1558.440063 1566.84729 1578.421265 1588.207764 1597.831665 1594.524048 1581.662842 1575.070068 1570.54834 1568.644897 1565.86499 1562.965088 1565.206787 1567.550171 1572.58606 1575.44165 1575.786011 1573.857178 1569.466064 1565.6427 1563.455811 1559.821289 1555.087769 1551.41626 1549.03186 1543.907471 1534.371704 1525.265137 1517.387573 1505.817017 1494.885986 1486.512939 1479.16687 1470.520996 1462.145142 1454.535767 1448.31665 1440.350952 1437.897339 1439.767334 1440.546631 1440.877808 1437.424927 1427.973267 1423.779419 1422.01355 1416.947388 1418.284302 1422.279785 1428.185547 1428.287476 1423.997192 1417.519531 1409.477417 1402.915527 1412.131836 1416.422852 1421.051636 1426.650391 1430.207153 1430.46936 1428.108032 1427.233276 1431.819946 1437.127686 1447.049072 1452.677368 1439.747192 1424.019409 1413.327637 1400.563477 1385.109863 1370.564331 1357.220947 1337.734131 1338.583984 1358.077026 1369.033081 1382.314941 1392.773315 1401.539917 1403.472534 1401.903931 1399.753418 1396.735474 1393.382446 1390.189087 1387.254883 1383.772949 1381.139771 1377.590942 1371.953491 1367.697266 1362.047363 1355.469849 1354.630127 1353.098511 1350.74939 1349.657715 1348.292114 1345.727051 1342.796753 1343.276367 1344.163208 1343.433105 1341.967529 1340.88501 1339.859009 1337.778442 1333.904175 1327.375 1317.612183 1306.867065 1308.046387 1308.62146 1308.980347 1310.158569 1311.599609 1312.05481 1313.306519 1314.524536 1323.725098 1337.910889 1351.43103 1359.977051 1366.146118 1369.488647 1374.249146 1378.144531 1379.352661 1378.792358 1376.827881 1373.606323 1370.56897 1368.355225 1366.35376 1365.060059 1368.754395 1374.349365 1377.926636 1380.546997 1381.396362 1381.503418 1380.597778 1368.867554 1355.784668 1347.268921 1345.80188 1354.362305 1362.640747 1371.276245 1377.705933 1378.844604 1386.87915 1394.594482 1400.482788 1404.445923 1407.233643 1408.360352 1410.169434 1413.577026 1421.457642 1429.043945 1439.893188 1450.053345 1455.353882 1455.726074 1453.056274 1447.845459 1441.981323 1437.911743 1442.787476 1447.421143 1448.905151 1448.794556 1446.774902 1441.089355 1441.507324 1442.347412 1441.895142 1438.138306 1436.723511 1433.99292 1429.688599 1426.63916 1423.675293 1420.460815 1417.297119 1414.645386 1413.317627 1413.988281 1415.204956 1415.779785 1415.16626 1412.914062 1408.727661 1403.218506 1397.428955 1391.209229 1389.741943 1396.155151 1403.722778 1412.94812 1414.485718 1409.305298 1400.887695 1389.780029 1385.2146 1382.621826 1385.06604 1385.856934 1385.443604 1384.743896 1384.583862 1383.99939 1383.037964 1381.40564 1378.937378 1375.681274 1371.174927 1366.723022 1361.52356 1356.643188 1352.005249 1345.985596 1339.815063 1333.767578 1326.239868 1316.135864 1308.601685 1304.045898 1297.2229 1292.252441 1305.451904 1320.174805 1331.958618 1338.78064 1339.86145 1338.674561 1333.507446 1326.137573 1317.363525 1311.331665 1318.380371 1327.145874 1333.68042 1339.625977 1343.636475 1344.507446 1343.194824 1337.547241 1332.829468 1332.787842 1332.839355 1332.223267 1333.681152 1335.962524 1338.671265 1339.706787 1340.425293 1341.283325 1350.265259 1353.549316 1357.428833 1360.041138 1361.330078 1361.181885 1359.877197 1357.5896 1354.349121 1351.522949 1351.014404 1353.114868 1357.798584 1363.647217 1366.701172 1364.549316 1353.111816 1338.905884 1327.92627 1332.460083 1345.07605 1357.884399 1368.506104 1377.748901 1384.226807 1392.755859 1405.071533 1404.297119 1388.886719 1376.158691 1362.36145 1364.439209 1370.415039 1378.96521 1387.441772 1392.601929 1394.186157 1393.218628 1391.907471 1387.549561 1381.244141 1369.49231 1356.367676 1365.903564 1375.922607 1379.442261 1373.292603 1365.892456 1353.390869 1336.982422 1325.621704 1306.470947 1298.658325 1294.328735 1298.119385 1304.043945 1312.08667 1312.34668 1302.749023 1297.934692 1293.425537 1292.388794 1294.68689 1301.323853 1306.322021 1301.569702 1296.547241 1292.275513 1289.385864 1286.498779 1283.631348 1280.750366 1279.835449 1281.210571 1282.92749 1283.844238 1283.515991 1282.578369 1281.733154 1281.691162 1280.237793 1277.589111 1278.855347 1279.153564 1277.89917 1276.97229 1280.651245 1283.496216 1286.314819 1288.466919 1286.292725 1282.706665 1274.187134 1264.217773 1258.693237 1261.815308 1266.258667 1274.568726 1285.224121 1291.980957 1292.761475 1293.100342 1291.018433 1282.117798 1267.664062 1250.626953 1244.903198 1247.887451 1251.486572 1255.606689 1266.768311 1279.088013 1295.072021 1304.782593 1304.333252 1302.349365 1300.849243 1300.122192 1299.610718 1298.188354 1295.541626 1294.196655 1292.777832 1291.359619 1290.140259 1289.023193 1286.788452 1284.290527 1282.399902 1281.138062 1279.963989 1278.605835 1276.786987 1274.886963 1272.950684 1271.500732 1270.403442 1269.582153 1268.321045 1265.828857 1261.936035 1257.367554 1249.874268 1243.458496 1244.597412 1242.053101 1242.205688 1247.709595 1254.95105 1256.375244 1250.153564 1246.376343 1251.339844 1253.793823 1254.489136 1255.640869 1257.106323 1257.287476 1255.994507 1253.995239 1252.537476 1250.480957 1246.935303 1243.802124 1242.106934 1242.649536 1241.190918 1241.23999 1243.207153 1243.24585 1243.479126 1243.311279 1242.595581 1242.756714 1242.687134 1241.808105 1239.407837 1237.370972 1236.79126 1237.272461 1236.202026 1234.881836 1233.085083 1231.19043 1229.529907 1228.160767 1227.290283 1226.227295 1225.018433 1223.523682 1221.925171 1220.210571 1219.196533 1218.760864 1218.435791 1218.48877 1218.744263 1219.143433 1219.122803 1219.006348 1218.716431 1218.071533 1216.668579 1214.923096 1214.106812 1213.606812 1213.25708 1212.928589 1212.498657 1211.861206 1211.065308 1210.434448 1209.879028 1209.368286 1208.481323 1207.449951 1208.097534 1209.051758 1208.827637 1208.260132 1208.288452 1208.370972 1208.187744 1208.66272 1211.825562 1214.632812 1217.642334 1219.680176 1219.854614 1220.071167 1220.106445 1219.840698 1219.730103 1219.376587 1218.788086 1218.84436 1218.957275 1219.648804 1220.111816 1220.200073 1219.980347 1219.575684 1219.498169 1221.825073 1224.37561 1226.140869 1227.523193 1228.465698 1229.234131 1229.976562 1231.307861 1233.466919 1234.9198 1236.224976 1237.941284 1240.395386 1243.040894 1246.211304 1248.799561 1250.347656 1250.065063 1248.375366 1245.642212 1241.110229 1235.158081 1229.752686 1226.928955 1224.67334 1222.715088 1219.860962 1215.213013 1210.96582 1207.224243 1200.848511 1200.71814 1204.536621 1210.72583 1223.262329 1234.819946 1239.757324 1243.278687 1247.495117 1253.36377 1259.244263 1264.520264 1269.205566 1272.391235 1275.36084 1277.647217 1265.282715 1242.837524 1234.67688 1221.360596 1213.045898 1215.553345 1212.618164 1214.328125 1228.085083 1236.700317 1230.649292 1234.95752 1236.36438 1237.296997 1237.912476 1237.362183 1235.710327 1230.551025 1226.953003 1228.27124 1229.393066 1225.276611 1212.68335 1195.305298 1177.01123 1158.467041 1139.131958 1145.839966 1164.65979 1178.164795 1190.478882 1210.69043 1221.821289 -1393.66333 1414.501709 1430.279541 1445.213257 1461.641113 1479.994385 1502.522339 1525.188599 1538.821045 1544.820923 1548.546997 1550.487671 1551.038452 1551.104126 1551.207764 1551.515503 1554.417236 1556.412964 1558.578491 1560.821777 1561.683228 1561.728638 1563.486938 1565.627197 1567.547729 1569.468018 1569.739746 1568.658813 1566.269653 1570.464478 1580.634888 1589.893799 1593.397705 1591.055298 1587.346802 1582.384399 1575.627197 1575.628174 1573.569336 1572.005859 1572.26355 1570.993408 1572.916016 1576.212402 1576.758301 1575.273193 1571.916748 1567.812134 1564.269409 1560.217163 1557.089111 1554.584229 1552.676636 1550.796631 1541.680542 1529.856445 1519.869385 1509.745728 1497.0354 1488.320923 1480.397461 1471.835327 1462.056274 1451.054443 1448.604004 1442.199707 1441.268677 1441.802856 1440.442139 1438.004883 1432.194458 1426.399048 1422.976562 1424.893799 1427.842041 1430.274658 1429.457031 1428.244141 1425.667847 1420.307739 1414.75354 1411.842896 1414.479492 1421.138062 1425.831787 1427.964355 1429.778931 1432.179932 1432.488403 1433.073853 1437.539307 1440.080444 1441.786865 1443.353027 1439.661743 1429.19104 1418.447754 1408.135864 1395.413818 1381.528442 1368.502075 1355.426758 1340.789551 1340.478149 1360.016724 1371.884644 1385.254272 1397.708862 1408.148071 1408.659058 1405.704468 1402.572388 1399.266724 1395.86145 1392.146362 1387.158569 1382.294922 1378.41394 1373.980713 1369.095581 1364.75354 1356.751465 1352.089844 1349.906006 1348.10437 1345.906128 1344.327026 1341.991333 1338.861938 1332.216797 1329.885132 1327.889526 1325.350464 1326.220703 1329.104004 1329.613159 1328.634644 1323.981689 1317.398804 1311.622559 1307.829224 1310.292847 1311.833008 1313.806763 1316.592651 1319.527954 1319.717163 1316.657227 1314.206543 1321.002075 1330.377197 1344.604248 1353.415649 1359.090698 1364.765015 1372.142456 1379.933716 1381.835083 1382.349854 1382.004517 1379.130249 1376.039795 1373.473755 1371.428223 1369.66687 1371.067017 1374.909912 1378.518921 1381.325195 1381.786743 1381.325684 1377.078491 1364.958984 1358.95813 1354.219727 1346.440063 1355.264038 1366.498901 1380.688232 1387.207275 1392.148926 1396.046875 1400.32959 1405.250244 1408.929321 1412.501221 1414.916138 1415.367554 1416.560913 1423.868774 1433.448242 1444.106934 1451.735718 1456.810181 1458.797241 1455.074585 1449.484741 1445.02124 1444.723877 1449.417358 1452.407349 1453.244751 1452.97168 1450.917603 1449.092773 1448.921753 1448.290771 1448.283081 1448.047729 1445.35376 1440.391479 1434.62085 1429.641602 1425.658203 1422.180786 1419.116089 1416.232422 1413.938965 1415.389404 1417.578735 1418.408203 1417.817505 1416.676636 1413.820312 1409.777588 1405.923096 1401.583252 1396.500122 1393.693604 1400.105957 1406.00415 1410.206543 1408.678345 1402.454346 1395.143921 1391.021606 1389.20813 1389.933838 1390.474731 1389.893433 1389.325684 1389.982056 1390.106445 1388.536133 1386.521606 1382.943359 1378.335205 1373.0 1366.611694 1360.320557 1353.974731 1349.265137 1343.499023 1337.557373 1332.019409 1322.866943 1315.026733 1310.359375 1305.245728 1295.584106 1296.745483 1307.505005 1321.487061 1332.983765 1342.09082 1343.009521 1341.915649 1334.732666 1326.500854 1318.029785 1313.345459 1321.970337 1332.61731 1338.480591 1343.846436 1348.272949 1349.128906 1347.626343 1344.272949 1342.164429 1341.15979 1341.113403 1341.240234 1341.914185 1342.517212 1342.241821 1341.457153 1342.32373 1345.862671 1350.031738 1353.765259 1356.512329 1360.881348 1362.991089 1363.453613 1362.633179 1360.658203 1357.937988 1356.071899 1354.291504 1356.584839 1360.625732 1365.518311 1367.029175 1366.076172 1355.520996 1342.866821 1332.48584 1331.261353 1344.375 1356.893555 1368.251099 1376.605591 1384.278687 1393.170532 1405.618774 1406.174805 1397.329346 1384.914673 1367.850952 1372.261475 1381.160767 1386.546631 1391.487915 1399.164551 1399.498169 1397.301392 1394.133545 1387.578369 1378.786011 1366.124146 1366.873657 1378.930298 1382.433228 1378.241211 1367.148682 1355.229614 1341.411377 1330.880615 1314.666382 1301.760864 1298.380737 1303.457642 1304.019409 1312.36084 1323.570679 1325.528564 1312.784912 1303.597778 1298.801025 1297.863647 1299.030396 1302.711182 1305.967896 1303.452759 1298.22937 1293.276611 1290.19458 1287.112061 1283.350708 1280.332886 1280.942627 1283.566162 1285.792358 1287.173706 1287.559204 1287.949097 1287.648193 1286.960449 1284.198242 1279.760864 1283.616333 1284.664429 1283.2854 1279.627197 1284.624146 1289.903198 1293.616211 1293.49292 1286.203491 1278.318115 1268.351807 1260.186523 1261.735962 1265.378662 1270.475586 1278.335693 1290.928467 1295.861206 1296.586426 1296.213501 1293.599854 1282.250732 1269.728516 1254.936646 1246.79248 1247.677856 1251.871338 1257.032959 1267.498413 1279.810547 1294.50415 1305.065796 1305.505371 1303.820068 1302.211426 1301.762329 1302.309937 1302.737793 1302.092773 1300.531616 1297.818481 1295.157227 1294.032837 1293.81189 1292.046509 1287.549316 1284.641113 1282.796265 1281.856689 1281.07373 1279.673218 1277.205933 1274.644043 1272.828613 1271.579712 1270.736206 1269.529907 1266.016235 1261.134521 1254.763184 1244.863403 1246.930664 1258.251831 1249.761108 1243.27002 1252.081055 1258.09436 1258.242676 1255.341064 1254.199707 1256.624756 1258.365845 1258.934448 1260.009399 1261.03064 1260.954224 1259.654663 1258.307983 1257.151611 1255.266235 1249.193848 1244.148071 1245.715942 1244.785767 1242.740234 1243.109009 1245.617432 1246.371216 1247.209839 1246.645142 1245.817139 1246.087036 1245.717896 1244.801636 1243.023071 1241.038208 1241.011719 1241.075684 1238.411865 1236.539429 1234.429565 1232.170898 1230.540039 1229.809937 1228.912964 1227.637695 1226.10498 1224.388306 1222.067627 1219.789062 1219.588989 1219.54895 1219.080811 1219.230835 1219.988525 1220.457886 1220.318237 1220.307983 1220.02356 1219.639282 1218.232422 1215.939575 1215.358398 1215.12207 1214.877441 1214.535522 1213.934204 1213.381226 1212.670166 1211.940063 1211.405151 1210.768799 1209.968262 1209.2948 1209.558594 1209.859619 1209.904907 1209.720093 1209.677368 1209.691772 1209.716919 1210.449219 1212.232056 1214.455933 1216.89978 1219.109741 1219.796631 1219.789551 1219.502808 1219.104248 1218.874878 1218.760986 1218.735596 1218.848511 1218.93103 1219.160278 1219.363159 1219.556885 1219.543457 1219.517212 1220.599976 1221.913818 1224.333618 1226.03894 1227.293457 1228.325073 1229.129883 1229.569824 1230.083862 1231.3927 1231.91394 1232.623169 1233.625488 1234.851196 1236.60022 1238.889893 1240.567505 1240.90332 1240.836914 1239.772583 1237.319824 1233.897217 1229.815186 1225.457031 1222.49707 1221.642578 1220.550781 1217.595215 1213.358398 1209.634521 1204.509033 1201.254517 1205.64563 1213.668213 1222.852051 1233.30127 1240.889282 1245.788208 1249.599243 1252.859009 1258.22937 1265.580078 1271.071045 1274.466675 1277.620483 1280.718018 1279.070312 1259.279053 1239.632812 1223.808228 1208.077393 1197.328125 1203.942139 1195.865112 1207.499268 1224.643433 1231.345947 1223.250732 1230.684326 1235.463013 1240.471924 1245.164185 1245.90979 1244.290161 1238.957275 1236.826294 1238.704468 1240.823853 1230.62793 1213.118042 1198.366577 1183.556519 1161.35498 1139.548096 1145.643188 1167.775269 1185.065918 1194.330811 1209.130005 1228.661865 -1382.839478 1399.85791 1410.198608 1421.78064 1448.056519 1474.440552 1496.007446 1513.985596 1538.31543 1549.119751 1552.042969 1553.79541 1555.416748 1557.457764 1559.92334 1560.243286 1560.670898 1562.700317 1565.637817 1568.209351 1570.35791 1572.930664 1575.61853 1577.55188 1578.573486 1579.024536 1578.873535 1577.927368 1576.682739 1575.030029 1585.074951 1592.55603 1594.539795 1594.577881 1591.514404 1585.434082 1581.704224 1581.519897 1579.304077 1577.973145 1576.975586 1576.071899 1576.312012 1578.040283 1577.890503 1575.660645 1572.309448 1569.192749 1564.897705 1560.486084 1558.529907 1557.207153 1554.846802 1551.779053 1547.727539 1532.446899 1520.096436 1509.679443 1497.553711 1488.921265 1480.492676 1471.109497 1460.084229 1450.692749 1452.707642 1452.249756 1447.161377 1441.544556 1438.656738 1435.817017 1431.410889 1428.676758 1432.519043 1438.568604 1441.116821 1436.964233 1431.359253 1426.512573 1421.988892 1417.20813 1413.134521 1414.357788 1421.387939 1428.126465 1433.028198 1435.610474 1435.846436 1433.705933 1432.610718 1433.707275 1438.505981 1440.451416 1436.278809 1431.385864 1426.045044 1419.081177 1410.307861 1400.283203 1387.820435 1376.453491 1364.318848 1352.54126 1339.328979 1347.719238 1361.332275 1373.462524 1389.28186 1403.532593 1416.549316 1413.241821 1408.857788 1405.296021 1401.195557 1396.803223 1392.291016 1384.314331 1377.01123 1371.876343 1367.587036 1362.990112 1358.152588 1353.60083 1350.106079 1347.005127 1343.710449 1340.834595 1338.477051 1335.214355 1331.719604 1320.454102 1315.098267 1313.958496 1313.462891 1312.57312 1312.777344 1314.857056 1315.197754 1313.987793 1311.166748 1308.549927 1309.989746 1312.851685 1315.171875 1317.578857 1321.171021 1324.359863 1325.285767 1323.334229 1318.419312 1318.685791 1325.464355 1335.514648 1344.577515 1351.350464 1359.145142 1366.446777 1375.623291 1380.752808 1384.723999 1387.86731 1385.21167 1381.171753 1378.621582 1376.698486 1374.830444 1375.554688 1376.043091 1378.936523 1382.133545 1382.677246 1381.932983 1377.359253 1370.259033 1364.963989 1359.006592 1352.15686 1353.86792 1369.338501 1383.960571 1393.613892 1402.021484 1405.528564 1406.754639 1410.233765 1413.488159 1417.331421 1420.391724 1422.018066 1423.471313 1424.890625 1435.876587 1446.740601 1455.2948 1462.235596 1462.695801 1457.629272 1450.571533 1449.865723 1451.483276 1455.196777 1458.248779 1458.965332 1458.633423 1456.753174 1456.125977 1455.94043 1455.609253 1455.303345 1453.986328 1452.481079 1444.647095 1437.869141 1431.429443 1427.253052 1424.387329 1422.253418 1417.904053 1416.274902 1418.681763 1420.392212 1421.004395 1420.754272 1419.721436 1417.798706 1415.734009 1413.068481 1409.102905 1403.310181 1397.343506 1399.294434 1404.32251 1413.358643 1412.339966 1402.793945 1399.784546 1397.598755 1395.932129 1395.908936 1396.164673 1395.784668 1395.370483 1395.424805 1395.376343 1394.226807 1392.363892 1388.764648 1381.619385 1375.619019 1367.926147 1361.372559 1353.026978 1343.591064 1339.685547 1332.885132 1327.508301 1318.226929 1316.550659 1311.688721 1304.074585 1295.46936 1299.577759 1308.599487 1322.415527 1336.192505 1344.95459 1345.769897 1344.894287 1339.029663 1330.343628 1323.959473 1316.136963 1323.086914 1334.410156 1341.336182 1348.918579 1354.294556 1354.448242 1352.607788 1349.628784 1347.563721 1346.547974 1346.414429 1347.043701 1347.557739 1347.700073 1347.746338 1347.449951 1346.829956 1348.850708 1352.03064 1355.434692 1358.23291 1361.959839 1364.787476 1365.30896 1365.253418 1364.126465 1362.215698 1360.614502 1360.955566 1361.827148 1362.909302 1365.298462 1367.078369 1366.297485 1357.888428 1346.241821 1337.529053 1330.225342 1342.787964 1353.473755 1365.859131 1375.80603 1383.604248 1392.680298 1404.582275 1406.526855 1402.271606 1393.138062 1379.525757 1378.365723 1386.540161 1393.731079 1401.669312 1404.839355 1404.560181 1400.285645 1392.710693 1387.525146 1380.52124 1371.192017 1380.549438 1387.128052 1384.161499 1376.119995 1364.180908 1352.272339 1338.017822 1321.807617 1304.494507 1302.878662 1308.863403 1317.461304 1319.504639 1322.230225 1333.080688 1332.869141 1318.025879 1308.961426 1307.221924 1305.006592 1302.336914 1306.978638 1316.219727 1305.865234 1300.970215 1295.657837 1291.76123 1288.250977 1282.227783 1281.351196 1283.699707 1286.563965 1289.72229 1290.917236 1291.536865 1293.159058 1293.836914 1292.838257 1288.575562 1285.798706 1290.437256 1292.020264 1291.630615 1288.476074 1291.569092 1294.477173 1294.362549 1289.56189 1281.567627 1271.9375 1264.34729 1261.243164 1264.101929 1268.343994 1275.280518 1283.759277 1294.391235 1298.308105 1299.274414 1298.367554 1294.944214 1283.257812 1270.491211 1258.068115 1248.579224 1247.730347 1252.027588 1257.35376 1268.950073 1280.520996 1293.700195 1303.212646 1305.88147 1303.926758 1302.628662 1302.475952 1304.246094 1305.478516 1306.05188 1306.010254 1300.702759 1296.457642 1294.705322 1293.285767 1291.625977 1288.242432 1285.455811 1283.5271 1282.435303 1281.899292 1280.862305 1277.912964 1275.12561 1273.275024 1272.157837 1271.234619 1269.537842 1265.123413 1258.347168 1245.260742 1245.208984 1258.874634 1261.31189 1257.282715 1243.021729 1253.567993 1259.695557 1259.72522 1255.719849 1257.967285 1260.976807 1262.783325 1263.757812 1264.227539 1264.578247 1264.529419 1263.085449 1261.246948 1259.445557 1257.320801 1246.797729 1245.709595 1249.216797 1247.098389 1243.672607 1243.822754 1245.030151 1249.237549 1251.139404 1250.633423 1250.114502 1249.925415 1249.082153 1247.206909 1244.143433 1242.843628 1244.334229 1244.389282 1240.942261 1238.659058 1236.139526 1233.219116 1232.213623 1231.873413 1230.481323 1229.006836 1227.610962 1225.815674 1223.771484 1221.791016 1221.114136 1221.033081 1219.861206 1219.941528 1221.002808 1221.426636 1221.432007 1221.264404 1221.039185 1220.566284 1219.658203 1216.685913 1216.691772 1216.704468 1216.438721 1216.012695 1215.418335 1214.674438 1214.018799 1213.364502 1212.715942 1212.168579 1211.701172 1211.237061 1211.288208 1211.281494 1211.204102 1210.98291 1210.913086 1211.018433 1211.176636 1211.822021 1212.789185 1214.286011 1215.825806 1217.526611 1218.564575 1218.903442 1218.840454 1218.631958 1218.627563 1218.723022 1218.759521 1218.959351 1219.23645 1219.533325 1219.858154 1220.03479 1220.40564 1221.321045 1222.391724 1223.511475 1225.145264 1226.592163 1227.690674 1228.693359 1229.400757 1229.804565 1229.966797 1230.142212 1230.368164 1230.483154 1230.912476 1231.062256 1231.354492 1232.220947 1232.886963 1233.056763 1232.302856 1231.326294 1229.383179 1227.072632 1224.896118 1220.765625 1218.321167 1217.854492 1216.814453 1213.908569 1210.394409 1207.23938 1201.596313 1207.808594 1215.689209 1224.926392 1232.779663 1240.330444 1246.787842 1252.192139 1256.573486 1259.694214 1265.731812 1271.176147 1276.257812 1279.272949 1282.876099 1284.155884 1269.591553 1244.057495 1227.44519 1217.80896 1201.447876 1191.396484 1187.31897 1185.198486 1205.99292 1221.425293 1222.692017 1217.872925 1222.035278 1230.058228 1238.495483 1244.838135 1247.838745 1249.080566 1247.928589 1247.631592 1249.392822 1246.845093 1226.737305 1209.379639 1192.92334 1177.654053 1157.017578 1140.509399 1143.411499 1161.631348 1180.733398 1191.97522 1208.869507 1223.670654 -1361.93335 1379.321655 1399.778076 1431.018799 1451.291504 1468.021606 1485.443359 1512.166626 1533.658569 1548.295288 1552.7052 1555.347534 1558.356689 1561.331177 1564.436035 1566.189331 1567.849365 1570.429199 1573.05542 1576.809448 1581.887573 1584.730103 1586.066895 1587.296875 1588.269775 1588.545776 1588.825317 1588.636108 1587.153687 1585.827515 1590.912476 1597.969604 1599.994873 1599.259644 1596.375732 1586.798096 1587.284302 1587.25354 1585.591675 1583.553955 1581.740967 1580.904419 1580.876709 1581.398071 1580.175781 1577.229858 1573.25061 1572.437134 1568.929077 1563.50061 1561.251343 1560.369019 1557.049927 1552.711182 1546.117554 1528.486938 1516.689209 1506.896851 1497.42688 1489.244751 1480.565552 1471.512207 1463.01355 1457.996094 1455.860107 1453.019165 1446.099854 1438.886719 1438.254395 1437.87561 1439.271851 1440.594238 1441.872437 1442.546509 1441.346069 1435.989136 1429.05896 1424.980225 1421.748413 1417.453979 1418.249634 1421.191772 1427.319458 1435.05249 1440.505615 1441.278198 1438.052734 1431.020508 1426.213745 1423.546631 1422.336792 1420.29187 1418.300537 1415.423828 1411.895874 1404.626465 1396.376831 1389.921631 1378.4104 1367.862183 1358.803345 1342.44519 1343.831543 1350.872314 1363.031006 1376.125366 1394.010864 1409.046387 1417.952026 1415.059082 1410.824097 1406.492798 1401.716797 1396.599854 1390.721313 1380.18042 1366.45813 1361.628418 1355.71228 1353.377563 1352.34668 1350.51123 1347.62085 1344.955811 1342.622437 1336.594604 1330.192505 1327.495972 1316.500854 1315.69043 1315.963745 1317.448486 1317.028809 1314.969116 1313.421143 1311.527954 1310.806763 1310.13147 1309.863281 1311.025024 1313.305176 1315.867065 1318.619019 1322.995239 1327.106567 1330.391235 1332.540283 1332.066406 1329.893433 1316.560425 1322.49585 1328.852173 1336.293213 1345.101196 1353.044312 1359.524414 1365.998901 1374.147339 1381.74939 1391.541748 1390.140869 1385.752563 1382.617798 1380.73584 1378.826904 1379.171021 1379.6427 1381.071655 1384.00647 1384.898071 1383.848633 1380.230957 1375.076294 1368.59082 1362.312744 1356.738037 1351.261963 1367.58606 1383.450928 1395.011719 1404.679688 1408.436157 1411.852173 1415.536987 1418.422729 1422.679932 1426.121338 1429.071655 1430.815186 1431.927246 1436.853882 1447.805542 1459.731689 1466.587158 1466.961914 1461.910156 1453.109131 1454.441772 1459.435303 1462.982422 1464.669434 1465.434326 1465.299438 1464.625 1463.921143 1464.371948 1463.921387 1462.041626 1458.307129 1453.61438 1445.260132 1437.528564 1431.460815 1426.864502 1425.588013 1424.98999 1425.106812 1423.564819 1423.725464 1424.256226 1424.289062 1423.897095 1423.248657 1422.307983 1420.781616 1418.949951 1416.207031 1410.080933 1401.810425 1399.688599 1408.293091 1416.931763 1416.434082 1412.207153 1406.645752 1404.660278 1401.858154 1402.302368 1403.012085 1401.869995 1401.985352 1400.975342 1401.002441 1401.304077 1399.526733 1394.230591 1387.337036 1379.819702 1372.203369 1365.731567 1357.146118 1343.091553 1338.035156 1332.171265 1327.947388 1323.554565 1319.857666 1314.533325 1305.236816 1296.634277 1301.805176 1309.27124 1319.845337 1336.074097 1346.88855 1348.755981 1348.05188 1342.27771 1336.864502 1331.171753 1321.448364 1320.903687 1333.150146 1341.58252 1351.809204 1356.03064 1356.325317 1355.793213 1354.202026 1351.500488 1350.844971 1351.288452 1352.392578 1352.822021 1353.168335 1353.786377 1353.911499 1352.674316 1351.51416 1352.756714 1356.677368 1360.914307 1364.566406 1366.767944 1367.560791 1368.107178 1367.782471 1366.021362 1364.408325 1365.324219 1367.204102 1366.227539 1364.990601 1370.079956 1368.832031 1362.173706 1355.430054 1348.251953 1332.443848 1341.774658 1350.710938 1362.823608 1373.880249 1382.900757 1392.191284 1404.19397 1408.001465 1406.094238 1398.37561 1388.294678 1381.831787 1390.561035 1400.507935 1406.738037 1408.925781 1408.246094 1402.898926 1399.727905 1394.537476 1387.71814 1382.169067 1392.822876 1392.288452 1384.668335 1374.726562 1362.700928 1351.033936 1336.633545 1317.690552 1305.53064 1316.153687 1322.119507 1327.276367 1332.974731 1336.683105 1344.607666 1336.890991 1320.423096 1313.996582 1315.266724 1311.36145 1304.616455 1309.697876 1317.473511 1315.29248 1304.894409 1300.10083 1294.759399 1290.327393 1286.419922 1285.662476 1287.496338 1289.81543 1293.69873 1295.369751 1296.312256 1298.686646 1300.272583 1299.350098 1294.398682 1291.199463 1295.53894 1298.055664 1297.264282 1292.988892 1294.320312 1295.228149 1289.844482 1283.392822 1275.450195 1266.947754 1262.325439 1263.264404 1266.461548 1271.678589 1280.624878 1291.193848 1298.088379 1301.481323 1302.253418 1301.119873 1296.536865 1284.474121 1270.339722 1259.263306 1249.369995 1248.408691 1251.569946 1256.157349 1269.000366 1281.200684 1293.906372 1303.193481 1306.131714 1304.728638 1302.340698 1301.48938 1303.876221 1305.8302 1305.049927 1301.440063 1297.497559 1294.087891 1292.376831 1291.429565 1289.593994 1287.299683 1284.879761 1282.873779 1280.956543 1279.783569 1278.640381 1276.219849 1274.083618 1272.466064 1271.809448 1270.533447 1264.469116 1258.315796 1254.0802 1250.671753 1257.988159 1264.696533 1266.640869 1255.926758 1243.809692 1255.908691 1262.308838 1263.389771 1261.314819 1262.910889 1265.912842 1268.045044 1268.385498 1268.189941 1268.563354 1268.190063 1266.005615 1263.192871 1260.083374 1256.718262 1252.383423 1254.944702 1254.223633 1249.959717 1243.978027 1246.710815 1243.799438 1250.596924 1256.395996 1255.177124 1253.817749 1254.255981 1253.139404 1248.646851 1244.22583 1244.573975 1246.342041 1246.421265 1243.041138 1241.026855 1238.400146 1236.106689 1234.605591 1233.442627 1231.44751 1230.185059 1228.887817 1227.580322 1226.197632 1224.815186 1223.59021 1222.779541 1221.976685 1221.705444 1222.10376 1222.505737 1222.381958 1222.031128 1221.44812 1220.989502 1219.923828 1218.084473 1218.723022 1218.628052 1218.28418 1217.463867 1216.637573 1215.964111 1215.240845 1214.655029 1214.12207 1213.750732 1213.231445 1212.978027 1212.914062 1212.747925 1212.568115 1212.354248 1212.338989 1212.376709 1212.496582 1212.846558 1213.443604 1214.198364 1215.217651 1216.274292 1217.093018 1217.676636 1218.016479 1218.175781 1218.380737 1218.605469 1219.129395 1219.641479 1219.710571 1219.776978 1220.111206 1221.614624 1222.594849 1223.496582 1224.359131 1225.389893 1226.413086 1227.549072 1228.707275 1229.61499 1230.188843 1230.330444 1230.21582 1230.11499 1229.816772 1229.703979 1229.431519 1229.396973 1229.344849 1229.282593 1229.498291 1228.601685 1227.119751 1225.127808 1222.448486 1219.648315 1220.424683 1220.180542 1216.776489 1214.685913 1213.139526 1210.680054 1208.059326 1203.547119 1205.869385 1212.755493 1222.024292 1229.034912 1237.931763 1246.506714 1251.770996 1257.604126 1262.57373 1268.20166 1271.873901 1277.427246 1281.951294 1283.878174 1290.516846 1286.436401 1259.920532 1229.620728 1211.800415 1201.398926 1198.986572 1190.283813 1178.26123 1180.922485 1197.893799 1220.475464 1220.445557 1217.470825 1219.530273 1231.470947 1237.897949 1244.079346 1249.220337 1252.762573 1255.256104 1258.626709 1258.553711 1242.119751 1222.876099 1205.575317 1190.250488 1173.942017 1159.463257 1141.829224 1143.55481 1165.906128 1180.407715 1194.832764 1211.122559 1231.508789 -1390.012817 1409.420776 1423.066528 1440.985596 1455.026123 1472.593384 1488.513672 1509.373047 1526.817383 1538.859009 1550.726196 1555.450928 1559.850098 1563.578003 1567.469971 1570.900269 1574.018188 1577.270874 1582.574341 1588.163696 1590.789429 1592.662354 1593.858154 1594.623779 1595.600098 1596.63623 1598.786011 1601.29248 1601.906616 1598.949219 1600.108154 1604.338745 1606.289307 1605.72522 1602.755493 1596.549927 1593.849731 1591.747925 1589.864014 1587.523315 1585.414185 1584.4021 1584.443848 1584.546387 1583.431763 1581.547607 1578.652832 1576.535034 1573.215698 1568.529663 1565.168213 1563.09729 1558.467285 1549.498169 1537.615723 1522.108765 1511.573486 1503.722656 1495.615967 1488.442627 1480.937744 1473.81604 1465.553345 1459.984985 1455.741089 1452.153931 1444.266968 1438.378662 1438.848633 1443.376343 1446.443359 1447.67688 1446.191284 1442.736084 1438.499634 1432.0 1426.337158 1425.057007 1424.392944 1426.666504 1427.369019 1427.721069 1434.628784 1441.053345 1443.276367 1443.304932 1434.672729 1421.727173 1409.926392 1403.534668 1403.671631 1404.140625 1404.543945 1402.756226 1396.498535 1388.104126 1384.157349 1378.866821 1371.124146 1362.209351 1351.821899 1341.221191 1349.591064 1356.943726 1368.057495 1380.017334 1396.826294 1413.18396 1418.209106 1416.308228 1411.99231 1406.860352 1401.702271 1396.474609 1390.865967 1380.972534 1366.099243 1356.134644 1352.488892 1351.216064 1350.156616 1348.289673 1345.04541 1342.319702 1339.852661 1333.498413 1326.747192 1319.977417 1316.387573 1321.903076 1329.364746 1327.948608 1322.584961 1317.145874 1316.563721 1318.025757 1317.346313 1316.447876 1314.533569 1314.779175 1316.741943 1320.018799 1324.471069 1329.522949 1334.761719 1339.35083 1343.848755 1345.086792 1344.054443 1324.337402 1319.413696 1323.788208 1328.917603 1338.862061 1345.33252 1351.458252 1357.926392 1366.713867 1374.721313 1382.260254 1388.295288 1385.264648 1383.520752 1382.524902 1382.110107 1381.952148 1382.525391 1384.517334 1386.821045 1387.745972 1386.924683 1383.789795 1379.014771 1372.018799 1366.308105 1360.247559 1352.41272 1362.575806 1378.473267 1391.28064 1403.337402 1409.634399 1414.747925 1419.206543 1423.260132 1427.812256 1432.484375 1435.66748 1439.781982 1444.021729 1447.669189 1451.481567 1463.193726 1474.340942 1474.205078 1464.071289 1465.953979 1464.880737 1468.701172 1470.994873 1472.409058 1473.24939 1473.40918 1473.473633 1472.124878 1470.09729 1468.062744 1465.250488 1460.769653 1452.394409 1444.129517 1437.89209 1432.652344 1427.463257 1429.148804 1429.272583 1429.348999 1428.557373 1428.314941 1428.258911 1428.011353 1427.422974 1426.732666 1426.586548 1426.402588 1424.354004 1420.186035 1415.553589 1405.286865 1401.98938 1410.628296 1417.610229 1419.706177 1418.474365 1414.085571 1410.473877 1408.515015 1407.696899 1408.074097 1408.437134 1408.540283 1408.359619 1409.092529 1409.324341 1405.719971 1399.127319 1390.053223 1380.40564 1371.991577 1365.311035 1357.961426 1346.846436 1338.515869 1333.744751 1330.283081 1324.18396 1319.282959 1313.340088 1303.261963 1297.399902 1306.205078 1311.67688 1320.201538 1335.246704 1345.037964 1351.730713 1352.922485 1350.011841 1344.660645 1338.990845 1329.31665 1319.2854 1330.714966 1339.276123 1347.93457 1354.647705 1356.834106 1356.668335 1356.045898 1354.512695 1354.390015 1355.444092 1358.052368 1360.924561 1362.289062 1361.258057 1359.133301 1357.273682 1355.694702 1353.870361 1354.514526 1362.090454 1366.792847 1369.217651 1370.701294 1371.44104 1371.450684 1369.528809 1365.521118 1369.891357 1373.83313 1374.866211 1374.248047 1376.01709 1374.540405 1368.901489 1364.413208 1357.713623 1339.008667 1341.647339 1350.916626 1361.563965 1372.616577 1382.436768 1393.456421 1405.794556 1410.804321 1412.468506 1405.892334 1396.513184 1389.428955 1389.491821 1402.842529 1409.397949 1413.312988 1413.973145 1410.396851 1406.498169 1401.330322 1393.02002 1395.039307 1395.00708 1391.328125 1382.797363 1372.016479 1360.22168 1345.966064 1332.567627 1310.745605 1322.072876 1330.57312 1333.032349 1338.47522 1345.281982 1351.335938 1353.729248 1340.101685 1330.415649 1319.041138 1323.843872 1320.52832 1314.993408 1311.714111 1312.853027 1315.082764 1309.978027 1306.124146 1298.793457 1292.47583 1290.354004 1291.172852 1292.389648 1291.71936 1296.415405 1300.873291 1302.432373 1304.586304 1306.930298 1306.784058 1301.251709 1292.422485 1299.715576 1304.185303 1304.607544 1296.395386 1297.209717 1292.64563 1281.341309 1276.798828 1268.488525 1264.452881 1263.625 1265.460815 1268.77124 1275.131348 1284.902832 1296.585449 1304.007568 1305.329224 1305.453857 1304.793579 1296.843994 1285.250854 1269.69751 1259.362061 1250.307739 1248.796753 1251.19873 1254.861572 1267.583862 1281.758789 1295.581787 1304.684814 1306.484985 1305.505005 1302.441284 1297.77832 1298.026245 1299.519287 1297.988525 1294.472168 1292.216064 1291.273193 1290.759277 1289.63916 1287.864014 1285.80481 1283.675903 1281.605469 1279.419556 1277.662598 1275.938965 1273.722778 1271.445923 1270.079102 1264.720337 1256.209839 1254.34021 1253.794434 1255.046997 1260.82312 1266.909058 1270.745728 1271.950684 1254.417969 1251.407349 1261.23291 1268.068848 1267.979126 1266.094849 1267.449585 1270.199097 1272.057129 1272.619263 1272.99585 1273.180176 1271.807617 1268.224731 1264.866089 1260.474976 1256.189819 1256.584473 1258.479858 1257.33313 1255.627441 1245.460083 1254.984375 1253.572876 1252.38916 1256.645142 1257.18811 1257.011353 1257.44043 1256.980835 1249.482422 1243.923462 1246.451904 1248.47583 1248.506714 1245.224121 1243.623047 1241.061035 1238.674072 1236.64209 1234.710938 1232.566284 1230.950562 1230.143677 1229.317627 1228.452515 1227.332031 1226.210693 1225.405518 1224.637207 1224.248291 1223.981934 1223.652832 1223.140381 1222.495117 1221.709839 1220.706177 1219.366577 1220.370239 1220.607178 1220.400024 1219.76416 1218.685181 1217.825439 1217.072266 1216.316895 1215.877563 1215.609985 1215.225098 1214.789795 1214.476318 1214.329956 1214.15332 1214.050049 1213.766235 1213.723999 1213.853638 1213.992432 1214.037964 1214.19043 1214.564087 1215.029541 1215.620117 1216.274658 1216.76416 1217.237793 1217.616455 1217.989136 1218.606323 1219.573608 1219.82019 1220.049438 1220.192139 1220.721191 1222.766846 1224.375732 1225.79248 1226.69751 1227.415894 1228.099243 1228.880005 1229.812012 1230.75769 1231.359253 1231.376709 1230.964111 1230.248047 1229.795776 1229.368652 1228.756226 1228.319458 1227.844482 1227.19043 1226.28894 1224.940186 1222.952271 1220.337646 1218.532715 1217.494019 1216.726929 1216.11792 1214.117432 1211.883057 1209.822266 1207.72937 1204.380981 1202.294922 1194.963501 1199.287109 1206.036621 1216.590576 1222.638428 1229.199585 1239.495117 1252.061646 1262.238159 1269.022705 1272.348755 1270.480225 1275.985107 1278.462769 1284.148071 1276.731201 1259.046997 1235.179565 1217.025513 1195.89624 1181.171997 1179.524536 1171.509766 1177.818115 1203.231079 1220.139648 1221.550415 1209.055664 1223.393799 1233.17627 1239.217529 1246.761841 1250.722778 1255.742554 1258.356079 1260.074951 1252.074707 1239.282837 1220.788208 1203.693604 1189.053345 1173.804077 1156.409424 1142.997681 1145.605225 1171.032837 1190.182129 1207.276245 1218.793457 1232.736206 -1392.798584 1414.154053 1429.103394 1439.294922 1450.320923 1462.122314 1477.510986 1495.989258 1514.706543 1530.058716 1540.297607 1552.302002 1560.249756 1565.300293 1569.58728 1574.399536 1578.39917 1582.611938 1587.994873 1593.178833 1596.339355 1599.372803 1601.657227 1602.663208 1604.114502 1606.237793 1608.70105 1611.379272 1612.972656 1612.034302 1610.457886 1611.744019 1612.579102 1612.599731 1609.54541 1603.060425 1599.32251 1596.657837 1594.067749 1591.322754 1589.154419 1588.144531 1587.828125 1587.675537 1586.638794 1585.848511 1584.599731 1579.999512 1574.543091 1569.719727 1564.955566 1562.688721 1554.944458 1541.444092 1526.435425 1518.329102 1509.630005 1499.321289 1492.33667 1485.7323 1479.894531 1472.195435 1462.813721 1458.167847 1453.54895 1450.709839 1444.469727 1441.753296 1450.978394 1453.490601 1453.50708 1452.814331 1448.527344 1439.671753 1433.435059 1426.520508 1426.527954 1425.821167 1427.536133 1430.322021 1433.45813 1436.521606 1442.215332 1446.100464 1445.280396 1441.737427 1426.221313 1411.493164 1398.725952 1391.628662 1388.65979 1388.322021 1388.840454 1387.515625 1383.042603 1376.667847 1372.740723 1369.501465 1364.292236 1358.670288 1349.763672 1347.673462 1358.067749 1368.412354 1375.83728 1385.514282 1398.594116 1416.936279 1419.429688 1417.309448 1413.057373 1406.929321 1401.456299 1396.692871 1391.439331 1383.63916 1372.105347 1360.837402 1353.679077 1351.188232 1349.413574 1347.107666 1344.041748 1340.485229 1335.562866 1328.42981 1322.911987 1317.062012 1324.495972 1337.864258 1339.173828 1335.488159 1328.572754 1323.464111 1323.158813 1323.27417 1322.394653 1320.559692 1318.083252 1319.068237 1321.72937 1325.425293 1330.616577 1338.419678 1344.260986 1349.295044 1353.230957 1354.131592 1351.371826 1335.162842 1329.138062 1323.30603 1322.155518 1327.568604 1335.407227 1341.836792 1348.873047 1356.523804 1364.038574 1373.04248 1380.2229 1382.949707 1382.954956 1382.68335 1383.128052 1384.089355 1385.32959 1387.464966 1389.790527 1390.651245 1390.285156 1388.845459 1381.928467 1375.231323 1370.990601 1366.383179 1357.583374 1358.696167 1371.145386 1384.810791 1399.800415 1409.0625 1416.536255 1422.28833 1427.292114 1434.001831 1439.551514 1444.15625 1449.052979 1454.536011 1459.837769 1464.134888 1473.171875 1478.05481 1478.005127 1475.598022 1478.105591 1477.224976 1477.638062 1478.380737 1478.921021 1479.231934 1479.072632 1478.218262 1477.41272 1474.19104 1470.369019 1467.185913 1461.556763 1450.339966 1443.511108 1438.146484 1436.874268 1435.95166 1436.170166 1435.563599 1434.733154 1433.546631 1432.827759 1432.363647 1431.771362 1431.102051 1430.298828 1429.460083 1428.647095 1427.68042 1422.097412 1416.910767 1409.848022 1405.374146 1412.147339 1420.285645 1424.627441 1424.22168 1421.121704 1416.36438 1414.317139 1412.456909 1412.858398 1414.98999 1416.937988 1416.935791 1418.685303 1417.141968 1407.8396 1397.560669 1387.106934 1376.37793 1365.989868 1361.225952 1355.614014 1345.033691 1337.335083 1332.388672 1328.540161 1321.857788 1316.091675 1311.270264 1303.904175 1300.670166 1307.966797 1314.576538 1324.476074 1334.685425 1343.539062 1354.491943 1357.850098 1357.11377 1352.424927 1345.303345 1335.268311 1324.780762 1324.553711 1333.925903 1341.032471 1349.448975 1355.766113 1357.242065 1357.457642 1357.480713 1358.106689 1360.13269 1363.619385 1367.417603 1369.02063 1367.900879 1364.905029 1362.765991 1361.883789 1360.032959 1359.771118 1363.13916 1366.846191 1370.416016 1374.007324 1375.973022 1376.67395 1375.825562 1375.168945 1379.125122 1381.722778 1383.231567 1384.820557 1385.704834 1382.858276 1378.825439 1371.880493 1363.103394 1349.691284 1342.360596 1351.865845 1364.909546 1373.761475 1382.857788 1393.355713 1404.77063 1412.331299 1417.031006 1415.487915 1406.451416 1396.494141 1387.584717 1404.651001 1413.019287 1417.137207 1417.755493 1416.060669 1412.659424 1406.424561 1404.648071 1401.709961 1394.076538 1386.643433 1377.903198 1366.351318 1354.946777 1339.059692 1320.587158 1323.061157 1334.300537 1338.069702 1343.542969 1348.568848 1355.642212 1359.958862 1353.452881 1351.005371 1338.152344 1330.57666 1333.360229 1326.108154 1316.053467 1312.639282 1308.5 1303.592529 1302.874146 1300.309814 1295.44458 1292.141113 1292.646118 1295.715454 1297.317139 1296.603027 1302.664795 1306.983643 1309.144043 1311.657104 1313.731079 1312.757202 1308.90564 1297.138184 1305.750854 1308.62146 1307.708496 1303.612183 1305.433228 1291.938843 1281.02124 1274.455688 1268.248413 1264.361938 1265.288574 1267.647339 1271.407471 1277.133301 1286.226318 1297.798462 1307.121582 1307.884766 1307.757446 1305.043335 1295.806641 1285.602051 1268.646362 1260.373291 1253.110229 1248.716797 1250.950195 1253.968994 1263.762939 1280.995361 1296.14917 1307.359131 1306.896362 1305.843506 1300.800659 1294.456055 1292.461792 1293.467407 1292.487793 1291.315186 1290.410522 1289.624634 1288.793701 1287.894775 1286.318848 1284.378784 1282.046875 1279.580811 1277.583984 1275.560913 1273.848267 1271.330811 1268.269409 1261.114624 1254.575317 1254.922241 1254.745361 1254.590942 1265.527954 1270.968872 1272.802979 1274.060303 1271.605591 1253.046265 1256.303589 1269.626099 1272.069336 1271.835449 1270.489624 1270.844116 1273.406372 1275.674805 1277.166748 1278.196167 1278.827759 1276.722534 1270.769775 1266.62146 1261.487427 1256.666504 1257.931274 1260.490723 1259.243652 1255.630859 1255.444946 1257.869385 1257.569458 1255.491821 1255.984619 1257.254517 1258.132935 1258.364624 1258.448853 1245.062744 1245.971558 1250.939941 1252.268433 1251.328369 1247.703003 1245.581055 1242.97583 1240.861938 1238.628662 1236.651611 1233.688965 1232.524292 1232.273926 1231.248169 1230.384644 1229.603638 1228.661987 1227.957275 1227.156738 1226.451904 1226.017212 1225.234375 1224.241821 1223.412354 1222.581421 1221.427734 1221.273315 1221.833008 1222.104858 1221.700073 1220.887573 1219.787476 1218.895264 1218.260376 1217.560181 1217.240479 1216.893555 1216.694336 1216.168945 1215.908325 1215.689087 1215.543701 1215.379028 1215.19458 1215.250488 1215.306763 1215.605835 1215.52478 1215.371216 1215.291016 1215.305176 1215.525635 1215.846069 1216.254761 1216.629272 1217.112183 1217.634033 1218.435303 1219.613037 1220.380859 1220.654419 1221.148438 1221.946655 1223.645752 1226.028076 1228.106445 1229.411133 1229.821411 1230.147095 1230.480347 1230.81189 1231.429199 1232.025757 1231.991577 1231.677002 1231.098999 1230.328491 1229.366333 1228.509644 1227.767578 1226.720459 1225.56665 1223.641846 1221.422852 1219.878418 1218.904541 1218.067993 1216.790283 1215.399414 1213.512329 1211.236938 1209.539062 1207.443481 1205.164795 1206.145874 1206.238037 1197.93396 1192.193726 1192.956909 1199.769287 1208.009033 1212.868774 1217.771973 1227.797729 1240.402954 1247.848145 1250.042969 1250.598022 1255.028198 1259.496094 1260.39502 1264.949707 1252.763916 1236.447021 1223.874634 1210.268921 1192.196533 1173.599854 1164.047119 1170.529907 1186.170044 1196.234497 1212.097412 1204.080322 1220.882202 1225.959106 1224.680786 1234.026245 1238.529907 1251.469238 1255.91748 1245.500977 1238.630737 1233.299927 1218.482056 1204.411377 1188.213379 1171.140137 1151.978394 1142.09729 1143.162231 1163.712646 1191.124146 1220.591187 1239.997192 1250.435913 -1380.401001 1391.461426 1396.027466 1413.087769 1423.698486 1437.995728 1466.956421 1489.113525 1502.454712 1522.723389 1531.191895 1543.391724 1555.015869 1564.619873 1568.987549 1575.300659 1580.734985 1585.914673 1592.984131 1598.279419 1603.349976 1607.468384 1610.908813 1611.567871 1612.674561 1615.656616 1619.188843 1621.42688 1622.932251 1623.185181 1622.138184 1619.91272 1618.532593 1617.319214 1614.217896 1609.249634 1605.812256 1601.597656 1597.802002 1594.833252 1593.082153 1591.907227 1591.06604 1590.151001 1589.191895 1588.187134 1587.010742 1581.557739 1574.325439 1567.822021 1562.168457 1557.564331 1549.286133 1537.376099 1522.227051 1515.823975 1505.937866 1494.839111 1486.89624 1481.654541 1476.388794 1469.409424 1461.694458 1454.272217 1450.760132 1449.08374 1448.781006 1452.184937 1457.947876 1458.446655 1456.407349 1453.50061 1446.486694 1437.237305 1428.079956 1426.343872 1428.41272 1429.310181 1431.178589 1434.397339 1438.517456 1445.821899 1453.729004 1449.549683 1444.464966 1432.129883 1418.13562 1402.706909 1391.576782 1383.580078 1377.116211 1375.276978 1376.637817 1375.440186 1372.243774 1367.726929 1363.936157 1360.994629 1358.285889 1354.935303 1345.699463 1357.658203 1370.085815 1378.435303 1384.163208 1390.85791 1403.116455 1418.76355 1420.370239 1418.392212 1413.725586 1406.791748 1400.942871 1396.257568 1391.399292 1383.848877 1374.522217 1362.73938 1355.146973 1351.977905 1349.4823 1346.899658 1344.532471 1342.731689 1335.868408 1328.375732 1318.982056 1326.808716 1343.182495 1344.815918 1345.17041 1342.776978 1334.801392 1329.671387 1330.807495 1329.944214 1327.177002 1324.290649 1324.118896 1325.993774 1328.268799 1332.428467 1343.39563 1351.451172 1356.780762 1359.939575 1364.205444 1363.27002 1355.745483 1343.707153 1339.480713 1335.795288 1331.180054 1324.952881 1327.741455 1334.226196 1341.417847 1348.697632 1356.655518 1365.879272 1377.436401 1380.348145 1381.703979 1382.123779 1383.119751 1385.203003 1387.497559 1389.443604 1392.581665 1395.319336 1395.447754 1394.422729 1388.577637 1379.045532 1375.641357 1371.587524 1366.354004 1356.882202 1365.506836 1375.946045 1392.662109 1407.922119 1417.459961 1425.517212 1433.725708 1442.071899 1450.189941 1456.187866 1463.884399 1468.820312 1473.215942 1475.637451 1478.202271 1478.983032 1480.246582 1482.065796 1483.275879 1483.802246 1484.018433 1484.000854 1483.834717 1482.648071 1480.500366 1479.201416 1477.796387 1474.843628 1471.016846 1467.401123 1460.733643 1450.184937 1442.96936 1438.821289 1441.088013 1442.72644 1442.485352 1441.831421 1440.251953 1438.332397 1436.929932 1436.407349 1435.380371 1433.409546 1431.283325 1429.837402 1428.868286 1426.500488 1421.213867 1416.765137 1412.813477 1410.389038 1413.923218 1424.517212 1428.814575 1429.632324 1429.250122 1425.582764 1422.813477 1420.463989 1422.978516 1425.613281 1430.074951 1430.411133 1427.078735 1416.124268 1400.675049 1389.087891 1382.473877 1372.946167 1363.813721 1357.029785 1350.266113 1340.340576 1331.624512 1328.798584 1325.143799 1318.30127 1316.71582 1314.543213 1306.351318 1300.396729 1306.800049 1315.076782 1325.557739 1333.807251 1341.798096 1355.970703 1362.479736 1363.675049 1355.318359 1348.573975 1342.163086 1329.448486 1323.883301 1329.423584 1335.983276 1343.173706 1355.512451 1357.743042 1358.492676 1358.822754 1359.800659 1361.826172 1364.789795 1368.224609 1370.185181 1371.216064 1370.909302 1369.675049 1368.911011 1367.331299 1365.756104 1366.50769 1364.797607 1373.089478 1377.355103 1380.160522 1381.935791 1382.289185 1383.505737 1386.922241 1388.486206 1390.262085 1393.051758 1392.873657 1390.172607 1383.831177 1376.209961 1366.046875 1354.593262 1341.895996 1353.115112 1365.351685 1375.13147 1383.074829 1390.915527 1401.179077 1410.356445 1417.170776 1418.524414 1415.116577 1405.556763 1395.699097 1404.938354 1416.876587 1420.046631 1420.617798 1418.837646 1415.668091 1410.701172 1406.636841 1400.284668 1389.49646 1378.317505 1368.974731 1357.186523 1347.14978 1331.356689 1320.28186 1338.74939 1343.351318 1347.028809 1351.271729 1356.797852 1366.828979 1367.625488 1364.063477 1359.449707 1342.689087 1344.144409 1340.910156 1330.349731 1318.99353 1313.383301 1308.569214 1303.927979 1299.588745 1293.855225 1291.797119 1291.709595 1297.903442 1305.203613 1304.509277 1302.218018 1306.253662 1312.554565 1316.497925 1318.268677 1318.728027 1318.163818 1312.534546 1303.663696 1308.89856 1312.120239 1309.824707 1306.315552 1305.414185 1291.224121 1282.761353 1274.361206 1267.033569 1266.312744 1267.422607 1269.28833 1273.558594 1277.51001 1284.182373 1294.0177 1305.748413 1309.139648 1308.777588 1305.53894 1298.36438 1288.563721 1275.134644 1265.448975 1257.471802 1249.517334 1250.906616 1253.726807 1257.933594 1276.73645 1293.248169 1306.380737 1307.031494 1304.729248 1299.659058 1294.493164 1291.970459 1290.959595 1290.644287 1290.242065 1289.520752 1288.645386 1287.614746 1286.392578 1285.15332 1283.574463 1281.733276 1278.678833 1273.521606 1272.707642 1272.027466 1270.343018 1259.331665 1254.062988 1257.605957 1264.71582 1262.155884 1260.267212 1270.448853 1275.858032 1277.064697 1275.958618 1268.564331 1253.11145 1263.523315 1273.000732 1276.074707 1275.96582 1275.912476 1276.416992 1277.480469 1279.276001 1280.942871 1281.658936 1281.974609 1281.508057 1274.928833 1269.481323 1262.201172 1256.071167 1262.497314 1264.870361 1259.265259 1255.908081 1258.283203 1259.397339 1258.99939 1257.664185 1256.575439 1256.503662 1258.618896 1258.302612 1255.537354 1247.796875 1255.068726 1256.434082 1256.177246 1254.599365 1249.413086 1246.80957 1245.078369 1242.887085 1240.716553 1239.383545 1237.596924 1236.281372 1235.345215 1233.47998 1232.272949 1231.87207 1230.980469 1230.036255 1229.196045 1228.589111 1228.15979 1226.944946 1225.740601 1224.692383 1223.958618 1223.604858 1223.545166 1223.691406 1223.72937 1223.187744 1222.418579 1221.212769 1220.290527 1219.515869 1218.810669 1218.344849 1218.24292 1218.191772 1217.84082 1217.288818 1217.03418 1216.677246 1216.413696 1216.518921 1216.76355 1217.065186 1217.166992 1217.258911 1216.896606 1216.426514 1216.048584 1215.842041 1215.824707 1216.060425 1216.341064 1216.774292 1217.293579 1218.032104 1219.087769 1220.078369 1220.822266 1221.263672 1222.138794 1224.247803 1227.450195 1230.590088 1232.028564 1232.041626 1232.052856 1231.977539 1231.977539 1232.12793 1232.372314 1232.461792 1232.173462 1232.058472 1232.067871 1231.196289 1229.127441 1227.686279 1226.208374 1224.569702 1222.552002 1219.727539 1219.673706 1219.564941 1219.927246 1217.462402 1214.603882 1212.310059 1209.567383 1207.150757 1206.295288 1210.763428 1218.060547 1218.042114 1206.297363 1197.307861 1191.702271 1191.364624 1194.957153 1201.120361 1205.809204 1215.086182 1226.369141 1230.195435 1234.529541 1230.327515 1236.5979 1242.077515 1245.287842 1251.331787 1249.761475 1230.333862 1220.245483 1217.040649 1200.030396 1180.733643 1163.401245 1156.304077 1164.047852 1180.090576 1189.818604 1201.272461 1210.942871 1212.999023 1205.379639 1209.294678 1213.313477 1235.068604 1239.826904 1229.934326 1225.845825 1215.058838 1206.280151 1194.684326 1179.846313 1162.234253 1145.234131 1140.678101 1149.227417 1165.288818 1182.533203 1214.837402 1238.439941 1253.359741 -1354.315308 1361.658325 1372.680176 1387.478149 1409.045532 1433.242188 1463.006714 1475.416748 1486.707764 1501.0354 1521.850342 1532.28894 1542.28064 1555.232666 1564.790283 1573.839966 1581.098511 1589.445068 1598.192017 1604.889526 1610.745728 1614.77771 1618.322021 1619.126221 1619.978271 1623.767578 1627.314819 1629.461182 1631.021851 1631.151123 1629.739136 1627.659302 1625.176636 1622.332886 1619.669189 1615.833862 1612.290771 1607.265503 1602.01123 1597.439453 1596.006714 1595.180786 1594.067261 1592.268066 1590.084717 1588.310425 1585.537964 1576.374878 1570.500122 1563.393311 1556.581787 1551.030029 1543.272583 1530.228638 1519.484619 1512.749756 1502.650757 1490.752808 1483.675659 1477.440918 1473.190674 1468.644531 1463.43811 1452.94751 1449.19812 1451.538086 1454.455811 1461.739136 1464.532471 1462.871094 1458.625488 1453.599243 1445.277344 1437.704956 1430.059082 1431.158569 1432.996704 1433.821289 1435.170288 1437.814941 1443.605225 1451.696289 1453.93042 1446.598389 1437.536743 1421.097534 1406.040894 1394.038208 1384.402344 1377.307861 1372.08374 1367.81897 1364.67981 1364.507202 1363.030884 1356.776489 1352.537842 1351.896973 1351.51416 1348.662842 1351.851196 1367.023193 1380.495361 1386.439087 1393.751465 1399.485718 1416.418213 1422.294434 1420.51416 1417.631592 1412.52124 1405.609253 1399.706055 1393.961304 1388.828613 1382.387329 1372.979736 1362.714233 1355.736694 1352.164551 1349.385376 1346.641602 1344.413574 1342.516479 1333.885498 1323.416138 1332.133667 1340.185547 1346.510498 1349.10498 1349.242798 1346.945679 1341.550903 1339.391479 1340.70874 1340.033081 1332.286377 1327.674805 1327.730469 1333.236328 1339.584595 1344.584839 1351.983887 1360.044922 1364.837769 1370.219727 1373.577637 1371.256714 1365.156616 1359.636963 1355.870361 1348.790161 1343.065063 1336.171631 1327.359497 1327.880981 1334.415894 1343.210449 1351.568604 1359.317993 1367.776855 1375.582031 1378.242065 1379.186401 1381.401367 1384.192383 1388.187378 1391.11499 1397.263306 1401.926636 1402.56311 1401.427734 1398.254395 1390.971802 1382.948486 1376.792847 1370.823486 1362.418823 1363.052612 1372.075439 1385.005981 1405.230591 1416.261475 1426.462891 1437.165649 1448.450439 1457.681274 1467.070435 1475.679932 1477.158081 1477.618408 1475.782104 1476.62915 1477.383667 1479.884521 1485.563477 1488.292969 1489.326904 1489.252319 1488.924927 1487.762695 1484.503296 1481.290771 1479.215332 1476.773193 1473.808105 1470.279663 1466.601685 1458.248413 1449.779541 1448.508179 1448.003662 1449.29834 1449.314087 1448.590088 1447.386475 1445.530762 1443.08667 1441.240112 1440.412598 1438.158081 1434.387207 1430.25647 1428.085449 1425.881226 1421.579834 1417.164185 1413.993286 1412.034424 1411.796631 1415.029907 1427.316284 1432.042969 1434.232788 1433.784546 1432.502319 1431.584106 1433.135254 1433.88147 1433.121826 1432.887085 1431.96521 1423.0896 1405.964478 1395.552002 1387.121582 1380.071655 1371.623901 1362.858276 1352.813354 1345.306763 1336.525146 1328.324829 1328.447021 1328.495117 1326.996948 1326.503662 1319.458496 1308.571289 1300.525146 1303.710083 1313.501953 1323.719238 1331.95105 1338.557861 1351.67749 1361.488159 1365.019165 1354.354248 1351.237549 1346.611816 1339.282349 1332.215332 1325.718506 1331.171021 1336.798218 1342.930908 1355.647705 1359.124023 1359.137451 1359.051025 1360.559082 1363.172852 1367.14978 1370.48877 1373.814819 1376.803833 1379.725708 1380.697876 1377.177612 1375.498535 1379.135864 1379.128662 1377.259644 1380.60144 1385.044434 1388.687012 1389.83374 1391.224609 1394.342163 1395.545288 1396.661987 1398.000732 1396.99292 1393.775513 1387.702393 1376.89209 1368.051514 1361.688721 1347.114868 1354.724854 1365.292603 1374.895508 1382.596313 1389.365356 1400.518921 1408.871704 1415.456665 1419.507812 1420.55127 1414.368164 1404.25354 1407.45874 1419.502441 1423.364868 1424.735962 1422.265259 1417.282227 1411.710571 1404.366333 1392.137085 1382.956299 1373.04541 1361.579102 1348.195557 1335.101196 1323.420288 1338.560791 1347.39856 1352.424438 1357.497192 1360.535034 1366.880493 1377.120972 1376.001953 1370.299927 1363.024658 1356.472046 1355.242188 1344.94104 1336.036743 1324.567383 1314.197388 1306.848022 1303.182373 1299.991455 1296.322021 1293.118042 1292.481201 1302.955322 1307.790771 1307.505005 1304.02356 1306.453735 1317.327026 1319.584106 1320.520264 1320.751953 1319.934082 1318.001831 1313.237183 1314.587158 1316.519165 1315.669312 1310.270996 1302.238647 1289.493164 1281.49939 1272.711914 1266.765869 1269.428345 1271.640991 1274.316284 1277.14502 1278.555664 1281.478638 1291.938721 1303.421021 1308.859009 1309.564941 1308.301392 1303.220337 1294.67749 1281.463257 1269.32312 1261.227661 1252.940308 1251.195679 1254.101196 1260.227173 1271.353271 1285.457275 1300.171875 1306.439453 1303.287964 1298.81958 1293.012085 1291.898926 1291.087524 1290.576904 1290.026245 1289.322021 1288.090332 1286.751709 1285.36377 1283.996094 1282.910645 1281.47168 1274.767334 1268.460571 1268.934937 1268.973022 1264.91687 1258.735229 1257.307129 1267.918335 1273.348267 1272.305298 1266.428833 1273.492554 1281.313965 1281.105713 1279.402954 1269.418213 1254.379395 1267.900635 1279.398438 1281.293823 1280.373413 1279.89978 1280.253418 1281.293335 1281.918457 1282.629517 1282.750977 1282.409302 1281.200684 1276.307373 1271.280396 1262.198608 1256.488403 1270.401978 1267.32666 1257.498535 1257.211792 1260.191895 1261.577026 1261.161499 1260.080566 1258.864746 1258.974487 1259.369385 1258.427612 1256.116577 1257.06897 1258.713867 1258.94043 1258.260742 1256.829468 1251.06604 1248.825806 1246.497192 1243.752319 1242.682739 1242.36377 1241.272827 1240.237305 1239.786133 1238.057129 1236.248169 1234.981934 1233.442993 1231.748291 1231.111816 1230.491333 1230.470581 1228.987915 1227.149048 1226.179932 1226.223877 1226.36731 1226.35437 1226.264648 1225.844727 1225.005127 1224.032227 1222.920288 1221.774536 1220.851807 1219.747925 1219.053955 1219.679443 1219.738159 1219.046875 1218.648193 1218.403442 1217.85376 1217.472046 1217.489502 1217.978516 1218.751465 1218.954956 1218.882446 1218.470703 1217.669434 1216.941895 1216.482544 1216.255249 1216.239746 1216.37793 1216.618408 1217.121948 1217.734619 1218.454956 1219.436401 1219.860107 1220.146362 1220.885132 1223.936768 1228.032227 1232.013672 1232.565308 1232.372314 1232.254883 1232.16748 1232.259888 1232.560425 1232.723389 1232.864014 1232.895508 1232.691528 1232.506592 1232.062622 1230.679688 1228.247925 1226.056396 1224.185791 1222.657104 1221.422607 1220.793457 1220.497192 1219.984375 1217.665894 1214.800415 1212.52478 1209.609497 1206.974121 1214.512695 1222.459717 1226.26355 1226.223877 1217.655762 1206.883301 1195.836914 1189.714233 1187.728271 1192.045532 1195.29834 1207.813477 1212.227417 1219.147339 1219.210571 1212.69397 1219.504028 1224.329346 1226.774048 1243.585449 1246.324951 1232.229248 1211.941406 1207.031982 1198.024536 1180.915894 1162.816162 1152.720947 1153.180176 1161.384644 1173.820923 1194.11731 1200.493042 1196.651855 1186.295654 1193.052368 1201.509521 1221.928467 1227.125977 1205.120972 1199.900024 1192.621582 1183.696777 1171.509277 1155.394043 1144.475464 1141.55603 1144.703003 1161.623413 1184.7323 1206.64978 1221.53772 1229.413574 1242.898071 -1351.021729 1369.642822 1387.515991 1402.44812 1419.322754 1437.094482 1461.276245 1467.533325 1469.902466 1483.269409 1503.984497 1515.482056 1528.002197 1544.176392 1557.114502 1569.546753 1580.432861 1591.329834 1601.922974 1609.7771 1615.954224 1621.644043 1626.32373 1628.335571 1629.138184 1631.117798 1634.073364 1637.244507 1639.685303 1639.815308 1637.81897 1636.016113 1634.486206 1632.066406 1626.458862 1622.172241 1619.47522 1613.559814 1607.896851 1603.303223 1600.274048 1598.572144 1596.5448 1593.712036 1588.872925 1585.441162 1579.209473 1571.23645 1566.859985 1560.671265 1549.710327 1542.378662 1533.014526 1520.838501 1514.704468 1506.894409 1496.701294 1488.738403 1480.977051 1475.661743 1472.841675 1470.80481 1466.976929 1459.183838 1456.266724 1463.161865 1465.403687 1466.652466 1467.993042 1465.057495 1459.316284 1452.907837 1445.348511 1439.601196 1441.168457 1439.377686 1436.91748 1438.451294 1439.155396 1440.701416 1444.038818 1449.776855 1446.497314 1437.770996 1421.409668 1402.926514 1392.244873 1383.371338 1376.074219 1370.126099 1367.702393 1363.911621 1360.863647 1359.212891 1356.640015 1355.415405 1357.276123 1356.984375 1354.778687 1359.230835 1364.713379 1374.674683 1387.206177 1394.250488 1407.835083 1420.30835 1428.3396 1424.101196 1418.015747 1411.528442 1406.173218 1400.946533 1395.548828 1390.669922 1384.056274 1377.618652 1369.146729 1361.12915 1354.80188 1351.495605 1348.881836 1346.408936 1344.053711 1339.303223 1324.452637 1330.283813 1341.642578 1346.146973 1350.2948 1352.878418 1354.260254 1351.625244 1346.191772 1345.965698 1347.832764 1347.230713 1341.170166 1337.222778 1333.140747 1340.369507 1349.026489 1356.481934 1364.290283 1369.295654 1373.84314 1379.581787 1381.806885 1379.923584 1376.913574 1371.675293 1366.004272 1361.2677 1357.578125 1352.455811 1341.458618 1329.284912 1328.923706 1338.203491 1345.467163 1352.077393 1358.598633 1365.908569 1369.921021 1373.752441 1377.381104 1379.498047 1387.80481 1394.717896 1403.107422 1407.960693 1408.964355 1408.163086 1406.5625 1402.807373 1392.237915 1383.358398 1375.720947 1367.986328 1361.388794 1369.709473 1379.757202 1400.626587 1414.19165 1424.930542 1436.149536 1446.416382 1455.970337 1464.525879 1470.878418 1473.653442 1473.466675 1471.705322 1471.395386 1473.279297 1476.23877 1482.22644 1489.741699 1490.320923 1490.510132 1490.178345 1487.015137 1481.889648 1478.804688 1476.661865 1473.064697 1469.967529 1468.273926 1465.172729 1456.211304 1452.036133 1453.667236 1455.950806 1456.428955 1456.582397 1455.499023 1453.753906 1451.20166 1448.062134 1445.616333 1442.774048 1438.781128 1431.589111 1425.920898 1424.480347 1421.838501 1415.881836 1414.128174 1413.599854 1412.382812 1411.890259 1417.051025 1428.227783 1434.750366 1439.284058 1438.761841 1437.279907 1440.044067 1441.736084 1441.183838 1438.078979 1434.685059 1429.63269 1414.136841 1400.926636 1391.703003 1383.466187 1376.136963 1366.831421 1359.139404 1351.252319 1342.203125 1332.91272 1332.525513 1334.230835 1334.780029 1334.178833 1332.466064 1324.287964 1311.186401 1301.762085 1304.078003 1311.290405 1318.77832 1327.860474 1335.688599 1343.022827 1356.426636 1363.740112 1365.500122 1358.942993 1353.915771 1347.83313 1342.933228 1334.189209 1328.017334 1330.945557 1335.736084 1339.40332 1346.868896 1353.589722 1355.112305 1355.666626 1356.778442 1361.798706 1367.263428 1373.571167 1378.885254 1382.129517 1385.31958 1387.023804 1385.515991 1384.413574 1384.974243 1384.892334 1386.611328 1390.156494 1393.946289 1396.234863 1398.771606 1401.12439 1402.067749 1402.866577 1403.172485 1401.083008 1396.692383 1389.287964 1381.785645 1375.006592 1365.657593 1353.019409 1353.416748 1364.227783 1374.076172 1382.638062 1391.569336 1403.519897 1409.087158 1414.659424 1420.334839 1426.388306 1424.947144 1413.830811 1413.925171 1421.796509 1426.766724 1428.293701 1424.960449 1419.017822 1412.48291 1402.889038 1391.72229 1382.466309 1372.155151 1360.215332 1344.368408 1327.932983 1342.47583 1348.458862 1352.852295 1359.892944 1365.576782 1371.550537 1383.205933 1387.911987 1379.732178 1372.990234 1367.532104 1366.638306 1358.145386 1347.780762 1336.582642 1323.293823 1314.122192 1306.201538 1305.586426 1303.101318 1297.701294 1293.139771 1295.003296 1303.679688 1310.197998 1310.825439 1304.477173 1303.934448 1317.209351 1320.611938 1321.906738 1322.474854 1321.637817 1319.442627 1316.886475 1318.858887 1319.373657 1318.073608 1310.237915 1297.586304 1285.489258 1277.956421 1270.238647 1268.311035 1272.539307 1276.771729 1280.745972 1282.671997 1282.924194 1282.563965 1291.003296 1300.890015 1308.181152 1310.270508 1309.922852 1306.277222 1297.260864 1286.690918 1275.115234 1264.934326 1257.224609 1250.925049 1252.987183 1256.220703 1266.719971 1277.216919 1293.150635 1303.256592 1301.765259 1299.987427 1296.178711 1293.153442 1291.928101 1291.193481 1290.570801 1289.59436 1288.053467 1286.187256 1284.382935 1282.792236 1281.578125 1279.470825 1273.662231 1271.217529 1267.896606 1270.937134 1272.187988 1269.829224 1266.011108 1270.396851 1278.903809 1280.993042 1273.590942 1274.699707 1283.96106 1284.024048 1282.044434 1269.316895 1255.437012 1270.086304 1282.168335 1283.401733 1283.002808 1282.682617 1282.676514 1283.037842 1283.667847 1283.659058 1282.997559 1281.559082 1279.133911 1274.993652 1270.37439 1260.654053 1265.831665 1271.62561 1269.815674 1256.345703 1259.810791 1264.058716 1264.977295 1263.800781 1262.541626 1261.782715 1261.373535 1260.46875 1258.066528 1256.280029 1258.217896 1260.428955 1260.705566 1259.696899 1257.27124 1253.071533 1251.167603 1248.835815 1246.397217 1245.850098 1245.456055 1244.311279 1243.940552 1244.518677 1243.295288 1240.963379 1239.462524 1237.623169 1235.512329 1233.565674 1231.974121 1232.880127 1230.914062 1228.590698 1229.154907 1229.821045 1229.797485 1229.542236 1229.286743 1228.597656 1227.165161 1226.031128 1224.622925 1223.388062 1222.139526 1220.806396 1219.492065 1220.45874 1221.04834 1220.292969 1220.116943 1219.68335 1218.872192 1218.429077 1218.327759 1218.710938 1219.714233 1220.27356 1220.177246 1219.681885 1218.714722 1217.8479 1217.305664 1216.974976 1216.7677 1216.743774 1216.87439 1217.192505 1217.618652 1218.144653 1218.856323 1219.272705 1219.364258 1220.0896 1222.196411 1226.203491 1230.238159 1231.652222 1231.809814 1231.91394 1231.990723 1231.974243 1232.634888 1233.113281 1233.308716 1233.181885 1232.962891 1232.685791 1232.189819 1230.762817 1228.357666 1226.030029 1223.946045 1222.333618 1221.424316 1220.55542 1219.996948 1219.240601 1217.064575 1215.693237 1214.523438 1214.800537 1217.737671 1223.24353 1229.510376 1233.979736 1235.531738 1227.043213 1216.10437 1205.494141 1194.721558 1181.904297 1186.065308 1190.800537 1196.659302 1201.566772 1209.046997 1208.086304 1202.67041 1207.165649 1207.718384 1218.785645 1233.739502 1238.410645 1231.220337 1216.173706 1192.75415 1189.350464 1174.169189 1159.354126 1149.999146 1149.509033 1152.553711 1163.807495 1181.441772 1181.675293 1176.254761 1169.544189 1172.006226 1186.590576 1201.692139 1198.702026 1185.421265 1178.479126 1169.811646 1156.618286 1144.257568 1143.100098 1148.014771 1151.678345 1164.091064 1167.732056 1181.903564 1202.386963 1222.642944 1240.12085 1252.397827 -1359.980469 1377.164795 1398.079346 1416.203735 1431.982178 1447.378174 1458.923462 1456.21875 1451.543823 1470.765747 1484.692139 1497.137817 1514.215454 1534.548584 1549.510254 1561.943359 1578.231323 1591.192139 1603.084473 1612.509521 1619.146973 1627.931274 1635.23291 1638.569214 1641.144775 1643.412842 1646.645386 1649.449341 1650.948364 1650.64917 1647.867798 1644.626953 1641.93335 1638.996582 1633.697144 1629.215698 1626.393921 1622.359619 1615.051392 1609.677612 1605.490234 1602.129395 1599.553101 1593.332764 1585.148682 1581.925293 1575.769653 1569.797241 1564.277588 1555.553467 1543.015503 1529.911133 1520.026489 1513.944458 1509.670654 1502.228149 1491.67688 1485.356567 1479.468628 1475.241211 1476.500977 1476.817261 1471.346558 1463.62085 1466.761475 1470.706665 1472.952026 1473.570679 1472.144653 1467.00647 1460.703003 1451.649902 1449.49707 1447.647461 1446.586548 1446.706055 1445.591797 1447.820679 1446.256714 1442.894409 1440.65686 1434.856323 1428.929077 1415.385864 1398.310791 1385.99646 1375.695435 1368.382446 1362.598877 1361.5896 1360.569702 1358.590088 1356.832764 1357.84314 1359.96521 1361.095459 1365.100098 1365.612183 1362.740479 1365.429932 1378.901123 1384.090088 1392.047485 1401.424805 1419.258301 1429.52356 1428.264404 1415.934204 1401.712524 1398.217651 1396.524414 1393.174805 1389.12146 1382.767212 1377.589844 1371.807983 1364.859253 1358.282715 1353.387329 1350.474609 1348.014038 1345.637573 1343.580322 1338.762329 1324.187622 1341.355347 1346.800171 1350.58313 1354.081543 1357.831421 1359.438843 1355.19458 1352.535767 1352.422607 1355.337402 1356.099854 1352.334595 1348.299927 1342.645508 1341.450562 1350.696289 1366.181641 1372.539307 1377.605103 1380.662598 1385.169189 1387.196045 1386.96936 1385.837402 1379.780762 1374.039917 1370.019165 1367.167725 1362.191284 1354.875488 1341.364868 1330.477661 1334.414673 1340.248291 1345.618164 1350.363281 1353.282959 1362.769287 1368.996338 1375.53418 1382.018433 1390.41626 1398.96814 1407.829956 1415.054688 1415.532593 1413.994507 1411.713623 1409.413818 1403.562744 1392.3396 1382.717163 1374.006104 1364.333496 1365.453003 1376.783203 1395.5354 1409.848022 1421.130127 1429.806274 1436.899048 1442.318726 1451.838745 1459.605225 1464.265015 1464.774048 1462.849609 1463.797485 1467.835571 1472.668457 1478.492188 1484.731079 1485.315063 1484.52417 1482.131714 1476.934692 1474.593384 1473.226074 1470.924194 1466.390625 1464.315552 1465.918823 1463.912598 1460.953735 1459.42334 1461.381348 1462.700684 1463.600952 1464.068726 1463.950073 1462.204346 1457.274536 1451.900391 1448.343384 1443.547974 1437.881348 1428.967651 1425.735352 1424.804199 1423.343628 1419.281982 1417.60498 1416.095337 1413.869385 1412.743286 1417.575439 1428.093994 1436.127197 1442.721436 1445.383423 1444.753296 1446.384766 1447.597534 1445.59314 1440.643433 1433.334839 1422.276489 1408.062378 1395.219971 1385.27771 1377.043579 1368.591064 1361.44043 1353.573364 1349.382935 1342.042358 1342.967407 1345.158569 1341.783936 1342.274414 1342.275513 1335.794434 1323.84729 1313.14978 1306.025879 1303.304199 1310.215576 1319.266113 1329.407349 1340.140259 1346.525513 1352.112061 1363.539673 1368.035278 1367.322754 1360.369507 1353.690552 1347.876465 1343.462891 1336.832886 1334.74646 1339.855591 1339.350342 1340.749146 1342.50415 1345.076416 1347.173218 1349.457642 1353.4021 1361.829712 1370.959473 1379.276245 1384.017334 1389.352173 1393.230835 1392.067993 1389.372192 1391.27417 1392.257568 1391.648193 1395.510376 1399.762817 1401.282715 1405.390381 1407.252686 1407.949341 1408.105713 1407.814575 1405.534424 1401.312012 1393.458496 1386.291382 1378.155151 1365.793823 1353.908813 1354.646973 1362.696167 1372.763184 1382.351196 1391.782959 1402.580322 1407.812622 1412.833252 1419.201172 1426.188721 1429.397583 1429.354492 1422.7323 1425.252563 1429.051636 1428.958496 1425.682007 1419.375488 1412.364258 1403.377441 1391.018677 1380.982178 1369.322266 1355.167603 1336.24231 1343.059692 1351.996094 1356.271118 1360.396729 1369.482056 1380.848389 1389.132935 1393.98938 1386.56604 1377.446045 1370.618408 1367.449097 1361.020142 1349.422607 1338.134277 1329.536743 1318.230469 1315.002686 1314.065674 1309.386475 1304.785278 1299.723877 1294.080688 1298.401855 1304.541382 1313.943848 1316.206055 1312.018188 1306.897095 1311.212036 1320.465576 1323.72644 1324.652954 1323.998413 1322.577515 1321.595947 1321.060913 1320.197754 1317.109863 1307.35376 1291.327759 1285.137817 1278.793335 1271.235229 1270.112671 1275.313354 1280.848511 1288.437012 1292.64856 1290.505981 1289.205566 1290.551514 1298.232056 1306.656738 1311.450439 1311.734497 1308.43811 1300.057495 1289.647949 1280.455811 1267.742065 1259.65625 1251.681274 1252.721436 1254.772583 1261.144531 1271.420532 1283.277954 1296.308594 1301.143188 1302.687744 1300.36084 1297.036865 1294.575562 1292.624268 1291.613281 1290.274292 1288.126587 1285.57959 1283.339355 1281.575195 1280.56897 1280.865112 1281.937866 1278.677124 1277.933716 1282.619995 1282.840576 1281.837646 1267.705688 1273.217896 1282.34436 1284.400024 1282.646606 1280.053711 1284.001587 1285.087402 1282.512207 1272.146851 1264.065796 1270.991333 1282.639526 1284.715454 1285.135254 1285.085327 1285.015137 1285.198975 1285.20105 1284.527954 1283.11145 1279.896118 1277.479492 1273.700317 1269.177612 1268.543579 1270.574585 1271.17688 1269.670898 1255.964478 1262.518555 1268.921875 1268.226318 1266.245483 1264.957397 1263.951538 1263.357544 1262.199341 1258.629761 1256.633301 1260.56958 1262.908691 1262.824219 1261.067871 1256.953857 1255.31311 1253.207397 1251.791504 1250.587158 1249.751099 1248.84375 1247.973022 1247.410645 1247.399902 1246.605469 1244.909302 1244.41272 1242.9375 1239.894897 1237.782959 1236.059326 1234.71521 1231.709839 1231.895874 1233.577637 1233.031006 1233.08313 1232.199951 1231.968872 1231.143311 1229.636353 1228.200928 1226.767944 1225.35144 1223.984131 1222.353271 1220.92627 1221.65918 1222.175659 1221.854004 1221.561646 1220.86438 1219.856323 1219.446655 1219.299927 1219.064575 1219.990479 1220.938721 1220.97583 1220.24292 1219.38916 1218.643066 1218.172852 1217.848267 1217.544312 1217.449341 1217.38208 1217.441406 1217.665039 1218.116089 1218.516357 1218.856812 1219.131104 1219.482666 1220.774048 1223.98584 1226.578491 1228.496094 1229.240845 1230.045898 1231.039185 1231.820801 1232.781982 1233.448364 1233.468262 1233.352905 1233.18042 1232.765503 1231.891968 1230.28418 1228.024902 1225.576416 1223.516235 1221.718994 1220.596191 1219.586304 1218.887817 1217.964966 1217.16394 1216.352295 1217.134033 1220.255005 1224.571411 1229.705933 1236.611816 1243.046021 1248.801758 1237.856323 1223.425171 1210.837646 1199.369507 1184.738892 1182.177856 1185.516479 1189.784912 1194.769653 1199.011353 1198.269287 1193.365112 1194.283569 1200.30542 1211.319336 1219.008789 1228.994141 1226.140015 1215.991577 1191.906494 1175.842896 1164.449707 1155.677979 1150.612427 1155.044556 1149.216919 1155.533203 1163.649414 1162.343994 1156.61731 1152.387817 1154.949707 1162.78833 1170.864258 1172.393311 1164.804688 1153.038208 1145.937012 1142.842773 1145.540161 1155.242188 1161.495728 1163.804077 1174.204956 1188.632446 1190.002197 1192.465698 1211.879028 1236.340332 1256.684326 -1345.884888 1372.90625 1392.564331 1411.297729 1426.529663 1440.157104 1440.38501 1430.976196 1439.545166 1457.600464 1470.466797 1484.609741 1502.958252 1523.057129 1538.459351 1552.346436 1572.481201 1587.665161 1602.053955 1614.193481 1622.04248 1634.864502 1641.489258 1646.822266 1653.063599 1659.135376 1662.836914 1665.24939 1666.021851 1664.896484 1661.608032 1657.202393 1651.192139 1645.835327 1640.203857 1634.778687 1631.891357 1627.946167 1621.993286 1614.822998 1608.763062 1604.108154 1599.307861 1586.951416 1582.901489 1579.407471 1575.51123 1567.363037 1559.807373 1548.148438 1537.806519 1522.565308 1519.195923 1514.531494 1513.592651 1511.542969 1496.35376 1490.857788 1488.657104 1485.192993 1482.596436 1480.182495 1475.642212 1473.450439 1476.338257 1478.59314 1479.435059 1479.024048 1477.08374 1470.244385 1462.244019 1454.949463 1454.509888 1455.171265 1453.201172 1454.794678 1455.9104 1453.914185 1451.013794 1444.315308 1435.469604 1420.763428 1408.203979 1396.245239 1387.897095 1376.391968 1362.717407 1362.379272 1363.346802 1363.913452 1366.214111 1369.705322 1372.331543 1373.886719 1372.573608 1367.143433 1370.039795 1374.543457 1371.63269 1367.760376 1380.358521 1389.531372 1397.224976 1405.209839 1422.069458 1424.502197 1418.440186 1407.341309 1397.010864 1389.194702 1387.157715 1384.093628 1376.577148 1373.481079 1370.379395 1366.122314 1359.776978 1354.833008 1352.216553 1349.545044 1346.541016 1343.759766 1342.245728 1331.711914 1330.534302 1345.220459 1349.579346 1353.781494 1360.680298 1365.559692 1366.346436 1364.940674 1359.760498 1360.510132 1364.293579 1364.23645 1360.942017 1357.660278 1353.056152 1351.671509 1351.37854 1364.349121 1374.966309 1381.653076 1386.312744 1390.557007 1391.598999 1392.091553 1391.983276 1387.239624 1380.466431 1376.196045 1373.296631 1368.862061 1360.959717 1349.745605 1338.611084 1332.534912 1337.718994 1344.528564 1354.063965 1358.120972 1364.281982 1371.432617 1377.908447 1385.700195 1393.360474 1401.059326 1411.960815 1417.781982 1419.660645 1419.259766 1417.797607 1417.366699 1412.672485 1402.425659 1390.083862 1380.878418 1370.543091 1364.439819 1371.011841 1388.594482 1404.431641 1416.257568 1422.359131 1425.605957 1432.690796 1440.852783 1449.362549 1456.255859 1457.703247 1454.800903 1455.839233 1465.784058 1471.384521 1476.808105 1477.30249 1476.293335 1475.890747 1474.046509 1470.554321 1466.907471 1466.104736 1464.512207 1461.896851 1463.462402 1465.182129 1464.833496 1464.536743 1465.023071 1466.678345 1469.599609 1469.634766 1468.491943 1467.390747 1466.154907 1463.0625 1455.614502 1448.90686 1441.659302 1433.387939 1425.983643 1425.480347 1427.282104 1428.738892 1426.804443 1423.448364 1421.021851 1417.137329 1413.930054 1417.28772 1426.620117 1436.051758 1446.131958 1452.500854 1452.20166 1452.895264 1453.06189 1450.471802 1440.871704 1426.202515 1411.490112 1400.61377 1389.129761 1382.374634 1376.74585 1367.275757 1363.602783 1356.593994 1355.689453 1351.858154 1350.339355 1353.491699 1353.738281 1350.70752 1345.366089 1335.891479 1322.02417 1314.20105 1308.603638 1303.902832 1309.684082 1321.037598 1330.710693 1342.854614 1352.168457 1358.324585 1364.384155 1368.388672 1368.851196 1364.542358 1355.650757 1351.079346 1347.310181 1342.725098 1341.400391 1345.84021 1348.806519 1350.45752 1352.824951 1354.126099 1354.712524 1354.905518 1354.148315 1354.696899 1365.515625 1374.046753 1381.37439 1390.149902 1395.620483 1399.047485 1398.807129 1400.036865 1401.154541 1401.348877 1403.699585 1407.494263 1410.084595 1411.93811 1413.919922 1413.237305 1412.652222 1412.881348 1410.193359 1404.17334 1396.15979 1386.540161 1375.523193 1364.716309 1360.965698 1362.862549 1364.04126 1367.508179 1380.795288 1389.745483 1399.13855 1405.500732 1410.594849 1415.963135 1421.997314 1427.2677 1428.976562 1428.497559 1428.635864 1429.759888 1429.032715 1424.568848 1417.681519 1409.872192 1400.260132 1387.271851 1376.162476 1363.625244 1344.639771 1339.129883 1352.048828 1358.304932 1362.210083 1367.027466 1381.273193 1390.477783 1393.096802 1383.500732 1373.108643 1363.730713 1359.591919 1355.356689 1345.680542 1335.337524 1329.246094 1322.282227 1318.059692 1319.848999 1319.008545 1312.199097 1305.033447 1304.944336 1300.843994 1304.027832 1310.650391 1318.523315 1320.620728 1318.134155 1317.289551 1317.263428 1318.910034 1326.17041 1327.326904 1326.760498 1326.104004 1324.407349 1322.477783 1320.139038 1314.448364 1303.020386 1290.276855 1284.448364 1278.598755 1271.677002 1271.307007 1277.315552 1284.241577 1295.435791 1309.900635 1305.269897 1298.004272 1290.474609 1296.213989 1306.343384 1314.166016 1314.777954 1310.703491 1303.21582 1292.120117 1283.956177 1271.039795 1261.413818 1253.459961 1252.854614 1254.038452 1256.970703 1266.623901 1277.642578 1292.046753 1302.412842 1305.262695 1304.851318 1303.0271 1299.366699 1295.806763 1293.282593 1291.264526 1288.320068 1285.045288 1282.379517 1280.616821 1280.749268 1282.826904 1282.463257 1279.690796 1282.178467 1285.383179 1285.50061 1283.350098 1269.063477 1275.636597 1284.970215 1288.223877 1287.490234 1286.290283 1287.200806 1287.403809 1285.06311 1280.242432 1268.54187 1270.566406 1282.146973 1285.709961 1286.96875 1287.271851 1287.327026 1287.121826 1286.709839 1285.627686 1284.005981 1282.003906 1279.33313 1272.792236 1268.284058 1269.96228 1271.834229 1271.096802 1267.072632 1254.920288 1264.35376 1269.954956 1269.823853 1268.185791 1266.37439 1265.832275 1265.422363 1264.557129 1263.016113 1262.246704 1264.705811 1266.687988 1265.609253 1262.977173 1260.296875 1257.779663 1255.552124 1254.454956 1254.252808 1253.928833 1253.084595 1251.850098 1250.829712 1250.560791 1249.694824 1248.950928 1247.93103 1246.392578 1244.130005 1242.014404 1240.297363 1239.894409 1233.255981 1235.007935 1238.962769 1237.974487 1236.589111 1235.416138 1234.361572 1232.967773 1231.065796 1230.341309 1228.879395 1227.335571 1226.07605 1224.945068 1223.968628 1223.822754 1223.730957 1223.285645 1222.796753 1222.013062 1221.011963 1220.722046 1220.570312 1220.032837 1220.219727 1221.376099 1221.477661 1220.890503 1219.699463 1219.554443 1219.357056 1218.977661 1218.580688 1218.242798 1218.015747 1217.991943 1218.078491 1218.276733 1218.517578 1218.75708 1218.911987 1218.849854 1219.278931 1221.56604 1222.92041 1225.292114 1227.590942 1229.711182 1232.103394 1232.761353 1233.27771 1233.458862 1233.542725 1233.43335 1233.136841 1232.244141 1230.951416 1229.409302 1227.345215 1225.178467 1223.024292 1220.946289 1219.677246 1219.015625 1218.396484 1217.814209 1217.119751 1218.083618 1221.165283 1225.469116 1230.085571 1237.226685 1245.371704 1255.061523 1259.349243 1244.693115 1226.808228 1215.947266 1205.115112 1195.749023 1182.494263 1182.089111 1185.296265 1188.077881 1190.207153 1190.300903 1189.083984 1189.286377 1192.113892 1196.571289 1210.685669 1221.641846 1219.927612 1211.753052 1194.430664 1183.135498 1172.139893 1160.629272 1151.567871 1163.435669 1155.705322 1148.761719 1149.420654 1146.787354 1146.140991 1145.902222 1145.233276 1144.585205 1145.397095 1146.76709 1144.370361 1143.65979 1145.300903 1152.505249 1163.302979 1176.542847 1182.477295 1184.718262 1184.134033 1197.043701 1208.22583 1214.520386 1209.122437 1219.781128 1238.011963 -1331.056885 1348.018799 1368.057007 1398.3125 1423.492676 1431.259766 1428.164673 1412.366089 1423.444824 1429.491211 1459.612793 1479.242676 1495.087158 1506.290039 1521.66394 1537.517334 1560.932861 1580.896606 1594.94812 1614.080322 1625.536133 1639.205566 1647.3479 1655.877441 1662.920898 1667.980469 1672.028076 1675.825928 1677.701416 1677.328735 1675.260864 1674.364258 1669.394531 1658.93335 1650.004761 1645.894043 1640.150757 1634.110718 1627.464844 1619.356567 1611.212524 1602.540527 1592.864868 1583.913696 1580.373535 1577.695435 1572.802246 1560.375977 1549.561157 1540.120239 1523.073364 1521.871338 1521.789917 1521.425537 1519.910767 1516.401367 1509.941162 1504.931885 1499.283325 1493.620239 1488.243042 1485.483276 1484.0177 1484.823975 1486.703491 1487.520752 1485.731567 1483.583862 1480.047485 1474.502686 1469.445923 1466.358521 1462.150024 1461.911499 1463.890381 1464.057861 1459.33252 1455.265869 1449.08606 1438.956909 1427.139648 1415.945923 1401.927368 1389.157593 1382.668091 1372.954956 1363.536133 1365.486572 1370.407104 1374.811279 1379.220703 1383.249512 1385.648071 1385.101318 1383.001465 1378.339478 1376.551514 1381.538818 1381.22229 1379.537476 1376.892944 1392.282959 1403.74939 1412.540283 1418.85083 1417.307251 1410.688965 1402.693237 1394.90332 1389.046997 1383.555176 1379.891357 1374.208984 1365.983276 1361.686523 1354.182739 1353.196777 1352.047607 1350.482666 1348.123535 1345.019897 1340.932617 1336.351074 1327.20459 1340.940674 1347.015625 1351.199707 1358.88269 1367.741943 1370.232178 1371.309448 1370.490356 1368.842285 1369.395752 1370.607422 1370.281982 1368.937622 1365.905396 1363.435791 1361.936035 1361.359375 1363.010986 1368.939697 1377.386353 1387.182007 1392.771484 1393.554321 1393.815674 1393.872314 1392.517212 1391.533569 1385.177612 1379.048828 1375.189697 1367.953491 1357.648071 1346.897339 1335.388428 1337.069092 1345.47168 1357.047241 1364.725098 1375.040894 1380.675903 1387.199585 1392.316528 1396.746948 1402.010132 1414.098145 1419.690308 1423.071777 1424.138672 1425.945068 1425.577881 1419.893433 1409.759644 1396.913208 1384.992554 1375.206909 1369.485718 1367.595947 1380.237305 1394.916504 1407.348755 1413.442139 1415.950684 1422.06189 1429.412231 1441.741577 1452.129883 1452.632812 1449.009277 1457.237061 1463.866699 1466.885376 1468.471924 1465.80603 1465.972412 1467.937988 1467.723877 1465.226074 1461.010864 1459.74707 1459.291504 1458.911011 1462.101562 1465.396362 1466.307007 1466.863037 1468.737183 1472.389771 1476.612915 1474.699097 1472.282837 1469.427734 1466.929077 1463.315552 1455.333984 1446.321655 1436.5354 1427.036255 1426.591553 1432.796875 1438.490234 1437.169189 1432.491455 1430.867188 1428.451904 1423.555298 1417.982544 1416.517578 1424.416992 1433.556274 1444.269531 1453.664307 1455.057861 1455.163818 1455.308716 1453.101807 1438.579468 1424.860107 1412.112061 1403.495483 1394.811401 1385.882202 1379.079834 1376.725952 1368.015991 1364.906128 1361.128296 1356.606079 1356.88916 1359.512695 1358.560913 1355.471802 1346.966797 1336.231934 1325.325195 1316.740356 1309.911865 1304.606567 1311.072266 1319.618042 1327.721069 1338.351318 1344.233765 1356.920532 1365.726807 1369.065674 1370.390381 1368.415283 1362.082886 1355.550415 1351.298218 1347.888306 1347.161499 1350.226196 1354.655151 1356.920898 1358.635376 1359.384766 1360.045288 1360.621338 1361.321533 1362.053101 1361.591553 1366.53772 1375.817017 1388.776245 1401.298096 1405.326172 1407.913086 1412.208374 1413.099487 1410.641602 1411.47522 1417.131714 1423.951538 1426.018921 1426.661499 1425.934814 1422.209839 1418.227539 1414.660034 1405.769043 1395.850464 1383.463013 1369.202515 1366.566772 1369.823853 1370.875977 1368.990112 1365.88147 1378.153931 1385.679688 1394.471069 1402.525879 1407.236328 1412.069824 1416.873535 1421.843872 1425.489258 1428.151001 1429.602173 1429.879395 1429.145752 1424.046265 1416.555176 1405.824463 1393.891479 1383.638428 1373.891479 1362.094849 1340.210205 1346.986694 1358.220703 1364.028931 1371.640747 1383.603394 1391.977173 1392.199707 1379.207031 1369.660278 1360.515259 1352.548218 1343.841064 1340.051392 1337.379517 1330.608887 1330.221558 1325.943848 1328.552734 1329.101562 1317.190063 1313.420898 1310.223022 1306.92041 1304.05835 1307.264893 1314.613647 1322.277344 1325.633423 1323.096558 1322.230347 1322.320435 1325.094727 1329.000732 1330.035889 1329.577881 1328.428955 1326.603027 1322.960571 1319.304321 1312.66687 1301.175537 1290.189453 1282.716431 1276.223022 1271.752686 1272.713989 1278.392456 1285.915649 1297.157104 1315.792603 1319.450073 1311.607056 1302.386841 1294.073608 1308.571411 1318.084106 1318.111938 1313.770142 1306.551514 1293.742432 1285.470825 1272.932739 1263.511475 1256.671021 1253.574219 1253.853882 1255.714478 1263.983276 1273.525879 1285.006348 1299.071777 1308.078125 1307.911011 1306.85144 1304.816162 1300.0625 1295.870239 1292.25061 1289.110718 1284.584229 1280.995117 1280.432495 1283.204468 1285.018555 1282.988403 1280.531494 1285.179688 1288.37146 1288.34729 1284.859497 1275.193726 1279.12793 1289.484619 1292.750977 1292.383789 1290.724365 1290.675415 1291.030273 1289.215332 1284.148682 1274.572021 1270.491943 1283.358154 1287.323486 1288.995728 1289.50647 1289.5271 1289.239624 1288.392212 1287.03064 1285.289307 1283.297852 1280.831787 1274.483032 1272.636597 1274.068237 1272.973145 1269.177002 1267.585327 1269.351929 1268.057007 1270.708008 1270.835205 1268.443726 1267.728149 1268.319214 1267.690308 1267.577148 1267.516113 1266.051636 1268.095215 1269.140015 1268.060669 1266.01709 1264.060059 1260.295654 1257.615845 1256.686768 1257.597656 1257.712036 1256.741699 1254.849609 1253.629028 1254.277222 1253.919678 1252.819214 1251.198975 1249.290771 1247.359985 1245.192017 1242.805908 1245.274536 1238.42334 1238.032471 1245.144531 1242.807739 1240.704712 1239.115723 1237.077637 1235.234131 1233.647827 1232.353027 1230.855835 1229.13623 1228.318115 1227.223755 1226.371826 1225.910767 1225.419067 1224.868042 1224.128662 1223.407593 1222.788086 1222.324341 1221.93457 1221.506714 1221.685059 1222.067627 1222.163208 1221.658936 1220.865845 1220.562378 1220.35083 1219.832642 1219.485229 1219.466064 1219.136108 1218.661377 1218.526123 1218.596313 1218.744019 1218.875854 1218.921509 1218.839355 1218.849243 1219.185913 1219.533569 1222.989502 1225.912354 1229.19458 1232.189575 1233.032471 1233.148926 1233.287964 1233.253296 1233.160767 1232.845947 1231.772705 1230.125244 1228.593872 1226.969482 1225.009033 1222.971802 1220.904785 1219.458496 1218.852661 1218.364258 1217.93457 1218.545044 1223.057251 1228.301514 1232.96106 1238.539673 1247.048828 1256.317871 1263.31189 1264.926758 1251.603271 1231.223633 1220.471558 1207.76416 1193.526001 1185.158936 1181.040283 1182.031616 1182.493652 1182.494019 1183.264404 1184.16333 1184.467407 1183.274292 1187.079346 1197.939819 1209.942017 1212.886475 1206.525879 1194.020264 1185.151001 1174.897583 1162.751221 1152.445557 1173.322876 1176.187378 1165.41748 1162.399414 1165.01123 1163.958008 1158.078857 1151.249268 1147.823486 1148.64502 1150.950562 1151.789429 1148.089844 1154.967773 1170.014282 1184.928711 1198.035522 1204.15979 1205.154297 1204.513062 1204.4375 1217.229248 1233.494019 1233.59082 1230.045776 1231.30542 -1337.415161 1336.68335 1363.581909 1390.697754 1409.759766 1410.723145 1404.67334 1402.127075 1415.264038 1430.831177 1451.748779 1470.412354 1485.028687 1495.317871 1507.217529 1522.272583 1549.126709 1572.415894 1589.618896 1608.188965 1627.935669 1641.960083 1654.600464 1665.30542 1673.707397 1677.428467 1681.083252 1686.03479 1689.091675 1688.438965 1685.442261 1681.324951 1677.874878 1672.110596 1665.712036 1659.150391 1650.025513 1642.212646 1633.945435 1623.718994 1613.396606 1599.359497 1585.82959 1581.573486 1578.081665 1575.980347 1572.076294 1563.126587 1553.01123 1546.102295 1533.746704 1529.587769 1530.828491 1529.497314 1527.084473 1524.496094 1520.623779 1516.965576 1512.275391 1502.942139 1497.26355 1494.629639 1494.299072 1496.60022 1497.584595 1496.699341 1493.28894 1488.683838 1486.396606 1481.8302 1479.151733 1477.441528 1475.91748 1471.586548 1468.563599 1464.645996 1456.692871 1448.77002 1439.5271 1428.322021 1419.07666 1407.988647 1397.59729 1388.691528 1378.398804 1369.898804 1365.062744 1373.097412 1380.264771 1383.451172 1387.824219 1392.196655 1394.786255 1392.977295 1389.056763 1385.122314 1380.897095 1385.420654 1388.319946 1388.516235 1384.252441 1388.750244 1402.502808 1411.236084 1415.303589 1410.369263 1403.601074 1397.575928 1391.747192 1387.412109 1382.171143 1377.103638 1373.600708 1368.255493 1361.244263 1354.14209 1352.364624 1351.457764 1350.103149 1347.807739 1345.0802 1342.974609 1334.281616 1327.647095 1344.708008 1349.122681 1353.719849 1364.650513 1370.55957 1374.03833 1375.521851 1376.291138 1376.454712 1375.940063 1375.245239 1374.708618 1374.427979 1373.362915 1372.302246 1370.908203 1370.716309 1369.41748 1370.149414 1376.074951 1384.123169 1392.038696 1394.371704 1394.667358 1394.598022 1393.318604 1392.277954 1389.127686 1383.287598 1380.26416 1374.043335 1361.740356 1350.626465 1341.498291 1335.717407 1345.801147 1358.604736 1371.573975 1384.435181 1392.081543 1396.973755 1400.991333 1403.037354 1408.439209 1416.379761 1422.640259 1427.046021 1428.42334 1430.140137 1430.049805 1426.431641 1415.672119 1401.9823 1389.407715 1379.429443 1373.753296 1368.953979 1369.974609 1382.097534 1393.786011 1401.800049 1405.528442 1410.47998 1422.382202 1434.73291 1442.411011 1443.200684 1444.27417 1453.675171 1457.438599 1459.524292 1459.251099 1456.848145 1456.718506 1460.254883 1461.643066 1458.911865 1455.703979 1453.483398 1454.164917 1455.269775 1459.615723 1463.616577 1466.185913 1467.285767 1469.342041 1472.455811 1475.37439 1476.414185 1474.838501 1469.256226 1463.636108 1458.891479 1452.008301 1441.152344 1434.849365 1430.992554 1436.40918 1442.162842 1444.35498 1442.71106 1441.570923 1440.155273 1434.902954 1428.317017 1424.38269 1423.262451 1424.277222 1431.225342 1439.828003 1451.453003 1455.506348 1456.443726 1456.521362 1452.217773 1436.890137 1425.537598 1412.771851 1412.71106 1398.605103 1388.802979 1388.55249 1379.581421 1375.843384 1371.663208 1365.449829 1364.233032 1365.129517 1365.422729 1363.321655 1356.666504 1347.079712 1337.309448 1328.119995 1316.383789 1311.430908 1306.219238 1312.455933 1323.857788 1334.132568 1343.03125 1350.122803 1354.182129 1362.661255 1366.124268 1374.39856 1373.498047 1367.903809 1361.457153 1355.336792 1352.019043 1351.582642 1354.089722 1357.966675 1361.856689 1364.272705 1364.654297 1364.488281 1366.064697 1368.770264 1371.282471 1370.072021 1367.615967 1373.238647 1386.254883 1399.208618 1407.37207 1414.094116 1418.819092 1420.906738 1418.649902 1419.723999 1428.612061 1433.849365 1436.702759 1432.713623 1427.716675 1424.581665 1418.640625 1414.163452 1402.782471 1393.168213 1377.234497 1368.004028 1371.458984 1378.610229 1379.285278 1378.210449 1376.186279 1375.123657 1378.225952 1388.159912 1395.824097 1403.678955 1407.387207 1412.016724 1416.562256 1419.761963 1422.21167 1425.687988 1428.845581 1429.31189 1425.870117 1417.515503 1405.525635 1395.043945 1383.681641 1373.262573 1361.113281 1339.703735 1355.25769 1364.193604 1375.259766 1385.212036 1393.526855 1392.607178 1378.225464 1368.783691 1359.289185 1351.881836 1349.003296 1345.144531 1343.555908 1344.241333 1339.528198 1339.62915 1342.777222 1342.92395 1331.001343 1317.719604 1316.262817 1315.032104 1307.731445 1304.281738 1309.513794 1317.120605 1328.498413 1330.910522 1327.725098 1327.552124 1326.558105 1327.920654 1331.962402 1332.650391 1332.160645 1330.727905 1327.886841 1320.704956 1315.925049 1308.646362 1298.675781 1288.678833 1280.305908 1272.623779 1272.858521 1275.770752 1279.358521 1288.135864 1299.366089 1315.595581 1321.200317 1319.142334 1309.999756 1303.40564 1317.724243 1321.717529 1320.734619 1317.69458 1309.930176 1297.018311 1285.586914 1274.061768 1266.087646 1261.23291 1258.455811 1255.467773 1254.813843 1261.755249 1270.24231 1278.646362 1292.008789 1308.172852 1309.885742 1308.836426 1306.863647 1303.874756 1298.685059 1294.735352 1291.511597 1283.539062 1280.354126 1285.325195 1289.694702 1288.169189 1285.068604 1283.734253 1289.425171 1292.317383 1291.76123 1286.199707 1279.83606 1281.280151 1294.410034 1296.449219 1296.75769 1294.175781 1292.803833 1294.655518 1293.393555 1287.866699 1281.232422 1274.721313 1284.52124 1289.667114 1291.049194 1291.516602 1291.525269 1291.126099 1289.97522 1288.47644 1286.498413 1284.276489 1280.990967 1280.94519 1281.504395 1278.575317 1275.43396 1270.589111 1270.907593 1271.873413 1271.907715 1272.560547 1271.732788 1268.521606 1270.205933 1271.177246 1270.506836 1270.265747 1269.560425 1267.708618 1268.099731 1269.632446 1269.950684 1268.585449 1266.744995 1263.423828 1261.751099 1260.754639 1260.451294 1260.221558 1259.217896 1257.183105 1255.675293 1257.238403 1257.299927 1256.456299 1254.614258 1252.687378 1250.963745 1248.491211 1246.665649 1246.773438 1242.897705 1237.207031 1245.411987 1245.403809 1244.216187 1242.418335 1239.966431 1238.184082 1236.198364 1234.454834 1232.545654 1230.937988 1230.171021 1229.327637 1228.203003 1227.883423 1227.355713 1226.521606 1225.732422 1224.984619 1224.482422 1223.882446 1223.463745 1223.145874 1223.107056 1223.109253 1223.014771 1222.737427 1222.146973 1221.656006 1221.321045 1220.88269 1220.539062 1220.443726 1220.246094 1219.682495 1219.196289 1219.175659 1219.342041 1219.405273 1219.398193 1219.287231 1218.978271 1218.994263 1219.202026 1221.319702 1224.194092 1227.912598 1231.536377 1232.908325 1232.966797 1232.840576 1232.698608 1232.658081 1232.251465 1231.019897 1229.709106 1228.51001 1226.900513 1225.044922 1223.007935 1221.132324 1219.513184 1218.836426 1218.458374 1218.992554 1224.747559 1231.151367 1236.148315 1240.862061 1247.328003 1256.04895 1264.720093 1271.285767 1273.834595 1255.210693 1232.793701 1221.494263 1209.783081 1200.730347 1192.571777 1183.244385 1180.875732 1180.34314 1180.023315 1179.536743 1178.495239 1178.444336 1177.868652 1179.028687 1184.197632 1197.482056 1204.853882 1198.805054 1190.897095 1183.642822 1173.49939 1159.681152 1154.070557 1177.141846 1187.919434 1184.581177 1180.583862 1180.110718 1179.21582 1175.768066 1170.029663 1165.124023 1170.378296 1173.842896 1168.306519 1160.651367 1159.003052 1174.932251 1194.898682 1212.214355 1222.909058 1229.050171 1229.100586 1225.04126 1220.917969 1242.022339 1254.409424 1261.536011 1266.109741 -1347.855713 1340.327759 1348.528687 1362.135986 1372.734375 1383.243408 1384.648682 1391.881592 1404.701294 1417.771851 1438.02417 1455.753296 1472.020752 1485.076172 1500.418579 1519.351929 1542.94873 1563.976807 1584.459229 1599.096191 1625.628296 1642.278076 1661.430908 1674.140137 1682.693359 1687.049927 1690.793945 1697.527954 1701.786987 1701.366455 1697.614502 1691.662476 1684.083862 1680.192139 1677.279419 1670.701416 1661.16687 1651.318115 1641.200317 1628.279297 1615.080566 1597.43457 1585.737915 1580.569336 1573.716919 1573.037231 1569.281982 1564.416748 1558.328491 1553.082397 1545.068359 1539.360596 1540.628662 1539.442871 1536.553101 1532.063965 1527.288086 1522.366821 1517.952637 1513.519409 1506.963867 1505.568359 1505.7052 1506.924683 1505.46521 1503.378174 1501.758545 1498.242676 1493.355835 1490.101685 1486.095459 1480.458984 1479.569824 1475.142822 1469.842407 1465.374023 1455.623413 1443.517456 1430.180786 1421.69519 1411.831299 1400.884766 1393.341797 1385.757202 1375.687988 1366.315186 1370.21228 1377.579346 1383.756104 1389.070801 1393.554932 1397.827759 1400.748779 1403.427246 1402.235718 1395.309692 1388.230713 1390.550781 1395.849609 1397.63562 1395.965332 1390.198608 1394.19104 1406.279907 1407.242432 1402.318237 1399.679077 1393.526611 1389.385376 1387.231812 1383.262329 1380.253784 1376.155762 1368.586548 1362.619263 1354.786377 1354.48645 1352.817993 1350.382812 1347.764282 1345.605957 1343.353638 1333.717651 1336.625488 1345.663696 1350.678955 1357.880127 1368.234619 1375.220337 1378.426514 1379.683472 1380.578369 1380.939575 1380.386353 1379.837891 1379.112061 1379.616699 1380.021118 1379.944824 1378.669312 1376.634644 1376.701172 1379.149902 1381.872314 1387.927612 1392.845703 1395.616821 1395.292969 1394.345215 1389.36731 1384.404907 1380.23584 1380.98877 1379.966919 1375.652954 1362.293945 1350.672485 1343.051392 1336.435791 1345.198608 1359.391235 1376.449341 1390.02417 1398.791504 1405.340698 1411.130859 1415.094116 1417.482666 1421.37085 1426.207642 1429.796631 1431.888306 1432.881958 1432.145874 1429.049927 1419.033569 1406.116211 1393.944824 1385.86145 1378.493408 1373.367065 1370.229858 1372.279053 1381.115112 1387.648682 1392.723511 1403.498535 1417.33313 1426.321289 1431.943726 1432.749268 1437.177002 1445.632568 1446.983521 1446.090576 1445.66748 1444.893188 1446.104248 1449.518066 1451.554199 1451.692261 1449.387573 1447.440674 1448.916626 1451.065308 1453.887451 1458.283569 1463.213989 1464.924194 1467.992554 1471.3302 1473.814941 1475.41687 1476.241577 1467.978394 1461.082764 1453.483521 1445.630005 1437.778442 1437.170898 1440.574219 1444.376343 1448.326294 1449.45166 1449.460205 1448.027466 1445.110596 1440.228149 1435.009399 1430.635132 1427.742432 1426.208862 1434.151123 1442.513062 1450.856689 1455.590088 1457.682007 1457.632935 1453.745117 1439.749023 1429.2854 1431.184692 1426.405029 1405.426636 1402.832397 1394.852173 1388.779541 1385.223145 1378.166138 1376.387573 1372.957764 1371.190918 1369.323853 1367.241455 1359.812134 1349.967896 1338.74353 1329.215576 1318.957642 1315.028809 1310.302002 1310.474487 1324.844727 1336.384155 1344.55896 1353.188232 1357.923096 1364.356323 1368.621582 1377.358521 1379.472168 1373.826904 1366.190796 1359.502808 1353.928345 1352.641724 1356.240967 1362.013428 1366.522949 1370.911743 1372.392456 1372.301758 1374.478882 1379.422241 1381.066528 1379.138916 1374.633179 1372.528564 1381.668823 1393.401001 1404.357666 1412.880615 1419.633423 1427.404907 1427.280884 1427.779419 1434.007324 1438.866211 1441.350464 1435.519653 1426.624634 1417.588867 1411.391724 1405.505249 1397.175171 1387.140747 1373.541626 1372.386963 1377.274048 1386.874268 1388.825195 1388.86792 1384.72229 1382.523926 1381.326172 1384.649048 1389.40625 1395.378662 1401.564209 1406.751831 1412.148193 1413.486084 1413.975586 1417.457397 1422.166138 1427.05127 1426.857056 1418.676147 1407.939087 1396.194702 1382.934204 1371.084595 1357.594238 1346.204834 1360.799194 1373.893433 1383.867798 1392.260376 1392.838623 1378.732544 1369.470581 1363.906128 1357.513794 1356.973511 1358.211304 1359.764893 1360.537842 1361.281738 1357.710205 1354.96228 1355.722534 1344.807617 1332.619629 1323.293579 1324.95752 1320.789917 1312.868896 1306.312378 1312.12793 1319.553345 1329.923706 1339.103394 1333.890259 1331.755005 1329.571533 1330.432983 1336.336182 1335.736572 1332.913086 1330.223633 1319.638306 1314.001465 1306.198608 1301.471313 1292.891846 1284.473267 1275.144287 1274.530518 1276.577515 1279.190186 1280.986938 1291.030518 1300.467285 1312.832642 1321.405762 1321.803711 1313.594727 1308.678833 1322.469971 1323.765015 1322.275146 1320.367188 1311.453857 1299.680054 1289.443848 1281.743286 1269.918091 1264.885986 1261.351685 1258.240967 1255.232056 1260.38501 1267.699829 1275.241577 1283.864502 1300.692505 1311.4375 1310.908081 1308.832153 1305.484619 1301.622192 1297.173828 1294.490234 1281.891113 1286.446777 1294.181641 1294.156738 1291.263062 1290.977783 1290.511963 1293.415039 1295.153564 1294.489014 1289.131958 1280.666992 1281.836304 1295.618286 1301.745117 1301.497192 1298.746338 1297.195312 1297.25769 1295.457886 1290.97876 1282.305786 1280.138428 1288.139771 1292.934814 1293.556885 1293.753662 1293.557983 1292.784546 1291.663574 1289.98645 1287.842773 1285.578735 1283.588379 1282.726807 1281.289307 1279.236206 1279.096802 1277.087524 1275.936768 1275.736938 1275.239014 1274.96521 1274.430176 1273.824707 1273.957153 1274.281738 1273.838745 1272.716797 1270.960938 1268.578491 1268.100098 1269.723511 1270.685425 1270.459839 1268.709595 1266.948853 1265.754395 1264.775024 1264.541626 1263.828979 1262.277222 1260.263062 1258.92627 1259.613037 1259.393921 1258.215576 1257.066406 1255.808228 1254.571533 1252.85144 1250.970703 1249.374634 1246.289429 1238.250977 1244.426392 1246.703857 1246.47583 1245.055786 1243.055664 1240.850464 1239.159546 1237.224976 1234.78125 1232.736938 1232.096191 1231.010864 1230.00354 1229.767944 1229.209839 1228.220337 1227.418701 1226.777466 1226.087769 1225.531494 1224.94812 1224.623291 1224.470703 1224.342773 1224.2323 1223.751221 1223.335815 1222.840088 1222.466919 1222.143677 1221.904663 1221.846069 1221.590332 1221.241821 1220.571289 1220.455811 1220.529175 1220.572388 1220.577271 1220.422241 1220.026978 1219.524414 1219.077637 1219.392944 1221.637573 1224.622559 1228.712891 1231.368774 1231.962769 1231.978149 1231.918579 1231.928955 1231.550171 1230.756836 1230.013672 1228.994995 1227.450195 1225.332764 1222.90332 1220.690918 1219.256592 1218.848877 1219.205688 1225.083008 1232.530884 1238.222168 1243.518677 1249.093018 1255.928345 1263.809082 1271.61145 1278.103516 1280.741333 1257.477661 1241.385864 1232.486572 1222.260742 1208.998901 1196.898315 1184.272217 1180.721313 1179.052979 1177.804199 1175.69397 1171.997192 1172.723022 1172.388306 1171.694092 1177.2854 1189.378052 1198.338501 1193.929688 1185.515381 1177.481445 1167.283325 1153.577148 1158.001587 1175.399048 1191.054932 1198.236694 1197.973145 1197.529419 1197.003296 1192.966187 1186.181885 1180.059692 1188.064697 1190.419922 1187.202148 1178.727539 1167.942993 1172.401489 1198.049927 1221.147705 1238.737305 1246.296021 1248.601074 1248.648438 1245.979126 1244.594727 1265.483032 1278.395142 1286.895874 -1382.310913 1369.686157 1349.901489 1366.076904 1369.064941 1375.929688 1390.06543 1397.179443 1403.656494 1409.080688 1424.857178 1441.269653 1461.257935 1479.264893 1494.962036 1516.5802 1534.746948 1556.436035 1572.436035 1595.351318 1620.67749 1638.672852 1666.532593 1683.192993 1691.072266 1696.158203 1701.050659 1709.001709 1710.618652 1710.085205 1707.967407 1701.19519 1693.646606 1692.130981 1690.408569 1685.200195 1674.348145 1661.421265 1649.644653 1633.795776 1621.863525 1608.841919 1594.553345 1584.677002 1574.933105 1571.763184 1570.905518 1568.542969 1564.681152 1559.365601 1548.618652 1546.894775 1547.239746 1546.694458 1544.141357 1539.365112 1534.35022 1526.971558 1522.105835 1518.094727 1513.380249 1514.037598 1514.672974 1513.075928 1507.663818 1503.944458 1502.502197 1503.148071 1497.231445 1489.571045 1482.492432 1475.933472 1466.165649 1464.327759 1465.928711 1463.529419 1455.588745 1446.010986 1435.647949 1421.084595 1410.471436 1399.935791 1390.536865 1382.866333 1372.147339 1369.682373 1380.202881 1382.730957 1386.143677 1391.618164 1398.451416 1403.508057 1410.012207 1413.020142 1411.283813 1408.423706 1398.581299 1395.881104 1405.11438 1408.858521 1407.332153 1399.873413 1401.266724 1410.162354 1407.784424 1401.505737 1399.63501 1394.67749 1391.570801 1389.479004 1385.916992 1381.943481 1376.740112 1366.301514 1363.004272 1361.148071 1356.99292 1353.367188 1350.696533 1347.758911 1345.552979 1343.280029 1331.528442 1343.079956 1347.529663 1352.025879 1362.348022 1372.761841 1379.173096 1381.500122 1382.855957 1383.720947 1384.046509 1384.017212 1383.822144 1384.029541 1384.746582 1385.977173 1387.059814 1387.281494 1386.289429 1385.962891 1388.491089 1391.793091 1394.167603 1397.992188 1397.841919 1395.137939 1391.570068 1382.535767 1376.759033 1372.606323 1373.005981 1371.902588 1368.519653 1356.040283 1348.376587 1342.733643 1337.976685 1346.391479 1359.803467 1373.216553 1390.783936 1401.744873 1411.422119 1416.963623 1419.366577 1420.901245 1423.984619 1427.613281 1431.848267 1435.653198 1436.452026 1434.171997 1430.631348 1421.384766 1409.475098 1400.537231 1392.842773 1383.733398 1378.300415 1375.920044 1371.553833 1371.997925 1379.289062 1385.44397 1396.921753 1408.881226 1416.21106 1417.968872 1425.84436 1431.661987 1435.074219 1434.404175 1432.904053 1432.991943 1432.73645 1435.370361 1439.377197 1440.47644 1440.641724 1440.385498 1440.262451 1442.723267 1448.977539 1450.008911 1451.308472 1460.188599 1462.277954 1466.726318 1470.737305 1472.693481 1473.142334 1471.246704 1467.49646 1461.11853 1452.237793 1443.379395 1438.702759 1442.15564 1446.230713 1451.848511 1454.520264 1454.887939 1454.679443 1453.263184 1449.613525 1444.988403 1439.809814 1435.704346 1432.498291 1427.955811 1437.91272 1447.006592 1453.560425 1456.030396 1458.640381 1460.516724 1455.389404 1447.897339 1446.535645 1440.717285 1433.176392 1421.164185 1411.352051 1406.713501 1403.791016 1393.875732 1386.376831 1383.671021 1378.431274 1373.049072 1368.992554 1367.089722 1360.175293 1352.573486 1340.849487 1331.051636 1324.616089 1320.209595 1313.717163 1311.4552 1322.155518 1333.023071 1340.792847 1347.857544 1354.851196 1361.301147 1367.452515 1374.305542 1380.740967 1379.66272 1371.537354 1363.422363 1356.951416 1352.880371 1357.666748 1364.680298 1372.626953 1379.49939 1380.749634 1381.203369 1382.122437 1386.448975 1387.231323 1386.510986 1382.913086 1375.743408 1378.521484 1387.753174 1398.864868 1407.584473 1416.320801 1426.479736 1429.950317 1433.862549 1439.380615 1441.726196 1441.832886 1437.928955 1430.915161 1421.990479 1411.862305 1401.578125 1393.463989 1381.793335 1375.293335 1376.530396 1383.507324 1392.486084 1394.683716 1394.906128 1392.666138 1392.73584 1391.450195 1390.060425 1395.552734 1400.824097 1404.20752 1408.193848 1410.557007 1409.539185 1408.218506 1410.408325 1413.422729 1416.481689 1417.264526 1413.981323 1403.528076 1392.026489 1379.083984 1368.522461 1352.62915 1354.919067 1367.6521 1381.098511 1388.121826 1391.70813 1383.371338 1371.345459 1364.584106 1363.932861 1366.366577 1366.325073 1364.645996 1368.725098 1372.507324 1373.030884 1369.518066 1364.263184 1353.608032 1341.117065 1330.806396 1330.358887 1333.65625 1327.922852 1317.930054 1312.549072 1314.493286 1321.648804 1332.098633 1343.875 1340.265381 1336.87793 1335.567261 1339.078003 1342.797485 1336.327271 1330.278198 1322.537598 1313.621094 1306.068726 1298.438843 1291.679077 1286.551025 1279.845215 1274.755127 1277.867554 1280.926758 1283.139404 1285.998779 1291.987793 1300.31189 1310.885742 1320.541504 1326.072998 1315.077026 1311.482666 1322.57373 1325.603516 1323.696289 1318.95459 1308.38269 1299.160767 1291.528931 1283.046753 1273.292847 1266.737793 1263.581421 1259.738159 1255.797363 1260.255737 1266.360107 1273.616211 1281.765625 1293.853882 1310.692139 1314.487793 1311.132568 1307.935181 1305.227417 1298.529663 1289.688354 1288.21814 1293.697998 1296.006592 1296.437012 1295.06665 1293.864746 1291.835205 1295.307617 1297.129761 1296.227417 1292.417969 1282.814453 1281.172852 1294.967285 1304.823486 1305.678467 1302.96582 1301.073486 1300.550903 1297.765991 1292.946655 1281.982788 1282.781006 1293.818726 1295.00708 1295.364746 1295.553589 1295.328491 1294.568359 1293.427856 1291.415283 1289.146484 1287.427734 1285.683838 1283.763428 1281.482544 1279.965332 1281.663818 1279.661621 1280.649536 1279.320679 1277.543823 1277.416626 1277.622192 1277.483032 1278.38562 1278.721436 1277.764282 1275.81958 1272.300415 1268.881104 1268.366089 1270.231812 1271.76001 1271.926758 1270.833618 1269.843872 1268.442871 1267.655762 1268.22644 1267.77063 1265.791626 1264.172729 1262.816406 1262.082764 1261.17334 1259.965332 1258.785522 1257.78064 1257.235718 1255.743042 1254.49585 1252.391479 1248.0448 1241.90686 1243.654297 1247.253662 1248.09436 1247.008057 1244.029907 1243.868164 1242.525879 1240.308594 1237.836426 1235.810547 1234.390137 1232.78479 1231.931763 1231.63562 1231.060913 1230.179199 1229.273682 1228.365234 1227.663208 1226.935547 1226.41394 1226.005371 1225.780151 1225.692261 1225.409302 1225.024658 1224.616821 1224.272705 1223.965332 1223.695923 1223.593994 1223.386353 1223.216309 1222.878052 1222.609009 1222.485474 1222.335083 1222.285645 1222.39209 1222.199707 1221.835083 1221.029785 1220.012817 1219.430298 1219.118652 1220.767212 1224.189087 1228.076294 1230.119385 1231.0896 1231.448486 1231.769287 1231.655396 1231.177979 1230.805908 1230.163574 1228.580322 1225.839966 1222.710571 1220.261475 1219.072876 1219.792847 1224.308594 1231.264404 1237.977905 1244.965088 1250.933594 1257.88855 1263.427124 1270.322144 1276.56958 1282.114502 1282.310059 1259.628296 1244.980347 1231.686401 1213.209473 1203.66272 1193.91272 1183.933594 1180.746582 1178.177368 1176.228271 1173.669922 1171.383911 1169.639526 1168.409424 1168.256104 1171.066162 1184.942871 1190.376709 1186.931152 1178.41394 1166.801147 1154.973633 1154.65918 1165.385376 1184.254028 1195.984253 1205.304321 1209.789795 1213.913208 1212.803345 1208.56543 1202.168457 1198.189331 1205.339478 1208.596924 1203.820435 1193.243164 1180.572021 1170.407715 1191.832764 1221.466675 1240.834106 1259.587402 1267.34314 1268.372192 1267.575684 1267.864014 1269.969849 1284.566528 1299.566284 -1408.304443 1394.056152 1385.825806 1389.825684 1383.890747 1391.541626 1412.400024 1426.114746 1428.730835 1433.434326 1435.936035 1457.046875 1474.622925 1486.079712 1496.071289 1519.309082 1533.428345 1554.174072 1569.810059 1590.924683 1622.135254 1645.590088 1671.607056 1689.835083 1699.83313 1706.531372 1710.098022 1713.525513 1714.629028 1714.412964 1712.71521 1709.299438 1704.463501 1703.256226 1701.44104 1697.129028 1688.971436 1676.104736 1658.072144 1642.381836 1629.640015 1620.70752 1606.150269 1592.776978 1585.167114 1577.94458 1576.897339 1574.143555 1570.359253 1564.850708 1559.743408 1557.635498 1555.660034 1553.636597 1550.774536 1547.295044 1541.849487 1537.786499 1529.331665 1524.071777 1519.352783 1516.206055 1514.427002 1505.176636 1500.198242 1497.200195 1495.371704 1495.47522 1488.937988 1481.06958 1471.226807 1461.646118 1450.840454 1449.871338 1454.03418 1454.166748 1450.054565 1444.251587 1436.243774 1423.499634 1413.0354 1402.052979 1393.530396 1379.731201 1368.647583 1376.066895 1382.710938 1385.949097 1388.281494 1392.85437 1401.984375 1414.662476 1421.496094 1425.593628 1423.342896 1417.494385 1408.734253 1406.759033 1416.534424 1419.269165 1418.327393 1410.990845 1405.099731 1416.173584 1415.9198 1408.595215 1403.536499 1399.708618 1396.181396 1392.800537 1388.822388 1381.692139 1376.069946 1371.386597 1368.972168 1366.236084 1359.143677 1353.756714 1350.981934 1347.410767 1344.105591 1339.355957 1336.301025 1344.507935 1348.831787 1352.749512 1364.218384 1376.692017 1381.343872 1383.97937 1386.091919 1387.132446 1387.545166 1387.286133 1387.375732 1388.10437 1389.535034 1391.367065 1392.776978 1393.54895 1393.848267 1393.873413 1395.582153 1398.070435 1400.593506 1402.904297 1399.820801 1392.500732 1387.470459 1375.468384 1368.66333 1364.031738 1363.863159 1362.600342 1355.491089 1350.635742 1345.603027 1341.59021 1339.071289 1348.803955 1358.511475 1367.768311 1383.555786 1396.862427 1407.607544 1417.606812 1419.255615 1419.977783 1423.176025 1427.953491 1431.942871 1438.620239 1439.58728 1435.738159 1431.793213 1425.894653 1416.851562 1409.666138 1400.8573 1391.861694 1387.649048 1383.505371 1377.872681 1373.744141 1372.150757 1377.854248 1386.924561 1397.543213 1405.491211 1410.592407 1420.564087 1427.93335 1428.118408 1422.860107 1420.942261 1421.836792 1422.007202 1425.068726 1428.158813 1430.332397 1432.919189 1436.645142 1439.162964 1447.988159 1453.540283 1457.703979 1461.717407 1464.373291 1465.55249 1468.679443 1471.831543 1472.577515 1471.719727 1469.161865 1465.151489 1457.578735 1450.139282 1446.87854 1448.818237 1451.900513 1450.112793 1457.903564 1461.113037 1460.704468 1459.664673 1457.57251 1454.068481 1449.025146 1443.91272 1441.459961 1439.103516 1435.739624 1439.411621 1448.453857 1453.460205 1455.981323 1458.837036 1462.506226 1465.463013 1464.371216 1462.410767 1453.329102 1443.133789 1433.925049 1425.454956 1425.6604 1415.927124 1402.810425 1393.291016 1385.471558 1377.484741 1368.033203 1364.413574 1360.883545 1356.753784 1350.265747 1340.831421 1333.428955 1327.516724 1321.176758 1315.226074 1311.657349 1315.904785 1326.927368 1335.678711 1339.756836 1347.179321 1354.321777 1360.532227 1366.287109 1377.2771 1380.789307 1377.345825 1367.42334 1360.476929 1354.741455 1359.010254 1365.630127 1375.867065 1381.788574 1385.500977 1389.148438 1392.566406 1394.452026 1395.110352 1395.452148 1393.709229 1386.70166 1379.009766 1385.32605 1391.275757 1401.370239 1411.954834 1420.938232 1426.767578 1433.084229 1440.0448 1441.509155 1442.123657 1437.841187 1428.474243 1420.535767 1410.263428 1401.111206 1394.219482 1381.898315 1382.195557 1387.561035 1395.418091 1399.348755 1399.355591 1399.321289 1398.546753 1397.873535 1396.620605 1396.39209 1400.912476 1405.857788 1411.214233 1415.307251 1413.023193 1406.640259 1401.557129 1403.409668 1406.427734 1408.183105 1407.932983 1403.567383 1394.862427 1385.705444 1375.514526 1364.136353 1353.185303 1362.358276 1375.019043 1383.13208 1386.429932 1385.016479 1377.634277 1369.625488 1370.220337 1371.838623 1373.782349 1376.733765 1376.353027 1379.27124 1380.798462 1377.942139 1368.768188 1358.250366 1346.095825 1339.222168 1340.274536 1341.57019 1340.483154 1330.986816 1317.786743 1314.421387 1316.630615 1324.082642 1335.394043 1344.499878 1343.84021 1341.268555 1337.067505 1340.105713 1335.801514 1326.204956 1317.916382 1314.539917 1309.339844 1302.164307 1293.007324 1286.69397 1281.597046 1277.056885 1277.537109 1281.677246 1284.161743 1286.491699 1289.532837 1292.714233 1300.973999 1309.293213 1319.417603 1330.601807 1322.899414 1316.102051 1321.755493 1329.211914 1326.956177 1314.531738 1305.208984 1297.887329 1290.633911 1283.678101 1276.019653 1268.452271 1267.237061 1265.235718 1257.019775 1261.207886 1266.725464 1273.824097 1282.522217 1292.001465 1307.955933 1316.407104 1313.140259 1310.015137 1306.936035 1295.855835 1288.998413 1290.146484 1294.704468 1297.183716 1298.521362 1299.001831 1298.129395 1296.433594 1298.169434 1299.983032 1299.377563 1294.469971 1286.304199 1285.979492 1293.255493 1303.000244 1306.004761 1304.317139 1303.973511 1304.655273 1301.641602 1294.109253 1282.018188 1288.746094 1294.88562 1296.415283 1297.09668 1297.226807 1296.838501 1296.067017 1294.400391 1292.178345 1290.513062 1289.352539 1287.875977 1285.389771 1281.911377 1281.371826 1282.309814 1280.427979 1281.901001 1281.331787 1280.060669 1279.973145 1280.177856 1279.93457 1281.56665 1282.062256 1281.358765 1279.82666 1275.137085 1268.81958 1268.55957 1271.771973 1273.700562 1274.095215 1273.718994 1272.19751 1270.520752 1270.325928 1270.697876 1270.24231 1268.43042 1267.241821 1265.556519 1264.310547 1263.086548 1261.699951 1260.389648 1259.233521 1258.661011 1258.1604 1257.47583 1255.900146 1249.588501 1242.462769 1244.455933 1249.674561 1250.557617 1248.964478 1245.597778 1246.455322 1245.418213 1243.570312 1240.898682 1238.883789 1237.250244 1235.603027 1234.824341 1234.164673 1233.071045 1231.776611 1230.67627 1229.867432 1229.088867 1228.346191 1227.672485 1227.23645 1227.044434 1226.859741 1226.702637 1226.363892 1225.951294 1225.590332 1225.391968 1225.289307 1225.303589 1225.172485 1225.177002 1225.082275 1224.789551 1224.655151 1224.630859 1224.528442 1224.445312 1224.295166 1223.862915 1223.152222 1222.19519 1221.710571 1220.958618 1220.043091 1220.570557 1225.790161 1228.494263 1229.963013 1230.835815 1231.497681 1231.824951 1232.035767 1231.880615 1231.794434 1230.286499 1226.223999 1222.573975 1219.862915 1219.791504 1223.912476 1229.3125 1235.528564 1240.891846 1248.544312 1255.985229 1262.200562 1268.461426 1275.349487 1280.959839 1284.572021 1282.852295 1262.053101 1246.055786 1230.897705 1211.834961 1195.614258 1189.857666 1184.815674 1180.859375 1177.697266 1175.372314 1173.752686 1172.123535 1170.678223 1166.147217 1165.239258 1167.346191 1173.290039 1179.903076 1177.887817 1168.673828 1159.013306 1154.26123 1157.86145 1166.138184 1183.68042 1202.291992 1213.965698 1222.050049 1226.977173 1227.854492 1226.061157 1220.049072 1213.742432 1219.479736 1224.009399 1220.583008 1208.833496 1193.964233 1186.712524 1184.72522 1209.120117 1228.651611 1245.482544 1266.14624 1280.753418 1284.993164 1288.060425 1292.65271 1294.886353 1301.823486 -1424.438721 1409.386597 1411.497681 1405.095703 1391.942139 1395.324829 1407.837402 1426.818481 1447.098267 1462.244751 1466.356689 1471.730713 1483.752686 1495.645386 1507.776611 1527.533569 1540.28833 1559.8125 1572.563477 1596.385376 1628.903076 1647.341431 1675.2948 1695.474121 1709.35437 1717.143799 1718.728638 1718.506226 1718.10083 1718.067505 1717.482666 1715.903198 1714.98999 1715.420532 1711.80481 1706.09436 1695.308228 1685.78772 1668.282593 1650.593262 1634.18335 1626.073853 1614.039795 1602.634155 1593.433228 1586.029175 1582.748291 1580.063965 1576.935303 1574.274048 1569.254761 1565.305542 1562.515991 1557.949219 1554.140381 1551.623047 1546.572388 1540.369141 1533.50293 1527.02002 1515.839233 1507.626709 1499.331299 1493.159302 1485.482422 1481.536743 1476.975342 1483.531006 1481.52124 1466.130249 1453.969604 1449.106445 1439.966919 1435.770874 1438.63623 1441.249268 1441.770752 1439.159424 1429.177246 1420.87561 1412.474731 1401.182617 1392.336426 1383.281128 1369.889526 1378.958618 1388.67395 1390.713867 1389.542969 1395.927979 1406.402954 1422.254883 1430.106812 1435.396118 1436.009155 1430.589355 1420.915039 1418.940796 1425.579102 1427.930664 1426.779419 1418.090088 1414.488892 1420.149658 1420.046387 1416.080566 1408.959106 1404.201782 1400.24585 1395.372437 1390.444946 1384.535767 1380.498291 1377.954956 1372.44519 1367.003174 1360.264526 1354.460815 1351.083618 1347.501953 1343.475464 1333.387329 1340.549316 1345.965942 1350.96814 1356.745483 1366.80249 1378.624512 1383.923462 1387.603394 1389.422729 1390.624878 1391.112549 1390.787842 1390.781738 1391.877319 1393.692383 1395.428711 1396.84021 1397.803955 1398.582275 1399.720337 1401.296997 1403.227539 1405.147583 1404.907104 1400.583008 1390.482056 1384.120239 1365.510132 1363.6604 1362.250122 1359.438232 1355.33606 1352.263306 1350.47644 1349.015259 1346.409912 1340.199341 1345.56189 1355.052856 1361.737305 1372.421021 1386.627197 1395.042358 1402.001465 1410.568848 1415.026611 1418.676636 1423.491333 1426.963623 1432.741333 1436.38269 1435.028687 1432.920044 1431.393188 1429.796021 1425.885254 1411.007935 1401.992432 1398.306763 1392.653442 1384.847534 1378.391235 1375.467041 1373.533569 1376.211426 1386.325439 1396.46167 1403.028076 1411.016846 1415.008179 1413.178711 1407.99353 1406.609253 1408.937256 1412.944946 1415.357422 1419.812866 1424.415039 1433.363892 1441.635376 1450.173462 1455.535034 1460.383301 1465.367432 1467.432007 1468.748657 1470.146606 1472.883789 1474.051514 1473.878418 1472.131714 1468.650024 1463.074219 1455.955078 1450.016113 1449.498901 1454.098389 1457.94397 1462.260864 1465.866943 1467.381714 1466.73584 1465.080444 1462.208496 1457.168335 1451.030518 1448.47522 1446.895264 1444.379883 1440.586304 1441.412964 1448.180908 1452.500122 1454.111084 1455.641724 1459.707031 1463.032104 1463.022217 1462.103271 1456.50293 1449.58667 1443.101074 1438.771118 1424.50769 1412.263306 1398.971924 1389.758667 1382.731934 1375.157837 1368.096191 1358.773804 1353.164307 1350.305054 1345.327881 1338.678833 1332.130981 1326.689819 1320.193115 1313.261719 1315.087524 1322.722412 1331.487061 1344.0802 1349.069214 1352.610107 1353.039673 1357.671997 1365.71521 1372.878662 1378.870728 1380.323853 1372.445068 1363.660767 1360.47876 1361.539062 1365.079468 1373.935669 1380.950684 1388.372681 1393.694092 1398.381836 1401.744873 1404.285645 1405.734619 1405.271606 1398.8302 1388.476562 1384.705078 1389.643799 1400.507935 1408.276489 1417.075806 1423.261719 1429.528564 1434.4198 1437.844482 1437.302246 1429.153809 1421.674072 1414.242554 1406.057373 1399.939087 1393.470581 1384.886108 1385.962036 1395.473877 1409.145874 1418.901855 1413.719727 1406.366455 1404.066406 1403.136353 1401.932861 1400.419434 1403.062012 1408.123047 1413.779419 1416.494629 1412.602295 1403.332886 1391.051636 1390.459839 1396.283325 1399.024292 1396.542603 1390.108032 1385.690063 1380.166626 1368.869507 1357.205933 1363.965454 1375.12561 1381.880127 1388.722656 1387.165161 1379.786133 1376.02356 1375.19104 1378.440796 1380.612671 1383.508789 1387.158325 1389.070923 1384.509521 1380.006958 1370.524292 1361.150146 1352.913452 1348.044678 1349.695923 1352.466919 1349.845825 1343.165527 1330.2854 1321.02002 1316.000366 1320.067261 1326.987671 1338.333618 1344.720581 1343.770142 1337.599976 1330.95874 1329.529785 1323.394165 1317.937744 1312.413208 1305.231689 1303.443726 1296.197266 1287.717163 1281.079224 1278.434204 1276.659302 1281.59021 1285.116089 1287.722046 1289.332642 1293.432495 1298.86377 1305.306885 1314.846558 1324.002441 1331.967529 1327.634766 1317.459351 1320.060791 1329.026367 1326.532349 1315.829346 1307.851807 1298.09729 1290.068481 1284.500488 1280.056274 1269.600586 1271.887451 1270.125 1257.804688 1261.884521 1267.40564 1274.03772 1281.639404 1291.072266 1304.873901 1315.645996 1313.452271 1310.567993 1306.283691 1296.042969 1290.117065 1291.179443 1295.504883 1298.567261 1300.727173 1302.297974 1303.366943 1302.585205 1302.430542 1303.587646 1304.547119 1296.777954 1289.859009 1289.568481 1292.117798 1299.940308 1305.776611 1304.934937 1306.728149 1307.49646 1305.890991 1296.08252 1290.401733 1292.178101 1296.014893 1298.24585 1299.096313 1299.117065 1298.634277 1297.500977 1295.642456 1293.823242 1292.173218 1291.388916 1290.737671 1288.568848 1286.131348 1284.768921 1283.899536 1281.622925 1283.592529 1283.755981 1283.036377 1282.793945 1282.983765 1283.159424 1284.116821 1284.490967 1283.826416 1282.207397 1279.91626 1268.598145 1269.530884 1274.504395 1276.57605 1277.059204 1276.558228 1274.718994 1273.731201 1273.010254 1272.649536 1271.791748 1270.449585 1269.238647 1267.391724 1266.036011 1264.714233 1263.193604 1261.703857 1260.57312 1259.88269 1259.451294 1258.656616 1257.45105 1247.874268 1241.972412 1250.010742 1254.741577 1253.566284 1252.085693 1250.146484 1248.834961 1247.501831 1244.591431 1243.265869 1241.492554 1239.817139 1238.689209 1237.839233 1236.885132 1235.3396 1233.699219 1231.823364 1230.901978 1230.275391 1229.588989 1228.854858 1228.359131 1228.14563 1228.088501 1227.966309 1227.787231 1227.439819 1227.074829 1226.79541 1226.717529 1226.816528 1227.016479 1227.223633 1227.326416 1227.241089 1227.057007 1226.974731 1227.086304 1226.987183 1226.772217 1226.58728 1225.876953 1224.94397 1224.419434 1223.863403 1223.290649 1223.44751 1225.675659 1227.865234 1229.303955 1230.473267 1231.878296 1231.935791 1231.99939 1232.015259 1231.960449 1230.645752 1226.86145 1223.704346 1221.281616 1224.174683 1228.695435 1231.845337 1239.96521 1245.638428 1252.208496 1258.538208 1264.947266 1273.266113 1280.547119 1284.331421 1286.443359 1284.46521 1262.891235 1244.498901 1225.551025 1208.42334 1197.13208 1189.023682 1182.890381 1179.526123 1175.872314 1174.189331 1173.018921 1171.24292 1167.198486 1162.73584 1161.504639 1162.481689 1165.017212 1167.500488 1165.934448 1160.118652 1154.579346 1159.265259 1171.114136 1180.751099 1186.096558 1203.003784 1219.945679 1232.522827 1239.307373 1242.790405 1244.34436 1240.306519 1232.776123 1238.152466 1241.563965 1235.795654 1223.658081 1209.626831 1206.164551 1197.157471 1203.30542 1211.8927 1221.737793 1236.510254 1262.873657 1285.612061 1298.517456 1308.39917 1314.271606 1319.613892 -1436.333252 1427.572021 1429.184204 1423.992065 1410.874512 1415.291138 1418.44397 1416.291992 1429.127319 1460.638428 1479.807495 1491.829956 1497.930664 1499.894775 1509.328491 1530.471191 1544.572754 1564.43103 1575.863647 1599.022949 1627.157227 1646.077271 1676.099731 1699.890137 1716.034546 1725.237427 1727.355713 1726.540894 1725.011719 1724.760132 1724.467163 1723.234131 1723.191772 1724.967407 1722.353516 1715.005249 1703.928223 1690.821045 1675.362915 1660.197632 1643.971802 1631.807007 1619.708496 1610.401978 1599.919067 1593.079102 1589.405396 1586.99292 1583.114014 1578.119751 1573.933838 1566.97644 1562.095215 1556.465576 1553.083862 1551.144653 1544.06604 1536.71167 1528.889771 1520.911255 1509.146851 1496.354126 1488.291504 1482.422607 1473.893799 1465.659058 1461.478027 1469.399902 1475.23291 1463.127441 1446.108643 1436.991089 1431.000732 1426.132568 1428.517578 1428.987793 1427.379761 1424.491211 1421.432007 1416.006348 1406.998535 1396.364014 1387.890991 1379.072754 1371.657593 1384.905884 1394.397339 1396.589844 1395.006836 1398.882812 1407.934082 1426.709351 1436.279663 1441.82312 1444.130127 1441.161621 1431.313354 1428.466309 1434.809082 1437.414551 1434.630127 1429.540283 1423.804565 1427.530151 1425.36438 1418.170532 1412.114868 1408.256958 1403.515991 1397.864258 1392.178101 1388.922119 1384.732422 1380.822266 1374.453979 1365.414185 1359.894165 1354.253052 1350.811279 1347.271362 1343.044312 1334.380981 1341.416382 1347.209961 1353.186401 1364.420166 1375.48938 1382.498901 1388.170532 1391.241333 1392.806519 1394.048218 1394.711914 1394.761108 1394.986206 1396.216187 1397.940063 1399.473389 1400.683838 1401.755615 1403.112793 1405.058472 1407.602051 1409.344849 1408.713257 1405.930176 1400.189087 1391.657959 1381.522339 1371.117065 1373.43042 1372.529419 1370.166992 1367.989868 1363.285034 1360.583374 1359.497803 1357.962036 1351.925781 1343.21228 1349.870117 1355.895874 1363.783936 1374.008301 1382.967529 1390.297607 1396.384888 1402.73938 1410.914917 1416.469116 1420.564941 1424.639526 1428.367432 1431.370361 1431.871338 1430.984375 1430.37915 1430.134155 1422.640259 1411.313477 1408.829712 1404.936035 1395.027954 1387.563843 1381.291382 1377.606201 1375.0271 1377.13269 1387.248047 1393.890381 1397.825317 1400.230469 1399.080688 1399.033813 1403.663452 1410.199585 1412.348145 1416.398682 1421.920532 1430.164185 1440.786621 1447.844482 1454.564331 1459.913452 1464.734863 1469.459595 1472.681641 1473.759277 1473.423706 1476.526245 1476.778564 1475.658081 1473.33252 1470.059082 1466.368164 1461.756348 1453.754639 1450.556152 1458.453613 1464.60791 1468.236938 1470.961426 1473.927002 1476.0625 1473.20105 1467.681519 1461.73291 1456.706909 1452.995361 1452.635742 1450.972046 1447.489624 1446.492065 1448.470337 1450.260132 1450.615601 1449.628418 1451.572876 1454.357422 1454.340454 1450.084473 1451.520996 1449.624146 1440.487915 1433.023438 1422.335449 1406.81665 1393.504517 1384.100342 1376.770874 1369.653687 1364.722656 1354.75769 1347.363892 1342.475708 1338.924805 1329.649658 1327.340332 1324.26709 1318.287964 1313.328003 1320.45752 1333.674683 1344.474365 1353.23999 1357.804688 1361.228882 1363.356201 1363.746216 1364.647461 1370.873291 1379.66748 1380.598145 1378.303711 1365.913696 1363.150146 1364.044189 1367.377075 1375.898315 1382.292114 1390.116089 1397.834839 1403.847046 1409.069458 1413.589478 1414.577026 1413.841797 1408.376221 1398.585205 1390.898804 1388.391846 1394.765991 1401.46936 1409.968262 1417.566284 1423.39856 1427.180298 1432.127197 1432.999268 1425.720093 1419.994141 1413.444336 1406.853027 1400.873901 1396.696045 1391.784424 1392.812134 1399.105835 1414.202148 1427.62561 1425.190063 1418.203369 1415.627563 1411.900757 1408.053101 1405.640869 1404.466309 1409.738281 1412.044434 1413.678711 1406.894165 1394.937622 1385.320679 1381.518188 1378.199829 1375.390625 1376.369507 1378.233765 1376.461182 1369.735352 1360.942627 1368.157593 1380.281616 1383.922241 1388.379883 1391.718872 1388.499512 1378.869263 1379.657471 1381.265869 1386.911255 1390.932495 1393.497925 1393.77063 1390.642334 1379.991211 1375.127441 1366.897217 1362.513916 1359.562744 1363.237671 1363.376465 1359.683594 1354.218262 1341.859009 1332.81958 1324.254883 1323.62854 1326.231445 1329.372192 1338.942383 1344.967407 1343.50647 1332.468262 1323.664673 1319.312134 1315.17627 1312.958008 1309.59436 1305.8573 1297.714722 1288.363647 1279.932129 1279.668701 1281.488403 1279.61499 1284.597412 1289.435425 1291.955322 1293.123047 1295.753418 1303.077393 1310.493774 1318.485229 1326.757324 1338.339966 1329.792236 1320.070435 1317.999756 1320.85144 1317.827148 1311.35498 1308.65332 1299.124023 1289.963501 1283.231323 1279.280273 1276.946655 1274.79541 1270.527222 1258.529663 1262.851685 1267.978149 1274.088013 1280.726685 1292.491821 1305.442871 1312.473022 1313.577515 1311.061523 1307.358154 1300.777588 1291.345703 1292.027222 1296.331299 1300.953979 1303.145264 1304.454102 1306.858154 1306.667725 1304.498657 1306.909058 1307.096924 1298.033325 1290.782227 1292.779663 1293.279785 1297.897583 1305.315674 1308.398193 1309.42041 1309.650024 1307.985352 1298.53479 1292.267578 1292.875488 1297.575317 1300.863403 1301.580933 1301.338257 1300.672485 1299.166138 1297.180908 1295.012573 1292.365845 1292.988159 1293.578125 1292.060425 1289.897461 1288.185303 1287.454224 1286.744629 1286.669312 1286.355713 1286.101929 1285.935547 1285.964844 1286.147339 1286.632812 1286.738037 1286.063843 1284.350708 1282.588501 1270.069702 1271.544434 1278.440918 1279.640503 1280.024658 1279.545898 1277.635376 1276.640259 1275.545288 1274.438354 1273.31543 1272.049072 1270.569824 1269.15918 1267.550293 1265.965576 1264.316772 1262.613281 1261.173218 1260.205566 1259.639038 1259.298828 1255.513184 1243.415283 1248.642212 1257.533936 1257.404907 1256.597778 1255.152466 1253.024902 1251.551025 1249.532837 1247.489502 1246.06604 1244.316284 1242.502319 1241.213623 1241.36438 1240.996338 1238.781494 1235.994873 1233.534424 1232.269409 1231.710449 1230.915527 1230.042969 1229.290527 1229.081177 1229.22168 1229.345215 1229.329102 1228.920532 1228.503784 1228.205688 1228.010742 1228.134399 1228.524902 1229.139282 1229.752441 1229.587158 1229.39624 1229.26709 1229.418335 1229.669189 1229.8302 1229.585083 1228.576782 1227.67041 1227.68042 1227.756104 1227.021729 1226.480713 1227.092285 1228.237793 1229.21167 1230.172974 1231.303833 1231.893555 1231.897705 1231.895752 1231.430664 1229.599731 1228.003418 1226.82312 1227.107666 1229.519165 1233.957642 1237.356689 1244.202881 1250.737305 1257.470581 1262.671753 1267.610352 1279.931641 1284.250977 1286.362549 1287.772827 1284.866455 1263.108643 1246.730103 1226.13208 1208.271729 1197.473877 1190.172974 1183.11438 1177.025879 1172.842529 1172.269409 1171.988403 1165.70105 1159.705566 1158.131836 1158.018677 1158.079712 1157.936646 1157.819214 1156.843994 1155.275513 1159.028687 1168.077026 1183.073242 1201.333252 1208.417603 1207.721313 1217.913818 1235.863403 1249.515991 1257.631958 1264.048218 1264.252075 1253.677734 1255.040283 1258.683838 1255.466797 1239.192261 1232.372681 1224.817871 1213.140503 1219.893433 1227.939209 1226.626099 1227.42041 1235.696899 1259.502563 1287.502075 1308.304932 1321.315552 1328.964355 -1457.595093 1447.536865 1450.206055 1448.693115 1442.41333 1449.656128 1451.482544 1446.437256 1456.730835 1462.088745 1476.488647 1497.100586 1506.917725 1512.764771 1515.971558 1531.274048 1546.187378 1564.758667 1576.737915 1597.848877 1624.174316 1641.88501 1673.656372 1699.376831 1718.540894 1732.235596 1735.098511 1734.378662 1733.536499 1733.727173 1732.830688 1731.422363 1731.945679 1733.264526 1729.646729 1722.314087 1711.347412 1697.76001 1684.976929 1667.973999 1655.473145 1639.710205 1629.040161 1618.005737 1607.048584 1599.172729 1595.88269 1591.389282 1585.583252 1580.39209 1575.616089 1566.623413 1554.66687 1546.358398 1545.251953 1540.780396 1533.810791 1526.96814 1521.040649 1512.720093 1499.352539 1487.310913 1480.152588 1472.75647 1463.622803 1451.797485 1449.900879 1454.389038 1464.710693 1458.537598 1445.926636 1432.0802 1424.380127 1417.490112 1417.298462 1417.583008 1417.459473 1416.467163 1414.082764 1409.205566 1400.581787 1387.244995 1378.244873 1374.765015 1382.830566 1393.917725 1404.125854 1405.206299 1401.554321 1399.818237 1406.306519 1426.934204 1439.740723 1448.238525 1452.268677 1447.566528 1439.638306 1438.280884 1444.200317 1446.224854 1443.19751 1437.018555 1432.296143 1433.575684 1431.172974 1424.757324 1417.424316 1413.077026 1406.755493 1401.574707 1396.842041 1392.178467 1387.378906 1382.319214 1375.831299 1364.860474 1358.556885 1353.500488 1350.519775 1347.379395 1344.394653 1336.746094 1342.672974 1348.524902 1356.072754 1370.37207 1382.088989 1387.867065 1391.846191 1394.117554 1395.838623 1397.308594 1398.57019 1399.312744 1399.424927 1399.883911 1402.403198 1404.337524 1406.606201 1409.186768 1411.989502 1414.286621 1415.361572 1414.993408 1411.998779 1406.987671 1400.29126 1392.81958 1378.424316 1378.501587 1380.938721 1379.871338 1375.986328 1373.761719 1371.022461 1369.307983 1368.783936 1367.134033 1363.492798 1357.683228 1351.42627 1351.557373 1356.739868 1364.622681 1371.730957 1378.947998 1383.568237 1388.998169 1396.974609 1406.127197 1413.172852 1416.001953 1420.593018 1425.945312 1428.592529 1428.323608 1427.595825 1428.770142 1428.303345 1425.227539 1422.402344 1415.248901 1408.068726 1398.3302 1390.560181 1384.501709 1379.688965 1376.103882 1380.22937 1387.225342 1388.939331 1389.26123 1397.078369 1407.050537 1421.555054 1433.147705 1433.564087 1429.616821 1424.521362 1431.987915 1442.412598 1450.381592 1457.082153 1463.183472 1468.869751 1474.262817 1478.42627 1479.689575 1477.290527 1479.186401 1480.223022 1478.509399 1475.660278 1474.048096 1470.452393 1466.530029 1462.144165 1456.393921 1463.806885 1469.02124 1473.509399 1476.848511 1479.616943 1481.311768 1479.192261 1472.731689 1467.103027 1462.018799 1459.459106 1458.34021 1455.852661 1452.990112 1450.978394 1449.532593 1448.486694 1446.998657 1443.481567 1437.255005 1438.192505 1436.002197 1430.689453 1432.260254 1434.316162 1432.244385 1422.569214 1414.399536 1402.813354 1392.422119 1378.961792 1367.406372 1362.971313 1355.847412 1348.635376 1341.594238 1339.428101 1335.195679 1331.275757 1329.744263 1324.821045 1319.517944 1314.593628 1322.103882 1334.909302 1344.04248 1354.588623 1361.557373 1367.210449 1369.819946 1373.797363 1376.631226 1376.104614 1377.496948 1381.202026 1380.188599 1371.871338 1366.450073 1366.091064 1371.241089 1379.18396 1387.264893 1394.92395 1402.112793 1409.405151 1416.019531 1421.914185 1424.969482 1423.333862 1417.219482 1407.515503 1404.142578 1400.594238 1402.467773 1401.197632 1400.968384 1410.033447 1415.573608 1427.112427 1436.03418 1439.32019 1435.011353 1428.855713 1420.429932 1412.73291 1406.587769 1403.030762 1397.437622 1397.471924 1408.592651 1410.882324 1425.854126 1439.560303 1427.903564 1423.207153 1417.359863 1412.621948 1413.485596 1414.697998 1413.96875 1409.489868 1406.722168 1397.519043 1386.792236 1386.27417 1386.236816 1384.091797 1381.546997 1378.42395 1370.564087 1366.000854 1363.838501 1368.404663 1379.867798 1388.467041 1389.30835 1391.805298 1392.169189 1388.564697 1388.166016 1388.770752 1390.261353 1399.565063 1403.462036 1402.120117 1393.811035 1388.30896 1384.493896 1381.953735 1377.455933 1367.262817 1372.843506 1373.947144 1369.978516 1365.137085 1353.600464 1345.114136 1332.272095 1330.648071 1334.299438 1334.081421 1333.819214 1337.354858 1341.500488 1338.010254 1329.366943 1318.607544 1316.001221 1310.763428 1306.039673 1306.474976 1304.251343 1294.264282 1281.279907 1282.679443 1286.462891 1287.283569 1285.837036 1289.825195 1294.359131 1298.120728 1302.224731 1306.17334 1307.825806 1313.294067 1319.759521 1328.897461 1344.695923 1334.037109 1323.793091 1317.628174 1312.533325 1306.371704 1298.803955 1296.588745 1291.945557 1288.627441 1281.142456 1281.861572 1281.880859 1278.680664 1270.635742 1260.171387 1264.129395 1269.408081 1275.260132 1281.994751 1292.134399 1306.863281 1316.552979 1314.8479 1312.541504 1308.935181 1304.147095 1293.222534 1292.039185 1298.109253 1303.390991 1306.644287 1307.585327 1309.555054 1309.664185 1308.705811 1309.849365 1308.336304 1296.365356 1292.426392 1297.692871 1299.260864 1301.727783 1306.980469 1311.241821 1312.583008 1312.243774 1309.526978 1300.616699 1291.988892 1292.722168 1300.52832 1304.086548 1303.931641 1303.342163 1302.786743 1301.136475 1298.368774 1294.652588 1292.901245 1294.722656 1295.005005 1293.431641 1291.502563 1291.033569 1291.004761 1289.893311 1289.940552 1289.36438 1288.738647 1288.964966 1289.135254 1288.872803 1289.244141 1289.553589 1289.04834 1286.412354 1282.743286 1276.790161 1278.86084 1281.649658 1282.024902 1282.137939 1281.84375 1280.412231 1279.175903 1277.518799 1276.190308 1275.042114 1273.584473 1272.170654 1270.591064 1268.587891 1266.776245 1264.981812 1263.01001 1261.134155 1259.502197 1257.571289 1254.672607 1247.204102 1252.048096 1257.715942 1258.899048 1258.901855 1258.452515 1257.354248 1255.660889 1253.750366 1252.194824 1250.500122 1248.691528 1246.874268 1244.671753 1242.872314 1244.284668 1244.75647 1242.234863 1238.985718 1236.243408 1234.514648 1233.365845 1232.055786 1230.945679 1230.150757 1229.963501 1230.236206 1230.742188 1230.9729 1230.633301 1230.116943 1229.557251 1229.335205 1229.327515 1229.588745 1230.739624 1231.639648 1231.891724 1231.527222 1231.366821 1231.651245 1232.031372 1232.45813 1232.370117 1231.119629 1229.674316 1230.474487 1231.453735 1230.947754 1229.762939 1229.016357 1229.017456 1229.472046 1230.015137 1230.547241 1231.038086 1231.213745 1231.231567 1231.053955 1230.007324 1229.549316 1230.141113 1230.443848 1233.383911 1237.573242 1240.797607 1243.366089 1253.724121 1260.886475 1266.894653 1276.408936 1283.762573 1286.317505 1287.017456 1287.862793 1282.39978 1262.25769 1247.094604 1227.016968 1208.529053 1199.824951 1191.303833 1182.514404 1174.190063 1166.822754 1161.640137 1159.935791 1158.656982 1158.565552 1158.514038 1158.358276 1159.086426 1159.45166 1159.755127 1160.067017 1162.842407 1174.069702 1187.025513 1194.475586 1211.120483 1221.836182 1225.86377 1223.992432 1230.75415 1248.83667 1261.712158 1273.500854 1278.140625 1273.088867 1274.574951 1274.62085 1269.801514 1258.925537 1254.500732 1239.615112 1226.033936 1236.411499 1247.428955 1248.555176 1245.852417 1242.390259 1245.345337 1267.145508 1288.406006 1302.561523 1314.238159 -1466.31311 1471.723389 1477.156372 1476.287842 1471.915039 1473.688843 1478.254761 1476.612549 1476.571655 1487.438477 1489.893066 1495.500977 1513.0271 1522.769531 1531.197632 1538.35022 1545.10022 1561.191895 1573.932983 1595.288574 1620.262085 1636.105957 1668.365479 1691.588379 1712.747314 1732.443726 1739.448242 1740.79248 1741.368042 1741.675293 1742.079224 1743.37793 1745.187622 1745.350708 1736.558105 1726.317749 1715.568115 1703.407959 1691.015869 1676.528687 1663.37207 1649.151245 1639.902222 1628.651123 1615.922607 1608.327515 1601.543091 1595.321777 1586.42627 1580.039429 1574.098755 1564.421997 1551.660522 1537.269775 1530.758179 1526.046631 1522.131836 1518.310181 1514.737915 1506.255859 1492.250244 1478.478027 1471.46228 1464.483765 1453.39856 1444.171753 1436.508423 1442.730469 1450.814697 1449.691284 1439.84668 1428.244629 1417.675293 1413.069214 1409.838013 1408.684448 1408.197144 1405.712158 1403.723755 1399.46167 1389.358521 1379.400513 1377.886353 1383.797363 1388.560547 1398.212524 1412.710815 1415.926147 1413.26709 1403.264893 1404.208008 1423.903931 1440.88269 1449.940308 1457.718994 1455.489624 1445.803711 1446.839111 1455.830688 1457.228394 1455.282837 1447.419678 1440.797241 1441.951172 1440.141968 1432.769043 1425.368286 1418.615234 1411.86084 1405.473389 1399.392944 1393.67981 1389.078247 1382.492065 1375.792236 1364.116455 1355.809814 1352.379761 1349.901855 1347.356567 1344.398804 1337.907593 1343.876343 1349.385986 1357.911987 1373.74707 1384.681763 1391.338013 1394.50769 1397.355835 1399.251099 1400.390381 1402.122925 1403.922607 1402.994995 1402.986328 1406.385132 1410.953857 1415.103516 1417.40625 1418.224365 1419.357056 1419.355957 1418.124023 1414.502563 1408.18335 1400.727783 1392.074951 1379.827637 1385.061646 1384.604248 1383.229614 1380.924561 1379.766846 1376.619629 1374.842896 1374.825439 1375.054565 1373.596191 1370.128052 1364.847778 1355.713013 1353.351685 1360.312134 1364.385376 1371.089844 1376.797363 1386.138184 1389.101074 1394.422119 1402.10083 1408.365356 1412.619507 1413.805176 1420.451416 1425.240723 1425.65332 1427.182495 1429.82312 1430.263794 1429.700806 1428.617065 1418.746094 1407.657104 1399.188354 1390.587402 1384.455444 1379.176758 1378.520752 1382.85376 1386.552246 1391.373169 1403.444458 1418.440796 1442.565308 1442.388916 1444.372681 1443.628784 1441.407837 1438.316406 1440.934692 1450.006714 1458.296387 1465.989502 1472.874146 1479.079712 1485.062988 1487.252075 1487.00415 1485.347534 1483.776001 1484.661499 1482.032593 1478.045776 1473.888428 1470.956177 1466.07959 1461.908691 1466.394409 1473.328979 1479.913574 1485.774902 1487.310547 1487.526733 1485.285645 1480.126099 1475.733765 1468.32373 1465.187988 1464.130859 1462.278687 1457.810425 1454.117798 1451.638428 1448.346069 1444.955933 1441.291382 1425.900757 1422.677979 1422.855591 1417.414795 1414.499634 1419.380005 1421.720337 1412.652344 1402.619019 1396.454712 1389.602783 1377.643555 1365.200073 1359.592773 1353.985962 1343.565063 1342.05957 1343.734009 1344.378662 1342.872559 1334.255859 1325.412598 1318.211182 1316.726196 1324.626099 1332.979004 1340.07605 1345.331909 1353.071899 1364.340942 1369.810913 1378.171265 1378.92334 1380.4021 1382.409912 1385.117188 1382.405273 1375.024048 1371.010376 1370.282104 1374.921387 1382.746094 1392.318604 1399.633545 1407.576904 1414.605103 1423.980469 1433.136353 1435.684692 1432.182739 1423.166504 1415.402832 1414.857666 1411.548096 1412.057373 1413.591919 1412.270996 1408.401611 1416.240967 1432.882446 1444.069824 1453.085449 1448.460449 1436.639282 1426.30896 1417.407959 1414.828735 1410.213623 1405.84729 1401.723267 1417.042847 1419.969604 1423.326172 1434.727783 1433.194458 1428.347534 1423.568726 1418.994141 1418.863403 1417.916138 1414.935913 1405.924072 1395.427612 1389.208862 1393.015747 1400.449707 1401.031982 1393.065308 1387.841309 1385.22876 1381.901245 1376.770752 1372.027344 1379.553955 1389.113525 1397.919312 1398.853271 1397.365845 1391.340088 1391.974365 1398.987427 1400.996948 1403.308228 1406.199341 1405.785278 1401.908569 1395.345947 1392.989624 1393.134277 1388.937744 1379.3479 1380.397827 1383.116577 1379.90979 1373.665649 1366.021484 1355.123291 1346.50708 1338.991333 1341.376953 1344.505493 1341.872559 1337.117188 1332.43457 1328.659546 1326.987061 1323.726685 1316.922729 1314.364502 1306.159424 1305.099243 1299.875244 1291.269653 1286.348145 1284.230225 1292.855225 1294.146484 1293.387207 1290.117798 1293.126221 1298.912842 1304.122559 1308.411255 1312.227661 1316.322632 1319.529663 1324.454346 1332.831787 1345.019897 1335.377686 1323.243774 1316.123901 1310.140625 1307.447021 1303.186523 1295.069092 1293.386963 1292.674927 1289.557861 1286.383179 1284.551758 1281.931396 1271.19873 1261.366821 1264.961914 1268.390869 1277.265625 1284.190674 1291.197144 1305.356689 1318.003906 1316.877563 1314.695923 1309.662476 1303.532715 1295.225464 1291.603271 1300.721802 1307.268188 1310.36377 1311.970581 1313.776611 1314.248291 1313.90332 1314.016724 1307.52002 1294.349121 1296.117065 1305.904907 1305.606323 1303.622925 1309.3396 1316.778198 1315.404541 1315.280029 1310.310303 1301.210449 1291.839355 1292.368652 1303.918213 1306.550293 1306.13855 1305.825195 1305.162842 1303.547852 1300.225952 1295.594604 1294.249756 1296.092896 1296.407471 1295.089478 1293.523682 1293.665039 1293.246704 1292.952148 1292.844482 1291.697144 1291.749634 1292.062988 1292.078613 1291.458862 1291.661011 1292.542236 1292.574341 1289.652588 1281.732178 1279.286011 1280.75415 1282.983398 1283.840942 1283.919189 1283.640747 1282.459351 1280.994019 1278.993652 1277.710449 1276.829956 1275.322754 1273.777466 1271.875244 1269.811646 1267.962036 1265.817139 1262.737549 1260.17981 1258.186157 1255.426147 1252.599976 1257.56311 1258.470581 1259.982422 1260.708618 1260.664551 1260.2146 1259.28833 1257.956787 1256.393066 1255.031128 1253.50708 1251.823486 1249.74939 1247.17041 1244.928833 1246.672729 1246.333862 1244.035767 1241.409302 1238.818237 1236.46582 1234.876587 1233.251465 1231.658569 1230.787109 1230.756714 1231.066406 1231.62854 1232.427124 1232.189331 1231.44519 1230.81189 1230.947021 1230.692017 1230.481812 1231.460571 1233.266602 1233.94519 1233.858521 1233.803833 1233.974976 1234.240479 1234.53186 1234.278076 1233.019897 1231.273071 1232.103027 1233.252563 1233.086914 1232.404419 1231.878906 1230.813477 1230.082764 1230.059814 1230.308716 1230.628052 1230.914185 1231.152466 1231.84021 1231.545288 1231.349365 1232.582886 1235.171509 1239.768433 1243.89624 1247.869019 1253.003174 1257.932129 1267.479004 1273.109985 1284.002075 1285.10376 1280.966797 1276.724976 1273.56543 1266.886597 1260.769531 1249.228516 1232.265137 1215.812012 1204.885376 1195.385742 1182.766846 1172.696411 1161.520142 1160.558105 1160.758667 1162.704834 1170.955444 1170.286621 1167.362305 1169.237549 1172.21106 1172.354614 1172.832642 1176.412231 1186.3573 1204.047607 1213.324951 1219.196777 1229.467896 1238.181152 1241.462402 1239.731079 1242.027222 1256.222168 1273.843994 1286.399292 1289.462524 1289.972046 1289.006836 1282.137817 1279.627441 1271.151245 1258.553955 1239.877319 1247.514404 1263.776245 1268.32312 1266.846436 1261.117554 1254.637695 1250.950073 1266.983154 1287.929688 1313.366089 -1448.19873 1462.809326 1482.958008 1494.453125 1495.795166 1505.406982 1507.368896 1503.708374 1500.403564 1507.141113 1508.828247 1511.045532 1518.190552 1530.067871 1540.57959 1547.342773 1555.185181 1570.95752 1581.821411 1601.586426 1627.442017 1646.142334 1685.890869 1709.088501 1723.15979 1738.887451 1746.076782 1748.219482 1750.264648 1751.090332 1751.05249 1750.875244 1750.209473 1747.153931 1738.421631 1728.047485 1717.029541 1705.274292 1693.337891 1680.937744 1670.506226 1659.383057 1646.300293 1636.299683 1620.677979 1612.871948 1605.648926 1598.718384 1587.40979 1578.322021 1568.658936 1558.010742 1545.115479 1527.2146 1521.336792 1511.945801 1509.50415 1507.471191 1503.794189 1497.390747 1486.60498 1473.976318 1463.90686 1449.84314 1449.632446 1451.89917 1441.861938 1428.727051 1432.793335 1433.672485 1429.362915 1417.955078 1412.421997 1410.695068 1407.132568 1401.374023 1401.169312 1399.762573 1393.750122 1389.185547 1383.843384 1377.268311 1384.435425 1390.762817 1395.175659 1401.833496 1418.47644 1424.879028 1425.461304 1420.393066 1415.529663 1416.004761 1438.862549 1449.308838 1461.987793 1466.27478 1455.960327 1458.712036 1467.382568 1469.608032 1467.625244 1459.634155 1451.91687 1448.781982 1445.375122 1440.182495 1429.967163 1421.979248 1414.359863 1405.188843 1399.53418 1393.778931 1388.50061 1380.399536 1371.97998 1362.156616 1353.419312 1351.809326 1350.085449 1347.446533 1344.189331 1338.242065 1343.964355 1349.493164 1358.445312 1373.765991 1386.312378 1393.31958 1397.388184 1400.696289 1402.871094 1404.275391 1406.291626 1408.004883 1408.251831 1408.826904 1411.403687 1415.625 1419.976318 1422.491699 1423.531494 1423.654419 1423.067627 1420.680298 1415.934326 1408.755981 1400.19873 1388.11084 1388.071167 1391.833374 1387.823364 1388.244141 1388.288696 1386.685547 1382.421753 1379.603516 1381.287598 1383.006348 1382.356201 1378.970581 1372.387085 1364.937988 1355.268921 1361.389771 1367.765137 1373.727661 1386.485352 1396.929688 1402.568481 1406.81958 1408.532715 1412.341187 1415.768188 1421.003662 1424.614014 1426.412964 1426.937744 1427.724365 1431.109497 1432.563843 1431.786621 1428.674683 1420.912231 1412.086426 1405.819702 1396.801514 1388.065186 1383.007935 1378.241699 1381.566528 1386.013062 1392.281616 1407.09314 1421.43396 1438.540527 1441.196411 1446.887817 1450.673584 1452.198853 1452.66687 1451.672974 1449.768555 1459.92334 1467.575317 1474.799805 1485.007812 1490.08606 1492.068726 1491.957275 1490.095337 1487.212769 1490.06543 1488.838379 1483.667725 1479.43396 1476.081909 1470.613892 1464.013672 1468.978882 1477.666016 1489.231567 1492.717896 1494.06543 1494.006836 1492.377441 1488.937134 1481.492676 1473.787109 1471.121216 1468.776855 1465.960083 1461.161865 1457.000366 1454.016357 1449.22168 1442.302979 1433.709595 1419.799927 1411.430176 1407.095337 1402.236206 1396.691772 1401.652954 1408.93457 1397.955688 1388.861328 1388.262573 1383.314209 1375.402588 1365.108398 1357.237061 1352.779541 1348.728516 1348.278564 1352.059326 1352.759888 1346.892334 1335.787354 1324.494507 1316.672852 1321.657837 1331.259155 1337.102539 1349.029785 1356.442993 1357.590942 1361.358032 1364.744385 1369.017944 1377.261963 1377.404785 1384.146851 1390.038818 1389.531738 1380.588989 1377.447754 1374.894409 1378.796753 1389.625366 1399.216187 1406.762207 1415.78894 1425.953857 1439.668457 1445.847168 1446.534424 1440.502441 1429.912842 1432.103149 1433.421265 1422.936768 1425.827148 1433.680054 1431.339478 1418.870483 1420.062866 1436.016479 1450.230957 1466.454468 1458.309814 1443.377441 1431.993286 1424.830566 1422.170776 1417.24939 1411.436768 1405.848999 1415.194946 1427.039917 1430.808594 1434.894043 1438.888794 1435.869995 1431.391479 1427.774414 1424.284546 1418.261963 1410.01123 1399.481689 1393.945801 1399.150635 1403.934937 1407.356567 1408.089722 1404.560547 1396.863037 1392.675049 1387.443115 1380.466797 1377.018311 1387.80957 1398.825928 1404.601685 1404.939697 1402.06665 1400.406738 1406.362549 1409.241943 1410.235474 1410.337646 1410.210449 1407.511108 1403.419312 1403.219604 1401.844849 1396.423218 1390.46228 1386.0448 1389.437256 1390.845459 1383.302002 1374.99353 1367.297974 1358.139404 1348.341553 1343.471191 1354.377441 1351.799683 1345.568237 1340.872314 1333.765015 1330.252319 1326.44458 1316.920776 1318.431152 1317.806152 1309.453003 1307.0 1297.794678 1288.490479 1286.533447 1290.081299 1296.342041 1298.186768 1293.981934 1291.855713 1296.485596 1303.690796 1308.239502 1312.823853 1317.04248 1323.020996 1327.69458 1331.406738 1342.92688 1344.226562 1334.109253 1325.855225 1322.698608 1323.348999 1319.723755 1313.480713 1306.84082 1301.622803 1297.232178 1293.589355 1289.88501 1286.498047 1282.848877 1269.938477 1261.9375 1267.393921 1274.517822 1277.2677 1283.371948 1290.587158 1303.704224 1317.571777 1319.714844 1318.121826 1311.055298 1302.055664 1295.464722 1291.597534 1300.265991 1311.631958 1316.65625 1314.918823 1317.748535 1317.275024 1317.345703 1318.092041 1308.151001 1299.794434 1300.384521 1308.81311 1312.943481 1305.644531 1311.772949 1319.324707 1319.211426 1319.149536 1313.802368 1302.151733 1294.446289 1291.852051 1302.502563 1307.790039 1308.914429 1309.234497 1308.095825 1305.551147 1302.477905 1300.436157 1299.032593 1298.839844 1298.642944 1297.82373 1296.810547 1296.61377 1296.044556 1295.980713 1295.308716 1294.34021 1294.695801 1295.099731 1294.700806 1294.11499 1294.504028 1294.934814 1294.538696 1292.291016 1280.717529 1279.627808 1281.414795 1284.517456 1285.866089 1286.019287 1285.641357 1283.805664 1282.126343 1280.037598 1279.592285 1278.764893 1277.305664 1275.325562 1273.215332 1271.172607 1269.469727 1266.949097 1262.094971 1258.935303 1256.394409 1255.597412 1259.045532 1260.801636 1261.795776 1262.547729 1262.900879 1262.594971 1262.003784 1261.191895 1260.066528 1258.765137 1257.771606 1256.616699 1255.1698 1253.27478 1251.585083 1249.772827 1248.995972 1247.800903 1245.750977 1243.557373 1240.930664 1238.116333 1235.999268 1234.032227 1231.980469 1231.168457 1231.668579 1232.262085 1232.895874 1233.969727 1233.871826 1232.741577 1231.926514 1232.739502 1232.332397 1231.653442 1231.583252 1234.248047 1235.911865 1236.513062 1236.620605 1236.662109 1236.652466 1236.519775 1235.749512 1234.060913 1231.936768 1233.162109 1234.314209 1234.373901 1233.826782 1233.022949 1232.115479 1231.005737 1230.247437 1230.282349 1230.451416 1230.807495 1231.285522 1231.953125 1231.688721 1233.427246 1238.366211 1243.80481 1247.911743 1253.937256 1259.589722 1265.255493 1271.119995 1271.352173 1267.235107 1266.758545 1264.565796 1256.626099 1258.044067 1256.343018 1258.418945 1258.505249 1250.829346 1239.092407 1223.010742 1207.059692 1195.593872 1184.459473 1176.56604 1170.053101 1160.681641 1161.482422 1165.520996 1170.761963 1173.127441 1174.002563 1175.491455 1179.432495 1185.153564 1195.825439 1198.223877 1195.984009 1210.279175 1223.617798 1233.224365 1239.71106 1248.391113 1255.152466 1260.736206 1263.655273 1254.478882 1268.836792 1287.583618 1299.709106 1304.493408 1304.701172 1302.082275 1297.67688 1288.028198 1271.140625 1253.72583 1262.447876 1279.022583 1284.904907 1285.855957 1281.313354 1276.295776 1267.103271 1263.168823 1288.628174 1307.917847 -1438.387695 1458.424805 1480.379395 1495.514893 1504.200317 1513.250854 1522.849854 1524.549805 1523.276001 1526.405396 1529.636597 1532.845581 1536.285034 1538.694336 1551.73291 1559.705444 1572.878418 1585.339966 1603.901855 1625.039795 1647.970947 1686.848511 1703.163696 1717.031616 1728.033936 1743.290405 1753.141724 1757.571899 1758.5354 1762.860718 1761.644653 1756.769287 1754.047119 1747.007202 1737.921509 1727.88147 1717.395508 1705.165405 1693.514526 1683.45105 1673.436523 1663.09314 1650.88501 1639.308838 1623.494263 1615.53894 1608.0448 1600.189941 1588.815552 1578.498901 1566.898071 1557.310303 1550.797363 1542.897461 1533.626465 1520.410034 1508.631592 1496.894653 1488.781738 1485.481079 1476.761719 1463.082031 1459.938599 1465.295776 1465.749512 1460.661011 1453.387085 1432.455566 1422.920288 1421.135742 1414.51416 1412.322388 1415.65979 1418.50415 1420.380737 1418.250854 1407.559937 1401.613647 1394.97876 1390.058105 1382.131348 1379.296387 1390.339111 1397.814331 1402.130371 1409.154053 1426.597412 1434.706299 1437.786499 1434.04895 1426.778931 1421.78125 1432.803467 1447.489136 1462.192627 1470.883057 1470.972778 1473.04834 1478.42981 1478.596558 1474.82251 1471.726562 1469.33667 1462.596069 1450.692871 1444.355347 1435.705566 1425.495361 1414.466187 1401.984253 1396.791016 1391.268677 1381.564087 1373.450562 1366.038574 1360.989868 1355.300903 1353.382935 1351.286499 1348.214478 1344.44812 1338.729248 1343.495117 1348.990601 1356.910034 1370.134521 1386.119873 1394.994629 1400.103027 1403.830811 1406.622314 1409.690674 1412.191528 1413.426758 1413.283691 1413.196899 1415.082275 1420.194336 1424.814941 1427.780762 1429.125977 1428.28125 1426.870483 1423.274292 1416.943237 1409.73938 1399.636475 1389.398682 1399.284302 1392.084106 1390.521362 1393.420776 1396.083862 1395.246338 1390.637451 1389.178101 1390.828125 1391.896118 1389.915649 1383.879517 1376.827881 1369.775635 1359.666016 1363.290039 1371.861694 1380.894775 1395.079468 1406.21936 1414.423218 1417.755859 1418.991089 1421.919067 1427.84021 1431.213745 1431.518066 1431.59375 1431.695312 1432.619019 1434.488525 1435.186279 1433.766724 1427.735596 1422.892456 1417.215942 1410.5625 1403.275391 1391.194336 1387.42688 1381.759155 1381.477783 1385.314697 1389.971069 1403.865845 1418.422607 1429.302002 1435.556396 1443.034668 1453.067627 1459.593018 1461.17627 1461.990601 1460.789551 1462.17041 1469.265625 1475.314819 1488.37207 1493.552856 1496.132202 1497.560791 1497.592407 1495.883301 1494.972046 1493.265015 1489.978638 1486.380981 1481.849731 1475.971069 1471.59436 1472.435913 1483.137939 1493.987915 1497.505493 1500.340576 1501.298584 1499.064453 1495.418579 1490.747681 1482.488403 1474.439819 1473.113647 1467.619629 1461.884033 1456.211304 1450.402222 1441.248779 1434.28186 1423.944092 1412.12439 1407.624146 1403.597168 1398.305664 1391.402588 1388.472412 1389.012329 1388.342163 1382.929443 1381.603027 1377.806152 1367.869507 1359.123779 1353.535889 1351.696899 1351.953125 1353.872192 1357.291748 1356.675659 1348.870605 1332.807373 1321.686035 1319.298218 1324.10083 1328.588135 1336.741821 1342.098511 1352.227783 1360.686157 1367.62854 1372.304077 1376.728027 1378.678711 1380.344971 1386.453857 1391.87915 1392.337891 1386.770386 1380.977417 1378.362183 1383.386963 1393.757446 1403.710815 1411.779541 1423.467407 1438.644409 1448.875366 1457.04248 1460.13562 1452.840454 1441.244385 1449.525024 1449.330811 1441.394653 1445.096313 1449.848999 1447.299072 1437.871704 1424.254517 1436.838745 1449.6427 1469.099854 1464.020508 1448.726074 1440.855957 1437.510376 1430.578369 1425.319458 1419.202393 1414.491333 1411.39856 1430.785278 1442.264526 1445.585693 1447.667725 1444.161743 1441.11084 1434.604858 1428.016846 1415.636353 1404.414551 1397.351807 1403.383789 1408.034912 1411.693481 1413.788086 1412.955444 1410.985962 1407.995972 1403.534546 1391.846436 1382.726807 1378.526001 1391.79248 1402.957397 1406.316772 1407.565308 1406.171265 1406.496826 1414.275146 1417.205811 1417.397827 1415.690796 1413.716309 1410.937256 1408.259155 1406.370728 1404.538086 1396.680176 1389.309814 1390.674683 1393.234741 1392.94873 1386.226074 1376.649536 1371.494019 1363.296021 1353.359131 1355.980835 1355.822632 1354.269287 1346.370117 1340.601685 1334.151245 1331.38623 1331.343262 1323.338989 1316.97168 1304.316284 1305.2229 1300.782837 1290.02832 1286.710815 1293.890991 1292.194702 1299.271118 1303.498779 1293.804321 1293.779419 1304.688721 1308.616089 1312.909668 1317.116089 1323.177856 1331.544434 1341.480713 1344.577026 1345.447021 1343.301758 1334.033813 1327.439575 1332.988159 1333.750122 1325.95166 1318.379761 1311.879639 1306.405518 1300.830933 1295.859863 1290.903442 1287.069702 1282.238647 1271.820312 1262.168701 1267.420898 1282.093994 1283.047729 1284.002075 1291.088501 1301.394043 1315.720337 1320.784424 1320.347656 1311.347046 1302.411377 1298.375244 1293.335938 1297.17395 1310.616211 1319.340576 1319.001953 1320.829712 1320.929321 1321.425415 1320.173462 1312.083374 1303.17041 1303.732422 1315.803955 1320.448364 1317.719482 1315.351074 1321.820801 1323.751953 1322.00061 1314.785767 1302.682983 1298.170898 1292.165405 1299.748535 1307.650757 1311.438843 1313.355103 1311.870728 1307.571289 1304.224365 1303.223633 1302.295044 1301.91394 1301.133179 1300.60144 1299.802124 1299.61438 1299.083862 1298.700928 1298.18042 1297.70459 1297.84668 1297.902466 1297.730469 1297.595703 1297.491089 1296.685547 1295.390381 1292.395142 1280.041992 1280.503662 1285.09314 1288.483032 1288.772461 1288.324341 1287.571411 1285.354492 1283.743896 1282.387573 1281.846436 1280.864136 1279.012939 1276.879517 1274.427734 1272.281616 1270.298584 1266.855835 1261.710571 1259.129272 1259.01709 1260.626587 1262.814819 1264.50354 1265.448486 1265.74646 1265.019409 1264.329102 1264.046509 1263.538574 1262.592773 1261.593384 1260.538818 1259.005371 1257.770752 1256.817993 1255.301636 1253.138794 1251.39624 1249.342773 1247.226685 1244.781982 1242.110962 1239.463623 1237.010742 1234.473633 1232.059204 1231.690918 1232.869629 1233.96936 1234.91272 1235.467041 1235.436401 1234.978516 1234.728271 1234.965454 1234.609009 1233.959717 1233.844971 1235.727295 1238.131592 1239.47876 1239.796997 1239.839844 1239.327393 1238.52002 1237.377319 1236.140259 1235.253174 1235.352661 1235.607178 1235.683716 1235.198486 1234.379517 1233.316895 1232.160889 1230.945068 1230.432739 1230.483398 1230.98645 1231.672241 1232.784058 1233.827759 1239.666748 1245.432007 1249.731079 1255.138306 1261.90271 1268.968384 1269.664062 1261.056152 1249.996948 1247.187012 1248.043945 1241.613403 1236.85022 1236.237915 1233.985474 1240.88855 1247.01001 1246.340576 1239.775269 1221.800049 1208.021973 1203.028931 1196.973022 1186.22644 1178.008789 1168.35144 1161.622192 1162.862915 1166.945312 1170.529297 1178.106812 1179.887085 1184.349731 1198.05188 1207.537109 1210.799927 1211.467529 1213.59314 1227.765015 1241.450317 1250.064575 1256.174805 1267.916138 1276.034546 1280.278687 1275.359497 1267.667236 1285.091553 1307.363525 1313.890625 1319.376587 1321.230713 1313.554443 1300.414185 1284.34436 1266.33606 1274.747925 1291.327026 1299.543457 1302.451538 1301.28064 1295.53186 1285.735718 1271.691895 1279.043823 1294.890869 -1428.811523 1443.822632 1462.107788 1473.269775 1475.019287 1498.306274 1511.385986 1522.240356 1540.649658 1550.008179 1553.390991 1555.965332 1558.651978 1561.836548 1564.874146 1573.363892 1584.456787 1597.406128 1617.703857 1638.714966 1663.501465 1677.839478 1689.649414 1698.910889 1709.633301 1718.776489 1732.433594 1747.189697 1753.463867 1760.746338 1765.552734 1761.431274 1758.076904 1746.131226 1736.040405 1725.230469 1714.67041 1702.997314 1692.016113 1684.133301 1673.767822 1663.897461 1652.790894 1640.257446 1626.805542 1617.493896 1609.608154 1601.601196 1591.019287 1582.03833 1574.991821 1565.719727 1558.811279 1551.909424 1540.750488 1526.507202 1513.13208 1502.30896 1489.272461 1475.401001 1473.277466 1471.327759 1475.375366 1477.692505 1477.553101 1474.177002 1461.246582 1447.274292 1441.796997 1442.912354 1434.102661 1432.050903 1436.565796 1438.168579 1431.497803 1421.637939 1411.460083 1403.454346 1393.920776 1387.306274 1380.588379 1391.897095 1400.484741 1406.314575 1410.106567 1413.731445 1430.64563 1442.891724 1447.948364 1446.03064 1438.308716 1428.025879 1430.599365 1451.344238 1466.972412 1477.662964 1481.460205 1482.271484 1485.278442 1484.21167 1481.145264 1479.722656 1477.45752 1470.939697 1461.619995 1448.719482 1439.450439 1427.389404 1413.286865 1401.285034 1392.407715 1383.805908 1374.85083 1366.339233 1363.984009 1362.258423 1359.626099 1356.089478 1352.635376 1349.251587 1345.343384 1339.671875 1342.557373 1347.665649 1354.560425 1366.594482 1383.756958 1394.850952 1401.27478 1406.411865 1411.122314 1415.133911 1416.718872 1417.869263 1418.134033 1418.405884 1420.800171 1425.81311 1429.821167 1432.782715 1434.035278 1433.46521 1431.083252 1426.752563 1420.244873 1413.37146 1399.342529 1398.956055 1405.930664 1399.388306 1400.119873 1401.468384 1405.837769 1404.807129 1399.768433 1399.25769 1398.659058 1396.600586 1393.37439 1388.17981 1380.746826 1371.665161 1362.064453 1363.626587 1374.530151 1386.018188 1399.09082 1411.69104 1419.003662 1424.042236 1426.186157 1431.208862 1437.737671 1438.699951 1439.181641 1438.513916 1436.816406 1436.724854 1437.684448 1437.820923 1436.987915 1433.00293 1427.284424 1420.972168 1413.105957 1404.12439 1397.406982 1393.989868 1389.932373 1382.453613 1384.668213 1389.086426 1397.771729 1411.906372 1420.300537 1427.373413 1439.265503 1455.810181 1465.88269 1468.54187 1469.956421 1469.44043 1468.115845 1474.300903 1478.450806 1489.917847 1497.146606 1500.101074 1504.052002 1507.366943 1505.504761 1500.478516 1497.504272 1498.757324 1495.214844 1488.426636 1479.474121 1473.877441 1477.030273 1489.390747 1501.55481 1503.678467 1506.9021 1508.721924 1507.296875 1502.921631 1500.19519 1491.190674 1487.709229 1480.667969 1473.942017 1466.454468 1457.437744 1441.965576 1433.699219 1424.553833 1419.961792 1423.153442 1424.662842 1422.82666 1420.749634 1412.995239 1396.636597 1383.868774 1376.282349 1373.894897 1370.902832 1364.729858 1361.594116 1354.035034 1355.571533 1358.301147 1361.101685 1363.049927 1361.619995 1356.703003 1346.959595 1329.837158 1321.404663 1321.115845 1326.70813 1331.656494 1339.118652 1342.476074 1344.228271 1355.243652 1367.762329 1375.90918 1379.719604 1380.235352 1383.103394 1388.090088 1392.488281 1392.314087 1390.090698 1384.92627 1384.754883 1391.155518 1398.455444 1409.174927 1419.706787 1431.231689 1445.695801 1456.963379 1466.745972 1472.889648 1467.536743 1458.303467 1462.783569 1464.068359 1460.492432 1463.085327 1464.436401 1458.459229 1449.630981 1438.910645 1433.845825 1444.94458 1467.792358 1478.067749 1466.587402 1457.621948 1449.542358 1443.364624 1434.978638 1427.575806 1421.128052 1412.956787 1431.612915 1447.213745 1452.986328 1453.0625 1446.758667 1440.195679 1434.355591 1428.502808 1411.2677 1400.605591 1403.315796 1410.413574 1415.992554 1419.631958 1420.742798 1419.47998 1418.283691 1417.798462 1411.174194 1399.08728 1389.466919 1384.526978 1392.838867 1403.505981 1407.328979 1409.587646 1412.783447 1416.654053 1423.741455 1426.088135 1423.320801 1420.131836 1417.159302 1413.08252 1411.064941 1408.286621 1404.184082 1398.72229 1395.466797 1397.092407 1396.260498 1393.532593 1389.223145 1382.23291 1376.185181 1367.02002 1361.053589 1357.814575 1354.86084 1347.184937 1341.763306 1335.80481 1327.825684 1320.892334 1319.003906 1316.615479 1312.394043 1305.842896 1294.75769 1288.66333 1287.974609 1295.143311 1295.193359 1293.958618 1304.658203 1307.525757 1295.288208 1295.111572 1306.689453 1311.219971 1316.981079 1321.776855 1328.679443 1341.557861 1351.031372 1350.547607 1347.22998 1342.827271 1334.038574 1329.16333 1339.286011 1343.779297 1331.807617 1322.320068 1314.931152 1309.207275 1302.755981 1295.15686 1291.030151 1287.998535 1283.91748 1276.110474 1263.307739 1272.351685 1284.138306 1291.982666 1290.981445 1295.320435 1302.283936 1315.521729 1321.408936 1318.756958 1310.724365 1304.988037 1304.382812 1301.857178 1300.470215 1305.021484 1317.671387 1323.572998 1326.711548 1325.49939 1325.783447 1322.42749 1313.46167 1303.128418 1310.74646 1322.0896 1327.72644 1324.55835 1317.290894 1327.67627 1328.813477 1325.825317 1318.932129 1309.366943 1304.968872 1293.598755 1298.274048 1305.808105 1313.559692 1317.588257 1316.882202 1309.398926 1304.479614 1305.298096 1305.527588 1304.028931 1303.643188 1303.367188 1302.580811 1302.418335 1302.175903 1301.671875 1301.273438 1300.898315 1301.070312 1301.244629 1301.163696 1300.910522 1300.577393 1298.780273 1295.703491 1289.2677 1280.279419 1282.762329 1291.240845 1292.633667 1291.411133 1290.330811 1289.387573 1287.201782 1286.166626 1284.890503 1283.904907 1282.703369 1280.699829 1277.918701 1275.481567 1272.244629 1269.004883 1264.687622 1263.599121 1263.737793 1264.748779 1266.03772 1266.393311 1268.013306 1268.828003 1268.192261 1266.919922 1265.865967 1265.871094 1266.428223 1265.887451 1264.820679 1263.361572 1261.624146 1260.013306 1258.8125 1257.527466 1255.986694 1253.368652 1250.500854 1247.651367 1245.05481 1242.847412 1240.210571 1237.9375 1235.711914 1233.077637 1233.570923 1235.143677 1236.304199 1237.229492 1237.73999 1237.745605 1237.726318 1237.80188 1238.09729 1237.915649 1237.720825 1238.071777 1239.063477 1240.607788 1242.671997 1243.169434 1242.746948 1241.732056 1240.443848 1239.585205 1238.794312 1238.061035 1237.882812 1237.733276 1237.16748 1236.425415 1235.490234 1234.340576 1233.109253 1231.861572 1230.88269 1230.857056 1231.370361 1232.355957 1235.37439 1239.769775 1245.356689 1249.785645 1254.450928 1260.751587 1268.97168 1266.056519 1254.515381 1241.665527 1235.263672 1228.6521 1226.691772 1221.458252 1218.345947 1216.134399 1215.683472 1218.334717 1223.615845 1226.689331 1228.689941 1224.894653 1221.650879 1217.062256 1206.71106 1197.645264 1187.898315 1181.241211 1175.142822 1169.027466 1163.519165 1166.889893 1180.42981 1183.339478 1185.103271 1206.064453 1215.109863 1221.463379 1228.310547 1230.875366 1234.307739 1244.276733 1257.892578 1267.96228 1277.12793 1285.911499 1293.342896 1292.727417 1281.247314 1284.360962 1308.497559 1320.569214 1329.917114 1332.015381 1323.401367 1307.058472 1291.311646 1278.414795 1289.30957 1302.472778 1311.876709 1318.043457 1318.430176 1312.424561 1302.90564 1289.242432 1277.868774 1287.68335 -1399.795532 1416.88623 1433.761597 1446.762329 1449.18335 1472.75 1487.468384 1501.277222 1527.764893 1547.912109 1559.950806 1567.633789 1574.348999 1576.666992 1576.998169 1584.104858 1590.687988 1602.272827 1617.807861 1629.16687 1644.638672 1654.118042 1664.67395 1677.116699 1684.758423 1692.325562 1704.150024 1712.591431 1724.011353 1736.386475 1740.406372 1745.146973 1747.004883 1741.439697 1733.307617 1721.301636 1711.0354 1698.416992 1690.219849 1683.407593 1672.082397 1662.271118 1651.548828 1639.434692 1628.82373 1620.115845 1612.061157 1602.92627 1593.75647 1585.614502 1578.709351 1571.010254 1563.078247 1553.843994 1541.547974 1525.642822 1509.554443 1501.030151 1486.578857 1483.922607 1489.911865 1490.740356 1486.44104 1484.900269 1484.707642 1483.288696 1477.03186 1467.463623 1463.997925 1459.437378 1454.949951 1454.934448 1455.367554 1452.635498 1435.429199 1417.181519 1408.771606 1400.247437 1390.232178 1382.877686 1395.077393 1402.184814 1408.788696 1414.014404 1418.921265 1421.640625 1430.917236 1450.161621 1456.755859 1456.852661 1450.956055 1442.23645 1433.798096 1455.576782 1470.144775 1486.912964 1490.418457 1490.837891 1492.939209 1490.599854 1487.289551 1485.045288 1481.248779 1475.669434 1466.636719 1451.018311 1440.634277 1423.766479 1409.503174 1396.492188 1383.932373 1376.081787 1373.647217 1369.793457 1366.665161 1366.56897 1363.993164 1358.906982 1353.826782 1350.906006 1347.409424 1343.525757 1340.214966 1345.76062 1351.024292 1359.463989 1373.875732 1390.152466 1399.322632 1406.934814 1413.14917 1417.090088 1419.268311 1421.330322 1422.55603 1423.352417 1424.755859 1428.756714 1433.782837 1438.111938 1439.975586 1439.040405 1435.246582 1428.682861 1422.12439 1415.186768 1399.333374 1403.773804 1409.863403 1409.993774 1413.488281 1416.381348 1416.08313 1411.882202 1408.53833 1407.4104 1404.540405 1400.735596 1396.221436 1390.499512 1383.324341 1371.778198 1362.947021 1363.857178 1375.180054 1387.10437 1398.409302 1412.252197 1423.030396 1429.706787 1435.383057 1441.220825 1444.070801 1444.984619 1445.092529 1443.899048 1441.704712 1441.726074 1442.387939 1443.971436 1443.531006 1438.731201 1432.416992 1424.9104 1415.124023 1403.598633 1402.917358 1402.650391 1397.959229 1391.100708 1384.013916 1388.62793 1402.599365 1410.048096 1418.514526 1429.65686 1440.283325 1457.992065 1469.013184 1474.795898 1477.628052 1477.80896 1476.259033 1487.390259 1492.580811 1498.752686 1502.627441 1508.114136 1514.158081 1515.316406 1514.559204 1509.392944 1503.958374 1505.80127 1503.686157 1496.279541 1484.806274 1474.423218 1483.041626 1495.192383 1503.716187 1509.157104 1513.403809 1515.460571 1515.248413 1512.686768 1507.573608 1501.940552 1496.356812 1489.564209 1479.279297 1474.954712 1460.469238 1447.83313 1441.849854 1434.615112 1433.814087 1440.30127 1444.988403 1443.526611 1434.352905 1420.253174 1402.679688 1391.480591 1378.530518 1370.478027 1365.933716 1365.050903 1362.894897 1363.37793 1364.870117 1367.240112 1369.501587 1369.430786 1365.430908 1356.329712 1343.062256 1329.259888 1322.85376 1321.297607 1330.670654 1339.195923 1346.868408 1352.058594 1352.87146 1352.68103 1355.615845 1363.540649 1367.006226 1375.152588 1379.065796 1383.001099 1389.271973 1391.278687 1390.626465 1387.807861 1387.598877 1391.631104 1401.489746 1417.727173 1427.872803 1437.953247 1451.825562 1460.244019 1472.835815 1479.711304 1479.56189 1473.998535 1479.484497 1485.022217 1484.450684 1485.361816 1481.430054 1471.047363 1460.540771 1450.176758 1438.835815 1441.186646 1457.622925 1475.843506 1480.276245 1472.144043 1462.199097 1451.040039 1442.585693 1433.616455 1424.443237 1421.272705 1437.044189 1450.195557 1452.203369 1449.566284 1440.783203 1434.819702 1428.503174 1418.75769 1406.955688 1406.363159 1410.5 1418.136719 1426.202515 1428.615845 1427.424438 1426.611328 1427.677002 1423.589722 1416.474487 1406.116455 1392.677612 1389.765625 1396.230713 1402.274048 1409.12854 1411.546265 1413.809326 1421.484863 1428.871094 1429.379272 1427.663208 1423.874878 1419.592163 1415.725952 1414.568726 1411.484619 1406.834595 1404.414673 1403.924438 1402.249878 1398.68103 1394.859985 1391.592896 1384.581665 1377.509521 1367.809937 1360.59729 1355.317017 1350.523926 1342.508057 1331.958008 1327.664917 1322.094604 1313.156982 1302.82019 1300.345337 1298.194946 1292.851807 1288.836914 1290.782349 1295.017578 1306.604004 1294.476074 1296.203613 1305.584106 1308.134277 1298.047974 1293.510132 1305.699829 1311.515625 1318.535889 1324.578125 1332.845093 1348.003052 1355.654785 1353.682007 1347.677612 1342.095093 1336.008057 1334.129517 1342.008789 1343.244263 1335.82959 1326.018188 1318.959595 1313.295044 1307.437988 1300.88916 1293.35376 1289.762451 1284.589355 1275.018188 1264.027466 1269.670044 1282.683838 1294.505127 1295.715454 1299.21875 1305.664551 1318.560059 1326.31958 1321.391113 1315.181885 1310.379272 1308.257202 1306.640503 1304.261475 1304.175049 1313.747192 1325.555176 1330.195557 1327.964233 1330.457031 1326.929443 1313.481567 1305.046387 1318.510132 1327.662842 1332.421997 1331.837402 1330.870239 1332.591064 1331.587891 1328.600952 1322.265137 1315.969727 1307.020142 1300.874268 1303.203857 1305.979004 1316.054565 1319.825317 1319.415771 1314.26709 1304.544678 1307.736938 1308.503662 1306.35437 1306.053223 1306.430542 1305.367554 1305.215332 1305.102417 1304.835571 1304.258911 1303.150635 1304.373413 1304.928345 1304.261475 1304.291748 1304.328491 1302.042114 1296.18457 1287.081665 1280.282959 1284.642578 1293.961914 1294.511475 1293.461792 1292.179321 1291.100708 1289.444214 1288.464111 1287.109985 1285.645874 1283.854126 1281.300781 1279.30249 1276.835815 1271.511475 1267.56543 1269.089355 1269.910278 1268.790771 1269.741089 1270.287231 1269.958618 1270.851807 1271.115845 1270.431274 1268.537231 1267.048828 1267.680542 1268.709961 1268.671509 1267.745117 1266.185547 1264.260986 1262.193726 1260.554565 1259.185059 1257.454224 1254.96936 1251.196045 1247.836182 1245.199463 1242.536011 1240.66748 1239.143921 1237.708008 1236.924194 1237.121948 1238.259155 1239.191528 1240.246216 1240.641235 1240.291626 1240.098389 1240.744141 1241.65564 1241.837769 1241.775146 1241.529663 1242.096924 1243.459595 1245.355469 1245.821411 1245.236206 1243.864624 1242.569702 1241.901733 1241.106445 1240.303467 1240.179443 1239.856567 1239.076904 1238.071167 1236.957397 1235.582886 1234.192139 1232.539062 1231.60498 1231.160278 1231.968018 1234.711914 1238.254395 1242.609375 1248.438721 1253.7771 1257.793213 1262.240356 1261.496826 1249.890137 1238.323608 1230.004883 1218.336426 1214.356689 1211.60376 1207.256226 1207.035156 1204.650269 1202.539795 1204.488159 1204.870728 1205.241699 1212.314697 1220.308838 1224.591675 1224.887573 1217.066406 1205.713623 1200.173096 1194.16687 1187.026489 1179.820801 1174.574341 1165.763306 1174.714355 1188.382935 1182.350098 1202.042969 1217.014038 1228.299316 1238.192749 1245.885742 1252.689087 1258.474365 1264.907837 1276.987915 1289.100098 1295.587158 1299.395752 1302.571411 1298.288452 1292.806396 1306.452637 1322.596313 1334.14978 1337.591797 1330.605591 1311.894531 1297.966064 1287.042725 1301.815186 1314.000732 1323.957153 1329.555298 1329.40564 1323.112549 1313.203003 1297.646362 1283.446533 1290.801147 -1380.044067 1392.949829 1405.783081 1411.495728 1433.969604 1452.067139 1461.399414 1493.835205 1517.661255 1536.690186 1548.824951 1557.467041 1562.787964 1565.185059 1566.502441 1568.683594 1582.837402 1597.192749 1609.936646 1617.994263 1626.148438 1633.531982 1642.86438 1649.894531 1654.71814 1662.60376 1675.021851 1690.34668 1699.585815 1706.799194 1715.044556 1723.506226 1729.039795 1729.406494 1725.825928 1718.005493 1706.182739 1694.655884 1688.324341 1680.739624 1668.768921 1659.195801 1647.949585 1637.529663 1629.400269 1622.638672 1613.373413 1604.154785 1595.306641 1588.562134 1579.909424 1571.56665 1563.841187 1552.609497 1534.327271 1518.15271 1507.05835 1498.867798 1498.226929 1495.899292 1500.668579 1503.21521 1499.639404 1496.508057 1495.19519 1492.563965 1488.775146 1482.296387 1479.204834 1471.457397 1465.641968 1459.343872 1454.574951 1446.177979 1425.329346 1411.763672 1403.410767 1393.678711 1385.111694 1394.322632 1401.206177 1409.455322 1416.817383 1423.887207 1429.910889 1435.360229 1437.58252 1452.715942 1465.172363 1468.560425 1463.62085 1454.888306 1446.016235 1458.767334 1473.54187 1487.991821 1501.706543 1502.038574 1501.462036 1500.192139 1496.861816 1491.254883 1485.574463 1477.323975 1465.315063 1449.517944 1434.49707 1414.460449 1400.855957 1389.119873 1380.152466 1378.117554 1375.657593 1373.348511 1371.699219 1370.192871 1368.104492 1362.89563 1357.734741 1354.255859 1350.556519 1345.788696 1341.032715 1344.592041 1350.028931 1355.639648 1367.299927 1379.128052 1393.776733 1403.82019 1411.130371 1416.608521 1421.16394 1424.72644 1426.57019 1427.78418 1429.123291 1433.036499 1437.621094 1441.571899 1443.387451 1442.610596 1439.982056 1430.78479 1423.774902 1415.896606 1401.194824 1406.07605 1413.574463 1418.214355 1418.696655 1419.428223 1418.978394 1417.031738 1415.713501 1414.018677 1409.90918 1404.950317 1399.102783 1391.149536 1384.70105 1374.819702 1364.911621 1364.294922 1372.68457 1383.97876 1395.328857 1408.369507 1422.769775 1431.552612 1438.620605 1445.483398 1449.474243 1450.922363 1451.163696 1450.598877 1448.595215 1448.843384 1449.288452 1452.590942 1453.328613 1446.113037 1437.246826 1427.58252 1414.99292 1411.339111 1409.465454 1409.692139 1407.214111 1399.643921 1389.38855 1387.318604 1399.867798 1415.078125 1422.418701 1430.365479 1437.464478 1450.19751 1468.362671 1478.824951 1484.05127 1488.489502 1490.434082 1494.994263 1500.36084 1505.109741 1508.956543 1513.517944 1518.053101 1520.233521 1519.853882 1513.048828 1511.305176 1513.787598 1510.111938 1501.856079 1489.192017 1480.797974 1485.244995 1495.341064 1505.05603 1513.020996 1518.059082 1520.496704 1520.497559 1518.413696 1513.871216 1508.370361 1501.331055 1495.083618 1489.605957 1487.411011 1475.272949 1461.516113 1457.237305 1449.540649 1448.589478 1454.690063 1454.035522 1444.675659 1428.17334 1414.844604 1404.65564 1391.205933 1381.666016 1378.868652 1377.300781 1373.444458 1369.566162 1370.301636 1371.675415 1374.038574 1375.463745 1373.945557 1367.176147 1356.674072 1342.101929 1328.840088 1323.693726 1322.543823 1334.211304 1348.148682 1356.804077 1360.305176 1361.030518 1361.3125 1361.31604 1363.034424 1364.798584 1367.316162 1375.339844 1377.626343 1384.567627 1390.410156 1390.753296 1389.244385 1388.848022 1392.845825 1404.621216 1418.863892 1429.147949 1441.217773 1452.00769 1462.352783 1475.734131 1483.404053 1489.049316 1493.704956 1501.002197 1505.514893 1508.944092 1507.837769 1499.236816 1487.035767 1476.954834 1462.13855 1452.79834 1442.76123 1450.150513 1470.104004 1485.441406 1487.911865 1472.823608 1460.209229 1449.299194 1437.327026 1427.997437 1432.093994 1442.628906 1452.860107 1450.097046 1445.662109 1438.332886 1430.279419 1419.165527 1411.154907 1407.772827 1414.281616 1416.613037 1426.832764 1431.531738 1432.99646 1432.202271 1431.000366 1430.359497 1427.584717 1418.874878 1408.374634 1395.933228 1399.037598 1405.75293 1409.996582 1414.315796 1415.21167 1415.239624 1422.326416 1428.128174 1430.339966 1429.550171 1426.799194 1424.935791 1421.490112 1418.25415 1414.478638 1410.911255 1407.691528 1405.786133 1403.166992 1398.013672 1394.244019 1391.226074 1383.016113 1374.985718 1365.655884 1354.950684 1349.0 1343.424927 1337.433838 1332.152588 1321.300781 1311.862671 1303.543579 1296.062134 1292.013428 1293.138916 1296.361694 1298.074341 1301.002075 1306.288818 1308.32373 1295.776367 1295.269287 1305.185425 1306.903931 1304.656738 1297.997681 1302.254395 1310.789429 1318.238281 1326.079102 1335.310425 1350.370239 1356.012695 1354.230469 1348.327393 1342.232544 1339.479858 1339.981934 1342.624878 1344.082031 1343.009521 1332.538208 1324.414673 1317.328979 1311.608765 1305.807007 1298.044434 1292.204468 1285.477051 1274.13269 1264.570312 1267.751709 1277.249023 1290.469971 1294.96814 1300.678833 1308.509155 1325.127686 1331.728638 1329.052002 1318.226074 1313.633667 1310.856567 1308.375854 1305.116577 1304.819946 1313.9198 1324.843018 1331.778809 1329.887817 1333.634277 1330.56665 1316.04187 1312.543823 1322.652222 1331.261963 1335.530151 1335.8302 1335.527466 1334.726196 1332.376099 1327.944824 1322.601562 1315.877075 1305.135254 1303.746948 1309.097656 1313.067017 1317.773682 1321.528931 1320.839355 1317.783081 1311.509766 1312.210693 1313.51001 1311.783936 1310.696899 1310.092285 1309.394043 1308.895508 1308.528687 1307.845459 1306.838745 1305.233521 1307.209351 1307.858032 1307.157715 1307.180908 1306.63269 1304.517456 1298.267456 1289.007446 1280.170166 1284.919312 1294.702148 1295.684692 1295.44397 1294.243408 1293.165039 1291.540161 1290.777222 1289.410767 1287.741455 1285.459473 1283.321899 1281.558838 1279.188965 1274.811157 1271.579834 1272.467651 1273.022095 1272.928711 1273.49646 1273.938843 1273.946411 1274.043701 1273.48291 1272.137573 1270.025024 1267.928101 1269.040771 1270.459961 1270.480835 1269.780884 1268.598633 1266.546875 1264.27356 1261.970825 1260.117432 1258.078247 1255.315186 1251.260742 1247.900513 1244.672607 1242.741577 1241.353271 1240.454468 1239.971802 1239.726929 1240.097534 1241.220947 1242.309814 1243.39917 1243.483765 1242.660278 1242.085205 1243.281494 1244.763672 1245.066528 1245.459839 1244.990723 1244.354248 1245.516235 1247.375 1247.97876 1247.458618 1246.165527 1244.736694 1243.554688 1242.957886 1242.3927 1242.272461 1242.02771 1241.205566 1240.078125 1238.839111 1237.400269 1235.650635 1233.553711 1231.847046 1231.584595 1233.999756 1237.025879 1240.856567 1245.415405 1252.362549 1257.442505 1259.531738 1258.309448 1248.070557 1236.562134 1223.443726 1214.023804 1206.468384 1203.450439 1198.708496 1196.531372 1195.648193 1193.023682 1192.110474 1192.228271 1191.310669 1191.06543 1193.922119 1210.208008 1223.759399 1230.880493 1222.147583 1211.566162 1204.700562 1199.89563 1196.393677 1182.057007 1173.644653 1165.429199 1170.730591 1190.109619 1202.854126 1191.323975 1211.759277 1224.776123 1236.052124 1244.331787 1254.593018 1262.614502 1272.417847 1282.003784 1287.005981 1289.517334 1299.213135 1307.824463 1310.516357 1308.979736 1306.182129 1318.592529 1333.434082 1343.663208 1334.939697 1321.114624 1307.578125 1293.391602 1311.270508 1324.483032 1333.666992 1338.968506 1337.04834 1328.204834 1315.35791 1298.23584 1293.716187 1298.276855 -1362.113037 1371.143311 1382.980225 1392.192871 1417.803345 1435.787231 1451.273071 1472.115234 1497.487793 1513.053589 1523.865234 1533.993286 1542.428345 1547.399048 1549.013916 1553.341553 1567.254639 1583.446167 1598.321777 1606.526123 1611.806885 1617.373657 1624.162598 1630.087158 1634.452881 1638.625977 1647.182861 1662.922241 1676.233887 1688.276489 1693.212646 1701.75415 1710.32666 1715.770142 1716.73584 1711.660156 1701.401123 1692.166504 1685.032837 1675.714233 1664.805664 1654.044922 1642.668579 1634.663086 1628.414062 1622.259644 1613.742798 1604.469482 1595.47876 1587.965332 1577.518555 1567.415771 1557.910645 1539.213745 1522.021851 1510.827271 1512.270508 1516.457397 1514.644775 1509.990845 1512.1427 1514.733521 1513.527344 1508.517944 1504.456909 1498.748047 1491.911743 1483.795166 1476.904419 1467.44519 1460.2854 1453.633301 1443.381836 1432.856689 1417.684692 1407.62146 1398.014526 1387.44043 1393.743652 1399.858032 1408.216309 1417.516968 1425.748657 1435.250488 1445.050659 1453.792969 1458.558716 1461.155762 1476.334595 1479.673584 1479.200317 1475.61145 1462.478882 1467.93396 1481.573486 1492.509644 1507.347534 1509.653809 1508.644043 1507.145386 1504.092041 1498.523804 1487.917114 1476.810669 1458.1604 1438.534058 1420.69519 1407.213257 1399.257812 1395.511963 1388.22876 1383.437866 1378.877808 1377.110352 1376.852539 1375.239136 1371.775024 1366.548462 1363.297485 1358.812012 1354.427734 1348.087646 1341.773071 1344.490967 1351.14917 1359.809937 1369.868896 1377.853394 1388.286621 1401.086548 1409.562378 1415.832397 1423.951172 1427.802002 1430.2854 1432.04895 1434.189575 1437.275391 1440.829468 1444.880371 1447.331543 1447.549927 1443.214844 1434.613525 1426.484985 1420.213623 1409.730103 1408.587036 1414.308228 1421.092651 1422.467285 1423.143433 1422.897217 1421.486572 1419.850952 1417.994507 1414.735962 1408.577271 1402.015503 1394.082764 1388.427368 1379.820679 1371.357178 1364.689209 1369.781494 1377.300659 1388.946777 1401.616821 1417.230713 1428.868042 1437.706787 1448.493652 1453.595703 1454.259766 1455.304688 1456.411255 1456.619507 1456.91626 1458.639648 1460.082397 1457.746094 1453.084106 1443.001587 1428.713257 1421.921509 1417.157959 1415.378418 1417.16333 1417.41748 1409.105469 1395.774292 1387.741455 1394.603394 1405.072632 1415.312988 1426.2052 1432.9823 1441.237671 1457.678955 1474.205444 1489.209717 1493.86377 1498.535156 1501.048218 1505.266357 1509.968872 1514.102173 1518.143555 1522.375 1525.456421 1526.279907 1522.799072 1518.491089 1516.755859 1513.50354 1504.417725 1492.428955 1485.74353 1490.846191 1497.99585 1506.5802 1515.324097 1523.054565 1526.811646 1526.910767 1524.838013 1519.849609 1514.524414 1509.374146 1503.736084 1499.016968 1491.891968 1490.043091 1483.79126 1480.851929 1469.06665 1460.958984 1455.625854 1449.475098 1435.922974 1417.418335 1409.361938 1402.635132 1391.839355 1392.505615 1391.70105 1387.567383 1380.996948 1378.522095 1377.474243 1376.900269 1379.881226 1380.351196 1379.282593 1369.717896 1357.508545 1341.165649 1327.366943 1323.455811 1325.546143 1337.02832 1354.111328 1363.230713 1367.642944 1369.884888 1371.401001 1370.367676 1369.001587 1371.610962 1377.499878 1381.484497 1387.038086 1392.821899 1391.764648 1391.908691 1389.310181 1391.842407 1395.939697 1403.830078 1416.134033 1425.265137 1439.761108 1449.643677 1462.848999 1474.901367 1484.785278 1494.074463 1501.700195 1507.884521 1515.170532 1525.190308 1527.199951 1519.068604 1505.730103 1493.01001 1477.60498 1463.602661 1452.886475 1450.814575 1469.867676 1487.569702 1491.381592 1483.317993 1468.030518 1454.04187 1441.910767 1432.603882 1438.149414 1449.523438 1453.414673 1453.198975 1446.878662 1441.023804 1428.846069 1413.145996 1410.045776 1414.694458 1421.624268 1425.1073 1431.029907 1436.156616 1437.970215 1437.104248 1434.769775 1432.316162 1428.992676 1419.780396 1409.043335 1400.835083 1405.780151 1412.216675 1417.299927 1421.19519 1422.037354 1422.14563 1424.635132 1428.978882 1432.151611 1432.108276 1430.434937 1429.187744 1426.557495 1421.556763 1416.578491 1412.098755 1408.107544 1404.51709 1400.210571 1393.502319 1388.5448 1382.76709 1375.766968 1368.253662 1359.053223 1349.717773 1341.254883 1336.899292 1329.600708 1326.333984 1318.236084 1309.004883 1300.239868 1294.73584 1301.067505 1305.797241 1307.611084 1308.919067 1310.612549 1312.398193 1309.70874 1301.62439 1293.67041 1303.308838 1306.984741 1307.088745 1305.474854 1305.178467 1311.56189 1319.004272 1326.117798 1335.068604 1348.027954 1357.172485 1354.654419 1349.825684 1343.481445 1341.026245 1340.873901 1342.82959 1345.205688 1344.850098 1340.017334 1328.042847 1320.173096 1313.829224 1307.886475 1301.750732 1295.628296 1287.301025 1273.923096 1265.377319 1267.802612 1274.851318 1281.592041 1294.032227 1300.10022 1307.219482 1321.836792 1332.685059 1330.338867 1319.502319 1314.931396 1312.928101 1309.981445 1305.726318 1304.395264 1312.275635 1322.98645 1332.687134 1335.921997 1338.5271 1331.856812 1319.658203 1316.033936 1325.267578 1338.209717 1340.579102 1338.918213 1339.100708 1337.95813 1333.873047 1330.151611 1321.054932 1312.012451 1303.072998 1310.766724 1320.11853 1320.559692 1323.312744 1325.475586 1322.872925 1318.344604 1315.33252 1316.768311 1318.419312 1315.818359 1315.435547 1315.217651 1313.721069 1312.564453 1311.94104 1311.020264 1310.192261 1309.756226 1310.55896 1310.914795 1310.04895 1308.930054 1307.563843 1305.227539 1297.446899 1288.976807 1280.289795 1286.623047 1294.639771 1296.932983 1297.103638 1296.217285 1295.359741 1293.746948 1293.078979 1291.808838 1289.94458 1287.911255 1285.362671 1282.990601 1280.491333 1278.149536 1276.504395 1276.737183 1276.777588 1276.655029 1277.158813 1277.661499 1277.861694 1278.337036 1276.925415 1274.628662 1272.270752 1270.166382 1270.598389 1271.770752 1271.72229 1270.959961 1269.782349 1268.088623 1265.418579 1262.728882 1260.013306 1256.917358 1254.470093 1252.062012 1248.973999 1244.387817 1243.800659 1243.029785 1242.135254 1241.755249 1241.794922 1242.490112 1243.197632 1244.904419 1246.685303 1246.975464 1244.787231 1243.352539 1246.801147 1249.103271 1249.875977 1249.84082 1249.210449 1248.783569 1249.042969 1249.758057 1250.197632 1249.732178 1248.547119 1247.209595 1246.095215 1245.256104 1244.890381 1244.404175 1244.176392 1242.825195 1242.292969 1241.171875 1239.7323 1237.96106 1235.784668 1233.582764 1233.866943 1236.473755 1239.462036 1243.178833 1249.771362 1256.64563 1259.275024 1259.031982 1249.366089 1237.184326 1223.124146 1213.546143 1205.296753 1197.124634 1194.829834 1191.733276 1190.314941 1190.005737 1188.57019 1186.357422 1183.093628 1179.423584 1181.140381 1186.36792 1199.763062 1223.937866 1233.724976 1223.860596 1214.219482 1205.771729 1198.460205 1192.006226 1178.706787 1168.715454 1167.327271 1177.399414 1189.661621 1210.30896 1202.989868 1192.786133 1210.61499 1223.468262 1233.403687 1241.769531 1252.943359 1265.115479 1271.597412 1270.171387 1273.775513 1295.036255 1306.46582 1315.14624 1320.532837 1319.831177 1317.421021 1329.396118 1344.360107 1342.606934 1331.063477 1316.620239 1302.772705 1318.493286 1332.011475 1339.927124 1344.762329 1340.800781 1330.554688 1313.081299 1302.145386 1311.6604 1308.156006 -1347.741211 1360.922241 1372.919189 1381.72522 1392.568237 1414.769897 1438.21167 1465.359985 1481.915649 1482.231445 1489.771484 1510.539062 1523.844604 1528.272095 1531.136963 1545.096558 1562.5271 1576.324463 1588.790405 1594.690918 1600.025269 1602.854004 1605.741943 1610.789673 1614.779297 1622.553101 1632.595703 1641.394897 1650.60022 1661.286255 1673.943237 1680.940063 1692.411987 1705.133667 1710.173218 1705.943237 1697.428467 1689.95105 1682.50769 1672.783081 1661.635376 1650.102295 1639.005493 1631.461304 1626.5 1620.419312 1612.533691 1602.851318 1591.147705 1579.575439 1564.308472 1553.677368 1542.789429 1530.35144 1524.6875 1528.062866 1529.220459 1526.674805 1524.070557 1523.269409 1528.497559 1531.017944 1527.093994 1515.315796 1505.769165 1495.970215 1486.897095 1475.631958 1466.338379 1459.218262 1451.513428 1437.09082 1427.152466 1416.250977 1408.489136 1401.320068 1392.903442 1390.098633 1398.144531 1405.638184 1415.983765 1424.778931 1437.998291 1448.500732 1461.324829 1474.065796 1478.490112 1478.292969 1480.396484 1485.709717 1487.12085 1486.064331 1477.946655 1470.993164 1486.819458 1504.818237 1515.943115 1518.723145 1516.958984 1513.623169 1508.912109 1501.346558 1487.280884 1471.070557 1447.910034 1430.709839 1421.812256 1415.249023 1408.323486 1401.376709 1393.859375 1389.731445 1384.567261 1383.257202 1383.342285 1381.105591 1378.715576 1375.461914 1369.738159 1364.022949 1357.134521 1349.761108 1342.83374 1346.194092 1352.369141 1363.792236 1373.021606 1382.67334 1392.631592 1401.561157 1411.367432 1417.922241 1425.964355 1430.154663 1433.026611 1435.462158 1437.872314 1440.943115 1444.480713 1448.383911 1451.682251 1452.416748 1450.235596 1440.092773 1432.51355 1426.171875 1419.747437 1410.347656 1414.766357 1423.732666 1425.625488 1426.806519 1426.926514 1425.261963 1423.228394 1420.556885 1417.035889 1410.704102 1402.450684 1398.495117 1393.752441 1387.484619 1378.765259 1369.457764 1369.020508 1374.008667 1380.22168 1392.598389 1407.344116 1421.094727 1431.223511 1440.651123 1449.725342 1454.374634 1456.637207 1461.338989 1464.783325 1464.842285 1465.655396 1465.489502 1462.743286 1456.1427 1445.516357 1436.091797 1430.993774 1424.994507 1423.296021 1424.355347 1421.579468 1412.116211 1399.279297 1390.349243 1394.580444 1407.531372 1420.412476 1425.458618 1438.615234 1450.578125 1458.96582 1475.383179 1489.812744 1498.27124 1502.985962 1505.964966 1509.675171 1514.695435 1519.54895 1522.809937 1528.214722 1534.95752 1533.470337 1527.161987 1522.015503 1519.419922 1515.139038 1506.190063 1495.369995 1488.5177 1493.230591 1500.657349 1508.81543 1516.25061 1524.329834 1531.873657 1538.903809 1533.480347 1524.83313 1518.453613 1512.898682 1505.061279 1498.226685 1486.147827 1482.005493 1479.194336 1476.005859 1465.000122 1456.777832 1449.68396 1441.518066 1425.898438 1414.100464 1405.61145 1400.467285 1403.013062 1402.554932 1400.136475 1394.90271 1388.520996 1385.559326 1383.576416 1382.396973 1381.488647 1381.295776 1379.693115 1370.120972 1357.988403 1337.739624 1326.997192 1323.502075 1326.864868 1337.033569 1356.485962 1367.159546 1371.584229 1378.630859 1380.311279 1380.751709 1379.519531 1379.722778 1381.401733 1384.320557 1390.297607 1390.492432 1386.532227 1384.669678 1387.102051 1391.389526 1393.559937 1400.962524 1410.672607 1420.61853 1434.965454 1445.564087 1457.810791 1471.420044 1482.525024 1493.637939 1503.414673 1510.780884 1525.12854 1530.805054 1534.020996 1531.241089 1520.026245 1505.293823 1489.872314 1476.542725 1460.893921 1462.817017 1479.981079 1490.860962 1495.737061 1486.223267 1472.336304 1457.330566 1442.294189 1441.253906 1445.338379 1452.041382 1449.131348 1442.193848 1438.422241 1427.834839 1415.990479 1415.390259 1415.541382 1420.703979 1429.612915 1434.453247 1437.667236 1440.494263 1441.375244 1440.069824 1437.352051 1433.743896 1429.199097 1420.119995 1409.841919 1405.252808 1412.413818 1421.10437 1428.804321 1430.496704 1428.167725 1428.602295 1429.09436 1432.179688 1435.726318 1435.717896 1433.659668 1431.400513 1428.501587 1424.041016 1417.782227 1412.273804 1404.96936 1399.372803 1392.386719 1387.331543 1377.885986 1374.246948 1368.042969 1362.318848 1355.106445 1346.845947 1339.516479 1332.837891 1327.793945 1322.067749 1316.150757 1306.720459 1299.944092 1298.390259 1311.877808 1320.227051 1323.464355 1322.875 1319.737793 1316.64563 1314.358643 1307.778198 1303.654297 1306.339722 1308.12793 1308.569824 1307.459473 1304.806396 1310.231079 1318.258179 1325.742065 1334.28894 1345.120728 1356.359985 1355.693726 1352.787842 1347.103271 1342.584473 1340.933228 1343.57666 1348.592529 1347.543823 1341.814087 1331.669312 1322.722778 1315.27832 1309.01062 1303.044678 1296.409546 1287.987915 1272.046265 1266.289185 1268.549316 1275.06958 1284.257446 1294.605347 1299.147461 1305.959717 1317.508423 1329.776733 1329.775269 1321.423096 1317.468628 1316.300781 1313.547119 1309.391235 1305.310547 1310.427734 1317.791992 1329.095215 1336.032593 1342.817383 1336.375244 1323.716553 1317.278564 1328.728149 1343.161499 1343.661377 1341.351318 1342.310425 1340.798584 1333.629517 1326.588379 1317.177368 1306.384399 1304.123169 1319.853149 1329.369141 1326.449219 1329.635742 1329.370972 1324.255249 1317.729614 1316.037231 1318.38269 1320.654785 1320.155151 1319.488403 1319.188965 1317.108765 1316.13208 1315.995483 1313.974365 1313.568848 1313.576172 1314.658081 1314.706421 1312.801758 1310.152954 1307.709351 1302.64917 1294.703491 1289.204346 1286.292236 1292.66272 1296.552734 1298.886719 1299.347778 1298.658569 1297.622803 1295.890747 1294.898926 1293.884399 1292.544189 1290.375244 1287.69873 1284.75647 1281.736206 1279.23584 1278.57251 1280.301147 1280.794678 1280.062134 1280.420898 1281.07373 1281.323364 1281.506836 1279.618652 1277.520508 1275.973999 1274.409668 1273.663574 1273.404053 1272.758423 1271.802979 1270.544922 1268.660889 1265.98584 1263.439087 1260.515381 1257.169678 1255.877075 1253.986938 1251.994751 1249.146973 1246.820068 1245.064453 1243.329468 1243.065674 1243.807617 1245.400146 1246.455688 1248.272949 1250.345215 1251.709106 1249.245483 1247.541992 1252.787842 1255.121948 1255.554565 1255.099243 1253.892578 1253.04895 1253.034302 1252.898071 1252.841431 1252.202148 1251.358276 1250.512207 1249.454102 1248.681763 1247.984985 1247.463989 1246.002441 1245.096924 1244.544556 1243.17981 1242.132446 1240.54834 1239.081421 1237.997437 1238.202271 1239.718872 1242.185059 1247.30542 1255.177856 1259.236572 1260.024902 1253.781006 1240.205444 1224.990112 1214.083984 1206.949341 1196.991211 1190.006348 1183.622925 1184.800415 1185.765381 1186.106445 1185.397339 1182.69873 1177.17041 1177.631226 1176.285156 1178.080811 1192.836182 1222.055908 1231.090942 1221.051514 1210.530151 1201.58313 1193.925171 1184.119629 1172.76001 1165.829102 1176.116577 1184.115479 1192.633301 1208.367676 1210.637817 1207.785767 1208.395386 1214.267456 1216.339478 1220.707642 1232.510864 1245.395996 1251.664795 1254.162354 1266.603027 1282.690063 1295.763916 1306.461914 1319.180176 1328.333618 1330.750732 1329.863159 1343.177612 1345.098999 1336.956299 1323.48291 1312.091919 1326.513306 1338.806274 1347.951904 1349.117188 1342.089355 1329.050903 1311.70166 1319.799194 1328.311768 1320.751953 -1338.211182 1354.634277 1365.425171 1373.72998 1385.441406 1401.352417 1419.705688 1440.232544 1457.993774 1457.83606 1465.803589 1477.069458 1490.559082 1512.142334 1534.957397 1553.169922 1562.056641 1566.480713 1576.978271 1577.313477 1585.049927 1590.584229 1588.320679 1590.229492 1597.243408 1603.323608 1613.27478 1625.355957 1636.119751 1643.905884 1655.607056 1670.0625 1676.728638 1684.845215 1699.06897 1700.011963 1694.869995 1687.85437 1680.446777 1670.974243 1659.491821 1648.804932 1636.797485 1630.181641 1624.717773 1618.423096 1611.081299 1599.37561 1585.274902 1577.370605 1571.187256 1565.783447 1561.42334 1553.77356 1546.026123 1548.93457 1548.081787 1542.772705 1539.05603 1538.665649 1540.737183 1539.455322 1530.527832 1516.510254 1499.006104 1485.400269 1474.685181 1465.38147 1459.688599 1453.314453 1443.331909 1423.299194 1412.565186 1407.540039 1400.78125 1396.762695 1389.70813 1394.0177 1402.530518 1410.508667 1420.892212 1433.96875 1446.301025 1459.147095 1478.485474 1489.588257 1492.385498 1491.123291 1487.114868 1493.830933 1498.826294 1497.636841 1493.288574 1487.130859 1490.202148 1508.898071 1524.473511 1527.806396 1525.285767 1519.69104 1512.925903 1501.602173 1480.03772 1465.050049 1453.174561 1444.640137 1434.772217 1427.814819 1417.5177 1408.280518 1400.760742 1392.858887 1388.203247 1391.208618 1392.207642 1389.708496 1385.457397 1381.533325 1375.768188 1368.441528 1359.612305 1350.824463 1343.182983 1347.330811 1352.963135 1364.954102 1376.946289 1388.825562 1397.235718 1406.212158 1416.498535 1422.836914 1427.658813 1432.68335 1436.230103 1438.885498 1441.244385 1444.079468 1447.845703 1451.701782 1453.633057 1453.873901 1453.177246 1445.921631 1437.730591 1430.735474 1424.246948 1416.137451 1415.361694 1426.431763 1429.755249 1431.189209 1431.280151 1429.480347 1425.872803 1422.974731 1419.058838 1414.2146 1408.130249 1402.714478 1397.758179 1392.197754 1382.284424 1375.004395 1371.476685 1371.578247 1375.390625 1384.451416 1397.627441 1409.214478 1420.324707 1428.045532 1436.852539 1443.614746 1450.379395 1456.368652 1463.708984 1466.933472 1467.136597 1467.086792 1465.049683 1456.287354 1449.306641 1443.133423 1437.857056 1429.17749 1433.187988 1433.130615 1427.214722 1411.558472 1398.798706 1392.436646 1400.758911 1418.404907 1431.559448 1443.487183 1456.931152 1464.410645 1467.459229 1476.135254 1486.296631 1499.601074 1505.692871 1509.547485 1514.029541 1522.126465 1526.353516 1531.670776 1537.967041 1541.959961 1538.975952 1533.396851 1526.294067 1521.483398 1515.195068 1507.364258 1499.642822 1495.541748 1495.831421 1499.672852 1507.64209 1514.07312 1520.939209 1526.025024 1535.924072 1533.065674 1525.409546 1516.23999 1506.189575 1494.081421 1487.997803 1478.999023 1470.098267 1469.070679 1464.463989 1457.127319 1450.101807 1442.188965 1429.711548 1419.495361 1412.240479 1410.615845 1413.560791 1417.105347 1413.589111 1407.197388 1401.557373 1394.26416 1391.943481 1388.892578 1384.955078 1380.745972 1378.28064 1376.958008 1369.804321 1356.368164 1338.076538 1327.374146 1324.463379 1326.85083 1335.922119 1353.989136 1365.515503 1367.309814 1368.515137 1370.060181 1374.277344 1378.728149 1381.023071 1380.95813 1381.697144 1380.947998 1377.932861 1376.59729 1377.052856 1384.872803 1390.10498 1392.389893 1399.956787 1404.670532 1414.616211 1424.811768 1441.39978 1450.513428 1464.877319 1476.008423 1488.937866 1500.297119 1510.011475 1526.013184 1533.842407 1538.914917 1539.265991 1529.249146 1516.490723 1504.918335 1490.22522 1470.894409 1483.940308 1498.704834 1507.200439 1501.270996 1489.479492 1471.513428 1458.325562 1451.551025 1454.129883 1453.436157 1448.580933 1441.479858 1432.81543 1424.70459 1422.484497 1422.719849 1425.878662 1428.432617 1432.526245 1437.564575 1442.380981 1443.406982 1443.823975 1443.420166 1442.014526 1439.216064 1433.941772 1428.054565 1419.117554 1412.666748 1411.44873 1418.719482 1430.304443 1439.174683 1440.801025 1437.421875 1437.65686 1435.858643 1437.931885 1439.594482 1438.957275 1436.243774 1432.922607 1430.007935 1427.113159 1421.815186 1415.355347 1404.644409 1391.723755 1385.277344 1378.505493 1374.190186 1367.560303 1362.648315 1356.015625 1351.366699 1345.531372 1338.74939 1329.145264 1324.705078 1317.823364 1314.508545 1307.052124 1301.562866 1299.612061 1312.7854 1327.213745 1331.969482 1330.500122 1325.342773 1321.087646 1319.536499 1311.286743 1304.902954 1307.26001 1309.330078 1310.528687 1310.106323 1307.024292 1308.150146 1317.407349 1324.775879 1332.818359 1342.275757 1353.558716 1356.422241 1354.830933 1350.086548 1345.118408 1341.723022 1342.708374 1353.532227 1351.33374 1341.412964 1332.71582 1323.504272 1315.349365 1308.525513 1301.193481 1292.74646 1284.669312 1267.928833 1268.980469 1271.97583 1277.2052 1283.486084 1293.381226 1298.028198 1303.740112 1310.770386 1316.847656 1318.532593 1318.681519 1320.629028 1320.31543 1317.253174 1314.525757 1314.124756 1313.792236 1315.146362 1324.068115 1330.661621 1342.829468 1340.340454 1326.845581 1320.73645 1334.384155 1345.473022 1346.168823 1344.911377 1343.995728 1339.555542 1330.263672 1323.425659 1313.802979 1303.284058 1309.805298 1323.644653 1330.735596 1330.013184 1332.033325 1330.796997 1325.071899 1318.065796 1316.475586 1319.704102 1324.02124 1324.521484 1323.963989 1322.364136 1320.115723 1319.355957 1318.699707 1316.298462 1316.613281 1316.610962 1318.082642 1317.908447 1315.082764 1310.642822 1305.947998 1296.973511 1291.062256 1290.492065 1292.097534 1295.790039 1300.021118 1302.028076 1301.93811 1301.265625 1300.095459 1297.817383 1296.628906 1295.511475 1294.240112 1292.744995 1290.149414 1286.364014 1282.647461 1279.978149 1280.344849 1281.903076 1282.411499 1282.391968 1282.630249 1282.903687 1283.271851 1282.915771 1281.553589 1280.424194 1279.307861 1277.436646 1276.202637 1275.018677 1273.821655 1272.33252 1270.737671 1268.665649 1266.518433 1264.589355 1262.536621 1260.402344 1258.505005 1256.305054 1255.994385 1253.731934 1249.813477 1246.121582 1243.537964 1244.792114 1247.952637 1251.552612 1252.798096 1252.990112 1254.752197 1257.275635 1254.983154 1255.469971 1259.019531 1260.327515 1260.556519 1259.759277 1257.682129 1257.213379 1256.318481 1255.710693 1255.758667 1254.852905 1254.108643 1253.984009 1253.144897 1252.159424 1251.568481 1250.743042 1250.205444 1249.282715 1248.128906 1246.41748 1244.768921 1243.325684 1242.31189 1240.999512 1241.070679 1242.732178 1245.337646 1253.043701 1259.22998 1260.688477 1259.207642 1245.400024 1229.330078 1215.464844 1206.673828 1196.411377 1191.278809 1184.882202 1180.421265 1179.982422 1180.856567 1182.048828 1181.160522 1178.768311 1182.657959 1183.001831 1178.416992 1175.412354 1190.981079 1218.646484 1222.756836 1210.011597 1202.231201 1194.454712 1186.95874 1178.397095 1168.98584 1169.623047 1183.695801 1189.609619 1197.336182 1209.866943 1216.879761 1221.878052 1228.049683 1232.400391 1234.019043 1233.835571 1230.135498 1228.194458 1235.75415 1242.632202 1254.355835 1266.678589 1281.808472 1298.894043 1315.123047 1330.874756 1336.952881 1338.237793 1343.119751 1346.401733 1339.630493 1328.624023 1317.47644 1334.680542 1348.450562 1357.481201 1353.52478 1343.565796 1324.970703 1316.931885 1337.335449 1342.491577 1331.179077 -1328.288696 1341.930176 1354.218994 1367.377075 1373.855103 1380.683472 1392.985596 1411.18689 1425.512451 1433.335571 1447.895264 1467.219727 1497.205688 1526.975952 1540.247314 1546.96814 1544.74585 1549.239624 1554.706909 1556.921143 1561.666504 1570.947632 1563.180298 1570.471069 1577.340088 1586.493042 1596.673828 1608.408325 1622.88147 1634.944702 1641.919434 1656.385986 1666.827393 1670.924805 1680.215088 1691.802246 1691.410645 1685.338867 1677.736206 1668.215332 1656.484253 1646.556396 1637.151123 1629.865234 1623.009766 1616.865234 1609.658081 1600.144043 1589.799927 1585.098633 1584.395752 1578.439575 1571.377563 1568.175537 1568.875488 1568.540771 1561.14624 1553.854248 1551.72168 1551.269775 1547.124512 1538.935913 1526.425537 1511.682251 1494.960205 1479.280151 1469.141479 1461.063354 1456.239258 1448.870117 1430.161011 1412.148438 1413.161133 1413.452271 1407.405273 1400.472656 1391.652466 1398.45813 1403.266846 1411.734253 1423.022095 1436.975464 1447.609253 1466.806274 1488.408569 1499.05127 1504.049561 1507.758789 1502.764893 1507.673218 1512.854858 1512.138794 1508.947144 1499.828979 1488.983276 1515.630249 1529.819214 1533.264893 1530.663208 1524.031006 1513.300049 1494.736694 1476.876099 1471.398438 1463.399048 1457.098022 1446.243652 1436.488647 1425.989624 1414.27478 1402.40332 1396.108276 1399.787476 1405.633423 1405.928345 1400.575562 1391.091309 1385.322754 1378.841919 1370.535278 1360.781006 1349.505859 1344.889282 1349.082153 1354.174072 1368.503784 1381.469116 1392.572754 1401.060547 1412.157349 1421.05127 1427.707397 1431.724243 1436.233521 1439.691406 1441.852539 1443.943237 1446.839233 1449.888428 1453.139893 1454.605713 1454.738892 1453.652466 1448.330811 1439.792236 1432.811646 1426.443726 1417.964355 1422.330078 1431.299438 1435.259155 1437.10437 1437.094727 1434.873291 1430.003784 1425.59375 1422.671753 1418.960083 1416.016968 1409.774048 1400.516357 1394.481689 1384.983276 1376.09375 1379.165161 1379.128906 1374.599487 1377.526245 1392.0354 1400.200195 1410.172119 1417.421997 1423.019409 1428.835571 1437.456177 1442.714844 1450.028198 1462.310181 1467.765869 1467.691162 1465.786499 1461.769775 1456.118652 1451.368408 1443.924561 1444.20813 1443.779785 1440.670166 1430.797363 1411.811157 1398.527954 1392.865723 1406.974365 1423.367798 1434.53064 1448.041382 1462.631592 1474.942261 1477.956787 1483.616821 1490.63208 1500.908813 1510.941284 1516.447144 1525.866821 1531.457642 1536.976929 1544.826904 1549.320068 1548.718506 1544.751709 1540.038208 1532.317627 1523.652954 1516.333862 1510.577637 1504.314941 1499.981567 1497.972168 1499.598511 1505.257812 1510.117676 1518.104736 1524.277588 1530.031494 1528.333618 1522.538818 1514.779053 1503.299194 1488.466797 1477.381836 1465.484741 1459.883545 1457.369141 1453.718506 1448.839233 1443.907593 1437.921387 1428.308716 1416.04187 1418.099854 1423.527832 1429.855713 1428.060913 1419.936768 1411.739258 1405.5177 1399.892334 1394.984863 1390.224243 1383.44751 1378.095215 1372.675293 1370.386353 1366.538818 1352.104126 1339.890503 1328.274414 1325.941895 1326.248901 1334.645508 1348.041504 1356.796265 1358.298706 1356.274902 1355.775635 1361.451904 1368.219482 1373.097412 1374.513672 1372.952148 1370.497925 1374.74353 1378.615356 1383.045532 1391.860352 1396.958008 1403.903809 1406.900757 1408.600586 1411.878174 1416.030273 1432.598389 1446.094482 1458.763794 1469.09668 1481.358887 1494.711426 1506.147095 1524.942627 1534.296997 1541.552979 1544.444214 1537.641113 1524.78479 1511.136719 1497.934204 1481.147827 1498.982422 1518.973755 1523.65564 1512.477173 1496.908203 1479.873291 1468.161133 1463.924194 1463.828369 1456.930664 1446.526001 1436.105469 1429.944946 1424.814453 1425.130493 1428.848633 1434.312744 1440.26416 1443.678833 1446.15332 1448.608154 1448.293213 1446.990112 1445.226196 1442.702271 1438.878052 1432.715332 1425.957031 1416.389282 1415.038086 1420.099854 1426.560181 1436.843628 1443.625244 1444.826538 1443.994629 1442.971313 1441.299072 1441.829834 1442.04126 1440.843262 1437.069946 1432.991455 1430.190918 1429.077148 1427.088013 1415.777832 1404.656738 1394.616821 1386.166504 1378.177002 1372.885376 1368.02124 1362.153809 1355.533447 1350.258545 1345.294556 1339.643433 1333.428589 1327.505371 1317.824341 1313.863281 1309.585938 1305.422363 1300.18457 1310.517944 1329.370972 1332.797241 1331.020264 1327.560669 1324.676636 1321.098999 1314.414429 1304.765015 1306.925049 1310.573853 1313.082153 1314.422974 1314.538696 1316.690552 1317.02002 1323.677856 1330.438477 1339.296997 1352.13623 1356.252197 1355.216675 1351.735962 1347.207275 1343.83252 1345.846558 1355.209839 1350.440796 1339.554932 1331.442383 1321.775269 1314.047241 1308.0271 1299.247559 1288.205322 1275.16333 1268.2854 1271.204712 1274.203369 1277.904663 1282.802979 1290.866333 1294.910522 1297.606812 1301.794312 1304.596924 1312.195923 1318.940918 1324.761597 1325.484009 1321.92688 1320.055542 1319.161133 1316.598145 1319.163696 1325.270874 1333.710571 1343.672852 1342.901001 1328.343506 1327.250977 1340.352173 1346.664062 1347.543701 1346.373901 1343.979248 1335.423584 1327.400879 1321.694336 1313.058228 1304.994385 1314.599365 1324.436768 1332.121094 1334.408936 1334.274292 1331.142944 1325.645752 1320.756348 1316.982788 1321.377441 1328.477783 1329.739746 1328.123169 1326.019653 1324.547729 1322.839722 1321.039429 1319.66626 1320.037354 1320.469849 1320.429321 1319.328003 1315.677979 1308.470337 1299.261108 1290.85083 1290.426514 1291.678223 1296.088989 1300.654419 1304.383179 1304.991577 1304.611816 1303.774658 1302.397705 1299.604614 1298.165527 1296.846558 1295.609863 1294.274292 1292.526245 1288.551514 1284.40625 1281.186768 1281.90686 1283.306885 1284.14502 1284.449341 1284.654175 1284.962402 1284.921509 1284.53833 1283.689575 1282.553711 1281.445068 1279.613159 1278.080688 1276.442993 1274.69397 1272.689941 1270.464966 1268.159058 1266.550659 1265.467407 1264.796265 1264.176514 1262.752319 1261.008057 1259.328857 1257.194824 1252.560669 1247.214844 1244.875488 1249.827148 1255.452271 1258.238403 1258.720459 1257.69812 1261.145386 1261.332275 1255.476318 1260.351074 1263.856079 1265.22522 1266.11084 1265.131714 1263.33252 1261.853882 1260.579224 1259.932007 1259.854858 1258.501465 1257.544556 1257.909302 1256.990234 1255.677734 1254.461304 1254.588623 1254.858765 1254.555542 1253.739746 1251.623657 1249.379883 1246.485596 1243.999512 1242.45752 1242.611816 1244.669556 1250.081299 1257.42749 1263.122925 1262.599854 1251.1521 1234.93335 1218.392334 1206.391479 1194.590942 1191.075439 1187.469604 1183.331299 1181.066284 1181.154541 1181.061646 1181.550415 1184.001099 1185.96106 1185.92627 1184.92688 1180.869873 1175.039429 1194.46875 1220.082153 1216.760254 1202.615723 1194.935059 1188.545776 1181.31604 1174.266357 1166.69104 1173.007324 1186.581909 1193.62207 1202.007935 1212.183716 1221.434937 1230.258301 1238.938965 1245.670654 1249.49939 1250.085815 1248.201172 1242.084717 1237.992798 1246.27063 1254.328857 1268.157715 1288.598145 1302.504883 1321.264893 1333.387939 1342.626953 1344.957153 1349.779419 1352.570801 1344.265991 1332.942139 1327.304199 1342.559692 1357.797607 1363.598877 1357.140503 1344.00708 1322.963989 1335.553345 1351.816162 1353.525391 1345.35376 -1319.248169 1326.294922 1344.992676 1353.840698 1356.612427 1363.617554 1377.985962 1392.5802 1412.137207 1435.109009 1456.331421 1472.14978 1498.566162 1526.3302 1534.584351 1531.175049 1527.138306 1529.748657 1525.487427 1533.364136 1539.790527 1544.02478 1546.112671 1554.337402 1563.453491 1572.932373 1586.761475 1596.911865 1611.091553 1621.624634 1635.226807 1646.509155 1661.19458 1661.464966 1668.844849 1682.201294 1687.116455 1682.804321 1675.162598 1665.793579 1655.852905 1647.905884 1637.465088 1630.005615 1622.915283 1616.387695 1609.123901 1601.048706 1594.796509 1591.671875 1591.244507 1589.967285 1587.175903 1584.458008 1582.856445 1579.936768 1573.449585 1566.024902 1563.444946 1557.967651 1545.526611 1531.237915 1519.440918 1507.386841 1491.335693 1478.691772 1468.446533 1460.41748 1453.95459 1434.245117 1420.343018 1428.188721 1431.674194 1422.470337 1414.352173 1401.130737 1397.2323 1407.473389 1416.415894 1418.425781 1425.321411 1432.874146 1443.836914 1464.769409 1489.254395 1502.480591 1509.972168 1515.973145 1517.733398 1517.766846 1522.905762 1524.404663 1520.955933 1513.116333 1502.776001 1519.419067 1535.600342 1539.303711 1535.551147 1526.834106 1511.869385 1499.390625 1494.432373 1486.403809 1477.916626 1465.69043 1453.679199 1442.821045 1428.884155 1415.691772 1401.912231 1408.034668 1416.947876 1417.945801 1413.608398 1406.574707 1396.335327 1388.167358 1380.467407 1370.395996 1357.96228 1345.217163 1347.392334 1351.282593 1361.427368 1373.225464 1386.061523 1394.867432 1402.313843 1416.984985 1426.436401 1431.313721 1435.307007 1439.359863 1442.21521 1444.207275 1446.25 1448.398315 1451.121704 1454.276123 1455.802856 1455.694336 1453.961182 1448.051636 1439.281738 1433.2677 1426.512573 1422.642944 1429.642334 1436.963745 1440.84082 1442.594238 1442.516968 1441.268311 1437.524414 1430.90979 1426.202148 1423.010864 1419.818359 1415.897705 1402.830566 1395.476685 1387.577881 1378.645508 1383.509888 1384.069824 1381.417847 1377.25354 1385.848999 1394.178345 1401.812622 1408.488403 1412.972534 1419.032104 1424.937988 1433.923584 1445.859619 1462.585327 1467.994751 1468.913086 1468.763794 1466.222534 1461.454956 1453.716064 1453.259277 1452.755859 1448.954834 1443.513062 1433.796387 1415.793701 1398.450439 1396.819336 1408.116455 1420.8125 1434.763184 1447.407715 1469.997681 1481.90271 1488.771606 1495.923706 1501.101685 1510.159668 1519.583252 1528.547485 1535.658081 1542.466675 1550.236694 1553.821045 1555.279053 1554.532104 1550.241821 1544.044922 1536.463867 1525.415894 1520.043823 1515.022827 1509.19873 1502.526367 1498.77124 1501.759033 1505.479004 1510.553223 1519.697021 1527.322876 1528.549438 1526.019775 1519.175781 1511.519531 1502.491699 1487.297363 1476.271362 1461.848267 1450.842773 1446.598022 1439.854736 1440.482788 1437.437378 1434.076172 1427.281372 1429.814941 1432.026245 1442.467407 1443.418091 1438.485962 1423.692505 1413.717651 1407.987549 1401.822998 1394.953125 1389.313599 1380.671509 1376.007812 1366.637573 1363.141357 1357.954834 1349.659424 1340.990112 1329.335571 1327.580566 1327.758667 1332.546631 1341.943481 1348.679077 1348.169312 1345.299316 1345.627075 1348.3573 1352.255249 1360.340698 1363.625977 1363.602661 1366.565308 1375.392456 1381.31604 1387.169067 1394.520142 1402.360718 1409.389893 1414.718628 1416.832397 1417.514648 1417.031372 1424.966187 1435.383667 1450.114014 1463.296997 1474.102051 1486.983398 1500.483276 1519.54541 1533.654297 1544.372681 1550.484009 1549.613159 1536.241577 1516.973877 1499.897705 1497.700684 1518.167969 1532.479858 1534.279297 1524.639282 1506.926147 1493.119751 1478.470581 1469.174561 1463.86792 1456.855835 1447.951538 1441.681763 1432.437012 1425.561768 1429.19458 1434.663574 1440.806152 1447.054565 1451.53833 1454.583374 1453.709229 1451.930298 1449.491699 1446.550171 1442.517944 1437.777832 1430.824585 1424.85022 1420.74353 1421.00354 1427.628906 1439.401123 1444.845093 1448.737183 1450.121948 1449.629028 1448.374878 1446.977783 1445.387817 1443.566406 1440.953491 1435.765015 1428.858032 1426.242554 1426.49939 1427.047607 1413.956665 1404.467041 1393.367432 1385.721436 1377.718384 1373.053345 1367.257935 1361.972168 1355.80835 1350.93689 1346.436646 1341.275635 1336.238281 1331.353149 1323.707031 1316.921143 1311.305908 1306.69519 1302.223877 1311.742798 1328.225708 1333.811035 1333.236572 1331.052246 1326.850464 1321.289185 1312.998047 1306.234375 1310.213013 1313.174194 1315.647705 1318.091675 1319.183105 1319.613892 1321.51416 1325.426025 1329.112427 1337.369995 1348.81543 1356.249023 1355.237549 1353.162109 1349.219482 1347.709473 1349.75354 1355.144287 1346.558594 1335.567261 1327.40979 1319.204346 1310.759155 1304.902466 1296.980835 1282.976074 1271.943237 1271.060181 1274.922485 1277.160767 1277.535889 1279.901855 1289.291016 1292.876099 1293.308472 1293.557129 1302.943726 1311.208862 1319.889648 1328.974243 1330.750488 1327.980225 1325.651489 1319.493286 1317.437012 1322.740601 1330.364746 1340.110596 1347.121826 1344.157959 1329.807129 1333.340576 1343.811279 1348.691895 1350.020264 1347.630737 1342.855347 1329.662598 1324.664673 1319.454712 1314.432251 1311.942505 1318.93396 1325.726562 1331.728149 1338.406128 1338.546265 1332.194946 1327.470215 1322.691406 1317.272949 1325.984375 1331.626953 1333.612183 1331.827026 1330.025024 1328.084473 1325.578491 1324.700439 1324.153442 1324.535767 1324.316895 1323.006348 1319.987183 1315.327759 1304.983154 1292.417358 1290.485718 1290.565796 1294.194336 1300.328125 1305.670898 1306.921021 1307.27063 1306.855591 1305.94751 1304.443848 1301.302612 1299.630859 1298.023071 1296.399414 1294.878906 1292.901001 1289.93396 1286.957031 1284.814209 1284.816772 1285.373169 1285.846069 1286.187134 1286.568848 1287.09314 1287.367798 1287.068604 1286.046021 1284.811646 1283.255981 1281.44165 1279.293335 1277.41748 1275.579102 1273.298096 1270.530396 1268.079102 1267.018311 1266.946899 1266.727539 1267.171875 1268.113892 1266.859131 1262.285522 1258.406372 1254.325684 1251.80249 1251.392944 1254.646851 1259.251099 1262.480469 1264.81543 1267.507446 1270.279175 1268.391846 1261.426636 1267.52771 1269.508545 1270.08313 1271.177002 1270.452271 1268.493408 1266.564819 1265.375 1264.734985 1265.303955 1265.215942 1264.208008 1263.577881 1263.66626 1261.430542 1258.732178 1258.253784 1259.246094 1259.273682 1258.387085 1257.167969 1255.26355 1251.69873 1247.476685 1244.307373 1244.379883 1248.432373 1254.332397 1261.847656 1268.941772 1259.633667 1241.429565 1223.563599 1207.112793 1197.187256 1191.070679 1187.33606 1185.152588 1182.141357 1181.990234 1182.668335 1184.473877 1186.921875 1188.745972 1188.624634 1187.259521 1185.11377 1179.888184 1175.305664 1197.700806 1216.204346 1204.376465 1196.408203 1189.851196 1183.599731 1177.040039 1170.780762 1166.863892 1177.861328 1188.846069 1197.698242 1206.483032 1216.787842 1225.64624 1235.93103 1246.217285 1254.012939 1259.463745 1261.917236 1260.678833 1254.495117 1252.426758 1254.174805 1259.963989 1273.564331 1286.748047 1298.654541 1318.461304 1331.289551 1342.485352 1349.951538 1355.555664 1357.513428 1353.152222 1339.389404 1333.756348 1352.694702 1364.481079 1369.516724 1360.119263 1344.685059 1327.844849 1351.916138 1363.832764 1363.924194 1356.94751 -1309.90271 1319.72998 1331.767456 1337.333862 1337.857544 1349.921021 1365.792114 1388.187744 1420.324219 1437.077515 1458.977173 1470.509521 1489.782471 1508.735962 1517.304321 1508.396851 1509.653198 1507.290161 1509.028198 1515.960449 1520.0448 1518.753906 1523.206665 1535.809692 1550.103394 1557.779663 1573.806641 1590.297119 1598.224976 1618.037964 1629.380859 1639.72937 1647.843872 1651.442505 1660.184937 1673.490479 1683.617065 1680.086548 1672.50415 1664.229614 1656.097168 1648.816406 1639.104614 1630.991821 1624.332764 1616.717529 1609.000977 1603.156128 1598.242432 1597.541138 1596.333984 1598.010376 1600.461426 1598.635864 1592.585327 1588.025635 1580.735107 1572.946167 1567.227051 1556.68689 1539.197388 1522.643433 1511.925415 1501.795532 1486.106445 1476.10791 1467.215576 1457.28772 1438.916992 1438.6875 1450.495605 1448.493652 1437.611816 1422.366577 1411.877441 1398.401367 1406.135498 1421.040649 1429.244019 1428.483887 1431.586304 1438.108887 1445.359985 1455.956909 1477.385864 1496.833618 1509.334961 1520.176514 1528.753662 1531.029297 1537.191528 1538.194214 1533.57605 1524.621826 1513.488037 1523.513062 1541.620483 1542.801025 1539.2146 1532.166626 1526.383911 1516.616089 1507.164062 1497.476562 1485.822632 1470.819824 1455.937988 1442.986328 1429.475708 1421.606323 1424.447754 1428.651367 1429.387329 1427.334106 1420.910156 1410.725464 1398.017822 1388.793701 1381.219238 1369.718994 1352.453125 1346.157837 1351.956665 1354.620361 1367.034546 1376.586182 1388.947754 1396.263306 1404.420044 1421.079834 1430.334717 1435.181519 1438.802002 1441.6698 1444.306152 1446.602783 1448.490723 1450.335938 1452.79541 1456.25415 1457.770264 1457.396851 1454.953003 1450.826172 1442.051025 1434.508423 1426.597412 1431.253174 1436.583374 1442.042603 1445.717285 1447.55957 1448.076416 1447.718018 1444.760376 1438.887451 1432.100342 1426.197021 1422.300781 1417.00354 1406.522461 1396.328125 1388.869629 1389.905884 1390.300171 1389.535278 1392.464844 1389.681274 1383.097656 1388.893799 1397.137695 1404.429443 1415.014771 1421.538086 1428.582031 1434.128906 1443.065918 1458.863159 1468.042114 1470.908569 1472.341431 1470.270264 1464.865234 1462.967285 1460.573975 1457.103516 1452.973999 1445.532593 1433.077637 1415.190186 1398.425781 1399.871826 1410.006104 1421.105469 1433.507568 1451.268066 1474.196899 1486.679565 1499.202026 1508.112671 1511.654419 1518.3302 1530.096069 1539.603516 1546.646484 1552.34668 1556.754883 1559.558472 1561.154541 1561.560791 1559.961914 1548.396606 1538.573853 1529.754272 1522.655396 1517.107056 1510.985718 1504.452148 1499.084595 1502.34436 1507.072388 1510.246094 1519.71936 1526.367798 1526.433716 1521.988647 1515.658203 1508.737183 1500.210693 1489.642578 1478.606934 1465.286987 1453.801392 1442.918091 1433.182495 1432.71106 1433.348145 1434.53894 1438.237427 1442.714478 1446.61377 1448.096802 1448.054932 1442.943359 1432.855103 1422.113892 1410.451904 1401.886475 1393.268799 1387.165527 1382.491821 1378.196655 1367.59375 1357.721802 1351.792847 1346.932129 1340.064331 1329.377808 1330.314575 1330.063965 1329.209229 1335.129028 1338.43457 1342.321045 1346.89978 1351.308594 1352.078857 1352.247192 1351.582397 1355.17981 1362.611938 1372.948486 1380.560791 1383.547485 1387.437988 1393.279419 1403.409912 1411.536743 1417.367554 1420.419312 1424.267578 1429.085815 1434.175537 1436.846436 1439.990479 1450.293213 1468.502686 1481.812622 1496.490356 1512.209351 1532.994751 1546.59436 1553.260986 1554.483276 1545.862671 1525.379028 1505.321167 1519.632568 1534.291016 1542.547363 1540.896606 1527.449219 1510.905762 1496.176025 1480.120117 1469.774658 1460.608887 1458.966309 1450.547729 1445.564087 1436.26355 1427.918823 1434.299438 1440.053467 1448.348877 1456.705933 1463.966431 1462.232056 1458.2229 1454.881592 1451.607056 1447.222778 1441.93811 1435.848999 1428.855469 1424.609131 1425.483154 1424.70874 1435.827271 1444.946411 1451.225464 1453.607788 1454.087524 1453.214478 1452.462402 1450.949097 1448.072021 1444.845947 1441.90686 1436.625122 1426.22998 1421.806274 1419.033813 1420.012451 1415.130005 1404.576538 1393.546021 1386.831665 1379.360352 1376.789917 1370.802002 1365.752197 1359.502319 1353.734131 1347.49939 1342.205811 1337.323364 1332.866211 1326.905029 1318.235474 1311.463257 1305.549194 1306.002441 1317.979858 1328.709351 1338.030518 1335.999268 1332.57605 1327.442993 1318.062744 1315.971191 1314.913696 1315.880249 1315.599854 1316.766357 1319.865112 1322.582153 1324.562988 1326.661133 1327.813354 1330.183472 1336.046387 1343.996948 1355.072998 1355.094727 1353.231323 1351.074463 1349.124512 1349.052856 1350.749512 1343.185181 1330.766235 1321.811646 1315.306763 1308.654419 1295.975586 1280.572998 1274.511963 1270.939575 1279.122314 1278.913574 1280.787476 1278.968262 1283.865845 1294.113159 1296.447388 1298.24353 1302.287598 1308.128906 1315.838745 1321.781738 1328.540894 1333.60083 1332.964111 1330.407471 1322.787598 1318.730835 1325.840698 1333.293701 1341.600708 1353.087036 1349.30481 1337.755493 1339.755615 1347.167358 1351.567261 1353.033203 1349.780273 1343.533569 1333.748047 1324.19873 1316.749634 1316.986084 1316.612915 1319.671875 1328.645874 1335.899414 1342.425415 1342.228271 1335.61438 1329.653931 1325.898926 1325.446167 1330.52832 1337.968018 1338.974609 1336.177612 1333.853516 1330.855225 1328.128296 1327.624634 1327.999146 1328.739746 1328.749756 1326.596191 1320.345337 1312.557861 1299.821533 1290.342773 1290.377563 1292.34082 1298.320801 1304.760254 1307.664062 1308.939331 1309.112183 1308.707031 1307.73584 1306.183594 1302.824219 1301.064697 1299.009888 1296.711182 1294.521362 1292.298462 1290.493164 1288.799072 1287.598022 1287.323486 1287.384888 1287.567505 1287.751221 1288.341675 1289.306519 1289.994995 1290.096313 1289.29187 1287.348145 1285.010742 1282.757935 1280.529419 1278.857666 1276.976807 1274.755615 1271.915405 1269.352783 1268.801758 1269.070679 1269.036011 1269.743164 1270.253296 1269.079712 1263.962769 1258.357788 1255.087769 1255.745117 1255.531128 1257.333252 1262.882812 1266.786987 1270.401611 1274.592651 1275.846436 1269.929443 1268.979126 1272.593994 1274.006714 1274.765259 1275.735718 1275.88623 1274.203735 1272.13269 1269.916016 1268.466797 1270.384277 1270.898804 1269.914673 1268.600342 1270.299927 1269.011719 1266.46106 1264.664551 1264.297729 1263.790405 1262.513916 1260.862915 1259.124268 1256.941162 1254.118286 1251.113159 1250.626709 1252.960449 1257.645752 1265.913086 1268.213867 1248.915283 1230.264893 1211.119751 1192.738159 1188.997192 1185.518188 1183.170044 1182.362915 1182.22876 1183.7948 1186.802124 1190.597656 1193.641846 1193.729004 1191.257935 1188.031982 1183.996704 1177.497192 1180.431152 1200.635986 1205.509644 1199.188599 1191.819092 1185.226685 1179.149048 1172.459351 1167.553223 1168.684204 1175.920532 1189.510132 1200.701416 1211.249146 1221.56189 1228.869873 1239.899414 1252.017212 1260.938721 1268.112915 1273.699341 1275.308228 1271.937988 1272.591064 1272.093994 1268.266113 1277.456787 1295.928467 1307.675049 1317.877686 1327.025391 1336.047119 1348.426025 1358.817505 1363.186401 1361.821289 1349.322388 1341.329346 1360.374512 1372.683228 1373.998413 1363.185181 1345.557129 1341.560303 1363.66687 1372.478149 1372.097046 1366.188721 -1302.904663 1311.473022 1316.125854 1325.222046 1338.122559 1358.52356 1373.045776 1390.552734 1414.802612 1431.973267 1448.311646 1465.760742 1474.164429 1485.782593 1491.454224 1489.723511 1491.247192 1490.17688 1493.264771 1502.364502 1504.965698 1505.357666 1511.819336 1519.012329 1536.985962 1550.853882 1565.997314 1586.241333 1599.040405 1614.798218 1624.45752 1633.535889 1639.82312 1646.942017 1659.987183 1668.837402 1676.41687 1675.541016 1669.52478 1662.577515 1655.385742 1648.73584 1640.192261 1632.156006 1624.967651 1618.212891 1610.964355 1610.911255 1612.062866 1607.98877 1604.06897 1604.571045 1604.003418 1601.790283 1597.868164 1592.260132 1586.948853 1577.967285 1561.701782 1544.211304 1527.825317 1512.657227 1502.269897 1493.292603 1481.14502 1471.769775 1464.610352 1451.163086 1445.844604 1461.556763 1461.368774 1451.026611 1434.229614 1419.548218 1408.233643 1398.932495 1415.242554 1427.658081 1436.949219 1439.651001 1436.769897 1440.539062 1448.045654 1460.927368 1476.914551 1493.328491 1512.689087 1522.911133 1538.115601 1543.150024 1545.794189 1547.946777 1546.187134 1538.902954 1526.032471 1531.054932 1545.78772 1548.880249 1544.189087 1539.904541 1534.752075 1525.799805 1512.480957 1499.643066 1484.873657 1472.080444 1457.93457 1444.479858 1438.03833 1436.731079 1436.129272 1436.76062 1434.64856 1430.51355 1424.006836 1412.031494 1398.424805 1389.046387 1380.702393 1369.991943 1348.540894 1350.327271 1356.315674 1360.249268 1368.674072 1379.555908 1390.753906 1397.779175 1408.769531 1425.263062 1435.058594 1439.932983 1442.354248 1444.692749 1446.991455 1448.824097 1450.835083 1453.575439 1456.763306 1459.603882 1460.564941 1459.828857 1457.328857 1453.56189 1445.733032 1437.229736 1431.463989 1438.707764 1442.893555 1447.861572 1450.978394 1453.427368 1453.830078 1454.463013 1452.891235 1446.730225 1439.529419 1430.900513 1424.595947 1417.911133 1407.516479 1400.451172 1397.637207 1398.479736 1397.403442 1397.100586 1400.662598 1402.587402 1395.750122 1388.692139 1396.199463 1410.413818 1419.678955 1427.150024 1437.353027 1443.131104 1448.657593 1458.68689 1466.833618 1472.301514 1475.544067 1475.98999 1473.008789 1469.139038 1465.593384 1461.022583 1454.398315 1442.609009 1429.861816 1411.925415 1398.598511 1401.493286 1412.566162 1425.24353 1437.757935 1456.087646 1474.765503 1492.236694 1507.629883 1515.830078 1521.781616 1531.878662 1541.357544 1548.322632 1554.533813 1558.703369 1564.005005 1570.79126 1575.296875 1570.985474 1565.151001 1561.527954 1546.311035 1535.552124 1525.128906 1518.116333 1512.71521 1508.375732 1503.54126 1507.100464 1509.985596 1511.577759 1512.806274 1518.740967 1518.798218 1514.868286 1510.192505 1504.732544 1500.193115 1492.796265 1485.843872 1473.515625 1454.77478 1438.852295 1426.200684 1424.164551 1429.246948 1433.909424 1441.998901 1447.411621 1456.709473 1456.976196 1455.102783 1449.199829 1439.057983 1429.156006 1411.613892 1401.085815 1392.415771 1384.279419 1376.942749 1370.002563 1363.98877 1357.219482 1351.116821 1345.424194 1338.631104 1329.046753 1331.193237 1331.227661 1329.19104 1333.293823 1340.71875 1349.449585 1354.979614 1357.310669 1358.168945 1357.724609 1356.528809 1354.353149 1362.81189 1374.72522 1381.538208 1387.170898 1390.841797 1392.590454 1403.49939 1410.722046 1416.864014 1422.568115 1431.654297 1444.625732 1450.320923 1453.128662 1454.636963 1453.998901 1462.349243 1474.57666 1493.348999 1508.805054 1530.22229 1545.27063 1554.62085 1557.508667 1550.893677 1529.710815 1511.402832 1532.356934 1545.661011 1551.911743 1547.99939 1529.103516 1513.057861 1498.447998 1481.474365 1475.02002 1472.619873 1466.546143 1457.248779 1449.524658 1441.12793 1435.105103 1441.342773 1448.681274 1459.216675 1468.340454 1470.618164 1466.519165 1461.655762 1457.123657 1452.74646 1447.366089 1441.729736 1436.753784 1430.256714 1429.723267 1431.252808 1433.283447 1440.416748 1449.152466 1454.41272 1456.471436 1457.086426 1456.223877 1454.839233 1452.151611 1448.456909 1444.327637 1441.070068 1435.710938 1427.46521 1417.427368 1412.186768 1413.060425 1414.880737 1407.640869 1399.936157 1391.296875 1385.071045 1380.978516 1376.40332 1369.044067 1361.362427 1353.834839 1346.898315 1342.210327 1336.894653 1332.614746 1327.442627 1317.927979 1310.397339 1306.331421 1310.779785 1319.007446 1334.351562 1342.528931 1337.223755 1332.310913 1327.815186 1319.000854 1319.655884 1320.649414 1319.97876 1318.636719 1317.093628 1321.567017 1326.275513 1329.395142 1331.263428 1332.760498 1337.14856 1341.00061 1346.08313 1354.988647 1356.054443 1354.443848 1352.396851 1350.716064 1347.587891 1345.024292 1341.269531 1328.771484 1316.910034 1309.779175 1304.374878 1293.221313 1273.525513 1272.175903 1278.436157 1286.055542 1292.134888 1279.559082 1279.146118 1284.32959 1293.193481 1296.67041 1300.636841 1306.341553 1313.415039 1320.637939 1326.592041 1333.990723 1339.423828 1336.910889 1333.191406 1327.020996 1324.559448 1327.759155 1334.339111 1342.49707 1356.072998 1355.570801 1341.170654 1341.935425 1350.360962 1355.315796 1355.602539 1351.065552 1342.32373 1333.095825 1322.889404 1320.383301 1326.539551 1323.169434 1323.657227 1329.905884 1338.85791 1344.553467 1343.827759 1338.972412 1331.82373 1327.809082 1328.282837 1332.963745 1339.52002 1342.303467 1340.064819 1338.24231 1334.631104 1330.739624 1330.195312 1330.899536 1330.954346 1330.889893 1329.213135 1320.084839 1310.980591 1291.600098 1290.491333 1291.06543 1296.11145 1302.694946 1307.450928 1310.012939 1311.081909 1311.052246 1310.606689 1309.546875 1308.123291 1304.466919 1302.416138 1299.760254 1296.6521 1293.973633 1291.853516 1291.015137 1290.199219 1289.428833 1289.184326 1289.215454 1289.190063 1289.287598 1289.865967 1291.164185 1292.394409 1292.947632 1292.476318 1290.230225 1287.307251 1284.549438 1282.158203 1280.265625 1278.593994 1276.587891 1274.589233 1272.561523 1271.537598 1271.364502 1271.548584 1271.605957 1270.959839 1268.911621 1264.793701 1259.735962 1259.429077 1261.069092 1262.367432 1262.956299 1266.359497 1272.760864 1279.859741 1282.496216 1281.803711 1278.292847 1278.262085 1278.336304 1277.767944 1278.509888 1280.521362 1281.674805 1281.209106 1279.133423 1276.530029 1275.048828 1274.851807 1275.093994 1274.698853 1273.938965 1273.853149 1272.916138 1271.378418 1269.652344 1269.718872 1268.537354 1265.973267 1264.552124 1262.487061 1260.437134 1258.448608 1256.925049 1256.439819 1257.524292 1261.193604 1269.008545 1255.331909 1237.531372 1217.734375 1192.835693 1183.570435 1183.440918 1183.450928 1183.48291 1183.889526 1185.531494 1188.596924 1192.691528 1196.62207 1198.02063 1196.79541 1192.611816 1187.592041 1181.445801 1174.09668 1186.077271 1199.408325 1199.572632 1194.348999 1187.944458 1181.383789 1175.975464 1170.162598 1167.788452 1173.412231 1179.564575 1184.125244 1201.209106 1214.996948 1225.369995 1235.106079 1247.965576 1259.128296 1266.671021 1276.776978 1283.918579 1288.583008 1285.834229 1289.194214 1286.248779 1285.993896 1286.792603 1296.376221 1316.978394 1331.340698 1341.700073 1341.81897 1342.126709 1359.344482 1367.604492 1369.337158 1360.179688 1350.805054 1369.960083 1381.932373 1379.229736 1365.348755 1348.779785 1353.136108 1372.22168 1380.824707 1379.93811 1377.026367 -1299.169556 1304.86731 1315.705566 1323.345093 1337.80188 1355.585693 1368.124268 1382.84314 1402.655151 1416.591553 1429.527222 1444.25647 1459.389282 1467.910767 1470.281738 1469.861816 1467.943481 1470.363647 1472.198486 1481.170044 1486.132324 1491.611084 1502.162476 1514.005127 1527.385986 1546.344116 1559.218262 1578.419922 1595.840942 1610.404541 1618.456177 1627.379883 1635.803467 1642.395386 1654.05896 1663.978271 1673.440063 1672.536133 1667.53186 1660.613525 1654.373901 1647.777588 1640.059326 1633.460083 1626.821045 1623.078613 1623.324951 1621.244385 1618.345459 1614.119385 1610.97937 1610.108276 1608.353394 1604.210449 1599.612427 1593.740723 1588.285645 1572.847656 1557.588013 1536.263672 1517.832397 1504.47229 1494.455078 1484.276733 1473.887695 1467.137695 1456.470337 1451.033081 1469.042847 1477.462646 1462.251587 1444.408569 1425.506226 1413.805542 1403.53418 1404.71106 1415.846313 1427.167358 1441.160645 1449.931274 1448.841064 1447.782349 1454.267578 1468.644287 1483.664917 1502.939087 1517.619873 1529.643188 1541.421631 1549.310181 1552.593872 1554.574097 1554.372559 1553.136963 1547.365845 1539.650146 1551.648071 1553.443726 1550.812622 1546.702393 1540.174072 1529.129028 1513.87915 1497.407471 1490.137817 1482.697021 1465.233643 1459.5 1454.693359 1452.187256 1449.19043 1443.506348 1438.968628 1432.643311 1423.455566 1410.29187 1396.864258 1387.676514 1378.72644 1368.138794 1348.639038 1354.988037 1358.247192 1362.304199 1368.921875 1381.465454 1391.445435 1399.994751 1415.703369 1428.176758 1440.443726 1443.865723 1446.430664 1448.279053 1449.366577 1451.150757 1454.294434 1457.961792 1461.787842 1463.373901 1463.317139 1462.180786 1459.531128 1453.976685 1447.289917 1439.090454 1436.380859 1443.124756 1448.707764 1454.275635 1459.015015 1462.295166 1462.262085 1459.895752 1456.469116 1451.893799 1444.245361 1437.102905 1427.615601 1414.620972 1410.383301 1406.262451 1408.565063 1407.104248 1404.553223 1403.277466 1406.785156 1407.910889 1405.892212 1397.407227 1398.068726 1413.249146 1422.060791 1431.606689 1446.960815 1455.682373 1462.757812 1465.599121 1468.644653 1473.633301 1477.89624 1481.378662 1479.286743 1473.858765 1469.117554 1464.360962 1455.288574 1443.99353 1426.584595 1410.880249 1399.498779 1406.467163 1413.678833 1425.931763 1440.811768 1457.59314 1473.736572 1492.936279 1509.357788 1519.157837 1528.589111 1540.372925 1548.123047 1555.901733 1562.530029 1568.237061 1575.078369 1574.866333 1565.842773 1562.393921 1560.586914 1555.973755 1548.409424 1537.88562 1525.533325 1520.139893 1516.085449 1512.851807 1509.643066 1512.705933 1513.142822 1512.242188 1510.778809 1510.749756 1509.405884 1506.477661 1503.152832 1498.615234 1493.215576 1488.156006 1481.783447 1471.963501 1454.997437 1438.259399 1425.03125 1412.914917 1418.445435 1424.23999 1428.080078 1435.846924 1455.51123 1463.580811 1459.908691 1450.400757 1440.385132 1425.915894 1411.091553 1398.912964 1389.884033 1383.083984 1374.803467 1363.758423 1356.856445 1352.443848 1347.729614 1343.109863 1334.773682 1332.07251 1336.000244 1333.144531 1329.85791 1334.701172 1342.917847 1354.715332 1358.680054 1362.694702 1364.559448 1364.378296 1362.041626 1357.632446 1360.730835 1371.452393 1380.487793 1388.848999 1393.445068 1396.803711 1400.945801 1407.556885 1413.954956 1423.335815 1440.700439 1455.620361 1465.376953 1467.945068 1469.230103 1469.393188 1465.838989 1473.207275 1488.463623 1504.472656 1527.012329 1545.175049 1557.382568 1562.615356 1553.855835 1537.029907 1526.277466 1538.734009 1554.401489 1559.459595 1552.282959 1532.699097 1519.536743 1505.937012 1488.315552 1488.231445 1484.314087 1475.06897 1462.34082 1453.123901 1442.321777 1439.938599 1447.81189 1457.853638 1468.769287 1476.643311 1476.845093 1470.552612 1463.316284 1457.832153 1452.406616 1447.721313 1443.010864 1437.636475 1438.212402 1438.276001 1440.318115 1441.669189 1445.179565 1451.40918 1456.039795 1459.509277 1461.234619 1459.577393 1456.598633 1453.292847 1449.240967 1440.473999 1435.164673 1429.469971 1423.342407 1416.755493 1408.115112 1401.525879 1401.80249 1403.561035 1399.174438 1391.518555 1384.876953 1380.672607 1376.521851 1367.85791 1359.616089 1351.014526 1343.553223 1338.316528 1333.626953 1329.581177 1317.366333 1312.009277 1309.039429 1310.524658 1316.304077 1321.600342 1341.377563 1341.383545 1337.15332 1331.968506 1328.321045 1326.612183 1324.978027 1325.625977 1325.387573 1324.434326 1323.383545 1324.589722 1329.0896 1332.603394 1335.673584 1338.730225 1343.018555 1347.177002 1353.171997 1356.94043 1357.255493 1356.665039 1354.513794 1354.059692 1347.843384 1341.085083 1332.672241 1324.511719 1316.400513 1308.099976 1290.457397 1286.449829 1275.686035 1276.283936 1282.644775 1292.249023 1296.314697 1279.088623 1279.461548 1284.561279 1290.653442 1294.086792 1299.68396 1306.625244 1315.613525 1321.59729 1328.421753 1342.072144 1345.668579 1340.385742 1335.11145 1329.438721 1326.442139 1328.541626 1334.698608 1342.574829 1356.130127 1357.425049 1345.604126 1343.138794 1355.514038 1357.189819 1356.300293 1347.593262 1337.814331 1329.384644 1327.426758 1334.486572 1334.45813 1329.752441 1327.001709 1331.187622 1341.222168 1349.004028 1346.143677 1340.93689 1332.755249 1328.319214 1330.149048 1334.719604 1339.560059 1343.363892 1343.575806 1342.624512 1339.397949 1334.354614 1332.184204 1332.005859 1331.609009 1328.607788 1323.058472 1315.830688 1307.367432 1293.984131 1290.276978 1294.558472 1300.857666 1307.231079 1311.630615 1313.206543 1313.427856 1313.205811 1312.674316 1311.767334 1310.336914 1306.348022 1303.97876 1300.318115 1296.008545 1293.012329 1291.992676 1292.024292 1291.787964 1290.835815 1290.587402 1290.53833 1290.513794 1290.630493 1291.131104 1292.683472 1294.136719 1294.733276 1294.200439 1292.575684 1289.522461 1286.62561 1284.095337 1282.24585 1279.864136 1278.11731 1277.034546 1275.738159 1274.61499 1274.240112 1273.727051 1273.137085 1271.444946 1268.795044 1266.03125 1266.302124 1266.129639 1268.790283 1269.810913 1267.275635 1270.764282 1279.562744 1285.177612 1287.312622 1286.386963 1284.730103 1285.77478 1285.066284 1281.820557 1283.040283 1285.748901 1286.5896 1286.163452 1284.364746 1282.891235 1279.797852 1279.67627 1280.009766 1279.442383 1277.775757 1277.868164 1277.18396 1276.010986 1274.650269 1273.394531 1271.694092 1269.612549 1267.965576 1265.568359 1263.105957 1260.942139 1259.082764 1257.322754 1256.338745 1259.675659 1257.617554 1245.389038 1226.096436 1208.081177 1185.31311 1185.105957 1184.934814 1184.737793 1185.232422 1186.709351 1189.562744 1193.091187 1196.952881 1200.01062 1200.993164 1198.178467 1192.772949 1185.76416 1175.888916 1174.501465 1186.466797 1197.817749 1195.867065 1190.622925 1184.613159 1178.424316 1173.583374 1168.567993 1170.442017 1180.210571 1187.754639 1190.033813 1197.0979 1216.059082 1228.581543 1242.074341 1256.481201 1265.737305 1274.864746 1285.351074 1294.62561 1300.709229 1302.922607 1304.916992 1303.595459 1303.763672 1306.348511 1304.716064 1313.776855 1335.263794 1347.422607 1354.157471 1354.335938 1360.163574 1371.268433 1374.112183 1369.409424 1361.135254 1380.122559 1386.268555 1382.724243 1369.590454 1351.907349 1364.108643 1378.889648 1384.539917 1386.096924 1386.016846 -1304.100586 1305.00415 1310.043091 1316.591919 1327.615845 1338.872192 1353.38147 1372.946777 1386.245361 1396.762817 1409.756836 1426.19519 1436.903442 1448.041992 1447.907227 1444.142456 1445.430176 1447.793213 1454.250488 1460.606934 1464.265015 1471.508911 1490.171875 1505.695923 1517.867065 1536.068848 1552.535767 1569.666748 1586.693604 1601.360596 1612.984131 1620.977661 1629.530762 1637.380859 1647.052612 1655.85083 1666.575439 1669.777832 1666.703125 1661.43103 1654.795166 1646.393433 1639.350464 1633.317383 1632.691895 1631.85498 1630.878174 1627.572144 1623.531494 1619.595337 1616.364746 1614.036011 1611.588745 1606.167725 1599.720825 1592.293579 1584.663452 1565.120117 1552.637573 1533.080322 1514.467529 1502.503418 1491.856567 1479.136841 1467.255127 1461.271973 1462.193359 1466.151978 1474.818726 1461.779297 1446.742676 1432.08728 1414.148804 1405.765381 1403.135498 1418.154175 1426.549072 1428.849731 1440.359985 1456.499023 1460.11377 1461.876953 1461.413696 1470.356445 1485.453247 1500.695679 1517.807007 1536.066162 1545.710938 1553.500732 1558.321289 1560.254517 1561.217896 1560.418213 1557.005127 1547.138428 1557.915527 1560.994019 1557.809082 1551.971191 1542.317871 1531.735596 1522.572021 1514.972778 1505.490356 1489.64978 1481.349487 1480.457886 1474.407715 1468.123779 1459.954834 1448.404907 1442.858643 1435.243896 1423.792725 1407.341797 1393.910645 1383.950439 1374.38208 1364.678711 1355.06897 1352.248291 1358.797485 1364.362183 1373.058838 1383.72644 1394.041626 1404.35498 1420.266113 1433.820312 1443.461792 1448.493652 1451.12854 1452.045166 1452.901245 1455.302368 1458.925537 1462.63562 1465.349365 1466.131226 1465.784058 1464.869385 1462.240234 1456.418945 1450.498657 1440.749268 1440.912231 1449.020264 1454.987305 1462.363403 1467.364868 1470.073242 1469.155884 1464.777588 1458.855103 1452.190552 1446.113403 1439.311523 1430.885254 1418.36792 1413.65625 1418.67395 1419.213867 1414.785645 1411.019531 1410.789673 1413.324097 1414.444458 1411.166138 1405.571777 1397.85376 1411.59314 1423.014893 1436.612793 1449.959839 1456.452393 1463.497803 1466.680054 1469.542236 1473.366455 1479.387085 1487.206055 1487.333862 1477.466309 1471.474854 1465.229126 1456.459229 1446.936157 1433.869141 1412.37207 1401.440918 1410.044189 1421.606567 1433.368164 1445.951172 1459.433472 1474.214233 1487.363037 1505.631348 1519.280762 1533.275391 1544.064331 1554.577881 1563.586792 1571.172485 1575.640503 1570.346802 1560.486572 1553.64624 1547.53186 1545.031738 1544.147705 1540.7854 1533.736084 1524.300537 1520.779907 1517.323608 1514.612305 1513.838623 1513.997437 1513.751831 1513.508179 1509.66272 1504.743408 1498.836304 1498.075684 1496.089233 1492.653442 1487.029297 1478.090698 1472.868042 1464.220215 1450.718384 1436.213257 1419.085938 1410.38208 1408.318481 1409.082397 1411.428101 1423.935059 1439.733765 1447.994873 1445.942383 1439.764404 1429.473633 1418.876831 1407.629517 1397.306641 1388.700806 1381.807739 1371.462769 1362.682983 1354.283691 1347.362671 1343.707275 1336.585938 1338.107666 1343.011108 1342.358032 1338.922607 1333.116699 1334.540649 1340.650879 1354.975586 1362.344727 1368.409912 1375.862061 1374.877563 1369.124268 1363.391479 1360.113281 1365.919678 1376.272461 1385.742554 1392.240356 1396.915771 1400.8927 1405.145996 1414.724609 1425.574585 1441.526978 1464.538452 1477.910034 1488.290405 1493.001343 1493.55603 1494.396484 1496.2052 1502.942017 1512.84021 1527.675903 1549.459717 1561.905029 1566.112183 1560.267822 1552.707642 1544.383911 1553.133667 1565.958496 1571.069946 1564.075439 1546.368164 1535.675171 1525.337769 1510.416748 1501.426025 1488.021118 1476.631714 1464.554443 1454.678467 1443.63855 1444.724609 1455.014648 1466.366699 1476.512939 1480.073486 1479.167236 1473.339966 1463.889282 1458.546143 1453.092773 1451.326782 1446.988525 1441.784058 1443.935547 1445.811646 1447.704346 1448.0 1448.291626 1452.752319 1457.49939 1462.072021 1464.675049 1461.895508 1457.097778 1454.443237 1449.888916 1440.823975 1429.42627 1423.139526 1416.793213 1411.902588 1404.136475 1398.20752 1391.973999 1392.865234 1390.862183 1384.938965 1379.335815 1373.573608 1367.779053 1360.554565 1352.089722 1338.87085 1331.459839 1327.764893 1321.615479 1314.197632 1315.554199 1317.091797 1313.408081 1314.659668 1317.438232 1328.923584 1343.988892 1341.583496 1339.350586 1337.175903 1333.972534 1331.048096 1330.494629 1330.987549 1331.164551 1330.646851 1328.669189 1327.619629 1330.404785 1334.935181 1339.838867 1344.268677 1347.998901 1352.196045 1355.394775 1357.325928 1357.38147 1357.599731 1356.022339 1355.676025 1347.864746 1337.759888 1327.826172 1318.176025 1311.854248 1306.619995 1290.109985 1282.924561 1275.8479 1278.233887 1287.563965 1307.111328 1294.627686 1279.948853 1279.351685 1291.583374 1292.82251 1290.984863 1298.548584 1306.273804 1315.293579 1321.92395 1328.94873 1344.851074 1355.673828 1346.546265 1339.151001 1332.249146 1327.249023 1328.491211 1334.508911 1343.394165 1354.692383 1356.72522 1352.964722 1348.974243 1356.95813 1358.214233 1355.247437 1346.240479 1336.830933 1328.079956 1333.306519 1344.456055 1341.311523 1332.073486 1329.987671 1333.68042 1343.291016 1354.756592 1348.199707 1340.990845 1334.391113 1329.056519 1331.515625 1335.857056 1341.040405 1343.880737 1343.984619 1343.047485 1337.087769 1330.833618 1330.682373 1330.24939 1326.512207 1321.299316 1316.22583 1307.035767 1300.639404 1291.542725 1293.097656 1305.298218 1308.73999 1316.433228 1316.590088 1315.981201 1315.733032 1315.173584 1314.800293 1314.199097 1312.804688 1307.726562 1305.110107 1299.930786 1294.900757 1292.587769 1292.486816 1293.636353 1293.56311 1292.690186 1291.801147 1291.530884 1291.611084 1291.735107 1292.338623 1294.095337 1295.421265 1296.052368 1295.476196 1293.827881 1291.066162 1288.325684 1286.094482 1283.685791 1281.175415 1279.894165 1279.388184 1278.079956 1277.299927 1276.887695 1276.484497 1275.533691 1273.868164 1270.452881 1268.403564 1270.550903 1272.147949 1275.73291 1277.159668 1272.13562 1274.75061 1283.160767 1290.614258 1293.109497 1292.177979 1291.368164 1293.72522 1293.899658 1291.564209 1291.418579 1291.782593 1292.476074 1291.092773 1290.15271 1288.426758 1284.859863 1284.967041 1285.267822 1283.451538 1281.662476 1281.89917 1281.630859 1280.552856 1278.709839 1277.022339 1275.541504 1273.380737 1271.020386 1267.824219 1265.290527 1263.159546 1259.703003 1256.137329 1253.393921 1254.138794 1250.529053 1239.978271 1224.992798 1204.683472 1185.334351 1185.647827 1185.858643 1186.110352 1187.151123 1189.176147 1192.441406 1195.294556 1202.58313 1206.299072 1205.430176 1200.242676 1193.562012 1184.901611 1173.322632 1174.616333 1181.200806 1189.150635 1189.548584 1185.880859 1179.584229 1172.830811 1169.40332 1170.211426 1179.460815 1191.407593 1201.94104 1203.27356 1204.872192 1212.744507 1229.637939 1244.601074 1258.924194 1270.364624 1279.979126 1288.937256 1300.754517 1308.854492 1315.030518 1318.192749 1318.311279 1319.879272 1324.117676 1326.793701 1322.570801 1331.665894 1352.03833 1361.80127 1368.207275 1369.280884 1378.18811 1380.952148 1378.834595 1370.848389 1385.08667 1392.37439 1388.092529 1374.765991 1361.322144 1371.078491 1383.079956 1390.751953 1393.970825 1395.277466 -1314.039917 1316.35437 1318.038086 1318.600708 1320.667603 1329.998413 1345.842773 1362.572876 1375.043213 1382.292603 1398.997437 1411.262695 1418.577637 1422.128906 1423.08374 1422.929199 1421.350586 1424.141968 1437.60791 1444.857666 1451.240234 1460.124023 1476.291748 1490.532349 1504.240356 1518.412476 1539.123169 1555.62854 1576.354492 1589.268799 1604.5448 1614.759888 1620.869873 1629.348755 1642.489258 1653.681885 1662.240723 1665.7677 1664.705322 1661.594727 1654.092407 1645.556519 1641.405884 1636.955688 1639.283813 1639.686279 1636.898682 1633.316406 1628.462158 1623.622681 1619.929077 1616.490112 1611.821411 1605.568604 1599.317993 1586.986938 1576.656738 1558.118896 1543.820312 1528.144531 1512.75354 1497.792114 1485.569458 1473.921997 1468.76709 1477.37915 1476.607666 1471.47583 1462.394287 1447.475342 1435.776978 1418.276489 1406.331543 1410.627686 1419.592163 1428.212646 1439.002808 1444.951294 1447.77478 1463.834717 1473.666138 1478.353271 1475.945312 1475.443726 1486.332642 1499.4198 1513.474121 1537.980713 1547.778198 1558.447632 1564.511841 1567.989868 1570.09436 1571.34729 1572.38623 1568.839111 1566.052856 1570.239258 1564.539062 1557.147827 1547.920532 1539.837402 1532.544067 1525.74353 1512.46936 1501.253906 1503.841064 1496.518188 1483.359253 1474.340942 1462.338989 1448.695312 1442.680664 1435.374878 1425.418213 1405.441284 1388.880615 1378.888428 1370.215576 1362.618652 1356.27832 1350.131348 1360.028198 1369.202759 1380.955688 1391.728882 1398.80542 1411.173462 1423.637329 1438.63562 1448.651489 1452.976318 1455.08728 1456.513306 1457.784058 1459.921021 1462.783813 1465.619507 1467.759399 1468.466187 1468.184814 1466.889526 1464.320679 1458.780273 1453.306763 1444.036377 1445.632324 1453.71936 1462.120239 1470.032715 1475.871704 1477.718506 1476.109497 1466.316528 1460.769653 1453.54187 1449.47168 1442.953735 1434.923584 1425.958374 1427.602173 1430.383911 1429.335449 1423.072144 1416.97937 1416.544067 1420.188965 1421.840942 1417.866943 1411.542236 1401.136963 1408.5177 1421.937378 1436.711426 1446.371704 1453.369751 1461.463867 1465.923828 1469.096802 1472.638184 1475.825317 1482.137939 1484.493286 1479.489258 1473.230469 1463.304565 1452.390747 1444.777832 1433.823975 1419.099487 1401.435547 1409.466797 1424.978027 1437.751221 1449.188965 1459.466919 1475.561157 1490.460693 1505.99231 1519.806885 1534.193848 1547.199707 1561.745972 1571.335083 1575.828491 1569.633545 1561.018921 1553.664185 1546.832886 1536.953247 1533.005615 1533.292725 1532.577515 1527.217651 1522.056641 1518.481689 1515.9729 1515.280396 1514.601562 1514.30188 1513.548462 1512.488525 1508.324097 1503.898926 1499.866699 1492.886108 1489.359375 1487.251465 1480.609131 1470.063599 1461.581421 1453.316284 1441.300537 1428.848633 1413.987915 1415.666138 1414.66333 1405.535278 1406.768799 1416.234253 1423.156738 1428.873291 1428.996948 1424.686523 1418.370483 1411.705933 1404.236816 1397.026855 1390.111572 1383.716431 1377.264648 1367.688599 1354.859253 1340.703369 1338.44812 1343.948853 1346.414673 1347.740845 1346.947266 1344.325317 1342.075684 1333.55603 1338.748901 1349.644531 1361.108765 1372.875122 1382.674194 1387.159668 1380.93811 1369.456421 1362.430054 1364.006836 1370.523682 1378.321777 1389.911133 1396.225708 1404.356079 1411.473022 1421.832764 1437.979858 1450.915527 1467.263916 1478.182129 1488.121338 1498.037109 1507.373657 1514.518555 1521.373291 1525.784058 1531.937866 1544.149658 1556.101318 1565.755371 1572.766846 1568.830444 1562.281982 1557.727173 1562.590698 1577.162964 1579.022461 1576.498413 1559.513428 1548.983154 1539.022217 1525.910889 1507.473145 1489.777344 1476.117432 1464.650757 1456.619141 1449.698853 1452.186279 1460.40625 1471.295044 1480.463745 1484.169922 1481.611572 1474.583374 1463.185791 1460.387573 1458.515137 1455.337036 1451.321777 1449.962036 1452.321655 1452.474854 1453.737061 1452.964844 1451.355103 1454.069092 1458.388062 1463.062988 1465.30127 1459.180908 1453.227295 1450.870728 1445.158936 1437.712402 1427.541748 1419.747559 1412.945923 1408.190918 1401.217896 1393.045044 1384.848389 1376.858765 1374.489136 1370.175903 1357.615967 1352.973145 1351.743652 1346.677246 1337.216553 1328.687378 1322.53772 1324.26355 1322.928467 1323.101807 1322.631226 1319.301025 1316.512329 1318.525635 1323.079224 1330.331421 1344.727905 1345.604492 1343.009521 1342.511841 1339.642334 1337.211182 1337.104858 1337.394653 1336.641724 1334.749146 1331.782593 1328.785645 1331.746704 1336.349609 1341.381226 1347.214478 1353.417969 1355.848755 1356.21106 1356.963013 1356.524048 1356.149536 1350.077515 1347.276611 1345.103638 1337.817017 1328.633911 1319.497803 1310.369751 1293.656128 1287.474854 1279.964844 1274.939697 1282.405029 1294.442017 1310.50354 1293.830078 1284.805176 1279.290527 1297.443604 1302.262085 1296.858887 1295.469604 1308.347656 1315.09375 1321.578735 1328.644165 1343.581055 1357.515259 1353.111694 1343.574341 1336.416626 1329.51416 1328.208862 1334.27002 1342.552979 1352.521973 1356.348999 1355.775391 1353.048706 1358.177246 1361.641479 1356.651489 1347.940674 1338.291992 1327.815063 1344.537476 1354.120605 1345.377075 1337.266724 1341.190674 1341.1875 1347.805664 1355.384277 1347.687622 1340.521606 1336.161621 1331.656006 1330.381104 1332.980957 1338.194702 1340.921021 1339.498169 1335.351318 1328.858643 1322.895142 1320.470825 1319.195801 1316.63855 1313.405396 1308.418213 1299.595215 1292.523315 1292.740234 1303.106079 1312.731567 1319.436035 1320.206665 1319.516235 1318.968994 1318.235718 1317.587646 1317.180542 1316.786987 1315.690796 1308.152466 1304.451416 1298.797607 1292.817017 1292.485596 1293.009766 1295.270874 1295.784058 1294.908081 1293.325928 1293.015503 1293.11792 1293.204712 1293.707764 1295.442749 1296.855957 1297.207886 1296.582397 1294.673828 1291.985718 1290.08313 1288.039917 1285.904541 1283.669189 1282.43396 1281.510742 1280.259766 1279.424316 1279.095215 1279.63147 1278.656128 1277.21106 1275.992676 1275.303711 1276.558838 1277.993408 1283.4729 1284.896118 1279.614868 1279.244385 1288.684814 1295.619385 1296.744873 1296.275513 1296.219116 1296.98584 1296.951904 1296.365356 1295.937256 1295.97937 1296.17395 1294.723999 1294.620483 1293.14209 1291.73645 1292.954468 1291.236816 1288.450073 1286.990723 1286.34314 1285.713867 1284.458374 1282.60144 1280.674072 1279.330566 1277.246094 1274.478638 1270.863037 1268.315063 1265.743042 1259.934082 1255.016602 1250.079346 1248.244263 1247.227295 1239.984863 1225.028198 1204.882935 1185.3125 1185.721313 1186.286987 1187.026001 1188.53894 1190.908936 1193.555298 1198.033447 1208.478271 1210.37085 1209.368042 1204.612061 1195.783813 1185.786133 1176.716675 1172.3302 1173.200073 1174.134033 1176.688721 1173.522583 1169.981812 1169.185791 1172.262817 1178.985107 1193.334351 1207.422607 1214.896851 1218.347412 1220.548828 1222.422729 1226.988159 1236.431152 1256.702393 1268.825073 1280.829956 1289.47998 1300.942749 1310.731323 1319.210815 1325.314209 1329.543213 1333.19458 1339.857788 1343.910767 1342.5177 1338.552734 1355.20813 1369.619141 1376.819336 1379.872192 1383.878174 1388.824341 1388.608154 1383.882935 1393.591675 1396.977173 1393.500732 1380.752319 1369.103027 1377.007202 1388.303101 1397.759277 1403.827026 1407.310303 -1321.600586 1324.293213 1326.661133 1327.945801 1328.347534 1328.014404 1336.951904 1347.933716 1358.812134 1372.589355 1393.091919 1400.408447 1403.067749 1405.17041 1405.32312 1405.049316 1409.661255 1414.582275 1424.723999 1435.540405 1449.934937 1461.892944 1478.020874 1500.026733 1521.987061 1533.339233 1546.097412 1551.341187 1561.852295 1581.765747 1595.408936 1610.030762 1615.293335 1619.54248 1637.551514 1651.652954 1661.264038 1663.299805 1662.817749 1659.459473 1653.799072 1649.10144 1646.222412 1646.549561 1648.86499 1645.563232 1640.992188 1637.089966 1632.687866 1627.01355 1623.148682 1617.05542 1611.832397 1600.136597 1588.352661 1578.122192 1567.423096 1551.745605 1535.279419 1523.233154 1503.792725 1491.777588 1490.405151 1495.44043 1493.529419 1485.954468 1478.695312 1469.589233 1458.209839 1442.995972 1426.266479 1410.928711 1411.7677 1417.242065 1426.817017 1436.745361 1446.189453 1456.282104 1465.986816 1471.592407 1488.812378 1494.432495 1495.218872 1489.413208 1494.615234 1508.61731 1520.55481 1537.644043 1548.368896 1561.43103 1571.262573 1578.965454 1585.784668 1587.19873 1587.514526 1584.763062 1587.229614 1582.231812 1571.502075 1563.072632 1557.434448 1548.250366 1537.027344 1528.935913 1518.266968 1514.497803 1512.64856 1504.782715 1486.460938 1474.173218 1459.648682 1448.671509 1442.239868 1434.149902 1424.512329 1407.322388 1388.633789 1379.151978 1370.074341 1362.628418 1356.125122 1349.68396 1363.85144 1378.627319 1391.321777 1398.411621 1407.358154 1419.451416 1427.25769 1442.647461 1452.787842 1456.00647 1458.641846 1461.072021 1462.567749 1463.612305 1466.275391 1468.735229 1470.580688 1471.175781 1470.75354 1468.651611 1464.393799 1459.933105 1454.520996 1447.121948 1450.651733 1463.161743 1467.524902 1476.703613 1481.122437 1483.093262 1478.399048 1473.638672 1468.140503 1463.273193 1457.53894 1452.400879 1441.265747 1435.188599 1437.292114 1437.325073 1434.747437 1430.012817 1425.770386 1425.34314 1428.425293 1429.932373 1428.3396 1420.814209 1410.266479 1407.000366 1418.246216 1430.391846 1440.893921 1448.222168 1457.092651 1464.061157 1467.453369 1470.339966 1473.414551 1476.345947 1479.270142 1478.948975 1474.338989 1465.09668 1456.973999 1441.762451 1428.602783 1422.603638 1416.529785 1404.275269 1416.177124 1435.480591 1449.420898 1460.151245 1473.123169 1491.032715 1505.51416 1518.291382 1532.565186 1548.884766 1567.800293 1576.348022 1570.758423 1562.207153 1554.145142 1546.376953 1539.803345 1529.869507 1522.130127 1523.90625 1524.975586 1521.742188 1517.745239 1514.542969 1510.292236 1508.107056 1509.664307 1509.544678 1507.070068 1504.229126 1502.200928 1501.399902 1498.526489 1491.825928 1485.751099 1480.012695 1474.150269 1465.124756 1454.806763 1444.759521 1433.463623 1422.296997 1417.186646 1424.744751 1419.827515 1410.477295 1399.921509 1407.57373 1413.603271 1414.453003 1413.246948 1412.342896 1410.102173 1406.382324 1401.646851 1396.247437 1391.902222 1385.281494 1378.668457 1368.276733 1347.456055 1341.2771 1346.187134 1349.774414 1351.862671 1352.758789 1352.729858 1349.116455 1345.358643 1337.659058 1339.247681 1347.823853 1357.161377 1367.437134 1378.940918 1392.110107 1392.549072 1381.828613 1367.954346 1364.623657 1370.178467 1376.500244 1382.952271 1393.074219 1403.767578 1412.947998 1423.961792 1436.19751 1452.216309 1465.373657 1473.417603 1483.160156 1495.309937 1507.982422 1519.709595 1528.599731 1532.994629 1539.964966 1546.762207 1555.07019 1564.815674 1575.307251 1575.461426 1568.110962 1566.302979 1574.202759 1583.275879 1586.837524 1584.973389 1577.071045 1561.44165 1546.156494 1529.27356 1512.315186 1492.80127 1479.833618 1470.029663 1459.858276 1452.282593 1457.869751 1463.345703 1474.604248 1486.095825 1489.015137 1483.578491 1474.38208 1464.047363 1463.590942 1463.439819 1461.720459 1458.22583 1457.671509 1457.348022 1456.952637 1457.456421 1457.137939 1456.639893 1456.622314 1457.436157 1458.608032 1459.079346 1452.555542 1446.917603 1443.123779 1438.587524 1431.988281 1424.960938 1417.801636 1412.372314 1407.535522 1403.895508 1393.233154 1383.541626 1368.787109 1358.543945 1347.334106 1338.04187 1336.760254 1335.985474 1330.396484 1327.138306 1328.087402 1336.526611 1339.938477 1336.803589 1332.021118 1328.273682 1321.315796 1316.463867 1319.647583 1328.741821 1339.636597 1342.467896 1351.618408 1353.077881 1348.765747 1344.605591 1340.810181 1342.237305 1343.648804 1342.276367 1339.87561 1335.214844 1330.711426 1332.630371 1337.388916 1341.733154 1348.026489 1354.089966 1354.408813 1349.412109 1348.32605 1346.918091 1348.672485 1341.708374 1337.883789 1337.460083 1332.166992 1327.361572 1321.700806 1316.818604 1302.082642 1287.185425 1279.675781 1278.272827 1287.393677 1301.341064 1307.185425 1292.711182 1286.199219 1285.716797 1303.280029 1306.668945 1305.266357 1305.655884 1304.16333 1314.483765 1321.409668 1327.682617 1342.133423 1357.450806 1355.46875 1347.951172 1340.906006 1333.477417 1329.296631 1333.975098 1340.356934 1349.060303 1356.198853 1361.108032 1357.046997 1361.944946 1366.74585 1357.680176 1348.706177 1340.313599 1339.38208 1350.899292 1356.794434 1347.746948 1340.075439 1355.460938 1348.477539 1353.684692 1354.90625 1349.286987 1343.282715 1337.26001 1332.216187 1327.95874 1328.032471 1330.723267 1332.758057 1332.572998 1329.567017 1322.654663 1316.062622 1313.034302 1311.498535 1309.268066 1306.187378 1303.550659 1297.678467 1297.603394 1304.395996 1310.918701 1318.224976 1322.071411 1323.113159 1322.577759 1321.591309 1320.840332 1319.998169 1319.372925 1319.140015 1317.977783 1307.564697 1303.149292 1298.829224 1295.426147 1292.870483 1293.748413 1297.144409 1298.279175 1297.883789 1296.917358 1296.37085 1296.40271 1296.571777 1296.990234 1297.936401 1298.738403 1298.773193 1297.854736 1295.909424 1293.753174 1291.804443 1289.826172 1288.565186 1286.956421 1285.502319 1284.189453 1283.056641 1282.10022 1280.949097 1282.287476 1281.081177 1279.873291 1280.900635 1282.289673 1283.918701 1286.658203 1292.948975 1292.913818 1281.436157 1280.488281 1293.813965 1299.627075 1301.505615 1301.509033 1300.863159 1300.236206 1300.03064 1300.042358 1300.032837 1299.840942 1299.456665 1298.846924 1298.192139 1296.259399 1296.234375 1296.581421 1295.235107 1292.26062 1291.575562 1291.048828 1289.790039 1288.517578 1286.913696 1285.161987 1283.479858 1281.404785 1278.877197 1275.801147 1272.206299 1269.189575 1260.88562 1253.093384 1246.47644 1242.342041 1244.524414 1236.94397 1225.148315 1208.030273 1187.848633 1186.150391 1186.5448 1187.49585 1189.322876 1192.117432 1194.620361 1202.252197 1210.227173 1212.641235 1213.024902 1209.915283 1201.994995 1190.858154 1181.199463 1176.670898 1174.144653 1172.964233 1171.449707 1171.161011 1171.151855 1170.334106 1174.999146 1183.386353 1203.848633 1216.815186 1227.390137 1235.711304 1236.336182 1240.931519 1245.361816 1246.263428 1247.617554 1259.173462 1275.110229 1286.960449 1297.958374 1308.533813 1318.704346 1328.958374 1335.455322 1343.556519 1350.912964 1356.949707 1357.759766 1352.620483 1358.114624 1376.880371 1382.765991 1386.135986 1390.365845 1396.13269 1398.123901 1400.210327 1403.228271 1403.613403 1398.746216 1386.718506 1376.622314 1383.616333 1395.423584 1404.906494 1412.834229 1416.995117 -1329.390015 1332.251587 1335.699463 1337.28186 1337.288574 1335.362671 1335.053711 1340.405396 1350.990112 1364.234375 1379.984985 1390.903687 1393.628174 1394.375488 1393.455078 1401.898193 1414.531494 1424.019897 1435.296143 1450.704712 1464.014038 1482.214355 1507.450439 1528.442139 1537.807373 1554.633423 1582.742554 1584.359863 1587.572144 1593.960693 1606.558594 1611.789062 1617.074097 1621.559692 1637.671021 1649.623291 1659.471191 1662.222168 1662.263672 1661.083496 1660.198364 1659.066162 1655.745483 1655.838989 1652.894043 1647.886963 1643.016113 1638.39209 1633.437622 1627.311035 1620.859741 1613.047607 1605.555054 1592.137939 1578.220459 1567.097534 1556.148926 1542.15332 1528.471069 1512.394897 1503.096436 1512.069092 1517.378296 1511.210571 1504.07019 1484.69751 1472.69873 1462.539673 1451.412354 1439.2677 1423.433594 1411.132202 1417.445312 1424.963501 1432.000977 1443.043091 1457.029785 1470.754883 1479.199951 1487.99231 1498.427368 1508.634888 1512.504272 1511.081787 1501.582642 1515.367798 1533.865479 1540.924805 1549.977661 1563.717651 1580.991089 1590.920044 1595.685669 1597.213867 1595.293945 1594.710938 1594.956421 1590.459717 1580.460449 1572.588013 1564.058228 1551.607422 1539.145142 1534.876221 1531.842041 1529.00293 1523.570068 1508.479736 1487.350098 1473.942261 1461.175171 1449.598877 1443.337891 1433.915771 1421.490112 1407.692261 1390.370117 1380.10083 1369.580811 1361.455566 1354.46814 1351.669189 1372.062866 1387.546631 1397.323486 1406.99292 1419.099365 1428.265503 1437.042358 1447.24353 1454.884033 1459.269653 1461.902588 1465.015869 1466.842651 1468.085205 1470.103394 1472.441162 1473.828125 1474.146973 1473.947266 1471.391113 1466.653931 1462.832153 1456.262695 1450.696655 1457.604126 1466.192993 1470.530151 1480.866821 1486.724854 1489.520264 1489.170532 1484.266235 1478.498169 1472.017212 1465.730347 1459.255371 1450.083984 1443.88855 1445.328247 1444.837158 1441.21228 1436.277832 1433.555054 1433.000488 1434.672607 1435.759644 1434.549561 1429.6875 1419.886963 1409.715088 1416.060425 1425.94519 1435.814575 1444.494873 1451.269775 1460.170532 1465.21228 1468.245361 1471.391235 1474.142822 1476.829102 1477.750732 1474.195679 1468.476196 1461.048584 1453.081421 1445.432861 1428.217896 1420.478882 1412.733032 1406.612549 1419.825806 1437.338257 1460.155151 1479.499634 1494.270996 1504.218994 1515.10791 1530.070923 1549.265747 1574.026611 1573.341675 1564.13269 1556.318237 1549.367188 1541.48584 1532.297363 1523.758423 1516.984131 1513.943359 1515.481812 1515.237793 1513.474854 1507.416626 1498.696533 1496.034302 1496.644775 1497.19043 1495.251343 1493.478394 1492.879395 1491.782837 1490.088623 1489.351807 1485.575684 1477.1604 1470.010376 1459.841553 1450.010254 1440.505737 1428.556274 1420.985229 1430.609985 1432.278198 1425.643799 1413.258057 1399.640015 1395.881226 1399.64917 1405.001465 1405.674805 1405.393921 1404.120605 1400.712036 1395.946899 1393.072388 1389.438477 1383.665527 1377.036377 1364.648926 1344.822021 1348.193726 1353.028687 1355.617188 1357.043335 1357.495239 1356.278076 1352.55127 1347.054565 1340.019409 1339.423462 1349.331665 1359.169434 1367.792236 1375.136963 1387.043823 1394.432495 1392.859619 1380.111328 1368.530029 1370.520142 1379.207397 1388.451172 1394.69104 1403.236694 1410.494873 1418.523682 1427.987305 1439.743408 1453.798096 1466.137085 1475.436523 1486.59021 1498.294189 1510.782715 1523.027222 1530.620483 1536.227783 1541.10144 1549.123779 1556.77063 1569.363281 1577.404419 1580.109863 1581.333618 1584.01709 1591.398193 1599.030029 1594.084595 1584.194092 1569.360962 1552.515259 1530.348389 1516.092163 1500.211792 1484.745361 1473.487427 1462.162598 1458.206421 1465.449097 1472.187622 1481.135376 1490.814087 1489.737427 1485.603882 1478.81897 1474.072266 1469.911743 1468.437744 1467.075806 1465.443726 1464.848877 1462.501221 1460.800659 1461.668457 1461.974854 1460.580444 1458.178589 1456.185547 1453.813843 1451.668335 1447.581787 1440.491455 1435.776001 1432.094849 1427.143188 1421.216919 1416.228638 1411.318115 1406.768066 1402.403076 1392.793335 1382.89563 1365.870239 1348.973511 1338.359863 1336.243652 1336.317871 1335.626099 1336.640747 1341.270508 1347.399536 1353.327148 1347.196533 1342.33667 1335.759644 1331.174194 1323.227539 1318.360718 1325.815552 1334.600586 1341.104248 1351.486938 1353.917847 1355.293945 1354.274414 1349.744507 1346.433105 1346.624878 1347.626099 1345.545898 1343.236938 1338.371338 1337.365112 1337.789307 1339.34436 1342.853271 1342.767212 1345.321045 1344.5 1340.454346 1338.462036 1338.686157 1339.634399 1336.751709 1330.897827 1328.763428 1326.705078 1323.633179 1321.22522 1319.223022 1309.591064 1285.558716 1277.248413 1283.736694 1290.891602 1309.483521 1304.27002 1290.589478 1289.081177 1296.862671 1305.464844 1312.450684 1314.445068 1313.615479 1313.244995 1315.08667 1320.407837 1326.742676 1340.396484 1357.316284 1356.672241 1351.198364 1343.819336 1337.244263 1335.40686 1337.371948 1339.060547 1345.76062 1356.125366 1366.635132 1363.966064 1364.806274 1367.170288 1358.942993 1348.877686 1340.814331 1344.274536 1355.499634 1361.922363 1350.581909 1349.573853 1357.491089 1354.332764 1355.510498 1356.759277 1351.914062 1343.317993 1337.172241 1331.508057 1327.347168 1323.056885 1322.97876 1324.068115 1323.51001 1319.993774 1315.749268 1311.682007 1308.376709 1305.97937 1303.834473 1303.259399 1303.671753 1306.204712 1308.696411 1311.998657 1316.403809 1323.200806 1327.910034 1326.86853 1325.273804 1324.108521 1323.373291 1322.217773 1320.924316 1319.637939 1317.942017 1306.755127 1303.89502 1300.886841 1297.801758 1294.347778 1297.680542 1300.516113 1302.00293 1302.177856 1301.159668 1300.675415 1300.874634 1300.731934 1300.87793 1301.278076 1301.24939 1300.749268 1299.561035 1297.751587 1295.520752 1293.008545 1291.491577 1291.209229 1289.886475 1288.483032 1287.509521 1286.476807 1285.635498 1284.870117 1284.873291 1285.200439 1287.528076 1290.669922 1293.609741 1295.042969 1296.355347 1298.047485 1295.848389 1288.815674 1289.460693 1298.671997 1304.605713 1306.157715 1305.666382 1304.00415 1302.97168 1303.115967 1303.264038 1303.347534 1303.21228 1303.083984 1302.368652 1301.403442 1301.047119 1300.795654 1300.693848 1299.243042 1297.198242 1296.250122 1295.304932 1294.016602 1292.759033 1291.391968 1289.87915 1288.003174 1285.79248 1282.975342 1280.970703 1276.782471 1270.461304 1261.237183 1251.68103 1243.148193 1239.145752 1237.05603 1235.418091 1232.244019 1214.299316 1193.755249 1186.003906 1186.644043 1187.60437 1189.654663 1192.629028 1195.501221 1204.556641 1210.994873 1214.396973 1216.693726 1216.674316 1210.182983 1199.770142 1187.893311 1180.756104 1180.786377 1180.294556 1178.551514 1180.182129 1185.751953 1184.962036 1176.418457 1184.09082 1206.980713 1223.098267 1236.295044 1247.859009 1252.464233 1256.216064 1261.140991 1264.245972 1265.263916 1265.986694 1267.59375 1279.587524 1292.807373 1304.574097 1314.195068 1325.314697 1335.603516 1346.258301 1357.540405 1366.665894 1369.808594 1369.330566 1365.040039 1379.022339 1387.700317 1391.070312 1400.666504 1405.731323 1407.33374 1409.574585 1411.164185 1410.126831 1405.472778 1392.457886 1385.619873 1391.152466 1402.780762 1412.008179 1419.204956 1423.778809 -1337.205566 1341.588013 1346.075562 1347.474121 1346.906616 1343.770142 1340.932007 1344.741699 1347.789551 1356.220093 1366.49646 1373.670044 1378.669922 1379.446167 1391.042603 1405.648193 1419.031616 1428.470947 1443.126343 1460.450317 1477.194214 1502.365479 1526.983765 1541.867188 1551.291138 1557.631104 1581.920898 1597.213623 1606.414673 1616.40332 1621.484863 1623.945068 1625.52124 1629.431641 1635.932861 1647.376953 1657.224365 1661.231323 1662.301392 1662.727661 1662.871948 1662.679688 1661.675659 1660.93689 1656.649414 1648.763916 1643.051636 1638.133545 1633.024048 1626.557617 1616.654297 1605.576904 1596.98877 1589.015137 1574.897461 1555.445923 1539.369019 1527.685181 1521.072021 1522.915771 1531.631226 1534.911255 1531.032227 1516.978516 1501.754639 1480.798828 1465.716919 1455.012939 1444.627197 1430.90979 1420.006958 1412.752075 1424.906738 1434.32251 1440.198853 1449.352417 1467.967896 1481.244629 1495.623169 1507.656494 1513.074219 1521.406372 1523.237427 1521.11377 1518.391113 1520.319214 1540.414551 1548.984253 1559.220947 1567.246704 1588.46228 1599.015991 1604.894897 1606.198853 1604.79187 1604.121948 1603.932373 1599.234253 1588.709473 1577.726196 1568.054199 1554.517334 1545.864136 1542.130249 1540.610596 1536.797607 1530.522705 1516.041992 1490.506226 1477.194702 1465.328857 1451.382935 1444.310059 1435.305786 1418.404053 1406.126587 1390.957764 1380.415649 1366.228394 1357.797607 1350.94751 1361.764038 1379.307251 1393.405884 1402.752319 1418.012695 1429.218994 1439.303711 1445.854858 1451.532593 1460.897949 1462.939209 1465.315918 1468.350342 1470.563965 1472.129517 1474.253296 1476.311157 1478.059692 1478.28894 1478.036987 1474.777588 1470.207642 1465.525024 1457.82605 1454.959717 1461.796753 1468.293457 1473.132812 1485.567627 1492.257446 1496.346558 1496.695435 1493.260132 1485.939331 1478.676147 1471.566162 1464.852539 1454.659302 1453.646484 1456.522217 1454.89917 1450.232056 1441.757446 1439.855713 1439.285645 1440.44873 1442.978394 1442.487305 1438.887451 1430.67749 1418.158813 1414.091797 1424.817871 1434.197266 1441.612305 1447.117432 1453.63269 1462.695923 1466.304443 1469.345947 1473.436523 1476.901978 1477.994019 1476.802979 1472.948242 1467.959106 1463.939697 1451.358521 1434.028198 1420.959717 1413.542114 1407.708496 1421.9646 1437.656494 1463.918701 1485.847778 1499.647095 1513.535522 1522.151855 1531.961792 1548.2323 1570.428101 1567.534302 1558.668335 1550.512451 1545.053589 1538.752197 1527.419678 1518.891968 1512.116577 1507.396729 1505.483154 1506.078491 1503.545288 1497.005371 1490.286133 1483.687134 1483.216553 1482.053223 1480.816284 1480.595703 1478.779419 1476.332397 1474.609741 1475.072144 1476.094727 1476.480225 1468.196167 1453.361206 1443.474976 1435.268433 1425.871582 1430.259521 1438.712769 1439.805176 1427.317871 1413.38562 1402.275024 1391.796631 1386.534546 1386.666138 1390.804199 1392.51001 1393.274048 1389.469727 1386.535645 1384.508667 1382.125244 1379.536255 1371.994995 1358.017578 1348.58313 1355.297852 1358.682617 1360.657837 1361.489014 1361.583252 1359.186035 1354.492188 1347.646729 1340.607788 1339.105225 1348.963135 1359.439209 1367.970581 1374.623779 1382.766235 1393.302979 1399.600952 1391.993042 1378.784302 1370.31665 1376.406006 1388.602661 1394.263184 1399.018921 1403.707275 1410.648438 1418.505737 1429.046997 1440.16626 1454.255981 1465.676514 1475.844849 1484.680298 1493.211792 1502.630127 1513.462891 1528.054199 1531.297852 1535.774902 1544.480591 1558.526978 1575.134033 1586.283813 1592.672241 1596.159058 1604.610718 1611.60376 1602.071045 1587.487793 1571.101562 1552.795288 1533.035645 1519.533936 1504.452271 1491.319824 1479.019531 1464.042358 1466.405151 1473.258301 1481.539185 1487.983276 1491.894531 1490.918701 1486.767822 1482.198242 1477.64856 1475.541138 1473.305298 1471.590088 1470.70752 1469.005371 1466.151855 1466.018555 1469.912476 1469.662109 1463.105835 1459.151489 1455.326172 1451.678345 1447.250732 1443.175049 1438.325928 1430.538208 1426.098877 1422.50354 1417.218994 1412.5 1407.937134 1403.969727 1397.741089 1387.867065 1377.970703 1359.184448 1340.952026 1339.657104 1344.562622 1349.118896 1350.926636 1352.477539 1354.071533 1355.755005 1355.138794 1348.359131 1341.472656 1336.690674 1331.726929 1327.008667 1324.773438 1328.661377 1344.05542 1355.206909 1355.383301 1355.614014 1355.944458 1355.694824 1353.458862 1350.931274 1351.574097 1353.238159 1350.778809 1343.07666 1342.00061 1342.435059 1341.388794 1340.980347 1343.273071 1341.906494 1340.024414 1339.230103 1337.118042 1333.154419 1332.550049 1332.168213 1330.856567 1327.678223 1323.967285 1319.534912 1319.74939 1317.940186 1313.770752 1295.981079 1278.157471 1281.378296 1289.900879 1298.64978 1315.734619 1307.620117 1291.401245 1289.208252 1301.393555 1314.852295 1318.076294 1320.045654 1320.694214 1321.819336 1322.303467 1326.879028 1330.193115 1340.554932 1356.602417 1358.192871 1353.703735 1344.714478 1339.580933 1339.888428 1341.530029 1340.322021 1342.514404 1353.991455 1366.466064 1366.484497 1365.580933 1367.170166 1360.191772 1348.327759 1340.299683 1351.28772 1363.046509 1368.477905 1352.620239 1357.0 1361.733643 1363.480957 1361.840698 1357.409668 1350.748291 1342.260376 1336.198486 1330.677856 1324.076294 1318.406006 1316.215576 1316.282471 1315.332275 1312.973389 1309.938843 1306.369629 1304.109375 1303.711182 1304.775391 1307.947632 1311.172974 1313.925415 1315.725464 1317.609619 1322.438721 1328.970703 1331.121216 1329.558838 1327.643433 1326.397095 1325.78479 1324.412231 1321.801514 1318.73999 1315.013794 1304.895264 1304.055542 1302.599609 1302.081055 1301.840332 1304.18396 1304.348511 1306.327881 1306.905396 1304.757202 1304.539551 1304.779907 1304.828857 1304.20752 1303.965454 1303.576294 1302.959473 1302.018066 1300.272583 1298.172607 1294.953003 1294.63562 1294.385254 1292.729004 1291.560181 1290.849365 1290.130981 1289.530884 1288.473511 1288.42688 1290.43042 1293.834106 1297.4552 1299.790527 1301.399292 1302.954834 1304.414795 1303.275757 1295.382202 1293.200684 1303.793579 1308.327881 1309.467285 1309.054199 1307.186768 1306.020874 1306.75293 1307.387573 1307.623413 1307.54834 1307.112671 1306.339233 1304.887695 1304.031128 1304.946289 1304.94812 1304.21582 1302.291626 1300.699707 1299.460693 1298.350342 1297.17627 1296.00293 1294.672729 1292.603394 1290.176514 1287.06897 1283.914795 1277.751831 1268.031738 1261.060791 1250.630493 1240.667358 1234.882446 1230.70752 1228.294556 1227.07019 1218.641968 1201.66626 1190.994995 1186.633057 1187.791748 1189.412354 1192.283203 1195.761963 1204.452026 1210.949951 1216.166504 1219.640747 1222.457031 1223.857544 1211.70166 1200.068848 1195.397827 1194.635132 1192.558716 1186.689331 1194.025146 1203.125244 1200.785156 1188.864868 1181.526489 1201.608521 1219.691162 1232.632568 1247.599487 1261.664062 1271.562134 1275.070679 1278.076782 1280.627686 1283.204956 1284.877441 1287.303955 1293.007935 1301.549316 1313.150269 1323.564941 1337.161377 1351.961914 1361.403687 1369.261597 1375.731812 1379.623047 1381.719727 1387.060547 1394.426025 1401.653076 1407.876709 1412.327881 1415.319092 1417.078735 1417.807983 1417.216309 1412.605591 1400.799683 1390.65625 1393.843994 1408.908569 1417.828491 1424.91394 1430.240845 -1346.782837 1354.148682 1357.015015 1358.007568 1357.265381 1354.292358 1350.268799 1354.015869 1358.944336 1359.55481 1363.295532 1367.86145 1373.232178 1378.629272 1394.085571 1408.841187 1420.692505 1431.452393 1449.926147 1467.536377 1486.835449 1508.969604 1532.91333 1551.848877 1574.935181 1582.393799 1581.397339 1602.635986 1620.931519 1633.982178 1639.692139 1637.577759 1635.69751 1641.387451 1646.460083 1648.954468 1657.120239 1660.694214 1662.153076 1663.103638 1663.394287 1662.930908 1662.339722 1660.961914 1655.455811 1646.488525 1640.953491 1635.616333 1630.731201 1624.806274 1611.917236 1599.324707 1591.219849 1583.849487 1568.42627 1549.298584 1538.710205 1533.318604 1539.44519 1542.258301 1545.904419 1543.576782 1532.525024 1512.569824 1492.860474 1473.349243 1459.068604 1447.899902 1437.105225 1425.288818 1418.341431 1417.19873 1433.682861 1444.772339 1453.805176 1461.80481 1475.007935 1487.993164 1505.365601 1518.61084 1527.351685 1531.712158 1532.483887 1530.446533 1529.617065 1529.864624 1541.923462 1558.065186 1570.599487 1579.065063 1595.906738 1606.971313 1613.449463 1615.665527 1614.671021 1613.211548 1612.155884 1606.482666 1594.488159 1580.194336 1569.774536 1561.338745 1553.532715 1548.133911 1545.0896 1540.934326 1534.469849 1522.706787 1497.493896 1479.986694 1466.892334 1452.513184 1443.945679 1434.215332 1417.641357 1401.609009 1389.016357 1376.020264 1363.133545 1354.135742 1353.635742 1367.383911 1385.973877 1397.403809 1409.577515 1425.45105 1437.105347 1446.575195 1454.920532 1464.55835 1468.19873 1469.557373 1470.890137 1472.491211 1474.113281 1475.899902 1478.52124 1481.164551 1483.709595 1485.932983 1484.51062 1478.38562 1472.773193 1466.050293 1458.389526 1459.890503 1465.027588 1472.420898 1478.414551 1493.83667 1500.305176 1504.077393 1504.723389 1501.505981 1491.80896 1484.278198 1475.75354 1468.524292 1465.429932 1468.048096 1468.214966 1466.868408 1460.014771 1451.459717 1450.2771 1448.098633 1447.529419 1451.483276 1453.018188 1448.689819 1440.815063 1429.152222 1417.880615 1424.353394 1432.386475 1438.85498 1444.585571 1449.500488 1455.93042 1463.12561 1466.512207 1472.271729 1477.085327 1478.150513 1478.484253 1477.049072 1466.039795 1460.543823 1448.417725 1431.514648 1416.739014 1410.098755 1417.430054 1427.209961 1447.938965 1463.275879 1481.059326 1507.062744 1523.080078 1533.19519 1541.23999 1549.851807 1565.536499 1561.790649 1553.610596 1545.426392 1538.736328 1532.048462 1521.869263 1514.741577 1508.112793 1502.566284 1497.570801 1495.485962 1490.143677 1483.159424 1473.474365 1471.244751 1468.892212 1466.631226 1463.407349 1462.017822 1462.140381 1461.880615 1461.816284 1462.58606 1463.640381 1463.96814 1452.307617 1444.078857 1437.259766 1431.953125 1432.069214 1441.448486 1445.952271 1445.424927 1435.235352 1420.691284 1412.614746 1408.094604 1401.845459 1389.412231 1381.100464 1376.528687 1372.567627 1375.447876 1371.203613 1369.936279 1369.875 1368.319824 1363.033081 1351.795288 1356.632446 1362.998535 1365.435669 1365.296387 1365.902466 1366.245361 1362.332764 1355.102905 1347.759277 1340.487915 1342.658203 1347.519043 1355.970703 1364.226685 1372.651123 1380.871704 1392.246216 1404.716553 1400.151611 1389.888794 1379.872559 1374.009644 1379.253052 1390.539551 1394.202759 1399.235596 1402.05249 1410.726318 1416.472778 1425.776001 1437.811401 1452.480347 1462.127563 1471.856934 1479.911499 1485.816772 1494.567749 1504.938354 1518.140137 1525.373901 1536.428955 1554.84082 1571.931763 1585.27417 1597.940552 1608.088623 1614.499756 1615.039551 1605.106934 1587.694458 1569.729126 1556.025024 1537.21167 1522.02063 1507.947998 1497.822388 1484.623779 1466.602417 1470.794189 1479.656006 1490.021851 1494.555664 1496.560547 1493.084106 1488.784912 1485.033691 1481.235962 1478.81311 1476.561646 1475.889038 1475.648193 1473.711304 1472.084717 1476.033936 1478.672974 1478.923584 1467.116211 1458.917847 1451.837524 1448.407349 1442.629639 1437.768921 1433.408447 1426.944702 1422.488037 1419.091187 1414.347046 1409.394043 1404.154785 1397.959961 1389.680054 1379.879761 1370.042358 1350.022583 1342.703857 1356.657349 1362.819824 1365.692261 1366.675537 1365.291016 1362.283569 1359.312622 1354.795776 1347.982178 1340.904907 1337.233521 1332.805054 1329.515015 1327.215576 1329.266479 1343.119751 1356.301025 1356.475098 1355.136108 1356.044312 1356.21814 1355.270264 1353.504395 1354.424316 1354.442261 1353.105225 1347.996582 1345.248291 1344.456787 1343.415283 1342.685547 1343.164062 1342.149414 1338.826782 1337.018921 1336.144409 1332.021118 1327.331543 1325.88269 1327.175293 1326.916626 1322.02063 1316.155518 1314.712402 1305.302368 1296.764282 1279.525879 1280.087402 1285.857788 1292.499878 1301.384644 1318.983032 1308.897827 1289.864746 1288.957275 1302.758057 1318.480835 1320.928345 1323.356201 1325.999756 1328.924194 1332.981079 1334.653198 1337.462402 1343.470459 1355.993408 1363.345581 1356.045044 1346.486084 1341.038574 1346.319946 1347.308716 1345.942139 1347.052246 1353.449585 1364.95752 1368.373291 1368.227783 1368.573364 1360.725708 1348.548462 1348.168579 1359.260986 1366.888916 1366.310425 1357.046631 1364.843994 1367.463257 1367.877075 1363.547852 1354.975342 1346.978394 1339.304199 1333.271729 1327.775513 1319.68689 1316.295776 1316.833252 1317.459839 1314.808105 1310.164185 1305.383179 1304.245972 1305.811401 1308.030518 1311.487793 1315.606567 1319.310547 1322.164551 1323.480103 1324.677856 1327.522217 1331.721924 1333.334473 1332.108887 1329.837769 1328.863892 1328.430176 1326.970825 1322.570557 1317.661133 1314.641602 1308.266113 1308.150757 1304.785034 1305.343384 1308.796509 1314.306519 1314.114868 1314.604858 1314.50293 1313.694702 1312.944702 1312.348511 1312.108643 1311.520752 1310.328613 1308.391479 1306.223511 1304.582886 1302.608643 1301.628784 1301.00415 1300.231689 1299.216919 1297.651489 1296.031616 1294.683594 1293.651123 1293.086304 1291.577148 1290.671021 1292.4552 1299.267944 1303.938965 1305.57605 1307.314575 1308.787964 1309.720459 1308.879517 1305.819336 1302.477905 1306.394165 1311.561279 1313.558105 1313.393799 1311.994629 1311.626221 1312.447388 1313.488647 1313.636963 1313.246582 1312.496704 1311.242432 1309.543213 1308.85022 1309.599731 1309.588135 1308.74585 1306.952393 1304.808838 1303.569092 1302.700073 1302.041992 1301.233276 1299.672241 1297.409424 1294.223022 1290.001465 1284.521118 1275.634399 1265.926636 1259.854004 1248.938232 1237.463013 1230.952637 1226.515991 1219.550049 1216.789551 1216.26062 1205.331055 1198.099854 1190.159058 1187.536255 1188.767456 1191.236328 1195.679932 1203.638794 1211.2052 1217.559448 1222.787354 1226.908936 1228.807129 1225.796631 1213.025757 1209.511475 1211.290771 1208.610474 1202.417725 1211.850464 1219.543213 1215.616455 1198.907104 1186.770874 1193.37439 1209.193115 1223.906982 1239.226685 1261.601807 1272.255371 1279.929199 1283.625977 1286.191528 1289.211426 1292.85498 1297.242798 1301.734619 1310.310791 1320.875488 1329.843506 1342.721924 1354.227661 1363.799683 1371.58728 1378.960693 1384.022583 1389.80481 1395.522827 1402.180664 1408.612061 1414.621826 1418.334229 1421.20459 1422.78064 1423.454346 1422.685059 1419.512329 1412.156982 1402.261719 1400.405151 1412.7146 1422.250122 1430.543457 1437.615967 -1361.85144 1366.829224 1368.016113 1367.432373 1366.486206 1363.086914 1357.187622 1354.07373 1367.53064 1370.338013 1374.177979 1379.640015 1382.192505 1382.448608 1392.431763 1407.285156 1420.084717 1431.346436 1449.268677 1471.989136 1489.554321 1512.376953 1533.718628 1555.346436 1584.973877 1600.609497 1605.373901 1620.297607 1637.994019 1651.503174 1663.204712 1651.214233 1645.094116 1648.380005 1650.282837 1653.169678 1656.961426 1660.444214 1662.103882 1662.980591 1663.244507 1663.174438 1662.056641 1658.924683 1649.727417 1642.045044 1636.084229 1629.172974 1623.668213 1617.779419 1607.314697 1597.459961 1586.609131 1576.313232 1556.416748 1545.380737 1548.283691 1559.705811 1562.513306 1559.18103 1556.997314 1547.143188 1527.019531 1507.925049 1490.476807 1474.116089 1462.013428 1448.086426 1435.043579 1424.12207 1417.675781 1426.92749 1442.98938 1454.333984 1465.697266 1477.933228 1484.168457 1492.331177 1512.379883 1530.04126 1539.692261 1543.509521 1543.788452 1541.745605 1541.744873 1542.822388 1547.938354 1566.214478 1580.764038 1594.049561 1604.330688 1613.654541 1621.481812 1623.585205 1623.039062 1619.679932 1615.599854 1610.733276 1597.243164 1581.221558 1571.479492 1567.703735 1563.263062 1555.926025 1549.738892 1544.023315 1536.074829 1521.03833 1499.092163 1481.049194 1466.278198 1451.971558 1441.645752 1429.971924 1412.595215 1395.684204 1380.234985 1373.268555 1363.859375 1351.92627 1359.288818 1374.105713 1389.996338 1401.822998 1414.085571 1431.549194 1444.215332 1455.962891 1467.860474 1475.644043 1476.544189 1476.709229 1476.436768 1477.196655 1479.332153 1481.676025 1483.77124 1486.20752 1489.217407 1491.148438 1489.694336 1483.564819 1475.364014 1463.923096 1461.005737 1467.93689 1473.542236 1479.933594 1489.63855 1503.949463 1508.414429 1513.228882 1512.659302 1505.52063 1497.928101 1491.666138 1481.88208 1475.042114 1481.354492 1482.043335 1475.338501 1471.258423 1464.635864 1462.364136 1458.912354 1455.370972 1454.668945 1457.285034 1457.675049 1454.37854 1447.360352 1435.954468 1424.631836 1425.997925 1433.455688 1439.81665 1444.869751 1448.897217 1452.438721 1459.417725 1462.703003 1469.44165 1475.909424 1478.11499 1478.896484 1475.976074 1461.906616 1448.758423 1438.680054 1420.621216 1412.086182 1415.975586 1425.490479 1437.369019 1459.550049 1479.01416 1495.802368 1514.953857 1531.826294 1544.102905 1553.87793 1561.604614 1563.383179 1555.92395 1548.443604 1541.366821 1533.281372 1525.389893 1517.356567 1509.963989 1503.467651 1497.782104 1493.822266 1488.09436 1484.974731 1480.300537 1481.189819 1479.979736 1478.223511 1476.364014 1473.843384 1469.623901 1466.19397 1460.532227 1455.172485 1452.841675 1448.771362 1446.671265 1442.57959 1437.887207 1435.414551 1437.588013 1445.947754 1452.328003 1453.699585 1452.077148 1443.794067 1429.591797 1423.350952 1422.118896 1416.219482 1407.823608 1400.40332 1396.016113 1387.08374 1374.085815 1365.883911 1362.313232 1361.738037 1358.934692 1353.096191 1358.312012 1364.992432 1369.987427 1372.654175 1375.573975 1377.096069 1371.945923 1363.78772 1354.687988 1346.956177 1340.409058 1347.98645 1346.887207 1357.179443 1365.570312 1371.53772 1379.996338 1392.693115 1400.900146 1405.393921 1398.153687 1390.530884 1384.319458 1378.799072 1382.522705 1389.499878 1396.373291 1404.051636 1410.188232 1414.035889 1420.527588 1422.95752 1432.057739 1448.114136 1457.602295 1464.056763 1470.450317 1476.450073 1484.793945 1500.312256 1516.27002 1530.280762 1547.328491 1566.664429 1584.298218 1598.542969 1612.055542 1619.350464 1620.586792 1608.453613 1588.736206 1571.920166 1559.882446 1542.346191 1526.770386 1514.730347 1503.308228 1491.387817 1479.539551 1474.984619 1483.938965 1494.012085 1500.600464 1500.157349 1495.264771 1490.748413 1487.047485 1483.604248 1480.266602 1478.27124 1477.609009 1477.475708 1476.618896 1473.263428 1474.547485 1475.180664 1472.959961 1464.815063 1457.448242 1450.825439 1445.890015 1441.150879 1435.290405 1429.69165 1424.700317 1419.578735 1416.601074 1411.921875 1406.846924 1400.804932 1389.373779 1381.794434 1372.56897 1359.650391 1347.577148 1361.517212 1369.442993 1375.72876 1379.307129 1376.893188 1371.771973 1366.76062 1361.889648 1355.709717 1348.933716 1342.484131 1338.046021 1334.203857 1331.03125 1327.976562 1328.005859 1340.745239 1355.73584 1355.068115 1352.078491 1355.436157 1356.795654 1356.920166 1356.181763 1355.682617 1354.010254 1351.561401 1349.467407 1347.36438 1346.052856 1344.712158 1342.706421 1341.039917 1339.534912 1336.253174 1335.194458 1340.482544 1340.838501 1324.791748 1319.031982 1330.915161 1330.548828 1322.793335 1309.704346 1305.871338 1294.892334 1283.776855 1280.224365 1284.78772 1290.226807 1296.995972 1305.04187 1322.415283 1302.833008 1288.860352 1294.625488 1304.789917 1316.737427 1320.527344 1324.976807 1329.436279 1335.698364 1341.470459 1344.197144 1346.175415 1350.058105 1360.928833 1368.67041 1359.516846 1350.20752 1349.639771 1356.659546 1356.234741 1353.051514 1352.298096 1356.228027 1364.88501 1369.10083 1370.168335 1369.501953 1360.506958 1351.647095 1357.392212 1365.198242 1367.821655 1365.859985 1366.719971 1368.901978 1369.340942 1368.675537 1361.062988 1351.578857 1342.191406 1334.263672 1328.901855 1325.332397 1318.329346 1319.515015 1319.588623 1318.496948 1316.012695 1310.675415 1306.672607 1309.143066 1311.395874 1313.717651 1317.908447 1323.740601 1328.475464 1330.93335 1331.228271 1330.196411 1331.753418 1335.319702 1336.285889 1335.352661 1333.620361 1332.237183 1331.057617 1329.61731 1324.02832 1317.61853 1315.630249 1324.173096 1317.04895 1310.280396 1311.472656 1313.916748 1317.379395 1319.550903 1319.826538 1320.299438 1322.680664 1325.146118 1324.779419 1324.448853 1323.140015 1321.38623 1319.679077 1317.422485 1309.63147 1304.282104 1304.63855 1306.14563 1305.895508 1305.054443 1304.112793 1302.962891 1301.076416 1299.490967 1297.384644 1293.85791 1291.995361 1295.002686 1305.925293 1312.032959 1314.675537 1314.660645 1314.599365 1314.248047 1313.812256 1312.731567 1310.06311 1310.554443 1315.127686 1317.585938 1317.859741 1315.932129 1315.706787 1317.825562 1318.732666 1318.916382 1318.574463 1318.044556 1316.787964 1315.577148 1315.007202 1314.945679 1314.639648 1313.836304 1312.241577 1310.231445 1308.541626 1307.672607 1307.150513 1306.732666 1305.233643 1303.21521 1297.627441 1291.535645 1283.253418 1273.051514 1263.98645 1256.300781 1243.06604 1234.758911 1232.708374 1229.331299 1224.189087 1219.771606 1206.168335 1204.496338 1200.679688 1196.03064 1189.64502 1187.758789 1189.458618 1193.447266 1201.554199 1210.473267 1218.174683 1224.96228 1231.02771 1235.04248 1235.033447 1228.011719 1226.639038 1229.05835 1225.19104 1219.259766 1229.439209 1234.810669 1229.104492 1212.105957 1196.828491 1194.087402 1210.693115 1223.80957 1246.52771 1262.771484 1272.427124 1280.074585 1283.977051 1287.115723 1291.511597 1295.945068 1300.522949 1306.926514 1314.146362 1322.478027 1332.154175 1343.477661 1351.797485 1362.644897 1370.360474 1378.137939 1384.8125 1392.061401 1400.990845 1407.664917 1413.94104 1418.978271 1423.204346 1426.755859 1428.534058 1429.426758 1428.887695 1426.436768 1421.175171 1413.377808 1407.280762 1416.337402 1427.249634 1438.633057 1444.859253 -1379.794189 1383.420654 1385.150513 1385.380249 1384.16748 1378.139526 1367.70752 1363.546387 1373.415039 1380.181519 1384.670532 1390.842896 1392.648682 1394.927734 1393.540283 1401.806274 1415.665527 1429.454834 1445.643555 1468.990845 1488.557007 1510.416748 1531.153442 1551.713135 1579.930054 1600.320068 1613.772461 1628.350708 1640.741211 1653.793579 1660.525757 1660.056885 1657.093384 1652.156128 1651.735962 1653.712158 1656.775635 1660.10022 1661.757446 1662.363892 1662.922852 1662.439331 1660.147217 1654.240234 1644.463257 1637.456299 1630.30127 1620.56897 1615.40686 1608.317749 1602.677856 1595.531616 1585.310913 1570.205078 1564.606079 1569.287109 1570.276733 1574.320679 1579.471313 1577.936523 1568.953613 1552.389893 1531.862915 1510.065796 1494.27002 1479.870728 1464.013062 1447.230225 1433.258423 1423.677246 1419.46936 1434.305786 1447.533936 1461.290894 1478.984375 1491.570312 1503.177002 1511.155518 1520.171875 1544.959595 1553.649048 1556.556519 1556.12793 1553.768188 1553.564331 1556.365845 1558.526855 1570.656616 1586.80188 1601.102905 1611.382568 1619.918823 1624.220337 1625.94397 1625.857422 1623.740845 1618.102417 1608.772827 1597.366821 1587.912109 1579.793091 1573.424683 1568.973022 1562.476929 1555.497314 1548.040771 1533.112793 1510.769409 1494.173706 1477.202759 1462.127197 1447.899658 1435.718994 1420.91272 1402.031982 1388.601929 1384.067505 1377.55896 1370.962524 1351.183838 1361.428955 1379.042969 1390.727173 1404.867676 1418.570679 1435.233154 1452.03186 1465.035034 1478.164429 1482.592773 1484.088745 1483.479858 1483.219238 1484.497803 1487.064209 1488.12146 1489.478394 1492.602417 1496.100586 1495.581177 1492.539185 1486.899292 1475.778931 1463.248779 1467.746704 1476.967285 1482.04187 1489.775757 1498.249878 1510.638916 1514.582886 1517.025391 1514.589966 1509.451782 1504.045654 1498.46228 1489.192993 1489.637695 1495.052856 1494.263916 1489.878784 1477.807861 1474.809082 1472.044067 1466.736206 1462.194702 1464.170776 1464.828247 1463.078491 1459.460083 1453.246582 1439.256104 1429.558228 1429.045166 1436.636108 1442.15979 1446.90564 1451.62439 1455.074097 1458.493164 1462.61731 1467.568481 1472.730713 1475.934082 1476.532837 1470.536133 1460.974976 1443.982422 1423.609375 1412.584351 1414.468262 1428.652222 1439.288086 1456.916748 1473.606323 1494.874634 1509.168213 1520.859253 1537.960449 1555.381836 1564.738159 1566.494873 1560.671265 1552.172607 1544.87561 1539.203369 1531.301147 1523.234131 1515.776978 1508.46814 1507.039673 1511.361084 1510.653931 1505.515015 1497.048706 1493.275024 1490.689331 1492.422119 1491.505005 1487.005127 1485.401001 1483.355713 1479.447144 1474.023926 1470.267334 1466.842773 1463.997314 1460.154175 1453.446411 1447.008423 1446.141113 1449.021362 1457.430298 1460.597656 1460.367432 1458.429077 1450.5802 1441.910645 1435.109863 1433.481934 1430.46106 1427.504028 1417.85498 1407.903931 1399.147339 1392.436401 1384.671387 1374.77002 1363.785522 1356.192871 1359.317505 1365.548462 1371.280029 1375.742554 1380.011475 1384.072021 1382.74292 1374.661499 1362.322998 1353.251465 1346.610352 1348.322021 1355.905884 1351.698364 1354.889404 1361.184814 1367.077026 1377.651123 1386.322021 1392.954834 1404.05542 1405.072266 1400.182739 1395.221802 1389.843262 1383.866821 1388.547852 1395.642822 1402.002563 1416.614502 1427.810303 1437.633301 1439.670776 1438.458252 1437.856934 1446.146362 1454.071899 1464.483643 1476.722656 1487.642822 1508.178101 1523.263794 1541.098511 1553.016235 1566.322876 1585.368164 1600.376221 1613.327393 1622.591431 1623.793823 1613.998535 1600.025269 1580.41394 1564.301636 1550.654785 1536.4729 1520.932861 1507.868774 1495.210327 1484.088013 1478.323853 1486.687256 1496.822021 1502.590698 1500.932983 1496.017822 1491.247559 1487.379761 1483.844849 1480.059814 1476.964844 1476.511353 1476.338623 1473.57312 1469.03479 1464.811279 1466.383301 1464.824829 1460.357056 1454.433105 1448.818359 1444.087646 1438.747925 1432.784302 1426.81897 1419.193359 1414.966553 1412.205078 1407.311401 1403.146851 1395.004395 1384.782104 1375.772217 1365.252441 1349.402588 1362.640259 1371.966919 1378.331665 1383.812866 1383.968628 1381.19043 1377.373413 1370.694824 1364.700562 1357.581543 1350.894897 1344.561768 1339.322144 1334.843262 1330.223511 1327.507568 1327.500366 1336.594971 1346.887085 1348.390259 1351.932861 1356.059326 1357.387573 1357.825806 1357.773193 1356.860596 1354.849487 1352.624634 1350.388794 1348.991455 1347.58374 1345.878418 1343.613159 1341.30249 1334.118652 1332.311401 1331.526245 1335.476318 1333.604004 1321.098022 1313.208862 1328.743408 1326.704956 1317.94104 1308.129761 1292.185547 1288.639404 1281.744507 1285.020874 1290.168579 1295.25415 1302.122192 1319.339844 1322.944092 1297.722534 1288.763184 1305.536865 1311.018066 1315.082886 1318.824219 1325.381104 1330.737671 1342.864868 1354.567993 1358.084106 1357.892822 1361.089966 1366.986084 1369.234741 1361.977173 1355.013794 1358.310303 1366.771851 1366.103271 1362.988892 1361.4646 1363.695312 1367.187988 1370.625977 1371.317383 1368.918579 1358.643677 1356.734009 1365.083252 1368.914917 1369.783081 1367.350952 1370.525879 1371.12915 1369.851196 1366.922485 1357.372192 1347.054077 1339.772827 1332.710327 1330.731323 1328.912598 1326.637085 1324.155884 1321.399536 1318.072144 1315.443115 1313.061523 1312.285034 1314.743774 1317.780273 1320.576172 1326.646484 1332.553101 1336.044678 1338.192139 1339.239258 1340.160156 1339.951538 1339.766602 1339.760742 1339.459229 1337.613403 1334.56958 1331.965332 1330.190063 1323.694702 1316.817017 1318.289062 1329.99231 1320.598633 1316.69043 1318.557495 1318.55249 1318.459961 1320.904663 1322.949341 1324.25354 1327.957153 1331.507568 1335.08374 1340.34668 1340.941162 1333.631714 1328.636353 1321.615479 1314.611328 1307.897217 1308.924438 1314.209473 1317.730591 1317.191528 1314.631348 1311.406128 1308.739868 1306.180176 1302.84436 1295.774048 1292.330078 1297.19165 1307.176147 1317.032471 1319.229736 1320.686768 1320.780518 1319.818726 1319.649902 1319.61853 1317.991699 1315.525879 1318.197021 1320.373657 1320.552124 1318.733398 1318.512573 1320.730103 1322.03064 1322.34729 1322.065674 1321.75769 1320.688232 1319.827026 1319.555054 1319.444092 1319.381958 1318.924561 1317.789307 1316.247192 1314.500488 1313.402588 1313.268555 1312.674316 1309.853027 1306.450073 1299.212036 1290.422363 1279.591675 1269.413452 1260.088257 1253.6073 1250.360229 1248.405884 1242.460571 1235.048706 1228.855591 1223.769653 1216.549805 1206.539795 1202.967896 1199.147339 1194.88269 1192.89563 1189.768066 1189.06189 1194.459961 1207.150391 1216.298462 1224.574707 1232.852417 1239.092041 1244.897827 1244.160278 1242.12439 1245.317383 1245.151733 1241.676636 1248.346558 1247.946655 1239.035034 1223.770874 1208.970215 1196.497681 1211.888062 1226.539185 1248.359619 1262.056763 1270.536621 1277.409424 1281.964355 1285.242065 1290.292236 1294.598633 1299.692627 1305.418701 1311.921265 1319.440063 1330.79187 1340.851196 1346.216309 1353.590088 1364.505981 1375.919434 1383.394653 1391.946167 1402.991333 1410.060303 1416.794189 1422.927856 1427.719727 1431.28479 1434.195068 1435.909302 1436.041016 1434.502563 1431.001099 1426.064209 1417.817261 1420.366821 1434.64856 1443.942139 1451.112915 -1393.904175 1400.356812 1405.930176 1407.059326 1403.771118 1391.80542 1379.889282 1371.172241 1376.767212 1392.627319 1397.912964 1401.939331 1405.168335 1406.693848 1407.536743 1409.928467 1414.383911 1422.778564 1439.681885 1460.271729 1481.359009 1505.835083 1525.797729 1544.249268 1569.644775 1597.02771 1613.554688 1624.739014 1637.097656 1647.4104 1654.56189 1658.14624 1657.552002 1652.205444 1651.155518 1652.641113 1655.89978 1659.131836 1660.884766 1661.629639 1661.824951 1660.76355 1656.999268 1648.952271 1642.136841 1635.673218 1627.821777 1620.380859 1612.819702 1605.272339 1597.967896 1590.476318 1583.199097 1580.116211 1579.738525 1585.322388 1586.461426 1593.812866 1600.315796 1590.717773 1573.980713 1550.153198 1528.497559 1508.518311 1493.400757 1478.944336 1461.18042 1445.247925 1432.567017 1422.427002 1431.081787 1442.499146 1453.013062 1469.028198 1486.603149 1504.295044 1517.948853 1530.573853 1543.536255 1555.69519 1564.185913 1566.899292 1567.320312 1566.69751 1567.400513 1568.362671 1569.598389 1573.509277 1589.771851 1600.966919 1612.849487 1622.434082 1626.358398 1628.070679 1627.849487 1625.253052 1617.303833 1607.757202 1601.64978 1596.472778 1590.370972 1585.351318 1576.188843 1568.187256 1560.078613 1550.265015 1532.434326 1509.31604 1487.588013 1470.452515 1452.709717 1439.604736 1423.631592 1407.779907 1401.918213 1397.323608 1391.731323 1377.921143 1368.342041 1352.505859 1362.862549 1379.191528 1389.970459 1402.643555 1421.012085 1436.049316 1454.587524 1467.999878 1481.584473 1488.081299 1490.652588 1491.730225 1492.466919 1494.743774 1495.705811 1495.921753 1497.610962 1500.696899 1502.04541 1499.291626 1493.851074 1485.773438 1472.99231 1469.951538 1477.478394 1483.775269 1488.205566 1496.18689 1504.452271 1518.581543 1523.453979 1522.565063 1518.38855 1514.679565 1510.438721 1503.399658 1497.007812 1501.587524 1503.386963 1501.07251 1493.872803 1485.616211 1483.229004 1480.2146 1475.585571 1474.0177 1474.607544 1473.898071 1470.661621 1465.632324 1456.934937 1445.891113 1437.406128 1437.940918 1443.920654 1448.135742 1449.02063 1453.568848 1459.552246 1461.605103 1462.729736 1466.272705 1469.16748 1471.419067 1470.105835 1466.072876 1456.983887 1441.521484 1418.508057 1414.309326 1424.049072 1434.778198 1454.408569 1466.663696 1481.82251 1495.637329 1509.153442 1518.646118 1534.203857 1550.606445 1569.248657 1569.800171 1558.61853 1548.001343 1543.324707 1536.19812 1530.020142 1522.238403 1513.810791 1514.095337 1520.550171 1521.766113 1520.90686 1517.37439 1505.200928 1501.58606 1497.774414 1501.434082 1503.033081 1499.680908 1502.447021 1501.738281 1499.371582 1493.95166 1485.695312 1477.997314 1472.155884 1468.796509 1464.117554 1463.059082 1459.182373 1459.663696 1472.493164 1476.078491 1472.248291 1466.376343 1457.916992 1450.819458 1444.640991 1440.063354 1436.014404 1431.878662 1427.460815 1417.129517 1407.801758 1396.814819 1387.373657 1376.239502 1363.595703 1358.838989 1366.312256 1372.515381 1378.030396 1383.606689 1390.211182 1391.710938 1385.927979 1374.365112 1360.734497 1351.572388 1345.195557 1354.921021 1358.492676 1356.446289 1353.115356 1361.042603 1367.351685 1376.598999 1386.002808 1393.196777 1403.646729 1407.333008 1408.826416 1406.669189 1401.794067 1395.996704 1388.460449 1394.210938 1407.871948 1421.234863 1433.989746 1449.669678 1460.485107 1461.86438 1457.668091 1456.934326 1455.526611 1467.551514 1482.454102 1500.06311 1518.907104 1538.605957 1557.796631 1571.54187 1581.093872 1593.506836 1605.787964 1615.496826 1622.763916 1622.494873 1614.832031 1604.263306 1591.009888 1570.633179 1554.871704 1539.075562 1524.290649 1510.122192 1498.723267 1489.937134 1487.422241 1492.788452 1499.268433 1503.293091 1500.998657 1495.833252 1490.280762 1486.406006 1482.96814 1479.100952 1475.378662 1472.28479 1470.313477 1467.907959 1464.514038 1460.615234 1459.748657 1459.086792 1454.826904 1450.272095 1445.403564 1441.507324 1436.349854 1429.373901 1422.353394 1414.138306 1407.545044 1404.543213 1399.929932 1393.199341 1386.114014 1377.36438 1368.260376 1353.554321 1360.615967 1375.181152 1382.4021 1389.501465 1390.79895 1387.936401 1384.008667 1379.608154 1373.346069 1367.250488 1359.976929 1353.227173 1346.34436 1340.494141 1335.598145 1330.540283 1327.94812 1328.932495 1329.264648 1336.567993 1339.52832 1347.674927 1356.252319 1357.863403 1359.088379 1359.179932 1357.473877 1354.775879 1352.507812 1351.520874 1351.11084 1349.567871 1346.728271 1343.401123 1332.811279 1328.470093 1326.811646 1325.541016 1322.629761 1320.852417 1311.914917 1303.346313 1316.970337 1317.116699 1311.098267 1300.477295 1288.764038 1283.599243 1284.891113 1290.62207 1295.613281 1301.140503 1307.821899 1325.576782 1327.065186 1303.672974 1289.047485 1304.136963 1314.397461 1319.170166 1323.311646 1328.106323 1332.392456 1345.781494 1361.825195 1368.992065 1370.733887 1371.449829 1372.056763 1371.907715 1366.060669 1368.142212 1366.434937 1368.86499 1370.529663 1369.621094 1369.547241 1370.248169 1372.275635 1374.220337 1373.479126 1369.295898 1364.669312 1366.335083 1370.086304 1372.598999 1373.921997 1374.143066 1374.831665 1373.447754 1369.351562 1362.605713 1352.0177 1341.148926 1342.838257 1343.885864 1342.641968 1336.84668 1331.665161 1327.685791 1323.313232 1317.888184 1316.333374 1315.490234 1317.642822 1324.366699 1330.644653 1333.053223 1336.372192 1340.242554 1343.221436 1343.883179 1343.608032 1343.091064 1343.222778 1343.186646 1343.009033 1342.75354 1341.305298 1334.988647 1331.652954 1327.574829 1320.857544 1316.963135 1319.667236 1325.34729 1322.876831 1322.165649 1322.586548 1322.772217 1323.076782 1324.060181 1325.039185 1326.129883 1327.415161 1329.26123 1336.705078 1342.154053 1342.0896 1337.181274 1330.577026 1320.577271 1314.870361 1314.005005 1315.853149 1318.554688 1323.040527 1323.266602 1321.937378 1320.140503 1318.225586 1312.583008 1307.716919 1301.645264 1299.644409 1301.507935 1302.848389 1308.720215 1316.940552 1322.769165 1328.159668 1327.067261 1325.467529 1324.258301 1322.783447 1319.799561 1320.240845 1323.041626 1323.65979 1323.376221 1323.146851 1323.874878 1325.158325 1326.197266 1326.079956 1325.221436 1324.125244 1323.655029 1323.329102 1323.132935 1323.092773 1322.861694 1322.392822 1321.560425 1320.17627 1319.030029 1318.968872 1318.423096 1311.949829 1305.78479 1296.338989 1286.060913 1276.786377 1269.607788 1265.170776 1259.335205 1258.404785 1251.727295 1243.485474 1235.885986 1230.596191 1224.957031 1220.302368 1210.72229 1206.0979 1201.7854 1197.635498 1197.932861 1196.094971 1190.948242 1189.250488 1192.634399 1207.235229 1220.1698 1230.588013 1238.427246 1246.810425 1254.693604 1260.626099 1260.174316 1258.116943 1258.004395 1262.099609 1259.831787 1249.428345 1236.047607 1221.210693 1203.60437 1209.702148 1225.10144 1245.341797 1259.208008 1267.259888 1273.340454 1277.937866 1280.924316 1284.533813 1288.554321 1291.893066 1295.326904 1303.372437 1309.823242 1317.439331 1326.73584 1334.074097 1347.134155 1358.000366 1367.919678 1376.786743 1387.979858 1401.581299 1410.250732 1418.228271 1425.5448 1430.928223 1435.640015 1439.122192 1441.795776 1442.889526 1442.873779 1441.099731 1438.155273 1432.241211 1427.94397 1437.839355 1447.9104 1458.687256 -1404.33374 1412.496704 1416.239258 1414.109619 1410.094482 1403.200684 1385.475342 1375.445679 1378.546997 1396.085449 1405.11438 1410.065186 1413.551147 1417.555542 1420.562866 1425.658325 1434.094482 1436.973633 1436.562378 1448.465576 1472.96875 1498.205078 1515.467407 1535.662109 1563.449097 1586.877808 1605.739136 1616.968384 1628.198242 1637.267822 1645.932007 1648.560913 1648.877075 1648.357666 1647.856567 1648.832764 1653.588013 1658.099854 1659.68042 1660.463257 1660.478149 1658.110596 1653.1604 1646.267212 1639.729858 1633.720825 1625.910767 1618.315796 1611.699463 1601.404419 1596.032959 1590.501343 1589.621948 1590.603027 1591.361694 1592.719849 1595.153076 1607.820801 1610.864624 1591.778809 1569.621338 1542.816895 1520.023804 1503.633545 1487.887451 1469.778442 1457.098999 1442.005249 1429.461304 1423.700073 1439.195679 1451.232056 1464.670654 1483.587158 1497.305664 1513.518188 1532.637573 1548.679443 1560.024414 1567.296631 1574.827759 1577.502808 1578.739258 1580.010986 1581.249878 1582.612793 1584.062134 1584.854858 1592.657593 1601.165161 1611.057129 1621.416748 1627.255737 1630.547241 1630.785278 1627.265259 1621.192505 1612.272583 1606.369751 1603.199585 1598.160034 1592.190308 1583.403931 1570.956787 1560.892944 1547.899902 1526.682129 1509.64856 1489.605957 1471.929199 1454.29541 1443.535034 1435.112549 1429.248169 1418.182983 1399.544434 1388.193726 1374.688477 1364.018311 1354.343506 1362.969482 1374.673828 1386.585571 1398.177246 1419.482666 1433.93689 1451.493652 1463.571777 1479.44751 1489.750488 1495.987549 1501.134888 1504.064575 1505.400635 1504.586426 1503.842896 1504.984619 1505.660522 1504.468262 1501.317505 1494.12146 1485.139526 1473.01355 1475.876343 1484.616821 1490.461426 1495.198975 1501.626587 1510.199707 1527.969482 1529.7677 1526.933105 1521.636353 1517.978638 1514.34375 1508.308838 1505.789429 1509.499878 1509.644775 1507.09375 1499.415161 1494.434448 1490.617554 1486.263672 1484.931519 1484.92041 1484.620239 1482.540649 1478.553345 1471.338989 1461.549438 1453.283203 1443.143677 1443.838257 1452.311523 1453.762451 1450.720337 1458.568115 1464.728882 1465.324219 1465.256714 1465.79248 1466.279419 1466.640991 1464.193481 1457.789551 1449.215576 1436.517944 1418.212402 1419.940552 1429.399292 1441.320679 1457.929688 1470.364624 1481.11731 1491.350464 1499.901978 1509.50415 1522.896729 1538.772339 1560.430176 1572.406616 1559.110229 1549.461792 1544.125366 1539.155029 1532.641235 1524.479004 1522.966431 1528.195435 1533.560669 1534.442749 1531.540771 1527.77478 1520.124878 1512.094727 1501.229126 1506.885254 1511.193726 1516.644287 1517.25061 1514.806152 1510.557617 1504.732056 1496.545898 1486.31604 1475.665649 1474.765137 1474.207886 1471.473633 1467.422607 1474.764038 1488.707886 1489.463257 1483.079834 1478.27356 1465.491821 1456.282227 1448.640381 1442.491211 1436.64209 1431.224854 1426.148071 1416.515747 1402.802979 1383.932251 1375.181396 1364.15625 1363.138306 1368.248657 1373.945923 1380.199707 1385.81543 1392.059814 1395.785522 1394.188477 1385.61853 1374.078003 1360.229736 1350.779175 1346.038208 1362.560181 1364.349976 1360.746704 1356.514648 1360.975952 1369.328125 1377.92627 1388.036621 1399.517212 1405.480713 1405.129028 1413.036865 1417.991821 1416.430786 1410.797363 1405.659912 1399.376709 1405.6875 1421.45813 1435.325684 1453.675049 1472.636841 1484.327026 1478.802734 1477.532349 1477.554443 1472.856079 1479.788208 1504.657593 1525.865112 1541.063354 1561.509277 1573.838867 1584.351074 1596.933472 1606.237427 1614.199951 1617.70874 1614.437378 1609.377563 1602.206421 1591.963623 1572.099976 1554.981689 1538.223511 1525.091675 1511.507812 1503.373901 1499.101929 1496.537231 1500.347168 1506.061523 1506.302368 1500.650391 1495.534058 1489.092651 1485.919556 1482.833252 1478.681396 1474.716431 1467.43042 1463.540283 1462.295532 1459.582275 1455.693726 1454.901978 1453.946167 1450.304321 1444.813232 1440.728882 1435.313477 1427.175659 1421.692383 1414.260498 1407.999268 1400.425781 1389.328857 1383.664551 1378.029785 1372.249512 1364.17688 1357.074219 1361.400879 1377.253662 1387.048828 1391.789917 1396.014526 1394.818115 1391.077637 1385.990112 1380.328125 1374.187622 1368.158813 1361.571533 1354.866089 1346.940063 1340.42395 1336.883179 1332.16687 1329.219604 1340.123047 1344.420288 1340.402832 1341.914673 1340.754883 1351.089111 1357.85144 1360.973999 1361.013306 1358.520996 1353.551147 1353.118652 1353.629761 1354.123413 1352.990967 1343.745605 1336.689087 1320.32373 1315.865479 1309.702148 1305.873535 1303.152588 1303.84375 1303.49939 1300.838623 1302.244141 1303.653198 1299.397461 1290.164307 1284.688354 1286.671143 1292.636475 1297.01001 1300.658447 1310.87146 1321.253784 1329.710815 1327.972412 1303.214111 1288.599121 1305.425903 1314.73645 1319.350708 1324.920288 1331.008911 1334.774536 1341.115356 1355.255249 1364.631836 1370.948242 1377.500122 1377.822632 1376.263672 1372.54187 1372.086914 1372.56958 1373.750732 1374.59436 1374.740234 1375.646851 1376.787354 1377.772095 1377.491455 1376.295166 1372.60022 1370.63269 1373.115234 1374.894043 1376.390747 1377.52771 1378.202637 1378.508789 1375.61438 1367.30127 1355.537476 1349.896118 1348.100342 1350.561157 1351.516724 1349.677734 1344.335083 1338.050293 1331.410278 1325.756714 1320.748779 1316.476685 1317.762939 1326.288208 1336.177979 1342.299683 1345.402588 1348.299316 1350.804565 1351.04895 1347.769775 1345.421753 1344.036865 1343.45105 1343.580322 1342.848511 1340.274048 1335.076416 1329.724609 1328.685059 1326.58252 1323.706665 1321.559082 1323.541016 1326.21582 1326.900757 1326.762939 1327.353882 1327.021729 1326.60144 1326.913818 1327.069336 1328.270874 1328.936401 1329.93457 1335.943604 1340.226074 1340.212524 1338.905151 1330.069092 1326.556885 1319.268066 1319.667725 1323.728638 1326.052246 1328.461548 1328.824829 1327.96875 1325.704468 1321.780518 1315.853271 1310.011841 1304.880127 1307.333496 1308.163574 1307.645142 1306.459961 1313.106689 1320.202759 1329.215454 1330.946045 1330.431152 1329.189209 1328.546387 1327.797729 1326.638184 1325.807129 1327.555298 1328.058838 1326.796875 1326.763428 1328.44812 1329.748535 1329.689697 1328.467773 1327.219604 1326.905518 1326.710571 1326.436279 1326.449341 1326.881226 1327.231567 1327.506836 1327.224487 1326.349121 1322.760986 1316.955566 1309.89917 1303.051025 1293.365479 1288.509644 1283.924438 1277.734009 1265.583496 1255.893188 1251.974121 1246.938599 1240.950562 1235.966919 1230.999756 1224.465576 1218.614868 1211.831909 1206.349121 1204.151489 1202.116943 1199.940796 1196.014526 1194.226074 1193.952026 1191.053589 1190.284302 1204.844482 1220.002686 1231.597534 1243.610107 1255.488037 1269.852051 1274.183716 1279.025635 1279.318604 1278.891846 1273.128052 1263.067017 1248.618652 1235.195312 1219.644897 1204.662598 1222.085205 1239.154297 1253.833374 1262.42395 1269.186279 1272.667847 1274.537109 1275.804565 1277.495605 1278.919189 1281.140747 1286.128296 1291.488281 1300.775269 1308.025391 1322.466675 1339.45459 1346.775879 1355.170898 1369.02063 1385.909424 1399.172974 1409.210327 1418.147949 1426.724365 1433.259033 1438.868408 1442.702271 1445.929199 1448.665649 1451.344849 1452.152466 1450.139893 1446.356323 1441.248291 1439.879761 1449.922241 1462.166016 -1415.681152 1427.19104 1430.018188 1426.306885 1413.830322 1404.028564 1388.373779 1384.893555 1389.796509 1397.852295 1407.492065 1416.52356 1426.286743 1431.784912 1435.133667 1442.852173 1449.781738 1449.764282 1455.858276 1456.498535 1462.846069 1484.921021 1508.145752 1523.862061 1542.090088 1574.018311 1594.007812 1605.410156 1615.521973 1625.525391 1631.601562 1637.359497 1640.252808 1641.460571 1642.793579 1645.407227 1650.434448 1655.542603 1658.319946 1658.745728 1657.071289 1653.884277 1649.506958 1643.467285 1637.021851 1630.348755 1622.720459 1614.499268 1603.260254 1595.892822 1596.262939 1598.44397 1598.090698 1596.483887 1597.589478 1599.442993 1608.859253 1623.211426 1610.278198 1589.420654 1570.636597 1543.101196 1519.44104 1501.119263 1482.283447 1466.756592 1451.549561 1437.337769 1425.404053 1432.324951 1445.393188 1458.148682 1474.056885 1490.922729 1508.882324 1523.131592 1539.91748 1557.816772 1572.450073 1580.167847 1587.161255 1589.529785 1592.50061 1593.508301 1593.6698 1593.709229 1594.456909 1595.157959 1595.953979 1601.461182 1611.712769 1619.74939 1627.161499 1633.291626 1634.237183 1632.708496 1624.572388 1616.479004 1613.73938 1614.079712 1606.984741 1598.620483 1586.366455 1569.383911 1556.541992 1537.163818 1516.487915 1498.379028 1483.731201 1468.756348 1455.536255 1445.323486 1439.60498 1427.144287 1410.817993 1394.437866 1381.826172 1370.622803 1356.813354 1359.170532 1368.120972 1375.82959 1384.685425 1395.013916 1410.186523 1424.961792 1440.568115 1455.363159 1467.153687 1484.48938 1496.616333 1503.647583 1509.209961 1511.969971 1512.989746 1512.938965 1512.01355 1509.790894 1506.308228 1501.55957 1493.730591 1484.657227 1475.186523 1481.9198 1490.221069 1495.046509 1501.031494 1510.429932 1520.281494 1536.843506 1537.581909 1534.194824 1524.161865 1521.0625 1515.98938 1511.138794 1513.5354 1515.653687 1515.530151 1514.769775 1511.239868 1502.898315 1497.790771 1496.557495 1494.399414 1492.750854 1491.718506 1490.047852 1485.157837 1476.121216 1466.239014 1458.997559 1449.509277 1450.661865 1456.968018 1459.270142 1459.435303 1464.535034 1467.541138 1468.276978 1467.808594 1466.168701 1461.596802 1454.227417 1451.352051 1445.485107 1440.404297 1428.9823 1417.058105 1424.603638 1432.297729 1439.007324 1452.38269 1465.006226 1472.142944 1478.45752 1489.55481 1501.253052 1519.46228 1538.442505 1556.003784 1566.897461 1562.677002 1552.051636 1546.756836 1541.96228 1536.439941 1524.328003 1529.550903 1538.009766 1548.047852 1551.04126 1543.198486 1536.078003 1529.112305 1519.733643 1510.092407 1516.127808 1524.24585 1528.835815 1526.96228 1522.557373 1517.062378 1509.812134 1501.053589 1490.199097 1484.416748 1483.282837 1481.547729 1478.083008 1474.376221 1484.852661 1500.584717 1504.052734 1488.536987 1481.259033 1468.411255 1456.122437 1447.326904 1439.578979 1431.87793 1421.843994 1411.913818 1403.120239 1388.565186 1370.68396 1364.167969 1368.628784 1371.726929 1375.21936 1380.793335 1387.269775 1393.658325 1401.306885 1401.606934 1393.477417 1383.19519 1372.31604 1358.709595 1348.879395 1360.474487 1370.468018 1370.100708 1365.795898 1362.706909 1359.48999 1368.008789 1377.209229 1384.036377 1391.978027 1394.523804 1395.814819 1404.779663 1413.107544 1423.91687 1427.548706 1419.519531 1412.742676 1407.990234 1413.9729 1431.719971 1449.69812 1472.843872 1491.281372 1503.011963 1501.484741 1499.807983 1493.679321 1484.910278 1500.972168 1524.957397 1540.989868 1558.746582 1570.587402 1580.739746 1592.390015 1604.223633 1612.678101 1612.0271 1604.447632 1600.17334 1594.322876 1583.12793 1567.266235 1551.48291 1533.928223 1523.732422 1508.769165 1504.472778 1503.504395 1502.131104 1512.26001 1514.10083 1509.295654 1501.80249 1496.965576 1490.947876 1486.252563 1482.740234 1477.858521 1473.631104 1467.847046 1463.689331 1459.581909 1452.621582 1450.264771 1449.426025 1448.815308 1442.538208 1436.848389 1431.458008 1424.484497 1418.024048 1412.448364 1407.481445 1401.628906 1393.589966 1383.433838 1371.77002 1364.335083 1360.302002 1363.081665 1367.389893 1378.02478 1389.281372 1396.257812 1401.577393 1401.798218 1398.630859 1393.078735 1386.62793 1379.758057 1373.804688 1367.489014 1361.023315 1354.169189 1346.917725 1341.938232 1340.638184 1336.098511 1336.167725 1353.788086 1357.194946 1350.207275 1356.162964 1351.752686 1354.074951 1358.200806 1363.511963 1363.586304 1360.654907 1355.299438 1355.822021 1355.286621 1353.955078 1347.175659 1332.767334 1318.954102 1315.168823 1316.974487 1317.619385 1320.230835 1318.274902 1313.6521 1307.880859 1303.555908 1293.546631 1292.740356 1289.362915 1285.621826 1289.831055 1298.516479 1306.251709 1308.246582 1303.386841 1315.513306 1327.798828 1334.609131 1323.993896 1306.575928 1293.773438 1303.926392 1310.397827 1317.151245 1322.66333 1326.370361 1331.610596 1336.975952 1343.380127 1353.771973 1364.88147 1376.734741 1381.335693 1380.428955 1377.399536 1378.194702 1377.051514 1377.673584 1379.362915 1379.141846 1379.813354 1380.817627 1381.292358 1380.811401 1379.790039 1378.951782 1379.176025 1379.547363 1379.805664 1380.224976 1380.356689 1380.618896 1380.228882 1376.758789 1363.549438 1352.200439 1352.985229 1356.363403 1360.131592 1361.235107 1357.617798 1351.8573 1343.901978 1335.95813 1328.413208 1320.081543 1316.904907 1322.897217 1332.30249 1345.132812 1357.677124 1357.282349 1355.853271 1355.111816 1354.39917 1349.930298 1345.690796 1343.313232 1342.079712 1340.386719 1336.613281 1331.986694 1328.154907 1327.668457 1327.474976 1327.721191 1328.632324 1327.422607 1328.255371 1329.956909 1331.154053 1332.033081 1332.188477 1331.722046 1330.397095 1329.251831 1329.44519 1332.505859 1335.185669 1338.739136 1342.324219 1344.132812 1345.131104 1345.037598 1342.871216 1337.015259 1327.757324 1329.175781 1333.426147 1334.509644 1335.396484 1335.071167 1333.714722 1330.640869 1325.055786 1318.24231 1314.084717 1315.518433 1317.662598 1318.963135 1318.401978 1317.226685 1316.124146 1315.392334 1320.987427 1329.654907 1331.827515 1333.813477 1333.725098 1332.786255 1330.045288 1328.243408 1330.474121 1331.156128 1329.252563 1328.151489 1330.492676 1331.975342 1332.161255 1331.036499 1330.092163 1330.156982 1329.917358 1329.638306 1329.903687 1330.686157 1331.416016 1331.994873 1331.63269 1331.124878 1325.977417 1315.139526 1307.808594 1302.71106 1298.84729 1295.444092 1287.217651 1273.236938 1261.762939 1252.263306 1243.62854 1239.731934 1233.546021 1230.782104 1228.728516 1223.416992 1219.656982 1218.749512 1211.128662 1207.417358 1205.105957 1203.328247 1200.204712 1198.483276 1197.819336 1196.113525 1192.852051 1190.456177 1201.42749 1217.579956 1231.07959 1245.287354 1260.739868 1270.582153 1279.265991 1285.417114 1294.304688 1290.810303 1276.323975 1263.986084 1247.981445 1233.674194 1218.737305 1214.705933 1227.531738 1246.61145 1255.240845 1261.615479 1265.365479 1265.172852 1265.716064 1266.517212 1272.618774 1282.562622 1292.967285 1304.171387 1310.450317 1313.932129 1317.082397 1324.180664 1334.570557 1347.655273 1364.007812 1378.349609 1390.633423 1404.596313 1417.217896 1426.249756 1433.038696 1439.669922 1444.640991 1449.229614 1453.186401 1456.261841 1459.05542 1459.104248 1457.807251 1454.542358 1450.757324 1450.472534 1463.596802 -1425.964111 1436.228027 1436.031982 1431.272461 1420.203979 1403.140991 1403.986572 1397.05127 1395.664062 1405.722534 1413.560913 1424.944702 1437.498901 1446.102295 1451.379639 1457.561768 1460.634888 1461.627686 1465.378052 1477.039307 1475.870728 1476.975098 1500.134644 1517.893433 1533.426758 1558.545044 1582.191406 1595.308716 1604.243164 1613.073486 1623.699341 1628.730713 1632.22937 1634.678711 1640.83252 1645.80603 1649.999878 1653.903931 1656.019165 1656.062988 1653.91626 1649.094849 1644.622192 1636.949707 1630.977417 1624.102539 1616.961304 1609.133545 1598.285156 1602.025146 1604.519165 1604.956909 1604.812744 1606.557983 1609.7146 1612.359863 1623.412354 1631.726807 1610.608154 1591.465332 1571.117065 1550.518066 1529.133301 1506.082764 1490.224731 1471.496948 1453.275146 1440.119019 1426.552612 1437.300537 1448.790649 1461.811035 1476.991089 1494.382202 1514.028931 1524.888062 1542.868896 1564.701294 1580.034302 1588.591309 1593.665527 1598.099243 1604.49292 1606.744629 1604.57373 1602.961426 1603.588379 1604.265747 1603.712402 1606.662842 1612.539062 1621.085449 1628.346191 1635.13208 1637.663208 1636.638672 1627.15979 1623.652222 1625.831299 1623.384033 1612.687988 1600.693848 1586.703735 1568.478638 1549.081665 1518.637207 1498.546753 1484.03064 1470.517822 1458.149658 1445.983154 1435.36731 1423.288208 1409.716431 1397.984741 1386.730957 1375.962891 1365.258545 1356.846802 1363.079102 1372.356323 1381.821533 1390.302612 1398.260986 1411.574097 1429.155762 1435.904663 1448.490845 1465.171753 1479.689209 1495.170654 1505.47876 1513.776733 1519.842651 1523.572632 1523.665161 1519.952637 1513.703979 1508.212158 1499.651855 1494.742432 1487.934448 1479.359131 1487.179077 1493.063477 1498.132446 1505.726562 1516.544067 1532.647583 1541.218628 1541.202881 1539.563477 1534.583008 1525.424927 1520.329102 1515.8927 1518.33728 1520.365112 1520.714111 1519.414917 1516.102661 1510.385986 1507.62439 1506.193481 1503.052856 1498.557617 1496.607178 1494.428223 1490.700562 1483.916382 1475.871338 1466.420288 1456.332275 1459.408936 1464.440918 1465.828369 1464.626221 1467.586304 1471.120239 1471.740967 1470.33667 1467.50769 1463.476318 1452.349365 1445.578247 1438.950806 1433.083374 1424.974609 1420.207275 1429.410645 1436.544678 1441.261475 1446.837036 1452.119629 1462.268799 1473.889526 1489.314331 1501.877319 1517.610718 1534.012085 1546.778564 1559.299683 1561.879395 1555.534058 1550.943726 1543.317993 1536.739258 1532.151123 1534.691528 1543.888794 1559.444336 1563.126831 1553.220337 1542.381714 1532.734009 1526.252808 1521.666016 1531.163452 1540.84436 1547.709229 1542.003418 1531.245483 1521.199829 1511.162354 1500.776245 1494.078613 1493.282349 1493.062012 1489.125366 1484.203735 1483.487183 1493.738281 1506.760132 1508.576172 1497.658081 1483.511597 1465.406616 1452.630737 1439.116089 1431.526733 1424.653076 1411.11438 1398.202637 1385.823975 1376.384155 1367.083374 1370.67749 1374.459229 1377.666382 1382.07605 1388.551514 1397.749512 1405.128418 1405.963379 1402.049683 1387.772705 1377.023804 1369.310303 1353.105225 1354.185303 1370.202759 1377.564209 1377.333862 1373.287964 1370.577637 1366.134033 1362.669434 1364.192749 1373.172119 1377.258789 1383.577881 1386.462646 1389.174683 1400.307617 1410.007202 1426.355591 1430.452759 1426.282959 1419.184448 1415.386108 1422.85791 1443.21167 1463.883057 1483.169678 1500.160156 1509.202271 1517.992554 1515.682617 1508.469727 1499.950317 1518.866455 1535.267822 1551.548462 1563.678955 1574.377075 1587.290405 1601.663208 1609.955444 1601.616577 1591.647217 1586.239502 1580.560791 1570.993896 1559.338867 1542.497803 1529.434937 1516.825195 1505.482544 1502.481079 1503.620972 1506.447876 1511.566406 1513.216064 1513.288574 1506.768188 1501.228638 1494.643799 1487.364258 1483.962769 1479.44165 1477.011597 1472.289062 1467.029053 1462.030151 1455.154297 1449.35083 1442.837158 1437.299805 1431.974609 1426.133789 1420.634399 1413.796631 1409.748291 1405.685425 1400.630005 1393.202881 1383.468262 1369.599976 1365.192871 1367.986572 1372.127686 1373.684814 1375.230469 1388.845093 1397.674683 1403.589966 1405.456909 1404.810913 1402.568115 1394.466797 1386.873047 1379.078003 1373.361572 1366.44104 1359.477783 1353.02478 1351.672729 1349.897583 1346.550293 1341.402588 1345.310181 1363.947998 1367.404297 1359.331299 1367.223877 1363.517456 1363.952148 1366.364868 1366.887329 1366.380859 1364.970215 1362.860718 1360.361694 1353.49939 1341.146362 1335.07251 1325.300537 1315.123657 1329.660889 1334.20874 1332.925171 1334.0625 1330.381714 1324.015991 1314.572144 1303.596069 1294.627563 1289.384521 1287.469604 1294.364136 1303.107056 1311.4198 1321.478638 1329.417358 1315.94165 1315.521606 1329.746948 1343.756958 1329.04248 1320.85083 1301.195435 1301.733887 1305.077271 1314.196289 1314.68335 1318.68811 1329.756714 1334.007935 1339.148804 1345.097534 1354.303955 1367.03833 1379.537354 1384.461548 1385.606323 1384.47583 1383.124878 1382.692627 1383.862183 1384.394531 1384.633057 1384.469238 1384.233032 1383.777588 1382.929321 1382.472046 1383.017456 1383.210938 1383.510254 1383.67981 1383.15271 1382.078369 1381.109009 1374.21521 1362.421875 1358.73584 1361.9375 1366.381714 1369.312256 1368.832153 1363.077759 1355.53125 1347.116943 1339.16748 1330.788208 1319.415039 1319.131592 1325.319214 1332.259766 1340.113403 1353.001587 1355.640137 1354.505493 1352.776245 1351.078857 1347.584106 1342.506592 1340.837646 1340.175537 1337.895874 1331.440796 1328.016357 1328.502808 1329.109863 1330.644165 1331.828613 1333.568726 1335.082153 1335.70459 1338.368652 1338.918579 1339.297607 1339.307739 1339.202637 1338.225098 1336.446167 1336.416626 1338.728638 1342.810181 1348.142456 1352.629639 1353.834229 1354.731567 1353.504395 1350.665894 1346.721191 1336.947266 1339.70874 1342.832642 1343.700928 1343.741943 1342.032715 1339.296387 1335.078247 1329.418579 1324.049683 1322.372681 1327.019531 1329.158691 1329.244629 1327.874268 1325.878174 1324.431885 1322.892822 1323.557129 1327.597412 1329.958984 1337.562622 1340.868042 1337.998657 1334.629517 1332.336304 1332.814453 1333.298584 1331.794556 1329.56958 1331.413208 1333.58313 1334.130981 1333.698486 1333.292358 1333.388794 1333.322021 1333.405029 1333.832886 1334.550537 1335.18811 1335.385254 1334.294067 1332.011353 1325.480713 1316.546509 1310.802368 1306.805542 1299.079956 1292.936646 1280.258423 1267.311646 1256.673584 1245.180176 1241.799927 1237.675659 1233.256226 1231.966797 1229.756836 1228.045654 1225.359131 1223.599365 1220.539551 1212.10022 1209.087646 1207.401367 1205.043579 1202.380981 1200.671143 1198.727051 1196.457642 1192.593262 1191.87915 1201.370728 1213.265869 1228.716064 1244.348755 1259.108765 1266.748413 1274.15271 1281.833984 1293.252441 1291.764038 1275.331665 1263.10498 1246.354736 1231.374756 1221.870972 1219.598022 1230.278687 1242.547485 1247.758301 1252.23999 1255.755005 1270.297974 1281.055664 1288.168823 1295.953857 1308.972412 1318.211182 1324.429443 1328.37915 1332.197754 1336.410156 1344.858521 1349.58728 1360.702393 1375.29126 1388.492188 1401.585571 1413.723633 1423.94104 1431.728149 1439.118164 1444.605835 1450.001709 1455.67395 1460.859009 1464.96875 1466.560425 1466.997803 1466.397217 1463.640747 1460.289307 1463.611694 -1430.23877 1442.057373 1440.360229 1434.080444 1423.946777 1414.456909 1415.101562 1406.571533 1400.555664 1414.612793 1426.457397 1434.77002 1446.549561 1457.953125 1465.225586 1474.704468 1482.161987 1485.770996 1481.60144 1497.911133 1497.06189 1495.414917 1495.321289 1517.197266 1542.364136 1570.289429 1589.902832 1601.565674 1608.860718 1615.776001 1622.585693 1627.127319 1631.350098 1635.682007 1640.77356 1645.82019 1650.04187 1653.350098 1655.585327 1655.411865 1652.948242 1648.151978 1639.736572 1631.102661 1622.991699 1617.7771 1610.343506 1608.545776 1610.902466 1612.191284 1612.859131 1612.206543 1612.512329 1618.774658 1623.315308 1629.43335 1636.959351 1621.455811 1604.666382 1586.633911 1568.911987 1550.723877 1529.157959 1506.0354 1491.350586 1470.781616 1451.304565 1439.680908 1431.303345 1442.139648 1450.616699 1461.992554 1476.155396 1495.466797 1514.028442 1522.682129 1543.566528 1564.876099 1580.736572 1590.843872 1599.421753 1612.152954 1616.601929 1617.011108 1614.285645 1610.871582 1612.420532 1613.65979 1613.939331 1611.713623 1611.638184 1621.744751 1629.033081 1635.636475 1641.116211 1640.301636 1635.049072 1633.614258 1633.017334 1626.491577 1614.730103 1602.242432 1586.591187 1573.036865 1550.796265 1523.583496 1502.834717 1480.156006 1462.879395 1446.567383 1429.171265 1418.457031 1404.61499 1396.470947 1388.868896 1380.642578 1374.379272 1367.614502 1357.308472 1364.084351 1376.637817 1388.116211 1398.307251 1411.103027 1425.823242 1439.499268 1452.056641 1466.375366 1481.949219 1492.018311 1502.99231 1513.075439 1522.088135 1533.742188 1544.364868 1538.858398 1528.723877 1519.518799 1510.880615 1502.99585 1497.965698 1490.675293 1483.294434 1489.718384 1495.797729 1502.038696 1512.021362 1525.448975 1540.818604 1545.871826 1544.792236 1542.747192 1539.910278 1536.764404 1524.515625 1521.948608 1524.529785 1526.999634 1527.494873 1525.051147 1521.424683 1518.420532 1516.958618 1515.314209 1510.694458 1505.634399 1502.171997 1499.144775 1495.469604 1489.593628 1482.798828 1475.324829 1463.19165 1469.676758 1472.390625 1471.596191 1471.359619 1473.687134 1475.750366 1475.435181 1473.757202 1468.952271 1461.797974 1455.320679 1445.224731 1436.419556 1428.78125 1420.25293 1426.855835 1434.711304 1443.499268 1452.683838 1455.785156 1458.75769 1464.756836 1468.845703 1483.9104 1498.302979 1511.710938 1525.666138 1536.388916 1547.508667 1552.879028 1551.534668 1548.705322 1541.305908 1535.26355 1535.770752 1541.81604 1547.078003 1561.851562 1565.270142 1558.966309 1548.853149 1541.5354 1536.595337 1534.043579 1542.928711 1552.46582 1552.087891 1546.589355 1537.793335 1523.96167 1511.701416 1500.72583 1503.09729 1506.12085 1504.331665 1499.567993 1490.487427 1487.363525 1495.986328 1513.007202 1514.303345 1505.845337 1490.600464 1462.279419 1447.177856 1434.020752 1422.167969 1412.2771 1400.938477 1388.22937 1379.408325 1370.287476 1372.072144 1377.338013 1380.789429 1384.308838 1389.285889 1398.926636 1406.151978 1406.768433 1404.723022 1397.415527 1388.862549 1377.512817 1366.734497 1351.162109 1360.501587 1374.830811 1381.610718 1382.644409 1380.058472 1379.293945 1373.077515 1368.118286 1370.28186 1376.995728 1383.937622 1391.542725 1396.73999 1396.543823 1395.20874 1400.300049 1413.942017 1426.613525 1430.677124 1430.296875 1425.966064 1422.963745 1430.966309 1450.235352 1469.945557 1487.621094 1502.809326 1517.597412 1531.775269 1532.319702 1526.727661 1515.153564 1527.350952 1541.15686 1556.084473 1571.655029 1585.033813 1599.723755 1602.919189 1595.369751 1582.425415 1572.305908 1567.63562 1561.019165 1549.724609 1534.196777 1521.593018 1508.150879 1501.335205 1497.044922 1500.833618 1503.026489 1506.687988 1509.712891 1512.110962 1509.237183 1504.183105 1500.454224 1491.411499 1485.867676 1482.477051 1479.251343 1475.436646 1468.52356 1462.580688 1455.386475 1448.552368 1439.251343 1429.652344 1422.531616 1418.036499 1412.678589 1407.539185 1403.465942 1397.093262 1389.494751 1381.24707 1371.839111 1373.006958 1381.263672 1384.019165 1384.613892 1383.314331 1386.626953 1396.606812 1403.656372 1406.709961 1407.008179 1405.970459 1403.196045 1393.962891 1386.417725 1378.68042 1373.437256 1368.39502 1358.756348 1353.518066 1356.759033 1357.923706 1355.405518 1346.335571 1349.740967 1371.916382 1377.797485 1370.306763 1372.727051 1372.148926 1372.141479 1371.750122 1371.755371 1371.144775 1369.453857 1367.186279 1365.486572 1365.08606 1356.55835 1339.776733 1318.462891 1325.580444 1343.863647 1350.231201 1351.382202 1351.561523 1342.81665 1321.459595 1310.02478 1300.248047 1292.110229 1288.543457 1295.991211 1303.583252 1309.735229 1316.911377 1334.845093 1340.751709 1333.79187 1315.181885 1330.553467 1339.074341 1334.02832 1324.705444 1304.445679 1303.40686 1304.713379 1304.619385 1314.760742 1321.610718 1331.272583 1337.610596 1340.460815 1341.358032 1350.752808 1359.471558 1372.720337 1384.414795 1391.984131 1391.630371 1389.787842 1388.428223 1388.876831 1389.783569 1389.353882 1387.968262 1387.283936 1386.62207 1386.012817 1385.783325 1386.480591 1386.879883 1387.118164 1387.308594 1385.834961 1382.787476 1379.941284 1368.731812 1365.012085 1367.833374 1370.467407 1374.127075 1376.101807 1370.167725 1364.237183 1355.480347 1346.412231 1339.073608 1332.18396 1318.118774 1320.564331 1325.446899 1328.789307 1333.871704 1338.655151 1344.05957 1346.093262 1347.674805 1348.252808 1346.764526 1342.578003 1341.432129 1341.133179 1340.597046 1338.001831 1336.58313 1336.193726 1337.427612 1341.252808 1344.641602 1346.203003 1346.161377 1347.025757 1348.082153 1348.570923 1350.896118 1351.579346 1349.740479 1347.572144 1345.03833 1343.764648 1346.97876 1351.697876 1356.4646 1359.358643 1361.630005 1363.839478 1364.470825 1361.695923 1357.062134 1348.208252 1354.295166 1357.237305 1356.888428 1355.484619 1352.780273 1348.176636 1341.879883 1335.349365 1329.450684 1332.818115 1336.35498 1338.67395 1339.198975 1336.602173 1334.725098 1333.583618 1332.305298 1333.122437 1332.029785 1330.778076 1337.007202 1341.951904 1342.262207 1340.692139 1338.314209 1337.000854 1335.77124 1334.733521 1333.923828 1334.675537 1335.666626 1336.459717 1336.740601 1336.775391 1336.925171 1336.951294 1337.188477 1337.761963 1338.422607 1338.981934 1339.41748 1337.546265 1331.459839 1324.369019 1316.679443 1309.617554 1304.482056 1293.585815 1281.705566 1269.490845 1262.674805 1256.131348 1250.043579 1244.79126 1242.855103 1240.715088 1236.573608 1233.755859 1232.698364 1230.594238 1227.139893 1221.255737 1218.281982 1215.130737 1211.804565 1207.860107 1205.197266 1203.119751 1200.935791 1198.531372 1195.612671 1191.151367 1193.489258 1203.231689 1214.801392 1229.538818 1246.613403 1256.89502 1261.815552 1272.863281 1285.293091 1298.122437 1291.706421 1277.954346 1265.41626 1247.404907 1243.882568 1240.464722 1232.131592 1231.695923 1242.385986 1253.314209 1266.898438 1278.993286 1289.811279 1298.075317 1307.367554 1318.158569 1328.31665 1333.442627 1337.808594 1341.457764 1347.172852 1354.463867 1363.276123 1365.562378 1373.129395 1383.016235 1393.281128 1406.40918 1417.796265 1427.888672 1435.983765 1442.225586 1449.129272 1456.521851 1463.207886 1468.071655 1472.272827 1474.512207 1475.260254 1474.158936 1471.935059 1472.627319 -1431.352417 1444.328125 1443.344971 1436.650269 1427.173584 1427.510498 1426.500977 1415.019409 1409.343628 1424.432129 1438.074585 1446.272339 1455.78064 1467.695312 1478.209595 1490.510742 1500.389038 1508.199951 1510.476685 1513.911011 1511.363037 1510.286621 1506.563354 1518.168091 1546.231079 1578.263428 1600.14978 1610.192871 1621.567261 1626.702393 1628.545776 1629.648315 1632.315063 1635.890991 1641.03894 1645.773193 1649.981445 1654.489258 1657.554443 1656.887329 1653.571289 1649.496826 1644.16333 1634.306519 1622.910278 1617.870361 1613.131104 1614.114624 1616.198242 1617.570068 1618.518188 1619.593872 1623.750122 1630.047363 1637.338379 1641.259766 1625.591553 1607.651001 1592.626709 1574.555542 1560.472046 1541.369873 1518.265137 1503.817017 1486.987305 1472.109985 1451.715088 1435.588501 1434.371948 1444.952148 1457.606689 1467.268799 1474.7052 1487.968262 1509.325073 1519.111694 1541.158691 1563.79187 1577.128784 1591.70813 1605.737183 1620.568726 1626.223389 1626.8479 1623.900146 1621.934814 1622.313232 1623.23999 1622.846558 1621.769043 1620.216309 1620.433228 1630.441772 1639.41626 1646.73938 1646.039429 1644.181274 1641.702393 1637.592529 1627.332642 1615.288086 1601.149902 1585.187866 1570.351318 1549.322144 1525.609863 1508.676514 1485.642212 1465.836426 1446.991699 1430.244141 1415.467529 1401.20459 1394.345215 1388.532593 1383.302979 1377.998779 1371.273438 1363.775513 1363.629883 1380.808716 1392.399048 1404.37793 1420.57373 1440.270874 1452.867188 1464.759155 1478.719482 1487.635742 1499.608398 1516.994629 1531.664062 1540.278198 1552.55542 1561.887451 1552.87793 1536.358154 1523.463867 1513.991089 1507.667236 1502.714111 1494.443726 1486.555176 1492.139404 1498.639038 1510.13147 1524.194458 1539.38147 1548.554199 1549.8573 1547.903198 1545.343506 1542.777466 1539.916504 1533.568237 1524.839478 1530.78064 1537.83728 1538.497437 1537.291992 1530.675415 1527.75354 1526.6521 1523.825317 1518.930298 1514.609985 1511.1073 1506.186401 1500.684448 1494.609253 1488.699585 1479.591064 1475.788208 1482.223877 1481.000732 1476.389038 1475.216919 1478.640381 1481.13623 1481.152344 1478.496704 1473.144287 1466.410278 1453.939087 1446.602539 1439.919556 1426.188232 1422.090454 1429.11145 1439.095337 1451.726196 1465.532959 1474.612671 1470.606079 1477.440674 1483.265259 1481.789185 1487.932251 1501.328735 1513.099487 1525.356934 1535.438232 1546.590332 1547.797363 1545.294312 1538.265015 1538.722534 1539.903198 1549.502441 1557.808838 1565.948975 1571.887085 1566.996948 1558.038696 1555.953369 1553.171143 1546.393433 1550.480835 1552.132446 1550.740601 1544.467041 1536.284912 1524.996948 1510.721313 1511.59021 1515.283325 1516.555908 1515.212036 1508.587769 1497.81311 1490.872192 1496.865967 1513.632812 1516.43042 1513.510132 1496.619263 1464.109009 1445.327759 1432.334229 1419.035889 1404.261963 1390.539185 1379.299438 1373.837769 1370.880249 1378.238159 1383.110718 1387.06189 1390.125977 1397.325684 1405.050415 1407.677856 1406.87854 1402.981201 1390.538452 1382.682495 1374.807495 1367.797974 1352.475342 1362.820435 1378.967163 1386.530151 1388.339233 1386.479736 1385.159668 1382.038086 1376.752563 1375.895996 1381.776733 1388.256226 1397.40625 1405.799438 1405.330444 1401.889526 1399.309448 1406.855469 1418.453491 1428.623657 1438.634155 1438.687378 1435.024658 1428.878174 1437.910767 1456.674072 1475.614136 1493.5979 1512.482788 1529.571045 1540.542725 1547.735962 1544.436768 1537.994629 1549.255615 1560.168335 1575.31189 1584.858154 1600.67981 1600.715088 1592.476074 1577.811768 1561.504883 1554.858887 1548.16272 1535.856567 1523.124634 1510.219482 1500.407715 1494.569946 1489.578613 1491.898071 1498.712402 1503.52002 1505.671387 1504.695435 1503.783569 1503.226318 1502.332153 1495.645508 1487.830688 1484.20459 1480.246094 1476.28186 1469.373779 1461.946655 1452.280029 1445.303467 1437.074707 1426.890991 1414.932495 1410.327393 1405.310425 1399.854736 1392.971802 1384.206665 1377.657593 1372.084473 1376.060791 1386.271484 1392.923584 1396.091919 1396.504639 1392.951172 1392.381958 1402.529785 1407.316162 1409.194214 1407.88269 1404.853516 1400.275513 1392.140625 1386.204346 1380.375488 1374.201538 1368.12207 1363.309814 1363.231689 1365.014038 1363.827759 1359.587158 1354.349976 1348.223267 1370.028198 1380.869995 1380.241455 1379.662354 1380.150513 1379.541382 1377.911133 1377.17749 1376.375488 1374.622192 1373.362549 1371.523315 1368.774048 1356.927124 1336.42334 1320.838867 1337.989624 1353.129761 1358.090698 1357.926514 1354.311279 1340.091919 1321.892944 1307.454712 1295.660034 1290.452148 1291.223389 1300.187866 1307.956177 1313.793945 1328.602173 1342.402588 1344.987671 1336.842896 1326.612061 1332.1604 1331.144043 1327.074829 1315.147217 1303.995972 1303.912598 1311.70752 1304.553467 1316.179077 1328.826904 1338.083496 1342.596313 1344.921875 1348.760376 1352.894043 1357.982666 1366.214111 1378.539062 1390.866211 1392.762085 1392.723999 1392.355591 1392.494507 1393.075562 1391.980835 1390.841553 1390.440186 1389.807495 1388.669678 1388.761597 1389.137451 1390.281494 1390.780884 1390.714844 1388.361328 1382.645264 1377.394409 1374.422852 1374.835449 1376.945068 1378.604614 1379.755127 1377.490356 1369.634399 1361.748047 1352.670288 1343.212402 1337.091064 1331.56897 1317.526611 1325.693115 1329.140381 1328.047363 1328.391968 1328.703857 1337.251465 1339.736694 1343.127563 1347.585693 1348.282837 1346.628052 1344.449219 1343.831543 1345.458008 1346.921021 1347.177124 1345.634888 1346.290894 1351.859497 1354.764282 1355.973755 1356.630493 1357.194824 1358.076416 1358.998413 1361.000854 1362.316528 1362.122803 1358.553345 1354.727539 1352.956055 1356.095947 1359.530762 1361.923096 1364.453003 1368.245605 1370.854248 1372.490112 1372.862183 1371.584229 1365.444702 1368.560059 1371.310669 1370.22229 1368.133423 1365.503418 1361.066284 1355.26416 1341.124146 1340.342407 1342.423462 1346.539185 1353.391602 1354.734253 1347.032349 1343.420898 1341.363525 1340.748047 1341.821167 1339.883911 1337.791992 1338.204224 1340.660889 1342.373535 1343.618896 1342.132568 1339.844482 1338.450317 1338.066772 1337.553101 1337.979858 1338.407104 1338.819092 1339.454712 1339.781738 1340.158569 1340.398926 1340.642212 1341.271118 1342.409668 1342.674194 1342.720703 1340.901001 1329.75 1322.168945 1313.675293 1304.384888 1292.846924 1284.458374 1278.799194 1274.092529 1269.923218 1263.715332 1259.070068 1256.425293 1252.60376 1247.090454 1243.795654 1243.531006 1240.21167 1235.762085 1231.171631 1227.705811 1224.866821 1221.179688 1217.581421 1213.056396 1208.063965 1205.429565 1203.090332 1200.29126 1197.049194 1192.79126 1192.503784 1198.805908 1209.965576 1218.469238 1227.546875 1237.897705 1253.927124 1268.574097 1277.924561 1295.216675 1299.059326 1298.829712 1286.560669 1273.744873 1260.497314 1255.244141 1249.410156 1240.549194 1241.437256 1254.480957 1269.111816 1278.650391 1292.220581 1301.508057 1311.868286 1321.359131 1330.250122 1337.660034 1345.211792 1354.5354 1360.322144 1368.667725 1375.022583 1379.484497 1383.374023 1391.056274 1398.569458 1407.860107 1416.076172 1423.802734 1429.736816 1437.505371 1447.101196 1455.775757 1464.859497 1471.97168 1476.739746 1479.487671 1481.515625 1482.735229 1481.457886 1480.868774 -1439.578979 1447.860107 1450.653687 1443.885498 1435.533325 1438.349243 1432.47998 1428.832764 1420.949341 1432.622925 1448.743164 1459.336182 1468.088623 1475.161133 1490.21936 1504.12854 1517.630127 1524.865479 1526.00293 1524.868774 1521.395752 1521.723877 1520.790161 1520.157471 1546.050659 1582.201416 1601.915771 1615.487061 1626.782349 1633.268311 1634.887451 1634.221191 1632.605957 1636.078247 1641.008057 1645.990967 1650.85144 1656.026855 1659.77478 1658.506104 1654.524292 1651.087158 1646.73645 1638.850464 1628.452393 1619.625 1622.036377 1621.438965 1620.607422 1623.387939 1625.695068 1627.701294 1632.663208 1644.546265 1651.424927 1638.200562 1620.597046 1601.171631 1576.025024 1561.869263 1543.337769 1524.672363 1506.519653 1495.078369 1479.812378 1466.586792 1448.735229 1437.578613 1435.688232 1446.718384 1464.486816 1480.14563 1491.260376 1503.919189 1513.309082 1520.76416 1536.536621 1557.748901 1578.83252 1597.19397 1613.436035 1626.404541 1633.858887 1637.590088 1636.411011 1632.419312 1631.771973 1630.4729 1630.38208 1630.280273 1628.453491 1625.253174 1632.778198 1644.943115 1650.497925 1651.55835 1650.580688 1646.044678 1637.021484 1623.55896 1610.62561 1595.840332 1577.561768 1561.271729 1536.827759 1519.726562 1505.696533 1486.78418 1467.673462 1449.855835 1435.024414 1420.19104 1402.510376 1396.211914 1390.682617 1384.752197 1379.399292 1372.898804 1366.714478 1363.160522 1383.955078 1394.874023 1409.577026 1432.85144 1451.147949 1467.641479 1478.605103 1483.551514 1492.219238 1507.195435 1527.785889 1550.748535 1561.228882 1566.636963 1572.054932 1560.875854 1543.181519 1527.340088 1517.334106 1510.27771 1505.132812 1498.739746 1489.932251 1494.974487 1502.092163 1516.525391 1534.74646 1548.674561 1553.988647 1554.123657 1551.262329 1547.622192 1545.133667 1542.284546 1538.056885 1533.129883 1536.196533 1540.561768 1541.880249 1541.739014 1541.054077 1540.544922 1539.683716 1537.633545 1529.817383 1526.06543 1520.978516 1514.19812 1507.314697 1499.75293 1494.060791 1486.433838 1486.946411 1491.370239 1490.322266 1483.494385 1481.3479 1483.930786 1488.404053 1488.380737 1486.196167 1478.393188 1468.971802 1459.161743 1450.060547 1443.689087 1427.842529 1424.090332 1431.994141 1442.197388 1454.106323 1468.426636 1479.518555 1484.63269 1490.168335 1495.022095 1496.529907 1499.038208 1507.314819 1517.075073 1525.837646 1536.973877 1548.175293 1548.705322 1546.9646 1548.901123 1548.981934 1545.943115 1553.209961 1565.82666 1577.396484 1583.985352 1578.487915 1570.235962 1563.435425 1561.38147 1556.454712 1551.160645 1547.00647 1541.672119 1537.940308 1530.528687 1522.774902 1517.364136 1521.528198 1526.681763 1527.327393 1522.98645 1512.840576 1498.679565 1487.360718 1489.488892 1505.804199 1511.885498 1508.915649 1488.806519 1462.40625 1443.413818 1430.312256 1418.135742 1403.141602 1390.651733 1376.053101 1371.546753 1377.080444 1385.567383 1389.963501 1394.042847 1399.402222 1404.278442 1408.084106 1408.042603 1406.42981 1398.111206 1389.896606 1383.47998 1375.624756 1368.338745 1354.512573 1363.033569 1380.153442 1390.515991 1398.502197 1392.061523 1393.658936 1392.669922 1383.130249 1377.466553 1386.359741 1403.02124 1407.519165 1410.435669 1413.493164 1412.763184 1405.133423 1405.300537 1412.322388 1426.863892 1439.530151 1444.143677 1445.921021 1439.393311 1434.508911 1445.24707 1462.882202 1480.397339 1505.106812 1524.657715 1539.554688 1552.580078 1556.891602 1558.970947 1561.128662 1566.333618 1574.875488 1584.453979 1596.785645 1595.636841 1588.020142 1573.40332 1557.618408 1540.557129 1529.349854 1523.984863 1511.736694 1501.841675 1492.295166 1488.105835 1485.937256 1488.806396 1495.632324 1500.455444 1500.009766 1496.423462 1495.805786 1497.550659 1502.255493 1497.690918 1490.357422 1485.592529 1480.469482 1476.112549 1469.06311 1459.86084 1448.708496 1440.940308 1432.014526 1421.902954 1411.144775 1402.804932 1393.735107 1386.307129 1377.238647 1375.457397 1374.496094 1376.161743 1387.424438 1397.03418 1404.93396 1409.96521 1411.035522 1407.48291 1402.512695 1408.270996 1411.532715 1412.552246 1409.406006 1401.381104 1397.85498 1390.504272 1386.281006 1380.624146 1375.415894 1367.76001 1368.39917 1371.610596 1371.878418 1368.56897 1363.694458 1356.091431 1350.399292 1362.196289 1376.467773 1383.521484 1386.415527 1386.053467 1384.899536 1383.559082 1382.330688 1381.099243 1379.947998 1379.438354 1375.997314 1366.833618 1357.156616 1337.791992 1327.19165 1347.94873 1359.55542 1359.185913 1351.24707 1341.684814 1330.609497 1317.527222 1304.158691 1297.30896 1292.109009 1290.782593 1298.595825 1308.735107 1315.667358 1333.097046 1346.325562 1347.615601 1342.561279 1339.626099 1340.057129 1332.113647 1328.030273 1322.453247 1311.619385 1302.593994 1316.073364 1319.856812 1315.338623 1322.138794 1337.779785 1343.483887 1346.274414 1351.769775 1356.119507 1359.730103 1365.390991 1375.41748 1384.493286 1390.700317 1393.081421 1394.070312 1395.15686 1395.864136 1394.813232 1393.580444 1392.417969 1391.692139 1391.160278 1391.32959 1391.544678 1392.036133 1392.072632 1391.966064 1390.359253 1383.570435 1379.134766 1380.393555 1380.393066 1380.991211 1381.124634 1378.94397 1371.776245 1364.935181 1357.018066 1349.401978 1340.997681 1335.729126 1327.917603 1316.907593 1332.000244 1337.017334 1334.113037 1335.432129 1339.333008 1340.811523 1341.574341 1347.410522 1351.046021 1351.759521 1352.489014 1351.082397 1350.387817 1354.289795 1356.808472 1356.803711 1354.712158 1352.41748 1357.956787 1361.41394 1363.518311 1365.152344 1366.37915 1367.236694 1368.987793 1369.870239 1371.556274 1372.079712 1370.233154 1366.075562 1362.5896 1364.27771 1366.774658 1367.936035 1370.884277 1374.36792 1377.171997 1379.619263 1381.116821 1381.246338 1378.256592 1379.999512 1383.190918 1383.552368 1381.962891 1378.618286 1374.447388 1367.186279 1359.273926 1352.604858 1358.462769 1359.759155 1366.008545 1364.439697 1359.648438 1354.771606 1350.597168 1353.018555 1353.679565 1349.699829 1343.84668 1341.122192 1340.988525 1341.179199 1345.037964 1344.651245 1341.965332 1341.173828 1340.931152 1340.335693 1340.347168 1340.921265 1341.561646 1342.108521 1343.163452 1344.445923 1346.104858 1348.016235 1349.393433 1346.339355 1344.626221 1344.015747 1341.375977 1326.725464 1317.373535 1306.067261 1301.65271 1295.245728 1294.025146 1286.994629 1282.55542 1275.882202 1271.141357 1268.361328 1262.9823 1258.835938 1253.98999 1252.99646 1249.70105 1246.334106 1241.293701 1235.651367 1233.706665 1232.68103 1229.277466 1225.164062 1220.026978 1213.919434 1208.273193 1205.342896 1202.348511 1198.688599 1194.523682 1192.108643 1195.756958 1203.583984 1207.663696 1214.220947 1231.524292 1250.911133 1264.820557 1272.433716 1280.244629 1292.389893 1303.430176 1308.233765 1297.5 1284.684204 1274.258057 1265.873901 1260.771973 1246.006104 1243.657227 1257.723633 1272.285889 1282.527344 1294.972046 1304.669067 1315.443359 1324.275879 1333.90564 1344.709351 1354.757935 1361.543823 1371.151733 1381.062866 1388.032593 1396.525146 1404.968994 1408.699951 1414.204224 1420.350952 1426.229004 1432.164307 1439.422119 1446.673828 1456.446289 1466.606567 1474.537842 1479.152344 1483.018066 1486.578857 1489.231689 1489.836304 1489.056885 -1447.133545 1454.678101 1457.270264 1454.253906 1448.053223 1446.636353 1447.178345 1445.95459 1437.227905 1441.350952 1456.407959 1468.840454 1480.028931 1497.515503 1506.441528 1525.25293 1537.873413 1545.4104 1546.575195 1539.621338 1534.613647 1535.644775 1538.595703 1532.759766 1542.940674 1582.715332 1602.899658 1622.752197 1633.777222 1638.247925 1639.397949 1638.094971 1635.928833 1637.962646 1642.90332 1646.906128 1651.604858 1656.792114 1659.912964 1658.922485 1655.270386 1651.750122 1647.628296 1639.678223 1631.587158 1625.644287 1627.993408 1629.130249 1631.811279 1636.121338 1636.943115 1636.857788 1646.788452 1651.298218 1649.719849 1637.274048 1616.48645 1601.861206 1583.5 1557.634399 1531.659302 1512.67334 1496.069458 1484.101196 1472.638672 1460.763794 1448.536011 1437.900024 1437.399536 1451.344482 1472.966064 1491.647095 1503.506836 1516.390503 1525.478882 1539.969116 1556.745728 1567.302124 1581.706543 1598.25293 1613.341309 1626.858887 1635.031982 1645.172607 1647.336792 1643.168213 1639.960083 1637.429199 1637.972412 1638.648193 1638.128662 1636.457275 1635.867065 1646.406372 1652.634277 1657.911987 1656.326904 1643.434937 1627.924194 1613.55542 1600.484375 1584.103638 1562.847778 1544.602905 1522.022827 1508.057495 1493.907715 1478.02356 1464.261108 1446.526001 1432.446655 1419.47168 1403.980225 1396.309326 1390.487549 1384.755737 1379.841064 1373.250488 1366.262329 1363.214966 1381.924683 1394.735596 1414.720459 1438.61792 1459.394653 1470.31543 1475.977783 1480.140259 1493.00647 1507.550049 1528.089722 1555.771851 1574.387451 1576.811646 1577.093384 1564.1521 1547.760864 1529.039917 1519.293457 1511.82959 1506.818237 1501.567505 1492.249268 1496.661621 1504.74353 1521.902222 1539.5448 1552.995972 1560.457031 1558.382202 1555.637451 1550.9823 1547.748413 1545.320557 1539.621704 1536.493896 1540.479126 1543.500732 1544.779419 1545.809448 1547.015747 1547.349854 1546.525757 1544.439331 1540.639038 1536.875 1530.561035 1522.689453 1515.365601 1507.674438 1500.210693 1495.140747 1498.161133 1499.569824 1496.42334 1489.277222 1485.955444 1488.297852 1492.209839 1492.3302 1490.446777 1484.059448 1472.553833 1462.145752 1453.295044 1444.759155 1429.717407 1424.851685 1437.691284 1448.048218 1461.810059 1469.312256 1481.706543 1492.693115 1499.839844 1508.017944 1515.299561 1517.371094 1515.411499 1523.148193 1526.649658 1525.49231 1534.903442 1551.109131 1551.60498 1552.97876 1553.216309 1551.704468 1558.061279 1569.834961 1585.628418 1591.440674 1585.892578 1576.959351 1570.1604 1564.461548 1552.044067 1545.204346 1538.979736 1531.521118 1528.31311 1523.942261 1520.876343 1525.596436 1524.372437 1525.32251 1524.128906 1521.186035 1508.933228 1494.829346 1481.256836 1480.841919 1492.851929 1496.864746 1485.096558 1467.858643 1451.391602 1436.530518 1423.770264 1411.970947 1398.795044 1391.322754 1375.906982 1374.759766 1385.345215 1395.054688 1398.582031 1403.047974 1407.935547 1410.589844 1411.172241 1408.858154 1405.321655 1395.085083 1384.749634 1377.137085 1373.306519 1367.704956 1356.189575 1364.762573 1377.59314 1391.39563 1403.337402 1405.150757 1405.271973 1399.01709 1389.444092 1384.451294 1392.549316 1410.930664 1420.644165 1417.864502 1423.11438 1426.897827 1414.345093 1411.029541 1417.694946 1424.42334 1432.036743 1444.866699 1454.150757 1451.509399 1442.524048 1442.704102 1456.920044 1474.556519 1496.170776 1515.269775 1534.515503 1549.234619 1556.690186 1562.344238 1563.73291 1563.785034 1570.544067 1581.195801 1589.693237 1587.041748 1580.245239 1567.864258 1553.610229 1536.329224 1521.833618 1509.984131 1501.278809 1493.731689 1485.286499 1482.734741 1482.059448 1486.900757 1491.998047 1487.532715 1487.564575 1483.29834 1482.715332 1485.838257 1490.184448 1492.613525 1489.778809 1485.264648 1479.780762 1475.964233 1467.948975 1458.002441 1447.319824 1436.962158 1424.772827 1415.076416 1406.608032 1392.818604 1384.745117 1382.817017 1384.52124 1384.979004 1380.067871 1380.712158 1394.421753 1404.215332 1414.984497 1423.800415 1424.194092 1417.538696 1412.653442 1414.594971 1416.267944 1415.667725 1412.324097 1405.421021 1400.564697 1394.395264 1388.659546 1382.021851 1377.198608 1377.206787 1378.2948 1378.994019 1378.187378 1373.514282 1365.522095 1355.532715 1351.573242 1353.365845 1366.153442 1380.503296 1392.026733 1391.642456 1390.293823 1388.84668 1386.938354 1385.344116 1383.363525 1381.160889 1376.765503 1366.501343 1348.498413 1328.300171 1338.904175 1354.349487 1366.651123 1355.545166 1336.996094 1326.847412 1319.822998 1316.585449 1317.74292 1306.768677 1302.571045 1294.309814 1291.065918 1305.654053 1319.425781 1329.905884 1347.810913 1353.273926 1350.981567 1348.521851 1346.026733 1341.481445 1336.968384 1329.113403 1318.489258 1302.345215 1311.032349 1326.275513 1324.776611 1315.753906 1331.745483 1340.550415 1343.903809 1348.496094 1353.652588 1358.265747 1365.265747 1371.865845 1378.197632 1382.431152 1388.223877 1392.900513 1398.047485 1399.889038 1397.411377 1394.649658 1393.36853 1392.805176 1392.595581 1392.539307 1392.634277 1392.626099 1392.55603 1392.56958 1392.11499 1389.442261 1386.359131 1382.968262 1381.742798 1380.755371 1378.419678 1369.75354 1363.082031 1357.177979 1351.85376 1346.444458 1341.539062 1336.990845 1332.573608 1321.292603 1336.178345 1346.469604 1343.11084 1339.880127 1352.43042 1358.110474 1351.198853 1354.662231 1358.452271 1356.897461 1358.921631 1358.503418 1353.814209 1358.350586 1364.640991 1364.730835 1363.747925 1362.067871 1364.624512 1368.585205 1371.868286 1374.429077 1376.027588 1377.322998 1377.899414 1378.299561 1379.874023 1380.662109 1379.382446 1376.486694 1372.382568 1373.003296 1375.575073 1376.477783 1378.052612 1381.998169 1385.130249 1386.718872 1387.614624 1387.749634 1387.415039 1388.114746 1392.169067 1392.807373 1393.119385 1392.754761 1389.855347 1381.318359 1376.561401 1371.003174 1372.001709 1375.439087 1380.474487 1374.158081 1366.88916 1361.968994 1364.693604 1371.70752 1369.471313 1361.494263 1353.054932 1346.572632 1345.557983 1346.241943 1348.579224 1347.46936 1345.275879 1344.033447 1343.477417 1342.655029 1342.386719 1342.613159 1343.001587 1343.56897 1344.883545 1351.052246 1354.143311 1356.171997 1353.553833 1346.151733 1344.317505 1345.83374 1339.990845 1326.827759 1317.178467 1309.671387 1304.28772 1300.912476 1297.17041 1292.694214 1288.217529 1282.350586 1278.444214 1272.84314 1267.304443 1264.870605 1261.67334 1259.445312 1255.225098 1249.138062 1243.561768 1245.783081 1242.831055 1239.496826 1236.868042 1233.063477 1227.596802 1221.202515 1214.332031 1208.264648 1204.798706 1200.776367 1196.184082 1192.216919 1193.715942 1197.460083 1203.25769 1210.124023 1223.469482 1241.285034 1254.006104 1260.452881 1268.193481 1278.930176 1289.840332 1306.942749 1312.254761 1305.970337 1297.515747 1288.289307 1279.098267 1272.830322 1263.530762 1254.282837 1256.24292 1266.530396 1278.746582 1292.519897 1299.804443 1309.536865 1321.701782 1334.189453 1344.12085 1355.653564 1365.380005 1378.681519 1390.279785 1399.959717 1405.802246 1410.420776 1416.416992 1422.376099 1429.037354 1434.755005 1441.512695 1448.795166 1458.147827 1466.742798 1474.158325 1479.739136 1484.928711 1489.091064 1491.299438 1492.845947 1495.541138 -1457.320679 1464.710205 1465.122925 1461.077637 1459.553955 1456.090576 1460.03772 1461.651855 1451.638428 1448.769287 1464.419678 1478.916138 1495.521362 1512.589722 1527.463501 1541.404907 1551.900635 1555.706665 1556.122314 1553.036621 1547.247192 1550.368408 1552.109375 1549.309204 1546.282837 1578.192017 1602.666016 1626.963623 1640.479126 1646.455322 1644.814697 1642.123291 1640.649536 1641.768433 1644.298584 1648.311279 1652.444946 1656.809692 1659.775879 1658.945068 1655.355103 1651.798584 1647.511475 1638.920166 1632.408569 1635.389526 1635.256226 1637.998901 1645.31897 1648.003662 1647.770142 1648.962524 1653.419922 1652.949219 1649.123169 1638.100952 1619.471436 1604.527832 1588.420654 1568.333984 1541.753662 1520.158325 1501.297974 1485.230225 1476.454468 1462.316284 1446.019287 1437.07251 1445.776001 1462.895142 1481.542358 1497.585938 1509.37439 1522.26123 1535.435669 1554.279053 1568.476318 1583.189453 1596.729492 1606.356812 1619.363037 1629.532471 1637.831421 1649.107544 1656.679443 1654.083984 1648.260254 1644.935547 1644.746094 1646.286377 1646.599365 1645.46228 1643.834595 1645.266846 1652.928833 1659.728516 1659.30542 1640.482178 1619.829102 1602.660156 1580.916504 1570.546753 1551.973877 1531.817139 1512.340454 1494.368774 1480.103149 1468.505737 1455.450562 1438.148682 1425.25 1416.709351 1402.684937 1394.329956 1388.654663 1383.473267 1378.015869 1372.498535 1365.546021 1369.029175 1382.66394 1390.800293 1411.827759 1432.313354 1448.578125 1457.933838 1461.131592 1474.613647 1491.098511 1504.383423 1518.372559 1540.514648 1563.483887 1578.251953 1577.171875 1564.934814 1549.202393 1532.073975 1521.562744 1512.529175 1507.749023 1502.906372 1495.148071 1498.355713 1506.432495 1523.247559 1541.597778 1554.977173 1564.618286 1564.097046 1561.839722 1559.978882 1555.154419 1549.871338 1544.870361 1544.637451 1546.777954 1546.970947 1547.054321 1548.725952 1551.727417 1553.030273 1552.674927 1550.944458 1547.42334 1543.162354 1539.117432 1531.254761 1521.458984 1514.400024 1506.298218 1506.019653 1510.890747 1508.32959 1504.151733 1499.369385 1489.480957 1492.407959 1496.763306 1495.861938 1492.528564 1486.870361 1475.897217 1464.342896 1455.162354 1444.850464 1428.772583 1425.946655 1441.445679 1456.00293 1469.605713 1480.252319 1490.930298 1503.303589 1510.346558 1522.348511 1530.637939 1527.826416 1512.27124 1512.082275 1514.800415 1517.744507 1534.547485 1550.662231 1558.975098 1559.089111 1556.808716 1558.476196 1563.87793 1572.714355 1587.196411 1599.393188 1587.766846 1577.964844 1569.193604 1560.63269 1550.764526 1539.557129 1530.376953 1521.134644 1514.720581 1516.645508 1516.032593 1513.567017 1515.38147 1511.570923 1508.071045 1505.710449 1499.372192 1487.109253 1474.502808 1473.238403 1478.178467 1477.214355 1469.988159 1455.571777 1440.010132 1421.791016 1409.487183 1400.213989 1391.559082 1383.638306 1374.923584 1381.311401 1396.755493 1409.604858 1409.064819 1411.306152 1415.15564 1415.850098 1413.238647 1408.002319 1401.118286 1389.932007 1382.719971 1376.748901 1372.16626 1367.241821 1358.471191 1371.656982 1381.666138 1390.863403 1402.865967 1414.45166 1415.05896 1405.032104 1391.836182 1386.874146 1394.25415 1413.34668 1428.576294 1432.087646 1433.868652 1435.03894 1426.273315 1421.143433 1426.311768 1437.280884 1441.324951 1443.918701 1454.075073 1463.833374 1456.26416 1449.198853 1454.137085 1472.17627 1487.788452 1505.890015 1528.337402 1538.383057 1549.494263 1552.43811 1551.574463 1556.425659 1567.675781 1578.237549 1582.016846 1571.735596 1567.11438 1558.997803 1542.970093 1530.393188 1517.21228 1499.354614 1491.457642 1485.967651 1480.602417 1478.120605 1476.767944 1484.233643 1489.693848 1485.279175 1473.898193 1471.143433 1471.855591 1475.886841 1478.03125 1481.322266 1481.351807 1478.512329 1475.200806 1469.545654 1462.778442 1453.5354 1443.837402 1433.812866 1420.501221 1408.384155 1398.183594 1390.381104 1396.155884 1401.005005 1404.275146 1404.004395 1392.44104 1383.664673 1395.833618 1408.81604 1422.645508 1430.622314 1430.613403 1424.038452 1420.729126 1420.032349 1420.181152 1418.864502 1416.356934 1410.455444 1403.584106 1396.376465 1390.234131 1387.115601 1383.149536 1382.85083 1383.463379 1382.418823 1380.23999 1373.92688 1363.912109 1359.181763 1354.658447 1353.95752 1365.668945 1378.122192 1391.643311 1394.263062 1395.417969 1394.420166 1391.386841 1388.622192 1385.720825 1381.888306 1376.477417 1365.383667 1353.452393 1329.172119 1346.776489 1365.482544 1367.334595 1347.570557 1330.554932 1329.726318 1330.793457 1326.37915 1323.223999 1318.638306 1312.890137 1306.777466 1297.071167 1296.832275 1312.622925 1324.191162 1337.338745 1354.266479 1356.544312 1355.274658 1352.657227 1349.450562 1344.390991 1330.019653 1315.733887 1302.700928 1307.176025 1327.503784 1340.28125 1334.651245 1327.682251 1328.060303 1333.499146 1340.56604 1348.556519 1356.075195 1361.247192 1366.83252 1371.776611 1375.005981 1380.050659 1388.135498 1397.383057 1403.699097 1397.739136 1394.289673 1393.577026 1393.067871 1393.021729 1392.979736 1393.290771 1392.689453 1392.352417 1392.564209 1392.558228 1391.152466 1387.066528 1382.683594 1380.178467 1376.006714 1366.492676 1360.240601 1353.946533 1350.978516 1348.67981 1344.173462 1339.882202 1339.963135 1339.207397 1333.146484 1332.985229 1352.949097 1359.180176 1351.924072 1356.336914 1368.014526 1358.453613 1358.070312 1368.578735 1364.474487 1368.134399 1368.73584 1364.971924 1363.619629 1371.491211 1374.745117 1373.564087 1371.55481 1375.263062 1379.550659 1381.652222 1383.328613 1384.42688 1386.005981 1386.647217 1387.05603 1387.750854 1388.541138 1389.244141 1388.568359 1384.506714 1383.461182 1386.149902 1388.359009 1390.172485 1391.651245 1392.660034 1393.438477 1393.878418 1394.297485 1394.163818 1394.092896 1395.909668 1396.997681 1397.312988 1397.743286 1398.081665 1396.448975 1394.798218 1388.604614 1389.801758 1393.090698 1391.501221 1384.246826 1375.359741 1372.556396 1376.401245 1385.008545 1382.754272 1372.206909 1358.737061 1351.004395 1351.921875 1353.164551 1353.371704 1351.270996 1348.611084 1346.335327 1345.175903 1344.148682 1343.557495 1343.708496 1344.0625 1344.217773 1344.800903 1345.088989 1353.41333 1349.338623 1333.443848 1332.239502 1325.468628 1340.534302 1345.176025 1335.890381 1325.576538 1317.510376 1310.503418 1304.902222 1301.048584 1296.865356 1294.791138 1290.187622 1284.095947 1280.420654 1275.063965 1271.771851 1268.395142 1262.908569 1256.571167 1253.270874 1252.240479 1254.107666 1253.314697 1247.895996 1244.387695 1241.964966 1235.136108 1228.457275 1221.269287 1214.27124 1208.14209 1203.847656 1198.517334 1193.403687 1194.419434 1197.280029 1203.317627 1207.071411 1215.473389 1223.835205 1237.470581 1243.30127 1258.202637 1268.37915 1279.430786 1290.632446 1313.831177 1316.076782 1310.477051 1309.6698 1303.188721 1293.615112 1285.829834 1283.891235 1279.205078 1274.393921 1270.745483 1275.313232 1282.271362 1296.854492 1310.542847 1322.426514 1333.955933 1345.090698 1356.289795 1368.765381 1384.603271 1398.2854 1404.860718 1408.828491 1413.774902 1421.455811 1429.299438 1435.285767 1441.927368 1449.383789 1457.964111 1465.932861 1472.878418 1478.657959 1484.674927 1489.319946 1491.807495 1494.040161 1497.548828 -1467.154907 1470.84082 1472.440796 1472.749146 1471.803345 1462.451416 1474.561523 1482.347412 1474.67749 1457.828003 1472.51001 1491.68103 1509.300903 1526.069214 1542.296021 1551.789551 1561.098145 1563.756348 1563.666138 1560.730469 1557.789795 1558.351562 1559.261597 1557.677368 1553.047241 1571.377563 1600.122437 1629.50415 1643.57373 1649.375366 1649.660767 1646.049805 1643.794189 1644.304443 1645.28186 1648.803711 1652.85144 1656.728638 1659.645508 1659.302734 1656.151367 1651.461304 1646.904541 1640.884766 1641.653564 1646.36438 1647.557739 1651.05481 1657.44104 1658.648438 1659.095093 1660.238525 1658.700317 1652.515625 1644.807617 1633.678223 1617.609497 1601.805908 1586.124512 1568.158081 1541.552368 1521.707153 1508.200684 1489.505249 1474.022827 1455.695435 1438.658081 1446.115479 1465.924194 1475.395874 1489.078857 1504.317871 1517.373535 1528.270752 1543.513672 1561.198975 1577.637085 1591.895752 1603.823364 1615.800537 1627.132446 1636.16687 1644.546631 1655.765259 1661.075928 1661.631836 1657.968994 1652.398438 1651.075562 1651.740723 1651.760498 1651.067749 1649.269043 1647.314941 1652.906494 1658.825684 1655.548218 1637.684448 1613.307495 1593.495972 1571.553467 1548.861206 1527.140137 1514.737061 1497.036499 1483.38562 1469.492798 1453.733276 1438.533569 1424.548462 1421.301392 1412.930176 1402.136475 1391.952515 1387.790771 1383.335815 1378.356445 1372.076172 1365.320312 1373.013062 1386.954834 1394.574951 1404.852173 1415.910278 1428.308105 1435.990845 1455.68457 1472.019287 1488.999023 1499.768555 1509.808228 1521.61438 1541.811157 1567.30481 1576.149536 1565.429321 1548.616699 1534.154175 1525.079346 1513.831299 1508.800049 1504.067993 1498.220093 1499.972656 1507.026001 1521.391724 1540.506104 1554.587036 1565.224487 1574.332275 1572.12207 1570.282471 1564.696411 1556.882202 1549.250244 1550.527954 1551.903076 1551.339233 1551.636353 1554.838745 1558.034302 1558.624146 1558.062012 1556.120972 1552.450195 1547.296387 1542.734375 1536.148804 1524.098633 1520.395264 1514.344482 1516.053345 1517.311768 1514.762329 1509.768311 1505.283569 1499.545044 1500.076782 1501.266357 1499.218262 1494.60791 1488.257202 1477.494751 1464.849487 1454.327271 1441.777466 1427.957397 1429.295532 1443.519775 1460.651001 1472.339111 1485.947266 1499.967407 1508.712524 1518.913208 1534.480469 1540.3927 1529.808838 1508.928467 1496.668701 1499.646851 1514.06897 1531.36499 1547.370972 1560.273193 1561.824341 1559.277954 1559.546265 1567.378662 1578.234131 1589.252197 1597.088501 1588.243652 1578.619385 1568.577515 1557.09314 1544.167236 1534.918457 1526.930054 1514.806152 1503.881714 1506.221069 1506.751221 1500.552856 1497.469238 1496.256836 1497.12793 1496.392212 1490.346558 1478.729736 1470.475952 1466.399536 1468.614624 1468.104248 1463.106567 1442.316284 1419.479614 1403.36377 1391.206177 1385.102661 1380.100098 1377.31604 1374.505371 1392.088501 1413.191772 1421.303345 1419.207031 1419.276367 1419.26709 1417.247437 1413.304321 1407.282349 1400.043945 1390.308228 1381.414062 1377.857666 1371.203125 1364.092896 1362.3479 1376.390015 1388.119629 1398.453613 1408.250244 1416.964233 1422.236084 1413.31958 1397.499146 1390.748047 1389.69812 1407.204102 1426.875366 1440.752075 1442.75354 1444.7677 1444.46167 1437.593384 1428.972778 1443.614624 1453.623535 1452.109985 1457.864014 1464.720581 1466.976685 1462.076904 1455.189453 1463.548462 1482.047974 1497.205933 1509.537964 1523.139282 1530.676636 1535.848633 1539.331055 1551.714966 1566.891479 1575.938843 1572.387207 1561.611328 1554.296265 1542.973022 1533.824585 1523.293457 1510.098633 1495.456665 1485.376221 1480.680542 1475.155884 1471.763794 1471.806152 1476.537231 1480.565918 1477.447998 1467.312378 1460.772583 1461.809204 1465.831909 1467.706177 1468.713867 1467.917358 1465.062866 1462.95459 1459.231201 1453.552246 1446.556519 1438.804321 1429.523804 1416.237061 1399.564697 1400.632812 1407.981323 1415.108032 1421.582397 1423.319824 1415.879028 1403.685425 1389.518799 1394.406616 1411.119141 1426.321777 1434.787476 1436.407715 1430.014771 1428.955566 1426.138428 1423.497681 1421.509644 1418.054565 1412.570435 1405.135864 1399.89563 1393.926514 1391.603516 1390.297729 1388.710938 1387.407593 1383.913452 1377.696533 1374.020874 1366.94812 1362.261108 1358.768066 1353.603394 1363.481445 1375.152466 1382.444946 1393.380127 1400.631104 1401.925049 1396.370117 1391.351074 1383.862061 1377.386719 1371.536255 1360.190674 1340.240967 1335.343872 1355.344727 1369.572998 1366.59021 1345.322144 1337.655151 1339.370117 1338.697144 1332.352051 1328.02063 1324.642334 1320.241943 1315.037964 1304.35791 1294.818115 1306.653687 1318.842285 1326.903809 1345.272217 1358.293457 1361.176758 1359.186035 1356.164551 1346.740845 1331.883179 1320.093872 1302.35376 1306.842041 1324.938599 1344.392334 1346.695557 1342.317017 1337.712769 1332.773926 1328.616577 1342.861206 1351.161499 1357.361084 1363.724365 1365.932373 1370.713257 1375.403931 1381.155762 1387.757324 1393.145508 1391.643066 1389.694702 1389.936768 1391.05481 1391.505371 1390.942261 1389.994263 1387.97876 1387.868774 1388.055054 1386.74585 1384.576904 1381.699463 1378.168457 1373.177612 1364.968384 1362.291992 1356.647217 1351.961304 1350.643677 1350.0802 1347.988159 1345.43811 1346.929199 1349.082642 1345.999756 1338.367432 1358.631714 1368.118286 1366.26416 1360.796875 1372.293091 1369.074097 1364.858398 1370.593994 1373.242065 1375.07666 1377.570557 1376.928711 1370.721313 1378.992676 1383.850098 1384.9021 1384.537842 1387.772949 1389.728516 1390.511108 1391.281738 1392.005615 1393.456909 1394.039673 1394.682861 1396.043579 1397.903442 1398.071045 1396.925537 1395.275269 1394.272827 1394.993164 1395.392578 1395.432861 1395.127441 1395.714478 1397.531372 1400.154785 1400.569336 1400.483887 1400.19812 1400.328979 1399.983154 1400.578369 1402.030884 1404.057251 1405.005615 1406.288818 1407.443481 1408.728027 1406.031494 1401.501099 1393.875366 1389.183472 1389.541626 1383.366821 1393.072266 1388.635376 1375.517822 1364.256348 1359.064575 1360.422729 1359.266968 1356.465454 1353.867065 1349.198364 1347.338989 1345.999634 1344.119263 1343.588989 1342.853638 1338.652832 1338.5625 1334.561646 1328.242432 1333.32312 1330.571777 1317.509888 1308.685303 1310.567993 1329.2323 1340.202759 1341.970703 1331.764771 1323.790771 1317.54248 1308.819824 1303.214111 1299.54187 1295.94458 1291.687012 1286.034058 1283.222656 1281.381348 1276.648682 1271.489746 1265.47876 1256.863159 1256.133667 1257.639648 1258.65979 1260.632324 1258.667603 1250.73645 1247.692627 1241.536621 1234.955933 1229.019775 1221.276001 1214.190308 1207.271973 1201.744995 1195.655151 1194.801392 1198.937744 1204.334839 1209.675659 1212.497437 1216.187134 1220.221924 1233.588867 1244.401489 1258.612915 1272.709961 1285.551636 1298.58313 1303.74292 1304.458496 1311.308838 1318.962036 1317.669312 1313.119141 1307.000854 1301.865234 1297.400635 1291.952026 1287.231201 1283.959961 1287.4021 1297.886475 1310.854492 1323.843018 1337.65979 1355.132568 1366.689941 1380.849854 1392.124756 1398.866455 1400.127075 1403.382812 1414.38501 1427.740479 1433.285522 1440.760498 1447.513184 1456.068115 1464.891235 1470.72229 1476.630371 1483.18103 1488.326416 1490.856934 1492.846313 1496.392578 -1473.258911 1476.753174 1479.981201 1481.908691 1483.849854 1486.290771 1498.63147 1504.43103 1489.9552 1471.045044 1485.34668 1503.889648 1520.238403 1538.68335 1547.71814 1561.971313 1569.039673 1571.712036 1571.177612 1568.481201 1567.282104 1567.932617 1567.359375 1567.452881 1564.431763 1568.157593 1593.327759 1628.057251 1642.476685 1651.992432 1655.272583 1650.893799 1647.795044 1647.138672 1646.078491 1649.159302 1653.458374 1657.348633 1659.859497 1660.059814 1657.882812 1651.885498 1645.932495 1646.225098 1650.756958 1654.275757 1656.218018 1659.044189 1662.245361 1663.39624 1663.578735 1663.300903 1660.389404 1647.721436 1634.470459 1621.098999 1605.185547 1592.008911 1577.493286 1558.140015 1533.598022 1518.724121 1507.735229 1491.913452 1464.704346 1444.359619 1448.456421 1467.313721 1479.486816 1487.175415 1497.096069 1509.857422 1520.601074 1532.932495 1547.277588 1565.184448 1581.800293 1593.955688 1606.840942 1619.036011 1629.581299 1638.68396 1648.59021 1659.567383 1662.034302 1662.464111 1661.299194 1658.028198 1656.099609 1656.658081 1657.376099 1657.172241 1654.631592 1652.901855 1654.106689 1654.616455 1649.00354 1630.851074 1602.597046 1584.546387 1560.719238 1541.273682 1522.905273 1506.476562 1488.394043 1475.5354 1462.062134 1448.451294 1438.846558 1428.384155 1423.197876 1417.525269 1407.496704 1397.539429 1390.209595 1384.010498 1378.808105 1372.270508 1366.060059 1371.039185 1390.759766 1399.755859 1412.809937 1421.502808 1430.740601 1444.049072 1454.405518 1470.38208 1481.881836 1495.293213 1506.291748 1520.221924 1543.083496 1566.487793 1576.843994 1568.805054 1551.079468 1536.865356 1528.264648 1517.65918 1510.578369 1505.611572 1500.307373 1501.384521 1507.425293 1518.016479 1534.871216 1549.652954 1562.706543 1576.473511 1576.450806 1576.316895 1574.536865 1565.397583 1558.312622 1556.741699 1556.513794 1556.496704 1559.444214 1562.907349 1564.740234 1564.821655 1563.888184 1562.079956 1557.71106 1551.394653 1545.243164 1538.94458 1530.808838 1523.431519 1524.093994 1524.109619 1523.094849 1519.772827 1514.441772 1509.513306 1503.271729 1504.490723 1504.144775 1501.762451 1495.712769 1485.921509 1475.554932 1464.178467 1451.188477 1437.630859 1429.302246 1432.981567 1443.073608 1458.599121 1474.422729 1484.756714 1497.896606 1508.20105 1518.931641 1529.236328 1527.984375 1518.916016 1500.950928 1489.625732 1497.772705 1511.19104 1522.595093 1540.912109 1554.515259 1561.692627 1559.564819 1561.225464 1572.505249 1583.380005 1590.334106 1591.989258 1588.005493 1578.231567 1568.530884 1558.473511 1544.055908 1529.206299 1517.563354 1507.233765 1497.74231 1495.223511 1493.837402 1487.214844 1489.183716 1487.317261 1486.4104 1486.737427 1478.655029 1470.352051 1463.544678 1456.809326 1460.479126 1457.482788 1443.862061 1425.360962 1398.746948 1387.695679 1383.302124 1383.183228 1384.602661 1384.578369 1387.14209 1406.4104 1426.91272 1430.130859 1428.775024 1426.945557 1422.008179 1415.432251 1410.448242 1404.833496 1395.821899 1388.583618 1389.015259 1379.616211 1369.918335 1360.117188 1364.641113 1377.420898 1391.596191 1398.610718 1410.760864 1421.768188 1429.689941 1418.435181 1403.256958 1400.949829 1399.307251 1399.652222 1418.746216 1431.820679 1445.126221 1453.988647 1455.402222 1450.652832 1443.57019 1443.636353 1458.02832 1466.331909 1467.84436 1475.960938 1475.812012 1472.340454 1467.169556 1462.127441 1469.578613 1482.022583 1491.561523 1501.420898 1510.711792 1520.675781 1538.109985 1552.854614 1562.506836 1569.03186 1563.241211 1554.379028 1539.583984 1530.331421 1524.134644 1511.538574 1501.161011 1492.111816 1482.079712 1474.875366 1468.643311 1464.473389 1463.251343 1463.849609 1463.814819 1457.65332 1454.050415 1450.196777 1452.920898 1454.980957 1456.330444 1455.918701 1454.894775 1453.444458 1451.509521 1448.675537 1444.208862 1438.378784 1430.705444 1419.752563 1407.19397 1407.769775 1417.298218 1428.926758 1436.011841 1438.287964 1434.513306 1423.811401 1410.406372 1396.939697 1395.276001 1409.733643 1427.646729 1440.28064 1443.963501 1442.360107 1436.887451 1431.194214 1425.734741 1424.527832 1421.847778 1414.448853 1410.103516 1403.791992 1399.616455 1396.519287 1395.147705 1393.627441 1391.116943 1387.892456 1383.098511 1380.458008 1367.882446 1366.623901 1366.767822 1352.820801 1359.25 1364.265869 1374.727417 1391.866455 1402.813477 1404.692871 1397.330078 1389.171021 1382.591187 1369.608765 1358.569214 1353.631714 1336.234619 1339.381592 1361.291992 1378.509888 1374.372314 1363.265381 1347.287109 1353.126587 1351.82019 1340.59375 1335.26001 1330.192749 1324.36438 1318.450562 1306.372437 1302.528442 1296.560913 1314.707642 1324.173096 1338.692749 1354.36853 1366.314453 1365.594116 1359.471924 1350.872925 1339.270264 1320.656494 1301.481079 1309.836426 1323.703369 1340.147339 1353.486816 1355.638062 1350.977661 1347.263306 1345.00708 1341.799438 1341.486328 1354.483154 1358.107056 1362.665649 1366.71582 1371.775024 1376.786011 1381.691772 1379.74585 1381.727905 1382.835938 1382.658936 1384.185181 1383.979004 1382.675659 1380.79541 1378.599609 1379.903564 1380.938232 1378.973755 1377.26123 1376.711548 1375.56189 1370.778442 1367.146851 1366.935547 1365.172241 1359.257324 1360.488647 1357.957397 1356.572632 1361.890381 1361.958008 1362.89563 1358.22998 1353.629883 1361.047729 1369.22168 1371.764893 1371.112549 1378.119629 1379.723999 1376.021484 1376.498169 1383.151123 1386.291138 1388.462646 1388.538818 1386.310669 1386.705933 1391.418335 1394.10791 1394.726074 1396.069946 1396.833862 1397.320557 1397.950439 1398.804688 1399.322876 1399.810303 1401.348389 1403.522339 1405.444336 1405.684692 1403.338501 1402.605713 1402.075439 1401.432373 1397.831177 1395.869995 1395.772583 1396.616821 1398.922607 1402.739136 1404.297241 1405.060669 1405.217407 1404.874146 1403.772949 1404.418823 1405.871704 1406.706543 1407.383179 1408.41394 1408.358398 1411.875732 1417.517578 1416.628906 1405.583618 1402.474243 1400.006226 1395.740234 1394.542725 1386.172852 1375.923218 1372.080566 1370.904785 1368.344482 1363.45874 1357.718994 1348.26355 1342.219971 1346.77002 1349.116455 1338.249512 1330.784302 1326.963623 1320.381714 1323.520508 1321.360229 1314.197998 1318.457397 1314.612183 1303.104248 1290.449951 1298.154175 1316.542603 1324.181641 1334.525146 1333.162231 1326.221436 1317.873779 1309.445679 1303.599365 1302.193604 1294.977417 1290.866455 1281.655396 1279.942993 1279.829346 1276.237061 1270.196899 1266.224121 1260.23938 1258.570068 1258.993408 1253.72522 1246.093262 1240.335815 1238.109253 1235.318848 1234.80127 1236.28833 1234.030884 1229.11438 1221.208984 1212.419434 1205.251587 1198.760132 1193.572144 1196.41272 1202.118408 1206.712891 1209.743652 1215.368164 1216.58374 1224.619507 1240.487061 1256.48645 1266.191406 1276.978027 1283.966187 1289.194214 1294.0177 1304.294678 1311.844116 1318.628418 1320.943604 1320.725464 1320.348389 1317.690186 1314.821411 1310.394653 1303.493774 1300.165649 1296.426147 1302.678833 1313.638916 1324.399536 1341.331787 1358.576538 1373.075562 1382.793579 1385.324829 1382.733643 1393.12439 1408.085327 1419.862915 1427.814331 1435.408325 1442.854614 1450.545288 1460.598877 1467.490112 1474.147583 1480.161255 1485.086548 1488.443604 1490.109253 1492.774414 -1479.745728 1485.064941 1488.590454 1490.728516 1504.146606 1515.657104 1522.687256 1523.063232 1506.662109 1482.919189 1499.975708 1514.051758 1529.759521 1543.469116 1559.436523 1571.74292 1577.1073 1579.478149 1579.661499 1577.77002 1578.441772 1577.802002 1575.276367 1577.675537 1578.5625 1575.552856 1590.962891 1625.934326 1638.974609 1651.832642 1659.877197 1655.942383 1652.024536 1650.038208 1649.044556 1650.334595 1653.54248 1658.468994 1660.171875 1660.252808 1658.540161 1653.168091 1647.488159 1654.312378 1659.064575 1660.865479 1662.269409 1664.220337 1666.324219 1667.251831 1666.780518 1664.568726 1660.533691 1649.083862 1633.239258 1616.746338 1594.910156 1576.317871 1561.637695 1539.623047 1522.5625 1513.795532 1504.369019 1486.591797 1452.900146 1447.277466 1461.071899 1473.895386 1480.025513 1488.729126 1497.521851 1509.934448 1522.959351 1534.412842 1548.642944 1565.489746 1580.613525 1592.811646 1605.494019 1618.174316 1629.827881 1639.698975 1649.126099 1659.634155 1662.432617 1662.786377 1662.449829 1661.243286 1660.274048 1660.928711 1661.687012 1661.271851 1659.397095 1656.680908 1657.179077 1657.201416 1652.583008 1639.380859 1613.002563 1593.054077 1568.850098 1547.588867 1536.311157 1518.541748 1504.906006 1488.204712 1473.154907 1458.525146 1447.174072 1439.363525 1428.407104 1421.255859 1413.283936 1402.173706 1391.435303 1383.343628 1377.43335 1372.379761 1367.6875 1367.650879 1388.46167 1402.368408 1416.046509 1425.38916 1439.907349 1451.092773 1461.647217 1473.823242 1486.785278 1500.449097 1513.271362 1536.776855 1560.723145 1572.405029 1577.09375 1573.232544 1558.012817 1543.636108 1530.362915 1520.264282 1513.115234 1507.246216 1502.031982 1503.857422 1508.078003 1514.935913 1527.090454 1538.936768 1553.83313 1573.407349 1576.960693 1577.51416 1577.177612 1572.450928 1564.918701 1563.892212 1562.115845 1560.673828 1565.857666 1570.194824 1571.452515 1571.3479 1570.390625 1568.162231 1563.748047 1556.128662 1547.275391 1543.562378 1538.556274 1538.265503 1537.304199 1535.347046 1530.096313 1525.545776 1520.026123 1514.969116 1510.642578 1508.629761 1506.64624 1502.735229 1496.508057 1487.21228 1475.492432 1469.800659 1456.674072 1439.971558 1429.268677 1435.22998 1445.068115 1457.774536 1473.199829 1484.347046 1495.657715 1504.450684 1509.821655 1515.113403 1516.108887 1507.566406 1490.754028 1486.105713 1495.071777 1505.991577 1517.93396 1532.060913 1548.67749 1555.375366 1555.391846 1560.795776 1572.523682 1585.049805 1589.264893 1589.010864 1584.616943 1575.426392 1565.501831 1555.61438 1544.230347 1527.581177 1516.527466 1500.751587 1489.904419 1486.909302 1484.47583 1478.405029 1478.189209 1477.23645 1473.912598 1474.924438 1469.116699 1463.741089 1454.721313 1444.504517 1444.261475 1439.506104 1429.306274 1415.306396 1388.987305 1388.469238 1393.458252 1398.171265 1401.175781 1399.692627 1400.579224 1424.231567 1433.590088 1434.771606 1433.051147 1429.261108 1422.3479 1413.625977 1407.963257 1401.26123 1390.726807 1394.678467 1391.160034 1379.908325 1366.616577 1361.601196 1367.376953 1379.654419 1392.15625 1401.071411 1413.034668 1425.423706 1431.463257 1427.47229 1416.698853 1408.298462 1406.152222 1414.362915 1414.897339 1428.334961 1449.123779 1461.825806 1465.407593 1462.033447 1457.470947 1457.003174 1452.622314 1462.734131 1475.754272 1486.500488 1488.874512 1484.799805 1479.193115 1476.953247 1473.172852 1480.922241 1491.184814 1504.276733 1518.384888 1532.504272 1547.490601 1550.626953 1552.018799 1556.101318 1554.328003 1546.550171 1532.168701 1519.428345 1511.658447 1498.245728 1492.851807 1485.602905 1475.083252 1466.679077 1461.893921 1461.50647 1461.106323 1459.453003 1454.321167 1450.76062 1448.541382 1447.270996 1446.148438 1443.662964 1444.495117 1445.449707 1445.331177 1444.34436 1442.725098 1439.531738 1432.411865 1425.532837 1414.293091 1410.409302 1411.710205 1423.428711 1432.924805 1441.749878 1448.801636 1448.98999 1441.958374 1427.623413 1415.972778 1403.471069 1396.183472 1408.111572 1425.93396 1444.374634 1453.01355 1452.62854 1447.046753 1438.332886 1434.55249 1432.925659 1429.734741 1422.857178 1416.556519 1409.403442 1404.084595 1400.578491 1399.558594 1398.62793 1395.943359 1392.262207 1386.702393 1380.181396 1366.605103 1373.798218 1371.634399 1354.660889 1359.778687 1370.235107 1384.009521 1393.686523 1403.098877 1404.127441 1389.262451 1376.408447 1365.709473 1363.773438 1345.411255 1341.98645 1350.116089 1345.408447 1360.67395 1377.494141 1379.489502 1372.436157 1368.136597 1371.244385 1362.781616 1350.192139 1342.348389 1332.94397 1322.401978 1316.209229 1317.253906 1314.226074 1299.323853 1309.009521 1320.985962 1331.05835 1350.929443 1370.39502 1368.342407 1360.361572 1349.143921 1329.921387 1320.855347 1309.201782 1313.994507 1323.460327 1339.641113 1351.954712 1357.933105 1357.401245 1355.505737 1349.420288 1348.163818 1350.112915 1352.35437 1353.741821 1361.043213 1364.99292 1368.834839 1372.413208 1374.21167 1372.3479 1374.114502 1375.911865 1374.748291 1376.741577 1375.459839 1374.007324 1372.333496 1371.447388 1372.633789 1374.283447 1375.734009 1376.538818 1377.003052 1377.627808 1378.478882 1378.419556 1376.555786 1371.820557 1370.027832 1370.686035 1368.694458 1370.533569 1375.337769 1376.72522 1375.290771 1365.647827 1361.147705 1363.324585 1369.821533 1375.919922 1379.352295 1381.626831 1384.359863 1385.395386 1387.655518 1392.48291 1394.385132 1395.009277 1395.064941 1394.186157 1393.22229 1396.424316 1400.579834 1402.420044 1402.804077 1403.044067 1403.353149 1404.211914 1405.216064 1404.552979 1404.680298 1405.414307 1406.749512 1409.428101 1411.656128 1410.536499 1406.013428 1404.72876 1401.380737 1394.577637 1393.207397 1395.044556 1394.295532 1396.737549 1401.502197 1405.410767 1406.500977 1408.599976 1410.486328 1410.731934 1410.425903 1408.296021 1407.76001 1408.281494 1406.949097 1398.516724 1396.497803 1404.424438 1410.599365 1417.165527 1414.447754 1410.983887 1405.827026 1396.521606 1387.634277 1382.664551 1378.226196 1370.36438 1366.787231 1357.97522 1346.932617 1331.985962 1329.840942 1338.555298 1354.723267 1343.547241 1321.439331 1307.24292 1300.380493 1307.976318 1311.117676 1306.570557 1301.008423 1298.496704 1288.808594 1279.210449 1287.012573 1295.488037 1310.376587 1331.25061 1331.162109 1325.114014 1317.771484 1314.039185 1309.619995 1307.431763 1303.432129 1296.737305 1292.439331 1283.195068 1277.5177 1272.24231 1265.925171 1261.178955 1256.167847 1246.96936 1235.73999 1228.931152 1223.278076 1217.960571 1216.023438 1215.753662 1215.800049 1218.547607 1230.784546 1234.288208 1227.004639 1218.32666 1208.514648 1201.53064 1195.808838 1194.451904 1198.640869 1203.080566 1208.742432 1219.393555 1228.482788 1225.695679 1230.870483 1246.009155 1257.817139 1266.13147 1271.427002 1274.890869 1280.89856 1291.113159 1298.316284 1306.939941 1316.421021 1318.227539 1320.643433 1325.768677 1330.791748 1333.274048 1330.982422 1323.496826 1314.615601 1310.969727 1308.733032 1314.015869 1321.642822 1338.353882 1352.20459 1361.027344 1364.069946 1372.757202 1383.901245 1397.449341 1408.312256 1417.134521 1426.507812 1437.390747 1447.528687 1457.118042 1465.462769 1470.201904 1474.433716 1477.491577 1481.054321 1485.47522 1487.653564 -1489.762085 1503.328491 1507.418823 1515.564453 1524.35083 1532.345581 1542.254272 1537.255371 1521.695557 1498.188599 1507.192139 1520.870728 1536.568115 1554.221924 1570.065674 1579.209106 1585.427002 1588.686279 1590.44104 1590.317261 1589.252441 1587.858154 1584.866089 1587.844238 1590.630127 1594.902832 1597.487427 1615.353149 1635.994507 1649.987305 1660.125 1658.747437 1655.292847 1653.306519 1651.800537 1651.691406 1653.16333 1657.757935 1660.444702 1660.605347 1659.036621 1656.459839 1658.279175 1660.608643 1663.083496 1664.873169 1666.868286 1669.084473 1670.794189 1670.952393 1669.987793 1664.638794 1659.057129 1647.251465 1633.414551 1621.607788 1598.314697 1574.297363 1540.600952 1524.668213 1513.666992 1501.839722 1492.829224 1476.601074 1451.578247 1450.208374 1463.095337 1469.807129 1473.86792 1482.865356 1492.957275 1505.359863 1519.685791 1533.589844 1546.257324 1563.9021 1576.43103 1589.982422 1601.273926 1613.268066 1628.02124 1638.648804 1646.939331 1656.076294 1660.993164 1662.504028 1663.026978 1663.459961 1664.337158 1664.979004 1665.131836 1664.407593 1662.714355 1660.88269 1660.446533 1661.264526 1658.588013 1643.251709 1619.785645 1597.921387 1577.565308 1552.815063 1540.942383 1523.93042 1509.242798 1493.400024 1476.462646 1465.334717 1454.816895 1444.31958 1433.514771 1424.577271 1417.130493 1405.283203 1392.631104 1381.555908 1375.965698 1372.259033 1368.312866 1368.206665 1381.125244 1391.454468 1404.317627 1413.809204 1429.347046 1449.282227 1458.88623 1472.476807 1491.818481 1503.580444 1517.938232 1542.799683 1564.033203 1572.24707 1575.411743 1572.199341 1562.241455 1548.703003 1534.331055 1521.238159 1515.259399 1509.254761 1503.828979 1504.314453 1508.904541 1514.728027 1521.722168 1530.875366 1542.307983 1564.674194 1573.491699 1577.122314 1578.212402 1576.167358 1573.372192 1574.553223 1573.026611 1571.254517 1575.699829 1577.896729 1578.011963 1577.246338 1576.240723 1574.672485 1569.967529 1561.384766 1552.055542 1549.439819 1549.316895 1547.768066 1544.881714 1541.36792 1536.414795 1530.658569 1525.16687 1520.015747 1515.332153 1512.057983 1509.773071 1504.275146 1498.457275 1491.516968 1484.550537 1475.940186 1459.199341 1441.021851 1431.77832 1437.378418 1447.233032 1465.882324 1479.970581 1488.987427 1493.923706 1500.947998 1503.322998 1504.22229 1501.487305 1490.883667 1480.519653 1482.385254 1499.055054 1514.095459 1528.06897 1541.787354 1550.074097 1550.143188 1548.563232 1558.110962 1568.426758 1581.406982 1587.736206 1585.654175 1580.356812 1574.004272 1563.690063 1549.61377 1540.060059 1524.824097 1514.605591 1501.129761 1491.106812 1480.704102 1475.119019 1472.503418 1470.638794 1469.061035 1464.76001 1463.305054 1460.474365 1454.984741 1446.96521 1438.048828 1429.838501 1426.898071 1414.956787 1405.753662 1389.068115 1400.556519 1405.505493 1408.937256 1410.67749 1412.106323 1416.762817 1433.630005 1440.023804 1440.275757 1437.018555 1430.84729 1423.639526 1414.233032 1406.079346 1401.586182 1404.322144 1402.841309 1389.630737 1380.620483 1366.508667 1362.83374 1372.454834 1384.939575 1393.873047 1405.62439 1420.655029 1430.888428 1437.481445 1434.770386 1426.593994 1414.836792 1413.174805 1416.453003 1429.860229 1432.029053 1447.091675 1462.165283 1468.695801 1470.962158 1469.390869 1470.00354 1468.668091 1461.873291 1473.077271 1490.92395 1499.481689 1501.560791 1500.114136 1495.290283 1493.337646 1491.473022 1497.769287 1509.224487 1522.470459 1533.206665 1543.828613 1544.772949 1540.943115 1543.385498 1542.045044 1532.736572 1524.018188 1507.540283 1498.570923 1488.910889 1478.810181 1472.856934 1470.860107 1465.950439 1465.675537 1466.226318 1464.795776 1461.215088 1458.906738 1454.984619 1448.970093 1445.72644 1443.982056 1439.766846 1436.907837 1438.142944 1438.228394 1433.546387 1428.49585 1424.444824 1419.33728 1419.077515 1420.987183 1423.15979 1426.945557 1435.774414 1439.356812 1448.694336 1456.869751 1457.396606 1451.591675 1434.921509 1423.27832 1412.79126 1400.485107 1404.317261 1419.454346 1439.677612 1452.275513 1455.431763 1454.90271 1450.526245 1449.191406 1450.783081 1443.197266 1431.036865 1421.573853 1414.399902 1408.839111 1404.852417 1403.886963 1403.799438 1400.882935 1394.277954 1388.121826 1378.767456 1375.158447 1379.740967 1372.623779 1361.991943 1363.614014 1364.285522 1377.509399 1391.700806 1400.026611 1402.035767 1392.376465 1380.852539 1366.333862 1343.618896 1344.485107 1354.236572 1368.915771 1358.436157 1366.997925 1375.716553 1381.409058 1380.953247 1379.614746 1376.52478 1366.622314 1353.170776 1342.661743 1329.334717 1324.025513 1322.025879 1321.94458 1319.069458 1302.685547 1304.908936 1320.576904 1329.533691 1346.435669 1370.291382 1369.378174 1358.073364 1345.23999 1342.250977 1328.463257 1313.836792 1313.54126 1322.128174 1336.706543 1346.321045 1355.978149 1357.218994 1353.241089 1347.132935 1348.151489 1354.908447 1356.635742 1357.735718 1361.21167 1364.418579 1366.668335 1368.369263 1368.602905 1365.588867 1364.486084 1365.12207 1364.555298 1366.616943 1366.109619 1365.44751 1364.709961 1364.862427 1365.09436 1370.040771 1375.564575 1377.54541 1380.160278 1382.340088 1384.002197 1385.332397 1383.448242 1376.837402 1377.126831 1377.730591 1376.401855 1381.317261 1383.679321 1383.66394 1381.675537 1377.628418 1367.712158 1364.159546 1369.353638 1376.049194 1380.471191 1384.848145 1388.540405 1391.450439 1393.337769 1394.368774 1395.618042 1399.617676 1400.314331 1397.065186 1396.086426 1398.950928 1403.171753 1404.978638 1406.933472 1408.95459 1412.114258 1412.909668 1411.634521 1407.785767 1406.41748 1406.179077 1407.248535 1411.350098 1415.940063 1411.636719 1402.315308 1397.092163 1390.865356 1379.638306 1371.267578 1379.09436 1384.061279 1389.468018 1394.136719 1402.341431 1406.130981 1408.524048 1415.915771 1416.612305 1412.78772 1406.287109 1405.768311 1401.851196 1394.029663 1381.496704 1379.252197 1385.16394 1391.514038 1414.594849 1418.876953 1418.448242 1415.054321 1401.181396 1393.558716 1390.172729 1378.856079 1357.576538 1347.48291 1339.96228 1332.819336 1315.156738 1313.335693 1326.319336 1347.780273 1340.323608 1318.295288 1301.453735 1283.53894 1292.506592 1300.094238 1296.247437 1283.641602 1282.57312 1277.281128 1274.680176 1278.415283 1285.315796 1297.863647 1313.39502 1325.862793 1324.196899 1321.576782 1320.362183 1319.202393 1316.037598 1310.514648 1304.561279 1298.181763 1289.812744 1277.176758 1268.92688 1259.013062 1249.593872 1237.683228 1225.327759 1217.794189 1213.42688 1209.566528 1208.328369 1207.878052 1207.186157 1208.280396 1208.645508 1212.755493 1231.954468 1232.641724 1223.654419 1211.558472 1203.25293 1196.624634 1194.027466 1195.821045 1202.339111 1207.857544 1222.569702 1239.071533 1249.007568 1241.756104 1238.204224 1241.34082 1252.759399 1258.949585 1265.255615 1272.033447 1278.272705 1287.354004 1297.090454 1303.994263 1309.864502 1316.254761 1323.755371 1332.466553 1339.781616 1341.809448 1338.287598 1332.372803 1325.592896 1322.99231 1322.123291 1319.125244 1324.13623 1332.044556 1343.346924 1352.944458 1362.878662 1375.819336 1388.180298 1399.570923 1412.781006 1428.59375 1440.758423 1448.130127 1454.604004 1460.502197 1463.687134 1466.760864 1471.205444 1473.445068 1478.575195 1484.898804 -1501.016968 1510.911987 1518.752075 1527.578491 1535.554321 1545.354126 1555.373901 1549.621582 1535.271362 1511.214966 1511.770996 1528.737793 1547.726807 1567.573242 1577.39209 1586.114014 1596.719849 1602.713745 1604.432129 1604.141968 1602.80127 1601.508911 1599.978271 1596.846313 1603.236206 1612.642944 1621.245605 1635.294678 1646.060181 1648.330322 1658.139404 1660.286133 1658.547241 1656.630981 1653.681274 1651.388794 1651.354248 1655.830322 1660.248779 1661.448364 1661.233521 1660.254761 1661.770874 1663.66394 1666.002441 1668.117065 1670.298828 1672.143188 1673.000122 1673.256592 1671.990479 1658.353149 1650.32605 1640.373047 1627.859863 1614.971436 1596.006348 1578.921387 1548.452026 1528.621582 1516.165649 1499.715698 1487.886719 1476.796021 1458.461792 1450.125122 1455.567383 1461.061279 1465.689575 1474.911621 1484.450317 1498.946411 1513.775879 1528.365723 1542.962158 1560.415527 1570.286865 1584.538452 1595.096313 1609.955933 1623.676514 1634.583374 1642.016602 1649.393433 1655.697998 1659.913696 1661.970337 1664.284912 1667.381836 1669.253418 1668.896118 1667.87854 1667.793579 1667.229004 1666.041748 1663.144531 1658.475464 1642.724854 1621.312988 1599.482178 1581.061646 1560.472656 1542.270508 1527.96814 1512.541016 1500.156372 1481.254883 1469.619873 1458.037231 1446.227539 1435.904175 1427.136353 1417.958374 1407.397095 1392.6073 1379.153198 1375.071289 1372.204102 1370.330078 1376.97937 1387.458374 1394.758423 1399.908936 1408.809692 1424.515015 1444.322876 1458.158691 1477.483521 1492.187744 1504.037842 1516.47998 1537.878174 1557.268799 1565.067627 1566.92041 1566.852173 1561.793335 1548.971558 1538.93457 1523.992676 1517.30188 1511.098145 1505.618408 1504.942749 1509.857178 1515.334961 1521.332031 1529.494873 1540.103149 1562.771484 1571.804565 1576.928833 1580.511353 1580.521118 1579.703247 1579.569092 1579.602173 1581.270874 1584.096924 1586.140869 1585.061768 1583.056885 1580.887329 1578.61499 1575.189575 1564.27417 1557.968018 1557.741211 1557.078247 1554.720093 1550.917114 1546.228882 1541.036743 1535.982422 1532.355713 1526.456543 1523.139038 1518.148315 1513.936035 1509.170776 1503.619629 1496.730103 1487.98645 1472.414062 1458.046265 1442.360107 1433.31958 1435.935181 1443.037231 1462.78125 1472.300171 1476.919189 1478.921143 1482.932983 1491.393433 1491.909912 1485.669189 1477.670532 1472.719971 1481.271118 1497.052124 1513.767212 1528.962891 1547.056152 1549.852661 1546.952026 1548.726685 1558.172485 1568.913696 1578.481934 1583.522705 1579.556519 1574.150146 1570.766968 1564.834839 1556.380127 1548.352661 1539.108154 1523.882935 1505.995605 1493.541626 1482.124634 1473.661255 1465.003906 1464.953247 1465.203613 1460.401367 1455.547852 1451.521729 1446.199585 1438.477295 1433.713867 1426.4021 1422.957642 1414.283936 1406.17041 1392.803345 1402.117188 1410.423462 1416.57019 1426.525391 1432.5448 1435.835571 1441.769165 1441.680176 1441.176392 1438.785156 1431.00769 1417.660767 1413.151367 1410.591309 1409.192139 1404.413818 1398.286621 1388.445435 1378.615234 1369.112427 1363.756958 1373.040161 1387.726929 1397.636841 1410.323975 1423.22998 1432.046753 1439.780273 1440.625488 1432.056885 1425.65332 1423.527466 1421.53772 1427.379883 1442.3125 1449.639404 1459.951782 1471.656738 1478.284058 1483.363281 1485.171509 1482.144775 1478.855591 1470.399292 1483.633667 1502.270386 1512.58374 1517.091431 1518.190796 1512.75061 1510.207153 1508.535278 1511.42981 1521.564087 1528.90332 1535.271729 1538.467773 1531.74707 1529.519287 1526.528931 1520.975708 1511.444458 1497.834717 1488.048462 1475.848145 1474.226074 1473.36438 1472.773926 1474.677979 1474.904663 1474.015381 1472.95459 1471.481201 1467.312622 1462.951172 1456.587036 1455.780151 1451.661865 1446.992188 1441.442017 1438.077515 1433.862671 1426.936157 1424.453369 1421.765259 1425.128784 1430.138184 1434.15271 1436.496582 1438.114624 1444.796509 1450.869751 1457.096191 1465.081543 1465.997803 1462.33606 1448.449463 1433.294556 1423.359985 1414.958496 1402.400269 1411.186157 1423.485596 1441.491699 1450.151245 1453.825317 1454.35437 1454.262329 1453.954346 1448.096313 1435.701782 1424.742798 1415.907715 1410.957153 1406.550537 1404.71582 1404.457153 1399.626831 1393.352417 1385.439209 1377.842041 1378.727905 1378.955322 1367.788818 1366.764404 1368.515503 1369.764771 1370.915405 1377.867798 1391.05896 1395.238281 1386.967773 1374.299316 1353.157837 1361.314819 1354.27124 1367.516113 1378.254028 1371.227783 1381.591431 1383.154785 1382.692139 1380.218384 1368.691528 1368.037598 1365.814331 1347.879028 1336.078125 1330.615967 1332.16333 1329.40979 1325.494141 1320.293335 1309.24646 1298.387329 1319.63208 1327.954468 1345.947876 1367.542358 1370.670288 1366.71106 1357.863525 1345.953003 1330.902222 1315.458862 1313.174561 1314.532104 1329.86438 1335.882324 1337.658936 1340.195923 1344.468262 1340.509155 1344.210327 1353.806152 1358.243286 1361.65979 1363.129639 1363.818115 1363.786743 1363.875732 1362.424194 1358.945557 1357.588989 1356.004639 1357.201538 1356.921875 1358.376953 1358.141479 1360.219482 1364.7146 1368.710449 1374.866089 1379.045044 1382.081665 1384.986816 1387.720093 1390.207642 1391.748779 1389.997803 1388.947144 1390.725708 1387.706909 1385.967651 1389.26062 1391.010498 1388.484741 1384.126709 1380.564941 1374.915039 1367.223145 1374.315552 1379.617676 1382.356812 1386.074585 1391.273315 1388.63623 1389.755737 1390.27124 1388.817139 1398.929077 1401.688843 1392.0354 1393.373169 1394.942139 1399.749634 1402.661743 1409.865479 1413.311401 1416.493408 1416.976318 1415.675293 1408.670166 1405.852783 1404.44104 1403.761353 1404.6073 1405.837769 1399.115601 1391.865845 1384.572388 1373.826782 1360.593018 1353.882568 1365.927734 1381.286499 1376.824463 1378.018066 1390.787964 1396.383789 1396.545776 1404.345581 1407.479492 1396.470093 1379.26062 1383.305542 1374.142212 1373.565552 1369.135132 1359.478394 1363.073608 1388.886597 1406.127808 1411.174805 1417.428101 1414.303833 1403.147095 1382.204468 1370.861816 1362.835327 1347.460205 1330.155151 1321.1521 1312.706665 1300.09668 1302.593262 1321.566895 1343.865723 1327.465576 1308.220337 1294.25708 1280.200317 1276.069702 1280.266602 1282.280273 1274.30603 1270.639038 1270.976318 1268.784302 1268.845825 1278.067749 1285.295166 1302.630737 1317.866211 1321.710205 1324.044922 1328.647949 1327.698242 1321.313965 1317.120728 1307.445435 1298.050415 1286.473022 1268.77356 1257.166016 1246.161621 1234.272095 1221.953003 1213.606689 1207.065796 1203.297119 1202.026855 1202.427002 1202.571045 1202.056152 1201.227783 1200.095947 1200.40564 1214.362793 1224.821411 1222.504639 1211.172729 1202.436646 1196.550781 1194.275635 1197.78894 1203.204224 1209.344727 1220.165283 1237.242554 1257.487549 1260.800903 1256.799438 1256.073364 1259.360107 1258.190796 1257.862915 1265.57666 1269.927856 1276.589233 1285.341919 1294.452759 1304.050415 1311.930908 1319.224854 1331.089478 1341.155273 1344.934814 1345.971191 1345.58606 1342.960938 1338.805542 1336.851562 1334.449341 1330.505005 1329.489746 1339.179077 1357.979248 1373.411133 1387.235229 1397.745239 1407.43335 1419.36084 1431.306396 1439.363281 1443.248901 1447.906006 1451.229248 1453.802002 1460.375 1466.980713 1473.322632 1479.033447 1486.182617 -1510.718262 1519.492798 1533.2677 1543.922119 1554.157227 1563.287109 1567.069336 1563.817749 1547.243164 1533.29126 1523.311768 1541.009277 1563.483887 1574.508179 1585.179077 1599.772705 1611.314697 1614.530273 1616.447998 1617.466064 1616.428955 1613.683105 1609.769653 1606.763916 1614.275757 1622.75 1633.976929 1643.267334 1654.113892 1660.783691 1662.066284 1663.325317 1661.801147 1659.47583 1655.138184 1649.515869 1647.571289 1650.423096 1658.50769 1661.867798 1663.222534 1664.383179 1665.644897 1666.940308 1668.934082 1670.613647 1672.359863 1673.801025 1674.158325 1674.397949 1671.223999 1654.567505 1638.701416 1627.925415 1615.993286 1602.518677 1587.73291 1571.713745 1551.414307 1539.478516 1527.474487 1513.474487 1504.24646 1494.577393 1481.47229 1458.914185 1449.494507 1452.069336 1461.286377 1472.674805 1483.001465 1497.50061 1509.619141 1522.166138 1538.204834 1553.132568 1564.939697 1575.736694 1588.537354 1604.390015 1618.191406 1627.28186 1635.010742 1641.65271 1647.071899 1652.562744 1657.648071 1662.204346 1668.39563 1672.25769 1674.166382 1672.110352 1671.954224 1672.111938 1669.79834 1663.028931 1652.452271 1638.622437 1620.147217 1599.846191 1580.992065 1561.533203 1541.034424 1526.204712 1514.363647 1502.674194 1485.710327 1471.63855 1459.05542 1448.03064 1436.936157 1427.545288 1418.455566 1407.86377 1391.040283 1376.940796 1374.68335 1373.398926 1374.833008 1380.458862 1389.068726 1397.217041 1408.432007 1424.946411 1426.721069 1430.197021 1453.565674 1475.597168 1489.981934 1502.463135 1513.031372 1525.837891 1540.09668 1546.921509 1554.463379 1559.724487 1557.220093 1548.44458 1539.417969 1528.172363 1518.944458 1511.794312 1507.135986 1505.693237 1510.599731 1515.723022 1521.013672 1527.845947 1535.370483 1564.485352 1572.934692 1578.576416 1583.590088 1584.199951 1584.244873 1584.286743 1585.286133 1592.956055 1596.8927 1595.939697 1593.734131 1589.536987 1585.054077 1582.116455 1577.160156 1569.861694 1564.273315 1564.71936 1564.35791 1561.660645 1557.150635 1552.061279 1546.930786 1543.208374 1540.574707 1537.268921 1530.228271 1523.251465 1517.525391 1512.510254 1506.230469 1501.632935 1493.753906 1477.063354 1463.958374 1452.307007 1440.456543 1434.529297 1437.384399 1449.724609 1459.450195 1462.543457 1461.085815 1463.677734 1475.867554 1479.185791 1475.551758 1471.905396 1473.204956 1482.157715 1496.532227 1508.015137 1520.109253 1545.307861 1550.730225 1542.460693 1545.68811 1555.845947 1566.998779 1576.148438 1577.227539 1573.233521 1568.45813 1562.84668 1561.178589 1556.144531 1551.054688 1539.730225 1526.909424 1512.799561 1496.831055 1484.255493 1475.866699 1465.503174 1460.652588 1458.142456 1456.262329 1453.776367 1450.082397 1441.945801 1439.492188 1439.793823 1437.190796 1428.9552 1419.934937 1410.876465 1399.067139 1399.496826 1412.042969 1428.067139 1437.198853 1441.53064 1440.907227 1439.776611 1439.067993 1437.80603 1435.108154 1429.451172 1424.042725 1418.618164 1416.822754 1410.839966 1401.408203 1391.76355 1382.490356 1375.702759 1369.960083 1365.021606 1371.921021 1379.244263 1394.155396 1409.578979 1421.286255 1427.281616 1431.911621 1437.872314 1435.40918 1438.455078 1443.323242 1440.105103 1432.890259 1438.11084 1448.019043 1461.637329 1474.455933 1486.984009 1498.284058 1501.736206 1494.068726 1486.543457 1485.133545 1480.582642 1491.353027 1509.066528 1522.582642 1530.331787 1534.35144 1532.63208 1529.171875 1527.1427 1523.571411 1526.719604 1533.107544 1531.960571 1523.73938 1511.94873 1509.329346 1499.7677 1492.502686 1486.969727 1483.55835 1480.905884 1481.057251 1481.422363 1482.637451 1485.238892 1485.687622 1483.69104 1482.632446 1481.682861 1478.116455 1472.354248 1471.696655 1471.392334 1465.210083 1457.586304 1452.976074 1445.107544 1437.720703 1429.309448 1424.608154 1428.662109 1433.656128 1439.546509 1445.83667 1449.896606 1451.129517 1450.878174 1461.49292 1466.720337 1471.14209 1473.570557 1470.174561 1460.494385 1443.693481 1432.452759 1424.672485 1418.776855 1410.657715 1410.636719 1423.790283 1439.997314 1447.772705 1453.150269 1452.227661 1445.922119 1439.195435 1432.544678 1424.572632 1415.681274 1408.667603 1402.78772 1401.71521 1395.033447 1390.13147 1387.960449 1380.484497 1379.02478 1377.78064 1369.077637 1365.129395 1374.073975 1375.743164 1379.520386 1387.493042 1384.489136 1385.793335 1390.373291 1390.163452 1374.177734 1354.434204 1374.664673 1364.653931 1373.518677 1383.978516 1383.315796 1388.920532 1387.045044 1380.956787 1370.022339 1355.278442 1351.282593 1348.743164 1341.904419 1343.759399 1342.175293 1337.641235 1332.614502 1327.674561 1322.357422 1312.048706 1299.308594 1317.228149 1327.260376 1346.168701 1368.509766 1373.0448 1370.267334 1360.019775 1346.02124 1329.193604 1316.109253 1318.489502 1316.838745 1314.358398 1319.25293 1326.560303 1329.852417 1330.62146 1333.50354 1345.067139 1356.472778 1360.242676 1366.331787 1366.228027 1366.263672 1362.710205 1359.069092 1355.781494 1351.605957 1350.925293 1350.373535 1351.447266 1351.728638 1352.318726 1354.951172 1365.571655 1370.37915 1376.616699 1379.865112 1383.315186 1386.894165 1390.414917 1391.785889 1392.703003 1394.203735 1395.602661 1398.270264 1400.739746 1399.355103 1396.578003 1395.192139 1393.461548 1387.648804 1383.298584 1380.910522 1375.787964 1369.246216 1373.276611 1377.904053 1377.661011 1379.661255 1381.982056 1379.565308 1372.623413 1373.88562 1373.970093 1387.106323 1389.072144 1382.351196 1383.885254 1390.710815 1402.28125 1406.798218 1412.968628 1416.549072 1417.767334 1417.519531 1417.288086 1404.610596 1400.849731 1398.732788 1396.809204 1398.357544 1395.481934 1382.932739 1374.24646 1365.90979 1356.840454 1344.711914 1338.761353 1366.532715 1371.882568 1357.706665 1362.386963 1375.734741 1379.168701 1375.567383 1392.818848 1392.612549 1377.737427 1355.961182 1360.777588 1350.491333 1356.056274 1347.907715 1339.117432 1358.635498 1386.473267 1397.25354 1393.25 1401.877075 1404.625854 1395.088745 1374.346436 1354.035645 1348.376099 1338.660767 1325.245605 1305.95105 1297.748779 1289.462402 1303.207764 1321.771851 1335.475342 1327.697998 1313.092651 1303.020386 1291.204224 1279.202515 1267.110718 1266.795288 1266.024536 1262.232178 1262.349243 1260.585571 1258.671021 1266.195557 1274.096313 1285.784424 1296.353516 1304.796753 1317.046021 1330.175659 1325.356689 1321.271729 1317.754272 1305.25708 1291.099365 1274.86853 1259.398926 1248.114136 1236.581055 1225.95166 1216.088745 1207.490234 1203.391357 1205.606567 1207.685425 1208.3302 1207.942017 1207.094727 1205.772339 1203.368774 1199.530396 1205.625244 1213.259644 1213.469849 1205.915527 1199.791504 1195.475708 1195.761841 1199.881348 1204.889038 1211.359619 1218.984985 1232.707886 1252.70874 1266.279785 1273.984253 1278.061035 1282.148193 1280.925049 1277.104736 1270.829224 1268.874878 1273.343262 1278.169922 1288.684204 1304.155273 1313.681396 1321.805908 1329.897095 1336.773926 1342.85791 1346.559082 1351.733032 1357.069092 1357.089478 1352.72229 1351.379517 1348.121338 1341.665649 1338.554932 1356.233032 1375.894043 1390.779541 1401.731201 1409.505859 1419.851929 1429.21875 1433.818848 1436.793701 1436.921509 1439.424072 1448.630737 1460.893555 1468.546387 1476.439331 1481.586304 1488.126343 -1533.64917 1534.425659 1550.268311 1562.569946 1568.924561 1576.329956 1579.729492 1575.993896 1566.105103 1544.746582 1533.872925 1558.383057 1571.029175 1585.917969 1600.713013 1615.357178 1621.458496 1624.619507 1627.659546 1629.607178 1629.154541 1627.118774 1624.170898 1618.952393 1623.104858 1635.237305 1648.882812 1655.711426 1659.378906 1664.133545 1667.087524 1667.96106 1665.735352 1661.923584 1655.503174 1646.493286 1643.194946 1643.940063 1649.603271 1659.771606 1664.713989 1668.060059 1669.030151 1669.946899 1671.729248 1673.002075 1674.272583 1674.912842 1675.208252 1674.630371 1666.406616 1652.355713 1636.699951 1616.716064 1600.334473 1582.224243 1571.004272 1559.838867 1547.748169 1539.341309 1530.078003 1520.467407 1509.62207 1502.605469 1493.00415 1483.556274 1471.973999 1457.952881 1451.949341 1464.407471 1480.800537 1494.611328 1505.687134 1515.544312 1528.880371 1542.1698 1554.475952 1565.174927 1577.534302 1593.447632 1610.729736 1617.83667 1624.013428 1632.51355 1637.875488 1644.795898 1652.399902 1659.039673 1668.368652 1675.157959 1679.874146 1677.131958 1674.36084 1673.864868 1671.865479 1658.445068 1644.817627 1631.521484 1616.905518 1598.37793 1575.761475 1555.29248 1533.422485 1520.474854 1512.328735 1500.502808 1485.37207 1471.399048 1459.087036 1450.400024 1440.825195 1428.933838 1416.893188 1404.881592 1385.737671 1377.259766 1376.073486 1375.233154 1376.962402 1381.067627 1388.849854 1398.728271 1414.775269 1435.714233 1450.297363 1447.822144 1446.803955 1469.443115 1487.279541 1498.149048 1507.00354 1515.263916 1527.223633 1536.558838 1543.649048 1552.161499 1552.8125 1546.881226 1537.561523 1528.557861 1520.045776 1512.302368 1508.416504 1506.785278 1510.658203 1515.522095 1520.620728 1526.965698 1536.98877 1563.220459 1574.820068 1583.887695 1588.33667 1590.837524 1592.240845 1594.479614 1599.779297 1603.573853 1605.460083 1606.487915 1605.397217 1599.325317 1592.696167 1586.753052 1581.241577 1573.922363 1571.821777 1571.650879 1570.086792 1567.82312 1564.165039 1561.070923 1554.740601 1549.325928 1545.433105 1540.793945 1534.625488 1526.775391 1518.840942 1512.937744 1504.205933 1502.075195 1499.492798 1490.38269 1479.928589 1469.509766 1458.055786 1448.210693 1439.231934 1439.555176 1446.965576 1448.936279 1449.378784 1452.013672 1457.661499 1462.643311 1466.181396 1469.367798 1476.812012 1488.922119 1503.532837 1514.890747 1528.77124 1544.793579 1553.034668 1539.617554 1535.096069 1549.735352 1558.155762 1568.291626 1571.702271 1567.431396 1564.309204 1559.233521 1554.947632 1550.86731 1548.085327 1538.749634 1528.187012 1517.562988 1506.150513 1492.688843 1480.746338 1471.409058 1458.323364 1450.391602 1451.664795 1452.080688 1449.720825 1444.362549 1441.239258 1438.935303 1433.209351 1427.394165 1420.733887 1412.207031 1403.303101 1397.128174 1410.198364 1427.276123 1436.137329 1440.593872 1438.59375 1435.855835 1433.458862 1432.319458 1431.069946 1429.140015 1424.922241 1414.915283 1406.512085 1400.87146 1392.005615 1382.547729 1376.949951 1375.03479 1371.111084 1366.614868 1375.231079 1387.255615 1395.348633 1400.653198 1417.525269 1424.312866 1428.454224 1436.036743 1436.947144 1440.900513 1453.181152 1456.542358 1454.35437 1445.807373 1448.347778 1456.697632 1474.690918 1490.564087 1504.047729 1512.962646 1509.906006 1503.355591 1502.416138 1500.453491 1497.198486 1500.575806 1519.095581 1534.192017 1540.919678 1544.014648 1543.859619 1541.186157 1537.885376 1537.553833 1535.760254 1526.86145 1516.354004 1506.929932 1499.508301 1499.16748 1494.678589 1496.581421 1493.696655 1488.420898 1487.818848 1494.006104 1497.675781 1497.744263 1496.418945 1494.781006 1493.032715 1493.420532 1489.829712 1482.844727 1482.043213 1480.703491 1477.168701 1470.143555 1461.184204 1448.931885 1437.507568 1428.732056 1429.308716 1434.54248 1440.571533 1450.147095 1455.752808 1459.938599 1462.66272 1462.975952 1467.112793 1471.314819 1476.273926 1481.932495 1476.520142 1466.180298 1454.760742 1440.960083 1434.22229 1427.446533 1422.749146 1417.475952 1410.887207 1424.112183 1440.314697 1448.100708 1447.84436 1437.62207 1429.796753 1426.7323 1419.567993 1411.393555 1402.217896 1399.963257 1394.750854 1391.210205 1391.493042 1390.033203 1385.860718 1380.836182 1378.331909 1366.070435 1372.804443 1383.256226 1391.770142 1388.520874 1395.370117 1395.027954 1395.052246 1394.814209 1391.451294 1371.192017 1368.4104 1381.483765 1368.776245 1378.203857 1392.05957 1393.579956 1393.486206 1388.834351 1374.440063 1365.538452 1370.761353 1362.454102 1358.973633 1357.7677 1353.056763 1347.73877 1341.965576 1336.037476 1330.648926 1321.672119 1307.782227 1302.726196 1320.745728 1331.067993 1341.718628 1362.101196 1376.978027 1370.974731 1355.94812 1342.932739 1328.769043 1333.44043 1331.243896 1326.424561 1318.169678 1316.928589 1318.669434 1324.118164 1325.870605 1334.755371 1346.641479 1353.834839 1357.658813 1361.884888 1362.4375 1364.330444 1359.135986 1354.176147 1347.886353 1342.559448 1341.89502 1348.255005 1350.215088 1352.636475 1360.983765 1369.902222 1370.170288 1375.276489 1379.993286 1382.13916 1385.434814 1390.068481 1392.155396 1392.342163 1393.069702 1395.015625 1398.547607 1402.557739 1404.036743 1405.24353 1403.772461 1398.98645 1391.038452 1380.786865 1372.93335 1375.132202 1370.192261 1364.755493 1361.072754 1363.09314 1358.932373 1364.170898 1367.960449 1368.690796 1353.456421 1352.01062 1360.090332 1373.195312 1370.235229 1362.625488 1379.083374 1392.4198 1403.757324 1408.551514 1413.883667 1416.866943 1417.185791 1417.402466 1415.950928 1399.827026 1394.262573 1391.696167 1388.815308 1392.691284 1393.723511 1374.113159 1353.135498 1340.704224 1339.084961 1330.647095 1322.162476 1349.724121 1348.460449 1332.891968 1351.838135 1362.480591 1353.286987 1363.776855 1379.914551 1368.710938 1357.439331 1334.432617 1344.087158 1334.454834 1331.647095 1322.508179 1323.648315 1351.734863 1378.281616 1379.875244 1368.532104 1384.065796 1387.077515 1385.640381 1370.057495 1348.05603 1331.648071 1326.962891 1316.817871 1300.016602 1285.764893 1278.918701 1301.844238 1317.364136 1331.91394 1333.683105 1329.363892 1318.639526 1303.640869 1285.170776 1271.232788 1256.87207 1255.411011 1254.11731 1253.981323 1253.236816 1252.498169 1255.682251 1263.785156 1271.033081 1275.753906 1289.119629 1315.112427 1320.658936 1316.052002 1307.653931 1304.626221 1295.456787 1281.306396 1266.202148 1252.382812 1241.176758 1230.43042 1221.946899 1213.959961 1206.643921 1205.085571 1209.354736 1211.336426 1211.892578 1211.630127 1210.887817 1209.955078 1208.018799 1202.253174 1198.981812 1204.912598 1205.19043 1201.36499 1196.174072 1195.262573 1196.723877 1200.828003 1205.927002 1212.389648 1221.450317 1233.386353 1246.780518 1262.113159 1277.166382 1291.776489 1304.953247 1303.884155 1296.115112 1289.536011 1287.891724 1287.56665 1284.419189 1282.656372 1298.873169 1311.806641 1319.67749 1324.458862 1328.591064 1334.11377 1341.283447 1347.204834 1354.2146 1360.304932 1365.428833 1366.702148 1363.413452 1358.770508 1352.103516 1346.83667 1364.456665 1383.526489 1397.813965 1406.342407 1415.060059 1423.583252 1427.116699 1426.104004 1426.27356 1438.510132 1448.333862 1461.848145 1470.590332 1477.813721 1483.243164 1488.505737 -1549.427856 1549.551758 1564.460327 1570.855103 1578.533447 1588.513184 1590.50061 1588.529419 1578.561279 1562.389404 1551.625488 1567.491577 1581.531616 1598.480469 1613.977295 1624.793213 1634.098877 1635.837158 1639.279053 1640.775146 1639.718018 1638.624634 1639.308228 1637.387573 1632.196655 1645.897339 1658.934814 1665.138306 1668.391968 1669.189087 1671.429565 1672.27124 1669.960449 1663.448364 1652.413086 1641.847534 1634.426147 1633.97937 1640.167236 1647.311646 1662.861572 1671.589233 1671.77417 1672.251099 1673.714111 1674.717651 1675.374146 1675.891113 1675.47522 1671.587036 1658.520874 1645.464111 1634.390381 1616.994141 1593.42334 1574.661133 1558.545288 1549.167358 1541.006714 1533.549805 1526.319214 1518.360962 1509.569458 1502.524414 1496.704956 1490.404175 1481.682129 1470.594482 1454.543823 1460.448975 1475.138794 1488.82019 1502.189331 1509.062378 1516.795776 1528.360229 1537.44812 1554.516602 1575.3302 1592.80188 1604.352173 1612.421509 1621.935669 1628.663452 1634.310425 1642.219849 1649.296265 1658.506348 1668.218872 1674.779297 1676.228149 1673.099487 1673.044312 1673.87915 1669.005371 1654.901978 1637.425537 1621.125977 1608.126465 1592.004028 1565.124634 1551.253662 1529.813599 1513.362793 1503.182861 1493.515015 1482.653442 1468.735474 1456.971313 1448.841064 1442.097778 1432.964111 1420.938843 1404.526733 1388.36731 1378.080811 1375.880127 1375.956177 1376.558838 1380.772827 1387.372192 1397.258911 1416.611694 1439.591797 1462.624756 1472.641113 1465.785522 1462.324463 1481.355713 1493.57019 1500.724731 1506.358765 1512.22168 1525.139282 1533.91687 1544.24646 1549.617554 1544.569946 1536.30188 1528.181519 1521.10437 1514.857544 1510.440918 1507.824585 1510.817383 1515.491089 1520.291382 1526.282471 1536.767822 1564.098511 1575.072998 1586.420288 1594.737671 1599.368042 1601.061279 1603.322632 1606.571411 1609.786011 1613.446289 1614.727417 1613.74292 1607.233765 1599.805298 1593.407959 1586.11145 1581.812866 1582.100098 1582.286133 1579.351685 1574.925049 1570.963135 1566.63501 1561.401489 1554.293091 1547.980591 1540.724487 1533.686768 1525.756836 1514.490356 1508.681641 1501.734497 1493.942993 1494.41687 1489.385864 1481.736206 1471.911377 1460.756714 1451.660034 1441.545898 1439.995361 1447.535645 1450.845581 1455.014526 1457.944702 1458.781738 1460.144775 1461.627319 1465.809326 1475.199585 1489.172729 1498.9375 1509.19104 1526.147095 1534.381104 1545.995483 1534.941284 1531.132202 1541.116943 1548.716553 1556.606201 1561.275269 1560.975708 1557.665039 1553.961182 1548.396729 1544.272461 1539.980103 1533.681396 1526.092651 1516.663574 1507.547241 1497.298462 1484.781982 1477.591309 1459.802246 1450.314453 1446.792847 1445.567139 1443.433716 1440.638916 1438.904053 1433.666992 1426.863159 1421.411255 1416.37085 1409.218628 1402.291382 1399.424072 1409.420288 1418.596436 1425.185547 1430.602905 1434.338745 1431.405151 1426.811035 1424.865601 1423.881836 1421.879639 1417.956665 1410.582153 1401.095825 1390.953735 1384.039062 1377.32251 1379.604004 1379.542969 1374.533936 1367.37146 1375.576904 1386.992554 1403.858521 1416.867432 1422.980835 1426.197998 1434.224609 1440.609131 1444.130493 1446.188965 1449.501099 1463.392456 1468.880005 1466.792358 1468.646729 1463.414551 1468.159424 1491.349976 1512.002441 1517.893555 1518.6875 1515.075439 1516.236694 1517.634644 1517.037476 1515.395508 1515.254272 1528.645386 1540.507202 1549.386597 1551.300049 1551.12561 1549.653809 1545.290161 1539.059448 1526.980103 1519.524048 1515.689453 1510.326904 1506.859863 1508.869385 1510.638794 1502.381836 1497.958618 1504.125 1508.20874 1511.562134 1512.532227 1511.528564 1507.501831 1507.241943 1507.961304 1502.283203 1494.291016 1492.547729 1487.053101 1480.782837 1471.222778 1458.823486 1444.730469 1435.579834 1437.059448 1440.325806 1440.968628 1449.195312 1457.237549 1462.500244 1468.459839 1470.43457 1470.860229 1471.500244 1474.05896 1478.335938 1489.099976 1485.526489 1474.214233 1465.057007 1454.950928 1445.613892 1437.751709 1429.765747 1422.717773 1413.557861 1417.427979 1433.104126 1443.880127 1443.729004 1438.262695 1426.113525 1419.886475 1413.467773 1407.355225 1401.929077 1400.557251 1399.333984 1400.908936 1397.008789 1391.933716 1386.195068 1379.48584 1376.435669 1377.181641 1383.771973 1390.079956 1401.840942 1399.715576 1400.385254 1403.166138 1400.591309 1396.342163 1382.032715 1363.973877 1374.893677 1386.871094 1375.347168 1387.964355 1395.035645 1396.069946 1392.787231 1381.795776 1380.990356 1386.483398 1385.599243 1379.400024 1371.369507 1368.814209 1359.097534 1350.584717 1343.324219 1337.480591 1331.717285 1318.001587 1301.700317 1315.767456 1329.891357 1337.273315 1351.055054 1371.531372 1381.183594 1371.220703 1355.158447 1342.785156 1350.40271 1348.86792 1343.72937 1335.519043 1327.859131 1326.587769 1329.300171 1325.867676 1325.154419 1326.424194 1336.39624 1342.657837 1346.748901 1349.309937 1349.787476 1352.949219 1350.475342 1342.200684 1339.083618 1341.556763 1345.48645 1354.915894 1353.246094 1352.283203 1357.077881 1366.477417 1369.045166 1374.653076 1379.85376 1380.579102 1381.651611 1386.300415 1389.963745 1390.318848 1390.286255 1393.685791 1397.824341 1400.615845 1402.431396 1404.663086 1404.858765 1401.748291 1389.663452 1377.921143 1364.513428 1357.937622 1358.274048 1353.468994 1349.102783 1349.520508 1347.636719 1348.70752 1349.999146 1348.513428 1341.072998 1338.843384 1350.065796 1355.626465 1352.728882 1352.610229 1368.098633 1384.90979 1398.248413 1405.216797 1411.161621 1415.294922 1415.528809 1414.180176 1411.503784 1392.214233 1385.242798 1379.450928 1385.010254 1391.410767 1392.607788 1378.634521 1357.424683 1335.73877 1314.223755 1312.529419 1302.02832 1321.574707 1321.119141 1312.189331 1334.471436 1336.539673 1335.869507 1361.271729 1378.02771 1356.866821 1337.409912 1327.703613 1305.789673 1302.977051 1305.42041 1292.32312 1309.873901 1338.47168 1360.213501 1355.451538 1352.459106 1360.987915 1369.426025 1377.934082 1368.98999 1347.814819 1328.427856 1311.160156 1306.383911 1289.720215 1280.162476 1277.369263 1295.529541 1309.004517 1322.261963 1331.024048 1334.016846 1319.75061 1301.061279 1285.500488 1272.787476 1257.91687 1247.192627 1246.351562 1246.236938 1248.218018 1248.336914 1247.326538 1250.529785 1255.036255 1267.240845 1283.374634 1306.763794 1311.261475 1303.377686 1293.903198 1293.270996 1283.554321 1274.186157 1261.818848 1248.116211 1235.608643 1227.02063 1220.065674 1212.695068 1205.841919 1207.524902 1212.977173 1215.373901 1215.809082 1215.450195 1214.599854 1213.403076 1210.886597 1205.802734 1198.565186 1198.682739 1199.129272 1198.341187 1195.76709 1196.560791 1197.224365 1201.587524 1205.809814 1212.558716 1220.338501 1230.657837 1247.570312 1261.820679 1274.707397 1286.776245 1304.822632 1320.075562 1313.744873 1305.027832 1302.800659 1301.40271 1299.045044 1295.632935 1294.606934 1307.400391 1314.841431 1319.088135 1322.747314 1328.054565 1335.554565 1341.997559 1351.938232 1358.677246 1366.731689 1374.659302 1377.620605 1370.862915 1364.020874 1358.570801 1352.175659 1364.911621 1385.225708 1397.275146 1405.217163 1412.116699 1414.649292 1412.476807 1421.178833 1438.555664 1447.439209 1461.796143 1470.481201 1477.180786 1481.265015 1484.576538 -1566.291016 1564.276001 1570.093384 1575.155029 1583.449219 1597.262573 1602.580078 1599.76123 1584.925659 1572.18457 1564.761597 1583.414185 1601.214722 1610.246338 1620.61853 1638.678223 1653.194092 1656.397095 1658.228271 1655.198608 1646.393188 1645.983765 1651.181274 1653.454468 1649.418091 1650.942261 1666.750488 1674.104736 1677.348999 1677.141235 1677.10376 1676.355225 1673.505249 1666.066284 1653.205566 1639.926514 1631.711182 1628.445557 1632.593872 1640.398804 1653.248169 1670.071533 1673.694824 1674.628418 1675.039429 1675.497314 1675.937378 1676.631958 1675.417236 1668.453003 1654.07373 1636.97937 1625.759766 1610.569458 1591.721313 1572.416138 1553.9729 1541.280518 1530.613159 1521.151611 1517.450439 1511.790527 1502.537109 1496.68042 1492.266479 1488.151855 1476.912354 1465.601807 1465.910767 1457.371704 1468.311401 1481.368164 1497.43811 1504.298218 1509.188232 1521.084473 1538.31665 1554.028809 1575.917969 1594.470703 1604.912476 1613.821289 1622.829102 1628.101807 1635.32666 1641.330078 1649.011597 1657.785522 1667.645264 1673.546875 1672.188721 1666.95166 1663.187622 1663.472534 1661.422241 1651.552734 1636.026855 1615.145386 1596.55188 1575.540039 1555.935181 1541.180786 1524.555298 1509.887695 1496.120117 1486.143677 1475.938965 1463.368408 1451.904785 1445.445679 1440.440308 1432.655396 1423.056152 1407.568359 1392.133911 1380.15332 1376.262207 1376.72522 1377.673584 1380.441528 1387.193359 1394.205811 1413.379761 1440.510742 1465.703491 1486.447754 1489.979248 1482.922241 1473.176636 1487.575806 1495.051758 1499.505005 1506.558105 1514.78894 1525.183838 1534.104858 1540.056396 1542.707886 1536.89917 1528.405029 1521.923584 1517.355225 1513.098999 1508.913574 1511.851074 1516.385742 1521.169067 1528.241089 1541.237061 1566.975342 1577.641968 1588.287231 1599.060059 1603.008301 1606.571167 1610.318115 1613.393311 1616.905396 1621.513794 1622.731201 1619.6427 1611.761108 1605.665527 1600.865479 1595.61084 1589.91626 1589.178345 1588.481934 1587.279907 1580.612061 1575.134766 1568.167969 1561.850586 1552.924194 1545.811768 1536.608398 1527.435303 1520.936035 1509.425781 1501.745239 1494.825806 1484.282959 1482.992554 1477.443481 1474.426147 1463.60083 1453.738403 1449.381226 1442.89856 1445.763184 1454.642334 1465.690796 1470.96106 1473.166504 1469.547607 1465.185547 1461.269287 1461.579956 1468.767334 1481.630005 1490.579712 1500.779175 1509.69519 1523.704468 1533.778442 1532.166382 1522.515259 1532.095703 1539.408081 1545.244263 1552.571899 1552.630737 1547.857544 1547.154175 1541.728394 1535.84021 1532.719727 1527.900513 1520.673096 1511.89917 1504.797974 1493.634155 1483.052856 1476.284546 1463.314819 1451.031372 1440.271851 1438.803101 1438.358643 1436.236084 1432.757812 1428.597412 1423.409668 1415.846069 1411.628296 1405.427979 1399.908691 1404.395874 1408.650146 1413.253296 1419.260986 1428.290161 1431.0271 1429.106812 1418.386597 1412.550781 1412.758179 1411.216553 1407.671021 1400.168579 1392.736572 1387.888794 1386.476807 1386.654785 1388.11792 1382.942871 1376.008545 1368.850098 1374.334229 1383.15918 1398.673706 1418.199341 1429.313477 1434.292847 1440.888428 1447.756592 1454.998657 1462.322998 1461.27417 1467.104614 1477.381958 1484.44519 1486.482544 1485.934204 1479.704468 1489.619873 1513.435791 1523.87207 1526.19104 1527.218384 1531.101685 1532.452759 1533.633545 1533.873413 1531.616821 1529.652832 1534.698242 1542.575928 1549.724609 1553.380371 1553.30957 1549.562256 1544.592529 1537.906616 1532.832275 1526.588013 1518.867554 1514.103027 1523.440308 1520.631714 1509.446411 1512.863525 1518.838867 1524.925659 1527.888306 1528.460449 1527.517456 1523.006592 1522.234985 1522.038818 1513.946411 1512.698364 1503.227295 1491.623901 1479.642822 1468.985352 1454.230469 1442.775757 1442.870483 1447.17981 1448.925415 1450.131714 1455.981201 1463.394409 1473.521851 1481.510864 1478.907471 1475.950806 1474.569702 1476.88208 1478.365967 1481.815552 1482.094482 1476.851318 1467.54895 1460.046631 1452.577271 1444.319092 1437.216919 1428.279663 1415.337158 1420.271484 1434.36499 1443.126465 1442.126831 1436.983887 1426.546143 1418.394409 1413.455444 1411.625488 1406.25061 1405.534912 1404.775757 1403.571777 1398.945312 1392.521484 1384.411377 1377.13501 1380.47583 1383.044556 1398.217407 1397.530518 1408.123779 1408.247314 1407.358643 1406.395874 1401.843872 1389.611328 1373.539185 1374.618896 1389.022583 1393.393066 1376.702148 1395.423828 1400.168213 1399.656616 1394.897583 1393.947021 1394.991821 1394.129761 1388.379761 1382.085205 1374.371948 1364.450317 1358.200806 1351.041626 1341.611084 1337.373779 1331.47644 1314.015747 1304.845337 1321.372437 1332.727417 1341.328613 1356.724609 1375.80481 1382.329834 1372.717041 1358.034302 1358.893188 1362.352539 1360.65271 1352.268799 1341.729492 1331.498413 1331.761353 1342.344116 1337.474854 1329.259399 1326.141968 1327.127441 1332.827759 1336.064819 1336.685181 1337.114258 1337.678711 1337.367798 1338.168091 1344.511597 1354.330566 1352.10144 1356.688232 1361.306641 1356.111084 1352.564453 1353.752563 1364.158203 1366.254028 1367.159058 1368.426758 1374.447021 1378.425659 1384.036987 1387.141479 1390.515747 1393.523193 1396.120239 1399.347534 1402.921387 1404.104858 1404.358765 1404.895752 1394.833496 1379.556885 1365.832886 1352.171265 1341.07373 1343.730957 1343.154175 1338.879395 1339.406616 1338.619995 1339.035645 1341.435181 1331.883911 1326.726318 1339.975098 1344.670654 1337.141113 1351.252808 1368.19812 1388.13916 1395.579956 1401.599854 1408.077759 1411.618896 1410.399414 1409.892578 1407.933594 1393.088623 1379.13501 1375.122925 1383.151001 1393.401489 1384.444336 1365.005737 1351.2229 1332.579468 1308.847046 1288.365234 1282.310547 1292.919556 1292.486694 1294.629639 1308.653564 1306.532227 1332.661743 1357.577393 1368.789795 1362.480225 1349.510986 1304.282349 1275.970947 1279.973633 1278.000854 1273.654175 1299.157593 1337.442627 1339.358521 1337.409668 1326.772705 1341.130493 1348.215942 1360.862793 1357.808105 1342.03894 1327.917236 1304.083374 1290.867065 1282.700562 1272.869873 1271.184937 1284.886108 1295.062134 1305.924438 1310.993774 1314.32312 1319.063354 1300.487061 1280.974243 1267.355591 1259.001587 1246.600342 1241.53894 1242.154907 1244.77002 1244.314331 1241.473511 1241.964966 1247.422241 1258.21936 1273.795288 1287.77832 1298.362793 1293.031372 1283.763306 1277.703857 1274.64563 1269.221191 1257.770386 1243.733276 1231.678711 1225.216675 1218.894531 1211.383911 1205.409424 1211.064575 1218.490234 1219.859131 1219.89856 1219.340454 1218.155396 1216.965698 1214.651489 1210.282227 1206.335205 1197.894043 1196.75061 1196.44458 1197.474731 1198.099854 1199.237915 1203.128296 1206.350952 1213.687134 1222.893066 1235.69519 1249.384644 1262.285278 1275.467773 1292.28064 1304.256348 1315.838379 1321.073853 1317.650391 1314.753906 1311.705078 1308.318359 1304.831543 1302.373047 1302.780396 1307.802856 1313.170288 1318.015503 1325.789917 1332.030151 1338.902344 1344.082031 1353.856323 1362.675903 1372.929321 1381.838013 1382.05127 1377.411743 1370.521362 1365.676636 1362.275269 1363.902588 1380.469971 1389.508057 1393.628296 1395.442139 1403.995972 1421.643311 1436.777466 1446.639771 1458.927246 1467.358643 1474.452637 1477.563354 1478.519409 -1585.234497 1578.901611 1586.973877 1583.768677 1589.724854 1611.152954 1617.876709 1610.427002 1600.668579 1595.711182 1584.787476 1605.980225 1618.504028 1624.130737 1631.068848 1650.902344 1664.643066 1671.2948 1674.81311 1675.180664 1669.693604 1668.220093 1672.335449 1672.872803 1668.709839 1663.016846 1675.478882 1684.45105 1684.966553 1684.26062 1682.132935 1680.86145 1674.468018 1666.316528 1654.053589 1639.790405 1624.447632 1620.870361 1621.162476 1633.829346 1640.717773 1651.875 1668.199951 1675.055786 1675.511597 1675.181641 1673.547241 1671.655029 1667.810181 1660.070801 1649.137085 1633.091309 1614.153198 1599.776855 1586.468506 1565.988037 1551.674194 1539.925537 1528.027832 1514.830566 1508.397095 1499.225586 1496.119019 1488.559937 1482.33667 1474.040283 1467.8302 1472.849365 1474.733276 1470.072876 1462.348633 1475.650757 1484.893555 1499.688599 1507.437378 1519.394897 1539.107788 1555.033936 1573.586548 1593.407104 1602.784912 1609.806152 1617.557983 1625.701782 1633.576172 1641.298584 1649.11731 1657.097046 1666.047607 1671.55249 1667.949463 1659.742188 1648.845581 1648.449951 1649.23291 1642.250732 1630.063354 1611.849731 1592.058472 1564.447754 1544.447388 1529.204956 1518.259277 1506.40625 1491.456787 1477.35144 1468.735107 1455.020142 1444.983521 1438.819214 1433.782227 1428.074585 1420.733643 1408.30188 1392.86499 1384.473999 1379.065918 1376.846313 1378.956299 1383.762817 1390.655151 1399.14917 1419.273926 1442.539551 1464.090454 1485.058716 1498.101074 1498.364014 1490.274048 1488.541138 1496.584839 1501.057861 1511.296875 1519.068115 1526.302002 1534.641235 1540.581421 1544.042236 1539.949585 1531.74939 1523.788696 1519.460815 1515.373413 1510.949341 1512.510132 1517.613037 1523.934082 1535.602173 1543.128662 1566.898926 1576.784058 1587.337891 1600.810303 1605.587891 1610.248535 1616.019287 1620.110596 1623.334473 1627.543213 1628.905884 1623.92627 1616.705444 1610.395996 1604.905884 1600.474243 1595.546753 1590.979492 1588.595581 1585.741211 1578.633301 1573.325928 1565.292847 1557.217163 1547.406738 1536.915405 1526.471436 1518.160278 1511.619019 1504.32959 1493.269165 1484.188965 1475.371704 1471.025146 1465.543335 1460.939453 1459.3396 1454.067627 1453.521729 1442.952148 1451.446167 1461.145874 1475.122559 1482.675415 1483.97644 1481.761841 1478.446167 1476.07605 1469.478516 1466.092407 1473.912598 1481.075073 1491.446655 1501.226685 1509.390015 1524.258667 1526.772339 1517.089111 1518.787598 1526.866943 1536.138428 1545.79126 1546.185425 1540.204956 1537.993286 1534.46936 1529.59668 1526.741943 1522.394897 1515.298828 1507.390137 1499.346924 1489.065674 1477.30481 1470.312622 1460.499268 1450.903442 1439.389282 1435.772339 1433.925049 1432.324951 1428.467896 1424.062378 1419.629517 1414.317505 1409.039795 1402.934326 1403.211914 1406.435059 1410.060303 1412.740112 1413.473389 1425.885376 1429.696777 1426.809692 1420.942627 1416.058594 1413.891846 1408.042236 1402.093384 1393.0354 1388.104126 1388.389893 1392.182495 1396.507324 1394.709229 1386.524902 1378.671875 1369.270874 1373.240356 1378.810181 1390.896729 1408.769409 1422.008545 1433.284668 1442.374634 1450.448242 1461.755493 1466.237671 1466.049316 1473.442017 1485.477539 1496.686646 1504.008789 1506.884277 1502.396362 1497.768066 1520.694824 1529.950073 1534.039551 1536.535278 1540.720947 1542.661133 1544.402954 1544.939697 1543.308594 1539.199951 1539.156982 1543.189209 1548.014893 1553.324707 1557.818848 1558.039917 1555.905884 1548.696289 1542.550781 1536.659302 1527.154663 1528.47168 1534.382446 1524.598145 1522.688354 1529.048218 1533.351807 1534.72583 1532.808105 1529.736572 1528.039673 1529.086304 1528.22876 1526.716675 1520.485718 1515.662598 1502.959717 1491.243896 1478.458618 1466.651367 1452.277222 1446.122925 1453.204834 1456.484009 1458.585815 1460.084473 1465.999023 1473.762817 1485.773438 1492.035156 1487.747803 1479.986328 1474.904663 1472.194824 1471.033569 1471.705688 1471.137817 1465.794067 1460.080566 1453.029541 1449.120117 1443.698608 1436.455078 1425.869019 1417.795776 1424.540039 1434.709961 1441.744629 1441.115112 1435.328857 1426.443481 1426.079102 1425.25647 1423.692017 1417.361328 1412.306885 1406.49231 1401.755859 1396.160522 1390.541138 1385.912354 1382.952393 1386.386841 1392.611084 1402.653198 1409.994751 1412.990723 1416.634033 1411.732056 1404.69519 1390.839966 1375.525391 1377.736938 1387.922974 1397.960205 1396.851318 1383.533081 1397.968506 1404.697266 1402.625244 1400.388428 1394.910278 1390.525513 1389.35437 1377.907837 1372.60083 1366.071899 1357.744507 1351.817139 1345.880127 1339.74353 1336.567749 1332.051025 1312.661499 1304.700195 1319.248047 1331.744019 1341.026367 1356.302368 1374.674438 1382.489014 1376.498047 1364.722168 1369.188843 1372.653198 1369.556152 1358.179077 1344.885864 1335.070801 1338.32251 1348.253174 1348.723877 1342.272461 1334.388306 1329.30188 1328.109863 1328.978149 1327.717529 1332.289917 1338.345337 1339.767822 1346.576416 1359.348755 1365.669556 1361.079468 1360.549072 1367.069336 1367.565186 1367.985474 1365.914185 1364.247681 1365.664429 1366.177368 1367.882324 1372.641724 1378.189575 1381.802979 1386.092407 1390.651367 1391.761841 1392.562134 1397.434692 1401.5448 1401.981934 1401.955078 1403.447754 1394.540161 1377.59436 1365.075928 1352.158203 1343.425049 1336.835815 1317.605347 1324.702759 1329.373779 1328.721436 1327.228394 1328.868164 1320.059692 1321.175415 1334.453613 1335.245972 1331.559692 1346.115112 1360.471191 1380.182739 1397.558716 1404.409302 1406.263916 1407.031006 1403.591675 1404.566528 1404.848389 1392.587524 1379.32666 1368.175903 1376.961304 1388.097412 1371.349243 1348.665405 1330.742676 1316.814453 1292.468872 1274.321655 1269.208862 1270.842163 1270.289795 1275.773682 1281.473267 1301.464355 1331.556396 1351.158813 1342.438599 1329.99646 1321.123779 1282.820435 1262.251221 1263.736694 1257.302856 1261.273926 1272.798828 1280.699585 1297.937134 1295.862183 1307.459839 1314.766846 1331.698975 1344.067383 1339.988281 1332.591675 1320.369751 1301.091431 1286.851685 1276.344727 1267.456421 1268.613037 1275.00708 1275.988892 1282.769409 1290.112793 1291.348267 1306.378662 1304.619141 1285.043335 1267.275269 1255.860596 1247.491089 1241.110962 1237.452637 1237.625854 1238.052979 1236.399536 1236.38855 1238.64502 1243.320557 1251.530273 1276.900513 1288.430542 1281.662354 1273.450562 1267.747681 1266.717651 1261.550903 1252.85791 1239.270752 1228.92395 1223.248047 1217.498779 1210.048828 1205.265015 1219.07666 1224.783691 1224.969116 1224.028931 1222.886841 1221.69043 1220.812256 1219.610962 1216.835205 1212.713135 1207.969482 1204.961426 1202.618774 1200.394775 1201.538208 1205.06897 1206.84729 1209.44873 1216.6698 1224.944702 1238.146606 1254.474121 1266.001587 1280.015991 1294.095215 1309.598999 1319.188354 1321.258057 1321.701538 1321.808838 1320.226929 1317.290527 1314.485352 1310.997559 1307.786865 1305.425293 1311.629883 1314.597534 1318.487305 1325.333008 1329.52124 1336.286011 1345.793579 1355.416504 1363.544556 1374.836426 1382.273926 1386.555664 1386.348022 1380.993408 1374.748535 1369.166138 1368.127319 1375.362915 1379.932007 1391.656616 1406.677368 1420.226929 1433.09375 1443.723633 1453.347534 1461.54541 1466.647583 1472.479004 1474.26123 -1616.6073 1609.664673 1618.316895 1616.422607 1612.034912 1625.734131 1630.411499 1626.137207 1628.161865 1617.271851 1605.025757 1620.584595 1633.213501 1639.934814 1642.615112 1663.428223 1675.846069 1684.096924 1690.752197 1691.367676 1688.484375 1686.248779 1685.717651 1681.151978 1675.509277 1669.841553 1678.569336 1685.748535 1687.348389 1687.183105 1685.827026 1684.421875 1675.449219 1665.336548 1651.43811 1639.181274 1626.551147 1616.532837 1614.585449 1621.707886 1631.776245 1636.049072 1644.775879 1656.57019 1663.92749 1666.886597 1662.242554 1650.766357 1652.229614 1649.688721 1641.719849 1628.243286 1609.533081 1590.844238 1574.96167 1558.328125 1548.090576 1537.064819 1525.411377 1513.189087 1503.430908 1496.864624 1492.54834 1486.57666 1476.284546 1471.478027 1482.011353 1492.331665 1494.794189 1485.139648 1462.004883 1470.553589 1480.152222 1489.992554 1504.330811 1518.712524 1536.810913 1557.464111 1574.506104 1586.884521 1598.875732 1602.981689 1613.675659 1625.379517 1633.944458 1640.828735 1648.189331 1655.373047 1661.716919 1664.171021 1662.079468 1654.911865 1635.249268 1624.711182 1626.598022 1624.376221 1614.952881 1599.714111 1584.924805 1562.021362 1538.312012 1517.841919 1508.80957 1498.142822 1485.324707 1472.685791 1463.473022 1449.788696 1439.548218 1432.111694 1426.123901 1422.70813 1417.397827 1405.610107 1393.130249 1384.171753 1378.206055 1376.988892 1380.567871 1385.285278 1391.116333 1408.321045 1433.628174 1448.146484 1469.178833 1488.691772 1503.552368 1510.528931 1507.631104 1506.438354 1506.230469 1507.262817 1513.449463 1523.152588 1529.504395 1536.413696 1546.985352 1549.636963 1543.479004 1535.942261 1526.663086 1521.551392 1517.26355 1512.808716 1512.998291 1518.850952 1524.387695 1534.24646 1542.925293 1563.945435 1574.316162 1584.394165 1599.327637 1606.806763 1615.178589 1622.560303 1626.725464 1630.213867 1634.00415 1635.539673 1626.327271 1618.297363 1611.922363 1604.223267 1598.250244 1591.574707 1587.228638 1584.260864 1579.056641 1570.504761 1562.95874 1557.097412 1549.844482 1538.613892 1522.798584 1514.546509 1508.951904 1504.459961 1497.412354 1485.903564 1478.530273 1472.221436 1465.316895 1461.119751 1463.810669 1462.319214 1457.024414 1449.664307 1447.654419 1455.523071 1466.53772 1484.577881 1495.107666 1500.803589 1494.09729 1487.400269 1483.311523 1477.703613 1472.414673 1472.669922 1473.634888 1483.244629 1492.36792 1500.871216 1509.910645 1516.442749 1512.749878 1509.025879 1513.638428 1528.353394 1538.126465 1537.643433 1532.786133 1528.493896 1523.525391 1521.408203 1520.173828 1516.756836 1511.481323 1504.263062 1497.791748 1491.149902 1480.524902 1467.478394 1455.615845 1448.461792 1440.138184 1434.004272 1427.787476 1428.570435 1427.273071 1421.936401 1417.299805 1412.302246 1407.475464 1403.829956 1406.752563 1409.437012 1412.628906 1416.465576 1423.210815 1428.918335 1429.539307 1428.797974 1428.01123 1426.444336 1418.738037 1415.300415 1406.055908 1394.755127 1387.997437 1393.350098 1402.870117 1405.381592 1401.675049 1389.177124 1381.96814 1371.990845 1372.387817 1376.448486 1386.941772 1400.602417 1420.014526 1432.383667 1440.925049 1448.945557 1455.904053 1458.284912 1460.430176 1472.156982 1486.217529 1502.282349 1513.67749 1518.45813 1516.066895 1509.284546 1529.242432 1537.659912 1543.638306 1548.184204 1549.998047 1551.201294 1557.843018 1560.860229 1557.923096 1550.712036 1549.595581 1556.057495 1559.833008 1559.869141 1561.862549 1567.020996 1568.817627 1563.542603 1550.238647 1544.047729 1539.175659 1543.516479 1542.255981 1531.310669 1534.499756 1541.087646 1543.115479 1540.717651 1533.939087 1523.720093 1523.976685 1524.075317 1521.446655 1515.402832 1510.510132 1502.450928 1493.070068 1484.549194 1475.121582 1463.247437 1449.903076 1454.159058 1460.136353 1464.999146 1468.362549 1470.00061 1475.703857 1480.893677 1489.962646 1490.680176 1483.809814 1476.276978 1469.908081 1464.718018 1462.553711 1461.076416 1459.323242 1456.217041 1451.623413 1446.625366 1443.151978 1438.767212 1426.423096 1422.536865 1425.119019 1433.538208 1441.734375 1446.034424 1445.609741 1442.267334 1440.869141 1433.952637 1429.269409 1424.801025 1415.80896 1409.98877 1403.074951 1398.187378 1393.161255 1388.795166 1389.718384 1389.553467 1387.381348 1405.566895 1410.670532 1416.371338 1416.5354 1416.556641 1400.958618 1387.805298 1384.552979 1394.302734 1391.18811 1403.606201 1404.492554 1400.295044 1391.423584 1399.842041 1405.629517 1405.304932 1404.739624 1391.143311 1381.696533 1375.360474 1371.175537 1363.425903 1359.553467 1354.428345 1348.147583 1343.101074 1336.510986 1333.234985 1333.841309 1326.437256 1303.896606 1307.785767 1327.791382 1337.571533 1349.541382 1366.123657 1379.542114 1379.032715 1374.80249 1379.557251 1380.225464 1366.74292 1357.492798 1345.961792 1338.565186 1338.214844 1354.832886 1360.128052 1354.162476 1346.786133 1337.953003 1329.924561 1328.053101 1339.109009 1349.452759 1353.686401 1357.178955 1363.00293 1369.375488 1371.499023 1368.04541 1364.232788 1366.410767 1368.916138 1369.873169 1370.010376 1369.174072 1369.095093 1372.042603 1374.05188 1375.048096 1376.878052 1378.510742 1383.475586 1387.782959 1389.209595 1390.555054 1395.223022 1398.090942 1398.94873 1398.216553 1397.175171 1394.694092 1381.345581 1369.150513 1352.495361 1345.273438 1338.130859 1328.046021 1317.31604 1322.178711 1322.026611 1320.268433 1318.819458 1314.190674 1319.465088 1331.508057 1329.898438 1326.136597 1337.766357 1357.019409 1376.508423 1386.362915 1387.723145 1404.48584 1404.411743 1400.260742 1398.167358 1398.508789 1388.554321 1381.531982 1368.861206 1360.953491 1373.754639 1362.681763 1341.256714 1321.280396 1287.129028 1269.161133 1259.864746 1255.72998 1256.338135 1257.32959 1261.687378 1270.355347 1289.875366 1317.707642 1341.131836 1329.258911 1302.93042 1284.595581 1264.106934 1248.550659 1242.39856 1240.026978 1243.778076 1252.838379 1261.074951 1265.773193 1270.70166 1289.2052 1298.576172 1318.525391 1327.876587 1323.794678 1317.228638 1308.974243 1292.625366 1281.298096 1269.67041 1264.120361 1265.744873 1269.901245 1265.457275 1270.081055 1273.256348 1274.536255 1285.7771 1296.665771 1287.000488 1268.354614 1254.213013 1244.69458 1239.567993 1234.409912 1230.017822 1233.227539 1230.367676 1228.330078 1226.726318 1224.545898 1235.267944 1262.225952 1270.040894 1266.766602 1260.975464 1258.68457 1258.199585 1254.323486 1247.907593 1235.831787 1226.124634 1219.474854 1214.587646 1208.677734 1206.424072 1224.689087 1233.086548 1230.420532 1227.678101 1226.380127 1225.102295 1223.907593 1222.629517 1221.202148 1218.741089 1213.899902 1210.526611 1207.585083 1203.001831 1206.87439 1209.681396 1212.252197 1216.595337 1222.523071 1235.427124 1246.354004 1255.739868 1268.843506 1278.488647 1286.689575 1296.140869 1305.011475 1311.024292 1319.689087 1324.003174 1327.692261 1326.715576 1325.077148 1322.667236 1319.443359 1318.363159 1317.278564 1314.759521 1315.38855 1319.527222 1326.907227 1333.147705 1339.204834 1345.499146 1351.559937 1360.9198 1373.954346 1385.147339 1394.333008 1394.748779 1391.491943 1384.413696 1379.689697 1375.067139 1376.588867 1390.530029 1404.21582 1414.814453 1427.023193 1437.935303 1445.624023 1451.625 1457.833008 1464.161743 1467.911255 -1646.953735 1646.09436 1643.355591 1647.12854 1646.648682 1641.497314 1641.86499 1648.28833 1656.136353 1633.379272 1625.187866 1639.71167 1653.249268 1659.216431 1665.866211 1674.793457 1693.36853 1697.665405 1697.575439 1697.217896 1696.491089 1694.270874 1688.759033 1684.428711 1682.366821 1676.231079 1679.007812 1684.483887 1689.078369 1690.045654 1688.513428 1685.516846 1674.848022 1663.976807 1647.939941 1636.942993 1626.263184 1615.229492 1608.152344 1613.100464 1621.621216 1626.483765 1630.972778 1637.586426 1641.618408 1642.534668 1637.989014 1631.60498 1634.567627 1637.694946 1629.345947 1617.15625 1604.690308 1590.248291 1567.398926 1553.664185 1544.297607 1530.95105 1520.487549 1513.898926 1502.886963 1495.875732 1489.481079 1483.432007 1474.709717 1479.770508 1488.923218 1498.253052 1503.060547 1495.052246 1469.86792 1467.081665 1477.211426 1488.070923 1498.6521 1514.363159 1529.584961 1552.699585 1567.166626 1576.952759 1586.075317 1599.197144 1612.775757 1623.615112 1632.933105 1639.591675 1645.889404 1651.574829 1657.306519 1659.31311 1656.748657 1649.590698 1635.099365 1613.309326 1601.724365 1602.245972 1595.461182 1582.356445 1567.341797 1552.094849 1528.033813 1509.206787 1494.531616 1488.692017 1479.451172 1466.738647 1455.090454 1444.331299 1435.519653 1427.40332 1422.589233 1418.868286 1413.072266 1401.650513 1389.419678 1380.519897 1377.070068 1378.71875 1382.972656 1387.850952 1390.539429 1412.70813 1438.935303 1454.759521 1471.546143 1492.292114 1512.167603 1517.582031 1516.822144 1516.46106 1515.947388 1513.215698 1517.452148 1523.31189 1530.005127 1538.216431 1550.624146 1552.158691 1546.811401 1538.289917 1530.062744 1523.754761 1519.107056 1514.619995 1515.029785 1521.337891 1528.154541 1536.844727 1542.94043 1558.703369 1568.81897 1579.471924 1593.553467 1606.524902 1620.785034 1627.778564 1633.318726 1636.565674 1638.221802 1635.770996 1625.630737 1617.633057 1610.678345 1600.592896 1592.713501 1583.960693 1580.945312 1578.248291 1573.731201 1562.837524 1551.175171 1545.00769 1538.076538 1528.672241 1513.202026 1505.480103 1501.453003 1495.869995 1486.048096 1479.052979 1473.842651 1473.378418 1477.58252 1480.153198 1475.491333 1467.630005 1458.104858 1447.822144 1450.167969 1461.838989 1469.054688 1473.479858 1484.311401 1499.785889 1503.479614 1499.061768 1490.49939 1484.517578 1479.012695 1478.623413 1476.996094 1477.909424 1485.420044 1491.146851 1496.489868 1500.398438 1502.170166 1503.597778 1509.553955 1524.660522 1530.528931 1529.202271 1524.407227 1517.27771 1511.19519 1513.197998 1513.361816 1511.141968 1504.130249 1497.886475 1492.3479 1487.484619 1478.683716 1466.030273 1452.879272 1445.166382 1438.335693 1434.891357 1427.462158 1424.845093 1422.751221 1418.274292 1414.199585 1409.34021 1405.759888 1411.234009 1413.452271 1412.093994 1415.40686 1422.722168 1428.251465 1430.401367 1427.568237 1426.696899 1423.636597 1420.185547 1416.079224 1410.285156 1401.355347 1390.464111 1388.11084 1396.0 1405.701294 1408.903076 1405.039795 1395.271973 1386.394775 1378.017578 1372.02771 1376.319214 1386.425293 1398.53833 1415.762207 1425.906982 1437.805298 1442.907471 1446.922485 1447.334473 1453.442383 1467.821045 1484.594604 1502.380615 1517.111572 1527.615112 1524.984253 1522.733032 1533.079834 1545.099121 1553.444458 1560.026489 1562.770508 1563.928833 1567.906494 1570.215698 1569.664307 1567.143677 1565.838501 1568.483154 1572.139038 1572.565063 1570.799316 1576.85376 1579.35144 1575.511841 1565.637085 1550.988525 1546.718018 1551.080444 1550.229736 1542.418335 1544.334595 1549.83606 1549.775269 1540.224609 1529.363037 1516.339233 1512.202881 1510.278564 1508.06543 1505.449463 1500.5979 1491.505249 1483.973511 1477.356689 1467.786621 1458.674438 1453.13562 1460.20874 1467.616699 1474.405273 1478.015259 1479.911865 1481.337769 1481.547241 1481.700195 1478.055786 1472.741455 1466.883057 1461.900757 1456.864624 1454.00415 1453.132935 1451.47583 1448.012817 1442.01123 1439.609375 1435.273926 1429.948242 1428.52063 1429.848999 1435.495239 1444.352295 1452.07019 1453.406982 1450.785767 1440.550903 1436.17749 1428.148804 1423.4021 1414.312134 1409.401978 1402.384399 1400.090576 1397.525146 1393.26355 1392.394043 1394.310791 1395.493652 1393.298096 1399.792358 1418.681274 1418.682251 1415.97644 1409.878662 1403.37915 1389.367065 1391.560425 1405.114502 1401.776245 1406.371582 1410.875122 1403.057983 1407.680664 1405.954102 1403.570801 1398.916504 1396.737305 1388.455078 1378.900513 1364.216919 1359.129272 1352.367065 1351.164917 1348.653564 1343.884399 1339.482788 1331.480347 1320.69458 1330.136353 1342.937378 1325.626221 1310.471313 1315.10083 1331.308228 1340.730103 1358.708496 1373.104858 1382.869385 1383.765015 1382.318115 1377.066528 1365.283813 1353.74353 1342.499146 1342.093262 1343.12146 1356.312256 1370.362549 1369.15979 1358.216675 1346.231934 1335.667969 1331.449097 1346.240723 1360.318726 1369.090576 1371.71936 1373.135742 1373.719849 1377.296509 1376.251587 1368.31897 1366.086548 1369.871704 1371.958008 1373.18103 1374.03894 1375.946777 1378.551025 1379.391357 1379.127808 1379.126587 1379.233276 1382.817627 1386.687012 1389.63623 1391.777222 1393.715088 1394.88208 1395.214111 1393.596191 1390.009277 1389.872314 1381.471069 1368.073608 1351.216919 1344.563843 1337.109131 1328.796265 1317.059326 1317.677246 1317.062988 1312.742432 1308.208252 1304.01001 1309.095825 1319.113037 1315.177979 1318.462158 1328.359619 1326.05481 1326.301636 1331.367554 1345.274048 1388.073486 1401.53418 1396.449097 1389.717529 1388.589722 1383.784668 1378.248047 1369.59082 1349.710327 1346.383667 1345.444336 1331.645386 1307.341675 1282.051514 1257.737183 1255.844971 1260.223999 1260.441162 1254.815063 1250.442139 1260.895264 1275.178345 1301.998413 1332.553833 1315.768311 1291.93689 1270.099243 1252.067993 1240.133667 1241.521729 1245.161743 1241.930908 1237.497803 1241.337769 1247.348389 1260.50293 1270.031982 1283.791382 1301.508789 1311.320557 1312.22937 1303.390503 1294.81665 1284.362183 1273.620239 1263.531494 1256.981201 1260.707764 1259.605225 1256.610229 1258.916016 1259.343384 1257.981812 1266.575073 1278.02002 1278.834229 1266.135132 1253.180664 1242.83374 1236.977661 1233.935913 1226.687378 1220.619141 1218.769287 1217.55127 1217.037109 1216.661865 1219.074341 1241.158081 1250.308594 1250.748657 1248.196289 1249.674561 1250.939331 1247.747437 1242.005737 1233.092773 1222.287354 1216.743042 1212.268066 1207.575073 1207.081299 1228.140137 1234.702148 1232.71167 1230.451904 1229.415283 1228.032837 1226.384644 1224.826416 1223.317505 1221.334473 1218.015381 1212.352661 1205.691284 1205.433472 1209.024902 1212.468018 1217.096436 1222.861938 1232.456543 1243.212036 1251.353149 1259.258423 1266.160767 1270.465332 1276.080322 1280.830566 1286.663208 1294.676758 1309.94751 1320.007324 1329.678345 1332.057983 1332.490356 1331.500732 1331.019409 1329.22522 1327.74646 1320.650513 1321.631958 1321.100952 1326.087524 1329.397949 1333.75061 1337.969604 1344.575684 1353.528198 1365.097046 1378.616455 1390.95874 1397.069702 1402.186401 1401.930054 1394.703857 1390.261841 1385.04248 1385.41394 1391.111084 1402.893188 1415.481323 1426.279663 1436.629395 1442.734497 1449.41748 1458.474976 1463.565308 -1660.058716 1663.693604 1662.658569 1664.056763 1667.738037 1665.407104 1662.538818 1666.48999 1661.645508 1648.253906 1643.131958 1655.13501 1664.485596 1674.397095 1686.705933 1695.781494 1697.236572 1698.317627 1699.178101 1698.750244 1697.27478 1694.981812 1690.778442 1687.821533 1684.678589 1681.161987 1681.966187 1686.438599 1692.074463 1693.667358 1691.391357 1685.682739 1672.567139 1661.320068 1644.678467 1634.475464 1624.276733 1614.437378 1606.70459 1604.491577 1606.584229 1616.035767 1621.876709 1624.917114 1627.039185 1625.526001 1619.473511 1615.189209 1617.240234 1615.314575 1612.427979 1604.661133 1595.386963 1582.123047 1563.741455 1550.806274 1541.342651 1529.023682 1519.230713 1512.59436 1502.636841 1493.904053 1487.595825 1481.059448 1475.896973 1482.728027 1490.467896 1499.463379 1503.601685 1497.525635 1473.335571 1465.874146 1474.704346 1483.549438 1493.311279 1505.953003 1518.745728 1532.686279 1547.241699 1560.927856 1579.828735 1596.723511 1609.092163 1619.209839 1629.764038 1637.119873 1642.39563 1647.696533 1651.385498 1651.271362 1651.232178 1650.47644 1634.578979 1618.127319 1590.240112 1573.494141 1566.083496 1550.810547 1545.352539 1535.066162 1519.238525 1501.96521 1484.439087 1476.665161 1470.307739 1454.469849 1446.38562 1437.609375 1427.967407 1423.398682 1419.341064 1415.144775 1405.778442 1395.907104 1385.634155 1377.515503 1378.848267 1383.057373 1386.782837 1392.063843 1398.790527 1417.440796 1443.17981 1460.366455 1477.777588 1496.212891 1517.500977 1524.068604 1525.290283 1524.996216 1524.611572 1522.931519 1521.5177 1527.017212 1531.212769 1538.519043 1549.962646 1557.050293 1548.291992 1540.547729 1533.237549 1526.866333 1521.637329 1516.230347 1516.97168 1524.03833 1531.185913 1538.627197 1543.55603 1556.360718 1563.708984 1573.211548 1585.883301 1603.329346 1622.148315 1632.085815 1638.55542 1642.809814 1643.101562 1635.408936 1623.740112 1614.857056 1606.426147 1596.797729 1588.92688 1581.575439 1573.698486 1570.593262 1564.830322 1554.678589 1540.943237 1532.825806 1527.445801 1518.811768 1505.586304 1496.892822 1492.471436 1486.990356 1476.769653 1475.891235 1485.505127 1492.394775 1494.62915 1491.847656 1481.890991 1470.099121 1457.869141 1449.046997 1456.220337 1469.056152 1474.693237 1480.054077 1490.208008 1496.981201 1506.648193 1510.575684 1500.282837 1490.73999 1488.354858 1487.037964 1486.474976 1488.370361 1488.077148 1486.952271 1491.612427 1496.269409 1497.572021 1502.384644 1508.021851 1517.108643 1524.127441 1520.471313 1512.986572 1505.036133 1503.0625 1501.829468 1503.004761 1502.486328 1497.267212 1490.022339 1484.504028 1478.994995 1471.436401 1461.839844 1451.989746 1445.876465 1442.614014 1439.863159 1430.931519 1424.541382 1418.596069 1414.313965 1410.357666 1408.39917 1414.827637 1418.551392 1418.531494 1415.170532 1415.891235 1429.223877 1437.0448 1434.605225 1422.788696 1413.654419 1410.546021 1405.956421 1403.725098 1400.27771 1393.771118 1389.647461 1389.206177 1397.026855 1406.522949 1413.532471 1410.930786 1403.193481 1393.443848 1382.204224 1371.942749 1375.248901 1380.293213 1390.864868 1406.443359 1422.436279 1429.86499 1432.253174 1433.677979 1442.355591 1453.486572 1467.404663 1483.345581 1501.699219 1512.956909 1524.051514 1528.172607 1531.609253 1537.98999 1550.323608 1560.359009 1564.654419 1567.40271 1572.164551 1575.216919 1576.807373 1577.935425 1577.886475 1578.333374 1585.262085 1586.379517 1584.670532 1582.904663 1586.421997 1589.228149 1585.089233 1573.795654 1563.498779 1551.087036 1558.772217 1558.621582 1548.995117 1553.12207 1553.950195 1543.174438 1529.218872 1520.496826 1510.805298 1503.56311 1501.287109 1498.794067 1497.692749 1492.417603 1484.483643 1477.754517 1468.518066 1460.607056 1455.340454 1458.665161 1465.575317 1477.033081 1483.224976 1488.605469 1489.631348 1484.991577 1479.397583 1473.621338 1466.911987 1461.541016 1455.334839 1451.127075 1449.224121 1447.046387 1444.853882 1442.628418 1438.647095 1437.553711 1437.229492 1437.196899 1436.569946 1435.613281 1436.027588 1441.41748 1450.920776 1454.677612 1454.308594 1452.015015 1443.685181 1436.16394 1428.479004 1425.072632 1418.166016 1411.821533 1403.153809 1400.189697 1399.080688 1398.398315 1397.586304 1400.212891 1403.764526 1403.998779 1400.439209 1414.782959 1419.716675 1418.236938 1413.571899 1402.357544 1397.816528 1400.015137 1407.776245 1414.342896 1414.524048 1417.02478 1413.916748 1406.572266 1406.032471 1399.87915 1390.420288 1381.122559 1378.479614 1370.87793 1358.422607 1347.199585 1341.185913 1340.57251 1339.439575 1336.744873 1332.982666 1325.927734 1319.343872 1315.317383 1332.986206 1333.36792 1324.753052 1308.838013 1327.286133 1338.272949 1356.720703 1369.964966 1384.903809 1392.024902 1381.433472 1371.201416 1361.052002 1352.262451 1349.115112 1354.578979 1357.429077 1361.344482 1372.738281 1377.166748 1366.892578 1352.526733 1340.302979 1336.507935 1343.241821 1356.1698 1368.915771 1379.347656 1374.317627 1372.862793 1376.263062 1380.105469 1377.916138 1373.549561 1372.557251 1374.1875 1376.023193 1377.254028 1378.979126 1380.409302 1381.099487 1381.284058 1381.572876 1382.440552 1384.257202 1386.624146 1388.765381 1390.007568 1391.998535 1392.227905 1390.931152 1390.18103 1378.249023 1377.499756 1373.354004 1361.43042 1350.647827 1343.709839 1334.154053 1325.037231 1316.591675 1315.605225 1314.26123 1310.147583 1305.899292 1303.02832 1302.335205 1304.570801 1304.480103 1307.598022 1310.589111 1305.299316 1302.990601 1306.132935 1319.168823 1356.487183 1386.120361 1388.205322 1385.008545 1381.303223 1380.986938 1378.359985 1369.898438 1352.346558 1330.494141 1321.229614 1315.233887 1295.925537 1273.690918 1254.582397 1266.458496 1274.869995 1279.87207 1273.518555 1260.596436 1252.059814 1266.560547 1285.573486 1319.040405 1306.941162 1280.747681 1260.587524 1243.520996 1242.968628 1257.09729 1260.107178 1256.57251 1249.089844 1238.305054 1237.528931 1243.995972 1254.603638 1268.908569 1277.061401 1286.54248 1299.931396 1291.654175 1283.146729 1273.960938 1265.435425 1257.992065 1253.937988 1255.978516 1254.226807 1251.266113 1250.259033 1249.782104 1248.821289 1250.166382 1261.567627 1263.023682 1255.945923 1246.044434 1236.241211 1232.538696 1226.449097 1219.24292 1219.36499 1221.308228 1222.132935 1220.900146 1218.595459 1216.328857 1217.68396 1226.526123 1231.36731 1233.706543 1242.076172 1245.612915 1242.997803 1236.922485 1228.723877 1220.213257 1215.387085 1211.009033 1207.042358 1209.504395 1235.171143 1239.905884 1236.984131 1234.559814 1232.543335 1230.415527 1228.642456 1226.638306 1224.575684 1222.329712 1219.040771 1211.450073 1204.538818 1207.625488 1210.10437 1214.141235 1219.999146 1225.413574 1233.008911 1241.814331 1248.3302 1253.642578 1256.294067 1261.60376 1263.85437 1267.168457 1279.38269 1286.140991 1296.254395 1308.565918 1318.755249 1326.767578 1330.103882 1331.198853 1331.228516 1331.727783 1331.609985 1328.279297 1331.564209 1332.69397 1331.746094 1329.863647 1329.032471 1336.803589 1340.952515 1348.841919 1360.112305 1374.397827 1386.388184 1396.327271 1403.837524 1406.332275 1406.394165 1404.519409 1403.363281 1403.647949 1404.272217 1405.665527 1412.324951 1423.155518 1434.078857 1442.620239 1452.093994 1459.04187 1465.424683 -1655.66626 1672.835083 1673.762817 1678.093628 1684.284546 1693.488892 1687.086792 1675.432739 1667.76123 1669.667358 1667.345337 1665.81604 1672.709839 1686.037842 1695.335815 1697.692017 1699.064087 1700.020386 1700.303833 1699.466797 1697.199951 1694.165161 1692.356079 1689.958618 1687.64502 1686.396606 1686.548218 1689.800049 1695.793701 1696.479858 1694.8302 1685.74939 1672.048096 1658.382568 1642.655151 1632.064941 1622.266357 1613.086426 1605.314331 1598.02478 1597.89563 1604.517578 1609.72998 1613.102417 1614.811401 1613.375122 1608.746582 1601.502686 1602.695923 1601.300781 1595.339844 1586.065674 1580.553589 1570.40332 1557.317139 1547.434692 1537.718506 1526.912842 1515.925171 1507.861084 1500.286865 1488.524048 1484.603271 1480.640015 1481.193359 1489.172607 1493.69519 1499.731445 1503.121704 1491.797729 1475.149292 1479.915039 1469.385986 1479.255615 1486.772461 1496.597412 1508.193359 1518.380737 1532.413818 1556.07312 1574.190552 1589.680664 1602.829102 1614.255493 1624.442749 1633.051025 1636.997681 1641.243286 1644.443359 1643.80957 1645.327637 1646.680664 1632.272461 1621.029541 1591.240112 1566.231079 1545.309692 1526.225952 1518.518311 1516.746826 1505.879028 1490.551025 1477.614746 1468.210327 1461.380615 1447.778198 1438.600464 1427.306274 1423.545166 1419.172974 1415.655029 1408.623535 1399.884644 1392.46875 1380.58667 1377.781128 1384.418579 1389.60376 1390.316895 1397.394653 1412.859497 1423.798096 1443.648438 1465.964355 1486.626831 1504.585815 1525.165894 1536.702271 1541.697998 1539.605713 1534.718506 1530.077393 1525.102661 1529.365723 1535.038208 1538.372437 1552.957764 1563.811646 1553.114014 1544.131836 1535.715332 1530.201294 1524.662964 1518.049927 1519.014771 1524.685181 1531.36438 1537.351196 1542.885742 1557.038696 1566.085205 1576.701294 1586.602173 1601.544678 1620.923462 1634.308594 1643.248901 1648.535522 1647.916016 1635.388184 1621.563599 1611.190674 1601.272095 1591.798218 1584.260742 1578.675781 1570.880249 1560.313965 1554.616455 1546.282593 1534.126587 1522.182983 1516.688232 1509.213623 1498.841309 1489.401978 1485.438965 1485.53186 1487.91394 1496.809204 1503.439575 1506.368774 1505.577637 1499.920044 1482.647827 1469.165405 1456.048218 1450.784058 1465.269165 1476.365723 1488.073364 1491.667358 1496.30603 1503.976318 1512.548584 1517.842529 1508.841797 1497.773315 1500.1604 1499.44458 1499.333374 1500.685425 1497.477295 1495.386108 1495.724854 1498.560181 1498.931763 1501.699219 1504.869629 1507.63501 1509.006592 1507.423096 1503.583496 1496.897949 1493.187866 1492.565918 1492.521606 1491.97522 1489.111206 1483.660034 1476.611328 1469.867676 1463.274902 1456.951294 1450.80249 1451.697754 1446.483887 1441.940552 1434.192505 1424.568359 1415.974487 1411.706909 1411.205444 1415.102295 1419.676758 1423.771484 1425.958618 1424.464355 1424.727295 1431.893188 1442.895996 1439.813354 1424.412109 1415.871948 1409.357788 1403.803223 1402.833374 1401.661621 1400.211548 1400.633179 1397.42627 1402.145874 1409.590454 1416.391968 1415.07666 1407.638062 1397.586182 1384.622925 1372.769653 1374.79187 1377.77002 1390.098999 1403.027832 1413.359375 1416.697876 1417.307129 1428.761719 1442.141968 1456.794556 1469.053711 1481.998901 1495.451904 1505.49292 1514.705444 1527.328735 1536.162476 1543.718994 1552.881226 1561.000854 1565.047852 1567.475952 1571.634155 1575.758789 1578.912476 1582.876587 1587.602051 1590.358765 1594.210693 1596.856079 1598.320435 1597.841309 1598.76123 1599.745728 1594.02063 1581.842041 1572.106689 1565.157227 1565.082764 1563.726685 1559.019165 1560.858032 1556.529419 1539.442017 1524.952393 1510.230469 1504.834839 1498.211548 1492.66748 1490.655273 1486.717041 1482.334229 1476.541992 1467.635864 1461.021606 1458.88147 1461.890015 1467.377563 1475.321167 1484.375977 1490.245361 1492.285278 1490.233643 1481.852051 1474.645752 1467.275879 1459.846558 1454.28125 1454.453125 1454.71167 1453.093018 1450.957275 1451.942871 1450.54834 1447.564941 1446.865723 1446.579468 1445.696533 1444.341675 1442.774048 1443.084839 1446.594116 1453.500122 1455.267334 1454.752441 1452.166626 1447.399292 1439.00769 1437.923828 1432.793335 1426.835693 1414.838989 1403.404663 1401.755249 1403.540527 1402.446655 1401.09436 1407.890137 1420.592896 1420.710205 1411.665527 1407.018066 1418.608032 1420.15625 1417.42041 1406.162842 1408.041504 1410.053589 1414.601196 1417.627808 1417.837158 1417.683594 1405.889282 1400.46228 1396.258301 1392.873779 1385.506592 1375.827881 1365.34668 1359.760254 1350.889038 1338.298096 1328.833252 1329.477539 1327.964966 1325.687988 1323.403564 1323.716431 1331.901367 1314.797729 1321.888916 1320.456787 1319.49707 1311.008911 1327.390137 1336.452393 1343.929321 1360.893311 1377.887085 1389.35437 1380.947266 1370.719116 1360.760376 1356.505737 1359.47876 1361.620483 1370.173706 1375.894897 1381.213989 1381.578369 1370.670776 1357.062256 1343.420898 1337.842773 1338.876709 1347.901611 1360.831543 1368.229858 1366.550049 1366.936646 1369.102051 1374.144043 1377.613647 1375.095093 1374.460693 1375.829712 1378.021362 1379.381958 1380.330566 1381.276001 1382.090454 1383.072144 1383.781128 1384.765991 1386.022461 1387.600464 1389.598511 1391.016357 1391.67627 1390.776855 1382.342529 1379.713867 1371.637451 1362.920898 1359.761841 1354.442871 1347.151611 1341.393921 1332.256836 1324.938477 1319.926758 1316.543701 1315.884888 1316.903076 1314.432495 1310.671997 1305.644775 1302.104126 1301.198608 1301.719238 1301.211182 1299.780029 1298.478271 1299.802246 1306.106812 1341.091675 1369.639648 1372.5802 1380.409546 1379.284668 1375.195679 1370.754639 1366.936035 1357.367065 1338.163818 1319.472412 1301.580566 1280.339233 1265.01062 1260.397705 1275.169312 1294.236206 1298.150635 1289.766724 1273.750977 1252.809692 1256.255981 1275.161987 1301.946411 1299.087036 1270.065796 1250.372437 1240.864868 1255.468506 1266.730103 1273.37146 1275.362915 1269.949341 1257.61377 1243.593262 1235.230225 1240.039429 1249.149658 1257.028442 1266.527222 1288.76709 1285.2854 1274.501465 1265.253906 1258.450073 1254.316528 1251.341553 1250.985596 1249.181396 1245.550903 1242.888794 1242.94043 1240.942993 1237.86084 1239.251587 1240.969849 1237.061768 1229.657959 1224.11438 1221.184326 1220.223022 1222.79895 1226.727417 1228.627563 1227.465332 1225.046265 1222.210693 1219.575317 1216.034546 1215.739502 1216.974976 1219.846069 1235.960083 1240.227661 1239.133057 1234.86145 1225.746582 1217.842529 1214.092529 1209.700073 1206.851807 1218.540161 1242.001587 1245.77832 1241.929443 1238.779175 1235.977417 1232.949707 1230.185059 1227.838867 1224.982178 1222.125244 1218.026733 1211.046631 1205.372681 1208.080688 1210.104126 1213.79187 1218.162476 1222.844971 1228.861694 1234.973511 1242.390991 1245.172607 1246.035889 1252.959717 1252.921021 1258.26062 1265.67749 1274.882568 1282.720459 1293.973999 1306.634277 1314.192505 1317.352417 1325.13269 1329.113159 1332.5448 1333.87207 1334.070923 1336.89978 1340.96167 1342.189453 1340.926025 1339.746704 1340.125244 1339.93335 1339.847534 1352.796875 1366.429443 1379.537109 1389.582886 1397.62085 1403.781006 1411.813477 1415.029297 1418.120239 1420.600708 1423.122192 1424.800049 1426.344604 1429.526733 1437.291626 1445.520264 1454.5 1463.148071 1470.372681 -1660.056641 1671.765625 1680.170776 1687.820923 1697.412476 1706.068604 1690.196777 1671.175903 1676.331421 1680.340454 1678.486938 1671.42334 1680.150269 1690.77832 1696.727905 1699.185303 1700.821899 1701.883911 1702.082153 1701.026489 1698.039795 1695.69812 1694.899414 1692.422241 1692.166626 1692.71875 1693.189209 1694.659058 1696.745972 1697.585938 1696.568726 1686.694946 1672.439819 1656.547607 1641.831543 1629.036255 1618.722168 1610.276978 1602.350098 1596.533569 1588.557007 1593.904175 1599.452148 1601.754639 1604.841675 1603.819824 1598.589111 1591.099731 1586.415283 1587.376587 1584.71106 1573.991577 1564.184448 1556.094727 1547.773682 1538.536499 1530.062988 1521.129517 1511.541138 1502.14563 1491.362061 1485.146362 1486.760986 1490.644653 1495.786377 1500.114014 1499.92627 1503.037231 1504.177002 1492.115967 1485.432007 1484.594971 1475.311157 1475.517334 1482.229004 1488.733887 1497.828247 1512.151978 1525.210327 1550.092896 1565.309326 1579.919312 1593.913086 1606.188477 1617.264648 1624.305786 1627.160645 1630.311035 1634.346924 1634.395752 1637.499512 1639.966187 1633.022217 1619.74646 1592.094482 1569.208984 1547.378784 1524.403198 1509.004517 1491.703247 1486.694092 1477.81604 1467.593262 1457.184326 1449.874634 1438.407837 1429.026978 1424.718872 1424.49646 1416.148438 1410.685425 1402.761963 1395.977661 1388.154175 1376.629395 1384.668701 1392.920532 1399.079956 1400.171753 1402.348755 1424.311157 1443.360229 1453.342529 1467.704834 1490.079956 1509.0979 1525.919312 1550.976074 1552.082031 1548.227295 1542.915405 1537.98877 1533.301025 1534.622192 1539.788452 1545.241211 1559.36377 1563.802979 1559.171265 1548.97937 1540.22168 1533.775513 1527.257446 1519.843872 1521.850464 1526.526611 1531.433105 1535.026123 1540.143433 1556.279785 1565.407227 1575.376465 1588.460938 1605.408691 1619.427246 1635.349976 1646.288086 1651.264648 1648.72583 1635.855713 1622.256836 1608.81897 1598.359741 1587.731812 1580.956787 1575.87915 1564.970825 1553.198364 1544.802979 1537.582153 1529.272949 1518.992188 1503.372437 1495.382935 1494.056274 1492.210693 1494.890625 1500.165771 1506.677002 1513.17395 1514.683228 1513.811279 1507.258789 1494.186646 1478.822144 1463.427979 1454.659058 1457.079224 1470.009399 1490.365356 1506.176025 1510.584106 1513.681274 1512.178589 1526.979004 1522.70813 1511.810913 1508.28772 1510.168945 1513.647217 1513.241455 1512.223511 1507.848389 1504.518677 1501.729126 1502.28894 1501.72876 1502.450928 1503.204468 1502.462891 1501.286865 1499.318237 1495.024536 1489.464844 1485.33728 1484.069702 1482.863159 1482.087891 1479.887939 1477.172729 1470.230835 1462.470215 1459.968262 1455.912109 1453.581299 1450.046631 1444.94458 1440.473511 1433.432739 1423.844604 1414.777832 1412.820068 1416.923096 1421.633911 1426.000244 1429.926514 1432.587524 1431.702148 1433.222168 1438.733032 1441.006592 1432.579346 1423.026245 1415.122314 1415.540161 1415.381104 1410.827637 1408.97583 1407.686035 1406.640259 1404.245361 1406.726562 1414.974609 1417.260254 1415.638672 1407.261719 1398.505859 1390.33728 1373.715088 1375.133545 1378.683716 1386.130615 1393.695923 1400.63269 1413.529175 1422.870483 1430.735229 1439.776367 1454.992676 1466.454956 1475.315186 1484.565918 1493.115356 1507.786499 1525.634155 1536.558716 1543.20752 1549.260254 1557.240112 1561.96814 1562.686768 1563.440674 1568.996338 1575.581177 1582.081787 1588.692139 1598.146606 1603.682007 1610.271973 1610.346313 1606.474609 1604.045166 1600.90918 1596.162109 1585.114624 1576.945557 1571.323975 1567.296997 1563.263062 1555.776978 1551.080566 1545.987305 1535.988403 1525.853638 1508.146729 1498.655396 1491.826172 1486.753906 1485.302246 1477.264526 1472.267334 1466.537354 1462.615234 1464.597534 1471.356323 1478.793823 1483.864136 1486.189575 1496.23999 1497.110352 1492.284302 1485.9552 1475.74939 1467.984253 1461.676025 1458.270142 1460.472168 1463.033936 1465.301758 1466.208252 1466.440063 1464.751709 1462.932373 1459.239746 1456.52063 1455.00061 1453.088867 1451.684082 1451.075195 1452.553833 1452.111084 1455.170654 1455.734253 1455.115356 1453.822144 1452.2323 1447.12561 1442.516846 1437.680664 1427.117188 1412.645752 1407.620605 1406.764038 1410.552979 1411.626709 1409.337524 1415.765015 1425.554321 1429.75354 1428.117432 1415.789185 1415.489624 1424.346924 1421.461548 1415.658203 1417.13501 1417.362061 1417.261353 1415.370239 1416.19751 1415.175049 1403.528931 1388.673828 1385.18042 1383.608398 1376.828369 1371.310303 1359.414551 1345.378418 1330.924072 1327.171875 1328.421631 1333.300049 1331.668823 1332.299927 1337.663452 1338.761597 1334.695923 1313.686646 1313.893921 1314.969727 1317.455811 1315.513428 1333.997681 1344.773193 1353.177734 1366.98584 1380.975342 1382.518311 1377.026611 1371.143921 1366.607788 1369.810303 1370.881226 1371.669189 1379.800415 1385.083252 1386.483643 1383.98999 1375.146484 1363.265259 1351.248535 1343.182251 1338.49292 1339.531738 1351.695801 1357.521484 1353.5896 1354.075928 1360.286133 1365.427734 1369.334961 1371.430908 1373.724976 1377.310425 1379.13269 1380.055298 1380.404297 1381.0802 1382.45813 1384.327393 1385.900146 1386.998169 1387.769409 1388.598877 1390.006104 1391.489014 1391.361328 1380.617065 1373.693237 1363.715454 1361.353027 1356.765137 1353.073242 1347.127197 1342.653931 1335.142944 1328.702637 1325.213623 1320.334839 1319.073486 1317.953247 1317.319946 1328.814575 1326.779907 1318.164795 1308.501709 1300.97937 1298.136353 1295.291138 1294.229248 1294.564941 1296.59082 1303.774048 1331.95874 1351.701904 1361.768677 1374.536011 1373.324829 1366.533936 1360.416748 1350.814453 1351.5802 1342.97168 1326.920776 1309.533447 1280.648315 1262.171753 1264.345947 1282.511963 1301.44043 1313.916748 1303.823975 1289.14856 1267.136475 1246.660522 1259.376831 1280.686401 1285.595337 1258.333252 1242.10083 1248.055298 1267.387695 1283.980225 1293.960571 1295.252441 1289.317871 1276.403442 1261.708374 1246.919678 1236.332397 1235.437622 1243.01062 1254.721436 1273.526123 1279.682129 1272.406006 1263.28894 1254.850342 1249.776611 1246.521606 1247.369629 1246.242188 1242.964844 1239.072998 1235.565796 1230.242676 1226.193604 1223.041016 1221.955688 1221.578735 1222.504639 1223.390869 1224.453369 1226.756226 1230.470703 1235.177124 1235.820923 1233.334106 1230.061646 1226.810547 1224.185425 1221.744385 1218.884277 1215.335938 1214.660522 1229.291138 1237.058838 1235.317017 1233.654663 1224.369995 1217.235107 1212.46167 1209.289185 1209.469482 1221.498535 1242.942749 1258.623047 1249.978027 1242.852051 1239.608276 1235.532837 1231.581055 1228.226196 1224.08667 1219.459717 1215.904053 1211.63916 1207.224731 1207.572876 1209.990479 1212.191772 1215.717163 1219.7146 1224.093628 1228.135498 1232.377808 1235.218384 1235.849731 1240.050781 1240.806885 1246.99292 1254.407715 1265.22876 1275.827026 1288.167847 1298.936523 1312.246704 1324.039429 1327.724609 1330.372437 1333.762329 1336.853271 1338.859375 1340.535767 1343.672363 1346.155029 1347.362305 1348.680298 1350.490967 1353.20752 1353.029541 1350.742676 1359.173828 1369.966187 1379.825195 1394.223633 1406.498291 1415.681641 1420.902344 1426.034912 1430.066528 1433.387695 1437.52832 1441.043579 1444.424927 1448.287598 1452.165161 1458.235107 1465.363525 1473.110596 -1657.373779 1669.150391 1682.978516 1693.324219 1706.677124 1711.222778 1687.059082 1682.74353 1685.801514 1686.976929 1686.046021 1683.59082 1682.67749 1694.696777 1698.156738 1700.519531 1702.602783 1703.953857 1704.475586 1703.502441 1701.381714 1699.528931 1697.96875 1694.820557 1695.549805 1696.32019 1696.616699 1697.549072 1698.150879 1698.174927 1696.867798 1687.315308 1671.05542 1655.30603 1642.797241 1630.60376 1613.761719 1605.562988 1597.217773 1589.979858 1582.916504 1583.026733 1588.422485 1591.126953 1593.543457 1593.352661 1588.940796 1582.772583 1576.833984 1576.277588 1571.1427 1559.615112 1552.47876 1544.938721 1536.855957 1527.430176 1519.401489 1512.349731 1503.600464 1497.427612 1487.901855 1496.262695 1501.331299 1504.950928 1507.356323 1508.347412 1508.979004 1510.145508 1505.886963 1497.445679 1492.398193 1494.209473 1488.164917 1472.699463 1479.214844 1486.650146 1494.192749 1505.075073 1518.42395 1534.874023 1556.072021 1567.025269 1581.822754 1594.559082 1603.520874 1611.155884 1612.434326 1617.177368 1621.221191 1622.048584 1629.087524 1637.362427 1633.379395 1614.381348 1589.550049 1564.308472 1541.366943 1521.708008 1505.210571 1489.446167 1486.172241 1481.248657 1477.457764 1467.271973 1454.450195 1449.286011 1440.974854 1439.732422 1429.980469 1420.134644 1410.912476 1400.02356 1391.18103 1382.170288 1380.620117 1391.758667 1400.929565 1406.962402 1409.00061 1418.469971 1436.630981 1450.417847 1465.389282 1480.04126 1493.234863 1512.797607 1529.014038 1554.357056 1560.70166 1556.55188 1550.128296 1545.915405 1540.587158 1536.852783 1542.350952 1548.522583 1558.14856 1563.868896 1561.827515 1552.2229 1543.98938 1536.987305 1529.100464 1522.091675 1523.927002 1529.796387 1534.64624 1535.315918 1536.096924 1552.151489 1562.559326 1570.697754 1585.63855 1604.149658 1617.917236 1633.354858 1646.168579 1655.70105 1648.688843 1637.282471 1624.648682 1611.838379 1596.526855 1585.169067 1576.319336 1568.103027 1555.838867 1547.289307 1538.878418 1527.696289 1520.598145 1512.364258 1499.210205 1496.7948 1503.660156 1510.950317 1511.854248 1513.714722 1518.806885 1520.377808 1519.013672 1518.087158 1497.885376 1486.21936 1470.969849 1459.473999 1453.599121 1460.7854 1478.986328 1499.673706 1513.493286 1525.422363 1528.882324 1526.838623 1533.537109 1530.388306 1524.533569 1524.11499 1521.596558 1526.755005 1527.582397 1524.956055 1519.494019 1512.783569 1508.457886 1506.865479 1506.437256 1505.434814 1503.584961 1500.700439 1497.712158 1493.93689 1488.117188 1485.663574 1481.702759 1477.105713 1475.467041 1473.783569 1472.147095 1470.33313 1465.961304 1461.667236 1458.008911 1455.508057 1452.015137 1444.750854 1439.241333 1436.40918 1430.473999 1422.062134 1413.609619 1417.601074 1422.851929 1428.295776 1433.233398 1437.934814 1440.432251 1439.630859 1439.414673 1440.647583 1435.946289 1427.022339 1423.879028 1421.974854 1420.476562 1419.70105 1416.68335 1416.647827 1415.457153 1411.441528 1410.262207 1412.847046 1417.992676 1419.341064 1416.902344 1409.053589 1404.227051 1401.46582 1376.052734 1375.371826 1377.815918 1387.381348 1396.345581 1411.467529 1427.967041 1436.121948 1443.598511 1452.192993 1454.80957 1461.088135 1462.741943 1474.343506 1490.474854 1509.068359 1524.942993 1534.135376 1539.555786 1542.550781 1547.427734 1550.553467 1550.663086 1551.95105 1563.878784 1574.762451 1582.366821 1592.719116 1601.802246 1608.394409 1616.846802 1621.234375 1611.973022 1606.334595 1600.156006 1593.624878 1586.508789 1578.622437 1572.565796 1566.422363 1559.777588 1547.137451 1542.357422 1538.785767 1529.79895 1515.925049 1501.335205 1493.102417 1486.630493 1486.497681 1485.36377 1478.980957 1478.24353 1478.558716 1475.866699 1477.609497 1485.170654 1493.227173 1498.07959 1502.116455 1502.481079 1494.832642 1487.236572 1478.073486 1469.910034 1462.512329 1462.010132 1464.418335 1466.897583 1469.065552 1471.571045 1472.659546 1472.446167 1471.529785 1470.092773 1467.901367 1465.214233 1461.85376 1458.939087 1457.266724 1456.762207 1457.059326 1457.035889 1457.084229 1456.142334 1454.621948 1453.372925 1451.815674 1446.804199 1441.261719 1435.069458 1422.056641 1412.777832 1412.756714 1412.230469 1416.65564 1419.237305 1417.976807 1422.249268 1429.533203 1432.470581 1431.944336 1428.520142 1426.723755 1428.765991 1425.752808 1420.505249 1418.322266 1417.864502 1413.90918 1404.237793 1407.685547 1404.939087 1394.935791 1386.749512 1377.688477 1373.50061 1371.716797 1368.972412 1359.782104 1343.347534 1327.796509 1342.839233 1350.771729 1350.115479 1341.87793 1345.795166 1349.367798 1348.272217 1344.053955 1334.060669 1330.870117 1333.425415 1331.694336 1323.376709 1330.106567 1346.164917 1361.302368 1370.749878 1374.559937 1381.193604 1380.047974 1378.158813 1376.777466 1379.813721 1379.9375 1378.546997 1386.537598 1391.953613 1392.091797 1388.16394 1379.456787 1367.337524 1361.101562 1354.000488 1340.302124 1339.506958 1340.418335 1346.190063 1349.217407 1350.694702 1352.255615 1353.724609 1357.531372 1367.051025 1367.820312 1375.442749 1379.782715 1380.195923 1379.46936 1380.096558 1381.30603 1384.496704 1388.650024 1389.657227 1389.752686 1389.468384 1389.768311 1391.027954 1388.361694 1370.064575 1361.229614 1353.224121 1344.358398 1343.625366 1342.222046 1340.163086 1333.567505 1328.497803 1327.961182 1326.395142 1324.47876 1322.593018 1320.749023 1317.822998 1320.695435 1330.983154 1332.100342 1320.285034 1304.542358 1296.183838 1292.354492 1292.266357 1291.154663 1292.435913 1300.306274 1321.930542 1337.046875 1348.760254 1356.178955 1353.4021 1357.935913 1350.763672 1333.398682 1327.263184 1315.947876 1308.271606 1292.77124 1272.381226 1261.223633 1265.256714 1287.263916 1312.126709 1326.0448 1321.03064 1301.606201 1282.027344 1259.393799 1245.008545 1258.105591 1262.856445 1245.988037 1241.936157 1261.699219 1282.762939 1300.247314 1310.436401 1311.660522 1305.564453 1293.97522 1276.119263 1257.707397 1242.365112 1236.705078 1232.575562 1239.330322 1256.952515 1268.417847 1271.504272 1263.8479 1253.417847 1245.425537 1240.339111 1243.628418 1242.424438 1238.795532 1235.708984 1232.78186 1226.388794 1224.910522 1227.137695 1228.107788 1227.901855 1227.704834 1229.66272 1230.793091 1232.137085 1240.108398 1245.740356 1244.34668 1240.26416 1234.982666 1230.744141 1228.669067 1226.714722 1224.138794 1220.777832 1214.138428 1217.435791 1227.844116 1231.586426 1228.338989 1221.067139 1215.10498 1210.98291 1208.599365 1213.500732 1225.249512 1246.332275 1261.983154 1260.248535 1250.766357 1243.547363 1238.562378 1233.228394 1229.116455 1224.490845 1219.797852 1216.8573 1215.174438 1212.159058 1209.223999 1208.802246 1210.57373 1212.858276 1216.359497 1219.062378 1220.264526 1222.418579 1224.839966 1226.919067 1230.003174 1230.977295 1241.476929 1255.757812 1264.86145 1274.91687 1287.012573 1297.994995 1315.051758 1330.808472 1331.502441 1332.553345 1334.869141 1338.843384 1341.843628 1342.953979 1345.254272 1348.655396 1351.569214 1355.736206 1363.392334 1368.29541 1366.813599 1363.62793 1361.347656 1369.414307 1383.871826 1397.499146 1407.655518 1416.903564 1425.234497 1430.509399 1434.714966 1439.46875 1444.409668 1449.541992 1454.196167 1457.307129 1460.624268 1464.764526 1472.34375 1476.350464 -1663.277588 1671.746948 1684.937866 1698.704956 1710.518188 1703.140015 1688.77002 1688.203247 1690.599243 1692.422119 1692.185791 1690.565674 1689.052246 1695.805664 1699.502686 1701.967529 1704.189209 1705.9198 1706.853394 1706.491821 1704.831665 1702.959961 1701.493164 1699.501343 1699.700073 1699.621094 1699.385864 1699.16333 1698.853027 1698.345703 1695.890015 1686.02478 1669.104736 1654.590942 1643.265381 1632.300171 1620.098267 1607.928833 1598.28064 1586.540039 1579.025757 1573.179321 1576.858887 1580.532959 1581.931152 1580.053833 1576.540405 1574.312622 1563.909668 1562.851807 1558.94104 1550.525879 1544.25061 1537.785278 1529.780518 1519.664429 1508.315552 1499.389771 1495.05896 1492.057129 1505.17334 1512.222534 1515.261719 1517.426636 1519.488037 1519.827881 1517.946777 1515.171631 1507.139648 1499.961914 1506.787476 1505.55603 1500.600586 1482.198242 1476.433472 1484.489746 1491.85376 1499.556274 1510.587646 1522.227905 1536.966919 1554.574463 1566.070679 1577.182251 1584.877441 1590.695679 1595.809692 1599.187012 1601.533325 1608.356079 1621.970581 1633.409302 1628.142822 1604.986938 1579.343018 1548.230713 1529.052979 1518.008057 1512.746826 1510.560791 1506.199707 1497.476562 1488.3479 1478.051514 1464.01709 1464.905029 1460.07666 1450.019287 1434.583862 1422.75708 1412.403076 1398.711914 1389.744385 1380.88623 1385.712646 1395.862915 1408.936523 1415.529907 1412.232544 1425.539062 1441.099121 1453.527466 1477.303833 1492.844238 1510.887207 1524.031982 1542.760498 1563.538696 1575.440796 1568.125 1558.758301 1554.733643 1548.494263 1543.75354 1545.025146 1550.44397 1557.039551 1562.818848 1562.740112 1554.612183 1545.697266 1538.262939 1529.957031 1523.209351 1526.143188 1535.007446 1539.269165 1539.491943 1540.038086 1548.565186 1557.519043 1570.646362 1584.398438 1601.501709 1613.879639 1627.636719 1644.25415 1662.179688 1648.741089 1638.919678 1626.884277 1613.150757 1596.44043 1584.798218 1574.625366 1566.682495 1555.976929 1545.186523 1534.64917 1526.277588 1515.782837 1505.477661 1497.225586 1504.621582 1517.896973 1523.963989 1525.416748 1532.009277 1535.54895 1525.530518 1521.408447 1513.248779 1496.787598 1484.489502 1468.457031 1456.257446 1457.867188 1467.432739 1483.468506 1496.653076 1510.384888 1519.166504 1527.403931 1537.504517 1543.889893 1541.068115 1537.815796 1538.904419 1534.497314 1538.469238 1541.58606 1538.057739 1530.224976 1518.295898 1510.726074 1511.453003 1511.598022 1509.219727 1505.863159 1502.538818 1499.016113 1493.867188 1489.347046 1486.158691 1481.24707 1475.978638 1473.782593 1470.435669 1465.814941 1465.137573 1462.472168 1459.266235 1456.197754 1454.015869 1450.877686 1439.451294 1435.344482 1431.844849 1427.308716 1420.00293 1415.108154 1420.522217 1427.120361 1433.549683 1439.851685 1443.772461 1445.11084 1444.952393 1444.438721 1442.547363 1440.227905 1434.49939 1429.677002 1426.572754 1424.876709 1424.403687 1423.384033 1422.069214 1419.174683 1414.844727 1412.670044 1415.564453 1421.499146 1423.199463 1419.454956 1413.539429 1414.566895 1406.449707 1382.146851 1376.193481 1378.098389 1386.444092 1396.228271 1411.501221 1418.939941 1424.910767 1437.418579 1443.005737 1446.447388 1449.05249 1458.796265 1473.130493 1490.72937 1506.864502 1519.422974 1526.356201 1529.57312 1531.945923 1533.515259 1534.762573 1536.662842 1548.730347 1562.091187 1571.065308 1578.627808 1588.789795 1598.868896 1605.934204 1615.533569 1624.368286 1614.800903 1602.719482 1594.848511 1587.50061 1583.253662 1577.956543 1571.801636 1564.625122 1555.217407 1543.328857 1535.001465 1529.757202 1519.615112 1502.085205 1497.496216 1492.473511 1491.45874 1491.232422 1489.475342 1490.238647 1490.393311 1488.863525 1488.290283 1488.948486 1499.557007 1505.240845 1505.014526 1501.7146 1494.554932 1486.079102 1478.590698 1468.633789 1465.665771 1466.285767 1468.321045 1471.554932 1472.994507 1474.0979 1477.817505 1479.262817 1479.112305 1478.636719 1476.404785 1474.361084 1470.751953 1466.737671 1462.572021 1462.099731 1461.941162 1461.284912 1460.35498 1459.276367 1455.898315 1451.713745 1450.793335 1446.327148 1440.969482 1436.729736 1428.50354 1424.96228 1419.773682 1416.969727 1414.033936 1420.151611 1425.263062 1430.2677 1427.361328 1433.222046 1436.284302 1436.078857 1435.354492 1434.078979 1430.951904 1424.398926 1415.493408 1414.230957 1414.010986 1407.653687 1397.474976 1397.810913 1396.844727 1386.56958 1380.509399 1373.12915 1365.348145 1365.303101 1363.903564 1354.159912 1341.781616 1330.816162 1342.426514 1356.932861 1356.433716 1351.780396 1353.479126 1356.583252 1355.776245 1353.988892 1351.457764 1346.919922 1343.858643 1337.691528 1328.247925 1327.185303 1343.921265 1349.058716 1352.641846 1358.314453 1374.677734 1379.21228 1380.831421 1383.172729 1387.514282 1392.865234 1390.286499 1389.920044 1392.989868 1393.394287 1391.343628 1386.234741 1375.960327 1367.405762 1357.577393 1347.714355 1341.789062 1340.576172 1341.439087 1351.647095 1354.781738 1356.880859 1357.509766 1355.764038 1355.314575 1363.73938 1365.424561 1369.223755 1371.384033 1376.66333 1378.080322 1378.281006 1381.557739 1390.694336 1392.256348 1392.016113 1391.596558 1391.412109 1391.347412 1379.383423 1359.683838 1352.821899 1354.234741 1346.496094 1343.218994 1340.39917 1339.249512 1337.627686 1335.766968 1333.024292 1330.359375 1327.938354 1326.674194 1325.604614 1321.926392 1317.404419 1321.00708 1324.085938 1319.62207 1305.164062 1295.541504 1294.762207 1299.749512 1296.498291 1291.521606 1295.281128 1313.332275 1327.896851 1333.730225 1336.710571 1339.793701 1352.825806 1337.283203 1311.102539 1296.830322 1283.656738 1276.275391 1269.833496 1265.213379 1263.045654 1266.419434 1290.625122 1319.286865 1336.116089 1333.496826 1315.494263 1293.098145 1270.657104 1248.433228 1243.039307 1242.968018 1242.030029 1249.574585 1273.383545 1299.177002 1315.856445 1325.400757 1325.666992 1317.117065 1305.109863 1288.339478 1270.2229 1256.264404 1241.970947 1237.283813 1233.497925 1232.449097 1254.16748 1264.034302 1260.045654 1247.160034 1231.06543 1228.906006 1229.009033 1231.836182 1233.467163 1232.636719 1228.462158 1224.660767 1230.307861 1233.476807 1235.012695 1234.026489 1233.134521 1236.342529 1239.52478 1245.327759 1252.72229 1256.026855 1256.770996 1248.751221 1241.160767 1237.424927 1234.648438 1231.438232 1229.55603 1227.633667 1219.164551 1212.551025 1213.842651 1216.41394 1217.255615 1214.489258 1210.782227 1209.205322 1211.744263 1217.364868 1234.134888 1254.279907 1269.945923 1269.036255 1259.549805 1249.755737 1242.145142 1235.826538 1231.157227 1228.140137 1222.287109 1218.608398 1219.420166 1219.246582 1217.339966 1213.763672 1211.866699 1211.700806 1212.584229 1214.97522 1216.418823 1217.22998 1218.052612 1220.288208 1224.391968 1230.870972 1240.207764 1252.694702 1262.295776 1271.627075 1280.80127 1294.227905 1308.256104 1319.71521 1326.795776 1328.501709 1333.983032 1338.81897 1342.520386 1344.574341 1346.709961 1350.060791 1353.987549 1360.968994 1367.854248 1371.865112 1374.546509 1376.648193 1376.515869 1374.733032 1381.36792 1394.245239 1402.921631 1412.872925 1423.577881 1430.939087 1437.046387 1442.643921 1448.641357 1453.945435 1458.938354 1463.934082 1467.223999 1473.662476 1477.860107 1478.700562 -1666.857544 1676.813843 1688.988647 1703.972168 1711.096924 1699.006592 1692.927979 1692.573364 1695.381714 1698.494263 1698.844482 1697.588501 1696.165894 1697.720581 1701.212769 1703.719482 1705.764771 1707.744019 1708.404907 1708.356812 1707.080566 1705.921509 1706.29187 1705.30835 1704.416138 1703.079468 1701.65686 1700.310181 1699.236938 1697.917969 1693.305664 1681.648438 1665.703125 1651.99353 1640.138794 1630.257935 1620.497192 1609.585205 1599.922729 1589.093506 1579.218506 1573.205933 1565.675415 1563.964478 1567.404785 1566.0448 1561.90625 1559.391357 1554.528687 1550.260742 1547.481689 1542.285889 1537.703857 1529.579346 1521.325195 1507.786133 1497.780273 1498.644775 1507.245483 1513.722656 1522.65686 1526.487183 1531.364136 1534.680298 1537.494873 1537.601074 1526.256348 1514.527588 1510.861572 1518.827759 1521.476562 1516.586182 1509.765869 1500.628906 1482.161499 1482.183472 1490.264893 1495.41626 1501.999512 1510.998047 1520.611816 1530.148438 1544.661621 1555.080811 1566.411377 1571.170166 1574.313965 1579.401489 1593.36438 1611.024536 1626.846558 1633.319946 1621.302002 1594.726685 1570.613159 1555.978394 1542.145508 1537.852539 1535.644287 1528.042236 1522.150757 1513.501343 1496.678223 1482.272217 1478.622925 1478.125977 1467.558716 1452.145996 1434.852783 1422.686523 1411.857544 1399.133423 1388.832153 1380.359741 1388.768433 1398.357788 1417.144287 1418.320801 1413.987915 1427.85791 1442.235596 1458.414185 1484.545776 1501.950684 1517.17981 1531.61792 1553.210449 1571.479736 1584.393311 1581.200928 1574.1073 1566.113281 1556.432007 1547.00061 1549.534302 1552.214111 1557.09375 1561.019775 1563.360596 1558.7323 1546.254517 1535.855225 1531.383423 1523.821045 1530.445068 1539.738892 1545.098267 1546.313354 1545.125244 1548.383545 1557.350098 1569.938843 1583.962769 1597.640381 1608.18396 1619.125977 1636.159424 1648.460571 1644.929565 1638.197998 1627.619385 1614.936035 1601.452637 1591.361694 1583.010132 1575.689331 1564.172974 1551.265015 1538.427368 1531.053955 1523.98291 1507.994385 1500.702393 1521.934692 1537.485107 1541.579102 1542.70813 1544.185303 1542.049316 1532.19043 1520.119507 1507.85144 1493.368164 1482.719238 1468.244751 1456.00708 1463.844727 1473.213989 1480.132935 1487.576904 1497.917114 1502.014404 1512.865234 1532.196411 1542.638428 1542.96228 1546.636475 1550.869019 1552.140137 1551.564575 1552.314209 1546.57312 1535.934448 1524.045898 1520.661255 1519.010864 1516.768066 1512.675537 1508.740845 1504.719604 1500.634521 1497.042969 1493.863037 1489.689941 1485.265625 1480.238159 1476.366333 1471.103149 1464.17688 1462.296509 1460.495361 1456.470581 1452.939941 1451.449951 1444.880127 1437.470947 1432.483398 1428.314087 1424.213745 1419.608154 1417.444946 1422.839111 1429.588745 1437.162231 1443.984131 1449.074829 1450.406738 1450.23291 1448.420166 1447.06604 1444.499146 1441.054199 1436.022339 1433.027222 1431.272705 1430.364014 1429.628052 1427.997314 1424.5625 1417.964111 1417.432373 1423.265015 1427.522095 1427.782593 1424.480957 1419.12207 1418.074829 1408.059204 1389.292603 1376.512451 1377.064697 1382.31604 1390.017822 1401.380859 1410.099243 1419.327393 1425.561646 1429.063354 1431.798706 1439.753418 1451.517822 1468.043091 1484.46814 1497.104858 1509.576538 1513.296387 1515.360474 1517.805786 1520.941895 1524.561401 1531.540771 1542.69165 1554.467163 1561.861816 1569.40332 1577.611572 1588.180908 1598.517212 1612.777222 1620.472046 1610.421875 1601.446411 1591.831543 1583.00415 1575.484375 1572.568481 1566.438721 1557.02356 1546.033569 1537.92041 1531.536499 1526.807617 1521.499634 1513.083252 1506.753174 1503.791626 1503.149902 1504.996094 1505.065918 1506.221924 1504.955566 1503.749512 1505.185669 1507.34082 1512.803589 1513.456787 1505.7229 1495.762085 1485.795288 1478.255127 1470.194702 1469.207642 1471.00769 1472.552612 1474.766968 1479.495239 1480.30188 1481.398926 1484.967651 1485.495239 1487.322632 1488.741577 1488.790527 1482.446289 1475.908081 1473.266968 1472.30481 1469.970459 1468.017212 1465.668945 1463.424194 1462.057129 1456.716309 1451.220093 1449.264648 1441.725342 1438.150757 1436.069824 1433.604736 1430.419067 1426.95813 1424.917358 1423.026367 1423.349121 1431.079712 1440.887817 1441.887207 1440.519043 1440.486084 1440.34314 1440.609375 1439.140259 1432.333984 1423.686523 1410.707886 1402.53833 1404.041016 1400.724609 1391.671387 1386.374756 1386.020264 1379.880859 1368.879517 1362.486084 1353.324951 1352.318359 1351.468506 1345.480469 1337.839355 1331.694702 1343.978271 1362.62146 1362.32666 1354.639648 1356.203369 1359.912109 1360.384399 1359.733276 1358.428955 1355.805664 1350.845459 1344.42041 1332.031616 1325.821655 1333.320557 1342.800781 1344.580688 1349.286865 1362.328979 1370.474243 1380.572266 1383.585938 1387.337646 1392.216919 1391.8302 1386.0177 1389.562744 1393.594238 1393.336914 1392.253784 1383.233643 1370.731079 1357.850098 1349.334473 1343.018921 1344.161865 1351.512451 1357.85083 1363.557129 1367.657715 1370.241089 1371.838989 1370.627686 1368.30896 1366.779175 1365.153687 1368.66687 1375.123047 1378.594604 1380.671509 1385.515259 1390.640991 1393.599487 1394.751587 1394.009888 1392.79834 1384.228882 1367.005859 1370.495972 1372.072998 1368.244507 1359.816895 1351.686035 1346.144897 1347.114502 1347.242676 1345.528198 1341.44751 1335.629272 1331.874146 1331.37915 1330.706543 1328.755005 1323.468018 1316.946411 1317.638428 1307.060669 1301.718506 1295.391357 1301.994629 1308.288452 1302.574219 1296.472778 1288.907837 1301.323608 1314.161377 1318.420044 1321.140381 1338.12793 1327.141968 1308.306641 1289.252075 1282.455688 1274.210327 1267.306519 1267.277588 1265.303101 1268.295044 1277.549194 1301.950684 1327.786987 1345.526367 1343.912231 1326.066895 1301.335571 1281.558594 1263.987549 1246.6073 1243.197754 1255.001465 1263.205444 1283.014771 1313.503296 1327.555298 1338.949097 1341.666504 1329.996216 1315.844482 1306.29126 1285.978394 1262.632935 1248.616943 1243.001221 1237.83313 1232.362183 1231.647583 1243.218018 1240.381836 1228.704956 1229.619263 1231.697754 1231.293823 1228.061523 1226.534058 1226.760986 1225.706665 1229.961914 1239.521118 1243.568604 1243.024658 1240.918823 1242.134766 1243.562256 1248.351562 1255.829346 1262.997681 1268.873047 1269.530273 1261.334229 1250.192871 1246.678467 1243.234741 1239.615967 1238.179565 1236.708374 1231.233154 1217.890869 1213.821411 1212.479614 1211.467896 1211.134277 1211.462891 1213.266113 1217.796875 1226.295776 1240.112549 1260.498535 1273.426392 1274.081421 1265.920166 1256.998657 1246.562622 1240.862183 1236.674072 1233.076416 1228.171021 1226.634766 1233.779053 1234.900757 1228.544678 1222.006714 1220.550781 1220.016968 1216.382202 1214.059692 1214.66748 1216.370117 1218.446167 1218.571289 1220.124756 1229.009888 1236.948486 1244.524902 1256.697266 1270.24292 1278.964966 1289.831665 1298.175781 1307.543823 1317.923584 1330.569336 1334.5354 1340.617188 1343.178955 1345.086914 1347.224243 1350.3927 1354.240967 1362.000732 1368.925171 1373.820923 1378.567139 1383.308105 1387.187256 1386.09668 1385.432983 1388.872314 1399.59729 1405.32605 1416.706055 1428.031738 1436.772461 1442.781372 1449.208374 1454.466553 1460.338013 1465.421509 1468.376465 1473.306519 1477.026245 1478.461426 -1668.978516 1681.087891 1694.594482 1709.417603 1708.882202 1698.469727 1693.431641 1695.084351 1699.7677 1706.343018 1706.579712 1704.721802 1703.293823 1702.510498 1703.321289 1705.110596 1707.497559 1708.946655 1709.476318 1709.39624 1708.72583 1708.373535 1708.193481 1708.317139 1707.303223 1705.463013 1702.955078 1700.574829 1698.962891 1697.19458 1685.986328 1673.019043 1661.779297 1646.981689 1635.273804 1624.260376 1615.606201 1606.345703 1598.616211 1587.906982 1574.109131 1568.683838 1564.12915 1557.543945 1554.328857 1550.87439 1550.881714 1550.521973 1547.006226 1539.31543 1536.346069 1532.079834 1526.164673 1517.714844 1507.892212 1501.082153 1509.954102 1518.908691 1528.161743 1536.237183 1539.349487 1543.227661 1548.891357 1550.957275 1548.081055 1543.565186 1531.567627 1511.380737 1524.68396 1532.964355 1534.952271 1530.220093 1519.170898 1505.530151 1494.195557 1481.198975 1486.412842 1491.023315 1495.20752 1501.136353 1508.224976 1514.28186 1520.504028 1530.654785 1539.881714 1552.740601 1561.600098 1574.020264 1594.146484 1617.050781 1633.195435 1640.589355 1624.538208 1607.443848 1589.139526 1572.255371 1555.536377 1551.460815 1549.714478 1543.379883 1533.38916 1521.436768 1505.600952 1496.527344 1488.922729 1480.645508 1467.645996 1450.749146 1433.281616 1421.786133 1411.577026 1400.557495 1387.514893 1381.734741 1390.687134 1402.712524 1417.893066 1420.703613 1420.694458 1424.414307 1438.731323 1460.439575 1487.468262 1504.790649 1518.437622 1533.852295 1556.608032 1574.437256 1593.455933 1592.138916 1583.566528 1576.662231 1563.355957 1554.93396 1554.412842 1557.264526 1558.759399 1562.856812 1566.011108 1558.809937 1547.330933 1540.413452 1537.762573 1529.224243 1534.491211 1546.460693 1552.215454 1556.719604 1553.171387 1547.036377 1556.147339 1567.343018 1579.126587 1591.519409 1601.250854 1608.109009 1624.412354 1632.517944 1634.312744 1633.951172 1630.443359 1621.880737 1612.52063 1599.0979 1588.622925 1577.340942 1566.935913 1553.819458 1543.325073 1535.983765 1526.826538 1513.767944 1518.766113 1538.131958 1546.845215 1551.487793 1554.405151 1552.005249 1543.376831 1525.328613 1511.775879 1499.703247 1487.240845 1479.770264 1462.965576 1457.852295 1463.532104 1477.94812 1484.939209 1490.776367 1495.151489 1500.688965 1517.046753 1528.444336 1531.962036 1532.307983 1533.287109 1541.815308 1549.795654 1550.888794 1551.94873 1545.94397 1536.212402 1533.500488 1535.267212 1529.732056 1523.186646 1516.721191 1511.017944 1508.821655 1505.234375 1502.019897 1499.221558 1494.610229 1488.522949 1483.180054 1478.60498 1473.489624 1467.931885 1464.722168 1461.381958 1455.610474 1450.092773 1444.040649 1438.121704 1434.208618 1429.527344 1425.914307 1424.656128 1424.252075 1420.502319 1423.807983 1430.904541 1439.512939 1448.592163 1454.32666 1456.55249 1456.140503 1452.839844 1451.240845 1449.467407 1446.177368 1441.36792 1440.9646 1438.471558 1437.281006 1438.141724 1436.622192 1432.33252 1428.185181 1428.79834 1432.286499 1433.197876 1431.847046 1428.811646 1423.671875 1416.835083 1405.846924 1390.154175 1383.910767 1377.435425 1381.401123 1390.454346 1399.66748 1404.547607 1413.348755 1415.875 1424.654419 1424.181519 1432.830078 1443.474609 1458.027466 1474.203125 1483.036987 1490.483398 1499.845215 1502.602539 1504.13147 1506.84668 1512.672607 1521.542603 1532.333252 1544.107666 1552.459717 1557.233398 1568.075928 1583.109253 1599.430664 1611.796875 1613.050293 1608.25293 1601.658081 1592.835938 1583.152954 1572.952393 1558.095215 1547.317749 1543.494141 1539.412598 1535.794312 1535.036133 1533.246704 1528.422363 1520.312134 1513.966675 1517.03186 1518.798706 1519.330688 1518.774414 1519.168945 1519.072266 1519.067993 1518.453613 1517.722778 1516.269653 1512.585693 1503.269165 1491.62146 1479.317993 1472.235962 1471.378906 1474.477051 1477.922119 1480.001831 1484.377441 1490.255127 1490.793701 1492.17688 1495.195435 1496.620239 1496.904663 1496.543579 1494.166992 1487.841675 1482.271973 1481.430054 1481.941406 1479.812378 1477.270142 1474.571777 1470.609009 1466.783081 1463.082397 1458.108154 1453.973145 1449.323975 1443.606567 1441.03894 1438.67688 1434.805542 1432.277222 1430.682007 1429.658813 1426.956787 1434.960327 1439.645386 1433.846191 1433.149658 1435.280151 1438.049683 1437.233276 1431.89502 1425.060913 1417.420898 1407.500977 1398.671143 1389.560059 1391.948486 1385.077026 1375.16394 1373.747192 1368.3302 1359.900269 1350.491211 1343.180298 1339.741089 1337.140625 1334.647827 1333.61853 1341.283936 1361.156616 1368.425293 1368.380371 1365.613647 1361.890259 1363.842163 1365.139282 1365.09729 1363.208496 1360.507202 1357.021851 1351.508301 1340.451538 1328.439819 1326.851196 1327.310181 1330.447876 1343.362183 1348.573486 1356.968384 1371.203857 1378.000977 1378.164795 1381.984619 1382.850586 1376.585327 1380.68811 1391.140137 1391.705688 1388.030396 1381.524902 1367.630371 1356.177856 1350.401611 1349.050171 1349.076416 1353.67395 1359.959473 1366.763672 1373.778442 1379.132202 1380.859619 1381.086304 1377.952515 1373.183472 1372.372681 1375.840454 1379.370239 1386.466797 1390.648071 1391.643311 1390.89209 1396.006958 1398.589722 1395.404419 1385.713623 1376.477051 1381.633545 1385.37439 1380.705078 1373.278198 1363.667114 1352.715088 1356.200928 1358.772461 1357.346436 1352.645508 1343.772827 1338.75647 1336.965942 1336.061157 1334.809937 1333.22522 1330.577393 1322.900879 1314.851685 1312.734741 1303.650879 1294.562866 1303.865845 1317.458374 1305.665283 1298.319458 1289.861572 1291.465088 1297.867676 1299.583374 1301.428223 1303.491455 1290.539307 1281.40564 1281.091797 1278.294067 1275.995728 1274.882202 1275.303589 1277.296143 1285.76416 1298.753052 1313.401123 1333.232178 1353.122559 1352.763916 1332.836792 1309.624023 1294.279175 1278.030762 1257.16687 1261.560913 1274.594238 1282.808472 1293.24939 1321.651611 1340.763794 1348.4375 1352.463867 1344.500732 1330.978882 1312.442749 1292.574463 1270.35791 1267.866333 1258.850098 1243.041138 1235.621948 1230.942505 1229.957397 1229.824829 1231.683838 1235.874512 1238.06311 1237.214233 1232.56311 1230.220581 1231.188721 1232.488647 1237.787598 1248.224854 1250.491455 1249.76062 1249.113892 1250.686768 1252.460693 1256.07605 1264.418701 1273.163574 1281.245972 1281.774048 1272.674438 1260.550293 1254.321411 1249.326538 1247.668457 1246.41687 1244.286499 1238.479126 1230.89856 1217.956543 1215.468506 1215.267456 1215.195557 1215.799438 1218.080933 1227.380859 1238.633179 1249.691406 1264.040771 1282.006348 1282.892212 1273.718384 1263.914307 1255.222046 1246.963379 1243.337646 1239.71936 1234.463501 1232.084961 1246.192749 1247.266113 1238.633911 1230.676147 1228.395386 1227.158081 1227.065796 1225.367188 1222.779785 1223.779785 1225.703735 1223.393921 1219.333984 1224.054688 1233.529297 1245.799072 1255.164673 1264.238281 1270.66748 1279.397339 1291.172852 1303.679688 1318.12854 1330.396362 1333.456909 1341.166138 1343.626343 1344.812012 1345.937134 1348.139771 1351.400024 1357.762939 1366.310303 1372.243286 1379.753174 1388.444336 1394.789673 1403.377441 1399.345215 1402.210327 1406.381592 1412.44104 1420.371216 1428.411987 1434.567505 1438.604126 1444.7052 1450.314575 1455.984009 1461.305908 1464.710571 1468.038086 1472.327026 1475.7323 -1671.925781 1687.01709 1700.716553 1710.449463 1707.599121 1697.182861 1693.414185 1696.562622 1703.294312 1708.461182 1709.014526 1708.515503 1707.432739 1705.754883 1704.888184 1705.735229 1708.376221 1709.755005 1710.317627 1710.501709 1710.264771 1709.759644 1709.439941 1708.974976 1708.176147 1705.700439 1702.751099 1699.760132 1696.951782 1689.948364 1676.797974 1664.942993 1652.830322 1642.465454 1630.730469 1618.849731 1609.23877 1600.977417 1593.30481 1585.189941 1584.178101 1582.148438 1577.747559 1569.020996 1562.385986 1550.246582 1545.584961 1537.98645 1532.527954 1531.349731 1524.533325 1521.999878 1519.513672 1511.849365 1507.541626 1517.097168 1527.503662 1541.08374 1550.957397 1554.300903 1554.657959 1560.058716 1565.644531 1562.924072 1555.19397 1544.082153 1523.046143 1523.184448 1535.193848 1545.974121 1545.175903 1536.654907 1523.900513 1507.591553 1497.79541 1492.417114 1490.762939 1485.608765 1488.041504 1491.670532 1498.673462 1505.235718 1510.892334 1517.366089 1524.838989 1538.330444 1561.174683 1577.022095 1593.723877 1612.816772 1634.574585 1647.097168 1644.529419 1629.594604 1607.21875 1581.208984 1566.908569 1562.782959 1557.281494 1550.999023 1540.595581 1527.194092 1522.477539 1517.734253 1500.348511 1480.30896 1465.385986 1445.771729 1431.14563 1422.469971 1413.756348 1403.364136 1387.502563 1383.038208 1391.211914 1404.529297 1419.72583 1424.313477 1423.474243 1427.466309 1442.703979 1456.026489 1480.651733 1500.329956 1512.797485 1532.137695 1551.811646 1574.98291 1597.325317 1601.61145 1594.441895 1584.502563 1575.432007 1567.402222 1560.127686 1563.149414 1563.272217 1571.105469 1571.761475 1560.501709 1554.645264 1550.612915 1544.441772 1537.493774 1538.318726 1551.663818 1558.441528 1567.644043 1567.785889 1546.874268 1558.166016 1567.131226 1575.236816 1584.467896 1594.475464 1602.97644 1612.612427 1620.722168 1625.519775 1630.744873 1635.304443 1628.38501 1617.37854 1607.538696 1592.654907 1578.172363 1566.96106 1555.328369 1545.731445 1539.175781 1527.343506 1520.370605 1530.617798 1548.427612 1555.818481 1562.732788 1564.694824 1559.193604 1546.557861 1529.713013 1514.103516 1499.583374 1490.500977 1478.676636 1471.44458 1461.294434 1459.593994 1469.616821 1487.501221 1492.275513 1498.47876 1507.840454 1520.444824 1523.814819 1517.383057 1517.068359 1519.213135 1527.971069 1533.763184 1542.630981 1552.168457 1552.491089 1551.943604 1547.210693 1549.347534 1544.923828 1533.410767 1522.924561 1518.110718 1516.059692 1513.195312 1508.833252 1504.684082 1499.900879 1492.397339 1485.846191 1481.380371 1474.947876 1470.494507 1466.785645 1463.415894 1455.812622 1451.969604 1442.802856 1437.225708 1433.048584 1428.359131 1425.362915 1428.667969 1430.405151 1427.918457 1423.786011 1431.739502 1439.050781 1448.384521 1455.407471 1463.642822 1464.270996 1460.07959 1458.009888 1455.35144 1451.379517 1451.1427 1449.112427 1446.327515 1446.380981 1447.467773 1447.065186 1443.57251 1438.888794 1438.704468 1441.071289 1439.603882 1436.247314 1430.814575 1423.77771 1414.169434 1409.103394 1404.214355 1390.445557 1381.521362 1380.976318 1389.812256 1403.154663 1411.82251 1423.01709 1434.658081 1444.702881 1445.555908 1440.397095 1437.020264 1449.292847 1462.343994 1471.596313 1476.694702 1479.917114 1486.424194 1491.153198 1495.725464 1501.081665 1508.43396 1519.726807 1532.298828 1541.696167 1552.667236 1570.58728 1584.19751 1599.944092 1606.998047 1608.058105 1604.517578 1599.795532 1587.857056 1578.882446 1563.87439 1559.373169 1559.724731 1557.682739 1553.363037 1545.431152 1544.574341 1542.474976 1535.28833 1524.081299 1526.669189 1529.453613 1529.797607 1532.895264 1534.091187 1535.705811 1535.506226 1530.952148 1524.13562 1519.434204 1513.458984 1505.231689 1496.734619 1487.970581 1476.005249 1473.214478 1477.037842 1481.679199 1486.402588 1489.46875 1495.509644 1500.38208 1500.832642 1503.137207 1508.28125 1510.234497 1508.50415 1504.747559 1499.02063 1491.473022 1491.249023 1492.407593 1491.513184 1490.003052 1487.806274 1480.954712 1477.934692 1472.18689 1466.837891 1465.246216 1460.703491 1454.98877 1450.866333 1446.806396 1443.074341 1439.095703 1436.269531 1435.171143 1435.978149 1435.412842 1435.289062 1431.414185 1424.440674 1422.650879 1426.424438 1427.584961 1427.429932 1421.931274 1411.549927 1405.661499 1399.402588 1391.6521 1382.37561 1377.512085 1373.370972 1362.709351 1355.338379 1350.913574 1345.467773 1340.111206 1336.992065 1343.268433 1349.703369 1350.7677 1352.640137 1361.489746 1370.388062 1372.857666 1372.183228 1367.866699 1364.995605 1368.279053 1369.587402 1369.349854 1367.986938 1365.703003 1362.593262 1358.126221 1350.277832 1341.604126 1339.310181 1343.784912 1339.57312 1338.807129 1341.586304 1348.799561 1360.928955 1367.415405 1368.370972 1370.325073 1371.959595 1368.660645 1376.377808 1385.529541 1390.704712 1385.303589 1377.348389 1363.602539 1354.102905 1353.557617 1354.22937 1351.537598 1354.90564 1360.659302 1365.130249 1375.231567 1380.958496 1385.984741 1390.1427 1386.77063 1377.853394 1377.185303 1383.021729 1386.951904 1392.278442 1396.154907 1399.352173 1400.769287 1400.530273 1402.935059 1400.817871 1388.219116 1384.73938 1393.60791 1394.134521 1387.639404 1376.585693 1365.903442 1365.49707 1371.064331 1370.049194 1366.270752 1356.10791 1343.860352 1341.325562 1341.586426 1340.266846 1338.78125 1336.865112 1334.619263 1331.237915 1318.00293 1318.686401 1302.62146 1294.531006 1304.185913 1331.190063 1311.07019 1301.320435 1293.506104 1287.345093 1289.914307 1290.451904 1289.890259 1287.096069 1285.469238 1293.037964 1294.315796 1291.651001 1287.086182 1284.553833 1285.381104 1289.822266 1298.290161 1310.52417 1321.373901 1337.194336 1355.810791 1356.527222 1339.680542 1318.932373 1304.085205 1287.671387 1269.275879 1285.269775 1299.365723 1307.209595 1311.943237 1321.844482 1344.891846 1353.664917 1356.722046 1350.426392 1335.300171 1312.208008 1290.964966 1283.071899 1285.569214 1273.582886 1253.466431 1243.875 1236.266113 1231.111328 1233.099609 1241.267944 1245.197754 1245.907715 1244.245728 1239.564331 1240.65271 1248.800781 1252.034546 1254.637695 1258.464966 1258.30249 1256.394165 1259.09436 1260.626221 1262.610107 1267.185181 1277.754761 1290.127319 1295.397827 1293.385132 1277.919067 1266.728271 1259.243042 1254.460083 1251.125122 1248.564819 1246.145142 1241.498657 1234.956055 1222.777466 1218.379639 1218.438477 1220.336548 1221.435791 1225.124756 1238.316895 1250.925781 1262.141113 1277.705078 1292.132324 1289.202026 1280.925659 1270.515137 1261.766479 1254.902222 1251.165649 1247.418335 1242.955688 1241.473267 1256.324341 1261.889526 1249.807129 1240.8479 1238.39209 1235.043213 1237.242065 1237.313354 1233.297363 1233.963623 1232.876099 1228.161743 1221.748901 1224.299194 1231.852783 1240.80896 1247.851074 1254.369263 1263.484863 1276.010254 1287.390503 1299.600342 1308.964355 1317.109741 1326.533325 1334.337402 1342.095337 1343.180054 1342.785889 1342.002197 1347.021973 1351.872192 1360.577393 1369.87793 1377.665649 1386.508545 1393.88208 1402.601074 1401.309692 1403.387695 1407.379883 1415.22937 1422.739868 1428.893066 1430.192261 1431.719971 1434.683594 1438.84729 1445.286621 1452.718994 1457.54187 1461.03418 1464.191162 1467.391235 -1676.47522 1690.682373 1703.442383 1710.510132 1705.110229 1695.391602 1693.182129 1696.187744 1702.851074 1708.003296 1709.223022 1709.270264 1708.480103 1707.268188 1706.059082 1706.461426 1708.848877 1710.54248 1711.393677 1711.711548 1711.482422 1711.044678 1710.345459 1709.427979 1708.056396 1705.382202 1700.970093 1697.06543 1691.732422 1680.602539 1668.948975 1660.561646 1654.75769 1646.240967 1637.487671 1624.714478 1613.016968 1601.339966 1595.171997 1600.671387 1601.544312 1600.096436 1596.374023 1587.077759 1574.094849 1564.76123 1555.082764 1548.612305 1547.083984 1539.211182 1534.512207 1529.042969 1519.783081 1511.130005 1518.686401 1529.615112 1537.359741 1553.045288 1566.381958 1572.147095 1573.407715 1577.162842 1577.739868 1573.567993 1558.060059 1538.047485 1526.132324 1537.721924 1550.175903 1556.24939 1553.179199 1535.928223 1521.482056 1504.990112 1497.855713 1499.039795 1499.817749 1496.010376 1492.520508 1487.784058 1494.553223 1501.488525 1506.775513 1511.173218 1519.394165 1535.53186 1556.507568 1573.768677 1589.071411 1607.015869 1622.380981 1636.083252 1647.640869 1638.913818 1615.790039 1594.896729 1585.451172 1575.931519 1565.513184 1557.991821 1548.186768 1538.098022 1531.402222 1520.488403 1498.317383 1482.790894 1470.106079 1452.268799 1435.635254 1426.266602 1418.473755 1407.440186 1392.73584 1385.611938 1390.358154 1402.942261 1422.485718 1429.156982 1427.109253 1428.968262 1448.28064 1460.299072 1482.129761 1498.327393 1512.786011 1525.638062 1541.897339 1567.475464 1587.696777 1604.273071 1601.303833 1592.407593 1583.956543 1579.857666 1570.295532 1570.502441 1573.928589 1578.637695 1576.631836 1568.649048 1560.615234 1554.979004 1550.02478 1541.684937 1545.737061 1554.46582 1562.219849 1575.167358 1578.283081 1555.389282 1560.8573 1572.943726 1577.960327 1582.751099 1590.441895 1599.296753 1608.779053 1616.062134 1621.131714 1632.552246 1637.265625 1631.86377 1619.293579 1609.53125 1594.466064 1579.84729 1567.192627 1556.717529 1548.338013 1540.486206 1525.371582 1525.155396 1540.724854 1553.666626 1561.6073 1570.5 1573.564087 1564.352051 1549.469604 1535.324463 1515.991455 1500.452393 1499.254517 1493.437744 1487.211182 1468.330688 1459.990967 1466.771118 1486.949219 1491.357666 1498.331543 1505.452026 1509.664429 1503.077759 1501.038574 1501.749268 1504.498291 1510.259521 1517.634155 1532.348511 1548.043335 1554.131714 1556.689087 1556.510864 1556.28833 1553.971924 1546.306152 1532.946533 1529.435913 1527.693115 1522.996582 1515.108398 1508.983765 1504.244629 1497.440186 1491.461548 1486.591919 1477.728149 1472.233521 1466.217407 1462.369751 1455.127563 1450.377686 1443.422852 1438.550659 1434.027832 1427.435059 1433.216187 1441.967041 1435.369629 1427.579712 1427.053345 1433.558594 1437.864502 1446.994751 1454.699707 1465.369873 1470.931641 1468.667236 1466.631592 1462.289062 1459.472412 1459.173462 1457.164795 1454.682007 1456.866211 1457.59082 1456.415039 1453.925659 1449.595703 1448.240601 1448.159546 1445.299805 1440.400513 1433.52478 1426.121826 1420.224609 1417.543457 1413.594482 1400.455933 1386.303955 1380.419067 1387.166382 1400.41626 1413.862061 1427.409546 1440.02063 1453.056641 1457.387085 1462.203125 1460.403931 1454.484253 1448.963867 1459.775391 1462.791138 1470.612427 1475.644653 1489.224976 1501.245605 1515.539673 1525.800903 1533.814453 1538.125 1544.335205 1551.748169 1569.778687 1584.394531 1598.565796 1604.625244 1605.508301 1601.085693 1592.211182 1582.237549 1574.654419 1571.134644 1573.135742 1574.07019 1573.119995 1568.579346 1559.171143 1556.336792 1552.128906 1541.777832 1534.29187 1538.108521 1538.761719 1538.163818 1540.358276 1540.595703 1541.262573 1540.989624 1535.720581 1523.978271 1518.956543 1513.32373 1501.730713 1491.471436 1481.46521 1474.538452 1477.877197 1484.356201 1489.758911 1495.724609 1501.019165 1507.931274 1514.809326 1514.598877 1515.681763 1522.464844 1526.627686 1521.970215 1512.378906 1504.047363 1501.36853 1503.624268 1503.242554 1499.677979 1492.33313 1486.189087 1479.922607 1473.15564 1465.157837 1462.661621 1461.957764 1459.168823 1454.369141 1453.299561 1452.910522 1447.072266 1442.268433 1439.444824 1439.28186 1440.482788 1441.009277 1438.445923 1431.452881 1422.855103 1412.864868 1412.575195 1415.213257 1413.551636 1408.566528 1405.801514 1397.362061 1388.496948 1382.365967 1373.527588 1363.382324 1359.94751 1354.267334 1341.613281 1339.423828 1340.877686 1350.446411 1364.906494 1369.63623 1372.104858 1373.224243 1374.130127 1375.803223 1378.212646 1378.112427 1377.236816 1372.929565 1369.68811 1372.601318 1374.144531 1373.994507 1372.575195 1370.499023 1367.91272 1363.640137 1356.517578 1349.564697 1351.391235 1354.704102 1351.904663 1345.915405 1341.376343 1340.908569 1353.209351 1356.634644 1358.457397 1360.398804 1362.80188 1362.55188 1368.317139 1376.412598 1379.599731 1382.488892 1380.601807 1368.941284 1362.157837 1360.072144 1357.686401 1353.534668 1358.067871 1364.036011 1369.06311 1375.170166 1378.71521 1387.162109 1392.932739 1393.619751 1384.094971 1381.278809 1389.717529 1394.396118 1397.71167 1401.173218 1404.987915 1405.800415 1405.10437 1406.693115 1406.154907 1390.649536 1392.052612 1402.609131 1403.281494 1395.768555 1381.250977 1373.474609 1383.101685 1384.091431 1377.525146 1370.444092 1356.053345 1351.70874 1350.669434 1349.549805 1347.859253 1343.641479 1340.354736 1339.22644 1336.020386 1325.021729 1310.562378 1301.373413 1295.431152 1304.636841 1332.786499 1329.845947 1312.993652 1302.260254 1290.090698 1286.815918 1286.19458 1284.953979 1286.079834 1291.568848 1299.226685 1300.233398 1298.089233 1294.125122 1293.69397 1295.90271 1303.85144 1312.560547 1322.766357 1333.634888 1346.227661 1361.162231 1363.378662 1349.945801 1334.199707 1311.509155 1293.72876 1285.133667 1304.103882 1318.936401 1326.217407 1329.791992 1331.096924 1342.606323 1356.924805 1358.499146 1349.12854 1328.423584 1305.51123 1304.919434 1307.03418 1297.968628 1283.437134 1270.058472 1256.160767 1243.103027 1240.361206 1242.468994 1249.929932 1254.504395 1255.34314 1252.575928 1248.224243 1259.990967 1268.592285 1277.395386 1276.949707 1272.026001 1266.544922 1268.188721 1272.08606 1275.508911 1278.786255 1287.098145 1299.481201 1306.775146 1300.192749 1290.142456 1276.785034 1266.980469 1260.559448 1255.4646 1252.187378 1249.021851 1246.175415 1241.379028 1234.822998 1226.081299 1225.304199 1234.169556 1237.026245 1235.551636 1233.263184 1249.574707 1261.571289 1271.179077 1287.521606 1301.162476 1294.704468 1286.696777 1278.716431 1268.355713 1263.974854 1259.897095 1254.721802 1249.505127 1247.304443 1263.182617 1269.699707 1257.67041 1253.150391 1248.667725 1242.619263 1245.105469 1246.978882 1245.73999 1241.625244 1238.344727 1233.774536 1224.920654 1223.647095 1229.01001 1236.46167 1242.83606 1251.196411 1259.023926 1271.096924 1281.22583 1290.731812 1298.148438 1303.899902 1311.458374 1321.554199 1329.890625 1335.435547 1337.092773 1339.207886 1343.45813 1348.343994 1355.173706 1366.411987 1372.937744 1379.301636 1385.473633 1387.933838 1387.148315 1391.131714 1403.551392 1412.286011 1415.547607 1415.766724 1419.695923 1421.038696 1421.144165 1425.02832 1435.06189 1443.817627 1449.108398 1452.880127 1456.031494 1460.288818 -1678.814819 1692.867065 1705.475464 1709.641113 1701.965088 1693.336792 1691.772583 1695.135132 1701.370605 1706.854126 1709.316284 1709.692505 1709.546753 1707.685059 1707.042236 1707.068481 1709.651245 1711.575073 1712.659668 1713.013184 1712.805908 1712.093384 1711.040649 1709.669312 1707.421021 1704.47583 1699.540894 1693.895386 1686.834106 1679.30249 1671.209106 1666.957031 1662.04187 1653.271973 1641.368896 1627.11084 1615.745483 1613.839233 1620.328003 1621.956177 1617.482056 1610.699097 1606.45874 1598.985596 1586.559692 1571.848145 1567.818848 1564.015991 1561.800171 1554.399292 1544.15686 1531.321533 1517.2854 1523.395142 1533.955933 1546.285767 1551.801758 1561.231812 1578.046143 1586.927002 1588.594971 1587.566895 1582.112427 1572.363281 1553.404419 1531.940552 1545.355225 1555.023804 1562.449829 1562.634644 1546.023315 1530.431519 1510.590332 1505.17688 1509.351318 1513.005493 1511.840454 1506.869141 1502.914185 1496.815674 1492.5354 1499.621582 1504.69458 1510.167603 1517.231934 1529.550293 1547.912842 1567.848389 1581.507812 1594.516602 1605.855225 1612.006714 1621.961426 1639.692993 1625.1521 1617.380737 1608.444458 1596.444824 1581.812622 1567.973755 1555.735474 1542.906738 1529.900391 1516.52124 1498.238525 1483.564941 1472.128052 1454.834351 1437.912109 1427.202271 1420.245483 1411.829834 1399.41272 1393.201416 1386.079102 1399.012695 1420.831543 1430.689453 1436.553345 1439.989746 1452.162354 1468.878662 1492.413086 1509.808472 1526.904419 1540.64917 1557.130493 1570.402222 1582.2146 1597.554199 1607.639038 1600.254272 1594.019409 1590.38208 1579.367554 1579.167236 1585.770996 1587.111328 1582.693115 1575.324341 1563.446411 1558.49646 1553.156616 1546.15564 1548.406982 1556.706299 1566.811401 1580.527344 1584.506836 1569.768921 1559.495483 1573.529053 1579.078247 1585.218018 1594.764404 1602.136719 1609.12146 1616.205322 1624.139648 1635.858032 1637.165894 1629.098389 1617.952515 1608.848267 1595.906738 1583.357544 1570.459717 1559.02478 1549.487671 1539.379761 1532.220337 1542.870361 1551.111938 1563.128784 1568.362671 1576.568359 1578.722534 1566.013306 1550.05835 1535.788086 1523.25708 1515.176147 1509.543213 1500.656494 1491.902344 1478.558228 1460.613281 1462.501343 1477.02417 1481.989014 1487.196045 1489.258667 1489.592407 1489.77771 1487.346558 1486.692993 1491.757935 1497.073364 1505.177856 1519.307739 1533.828857 1548.890137 1556.88623 1563.390381 1564.121948 1559.030884 1550.893799 1545.08728 1544.034058 1538.633789 1531.953003 1524.447144 1515.18689 1510.890503 1503.979614 1497.80603 1490.377075 1481.979004 1474.57959 1463.386597 1462.741211 1461.13916 1455.865845 1450.188843 1441.735718 1436.407715 1434.365112 1441.335571 1450.010132 1439.071045 1426.930176 1431.246704 1437.318604 1443.818481 1451.926514 1459.871338 1471.765259 1478.642944 1479.66272 1478.678589 1474.147583 1467.923828 1467.020752 1464.644409 1462.64502 1467.983398 1467.698608 1463.278076 1460.05481 1458.732422 1458.745239 1456.380981 1451.859375 1445.056274 1438.637207 1435.787354 1428.591553 1422.526123 1415.079102 1402.704224 1389.185181 1383.129517 1385.12854 1395.308838 1409.733765 1422.670166 1437.002441 1446.359863 1454.117676 1462.01062 1466.265015 1468.643921 1466.369263 1468.546143 1475.596558 1486.464478 1493.344604 1498.142822 1508.325562 1523.11792 1531.139526 1540.484741 1550.221313 1563.34668 1569.098145 1577.990845 1591.63916 1601.70874 1606.5354 1606.912231 1602.394531 1596.770508 1585.665039 1585.327026 1588.717041 1588.579468 1588.177856 1586.374634 1579.112183 1570.499878 1564.363892 1556.588989 1547.904541 1551.474976 1549.40979 1543.78064 1541.745605 1536.652466 1533.144653 1529.968994 1524.93396 1521.42627 1519.374756 1516.612671 1512.74646 1500.616455 1488.807373 1479.106689 1478.664673 1483.063477 1489.420288 1496.02124 1503.6875 1513.018677 1525.375977 1532.117676 1530.355957 1530.618408 1536.014038 1537.852539 1530.483154 1519.701782 1509.74646 1512.069702 1514.238281 1509.277954 1500.346191 1485.269409 1475.246582 1463.875854 1457.581299 1451.068359 1449.594971 1446.865967 1447.190918 1440.986816 1437.775513 1441.774658 1444.57666 1442.429443 1441.60144 1441.050171 1441.029663 1438.327515 1430.795654 1424.686768 1414.047729 1401.560791 1404.209106 1404.824463 1399.468384 1400.467285 1401.805664 1392.282715 1382.211182 1370.990601 1363.596069 1355.671753 1349.445435 1342.854248 1344.093384 1357.528198 1363.55896 1372.101807 1378.146729 1380.891602 1382.308472 1383.477295 1384.190552 1384.749756 1384.773926 1384.075684 1382.367798 1378.409302 1376.384521 1378.922607 1379.276855 1378.897461 1377.704346 1375.06665 1372.133789 1368.773071 1363.338257 1352.998169 1357.733276 1361.979004 1359.038208 1352.719482 1347.186646 1343.245972 1340.550903 1341.950806 1344.710693 1349.709961 1353.31958 1358.560181 1363.384888 1367.359253 1373.56897 1378.662231 1380.485962 1377.017944 1368.53479 1368.699951 1363.86731 1356.302734 1362.177612 1368.778198 1375.216309 1381.466064 1386.612305 1389.898071 1394.929932 1397.974365 1393.568604 1392.630859 1396.773438 1400.678101 1404.166626 1406.143188 1410.194946 1411.340332 1410.176636 1409.00415 1406.431396 1392.466797 1399.707886 1412.432617 1410.596069 1404.223755 1390.22998 1385.411377 1391.729492 1392.4729 1381.342651 1368.828857 1357.025391 1362.004272 1362.838501 1361.003418 1360.20459 1356.990601 1351.599854 1349.050903 1344.860352 1337.419067 1311.551514 1301.707642 1295.65332 1304.614014 1331.224854 1352.487549 1334.52771 1314.632202 1305.368042 1299.530396 1296.131836 1294.67627 1293.942993 1293.079102 1305.69043 1306.500122 1302.563477 1301.434204 1301.842896 1305.544189 1314.942993 1324.681396 1334.931274 1344.297729 1360.892334 1369.876221 1369.736938 1358.568726 1341.820679 1317.667114 1296.691162 1302.510498 1318.056885 1330.390015 1341.217041 1350.584473 1352.542114 1355.992432 1359.178589 1356.684082 1339.254517 1331.091309 1318.307617 1329.451538 1323.302734 1307.702271 1292.714233 1280.479614 1263.417114 1248.45752 1253.070923 1254.497314 1258.875732 1263.291992 1264.29541 1262.880005 1261.897827 1275.067017 1297.216064 1300.932495 1293.911987 1283.640991 1280.603638 1288.713257 1292.545288 1292.783447 1298.925293 1307.101318 1311.044678 1307.5177 1294.259033 1283.844604 1274.190063 1265.821533 1260.0896 1255.195312 1251.221436 1247.823242 1244.648438 1239.38623 1233.575317 1224.805664 1230.585938 1238.279175 1245.097168 1250.198242 1251.639038 1259.828979 1270.227417 1280.724365 1297.679688 1307.756348 1303.517822 1294.014282 1285.169922 1277.176758 1273.035767 1270.208618 1265.298096 1257.740356 1254.216919 1267.860229 1278.585571 1276.880127 1270.580322 1257.674316 1252.336182 1257.016968 1259.258789 1257.213379 1249.66748 1245.402222 1239.358887 1231.05542 1222.519653 1229.322021 1239.263062 1247.180054 1251.80188 1256.451782 1266.581055 1276.724609 1283.953735 1290.84436 1299.134277 1302.66333 1310.710938 1317.647827 1327.639038 1332.557007 1336.234253 1340.24646 1345.820435 1352.239136 1360.735596 1367.129272 1371.918091 1375.513672 1376.898804 1376.481323 1386.98938 1400.226807 1405.003174 1403.616333 1402.885254 1407.048096 1408.197876 1408.826416 1416.669556 1425.882568 1434.509033 1439.724976 1442.606567 1448.268677 1454.182983 -1679.145752 1692.673096 1708.174561 1708.321777 1698.546265 1689.422729 1685.523193 1691.059692 1699.220581 1704.886841 1708.797974 1710.246216 1710.72998 1710.704224 1709.541992 1708.856201 1711.067871 1713.237793 1714.194214 1714.512573 1714.104248 1713.221313 1711.843994 1710.096436 1707.619141 1705.768433 1700.999878 1697.102295 1693.423584 1686.802368 1679.466309 1672.373047 1665.624146 1656.700195 1644.074097 1634.001221 1633.202881 1635.843018 1634.586548 1629.39563 1625.955078 1623.982788 1616.184204 1611.162842 1595.922852 1582.941406 1577.071411 1575.239014 1566.358398 1554.474731 1535.721069 1521.201416 1531.22583 1546.333862 1560.144165 1567.02478 1564.153564 1567.061523 1588.581787 1599.806152 1600.069214 1593.351318 1582.583252 1564.151855 1547.834106 1545.761597 1559.891846 1568.413208 1572.062134 1556.933716 1541.284668 1524.575806 1507.661255 1514.807129 1523.969238 1528.248901 1525.490234 1519.8396 1511.285278 1507.106201 1498.669067 1496.417236 1502.814087 1508.456665 1515.232178 1524.578247 1539.715088 1554.239014 1566.909302 1577.740967 1590.586548 1598.084229 1612.633911 1635.216187 1643.063965 1639.749512 1630.616455 1613.944092 1598.06958 1576.51416 1560.289673 1545.532959 1528.089355 1511.907715 1495.950806 1480.117554 1466.516235 1449.930664 1436.093262 1426.71228 1421.024048 1414.667114 1400.255981 1394.723145 1386.269287 1399.017944 1420.824219 1431.633423 1440.95105 1450.427979 1459.269287 1476.198364 1496.611938 1520.556763 1536.024536 1556.741333 1576.634155 1591.00708 1598.581543 1604.56604 1613.356323 1612.108887 1607.651123 1601.946655 1589.274902 1587.52356 1594.587891 1594.32605 1587.781372 1578.31897 1570.124634 1564.505615 1557.638672 1547.878784 1551.43042 1558.22229 1569.254028 1583.394409 1590.020142 1577.953857 1568.941528 1572.630371 1579.098633 1586.220093 1596.80481 1603.732056 1610.783325 1617.952148 1627.662476 1637.342529 1636.625122 1624.415161 1616.181885 1608.05835 1595.321411 1583.823608 1571.891846 1559.968262 1549.901733 1536.123779 1547.822876 1558.369751 1564.316895 1573.555176 1579.238892 1587.6875 1582.713867 1568.546387 1554.964111 1544.199097 1533.110229 1521.094604 1511.829102 1500.699951 1490.831177 1477.28479 1466.024048 1462.317749 1462.668945 1466.526611 1471.611206 1472.314331 1471.623779 1470.979004 1473.024292 1473.799561 1475.759644 1484.827881 1492.707031 1503.727051 1518.359863 1535.446167 1548.322021 1561.678223 1575.517456 1568.182983 1559.720703 1560.232422 1559.267334 1554.525513 1543.458862 1532.907715 1526.908813 1519.836548 1511.087402 1502.375244 1492.743896 1483.733398 1475.12561 1469.814087 1467.157715 1465.655762 1458.166626 1450.394165 1442.760132 1438.154785 1436.916992 1445.713257 1446.260132 1439.282593 1429.630127 1437.802612 1442.557373 1450.839722 1459.5 1467.457031 1477.621704 1485.529907 1488.942993 1488.875488 1484.201782 1478.54187 1473.099609 1472.552856 1477.407227 1478.481079 1478.294312 1474.546875 1466.971069 1467.874512 1468.360474 1464.666626 1455.397827 1449.176392 1445.584961 1443.096802 1437.542969 1427.62793 1413.52478 1406.414062 1395.198853 1387.263306 1384.841431 1400.477661 1407.642944 1412.487915 1424.058838 1434.07666 1441.668701 1447.466309 1453.945312 1461.773438 1471.997437 1480.010864 1491.542114 1501.279907 1506.939819 1510.687744 1515.103027 1522.13269 1530.425903 1539.759888 1556.758057 1569.724121 1578.476807 1589.3396 1601.665649 1609.063599 1612.974121 1612.621826 1610.171753 1606.810547 1600.165649 1598.665283 1597.232422 1593.315186 1590.495728 1587.667725 1578.53833 1570.430176 1562.703247 1558.522461 1555.206421 1551.427734 1546.302002 1536.84668 1530.97937 1524.327393 1521.535767 1518.109863 1514.620605 1515.377319 1514.622314 1513.32312 1505.613037 1489.605835 1483.735107 1481.534668 1483.846069 1485.628296 1490.903442 1497.772217 1508.374634 1522.237305 1533.964355 1542.439087 1543.397705 1543.594849 1544.347534 1542.567017 1535.692871 1529.398071 1526.913818 1520.13147 1515.054443 1506.651489 1493.954956 1476.579224 1458.883057 1454.033936 1448.445801 1440.809204 1438.495972 1433.814575 1432.571045 1428.724121 1423.775146 1425.914673 1431.914429 1435.519897 1437.223022 1440.388184 1438.057617 1426.903687 1418.591675 1412.000244 1404.837524 1395.169922 1389.13269 1388.24585 1382.327759 1384.945312 1388.736328 1383.818237 1377.174194 1361.833374 1351.12854 1345.108154 1347.614868 1349.637207 1363.807983 1378.591309 1383.689331 1386.888184 1387.969727 1388.186279 1388.387817 1389.607422 1391.486206 1391.878174 1391.529297 1390.233154 1386.748535 1380.256714 1380.861938 1384.900146 1385.372314 1384.262085 1382.509033 1379.758789 1376.625 1372.901855 1368.069824 1363.328247 1366.440918 1368.179443 1365.924683 1358.661743 1354.544678 1355.72644 1354.482178 1351.173462 1346.182129 1347.763428 1352.136108 1355.778198 1359.076782 1363.68457 1369.438599 1374.427856 1377.966797 1377.216064 1376.222656 1374.872192 1366.118896 1362.829468 1365.675171 1372.817017 1382.289917 1391.479126 1393.689331 1396.045776 1400.530762 1404.334961 1405.29541 1404.059204 1404.168579 1408.227051 1412.279053 1412.106079 1415.634155 1416.208252 1413.846558 1411.673584 1404.729614 1400.387085 1404.015381 1419.678101 1417.954468 1409.84021 1399.019531 1398.530396 1404.436279 1395.049561 1384.250122 1371.985352 1368.491821 1380.144653 1380.759644 1375.593994 1374.344971 1369.669312 1366.787109 1361.061279 1350.062744 1331.039551 1312.879395 1301.733154 1296.032593 1304.508667 1333.498779 1359.188843 1349.661987 1336.125854 1327.02002 1321.098145 1315.407715 1308.015015 1303.569092 1299.728638 1307.83313 1319.758301 1309.18811 1306.044434 1308.938965 1315.217529 1326.495728 1336.785767 1349.364746 1361.455566 1371.488403 1376.777588 1374.008789 1359.288696 1338.792236 1319.030273 1300.707642 1313.00354 1330.999268 1345.345947 1360.03125 1367.314331 1368.103027 1366.849976 1365.356689 1359.921021 1353.914917 1343.707397 1342.40625 1341.848999 1332.411133 1315.598267 1299.306885 1283.199463 1267.316528 1258.847412 1267.309082 1268.888184 1267.71875 1272.045654 1272.869141 1273.32605 1276.719116 1288.598755 1312.124878 1323.567749 1309.317871 1296.645508 1298.345093 1306.209595 1307.143555 1308.464355 1317.612549 1317.917236 1309.564331 1300.94519 1288.567261 1278.293335 1270.921875 1263.511597 1257.413208 1253.35083 1248.333252 1244.987549 1241.300537 1236.034912 1230.980225 1227.948486 1234.132446 1240.052368 1247.551636 1257.84668 1261.46936 1268.518677 1277.239868 1291.247314 1303.738892 1309.416382 1308.552979 1302.124878 1292.86145 1285.726074 1278.825195 1276.571411 1273.152954 1268.65271 1263.297119 1273.907837 1285.143311 1284.094238 1278.361938 1268.182495 1258.684448 1266.45874 1269.865112 1268.890137 1262.998535 1254.86499 1244.649658 1233.308716 1225.202881 1226.752197 1238.365234 1247.940918 1256.020874 1266.105103 1274.078247 1282.578247 1293.352905 1301.591064 1310.022339 1315.100342 1321.342896 1323.888062 1326.687866 1329.634888 1334.740479 1338.659912 1342.832886 1348.453613 1354.744507 1359.976562 1363.307739 1364.44519 1366.111694 1375.686401 1388.274902 1395.216064 1396.898438 1393.985107 1391.081177 1394.556763 1395.77124 1399.589111 1409.027954 1417.025513 1424.706909 1429.370361 1437.484741 1449.539062 1456.561157 -1676.673828 1689.526123 1707.540527 1703.346191 1693.265381 1682.532593 1680.694946 1686.586914 1697.411865 1703.200684 1707.704468 1710.451538 1711.415894 1712.528687 1712.761841 1712.875244 1714.092529 1715.359985 1716.075195 1716.36377 1715.736816 1714.490234 1712.845215 1710.891357 1709.123901 1707.800659 1704.127075 1700.38855 1697.693481 1694.419067 1686.696533 1678.976318 1670.440063 1660.318237 1650.746704 1644.095825 1640.986938 1637.536499 1634.111328 1630.211182 1625.994629 1622.260254 1616.596313 1612.768921 1600.857056 1583.903076 1569.378174 1561.268066 1555.60376 1536.817993 1527.633423 1532.80896 1545.830078 1562.894043 1575.194458 1585.060547 1580.091675 1570.88562 1596.802246 1609.050293 1608.076782 1595.562012 1578.272461 1560.990723 1548.260864 1562.692139 1573.303711 1579.866577 1573.52832 1557.118042 1542.561035 1522.891846 1514.403809 1533.833252 1541.276367 1542.549072 1540.314331 1531.385986 1521.759155 1518.831299 1510.421143 1499.565308 1500.347778 1506.568481 1513.20752 1521.373291 1531.296265 1540.65625 1551.544189 1564.227173 1582.139893 1594.714111 1607.87207 1628.279785 1644.693726 1661.373169 1645.68042 1622.780396 1600.831177 1578.280762 1559.171265 1541.565552 1520.542725 1504.88855 1491.391479 1476.5625 1459.452393 1442.207886 1430.105103 1424.657959 1420.68335 1415.64502 1400.312988 1395.16687 1387.312256 1398.189087 1421.564575 1432.690063 1443.542725 1453.524658 1461.026489 1479.526489 1500.930542 1522.949341 1543.031616 1565.886108 1585.019409 1604.712036 1612.993652 1617.220947 1619.130249 1617.982788 1616.364258 1613.288574 1601.613159 1598.516479 1605.319092 1601.538452 1593.427856 1584.630615 1576.356445 1570.299316 1563.230835 1550.671753 1553.382202 1558.641846 1571.061157 1581.146851 1596.306274 1584.251099 1570.802612 1572.003174 1578.278198 1586.225342 1596.020386 1604.145386 1611.423462 1619.225464 1630.38147 1637.882935 1634.17749 1620.409912 1614.136353 1604.572876 1592.251831 1581.511108 1571.528442 1559.259888 1549.291016 1548.428833 1559.745361 1570.58667 1577.022827 1583.688843 1588.585693 1588.736328 1580.08728 1566.328491 1555.026855 1545.993774 1534.579346 1520.790405 1509.566772 1500.650513 1491.85376 1479.729614 1471.961304 1466.986084 1467.5625 1467.807373 1467.752441 1469.061401 1476.570068 1481.039307 1484.219971 1485.957031 1484.22168 1482.059448 1480.186157 1488.970459 1502.938354 1519.132446 1538.467407 1549.617676 1558.862671 1566.515137 1568.029663 1569.094116 1567.156006 1563.526855 1554.915894 1545.265259 1536.886597 1526.472168 1515.377319 1504.70105 1493.990479 1485.277344 1479.390015 1474.884155 1469.829712 1466.047485 1457.145874 1448.640503 1442.140747 1437.795166 1438.34082 1451.638794 1445.989014 1435.959717 1434.298462 1442.752441 1448.387329 1456.47644 1465.630981 1473.068726 1482.12793 1491.37854 1495.679443 1496.439819 1492.801147 1486.616455 1481.222412 1480.437988 1487.671631 1487.962036 1486.117676 1481.891479 1477.701416 1477.906616 1475.556519 1465.13208 1459.115234 1454.514893 1450.857178 1447.080811 1440.612427 1431.140503 1420.058838 1411.951538 1405.727173 1392.775879 1384.901245 1403.187866 1413.904541 1422.003906 1425.526855 1426.868774 1431.250366 1436.95874 1440.876953 1453.904053 1467.323242 1483.987915 1497.937866 1509.26123 1521.795166 1530.015015 1534.372314 1535.466675 1535.036499 1535.475586 1554.57019 1568.078735 1579.810303 1593.748901 1604.455444 1616.396606 1622.983643 1622.942993 1622.067505 1617.420654 1611.521973 1606.083008 1599.69458 1593.811768 1589.357422 1585.257568 1578.560669 1574.756836 1567.373047 1562.991455 1553.194824 1545.896118 1539.195312 1532.543579 1524.762573 1525.074829 1521.639404 1510.977905 1508.335938 1504.729858 1503.504395 1500.169678 1491.075562 1488.632324 1490.011841 1489.26062 1491.020142 1491.640259 1495.210449 1500.384399 1512.594116 1524.346802 1534.295654 1547.010498 1551.816162 1550.841064 1550.701172 1547.644409 1539.168823 1527.489136 1519.256226 1509.079468 1501.89502 1493.653564 1482.852539 1462.432129 1447.396973 1438.654053 1434.696167 1427.844116 1426.886108 1420.632812 1418.623291 1415.242676 1410.855225 1411.618042 1416.682861 1418.154175 1421.864136 1425.696045 1425.427612 1416.950684 1408.83313 1400.094238 1391.591553 1387.755249 1378.431152 1373.574829 1367.620605 1361.994629 1369.873535 1370.886841 1362.885864 1354.147705 1345.947876 1356.71814 1369.597168 1370.420898 1370.333618 1384.055054 1391.55188 1395.440918 1395.965332 1396.218018 1396.705444 1397.851196 1399.126709 1399.043701 1397.562378 1395.41333 1390.920166 1387.077148 1389.6521 1392.920776 1392.004639 1390.14978 1388.023682 1384.581787 1381.05249 1377.601685 1372.575073 1369.66626 1370.727783 1371.673706 1370.008301 1365.661377 1365.212646 1364.852051 1364.146362 1360.953247 1356.234863 1353.053711 1351.429321 1352.449829 1353.838379 1359.528076 1366.05188 1368.976929 1372.297852 1374.656494 1377.657959 1379.906494 1372.680908 1367.62915 1364.79834 1375.032471 1388.571289 1395.314453 1399.967041 1402.349121 1405.743652 1411.024048 1412.169556 1412.764771 1414.312988 1417.315186 1419.062866 1418.049683 1419.331055 1421.260254 1419.393188 1416.125 1408.192505 1403.357056 1404.091553 1424.785278 1426.588501 1415.182129 1407.680054 1408.969604 1409.550537 1402.140137 1387.502808 1376.586182 1381.714722 1390.709473 1389.673462 1389.476074 1391.015869 1387.519287 1381.485107 1371.198364 1349.436768 1326.088379 1311.527588 1301.747803 1296.02771 1303.190674 1325.108154 1357.795044 1359.941162 1350.228027 1344.689087 1332.398926 1325.097534 1320.307739 1316.226318 1305.555908 1320.290771 1321.86792 1317.475586 1313.449097 1316.373169 1321.394287 1335.259277 1351.609497 1366.991089 1373.982666 1379.461548 1384.68396 1378.569092 1358.8927 1337.174927 1320.47522 1306.23877 1324.730957 1342.097656 1359.816528 1371.800171 1374.950073 1374.182983 1372.450562 1370.772583 1368.084473 1361.019897 1352.316284 1354.831787 1348.703247 1333.952148 1314.535156 1297.335938 1281.465698 1271.483765 1278.457642 1287.777954 1286.192871 1278.934814 1280.695679 1279.68457 1281.083008 1294.603638 1303.970459 1314.717163 1333.274658 1321.459351 1314.221069 1316.388184 1321.460327 1320.785278 1319.152954 1315.039307 1309.906616 1303.430298 1296.396118 1284.827148 1276.040039 1268.03894 1261.703003 1255.077637 1251.328857 1245.699585 1241.661743 1238.234131 1232.875366 1229.670898 1234.75769 1238.669189 1242.952148 1250.871338 1259.288208 1264.985107 1271.903198 1281.479736 1296.296509 1306.498047 1313.431274 1313.112427 1306.876709 1301.281372 1297.063232 1290.20105 1283.383911 1278.535522 1273.427124 1269.370483 1279.576416 1290.214355 1288.040039 1283.220947 1271.702759 1267.745605 1274.618408 1275.006104 1272.897339 1270.904175 1263.168945 1248.029053 1238.152832 1232.343872 1224.608032 1232.894287 1247.912476 1256.970947 1266.938232 1275.150513 1287.133545 1298.299316 1310.993164 1324.251587 1329.717163 1331.195435 1334.200195 1333.890137 1333.83252 1336.114868 1338.77002 1340.639771 1342.675537 1347.474854 1352.795532 1354.58313 1359.814331 1367.032349 1377.362061 1385.1698 1389.257935 1388.039917 1383.607178 1379.532959 1380.150513 1387.912964 1397.835938 1406.028198 1415.028442 1426.12146 1436.350952 1446.542358 1454.097778 1457.54834 -1671.933594 1684.848389 1695.979736 1695.222168 1685.451782 1677.419922 1680.116211 1687.801025 1695.910278 1701.896851 1706.806396 1710.174805 1712.270752 1713.848999 1715.129761 1716.044189 1717.202637 1717.692505 1717.932495 1718.203491 1717.354858 1715.753052 1713.879517 1712.088013 1710.385254 1708.590698 1705.670044 1702.528564 1699.906128 1697.560791 1692.500366 1684.625 1675.695801 1666.32959 1657.314331 1648.961548 1642.357056 1634.97876 1632.310547 1628.97583 1623.094727 1616.497681 1609.231689 1602.50415 1591.104858 1576.275513 1561.589355 1546.148315 1543.314087 1536.165405 1536.659912 1538.467163 1554.878418 1571.737793 1586.820923 1597.613281 1595.570557 1580.679932 1602.912354 1615.515259 1609.267578 1595.089844 1580.262329 1561.029663 1556.414673 1572.403687 1587.804077 1587.275513 1575.579224 1562.052002 1544.000732 1521.258911 1530.714355 1544.470703 1551.934692 1552.257324 1548.804321 1542.734619 1540.553955 1535.383789 1525.674194 1507.595215 1498.971802 1505.060303 1511.311157 1517.624023 1524.866089 1535.713745 1548.911621 1563.464966 1578.235718 1590.860107 1602.670532 1620.502563 1639.774048 1656.401123 1650.876587 1622.012329 1594.146606 1572.217651 1560.768921 1543.862915 1524.820679 1513.391113 1499.947754 1483.388916 1467.900269 1448.637817 1430.755493 1424.539673 1421.175293 1412.922607 1400.36145 1395.45459 1389.308594 1403.064209 1420.388672 1431.22522 1443.615601 1453.664429 1461.91394 1479.846436 1503.112183 1522.998291 1546.851685 1568.579956 1591.814209 1611.125488 1622.739624 1627.323975 1626.318726 1624.331909 1622.058105 1618.66687 1612.682495 1614.297852 1613.27771 1609.279053 1597.824463 1588.429077 1580.889771 1574.811157 1566.70166 1556.390259 1557.153564 1562.264648 1571.978638 1580.952026 1592.18811 1596.605835 1584.629883 1579.588013 1580.894043 1584.935059 1597.274414 1604.112671 1611.417358 1619.171875 1631.140137 1638.058716 1631.725464 1619.268066 1613.227783 1600.256348 1588.128784 1578.657227 1568.46936 1558.514893 1549.10022 1556.563965 1563.887573 1577.016113 1587.583984 1594.786865 1596.439331 1586.172119 1575.904175 1561.106445 1552.124023 1542.320435 1532.236572 1522.691895 1511.728027 1501.896606 1493.371094 1483.964478 1473.783569 1471.043213 1472.55896 1475.11438 1476.11731 1478.848755 1485.333618 1489.307983 1493.030396 1495.407227 1495.862671 1494.063965 1487.524414 1483.213745 1492.649658 1509.480103 1521.304443 1534.385864 1540.206909 1553.670288 1567.720215 1575.254395 1572.259888 1568.154663 1562.303101 1553.214844 1542.019653 1530.668701 1518.888428 1505.812744 1495.214355 1487.097656 1480.814331 1475.386475 1469.697021 1464.75061 1458.588379 1453.097046 1443.862427 1438.640747 1440.889893 1446.505371 1440.059448 1434.228149 1439.630371 1446.172119 1452.209473 1459.717285 1469.043335 1478.931641 1487.629883 1497.319092 1502.753296 1505.455933 1503.966553 1499.325928 1493.280762 1493.414062 1495.604126 1494.609375 1491.052856 1486.30127 1484.55481 1481.485107 1476.615845 1465.967529 1461.960327 1458.228638 1454.776001 1452.017456 1445.250122 1438.694824 1429.119507 1418.643799 1407.137329 1395.996826 1386.192383 1399.870728 1414.531616 1427.641357 1434.946045 1440.408936 1441.528076 1440.526245 1444.853394 1454.000122 1468.759888 1482.759155 1500.190674 1514.78186 1529.208496 1537.015137 1544.932739 1549.143677 1550.297729 1545.608643 1551.210815 1560.452393 1577.8573 1592.707031 1604.858154 1622.475342 1629.067993 1633.317383 1633.819336 1625.143188 1616.451538 1608.382812 1598.522705 1588.504639 1584.171509 1579.411621 1576.839478 1572.671875 1565.157959 1558.107544 1548.037598 1538.444824 1534.826416 1534.632812 1532.670532 1530.398315 1528.228638 1520.339966 1510.606812 1498.121704 1495.911133 1497.337769 1499.22937 1499.911377 1499.359985 1497.999512 1501.967651 1499.285889 1498.393311 1505.841431 1513.933838 1523.885376 1531.738525 1537.67041 1547.198486 1547.199463 1545.295898 1540.366943 1531.84436 1519.073364 1506.249512 1491.857422 1484.257568 1476.869263 1466.400635 1453.675781 1439.235352 1424.710571 1421.914917 1418.401245 1416.608032 1407.22998 1402.077148 1400.010498 1395.374512 1397.255493 1402.294556 1405.223511 1411.314819 1413.41394 1412.828735 1406.177368 1400.590942 1391.90625 1383.566528 1378.34729 1371.22168 1361.960449 1353.325562 1352.012451 1354.385376 1357.179199 1353.54187 1347.900269 1360.057129 1373.426758 1383.744019 1387.177002 1380.059448 1387.071045 1395.851685 1402.238892 1403.552856 1404.345093 1405.741699 1406.768677 1407.579712 1406.621704 1404.034302 1400.893921 1393.469604 1389.118896 1396.688232 1402.789185 1400.765503 1396.635742 1393.136108 1389.377563 1385.149048 1381.157837 1377.275024 1375.837769 1376.864746 1376.081055 1374.563232 1372.576782 1371.729126 1370.52417 1368.967407 1366.880005 1361.976562 1356.498657 1352.707397 1353.896484 1355.682129 1355.934814 1362.904053 1364.757568 1366.624878 1370.240601 1375.525391 1379.155029 1378.518799 1373.013916 1367.595825 1369.616577 1385.449341 1394.76416 1404.154541 1407.588867 1413.871948 1417.564941 1419.166138 1421.374634 1423.345093 1424.838257 1425.888184 1425.010864 1425.678223 1428.045654 1425.751831 1421.015991 1416.225708 1413.166016 1411.889648 1423.036255 1429.163208 1426.227905 1424.053467 1421.654907 1415.763184 1406.660522 1388.771729 1385.033691 1397.583496 1403.021973 1405.489868 1406.472534 1406.152222 1400.476196 1388.551636 1373.726196 1351.224976 1329.552979 1311.781982 1301.600098 1296.491333 1301.429199 1320.083374 1353.357788 1368.963379 1358.453613 1348.68396 1337.532959 1329.966675 1326.793091 1326.228271 1326.876587 1327.349243 1325.694824 1317.893188 1318.497925 1324.459229 1328.878174 1344.309204 1367.223022 1377.404297 1388.891357 1398.165405 1396.402832 1384.937744 1365.19397 1347.216553 1324.873413 1315.39856 1332.260498 1350.396606 1367.862793 1383.744751 1387.975952 1381.377808 1376.757324 1375.44043 1372.677734 1366.796387 1363.444336 1360.819458 1352.334839 1332.862549 1323.571411 1307.908447 1292.075562 1279.005737 1286.887695 1300.271118 1299.966064 1293.448853 1294.402954 1288.981567 1292.468262 1303.313965 1313.819214 1325.141846 1339.927612 1338.900513 1332.195801 1329.968506 1326.09082 1319.5 1313.500488 1306.658569 1301.312744 1295.10791 1288.484375 1279.622192 1274.394653 1269.003418 1262.022949 1256.217896 1251.196289 1246.324707 1241.70105 1236.830322 1232.387817 1235.434692 1240.047363 1242.844116 1247.960449 1256.790039 1261.546387 1265.96521 1273.436279 1283.759766 1296.447632 1306.631348 1317.094116 1317.828003 1312.914429 1307.983032 1303.058472 1297.373047 1292.358154 1284.195923 1279.012329 1276.880981 1284.581055 1295.439209 1291.5625 1285.795166 1278.898071 1279.920288 1282.265381 1279.472656 1275.91333 1272.25415 1265.101929 1250.64502 1241.310547 1235.985474 1229.311157 1228.414429 1243.655029 1252.114258 1261.216187 1269.66748 1281.641235 1297.905029 1310.817139 1325.295288 1340.182495 1345.333618 1343.313477 1341.320068 1340.998535 1340.501709 1339.847046 1341.176514 1341.253296 1341.479736 1348.202271 1352.854736 1360.818726 1368.757568 1377.858276 1382.359131 1382.593994 1379.381348 1376.712891 1376.324097 1383.263306 1395.115234 1406.412354 1414.015869 1423.534058 1433.944824 1443.275879 1450.688477 1454.402344 1455.951904 -1664.899902 1677.840698 1687.386719 1687.016602 1677.876343 1669.531494 1679.713257 1687.90979 1695.441528 1701.786255 1706.96875 1709.662354 1712.823486 1715.353027 1717.052368 1718.008179 1719.400757 1719.798218 1720.066772 1719.762695 1718.552246 1716.834839 1715.022461 1713.051392 1710.998169 1708.709839 1706.081055 1703.951172 1702.6875 1700.15625 1695.747925 1687.720581 1678.748657 1668.751343 1658.290771 1648.136963 1642.874512 1637.620483 1635.411255 1628.413574 1621.770386 1612.38623 1600.379639 1590.222412 1576.552002 1565.82019 1562.153809 1561.192261 1556.327026 1549.956299 1544.164429 1541.325684 1559.911499 1579.037109 1594.517334 1607.765381 1608.022949 1593.774414 1609.721924 1622.544556 1613.915771 1601.85144 1582.330688 1558.070435 1564.157104 1585.65332 1599.410278 1595.934448 1578.404785 1564.301514 1542.703979 1528.69751 1538.69873 1553.869629 1565.106445 1565.221436 1560.189941 1556.060181 1553.726685 1548.543945 1539.327881 1519.397461 1499.917847 1503.76062 1508.994995 1513.945312 1521.685425 1534.95105 1544.767822 1556.298096 1567.370483 1583.761108 1599.9646 1616.325439 1636.216309 1647.690552 1641.416626 1620.022217 1601.018677 1576.135986 1564.105835 1549.641602 1531.537842 1516.987183 1501.167358 1481.439087 1464.746826 1446.591064 1433.897583 1427.823242 1424.932495 1418.15332 1401.532471 1396.043457 1389.877075 1398.953735 1419.021851 1426.937744 1441.255493 1452.130249 1461.848999 1476.936768 1501.82959 1519.593994 1544.684814 1566.173706 1584.058105 1611.193359 1628.880981 1636.375732 1635.445557 1632.723022 1629.374023 1624.774048 1620.810181 1619.567139 1617.074951 1612.790039 1603.105469 1591.095459 1582.764404 1577.512085 1570.176147 1558.970337 1561.38208 1569.863403 1576.255493 1582.677612 1588.706299 1605.740723 1603.235596 1598.161987 1593.055176 1592.055298 1597.800537 1603.749756 1609.432251 1617.714966 1629.310913 1637.582153 1630.258057 1618.782715 1612.59082 1594.845825 1583.615356 1576.287109 1566.639038 1558.564209 1559.328735 1564.959473 1569.442871 1580.749023 1593.051147 1600.716187 1600.833496 1588.222412 1576.431396 1562.507202 1554.149536 1545.067627 1534.712158 1521.891479 1511.161255 1500.836304 1492.429443 1484.059204 1477.152344 1473.692017 1476.97644 1480.603516 1484.866455 1489.86853 1492.540039 1496.727661 1501.153076 1503.799438 1504.894287 1503.69873 1499.718262 1489.572998 1485.986694 1498.908813 1509.447876 1517.980225 1528.927246 1542.014282 1560.208496 1573.677612 1575.379517 1572.637939 1566.033569 1558.354248 1547.161377 1533.664062 1520.005615 1506.338745 1495.41394 1487.522339 1480.039185 1474.050537 1468.887207 1463.246582 1457.929932 1453.503418 1443.925781 1439.237549 1442.834839 1443.359619 1437.80603 1440.73645 1446.162109 1452.421021 1458.891602 1462.738892 1470.62854 1481.224609 1493.893311 1504.485962 1511.268677 1516.407837 1514.246826 1509.184448 1504.029297 1505.475098 1503.96228 1500.31189 1495.80896 1491.419067 1489.319214 1484.747925 1479.642334 1472.988281 1465.817505 1461.104126 1457.890747 1454.661499 1449.972778 1443.65564 1435.454468 1422.573486 1406.294434 1395.888184 1387.61731 1395.949219 1408.524292 1424.739868 1433.688477 1442.319946 1452.010376 1461.772217 1464.078003 1461.906616 1467.82019 1480.509399 1493.765137 1513.489014 1530.290161 1541.037476 1553.027344 1561.682983 1568.045898 1570.730103 1570.66272 1568.995239 1573.893677 1587.271118 1601.335327 1620.269897 1631.596069 1637.629761 1638.336426 1632.505005 1619.817261 1608.013916 1600.825195 1591.409058 1581.745605 1571.796631 1567.736572 1559.592651 1557.578125 1548.55542 1546.692017 1544.396851 1542.481323 1541.178223 1538.817871 1530.154907 1524.330322 1513.694214 1500.705322 1501.5802 1505.38501 1508.771362 1510.443237 1510.289673 1509.85144 1509.610718 1509.392578 1506.161865 1501.614624 1510.630737 1518.252808 1525.845337 1531.885498 1536.217163 1539.029053 1534.656006 1529.583008 1525.478638 1516.968384 1502.964722 1490.550659 1481.090942 1467.39563 1460.890381 1453.956543 1444.343628 1428.355469 1416.730469 1406.008423 1404.461792 1401.785889 1392.255859 1388.889282 1386.413574 1379.122314 1379.394775 1384.149536 1389.067017 1395.804565 1398.863892 1400.418579 1396.731689 1385.852051 1381.824707 1377.515015 1365.91333 1361.775024 1354.739868 1357.370117 1355.483643 1351.384644 1350.100464 1349.416992 1360.799438 1371.361572 1381.186768 1391.985107 1395.610596 1394.819336 1390.877319 1401.058228 1406.326538 1410.237549 1412.792603 1414.23291 1414.80127 1416.260498 1415.059326 1411.659912 1405.705078 1397.006958 1392.335205 1403.963013 1407.776001 1406.453735 1402.001465 1397.274536 1393.213501 1389.450073 1384.86377 1380.194458 1380.217651 1381.119507 1380.658691 1379.507935 1378.746094 1376.736206 1374.65332 1372.060669 1369.283936 1365.580933 1359.241577 1353.843872 1354.824219 1360.998779 1364.513916 1364.747681 1364.752808 1364.571655 1367.609375 1372.900146 1377.019531 1379.771729 1378.742798 1376.962524 1374.232788 1376.38855 1388.936279 1403.692505 1407.381958 1412.101562 1418.221802 1424.814087 1428.020752 1430.377563 1431.513916 1432.195557 1431.545166 1431.767578 1432.810181 1430.883301 1425.744141 1426.444824 1422.203125 1423.940308 1426.164185 1433.194824 1433.10022 1431.169922 1427.601929 1415.214722 1405.658203 1394.716919 1403.605469 1409.34082 1413.960571 1422.780518 1418.423462 1413.546143 1402.904175 1385.616943 1368.013062 1350.321045 1329.201172 1309.932495 1300.131714 1297.442261 1301.758667 1312.298828 1341.801025 1366.854248 1364.026123 1354.57666 1339.242798 1335.988159 1338.890381 1342.525513 1341.766724 1337.624268 1332.359009 1326.975708 1326.817017 1334.627197 1340.674805 1352.920288 1377.209717 1392.526367 1409.189575 1413.904175 1410.085449 1391.180908 1371.476318 1355.901489 1329.967163 1320.905151 1333.569214 1351.698608 1371.696411 1398.41272 1400.572144 1392.752441 1385.69812 1383.802368 1379.099731 1376.4375 1373.942871 1367.013306 1358.327881 1348.10083 1336.544434 1318.181763 1304.699707 1299.460083 1289.948975 1305.676636 1306.533936 1305.059204 1301.563721 1295.830933 1296.77063 1309.358643 1323.605713 1337.639526 1345.86792 1344.60083 1340.660767 1333.488281 1324.739136 1314.096436 1306.784546 1298.967529 1292.212646 1286.785767 1280.940674 1277.200073 1273.382202 1269.727417 1263.246216 1256.807983 1251.060547 1245.929077 1241.440552 1236.677124 1235.10791 1240.136963 1245.874512 1251.605591 1256.55896 1261.561401 1266.152466 1270.020264 1277.339844 1284.164673 1294.526611 1306.41333 1319.305908 1321.886597 1318.471069 1312.400269 1305.83728 1301.427002 1295.692871 1288.930542 1283.292603 1282.223999 1289.014771 1298.818604 1295.461304 1290.352783 1283.057007 1284.007935 1283.891602 1280.953125 1276.904175 1272.883667 1268.922729 1257.407959 1243.415161 1237.535767 1230.95752 1226.75415 1239.181519 1248.36853 1257.533569 1266.612305 1278.460938 1294.658936 1303.258667 1319.234131 1333.817383 1344.016113 1344.022583 1343.670288 1342.987671 1342.69812 1342.968994 1342.73877 1342.699951 1344.792358 1350.662231 1356.244629 1363.850464 1372.036743 1379.131226 1379.39856 1377.057495 1373.14624 1371.595703 1379.67981 1389.059692 1402.125 1409.447388 1417.924316 1427.540649 1437.722046 1443.936279 1448.880371 1452.144531 1452.98999 -1655.399536 1666.647217 1679.052246 1677.935425 1668.806763 1668.827881 1677.672852 1686.753784 1695.367676 1701.574707 1707.175415 1710.019409 1713.142456 1716.433472 1718.671021 1719.924072 1720.62207 1720.816895 1720.88269 1720.753418 1720.091797 1718.29126 1716.077026 1713.66272 1711.152344 1708.610107 1706.494751 1706.404663 1707.086914 1704.775024 1697.263428 1689.220825 1679.678589 1667.925537 1656.219971 1646.451904 1640.945679 1637.102783 1634.17749 1624.299927 1617.051758 1608.509399 1597.420044 1585.057373 1575.923584 1583.752808 1582.236084 1577.539673 1569.273193 1561.351807 1551.65918 1542.955811 1561.265625 1578.295898 1595.137207 1612.248169 1616.243164 1607.292725 1615.405396 1626.3927 1619.831177 1605.799194 1584.522339 1557.744995 1580.286499 1597.890259 1606.967285 1595.916748 1577.663086 1563.680176 1542.550293 1544.15918 1550.962646 1565.008789 1577.739014 1576.795288 1574.609863 1572.449219 1568.408203 1562.122437 1545.84668 1531.234253 1513.789917 1501.976318 1505.709961 1509.620239 1514.677734 1525.064087 1534.177124 1545.061646 1563.569336 1583.380127 1596.489624 1614.431519 1628.375122 1635.04126 1625.474731 1610.90625 1592.630371 1574.998535 1564.432861 1550.547607 1532.655029 1517.164673 1494.652344 1473.686646 1458.991089 1453.491211 1447.267212 1439.525146 1430.394531 1421.510742 1405.032593 1397.005249 1390.516602 1396.407471 1418.147583 1425.035156 1438.861572 1451.926514 1462.244629 1473.738525 1497.738525 1516.311646 1539.413208 1562.648071 1578.491211 1606.886475 1632.267334 1644.221924 1644.758667 1641.35791 1637.733276 1633.830688 1629.727417 1625.614258 1620.464233 1614.890015 1606.457397 1595.119629 1584.223267 1579.322632 1572.986938 1562.445557 1564.941162 1575.346924 1582.574585 1590.974976 1601.168335 1611.485229 1613.406128 1612.130249 1608.768677 1604.505371 1603.90686 1605.893433 1607.756958 1613.616699 1624.652588 1634.272827 1625.689209 1617.021362 1608.824219 1594.11377 1587.173218 1582.595459 1576.479004 1573.362549 1563.111328 1569.850586 1575.427979 1582.797485 1594.13562 1603.901489 1605.873779 1593.943359 1583.808838 1572.288696 1560.155762 1547.963135 1536.419189 1521.458008 1512.491089 1499.951538 1499.765015 1489.209473 1481.017822 1475.088135 1480.369995 1485.568115 1489.681274 1493.998291 1496.898438 1501.609985 1509.072266 1513.35144 1512.795288 1511.778931 1508.350708 1502.305664 1489.94812 1491.119385 1495.847778 1503.736084 1519.799194 1535.113037 1550.190186 1562.566528 1575.020264 1572.439331 1567.383179 1560.996216 1548.799072 1535.676514 1519.219238 1506.60791 1494.989624 1486.030518 1478.634155 1472.948242 1468.267944 1462.36499 1453.778931 1449.80835 1448.152344 1450.775635 1451.259644 1442.924683 1439.701172 1445.392944 1451.867676 1460.105591 1466.606689 1471.674561 1474.701782 1479.744995 1497.082031 1512.206055 1520.009033 1526.456177 1526.626953 1524.912354 1520.307007 1517.002808 1513.092651 1506.670044 1499.465942 1495.544312 1491.979248 1487.317139 1481.054565 1474.699707 1467.973022 1462.849854 1458.907227 1454.598755 1449.911621 1442.641357 1433.538818 1418.113281 1402.384399 1394.556763 1388.885376 1394.904663 1400.590088 1411.815308 1425.190063 1433.939819 1442.030396 1453.557983 1462.5979 1468.394775 1473.592529 1475.130737 1491.955933 1513.52478 1529.643799 1540.449341 1553.720459 1566.578247 1578.496948 1587.667603 1590.874878 1592.345337 1587.5177 1594.117676 1605.425903 1618.647461 1632.240601 1641.470581 1643.189087 1636.716309 1622.029053 1611.39209 1603.01709 1593.615601 1581.059204 1571.68689 1561.889282 1562.488281 1562.610352 1560.712402 1556.131958 1553.91333 1549.372314 1542.185913 1535.402344 1521.349976 1510.546387 1509.503418 1509.228149 1508.777832 1513.433594 1519.797119 1524.562012 1526.070923 1524.389282 1522.091553 1518.776367 1514.878662 1510.530518 1513.844727 1521.299683 1533.053955 1535.561157 1530.702148 1525.864746 1521.079712 1517.919067 1513.940186 1502.615845 1491.076538 1481.447998 1472.057129 1456.677856 1444.666138 1437.785889 1429.031372 1417.634277 1405.040894 1393.679443 1391.063721 1384.039185 1377.637207 1375.353027 1373.569946 1372.393799 1371.472534 1370.682617 1374.242554 1378.147095 1381.844482 1384.596924 1383.747437 1376.362061 1365.942993 1361.264404 1358.11731 1361.194946 1369.516479 1369.072998 1367.508911 1368.582764 1364.871582 1359.509888 1369.247803 1377.410522 1386.483276 1394.463013 1400.401978 1402.876099 1399.773071 1402.039429 1410.013916 1415.47644 1416.89917 1417.964844 1418.501953 1419.758301 1418.298462 1415.836914 1408.563599 1401.965942 1399.406372 1408.965332 1414.12439 1411.193481 1406.14502 1400.796265 1396.57666 1392.226318 1388.036255 1386.339722 1385.886475 1385.640015 1385.311279 1384.481812 1383.270996 1380.732544 1377.890381 1374.563232 1370.85376 1366.540405 1359.743652 1354.048462 1358.307861 1366.428345 1367.754272 1367.900146 1367.082031 1365.520508 1366.446655 1371.196411 1375.329102 1379.321167 1387.291992 1387.009888 1379.331909 1376.455688 1383.54126 1396.10437 1402.745972 1404.613647 1417.087158 1427.43689 1430.500122 1433.867554 1437.37146 1439.045166 1438.343872 1438.757202 1438.931641 1436.06543 1433.192383 1433.0979 1429.358032 1432.554443 1434.744141 1438.243164 1439.02063 1432.904175 1425.038086 1410.736816 1406.727905 1408.256958 1412.963257 1422.429688 1429.952637 1427.736206 1419.885498 1409.465332 1394.69104 1376.588867 1358.597046 1343.939575 1317.993042 1305.656006 1297.696289 1299.0802 1302.620361 1310.679077 1335.377319 1360.343994 1367.07251 1358.184204 1341.974243 1342.922363 1347.873657 1353.384644 1358.546021 1349.963013 1341.413086 1335.304565 1334.155273 1343.257812 1349.575317 1357.530273 1382.424561 1408.091187 1420.956421 1422.463013 1416.355957 1395.874146 1375.046265 1358.608032 1333.053345 1324.641113 1332.089722 1348.81958 1368.252686 1400.968384 1409.940063 1404.837891 1398.609619 1395.834351 1394.027222 1390.851685 1387.039429 1381.277222 1370.329468 1360.137939 1343.739136 1329.97168 1324.543701 1316.473633 1301.400391 1304.787354 1312.180664 1310.896851 1306.280518 1302.725952 1307.06958 1317.15271 1330.373291 1346.641113 1348.483398 1339.09436 1328.460205 1325.971802 1318.812378 1308.252808 1300.073608 1291.942139 1283.770752 1279.935547 1277.494385 1274.770508 1272.488037 1269.869507 1263.442871 1256.867432 1250.287109 1244.803101 1241.212524 1237.588501 1238.095947 1244.650146 1253.656128 1259.483521 1263.40979 1266.665894 1272.484741 1281.599609 1284.873047 1290.378296 1300.814331 1315.816162 1325.922729 1327.640381 1322.006714 1316.374512 1311.434937 1306.633667 1300.13916 1293.486328 1288.594604 1287.595093 1293.805786 1305.943237 1300.380249 1293.269653 1289.525269 1287.847046 1285.445068 1281.425903 1276.637207 1270.202026 1262.607422 1253.628296 1245.203003 1240.201172 1233.982422 1226.937012 1234.76123 1246.589844 1255.107422 1264.127441 1273.686646 1287.293701 1300.578491 1310.638672 1320.115356 1334.52832 1343.436279 1343.826782 1342.273682 1342.485962 1343.008911 1343.771729 1345.477173 1348.759888 1353.0354 1359.553711 1365.685547 1371.544678 1376.128052 1375.088013 1371.853638 1367.314941 1367.83667 1381.483032 1391.359863 1403.70166 1410.854492 1419.318848 1429.20752 1437.350098 1441.82019 1444.776245 1447.094116 1447.264526 -1647.393677 1655.145996 1665.014404 1665.122925 1658.651855 1665.407715 1675.694702 1683.766235 1693.934937 1700.626709 1706.743042 1710.136963 1713.240112 1717.043945 1720.281372 1721.013794 1721.281616 1721.261597 1721.197876 1721.113647 1720.587524 1719.211548 1716.856812 1714.481812 1711.353882 1707.916382 1707.466431 1708.634644 1708.884033 1708.289429 1698.203369 1688.932373 1677.750488 1665.406738 1653.248779 1643.653442 1635.670166 1632.107788 1624.30481 1617.992798 1611.0979 1603.575562 1591.798706 1582.915283 1597.49646 1604.940308 1597.56665 1583.209839 1573.079468 1563.64563 1555.182373 1548.262451 1554.857178 1574.346313 1589.409668 1610.354492 1622.073486 1623.657227 1625.243652 1630.94104 1621.390137 1606.058472 1585.407227 1569.980347 1591.710327 1608.903076 1611.560913 1597.447144 1580.472168 1562.114624 1548.840454 1562.975098 1567.818359 1574.578979 1584.989502 1587.451416 1584.193237 1581.093994 1578.070923 1571.844482 1556.105469 1543.763428 1527.955933 1514.959473 1502.459961 1505.798096 1508.819336 1513.028076 1523.656494 1538.01416 1558.74646 1576.092285 1589.673096 1604.770752 1617.30603 1619.724487 1611.00708 1595.805298 1587.082642 1572.089355 1561.560669 1549.156128 1531.329712 1513.188599 1497.967529 1492.350708 1484.678833 1478.26416 1465.874268 1451.168213 1434.520874 1423.219238 1408.154907 1397.473389 1390.742554 1393.343994 1416.022949 1424.887939 1441.091797 1453.11499 1463.920654 1474.95874 1490.618774 1511.78894 1533.729492 1558.02356 1575.654541 1599.884399 1623.159546 1649.174927 1650.427002 1649.009888 1647.072632 1643.949219 1638.939819 1632.675049 1624.075562 1616.234741 1607.203003 1596.666016 1586.564453 1580.180908 1574.147339 1565.196655 1568.31897 1576.241089 1585.643921 1594.094604 1606.594116 1616.560425 1618.273804 1618.02063 1616.102661 1613.56665 1610.714111 1610.232666 1610.225952 1610.791504 1618.317017 1622.505127 1620.770874 1614.982178 1608.973267 1603.04248 1598.265747 1591.135986 1585.529663 1580.809326 1572.369995 1572.63208 1577.971436 1582.87915 1593.018311 1603.717407 1611.929199 1600.046021 1589.058594 1577.665405 1565.536621 1553.506714 1538.50708 1523.591553 1514.500977 1505.875122 1505.791748 1498.835815 1485.840698 1476.956787 1485.144165 1491.279785 1496.020386 1499.095703 1500.341064 1505.829346 1512.023682 1518.296509 1520.009399 1519.917603 1516.742065 1510.781128 1502.332397 1494.162598 1491.548462 1493.082642 1504.398804 1521.886353 1537.195312 1550.340454 1557.626099 1565.320801 1566.263672 1560.941406 1546.880127 1532.753906 1518.436646 1505.128296 1494.492188 1485.298706 1477.222046 1472.403809 1467.757446 1462.064209 1453.536865 1450.214844 1451.33667 1454.110962 1452.531494 1443.694824 1443.599243 1449.308472 1456.262451 1464.627563 1471.39209 1478.928345 1485.349243 1486.42334 1494.11438 1514.452271 1523.559204 1530.393799 1532.819824 1532.870728 1531.365845 1527.792236 1522.333374 1513.966064 1504.52356 1498.029663 1493.824341 1487.800659 1481.298218 1474.684326 1469.599854 1464.406616 1459.217285 1453.704834 1448.076416 1439.679932 1429.61377 1417.319092 1404.713379 1394.762939 1391.652588 1405.896851 1404.645996 1403.587036 1412.818726 1430.724121 1448.381714 1458.183594 1455.951172 1474.344971 1481.783813 1479.963501 1489.946533 1506.454102 1523.132935 1535.330688 1550.139771 1564.061523 1581.864746 1591.676514 1598.704956 1604.299194 1609.547852 1612.105347 1614.218018 1625.795898 1635.668823 1645.058228 1647.629272 1634.41687 1620.959595 1610.200806 1601.835083 1589.733521 1573.465576 1570.356934 1569.398804 1570.62793 1571.708862 1570.796997 1565.325928 1559.435913 1550.826538 1537.401733 1527.486572 1510.71228 1512.699097 1517.421753 1519.439575 1518.741699 1520.092773 1527.064087 1534.40564 1537.597656 1537.608398 1534.788818 1528.216553 1522.896729 1517.561768 1517.075806 1522.755249 1534.775879 1530.300781 1522.532837 1513.478149 1508.782593 1506.077637 1498.814453 1488.603882 1477.380859 1469.634277 1458.988892 1448.286865 1435.583008 1421.861816 1413.370117 1403.029175 1395.029541 1385.321533 1377.328613 1376.973267 1377.323364 1379.939209 1381.88855 1382.070923 1382.3396 1380.383911 1374.385254 1368.06958 1365.029297 1368.620239 1368.005249 1362.912354 1361.270386 1371.217651 1378.945679 1382.908813 1381.853149 1377.223755 1378.7771 1378.061768 1373.505859 1366.081299 1375.447998 1382.909668 1389.586304 1399.109741 1405.463989 1407.770996 1405.016357 1402.025635 1410.786255 1416.307007 1418.401733 1420.409546 1422.755371 1424.686768 1422.51416 1417.434082 1409.439453 1401.385376 1398.435425 1417.248901 1418.417969 1416.007446 1410.756592 1404.848755 1400.606201 1395.875244 1391.083008 1390.019409 1390.275757 1390.555054 1390.517212 1389.670776 1388.088501 1384.956421 1380.681641 1376.521973 1371.098389 1365.201294 1358.547119 1352.885864 1365.049805 1369.27002 1370.355591 1370.501587 1369.601929 1367.515747 1365.436768 1370.703491 1376.144775 1377.959595 1390.085205 1393.288574 1386.084473 1379.487793 1375.796265 1386.900757 1393.159912 1404.460693 1418.414429 1425.404297 1429.431763 1434.456299 1439.446167 1441.408325 1441.158813 1441.147339 1441.614624 1440.516846 1438.781006 1440.445312 1439.743164 1440.397949 1440.118896 1439.577393 1437.644653 1431.676636 1423.003418 1416.409546 1416.217896 1420.555298 1430.998657 1429.671509 1425.667969 1418.742065 1410.328247 1397.991943 1383.532104 1365.914795 1347.346069 1322.267456 1308.261108 1301.212769 1297.536011 1302.393066 1307.466919 1316.639038 1333.761719 1355.431641 1369.218994 1359.162354 1350.164673 1350.517212 1355.650513 1363.547119 1368.569092 1354.783569 1349.20813 1344.369385 1340.988892 1350.079224 1357.258057 1364.914551 1383.776489 1411.781616 1434.944946 1429.18396 1418.23999 1397.463257 1375.403442 1355.771973 1337.779541 1328.98999 1337.9104 1345.529663 1363.376221 1390.093262 1414.174927 1413.93811 1410.213379 1407.046631 1405.729492 1404.019531 1399.372559 1391.109741 1382.697021 1368.455933 1356.290161 1348.729492 1337.0448 1325.614258 1313.828369 1317.305054 1318.219604 1315.331543 1317.0271 1324.501953 1325.780273 1326.131592 1342.044434 1357.368042 1349.879028 1336.777832 1326.799438 1318.240967 1310.649536 1302.362671 1291.842529 1291.782227 1281.440186 1278.800171 1275.305176 1272.051636 1270.526367 1268.16272 1261.647095 1254.843628 1248.858521 1243.359863 1243.276978 1239.938232 1240.016357 1248.374146 1258.746704 1264.539062 1270.146362 1276.843628 1285.881836 1292.494995 1297.099731 1298.163696 1307.472412 1321.835815 1331.516357 1331.216431 1326.645264 1321.400146 1316.94165 1310.394409 1304.226074 1297.212524 1292.432617 1292.34729 1289.596924 1309.119873 1304.808105 1297.004517 1292.501709 1290.359253 1287.182983 1282.295532 1276.081909 1268.026123 1267.123535 1265.143555 1256.484863 1244.471558 1238.049072 1232.018188 1228.305298 1237.430176 1245.821411 1259.739746 1272.077271 1284.045654 1293.972778 1301.860229 1313.252075 1323.77832 1332.91626 1336.11438 1336.450684 1340.095337 1341.593628 1342.028809 1344.62207 1349.429077 1353.308228 1359.176392 1365.367432 1369.009155 1370.714233 1370.331177 1367.22229 1364.338867 1369.68335 1382.132324 1391.781372 1402.419678 1410.085327 1418.23645 1426.412842 1432.241089 1437.085938 1439.224365 1440.244385 1439.409424 -1633.016968 1641.254517 1643.9198 1645.941162 1650.301147 1660.446533 1674.889038 1683.159546 1692.635498 1698.762329 1704.625366 1708.678101 1711.999268 1715.729492 1719.644043 1721.355225 1721.456787 1721.516113 1721.445435 1721.234741 1720.887085 1719.709961 1717.909302 1715.340942 1712.8302 1710.659546 1710.185059 1709.988403 1709.656616 1707.774048 1697.788696 1687.141602 1673.415039 1662.843384 1651.221069 1642.526001 1634.982544 1629.155151 1621.89563 1613.291626 1606.161987 1598.721924 1588.439087 1602.487183 1612.686646 1612.600952 1597.698242 1582.493652 1571.619751 1560.743408 1558.282349 1556.019531 1551.68396 1567.459473 1583.622192 1602.479004 1621.040894 1634.266602 1641.088989 1636.547363 1623.15564 1603.836182 1582.565796 1579.546265 1598.879761 1616.501343 1612.475342 1602.001465 1581.926025 1558.700195 1568.033203 1579.677734 1586.571533 1591.084717 1596.185669 1596.54895 1594.924438 1588.031006 1583.142822 1577.793579 1567.993774 1556.805786 1542.361816 1526.167847 1518.433716 1510.564453 1504.845215 1508.19043 1512.762451 1532.528931 1550.748169 1567.061646 1580.798706 1593.727539 1604.557617 1606.557129 1599.029541 1590.285645 1580.362061 1567.441162 1555.775635 1541.955322 1525.095093 1515.564331 1517.97876 1513.531494 1502.105103 1490.626099 1476.138306 1453.578491 1438.53772 1424.165527 1408.514038 1397.919312 1391.362793 1393.160889 1408.042358 1422.39917 1441.405273 1451.352051 1463.394165 1477.118652 1489.100098 1507.970093 1528.718872 1550.659424 1570.946045 1588.538696 1609.892334 1632.240601 1650.356079 1651.753418 1651.406494 1650.228638 1646.978882 1638.577515 1627.277954 1616.676636 1606.604126 1596.343018 1587.194702 1580.530884 1573.791016 1567.331055 1570.87439 1578.148926 1587.032471 1597.500854 1609.21814 1622.236816 1624.615845 1624.733398 1621.894775 1619.172974 1616.515137 1614.936646 1614.467773 1614.796997 1617.208862 1618.837524 1618.964111 1617.335327 1615.495483 1614.555542 1609.540161 1600.398315 1593.229858 1588.56897 1582.593018 1577.803589 1581.133179 1582.887329 1591.329224 1600.831543 1606.705322 1608.394043 1593.252441 1580.779541 1568.578735 1556.577026 1542.666626 1525.69104 1514.85083 1513.389893 1512.792725 1503.512329 1489.940796 1484.677002 1490.213379 1498.567505 1504.282837 1509.536377 1511.916016 1509.74646 1513.293945 1523.887817 1527.79834 1529.296387 1526.521118 1519.897583 1511.116211 1508.335449 1500.675903 1495.785645 1493.710205 1502.545288 1520.3927 1533.776245 1546.232666 1558.119507 1564.901978 1558.713623 1546.18811 1533.256714 1522.589966 1507.397949 1498.433228 1488.875 1480.181885 1473.839478 1467.922974 1461.355469 1452.834961 1451.222778 1454.413452 1455.949463 1452.791016 1444.433228 1446.920898 1452.042236 1459.097534 1467.240112 1476.159912 1489.151123 1496.344238 1501.524292 1506.138794 1514.074341 1525.424072 1534.6604 1538.498047 1540.828125 1541.16626 1537.245728 1531.316895 1523.838989 1512.658813 1503.379395 1497.031738 1487.733887 1483.014771 1477.392334 1470.423096 1464.096069 1458.674683 1453.062012 1447.026123 1440.0802 1430.83374 1420.019043 1405.761963 1394.3479 1397.081421 1414.170654 1419.57251 1417.954956 1412.975342 1429.535156 1452.141479 1472.254883 1474.779785 1477.5 1494.315552 1499.339966 1493.748657 1502.012817 1520.193481 1533.620117 1546.001953 1560.557739 1579.122559 1590.923462 1601.043091 1611.762817 1622.344238 1624.490601 1625.70105 1633.290771 1642.603638 1648.198242 1644.31311 1626.203247 1615.723267 1607.416992 1599.094238 1584.792358 1579.878906 1578.365967 1580.776245 1587.187744 1585.463501 1578.42688 1571.159302 1560.503418 1549.401001 1535.353027 1520.581421 1517.797852 1520.672119 1527.832153 1530.157959 1529.953979 1528.701416 1533.750244 1542.975098 1548.093262 1545.391113 1541.599976 1535.882812 1528.619751 1523.992798 1520.380859 1518.616455 1521.029175 1518.428833 1512.512817 1503.497437 1498.102295 1494.588257 1487.452393 1478.659058 1465.279907 1453.873047 1447.065918 1438.107666 1426.681763 1415.190308 1403.719849 1393.52832 1384.551025 1380.403809 1384.661987 1390.030762 1391.087036 1398.488403 1399.766479 1394.480225 1393.012329 1389.59375 1386.525879 1385.57251 1381.584595 1366.435913 1364.832031 1364.723999 1374.651733 1386.934326 1394.13269 1393.832764 1387.679077 1387.873657 1390.355225 1386.07605 1380.516235 1375.709961 1380.109619 1387.134521 1394.929932 1404.246826 1412.5896 1414.981079 1413.334106 1406.0 1411.725464 1416.393921 1419.293701 1421.927856 1425.300781 1427.676514 1426.157959 1418.61853 1410.695679 1401.769775 1400.125 1420.5177 1423.13855 1421.008301 1416.090942 1411.189575 1405.084106 1400.334717 1397.255981 1396.116333 1395.890503 1396.173462 1396.203735 1394.868042 1392.759644 1389.419922 1383.568359 1377.162231 1369.774048 1364.528809 1361.981812 1363.0177 1369.092651 1372.292114 1373.738281 1374.061768 1373.052612 1370.303833 1365.990234 1374.975342 1381.24292 1386.005615 1393.393433 1396.317749 1391.765137 1391.531372 1387.768311 1383.57373 1390.634033 1400.913086 1416.024292 1417.200928 1423.654663 1430.508789 1434.663696 1438.213135 1440.61853 1442.053955 1441.794922 1441.82312 1441.685303 1441.978394 1441.715454 1440.266602 1438.836182 1437.540771 1435.495728 1432.263428 1428.665161 1428.816528 1429.831299 1435.147217 1429.792847 1420.527954 1413.411377 1405.549438 1397.375854 1386.517212 1370.148438 1349.690674 1317.451538 1308.717896 1302.676636 1298.265625 1300.297729 1307.547974 1321.011597 1328.653442 1333.992188 1353.236938 1368.363159 1362.196045 1357.3302 1359.244629 1365.444458 1372.733887 1371.798218 1359.778687 1355.197266 1355.429443 1350.747681 1356.120972 1362.624634 1369.960083 1382.958252 1408.584106 1447.897339 1440.772217 1418.41333 1396.029907 1370.425537 1362.668457 1352.713013 1332.740723 1344.766113 1363.10083 1369.999146 1378.232544 1400.834717 1418.582764 1421.681274 1419.999878 1417.55127 1413.789062 1409.685669 1402.452393 1392.255737 1381.50647 1368.355225 1359.457031 1348.876709 1333.43335 1324.8479 1323.71228 1323.805054 1323.422729 1331.00354 1342.24939 1340.269287 1340.71814 1355.640869 1357.411743 1349.359985 1336.476196 1325.451416 1316.103516 1311.917847 1306.93689 1302.127319 1296.825928 1289.236206 1280.378906 1273.646118 1267.959106 1267.361084 1262.431641 1256.897339 1254.280273 1251.307861 1249.420288 1247.6073 1244.107666 1240.955933 1251.699951 1261.901855 1269.807983 1279.58313 1289.989014 1298.55542 1306.23999 1314.016846 1314.429321 1314.124023 1327.448486 1335.303223 1334.115479 1329.12207 1324.418091 1318.627686 1312.949219 1308.269775 1303.875854 1299.531372 1298.585571 1294.694214 1300.719116 1306.023071 1303.216064 1297.612061 1293.920044 1290.261353 1281.641846 1278.427124 1276.689575 1273.932373 1272.095703 1265.860962 1252.407837 1241.621094 1236.912354 1233.259033 1228.498291 1242.641968 1258.109009 1270.386841 1278.033081 1287.239746 1297.2229 1306.646484 1313.013306 1318.70752 1323.65918 1328.233521 1335.047607 1339.716797 1342.151245 1345.181763 1349.782349 1352.339844 1356.900024 1362.846191 1366.020874 1367.06311 1365.5271 1361.796753 1362.261353 1370.494995 1381.448364 1389.716187 1398.683716 1406.535034 1413.571777 1420.911987 1427.099243 1430.579834 1432.683838 1432.550659 1431.504395 -1623.954102 1627.675415 1631.067627 1633.098389 1649.478516 1665.37207 1680.465942 1686.287109 1691.232178 1695.963745 1700.989868 1705.620972 1709.008301 1712.564331 1716.517212 1719.753174 1720.557739 1721.227051 1721.446045 1721.293945 1721.03479 1719.962036 1718.051147 1715.941528 1713.92749 1712.223389 1711.418213 1710.582275 1709.302124 1705.072632 1693.628784 1683.048828 1669.546875 1661.038696 1650.155273 1641.935669 1635.594238 1628.610596 1622.004517 1610.930786 1602.033325 1594.969727 1604.631226 1613.873047 1613.612915 1601.979126 1588.041016 1573.263672 1567.097046 1564.518433 1568.850708 1566.771973 1559.574951 1561.040405 1576.97876 1592.915527 1613.888184 1633.12915 1649.875488 1637.301147 1623.891113 1598.62146 1582.232666 1595.690796 1605.183472 1623.962891 1616.521362 1605.029663 1580.989624 1563.902222 1581.05835 1591.592163 1597.87793 1604.008423 1608.993896 1606.819336 1603.783569 1599.124268 1590.748779 1585.450317 1579.114746 1569.641968 1557.403931 1542.819214 1530.881592 1521.967407 1512.831299 1505.784058 1510.283081 1525.295044 1540.571655 1554.870972 1571.334717 1585.287231 1595.36084 1599.050293 1592.618164 1585.187744 1572.476807 1558.289185 1548.630493 1540.647583 1527.46106 1532.266113 1528.765991 1521.355469 1509.182007 1493.242798 1478.79248 1454.185913 1441.770508 1427.385864 1411.00769 1399.081299 1393.140259 1391.371582 1402.19458 1418.453369 1436.504028 1446.969727 1460.955444 1476.546631 1490.141357 1506.415405 1524.571289 1539.765015 1563.19812 1579.694702 1595.308594 1616.106079 1633.180786 1647.593018 1653.077881 1652.289307 1650.158203 1643.302002 1630.753906 1618.148438 1607.354248 1596.386353 1586.552124 1581.578613 1575.923584 1569.92334 1574.734497 1582.346069 1591.51062 1601.134766 1612.220703 1631.088745 1636.056641 1634.769409 1628.565552 1624.061646 1621.092773 1619.978516 1619.343262 1618.674194 1618.693481 1619.102173 1620.05249 1621.777466 1623.13623 1623.127319 1618.791992 1609.034912 1598.203003 1594.566772 1594.182617 1592.168335 1588.023926 1587.268433 1593.148926 1597.875122 1605.448242 1609.913208 1593.978271 1583.132446 1572.335327 1559.023682 1546.182495 1526.864258 1520.228394 1518.694092 1515.588379 1505.927856 1492.2771 1485.309082 1496.986694 1505.989258 1512.768921 1517.151855 1518.643677 1516.370972 1523.725098 1534.911499 1539.036377 1540.635864 1538.952026 1533.216675 1528.936401 1523.557495 1515.766602 1503.974976 1498.801514 1495.159424 1500.673584 1517.797729 1531.985352 1546.098022 1555.892822 1555.84021 1550.439819 1536.719604 1525.022461 1510.788208 1501.529419 1491.209717 1482.411255 1475.041016 1468.104004 1461.852051 1452.991699 1457.150757 1461.785767 1459.089233 1451.528442 1446.672241 1448.813477 1453.684082 1460.615356 1471.219849 1482.723877 1495.813965 1506.103882 1516.036377 1522.350342 1526.464966 1532.434937 1539.31543 1544.741943 1549.044678 1552.223755 1550.982788 1542.330688 1534.030029 1524.42749 1515.751587 1504.930298 1494.521606 1486.259155 1479.117065 1468.925659 1461.401001 1457.016724 1452.283447 1445.605713 1439.432617 1426.250366 1418.080078 1405.081543 1394.39978 1397.948486 1418.364014 1428.380981 1428.699707 1417.830688 1426.104614 1446.237793 1469.429443 1490.538818 1495.674316 1511.265625 1526.706421 1529.25061 1523.983521 1521.690308 1532.462769 1545.338135 1558.537476 1573.230957 1589.077271 1599.671509 1617.127441 1626.20459 1631.309082 1635.505249 1644.696777 1648.927002 1650.238647 1641.416504 1625.797241 1615.11792 1607.612671 1602.283325 1597.702637 1592.546997 1589.222534 1589.692749 1588.432373 1585.276001 1577.672852 1568.072632 1554.856567 1543.433228 1530.499023 1517.794312 1525.468628 1529.843384 1535.299805 1539.162598 1539.668579 1537.774658 1535.01355 1550.800049 1553.804443 1551.090332 1546.179565 1538.976196 1532.144165 1526.185425 1520.097778 1512.930298 1509.849854 1505.829468 1500.820923 1496.331665 1491.986572 1487.406494 1478.666748 1469.473145 1457.516113 1442.956787 1434.359131 1425.316162 1418.271606 1407.801025 1397.477051 1388.477051 1381.073853 1385.873169 1392.483887 1399.705444 1406.574341 1412.339844 1417.246704 1412.206909 1404.776978 1397.101196 1397.957886 1403.123779 1396.465942 1385.915649 1382.494629 1381.726318 1393.346924 1401.202393 1407.915161 1403.932983 1389.674805 1397.22876 1400.363525 1391.620483 1383.474731 1377.008667 1383.318726 1390.831177 1401.0625 1414.408447 1419.173096 1420.539429 1418.576416 1413.461792 1413.479492 1416.024048 1419.522705 1422.312134 1425.080933 1427.555054 1426.662598 1421.317505 1416.77002 1407.307861 1403.272827 1419.123291 1428.11853 1427.373047 1422.618652 1418.139771 1412.803223 1406.289185 1402.845337 1401.898315 1401.787842 1402.717163 1402.576538 1399.837891 1395.150879 1390.991699 1384.567505 1378.436157 1366.432251 1364.848633 1366.56189 1370.194092 1373.435669 1375.906006 1377.248657 1378.095947 1376.813354 1373.635498 1373.050659 1377.822388 1384.242188 1390.194702 1399.317993 1402.17981 1401.158569 1398.899902 1395.408691 1392.634399 1390.273438 1390.422852 1402.311768 1405.768188 1415.606079 1423.574951 1428.567505 1428.245239 1434.903809 1440.163208 1441.662964 1441.779053 1441.888428 1441.869263 1441.991089 1440.416138 1438.230469 1436.793823 1434.897339 1432.464966 1430.395508 1430.621948 1434.576294 1440.685303 1425.281738 1407.38562 1392.709351 1387.71106 1381.256592 1368.158813 1349.61853 1317.849487 1309.809326 1303.963745 1299.390869 1298.860718 1303.394043 1315.060303 1327.550781 1333.640137 1339.687866 1351.46167 1368.974121 1365.829956 1367.362671 1368.550171 1374.240479 1383.886719 1377.866455 1362.150391 1360.90686 1361.592407 1360.226196 1363.118652 1367.55481 1373.09314 1381.136475 1397.538208 1449.047852 1439.288452 1414.87793 1393.233154 1380.940308 1375.046387 1360.794434 1337.803711 1352.544434 1369.111694 1382.773071 1393.628906 1400.651245 1415.104736 1430.441772 1430.477173 1428.373657 1425.097534 1420.126343 1412.807983 1405.472046 1394.740845 1375.293335 1363.440674 1354.582642 1343.760132 1334.410278 1331.734985 1329.405518 1329.190063 1344.86853 1352.963745 1352.235229 1354.487793 1356.739746 1351.156494 1342.348022 1330.552979 1324.937012 1327.828979 1326.493774 1318.364624 1308.370605 1298.831665 1291.075684 1281.583008 1274.260986 1268.318115 1264.858521 1259.144043 1256.019531 1254.714722 1256.320801 1257.370117 1254.137451 1246.982544 1242.120728 1253.836792 1265.882568 1279.441895 1289.433594 1298.464966 1310.983032 1325.862061 1330.565186 1330.604858 1326.395508 1333.369263 1341.990479 1337.78064 1332.77478 1328.297729 1321.203857 1316.00769 1311.253418 1305.867065 1304.982056 1306.160278 1302.102417 1301.750488 1305.946533 1306.302979 1302.878174 1297.818237 1294.273682 1288.789673 1284.298828 1282.536987 1279.420288 1274.50769 1269.420044 1259.789185 1247.236572 1240.647705 1235.303589 1230.700562 1235.868774 1251.795166 1264.435791 1276.12085 1284.13623 1291.697266 1298.576294 1304.799072 1311.454956 1319.985352 1331.619629 1336.513794 1341.786987 1344.798584 1347.537231 1350.900391 1354.043457 1356.925903 1360.143555 1362.442261 1362.097412 1359.318237 1353.45874 1360.001831 1370.100708 1379.533203 1386.925659 1394.621338 1402.139526 1408.747437 1413.837769 1419.911133 1423.546631 1425.027954 1424.92041 1423.807007 -1607.547363 1614.807129 1618.806274 1633.409912 1652.96167 1669.783936 1686.326904 1693.011108 1691.554321 1693.308594 1697.006226 1701.318237 1704.557983 1707.935791 1713.022705 1716.49353 1718.234741 1719.778687 1721.387207 1721.258545 1721.000366 1719.950195 1717.744995 1715.970581 1714.331543 1712.552124 1711.508179 1710.227905 1707.349609 1698.57959 1687.862305 1677.27124 1667.050903 1658.683472 1648.53479 1641.145142 1634.912964 1627.409424 1619.048096 1607.831055 1601.010864 1607.664917 1614.580322 1614.280884 1602.198486 1588.582397 1578.315796 1576.910034 1582.047607 1581.748901 1581.294067 1577.493286 1568.955688 1559.489746 1575.14917 1589.039795 1610.690552 1628.601807 1640.183594 1632.523926 1618.605469 1594.554443 1608.139893 1613.486084 1619.579468 1626.552124 1619.840942 1607.619141 1577.82019 1576.834473 1592.823608 1606.888794 1615.195923 1620.317139 1624.272705 1617.725464 1610.640503 1604.003784 1597.48291 1592.23999 1588.623047 1581.939575 1567.630127 1554.435425 1540.438477 1529.931519 1518.798584 1509.108521 1508.007324 1517.460815 1530.74585 1546.450073 1563.958984 1576.491699 1586.78186 1590.958252 1585.786621 1577.490479 1569.835693 1565.037109 1560.259277 1553.8125 1549.567627 1544.025757 1536.738159 1521.653198 1507.655762 1491.858276 1474.52063 1459.480347 1442.755371 1428.209961 1419.256592 1400.703735 1394.968872 1390.761597 1400.374878 1413.750977 1428.949585 1443.557739 1456.359619 1475.232178 1488.300781 1504.906494 1518.878296 1531.755615 1547.690186 1571.102295 1580.623413 1595.618042 1610.366943 1629.157104 1645.519653 1651.460938 1650.754272 1646.710449 1633.264526 1623.19812 1611.93457 1601.99292 1592.783447 1585.384155 1577.548706 1571.945435 1577.109131 1584.891846 1593.20752 1602.077271 1611.258911 1633.606445 1636.420288 1636.265015 1633.770752 1628.827637 1625.127075 1624.209473 1623.53064 1622.273438 1621.284668 1620.659546 1621.92334 1623.663086 1625.165405 1625.413574 1624.02417 1618.944092 1607.066406 1603.753418 1604.43396 1602.582153 1599.135864 1598.919189 1600.031494 1601.011108 1603.295654 1601.112183 1592.817871 1583.317261 1573.608521 1559.95874 1545.265015 1527.834106 1524.821777 1525.084351 1517.988525 1507.175903 1493.622192 1486.918335 1502.014404 1511.464355 1521.059204 1525.711792 1526.673584 1524.581177 1533.720947 1544.966064 1549.868164 1553.671997 1550.678833 1544.663574 1540.577515 1536.478149 1527.387817 1516.79126 1509.85437 1499.990845 1496.799316 1498.710083 1514.411865 1531.597778 1544.389526 1548.962158 1546.377686 1536.838989 1524.967285 1513.120361 1502.216919 1491.571899 1482.835083 1475.182373 1468.105957 1461.888306 1461.385132 1464.643677 1465.439941 1463.567627 1454.888184 1448.850464 1451.296997 1456.966797 1462.905029 1472.919189 1484.03064 1499.7771 1510.995117 1525.60498 1528.702759 1531.721924 1536.414185 1543.538818 1551.069336 1560.006592 1566.273438 1564.979736 1557.881958 1549.760986 1538.145508 1524.331543 1513.365234 1501.028076 1491.650757 1480.613281 1467.909912 1459.817749 1453.178833 1447.552734 1440.047119 1427.620361 1416.900513 1412.127441 1404.479248 1395.786743 1396.630859 1417.419189 1431.516235 1434.806519 1423.791992 1431.262939 1449.243408 1470.545532 1492.193237 1505.315186 1517.030396 1528.573486 1534.056274 1538.837524 1533.215088 1539.266724 1546.370605 1559.760254 1577.176147 1589.600708 1601.536377 1617.267822 1627.301147 1635.83728 1641.420166 1648.187134 1648.937988 1648.120117 1644.167358 1637.291504 1627.964722 1616.177856 1609.788818 1604.990601 1600.506836 1597.113159 1592.630371 1586.00769 1581.160645 1572.06958 1560.217651 1545.925171 1536.049683 1525.053467 1522.098389 1533.046753 1538.19104 1541.852173 1547.268433 1549.786011 1548.115723 1543.969971 1551.018921 1559.929321 1559.768311 1552.356323 1542.924561 1533.873779 1527.055054 1521.47644 1516.096924 1509.158569 1503.099365 1498.05481 1493.679443 1486.594238 1480.014038 1473.256958 1463.271729 1453.825562 1440.630615 1429.028442 1417.906372 1407.555298 1398.65625 1391.886963 1384.70459 1384.26062 1390.500244 1396.082275 1404.191284 1416.037598 1422.999634 1426.395996 1423.643921 1415.084961 1400.35498 1406.061401 1415.613037 1409.323975 1398.945435 1395.877197 1400.705078 1408.575806 1418.044678 1418.999268 1405.154053 1401.151855 1409.259399 1409.069702 1400.874023 1386.036011 1382.497559 1389.025391 1398.678711 1411.305664 1419.626221 1424.637573 1427.289429 1425.365967 1420.241577 1415.898682 1415.650024 1420.251587 1422.996094 1424.893311 1426.266724 1426.129517 1425.48877 1421.812012 1413.514771 1411.488525 1419.540283 1425.198608 1429.385986 1428.360352 1424.622803 1419.156128 1413.59375 1410.730713 1410.903687 1411.491211 1408.917114 1405.520752 1402.074951 1395.248535 1388.811035 1382.519165 1373.354858 1365.525757 1369.125244 1374.149536 1377.976562 1378.979126 1379.44397 1380.262573 1380.477417 1379.427612 1377.197266 1376.204346 1378.067505 1386.568726 1394.761963 1403.589233 1405.836914 1407.442383 1407.032959 1403.387085 1402.557251 1401.478638 1395.734497 1395.774292 1399.743042 1402.222046 1402.781494 1415.293579 1427.103882 1435.139648 1440.903442 1441.432373 1441.431274 1441.569946 1441.995361 1441.737305 1440.870361 1439.134155 1437.208008 1435.204224 1431.998047 1427.300415 1428.99585 1431.936401 1430.741943 1421.279297 1398.31604 1375.130127 1354.582886 1350.872803 1344.177124 1314.130005 1309.17627 1305.802612 1300.241333 1299.209106 1302.455933 1305.690796 1316.784424 1329.44397 1336.550293 1339.058472 1346.47522 1357.233032 1367.710815 1374.736816 1375.842041 1384.14209 1396.432129 1383.877441 1370.724365 1364.547119 1368.00061 1369.929932 1371.126953 1374.081909 1376.973999 1382.479858 1390.446777 1424.499146 1431.258911 1412.423218 1406.62085 1397.81958 1381.808838 1365.874268 1343.952271 1352.106812 1369.275391 1388.822754 1398.894531 1409.361816 1419.775635 1431.578247 1441.744141 1437.53479 1433.228882 1429.237061 1421.097412 1411.747681 1402.145264 1380.483154 1366.517456 1361.018188 1353.954102 1342.320679 1339.527466 1337.166748 1337.862305 1359.694702 1370.006836 1368.241699 1363.585938 1355.140747 1344.21228 1339.293945 1340.412231 1343.802368 1338.503052 1331.155396 1321.484985 1308.983643 1297.89624 1289.370361 1282.336182 1276.824097 1269.05835 1266.341064 1263.375 1261.72998 1262.540161 1263.607056 1262.812012 1259.344482 1251.859863 1244.120361 1256.576294 1270.240845 1287.198608 1299.576294 1308.108521 1329.936279 1341.50415 1345.303223 1345.612671 1343.999756 1345.841797 1345.549194 1341.023071 1336.080688 1330.772217 1324.581787 1319.325317 1314.789673 1309.223633 1309.316284 1308.657837 1305.218872 1304.105591 1306.618164 1307.434448 1305.165527 1300.304321 1296.347412 1291.609863 1286.577148 1283.925781 1280.875122 1275.432495 1271.656738 1268.516479 1255.034546 1242.440552 1236.27356 1231.865601 1239.655762 1253.363525 1261.893921 1269.083374 1273.762207 1279.286499 1290.038452 1301.41394 1310.88269 1321.824829 1331.419434 1337.871094 1342.820312 1345.005859 1347.684326 1351.142944 1354.349121 1356.177246 1356.902344 1357.856934 1357.393188 1354.692261 1352.921631 1358.729126 1368.702637 1377.480713 1383.806885 1389.584473 1396.905518 1403.525269 1408.242188 1412.476562 1416.526123 1417.965454 1417.992798 1416.721558 -1596.15564 1601.0625 1620.453003 1639.308228 1661.511108 1678.451904 1687.619751 1696.207031 1690.550781 1690.386841 1693.604492 1696.164185 1703.17627 1708.142944 1711.70752 1715.198608 1717.737183 1720.164185 1721.213013 1721.306763 1721.038208 1719.770264 1717.619995 1715.894653 1713.750488 1711.80249 1710.277222 1708.286133 1700.598389 1690.572266 1680.829956 1673.147339 1664.003906 1655.407715 1646.10498 1639.321777 1632.94751 1624.27002 1610.398193 1606.024414 1618.772339 1625.482788 1620.43811 1603.437622 1587.275146 1585.148071 1596.838135 1600.693726 1599.106445 1596.953003 1593.273926 1588.955688 1580.849609 1566.178833 1574.725098 1593.119873 1613.987305 1628.399658 1637.501831 1627.855591 1611.382568 1611.418457 1618.975098 1622.566528 1630.176392 1631.665283 1620.177612 1606.982788 1580.141602 1588.776733 1605.367432 1625.317993 1633.043945 1636.579224 1634.578003 1627.332275 1617.475952 1608.624512 1601.965576 1596.572998 1592.467407 1588.246338 1574.283203 1559.259033 1548.392822 1537.459717 1524.305054 1514.849121 1508.009399 1512.641724 1529.328491 1548.532959 1565.474121 1577.516235 1586.060913 1587.736816 1585.121338 1581.88855 1577.845337 1574.268188 1568.132568 1562.599976 1555.77356 1549.200928 1536.741577 1523.351196 1510.235474 1494.644165 1478.342773 1465.106323 1447.94043 1432.453247 1421.286987 1406.616333 1397.377808 1392.031738 1399.61731 1415.035034 1429.421875 1442.049927 1454.914795 1472.760254 1484.470703 1499.650391 1512.902466 1525.00415 1535.297241 1551.575562 1568.655273 1578.653687 1595.501709 1612.970215 1628.410522 1642.872437 1650.174438 1649.126953 1639.329346 1630.229492 1621.976318 1610.791626 1601.044678 1591.935913 1582.504028 1574.131958 1581.167725 1588.416504 1593.88208 1601.015137 1608.066772 1629.245972 1635.589966 1635.463989 1634.543701 1631.4198 1629.526855 1628.260254 1627.105347 1625.635254 1624.403931 1623.985962 1624.70459 1626.055664 1627.212158 1627.617676 1626.637207 1624.28186 1620.866821 1617.483643 1613.449097 1608.720581 1605.744751 1605.426025 1605.649536 1606.957153 1604.786743 1598.606689 1591.460205 1582.34314 1573.081055 1558.761108 1544.437012 1537.60083 1537.97229 1530.06311 1519.58313 1507.850098 1493.758423 1491.150146 1505.162109 1518.292114 1527.574585 1532.017456 1536.459106 1539.237427 1544.025146 1555.012085 1563.731079 1565.74231 1564.344482 1557.996094 1551.889404 1547.411499 1540.574707 1529.625488 1519.692871 1510.2323 1501.052368 1498.62915 1498.432495 1514.999023 1529.203125 1535.816284 1536.074585 1531.473511 1523.737183 1513.485962 1501.979736 1490.390015 1482.15686 1474.846436 1467.986572 1463.21875 1464.184204 1466.765747 1466.682495 1465.246094 1458.767334 1451.290527 1457.069336 1463.781128 1471.529053 1473.139404 1481.749023 1495.485718 1508.380249 1525.123169 1529.904175 1534.660645 1539.919312 1547.152344 1561.547363 1571.94458 1583.033691 1581.242188 1574.154419 1562.631348 1552.921509 1536.86084 1525.351074 1513.067993 1496.696777 1484.518677 1470.965942 1460.119263 1449.78894 1441.93811 1429.392578 1423.40332 1416.992676 1413.835815 1405.360107 1398.749634 1395.29834 1414.509888 1429.4823 1441.584351 1438.69397 1432.188721 1450.236328 1466.875122 1484.230469 1499.641479 1510.023682 1525.220093 1531.68811 1538.400757 1539.911377 1544.616577 1555.69397 1567.498413 1581.540405 1592.634888 1606.204102 1617.901733 1625.080811 1630.919067 1636.591675 1643.031616 1644.612915 1639.653442 1636.207153 1637.207397 1634.327515 1619.681885 1613.106689 1607.114014 1600.274902 1598.01001 1592.634644 1586.226074 1580.511475 1572.866577 1557.483643 1544.019653 1532.528809 1523.387451 1528.417725 1538.844727 1545.097412 1548.625488 1556.041626 1560.473755 1560.764893 1552.085205 1554.414185 1563.384155 1563.940063 1557.082031 1546.749512 1537.78125 1534.184448 1527.583618 1524.270996 1518.317627 1512.897949 1505.803589 1497.386597 1488.678955 1480.219238 1475.619019 1465.00708 1450.059082 1435.883301 1424.848877 1414.538574 1400.271973 1392.518677 1386.410278 1382.976318 1391.955322 1396.508179 1399.007812 1405.023682 1420.324097 1432.002075 1438.621948 1432.613037 1422.370605 1405.243774 1416.052734 1422.820923 1419.062866 1409.641479 1408.722046 1415.732056 1422.457642 1432.076416 1427.209106 1409.564453 1413.126465 1422.216431 1415.955444 1403.222168 1387.442505 1386.914062 1393.976318 1406.354126 1417.026978 1424.321777 1429.686768 1431.912598 1430.691528 1426.515869 1421.61438 1420.196899 1421.841919 1423.942505 1425.954346 1427.71582 1429.133789 1429.335205 1427.484131 1415.685181 1417.794556 1424.783081 1425.313965 1430.528198 1433.075684 1430.387695 1425.531372 1420.27124 1417.666626 1417.602539 1416.686523 1410.931274 1403.57373 1397.922607 1391.635132 1382.054443 1377.692871 1373.781128 1372.011841 1376.607422 1379.849243 1381.272583 1382.119019 1382.763794 1382.886475 1382.639893 1381.303467 1378.965454 1377.099976 1379.379272 1389.200073 1395.7948 1402.729736 1406.379761 1411.462158 1415.769653 1415.450195 1413.212158 1413.536499 1409.123901 1405.319824 1406.137939 1409.526245 1415.049927 1418.233521 1429.848877 1437.151123 1441.114746 1441.223145 1439.709595 1439.408813 1440.084839 1441.398193 1441.175171 1440.307861 1438.786377 1436.20166 1432.453003 1428.181885 1422.293091 1424.806641 1421.362915 1411.262451 1393.234497 1373.367798 1349.646362 1331.666748 1319.93811 1304.836182 1305.54834 1302.339966 1299.44519 1304.961304 1309.166992 1313.512085 1321.587402 1333.969971 1342.583984 1342.574951 1340.684814 1347.004517 1366.993652 1380.683716 1384.384155 1392.638428 1401.235718 1393.356323 1383.903687 1376.29126 1373.644897 1376.598145 1378.998169 1381.419434 1384.428345 1387.904663 1394.129639 1413.977051 1428.558472 1423.969849 1417.563232 1406.214233 1385.182617 1367.402466 1351.338257 1347.984741 1365.857666 1381.8573 1397.091309 1407.862671 1418.064819 1431.611572 1442.342773 1443.364258 1439.345825 1435.012085 1428.533325 1417.197021 1404.046021 1389.45874 1377.140747 1366.668335 1356.523682 1350.109741 1349.065552 1346.861694 1348.169678 1377.869507 1382.892456 1374.6875 1364.337524 1353.220947 1352.943115 1352.943115 1355.897095 1352.238159 1342.402832 1328.189209 1315.47998 1305.567627 1299.296509 1293.643311 1287.849976 1282.963013 1275.60498 1269.453247 1266.814819 1269.536621 1271.352295 1271.173828 1269.86145 1265.399414 1256.509277 1247.543213 1257.909424 1271.729004 1292.280884 1312.759521 1325.677368 1343.320068 1351.939697 1355.393677 1355.49707 1354.162231 1352.84668 1349.871338 1343.906616 1338.081421 1331.868896 1326.197388 1320.693237 1315.907104 1315.215454 1317.168091 1312.797729 1306.123901 1305.1521 1309.215698 1309.131836 1306.233521 1301.68811 1295.674683 1290.877808 1282.819336 1281.233032 1278.200195 1272.275269 1269.127197 1264.332886 1253.703003 1243.2771 1237.662476 1232.081543 1238.509155 1248.697876 1255.849609 1261.739746 1270.466675 1281.156006 1290.966309 1302.825806 1311.732666 1323.905151 1331.922607 1337.628174 1341.726929 1343.533691 1346.135986 1349.103882 1352.410156 1353.616699 1353.231445 1353.64209 1353.380249 1351.517822 1352.031494 1357.477905 1366.176025 1373.690308 1380.069336 1385.069946 1390.200073 1397.322266 1402.14856 1405.784668 1409.304321 1411.0802 1411.006104 1409.346924 -1594.965576 1608.913574 1624.594849 1644.976562 1666.634766 1675.710449 1681.010254 1684.666992 1685.320679 1686.780151 1691.00354 1695.151611 1702.367432 1708.452393 1711.411133 1714.664307 1718.258057 1720.561523 1721.31665 1721.440186 1721.164551 1719.627075 1717.692139 1715.911865 1712.948853 1709.763428 1707.54895 1700.237671 1691.857788 1682.346313 1675.822144 1668.643188 1659.961548 1650.871948 1643.087036 1636.396729 1627.256348 1618.828247 1612.399414 1624.136597 1629.128784 1628.178833 1612.993896 1595.089233 1603.852173 1609.802856 1617.397583 1615.39624 1610.78186 1605.921387 1601.823975 1596.505005 1589.60376 1575.157837 1570.730347 1594.048218 1616.751099 1631.98938 1636.225708 1624.899536 1614.19751 1622.656494 1629.171387 1633.03186 1639.855957 1633.045654 1618.386963 1597.90918 1588.452148 1604.598633 1621.953125 1638.110107 1644.469971 1646.880127 1643.371826 1635.94104 1623.81897 1612.549194 1605.252686 1599.194946 1594.300049 1589.164551 1577.699219 1565.450562 1554.144897 1543.056641 1529.703735 1517.532715 1509.716187 1512.827759 1527.523438 1549.366577 1566.983521 1579.867676 1589.175171 1591.735107 1590.532959 1588.086548 1584.483765 1578.760742 1573.857544 1566.258179 1558.890625 1550.865967 1532.632446 1518.217041 1505.898071 1491.089722 1474.313965 1458.83606 1445.027222 1430.651245 1421.28125 1409.822876 1398.468506 1393.040283 1399.622559 1416.971802 1431.208496 1442.649048 1453.052124 1468.31543 1481.048462 1492.558228 1503.842896 1516.548462 1525.35791 1534.171387 1550.074829 1563.973633 1582.77478 1594.25415 1606.289917 1631.955566 1647.195312 1650.335449 1647.368774 1637.696289 1628.297974 1618.108398 1608.575439 1598.191772 1585.976318 1580.682739 1583.506714 1588.631836 1594.452881 1601.37561 1609.829224 1623.835815 1632.04834 1634.414062 1634.393921 1633.137207 1632.800415 1631.929443 1630.821289 1629.460571 1628.767212 1628.48291 1628.455444 1628.687378 1629.512573 1630.641846 1630.956421 1630.106567 1627.974976 1625.636963 1621.524048 1615.181152 1610.941528 1610.134766 1611.064209 1611.368896 1609.31958 1600.363647 1592.175049 1582.401245 1568.423584 1555.075195 1549.184814 1548.860962 1542.103516 1531.409424 1519.533081 1506.78064 1496.36377 1496.393555 1508.866333 1523.435181 1531.795776 1537.522705 1545.25708 1549.593872 1553.324463 1561.192261 1570.578003 1575.349731 1576.285522 1571.390137 1564.014282 1557.941772 1550.853271 1540.21228 1526.923218 1519.726196 1515.5177 1511.780884 1505.993408 1502.637451 1515.569702 1522.473267 1525.86853 1525.332031 1520.133667 1511.725464 1498.911011 1487.756836 1481.89624 1474.3396 1467.420044 1463.544434 1466.290039 1468.478394 1467.976929 1465.850098 1460.714111 1453.906494 1463.935913 1476.130493 1482.884766 1478.783691 1480.757324 1489.157471 1501.722534 1518.371582 1527.251221 1537.014404 1542.757202 1551.88855 1567.275879 1580.42749 1589.175293 1587.574097 1576.99353 1566.983643 1556.217163 1543.177979 1532.803467 1521.45874 1500.211914 1485.148926 1469.630371 1458.463989 1450.381836 1442.695312 1440.853516 1434.688843 1428.174438 1420.273926 1413.621216 1405.575562 1395.604614 1410.57605 1423.26709 1438.542603 1443.297852 1437.453247 1445.372559 1459.28418 1472.914917 1481.783325 1494.341675 1508.867188 1525.263306 1532.828613 1538.378784 1543.854126 1552.827148 1564.682983 1575.103638 1590.025513 1600.572144 1610.432373 1615.88623 1621.065308 1631.012207 1637.27417 1637.395142 1628.729614 1624.056885 1625.618652 1623.631104 1616.94397 1611.731079 1598.580566 1594.136963 1592.349487 1591.112427 1588.322021 1585.193604 1572.566528 1559.515747 1545.196655 1531.428345 1525.459961 1533.713135 1542.38562 1552.114746 1562.521973 1566.941772 1569.915283 1568.138306 1564.268677 1560.27356 1564.945068 1565.700684 1559.133667 1547.627563 1543.996338 1540.748779 1538.231445 1533.678467 1528.969971 1525.066406 1515.399292 1502.557861 1488.94751 1474.442749 1463.832031 1455.327393 1441.991943 1430.196533 1418.395386 1408.276123 1397.70752 1387.981934 1384.515015 1389.161865 1398.278687 1405.040527 1406.440552 1406.43042 1421.161499 1437.270264 1444.602417 1440.985962 1429.516602 1414.693604 1421.390991 1429.91748 1429.58313 1421.825684 1418.403687 1431.687744 1440.006226 1444.3573 1433.663574 1416.374268 1434.179077 1435.574829 1421.497559 1404.779541 1387.94812 1391.157227 1403.151855 1413.803711 1422.083008 1429.788452 1437.100098 1438.621582 1435.557495 1430.137939 1425.866211 1424.097778 1423.951416 1424.915283 1427.70459 1431.619507 1433.604126 1433.844727 1430.714111 1423.50769 1429.131104 1431.229004 1432.908691 1436.913696 1438.625488 1439.010864 1435.337402 1426.325439 1424.333496 1419.638794 1415.560791 1408.760498 1400.702026 1390.549561 1379.216797 1377.58313 1377.922363 1378.156616 1376.464844 1379.385498 1382.148438 1383.692139 1384.960083 1385.905518 1386.249268 1385.789429 1384.016724 1379.555054 1377.547241 1381.529175 1388.922241 1394.270264 1398.313354 1401.643555 1408.294312 1414.337036 1416.751709 1418.221436 1419.380005 1419.65686 1415.727539 1417.178833 1421.792114 1424.857666 1426.625732 1430.865845 1438.117798 1440.988892 1440.555298 1437.536377 1436.36377 1436.019287 1439.722046 1441.158081 1440.71582 1439.963135 1437.89978 1433.735962 1429.936768 1421.953857 1406.120605 1400.870728 1397.44397 1384.318848 1365.355957 1346.340576 1328.032837 1315.005859 1307.008667 1305.215088 1300.157959 1301.816895 1308.347656 1316.47168 1320.931763 1325.559692 1334.877808 1343.112549 1346.063599 1347.342529 1347.08252 1358.824951 1376.439941 1392.153076 1398.762329 1406.256592 1397.902832 1390.371216 1381.096313 1379.802612 1384.407227 1387.833496 1391.793823 1396.241943 1404.474121 1414.771729 1426.310913 1429.411865 1421.961304 1414.980347 1404.785889 1387.317993 1372.899902 1359.685303 1347.584839 1361.438843 1375.711304 1388.643677 1403.112427 1412.287598 1428.310791 1438.119385 1447.87207 1451.702148 1443.30896 1436.112305 1428.943237 1417.490356 1402.940918 1389.307861 1372.496582 1361.223755 1360.431641 1359.318726 1359.332031 1378.226807 1396.048218 1392.880859 1377.128662 1364.586304 1362.978394 1366.529541 1366.82605 1363.538086 1356.080933 1340.410156 1329.784058 1322.223022 1310.897949 1302.760498 1297.331909 1291.934082 1285.635986 1280.252319 1275.159058 1273.56958 1276.324341 1276.849487 1276.456787 1274.916382 1271.208252 1261.185791 1252.719116 1254.197998 1270.394409 1296.720825 1317.352173 1334.198486 1349.682007 1361.3927 1367.447998 1368.87146 1366.664917 1360.595947 1354.887573 1346.745239 1339.447266 1332.673096 1327.331543 1323.036255 1318.18042 1318.117554 1319.2771 1316.143921 1307.032837 1307.36438 1313.619019 1312.203369 1308.320679 1305.04541 1298.087646 1293.36499 1282.662964 1281.239136 1278.310669 1268.752441 1266.269165 1258.387573 1255.344604 1245.2854 1239.637817 1232.899658 1236.722168 1242.447388 1251.565674 1260.717285 1270.67627 1280.902588 1290.010864 1301.027832 1309.836426 1322.085571 1331.634277 1335.556885 1339.514404 1341.969116 1344.134033 1346.165283 1348.51355 1350.379883 1350.127075 1349.172485 1346.985718 1346.219116 1349.964355 1355.001953 1361.40332 1367.8479 1375.464233 1380.835571 1386.067017 1391.290649 1396.119629 1399.423462 1401.915771 1403.087524 1403.362183 1402.296509 -1596.672119 1609.353027 1625.199097 1643.067627 1659.789062 1658.021729 1665.340332 1671.486206 1677.067627 1681.262573 1688.467285 1696.918579 1702.25708 1707.299927 1710.231445 1713.85791 1718.324463 1720.598999 1721.442993 1721.740479 1721.698975 1720.341797 1718.994873 1716.664062 1712.406006 1708.387695 1701.792236 1691.226074 1682.092651 1676.388306 1670.803101 1663.88855 1655.783447 1646.568481 1639.003052 1631.932861 1622.830933 1624.125488 1632.194336 1637.273438 1628.854492 1618.221069 1606.025269 1616.135498 1625.197754 1633.031128 1633.498413 1628.787476 1622.317749 1613.376343 1606.651245 1600.94043 1593.052368 1579.371704 1570.867798 1592.342041 1617.608643 1635.769043 1638.892212 1632.383545 1620.950317 1633.94873 1645.384399 1650.646362 1647.250244 1630.708496 1616.587524 1594.174072 1606.876343 1620.153931 1636.346802 1645.585327 1655.422485 1656.903809 1649.01355 1640.393433 1629.228882 1616.102417 1607.179932 1601.102783 1595.433472 1589.052368 1580.950684 1571.043701 1559.163208 1543.463135 1529.473145 1517.005981 1509.522095 1518.095581 1532.519775 1546.673218 1565.127563 1582.875488 1594.459351 1598.131348 1596.07666 1592.469727 1588.362427 1582.26355 1574.82019 1565.177979 1556.37915 1540.180176 1520.439209 1508.893799 1494.933105 1478.878906 1459.737671 1449.685303 1437.123901 1427.725708 1420.572021 1409.843872 1399.206543 1393.852783 1401.023315 1416.006958 1428.899658 1441.644653 1448.724487 1463.044189 1475.285522 1484.474365 1492.888672 1502.035156 1513.796143 1523.252441 1542.524658 1555.283569 1570.198364 1586.277588 1608.92688 1634.709839 1647.071045 1651.703247 1650.698242 1643.080566 1634.567139 1622.049316 1612.837891 1603.202759 1587.588989 1584.123535 1587.789307 1592.893311 1596.936523 1602.890747 1610.298096 1625.307495 1631.147705 1634.314209 1636.072754 1636.590576 1636.581543 1635.688599 1634.39624 1633.131104 1632.874756 1632.416138 1631.747437 1631.041992 1631.505127 1633.405518 1634.792603 1634.966187 1633.78894 1630.329468 1625.838989 1622.091553 1618.456055 1615.0 1613.575684 1613.063354 1609.327148 1599.446899 1589.81897 1578.320312 1566.497314 1562.95105 1558.827881 1554.564453 1545.594482 1532.77063 1520.485718 1509.091187 1497.630737 1497.804077 1511.821045 1526.05835 1535.897095 1547.27771 1558.981689 1565.640137 1567.157349 1568.792969 1579.015991 1591.225586 1592.242676 1581.037598 1574.69519 1567.037476 1558.890259 1546.667358 1538.140015 1536.605469 1530.016113 1522.098022 1516.310913 1508.655273 1503.000977 1513.452515 1517.840698 1520.693359 1515.050659 1507.183472 1497.361572 1491.125366 1484.503784 1476.219482 1471.810425 1469.501587 1471.629639 1471.487427 1468.942261 1465.637329 1461.090088 1458.42749 1468.683838 1479.771118 1491.291504 1495.437256 1491.725342 1489.31543 1496.847168 1510.310913 1519.921143 1535.110596 1543.1698 1553.659302 1567.386475 1581.536987 1589.05835 1584.890747 1574.280518 1564.201904 1555.573364 1545.718506 1537.338623 1521.160522 1501.449341 1486.103149 1471.697876 1463.912354 1459.877075 1455.11084 1449.907959 1442.740845 1433.216431 1425.477417 1421.983032 1409.859131 1396.752563 1409.657227 1427.797852 1440.860718 1450.169189 1443.862427 1437.671387 1447.155029 1461.838745 1470.426636 1483.872314 1496.787109 1509.107788 1524.603638 1530.597168 1536.265259 1542.178589 1554.361328 1564.314819 1577.171021 1586.377197 1592.883667 1602.57605 1615.786865 1627.00769 1630.288696 1628.00708 1618.931152 1613.201416 1613.824463 1613.594727 1610.470459 1600.741821 1590.518311 1583.84729 1584.261353 1585.82312 1586.665039 1578.383301 1566.146484 1554.872803 1541.348999 1528.020508 1532.079468 1540.312378 1546.856567 1555.905151 1567.171631 1574.787354 1575.496826 1573.151245 1570.614624 1568.717773 1568.547119 1572.737427 1564.181396 1555.216309 1549.020874 1545.482178 1541.912354 1539.338623 1535.351929 1530.043457 1524.206299 1509.01355 1488.795776 1473.794312 1459.238159 1445.508057 1434.831909 1426.133789 1413.97522 1404.064575 1395.456787 1386.077515 1387.213013 1393.280151 1405.332397 1416.500732 1421.970459 1420.537598 1424.86853 1437.672729 1451.497192 1448.682983 1437.067993 1424.796143 1427.521851 1435.892822 1437.962646 1434.308472 1427.040039 1445.080444 1454.705566 1452.606567 1436.97168 1433.893677 1443.865112 1438.407593 1420.635742 1404.977051 1388.31958 1398.21106 1411.169556 1419.989746 1427.466553 1440.265625 1443.538086 1443.793213 1440.5802 1435.496948 1429.749756 1426.120728 1425.651489 1426.183105 1431.091187 1436.566284 1439.087402 1439.191284 1435.296875 1426.42395 1431.991455 1437.880127 1440.630981 1441.747925 1441.530273 1438.913452 1435.588989 1428.954224 1425.294922 1418.464233 1412.540283 1405.618042 1397.769775 1388.708496 1377.213135 1380.069092 1383.050293 1382.473389 1381.610718 1382.416382 1383.942871 1385.738159 1387.310425 1388.885986 1389.681885 1389.282715 1387.688477 1382.38623 1380.8396 1383.813477 1387.562866 1390.615601 1390.403198 1396.678833 1401.113037 1412.153687 1416.810303 1420.364258 1423.905029 1426.126343 1425.978271 1426.497314 1428.824829 1431.060303 1433.695068 1437.624756 1441.028076 1441.316162 1441.380127 1437.870239 1431.313354 1427.520996 1434.164307 1439.571045 1440.872314 1440.369873 1439.01062 1434.857178 1431.078247 1427.553833 1415.904419 1389.503052 1371.731079 1366.540771 1347.480469 1332.214844 1322.940063 1315.84436 1308.666626 1304.962646 1301.348877 1301.176025 1306.832397 1316.018433 1322.121948 1328.794434 1334.102173 1341.076416 1346.533447 1353.104614 1357.991455 1363.137085 1372.620361 1389.179932 1402.503662 1416.637329 1401.899658 1393.71167 1389.413452 1390.633179 1395.254639 1402.806152 1406.604858 1414.088501 1421.321045 1428.597046 1429.584595 1421.318237 1410.412842 1404.296753 1393.338623 1382.710205 1372.239258 1359.958618 1350.445679 1360.553101 1374.147095 1383.535767 1394.398438 1407.597534 1421.015137 1432.286865 1441.63916 1454.415039 1454.556763 1446.331299 1436.567017 1427.403198 1415.638794 1398.852539 1379.388306 1370.780273 1372.753296 1369.137573 1374.329956 1398.877319 1408.429199 1404.141846 1383.593262 1369.388428 1379.845825 1382.81665 1380.126465 1372.270386 1362.602539 1350.54187 1337.809082 1325.176025 1314.742798 1306.99231 1300.483154 1293.739502 1289.161621 1284.224121 1279.471436 1281.588501 1283.272705 1282.695801 1282.184204 1281.456299 1277.86731 1270.321289 1259.464233 1253.132935 1269.149658 1294.414917 1315.978271 1333.580811 1349.571655 1370.027222 1379.065552 1377.048218 1370.614502 1365.07666 1356.911743 1348.887451 1340.941895 1335.07251 1330.478882 1327.081299 1323.324463 1321.905518 1320.572754 1317.112915 1312.733276 1315.912842 1317.830688 1315.008423 1310.479858 1305.707886 1298.931274 1292.624023 1289.238403 1286.381958 1282.27002 1279.463623 1269.565796 1267.53894 1266.029419 1258.038452 1243.547485 1235.970459 1234.752808 1240.39209 1248.011108 1256.941772 1264.353149 1273.845337 1284.118408 1294.137695 1303.271606 1313.431763 1328.035645 1332.69165 1337.218018 1339.953491 1341.690186 1343.53064 1344.471069 1346.963013 1347.013306 1345.107056 1342.098877 1341.12146 1347.442139 1351.8927 1359.47583 1367.286987 1372.093628 1378.044434 1382.38269 1386.964355 1391.664551 1394.339355 1396.13147 1397.191406 1397.480835 1397.126709 -1593.788696 1604.474243 1620.03772 1632.96106 1642.946167 1648.347168 1654.046387 1660.458008 1665.814941 1674.586426 1689.788574 1697.544189 1701.67395 1704.802979 1707.87207 1713.372559 1717.692261 1720.581055 1721.452026 1721.840454 1722.05127 1721.680176 1720.642334 1717.682495 1712.131836 1707.038696 1699.14856 1687.26709 1677.866333 1671.063477 1665.35498 1658.815796 1652.180542 1643.93689 1634.255249 1629.446167 1634.91626 1637.366089 1641.093872 1632.88855 1620.243042 1611.647339 1621.114746 1634.438354 1641.345703 1644.534058 1643.885498 1639.548096 1633.134644 1623.90564 1610.508423 1603.733765 1595.297974 1583.380371 1574.162109 1595.037842 1618.005615 1638.806396 1642.906372 1637.499634 1630.09668 1646.030151 1654.407593 1659.325806 1645.358887 1632.819946 1616.086548 1604.318726 1623.120972 1634.365112 1643.552002 1652.840576 1661.511597 1660.526489 1651.004761 1641.554077 1631.175049 1618.058105 1607.656128 1601.682617 1595.36438 1588.362671 1580.562744 1570.792236 1557.578369 1539.609497 1525.641357 1514.323975 1510.903442 1526.019531 1540.75647 1554.356689 1570.402222 1584.500122 1598.629028 1601.501343 1600.345459 1596.622559 1591.265991 1583.970459 1571.629639 1559.918823 1551.098755 1537.149414 1523.459595 1513.239868 1499.832275 1483.500122 1468.833496 1454.788696 1442.268677 1428.345947 1421.904907 1412.405029 1399.954346 1395.043579 1401.909058 1414.953857 1425.758789 1438.94165 1444.813599 1452.75061 1465.503906 1474.738403 1480.7948 1488.796387 1498.825439 1515.466187 1535.621338 1553.022095 1574.851318 1596.081909 1609.968018 1633.45874 1645.832031 1653.752563 1657.180908 1646.05957 1637.970581 1626.322144 1616.371094 1605.484375 1590.18457 1592.505127 1596.610229 1597.264526 1602.126709 1608.155273 1613.742676 1629.197021 1634.973877 1637.851929 1639.692139 1640.519287 1640.51123 1639.631592 1637.963867 1636.764526 1636.338135 1635.696777 1634.025146 1633.064697 1633.071899 1635.610107 1637.756592 1638.103638 1636.94104 1634.334229 1629.844482 1625.923218 1622.315674 1618.241211 1613.386475 1610.493164 1599.21521 1591.734863 1583.593384 1575.862305 1574.894165 1575.114624 1569.255249 1560.627197 1551.515259 1538.521362 1525.882935 1514.033447 1500.212769 1499.194092 1515.891113 1529.445068 1540.209229 1555.002808 1569.635864 1576.898193 1579.444336 1579.513672 1585.183228 1592.760864 1594.893799 1586.425659 1578.6427 1573.256714 1566.637695 1559.669312 1553.772827 1551.547852 1545.070679 1533.425903 1523.546021 1516.459961 1511.02124 1504.02063 1513.037598 1517.162354 1515.644531 1513.31897 1506.493286 1499.975342 1489.540527 1477.458862 1475.27832 1477.260498 1477.022949 1474.163452 1469.654663 1465.572144 1460.470581 1464.447266 1474.80249 1488.022827 1499.952026 1506.655518 1508.295166 1505.69458 1507.258301 1510.538086 1516.366211 1528.220947 1541.890137 1553.858887 1566.538208 1579.89917 1588.223267 1582.564209 1573.915405 1568.196777 1560.433716 1550.350952 1539.512085 1523.487793 1514.245239 1502.529541 1490.47522 1481.051514 1471.202026 1461.171997 1453.031494 1443.326294 1435.834351 1430.830688 1426.177734 1406.45813 1400.267456 1410.850586 1431.37085 1448.403564 1465.295288 1457.651978 1449.511475 1450.299072 1450.298706 1459.418579 1467.536987 1485.955566 1497.727661 1507.258545 1516.956543 1523.408447 1528.031616 1535.1698 1550.587891 1558.683594 1575.646484 1587.039185 1603.324097 1614.662231 1621.515625 1621.153564 1617.980103 1608.507568 1601.10498 1600.736206 1601.230103 1597.032715 1589.44165 1580.834351 1573.553833 1571.328613 1572.80542 1570.328735 1566.19458 1556.852295 1547.026001 1533.251221 1536.331787 1543.445068 1552.28772 1555.930298 1560.850586 1566.936035 1574.672485 1578.105469 1577.25647 1575.789673 1572.340698 1569.777832 1572.593262 1566.371582 1558.747803 1552.296387 1547.948853 1539.836304 1538.977295 1535.300415 1531.014038 1526.779419 1511.160156 1489.585938 1475.039917 1459.568848 1446.320923 1433.977295 1422.216797 1412.292603 1402.937988 1394.999268 1386.555298 1388.354126 1397.406738 1415.819702 1427.581421 1434.463501 1434.798584 1433.410522 1443.996582 1458.151245 1460.231689 1445.833984 1430.263672 1429.961548 1444.634766 1453.380249 1451.115479 1443.152832 1449.066406 1461.43103 1462.146729 1455.222046 1450.008911 1442.037109 1430.556396 1412.843994 1399.148438 1389.967896 1402.754395 1416.73999 1425.331055 1438.143677 1448.280396 1452.426758 1448.912109 1445.691162 1441.549194 1437.092041 1430.828613 1427.045654 1428.206299 1436.140137 1440.947144 1442.783936 1443.078247 1441.266357 1437.021729 1437.279541 1441.963013 1443.271729 1442.712402 1441.588379 1432.935303 1424.874634 1422.43042 1418.317383 1413.375854 1407.518921 1401.239136 1391.541382 1383.902222 1378.330078 1386.729614 1390.983643 1390.446655 1387.897461 1386.567017 1386.203613 1387.228271 1389.151855 1391.352661 1392.379517 1392.034546 1391.290771 1388.100098 1387.36377 1387.758301 1387.477783 1388.863281 1390.226807 1395.964111 1404.086426 1414.516479 1418.040161 1421.069946 1425.41333 1428.327026 1429.456421 1430.444824 1431.894653 1434.596436 1437.974121 1440.431519 1440.529297 1441.20105 1441.526855 1438.932495 1430.547485 1422.097534 1428.275391 1434.237427 1438.80481 1439.92688 1437.989868 1433.814941 1430.067993 1427.495605 1420.067749 1402.946777 1379.408203 1357.40625 1343.127075 1327.486572 1315.506592 1311.97644 1308.871094 1305.219971 1302.329102 1300.237793 1302.238892 1310.208008 1320.604004 1329.045288 1333.946167 1338.094971 1343.078613 1352.493286 1362.161255 1369.815796 1378.734253 1385.59729 1396.20105 1414.674072 1407.995972 1398.989014 1399.312744 1402.800293 1411.070312 1417.6698 1423.758667 1428.61377 1429.945312 1426.578491 1419.385498 1412.183105 1400.994629 1388.35022 1382.577637 1375.135864 1366.057129 1363.61438 1353.828247 1357.920776 1371.037231 1380.830688 1388.78772 1401.785645 1413.354492 1426.837036 1434.47583 1446.131958 1454.175537 1454.33252 1447.100098 1436.260864 1423.96875 1407.524658 1398.930664 1394.498047 1385.723511 1381.634399 1397.735962 1418.722778 1418.880249 1412.34436 1390.805664 1387.669678 1396.307495 1392.699951 1386.731323 1381.108643 1370.547363 1354.858154 1344.410156 1332.068481 1319.52771 1309.677368 1302.762695 1299.601562 1294.080933 1288.197021 1286.561157 1289.201538 1289.913208 1288.640015 1289.247192 1291.774292 1289.374756 1281.278076 1272.560913 1258.831177 1263.925049 1288.878052 1308.31543 1325.85022 1344.144653 1365.291504 1375.31897 1374.421631 1368.980469 1364.143555 1356.388672 1349.97229 1343.44812 1338.390991 1333.899658 1329.68103 1327.711304 1325.623291 1321.144165 1317.299072 1315.310181 1316.681763 1317.802612 1316.594849 1310.789062 1304.233887 1301.05896 1296.205933 1295.251953 1291.088135 1290.145752 1284.599854 1277.351196 1276.86731 1272.521729 1262.754028 1247.812134 1240.946533 1236.441528 1235.598877 1240.381104 1241.298828 1257.378418 1269.216553 1282.91272 1294.727661 1306.483643 1319.052246 1327.587158 1331.551147 1335.250732 1337.88916 1339.630371 1340.695557 1341.786621 1344.574707 1344.65564 1342.541382 1340.539551 1342.938599 1348.673096 1352.489136 1358.382568 1363.381348 1366.747925 1374.369629 1377.25354 1380.907227 1384.728882 1389.950562 1391.209106 1391.576294 1391.428955 1391.350342 -1583.828003 1595.000488 1607.594849 1620.494873 1630.146851 1636.575806 1643.886475 1656.065918 1671.755371 1682.48291 1694.003662 1699.56543 1703.003784 1705.633911 1708.667725 1714.21814 1717.684814 1720.353394 1721.355225 1721.74939 1721.949951 1721.933472 1721.212158 1717.739746 1711.173584 1705.375244 1697.161743 1684.758423 1675.140869 1667.20874 1660.050781 1654.698486 1649.200317 1641.423096 1635.426514 1641.714844 1647.298218 1651.035156 1643.204346 1620.27002 1620.631836 1628.487427 1636.396851 1644.83667 1652.120239 1655.219482 1654.00415 1647.060791 1639.481689 1630.73877 1617.936035 1607.226196 1598.643311 1587.391113 1581.695435 1608.043945 1626.667358 1645.145752 1649.515381 1646.4552 1639.243042 1650.018433 1660.044067 1662.456909 1652.502075 1638.073486 1621.22229 1614.781616 1632.202637 1642.022095 1650.324341 1657.518188 1661.41687 1658.821045 1649.516846 1640.441162 1630.210693 1616.43457 1606.435547 1600.093872 1592.751709 1585.612793 1576.661621 1565.557861 1550.545166 1532.68396 1521.285278 1511.698242 1515.972778 1532.37915 1544.979614 1562.517822 1577.676147 1588.03186 1599.531494 1604.992676 1604.731812 1600.547729 1592.882812 1583.641479 1573.316895 1568.388184 1560.973877 1554.205322 1542.506958 1530.966064 1514.881592 1500.196411 1489.710693 1473.592529 1454.550293 1436.25415 1423.593384 1415.135742 1401.407715 1396.832642 1401.706299 1414.111816 1422.442261 1432.007812 1439.697754 1445.46228 1452.755981 1461.993408 1472.460205 1485.827148 1506.090576 1523.884277 1540.238159 1556.16748 1580.640015 1600.252686 1619.70459 1630.252686 1642.609863 1654.178955 1661.595215 1652.464355 1641.810425 1630.81604 1619.924316 1609.76709 1599.501343 1603.28833 1604.218872 1603.417725 1606.247559 1611.923218 1617.812012 1631.873901 1637.943115 1642.087402 1644.040527 1644.794556 1645.035767 1643.936768 1642.052979 1640.516724 1639.518188 1638.544312 1637.259033 1635.961426 1635.699463 1638.498047 1640.512451 1640.621948 1639.230347 1636.675171 1632.59436 1628.364624 1624.082397 1618.834106 1609.779785 1604.657959 1597.338501 1593.420166 1587.913818 1587.787842 1587.96936 1584.523926 1576.270874 1563.645752 1552.981079 1540.499146 1527.241089 1513.974976 1503.976685 1503.395996 1520.630371 1531.793945 1541.777954 1557.717896 1574.50415 1583.609253 1589.238159 1590.187256 1589.662354 1589.967407 1588.738037 1584.976318 1580.272705 1576.538086 1573.452148 1566.365845 1562.306519 1555.86438 1549.790405 1539.457642 1527.831909 1520.668335 1514.773315 1509.942139 1506.106812 1515.604614 1517.648682 1519.347168 1514.647827 1505.697388 1493.997925 1485.209473 1486.644409 1485.710083 1481.081787 1475.94751 1469.974609 1464.682983 1465.059326 1471.682617 1482.162476 1492.271484 1508.717773 1518.053711 1519.838989 1517.464722 1518.120728 1521.085815 1521.155762 1524.769287 1541.1875 1551.46228 1565.457031 1577.238281 1588.679321 1587.675049 1584.124023 1574.387695 1563.926025 1552.895142 1540.210083 1533.600952 1527.403564 1516.693604 1499.418945 1487.753418 1480.081177 1467.52002 1456.742065 1446.321289 1436.772583 1426.84375 1413.761353 1401.626343 1404.202271 1411.428955 1429.720825 1447.058472 1465.071289 1468.034668 1463.363403 1464.562378 1466.858398 1466.109863 1464.366821 1469.427124 1481.052612 1490.724731 1500.064575 1508.364624 1519.861084 1533.74231 1545.496826 1559.536499 1577.870117 1592.171509 1607.236694 1614.375488 1615.874512 1611.415649 1604.804443 1597.134521 1591.404175 1588.389893 1586.220581 1581.307495 1574.739014 1567.890503 1563.692017 1561.950562 1559.473267 1557.13501 1552.786011 1546.67395 1535.702881 1540.677734 1546.31958 1553.561768 1560.192139 1566.860718 1571.749512 1573.053589 1577.463013 1583.17627 1580.330078 1572.036255 1565.244507 1563.289551 1562.390991 1558.440552 1552.566528 1547.716431 1541.459473 1533.69458 1527.041504 1528.140259 1527.395142 1524.063965 1508.183594 1492.15979 1477.295776 1459.825073 1445.517578 1430.650879 1417.0802 1408.533447 1400.796997 1394.355835 1387.637451 1389.413208 1401.351074 1420.130615 1444.167358 1451.141113 1452.287354 1451.094604 1448.768311 1459.919067 1467.214722 1451.567261 1437.421875 1436.577026 1454.391357 1466.345459 1468.040161 1460.398804 1458.509277 1467.515137 1470.229858 1466.712769 1453.430786 1441.511353 1430.743408 1418.497314 1407.833252 1399.389771 1405.0177 1420.715698 1431.468506 1445.782715 1460.445923 1462.24585 1456.894531 1451.795654 1447.740845 1443.634399 1439.675171 1436.553101 1435.218506 1440.43811 1444.088623 1446.280273 1447.577881 1446.551514 1441.441284 1439.826294 1445.151733 1444.272461 1442.426514 1439.23938 1430.929932 1424.026855 1418.66626 1412.898315 1407.799072 1401.349365 1398.419312 1392.81665 1387.966553 1385.012329 1392.236084 1394.463135 1394.064209 1391.340942 1388.858032 1387.796631 1388.675293 1391.093994 1393.375244 1394.256714 1392.662354 1390.387817 1390.290527 1392.873169 1392.011108 1388.53894 1392.169922 1393.654541 1397.829712 1403.49646 1411.058716 1415.973145 1418.665894 1423.327393 1427.185913 1429.769775 1431.196289 1432.723511 1435.079346 1437.900513 1438.589355 1437.976318 1438.234009 1439.44519 1436.709106 1428.859375 1414.761963 1419.477783 1427.135254 1434.135376 1435.182617 1433.434082 1430.936768 1427.16687 1420.369385 1415.227539 1406.685181 1392.1875 1371.20166 1353.857178 1325.720825 1316.225952 1317.392578 1313.331421 1305.994385 1303.345459 1301.861328 1300.793945 1301.93457 1315.003418 1324.442261 1331.426758 1336.161255 1339.53186 1347.302612 1357.258545 1369.505493 1377.655762 1387.772339 1396.60144 1405.823608 1413.055054 1408.660889 1416.515381 1418.570435 1423.791626 1428.736328 1429.596802 1427.611694 1422.096191 1413.735229 1400.433594 1392.99585 1387.187134 1384.627197 1378.759033 1375.251953 1378.611206 1375.970215 1362.567383 1360.106689 1367.378296 1376.889404 1384.748535 1395.347656 1408.444092 1418.861572 1427.797363 1438.02417 1447.673584 1454.035034 1454.625732 1445.705322 1432.546143 1423.825928 1423.414673 1418.34668 1406.492432 1396.62207 1420.691162 1430.543213 1427.23877 1419.630493 1399.161011 1402.164185 1411.403442 1405.904541 1394.74646 1386.63562 1378.416382 1358.600708 1343.762695 1333.173462 1323.533569 1315.300781 1311.39978 1307.158569 1296.357544 1291.225464 1293.806396 1296.001343 1296.071533 1294.210327 1295.3125 1300.90564 1300.652222 1291.511353 1280.149414 1270.283203 1264.211914 1279.817261 1299.314819 1320.571045 1341.089844 1360.476562 1371.416016 1369.685425 1365.37085 1360.315186 1354.451782 1349.553589 1344.506714 1340.368652 1336.41272 1332.533325 1331.503418 1328.703369 1322.004883 1317.06604 1316.083374 1317.13562 1318.680176 1317.529053 1313.951172 1310.469116 1306.004272 1303.853027 1300.884521 1298.057129 1296.135498 1290.463379 1286.23291 1284.393311 1277.820068 1267.020386 1254.0896 1245.939941 1241.349121 1238.011597 1237.383057 1242.468384 1257.951172 1270.158325 1284.561768 1297.778931 1309.312622 1321.193604 1330.487793 1332.349487 1334.223267 1336.317505 1338.073975 1339.477783 1341.455078 1343.421021 1343.066895 1339.81958 1340.841431 1351.514038 1355.884155 1362.107056 1367.822266 1367.658813 1370.110474 1373.837036 1376.390381 1377.057739 1378.764282 1384.543091 1387.190186 1387.94519 1388.072876 1388.858032 -1595.57251 1611.423828 1620.359131 1629.461548 1642.443359 1650.40979 1658.310181 1670.074707 1681.510498 1692.514282 1699.845093 1704.649414 1707.249023 1710.171387 1714.40564 1718.196899 1719.788696 1720.572266 1720.833252 1721.327271 1721.947754 1722.122681 1721.318115 1716.61853 1710.075562 1702.802246 1693.994629 1682.695312 1674.096313 1665.55835 1657.298096 1651.370361 1645.907715 1638.765625 1645.077026 1654.287598 1661.176636 1658.83374 1642.072266 1618.619629 1627.453857 1637.131348 1642.78125 1655.248779 1662.289307 1667.747192 1667.271851 1654.613403 1643.023438 1634.459839 1621.763306 1610.482666 1602.231567 1588.306763 1591.048096 1616.664185 1638.525635 1651.172241 1659.047607 1659.087769 1647.522217 1657.327637 1665.261963 1665.28894 1659.414673 1639.762817 1623.777466 1625.308838 1640.442139 1649.685669 1658.376099 1661.188477 1660.82312 1656.454834 1646.787231 1636.908447 1623.903076 1613.595703 1605.444336 1596.668579 1587.626465 1577.975342 1568.770874 1556.933838 1539.787598 1526.297485 1516.322876 1512.972778 1522.736328 1534.446899 1546.139648 1564.77356 1581.195557 1592.496216 1602.297119 1609.604614 1610.470337 1604.657837 1595.413208 1588.6875 1582.721558 1577.654175 1570.320557 1561.134399 1550.749268 1539.285645 1522.372925 1505.972046 1494.851196 1481.86792 1457.77478 1438.944214 1425.767944 1429.081055 1410.727051 1401.586426 1400.00647 1410.410278 1417.765259 1424.28418 1429.539429 1441.154419 1450.473877 1463.127197 1475.359131 1490.984863 1508.949585 1526.235107 1541.22583 1553.532715 1575.923462 1595.078491 1616.323364 1625.910278 1635.671875 1651.356079 1662.550659 1659.782715 1648.907715 1638.839111 1627.883545 1618.668701 1614.452881 1612.707886 1611.125 1608.921021 1610.36792 1617.825073 1622.806519 1633.531738 1641.927246 1647.105591 1650.023071 1651.254639 1650.579102 1648.443481 1645.665039 1643.891968 1642.577148 1641.914062 1641.528076 1641.690308 1642.407471 1643.862061 1644.230957 1643.776123 1641.682007 1637.990479 1633.943604 1629.723755 1625.302124 1620.811279 1616.021606 1612.229492 1609.642822 1604.932129 1601.064697 1596.814209 1591.944702 1588.144165 1578.640259 1567.586792 1556.872314 1542.703491 1529.106689 1517.464722 1508.857422 1508.795654 1523.86084 1534.14978 1545.591553 1559.356812 1577.293335 1590.010254 1599.103027 1596.210571 1591.11377 1586.866577 1582.500977 1577.814331 1576.621094 1574.970825 1572.285645 1566.723999 1561.935547 1553.731323 1547.080322 1538.990601 1529.204102 1522.619873 1517.380493 1514.147095 1508.826904 1513.246582 1517.856812 1522.970581 1521.895996 1508.502808 1501.186523 1494.015259 1495.912109 1491.659424 1484.181641 1476.972168 1470.783936 1468.190063 1477.707153 1479.929932 1490.521484 1501.356689 1513.80188 1527.357056 1530.420044 1530.109863 1529.725464 1534.391602 1534.09375 1533.505249 1538.617798 1548.9823 1563.756958 1578.522095 1590.860962 1596.245605 1590.199341 1577.679443 1568.894775 1559.19519 1547.624634 1541.537964 1534.165039 1524.661987 1505.487183 1494.649536 1485.268433 1471.804199 1457.994507 1447.515991 1438.184326 1428.775146 1415.224487 1402.658447 1403.596069 1411.663574 1427.278076 1441.729492 1457.109131 1471.779541 1479.600342 1484.084106 1486.4198 1479.34375 1472.101562 1475.355835 1476.971436 1482.944702 1491.865845 1510.392456 1522.449829 1535.792603 1556.049316 1568.549194 1579.916016 1591.03772 1604.179688 1612.151245 1613.363281 1609.360474 1604.098999 1599.044067 1592.846313 1583.296021 1577.458374 1572.17688 1567.294922 1558.860474 1558.489258 1554.457153 1549.865234 1549.251343 1546.91394 1549.276733 1549.970215 1547.733521 1548.900391 1556.720337 1564.499756 1574.667969 1579.637085 1581.251465 1584.274536 1586.490967 1579.49231 1564.640991 1552.054688 1549.674927 1548.633667 1544.256592 1536.947754 1535.112305 1532.408813 1525.486816 1510.623779 1509.707886 1511.098389 1507.926758 1498.092163 1486.525024 1472.744507 1458.78772 1443.978027 1424.700684 1413.463257 1404.335571 1398.951538 1393.3573 1388.184448 1390.272217 1403.596436 1422.621948 1456.373657 1469.082642 1470.578613 1468.332886 1464.205444 1465.770386 1476.159912 1464.393555 1449.08313 1444.821899 1464.204224 1480.30835 1484.53064 1475.935181 1471.468384 1476.002808 1478.01123 1477.572144 1464.158569 1451.598877 1439.552612 1429.214478 1414.164673 1401.492065 1405.462769 1423.700684 1435.504272 1455.008789 1469.733032 1471.792114 1467.977173 1461.327881 1454.917358 1450.319702 1447.129761 1443.65979 1440.911377 1443.948608 1447.050171 1449.07312 1452.194702 1453.118896 1451.037476 1450.061035 1448.653931 1443.015991 1437.647461 1430.860229 1425.910645 1422.425781 1416.437134 1413.279785 1409.658813 1406.774292 1405.216675 1398.800903 1390.651001 1389.689209 1396.735352 1400.046875 1398.987549 1393.827393 1389.728882 1389.265259 1390.706909 1393.478271 1395.532715 1396.034912 1391.453003 1390.983154 1397.237305 1401.819092 1403.726318 1393.246094 1393.330688 1402.635376 1405.473389 1404.824585 1405.031494 1413.424438 1414.14502 1423.807495 1427.406616 1429.788086 1431.270996 1432.476562 1433.628906 1434.015991 1433.38855 1431.802368 1431.058228 1433.754639 1431.851074 1423.991821 1413.954712 1413.776245 1427.66748 1431.053589 1430.245117 1427.355713 1426.354492 1419.508423 1404.294189 1396.929077 1391.283569 1381.32251 1369.262207 1354.889038 1319.394165 1321.241699 1322.052979 1317.70459 1309.505127 1304.505005 1303.204834 1302.633667 1301.766357 1301.228027 1317.526489 1328.782104 1336.609985 1342.485107 1349.881958 1353.817993 1366.018433 1377.39502 1391.965942 1402.317505 1412.619507 1428.909302 1431.441162 1430.759277 1429.623779 1431.243042 1433.286865 1430.940674 1424.778809 1417.46228 1415.373535 1409.213501 1402.026733 1390.164429 1395.334473 1391.362671 1381.694824 1390.461426 1386.637573 1372.067139 1362.63916 1372.787354 1376.121582 1382.385986 1389.321411 1404.973022 1412.952881 1420.417847 1429.039307 1439.71936 1449.463379 1455.527466 1455.011108 1443.150391 1440.215454 1439.310425 1436.459717 1421.684082 1412.946411 1436.692993 1444.682373 1438.299561 1428.728394 1408.715332 1407.94104 1423.990112 1418.462769 1406.250854 1392.691284 1381.112061 1365.801147 1351.387817 1340.180786 1329.363037 1322.32666 1319.588989 1309.695435 1297.421021 1296.687622 1300.845947 1301.838135 1301.562622 1301.48999 1305.151245 1311.458008 1311.464355 1299.089355 1282.650146 1269.974121 1264.954224 1281.18103 1302.758301 1322.49707 1338.414307 1350.47583 1369.678833 1367.018433 1362.967041 1357.478271 1352.671021 1348.951172 1344.035767 1340.731689 1339.384155 1336.357788 1333.002808 1329.62561 1323.096802 1317.723511 1317.298828 1319.467773 1320.083862 1318.932007 1318.462036 1318.395386 1314.465942 1311.016235 1307.163574 1304.990112 1300.890259 1294.738037 1295.129272 1289.506958 1279.61792 1267.728027 1258.619019 1251.376831 1245.019653 1241.575684 1239.366699 1242.703369 1252.970825 1264.735352 1279.313477 1292.105591 1304.520508 1317.980347 1329.696289 1331.243286 1332.435181 1334.161743 1337.158447 1339.95459 1341.833008 1342.869263 1340.910156 1335.335571 1340.136963 1349.611572 1355.673218 1363.072266 1367.378662 1369.196533 1373.929932 1378.953125 1379.657104 1386.738647 1387.439819 1385.437012 1384.552979 1385.089355 1386.228271 1388.883667 -1604.587158 1617.486328 1628.809814 1642.358643 1656.028687 1664.608643 1669.071655 1682.551025 1692.166016 1700.046631 1706.555908 1709.679321 1713.117188 1717.101074 1720.161621 1720.167114 1720.187622 1720.2677 1719.657959 1719.380981 1721.480835 1722.118896 1721.119507 1714.879639 1707.553833 1698.300171 1688.919067 1679.601685 1672.221924 1663.595703 1655.204712 1647.525513 1642.155396 1649.296875 1658.728394 1666.287476 1668.234375 1656.953979 1641.067993 1618.486084 1634.130493 1639.845215 1645.773193 1660.28186 1668.118408 1676.47937 1681.972656 1661.927856 1645.458374 1635.235229 1623.180908 1611.551025 1602.430664 1590.867432 1600.242554 1622.193848 1641.398682 1655.934692 1665.761597 1669.0177 1659.77002 1665.764648 1671.665649 1668.967529 1658.706787 1640.038208 1633.848877 1634.577515 1646.300171 1657.155762 1663.141357 1661.555786 1658.293823 1653.948242 1648.758789 1640.009277 1629.915771 1617.687866 1607.000732 1598.876465 1583.921631 1569.933472 1558.339478 1547.179199 1533.437866 1521.485474 1513.632446 1522.372192 1532.670044 1538.09021 1546.052612 1563.309204 1581.348877 1594.485352 1609.114868 1615.837524 1618.392334 1613.072998 1604.38855 1596.74353 1589.41626 1580.643188 1572.174438 1562.467773 1552.865112 1537.614014 1521.795654 1506.396851 1494.739868 1480.243286 1457.060547 1439.082275 1434.892212 1437.493896 1421.213013 1408.489746 1399.123413 1405.791016 1412.718018 1419.445923 1427.331177 1436.946533 1448.303589 1460.515137 1473.264771 1490.125122 1508.856934 1524.360718 1539.527954 1549.012329 1561.620728 1583.569458 1598.944824 1613.932129 1624.20105 1637.333862 1651.56897 1662.14917 1658.429443 1649.709595 1642.328735 1636.442139 1626.327637 1620.033203 1620.015137 1620.688232 1619.276611 1624.081421 1629.937378 1640.577148 1648.937256 1658.560425 1660.335815 1660.205811 1658.072388 1653.924805 1650.026123 1646.978271 1645.192017 1644.716309 1645.474243 1646.426392 1647.536621 1648.095825 1648.096313 1647.07666 1644.986816 1641.266479 1635.76416 1632.394897 1629.487305 1625.342163 1622.557495 1618.234619 1614.580688 1611.028809 1602.568359 1597.470825 1590.655762 1586.473145 1579.224854 1569.771973 1561.059326 1548.076294 1533.966187 1523.112061 1512.060913 1510.872559 1524.453369 1534.204102 1549.74707 1565.455811 1579.397461 1594.903442 1609.484253 1596.286011 1587.86438 1580.285522 1574.017822 1571.024048 1571.151611 1569.867432 1565.991455 1562.026245 1556.528809 1548.172852 1541.807617 1533.907837 1525.152344 1522.16333 1519.049805 1515.89624 1512.28772 1511.186401 1516.317139 1518.808716 1516.46521 1510.45813 1502.584351 1500.451904 1503.120605 1499.097534 1487.692261 1476.645752 1471.632446 1476.432861 1481.946899 1485.530884 1495.419556 1506.619873 1517.008911 1529.531006 1539.070312 1543.63916 1545.319336 1547.197754 1550.154785 1550.924194 1548.379883 1552.717651 1563.768433 1578.340088 1592.740601 1600.895996 1597.613159 1583.599243 1577.655762 1570.667969 1563.973145 1547.437378 1537.806152 1528.200073 1508.922485 1497.15564 1485.97998 1471.781372 1458.503906 1448.366821 1440.191406 1432.407104 1429.154785 1411.373413 1402.317017 1411.369995 1424.84314 1436.178345 1452.018433 1465.737549 1478.508667 1490.890747 1496.877319 1491.557129 1483.024902 1491.557373 1497.955688 1501.786255 1500.289185 1506.276489 1518.715698 1531.209717 1548.604614 1562.213623 1574.638672 1585.293701 1597.066895 1606.704834 1611.748047 1617.683472 1616.00354 1614.453125 1606.873169 1596.53894 1592.34729 1585.559448 1581.985718 1579.209106 1575.819092 1573.637329 1573.695312 1568.945557 1561.781006 1560.713623 1557.296021 1557.348267 1555.212402 1558.630859 1566.599365 1578.263062 1585.08667 1588.156006 1588.874268 1588.345825 1575.388672 1562.316772 1547.662842 1533.193726 1530.397095 1528.282959 1526.239746 1523.472412 1522.791992 1516.526245 1499.697754 1491.310669 1492.692139 1492.593384 1483.380737 1474.650269 1462.979858 1453.332397 1437.081055 1420.608032 1409.827881 1401.392212 1397.730957 1392.48938 1388.59082 1391.281372 1404.852661 1422.93103 1449.69812 1472.509399 1480.13855 1481.349121 1480.084473 1480.615112 1487.519653 1479.956665 1464.039429 1455.266602 1469.570679 1484.843506 1497.008179 1487.421631 1483.467529 1481.371582 1476.168335 1470.436401 1462.291138 1455.415161 1446.996582 1437.79895 1416.811035 1412.634644 1417.894287 1421.10791 1437.088135 1458.527222 1472.914062 1478.387695 1477.90979 1471.560059 1464.40918 1458.653564 1454.422974 1451.031494 1449.308105 1449.407715 1450.119995 1453.405151 1458.766724 1460.057617 1460.267212 1456.396606 1451.904785 1443.945557 1434.770874 1426.009399 1424.706421 1421.659058 1417.011475 1416.013062 1415.901733 1414.233887 1408.884644 1402.064331 1389.872192 1393.392334 1402.719116 1404.541626 1403.595703 1396.57019 1389.739624 1391.11377 1394.212158 1396.957031 1398.430664 1399.043335 1398.997437 1400.846558 1406.105103 1409.564453 1410.05896 1404.825928 1399.49231 1408.252686 1413.695557 1416.353271 1417.953735 1419.149902 1422.160522 1426.878418 1428.59021 1429.891113 1430.901367 1431.807617 1431.888916 1427.926392 1428.172241 1426.203369 1424.509155 1429.139404 1428.773682 1422.095947 1407.975464 1410.201294 1428.10144 1429.294922 1427.093872 1420.785278 1414.045898 1408.096313 1395.157471 1381.417969 1372.705444 1369.619629 1357.463379 1338.251221 1325.217285 1329.15271 1328.928467 1322.955078 1316.528687 1307.938232 1304.701904 1304.071899 1305.527344 1303.217041 1304.180054 1321.067871 1337.985229 1352.204468 1361.157715 1371.378418 1378.958862 1391.143921 1404.784912 1417.704346 1428.603149 1441.146484 1440.084351 1437.49231 1435.847534 1438.194702 1439.091187 1434.843262 1428.134033 1425.635132 1422.017212 1417.304565 1406.658936 1401.958496 1408.845947 1399.779541 1390.165039 1400.654053 1396.444702 1381.670654 1367.800293 1379.070557 1388.374756 1386.502441 1391.354126 1400.473022 1409.011841 1415.638184 1425.849976 1434.362305 1444.467529 1454.489746 1463.748047 1455.656616 1449.776367 1448.848145 1446.513672 1434.467651 1426.606567 1451.254028 1456.494629 1451.169556 1441.639771 1421.746948 1411.937134 1431.699341 1427.449951 1415.155273 1400.240967 1381.571899 1367.417358 1351.656616 1341.99646 1332.292236 1326.364624 1320.281616 1308.647339 1304.112671 1307.309326 1309.124756 1309.294678 1308.488037 1307.258789 1313.877563 1319.546753 1317.555786 1299.55603 1280.540894 1266.275269 1269.897705 1279.403076 1298.786865 1313.626221 1328.911377 1340.988647 1351.655151 1361.083252 1360.866333 1354.776367 1351.943726 1349.502563 1346.209595 1344.121216 1342.787109 1339.419067 1333.953979 1329.436523 1325.05481 1320.129639 1319.797363 1321.466919 1321.569946 1321.023193 1320.223511 1319.612671 1318.917603 1317.409058 1311.963135 1308.41626 1305.661621 1302.089233 1296.594604 1289.631348 1279.928101 1273.667969 1264.988037 1255.068481 1248.769409 1244.615356 1242.020386 1239.789062 1247.819702 1256.696411 1269.207642 1283.092773 1295.162354 1307.84314 1318.611206 1328.251099 1329.876953 1331.276855 1336.177979 1340.189819 1342.410034 1343.085571 1336.593262 1328.512207 1335.82312 1342.633911 1350.179443 1355.761719 1361.471436 1365.695923 1369.564575 1375.891235 1381.026367 1387.05188 1389.769775 1385.82312 1381.689941 1382.417847 1384.235596 1387.449585 -1606.488892 1620.603516 1634.558228 1652.194702 1666.803711 1677.315308 1687.135742 1695.165161 1702.947998 1708.664185 1711.15332 1713.965942 1717.78833 1721.03833 1720.862061 1720.441162 1719.876221 1719.52417 1718.638428 1719.220093 1721.012939 1721.795532 1719.577026 1711.649536 1703.134766 1692.410156 1683.125 1676.274902 1669.175415 1660.588623 1651.077148 1645.658203 1656.546753 1664.83667 1669.800049 1671.419312 1672.392212 1656.06897 1642.260864 1623.276123 1636.804199 1641.72229 1647.068237 1661.306885 1669.224854 1678.825684 1684.479858 1665.131592 1647.383667 1635.372314 1622.785156 1610.863403 1601.380127 1596.167358 1613.692017 1628.488037 1645.665039 1663.786133 1673.686279 1675.559082 1671.30957 1673.251953 1676.069458 1672.740234 1658.575317 1651.404907 1652.070435 1649.595581 1653.011353 1662.762329 1668.498901 1660.721924 1655.864624 1652.237061 1649.537354 1644.056396 1633.384155 1620.646484 1608.667603 1600.374146 1585.017334 1572.979492 1557.584229 1545.837158 1531.927368 1519.676636 1519.000244 1536.039673 1549.347534 1548.585815 1546.618042 1558.463013 1576.197876 1592.049072 1609.788696 1618.366821 1624.31189 1621.825073 1612.083984 1602.226196 1591.749268 1580.478394 1567.805054 1556.500732 1546.188477 1527.677734 1514.119751 1500.203979 1488.494629 1470.43689 1452.988281 1445.151855 1446.78833 1446.531616 1425.711792 1411.9021 1403.394287 1401.930664 1410.205566 1417.21814 1422.567139 1429.935059 1438.854858 1451.95874 1467.62207 1485.584595 1504.485229 1520.258911 1535.025879 1544.338745 1554.675415 1567.857056 1584.785767 1596.455322 1606.455566 1610.566528 1623.849731 1641.399658 1658.45813 1654.897583 1648.69812 1641.208252 1636.079712 1629.646973 1628.110352 1628.352173 1627.707642 1629.780273 1636.391113 1651.272705 1661.817627 1666.896484 1667.355591 1666.111084 1663.300903 1659.627197 1655.693237 1652.158447 1649.161865 1648.290527 1648.874268 1650.003418 1651.053955 1651.466553 1651.425171 1650.559814 1648.654541 1645.921631 1641.730103 1637.113647 1633.448608 1629.13208 1625.567627 1620.78186 1614.276489 1609.52002 1600.48877 1590.724731 1583.005005 1577.168335 1571.695068 1565.583374 1558.898926 1547.683716 1534.489868 1525.188232 1514.421875 1512.870117 1523.549561 1536.918823 1552.335938 1566.22583 1579.965332 1593.261597 1600.834717 1593.383301 1583.784546 1574.534912 1570.578857 1568.183228 1566.736938 1564.301636 1560.272217 1556.536499 1550.952026 1543.634033 1537.293213 1530.241455 1524.087158 1522.720947 1519.904785 1516.686523 1513.702393 1509.937134 1514.185181 1519.12854 1522.031006 1516.958252 1511.198364 1508.560181 1507.687866 1500.903442 1490.044312 1480.87146 1474.473022 1477.693237 1486.407959 1491.919556 1498.600952 1510.549194 1520.091797 1533.25 1547.949219 1554.662109 1559.828247 1560.956787 1565.7948 1566.629639 1565.401978 1564.054199 1568.737671 1579.602051 1593.183716 1602.520996 1602.061768 1593.442017 1584.079224 1575.205444 1565.357178 1551.322144 1539.667603 1527.895508 1508.299927 1496.293945 1483.008545 1471.040039 1462.765381 1450.496582 1440.700806 1430.522095 1423.674927 1411.777466 1400.834106 1408.140381 1420.126343 1431.81958 1441.067749 1455.232056 1472.114502 1487.371704 1501.618896 1501.660034 1493.739136 1503.946655 1516.261963 1524.252686 1522.305786 1519.938232 1522.562378 1528.742554 1534.259155 1547.63623 1556.667114 1573.137085 1585.954956 1596.941284 1610.82019 1623.755127 1623.612793 1621.490967 1616.721069 1610.702637 1604.44751 1600.4198 1594.233765 1586.502319 1584.492188 1583.526367 1581.663086 1578.074951 1573.784424 1566.342896 1563.80249 1564.959961 1565.354492 1564.417358 1570.749268 1579.341064 1587.432861 1593.46228 1594.412598 1587.893799 1569.305542 1558.068481 1544.2323 1524.237915 1511.943726 1512.07251 1511.868408 1505.270752 1510.986694 1507.190674 1496.179443 1477.416138 1477.248169 1478.878418 1474.56958 1463.329956 1452.556396 1442.013916 1428.102783 1415.41748 1404.100586 1401.944946 1400.932007 1395.19397 1389.602295 1391.746948 1404.467651 1420.894897 1440.541382 1460.212524 1477.042969 1487.022583 1491.272949 1496.675049 1503.033691 1496.655518 1480.268311 1474.787964 1475.857422 1486.04895 1504.171387 1496.802856 1491.781494 1485.016357 1469.83606 1458.608887 1449.77771 1442.872559 1431.491333 1421.539185 1414.439209 1432.813354 1431.348267 1429.740356 1433.774414 1457.572754 1471.844482 1479.613647 1480.073975 1477.846191 1471.89209 1465.544189 1460.753296 1456.597168 1454.473999 1453.682251 1454.964966 1463.595703 1465.986328 1465.22998 1465.457764 1462.945801 1455.975464 1451.267334 1438.338379 1429.553955 1425.815552 1423.165161 1420.941406 1418.929565 1417.455933 1416.206421 1411.077881 1402.437012 1389.083374 1401.21875 1405.789673 1407.25061 1405.631226 1400.603516 1391.603149 1394.731201 1399.983276 1402.266479 1400.397461 1402.986084 1403.409058 1408.56604 1414.480713 1416.62146 1416.34729 1411.920654 1407.057495 1414.13147 1417.335938 1418.137207 1419.441772 1421.751587 1425.277466 1428.121826 1428.762329 1429.531128 1430.519531 1431.162598 1430.877686 1429.611084 1422.300781 1413.661987 1415.52771 1422.091797 1424.283203 1419.907227 1407.058105 1405.473755 1421.012695 1424.515991 1420.948608 1413.77063 1399.271484 1393.880737 1386.188843 1374.460205 1358.54895 1348.939575 1338.925781 1329.281128 1333.858765 1335.089722 1334.002563 1329.760254 1321.768311 1314.553223 1309.248779 1307.737427 1308.026855 1304.65332 1301.988403 1310.248047 1338.12561 1358.743286 1374.94812 1384.675903 1391.614868 1399.733887 1408.957275 1424.78418 1435.215576 1442.37793 1443.723389 1442.427979 1438.897339 1441.232544 1443.154785 1441.052124 1436.679199 1432.349243 1428.229614 1420.862305 1411.686523 1417.002075 1417.394653 1404.383545 1401.115723 1409.112183 1404.206543 1386.50415 1374.177002 1375.778198 1389.830811 1391.611694 1389.939819 1401.471191 1410.691528 1417.60791 1424.34668 1432.558716 1442.531982 1456.818604 1467.813599 1470.582397 1468.745972 1463.746704 1457.11377 1448.178467 1448.603271 1461.606079 1469.22583 1465.595337 1452.668335 1435.412598 1418.307129 1438.526611 1436.628174 1419.711426 1406.150635 1390.452393 1370.655273 1354.747681 1346.658936 1338.874146 1327.059326 1317.372559 1308.126587 1310.932129 1316.085205 1318.257568 1318.310425 1316.794067 1316.312134 1319.926514 1320.597412 1310.625977 1292.011108 1275.056152 1268.514771 1279.225342 1287.01355 1297.97522 1309.20166 1322.368164 1334.534302 1346.871948 1358.47998 1361.545898 1356.964966 1352.897705 1350.505737 1348.110718 1345.808105 1343.819702 1341.11084 1334.711792 1329.941528 1326.817139 1324.788818 1323.590332 1323.446777 1322.839966 1321.851562 1320.5802 1319.713745 1318.585449 1316.350952 1312.026245 1308.449341 1307.54248 1305.554688 1297.410278 1294.310791 1288.027466 1278.769409 1267.012085 1255.831299 1252.664673 1249.301636 1245.685547 1241.723389 1242.749146 1252.33728 1263.211548 1272.043213 1283.70105 1297.778442 1307.124756 1313.353149 1324.366577 1331.550293 1335.383179 1339.978149 1342.455566 1340.022949 1333.104126 1328.542114 1332.313721 1337.893188 1341.697998 1346.921875 1351.810547 1357.869385 1363.468384 1367.092163 1373.364502 1378.05188 1378.175781 1377.75769 1378.385132 1379.6521 1381.528198 1383.724731 -1620.652832 1621.021362 1637.136841 1656.835938 1671.036865 1683.60022 1694.473389 1704.448608 1709.877441 1711.529419 1712.843262 1715.328491 1719.150391 1720.825317 1720.184326 1719.327759 1718.231689 1717.739014 1718.205688 1719.782349 1720.798584 1720.233032 1715.095459 1707.571655 1699.664062 1688.427856 1679.285767 1672.741455 1663.73877 1653.959229 1654.289185 1659.625244 1668.855591 1675.596436 1684.234863 1678.831665 1666.504028 1656.661499 1644.114624 1631.688599 1642.238892 1645.313232 1647.590088 1661.080688 1668.677734 1677.499268 1680.442627 1664.116211 1647.126587 1634.296753 1621.249756 1612.495972 1602.397949 1609.630127 1623.571777 1637.071411 1653.253174 1671.551025 1680.490723 1681.716431 1680.672974 1681.566895 1682.365601 1677.219971 1668.717773 1666.194946 1665.661133 1665.963867 1665.879639 1672.930054 1670.112427 1659.27356 1652.83252 1648.254395 1645.72583 1639.411865 1630.096191 1618.920898 1607.267456 1598.988281 1584.845215 1572.996338 1557.695068 1543.52771 1530.606323 1517.873413 1526.978271 1551.664062 1564.123657 1567.18335 1563.697144 1560.001221 1567.811523 1583.84729 1602.710449 1616.022339 1624.647095 1625.140625 1614.424561 1603.421387 1590.820312 1577.952026 1561.694824 1544.369995 1523.051025 1512.457642 1496.798828 1489.959839 1474.143555 1466.121338 1466.86499 1459.517944 1454.613281 1453.381226 1428.008057 1414.594482 1406.567139 1400.74231 1406.416504 1412.684082 1417.645752 1424.967896 1432.574219 1444.521118 1460.545776 1477.424194 1497.87915 1512.914795 1528.019165 1538.810181 1547.134888 1557.312256 1570.61145 1582.375488 1590.779541 1593.471802 1601.193726 1615.943237 1634.592407 1645.154175 1646.79541 1638.533447 1632.60437 1635.270996 1635.46875 1636.231689 1635.238525 1635.068359 1642.3396 1656.321167 1671.984741 1678.015137 1675.208984 1672.14978 1668.424805 1664.723389 1660.7948 1657.656616 1655.12561 1653.429688 1652.772461 1653.267822 1654.270264 1655.143311 1655.604614 1655.036743 1653.294067 1650.45459 1647.223877 1642.065796 1636.943848 1632.03772 1626.936523 1621.828735 1611.864014 1598.004395 1590.938843 1583.764526 1574.755859 1569.780762 1561.527466 1553.289795 1548.860962 1541.583496 1532.793457 1524.362061 1516.852661 1516.953613 1523.099609 1533.826416 1550.449463 1562.821411 1574.517944 1589.683716 1594.546631 1587.823486 1580.888428 1575.328369 1568.985718 1564.702515 1563.253052 1560.387817 1555.764771 1551.569702 1547.376587 1541.048462 1536.202759 1534.389771 1528.55127 1524.103882 1520.689209 1517.636597 1514.248169 1510.272339 1513.334106 1519.646606 1525.609497 1524.511353 1516.5354 1516.362549 1512.429199 1501.83667 1491.309448 1485.591309 1478.716431 1479.312134 1488.816284 1497.115601 1504.137695 1513.767822 1524.065552 1540.593506 1550.392456 1560.072998 1568.336426 1574.950562 1578.147949 1579.307495 1575.474976 1573.486206 1574.656372 1583.66748 1595.144043 1609.31665 1608.889404 1598.700928 1586.884888 1575.953857 1564.63916 1550.114258 1538.998169 1522.078003 1505.343018 1492.577759 1476.821411 1466.603638 1456.991211 1444.803223 1435.522339 1425.126099 1418.167114 1410.70459 1403.461182 1401.730957 1418.871338 1431.62207 1443.875244 1455.568481 1466.14502 1479.654175 1492.361816 1502.182251 1502.899658 1509.046021 1527.41687 1536.856079 1540.68042 1540.495239 1539.105347 1547.769409 1546.797485 1555.153687 1559.62915 1577.218628 1589.795776 1605.162598 1618.188721 1624.957153 1624.44104 1624.297974 1621.405273 1614.220581 1609.183594 1602.352051 1597.968384 1594.325195 1594.419189 1592.631226 1588.158569 1583.271851 1575.473022 1570.044556 1570.281982 1571.682129 1571.401611 1573.612549 1579.059937 1585.194214 1591.880737 1597.669312 1594.859131 1585.122437 1565.89856 1552.209839 1534.433838 1519.002686 1501.824585 1496.212402 1496.070312 1491.651123 1500.779785 1499.828369 1490.390381 1475.14502 1466.417725 1466.237061 1462.769897 1452.449341 1440.639771 1429.811768 1418.225464 1411.24646 1414.888428 1417.001465 1409.299561 1402.494385 1392.728027 1392.480957 1403.781494 1418.572388 1435.105835 1451.268799 1468.928955 1489.632202 1499.281494 1508.506348 1512.594604 1512.116211 1496.822388 1489.75647 1498.131348 1505.299438 1516.571899 1506.37439 1495.539673 1485.907227 1472.807007 1456.45166 1440.112793 1428.800049 1427.23877 1426.835327 1432.453491 1448.162109 1445.630981 1444.364624 1437.8125 1447.984131 1465.858521 1479.403442 1480.896973 1479.767822 1476.907837 1471.026611 1465.736938 1461.943359 1459.587646 1457.71875 1457.382568 1460.646851 1460.632812 1458.966064 1457.870972 1456.057861 1453.549194 1450.641602 1444.216431 1438.585205 1430.272461 1426.453003 1422.891479 1419.32251 1417.484619 1415.534546 1407.694946 1400.556885 1401.347656 1407.688843 1410.462158 1410.693848 1408.569336 1404.374146 1400.157715 1401.201294 1404.472656 1405.306885 1403.790527 1407.651123 1411.925903 1416.72168 1419.03125 1419.360107 1418.432739 1416.508545 1415.373291 1416.753662 1417.522705 1418.012695 1418.619385 1420.04187 1423.440918 1426.484131 1427.531616 1428.086304 1429.088501 1430.144653 1430.346802 1430.168823 1427.131836 1417.035889 1406.709717 1411.806885 1416.420776 1414.314209 1401.243652 1400.571167 1415.494263 1418.296143 1412.854614 1400.987549 1389.294312 1381.444458 1375.6698 1364.711792 1347.678955 1342.683228 1348.448975 1349.451294 1345.552246 1342.193237 1339.422974 1335.230469 1328.750122 1318.32605 1314.102051 1316.08252 1310.473022 1304.29248 1302.544434 1306.979614 1338.439575 1362.684204 1383.61145 1394.228271 1403.704102 1410.412598 1415.039429 1420.824097 1429.207275 1443.637939 1446.400879 1447.824219 1446.167114 1446.209839 1446.560791 1446.17627 1444.015381 1439.013062 1433.401855 1425.360718 1424.630127 1426.591675 1420.983643 1406.862793 1409.22998 1417.93689 1407.621704 1391.332153 1381.804321 1377.443481 1384.983521 1397.258179 1400.640869 1403.334595 1411.027222 1418.014282 1425.257568 1434.745972 1448.075317 1459.987793 1471.154053 1479.880371 1480.612305 1474.368408 1467.373901 1463.754272 1466.382568 1471.59436 1484.740356 1475.91626 1461.006592 1446.758179 1425.838135 1440.250366 1440.978638 1421.294922 1406.139404 1390.546875 1372.38501 1359.375244 1350.297607 1341.142944 1330.122681 1319.896973 1316.158691 1323.14502 1327.13916 1327.379639 1327.001465 1326.647095 1325.936279 1322.989624 1315.272095 1300.339966 1284.727905 1272.694458 1280.099243 1286.728271 1294.71814 1306.869385 1320.622803 1332.216675 1343.616577 1356.394531 1365.396973 1367.973267 1364.628418 1356.628662 1352.213379 1349.298584 1346.15625 1342.772705 1339.269653 1335.057739 1331.514648 1328.761719 1327.486084 1326.361572 1325.425659 1323.915527 1322.105713 1320.105225 1317.694702 1314.598267 1310.890503 1306.133423 1304.366699 1304.250244 1302.479736 1297.447021 1293.897461 1288.178589 1276.130859 1267.310303 1263.68396 1258.418823 1254.479004 1249.533447 1244.255615 1241.748779 1247.983643 1257.641479 1266.075806 1275.543091 1289.51709 1302.241333 1316.104614 1332.723999 1331.821289 1333.204224 1336.182617 1338.816772 1336.585205 1331.627441 1328.449829 1330.31604 1334.008423 1337.003906 1340.09082 1345.192749 1350.957764 1356.520264 1359.734009 1363.056641 1364.392334 1365.338867 1366.994873 1371.195801 1374.891235 1378.0979 1379.443604 -1641.687012 1639.322144 1641.693115 1658.123779 1672.925049 1688.941406 1702.326782 1709.662842 1710.984619 1711.300781 1711.717651 1713.187134 1715.277222 1715.92395 1715.364136 1714.646973 1714.19104 1715.906128 1718.491943 1720.17749 1720.556885 1717.576294 1710.028687 1703.693726 1696.962646 1686.927856 1677.286255 1668.996094 1659.180298 1656.192749 1663.348755 1668.610596 1676.354004 1683.466675 1684.807373 1677.388672 1667.212891 1654.710938 1644.671265 1636.632812 1656.907349 1656.421143 1653.631714 1660.849854 1668.556274 1675.289429 1676.402344 1665.453369 1649.155884 1639.182373 1626.212036 1615.5 1604.734497 1620.532715 1634.223022 1643.767822 1660.708374 1677.470581 1689.480835 1694.238403 1691.555298 1691.69165 1691.283203 1685.158813 1682.480225 1680.59082 1676.818359 1675.297729 1673.36084 1666.425537 1659.584351 1652.319946 1647.599609 1642.950684 1637.998291 1633.086914 1624.830322 1613.610107 1604.037354 1594.517944 1581.713867 1570.703857 1555.6604 1539.526489 1529.361206 1517.905884 1533.552856 1558.56604 1577.026855 1583.849731 1580.805176 1575.914307 1570.321655 1580.217041 1598.353027 1609.728638 1622.385254 1625.057251 1613.139771 1601.175415 1584.422119 1569.554321 1550.900513 1535.133911 1526.633179 1518.728271 1506.946899 1495.523438 1490.238281 1483.777344 1481.994629 1473.218628 1462.109619 1462.403687 1436.189697 1417.366577 1409.633789 1403.095459 1402.736816 1408.155762 1412.305054 1415.559814 1425.121216 1440.503784 1455.009888 1468.157715 1484.298096 1505.435303 1520.72168 1532.047607 1540.56311 1548.301147 1555.737183 1561.821045 1569.836792 1578.262695 1587.926147 1594.365723 1603.035645 1614.959839 1618.207153 1618.052856 1623.251343 1632.86377 1640.905273 1645.527344 1647.715088 1646.868896 1649.182739 1659.335449 1676.49585 1685.412476 1684.033936 1678.427002 1673.776245 1670.945801 1667.043579 1662.748901 1659.378174 1657.047241 1655.992065 1656.426758 1657.492432 1658.861816 1659.828125 1659.519409 1658.467163 1655.2854 1650.847534 1645.911499 1639.784302 1633.880127 1626.937134 1620.793579 1613.977295 1603.108643 1590.038208 1582.425659 1574.078125 1560.669556 1554.772949 1548.931763 1547.900391 1541.658936 1533.287354 1524.251953 1520.607422 1521.806396 1528.150146 1539.071411 1553.383789 1565.954956 1579.775635 1589.801758 1590.130371 1585.776001 1579.280273 1573.470581 1563.285034 1560.349976 1559.266479 1553.673584 1549.368286 1547.832886 1545.665527 1542.063721 1539.765259 1538.193115 1530.322388 1523.696411 1521.651001 1518.875244 1515.573608 1512.665527 1512.060425 1518.528931 1525.120239 1529.832397 1525.446655 1523.647095 1515.20813 1505.246582 1498.533569 1491.910767 1488.315063 1483.099365 1490.219604 1499.166016 1505.534546 1512.405762 1525.533325 1539.976562 1548.435547 1557.425903 1566.90271 1576.473755 1582.424194 1588.026855 1588.266846 1588.766113 1588.071777 1592.071777 1602.361206 1613.229004 1612.941895 1601.270752 1587.000122 1575.870239 1561.775635 1546.28479 1535.379517 1518.078979 1501.706421 1490.145264 1474.235474 1464.436401 1456.847412 1447.328125 1436.563965 1430.930176 1423.217163 1414.049805 1407.196533 1403.550659 1415.693604 1430.644897 1442.845581 1455.374878 1464.513306 1470.609009 1480.393677 1494.443359 1506.58667 1515.980713 1527.211304 1538.313965 1550.682861 1554.435181 1559.28479 1567.713501 1565.068237 1570.59021 1579.248535 1585.999023 1596.519653 1612.880493 1621.364258 1622.189819 1616.5177 1614.781616 1613.17334 1609.786133 1601.091064 1593.057373 1585.475342 1596.441895 1602.974243 1601.375977 1594.391724 1587.933716 1576.390015 1571.795166 1574.929688 1577.971802 1578.113525 1579.610596 1584.681763 1592.848755 1598.852417 1596.429688 1587.141357 1576.831421 1566.373535 1553.244629 1538.983276 1519.765869 1500.162231 1487.069702 1480.256958 1475.787354 1487.809204 1491.256592 1490.109741 1472.31311 1460.864624 1455.086548 1451.596436 1442.059448 1428.524902 1420.756104 1413.235596 1419.708496 1429.614746 1427.733521 1417.22876 1408.256226 1397.601562 1394.048462 1403.035278 1416.795898 1429.974243 1446.199341 1463.727661 1485.73877 1500.248657 1514.35437 1520.990479 1520.767334 1513.27002 1511.014893 1517.951294 1520.542114 1516.154175 1506.056885 1493.851074 1482.580078 1467.161987 1451.719849 1442.685059 1444.098633 1444.408691 1445.635132 1445.140625 1466.206177 1461.388916 1461.932007 1456.349854 1449.344971 1462.230103 1478.580566 1483.004272 1482.55542 1479.687866 1475.138794 1469.872314 1465.569702 1462.626343 1459.46936 1455.290039 1452.749878 1451.574829 1450.131104 1449.268799 1448.788452 1447.868164 1445.898682 1443.172852 1439.945312 1432.958618 1427.763306 1422.146851 1417.546631 1415.346436 1409.665283 1401.263306 1402.363281 1410.188354 1414.652832 1415.539062 1414.488037 1411.446777 1406.711792 1402.95813 1404.63562 1407.529541 1409.271484 1409.949097 1412.647949 1417.918579 1422.742798 1422.812866 1421.439209 1419.28418 1417.259277 1415.803589 1416.433228 1416.870728 1416.756226 1415.485962 1414.662109 1418.08728 1422.039429 1423.793701 1424.07251 1426.608887 1428.190918 1429.063354 1429.465698 1429.440186 1422.211426 1411.060791 1399.430054 1403.352417 1402.621216 1392.958008 1394.056885 1406.729248 1404.005493 1396.455566 1387.97644 1377.264404 1365.638062 1359.707275 1348.183105 1355.054932 1361.813721 1364.561401 1365.606445 1362.076782 1355.677856 1348.614014 1341.713745 1334.484985 1322.472656 1317.289062 1318.599976 1307.706909 1303.396729 1305.482422 1308.21814 1340.374146 1366.722412 1387.451416 1396.030273 1404.129883 1415.818726 1427.385254 1420.315674 1426.460449 1432.012329 1444.507202 1452.515381 1452.205322 1451.167969 1450.240112 1451.724243 1452.370605 1448.069092 1440.146973 1434.418823 1436.87915 1433.216553 1427.288086 1412.815063 1421.810669 1424.845337 1407.486694 1397.789429 1392.83606 1393.024414 1385.378052 1395.100342 1404.749023 1402.523926 1412.97583 1421.127686 1430.419189 1440.349365 1452.784546 1461.341309 1473.005859 1484.708374 1491.776123 1486.309204 1482.15686 1483.626099 1484.116821 1488.90625 1491.301147 1477.423828 1463.26001 1453.626709 1435.64917 1452.106323 1448.738159 1433.626953 1410.671143 1395.555298 1384.508789 1366.323608 1352.462891 1345.386841 1333.571899 1331.639526 1328.761719 1336.652222 1339.778442 1341.659912 1339.317139 1334.826782 1331.236572 1323.794067 1308.539062 1296.342651 1284.391724 1274.888672 1290.509155 1295.779785 1301.515381 1310.727051 1326.513794 1339.978638 1351.845459 1363.031616 1369.011719 1368.741333 1366.681274 1359.025757 1353.453247 1349.983398 1346.132935 1342.841309 1339.794189 1336.277954 1332.352051 1330.415039 1330.077026 1328.621704 1327.006958 1324.390503 1321.420532 1319.007935 1315.614136 1308.811401 1305.417603 1302.624268 1299.15271 1297.852295 1296.894287 1293.607666 1284.947632 1279.07373 1280.194214 1279.254517 1273.953491 1266.920044 1260.418945 1255.28479 1248.549072 1243.401001 1244.18103 1253.352783 1264.391602 1276.492188 1292.325928 1304.951904 1318.595459 1328.763184 1329.893921 1329.644775 1330.896606 1333.896118 1332.883301 1329.412842 1326.641602 1327.758057 1330.534546 1332.621094 1336.593994 1339.900635 1342.859375 1349.045654 1353.702148 1354.998779 1355.432739 1356.831665 1359.685547 1362.947021 1365.773926 1367.88855 1368.262939 -1660.520386 1663.844727 1662.608521 1668.537842 1678.280151 1690.709351 1704.99939 1709.912231 1710.307617 1709.318237 1708.354858 1707.817993 1708.685913 1709.779663 1709.521973 1707.854248 1709.235229 1714.129028 1718.168335 1720.479126 1720.08374 1712.966797 1705.820679 1700.907349 1694.574707 1685.36377 1673.770264 1665.756836 1658.606445 1661.49585 1669.727173 1676.094971 1682.734497 1686.381348 1684.96582 1675.253296 1665.981201 1655.661377 1642.979492 1654.840942 1662.060181 1661.268066 1656.887085 1662.398926 1670.308472 1677.437012 1682.616089 1674.101074 1656.936646 1642.878174 1634.082153 1617.620117 1611.202148 1629.439209 1640.969971 1660.198242 1673.678467 1683.923462 1699.285034 1704.231567 1703.263916 1702.051392 1699.792969 1695.62854 1690.33606 1686.386108 1682.920654 1673.78125 1664.299194 1654.824585 1648.968384 1641.282471 1639.831787 1638.423584 1632.772095 1622.011719 1614.943115 1606.095337 1598.589966 1587.855225 1578.688477 1567.136353 1552.90271 1539.834717 1528.684448 1519.069336 1535.933594 1559.658936 1585.060425 1595.55957 1595.518066 1588.757568 1583.642822 1581.259155 1595.438721 1609.095947 1621.769043 1622.574829 1608.221069 1592.765381 1575.000122 1559.230225 1552.025024 1554.477539 1551.964233 1538.01709 1523.485107 1516.116089 1510.623657 1501.098267 1490.339966 1476.102539 1477.216309 1477.102661 1449.20105 1427.858643 1413.187744 1408.126953 1404.425171 1405.154419 1408.567749 1411.768311 1421.520386 1435.319824 1447.112183 1459.548584 1473.59668 1495.236206 1509.185913 1523.15332 1531.856323 1538.746338 1545.719849 1550.812378 1553.257202 1558.363281 1571.583496 1580.290161 1585.512695 1590.463501 1592.95459 1603.501099 1621.44873 1635.626587 1645.026733 1653.028442 1657.832764 1659.991211 1661.599976 1667.750488 1672.139282 1682.362671 1684.787354 1683.189087 1679.263672 1675.963623 1672.200317 1667.698608 1663.562012 1660.962036 1659.361328 1660.416138 1662.19519 1663.887573 1663.949585 1663.007812 1661.539795 1659.131104 1654.108521 1648.039429 1641.093262 1634.222046 1626.996216 1620.77832 1614.300659 1608.19104 1599.951294 1591.037231 1585.581665 1575.435425 1571.080444 1566.556152 1560.510498 1552.524536 1540.264282 1529.349487 1522.545776 1525.251465 1532.246948 1545.09021 1559.022949 1570.682129 1584.594971 1588.992188 1588.824219 1585.00647 1577.200806 1571.158447 1565.99231 1561.57373 1559.320435 1551.586548 1549.267334 1548.7146 1546.166626 1543.520752 1540.670898 1537.99585 1530.089355 1524.470703 1523.294189 1520.758057 1517.499023 1514.629639 1512.686768 1516.745972 1522.832764 1534.595215 1536.939819 1530.330566 1517.570435 1508.595459 1502.382324 1497.167114 1492.868896 1489.313354 1491.239014 1498.516846 1505.202393 1511.230591 1521.527222 1536.486084 1543.4552 1551.752197 1560.623779 1572.765503 1579.585571 1587.011597 1595.359497 1601.580811 1606.381714 1607.175903 1611.682495 1613.846069 1611.605469 1600.949341 1586.086792 1574.925293 1559.366943 1543.193481 1532.275513 1520.997437 1505.082642 1493.589111 1481.124023 1470.25708 1462.174927 1451.960815 1441.206543 1432.442383 1424.588379 1416.503784 1409.982788 1405.048096 1416.727173 1430.700439 1438.597656 1448.96875 1457.194092 1463.735474 1472.576538 1485.512817 1507.483765 1524.676636 1535.114502 1543.83313 1554.15564 1563.860107 1572.741211 1581.478027 1584.172363 1583.302734 1595.924927 1601.918945 1609.049438 1618.02832 1619.801392 1614.062988 1607.322388 1604.399658 1605.420654 1602.09021 1595.176025 1580.60144 1581.906128 1597.481689 1611.571777 1610.945068 1598.418213 1589.721313 1577.118042 1575.678101 1581.321899 1586.01355 1585.045898 1584.503418 1587.950806 1587.738403 1585.644897 1581.074341 1573.270996 1563.897827 1558.521484 1549.514404 1540.950195 1530.142822 1515.974243 1498.598999 1481.455444 1471.427124 1472.412354 1479.244873 1478.443848 1468.675781 1454.515259 1443.538574 1438.487671 1427.290771 1422.416626 1422.029541 1426.943481 1435.862061 1443.046387 1438.125 1426.733887 1412.030273 1401.274902 1394.686523 1402.401733 1414.375488 1426.452271 1443.927734 1460.287231 1478.936279 1494.374878 1509.256958 1527.067261 1535.994019 1532.314575 1532.227661 1533.524292 1527.177368 1515.039429 1500.515259 1486.159668 1472.314209 1460.596924 1459.322021 1459.16626 1457.255615 1456.431763 1460.960205 1459.663452 1464.743652 1473.166138 1474.30896 1470.621094 1468.23645 1468.08374 1481.097778 1485.942505 1485.807129 1483.409424 1478.100098 1473.140869 1469.006836 1465.447632 1460.850098 1452.576904 1449.984009 1449.019531 1446.477051 1442.290527 1441.868774 1441.375366 1440.763916 1439.038452 1434.707886 1429.852417 1424.68811 1417.891602 1414.602417 1412.366455 1404.047729 1405.933105 1414.377441 1416.855713 1417.474731 1417.349487 1416.776733 1414.551758 1410.598022 1410.474365 1412.261108 1412.648682 1412.956055 1413.571289 1419.722046 1429.584595 1427.908447 1425.931519 1422.76355 1418.950195 1416.530151 1414.257812 1414.883911 1415.46936 1414.80188 1413.266357 1412.207031 1414.666138 1418.446533 1419.03894 1414.982788 1417.357788 1421.957153 1423.800415 1424.030518 1423.619141 1420.415894 1416.256226 1403.828125 1387.984863 1389.294312 1386.189697 1388.404419 1393.033081 1390.036011 1382.526611 1374.756348 1366.760864 1352.646484 1353.118042 1362.369751 1368.498169 1371.815674 1373.678955 1374.541138 1372.396851 1363.942749 1355.945679 1347.572754 1338.523926 1327.716187 1316.603516 1317.465942 1303.265015 1305.208252 1305.026123 1316.121826 1343.444336 1369.734863 1383.174194 1388.204956 1390.043945 1396.261108 1400.126709 1404.109497 1406.270508 1413.545166 1433.783081 1445.470093 1453.520752 1454.539429 1454.98999 1455.966309 1456.650635 1454.460083 1448.772217 1445.369507 1445.017334 1439.942749 1429.681274 1426.869263 1431.8396 1423.740479 1405.863159 1400.962646 1398.581665 1398.084473 1393.96106 1389.389893 1404.929688 1409.864136 1413.483032 1422.474976 1433.125732 1443.802124 1454.30481 1461.831543 1474.018799 1486.837036 1501.902832 1506.393677 1504.219849 1501.348267 1497.63855 1490.404053 1482.419067 1472.613892 1460.970947 1451.302612 1451.866577 1463.844849 1458.390137 1442.647827 1423.174805 1402.150146 1390.475586 1375.988159 1362.892822 1350.179443 1346.749268 1343.308716 1338.980469 1352.439819 1356.296265 1350.637573 1345.925049 1340.538696 1333.86853 1323.660645 1307.132324 1294.639648 1283.4375 1278.766968 1298.617676 1307.285889 1311.599609 1319.514282 1330.207031 1343.556396 1356.980103 1368.189697 1369.650513 1368.865479 1365.853516 1359.728027 1354.470947 1350.169189 1345.603882 1342.839111 1340.241943 1337.469482 1335.088623 1333.402466 1332.470215 1330.607422 1327.785156 1325.14978 1318.762817 1315.77063 1306.894775 1303.50293 1302.772705 1301.151733 1296.357788 1292.359497 1292.281494 1291.234497 1289.606201 1291.788696 1290.922363 1287.468628 1283.045654 1273.519043 1265.356812 1260.065186 1253.768921 1247.320923 1243.692871 1251.931274 1263.250732 1275.358521 1290.71228 1302.345459 1310.765747 1314.107544 1314.585815 1317.745728 1327.348633 1330.879395 1330.299316 1322.47583 1323.032471 1325.197754 1327.194824 1330.177734 1333.520996 1335.971558 1337.860352 1340.364014 1344.274658 1346.686035 1347.881348 1349.700928 1353.085815 1355.307739 1356.24231 1357.178467 1356.620972 -1670.288208 1673.970825 1673.852051 1673.709351 1675.161011 1685.647827 1698.078857 1704.491821 1703.824951 1701.410889 1699.855957 1700.60144 1701.26123 1700.568481 1698.0354 1696.017822 1709.125732 1713.202515 1716.997192 1719.836426 1716.713989 1707.644653 1703.022339 1698.637329 1691.800049 1681.697876 1669.448486 1665.646362 1665.167603 1670.897095 1680.605225 1686.624512 1691.543091 1689.952637 1685.981934 1676.613403 1666.629761 1658.617798 1655.459473 1664.949585 1667.887695 1664.706421 1658.323364 1666.481812 1674.221069 1681.079834 1685.634766 1680.241821 1668.352905 1645.873779 1637.566772 1620.926514 1617.653076 1636.814819 1648.991943 1669.736206 1681.065308 1691.844971 1705.846069 1716.296143 1717.005981 1709.965332 1702.763184 1696.411743 1690.087891 1685.749878 1674.528198 1658.557251 1649.866699 1644.004028 1636.742676 1628.790527 1630.800781 1631.848755 1627.169556 1614.926514 1602.846313 1596.611816 1588.771362 1580.704712 1573.412598 1561.084717 1550.509766 1537.325073 1526.163574 1521.129272 1534.697754 1560.09314 1586.516602 1600.296143 1606.815308 1609.272949 1607.02478 1600.255127 1595.725098 1614.334717 1624.672607 1619.608276 1606.748413 1593.917114 1575.824341 1565.452881 1572.585693 1571.175903 1561.717529 1552.172119 1540.90625 1531.195557 1521.583008 1511.217407 1492.401489 1485.823608 1489.70459 1485.429932 1462.170654 1442.96936 1425.953491 1413.72522 1410.304565 1406.723877 1406.357178 1410.109497 1416.476318 1430.551392 1439.755615 1455.140015 1469.316895 1487.142334 1499.424438 1508.467163 1519.293457 1526.253418 1530.098633 1530.864258 1535.293213 1546.138672 1554.185669 1561.43457 1566.391846 1569.47644 1576.787231 1596.010254 1617.181396 1636.032959 1647.967773 1661.124756 1665.987427 1666.237915 1666.360107 1674.060059 1676.985718 1680.501099 1684.110229 1685.430176 1684.287964 1680.197998 1675.630371 1670.631226 1667.848389 1667.383789 1666.729614 1667.507568 1669.648315 1669.643799 1668.055786 1666.036255 1663.772705 1661.068848 1656.598999 1649.402588 1641.282593 1632.979736 1624.786377 1615.181763 1609.013306 1602.701172 1597.643188 1592.038818 1586.935181 1581.42627 1577.534302 1576.772339 1570.99646 1562.507812 1547.30249 1532.820801 1523.005371 1526.979126 1533.378052 1544.207886 1557.912354 1570.708984 1580.7229 1585.818115 1585.07605 1578.428955 1574.334351 1574.61731 1574.538086 1570.368286 1566.071167 1562.556519 1556.075928 1551.797974 1547.436401 1544.648315 1541.059204 1535.331787 1535.290894 1532.520996 1526.923096 1522.998657 1519.539429 1516.026001 1513.876221 1516.647705 1521.793335 1530.667114 1538.849487 1533.935181 1516.805542 1508.706421 1504.120483 1499.281982 1495.753052 1493.971191 1493.520264 1500.224487 1506.42749 1511.861816 1520.664429 1529.750732 1537.439209 1545.44519 1552.458862 1563.373169 1573.342651 1582.511963 1594.615479 1605.750977 1613.113892 1614.918335 1615.045654 1613.965332 1609.574585 1599.12561 1583.128662 1573.631592 1557.534668 1542.273926 1532.405151 1522.010254 1506.150269 1494.009277 1482.019043 1470.109741 1461.388428 1451.483276 1440.92334 1431.861938 1424.044189 1417.846313 1411.924316 1407.10498 1416.1521 1431.752563 1440.708496 1454.827393 1468.763306 1480.185547 1490.172241 1499.42041 1515.371094 1530.014893 1539.573242 1549.314819 1562.123657 1569.660156 1577.384644 1587.118652 1593.979858 1600.204712 1604.650024 1612.140259 1621.72522 1624.074951 1621.030518 1612.57605 1599.085938 1595.891846 1596.731934 1593.593872 1588.520142 1571.623657 1579.085571 1594.652222 1604.627075 1608.631104 1600.985474 1591.886475 1584.899292 1582.205933 1587.831055 1591.739258 1586.662109 1578.568604 1580.162842 1578.141113 1574.034668 1569.250732 1561.434692 1548.031372 1543.231079 1540.090942 1534.684937 1527.856445 1515.551514 1502.570923 1491.225098 1475.767578 1461.577026 1464.024658 1463.749512 1456.996948 1444.676147 1432.845947 1424.429932 1423.669922 1428.050659 1434.796997 1443.495605 1452.670166 1455.976807 1443.507812 1431.79248 1419.079712 1403.576416 1394.687378 1401.915283 1413.067261 1423.654663 1440.835571 1455.57251 1469.809204 1485.630249 1497.588257 1523.404053 1540.901733 1546.135132 1545.251221 1541.012085 1530.824219 1517.805664 1501.864258 1486.138062 1471.020752 1466.858521 1471.150269 1470.321411 1468.727661 1468.59082 1470.536743 1472.540405 1475.244873 1480.157959 1482.030151 1480.285156 1481.403198 1486.099854 1489.997925 1490.715698 1489.710571 1487.660522 1482.260376 1476.2948 1472.157227 1468.374268 1464.917847 1459.33667 1453.828369 1450.154175 1446.224243 1439.977661 1439.158936 1438.887329 1438.530396 1434.415283 1426.382324 1425.441284 1421.684204 1415.983887 1415.307007 1415.51062 1414.658081 1416.185547 1418.129639 1419.449707 1419.646606 1419.223999 1418.293213 1415.8479 1413.680176 1414.324463 1416.627808 1417.848022 1418.345337 1422.277954 1428.994629 1430.381836 1429.512207 1427.531006 1421.631836 1415.260742 1414.461426 1412.764648 1412.220093 1412.44043 1411.320801 1409.316284 1408.290161 1411.564087 1415.532227 1414.731812 1410.585449 1408.891602 1412.416382 1414.195312 1413.020752 1409.111694 1408.357178 1407.021362 1402.003906 1389.142578 1377.746948 1378.0271 1377.913696 1378.133545 1375.733765 1371.49939 1366.237671 1356.841675 1361.237793 1368.731201 1374.663452 1378.468506 1379.952515 1381.569458 1381.935181 1379.921875 1367.382446 1358.452148 1349.217041 1339.091919 1331.385742 1312.44104 1304.231812 1305.077881 1305.116211 1304.403931 1324.267334 1347.145996 1367.311157 1372.460571 1367.987061 1367.142944 1376.491577 1386.731567 1388.154541 1385.424316 1401.331421 1418.157349 1440.78833 1448.861816 1455.694824 1459.252075 1460.298462 1460.846191 1461.922852 1459.050171 1456.920654 1454.772949 1449.599976 1440.141602 1442.223022 1436.835449 1422.314331 1413.745483 1404.578857 1403.597168 1404.331299 1400.708374 1393.681152 1405.995605 1415.012817 1419.196533 1426.931885 1434.553101 1444.049683 1454.284546 1463.544434 1475.373901 1489.862793 1506.161865 1517.674683 1521.806763 1512.832397 1504.433594 1494.074829 1480.985718 1472.2323 1463.975952 1458.263428 1462.701294 1472.567505 1466.158081 1446.905029 1430.1875 1418.378662 1402.71582 1385.293945 1369.350464 1368.898438 1369.238403 1354.197266 1356.424561 1370.18042 1366.200317 1355.003418 1347.525024 1339.845947 1330.726562 1318.585938 1300.998901 1290.10144 1282.584961 1285.69043 1305.97644 1317.99353 1326.272095 1329.008545 1341.944824 1349.508179 1363.169556 1369.518433 1369.131714 1368.080322 1364.703979 1358.895264 1354.005737 1349.104492 1344.272949 1341.539673 1339.639282 1338.555542 1337.362549 1336.003052 1334.722046 1332.573608 1330.029053 1327.728271 1320.787964 1317.303345 1311.339722 1307.646851 1304.359497 1303.790405 1300.30542 1297.361816 1294.682495 1292.989136 1297.562744 1300.415161 1300.220215 1294.979614 1288.260498 1280.576416 1270.821533 1264.664673 1258.221313 1251.833984 1245.565063 1250.849731 1259.978394 1271.471558 1282.699463 1294.541992 1301.85022 1303.424194 1303.366089 1308.036621 1314.902588 1317.250122 1314.19751 1315.320435 1320.027466 1322.97937 1326.044434 1329.03418 1331.724976 1333.335449 1332.864502 1330.07959 1335.420166 1338.538208 1340.297607 1343.037109 1345.897827 1347.131226 1347.297974 1346.636841 1344.773315 -1666.841675 1668.210571 1666.54187 1663.390137 1661.862427 1673.405518 1684.52356 1691.009399 1691.916504 1690.147949 1688.345093 1690.542358 1690.392456 1688.844482 1690.189819 1697.231201 1708.775757 1712.10498 1713.687622 1714.679932 1712.249878 1706.380005 1700.865356 1696.132812 1688.052124 1676.810547 1668.323608 1669.992676 1672.32251 1680.425537 1692.133545 1697.588501 1696.700439 1690.950317 1685.700073 1677.869629 1668.532227 1658.479248 1664.481445 1671.50293 1672.276367 1668.76355 1666.00415 1671.726074 1676.928589 1682.73645 1686.953735 1683.655884 1673.463013 1651.252686 1639.69873 1623.313354 1623.451538 1641.061646 1656.993652 1674.991333 1688.789062 1699.76123 1714.633423 1724.251099 1721.087524 1709.696045 1697.287476 1689.62207 1682.878296 1675.893677 1664.75293 1649.863281 1637.400391 1632.750122 1624.661255 1617.242188 1620.560913 1622.234619 1618.931519 1609.599609 1591.252197 1583.229736 1578.010132 1573.590088 1565.178467 1555.004395 1545.039307 1532.088501 1522.037109 1530.437866 1534.483032 1557.527466 1583.356812 1601.012817 1611.298096 1616.129761 1619.494873 1618.260986 1609.987671 1612.853149 1623.858643 1620.219604 1610.714844 1596.161987 1572.394531 1580.199463 1586.731201 1582.040894 1569.479736 1556.490967 1546.438843 1531.635498 1518.490967 1503.335815 1496.084229 1498.696777 1499.89563 1490.551636 1475.585449 1453.956299 1437.322388 1425.730713 1416.620483 1411.468628 1407.721191 1409.067017 1412.411987 1425.777466 1436.868652 1452.522827 1466.101929 1475.287964 1490.02832 1499.25 1504.99707 1509.549438 1512.545654 1516.10791 1523.552979 1529.415161 1538.40625 1545.655273 1549.702637 1553.95874 1566.565308 1589.01062 1605.787109 1629.782715 1642.375366 1657.7323 1672.455933 1670.187256 1666.563232 1675.712524 1679.138672 1681.362549 1685.355957 1690.017944 1688.206055 1684.324707 1680.312134 1675.674927 1671.785522 1673.640503 1672.737427 1673.496826 1673.992188 1673.056396 1671.038208 1668.790039 1666.415527 1662.896118 1658.657593 1650.130737 1640.507202 1630.370972 1618.567871 1605.618896 1596.305298 1592.536499 1584.394409 1582.112305 1574.628784 1571.32373 1569.070435 1570.547974 1565.733154 1560.712769 1546.105469 1534.108276 1524.500122 1527.790283 1533.476685 1541.600586 1552.577271 1564.361206 1572.928955 1575.414917 1574.070557 1571.42395 1571.398193 1574.524292 1575.859619 1575.220581 1571.723511 1564.961426 1557.78186 1550.630249 1547.612671 1546.754761 1547.268433 1548.515259 1549.29895 1541.492676 1532.562744 1525.246582 1521.214355 1517.331177 1514.958374 1516.665894 1521.432983 1528.28125 1536.470581 1535.112305 1518.52002 1509.871216 1504.766724 1499.587158 1498.310547 1497.892334 1496.880127 1503.135132 1510.052734 1517.806396 1525.991699 1532.112549 1536.381226 1544.675049 1553.462402 1564.116211 1573.652832 1585.02063 1594.951294 1606.495117 1613.578979 1614.471313 1614.256226 1612.379883 1604.912842 1594.709717 1581.013306 1571.145752 1555.860962 1540.608154 1532.625244 1525.63916 1505.245239 1492.842896 1479.178101 1465.335938 1457.225952 1447.510132 1437.365845 1430.837402 1423.937744 1418.386841 1412.677246 1407.987427 1420.73645 1432.563477 1443.020142 1456.834473 1473.930664 1482.922119 1493.104126 1506.706909 1525.858032 1533.336426 1541.037476 1550.222656 1561.807617 1570.698364 1577.927002 1585.213135 1594.834106 1601.063477 1606.500977 1611.315063 1616.931396 1618.939453 1617.02417 1612.150024 1600.667969 1587.777832 1583.737671 1581.966919 1577.097046 1568.913818 1575.60437 1585.582886 1594.378296 1598.692505 1600.190552 1596.661255 1591.684204 1589.175537 1600.369019 1594.881958 1583.669067 1569.123535 1564.936279 1564.637695 1560.218994 1555.611328 1548.454468 1540.573486 1531.713501 1522.625977 1521.071167 1516.201782 1506.41626 1497.817017 1490.560181 1475.81189 1460.833618 1452.125 1449.369629 1441.3927 1435.791626 1431.157349 1433.16748 1440.078247 1448.319336 1455.786743 1455.957031 1454.115967 1448.406006 1437.860229 1429.223633 1420.548584 1408.334595 1396.467163 1400.395752 1412.026733 1422.522095 1437.595947 1450.623901 1463.000366 1477.93457 1496.344971 1517.880371 1536.767456 1552.918457 1549.859741 1540.823364 1529.656738 1516.564209 1503.250732 1486.831177 1474.422241 1477.442627 1479.162842 1479.244507 1480.747803 1482.91748 1483.116943 1486.990967 1489.12439 1489.790039 1490.668457 1490.885986 1492.173828 1495.655762 1497.015015 1496.237061 1493.69043 1491.111328 1487.064575 1480.185425 1475.566284 1471.923584 1467.820679 1462.856445 1457.562744 1452.833618 1452.383057 1450.434814 1445.269897 1442.783081 1441.387817 1439.297607 1429.592041 1426.102173 1423.851562 1422.805542 1422.446045 1420.907349 1419.940674 1420.450562 1421.478271 1422.208984 1422.04541 1421.25061 1419.869141 1417.412476 1415.4198 1417.052734 1418.371704 1420.773682 1425.237915 1428.528442 1430.118408 1430.16626 1429.640137 1427.945435 1421.551392 1415.289062 1412.148804 1409.583862 1408.614136 1408.211304 1407.391602 1405.610229 1402.042969 1406.258423 1408.575684 1408.493042 1405.100342 1399.747925 1401.657349 1403.062256 1401.166504 1396.034912 1395.3927 1394.898804 1390.331299 1380.247559 1375.06604 1372.784668 1370.954712 1369.232178 1366.651123 1362.160278 1360.341675 1365.923462 1372.443726 1378.986816 1383.761963 1386.986328 1388.688721 1389.147583 1386.946167 1380.49707 1369.317871 1357.777588 1352.535278 1342.450684 1323.43457 1309.633911 1304.509277 1305.154297 1304.912476 1312.251221 1327.472534 1343.553223 1351.170898 1351.058472 1348.617065 1354.208374 1360.402222 1363.975098 1365.088867 1365.157104 1392.250488 1410.294678 1428.48877 1442.256836 1454.386353 1463.493164 1464.412109 1464.773926 1466.05542 1466.856445 1467.084351 1467.244751 1463.753052 1459.601807 1453.438232 1440.091431 1430.664917 1420.791992 1414.08728 1411.827271 1409.318237 1406.342163 1399.756836 1408.96875 1419.537354 1426.190918 1431.987549 1437.612549 1445.70105 1454.925781 1466.122559 1480.261108 1494.660034 1510.408569 1525.276978 1533.546143 1525.430176 1509.390991 1499.337158 1485.913574 1479.494873 1469.618774 1466.27063 1471.078003 1480.890137 1476.348389 1458.882446 1443.103027 1428.765259 1411.869141 1390.561523 1390.143066 1386.985962 1381.08606 1368.972778 1374.853882 1380.530762 1367.703003 1353.314697 1344.373047 1335.839478 1324.204712 1305.345459 1298.138062 1291.568359 1283.552002 1293.157959 1314.001831 1329.530762 1336.300903 1339.304565 1348.739502 1357.863647 1366.800903 1369.098511 1368.376221 1365.883057 1361.109375 1356.134155 1351.839722 1347.989624 1341.668823 1341.04541 1340.486084 1340.069946 1339.553711 1338.776245 1338.183594 1336.84021 1333.838257 1330.624634 1325.809814 1320.959839 1315.803223 1313.88501 1311.82019 1309.132446 1306.081543 1302.7229 1300.119995 1302.6698 1306.452148 1308.519409 1309.268311 1305.810425 1297.557251 1291.458618 1277.629883 1270.313843 1265.623901 1258.076294 1250.221313 1248.170898 1254.345459 1265.362915 1278.309448 1287.400879 1291.280273 1292.49292 1295.76062 1298.635986 1300.801636 1301.527588 1302.55249 1309.974731 1317.965454 1321.628052 1324.849609 1327.605103 1329.56897 1331.153809 1330.735718 1327.574951 1327.753174 1331.472656 1333.137085 1336.005249 1338.775269 1339.47522 1338.877686 1337.113525 1334.903931 -1658.361084 1657.535522 1654.62915 1648.430664 1650.178589 1654.934814 1665.896973 1676.797485 1679.295166 1675.861084 1674.109375 1677.279541 1678.879517 1680.339233 1688.471313 1699.268188 1706.029419 1709.303223 1710.618774 1710.569946 1708.40271 1703.832397 1698.291016 1692.025146 1683.439697 1673.605957 1671.618896 1675.166992 1680.059326 1688.867554 1698.140381 1697.156372 1694.714111 1687.620117 1681.449707 1675.611938 1668.283936 1665.776367 1672.238647 1675.387695 1675.410278 1671.700317 1669.582642 1672.703857 1677.785522 1682.564819 1693.68689 1686.417358 1674.188477 1654.878906 1639.95166 1624.377441 1627.380859 1644.545898 1660.116699 1678.807373 1692.414429 1704.781128 1722.272705 1724.487183 1717.093262 1704.706909 1693.802856 1682.616089 1668.208618 1664.555664 1657.418823 1643.840332 1629.071655 1616.903076 1613.368652 1604.972412 1607.057739 1609.255005 1606.996948 1598.708618 1584.655762 1575.344238 1566.51709 1562.778198 1555.987061 1548.894165 1537.06189 1525.723145 1523.701294 1544.014526 1553.205933 1554.040039 1577.722656 1597.049927 1611.670044 1619.879639 1625.422729 1627.567871 1625.765381 1622.063232 1624.095459 1620.563354 1610.703613 1589.834839 1583.68811 1594.343262 1594.697266 1582.277588 1568.497437 1554.586548 1542.785034 1518.759399 1509.83374 1510.816284 1517.527344 1515.880737 1508.215942 1491.850586 1479.570679 1462.353149 1444.055176 1432.469849 1423.458374 1416.060547 1411.127075 1408.813354 1411.869141 1419.967041 1434.032349 1447.469116 1461.501709 1469.930054 1479.498779 1489.438599 1494.690186 1498.296143 1501.817749 1505.571655 1511.940674 1517.501465 1522.451172 1529.36084 1535.279663 1545.685303 1561.148926 1574.976807 1591.83606 1612.688232 1627.96106 1637.776855 1650.461426 1657.266968 1662.410156 1676.205933 1682.136719 1685.273438 1690.477051 1695.348145 1693.949951 1688.766357 1684.949341 1684.33606 1684.438232 1682.180908 1679.5354 1677.709351 1675.985962 1674.539185 1673.283081 1671.65918 1668.808105 1664.583862 1659.715454 1651.493774 1641.19397 1629.565674 1617.05188 1609.0802 1600.926514 1595.671021 1585.130493 1576.699585 1570.933716 1561.94458 1557.878052 1556.587158 1551.900146 1547.228149 1540.729492 1533.852905 1529.538818 1531.36438 1534.435547 1536.503052 1545.734985 1555.803955 1563.654663 1566.662109 1567.77417 1568.171753 1570.703979 1574.210327 1576.012939 1576.232056 1574.385132 1562.664673 1555.943237 1548.940918 1547.311523 1549.546021 1554.359009 1556.455933 1553.015747 1545.720825 1534.950562 1526.87561 1522.428589 1518.331665 1515.803589 1517.217651 1521.487061 1527.255737 1535.783569 1537.790283 1526.900024 1512.757812 1509.377563 1502.671143 1502.446899 1502.684326 1501.220825 1505.722656 1513.429688 1523.324707 1530.344238 1537.646362 1544.869873 1552.917725 1562.374634 1574.922607 1584.210449 1590.911865 1598.275513 1607.942261 1613.13916 1613.451782 1610.392334 1605.713989 1597.539673 1587.384521 1577.954346 1568.294556 1554.514404 1542.86145 1535.797852 1527.846802 1511.44751 1495.127197 1483.605957 1470.449585 1459.543335 1449.796997 1439.078857 1429.390625 1422.278687 1416.59082 1410.543213 1411.692627 1419.812622 1430.351685 1442.874756 1454.637939 1469.77124 1479.831177 1489.792603 1504.472778 1521.911743 1530.813721 1538.394409 1545.757324 1553.124023 1560.839844 1572.712891 1580.461792 1590.098145 1598.745239 1603.528564 1604.003784 1603.186279 1610.334595 1612.547852 1608.934692 1601.776855 1589.885742 1575.304199 1571.308105 1568.378052 1560.017578 1570.01001 1578.401978 1587.762329 1594.283813 1599.525513 1599.496826 1600.591431 1600.480591 1602.330566 1595.406982 1581.572754 1569.617676 1554.269653 1549.346558 1547.203247 1543.487427 1538.568604 1530.327148 1519.7052 1509.019409 1504.375122 1500.870117 1492.201294 1485.039795 1477.383179 1465.792847 1453.914429 1447.499268 1443.264893 1441.455322 1444.987915 1451.146118 1454.848755 1460.386963 1465.086914 1460.675903 1453.078247 1445.563721 1433.306274 1423.929688 1410.990112 1404.625366 1405.008911 1399.845703 1400.002808 1412.604248 1422.818359 1434.667358 1445.587769 1458.675781 1479.041016 1494.835815 1515.890503 1528.504639 1553.04187 1548.708984 1538.083618 1527.890747 1514.20105 1501.299927 1483.059692 1479.359863 1483.39917 1484.179199 1486.563599 1493.836914 1499.376343 1502.05603 1500.610596 1501.789307 1504.308105 1505.442139 1503.558838 1501.221313 1504.281372 1503.890747 1501.185425 1497.331543 1492.915894 1488.02002 1482.948975 1478.713867 1475.775146 1470.664429 1464.556274 1460.766602 1458.957764 1456.573364 1453.914062 1449.225708 1443.600098 1440.826294 1436.300049 1427.95166 1426.659302 1428.126587 1428.672852 1428.406738 1427.002563 1424.610107 1424.001709 1424.5271 1425.207275 1424.762329 1423.5271 1422.753296 1421.641968 1420.331787 1419.735474 1420.32312 1422.561401 1426.856445 1428.700073 1428.827148 1428.375488 1427.349121 1424.636353 1420.238037 1415.927368 1410.474731 1403.755249 1404.189453 1405.264404 1404.584351 1402.890137 1398.98291 1399.934692 1401.986938 1402.01062 1398.785278 1393.596558 1388.366089 1392.182495 1390.502808 1383.490967 1380.278809 1379.573975 1376.442261 1373.719849 1370.891968 1368.791626 1365.425415 1363.770752 1365.102295 1368.067261 1370.89563 1376.556396 1381.8396 1386.911133 1391.487183 1394.772949 1397.073486 1397.485107 1392.263794 1381.995117 1370.912109 1361.959473 1356.157959 1340.431396 1318.341675 1306.536987 1305.306152 1305.220825 1304.675171 1314.99939 1324.284912 1331.874023 1334.771729 1335.604614 1337.533813 1340.792847 1346.27124 1360.12146 1375.593628 1387.577881 1403.838501 1416.165649 1431.294556 1441.426514 1450.642944 1461.671509 1465.541138 1464.244019 1463.293823 1465.560547 1469.583862 1475.792847 1476.123291 1472.059204 1466.446289 1452.572388 1435.739624 1429.001343 1426.930298 1418.285278 1416.384766 1412.179688 1403.509033 1413.939819 1421.994507 1427.695801 1435.8927 1444.679443 1454.882568 1466.149536 1477.661865 1489.979248 1504.193726 1517.495483 1531.160522 1543.420166 1534.610107 1518.063721 1505.465942 1495.3302 1488.666138 1481.403076 1477.148804 1477.539429 1488.040527 1485.772827 1465.320312 1451.165771 1434.653931 1414.962158 1411.484375 1416.67688 1406.549561 1393.036011 1389.197266 1385.004883 1379.492798 1365.093018 1351.755005 1341.45105 1329.82373 1316.341919 1311.727295 1311.165405 1298.337158 1285.270996 1300.111328 1315.643066 1331.720947 1342.923706 1349.078369 1356.001587 1366.493896 1369.503662 1369.057495 1365.627075 1362.769775 1358.012939 1353.450073 1352.743774 1350.28125 1346.519409 1344.893921 1343.690918 1342.723145 1342.616577 1342.580811 1342.42627 1341.911865 1340.619507 1335.781982 1330.098267 1325.375366 1321.517944 1321.809082 1320.517822 1317.719116 1313.507568 1309.141724 1304.977905 1307.785156 1315.830933 1318.068604 1315.784546 1312.049927 1308.240112 1296.540405 1289.278198 1280.815796 1273.963257 1267.268921 1258.327271 1249.17395 1252.647339 1264.501831 1276.137695 1282.728271 1284.157959 1285.390991 1287.742798 1290.385376 1290.938965 1291.460815 1301.531494 1310.731812 1317.999512 1321.913452 1324.749756 1326.095215 1326.802002 1327.841919 1327.719604 1326.101074 1316.920166 1319.179077 1324.35498 1328.145752 1331.387451 1331.846313 1331.270874 1329.09314 1325.141235 -1645.731812 1642.404907 1638.337158 1628.962891 1633.640381 1637.216919 1645.857422 1664.055298 1664.735474 1657.244629 1661.529053 1665.839233 1669.168457 1678.486206 1687.358154 1694.142334 1697.456909 1703.01355 1706.977417 1706.7948 1703.606567 1698.445923 1693.490356 1686.093872 1680.393677 1677.957764 1678.123535 1679.748291 1686.446289 1696.671509 1698.519165 1695.645386 1692.021362 1684.188354 1680.680542 1676.153076 1670.733643 1671.762207 1679.417358 1682.553467 1679.282471 1673.407104 1669.975464 1673.539307 1679.714478 1685.086182 1696.723999 1690.074463 1673.025757 1657.550659 1643.149658 1627.989868 1630.36792 1646.982178 1661.063843 1679.278076 1693.907959 1711.659668 1722.225708 1721.919067 1710.185059 1700.374756 1690.584351 1678.320923 1660.996338 1652.019409 1645.118652 1636.696167 1623.999268 1607.760376 1599.258545 1592.240479 1589.561523 1593.327515 1592.036865 1588.341187 1578.528198 1569.090332 1558.459595 1551.885498 1547.240967 1542.746826 1538.146851 1525.924805 1530.683716 1550.077026 1568.461304 1563.766479 1563.158813 1587.577759 1605.789551 1619.511719 1627.511475 1633.372559 1634.241699 1631.170776 1629.935059 1624.105103 1609.865234 1588.827515 1596.136475 1601.918945 1598.340088 1575.502197 1561.597534 1548.289307 1536.3479 1530.126465 1532.732788 1533.36377 1528.434692 1520.587158 1508.121704 1487.031616 1477.724365 1460.106934 1445.547241 1434.965942 1426.502075 1418.591553 1413.460938 1410.276611 1411.901978 1418.686157 1430.642456 1442.262939 1454.453003 1464.665649 1470.959595 1477.702026 1484.377075 1487.490112 1490.837036 1495.004517 1498.539795 1508.052002 1513.913574 1517.946167 1525.760132 1539.116699 1552.081909 1563.249512 1578.23584 1593.740356 1608.901978 1622.283325 1629.935303 1638.128052 1644.887695 1673.660034 1684.254272 1688.484741 1694.619751 1696.977173 1695.335815 1691.424805 1687.691772 1685.604126 1683.994629 1684.368774 1682.916504 1679.868652 1676.701538 1674.878418 1673.930542 1672.908447 1670.621704 1665.372192 1660.421997 1652.911133 1644.214355 1634.411133 1625.543701 1618.267334 1612.005371 1601.591553 1588.504639 1582.014282 1578.935303 1575.362305 1564.53064 1557.064575 1548.780884 1541.053345 1534.708374 1533.752563 1533.137085 1534.697144 1539.084839 1543.552734 1546.998291 1548.375122 1557.174561 1560.738281 1562.095703 1563.154541 1567.640503 1572.267212 1575.613403 1576.595581 1574.864502 1561.688354 1556.028564 1549.99353 1554.708252 1561.92981 1563.809937 1561.688965 1553.248535 1544.409424 1534.997192 1527.875732 1522.942017 1519.181152 1516.56189 1518.232666 1521.90979 1527.19751 1535.304932 1538.890747 1533.881836 1523.62085 1514.32312 1509.631226 1507.751831 1507.22229 1506.831665 1508.675171 1515.585205 1525.7229 1533.350464 1540.529785 1548.2854 1555.99939 1568.794556 1579.985352 1588.1604 1594.226196 1603.077271 1611.548218 1613.612183 1612.241455 1605.717041 1596.757935 1588.47876 1580.988892 1573.378906 1564.323975 1552.547974 1543.582764 1536.931396 1527.253052 1512.94873 1495.69812 1483.467773 1469.909302 1459.489502 1449.669312 1442.784546 1430.692749 1416.950684 1412.630249 1418.687866 1415.157471 1419.208496 1428.06311 1441.126953 1451.879883 1466.33252 1475.589966 1484.046143 1497.909912 1509.159058 1522.80188 1529.305786 1534.219727 1537.944824 1550.652344 1563.576416 1576.459473 1584.558228 1597.661011 1601.127197 1593.189087 1590.531372 1600.843506 1604.580444 1604.054443 1599.293091 1588.454102 1580.032593 1573.43042 1564.507935 1559.678711 1564.071899 1577.384277 1584.860229 1585.108521 1585.202637 1596.956543 1605.999512 1608.159058 1607.394897 1599.839355 1586.526001 1574.978149 1559.30957 1540.887573 1537.283447 1530.557007 1524.761475 1515.941895 1506.458496 1494.890381 1489.358276 1484.120239 1475.194458 1465.938721 1460.4198 1460.799438 1459.038086 1459.054199 1459.253052 1459.384766 1462.837524 1467.111694 1466.276855 1463.677246 1455.760254 1451.077026 1445.032959 1433.567871 1419.52356 1410.533691 1403.663818 1402.930664 1400.613159 1398.720459 1399.809326 1411.318726 1423.276001 1433.186279 1444.508911 1458.117188 1478.058716 1493.007202 1511.512939 1524.833862 1550.947632 1547.559448 1535.27124 1525.488403 1510.292236 1498.51062 1489.962524 1492.074341 1490.513184 1489.022705 1495.370239 1503.622681 1511.267212 1516.076904 1519.41333 1520.388794 1519.259033 1518.223389 1516.137939 1511.37793 1513.021362 1510.531372 1504.602783 1499.683472 1493.51001 1487.817505 1483.466309 1479.28772 1477.088257 1472.908569 1467.081421 1464.77356 1463.836548 1460.350464 1454.847412 1449.703735 1439.782593 1438.22937 1437.071899 1436.39624 1434.966187 1433.421509 1432.347656 1431.11853 1429.426392 1427.646362 1426.758789 1427.62854 1427.822144 1426.501343 1425.370239 1426.292847 1425.55481 1423.00769 1421.204956 1421.052734 1422.395752 1424.21875 1424.335083 1423.433105 1422.360352 1420.963013 1418.709473 1415.840088 1412.497681 1407.471313 1402.276367 1399.580078 1401.197754 1400.210815 1397.074951 1392.885132 1389.747192 1393.174194 1393.034912 1390.262817 1385.370972 1377.847534 1376.704224 1377.249634 1375.011719 1373.080933 1371.852783 1370.250488 1369.025635 1368.111084 1368.98938 1372.472412 1375.891724 1378.300415 1380.18457 1382.578979 1386.066406 1390.047363 1394.696655 1398.686523 1402.054077 1404.93689 1405.817017 1401.642334 1386.990112 1375.86792 1364.884277 1353.805298 1332.174805 1314.640625 1306.342529 1306.12561 1304.92749 1309.651123 1314.47229 1316.179443 1324.677124 1329.58252 1333.473999 1340.21582 1341.961914 1351.536377 1374.257935 1390.016846 1394.848999 1406.748413 1415.341431 1427.012085 1435.342407 1443.059204 1447.799316 1447.729248 1447.188477 1447.985229 1456.298584 1464.085449 1471.38562 1479.098877 1477.691528 1470.790771 1454.166992 1443.18042 1438.956909 1433.634399 1426.950684 1426.669922 1417.629395 1408.153076 1421.762451 1428.045044 1430.306519 1439.712158 1452.592163 1464.473999 1477.273682 1489.615356 1502.832153 1512.323242 1522.699463 1540.824097 1554.750244 1545.563843 1528.035034 1511.807495 1503.74939 1496.95105 1488.165039 1484.355713 1482.459717 1482.310425 1477.603027 1467.932007 1456.259521 1441.52832 1427.547852 1429.010254 1420.317993 1406.438843 1397.37439 1390.674438 1379.846558 1371.459839 1358.048218 1344.582275 1331.190674 1325.737061 1323.572266 1324.758301 1318.354858 1295.27124 1288.118774 1304.405273 1320.743408 1336.625854 1348.602539 1357.901489 1366.835327 1372.526611 1374.075928 1370.350708 1366.037964 1364.172607 1359.927979 1357.096069 1355.717407 1353.551514 1351.467896 1350.201904 1348.963135 1348.032104 1347.908691 1348.511108 1349.159668 1348.789673 1346.19812 1342.662231 1335.483521 1329.605469 1330.947144 1330.64917 1328.715332 1324.583496 1320.8927 1318.049072 1313.664673 1312.631104 1318.689331 1319.894165 1319.271118 1317.88916 1311.819214 1304.766235 1298.000488 1289.279297 1280.321777 1272.137817 1264.217407 1257.788208 1249.63269 1258.13501 1268.570435 1273.976807 1277.452515 1279.101807 1279.352417 1282.907227 1289.692627 1297.023193 1305.329102 1312.14624 1317.744629 1323.860962 1326.726807 1326.807129 1325.371704 1325.180054 1328.232788 1331.132935 1319.06189 1309.485352 1315.046997 1318.607544 1320.461304 1321.259399 1319.906128 1315.797607 1313.973755 -1631.441284 1628.050903 1621.451538 1611.751953 1617.87915 1617.330322 1619.230103 1642.68396 1647.585693 1643.562256 1647.497925 1655.355713 1666.337769 1673.380615 1679.010986 1682.121094 1685.037964 1688.893677 1691.938965 1695.019165 1694.667114 1693.677002 1689.015503 1681.691162 1683.359985 1685.176636 1684.986938 1685.653198 1693.212402 1700.394409 1700.323242 1695.135376 1692.730957 1689.311035 1685.889404 1683.058228 1677.086792 1681.335083 1684.414307 1684.822021 1682.591919 1676.223877 1670.240723 1674.865601 1684.464966 1691.588745 1697.893311 1695.273438 1677.20874 1664.215332 1651.375732 1638.115112 1633.121216 1648.922363 1659.638184 1678.2323 1695.969849 1714.089722 1722.614258 1716.548706 1704.091675 1694.723755 1684.96582 1671.724731 1657.322266 1647.096191 1634.470703 1625.303955 1614.753662 1600.491699 1583.866577 1579.463257 1571.376953 1569.699097 1571.134644 1565.791992 1562.127563 1557.571411 1551.161133 1548.33606 1549.785278 1548.788208 1543.792358 1533.87207 1531.407593 1555.342285 1577.81543 1582.453247 1572.489136 1580.869019 1600.46228 1614.755371 1627.296387 1636.094116 1638.90564 1639.154785 1635.786865 1628.604492 1612.635742 1607.934814 1609.0271 1605.990112 1592.799072 1571.972046 1569.255005 1560.238403 1554.268433 1551.34668 1546.695068 1540.918823 1529.878662 1519.213867 1502.177734 1481.502686 1468.781738 1456.101562 1443.726685 1434.365845 1426.734863 1419.469727 1415.558472 1413.53772 1411.838501 1418.77832 1429.320801 1438.549805 1448.342041 1456.859863 1462.428833 1467.623047 1472.634766 1475.956543 1481.695435 1485.198853 1489.18396 1496.442627 1503.215942 1510.541992 1520.489258 1530.632324 1542.805786 1552.609863 1562.598877 1579.032715 1591.885742 1599.958252 1607.775513 1622.780273 1630.848755 1666.486084 1679.670654 1687.095581 1691.805298 1696.693481 1694.875854 1690.702393 1686.575073 1683.7052 1680.533569 1682.927612 1682.466797 1677.123291 1674.197754 1673.631958 1672.015869 1670.572998 1667.518066 1663.214478 1660.062378 1652.24939 1644.922363 1637.08374 1628.029297 1619.858398 1613.656982 1605.656494 1597.761475 1592.010742 1585.171509 1578.179932 1570.398682 1558.886475 1550.05957 1541.582031 1536.852417 1536.237061 1538.378662 1545.589722 1550.705444 1555.786865 1559.094971 1559.085205 1558.75061 1558.8479 1559.549194 1559.961426 1562.046997 1570.199585 1575.633667 1576.620728 1575.658447 1566.088867 1558.338013 1560.772827 1564.569824 1566.822388 1564.613281 1559.78186 1550.403931 1541.966797 1533.900513 1527.441772 1522.718384 1519.363525 1517.206055 1519.43689 1522.767944 1528.741943 1536.443359 1540.060059 1540.005737 1532.337036 1523.65686 1516.339478 1511.281128 1512.339478 1512.171143 1511.188477 1516.445801 1525.449951 1535.072266 1542.104126 1548.970703 1557.383545 1573.494141 1583.821289 1590.921387 1597.634277 1610.014282 1614.232666 1613.973511 1609.611328 1602.093018 1593.449829 1582.312256 1573.380859 1565.574951 1557.874878 1550.146729 1540.887329 1534.160522 1524.571777 1508.878906 1492.584229 1479.085815 1465.838257 1459.842896 1452.782349 1441.715454 1427.237793 1414.664795 1422.299316 1435.515747 1433.907715 1422.669678 1426.848877 1437.803223 1448.858887 1462.914551 1470.599609 1478.552979 1487.009399 1496.975586 1504.160645 1509.125366 1518.776123 1530.646362 1542.44751 1560.492432 1572.74231 1584.071167 1592.884033 1592.162476 1580.505493 1579.731689 1588.694946 1596.926147 1597.408081 1591.837769 1581.477051 1574.098877 1570.775269 1564.68811 1560.022095 1563.193848 1574.695068 1571.484619 1581.811279 1593.449707 1602.300781 1609.561646 1612.023926 1612.207275 1605.943115 1594.353394 1579.167969 1559.394531 1547.16272 1536.91394 1526.331665 1522.026001 1511.834351 1502.910156 1493.826172 1486.830322 1482.823486 1477.135376 1477.550415 1477.62854 1480.233643 1481.306641 1482.385376 1483.303467 1482.943237 1478.656128 1466.161377 1457.826416 1453.9104 1444.826904 1439.467773 1432.097168 1419.917725 1411.106812 1404.819092 1415.157959 1418.759155 1415.492188 1403.904785 1401.964111 1410.878296 1423.154541 1433.929321 1447.14563 1460.424927 1476.360474 1489.644653 1505.623169 1521.938477 1544.78772 1545.388306 1533.718262 1521.512817 1507.622314 1500.323364 1501.689697 1502.912598 1502.557129 1501.931519 1507.876953 1513.563965 1523.44812 1531.71936 1537.679077 1536.296631 1530.089844 1527.26123 1524.018921 1519.999878 1517.185547 1512.855347 1506.758789 1500.682495 1493.867554 1486.919067 1482.732178 1476.787598 1473.866577 1471.535767 1467.780884 1465.601807 1464.630859 1461.064819 1453.258545 1449.386719 1442.458374 1442.682495 1443.050903 1442.794556 1440.796997 1437.977051 1435.73999 1433.682495 1431.803833 1430.068726 1429.150513 1428.65686 1427.562256 1425.672363 1425.844116 1427.776245 1426.498901 1423.448486 1421.255859 1420.304565 1420.16748 1419.605835 1417.235718 1415.710815 1415.037964 1413.76062 1412.566162 1410.683105 1407.565063 1404.343384 1398.119507 1389.703857 1392.726196 1392.102905 1389.639282 1385.676514 1385.399902 1382.118774 1380.17395 1379.473999 1377.366699 1375.346069 1374.253906 1373.124023 1372.713379 1373.487671 1373.385986 1373.578369 1375.426514 1378.666138 1380.920654 1383.94519 1387.187866 1389.455444 1390.869141 1392.271484 1395.571777 1399.224121 1402.829956 1406.740601 1409.669678 1411.212646 1411.44104 1408.558105 1391.767578 1380.55603 1367.643311 1349.56311 1322.827759 1313.811768 1308.307983 1306.762817 1310.374634 1316.363525 1320.277832 1323.464966 1330.91748 1337.526855 1352.457642 1362.292236 1356.580566 1350.25293 1375.597168 1389.393921 1394.074951 1395.115234 1414.354614 1420.928223 1423.444824 1432.651978 1435.72937 1432.379639 1429.141602 1432.215698 1439.234009 1453.190552 1461.168579 1467.370972 1479.09375 1476.733032 1463.498657 1453.037354 1445.019653 1438.013916 1435.862061 1430.179688 1419.59021 1419.504761 1431.76062 1433.330566 1435.483643 1442.541382 1455.786987 1467.658325 1481.685059 1496.182007 1507.181519 1516.688232 1527.470459 1543.591675 1561.168823 1553.175903 1536.976562 1524.390625 1510.656616 1505.810547 1499.458984 1489.515259 1485.293213 1476.91687 1470.314209 1464.138672 1458.310913 1453.363281 1441.035278 1431.022827 1416.732666 1403.233643 1394.880737 1384.140503 1370.979248 1359.033936 1345.675537 1339.648438 1335.725098 1337.01709 1337.725708 1332.061035 1317.520874 1290.396973 1297.396362 1307.117798 1320.380615 1337.87439 1357.097656 1366.580566 1377.133667 1379.997192 1379.369019 1375.51123 1369.880981 1365.78186 1363.50647 1361.935669 1360.020142 1357.487915 1355.89209 1355.303345 1354.473389 1353.464233 1353.22937 1354.315796 1355.365479 1355.319092 1352.085205 1345.990356 1340.93042 1337.035767 1337.084106 1336.493408 1333.92688 1330.234619 1326.101074 1322.452148 1317.84436 1317.53186 1317.581665 1320.968262 1320.400146 1319.234741 1314.116211 1307.094482 1298.639282 1291.09375 1282.427368 1274.150879 1267.338501 1259.325806 1252.004395 1253.182251 1258.196289 1265.385376 1273.672485 1279.65625 1283.111206 1291.617676 1295.023315 1302.065063 1308.03479 1316.54541 1324.419067 1330.14856 1330.507935 1330.146606 1324.768799 1321.064087 1327.243652 1330.905273 1318.924194 1303.865356 1306.581543 1308.956909 1308.965942 1306.264282 1303.776001 1304.338013 1309.650513 -1615.298584 1607.471313 1598.210815 1593.758545 1597.518799 1597.985352 1612.442993 1628.947388 1633.262939 1633.169678 1637.063843 1648.544556 1659.556885 1662.597168 1664.976562 1667.688721 1672.166382 1675.7771 1679.107544 1682.015503 1687.207031 1689.102051 1688.185181 1690.551758 1696.387817 1697.498901 1695.930786 1695.562012 1701.672241 1707.468018 1703.905762 1698.999023 1697.033447 1694.046631 1689.55835 1684.792358 1681.394897 1683.727173 1685.348022 1685.408691 1684.020142 1678.433472 1672.249878 1677.575928 1688.515381 1697.252075 1701.800415 1698.387817 1686.163208 1675.071655 1659.437866 1643.445923 1633.918335 1651.124756 1660.306519 1672.792114 1695.069824 1713.356323 1719.632446 1710.459595 1696.819946 1686.034424 1673.881958 1662.796265 1651.514038 1641.911743 1630.093628 1612.196045 1599.483887 1584.33252 1581.008545 1583.032593 1583.922241 1581.924316 1578.692993 1569.797119 1564.715576 1563.52478 1565.652222 1569.283081 1567.302612 1563.134155 1553.22583 1540.640503 1528.600098 1552.704468 1579.800659 1598.389648 1591.759277 1575.06958 1596.19397 1610.421997 1623.706421 1635.569092 1642.139893 1647.601807 1642.910156 1634.404419 1621.514526 1624.253906 1619.818115 1610.566772 1598.564453 1589.00769 1583.165039 1575.20459 1562.724121 1556.269897 1550.197144 1537.942627 1523.304199 1513.535034 1495.975708 1476.409302 1461.208618 1449.984253 1439.277954 1434.883667 1425.983398 1423.892212 1419.592529 1416.269287 1412.877686 1419.187866 1428.35144 1436.311035 1443.633423 1450.464233 1455.086182 1459.797241 1464.353394 1469.264893 1474.91626 1479.379761 1482.998657 1486.988647 1494.412476 1501.922241 1511.861572 1518.317505 1528.02002 1541.964722 1551.750122 1559.985229 1576.216431 1587.330811 1592.084229 1600.337891 1617.622314 1657.623047 1666.32251 1678.313843 1687.372314 1697.004395 1695.201904 1689.069824 1683.79834 1678.325684 1674.646606 1676.621704 1674.678345 1670.779297 1668.717651 1668.879761 1667.796143 1665.487793 1661.61438 1659.27478 1653.76416 1646.750854 1641.696777 1636.225952 1627.200317 1618.749756 1612.725464 1607.092163 1600.313965 1595.556519 1587.25415 1576.183838 1563.913208 1553.508423 1547.214355 1544.738647 1543.072266 1542.255737 1544.322998 1552.892578 1560.083862 1567.27002 1572.361084 1572.698975 1568.65271 1563.928589 1563.03186 1566.270996 1567.5625 1568.599121 1574.674805 1577.35791 1576.445923 1570.320801 1563.129639 1569.758301 1573.687988 1570.011963 1562.496704 1555.030396 1546.37207 1538.887695 1532.388184 1526.823486 1522.213745 1518.834839 1519.32959 1521.281738 1524.792603 1531.106689 1538.010742 1543.635376 1544.935913 1540.397339 1532.267822 1522.193604 1519.053711 1519.091064 1519.87146 1517.654419 1519.603027 1524.383911 1534.983765 1543.718384 1550.637329 1561.290771 1575.44165 1585.434326 1594.333496 1604.303589 1613.462524 1614.724976 1613.839844 1606.816895 1595.637207 1587.037842 1576.518311 1563.167236 1555.303955 1548.127197 1541.15625 1534.478638 1527.491943 1516.917969 1503.614868 1490.918701 1480.075562 1471.387939 1464.30542 1452.462769 1438.144653 1418.786865 1419.729614 1428.1521 1440.854126 1442.972168 1431.457031 1425.271851 1434.42395 1444.051758 1453.318848 1461.086548 1467.215454 1476.413574 1484.182495 1490.082764 1497.789917 1511.837769 1524.07959 1535.382812 1556.104126 1573.986572 1582.286865 1586.823242 1586.85376 1572.292603 1564.409424 1574.94812 1580.837646 1584.833374 1584.371826 1577.263672 1566.509766 1562.448608 1561.570312 1557.706665 1560.27063 1564.868286 1570.605225 1584.18689 1594.710693 1600.147217 1602.863892 1605.197998 1608.887329 1612.035156 1599.822388 1584.500854 1569.860229 1561.179199 1552.568726 1540.819092 1535.13623 1533.298218 1528.28125 1516.833618 1507.253418 1502.943237 1500.133057 1500.45105 1501.4198 1503.034058 1503.708496 1503.132935 1496.760254 1488.318481 1475.3396 1462.915161 1450.392212 1438.856445 1432.5802 1424.70105 1421.431885 1415.528442 1408.262451 1409.328125 1423.141357 1428.783203 1428.322632 1420.348267 1415.890991 1423.648926 1428.371826 1434.994019 1448.103516 1463.301025 1480.751709 1498.437988 1512.217041 1528.599609 1540.120605 1539.879883 1531.43042 1516.961548 1509.932373 1509.71936 1510.845825 1511.7854 1511.282104 1515.480957 1523.038086 1530.060791 1539.44751 1548.427246 1549.383545 1543.796265 1540.024658 1536.123535 1530.152222 1524.686768 1520.264648 1513.738037 1508.174683 1501.916504 1495.904541 1489.101562 1483.549438 1477.897217 1472.915771 1468.175903 1464.905151 1463.209473 1460.96814 1454.859253 1450.613159 1450.705444 1451.69397 1451.047974 1449.056885 1446.906616 1443.970459 1440.6427 1437.678589 1435.69519 1433.82373 1431.551758 1429.340332 1427.590332 1426.144531 1424.281128 1423.976562 1425.341553 1423.482056 1421.300293 1419.46875 1418.294189 1416.990845 1415.313232 1412.081177 1409.613647 1408.2948 1407.19519 1406.208008 1405.039795 1402.980469 1398.555786 1392.057007 1388.940674 1387.491577 1387.479614 1387.256348 1390.129272 1391.345459 1389.592896 1379.635742 1376.530396 1375.571289 1374.612671 1376.223511 1379.920288 1380.690186 1380.987183 1380.923462 1381.410645 1384.298218 1387.852539 1391.224487 1393.638428 1396.039917 1397.957275 1399.693115 1402.36377 1405.713989 1409.182373 1412.786133 1416.379028 1418.400391 1419.045044 1417.73938 1411.79895 1395.900757 1382.344482 1365.628418 1342.812622 1321.599121 1314.462036 1309.774902 1307.083496 1311.585571 1318.178955 1323.515503 1328.891846 1336.445557 1347.344727 1362.41394 1375.525879 1376.143555 1359.009277 1364.258789 1370.150757 1370.212158 1385.33252 1398.635742 1409.293091 1412.626221 1420.186157 1419.379761 1420.902954 1430.726318 1440.054443 1446.44873 1453.172119 1458.242676 1465.613281 1478.745605 1489.618164 1476.311401 1462.495605 1450.325317 1449.279053 1442.833618 1430.727661 1425.327026 1435.466187 1441.271606 1438.974609 1436.757202 1442.774292 1456.11499 1468.531128 1481.511475 1496.639893 1509.112549 1518.394897 1529.026001 1541.372925 1550.807495 1548.516235 1541.292969 1533.067627 1524.801392 1515.70105 1510.147583 1502.985962 1492.693481 1477.084961 1462.819092 1455.801147 1451.561035 1446.268311 1435.924072 1426.632935 1411.862061 1400.685547 1390.979248 1375.7948 1368.661011 1363.201904 1358.259644 1354.788086 1355.377808 1353.99707 1345.436523 1331.32373 1306.926147 1295.124146 1311.93335 1324.042847 1332.38208 1343.080933 1362.79834 1375.496582 1384.351196 1389.45752 1386.451416 1380.121094 1374.86145 1369.594971 1367.507446 1366.657837 1365.171143 1363.073486 1360.99585 1359.817139 1358.730469 1357.968994 1357.499023 1358.117188 1358.213501 1356.73291 1353.491577 1348.388916 1342.831909 1341.743896 1342.765015 1341.946655 1339.006836 1334.538208 1330.419189 1327.56604 1324.397217 1322.829712 1322.323364 1321.851807 1319.66748 1317.012817 1310.281494 1303.650146 1295.636108 1288.468628 1279.744141 1272.660034 1265.091797 1257.352783 1253.106079 1251.888306 1254.157349 1265.151367 1275.542603 1285.414062 1295.320557 1303.611084 1307.781128 1308.873047 1313.427612 1319.862183 1328.413696 1332.312134 1331.829956 1328.201416 1321.595581 1317.609131 1316.712769 1317.709961 1310.477417 1300.374268 1298.293945 1300.906006 1301.542603 1301.112427 1303.023804 1307.51123 1312.271973 -1590.7146 1581.424927 1570.75708 1574.716431 1577.400391 1582.352783 1602.268066 1619.975586 1624.773071 1625.662231 1632.812988 1641.573853 1648.31543 1651.330688 1652.353882 1653.049683 1655.795654 1656.279297 1664.407471 1679.391724 1685.061035 1684.44751 1683.213501 1691.002686 1697.442139 1698.525024 1700.547729 1705.654419 1709.689819 1708.387939 1701.843018 1698.794434 1697.907593 1695.941772 1691.582886 1686.715454 1684.136353 1684.870483 1686.182861 1686.005371 1684.246216 1680.929199 1678.549072 1681.258667 1689.771362 1699.224731 1707.579468 1706.156616 1694.210327 1681.050293 1667.723633 1648.989624 1638.513184 1654.931274 1669.323486 1677.825684 1691.47168 1711.250366 1714.510498 1706.943604 1693.369141 1676.778687 1663.490723 1652.863159 1643.671265 1635.034668 1624.705444 1609.097656 1589.592041 1588.779541 1596.744141 1600.672485 1600.674316 1600.212036 1597.026855 1583.444214 1579.3573 1582.020996 1586.969238 1587.530518 1582.346436 1573.770386 1561.522827 1547.068237 1533.435181 1545.513672 1569.772949 1597.774292 1604.589355 1594.671143 1586.471313 1602.437622 1616.075684 1629.879517 1640.36792 1648.894043 1647.425415 1641.783325 1637.627075 1635.100586 1627.878662 1618.772705 1610.029663 1600.430908 1590.004395 1578.988892 1566.914307 1555.828125 1544.968628 1528.052246 1516.499634 1503.341797 1484.301392 1470.322876 1454.975952 1449.487061 1450.385376 1446.566772 1438.610474 1428.522949 1422.320923 1417.107422 1413.933594 1418.98999 1426.315308 1432.706665 1438.69104 1443.897583 1447.987671 1453.876343 1458.80249 1463.488159 1469.304199 1473.95105 1478.12146 1482.409546 1488.308594 1493.629028 1501.496582 1509.883667 1522.266479 1532.766724 1540.391602 1548.959961 1556.212524 1566.186035 1578.203247 1587.053345 1597.651611 1643.432251 1656.74231 1666.873047 1685.33374 1697.482178 1694.53064 1688.438477 1680.584229 1670.404297 1668.821899 1670.324463 1669.745728 1664.252808 1659.941284 1660.809326 1663.122925 1661.256958 1656.420166 1650.757568 1644.929443 1641.542236 1637.337891 1632.593506 1624.878052 1615.558228 1607.376709 1600.823975 1593.477539 1587.77002 1582.297852 1571.075073 1556.78833 1547.382812 1550.35083 1551.009521 1550.152344 1552.506714 1550.215332 1554.632446 1562.78479 1573.781616 1577.337402 1577.431885 1575.412109 1571.052856 1572.635742 1576.192871 1576.797729 1574.30603 1576.077637 1579.285034 1577.922119 1573.639648 1573.763184 1575.630493 1574.333496 1568.241577 1561.007812 1551.22876 1543.502075 1536.447144 1530.71106 1525.533325 1521.366943 1521.420654 1525.783936 1523.180664 1525.524414 1531.767578 1538.775879 1546.508911 1550.656738 1545.625 1536.083984 1526.342285 1528.28186 1525.289551 1527.932739 1524.401001 1523.769775 1529.875 1538.074341 1548.116821 1556.560669 1565.822266 1576.613159 1588.046753 1599.000732 1608.728149 1613.805176 1614.6604 1613.280762 1603.578247 1590.108521 1579.531738 1570.026855 1557.764526 1547.129761 1536.915161 1528.663574 1524.876099 1516.758911 1506.358276 1496.537354 1487.407715 1478.250854 1469.545044 1460.718994 1448.462036 1432.17041 1418.771729 1423.004272 1429.154297 1441.672119 1446.873413 1439.409668 1428.612427 1429.110107 1436.46814 1447.487549 1453.073486 1462.410522 1465.706299 1476.319458 1486.987061 1504.57373 1524.809814 1535.073853 1549.950195 1562.573364 1575.042969 1578.435791 1579.643555 1577.347656 1568.418701 1555.775757 1561.025269 1566.143921 1572.641113 1577.169189 1575.564697 1562.614502 1555.627686 1554.250488 1551.799438 1551.895142 1557.475464 1568.94397 1580.00293 1586.713013 1591.126831 1591.412354 1593.705322 1597.430054 1610.29895 1605.44043 1591.270874 1581.347412 1574.728149 1563.696655 1558.778931 1551.607178 1543.61499 1533.805786 1526.523438 1516.274414 1517.868652 1521.297607 1527.435303 1528.422119 1522.392212 1517.48877 1505.588135 1485.693604 1477.390991 1468.138062 1457.514648 1445.395386 1428.9823 1420.778076 1416.095825 1415.219238 1411.841064 1406.764771 1413.047852 1428.780396 1436.672852 1440.67749 1438.750488 1430.860229 1440.551147 1446.600708 1450.782715 1451.096558 1464.300537 1484.231812 1503.024048 1517.813843 1532.818359 1539.057251 1535.375122 1525.673218 1522.512085 1520.105835 1521.009766 1521.946777 1522.545532 1523.528687 1532.413696 1539.318237 1544.880737 1554.324951 1560.596802 1558.252808 1551.533569 1547.498657 1541.77124 1535.374756 1530.322388 1524.974487 1518.845459 1510.960327 1505.917603 1498.727051 1489.92627 1482.929199 1475.860229 1469.945557 1464.526123 1462.407837 1461.638306 1459.938354 1457.016724 1455.888428 1456.364868 1456.819336 1455.76062 1453.611084 1450.887085 1447.604614 1443.749756 1440.05835 1437.580688 1435.658447 1432.495483 1428.020142 1425.924683 1424.696045 1422.850464 1421.277832 1419.814331 1418.400269 1417.641235 1416.470825 1415.445801 1413.40625 1409.930298 1406.462524 1403.124512 1401.537476 1401.328003 1401.280273 1400.295532 1396.065552 1389.837402 1389.20752 1393.184937 1397.356689 1398.443726 1398.358765 1398.243652 1395.803467 1390.609375 1380.600952 1376.495239 1376.625732 1377.761963 1380.842773 1383.473999 1385.336548 1386.94165 1388.049316 1389.971802 1392.50769 1395.04541 1397.752319 1400.12915 1403.045776 1406.507202 1409.220947 1412.64856 1416.191406 1420.042236 1423.786133 1427.696411 1430.881104 1430.435547 1424.178589 1416.150146 1399.238647 1381.599365 1363.548584 1345.659302 1324.660767 1315.406616 1311.249512 1308.458618 1311.49646 1319.168213 1326.821655 1333.085449 1339.889526 1350.853882 1364.535889 1381.459839 1390.453003 1379.289551 1363.659058 1365.606812 1384.171631 1392.157593 1390.434692 1397.311035 1404.659302 1409.855103 1411.60498 1425.63501 1435.490845 1443.521851 1453.490112 1457.723389 1465.285278 1472.247314 1483.417114 1491.231201 1484.523682 1471.064209 1465.613647 1458.595825 1447.156616 1434.154907 1437.598267 1442.944702 1447.792236 1444.681641 1437.715576 1440.893066 1454.763428 1467.121582 1477.137817 1493.071411 1508.32251 1517.681519 1527.252319 1538.199097 1541.039551 1536.89209 1533.017334 1528.487915 1526.050659 1527.092285 1520.898193 1510.822021 1501.722656 1485.730469 1463.876465 1451.490845 1439.304077 1431.85498 1423.918213 1415.793091 1410.171509 1407.577026 1404.496582 1401.300293 1394.292969 1380.952515 1370.773438 1368.027954 1365.298462 1357.19397 1337.680298 1317.102051 1296.485474 1309.98291 1324.403687 1334.688232 1345.240112 1350.655396 1365.876099 1380.729004 1390.137695 1393.488647 1392.516479 1384.959839 1377.656372 1374.595825 1372.347168 1371.199463 1369.764282 1367.809692 1365.587524 1363.97644 1363.172241 1362.31958 1361.465698 1361.095581 1360.633301 1358.383667 1354.333252 1351.134644 1348.206177 1345.996216 1345.686279 1344.624634 1342.73877 1339.308472 1334.891846 1331.712158 1329.381836 1327.252563 1325.493774 1322.818115 1319.355713 1314.124878 1305.765259 1300.678345 1295.416992 1286.319336 1277.111328 1267.718018 1259.842041 1255.234619 1255.127075 1254.135498 1253.717651 1261.177368 1273.345093 1284.016968 1295.870483 1305.772949 1308.12561 1310.118652 1314.175171 1318.130249 1322.887939 1323.447266 1318.040894 1314.799805 1314.286987 1311.775391 1311.431641 1308.609253 1300.040161 1289.101807 1289.842285 1294.140137 1296.286499 1298.362061 1303.344482 1307.94458 1313.706421 -1571.370728 1565.55481 1586.54541 1590.863647 1589.867554 1584.340698 1585.540527 1602.995361 1611.667114 1617.082275 1625.500244 1633.846191 1636.999023 1640.162354 1640.62207 1643.49353 1646.690918 1655.6427 1667.571777 1683.924072 1684.177612 1674.705933 1674.031494 1684.305542 1691.814453 1693.488647 1694.358643 1702.325317 1706.816528 1701.197021 1692.947754 1692.476196 1694.775146 1693.151489 1688.898438 1684.661743 1685.205322 1685.376831 1687.035645 1687.189087 1685.307007 1682.537598 1681.005127 1682.823486 1689.728516 1699.713379 1708.853271 1709.863647 1701.825317 1688.196655 1672.637329 1653.869263 1641.444946 1656.980713 1673.800903 1686.614746 1698.709106 1709.490967 1711.919922 1702.792114 1687.118896 1670.613281 1662.000122 1650.148071 1637.131592 1626.978516 1616.05957 1602.197388 1596.671875 1607.838013 1616.414429 1618.633545 1616.89502 1611.828979 1605.567749 1595.458008 1589.844727 1599.289062 1605.365356 1603.589233 1592.838379 1579.303955 1566.644043 1551.77002 1537.812744 1538.34314 1561.164673 1590.488037 1609.708374 1609.228638 1601.561035 1596.480225 1606.949341 1618.921021 1632.96228 1647.699463 1651.683472 1647.380127 1642.984619 1638.691406 1633.489502 1621.475098 1612.335205 1602.618164 1590.36731 1577.142944 1566.391357 1554.806152 1541.825317 1522.156616 1502.34729 1488.198364 1477.082031 1460.282959 1464.680664 1467.98645 1466.639038 1458.558228 1445.282471 1430.565918 1423.476807 1417.435547 1414.460449 1417.6427 1424.216675 1429.31604 1433.757324 1437.489502 1442.190918 1450.022705 1455.001465 1459.284912 1464.248657 1468.787964 1472.950317 1477.011108 1481.338867 1485.773193 1494.030151 1502.503296 1512.206055 1523.750366 1530.60437 1537.681763 1548.13147 1554.269287 1559.248779 1571.681885 1591.230347 1624.238892 1640.135254 1660.121826 1676.640381 1687.564209 1689.071045 1686.49939 1680.830811 1668.944458 1663.71814 1662.273193 1660.782959 1656.048096 1652.14209 1653.732422 1659.513428 1658.773071 1653.112061 1646.091675 1641.209473 1637.078369 1633.123901 1629.41748 1624.872437 1617.77063 1610.77063 1603.143311 1592.825684 1581.873657 1573.192627 1565.80896 1556.376831 1557.033081 1561.014771 1560.491211 1562.116333 1564.435547 1562.565308 1559.060303 1563.839233 1576.326416 1582.194336 1581.203613 1578.912842 1576.477783 1577.907959 1580.632324 1582.272461 1581.935791 1582.930786 1582.654419 1579.904297 1577.123779 1575.272217 1574.156494 1569.653442 1564.030273 1557.873535 1550.539795 1541.146973 1534.423096 1529.192749 1524.179077 1520.644531 1526.824829 1528.137451 1523.488281 1524.147217 1531.264404 1538.723389 1546.637085 1551.274048 1550.067627 1540.531128 1538.849854 1535.195068 1535.72583 1536.265869 1531.221802 1530.806274 1534.093628 1542.902466 1551.895142 1559.974121 1568.008667 1580.581177 1592.046997 1601.092407 1609.442139 1613.305176 1614.413452 1609.384888 1598.063965 1588.636475 1576.314453 1562.344727 1553.474854 1543.670776 1533.55603 1522.525635 1510.416016 1504.789429 1496.793335 1488.593628 1478.759521 1470.84375 1463.096924 1452.406738 1441.846436 1424.781006 1422.562744 1427.269531 1435.567017 1444.739746 1452.075806 1451.958252 1439.984619 1435.431152 1435.901855 1445.060059 1460.473877 1467.550781 1475.887329 1487.62146 1499.613159 1512.235229 1527.709961 1538.490845 1554.19873 1565.356323 1572.623901 1573.130615 1570.630493 1569.23645 1563.643311 1552.508789 1546.90686 1554.339233 1559.090454 1569.924194 1568.952393 1559.497803 1550.836792 1546.475586 1547.519531 1547.357666 1554.557617 1563.660889 1573.438721 1577.542725 1577.661133 1577.075195 1587.98877 1596.691528 1603.925903 1600.585693 1590.697266 1581.933594 1573.458374 1564.270386 1557.040894 1547.787231 1538.744263 1523.842773 1510.735107 1508.592896 1512.16748 1512.552979 1520.997925 1526.766357 1526.657593 1514.775269 1492.680786 1477.803345 1469.4552 1461.785156 1450.849243 1440.254883 1423.272095 1412.016479 1409.233887 1408.685913 1407.253296 1408.921997 1413.292358 1431.52417 1443.865112 1450.977539 1453.575684 1450.339355 1453.308594 1464.170776 1470.197876 1474.924927 1471.729248 1491.048462 1509.22876 1523.817383 1536.667358 1538.86438 1535.121582 1531.697754 1530.300781 1530.000122 1531.358276 1534.783569 1538.094238 1538.796875 1546.992676 1554.583374 1559.711792 1566.814087 1567.661987 1564.218384 1559.657471 1553.591553 1547.717896 1542.650513 1537.205444 1531.627808 1526.376709 1517.540039 1511.08606 1502.105713 1490.928955 1483.156006 1475.285889 1465.922241 1461.929932 1461.795898 1462.660889 1464.191895 1465.045898 1464.808105 1463.14624 1461.800781 1459.955811 1457.375854 1454.317017 1451.172607 1447.470703 1443.509399 1440.130249 1437.828857 1434.464478 1430.304932 1427.677002 1425.069702 1421.619751 1418.619507 1416.46167 1414.271118 1413.845825 1413.21875 1411.236572 1406.884521 1402.191895 1401.452637 1400.775391 1400.674194 1400.616455 1400.311523 1399.225952 1396.311035 1397.010742 1403.26355 1406.53833 1407.551025 1407.354614 1405.915527 1404.432251 1397.133057 1388.209717 1377.751709 1378.374146 1381.007812 1383.306152 1385.917114 1387.949219 1389.560059 1391.90979 1393.847534 1396.029175 1398.202393 1400.685669 1403.977783 1408.844116 1413.472168 1416.424438 1419.158813 1422.744141 1427.06189 1432.123901 1437.756592 1442.660522 1444.399658 1443.217651 1433.777954 1419.198242 1399.269775 1376.251953 1358.948364 1343.516724 1326.261353 1315.735229 1310.881348 1309.828491 1309.814453 1317.7323 1329.179077 1335.145874 1343.210327 1355.628784 1371.517334 1383.328125 1399.207031 1400.519653 1386.118286 1389.191895 1401.088379 1409.399414 1407.246826 1413.44751 1426.606445 1433.433472 1436.086426 1436.027832 1439.256592 1438.017578 1449.22998 1456.522095 1463.929443 1471.559082 1480.608276 1490.254883 1491.98877 1486.931641 1477.71106 1462.951538 1449.547119 1437.995972 1443.817017 1450.797607 1454.957153 1453.386475 1443.719849 1438.258057 1451.300903 1464.638062 1473.296631 1486.591553 1502.479248 1515.078735 1523.421021 1530.014282 1529.443359 1525.702881 1521.130127 1516.577515 1512.469849 1513.959961 1519.119751 1513.569092 1505.362427 1489.20813 1471.440796 1461.629272 1456.202026 1447.847412 1434.325439 1427.139038 1427.650146 1424.681396 1418.93335 1413.521973 1406.228027 1393.083496 1385.276855 1380.326172 1368.484009 1351.490234 1331.791626 1307.96582 1300.189209 1317.182129 1333.84436 1344.994995 1357.741089 1366.495728 1372.789673 1385.552246 1395.56665 1397.431274 1394.142822 1388.296387 1382.405273 1379.079102 1377.329468 1375.915771 1374.056274 1372.172607 1370.061523 1368.498657 1367.592041 1366.238892 1364.465454 1364.106689 1364.091797 1362.4552 1358.01709 1354.729126 1352.432739 1350.17981 1348.263184 1346.353394 1344.352661 1342.202881 1338.444336 1334.280151 1332.0896 1330.098022 1327.274658 1323.436157 1317.68335 1312.944092 1304.88147 1299.682495 1293.407593 1282.383179 1270.845459 1265.018311 1261.016602 1260.632568 1260.310791 1259.085083 1256.177002 1254.697998 1268.235229 1277.973999 1290.401367 1300.367798 1305.05249 1306.508545 1308.81311 1312.234375 1313.065308 1308.843872 1301.114624 1302.553955 1303.620605 1302.591919 1307.155762 1304.128662 1290.122559 1289.102661 1291.030273 1290.614258 1292.431152 1293.87146 1299.773193 1305.699707 1310.532104 -1559.164185 1580.668091 1592.596558 1599.606079 1597.748291 1591.661743 1585.127075 1590.67981 1598.976807 1608.927124 1616.857788 1623.186401 1626.52063 1629.329346 1631.295776 1637.220581 1648.614868 1661.241943 1673.677124 1685.35022 1677.568604 1666.495483 1667.360962 1676.886719 1683.905762 1683.130005 1678.863525 1688.326904 1693.230713 1692.680908 1686.319946 1679.831299 1680.812988 1684.322998 1683.534058 1679.947632 1681.277954 1682.316772 1688.968506 1690.469604 1686.688965 1682.645142 1683.996582 1686.946655 1691.941406 1698.674927 1707.685791 1709.767456 1703.991943 1692.470947 1675.82959 1661.080811 1643.94873 1656.40625 1675.923218 1692.405273 1704.209229 1711.026611 1710.760132 1700.633423 1686.303833 1669.658936 1661.75061 1651.765259 1638.757324 1625.834961 1611.945923 1602.613892 1611.389526 1621.799561 1629.737427 1633.612915 1629.882446 1623.720215 1612.990356 1602.898804 1602.568848 1613.186035 1620.910278 1620.83374 1601.899414 1584.287354 1570.962036 1556.271362 1539.678223 1535.331787 1562.387817 1589.78064 1609.75708 1616.635498 1617.258667 1620.985107 1615.329102 1626.037598 1639.057129 1652.522095 1658.571289 1649.870361 1642.734497 1637.066895 1627.694946 1617.071411 1608.446777 1593.801636 1581.460815 1570.656982 1560.313965 1549.784912 1534.196289 1515.004028 1498.053833 1482.865723 1471.576782 1478.758057 1482.363159 1481.796997 1477.707886 1467.600586 1448.474243 1432.549927 1424.270386 1418.614502 1414.455078 1414.771729 1419.339233 1425.275391 1428.623291 1432.506836 1436.726074 1443.000732 1450.611816 1454.877197 1459.255859 1463.216919 1466.977783 1471.274048 1475.203125 1481.515625 1488.669312 1495.934692 1504.395264 1514.474487 1523.869629 1529.991211 1538.005737 1545.942505 1551.926147 1564.356567 1580.391724 1609.808472 1631.70105 1646.240356 1661.106689 1673.197266 1681.303711 1684.084106 1680.142578 1668.03125 1659.742188 1656.258423 1653.730713 1649.321533 1644.932861 1645.610718 1652.015747 1653.92749 1650.549561 1644.710571 1637.789429 1633.065552 1630.003662 1626.772949 1623.253784 1617.897461 1612.286499 1604.190063 1594.888062 1582.014526 1571.706909 1565.767944 1561.696045 1567.964966 1569.409546 1569.501709 1570.723389 1574.047852 1574.297485 1564.961914 1563.493408 1577.515137 1586.842773 1584.441406 1582.349976 1582.316284 1583.658447 1585.833374 1587.265137 1587.175659 1586.619873 1585.172974 1582.017822 1578.094482 1574.100586 1568.776123 1561.976929 1558.348877 1552.482178 1546.329712 1537.953491 1532.653442 1527.992432 1523.67395 1522.674683 1534.142334 1536.236816 1526.353882 1523.333008 1529.416016 1536.725098 1544.412354 1550.226318 1551.57959 1549.755981 1546.582275 1541.48877 1541.16272 1541.09729 1539.353271 1539.57251 1538.871704 1544.18396 1553.301025 1561.862427 1570.920532 1584.870239 1593.181519 1600.970825 1607.714233 1612.333862 1612.311646 1599.625366 1589.442017 1582.301147 1572.468262 1561.225464 1548.855957 1538.085083 1528.524658 1517.355835 1502.638306 1494.314209 1484.042725 1476.990479 1470.182861 1460.603149 1453.25061 1444.40918 1431.70166 1422.348145 1427.953369 1432.185059 1440.146851 1448.014404 1454.97229 1457.810059 1453.571533 1446.272583 1438.504272 1437.664429 1448.547241 1463.384521 1472.582642 1485.851929 1500.248901 1510.790527 1525.843628 1535.098267 1550.730713 1561.905762 1564.238403 1563.470703 1560.068359 1559.861816 1556.708252 1548.907104 1536.612305 1542.13269 1549.324951 1564.096558 1559.680664 1551.451782 1545.182983 1537.887451 1540.375732 1542.627075 1550.899048 1557.554443 1563.418335 1564.413452 1570.717651 1579.424561 1590.6875 1599.619751 1596.520142 1588.89624 1581.895874 1574.35437 1564.509399 1553.841919 1545.101562 1539.095825 1524.786743 1507.820435 1497.946289 1491.333862 1492.625 1496.299927 1500.224121 1505.263062 1512.119141 1510.116455 1498.078491 1478.227051 1463.557617 1452.190186 1443.977539 1434.595093 1416.938599 1410.350708 1412.08728 1418.079468 1423.212646 1424.095947 1429.469971 1434.239746 1452.625122 1464.335327 1470.576416 1472.344482 1470.58606 1478.752686 1491.56665 1495.866943 1496.477173 1509.276245 1527.710815 1536.995728 1541.504761 1541.762207 1537.610107 1538.121094 1538.789917 1536.352173 1541.862671 1546.174805 1547.811646 1550.610474 1561.179199 1569.788696 1575.295532 1575.891846 1572.6521 1567.577759 1563.396118 1559.121948 1552.77356 1550.706299 1542.421509 1534.186279 1527.67627 1522.486572 1515.223877 1503.484741 1493.743042 1483.397095 1472.784668 1464.546387 1461.930542 1463.206909 1467.884155 1471.112549 1471.634888 1470.783447 1468.473755 1466.3396 1463.961792 1461.132446 1457.802002 1454.237671 1451.012451 1447.013672 1442.863647 1439.605225 1436.257568 1432.502808 1429.277222 1426.095215 1418.643311 1415.813721 1414.130737 1413.249268 1413.05481 1412.770508 1411.865356 1408.971191 1405.662354 1403.819824 1401.492676 1402.366211 1402.815552 1401.977295 1400.389038 1400.990723 1404.801514 1409.128784 1413.349976 1413.552979 1409.928955 1405.9729 1400.338867 1391.837891 1379.977417 1379.325928 1382.547852 1385.908203 1388.914307 1391.254761 1392.621948 1394.139038 1396.316284 1398.831421 1401.73877 1403.993774 1408.769165 1413.904175 1417.939697 1421.141724 1424.162598 1427.868164 1433.396606 1439.138672 1445.537842 1451.887573 1455.185913 1454.025391 1449.231934 1441.39563 1421.152466 1395.024292 1378.541626 1363.487671 1351.263062 1336.004761 1317.023071 1313.838867 1309.56604 1309.842773 1313.178711 1325.59668 1333.366455 1342.189575 1358.703003 1378.009766 1394.557251 1405.816284 1412.666504 1411.858765 1416.081421 1417.192383 1424.172607 1423.900513 1423.156128 1429.786011 1441.734619 1450.79541 1454.548584 1451.693115 1448.057617 1448.656616 1453.0271 1465.382202 1470.559937 1480.511353 1492.884521 1497.167236 1491.665894 1478.397461 1460.078857 1448.687256 1443.725952 1449.426636 1458.953979 1464.15979 1459.354858 1453.991455 1450.146362 1448.35083 1460.649414 1469.986084 1480.296387 1493.496094 1507.796021 1516.646118 1520.661133 1516.487549 1511.853394 1508.709229 1504.557129 1499.038452 1501.466797 1505.973511 1514.696289 1507.14502 1495.958862 1486.212036 1471.724487 1460.779053 1453.411499 1448.505127 1447.291016 1442.920044 1435.260864 1426.907104 1418.986084 1409.26123 1398.724609 1388.124023 1381.244507 1361.861938 1338.883301 1317.113647 1301.908936 1309.456909 1319.245728 1340.622437 1356.230713 1366.446655 1379.150635 1388.020386 1397.421753 1404.186768 1401.658203 1396.264404 1390.927979 1388.226196 1385.997314 1383.55542 1381.164551 1378.783447 1376.666016 1374.823608 1373.182739 1372.071289 1370.96228 1368.683838 1368.690796 1368.318237 1366.702393 1362.416382 1358.103271 1355.439453 1352.767822 1350.113647 1347.618286 1345.276733 1342.727295 1339.46106 1336.044312 1333.511475 1331.74231 1329.283813 1324.734497 1320.71228 1318.464966 1306.998291 1298.443848 1292.899292 1279.640747 1272.017456 1272.999268 1270.037842 1269.314941 1266.966309 1263.635498 1259.974976 1256.945068 1258.685303 1270.033569 1280.185791 1290.840576 1297.122192 1299.607788 1301.682861 1302.125244 1299.332642 1290.418823 1283.622681 1287.939575 1292.308105 1293.996216 1297.710571 1293.705322 1286.375 1294.63623 1295.143188 1292.988647 1294.341919 1294.020874 1293.938721 1299.300903 1305.408569 -1581.646606 1593.693726 1603.008789 1609.648315 1608.972168 1599.566406 1594.3479 1587.807739 1590.721558 1598.820068 1605.970581 1612.454346 1618.185791 1621.323608 1630.672852 1641.162354 1654.177856 1662.243164 1666.40686 1668.856323 1666.980835 1659.337769 1659.323608 1668.407959 1672.408081 1668.995239 1668.880859 1679.029175 1682.710693 1682.147461 1679.262207 1673.959717 1672.136963 1674.782104 1675.350586 1673.734009 1672.450195 1679.908691 1694.442749 1693.80188 1687.968628 1685.838135 1687.626831 1691.195557 1695.870483 1700.963257 1706.865723 1709.651123 1705.147705 1693.56958 1676.834473 1663.344604 1652.411987 1666.724365 1675.719604 1693.572632 1708.214844 1711.248413 1709.079346 1698.883545 1687.712158 1675.4552 1663.856323 1651.911621 1640.051758 1625.467773 1609.151611 1613.118042 1623.81543 1628.694824 1638.044922 1641.749878 1637.055664 1628.973633 1618.243896 1610.147217 1613.009766 1624.38623 1635.144287 1630.978027 1609.183838 1594.18811 1576.968506 1560.717041 1541.08374 1534.144531 1563.852905 1586.358643 1605.128418 1620.919067 1631.14917 1637.914551 1635.579834 1633.163574 1647.692261 1660.884277 1659.384155 1647.491699 1637.595459 1628.774902 1618.053223 1610.328003 1601.895752 1584.850708 1567.212158 1556.285278 1547.207153 1537.961914 1520.753784 1507.304077 1491.369507 1476.212036 1481.395264 1493.009766 1495.00415 1492.204468 1485.222656 1474.047607 1452.754272 1438.704346 1427.275635 1422.496094 1417.200928 1415.272827 1414.937622 1421.171753 1426.456909 1428.996338 1431.2771 1434.643188 1439.619751 1447.452148 1452.714966 1456.825073 1461.632935 1466.523804 1471.30603 1477.480347 1483.541016 1490.428955 1497.377075 1505.6521 1513.47644 1520.563232 1524.59668 1530.828369 1544.948364 1556.279785 1565.379761 1598.481079 1616.490723 1632.629517 1645.376953 1656.409424 1666.572632 1674.305176 1680.752197 1672.67334 1661.090576 1652.769165 1648.03186 1643.55542 1639.774902 1640.202881 1645.469604 1648.00769 1646.576172 1640.986938 1634.581055 1630.52356 1627.000854 1623.691895 1619.888306 1615.082031 1610.075195 1599.781006 1589.420166 1577.959473 1572.03125 1574.766724 1576.920532 1577.693848 1577.693359 1578.706665 1581.511353 1583.125 1581.806152 1577.530518 1573.250732 1573.97168 1586.400635 1588.376831 1585.32666 1585.633667 1587.974487 1590.512573 1591.397461 1590.760864 1589.362793 1587.174927 1582.577637 1574.758179 1571.140747 1562.070068 1557.98645 1552.242065 1547.202515 1541.71167 1535.444824 1531.069824 1526.660889 1522.968262 1529.380737 1539.730713 1540.590942 1535.39502 1526.255249 1527.500366 1533.675293 1539.333374 1546.743652 1551.105713 1552.890259 1551.230225 1546.986084 1545.917603 1545.246338 1545.910889 1546.766724 1546.581787 1549.273193 1555.289185 1563.734863 1574.559204 1584.384277 1592.022339 1598.624023 1604.77063 1609.230713 1608.685791 1602.05249 1591.485474 1582.536743 1574.070435 1565.304443 1550.760498 1539.103882 1529.519165 1517.99939 1504.799927 1492.28418 1477.549561 1466.077148 1459.902222 1452.798706 1444.10498 1432.964478 1425.531128 1424.372437 1429.007568 1434.312134 1441.125732 1447.756104 1455.417969 1463.374268 1465.582397 1456.232666 1444.074951 1436.53833 1441.300537 1455.597656 1470.733154 1485.104614 1497.10437 1506.230225 1518.157104 1531.115234 1544.068481 1552.069824 1553.227173 1549.795288 1548.091309 1548.215088 1546.757324 1540.897705 1533.441528 1536.53772 1548.162842 1555.239502 1549.459106 1543.419434 1539.26123 1535.258301 1538.066162 1536.316528 1544.74231 1549.398682 1555.71936 1562.533936 1572.431885 1583.696533 1594.72998 1599.059937 1583.368164 1574.96936 1568.622925 1562.500244 1554.565308 1542.517334 1531.221191 1522.754517 1516.293213 1505.843506 1485.77478 1479.071777 1475.895142 1480.086304 1484.868774 1488.532349 1496.553711 1503.028442 1503.990234 1482.010742 1465.111572 1450.12439 1438.001221 1432.014282 1417.406006 1411.924438 1416.65625 1432.819824 1442.435059 1439.624268 1443.058594 1439.19458 1456.822754 1473.490723 1484.872559 1490.210327 1493.079956 1497.372803 1508.992432 1517.400024 1523.203735 1530.009399 1536.559448 1545.764771 1549.94873 1548.618774 1544.879395 1545.502319 1544.992432 1548.674561 1554.756836 1559.442993 1563.660889 1568.496826 1574.551514 1579.510132 1579.090698 1576.348145 1572.766602 1567.086792 1562.778076 1558.655029 1553.874634 1550.793213 1541.359985 1532.317993 1523.307983 1516.925903 1510.181152 1500.721558 1492.911499 1479.663452 1469.953613 1462.763672 1466.19519 1470.203979 1474.989014 1478.533936 1478.490967 1476.331177 1473.166138 1470.382202 1467.294922 1464.581543 1461.051636 1457.10083 1453.861084 1450.464722 1445.930908 1442.047974 1438.847534 1431.778687 1427.895508 1423.27417 1415.086914 1414.299194 1415.238892 1416.023315 1415.805908 1416.02124 1416.463257 1416.40979 1413.267944 1408.356079 1407.50769 1409.151123 1409.848267 1408.162964 1405.469238 1406.105347 1410.133301 1414.535645 1416.778687 1415.470825 1409.658813 1402.64624 1392.957764 1385.628052 1380.039185 1382.763916 1386.558472 1390.125122 1392.842651 1394.961914 1396.9198 1398.714722 1400.604248 1403.869507 1408.394043 1411.92395 1416.319702 1420.166016 1423.803711 1427.573608 1432.574219 1438.743652 1445.097656 1452.137207 1459.077515 1465.513672 1468.563599 1467.595581 1460.730591 1444.629761 1422.713867 1391.369751 1379.411621 1367.954346 1356.09082 1342.948608 1324.035034 1315.664307 1312.5896 1309.536011 1310.711426 1319.730469 1323.711792 1333.301758 1354.421631 1376.436157 1396.566772 1411.923218 1422.535889 1431.224243 1431.456299 1434.118042 1437.976074 1436.460938 1438.955078 1437.080078 1440.516113 1455.037964 1463.344849 1468.745239 1460.18396 1459.64209 1460.008789 1462.292114 1468.50293 1477.022217 1494.694458 1502.745972 1489.315186 1476.099854 1463.32019 1452.384888 1448.131714 1455.989014 1467.490356 1471.279297 1467.775391 1467.221069 1462.746582 1451.346069 1454.151733 1466.596924 1476.460815 1485.017944 1497.420166 1509.775513 1514.845459 1509.764771 1504.850952 1499.968018 1494.939941 1488.506592 1487.375488 1487.643677 1493.35083 1505.108398 1499.006348 1491.533447 1475.668457 1460.726318 1455.287598 1459.571167 1464.466187 1450.90625 1440.389771 1429.730347 1416.113892 1403.268555 1394.18689 1385.798218 1377.901489 1359.064331 1339.293335 1316.762817 1304.028076 1315.675903 1328.17688 1341.792603 1355.911743 1374.6427 1388.092163 1399.677979 1404.23291 1404.999512 1403.424927 1399.470825 1395.567505 1393.703613 1392.401978 1390.611328 1388.414673 1385.580322 1382.403931 1379.435669 1377.691162 1376.432251 1376.805298 1377.877563 1377.711914 1373.706909 1369.228394 1365.053101 1360.624878 1357.212891 1353.980103 1350.898071 1347.980469 1345.320923 1342.659668 1339.531006 1335.936279 1332.707153 1331.061523 1329.853271 1323.474121 1320.979858 1319.063232 1304.766724 1293.241211 1286.272827 1282.010254 1284.963501 1284.644165 1281.694336 1277.855103 1272.680176 1268.109741 1263.438232 1259.609253 1257.830322 1263.292725 1270.019653 1281.064575 1288.466309 1292.061035 1292.209961 1290.130859 1284.93103 1277.566772 1275.838623 1277.643555 1279.56604 1283.272705 1287.809448 1286.742676 1288.623291 1297.680054 1299.436768 1298.615723 1297.637085 1296.927612 1296.175293 1295.799561 1296.519165 -1604.671875 1610.151611 1618.620605 1622.796997 1621.021973 1616.424072 1608.602417 1596.501465 1592.40625 1591.324341 1596.972046 1607.312622 1614.042847 1622.750366 1635.154419 1643.346313 1649.313477 1653.610229 1656.293457 1657.900879 1657.668335 1653.540527 1654.810181 1659.845337 1661.45105 1658.745605 1662.468018 1671.366333 1674.378906 1674.375122 1672.461914 1667.141846 1664.671143 1666.00061 1666.886841 1666.525146 1667.152344 1678.914429 1692.279419 1689.783813 1685.062866 1687.144897 1691.217651 1694.673096 1699.150879 1703.568481 1707.84021 1710.085938 1707.443481 1695.190918 1679.802979 1666.646484 1657.859131 1675.210205 1683.189453 1691.23999 1710.36731 1710.761841 1704.542236 1693.592285 1683.974854 1674.34668 1663.504028 1650.810303 1638.706299 1624.680786 1609.906494 1625.557983 1635.181763 1638.599365 1647.512817 1649.803223 1644.15332 1634.227051 1626.669678 1625.444458 1628.367065 1635.998291 1648.344727 1633.14563 1610.837402 1596.404785 1580.82605 1563.283691 1544.707642 1535.237305 1560.630981 1583.055908 1604.07605 1620.765991 1636.534668 1647.171509 1649.200806 1648.938477 1658.121094 1663.609253 1656.590454 1639.834351 1619.928833 1611.593628 1607.074219 1600.131958 1593.031372 1581.843018 1565.22229 1545.608765 1531.87439 1520.680542 1511.475708 1498.425537 1484.053589 1485.143677 1493.596802 1503.167114 1504.395752 1501.157959 1492.269287 1480.964355 1465.737793 1445.829834 1433.245605 1426.112915 1421.721191 1418.741089 1417.006592 1422.570435 1433.500488 1441.30249 1442.837036 1443.985107 1441.701294 1439.121582 1441.056885 1450.289429 1456.169189 1461.567261 1466.307129 1471.484741 1476.802734 1483.905029 1491.269409 1497.838989 1504.783203 1510.910156 1517.071411 1525.201538 1539.006348 1551.247314 1558.62915 1589.071167 1600.084106 1613.264282 1627.723633 1643.65979 1653.259888 1663.824463 1674.223267 1669.253174 1661.345337 1649.748291 1640.650269 1634.651001 1634.710327 1631.981323 1638.335327 1641.636841 1641.507812 1637.399902 1631.924561 1627.789062 1623.891846 1619.785767 1615.352783 1610.359253 1601.383789 1590.293457 1582.861938 1580.953613 1579.904175 1582.208008 1585.67395 1586.067017 1584.838379 1588.106079 1591.359375 1591.548828 1589.584473 1585.86853 1579.47168 1576.333374 1585.026733 1594.292847 1593.654663 1594.0448 1595.599731 1595.780396 1595.533691 1593.985718 1590.724121 1587.202026 1582.514526 1575.562256 1570.873169 1563.966919 1558.338501 1551.624512 1546.3396 1540.582397 1535.538452 1531.084473 1525.763428 1524.213135 1534.291992 1542.661011 1544.991333 1541.027954 1535.888916 1532.728149 1533.216797 1535.672485 1545.847412 1551.379272 1555.770996 1556.756104 1551.319092 1551.405396 1549.589355 1551.902466 1554.503296 1555.69751 1558.447754 1561.2323 1566.831787 1574.503052 1581.706543 1588.651978 1594.577881 1599.972046 1603.925781 1604.28772 1601.589722 1594.064209 1584.670654 1573.796509 1561.902588 1546.798706 1536.256958 1527.233887 1516.217529 1503.215576 1492.06665 1476.68396 1463.396973 1450.489014 1442.639893 1436.953491 1434.535156 1433.538696 1429.011353 1426.832764 1432.360229 1439.658203 1446.338013 1454.792603 1465.375732 1467.592163 1462.74707 1450.295654 1438.641968 1438.008057 1452.184937 1466.473755 1478.197754 1491.138184 1503.600464 1521.153564 1530.55249 1537.796143 1540.701782 1538.314331 1533.394897 1535.367065 1538.544556 1538.790405 1534.473022 1524.390869 1534.936646 1544.504883 1546.91626 1537.500122 1536.299072 1533.112915 1533.708008 1537.241943 1535.973633 1538.864258 1545.234741 1554.49292 1563.437256 1571.687012 1584.773682 1593.978638 1592.356323 1573.194336 1561.060669 1553.792358 1550.084473 1542.272095 1533.263916 1524.931152 1510.206055 1507.90686 1501.824829 1489.629761 1471.547485 1462.019409 1463.996338 1467.756348 1474.67334 1483.536865 1492.749756 1499.592529 1482.005981 1467.287964 1449.737793 1439.90918 1432.129272 1418.292236 1412.804932 1420.528564 1442.13269 1455.688843 1455.265015 1453.813354 1448.084717 1456.327148 1474.060425 1488.275757 1503.344849 1511.873169 1517.057129 1524.464111 1530.866699 1535.437256 1543.973877 1550.792114 1557.073242 1557.192749 1551.459717 1550.37793 1552.018188 1551.648193 1557.258057 1564.559448 1570.561035 1575.365356 1580.341553 1586.384766 1585.558838 1579.664307 1575.416626 1570.119385 1563.129517 1558.491089 1551.681641 1548.607788 1541.865723 1534.821777 1528.367798 1520.978027 1512.351196 1502.699463 1494.044312 1486.603027 1472.209839 1469.189087 1470.218384 1475.862183 1478.649048 1481.409546 1484.686646 1485.918213 1483.400879 1477.784668 1473.95105 1470.350952 1467.034424 1463.490723 1459.663452 1455.935791 1452.220459 1446.750488 1441.334961 1435.381348 1427.736206 1426.709595 1424.545532 1421.044922 1421.347168 1423.669312 1424.022705 1423.424927 1424.345459 1424.902954 1422.331421 1417.103882 1412.25 1413.063965 1416.296875 1416.753418 1415.583618 1412.44751 1411.935791 1415.258301 1417.449341 1417.565796 1415.579956 1407.702393 1398.438965 1387.634155 1382.089722 1383.466675 1386.137939 1389.763306 1393.284302 1395.923706 1398.546021 1400.875488 1403.407471 1407.195312 1412.865112 1416.720703 1418.896973 1421.401489 1424.439209 1429.800781 1435.827637 1443.197754 1451.411133 1460.298462 1467.267822 1474.993408 1478.658569 1479.057861 1477.024292 1465.716187 1445.711182 1424.23877 1389.493774 1376.607788 1368.991577 1357.557983 1346.234375 1331.640503 1316.213745 1314.453125 1311.668945 1310.103271 1312.004395 1313.607422 1325.580688 1349.068848 1373.255493 1393.123169 1401.941895 1410.66272 1417.87207 1424.340576 1437.502319 1447.620972 1450.623047 1452.371094 1452.289795 1449.171143 1450.690796 1463.180786 1477.855591 1472.569336 1473.235474 1473.783447 1471.38147 1471.59436 1479.383057 1492.782104 1503.652588 1489.380615 1473.794189 1466.700684 1456.051392 1448.789673 1460.894165 1477.279419 1480.125366 1477.735474 1479.269897 1475.788208 1463.84021 1460.275879 1462.616699 1471.713013 1479.136719 1490.990234 1504.53833 1508.81897 1504.1521 1500.14917 1493.32019 1487.669678 1478.796387 1473.806641 1473.478882 1473.871826 1483.765381 1487.552124 1484.731445 1471.675171 1449.93042 1440.860962 1443.825806 1444.390991 1437.906738 1431.747925 1418.664795 1404.90686 1393.307251 1386.350464 1380.250732 1370.829224 1357.062012 1342.807373 1327.093872 1309.208374 1315.804565 1336.262695 1348.483765 1360.424316 1378.879761 1394.24231 1404.521729 1405.775269 1405.785034 1403.693237 1400.801758 1399.393188 1398.829834 1397.779785 1396.266724 1394.657593 1392.695557 1389.487793 1386.553101 1384.495728 1382.679932 1382.337158 1381.490723 1380.560547 1377.102417 1371.303345 1366.501465 1361.79126 1357.846802 1353.85083 1350.796509 1347.787109 1343.807251 1340.894897 1338.808228 1333.861694 1329.866089 1326.254517 1317.65686 1315.464355 1314.59082 1307.825317 1299.434448 1293.542114 1293.369263 1296.534058 1298.02002 1295.818359 1291.239258 1284.43457 1277.926025 1270.664917 1266.06311 1261.732788 1259.915405 1260.286987 1265.289307 1271.318359 1277.724243 1281.20105 1281.412231 1280.108154 1275.846558 1273.620117 1280.269775 1281.464111 1282.602295 1284.740967 1287.032349 1287.802979 1297.836304 1305.759888 1305.733398 1303.652832 1302.246582 1300.874023 1299.65332 1298.74707 1298.150146 -1623.437866 1626.686768 1630.689087 1633.320435 1631.769653 1626.754761 1619.27124 1606.551025 1597.822998 1596.117188 1594.634644 1596.896973 1608.977539 1617.479492 1627.833252 1634.373901 1638.015381 1640.375 1642.95813 1645.572632 1647.862061 1646.773682 1647.401855 1651.913208 1652.631348 1650.810791 1654.79834 1659.870728 1664.896973 1666.137451 1663.651611 1658.847778 1656.137817 1657.0896 1659.03479 1659.832031 1664.348022 1676.858032 1686.198975 1685.107544 1681.477661 1685.287109 1691.819336 1696.70459 1701.201416 1706.279419 1709.414307 1710.640625 1709.180786 1699.391602 1688.212524 1675.399902 1666.038086 1685.12439 1694.373657 1699.529053 1707.411865 1709.61377 1700.234253 1684.298218 1672.9646 1666.134888 1656.871582 1644.535767 1633.979248 1623.316528 1623.079712 1636.605225 1645.433472 1652.459839 1656.693359 1657.585938 1651.397217 1640.064453 1636.625 1636.588501 1639.121948 1647.80896 1647.924683 1628.884888 1609.93457 1595.922119 1583.466919 1563.338501 1550.417114 1538.185303 1554.682861 1583.617798 1606.085083 1619.040894 1640.867798 1650.88269 1657.054443 1662.30481 1666.496704 1662.559692 1650.320068 1636.272095 1614.579956 1596.69165 1590.458008 1586.461426 1581.6875 1574.068115 1561.438354 1542.197388 1527.090088 1513.273682 1502.653564 1486.112549 1493.991211 1497.286255 1504.162354 1511.187256 1513.11499 1511.243896 1501.879028 1488.774536 1474.608643 1451.294922 1437.53479 1429.400513 1424.734497 1421.520386 1419.645264 1420.185303 1432.411865 1443.224121 1448.40979 1455.825928 1465.584106 1464.428711 1457.745728 1446.800415 1451.114502 1456.186646 1460.441528 1463.379639 1467.039062 1474.055542 1481.529419 1490.389526 1497.582031 1505.078735 1512.265747 1520.155884 1531.733032 1546.408936 1554.57666 1578.572632 1589.773682 1597.755249 1609.580566 1623.455444 1634.707397 1649.304199 1660.198486 1661.830933 1657.728516 1648.674072 1635.534668 1626.024292 1621.69751 1622.521484 1631.1521 1636.132446 1636.502563 1634.229736 1629.86145 1625.44165 1620.640015 1615.261108 1609.836304 1600.324463 1594.232178 1585.382812 1587.721313 1589.536865 1588.427856 1591.866577 1597.686646 1597.966797 1596.463623 1597.707764 1599.712891 1599.769775 1597.660034 1594.893799 1587.695923 1583.389648 1591.661011 1599.61377 1599.960083 1600.28064 1601.035522 1600.286865 1599.352661 1596.675537 1590.115112 1584.922485 1580.446533 1576.687256 1572.39624 1564.43042 1558.554932 1552.055908 1547.096191 1541.767456 1537.958496 1531.410522 1525.459961 1528.245972 1536.409546 1547.931274 1550.108398 1547.063354 1541.514893 1536.736816 1534.38562 1537.102417 1546.081909 1553.011475 1558.977783 1561.971924 1563.505615 1561.120483 1560.902954 1562.581543 1562.67395 1563.341797 1563.513916 1562.822144 1561.466187 1567.743286 1575.650269 1582.476074 1586.972534 1593.258545 1598.866699 1600.798706 1598.350342 1587.911011 1577.866089 1565.20752 1550.345947 1539.613892 1528.73877 1518.336426 1507.06897 1496.592773 1487.396484 1471.157837 1456.25293 1442.97522 1437.54187 1439.512939 1442.113281 1443.986328 1442.98938 1434.623047 1429.503662 1435.954224 1443.449097 1452.834961 1465.295654 1468.03772 1465.999634 1455.43335 1443.924561 1437.165283 1447.985107 1461.253784 1472.465454 1490.003418 1503.818237 1512.747803 1524.439087 1528.379639 1527.228149 1524.201294 1522.384033 1522.408691 1524.563965 1525.879272 1523.146973 1515.665039 1529.334961 1537.377808 1536.495361 1530.709595 1527.595459 1525.013184 1528.225342 1536.94165 1534.847656 1534.152466 1537.87439 1549.635498 1557.465088 1564.075684 1575.667969 1584.537354 1587.907959 1570.98645 1553.092407 1540.489258 1533.948975 1529.229126 1522.355225 1516.008667 1502.227661 1492.003418 1492.666748 1485.526611 1468.582764 1456.706909 1452.839966 1456.296509 1463.321655 1472.148682 1485.344238 1493.855469 1490.700806 1476.351685 1460.401123 1444.835449 1432.927124 1418.974487 1412.99231 1422.252197 1442.47583 1463.206421 1468.795776 1458.605957 1449.343018 1465.090088 1477.972656 1490.18042 1507.391113 1525.222656 1531.786499 1535.129272 1543.476074 1548.461548 1556.123291 1562.674194 1564.607422 1563.420532 1559.264771 1557.004028 1556.839478 1558.636108 1565.158813 1572.755859 1576.928955 1579.29541 1584.02002 1583.526367 1580.390869 1576.620605 1571.794922 1566.789307 1560.913452 1554.635132 1547.406738 1537.427002 1532.390137 1529.073486 1523.987183 1517.693481 1511.273682 1498.945312 1486.271851 1475.165771 1471.361938 1472.966797 1478.021851 1483.787476 1486.931641 1488.073242 1490.213135 1491.336182 1489.799438 1484.833862 1477.641357 1472.973267 1469.091309 1465.206299 1460.807373 1456.652832 1452.471436 1445.960571 1439.609131 1437.491211 1435.129883 1429.812622 1427.6427 1426.261353 1428.803223 1430.44165 1431.153687 1430.334229 1430.73999 1429.820801 1428.313232 1420.322144 1413.791382 1417.471558 1420.132568 1420.940918 1419.345215 1416.13501 1416.08374 1417.87854 1418.317627 1417.792603 1413.278687 1404.542725 1394.496582 1384.94873 1384.797974 1387.570679 1390.049927 1392.777954 1396.547485 1398.921997 1401.584229 1406.806152 1413.962646 1416.467041 1420.027344 1423.545288 1425.567505 1425.989868 1428.916992 1437.483276 1449.806152 1458.563477 1467.544067 1475.859253 1482.854736 1488.758789 1490.988037 1490.089722 1480.401123 1465.026367 1443.672363 1425.092651 1393.372559 1375.092773 1363.589844 1357.209717 1347.539673 1334.947754 1316.026978 1315.314209 1313.406006 1310.621826 1313.789429 1313.818481 1324.849976 1344.23584 1366.773193 1381.129028 1386.888062 1391.346802 1398.838989 1421.505005 1440.019409 1451.143433 1456.526001 1461.444702 1465.805054 1465.123901 1458.375366 1461.65686 1478.33313 1482.628174 1484.011108 1484.915405 1482.537842 1477.980835 1479.359131 1493.808472 1503.120239 1493.651489 1484.366211 1475.430786 1464.150513 1456.984497 1465.145386 1483.425049 1489.353516 1487.699097 1487.72998 1484.28418 1474.877197 1473.383301 1465.704468 1470.03772 1475.625977 1487.762573 1502.128296 1502.605591 1494.468872 1487.630249 1482.965088 1476.015747 1469.858154 1465.832397 1462.295288 1460.256104 1467.623779 1470.765747 1468.867676 1461.892822 1445.839478 1424.188354 1421.704834 1422.509644 1419.966064 1414.177002 1404.862427 1392.243408 1384.837158 1376.069702 1368.764648 1359.51355 1349.150391 1337.572021 1324.185303 1312.177612 1326.915894 1338.228638 1359.665894 1373.963867 1382.804565 1396.884888 1405.047485 1407.299316 1407.060181 1404.661987 1402.699341 1403.119507 1403.302246 1402.852417 1401.804321 1400.947388 1398.626099 1395.720093 1393.523071 1391.743164 1389.828247 1387.807129 1385.063965 1381.624023 1377.648926 1372.334595 1367.012573 1362.431763 1357.4375 1353.316528 1351.053833 1348.442627 1344.42395 1342.664429 1340.236572 1333.55835 1329.421143 1323.62207 1319.249023 1320.022705 1317.558838 1307.773438 1304.722778 1302.28894 1302.310059 1307.859009 1306.961426 1303.95874 1296.127075 1287.891357 1279.917603 1273.350098 1268.148193 1263.047485 1262.700684 1261.530273 1262.680176 1265.950317 1267.680786 1267.562012 1266.976929 1267.553589 1271.71106 1282.021484 1285.742065 1288.119141 1290.649414 1298.109131 1302.913208 1304.530151 1307.982056 1311.498291 1311.63855 1309.914551 1306.792725 1304.932373 1303.61792 1302.697876 1301.667358 -1636.171265 1643.464355 1648.389038 1649.469482 1647.717285 1640.973877 1633.062622 1621.578857 1612.157349 1605.041992 1601.510132 1598.099487 1598.829834 1605.143188 1610.091797 1618.530762 1622.94397 1627.050415 1632.283081 1636.075195 1637.900513 1638.7323 1640.402344 1644.769165 1644.45752 1642.435913 1647.218872 1650.108887 1653.389771 1654.855591 1654.255371 1651.178345 1648.09436 1648.284668 1649.302856 1653.484863 1660.084595 1670.604736 1683.109619 1681.872192 1676.513428 1684.050049 1690.901978 1696.838501 1701.756592 1707.033447 1710.101929 1710.667236 1709.834717 1702.932251 1695.191284 1683.233398 1670.282593 1692.137573 1700.742676 1706.22876 1709.596069 1709.233154 1697.627197 1684.473877 1667.076904 1656.039307 1645.468018 1634.582642 1629.735962 1623.042847 1629.325928 1642.733154 1655.85498 1663.675659 1665.947998 1664.668457 1659.427734 1647.059326 1646.702881 1646.566162 1644.154541 1660.048462 1646.325928 1627.957642 1608.56311 1595.250122 1581.203125 1562.024902 1552.768188 1539.849121 1558.338867 1576.453613 1603.177124 1620.002563 1640.619995 1653.916626 1666.323486 1673.229248 1675.14856 1667.916016 1649.540649 1634.961304 1611.847656 1591.472656 1577.38269 1569.051392 1567.946533 1561.993774 1548.110718 1535.007202 1521.784058 1508.73584 1497.619385 1506.843262 1508.6427 1509.570435 1516.317139 1524.9823 1526.524292 1521.352539 1510.352661 1492.228516 1477.909912 1454.907104 1441.025024 1432.994141 1426.365479 1422.875977 1420.479004 1420.338135 1425.166138 1437.663696 1444.132202 1450.643677 1464.449585 1477.601074 1476.436768 1465.080444 1451.502686 1450.440918 1461.429565 1465.686157 1471.417236 1472.877563 1472.916138 1480.098267 1489.716919 1501.259155 1508.983521 1516.623047 1526.285278 1538.130859 1549.600464 1567.397583 1579.867065 1589.304199 1595.65564 1603.829346 1614.967529 1627.862793 1645.728516 1652.252197 1652.723511 1646.63623 1629.970459 1619.520508 1617.428833 1616.006226 1624.251709 1628.963501 1630.834961 1630.513184 1627.809082 1623.811279 1617.264282 1609.726807 1603.34375 1596.661743 1598.297241 1600.046509 1600.690308 1601.033203 1600.821533 1602.76062 1604.73291 1604.894653 1605.028809 1605.917969 1607.21936 1607.004395 1606.036865 1603.673218 1598.252808 1590.775269 1595.537231 1601.576172 1603.807983 1605.05957 1605.934082 1605.058472 1602.019531 1597.051758 1585.072266 1578.876587 1575.007446 1572.891602 1566.943359 1562.194702 1556.993408 1551.080078 1546.543701 1542.315796 1538.354248 1531.706665 1526.863037 1532.65686 1540.755615 1551.396851 1552.973022 1551.130127 1546.534668 1540.523071 1536.099731 1535.99353 1546.678589 1554.243164 1560.175659 1566.443726 1571.912964 1571.506592 1572.038696 1569.026367 1563.074219 1559.414185 1562.123657 1560.299316 1556.300659 1558.335083 1564.498535 1570.378418 1575.500244 1580.823364 1586.966797 1591.36853 1586.568359 1578.241943 1569.042236 1556.976929 1540.89502 1531.743164 1517.614868 1506.552124 1497.249023 1489.388428 1480.069946 1465.646362 1449.713013 1437.693848 1442.599976 1447.47644 1451.038574 1454.272461 1452.432251 1444.882568 1436.093018 1432.396362 1439.646118 1450.280151 1464.723145 1469.009644 1467.520752 1458.53186 1447.526123 1438.906982 1442.9021 1456.262451 1467.843018 1483.500122 1500.685913 1505.352051 1511.642334 1516.289795 1515.216431 1512.796143 1514.454224 1515.313721 1513.728394 1515.075073 1510.83252 1509.890991 1522.080933 1528.86377 1527.742432 1522.289917 1519.475098 1519.324097 1525.725342 1534.522217 1533.069458 1527.078613 1532.521606 1540.795654 1550.656006 1554.912598 1558.746948 1570.298706 1579.817139 1569.531738 1549.734863 1532.295776 1518.018066 1512.647461 1509.698486 1506.164185 1499.756226 1486.154663 1477.150146 1473.059937 1462.20459 1453.406006 1448.128784 1451.545776 1456.463013 1463.426025 1477.428589 1489.297729 1491.006714 1481.520264 1465.64624 1449.446655 1433.548828 1418.820557 1413.517578 1423.124634 1443.223633 1466.197266 1481.779541 1470.769165 1456.065918 1469.296265 1485.736328 1503.136475 1517.465088 1533.617065 1544.958618 1548.026123 1557.520874 1564.746704 1566.33606 1568.574341 1569.36377 1568.375488 1564.388428 1563.072998 1561.973755 1563.076782 1571.688843 1577.77063 1581.009888 1581.132202 1578.910767 1575.223633 1573.689941 1570.753052 1566.300293 1561.846069 1556.443481 1550.872314 1543.070068 1534.466919 1526.223267 1523.14978 1517.298706 1512.238525 1503.797852 1492.972534 1481.755859 1472.932007 1475.663818 1482.091553 1488.791138 1491.584717 1493.074097 1494.070312 1495.123047 1495.641479 1493.359375 1488.903931 1480.886108 1474.755493 1470.422241 1466.145752 1461.424438 1454.533325 1450.220703 1444.82251 1439.219849 1439.827271 1439.05188 1434.047363 1430.238403 1430.862061 1434.511108 1436.811523 1437.449707 1437.156738 1435.871094 1432.914917 1429.664185 1425.103516 1420.735718 1423.144409 1425.699219 1425.96228 1423.752563 1421.796387 1421.247925 1420.629517 1418.99646 1415.357178 1407.370605 1399.022339 1390.171021 1386.09375 1388.486328 1391.827759 1395.531372 1399.167603 1401.301758 1401.922974 1406.445435 1414.490601 1420.674683 1425.322998 1426.064209 1430.922241 1435.606323 1436.608765 1437.853516 1450.184937 1461.016724 1470.546021 1479.310791 1487.779297 1495.29126 1497.769287 1496.320557 1491.230835 1477.111694 1460.14978 1437.341431 1420.428711 1396.471802 1380.93335 1365.114258 1354.494019 1346.789429 1334.731445 1315.992065 1315.634277 1312.822632 1313.22937 1314.959839 1315.209473 1323.749268 1338.886353 1354.569214 1360.332886 1371.356934 1391.111206 1410.064575 1425.282715 1435.322632 1451.462769 1458.605103 1464.826294 1470.343018 1474.077637 1471.460571 1461.768188 1479.373169 1489.951294 1493.942871 1494.506836 1492.197266 1488.593018 1486.277466 1491.412598 1502.994141 1503.05188 1495.73938 1482.67981 1471.744873 1469.549683 1465.544312 1488.371582 1494.283936 1497.182495 1496.306152 1492.393921 1486.563721 1483.251831 1475.163208 1477.442261 1482.956787 1488.183228 1497.430908 1495.719727 1485.871094 1470.953735 1463.651489 1461.651733 1459.389893 1455.143311 1448.699707 1449.583374 1453.422852 1456.456177 1453.349609 1446.678589 1437.13208 1416.592163 1404.795898 1403.768677 1404.209229 1399.475464 1387.940674 1381.248291 1371.482056 1356.416138 1350.627563 1344.968994 1334.97998 1327.567871 1315.266357 1324.234497 1339.825928 1357.368408 1368.709961 1382.425781 1388.93042 1399.560669 1406.592041 1409.39856 1409.411987 1407.916016 1406.45166 1406.565918 1406.570435 1405.986572 1405.305908 1404.576172 1403.486816 1402.532104 1401.020264 1397.27063 1393.789062 1391.650635 1387.571167 1382.340576 1377.259644 1373.267822 1368.734863 1364.094971 1357.531738 1353.063354 1351.55542 1349.834595 1346.967651 1344.486328 1342.829468 1337.443481 1331.45874 1323.306641 1325.52478 1324.526123 1320.693481 1315.522095 1312.434204 1310.480225 1309.44873 1312.668213 1309.897949 1305.962524 1297.467651 1290.281738 1283.15625 1274.936523 1267.890259 1265.221313 1269.331299 1270.725464 1266.158936 1263.494385 1264.884888 1266.717773 1272.026367 1280.382446 1283.750122 1287.776611 1291.258179 1295.474609 1301.415649 1309.175537 1315.012573 1318.797119 1317.505371 1318.112915 1318.818604 1318.44458 1317.90625 1315.643188 1311.396362 1307.769775 1305.549561 -1642.642578 1651.282837 1658.905029 1658.111572 1656.575806 1652.962891 1646.245605 1634.347778 1626.743774 1615.006104 1608.326172 1605.846436 1602.746216 1600.250732 1601.616455 1605.68335 1609.192993 1613.730225 1618.572388 1623.4646 1627.547974 1629.569336 1630.304199 1632.004395 1632.753662 1633.805786 1636.381592 1640.971924 1644.673096 1646.255127 1645.945557 1643.656372 1643.26123 1644.094971 1644.083984 1646.821045 1654.818481 1665.188232 1672.955688 1670.432983 1670.482544 1677.987915 1684.522583 1696.658325 1701.569702 1707.480713 1710.679932 1711.275757 1709.857666 1704.905762 1699.115356 1688.389893 1678.657715 1697.522583 1706.573975 1710.1521 1710.925171 1704.664551 1693.648193 1680.440186 1666.972656 1654.824341 1644.085571 1632.560791 1635.381958 1638.27002 1640.070557 1649.350708 1665.28186 1673.146851 1673.704712 1671.639648 1665.749023 1659.534912 1660.710938 1659.170288 1657.531616 1660.624878 1643.487183 1628.095215 1609.468018 1594.145264 1578.252686 1563.271118 1554.570679 1542.829834 1558.170044 1577.487549 1599.750977 1619.572144 1638.550781 1653.176025 1667.61377 1679.46936 1682.392944 1669.096924 1653.172485 1637.262207 1620.048218 1602.299805 1580.648804 1561.110474 1553.94043 1545.47583 1537.075806 1523.244995 1517.662231 1514.202148 1518.796875 1523.602539 1526.775269 1528.514404 1535.116821 1541.777466 1539.657104 1527.487793 1513.805298 1492.290283 1479.367554 1459.651245 1448.195312 1439.444946 1429.275513 1425.625122 1422.21936 1420.741943 1423.597168 1428.045654 1437.976074 1443.959473 1448.960205 1462.196533 1475.07251 1482.445557 1479.197021 1480.898438 1484.254272 1486.619141 1486.345215 1484.651245 1482.426636 1478.494629 1485.695557 1497.622437 1505.131104 1511.935303 1521.627686 1530.646484 1540.540527 1559.101929 1568.113403 1578.249268 1584.276245 1590.052856 1596.991577 1606.427734 1620.010742 1637.330566 1646.383301 1648.689331 1639.152222 1625.688354 1617.248047 1609.868042 1613.947632 1620.885986 1624.293823 1625.887817 1625.078125 1622.55896 1613.796875 1607.984009 1605.306641 1604.473633 1604.93689 1606.626587 1607.012207 1606.659302 1607.371094 1609.219971 1612.105103 1612.780762 1613.939087 1618.58728 1621.119751 1619.783447 1615.627808 1611.959595 1606.920288 1598.375977 1598.273926 1603.748291 1606.704468 1608.85791 1610.627686 1609.090454 1602.529541 1595.14624 1583.576416 1573.667358 1570.026733 1564.124146 1559.553223 1557.896973 1553.484131 1548.532104 1545.15332 1541.727905 1537.953735 1531.516602 1529.936401 1538.903564 1546.092773 1553.228394 1556.235962 1554.031128 1549.460327 1543.706299 1538.79895 1534.907227 1545.067505 1554.479614 1561.390259 1569.440186 1574.945068 1575.574219 1575.726685 1571.325317 1562.046387 1552.858643 1552.960449 1552.958862 1548.360718 1550.695557 1553.995483 1557.248291 1562.988892 1568.487793 1572.286743 1575.815796 1574.155151 1569.363892 1562.89978 1551.080933 1534.291016 1527.969604 1513.550415 1500.335083 1489.095581 1481.100708 1471.387207 1457.072021 1448.037476 1450.286133 1453.983521 1460.791748 1465.295166 1465.670288 1462.085205 1453.887451 1443.432617 1433.831177 1437.043457 1448.165527 1463.665649 1469.818237 1470.197388 1462.602051 1450.470093 1444.861084 1439.776489 1452.151855 1462.827637 1476.054688 1485.596313 1493.836426 1497.903198 1500.963867 1500.989014 1499.303101 1504.824707 1505.408936 1502.383911 1506.059692 1504.488647 1506.938477 1514.077393 1520.154053 1519.377808 1515.300049 1510.483521 1516.565186 1527.368042 1537.519897 1535.445435 1525.032104 1525.63501 1531.245239 1536.770752 1544.312988 1549.401611 1562.745728 1576.07312 1567.521118 1548.343994 1530.89624 1516.179932 1495.294678 1490.496216 1489.792114 1490.429443 1483.170654 1467.6427 1461.21228 1456.175171 1450.510742 1444.261963 1446.395264 1450.219604 1457.209717 1467.650024 1483.605225 1491.942505 1482.500854 1465.05603 1448.325439 1432.073486 1414.98584 1414.825317 1428.111572 1443.803833 1466.951294 1489.834473 1486.203857 1465.188843 1468.507324 1486.759033 1505.970337 1523.866211 1541.537476 1554.98645 1564.089844 1571.055298 1573.613525 1574.015991 1574.536743 1574.485229 1574.502197 1571.482422 1569.838501 1568.760254 1570.594849 1579.015625 1584.668945 1585.011719 1583.871338 1577.764038 1570.002563 1562.387451 1560.817383 1558.588257 1553.934448 1549.408569 1540.17395 1534.008423 1526.793701 1517.524414 1512.145874 1508.057373 1502.80542 1495.075195 1486.655518 1478.727051 1484.064819 1489.995605 1493.099609 1495.475708 1497.212402 1498.519531 1499.148315 1499.833252 1500.471069 1497.382935 1490.527222 1482.93396 1475.632202 1470.861206 1465.007812 1459.837646 1452.246704 1449.790039 1446.776733 1443.97583 1442.542358 1439.627563 1435.62793 1434.620972 1437.556396 1440.764526 1441.275635 1441.472046 1441.102051 1439.859131 1435.081421 1430.259766 1426.44104 1426.081055 1428.308472 1429.605835 1429.405884 1427.396484 1424.952515 1425.949829 1424.216797 1418.432007 1411.914673 1401.032837 1392.556763 1387.432495 1389.838501 1392.894165 1397.363525 1401.913452 1406.124756 1408.71936 1409.834839 1411.890747 1418.964844 1426.313843 1432.37146 1435.763062 1440.162109 1448.656494 1451.130249 1448.988037 1458.9646 1470.250366 1480.191406 1490.157227 1500.933105 1508.709473 1507.092041 1498.520264 1488.335571 1471.578369 1453.131348 1431.915161 1412.124878 1395.636353 1382.895264 1367.210327 1355.568481 1341.37439 1330.056152 1316.536743 1316.871948 1314.20166 1312.700195 1315.854126 1316.049805 1321.868408 1329.498047 1341.491089 1355.315308 1376.094604 1393.778076 1405.294556 1414.81665 1422.218262 1447.050659 1455.59375 1465.167969 1473.502197 1478.789062 1480.329346 1477.34436 1482.119995 1497.068481 1502.071411 1502.421509 1501.619873 1497.550659 1492.134766 1494.78479 1504.686157 1510.900024 1503.737793 1487.840454 1481.390869 1479.76123 1474.150146 1484.799927 1496.861938 1503.269287 1503.3396 1500.253174 1498.283813 1492.021484 1484.681885 1487.015259 1490.428101 1490.962646 1491.960693 1488.999756 1478.275146 1464.613037 1450.849487 1448.983032 1447.928833 1443.875854 1438.418823 1440.614624 1440.836792 1438.858398 1436.688354 1431.4104 1422.621582 1409.627319 1398.602417 1385.894653 1387.245117 1384.351562 1378.11792 1363.398315 1353.775513 1340.048462 1337.350098 1331.337036 1329.49707 1328.496582 1324.520996 1332.096924 1350.254395 1369.526001 1379.947021 1388.965698 1396.782837 1404.519531 1411.142212 1412.219482 1412.100342 1411.56604 1410.227539 1409.84436 1409.432007 1408.735107 1407.990967 1406.916138 1405.828735 1405.094971 1404.088257 1401.387695 1396.535034 1392.790039 1388.29541 1383.295288 1379.060791 1374.392578 1369.702515 1365.509277 1358.368652 1353.522827 1353.57019 1352.175415 1349.166016 1345.581299 1343.076294 1335.133667 1327.677856 1331.845947 1332.290527 1329.643433 1325.060669 1319.950684 1319.873169 1318.455811 1318.520142 1317.859741 1312.88147 1306.796387 1300.182251 1293.65625 1284.286499 1275.78186 1267.441895 1271.64856 1278.430176 1279.35437 1278.740356 1278.647461 1274.714478 1275.724609 1280.65979 1286.73938 1290.934937 1296.077515 1301.879883 1306.552002 1314.572876 1321.045532 1326.121704 1328.968384 1327.743652 1325.441528 1326.267578 1327.297974 1326.748413 1324.552246 1321.44397 1317.398193 1312.425537 -1644.231079 1654.370117 1662.011475 1663.716309 1663.769287 1661.420776 1657.128784 1646.431641 1634.576538 1627.922485 1623.097046 1618.90271 1614.913208 1610.53064 1607.203247 1604.346924 1603.80603 1606.124634 1608.319702 1612.302979 1617.258179 1620.896729 1622.202393 1622.898804 1623.724854 1625.577271 1629.083862 1633.114868 1635.654907 1636.692749 1636.362183 1636.498291 1643.255493 1645.296021 1645.123169 1644.326904 1645.721069 1656.085571 1661.694336 1663.805908 1668.896606 1680.344482 1689.757202 1692.228271 1698.46521 1707.130371 1711.183838 1712.153076 1711.136475 1705.869873 1700.466675 1691.885376 1686.209595 1702.684326 1710.603271 1710.406738 1706.519653 1697.641968 1684.349487 1673.452148 1665.128052 1654.651489 1643.197998 1636.008179 1645.530396 1648.390991 1645.497803 1655.756104 1673.243896 1679.374023 1680.095947 1677.753296 1673.476929 1671.36499 1670.407715 1670.721558 1666.521362 1656.553833 1640.459351 1624.455566 1607.025513 1593.899292 1581.521973 1571.122681 1558.756104 1545.278198 1554.340088 1577.172852 1597.930908 1616.2323 1633.028564 1649.007812 1662.093628 1679.650391 1684.959106 1671.230835 1653.359985 1639.791382 1623.631836 1608.829956 1587.796875 1568.666504 1555.591919 1544.026001 1530.179321 1520.652222 1524.851685 1533.195923 1537.566162 1540.382568 1541.902588 1544.540771 1549.130737 1549.564331 1542.632324 1529.660522 1514.159668 1498.187134 1483.263306 1468.873901 1456.888794 1447.511475 1440.63916 1430.087524 1425.919922 1421.578613 1422.942505 1427.268433 1433.572876 1438.592773 1442.867065 1448.670166 1459.74353 1481.930542 1492.644409 1491.88623 1493.672485 1497.881592 1498.700073 1496.701904 1493.315308 1487.624023 1483.109497 1492.488403 1501.828735 1507.662842 1514.569458 1524.409058 1532.487183 1548.998779 1558.368774 1565.457397 1569.5271 1573.611328 1585.533325 1592.350464 1603.30957 1613.025024 1623.93689 1635.291626 1634.068115 1627.123291 1618.454224 1608.63269 1604.446411 1611.862183 1617.434082 1621.684082 1622.190552 1620.990967 1619.151978 1616.009399 1614.685059 1612.931763 1612.674561 1616.613403 1617.310913 1616.779541 1618.943604 1624.984009 1627.212036 1629.387207 1630.978271 1632.439453 1631.24292 1628.549927 1624.732788 1620.086426 1614.136108 1607.879639 1604.901367 1606.566406 1609.670654 1611.536499 1612.028076 1607.841064 1601.128296 1593.549927 1585.772705 1577.94812 1573.388306 1565.614014 1560.52002 1556.590088 1552.057129 1548.108398 1544.465698 1540.257324 1536.442261 1531.653931 1533.090454 1543.57312 1551.998779 1559.209351 1560.848389 1558.230225 1552.281128 1547.023315 1541.109009 1535.173584 1544.76001 1556.062256 1564.351074 1571.289062 1575.543091 1575.84729 1575.224121 1567.809937 1557.625122 1547.553345 1545.702271 1545.063721 1540.070435 1534.063477 1540.439819 1543.773193 1549.068237 1554.963135 1558.612671 1562.595581 1565.226807 1562.706787 1553.338623 1540.320923 1531.535889 1524.126099 1509.011353 1497.039307 1484.730713 1472.441895 1460.876099 1450.04895 1456.983521 1462.260254 1469.727783 1476.18457 1476.911377 1474.616943 1471.15979 1463.285278 1451.040527 1439.035034 1435.687622 1446.59082 1461.429321 1470.14978 1475.349609 1469.55249 1460.407471 1453.834351 1449.184204 1448.614624 1453.78479 1465.876343 1476.93042 1482.427368 1486.1073 1488.898193 1489.346436 1490.028687 1492.610352 1493.189819 1496.695923 1500.140015 1499.021118 1502.660034 1508.841675 1510.950806 1510.566528 1509.326782 1509.894897 1521.237061 1530.42334 1538.04126 1535.978394 1526.686035 1519.437012 1523.050781 1525.840454 1531.407349 1544.292358 1557.706543 1570.422241 1563.277466 1544.636963 1530.601196 1512.827148 1491.333984 1479.11145 1475.886353 1475.835327 1469.040894 1460.853516 1451.421875 1448.239868 1441.636597 1437.67981 1441.121338 1444.835938 1450.623047 1459.091553 1476.857544 1487.55249 1478.078369 1460.63855 1443.013062 1420.315308 1416.968994 1424.164917 1434.177734 1447.230835 1469.673584 1492.095703 1499.97583 1486.045532 1470.670044 1483.815674 1503.150391 1520.097534 1539.713135 1555.142456 1566.80188 1574.174194 1576.779053 1579.312744 1583.25 1582.480103 1579.430664 1577.384033 1575.828247 1573.413086 1577.148926 1587.129761 1588.849609 1587.792358 1587.165894 1577.841431 1568.954346 1559.527222 1550.561279 1546.419312 1541.915771 1535.508667 1529.466309 1524.828491 1518.208252 1509.565552 1504.564087 1498.773682 1493.648804 1487.133911 1486.386963 1490.375732 1494.700806 1498.650391 1500.605957 1502.155396 1504.01062 1505.297119 1505.748169 1504.999146 1503.447998 1499.333374 1490.48645 1483.542603 1476.097412 1471.928101 1466.544312 1462.214966 1458.86377 1453.666626 1450.361206 1449.987061 1447.970093 1441.399414 1438.049683 1437.46167 1440.966553 1444.848877 1444.95459 1443.525757 1441.911865 1439.425781 1435.327637 1429.883301 1427.683594 1431.263916 1431.919312 1431.430664 1430.453369 1428.37207 1427.633667 1428.675171 1422.659668 1415.727173 1406.239502 1393.832031 1389.662231 1391.981567 1394.63623 1398.413818 1402.967651 1410.331543 1415.756836 1418.366943 1417.405273 1416.289917 1422.759155 1430.849121 1439.905884 1445.950928 1448.931763 1459.012207 1463.774902 1460.845825 1464.775879 1478.237305 1486.55542 1501.649048 1513.286377 1516.734009 1510.079956 1495.448608 1482.31958 1464.889893 1443.11145 1423.143677 1406.453613 1392.453247 1378.845947 1366.276489 1355.691895 1341.759277 1328.855225 1316.977295 1317.233521 1314.702148 1311.756226 1316.853516 1315.59021 1320.287231 1326.150879 1334.104858 1349.339111 1364.030396 1378.80127 1387.020264 1396.119141 1417.703491 1445.096313 1453.751587 1462.804199 1472.029297 1478.129761 1486.386597 1487.510376 1485.93335 1500.247192 1504.769531 1507.086548 1507.249634 1504.427734 1498.648926 1503.049438 1513.178223 1516.077637 1512.132324 1493.504272 1491.017578 1488.826538 1481.488159 1479.329834 1493.751221 1503.431519 1510.61853 1510.074219 1506.059692 1500.171021 1499.449951 1500.451294 1497.543457 1491.515625 1485.345825 1477.770752 1467.927612 1455.451416 1439.416992 1437.994629 1437.688965 1431.710327 1427.052368 1427.499512 1426.732422 1425.164429 1422.248047 1418.539551 1409.571045 1399.140747 1387.546021 1371.78418 1361.280396 1359.05542 1354.55188 1344.136719 1341.735352 1342.268433 1345.740967 1348.190552 1346.919189 1341.766357 1329.408936 1333.334351 1354.282593 1372.170532 1382.92749 1392.622559 1402.366577 1412.194214 1415.773071 1415.146606 1414.874512 1414.582397 1413.580688 1412.679077 1411.976318 1411.291748 1410.343262 1409.020874 1407.574585 1406.187866 1404.682373 1402.116699 1397.264771 1393.061401 1388.459473 1383.337646 1379.720459 1374.651611 1368.546753 1364.556885 1362.524902 1359.634644 1358.046631 1355.180664 1351.502441 1345.379639 1340.109009 1332.1073 1335.349731 1338.541992 1336.728638 1331.682739 1327.638062 1326.246826 1324.55188 1322.730591 1321.339111 1318.985352 1313.543579 1305.630615 1300.44458 1294.093628 1288.031616 1276.650513 1270.36145 1280.845215 1286.30542 1288.091919 1288.765015 1289.818726 1291.109619 1290.536377 1290.476562 1291.57666 1297.875977 1305.53894 1311.894165 1318.731323 1325.54834 1331.527832 1334.775391 1335.860474 1334.379883 1332.311646 1334.378906 1336.099121 1335.464722 1332.372437 1328.388672 1323.48584 1318.977051 -1643.321777 1653.610596 1662.108521 1668.469604 1670.756592 1667.166748 1663.441406 1657.112427 1649.157104 1642.920532 1636.586426 1631.966309 1628.792358 1624.680542 1617.765991 1610.886719 1609.731445 1610.485107 1608.988892 1608.272095 1608.980957 1612.817383 1617.467773 1619.573853 1620.803101 1623.608765 1628.81958 1631.933594 1632.111938 1632.161865 1633.01355 1643.166016 1649.543945 1652.452759 1652.014648 1649.743896 1647.339844 1650.472778 1655.313477 1659.165283 1670.079468 1686.370728 1697.039795 1696.887695 1694.005371 1704.473755 1711.253174 1714.751099 1715.419434 1709.713867 1702.834351 1693.693848 1692.077637 1709.53186 1712.024658 1706.907471 1698.533081 1683.951904 1672.575562 1668.041504 1661.72998 1651.244507 1641.508545 1650.104858 1661.620483 1662.742798 1656.270142 1672.186157 1681.178467 1686.384155 1686.575684 1683.865967 1681.438354 1680.944824 1678.824097 1673.980957 1668.203857 1655.183228 1639.040039 1623.160156 1608.516846 1598.850342 1587.671387 1574.202759 1562.892578 1550.878906 1547.052002 1570.981567 1590.775146 1611.341064 1626.157593 1640.640137 1654.430176 1672.752563 1682.766846 1666.90625 1649.664795 1636.692261 1619.974487 1607.616577 1589.95874 1570.420166 1556.224854 1542.277222 1526.321167 1528.395752 1542.534302 1548.75647 1553.020752 1552.65271 1551.587158 1556.207153 1558.192627 1553.306396 1541.004639 1529.067749 1514.241089 1503.177856 1490.614746 1478.249634 1462.90271 1451.958618 1444.965576 1437.913818 1429.272339 1425.610229 1421.737549 1426.100708 1429.881714 1433.713989 1437.394287 1447.42749 1457.412354 1476.53064 1490.977661 1491.697876 1490.631104 1499.363159 1503.401611 1504.72937 1503.568359 1498.741211 1491.283936 1487.483521 1498.303467 1504.398071 1509.714844 1517.560425 1526.509155 1538.08728 1548.014648 1555.862183 1561.591675 1566.220703 1572.599731 1581.742188 1588.826538 1595.940063 1602.448364 1607.360474 1611.117065 1612.092163 1609.174438 1598.705933 1594.348633 1605.336182 1611.051025 1618.55188 1620.458008 1622.810913 1624.478882 1625.102173 1624.65564 1623.485596 1624.436279 1627.338501 1628.830933 1629.314819 1630.151611 1632.132935 1635.077026 1638.849365 1641.115112 1641.421265 1638.712891 1634.34729 1629.93396 1624.97229 1618.765503 1612.051514 1609.070312 1610.061523 1612.069336 1612.561279 1609.606812 1601.587158 1597.184937 1591.052246 1585.039429 1579.018921 1575.38623 1567.811401 1561.434204 1556.783203 1552.644043 1549.318726 1544.334351 1538.777954 1535.037476 1532.554565 1536.090576 1549.147217 1557.618408 1564.666992 1566.639282 1562.797729 1556.70813 1551.480103 1545.71582 1535.702759 1547.474487 1559.888062 1565.542847 1571.368652 1574.958496 1575.487671 1572.320923 1562.38855 1553.8302 1546.236328 1541.836792 1536.019165 1535.394897 1529.975098 1528.649292 1527.372925 1531.223633 1537.202515 1544.10437 1550.177002 1552.177002 1548.379395 1539.048462 1532.063477 1526.113037 1516.458252 1503.272705 1491.120972 1476.657227 1461.894653 1459.105591 1461.898438 1470.149658 1479.310791 1484.608521 1487.726196 1488.398438 1487.135986 1480.77002 1471.894531 1458.126343 1444.993408 1437.715942 1444.040161 1459.144775 1469.35791 1477.674194 1477.963379 1470.057983 1461.186646 1455.457642 1453.195557 1450.6521 1456.156616 1464.205566 1473.404297 1475.88208 1478.53125 1479.102051 1479.921265 1481.713501 1485.712646 1488.664307 1493.211304 1499.939209 1502.65918 1504.281738 1503.47522 1502.477539 1504.661621 1510.77124 1520.26416 1529.697998 1537.32605 1534.592529 1527.112427 1511.936646 1514.061035 1519.740479 1527.706787 1538.629639 1558.9375 1564.100586 1552.87146 1536.997314 1527.433472 1505.670654 1487.346191 1474.743042 1465.979126 1460.386963 1454.991943 1450.713257 1443.966919 1437.697144 1433.852051 1433.51001 1435.814819 1437.951782 1440.557983 1450.394165 1465.553955 1476.673096 1468.282837 1450.845459 1428.362549 1417.434448 1421.561768 1428.979736 1439.986328 1451.720581 1472.39917 1494.505859 1506.302856 1499.375244 1481.120239 1480.305542 1496.323975 1514.048096 1531.919067 1546.861816 1563.385376 1570.185059 1576.448364 1582.993286 1586.921143 1588.148315 1584.344482 1582.114746 1580.498901 1580.411499 1583.168335 1589.808472 1591.856689 1590.571289 1587.254272 1574.778076 1566.308594 1558.347534 1548.790649 1536.715088 1527.620361 1523.068726 1514.936401 1512.556519 1509.368896 1502.807495 1499.160522 1496.717407 1491.975464 1490.747192 1491.948975 1496.274536 1502.258667 1507.620605 1511.12561 1511.944092 1513.101562 1513.462036 1512.465454 1509.224609 1504.339111 1497.988037 1488.415527 1483.671875 1477.318726 1475.348267 1472.82605 1467.880005 1465.445801 1461.908203 1454.786133 1451.161499 1451.326172 1445.54895 1440.446533 1438.462769 1444.502808 1450.278687 1448.552124 1444.880859 1440.821167 1438.184937 1436.246948 1434.635376 1434.647583 1436.107544 1435.531982 1433.011475 1430.739746 1428.639526 1423.030396 1416.28186 1412.20752 1405.832764 1398.669189 1391.482544 1393.403931 1396.097046 1399.413696 1403.977783 1412.135986 1418.034424 1422.621704 1426.600952 1428.490234 1425.799683 1425.368164 1436.915771 1450.570068 1459.574219 1461.366821 1464.769043 1473.62854 1477.254272 1481.595947 1485.540771 1497.561523 1511.531372 1520.588135 1519.858032 1505.62854 1490.700928 1475.094238 1457.34314 1434.05896 1413.24707 1402.582642 1388.758179 1372.448975 1363.135986 1353.363525 1341.009888 1318.892212 1317.369141 1315.288696 1310.782715 1314.849609 1321.786621 1339.778564 1338.891724 1327.391602 1329.590698 1327.958252 1347.996826 1358.144043 1372.713135 1395.773926 1413.552979 1454.26001 1460.979248 1464.581055 1470.057495 1474.233398 1483.614624 1492.867188 1498.639893 1498.055298 1506.025879 1511.334229 1513.10022 1513.111816 1510.870361 1511.082275 1518.118286 1520.265015 1517.422241 1505.768311 1503.170898 1496.583984 1489.866089 1487.221069 1487.687622 1500.566284 1509.637207 1514.145752 1510.753052 1505.588867 1503.859863 1503.766113 1501.287598 1491.212769 1478.367798 1464.362061 1454.41626 1444.763916 1427.360107 1425.562988 1424.103394 1418.855225 1416.392456 1417.083862 1417.431763 1416.195557 1413.347046 1407.257446 1397.30896 1383.257935 1363.211792 1358.487549 1353.831299 1350.387817 1352.270508 1356.015625 1355.113892 1355.690796 1361.657715 1362.98584 1356.07251 1348.307129 1335.406494 1334.607056 1347.180176 1360.406128 1381.016602 1390.883911 1402.333008 1411.697754 1417.430298 1417.950928 1417.904175 1417.617554 1416.849365 1415.558716 1414.53772 1413.5354 1412.503906 1410.987305 1408.977417 1406.713501 1404.333374 1401.527222 1396.8573 1392.595825 1387.56665 1380.21936 1377.36731 1374.921997 1369.444336 1367.509155 1367.618652 1366.955444 1363.667969 1358.982666 1353.884766 1343.556885 1336.684326 1341.044434 1344.525146 1344.842285 1341.922852 1336.916626 1332.092773 1331.157959 1328.68457 1325.882935 1322.932739 1318.970947 1313.141479 1305.057251 1301.935791 1297.29126 1289.862671 1274.82605 1282.291382 1288.006714 1293.181519 1297.641846 1298.807495 1300.931885 1304.980103 1306.755127 1305.870728 1303.596313 1304.174194 1309.163208 1317.363403 1324.532959 1331.422974 1337.411011 1341.507935 1342.897583 1340.547852 1338.990967 1342.677979 1343.25061 1343.321899 1339.084595 1334.041382 1329.32019 1324.102661 -1641.944092 1651.466309 1660.769043 1669.499512 1673.329834 1671.917847 1668.346436 1665.220459 1662.126953 1658.581299 1652.052368 1646.232056 1639.508301 1634.621216 1626.918945 1620.099243 1621.886719 1623.717285 1622.060181 1618.104614 1613.669312 1612.13269 1616.570923 1621.346313 1627.714233 1635.687134 1636.157593 1637.155518 1643.577881 1647.60083 1651.534546 1656.891357 1660.830078 1662.543335 1661.873779 1659.036865 1654.783569 1653.703857 1655.284058 1657.638672 1668.008057 1681.647705 1694.846436 1699.969604 1703.991821 1704.071533 1709.692993 1716.46228 1720.466187 1717.42749 1706.106689 1699.368896 1703.015625 1716.118286 1717.393311 1706.701416 1692.581787 1682.966919 1673.008545 1668.524658 1660.772583 1649.83374 1647.643921 1663.830078 1674.735229 1675.292114 1667.976929 1676.373657 1686.299194 1692.519897 1695.356323 1695.09436 1692.828735 1688.359741 1684.270752 1677.63855 1669.117188 1655.379395 1641.042603 1626.371338 1611.929932 1602.80249 1592.287231 1579.168945 1567.307129 1556.399536 1543.801636 1561.786865 1582.14624 1600.609497 1616.619141 1635.144897 1648.568237 1667.094849 1674.238647 1658.974976 1641.575195 1625.705078 1613.020508 1599.337402 1583.596191 1566.651489 1551.302002 1537.740967 1541.301392 1549.081055 1562.017456 1565.359985 1566.866577 1566.854248 1567.572144 1566.800659 1563.574341 1553.598755 1537.670898 1523.46228 1511.992798 1502.137329 1490.916016 1480.759033 1466.388672 1453.711548 1447.339722 1441.39624 1438.360352 1429.079468 1425.5177 1424.119995 1426.603271 1430.281494 1435.880493 1446.18396 1456.326782 1469.437256 1489.695923 1491.364746 1482.955688 1488.575562 1498.064819 1506.573486 1512.119019 1510.068848 1502.981079 1497.767944 1495.370728 1501.866699 1506.678223 1510.972656 1520.199951 1532.171387 1538.162842 1547.253906 1553.234375 1558.664795 1563.758179 1569.814331 1576.770752 1583.250977 1588.614258 1594.344238 1598.402344 1598.624756 1594.447144 1586.186157 1603.560669 1614.487183 1619.71936 1622.547485 1623.898926 1626.362671 1628.026001 1629.294189 1629.504395 1630.16748 1632.292358 1634.606689 1636.690918 1637.322632 1638.303711 1640.3302 1642.834106 1645.416626 1647.940674 1648.310059 1644.084106 1638.596558 1634.982422 1628.94165 1623.112793 1618.942993 1616.340088 1615.407104 1613.829102 1610.285522 1601.391846 1590.067017 1587.07373 1584.297119 1579.933228 1576.256348 1573.118652 1565.376587 1559.886963 1556.174927 1552.403198 1549.263184 1544.060669 1538.039062 1537.195068 1537.252075 1537.963989 1551.930664 1560.540039 1569.782837 1574.423462 1567.541626 1559.193115 1554.713379 1550.180054 1542.768555 1549.26123 1562.380615 1566.917725 1570.84436 1574.481934 1575.547485 1573.655396 1567.108154 1559.444214 1549.25708 1545.155029 1550.339111 1558.371948 1548.908203 1536.062622 1522.540283 1522.95752 1527.294189 1531.200195 1533.522095 1533.891846 1532.744629 1530.154297 1526.345581 1519.215454 1509.035278 1494.492798 1480.313965 1470.699585 1467.579224 1471.702515 1479.053345 1486.177612 1492.351685 1496.972534 1499.970825 1498.828735 1495.460571 1488.496338 1479.206421 1463.698608 1450.743652 1440.489624 1442.157715 1455.304077 1465.88562 1474.196411 1478.317383 1478.325073 1470.421265 1461.346069 1458.035767 1456.09668 1456.578247 1460.623901 1461.605591 1464.148682 1471.766846 1473.176147 1474.42395 1478.989502 1486.021484 1488.70459 1496.118042 1501.212402 1501.568359 1500.497925 1499.494751 1500.139648 1503.496338 1510.038208 1518.158569 1527.530029 1536.585815 1534.740234 1525.491333 1511.270752 1509.825317 1518.251343 1528.99646 1544.936401 1561.933594 1554.975342 1541.204712 1529.424927 1511.325562 1493.288818 1479.167236 1470.469971 1462.58313 1452.670044 1446.556396 1442.104492 1436.430298 1434.890625 1436.900391 1433.983154 1430.691528 1432.631226 1434.845337 1440.429199 1457.625977 1466.742798 1458.738281 1437.633179 1423.597534 1419.661133 1424.770752 1432.533569 1443.111084 1454.936035 1476.119873 1496.174316 1513.775879 1510.581909 1493.539062 1485.670166 1491.460815 1508.349976 1523.858032 1542.626099 1558.023193 1567.187378 1574.585449 1583.678223 1589.30896 1592.573486 1590.3573 1587.764893 1585.786743 1585.018677 1587.647217 1593.860474 1596.114014 1593.542114 1588.304077 1578.843384 1567.369385 1559.256592 1551.541138 1537.363159 1528.210815 1521.500732 1512.107178 1508.055908 1503.019165 1498.733276 1498.84314 1498.997925 1498.932983 1498.043579 1497.398682 1500.525024 1507.823853 1514.982056 1520.94104 1521.111694 1520.021851 1518.480225 1516.081543 1511.691284 1504.257935 1496.670288 1490.007935 1486.447876 1483.312012 1480.255371 1476.924561 1472.881958 1470.360718 1467.629272 1463.872681 1453.736206 1451.630005 1449.266113 1444.939575 1443.917114 1448.694824 1452.755981 1450.262207 1444.629761 1439.279541 1437.765625 1437.797729 1438.469116 1438.721191 1439.916382 1438.130127 1433.152588 1429.917847 1424.958862 1415.629639 1407.647095 1402.008057 1397.248779 1393.005249 1394.224854 1396.51062 1399.794678 1403.718506 1411.921997 1418.673584 1423.818359 1428.763428 1434.340454 1436.51416 1434.349487 1432.278931 1440.328247 1457.085449 1467.44104 1473.109741 1475.310303 1486.162231 1493.135986 1496.448853 1500.114136 1508.692383 1519.127686 1527.452026 1516.055542 1498.384399 1481.125854 1463.861694 1443.919312 1424.805664 1407.791992 1397.61731 1384.633057 1365.908691 1356.444214 1347.918945 1332.008301 1317.346069 1313.649658 1310.985352 1312.492065 1315.084473 1332.921387 1352.867065 1355.402588 1346.856323 1353.975708 1346.321777 1338.033813 1360.799683 1379.872437 1397.31189 1415.172119 1452.083984 1461.614136 1466.020386 1467.920044 1465.328247 1473.234009 1487.928345 1501.583008 1505.473389 1510.282227 1515.218018 1521.900024 1522.473267 1522.716064 1523.215332 1524.986816 1525.804321 1523.286743 1519.529053 1516.5896 1505.994141 1498.315186 1492.86792 1489.684326 1496.944824 1505.397949 1510.562866 1507.28894 1503.26123 1502.214111 1500.606689 1495.859619 1489.539551 1479.7771 1464.21228 1449.341064 1433.842163 1424.784058 1426.25415 1425.855469 1423.217651 1415.440063 1408.146484 1402.745605 1398.644409 1396.318726 1390.088257 1380.676636 1379.084229 1385.550049 1386.216431 1374.792358 1363.328979 1372.540894 1379.460327 1379.593872 1377.744873 1380.157593 1375.773682 1362.93042 1352.415771 1339.735596 1343.327881 1353.48645 1359.794556 1366.779541 1381.776123 1392.612549 1403.381348 1416.408081 1420.503662 1421.595459 1420.991821 1420.141113 1418.687622 1417.291992 1416.151489 1414.635742 1412.627441 1409.939941 1406.717896 1403.404175 1400.207764 1395.453979 1390.76709 1385.912476 1378.742798 1378.634399 1376.488525 1376.764282 1374.380615 1372.504395 1370.283081 1367.546509 1362.22937 1355.032349 1340.969849 1343.060791 1348.822266 1351.326416 1350.695923 1345.743896 1340.265991 1337.598145 1334.703613 1331.390137 1327.019165 1323.502686 1316.563599 1314.440918 1310.650879 1305.158081 1297.242188 1285.7771 1275.433472 1291.793091 1296.705566 1301.253418 1307.773926 1309.749268 1312.821289 1316.178223 1316.188965 1315.323608 1312.97168 1312.341797 1313.515259 1318.031372 1327.403198 1335.723633 1341.747314 1344.94751 1345.55835 1343.981689 1342.36792 1345.318604 1348.578003 1349.29834 1343.921753 1338.92749 1333.947632 1329.049072 -1640.339355 1649.453735 1660.070801 1669.695679 1675.392944 1676.283081 1674.175537 1672.555664 1670.62793 1666.62915 1661.759644 1655.933594 1650.307129 1642.996948 1634.125244 1629.897339 1632.215088 1633.235229 1632.469727 1627.928833 1622.057861 1617.161743 1617.527832 1620.493042 1627.260864 1634.51001 1635.593018 1639.205688 1644.365723 1647.417358 1656.674805 1663.841675 1670.355347 1673.351074 1674.418579 1669.940308 1661.592163 1658.678101 1661.536865 1657.760864 1659.67749 1675.320923 1688.451904 1698.220215 1707.762939 1708.897339 1711.814209 1717.828857 1721.057861 1721.953857 1714.310425 1716.504761 1716.164795 1722.185425 1721.388184 1713.355713 1700.714111 1692.071289 1680.962524 1671.054688 1666.503296 1655.283203 1654.744507 1672.981567 1680.631592 1684.599976 1679.90564 1682.094482 1691.421753 1697.855103 1699.685425 1699.192871 1697.408691 1689.905518 1684.704956 1674.446167 1665.78064 1654.899658 1642.055298 1626.498413 1613.962891 1604.112671 1593.533813 1582.436768 1573.440308 1562.718872 1549.683105 1549.731201 1569.873901 1596.030151 1615.999512 1632.793091 1649.619507 1669.074097 1675.042358 1663.156982 1645.162109 1628.620483 1615.749634 1597.890381 1576.714722 1559.569946 1547.46167 1552.295532 1560.739014 1567.689331 1574.63147 1579.338989 1581.720093 1583.978882 1581.37561 1571.907349 1557.619385 1545.78772 1530.459106 1515.194458 1505.535522 1497.379761 1487.31897 1478.258301 1461.107544 1451.664062 1449.539185 1448.355347 1444.796753 1440.758789 1427.29126 1424.811279 1424.397949 1427.617554 1433.857178 1442.744019 1452.510132 1462.577271 1477.710815 1477.805664 1474.20105 1481.25647 1491.769409 1501.376099 1515.286377 1517.731079 1516.697144 1511.240112 1503.608887 1500.575317 1504.904541 1507.947144 1511.538574 1527.852417 1532.144897 1535.893921 1543.328735 1551.661987 1556.223145 1561.628418 1567.740356 1572.350586 1575.747314 1579.14917 1580.142944 1576.798096 1579.247681 1589.390747 1611.018555 1620.480225 1625.743652 1628.864868 1629.935669 1630.79541 1631.995117 1633.425293 1633.896362 1634.799316 1637.740234 1640.923706 1643.159546 1644.623413 1645.945801 1647.567871 1648.747192 1649.522583 1649.594482 1648.691284 1644.450562 1640.248291 1636.810181 1632.194824 1627.48291 1624.161133 1622.134766 1619.720093 1614.56604 1609.399536 1601.959961 1594.293213 1584.817505 1579.851929 1572.44873 1571.479126 1567.343994 1560.081543 1557.748291 1554.405029 1550.941895 1548.388672 1545.565308 1544.127563 1544.385132 1539.914917 1538.13501 1553.114502 1561.002808 1571.280518 1576.12915 1572.783325 1562.66333 1557.455688 1552.322754 1547.522705 1549.38916 1561.432983 1567.656494 1572.669312 1575.226562 1576.37854 1575.671509 1571.065186 1563.120117 1551.110229 1551.927612 1569.038086 1578.717651 1570.173828 1547.981201 1533.997559 1522.42627 1519.784668 1522.074097 1523.810669 1523.573608 1523.219849 1521.84436 1517.436401 1510.602417 1496.851562 1481.608887 1475.920532 1477.52417 1479.989014 1484.59375 1491.874634 1499.430786 1506.69043 1514.353638 1514.655151 1511.499634 1502.466187 1492.920044 1481.973511 1466.952515 1454.527832 1443.432617 1444.911499 1449.838501 1460.951416 1468.454468 1475.518433 1478.239258 1477.851196 1468.149414 1462.641602 1461.71228 1464.077759 1465.817505 1467.717529 1469.935303 1475.624268 1477.736328 1481.064575 1487.212891 1490.675171 1493.060059 1498.693481 1500.637817 1499.06189 1498.788574 1500.440552 1503.932739 1506.273438 1509.525269 1515.793213 1524.12085 1531.436768 1529.054932 1519.492065 1501.887207 1502.051025 1511.131348 1528.264404 1538.019775 1544.052246 1538.03125 1527.801025 1512.05481 1495.534668 1480.854126 1470.597534 1462.645874 1453.272339 1446.870361 1440.565063 1436.711548 1438.546143 1447.904419 1449.324341 1447.025879 1439.330688 1428.699707 1427.598022 1431.012085 1441.278687 1452.740234 1447.415039 1432.276611 1421.12207 1422.7771 1430.498657 1439.964355 1447.286499 1457.783569 1482.310913 1505.370605 1525.804688 1526.148682 1510.087036 1501.682495 1497.270142 1507.351196 1525.43689 1542.169189 1555.960693 1566.157959 1574.813843 1583.05542 1591.402344 1598.506226 1596.812622 1595.888184 1596.936157 1595.470825 1595.801514 1599.251709 1599.825195 1595.799194 1589.578003 1580.530029 1569.567871 1560.348022 1548.836426 1536.89978 1535.043579 1529.532959 1518.171021 1510.239502 1506.684082 1507.448364 1509.039795 1509.27002 1507.393066 1504.357422 1503.568359 1505.687988 1511.769287 1521.170776 1530.139404 1530.767212 1526.338379 1522.651733 1519.124268 1513.846069 1506.189209 1498.937256 1495.245239 1491.3479 1488.12146 1484.694214 1481.25354 1477.77771 1475.228516 1471.897339 1467.82959 1462.538208 1456.924072 1452.561157 1450.10376 1450.338501 1452.324707 1452.82019 1451.172485 1445.636841 1440.088379 1438.873413 1439.690063 1440.057495 1440.456543 1439.198242 1435.295166 1430.907471 1426.718628 1419.991821 1410.995117 1402.490601 1397.276123 1394.67688 1395.479004 1397.277344 1400.053223 1403.634155 1410.873535 1417.889404 1423.351074 1429.197876 1436.3302 1442.550415 1446.023804 1447.446045 1444.883057 1445.385498 1459.772583 1472.6521 1482.380859 1490.65686 1496.664062 1503.26416 1508.416748 1513.096436 1518.69104 1524.270752 1522.399048 1500.531494 1483.53772 1466.968872 1450.225098 1427.688965 1410.268311 1400.628906 1389.978394 1376.835938 1359.322632 1345.006592 1335.631958 1318.892212 1313.124268 1311.871216 1312.026001 1314.257812 1318.671143 1340.880005 1363.874268 1372.108032 1368.116211 1373.216187 1361.152344 1338.213989 1356.617188 1375.837036 1389.133423 1404.754395 1432.495483 1442.622192 1458.208374 1465.070312 1454.958984 1458.557129 1476.669556 1495.172363 1507.459839 1514.826904 1520.264648 1525.359985 1527.123535 1529.557739 1531.788086 1532.481567 1532.477783 1531.056274 1528.420898 1522.32373 1513.619141 1504.771118 1498.24231 1499.406738 1500.284668 1503.306152 1505.716064 1502.44458 1497.150513 1492.611694 1487.96228 1484.246338 1482.332886 1475.676392 1462.766724 1448.150146 1431.93335 1431.806396 1440.466553 1445.053467 1443.91748 1435.750854 1424.543457 1416.659546 1407.712891 1401.236328 1392.27124 1397.276245 1396.161133 1404.670776 1403.219727 1384.189575 1379.14563 1387.27124 1390.903442 1391.744263 1391.239746 1386.638794 1379.109985 1366.479736 1354.629639 1339.358276 1356.691406 1373.257202 1380.550293 1382.972168 1383.405151 1390.743774 1404.439697 1417.916504 1422.623535 1425.657227 1424.794922 1423.525757 1421.800171 1420.06189 1418.398071 1416.427124 1413.749512 1410.658691 1406.209106 1401.802246 1398.863159 1394.22583 1389.840088 1387.294434 1384.354736 1381.918091 1380.879272 1380.449219 1379.261841 1376.053223 1372.266479 1368.76709 1363.335083 1353.405396 1344.593384 1352.104492 1356.934937 1357.886719 1355.505859 1350.035645 1344.637085 1342.157959 1338.273682 1333.383911 1329.866699 1328.936401 1322.990845 1319.637695 1315.293213 1306.474365 1296.489624 1278.850098 1280.097778 1296.637817 1305.069946 1308.78833 1316.756592 1319.528198 1327.422363 1329.172119 1327.956665 1324.619629 1320.237061 1319.287476 1317.684326 1318.091919 1328.280762 1339.031738 1345.378052 1349.007568 1349.016724 1347.714355 1346.729126 1348.579224 1352.912231 1354.80896 1349.290649 1343.133911 1338.083618 1332.660645 -1640.70459 1649.376831 1662.344727 1671.66748 1680.155518 1681.26355 1680.378174 1681.853516 1678.91394 1674.085693 1670.124146 1664.716797 1657.546875 1649.751465 1638.612305 1637.610596 1645.719971 1647.108521 1644.361938 1639.762329 1633.737061 1624.033447 1619.393799 1619.756958 1622.551636 1628.146362 1631.295776 1633.284058 1642.882935 1648.028442 1655.930542 1665.855957 1675.764404 1683.490356 1685.640381 1683.203857 1672.822266 1667.987671 1675.275635 1673.06311 1662.765503 1667.588013 1678.212036 1691.341675 1700.004028 1706.916504 1711.414673 1717.23584 1721.263428 1722.791992 1722.659058 1723.295288 1725.701294 1727.341919 1725.104736 1720.057495 1705.621216 1695.870972 1684.825439 1679.521851 1674.341675 1660.520142 1659.144531 1677.652466 1685.065552 1688.376953 1689.84314 1691.88855 1696.79541 1701.147217 1705.337769 1704.480591 1693.616455 1684.470703 1675.395508 1665.277954 1658.203247 1648.52124 1638.832642 1623.633789 1614.27356 1604.089966 1591.107422 1581.901733 1575.407104 1566.490845 1555.780884 1546.539551 1569.184204 1593.086426 1613.929199 1635.670532 1650.707153 1668.434692 1676.191284 1669.311035 1652.445557 1633.130005 1618.910645 1605.718384 1578.720947 1556.66748 1555.591431 1569.437622 1580.192139 1587.127441 1593.694702 1594.504028 1597.352417 1597.817749 1590.972412 1576.91333 1559.10437 1534.084961 1518.836426 1507.818359 1497.756226 1486.898193 1480.569946 1472.593994 1468.27124 1466.503662 1464.133423 1457.322266 1449.764893 1444.723022 1439.306885 1431.731934 1426.475342 1424.683838 1426.513672 1437.781738 1446.081055 1454.726562 1463.827026 1465.115479 1464.278198 1472.951904 1483.70459 1495.854126 1510.028687 1521.58374 1525.797363 1521.213989 1515.515625 1506.565552 1503.450928 1505.980347 1509.537598 1523.044189 1527.79895 1531.469238 1536.22644 1544.706421 1549.832031 1555.340576 1561.469482 1565.12854 1567.285156 1567.603638 1565.455566 1569.508545 1581.998535 1594.696899 1613.657227 1626.009644 1634.338623 1635.521118 1635.157837 1635.171875 1635.820923 1636.85083 1638.179688 1640.156006 1643.473999 1647.039673 1648.480347 1648.953125 1649.7323 1649.948608 1650.329712 1650.200928 1649.980347 1647.618896 1642.753296 1638.344849 1635.802734 1630.841675 1626.653198 1624.878662 1623.751831 1621.03833 1614.97522 1611.08728 1606.053711 1601.025024 1591.374512 1582.091309 1575.076294 1571.572021 1566.564331 1561.949585 1558.332764 1552.017334 1548.547363 1548.12207 1548.918945 1550.534912 1551.196045 1548.497437 1538.822876 1553.181885 1561.20813 1570.08606 1575.731689 1576.044922 1569.557495 1560.356934 1554.35144 1549.077026 1549.428467 1559.99707 1568.708618 1574.815552 1576.837769 1577.56189 1577.231323 1574.53772 1565.39624 1559.611572 1556.709839 1574.098877 1587.629395 1578.575806 1554.927612 1539.854248 1528.338867 1518.953003 1511.175537 1510.889526 1512.039551 1511.510132 1508.865723 1503.256714 1496.011475 1485.778198 1480.304932 1480.558472 1483.583374 1487.494141 1497.234131 1509.052124 1518.187256 1525.915771 1529.535278 1529.018921 1522.760742 1506.172974 1493.576782 1481.976196 1466.877319 1454.338257 1445.584351 1449.893555 1457.747437 1463.778931 1465.244263 1474.276611 1477.584961 1477.628052 1473.517334 1471.280884 1469.293579 1471.767334 1475.915283 1477.504639 1478.557251 1481.269775 1483.491211 1485.628906 1490.674683 1494.858887 1495.419189 1495.194946 1495.147095 1494.095215 1498.988647 1504.063232 1509.10144 1510.95752 1511.074707 1513.299561 1521.375854 1526.716431 1525.988892 1511.394775 1499.902954 1487.358643 1502.760132 1517.19043 1522.041504 1523.542236 1518.901855 1508.696777 1492.690063 1479.856323 1469.724243 1462.050537 1453.609741 1447.996338 1441.461304 1438.093994 1445.643921 1464.081543 1474.411499 1474.186157 1466.339111 1449.9729 1436.818359 1428.839355 1425.807007 1427.925171 1438.89856 1438.770752 1424.501953 1420.580078 1427.643677 1439.846924 1450.366089 1461.112915 1468.670288 1490.61731 1511.344849 1532.639893 1539.502686 1533.155518 1520.92395 1517.781738 1512.71875 1522.111206 1538.167725 1555.390991 1566.412476 1575.427124 1582.589355 1590.69873 1598.382935 1601.371216 1602.639038 1604.574951 1605.121094 1604.877197 1603.450317 1600.095093 1594.994507 1587.487427 1578.315796 1569.593506 1560.142456 1554.579712 1551.922729 1545.463501 1536.250854 1522.585815 1510.190186 1514.548706 1520.127808 1522.079102 1520.672607 1517.46228 1512.111206 1510.640137 1510.913452 1515.919067 1524.522461 1538.731689 1544.902588 1536.015625 1528.88208 1522.762207 1517.803223 1512.253418 1504.489014 1500.064453 1496.996094 1493.7052 1489.696411 1486.387085 1482.710083 1479.449097 1475.721191 1470.232422 1465.18689 1460.820923 1456.004883 1454.093262 1454.154663 1453.682861 1453.069702 1451.056763 1447.145264 1443.070435 1440.917358 1440.375366 1439.867798 1437.825562 1434.562622 1430.921753 1426.901611 1421.963013 1414.492065 1406.100708 1399.228882 1396.191772 1396.767212 1397.987061 1400.349854 1403.454468 1410.334717 1416.872559 1422.542969 1428.553101 1436.604004 1443.960938 1450.437988 1456.331909 1461.609619 1463.751953 1460.764648 1462.272461 1475.631226 1488.629028 1497.437622 1505.898071 1513.686157 1521.043823 1527.611206 1531.003906 1531.464966 1513.394531 1488.343994 1465.073486 1448.473633 1428.785767 1411.928345 1401.067871 1388.738037 1379.074341 1366.067383 1348.113281 1329.883423 1319.934204 1313.396362 1311.839844 1311.810669 1312.656494 1316.292114 1329.849609 1349.342773 1370.635254 1385.126831 1385.577759 1385.256714 1374.493896 1349.973389 1342.416138 1360.298218 1374.80835 1389.064209 1412.115112 1428.010986 1440.604614 1453.455933 1444.003174 1452.771118 1464.411865 1483.956909 1506.52478 1515.14624 1516.358398 1515.486572 1523.450195 1531.635132 1538.098633 1541.088623 1541.098511 1540.194946 1535.642334 1528.740845 1521.619995 1513.365723 1510.460938 1507.143555 1504.971924 1504.623779 1503.764404 1499.070801 1490.632935 1478.824951 1476.040527 1471.912354 1470.924561 1464.047485 1453.927002 1439.237183 1435.047119 1438.919189 1451.669556 1460.451782 1457.845337 1450.73938 1439.296021 1425.500732 1415.915527 1410.399658 1404.773438 1416.102539 1420.3302 1416.603394 1407.245972 1388.467407 1394.970825 1401.36377 1404.189575 1402.137939 1396.622192 1389.599854 1378.572754 1366.670654 1351.440796 1346.349609 1365.586792 1382.821411 1393.540894 1401.855347 1406.672607 1406.473389 1401.696899 1415.200195 1423.062012 1429.131226 1428.434204 1426.643921 1424.810059 1422.650635 1420.375366 1417.770508 1415.06543 1411.374146 1406.423096 1402.176514 1399.364868 1396.019043 1392.907104 1390.58606 1387.940186 1385.501099 1383.422852 1381.871094 1380.194946 1377.046753 1371.842285 1368.788208 1360.394897 1347.253296 1353.870728 1363.379883 1367.280273 1363.745117 1357.882568 1352.55249 1348.187622 1344.530762 1340.085938 1337.070923 1334.572021 1331.9375 1327.288574 1322.473999 1317.102417 1306.604248 1292.156006 1283.141113 1292.899292 1293.842651 1305.849365 1311.332642 1318.747681 1328.621338 1331.766479 1333.437744 1333.204834 1331.525269 1327.824219 1326.453247 1326.281128 1325.692139 1327.991089 1339.512329 1348.533936 1354.680054 1352.904053 1350.831787 1349.596191 1349.848755 1351.213257 1353.001587 1350.006714 1344.321533 1341.240845 1335.984985 -1643.472656 1650.859863 1663.644165 1673.194702 1681.350952 1684.707886 1684.717773 1685.114136 1684.555176 1680.554443 1676.507324 1673.187744 1668.732788 1658.30188 1646.110718 1648.952637 1656.3479 1658.929688 1656.505981 1650.382568 1643.537354 1636.283325 1626.790527 1620.798218 1620.549438 1623.237915 1627.709839 1634.0448 1643.451416 1651.383057 1659.673218 1668.249878 1681.952881 1687.117554 1688.859131 1687.874634 1678.55603 1674.377319 1685.597778 1686.819092 1679.978149 1670.784302 1669.844482 1680.901123 1690.975464 1699.295532 1707.864746 1714.376221 1720.2052 1722.909668 1723.773193 1726.742065 1731.800659 1732.138794 1727.657837 1722.231812 1711.692871 1702.829224 1693.407104 1687.649048 1681.728882 1670.79126 1663.148071 1679.419434 1686.977905 1692.050049 1695.802368 1698.546875 1701.489868 1704.874756 1708.504272 1696.809814 1686.116089 1671.116089 1661.416626 1650.31189 1645.600586 1638.576904 1632.237305 1620.526611 1610.443359 1599.533325 1586.364746 1580.831909 1575.493652 1567.566895 1558.219849 1548.634033 1559.557251 1585.832397 1609.320679 1630.855103 1643.832031 1666.098267 1675.99353 1673.211304 1653.525635 1634.484985 1616.749878 1600.493164 1572.859375 1567.998535 1562.480835 1582.223877 1597.83313 1608.578247 1611.404907 1611.673584 1613.612183 1608.530518 1594.27002 1577.989624 1556.523193 1530.447144 1522.167603 1514.262695 1507.446533 1500.856445 1494.685181 1489.862427 1485.510498 1479.359131 1473.928345 1466.947876 1453.969238 1447.266968 1441.910645 1436.954468 1431.527588 1428.043091 1424.721924 1427.604736 1439.059692 1446.900269 1452.261353 1456.746582 1461.936401 1470.288696 1481.004028 1493.085327 1505.384644 1516.817261 1528.136963 1532.447998 1527.555664 1521.757202 1511.302979 1508.87146 1507.692871 1513.206909 1524.318604 1528.783325 1533.891846 1539.190186 1544.039551 1549.227051 1555.160767 1559.54895 1561.289307 1560.602173 1558.2323 1569.63501 1585.447388 1595.411377 1614.924438 1634.327271 1640.373047 1639.288818 1638.43042 1638.192749 1638.349243 1639.161499 1640.587769 1643.15564 1646.345947 1648.47937 1649.109497 1649.702148 1649.957886 1650.174805 1650.339478 1649.744995 1647.68457 1643.150269 1637.66394 1632.819946 1624.765381 1620.924561 1619.708862 1617.748657 1615.071899 1613.192749 1613.193726 1612.051636 1608.845337 1602.875977 1595.969238 1586.441528 1579.983032 1574.502075 1568.455933 1563.81604 1558.978638 1551.908447 1548.345825 1550.468628 1552.727417 1553.965454 1554.348633 1552.357544 1541.580322 1552.723389 1561.459839 1569.175659 1574.900024 1576.544312 1574.521973 1563.372559 1556.220459 1549.345093 1548.423218 1558.268677 1569.023804 1575.951416 1577.969971 1578.56604 1578.088623 1575.705811 1569.806152 1563.186768 1559.700928 1574.220337 1587.09729 1585.760498 1562.362793 1549.08374 1537.903687 1527.381348 1523.898926 1510.839844 1504.022705 1498.032837 1496.396606 1492.336548 1486.961426 1483.82605 1482.946167 1485.12915 1490.705322 1502.574219 1517.021973 1524.407593 1530.781006 1536.630615 1536.182129 1532.394531 1524.174072 1505.689453 1491.84375 1478.143066 1462.765503 1451.012695 1447.054688 1451.764526 1462.772217 1467.055664 1470.606812 1474.077881 1477.225464 1478.898193 1478.317627 1478.071899 1477.203857 1478.72644 1482.722778 1485.58374 1487.070312 1487.025269 1489.134888 1493.10022 1497.167603 1501.01062 1499.255371 1492.879761 1488.826416 1490.474854 1503.980835 1512.098877 1515.507568 1516.567993 1516.828613 1518.856079 1522.683594 1525.812256 1523.206055 1505.199341 1492.828979 1484.96228 1488.119019 1496.394287 1502.796387 1503.532104 1497.881226 1489.216309 1475.878052 1466.659058 1459.083618 1452.888062 1447.592407 1444.556519 1441.817383 1448.623901 1466.615112 1485.917603 1492.164307 1487.037842 1475.619141 1458.545654 1445.095337 1437.488281 1428.058472 1424.576904 1424.891235 1423.300537 1422.536743 1428.622314 1434.074951 1441.306885 1464.606812 1474.089355 1486.186646 1499.32959 1521.61499 1540.009033 1551.802124 1550.14856 1540.53833 1537.959717 1535.726318 1531.054199 1532.712036 1552.28064 1565.522461 1575.230225 1581.689331 1589.203735 1597.111206 1603.55188 1609.591064 1611.543457 1612.320312 1610.886108 1607.036255 1599.759033 1595.250854 1589.753906 1584.086182 1576.870483 1569.434814 1561.901001 1553.859863 1548.318848 1536.859985 1523.738159 1519.840698 1527.070312 1529.854004 1530.470337 1529.41333 1526.653442 1520.244873 1517.26062 1517.532837 1521.241089 1532.477173 1548.312134 1552.901367 1547.954834 1538.096558 1528.935669 1522.192017 1516.439209 1510.596436 1509.061035 1509.729492 1500.918701 1496.415161 1491.322266 1486.665771 1482.090698 1477.502563 1471.551514 1465.912842 1461.950562 1459.05127 1456.606812 1455.145264 1454.255249 1453.05835 1450.401733 1446.753418 1442.950684 1439.123657 1437.702393 1434.963501 1430.920288 1428.263672 1425.696655 1421.916748 1416.786987 1408.914917 1401.190918 1397.608154 1397.933105 1398.859375 1400.649414 1403.215942 1413.336548 1417.791382 1421.570679 1426.822876 1435.257202 1444.734375 1454.079956 1462.274292 1468.359985 1472.951294 1472.78772 1470.628174 1468.963623 1477.975708 1492.008057 1504.021606 1515.299805 1524.62854 1532.626709 1539.010498 1540.485962 1530.160767 1508.491699 1486.949951 1461.313232 1431.977783 1414.383423 1399.22998 1387.641724 1380.032593 1366.286865 1349.017456 1334.274292 1320.724609 1312.986328 1311.997559 1312.006958 1312.932739 1315.376953 1327.142944 1348.571533 1363.724609 1376.18811 1398.46814 1403.960571 1393.987427 1386.826538 1369.248657 1360.652466 1356.252563 1350.294189 1366.001221 1397.27832 1413.519287 1433.293945 1443.372559 1436.174683 1446.8125 1457.415894 1471.450684 1502.665283 1515.749756 1508.724609 1501.175049 1515.691895 1527.014404 1537.92981 1546.54248 1551.527588 1548.413818 1542.947754 1538.183105 1530.233521 1522.584961 1516.869873 1511.76709 1508.360718 1504.182861 1497.71814 1485.998169 1475.692139 1466.326172 1462.221191 1454.103271 1450.178589 1441.252441 1435.042236 1435.751953 1442.132446 1450.61145 1462.001709 1471.431274 1464.501221 1451.787109 1439.247803 1427.664062 1423.245972 1415.114502 1418.046631 1437.589844 1440.022339 1424.043091 1410.885742 1404.930664 1413.721436 1421.302124 1418.338867 1407.918945 1399.787598 1392.328735 1379.910889 1364.401001 1351.358398 1356.420532 1363.824707 1382.994751 1397.360596 1408.68811 1415.301514 1420.322388 1421.884888 1419.848755 1425.241333 1428.859619 1432.46521 1430.777222 1427.513916 1424.809692 1422.210938 1419.320068 1416.338257 1411.558838 1406.974976 1401.842285 1400.470337 1399.574585 1396.666748 1393.676514 1390.670532 1387.631958 1384.140015 1381.523193 1379.705444 1376.126587 1370.19043 1365.220093 1351.470215 1352.907593 1363.826172 1370.120972 1368.611938 1365.049927 1359.485962 1354.453735 1351.283569 1347.223145 1343.148438 1340.495239 1337.013306 1332.92749 1328.328979 1322.133911 1316.096924 1304.175293 1288.111206 1299.91687 1308.210449 1306.237549 1303.052612 1310.278931 1316.124146 1326.513184 1332.120361 1335.375 1336.084351 1335.058716 1333.167725 1332.943726 1333.311646 1332.191895 1329.631592 1337.958984 1346.789917 1354.928101 1354.149536 1352.364258 1350.98584 1350.447266 1350.202271 1349.621826 1347.849487 1345.390869 1342.910034 1340.669678 -1644.585449 1650.674683 1662.495972 1671.330933 1676.926514 1681.371704 1684.312988 1685.300659 1685.484253 1684.308716 1680.950806 1677.991089 1675.02356 1670.961914 1659.226685 1655.019653 1661.437134 1663.202881 1662.067505 1659.03064 1651.472168 1643.369629 1634.724609 1627.559326 1622.622925 1620.587769 1624.392212 1631.128906 1641.080811 1650.65979 1659.703125 1670.261108 1683.148682 1688.057861 1692.2052 1693.560181 1685.493896 1688.219238 1695.585083 1695.697632 1690.191162 1682.132568 1673.905151 1676.966309 1682.393921 1691.845215 1702.805786 1709.633789 1715.638428 1719.367798 1721.684814 1725.043457 1729.324707 1732.188843 1728.823242 1724.573486 1720.855713 1711.999512 1701.908569 1694.243042 1687.101929 1676.881592 1668.534668 1681.044067 1688.887817 1694.522827 1698.824585 1702.053467 1704.864258 1708.075073 1701.633057 1684.256714 1673.368042 1661.604004 1649.717529 1639.903931 1632.381714 1628.114502 1625.010742 1615.034546 1604.692505 1595.092041 1586.726074 1580.062988 1574.964844 1566.659668 1558.0177 1549.4646 1560.544556 1581.184448 1601.724365 1620.80603 1641.501953 1661.557129 1673.142456 1674.147949 1652.570679 1631.0802 1612.998657 1602.388428 1599.509277 1595.937622 1582.66748 1599.061401 1613.824707 1623.591797 1626.962036 1626.336914 1624.578979 1614.362183 1594.512817 1578.209839 1565.772339 1549.081909 1538.312378 1529.19519 1523.036377 1516.475342 1506.753662 1498.495972 1491.253662 1484.119751 1475.194092 1467.409302 1454.919434 1448.018799 1442.844727 1438.271606 1435.557617 1431.312866 1427.621216 1425.924194 1433.858765 1442.307861 1449.678589 1454.197388 1459.643677 1463.556396 1477.430786 1487.782593 1501.177979 1510.435425 1523.005737 1536.211548 1542.307007 1543.57666 1538.527466 1529.164185 1521.946411 1511.784058 1518.36499 1526.207397 1530.118164 1534.629395 1539.466431 1544.618774 1550.394043 1552.736206 1551.321655 1548.225708 1559.157227 1571.273193 1585.944946 1594.552002 1610.062378 1640.683228 1645.468262 1641.697998 1640.300537 1639.749756 1639.633301 1639.952515 1640.994507 1643.152588 1645.414917 1647.490479 1648.740234 1649.057373 1648.629395 1648.06604 1646.448242 1644.227783 1640.710571 1636.562378 1630.749878 1622.838745 1614.541626 1609.231567 1606.219727 1604.362549 1603.709839 1603.638306 1605.317383 1611.311401 1610.242065 1603.130737 1596.944458 1589.776123 1584.005615 1575.788452 1568.216675 1561.552368 1559.290161 1555.954468 1556.57605 1558.161499 1558.914185 1558.718628 1556.755127 1553.40564 1547.680298 1550.187378 1561.543335 1568.62207 1574.473633 1576.305542 1576.411987 1567.380249 1558.36853 1551.593262 1547.518677 1557.303101 1568.88208 1576.039551 1578.856079 1579.952271 1579.740479 1576.64502 1571.15271 1565.973633 1561.99939 1574.494873 1586.59082 1590.151855 1573.958984 1554.790771 1541.690796 1533.238892 1527.540649 1515.285156 1505.042847 1499.119873 1496.336304 1490.084961 1486.583008 1484.812988 1486.957397 1493.503418 1507.508301 1519.75 1529.660889 1537.115601 1542.506226 1542.779297 1540.424561 1533.484985 1521.78833 1502.968628 1486.967163 1471.006226 1457.900757 1451.21228 1453.38208 1454.199829 1460.262939 1464.72937 1473.844116 1477.500977 1479.625 1481.250244 1481.830811 1482.011719 1482.230957 1484.165283 1488.277832 1492.714355 1495.775635 1496.161743 1498.618896 1502.313843 1502.530884 1503.113892 1501.549805 1488.494873 1485.821899 1495.157959 1516.308228 1524.42981 1522.783813 1522.130249 1522.76001 1525.135498 1528.354248 1529.762817 1526.180054 1511.623657 1496.123657 1484.322266 1481.07959 1476.53833 1482.564087 1486.712402 1481.573608 1470.815063 1462.416138 1456.950439 1451.324219 1447.909302 1449.439575 1448.299316 1446.793945 1458.675659 1480.051392 1499.400513 1500.839844 1491.993408 1477.372803 1461.453369 1449.588989 1442.260254 1431.687744 1425.838745 1424.419922 1425.328247 1430.645996 1446.17688 1447.10437 1444.782227 1459.111572 1474.787598 1491.62439 1509.220337 1525.324219 1536.832031 1549.964355 1553.631958 1552.723389 1550.984131 1550.994141 1550.070312 1546.433838 1546.350708 1562.691528 1574.831909 1581.08606 1588.361572 1596.935669 1603.50415 1609.494141 1612.231567 1613.184692 1613.08667 1611.195557 1606.517212 1599.929077 1594.173218 1588.30603 1578.818726 1570.633911 1561.311646 1553.390015 1542.826416 1531.103027 1524.215576 1529.71228 1532.926147 1535.677002 1537.196411 1536.622192 1534.229248 1528.423096 1523.997437 1522.769043 1527.338379 1540.886108 1552.06665 1556.693481 1551.186035 1543.143066 1535.793579 1526.064697 1519.831177 1513.330078 1510.329956 1513.912842 1512.178345 1502.593384 1495.873413 1490.038574 1484.318115 1477.945312 1471.926147 1465.412354 1462.008179 1459.345459 1457.009888 1455.380981 1453.995605 1452.342651 1449.529053 1445.985229 1442.458496 1438.447998 1433.845459 1429.324463 1424.711548 1422.52356 1420.291138 1417.007812 1411.821289 1403.304077 1399.291992 1399.154541 1399.630493 1400.981445 1403.265381 1413.837769 1419.607422 1423.271606 1425.829956 1431.703491 1440.869751 1452.329956 1463.69043 1472.984863 1479.553589 1482.311035 1481.752808 1479.191772 1475.342041 1479.722046 1495.303101 1510.501709 1523.002808 1535.12085 1543.306763 1548.508789 1536.387207 1521.431396 1504.163818 1480.631592 1457.032837 1424.634521 1408.590576 1391.327637 1379.351318 1362.159424 1349.775757 1333.674561 1322.567017 1313.457275 1312.108765 1313.130615 1313.300903 1316.984009 1323.809326 1333.799805 1356.806274 1371.878174 1384.058105 1400.852051 1409.687988 1403.86499 1391.119629 1385.02417 1377.549072 1374.011353 1372.314941 1367.239624 1388.775146 1407.851562 1429.266724 1435.678711 1425.695923 1436.981323 1451.250732 1468.18811 1490.930664 1505.230347 1496.916992 1490.491089 1507.175049 1519.546509 1527.049316 1533.996216 1541.501953 1550.479126 1550.584595 1544.173828 1536.733643 1527.784912 1520.948853 1515.213989 1507.270874 1497.004395 1485.692139 1479.83606 1465.72229 1459.922119 1460.662964 1461.030151 1456.880005 1450.905273 1444.01355 1437.582764 1452.200439 1465.247437 1476.844482 1479.621216 1467.609009 1456.699707 1444.917725 1435.485596 1429.636841 1421.581177 1431.305908 1454.858032 1449.012817 1436.355469 1433.66394 1427.82605 1431.542236 1429.459106 1414.113281 1407.007446 1399.366943 1391.738403 1379.63562 1363.066772 1359.716919 1372.381958 1379.524902 1377.210938 1393.131958 1409.817383 1422.440063 1430.888916 1434.780151 1434.810547 1433.738037 1437.174683 1438.119873 1436.47644 1431.373901 1426.671143 1423.888794 1420.728638 1416.683105 1413.835083 1412.576416 1407.996826 1405.202637 1403.225952 1400.917847 1396.974487 1392.463013 1388.334717 1384.068604 1379.330566 1376.133423 1371.01709 1365.640869 1354.411255 1353.584229 1361.458252 1369.490356 1373.83667 1370.529907 1365.21936 1361.589111 1357.79187 1354.950562 1351.469238 1346.781494 1342.932251 1338.114258 1333.182251 1327.959595 1321.275146 1312.396606 1298.875732 1298.520386 1307.264404 1316.381958 1317.974243 1311.38855 1312.47644 1321.031006 1330.492432 1334.400391 1338.647339 1339.271362 1338.948364 1338.959351 1339.639038 1340.31543 1340.262329 1338.356934 1339.583252 1342.729858 1351.466553 1354.415405 1353.473999 1351.836304 1350.833984 1349.810303 1348.602295 1347.155029 1345.503906 1344.082275 1341.860107 -1646.125 1649.265015 1659.813599 1668.115112 1673.251099 1677.687134 1681.489014 1683.824707 1685.975952 1686.349976 1684.044556 1681.347656 1678.876587 1676.109741 1671.810547 1658.214233 1664.587402 1667.119629 1666.604004 1663.61792 1657.861816 1649.791748 1641.405396 1633.572632 1627.951416 1622.428223 1621.314575 1630.710938 1638.872559 1647.466675 1657.766235 1667.176025 1681.003174 1688.567627 1693.575073 1697.316162 1696.219849 1697.835693 1700.209473 1700.257202 1697.568115 1690.172241 1679.800537 1677.947876 1680.583374 1692.947876 1699.944702 1704.884766 1709.407715 1713.265259 1717.42688 1722.009521 1726.680664 1728.392456 1726.206055 1723.469116 1720.732056 1714.886963 1706.946899 1698.995728 1689.828003 1680.485107 1673.31604 1681.568115 1690.162964 1696.541138 1701.469238 1705.768555 1708.049438 1709.615601 1693.30127 1673.597778 1661.307861 1648.463379 1636.920654 1629.05542 1619.270508 1617.75415 1614.139404 1607.057251 1599.247437 1589.807251 1583.090454 1577.713501 1572.110107 1563.994995 1556.483398 1550.136108 1567.747314 1589.104004 1608.009277 1625.890015 1644.244385 1662.223999 1671.438843 1672.009766 1649.483032 1639.246948 1631.390991 1617.478149 1617.286255 1617.3302 1603.984863 1612.342285 1624.387573 1631.29248 1643.361816 1651.031128 1643.639771 1619.449463 1601.657837 1581.914307 1571.781738 1560.281128 1547.981812 1537.760132 1529.575317 1520.125732 1510.151245 1501.0448 1492.445923 1482.891235 1472.844849 1463.868042 1453.112549 1450.278809 1447.068359 1442.764648 1439.600708 1434.841553 1430.159058 1426.164795 1431.105225 1444.938477 1453.625732 1457.567871 1461.862183 1465.253052 1474.745483 1485.189087 1498.854248 1511.414307 1518.615967 1524.459473 1538.169312 1550.593018 1555.137817 1550.575439 1541.175049 1524.344971 1518.202148 1521.578125 1526.311646 1530.646973 1534.492554 1536.960815 1538.769043 1539.572144 1545.323364 1549.651001 1560.152466 1570.885742 1584.273315 1592.010498 1602.981323 1624.937988 1641.640015 1642.440918 1641.704834 1640.329224 1639.649658 1639.600586 1640.341797 1641.282471 1642.281982 1643.596802 1644.9375 1644.62085 1643.164917 1640.816406 1637.832642 1634.610596 1631.461548 1627.77478 1622.056152 1614.315674 1606.047974 1597.88562 1595.077026 1594.206787 1593.891602 1593.24939 1594.07312 1604.886719 1607.356934 1600.871094 1594.433838 1588.813354 1582.792358 1574.210327 1564.275757 1559.867798 1559.309082 1560.66333 1563.816162 1565.236206 1565.461182 1563.707275 1559.839478 1556.331055 1551.90332 1546.277344 1561.182373 1568.111084 1573.815063 1576.268433 1576.538086 1570.732056 1560.591187 1556.297363 1549.324585 1554.898071 1568.699585 1575.799316 1579.563843 1582.119263 1582.586548 1579.822388 1574.815552 1570.967773 1572.520264 1579.636963 1584.136841 1583.962402 1571.002441 1555.538452 1540.329102 1529.864136 1521.419556 1509.251587 1504.953247 1500.911621 1504.627686 1501.730957 1488.839233 1487.631104 1494.520752 1503.996826 1519.250854 1529.436157 1537.273926 1546.748047 1550.86145 1546.11499 1540.520996 1529.435425 1515.019531 1496.620361 1477.379395 1462.855225 1460.296753 1463.900146 1463.991577 1464.220581 1466.064453 1465.999512 1474.852661 1478.40271 1481.895386 1484.527954 1485.103271 1485.45874 1485.383789 1486.24231 1491.811035 1499.637695 1502.786377 1502.783325 1503.364136 1503.93689 1504.287109 1504.361694 1499.783691 1488.485229 1487.157593 1495.450317 1515.885986 1532.244019 1541.888794 1538.38855 1534.221069 1534.864136 1537.012695 1536.855591 1530.254395 1521.037476 1506.290405 1494.232422 1489.485107 1477.182251 1467.482666 1465.800903 1462.528564 1458.811523 1453.980103 1449.487549 1447.024902 1448.101929 1453.157959 1452.929565 1449.550903 1466.331177 1485.797241 1503.585449 1504.92981 1493.861328 1478.488525 1466.535156 1457.47998 1446.552246 1438.660278 1440.198853 1435.420288 1443.36377 1448.120972 1459.690552 1461.569092 1450.755493 1453.609619 1472.041016 1490.349731 1503.705322 1517.148682 1527.797241 1535.921143 1549.979126 1559.226685 1563.800293 1566.609131 1564.198608 1560.976074 1560.109985 1560.984253 1574.281982 1580.758789 1588.460449 1597.284912 1602.622681 1607.182007 1610.915161 1612.917847 1613.429443 1613.644897 1611.762085 1604.275879 1595.342529 1585.365845 1575.82312 1569.062134 1559.130005 1548.968628 1537.356323 1533.522461 1534.104126 1540.37793 1542.125244 1546.110474 1547.928711 1546.799927 1543.494507 1538.039429 1534.567871 1531.801514 1534.687134 1547.977051 1559.114258 1562.765137 1555.442871 1544.90332 1535.660522 1527.813599 1521.156372 1514.040527 1503.292236 1506.209351 1508.368164 1503.764648 1498.75 1491.876099 1486.024658 1478.576904 1471.510986 1464.08728 1460.408081 1457.399536 1455.664795 1454.384766 1452.631348 1450.529175 1447.436768 1444.018311 1440.874878 1437.141846 1431.158936 1426.664795 1421.507446 1417.487305 1414.807251 1411.616821 1406.082764 1400.949951 1400.425293 1400.776855 1401.58313 1403.439087 1412.544067 1419.86084 1425.292114 1430.108887 1433.779663 1437.552002 1445.757446 1458.001709 1470.699097 1480.808228 1487.930908 1492.360596 1492.23999 1490.458252 1486.136475 1486.476562 1498.723511 1515.864624 1530.386353 1542.77124 1550.713257 1547.90979 1530.699341 1514.139648 1496.337769 1473.869629 1442.539795 1414.802612 1402.232544 1386.401489 1373.169678 1354.819092 1335.578247 1322.724731 1314.83667 1312.738892 1315.991577 1321.55481 1321.959473 1330.06189 1340.771973 1343.459839 1361.526245 1375.874878 1397.742676 1410.755371 1417.108521 1410.925659 1400.54834 1394.075073 1387.006226 1384.837769 1382.143921 1377.190918 1384.719116 1402.260376 1423.954102 1425.151611 1418.398804 1434.424683 1452.215942 1463.809937 1476.596436 1486.313232 1479.911011 1476.046875 1497.454834 1511.459961 1513.202026 1523.560913 1525.505615 1531.61853 1542.137329 1543.604492 1538.704712 1531.350708 1523.670166 1516.391724 1508.400879 1501.983521 1499.379883 1492.109741 1475.77002 1469.271729 1476.113159 1474.339355 1470.925537 1468.012817 1457.769043 1446.375366 1457.197144 1474.932251 1488.921753 1484.061157 1474.054932 1463.813477 1450.822266 1437.702393 1432.104492 1425.49231 1439.491089 1464.868042 1456.249512 1446.883545 1439.780884 1433.082764 1429.373047 1420.404419 1410.350708 1403.904297 1395.831421 1386.174072 1371.303101 1364.286621 1370.447388 1384.389404 1391.244019 1392.860596 1391.86731 1405.318604 1425.480469 1436.856567 1442.216187 1444.343628 1444.84314 1444.323853 1443.624023 1441.34436 1436.753418 1430.221558 1426.347168 1423.177002 1419.422974 1417.187866 1416.689819 1416.369507 1412.899536 1408.150269 1404.905518 1400.837646 1394.618286 1390.058838 1384.897705 1378.256226 1372.441772 1364.163574 1359.599121 1355.427246 1360.709473 1367.130493 1375.75708 1378.657837 1373.098633 1366.99646 1362.956543 1359.43457 1356.571045 1353.497192 1347.741943 1343.633667 1338.052612 1331.290039 1325.964233 1319.316162 1309.368164 1301.679199 1310.12561 1314.873535 1326.691162 1329.629883 1322.597656 1317.450562 1317.341187 1331.845215 1339.418335 1342.627686 1343.348877 1343.447998 1343.812012 1345.532227 1346.721436 1346.907593 1345.577026 1342.230469 1340.634399 1346.768188 1353.521362 1354.200806 1352.77832 1351.550293 1349.930054 1348.058472 1346.405029 1344.929077 1343.524414 1341.532593 -1650.29834 1649.431641 1657.771973 1664.21875 1669.530762 1674.070801 1678.429321 1682.00293 1685.021729 1687.954956 1689.579102 1686.507812 1682.590576 1680.223145 1677.281616 1671.281006 1668.665283 1671.550293 1671.601562 1668.968384 1662.450439 1655.002441 1648.267334 1640.553223 1634.750854 1628.908569 1623.389526 1628.541016 1636.957642 1643.848755 1653.122314 1662.074341 1670.133667 1685.432129 1695.887451 1698.437012 1700.389038 1702.35791 1704.365234 1705.426147 1702.871582 1698.101562 1685.786255 1681.463867 1680.726929 1687.456421 1695.762573 1698.789917 1701.202515 1706.232544 1713.981201 1720.328491 1724.138794 1724.89856 1723.611816 1721.362793 1718.425293 1714.241211 1708.85791 1700.31958 1692.745361 1685.350952 1687.221558 1687.726685 1692.748413 1698.160767 1704.329102 1708.744385 1710.018799 1703.042358 1686.493774 1665.778076 1651.363037 1636.602173 1625.889526 1618.386719 1609.948242 1607.410156 1600.777222 1595.799072 1589.009644 1583.195923 1578.578491 1571.727661 1565.160645 1559.557251 1554.451172 1559.363525 1581.641479 1593.86499 1613.670532 1633.181519 1647.515137 1663.503906 1673.834473 1676.05188 1663.877075 1657.655396 1646.978882 1625.153931 1629.536377 1629.872681 1616.996948 1621.370361 1630.534912 1642.72583 1657.947632 1658.071411 1644.257446 1621.352905 1606.965454 1584.821655 1575.260376 1563.460571 1549.125977 1538.749512 1529.112183 1519.511108 1509.137451 1498.647705 1490.399902 1479.27478 1471.583618 1463.780151 1462.12561 1455.810547 1451.106567 1446.367432 1441.979492 1437.425049 1432.345947 1426.927734 1431.237793 1444.291504 1453.435303 1461.859253 1473.920044 1481.123413 1490.712402 1495.631592 1504.956543 1513.41394 1514.630005 1512.914551 1529.3927 1546.234985 1557.651123 1563.532104 1557.648071 1541.946289 1531.877075 1525.976562 1523.691406 1528.156372 1533.337891 1535.619385 1536.764404 1539.339111 1543.603516 1549.938354 1560.057739 1570.130493 1580.980591 1589.398193 1597.343872 1611.827148 1627.132935 1642.979614 1641.598022 1637.307007 1638.348755 1638.376343 1638.327271 1637.842407 1636.603882 1636.71936 1637.829346 1637.352173 1636.307251 1632.022949 1628.81604 1626.424561 1623.259277 1617.50769 1611.347534 1604.707397 1597.983398 1588.987305 1587.476929 1587.512207 1586.322144 1583.474609 1589.028198 1601.557861 1601.799194 1596.994507 1587.906494 1582.203491 1575.305664 1566.376221 1559.743164 1560.765869 1561.392334 1563.628052 1569.769165 1573.189575 1574.363159 1570.447021 1563.050781 1558.887207 1554.3125 1547.218872 1559.759766 1567.056641 1573.097412 1576.275269 1576.292725 1572.166748 1566.560791 1562.661377 1554.555298 1555.593628 1567.378296 1575.102539 1580.098999 1583.873291 1585.598145 1584.500122 1582.654785 1576.702759 1576.335571 1585.014648 1581.777466 1573.441895 1563.946411 1550.29248 1533.508423 1524.226807 1513.143799 1514.28894 1516.748535 1517.981934 1519.668823 1510.276733 1489.955444 1493.494263 1501.974365 1515.900757 1530.148193 1538.020142 1545.204224 1551.837769 1550.869385 1542.391235 1533.685425 1519.684448 1503.932251 1487.099365 1465.906006 1466.688843 1471.924316 1473.75769 1474.021973 1472.386719 1474.7229 1477.025635 1477.778687 1481.833862 1485.244385 1487.652222 1489.061035 1489.374512 1487.724609 1491.326172 1497.644897 1502.912231 1505.203125 1505.098755 1504.103394 1500.855225 1497.974487 1497.132324 1490.484497 1484.161743 1484.291138 1491.897095 1502.627441 1516.333618 1525.706909 1537.615234 1544.935913 1544.932251 1542.678833 1540.159546 1534.857178 1527.671387 1503.693481 1492.681152 1487.355957 1476.369141 1465.519653 1459.565918 1456.368408 1452.91748 1448.729614 1448.128174 1450.264282 1460.384644 1464.102173 1458.24585 1452.646973 1465.949707 1482.540771 1497.630005 1510.683228 1499.365112 1486.29126 1477.499023 1465.454224 1451.063843 1450.679688 1454.311157 1450.391235 1459.72583 1467.299072 1475.153687 1479.051025 1465.659912 1450.260132 1466.350464 1484.03418 1494.452271 1503.333496 1510.973999 1520.236816 1540.036377 1554.313599 1567.832642 1574.786743 1576.957397 1571.258423 1572.38855 1571.4375 1572.448975 1580.62207 1588.932251 1598.378296 1599.546997 1601.537109 1606.938477 1610.595947 1612.983887 1613.524292 1612.950195 1607.188843 1596.927856 1589.092529 1582.183716 1574.027466 1562.863892 1553.323242 1551.014282 1541.267212 1550.116211 1554.570312 1555.91333 1559.744385 1559.535645 1556.992554 1551.808472 1547.198364 1547.429688 1542.732788 1540.322754 1556.37085 1565.017822 1565.108643 1559.791992 1546.866943 1537.87085 1522.859497 1516.812256 1509.348999 1497.87439 1494.688721 1499.283691 1499.962158 1496.935425 1491.65271 1486.530762 1478.638916 1469.835205 1462.378174 1457.480835 1452.538818 1452.303223 1452.85022 1450.73999 1447.446289 1443.746338 1440.157593 1436.526611 1431.548218 1426.973877 1422.244995 1417.450317 1413.032837 1410.44397 1406.991943 1402.326416 1401.706299 1402.195435 1403.189087 1404.983643 1411.154053 1418.514404 1424.925537 1432.644531 1440.734253 1445.349731 1446.832764 1450.161499 1461.450195 1476.344604 1488.99646 1502.131104 1506.37085 1506.288696 1501.751099 1496.639038 1494.881348 1502.908569 1517.855591 1534.146606 1547.782837 1550.335571 1534.452881 1519.460938 1502.557129 1485.703247 1456.697144 1426.450317 1405.203491 1393.890259 1381.744873 1365.947754 1347.67688 1330.913208 1315.155884 1314.538818 1324.730591 1331.833496 1334.728638 1340.504639 1341.313354 1353.955811 1365.393066 1374.393921 1379.817993 1393.634644 1417.841431 1431.743774 1422.309692 1410.111084 1402.334717 1398.741333 1395.674194 1390.884155 1383.083008 1381.351685 1395.327271 1410.528076 1409.429565 1418.867676 1437.957642 1449.607788 1453.092407 1457.217529 1469.079346 1463.873901 1464.126099 1492.221191 1498.198486 1496.895996 1503.08374 1508.354126 1514.016968 1531.282104 1541.076904 1539.725342 1533.19104 1525.350708 1520.785522 1515.793091 1510.456665 1503.572998 1493.698608 1478.264038 1484.488037 1490.130005 1490.373169 1484.280273 1478.36499 1464.095581 1449.35144 1461.608276 1476.6427 1491.189575 1486.54895 1478.380981 1465.980225 1455.13501 1443.131958 1434.926147 1434.945068 1451.924316 1467.193848 1463.634155 1449.025391 1436.942383 1427.485107 1419.140259 1412.706421 1404.368286 1397.151733 1389.759644 1379.04834 1378.782837 1379.126709 1378.244873 1394.964233 1404.681519 1409.838257 1410.114868 1409.373901 1421.204834 1439.535034 1445.967896 1450.686523 1452.779419 1451.647827 1448.018311 1444.137451 1439.202271 1432.348511 1427.457153 1424.254028 1421.499268 1419.256592 1418.039673 1417.182617 1414.939087 1410.481323 1406.677002 1402.817383 1396.693481 1391.738525 1385.928711 1380.218384 1373.006104 1366.045288 1356.971558 1360.525635 1366.430054 1371.297119 1376.974121 1380.067261 1375.147583 1367.76123 1363.258179 1359.113403 1356.121338 1352.692139 1347.234253 1342.302734 1336.447388 1328.563232 1322.625244 1315.255127 1305.596802 1309.534668 1318.962646 1326.268921 1333.145874 1334.859375 1332.145874 1327.497437 1320.056885 1330.697266 1341.306885 1345.012329 1347.28125 1348.683716 1350.398804 1352.390991 1353.623779 1354.125 1352.938843 1349.477051 1346.604004 1349.750977 1353.40625 1355.082397 1353.876587 1351.942017 1349.754761 1347.379517 1344.747681 1342.783569 1341.612183 1337.744019 -1654.749878 1653.970337 1656.566528 1661.204102 1666.288208 1671.015015 1675.445312 1679.482056 1683.190186 1688.189087 1694.690552 1695.631836 1692.533081 1687.301025 1683.770508 1681.754639 1679.3125 1677.321533 1676.024536 1673.598022 1668.686523 1660.384644 1653.719238 1646.819824 1640.867188 1635.8302 1629.353638 1625.01355 1634.555054 1640.216187 1645.955078 1654.775635 1666.742676 1683.219116 1696.387573 1699.34375 1701.96521 1705.710083 1708.229614 1709.371948 1708.081543 1702.615112 1695.135864 1691.71875 1688.483154 1685.630127 1691.668823 1693.234863 1694.615112 1704.408081 1712.927124 1720.946411 1722.832153 1722.941528 1721.513428 1719.518921 1716.795532 1713.108887 1708.013794 1705.083984 1701.081055 1699.3927 1698.067871 1697.309937 1696.922729 1701.395508 1706.281738 1709.228149 1706.451416 1694.263306 1675.558228 1659.043701 1639.063354 1632.765015 1632.654663 1628.140015 1623.233276 1615.103516 1607.242065 1604.803711 1599.301514 1592.390259 1582.119751 1572.503906 1563.581665 1557.585815 1552.140503 1570.571045 1590.072632 1601.421875 1613.950806 1632.657715 1645.956299 1662.490601 1675.349487 1686.218506 1680.562378 1668.737793 1652.922485 1640.653076 1648.141235 1644.460571 1629.532593 1635.065674 1645.045044 1660.369629 1663.742188 1652.425659 1633.607422 1619.415283 1604.492554 1585.191284 1572.983154 1560.902466 1545.149292 1534.818237 1524.411377 1513.550049 1501.046143 1492.948364 1485.338867 1478.011719 1474.670166 1473.342773 1467.812744 1460.937622 1454.159424 1448.617065 1443.530273 1439.26123 1433.934448 1428.947388 1432.131714 1438.807373 1447.74353 1459.452881 1473.869385 1479.690063 1483.53064 1491.892944 1500.561401 1506.464966 1503.299072 1508.161255 1524.633179 1543.925049 1555.876221 1565.105103 1569.009644 1550.3927 1541.005859 1535.978394 1533.171875 1532.420166 1534.93103 1537.743286 1542.153442 1545.924438 1546.023315 1546.819458 1555.525513 1566.655762 1577.54187 1586.457764 1592.868286 1601.11145 1616.500732 1643.597656 1641.064819 1631.219604 1634.511597 1634.71814 1633.550903 1631.967407 1628.979858 1627.421997 1626.889648 1624.815552 1619.7146 1618.898071 1616.705688 1610.169434 1604.74646 1600.888428 1598.0177 1594.875244 1589.289551 1578.122314 1576.598267 1577.821533 1574.785522 1573.865967 1590.701538 1599.74646 1599.343262 1590.841675 1582.392212 1575.880127 1571.320557 1565.306763 1564.970947 1565.636963 1566.661621 1568.14978 1573.30835 1576.916138 1577.915405 1575.805054 1572.832764 1564.895142 1559.204224 1551.419922 1556.326904 1565.350342 1572.083984 1576.542603 1576.918335 1574.689331 1573.325073 1569.702759 1561.000244 1558.387573 1564.313843 1574.148804 1580.121216 1585.179077 1587.13916 1587.796265 1588.367554 1585.830078 1585.096313 1587.348511 1583.487061 1571.757324 1556.768433 1544.262207 1532.78479 1523.765991 1523.565674 1529.965942 1533.481323 1534.491333 1530.993164 1513.079224 1497.494995 1502.031006 1508.837891 1526.1604 1534.562744 1542.040649 1549.139771 1551.821655 1548.101685 1537.325562 1523.358521 1510.2771 1494.260132 1473.036011 1469.490845 1476.069214 1478.108643 1479.0271 1478.858276 1478.665894 1481.048096 1483.357666 1484.990723 1486.378906 1487.43457 1491.604736 1494.536133 1495.863037 1496.516357 1499.337036 1507.750366 1511.447632 1506.112671 1500.166748 1494.109009 1489.199341 1484.401245 1481.489624 1479.808228 1476.554932 1475.41333 1482.658813 1491.283203 1502.208618 1512.286255 1523.641235 1537.661011 1550.699219 1546.730713 1541.124023 1535.859131 1527.852783 1504.958496 1487.658203 1475.852051 1468.171387 1462.269897 1456.465088 1452.234619 1449.390015 1449.29541 1459.307739 1467.815186 1475.525879 1473.872681 1461.587891 1454.832275 1461.381592 1475.333252 1492.220703 1511.837769 1519.321167 1503.30127 1486.186523 1471.64502 1458.394287 1463.150879 1468.803955 1470.155396 1472.150879 1480.605591 1490.616455 1492.908203 1481.677612 1466.178711 1461.063232 1472.080933 1483.55957 1493.256226 1501.930542 1513.04541 1526.50647 1544.523071 1564.981323 1578.814819 1588.184204 1585.734985 1584.630249 1580.642212 1574.642578 1582.815796 1589.668335 1597.423584 1595.848022 1596.639648 1601.206665 1605.276123 1609.050415 1612.040405 1612.588013 1611.73291 1603.273193 1594.017212 1584.901611 1575.100952 1566.329346 1563.258057 1560.938721 1553.383423 1559.541626 1564.532471 1568.71814 1571.337158 1569.782104 1565.79895 1560.781982 1556.002075 1554.786255 1551.716309 1550.805786 1564.047729 1568.651367 1567.663452 1562.849609 1552.25769 1541.040405 1525.931885 1515.206909 1502.448975 1493.076904 1485.149536 1487.025391 1490.66687 1490.880249 1488.213867 1483.439453 1476.649048 1465.911377 1459.245117 1454.338989 1449.782837 1447.588989 1447.697266 1445.926758 1443.026367 1439.623169 1434.396729 1428.803711 1425.141235 1420.863403 1416.934448 1413.613403 1410.111816 1407.277344 1404.033936 1402.835571 1403.183838 1405.10498 1407.439819 1410.818115 1416.13855 1422.604248 1429.987305 1440.560181 1455.170898 1460.786865 1463.635986 1461.589111 1466.529541 1480.470825 1496.584961 1509.180786 1516.4021 1519.476807 1518.335571 1515.635864 1507.283691 1512.71582 1523.92749 1536.372437 1546.668213 1539.304932 1522.11499 1506.274292 1489.955322 1464.966309 1433.009521 1407.322388 1395.377075 1386.264526 1374.801758 1357.503784 1340.868286 1319.228394 1314.796265 1322.879639 1333.848877 1340.302246 1345.369629 1351.701782 1355.981079 1363.354492 1377.439697 1387.164307 1398.758789 1409.358032 1430.511719 1449.358643 1438.917603 1425.018311 1415.004517 1409.264404 1404.792236 1398.494019 1391.673828 1378.309814 1382.032837 1388.972656 1397.548828 1420.81189 1434.05835 1441.263428 1442.246094 1449.226929 1451.014648 1447.381348 1467.877563 1486.201294 1484.825928 1483.903076 1491.11438 1494.100586 1506.515137 1526.488525 1541.607422 1544.307861 1536.832153 1531.591919 1525.313843 1519.936157 1512.814941 1502.807983 1492.213867 1487.547119 1495.430908 1501.141357 1498.533203 1492.201538 1481.248535 1461.637451 1451.440308 1466.263672 1480.743042 1490.878296 1488.760864 1479.5448 1467.791382 1457.969971 1449.076416 1439.723145 1451.517944 1462.522095 1474.514282 1462.366455 1446.844727 1436.125244 1425.744263 1418.259155 1413.922729 1405.338379 1398.592773 1393.154297 1388.836304 1388.618286 1386.345459 1382.178833 1402.414795 1417.409668 1423.966675 1426.77771 1426.498657 1424.9198 1436.861572 1448.998291 1455.605957 1460.008911 1459.407715 1451.789429 1445.776611 1438.716919 1432.126953 1427.045654 1424.26355 1421.235229 1418.810669 1417.585938 1416.861084 1414.252686 1410.298218 1406.280396 1402.981079 1397.286133 1391.750122 1386.89978 1381.361938 1375.410034 1368.047241 1358.774536 1365.225708 1370.152222 1374.032837 1376.091675 1377.619507 1372.82373 1366.453369 1361.720825 1357.152954 1353.956299 1349.779175 1344.824585 1340.156128 1335.015259 1330.020508 1322.150269 1314.937866 1307.381226 1314.322754 1323.376343 1331.093872 1338.162354 1340.737793 1343.437744 1338.869507 1329.876709 1330.230591 1341.21228 1347.298462 1351.389038 1353.087402 1355.733032 1358.896729 1361.491699 1362.997314 1362.062134 1355.595581 1352.330444 1355.418335 1356.250244 1356.359253 1354.65918 1351.915649 1349.717163 1347.040649 1342.349487 1341.905273 1340.956543 1338.280029 -1657.052856 1655.779297 1656.963379 1658.513062 1663.69043 1668.644653 1673.026611 1677.161133 1681.069946 1685.769775 1692.928589 1697.606323 1697.896973 1697.066162 1694.511108 1690.086548 1686.862061 1683.633545 1680.575928 1677.652954 1673.334839 1666.439575 1659.945801 1653.128174 1645.449707 1640.53833 1635.582886 1626.618774 1631.019775 1636.723877 1641.123779 1647.538574 1666.488159 1681.330688 1692.375854 1697.382812 1700.053589 1703.62439 1708.369507 1709.544434 1710.137695 1707.717651 1703.484863 1700.2854 1697.841431 1695.231689 1694.424316 1693.440186 1697.078613 1703.634277 1711.79895 1719.736084 1722.252197 1721.938965 1720.778442 1719.071899 1717.067871 1714.480347 1711.799072 1710.079468 1709.149414 1707.266602 1705.249634 1705.4552 1705.372925 1703.536377 1706.876221 1705.364746 1694.625732 1681.072632 1664.087158 1647.605591 1639.130127 1640.927979 1641.983276 1640.991089 1636.782593 1634.336426 1627.471191 1618.949097 1609.850098 1602.527588 1588.120972 1574.553955 1565.42041 1558.093628 1560.151978 1580.48291 1590.312866 1602.583374 1614.022827 1629.23877 1641.195557 1659.005371 1674.822266 1685.463013 1686.728394 1674.682007 1661.504395 1659.154907 1661.867798 1655.182739 1645.306885 1653.5625 1666.554321 1664.535034 1657.884399 1641.377686 1625.730469 1611.986328 1598.424805 1585.004517 1571.654419 1557.459106 1545.162964 1533.181152 1521.591675 1511.927856 1498.637939 1487.311523 1488.709961 1488.736084 1487.489624 1482.764526 1473.80127 1463.625488 1456.062134 1449.960449 1444.182495 1439.275391 1436.268799 1433.716675 1431.857422 1434.777832 1437.02002 1442.59314 1462.05188 1467.758301 1471.887207 1484.796265 1493.264648 1493.089111 1489.19043 1501.469482 1514.738525 1534.362305 1548.02063 1561.445679 1574.355713 1560.69165 1549.773193 1543.451782 1539.344238 1536.605103 1534.348633 1540.281494 1548.794922 1555.859985 1556.843384 1554.354614 1555.291626 1560.070801 1573.467651 1582.734253 1589.053101 1594.249756 1605.16626 1626.596313 1629.822998 1621.565308 1623.179443 1626.428467 1625.794312 1623.249023 1618.581177 1613.477417 1611.647095 1610.133057 1608.291138 1604.920288 1600.734497 1596.440796 1593.222046 1591.104614 1589.671021 1587.974976 1581.867676 1571.066528 1569.812134 1568.668457 1566.688354 1575.106689 1586.876343 1594.491211 1595.459473 1584.34082 1581.667114 1576.441406 1571.756836 1572.276855 1573.88501 1574.19043 1571.91687 1570.777832 1575.242554 1582.226074 1583.47937 1580.472778 1577.069824 1571.278076 1564.407593 1556.833984 1553.0 1562.594971 1569.822876 1575.810181 1578.937866 1579.603638 1578.797363 1576.012939 1567.79248 1558.934814 1561.064453 1571.497681 1578.282837 1584.636475 1587.866821 1588.832764 1589.234253 1589.103149 1588.585327 1588.371338 1588.151123 1570.631348 1554.248779 1541.537354 1532.99353 1533.317749 1537.597534 1540.85083 1546.724976 1541.503296 1530.129761 1509.373901 1502.175293 1512.123535 1524.547241 1530.480103 1535.440918 1543.259888 1549.755005 1552.200806 1547.31958 1535.365112 1518.673218 1502.489014 1486.053467 1469.812256 1475.291016 1478.532593 1480.7948 1482.005615 1482.969604 1484.382812 1487.008057 1489.55896 1491.023926 1490.933105 1491.699463 1497.857056 1501.235352 1505.017212 1508.109497 1516.186157 1518.200928 1510.682373 1497.855835 1482.036621 1480.43042 1479.27356 1478.682739 1478.618652 1477.410767 1475.219482 1473.5271 1472.162842 1473.040527 1483.762329 1497.15332 1506.603149 1517.482422 1523.182983 1527.121216 1530.893555 1528.212646 1519.899536 1506.53064 1485.849976 1470.952881 1461.374023 1457.593262 1452.772461 1451.670532 1456.869873 1464.60376 1471.312256 1482.283325 1488.751953 1477.914062 1464.120972 1456.616089 1462.696899 1476.518066 1491.937866 1508.637817 1527.907471 1515.80188 1493.388184 1475.817749 1464.787476 1469.057617 1481.269165 1487.145142 1487.427246 1491.81958 1505.895142 1504.038818 1492.121948 1477.625 1462.047241 1470.634155 1482.122925 1494.845459 1511.491943 1517.439453 1522.932129 1535.306519 1556.979004 1576.73999 1596.32605 1599.722534 1594.549438 1587.38623 1582.773926 1586.079102 1588.838135 1590.393799 1589.770386 1592.1427 1595.411499 1598.258179 1601.180542 1604.866211 1608.686523 1610.854614 1604.614136 1594.135376 1585.864868 1579.379395 1576.132324 1575.31311 1569.303589 1564.944214 1570.265747 1575.99939 1578.870361 1578.951904 1577.039551 1572.56604 1567.039551 1562.814697 1560.745483 1558.932617 1559.578003 1570.457153 1573.237915 1570.342407 1564.462524 1554.394775 1541.596558 1524.812866 1515.608765 1502.855469 1491.21875 1481.952393 1478.644043 1477.781372 1482.271362 1480.843384 1477.586548 1470.730469 1461.3396 1455.589844 1451.419922 1447.075195 1441.75 1440.344849 1439.470581 1437.86853 1433.163452 1427.313965 1422.456787 1417.791504 1414.082642 1412.431152 1410.018311 1407.061279 1406.192139 1406.25415 1406.281006 1406.65625 1408.741821 1411.047852 1413.533936 1419.393188 1425.484619 1433.581787 1447.18396 1459.677246 1467.038208 1473.877808 1472.013672 1472.419678 1482.882202 1500.703735 1512.174683 1523.487549 1529.17688 1529.904175 1529.128174 1525.410522 1521.81604 1530.267212 1538.827393 1542.901489 1535.603638 1520.107544 1502.958252 1485.627075 1456.591187 1425.22522 1400.659912 1387.282715 1375.999878 1359.760864 1346.927979 1327.317871 1314.07959 1318.90271 1327.529053 1339.546265 1348.898438 1356.084106 1361.653564 1371.848022 1379.559082 1386.934448 1401.823975 1412.212891 1429.03833 1450.384033 1466.80542 1453.751343 1436.742188 1427.865234 1419.333984 1412.851562 1406.211304 1400.021362 1395.300293 1388.394775 1387.699341 1391.355347 1409.705078 1423.918579 1427.74231 1427.432861 1429.895508 1436.432129 1452.455811 1469.079834 1475.456177 1473.790771 1470.59668 1475.478638 1484.795044 1499.708374 1523.989502 1543.492188 1549.501465 1543.068481 1538.453857 1531.606812 1524.098877 1515.065796 1502.272339 1498.415405 1496.801392 1505.227905 1507.549072 1503.21228 1491.088867 1475.729004 1465.931885 1460.965698 1463.989746 1480.989502 1490.141724 1489.406616 1479.519897 1468.939331 1460.258545 1453.338501 1452.372314 1458.843384 1476.85144 1477.030029 1461.492676 1452.710815 1448.399048 1441.686646 1433.696899 1423.398804 1413.276367 1404.136963 1398.849976 1395.193726 1399.411255 1393.751343 1388.246216 1400.680176 1418.34375 1428.892334 1432.374878 1436.475464 1436.568481 1438.733276 1450.428223 1458.844727 1469.55127 1469.576782 1457.372681 1446.437622 1437.171387 1430.57666 1425.361572 1422.942139 1419.747314 1416.487061 1414.490601 1412.683716 1410.188477 1407.694946 1404.600952 1400.290405 1394.749146 1389.874023 1386.18457 1382.025391 1377.155273 1366.936401 1363.050049 1369.515015 1374.817993 1377.729248 1376.201172 1372.846436 1366.807983 1363.327759 1357.058594 1352.934326 1350.034302 1345.434082 1340.896606 1336.722534 1332.96875 1328.543335 1321.39856 1312.968506 1315.697998 1324.674683 1332.597168 1339.328979 1342.550415 1346.713745 1346.997559 1345.136108 1338.105835 1329.184326 1340.954834 1350.902344 1355.406494 1357.524292 1360.766479 1365.012939 1368.200439 1369.946777 1368.406982 1362.811768 1360.72998 1361.520996 1360.195068 1357.425171 1354.420776 1352.38269 1350.577881 1348.862671 1347.454102 1345.879517 1344.16333 1341.835449 -1658.9375 1657.18103 1659.141235 1659.34082 1662.84082 1667.530151 1671.120972 1675.233398 1678.924561 1682.776245 1690.05127 1696.665771 1698.489868 1698.953125 1697.861572 1696.4729 1693.112671 1689.670898 1685.759155 1682.148438 1677.588745 1671.248779 1665.430176 1660.269287 1650.979614 1644.164673 1639.031128 1632.254028 1627.63147 1632.60144 1637.139404 1643.967163 1660.196533 1674.88501 1684.786743 1690.153564 1693.723389 1695.124512 1694.254883 1694.628296 1702.148682 1708.40271 1708.956909 1705.750977 1702.012939 1701.749878 1704.223633 1703.940674 1704.704102 1704.803711 1710.721313 1720.64624 1721.715942 1721.388428 1720.814453 1719.957275 1717.731812 1715.526611 1713.081299 1711.490601 1710.601685 1710.044189 1709.662476 1709.6698 1709.39502 1704.220947 1699.171021 1692.44165 1680.607544 1665.993286 1646.106079 1645.943481 1648.120728 1650.156006 1651.383179 1651.489746 1648.713501 1642.414673 1635.244141 1625.607544 1613.650879 1603.145874 1587.794556 1573.444092 1564.590454 1555.317383 1574.749268 1592.635254 1605.0448 1610.091309 1618.505615 1625.62085 1639.326416 1660.756226 1673.456299 1683.533569 1685.88208 1680.331299 1674.12207 1674.245972 1673.737671 1665.045776 1656.836304 1674.858398 1671.370728 1658.10022 1644.926392 1625.018555 1612.924805 1603.553345 1593.234009 1581.855835 1570.889526 1556.592041 1544.226929 1530.350098 1516.387329 1502.516235 1498.140015 1505.401367 1507.199829 1503.82959 1497.890991 1490.404907 1476.520508 1465.792236 1457.475586 1450.472168 1444.35144 1441.000854 1440.732544 1440.541626 1438.925171 1436.758667 1437.664185 1437.748413 1437.767212 1450.637207 1460.773315 1474.772461 1482.627319 1477.989868 1484.366699 1501.075439 1511.028809 1521.507568 1533.818115 1550.59436 1570.840454 1573.632935 1559.556396 1547.959961 1542.824585 1538.642822 1535.177246 1542.479858 1558.019165 1564.324829 1567.239014 1567.481323 1567.828247 1565.102417 1569.989624 1577.250977 1586.545532 1591.536377 1597.672729 1607.943726 1615.296509 1613.222412 1610.38208 1612.060425 1612.293091 1610.647949 1605.994385 1601.883423 1600.658447 1598.867798 1595.700928 1593.290039 1591.12793 1588.318115 1584.664795 1582.432861 1581.556519 1578.025757 1571.762939 1564.455811 1565.199097 1562.611816 1560.070923 1575.838257 1582.933716 1588.392944 1589.56897 1587.200073 1584.851196 1581.617798 1578.404175 1579.436401 1579.73291 1578.11145 1575.072632 1571.829712 1576.674316 1586.317993 1587.008057 1583.651855 1579.795044 1575.176758 1569.364868 1561.985718 1555.760986 1557.977661 1566.190308 1574.161255 1580.338867 1584.9729 1583.685913 1580.138428 1574.770386 1563.078369 1559.502563 1567.026611 1573.696045 1583.472778 1587.659424 1589.151611 1589.539551 1589.512573 1589.753296 1589.031494 1582.744873 1564.297729 1547.752319 1536.007324 1540.231567 1549.392334 1554.552612 1556.950195 1552.529419 1539.872803 1524.880615 1509.222412 1513.185669 1523.577881 1532.701416 1536.257812 1540.829712 1547.032959 1549.792236 1551.980225 1544.295532 1531.748047 1516.123779 1500.736816 1484.974731 1472.169067 1477.403687 1480.490112 1483.594849 1485.435913 1486.027832 1487.968384 1491.824707 1495.627441 1497.293823 1497.523804 1497.630737 1503.351929 1510.224243 1519.864868 1530.443848 1529.130371 1514.943848 1503.80249 1490.021851 1481.872803 1481.972168 1482.384277 1483.22522 1484.151123 1483.870728 1482.533813 1478.67981 1475.060181 1470.717407 1470.85376 1475.972534 1488.828247 1496.869873 1502.197876 1504.954834 1506.036255 1505.859985 1503.992432 1497.922119 1483.854858 1466.635254 1459.169922 1454.706665 1454.5271 1468.953247 1483.761475 1490.240234 1491.934692 1498.980835 1494.187988 1476.759766 1463.927124 1462.562134 1467.54541 1475.701294 1487.568604 1501.721558 1519.67041 1517.957275 1500.455688 1480.245361 1474.078857 1473.65625 1491.582764 1500.725342 1502.779785 1509.3573 1517.571411 1514.701904 1499.559814 1481.008667 1469.092773 1473.908081 1491.437988 1511.518555 1529.408203 1542.025757 1548.215454 1551.435669 1556.347168 1572.359619 1596.859253 1601.192383 1598.656616 1589.369751 1583.862671 1585.54126 1586.625732 1584.565674 1583.682373 1587.020996 1589.28772 1590.838257 1592.844116 1595.715454 1599.427368 1602.583374 1601.24231 1596.533813 1592.084351 1588.590332 1587.322998 1583.208984 1577.622192 1575.537842 1579.69873 1585.043945 1589.073486 1586.125732 1582.460449 1578.464722 1573.599609 1570.608154 1568.028442 1567.138062 1570.382568 1576.393188 1575.854004 1572.182495 1565.318726 1555.0625 1539.618774 1522.137451 1514.382568 1500.347168 1490.979126 1475.836426 1471.756348 1468.912354 1472.688599 1472.235352 1469.269775 1462.50293 1455.762695 1450.683472 1447.611572 1443.582886 1439.275146 1433.887451 1431.608521 1428.876465 1425.532959 1421.707764 1417.084961 1413.691406 1411.920166 1410.165771 1408.796143 1409.787842 1410.729858 1410.742432 1410.23645 1410.375 1412.242188 1414.894165 1417.668091 1424.922241 1430.024414 1435.851318 1447.849731 1459.932129 1470.778442 1478.677002 1482.489624 1481.603149 1487.713501 1504.853516 1515.086304 1525.062622 1536.741089 1538.661621 1538.336914 1535.467896 1531.473022 1537.328491 1544.45874 1543.214966 1527.308228 1506.332275 1487.62854 1469.873779 1450.325684 1424.674805 1400.647583 1388.500977 1373.481201 1352.134277 1333.033203 1318.166138 1315.9646 1325.19165 1335.473877 1347.84436 1357.801514 1365.907104 1374.310303 1385.025391 1392.175537 1398.004272 1411.223267 1427.122681 1449.885132 1466.887207 1480.167358 1466.678955 1446.905151 1436.989624 1429.877075 1421.803101 1415.89624 1408.980103 1412.211426 1403.771362 1396.661987 1390.458252 1393.925415 1404.168335 1412.329956 1419.347168 1429.786987 1442.809082 1453.24353 1459.244263 1458.028564 1455.352539 1458.308472 1473.29187 1482.501831 1494.709839 1522.769409 1539.299805 1551.249512 1547.219604 1542.328369 1537.269653 1526.762207 1518.994141 1512.761475 1511.201416 1509.701416 1513.71936 1510.779175 1499.620117 1485.947754 1481.499634 1480.209717 1470.360107 1462.540771 1478.814331 1490.74353 1488.557007 1479.597412 1470.974365 1463.421875 1468.702271 1471.547363 1478.532471 1484.36731 1477.008667 1467.595337 1462.481934 1457.125732 1449.521118 1439.402588 1426.813477 1417.367676 1407.869507 1400.858154 1405.484375 1407.354736 1400.482056 1394.505615 1401.106567 1412.832642 1426.221802 1435.002441 1441.311646 1444.001709 1447.418823 1453.031372 1461.477539 1475.566162 1472.71228 1459.121216 1446.97583 1436.673462 1430.307129 1425.206543 1421.084473 1418.071899 1414.856079 1409.017212 1402.698486 1404.464355 1402.973999 1399.557617 1394.161621 1389.366821 1385.720703 1382.955444 1379.963623 1373.014648 1363.109985 1366.632812 1374.03772 1379.23291 1380.019165 1377.716064 1371.213257 1365.176514 1362.407349 1354.967651 1351.687012 1346.141968 1340.703979 1338.033936 1331.453125 1328.890869 1324.374878 1317.481812 1312.608032 1324.074951 1334.105713 1341.156616 1349.921631 1354.157349 1352.209961 1350.833984 1349.392822 1345.382202 1339.413086 1341.875977 1353.628662 1357.819092 1361.100952 1364.264893 1368.563599 1372.814453 1375.616577 1373.891479 1367.86438 1367.541504 1366.804321 1363.57373 1358.69397 1354.687988 1352.783447 1352.14624 1352.199463 1353.340088 1350.536621 1347.520264 1344.510986 -1663.350464 1658.589233 1661.333862 1663.20813 1665.137085 1667.58606 1670.158203 1673.40625 1677.116577 1680.737671 1686.588989 1694.963989 1698.745605 1700.101318 1701.19104 1701.466309 1699.995605 1696.060791 1691.767944 1687.651733 1682.921997 1676.299194 1669.102783 1663.932129 1656.536133 1648.475098 1642.556396 1636.514771 1630.793335 1629.109253 1632.753174 1638.836182 1650.050659 1662.55127 1673.550781 1679.092651 1682.585449 1682.949463 1683.306763 1684.718018 1691.694458 1698.499634 1709.707275 1708.674194 1704.996216 1704.88501 1708.846436 1711.058838 1711.802856 1712.883423 1715.337036 1720.495483 1721.22229 1721.137939 1720.419434 1720.037598 1718.310913 1715.505981 1712.956299 1711.226807 1710.53772 1710.246216 1710.261475 1709.541992 1706.695679 1699.671265 1691.991333 1679.342896 1658.494507 1657.312256 1657.447754 1655.971802 1655.820068 1657.4823 1661.073975 1662.331543 1659.046509 1648.104492 1637.067261 1626.554443 1615.559204 1604.213013 1589.41394 1573.953491 1561.583862 1556.763794 1577.041992 1600.137695 1615.509399 1623.413574 1627.47522 1632.602295 1642.404907 1659.29895 1668.324219 1679.775879 1686.571655 1683.007812 1681.821899 1681.681152 1678.538696 1670.842163 1671.56604 1674.618286 1662.390991 1647.232422 1636.001953 1618.444824 1602.93335 1595.230713 1586.02478 1572.847534 1563.450439 1550.893433 1539.661987 1521.942505 1510.14502 1509.108643 1514.567383 1519.15271 1518.881836 1513.991943 1504.847778 1494.707764 1477.581787 1466.423706 1457.087891 1449.509644 1445.448486 1446.245728 1445.911865 1445.478149 1444.169922 1440.815674 1441.132812 1440.46814 1438.555176 1438.662476 1452.934692 1462.328613 1467.667358 1474.679565 1482.995483 1496.35498 1504.229858 1510.506104 1536.524414 1551.938354 1566.306152 1583.358521 1566.374878 1551.486938 1545.086548 1540.471313 1535.777222 1544.861206 1558.70459 1567.122559 1572.589966 1577.92749 1578.088623 1576.470337 1574.447876 1571.599609 1582.992554 1589.200806 1593.991577 1597.570679 1602.873413 1604.053101 1603.013184 1602.772461 1602.208862 1600.435791 1595.710815 1589.837524 1588.245605 1587.506714 1586.478271 1584.815918 1581.25415 1576.905029 1573.864258 1571.720825 1571.994751 1568.960327 1564.327759 1559.173828 1562.450684 1559.287231 1560.431152 1570.448242 1575.919678 1581.531006 1586.245972 1586.312744 1583.583984 1585.439331 1588.057007 1588.778076 1586.506958 1583.609375 1579.559814 1575.240234 1579.105835 1587.319214 1588.873291 1586.683105 1583.08252 1579.149414 1574.618652 1567.456909 1562.760864 1559.449463 1561.253052 1571.614136 1579.289062 1586.683594 1587.132568 1584.592285 1579.532227 1572.424683 1560.815186 1565.595459 1573.863281 1582.502563 1587.518921 1589.137207 1589.881592 1589.8302 1589.337402 1588.5979 1579.633423 1560.456909 1541.582397 1539.742188 1557.627808 1567.931274 1570.259644 1565.49939 1553.072998 1537.06543 1522.11377 1513.837524 1523.853516 1532.972046 1542.123413 1550.373413 1552.055542 1551.478027 1548.206177 1542.968872 1535.554932 1523.429443 1512.766846 1498.907471 1483.468506 1474.929565 1479.476929 1483.050171 1486.362183 1488.997192 1489.988159 1492.804321 1498.224854 1501.922729 1503.285767 1502.957275 1500.125244 1509.024414 1517.758301 1527.341431 1527.589844 1516.098633 1503.780029 1496.112671 1488.132202 1483.35144 1485.275757 1486.92981 1488.898804 1492.183105 1493.619263 1493.392456 1490.241211 1485.550781 1479.071777 1472.712891 1467.190796 1470.825806 1475.401978 1480.303223 1483.940796 1487.884399 1490.341187 1490.002319 1486.439697 1477.619751 1462.609985 1456.621704 1454.214111 1460.336792 1478.133545 1493.227905 1508.099487 1513.717041 1510.162354 1490.479614 1472.608643 1462.388916 1466.218994 1476.357666 1484.549316 1490.578857 1498.214722 1506.80127 1514.26709 1507.70813 1493.163086 1487.705688 1479.345825 1492.174316 1502.031006 1508.067749 1521.353271 1527.558472 1522.973145 1512.780151 1492.769531 1477.998169 1474.371948 1493.742798 1512.022461 1529.382324 1544.797852 1555.696899 1563.546631 1569.642944 1579.470825 1591.882568 1599.753418 1599.05896 1590.274292 1583.443848 1579.799805 1578.831177 1575.611938 1577.327759 1580.813599 1582.803589 1583.715088 1584.438721 1586.737915 1590.00354 1593.738647 1597.833008 1599.678467 1597.966431 1596.014526 1594.900513 1591.123901 1586.196045 1585.115356 1588.31311 1595.789551 1601.701172 1598.664185 1591.172241 1585.100098 1582.091064 1579.022217 1576.480103 1576.36438 1578.25354 1578.840454 1575.952148 1571.185669 1565.253052 1556.077759 1540.809937 1526.190796 1513.90271 1502.28894 1490.191162 1475.4729 1468.40686 1462.31543 1463.821899 1464.460571 1460.822388 1456.497192 1449.953247 1446.195801 1443.23291 1440.502197 1434.926147 1428.065063 1425.533325 1424.335205 1421.255127 1416.564697 1413.747192 1412.565674 1411.526855 1412.273438 1413.767334 1415.392212 1416.848267 1415.276978 1413.658813 1412.598145 1413.849487 1417.952148 1421.561157 1426.45166 1433.067749 1440.584839 1451.088501 1460.311646 1471.012573 1482.370239 1491.283203 1496.547363 1499.897461 1509.453857 1519.432129 1530.462524 1538.362305 1539.981201 1541.028931 1541.069214 1538.770996 1542.097412 1549.284668 1547.529053 1528.220337 1503.615234 1489.94519 1463.344727 1436.734497 1417.969116 1400.784302 1389.286499 1373.472534 1351.08606 1328.540649 1315.288452 1320.376831 1332.489868 1343.311768 1356.935303 1365.147583 1376.249023 1386.398193 1393.995483 1399.625122 1409.348999 1425.39624 1451.847412 1474.790405 1489.694458 1485.720825 1477.918091 1460.768188 1447.536133 1439.232178 1429.114624 1422.453857 1419.010498 1421.817749 1415.863159 1407.661987 1399.565552 1390.702637 1401.289062 1412.652222 1421.328247 1430.972168 1439.21814 1442.984985 1442.60376 1439.487427 1447.036255 1458.479248 1473.92334 1484.918701 1497.543091 1524.822632 1537.486694 1549.117798 1549.578247 1544.73877 1539.220337 1525.033447 1521.152588 1517.785767 1516.494995 1516.289917 1513.721191 1507.57666 1499.630981 1500.291626 1496.717896 1489.792236 1478.245239 1479.161255 1479.186768 1489.770996 1489.037109 1481.956909 1475.683472 1481.029297 1485.032227 1491.135132 1495.685425 1491.070801 1482.440308 1476.372314 1470.468628 1463.495117 1453.872192 1441.786987 1425.36792 1417.87561 1409.471436 1410.148682 1415.953491 1411.954346 1403.473877 1402.213501 1412.088867 1416.337402 1421.308472 1431.337769 1440.634155 1448.518433 1454.013672 1458.744751 1464.627808 1469.07312 1464.751221 1456.189331 1444.867432 1435.694458 1429.883423 1424.062866 1418.598999 1414.030151 1408.607544 1404.620239 1398.491333 1393.740479 1392.096191 1389.967163 1386.796387 1382.274536 1379.759766 1377.91687 1372.301514 1364.318726 1364.586548 1371.646851 1379.158691 1381.693115 1381.320679 1378.905884 1373.443848 1368.501709 1364.554688 1358.756226 1354.873291 1347.421265 1341.688232 1337.334961 1331.570679 1327.165405 1321.89502 1316.388184 1317.739502 1328.653564 1343.31897 1352.297241 1357.376709 1358.22998 1355.817017 1355.90332 1354.516602 1350.215576 1343.658691 1343.051392 1354.828979 1359.731079 1363.540527 1366.950073 1371.708496 1377.053711 1379.684937 1379.254639 1376.063721 1371.505859 1368.591064 1364.59082 1359.117554 1355.113525 1353.110962 1353.956177 1354.88562 1355.270142 1354.231689 1351.012451 1347.150635 -1669.380493 1660.299927 1663.978882 1667.116821 1669.164307 1670.219849 1671.064209 1671.920898 1677.569824 1680.412231 1684.035522 1693.138428 1697.797852 1700.644043 1703.395508 1705.951416 1707.003418 1705.26416 1698.05127 1692.768433 1688.797607 1683.54187 1675.204956 1668.483643 1660.496826 1653.166626 1646.039551 1640.748047 1636.761597 1633.359375 1630.662109 1632.897095 1643.161133 1652.229858 1658.431641 1665.582397 1667.733398 1667.809448 1669.568481 1674.836548 1680.744507 1683.510376 1699.978271 1709.137451 1705.274048 1700.619995 1707.829712 1713.1073 1717.31604 1720.817017 1720.547485 1720.571411 1720.837158 1720.596802 1719.859009 1719.22168 1717.349487 1714.27124 1710.668213 1709.101929 1709.142578 1709.134644 1708.93689 1705.234009 1698.526733 1690.890991 1681.71582 1667.745972 1671.381714 1672.270264 1670.835083 1669.137817 1670.081543 1676.049072 1679.422852 1672.642456 1661.27002 1651.106079 1638.852173 1626.575195 1615.598877 1605.34375 1593.84729 1579.246216 1558.385376 1558.86377 1572.70166 1601.50647 1616.719849 1625.593384 1632.548706 1637.665771 1645.930054 1652.376831 1660.845093 1674.368286 1685.094482 1693.966431 1695.301636 1689.881104 1684.651611 1679.4104 1680.153564 1673.075073 1656.634888 1638.658691 1627.247314 1610.613159 1596.322388 1583.179688 1573.687378 1561.259766 1550.883789 1539.970459 1529.049927 1520.29834 1522.690674 1526.622314 1531.106323 1530.341675 1522.336548 1513.490112 1504.551758 1494.112915 1477.171265 1465.982544 1455.075806 1449.755615 1452.548828 1453.478516 1451.211426 1450.639038 1450.030884 1448.947266 1447.12085 1444.412476 1441.545288 1438.512451 1443.591919 1450.637817 1464.006348 1478.795288 1484.877563 1490.610229 1500.848267 1515.022705 1541.023804 1553.605713 1566.160522 1585.858154 1570.005615 1554.197144 1546.052734 1543.079102 1542.699585 1547.221924 1560.141968 1568.130981 1575.102295 1584.447754 1584.859863 1582.465332 1579.762207 1576.562744 1580.778076 1587.219604 1591.664185 1594.78479 1595.821655 1596.59668 1596.613403 1596.492554 1594.456787 1591.057495 1586.536377 1579.943726 1577.507446 1577.321533 1576.075562 1573.684814 1570.765991 1568.589233 1566.691895 1564.177856 1563.39624 1562.023193 1557.075684 1553.442749 1556.776489 1553.308105 1557.076172 1564.375 1568.635986 1571.276123 1573.950317 1575.619385 1578.92688 1586.275269 1592.156006 1598.099365 1594.356812 1590.368286 1584.962524 1582.133057 1582.884644 1587.811768 1591.837036 1591.533691 1587.837769 1582.955688 1577.298096 1571.182007 1570.506836 1569.206299 1560.111572 1567.829346 1575.931885 1585.370728 1588.699463 1588.119629 1583.92334 1576.959961 1569.742188 1569.054199 1574.076782 1582.862671 1588.381836 1589.136475 1589.310913 1584.779907 1583.661743 1580.057495 1571.934082 1553.498901 1543.651489 1557.874634 1575.324951 1579.962402 1577.766235 1568.523071 1553.633911 1539.41626 1521.866333 1524.669067 1533.060913 1542.446899 1552.447632 1563.409058 1558.137817 1550.610962 1541.758545 1531.543701 1524.028931 1513.222168 1502.603027 1491.575928 1479.675537 1477.464966 1481.611694 1485.594727 1489.269531 1493.566162 1495.819336 1497.309937 1501.796997 1506.063965 1509.139648 1509.648804 1511.570312 1515.237671 1519.548706 1522.850342 1514.984863 1503.372559 1496.480835 1491.141479 1485.64624 1485.200562 1488.032715 1495.695679 1502.411011 1505.949463 1508.869629 1508.251221 1503.153687 1498.237061 1490.550537 1483.800781 1477.712769 1467.640259 1463.180298 1462.400269 1462.553833 1465.066406 1467.622803 1468.5896 1466.564697 1462.436279 1457.563965 1455.612061 1458.424683 1464.877808 1479.24292 1496.832642 1521.980225 1521.251831 1509.506104 1486.463867 1469.96228 1462.853516 1467.568115 1481.187012 1495.607178 1506.62439 1514.141968 1518.115967 1524.070312 1520.165283 1510.410767 1503.539429 1497.119995 1494.213989 1500.118042 1508.903198 1524.788452 1537.912842 1536.104004 1521.666504 1506.865723 1490.064697 1475.188354 1490.518555 1502.315918 1519.324585 1530.748047 1541.532104 1555.012451 1566.760864 1580.27832 1590.598389 1597.365356 1598.398193 1593.078735 1585.213745 1576.848267 1571.571899 1571.296753 1571.412598 1573.684082 1575.747314 1577.144653 1578.381958 1579.976074 1581.669312 1583.659058 1588.714966 1595.20752 1598.213013 1599.936279 1600.366455 1599.046631 1594.088257 1593.007446 1595.941772 1602.237305 1606.011353 1604.887085 1601.046143 1594.889038 1591.060669 1589.416138 1587.08374 1584.253784 1583.700195 1581.528564 1576.614136 1570.618408 1562.564819 1551.889648 1537.355347 1522.594971 1513.913452 1502.740479 1490.993164 1478.89917 1468.754639 1462.924072 1456.603149 1452.245361 1450.152832 1452.168213 1444.713745 1440.305908 1438.021729 1434.635132 1427.657837 1425.401733 1423.630981 1421.549438 1418.650269 1415.368042 1414.333618 1415.854004 1417.168213 1418.67749 1421.213135 1423.60022 1423.499756 1419.562134 1415.941772 1413.854126 1415.355103 1424.383667 1425.082275 1425.450562 1434.004395 1445.920898 1457.198364 1465.346436 1472.243408 1484.450317 1499.707886 1506.733154 1513.621338 1520.115845 1527.531982 1537.392212 1538.719849 1539.434082 1540.408691 1544.121094 1547.261963 1550.350586 1550.6604 1542.253174 1527.739136 1509.415039 1491.008911 1463.90625 1430.888672 1408.963013 1396.779907 1385.50647 1368.97876 1344.949707 1323.733154 1314.634521 1327.875366 1338.619141 1353.348389 1363.647827 1373.584229 1383.796265 1392.962402 1400.462769 1408.335205 1422.982178 1448.129517 1470.177002 1495.508057 1506.307373 1496.373291 1484.066772 1471.982666 1457.026855 1446.82373 1438.942505 1427.950562 1430.324463 1430.899658 1425.11792 1417.882812 1409.616455 1401.707642 1398.75708 1402.480103 1414.346802 1420.257935 1423.756836 1424.375122 1431.794922 1441.039185 1452.175537 1461.334961 1473.807495 1487.474121 1503.321411 1524.81897 1534.100586 1543.013794 1550.290894 1546.029175 1539.938232 1523.948608 1520.255127 1517.052856 1516.212646 1516.153931 1515.854858 1515.352905 1514.353638 1510.453247 1503.708862 1495.564087 1490.24585 1486.733398 1491.635986 1496.782471 1492.76416 1486.233276 1485.368286 1490.454468 1497.143921 1504.220093 1505.641968 1497.88916 1488.563354 1481.395142 1473.732788 1465.30957 1452.674805 1437.716919 1426.092896 1420.298218 1413.907837 1417.877319 1420.812622 1416.733398 1406.528076 1407.93335 1419.614624 1429.393799 1430.948853 1434.039185 1438.817261 1450.455566 1456.138672 1461.669067 1465.661255 1463.43042 1458.27356 1451.927856 1440.931885 1432.807983 1427.154663 1421.193604 1416.111206 1406.551636 1399.564331 1397.468018 1392.919922 1387.455933 1382.987427 1379.036743 1376.672607 1374.944824 1372.764282 1369.906372 1366.567383 1369.86377 1378.195435 1381.066284 1383.859619 1384.043945 1382.39856 1379.717163 1375.091309 1370.299438 1365.701904 1359.892334 1355.56897 1349.564453 1343.777588 1337.706421 1331.457764 1326.336548 1320.471802 1318.529419 1325.57312 1334.305908 1348.751831 1357.855347 1362.478882 1363.446899 1362.216797 1362.017334 1360.756226 1357.557495 1351.262939 1348.60791 1353.400635 1361.630127 1366.922729 1369.930054 1374.467041 1378.8573 1380.359741 1380.045288 1376.719238 1371.96521 1367.72229 1363.158081 1358.394775 1354.209717 1353.687256 1355.32251 1356.423706 1356.751587 1356.110229 1354.408203 1350.515625 -1674.288574 1667.632446 1668.369507 1671.42981 1673.132202 1674.952637 1676.935303 1678.840332 1681.297852 1682.46582 1682.861206 1691.018921 1696.862427 1700.42627 1703.975708 1707.291504 1709.588135 1709.736206 1706.08313 1699.502441 1695.208984 1692.16687 1686.62854 1679.374512 1668.709595 1659.782959 1650.214233 1644.293823 1641.706543 1638.674561 1635.363525 1632.47522 1633.336304 1644.463135 1649.255127 1652.585327 1654.4104 1655.633545 1658.891479 1664.459106 1671.155884 1692.024048 1701.97644 1707.007935 1696.545898 1695.342773 1705.155273 1713.019897 1720.18689 1722.315063 1721.721924 1720.707886 1720.096802 1719.089111 1718.746582 1717.737549 1715.940308 1712.880127 1708.314819 1706.756104 1706.177856 1704.697998 1700.917847 1695.52124 1691.494995 1684.36084 1683.835693 1687.530884 1688.030762 1686.355469 1683.492188 1683.552734 1689.162964 1691.736328 1686.887939 1673.791504 1660.299683 1649.810791 1639.043335 1624.967529 1614.308594 1602.304688 1590.212036 1577.650635 1561.046753 1559.086792 1569.5 1594.592163 1612.810059 1625.290649 1635.373779 1638.163452 1640.520386 1643.077637 1655.720703 1666.476685 1676.694092 1686.204346 1695.089355 1696.295288 1689.656006 1686.80481 1685.414185 1674.847168 1655.902832 1646.178345 1630.107788 1616.610596 1601.813354 1585.654175 1572.530029 1559.121338 1547.71814 1538.337891 1532.910889 1535.42749 1536.851807 1540.655273 1540.884644 1532.34082 1515.258423 1506.665161 1499.24231 1489.532837 1474.573853 1464.785889 1455.453003 1456.090942 1462.709229 1462.418335 1460.306152 1458.043701 1456.005127 1454.731812 1452.616211 1449.524414 1445.247437 1441.296753 1442.945068 1453.164429 1468.100342 1485.498901 1500.512085 1502.349731 1502.837646 1509.12561 1532.442749 1552.672607 1566.567383 1584.43689 1567.892212 1554.447266 1546.048828 1546.639282 1550.497314 1553.0177 1559.123657 1571.680542 1581.853516 1588.476562 1588.53064 1587.285889 1585.669312 1584.772827 1584.266113 1585.910645 1590.12854 1592.195312 1592.270996 1591.409424 1590.331787 1588.186523 1585.119751 1581.069336 1576.02124 1571.755249 1570.398682 1569.957031 1569.184326 1567.677734 1565.449463 1563.106689 1560.870361 1556.62915 1555.076416 1553.113647 1548.668579 1549.246948 1552.033691 1548.59021 1551.476929 1559.678101 1563.228149 1564.918579 1566.171875 1568.971191 1573.555054 1581.98584 1590.332031 1598.157715 1600.351196 1599.328247 1595.511963 1587.911743 1584.12915 1587.025024 1594.593262 1598.666992 1595.086914 1587.933228 1580.400513 1572.983276 1576.089966 1576.538452 1573.740479 1570.329956 1571.255371 1581.630737 1588.998413 1589.987793 1587.605469 1580.139038 1572.068848 1574.046631 1574.432007 1582.978516 1588.062134 1589.213501 1588.848877 1582.396484 1572.156494 1569.572998 1561.235962 1545.969604 1555.238281 1569.559692 1588.925659 1586.661133 1580.02417 1569.243042 1556.85376 1541.646484 1531.246582 1538.703125 1542.370972 1551.133301 1559.820923 1564.804932 1549.639282 1539.114502 1530.43396 1520.844238 1512.407959 1500.099487 1490.498901 1482.896484 1477.935303 1480.01416 1483.641846 1487.421387 1493.331421 1498.968262 1501.700928 1500.670654 1504.934204 1510.992432 1514.884277 1516.046387 1518.333618 1521.772095 1521.796509 1516.629883 1505.879272 1497.309082 1492.295776 1487.253174 1485.63562 1488.801636 1497.782959 1506.066284 1511.291748 1522.568726 1526.366577 1524.893311 1517.225098 1509.180298 1503.360474 1495.757324 1488.256348 1481.964966 1474.084229 1468.136719 1465.474243 1462.078735 1460.050049 1459.146851 1458.164917 1457.050049 1457.846191 1459.7677 1462.479248 1473.633667 1486.531738 1504.629272 1526.641968 1522.025146 1507.213257 1485.909912 1469.842407 1465.512939 1474.774414 1486.418335 1501.290527 1516.782837 1528.80542 1532.768066 1532.682129 1532.123657 1527.865601 1521.775879 1516.800659 1506.501953 1497.65918 1508.808228 1523.224854 1537.186279 1544.609863 1534.169434 1518.747314 1503.957397 1489.453369 1488.577393 1498.089111 1508.415894 1519.267578 1533.0271 1549.696899 1562.371582 1576.532715 1588.015137 1597.227539 1600.386841 1599.387329 1590.759033 1581.87854 1575.938477 1571.685181 1569.609253 1567.13562 1568.112427 1570.082031 1572.249146 1574.24646 1575.181763 1576.993652 1580.44751 1583.034546 1586.901123 1594.839844 1599.647949 1600.799194 1598.688477 1598.223022 1602.017334 1609.21167 1611.623901 1610.718262 1607.215454 1601.470215 1599.117554 1599.032593 1597.66394 1596.766968 1591.684814 1585.03064 1578.692383 1571.069946 1559.048584 1543.946289 1527.502075 1518.604126 1510.983398 1499.845337 1488.382935 1478.788574 1469.230957 1463.216675 1454.238159 1449.920166 1451.046997 1448.651123 1437.959717 1437.309204 1436.303467 1433.103516 1428.290283 1426.232056 1423.541992 1420.022949 1417.011108 1416.69165 1417.689453 1419.625122 1422.566895 1425.908081 1429.797119 1431.223633 1429.358032 1423.976318 1417.967651 1413.676758 1419.761719 1429.11377 1433.975464 1433.937622 1436.24231 1448.099854 1461.786499 1470.989746 1479.31665 1488.606689 1501.672485 1512.956055 1519.207031 1527.063477 1533.445679 1537.535522 1536.348267 1536.76062 1535.958252 1541.4375 1549.263184 1550.053101 1541.931641 1533.129517 1521.076782 1505.870972 1484.50354 1458.952881 1428.724731 1404.346191 1390.494507 1374.267944 1357.240723 1336.76062 1320.809204 1315.045776 1332.734375 1344.945679 1358.300049 1369.799927 1380.197876 1390.548096 1398.911743 1408.480591 1419.276855 1439.719849 1460.192993 1485.546021 1508.951904 1521.305298 1505.236572 1490.75415 1480.100586 1462.822754 1452.927856 1445.50708 1441.48584 1443.692261 1440.829346 1435.426025 1427.454102 1420.109497 1413.000732 1402.184204 1403.241821 1407.374268 1413.36145 1426.786377 1438.036865 1436.910645 1438.790771 1453.482178 1462.243286 1473.914917 1483.402954 1503.6875 1521.966553 1529.903076 1536.13623 1542.619141 1543.676147 1540.032227 1529.2677 1517.436279 1511.888916 1512.087524 1515.166626 1515.768799 1515.65271 1515.571533 1515.111084 1509.757568 1500.823975 1499.737305 1496.903931 1500.912231 1502.943604 1497.248535 1488.424194 1492.57251 1498.367432 1505.314087 1512.130493 1515.264771 1503.180542 1491.790894 1481.06311 1471.201904 1461.104858 1450.147217 1438.553223 1432.638306 1425.710938 1421.026978 1427.054688 1427.393677 1420.455566 1412.772095 1416.189331 1427.264404 1438.946411 1443.070923 1442.455566 1445.261963 1451.793823 1456.407104 1461.92395 1460.78064 1456.1698 1450.585449 1443.142944 1433.866577 1426.284058 1419.999878 1415.809204 1409.515381 1400.880981 1393.509766 1389.442749 1386.797241 1381.406494 1379.572754 1378.681641 1378.743286 1379.80896 1373.446533 1372.911499 1373.802246 1378.988647 1384.677002 1388.613647 1389.257446 1386.289062 1383.063843 1379.795288 1375.299316 1370.036133 1365.073242 1358.941772 1354.143799 1348.792725 1343.827515 1336.383545 1328.597412 1323.820435 1320.180298 1324.115845 1332.269043 1346.52356 1354.363647 1362.405762 1367.372192 1368.550171 1367.59375 1367.908203 1367.49292 1366.820435 1359.059326 1354.916992 1353.037231 1363.194458 1368.628784 1372.20166 1375.967163 1379.398682 1380.348267 1380.108032 1375.317993 1369.054443 1365.518188 1362.817749 1359.269287 1354.713867 1355.567749 1357.263916 1358.287231 1358.482666 1357.755981 1356.127441 1353.517944 -1678.297852 1669.676636 1671.226562 1674.77124 1677.664429 1680.57605 1683.010864 1684.911133 1687.017578 1688.519165 1689.002563 1691.619263 1695.318237 1699.777832 1703.640015 1707.089844 1710.393433 1711.015015 1708.853882 1706.539429 1703.779663 1700.577881 1698.045532 1692.351318 1678.621826 1667.845215 1657.914917 1651.682739 1647.790894 1644.103027 1640.561646 1637.251709 1634.63147 1635.792725 1641.367065 1644.789307 1646.09314 1650.540039 1660.990234 1673.231567 1682.131958 1694.876221 1697.656982 1691.231812 1681.911011 1691.723389 1703.077881 1712.995361 1721.2052 1722.602295 1722.557739 1720.122437 1717.851074 1716.905029 1716.880737 1716.197998 1714.726562 1712.664673 1709.989502 1707.799561 1703.950073 1695.710327 1692.933716 1691.65686 1691.345825 1695.389526 1699.025269 1700.812988 1700.980225 1699.518921 1697.736816 1698.586182 1699.258057 1695.65686 1684.957642 1668.685669 1655.758301 1645.306519 1636.501709 1620.618286 1608.660889 1597.404175 1586.367676 1580.595215 1574.093018 1561.324341 1562.190186 1588.589966 1603.925903 1619.497314 1628.468872 1632.911987 1633.237061 1631.252441 1646.934326 1655.510864 1662.287964 1672.218628 1682.237061 1687.741211 1690.742798 1694.108521 1690.300293 1680.858887 1667.199707 1654.491089 1638.915894 1622.762573 1608.79895 1591.903442 1579.669556 1566.322998 1547.942017 1546.620483 1545.70874 1547.447021 1553.273315 1550.170044 1541.297241 1530.468994 1518.144897 1504.573242 1493.197754 1483.63855 1473.340454 1461.947876 1456.419922 1464.161743 1474.141724 1474.285522 1471.039551 1465.68103 1461.982178 1459.796387 1457.128174 1453.830444 1449.585693 1444.198853 1442.319946 1449.519897 1464.688354 1482.723511 1503.483276 1516.283081 1519.516235 1524.962769 1541.04541 1556.757812 1571.979248 1581.387085 1565.886841 1554.185547 1547.265015 1551.031372 1555.414062 1559.668701 1565.932129 1576.999634 1583.792969 1589.456787 1589.371948 1589.125732 1588.287354 1587.836426 1587.09082 1587.671875 1589.18457 1590.012817 1589.188477 1587.023315 1584.300659 1580.411377 1576.262939 1572.098267 1569.402588 1567.420776 1565.717529 1564.878418 1564.192017 1563.133179 1560.371826 1556.669556 1552.490234 1547.532349 1547.143188 1546.002319 1545.088013 1547.891235 1549.472046 1547.481201 1549.329712 1553.804565 1557.302734 1558.612671 1559.386719 1563.90332 1568.979614 1574.366089 1581.613159 1588.618896 1597.044312 1599.838745 1600.949585 1596.668823 1587.123169 1589.150146 1597.532104 1600.503296 1599.720459 1594.032837 1585.058228 1580.583496 1581.774048 1581.2677 1577.604858 1573.665894 1571.240356 1579.766235 1588.382324 1592.744629 1591.410522 1584.556763 1577.133423 1576.141113 1580.145264 1584.021118 1588.828369 1589.457275 1587.022095 1577.747803 1568.002563 1560.316895 1556.538818 1568.064819 1572.729492 1586.371826 1601.312134 1602.932129 1586.085083 1572.359009 1559.552124 1544.490845 1537.680664 1545.660889 1550.58313 1557.363403 1563.484253 1564.414185 1550.018555 1536.146973 1518.740479 1508.488037 1503.5448 1493.910645 1482.748901 1480.091431 1481.090088 1482.786987 1485.016479 1489.035645 1496.951294 1501.968628 1504.447754 1505.799683 1508.778687 1512.322021 1519.412964 1523.393066 1524.320801 1526.298584 1524.827515 1515.032104 1502.852539 1495.572266 1489.468262 1486.573853 1488.896606 1497.825928 1511.335449 1521.063965 1526.737061 1531.299927 1532.941895 1531.276489 1527.666382 1519.625732 1510.505249 1504.891724 1498.849854 1492.50061 1485.875366 1474.234619 1472.98645 1471.341675 1467.849976 1464.120361 1462.42627 1461.329712 1462.882568 1467.487183 1472.009766 1483.3479 1501.719971 1516.062988 1533.068481 1526.626465 1510.199219 1487.700684 1471.284302 1468.818848 1479.890991 1493.832031 1515.829468 1532.098389 1541.448242 1543.170898 1541.739502 1541.671265 1540.890869 1537.743042 1530.571411 1523.236938 1511.619873 1507.984619 1520.594238 1535.051025 1551.73877 1547.738892 1534.180542 1518.616333 1504.551758 1495.262695 1510.151367 1521.194702 1523.537842 1530.394775 1540.309326 1555.478394 1569.373535 1581.676392 1594.704468 1600.987183 1600.58606 1595.238525 1585.510742 1583.413086 1577.184448 1570.922485 1562.475464 1559.703369 1561.183594 1563.015259 1566.298462 1567.798218 1570.334717 1574.111572 1575.35022 1578.339355 1583.169556 1587.820312 1591.314575 1593.92627 1597.881958 1602.245117 1607.999146 1611.875244 1611.988525 1609.947144 1602.008789 1599.38916 1600.673828 1601.255493 1601.184448 1598.979858 1587.721924 1580.300293 1572.691895 1557.9729 1541.957275 1522.748901 1514.462891 1505.389404 1494.438843 1484.151001 1474.478882 1464.865845 1461.384155 1454.293945 1450.216431 1451.074707 1449.138428 1441.634277 1437.886597 1438.688232 1439.670776 1438.648193 1431.289917 1425.964478 1420.483398 1417.482056 1418.805176 1420.515991 1423.252441 1426.570435 1433.634766 1439.307739 1437.942383 1431.448853 1424.858032 1418.326172 1414.094482 1422.215576 1433.317139 1441.88501 1448.061035 1449.050659 1449.099243 1462.026978 1473.539307 1484.104858 1495.025635 1504.483643 1513.060181 1518.899414 1523.437866 1528.157227 1532.85498 1532.359985 1531.316528 1534.373047 1540.785522 1547.252075 1544.319824 1534.073975 1516.912598 1503.478271 1493.190674 1474.761475 1445.834961 1421.006348 1402.609131 1389.574585 1372.241089 1349.913696 1327.576782 1318.539795 1316.338257 1333.497192 1348.760742 1360.947021 1374.094116 1385.777466 1396.09375 1405.158569 1416.046265 1430.556274 1453.537231 1470.652954 1495.351074 1515.369629 1529.042969 1510.578979 1500.767944 1488.781494 1476.376831 1462.377563 1454.984863 1455.348022 1458.513062 1450.00647 1445.33252 1437.831543 1427.885254 1421.248169 1414.3125 1404.769165 1408.921509 1414.8396 1429.322876 1442.118042 1453.027344 1454.675415 1450.010498 1460.620239 1470.285767 1482.649902 1495.189209 1511.395508 1524.476318 1529.917358 1534.947876 1539.115845 1540.153931 1533.855591 1522.064209 1510.255981 1505.270752 1510.862671 1513.392456 1513.673706 1514.132568 1514.431519 1512.661377 1507.179932 1505.841064 1506.65271 1509.023926 1505.393188 1500.258423 1497.49707 1500.665405 1506.446899 1513.120728 1522.095093 1516.189819 1503.870361 1493.719971 1483.855103 1472.788574 1462.578125 1455.89563 1447.381836 1441.492065 1429.414673 1426.716797 1430.490479 1430.704346 1426.282104 1418.125366 1418.953857 1432.913574 1443.906372 1451.504272 1452.620361 1450.270264 1452.991943 1453.354248 1453.363525 1453.186157 1448.290894 1440.985229 1434.26062 1425.171509 1416.333496 1410.165161 1404.15271 1400.848389 1396.060425 1391.022095 1385.643433 1382.199585 1386.59668 1391.815063 1389.699951 1384.116089 1381.195923 1379.210938 1380.156006 1380.100952 1381.59375 1389.477661 1392.147949 1390.77832 1386.908447 1383.030396 1379.302979 1374.209106 1368.519775 1362.228027 1354.549316 1350.184937 1345.174561 1340.415894 1333.097168 1327.055054 1322.399048 1326.106567 1332.558838 1341.141235 1355.447266 1364.86792 1367.783081 1370.585083 1373.810059 1374.187866 1373.476807 1372.087036 1369.611328 1367.774902 1363.665161 1357.838013 1363.144775 1369.268677 1373.19873 1376.914062 1380.023682 1380.552368 1379.545532 1373.368164 1366.55603 1364.289795 1363.147461 1361.906006 1360.496338 1359.968018 1360.828491 1360.974121 1360.6698 1359.46228 1357.54834 1355.170776 -1682.316284 1670.659302 1672.890503 1677.553711 1681.753418 1685.677124 1689.018188 1691.936157 1694.912476 1696.4823 1696.400879 1695.071167 1694.197144 1698.359985 1704.454834 1706.884033 1711.477417 1713.634399 1713.240967 1712.078369 1710.279419 1707.325195 1703.934692 1699.662964 1688.463989 1675.671631 1667.944336 1664.701904 1659.263794 1650.708984 1645.021118 1643.115479 1640.116211 1637.67981 1637.083496 1639.958618 1642.837891 1647.796387 1663.64917 1673.841675 1679.583374 1682.037842 1679.952026 1677.906616 1679.667114 1691.230713 1700.938232 1707.977295 1714.87146 1720.810791 1721.486084 1717.055908 1712.767822 1712.365723 1713.989868 1714.483765 1713.941772 1712.891968 1711.50415 1709.921387 1708.357788 1703.633057 1696.77771 1695.036621 1702.262939 1707.057007 1708.846313 1709.109741 1709.496826 1709.376587 1708.19165 1705.527588 1697.274414 1690.727783 1678.382202 1663.526245 1651.873413 1639.253296 1628.893799 1618.082275 1611.26001 1605.731567 1596.972168 1586.354736 1579.51123 1572.727173 1562.939697 1575.357544 1595.407593 1610.292236 1619.115967 1621.00708 1618.504028 1623.922729 1635.784912 1640.665649 1647.143555 1662.42627 1673.272339 1679.93103 1689.622437 1699.106812 1696.822144 1688.439575 1676.670166 1663.140747 1648.02063 1628.12793 1611.328979 1595.032471 1580.488647 1560.544556 1559.076904 1562.511597 1563.74707 1565.603149 1563.364502 1554.497437 1542.691162 1530.750122 1518.966064 1505.568115 1493.007324 1482.606079 1473.491577 1464.399292 1458.554932 1477.179077 1483.650024 1486.134033 1483.398804 1479.242432 1473.784912 1466.033936 1461.558105 1458.016724 1453.490845 1448.084351 1443.019165 1448.925537 1460.342529 1473.284912 1485.963257 1501.335571 1517.158081 1534.431885 1547.553467 1561.734863 1579.86731 1580.740234 1567.928833 1558.327881 1553.946533 1559.828003 1562.417358 1564.704102 1570.002075 1574.252808 1579.204224 1584.899536 1587.175537 1587.436279 1586.537231 1587.790161 1587.555054 1587.658936 1587.977661 1588.473145 1585.131104 1575.35498 1573.804443 1571.740967 1568.844238 1566.073608 1564.385498 1563.165405 1561.89917 1559.449829 1558.702148 1556.29126 1553.238281 1549.805786 1546.376465 1543.671997 1541.169189 1537.930786 1538.617554 1543.679443 1545.730103 1545.802246 1547.310181 1549.154053 1550.529175 1552.145142 1556.152466 1560.47229 1564.558472 1567.980713 1570.29834 1574.121582 1583.735474 1594.92041 1600.29834 1599.896362 1595.841431 1596.263428 1599.478394 1602.700195 1602.513184 1599.656372 1588.297974 1583.81958 1587.291382 1586.78894 1582.134521 1576.193237 1571.935303 1579.583862 1589.95105 1595.894165 1597.7146 1594.489014 1584.700684 1582.005737 1585.058594 1588.510742 1592.743408 1590.473755 1583.081177 1575.791992 1564.812988 1560.884766 1570.017212 1585.501831 1593.583252 1602.800781 1615.893921 1614.23291 1595.648193 1580.331543 1566.803467 1546.6073 1549.402222 1558.687988 1563.670288 1564.953247 1565.320679 1561.712769 1550.366089 1537.639404 1517.780884 1500.453613 1493.446777 1484.56189 1483.125732 1484.746948 1485.514648 1485.504028 1486.139771 1488.926025 1498.518311 1503.607666 1506.932861 1508.737671 1511.888428 1517.822876 1524.292603 1527.579346 1528.399414 1528.399048 1526.217896 1512.151489 1501.573975 1494.251953 1487.902832 1489.322388 1495.582642 1511.236084 1524.998779 1530.660645 1533.953369 1538.319458 1539.755127 1536.83728 1533.246094 1527.991821 1519.284912 1511.349731 1506.427124 1501.695435 1496.946655 1492.483765 1488.72876 1486.019897 1480.980957 1477.935303 1476.568848 1469.066284 1469.514404 1479.071533 1487.508545 1496.198975 1512.973877 1528.20874 1540.589111 1530.984009 1515.437378 1494.682983 1474.967163 1470.770996 1478.629761 1492.786377 1515.466064 1534.966553 1547.052124 1551.0271 1549.888672 1548.800537 1548.15332 1545.933594 1541.485107 1534.448853 1528.203979 1511.883179 1520.940308 1534.852173 1552.430542 1559.593262 1549.458252 1533.010132 1518.813843 1502.79248 1516.638306 1533.522095 1544.661377 1553.531982 1554.358276 1553.732056 1567.880371 1581.267822 1594.217285 1601.121338 1600.837524 1599.130981 1594.257812 1588.770508 1582.842773 1573.84436 1565.515625 1560.469727 1553.192993 1554.027832 1558.479736 1559.553223 1562.009277 1566.02124 1567.860107 1570.1604 1573.099487 1576.745972 1579.606567 1582.253052 1587.969604 1596.286011 1599.870239 1604.045898 1605.557983 1601.967407 1595.252075 1592.249023 1597.670654 1599.90271 1598.270508 1594.306641 1586.884155 1580.204224 1573.208496 1558.052246 1544.665039 1527.127808 1515.82373 1507.02478 1498.635986 1486.731812 1476.968506 1469.1604 1464.790771 1457.434692 1451.443115 1451.43457 1451.746704 1448.084473 1445.234985 1444.53479 1443.645752 1441.324707 1435.285156 1426.522705 1420.084839 1419.077637 1420.715454 1422.858276 1425.848999 1432.894897 1440.617188 1442.488037 1439.921509 1431.199219 1424.719482 1419.513428 1418.307373 1423.603882 1435.424072 1448.086914 1456.270874 1463.15686 1466.827148 1464.434204 1472.391113 1481.284668 1490.030396 1501.496582 1508.44043 1513.783203 1519.534546 1524.52771 1528.800415 1527.980713 1523.602173 1529.206421 1538.001221 1540.625244 1539.789795 1525.571045 1510.560425 1487.063354 1473.006958 1451.586914 1430.858398 1409.883911 1399.026001 1388.538574 1371.525269 1348.639526 1326.069458 1317.010742 1321.375488 1339.551514 1352.43103 1364.173584 1378.27124 1391.280029 1403.049683 1412.38269 1424.557129 1442.694336 1459.442017 1481.553467 1498.924072 1517.917847 1540.272217 1527.445557 1512.740845 1502.159912 1486.109863 1475.647949 1469.343872 1475.555176 1475.590332 1464.077881 1456.328735 1448.43457 1438.419067 1427.900024 1421.041992 1413.248291 1413.487305 1412.942993 1419.602417 1435.346313 1447.809204 1453.493286 1455.444092 1460.666138 1470.885498 1478.235962 1484.212646 1500.574951 1513.29248 1520.198486 1526.25354 1533.739868 1540.206543 1535.440796 1521.454712 1511.169067 1499.620117 1501.746216 1505.927734 1507.620483 1508.282349 1508.051147 1504.688721 1503.156006 1508.61377 1513.247192 1513.470337 1508.194702 1505.649414 1506.318726 1509.827759 1513.907593 1523.641479 1526.917114 1513.818115 1501.73291 1494.025513 1485.864014 1475.500854 1466.247925 1458.223267 1450.592163 1442.004639 1436.459106 1435.307739 1436.334229 1435.047119 1430.952271 1426.385864 1424.761353 1432.454834 1444.534058 1452.870483 1452.945435 1450.178711 1446.031738 1444.624756 1444.291138 1442.328491 1437.467285 1432.3573 1426.105103 1417.391602 1410.011841 1403.946411 1398.456543 1395.27356 1392.041382 1386.993896 1384.729492 1389.922607 1394.401855 1395.440796 1391.738159 1387.10498 1386.142334 1384.980835 1385.18103 1387.091064 1388.529419 1390.296265 1391.823608 1389.630371 1385.960815 1381.555542 1377.391602 1372.308105 1365.014893 1359.404785 1352.814209 1348.379028 1340.125977 1334.951782 1328.246582 1324.883545 1327.042725 1334.789307 1347.150879 1355.725708 1366.466431 1368.125244 1369.558838 1373.214478 1378.46521 1379.396484 1378.700073 1375.686768 1373.947754 1372.216919 1368.092773 1364.040161 1365.413086 1370.168091 1374.171265 1377.580933 1380.288574 1380.761108 1378.671509 1371.252319 1365.455566 1364.686768 1364.258911 1364.353027 1363.91394 1364.357788 1364.662598 1364.084473 1363.526855 1362.126221 1359.933228 1357.558105 -1688.039551 1679.685547 1677.091431 1681.137085 1686.070801 1691.211548 1695.113159 1698.127686 1700.1604 1701.754028 1701.938232 1699.956421 1697.076172 1701.218018 1707.156982 1710.719727 1714.935181 1717.093994 1717.646851 1717.106445 1715.929565 1713.342163 1709.180786 1703.266235 1694.299194 1686.651245 1683.105835 1675.644043 1665.977051 1657.486694 1654.83728 1650.118652 1645.723267 1642.18811 1640.047607 1639.438477 1641.062866 1644.609619 1655.224976 1667.540894 1672.162476 1672.601074 1670.555786 1669.253174 1673.363892 1689.305908 1697.819214 1698.213745 1704.061401 1712.293213 1715.925171 1709.882446 1706.224365 1707.065918 1711.535034 1712.911133 1713.327637 1712.965698 1712.209229 1711.458984 1710.448608 1708.694336 1706.85791 1710.120728 1711.721191 1712.545288 1712.265259 1712.143066 1711.978394 1711.246216 1709.811646 1702.950562 1693.968384 1688.060059 1677.292969 1663.066772 1646.877197 1637.182373 1631.971069 1626.213501 1620.632812 1610.487549 1601.738159 1591.441284 1583.229126 1575.671631 1567.815674 1566.707642 1583.362061 1600.442749 1610.54126 1612.976196 1609.764404 1618.203491 1622.89563 1629.164795 1645.272217 1659.981934 1669.341675 1676.463623 1686.60498 1699.600464 1709.852295 1696.354248 1682.829224 1669.086792 1652.317017 1631.096069 1610.128296 1591.696167 1575.149292 1571.315552 1574.485962 1573.365234 1579.470093 1577.49353 1568.943481 1555.375732 1540.946533 1526.249512 1515.111328 1500.187866 1489.94104 1479.619751 1469.768677 1461.99292 1468.427246 1482.081299 1491.072876 1494.876343 1493.576416 1488.338623 1485.157715 1479.331543 1470.701538 1462.598389 1457.855713 1452.126831 1445.463257 1448.927856 1462.927612 1477.682007 1488.646362 1498.123413 1512.186523 1531.205078 1549.353027 1564.311768 1585.060791 1585.629517 1572.419312 1562.296997 1561.87439 1563.074219 1564.527466 1565.913574 1566.297363 1564.942627 1566.435669 1572.193237 1575.418091 1573.787964 1574.990234 1581.709961 1585.038696 1585.956909 1585.750732 1583.988281 1576.152222 1569.264526 1565.934937 1563.654419 1561.454346 1560.04187 1558.860229 1557.450928 1555.427979 1552.182617 1547.935547 1547.736938 1546.130737 1543.23938 1540.492065 1539.43103 1537.383423 1535.428345 1538.00647 1540.383911 1541.773804 1542.645508 1544.011719 1545.417603 1546.263916 1548.21167 1552.211914 1556.302246 1560.217651 1562.369385 1563.299927 1568.610107 1576.401855 1588.131226 1595.486084 1598.918335 1601.268311 1599.775391 1603.91626 1606.309448 1605.875122 1602.703125 1595.297363 1588.651978 1593.676025 1592.622681 1586.567749 1579.195557 1572.059814 1579.901245 1592.803345 1599.227051 1600.926636 1600.557007 1593.898315 1585.227783 1588.724487 1594.65686 1597.585571 1593.30249 1581.882935 1572.19873 1570.65564 1576.004883 1579.784058 1593.986694 1605.808594 1615.09314 1625.604248 1621.049194 1598.797241 1583.067261 1568.979858 1559.362915 1560.516968 1571.409424 1576.215698 1572.872437 1561.695557 1553.941284 1546.166138 1532.657837 1519.147461 1502.58374 1486.115601 1485.401978 1488.226318 1490.347412 1491.070557 1489.809204 1487.97876 1493.468018 1500.180054 1505.592651 1510.465576 1512.211792 1514.973755 1524.013916 1527.859741 1530.601318 1531.576782 1530.570923 1523.681274 1508.178955 1499.355591 1492.83728 1489.445312 1494.86145 1502.602539 1520.329956 1531.214722 1537.540894 1544.226807 1547.558838 1548.136597 1546.055542 1540.621826 1533.855225 1526.395386 1519.184814 1513.631348 1511.265503 1510.610474 1510.472778 1509.688354 1506.690063 1500.528809 1494.000732 1489.137207 1483.117065 1477.756592 1484.819824 1496.360718 1508.445923 1526.70105 1543.562866 1551.598999 1537.178467 1522.013306 1503.852539 1484.744263 1473.039795 1476.208374 1489.56543 1501.759521 1523.541748 1535.888672 1546.003418 1551.337402 1553.085205 1555.80188 1555.458862 1551.373779 1544.711304 1535.556641 1522.363281 1526.122803 1539.087402 1556.260132 1569.729004 1562.969116 1549.373413 1534.932983 1519.046997 1513.587402 1532.131348 1552.161011 1564.60376 1567.693359 1566.965942 1572.388672 1582.386597 1596.350586 1600.231934 1599.03064 1598.358276 1592.760742 1586.848022 1580.443604 1572.698242 1565.043945 1559.256104 1552.040161 1547.15979 1549.779175 1552.081665 1555.556519 1559.01355 1560.616943 1561.844238 1564.818115 1567.67041 1570.657593 1573.838501 1578.53479 1584.607178 1590.877197 1595.27124 1598.892944 1594.776611 1587.859985 1582.487305 1584.972046 1584.340698 1586.970703 1585.057007 1577.783203 1573.296875 1567.50769 1558.09314 1544.228394 1530.813721 1521.716797 1514.972778 1507.314087 1495.710327 1484.44397 1476.241089 1466.824951 1462.651611 1463.162354 1460.310547 1456.946411 1453.586426 1452.284668 1448.880127 1444.88269 1440.331787 1434.822632 1427.04248 1419.807983 1420.913452 1422.986572 1425.401367 1430.037964 1440.617554 1443.334717 1442.128662 1437.710205 1429.437378 1424.113159 1422.002319 1421.200928 1424.006836 1436.312378 1450.773315 1457.738159 1464.168213 1467.702148 1470.783569 1474.96582 1480.562988 1488.12085 1494.689209 1498.732056 1511.098511 1517.769165 1524.782837 1526.961426 1525.341431 1521.693359 1520.93335 1526.346558 1529.652954 1532.38623 1520.558105 1506.170776 1484.699951 1459.41687 1432.119995 1414.265869 1404.753174 1395.488037 1384.443359 1364.75 1343.901978 1324.121094 1315.230713 1328.990479 1348.081421 1361.217407 1376.659302 1387.893555 1398.74707 1408.239624 1420.187012 1439.57019 1454.590088 1474.485107 1497.278931 1513.324097 1527.807129 1543.133057 1539.868164 1527.745728 1510.678955 1497.440186 1487.726318 1490.880859 1491.427979 1488.417603 1476.84436 1467.682861 1459.533569 1450.12854 1436.750854 1428.289429 1419.801147 1420.783203 1420.143921 1420.625977 1425.64856 1438.542969 1449.515503 1453.20459 1454.181519 1459.251587 1460.576782 1480.603271 1492.431396 1499.677856 1503.609985 1513.082642 1523.63562 1539.822144 1530.76123 1518.174072 1509.8396 1499.253174 1492.028687 1498.460693 1499.819214 1500.13501 1499.071045 1497.240967 1497.913208 1503.452148 1511.68457 1511.671631 1506.570312 1508.28064 1512.758057 1514.83667 1517.728027 1522.488525 1520.359009 1511.077026 1499.066162 1492.89502 1485.848755 1475.829468 1467.859009 1460.168701 1451.81604 1442.412476 1441.142212 1442.971924 1442.505493 1440.717041 1437.419067 1432.817505 1428.395996 1431.505737 1439.80957 1448.682251 1450.601685 1445.060791 1436.289185 1434.223999 1433.105469 1431.08252 1427.962524 1423.452637 1417.382812 1410.301025 1404.374756 1399.308472 1394.259277 1390.530029 1387.125366 1388.905884 1393.596924 1400.97644 1403.347046 1398.765381 1390.614136 1389.889038 1391.295166 1389.047729 1389.574341 1391.632446 1391.989258 1392.039307 1391.617554 1388.661133 1384.706543 1380.523315 1376.429321 1371.727661 1368.084229 1363.793701 1357.709351 1352.075806 1343.703491 1335.0271 1327.884033 1326.418579 1330.853394 1340.187378 1351.334961 1358.843872 1364.448364 1365.209961 1365.293213 1370.583374 1376.935913 1379.776001 1380.825684 1378.157349 1378.018555 1378.035889 1373.059326 1370.016846 1370.662598 1374.385742 1376.444824 1378.061768 1381.31897 1381.239624 1378.058716 1372.843994 1368.539062 1367.966675 1366.184082 1366.05835 1367.225586 1367.894775 1367.684082 1367.063721 1366.259399 1364.640991 1362.696289 1360.737671 -1694.913818 1683.393188 1680.949463 1684.689575 1691.835938 1696.900391 1700.39856 1703.637207 1705.630371 1707.493774 1708.244141 1707.483521 1703.940796 1706.665039 1712.088501 1716.561157 1719.393188 1720.636963 1721.40918 1721.550049 1721.162354 1719.473999 1714.841797 1707.849609 1703.217163 1701.189453 1698.109619 1686.918823 1671.841797 1668.445557 1665.008911 1659.463379 1651.316772 1646.021851 1643.373779 1642.065552 1641.395386 1643.096558 1646.370728 1653.682983 1659.351318 1661.70166 1661.694092 1662.201172 1668.259277 1679.048706 1688.4021 1688.79895 1697.59729 1705.061279 1708.584473 1704.852905 1702.164429 1706.195679 1710.002563 1711.78186 1712.609741 1712.741333 1712.453979 1711.903931 1711.55603 1711.1698 1711.385498 1712.446533 1712.817505 1712.759521 1712.746948 1712.541016 1711.952393 1710.672363 1706.992798 1699.147705 1691.154297 1685.09436 1674.195557 1663.057373 1653.159912 1647.731323 1643.613037 1634.317383 1621.885132 1615.233276 1608.591431 1600.634155 1589.475952 1577.403076 1568.394897 1566.357544 1572.593994 1590.838135 1600.92395 1601.655273 1606.464233 1613.644775 1619.624023 1633.618652 1647.168701 1657.881958 1665.060303 1672.349854 1681.237671 1690.188721 1700.226074 1700.592651 1688.03479 1671.766235 1653.375366 1631.49231 1608.578979 1598.016479 1595.245728 1591.652222 1591.681885 1592.166504 1593.012085 1583.178711 1568.897827 1551.003418 1535.157471 1525.453247 1518.378662 1508.724365 1496.980225 1482.278198 1469.224976 1467.518555 1474.841919 1485.807739 1497.017334 1503.715698 1505.310425 1501.633789 1494.95874 1487.998901 1481.245117 1472.353516 1462.651001 1455.401733 1448.955566 1446.577637 1457.064331 1479.369873 1494.875122 1507.470215 1520.69873 1540.998291 1554.37561 1566.479858 1584.346924 1590.422241 1576.941162 1568.36792 1562.400269 1558.34314 1562.18811 1561.715454 1556.546143 1549.873047 1553.622437 1558.879028 1563.040527 1563.069092 1561.745728 1567.87207 1573.695557 1576.196411 1573.376465 1570.809082 1568.033447 1563.968018 1559.96814 1556.986572 1555.181641 1554.026123 1552.890259 1551.182617 1548.944946 1546.074829 1541.927002 1540.760498 1539.661865 1537.621216 1534.847412 1535.123657 1533.819824 1536.026001 1538.209351 1538.996948 1538.347168 1539.280029 1541.203491 1542.637695 1543.657593 1545.813232 1548.801636 1551.947388 1554.85144 1556.650146 1559.322144 1563.98999 1569.619385 1574.760864 1589.323853 1596.940918 1608.883667 1609.703369 1609.453491 1610.078125 1609.674561 1607.404541 1598.426758 1598.386353 1601.066406 1599.350342 1592.80603 1582.566162 1572.745605 1580.790527 1594.071777 1600.798706 1603.270874 1602.995483 1599.888306 1594.296631 1593.851318 1598.872925 1599.882568 1594.460327 1576.559448 1575.348389 1582.077759 1586.177856 1588.270264 1596.060791 1609.893311 1618.083496 1624.266724 1623.961182 1607.598633 1584.275879 1571.75061 1571.882446 1575.736206 1577.956177 1575.78125 1568.039307 1555.963013 1544.319092 1536.348877 1525.162964 1515.948608 1500.866943 1485.803833 1489.691162 1493.019897 1497.426147 1500.908936 1501.637573 1497.630371 1498.694946 1504.685181 1509.978271 1514.348633 1516.978271 1521.244507 1526.755737 1531.185059 1534.427734 1535.165161 1532.234497 1521.328369 1506.298828 1497.859009 1492.46814 1491.793823 1497.465942 1512.993042 1525.807251 1541.379761 1553.57666 1560.680664 1564.390747 1564.039062 1558.349609 1553.124023 1542.279785 1533.055664 1527.175293 1523.413574 1523.66333 1524.61084 1526.740356 1527.773315 1526.876709 1524.25354 1517.107666 1506.875732 1498.95459 1488.270752 1486.744995 1497.163452 1510.403198 1529.631226 1546.477173 1559.543945 1543.880615 1526.819702 1509.497559 1497.79187 1482.726074 1475.782593 1479.703613 1491.274536 1504.063232 1518.290649 1527.027588 1536.209961 1545.309937 1555.747803 1563.637451 1560.754272 1555.02417 1546.373169 1535.476562 1529.886475 1542.782715 1559.666504 1578.934692 1575.230469 1564.117554 1546.416504 1534.62207 1522.025757 1536.220703 1550.292358 1567.34375 1576.082397 1578.771973 1585.776855 1591.940674 1597.584473 1598.859009 1589.444824 1586.537964 1583.773315 1580.183716 1574.29541 1566.456421 1560.251343 1555.755249 1548.292236 1546.226807 1543.286621 1542.174927 1549.745361 1551.208008 1551.911987 1554.148804 1556.592163 1559.201904 1561.657471 1564.816895 1569.109375 1574.55603 1580.730225 1586.337769 1588.187988 1586.651855 1581.584595 1573.699829 1575.164307 1575.561768 1576.916992 1577.016968 1567.802979 1557.444458 1557.173218 1554.195435 1549.485596 1539.757202 1529.461548 1520.923706 1513.68689 1501.060913 1487.79187 1476.13623 1475.206177 1477.077148 1471.688599 1464.248901 1459.560913 1456.02063 1453.905396 1450.339233 1442.605713 1437.545654 1432.791382 1426.856201 1420.821655 1423.139648 1425.966919 1431.03833 1441.039917 1450.302979 1445.253906 1438.92041 1432.838379 1426.362183 1424.849976 1423.321167 1422.454224 1422.932495 1434.836182 1450.465698 1457.178711 1463.056519 1466.577515 1471.141602 1476.698853 1480.063721 1483.054199 1488.107544 1497.972046 1511.192749 1516.911133 1523.341553 1526.306396 1525.449829 1519.941162 1512.717163 1512.447388 1516.922119 1517.269653 1510.738159 1495.960571 1477.953125 1454.324951 1424.324097 1408.129761 1397.685059 1388.245117 1372.712646 1358.384644 1337.157104 1321.388306 1316.104858 1337.204102 1354.006958 1366.078369 1382.550537 1395.770508 1405.924561 1412.635864 1424.858765 1444.862549 1460.753296 1488.890625 1507.799683 1522.774536 1542.744263 1552.323364 1549.928345 1538.780273 1522.164062 1509.944458 1503.164917 1503.240234 1503.648682 1500.614014 1490.553833 1481.883423 1471.31543 1460.705566 1445.316772 1433.650757 1429.630127 1429.711792 1427.489014 1429.5896 1431.561401 1433.227173 1436.218262 1441.276489 1446.864258 1452.521484 1460.948608 1476.254517 1483.311768 1486.044678 1489.002197 1505.123779 1520.93457 1534.150757 1528.241333 1516.341553 1505.960449 1496.185303 1487.232666 1489.040649 1492.700684 1493.487915 1491.347534 1488.053955 1493.244873 1498.357666 1501.543091 1504.793213 1499.842041 1504.368286 1511.089966 1514.830566 1515.956787 1514.328247 1512.808472 1506.610352 1497.812988 1490.509766 1483.365112 1474.872925 1467.61438 1460.920532 1453.099243 1450.024292 1449.55188 1450.291992 1449.95166 1447.786987 1444.175293 1439.637085 1435.034058 1436.719727 1436.866821 1441.531494 1446.078369 1443.175903 1432.876587 1425.241333 1419.984131 1417.486816 1415.926758 1413.045776 1409.013916 1403.70752 1399.019653 1394.753906 1389.805786 1389.429199 1393.099731 1397.610352 1402.975098 1405.408081 1404.974609 1401.561646 1393.96228 1395.064087 1395.918701 1392.113647 1392.73584 1393.567749 1393.253906 1392.492065 1390.483276 1387.069092 1382.958374 1379.539917 1375.625732 1371.322632 1368.877808 1365.334106 1358.121094 1353.588989 1345.101196 1332.339355 1329.283569 1330.120728 1332.151123 1340.316772 1345.405884 1349.072266 1354.096924 1361.55603 1368.267944 1375.97644 1380.048828 1382.070557 1383.018066 1382.03479 1381.503174 1381.193481 1378.347412 1376.285522 1377.888184 1379.319214 1380.602783 1382.045288 1384.123047 1383.034424 1377.909912 1375.597656 1373.933228 1372.120972 1370.727295 1370.292114 1371.036865 1371.347656 1371.035889 1370.291748 1369.162476 1367.476196 1365.418091 1364.723755 -1698.850098 1688.588867 1682.36438 1689.919678 1697.132812 1701.724487 1705.784058 1710.038086 1713.256104 1714.525269 1714.503296 1712.884644 1708.01001 1709.540161 1719.615845 1721.758789 1722.922852 1723.79895 1724.925781 1725.569702 1725.343506 1724.054443 1721.377686 1716.524658 1712.328735 1708.885498 1702.461426 1694.142212 1685.876099 1685.038086 1673.516602 1664.27063 1656.502197 1649.537109 1645.57959 1645.466309 1645.506104 1644.362183 1644.121094 1645.898804 1650.514893 1654.573364 1655.653076 1656.827515 1660.368774 1666.226929 1673.23938 1681.002197 1690.193115 1695.917725 1696.118286 1695.235107 1694.822998 1706.958984 1709.701904 1710.928589 1711.808472 1712.149658 1712.124878 1711.985962 1711.721191 1711.540039 1711.646362 1711.881592 1712.104614 1712.269531 1711.613647 1709.693359 1707.453247 1703.948608 1699.100342 1693.808105 1685.232544 1674.745117 1665.971802 1659.635132 1654.679321 1651.158447 1649.641968 1640.445557 1631.665649 1625.338745 1614.37439 1602.998291 1591.913696 1575.782471 1571.667725 1572.915771 1568.59082 1575.441528 1587.648682 1593.854492 1601.539062 1607.390137 1619.909424 1634.002808 1642.925415 1651.485352 1658.785767 1664.670288 1672.248047 1680.072876 1685.109741 1690.322266 1689.252319 1678.339844 1656.800659 1635.741333 1626.062256 1617.264038 1614.333252 1608.789062 1600.901611 1600.061646 1597.363525 1585.723877 1572.453979 1557.699951 1540.934692 1532.443848 1523.768555 1514.281006 1499.247803 1483.452148 1468.957642 1472.689209 1479.40332 1485.815186 1501.916504 1514.099976 1516.222412 1514.105591 1505.111206 1495.427368 1488.350586 1479.755493 1468.005005 1458.202271 1451.106079 1447.114624 1453.689941 1473.646118 1486.375488 1500.912354 1518.740479 1540.81665 1553.477905 1565.750732 1583.635864 1595.881226 1581.741699 1570.829834 1564.898071 1548.926025 1544.477661 1542.93811 1537.584229 1538.354004 1544.458618 1547.908813 1545.99353 1545.751099 1547.014771 1556.750977 1563.167236 1565.894897 1565.962158 1564.404419 1562.210815 1558.939819 1554.294189 1550.386841 1548.684204 1547.989502 1547.248291 1545.427856 1543.138428 1540.425537 1535.774292 1534.984863 1533.818848 1531.954834 1529.121094 1528.434326 1529.972168 1535.546997 1537.933716 1537.430542 1535.238647 1537.255127 1539.090088 1539.980713 1540.363159 1541.209961 1543.832764 1547.36438 1549.887085 1550.644897 1554.572266 1560.017212 1566.211426 1579.42749 1597.01355 1606.598511 1612.34668 1612.948364 1613.067993 1613.370605 1613.375854 1612.183228 1608.586548 1607.947388 1606.149902 1602.628052 1597.930176 1584.06311 1575.731567 1585.220947 1595.176392 1602.784424 1607.251221 1607.443604 1602.968628 1596.732544 1597.967773 1600.785889 1600.059204 1591.660645 1582.993774 1583.935791 1593.657959 1598.337402 1601.502319 1603.706421 1609.688599 1618.967896 1624.566895 1626.561523 1616.267456 1597.408813 1580.507446 1583.2323 1583.238403 1578.13916 1569.086182 1556.674316 1545.913818 1536.371704 1527.911499 1515.521118 1508.343506 1495.075806 1488.485474 1493.070068 1496.891479 1504.473511 1510.921509 1508.502808 1505.598389 1504.766113 1509.123779 1513.074219 1517.366211 1520.23584 1523.773804 1529.274292 1534.371094 1538.053955 1539.182739 1535.127563 1520.377197 1506.627075 1498.562012 1493.158936 1494.09436 1503.176147 1520.511963 1536.055542 1555.216309 1565.696411 1571.001343 1573.151245 1572.511963 1569.747559 1565.457764 1556.935913 1542.246582 1537.230469 1533.313354 1535.163696 1537.871582 1539.195557 1538.527588 1537.901855 1535.718994 1531.685181 1524.481812 1510.012329 1501.822266 1493.496704 1496.466064 1509.142334 1528.488525 1546.2771 1561.967651 1556.807861 1535.563965 1518.846069 1508.988281 1498.837402 1490.083496 1478.162598 1482.887817 1489.574585 1498.555786 1509.561768 1517.914429 1530.150513 1542.209351 1555.404175 1564.321655 1563.694824 1558.318359 1547.40918 1536.843506 1546.846313 1563.112183 1583.550293 1589.759888 1580.084229 1563.197998 1546.884888 1536.324707 1538.327271 1557.97583 1570.956055 1590.009155 1595.988281 1595.935181 1604.184082 1604.320312 1598.127441 1589.363647 1582.779907 1576.836914 1572.565186 1569.411255 1561.692383 1561.283691 1559.532349 1553.762451 1549.607178 1545.114746 1537.070923 1536.209229 1540.740845 1542.626709 1545.839844 1547.596069 1550.145142 1552.771362 1555.832275 1559.683594 1563.421265 1568.14978 1571.623047 1573.143188 1577.648438 1576.917725 1568.298096 1560.491211 1562.306152 1567.256592 1569.940308 1562.349854 1546.708252 1543.437378 1546.814819 1549.413452 1552.510132 1543.18811 1528.121338 1516.891235 1504.054321 1492.661987 1488.197632 1482.470825 1479.519409 1474.204102 1462.620239 1458.331177 1454.747681 1453.025391 1449.124512 1442.130737 1436.020874 1430.141113 1425.130493 1422.418213 1425.762695 1431.880249 1442.026733 1453.185059 1453.49707 1440.447021 1436.055054 1431.008179 1427.929321 1426.773071 1424.914551 1423.060059 1423.505371 1431.562622 1445.683594 1454.327026 1458.990967 1463.373413 1467.456177 1468.311646 1472.542114 1473.343872 1483.356812 1494.484741 1504.925659 1512.471802 1519.772339 1525.637695 1526.395142 1522.627808 1515.060425 1505.837891 1502.724121 1505.748291 1500.376709 1483.307861 1465.06958 1444.677856 1420.725464 1406.635376 1391.556641 1373.580933 1361.388306 1351.513916 1329.408325 1316.545532 1323.285889 1342.679077 1360.698242 1377.697388 1390.071045 1401.691406 1411.877319 1421.737793 1436.168579 1454.69873 1469.89917 1493.518188 1513.119263 1537.402344 1557.200684 1562.854614 1556.064819 1545.623535 1532.485962 1523.140259 1517.200806 1517.963135 1519.099365 1517.043213 1506.277466 1496.722534 1481.011108 1468.282593 1453.28418 1437.815918 1435.498047 1436.002441 1435.987061 1438.00708 1439.672607 1438.671265 1437.505859 1439.408569 1446.171997 1450.463379 1457.227051 1462.702637 1470.991821 1476.791992 1486.65564 1505.130737 1516.172852 1525.364014 1526.905884 1520.806396 1511.560059 1501.333984 1489.88916 1486.197388 1487.245605 1487.032227 1483.428223 1482.025024 1489.064697 1490.390869 1492.703003 1502.156372 1497.000122 1501.883789 1507.795288 1513.682861 1512.560303 1506.428467 1503.0 1500.730957 1493.659058 1486.21106 1479.801392 1472.398315 1465.273682 1460.976807 1456.30542 1453.782959 1453.660156 1453.86084 1453.966675 1453.642944 1452.134033 1446.465942 1439.81897 1440.061279 1440.328003 1442.314819 1443.658936 1442.634766 1439.577759 1428.170776 1418.817383 1412.409424 1404.317993 1402.483398 1401.397461 1398.184082 1394.197266 1391.800049 1394.365112 1395.962524 1399.898926 1404.776123 1407.393311 1408.404541 1405.973511 1401.133667 1401.180908 1403.036987 1401.749268 1398.648804 1396.381592 1394.711426 1393.867065 1392.589233 1389.704712 1384.983032 1381.003662 1376.472412 1371.736938 1368.947021 1367.210815 1361.365845 1354.429443 1348.139771 1340.14624 1332.236938 1340.793945 1342.450562 1340.992798 1339.46936 1340.835327 1346.809814 1352.997559 1361.678223 1369.115356 1377.663574 1381.703613 1384.536133 1386.03186 1385.640625 1385.150269 1383.970093 1381.673828 1382.161011 1383.814697 1385.563965 1387.038696 1387.558716 1388.095581 1386.485596 1381.521729 1378.861816 1378.452148 1377.546997 1376.007446 1375.083984 1375.542236 1375.673218 1374.970947 1373.938599 1372.496948 1370.690186 1368.781006 1368.108032 -1700.793579 1692.839111 1690.446655 1695.484253 1700.897827 1705.546143 1711.852783 1720.255249 1722.149536 1721.685059 1721.111206 1720.645508 1717.959839 1716.783203 1721.647461 1723.835083 1725.427734 1726.984863 1728.438354 1729.440552 1729.860718 1728.754639 1725.508789 1721.787231 1717.211792 1712.479492 1706.467285 1694.943359 1692.480713 1687.640137 1680.991577 1665.727539 1658.144775 1653.447754 1650.027954 1651.118042 1652.209961 1651.553345 1650.057007 1648.584106 1647.938232 1649.580444 1652.304199 1654.678101 1656.529175 1659.995361 1668.645386 1675.451172 1681.306152 1685.609741 1686.491089 1690.359985 1696.782104 1707.034546 1709.464111 1710.228027 1710.784302 1710.994629 1711.145752 1711.192505 1711.263794 1711.233032 1711.077393 1711.070679 1710.989746 1710.33728 1707.980957 1702.382324 1696.631958 1693.373169 1691.317871 1687.408691 1680.277222 1667.341553 1656.513672 1646.645386 1642.684448 1646.541748 1646.744995 1640.123047 1632.140137 1622.539429 1610.507202 1599.780151 1586.892334 1574.502808 1575.336182 1577.19458 1574.071045 1570.821655 1582.226196 1591.240356 1596.878296 1607.66687 1619.278564 1630.024658 1636.857666 1643.198242 1648.72998 1656.55542 1663.905396 1668.844238 1674.236938 1680.706177 1685.43811 1681.778076 1667.941895 1654.744385 1643.139648 1630.407837 1618.571533 1604.931396 1593.962769 1585.421631 1583.587769 1578.540527 1570.107178 1558.543213 1545.294312 1534.481201 1523.290527 1513.59436 1497.698975 1480.749268 1471.25293 1476.751953 1483.141846 1488.676025 1503.361572 1518.689697 1524.063354 1523.296021 1517.3479 1503.420776 1494.104004 1484.589478 1474.815552 1459.588379 1451.545166 1448.434448 1458.331909 1479.255859 1490.258667 1498.227417 1507.865112 1526.494995 1546.9823 1557.538208 1579.973877 1598.374756 1584.636108 1574.109009 1565.562988 1550.701294 1527.836792 1528.947144 1525.439331 1526.705688 1538.753052 1538.71228 1531.249756 1534.093994 1542.521973 1550.914917 1554.041748 1555.357788 1557.740967 1556.936401 1554.342896 1551.545654 1548.378906 1545.165771 1543.147461 1542.277466 1541.367065 1539.960205 1538.261719 1536.120483 1533.118896 1529.857666 1527.933594 1526.628418 1523.938599 1523.928955 1524.850464 1534.606812 1537.311035 1534.829834 1532.644165 1534.728394 1537.039185 1537.234253 1537.340088 1537.098267 1536.735352 1538.381592 1544.694702 1548.529297 1552.736206 1558.552368 1568.205933 1586.023315 1600.675293 1609.496826 1613.535767 1614.582764 1614.161865 1615.56897 1617.711914 1617.59021 1614.61084 1612.660034 1609.99353 1605.31604 1599.497681 1584.78772 1584.378052 1588.866455 1595.470093 1606.223511 1611.374756 1611.526855 1609.577881 1604.698975 1604.270508 1603.666138 1600.054688 1595.640137 1596.682617 1595.133179 1599.368408 1604.472778 1610.181641 1611.251831 1613.843262 1621.880371 1624.794922 1625.301514 1620.612183 1609.615845 1602.545166 1592.163452 1583.881348 1576.041138 1562.480591 1549.326904 1537.095825 1528.9104 1519.608765 1508.835693 1503.162964 1492.643433 1492.976562 1496.669067 1500.391602 1514.481201 1517.434082 1517.085571 1514.196411 1515.38916 1515.039185 1517.447388 1521.323608 1523.420288 1527.338867 1532.477051 1537.985229 1543.293091 1543.482544 1536.765015 1522.658813 1508.082642 1499.148438 1494.248657 1495.949585 1515.025146 1530.645386 1547.397583 1566.377197 1577.999512 1587.40564 1586.737915 1586.131592 1584.893311 1577.983032 1568.41333 1556.045898 1552.391113 1545.220581 1545.921509 1551.747314 1553.961426 1552.628906 1546.282227 1547.829468 1546.005615 1532.717163 1522.985962 1510.958252 1501.183228 1499.042114 1510.361572 1528.699097 1543.963501 1563.270874 1564.912598 1545.029419 1531.615967 1520.258179 1510.603638 1501.1604 1492.359131 1484.008545 1481.961914 1486.805542 1493.335693 1500.209839 1514.424805 1529.175171 1539.471924 1552.086548 1561.329346 1565.303589 1562.919312 1547.909302 1549.288818 1563.762817 1586.708618 1596.879517 1594.206299 1580.052368 1562.619507 1550.76355 1543.968628 1558.15979 1576.749146 1593.713013 1605.264893 1613.005249 1616.283813 1610.065674 1603.687622 1595.68457 1585.606567 1574.232788 1573.961304 1573.610229 1572.0 1569.14917 1566.100342 1562.828369 1557.595215 1552.557861 1545.627563 1535.522461 1533.625488 1533.705811 1533.97168 1536.777344 1539.165161 1541.912109 1545.556641 1549.416138 1552.227661 1554.899292 1557.972656 1562.396973 1570.167236 1571.620117 1565.404907 1553.325439 1551.73999 1556.997437 1559.236694 1555.408569 1539.144409 1526.92981 1523.541748 1536.133789 1543.92395 1546.621826 1535.621948 1523.177002 1515.382446 1503.355225 1492.399292 1483.890625 1477.383301 1465.525635 1459.721924 1454.132812 1451.022705 1449.680908 1445.37793 1439.966064 1432.141602 1426.255737 1424.10022 1423.755005 1430.180176 1439.208008 1449.526001 1453.660522 1448.191406 1438.150635 1436.742432 1436.477905 1436.456543 1435.486206 1428.797729 1424.925415 1423.603027 1425.556274 1436.755249 1447.579346 1452.979004 1455.978394 1456.576416 1458.306152 1461.284302 1468.790527 1478.069702 1486.595703 1499.162231 1510.152954 1516.45105 1522.983887 1526.317993 1525.724854 1518.124146 1507.511963 1491.354004 1488.349854 1479.246948 1465.90979 1449.738037 1431.539673 1413.727661 1403.7677 1389.555908 1370.319702 1354.717041 1335.436035 1321.220459 1316.10791 1328.392334 1343.895142 1362.335205 1379.043823 1394.547119 1407.649414 1418.661133 1433.290771 1451.944702 1465.329102 1487.790527 1501.934326 1516.378418 1534.763672 1556.863647 1570.180664 1563.560425 1553.105957 1543.572876 1542.373169 1546.351562 1548.51062 1545.903564 1538.807983 1517.483887 1505.013794 1484.231934 1471.821777 1456.436401 1443.355591 1443.054443 1444.988647 1444.717529 1447.120972 1448.839844 1447.560425 1446.24707 1449.401123 1451.136963 1451.470825 1455.779541 1461.250366 1468.978882 1478.463623 1489.807251 1504.81665 1514.311523 1517.790771 1524.252075 1524.387451 1513.699585 1502.753052 1491.381714 1485.291748 1483.278687 1475.351807 1473.802734 1474.880737 1479.67627 1481.010986 1483.571045 1490.514282 1489.02124 1491.236694 1500.30957 1512.800781 1508.477661 1499.805664 1496.10144 1494.396606 1489.656738 1482.879272 1475.903931 1467.855103 1462.281006 1459.142822 1455.99939 1454.123413 1453.69165 1453.688354 1453.746338 1453.775879 1453.383545 1451.560547 1446.913574 1443.956787 1442.766113 1442.833618 1443.075195 1442.017944 1440.403564 1434.66748 1428.302612 1418.31311 1408.592529 1401.186768 1398.21875 1394.444702 1397.406982 1402.057617 1403.028076 1400.69397 1405.758789 1411.89978 1413.55249 1412.451782 1406.387329 1402.559937 1407.303467 1407.750366 1405.00415 1401.113159 1397.428345 1394.409912 1392.818726 1391.711548 1387.859131 1382.748413 1379.711426 1373.147095 1366.217041 1365.3302 1362.769775 1353.444824 1351.72644 1343.616455 1337.013184 1346.03833 1352.115112 1351.997192 1345.500732 1344.51709 1342.477661 1346.116821 1352.764038 1361.891235 1368.934448 1376.550415 1379.918213 1387.281616 1389.141968 1389.065796 1388.191162 1387.315186 1387.489502 1388.479004 1390.850586 1392.375122 1393.289185 1393.324707 1392.748169 1391.249023 1388.688477 1385.899902 1384.394897 1382.855469 1380.759399 1379.562256 1380.157837 1380.069214 1378.831543 1377.590088 1376.289307 1374.679932 1372.503784 1370.707031 -1703.581665 1697.48938 1693.544922 1698.177979 1705.018188 1710.580933 1717.196655 1724.009155 1727.732788 1727.601562 1725.843628 1723.585938 1721.109253 1719.821289 1722.675171 1725.578491 1727.828735 1729.665161 1731.408447 1732.80603 1733.491211 1732.498657 1728.822021 1724.559692 1720.261353 1714.525757 1708.243774 1701.07666 1694.973511 1686.046997 1678.024292 1666.586426 1657.46936 1656.779907 1658.292969 1660.446289 1661.027588 1660.625122 1658.679077 1654.594849 1656.291992 1659.766113 1659.811279 1658.354858 1656.497192 1657.422607 1662.708374 1669.156494 1673.299561 1677.184448 1680.239502 1690.297607 1699.835938 1707.589478 1709.197632 1709.602295 1709.599976 1709.233398 1709.356689 1710.181519 1710.462158 1710.34729 1709.865967 1709.294434 1708.722412 1707.779419 1701.693848 1692.848877 1684.400879 1683.198242 1684.778931 1682.247437 1674.924561 1663.786865 1647.421875 1636.735107 1631.107788 1634.177612 1635.20105 1631.562866 1622.555664 1611.300659 1600.259155 1590.344604 1581.887329 1575.301636 1580.28125 1584.479858 1583.048462 1573.702759 1574.325684 1586.868652 1596.236694 1605.967651 1617.829712 1625.210327 1629.819092 1633.160034 1638.451172 1646.718506 1655.477051 1660.879761 1665.477783 1672.708618 1680.259277 1679.40625 1670.151855 1658.959229 1648.092285 1635.040405 1619.364746 1605.164917 1588.571289 1573.449463 1570.321167 1567.738525 1562.133911 1550.971558 1542.58313 1532.874512 1519.812256 1509.112427 1494.068115 1478.639893 1474.755737 1479.790894 1487.711548 1500.944336 1512.0802 1524.763794 1529.432861 1529.578247 1526.223755 1516.605713 1501.534546 1488.736816 1478.450562 1460.154785 1451.794434 1449.552979 1462.077148 1479.60376 1495.59436 1509.0625 1522.232788 1529.102905 1540.121704 1551.390503 1568.576416 1586.900635 1589.335449 1581.794434 1570.241821 1558.761719 1540.12854 1519.888306 1516.46814 1517.660278 1525.115112 1527.489258 1522.192261 1530.839478 1539.30957 1541.398804 1541.212646 1541.755005 1544.915283 1546.321289 1546.251709 1545.269409 1543.077271 1540.067993 1537.090698 1536.985474 1536.103638 1534.885986 1533.312256 1531.572998 1529.12793 1525.934937 1522.687256 1522.049683 1521.067627 1521.181519 1525.281982 1529.755371 1531.994019 1530.209961 1527.233276 1528.666626 1529.555664 1532.430298 1534.020996 1535.487793 1536.272095 1537.78833 1543.752563 1549.187134 1553.571289 1558.920044 1566.670532 1580.711426 1595.611084 1602.57312 1607.992432 1609.56604 1610.577026 1614.766113 1620.811768 1623.166382 1619.738647 1615.656494 1611.94751 1606.226318 1599.317627 1584.339478 1592.263794 1599.510742 1603.369995 1610.582397 1614.029907 1615.160645 1614.042236 1611.814941 1609.271973 1607.440308 1603.66333 1600.903076 1600.230957 1599.616699 1600.875244 1605.247559 1609.950317 1612.267212 1616.049683 1622.822876 1623.543091 1619.769531 1616.640869 1613.382812 1601.479004 1588.611938 1575.230347 1562.032593 1553.302612 1543.178589 1533.036255 1522.144287 1510.970459 1510.404419 1499.88916 1497.66394 1498.193726 1501.31543 1508.903931 1516.780029 1525.974487 1525.162964 1525.983643 1526.466187 1524.615112 1523.462402 1526.885376 1528.666626 1531.874146 1535.005615 1541.843994 1549.5 1548.37085 1536.433716 1521.446289 1509.028809 1498.566406 1495.159424 1501.656372 1522.468994 1537.190186 1557.098145 1577.366699 1590.672729 1603.134399 1604.25708 1601.298462 1600.070923 1591.522095 1579.95459 1574.312134 1570.543823 1561.895264 1560.588867 1565.411987 1566.904785 1566.451294 1563.101807 1564.215454 1559.027954 1541.751709 1530.392944 1517.222168 1507.297485 1500.705322 1510.840576 1529.761475 1543.745239 1563.86438 1573.357666 1558.006836 1543.145264 1532.053833 1522.926636 1513.358521 1501.16626 1492.05127 1490.469482 1488.747192 1487.718018 1493.562744 1500.216309 1514.32373 1525.785156 1536.869019 1543.07959 1554.059204 1564.858154 1563.259644 1554.828125 1562.368774 1584.395874 1598.501953 1601.915649 1593.495483 1575.457153 1566.248047 1558.251953 1556.893066 1570.375366 1590.498901 1603.314575 1617.88562 1626.617188 1617.679443 1604.299683 1593.786743 1584.609985 1581.42041 1581.19397 1580.062378 1578.454224 1576.079712 1572.259766 1568.140015 1563.822144 1558.661743 1552.812256 1543.290649 1534.359131 1531.759033 1524.370728 1522.635254 1525.250244 1528.430908 1531.698853 1535.198364 1538.265381 1541.275879 1543.411743 1551.982788 1557.445801 1560.491089 1559.438354 1551.272339 1542.984741 1546.763794 1549.846313 1548.227417 1531.890381 1520.141968 1512.299316 1516.027832 1526.748779 1535.193237 1537.874756 1524.499146 1512.089478 1505.378784 1495.943359 1484.946655 1475.166748 1464.517822 1458.502441 1452.661133 1447.933105 1444.55542 1440.882202 1435.716187 1428.063965 1425.438843 1424.315063 1427.70874 1435.945435 1444.417969 1451.605713 1453.267456 1448.408203 1441.967285 1441.074463 1442.728149 1443.994385 1443.714111 1438.025391 1429.247314 1424.515015 1424.719971 1426.113037 1436.603149 1443.738281 1446.20752 1445.157227 1449.082275 1455.36731 1463.532837 1472.884155 1487.637939 1496.192261 1502.456909 1510.46521 1516.628662 1523.533691 1526.780029 1519.609497 1509.081177 1490.101318 1464.974976 1454.297729 1444.796997 1431.66687 1418.787476 1408.047729 1399.054565 1385.76355 1368.030396 1350.770142 1328.519775 1316.577026 1323.512207 1341.108765 1360.959961 1374.143677 1383.781006 1396.470581 1412.386597 1424.143921 1442.578857 1458.705688 1481.513916 1498.900757 1513.856812 1526.168701 1542.009644 1562.135498 1576.233643 1569.637085 1562.972168 1555.086304 1551.970337 1551.299805 1550.400635 1547.10437 1540.527466 1524.081665 1505.844604 1487.549072 1471.854248 1460.050415 1454.014526 1456.777222 1456.721924 1455.935913 1457.753418 1457.876465 1456.363892 1455.596069 1457.828369 1459.810791 1461.53479 1460.854858 1460.738525 1473.223267 1484.750122 1501.07312 1513.219727 1510.951538 1508.146973 1512.384277 1518.561768 1511.127075 1498.589722 1493.845947 1489.778931 1489.244385 1487.219727 1482.977783 1475.991455 1473.589478 1473.286011 1476.438477 1479.894409 1480.56543 1485.799561 1500.773926 1505.367188 1502.783936 1497.737427 1491.019775 1489.691772 1486.043091 1480.069702 1472.970215 1463.561279 1459.626709 1456.321655 1453.234741 1451.400879 1452.623413 1453.200439 1453.086182 1452.919556 1452.003296 1450.536011 1447.920044 1444.911865 1443.2323 1441.991943 1441.319214 1440.703003 1439.564087 1435.506104 1429.975464 1422.06311 1412.356934 1403.400879 1397.471313 1395.861816 1405.174316 1411.77771 1412.189697 1409.347168 1413.6604 1418.295288 1417.86084 1415.85437 1407.952393 1407.690186 1415.584839 1413.014526 1406.047852 1400.499878 1392.754639 1390.135254 1389.516968 1385.957031 1380.370483 1378.610474 1375.055176 1366.56665 1365.196655 1365.494751 1364.240723 1359.933716 1356.281982 1347.497192 1344.017456 1357.841064 1360.227051 1360.09021 1353.180298 1353.510986 1356.219849 1352.629883 1352.172363 1367.393066 1376.464844 1382.463501 1389.0271 1390.162476 1391.989868 1392.293823 1391.757446 1390.977295 1391.24939 1393.0802 1396.785889 1398.965576 1399.98645 1400.437622 1400.321899 1398.853149 1396.313354 1393.397339 1390.85498 1388.885254 1387.489746 1386.322266 1385.571655 1384.631104 1382.954346 1381.024292 1379.736328 1378.194824 1375.680176 1373.084595 -1705.229004 1702.276245 1698.568848 1701.500122 1708.052246 1714.126709 1720.427002 1729.720581 1733.305786 1732.450195 1729.520386 1726.171997 1724.162354 1723.675415 1724.981445 1727.054321 1729.422852 1731.778442 1733.260742 1733.935303 1733.958984 1733.745972 1730.466187 1725.803101 1721.423462 1714.446655 1707.702026 1700.65271 1693.506958 1682.332153 1675.562988 1666.189697 1657.515259 1661.764038 1666.518433 1670.28479 1670.975464 1668.322632 1666.022339 1660.259155 1662.891479 1666.949341 1670.604492 1670.200195 1665.511597 1662.317261 1660.267212 1664.249512 1667.969482 1670.502808 1679.074463 1693.6698 1701.333618 1706.633301 1708.91333 1709.072144 1708.265503 1707.359375 1707.080933 1708.884399 1709.525513 1709.411011 1708.836426 1708.05603 1705.800171 1700.234253 1692.723755 1684.252319 1673.644043 1668.946045 1673.317017 1671.413086 1667.752075 1662.36853 1650.825562 1635.5 1623.106079 1623.013062 1623.511719 1620.062866 1613.623413 1602.027466 1590.849365 1582.848145 1578.111206 1581.10022 1587.767456 1592.789185 1592.739868 1588.312988 1576.434082 1578.568359 1588.85083 1601.366943 1610.140015 1616.774048 1620.286133 1624.343262 1635.672729 1641.03186 1644.388794 1648.617554 1657.136963 1668.203125 1674.883911 1674.150635 1665.7854 1653.688354 1643.333496 1631.055786 1617.401489 1606.056763 1588.718994 1573.820068 1561.764526 1554.869995 1548.756958 1542.447998 1536.865967 1522.494873 1512.3125 1502.688843 1492.557495 1479.558594 1478.275269 1483.396484 1489.69519 1507.425903 1518.945801 1527.074707 1534.760986 1535.063599 1531.955322 1522.464478 1508.42749 1494.776733 1477.108398 1460.536011 1452.930298 1450.978271 1463.516846 1476.764404 1495.580811 1512.726196 1534.751831 1535.855469 1535.845337 1544.893066 1554.768677 1570.011963 1588.388306 1588.820557 1570.181274 1558.392578 1547.068604 1525.762329 1508.907593 1509.023071 1513.225464 1511.909546 1515.706177 1526.763184 1531.269531 1528.832642 1528.407104 1532.080444 1533.890381 1535.317871 1538.743896 1539.260376 1539.102417 1536.448364 1534.981567 1534.891113 1532.418823 1529.210693 1528.172363 1527.571289 1526.232056 1523.910156 1518.659058 1517.226929 1516.924194 1518.21936 1522.422241 1525.31189 1526.529053 1525.155396 1523.128784 1523.486084 1524.760498 1530.809448 1535.974731 1538.092773 1538.404541 1540.070068 1544.508057 1548.891357 1552.78064 1558.179932 1564.515869 1571.924316 1584.126465 1589.981812 1591.777222 1595.49353 1599.11792 1608.85498 1619.295288 1624.388794 1622.134888 1617.361938 1612.341553 1605.397949 1597.434448 1592.4729 1600.135254 1606.814453 1610.583008 1614.266968 1616.906982 1620.164062 1622.006348 1618.450073 1613.096069 1610.337646 1605.835327 1602.121948 1598.94397 1598.17749 1598.963013 1599.703369 1601.46521 1606.568726 1610.332642 1615.14856 1613.796631 1609.467651 1609.687256 1611.029175 1601.223999 1583.260376 1571.102417 1558.692993 1546.871338 1536.847778 1530.875366 1525.147583 1514.759155 1507.303223 1503.029663 1506.032959 1509.210815 1512.003052 1518.207886 1521.695679 1528.19519 1532.569458 1536.107422 1537.950562 1535.081299 1531.531372 1533.672729 1536.53418 1537.237793 1539.910645 1547.440186 1551.264893 1549.600342 1535.739502 1519.643066 1505.896973 1497.898926 1496.296875 1510.027344 1526.388428 1542.029419 1563.704224 1579.85144 1592.876465 1609.918701 1616.860596 1618.771729 1616.219727 1603.384521 1593.034668 1594.319824 1584.300293 1574.39856 1572.069458 1577.608276 1579.796875 1579.68811 1578.625122 1580.24707 1573.38916 1557.543213 1538.519653 1523.041748 1516.35022 1514.540771 1511.439087 1531.206787 1546.02002 1563.437012 1574.834351 1567.659668 1553.289551 1543.537231 1534.1875 1525.385498 1510.771973 1499.19873 1498.578369 1497.706299 1495.322754 1494.848022 1495.37854 1497.042847 1507.299194 1516.908813 1524.590088 1533.444336 1555.235474 1570.449707 1568.987793 1562.234985 1575.545898 1591.079956 1599.930664 1601.047607 1591.64624 1577.846924 1572.312012 1565.842163 1565.87915 1581.617798 1597.980835 1611.985352 1625.973145 1621.305908 1601.755981 1594.358398 1587.666382 1589.728516 1589.874634 1587.702759 1585.03186 1581.789673 1577.616333 1572.867188 1568.338989 1563.165039 1556.700806 1549.63855 1541.012085 1537.838501 1534.169922 1526.393555 1521.591431 1519.909668 1520.766235 1523.502075 1526.530029 1528.100464 1530.226562 1537.12854 1542.634399 1547.141846 1551.111572 1547.921387 1538.285278 1528.937134 1535.736816 1533.437378 1524.437866 1510.259888 1498.876343 1504.786133 1513.069946 1516.819946 1523.951782 1519.894531 1507.049194 1497.075684 1492.250488 1488.19397 1479.388428 1464.815674 1457.80188 1452.549927 1445.212402 1440.037964 1436.943604 1431.477783 1426.404175 1426.536255 1432.644165 1439.513062 1444.983887 1451.588013 1454.701294 1454.979492 1453.01123 1449.585938 1451.167358 1450.170776 1452.215088 1451.742188 1444.679321 1435.175903 1427.116577 1429.234985 1428.487549 1426.308838 1435.200073 1438.131348 1437.419189 1443.232666 1451.787231 1461.16687 1470.036499 1478.922607 1486.029907 1497.410522 1505.010864 1510.205933 1515.314697 1520.901855 1515.283691 1504.551392 1486.758789 1462.150879 1431.782349 1424.411621 1418.396484 1409.136841 1401.706421 1391.030273 1379.894165 1361.338989 1341.175537 1323.664429 1314.895996 1331.149902 1354.346558 1371.873169 1384.358643 1393.416626 1402.897827 1415.245728 1427.779541 1447.133057 1466.205078 1489.789551 1505.19812 1521.943481 1545.960205 1564.333862 1576.427124 1574.824951 1569.179932 1562.397217 1556.90564 1550.854248 1548.681396 1546.17627 1541.848877 1537.118042 1519.737671 1500.961792 1485.243042 1472.637329 1466.801636 1471.159912 1471.259888 1469.078125 1469.054199 1472.459717 1469.891724 1464.290283 1466.402832 1471.878906 1475.943848 1477.084229 1475.440918 1471.726196 1474.418335 1484.209473 1495.068726 1499.116821 1498.582153 1500.369995 1510.584839 1515.112061 1513.043457 1505.971558 1499.479126 1500.064209 1499.574829 1496.841797 1491.818481 1486.325806 1477.390503 1470.247192 1469.63147 1472.501587 1473.294678 1491.155762 1503.185547 1501.494263 1496.216553 1490.022949 1485.711548 1483.623779 1479.065918 1475.334717 1468.788452 1462.072754 1456.362793 1452.685181 1450.299316 1449.324219 1450.418945 1451.138916 1451.540161 1451.179321 1450.077393 1448.146729 1446.026978 1443.842407 1441.632568 1439.216919 1437.854614 1437.012695 1435.461792 1432.808472 1429.224487 1422.539795 1412.862915 1404.496094 1398.389893 1398.098145 1409.84729 1418.408081 1419.621826 1417.616943 1420.547241 1424.803711 1421.374512 1415.982056 1412.618164 1413.92749 1415.807129 1414.057861 1407.33252 1402.828735 1392.598633 1391.342407 1390.611816 1387.516357 1379.442383 1378.097778 1375.210327 1371.428711 1375.143677 1376.917114 1371.032227 1365.429199 1358.333984 1348.797363 1358.026367 1363.637451 1367.549561 1368.078003 1360.681519 1363.342041 1364.60791 1362.097046 1358.886597 1366.936523 1380.608032 1389.110229 1392.07605 1393.094604 1394.284912 1395.155518 1395.533691 1394.980225 1395.869873 1398.601318 1403.471313 1407.760376 1413.888672 1413.410156 1411.914551 1409.357788 1406.575684 1403.984253 1400.839233 1397.809082 1394.896484 1392.852661 1391.268921 1389.448486 1387.220093 1384.449829 1382.376587 1380.298218 1377.757202 1374.682129 -1713.70752 1709.388794 1707.833496 1706.527222 1710.897095 1718.869873 1724.096436 1731.399536 1732.802856 1732.690186 1731.022339 1727.871826 1726.26123 1725.781616 1726.4552 1728.044922 1730.322632 1732.499634 1733.481323 1734.004272 1734.189697 1733.794312 1729.707397 1724.308716 1719.469604 1712.100464 1704.99231 1697.575317 1687.254272 1678.938232 1673.088745 1667.086792 1665.688477 1671.32373 1675.479736 1678.75061 1679.889526 1677.651001 1675.182495 1672.050781 1669.140015 1673.408813 1676.396362 1677.007202 1674.051636 1669.624634 1664.881836 1662.487183 1665.890625 1670.720581 1680.297852 1693.838745 1700.411133 1705.034912 1708.277466 1708.359619 1707.339233 1705.332886 1705.97168 1708.205566 1708.752563 1708.744995 1708.177734 1703.00769 1695.554077 1689.86145 1681.635376 1674.113525 1666.02417 1659.883179 1657.034302 1659.771729 1659.367798 1658.998779 1652.778198 1642.502563 1625.87207 1611.872803 1609.549805 1608.050293 1599.56958 1591.598511 1582.192383 1581.395508 1589.359619 1592.391724 1597.93457 1600.494629 1600.455444 1598.396606 1594.14917 1585.845581 1581.616943 1593.858032 1600.00354 1607.396851 1617.504639 1625.336914 1632.365967 1635.690796 1637.543335 1645.441284 1659.881836 1667.883423 1672.813232 1673.116333 1657.84021 1643.673462 1631.325195 1617.062378 1607.986816 1596.138184 1581.018188 1570.576416 1562.727173 1550.719727 1539.992798 1533.908813 1525.588623 1518.551636 1509.683716 1502.765869 1493.180176 1481.661011 1483.487305 1489.317871 1492.868652 1508.253662 1520.362915 1531.719604 1541.839844 1544.444336 1538.590332 1524.560547 1506.952881 1491.171387 1474.256958 1460.768433 1455.633423 1452.618164 1462.40979 1472.610474 1491.607788 1507.139038 1532.092163 1536.466919 1523.500366 1529.717773 1539.412598 1558.007324 1581.256592 1588.194214 1563.405884 1550.716064 1536.46106 1524.830444 1507.77356 1500.386475 1503.667969 1506.592041 1512.439453 1518.192505 1517.235718 1513.559082 1520.705566 1524.672485 1526.86731 1532.81311 1535.169678 1537.016846 1538.896118 1537.927124 1537.368164 1538.148804 1536.150879 1524.092041 1523.376831 1523.068237 1520.526978 1515.940552 1512.303589 1513.002319 1513.276367 1513.473022 1517.173218 1519.696411 1519.626099 1519.646606 1523.128662 1527.240723 1532.705322 1537.859497 1538.943848 1540.105835 1540.775391 1542.149414 1544.583618 1547.571655 1550.949463 1555.881592 1561.963623 1566.411499 1571.313965 1574.113647 1582.789917 1589.474243 1595.745117 1603.671143 1613.572754 1624.361328 1622.564331 1617.893921 1612.338257 1605.448364 1596.678223 1595.675415 1609.0896 1612.571167 1614.9729 1617.814941 1620.969604 1623.28772 1623.654419 1619.238159 1613.490601 1608.887695 1605.234253 1601.370605 1598.19104 1594.559937 1593.417114 1593.497681 1594.78064 1599.195801 1602.301758 1604.067139 1601.311035 1596.809204 1601.462769 1603.067993 1598.646729 1582.782227 1569.738037 1555.797852 1547.129517 1539.654175 1535.520386 1524.544556 1512.30249 1512.417603 1509.578247 1512.563354 1522.759277 1526.638184 1527.280029 1526.807129 1532.709106 1537.444092 1539.755737 1540.207397 1538.782471 1537.572632 1539.21167 1542.932007 1547.079102 1550.38562 1552.448486 1553.328857 1548.992676 1532.597046 1518.22644 1500.131958 1497.624023 1502.823364 1516.59668 1530.457275 1544.608032 1562.509521 1578.342896 1590.100708 1605.683838 1620.797485 1629.874146 1629.544556 1616.91272 1609.135498 1614.191528 1603.625732 1587.27417 1589.951538 1595.322998 1598.335449 1601.485352 1601.722046 1592.43103 1580.026367 1563.516602 1544.379028 1532.196289 1528.025391 1528.122437 1522.684326 1533.171265 1549.701538 1564.718872 1580.857056 1579.434692 1565.503418 1553.188599 1543.240723 1534.253662 1517.092651 1507.3479 1507.567505 1508.239868 1506.442505 1505.817139 1507.799194 1506.906738 1503.468506 1508.465576 1516.673584 1522.619629 1539.212524 1560.948608 1574.006226 1574.821533 1572.233032 1579.614258 1590.463379 1600.412231 1601.629272 1595.750854 1587.003296 1582.546021 1579.481201 1579.987793 1592.305664 1608.312866 1625.109131 1621.810425 1612.091919 1603.428345 1600.502686 1604.059204 1602.020996 1598.525269 1595.188721 1588.940796 1583.154907 1577.485474 1572.473999 1566.462158 1559.734497 1554.099854 1549.2229 1547.208862 1542.594238 1535.628662 1526.952393 1519.994507 1511.10022 1514.450684 1517.317505 1518.022217 1520.514893 1524.823242 1528.947876 1531.694214 1533.565063 1534.166748 1528.220947 1515.983032 1518.362183 1520.375122 1515.116089 1505.897095 1490.45166 1494.736206 1501.505249 1504.487793 1507.708008 1510.101196 1500.351562 1488.71814 1483.79541 1476.026489 1471.348999 1461.082886 1455.58313 1450.844604 1439.139771 1436.668091 1434.143921 1430.108887 1428.098267 1433.36853 1441.809448 1449.738159 1457.343628 1462.942993 1461.536987 1459.328979 1457.770386 1457.511719 1458.348145 1458.360107 1457.407227 1455.458252 1452.163208 1441.690552 1434.740845 1434.084106 1436.199463 1435.826172 1435.609863 1436.558716 1437.219482 1446.455444 1455.720947 1464.221069 1467.544556 1475.290649 1484.295044 1493.472656 1501.247681 1506.078979 1510.431274 1511.728149 1506.943237 1495.030762 1479.511353 1456.362915 1427.993896 1411.43103 1401.688599 1396.597534 1392.491699 1382.86853 1368.193237 1350.352051 1328.583618 1320.343506 1314.888062 1335.862427 1357.321777 1378.306274 1389.77478 1399.802124 1411.679077 1421.997925 1432.191528 1448.180664 1470.390015 1494.306152 1509.291016 1531.001465 1553.010986 1571.091187 1574.149048 1571.76355 1566.602173 1560.586914 1554.566772 1548.558472 1545.150757 1541.278809 1536.841919 1531.21814 1508.575073 1491.294922 1483.065063 1481.89856 1486.824951 1489.207764 1488.377686 1483.830688 1483.148438 1486.991943 1485.285156 1481.314697 1487.949585 1492.371582 1492.968262 1491.930176 1488.692749 1483.84314 1479.760742 1485.620361 1487.419434 1497.604736 1503.466797 1512.295898 1520.292969 1522.53186 1519.199463 1513.841919 1511.801636 1512.263062 1507.086792 1502.66626 1496.324829 1489.306519 1480.964966 1472.286865 1462.491455 1463.282959 1475.369385 1490.703003 1499.087891 1494.264526 1486.65332 1484.590454 1482.450928 1479.35791 1474.321411 1467.167969 1463.277466 1457.348267 1452.458008 1449.346924 1446.711426 1445.779297 1446.871704 1448.098267 1448.591553 1448.561279 1447.645752 1445.940552 1443.814697 1441.888184 1439.94397 1436.985474 1433.111816 1430.55481 1429.240112 1428.740601 1427.216064 1422.586548 1415.636475 1405.023682 1398.950439 1399.463745 1413.365356 1426.386108 1427.057617 1425.495972 1428.050171 1428.025513 1421.987305 1415.134521 1413.595093 1414.511353 1415.575684 1414.522583 1409.46936 1403.578491 1402.919312 1400.887817 1396.715576 1393.250488 1388.579468 1382.285156 1376.911865 1381.046387 1385.015137 1383.071045 1377.408203 1368.447754 1359.726196 1352.594971 1363.358887 1370.026489 1374.25647 1373.822144 1368.438232 1371.205444 1372.656982 1371.198608 1368.518921 1366.074219 1379.721924 1389.348877 1392.322876 1394.285156 1396.332397 1398.123047 1399.165649 1399.244263 1399.202515 1400.334229 1403.877319 1412.343384 1416.963379 1416.798218 1416.524292 1417.505859 1416.944824 1416.929688 1414.520386 1406.824463 1402.874023 1399.676025 1396.595337 1393.553589 1390.628052 1387.4104 1383.988525 1381.142334 1378.500854 1375.816528 -1720.273193 1715.220581 1711.876953 1711.192505 1716.200317 1721.817261 1724.947144 1728.546509 1731.012329 1731.143188 1730.258423 1728.157349 1726.825806 1726.373047 1726.677612 1727.897949 1730.31958 1731.565552 1733.150513 1733.701172 1733.534546 1731.508423 1726.946289 1721.539062 1714.632935 1706.725586 1700.13916 1693.103638 1683.989014 1676.921021 1671.053467 1669.669067 1674.281128 1679.825073 1684.505249 1689.005615 1691.405396 1689.185913 1683.684204 1679.035522 1676.679688 1679.485107 1682.668457 1683.978882 1682.686279 1676.275391 1671.267334 1666.696899 1664.806396 1670.618286 1678.714722 1691.555786 1697.648682 1700.435913 1704.783203 1703.157715 1700.953491 1701.679688 1704.414795 1707.640625 1708.209961 1708.18689 1706.116821 1693.809204 1684.546143 1677.337769 1669.616699 1664.224121 1658.768188 1653.390259 1650.392822 1645.615356 1648.212524 1652.522339 1649.815796 1642.716797 1628.890137 1613.764526 1599.578979 1593.95166 1590.140259 1584.925537 1585.015137 1592.82019 1596.929443 1598.377441 1602.854492 1605.814697 1607.213257 1605.960083 1603.151978 1598.223022 1580.663452 1587.663208 1596.920166 1610.860962 1617.862915 1623.938477 1626.027222 1630.276245 1635.450317 1650.481445 1661.974731 1666.681885 1669.90564 1666.699585 1653.081421 1630.87793 1615.211426 1597.40918 1588.016602 1580.329224 1573.207397 1564.105225 1559.124023 1553.427979 1549.506104 1537.575073 1529.313721 1520.002075 1509.793335 1502.080933 1491.503296 1482.371948 1489.707153 1497.872681 1506.581055 1511.403931 1520.953735 1532.677124 1549.850708 1552.427368 1545.049438 1526.256836 1511.899658 1492.485229 1476.927002 1462.719849 1456.500244 1453.403076 1460.057861 1468.565552 1481.775757 1500.790527 1520.721436 1530.310303 1518.450439 1513.616211 1528.421875 1550.038086 1568.27002 1568.189575 1548.908813 1533.255859 1527.494751 1516.829712 1505.711304 1497.967773 1498.336914 1501.104126 1504.862183 1507.82605 1509.740479 1513.488037 1519.165527 1523.025269 1527.889282 1534.150269 1537.974121 1541.820923 1544.400635 1545.087158 1546.680298 1548.774292 1546.285889 1527.451172 1519.758911 1515.628174 1511.811035 1507.977295 1510.204468 1510.858154 1512.828857 1514.668335 1518.299316 1519.354004 1518.959839 1522.497192 1527.561157 1534.152344 1537.982422 1539.533691 1540.697998 1541.85022 1542.786499 1543.75 1545.019043 1546.510498 1548.333008 1551.788086 1557.135132 1559.686523 1568.416016 1576.450195 1587.27478 1591.194336 1598.485596 1604.363281 1612.869751 1621.195068 1622.834717 1618.591553 1613.842163 1608.445923 1597.814453 1608.688721 1613.445801 1616.242188 1618.300415 1620.669189 1623.375854 1624.100098 1621.783447 1617.119629 1612.617065 1608.091431 1603.975342 1600.531372 1597.378174 1590.845215 1586.843262 1586.369141 1586.474609 1589.635132 1591.766602 1590.947754 1586.790649 1582.146973 1590.37439 1594.490967 1592.123779 1579.444946 1568.24646 1563.523193 1555.746948 1542.770874 1530.73584 1520.154663 1518.449463 1517.190308 1515.838745 1525.502075 1530.820068 1536.633423 1535.192505 1534.345703 1536.231689 1539.358032 1542.070435 1541.236572 1538.424072 1538.32019 1540.493164 1544.807373 1549.903076 1556.639404 1557.335205 1553.623047 1542.78772 1528.096924 1514.641357 1499.03833 1503.772949 1512.760986 1525.32312 1535.030762 1546.681885 1560.888672 1573.347168 1587.909912 1600.338867 1617.819092 1633.325928 1644.759277 1632.250977 1629.220703 1628.611084 1616.626587 1606.247681 1606.869019 1615.294434 1620.091187 1624.677002 1623.734741 1603.587524 1583.895264 1565.733643 1552.991455 1540.476318 1539.785522 1540.139404 1535.067017 1535.601318 1553.180176 1566.09021 1584.249023 1595.337769 1578.186035 1560.057007 1547.921021 1536.129272 1521.465698 1515.71106 1519.911377 1523.59436 1522.824951 1523.431152 1528.669312 1524.512695 1516.949341 1508.912476 1514.14856 1520.634155 1528.079346 1544.519409 1563.832886 1574.886353 1584.103149 1589.495728 1597.300293 1602.031006 1607.493896 1609.892944 1605.998413 1602.602173 1599.536987 1597.864502 1596.75415 1613.060181 1624.785767 1622.894775 1617.532349 1614.015259 1614.578369 1613.981445 1610.943237 1608.123535 1602.846924 1597.75647 1587.724731 1581.0 1575.770508 1570.200195 1563.942871 1561.232788 1558.835815 1555.366943 1550.655273 1543.471558 1534.781616 1528.124634 1517.761963 1509.69104 1509.938965 1509.997314 1509.644653 1514.500244 1517.244507 1519.513428 1519.549316 1516.028442 1511.0448 1505.334473 1506.545776 1509.296387 1507.765747 1503.060669 1493.095947 1483.734985 1489.409058 1492.850586 1497.147217 1500.930054 1498.591187 1490.123535 1480.873901 1471.248901 1462.610107 1454.865112 1451.096436 1440.206055 1436.938599 1435.021973 1432.427734 1430.55249 1432.704346 1438.298706 1447.804565 1456.417603 1468.824219 1477.505005 1465.704468 1461.577759 1462.827148 1465.493286 1465.966431 1464.963135 1461.74231 1458.632324 1454.737671 1444.261353 1437.169678 1438.463135 1442.365356 1442.998779 1441.880127 1440.08667 1437.401123 1447.619385 1456.797852 1464.884521 1470.08667 1477.178223 1484.095093 1491.834961 1498.1875 1504.146484 1506.998169 1502.839722 1494.817017 1479.827637 1462.645142 1439.220703 1422.817261 1411.890747 1399.893188 1383.058838 1371.583374 1366.497925 1354.099121 1332.028564 1324.61731 1318.5354 1321.748047 1351.825195 1369.23938 1380.036011 1391.412231 1402.957642 1415.005127 1424.778198 1444.069946 1459.669556 1474.161499 1495.684448 1513.396484 1536.218262 1558.641113 1569.418945 1571.246216 1568.354858 1563.524536 1558.831909 1552.640137 1547.355103 1542.826416 1537.826416 1532.653442 1524.565186 1499.34436 1498.467651 1503.912964 1505.189331 1506.854736 1509.442871 1510.079712 1505.787476 1502.989624 1506.811035 1506.061523 1501.054199 1503.628418 1505.317627 1504.253296 1502.806274 1501.031616 1494.753662 1487.378662 1492.254395 1496.816895 1505.804688 1514.260254 1523.839722 1527.597168 1526.311523 1523.80835 1518.898438 1515.788208 1511.813232 1503.462524 1498.50061 1492.917847 1486.182251 1481.012817 1472.363037 1463.396606 1460.730957 1471.749268 1483.188599 1489.032715 1484.997437 1477.679688 1478.926025 1479.188354 1478.223999 1474.893311 1464.535034 1457.433105 1450.758423 1448.903076 1445.362061 1440.18689 1440.52417 1443.505371 1444.942871 1445.636597 1445.54834 1444.911133 1443.930664 1442.17627 1439.570679 1437.104004 1432.840576 1428.030518 1424.668823 1423.294312 1422.976196 1420.557861 1417.778198 1413.736206 1406.317505 1399.340454 1401.059937 1414.942627 1429.866577 1435.708618 1433.881226 1430.407349 1427.093384 1421.982788 1415.56604 1414.387695 1414.84729 1415.971436 1414.935913 1413.028564 1410.175903 1407.041016 1404.276001 1402.002563 1396.419678 1391.54834 1386.467285 1385.521118 1391.16748 1392.075317 1386.579834 1378.546875 1369.598633 1359.889893 1359.90686 1371.234741 1379.246948 1384.506592 1382.302368 1377.168579 1379.980713 1381.078003 1379.460327 1377.659668 1375.089233 1376.838501 1386.388428 1391.978516 1395.077637 1398.100708 1400.699097 1402.718994 1402.846924 1401.912109 1401.619385 1401.966553 1406.234985 1410.23938 1411.405029 1412.681763 1414.057495 1414.325684 1414.562256 1413.943604 1410.571045 1406.482666 1404.465576 1401.536255 1396.928711 1392.844971 1388.69043 1384.651978 1381.160889 1378.216919 1376.026489 -1721.352783 1716.974365 1713.17041 1712.607544 1717.738281 1720.890259 1722.626709 1724.76416 1727.509766 1728.594482 1728.200073 1727.268433 1726.421021 1725.820923 1725.735596 1726.223999 1727.425415 1728.967407 1730.551758 1731.026978 1730.1427 1727.195312 1722.817505 1717.399902 1708.960815 1701.659424 1695.070068 1689.326904 1682.706421 1674.520264 1669.644409 1674.734009 1681.989502 1687.030884 1693.063721 1697.331909 1698.372314 1697.535767 1693.964111 1685.840698 1682.474854 1686.728638 1689.576294 1688.086304 1685.923584 1681.334229 1675.015625 1671.8396 1667.183594 1668.35376 1674.709473 1683.005249 1690.928467 1694.236938 1692.806885 1691.453125 1694.111816 1695.926758 1701.53833 1705.784058 1707.137085 1705.437988 1697.770508 1691.077637 1683.138916 1671.917847 1666.127197 1657.187866 1646.733398 1644.909302 1641.455566 1636.937134 1636.884155 1643.171875 1645.030396 1636.531738 1625.471802 1610.118286 1595.709595 1586.230469 1584.189331 1586.157715 1596.545166 1602.526001 1604.585938 1605.160034 1607.611938 1611.311646 1614.958862 1614.713989 1609.973511 1604.539185 1589.276978 1584.358521 1596.614136 1607.016113 1611.691528 1615.576172 1620.359375 1631.80957 1642.242798 1654.542236 1662.536377 1664.071777 1663.099487 1658.467285 1649.611572 1631.85083 1615.429565 1600.084106 1577.456177 1570.238281 1563.411743 1555.180298 1546.973999 1544.333618 1544.322632 1539.13623 1528.133545 1518.196655 1507.786499 1497.253418 1486.246826 1487.044067 1493.692993 1507.148682 1518.376343 1524.206055 1525.472534 1534.92395 1548.426025 1560.935303 1549.813965 1526.461304 1514.492798 1499.548584 1483.998657 1469.937744 1459.610107 1453.444458 1457.672974 1462.332397 1473.757446 1493.525513 1512.947144 1528.221191 1512.621704 1508.028198 1516.904541 1534.932373 1540.76709 1540.074463 1528.820923 1515.959473 1511.184326 1506.122803 1500.295776 1494.787842 1493.766724 1496.490234 1498.187988 1501.962158 1511.205566 1519.705322 1526.384766 1533.140625 1538.618286 1541.71582 1546.683105 1548.986328 1549.903564 1550.931885 1551.379883 1551.133423 1540.867065 1523.87854 1515.564087 1510.133423 1507.211426 1517.211914 1527.678467 1529.086548 1525.617554 1523.648438 1527.878296 1526.980347 1523.129517 1524.165039 1528.026123 1535.834595 1538.69397 1540.342651 1541.97229 1543.86438 1544.800903 1545.286255 1545.752441 1546.610718 1547.247803 1548.239136 1551.783325 1559.777954 1569.245972 1579.841919 1587.283325 1590.181396 1595.697754 1601.78186 1609.691772 1616.012573 1620.757568 1619.74353 1616.392334 1610.832886 1608.327393 1612.993042 1616.617798 1619.282593 1621.682617 1622.869873 1624.101318 1622.278687 1616.89978 1612.881104 1609.719849 1604.938232 1601.083252 1597.584473 1590.151367 1585.494751 1582.188599 1575.119995 1573.954712 1574.103394 1574.308594 1569.588623 1564.157471 1561.519653 1573.029541 1583.144775 1585.003296 1579.110229 1575.434082 1565.629883 1551.015625 1537.480347 1526.967163 1527.092896 1522.990112 1521.375122 1523.084961 1529.513672 1535.626099 1542.351318 1544.468262 1543.614014 1545.333496 1546.199829 1545.637207 1542.44873 1537.103638 1536.159302 1537.201172 1538.454468 1545.979004 1557.11853 1555.913818 1544.893555 1531.813477 1521.129639 1507.260376 1504.636475 1511.998047 1523.570557 1533.849609 1544.308716 1555.800171 1567.635254 1578.375366 1589.818848 1602.71582 1620.587646 1636.981445 1650.710815 1648.143799 1644.09314 1643.790894 1634.327026 1632.227173 1627.1427 1638.587891 1642.893921 1641.323608 1628.653809 1603.181641 1585.818359 1574.463989 1560.501221 1547.240356 1549.953491 1553.769409 1552.45459 1543.313599 1556.172974 1569.193848 1585.876953 1597.363892 1582.316162 1565.15918 1553.298096 1541.847168 1528.83313 1527.36792 1530.959473 1535.886719 1539.297852 1537.290283 1537.71936 1537.31897 1529.981079 1521.186768 1515.353394 1522.19812 1524.726318 1534.94812 1550.243286 1565.719849 1582.663452 1594.223877 1599.95874 1603.604492 1608.745728 1612.033813 1613.978149 1615.022339 1615.900146 1616.257935 1614.873901 1618.084717 1623.616333 1618.102051 1609.95813 1613.293091 1613.044067 1611.517578 1611.820923 1611.281494 1605.443726 1599.564819 1589.250244 1583.088989 1578.741699 1574.384277 1573.602783 1569.578003 1565.917603 1562.030396 1555.805298 1550.363403 1543.531738 1537.376343 1528.774292 1516.99353 1501.10022 1503.143799 1500.494019 1503.223267 1506.342041 1507.098022 1506.134277 1504.270386 1501.059814 1495.934326 1496.266968 1499.284912 1499.667847 1496.82312 1490.13623 1477.413818 1474.335693 1477.870117 1482.144409 1487.403809 1487.566895 1489.18689 1479.882812 1467.768188 1456.356323 1450.59729 1451.072998 1437.944946 1436.856201 1434.922852 1434.557373 1434.750244 1436.152222 1440.305054 1451.391968 1460.351196 1469.401245 1474.421387 1468.822021 1466.031006 1468.113892 1470.178101 1470.743896 1469.23999 1465.623657 1461.387573 1454.819702 1446.605713 1438.892456 1440.77771 1446.877808 1450.070435 1450.939941 1449.528687 1442.639282 1444.563354 1453.061768 1462.571289 1468.287109 1475.535278 1481.587402 1489.636963 1497.131592 1503.210815 1506.328125 1504.96228 1502.243896 1485.16687 1462.886597 1434.103271 1420.375977 1411.373047 1403.233032 1388.836548 1364.298828 1346.741211 1332.362671 1329.351196 1322.227905 1321.273804 1342.155762 1360.428467 1378.978638 1387.311646 1394.338135 1402.953247 1415.809814 1424.905029 1451.660522 1471.657837 1493.603394 1505.707642 1521.791382 1540.251099 1560.856812 1571.956055 1571.581787 1565.96106 1560.14209 1554.959473 1550.203979 1545.285278 1540.628418 1536.865967 1530.760254 1524.808472 1514.754028 1518.409668 1522.861694 1524.208862 1525.219238 1526.86731 1525.021973 1521.074951 1517.209717 1520.986938 1521.974487 1518.695557 1517.275879 1517.37085 1516.105835 1513.310547 1510.439697 1506.57373 1499.474854 1503.736328 1504.989136 1512.994141 1521.859253 1527.739624 1528.698853 1527.30603 1524.301147 1520.974365 1517.093994 1512.883545 1505.866211 1501.866333 1496.347778 1489.819214 1479.390991 1471.885986 1463.162842 1458.302368 1464.13501 1472.900879 1475.387817 1471.731201 1471.410156 1473.579956 1475.07666 1474.952148 1470.664917 1466.157104 1458.178589 1450.069214 1445.865356 1442.603149 1438.688965 1438.326172 1440.552734 1442.293823 1442.818237 1442.758179 1442.716919 1441.925293 1440.421997 1437.136963 1432.940308 1428.980347 1425.385498 1420.02002 1415.945068 1415.415405 1413.301758 1411.318604 1407.322021 1402.214478 1398.692261 1402.175415 1413.945801 1429.56897 1440.748657 1437.196411 1430.692871 1426.460938 1423.060181 1419.260986 1416.556152 1416.992676 1416.915039 1416.397217 1415.678101 1412.780029 1408.582031 1405.832886 1403.79248 1398.305054 1391.52417 1389.778198 1392.158936 1392.827637 1392.161133 1386.116089 1377.137451 1369.296021 1360.019043 1365.275879 1377.047852 1385.825317 1393.017822 1391.917725 1390.444092 1392.3125 1391.572021 1390.365601 1387.878784 1385.82666 1382.203125 1386.338745 1390.704224 1395.225586 1399.260376 1402.169922 1403.723389 1404.019287 1403.673828 1403.352905 1402.332275 1401.786499 1401.904053 1403.816895 1407.480957 1409.246948 1410.125 1410.265869 1409.728516 1408.099487 1406.327881 1405.362427 1403.775879 1399.133057 1393.769043 1389.047607 1385.162354 1380.939697 1377.718506 1376.109253 -1721.21582 1716.73584 1711.428101 1708.551514 1709.282593 1714.840698 1718.225342 1721.442505 1724.646484 1725.960938 1726.018921 1725.866699 1725.302856 1724.68811 1723.969971 1722.897217 1722.458862 1724.121704 1726.228882 1726.580444 1725.274292 1722.886719 1718.870605 1711.871094 1703.788818 1695.72229 1691.279907 1686.45874 1681.024902 1672.396606 1674.374023 1681.623779 1687.047729 1692.16272 1697.447144 1700.671387 1701.671753 1701.110229 1698.023193 1694.073242 1693.110596 1696.31665 1695.681152 1691.377319 1685.946655 1681.172974 1677.134155 1674.186646 1670.994507 1669.453857 1669.058472 1672.91748 1679.067871 1679.848755 1681.69104 1682.177734 1688.158691 1695.405396 1700.064331 1701.806519 1700.797119 1697.470093 1692.29834 1688.377197 1684.892456 1679.932861 1670.678711 1662.140869 1653.988037 1646.392578 1636.074707 1630.195557 1621.074707 1628.194092 1630.255249 1626.800537 1617.854858 1604.344482 1590.119751 1588.272827 1592.318115 1599.582764 1607.835938 1613.190674 1613.021118 1608.422852 1613.497559 1620.958008 1625.199585 1624.980469 1618.804077 1611.251587 1599.873535 1584.803589 1590.883911 1600.288818 1607.10376 1612.010986 1623.348999 1635.414062 1644.073486 1655.452759 1662.080078 1661.029419 1656.96814 1652.48938 1645.063354 1632.383545 1613.530029 1599.823486 1584.615967 1572.313477 1562.024658 1557.257812 1548.11084 1536.471313 1534.235352 1531.190918 1521.124512 1511.893433 1499.111938 1492.831543 1494.093262 1494.115967 1497.927979 1514.216675 1525.485474 1534.144043 1539.440918 1542.356567 1552.175415 1563.316284 1550.107666 1526.138916 1514.690796 1497.592163 1489.426514 1476.025635 1462.814819 1454.915405 1456.43103 1462.064331 1472.191895 1490.651489 1505.006592 1520.806641 1509.730103 1499.696899 1504.131836 1520.554688 1522.296753 1520.112305 1515.949829 1505.920654 1496.222412 1494.582764 1492.981323 1489.820557 1487.802124 1493.561157 1499.012329 1505.581909 1514.2677 1525.203613 1534.952759 1542.190063 1546.829224 1550.984619 1551.413208 1550.1698 1551.210327 1549.51062 1545.238281 1538.305054 1530.116089 1517.970947 1509.409302 1505.739746 1527.605469 1538.77417 1539.040039 1535.182983 1532.834229 1532.381348 1533.411133 1531.151733 1525.816895 1524.028687 1524.712646 1534.001953 1537.94873 1540.34082 1543.807739 1546.468506 1547.082642 1547.475708 1547.545044 1548.217041 1548.059082 1547.866455 1547.281128 1554.44165 1565.796387 1575.753296 1582.932373 1585.577026 1590.470093 1597.319092 1605.570557 1613.062134 1621.831177 1622.429077 1619.080566 1611.922852 1612.646484 1616.566528 1619.365601 1622.264282 1623.104614 1623.511108 1620.274048 1615.834473 1610.413818 1607.595459 1604.214233 1599.506226 1596.522827 1592.299805 1585.279785 1584.700439 1583.226318 1582.983765 1580.017944 1574.074097 1569.050415 1563.338623 1563.175537 1562.418701 1557.527344 1560.452515 1564.59436 1566.562622 1561.708252 1554.162476 1537.196289 1531.851685 1535.053589 1538.609009 1527.539062 1523.62854 1526.90979 1530.749634 1536.650879 1547.496582 1552.793579 1557.606445 1556.386963 1551.408447 1548.382446 1543.911621 1537.653809 1535.677979 1534.447876 1533.761963 1536.915283 1542.403809 1541.320679 1532.963989 1522.916382 1513.412964 1503.013306 1509.510864 1521.7854 1530.922607 1540.587524 1551.013672 1564.260742 1578.174683 1593.022949 1605.904175 1620.120728 1624.316284 1642.20166 1655.880249 1660.446045 1656.131836 1658.312378 1653.337646 1650.538452 1645.329956 1657.596558 1658.879028 1648.401489 1630.699585 1612.614502 1596.071655 1575.170776 1566.331543 1559.788452 1561.154175 1562.196411 1558.52417 1554.93689 1558.756592 1572.605347 1586.357422 1597.782837 1589.135742 1573.998291 1562.041382 1547.838745 1538.175049 1536.396973 1538.283325 1544.756348 1548.971558 1548.931885 1550.747192 1546.117188 1535.923218 1528.851685 1521.711426 1526.609009 1530.059937 1533.456421 1538.141357 1554.494507 1571.053467 1585.165527 1594.056152 1600.037476 1603.772827 1608.077759 1612.819092 1620.094604 1625.125122 1631.651611 1632.734009 1629.958252 1623.543213 1614.918457 1608.143921 1610.339722 1611.066528 1607.057007 1608.294922 1607.782715 1602.074219 1597.17749 1590.622925 1585.069946 1581.66333 1578.368652 1576.735107 1574.90564 1569.904541 1562.50354 1556.230225 1552.066895 1550.458374 1544.947998 1538.818726 1526.0625 1509.389648 1499.870728 1498.966675 1492.2771 1495.663452 1497.619263 1496.745728 1495.137207 1492.218872 1487.336914 1485.644165 1488.095825 1486.80603 1483.677734 1478.842773 1470.223511 1467.588989 1469.028931 1470.154419 1471.181152 1471.635986 1472.677002 1471.937988 1461.190918 1450.27478 1449.928833 1452.298706 1443.123169 1438.284546 1438.463135 1440.680542 1438.261963 1439.147705 1446.341919 1454.55542 1462.37854 1472.751465 1474.727661 1474.692627 1474.163208 1474.550537 1475.737427 1475.878906 1474.470703 1470.529663 1465.078003 1458.849121 1452.03418 1439.638428 1445.231567 1452.891113 1455.572876 1456.551514 1455.65625 1452.492554 1449.165039 1450.612671 1455.242432 1463.105103 1470.144409 1475.102539 1483.253418 1490.904663 1501.172363 1508.121216 1512.349243 1500.855225 1481.629883 1461.043213 1435.351196 1420.37085 1410.417603 1401.084229 1387.649048 1360.55127 1335.517944 1328.841064 1328.873901 1319.976074 1331.109741 1361.284912 1377.160767 1388.580322 1397.512329 1406.614014 1412.557007 1418.493164 1427.798462 1452.858154 1486.26709 1503.759277 1519.480225 1537.65625 1551.176514 1562.78125 1574.507812 1572.787109 1565.290894 1558.842529 1551.966187 1546.405396 1540.949829 1536.852539 1533.443848 1528.541016 1524.443237 1526.70813 1531.567383 1535.243652 1536.190796 1536.016724 1537.769287 1536.861938 1534.041748 1532.398682 1535.527222 1537.92041 1536.121582 1533.988159 1532.125977 1528.815796 1525.670898 1522.764282 1518.698364 1513.554199 1516.761597 1519.309326 1522.249023 1526.752441 1530.240234 1529.471191 1528.192139 1525.509033 1522.651001 1518.540771 1513.148438 1508.282349 1501.118286 1494.084717 1486.478027 1483.345459 1476.1698 1471.0979 1464.468872 1456.347778 1462.157471 1463.901978 1461.891479 1466.073853 1469.232544 1468.977417 1465.765869 1463.480347 1460.794312 1455.104736 1449.734253 1444.151001 1440.734375 1437.419312 1436.490601 1438.217285 1439.71228 1440.22583 1440.58252 1440.358643 1439.914062 1437.686279 1433.262329 1428.582886 1424.405762 1420.864502 1415.897949 1411.413696 1409.312012 1405.813599 1403.547729 1401.529907 1400.834961 1405.551147 1408.712524 1414.11084 1428.669067 1437.750732 1436.176758 1430.923584 1426.710938 1423.943237 1421.508545 1419.372437 1418.099731 1417.357422 1416.647461 1415.201904 1412.415771 1408.463623 1405.204102 1403.179932 1400.192261 1395.266357 1393.69751 1393.609375 1393.126953 1391.187012 1382.409058 1374.410889 1367.215088 1361.563477 1366.452148 1375.592041 1385.370239 1392.463257 1399.39624 1402.095215 1402.090332 1399.842041 1397.719604 1395.952637 1394.299194 1392.819946 1390.877563 1389.351807 1394.147827 1399.529419 1402.734253 1404.251465 1404.52002 1404.360596 1403.954102 1402.703369 1401.19873 1399.985962 1400.07666 1402.852295 1404.616455 1406.177612 1406.357544 1404.325562 1403.290649 1404.761963 1405.035889 1404.353638 1401.053711 1395.0 1389.621216 1386.661011 1382.477173 1378.615479 1377.444946 -1720.809692 1714.327515 1707.974365 1705.258545 1705.097412 1707.995361 1713.833008 1719.25 1722.461182 1723.862427 1724.15625 1724.172974 1723.891968 1723.414795 1722.325195 1719.855347 1718.916626 1720.115601 1722.069824 1722.661133 1721.088257 1718.221069 1713.435547 1706.589722 1696.3927 1691.776855 1687.937988 1684.047729 1680.713135 1680.946411 1684.259033 1687.799194 1691.126953 1694.83667 1701.693604 1705.028442 1705.762695 1704.472168 1701.868042 1698.912598 1698.10376 1698.479492 1697.161987 1691.948486 1685.048218 1681.05481 1678.794312 1677.629028 1677.878418 1677.449219 1672.296997 1672.165894 1675.950562 1678.835815 1681.397705 1686.279175 1695.584351 1698.454956 1699.717285 1698.569458 1696.555908 1689.231689 1684.468384 1684.422852 1683.112305 1675.622681 1667.91748 1662.280884 1658.008057 1651.415649 1650.139282 1645.630615 1629.358643 1619.612305 1615.801147 1612.918823 1608.335205 1599.570068 1589.252319 1593.815063 1601.996826 1615.692871 1623.356934 1626.14209 1623.683228 1616.490967 1621.242798 1629.196167 1632.441895 1631.055542 1624.59729 1616.166992 1604.040283 1589.189453 1593.755371 1603.950562 1612.532959 1621.434448 1634.885742 1643.079956 1650.193726 1656.723267 1661.234863 1658.267212 1650.627197 1646.114136 1637.890015 1627.75415 1614.041748 1599.106201 1583.096436 1571.306396 1572.724609 1570.697998 1555.050049 1540.388184 1531.23291 1521.74646 1511.343994 1504.071533 1504.206421 1506.269531 1503.185669 1498.171387 1504.92688 1516.610596 1526.720825 1543.092773 1552.19519 1553.922363 1559.283447 1564.360962 1547.627808 1525.741943 1514.944946 1499.708496 1492.364014 1478.719482 1464.154297 1456.215942 1456.121948 1460.570679 1469.752197 1483.247681 1495.933105 1507.898315 1504.634033 1497.923706 1494.224487 1503.02002 1500.693359 1501.588623 1501.401855 1495.805176 1485.901611 1484.749023 1485.594971 1485.020752 1487.126465 1493.745361 1501.518677 1508.217651 1519.687988 1532.078857 1542.897461 1551.295044 1560.264038 1561.567749 1555.080688 1548.261597 1540.945923 1534.228882 1527.716064 1522.876831 1518.263306 1509.405518 1504.385254 1520.433716 1538.755981 1541.662964 1541.375854 1539.063477 1538.744873 1538.077393 1539.028198 1539.15564 1537.665527 1531.155396 1533.375244 1534.979004 1536.420044 1540.870728 1546.053101 1548.998047 1549.974121 1550.553467 1552.890381 1557.859009 1562.406616 1564.167969 1560.35144 1556.687012 1559.581177 1566.295166 1570.708618 1578.223877 1587.352783 1598.000122 1604.52002 1612.278198 1619.098022 1623.835449 1621.927612 1622.24646 1621.593506 1620.248047 1622.336792 1623.422607 1622.411499 1617.87085 1612.192871 1609.19519 1608.506592 1608.529053 1602.742432 1597.423462 1597.530884 1598.476318 1600.020752 1600.928467 1599.708862 1596.719238 1593.713257 1590.214722 1586.77063 1576.466431 1577.749146 1572.567505 1567.82666 1560.347656 1549.994751 1547.377441 1545.776245 1540.257324 1537.925537 1541.811646 1548.029663 1545.20459 1530.819214 1526.747437 1530.43457 1532.526733 1535.567871 1546.952026 1556.930908 1563.522217 1565.052124 1560.379761 1553.258545 1547.592651 1541.133057 1536.517822 1534.358765 1532.641968 1531.400635 1532.242432 1531.499268 1525.775635 1515.334595 1504.882568 1509.536377 1517.744385 1528.068115 1534.904663 1544.088013 1555.166748 1570.223999 1583.673096 1603.394531 1618.055908 1634.205811 1642.85083 1646.249878 1659.646118 1669.877197 1673.309082 1670.994385 1668.67688 1665.293335 1662.072388 1669.718262 1671.075073 1654.685303 1637.81311 1618.673706 1597.883667 1584.189575 1576.06897 1568.985718 1573.511475 1573.327026 1567.064209 1564.198364 1562.63147 1571.905518 1585.973511 1597.406372 1596.062256 1581.811401 1568.403442 1552.293579 1548.083984 1547.054565 1546.193848 1553.592163 1559.748291 1561.594727 1558.85022 1551.965454 1541.878052 1534.083618 1527.030518 1529.401489 1534.379639 1537.770508 1535.704346 1542.515991 1560.333496 1572.399292 1581.680542 1587.407104 1594.10791 1599.593506 1608.717773 1618.666626 1627.077271 1635.984985 1635.752686 1630.706543 1622.378662 1613.428467 1605.915771 1605.229126 1606.064941 1597.929077 1601.284912 1601.063232 1596.682373 1593.572998 1590.650024 1586.70459 1582.468872 1578.977661 1577.376465 1576.202515 1572.774536 1561.443726 1548.877319 1545.977905 1550.934937 1550.273315 1543.369751 1533.920654 1521.325928 1513.268066 1500.03772 1490.107056 1485.971802 1486.312134 1487.035278 1486.843506 1483.858398 1478.739746 1474.735229 1475.102539 1474.431152 1471.76001 1466.63855 1462.325928 1462.726807 1463.388794 1463.606567 1463.324829 1462.613281 1462.064697 1457.297729 1451.348755 1448.363892 1449.394775 1450.942871 1451.901733 1448.468994 1444.693237 1443.818237 1441.321777 1441.593628 1454.439941 1464.317139 1475.872681 1479.147705 1479.980835 1480.192993 1480.2323 1480.451416 1481.262085 1481.187988 1479.663208 1475.98999 1469.62793 1461.670654 1453.816772 1445.247681 1452.292969 1459.093384 1461.577271 1462.109131 1460.784424 1457.707397 1452.249634 1455.816528 1463.857666 1466.033569 1469.215454 1473.075928 1475.642578 1484.908569 1495.672241 1505.479126 1514.41333 1500.506226 1473.937378 1448.155029 1429.020874 1418.075195 1408.245361 1390.571533 1367.897705 1344.956787 1324.740356 1319.924438 1320.035156 1328.541748 1344.68103 1365.86853 1384.967651 1396.110718 1406.205322 1414.515869 1419.252197 1424.515869 1443.096924 1458.273071 1486.445679 1509.372192 1529.535278 1550.219238 1558.497192 1568.527954 1575.660767 1572.332153 1564.657959 1558.088623 1550.978271 1544.758911 1538.579712 1533.366333 1529.326782 1525.258545 1522.217407 1527.849121 1533.730103 1539.371094 1541.516357 1545.926392 1551.627075 1554.53479 1553.383667 1550.060791 1550.807617 1550.89502 1550.520874 1548.305908 1543.649902 1539.779297 1535.360107 1530.258301 1526.980713 1526.373901 1528.685303 1532.629883 1538.666992 1535.836548 1532.217285 1530.052734 1528.585815 1527.219238 1525.581787 1521.193604 1515.745605 1512.444824 1501.428467 1500.493286 1500.499268 1495.841797 1489.712891 1480.941772 1472.138672 1460.227661 1453.543823 1455.430542 1458.992676 1463.370361 1466.112671 1465.527222 1461.165405 1456.734253 1454.211792 1450.389771 1445.387329 1441.45874 1438.265137 1435.59314 1434.530518 1434.973022 1435.807983 1436.574707 1437.075073 1436.613525 1434.880493 1432.110107 1428.804443 1425.00415 1421.253784 1417.640503 1413.223389 1407.199707 1404.842041 1402.805542 1402.554443 1404.668945 1407.663208 1412.333008 1418.025146 1423.019287 1427.973511 1432.973389 1432.476196 1430.546631 1427.675537 1424.861084 1422.30127 1419.892456 1418.2948 1417.032715 1415.491089 1413.60376 1410.967041 1407.620361 1404.178711 1401.698486 1399.867065 1397.420288 1395.4375 1394.106079 1392.240234 1388.335083 1377.692993 1371.755127 1365.009888 1366.822388 1365.79895 1377.875244 1386.516968 1395.121338 1402.485107 1406.297607 1407.907471 1407.067139 1404.384766 1401.821289 1399.960083 1398.410889 1396.641846 1396.033813 1398.001465 1400.650513 1403.196777 1404.789062 1404.919189 1404.801392 1404.24939 1403.284424 1401.499634 1397.877319 1396.460571 1397.743774 1400.438232 1402.404907 1402.794189 1401.319946 1400.957886 1402.898193 1404.734619 1404.844849 1403.170776 1398.256104 1392.628784 1389.052979 1385.945801 1382.371704 1379.500244 -1716.323975 1707.944702 1703.70166 1700.760132 1700.078857 1703.26001 1708.042114 1714.7771 1720.334229 1721.795288 1722.348877 1722.436401 1722.369629 1722.03186 1721.087769 1719.449463 1717.699219 1717.853271 1718.283813 1718.317993 1715.617188 1712.203735 1707.706421 1700.640381 1693.403809 1688.380127 1684.781006 1681.723877 1681.817139 1685.365356 1689.518311 1693.211792 1695.286377 1700.82666 1707.354004 1713.141235 1712.327271 1707.964111 1704.978882 1703.949951 1702.697998 1699.948364 1696.574951 1691.388306 1684.614868 1681.236206 1680.245972 1681.241333 1683.949951 1685.703003 1682.529053 1679.004028 1678.055664 1679.81604 1683.100586 1693.394409 1697.6427 1699.543457 1699.844849 1698.839722 1684.232056 1677.161743 1674.758545 1673.909546 1670.983521 1664.605591 1657.057983 1654.863281 1644.430664 1644.911865 1644.9021 1642.36084 1636.532471 1626.093384 1613.56543 1607.985596 1604.33667 1600.072632 1591.321167 1600.579346 1619.5177 1631.978027 1638.229126 1639.713989 1634.936523 1622.774658 1630.136353 1637.22876 1638.272583 1636.190186 1627.921509 1617.119141 1602.821533 1590.266724 1594.159912 1604.982544 1614.089478 1626.126709 1641.091553 1649.974243 1657.084839 1661.909302 1661.717529 1654.659302 1644.365723 1639.015381 1633.172607 1626.323486 1610.871826 1595.839111 1582.16626 1580.374878 1583.414307 1575.682373 1558.756226 1542.537231 1531.001465 1516.141479 1509.775146 1515.115356 1519.192505 1521.514038 1514.320801 1503.969604 1513.970825 1519.986816 1528.60083 1546.902222 1559.037842 1565.32251 1573.461304 1568.036011 1544.52417 1524.76062 1511.350586 1501.769653 1490.952026 1478.939941 1462.757935 1457.214966 1456.216675 1458.993408 1462.804321 1473.577759 1484.022949 1491.925903 1494.338867 1490.83728 1483.028442 1486.204468 1482.974487 1483.514893 1486.049194 1483.581787 1479.985352 1477.968262 1478.763184 1479.856201 1483.932251 1491.686768 1502.175659 1509.498901 1523.579224 1534.251099 1548.275513 1551.614746 1552.933838 1548.153931 1538.469604 1527.668823 1520.623535 1515.026855 1511.869873 1510.166382 1505.533081 1500.75 1510.296875 1523.988892 1540.178589 1544.390869 1545.182007 1544.65979 1544.543945 1544.10791 1543.596069 1542.838135 1540.891968 1537.501709 1538.093994 1539.028442 1538.243164 1542.32605 1547.727661 1550.90271 1553.088867 1556.084473 1561.03772 1568.509521 1575.563721 1577.753418 1575.960083 1570.742188 1564.367432 1560.039429 1565.913696 1573.591309 1585.739746 1593.317383 1600.001343 1608.002563 1613.307861 1621.288086 1623.68689 1623.968384 1623.981323 1624.16333 1624.558472 1622.821411 1620.016235 1615.034424 1609.58667 1610.952271 1612.081055 1611.81958 1610.600952 1605.748779 1604.581909 1605.452637 1606.949707 1607.064453 1605.730713 1603.573975 1600.366943 1596.189819 1593.358276 1590.938843 1590.284424 1585.652344 1574.049316 1566.7229 1558.626587 1547.46814 1548.199463 1548.192871 1548.632812 1559.748291 1561.008301 1549.58667 1539.170532 1535.630981 1536.012085 1535.291016 1537.761841 1547.179565 1557.898804 1567.935181 1570.526733 1563.552734 1556.330933 1549.849487 1545.486572 1540.7146 1537.786621 1533.06604 1527.62439 1523.2323 1521.294189 1515.639771 1507.329834 1508.478516 1518.009644 1527.092529 1532.87854 1540.723389 1549.969604 1559.006226 1570.908691 1584.377197 1606.568237 1619.755615 1639.054077 1652.521118 1659.735962 1670.250977 1679.9375 1682.067627 1683.085571 1684.011963 1682.040527 1681.582153 1680.060425 1675.293945 1660.946899 1642.421143 1624.373657 1608.49292 1595.880371 1582.315308 1577.52002 1588.578735 1582.067993 1573.547729 1572.699463 1571.542114 1577.625732 1590.062134 1604.526001 1596.200928 1585.378906 1571.636353 1563.260376 1561.896973 1558.494141 1557.672974 1565.513306 1571.15271 1569.822388 1562.766113 1551.289307 1542.687378 1535.516724 1529.032959 1535.13855 1538.913086 1544.17627 1547.906738 1546.289795 1546.948486 1562.24707 1572.571777 1578.42041 1582.899902 1593.685547 1606.539429 1614.280762 1620.130859 1626.087524 1629.11792 1627.596436 1622.709229 1610.130493 1599.099243 1597.296997 1597.816528 1596.019043 1599.138428 1599.398804 1593.790161 1588.939331 1588.529785 1585.653687 1579.366333 1575.045044 1575.22644 1575.178223 1571.988281 1564.267334 1551.447876 1534.150635 1539.098999 1544.278687 1542.299438 1537.782349 1529.52771 1521.765137 1511.821899 1501.449829 1489.505371 1481.314453 1477.370483 1476.491089 1475.494873 1474.234497 1473.975098 1478.374146 1479.417358 1478.006592 1476.406738 1475.018921 1472.690308 1469.352051 1467.276367 1465.207642 1462.127808 1456.346313 1449.975342 1450.168091 1451.848999 1454.780884 1455.676025 1456.76416 1455.901123 1452.751221 1447.80896 1447.361084 1450.78479 1459.313965 1472.253906 1479.940918 1484.365479 1486.074463 1485.696533 1486.016235 1486.903442 1487.352661 1487.055786 1485.102295 1481.171021 1474.836914 1465.556763 1454.404663 1448.88269 1458.21167 1466.736572 1469.317505 1469.171875 1467.213623 1463.413086 1459.587402 1462.168823 1467.005737 1472.235352 1474.703491 1474.989868 1476.300781 1487.044067 1492.675781 1498.34436 1501.578979 1496.93457 1480.416382 1450.904541 1426.369263 1416.140869 1407.146484 1388.936401 1361.04895 1325.883789 1321.255859 1322.336426 1326.936646 1336.088013 1362.466187 1378.923462 1391.648438 1403.198486 1414.556641 1419.360962 1424.170532 1437.03772 1455.598511 1470.646362 1496.688843 1509.125977 1530.255737 1550.30603 1561.969849 1573.899048 1574.665405 1569.02002 1561.56189 1554.53772 1548.493896 1542.383179 1537.147583 1530.571777 1525.647217 1521.783447 1518.439819 1525.463379 1530.824219 1536.46228 1538.788086 1544.638062 1550.575562 1553.089478 1553.575684 1554.174194 1554.18689 1554.312012 1553.613037 1552.46936 1549.22876 1543.295654 1538.616577 1532.584839 1529.378418 1534.798828 1537.544067 1538.28833 1537.410522 1533.94397 1530.474365 1528.453979 1527.861938 1526.890625 1524.208008 1519.024658 1514.180054 1512.332642 1506.782959 1502.367065 1502.773193 1500.478638 1491.979492 1483.526855 1474.828857 1466.656616 1455.180054 1450.824585 1454.554199 1458.680298 1462.109619 1461.506836 1454.626465 1448.862183 1446.247437 1443.694458 1440.622437 1437.760864 1434.928223 1432.080322 1430.292358 1430.06897 1430.780518 1430.587524 1430.009155 1428.784546 1427.523926 1426.133423 1423.699219 1420.487671 1417.744141 1414.322144 1408.825562 1412.23877 1415.710449 1415.893799 1411.735596 1409.428345 1412.04248 1419.622681 1429.240723 1430.21875 1430.131348 1430.70105 1430.339233 1429.110352 1427.810181 1424.816895 1421.717896 1418.945679 1417.050293 1415.400146 1413.870483 1411.640137 1409.150146 1406.449585 1403.471069 1401.042725 1399.331787 1397.547607 1395.7854 1394.036255 1391.682007 1385.874146 1377.051392 1370.128784 1375.353394 1377.651367 1377.328369 1376.373901 1385.453247 1395.408081 1403.796997 1409.123657 1413.577393 1414.057251 1411.994263 1409.090942 1406.262329 1404.219604 1402.990967 1402.606201 1402.71582 1403.185181 1404.756226 1405.200073 1405.16394 1404.74231 1403.385742 1402.546387 1399.925293 1395.081177 1390.351929 1392.505127 1395.652954 1398.243164 1398.855347 1398.532227 1399.348755 1402.220825 1404.480469 1405.19458 1404.937378 1402.577637 1397.408691 1392.595093 1389.199951 1386.114014 1383.360718 -1706.847412 1702.670654 1699.319336 1696.363159 1694.281738 1698.599487 1702.779175 1707.322388 1713.790283 1718.526489 1720.051392 1720.407593 1720.658203 1720.659912 1719.625977 1717.161499 1715.970581 1715.418945 1713.888794 1708.956055 1707.6073 1706.061401 1700.345825 1694.891235 1690.228027 1684.868774 1681.606323 1682.583252 1684.591919 1689.741089 1694.595581 1698.880127 1702.442627 1707.933105 1720.122925 1722.061523 1718.716187 1711.84375 1708.378784 1708.200317 1705.866943 1701.171021 1695.718018 1690.925415 1685.75769 1682.554199 1681.402954 1684.093262 1689.735107 1693.021362 1687.940674 1683.330933 1680.520508 1680.390137 1682.498535 1693.093384 1697.484619 1699.670654 1700.275879 1700.290527 1692.485107 1672.176392 1666.64502 1662.305176 1659.19165 1654.119873 1650.258423 1645.278076 1633.50293 1629.722778 1628.9552 1629.127319 1627.687988 1623.986206 1616.57605 1609.601562 1602.677979 1597.668701 1594.202881 1610.854492 1630.673706 1644.144287 1651.565674 1653.355591 1646.611572 1636.046875 1641.568115 1644.38562 1642.683594 1637.488037 1626.914307 1612.468262 1601.128052 1594.857056 1594.256104 1604.682251 1613.459961 1628.829224 1648.317261 1654.415649 1660.279053 1668.840454 1667.373779 1655.446655 1645.175415 1632.374512 1627.280762 1624.225952 1613.384644 1595.84729 1595.53186 1599.348877 1585.942749 1571.959839 1557.640137 1543.635132 1529.319336 1515.873657 1528.16394 1532.567505 1533.588623 1530.618164 1517.01001 1512.171265 1516.243164 1523.350952 1535.299927 1547.556885 1560.144165 1570.339966 1577.082153 1564.255615 1540.967285 1521.161011 1507.55481 1498.158081 1489.273926 1483.025024 1475.381348 1464.916382 1455.941528 1457.682983 1460.405396 1463.944946 1470.526611 1476.824829 1480.015991 1479.257812 1473.60498 1472.356567 1470.799683 1470.848755 1472.577637 1474.104248 1473.78894 1473.238037 1473.836548 1474.744019 1476.419434 1485.093506 1498.061035 1506.35144 1516.401489 1524.733276 1529.066284 1528.231201 1526.857666 1519.638672 1514.348022 1510.250122 1505.171631 1499.169434 1497.614746 1497.218018 1499.329834 1509.573853 1520.756714 1528.786621 1543.479736 1547.828613 1549.283325 1549.530151 1549.921875 1549.766602 1548.106079 1546.236206 1543.991577 1542.557739 1541.987915 1542.203857 1542.942627 1544.78479 1547.031616 1550.653564 1554.745483 1559.044922 1565.487183 1573.709351 1582.250732 1583.466431 1583.46521 1580.434448 1574.934448 1572.025757 1571.033813 1570.856812 1575.148804 1586.499878 1592.668091 1598.967773 1609.56543 1617.106689 1622.686035 1625.175171 1627.018921 1627.719482 1626.909668 1623.670654 1622.078003 1618.128052 1616.456055 1617.420776 1617.675049 1616.781982 1614.619751 1612.354858 1611.584106 1612.69519 1613.380127 1613.238403 1611.89624 1609.542847 1605.825317 1601.527954 1598.987671 1598.846313 1597.034424 1590.495728 1579.15271 1569.552124 1561.311646 1563.600342 1565.694824 1557.730713 1563.255981 1573.978027 1563.649292 1549.577881 1537.491211 1538.509644 1543.302856 1540.89978 1539.805664 1548.811279 1561.205933 1573.955811 1575.056152 1566.173584 1560.43396 1555.346802 1550.940552 1549.028198 1544.570679 1538.06665 1531.784424 1522.16272 1510.790039 1508.722046 1507.855713 1515.23938 1525.629395 1532.615234 1538.225708 1550.68396 1558.653198 1567.4646 1577.951538 1591.773193 1606.494995 1617.045166 1636.33374 1657.209595 1673.431763 1684.749023 1688.785278 1691.785767 1694.152466 1695.237427 1694.975586 1693.609985 1687.718872 1677.39502 1661.729126 1650.48938 1632.090088 1617.92041 1599.875 1585.328857 1590.801514 1595.030884 1586.494995 1584.205322 1582.857422 1580.997559 1591.367065 1604.521118 1611.70105 1601.192261 1586.062866 1574.416016 1572.786011 1572.365723 1570.505127 1569.866455 1577.435791 1578.39856 1574.696899 1561.460327 1547.389893 1541.063599 1534.706299 1534.560669 1541.393555 1545.224365 1550.840454 1554.541626 1553.905029 1551.242676 1551.06543 1562.940674 1574.511353 1580.21936 1587.781128 1598.405273 1608.059326 1612.853027 1616.639404 1620.464844 1622.39978 1620.6604 1611.106445 1598.971802 1593.951904 1589.712036 1591.366211 1596.751709 1598.067017 1589.185059 1583.414429 1584.049805 1580.200317 1574.440918 1562.848755 1563.10498 1565.779785 1563.83374 1559.143311 1551.98877 1535.766357 1529.233887 1533.538086 1534.913574 1528.477173 1523.567261 1516.534546 1508.867676 1500.623291 1487.733154 1475.858398 1475.839966 1476.261841 1480.758911 1485.110229 1486.16333 1489.470337 1489.224487 1487.613281 1485.540649 1483.736328 1482.237671 1480.182739 1477.597534 1472.851074 1467.952393 1461.00647 1458.014404 1459.634399 1462.684448 1466.370605 1466.955444 1464.064087 1460.198608 1456.029419 1451.049316 1452.822021 1451.061768 1460.949829 1473.552979 1481.920288 1488.928345 1489.562744 1489.996704 1491.036499 1492.19873 1492.979614 1492.389648 1490.533081 1487.368774 1480.386108 1470.77771 1456.056396 1456.094482 1466.955811 1475.954468 1477.676758 1477.067505 1474.878296 1469.562988 1464.158447 1463.819946 1471.663696 1477.422241 1479.106689 1480.260132 1481.365479 1483.184448 1486.869141 1487.842163 1486.187134 1485.359375 1470.997437 1452.592163 1430.608887 1417.809326 1406.255249 1394.442139 1372.134155 1329.12915 1321.447266 1325.302368 1332.614502 1343.46521 1363.486694 1380.27063 1394.908936 1408.160522 1417.670166 1422.871704 1431.613159 1453.445801 1465.117554 1486.940063 1511.628662 1526.958374 1544.213135 1561.166992 1573.4104 1574.505005 1571.235229 1566.030884 1559.157471 1550.454346 1544.016479 1537.707642 1532.838501 1525.457275 1521.413696 1517.085815 1514.217163 1519.320435 1523.580078 1527.41687 1532.005249 1538.905884 1544.847778 1547.688843 1548.176147 1552.246582 1554.588745 1554.818115 1554.233276 1553.162354 1549.787476 1542.21936 1536.2052 1530.819214 1524.52063 1530.790771 1534.63269 1533.931274 1534.2229 1529.914795 1524.852783 1524.008789 1523.378052 1522.216064 1517.449097 1510.581177 1507.822266 1504.8479 1499.172241 1496.784424 1495.502808 1492.80603 1488.396484 1482.777588 1475.742798 1467.490845 1457.355225 1448.950439 1449.119019 1452.485229 1453.92981 1454.322266 1448.234375 1440.517578 1437.579224 1437.13501 1435.371826 1433.260132 1430.856934 1428.056519 1426.742554 1425.864868 1425.966431 1425.1604 1424.134644 1422.510376 1421.279175 1419.980835 1418.786255 1415.4104 1413.512085 1411.416626 1416.167603 1419.912109 1421.632446 1420.725952 1416.897339 1412.604004 1414.486572 1423.762939 1430.63269 1430.911865 1430.188477 1429.393311 1427.891602 1427.354614 1425.924438 1423.083008 1419.991211 1417.167114 1415.234985 1413.521118 1411.790649 1409.470093 1407.334351 1404.787231 1402.304321 1400.316895 1398.60083 1396.988892 1395.403076 1393.68811 1391.548462 1384.903564 1375.722168 1375.75354 1383.66626 1389.886475 1390.90918 1388.109985 1387.946289 1391.030518 1403.672729 1410.324829 1416.01416 1416.645752 1416.152832 1415.629883 1413.562134 1410.475708 1408.1427 1406.935059 1405.983521 1405.950073 1405.950806 1405.418457 1404.855713 1403.315796 1399.690918 1398.141235 1395.831543 1393.970581 1391.165527 1389.405029 1391.502808 1394.399048 1395.418701 1394.603638 1395.14563 1400.500732 1404.205933 1405.271851 1405.343628 1404.825684 1402.707764 1397.082397 1391.966431 1388.840088 1385.595215 -1699.640137 1696.499023 1694.041748 1691.468506 1690.560547 1693.759277 1696.782593 1700.878784 1705.051392 1709.629395 1713.293091 1715.737793 1717.51709 1716.907837 1715.153198 1713.712036 1713.547607 1713.315796 1711.931152 1708.924927 1704.550415 1695.780396 1693.187012 1691.707764 1688.934814 1683.217163 1685.333374 1688.053467 1689.878052 1693.640259 1698.798218 1703.871704 1709.22168 1714.830933 1721.59729 1720.955811 1718.268555 1714.503296 1711.587769 1710.279175 1708.535645 1700.409302 1694.446533 1690.442139 1686.6427 1683.415771 1681.683594 1687.123779 1695.538086 1696.443115 1691.777344 1685.424194 1681.794312 1681.932373 1682.983643 1691.411621 1697.384644 1700.382812 1701.18103 1701.120605 1697.036499 1678.901611 1666.069824 1656.370239 1649.018066 1645.567871 1641.041016 1632.952759 1631.019653 1627.125244 1621.022217 1619.037476 1617.302856 1611.609253 1609.197266 1605.93457 1600.781494 1595.175903 1605.998779 1619.694336 1635.500366 1651.592896 1661.289795 1664.783813 1657.879639 1647.300537 1652.392212 1650.933472 1646.131714 1636.640015 1622.294678 1608.36499 1608.522095 1601.01001 1594.497314 1608.743042 1623.520996 1642.417603 1656.674072 1660.921265 1666.378662 1672.655884 1672.031982 1659.651367 1647.410522 1634.806152 1619.38562 1612.487915 1609.993774 1602.741333 1601.994629 1596.169922 1580.792236 1566.781616 1555.077515 1543.541748 1521.63501 1531.011597 1540.701782 1545.994629 1543.946045 1535.40979 1515.397095 1515.722534 1520.762085 1523.441162 1535.897827 1545.902832 1557.808472 1570.789551 1573.012817 1557.448608 1534.546143 1523.165161 1517.536133 1510.942505 1503.527588 1493.553711 1485.31311 1477.941895 1466.478394 1456.463989 1458.238403 1460.378296 1462.081909 1463.411865 1465.718628 1469.529419 1468.79248 1464.435913 1462.740112 1462.979858 1463.546387 1467.466187 1468.694458 1469.503296 1470.44104 1471.49646 1472.725708 1474.194214 1485.636963 1496.574585 1504.286377 1508.018799 1507.640625 1506.044678 1503.331055 1501.694336 1498.962402 1492.633057 1490.416748 1495.125488 1502.237305 1506.028564 1511.052856 1525.217651 1539.194824 1546.952271 1553.516479 1555.856812 1557.184082 1558.509766 1559.287354 1559.285645 1556.762329 1551.039917 1547.995117 1546.100098 1545.952515 1545.981201 1546.077271 1547.015747 1547.157593 1549.433716 1555.380127 1560.493286 1567.642212 1578.230713 1590.55603 1595.394165 1593.317383 1589.659302 1584.453491 1583.186279 1582.944336 1579.925659 1575.301025 1576.951904 1585.87561 1596.56189 1607.007568 1613.628662 1619.546265 1624.447144 1629.710083 1631.87793 1630.699951 1628.176147 1624.876343 1621.291504 1623.019653 1623.420776 1623.054443 1621.623901 1619.754883 1619.736572 1618.517334 1618.497803 1619.763428 1619.724609 1617.192993 1612.564087 1610.448242 1607.391235 1605.551025 1604.164917 1601.61145 1597.384399 1583.282471 1572.55896 1570.701416 1576.583862 1574.656006 1568.020874 1577.784912 1575.9729 1558.505981 1544.329346 1536.804199 1544.503296 1552.494629 1551.517456 1547.403809 1551.709595 1564.078125 1574.813477 1575.038208 1571.213013 1567.170044 1561.074341 1562.615601 1561.284302 1555.18042 1546.361206 1537.22937 1523.547974 1512.703125 1507.960327 1512.430908 1522.753662 1531.295898 1539.569702 1547.852905 1556.889038 1567.671143 1579.795776 1590.688232 1606.547729 1623.281006 1632.46106 1641.843506 1650.927734 1676.092773 1688.283569 1694.886841 1700.15979 1705.227905 1709.255615 1709.646118 1703.209595 1695.814941 1682.274902 1669.359863 1657.053345 1638.068481 1619.087402 1605.280029 1596.388306 1601.477295 1602.781982 1595.109863 1599.462646 1599.494263 1594.52002 1608.638794 1621.749146 1615.753784 1605.085693 1592.619141 1589.193848 1584.427734 1585.61731 1584.535522 1586.473999 1587.326172 1581.188232 1568.953491 1555.844971 1546.710205 1540.745239 1535.275879 1539.852539 1547.296021 1552.250488 1560.001343 1561.720093 1561.390137 1559.995117 1558.319458 1558.244263 1568.94043 1576.454346 1581.866943 1588.654297 1596.741333 1601.495117 1606.486084 1610.033569 1613.970581 1614.171631 1611.485474 1603.466553 1592.547974 1584.392334 1586.603394 1592.28894 1592.856567 1588.337769 1579.554199 1575.391846 1573.415894 1567.021362 1555.997681 1550.217163 1554.565308 1553.515869 1548.932495 1544.717285 1534.00415 1521.878052 1521.93042 1519.710693 1515.134399 1510.71167 1504.96228 1498.326782 1487.08667 1480.323608 1486.085938 1487.377563 1484.812744 1487.437134 1492.067871 1493.581787 1494.913574 1495.49646 1494.970337 1493.471069 1491.130737 1489.581665 1487.316772 1484.507446 1479.784546 1475.002441 1464.67981 1465.718994 1469.834106 1473.432251 1475.021484 1474.722534 1471.423828 1465.937256 1461.139893 1454.722168 1456.182373 1450.949463 1460.941162 1472.108398 1480.107178 1486.204712 1489.947144 1491.722656 1494.007812 1497.049072 1499.370972 1498.415649 1495.656616 1492.265991 1487.475464 1477.069092 1462.805786 1466.031128 1476.4823 1480.929565 1482.311646 1482.010864 1480.181396 1476.541748 1471.865601 1469.362061 1474.157227 1480.165527 1483.648682 1486.326416 1486.207886 1480.185425 1467.364868 1470.276367 1478.40564 1469.765869 1457.312622 1444.381958 1427.975952 1414.844116 1400.496582 1383.577271 1362.904419 1326.515503 1321.763428 1326.255005 1334.496704 1353.011963 1362.102661 1376.430298 1392.907227 1406.651001 1417.496826 1425.563232 1444.898438 1462.188354 1482.33313 1503.673828 1519.518066 1536.463623 1552.682129 1570.93457 1574.543457 1571.598633 1567.684692 1563.385742 1556.275757 1547.884644 1541.42041 1535.751831 1530.688599 1524.825439 1519.938965 1512.956421 1510.253906 1513.314941 1516.807983 1519.221436 1523.123901 1530.802612 1535.928711 1535.13562 1535.014038 1543.652466 1551.24585 1554.401245 1554.132446 1553.221069 1549.832031 1541.485229 1531.684692 1525.667847 1521.366333 1522.603638 1526.518555 1527.157227 1528.674194 1527.620483 1523.646973 1519.100586 1513.89209 1513.66748 1511.86792 1502.825684 1497.035645 1496.311401 1493.13855 1489.023926 1484.608521 1481.964355 1477.86792 1473.850952 1467.306519 1461.932373 1452.388672 1449.196411 1446.566162 1444.27478 1444.845825 1440.05481 1438.533203 1436.616943 1434.889893 1433.156372 1431.473755 1429.83252 1428.154175 1427.184204 1426.371216 1426.732666 1427.613037 1428.495483 1425.438477 1419.996216 1418.25647 1417.298462 1416.274414 1416.027222 1416.231323 1418.561035 1422.733032 1426.781006 1428.307007 1426.357422 1421.465088 1415.075439 1416.480835 1424.985962 1429.736816 1430.496582 1429.994629 1428.469971 1426.049072 1424.98938 1423.022339 1420.365601 1417.9198 1415.387329 1413.363647 1411.616699 1409.462646 1406.991699 1405.411377 1403.294312 1401.469727 1399.543213 1397.621094 1395.929321 1394.353149 1392.964478 1390.980225 1381.680786 1378.887451 1383.187988 1388.316895 1393.357544 1394.715942 1395.258301 1392.613892 1390.205811 1400.041382 1408.490234 1416.66687 1417.924561 1418.022461 1417.78186 1416.963135 1415.285034 1412.588745 1410.980713 1409.588379 1408.467285 1406.919922 1404.588135 1402.763916 1399.557617 1394.864624 1392.349854 1391.003174 1392.130127 1391.675415 1388.763672 1390.495117 1392.671997 1393.170288 1391.46228 1389.865356 1397.824219 1403.506592 1405.05957 1405.270752 1405.020142 1404.11731 1400.110474 1393.626465 1389.735718 1385.556274 -1692.250366 1688.877075 1686.893555 1685.024536 1683.812866 1687.968628 1691.283325 1694.472046 1698.07251 1701.581909 1705.33313 1708.406616 1710.62207 1711.033936 1709.80542 1709.646729 1711.526855 1711.994873 1711.342896 1710.016479 1708.153687 1697.197266 1693.624756 1692.154907 1691.317627 1691.729126 1693.65918 1694.25293 1694.333496 1697.027466 1702.841187 1708.195557 1711.648071 1716.143066 1720.115601 1720.074951 1716.884644 1713.744507 1711.601562 1709.866333 1705.514404 1697.148438 1693.029419 1689.299194 1685.849854 1682.741089 1682.576416 1689.733521 1696.592651 1696.411133 1692.477661 1686.416992 1681.963867 1684.602173 1689.988159 1695.996582 1699.375732 1702.00647 1702.776489 1701.767822 1698.453003 1680.132568 1665.783813 1655.636719 1646.849854 1645.366333 1644.333252 1642.168823 1642.084839 1640.123779 1633.984619 1626.530518 1619.886719 1610.360107 1607.192505 1602.553345 1598.593994 1599.742432 1616.314331 1627.953979 1643.190674 1655.484619 1669.758545 1673.672241 1668.620361 1664.179688 1661.193359 1656.312988 1648.287354 1639.573608 1625.734497 1615.919678 1618.702881 1606.689819 1595.482666 1610.973511 1626.713989 1647.680908 1659.663574 1666.588013 1670.717041 1673.74939 1671.405151 1661.215332 1648.433472 1638.196899 1624.930298 1608.486084 1594.956299 1588.350342 1587.818481 1583.362305 1575.938232 1563.732178 1551.991333 1539.372925 1527.322876 1543.511719 1552.227295 1555.274048 1551.589111 1540.061157 1521.049805 1524.778931 1526.889526 1524.760864 1533.891602 1546.161255 1557.576172 1568.215454 1567.108521 1549.977661 1536.578735 1538.376465 1534.41333 1522.898804 1514.088013 1502.723022 1492.556641 1483.906006 1474.458008 1462.039917 1457.638184 1458.501465 1459.307739 1459.832764 1461.434814 1463.852539 1463.413208 1462.849487 1468.302002 1472.820435 1475.065063 1473.600098 1471.140991 1467.092407 1467.561157 1468.413452 1470.15918 1472.150513 1478.678467 1484.794434 1489.899658 1493.734131 1493.618896 1487.370972 1485.552368 1487.081299 1485.386353 1487.210693 1495.067017 1505.810425 1513.923584 1524.873291 1531.61731 1541.351807 1550.514038 1562.38855 1565.337891 1564.459717 1563.615967 1563.03064 1562.920044 1563.114136 1563.507568 1557.223511 1550.564941 1548.814209 1548.973511 1549.4198 1549.341675 1548.937012 1548.946411 1550.522095 1557.204468 1562.387085 1570.233276 1583.416992 1594.952026 1600.653564 1601.25769 1598.928467 1597.122803 1595.792725 1594.957886 1593.362427 1589.507935 1584.76709 1582.725098 1590.101196 1600.548218 1608.675049 1615.071777 1622.250854 1631.562134 1635.155762 1634.694458 1632.335571 1628.754517 1627.297974 1626.555664 1625.974487 1625.061401 1623.908203 1623.727295 1623.628296 1623.347656 1623.169067 1623.744629 1623.374756 1620.977417 1615.559326 1613.166748 1611.680298 1610.750244 1609.072266 1605.496338 1600.698853 1587.838135 1574.84375 1576.337769 1585.600098 1581.353027 1581.783203 1575.897339 1563.743042 1552.701538 1544.627808 1542.001953 1548.45459 1558.577759 1560.140137 1558.295532 1557.303467 1565.495483 1575.63623 1575.756836 1575.140625 1573.836304 1570.63562 1569.885742 1568.228149 1564.777222 1552.160767 1536.972046 1520.596558 1509.710327 1511.066772 1523.571899 1529.141724 1535.359131 1546.151733 1556.007324 1564.865112 1578.134033 1593.351562 1605.144653 1613.126953 1632.47876 1647.140991 1656.688965 1665.532471 1678.864014 1691.867798 1701.009888 1707.440918 1713.517944 1715.160767 1713.470215 1709.323364 1701.861084 1692.545166 1677.645142 1663.346924 1643.757812 1626.421021 1611.529907 1610.299927 1613.539795 1611.933105 1608.584717 1614.497925 1616.688965 1613.332764 1626.710205 1629.29541 1618.985229 1606.255249 1607.001953 1606.994141 1602.607788 1603.97937 1603.863037 1600.641235 1591.012207 1573.170166 1558.799927 1551.417725 1545.777222 1541.215332 1538.19165 1547.578125 1556.580566 1565.03894 1570.11084 1572.06604 1571.413452 1568.538574 1565.386719 1561.1521 1563.126587 1573.234619 1579.675415 1585.313232 1590.233276 1593.327515 1596.581055 1601.508667 1604.597046 1606.79541 1606.188599 1601.37146 1593.949341 1582.418457 1584.374756 1589.087524 1589.195435 1585.294922 1574.979126 1568.348145 1565.355713 1560.483154 1552.899414 1546.638794 1541.397217 1543.248169 1540.355957 1534.292114 1529.171387 1519.893066 1509.294922 1504.086792 1502.474121 1497.599731 1491.028687 1484.163696 1483.428223 1491.111938 1498.201172 1499.310913 1492.735962 1494.729248 1498.248779 1498.257812 1500.349487 1501.688477 1501.747681 1501.377441 1500.012451 1497.348022 1494.103027 1491.124146 1486.613647 1480.930542 1474.46228 1474.256226 1479.630249 1482.267334 1482.222168 1480.959351 1478.906006 1475.276733 1467.859619 1461.881592 1464.559692 1462.320557 1461.133789 1468.05481 1475.331421 1480.238525 1487.540161 1491.579712 1494.854248 1498.69812 1501.62085 1502.080566 1500.520264 1496.83374 1492.174561 1483.965454 1472.136108 1474.566895 1481.601929 1485.649658 1487.470947 1486.944336 1485.559448 1482.302002 1478.668823 1476.602417 1478.747192 1484.998901 1487.988647 1490.205688 1489.562866 1480.763916 1467.396362 1450.324585 1454.382568 1450.032104 1439.41272 1428.085938 1418.059814 1409.134033 1398.209839 1379.891846 1356.206299 1334.291016 1323.505005 1325.811646 1334.155884 1351.969482 1367.634521 1382.455078 1391.50708 1401.956787 1414.119995 1426.622559 1449.64502 1469.87561 1491.610718 1505.171997 1527.755005 1542.482178 1559.671143 1574.791626 1572.460693 1568.509277 1563.687622 1559.182861 1552.087524 1544.704224 1537.213745 1534.065552 1530.618652 1527.442261 1522.270508 1513.642944 1509.386353 1507.531738 1509.541382 1510.803955 1515.664185 1521.551636 1524.146484 1522.325317 1522.429443 1526.278198 1541.303833 1551.084229 1553.565552 1552.548828 1550.414307 1542.634766 1528.809448 1518.671387 1512.91333 1515.606812 1518.394775 1520.241943 1524.60022 1526.890625 1525.513062 1521.51123 1514.627686 1512.896851 1506.216675 1499.571533 1496.683472 1486.680298 1486.744507 1481.00647 1474.302734 1472.549805 1465.185669 1461.621826 1462.199219 1459.379883 1452.04834 1450.994751 1449.728271 1446.744385 1444.261963 1442.866333 1441.993408 1440.35791 1438.817383 1436.484009 1434.327759 1433.38269 1432.69043 1432.193359 1431.81958 1431.675415 1430.752441 1429.174561 1427.57666 1421.593994 1418.755859 1418.459839 1419.261353 1421.309082 1423.680786 1425.328613 1430.66394 1438.403442 1440.336548 1437.042725 1428.308105 1421.193481 1420.862549 1424.91272 1428.994019 1429.993286 1429.734497 1428.881714 1427.106201 1424.689575 1420.616943 1416.387329 1415.147583 1413.685913 1411.952515 1409.784058 1406.877197 1404.359741 1402.849365 1401.536499 1400.261597 1398.610718 1396.689575 1394.539551 1392.625488 1391.131958 1387.310181 1381.827148 1388.998779 1391.760132 1392.037964 1395.605225 1399.191406 1402.276611 1402.836182 1403.642822 1402.086182 1401.835571 1416.584106 1418.403198 1419.403198 1419.591309 1418.845825 1417.34314 1415.404297 1413.540283 1411.923584 1410.336914 1407.94751 1404.405518 1400.392334 1394.209351 1389.369507 1387.58667 1385.05481 1389.04541 1391.176636 1385.637939 1383.212891 1390.849854 1390.961914 1387.792114 1390.079468 1396.231934 1401.158813 1404.126099 1404.655762 1404.131958 1402.528198 1398.164307 1392.807129 1388.890625 1384.11792 -1680.763428 1679.222412 1679.253784 1680.935547 1681.835083 1683.125 1686.284424 1689.939819 1692.382324 1693.964355 1698.499634 1703.110229 1705.806152 1706.462891 1706.508911 1708.427368 1710.494507 1711.582153 1711.406616 1710.215088 1708.141113 1701.121094 1697.245361 1693.336548 1695.672485 1698.604614 1701.260742 1703.052246 1703.854492 1704.768799 1706.031372 1709.399902 1712.391113 1714.990234 1716.960571 1715.908325 1713.137207 1710.892456 1708.802734 1705.965576 1699.706177 1693.748901 1690.447754 1687.507202 1683.903931 1682.031006 1684.565308 1691.592651 1696.312866 1696.169678 1691.654419 1686.703369 1682.785767 1687.780518 1694.662476 1698.686768 1702.310791 1704.919556 1705.093018 1702.988159 1696.759033 1678.519897 1667.433472 1665.479858 1664.458984 1657.369873 1654.358521 1655.041016 1655.119507 1651.420044 1645.094238 1636.666626 1626.689941 1616.283691 1608.422241 1600.993042 1597.049683 1607.512573 1620.223511 1630.067383 1643.181885 1654.419434 1669.708496 1676.17981 1680.109985 1671.881592 1666.568848 1660.805542 1652.957031 1641.846924 1626.399292 1623.658081 1625.688599 1609.047974 1595.776855 1610.652588 1623.4375 1646.797974 1661.844238 1671.104614 1673.881104 1673.810913 1668.162231 1658.955933 1647.011475 1638.768188 1627.936768 1613.464844 1596.140747 1585.891602 1572.478516 1569.648071 1562.185059 1555.277466 1545.614258 1534.878174 1541.989502 1554.631592 1561.172485 1562.507446 1555.305908 1539.403931 1526.414917 1532.486938 1533.008545 1533.372559 1540.316528 1549.542725 1559.524048 1575.203735 1572.280884 1556.503662 1550.735718 1546.601562 1542.656982 1534.806763 1521.53833 1509.38501 1497.286621 1486.599976 1476.132324 1470.817261 1470.756226 1464.975464 1461.86792 1463.509888 1464.214355 1466.562744 1471.27832 1477.470093 1481.494385 1483.456055 1484.008057 1483.648071 1482.065918 1479.156982 1476.987305 1476.956787 1475.939453 1473.316284 1473.76001 1476.652344 1478.143433 1479.766846 1480.672119 1481.302612 1481.654541 1481.908325 1483.890137 1489.335449 1497.672974 1512.37561 1524.063232 1538.887695 1548.42395 1558.930786 1568.08667 1576.747681 1573.89563 1566.506958 1561.535645 1560.113647 1559.133545 1559.192749 1557.712036 1552.683716 1548.842896 1549.10144 1549.950928 1550.335693 1550.243286 1550.156616 1551.553955 1555.327759 1560.608032 1565.058838 1571.600342 1579.588745 1587.110229 1596.137695 1602.336548 1608.952515 1610.921631 1606.546509 1604.19165 1603.203979 1601.110474 1597.532837 1589.9823 1583.555298 1592.884399 1602.550903 1611.599121 1622.848267 1631.488525 1636.240845 1635.737793 1634.86145 1632.562988 1630.662231 1628.781738 1627.51001 1626.551392 1625.775635 1625.296265 1624.812012 1624.460571 1623.998535 1622.744507 1620.188721 1616.452026 1614.203491 1612.550415 1610.699097 1612.170044 1611.802856 1608.759277 1602.068726 1591.404419 1581.979004 1584.586182 1588.13562 1587.406982 1586.731934 1574.666138 1561.891968 1557.656616 1551.634399 1546.874878 1556.038208 1563.797852 1566.302124 1566.113892 1564.244995 1570.045044 1575.427368 1574.565186 1574.736816 1573.609009 1574.875732 1575.215698 1573.80481 1565.389282 1550.549194 1531.070435 1516.940796 1511.143311 1523.55188 1530.15625 1534.446167 1540.80542 1552.421997 1564.328125 1577.745972 1592.611328 1607.803589 1618.847656 1630.900513 1636.206055 1652.978027 1669.319458 1679.609131 1689.394287 1699.134155 1710.162476 1717.757202 1723.212158 1721.385986 1717.313843 1713.35437 1707.322876 1698.703735 1680.697266 1662.434326 1644.109863 1629.244019 1620.279663 1623.876953 1624.958252 1623.195801 1619.641968 1625.364014 1630.540649 1633.099976 1639.826782 1632.826904 1620.914429 1616.998901 1622.173096 1622.564209 1623.881714 1614.938599 1604.924683 1593.921143 1576.714111 1561.768799 1555.525513 1548.613403 1546.168091 1545.763184 1546.283203 1554.753418 1567.291138 1578.417358 1583.732056 1586.069336 1585.272705 1580.479004 1573.710449 1568.131714 1567.529785 1573.901123 1578.060791 1582.404541 1585.88855 1588.150513 1589.748901 1592.463501 1594.118408 1596.48291 1596.86792 1596.234375 1590.030396 1577.017456 1578.041138 1587.427734 1588.404907 1585.029785 1573.816895 1564.505615 1558.546875 1549.677734 1546.087158 1540.666504 1535.654907 1533.775269 1532.239624 1522.043213 1520.324219 1513.984863 1504.169189 1493.91626 1487.251343 1486.241821 1486.043091 1486.069214 1491.145142 1500.859985 1505.527466 1506.224243 1500.940063 1502.631714 1504.444824 1504.930908 1506.55957 1508.053833 1508.136597 1507.525879 1506.32312 1503.932495 1499.866455 1496.120239 1492.175659 1486.969238 1483.113159 1485.956299 1489.21936 1490.042847 1488.882446 1486.613281 1484.296875 1481.421753 1477.224854 1471.244507 1469.290527 1468.293579 1465.021973 1465.463257 1470.995361 1474.403198 1484.639038 1490.077026 1493.622559 1497.3302 1500.737671 1502.437134 1502.635132 1501.248657 1496.966675 1491.062866 1480.682129 1481.200439 1487.544922 1490.44812 1491.338501 1490.82312 1489.835449 1488.084351 1485.371948 1485.720703 1487.521362 1489.557129 1491.946411 1494.492432 1492.040405 1481.543213 1468.287109 1452.544189 1429.242065 1425.46814 1422.496338 1410.526978 1405.17334 1400.075806 1394.047974 1382.206909 1359.929077 1335.996948 1325.557617 1324.267944 1331.070679 1344.322144 1367.590332 1386.14856 1398.670654 1409.194214 1417.646362 1424.080444 1440.406372 1466.10022 1491.979248 1512.11438 1528.494141 1543.693604 1560.401733 1574.809326 1571.029907 1566.074341 1560.55835 1555.594604 1549.551758 1543.658447 1537.545044 1534.929688 1533.605591 1531.395874 1524.710205 1519.307983 1514.749023 1503.018799 1499.56897 1501.425659 1507.444702 1513.367432 1513.700806 1512.053711 1511.87561 1525.564209 1541.680054 1551.739746 1552.588745 1551.370361 1548.65625 1542.043213 1529.281128 1515.36084 1506.865601 1507.660278 1509.517456 1512.88208 1523.090088 1527.094604 1527.147095 1526.135742 1522.146362 1517.117798 1514.310913 1508.41626 1503.367065 1499.303467 1489.50647 1484.206665 1485.474121 1486.692749 1482.786499 1478.528564 1475.033081 1468.029541 1462.709595 1457.537598 1454.774414 1452.135254 1450.155884 1448.038818 1445.353027 1443.335327 1441.533569 1439.56897 1437.775757 1437.883911 1438.388672 1438.353394 1436.472046 1433.926636 1430.908447 1427.8302 1424.794312 1420.220337 1419.069092 1420.011841 1422.252075 1425.330322 1428.928955 1433.318726 1440.121948 1446.51123 1452.695557 1445.148315 1433.723145 1425.373047 1423.113892 1423.960938 1426.393433 1429.087769 1429.31958 1428.78894 1427.761841 1424.75 1419.778931 1415.198853 1413.648438 1412.101318 1410.50415 1408.167603 1404.974365 1402.18335 1401.429077 1400.644775 1399.677612 1398.259644 1396.214722 1393.27478 1390.85376 1387.570435 1386.366333 1390.24939 1393.939331 1396.188354 1397.484741 1399.286865 1400.642944 1404.218994 1406.770508 1409.318604 1410.025269 1409.727783 1413.637207 1418.231567 1420.684814 1421.810791 1421.408447 1419.862671 1417.908691 1415.663086 1413.671021 1412.042969 1409.075195 1405.656494 1402.347656 1396.156738 1390.678955 1385.498413 1378.386963 1378.310669 1384.099487 1382.436523 1377.556641 1381.07312 1383.071533 1378.793091 1389.841675 1394.841431 1399.216064 1402.286621 1403.266846 1402.531494 1398.430298 1392.181519 1387.910522 1382.535034 1380.774414 -1670.116455 1669.109375 1672.978149 1679.903442 1681.580322 1682.628662 1683.859009 1688.217407 1690.67395 1692.208984 1695.291626 1699.036255 1702.759399 1704.79834 1707.080322 1709.040161 1710.714844 1711.880737 1712.392944 1711.66748 1708.409546 1704.754517 1701.780273 1697.39978 1702.072632 1706.244629 1709.484863 1711.35791 1711.304443 1710.226562 1710.324463 1711.522339 1712.757812 1713.441162 1713.73584 1711.769653 1708.464478 1706.452881 1703.528931 1699.538696 1694.696777 1691.847534 1688.749878 1685.137939 1682.179077 1683.452759 1688.292236 1694.372437 1696.066528 1695.503296 1691.695923 1688.511597 1687.114624 1689.97229 1695.907837 1700.61084 1704.953369 1707.8927 1708.38208 1704.610229 1697.881714 1690.96521 1687.084595 1679.29248 1677.582764 1676.417114 1671.55481 1670.979492 1666.981445 1659.454956 1650.480591 1640.978516 1630.699341 1618.257812 1606.740845 1601.068237 1600.168457 1609.201904 1618.617798 1626.5625 1637.231812 1650.728638 1666.3396 1676.374634 1683.224976 1681.967651 1670.672241 1663.754395 1655.0177 1642.997314 1633.92041 1635.483032 1627.388672 1607.66687 1596.685791 1610.552124 1625.349854 1647.273071 1660.306519 1670.97522 1674.236816 1673.041748 1663.755249 1655.174927 1645.938599 1638.173828 1627.953735 1611.794678 1603.279785 1600.214478 1584.172241 1571.462891 1567.512573 1559.634399 1548.179688 1535.401611 1554.206787 1564.571167 1571.567139 1567.650269 1556.839355 1538.083496 1536.425781 1541.328003 1539.976196 1535.128784 1545.212646 1556.79126 1571.033325 1581.654541 1585.865601 1576.256592 1563.417969 1556.197388 1548.588623 1540.895874 1526.546753 1511.142456 1500.68457 1488.342285 1484.492188 1482.922485 1482.257568 1478.504761 1476.882324 1479.432495 1483.199463 1486.444336 1486.701538 1487.262451 1489.920044 1491.083618 1491.384399 1491.119141 1489.310181 1486.047119 1483.464844 1482.281006 1481.401367 1479.925293 1477.275391 1473.594482 1473.98877 1474.646118 1475.903809 1477.623413 1478.809692 1480.030762 1483.43811 1488.230591 1499.171631 1511.69873 1525.667114 1544.618042 1562.05542 1571.841675 1579.56897 1577.909302 1572.658325 1562.928467 1555.586792 1552.731812 1552.427734 1551.900757 1549.96814 1546.794678 1544.705811 1545.319824 1547.716187 1548.736572 1547.897827 1548.584229 1551.52417 1555.83252 1560.872314 1565.155029 1570.286255 1575.808716 1581.28418 1586.999634 1596.016724 1601.473633 1608.503052 1612.078247 1611.505615 1610.203491 1609.048706 1606.669312 1603.175659 1600.334961 1596.121948 1599.759766 1612.343262 1621.096191 1629.998047 1636.094238 1635.997192 1635.402588 1633.720459 1631.819092 1629.684448 1628.220825 1627.021973 1626.446777 1625.683228 1625.096191 1623.88208 1620.689819 1616.103027 1612.468628 1610.509399 1609.208618 1606.552612 1601.960205 1610.4552 1612.324707 1610.440063 1603.024414 1593.734985 1584.737549 1586.724365 1587.837158 1586.840454 1582.779053 1574.062866 1572.17041 1566.339966 1559.868774 1555.66394 1562.833496 1569.175781 1572.095093 1572.154907 1572.747803 1574.63562 1574.808716 1569.260132 1566.982666 1565.820679 1567.658936 1575.557129 1575.023315 1560.813843 1546.331665 1524.578613 1514.095093 1517.284668 1528.714355 1535.435669 1542.441162 1554.228027 1564.324707 1573.046021 1584.514404 1603.04187 1616.162964 1633.449951 1648.66748 1655.825684 1659.585327 1674.548706 1688.135376 1698.154175 1708.694458 1718.5271 1731.298584 1733.827881 1730.938232 1723.004517 1718.946167 1712.364746 1702.221191 1684.675415 1665.756226 1649.532593 1637.248657 1636.178223 1640.690552 1640.472168 1636.80542 1631.514404 1641.242432 1646.171997 1649.571045 1648.718506 1642.218628 1636.359009 1633.490112 1628.450195 1625.622437 1619.398438 1607.29541 1593.981567 1580.116333 1566.150269 1558.393677 1554.550903 1557.886963 1558.745361 1555.289062 1552.930908 1562.324707 1579.855103 1600.603271 1608.302002 1609.25 1606.72522 1601.236328 1585.974731 1575.412231 1571.406494 1573.69751 1576.557861 1579.699463 1582.00415 1582.926514 1583.191162 1584.665039 1586.484131 1588.299316 1588.821533 1588.875732 1585.871094 1575.010376 1571.66333 1579.841919 1587.979004 1588.633057 1578.070557 1567.114868 1560.874268 1553.097534 1544.5 1532.779541 1525.909546 1522.807739 1525.214966 1517.833496 1506.851562 1499.33313 1494.211548 1491.089355 1491.76355 1491.469482 1494.38562 1496.109741 1500.031006 1508.111816 1512.357422 1513.530029 1513.49353 1509.588379 1509.789551 1512.434326 1516.515625 1519.779907 1518.455566 1515.572876 1513.013062 1510.455688 1507.062988 1502.471436 1498.480103 1492.803467 1489.995728 1493.642212 1495.238159 1495.56189 1494.669312 1492.745483 1490.364136 1487.575684 1483.706299 1478.941528 1475.9552 1473.913574 1471.261841 1471.080078 1472.238525 1475.376465 1482.470703 1487.976685 1491.186157 1494.58313 1498.13916 1501.518433 1502.690918 1502.811035 1501.662109 1496.95874 1491.447266 1490.28064 1492.824707 1494.544189 1494.67981 1493.836792 1492.471191 1490.922729 1489.638794 1489.536255 1489.85022 1491.258301 1493.730469 1498.493774 1501.043701 1486.299194 1473.840698 1457.65918 1437.485962 1419.533936 1403.701294 1396.595459 1386.442749 1384.026367 1383.138794 1375.612793 1358.21167 1336.44812 1327.427734 1323.657837 1327.636719 1335.917236 1358.444336 1381.944702 1399.186157 1411.831177 1426.814697 1441.071167 1458.641235 1474.090454 1488.480103 1503.220703 1522.276489 1542.04187 1559.081787 1569.930054 1570.313843 1565.338867 1559.943604 1554.8302 1549.93457 1545.900757 1543.814331 1542.818848 1541.959595 1539.389893 1535.498413 1528.188843 1521.990967 1508.750366 1499.634399 1496.719116 1499.866333 1504.119751 1505.317627 1506.339478 1513.050537 1527.847412 1544.434814 1552.246338 1550.956787 1548.793335 1545.656128 1539.657593 1527.50769 1514.891113 1503.108887 1498.187744 1500.933594 1510.292969 1518.817139 1525.69104 1527.604614 1526.648315 1524.039917 1518.317749 1514.156982 1511.032349 1504.165161 1500.543457 1493.563965 1490.889526 1491.116821 1489.861694 1488.736938 1483.700806 1479.00354 1476.552856 1468.581421 1463.215942 1459.231445 1455.730469 1453.738647 1451.785767 1449.052124 1446.220703 1443.797485 1442.083984 1440.784668 1440.687012 1441.04895 1440.903198 1439.518433 1434.840576 1429.634888 1425.776489 1421.235962 1416.811157 1417.82251 1420.775024 1424.434448 1426.704712 1431.404053 1436.422607 1441.056274 1446.269287 1449.804688 1445.493408 1436.248413 1426.588135 1422.132812 1419.348633 1421.126465 1426.168823 1428.185913 1427.781128 1426.692871 1423.7771 1420.001221 1416.921753 1414.265869 1411.522339 1409.11084 1407.260376 1405.477783 1403.460449 1401.841797 1400.717041 1399.754761 1398.423706 1396.719971 1393.714233 1390.978027 1392.785278 1393.818604 1395.111084 1397.844849 1400.206909 1402.153442 1403.004517 1403.708374 1405.950562 1410.148438 1413.767456 1416.304688 1416.513794 1415.052124 1419.16272 1422.542358 1424.51001 1424.706299 1423.281494 1420.967407 1418.400879 1415.83606 1413.230347 1410.646851 1405.960083 1401.334229 1397.580566 1393.025269 1389.23584 1382.125488 1376.907227 1377.931396 1379.688477 1378.848633 1376.557495 1376.115601 1376.687988 1388.234253 1394.193359 1397.505371 1399.793579 1400.034546 1398.445557 1394.192261 1387.689697 1379.087891 1375.221313 1374.346069 -1666.19519 1673.172974 1682.045532 1687.890625 1693.08374 1694.996094 1692.271118 1691.484131 1692.477905 1694.088013 1694.241821 1696.735229 1702.467896 1705.049805 1706.518799 1708.656128 1711.294678 1713.166504 1714.424683 1715.270142 1716.048706 1713.68042 1710.189087 1705.854736 1709.755737 1713.6427 1716.596802 1718.684692 1717.586182 1715.708496 1713.8573 1712.981201 1712.567261 1712.358032 1711.258545 1708.290161 1704.265503 1700.57605 1697.233521 1694.296265 1692.344116 1691.150391 1689.181763 1684.292725 1684.2771 1687.93042 1691.480957 1695.271484 1696.565552 1695.658691 1692.64856 1691.314941 1690.88208 1692.432129 1696.040283 1701.773682 1707.428833 1709.62085 1709.574097 1708.519165 1707.223145 1705.633179 1699.627686 1697.390137 1691.605957 1688.265381 1683.024658 1676.404053 1670.757812 1660.024902 1650.483765 1641.098389 1630.911865 1615.462891 1606.072266 1610.769653 1603.881836 1607.505249 1629.335327 1634.287842 1633.018799 1641.481201 1658.889526 1673.121948 1682.897095 1684.696777 1673.863525 1665.000732 1657.516113 1645.920166 1641.691528 1637.142944 1623.910156 1607.413086 1599.315552 1609.95166 1626.0271 1643.442383 1657.950806 1667.355225 1673.016113 1669.818115 1657.925537 1651.15686 1643.936523 1636.489502 1626.48645 1608.757446 1611.004517 1609.139648 1595.437256 1585.115845 1575.763672 1564.010498 1546.984619 1548.231812 1563.748169 1575.343994 1577.640503 1571.649902 1555.017822 1539.02356 1545.382935 1550.582275 1550.784546 1542.942139 1547.902954 1561.625854 1580.277344 1591.721436 1596.427856 1588.633667 1571.598633 1563.481812 1554.74231 1544.80249 1526.747681 1511.949829 1500.757935 1495.309204 1493.877075 1493.625 1491.203735 1486.086548 1486.194946 1491.072021 1495.515381 1498.053711 1497.769653 1496.877441 1498.226807 1499.213501 1499.950562 1499.325684 1498.106201 1493.52002 1487.861084 1487.089355 1486.317871 1485.296753 1483.486572 1481.769409 1483.446533 1487.938599 1488.277954 1487.384888 1484.090576 1481.475098 1482.243286 1485.353882 1491.567749 1507.019653 1519.802734 1540.595703 1556.750244 1577.464111 1586.090088 1576.602295 1568.861206 1561.001343 1550.843506 1546.53125 1545.950439 1545.580078 1544.139526 1541.19751 1536.849731 1540.407349 1542.988647 1542.254883 1541.880371 1545.795898 1549.80481 1553.924683 1559.139038 1563.789795 1567.733032 1572.250977 1576.879395 1581.094849 1586.265625 1593.871216 1602.291016 1610.002197 1613.873413 1617.722412 1617.993652 1615.716553 1611.48291 1610.706909 1608.782593 1604.781006 1609.217163 1618.24646 1627.682739 1634.984009 1635.925293 1635.427124 1633.635742 1631.301025 1629.095093 1627.502441 1626.688232 1626.20166 1625.689331 1624.810303 1622.472168 1615.039917 1608.588013 1605.774414 1603.791382 1601.455322 1597.590576 1595.378906 1604.052734 1612.883789 1611.367188 1604.899292 1596.170532 1591.206787 1588.987427 1585.975952 1583.528809 1577.737915 1575.534058 1573.450195 1569.789429 1563.267334 1562.97583 1566.552612 1572.111572 1575.042725 1575.533081 1575.739868 1574.859375 1570.119995 1563.160278 1558.279663 1557.981079 1557.942505 1564.427002 1567.253296 1558.63208 1545.432617 1522.325806 1514.19458 1521.210693 1533.440918 1541.035522 1549.365234 1568.141235 1580.314453 1588.158569 1595.074097 1606.896729 1622.705811 1643.24939 1657.856812 1667.082031 1677.98645 1680.776855 1694.026001 1707.170898 1714.495972 1725.457031 1734.433472 1733.46106 1731.442505 1726.993408 1723.006958 1718.081421 1708.151489 1696.078613 1683.174316 1663.374634 1644.784302 1650.998047 1654.935425 1653.371338 1648.706055 1645.212891 1655.611938 1660.680664 1661.970093 1659.0 1647.434204 1638.411377 1631.730469 1623.103027 1614.585327 1602.463257 1591.568237 1580.847656 1571.408081 1563.85498 1564.327393 1564.601318 1567.974243 1567.549194 1563.090576 1558.837402 1568.537354 1586.089111 1607.293335 1615.03064 1618.720215 1619.263184 1615.251709 1604.776245 1583.000977 1576.390991 1573.575928 1577.05127 1578.976929 1579.340942 1578.705444 1577.59668 1578.125732 1578.594238 1578.777954 1577.706909 1579.747437 1579.958496 1576.108154 1571.790161 1572.79248 1582.072632 1587.079712 1586.467285 1573.487183 1565.98999 1558.054443 1552.235962 1541.814331 1523.651489 1511.316528 1511.606323 1508.345459 1498.957153 1496.773071 1499.443115 1501.695801 1499.99939 1498.433716 1504.98291 1507.565063 1510.699463 1516.396851 1520.212402 1520.191772 1519.885254 1520.259888 1528.333252 1535.24353 1539.049805 1540.79834 1539.986816 1537.876953 1532.933838 1527.753662 1520.710693 1511.325928 1504.644165 1498.661133 1500.143921 1501.33606 1501.914185 1501.934692 1501.164307 1499.688843 1497.557129 1494.694458 1490.519287 1486.753052 1484.108643 1481.176392 1477.563354 1475.266602 1474.587769 1474.989868 1479.287109 1484.463501 1487.265015 1489.997925 1493.810059 1498.116455 1501.11792 1502.012207 1502.255493 1501.563477 1499.841675 1499.210449 1498.678833 1498.349976 1498.131714 1496.492188 1493.74939 1491.168579 1489.552124 1487.637451 1486.206787 1490.870361 1493.209839 1497.040161 1499.95874 1488.118286 1471.905518 1447.306519 1426.754272 1419.852783 1415.169067 1402.253906 1392.847656 1378.858765 1364.005737 1358.879395 1346.995972 1336.973633 1329.657715 1324.843994 1325.710815 1328.932739 1345.155884 1375.119629 1396.554321 1411.815552 1429.21106 1445.770508 1464.351807 1490.347778 1509.928101 1522.618042 1533.369019 1544.073975 1558.864014 1571.473511 1571.110962 1565.914795 1560.318848 1556.9375 1553.780762 1551.363647 1550.735107 1551.843018 1552.134888 1550.739624 1544.985352 1538.94519 1530.816406 1515.228394 1504.155884 1495.862305 1490.315186 1495.313477 1498.147217 1499.82019 1512.354248 1525.473389 1541.034424 1548.585205 1547.424438 1546.332886 1543.317993 1538.065063 1525.735229 1513.792603 1503.234009 1494.748901 1497.144043 1504.513672 1512.060913 1521.296875 1527.192627 1525.959839 1522.46814 1517.34729 1512.243164 1507.3125 1501.963013 1498.206421 1494.811157 1491.811523 1489.239014 1485.453491 1482.516846 1478.695068 1475.395386 1473.606323 1469.078735 1464.963867 1461.167725 1457.370239 1454.776733 1452.711182 1450.213257 1447.348755 1444.880005 1443.146851 1442.297607 1441.933594 1441.809082 1441.46814 1440.223145 1434.940796 1427.948364 1423.437378 1418.311157 1414.101318 1417.187988 1421.1875 1425.840332 1428.953613 1432.557129 1436.846313 1440.426514 1443.061646 1443.851196 1440.523315 1433.86438 1425.950195 1420.935059 1415.590698 1414.47583 1419.573242 1421.896606 1420.750854 1420.004883 1419.784424 1418.549072 1416.755249 1414.190308 1409.35144 1406.453247 1405.995605 1405.413818 1403.85498 1402.190552 1401.430786 1400.338623 1399.238037 1398.203613 1396.863525 1396.047729 1397.5354 1399.384399 1400.466309 1401.427124 1403.630859 1405.571167 1406.887207 1408.258057 1410.577148 1412.274658 1414.990356 1418.055176 1419.381226 1419.870605 1421.928223 1424.191162 1426.70105 1427.684448 1426.67981 1424.352051 1421.981445 1419.111572 1415.94397 1413.247314 1409.23877 1404.050537 1400.408325 1396.793945 1392.730957 1385.897949 1378.661499 1376.276001 1377.243652 1378.702026 1376.312744 1370.69165 1375.001953 1386.431763 1393.09668 1395.486694 1396.687622 1396.510254 1393.964844 1389.997803 1383.347778 1376.296143 1369.295288 1368.076782 -1668.419189 1677.309326 1686.916748 1696.391602 1704.334229 1710.827393 1711.248535 1706.09668 1702.828979 1702.4198 1702.532471 1702.361816 1704.378418 1706.895386 1707.280518 1708.745728 1712.21582 1715.046143 1717.533203 1719.802124 1721.228516 1721.926758 1720.546509 1716.331177 1716.719238 1720.439331 1721.530029 1721.328369 1720.267944 1718.330078 1715.396851 1713.199463 1712.115356 1711.06897 1708.779907 1705.289673 1699.658203 1694.752075 1693.209351 1692.476929 1692.201782 1691.871826 1691.860596 1695.200928 1694.459229 1692.498901 1695.661377 1696.828491 1696.684082 1694.926147 1693.723022 1693.501709 1693.148193 1693.47937 1695.066528 1701.392456 1707.526123 1709.87854 1710.290527 1710.369385 1709.904663 1709.557251 1705.554199 1700.157837 1697.065552 1683.379761 1676.531494 1670.468628 1663.063965 1654.932251 1646.666382 1636.771851 1626.991699 1609.44397 1614.922363 1613.951416 1605.782104 1622.993774 1639.113892 1645.287476 1651.367065 1653.043335 1656.745483 1671.736084 1683.432861 1687.38623 1676.719849 1667.327759 1658.456543 1652.100464 1645.391602 1637.732544 1622.704712 1606.84436 1600.974731 1607.692139 1620.352539 1639.122192 1654.750366 1664.244995 1666.893311 1659.848755 1653.160278 1647.324463 1640.70105 1633.208496 1622.178467 1613.554443 1618.428345 1611.907593 1601.113403 1588.423828 1575.396484 1558.096436 1549.490723 1558.305908 1573.616211 1583.837769 1581.514893 1568.450439 1550.849365 1545.860229 1553.376099 1558.447144 1557.784424 1549.604614 1551.340576 1564.65271 1585.082275 1599.505737 1603.165649 1594.33374 1580.022949 1569.252686 1559.150024 1548.270996 1526.883423 1520.917236 1508.518188 1503.567871 1505.210571 1504.79834 1501.916992 1495.631958 1499.346191 1504.112183 1507.318237 1508.885254 1508.189087 1507.594482 1511.359131 1513.876953 1514.145386 1512.572266 1508.917236 1503.584839 1497.067505 1494.869141 1493.74353 1491.887695 1489.714233 1489.224121 1490.945557 1492.250488 1492.045776 1491.380615 1489.788818 1487.376587 1482.225342 1483.91626 1488.428345 1500.223145 1510.437134 1525.555176 1541.072632 1551.973877 1568.876221 1568.313721 1563.274658 1558.095093 1551.757202 1546.085815 1538.055298 1539.244385 1539.439819 1536.61499 1535.41626 1537.020752 1539.016357 1537.439087 1536.214233 1540.265381 1545.802856 1549.244995 1554.41394 1560.360474 1564.213989 1567.608154 1571.810059 1574.613281 1581.91626 1589.319946 1600.177734 1608.40625 1614.362061 1619.0802 1624.379517 1624.399048 1622.390137 1621.276489 1621.183716 1617.532349 1608.262939 1619.614868 1627.474609 1634.267212 1635.813721 1635.121826 1632.907471 1629.93811 1626.852417 1625.166504 1624.932251 1624.434082 1624.783325 1624.494995 1622.826172 1613.872803 1605.730957 1598.366699 1597.151733 1595.709595 1592.747681 1588.398926 1595.282593 1607.832275 1612.458618 1610.555542 1599.43457 1594.347168 1589.519897 1584.302124 1577.991089 1572.58667 1570.537231 1568.612915 1566.800171 1564.431152 1564.290283 1566.206909 1568.818359 1571.28064 1573.19043 1572.747925 1569.156006 1564.032837 1557.761963 1550.206299 1550.660522 1551.80896 1555.011719 1558.007202 1551.314697 1539.581787 1525.960938 1516.4198 1522.268799 1537.621216 1545.311646 1555.778809 1575.281006 1588.412231 1602.944092 1613.181274 1617.42334 1625.980957 1646.785278 1665.077881 1680.700439 1690.312744 1697.418091 1705.933594 1712.835083 1719.251221 1729.571167 1733.359131 1732.08606 1729.949219 1726.890259 1723.15564 1718.292603 1710.140381 1701.902832 1691.231567 1669.050171 1666.054932 1669.704834 1667.566284 1664.428589 1658.12854 1657.661011 1662.050903 1663.406128 1662.756226 1660.123169 1643.447144 1629.526123 1619.75769 1609.647339 1600.168091 1593.138306 1582.983154 1573.615723 1572.934692 1573.638062 1572.935669 1575.604614 1577.710571 1576.088623 1570.84436 1564.879272 1573.342773 1587.914551 1606.775391 1617.258423 1623.930786 1624.396973 1620.305664 1613.996826 1598.087769 1582.400024 1579.84375 1579.564087 1579.746826 1578.572388 1575.654419 1572.555786 1572.0625 1571.396973 1570.410278 1569.058105 1570.191528 1574.080811 1573.326538 1566.140747 1566.075439 1575.040405 1579.507324 1580.262451 1577.530518 1571.194702 1558.40686 1551.448853 1541.571167 1528.934937 1512.847656 1504.056152 1499.697998 1505.751587 1508.311157 1507.73584 1506.379517 1506.476318 1511.084839 1516.617554 1518.278564 1519.304932 1524.265137 1528.937622 1527.096924 1526.764526 1533.390991 1543.546387 1552.972046 1557.085571 1558.196777 1557.673096 1555.761719 1551.268311 1541.424072 1532.905273 1524.561157 1513.231567 1508.710083 1509.448242 1513.441406 1514.510864 1514.733398 1513.437988 1509.939819 1505.892578 1502.504272 1497.594604 1492.526489 1490.580078 1489.099976 1486.915039 1481.926147 1479.044556 1478.504272 1480.296265 1482.970947 1484.828247 1486.397095 1488.582153 1492.687134 1495.805542 1497.763794 1500.068848 1502.226074 1502.662842 1502.706543 1502.159668 1501.812378 1501.057739 1498.607666 1493.658569 1488.11084 1485.765137 1481.353027 1476.672852 1484.19165 1488.987305 1491.9729 1492.718018 1485.09314 1476.648804 1465.336914 1452.281372 1441.669678 1433.426147 1419.341675 1409.385376 1397.115356 1381.076782 1364.075317 1349.645386 1339.479126 1332.223267 1326.93042 1324.982666 1327.062012 1337.460938 1366.201538 1393.548584 1411.168457 1425.641113 1441.383789 1458.045654 1483.213135 1507.059937 1524.567627 1540.178345 1552.767578 1564.628662 1575.985718 1574.150757 1568.372559 1563.266846 1560.496582 1559.677124 1559.343262 1559.591797 1560.138916 1559.713989 1557.692139 1552.337036 1545.783447 1539.754761 1522.254028 1511.067505 1497.942749 1489.312744 1486.797119 1491.103027 1497.911987 1508.511719 1518.930176 1532.73645 1539.856445 1540.615112 1542.394043 1541.741455 1537.9021 1524.66333 1511.996582 1503.57019 1491.682129 1485.559692 1497.520508 1505.873169 1514.264404 1523.768311 1523.878662 1519.257812 1513.921387 1509.922729 1504.093506 1499.02002 1495.610596 1491.599731 1489.67334 1486.106812 1478.327759 1475.805786 1473.32373 1470.518921 1468.20813 1466.003418 1463.028076 1460.034302 1456.526367 1454.110352 1452.179932 1449.515137 1446.418213 1444.220581 1443.171021 1442.59314 1442.278931 1442.050659 1441.116943 1438.692261 1433.359131 1427.58252 1422.121338 1416.093506 1413.591553 1416.808472 1421.123413 1426.366089 1429.27417 1432.275146 1435.46106 1438.001343 1439.760742 1439.282227 1436.274902 1430.296021 1424.71582 1420.08606 1416.153931 1413.19397 1412.487671 1413.707275 1411.588257 1412.583008 1416.224976 1416.243164 1415.520142 1411.681885 1405.206055 1402.416504 1404.51062 1405.343384 1404.92041 1403.110107 1401.964478 1401.085449 1400.345459 1399.794067 1399.939575 1400.230591 1402.595215 1403.733032 1404.304443 1404.98938 1406.595215 1408.560547 1410.403564 1412.303101 1414.355835 1416.003662 1418.085571 1420.432129 1422.05603 1423.281128 1424.949097 1425.720703 1428.1073 1429.722778 1429.296387 1427.753296 1426.307373 1423.02771 1419.426758 1416.821777 1414.120239 1409.471558 1404.599487 1399.983887 1394.846802 1388.818359 1380.954956 1376.511108 1372.42395 1373.032959 1370.892334 1365.630371 1370.762329 1382.512451 1391.188477 1393.177856 1394.167114 1393.784668 1391.289795 1386.057373 1379.604004 1371.720337 1365.120605 1361.932861 -1671.046265 1681.918945 1691.395996 1702.438721 1713.394653 1721.320068 1723.464844 1721.782227 1718.431641 1714.124512 1710.919922 1709.706543 1708.520752 1709.831909 1710.507324 1711.840332 1713.920044 1716.240356 1718.715332 1721.869263 1724.148438 1725.036743 1723.634521 1721.784302 1722.054932 1722.76416 1722.583496 1721.921143 1720.535156 1718.143677 1714.279175 1711.574097 1710.231934 1708.587891 1705.006226 1700.380005 1696.090454 1693.184082 1693.006592 1692.931519 1693.177856 1693.116821 1694.945923 1697.377441 1698.53833 1697.201538 1697.875977 1697.373291 1695.818237 1695.024048 1694.415894 1695.012207 1695.402344 1695.272339 1694.896606 1700.918213 1707.31604 1709.793091 1710.594971 1711.074463 1708.464233 1703.408325 1698.764282 1695.405884 1690.210571 1677.331665 1667.36853 1659.367432 1653.818237 1644.796509 1637.550415 1628.102295 1618.986206 1610.101807 1624.374756 1620.540039 1607.326782 1628.727295 1640.075195 1649.032959 1658.046753 1669.750244 1675.125854 1679.80127 1695.8479 1692.208008 1680.177612 1671.325317 1664.22168 1657.754272 1648.324951 1637.976807 1621.606079 1610.138794 1603.618042 1606.765747 1616.468994 1634.796997 1651.899658 1660.090454 1659.210938 1654.343506 1647.665527 1643.148682 1637.237427 1627.773071 1621.226074 1623.13916 1622.334595 1612.006226 1599.592285 1583.591187 1564.839111 1560.133423 1572.476929 1575.868408 1587.514771 1593.373535 1584.040405 1566.00415 1555.216675 1552.174927 1560.168945 1567.307495 1565.933228 1556.411621 1558.037964 1566.384521 1588.807739 1601.936523 1609.313721 1600.234497 1589.328003 1575.391968 1563.422607 1551.004517 1541.560303 1533.362427 1520.186646 1522.194214 1522.696045 1519.17749 1514.674072 1508.234375 1509.164795 1516.202026 1519.861694 1520.898193 1518.906494 1520.039551 1526.922241 1528.91626 1528.225342 1525.948486 1520.35791 1513.208496 1505.644409 1504.508911 1503.140503 1500.316162 1497.20874 1497.183105 1497.247559 1497.169312 1496.165161 1494.787231 1492.869141 1490.434204 1487.505615 1484.375244 1486.327637 1492.442139 1498.509277 1510.889771 1524.554321 1538.332397 1547.19751 1553.712891 1554.398682 1551.78418 1548.796997 1543.77063 1537.240112 1535.886353 1535.942261 1534.988403 1534.794189 1535.433472 1536.006836 1535.60022 1535.794556 1536.177979 1539.484009 1546.03772 1548.880371 1554.31958 1558.884155 1561.056641 1566.16272 1574.48999 1580.708618 1588.167725 1595.667603 1600.555664 1606.588989 1611.015991 1620.685669 1624.743896 1626.759766 1628.09729 1627.895386 1626.574219 1621.789551 1620.292114 1628.271973 1634.637207 1635.703491 1634.647217 1631.24585 1627.733887 1623.70459 1621.395386 1620.432861 1619.145386 1620.866577 1624.245361 1624.085571 1618.389526 1608.806885 1598.898926 1594.703613 1591.942383 1589.040649 1584.931274 1585.536621 1600.611694 1611.534058 1613.04187 1601.810547 1594.593994 1589.379395 1584.807007 1578.863159 1574.560059 1570.871826 1563.643677 1561.515015 1561.544312 1562.529053 1563.713745 1562.682861 1561.374756 1564.634399 1563.720825 1562.67981 1557.990601 1552.032593 1545.612183 1543.460571 1543.792847 1543.966675 1543.248901 1539.245239 1533.882446 1526.967407 1518.063965 1521.979614 1538.679199 1548.908081 1558.065186 1577.739746 1591.839966 1606.786011 1625.244385 1639.191406 1651.244263 1659.757935 1670.613647 1686.613159 1697.140015 1703.421387 1710.936157 1717.269043 1722.859741 1729.217407 1731.161011 1729.893555 1727.899292 1725.593872 1722.875854 1718.426636 1712.25061 1705.152954 1695.731079 1684.729736 1684.446411 1684.14856 1680.096436 1674.724854 1667.818848 1666.396118 1666.350098 1664.959595 1661.8479 1654.474731 1630.468994 1620.786743 1612.732056 1607.957642 1601.4375 1592.955811 1584.790894 1579.782593 1582.807617 1584.209106 1585.240234 1587.609985 1590.153564 1583.637207 1577.343628 1570.741577 1575.753174 1589.133911 1610.82605 1618.971924 1624.927612 1626.389038 1624.53479 1610.389648 1599.960449 1584.038574 1584.423828 1584.765137 1583.203003 1581.116699 1578.055298 1575.077271 1571.907349 1570.174561 1566.914917 1564.14624 1563.195679 1563.179321 1564.362305 1561.4729 1559.300415 1565.278931 1568.720825 1569.94043 1570.522217 1565.482178 1555.133179 1546.680786 1533.702271 1515.560669 1508.246338 1506.081665 1509.51355 1516.942627 1517.921997 1513.745361 1510.616455 1510.865234 1515.893433 1523.475098 1535.992676 1532.173828 1535.95459 1540.834351 1540.40332 1535.440063 1543.504883 1554.53186 1563.475708 1569.382812 1571.959351 1571.581421 1567.53186 1562.5271 1554.137939 1541.604736 1528.348877 1521.855591 1520.843628 1523.949463 1525.768799 1524.943481 1523.724731 1522.36499 1518.99231 1514.723755 1509.473999 1498.268921 1496.477295 1494.471313 1492.748901 1491.029663 1488.622192 1484.833252 1483.189697 1482.789307 1483.060303 1483.204712 1483.556763 1484.889282 1487.460205 1489.415771 1492.590088 1497.36377 1501.80481 1503.285522 1503.263672 1503.130615 1502.734985 1502.186768 1499.747192 1493.867676 1488.325439 1480.373901 1474.974976 1472.794678 1474.562256 1481.912476 1487.958252 1491.086304 1480.598755 1468.173706 1460.766724 1450.830444 1440.926514 1428.825439 1414.975952 1406.577148 1404.990723 1392.337891 1379.301392 1359.184326 1343.550049 1335.169556 1328.804688 1325.381958 1327.093628 1338.570068 1359.515503 1386.541748 1403.713501 1418.349487 1431.391357 1446.084351 1465.246826 1489.421387 1511.099731 1528.30481 1544.2771 1561.478882 1572.693604 1571.252686 1566.406616 1564.68042 1563.627808 1563.491821 1565.006836 1569.28418 1570.616455 1566.156128 1563.643799 1561.010254 1552.155396 1545.169434 1528.315186 1516.964722 1502.448608 1492.52124 1484.006592 1484.027466 1491.200928 1500.843018 1510.661865 1519.079102 1526.370361 1533.784668 1539.104614 1540.861816 1537.927734 1522.76123 1512.2771 1502.017944 1486.89502 1480.518921 1485.905518 1499.373047 1507.674194 1513.632446 1517.907471 1515.887451 1510.503174 1505.742432 1500.588257 1496.543945 1492.882568 1489.061646 1484.123047 1476.927979 1472.319458 1469.346802 1467.921143 1465.616089 1462.576416 1460.106812 1455.779785 1454.648926 1454.009521 1452.58728 1450.681396 1446.734253 1441.111816 1441.666504 1442.182495 1442.115112 1442.024658 1441.678955 1440.581665 1436.496216 1431.168213 1425.402344 1420.050903 1414.69873 1413.133789 1415.59375 1420.236328 1424.87146 1428.223511 1431.401001 1433.529419 1435.200195 1434.880981 1433.278931 1431.331665 1427.397339 1423.459595 1419.780884 1416.271851 1411.270386 1405.154541 1402.130615 1403.145386 1402.75708 1408.26001 1410.43335 1409.976685 1405.598511 1401.387573 1400.723022 1403.853149 1406.213745 1406.746582 1405.162109 1402.583496 1401.780396 1401.365967 1401.699707 1402.148071 1403.452026 1404.378784 1404.798828 1405.194092 1406.556519 1408.911133 1411.377319 1413.46582 1415.627441 1417.562988 1419.474487 1421.624146 1423.679565 1424.821777 1426.103027 1427.594727 1429.227783 1431.778442 1432.284058 1431.435547 1430.000488 1428.648193 1426.653442 1423.094971 1420.141602 1417.734985 1415.341309 1409.446533 1403.004883 1396.912964 1390.888062 1383.791016 1377.668823 1370.910522 1365.086426 1365.894653 1364.378052 1364.234619 1375.275269 1384.932617 1390.038696 1391.045166 1390.302734 1386.434082 1380.459473 1373.738647 1366.398682 1360.835571 1355.040894 -1674.456665 1686.523071 1695.711182 1706.939331 1720.062256 1726.670898 1729.569214 1728.634521 1725.973755 1722.961426 1717.833618 1715.35498 1713.526489 1713.670776 1714.497314 1715.553589 1716.664062 1717.746582 1719.001587 1723.511108 1727.942871 1729.624023 1727.931519 1726.241089 1724.928711 1724.057617 1723.012329 1722.134521 1720.698853 1716.99292 1710.38501 1706.866577 1705.371216 1702.901123 1698.778687 1695.018799 1693.880493 1693.61084 1693.431763 1694.008179 1695.855347 1697.106689 1698.623291 1704.955933 1705.737915 1702.341309 1699.729126 1697.525024 1695.108276 1695.200806 1696.936279 1698.533691 1699.395874 1698.919434 1698.237183 1702.962524 1707.435303 1709.83374 1710.597656 1710.043457 1704.006836 1693.812988 1690.138062 1687.765991 1683.548462 1670.871216 1661.845215 1653.928589 1647.886353 1636.317505 1626.303467 1618.116333 1617.40625 1624.45813 1633.450928 1626.639648 1610.565063 1622.159546 1637.493408 1646.792358 1656.105713 1670.57666 1675.244385 1681.852173 1691.340942 1692.654907 1682.635132 1675.769165 1668.554199 1661.213867 1648.986938 1631.782837 1622.093506 1619.193237 1609.652832 1606.703857 1614.894653 1633.542603 1648.147217 1653.450684 1653.394531 1649.48584 1643.792236 1638.757202 1633.810547 1624.762085 1625.346069 1625.484131 1620.953125 1606.658081 1593.35437 1575.739868 1571.568359 1582.902588 1594.928711 1598.14563 1604.362671 1600.905151 1582.53418 1570.03418 1563.942505 1558.619263 1569.170288 1576.487061 1575.103638 1559.941895 1564.080811 1574.816284 1590.368652 1605.026611 1615.293945 1608.483765 1595.374512 1584.927124 1576.602783 1565.249512 1551.142334 1542.702637 1537.011963 1540.071655 1539.30481 1534.657959 1525.708618 1520.458496 1526.700195 1534.322632 1536.602417 1535.805176 1530.586914 1536.456055 1538.150146 1538.525269 1537.786255 1534.399658 1528.96521 1521.617432 1515.865479 1515.848022 1513.171387 1508.789673 1504.454956 1503.362061 1502.663086 1501.833496 1500.405273 1498.420898 1496.127808 1493.142578 1490.374268 1488.919678 1488.117798 1486.783569 1493.025879 1499.635986 1511.087402 1521.456665 1533.928833 1540.617188 1543.440552 1542.481445 1541.626099 1541.821411 1539.147705 1535.846436 1534.612549 1534.035645 1533.809692 1534.09375 1534.67749 1535.328613 1536.345581 1537.844971 1540.110962 1544.132324 1546.805786 1548.263794 1549.353882 1555.682495 1562.448364 1571.692993 1577.169434 1583.586182 1588.503662 1592.89624 1596.428101 1606.721069 1616.003906 1622.391724 1629.361938 1633.546875 1633.63501 1631.52771 1628.689819 1624.459229 1631.575439 1635.154053 1635.933105 1633.660522 1630.802124 1625.539917 1621.42395 1616.561035 1611.930298 1610.431641 1612.321899 1620.935913 1624.757324 1620.289429 1611.823364 1601.613892 1595.317017 1589.202881 1587.494995 1579.700928 1576.532349 1598.372559 1610.164429 1613.446167 1605.019531 1594.705811 1588.843384 1583.87085 1580.089233 1576.66687 1572.350952 1564.979248 1562.19165 1559.587036 1558.851196 1559.054321 1557.918823 1555.377441 1556.991089 1555.869507 1549.890991 1549.105591 1544.848267 1537.84314 1535.769531 1535.906006 1533.109375 1531.396362 1529.908447 1528.066406 1525.285522 1519.090454 1523.410767 1539.557983 1551.49292 1561.382935 1577.30188 1590.538574 1604.618652 1626.770508 1644.210571 1655.083496 1668.273193 1682.353516 1691.062012 1698.784058 1705.645752 1713.431396 1721.015259 1724.348022 1726.923706 1728.26062 1727.343018 1725.758057 1723.935059 1721.713745 1717.862183 1712.155762 1707.833984 1700.977417 1698.718384 1695.807617 1690.997559 1686.848511 1683.660645 1676.335693 1672.277832 1668.994019 1667.336182 1662.989746 1656.416138 1643.168579 1632.644409 1625.122437 1618.807495 1610.318604 1595.384277 1585.641602 1587.210083 1593.697021 1596.083984 1598.189819 1604.361816 1604.388794 1594.971436 1583.083496 1574.220093 1578.874023 1597.880005 1614.160034 1620.896484 1627.672607 1628.510376 1623.47937 1610.395386 1596.339355 1593.088379 1595.927979 1596.980591 1592.207886 1586.588867 1582.171021 1579.850952 1576.118042 1572.921265 1566.760742 1560.307373 1559.574341 1559.616943 1559.672119 1558.463257 1556.211548 1556.515869 1558.822754 1559.953857 1559.467285 1554.662109 1545.194092 1531.240112 1518.86084 1516.797241 1517.210693 1511.839722 1517.655396 1525.682983 1526.278442 1521.785522 1518.812256 1516.426147 1519.677368 1529.544678 1550.407593 1553.65686 1553.539551 1556.513916 1557.599121 1556.917603 1563.355713 1567.799683 1573.433228 1579.469604 1582.250854 1582.188599 1577.109375 1569.890503 1561.789185 1546.244019 1535.983521 1530.990356 1533.112671 1539.231201 1540.301636 1538.241211 1535.53064 1532.269531 1528.358398 1523.644043 1519.326904 1511.013916 1499.390381 1497.530518 1495.873169 1493.831421 1491.191895 1488.590332 1486.6427 1485.302002 1483.430298 1481.956421 1480.945923 1480.998169 1482.65271 1484.341309 1487.699097 1493.657593 1499.857056 1502.884033 1503.675903 1503.427124 1502.892944 1501.42749 1498.097656 1493.712036 1490.532227 1484.030396 1474.498291 1468.987427 1467.406982 1476.146362 1484.488281 1490.236694 1487.187866 1465.557251 1441.980103 1425.500854 1414.200317 1406.699585 1393.587646 1387.873535 1382.841064 1382.488892 1379.933472 1363.446045 1348.307495 1337.532227 1330.366943 1326.329468 1327.320312 1335.812378 1352.710327 1375.206665 1393.108521 1407.539062 1422.418579 1439.558838 1460.091309 1499.555908 1511.309692 1525.892212 1548.560791 1560.533813 1559.300659 1557.409424 1560.865845 1564.236206 1563.153687 1562.559814 1564.654175 1570.217529 1572.04541 1567.322998 1564.604004 1563.59375 1562.281616 1550.111938 1533.884155 1522.094727 1508.222534 1495.69397 1482.275635 1476.973267 1485.276367 1493.189941 1501.047119 1509.266968 1521.467529 1532.330078 1538.936157 1539.804443 1537.244873 1522.099365 1511.767334 1499.475342 1486.261841 1475.7677 1476.271729 1488.380981 1500.921265 1506.744995 1513.744385 1512.660034 1508.068359 1503.100952 1498.076782 1491.759888 1489.593872 1488.84436 1483.440063 1474.209473 1465.036499 1462.831665 1461.55188 1460.05603 1456.736816 1453.651245 1448.377808 1447.55835 1448.533813 1448.77832 1446.629517 1442.679688 1438.628784 1438.416504 1440.594727 1441.005127 1440.718384 1440.02124 1439.07373 1434.404297 1429.759888 1424.31189 1418.045166 1413.118652 1411.836914 1413.816162 1418.380737 1423.429199 1427.706909 1430.445312 1431.430054 1431.195435 1428.999146 1427.043091 1426.033203 1423.697632 1420.782959 1418.046509 1415.143799 1411.158447 1406.785889 1402.911377 1400.487793 1399.373169 1400.090698 1402.046875 1401.961792 1400.498657 1396.704224 1396.886963 1403.683472 1409.006958 1410.572388 1408.134888 1405.2771 1404.521606 1403.944946 1403.4823 1402.909424 1404.083496 1404.863159 1402.723755 1402.334351 1405.104614 1409.534424 1413.36853 1416.023804 1418.356201 1420.583374 1422.792725 1424.960815 1426.701294 1428.324585 1431.502563 1434.143921 1436.415894 1436.884033 1435.328003 1433.381226 1431.639038 1430.076416 1428.042603 1425.091431 1423.401855 1421.597412 1418.810059 1414.551758 1406.022095 1398.86084 1392.103394 1385.911255 1380.095459 1373.749634 1366.928345 1364.241333 1362.913696 1362.161255 1366.463013 1376.067627 1380.976562 1381.905396 1380.608643 1377.565063 1372.118042 1366.123169 1361.346558 1356.64917 1351.42627 -1679.900879 1693.279663 1701.689087 1713.407227 1723.599609 1731.721558 1734.112915 1733.271606 1730.913086 1728.380981 1724.600342 1720.177612 1717.302124 1716.674438 1717.676147 1719.573853 1720.609375 1720.991089 1720.947388 1726.041626 1731.422485 1732.856079 1731.338867 1729.323975 1727.150513 1724.981812 1723.122559 1721.416504 1719.089966 1714.258911 1709.099121 1704.859619 1701.126587 1696.556152 1694.035645 1694.134766 1695.328369 1695.933838 1695.440063 1696.168091 1698.850708 1701.241333 1704.946411 1708.310669 1708.105957 1704.74939 1700.841675 1696.631104 1695.032715 1698.077637 1703.930542 1705.928711 1704.362793 1702.683228 1703.078979 1706.613159 1709.184692 1710.570923 1710.709595 1708.761353 1700.545532 1687.582397 1680.062744 1677.411865 1670.359009 1664.324341 1657.700562 1649.683472 1639.752563 1626.999268 1619.841797 1629.002197 1636.914551 1643.624756 1646.425659 1635.939453 1621.463501 1614.577881 1624.026123 1639.172241 1647.828247 1657.256104 1668.500854 1674.374512 1681.618042 1687.685913 1685.209229 1680.118286 1670.839355 1659.131104 1645.928833 1641.456177 1639.380737 1631.483276 1623.138428 1609.46167 1609.860474 1625.07251 1640.78894 1647.866577 1648.554077 1645.52478 1640.682495 1635.836548 1632.161621 1634.236816 1633.402588 1625.774658 1612.546143 1596.920776 1584.802979 1577.788574 1589.747192 1599.89209 1610.038574 1614.52124 1614.392822 1601.982544 1587.698242 1578.661133 1567.722778 1560.967041 1575.718994 1581.931641 1581.190796 1569.428467 1572.911011 1583.151123 1592.684082 1606.063477 1622.538696 1619.182251 1611.12085 1597.660156 1586.5354 1573.514038 1564.569458 1550.83606 1554.454346 1555.171143 1553.407715 1549.084229 1539.553101 1536.365234 1543.429932 1545.808472 1546.452515 1545.436401 1542.098511 1545.379761 1545.69104 1545.300781 1544.213257 1542.212646 1538.191162 1531.043335 1525.520508 1524.827393 1522.807373 1516.092773 1510.472046 1509.37561 1508.125977 1506.106689 1503.718018 1501.735962 1499.25708 1495.89917 1493.268921 1491.458008 1490.180908 1488.358887 1489.244629 1495.407593 1500.801636 1511.260376 1519.839355 1525.318848 1532.148804 1534.576538 1537.486938 1542.257935 1540.039429 1535.931763 1534.201172 1533.246094 1533.046997 1533.30603 1534.046997 1535.235718 1537.24231 1539.177856 1541.023682 1543.127075 1545.155762 1546.478516 1547.597778 1551.235596 1559.639526 1565.381226 1571.415405 1575.681885 1582.054443 1589.680908 1598.004028 1606.258301 1613.581177 1619.65918 1628.803589 1636.049194 1636.530518 1636.034302 1635.018188 1635.006104 1634.596191 1636.070312 1636.141602 1635.44873 1632.626343 1624.643555 1618.915894 1613.028931 1607.499512 1603.685791 1605.045532 1610.553589 1618.585327 1617.695923 1611.969116 1602.561157 1593.810181 1585.809937 1582.092285 1575.643311 1573.235718 1592.71875 1606.240601 1613.697266 1607.186523 1595.914307 1586.207031 1581.813965 1579.632324 1578.731445 1574.595703 1571.458862 1565.525269 1559.812256 1554.618286 1552.335938 1551.017822 1547.538574 1549.369995 1548.803589 1543.748535 1538.316895 1535.219116 1532.661499 1529.994751 1527.893677 1526.064331 1523.80603 1523.167969 1522.667603 1522.508423 1523.465698 1532.052124 1540.456055 1548.529541 1559.743164 1572.418701 1588.55603 1600.380005 1619.433105 1640.202881 1655.354614 1669.270752 1682.704712 1691.672607 1699.177734 1706.246826 1714.692627 1720.895752 1723.50647 1724.890137 1725.657471 1724.962036 1723.463989 1721.498657 1719.057129 1714.369263 1709.284424 1705.175293 1701.787598 1698.560181 1696.116333 1692.078857 1687.291382 1685.576782 1684.402832 1678.631226 1673.29126 1671.105957 1665.678711 1660.751099 1651.927979 1641.994507 1635.516479 1626.23645 1615.448242 1596.6875 1585.344849 1596.560059 1603.511719 1608.48291 1614.201416 1620.321533 1618.493774 1607.017334 1591.266357 1580.882935 1587.10498 1604.534424 1615.384766 1623.54541 1634.793457 1631.491455 1620.247803 1609.517822 1599.440674 1607.414185 1609.34082 1606.217529 1599.838501 1593.745361 1589.059326 1585.733765 1583.396606 1580.119629 1574.875366 1567.565063 1563.11499 1560.352051 1559.536621 1557.737427 1554.121704 1549.42395 1549.111328 1548.793335 1547.049927 1543.2854 1534.200806 1522.983521 1526.414673 1527.678589 1527.462036 1522.296021 1526.749146 1530.29248 1530.747803 1528.490845 1527.885986 1524.40686 1521.47522 1530.753662 1547.93689 1557.094604 1560.732056 1565.165039 1568.168091 1571.370239 1577.257202 1582.842041 1586.469971 1591.199829 1592.717285 1591.107544 1586.943604 1576.621948 1566.875366 1556.945435 1549.531738 1540.580322 1546.458252 1552.897339 1553.843018 1551.745239 1549.020264 1545.126099 1540.79541 1534.759521 1528.177734 1520.265991 1511.267334 1502.888062 1498.699463 1496.587646 1494.100708 1491.432251 1489.21167 1487.371216 1483.890747 1480.63855 1477.939453 1476.849121 1477.756714 1480.210938 1483.853882 1488.739136 1494.30481 1498.428711 1501.322876 1503.229004 1502.716797 1501.241699 1496.587769 1489.056641 1487.989868 1482.785278 1475.475586 1467.187744 1462.396362 1471.573975 1480.775757 1487.938965 1489.099487 1475.290527 1454.950195 1434.406982 1415.526123 1405.094238 1396.528198 1392.218262 1378.206299 1365.786987 1364.07666 1357.175293 1346.740479 1341.831909 1334.522705 1327.248657 1327.419556 1337.588013 1359.511353 1381.650757 1403.23645 1412.684448 1428.601685 1448.509521 1471.608276 1502.766357 1521.935303 1540.520752 1551.600586 1551.117676 1547.606079 1543.912964 1547.143677 1555.224854 1557.248169 1557.955566 1559.763428 1564.39563 1565.317993 1561.889526 1559.025391 1559.432739 1560.189941 1553.469727 1537.682739 1525.244019 1511.828003 1499.006836 1483.837524 1473.259399 1477.866455 1486.065063 1497.425903 1508.337036 1519.589478 1528.745605 1536.501099 1536.445679 1532.141968 1521.116699 1509.568481 1498.354492 1484.531982 1474.425049 1463.243896 1477.308105 1488.596069 1497.307129 1505.882324 1507.881714 1504.257324 1500.603516 1493.941528 1487.702881 1484.519897 1483.242676 1479.849487 1476.388916 1464.800415 1459.783447 1454.065796 1452.889648 1451.356445 1443.107788 1439.281372 1439.219849 1442.934448 1444.030273 1442.977661 1440.858032 1436.24353 1434.862793 1437.195801 1438.627319 1438.856323 1437.609497 1434.130371 1430.352539 1426.887085 1421.321411 1415.511475 1408.639771 1407.937012 1412.298462 1417.255127 1422.774048 1427.683716 1429.762695 1429.772461 1427.810059 1423.976196 1418.714355 1419.288208 1419.270386 1417.550049 1415.555664 1412.984619 1410.396362 1407.137085 1403.835693 1400.789917 1396.539551 1392.987915 1395.678955 1396.422729 1395.438232 1391.719116 1391.882812 1402.22937 1413.62915 1414.567749 1412.240234 1409.967651 1407.836304 1405.485474 1404.016113 1403.089478 1399.817627 1397.814575 1394.410034 1392.779541 1399.396851 1405.211304 1415.068115 1417.611694 1420.491699 1423.401489 1425.945435 1428.07019 1430.226929 1434.06958 1438.684204 1440.599365 1441.172607 1439.758423 1437.212158 1434.572388 1432.492798 1431.145142 1429.607056 1427.420166 1427.502075 1426.278931 1421.779785 1417.339722 1409.283325 1400.774414 1393.830078 1387.722656 1382.428223 1376.400391 1369.836304 1365.592163 1363.366333 1361.50647 1361.170288 1365.418823 1369.646729 1370.383301 1368.471436 1366.212891 1363.222778 1360.276245 1357.150391 1352.285767 1343.078247 -1686.10083 1699.026855 1708.73877 1721.402954 1725.277954 1732.38501 1734.893066 1735.172852 1734.777222 1733.850098 1732.646851 1727.040161 1719.160522 1718.773926 1720.779297 1722.339966 1723.409302 1724.757935 1726.231812 1728.865723 1732.411987 1733.28418 1732.689087 1730.397339 1728.003296 1724.828979 1721.769775 1719.172974 1715.429199 1710.985962 1706.855713 1703.487183 1699.822632 1695.685913 1694.222046 1695.621948 1698.519409 1699.855957 1700.380127 1700.893311 1702.225098 1703.82251 1706.979614 1708.829102 1708.163208 1705.055664 1701.784058 1698.923706 1698.014771 1701.100342 1707.859253 1709.206665 1708.514526 1706.63562 1705.236694 1707.655762 1710.702026 1711.32251 1710.922974 1707.214966 1697.904053 1685.175293 1669.213989 1665.585205 1662.337646 1657.899292 1650.278198 1641.076416 1631.284546 1624.084106 1632.101318 1640.931519 1648.563232 1656.927002 1653.475952 1641.615234 1629.77832 1619.576294 1617.392822 1622.040527 1634.71106 1642.135376 1646.23877 1656.266724 1668.853638 1683.555176 1687.167725 1684.014038 1673.070068 1665.039917 1661.65979 1656.152466 1650.98999 1640.052612 1628.472412 1618.474243 1611.442871 1615.678101 1628.093506 1636.038818 1638.772583 1638.497192 1637.399414 1636.413574 1636.328613 1637.333618 1635.800537 1627.373779 1614.011597 1594.793091 1581.327637 1593.571411 1604.319702 1613.131226 1623.339355 1626.114624 1618.731323 1604.42749 1599.157349 1589.417725 1576.96936 1570.665894 1584.549805 1592.582397 1590.625244 1578.655884 1580.845337 1589.499023 1596.853027 1612.215942 1625.333252 1635.57666 1625.222534 1613.157959 1598.851074 1585.100952 1572.716919 1567.314819 1571.236816 1571.214233 1566.822388 1560.584473 1550.257935 1549.558594 1557.978149 1562.065796 1561.724609 1558.300537 1554.996826 1555.786499 1555.092529 1553.379761 1551.437256 1550.238037 1546.372925 1541.575195 1538.946045 1536.3125 1531.259521 1524.830933 1517.476562 1516.621338 1513.857422 1510.796753 1507.311401 1504.185547 1501.331421 1497.932129 1495.377075 1493.615356 1491.944092 1490.074097 1488.634644 1492.707275 1497.11853 1501.551392 1514.559448 1522.399292 1533.708618 1542.407104 1548.093628 1547.376587 1540.350464 1535.824219 1533.377075 1532.358521 1532.114014 1532.486328 1533.50647 1534.969727 1536.973022 1539.061035 1541.033691 1543.246948 1545.544189 1547.65332 1549.182861 1550.489746 1556.95752 1559.748169 1563.052124 1569.532837 1577.023071 1587.587036 1595.248413 1603.227173 1611.327393 1617.455688 1625.881714 1635.708984 1637.064697 1637.085327 1636.589111 1636.094116 1635.474731 1634.572754 1635.524658 1635.886108 1632.477051 1623.599365 1618.160278 1612.070801 1606.041504 1598.063477 1598.386475 1603.484741 1610.881714 1613.124878 1611.533813 1600.629517 1593.751343 1588.398193 1579.518677 1571.958862 1570.847046 1587.812622 1601.031738 1613.187012 1604.641724 1590.591431 1581.56311 1574.03418 1578.179565 1583.817627 1581.26123 1575.715454 1568.818115 1558.901855 1551.326416 1547.371338 1546.353638 1543.925537 1541.652954 1538.851196 1536.789551 1534.380493 1531.182007 1528.522461 1528.375122 1528.376831 1526.816528 1529.255493 1530.839722 1537.20752 1539.525513 1544.878174 1550.304199 1554.751587 1559.251953 1568.124146 1573.016479 1585.268799 1599.519165 1610.037354 1625.316284 1651.667236 1665.875244 1674.484131 1686.060059 1696.37793 1705.817749 1712.855957 1718.271973 1721.500732 1723.059692 1723.723022 1722.622681 1720.729248 1717.130371 1713.12854 1708.989136 1705.458618 1701.925659 1698.657104 1695.831787 1692.423584 1687.751709 1683.08313 1683.010986 1683.088135 1679.130737 1673.880127 1669.918701 1664.82019 1659.199219 1650.88269 1642.337036 1635.578003 1623.680908 1610.338135 1596.917969 1594.432617 1603.508179 1610.579712 1619.558472 1632.435181 1639.334106 1632.802368 1620.770996 1599.118652 1584.458984 1588.776245 1605.461304 1616.49707 1629.291748 1637.316895 1633.967651 1623.554932 1609.75 1614.67627 1621.534302 1621.328613 1614.420044 1610.843018 1607.383667 1600.712524 1599.531494 1593.353638 1587.91748 1583.336914 1574.348999 1568.999512 1565.412109 1563.11438 1559.906128 1555.81897 1551.994751 1550.725586 1548.77356 1543.55603 1536.368652 1534.740601 1535.161255 1535.471436 1533.34021 1532.448853 1532.415039 1532.831299 1535.618652 1536.327881 1533.637939 1534.716309 1529.055176 1523.166626 1536.219604 1552.233643 1561.146729 1566.90271 1572.373413 1579.039429 1585.286377 1590.362915 1597.877441 1604.04834 1605.758423 1604.208496 1598.133179 1592.99707 1585.674072 1572.800781 1565.446289 1557.536255 1554.394409 1561.460815 1564.681396 1564.164062 1562.479004 1559.210938 1556.181396 1552.156616 1544.619141 1535.362793 1527.42749 1522.694336 1516.805542 1507.019897 1499.798096 1497.232422 1494.066284 1491.174805 1487.634033 1484.021973 1479.962036 1475.839355 1474.489136 1474.221924 1476.143433 1479.405273 1483.24231 1487.555542 1490.918091 1497.568359 1502.188965 1502.391968 1500.93042 1496.103516 1489.337769 1480.416016 1473.312744 1470.633301 1465.872925 1459.372437 1467.315552 1477.553467 1482.647705 1479.562744 1466.275391 1453.070435 1437.195557 1417.563354 1403.79248 1387.304565 1379.442505 1379.389404 1370.353027 1359.104614 1349.180176 1339.613525 1341.249268 1334.435669 1327.646606 1334.343872 1357.107056 1363.807861 1379.847046 1400.139282 1413.168823 1430.33606 1447.309082 1467.654541 1498.421143 1520.713867 1539.172119 1542.072876 1538.984497 1533.337524 1529.835693 1536.364502 1544.712769 1548.362549 1549.204712 1554.38916 1561.07605 1558.805542 1549.588379 1548.033691 1550.765503 1553.088867 1551.020264 1538.719727 1527.426025 1514.010498 1502.379272 1486.087402 1473.155273 1474.561646 1482.399536 1493.278564 1503.233521 1511.990479 1521.699829 1528.922119 1529.093018 1525.047729 1518.232666 1508.69812 1496.7854 1483.644165 1473.012573 1462.978516 1465.748779 1476.989868 1487.733887 1499.871216 1501.595337 1498.434937 1496.005859 1490.815063 1485.651123 1477.974121 1475.619995 1474.864502 1465.970459 1463.134521 1463.705811 1457.208252 1452.662476 1450.713745 1442.558594 1439.371216 1437.539551 1437.875732 1439.37915 1439.377563 1437.034912 1432.08667 1427.015015 1430.265503 1432.799438 1433.499268 1432.054077 1428.249023 1425.526245 1422.560547 1417.766846 1411.801025 1402.800903 1405.26416 1410.917114 1415.990479 1421.886108 1427.306763 1428.735229 1428.335571 1425.275391 1419.352539 1412.608765 1412.109253 1414.343872 1413.614624 1411.529419 1410.083984 1408.604736 1406.75415 1404.848022 1402.547485 1395.950317 1389.687622 1390.834961 1392.404785 1392.202881 1389.56958 1389.303589 1398.467651 1410.750854 1416.80127 1415.876587 1414.294434 1409.907593 1404.966064 1403.034302 1398.525757 1393.18335 1388.238647 1386.757935 1388.46936 1398.440552 1408.994629 1416.281372 1419.044434 1422.0625 1425.664062 1428.437378 1429.791382 1431.355103 1434.995972 1440.095581 1442.385986 1441.410034 1439.167725 1435.935669 1433.355103 1432.455688 1431.913452 1430.651733 1430.102783 1429.49707 1427.746826 1423.134766 1418.233765 1411.069092 1401.899658 1395.578735 1389.541504 1384.231201 1378.594849 1372.691284 1367.692627 1364.751099 1360.67627 1355.481934 1357.687012 1360.008911 1360.759888 1359.754395 1358.139648 1356.570801 1355.374634 1351.224121 1344.945923 1340.397095 -1688.478394 1699.06543 1707.628418 1713.257812 1720.056519 1727.357544 1734.133545 1736.149536 1736.483032 1736.395508 1735.44397 1733.48645 1725.457031 1722.602173 1723.800049 1725.171021 1726.473999 1728.324829 1730.022095 1731.181885 1732.966309 1733.66394 1733.105713 1731.573486 1728.126831 1723.170532 1718.968506 1716.380249 1711.512695 1707.175171 1705.960205 1704.051514 1700.637573 1697.063965 1694.734375 1698.070923 1702.427002 1705.36731 1705.956177 1705.220703 1705.927246 1705.806885 1708.091675 1709.591064 1707.991333 1704.997559 1703.486206 1702.700439 1702.593994 1703.781616 1706.382324 1709.417603 1710.249023 1709.125977 1706.872192 1708.918823 1712.284668 1712.614258 1710.824951 1702.74646 1692.765381 1678.994629 1665.393799 1656.663086 1653.997559 1648.036865 1637.555176 1630.452393 1630.637695 1639.89624 1646.084229 1653.751221 1663.730347 1667.020142 1658.967896 1650.203613 1638.883545 1629.871216 1616.62854 1618.905884 1624.23938 1636.08606 1648.743408 1660.942871 1676.77063 1685.599243 1691.026489 1690.638184 1682.907715 1676.766357 1672.358032 1666.522461 1659.57373 1649.362183 1637.51001 1629.390259 1623.002319 1613.570557 1617.572754 1620.913452 1627.938721 1632.904297 1636.254517 1639.325195 1641.043457 1641.520996 1638.950928 1632.978638 1617.419922 1594.05603 1588.529541 1611.540405 1622.107422 1627.485352 1637.239624 1635.378052 1624.250244 1611.701538 1605.772095 1595.655518 1578.772827 1578.430176 1597.808838 1602.201538 1600.661133 1588.057861 1586.83728 1595.083862 1597.303589 1615.069336 1629.340332 1637.404907 1636.654907 1621.852295 1606.755615 1592.84436 1584.356812 1584.564087 1588.782349 1586.894165 1583.027344 1577.02124 1567.223389 1566.148682 1574.876587 1578.285522 1579.042236 1576.481323 1572.205566 1567.939087 1566.739136 1564.966797 1562.759521 1560.344727 1556.262695 1548.915894 1545.288818 1542.459229 1538.623169 1534.375854 1528.939941 1526.891602 1521.843506 1514.743286 1510.343628 1505.524048 1502.217651 1499.248779 1497.148804 1495.885498 1494.188843 1491.466187 1489.524414 1491.412354 1495.01355 1498.084229 1504.171753 1521.994507 1533.809448 1545.806152 1552.380859 1550.081909 1540.461182 1534.570557 1532.299438 1531.348511 1531.266846 1531.755981 1532.85376 1534.426392 1536.103027 1537.978516 1540.213257 1543.888672 1547.49707 1550.603149 1554.24646 1557.335205 1559.631836 1563.997192 1567.480225 1572.062622 1571.900513 1578.780029 1589.025757 1598.182373 1607.80603 1615.626831 1624.666504 1631.368652 1636.026489 1637.256592 1636.972656 1634.594971 1631.694702 1628.579468 1630.622192 1631.900024 1628.349976 1623.824707 1618.639771 1613.726196 1607.808838 1599.516357 1596.568115 1597.456543 1604.683594 1609.208496 1607.679443 1597.439697 1592.435791 1588.021729 1581.342773 1574.675659 1570.140625 1578.799438 1592.776978 1599.932251 1594.671265 1584.670654 1577.300293 1571.192139 1575.71875 1585.094604 1584.823608 1577.102783 1569.965088 1558.365479 1550.212036 1545.828125 1542.786743 1540.064697 1537.500122 1535.255005 1534.186401 1532.103271 1530.024414 1530.19458 1530.034058 1531.434082 1535.678101 1539.777832 1542.957275 1546.914429 1552.481934 1557.327637 1564.823608 1575.309814 1580.606812 1587.547119 1592.320435 1590.980835 1607.526123 1624.837402 1630.599487 1642.022705 1659.122681 1670.452515 1683.118286 1693.837036 1704.123169 1710.48999 1715.014771 1718.502441 1720.184692 1720.928467 1719.121704 1713.682739 1708.186523 1705.898926 1704.169067 1701.243774 1697.928711 1694.589355 1690.990845 1687.062134 1682.969238 1681.212158 1680.526489 1679.921021 1677.098633 1672.797729 1668.539185 1662.689941 1653.296753 1644.106689 1636.18335 1626.2229 1616.165894 1606.255615 1602.198364 1598.62854 1610.860596 1618.933472 1634.593994 1645.002319 1655.263794 1639.34436 1622.974609 1604.891357 1595.421509 1597.746826 1608.052246 1617.735352 1634.244263 1638.010376 1635.217651 1630.770508 1632.2771 1630.677856 1631.127197 1627.610596 1620.435059 1613.999878 1607.709351 1599.557007 1596.091553 1592.501709 1589.410522 1588.943481 1584.724609 1574.421875 1570.789307 1565.868774 1561.650391 1561.00061 1559.926025 1555.879639 1549.654297 1547.158203 1543.202148 1539.748413 1538.948364 1538.660767 1537.060425 1537.566528 1540.826294 1543.352173 1547.831177 1544.859985 1541.756592 1547.546631 1544.247925 1536.725952 1537.649292 1555.745605 1565.304443 1572.251709 1581.916748 1590.830444 1597.673096 1605.840454 1612.677246 1615.053833 1616.397217 1615.294067 1610.367798 1599.861328 1592.116699 1582.613281 1571.212036 1569.58313 1574.217041 1576.606689 1575.762207 1574.924927 1572.996582 1570.465942 1566.025635 1559.527222 1551.474487 1544.315308 1537.179321 1531.451294 1524.655151 1515.553589 1506.604126 1500.184937 1496.212036 1491.941772 1487.503296 1484.446411 1480.780396 1477.291016 1474.388916 1473.603394 1473.566772 1474.655762 1475.045898 1480.790161 1486.174194 1494.058594 1500.586914 1500.045776 1497.529541 1494.707886 1491.745728 1487.163086 1476.845215 1466.143066 1458.109375 1452.353149 1462.615723 1473.400146 1476.399536 1460.532471 1445.850952 1441.360229 1439.018066 1423.104858 1408.424194 1397.650635 1377.186523 1359.795776 1347.059326 1345.909302 1338.411987 1332.693481 1331.346313 1329.755127 1327.592529 1340.888672 1365.577393 1381.338013 1387.72229 1396.7146 1410.192017 1426.465942 1446.453735 1475.289307 1500.289307 1518.635132 1527.420898 1525.745361 1521.067993 1517.72644 1516.513428 1524.774658 1533.967285 1535.93335 1537.298218 1547.505249 1552.070923 1547.892212 1539.824585 1534.855103 1539.864014 1545.08728 1545.893555 1537.908447 1527.605957 1515.063477 1503.320557 1490.832886 1471.354492 1467.126831 1475.999634 1484.292603 1494.65564 1504.062134 1513.279785 1519.957397 1518.937256 1517.219482 1513.500122 1505.27002 1493.679932 1480.8396 1470.187988 1459.608276 1455.218994 1469.622681 1482.439575 1491.66333 1493.790283 1489.71582 1488.849243 1489.946777 1489.030396 1479.139771 1474.160278 1473.530884 1473.805542 1472.251709 1472.005737 1469.266846 1464.401978 1459.152588 1454.860596 1448.114136 1439.674805 1433.340332 1428.716919 1430.32605 1430.779053 1428.395142 1422.202026 1424.041016 1428.571655 1428.568604 1426.98877 1423.30603 1420.434082 1418.100098 1414.295898 1407.920654 1401.454834 1404.358887 1409.450928 1414.282837 1420.040283 1424.3396 1425.675903 1425.174561 1421.93811 1418.045776 1410.572266 1401.106689 1403.304932 1406.410767 1403.920654 1405.619873 1405.984253 1405.62561 1404.793335 1403.889893 1399.581421 1391.476196 1388.76416 1388.93042 1388.0802 1386.977295 1386.710938 1391.862793 1401.776245 1415.296021 1417.240112 1415.950439 1407.862549 1402.08606 1397.277466 1392.052368 1387.803467 1382.641357 1377.949707 1390.174927 1398.227417 1410.022583 1417.174927 1419.304443 1422.052002 1425.643799 1428.846558 1429.50061 1429.283081 1427.676758 1428.056152 1433.815186 1436.276001 1433.99231 1431.242188 1428.470703 1426.612549 1425.071777 1428.159668 1429.373901 1426.359619 1421.824341 1421.363647 1417.697266 1412.026489 1402.931396 1397.287842 1391.773438 1386.491455 1380.857666 1375.419067 1370.152954 1365.724854 1360.499023 1354.718018 1352.603149 1352.93457 1353.650513 1353.014038 1350.824951 1346.31604 1339.769775 1338.634521 1338.917969 1338.72522 -1681.181885 1687.712769 1691.919312 1696.982056 1707.866211 1718.129761 1730.975098 1736.639893 1737.308838 1736.584229 1736.165771 1735.02002 1731.816528 1728.130005 1727.547241 1728.608521 1729.391235 1731.084839 1732.866821 1733.334229 1734.054321 1733.858643 1733.424683 1732.254639 1728.4729 1723.028442 1718.693115 1715.339355 1709.373901 1707.462769 1707.776733 1706.875 1702.975952 1699.367432 1698.209229 1701.706665 1706.924805 1709.639526 1710.777832 1709.355713 1709.786255 1709.904175 1711.095337 1710.423218 1707.693115 1705.440186 1705.236694 1705.76001 1705.793457 1706.446289 1706.575073 1708.75 1711.764893 1711.89917 1711.300659 1713.165527 1715.829468 1714.38562 1708.143799 1695.390503 1683.611572 1670.948853 1660.66394 1652.452393 1646.837158 1636.567261 1632.568604 1641.793701 1651.277954 1660.887451 1663.990234 1668.434448 1675.836914 1674.789307 1666.426147 1656.980957 1648.994629 1634.82251 1622.731934 1618.373657 1625.360107 1639.083618 1652.720093 1667.308716 1682.976196 1688.751221 1694.43689 1697.18457 1696.380981 1687.532959 1678.900513 1672.477051 1665.295166 1657.82605 1650.134766 1644.143677 1635.032593 1624.841431 1614.933594 1621.421997 1632.36853 1637.326294 1640.444336 1642.891357 1645.879761 1647.010986 1643.257202 1634.166016 1615.689331 1590.307373 1605.284424 1619.628052 1635.107788 1644.143066 1648.579834 1641.851807 1632.046387 1620.795288 1611.63269 1596.802368 1586.001709 1589.631592 1605.901733 1609.458008 1606.914062 1597.952881 1594.440186 1603.753296 1609.581665 1615.950317 1630.38501 1638.923828 1640.87085 1635.769409 1614.864258 1603.488281 1603.397583 1606.945923 1606.300781 1601.649048 1596.892212 1590.680298 1583.740723 1585.566895 1589.299561 1591.746216 1591.95752 1591.107422 1588.417358 1580.27124 1577.360352 1575.123657 1573.785522 1571.932861 1566.792236 1561.082031 1551.728882 1547.742188 1544.253174 1541.318115 1538.262451 1532.653564 1525.478638 1516.672729 1511.233398 1506.650146 1503.572754 1501.452759 1500.580444 1499.35022 1497.491577 1493.625977 1490.427612 1491.438477 1493.721924 1496.232056 1498.358032 1503.674438 1524.652344 1535.404663 1549.270386 1545.305908 1536.942017 1532.802979 1530.975708 1530.273804 1530.324219 1530.970703 1532.159546 1533.547607 1534.924927 1536.155273 1539.260254 1543.683594 1548.193481 1554.081909 1560.973389 1565.540405 1572.900024 1576.759399 1578.559448 1578.70166 1578.629639 1579.089966 1583.24939 1588.050415 1598.632202 1610.122681 1620.089722 1626.519531 1634.352173 1637.142578 1636.853149 1631.872437 1622.309814 1621.241577 1620.233643 1621.093262 1621.946777 1621.025513 1616.755249 1613.012329 1608.687866 1602.281494 1597.72876 1596.366089 1600.36731 1604.279175 1603.36853 1598.339233 1592.61499 1586.174561 1578.749023 1572.327393 1562.927979 1567.860596 1577.707275 1585.645996 1583.173828 1579.394897 1575.261475 1568.886719 1572.761108 1577.698975 1577.321533 1573.483276 1564.970459 1555.313354 1548.336792 1543.529419 1540.001709 1537.090332 1535.165894 1534.268066 1534.045044 1532.552856 1531.328003 1531.492676 1532.042725 1535.914062 1541.017456 1546.633789 1550.263184 1556.377808 1562.970093 1571.612061 1578.481812 1588.414062 1593.764648 1594.735596 1604.634766 1610.130005 1617.362793 1635.579956 1648.555664 1655.794678 1666.170776 1674.036743 1681.744751 1690.869385 1699.734497 1707.23291 1710.831177 1713.344482 1714.719727 1713.672363 1708.932495 1705.076294 1702.58667 1700.991699 1699.674683 1697.402222 1693.758057 1689.417236 1685.453369 1682.212036 1680.81604 1679.58667 1678.584717 1677.576782 1675.687378 1673.396484 1670.593018 1663.481812 1653.199097 1638.735474 1627.920166 1616.314331 1610.833496 1605.720703 1604.081909 1608.476807 1617.103271 1629.253052 1640.601929 1659.804199 1654.870361 1636.546265 1620.580688 1605.487061 1604.208252 1606.429688 1613.398438 1620.201416 1636.858765 1639.851807 1641.365234 1641.900146 1643.21875 1643.250366 1640.14856 1633.741699 1619.552979 1607.594604 1596.988525 1587.928345 1584.124268 1581.184326 1583.698364 1584.492432 1583.266724 1577.143921 1573.861206 1569.268677 1565.08606 1563.53772 1563.380249 1561.652832 1555.563965 1550.704102 1544.530396 1539.48291 1538.252686 1537.745117 1537.475464 1541.306152 1547.619995 1558.952881 1561.290527 1556.542847 1557.349976 1559.742188 1558.479858 1553.489014 1544.708984 1556.414185 1568.218384 1577.240845 1586.657349 1597.131714 1607.525269 1619.818726 1620.208374 1617.918579 1622.796997 1624.680054 1622.848145 1613.417969 1596.528809 1590.416748 1585.293335 1584.060303 1586.280884 1588.688965 1588.455078 1587.143188 1585.19519 1581.791992 1578.214478 1572.566528 1561.401733 1556.053467 1549.545166 1539.749268 1531.198975 1521.741943 1512.902588 1503.786133 1497.805664 1493.827515 1489.347534 1486.436523 1483.143799 1479.055542 1475.2677 1474.086182 1472.99707 1472.378418 1472.74646 1477.825073 1484.419434 1489.977417 1493.869751 1493.449707 1489.61731 1490.141235 1490.844604 1486.916016 1477.803589 1467.133179 1452.10376 1453.018555 1460.374512 1468.179199 1468.240723 1450.762695 1433.283569 1419.936279 1419.243408 1415.571411 1406.797485 1393.607056 1375.197021 1358.653809 1337.959473 1328.088135 1329.793213 1329.684814 1328.87207 1328.779175 1329.623657 1344.797119 1367.984619 1384.11499 1404.264771 1413.348755 1418.680908 1435.212036 1456.667603 1481.360718 1503.176147 1512.814941 1511.286499 1508.409302 1505.610718 1502.446411 1506.741455 1514.906372 1523.637695 1526.047119 1529.527466 1539.44458 1543.727905 1538.923584 1531.302368 1525.861816 1531.234863 1538.017822 1539.948975 1533.993286 1525.594238 1514.441772 1503.465942 1492.819946 1472.317627 1460.933228 1467.323242 1474.753784 1486.455322 1498.178223 1505.431152 1507.294312 1506.561279 1507.085449 1505.268066 1499.625366 1488.84082 1474.107056 1463.609253 1454.386597 1450.199951 1460.931763 1476.37085 1484.551758 1487.382324 1480.085693 1477.202515 1482.639526 1480.866943 1475.279785 1470.704956 1475.039185 1477.368774 1478.019287 1478.029785 1474.251099 1468.238892 1464.521118 1459.029907 1454.687134 1448.071045 1440.948242 1429.475098 1425.584839 1423.345581 1421.012207 1415.605225 1413.131958 1417.291748 1419.755615 1420.152344 1416.879028 1414.302246 1413.098633 1409.736938 1404.477295 1401.092407 1402.18103 1408.677612 1415.236938 1418.074097 1419.973389 1419.671753 1418.646973 1416.988647 1413.704834 1407.695557 1401.296753 1398.43335 1403.188232 1400.356079 1401.969604 1403.891968 1404.064819 1404.179443 1403.504761 1400.273315 1393.253906 1388.493408 1385.272583 1382.966064 1382.135742 1381.703735 1386.879272 1393.964966 1403.461914 1409.430176 1409.317749 1403.710327 1397.721069 1389.780151 1385.746582 1382.893066 1379.370117 1377.512695 1387.085205 1397.400879 1409.727417 1416.644165 1417.144043 1419.036011 1423.094482 1426.71936 1426.192749 1423.652222 1419.857666 1417.984131 1422.066406 1426.428589 1426.822266 1423.246582 1418.401245 1413.687378 1407.62793 1413.571289 1414.0625 1407.539429 1401.493896 1414.290649 1417.808472 1412.249756 1404.365479 1398.872681 1394.252319 1389.308228 1382.658081 1376.868042 1371.538696 1367.258667 1362.802856 1358.498779 1355.946289 1353.549805 1351.827637 1350.081787 1345.867676 1340.912476 1338.92627 1338.467529 1338.402832 1340.041626 -1671.738892 1673.919556 1673.79248 1683.793823 1696.687988 1711.720581 1727.717407 1735.023804 1737.058716 1736.881104 1736.207642 1734.759155 1732.589844 1730.129517 1731.027832 1732.210327 1732.335815 1732.93457 1734.10376 1734.484253 1734.471191 1734.267334 1733.171265 1732.046753 1728.579956 1723.678833 1719.987549 1716.682007 1713.307007 1711.37915 1710.416138 1708.699829 1704.786621 1702.556396 1702.178711 1705.087524 1709.57251 1712.826172 1715.217285 1716.530396 1717.275391 1716.469482 1714.531494 1711.438965 1707.390015 1706.34021 1706.835205 1708.289673 1709.786987 1710.279541 1709.179932 1710.282837 1714.093872 1715.65564 1716.519531 1718.696167 1719.69812 1717.57312 1704.780518 1688.668335 1675.091675 1664.131958 1653.7229 1645.331909 1637.687622 1640.579834 1650.325684 1656.699951 1664.542969 1673.832153 1678.369507 1681.787842 1685.435181 1678.982666 1669.22937 1658.235352 1649.517822 1635.362793 1625.257568 1620.739868 1622.231934 1630.544678 1644.985962 1665.275146 1683.539185 1688.988037 1694.147339 1697.645264 1698.349731 1693.067261 1682.071777 1674.944702 1667.750732 1659.08313 1653.778931 1649.340332 1642.266724 1629.11377 1618.713135 1624.30127 1638.122437 1644.30835 1647.250977 1649.064575 1652.37085 1651.760254 1646.561035 1635.067627 1617.339478 1593.273315 1609.729736 1626.389648 1643.383911 1655.182739 1656.83667 1648.563721 1638.349731 1623.248413 1611.932251 1599.885986 1591.555176 1606.090576 1614.318481 1616.520874 1612.764771 1601.515991 1599.113525 1608.328735 1618.35083 1624.182739 1632.85498 1640.681152 1645.543823 1644.198975 1626.915039 1623.434082 1623.493164 1622.894043 1619.329346 1615.16687 1611.546875 1605.356567 1598.291382 1599.867188 1605.632935 1607.907471 1608.369385 1603.477417 1600.326782 1589.434937 1586.728882 1582.394531 1578.368774 1576.480835 1570.849609 1564.655396 1558.570679 1552.191772 1548.127563 1543.859497 1540.386353 1533.740112 1523.48584 1515.251953 1511.025024 1508.376709 1507.768921 1506.910522 1504.924194 1502.973633 1501.011963 1496.428223 1491.446777 1491.94751 1493.383545 1495.01062 1496.608032 1498.825684 1509.017456 1524.949585 1533.808838 1535.80957 1533.737915 1530.770874 1529.502319 1529.029175 1529.299683 1530.040527 1531.377563 1532.898071 1534.412842 1536.051025 1539.043457 1543.768677 1548.589233 1555.572876 1563.334106 1569.505737 1576.218018 1582.187622 1584.817017 1586.521118 1588.259888 1589.117676 1588.706177 1591.367432 1598.090332 1606.179688 1614.817627 1624.942383 1635.730957 1637.031372 1634.102539 1627.277832 1620.941284 1612.34375 1613.769409 1615.091309 1615.779541 1615.075562 1613.105591 1611.506836 1607.830078 1602.861938 1598.977173 1595.222412 1597.1698 1600.465576 1601.070435 1599.138306 1591.805176 1582.746338 1573.824585 1567.417603 1561.204712 1559.858643 1565.469482 1570.93103 1572.503052 1573.084717 1570.561646 1559.856323 1565.972534 1570.751953 1570.538696 1565.22876 1558.151733 1550.25061 1545.631104 1540.959473 1536.907349 1535.303955 1537.354248 1537.752075 1535.852905 1534.631348 1533.515015 1532.420776 1534.147339 1538.657349 1548.295044 1552.354614 1556.824097 1562.996216 1570.263306 1578.5271 1588.067139 1597.418457 1602.098755 1607.562988 1616.868408 1625.670776 1633.609863 1640.361572 1649.597412 1659.348999 1669.168335 1674.702515 1679.5448 1686.478027 1693.570679 1700.276367 1704.944336 1707.206055 1707.381104 1705.8396 1701.795898 1698.678833 1696.974365 1696.262573 1695.330811 1691.695068 1687.118042 1683.283936 1679.973511 1677.719604 1677.037354 1677.253296 1677.08728 1676.193604 1674.529175 1673.150391 1671.291138 1662.994507 1652.690186 1640.187134 1627.723511 1615.237061 1613.387451 1610.518921 1609.651489 1615.388916 1623.549316 1637.805054 1646.693115 1659.378784 1648.170898 1630.371948 1616.994995 1609.571899 1611.559448 1614.003662 1617.762695 1625.362183 1637.710449 1641.268066 1645.938599 1648.343384 1648.184937 1647.474487 1642.305786 1636.046631 1627.232788 1616.201904 1603.859375 1592.720459 1578.533691 1571.230103 1573.000366 1573.097046 1571.847778 1571.822266 1569.689941 1567.092041 1564.124878 1562.864136 1562.318115 1560.400146 1553.859131 1547.651123 1540.214233 1536.447021 1535.513672 1534.99292 1534.891235 1541.543335 1554.640381 1565.63562 1570.951904 1568.448608 1566.948486 1568.133301 1567.924561 1564.943848 1559.218506 1558.109741 1570.181519 1579.366211 1589.359497 1602.825562 1617.674927 1624.715454 1618.207153 1614.364868 1617.346802 1619.721558 1622.105225 1616.947876 1607.9646 1597.155029 1596.362183 1598.507812 1601.786133 1603.391846 1601.272217 1597.084106 1593.219727 1590.084595 1586.517334 1581.593506 1576.347656 1566.459839 1557.571533 1548.559204 1539.124878 1529.299927 1520.093506 1508.985596 1499.534912 1497.665771 1494.034302 1490.243164 1486.544067 1482.473389 1479.099121 1476.793945 1474.067261 1470.570312 1469.79834 1475.362305 1479.861938 1484.811646 1487.466309 1486.7854 1484.72168 1488.154907 1488.9823 1480.65332 1468.845093 1458.61084 1449.60376 1450.682983 1458.590576 1465.804443 1451.218506 1437.674316 1425.447388 1409.022827 1397.168457 1397.136841 1395.033325 1385.136475 1363.070312 1341.530884 1331.23877 1332.046021 1338.30481 1341.621704 1336.192627 1339.851318 1347.846313 1349.106567 1367.714722 1382.009399 1404.853149 1425.464355 1441.263916 1454.680176 1472.243652 1486.837036 1498.18103 1497.515259 1493.347168 1493.023071 1491.918213 1489.387573 1499.784424 1507.836914 1514.090576 1517.096436 1524.383789 1535.472656 1537.938843 1530.889648 1523.400757 1515.45459 1522.192749 1529.185547 1532.109253 1527.078125 1520.118408 1511.229614 1502.31311 1492.899292 1475.887939 1460.27356 1460.483887 1469.35083 1480.879761 1489.004395 1496.521362 1497.333252 1494.377686 1497.141113 1494.767334 1490.006348 1482.063354 1471.348022 1458.766113 1449.371826 1446.546021 1454.259644 1462.801758 1472.161743 1475.499146 1471.119507 1464.071411 1468.849976 1468.48584 1462.044678 1463.948975 1471.055786 1477.312744 1478.708008 1476.489136 1471.040527 1465.400635 1462.099731 1458.704224 1455.00061 1450.851929 1445.20874 1440.058228 1431.405396 1424.549805 1413.062988 1411.699707 1409.780151 1409.310791 1411.237061 1413.141235 1411.317139 1409.061646 1407.589722 1405.578003 1401.716309 1395.66626 1401.520752 1406.444824 1411.96582 1415.363525 1415.47583 1413.67688 1412.978516 1411.939819 1408.609741 1404.091309 1399.103394 1390.958008 1393.259766 1390.205566 1394.799194 1400.136719 1401.052368 1401.498047 1400.873779 1397.300415 1393.283813 1388.614502 1383.379883 1377.996582 1378.796143 1377.22876 1382.353027 1386.976318 1394.164062 1400.086182 1401.528564 1399.331909 1393.702393 1386.208008 1378.152588 1378.172363 1372.780396 1375.596802 1387.841309 1399.535522 1406.810547 1409.209839 1410.054321 1414.252563 1418.410767 1418.257446 1418.727417 1417.326172 1411.644897 1408.393066 1412.136963 1415.025024 1415.025513 1412.0354 1407.561401 1404.009888 1396.944092 1397.507568 1397.706787 1391.707031 1390.017334 1398.34668 1415.572388 1411.494995 1405.762939 1400.440308 1395.317749 1391.127808 1383.125488 1377.148438 1372.644775 1368.441162 1364.608398 1361.644653 1360.612549 1358.759033 1355.604858 1352.430908 1350.678101 1349.264404 1348.626587 1347.877441 1347.4729 1348.654663 -1660.36145 1658.559692 1669.010132 1682.394409 1695.21521 1705.546631 1719.234375 1727.088379 1732.847778 1734.144409 1733.579468 1734.52124 1733.821167 1732.682739 1732.768433 1732.96167 1733.489624 1734.321411 1734.853027 1734.971558 1734.945312 1733.380737 1730.377197 1728.731812 1726.607422 1723.961914 1720.451782 1718.905518 1719.835571 1716.369141 1711.529297 1708.463501 1705.598022 1704.000244 1704.05835 1706.706665 1710.919556 1715.762817 1719.269897 1720.525879 1720.228516 1720.280884 1716.716919 1712.283569 1707.310547 1709.172974 1711.346069 1713.842041 1715.521606 1716.101929 1715.973267 1716.965698 1717.047363 1718.609009 1718.935669 1720.465576 1720.442139 1713.500366 1701.506226 1687.369019 1672.020752 1657.335449 1646.918335 1640.204102 1649.057007 1660.042725 1666.391357 1669.262329 1677.583618 1685.682739 1691.67749 1698.798706 1687.910034 1677.450073 1667.573608 1656.656982 1644.988525 1632.046875 1631.521484 1627.175049 1620.51416 1629.696777 1641.969604 1661.634521 1679.098511 1687.468506 1693.950928 1697.964233 1699.061279 1694.373779 1683.867432 1675.384033 1667.528076 1658.769287 1652.790039 1648.625732 1641.350708 1630.168945 1619.979004 1627.527466 1645.343628 1651.482544 1657.449951 1660.479126 1659.668091 1657.248413 1651.192017 1641.223633 1624.030762 1597.600098 1609.704712 1628.966553 1646.087158 1660.460938 1661.817139 1652.095825 1638.421387 1624.020508 1619.999268 1613.480347 1600.168091 1613.732178 1624.424316 1624.186768 1616.622192 1611.19873 1608.435059 1612.513794 1622.645874 1631.535034 1637.789917 1644.747314 1648.57312 1648.940308 1648.542725 1643.75 1638.642578 1634.838379 1631.046143 1624.65332 1620.052856 1616.619995 1609.911255 1610.757935 1622.093262 1624.80835 1608.62793 1593.914673 1587.056396 1587.36731 1584.126343 1578.745239 1574.731934 1568.655884 1562.858398 1558.566406 1555.101685 1551.474243 1546.836426 1543.016846 1540.116577 1532.203125 1523.815918 1514.72522 1514.250488 1515.31958 1514.668335 1513.151489 1509.793457 1506.547363 1503.233765 1498.358887 1493.205933 1492.260742 1493.526855 1494.577393 1495.806641 1497.239014 1499.364746 1517.568726 1525.349609 1527.912109 1528.701416 1528.145142 1527.705078 1527.736938 1528.133057 1529.052734 1530.378784 1532.174927 1533.983887 1535.942993 1538.818726 1542.847778 1547.937988 1554.953247 1560.696411 1568.843018 1577.31897 1586.548584 1590.515869 1596.892212 1600.242554 1599.962158 1599.255249 1603.069824 1608.275513 1615.41272 1618.828857 1624.532715 1637.022461 1638.156738 1632.595459 1626.138672 1619.175781 1610.88147 1608.309937 1609.675171 1609.552246 1608.5271 1608.999756 1607.423096 1602.80188 1600.436768 1598.977661 1592.853638 1585.89978 1598.477783 1600.169678 1598.497437 1591.047363 1579.990112 1570.384644 1562.858643 1559.554688 1559.450684 1559.21106 1561.23938 1563.564331 1564.437866 1562.77063 1556.849243 1557.677368 1559.505981 1558.814575 1553.797363 1548.630005 1545.977539 1543.897949 1541.457642 1540.806274 1545.716919 1548.662842 1548.57373 1540.591797 1536.14624 1534.205933 1533.772217 1535.551147 1542.533813 1550.557373 1554.593994 1558.884644 1564.949707 1572.9375 1579.914062 1588.443604 1597.700439 1603.182739 1609.970703 1619.408325 1626.600952 1634.431763 1641.154907 1648.341675 1656.742554 1665.495972 1672.500488 1676.821411 1682.719971 1687.793701 1692.914795 1696.355591 1698.065552 1698.10083 1697.007935 1694.526855 1691.824219 1689.875854 1688.46106 1685.676514 1682.321777 1679.619507 1676.924316 1673.828125 1670.944336 1671.775146 1675.017944 1675.464844 1674.885132 1673.408569 1671.751831 1667.750488 1658.993042 1644.344238 1636.044922 1623.889648 1621.609741 1619.873535 1616.110229 1614.431641 1622.364868 1631.445801 1643.559082 1650.023315 1650.563965 1638.941406 1624.606201 1620.445435 1621.866943 1618.066895 1623.576172 1627.672729 1634.31189 1638.561401 1639.290894 1639.58374 1635.733643 1638.976318 1638.752563 1637.175293 1632.006104 1625.651367 1616.59375 1605.619019 1596.587402 1581.269043 1571.009766 1565.09021 1565.862671 1564.959839 1561.255859 1562.168335 1562.440063 1560.911499 1559.779663 1558.547974 1553.907593 1545.941162 1534.873169 1532.800781 1531.725464 1531.65686 1532.272461 1534.090576 1541.141602 1555.104126 1565.76062 1573.783691 1575.684326 1574.139282 1574.838013 1575.817627 1574.849609 1573.379028 1568.247437 1573.093628 1581.196411 1592.430298 1608.092529 1623.966187 1617.569214 1608.484985 1606.492065 1606.685059 1607.703491 1609.859985 1611.087646 1608.873657 1601.816895 1600.498047 1600.208252 1605.797729 1612.035522 1611.378906 1603.285522 1599.268188 1595.853027 1592.240356 1587.796875 1582.787231 1576.013184 1565.658813 1555.820801 1545.396484 1536.089966 1527.835815 1513.959106 1506.58252 1502.65332 1499.088745 1494.442383 1488.787109 1485.812378 1483.4198 1479.639404 1475.813232 1469.642334 1463.557983 1469.806519 1475.671387 1478.718628 1478.900513 1477.470093 1475.844971 1481.40686 1483.159546 1476.57959 1465.652344 1450.036377 1443.558838 1446.35022 1456.830444 1467.21875 1451.369751 1426.037109 1417.681763 1409.074707 1394.020386 1377.875122 1367.938354 1366.068237 1349.362061 1335.4729 1331.282715 1334.908325 1339.177979 1341.49939 1347.135498 1361.471802 1372.256714 1363.838989 1363.849609 1379.239624 1401.273682 1421.971924 1437.934692 1459.675415 1473.027222 1485.455566 1487.590454 1481.841797 1478.736694 1478.959961 1480.019775 1482.634644 1486.120361 1494.920166 1504.148071 1512.046021 1520.512695 1526.862183 1525.779541 1521.776123 1511.455078 1506.290161 1511.675171 1519.107178 1521.730469 1517.46521 1511.632935 1504.440796 1498.154419 1491.555908 1477.012573 1461.424683 1457.984863 1461.959229 1472.126465 1478.414185 1483.06604 1484.062622 1478.682739 1482.163574 1482.337769 1480.036255 1474.839233 1467.689087 1458.382935 1448.211426 1438.535522 1450.367188 1457.014526 1460.960449 1465.312988 1463.572876 1456.93335 1458.249512 1458.273682 1451.727905 1457.400024 1462.511597 1467.950317 1469.200684 1466.752441 1462.74292 1459.871704 1457.192383 1454.965576 1452.108887 1448.091919 1443.932495 1440.815063 1436.296021 1431.75769 1428.090698 1416.315674 1409.608765 1403.072021 1403.557861 1403.009888 1405.267944 1404.508179 1402.72522 1401.589478 1396.982422 1390.320557 1393.569824 1402.373779 1406.565308 1410.148804 1410.011108 1407.690674 1405.269165 1407.00647 1404.829468 1400.318726 1395.184814 1390.487671 1388.29834 1388.203247 1389.551147 1394.342896 1395.558594 1395.669922 1394.830444 1393.432007 1391.443237 1387.548584 1382.973633 1378.481445 1375.304443 1373.992065 1377.464722 1380.284058 1388.322021 1393.876953 1394.8573 1394.111328 1390.10083 1381.427856 1374.178711 1369.784424 1364.471436 1378.550781 1389.926025 1395.760498 1400.362183 1398.771606 1400.650513 1407.463013 1409.61084 1409.375854 1410.691162 1407.94519 1400.526245 1400.062378 1403.289429 1403.375488 1405.50708 1404.854004 1399.706177 1395.157471 1388.127808 1388.416504 1389.462036 1383.397583 1375.885864 1394.983521 1408.036377 1407.398682 1404.782715 1399.470947 1393.672363 1389.520142 1381.40979 1376.484741 1372.808838 1368.920288 1365.571167 1365.14917 1366.412354 1365.230713 1362.739502 1359.229858 1358.612549 1359.177124 1359.530884 1359.46167 1358.794922 1357.696411 -1644.937988 1653.745605 1663.985474 1675.828369 1690.687378 1699.036987 1705.648193 1712.237793 1716.800659 1719.967896 1730.014771 1734.738525 1734.986938 1734.693481 1734.175293 1733.331543 1732.530396 1734.434937 1735.238403 1735.230713 1734.245117 1730.665527 1726.521484 1722.452026 1722.67627 1723.452515 1722.619507 1721.505005 1720.81543 1717.907959 1711.138062 1706.932739 1705.508057 1704.899414 1704.873901 1706.194336 1712.566162 1718.784546 1720.950806 1721.335938 1721.182129 1720.492676 1717.825806 1715.318848 1714.801025 1717.660522 1719.951538 1720.463501 1720.880615 1721.109131 1720.903198 1720.294434 1720.766113 1721.294067 1721.185913 1719.391357 1713.164673 1705.637329 1697.113159 1684.766846 1669.229126 1650.28479 1643.240723 1655.261475 1668.337158 1677.646484 1680.235229 1683.085205 1688.396851 1690.42981 1690.921143 1689.25415 1679.126221 1669.35437 1661.140869 1650.030029 1633.884521 1634.902832 1640.664795 1639.234863 1629.242554 1629.147583 1645.799072 1661.061157 1675.978271 1686.482788 1694.400879 1698.050049 1698.889893 1693.285645 1681.328613 1672.048706 1663.282227 1651.840454 1646.872681 1642.085449 1634.114136 1626.380005 1620.07605 1636.366333 1650.947998 1657.715454 1662.864258 1665.064209 1663.782349 1661.213257 1653.918579 1642.869019 1624.349121 1603.11731 1620.20166 1635.119873 1646.003784 1661.739746 1663.397217 1653.180054 1641.207642 1634.756836 1634.352905 1628.302734 1613.144775 1617.652588 1632.950562 1631.475342 1622.7052 1617.776489 1609.247925 1622.772095 1625.490234 1635.545654 1640.858154 1646.18396 1649.507324 1650.178833 1650.456665 1648.736572 1644.795654 1640.002563 1637.745361 1636.806763 1632.818726 1625.933716 1620.696167 1618.210815 1620.181396 1604.901978 1594.584106 1581.17749 1572.189331 1569.273926 1567.699951 1564.736694 1560.335815 1554.996948 1552.419067 1547.903809 1540.859863 1539.21228 1538.570435 1538.858154 1537.138428 1525.204712 1520.336914 1519.771851 1523.588745 1524.246338 1521.307007 1517.02063 1511.94104 1510.533447 1506.824219 1502.002197 1499.696167 1494.867065 1492.958496 1494.338745 1495.322021 1496.80957 1498.965088 1509.326782 1517.585938 1523.322754 1524.837769 1525.564453 1526.840698 1526.51709 1526.520386 1527.648193 1529.270142 1531.143555 1533.030151 1534.748535 1536.522583 1540.86731 1545.315063 1549.546753 1557.866455 1565.297119 1575.115845 1586.60376 1591.134033 1596.956787 1600.724731 1604.618042 1609.487671 1611.144897 1619.876343 1625.141846 1629.591431 1634.735596 1641.933228 1643.928711 1637.373413 1630.961914 1623.221436 1614.541626 1607.381714 1599.700073 1599.93103 1601.790771 1602.00708 1600.705811 1597.41626 1596.289062 1596.52002 1590.702759 1585.347534 1586.613892 1592.382446 1591.775513 1585.742188 1576.422852 1566.18396 1559.552002 1566.632935 1568.611816 1563.43396 1559.551514 1558.664551 1558.704346 1554.787354 1549.381348 1547.290527 1546.871216 1547.059082 1545.784302 1544.532227 1543.788452 1543.264893 1545.811768 1552.843018 1559.203369 1560.869385 1556.93689 1546.643066 1536.607666 1533.874878 1535.907837 1537.695801 1545.081055 1550.830444 1555.086548 1559.462402 1565.265869 1570.981079 1577.523193 1584.203857 1592.081177 1600.446533 1607.360107 1615.665283 1623.77124 1631.272949 1638.218628 1645.02417 1652.515991 1660.030762 1667.571045 1672.519897 1676.996582 1681.356812 1685.128174 1688.290894 1689.602661 1689.965088 1689.00415 1687.129639 1684.240479 1681.884766 1680.267944 1677.831177 1675.134521 1672.703125 1670.596313 1668.366943 1667.779663 1670.901123 1673.811523 1674.33252 1673.895264 1672.470825 1669.727661 1661.687256 1653.318848 1646.648315 1639.793945 1638.564453 1637.920166 1631.896118 1625.685303 1619.769165 1629.755005 1639.962524 1649.314697 1651.543579 1647.993652 1637.300903 1634.673462 1628.030273 1631.642212 1640.550049 1644.361572 1643.411133 1640.622192 1635.342651 1635.216919 1631.944946 1622.845947 1624.473511 1625.844116 1619.998779 1617.75293 1616.450073 1611.118408 1603.214355 1594.658936 1581.164917 1569.078491 1560.147339 1559.571533 1558.906494 1555.050781 1553.263916 1555.491577 1555.670898 1554.950439 1553.575439 1550.200195 1538.930786 1530.631836 1523.617554 1526.119141 1528.268188 1529.906128 1533.250122 1539.623657 1550.608765 1557.135986 1564.627686 1572.726196 1575.676392 1576.729248 1579.928345 1583.447998 1582.385254 1580.532593 1580.900513 1585.999512 1597.583862 1612.022705 1618.187866 1609.214722 1601.609009 1597.236938 1598.703857 1600.764282 1601.820923 1602.378296 1600.60083 1596.922241 1591.557007 1591.870239 1597.450562 1602.252686 1601.530029 1598.156738 1597.216919 1597.283569 1593.93396 1589.35437 1585.224121 1578.30835 1570.715942 1562.029785 1550.229004 1540.318604 1532.368408 1522.117798 1511.859863 1508.282471 1504.250244 1500.014404 1494.236816 1490.782837 1488.102417 1482.513306 1475.908691 1470.182739 1465.076172 1463.108887 1468.356079 1471.057739 1471.853271 1470.721558 1470.252563 1473.674805 1474.750122 1469.823364 1459.425415 1446.882568 1438.149902 1444.064209 1455.707886 1465.888794 1464.900635 1440.783813 1426.159668 1419.103516 1408.009888 1394.904785 1372.158936 1350.478271 1339.240234 1333.168945 1332.786377 1338.007812 1348.506226 1365.206543 1367.989624 1372.940063 1383.346924 1383.461182 1368.665161 1377.368042 1402.254761 1421.752075 1435.96167 1453.645142 1465.376709 1470.852051 1471.695801 1469.62793 1468.083496 1466.125488 1471.286621 1476.304321 1482.716553 1489.850952 1498.904053 1503.774536 1509.530396 1514.921021 1515.011841 1511.316284 1505.278809 1498.23938 1501.793457 1508.701416 1510.352539 1506.058472 1500.490601 1496.83374 1493.477173 1488.377441 1477.658203 1462.664917 1452.650391 1456.827759 1461.709595 1467.14856 1471.747925 1472.998657 1468.932983 1466.435669 1469.798584 1469.645996 1466.365234 1461.882812 1454.251831 1446.386841 1437.831421 1443.814087 1451.948486 1454.675293 1456.440674 1456.004639 1449.313721 1450.988892 1453.233276 1448.679321 1452.825928 1456.598511 1458.625122 1458.944092 1457.220703 1455.622925 1453.131714 1450.786743 1448.156982 1444.654297 1440.159058 1437.630127 1434.668701 1432.510376 1430.230469 1429.709595 1426.99585 1419.197876 1410.063354 1402.126099 1400.815063 1400.830688 1400.187622 1398.763428 1397.021362 1393.653076 1390.015625 1389.310303 1395.394653 1400.462891 1403.850952 1404.497559 1401.942383 1399.988892 1401.564819 1400.197632 1396.315918 1392.364868 1388.949463 1386.186279 1384.117065 1384.478027 1388.981079 1390.590942 1389.736572 1388.978271 1389.431885 1388.37085 1385.07605 1381.656982 1378.71936 1372.009644 1366.110352 1371.348389 1376.519897 1383.073242 1388.149658 1389.458862 1388.718506 1385.253296 1378.447876 1371.150879 1365.238159 1364.945801 1377.20459 1386.644531 1391.828857 1392.125 1388.210938 1389.985962 1399.216431 1400.058838 1399.390625 1400.796631 1398.816406 1394.640869 1388.766968 1393.037354 1393.075684 1397.160767 1396.708374 1390.435547 1387.872681 1381.907959 1376.005127 1376.625 1372.775879 1367.295898 1389.414307 1400.337402 1399.401245 1393.371704 1389.186279 1386.678833 1382.489502 1377.180176 1373.786743 1372.953857 1369.541992 1365.900635 1365.532959 1366.856445 1367.583008 1367.757812 1366.656616 1367.026001 1367.436279 1367.560547 1367.723999 1366.142456 1361.437134 -1631.434937 1647.178589 1657.085693 1669.046631 1680.883911 1689.032349 1695.656616 1697.791626 1704.640747 1713.801514 1728.231567 1735.219116 1736.090698 1735.646851 1734.194092 1727.876343 1720.132446 1725.312622 1730.782227 1732.598999 1730.478516 1725.098999 1720.82959 1717.365479 1720.217041 1723.288452 1723.130981 1722.493164 1720.925903 1717.805176 1710.595337 1706.513062 1705.667725 1705.703979 1706.960815 1709.229736 1714.291138 1720.159302 1721.915283 1722.30249 1721.603271 1720.228638 1717.766846 1718.557983 1720.346924 1721.880249 1722.986816 1723.518799 1723.885376 1724.002686 1723.577271 1723.162842 1722.954224 1722.529175 1722.505493 1717.830933 1706.171509 1698.484619 1689.504517 1678.755249 1664.676147 1645.495117 1653.449219 1670.393921 1680.16687 1689.481201 1695.948975 1699.186401 1697.64502 1693.503662 1685.189453 1678.039917 1669.62439 1661.719482 1651.932129 1643.272705 1640.943237 1650.460571 1652.213379 1648.667725 1639.774536 1626.726929 1639.224121 1655.818237 1671.819946 1684.416504 1692.618164 1697.8125 1698.176147 1690.930786 1679.803833 1668.944214 1660.124756 1648.154419 1643.260254 1635.205078 1629.071777 1623.425049 1632.313477 1644.152344 1655.451782 1663.368408 1668.44751 1669.980469 1667.755249 1662.688965 1654.094238 1640.881958 1619.44458 1611.290405 1637.866821 1650.970581 1660.141235 1666.615723 1667.287842 1661.228394 1654.313354 1654.422363 1648.641235 1640.539551 1628.47998 1620.894287 1637.641357 1637.613892 1635.496826 1627.020142 1620.930176 1633.735352 1635.519165 1638.119019 1643.364502 1647.329346 1649.980957 1650.763062 1651.098022 1649.712891 1643.792603 1635.073975 1635.659546 1633.196289 1628.906982 1622.979126 1617.967163 1613.516724 1606.46106 1597.86499 1583.291016 1572.970093 1564.082153 1558.985962 1555.733398 1549.30835 1546.967285 1545.143311 1542.473633 1539.527344 1537.494629 1535.150024 1531.947876 1529.850098 1527.398193 1525.456665 1526.384644 1527.876221 1529.105225 1528.727417 1526.478638 1523.015625 1519.426636 1514.944214 1511.571655 1510.866699 1507.353027 1504.022461 1500.449707 1493.874023 1495.234741 1496.745605 1498.896851 1503.872314 1511.052612 1513.100342 1515.224854 1524.281982 1525.674072 1525.062012 1524.557739 1526.527344 1528.133301 1529.900757 1531.832397 1533.77356 1536.073853 1539.662476 1544.943848 1550.81311 1559.002197 1565.246338 1572.248291 1581.526611 1587.610718 1592.156494 1597.837158 1603.830811 1610.457764 1614.488159 1621.113525 1625.661499 1631.356445 1638.496582 1646.599365 1646.790161 1640.124634 1634.185791 1625.037598 1616.139771 1608.155518 1599.700439 1596.373291 1596.499512 1596.502563 1595.387817 1593.807617 1592.512695 1591.180664 1588.587769 1585.636108 1580.040039 1580.203491 1580.630249 1578.283447 1572.911011 1561.611938 1575.403564 1582.372681 1578.989014 1571.687012 1562.37561 1558.531372 1557.820801 1553.605835 1550.203979 1549.471191 1549.90979 1549.292847 1547.173706 1545.25769 1545.001221 1550.173584 1559.680542 1564.797363 1567.12915 1566.694702 1559.494141 1546.161011 1536.805908 1534.880249 1536.639038 1539.890137 1545.687866 1550.673218 1554.925293 1559.232422 1565.089233 1571.503174 1576.505249 1581.695801 1588.249634 1598.676758 1604.545654 1610.816284 1618.820312 1626.352783 1634.567139 1640.77478 1647.551514 1654.478394 1660.899902 1666.226196 1670.82959 1675.453369 1678.686157 1681.053223 1681.742554 1682.292969 1681.654541 1679.852417 1677.328003 1675.047852 1672.773071 1670.406128 1668.309204 1666.289307 1664.714355 1663.704102 1664.358032 1669.823853 1672.411377 1673.561768 1673.358765 1672.449341 1670.116943 1661.833862 1657.546021 1648.915771 1648.234741 1645.22168 1641.595337 1637.590576 1632.974609 1633.278442 1639.099243 1646.307007 1652.187988 1655.496704 1652.267944 1650.282227 1647.455078 1639.212891 1650.5896 1652.626221 1649.656372 1649.004395 1643.090576 1634.856201 1627.943726 1623.047729 1614.751587 1607.762207 1609.587646 1603.785034 1603.306152 1603.689941 1601.798218 1596.819092 1587.909302 1577.159668 1567.445557 1559.984619 1551.894653 1550.251099 1548.528076 1546.733154 1548.844727 1549.762573 1549.883423 1549.465698 1544.44458 1534.52478 1527.6427 1523.933716 1523.215088 1525.445068 1527.105225 1529.802002 1535.403687 1541.591187 1544.915771 1554.23645 1561.578979 1566.622681 1573.312866 1580.090454 1586.434082 1590.091797 1590.512573 1590.512573 1593.43103 1603.269897 1613.303467 1612.879517 1606.188354 1596.719238 1589.195801 1586.444458 1589.806885 1592.161621 1592.162598 1589.498291 1584.784546 1580.411133 1581.758057 1586.754395 1589.663086 1590.352905 1589.017334 1586.741699 1585.963623 1586.78064 1585.807007 1582.903076 1577.71582 1572.0354 1562.075562 1553.254272 1548.317871 1540.608398 1533.343506 1525.438354 1515.035156 1509.832397 1505.118286 1498.499634 1495.150879 1491.95459 1486.614746 1475.957886 1471.81189 1467.705688 1463.22998 1462.673218 1463.668213 1464.455933 1464.405518 1463.321045 1465.885254 1465.754028 1462.067383 1450.406494 1443.279175 1436.394043 1441.318359 1452.727539 1459.343384 1461.825806 1450.138062 1430.196045 1417.771606 1400.330444 1393.005371 1373.853638 1355.248169 1339.503906 1332.958984 1334.081665 1339.679565 1367.484375 1374.16687 1375.714844 1376.544678 1390.782715 1396.377197 1391.864868 1377.752686 1393.72876 1413.721191 1430.690308 1443.972778 1455.098389 1459.7052 1462.075439 1460.638672 1455.304932 1454.953369 1465.03186 1472.097534 1479.788696 1487.057007 1488.474365 1489.729248 1496.646484 1502.666504 1503.858276 1501.932251 1499.071777 1490.977173 1491.205078 1497.744629 1498.614136 1495.09082 1492.386597 1490.242798 1488.466919 1483.720459 1475.457886 1461.987793 1450.684204 1452.052612 1455.647583 1458.453369 1461.167603 1462.883057 1460.634766 1457.172607 1458.563965 1459.156372 1457.457642 1453.898926 1448.713501 1442.319092 1435.531616 1439.309326 1444.644043 1446.561157 1450.57251 1449.562012 1439.604858 1444.718628 1447.47937 1441.552246 1444.129028 1450.327026 1452.144531 1450.847046 1448.891968 1446.955688 1443.823975 1439.765991 1437.783813 1435.593018 1432.248047 1428.631104 1425.126953 1424.13269 1424.385498 1424.297485 1423.364014 1419.009766 1414.724854 1403.743286 1399.866577 1397.353027 1395.924316 1395.098755 1394.161011 1391.967163 1389.197632 1388.671143 1389.987305 1394.342773 1397.679321 1398.444824 1396.951904 1393.426025 1393.652954 1393.952026 1392.460815 1389.717407 1387.194092 1384.003296 1380.121948 1377.885986 1381.801758 1383.457153 1382.903809 1382.598877 1384.88916 1384.814087 1382.660889 1380.839355 1377.79541 1371.068115 1365.184692 1368.240234 1373.187256 1377.229736 1379.56189 1381.29126 1382.511353 1381.00354 1375.422729 1369.262329 1363.752319 1364.513794 1372.135986 1378.974976 1382.150269 1378.769897 1377.107666 1388.46521 1393.28125 1392.918213 1389.7052 1391.628052 1392.27356 1388.835815 1379.190186 1382.741455 1384.193237 1390.145752 1390.280396 1384.627441 1379.050049 1374.651611 1367.090454 1364.752686 1363.930542 1366.314819 1380.095215 1389.90686 1386.986328 1383.468262 1379.012085 1376.276733 1369.314209 1364.28479 1371.107788 1375.340698 1372.775146 1366.702637 1364.265991 1364.259644 1366.671509 1368.49585 1368.234131 1365.937866 1366.932739 1368.095825 1368.177002 1366.597778 1361.374756 -1622.804077 1631.425415 1639.84668 1658.2854 1670.061523 1673.844116 1680.790161 1696.338867 1708.624146 1713.181641 1721.257324 1728.281372 1731.66333 1729.842529 1724.539062 1712.534546 1708.758789 1714.789062 1721.629517 1723.46582 1721.842285 1716.572144 1713.121094 1710.382568 1714.487793 1722.296387 1723.174561 1722.659912 1720.879272 1717.542969 1711.770264 1708.2146 1706.314209 1707.069458 1710.056152 1712.730713 1716.625854 1720.424561 1722.506836 1722.96936 1722.191406 1720.010864 1718.613037 1720.385498 1722.720703 1724.43396 1725.687744 1726.330322 1726.727051 1726.700073 1726.129883 1725.156738 1724.171631 1723.386108 1721.691895 1709.944458 1698.749512 1688.798584 1680.235718 1672.072876 1655.765869 1654.596191 1665.372437 1678.544189 1688.44458 1699.81958 1708.564941 1702.894775 1697.892212 1687.081543 1674.209961 1667.027344 1660.862671 1652.353027 1643.746582 1644.736938 1652.182739 1659.338501 1661.590454 1656.002441 1645.86853 1630.125854 1634.477905 1645.635986 1661.523315 1679.728027 1689.956299 1697.075928 1696.969971 1688.971191 1679.235352 1669.566406 1661.503296 1652.540894 1644.340088 1632.567261 1626.721436 1633.872803 1639.938721 1648.349121 1660.010864 1669.684937 1675.870728 1675.350464 1669.866943 1662.771606 1651.764038 1635.856201 1618.432861 1632.05957 1649.220581 1665.619995 1673.666748 1674.712646 1673.584229 1670.706909 1667.578125 1666.252319 1663.364136 1655.501587 1644.239258 1633.99939 1641.676514 1647.623291 1648.122681 1639.516357 1630.589111 1637.85437 1640.157837 1642.23877 1645.923096 1648.750366 1650.497192 1651.280884 1651.062256 1647.158569 1637.9823 1626.834595 1620.782959 1620.517334 1618.305054 1615.508179 1611.821167 1606.283813 1598.061279 1588.727783 1577.162109 1563.219971 1558.526001 1559.413818 1561.845947 1560.623291 1557.274658 1553.644775 1548.94104 1546.6604 1546.536377 1544.841064 1542.443604 1538.892456 1536.667603 1537.186401 1536.973755 1535.335205 1533.679077 1532.497192 1532.289551 1530.80481 1525.886353 1523.67981 1523.417725 1519.285278 1515.129639 1510.432861 1506.200562 1502.401489 1494.888916 1496.677734 1499.035767 1502.846924 1506.7771 1508.722168 1510.586914 1515.543945 1522.42627 1522.105957 1524.56897 1526.039795 1526.826782 1528.643799 1531.02771 1533.11084 1535.082397 1537.662109 1542.976318 1550.320679 1557.337402 1563.187988 1567.540283 1571.37915 1579.931885 1586.773438 1592.640015 1598.291382 1604.767456 1609.962891 1613.954834 1619.780518 1624.247559 1632.504761 1641.427979 1642.280273 1637.15332 1632.010376 1624.300049 1614.84021 1607.125366 1599.445679 1596.526855 1596.068481 1595.365479 1593.630127 1590.5448 1588.225708 1587.610474 1586.418213 1582.365601 1574.350708 1571.482422 1571.9646 1571.545532 1570.614746 1572.296509 1590.057251 1594.167969 1586.498535 1575.729858 1565.457886 1564.453125 1564.329834 1562.42749 1560.570801 1559.38623 1557.965576 1555.902344 1552.568726 1550.155884 1556.117798 1564.250244 1568.41333 1571.630859 1573.214478 1571.88269 1556.825562 1542.312012 1536.464722 1535.352417 1536.79834 1540.462769 1545.352417 1549.634155 1553.790527 1558.864014 1564.617432 1571.894409 1576.574097 1581.129639 1587.673706 1596.163208 1601.617065 1607.026855 1613.477173 1620.397583 1627.765625 1635.05603 1641.746094 1648.212891 1654.215088 1660.148438 1664.874634 1669.762329 1672.884644 1674.546753 1675.091309 1675.114624 1674.025391 1672.592896 1670.567383 1668.153809 1665.759521 1663.447266 1661.89856 1660.173706 1658.604004 1658.804443 1658.65271 1665.166138 1670.574707 1672.781982 1673.241699 1672.969116 1671.310669 1670.194458 1666.82373 1663.330322 1659.462158 1651.089111 1643.086548 1638.570801 1636.171387 1639.13147 1642.843506 1648.479248 1654.948364 1659.856201 1660.537109 1660.193848 1660.260742 1661.846924 1659.469971 1651.853149 1645.832031 1642.755249 1639.93689 1634.095947 1625.303101 1612.404785 1607.456055 1598.098755 1593.643677 1590.600098 1586.695557 1588.776855 1586.998291 1582.736816 1575.832031 1569.276978 1563.151367 1554.455688 1547.701294 1546.20813 1544.305542 1542.900024 1543.898804 1544.156494 1543.895142 1542.070068 1537.228882 1526.120361 1522.109131 1520.678589 1520.573608 1521.770996 1523.076294 1524.995972 1529.679688 1532.89917 1536.117676 1541.837036 1548.737427 1558.735718 1568.109253 1574.921875 1585.897339 1596.591309 1600.909912 1603.49353 1607.466187 1612.904541 1615.066528 1612.380615 1606.520386 1599.282715 1588.618652 1582.304565 1577.666992 1580.023438 1580.255737 1578.813354 1576.137573 1571.729614 1573.432251 1577.851562 1579.872559 1580.581299 1579.47583 1577.233643 1576.075073 1577.870972 1577.990967 1576.513916 1575.130859 1570.691772 1561.594604 1556.366821 1550.77063 1543.443481 1536.299072 1527.752319 1522.468018 1515.463379 1512.330444 1502.728638 1500.007202 1498.806396 1493.43103 1485.922852 1474.683105 1465.762085 1463.810547 1461.761963 1459.950195 1457.033447 1450.592041 1452.509644 1455.484497 1455.066528 1449.203369 1443.664307 1438.724365 1426.556396 1434.876953 1443.574219 1442.724121 1444.109009 1447.486938 1437.07373 1422.772339 1399.234619 1380.727539 1365.384766 1349.668091 1338.870117 1333.581543 1335.644043 1354.238403 1376.995483 1384.388794 1389.210083 1390.657715 1395.243896 1405.860352 1406.231812 1394.433838 1386.347778 1400.709961 1419.416992 1433.467651 1443.003174 1447.562866 1448.213379 1445.907104 1445.008179 1448.611572 1454.755249 1462.319458 1470.554565 1475.279541 1478.199829 1479.494995 1486.093018 1490.064331 1491.761597 1491.088501 1488.427979 1483.055176 1481.412842 1484.438232 1487.886841 1485.456299 1484.728516 1483.58667 1481.633667 1477.481323 1469.396118 1458.35376 1450.220703 1448.791382 1450.181519 1451.763428 1452.722412 1453.707642 1452.258179 1449.218994 1450.174927 1451.275146 1449.264404 1445.967529 1442.634277 1438.232788 1428.627563 1428.282959 1436.291016 1437.592163 1441.027954 1438.605225 1433.42627 1438.092896 1441.961914 1438.501221 1437.231567 1441.358154 1442.186646 1440.30188 1438.340698 1437.184692 1434.081177 1429.619629 1425.723755 1424.757935 1423.163574 1420.178955 1417.055176 1412.59021 1412.675781 1414.25354 1415.851929 1414.135986 1405.815552 1400.798828 1397.572388 1393.572021 1391.044189 1392.503052 1391.856934 1390.127563 1387.917603 1387.151855 1388.121216 1389.119507 1391.540527 1391.930176 1390.937134 1388.857178 1389.098022 1389.374023 1388.170044 1386.814453 1384.541748 1382.288208 1379.620728 1377.541138 1377.022705 1377.686157 1376.982178 1378.550537 1381.84436 1382.072998 1380.049438 1379.154175 1375.490479 1369.414429 1365.246948 1366.240967 1369.682251 1372.835938 1374.915771 1376.494751 1377.102905 1375.919434 1370.471558 1365.64502 1358.811523 1355.832275 1364.655762 1369.016968 1369.243164 1367.507202 1375.797119 1383.139648 1385.667969 1384.651489 1379.196045 1383.162231 1383.678345 1379.698975 1371.548584 1370.450073 1371.606567 1379.658569 1380.668335 1377.990601 1371.892944 1367.76355 1362.222656 1356.066895 1353.036011 1363.723999 1372.070923 1375.769287 1377.010254 1375.604492 1366.913696 1362.084595 1355.761963 1361.39502 1370.84082 1379.463989 1377.630005 1368.176514 1362.988281 1359.770264 1362.576294 1366.69043 1367.87854 1365.360718 1361.838135 1363.191528 1364.74353 1364.786743 1359.75 -1611.859375 1625.602539 1636.917725 1648.43103 1655.841919 1664.927734 1682.746216 1696.442261 1702.124756 1704.94812 1705.224609 1707.081055 1708.983154 1708.259033 1703.705078 1696.97583 1692.906128 1703.317017 1709.814575 1712.540527 1710.994019 1703.659424 1701.192993 1697.859863 1709.791382 1723.139282 1723.621338 1722.88208 1720.431396 1717.273804 1714.159668 1710.603149 1707.208008 1709.649902 1713.162354 1715.798462 1718.562988 1720.900635 1723.341064 1723.964478 1723.386841 1720.48999 1720.019409 1722.980713 1725.677612 1727.49646 1728.529541 1729.130615 1729.411987 1729.52771 1728.533936 1726.360596 1724.367188 1722.846313 1718.43103 1708.64856 1696.546875 1681.527954 1672.52124 1662.55481 1658.097412 1665.210571 1672.556274 1685.488892 1695.805176 1706.93335 1709.222046 1699.161377 1691.346191 1680.008179 1667.081421 1659.610107 1656.110229 1652.84021 1657.282959 1659.417114 1662.608032 1669.875854 1667.018921 1658.87915 1646.94104 1632.095703 1638.846313 1650.025513 1661.094116 1674.718384 1687.416016 1695.909546 1695.288574 1686.166992 1677.624756 1669.395142 1660.67041 1653.250366 1643.610962 1629.430176 1632.074829 1637.223755 1642.313843 1651.653198 1666.749878 1680.397583 1685.832764 1679.826904 1670.319336 1662.592773 1647.094116 1633.457886 1628.692139 1634.178589 1655.441895 1673.031738 1682.203491 1684.575439 1684.111328 1682.995728 1682.617676 1677.639404 1674.273193 1669.811035 1660.930176 1651.343994 1653.814941 1657.041626 1655.979248 1649.187134 1642.844849 1645.464478 1644.380737 1644.00708 1646.728394 1649.26416 1650.795288 1651.151123 1648.831909 1640.746216 1630.26416 1618.575684 1613.115356 1611.656128 1609.404053 1606.349731 1601.939819 1596.368164 1590.63501 1579.574219 1567.708374 1563.917236 1569.351685 1572.022583 1571.658447 1570.930054 1568.074341 1563.071289 1557.759644 1556.971436 1557.749023 1556.433472 1552.338257 1548.147095 1547.275513 1546.830444 1546.123779 1543.037231 1538.170776 1535.512085 1538.363159 1539.150024 1538.029175 1534.987915 1531.93396 1527.115479 1523.677734 1516.125488 1510.045532 1505.510132 1502.225342 1496.360962 1499.408569 1502.212402 1505.486206 1508.18457 1510.084839 1511.257202 1513.237915 1518.953247 1522.867554 1524.428467 1525.06543 1527.782227 1531.703735 1533.607666 1534.406982 1535.505615 1537.960938 1545.570679 1551.838135 1557.365112 1563.043335 1567.641724 1574.590332 1579.781006 1584.025635 1586.633423 1594.330688 1596.794556 1603.449951 1608.57959 1619.435303 1630.298706 1637.891724 1638.307251 1632.189331 1624.257812 1618.556396 1609.636719 1606.036743 1601.251099 1599.193848 1598.075317 1596.709351 1594.297852 1589.769287 1584.819092 1583.419922 1580.474976 1574.496338 1572.462891 1579.230713 1576.496216 1571.62793 1584.406128 1594.278076 1602.423584 1602.510254 1592.821045 1577.104248 1574.826416 1575.619141 1572.280884 1569.329834 1568.775024 1567.300659 1565.476929 1563.777222 1561.068848 1559.552979 1565.777832 1571.190918 1574.964111 1576.057739 1573.015259 1562.168701 1550.918701 1541.118164 1536.286011 1537.455566 1536.837402 1540.237305 1544.161865 1547.857056 1552.134033 1557.946777 1563.807251 1570.380371 1575.455933 1579.543213 1584.882568 1592.081421 1598.192505 1603.02771 1608.21106 1614.146973 1620.259888 1627.84375 1634.463257 1640.277466 1645.739746 1651.962646 1657.154297 1661.053589 1664.668213 1667.368286 1667.873047 1667.44873 1666.29248 1664.811157 1663.114624 1661.105591 1658.902588 1655.543457 1654.084229 1652.643799 1654.439209 1657.224854 1659.693115 1664.148926 1668.8927 1671.685059 1673.126343 1673.511475 1673.414673 1673.033936 1672.584961 1667.405273 1662.109131 1652.357666 1642.428345 1637.033691 1635.491333 1638.687256 1643.260742 1650.010986 1657.245483 1666.574707 1666.382568 1662.86377 1660.58252 1659.22168 1654.676025 1648.910034 1637.468994 1631.751587 1633.296143 1628.355347 1622.295776 1611.639282 1593.817383 1585.589966 1582.234497 1581.392212 1578.407349 1575.570923 1573.890625 1570.927734 1566.691528 1561.380127 1556.129517 1551.19104 1549.417847 1547.781372 1545.044312 1541.662109 1539.366821 1538.367065 1537.988647 1536.069092 1528.787354 1525.090332 1525.990845 1519.303345 1516.748413 1517.062744 1518.627075 1521.594604 1525.37439 1528.386719 1531.309814 1535.250366 1547.9198 1556.39917 1565.51001 1575.317627 1584.041748 1603.954224 1620.651245 1622.036743 1621.282471 1620.70166 1617.608887 1613.608154 1608.453979 1601.833496 1594.172241 1584.271362 1572.859375 1571.315552 1571.766357 1570.008423 1567.644531 1564.750488 1566.320435 1570.258179 1572.3479 1572.607056 1570.539307 1566.135986 1563.61853 1568.246948 1569.533691 1570.047729 1570.020874 1567.510986 1563.474365 1559.152222 1548.817871 1539.046509 1528.633545 1521.216431 1512.920898 1512.700439 1514.27002 1513.188721 1508.27124 1504.692383 1500.79834 1489.912598 1478.489624 1475.401489 1470.238037 1461.098511 1459.532349 1456.610229 1452.791626 1448.348267 1442.49585 1440.380859 1435.452148 1432.276367 1425.287598 1413.983765 1420.941895 1427.145264 1427.122803 1426.208252 1429.406616 1431.012207 1422.817139 1406.522583 1385.368164 1365.388306 1346.898682 1338.263428 1333.98877 1336.38855 1372.835449 1385.385986 1393.953003 1399.160278 1401.75 1408.18103 1415.029907 1414.533569 1406.483154 1401.016357 1393.473633 1408.205322 1422.928833 1430.215698 1435.030396 1435.406982 1435.332031 1438.343506 1441.881226 1444.441772 1447.686157 1454.315796 1461.046875 1462.759277 1464.603394 1476.625732 1479.344604 1480.185547 1480.027832 1477.837158 1474.781616 1473.391602 1474.975952 1477.57605 1478.707031 1478.437622 1477.60376 1475.817383 1472.332764 1463.538208 1453.058228 1448.98645 1447.584106 1446.104736 1445.389282 1446.075439 1446.415039 1445.127686 1443.601807 1443.690796 1443.14209 1441.371094 1438.183838 1435.772705 1432.361694 1427.347412 1425.536743 1429.105835 1429.263672 1429.571167 1430.755981 1425.275146 1431.501221 1435.966064 1433.259521 1427.553101 1432.453125 1432.679321 1429.479248 1429.237183 1429.180908 1425.932983 1422.838379 1420.184326 1417.295532 1414.026611 1412.24353 1408.131104 1401.694092 1402.066162 1401.805542 1401.447876 1400.798462 1399.842407 1397.352905 1394.187866 1391.695923 1389.334473 1389.817261 1389.279419 1388.136963 1386.500732 1385.477661 1385.342407 1385.969971 1387.210571 1387.583618 1387.681396 1386.863037 1385.855347 1384.61377 1383.75061 1383.124268 1382.34082 1381.103882 1379.976562 1377.958984 1375.754883 1375.077515 1375.547241 1378.12146 1380.335327 1379.663696 1377.5802 1376.119873 1372.703247 1367.499146 1363.927368 1363.609497 1366.462402 1369.452759 1371.30249 1372.335571 1372.856934 1371.690796 1365.992432 1362.364746 1356.319092 1353.211548 1356.775024 1359.445801 1361.091919 1363.794067 1371.494019 1377.160645 1377.162109 1375.832275 1374.499756 1376.226685 1376.298462 1373.118408 1366.272705 1363.313477 1363.657959 1369.065918 1373.355713 1372.141968 1365.560425 1361.180176 1356.506226 1352.556396 1351.440674 1358.922607 1365.743896 1368.799561 1369.132324 1366.171631 1358.655151 1352.66394 1349.132935 1356.752319 1363.942017 1375.707886 1378.348511 1369.514038 1361.588013 1353.163574 1355.177124 1359.186646 1361.851807 1360.549316 1354.961426 1353.532959 1358.063721 1359.280884 1357.344604 -1604.825317 1621.465088 1628.883545 1635.082031 1650.03833 1667.304321 1678.409058 1687.230591 1692.487915 1693.748779 1692.915527 1692.370239 1693.282593 1693.838623 1690.341309 1682.610718 1679.819702 1688.459229 1692.925049 1694.624634 1692.797607 1686.351562 1682.997925 1689.304688 1712.651123 1723.245972 1725.075684 1723.684448 1719.59375 1718.272583 1717.683105 1714.895142 1712.204224 1713.538818 1716.752319 1719.416626 1721.147095 1723.057739 1724.858521 1725.624634 1725.644897 1725.333862 1725.425415 1727.11145 1729.223633 1730.555054 1731.563354 1732.109009 1732.259888 1732.275269 1730.501343 1725.86438 1722.313354 1719.609619 1712.591675 1704.326416 1694.020508 1682.146362 1671.046753 1661.744019 1670.840454 1679.231567 1683.365845 1691.225342 1699.129761 1705.026611 1702.531006 1692.325928 1685.145508 1672.07666 1662.455444 1660.546143 1664.405273 1667.788086 1673.431274 1675.322632 1677.973267 1677.836548 1669.464844 1658.421753 1645.771851 1633.498291 1642.036743 1655.839233 1668.301147 1679.515503 1688.876953 1695.686523 1692.731079 1681.4198 1675.538574 1667.717529 1658.143921 1651.901123 1642.406372 1631.570923 1636.791504 1640.692139 1643.604736 1654.628784 1674.390625 1688.264404 1685.993164 1679.029419 1669.487671 1662.303711 1649.448364 1633.514893 1641.069458 1644.158691 1656.428101 1675.041748 1686.010864 1689.458862 1692.043335 1693.012817 1692.589233 1687.869507 1681.863892 1678.228149 1672.825928 1669.952271 1668.806396 1666.618164 1663.04126 1658.785767 1653.068604 1650.296875 1647.742065 1645.312866 1647.144409 1649.800903 1648.634155 1646.448975 1640.717651 1629.791138 1617.719482 1607.093018 1603.60144 1601.314209 1599.042236 1595.460815 1592.03186 1589.600098 1576.94519 1569.572144 1568.510376 1575.735474 1579.540283 1582.547485 1582.223022 1580.096069 1576.42627 1570.969116 1567.516968 1568.069824 1569.093994 1567.961304 1563.640259 1560.129028 1559.523804 1559.033691 1555.470093 1551.91272 1546.518799 1543.059692 1545.812378 1548.064941 1546.333496 1543.02063 1539.124268 1534.873901 1528.974365 1520.985718 1512.782349 1509.883545 1505.674561 1499.296875 1500.086792 1502.947266 1505.661011 1509.758911 1512.643677 1513.760864 1514.800049 1519.355713 1522.497925 1523.294678 1524.610229 1532.710083 1535.599976 1535.800903 1535.293823 1535.481567 1535.936646 1539.05481 1546.519531 1549.23291 1556.520752 1560.518921 1566.408203 1572.376587 1576.938232 1587.042603 1594.116333 1598.888672 1606.039429 1613.041138 1621.608154 1633.910889 1637.412476 1636.396484 1626.361328 1616.878662 1608.922119 1608.622681 1607.494385 1606.461548 1604.436401 1601.96106 1599.932495 1598.1698 1592.976074 1587.994873 1583.178833 1577.083862 1574.623413 1583.047852 1593.608643 1600.714478 1579.673462 1589.0802 1603.548218 1612.415161 1606.312744 1594.542969 1583.305298 1582.223389 1582.347046 1579.669434 1576.719482 1576.246826 1574.338501 1571.60498 1571.372314 1567.305298 1567.521118 1573.830688 1576.46167 1575.533081 1573.302856 1563.552368 1553.944092 1546.321533 1539.218018 1537.557739 1537.156616 1537.106567 1540.238159 1543.82251 1546.790283 1550.174561 1556.314453 1561.619507 1567.873779 1572.927979 1576.89917 1582.293457 1588.371094 1593.714355 1598.582031 1603.124146 1607.316528 1612.022949 1619.654175 1626.17334 1631.817871 1637.262451 1642.594727 1647.746582 1651.408325 1654.457031 1657.110352 1658.412109 1657.743042 1657.122803 1655.770386 1653.479858 1650.152222 1647.762085 1645.765381 1644.70874 1645.102173 1655.93103 1660.653198 1665.018066 1668.466553 1669.315552 1670.473145 1673.10022 1674.020996 1674.134766 1673.715454 1672.171753 1666.902222 1659.652954 1648.485107 1640.987549 1633.705688 1632.653931 1637.480103 1642.399292 1649.082031 1657.968018 1673.042114 1668.364746 1660.676758 1657.242554 1653.227905 1648.490601 1641.948486 1631.869263 1620.5354 1622.224365 1620.685791 1614.062378 1603.661377 1584.330811 1582.684082 1582.277588 1580.814209 1577.925781 1574.610962 1573.047363 1570.099854 1564.866699 1564.322998 1565.233765 1564.063354 1560.955566 1557.026123 1550.820679 1545.469727 1538.300903 1534.891235 1532.464111 1529.954712 1528.955444 1528.414307 1527.749878 1524.659302 1516.463623 1511.702148 1513.952881 1517.466675 1521.140137 1524.426758 1528.218384 1533.39563 1542.068848 1552.299438 1561.644531 1573.809814 1580.182495 1599.99292 1620.611694 1635.85022 1637.856567 1626.04895 1618.548828 1613.48291 1608.046143 1601.272949 1594.485229 1586.338623 1574.473511 1567.028687 1560.275269 1559.745605 1557.512207 1555.121704 1557.364014 1561.809326 1562.883057 1562.182861 1559.855225 1554.786499 1554.470093 1558.279663 1559.831909 1564.286255 1564.66394 1563.518188 1563.85083 1562.795044 1553.473755 1543.530518 1532.765503 1522.304077 1511.061646 1505.226074 1508.486572 1515.029785 1513.415161 1509.485596 1504.918579 1500.171875 1492.344604 1487.355957 1482.507935 1474.790283 1465.117554 1460.199219 1456.857056 1452.155884 1442.942749 1436.624878 1425.857544 1418.946167 1413.310913 1406.310181 1402.076782 1409.083008 1411.660889 1415.899658 1417.760498 1413.244873 1409.889771 1403.081055 1386.412231 1373.084595 1352.140381 1339.97583 1334.499023 1341.28894 1369.735474 1389.048462 1401.590088 1409.015991 1416.132446 1420.838623 1423.179443 1422.508545 1419.15918 1414.990967 1406.249756 1401.386475 1415.966309 1419.830688 1424.725098 1426.836426 1427.420288 1430.793945 1433.970825 1437.444214 1437.766357 1442.865479 1448.633667 1449.771729 1452.144287 1461.353149 1467.049805 1469.651123 1470.5448 1470.0177 1469.367188 1469.093994 1470.279419 1471.602417 1473.643921 1473.921631 1473.41394 1472.189453 1469.231934 1465.096436 1455.898682 1449.348267 1446.605835 1443.598999 1439.577148 1439.475098 1439.743652 1438.816528 1437.583252 1437.596313 1436.511719 1435.207031 1432.956787 1430.065308 1427.157593 1426.067505 1424.68811 1424.036865 1424.417847 1423.335938 1424.459473 1422.683228 1425.722534 1428.046631 1426.002441 1423.325684 1426.004395 1424.78125 1422.797974 1422.358154 1421.682495 1419.688965 1417.42334 1415.341675 1412.139038 1408.584595 1405.862549 1402.6427 1400.360107 1399.182251 1398.931152 1397.854858 1397.060059 1396.386597 1394.522339 1392.435059 1390.157837 1388.207642 1387.478271 1386.894775 1385.977905 1384.718384 1383.484741 1382.04895 1380.442505 1381.690552 1383.30127 1384.368896 1384.353271 1383.194946 1379.062012 1379.119385 1380.482178 1380.694824 1379.27417 1379.4646 1378.210693 1374.780151 1373.390747 1373.55481 1376.187256 1377.887939 1376.839722 1375.081909 1373.160645 1370.641968 1367.468018 1364.574341 1360.363159 1361.324707 1365.793823 1367.691162 1368.633179 1369.426147 1369.254761 1366.378174 1362.32959 1357.632812 1353.695801 1352.852539 1352.590698 1354.68689 1365.079712 1370.263916 1372.905518 1371.828735 1370.591919 1369.556885 1368.664917 1369.759888 1368.810913 1363.538208 1357.359497 1355.67688 1362.630127 1367.789185 1368.364502 1363.206787 1357.315063 1352.108154 1349.47168 1348.523804 1353.164673 1359.016602 1361.98645 1362.325439 1358.977051 1351.817993 1343.795898 1340.234985 1352.452759 1364.288696 1371.591431 1372.132568 1366.819092 1361.917603 1356.416382 1352.868652 1351.30481 1352.202637 1351.64209 1348.390259 1343.081665 1344.75708 1353.088135 1353.682251 -1599.046265 1614.623413 1621.444702 1633.169434 1649.125488 1661.389771 1670.787109 1676.045166 1677.942993 1677.85437 1677.276611 1677.825195 1680.346924 1679.825806 1675.43335 1669.07019 1667.999878 1675.922485 1680.755371 1682.401245 1678.216187 1673.086792 1681.43103 1691.749878 1715.288208 1724.741455 1727.868408 1727.02124 1722.805298 1721.965698 1721.600098 1720.255493 1717.555542 1717.172485 1720.209717 1722.763306 1724.230713 1726.133179 1726.976318 1727.432495 1728.222656 1729.241089 1729.915283 1731.779175 1732.904297 1733.879272 1734.575562 1734.231079 1733.884155 1733.619629 1729.919556 1721.874878 1718.147583 1712.19458 1706.247314 1700.223267 1691.537598 1679.634888 1669.815063 1669.699829 1683.956421 1691.166382 1697.200073 1701.748169 1707.921387 1707.407349 1698.422119 1688.070679 1675.09314 1668.047974 1673.032349 1676.529175 1678.292236 1681.603516 1683.849243 1686.232178 1687.646973 1679.335571 1668.02063 1656.517212 1644.496338 1636.977783 1643.645752 1660.4646 1669.972168 1683.80957 1692.2854 1697.526489 1693.052002 1680.274414 1672.61853 1663.415405 1656.112305 1650.066895 1640.13269 1634.539185 1647.957153 1646.47229 1644.330078 1655.241699 1674.650146 1687.221924 1685.345459 1677.833496 1668.905151 1661.925415 1651.697266 1640.638794 1653.479614 1657.110107 1656.819702 1671.733276 1687.140137 1693.488525 1698.395508 1700.601929 1700.073364 1697.165039 1691.888306 1687.451416 1682.317383 1678.504028 1676.002686 1673.10376 1668.653564 1663.125732 1658.449341 1653.917847 1650.07251 1647.832397 1648.538208 1642.349609 1634.651367 1631.646973 1620.946167 1614.38501 1606.920044 1599.052246 1590.105469 1586.589111 1586.385376 1584.707153 1582.176758 1573.963989 1571.311523 1571.687378 1581.952637 1586.730469 1588.664673 1590.655029 1590.158813 1588.022339 1583.956787 1579.164429 1578.67627 1579.566772 1579.042603 1577.366577 1575.221191 1576.348022 1574.953125 1569.524536 1563.572021 1557.492554 1551.919556 1547.727417 1553.86792 1559.791992 1556.28186 1550.082642 1544.492676 1539.046997 1532.368408 1526.266357 1521.189087 1515.605957 1510.45813 1503.745117 1498.487793 1502.121338 1505.383667 1510.37854 1513.759033 1516.288086 1519.082397 1522.442505 1525.498901 1528.403198 1534.633789 1537.629272 1538.278687 1538.891113 1538.852295 1538.967773 1540.187012 1541.802246 1546.795898 1548.687134 1553.867432 1562.094604 1569.108276 1575.09375 1580.479126 1587.770142 1597.105591 1607.425415 1614.536743 1621.997925 1627.61438 1634.313232 1636.094238 1630.484375 1621.244995 1619.521973 1619.039673 1618.382202 1615.327515 1612.601562 1609.931396 1606.26416 1602.753784 1600.058838 1595.769531 1589.319946 1585.049805 1581.015747 1581.128052 1585.904419 1594.549316 1600.230591 1586.686035 1587.801025 1601.130737 1612.838379 1608.772949 1597.790283 1587.515015 1594.070312 1595.111694 1588.990601 1583.82605 1583.475464 1582.934082 1582.873535 1581.327271 1577.671631 1579.112549 1583.534058 1578.947876 1574.035889 1567.732788 1558.476074 1547.243286 1543.620728 1538.004639 1537.880981 1536.827881 1537.719482 1541.161865 1543.741089 1546.185547 1549.37854 1555.223145 1560.697021 1565.405884 1569.955811 1573.352783 1577.605347 1583.827026 1588.77356 1593.333008 1597.633179 1601.407593 1605.202271 1610.154175 1617.512573 1623.552979 1627.873413 1632.372925 1636.706299 1640.440918 1642.030151 1642.957397 1644.042603 1645.079346 1644.256104 1643.222046 1641.571777 1640.528442 1640.176636 1641.472656 1643.726196 1649.015747 1660.638916 1664.723511 1670.921143 1672.379761 1673.332764 1673.391235 1674.604492 1674.332031 1673.95813 1673.447144 1671.43811 1662.605347 1653.052246 1643.542114 1637.359619 1631.064453 1628.456177 1634.943604 1640.854492 1648.285034 1657.370361 1670.379639 1666.632446 1658.44812 1653.565918 1646.685547 1638.113647 1631.499023 1624.361816 1614.168457 1608.275024 1604.866699 1596.621826 1592.865601 1589.790894 1591.662842 1592.604492 1589.802612 1586.053101 1583.087891 1581.055542 1580.413208 1576.719971 1575.016113 1576.558594 1573.938232 1570.205933 1566.621094 1561.667969 1553.926392 1547.259644 1544.075928 1541.370972 1538.063477 1535.140137 1532.758179 1530.290405 1527.167603 1522.314453 1513.773682 1509.276367 1513.052002 1516.949219 1520.968506 1525.190918 1529.474365 1533.961426 1544.973511 1556.150146 1569.799927 1577.849854 1585.537476 1608.265259 1621.403931 1629.548828 1625.08374 1617.551147 1610.503784 1602.550903 1596.904175 1588.612671 1581.708008 1573.857056 1568.764771 1563.243286 1558.985962 1551.905884 1547.325317 1547.289429 1549.874023 1550.977173 1550.354736 1546.998779 1543.269775 1546.868896 1549.507935 1550.386597 1557.302856 1558.230591 1556.37915 1556.156006 1558.383057 1553.899414 1546.677002 1534.246582 1523.437988 1512.468872 1501.822388 1497.2229 1506.705933 1514.26123 1513.325073 1509.358032 1505.954346 1503.500244 1499.593872 1492.133911 1483.078369 1472.899414 1467.373413 1461.908691 1457.611938 1453.223633 1448.315308 1439.1875 1431.654785 1425.489746 1418.869507 1407.907349 1400.428711 1387.670654 1391.220703 1396.443604 1394.18457 1387.314331 1384.781494 1380.987915 1368.229004 1351.497681 1340.641357 1334.199341 1345.129883 1370.790283 1392.154175 1401.884155 1415.758911 1426.840454 1429.504028 1429.721191 1429.47937 1427.717163 1421.415771 1413.022827 1406.642822 1405.936523 1412.869873 1416.291748 1418.407959 1422.733032 1425.607666 1434.063599 1441.965088 1443.353271 1438.557495 1441.72937 1447.209351 1449.626587 1451.987671 1456.892334 1460.237793 1462.868164 1463.722168 1463.930298 1464.829712 1466.260742 1466.863159 1471.023804 1471.516724 1470.891113 1469.475464 1467.790771 1465.890625 1458.640625 1449.987305 1446.265625 1443.301514 1440.521606 1437.906128 1436.509888 1435.926514 1434.918335 1432.803833 1430.672485 1429.601562 1428.701172 1426.82312 1425.344849 1424.28418 1423.016846 1421.58252 1419.458252 1417.681641 1418.04834 1417.511719 1418.62085 1419.331177 1419.731445 1417.46875 1417.843872 1418.560303 1418.072144 1415.940308 1415.248413 1414.121948 1412.780884 1410.742554 1407.181396 1403.256104 1401.58728 1400.333862 1398.826294 1397.306152 1395.852539 1394.778076 1394.234863 1393.71814 1392.625854 1390.938232 1388.718262 1386.861572 1385.442627 1384.624146 1383.699707 1382.730469 1381.770508 1380.137329 1377.630859 1378.243408 1380.381226 1381.668945 1382.083618 1381.609863 1380.115845 1378.047119 1377.743774 1379.056274 1377.676025 1377.149902 1375.552246 1372.973633 1371.003906 1368.274048 1371.012085 1373.195679 1372.948364 1371.102295 1369.971436 1369.331543 1368.071411 1366.73999 1357.852661 1353.663208 1358.715088 1363.118774 1365.713379 1366.201416 1367.12146 1367.329224 1363.973877 1358.382202 1356.115967 1353.523315 1351.806274 1356.709229 1364.248047 1368.056519 1369.486328 1368.242676 1365.082153 1365.212646 1363.566284 1365.598999 1364.910889 1360.352905 1354.551514 1352.427002 1356.782349 1364.849365 1365.47876 1360.162598 1354.204834 1349.898193 1344.17749 1342.90332 1348.704346 1352.884888 1355.930908 1355.751221 1352.587646 1345.827148 1339.236816 1340.657593 1352.872192 1364.133179 1368.330933 1367.168701 1364.505249 1362.9823 1360.5979 1356.478638 1350.823975 1340.773193 1339.424194 1338.152344 1334.301758 1332.223877 1337.908936 1340.912476 -1597.950439 1609.070801 1620.010254 1630.598877 1641.424805 1649.364258 1654.873901 1659.168579 1662.254639 1661.923218 1661.351929 1662.432251 1664.123657 1664.0979 1660.940063 1658.198853 1660.836914 1666.081299 1669.371704 1668.386841 1666.8396 1670.377075 1685.489868 1693.907837 1714.938477 1725.918823 1731.386963 1731.356079 1730.396851 1728.183105 1726.294556 1724.568726 1721.465332 1719.571655 1722.522583 1725.694458 1728.259155 1729.984741 1729.561035 1729.174072 1729.965454 1731.471924 1732.864136 1734.570679 1735.854492 1737.227051 1737.57959 1736.641113 1734.891235 1732.963989 1725.260132 1717.318848 1709.653442 1704.747437 1701.07251 1696.713501 1685.377686 1675.262817 1668.452026 1682.751099 1692.15271 1705.846924 1710.764404 1710.8573 1711.044922 1706.771973 1696.886597 1681.890625 1667.803589 1677.589478 1686.089233 1688.65564 1690.128662 1692.684937 1695.952148 1696.420288 1689.970337 1676.195312 1664.706421 1653.30957 1643.039551 1642.523193 1650.580688 1664.436523 1672.637939 1684.840332 1695.601196 1698.627563 1693.044922 1679.153442 1668.577515 1660.756348 1656.266479 1649.309326 1641.572144 1649.167725 1655.263672 1654.908569 1651.707397 1655.915039 1667.456299 1677.456421 1679.892212 1674.974609 1670.494019 1664.733765 1657.937866 1643.919556 1661.602905 1669.222534 1672.391235 1674.768311 1685.443481 1696.520752 1706.32312 1708.576538 1706.356934 1703.430786 1699.444092 1696.894409 1692.036987 1683.682983 1680.37085 1676.559692 1671.187744 1663.976929 1658.2146 1654.172363 1650.982788 1647.783081 1636.34436 1621.789307 1620.56897 1614.070923 1607.664185 1597.823486 1594.887207 1593.494629 1589.086548 1586.9823 1583.219971 1581.045898 1580.718384 1581.178101 1581.981689 1586.378418 1592.342041 1595.403931 1596.790283 1597.679688 1596.406006 1594.212524 1591.217896 1588.478638 1589.906494 1590.097168 1588.162109 1586.415039 1586.059204 1584.726929 1581.564331 1576.262329 1569.275146 1563.755615 1558.4729 1554.230835 1562.359253 1570.562866 1567.366089 1559.370728 1547.047241 1541.159912 1536.348145 1533.196899 1528.17627 1522.218506 1514.543457 1506.780884 1499.943359 1500.389771 1504.255737 1509.778687 1513.771973 1516.613647 1520.676636 1524.983032 1527.687134 1531.674316 1536.669189 1538.179443 1539.60498 1541.140259 1543.839722 1545.981445 1546.835449 1547.393188 1549.355103 1556.799194 1561.805054 1571.345703 1576.559326 1579.907104 1581.723022 1586.768311 1599.276001 1611.885986 1619.921509 1626.630737 1631.804688 1635.047607 1636.141235 1631.511108 1630.306274 1631.845947 1629.570801 1627.331543 1623.434326 1618.528931 1613.193848 1608.615234 1604.278198 1600.46228 1596.37146 1588.812012 1584.440674 1583.885254 1584.566528 1589.190308 1594.743042 1598.872925 1592.54895 1587.108887 1596.660645 1609.470825 1614.590332 1600.41272 1601.134644 1609.445312 1606.590942 1603.600586 1598.550903 1596.760742 1594.737793 1592.264893 1589.336182 1587.327637 1588.247437 1585.098022 1576.505127 1570.324463 1564.49939 1554.87561 1547.463013 1544.724609 1545.348389 1545.624634 1541.165527 1542.286011 1543.144775 1544.482178 1546.78479 1549.838013 1554.92749 1560.229858 1563.963501 1567.231079 1570.187744 1572.19458 1576.000122 1581.968018 1586.439697 1590.716553 1595.201294 1599.46875 1603.758545 1607.975342 1612.619507 1618.25061 1622.239258 1625.792603 1628.538818 1630.232788 1631.151123 1631.840698 1632.023926 1631.902222 1632.16394 1632.892944 1633.258911 1633.471802 1642.544067 1645.536743 1653.231934 1659.068848 1666.69751 1670.586548 1675.497437 1677.569092 1677.880127 1676.290161 1674.138306 1672.71875 1672.338623 1667.857178 1656.147217 1644.305664 1637.961426 1631.473633 1624.542114 1622.866699 1631.672363 1638.686401 1646.786255 1655.972046 1663.41626 1663.490112 1658.92041 1652.312256 1644.360107 1633.261475 1623.892456 1615.199097 1607.23645 1602.764526 1598.008057 1598.486572 1597.930664 1600.887329 1604.877075 1609.077881 1605.204224 1596.513428 1591.431274 1588.271851 1589.244019 1588.86084 1587.58728 1590.273071 1590.696045 1586.097534 1576.537109 1569.214355 1562.99231 1558.128784 1554.977661 1551.423584 1546.543091 1541.049805 1535.936768 1533.622803 1530.595581 1526.743774 1519.867432 1511.15564 1507.47937 1513.39209 1517.238892 1521.664429 1526.503174 1531.95752 1543.098145 1554.471191 1566.743164 1575.508179 1579.913574 1589.526123 1609.995483 1619.702881 1620.684448 1616.90625 1609.743774 1596.827515 1593.930054 1586.728516 1583.018921 1578.594116 1574.607422 1570.512329 1565.460205 1560.444702 1554.244507 1548.793335 1536.471191 1535.463989 1538.122681 1536.371338 1532.805054 1535.737915 1535.536499 1541.271606 1547.697144 1548.455444 1544.600098 1539.306885 1546.411621 1547.605469 1539.909912 1530.552368 1519.492188 1508.227295 1498.608398 1490.299805 1497.584717 1506.818604 1513.042725 1511.045898 1509.478638 1507.946289 1504.680786 1498.492798 1491.402222 1487.089722 1481.550781 1472.802368 1462.075684 1455.362549 1449.768188 1446.57666 1439.704224 1435.768311 1428.069824 1421.415283 1415.853394 1404.243042 1393.806641 1385.102051 1378.182129 1369.083496 1362.025513 1363.848999 1360.61438 1348.402344 1337.139282 1337.910645 1351.944946 1371.119873 1386.195312 1397.545532 1414.243164 1421.36377 1425.55603 1429.332153 1428.716309 1429.417603 1427.917603 1418.235596 1415.929932 1416.998047 1414.792847 1414.93335 1414.416748 1426.744263 1438.283081 1447.46228 1453.06897 1453.454102 1445.984985 1445.315308 1452.204224 1451.459839 1450.963013 1450.910767 1451.827759 1455.980835 1460.059204 1461.625977 1462.416748 1462.802856 1463.372437 1469.301392 1469.948364 1469.459839 1467.984497 1466.150635 1464.865234 1453.972534 1449.785889 1447.408325 1444.927246 1441.354004 1436.941895 1435.771973 1434.969482 1433.950684 1430.794922 1426.312988 1425.876587 1425.971069 1425.022217 1423.916138 1422.932495 1421.645874 1419.766357 1416.82959 1414.471191 1413.996582 1413.957031 1413.674805 1413.981934 1413.815674 1413.272461 1412.747192 1413.973999 1413.66748 1412.481079 1411.578003 1410.717651 1409.141235 1406.926025 1404.059937 1401.405518 1399.670776 1398.29541 1397.076904 1395.534302 1393.338257 1391.630615 1391.54834 1391.345581 1390.314331 1388.78894 1386.706909 1384.808105 1383.64624 1382.690918 1381.657349 1380.79834 1380.564697 1379.711182 1377.697144 1376.699097 1378.383911 1379.70459 1380.338257 1380.676025 1380.198975 1379.147583 1376.692505 1375.33252 1373.680298 1371.529297 1369.74292 1369.376831 1368.817505 1366.159912 1366.895142 1369.43042 1369.706421 1367.06311 1366.320801 1367.398926 1366.910034 1366.696899 1358.236938 1351.490112 1352.297241 1354.947998 1356.082153 1354.315674 1356.080933 1360.141968 1356.560791 1355.803955 1354.095093 1354.396606 1350.885864 1353.98291 1359.517456 1365.047974 1367.34375 1366.676514 1362.686768 1358.376221 1357.178345 1359.341064 1359.974365 1358.000977 1354.847046 1351.713135 1354.694092 1358.8479 1360.24231 1358.094116 1352.615967 1347.753296 1342.692871 1340.527588 1345.621216 1348.950317 1350.732666 1350.261475 1346.767334 1339.525024 1330.83606 1340.742188 1349.834351 1358.831421 1363.796509 1360.356812 1361.095947 1366.18396 1366.739624 1362.148926 1357.588623 1352.991699 1345.445068 1335.651978 1326.567017 1323.482788 1327.661255 1329.4646 -1592.570068 1607.71106 1618.879639 1625.523315 1631.988037 1636.136841 1637.914429 1642.039307 1643.177856 1643.894775 1645.950806 1648.25708 1649.015137 1649.038452 1647.99231 1647.030518 1650.588623 1656.453735 1658.004028 1657.787354 1662.73291 1676.128906 1687.473999 1698.666748 1714.349854 1729.548584 1733.230347 1733.90625 1733.838257 1733.171021 1732.133911 1730.940674 1727.967773 1725.934326 1726.486938 1728.787476 1731.768555 1732.838745 1731.529297 1730.359863 1731.542236 1733.71875 1735.857666 1737.899292 1739.609009 1741.043457 1741.481445 1738.84314 1733.685303 1727.101074 1717.994751 1712.73291 1705.94043 1699.997314 1696.750366 1686.122437 1679.270142 1673.661255 1677.824585 1690.477905 1705.676514 1714.216919 1718.160278 1717.226074 1710.614136 1703.195679 1691.657593 1679.039429 1684.420166 1695.812622 1698.917603 1701.05603 1705.468628 1707.555176 1704.718506 1699.873047 1688.647583 1672.323608 1661.677368 1649.879761 1643.441406 1656.603638 1665.045166 1673.398926 1678.184326 1685.840576 1696.912476 1697.902832 1690.013916 1678.477051 1670.174072 1665.271729 1660.669312 1653.497437 1643.945923 1656.328735 1663.406006 1664.129517 1662.38623 1659.931763 1663.817139 1668.32666 1669.833862 1672.056519 1672.571899 1672.026978 1667.581299 1654.28479 1662.809814 1676.816895 1684.589966 1686.853149 1689.972534 1697.360596 1710.766113 1709.944214 1709.933105 1708.747559 1705.663452 1702.010376 1698.329102 1691.741943 1685.252563 1679.774902 1671.697388 1660.996582 1655.963013 1652.028931 1647.776367 1640.383301 1627.997192 1614.871582 1608.189697 1605.373047 1602.741089 1602.851685 1604.831055 1606.088013 1606.541138 1604.11438 1601.083008 1594.946899 1593.980469 1595.531494 1594.478638 1596.233765 1602.811279 1606.580078 1609.602051 1609.74646 1607.174072 1602.397339 1598.683228 1598.573853 1601.148438 1599.588135 1597.889771 1596.823608 1595.538452 1592.802002 1588.576416 1582.299683 1575.677002 1574.841919 1565.434692 1558.688599 1567.846191 1577.698853 1575.254395 1561.76709 1549.272095 1545.316406 1541.203979 1538.780762 1533.527832 1527.006226 1516.128662 1509.346558 1504.359375 1499.988892 1501.975952 1507.678345 1512.630249 1515.74646 1520.204468 1524.558472 1527.177368 1531.07959 1535.327393 1537.951416 1539.771606 1542.151855 1546.155029 1549.931274 1552.016968 1555.011841 1560.212402 1564.550537 1568.86499 1574.751099 1581.929443 1586.332764 1584.662109 1584.639648 1595.190063 1611.7229 1620.713867 1631.315552 1639.997437 1645.696167 1643.300781 1640.963989 1640.791016 1638.7323 1636.082886 1633.820557 1626.575684 1620.697388 1614.174072 1609.051025 1604.182617 1599.87561 1594.429321 1585.768555 1585.894165 1587.047363 1587.892944 1592.302124 1596.452026 1599.411743 1598.899658 1594.983032 1595.252075 1608.615356 1620.628418 1608.355591 1614.811401 1618.05542 1617.147461 1614.805298 1610.498657 1606.562744 1601.180176 1597.76062 1591.366577 1588.518433 1585.579346 1577.35791 1570.617188 1565.080322 1559.445435 1551.903442 1546.598267 1547.703857 1552.557861 1553.799561 1550.141479 1546.024048 1543.705811 1544.92041 1546.999146 1550.313599 1554.520386 1559.644775 1562.97168 1565.196045 1567.277588 1569.050659 1570.994629 1573.564453 1578.714844 1583.337402 1588.620972 1593.744019 1598.607422 1602.389038 1605.679321 1610.10498 1613.849487 1614.741577 1616.234131 1619.553345 1621.113647 1620.509399 1621.05603 1621.94104 1622.768677 1625.635864 1633.89856 1642.713135 1650.693726 1656.886719 1660.641357 1664.900146 1670.662598 1673.170532 1678.126587 1682.505615 1681.484375 1677.296387 1670.237793 1668.744507 1667.678589 1661.647339 1648.92041 1636.833862 1630.943726 1624.344849 1619.071777 1620.088989 1628.075928 1636.649414 1645.093262 1654.223145 1660.304199 1661.210938 1658.324219 1651.633179 1644.397095 1634.67688 1625.571289 1617.150269 1609.914307 1604.578125 1604.673096 1608.233276 1608.428467 1611.531006 1620.827271 1625.230347 1621.699341 1609.880127 1599.494141 1598.009277 1600.051758 1602.230713 1602.174805 1603.270752 1603.69458 1598.892212 1588.369629 1576.229492 1570.900269 1568.460815 1565.854004 1562.435547 1556.026489 1549.016235 1541.994141 1537.569092 1534.222412 1529.919922 1525.666992 1516.233765 1506.213013 1508.123047 1513.120972 1516.958984 1522.795654 1529.157715 1539.818726 1551.193115 1558.939209 1568.571655 1575.414795 1580.093872 1588.840576 1605.989746 1612.759644 1614.590942 1613.611816 1607.27002 1599.126953 1593.704224 1588.995728 1584.889404 1580.671997 1576.817627 1572.090942 1566.689697 1560.521484 1555.634521 1551.047241 1540.384277 1527.171509 1522.91394 1523.33252 1523.480835 1524.077271 1531.117188 1536.565796 1534.608521 1529.873169 1528.421143 1533.455688 1532.678101 1529.431763 1523.412354 1512.890747 1505.722168 1496.157349 1486.038208 1490.817017 1498.169434 1503.147705 1509.955933 1513.190063 1512.766235 1510.64978 1505.944458 1503.091919 1498.113647 1490.127808 1483.280762 1478.379883 1472.227783 1466.120728 1455.429443 1448.765259 1445.304443 1442.171387 1432.231934 1427.912842 1420.203491 1410.73584 1407.50769 1400.992065 1387.343628 1367.120728 1351.921509 1343.89209 1339.238281 1335.456299 1340.66333 1354.196777 1362.753784 1372.539551 1391.929199 1405.459595 1412.714233 1417.317505 1420.009277 1421.728516 1423.449829 1422.926392 1418.242188 1420.987061 1424.915649 1415.417603 1415.871338 1418.516724 1424.96814 1431.865234 1436.630249 1440.442871 1441.222168 1442.500977 1444.368652 1449.691406 1452.180176 1453.45105 1453.987671 1453.747559 1457.731323 1461.939941 1463.531128 1464.615112 1465.283691 1465.375366 1469.084961 1469.519409 1468.974487 1467.510986 1464.667114 1461.245728 1458.063232 1454.036377 1451.245605 1449.939209 1447.394287 1443.272583 1439.916382 1437.724487 1437.574097 1436.536133 1433.276123 1428.884155 1426.248657 1424.900024 1423.750488 1422.575684 1421.228149 1419.386841 1417.180664 1415.652588 1414.603149 1413.897095 1413.438354 1412.628174 1411.823975 1411.044434 1410.539062 1410.478394 1410.32019 1409.590942 1408.660522 1407.725098 1406.498291 1404.671509 1402.190796 1400.024658 1398.028809 1396.563232 1395.380127 1394.175537 1392.348755 1390.25061 1389.465088 1388.479736 1387.423462 1385.931519 1383.851074 1382.401001 1381.508301 1380.858643 1379.994385 1378.561035 1378.688721 1378.641357 1377.085571 1375.32019 1375.980957 1377.818604 1378.906372 1379.257935 1379.224243 1378.572998 1374.383667 1367.022339 1366.796875 1367.739868 1365.402954 1366.513428 1367.221558 1365.967773 1364.481323 1367.762695 1367.973633 1366.694702 1363.220459 1362.941895 1360.366089 1359.8396 1353.666138 1347.97998 1345.828491 1347.664429 1349.00293 1347.630249 1346.211914 1345.682251 1342.39856 1344.575562 1347.320923 1348.606812 1343.452881 1349.355591 1354.141846 1359.9552 1362.971313 1362.280884 1358.699463 1353.577393 1352.296631 1355.134644 1356.970947 1356.570435 1353.675415 1348.302856 1351.521729 1355.373535 1356.928833 1355.754517 1353.263062 1347.245239 1342.90564 1338.773682 1342.759521 1345.231934 1345.272217 1344.370117 1341.116089 1332.466919 1329.764038 1338.109497 1347.386841 1355.466187 1357.363647 1351.255005 1354.635864 1360.224365 1365.003662 1363.077271 1355.908813 1356.946899 1356.623779 1348.869629 1335.548584 1322.322144 1314.67041 1314.994385 -1590.40625 1606.638306 1613.540161 1618.987671 1621.157227 1620.901367 1622.73584 1629.075195 1632.702271 1632.408325 1630.869629 1633.101196 1635.981689 1635.24231 1633.033203 1633.131592 1635.599365 1642.681763 1643.931885 1652.631104 1665.033325 1677.086426 1687.119751 1699.533813 1714.207764 1727.542114 1734.151855 1734.579346 1734.780029 1735.170654 1735.352295 1734.563354 1733.638428 1730.894531 1730.246216 1732.034058 1734.16272 1733.734131 1731.518555 1731.537598 1733.990112 1736.44812 1738.7229 1740.980347 1743.2052 1745.002563 1744.685669 1741.231323 1732.58606 1724.210938 1716.300537 1709.400146 1699.717529 1693.983643 1683.189697 1679.966187 1678.869873 1677.871704 1684.545776 1699.028198 1711.224487 1718.949097 1722.186279 1718.736816 1709.124756 1700.484253 1686.485229 1683.257202 1699.501587 1706.148193 1709.606934 1711.546997 1711.797241 1711.411865 1706.723145 1695.078003 1679.85437 1668.068604 1658.887817 1649.113403 1654.001465 1664.168945 1670.300415 1678.333374 1683.87439 1689.540161 1696.625 1698.172729 1691.962036 1680.46936 1674.286743 1668.720581 1663.53479 1657.560303 1648.890503 1662.439331 1671.557251 1673.666748 1669.739258 1667.282349 1669.073364 1668.701294 1669.774414 1672.269897 1675.311523 1676.857788 1677.11499 1670.623413 1664.508423 1680.72937 1691.478882 1696.259888 1696.743042 1700.837769 1707.356567 1709.805908 1710.230103 1710.329346 1709.431641 1706.188843 1700.003418 1693.807739 1688.003052 1681.669678 1672.595459 1662.770386 1656.000977 1649.135254 1640.69397 1630.046021 1618.346191 1619.291138 1618.705322 1616.274902 1615.310669 1617.096436 1618.868896 1619.730225 1620.121582 1617.689941 1613.442505 1607.96582 1608.738159 1608.420654 1605.105225 1604.158325 1611.976562 1617.894531 1621.705688 1623.904053 1621.683472 1614.963135 1610.358521 1611.234985 1611.716797 1608.912231 1607.940796 1606.861694 1604.843506 1601.667847 1595.980957 1586.928101 1583.725098 1582.405396 1576.36145 1562.432861 1571.156982 1579.876221 1577.029663 1566.974609 1557.441406 1548.937134 1544.71106 1540.784912 1535.518188 1527.148926 1520.368652 1512.660278 1508.037476 1502.749878 1499.802734 1505.484863 1510.682739 1514.121582 1518.098145 1522.325195 1524.454712 1526.892456 1531.780762 1535.698242 1537.761719 1540.061157 1543.935303 1548.268311 1551.799316 1557.271484 1562.908813 1566.784912 1571.932861 1577.838745 1585.049561 1590.222778 1594.275391 1596.93457 1595.604126 1607.794922 1621.742065 1636.437866 1647.834839 1649.816895 1649.103638 1648.71521 1647.795898 1642.461426 1636.704834 1630.943115 1624.933716 1619.368164 1613.00769 1608.036743 1602.891602 1598.398682 1593.187378 1587.110596 1588.175415 1590.0271 1591.61084 1594.961304 1599.000366 1601.52124 1600.436279 1597.179565 1600.081421 1614.317627 1624.318848 1625.13916 1626.525879 1630.539429 1630.052002 1621.535522 1611.764282 1606.011719 1599.619141 1593.311646 1586.330444 1581.33728 1573.756836 1568.56543 1564.04834 1557.613647 1551.345581 1547.482544 1547.04248 1555.69751 1562.53833 1562.627197 1557.260498 1550.363892 1546.147949 1545.046997 1546.593262 1549.157593 1553.034546 1557.242065 1560.838989 1562.586182 1564.677856 1566.77063 1568.632812 1570.35022 1572.470459 1576.444946 1582.261353 1587.985352 1593.105835 1597.383057 1600.447632 1603.398926 1606.410034 1605.883179 1606.020142 1608.486084 1609.075195 1609.312622 1612.605591 1619.434692 1623.298584 1627.130005 1634.603638 1646.411499 1655.873413 1661.151001 1664.012329 1669.677856 1673.920898 1676.962769 1681.004761 1684.253784 1684.917603 1677.002075 1663.179199 1658.380127 1658.776733 1649.612549 1639.646362 1630.678711 1623.76709 1616.832397 1611.509033 1617.70813 1624.994385 1635.638794 1644.237793 1653.23877 1659.829712 1660.755371 1657.88208 1651.153931 1643.745728 1634.605103 1627.922852 1620.854858 1612.585693 1609.464355 1611.094482 1616.906982 1618.518188 1623.776733 1634.037231 1636.130981 1631.038452 1621.063232 1610.372437 1609.345093 1614.861084 1616.974731 1616.967041 1615.842407 1610.654663 1602.793579 1590.750854 1581.64856 1575.467407 1575.133301 1574.587036 1569.90918 1564.039062 1555.494141 1547.939331 1542.698364 1537.412109 1532.57019 1527.824341 1520.640381 1510.242432 1501.957764 1506.235229 1511.73877 1518.138184 1524.19873 1533.130249 1542.319214 1548.673584 1558.050903 1568.790405 1575.164185 1578.903931 1585.039307 1598.237061 1608.663208 1612.525513 1612.468628 1607.803955 1600.383057 1595.683594 1592.125488 1586.947388 1582.517334 1578.268188 1572.97583 1566.619141 1560.287476 1556.000854 1550.609375 1539.315918 1525.48938 1518.734131 1511.03418 1511.341187 1517.760498 1520.124268 1518.309204 1514.664307 1515.347046 1518.957642 1519.661377 1517.382568 1513.294312 1507.119751 1502.534302 1495.777222 1480.204956 1480.068848 1485.854248 1494.166016 1505.772339 1515.159424 1514.925781 1514.656372 1512.704834 1509.016846 1505.306519 1500.593018 1497.456787 1489.496826 1480.811035 1472.546509 1468.331787 1458.430542 1452.824707 1451.462402 1440.940674 1435.392334 1431.941528 1424.828003 1417.123291 1409.550049 1393.897217 1372.876953 1357.861328 1344.928833 1335.904785 1338.040649 1340.815186 1351.036499 1353.464722 1365.201294 1381.616943 1393.159668 1398.275146 1402.208984 1408.846924 1411.54895 1415.473145 1414.232178 1409.594116 1412.533081 1414.084717 1410.150391 1412.03186 1412.943237 1414.847656 1425.564697 1427.972534 1428.864502 1431.235107 1437.521729 1438.362549 1441.204712 1447.784302 1451.897095 1457.620728 1461.57019 1465.055054 1468.151733 1470.253906 1471.071655 1469.535522 1469.01355 1469.853638 1469.862427 1469.235596 1467.830566 1465.389771 1464.541016 1463.996216 1462.483154 1459.950806 1457.647461 1455.518677 1454.602417 1453.245972 1451.091919 1449.553955 1447.037964 1443.381592 1438.632568 1431.411133 1426.810669 1424.731567 1422.901123 1421.270996 1419.461182 1418.031006 1416.760132 1415.472656 1414.629883 1413.816528 1412.701172 1411.364014 1409.931763 1408.660034 1407.827637 1407.240967 1406.847534 1406.326538 1405.678955 1404.561035 1402.74585 1400.568848 1398.476929 1396.428833 1394.868774 1393.976807 1393.389893 1392.613892 1391.264771 1389.647217 1387.350708 1385.144409 1383.042725 1381.078735 1379.988403 1379.289673 1378.866211 1378.144287 1377.44812 1377.203857 1376.651489 1375.128662 1373.337036 1371.307983 1371.217896 1373.291016 1374.38916 1373.393311 1371.083862 1368.412231 1366.035645 1364.698486 1364.819336 1364.15332 1363.897095 1364.212891 1362.647827 1360.407593 1363.382568 1364.990601 1362.438599 1358.508545 1353.914795 1353.232666 1351.347412 1348.613403 1347.454346 1346.788574 1345.056152 1344.78894 1343.416748 1343.31604 1342.635254 1341.615845 1340.350464 1340.11731 1342.036377 1340.744263 1345.508057 1350.187134 1354.018311 1355.365845 1355.403809 1353.683105 1348.367798 1346.650635 1352.062622 1355.503296 1354.816284 1350.745605 1343.884155 1341.877686 1351.790771 1354.893433 1353.99292 1350.451294 1345.962036 1343.562988 1329.807251 1337.353027 1341.827026 1341.758789 1340.017212 1335.102783 1328.61438 1328.675049 1338.215576 1344.289917 1350.407715 1349.251953 1343.313232 1342.039551 1352.721924 1353.705444 1349.216431 1347.474976 1350.052856 1352.606201 1352.344727 1343.570435 1331.374023 1319.151855 1309.634888 -1588.651489 1600.755371 1609.547852 1611.577637 1612.638794 1611.639282 1611.90564 1613.849976 1617.026489 1619.172974 1623.656006 1629.701172 1631.504639 1631.35376 1632.450562 1632.828735 1636.788208 1640.543091 1644.797729 1653.001221 1666.282471 1676.016968 1684.173584 1695.636353 1710.610962 1722.510498 1730.394287 1733.859375 1734.278687 1735.310791 1736.968262 1738.942749 1738.705688 1735.745117 1733.647827 1734.84021 1735.832764 1734.19812 1731.744385 1734.113281 1737.002197 1739.681519 1741.942749 1744.175049 1746.880127 1747.833374 1746.813843 1742.890381 1733.496826 1722.978027 1712.789307 1702.891235 1693.500244 1692.531128 1690.1604 1688.606445 1684.937378 1681.417358 1690.289062 1702.806885 1713.937866 1722.477295 1722.953247 1717.387939 1707.666504 1697.077026 1688.971558 1700.51355 1710.987671 1716.444336 1721.700928 1717.620239 1712.642944 1709.217163 1698.470581 1684.08667 1670.418945 1663.443481 1656.019287 1654.226318 1659.351562 1670.560913 1676.093628 1683.321411 1689.100098 1694.92395 1698.306152 1698.712769 1695.594116 1683.966919 1677.514404 1671.557373 1665.785522 1659.134155 1651.462036 1670.309937 1677.731934 1681.834961 1678.541626 1674.445312 1673.438965 1672.818237 1672.61438 1675.799805 1679.157104 1683.493042 1687.909912 1686.537842 1676.822388 1683.694458 1696.044312 1701.886108 1701.348022 1700.895996 1701.665771 1704.998047 1707.5177 1709.978149 1709.681885 1706.363525 1700.049316 1693.901001 1687.004395 1680.327271 1672.641724 1663.044922 1655.101685 1646.1521 1632.088013 1625.09082 1624.209106 1628.025391 1628.803223 1626.315918 1624.975952 1626.744629 1627.481812 1627.617798 1627.505371 1626.076172 1622.317139 1623.538208 1622.774048 1620.177734 1612.313599 1607.588623 1619.341675 1624.981323 1628.535034 1633.50061 1633.23877 1628.258545 1623.87561 1624.875244 1624.441406 1623.333374 1620.19165 1616.86084 1614.106567 1610.873047 1604.534302 1596.901855 1597.280762 1592.903687 1585.497925 1571.90686 1576.932251 1585.776245 1582.038086 1571.211426 1563.813843 1552.446411 1546.134888 1541.725098 1536.563232 1531.569946 1526.759155 1519.080933 1511.328369 1504.986328 1501.161499 1505.270874 1509.094727 1511.510864 1514.873779 1518.411743 1521.926147 1524.279053 1528.568359 1533.044922 1534.866577 1535.923584 1538.034424 1543.171631 1547.450928 1552.418457 1561.932983 1566.590698 1572.827515 1579.570312 1586.666626 1592.734131 1599.270264 1606.690796 1612.553101 1617.901245 1626.413574 1635.964233 1644.994995 1649.325439 1649.578857 1649.25061 1647.474487 1639.059692 1633.291138 1628.563843 1620.835938 1614.556885 1609.310303 1605.025513 1600.915649 1596.896606 1594.021606 1592.034668 1592.19165 1593.374878 1594.105347 1596.931885 1602.586182 1605.383911 1602.612427 1597.099365 1603.331543 1615.620605 1625.002686 1631.572876 1634.509521 1637.135254 1632.447998 1616.85083 1607.718872 1601.142456 1594.772705 1586.979736 1580.40271 1574.504395 1566.007202 1560.570801 1555.201172 1547.367432 1547.739502 1547.144409 1549.388672 1562.490112 1565.722046 1565.930664 1562.963257 1557.02124 1548.990967 1546.995605 1546.666016 1547.624512 1550.417969 1554.084595 1557.582275 1559.686401 1562.607056 1565.131592 1567.912598 1569.646973 1570.757935 1571.363647 1574.441284 1582.119629 1587.069092 1590.954102 1594.631226 1597.251343 1598.450684 1599.335571 1599.388428 1602.428223 1606.461182 1611.362915 1619.333618 1625.859131 1631.696899 1635.242188 1639.655762 1646.006592 1652.595337 1658.093262 1663.242432 1671.09668 1674.895752 1679.06189 1682.54895 1684.206665 1685.276611 1677.473022 1661.553345 1650.096191 1647.808472 1635.404419 1630.862183 1625.207275 1617.047241 1609.709229 1609.222168 1616.537842 1623.739624 1634.001831 1643.219482 1652.307495 1660.360596 1660.841064 1658.352295 1650.276978 1643.560791 1638.455933 1632.023438 1625.855591 1621.717651 1621.428467 1621.99292 1627.49939 1630.881348 1642.808228 1650.534668 1650.029175 1643.580322 1630.866821 1619.824829 1621.661621 1625.383789 1627.335205 1626.677856 1624.374023 1613.181641 1601.38147 1589.611938 1578.128296 1571.057251 1575.41394 1576.173584 1575.204346 1568.981323 1560.542236 1552.933228 1547.689575 1540.727051 1534.450562 1528.955444 1522.746094 1512.949463 1502.564819 1499.079346 1506.797119 1514.372925 1519.546997 1525.169556 1531.644897 1539.10022 1550.395508 1559.185059 1567.029419 1571.902222 1575.412598 1580.810059 1591.650024 1602.070068 1610.495117 1613.358887 1610.452148 1604.882568 1601.243896 1599.157837 1593.234497 1584.939087 1579.923462 1573.148682 1566.187134 1559.885498 1554.753662 1546.070557 1533.115356 1526.045166 1520.623535 1512.611084 1509.03418 1506.634521 1502.466797 1499.768921 1501.120361 1503.932739 1505.437622 1503.746094 1499.303467 1495.703979 1495.094849 1490.866211 1481.708618 1473.581055 1478.697021 1487.564819 1501.604736 1511.144531 1514.924683 1515.59436 1515.359985 1514.192261 1513.062134 1509.272583 1506.074951 1501.357788 1488.931519 1481.641724 1477.006958 1467.88147 1465.921997 1463.963867 1456.389648 1447.605469 1438.723633 1432.052002 1422.293701 1410.769897 1394.150391 1371.155273 1357.154297 1344.50415 1336.796387 1341.488647 1358.381104 1365.499756 1361.916992 1352.46936 1366.512695 1377.387573 1382.423462 1390.951416 1394.33252 1394.648071 1405.762817 1401.866943 1398.441895 1401.128296 1403.025024 1400.304443 1401.059692 1406.872192 1415.122314 1419.065796 1418.750732 1418.758423 1425.765991 1430.784058 1431.96814 1435.30896 1441.223633 1450.343628 1459.484375 1465.841919 1470.910889 1475.71936 1478.011475 1477.863525 1475.175903 1472.779297 1471.055054 1470.717773 1470.249634 1469.098633 1468.180298 1467.516235 1467.66333 1468.313477 1468.391968 1467.704224 1466.257568 1464.059937 1461.920898 1461.115356 1459.271973 1456.552246 1453.062134 1445.444824 1436.726196 1428.96814 1425.939697 1423.860107 1421.627441 1419.598022 1418.241455 1417.227783 1416.533447 1415.875122 1414.890503 1413.77478 1411.530029 1408.902344 1406.651978 1405.351562 1404.897949 1404.332275 1403.93811 1403.499512 1402.50061 1400.966797 1398.767944 1396.415771 1394.25 1392.935181 1392.320801 1392.302612 1391.811768 1390.949951 1388.904419 1386.0802 1383.333984 1380.080322 1378.26123 1377.648315 1377.205078 1377.187744 1376.88147 1376.634155 1376.279175 1375.794189 1374.603394 1372.144287 1367.778442 1365.127686 1364.915405 1364.506958 1364.05957 1363.954468 1364.03064 1363.571167 1362.629517 1362.545898 1362.64624 1362.601074 1361.53186 1359.204712 1354.050537 1353.829224 1354.073242 1354.34021 1353.456909 1351.643921 1350.578247 1349.024902 1348.786499 1348.740845 1348.022461 1346.855835 1345.837646 1345.328735 1344.991211 1344.119263 1343.579834 1342.6427 1339.996094 1338.364258 1338.680054 1341.376587 1343.390869 1345.71582 1346.80249 1345.950806 1343.824707 1340.960449 1340.16687 1345.28833 1349.961426 1349.969604 1346.32251 1341.614136 1336.596313 1341.991821 1345.841431 1346.310669 1342.630737 1341.373413 1338.008789 1328.522827 1331.071045 1334.893433 1334.532837 1332.735718 1328.581177 1325.345459 1325.81311 1330.06958 1334.527588 1337.542358 1337.239014 1331.273438 1334.311157 1339.456299 1341.010254 1336.775391 1334.421021 1337.109497 1341.215088 1344.638184 1345.260498 1336.672119 1325.893188 1315.074463 -1585.710205 1592.888062 1597.844482 1599.427856 1599.032837 1599.952026 1606.560791 1610.001221 1619.647949 1626.999756 1633.317505 1636.876953 1638.630737 1637.820312 1640.66626 1643.080688 1644.010254 1645.348511 1646.469849 1652.598022 1661.963989 1673.108276 1681.212646 1690.663086 1703.938354 1715.954468 1722.823242 1727.359619 1729.951782 1732.276245 1737.11084 1742.086548 1744.25354 1742.689087 1740.341553 1739.0448 1738.342896 1737.157715 1736.639893 1738.197388 1740.868652 1743.226562 1745.998779 1749.121338 1751.116577 1751.219849 1747.945312 1741.210205 1730.704346 1720.55896 1706.471558 1706.202148 1703.78772 1700.266724 1701.022095 1699.835083 1696.160278 1683.704834 1692.972168 1706.374023 1717.970215 1730.073364 1723.168945 1715.151123 1705.774658 1694.648193 1698.729492 1710.727295 1717.751221 1721.879272 1719.992188 1713.622437 1707.641602 1700.630127 1691.751465 1681.310913 1667.856812 1659.099365 1657.013672 1664.517456 1669.40332 1675.375122 1679.941772 1686.338379 1692.970459 1697.828491 1699.881348 1699.503906 1696.12854 1687.836426 1680.557495 1674.30835 1668.101318 1660.88855 1654.26001 1672.523682 1682.969727 1686.5802 1685.743896 1680.894775 1677.956299 1677.586914 1677.920166 1679.074707 1681.637817 1693.70105 1698.312134 1697.610718 1694.956177 1694.023804 1700.0979 1707.669556 1706.168091 1700.013672 1694.853394 1696.944702 1702.667603 1707.524902 1709.140625 1704.175415 1698.350952 1691.161011 1684.09375 1674.963989 1666.885376 1658.263916 1650.957886 1641.447754 1630.025391 1624.785522 1630.780273 1635.037476 1636.154053 1636.021851 1633.182739 1631.894653 1632.187744 1632.654541 1632.634521 1631.715332 1629.748779 1628.699585 1627.913696 1626.087646 1621.589966 1611.713379 1624.147095 1628.917847 1633.496338 1637.282959 1637.356323 1636.220337 1633.511841 1633.770996 1633.089844 1632.395264 1629.76416 1626.509521 1622.195679 1617.949707 1613.737793 1612.272705 1609.929932 1603.555054 1594.849976 1585.001953 1582.843506 1590.569458 1587.330933 1576.181152 1565.357788 1555.201904 1547.473633 1543.742432 1539.297852 1535.109009 1530.209106 1524.949463 1514.579956 1506.427368 1501.363403 1508.857056 1510.795776 1511.19165 1511.833374 1516.089722 1521.009155 1524.343872 1527.519653 1531.247803 1533.838623 1535.519897 1536.187988 1539.115845 1544.826416 1547.74939 1555.949341 1563.93811 1570.641602 1578.606079 1586.718262 1592.417969 1597.960083 1606.130249 1612.391724 1619.438599 1625.146729 1630.671875 1638.167114 1645.172119 1648.517212 1647.932861 1644.2677 1635.666504 1629.34668 1624.168579 1615.872559 1609.039551 1605.446655 1601.878784 1598.46228 1596.297974 1595.105713 1594.341797 1595.967163 1597.601196 1596.142334 1598.863525 1608.774658 1609.803101 1606.039551 1598.170898 1610.340332 1621.22937 1627.821167 1633.952393 1636.731934 1636.150269 1625.539551 1613.147095 1603.447754 1595.312012 1588.509399 1582.496704 1575.761719 1565.580933 1559.730225 1559.737305 1558.738892 1557.342896 1555.89563 1552.231323 1555.845459 1565.510742 1570.013306 1570.118774 1567.404907 1563.462524 1555.197266 1548.530396 1547.720947 1547.956299 1548.645264 1551.331177 1554.931885 1557.962036 1560.527466 1564.816528 1569.901611 1571.53125 1571.241699 1572.623169 1575.351807 1578.810547 1583.122192 1584.497559 1587.343018 1592.764526 1595.031006 1595.826294 1599.052124 1607.803955 1614.976318 1620.798096 1628.067017 1635.068726 1644.229004 1649.40686 1649.231323 1649.292847 1653.432617 1656.449097 1659.664307 1666.998047 1673.404785 1680.916504 1683.744751 1684.939087 1683.414917 1674.291992 1661.731079 1647.175781 1637.193481 1628.474731 1619.917725 1616.265991 1608.876709 1601.432617 1603.603271 1614.867188 1621.690552 1631.915161 1640.817993 1650.03125 1659.704346 1660.827271 1658.235596 1652.52002 1647.089844 1640.621826 1633.99353 1630.119385 1626.988892 1627.978149 1633.064819 1639.211914 1644.966309 1656.02417 1661.820435 1662.002686 1657.00293 1648.517578 1638.619385 1637.733032 1637.422119 1635.681396 1628.591431 1623.285278 1607.572632 1597.578735 1583.171753 1573.130249 1562.943481 1571.484253 1575.966675 1575.643311 1571.369019 1562.375732 1556.660889 1551.840942 1545.20166 1536.32373 1530.395508 1523.484985 1514.738525 1504.782959 1497.751343 1502.892578 1510.007446 1514.95166 1519.326904 1524.45874 1531.90625 1540.666016 1548.86731 1556.633545 1562.055298 1565.615601 1569.550049 1575.386963 1583.333496 1592.675781 1602.005249 1609.974854 1610.466064 1605.661621 1603.371948 1602.243774 1599.325439 1589.795288 1580.79834 1572.880737 1565.821655 1558.837891 1550.081055 1538.199219 1533.371704 1528.809448 1520.367065 1511.284546 1507.614258 1499.078491 1490.162964 1487.002197 1488.797974 1489.575562 1487.324219 1482.927612 1480.41333 1482.467407 1483.665161 1477.163574 1467.602173 1468.577515 1479.205811 1497.029663 1505.260498 1510.714233 1513.610474 1515.756958 1516.020386 1515.949951 1514.514404 1511.269653 1504.830078 1496.666382 1492.671265 1488.436279 1482.822266 1481.412354 1475.758057 1469.618042 1464.600342 1450.508057 1435.77832 1422.589355 1407.567627 1387.337891 1366.202759 1351.382812 1338.419189 1338.673706 1348.8479 1367.33313 1380.283325 1384.139771 1374.508667 1361.962769 1363.655029 1365.76416 1371.402588 1375.016968 1380.755127 1390.704346 1391.611572 1388.310181 1389.061157 1392.65918 1390.390259 1397.322388 1404.847168 1409.842407 1412.103271 1410.50293 1414.918213 1422.028076 1425.483643 1425.675781 1431.492798 1438.994019 1451.124146 1460.870483 1469.140991 1476.407593 1483.006958 1488.208984 1486.111694 1477.900024 1474.336426 1472.244995 1471.960327 1471.641113 1471.282227 1470.934326 1470.64856 1471.463867 1473.755737 1476.571899 1479.792847 1480.194214 1477.895752 1471.783325 1467.941895 1466.215576 1463.317749 1456.162476 1448.263306 1439.178467 1429.818481 1426.316162 1424.22937 1421.726807 1419.425659 1417.4021 1416.566162 1416.216797 1415.955566 1415.734863 1414.925293 1411.833374 1408.361694 1404.727173 1402.764893 1402.307495 1402.079102 1401.676514 1401.328247 1400.399536 1398.679565 1396.528076 1393.747314 1391.954834 1390.671143 1390.475342 1390.452637 1390.16626 1389.301147 1387.476929 1385.43335 1382.817993 1379.078125 1377.762573 1377.609863 1377.52124 1377.413818 1377.036255 1376.507935 1376.213379 1376.04834 1375.69397 1374.256348 1371.252441 1367.781372 1365.969727 1364.787842 1364.212646 1364.283447 1364.777466 1365.144165 1365.382324 1365.741333 1365.193848 1363.273193 1361.319824 1358.135986 1355.269775 1353.357178 1352.800903 1352.441162 1352.221436 1352.150024 1351.632446 1350.719604 1350.987671 1351.162598 1350.776489 1350.067993 1349.188843 1348.679932 1347.539551 1345.652588 1344.279663 1343.201172 1342.958496 1342.077759 1338.411621 1336.1427 1337.350098 1338.934692 1339.307983 1338.592407 1337.737061 1336.699463 1336.816772 1338.330078 1340.008423 1340.89209 1339.993164 1335.669312 1328.89563 1330.230957 1332.782349 1332.385376 1330.458618 1330.008423 1329.913452 1326.557129 1326.537109 1328.626587 1327.877441 1326.236816 1324.001587 1321.644165 1317.871704 1318.930908 1319.754272 1320.653809 1321.495972 1319.703979 1324.458618 1328.416504 1328.577881 1326.954834 1323.234375 1325.608643 1330.753662 1335.767334 1340.032715 1336.942871 1330.438477 1319.800659 -1571.456299 1573.528198 1578.635376 1593.359375 1603.260132 1611.438232 1618.772095 1624.415771 1630.440918 1638.70813 1644.969238 1648.447021 1649.356323 1650.062744 1652.11499 1654.071899 1653.374634 1654.210693 1656.864868 1658.393433 1665.800903 1672.73877 1681.093506 1689.216309 1697.930908 1706.226685 1715.692017 1719.635498 1724.872437 1729.876587 1735.694092 1741.917969 1745.642822 1746.614502 1744.229736 1742.366211 1741.054565 1741.317993 1740.987549 1742.746826 1745.045166 1748.453369 1752.40625 1755.452393 1756.463013 1754.786133 1748.55249 1739.533081 1729.913086 1720.299805 1718.687256 1719.538818 1712.594849 1708.507446 1709.791992 1708.064697 1702.898193 1693.682129 1694.550415 1710.917603 1720.994019 1733.23999 1721.747681 1711.183228 1704.315308 1701.191528 1706.079224 1714.456421 1721.239258 1720.383179 1714.59436 1707.699585 1701.440918 1694.130371 1686.904175 1674.645264 1666.574707 1661.918335 1665.36438 1672.640503 1678.11084 1681.661133 1684.016602 1689.238403 1695.031738 1699.635254 1701.961792 1701.157715 1697.000366 1690.67688 1682.943481 1676.550781 1670.357666 1662.974609 1657.264771 1670.399658 1683.486938 1690.29187 1691.606079 1685.046997 1681.98645 1682.128784 1682.087646 1682.067261 1684.758789 1696.670532 1702.139282 1705.756348 1705.019653 1703.723022 1704.018555 1706.321777 1704.587769 1698.074707 1694.080078 1692.318481 1698.809692 1703.30896 1704.216187 1698.384888 1693.420776 1683.475586 1674.959839 1666.904663 1658.601196 1651.83252 1644.397217 1632.254517 1627.312744 1632.132324 1637.750122 1642.117798 1645.751709 1646.663208 1643.976562 1640.662109 1640.73291 1641.803467 1642.376221 1640.70813 1635.521362 1632.921875 1632.813599 1631.229492 1628.033691 1621.356812 1624.052368 1631.174805 1635.635254 1638.5896 1638.8396 1639.155029 1638.762085 1638.800293 1638.62085 1638.334351 1637.375854 1635.830933 1632.247192 1625.720459 1623.004517 1621.666992 1618.690674 1613.334717 1605.342651 1593.014404 1588.458862 1598.601929 1591.281494 1577.702148 1569.047607 1559.606689 1551.501343 1546.442627 1542.063477 1537.64563 1531.797852 1526.049683 1516.379639 1506.909912 1504.637207 1513.425537 1513.952148 1513.788208 1513.712524 1516.231934 1520.89624 1523.640381 1526.203979 1530.900635 1535.117676 1537.900024 1540.819336 1543.206177 1545.986084 1547.552856 1547.379517 1554.060059 1563.240479 1573.540649 1584.526733 1589.790771 1593.723511 1599.947632 1610.102173 1614.408325 1617.926025 1620.385254 1628.03479 1638.713501 1644.477905 1644.865723 1641.032104 1635.196899 1625.721436 1619.260864 1609.176147 1606.545532 1602.845459 1598.866821 1596.615356 1596.480469 1596.70752 1597.55542 1598.686279 1601.312988 1598.633057 1603.263428 1612.580444 1613.207397 1610.631714 1606.33728 1610.587158 1621.567017 1628.519409 1635.124756 1635.284668 1629.774902 1623.714966 1610.253052 1600.220947 1592.356323 1584.677124 1578.901611 1571.875122 1559.710327 1561.965332 1563.547974 1564.360596 1564.604248 1563.564453 1559.279053 1559.964111 1568.309448 1574.526001 1574.497314 1571.027466 1566.984741 1562.197021 1551.900146 1548.375488 1548.493042 1549.167847 1551.434937 1552.596558 1556.598511 1560.78833 1569.370605 1575.514648 1578.839111 1584.445923 1588.539185 1588.015015 1586.009521 1586.315308 1588.133301 1589.137695 1592.64624 1595.258179 1598.634888 1608.5177 1623.429565 1629.521606 1634.363159 1642.490356 1647.964111 1655.755371 1658.255859 1655.12085 1654.667725 1656.837524 1660.171753 1663.703003 1667.421143 1672.553589 1682.942505 1686.026855 1686.185669 1684.331055 1671.967651 1659.723022 1646.677856 1634.088013 1623.188354 1611.790649 1607.279297 1603.208252 1599.139771 1601.337891 1610.599243 1619.200195 1628.940552 1637.510498 1646.24353 1655.776489 1658.567505 1656.105103 1652.352661 1648.807129 1643.875854 1639.352661 1633.48877 1631.293945 1633.786743 1643.26062 1653.182373 1659.454102 1662.884399 1662.42334 1660.812744 1654.352173 1649.590332 1648.240356 1639.261353 1633.698608 1626.812744 1620.308228 1612.586792 1602.582153 1591.264771 1573.707642 1565.794312 1558.676392 1562.968994 1570.98645 1573.466675 1570.53833 1563.976807 1558.576294 1553.985229 1548.897095 1538.972046 1532.040161 1525.030273 1517.482178 1508.206665 1499.426147 1497.948975 1504.567505 1509.643555 1513.657593 1517.959595 1523.208496 1529.249268 1535.893311 1541.173706 1547.584961 1553.475708 1559.554321 1564.847168 1570.638916 1577.427612 1583.322876 1591.972168 1596.843994 1602.200562 1604.178711 1604.037842 1603.77417 1601.19812 1591.83252 1581.474487 1572.64502 1565.036987 1557.133057 1549.305176 1541.560669 1534.673706 1527.712402 1522.949951 1518.282104 1510.473877 1500.235474 1486.01123 1480.320679 1474.198853 1473.58252 1470.878784 1466.31665 1471.688965 1475.060425 1473.135986 1467.169312 1462.270264 1468.635376 1485.025635 1498.012329 1502.905151 1506.433594 1513.182007 1516.420288 1516.658936 1516.48291 1515.107788 1512.110596 1505.585938 1503.737061 1502.096436 1500.701782 1493.439575 1485.494263 1475.532715 1465.141724 1448.255371 1434.978149 1423.200439 1402.994629 1382.03479 1359.80481 1343.268311 1337.426392 1339.601562 1356.477295 1374.856445 1391.489136 1398.43689 1389.569702 1379.41687 1379.298584 1380.77063 1380.766968 1377.268921 1375.314331 1377.736816 1379.541138 1378.62207 1380.118896 1380.462158 1385.458008 1393.200317 1399.00061 1402.733765 1402.915894 1402.622314 1413.834473 1417.907227 1420.083984 1423.607544 1428.877441 1438.978271 1452.116333 1461.521362 1471.493652 1481.787598 1489.627808 1490.887695 1489.275024 1481.137329 1475.253418 1473.89856 1473.850586 1473.858521 1473.956055 1473.80603 1473.98291 1476.55188 1485.449097 1489.519287 1486.786255 1482.429199 1478.303223 1474.456421 1469.509033 1466.811157 1462.565186 1453.855713 1445.908203 1437.048706 1429.954834 1425.835693 1423.886108 1421.654907 1418.812866 1415.594604 1414.904297 1414.743042 1414.724487 1415.099487 1414.870728 1411.679443 1408.435791 1404.501953 1402.63147 1401.919556 1401.014282 1401.031616 1400.393188 1399.425903 1397.897339 1395.21106 1391.755371 1389.711792 1389.595581 1389.503174 1389.40271 1389.101807 1388.423096 1387.270996 1385.880493 1384.219971 1382.791138 1382.55603 1382.625854 1382.320435 1381.858765 1381.518311 1380.473755 1378.964478 1379.286865 1379.244507 1379.214966 1378.414673 1376.198486 1373.827271 1372.505127 1371.087402 1370.855469 1370.989014 1371.043091 1370.237549 1369.260986 1367.900269 1366.059326 1363.081665 1359.141724 1355.205688 1354.887695 1355.92395 1356.491089 1357.056885 1357.217407 1354.099365 1353.890747 1354.093018 1354.159302 1353.638062 1353.250244 1352.891235 1352.529297 1351.324097 1347.216797 1345.044067 1345.493286 1345.576538 1344.297974 1342.144775 1338.711792 1335.296021 1335.169678 1334.97522 1334.147583 1333.703979 1332.888672 1332.219849 1332.601685 1332.682373 1331.197144 1330.447388 1330.210571 1327.997437 1326.171997 1325.708374 1324.878052 1324.122803 1323.347168 1321.511108 1320.785522 1320.696655 1318.227173 1319.25 1319.521484 1319.214478 1318.828369 1317.160034 1312.338623 1312.074097 1311.798462 1310.960449 1311.016846 1312.530518 1314.4021 1315.005249 1315.479126 1314.333008 1314.783813 1318.859619 1324.107056 1329.703735 1332.221558 1331.937134 1322.508423 -1559.775024 1574.921265 1589.934326 1610.829468 1618.833252 1626.951416 1632.175415 1636.460938 1643.527832 1649.888062 1653.688599 1656.227661 1658.855469 1661.283325 1664.473267 1665.802856 1664.901367 1664.814209 1666.850708 1672.651001 1679.569824 1686.503296 1691.603027 1698.262207 1707.528442 1711.754761 1718.051758 1721.904541 1727.293945 1730.918457 1732.544189 1742.077393 1746.029785 1748.915527 1748.230225 1746.095093 1744.201172 1743.751099 1745.078247 1747.985718 1751.107422 1755.038696 1757.708984 1759.051758 1759.002808 1757.24707 1749.639282 1741.702881 1735.109619 1732.261353 1732.916138 1729.637817 1721.475342 1716.865601 1718.25769 1717.405273 1712.428467 1700.362793 1696.481689 1713.106323 1721.474487 1723.111328 1717.415161 1707.988281 1707.30603 1708.798584 1710.17334 1716.234497 1720.079224 1715.824951 1708.996826 1702.928589 1696.442871 1688.034668 1680.357666 1669.913696 1667.067017 1666.911499 1670.616943 1680.651978 1686.724243 1690.906006 1692.970947 1693.366577 1696.722656 1702.546021 1704.786377 1704.262207 1700.442261 1694.543335 1684.769775 1677.997314 1672.002441 1665.980103 1661.498047 1672.75 1684.126709 1694.116333 1697.344238 1694.524048 1692.099487 1691.663696 1690.847534 1688.949951 1690.943359 1698.37915 1704.447998 1710.384888 1714.53772 1710.555786 1707.678589 1704.442871 1699.965332 1694.271851 1687.605591 1685.996948 1695.070679 1698.928101 1698.139526 1692.832153 1685.531128 1676.670044 1668.053833 1660.15625 1652.100342 1644.133667 1634.13501 1630.840088 1635.159302 1639.956177 1644.550659 1649.436768 1653.039429 1653.948486 1653.15564 1651.780029 1652.126099 1654.03772 1653.775269 1652.438477 1647.831177 1643.568848 1639.96875 1637.335327 1636.845703 1636.179077 1633.172119 1633.307251 1636.439209 1638.644165 1639.463867 1639.425781 1639.776123 1641.124023 1642.385498 1642.918701 1642.543823 1641.826416 1639.894409 1634.635376 1630.778809 1628.611328 1625.629761 1621.407959 1613.91687 1603.797852 1602.477295 1603.136597 1597.915649 1587.892334 1579.467041 1569.550781 1560.171387 1549.675903 1544.117188 1538.603516 1532.14917 1524.967285 1516.716431 1504.288208 1511.024658 1514.570679 1515.778198 1516.597656 1517.295044 1518.66394 1521.211426 1524.082153 1527.053833 1531.192139 1536.110474 1540.802979 1546.64917 1549.414917 1550.217407 1550.561279 1550.434082 1551.557495 1560.381104 1567.40918 1577.369507 1585.54248 1589.605591 1595.671875 1603.231934 1608.202759 1610.104126 1611.098877 1624.167847 1636.071289 1640.671509 1641.291626 1638.439819 1632.286743 1622.07605 1617.644775 1611.708984 1607.615112 1602.831665 1597.466064 1596.55249 1597.425659 1600.198364 1602.91333 1605.393066 1608.15332 1606.755859 1608.692749 1615.703369 1617.354126 1613.917114 1608.067261 1612.628296 1620.072998 1625.231445 1629.468628 1624.320435 1622.005859 1618.013306 1607.264282 1598.976196 1589.038574 1581.739258 1574.230103 1569.049561 1566.061646 1567.417603 1568.797852 1569.674805 1569.287354 1566.312866 1562.040649 1561.307007 1571.261108 1577.226074 1577.351074 1574.376587 1569.9729 1564.652588 1558.102051 1554.64856 1563.457397 1566.688843 1564.361938 1558.463989 1555.70752 1561.795898 1576.540894 1588.160889 1591.736206 1597.195679 1600.166626 1600.28186 1597.469971 1596.191406 1596.224731 1594.543945 1594.972534 1597.102295 1600.519165 1614.359009 1626.996582 1637.325317 1645.538696 1650.42981 1654.584106 1660.327393 1662.722412 1659.817993 1659.61145 1660.071655 1665.784302 1670.861938 1672.781372 1679.041016 1686.01709 1686.158081 1686.021362 1685.317017 1675.786011 1665.941528 1656.405762 1642.408813 1629.301514 1617.250122 1608.237915 1599.916992 1595.230347 1598.388184 1603.602539 1614.321655 1625.494873 1635.265991 1644.023071 1650.958496 1654.509399 1652.282837 1649.694214 1647.606079 1648.104492 1647.285645 1634.96875 1635.909546 1642.525635 1655.653076 1663.474365 1665.611572 1663.274658 1659.078125 1651.72522 1645.412476 1639.116455 1632.12146 1628.467651 1622.884033 1616.516235 1611.650391 1601.5979 1592.480103 1580.302979 1567.720459 1558.408691 1550.480957 1556.711914 1561.81665 1567.24231 1567.680298 1564.526733 1559.802246 1555.547852 1550.6427 1541.834839 1534.080811 1527.883667 1520.202515 1511.500244 1501.789917 1493.774414 1499.516479 1503.841431 1507.796875 1511.274658 1514.802246 1519.718506 1525.777466 1530.305298 1534.223999 1539.469482 1545.824951 1553.053223 1559.570312 1564.499023 1573.104492 1577.876465 1581.0354 1585.385254 1593.944702 1601.125122 1604.230103 1603.312866 1601.497192 1591.793579 1581.447021 1571.243042 1563.07605 1556.380371 1550.824463 1542.592041 1535.083984 1530.628052 1526.889282 1519.766602 1508.16748 1493.694702 1484.42395 1479.29541 1474.985474 1466.655518 1460.145508 1461.497925 1465.0448 1467.398315 1466.244019 1462.835205 1461.826416 1476.559204 1483.437866 1489.135986 1496.752441 1506.642456 1513.490479 1516.578003 1516.770874 1516.346802 1513.702393 1507.212524 1503.830688 1502.581055 1500.247559 1493.095825 1484.482666 1474.177246 1465.557251 1445.706299 1434.504639 1423.170898 1401.194824 1377.745483 1352.0448 1339.757446 1338.208374 1343.475342 1366.777222 1382.948608 1398.410767 1405.885132 1401.430542 1395.382568 1394.959717 1392.985962 1389.581543 1385.698242 1381.905029 1379.467651 1376.931396 1379.40625 1380.61438 1378.125732 1377.293457 1388.453491 1391.265503 1394.796021 1398.649902 1403.523193 1409.649536 1413.96582 1414.734985 1418.514648 1425.813232 1437.320923 1451.59314 1459.753784 1470.600464 1484.458862 1491.641357 1491.415649 1488.136719 1484.536499 1484.986206 1480.109863 1478.692993 1478.436157 1478.374146 1478.288086 1480.020386 1488.672241 1490.986572 1491.051758 1489.363403 1479.252441 1474.565308 1470.62793 1466.033325 1463.287842 1457.595093 1450.510254 1442.397339 1435.126465 1427.47644 1425.265259 1423.988159 1422.068604 1419.018311 1415.72229 1414.721802 1414.116455 1413.989502 1413.786255 1413.47998 1411.874878 1409.810547 1407.732666 1406.541992 1405.392334 1403.487305 1401.986084 1401.035156 1399.918945 1398.192749 1396.265137 1393.450684 1392.49939 1391.33728 1389.636108 1389.140991 1388.919189 1388.337036 1387.561157 1386.880615 1386.942993 1387.072632 1387.638916 1388.013672 1388.086304 1387.906494 1387.422729 1386.353027 1385.11145 1384.529907 1384.571655 1384.310547 1383.421387 1382.138428 1380.810181 1380.183594 1379.930542 1379.514038 1378.63208 1377.948608 1375.993042 1373.21106 1369.632812 1367.393921 1365.376099 1360.020386 1356.089478 1355.633789 1359.127563 1361.719604 1362.364136 1362.047607 1361.3927 1361.484009 1361.545532 1361.525635 1360.540283 1358.342285 1356.336182 1355.299072 1354.200806 1347.712524 1347.502563 1349.940918 1350.016235 1348.45813 1345.362427 1342.847534 1340.5354 1336.323486 1334.415161 1333.60498 1332.336548 1331.812134 1330.019775 1328.629883 1328.659302 1327.894165 1326.758057 1325.443237 1324.292358 1324.049683 1322.637329 1321.056274 1320.133911 1319.013306 1317.270142 1316.403076 1316.234253 1314.876953 1313.712769 1313.012451 1313.77771 1311.233032 1308.988525 1308.218994 1307.185547 1306.325195 1304.467041 1304.233032 1304.34082 1304.547607 1305.827271 1307.256836 1308.640137 1309.859985 1307.548828 1305.029175 1313.374634 1320.996948 1325.997925 1323.454834 -1566.281982 1580.209351 1597.019653 1614.839233 1622.827881 1630.416748 1639.222778 1647.951538 1654.185791 1659.235107 1663.724976 1670.700562 1673.660645 1677.738159 1679.605957 1678.36853 1677.271484 1677.118408 1679.662476 1686.189575 1694.198242 1703.668945 1710.085205 1715.756714 1722.710571 1725.154907 1725.177856 1729.613403 1734.477905 1737.182007 1740.77417 1744.697388 1749.735718 1752.894653 1754.125122 1752.774048 1751.020386 1752.144897 1755.297852 1756.425049 1757.30957 1759.379028 1760.967285 1761.95459 1761.432373 1758.372681 1752.770264 1745.431274 1745.155518 1744.069702 1740.945557 1736.442383 1728.609863 1721.089111 1723.641846 1723.590088 1722.382324 1711.526245 1705.662476 1714.356934 1720.904175 1722.031006 1718.548828 1718.527954 1716.51123 1715.505371 1714.677734 1715.065063 1713.915527 1710.171143 1704.261963 1698.386353 1691.045654 1681.475952 1675.204102 1671.853027 1670.942261 1671.334106 1680.856445 1689.137939 1695.729736 1699.353516 1700.364502 1700.855347 1703.766357 1706.681152 1708.298584 1707.790039 1703.44397 1695.525757 1684.038086 1678.870728 1673.53418 1669.269775 1668.325195 1677.123535 1685.011719 1695.072632 1698.935669 1701.532959 1703.314697 1703.291748 1700.820435 1697.95459 1697.343506 1701.367676 1705.928223 1712.557983 1721.088867 1719.768677 1711.134521 1705.412109 1699.448975 1692.360229 1683.925171 1679.878418 1685.189453 1691.497314 1691.484009 1686.741089 1679.371704 1670.578125 1660.495483 1653.485107 1645.93042 1636.061523 1633.539795 1638.14624 1642.322632 1646.86499 1652.893433 1658.546021 1660.669312 1661.49707 1661.412964 1660.853882 1661.457031 1662.462036 1662.322021 1661.571045 1659.714111 1654.136963 1647.90271 1644.143066 1644.091797 1641.747803 1638.21936 1637.338135 1636.880615 1636.991821 1638.514404 1638.798706 1639.601196 1641.358154 1645.075317 1646.658325 1647.675049 1647.480103 1647.539429 1644.949951 1639.255737 1634.810913 1630.812134 1625.714844 1619.528687 1612.627563 1610.576172 1608.231689 1604.01709 1600.161621 1589.684448 1575.26001 1565.831421 1554.296753 1545.541748 1538.455688 1531.001343 1522.571167 1513.789185 1505.417969 1513.003662 1515.539307 1517.509399 1519.458252 1520.722046 1521.157959 1521.983398 1523.551758 1526.279053 1530.634033 1536.634644 1542.450439 1549.357544 1552.764893 1554.827271 1555.687012 1556.372314 1558.600098 1564.009399 1572.665527 1576.861084 1581.487671 1584.353271 1592.779785 1599.337891 1601.791748 1601.293091 1609.298706 1620.199097 1631.680664 1637.20813 1638.995728 1637.096313 1632.078125 1626.425293 1621.046143 1615.37915 1610.819824 1604.517822 1597.884155 1597.415405 1599.112549 1605.206177 1609.326904 1611.823853 1615.318481 1613.182617 1612.520264 1621.161743 1622.789062 1620.756714 1613.243164 1613.769531 1616.259888 1619.146118 1617.590088 1613.866211 1608.625732 1606.858765 1603.405884 1600.112183 1588.437134 1580.062256 1573.828003 1570.233032 1572.998291 1572.437744 1575.279053 1576.974609 1575.143188 1571.514038 1565.78894 1565.870361 1574.453735 1581.102051 1582.435425 1577.915405 1572.787476 1566.946045 1560.857666 1562.080444 1572.249146 1576.133423 1573.405518 1565.382812 1558.425293 1560.481323 1577.697876 1590.345093 1600.781006 1604.999268 1606.634399 1607.560669 1608.326416 1606.003174 1602.910156 1599.525757 1597.504761 1600.722046 1603.541748 1611.101807 1619.31189 1632.300171 1643.557129 1650.046631 1655.728638 1660.826904 1667.872925 1668.156982 1667.148682 1666.870728 1671.156738 1675.481079 1679.268677 1684.314331 1685.682861 1684.367676 1680.559448 1679.28418 1673.250854 1666.338135 1659.084351 1648.488647 1637.418945 1629.306274 1614.140381 1600.036987 1589.349609 1592.607666 1601.42688 1610.834717 1619.731079 1631.342773 1641.832642 1648.849854 1650.879517 1648.603027 1646.853271 1644.234741 1648.980835 1649.798584 1644.489868 1643.959229 1649.675049 1662.332642 1670.171631 1668.922852 1662.189941 1654.541992 1644.986816 1639.664307 1631.930908 1624.715942 1619.039307 1612.297607 1605.149414 1594.562622 1587.143066 1580.766724 1572.054688 1564.271362 1552.937988 1546.999756 1552.099243 1557.446655 1562.534424 1564.791016 1564.202393 1560.977905 1556.601196 1551.864014 1544.986328 1537.095581 1530.847778 1523.210083 1514.746704 1503.917969 1493.806885 1494.456421 1498.62854 1502.653076 1505.522705 1508.46875 1512.284546 1517.062378 1521.251831 1524.188965 1528.005737 1532.610474 1537.702759 1544.797485 1550.682251 1555.178345 1561.664429 1569.983643 1573.394775 1575.450684 1578.97583 1586.769653 1593.790771 1596.354126 1594.861694 1588.052124 1578.159546 1569.303223 1561.134033 1555.595337 1549.500122 1541.706543 1535.271729 1531.106689 1526.377686 1513.782593 1501.353149 1488.129272 1482.713135 1477.224487 1468.766602 1460.850952 1453.279297 1453.119141 1460.213013 1461.850342 1457.57605 1456.620361 1465.629517 1467.440674 1476.775146 1486.751099 1498.043701 1505.582764 1512.296997 1514.647217 1514.223389 1506.110596 1498.927979 1494.518555 1489.634155 1486.335571 1481.979492 1474.623413 1468.146484 1459.725464 1444.745972 1432.475464 1417.654541 1399.157715 1372.556763 1343.436035 1339.541504 1339.082642 1351.521973 1374.430908 1391.057007 1409.061401 1413.17688 1408.457153 1407.604248 1407.077148 1406.604858 1401.322632 1395.38501 1390.291504 1385.726562 1385.810913 1392.937866 1394.835449 1390.72937 1383.793213 1385.323975 1388.039062 1391.271484 1396.4198 1402.436035 1405.87207 1409.459473 1414.627075 1419.243164 1427.548096 1436.046509 1447.993896 1456.495972 1464.971191 1477.134644 1485.300537 1483.253662 1481.736572 1482.661987 1487.561768 1490.270996 1489.370483 1488.427979 1487.972778 1487.4729 1485.936157 1488.669556 1488.700928 1487.302002 1482.78125 1474.019043 1469.403564 1465.541382 1461.758179 1457.675171 1452.421631 1447.88855 1441.543091 1435.478149 1428.261475 1426.461304 1425.619629 1423.489502 1420.686523 1418.57373 1416.796387 1414.584229 1413.781128 1413.527832 1413.240356 1412.764648 1411.779541 1411.254272 1411.192749 1410.644165 1409.123413 1407.199463 1405.404663 1402.638306 1399.971069 1397.928589 1397.152466 1396.868286 1396.007202 1393.808105 1390.555786 1389.723145 1389.642944 1388.13623 1390.413696 1392.252686 1393.292969 1394.281372 1395.097412 1395.034668 1394.530884 1393.851685 1392.532715 1390.736572 1390.32373 1390.394165 1389.793701 1388.816895 1387.279419 1386.21936 1385.059448 1383.373291 1381.787231 1380.804321 1380.310547 1379.293335 1375.111816 1370.504639 1367.995239 1365.065063 1360.584839 1357.220459 1356.954834 1364.46936 1367.263916 1368.183594 1368.613892 1369.246704 1369.907471 1370.153442 1369.152222 1367.656616 1364.965332 1359.621094 1356.193237 1352.298706 1349.315063 1354.028809 1355.489502 1354.475952 1352.941772 1350.42041 1347.277832 1344.598267 1341.94043 1339.285767 1338.166992 1338.23645 1339.405029 1338.268799 1332.749512 1328.30249 1329.035889 1329.65332 1328.527466 1327.852417 1327.204346 1329.974731 1330.574707 1328.07373 1327.93811 1324.636963 1322.80127 1321.749756 1319.059814 1317.348877 1315.342773 1313.27063 1314.130859 1314.662598 1314.260986 1313.441162 1311.758545 1309.821167 1307.150146 1304.342041 1303.888672 1302.607422 1301.695801 1302.811279 1305.349243 1304.472046 1300.739014 1300.878906 1301.951782 1309.90979 1320.058472 -1557.504883 1576.61145 1592.633179 1608.523315 1619.665161 1626.343628 1636.704712 1647.676636 1656.812256 1662.640015 1670.162109 1674.511475 1682.875366 1691.14856 1694.797241 1694.030029 1691.293823 1694.198853 1701.453369 1709.00769 1713.032227 1716.969604 1722.334106 1730.811279 1734.685425 1734.32019 1732.57373 1734.296875 1740.297607 1745.172241 1748.285278 1754.908203 1756.184692 1757.334473 1758.085327 1757.897949 1756.956421 1758.290283 1759.831543 1761.172974 1762.40625 1763.648315 1764.698853 1765.11853 1764.813721 1763.073608 1756.706421 1753.343994 1751.922485 1750.071899 1746.52063 1741.225342 1733.602539 1728.872681 1728.30127 1728.523071 1726.228149 1719.776611 1709.970459 1720.587402 1726.415894 1728.44458 1726.766846 1724.820557 1722.713989 1720.296753 1718.049683 1716.144653 1712.232788 1707.712036 1701.44104 1694.181885 1687.192993 1680.805786 1681.953125 1681.66748 1676.51416 1674.761475 1688.220459 1698.363892 1703.114014 1706.092529 1707.394897 1708.470947 1710.169922 1711.851074 1712.475464 1711.297974 1705.771606 1693.890869 1685.317627 1679.809082 1675.603271 1671.373169 1673.788208 1680.497681 1687.112671 1694.220581 1700.890747 1706.317627 1709.441162 1710.167603 1707.713623 1704.595947 1702.011963 1702.237305 1705.060669 1709.700073 1714.068481 1711.512329 1706.517456 1701.301025 1697.15918 1690.272827 1682.612671 1674.343628 1672.130371 1677.788696 1679.388184 1677.463013 1672.359375 1662.526001 1653.865234 1647.552368 1642.246826 1638.470703 1641.337524 1645.505005 1650.347168 1656.449219 1661.912842 1666.027954 1668.839722 1669.967651 1669.480713 1668.465942 1667.838867 1667.622314 1667.862549 1667.861938 1667.098145 1662.972168 1656.99231 1653.494385 1650.682495 1647.137085 1643.980591 1641.17395 1637.35022 1626.410767 1632.931885 1634.621094 1635.286133 1637.731079 1642.546753 1647.342773 1650.188232 1655.587646 1656.987549 1653.317749 1648.594482 1641.789795 1634.879272 1629.169556 1624.649292 1621.436035 1616.855469 1612.414429 1607.928223 1603.231934 1595.890381 1580.885254 1568.688477 1556.874512 1545.701416 1536.836304 1527.959717 1518.999756 1508.021851 1509.135376 1513.939697 1516.76062 1519.611694 1522.276733 1524.035156 1524.490845 1523.691895 1523.38147 1524.357178 1528.480225 1534.953613 1541.618408 1548.566406 1556.058594 1560.564209 1561.562256 1562.497192 1564.459473 1570.591797 1572.311279 1575.621338 1577.703979 1582.946167 1587.208374 1589.547729 1590.81311 1595.493896 1604.33252 1613.192627 1623.90564 1632.375977 1638.362183 1639.154053 1636.856567 1631.484619 1625.107544 1619.286987 1613.969727 1607.875 1597.124023 1601.326416 1604.621094 1608.016968 1614.71582 1620.98999 1624.601196 1624.280884 1624.96228 1626.263062 1625.524414 1623.335815 1617.758911 1610.584229 1609.584595 1609.628784 1605.127197 1599.143799 1594.566162 1597.195557 1597.724121 1594.021362 1585.987061 1576.49707 1571.370728 1576.249268 1584.973755 1587.240967 1587.828735 1586.811401 1583.288818 1574.938843 1570.291992 1571.577026 1577.778076 1585.677979 1586.690674 1579.98291 1573.753296 1568.131592 1564.166626 1567.601685 1573.970825 1579.196167 1578.31311 1573.369995 1563.48877 1559.752808 1576.752686 1587.479248 1603.338135 1611.42395 1616.69812 1620.264893 1618.895142 1614.221313 1609.538086 1605.614868 1602.826538 1603.876587 1608.527222 1611.178589 1617.964844 1626.12915 1638.259155 1647.825928 1655.201904 1662.711792 1671.062988 1673.020264 1672.966309 1672.4104 1675.682617 1680.279419 1683.040039 1684.908813 1683.371094 1678.761719 1671.019043 1668.725342 1663.671997 1657.10022 1650.390015 1643.311401 1637.60144 1632.78125 1618.834106 1600.075073 1588.280273 1590.016968 1597.963013 1605.238037 1616.001221 1627.207153 1638.793457 1647.830933 1648.429565 1641.352539 1636.467896 1636.255859 1649.082764 1648.935791 1645.736694 1648.924438 1655.519897 1664.105103 1671.448486 1666.558228 1660.553101 1654.318359 1647.288574 1642.221436 1636.625366 1631.086914 1623.858643 1611.647217 1598.935669 1586.514648 1578.870605 1572.192261 1565.959351 1559.335938 1549.491699 1545.740845 1548.561523 1553.770264 1558.77124 1562.977661 1563.771973 1562.022827 1557.799683 1553.013306 1547.332397 1540.947144 1534.634277 1526.159912 1517.974121 1508.312378 1496.430664 1490.346313 1491.572021 1496.662476 1500.83252 1502.943237 1505.400635 1507.99231 1510.629517 1513.098145 1517.190918 1522.783813 1526.739624 1531.043945 1536.008789 1541.56543 1546.672363 1551.062988 1555.88855 1560.564453 1564.062134 1566.605835 1569.411621 1575.839478 1582.005249 1584.421509 1582.167969 1575.458374 1567.287964 1560.05542 1554.75647 1548.388306 1539.814453 1533.920288 1528.246216 1518.953369 1506.095215 1494.062866 1486.516357 1481.889404 1474.741699 1464.950317 1455.716553 1449.160645 1448.759644 1449.311523 1449.245239 1448.057739 1450.926147 1458.197388 1468.363525 1476.026489 1484.08374 1494.125244 1501.866577 1503.783081 1498.945923 1492.819214 1487.096191 1482.690186 1478.445435 1473.68103 1469.36499 1465.348022 1459.443115 1450.408936 1436.02417 1421.86792 1411.040283 1390.703491 1368.687622 1347.361938 1339.427002 1339.753174 1352.029785 1377.255615 1397.651611 1418.900146 1414.119629 1410.686279 1411.633667 1414.554077 1415.233032 1407.646362 1400.779907 1394.918579 1391.473755 1388.681274 1397.247314 1402.919922 1396.993774 1390.3396 1387.037598 1387.518433 1390.048828 1392.838745 1397.32666 1400.700806 1405.506226 1414.947876 1420.343506 1427.173218 1434.458374 1443.098633 1451.516602 1457.627197 1465.00061 1469.192505 1470.501099 1472.573608 1475.599609 1479.296021 1486.272705 1489.744995 1490.869751 1490.710205 1490.324585 1485.827393 1481.415894 1480.668213 1480.814941 1476.404663 1469.062012 1463.494019 1459.894653 1456.69812 1452.96814 1449.357422 1446.224731 1442.234985 1438.07251 1432.542358 1429.142578 1427.307617 1424.724365 1423.347778 1422.74707 1419.395874 1415.003174 1414.279541 1413.810791 1414.38916 1414.629883 1414.5896 1414.873291 1415.467651 1415.671997 1415.020996 1414.156982 1412.636597 1405.34375 1401.251099 1400.718994 1401.695435 1401.998047 1402.387573 1401.413208 1397.92688 1396.986206 1393.691162 1393.014771 1397.922607 1400.673462 1402.260986 1403.524048 1404.161499 1403.455933 1402.057373 1400.7229 1399.666016 1398.656006 1397.694336 1396.838501 1395.353149 1393.672607 1391.702148 1391.096436 1388.934448 1384.945435 1382.205566 1381.012573 1379.654175 1377.155151 1372.518433 1368.466431 1365.997681 1363.709961 1360.420044 1357.857178 1360.015991 1368.851562 1374.259766 1376.931641 1378.26123 1378.90918 1379.184692 1378.935913 1373.651367 1369.388184 1365.335693 1358.774658 1353.563965 1351.355225 1356.927368 1360.105957 1360.95459 1359.789062 1357.191284 1354.651733 1351.578491 1348.331421 1345.314697 1343.213989 1343.32666 1344.189575 1345.919189 1345.868042 1343.895386 1341.650879 1342.270874 1338.99231 1338.810303 1339.24707 1338.073486 1339.121338 1338.439941 1337.800903 1335.388672 1333.806641 1332.763672 1331.759277 1330.085693 1327.007202 1323.399292 1321.932861 1323.927734 1325.262573 1325.256104 1323.892944 1321.333618 1317.100098 1312.714111 1310.833374 1311.392944 1309.524902 1306.466431 1308.476685 1307.41394 1302.685913 1301.561768 1299.699463 1298.02002 1300.188843 1303.183105 -1546.962158 1560.006836 1578.337891 1594.345581 1605.62561 1613.224121 1620.852051 1631.998291 1641.514893 1646.247314 1650.061768 1659.545898 1677.259644 1692.49585 1700.021606 1700.000122 1699.429321 1707.934814 1713.470703 1718.251709 1723.741089 1732.028198 1734.70813 1739.08252 1739.488647 1737.86731 1736.059448 1737.798584 1743.479004 1746.82959 1749.907104 1756.42041 1758.908569 1759.607178 1759.417603 1756.825562 1758.143433 1759.879395 1761.298218 1763.932373 1766.582397 1768.181274 1768.385986 1768.505737 1768.401367 1768.804932 1768.573975 1762.506836 1758.749756 1755.191772 1750.894287 1745.956787 1737.85144 1730.610596 1732.954712 1733.692627 1731.722778 1722.898193 1721.350342 1728.379883 1733.187622 1734.360107 1734.715576 1730.631104 1727.905273 1724.758667 1721.299683 1717.445557 1711.956787 1706.427856 1699.861572 1694.951416 1688.834595 1692.814453 1693.900391 1690.822998 1683.598633 1678.428833 1694.882935 1706.207764 1711.168823 1712.767822 1713.241699 1714.002319 1715.497559 1717.980347 1717.5979 1711.897583 1705.656738 1695.401978 1686.781616 1680.700073 1676.039429 1673.063599 1679.028442 1685.784058 1692.606812 1695.203125 1701.835083 1707.74939 1712.320068 1713.6521 1711.376465 1707.852295 1704.690063 1700.981567 1699.161499 1701.422607 1702.691895 1701.810303 1699.028442 1695.598633 1687.154175 1682.082886 1677.438232 1671.864868 1666.523071 1666.918579 1667.954224 1667.143921 1662.593994 1655.180176 1647.982666 1644.062012 1642.626465 1645.580811 1650.489868 1656.328613 1661.492065 1666.233521 1670.78479 1673.744263 1676.389771 1677.537231 1677.272217 1676.270874 1675.204834 1674.687012 1675.373169 1675.963623 1676.121826 1673.395386 1667.696655 1661.601929 1656.109497 1651.658936 1646.991821 1643.386841 1639.115723 1619.90564 1623.471069 1626.928955 1628.063721 1631.500366 1636.438477 1641.026367 1646.927734 1655.184448 1661.294434 1659.836426 1651.33606 1639.631226 1632.867554 1629.675171 1626.427612 1624.173218 1619.500977 1614.288696 1609.563843 1603.960205 1595.960327 1580.225098 1568.214355 1555.69104 1543.145142 1532.799561 1522.700073 1513.674438 1506.67395 1510.65686 1515.037476 1518.291626 1521.688965 1524.552979 1527.129395 1528.532959 1527.390869 1525.142212 1523.450562 1524.249878 1530.952271 1538.382812 1545.896484 1554.79126 1563.425049 1567.046753 1573.486206 1577.096802 1574.384155 1572.721436 1571.735474 1574.142334 1578.425537 1581.561279 1582.170288 1585.670532 1594.630005 1601.66394 1608.182495 1617.742798 1628.89978 1637.963013 1642.035522 1644.804688 1634.968628 1627.495728 1620.754517 1614.667358 1609.145874 1605.412354 1611.656006 1609.208252 1609.476685 1619.333252 1629.011353 1636.149902 1635.457764 1633.17395 1630.375854 1626.845459 1623.217163 1617.346313 1610.472168 1605.61145 1601.338867 1596.572021 1588.403687 1583.108032 1582.999878 1582.811279 1582.144043 1574.43457 1571.305664 1573.674561 1589.206787 1591.951416 1592.413818 1591.996094 1590.387817 1587.827026 1577.909058 1570.904419 1573.05188 1582.943237 1587.797363 1587.276733 1580.47522 1573.03894 1570.733032 1573.547241 1575.317993 1580.153564 1584.103516 1584.572021 1580.425171 1570.500122 1562.265625 1575.520386 1586.172607 1603.430786 1617.511719 1629.109009 1637.167236 1628.466797 1621.435059 1616.324219 1611.173096 1607.903687 1606.808594 1610.570923 1618.51001 1622.403564 1626.445068 1635.629761 1646.355591 1652.751099 1657.52356 1666.811646 1672.771362 1676.06604 1678.961426 1681.595459 1684.330078 1685.642212 1685.524292 1680.205811 1672.185181 1664.221558 1660.940186 1653.322998 1645.996582 1640.592773 1634.011475 1627.181885 1623.890503 1612.612305 1596.935181 1586.121216 1588.349121 1594.565674 1603.956299 1615.371216 1627.317749 1637.282104 1644.786499 1640.352539 1630.710571 1629.293335 1634.120361 1647.711182 1647.357178 1647.212524 1650.455811 1655.258789 1658.281738 1659.365234 1657.799927 1654.572998 1649.584839 1648.651855 1645.13147 1638.471802 1633.542358 1626.342041 1616.089233 1602.827515 1589.185059 1575.034424 1561.403442 1557.866089 1551.063965 1544.687378 1540.690063 1543.473145 1549.062988 1555.449585 1561.683472 1563.771729 1562.905396 1559.261597 1554.654541 1549.226929 1543.724976 1538.529785 1529.997192 1521.318604 1512.759521 1501.784302 1490.825684 1486.313721 1486.782959 1490.815918 1495.355835 1497.974854 1499.057007 1501.109741 1503.988892 1507.245728 1510.922119 1515.375854 1519.343262 1523.943359 1527.640015 1532.835693 1537.790161 1541.683716 1545.095703 1547.876953 1552.325439 1556.647461 1561.135254 1565.228882 1569.685547 1574.04834 1577.149048 1573.854126 1565.816162 1560.428345 1553.426147 1545.421387 1536.432861 1529.979736 1524.017944 1513.099976 1504.822021 1497.167725 1489.518799 1481.502075 1471.205322 1461.328979 1451.768066 1446.505005 1440.083496 1437.205811 1440.643433 1445.557617 1450.993774 1458.728882 1464.390137 1472.112061 1484.290771 1492.890869 1493.839966 1489.619751 1483.60022 1476.988159 1471.256104 1466.661377 1461.717896 1458.124878 1453.951538 1446.612305 1436.344238 1420.79834 1415.566406 1404.596191 1383.231445 1366.818481 1347.732056 1339.532593 1339.9552 1347.727539 1373.424561 1399.90686 1417.702026 1410.557373 1405.772705 1409.910034 1415.753418 1413.966187 1406.687378 1401.265259 1398.263428 1393.276123 1393.376831 1399.108032 1403.976196 1402.731445 1395.213013 1389.452271 1387.459717 1387.744507 1388.587524 1392.230713 1397.152344 1403.616821 1412.123047 1418.117676 1423.801392 1429.67041 1436.534424 1442.391113 1447.325928 1450.549194 1457.715576 1459.60498 1463.050171 1467.388306 1471.773682 1479.492676 1482.937378 1486.708618 1487.207153 1484.441895 1478.75769 1473.459595 1472.286987 1474.845093 1469.049438 1462.608521 1457.357666 1452.910522 1451.320557 1449.178345 1446.880493 1444.485718 1441.929199 1438.74939 1434.918091 1431.678833 1428.993286 1426.728516 1427.224121 1427.43042 1424.573364 1419.471558 1417.025391 1414.467285 1416.002319 1416.926392 1416.950684 1417.016724 1417.820435 1417.901001 1417.504395 1417.067139 1416.236938 1410.790894 1403.571533 1406.758667 1408.981201 1410.08313 1410.386841 1408.617188 1404.348267 1405.261963 1402.965576 1400.840698 1405.174561 1406.849854 1408.408447 1410.140137 1411.240356 1410.912476 1409.691772 1407.763672 1406.256592 1405.107178 1404.351318 1402.939087 1400.774902 1397.036133 1394.130371 1392.482544 1388.279907 1383.756348 1380.800659 1378.864502 1376.633179 1373.383423 1367.931519 1365.046509 1363.812256 1361.31189 1358.621094 1361.920166 1365.486694 1374.429199 1380.542603 1381.894897 1381.16272 1378.680176 1378.114624 1376.973511 1368.489746 1365.430298 1362.044189 1355.286865 1352.464478 1358.033569 1364.726807 1367.065552 1367.124756 1365.571777 1361.848511 1357.458252 1354.022217 1350.727295 1348.934937 1348.7677 1350.379395 1351.773926 1352.204956 1352.56311 1351.200317 1351.569702 1350.553101 1347.847046 1348.072876 1348.194458 1347.752441 1346.830322 1346.269165 1345.645508 1342.174194 1342.440918 1341.506226 1341.672852 1342.045288 1340.69751 1336.155518 1333.603516 1335.9104 1336.478882 1336.220093 1334.428711 1332.129883 1323.772461 1315.718994 1317.567993 1323.494751 1320.085327 1321.446411 1322.650024 1321.474731 1321.471313 1319.922729 1315.373901 1308.89978 1296.688965 1297.30188 -1534.364258 1543.753296 1555.759644 1572.172974 1581.661133 1591.925049 1609.588501 1618.741089 1621.572388 1621.511353 1632.199219 1652.114014 1664.11499 1674.59021 1681.293945 1687.048218 1692.577759 1699.594238 1711.044434 1721.876221 1731.817993 1739.80542 1745.107544 1747.035767 1744.044556 1738.97876 1734.437134 1733.140869 1735.323364 1738.911255 1738.985107 1741.221436 1749.846924 1755.568359 1749.783081 1743.973511 1750.957397 1758.824707 1760.014771 1762.837524 1768.639038 1770.546875 1770.70874 1770.287842 1769.827759 1769.950195 1771.070557 1769.846436 1765.432983 1760.325684 1754.816895 1749.394653 1743.685913 1737.44397 1738.122803 1738.627197 1735.6521 1730.520508 1728.77417 1734.782715 1739.386963 1742.159912 1741.293701 1736.518799 1733.506104 1730.133179 1723.421997 1717.997681 1712.306396 1706.732544 1699.003662 1694.803101 1700.561279 1703.234619 1701.623657 1697.783447 1687.746216 1682.664429 1700.594604 1712.890625 1720.541504 1719.647583 1718.396118 1718.633911 1720.401611 1722.482056 1718.874268 1709.983154 1702.494629 1694.524414 1686.379028 1680.789673 1676.799072 1677.181641 1685.180786 1694.583984 1698.955566 1701.017334 1704.414307 1709.38269 1715.989746 1718.955688 1716.354614 1710.03833 1704.674683 1698.980591 1694.503906 1693.435913 1693.364136 1693.0354 1689.854858 1684.251831 1678.141602 1672.101807 1669.266479 1665.106323 1659.763184 1659.704712 1659.871704 1658.297119 1654.44519 1647.216187 1643.818237 1643.025513 1648.34021 1654.781616 1660.947632 1666.698242 1670.993652 1675.001587 1678.110229 1681.183228 1684.293457 1685.48645 1685.460693 1685.064453 1684.952026 1685.511841 1686.833862 1687.841309 1687.859253 1684.5271 1675.853882 1668.559692 1662.475952 1657.881958 1652.139526 1646.06958 1640.584106 1618.860962 1615.547119 1618.997192 1619.303223 1623.953979 1628.166748 1632.063477 1638.62207 1647.259277 1657.886353 1661.86438 1643.236328 1632.129395 1628.738281 1626.662964 1624.701172 1622.186768 1617.46106 1613.198853 1607.73645 1599.442749 1588.49292 1575.21875 1565.386841 1550.949707 1537.290771 1526.851074 1517.588989 1510.267944 1506.327881 1512.380371 1515.996338 1519.040771 1522.405762 1525.770752 1530.763916 1534.067627 1534.09729 1532.052734 1529.241577 1525.735474 1527.895264 1534.436157 1540.093994 1549.011963 1559.900757 1564.755249 1570.273071 1573.982178 1575.22229 1573.417114 1569.17627 1572.737183 1575.811401 1577.587402 1580.449097 1584.79248 1592.145752 1599.611938 1605.659912 1613.448242 1626.200317 1636.296387 1642.384888 1647.981323 1639.483276 1629.554321 1622.297485 1615.402588 1609.4021 1611.218384 1620.731445 1617.122314 1610.181274 1621.721436 1633.690674 1638.170532 1638.901489 1637.609131 1632.487305 1627.178345 1622.045532 1617.493408 1612.605103 1605.351929 1596.660889 1594.801758 1592.391113 1594.829956 1595.109863 1588.91333 1584.660278 1575.57666 1577.536133 1586.106079 1594.866577 1599.557739 1595.854248 1595.769775 1593.416504 1588.100708 1579.189209 1571.653442 1577.207031 1587.224731 1588.259644 1586.944214 1578.880859 1572.239014 1572.303101 1577.536255 1582.718506 1587.63269 1589.969116 1590.504028 1587.731812 1576.436768 1566.701416 1574.858398 1585.278442 1602.311279 1620.96167 1632.577393 1637.841675 1636.840454 1629.964722 1622.940796 1616.804199 1611.980225 1608.150024 1611.991333 1626.306763 1635.855225 1637.929688 1635.198853 1643.121582 1649.800537 1656.130127 1657.568726 1668.360474 1675.466797 1683.166992 1685.114624 1686.04541 1686.128906 1686.022583 1680.12439 1669.023804 1660.539795 1651.481934 1643.612183 1637.931519 1631.59729 1623.234253 1612.749268 1610.319702 1604.399048 1593.292236 1584.806152 1587.269287 1591.801636 1601.687988 1613.945679 1625.985474 1636.35791 1638.291748 1632.3302 1623.441895 1624.578491 1634.140747 1641.386841 1643.56958 1644.25647 1647.683105 1650.053711 1652.273926 1651.495239 1650.847534 1647.002441 1643.215332 1642.31311 1638.470215 1636.197998 1630.808716 1624.878052 1614.926514 1603.478027 1587.195923 1573.391357 1560.126099 1549.333008 1543.568604 1537.633545 1535.036743 1536.314087 1544.651611 1551.285522 1558.266846 1563.073853 1563.603516 1561.183594 1556.944946 1551.323486 1545.942871 1540.950928 1534.623047 1525.529175 1516.593384 1507.096191 1497.961304 1487.510254 1482.889282 1483.911621 1486.234619 1488.55249 1489.836792 1492.457275 1495.613281 1499.560425 1502.835083 1505.37793 1507.494263 1510.418579 1515.934937 1519.843262 1523.122314 1527.15686 1531.234741 1534.696411 1535.578735 1538.919189 1544.785278 1549.294189 1553.132202 1556.366699 1559.026123 1563.010132 1564.820068 1562.942383 1556.166016 1549.741211 1537.137207 1529.946167 1524.730957 1518.643188 1515.880371 1514.507446 1504.597046 1491.970093 1479.104614 1467.328369 1456.684204 1448.58606 1443.048218 1437.846436 1435.467163 1440.40625 1443.649292 1448.791382 1454.790527 1465.952271 1478.609253 1487.956787 1487.612671 1480.820801 1475.991943 1467.656006 1459.466431 1452.326904 1449.452271 1445.352661 1439.430664 1432.556641 1423.637695 1411.619751 1405.710938 1395.069458 1377.757812 1364.127563 1347.748413 1340.644897 1340.281616 1342.511475 1362.370728 1385.155151 1405.616211 1402.606567 1398.739258 1404.31543 1409.20459 1410.194824 1406.900269 1404.165039 1402.018921 1400.032715 1399.888916 1402.553955 1404.107544 1404.569092 1399.661133 1392.957886 1387.743286 1387.453247 1388.128296 1389.27063 1393.053711 1398.915649 1405.028076 1413.622437 1418.749268 1424.37146 1429.293091 1433.156982 1436.224365 1441.682983 1448.165649 1449.611328 1452.072998 1457.28418 1463.094971 1470.541748 1473.368164 1475.798828 1476.868286 1475.351318 1471.166016 1464.685303 1462.09082 1463.921753 1460.87207 1456.496338 1451.736816 1448.213501 1446.939453 1445.365601 1443.851562 1442.555786 1441.320801 1439.174683 1436.484253 1433.255737 1430.617798 1428.621338 1428.385254 1428.251831 1427.19397 1423.464355 1419.953491 1418.054932 1418.565674 1419.1604 1419.297852 1419.444092 1419.926025 1419.92041 1419.383301 1418.372314 1416.561768 1412.640503 1411.328735 1414.720703 1416.692993 1417.150757 1417.267944 1414.981201 1412.342651 1412.5896 1409.118164 1405.63562 1408.71167 1411.442139 1413.500122 1415.836182 1416.910156 1416.977539 1416.471436 1414.178101 1411.083252 1407.77124 1405.887451 1404.638428 1401.84375 1396.932617 1392.984619 1388.218628 1382.953979 1378.871582 1377.322388 1375.601929 1373.196411 1370.365845 1367.490112 1364.091675 1361.626465 1360.791382 1368.594238 1374.747559 1376.029785 1377.158447 1383.090576 1384.915161 1382.661011 1379.070923 1376.860352 1373.952026 1367.931763 1364.917236 1359.613525 1354.22522 1358.74292 1367.287109 1371.992188 1373.560913 1371.679688 1368.834961 1365.157471 1359.171631 1354.514038 1351.974609 1351.493896 1352.214722 1355.139526 1359.098145 1359.858765 1359.970093 1358.615112 1359.046143 1358.164429 1353.929688 1356.729126 1356.092407 1356.513428 1352.972534 1353.252075 1354.328369 1352.203613 1352.783325 1352.113892 1351.676514 1352.226562 1352.5448 1349.799927 1347.174927 1346.624634 1345.758179 1344.505737 1341.850464 1333.665527 1319.41394 1317.438477 1328.312256 1334.903198 1334.143799 1333.167847 1333.328613 1332.390137 1332.229736 1330.947876 1324.189941 1314.067993 1307.265503 1301.97644 -1530.899536 1530.991211 1532.735596 1540.281128 1557.615845 1575.352905 1591.841919 1597.960449 1602.081665 1612.059082 1629.708984 1645.275146 1653.812256 1661.261841 1665.553833 1666.485474 1673.933838 1696.252686 1709.104004 1720.605713 1734.765503 1748.700439 1765.373901 1751.947876 1742.877319 1731.923218 1723.713623 1718.283447 1724.353638 1725.629395 1723.540649 1723.19397 1734.397095 1739.260132 1735.453857 1731.338135 1740.351196 1747.941772 1749.965942 1755.399658 1761.466431 1764.753174 1763.487427 1762.301514 1762.167114 1763.504272 1766.96167 1771.212646 1770.057861 1766.294922 1758.264893 1752.173584 1745.416504 1741.820312 1744.810791 1744.85083 1740.389648 1732.43457 1732.36438 1739.619141 1745.503784 1747.757568 1747.004517 1744.272827 1738.55249 1730.943481 1724.191284 1717.941162 1712.585205 1707.529785 1703.481689 1706.79541 1714.423828 1716.123901 1707.528687 1699.930054 1690.75 1688.403931 1704.832153 1721.066162 1728.671265 1730.104614 1728.936401 1728.640747 1729.675781 1725.578857 1718.098999 1708.914429 1700.071167 1692.711426 1685.779663 1680.883667 1677.765625 1682.850708 1691.622681 1699.482056 1705.815552 1707.131226 1707.219116 1712.653931 1719.120117 1721.221924 1720.439819 1714.623657 1708.764526 1703.94165 1698.241699 1694.1875 1688.889771 1682.409668 1680.204834 1676.7948 1672.423828 1668.494751 1667.391357 1660.684937 1657.529053 1657.073486 1656.737793 1654.469116 1647.266479 1644.692993 1645.21875 1653.910889 1661.603638 1666.221069 1671.885132 1675.896118 1679.494629 1683.307861 1685.18457 1687.759888 1691.179443 1695.52771 1695.647095 1693.62561 1694.072632 1695.911133 1699.410156 1701.051758 1699.834961 1694.666748 1682.853149 1676.21228 1671.27002 1665.385742 1657.416992 1649.346313 1640.18396 1615.878784 1608.858521 1611.257568 1612.78125 1616.082764 1618.37085 1622.148315 1631.349487 1639.898804 1647.499268 1645.633667 1633.856689 1627.482056 1623.517456 1620.962524 1618.529053 1615.103882 1611.620361 1607.02002 1599.135254 1589.972412 1578.254639 1567.655396 1557.811646 1541.299316 1529.938965 1520.761963 1512.006714 1509.303711 1507.13501 1513.522339 1516.461548 1519.564697 1522.575195 1527.200439 1535.464355 1539.68396 1541.070801 1539.889526 1537.379395 1533.93335 1532.182617 1533.442139 1534.790283 1542.848511 1553.036743 1558.447876 1560.942017 1561.89502 1571.121338 1568.730591 1563.836304 1568.979004 1572.937134 1573.23999 1579.324707 1583.166748 1588.840088 1595.717896 1602.04541 1608.772095 1623.41748 1633.901733 1640.083252 1644.245361 1636.994263 1630.142334 1624.795776 1615.333618 1608.671753 1621.484985 1623.77417 1623.136353 1615.525269 1621.047241 1633.04126 1639.117065 1642.814941 1645.149658 1633.384399 1627.026123 1621.574829 1617.337036 1613.129639 1606.944336 1598.221558 1595.384766 1597.858887 1600.697632 1600.494873 1597.624146 1589.639893 1583.155884 1588.205688 1596.582153 1604.636963 1608.148315 1602.954834 1601.357544 1596.98877 1586.197266 1578.651001 1572.900269 1583.810181 1588.001465 1587.80188 1584.572998 1574.18396 1575.121582 1578.55249 1583.851562 1588.336304 1593.417969 1597.377686 1596.929688 1592.37854 1583.308105 1570.443726 1574.572266 1587.898071 1600.244629 1619.178833 1632.760742 1639.699829 1640.643311 1634.914795 1627.605957 1621.799438 1616.85022 1611.339478 1612.187134 1628.621948 1640.321899 1648.216553 1649.434814 1653.11792 1659.581421 1663.687744 1671.176636 1673.076294 1678.638916 1684.007812 1685.298218 1685.85791 1686.507446 1685.568481 1681.668945 1675.529785 1669.728882 1659.044556 1645.747925 1638.38147 1631.071045 1617.100586 1607.101074 1603.455933 1598.299072 1589.462646 1582.081421 1582.477783 1585.967407 1597.504639 1609.585693 1622.022705 1633.57312 1635.890137 1625.573608 1619.980957 1622.32666 1631.24646 1637.235962 1639.510864 1640.791992 1643.280884 1645.156372 1645.579468 1645.06311 1643.12085 1638.272949 1634.039795 1632.593506 1630.376221 1625.453369 1621.270142 1617.261963 1607.87793 1598.513062 1582.019897 1569.854736 1557.646362 1545.410889 1536.817261 1533.304321 1528.574097 1530.99353 1537.99939 1544.105103 1548.473877 1554.299805 1560.309204 1562.753418 1560.623657 1555.075439 1547.852173 1543.224976 1538.13562 1529.628418 1520.649658 1511.436401 1503.446899 1494.19812 1483.777344 1478.304688 1477.644409 1480.258911 1481.592651 1483.981812 1487.553589 1490.451416 1493.261353 1495.991943 1498.264038 1501.745483 1506.078003 1510.50647 1512.367554 1514.79895 1518.7052 1520.682861 1521.586548 1524.439819 1529.693848 1534.157227 1538.130371 1540.934692 1543.00415 1544.405884 1546.918335 1549.267334 1548.39978 1542.809448 1532.623901 1524.053345 1518.960693 1515.858032 1509.996582 1510.735107 1514.184692 1503.796997 1492.286499 1475.504761 1462.685913 1451.718018 1446.271851 1440.699341 1427.523926 1432.63269 1435.789062 1440.6073 1447.340698 1459.451294 1475.830933 1480.562378 1477.65332 1470.067261 1464.104248 1458.5448 1450.458984 1440.307983 1436.620728 1431.272827 1427.501099 1421.376709 1412.460693 1405.990967 1398.777832 1387.121094 1374.311157 1361.717529 1347.773071 1341.421875 1340.794189 1340.951904 1348.195557 1370.820801 1387.530762 1390.289185 1388.383667 1397.876099 1404.207642 1406.932617 1406.386597 1405.344238 1404.100342 1403.691284 1402.328735 1404.674927 1406.735107 1406.384766 1403.526611 1395.784424 1388.974731 1389.746582 1390.354492 1389.664551 1389.159424 1392.383057 1398.909424 1405.700806 1413.201538 1418.271851 1421.968506 1424.818359 1427.677979 1433.557129 1437.602173 1436.903687 1440.639893 1446.550537 1452.220703 1458.543335 1460.213623 1462.099731 1465.482788 1464.332031 1462.758911 1458.221802 1452.506104 1454.216064 1454.05127 1451.101074 1447.328613 1444.448608 1442.984985 1441.383179 1440.31958 1439.834106 1439.519043 1438.574463 1436.425781 1433.782104 1431.515991 1429.935669 1429.185913 1428.664429 1427.608398 1425.080322 1423.534058 1422.120483 1422.067627 1421.880371 1421.781372 1421.859741 1422.238647 1422.075073 1421.426758 1419.851562 1416.306641 1413.963379 1415.023193 1417.932739 1420.333984 1421.726807 1421.389404 1419.370483 1418.241089 1417.388672 1415.674927 1412.238159 1413.288818 1415.564941 1416.970459 1417.890869 1418.394287 1418.626831 1417.80249 1416.349243 1411.080322 1407.040283 1404.265625 1400.247192 1396.112915 1392.004639 1386.153198 1380.310181 1377.287476 1375.593506 1373.744263 1371.972046 1369.412476 1366.788818 1364.933105 1361.958008 1363.177612 1373.865112 1381.988892 1384.054932 1383.804688 1383.69458 1387.106079 1388.429688 1387.405884 1383.026855 1378.857422 1374.666382 1370.580444 1367.157837 1358.972656 1358.580566 1367.118164 1373.966553 1379.312744 1378.952881 1374.470093 1369.792358 1365.503418 1357.197754 1353.529907 1354.094727 1355.198853 1352.829468 1359.976807 1367.018677 1367.813965 1367.763672 1366.353027 1367.42041 1366.142456 1363.438477 1365.44458 1364.465454 1362.888916 1360.234131 1360.707031 1361.543701 1360.817261 1360.911011 1361.028931 1360.961792 1361.183228 1360.836914 1358.069336 1355.276367 1355.449219 1353.365601 1347.51416 1340.962891 1326.280151 1316.257324 1326.488525 1337.261475 1343.427612 1344.005615 1340.887207 1339.816895 1339.425781 1337.787231 1333.559448 1327.316284 1322.27478 1320.202515 1313.163574 -1549.357178 1547.927002 1545.325317 1541.188721 1540.056396 1547.679443 1565.785522 1576.439697 1587.13208 1608.379883 1621.285156 1632.918823 1641.406616 1643.612915 1646.633789 1656.025513 1682.416016 1699.466064 1709.044922 1719.4646 1739.579102 1750.136719 1744.394775 1738.632568 1729.142578 1723.36792 1712.597534 1701.096313 1706.896729 1709.831909 1702.157227 1708.928223 1720.526978 1721.461182 1713.702271 1716.744263 1731.274658 1734.567871 1734.944336 1745.062744 1753.693604 1756.938477 1752.171631 1750.900269 1751.243652 1753.599609 1755.605469 1760.02002 1766.893677 1765.099731 1759.63855 1755.783081 1750.243896 1747.87915 1748.846436 1748.312866 1745.911621 1740.591064 1741.300781 1746.569214 1751.115112 1752.866211 1752.205444 1748.262451 1741.002441 1732.035156 1724.986328 1718.879028 1714.116943 1707.703125 1712.395996 1722.221802 1726.681885 1724.526123 1713.353394 1702.158691 1693.124634 1691.99231 1708.226685 1726.895874 1734.701416 1737.886597 1738.019531 1737.103882 1735.250977 1728.56604 1717.196045 1707.773315 1697.953125 1691.790039 1686.689087 1682.360718 1680.603149 1688.41272 1697.059937 1705.349976 1710.240845 1712.282104 1712.739502 1715.972046 1720.029297 1721.7854 1721.703491 1719.617798 1713.0448 1707.552612 1701.549805 1697.195923 1691.466919 1683.908447 1679.800293 1675.810303 1671.549194 1672.214355 1672.487549 1672.020752 1670.089722 1665.696411 1661.197632 1657.99353 1649.866577 1645.28064 1655.62085 1663.634888 1670.253906 1676.112549 1680.443359 1683.355103 1686.716064 1689.695435 1692.073364 1694.188843 1697.457764 1704.663086 1705.709106 1703.640137 1703.646362 1706.41687 1709.695435 1709.970337 1707.053955 1699.951294 1692.655884 1682.80542 1676.275146 1670.336426 1660.498047 1650.653931 1640.221191 1616.235229 1606.865845 1601.483154 1603.487671 1607.730469 1607.670044 1615.019531 1624.401978 1631.712524 1636.060791 1634.947021 1627.485107 1621.370361 1615.436646 1611.638062 1609.155884 1606.001709 1602.102417 1596.394287 1588.101929 1579.887939 1569.312378 1557.693848 1544.380371 1531.696655 1522.587891 1514.651855 1510.571655 1507.855713 1509.248291 1513.902344 1517.152954 1520.609497 1523.696777 1529.874634 1536.895386 1545.812256 1548.920776 1548.361206 1544.89624 1540.467529 1537.208984 1535.361694 1534.261841 1534.165161 1542.591309 1549.923828 1549.665894 1551.990356 1559.782471 1559.883667 1559.840088 1564.740845 1572.997803 1576.92749 1581.725464 1583.928711 1587.659546 1594.246826 1600.814819 1608.666504 1619.410156 1629.930054 1637.089844 1637.783936 1634.071533 1629.995605 1625.483154 1617.171143 1613.353516 1624.425049 1626.716064 1622.600586 1620.031128 1621.228394 1632.251343 1639.045898 1644.312012 1648.079712 1634.853149 1625.818359 1620.284546 1616.879883 1613.159912 1606.846313 1597.106812 1596.2854 1600.080688 1603.863647 1603.731812 1599.35791 1591.874146 1585.004761 1593.853149 1602.549561 1611.557373 1612.49707 1611.219971 1608.882935 1600.28894 1587.125366 1582.087036 1581.057739 1586.992676 1588.328247 1587.14917 1583.445068 1581.542236 1582.919556 1585.658447 1588.994507 1593.056641 1597.981934 1604.879028 1604.184814 1598.127197 1590.21228 1574.309937 1574.772339 1588.934814 1598.128906 1616.495728 1630.369629 1641.407959 1646.701904 1640.543945 1633.483887 1627.775879 1622.294922 1616.770874 1617.279663 1625.588745 1635.834595 1646.835571 1650.744019 1657.561279 1663.98645 1671.805786 1673.113892 1674.876587 1679.299561 1682.956543 1684.584351 1685.641479 1685.847412 1682.479858 1674.803467 1674.236816 1672.524048 1664.776367 1656.34021 1647.159912 1635.521606 1623.651611 1612.428101 1600.37207 1593.263916 1586.619263 1578.073608 1578.05481 1581.233154 1591.450562 1602.920654 1614.940674 1624.771118 1625.692017 1615.677979 1612.830566 1619.402588 1629.434448 1636.287231 1635.282471 1635.668091 1638.31543 1639.241699 1639.44812 1637.954346 1634.928955 1629.81311 1625.469238 1622.750977 1619.247803 1614.296631 1610.742432 1604.96875 1597.439453 1585.789673 1575.486938 1565.616455 1552.365845 1542.633179 1535.041504 1529.625732 1524.020508 1523.936646 1530.000122 1536.98291 1540.372925 1544.646118 1551.718018 1559.237549 1562.846924 1561.869873 1550.506836 1545.159668 1540.116577 1532.80896 1523.302856 1514.553711 1506.795532 1498.971436 1490.044922 1480.263306 1474.330444 1474.071655 1474.114136 1476.44519 1479.136353 1481.798706 1483.281494 1484.12561 1485.456055 1490.746582 1495.879395 1499.029053 1500.327393 1503.576172 1508.520752 1511.963989 1512.597778 1513.200928 1517.494141 1520.569824 1522.233398 1524.888184 1528.459839 1530.76416 1531.116821 1530.359985 1528.878906 1523.250244 1518.010132 1510.290649 1507.364136 1501.831055 1493.9375 1483.134155 1496.689209 1503.115479 1503.28772 1486.476929 1471.755005 1458.366699 1449.858032 1443.755493 1432.561523 1426.501221 1428.109375 1434.216187 1443.149902 1455.098999 1469.008667 1473.672119 1465.100708 1457.679565 1452.15564 1448.198486 1439.123413 1430.086426 1421.392944 1417.695312 1415.814087 1411.463867 1405.793701 1399.188721 1391.003784 1380.93811 1371.463257 1357.276611 1347.014282 1341.345093 1340.756836 1344.51062 1340.950562 1350.32312 1373.315796 1381.067871 1386.685181 1394.48291 1401.075806 1403.914429 1405.177368 1405.180542 1405.371704 1406.36792 1407.488159 1408.393677 1409.868042 1409.259644 1406.172241 1400.671143 1393.131348 1395.639771 1396.85144 1396.146973 1394.665405 1394.49585 1398.306519 1401.62793 1406.618896 1411.539062 1414.095459 1415.991333 1421.324951 1426.650513 1427.826904 1427.627319 1433.131958 1438.259644 1441.907104 1445.921021 1446.808838 1450.952515 1454.422852 1455.536743 1454.438965 1451.311646 1447.112549 1447.062988 1446.535156 1444.000977 1440.294312 1439.406494 1439.261841 1438.509399 1438.08606 1438.121704 1438.113037 1437.294434 1435.738892 1433.812378 1432.005737 1430.685181 1429.679688 1428.907349 1427.939941 1427.007812 1425.756592 1425.155396 1425.314575 1424.817749 1424.004639 1424.025635 1424.830688 1424.904419 1424.349243 1422.736084 1420.163086 1418.633911 1420.241577 1421.348511 1423.067627 1426.220215 1426.580933 1424.290161 1421.641724 1419.492188 1417.204468 1415.24231 1416.113159 1417.510132 1418.203735 1418.471069 1418.359497 1416.102173 1412.240479 1408.962524 1405.014404 1401.703003 1397.972046 1393.184937 1389.244141 1381.917358 1377.402344 1375.893433 1374.841797 1372.778198 1370.257812 1368.046875 1365.859009 1364.21106 1363.053223 1368.01001 1378.247437 1384.508423 1389.7771 1391.608032 1391.011597 1391.144287 1391.548828 1391.44458 1391.080811 1385.403442 1380.302002 1375.639648 1370.66394 1366.635864 1359.631836 1363.463257 1372.93103 1379.857178 1381.007935 1379.013794 1372.951538 1367.979004 1362.983521 1355.086182 1357.134766 1364.965088 1362.643433 1354.475952 1362.190552 1369.887085 1374.589111 1375.26001 1374.266113 1374.503418 1372.718384 1370.184448 1372.109619 1371.988159 1369.687988 1366.899536 1368.870972 1369.281738 1368.141357 1368.92041 1368.921997 1368.626709 1368.076416 1367.280396 1365.289429 1359.596558 1356.949097 1353.16394 1343.167114 1330.241089 1322.548706 1328.181763 1338.887695 1345.954102 1352.523804 1350.544312 1347.955566 1346.359497 1345.342285 1341.981445 1337.533081 1332.237427 1332.450684 1328.736328 1318.158936 -1569.166748 1564.858032 1559.283325 1555.518921 1552.524292 1550.244873 1547.880981 1560.450195 1582.597046 1599.166016 1612.75708 1619.311035 1622.78772 1625.244141 1640.907349 1663.356934 1683.618286 1698.383789 1708.064453 1718.733887 1738.045166 1737.139404 1727.702515 1724.625732 1719.359253 1712.778076 1700.917725 1686.967529 1689.362915 1692.031494 1685.752563 1690.896606 1707.376831 1707.282349 1701.249634 1707.9375 1720.353149 1720.0448 1722.740845 1732.19751 1746.796875 1744.692749 1739.543091 1738.937256 1738.070312 1742.322632 1744.640747 1750.74292 1756.870483 1760.394287 1759.964844 1757.978149 1755.201538 1753.745361 1753.944214 1752.704224 1750.134888 1745.465454 1746.818604 1751.62854 1756.599243 1757.862183 1757.047974 1751.107178 1742.573242 1734.663452 1727.728149 1721.737671 1716.848755 1718.689453 1725.255737 1732.446411 1735.128906 1729.135864 1716.790771 1704.774902 1696.453857 1694.853271 1712.425781 1731.325439 1738.380981 1743.75415 1745.016479 1743.1698 1737.361206 1727.595825 1716.022705 1705.891602 1697.152588 1691.563232 1687.17395 1682.92041 1684.690063 1693.799194 1703.546753 1710.823486 1716.837036 1717.57312 1716.624878 1717.952759 1720.681885 1722.337524 1722.275024 1720.830688 1714.521851 1708.67981 1702.664062 1698.359375 1692.74939 1684.371948 1681.319702 1679.955811 1679.716187 1680.250366 1679.72644 1678.348145 1676.495117 1673.650391 1669.415039 1662.5448 1653.123169 1649.572632 1661.167725 1669.144775 1678.550659 1684.751221 1687.04248 1689.791748 1692.894165 1696.640137 1699.764282 1701.989624 1703.893066 1707.932007 1708.729614 1709.447388 1709.34668 1709.200562 1706.249146 1700.114624 1695.518188 1694.915283 1691.695679 1681.572632 1671.061768 1667.472778 1661.039551 1650.721802 1640.456421 1618.952026 1608.001221 1595.268433 1593.119629 1594.63855 1600.324585 1609.021362 1616.668457 1623.261841 1626.033203 1625.368774 1619.574341 1612.768066 1605.708374 1602.673706 1600.544556 1596.651123 1590.938965 1583.979126 1577.266968 1569.682251 1557.373657 1544.842896 1534.288696 1524.436157 1519.046143 1512.424927 1510.329468 1508.48999 1509.23938 1514.130371 1517.714722 1521.875366 1525.756592 1531.014526 1537.641846 1549.281372 1553.122559 1553.689941 1551.209229 1546.433472 1542.109253 1538.960083 1535.804932 1534.926392 1539.686035 1547.568359 1549.926514 1555.152222 1558.755127 1559.743896 1563.862915 1570.111084 1577.223267 1583.655762 1588.644653 1590.502075 1591.752808 1594.398926 1599.009766 1607.755127 1616.707397 1625.805908 1633.844238 1637.333618 1636.918579 1632.620239 1625.58667 1620.436401 1622.832153 1629.938965 1631.262451 1626.177124 1622.882446 1625.154297 1632.023926 1638.804443 1645.037354 1648.252686 1637.085327 1626.340698 1620.357788 1616.477661 1612.253296 1606.029663 1598.612793 1600.435303 1604.418335 1609.348511 1607.666016 1602.004028 1597.007324 1592.47168 1595.418945 1603.582275 1610.598511 1612.986206 1612.923584 1609.591431 1598.727295 1588.234619 1584.914429 1586.514771 1588.422974 1589.400757 1587.252319 1584.506592 1586.349731 1589.015503 1591.40686 1594.154175 1595.380127 1602.05188 1612.18689 1611.279785 1604.544312 1595.840698 1581.220581 1575.435059 1588.423584 1598.261597 1613.074463 1626.766724 1637.864868 1649.03064 1648.263306 1641.361572 1633.676514 1626.396729 1620.850952 1619.161621 1622.467529 1629.950562 1639.572998 1647.987427 1654.638916 1659.53064 1665.759521 1669.077148 1671.351807 1675.905518 1680.029175 1683.061646 1684.644165 1683.519653 1675.060181 1667.622314 1668.392578 1672.885498 1666.78894 1658.89624 1645.90564 1634.467651 1622.122314 1612.481689 1600.438232 1590.990845 1583.518066 1576.356201 1575.373413 1579.354126 1587.617065 1597.899292 1606.190918 1613.345825 1614.097534 1607.707153 1611.660278 1620.223022 1626.903931 1632.990967 1632.501831 1632.358521 1633.685913 1634.074341 1633.843628 1632.214111 1628.337769 1622.223511 1616.382324 1609.84729 1607.572754 1603.125488 1597.585083 1590.379761 1584.155762 1575.499512 1568.509521 1560.58667 1548.21582 1540.105225 1533.386597 1527.915527 1521.724243 1516.78772 1520.176758 1523.772461 1529.69812 1535.34021 1543.977417 1551.817505 1557.773438 1562.041504 1555.923706 1547.306519 1542.054321 1535.320435 1525.637817 1517.486816 1509.557007 1501.703003 1493.723511 1486.13623 1480.070312 1472.573975 1470.904541 1471.274902 1472.385986 1473.950684 1474.619019 1474.55835 1475.408569 1480.933838 1486.698486 1488.547852 1488.801758 1489.557617 1495.347778 1500.992554 1503.342896 1504.094727 1506.78418 1509.733398 1511.518921 1512.843628 1514.365601 1516.854126 1518.591309 1518.885864 1516.787964 1510.805298 1503.12146 1498.580566 1489.727539 1487.436035 1482.199951 1463.779541 1475.124512 1487.720459 1493.048462 1493.60022 1481.97583 1465.515503 1454.871948 1447.446167 1438.393799 1423.930786 1421.848267 1428.461304 1439.429932 1448.69873 1458.447144 1459.180908 1455.378296 1448.778564 1439.569458 1435.914185 1428.709473 1417.615234 1409.086792 1408.374512 1406.296265 1404.153809 1398.049683 1391.506226 1384.428833 1375.628052 1366.491333 1352.88916 1345.70752 1341.286743 1341.045776 1358.906616 1356.364136 1346.781616 1351.634277 1368.443848 1382.314697 1390.900757 1395.621094 1399.289917 1401.866089 1403.595215 1404.986572 1408.314697 1411.471313 1413.371216 1413.525879 1412.580078 1409.21106 1403.960938 1399.697021 1403.558105 1404.341064 1403.163086 1401.224365 1400.350464 1399.937744 1400.442627 1400.910156 1403.531006 1405.876343 1410.237671 1415.641602 1418.898926 1420.368774 1422.396851 1426.906494 1430.826904 1433.558472 1436.427246 1436.957031 1440.948975 1444.441528 1446.551514 1446.037354 1442.713257 1438.948242 1439.717896 1439.726074 1438.152344 1437.2854 1437.532349 1437.253418 1436.963013 1437.106689 1437.165527 1436.936157 1436.394897 1435.208008 1433.676514 1432.219971 1430.964844 1430.043945 1429.157837 1428.496948 1427.855347 1427.459961 1427.390869 1427.362915 1427.049194 1425.820312 1426.315796 1427.116943 1427.381836 1426.743408 1425.479004 1425.379761 1424.651245 1425.024292 1424.946655 1425.018188 1428.069946 1428.471069 1425.880127 1422.904907 1420.735962 1419.269287 1418.487061 1418.120972 1418.300903 1418.234741 1415.881348 1412.796265 1406.779663 1400.641968 1398.745972 1397.414917 1394.636353 1390.186646 1386.564453 1378.805298 1376.354004 1374.939697 1373.837036 1372.443115 1370.505981 1368.062012 1365.502563 1365.046997 1367.713867 1376.297607 1383.025513 1388.182983 1393.187744 1396.377808 1396.879028 1394.435059 1392.38501 1391.630493 1390.576416 1388.397217 1384.416504 1379.912964 1375.321899 1369.94043 1365.323486 1360.239014 1368.730469 1378.655029 1380.70459 1380.106201 1374.306274 1368.118652 1364.954956 1363.560791 1363.607422 1367.589111 1369.400391 1365.751099 1360.859009 1363.746216 1370.38623 1378.07373 1379.62561 1379.190674 1380.532227 1380.552979 1379.115356 1379.387939 1379.544434 1377.090454 1375.626587 1376.758057 1377.594971 1377.091797 1377.328247 1376.475586 1371.167969 1369.622314 1365.794556 1360.288818 1355.302002 1350.978271 1343.522339 1332.827759 1326.591919 1327.621948 1334.243164 1345.463135 1354.368408 1357.536865 1356.914551 1354.68457 1352.985596 1350.64209 1345.643921 1340.506348 1339.021118 1336.423096 1331.953247 1324.353149 -1587.979614 1585.2052 1579.139893 1568.606812 1558.895142 1556.510254 1553.782959 1551.362061 1572.989746 1589.0354 1598.857178 1608.281494 1612.911255 1621.814331 1644.051636 1665.446533 1680.106812 1694.876831 1706.462524 1719.088867 1731.983032 1722.968384 1711.284912 1708.98938 1705.21521 1697.955078 1688.148315 1674.854248 1670.620972 1674.841797 1671.22937 1677.376221 1686.253296 1692.216919 1688.376343 1698.87793 1706.628052 1705.094238 1716.0354 1727.274902 1737.947998 1734.036987 1727.093384 1726.761963 1727.275879 1732.800049 1738.227905 1743.54541 1752.717651 1758.308594 1759.838379 1759.906494 1758.771362 1758.369751 1758.166504 1757.193848 1755.568481 1753.945557 1754.133667 1757.137085 1760.730347 1760.856567 1759.139893 1754.303711 1745.063965 1736.838501 1730.124268 1723.625366 1721.062744 1728.245972 1735.49939 1740.017334 1740.44104 1731.629028 1718.568237 1707.040649 1699.656616 1699.015381 1713.399536 1731.900513 1740.302124 1746.160278 1746.731812 1746.519043 1737.592407 1726.172852 1714.498535 1704.229736 1696.088989 1690.920044 1686.775146 1684.258667 1692.687256 1700.981079 1710.346191 1718.328857 1722.308228 1722.090942 1720.99646 1720.801636 1722.877197 1723.042847 1722.410889 1720.080933 1713.203491 1706.724854 1702.893188 1698.377441 1694.062256 1691.02063 1687.742065 1688.280396 1689.166138 1689.223755 1687.705444 1684.550049 1681.146729 1677.505737 1673.362793 1665.225708 1655.205322 1651.541138 1661.744751 1672.625854 1683.449097 1687.75415 1691.883545 1695.183472 1699.916504 1706.032471 1709.133545 1708.320923 1705.268311 1702.332031 1702.840942 1703.276245 1703.13623 1701.986328 1698.345703 1690.675903 1686.247803 1684.856201 1685.472656 1669.872192 1658.287354 1656.699341 1657.019165 1650.762207 1643.066528 1619.847412 1608.684692 1598.236816 1585.712036 1584.339722 1592.263062 1597.455811 1604.8125 1612.680054 1616.45813 1615.51709 1611.573242 1605.45166 1597.172607 1592.655029 1589.025269 1585.879028 1580.967529 1576.679932 1567.86853 1555.94104 1547.380615 1535.844604 1524.088623 1521.221436 1517.145264 1513.533691 1510.941772 1509.20105 1508.807251 1513.303467 1517.91333 1522.747314 1527.395142 1532.30542 1538.733887 1549.325684 1556.795776 1559.506958 1556.744019 1551.410767 1546.717773 1543.151367 1539.641846 1536.003418 1541.084106 1553.412476 1559.236206 1562.824219 1566.547607 1569.178223 1573.424805 1575.893799 1582.556396 1590.56958 1598.285156 1599.824707 1599.180786 1600.559937 1600.744141 1607.80249 1614.631714 1622.476196 1632.18042 1639.44873 1640.88147 1633.924561 1624.713867 1620.049561 1633.026733 1636.540283 1636.462402 1633.815796 1632.009521 1632.110229 1632.660522 1637.979858 1646.154907 1647.951294 1638.4646 1628.508545 1621.110596 1616.289673 1610.936157 1607.2948 1606.469604 1606.566162 1608.113525 1611.827393 1610.536865 1605.272583 1600.163696 1596.176025 1596.286621 1603.275269 1609.978516 1612.936646 1612.432373 1604.657959 1595.2052 1588.836792 1588.346558 1590.561646 1592.170898 1591.559692 1588.390869 1586.214844 1591.771484 1595.0354 1596.412842 1600.814575 1603.659058 1608.028931 1614.005005 1617.38855 1610.617432 1601.865479 1587.963257 1577.143433 1587.868164 1601.1875 1609.886719 1622.275513 1633.31543 1645.775635 1650.088501 1648.095337 1639.501343 1631.658325 1625.220459 1621.178467 1620.640259 1626.137085 1632.275146 1640.674561 1646.648804 1652.195801 1656.458618 1661.713135 1667.665771 1671.59082 1677.218018 1680.623047 1681.562988 1679.897949 1671.271118 1661.578003 1656.486572 1654.364624 1653.30249 1646.73584 1637.163696 1626.223511 1615.753662 1606.809448 1596.5177 1586.757935 1579.281128 1573.959229 1573.793945 1577.42334 1583.783569 1591.540771 1598.17395 1602.158447 1600.917236 1603.001709 1611.948364 1621.041748 1626.322998 1628.920654 1629.380249 1629.603027 1629.883545 1630.375244 1629.878052 1628.443726 1624.189087 1618.992432 1612.990845 1607.513672 1602.670776 1595.720703 1586.567993 1580.217407 1573.361938 1568.179443 1561.800171 1554.48291 1545.916748 1538.195923 1531.783936 1525.200317 1519.697632 1512.452759 1513.281738 1515.219482 1520.926147 1528.666626 1536.106201 1544.312988 1551.068726 1556.09021 1555.368408 1550.017334 1544.466064 1537.85376 1528.794189 1520.7146 1513.090698 1505.296143 1497.190674 1490.873047 1485.369263 1480.532349 1473.514648 1467.209717 1466.828491 1465.451904 1466.884521 1468.168091 1469.264893 1472.281006 1475.459595 1478.39978 1479.827881 1480.044434 1482.24353 1485.44043 1488.938232 1490.625732 1492.478394 1498.268921 1501.818481 1502.564209 1503.462769 1506.116333 1509.672241 1509.781738 1505.277466 1497.513184 1489.531982 1482.202637 1475.352051 1473.681641 1467.42041 1452.87146 1456.72998 1467.510376 1476.576782 1484.938599 1487.517456 1473.175293 1460.192993 1451.494751 1441.145386 1426.191284 1416.289307 1416.4729 1430.175903 1440.099976 1441.485596 1446.216309 1444.445435 1437.2323 1426.567749 1422.577637 1416.050171 1405.600952 1399.61792 1402.230225 1395.901855 1390.055054 1387.741821 1383.99707 1378.556519 1367.081421 1358.403564 1350.537476 1345.049438 1341.632324 1343.095215 1350.159058 1353.245605 1354.515503 1350.501587 1351.564575 1374.449951 1384.255737 1391.215454 1393.99585 1395.0979 1397.690063 1402.296509 1409.36731 1415.442505 1416.279541 1416.265869 1415.747681 1412.641846 1406.409546 1403.102905 1407.978271 1409.147095 1408.568237 1406.793701 1405.351685 1404.063843 1402.224487 1400.646851 1400.613159 1400.648804 1403.462524 1408.44458 1412.03125 1413.566528 1416.44751 1420.804443 1424.218628 1426.489502 1429.463867 1431.998291 1434.753174 1436.550537 1437.507935 1437.667969 1436.659058 1435.611328 1435.692017 1435.615112 1434.993896 1434.857422 1435.123413 1435.238647 1435.544312 1435.828857 1436.103394 1436.126099 1435.696411 1434.825073 1433.64917 1432.286377 1431.127808 1430.028564 1429.226562 1428.550415 1428.099121 1427.707886 1427.559692 1427.478882 1427.409424 1427.25769 1427.794922 1428.195923 1428.346802 1428.302124 1427.918823 1427.808472 1428.396729 1428.118042 1426.924927 1426.297241 1427.46106 1427.169434 1423.456177 1420.609009 1419.575439 1419.214722 1418.983521 1418.270996 1415.630127 1411.692749 1406.008667 1402.032593 1397.606934 1392.427734 1390.386108 1390.372803 1388.783569 1385.807129 1382.461426 1378.96228 1375.187988 1373.496338 1372.219604 1371.076416 1369.21875 1367.456177 1369.662109 1374.889404 1382.284912 1387.199829 1391.254028 1396.171021 1400.493408 1403.102539 1403.396729 1395.238403 1390.373413 1389.285522 1387.354126 1384.953613 1382.103394 1378.952637 1373.907349 1368.485596 1364.111206 1362.223145 1373.355835 1380.34436 1379.876953 1375.091064 1367.147705 1364.579834 1365.451172 1367.202026 1368.103149 1375.720459 1374.725586 1365.505249 1364.405029 1365.244263 1365.443115 1372.584595 1379.24353 1380.85083 1383.165039 1389.562866 1390.576172 1388.62854 1383.457886 1380.524292 1379.693604 1379.927856 1379.925049 1380.787842 1379.006958 1373.675293 1368.087524 1361.342407 1354.428223 1349.61499 1345.790161 1341.665527 1336.978882 1330.121338 1332.805176 1335.43689 1339.309937 1344.874268 1355.750977 1363.680908 1364.588989 1361.430054 1358.762451 1356.262939 1351.685791 1347.212158 1344.679077 1340.155762 1336.023926 1333.088989 -1611.366821 1607.436279 1597.569092 1586.437134 1573.556274 1564.635864 1560.921509 1556.579224 1558.247314 1576.18042 1588.319092 1594.359131 1609.411011 1622.731201 1640.434692 1661.140259 1677.176758 1692.190552 1702.560303 1716.296631 1719.014038 1707.958618 1698.333984 1694.352295 1688.890259 1681.658447 1672.286743 1661.672363 1654.350708 1657.614502 1655.61145 1663.283813 1671.865723 1676.020386 1678.479248 1689.632568 1692.767944 1695.12854 1711.220459 1722.877808 1729.36377 1721.119263 1717.322998 1717.480713 1720.236816 1728.153809 1734.980713 1741.08252 1750.799927 1757.652954 1760.744629 1761.983521 1762.244141 1762.397339 1762.011841 1761.522583 1760.948975 1761.040161 1761.873657 1763.631958 1765.079102 1763.591064 1760.721191 1756.222046 1746.77478 1738.648438 1731.55835 1728.579712 1731.442261 1738.605347 1745.100586 1747.038574 1744.766357 1734.191895 1721.505615 1708.600098 1701.578491 1701.796387 1712.248657 1727.868286 1739.738403 1746.877197 1747.069946 1745.495117 1736.935669 1724.429443 1713.083862 1702.990479 1694.493774 1690.092163 1686.270752 1690.278564 1699.009399 1705.666016 1715.04895 1722.907104 1726.362671 1726.469604 1725.685059 1725.036865 1724.863281 1724.012207 1722.417603 1717.924072 1709.967041 1706.053101 1705.394409 1704.18335 1701.059692 1699.055054 1697.235229 1698.706909 1700.178345 1699.46875 1696.285645 1690.968018 1685.183105 1679.347656 1673.770386 1666.252197 1657.546021 1652.771484 1658.983765 1670.821289 1681.200439 1688.856323 1695.200562 1700.55835 1707.142456 1710.983765 1711.351074 1711.389893 1701.550903 1694.623169 1694.581055 1695.634644 1694.836548 1695.450684 1692.788086 1682.580688 1675.019409 1673.592529 1673.396606 1663.843994 1646.213745 1638.979004 1645.317993 1650.434692 1647.704834 1622.730469 1612.101807 1602.145264 1588.26355 1574.95459 1582.872925 1586.117432 1595.581909 1603.55896 1606.501709 1606.112183 1603.582031 1598.671021 1589.495239 1582.373779 1579.285156 1575.662964 1571.593872 1566.962646 1559.937866 1545.17688 1534.68103 1526.601929 1522.31604 1519.021729 1516.292847 1514.0271 1511.228882 1509.201172 1510.396484 1512.964233 1517.766724 1522.956177 1527.988037 1533.366699 1540.444946 1549.639526 1561.16272 1565.335815 1563.040283 1557.779541 1552.172974 1548.177246 1545.651245 1541.676392 1539.854614 1555.308472 1564.88562 1570.871216 1576.235596 1582.365723 1583.937622 1583.760498 1587.009155 1597.316284 1604.260742 1608.766724 1607.840576 1609.786621 1609.436157 1608.253174 1614.121704 1622.468384 1634.405273 1644.172729 1647.113892 1633.635742 1626.749634 1630.065186 1638.162842 1641.180054 1642.079468 1639.669189 1639.208496 1638.963867 1635.640747 1639.848633 1646.644409 1647.461182 1638.219849 1628.948364 1622.120483 1618.441528 1612.570312 1611.328247 1612.206299 1611.373535 1610.513794 1613.482544 1612.070923 1607.182739 1602.035889 1597.050781 1598.751221 1605.550293 1611.241699 1613.675659 1611.8573 1603.088257 1594.94397 1593.671387 1594.624512 1595.907593 1596.462524 1594.338013 1593.154175 1594.177856 1598.868896 1601.960815 1603.831665 1608.945679 1612.966919 1616.247681 1621.546509 1624.023071 1618.739868 1607.990112 1594.051025 1578.067383 1585.879517 1600.43457 1608.139771 1618.006348 1628.688843 1640.898193 1650.033203 1650.132202 1645.795532 1635.195801 1629.682129 1626.642578 1623.835938 1625.785767 1631.484985 1637.057983 1642.440063 1646.83252 1654.036133 1658.253296 1665.270142 1670.404907 1674.933105 1677.15686 1677.434204 1675.63147 1672.834229 1663.522461 1651.250488 1643.937622 1641.743164 1636.635132 1626.734985 1616.46875 1607.577271 1600.864746 1591.157593 1582.53894 1576.166748 1571.872559 1570.373047 1574.38855 1579.363403 1584.740356 1588.797241 1591.261719 1594.325684 1601.03064 1610.454468 1621.150146 1624.807983 1626.357788 1626.50354 1626.060547 1626.161865 1626.448853 1626.520996 1625.301147 1622.537109 1618.050781 1613.16748 1609.180908 1603.07312 1597.27356 1586.034546 1576.496948 1569.862061 1563.354248 1557.518188 1550.685425 1543.81604 1536.578979 1530.897705 1524.547607 1519.572998 1514.432617 1506.361084 1506.740723 1512.41394 1519.832397 1526.093628 1533.00354 1543.00415 1551.31604 1553.160034 1551.720337 1547.10437 1540.035645 1532.453613 1524.617188 1518.379272 1512.120117 1502.048706 1496.050415 1491.202148 1486.966919 1481.57373 1475.080444 1468.233154 1462.986816 1461.538208 1462.352783 1462.388672 1465.561401 1467.952393 1470.251953 1471.595703 1471.773438 1473.185303 1476.695435 1478.89978 1480.060059 1481.493896 1486.210693 1490.035278 1490.079712 1489.699341 1492.563965 1494.283447 1493.27417 1490.659302 1486.18811 1476.890747 1466.936401 1462.277466 1460.946533 1453.89624 1442.286377 1445.104248 1454.233643 1464.201904 1470.632935 1475.635498 1478.29895 1466.148071 1456.408813 1444.353271 1427.559326 1412.123779 1404.824829 1414.573853 1420.856934 1425.232666 1431.627319 1427.831055 1423.319214 1417.163696 1408.352661 1400.449829 1396.684937 1391.991211 1390.267578 1385.491333 1381.572632 1382.167725 1372.101196 1363.616455 1355.614624 1351.976318 1346.616333 1342.667358 1341.346802 1347.629272 1352.582275 1354.907715 1354.417358 1353.983887 1353.445068 1353.930786 1373.366577 1382.430542 1386.864014 1387.422241 1388.155151 1399.884644 1408.807617 1416.911743 1417.670532 1417.552124 1417.172729 1415.418457 1411.810913 1411.756714 1414.164429 1414.976562 1414.245117 1412.597778 1411.140137 1408.761353 1406.234131 1403.512451 1402.274048 1400.950439 1400.844604 1401.887817 1405.003052 1407.941528 1412.168457 1415.109985 1417.6698 1419.40625 1423.670044 1427.384399 1430.196045 1431.832275 1432.620361 1432.774048 1432.640991 1432.252563 1432.123901 1432.164062 1432.004883 1432.253784 1432.933105 1433.481201 1434.030273 1434.577271 1435.128662 1435.390869 1435.123535 1434.547729 1433.659546 1432.330444 1430.895752 1429.637939 1428.822998 1428.370483 1427.986938 1427.765137 1427.469971 1427.370605 1427.301758 1427.584717 1428.168579 1428.589722 1428.652954 1428.742554 1428.863647 1428.885254 1428.855103 1428.641479 1426.422607 1423.810303 1422.503296 1421.111694 1418.00708 1414.754517 1413.966309 1414.179077 1413.245605 1408.672974 1404.678833 1400.535156 1396.375244 1392.718994 1389.713623 1387.929932 1386.672485 1385.723389 1384.324707 1381.898071 1379.057373 1376.652466 1373.535156 1372.453125 1371.249512 1369.668701 1370.802734 1377.294434 1378.397705 1382.87207 1389.768311 1394.91333 1399.208008 1403.364624 1404.311523 1404.161499 1398.953857 1389.58667 1389.22168 1388.018677 1385.106567 1379.246582 1378.523193 1376.339111 1371.201904 1366.274902 1363.834961 1370.418457 1378.137329 1379.558716 1377.626953 1372.972656 1367.353027 1368.450439 1372.709229 1376.806396 1376.947144 1381.401367 1377.685425 1369.6875 1370.739136 1373.27478 1372.286255 1372.792603 1376.910034 1378.903198 1382.648804 1387.270264 1389.879272 1389.503662 1385.546631 1380.92749 1378.629395 1378.002686 1375.436157 1372.301514 1369.347778 1366.075562 1358.081787 1350.358643 1342.26001 1340.650146 1339.743286 1338.589478 1338.391846 1339.012451 1340.216431 1345.283447 1347.339844 1348.962036 1354.078491 1364.159424 1368.292725 1367.2771 1364.087036 1360.995972 1357.045776 1354.683838 1349.520386 1342.672363 1341.842773 1340.104248 -1630.523438 1625.064941 1619.612549 1606.219727 1595.963501 1587.750977 1579.704346 1568.583252 1558.396851 1560.190552 1574.647095 1589.677246 1604.780273 1618.550659 1631.380615 1651.416016 1672.386719 1682.989868 1695.085205 1702.747925 1703.521606 1691.749146 1684.108032 1675.692749 1670.362549 1660.566528 1656.906128 1650.70752 1640.064209 1639.075439 1639.109863 1646.078491 1653.687012 1661.184692 1671.077637 1682.429932 1682.331543 1693.684082 1708.304443 1717.452881 1718.684937 1711.373901 1706.292847 1711.181274 1719.619507 1730.74231 1736.445801 1742.012329 1752.284546 1758.565796 1762.601318 1764.850708 1765.433594 1765.973511 1766.175659 1765.784668 1766.771362 1768.78772 1770.780273 1770.020264 1768.568726 1766.15686 1762.589966 1757.653198 1748.487427 1740.736816 1734.301514 1733.95813 1741.195068 1747.919067 1751.985474 1751.723511 1746.479736 1736.493286 1723.035767 1711.208984 1704.270752 1705.044556 1713.82373 1725.068848 1736.547974 1745.337769 1746.261963 1743.915283 1735.953491 1725.876831 1713.598877 1702.213257 1694.038208 1689.726807 1686.703735 1695.779663 1703.475952 1710.480225 1719.052979 1728.262939 1732.282349 1731.065552 1729.207886 1727.970703 1727.009766 1725.295654 1722.300659 1719.292236 1715.56543 1711.81897 1710.859741 1710.407593 1708.981323 1706.522583 1708.237915 1709.147583 1709.770874 1708.212891 1701.543213 1693.784302 1685.528076 1677.729736 1670.653564 1663.811401 1655.850342 1656.869385 1659.194092 1666.434082 1675.061157 1686.283081 1695.591187 1702.9823 1709.194458 1711.817017 1712.431274 1709.411621 1697.624512 1687.369141 1685.192139 1685.556763 1683.903442 1685.593384 1686.172852 1677.42334 1666.536255 1662.290894 1660.993286 1654.667847 1637.478638 1624.311646 1633.356689 1642.823242 1644.937622 1626.299805 1615.802124 1604.021362 1588.968018 1571.41748 1570.473511 1578.449341 1587.612305 1595.66394 1599.088501 1596.985718 1595.681641 1590.20813 1582.678833 1574.147461 1570.948853 1566.250366 1562.067017 1555.967407 1549.446777 1537.959717 1528.979248 1523.656738 1520.207153 1517.461304 1515.077148 1512.651733 1511.764526 1513.838135 1515.407959 1515.675415 1517.447021 1522.718872 1527.995117 1533.981934 1541.272949 1550.432861 1562.684937 1572.445557 1571.675171 1565.863403 1560.301025 1556.650269 1552.874878 1549.761108 1546.288696 1549.691528 1563.268433 1572.502686 1584.391846 1590.855347 1595.03772 1594.270142 1594.819336 1601.514282 1610.027832 1617.265259 1617.762573 1617.621338 1618.6698 1616.614014 1618.091431 1625.126953 1638.072144 1647.904541 1645.557617 1633.365967 1632.188599 1633.205811 1642.110229 1646.545532 1647.597656 1647.321899 1647.13269 1646.566895 1645.969482 1646.044922 1647.791138 1646.892822 1638.888672 1631.395996 1625.007935 1620.785889 1618.278809 1616.57666 1617.225464 1617.837646 1617.498535 1616.964966 1614.031982 1609.793091 1607.362427 1605.707642 1605.831421 1609.93335 1616.838623 1616.0177 1612.355957 1600.655518 1595.920898 1597.848389 1601.384644 1602.242554 1601.0896 1596.472046 1596.931763 1598.511353 1604.109497 1609.863281 1611.161377 1612.584229 1614.370728 1617.309692 1621.019653 1624.053101 1619.523926 1612.203491 1599.293335 1581.094116 1586.144897 1599.216309 1605.977051 1613.947388 1623.981689 1634.885254 1646.901611 1650.467285 1649.615601 1643.096436 1635.526611 1633.100708 1631.366943 1633.324585 1632.884521 1636.561768 1641.552612 1646.791016 1654.331055 1660.792847 1664.949341 1671.11377 1671.860962 1674.205811 1674.418579 1673.639282 1670.996338 1663.629028 1652.569336 1643.55481 1634.187622 1626.453125 1616.366333 1607.221191 1599.519409 1592.776611 1585.599731 1579.150635 1574.402954 1569.015991 1564.271362 1567.598755 1572.273926 1576.671753 1581.518677 1586.635986 1593.253662 1599.935547 1608.02356 1619.341553 1623.208618 1624.058472 1623.650513 1622.6698 1622.310425 1623.861084 1623.963867 1622.688232 1620.410522 1617.112793 1613.887817 1610.90271 1604.324463 1598.080322 1587.960327 1578.606812 1571.455078 1562.185913 1556.341675 1550.660767 1543.651855 1536.740112 1531.443604 1526.802612 1521.04248 1514.721558 1507.46167 1500.414062 1502.640137 1507.716064 1511.502075 1516.565674 1533.286255 1544.14563 1551.366577 1551.610962 1548.519653 1542.175537 1535.73877 1528.967285 1522.901245 1517.566406 1511.886841 1501.740845 1496.667236 1492.703125 1488.735718 1482.804199 1476.504395 1470.186035 1462.619873 1457.823975 1457.999756 1459.401978 1461.096924 1462.790894 1463.764282 1463.684937 1464.924316 1468.176514 1470.471191 1471.716309 1472.441162 1474.273926 1477.488159 1479.182251 1479.378662 1480.517944 1480.197388 1477.406982 1475.643677 1473.575806 1467.760254 1455.932373 1448.371582 1447.817139 1442.383545 1430.807251 1430.639404 1438.404663 1450.96814 1457.473755 1459.640137 1461.172119 1464.171875 1458.242188 1446.428345 1426.810303 1412.230957 1404.055664 1394.195679 1401.572266 1412.053345 1415.952759 1416.308228 1412.404297 1404.64856 1398.622437 1393.010254 1388.348389 1382.904785 1377.438354 1368.478149 1363.562622 1361.73645 1359.464844 1357.242554 1354.097778 1346.984985 1342.651733 1342.092407 1348.494385 1355.348999 1358.098022 1360.855957 1361.316772 1360.192749 1356.991821 1354.159424 1352.501099 1368.269531 1377.51709 1376.956909 1384.790894 1394.731812 1402.737061 1410.588623 1415.429077 1417.949341 1418.079346 1416.949463 1414.58606 1415.608521 1418.782104 1420.076538 1419.516235 1418.420654 1416.698853 1413.640137 1411.083374 1409.112793 1407.19458 1404.231201 1401.827026 1401.96521 1401.697388 1402.933472 1408.425415 1411.131226 1412.428467 1413.372681 1417.367798 1421.889771 1425.822144 1427.891602 1428.560425 1429.038208 1429.00708 1428.737183 1429.117676 1429.262817 1429.18103 1429.579956 1431.029785 1431.894897 1432.812256 1433.533081 1434.189331 1434.611938 1434.731812 1434.347168 1433.577148 1432.355103 1430.722168 1428.639404 1427.832764 1427.622559 1427.357178 1427.307007 1427.165161 1426.949951 1426.827026 1426.964111 1428.291748 1428.674805 1428.942627 1429.104004 1429.023926 1428.910767 1428.760986 1427.22937 1423.65332 1419.319336 1415.810791 1415.087402 1411.93689 1405.298584 1404.13147 1403.771973 1400.296387 1396.819336 1394.404419 1391.459229 1388.913452 1387.552734 1385.978271 1384.787109 1383.417725 1382.138672 1380.754639 1378.880005 1376.855469 1375.025146 1376.137939 1377.927002 1378.861084 1377.516968 1382.590454 1387.596558 1389.917236 1390.12561 1395.460327 1400.690918 1404.422363 1405.704102 1405.006104 1402.12793 1397.660156 1393.448975 1392.166138 1389.84668 1385.532715 1379.964233 1376.516235 1373.507324 1369.516602 1365.42688 1371.102417 1378.535889 1381.420654 1379.09436 1377.31311 1377.410278 1379.871216 1376.824585 1380.216431 1383.814941 1385.035767 1385.467163 1378.319092 1375.050171 1378.079346 1380.949707 1380.994263 1378.315674 1377.112305 1377.691406 1379.270752 1385.644165 1388.024536 1387.849243 1385.777222 1379.496826 1377.397583 1375.349731 1368.625366 1364.432861 1363.745972 1360.308716 1353.398438 1353.504028 1351.55127 1345.879639 1341.682129 1340.445557 1346.222412 1349.189819 1349.095703 1353.224365 1356.484741 1355.781982 1355.379883 1363.517578 1369.19104 1371.062256 1368.996094 1366.449585 1362.91333 1359.075073 1355.243896 1353.582764 1350.072144 1346.585327 -1654.644287 1650.379395 1642.281982 1629.519287 1613.008179 1605.687134 1601.868042 1593.838501 1583.663696 1564.816772 1560.989502 1583.96167 1597.079834 1613.985596 1624.495605 1640.442871 1658.545532 1672.706543 1679.690186 1683.992188 1682.990479 1676.299438 1666.921875 1658.984863 1654.33606 1640.542969 1635.672729 1630.563477 1629.078491 1629.890991 1633.457397 1637.147217 1640.636353 1644.531372 1656.929199 1666.403687 1681.536255 1694.202637 1703.187256 1706.126953 1703.728027 1695.132568 1700.581665 1710.2771 1718.451416 1730.185547 1739.580444 1746.626099 1754.876953 1761.640747 1766.462524 1767.97522 1769.577271 1770.844727 1771.012695 1771.037109 1772.505737 1774.383301 1775.122681 1773.703857 1771.550171 1768.987183 1764.916626 1760.151978 1753.596191 1743.581665 1739.336426 1741.56665 1749.323975 1756.023071 1757.887817 1755.70752 1747.036987 1737.526123 1723.841919 1713.662964 1706.364624 1709.200073 1719.63855 1728.754639 1735.307251 1742.092163 1743.141235 1740.44812 1734.619995 1726.000732 1713.990723 1702.353149 1694.529175 1689.877441 1689.312378 1699.367554 1707.948975 1714.161865 1722.455566 1732.994507 1733.988159 1732.902832 1731.170654 1729.883545 1729.054565 1726.954224 1724.442261 1722.293457 1720.746582 1720.912598 1720.555054 1719.522339 1716.97168 1716.020752 1716.796509 1717.937256 1715.576538 1710.748291 1700.517578 1691.135742 1683.363892 1674.009155 1666.830688 1659.786255 1658.026367 1665.700928 1673.308594 1671.091797 1675.851196 1685.447388 1695.237305 1703.9375 1709.783569 1711.476318 1711.972046 1708.960449 1694.749878 1683.455566 1675.478516 1671.581177 1671.80127 1676.549438 1678.206421 1670.947632 1660.152466 1652.591919 1649.095581 1644.270508 1629.450684 1611.901123 1619.789062 1630.335571 1630.572021 1620.326904 1612.236206 1603.504028 1586.019531 1569.453003 1562.159668 1570.341064 1577.130249 1582.893188 1589.16748 1586.886475 1585.548218 1581.796753 1576.57312 1566.850464 1559.238159 1554.867554 1550.830322 1545.994385 1540.248413 1531.773804 1523.906616 1521.113403 1518.361816 1515.771851 1513.335571 1511.230469 1519.582642 1523.907593 1522.710815 1519.292114 1519.472778 1524.654419 1528.738892 1534.013794 1541.435913 1551.614868 1563.48584 1577.365234 1580.047485 1577.021729 1570.946533 1566.218018 1561.908081 1556.892334 1551.384521 1547.198853 1557.382202 1571.195068 1582.817871 1596.290161 1603.092407 1607.066895 1607.76416 1610.605469 1620.063354 1625.788086 1625.971924 1625.497437 1625.783203 1623.946655 1620.901978 1628.044434 1641.009766 1649.696655 1647.450684 1639.358154 1633.88501 1638.207275 1646.605225 1649.453247 1649.475586 1649.12439 1648.401001 1648.505981 1648.599487 1648.545532 1648.383423 1647.212158 1641.280518 1634.259399 1628.388062 1622.878906 1622.178101 1622.060913 1622.208374 1623.389893 1623.069336 1621.589478 1618.863647 1614.618774 1612.767334 1613.179077 1614.271362 1620.070435 1622.504028 1617.279541 1611.886963 1597.580688 1600.221436 1605.565186 1610.825806 1610.952515 1607.493652 1598.85144 1604.043701 1607.929443 1610.135864 1611.794189 1612.557495 1612.924683 1613.43457 1614.234741 1614.66272 1614.224243 1611.231445 1608.978027 1600.794922 1585.163208 1585.027588 1598.547363 1604.598022 1610.827759 1620.046875 1630.089233 1643.322876 1649.915405 1650.945068 1649.549683 1645.984131 1640.858765 1637.638306 1637.396973 1637.283691 1639.232544 1642.818237 1646.838013 1653.065186 1658.091797 1662.912476 1667.4021 1670.033569 1672.12085 1670.608765 1670.897827 1668.136108 1662.545532 1656.112915 1649.546265 1638.846558 1626.296875 1614.567627 1605.055542 1595.587646 1586.365234 1580.86731 1573.030884 1570.649658 1566.502197 1562.572998 1563.380981 1568.631348 1575.920898 1583.294678 1589.88916 1596.706177 1604.060059 1610.127808 1616.939209 1621.213501 1621.585571 1621.288696 1621.096558 1621.385254 1621.70752 1621.693604 1620.828369 1618.699707 1616.025879 1613.342041 1610.367065 1603.056274 1595.498901 1587.327271 1579.354004 1571.845337 1562.725098 1556.245605 1551.026978 1544.293579 1538.105103 1532.206665 1527.292236 1521.383545 1514.582764 1507.439941 1500.357788 1491.577759 1494.770142 1496.918335 1505.501831 1517.453735 1530.781006 1539.924805 1548.326782 1548.447021 1543.754028 1538.374512 1532.9552 1527.258179 1521.90625 1517.341553 1511.563477 1502.503662 1497.456421 1493.595459 1489.57373 1484.15686 1477.468994 1468.80957 1461.719604 1456.615356 1453.545044 1451.988525 1454.512207 1456.344116 1456.850952 1458.063232 1460.368408 1462.469604 1464.309692 1465.185669 1466.449707 1467.774658 1468.727295 1468.70813 1470.55542 1469.248047 1462.230225 1464.324585 1463.879517 1459.673096 1451.151245 1437.649292 1437.886597 1430.978638 1422.51062 1414.260986 1423.409668 1437.916992 1441.928589 1444.366211 1449.443481 1451.73938 1450.216919 1443.897461 1424.648315 1411.830444 1404.111206 1389.091431 1390.751343 1396.321411 1398.447021 1396.126587 1392.495483 1391.106079 1390.81665 1384.816528 1379.414917 1374.018555 1369.641602 1362.630859 1357.66626 1355.856323 1354.004028 1350.051758 1345.51416 1342.504517 1350.982422 1351.975464 1356.631958 1359.65332 1363.155029 1367.877808 1371.206055 1367.109253 1359.087891 1353.80896 1354.505859 1357.475586 1363.313232 1366.710693 1379.346924 1388.60437 1393.791748 1398.217285 1401.403809 1413.893921 1418.409668 1417.875366 1418.200195 1421.170288 1423.778564 1425.609619 1425.715576 1424.542114 1421.928711 1418.581177 1416.115845 1415.053833 1413.380615 1409.624634 1407.210571 1406.7052 1406.379028 1406.594727 1408.618652 1410.500854 1411.510864 1411.766479 1413.093018 1415.499023 1418.366699 1421.334961 1423.402954 1424.577881 1425.454468 1425.917847 1426.353271 1426.566162 1426.752808 1427.029419 1429.547852 1430.89209 1431.923828 1432.748779 1433.50061 1434.134888 1434.42334 1434.355225 1433.754272 1432.550781 1430.799316 1427.338013 1426.971069 1426.929443 1426.658325 1426.408813 1426.214966 1425.533203 1424.775269 1424.540039 1425.398682 1427.071167 1427.844849 1427.756104 1427.074341 1425.841797 1424.921753 1422.364014 1418.6604 1415.074341 1408.372681 1403.053467 1401.971313 1400.079346 1398.865967 1397.866455 1394.730835 1390.891846 1388.698364 1387.363159 1385.986084 1384.56897 1383.10498 1381.601929 1380.78772 1378.663452 1377.970703 1377.636841 1376.843262 1380.501221 1381.49707 1384.552246 1386.673706 1386.579956 1389.397949 1395.294678 1399.785767 1399.935181 1400.549072 1404.618164 1406.544312 1406.602905 1405.757446 1404.227417 1403.622437 1403.982056 1399.099487 1392.748535 1387.664185 1381.366333 1376.71228 1371.160156 1367.629517 1370.915894 1378.704346 1385.826416 1386.769287 1377.903809 1378.420044 1382.043457 1384.154053 1383.169312 1386.844727 1391.184814 1391.892944 1391.419678 1382.521606 1378.733154 1382.653809 1385.347778 1385.616699 1383.359863 1381.791382 1378.648926 1380.310425 1387.224854 1388.828125 1388.667236 1387.186401 1384.143677 1381.200562 1378.802124 1372.929077 1367.321899 1366.541626 1367.126221 1366.439697 1363.974243 1357.416016 1350.707886 1350.462524 1349.282837 1355.899902 1361.002808 1359.508179 1358.010498 1361.52002 1365.860596 1367.422119 1365.465576 1368.329346 1375.953857 1375.740723 1372.559692 1367.858154 1364.313965 1362.260864 1359.580444 1356.377319 1352.683472 -1664.987061 1663.341553 1655.826416 1645.169189 1634.612793 1627.046265 1621.280151 1611.908569 1602.38855 1591.420532 1575.367676 1568.552734 1589.820557 1605.522705 1616.06897 1629.643433 1645.079468 1657.274658 1664.043701 1668.210938 1666.62793 1659.565796 1652.229492 1645.415894 1634.120728 1625.354126 1620.050415 1625.161377 1635.782837 1639.532471 1642.923462 1648.491821 1649.310425 1648.858032 1650.456665 1663.204834 1675.01001 1683.264771 1691.605591 1693.54895 1687.192627 1687.074951 1699.857544 1709.991943 1717.581421 1731.123657 1745.906006 1752.273071 1758.538818 1766.639771 1772.392578 1778.044922 1779.543091 1779.224121 1778.940796 1778.831787 1779.165283 1779.591064 1779.167236 1776.89624 1773.948853 1770.812744 1767.098389 1762.506836 1757.427856 1746.559326 1741.796143 1748.948975 1757.743652 1762.890259 1761.313843 1757.094849 1747.373535 1737.831909 1724.529053 1714.9646 1709.068481 1718.783447 1728.888916 1734.879761 1739.469727 1741.067139 1739.969238 1736.46875 1732.041138 1723.011353 1711.996948 1702.368164 1694.985107 1689.848999 1692.950195 1702.774414 1710.473877 1716.515991 1725.618042 1734.081299 1734.487549 1733.915405 1732.814453 1732.155762 1731.197021 1729.132324 1725.274658 1722.471924 1721.820557 1722.361084 1722.641968 1722.602539 1721.635132 1721.835815 1721.455444 1721.490601 1715.963623 1708.393677 1694.888672 1686.68396 1679.091553 1669.665771 1663.399414 1661.348633 1670.099609 1676.170166 1679.962646 1678.541992 1680.821167 1686.900024 1697.073975 1705.601074 1710.047119 1710.584717 1710.219849 1707.372803 1697.815674 1685.418701 1671.303223 1662.408081 1660.871582 1665.533447 1669.575684 1664.490356 1654.188965 1643.872314 1638.789307 1633.896851 1623.035645 1600.527832 1606.889038 1619.001099 1618.648071 1608.802368 1599.61792 1600.318848 1585.262085 1565.34314 1557.720947 1561.65564 1566.492432 1575.128418 1577.451782 1573.202026 1577.154663 1573.263794 1569.929688 1558.205811 1547.664185 1544.517212 1541.427124 1538.089966 1533.782349 1527.923096 1522.762573 1519.093384 1516.437256 1514.366211 1511.694214 1519.038452 1526.918823 1527.362305 1526.296387 1524.55835 1521.142822 1525.708374 1529.76355 1534.323486 1542.180054 1552.43457 1563.279907 1577.312988 1587.154785 1586.368164 1581.996582 1575.869141 1571.610474 1565.413696 1558.787598 1552.162109 1556.009521 1567.283447 1580.226196 1593.141602 1606.927246 1617.86084 1625.132324 1626.101318 1628.602539 1631.464233 1633.084106 1632.382935 1630.8302 1629.956177 1629.052856 1635.442627 1646.268311 1651.886475 1650.15918 1644.438965 1644.611694 1644.008179 1649.024048 1650.464233 1650.11084 1649.477295 1649.012939 1648.507202 1648.527344 1648.963745 1648.948242 1648.164307 1643.798706 1636.010498 1631.938721 1628.13623 1626.173706 1626.382202 1626.771973 1627.305908 1626.387817 1625.031372 1622.950806 1620.868042 1619.480347 1619.649048 1622.38208 1623.409058 1622.162598 1614.446777 1608.186523 1608.475464 1608.214233 1612.945068 1616.908447 1617.438721 1614.220093 1609.050293 1611.919312 1612.067139 1612.301514 1612.923584 1612.822998 1612.548096 1611.780396 1610.783081 1608.928467 1605.61792 1601.179443 1596.552979 1595.355957 1588.303223 1584.242798 1598.164307 1604.217529 1610.729248 1619.218018 1628.326782 1640.157104 1648.983154 1650.72168 1651.406006 1650.07373 1647.644043 1644.325562 1641.756714 1641.434204 1645.025513 1647.275635 1651.021851 1656.895874 1658.967041 1663.531128 1669.461182 1672.057983 1671.446533 1660.912109 1662.812866 1661.571045 1659.224121 1656.661621 1649.951294 1644.716553 1631.961548 1619.53125 1607.63623 1598.464478 1588.27478 1580.531738 1574.245117 1565.007446 1563.591797 1562.543213 1564.737793 1571.273071 1578.534912 1586.246094 1594.168213 1602.882446 1610.705811 1613.342773 1616.604858 1619.055908 1619.992432 1620.189819 1620.473755 1620.591919 1620.633545 1620.194092 1619.264526 1617.297729 1614.791504 1612.228638 1608.774902 1601.066772 1593.078613 1585.171997 1576.47229 1569.379639 1560.922241 1554.92981 1548.68396 1542.905396 1536.671875 1531.375244 1525.930298 1519.242798 1511.770264 1503.78894 1497.694702 1491.103882 1485.947144 1488.709717 1495.407593 1502.956787 1510.875 1520.569092 1535.082275 1542.404663 1542.928345 1540.494141 1537.198486 1531.702515 1526.202637 1521.091919 1516.431763 1510.524536 1502.548462 1497.802368 1493.853149 1489.973267 1485.027344 1479.003174 1471.936157 1465.673096 1458.977905 1452.012939 1448.946045 1449.987793 1450.300049 1450.789062 1453.302979 1455.317017 1456.534668 1457.401855 1458.938843 1459.81958 1459.666138 1459.36438 1460.339111 1458.07251 1451.630127 1452.764648 1454.83606 1452.857178 1444.67041 1428.860962 1418.692871 1411.954834 1412.192871 1402.620728 1409.450562 1421.532349 1424.97522 1421.670288 1429.531006 1439.688965 1441.472534 1435.503784 1422.692749 1409.483765 1397.013794 1388.865112 1387.42627 1387.519043 1386.719849 1385.919067 1384.486572 1381.107666 1378.191162 1373.574341 1368.636108 1364.097412 1359.544434 1353.378418 1350.270386 1346.471069 1344.114868 1345.461914 1349.647217 1349.596191 1356.054199 1358.351929 1361.167236 1364.376465 1371.884277 1386.489624 1385.900513 1376.012085 1362.41333 1354.378052 1353.874023 1355.516602 1360.04248 1364.12207 1370.029663 1378.809082 1384.011841 1386.67749 1393.673828 1404.186157 1411.322266 1415.597534 1419.913574 1425.042603 1428.589233 1428.929565 1429.068115 1429.011597 1427.235229 1423.962036 1421.896362 1420.082764 1417.814575 1414.526367 1412.165283 1412.67688 1412.098022 1411.505981 1410.97937 1411.319092 1411.902832 1412.370239 1412.449219 1412.84375 1412.970337 1413.726807 1416.430176 1419.653809 1422.489502 1424.188843 1425.282715 1425.896851 1426.627075 1427.277588 1428.962769 1430.464111 1431.500977 1432.450806 1433.39978 1434.050903 1434.459595 1434.571045 1434.18396 1433.214722 1431.503174 1429.220825 1427.409058 1426.776489 1426.245117 1425.872925 1425.380127 1424.351929 1422.859741 1421.219604 1420.743164 1422.159668 1423.012329 1423.062012 1421.794189 1419.30249 1418.556641 1417.366333 1414.028931 1409.380859 1404.751099 1400.360107 1398.545654 1397.096069 1395.6427 1394.024292 1391.904541 1388.924316 1387.032837 1385.376709 1384.302246 1383.675659 1383.546997 1383.025757 1381.627075 1379.469849 1379.141602 1382.412476 1385.830322 1387.593384 1388.137207 1392.135864 1394.581543 1393.864014 1395.825073 1402.242432 1405.389282 1404.146362 1404.509766 1407.499756 1408.101562 1407.585693 1406.564819 1405.211914 1404.481079 1403.789062 1401.157837 1392.53894 1387.849487 1381.605469 1376.483398 1369.234863 1371.494263 1377.776978 1386.879272 1391.72876 1387.988647 1378.783447 1384.201172 1390.249878 1390.784546 1388.331787 1391.282349 1395.817749 1397.839233 1395.623779 1387.533081 1386.267212 1388.325684 1391.071045 1391.436523 1388.932373 1388.343872 1385.647461 1388.8302 1391.480103 1391.708496 1391.343872 1390.214111 1389.527954 1385.672485 1380.161133 1376.283203 1373.332642 1373.075195 1372.552124 1370.150391 1367.054932 1360.108521 1358.005127 1358.283081 1356.226562 1360.565796 1367.924316 1368.978882 1365.821045 1365.830688 1365.459229 1369.09668 1371.810425 1375.872803 1379.530029 1380.370239 1378.542603 1373.220093 1368.925537 1367.77356 1363.561401 1359.205688 1356.475342 -1664.422974 1672.508301 1668.460938 1658.392456 1648.079712 1645.718994 1640.890137 1633.868774 1624.103516 1611.088379 1596.60144 1582.402588 1575.943604 1589.638794 1605.719482 1616.543335 1628.488159 1638.571289 1648.337036 1649.955566 1648.092529 1642.27478 1633.463867 1627.932373 1623.742676 1618.175659 1627.71167 1638.493042 1645.261597 1647.953125 1648.684082 1651.783325 1654.256226 1656.204346 1654.47168 1654.170288 1658.427002 1669.783936 1677.778442 1677.417603 1674.20105 1687.208374 1698.514771 1709.430908 1720.989258 1738.570068 1751.732422 1759.103394 1765.654785 1774.520264 1782.591553 1788.55249 1791.597046 1791.177124 1790.787109 1789.954834 1788.530396 1786.590576 1783.396729 1779.849731 1776.511841 1772.841431 1768.715576 1763.535156 1758.165405 1748.013916 1746.739014 1756.266357 1765.953369 1769.502197 1763.540161 1756.779175 1747.583618 1737.939209 1727.169189 1717.843994 1716.769897 1728.86377 1736.379517 1742.055176 1743.53125 1742.516113 1739.02063 1732.66272 1726.176758 1717.061157 1709.200073 1702.302612 1695.609375 1690.205078 1695.291504 1704.468018 1711.908813 1718.321045 1727.690918 1734.442749 1734.545044 1734.199219 1733.617554 1733.388794 1732.907593 1730.322266 1722.725342 1719.209106 1718.99707 1721.369141 1722.948608 1721.841431 1719.741333 1719.432983 1718.917847 1716.311401 1709.874512 1701.356079 1690.859497 1682.518555 1676.071655 1668.584106 1663.494019 1675.423462 1682.379883 1685.611816 1687.328857 1686.038696 1685.89563 1692.75061 1700.481323 1708.620239 1707.366821 1703.735352 1702.583374 1699.986572 1693.395874 1680.661255 1666.433228 1654.546875 1650.577759 1654.643921 1659.462036 1658.984863 1647.594604 1635.411499 1629.13208 1625.654785 1617.490356 1596.878296 1595.139526 1607.566162 1608.400879 1597.910278 1590.291748 1587.905884 1584.834839 1567.199829 1553.798462 1552.200073 1557.60083 1566.788574 1566.458984 1562.452026 1573.132324 1565.42395 1558.483032 1549.444946 1539.647827 1536.767456 1534.141968 1532.196777 1528.920898 1525.009521 1521.304077 1517.33728 1515.457031 1517.180176 1522.769287 1527.175659 1529.796387 1530.449829 1529.630127 1527.59082 1525.091064 1525.533691 1529.887329 1534.85791 1542.712036 1552.141113 1562.005371 1574.14209 1584.788086 1589.88562 1590.430298 1587.299805 1581.243652 1575.564941 1566.874146 1558.668701 1558.407349 1566.736084 1578.474243 1591.595825 1605.034302 1619.190552 1630.301758 1635.651123 1637.830688 1640.533325 1641.404663 1640.36438 1637.444946 1637.046997 1637.704224 1643.362183 1652.188599 1657.130371 1654.06958 1650.356934 1649.884399 1649.806274 1650.829956 1650.896484 1650.265381 1649.595581 1648.465088 1646.996216 1647.359619 1648.448242 1649.320679 1649.34375 1647.364502 1641.187744 1635.989624 1632.073975 1630.223145 1630.582275 1631.211792 1631.292603 1629.670044 1627.587036 1625.526367 1624.400513 1623.89209 1623.987793 1624.263428 1623.500122 1621.454834 1618.850342 1617.161011 1618.422729 1617.647217 1620.419678 1622.814087 1623.042725 1622.639404 1619.22876 1616.082397 1615.015259 1614.279663 1613.639648 1612.93689 1612.000854 1610.496948 1607.999878 1604.486328 1599.55481 1596.266357 1596.233521 1596.095825 1593.723389 1587.254761 1596.605957 1603.268311 1610.244019 1618.115601 1628.442871 1639.504883 1647.864502 1650.618774 1651.992432 1653.064331 1652.761841 1649.69104 1645.951416 1644.047852 1648.496826 1654.571655 1660.831909 1664.817993 1667.37207 1669.834106 1672.022339 1672.541382 1664.813965 1654.890137 1651.567017 1652.077148 1649.005981 1651.642578 1646.714966 1634.341187 1623.257568 1613.705688 1604.498169 1595.390015 1586.131104 1578.585571 1572.463135 1564.777344 1561.393921 1562.618164 1566.284912 1572.880371 1580.156494 1587.901855 1597.305908 1608.508667 1611.998413 1614.160522 1616.183594 1617.916382 1618.921509 1619.424683 1619.588379 1619.722168 1619.422363 1618.977173 1617.942871 1616.255859 1613.908081 1610.880493 1605.922241 1597.738037 1591.62085 1584.296753 1575.687378 1568.365234 1560.620728 1554.85791 1547.864136 1542.285889 1535.621094 1530.969971 1524.113525 1516.774292 1510.600464 1504.560913 1499.316772 1492.855713 1485.884399 1483.162598 1486.270996 1489.489258 1499.047974 1510.852905 1519.684082 1532.088257 1540.626099 1541.129517 1539.445557 1536.061279 1530.070679 1524.604492 1520.150269 1515.070435 1508.183472 1501.835449 1497.366211 1493.19165 1490.291016 1487.419434 1481.788696 1475.303589 1468.739014 1462.812134 1454.832031 1446.795532 1445.275513 1446.003296 1446.687988 1448.394653 1448.983521 1449.527588 1452.206787 1453.515137 1453.539917 1450.585693 1449.460938 1446.130493 1441.464233 1441.527222 1444.289307 1443.046509 1438.890625 1426.481201 1408.351074 1398.708374 1398.783203 1390.352051 1396.824951 1404.229858 1407.662842 1406.528076 1411.61731 1421.705566 1426.451904 1424.363525 1415.788696 1405.2677 1392.356201 1387.223267 1384.604004 1382.785767 1381.83728 1381.253418 1380.339111 1374.271606 1364.973877 1359.671265 1354.023926 1350.071655 1347.170776 1345.62793 1348.517212 1353.078369 1355.703735 1356.526855 1357.14563 1355.972046 1358.045776 1362.654541 1365.615112 1371.091797 1386.041748 1398.811157 1393.258789 1379.761719 1362.883789 1354.164307 1358.662964 1357.326294 1360.195801 1363.079224 1364.310181 1366.365601 1375.135254 1378.910034 1386.838867 1394.066406 1398.560669 1401.273926 1411.329224 1418.256836 1422.985352 1425.593384 1428.185303 1430.150513 1429.460327 1428.297974 1427.352051 1424.740234 1422.016846 1418.505493 1416.871094 1417.230347 1417.024658 1415.897095 1414.15332 1413.130981 1413.833984 1414.913208 1413.739136 1413.48999 1413.914551 1414.069458 1414.998901 1418.095337 1421.551147 1423.580688 1424.898682 1426.434692 1427.617676 1428.362305 1429.369629 1430.4823 1431.651978 1432.582886 1433.626953 1434.424194 1435.026245 1435.208862 1434.85376 1434.080322 1432.818848 1431.082275 1428.942017 1427.498779 1426.112793 1425.960083 1425.285645 1423.901367 1421.496338 1417.451416 1415.527466 1416.890137 1416.924805 1417.38855 1417.414551 1413.289185 1412.319824 1411.184326 1406.868896 1402.677368 1400.936157 1398.350952 1395.945557 1394.731323 1393.177368 1390.900024 1389.602051 1387.602051 1389.459717 1389.08728 1388.078125 1388.645874 1389.699463 1390.36853 1388.480225 1388.327637 1392.922119 1394.148438 1395.756348 1394.228394 1393.502563 1399.168457 1403.083618 1403.232056 1401.351318 1406.756958 1409.254272 1409.654419 1409.733887 1410.351196 1409.803833 1408.360352 1406.435059 1404.364014 1403.231934 1400.28479 1393.078369 1388.496582 1384.853638 1380.308105 1375.065186 1370.708984 1377.287598 1384.032593 1392.2771 1392.581055 1388.276855 1387.089722 1391.223511 1394.497314 1394.55249 1390.785034 1393.473877 1399.737061 1403.557373 1400.129028 1391.786133 1391.448242 1394.640503 1397.828369 1397.498657 1395.589844 1394.078979 1390.898071 1393.194702 1396.419678 1397.568604 1397.105103 1395.353271 1393.069458 1390.033447 1385.828369 1381.072388 1378.569458 1379.774048 1378.248047 1370.638672 1365.13269 1366.729614 1367.644897 1365.403076 1362.805298 1364.885254 1368.216064 1371.731689 1373.307007 1372.868408 1371.338867 1371.228882 1373.798096 1378.804199 1381.021118 1381.804565 1378.559692 1373.130493 1369.175049 1366.057007 1362.444214 1358.713013 1356.230835 -1652.505371 1662.328125 1668.634155 1673.794922 1668.407227 1666.780273 1663.768555 1654.486816 1645.251587 1631.786865 1614.040405 1601.367432 1595.001587 1580.4729 1586.74353 1601.959106 1613.747681 1621.775024 1627.082031 1630.468262 1627.530884 1618.297852 1614.348145 1615.940308 1615.218018 1624.838867 1638.076904 1647.770264 1652.921021 1655.538818 1656.232422 1655.898926 1657.626709 1662.841431 1663.888306 1664.393188 1661.296875 1660.870972 1666.185181 1666.339966 1667.654541 1678.213257 1695.964844 1706.163818 1721.043335 1739.545044 1754.594971 1765.651367 1776.158325 1786.208374 1794.852783 1804.535522 1805.284668 1803.97644 1802.247314 1800.156616 1797.050415 1793.320068 1788.161133 1782.770996 1778.554321 1774.598877 1770.252441 1764.914062 1758.755981 1753.638184 1752.901245 1759.302856 1767.028809 1769.624878 1762.863403 1755.838135 1747.765869 1738.763794 1729.032349 1719.768677 1723.807617 1734.460815 1742.065918 1746.248047 1746.051514 1744.466064 1739.165283 1731.839478 1723.174194 1715.736694 1708.081421 1702.73999 1697.969849 1691.538086 1696.057007 1705.213379 1712.965576 1720.583374 1729.114136 1734.404053 1734.470459 1733.956543 1733.105469 1732.802002 1733.251831 1728.164917 1719.522095 1714.969238 1712.597778 1716.584961 1721.716553 1719.793579 1715.653442 1712.551514 1711.344604 1709.490479 1704.262085 1695.639282 1687.26001 1680.255493 1674.557373 1666.462524 1672.15564 1684.218994 1690.657349 1694.371582 1694.79248 1694.206543 1695.095947 1697.084106 1702.829956 1707.030762 1698.490601 1692.263428 1691.687988 1690.72229 1684.661987 1676.397095 1662.383057 1646.74292 1640.587891 1643.034424 1648.847412 1649.486816 1643.119751 1631.055908 1619.769897 1617.723755 1611.635254 1594.654297 1582.075562 1596.395752 1601.466309 1582.659302 1579.754639 1576.286255 1575.989746 1566.555664 1553.862915 1547.462158 1550.57605 1555.890015 1553.878784 1554.485962 1563.411621 1555.440063 1544.869141 1539.341675 1534.409668 1531.527832 1528.866455 1527.342163 1524.928955 1522.210327 1519.518921 1517.353394 1523.792114 1526.814941 1529.054565 1532.136841 1534.394897 1534.771851 1533.26709 1530.109009 1527.341309 1525.911499 1529.731079 1534.661743 1541.818237 1550.766968 1560.662354 1570.616699 1581.045654 1589.850952 1596.644409 1595.812256 1589.617798 1582.530884 1575.412109 1565.089355 1558.48645 1566.101685 1577.921875 1587.933594 1599.853394 1613.399048 1627.357544 1640.976196 1647.938232 1649.754272 1649.924438 1649.883911 1647.180664 1647.564941 1652.352661 1656.483765 1660.859985 1661.972168 1657.969116 1655.064453 1654.387329 1653.025269 1652.030273 1651.10791 1650.182007 1648.756104 1646.800537 1644.394287 1642.885742 1645.497192 1648.741577 1649.341431 1648.807617 1646.208496 1639.995972 1634.36731 1633.611206 1634.397339 1635.172607 1634.815186 1632.415771 1629.515869 1627.246582 1626.129272 1625.565186 1625.279175 1625.086304 1623.770264 1621.554321 1622.603516 1623.207886 1623.339233 1623.276245 1623.956909 1624.323242 1624.22644 1623.632202 1622.19519 1619.644287 1617.158936 1615.382324 1613.990845 1612.71582 1610.754761 1608.983765 1606.6604 1603.055542 1598.379395 1598.053467 1597.998291 1599.46875 1599.134766 1595.316284 1592.178101 1600.444946 1605.976929 1612.553223 1625.498535 1635.52063 1643.13623 1647.772583 1649.460205 1655.094116 1657.990967 1657.045532 1653.203979 1648.451416 1653.526367 1662.23877 1669.94458 1677.414307 1683.944458 1683.944824 1675.31189 1663.08728 1651.711548 1645.457886 1641.324463 1639.520874 1642.222168 1648.888916 1647.189697 1635.733032 1622.576538 1612.255249 1603.06311 1592.831299 1583.165527 1575.002808 1567.933105 1562.463135 1559.435913 1560.943359 1565.668701 1572.796021 1580.740234 1589.803223 1599.519287 1610.19043 1612.674561 1614.412598 1615.999268 1617.310059 1618.278931 1618.718628 1618.87207 1618.86145 1618.631958 1618.186646 1617.276611 1615.772949 1613.406006 1610.636963 1605.009033 1597.299194 1591.496216 1585.008301 1577.801392 1571.02124 1564.113892 1557.911743 1551.727661 1545.758545 1538.901611 1532.801025 1526.904907 1520.551025 1513.049561 1507.947388 1500.876587 1495.509277 1490.007446 1482.579346 1479.897461 1483.64917 1490.07251 1495.989502 1505.493286 1516.590576 1529.888916 1539.485962 1540.090454 1538.59668 1533.939941 1528.376709 1523.557251 1518.171753 1511.803711 1505.631592 1499.864868 1494.976929 1488.366455 1488.803711 1488.748779 1485.758057 1478.917114 1472.686279 1467.636841 1460.974854 1450.877686 1441.741333 1439.300415 1440.871704 1441.472778 1440.979858 1443.643799 1445.376099 1445.286133 1442.645508 1436.144897 1429.86792 1429.448364 1427.125 1426.505127 1430.334595 1424.969971 1416.036377 1404.08667 1394.843872 1384.055908 1378.435791 1382.652466 1388.561768 1389.458374 1391.376465 1400.376709 1406.406128 1411.282837 1409.823486 1404.165649 1395.478027 1388.104614 1384.227661 1381.549438 1379.983521 1371.837524 1367.977539 1362.328857 1354.637451 1351.194458 1347.838623 1346.515259 1347.661377 1351.707397 1355.745972 1357.097656 1358.743896 1360.170044 1360.789551 1361.457764 1362.468506 1364.196045 1365.724854 1370.506592 1375.730347 1393.316284 1404.921021 1394.994995 1378.115601 1361.400269 1357.792114 1376.070801 1379.876831 1371.204956 1364.726318 1363.255981 1363.300171 1365.720947 1373.157593 1378.459839 1383.871094 1388.102295 1389.614258 1398.526123 1406.189575 1409.87561 1412.473755 1418.891846 1425.439819 1429.484985 1429.837402 1429.479858 1428.272461 1425.935791 1422.901001 1422.071289 1422.086792 1421.75769 1420.356567 1418.570312 1416.941895 1417.661865 1418.918945 1418.64624 1418.102295 1417.508423 1417.287964 1418.012817 1419.95813 1422.171265 1423.996826 1425.485596 1426.92981 1427.753784 1428.762451 1429.829102 1430.978638 1432.099487 1433.1698 1434.253662 1435.146484 1435.769287 1436.008545 1435.833618 1435.229492 1434.120117 1432.61499 1430.516357 1428.40625 1426.975952 1427.081055 1426.991455 1425.426758 1422.373535 1418.415771 1415.224243 1413.736206 1414.010864 1413.768677 1413.596924 1410.166626 1404.843628 1403.358643 1401.576416 1399.926514 1397.944214 1395.346924 1393.580444 1392.381836 1391.336792 1390.847534 1391.465332 1391.478638 1393.946777 1393.40918 1393.569702 1395.14917 1397.004028 1398.142334 1396.552612 1395.812012 1400.249634 1403.593872 1404.720825 1402.878662 1400.673218 1405.590698 1409.046509 1409.112061 1408.842529 1412.317871 1414.105713 1414.33313 1413.544922 1412.921021 1411.448364 1408.920654 1405.668823 1401.881714 1399.714966 1392.117554 1388.703613 1385.750854 1380.968872 1377.496216 1373.037354 1374.445557 1383.859497 1391.105103 1399.509766 1396.204468 1389.446289 1389.289673 1393.385986 1398.440308 1400.055908 1398.89209 1398.572266 1401.739014 1404.235962 1403.199951 1402.256226 1402.243042 1403.091919 1404.456055 1403.730591 1401.568481 1401.212769 1399.715576 1400.508667 1402.770508 1403.718872 1403.467041 1400.895752 1394.709106 1392.937622 1390.893311 1387.009033 1384.253906 1381.392212 1378.067505 1375.095215 1374.261475 1375.45166 1375.967041 1371.797607 1366.358398 1365.19519 1369.053223 1373.186157 1378.179321 1379.889526 1377.828003 1369.178711 1366.615479 1371.963501 1376.08728 1373.555542 1369.271118 1366.93335 1363.61499 1360.51355 1358.300049 1355.673828 1352.869873 -1639.049316 1644.306152 1653.654175 1665.765503 1677.349609 1686.245728 1684.486938 1679.210449 1667.290039 1651.578491 1632.730713 1619.805786 1615.680298 1605.732422 1588.571655 1584.961792 1592.992798 1599.85022 1601.543701 1600.325562 1605.25647 1605.219604 1609.702026 1616.306763 1622.474976 1632.475342 1644.494873 1654.887207 1661.258789 1665.73877 1665.463745 1660.098389 1663.020752 1672.805786 1677.419678 1677.12207 1673.318604 1667.917236 1667.780396 1671.692627 1671.760986 1668.658325 1686.906128 1701.385742 1716.255371 1733.962036 1748.712158 1762.152466 1773.408325 1784.840454 1793.344971 1803.775879 1808.130981 1809.102417 1808.383545 1807.14502 1803.462891 1797.77417 1791.864136 1785.580322 1780.332031 1775.992065 1771.328979 1765.736694 1759.250732 1755.413818 1756.67334 1760.171631 1764.821411 1766.410278 1761.549438 1754.561157 1748.602539 1740.880127 1732.099243 1724.689331 1727.593994 1737.461426 1746.019043 1749.253418 1748.89917 1746.023315 1739.361328 1731.794434 1721.566162 1715.482178 1709.720947 1704.690308 1699.681396 1693.371338 1696.477661 1705.175415 1713.955811 1722.156982 1729.838013 1733.930664 1733.418579 1732.006104 1729.784058 1728.131714 1730.263184 1726.299927 1718.570435 1710.665894 1705.909912 1709.13208 1716.977783 1717.767456 1710.618042 1705.243896 1703.931519 1702.267212 1697.771973 1690.78064 1683.501831 1677.907471 1672.836426 1667.095459 1679.002563 1693.263794 1702.096191 1707.813477 1708.102905 1703.915405 1699.745239 1696.993408 1697.841919 1698.212036 1691.972534 1682.067139 1680.041138 1679.154663 1673.842407 1669.658813 1661.168091 1643.577637 1632.588257 1628.858276 1631.640015 1635.02832 1635.523438 1626.314575 1611.615234 1608.216919 1605.144531 1592.832275 1576.312622 1583.630249 1594.27478 1578.848633 1567.939575 1563.318848 1564.517456 1555.656494 1549.094727 1545.662231 1545.628906 1546.759399 1545.821777 1546.3927 1549.937012 1541.585205 1534.930664 1532.240723 1529.973877 1527.248901 1524.074097 1523.220215 1521.694214 1520.241455 1520.509277 1525.207275 1528.240601 1530.858887 1533.448364 1536.4823 1538.535889 1538.506226 1536.850586 1533.470947 1530.041016 1528.136108 1529.47229 1533.876099 1539.951904 1549.093018 1559.513306 1567.832764 1577.180054 1588.405151 1600.671021 1606.066162 1600.325928 1588.617188 1580.298828 1571.548462 1562.086548 1564.06665 1576.66748 1586.652222 1599.345459 1611.291016 1622.752686 1637.678101 1648.612427 1651.310791 1656.675415 1657.987061 1657.797363 1659.344604 1665.366699 1669.27417 1671.428711 1667.03833 1660.370239 1659.204346 1657.108276 1654.782593 1652.82373 1651.33606 1649.610718 1647.581909 1644.818359 1639.702271 1635.623901 1640.065918 1645.474609 1647.637085 1648.432983 1648.358643 1646.171387 1640.665649 1637.522705 1636.389038 1635.998169 1635.119507 1632.655273 1629.345947 1627.271118 1626.113647 1625.708618 1625.790283 1625.244385 1624.584229 1623.775024 1623.51709 1623.987549 1624.734741 1625.571655 1625.678711 1625.50647 1624.950195 1624.120239 1622.413696 1620.351196 1617.922607 1615.861328 1613.97522 1611.688477 1609.803467 1608.61438 1606.625 1603.99939 1601.735474 1601.241089 1601.147339 1601.570435 1600.980591 1599.213867 1596.692627 1599.985962 1611.384155 1612.968262 1620.026733 1625.576538 1633.411621 1641.377319 1646.299805 1657.474976 1661.629639 1664.745361 1664.283691 1657.432373 1662.842896 1675.411621 1685.036499 1686.316895 1683.736572 1677.610474 1667.674438 1657.708496 1648.029907 1636.538452 1634.767944 1631.416382 1634.423828 1640.900757 1638.984863 1630.401733 1621.591675 1613.76709 1604.702026 1594.079834 1584.204224 1575.187988 1565.369141 1558.407471 1552.674683 1557.782349 1563.083862 1569.973022 1580.602295 1590.391724 1600.772949 1610.375 1613.011108 1614.550781 1615.828003 1616.973877 1617.851929 1618.282715 1618.467407 1618.391357 1618.303345 1617.98291 1617.397339 1616.371216 1614.386475 1611.235596 1605.930786 1598.507935 1594.647095 1589.95105 1584.006714 1576.362915 1569.400513 1562.85376 1555.991943 1549.678833 1542.286621 1536.129517 1530.268066 1525.280884 1517.552979 1511.887451 1504.949341 1499.423706 1493.623291 1487.875 1477.518555 1476.924072 1482.36853 1486.956543 1494.348022 1504.875122 1516.848999 1528.761963 1537.593018 1538.673218 1535.344971 1530.888062 1526.880859 1522.019409 1515.991699 1510.134888 1503.22876 1497.069336 1490.019165 1487.73938 1488.206543 1488.914917 1488.629517 1482.832764 1476.271606 1472.108398 1465.842407 1456.879272 1444.765747 1437.616699 1436.281006 1435.798218 1436.192139 1436.420654 1435.259399 1431.876099 1424.526245 1413.993652 1415.02832 1417.012695 1411.752197 1407.703491 1406.076538 1402.114868 1394.894287 1388.5271 1380.712402 1378.120239 1374.615356 1372.559082 1374.403442 1378.814453 1390.888672 1394.651611 1395.96106 1393.869263 1390.823242 1386.899658 1382.944458 1380.302002 1379.395508 1363.103882 1354.442383 1352.039429 1350.106079 1348.015381 1346.889282 1346.71875 1350.344727 1354.444702 1356.953125 1359.301025 1361.438477 1363.178955 1364.602661 1365.063843 1365.168579 1367.621948 1369.705444 1373.120239 1376.684937 1384.633179 1398.294556 1400.373291 1391.334351 1373.620361 1358.80542 1371.528564 1388.452881 1392.132324 1386.450317 1382.41394 1374.666992 1363.588135 1364.994019 1367.670898 1372.159424 1374.736572 1375.987427 1378.980957 1388.18396 1393.654419 1398.077271 1402.779785 1407.05127 1411.893066 1421.340088 1428.491455 1430.308716 1429.852417 1428.349365 1426.091187 1426.392456 1426.942017 1426.871094 1425.765259 1424.000488 1422.457153 1422.510254 1423.578125 1426.091431 1424.859375 1421.843506 1420.86792 1421.486084 1422.63855 1423.810547 1425.093262 1426.001709 1426.610718 1426.962402 1428.616577 1430.143311 1431.502563 1432.663208 1433.840698 1435.020264 1435.920288 1436.600952 1436.84668 1436.821777 1436.412964 1435.698975 1434.285645 1432.408936 1430.380493 1429.032227 1428.578003 1428.233398 1427.623535 1426.704834 1422.163086 1417.833984 1414.760498 1414.591187 1413.867798 1411.021484 1405.110107 1402.300415 1401.855957 1400.218994 1398.253174 1396.34021 1395.719971 1396.168335 1396.492554 1397.166138 1397.584106 1397.129883 1396.552246 1398.205322 1399.606445 1400.692871 1403.344727 1405.929932 1406.69397 1404.274292 1401.929565 1406.963623 1410.597778 1411.403931 1408.384766 1406.607544 1412.313599 1416.12085 1416.38501 1416.528442 1417.394165 1417.480225 1416.915894 1416.390869 1415.085938 1412.475586 1409.046509 1405.813477 1402.760986 1398.41272 1394.409912 1390.914917 1384.446655 1380.114746 1375.138184 1372.848022 1379.276855 1390.853271 1399.258911 1404.783569 1396.699585 1388.880493 1390.234985 1397.67749 1403.112671 1404.036255 1402.762573 1401.790894 1403.258789 1405.21167 1405.146851 1405.070679 1405.386963 1405.469116 1405.616577 1405.5625 1405.365112 1404.853516 1404.417969 1404.487305 1404.905273 1404.393433 1400.567261 1393.825806 1391.861694 1392.948853 1392.87915 1391.229614 1387.704346 1382.15918 1377.828857 1378.654785 1380.151367 1380.632202 1380.21228 1378.401978 1371.440552 1369.00647 1369.298706 1370.012817 1373.901367 1374.957153 1370.86145 1364.575806 1355.295898 1362.071167 1366.196289 1363.964233 1357.553101 1356.11792 1353.132568 1353.094971 1352.787109 1351.991333 1348.96582 -1619.849365 1637.101074 1654.677124 1668.496094 1677.90332 1685.2052 1692.607788 1694.485352 1684.497437 1671.904175 1651.796387 1639.510376 1636.413574 1628.604126 1615.517822 1595.433472 1590.325439 1589.860229 1598.449219 1603.692261 1607.981079 1616.033813 1624.383789 1632.852173 1638.977661 1640.975586 1649.02356 1663.769897 1673.620361 1679.387695 1679.713623 1673.599854 1669.748413 1684.78418 1692.287476 1693.785645 1690.901855 1684.539673 1681.377808 1680.393799 1676.935791 1673.121704 1678.860596 1695.045654 1711.95105 1727.664185 1739.03894 1750.455322 1762.258545 1771.841797 1781.924805 1787.829956 1795.464478 1804.985962 1807.703735 1806.877686 1806.346558 1799.968018 1793.605591 1787.568481 1782.433228 1777.165161 1771.754517 1767.304443 1762.405396 1759.30603 1761.029297 1763.311523 1765.143799 1763.935425 1759.845703 1754.977661 1749.324463 1742.748291 1734.369507 1728.552979 1729.575684 1740.379761 1749.336792 1753.788574 1753.207764 1747.075439 1739.916626 1731.718018 1723.803711 1719.581665 1719.025513 1712.118896 1704.706055 1693.950195 1696.549438 1705.283936 1714.94165 1722.353149 1728.168091 1731.590698 1730.899414 1728.473511 1724.409668 1721.307007 1723.436279 1722.28186 1718.10376 1709.091553 1703.994995 1702.922729 1707.073242 1709.329834 1706.933228 1700.312744 1696.235352 1695.170654 1691.937134 1685.675171 1680.095215 1675.192627 1670.219116 1671.784546 1687.765503 1700.075317 1710.167114 1711.56604 1710.197266 1707.476074 1700.821045 1694.469482 1690.197876 1688.217651 1684.313965 1673.955322 1668.091064 1669.145996 1666.775391 1659.369995 1660.723267 1648.151245 1629.181274 1617.760254 1616.204346 1621.483521 1623.331177 1618.463867 1606.36853 1598.595459 1598.874023 1588.807983 1572.970215 1574.687256 1580.300659 1573.973511 1560.288574 1553.754272 1551.156494 1545.573975 1543.317261 1541.331787 1541.228516 1541.056641 1540.558594 1539.795288 1534.756348 1532.576538 1530.590698 1527.616577 1526.436157 1526.465332 1527.464844 1527.552856 1528.725098 1531.019653 1532.124756 1532.608032 1533.196777 1533.810059 1535.788208 1539.800293 1541.663818 1541.620117 1539.302368 1535.62854 1532.889282 1531.096924 1529.450684 1534.980591 1540.53772 1547.349121 1556.132446 1564.605103 1573.240845 1583.979248 1598.072388 1606.232666 1611.161377 1594.779663 1585.398682 1576.949707 1567.849121 1563.244385 1574.254272 1582.205322 1593.379517 1603.775391 1616.581787 1626.868042 1631.372437 1643.003296 1653.429565 1661.553467 1665.148682 1670.106445 1674.264648 1674.222168 1672.400146 1666.788452 1662.09314 1659.846436 1657.393066 1655.211548 1653.123535 1651.290527 1649.435669 1647.393066 1642.76001 1636.871826 1632.285278 1634.611694 1638.508545 1641.511475 1644.872803 1647.141113 1645.697266 1641.902954 1638.659302 1636.814819 1635.25415 1633.94397 1630.703613 1627.652222 1625.555664 1623.710571 1624.180054 1625.429688 1625.316772 1624.063843 1622.76001 1623.312134 1623.96875 1625.594482 1626.851318 1627.075562 1626.618286 1625.760376 1624.311157 1622.272949 1620.026123 1618.040039 1616.113159 1613.654663 1610.358398 1609.62439 1608.820312 1607.206421 1606.157837 1605.402466 1604.843872 1604.067017 1603.65271 1603.083618 1602.094482 1600.426514 1600.852661 1609.23291 1613.572021 1617.83313 1622.729248 1635.942871 1644.502441 1653.696655 1661.448975 1666.040405 1670.785767 1674.168823 1672.574707 1676.731079 1685.494995 1684.416138 1682.80896 1675.126709 1666.310913 1657.823853 1649.567871 1642.352295 1634.829956 1624.458618 1624.675049 1624.492065 1625.826782 1625.29187 1620.283081 1613.393311 1609.447266 1602.701294 1593.800781 1583.319458 1572.360107 1563.075684 1555.896729 1549.835815 1555.939575 1562.363403 1571.318726 1579.478149 1590.255371 1602.386597 1610.604614 1613.038818 1614.574707 1615.920288 1616.862305 1617.635742 1618.193115 1618.435425 1618.506836 1618.436768 1618.332275 1618.18689 1618.069214 1617.540894 1615.492554 1609.528809 1604.427856 1599.795654 1594.483765 1588.352905 1581.178711 1573.907593 1566.337524 1559.095215 1551.712646 1544.536621 1537.775146 1531.929565 1526.218506 1520.251221 1514.481812 1508.234131 1501.969482 1495.860352 1489.611084 1480.973145 1473.707397 1475.563477 1479.585327 1485.132446 1494.319214 1505.848267 1518.189819 1528.198975 1534.089478 1534.421143 1531.586426 1528.457031 1525.099121 1519.307129 1513.678955 1506.179199 1499.226685 1491.58728 1487.366089 1487.093628 1488.05188 1488.814209 1489.699707 1485.425537 1480.066772 1473.30249 1465.259644 1455.98645 1445.693848 1436.501221 1432.581055 1430.88623 1427.697754 1424.879395 1422.211304 1414.772827 1414.243164 1404.719727 1400.118042 1397.756104 1393.987671 1388.800781 1387.960571 1386.354004 1388.235352 1390.075317 1390.550781 1383.782593 1376.033203 1367.712158 1365.419922 1373.152954 1379.463013 1381.937256 1381.818481 1381.900513 1380.746704 1375.579468 1361.141357 1354.199341 1351.355591 1350.118042 1348.943848 1347.788696 1347.626709 1347.456909 1347.545166 1355.569946 1358.093262 1360.775635 1363.091064 1365.318848 1367.666138 1369.487915 1370.295532 1370.72522 1373.795532 1378.629395 1383.120605 1388.26062 1395.63147 1405.588745 1404.550537 1392.025635 1371.896973 1362.597412 1381.442505 1396.839844 1402.675659 1399.956909 1393.904419 1391.125732 1386.131836 1374.606079 1367.806274 1368.124512 1370.187744 1371.887573 1374.092285 1377.762207 1381.944092 1385.375122 1388.580322 1391.523071 1398.889526 1412.241821 1422.620605 1429.882324 1430.138794 1429.662842 1428.873535 1429.129028 1429.218994 1429.233521 1428.848755 1427.901001 1425.468262 1427.028809 1427.779175 1429.033936 1427.993042 1425.051147 1423.958984 1425.066528 1426.213989 1426.549316 1426.42334 1426.654663 1426.767456 1427.300903 1428.266602 1430.593018 1432.108765 1433.380981 1434.615234 1435.742554 1436.678345 1437.346191 1437.675049 1437.829346 1437.682007 1437.405762 1436.379883 1434.524536 1432.778442 1431.32605 1430.192993 1429.37915 1428.636963 1427.428101 1424.363403 1420.467773 1418.053101 1416.485352 1416.261597 1414.612305 1409.531006 1405.16687 1403.748535 1400.893677 1398.170166 1397.27478 1399.320068 1401.581909 1403.503296 1405.220337 1405.051392 1402.018311 1400.191162 1402.638062 1407.283936 1414.249756 1416.091064 1416.884155 1415.631714 1410.100952 1408.750366 1413.503418 1416.952637 1417.33252 1415.337524 1412.997437 1417.475708 1420.949707 1422.073242 1421.871216 1420.433594 1418.73877 1417.774902 1416.855103 1415.17627 1411.66748 1408.188843 1405.384277 1401.895752 1396.544434 1392.148071 1387.234985 1381.285278 1377.108765 1374.605103 1377.244263 1384.830566 1395.897461 1404.943115 1404.34375 1397.24292 1390.846558 1392.394409 1401.340576 1404.872314 1405.47937 1404.899536 1404.707275 1405.076294 1405.987671 1405.606445 1404.006592 1404.183716 1405.328247 1405.16333 1405.143311 1405.124023 1405.26001 1405.206543 1405.279907 1403.854126 1395.812866 1387.740601 1387.160522 1388.382202 1391.271484 1392.280029 1392.071533 1388.702393 1383.932983 1380.945801 1380.334473 1380.999634 1380.650757 1377.392578 1371.142334 1370.877686 1369.685791 1369.211914 1365.206299 1359.055786 1360.976929 1360.377197 1355.290283 1345.71106 1349.821045 1351.661133 1355.436157 1355.694946 1347.598145 1341.18396 1344.244141 1347.970459 1348.296875 1346.22522 -1624.415405 1641.907227 1657.37207 1669.806519 1678.279663 1684.379272 1696.349976 1698.408936 1697.807617 1685.147949 1669.337524 1658.725342 1655.984253 1649.975708 1639.419678 1620.494507 1614.42749 1621.118652 1625.753906 1624.660278 1622.317017 1631.307617 1640.077148 1645.805908 1653.87085 1657.453369 1660.446899 1675.919922 1688.702271 1694.479614 1695.12915 1691.835205 1685.214233 1700.285645 1706.583374 1708.211426 1707.737915 1701.80127 1698.826538 1690.880371 1682.536865 1677.085693 1674.630371 1691.610596 1708.616699 1719.289185 1733.020264 1739.062256 1750.850586 1760.955444 1769.862427 1779.21936 1785.655273 1791.500854 1796.809082 1799.366943 1800.213135 1797.960083 1793.294678 1788.318726 1783.226074 1777.924805 1771.921509 1767.207153 1765.06958 1763.865967 1764.925781 1767.44519 1768.910645 1766.48645 1761.62146 1756.045288 1750.129639 1743.594849 1735.296021 1729.797729 1730.36438 1743.701904 1752.882812 1758.096802 1756.893066 1750.402222 1742.920654 1736.186523 1730.796875 1727.426514 1724.873291 1720.435303 1706.402344 1694.625122 1700.771606 1707.08728 1715.499023 1722.220337 1725.789917 1727.076416 1726.740234 1724.717163 1720.649292 1717.14502 1716.855225 1717.890015 1714.481689 1708.573608 1702.343628 1696.498413 1697.185059 1701.978149 1700.452759 1695.069946 1690.828125 1688.819946 1685.647583 1681.234131 1676.765381 1672.686401 1676.215454 1685.208984 1694.953369 1706.238037 1711.600952 1711.932373 1710.782471 1707.765381 1700.426025 1692.791138 1682.118896 1674.251343 1670.125244 1665.253418 1659.132324 1656.506348 1655.399658 1646.901855 1648.653442 1648.273926 1627.556152 1607.145996 1601.62793 1603.733032 1604.956177 1611.197754 1602.392334 1589.890747 1586.849976 1584.107788 1572.689209 1560.890259 1566.169312 1558.836792 1550.838257 1546.520752 1543.944946 1539.031616 1536.831299 1536.859619 1537.060303 1536.942505 1535.259399 1533.441895 1530.601807 1529.44397 1529.34436 1529.990601 1531.612427 1533.898804 1535.086548 1536.276733 1538.647095 1540.206909 1539.776001 1538.622192 1537.13623 1536.05896 1538.027466 1543.456299 1547.312988 1546.252075 1542.224487 1536.823364 1535.309814 1536.704346 1532.723267 1533.534424 1539.918091 1545.472046 1552.311035 1559.818359 1568.726562 1579.289307 1590.270264 1598.104614 1602.915039 1597.814941 1589.73938 1582.351074 1572.955933 1570.35437 1571.408569 1577.919434 1587.001343 1598.116821 1606.745483 1614.69165 1623.072876 1634.837891 1647.816162 1658.759888 1667.0625 1673.5271 1675.203125 1674.794067 1669.499268 1659.967163 1659.348145 1658.863647 1656.925171 1654.640503 1652.47583 1650.890137 1649.036865 1646.761841 1641.276367 1635.466797 1630.140991 1626.724243 1630.742432 1632.464722 1638.907959 1642.228394 1640.424561 1638.391113 1637.426758 1635.987915 1633.647827 1629.538208 1625.427979 1623.532715 1620.684937 1619.138916 1619.569824 1622.306641 1623.768066 1621.111572 1619.242554 1619.412598 1622.939575 1626.106934 1628.22876 1628.481812 1627.88208 1626.205444 1624.404907 1621.775635 1620.020386 1618.539307 1617.249146 1615.316162 1612.572632 1611.802246 1610.291016 1608.626099 1608.954224 1609.333862 1608.077026 1606.6427 1605.680176 1605.837036 1606.783813 1605.61499 1602.357666 1609.588501 1614.217651 1620.041382 1627.064209 1638.068115 1647.497803 1657.277588 1664.960205 1670.910156 1674.543823 1677.499634 1680.815063 1683.867188 1682.108398 1675.115112 1674.97583 1671.891113 1665.01062 1658.556519 1649.427002 1643.047974 1632.106812 1625.307251 1615.25708 1612.432739 1614.931396 1613.903564 1608.757568 1604.347046 1600.992676 1598.127686 1589.436157 1576.719604 1565.859619 1557.784668 1551.853149 1549.571045 1554.213745 1559.830566 1567.710327 1580.320068 1594.051392 1606.843872 1610.826538 1613.059448 1614.660767 1616.061157 1617.100586 1617.993896 1618.683472 1618.974121 1618.947144 1618.858887 1618.907593 1619.52063 1621.178467 1622.27063 1621.915039 1615.124634 1609.278687 1603.084595 1597.963257 1590.685303 1584.328857 1576.980835 1569.448242 1561.379517 1552.724243 1545.379272 1538.401245 1532.551636 1526.605835 1520.965698 1515.159668 1509.175659 1502.765625 1496.590942 1489.222412 1483.708618 1477.741699 1469.686523 1472.603882 1478.382324 1483.762085 1491.859985 1504.452148 1517.188477 1526.735352 1531.421021 1531.145752 1529.282593 1526.486572 1521.729126 1515.485596 1508.610352 1500.628052 1493.465698 1488.037109 1486.297119 1485.437744 1486.378418 1488.300537 1489.796021 1483.952515 1475.281372 1470.116821 1464.549927 1453.457764 1447.322632 1443.20459 1439.605347 1434.239624 1431.467163 1428.578613 1427.58606 1424.927734 1421.821533 1418.369141 1411.945557 1407.736816 1405.510864 1404.056152 1403.960815 1405.055908 1406.029541 1399.227783 1391.17627 1377.210938 1366.025757 1362.166992 1363.481445 1365.973511 1369.421265 1371.462646 1365.632812 1357.229126 1353.320923 1351.676636 1350.520142 1349.696655 1348.727539 1348.413818 1348.221191 1348.053589 1348.473511 1353.085205 1357.881348 1361.636475 1364.393066 1366.935425 1369.788696 1372.97522 1376.416504 1376.726074 1375.630005 1379.1604 1385.868408 1392.401733 1398.814331 1410.065552 1412.977051 1405.608765 1392.858765 1371.962036 1365.923462 1384.808228 1399.935791 1408.376709 1409.085449 1404.675049 1400.215332 1396.055298 1389.73938 1384.263794 1383.281494 1382.401123 1380.152222 1375.809326 1374.41748 1375.523682 1377.488037 1381.39917 1385.2323 1390.510376 1403.305664 1413.922119 1426.904419 1430.154907 1429.782349 1429.872681 1430.160522 1430.202393 1430.097168 1429.950806 1429.387329 1428.047485 1429.319092 1430.092163 1430.167969 1429.614502 1427.832642 1426.910034 1427.40979 1427.711182 1428.064087 1428.050415 1427.74939 1427.429932 1428.392212 1429.673096 1431.167236 1432.737915 1434.061768 1435.358643 1436.434204 1437.475708 1438.273193 1438.507202 1438.42688 1438.932373 1439.166504 1438.93103 1437.139282 1435.157349 1433.246826 1431.761475 1430.591064 1429.248535 1426.557251 1424.394409 1422.622803 1421.096924 1419.178711 1417.865479 1415.998169 1411.901123 1406.976562 1404.489868 1401.276245 1398.322998 1400.843018 1403.864258 1408.314575 1413.27002 1415.38147 1414.121826 1406.684937 1401.5896 1405.909302 1414.590454 1422.035156 1425.201538 1425.696289 1421.629028 1414.911255 1413.191895 1416.969849 1420.567871 1421.566406 1420.842285 1420.449829 1422.975342 1426.442261 1427.61438 1426.250977 1422.104248 1418.848633 1417.299561 1415.120117 1412.022461 1408.66748 1405.626465 1402.880371 1397.823975 1392.921265 1387.879883 1380.498901 1377.093018 1376.092773 1382.392944 1390.090698 1394.675293 1399.669556 1404.490479 1405.050171 1402.122559 1395.836304 1398.821045 1404.168213 1406.703369 1407.376831 1406.565308 1406.58313 1404.714722 1403.13501 1400.668335 1397.550903 1397.676392 1399.947266 1400.342529 1399.047852 1398.329102 1400.27771 1399.238525 1398.311157 1395.941772 1390.240723 1382.821777 1379.492188 1380.912476 1386.522583 1388.634277 1388.357422 1385.874023 1381.052124 1379.602539 1378.508911 1377.715576 1377.692017 1372.856445 1364.596069 1365.004272 1366.183228 1364.41394 1356.85022 1349.24353 1351.295166 1351.652344 1346.577393 1338.028931 1341.328003 1341.882812 1340.088745 1347.562256 1345.950684 1332.834106 1334.036377 1343.192139 1345.396851 1344.939087 -1632.888428 1652.934082 1664.563965 1674.256348 1682.225952 1689.578491 1696.36499 1698.646118 1699.404419 1694.324707 1683.202026 1676.362427 1676.095337 1671.373535 1660.503784 1644.003174 1640.214966 1649.691895 1652.026123 1645.352783 1640.485718 1643.789429 1652.680786 1659.808105 1667.338379 1668.846924 1671.115479 1690.383789 1701.611328 1706.161011 1708.27356 1707.11438 1702.000854 1708.74646 1717.46521 1720.886841 1719.561523 1714.844604 1708.599609 1700.140625 1688.984009 1681.305542 1677.327271 1688.25647 1703.622681 1713.353149 1722.324097 1732.2146 1742.398804 1751.967651 1760.661499 1768.939575 1776.740723 1780.503296 1783.171387 1788.383179 1791.674683 1793.09314 1790.241821 1786.508789 1782.486328 1777.539429 1772.036499 1767.797729 1766.863037 1766.527222 1768.447632 1770.731567 1771.24939 1769.026855 1763.872681 1757.235596 1750.944946 1744.337402 1738.649536 1734.624512 1738.089111 1746.074341 1757.364258 1759.110474 1758.128296 1756.299438 1749.452148 1744.565796 1738.361084 1733.486206 1726.658569 1719.189087 1703.782593 1699.285767 1705.209961 1711.067993 1717.047119 1722.124878 1723.982178 1724.523682 1723.434937 1721.315552 1718.609619 1714.658691 1709.898071 1710.554932 1710.398438 1707.06958 1699.71582 1694.901123 1693.081177 1693.557251 1693.437012 1689.85376 1685.915405 1683.901733 1680.523682 1677.135132 1676.238647 1684.719482 1691.544067 1697.218262 1704.133545 1710.376343 1712.393555 1711.860229 1709.945068 1705.282104 1698.284302 1689.72644 1678.082397 1667.75647 1661.53418 1657.29541 1653.298462 1647.943481 1641.436279 1636.317871 1632.321289 1634.018066 1627.025391 1608.817871 1594.543335 1587.548584 1587.397827 1593.774536 1593.771362 1582.58252 1575.488892 1576.021362 1568.987793 1559.485596 1554.346924 1546.629395 1545.491821 1542.918457 1539.592773 1538.726074 1539.703979 1539.824463 1538.437134 1537.694336 1537.166992 1535.37915 1533.528442 1533.285034 1534.069702 1534.937378 1536.69751 1541.206177 1544.091797 1545.885986 1546.569214 1546.354004 1545.268555 1543.599365 1541.836792 1541.263428 1543.245483 1547.381226 1550.641724 1549.91748 1545.703979 1539.868286 1537.922363 1539.503296 1537.80249 1533.205322 1537.997681 1545.337402 1550.556396 1557.214111 1564.111938 1573.248657 1583.027588 1590.855225 1595.106079 1594.468262 1591.693848 1588.45166 1581.94043 1577.146118 1573.296021 1575.522339 1581.547485 1588.175171 1598.469971 1606.578491 1616.897217 1629.980347 1642.64563 1653.844849 1663.240234 1673.048584 1675.442871 1674.066895 1665.163574 1656.52063 1655.960449 1655.687256 1653.995117 1652.690186 1651.532349 1649.990723 1648.128052 1645.937866 1640.95813 1635.4021 1628.49292 1621.73938 1620.955811 1626.5177 1637.266846 1638.471069 1635.832031 1632.025024 1635.487183 1635.217285 1631.612183 1625.235596 1620.124268 1615.71106 1611.788086 1610.825073 1612.872803 1616.607178 1615.901611 1614.071167 1613.188477 1613.966919 1621.874634 1626.090454 1630.610596 1630.990845 1629.311279 1626.953247 1623.82605 1621.698486 1620.475342 1619.287598 1618.515625 1618.386719 1618.227173 1616.984497 1614.621704 1611.709595 1613.168091 1613.290894 1610.608276 1608.245972 1607.505127 1607.643188 1610.279541 1611.24292 1608.037109 1609.688477 1615.147583 1620.530273 1628.099487 1637.190918 1648.978149 1658.556152 1665.956665 1672.843262 1675.168091 1680.586426 1683.991699 1682.2771 1674.751953 1667.752686 1665.609497 1665.823975 1663.610718 1660.991699 1655.358887 1648.922729 1639.161743 1629.661743 1618.7948 1608.064331 1603.46167 1604.410522 1599.150269 1593.418579 1589.268066 1588.260864 1581.37854 1570.651489 1561.0271 1554.535522 1549.652954 1548.470947 1550.995117 1560.950806 1571.225464 1584.705688 1597.302368 1608.292725 1612.089478 1614.323975 1615.45459 1616.450073 1617.528687 1618.993774 1619.787964 1620.027344 1619.865723 1619.496582 1619.383179 1620.185303 1621.885742 1622.571045 1623.302979 1618.44458 1611.505859 1604.551758 1598.421021 1591.743652 1585.321655 1578.540649 1571.185181 1561.440674 1553.365356 1545.864258 1538.28479 1532.777954 1526.789062 1521.826416 1516.075073 1510.557983 1504.710449 1499.306396 1492.918823 1487.05188 1479.857666 1472.981079 1466.192627 1470.720703 1476.398193 1481.307129 1488.37207 1501.036743 1514.413818 1526.886719 1530.635986 1529.424438 1527.28186 1523.366455 1517.093994 1510.422974 1503.090942 1496.372437 1490.666138 1487.018921 1483.216309 1478.957886 1482.347168 1488.052856 1488.403564 1481.226318 1475.802856 1469.207764 1462.619385 1458.478882 1454.51709 1449.14502 1443.211548 1437.968994 1437.680786 1438.465698 1436.393066 1433.04541 1431.158936 1427.639526 1422.370117 1415.859741 1413.138184 1410.407593 1403.55603 1396.464966 1387.672607 1375.084961 1365.312988 1361.973755 1359.44812 1357.373535 1358.780762 1358.650635 1356.415649 1352.919312 1351.362183 1350.632446 1350.333984 1349.756592 1349.310303 1349.077515 1348.914551 1348.786621 1348.749634 1350.504639 1353.300171 1359.777222 1364.732788 1368.164185 1371.327759 1374.539795 1378.157593 1381.822876 1382.542847 1380.777588 1385.897827 1393.185791 1401.220947 1413.917847 1417.047119 1413.048828 1403.593384 1389.83313 1372.805176 1368.286743 1383.540771 1399.047119 1411.763062 1416.728638 1412.56958 1407.988281 1403.555908 1397.759521 1391.509033 1390.542725 1390.05896 1388.477539 1386.01123 1385.077148 1384.36377 1380.763306 1378.31311 1382.152222 1386.797119 1393.974243 1406.71521 1418.689575 1427.519897 1427.961792 1427.98877 1430.36499 1430.888672 1430.677979 1430.432495 1430.509521 1430.439819 1430.768311 1431.049683 1431.139038 1430.803101 1430.0271 1429.137695 1428.780518 1428.914917 1429.066772 1429.296997 1429.474609 1429.712402 1430.05249 1431.0177 1432.143677 1433.450439 1434.880493 1436.075684 1437.151367 1438.054565 1438.851562 1439.100708 1439.404663 1439.977905 1440.198853 1439.975464 1438.778076 1436.953735 1435.15625 1433.339111 1431.616455 1429.870605 1428.092896 1425.83252 1424.963989 1424.970337 1422.169189 1418.738892 1415.68103 1412.276245 1407.492432 1404.164429 1400.905029 1400.875122 1406.243408 1411.155762 1416.420288 1420.239502 1420.030396 1417.172485 1410.428955 1402.415161 1406.254028 1414.321655 1427.209473 1428.654663 1428.735107 1427.277588 1421.970093 1420.723145 1421.549438 1424.482544 1426.52832 1427.453857 1427.31958 1428.171021 1428.318359 1428.021484 1425.491089 1420.342285 1416.292603 1413.641357 1410.323853 1406.883057 1404.096313 1400.975708 1396.920532 1391.503418 1387.837402 1379.609253 1377.355835 1377.463745 1380.869141 1391.5354 1397.736572 1403.502441 1403.923096 1406.785645 1407.560181 1404.894409 1401.224365 1403.417358 1406.572876 1409.462402 1409.811768 1408.024414 1404.587036 1397.219238 1390.278931 1389.657593 1388.760254 1389.051636 1391.69397 1391.963501 1390.240234 1388.423584 1390.42981 1388.240112 1387.602539 1387.684448 1383.989624 1378.131592 1374.633179 1377.486084 1382.106201 1382.673706 1382.312744 1381.646973 1378.891357 1376.295532 1372.966919 1364.542114 1366.862793 1367.574341 1361.303711 1352.950195 1355.14856 1353.053101 1347.405396 1339.195068 1340.755859 1339.283081 1338.154419 1327.041016 1328.279785 1328.935303 1326.544678 1333.8302 1336.586182 1324.907837 1318.22229 1330.84668 1340.422241 1344.018066 -1637.592651 1658.051636 1669.437134 1679.80957 1683.998291 1691.776855 1696.822998 1698.830688 1698.134766 1694.647705 1693.329224 1694.098022 1690.739014 1685.630493 1680.080322 1665.782593 1668.929443 1671.319458 1668.80957 1658.89563 1650.236206 1657.527832 1667.960938 1675.269409 1683.198486 1684.84668 1682.884399 1701.285034 1712.52832 1718.786865 1721.600098 1722.130371 1717.956543 1716.335083 1727.900024 1732.094116 1730.763916 1729.462769 1720.471191 1706.581055 1693.0271 1683.092651 1681.283936 1683.505981 1699.808838 1708.646729 1715.365723 1723.951538 1732.586792 1741.114746 1749.715698 1758.771484 1765.19873 1770.098145 1772.428589 1775.249878 1779.24646 1783.13147 1784.918823 1783.249023 1780.348999 1777.61145 1773.357544 1768.913818 1768.684692 1770.057373 1771.912842 1773.681641 1773.930786 1771.371094 1767.142822 1760.078369 1753.544312 1747.008911 1743.199463 1741.197998 1745.981934 1752.255249 1758.445679 1759.348633 1758.981689 1757.265503 1750.158813 1744.48877 1739.234741 1732.514526 1724.707153 1715.944702 1703.077271 1704.745239 1709.245728 1714.337036 1719.204834 1722.738892 1723.623047 1723.296997 1721.452026 1718.876587 1715.905762 1711.951904 1707.490967 1706.076782 1706.738525 1701.962036 1695.727417 1693.456421 1692.468506 1691.561279 1689.307129 1684.480591 1681.757568 1680.059082 1679.539185 1682.488892 1689.860718 1697.856567 1702.726807 1707.321045 1711.804321 1714.454224 1714.109741 1709.752075 1705.684937 1700.309692 1694.299316 1685.151001 1674.13269 1667.088623 1661.252197 1655.925415 1648.403564 1642.054321 1632.464478 1626.653687 1620.337402 1617.924561 1619.95874 1609.289917 1595.323853 1585.141357 1578.974365 1577.681519 1577.872437 1574.589844 1568.172363 1565.217773 1559.508789 1554.42041 1548.983032 1543.414673 1541.334961 1540.1698 1539.975342 1544.723145 1548.828003 1552.251587 1551.666016 1549.177979 1544.688843 1540.91626 1537.084351 1536.801758 1539.272095 1541.01001 1544.717163 1550.27124 1555.598999 1558.443115 1557.557007 1555.654175 1552.379883 1548.657593 1546.894897 1545.896484 1546.906494 1549.861938 1552.604736 1552.143799 1548.822388 1545.246338 1543.782349 1543.239258 1540.954834 1537.065796 1535.792847 1546.039307 1551.847778 1556.062134 1560.742188 1567.931274 1574.947754 1583.341675 1586.596802 1591.024414 1594.395386 1594.113525 1590.989868 1587.641479 1583.059814 1580.31189 1582.068115 1584.311646 1594.006714 1602.404663 1612.397827 1623.208618 1633.839478 1644.410645 1653.786743 1664.994629 1672.202881 1670.824463 1662.3125 1651.522217 1646.995605 1648.389648 1647.234985 1650.128052 1650.083374 1649.181641 1647.42334 1645.0896 1640.991699 1635.422363 1628.888428 1622.068726 1617.401245 1624.585938 1636.871338 1637.01416 1633.253662 1621.390625 1627.695679 1630.937622 1629.477783 1625.93689 1620.678223 1612.359741 1607.636353 1606.76709 1607.854858 1610.870239 1609.759277 1608.311646 1607.962891 1612.283325 1619.197021 1625.186768 1634.01123 1633.311035 1630.591797 1627.728516 1624.509033 1622.57251 1621.520142 1620.052246 1619.873535 1621.850586 1622.348145 1622.935303 1620.792847 1621.155151 1621.207275 1619.660645 1612.920654 1609.412842 1610.182739 1609.248291 1610.621948 1614.27417 1612.908813 1609.307251 1617.04834 1624.120117 1629.252563 1637.089478 1647.605103 1655.515259 1659.4823 1666.88916 1669.717163 1678.199219 1682.968628 1673.75 1668.210938 1662.438843 1656.504517 1657.473511 1661.045532 1660.173096 1655.884521 1649.870483 1641.859863 1631.217163 1619.94519 1609.504639 1594.886719 1593.64917 1591.092651 1585.093872 1579.249512 1577.932983 1572.643677 1565.013916 1557.79126 1550.442627 1546.435547 1546.957275 1554.050293 1563.355591 1573.430542 1584.151733 1596.563965 1608.923706 1615.732544 1616.83667 1616.645996 1616.718018 1617.772217 1620.212891 1622.02063 1621.883423 1621.171631 1620.033081 1619.525391 1619.842407 1621.058716 1622.277832 1622.766479 1618.918213 1611.266113 1603.962036 1596.427002 1591.474243 1584.816895 1579.619141 1572.706543 1564.123169 1556.648926 1549.383423 1541.05188 1534.583862 1529.457397 1524.102539 1518.479248 1513.53186 1507.81604 1502.456421 1496.531128 1490.526123 1483.679199 1477.157593 1468.491455 1462.466064 1466.30249 1472.646851 1479.310303 1487.69873 1502.339844 1514.979248 1527.707275 1529.198853 1527.412354 1524.374878 1518.812256 1513.031738 1505.735352 1499.12915 1493.618164 1489.26709 1483.015503 1476.824463 1475.5271 1482.18103 1486.69751 1483.872314 1479.463745 1475.555542 1471.310913 1466.699341 1462.278687 1456.559937 1450.850586 1448.582642 1449.228149 1451.080322 1449.150146 1445.284302 1442.115479 1440.689087 1432.821533 1425.25415 1414.2229 1389.292603 1377.140991 1373.453003 1368.286133 1364.248535 1360.307739 1357.572388 1355.421631 1353.920166 1353.230347 1352.235229 1352.116333 1352.970337 1354.263794 1354.61792 1354.47522 1352.261963 1350.301636 1349.790649 1349.526001 1350.037964 1351.260498 1353.588867 1357.222778 1363.687744 1367.032471 1371.546143 1375.268188 1378.853027 1383.535156 1388.050293 1390.65271 1387.971069 1392.631104 1403.318848 1416.685547 1422.149414 1416.105225 1410.116577 1400.442749 1390.186523 1380.89563 1369.743286 1378.002686 1395.153442 1409.383423 1419.066162 1419.494019 1415.076904 1411.239746 1405.669067 1400.664307 1398.437134 1396.597656 1395.199951 1393.44751 1393.542725 1394.011597 1393.005005 1388.783447 1381.717285 1383.790161 1387.605713 1395.77356 1408.361816 1416.393555 1419.60498 1423.236572 1428.459839 1430.677612 1430.670898 1430.636475 1430.778687 1430.892212 1431.095947 1431.407959 1431.766113 1431.491699 1431.038208 1430.613647 1430.227051 1430.186646 1430.255737 1430.464844 1430.755493 1431.106812 1431.68689 1432.215942 1433.186157 1434.314331 1435.442139 1436.828491 1438.007446 1438.815186 1439.551147 1440.062134 1440.374512 1440.734497 1440.734253 1440.498901 1439.721802 1438.405273 1436.517212 1434.653442 1432.685303 1430.549194 1428.028687 1426.672607 1427.694946 1427.718628 1424.537842 1419.012207 1415.238525 1411.666016 1407.478638 1403.759155 1400.689209 1405.615112 1412.536255 1418.489868 1424.9552 1426.845215 1423.495605 1419.40332 1415.020996 1405.928589 1411.901245 1417.938232 1425.260132 1428.008667 1428.859253 1428.853027 1427.688232 1426.305908 1426.78772 1428.404785 1428.879395 1428.789062 1428.443481 1427.798706 1426.619263 1424.591675 1421.115601 1416.556396 1412.703613 1408.893188 1404.333984 1400.451416 1396.23877 1392.447388 1389.410767 1388.162598 1387.291138 1384.832275 1384.11084 1384.484741 1386.264282 1394.467041 1401.594482 1406.458618 1409.295654 1411.190308 1411.143188 1408.030151 1402.435669 1406.900269 1410.941284 1413.102173 1412.807861 1408.894287 1403.173462 1392.765625 1390.237915 1389.141846 1387.366455 1383.990845 1382.082031 1382.747192 1382.234985 1381.917358 1382.688965 1381.848633 1379.91272 1381.035278 1380.32959 1375.613892 1368.747925 1372.220459 1379.713867 1379.89978 1376.355103 1376.328613 1373.536133 1368.370239 1367.788086 1356.282593 1355.265381 1356.911499 1353.132202 1345.622192 1345.519165 1344.80957 1340.138306 1329.212524 1324.785278 1323.061157 1321.828979 1316.463135 1314.165771 1314.115234 1314.132324 1315.289429 1316.085815 1314.675415 1310.264526 1312.86853 1321.074951 1332.507324 -1654.258667 1669.725098 1681.572144 1686.490967 1689.234863 1693.021729 1697.195312 1699.637207 1694.104492 1688.568604 1692.076904 1699.100342 1700.126587 1699.525146 1698.74231 1693.867676 1694.474854 1693.678467 1687.797241 1677.964111 1665.380127 1673.116333 1683.279663 1695.434692 1700.157837 1702.089844 1705.598877 1714.286621 1723.104248 1729.677612 1734.503052 1734.019043 1728.089966 1726.820068 1746.127686 1746.300171 1741.026001 1736.553833 1726.368408 1708.931152 1695.380859 1688.853027 1687.265259 1682.493652 1695.795166 1703.257324 1710.510132 1717.754395 1725.171631 1732.089844 1736.868408 1745.803589 1753.759399 1758.646118 1762.568359 1765.778931 1770.157349 1772.650269 1777.140259 1779.968994 1779.206665 1778.546753 1776.56311 1774.092407 1773.801514 1775.034912 1776.278198 1777.838745 1778.287842 1775.946899 1771.716553 1766.457275 1757.685669 1752.251343 1748.376709 1748.6427 1751.773315 1756.704712 1759.43335 1759.202026 1757.940674 1753.861328 1746.549194 1741.650879 1736.641968 1729.567505 1720.453979 1711.775024 1704.602295 1709.838013 1713.847778 1718.023071 1721.129395 1723.556519 1723.778076 1723.066895 1721.078003 1718.384888 1714.637085 1711.19043 1707.686401 1705.479614 1703.848755 1699.90918 1696.423096 1696.025757 1694.592163 1693.446289 1690.921753 1686.179321 1683.704834 1682.646606 1685.414673 1690.640137 1698.382324 1706.20752 1710.258057 1714.783203 1719.178833 1719.73291 1716.993408 1708.293945 1701.398682 1692.733887 1688.171265 1681.04248 1676.191284 1673.76355 1670.572754 1666.628052 1657.74707 1646.832397 1632.70166 1618.976807 1610.785522 1605.821289 1599.692383 1594.717773 1585.300537 1580.806274 1573.218628 1571.095093 1571.795532 1569.536377 1564.204712 1559.364624 1555.500122 1551.23584 1547.245239 1543.984497 1548.081421 1548.627319 1549.877808 1555.007935 1561.158325 1563.871094 1564.706787 1561.62793 1551.937744 1545.875732 1541.433594 1540.687866 1544.17749 1548.045776 1550.978394 1559.460938 1569.62439 1575.280029 1574.629883 1568.624268 1564.61084 1560.549194 1554.93457 1550.450073 1550.870117 1553.919312 1555.475464 1554.536133 1550.710083 1547.53418 1548.436401 1548.364502 1545.852783 1541.197266 1536.289429 1544.981812 1551.463501 1554.983643 1558.460327 1564.000854 1571.428345 1578.231323 1582.930298 1590.297974 1598.204834 1600.589478 1599.643799 1599.446899 1595.893921 1588.674316 1585.341187 1593.195435 1598.9198 1598.64978 1607.657104 1617.039185 1626.295288 1635.054321 1645.964478 1655.670776 1661.169556 1664.525879 1662.272461 1650.348145 1642.457886 1643.891846 1646.027832 1648.08313 1648.599487 1647.719482 1646.604248 1644.188721 1640.800537 1636.595337 1630.973267 1622.443604 1611.322876 1619.817871 1633.21167 1633.465576 1626.142944 1618.069092 1621.587036 1624.794434 1625.345581 1625.541748 1622.577393 1614.77063 1607.934937 1604.657837 1602.268433 1603.019165 1603.432251 1604.62439 1608.642456 1614.658325 1621.375488 1629.947144 1635.401001 1633.938232 1631.321899 1629.124268 1626.852661 1624.657227 1622.616821 1620.925537 1621.099365 1623.771973 1626.416016 1627.87915 1628.325562 1629.412109 1628.834106 1625.050781 1617.206909 1612.463257 1614.983032 1615.651733 1617.609253 1618.333984 1616.911377 1615.709595 1618.519653 1624.564697 1630.101318 1637.870361 1646.733032 1650.934692 1654.656006 1655.452637 1661.593384 1682.418213 1682.498535 1673.993042 1666.998047 1660.532349 1652.298096 1644.512817 1651.430542 1655.844116 1653.470825 1650.095703 1643.234253 1631.531494 1621.001709 1608.225586 1594.835938 1580.036865 1577.347412 1574.883911 1569.037354 1568.21167 1563.68042 1559.032227 1553.73584 1548.009033 1539.703613 1544.440552 1554.351685 1561.71936 1568.52417 1579.334595 1598.29248 1616.208984 1622.076782 1620.447388 1617.925659 1616.552002 1617.068726 1619.811401 1622.644165 1622.616211 1622.103271 1620.768311 1619.423706 1618.988525 1619.532349 1621.456909 1622.096436 1616.06189 1609.331177 1603.156006 1596.778687 1592.163086 1587.046509 1582.885986 1577.649536 1570.989258 1561.589844 1553.609131 1545.874634 1538.03125 1531.907349 1525.919189 1520.467041 1515.150024 1509.729858 1504.372559 1498.926025 1492.049927 1485.788818 1479.099731 1472.19397 1464.869019 1460.450195 1464.980103 1471.0896 1478.259277 1487.961426 1504.252319 1516.817139 1526.345093 1526.39209 1523.565552 1519.453735 1514.651733 1507.942261 1500.506226 1494.860474 1490.253662 1484.240723 1477.305298 1473.68396 1475.892212 1481.22937 1484.469971 1483.794922 1480.724243 1477.806396 1473.359863 1467.97937 1463.337402 1458.876587 1457.529907 1456.971436 1456.042358 1454.063843 1448.783569 1442.657959 1434.364868 1424.938354 1407.742798 1383.852905 1373.279053 1369.4375 1365.984253 1364.260254 1361.790283 1355.1073 1353.501343 1353.378418 1353.526855 1353.933472 1354.191895 1354.508789 1354.791382 1354.572388 1354.185425 1353.620117 1351.961914 1350.415161 1350.177734 1351.415283 1352.255127 1353.252075 1362.728149 1369.071167 1369.892212 1371.430176 1375.084106 1379.666382 1384.672241 1389.878906 1395.187256 1397.04248 1396.693359 1406.01416 1418.799805 1427.117798 1425.467163 1415.146851 1409.494751 1404.320923 1400.655884 1387.474609 1381.897095 1373.861938 1387.491211 1402.99646 1416.930786 1424.451538 1428.980591 1420.006226 1412.071289 1409.094727 1405.351685 1401.838135 1401.272095 1401.30603 1400.295654 1400.296021 1397.85376 1393.995239 1389.701904 1383.317627 1385.620239 1388.246826 1393.549561 1402.302612 1409.242798 1414.55542 1422.659668 1428.323242 1428.608032 1428.701904 1430.065186 1430.661377 1430.946777 1431.181641 1431.753174 1431.789673 1431.643921 1431.396851 1431.12915 1430.966309 1431.090576 1431.265137 1431.681641 1432.19043 1432.730103 1433.376099 1434.118164 1435.080322 1436.245728 1437.336792 1438.679321 1439.40625 1440.217896 1440.813599 1441.182617 1441.35791 1441.255493 1441.038574 1440.378784 1439.419067 1437.628296 1435.773071 1433.837402 1431.790283 1429.831787 1429.026978 1428.73291 1427.745605 1423.998657 1417.81897 1414.225098 1410.736572 1406.72644 1402.761597 1402.982178 1411.296509 1418.909546 1426.029053 1428.746338 1428.582764 1426.432861 1421.749756 1415.959106 1412.018799 1413.569336 1419.158936 1423.870972 1427.441772 1429.10791 1429.001587 1428.793335 1428.411377 1428.540649 1428.935059 1429.014526 1428.855957 1427.284424 1425.165039 1423.433838 1420.937866 1417.668579 1413.747803 1409.174927 1404.860352 1396.887451 1388.397461 1388.334961 1388.542114 1388.527344 1388.901245 1391.874634 1393.137939 1393.157349 1390.341919 1390.699707 1394.946167 1401.792969 1407.225342 1414.285645 1414.887451 1414.808472 1414.661865 1411.29834 1412.124268 1415.46875 1415.759033 1414.329468 1409.411255 1403.08374 1400.678955 1399.440918 1396.675415 1391.717163 1384.872559 1377.412109 1376.95874 1377.028076 1376.789551 1376.746094 1375.067383 1372.190186 1374.665405 1374.721436 1370.181519 1365.199463 1366.197632 1374.225952 1375.390137 1367.193604 1368.345337 1367.149414 1361.375244 1358.979614 1353.393677 1348.853271 1347.939575 1344.85791 1339.959351 1338.702148 1337.567505 1333.161743 1322.484497 1313.724243 1309.124268 1310.76416 1311.12085 1310.125977 1309.115479 1308.578125 1308.52124 1307.431519 1304.602539 1302.1073 1301.938965 1304.681274 1310.582031 -1671.340576 1684.939209 1687.692993 1688.327271 1689.376099 1691.319458 1691.611084 1683.439941 1679.213135 1676.112793 1678.268311 1691.046021 1699.136841 1705.79187 1712.6604 1717.92688 1716.804199 1712.695801 1704.396851 1693.30835 1685.485229 1688.04187 1700.370605 1711.030273 1715.484497 1719.823975 1721.392456 1727.064453 1734.520142 1743.786987 1747.103516 1746.2948 1736.852051 1736.854004 1751.627075 1756.176758 1747.958496 1739.167236 1724.255371 1707.232788 1696.849243 1694.130615 1695.956665 1695.846558 1690.283813 1697.038452 1705.220825 1711.547363 1717.724731 1722.787964 1728.588867 1737.573242 1744.894653 1748.694092 1753.125732 1756.447144 1756.035645 1763.498291 1768.692017 1776.493286 1780.270874 1780.45105 1780.617065 1779.621216 1779.037598 1779.437134 1780.626221 1782.230103 1782.707153 1780.622925 1776.604248 1772.417847 1768.349365 1758.808838 1754.700195 1755.640869 1758.389282 1760.076416 1759.67041 1758.562988 1755.192871 1749.196411 1741.873169 1735.400391 1730.187256 1724.255127 1716.476318 1709.396362 1709.406128 1713.974487 1718.199585 1721.390137 1723.603271 1724.809692 1724.554688 1723.64563 1721.784668 1719.891968 1714.548584 1709.834473 1706.946289 1705.271851 1704.181519 1703.719482 1706.405884 1706.69104 1701.682373 1698.594238 1696.664185 1693.682983 1688.592407 1686.557007 1688.866699 1694.417603 1702.549683 1709.663086 1714.488647 1719.575562 1721.382812 1721.435425 1718.615234 1711.321411 1702.76123 1695.301758 1694.282837 1693.036621 1688.088623 1684.90564 1686.026489 1683.888428 1674.106934 1663.428711 1648.677124 1637.801636 1624.818359 1614.054565 1601.647461 1592.952881 1583.530518 1580.974976 1580.66272 1578.01416 1578.250244 1573.5896 1563.088501 1557.960815 1551.872559 1547.716064 1546.671631 1554.420898 1558.86731 1560.465942 1562.179688 1568.989868 1576.899536 1578.82666 1576.75 1571.737915 1562.65918 1551.897461 1546.687866 1545.278931 1547.848755 1553.296387 1558.944946 1570.49292 1584.62854 1590.834106 1587.636108 1581.800171 1576.59668 1571.709717 1567.216919 1562.915039 1559.681885 1558.626587 1559.543579 1558.372314 1554.876099 1551.778931 1553.286499 1553.173584 1551.4729 1547.194824 1540.872803 1543.427368 1550.714478 1554.312256 1558.218018 1563.565918 1571.184937 1577.879517 1584.601929 1595.222412 1601.415894 1604.627075 1606.445068 1606.342773 1604.360596 1600.453857 1594.968018 1599.892944 1611.944336 1619.003662 1617.796143 1616.948608 1622.252075 1631.512085 1641.29541 1647.68811 1654.169312 1658.143799 1658.488281 1647.71814 1637.013428 1637.757446 1646.914062 1647.526245 1646.689941 1645.689453 1644.779785 1643.858643 1641.832275 1638.350708 1632.941895 1620.506836 1609.893188 1615.429077 1625.967285 1625.087769 1619.237671 1611.287842 1610.721313 1616.619019 1621.486328 1625.096558 1624.7677 1618.187256 1609.513794 1604.056885 1598.83728 1596.619263 1597.959351 1601.956909 1611.086914 1616.436646 1623.239746 1630.56189 1635.688354 1634.434692 1632.500732 1631.128662 1629.571777 1627.140259 1624.564331 1622.932495 1621.523193 1625.424927 1631.217773 1634.569336 1636.033203 1638.31189 1634.987183 1628.490723 1621.585693 1619.255127 1621.878906 1624.520386 1625.027588 1623.810425 1621.325806 1619.828247 1620.875 1623.307983 1629.194946 1635.714478 1643.635132 1649.081909 1649.710205 1645.799316 1662.780273 1681.291382 1681.539429 1674.033691 1667.32605 1661.223389 1652.7771 1637.288696 1637.713623 1648.814819 1650.126953 1649.46814 1644.58606 1634.147461 1623.288574 1610.869873 1598.3479 1583.321533 1568.910278 1562.217773 1559.12854 1557.90625 1555.677246 1552.766235 1549.099243 1542.655884 1537.459106 1543.311523 1551.838501 1560.77124 1568.375854 1582.499512 1602.49939 1621.840576 1623.416382 1621.763794 1618.276733 1615.09375 1614.88269 1617.803955 1622.276855 1623.036377 1622.818604 1621.405518 1619.147339 1617.84668 1617.923828 1618.766357 1617.765503 1613.039429 1608.019775 1603.551514 1598.39563 1594.577881 1590.834717 1587.044189 1581.71875 1574.94812 1565.438232 1556.867432 1549.036255 1540.834106 1534.113159 1527.650024 1522.014282 1516.594971 1511.157715 1505.472656 1499.656616 1492.499634 1485.946411 1479.878052 1474.067139 1467.855591 1461.958374 1458.871704 1462.884277 1469.523438 1477.75061 1486.624512 1503.273193 1514.387085 1520.379272 1520.992065 1518.813721 1515.187744 1508.937988 1501.140625 1494.15271 1488.482544 1481.006836 1474.608521 1467.689575 1472.775024 1479.383057 1486.178467 1488.203125 1484.663818 1481.141846 1477.009155 1472.582886 1467.685425 1465.264038 1464.429321 1461.007935 1456.151855 1450.253174 1441.737183 1431.272095 1419.253906 1406.292847 1388.991333 1372.543457 1366.878174 1365.371582 1364.583984 1363.071045 1360.37793 1356.605347 1354.626953 1354.461792 1354.338501 1354.629639 1354.735229 1354.765259 1354.73938 1354.094604 1353.332153 1352.122681 1351.255493 1352.301392 1354.876587 1357.823975 1360.937256 1366.839478 1372.524048 1377.55835 1378.77417 1376.489746 1376.297607 1381.970703 1389.934692 1399.315063 1405.200195 1406.248047 1409.065552 1419.621216 1427.81189 1426.646729 1422.981934 1416.12854 1414.432983 1409.997437 1403.862427 1392.407837 1394.616577 1386.990845 1377.906372 1394.114136 1410.577393 1422.02771 1429.931641 1429.449219 1422.055176 1418.525879 1415.390991 1410.932007 1409.542358 1408.857178 1407.198486 1404.984985 1402.734253 1397.753906 1391.940186 1386.139038 1386.449097 1387.929321 1388.627808 1394.009155 1399.930664 1404.328979 1411.255249 1416.217773 1420.116333 1423.578979 1426.597778 1428.287598 1429.627563 1430.358032 1431.302002 1431.520386 1431.616577 1431.580078 1431.427002 1431.285522 1431.335327 1431.622559 1432.096558 1432.74707 1433.315186 1434.023804 1434.730225 1435.66626 1436.780396 1438.059814 1439.119751 1440.022095 1440.811035 1441.450439 1441.868652 1442.105103 1441.97522 1441.571655 1440.853882 1439.725708 1438.240601 1436.612427 1434.768555 1432.816528 1431.049072 1429.534302 1428.327026 1426.922974 1422.700928 1416.930298 1412.999634 1409.78772 1406.005859 1403.486084 1408.9104 1417.282837 1425.330322 1429.514771 1429.887207 1429.31958 1428.143188 1422.707886 1415.952515 1412.77124 1413.950439 1421.512817 1427.519409 1428.760254 1429.327881 1428.981323 1428.736694 1428.595825 1428.516724 1428.778687 1428.552979 1427.21228 1424.84668 1422.681274 1420.330688 1417.80603 1414.747681 1410.294922 1405.848877 1400.45459 1390.308838 1390.120605 1392.547363 1394.119751 1395.039551 1397.352905 1401.889038 1402.476685 1400.872681 1398.209961 1398.450195 1400.476318 1400.857666 1403.383911 1413.455933 1416.068848 1416.220947 1416.237915 1414.336792 1415.093262 1416.441528 1416.282837 1415.282349 1411.998657 1408.540894 1406.157471 1405.938843 1404.844727 1403.268555 1395.1698 1387.709961 1382.050049 1378.378662 1375.417969 1369.764404 1365.828125 1364.940063 1364.931763 1366.553955 1365.09375 1358.805176 1354.883423 1365.311157 1367.601196 1364.359741 1360.346436 1359.69043 1355.400513 1350.59021 1346.684448 1341.702148 1341.495605 1339.84729 1336.488159 1333.212402 1331.51062 1328.174072 1317.329224 1308.608643 1306.653076 1304.970337 1307.181885 1307.071533 1305.438477 1303.697266 1302.678467 1300.817993 1299.399658 1299.275513 1298.795288 1296.968018 1300.500977 -1682.134399 1686.999146 1687.889038 1688.057129 1687.811523 1683.990845 1677.20166 1667.650391 1664.783325 1662.008545 1667.638062 1676.474365 1689.150879 1700.004395 1714.40332 1728.616943 1742.257568 1733.885132 1719.59436 1707.766602 1697.232544 1699.91687 1709.592407 1718.015259 1725.452393 1732.242188 1737.64563 1742.590942 1749.218872 1754.737915 1757.434448 1757.00647 1744.760864 1746.549927 1758.683716 1760.60144 1753.115356 1738.474121 1724.872314 1708.82312 1703.83374 1702.381836 1710.75647 1711.987183 1705.368774 1700.05603 1700.92334 1705.871216 1711.134277 1716.61853 1722.440308 1730.009888 1735.790527 1739.735596 1742.99646 1745.623779 1756.124146 1767.46228 1772.561157 1778.481323 1781.694214 1783.131836 1783.488403 1784.26123 1784.448364 1784.762451 1785.626953 1786.609741 1786.419434 1784.622925 1781.13916 1777.220825 1773.852295 1770.788086 1768.664062 1766.389648 1764.008789 1761.96582 1760.108765 1757.187622 1752.88269 1746.864746 1740.498169 1733.177979 1727.493896 1722.007324 1715.084717 1710.681274 1713.327515 1717.882202 1721.49707 1724.174927 1726.049561 1726.538696 1726.077759 1724.508301 1722.392334 1719.7146 1714.047852 1707.857422 1706.187744 1705.483887 1705.047485 1707.205566 1709.002319 1710.079712 1708.840454 1705.817627 1702.305298 1698.061279 1694.273071 1691.221802 1691.374512 1695.790039 1704.587036 1711.287109 1716.685547 1721.27124 1722.551147 1721.864136 1719.132568 1714.38269 1709.443604 1706.792114 1705.743774 1705.171143 1704.491211 1701.917358 1698.218506 1694.880859 1689.042358 1681.417603 1667.525757 1651.795654 1639.118164 1626.903076 1615.006348 1605.976929 1602.365723 1601.285522 1599.790039 1594.611206 1587.911499 1572.880249 1560.858765 1552.738647 1548.395264 1548.687012 1559.289062 1561.697998 1568.297729 1575.245728 1578.5448 1582.35083 1590.866577 1592.461304 1592.332642 1587.209961 1572.491089 1557.277588 1548.261353 1546.947144 1550.466309 1558.196899 1563.494385 1576.60498 1591.901489 1600.706421 1600.247803 1592.970093 1586.427368 1580.678345 1575.631714 1571.743652 1567.857422 1565.253052 1564.526367 1562.784668 1559.236694 1557.344849 1559.775635 1561.294434 1558.641235 1553.239014 1546.803833 1542.793701 1549.477783 1553.915405 1558.265015 1563.937134 1572.087646 1579.483154 1587.735718 1598.509277 1605.640503 1610.102661 1612.88501 1613.454956 1611.890869 1609.465088 1604.140991 1603.283936 1620.643555 1633.369873 1639.886353 1634.463745 1628.860352 1631.710083 1636.175171 1646.021729 1652.757324 1656.137573 1649.231934 1642.371216 1633.439209 1638.341919 1647.128052 1647.138062 1645.459351 1645.07373 1645.302368 1645.811523 1646.443481 1643.22229 1633.658081 1618.935791 1608.84729 1613.218994 1621.742188 1618.746094 1613.257202 1607.182983 1604.856445 1607.951416 1620.598389 1625.575562 1625.119629 1620.292847 1612.440796 1605.315552 1599.014038 1595.215088 1596.173828 1605.657227 1612.515625 1616.740723 1620.618774 1627.472656 1634.71814 1636.003296 1634.336182 1634.118164 1632.288696 1629.839233 1628.233521 1625.821289 1622.809082 1627.524292 1635.091187 1638.835083 1643.252563 1645.947998 1639.672119 1630.602051 1622.255981 1622.875122 1629.209473 1632.005371 1632.387573 1631.163086 1627.954346 1625.698853 1624.883911 1622.447266 1628.394287 1632.021484 1638.326904 1646.359985 1644.775391 1646.748413 1659.872192 1671.634766 1677.071533 1672.609619 1666.326416 1660.847046 1650.74353 1637.908813 1619.855835 1632.970825 1641.215088 1644.170654 1642.316284 1635.756348 1625.455444 1612.166992 1599.175781 1590.151978 1576.517456 1561.722168 1555.913818 1548.139282 1548.352417 1546.360962 1541.31311 1536.994507 1536.495361 1543.435059 1553.298462 1561.752563 1572.029785 1582.90271 1598.164062 1618.990479 1623.334106 1622.713989 1616.001343 1611.061768 1611.876099 1612.70813 1620.729858 1623.134155 1622.875488 1621.184692 1618.25354 1616.307861 1615.775879 1615.946655 1615.075073 1612.404053 1610.156738 1605.690308 1601.388794 1598.047729 1594.310547 1589.993042 1585.158813 1577.01001 1567.890991 1558.517456 1550.30542 1542.360474 1535.307495 1529.143555 1523.533569 1517.453735 1511.91394 1505.529297 1499.38855 1492.114746 1485.650635 1479.573364 1473.90625 1469.571533 1464.746826 1456.464355 1456.95105 1461.088623 1466.815186 1476.564453 1485.274536 1498.968384 1510.236328 1515.994263 1517.495605 1515.395142 1509.450439 1500.270996 1489.627441 1482.172363 1473.834717 1463.690308 1462.389771 1472.895752 1480.274414 1486.638916 1489.432007 1488.31958 1483.448242 1479.314087 1475.511108 1472.12793 1469.403564 1466.146973 1459.106445 1449.781738 1439.543457 1425.773682 1413.059204 1400.763794 1387.733032 1375.266235 1365.946899 1365.234009 1364.418823 1363.500122 1361.923096 1359.983765 1358.108154 1356.606567 1355.94104 1355.239868 1354.916016 1354.789551 1354.696777 1354.508911 1353.725708 1352.48291 1352.567993 1355.805054 1360.143555 1363.919067 1368.172485 1372.9729 1377.57251 1382.89917 1385.470093 1383.848267 1379.261475 1377.561035 1380.368164 1393.971191 1405.184448 1413.032349 1416.300781 1421.338013 1428.665527 1430.761597 1426.848999 1425.764893 1423.898315 1418.629272 1413.510498 1401.752197 1404.443726 1402.245972 1397.098389 1381.928467 1386.858521 1399.856201 1417.156738 1430.160034 1431.317871 1429.768799 1427.966187 1424.540649 1419.526001 1417.184692 1416.567383 1413.926636 1408.350708 1404.7948 1399.661499 1393.908813 1389.575684 1391.454468 1392.871094 1389.759155 1390.494019 1393.744141 1397.742798 1398.845337 1403.868408 1410.082764 1416.672485 1420.855713 1424.681274 1427.650391 1428.64502 1430.26001 1430.811035 1431.091431 1431.168823 1431.014893 1430.891113 1430.913208 1431.305908 1432.030762 1432.645386 1433.455322 1434.095337 1434.924438 1435.780762 1437.046265 1438.108765 1439.482788 1440.519775 1441.287476 1441.964233 1442.535278 1442.759888 1442.656616 1442.179077 1441.458374 1440.541504 1439.315308 1437.356812 1435.448975 1433.711304 1431.671509 1429.096191 1426.631348 1425.183472 1422.011719 1417.943115 1414.386353 1408.879028 1405.154053 1412.666626 1413.660767 1422.699951 1429.216064 1430.995972 1430.811523 1429.821533 1427.591064 1422.758667 1417.062866 1413.909668 1415.396973 1426.105103 1429.093628 1429.443604 1429.251587 1428.611206 1427.785889 1427.887451 1427.770752 1427.067993 1425.549194 1423.715088 1421.815552 1419.80835 1417.577637 1414.434814 1410.391602 1405.96814 1402.256104 1397.957153 1394.78479 1398.732788 1401.93103 1403.13147 1403.738892 1405.397827 1407.922607 1408.542847 1407.339722 1405.137817 1405.799683 1405.798706 1404.599487 1403.177979 1410.717773 1415.881714 1416.60144 1416.848755 1416.415527 1416.258423 1416.970093 1416.70105 1415.139404 1412.660889 1411.601562 1410.653931 1409.30542 1406.504272 1404.077271 1398.970703 1392.29895 1387.055786 1381.73877 1379.636108 1375.934937 1369.248779 1365.319824 1363.780762 1358.929443 1354.682495 1354.122681 1351.988892 1354.592773 1358.005737 1358.623779 1351.736084 1352.378174 1349.992188 1344.670776 1340.425659 1339.10022 1337.895874 1336.041748 1332.231567 1328.409424 1325.681396 1319.455322 1312.322876 1308.969238 1307.876709 1305.124023 1303.863403 1303.396362 1303.549438 1305.400146 1308.234741 1308.339966 1307.282593 1305.400879 1303.401978 1300.634277 1296.436157 -1678.776611 1683.523438 1684.255859 1682.418579 1677.513428 1669.990601 1664.098267 1658.259155 1650.716309 1649.015503 1656.546265 1664.092651 1677.899658 1692.791748 1705.055054 1723.007568 1738.859619 1739.059937 1728.080322 1719.956177 1710.595947 1711.012573 1716.95105 1725.549316 1736.142944 1748.087891 1753.283203 1757.780273 1761.658325 1764.305298 1766.36084 1766.606812 1758.792114 1756.436768 1765.557739 1765.529175 1755.170166 1742.17395 1732.204224 1717.227539 1712.50769 1709.60437 1722.130127 1722.810913 1718.815186 1713.709473 1712.11499 1710.685059 1708.054077 1713.209595 1717.371216 1721.248901 1728.685425 1731.222168 1735.024048 1743.862183 1755.311768 1765.576416 1771.238281 1777.623657 1782.905884 1784.270752 1786.627441 1789.370728 1790.990479 1791.745117 1791.608765 1791.206665 1790.708984 1789.014404 1785.647827 1781.18042 1777.755615 1774.809814 1771.573242 1769.23938 1765.95752 1762.586548 1759.309204 1755.672485 1750.848633 1745.976196 1739.232422 1732.696899 1726.548096 1721.052002 1714.3302 1714.406494 1716.993408 1720.939697 1724.870972 1727.548462 1728.905273 1729.078003 1727.669067 1725.39563 1722.648193 1718.927246 1714.294922 1708.479614 1707.574097 1707.043823 1706.258667 1707.384399 1709.224976 1710.365234 1710.547119 1709.675293 1707.416992 1700.850952 1695.608276 1692.796509 1692.734375 1696.866943 1705.614136 1712.120239 1718.369629 1722.126221 1723.593018 1723.625488 1720.093506 1718.908081 1718.345825 1718.561157 1716.713745 1715.4198 1714.199951 1713.102905 1710.236328 1704.460327 1698.184082 1689.448975 1680.952271 1671.810425 1660.526123 1643.839233 1628.963257 1621.659058 1617.704712 1612.439819 1603.382202 1589.611572 1577.206543 1566.654541 1556.441528 1548.088745 1549.517334 1557.123535 1566.326538 1571.917969 1576.11731 1587.230957 1594.802246 1601.314331 1610.685791 1611.440186 1605.445557 1594.747192 1578.619263 1560.131348 1548.521606 1547.643677 1556.863892 1565.16333 1571.646729 1582.520874 1595.119263 1606.887939 1610.263184 1601.15979 1594.251831 1589.63501 1585.631714 1581.737915 1577.422852 1573.911011 1571.678589 1568.238647 1561.738037 1559.300049 1562.495117 1566.836182 1565.855591 1560.808105 1553.050781 1545.921143 1548.140991 1553.892578 1560.481201 1565.716187 1573.27002 1580.761353 1590.219604 1600.868896 1609.352661 1615.95752 1619.681396 1621.172119 1621.048584 1619.19104 1612.860962 1607.608032 1624.82959 1639.154419 1649.348022 1649.822754 1648.343506 1643.929565 1644.49646 1651.347778 1658.125244 1658.529907 1651.245483 1644.466431 1633.768188 1635.048828 1645.608276 1647.293091 1643.633545 1645.490356 1646.943115 1649.50647 1649.973511 1647.696167 1637.376953 1619.540161 1608.454346 1610.953369 1614.622559 1610.666138 1606.248779 1601.165283 1597.017578 1606.73938 1619.872192 1625.804565 1625.293335 1622.806763 1613.415161 1605.824341 1598.867188 1593.390015 1596.718018 1602.9646 1608.74646 1620.341797 1626.865234 1634.114624 1635.240723 1638.837402 1638.004883 1636.659912 1634.300537 1632.636719 1632.649536 1631.376343 1629.639893 1631.545288 1636.888672 1641.974609 1647.21582 1648.705566 1640.025635 1631.472534 1627.372925 1633.441162 1638.737671 1640.240479 1640.102905 1638.831909 1635.650269 1632.236572 1630.382568 1629.529663 1630.853027 1632.452881 1636.724121 1640.712524 1639.745117 1646.194214 1660.654175 1672.104126 1674.748169 1671.613892 1664.562622 1656.967407 1646.711792 1635.578735 1618.448242 1616.991089 1624.612549 1632.869019 1635.817261 1633.272339 1624.321777 1616.814331 1613.335205 1601.0354 1586.417969 1572.187134 1559.807373 1554.021729 1549.722168 1545.700195 1537.138184 1533.402832 1532.447632 1541.881836 1552.278076 1559.979858 1568.930298 1579.009155 1590.722168 1602.974487 1616.644043 1618.469238 1611.227905 1607.233276 1607.593994 1608.245972 1618.735718 1623.019165 1621.307617 1618.184326 1615.83313 1613.883911 1613.363159 1613.810181 1613.63855 1612.632812 1611.045532 1607.925415 1603.550537 1600.687744 1597.334106 1590.811035 1586.358521 1577.913452 1568.854492 1558.621704 1549.534058 1542.744385 1535.425049 1529.638794 1523.449463 1518.112915 1511.247803 1505.5896 1498.252686 1491.476196 1485.589233 1479.791748 1474.696045 1471.188843 1466.405273 1459.490967 1452.806274 1454.304688 1458.368042 1462.527832 1472.756958 1481.402222 1492.002319 1505.315552 1512.728882 1515.198853 1509.92041 1498.71875 1484.273193 1472.583496 1462.529785 1455.793579 1462.332153 1473.844482 1479.734253 1484.347168 1487.370605 1486.546631 1483.453491 1480.103271 1477.80127 1475.062012 1470.102173 1463.646484 1448.527344 1436.269897 1421.694336 1409.347412 1393.354614 1381.11438 1376.353271 1367.504761 1365.341553 1364.559082 1363.710449 1362.543701 1361.352173 1360.021606 1358.776245 1357.923828 1357.159912 1356.298096 1355.231079 1354.620728 1354.133423 1353.946899 1353.200073 1351.849854 1361.732422 1366.146484 1368.569214 1371.730835 1376.24646 1383.04187 1391.108765 1393.177734 1392.788696 1390.386597 1386.001343 1381.987183 1381.146118 1393.21228 1404.721802 1420.297974 1429.61499 1434.591919 1437.934692 1435.313599 1431.944824 1430.156494 1428.174927 1418.97229 1412.347168 1410.134155 1415.616699 1414.032104 1406.848389 1391.47229 1386.702026 1399.363281 1419.46814 1431.273315 1434.2323 1434.200195 1432.35376 1429.755859 1426.633545 1421.892212 1416.697754 1413.911133 1409.694946 1405.414307 1401.112183 1395.906494 1390.017822 1394.466309 1401.9823 1398.079224 1394.315308 1392.256836 1397.323608 1398.503052 1398.588989 1399.432739 1401.818604 1411.977295 1416.349487 1423.178833 1425.535156 1428.654419 1429.684814 1430.322876 1430.35498 1430.100952 1429.861328 1429.914673 1430.46521 1431.343262 1432.226196 1432.970703 1433.661133 1434.501831 1435.488281 1436.954224 1438.120605 1439.561279 1440.692749 1441.621094 1442.53064 1443.272583 1443.548584 1443.417603 1442.941406 1442.072021 1441.094849 1440.007202 1438.57019 1436.536011 1434.372437 1432.139648 1429.592041 1428.112183 1426.638306 1422.404663 1418.680786 1414.500977 1407.988403 1411.741821 1418.366699 1420.932251 1426.749634 1431.055786 1433.050293 1432.461426 1430.439697 1426.343262 1423.423706 1418.956055 1414.353027 1415.68396 1427.885742 1429.585449 1429.664062 1429.270752 1427.593506 1426.646851 1426.224487 1425.178833 1422.97644 1421.124878 1419.130127 1417.621826 1416.789917 1415.367188 1410.367432 1404.389282 1401.617065 1400.132568 1399.491943 1401.27771 1405.718018 1409.218018 1411.095703 1411.971313 1411.537598 1412.91333 1414.529541 1414.22644 1412.510254 1412.934082 1414.015381 1413.195557 1410.588623 1412.032715 1415.303589 1416.79187 1416.679199 1415.591675 1415.133301 1416.586548 1412.145752 1411.271606 1409.741455 1412.043335 1415.303833 1412.599365 1401.50061 1394.744019 1389.172119 1386.256226 1381.348755 1379.738037 1380.345459 1380.243774 1378.902222 1370.561523 1367.410156 1364.300781 1355.362549 1353.584473 1352.21521 1348.942871 1350.255249 1352.851562 1348.734863 1343.887207 1342.186035 1340.334839 1338.381592 1336.702393 1335.54541 1333.785522 1331.215088 1326.62561 1321.889771 1315.529541 1310.582153 1312.167236 1314.655518 1313.075317 1313.222412 1314.533936 1317.119873 1319.881714 1321.122192 1320.556396 1319.971924 1316.775269 1312.856812 1308.147095 1303.796509 -1665.207397 1669.339111 1671.439941 1670.30188 1663.681519 1656.116943 1649.227783 1643.261353 1636.434326 1638.176758 1644.907227 1657.02063 1670.404541 1685.320312 1697.388428 1707.275269 1719.490112 1724.330566 1723.14624 1722.368164 1721.008301 1719.747559 1724.638062 1733.870728 1750.350952 1762.565674 1769.27771 1771.751831 1772.772095 1774.101807 1775.943359 1777.352905 1774.635254 1773.083008 1775.568359 1772.36084 1760.149048 1746.466431 1734.512939 1727.093506 1722.304932 1719.283081 1730.918823 1733.201416 1729.041382 1722.919434 1719.741577 1718.363647 1716.641968 1713.227661 1717.704224 1720.250977 1725.078247 1729.382935 1733.047852 1739.981567 1744.885986 1755.475098 1767.321777 1773.226685 1778.746338 1783.015991 1788.039185 1793.046021 1795.652344 1797.751587 1799.718628 1798.84668 1796.921997 1794.576416 1792.3125 1786.485718 1781.174072 1777.649902 1773.520264 1769.520874 1765.44751 1761.272583 1756.950073 1753.199219 1748.569458 1743.937378 1736.557861 1730.307739 1724.54541 1718.829102 1716.671265 1717.204956 1719.780396 1724.091675 1728.32019 1731.345581 1731.726074 1730.883423 1729.193848 1726.47876 1723.023682 1719.836426 1715.802979 1712.806396 1710.799072 1708.769165 1706.325928 1706.97583 1708.507568 1709.996216 1710.261475 1709.63623 1707.958374 1701.802612 1695.588013 1694.525635 1694.729126 1697.186523 1705.722412 1712.491089 1718.509277 1722.025391 1724.755859 1726.928833 1726.498535 1724.738159 1724.847656 1723.986816 1723.008545 1722.051025 1721.05835 1721.116333 1720.745728 1711.786499 1700.743774 1689.339966 1679.344116 1672.220581 1661.233276 1645.877441 1632.11084 1626.871826 1615.254028 1603.043701 1593.588623 1580.813599 1565.657715 1558.118652 1550.234375 1553.572144 1560.970337 1564.856079 1573.56897 1582.744751 1587.741577 1601.268066 1606.488281 1613.993408 1621.797485 1615.814575 1599.930054 1587.704468 1576.353149 1559.512451 1548.828003 1555.099976 1565.607178 1573.291504 1579.445068 1587.962036 1598.8125 1611.37854 1615.627563 1613.633301 1608.595459 1600.373901 1595.035889 1590.421387 1586.520386 1582.393311 1579.362549 1575.602783 1568.249512 1560.276978 1566.807861 1573.454102 1574.128052 1568.171143 1559.673218 1552.265259 1547.980347 1553.770264 1560.298096 1566.715576 1573.686035 1581.083862 1590.017334 1601.156982 1612.42041 1622.976074 1628.791138 1633.060913 1632.996704 1630.446899 1625.963379 1618.259766 1623.990601 1636.032837 1644.955444 1646.513062 1646.369385 1648.292114 1651.160278 1658.108521 1660.759766 1660.802734 1657.991089 1650.08313 1635.737183 1631.90918 1638.924438 1641.352539 1636.602173 1646.095703 1652.091309 1656.684326 1653.827637 1647.11438 1635.810059 1618.21582 1606.234009 1607.43042 1611.427734 1607.921997 1598.64563 1595.88208 1595.304077 1604.254761 1616.101562 1625.28418 1624.881226 1622.306274 1614.026855 1605.264282 1597.047974 1586.204468 1597.485474 1603.311035 1611.401611 1619.780762 1626.082275 1635.888306 1643.080322 1644.251953 1641.199829 1638.022705 1635.901855 1634.950439 1635.309204 1635.064087 1633.803223 1633.508301 1637.334961 1642.820068 1647.25 1648.557129 1643.157104 1634.806519 1633.677979 1640.241699 1647.147461 1648.681519 1648.236206 1646.266357 1643.255005 1639.703003 1637.059692 1636.072021 1634.370361 1635.293823 1636.685425 1636.628906 1633.500854 1646.349731 1661.208862 1672.619873 1674.42981 1671.956543 1663.233643 1650.204346 1638.200195 1629.043579 1617.23584 1607.174805 1610.414185 1615.927856 1620.281494 1619.883667 1616.85376 1612.530762 1619.600464 1608.410278 1591.420654 1576.714844 1569.44812 1563.836426 1556.255981 1548.014038 1541.977173 1536.012329 1525.621216 1538.058838 1548.281128 1555.793579 1563.870117 1572.497681 1580.89624 1589.85437 1606.473022 1608.925659 1601.410034 1597.891968 1596.040527 1608.075928 1614.952271 1615.392944 1610.261108 1613.663086 1613.12146 1611.307861 1610.621704 1611.863647 1612.574829 1612.154785 1611.345581 1608.506714 1604.369019 1600.016968 1597.077271 1589.284912 1583.457642 1576.019409 1566.370728 1557.53772 1548.937622 1543.86377 1536.520752 1531.901367 1525.524536 1521.544678 1514.337158 1508.928223 1501.290283 1495.358398 1489.059814 1484.573608 1478.765747 1473.822021 1468.713135 1462.386353 1455.846924 1449.806885 1452.608398 1456.141235 1460.962158 1468.214111 1476.539673 1488.705322 1501.248169 1508.022705 1508.078369 1497.82666 1481.251709 1467.917847 1458.360352 1450.777588 1457.099243 1471.768921 1478.177246 1481.425049 1483.439575 1482.650635 1480.882324 1479.173462 1477.365112 1475.405396 1466.395264 1450.654297 1435.699341 1405.691162 1396.175537 1385.956421 1377.276733 1374.46814 1371.515015 1366.85376 1365.324707 1364.178589 1363.025146 1362.00293 1361.004028 1360.1073 1359.362305 1358.65564 1357.954956 1357.088745 1356.102905 1355.828857 1364.461426 1368.417847 1369.890503 1371.723389 1373.852051 1375.265625 1376.680054 1377.652588 1386.651855 1392.970947 1396.373291 1397.693726 1397.325317 1394.611694 1392.117554 1387.269897 1386.282227 1388.611816 1402.561401 1419.286987 1434.019409 1442.002563 1441.596313 1438.981201 1437.21167 1433.532715 1427.985962 1420.429688 1413.619629 1418.449585 1422.076782 1422.247559 1416.841309 1400.747803 1385.796265 1396.507202 1417.581787 1430.567017 1437.728638 1438.310303 1435.866455 1432.514648 1428.849731 1423.529541 1416.228149 1413.225586 1410.4198 1406.407471 1402.383057 1397.755981 1390.098877 1400.006958 1405.636353 1405.620117 1404.433105 1403.69812 1401.692505 1400.237061 1399.887817 1399.513794 1399.506226 1400.781372 1409.173828 1416.642578 1420.111938 1427.890259 1427.326782 1428.998901 1429.268066 1428.962036 1427.763062 1427.940308 1429.194702 1430.410034 1431.260132 1432.005737 1432.731201 1433.566895 1434.752441 1436.385986 1437.93042 1439.463135 1440.630981 1442.030151 1443.188232 1443.960693 1444.323486 1444.168701 1443.630615 1442.767822 1441.588013 1440.605957 1439.185303 1437.134277 1434.877075 1432.450317 1430.325195 1428.92627 1426.90564 1422.367798 1418.127441 1413.361328 1409.141846 1418.228516 1426.236328 1424.858032 1428.678467 1434.264893 1437.0448 1434.934814 1431.680298 1428.503418 1426.877441 1420.692261 1413.639282 1420.522095 1428.435181 1430.251221 1429.821777 1429.357788 1428.18811 1427.443359 1425.31958 1422.999512 1419.499023 1415.908569 1414.305908 1414.029663 1412.806152 1409.120483 1404.207031 1401.046753 1400.283813 1401.299194 1404.611206 1408.00061 1412.442627 1415.858032 1416.858032 1417.124023 1416.178345 1416.744019 1417.162476 1416.956543 1416.651367 1416.078491 1415.602051 1415.630371 1415.862549 1414.674438 1416.256836 1416.782715 1416.611694 1415.055664 1408.668457 1404.211182 1401.20813 1402.362183 1403.960083 1406.44165 1408.90271 1404.624878 1395.22644 1385.80188 1378.35437 1375.698486 1371.618896 1369.802734 1369.598145 1368.283325 1366.37085 1366.296509 1365.724487 1362.358521 1357.689819 1355.286499 1354.592773 1348.118774 1339.962646 1343.184204 1343.758667 1343.433228 1338.349976 1336.12561 1335.184326 1334.57019 1333.848389 1332.630493 1330.942261 1327.398926 1321.152588 1315.904785 1312.664307 1316.519043 1321.84021 1325.745728 1326.49231 1331.252808 1331.185181 1335.330444 1336.185547 1334.510376 1332.484375 1329.783691 1325.098267 1320.342407 1313.239624 -1643.386353 1648.839722 1654.539062 1654.781372 1650.681274 1641.431885 1634.417725 1631.07373 1625.114014 1632.767822 1639.395752 1647.539673 1660.904541 1676.282471 1688.374634 1697.075439 1705.137573 1711.441772 1715.584961 1719.622681 1724.365967 1729.255493 1734.755005 1746.415527 1761.414917 1771.782837 1778.62439 1783.344849 1785.343262 1786.172119 1789.293823 1790.978271 1787.63501 1787.553345 1786.896973 1779.652832 1764.593506 1746.907104 1735.891846 1736.080933 1729.313354 1726.961548 1739.115723 1743.982788 1741.183716 1736.123413 1733.364014 1730.714844 1724.574341 1720.96521 1720.243042 1719.792847 1725.257812 1730.301514 1733.26355 1739.885742 1745.140869 1752.432617 1756.72876 1765.996704 1773.353394 1780.786499 1787.906982 1793.792236 1798.656616 1803.515381 1807.2771 1807.622803 1804.740845 1800.489136 1796.682007 1791.913208 1785.291382 1780.005005 1775.034424 1770.05896 1764.968262 1759.125244 1754.860107 1750.95105 1745.407959 1740.046753 1732.320923 1728.144531 1723.084595 1719.843628 1720.940674 1720.810303 1723.682129 1728.601807 1732.359009 1734.441895 1734.346558 1733.009277 1731.027344 1727.861572 1724.984131 1721.950806 1718.730347 1714.150879 1710.202515 1708.59082 1705.611328 1704.17981 1705.842163 1707.771118 1709.183716 1709.254639 1707.442749 1703.880249 1700.255615 1698.942261 1699.144897 1701.431763 1706.036743 1712.236572 1717.883789 1721.54248 1725.696411 1729.573242 1731.870972 1731.194336 1729.594238 1727.945312 1725.638062 1723.148438 1721.263916 1721.722534 1721.550537 1710.784424 1699.803589 1685.200073 1669.554565 1660.771973 1650.649292 1634.485229 1621.461548 1619.504517 1610.969604 1592.664307 1583.005615 1572.300171 1559.464478 1553.406372 1553.774292 1559.437378 1568.76001 1572.837524 1577.368408 1593.255737 1596.602295 1607.35083 1615.512695 1624.69397 1629.901245 1614.328857 1595.973999 1580.779297 1567.916748 1557.402954 1559.036011 1565.698364 1573.805542 1581.552002 1591.666382 1601.439819 1605.833618 1612.066528 1621.810303 1621.760132 1617.82959 1614.078857 1607.129761 1596.747314 1593.216431 1589.911255 1586.971191 1583.93689 1576.769409 1570.128296 1571.132812 1578.164185 1579.378662 1576.278198 1567.31311 1557.969727 1551.126465 1553.726074 1559.624878 1566.248535 1573.542725 1581.029663 1589.641846 1600.246704 1612.717407 1625.344971 1635.115723 1636.72168 1638.082764 1638.367798 1637.391235 1632.206665 1623.581299 1631.105835 1634.745239 1636.637695 1640.568237 1645.245361 1650.532104 1658.882935 1661.431519 1662.1875 1659.952881 1649.9104 1633.136475 1626.159668 1634.535645 1634.024048 1633.135498 1644.241943 1655.60791 1661.046509 1652.989746 1643.188721 1629.498413 1613.458252 1602.227783 1597.463623 1609.44043 1603.853638 1594.950073 1591.881348 1594.644653 1603.397461 1614.816284 1624.468872 1623.569458 1618.827271 1611.493164 1603.404053 1594.103516 1584.779663 1588.99707 1599.321167 1604.771851 1610.162842 1621.885864 1635.703857 1645.947388 1647.011597 1642.609497 1636.975464 1634.625732 1635.570557 1636.092041 1636.096069 1635.866699 1634.103027 1637.805786 1644.487915 1647.499023 1649.295532 1648.650757 1638.981689 1640.907104 1646.998047 1651.466797 1655.471924 1658.63269 1655.63855 1652.164185 1648.77002 1645.881592 1643.604492 1641.022461 1638.874756 1636.935181 1634.467896 1635.140869 1645.236084 1658.824829 1671.112549 1674.30249 1673.238892 1666.033936 1656.481323 1645.583618 1633.803345 1623.24353 1613.463501 1596.279785 1602.237061 1608.648193 1610.197876 1607.54895 1604.638672 1600.954468 1598.584473 1597.534424 1587.377563 1578.021484 1568.671021 1559.759277 1550.867676 1545.349854 1537.587402 1525.035156 1533.820801 1542.757446 1548.836304 1556.902832 1560.564819 1573.638794 1587.605835 1599.464478 1600.134521 1591.749878 1586.947266 1594.512695 1603.012085 1609.132812 1607.272949 1608.446777 1611.490967 1610.728027 1608.932739 1608.95459 1609.903564 1611.725464 1611.803223 1611.348267 1609.263428 1605.730713 1598.706421 1595.468994 1586.432861 1582.255127 1575.230225 1568.168091 1560.640869 1554.849365 1549.040527 1542.72168 1537.167725 1531.68335 1526.814453 1519.702393 1512.755859 1506.620972 1500.36853 1494.146362 1489.378662 1483.314209 1476.954102 1472.973145 1467.180054 1461.048218 1452.591797 1447.619873 1449.864136 1453.697754 1458.061401 1463.675903 1472.686523 1484.830078 1497.881226 1503.969238 1497.223999 1480.070312 1465.010986 1455.652832 1447.572998 1450.503906 1467.503906 1475.313965 1478.396729 1480.405273 1478.868408 1475.059082 1476.733276 1474.955566 1468.142944 1452.756104 1436.783813 1401.221924 1386.138184 1376.998535 1375.68689 1373.713867 1371.296021 1369.165161 1366.780396 1365.140503 1363.721802 1362.530884 1361.657471 1360.87207 1360.243408 1359.795532 1359.18396 1358.542603 1357.373413 1357.566406 1371.213867 1376.303955 1378.642822 1380.070801 1381.901855 1383.770264 1385.391113 1386.058594 1387.605957 1394.445068 1398.797729 1401.717407 1402.59375 1402.135254 1399.202026 1394.51416 1390.463745 1387.554932 1387.848511 1398.307617 1411.295166 1430.689575 1442.831543 1442.765747 1441.970581 1440.702759 1436.57666 1430.506958 1422.381958 1417.083984 1425.406494 1428.688965 1427.967041 1420.585449 1407.550537 1386.571167 1396.61853 1412.868286 1427.38623 1440.279907 1440.854248 1438.743042 1434.815552 1429.645508 1424.410767 1419.478027 1415.033447 1411.285278 1407.882446 1405.03894 1400.767212 1393.91748 1402.292847 1408.938721 1412.398804 1411.144287 1408.819702 1405.653442 1401.991943 1404.034424 1403.517334 1401.352417 1400.055298 1403.741577 1410.810669 1414.444336 1417.260132 1423.176147 1427.144653 1427.155151 1426.410767 1425.481445 1427.001221 1428.042603 1429.039307 1430.035767 1430.827759 1431.292969 1431.889404 1433.360596 1435.600708 1437.57959 1439.385376 1440.804321 1442.501953 1443.844238 1444.824341 1445.227417 1445.082275 1444.385254 1443.385498 1442.159424 1440.836182 1439.088623 1437.134277 1434.999878 1432.835449 1430.231567 1428.29541 1425.791626 1421.775024 1416.903198 1410.729248 1413.044556 1425.229492 1429.369507 1426.305786 1430.779175 1437.275757 1439.858521 1436.815552 1433.356567 1430.687256 1428.56543 1423.750488 1418.224243 1425.85376 1429.901978 1430.321289 1429.977905 1429.342773 1428.276489 1427.367432 1425.242554 1422.287598 1418.610962 1414.791016 1414.705444 1414.468628 1413.104004 1405.727783 1402.366577 1402.551514 1403.962891 1408.598999 1414.432739 1415.648804 1417.305786 1418.199097 1418.030273 1417.5 1417.054199 1417.035034 1417.091797 1416.774048 1415.546997 1414.434692 1415.184204 1415.318481 1416.004883 1416.428345 1417.17627 1417.171387 1416.734985 1415.2052 1407.528564 1401.315308 1398.500488 1392.249268 1393.065796 1396.793457 1396.872192 1393.35376 1386.322632 1377.97644 1369.457031 1364.348877 1360.925171 1357.664307 1358.161621 1357.094849 1355.265503 1354.361084 1354.895752 1353.297119 1350.786011 1351.465576 1350.629272 1344.544434 1337.457031 1333.941772 1334.48584 1333.950073 1330.423462 1330.881104 1332.062744 1332.505371 1332.275146 1331.154419 1329.536499 1324.364868 1319.991333 1313.708252 1316.538574 1326.240967 1334.667847 1340.720337 1342.584961 1345.846558 1344.645752 1346.717773 1346.42749 1344.650146 1342.046875 1338.566162 1335.365601 1332.197266 1325.022461 -1623.493774 1624.778809 1633.98877 1637.542603 1635.311523 1626.827393 1617.541382 1616.038696 1615.345337 1621.768677 1634.012695 1640.931641 1650.14978 1662.344849 1676.013062 1684.287964 1689.67688 1696.74585 1707.883911 1717.049438 1727.087036 1734.712036 1743.569946 1756.545166 1770.032593 1782.335938 1788.554199 1793.825684 1797.510132 1799.08252 1800.728149 1800.669922 1798.943726 1798.217163 1794.75061 1779.241089 1763.201294 1743.989136 1745.86377 1749.379761 1738.315186 1733.316406 1751.697754 1761.275146 1758.345703 1750.539429 1745.767822 1737.734863 1730.045898 1727.80603 1727.849121 1725.462646 1725.461182 1732.362183 1736.575928 1743.40979 1750.307495 1757.145264 1761.290527 1765.754272 1770.589233 1780.054199 1787.635498 1793.79187 1800.625488 1805.662354 1810.499023 1815.592163 1814.063477 1805.326172 1800.39917 1794.636475 1787.782959 1781.541748 1775.620117 1769.951294 1764.098389 1757.427979 1753.322754 1749.347046 1743.792969 1738.046387 1731.875732 1729.038696 1725.866821 1724.041992 1724.963501 1726.803589 1729.259766 1732.774536 1736.020508 1737.890259 1737.355347 1735.443481 1732.514771 1729.959717 1727.508911 1724.406982 1720.89624 1712.910645 1706.659424 1705.448975 1702.760864 1700.583252 1699.022583 1701.054565 1704.579468 1707.413086 1707.320923 1706.008789 1705.057983 1704.244507 1704.120361 1704.599854 1706.480591 1711.812866 1717.239014 1721.856567 1726.069214 1730.386719 1733.043457 1733.48938 1732.985596 1730.212891 1726.496338 1720.705688 1717.768433 1719.551758 1716.636963 1706.152222 1698.585815 1685.436279 1671.274536 1654.181396 1638.525146 1624.849609 1611.39978 1598.388672 1602.99646 1583.589111 1575.337646 1562.507324 1557.641724 1554.155762 1556.45166 1565.391479 1578.135132 1583.43689 1582.884033 1602.946411 1605.554443 1608.671387 1619.378296 1634.095337 1634.219482 1616.40686 1593.074951 1579.58728 1563.410034 1562.712524 1569.504395 1578.325562 1587.526367 1598.364624 1605.813843 1611.730713 1615.273804 1618.099609 1626.928955 1632.676147 1626.286255 1620.9021 1615.689819 1608.942017 1600.509277 1597.473511 1594.990723 1591.845337 1587.36145 1575.341797 1572.82019 1583.561157 1586.994019 1582.193604 1575.003296 1563.844482 1556.414795 1553.004395 1558.24585 1565.409546 1572.489136 1580.595703 1588.532349 1597.626343 1609.593872 1620.171997 1628.582397 1634.086304 1637.814575 1638.945801 1639.278687 1637.735229 1635.055542 1632.982544 1633.2854 1635.562134 1643.004395 1647.004883 1650.032471 1656.131104 1659.029541 1661.921387 1660.141113 1647.097168 1630.473511 1620.93103 1630.284912 1624.613647 1630.920654 1644.3479 1656.124023 1658.585571 1650.220581 1638.134155 1622.628662 1611.212769 1602.302734 1596.028076 1597.443726 1595.730835 1589.485474 1585.910522 1593.803223 1603.394531 1613.946045 1621.9104 1619.212646 1611.042847 1606.462891 1600.371094 1591.495728 1583.140869 1584.167114 1593.756348 1604.721802 1614.024414 1625.40918 1636.980835 1646.774292 1648.026367 1642.25647 1635.420532 1631.261353 1633.980835 1635.661011 1636.552368 1635.713989 1636.683716 1641.18335 1646.780884 1648.335815 1649.14502 1648.413208 1645.183472 1648.386719 1651.016113 1654.925659 1658.812866 1666.570801 1667.497559 1662.519653 1659.318481 1658.843384 1652.608887 1647.547607 1642.259033 1636.925415 1632.961548 1634.75293 1639.019653 1653.082153 1664.870361 1672.595215 1673.406372 1669.832275 1662.790771 1652.837036 1639.344849 1627.296387 1616.436768 1600.89917 1589.998169 1593.577759 1596.282715 1595.231445 1597.719727 1593.409302 1587.748169 1586.139893 1586.688477 1579.14917 1570.510742 1562.3573 1554.322754 1545.740112 1534.261108 1523.930908 1527.966064 1536.529297 1541.42981 1547.554443 1559.359741 1575.332153 1586.650024 1595.210449 1592.86792 1584.706665 1583.993774 1590.627563 1597.855225 1599.602539 1597.345825 1606.326172 1610.283691 1609.164429 1607.252563 1607.337402 1608.287842 1610.531616 1611.396851 1611.259644 1610.78772 1608.236084 1603.416016 1599.841309 1593.734253 1586.457642 1580.46106 1574.139648 1566.479492 1560.998291 1554.24585 1548.78064 1542.070435 1536.622925 1529.736938 1523.688354 1517.973022 1512.477417 1504.630981 1497.805664 1492.887939 1487.934937 1482.311646 1477.897583 1472.675537 1466.072266 1456.963501 1448.296143 1445.236816 1447.135498 1449.817139 1455.00293 1460.098145 1466.567383 1478.775024 1490.49231 1492.950317 1481.081299 1464.058594 1453.573975 1442.603271 1438.051514 1455.639648 1465.619019 1470.845947 1477.408569 1476.506958 1468.276001 1469.792725 1467.248047 1456.804443 1430.692993 1399.153076 1384.798218 1377.105835 1374.476807 1372.715454 1370.895752 1368.973877 1366.984497 1365.321167 1364.141602 1362.989258 1362.119507 1361.320312 1360.800659 1360.425415 1360.087524 1359.729248 1358.738403 1357.308594 1366.835327 1376.43811 1383.968262 1388.801147 1391.91394 1394.260742 1395.468994 1396.254272 1396.565063 1397.904419 1401.850586 1405.030151 1408.041016 1408.205444 1406.501953 1401.733887 1397.361328 1392.144531 1388.190552 1387.899658 1395.566162 1408.072388 1422.964478 1434.002686 1442.674927 1443.343384 1442.314575 1439.86084 1431.527222 1425.513672 1426.327881 1430.567139 1431.956055 1429.954712 1422.409912 1409.710449 1389.441406 1398.515381 1415.367554 1426.988403 1438.827881 1441.913696 1440.753296 1437.492676 1432.155762 1426.792847 1420.471069 1415.204834 1411.973877 1410.172607 1406.748657 1402.273926 1400.246826 1402.552856 1410.274414 1416.757935 1417.157349 1414.251465 1410.361694 1408.314087 1411.245728 1412.986572 1410.617798 1406.041748 1401.818481 1404.77832 1409.851929 1413.029297 1417.405396 1420.644165 1421.118896 1420.8479 1421.60144 1423.912598 1426.151733 1427.617798 1427.727173 1429.36731 1429.609619 1429.499268 1431.326782 1434.71106 1437.820801 1439.279175 1441.102783 1443.066772 1444.614014 1445.755249 1446.185425 1446.020264 1445.302612 1444.14624 1442.649902 1440.903076 1438.843872 1436.69104 1435.407959 1433.516846 1429.900879 1427.12207 1424.27356 1420.412476 1415.994751 1411.189575 1419.091064 1428.588867 1431.591553 1428.434814 1434.335815 1440.145142 1439.943237 1437.16333 1434.252075 1431.475464 1428.843262 1426.155518 1423.670044 1427.071777 1429.595337 1430.32959 1430.008423 1429.141602 1427.282471 1426.256836 1424.870605 1422.814087 1420.315186 1418.435913 1416.868286 1416.206421 1415.80127 1412.241211 1408.251343 1410.834717 1414.475464 1415.834717 1418.459106 1418.83728 1418.886719 1418.389282 1417.94104 1416.860229 1415.985596 1416.12085 1415.764404 1414.476685 1411.580078 1411.785522 1412.496216 1414.02771 1415.615601 1416.393066 1417.11377 1417.040161 1417.151489 1415.29187 1410.56897 1405.922852 1401.730347 1393.214233 1387.470215 1387.004517 1387.227783 1383.801025 1377.260254 1370.821289 1363.879517 1356.279419 1352.763184 1351.456055 1351.531738 1350.098389 1347.3927 1345.722656 1344.668335 1342.944092 1339.547363 1339.597168 1338.088013 1331.054199 1328.511719 1328.033691 1327.403076 1326.396729 1324.979858 1325.345337 1330.430176 1331.081665 1330.723267 1329.266602 1324.499634 1319.016113 1316.574951 1314.771484 1326.576416 1339.749756 1348.796631 1352.784424 1353.907471 1356.521484 1356.890625 1354.084473 1353.789062 1353.148315 1350.980103 1348.211426 1344.588623 1341.506958 1333.33374 -1603.014648 1604.640869 1612.444458 1618.72937 1618.442871 1609.365723 1602.526123 1602.519409 1605.977417 1614.089355 1622.780762 1634.306152 1641.257202 1648.956909 1660.332397 1669.213257 1678.204224 1689.724609 1708.296387 1716.870483 1730.360107 1740.168457 1753.635132 1764.670044 1777.088379 1788.095825 1796.282837 1802.357422 1807.221558 1809.164673 1810.341064 1810.720215 1809.963501 1805.408691 1794.441162 1776.907104 1761.876709 1753.417236 1767.019653 1767.963013 1753.119995 1739.503052 1761.974609 1776.054199 1774.916016 1765.7854 1754.737915 1742.844971 1730.4729 1734.355835 1739.199341 1737.870483 1731.517334 1731.084717 1737.871704 1744.822632 1754.191284 1762.321167 1768.865112 1772.253052 1776.334229 1781.608154 1789.216187 1796.861084 1804.690918 1808.473511 1813.223267 1817.781616 1818.179932 1810.40564 1803.631226 1795.217163 1788.638184 1781.998657 1776.089233 1769.342773 1763.703003 1756.9375 1752.942871 1748.812866 1744.772217 1739.296265 1734.940308 1731.416626 1728.378296 1727.76001 1728.866211 1731.066772 1734.753662 1738.126343 1741.669067 1742.509277 1740.826416 1737.990479 1735.353149 1733.144775 1729.94043 1725.647949 1721.744019 1712.751587 1704.300293 1697.238892 1698.416626 1697.744629 1694.315918 1694.234863 1698.364136 1703.546143 1707.598022 1710.36438 1710.728149 1709.920288 1709.217285 1708.098877 1708.307739 1712.676514 1717.599976 1721.438721 1725.809937 1729.703857 1732.581543 1733.431274 1733.554932 1732.282837 1726.421265 1720.202637 1708.770142 1705.689697 1702.155029 1694.69812 1688.989258 1681.430542 1666.503662 1649.192749 1633.536865 1620.245361 1600.456909 1585.192993 1586.905762 1575.649536 1568.591919 1561.049805 1556.668701 1555.075806 1561.741455 1574.20105 1589.434204 1592.598877 1589.967407 1613.184082 1612.832642 1611.564087 1620.627197 1630.088745 1628.868774 1612.011841 1591.20166 1577.976685 1568.978882 1570.004272 1578.584229 1591.143311 1602.348267 1611.030029 1619.595337 1625.244141 1626.083252 1623.872681 1632.065918 1638.940796 1636.663452 1628.925049 1621.507812 1615.932861 1610.889038 1606.338013 1602.975708 1599.528687 1594.070801 1586.897461 1579.536621 1587.807617 1591.075562 1587.789795 1580.99292 1571.877075 1563.499756 1557.567261 1555.343018 1563.703979 1575.491821 1580.8302 1587.825928 1594.680298 1604.924072 1613.932617 1620.088257 1625.372803 1630.840454 1634.950562 1636.61377 1635.836914 1634.633667 1634.746338 1639.195312 1644.437622 1649.187622 1652.253174 1654.547974 1656.682007 1659.790161 1661.714844 1657.098511 1641.383301 1627.026001 1616.230469 1619.689575 1617.248657 1626.001587 1638.491089 1647.441406 1650.241455 1647.158447 1635.220947 1621.636597 1612.307983 1603.34082 1596.032837 1588.55835 1584.887573 1584.085205 1583.810059 1591.164673 1599.878052 1609.812256 1616.266968 1614.661255 1608.213257 1598.965454 1594.753906 1587.031006 1580.470703 1582.336304 1591.769531 1606.774292 1617.212646 1628.34436 1638.673096 1648.945923 1648.852295 1640.650757 1631.806885 1623.31604 1626.842651 1629.756104 1631.196411 1632.506958 1635.00293 1643.114868 1647.426514 1648.530151 1649.434448 1649.647217 1650.011108 1652.428101 1655.198975 1657.894531 1663.01001 1670.947388 1672.605713 1672.273682 1668.391968 1662.859131 1658.532471 1650.291382 1642.849731 1634.935547 1624.988281 1626.278076 1631.79895 1644.045532 1654.589722 1662.761353 1672.310669 1671.262451 1664.216309 1655.099365 1641.954102 1629.302124 1618.110962 1606.622192 1586.700806 1582.498413 1584.580078 1584.592407 1587.061035 1587.007935 1581.602539 1576.272705 1574.422119 1573.723022 1569.02417 1563.057739 1553.702881 1543.901367 1531.003906 1522.132202 1523.574951 1531.118164 1540.096558 1550.003296 1561.519653 1574.172363 1586.067871 1589.69104 1586.399292 1580.983765 1582.643799 1588.244873 1590.88855 1591.710571 1596.00354 1601.38501 1604.762085 1605.282715 1604.58667 1605.232788 1606.920654 1609.222168 1610.574219 1610.578125 1610.830811 1610.22937 1605.828125 1601.663696 1597.273315 1590.059204 1583.868408 1576.889893 1570.551392 1564.312744 1558.127808 1551.474121 1545.167358 1539.372681 1533.89209 1528.576294 1522.762939 1515.921875 1508.138184 1501.254517 1496.610596 1491.417725 1486.262329 1481.624756 1477.192993 1469.740723 1460.862061 1451.69397 1446.147095 1441.961182 1443.440308 1447.442749 1453.171875 1457.11145 1460.973267 1470.137573 1481.496948 1481.556885 1465.12146 1451.93457 1440.844238 1431.864746 1435.924072 1443.662231 1455.869751 1464.47229 1463.972168 1455.408813 1465.347168 1459.599365 1429.922607 1404.901733 1389.019775 1377.550415 1374.390747 1371.750732 1370.442749 1368.794434 1367.03064 1365.35791 1364.387207 1363.359863 1362.470215 1361.614502 1361.115845 1360.766113 1360.749634 1360.636108 1360.398438 1359.265381 1361.062012 1371.563721 1381.530762 1392.356323 1397.41333 1401.552368 1405.239014 1406.981567 1407.364502 1407.664185 1408.145874 1412.482056 1416.387085 1416.026611 1413.911255 1410.435181 1404.970581 1401.252563 1394.116699 1388.730835 1388.911621 1389.607788 1401.388306 1412.102783 1422.2146 1433.177856 1443.482666 1442.541016 1440.291138 1434.708618 1428.481567 1431.251953 1435.116455 1436.337646 1431.512573 1425.334229 1413.197144 1396.634521 1398.794067 1413.862915 1426.364746 1438.118652 1442.362915 1441.814819 1439.682739 1433.577026 1427.587036 1420.119507 1413.919067 1413.736938 1413.556396 1410.133667 1405.171265 1402.193237 1402.337402 1411.088867 1418.411133 1425.39856 1421.413086 1414.776123 1412.979614 1417.254639 1419.377319 1418.875977 1416.772949 1411.773682 1409.021362 1410.027588 1412.125488 1413.533936 1414.827515 1414.805908 1414.176636 1416.36731 1419.055542 1421.716431 1424.521362 1427.19812 1427.687866 1427.51709 1427.209717 1428.584595 1433.786865 1437.073608 1439.168213 1441.521484 1443.872925 1445.655762 1446.876831 1447.324219 1447.019287 1446.178589 1444.888916 1443.168213 1441.076172 1438.720093 1436.924561 1436.691284 1435.851562 1431.333618 1426.878784 1423.225708 1419.098267 1414.87915 1412.550171 1425.044678 1434.719971 1437.188354 1435.4823 1438.65271 1440.433228 1440.078125 1437.631104 1434.71521 1431.414307 1427.856689 1426.53418 1427.480835 1428.405884 1429.818481 1430.466675 1430.110962 1428.549072 1426.604858 1425.979614 1425.150635 1423.960449 1422.637329 1421.522705 1419.551636 1417.598145 1415.920776 1414.630737 1413.327148 1416.744141 1418.846558 1419.960205 1420.19458 1419.667969 1419.026855 1417.929321 1416.628296 1414.18811 1412.415894 1411.673828 1410.535156 1408.289429 1406.216064 1408.650269 1412.286621 1412.893555 1413.519287 1415.386353 1416.571167 1417.180542 1417.390747 1417.369507 1415.548218 1410.19812 1405.613647 1398.446045 1389.766357 1376.745972 1378.572998 1375.535278 1368.259155 1363.922363 1357.332397 1352.801636 1350.114502 1348.781494 1347.212402 1344.681763 1340.463623 1336.523682 1336.290039 1336.464355 1335.095703 1332.953125 1330.114624 1329.819458 1329.97229 1330.08606 1330.346924 1330.526123 1329.198608 1323.348022 1326.933838 1328.511353 1327.276978 1323.023071 1318.204346 1317.768188 1316.324707 1320.749023 1336.245239 1353.376953 1358.580566 1362.362793 1364.275391 1367.148926 1366.050537 1362.766968 1362.020874 1362.489502 1360.673462 1358.213501 1355.07666 1349.202881 1339.392578 -1586.990601 1590.105469 1592.782349 1594.999146 1591.216797 1586.077759 1586.93103 1594.139038 1595.988403 1599.458984 1610.768188 1618.017578 1630.179077 1637.977539 1647.079346 1661.977905 1676.010498 1688.42627 1705.388306 1714.772827 1728.901978 1741.473999 1756.709229 1767.007568 1776.267578 1787.147705 1797.959717 1806.753418 1812.479126 1816.446411 1820.450073 1823.101685 1822.483276 1814.560913 1799.972046 1785.705811 1769.834717 1774.035645 1780.269653 1775.878906 1759.579468 1743.320312 1769.951294 1786.046387 1784.313599 1775.284302 1761.8396 1746.299072 1738.102051 1749.623047 1753.538818 1751.928589 1745.1604 1735.670166 1740.058105 1746.254761 1755.865601 1767.506836 1773.364014 1779.029785 1783.798462 1789.883179 1794.827759 1802.879395 1808.084229 1811.896362 1815.282837 1818.542969 1817.963989 1811.71814 1804.626831 1795.916138 1789.734863 1783.698608 1777.47522 1770.702881 1763.984253 1757.708984 1752.970215 1749.102661 1745.432739 1740.830078 1736.130859 1732.410278 1730.066284 1731.087891 1733.261475 1736.090088 1740.183838 1744.343262 1746.406616 1745.931885 1743.828369 1740.956543 1738.169922 1735.270874 1731.231323 1723.184204 1717.942139 1709.752197 1697.193115 1691.341431 1695.926514 1696.691406 1692.845459 1691.252075 1694.25647 1699.88147 1706.291382 1714.064453 1721.506836 1718.052246 1714.423096 1712.355103 1712.506592 1714.637329 1717.439819 1721.403076 1725.402466 1729.265869 1731.922485 1733.187866 1732.978638 1730.656616 1725.826782 1720.480713 1707.898438 1695.444458 1688.428589 1681.214844 1673.322144 1666.972656 1657.676025 1640.809326 1624.228149 1611.182617 1594.219727 1579.263916 1573.48999 1568.700317 1563.418579 1558.384155 1559.764771 1564.276611 1570.325562 1588.714111 1600.360596 1601.223877 1604.762817 1620.855835 1621.424561 1620.088501 1622.595581 1626.629761 1623.099487 1609.108887 1593.077393 1580.508667 1571.900269 1572.640625 1584.991455 1603.147827 1612.576904 1620.912354 1629.900635 1638.61792 1640.364258 1635.55603 1634.281494 1645.052856 1644.901733 1636.104126 1627.776123 1621.083496 1617.076538 1613.700439 1610.411743 1606.138672 1600.690063 1591.431885 1583.307373 1591.98584 1598.873413 1595.878418 1588.426025 1579.062622 1571.488281 1565.670776 1560.142334 1558.330811 1573.214478 1579.86731 1586.208374 1592.09082 1598.429932 1607.035034 1612.329956 1616.137207 1619.306396 1623.293945 1625.16394 1626.199951 1628.978027 1634.172485 1642.915894 1649.523804 1654.597534 1658.418579 1659.7146 1658.95105 1663.714844 1662.582764 1654.499146 1637.291138 1624.165039 1613.78064 1607.9104 1607.605713 1620.551636 1628.473267 1633.294189 1639.422729 1639.190674 1629.414062 1618.789673 1610.983765 1602.80835 1595.489624 1589.114014 1584.09436 1582.022461 1582.707275 1588.910156 1596.654297 1606.786011 1612.973755 1610.391357 1604.488403 1596.854004 1587.223633 1582.171631 1578.245605 1582.811523 1594.196655 1607.164551 1614.966309 1621.082275 1632.342773 1646.95874 1649.587524 1641.810181 1631.048828 1622.311279 1621.358643 1622.571655 1621.745117 1632.427002 1636.786377 1641.812988 1645.839355 1648.02063 1649.615967 1651.030273 1653.375732 1656.778687 1659.183838 1661.838013 1665.369141 1669.204956 1670.554565 1671.590942 1666.291504 1662.729004 1643.480591 1642.257568 1640.32373 1633.320435 1622.965698 1623.815186 1629.049194 1632.612427 1642.887451 1657.909668 1668.12146 1669.752686 1664.396118 1656.588135 1644.676636 1631.898193 1620.469971 1609.266846 1594.737305 1574.404663 1572.635132 1574.463013 1574.794434 1573.68811 1572.102661 1568.997192 1564.308228 1565.109985 1564.004883 1562.121216 1554.369995 1545.102173 1532.072876 1521.320068 1522.451416 1531.588867 1542.971558 1552.018311 1561.776733 1572.730591 1585.648682 1588.024414 1584.583862 1573.272217 1577.689941 1583.037598 1583.272827 1585.345215 1593.230103 1598.136108 1600.753174 1599.932861 1599.390869 1602.672485 1605.031616 1607.03418 1608.920654 1609.026611 1609.531982 1608.762939 1605.556519 1601.296997 1597.477783 1591.552124 1585.485596 1578.295776 1571.958008 1565.866821 1559.884644 1553.624756 1547.812866 1543.235596 1538.177368 1532.544678 1526.257812 1519.846924 1513.315186 1506.650146 1500.592773 1494.868164 1489.363647 1484.576294 1479.973633 1473.669556 1463.697021 1456.843628 1451.843872 1445.380005 1440.147949 1437.57605 1443.133179 1450.59436 1454.415649 1457.923706 1462.148682 1472.269287 1467.864868 1451.637329 1440.820068 1431.618774 1424.889771 1427.107544 1437.268433 1445.945312 1446.741089 1440.501221 1458.704956 1432.77063 1412.075439 1392.664185 1380.128296 1374.396362 1369.330933 1368.308472 1368.69397 1367.203247 1365.516968 1364.501343 1363.65564 1362.543945 1361.895508 1361.242188 1360.929932 1360.935669 1361.236816 1361.645142 1361.597168 1359.385132 1365.422974 1373.706543 1387.56665 1398.386841 1404.613525 1409.807129 1413.847656 1417.218018 1419.642578 1419.28064 1415.305054 1420.739502 1424.864136 1427.095825 1427.29834 1417.665283 1411.521729 1406.060181 1396.9104 1389.759033 1394.078491 1398.051758 1399.900391 1402.121948 1413.550781 1422.009033 1436.142212 1442.390381 1440.64978 1436.047974 1434.689331 1436.582275 1439.697021 1439.741699 1434.515259 1427.981934 1414.57605 1401.124634 1397.043457 1411.976807 1426.492798 1438.361206 1442.579224 1441.789673 1440.161621 1433.837646 1427.10791 1423.734131 1419.070801 1419.049805 1418.22229 1415.386719 1408.638672 1402.185669 1403.485352 1411.89502 1420.95874 1428.5979 1428.090454 1418.518188 1414.554077 1422.0896 1425.938232 1425.388672 1422.329712 1418.293579 1414.609131 1412.049683 1411.927979 1412.583374 1413.636475 1414.3927 1414.2323 1413.997681 1413.944458 1415.351685 1423.068115 1425.771118 1426.24939 1426.524658 1426.875122 1428.979492 1433.876343 1437.316895 1439.145874 1442.123901 1444.891357 1447.049438 1448.230713 1448.681763 1448.432861 1447.222168 1445.733398 1443.819824 1441.619385 1439.303711 1437.981567 1438.824341 1439.436646 1434.282959 1427.088989 1422.393555 1418.188477 1414.382812 1415.608887 1428.901367 1439.167114 1439.234619 1437.46167 1439.335693 1440.551392 1440.300537 1438.556274 1435.281128 1431.328979 1427.269043 1427.228638 1429.33374 1430.182129 1430.924805 1431.307983 1430.681763 1429.177856 1427.647339 1426.740356 1426.709717 1426.391479 1425.915161 1425.725586 1422.647339 1417.693481 1414.617432 1414.926392 1417.464844 1420.696289 1422.688354 1422.519165 1421.419556 1419.924561 1417.755249 1414.779663 1413.233398 1410.652222 1408.030029 1405.381958 1404.101807 1402.026001 1400.927124 1409.62561 1414.950073 1414.392334 1410.763672 1413.126099 1415.151001 1414.571289 1416.282349 1417.328125 1416.949951 1413.046875 1406.896851 1400.695679 1391.028809 1378.554688 1368.309326 1365.291382 1362.972168 1359.407837 1354.55542 1350.950562 1348.466431 1346.368042 1344.649536 1342.28418 1336.680908 1337.344727 1336.769165 1333.546143 1335.444214 1339.714844 1340.660278 1338.680176 1334.672729 1333.610718 1333.282104 1329.91687 1328.580688 1322.444092 1322.419312 1322.093262 1321.806274 1319.224609 1322.962036 1326.767578 1327.203979 1327.824951 1343.23999 1358.664429 1364.336426 1369.113403 1372.600342 1374.774658 1375.064819 1369.962036 1369.292969 1370.990601 1369.864258 1366.600342 1361.01062 1354.930664 1347.904419 -1561.207764 1566.922974 1567.685547 1570.276245 1580.811523 1594.697021 1600.945068 1602.130737 1604.177002 1606.863281 1609.072388 1610.578491 1616.41394 1622.838867 1639.821777 1656.208374 1673.759399 1683.892944 1700.892578 1711.44519 1721.682373 1736.641968 1751.476562 1762.096313 1771.165405 1782.474976 1794.622925 1806.479004 1816.593506 1823.850464 1831.005249 1835.029053 1832.651733 1822.364746 1810.175537 1797.279541 1784.517456 1792.78833 1793.948853 1781.019165 1757.721436 1760.630371 1783.372192 1792.080444 1788.738037 1779.806396 1766.306641 1748.083252 1751.848877 1766.969604 1770.729492 1768.306274 1760.371826 1747.635498 1742.35022 1749.359863 1756.950195 1768.780762 1776.095337 1783.98938 1792.256836 1801.516113 1806.089233 1807.505371 1811.394531 1815.011597 1817.863037 1819.072998 1818.098145 1812.177002 1805.283936 1798.352295 1791.710815 1785.436279 1779.248291 1771.058716 1764.400757 1758.005127 1753.029541 1748.479492 1744.652954 1740.396973 1736.490356 1733.22522 1732.220459 1736.12146 1739.730591 1742.36084 1745.392212 1748.901855 1749.739868 1748.640991 1746.568115 1743.710815 1740.192139 1735.950562 1730.530884 1720.489624 1711.239746 1701.848022 1691.838257 1682.632812 1691.436035 1696.049683 1689.48645 1686.498047 1690.692871 1696.924316 1702.380005 1707.420654 1717.121216 1721.065552 1718.764404 1716.715332 1716.119629 1716.777588 1718.0177 1721.607788 1725.410889 1728.464233 1730.653442 1731.373047 1729.450195 1726.303833 1722.810059 1718.76355 1707.169067 1693.204834 1679.089722 1671.75415 1664.369385 1654.754028 1644.150879 1631.955444 1616.69165 1602.706299 1588.242798 1574.672607 1568.379883 1563.331909 1559.357178 1563.582764 1568.46582 1573.780884 1589.601929 1601.130371 1608.710327 1607.713501 1610.986572 1626.961914 1627.673218 1627.154297 1628.398315 1629.656128 1624.710205 1614.986084 1596.614014 1586.260742 1575.157593 1571.747925 1590.731323 1605.851685 1617.383179 1628.122192 1640.292725 1650.863892 1653.885254 1650.072876 1644.78125 1651.547241 1652.924561 1642.989624 1634.805298 1628.63147 1622.562378 1619.721436 1616.873413 1612.165894 1605.331909 1596.453491 1588.428467 1597.729858 1607.259277 1603.712891 1595.087402 1586.135986 1578.89209 1572.163574 1565.482178 1559.60376 1567.419678 1577.457764 1583.525879 1589.146362 1594.011597 1598.935547 1604.300049 1608.296143 1609.171387 1609.811646 1617.246338 1621.857056 1627.974365 1636.398071 1647.432495 1654.185059 1659.817871 1664.508789 1668.281372 1668.679565 1668.703247 1664.945068 1652.720703 1636.478638 1624.072998 1615.192017 1607.500977 1604.778809 1609.956299 1618.551392 1622.859253 1627.789917 1628.646118 1624.471558 1617.351196 1610.027466 1602.668091 1596.421265 1589.126221 1583.184814 1580.067993 1580.662231 1586.754272 1595.23938 1604.42627 1610.401978 1605.905762 1599.741089 1592.770874 1584.949707 1577.781006 1578.689087 1584.508423 1594.601685 1605.463379 1612.938232 1620.291504 1630.602905 1645.188843 1649.886353 1644.213989 1631.588867 1621.305908 1615.088379 1616.421021 1625.019531 1634.824707 1635.990112 1640.53186 1644.950317 1647.683594 1649.249756 1650.516479 1653.467041 1657.527222 1660.860718 1664.258667 1668.545776 1670.13269 1669.920898 1665.982056 1658.017212 1643.729004 1634.858765 1632.637329 1634.626221 1629.972534 1621.706543 1623.077271 1627.178589 1631.844849 1644.64624 1658.389404 1663.015137 1664.079346 1662.811401 1656.839355 1646.314575 1634.131836 1622.099976 1610.855469 1594.899414 1579.915527 1570.337769 1563.547974 1565.417358 1564.291992 1558.989014 1560.074829 1557.095947 1556.062988 1556.234741 1555.951538 1550.603516 1541.880859 1527.731201 1517.838623 1519.891235 1530.449463 1542.214966 1552.493896 1562.113892 1573.357666 1585.165771 1587.872559 1584.846069 1571.149292 1572.03833 1573.371948 1574.777954 1583.843506 1588.640625 1593.900024 1596.049194 1595.398682 1597.578125 1600.653076 1602.923828 1604.942383 1606.641479 1607.373169 1607.428955 1606.562866 1604.081665 1600.835449 1596.764038 1591.250122 1585.58667 1578.753174 1572.021851 1567.219604 1561.461304 1556.671387 1551.584839 1546.637817 1541.491577 1535.667969 1530.564941 1525.249634 1517.773193 1510.587891 1503.794922 1497.85376 1492.432983 1487.581177 1482.868774 1477.362183 1467.931274 1460.733765 1455.782471 1450.394287 1444.146973 1438.342773 1435.753174 1440.339111 1446.879883 1451.070068 1454.971802 1459.927002 1465.026611 1453.129639 1442.011963 1432.472046 1425.745239 1423.060303 1423.419922 1427.626587 1427.8479 1431.929932 1429.279419 1415.170776 1395.282837 1385.51355 1377.725586 1371.294434 1365.755005 1365.682251 1366.95813 1365.593018 1364.576904 1363.64502 1362.744507 1362.165039 1361.559692 1360.989258 1360.923706 1361.16748 1361.958252 1363.185181 1365.062012 1361.512817 1363.927124 1372.521973 1389.173096 1403.410522 1410.688477 1417.857666 1425.977295 1429.107422 1430.003052 1429.340942 1426.194458 1428.684082 1433.586426 1435.639771 1432.712036 1429.355347 1417.668335 1407.670044 1399.183105 1396.525146 1403.419434 1408.628784 1409.531616 1404.985962 1405.679077 1413.557007 1425.289917 1436.797363 1439.451904 1438.242798 1439.475342 1440.21582 1441.067261 1440.471313 1435.802124 1428.849609 1415.467651 1404.818726 1397.497437 1410.185669 1425.537598 1438.881714 1442.292969 1441.353516 1439.350342 1434.640747 1428.837158 1428.672729 1428.674438 1426.531372 1422.947998 1418.117676 1411.202026 1403.251953 1404.443359 1416.772827 1424.221069 1428.689209 1429.017456 1424.251953 1421.778198 1427.062378 1428.261719 1428.330078 1427.334839 1423.675537 1418.886597 1415.139038 1412.000488 1412.577026 1414.033569 1415.783813 1417.723511 1419.26416 1420.334351 1424.18457 1426.800171 1427.148682 1427.30188 1427.872314 1428.979248 1431.344238 1434.784668 1437.876587 1439.376709 1442.796997 1446.288208 1448.665161 1449.848755 1450.153442 1449.840332 1448.450562 1446.662109 1444.589722 1442.429199 1440.573975 1438.872437 1438.568848 1439.171631 1430.605591 1425.039795 1421.197632 1417.119629 1415.202881 1422.230713 1432.356079 1439.773193 1439.213013 1438.232056 1439.810181 1440.669922 1440.466919 1439.185547 1436.413574 1433.603516 1431.373413 1429.917847 1431.563354 1432.550537 1432.698486 1432.509766 1431.706177 1430.595215 1429.285767 1428.744873 1428.696655 1428.231445 1427.846436 1427.490112 1425.240845 1419.445435 1415.595825 1418.270386 1422.876099 1425.44165 1426.210083 1424.240601 1420.785156 1418.315552 1414.340088 1410.283203 1407.676514 1405.910645 1403.800171 1399.802002 1397.838501 1396.300903 1398.204712 1403.957275 1409.977295 1411.548828 1406.718872 1406.327759 1405.102417 1409.335449 1414.540039 1417.149658 1417.106201 1412.835083 1405.578125 1399.072754 1389.82019 1378.840454 1368.167969 1362.688354 1358.973145 1356.98291 1355.178589 1350.654907 1346.44104 1344.364502 1342.338867 1338.211792 1340.129517 1343.13916 1343.593262 1343.41272 1344.023438 1344.362549 1343.756836 1341.910767 1338.47937 1336.942261 1336.339355 1335.049316 1333.578857 1331.314087 1330.456543 1327.445801 1323.388916 1324.497681 1331.013062 1336.14502 1341.4198 1336.403809 1347.07666 1360.517212 1367.862549 1374.449341 1379.621704 1384.602417 1384.760376 1379.599121 1376.450195 1379.545288 1378.285889 1372.763794 1364.574707 1360.08313 1357.814087 -1571.117676 1576.704224 1581.307373 1589.235229 1601.700439 1610.513428 1615.201538 1615.060059 1615.81189 1619.078979 1625.02356 1632.344482 1635.394775 1632.669189 1631.455322 1647.388428 1668.299561 1677.556519 1695.086548 1707.795898 1716.042969 1728.103882 1743.189331 1754.580322 1764.368896 1778.382324 1789.866699 1803.817749 1815.958008 1826.737671 1838.52417 1844.744873 1841.461914 1829.999878 1817.25708 1805.37854 1802.152222 1802.583862 1796.699829 1779.695923 1768.886841 1787.042603 1797.636963 1797.879761 1793.988892 1781.66687 1767.038574 1753.71582 1765.377441 1776.934082 1781.207031 1779.668701 1772.026489 1760.62146 1747.380127 1752.672363 1760.833008 1767.85022 1777.097168 1785.399902 1796.406128 1806.385864 1808.684937 1810.439575 1813.724487 1817.310547 1819.084473 1819.396118 1818.506958 1812.451538 1806.41626 1798.271851 1791.405884 1785.672485 1779.674561 1770.649414 1764.397705 1758.49353 1753.124756 1747.289185 1743.320679 1739.922607 1736.959106 1735.810181 1737.764771 1742.319092 1747.031494 1750.696777 1753.0 1753.743408 1753.592041 1751.319946 1748.488892 1745.447754 1740.728149 1735.280762 1729.014771 1720.339355 1707.589355 1695.856689 1686.004761 1680.798828 1682.77002 1688.849854 1686.613647 1681.758911 1685.984009 1692.023071 1697.011841 1701.788574 1708.126343 1718.946167 1721.47644 1721.592407 1719.471558 1718.587769 1719.164795 1722.268555 1725.084717 1727.234253 1728.625854 1728.285522 1725.523193 1721.404175 1716.650269 1710.062744 1699.451538 1686.322754 1670.806396 1662.955933 1656.65271 1645.541626 1633.112061 1620.006226 1608.657471 1594.846802 1578.544067 1570.776611 1565.692749 1560.771362 1564.781372 1570.182129 1578.057739 1592.86377 1602.333862 1609.068726 1617.956299 1613.554932 1616.584839 1632.693481 1634.698975 1633.378296 1634.811157 1636.182007 1634.347412 1623.685547 1604.990234 1592.105835 1579.934204 1571.077637 1590.918579 1607.40271 1620.991699 1632.734985 1649.176025 1659.931641 1664.763184 1661.609131 1656.310425 1658.406006 1662.893921 1656.34021 1643.120972 1637.877319 1633.213989 1627.955566 1623.371948 1617.392944 1609.922241 1598.915283 1595.232666 1603.246948 1613.040161 1611.708008 1602.389893 1593.554321 1585.794678 1578.52356 1571.672241 1562.89563 1564.151001 1575.393066 1581.242188 1586.573486 1592.288452 1595.85437 1598.465088 1606.541626 1609.799927 1616.397095 1624.82959 1631.622925 1634.90918 1640.488525 1649.793579 1658.294556 1664.154541 1669.558472 1673.677368 1676.484253 1679.056641 1670.901978 1657.357056 1641.637207 1632.862305 1624.980469 1612.963745 1602.134766 1598.053223 1607.2854 1611.640869 1613.901001 1616.537842 1618.927856 1615.967896 1611.71167 1605.143433 1598.647827 1588.838623 1582.245605 1577.031494 1575.276978 1584.016235 1594.385132 1602.030029 1604.172485 1599.746094 1594.001465 1586.913208 1578.522949 1573.016235 1587.16687 1593.076538 1596.987183 1604.588867 1611.423706 1620.127319 1632.404175 1645.247437 1648.56311 1637.967285 1625.497437 1616.048462 1609.341187 1615.78772 1624.457642 1625.847534 1633.210815 1640.024048 1646.454956 1648.098633 1648.348877 1646.266724 1649.581787 1654.039429 1657.416382 1663.847046 1672.002441 1672.775757 1671.644531 1664.946411 1653.142334 1639.674927 1632.23938 1626.384888 1626.630981 1625.299683 1618.718384 1619.021484 1625.53125 1632.155518 1643.328735 1651.264038 1655.878174 1659.57959 1661.394775 1656.97937 1645.626221 1634.13501 1621.635376 1611.12146 1596.460205 1582.749146 1576.356934 1559.310425 1556.568726 1556.041382 1553.425293 1552.75354 1550.092529 1546.746704 1547.343506 1549.073486 1545.771729 1535.58252 1521.72937 1515.68396 1517.803101 1527.521606 1542.010132 1552.86731 1562.173218 1573.825806 1583.876465 1588.073608 1585.10083 1571.174805 1561.604248 1565.695068 1572.234375 1579.297241 1585.814453 1585.804443 1587.625488 1586.272095 1592.573608 1598.294312 1601.52002 1603.175903 1604.436768 1605.080933 1605.187744 1604.251709 1602.326416 1599.495361 1595.587891 1590.39563 1584.526611 1578.916138 1573.22522 1569.643555 1564.703857 1559.8927 1555.220337 1550.412109 1545.22644 1539.854614 1534.431274 1528.34021 1521.157104 1512.669678 1506.163574 1500.292603 1495.203003 1490.479858 1485.533447 1479.980591 1473.060425 1464.643921 1458.911255 1452.867676 1447.264038 1442.560425 1438.405151 1433.231323 1438.093384 1442.550293 1448.168823 1453.748901 1459.065063 1454.913696 1442.803345 1433.451782 1426.020264 1421.658936 1417.486572 1413.759277 1414.419312 1415.532837 1411.75293 1396.821167 1387.654541 1381.915161 1376.576294 1370.796387 1366.776489 1365.988892 1365.546753 1364.538818 1363.311768 1363.045288 1362.816162 1362.081543 1361.449951 1361.063965 1361.132812 1361.524902 1362.481567 1365.151855 1367.846313 1367.466187 1361.716309 1365.839111 1387.415283 1406.950684 1416.809448 1426.606079 1430.855957 1435.002075 1436.806274 1435.505737 1434.780762 1436.04895 1441.092896 1440.353149 1436.012085 1429.060181 1419.072876 1408.163452 1401.990967 1403.657227 1408.777466 1416.161255 1418.565796 1417.569092 1414.778687 1412.062866 1413.561401 1424.505981 1431.016357 1439.855103 1441.994995 1442.088501 1441.67041 1441.028076 1436.720825 1429.750244 1417.022095 1408.137207 1399.919312 1410.363403 1424.547607 1438.110596 1441.398926 1440.257324 1438.2854 1435.569946 1433.478882 1432.588501 1432.182129 1429.908936 1426.185791 1419.554321 1412.555542 1404.600098 1403.314575 1417.263428 1425.528564 1429.331421 1429.148926 1427.327637 1425.531006 1428.008911 1428.991333 1429.175293 1428.717407 1427.450806 1423.696533 1418.819824 1412.465576 1412.486694 1413.366699 1415.852783 1418.760864 1423.04187 1426.878418 1428.21228 1428.794434 1428.938354 1428.976807 1429.624756 1431.069946 1433.359863 1435.802856 1437.864502 1440.271851 1444.068237 1447.859131 1450.290527 1451.377319 1451.505493 1451.05127 1449.633179 1447.689453 1445.345215 1443.304321 1441.432495 1439.356934 1435.358765 1429.463623 1425.786133 1422.360229 1419.040161 1416.819214 1420.333862 1427.759888 1437.639893 1439.780029 1439.117432 1438.663452 1440.252075 1440.828003 1440.570557 1439.053223 1437.325195 1436.544678 1435.562866 1434.681274 1434.982666 1435.090576 1434.704956 1434.084961 1433.412476 1432.5448 1431.64978 1430.534058 1429.706055 1428.571899 1427.446655 1426.695435 1424.25769 1420.354614 1417.527588 1418.789917 1426.86084 1428.899536 1427.207764 1421.091431 1416.928101 1412.060547 1406.568848 1403.729614 1401.339111 1400.299316 1397.56958 1392.285278 1391.041016 1389.923706 1390.370605 1395.256714 1399.234375 1401.545288 1400.853516 1396.262085 1399.562378 1407.372437 1413.767944 1416.488647 1416.094849 1409.484741 1400.552979 1390.82251 1383.009155 1374.013672 1365.092529 1359.520264 1355.567261 1352.609497 1350.992065 1345.67981 1343.486328 1341.837036 1338.717285 1342.965698 1344.57605 1345.912842 1346.422485 1346.54541 1346.733521 1346.379395 1344.936768 1342.104004 1339.983765 1338.985229 1339.935059 1340.448975 1339.789917 1339.71521 1338.844727 1336.956787 1332.574829 1330.771606 1338.599731 1344.776733 1353.184204 1346.7146 1349.861816 1361.246704 1369.240479 1376.147461 1385.202393 1392.689453 1393.667358 1388.917358 1384.210205 1385.69812 1386.68042 1379.210449 1373.533813 1368.084106 1367.954468 -1593.855225 1601.285156 1603.099487 1605.496582 1615.869873 1626.240723 1631.943115 1632.787476 1629.441528 1632.096924 1640.232422 1644.540771 1646.18457 1645.959473 1641.172729 1638.864014 1660.186523 1673.42981 1684.435059 1700.918701 1710.275879 1720.61792 1732.060791 1747.991699 1757.071045 1769.981445 1784.035645 1796.982056 1810.565918 1823.907593 1837.098267 1846.743408 1843.542114 1835.445435 1826.046387 1817.551392 1812.040649 1808.047974 1797.185059 1780.611694 1790.349365 1800.386719 1804.71521 1803.239136 1795.810425 1781.674805 1767.531616 1761.738525 1773.210693 1786.140747 1791.720703 1788.647583 1778.658447 1767.304199 1754.233887 1757.194946 1765.916992 1771.836426 1778.614014 1786.889771 1796.972534 1806.730713 1809.560303 1811.522461 1814.321411 1817.330078 1819.032104 1819.537354 1817.810425 1810.258423 1803.55188 1796.461792 1789.887085 1784.586304 1778.306519 1769.999634 1764.115723 1759.158447 1753.70874 1747.221558 1742.279663 1738.932983 1736.855591 1737.310303 1740.989746 1746.206299 1753.861084 1758.596191 1758.52002 1758.019043 1756.828369 1753.386475 1748.689209 1745.509766 1739.648071 1733.547485 1726.247681 1719.64624 1710.195679 1698.163452 1686.199341 1678.432739 1675.397583 1684.460205 1684.438599 1681.719849 1681.420166 1685.918823 1691.323975 1696.14978 1703.32373 1715.573364 1724.889282 1728.593262 1724.633057 1721.42041 1721.315186 1723.313354 1724.622803 1725.814697 1726.201294 1725.416626 1722.337769 1717.146729 1707.273315 1701.57251 1692.793701 1681.025635 1671.381226 1660.958008 1651.598999 1637.366333 1624.264404 1612.648926 1604.085449 1593.053345 1571.924194 1567.818115 1564.390137 1565.114502 1571.754272 1581.018677 1595.703735 1604.220093 1610.856445 1622.110962 1628.276978 1624.14563 1623.37146 1645.9646 1649.178955 1649.675049 1650.308838 1648.170776 1641.358032 1626.399292 1611.654419 1600.053345 1588.735962 1577.471069 1589.15979 1605.838623 1621.834229 1633.984741 1654.258545 1668.979614 1674.986572 1674.082031 1667.174194 1666.278687 1672.891357 1666.851807 1654.784546 1644.227783 1640.061157 1635.772583 1629.233643 1621.688477 1612.492065 1600.320801 1596.486938 1606.693848 1616.737549 1617.176636 1609.616821 1600.326294 1591.794189 1583.538208 1575.932373 1565.814941 1567.957153 1572.703247 1580.70166 1585.606323 1593.393677 1598.967407 1602.708374 1609.393066 1617.326172 1627.07312 1635.526855 1641.791016 1646.601807 1648.89563 1654.544189 1661.589478 1667.439087 1672.484131 1676.813232 1681.051025 1685.214966 1676.360107 1660.788086 1647.176392 1637.671509 1627.919434 1616.929077 1604.209351 1595.167969 1596.420532 1598.189453 1599.064331 1604.428955 1613.218872 1613.79541 1612.133545 1605.72583 1597.657959 1588.810913 1581.578125 1575.580566 1572.832031 1582.683472 1594.174316 1601.324951 1601.923584 1598.466187 1587.594604 1579.658447 1572.124634 1579.072388 1593.313354 1601.090454 1604.5 1610.234741 1615.488892 1620.911011 1636.53186 1645.85022 1644.098389 1633.08728 1620.113892 1609.870361 1607.278809 1609.948242 1617.304443 1626.238037 1636.736572 1642.725464 1647.516113 1648.229858 1647.739746 1642.830688 1643.333374 1647.283813 1651.230469 1662.417114 1673.393066 1674.070557 1673.648926 1665.773071 1651.880005 1641.472534 1632.823486 1626.808838 1620.579712 1619.440918 1612.916992 1610.10083 1621.882202 1626.224121 1635.074219 1641.358643 1649.363647 1658.504517 1658.294556 1655.717163 1644.941528 1634.118164 1623.417358 1612.952881 1600.991821 1585.11792 1578.463013 1568.763184 1553.138184 1547.501099 1543.842896 1544.64978 1543.374023 1540.489746 1541.988159 1543.542114 1540.815674 1533.486572 1525.895386 1513.771362 1511.040527 1527.056152 1541.125244 1551.692749 1559.946655 1571.695801 1580.940796 1586.984497 1583.422607 1571.720337 1559.538818 1559.759644 1567.959839 1575.056641 1577.089111 1576.651978 1579.666504 1579.29187 1585.640625 1599.250244 1600.598755 1600.964722 1602.245239 1603.084595 1603.188599 1602.477295 1600.802856 1597.839355 1594.489258 1589.871582 1584.87085 1581.170288 1576.966553 1573.333984 1568.664062 1563.727661 1559.045288 1554.224365 1549.041748 1543.3479 1537.777466 1530.843262 1523.514038 1514.438721 1508.043091 1502.471802 1497.2052 1492.609497 1487.825317 1482.248779 1476.423706 1468.91626 1462.707642 1455.308228 1449.36145 1445.839111 1441.950684 1434.055542 1430.426758 1433.472168 1440.160156 1447.124023 1452.607788 1452.428345 1443.015747 1433.844116 1426.157349 1421.14209 1416.93103 1412.56189 1408.634277 1401.509033 1396.073608 1388.074219 1383.053345 1378.660034 1375.33374 1371.311646 1368.722412 1367.04248 1364.481567 1364.078369 1364.242554 1363.674072 1362.86792 1362.178223 1361.725708 1361.454834 1361.550903 1362.324219 1364.392456 1368.324829 1376.317383 1370.58667 1366.308472 1362.479248 1378.815552 1402.355469 1416.546997 1427.706055 1432.096436 1438.122314 1441.55542 1440.594727 1440.015503 1441.271118 1448.669312 1443.768188 1438.385742 1425.635742 1416.304199 1411.755005 1409.264771 1415.112915 1416.508789 1422.881836 1425.309448 1425.494385 1423.27478 1418.769897 1413.905151 1417.040649 1429.497314 1442.133667 1443.06958 1442.417603 1442.14856 1439.894165 1435.29187 1429.604126 1417.187988 1409.485962 1401.730957 1410.352783 1423.649658 1436.859741 1440.670044 1439.525269 1437.568604 1437.161621 1437.207397 1437.660645 1435.929199 1431.306152 1426.714722 1419.222168 1413.263672 1406.774048 1404.21228 1413.098755 1419.918213 1426.876587 1428.645386 1428.474365 1428.811768 1429.635132 1429.928101 1429.893433 1429.682251 1428.908203 1427.496704 1422.455444 1413.233398 1412.621826 1412.560425 1413.507202 1416.177124 1421.246216 1427.324097 1428.552246 1429.217896 1429.657227 1430.362671 1431.269653 1432.915894 1435.11792 1437.179077 1439.410278 1442.845215 1446.507812 1450.238892 1452.100098 1452.690552 1452.588013 1452.214478 1450.751099 1448.384644 1445.938965 1443.556885 1441.165283 1438.241699 1435.018921 1430.814209 1426.447144 1420.651733 1418.244019 1419.945557 1423.419067 1430.75415 1440.154907 1440.569336 1439.041138 1439.099854 1440.896973 1441.366943 1440.55127 1438.677368 1438.393066 1438.46521 1438.450806 1438.178711 1438.081421 1437.33667 1436.544189 1435.78418 1435.466553 1434.833618 1433.682739 1431.966187 1429.891235 1427.266968 1426.361694 1425.170532 1423.555054 1420.844971 1417.639526 1415.735107 1418.037109 1416.741577 1413.990967 1411.45105 1405.288086 1401.205322 1400.234619 1398.262085 1396.381958 1394.252197 1392.673584 1391.326538 1389.462524 1386.301025 1384.725586 1386.456665 1388.517334 1389.284302 1388.408813 1387.773071 1397.956055 1404.674194 1410.008057 1412.932983 1410.726685 1403.573975 1393.789307 1384.960449 1376.273315 1366.319336 1360.090942 1354.501099 1351.932983 1348.257202 1342.553589 1341.113037 1340.140503 1341.525269 1345.348145 1347.906616 1348.739624 1348.97522 1349.298096 1349.4646 1349.177002 1348.067627 1346.231812 1343.471191 1340.483276 1341.828491 1345.073486 1347.283569 1348.011719 1350.122559 1351.488525 1347.897461 1343.917358 1340.303833 1346.103882 1356.198242 1357.525513 1353.740112 1355.394165 1365.276123 1371.340576 1376.145752 1386.729248 1395.228638 1400.906372 1394.710327 1388.621338 1392.023315 1392.346313 1388.170776 1387.055908 1380.430664 1379.560913 -1610.161377 1616.998169 1618.068115 1620.666626 1630.485596 1638.198364 1641.246704 1641.96582 1641.129395 1642.668335 1653.574341 1662.63855 1666.379517 1666.745483 1661.213135 1650.196167 1645.856567 1666.019165 1677.419922 1692.469604 1702.593872 1712.814209 1724.005249 1739.020508 1750.70813 1761.714355 1775.117798 1788.097168 1802.202881 1813.271606 1825.625244 1835.907837 1838.099487 1834.626343 1829.094482 1822.436401 1817.074829 1808.823975 1797.445801 1795.684082 1804.544922 1810.012817 1811.167969 1808.598755 1797.71167 1783.526611 1773.589478 1773.194702 1780.871948 1795.332642 1797.510986 1795.240356 1784.589844 1772.999023 1757.815918 1760.222778 1771.395386 1776.654419 1782.98291 1790.712891 1801.625732 1807.569214 1810.155518 1811.137695 1812.644653 1815.081177 1818.208862 1819.066162 1815.899902 1808.836182 1801.235474 1793.293457 1787.806763 1782.323242 1775.418335 1768.123291 1763.269653 1758.775391 1753.402588 1747.084961 1742.109619 1737.046997 1734.828857 1736.154663 1741.014648 1748.434937 1756.429199 1759.501587 1759.390259 1759.126953 1757.440552 1751.394531 1744.991577 1739.274536 1733.748413 1729.349365 1719.336182 1714.143311 1711.092773 1704.290161 1693.818359 1683.160767 1669.122803 1676.456055 1683.994019 1678.456909 1675.836792 1680.703979 1685.900024 1692.216187 1700.332153 1710.257446 1723.543213 1732.547607 1727.781006 1724.960083 1724.007202 1723.752808 1724.043579 1724.598877 1724.773315 1723.873291 1721.44519 1716.685913 1707.437012 1701.285522 1693.797363 1686.646851 1677.724854 1665.940918 1653.794678 1633.388428 1619.029907 1606.247437 1594.052368 1580.747314 1569.528076 1565.845093 1568.406982 1575.169556 1584.434204 1597.995605 1605.584717 1612.411499 1620.17041 1634.230347 1643.199463 1643.573853 1642.070435 1660.871948 1661.508911 1661.110352 1663.28125 1658.894043 1648.048828 1631.823975 1619.702881 1608.939819 1594.702393 1583.307495 1587.273438 1605.171509 1622.274048 1636.317627 1659.757812 1676.102905 1684.077515 1686.026611 1678.71875 1670.01123 1680.982788 1675.935913 1666.040894 1655.491821 1645.113281 1640.145386 1634.3125 1623.261719 1614.531494 1604.026489 1600.199829 1609.523071 1622.235596 1624.668701 1618.262817 1606.849487 1596.950073 1586.624512 1577.27478 1567.92688 1576.609863 1575.744019 1584.80127 1591.599243 1598.44104 1601.81958 1606.366577 1613.570068 1624.998169 1636.887329 1645.372437 1649.276855 1651.666016 1654.325806 1657.657349 1665.500122 1671.766602 1676.522095 1679.717651 1681.112061 1680.69104 1672.873047 1660.190918 1647.661133 1636.081909 1626.000977 1615.515137 1604.136108 1595.802124 1588.372925 1589.108887 1589.834961 1594.88147 1606.384155 1611.490356 1611.131714 1604.559204 1596.172852 1588.216064 1580.438721 1573.767944 1572.028076 1582.863281 1594.908325 1601.945801 1602.310181 1599.010254 1586.645874 1572.575684 1570.587769 1588.984741 1602.224121 1611.153564 1613.641602 1616.05603 1621.066284 1627.585693 1637.918945 1642.438354 1638.964966 1629.086914 1616.729004 1607.365356 1607.411987 1614.552246 1619.156372 1628.854492 1636.881592 1643.581909 1647.817139 1648.508545 1644.69873 1637.739136 1633.949097 1637.66626 1647.343262 1657.838867 1668.251831 1672.706665 1674.459595 1671.973145 1660.136841 1652.051636 1645.025269 1634.796021 1624.635742 1612.638062 1608.248657 1607.703735 1613.404419 1617.692017 1622.053589 1636.762939 1648.277344 1646.69458 1647.616577 1647.249146 1640.286499 1632.360352 1622.942749 1613.578735 1600.536865 1586.332764 1578.331909 1570.616089 1558.146118 1547.951416 1540.770508 1536.216064 1531.468506 1530.895996 1538.991943 1540.428955 1539.247314 1535.952881 1522.897583 1513.516724 1510.641846 1521.862061 1538.297485 1548.909546 1557.603516 1568.161987 1576.062988 1582.735962 1579.185181 1570.73584 1558.901489 1554.07373 1561.494385 1567.359863 1568.737671 1568.716431 1572.038696 1572.616211 1587.452759 1596.118652 1598.402588 1598.259155 1599.447266 1601.4104 1601.697998 1601.274658 1600.093872 1597.884888 1594.646484 1591.084839 1587.507812 1584.098999 1580.301636 1576.631958 1572.600952 1567.524292 1562.970337 1558.054688 1552.559082 1546.613892 1539.532715 1532.689331 1525.31958 1516.268311 1510.5896 1504.858887 1498.952515 1494.328979 1489.606323 1484.06543 1478.48291 1472.018799 1465.16748 1458.281006 1452.321411 1448.599731 1443.942993 1438.239746 1430.784912 1425.751709 1432.427246 1440.067993 1446.08313 1448.57373 1442.546265 1434.920044 1427.782471 1421.737305 1414.588867 1411.026855 1406.78894 1402.311279 1393.116455 1387.376099 1381.518555 1376.853149 1373.806396 1370.986694 1368.461182 1364.598267 1364.346558 1365.688965 1364.859741 1363.869141 1363.218384 1362.670654 1362.125732 1362.220581 1363.220703 1365.259521 1369.245117 1376.754517 1377.934204 1373.565063 1367.553833 1363.699951 1376.74939 1394.942505 1412.507568 1424.871826 1425.560303 1427.740967 1434.730835 1441.613037 1443.434814 1449.701416 1451.292603 1439.77063 1431.297974 1425.24231 1424.503784 1419.692017 1415.079224 1421.220825 1425.493042 1429.81958 1431.775391 1431.799194 1430.573242 1428.50708 1426.206543 1421.316284 1431.148071 1441.57605 1443.190796 1442.571289 1441.68689 1438.721436 1433.319092 1427.421875 1419.28894 1415.597046 1404.351807 1414.401733 1425.828735 1437.877319 1440.760376 1439.324341 1438.069824 1438.810791 1439.81189 1440.079102 1439.565552 1431.082642 1425.434204 1418.084717 1413.002075 1408.303467 1405.464233 1409.811279 1413.244385 1420.345215 1426.025146 1428.555054 1429.678955 1430.128906 1430.509155 1430.576782 1430.248291 1429.574097 1428.356323 1425.419067 1414.213135 1412.820923 1412.580811 1412.928711 1413.58313 1415.079712 1424.894531 1427.618164 1428.652832 1429.670776 1430.933105 1432.595703 1434.499146 1436.550293 1438.587036 1441.635986 1445.471924 1449.408325 1452.257324 1453.237183 1453.370972 1453.235718 1452.692017 1451.339478 1448.604248 1446.275269 1443.407471 1440.059204 1438.206299 1439.090576 1430.859009 1424.795898 1419.900269 1420.96936 1423.788574 1425.592041 1432.205688 1440.19519 1441.291992 1440.187256 1440.638428 1442.309937 1442.218262 1440.021362 1439.005981 1439.62207 1440.333618 1440.87207 1441.064209 1440.289795 1439.370483 1438.340942 1437.579102 1437.638428 1437.254395 1436.049805 1434.058716 1431.085571 1427.404175 1426.851685 1425.766968 1423.896484 1420.857056 1417.664795 1414.943848 1412.956787 1410.940674 1408.956421 1408.396851 1407.469849 1406.343994 1405.41333 1402.811279 1399.741943 1398.525513 1397.104126 1395.103027 1392.989746 1390.205933 1385.427612 1382.110962 1380.324097 1379.481079 1380.860352 1385.63855 1391.942871 1398.970947 1403.185913 1404.878418 1402.456787 1396.903442 1388.125244 1380.011475 1371.067505 1363.238647 1357.366333 1352.244507 1348.963257 1344.908936 1342.952515 1344.424438 1347.760986 1352.346802 1353.711426 1353.829102 1351.92627 1351.51062 1351.968018 1352.044434 1351.56189 1350.190918 1347.717773 1343.122681 1343.26709 1349.830444 1355.340942 1357.826904 1358.146362 1360.616333 1365.787354 1358.793457 1356.700195 1353.284668 1350.880737 1359.330933 1362.488525 1355.595337 1360.674194 1370.258423 1376.547852 1381.233032 1388.098877 1397.05188 1404.088745 1400.930908 1395.656372 1398.549316 1397.402588 1394.223267 1392.248291 1387.623535 1381.103027 -1623.500366 1631.454346 1637.376831 1638.895874 1648.080078 1650.978638 1655.655396 1657.296875 1657.932373 1654.418457 1666.344849 1678.644775 1685.871094 1687.584229 1684.548706 1670.621338 1656.137207 1657.81897 1673.559814 1682.707764 1694.665649 1705.280762 1717.876343 1729.841675 1744.724487 1755.589844 1765.71936 1778.354126 1791.385132 1804.288452 1814.135864 1822.853271 1827.587769 1827.83374 1823.797729 1821.332642 1817.303711 1809.008911 1804.203369 1808.115234 1813.697876 1818.43103 1818.30957 1812.09314 1802.211182 1794.059326 1789.728882 1789.773193 1793.397095 1799.771362 1801.292969 1797.551758 1789.643066 1777.102173 1762.952637 1768.445923 1776.263672 1780.95166 1788.218506 1799.546021 1807.801025 1811.321533 1811.276611 1810.116699 1809.162231 1810.364746 1814.053223 1815.704834 1812.685913 1807.664673 1800.676392 1792.73291 1786.035278 1779.521973 1773.129883 1766.472412 1761.303711 1756.658569 1751.106445 1745.965698 1740.606689 1735.016235 1731.614014 1731.893921 1739.578735 1747.092651 1754.699829 1759.02124 1760.00769 1759.115601 1755.677124 1748.158691 1739.880005 1730.943115 1725.066162 1720.698364 1715.039307 1707.387695 1705.63208 1702.082275 1695.393311 1684.358032 1671.588379 1668.919312 1674.518799 1670.322632 1671.239014 1676.402466 1681.891724 1689.071655 1696.783203 1705.546875 1715.2854 1724.084106 1725.347656 1726.330444 1724.879272 1723.44519 1723.023438 1723.149414 1723.325439 1722.554932 1719.093506 1712.746094 1710.014771 1705.953491 1699.681396 1692.816528 1683.973145 1672.020142 1660.390503 1639.739624 1621.799561 1608.777344 1592.394043 1574.990356 1567.046265 1574.519409 1585.636108 1596.745728 1602.769287 1609.758911 1615.930298 1623.849854 1635.242432 1651.856689 1659.470825 1662.257202 1663.591919 1674.052124 1675.148804 1675.51709 1677.953125 1670.199829 1655.083252 1639.811035 1624.497192 1614.008423 1603.061768 1589.910522 1588.549927 1605.551147 1623.779175 1642.777344 1665.496948 1687.841309 1695.57312 1699.42749 1694.011475 1684.119629 1688.791748 1687.023071 1675.610596 1664.358643 1652.362671 1643.494751 1635.730591 1626.942383 1618.942627 1610.639038 1605.567505 1614.98877 1629.048706 1632.015747 1624.143921 1612.268799 1600.500854 1588.091187 1577.583862 1571.821411 1588.387451 1583.086304 1589.1427 1598.493286 1601.57251 1604.901855 1608.211182 1617.808594 1629.908936 1640.34668 1648.37854 1656.734375 1654.474854 1658.794922 1662.984131 1670.002441 1676.027588 1681.400757 1683.287964 1679.804932 1673.550903 1664.624878 1652.425049 1642.69458 1633.307495 1623.096069 1612.617065 1603.862549 1597.153076 1588.481079 1584.121948 1583.935547 1587.674927 1595.807129 1601.029785 1606.127441 1602.277344 1595.118652 1587.435913 1578.082886 1571.316895 1571.682983 1583.31189 1596.774292 1603.472778 1603.862183 1598.776855 1584.94397 1568.849365 1578.491577 1592.970093 1604.556152 1615.878418 1624.643066 1624.301758 1627.921631 1635.774536 1644.510376 1641.178223 1633.692017 1621.605713 1610.477661 1597.954224 1609.766968 1622.99353 1626.633911 1631.114258 1636.355347 1641.854492 1645.968506 1647.911377 1644.629028 1634.929932 1627.737793 1632.497437 1640.806763 1649.46521 1654.994873 1658.873413 1672.943237 1674.103027 1667.120605 1656.60022 1648.693726 1637.958496 1627.627686 1615.739746 1607.945923 1605.217896 1607.719971 1611.94104 1619.409912 1632.519287 1639.160034 1635.78186 1635.040771 1635.368286 1632.668579 1626.812622 1620.305298 1611.646606 1597.438477 1583.690674 1577.213135 1570.473389 1563.309692 1557.716797 1551.661987 1544.48584 1535.299316 1522.461792 1527.546143 1533.612793 1533.822144 1526.352661 1517.954956 1510.525391 1508.995361 1515.110718 1530.952881 1542.765747 1552.563477 1562.042603 1570.538818 1576.179932 1574.659058 1568.113159 1557.335449 1547.315674 1554.003418 1559.115967 1558.449219 1560.955566 1563.012573 1573.912964 1583.126343 1588.505615 1588.880615 1595.542358 1599.115234 1600.513794 1600.478516 1600.186035 1599.593628 1598.777344 1596.149048 1593.603394 1591.445312 1587.474243 1583.586304 1579.805786 1575.628784 1571.036133 1566.30249 1561.698853 1555.48291 1549.194824 1540.781616 1533.686401 1526.619507 1520.916016 1515.283447 1508.446533 1500.934814 1495.913574 1490.716553 1485.355835 1480.127808 1474.272461 1467.471191 1461.516113 1456.323853 1451.828125 1446.447754 1440.101196 1433.980713 1428.085327 1425.898071 1434.682007 1441.502808 1443.882568 1442.055298 1437.08313 1430.320923 1423.474976 1417.16272 1410.640869 1404.469238 1399.663696 1394.748047 1390.142334 1381.327759 1376.77356 1373.173706 1370.225952 1367.086792 1363.942139 1367.121216 1367.023682 1365.489502 1364.31958 1363.707397 1363.420532 1363.423096 1365.02356 1368.10791 1372.886353 1378.342529 1383.636108 1381.202393 1379.661499 1370.865601 1365.67334 1376.886108 1390.561523 1402.268555 1409.326172 1414.866821 1416.80127 1423.695679 1433.351929 1444.070679 1446.611572 1443.512939 1438.720947 1437.442505 1433.477295 1431.620239 1429.790405 1425.694946 1426.559326 1431.130371 1435.344849 1439.990356 1437.309814 1434.965942 1433.879517 1432.117554 1428.999512 1432.021118 1439.824585 1442.839233 1442.652954 1441.327881 1438.232544 1431.257324 1425.250244 1422.659546 1417.754883 1407.12793 1418.269531 1430.474976 1440.647583 1441.364136 1439.415894 1439.015015 1439.564331 1439.556763 1439.615601 1436.009521 1429.036255 1424.604248 1419.295532 1416.620605 1412.065308 1406.794434 1409.752563 1413.942261 1418.864014 1423.667969 1427.417358 1429.560547 1430.282471 1430.855835 1430.94165 1430.523071 1429.6875 1428.478638 1426.370361 1416.561646 1414.979736 1413.328369 1413.320557 1413.737061 1415.262573 1420.852295 1425.237061 1426.927979 1428.498169 1431.092407 1433.396362 1435.576416 1437.70874 1440.169189 1443.649536 1447.780151 1451.427734 1453.362427 1454.014282 1453.970337 1453.69165 1452.964111 1451.513306 1449.282959 1446.793823 1444.157227 1441.247803 1440.490845 1439.911011 1430.316284 1422.815186 1422.86145 1424.166748 1427.889038 1431.71521 1434.809814 1438.846069 1442.135742 1443.282715 1443.824829 1444.638062 1444.216309 1442.157837 1441.297852 1442.296753 1443.146362 1443.685425 1443.817383 1443.356079 1442.250977 1440.812134 1439.786499 1439.707275 1439.321167 1438.387329 1436.518677 1433.480225 1431.009399 1429.373413 1427.691406 1424.384644 1420.799072 1418.836304 1418.347412 1417.577393 1416.852783 1416.479126 1415.886597 1414.567993 1411.264893 1408.992065 1406.396362 1404.494629 1404.133057 1402.419067 1399.099243 1395.57666 1391.437134 1387.470581 1384.236328 1381.529663 1379.001709 1376.014404 1379.908325 1384.577026 1389.869385 1395.173096 1396.240112 1394.695557 1389.121216 1380.797485 1372.226074 1363.941895 1358.096924 1353.454224 1349.907715 1347.262451 1344.825562 1344.563232 1352.301147 1354.938965 1357.492432 1358.173706 1357.07251 1353.952515 1354.927002 1355.436279 1355.305664 1354.258301 1352.831177 1349.834717 1348.688477 1352.02063 1357.006226 1363.356445 1369.027466 1370.597046 1370.915527 1372.397217 1370.98999 1371.751343 1369.2323 1361.954956 1364.585327 1368.410522 1363.084717 1366.428711 1374.783447 1381.804688 1388.705322 1395.426392 1402.219604 1405.602539 1404.070679 1401.307129 1404.558105 1402.178101 1394.405518 1389.314819 1385.664429 1377.641235 -1618.118408 1628.818848 1638.937256 1645.646851 1654.671631 1666.643555 1674.827637 1677.386841 1677.638916 1675.193237 1684.02417 1693.38855 1699.668823 1702.265625 1700.153809 1689.603149 1674.162231 1660.848267 1668.131226 1675.935425 1686.460693 1699.82373 1711.359009 1724.324097 1738.513306 1750.073242 1760.379639 1770.622681 1781.792969 1794.611816 1804.971558 1811.991577 1815.587891 1815.326294 1814.343994 1818.83606 1818.133057 1813.966553 1812.112671 1816.18811 1820.121338 1823.786377 1824.416016 1818.961426 1811.028809 1807.858032 1806.436401 1807.367554 1807.404297 1807.660156 1805.186523 1798.700439 1788.200317 1776.57251 1767.166382 1772.810547 1781.976318 1787.303101 1792.484985 1808.093994 1813.279419 1815.822266 1813.546875 1808.635132 1804.82373 1805.257935 1807.753296 1809.594727 1808.794189 1805.193359 1799.354614 1792.665894 1784.973633 1778.16687 1772.273193 1765.775879 1758.498291 1753.184204 1746.833984 1742.23584 1736.149414 1731.686035 1727.717773 1728.245972 1734.997192 1742.674561 1748.96106 1754.650513 1758.547729 1759.002319 1755.526855 1746.617432 1736.851807 1725.595947 1716.785034 1710.760376 1707.195923 1699.928833 1695.465088 1696.105103 1692.124023 1683.91333 1670.723145 1663.644043 1664.633423 1666.192871 1667.902344 1671.683228 1678.116211 1685.133789 1692.040771 1701.113525 1709.874023 1716.845215 1723.515625 1732.23291 1722.516602 1721.815063 1721.08313 1720.484253 1722.222778 1720.43042 1711.568359 1704.724609 1707.323608 1709.755371 1707.618896 1700.84668 1692.125244 1680.393677 1667.886597 1647.203369 1627.562378 1611.048584 1597.337891 1574.351929 1571.657349 1577.906616 1590.535156 1602.265869 1610.919556 1620.642456 1628.199097 1638.570435 1651.275024 1662.532959 1671.356934 1672.31543 1671.098389 1682.25415 1683.893555 1687.390869 1686.438965 1674.131592 1656.283813 1642.434326 1629.196289 1618.21875 1609.9646 1599.642578 1592.56665 1606.211182 1625.739746 1646.581909 1669.35376 1689.508423 1705.942749 1710.994629 1707.049927 1696.173462 1697.245728 1697.544189 1684.462769 1671.57666 1658.597534 1647.290649 1638.899414 1629.842896 1623.874268 1612.733765 1607.008423 1620.641846 1637.627319 1634.34668 1625.828735 1614.563354 1601.040649 1588.284546 1577.468018 1582.387451 1597.044067 1586.310547 1595.59021 1601.047363 1604.438721 1607.901367 1612.516602 1621.104736 1631.523926 1640.612793 1648.969849 1658.429565 1654.848755 1658.10437 1663.963989 1672.044678 1679.054443 1684.599731 1685.234497 1678.63208 1668.790405 1657.178467 1644.841431 1633.321655 1626.357788 1618.772705 1609.485718 1602.157837 1597.670166 1590.062378 1585.139526 1582.280884 1582.97229 1587.392456 1593.799072 1600.934082 1599.934814 1592.926758 1584.105713 1574.178955 1568.305908 1572.271973 1585.13147 1598.1521 1608.914185 1604.072388 1589.274292 1577.644531 1565.153076 1578.334106 1591.212891 1601.607178 1610.250977 1606.590454 1615.585449 1627.862061 1644.221924 1648.609863 1639.404907 1627.64978 1611.933105 1599.238525 1599.669556 1614.208374 1631.713501 1635.036987 1635.613647 1638.654907 1640.088867 1641.302734 1643.872681 1641.525513 1635.824341 1624.322144 1620.511597 1629.460693 1634.240967 1641.915161 1659.618286 1671.067383 1674.749268 1670.720703 1657.222412 1646.593384 1636.4823 1626.589722 1615.188599 1608.932129 1605.724243 1603.706055 1608.558105 1617.309937 1625.199097 1628.117065 1626.074341 1620.324097 1622.02356 1623.110352 1619.372559 1613.0802 1606.646973 1595.001343 1586.766357 1578.223999 1572.507324 1566.062744 1561.584839 1554.372437 1549.545288 1540.569458 1529.508789 1517.79834 1515.646606 1518.839844 1517.639771 1514.351685 1500.256104 1506.444458 1512.229614 1522.284058 1532.531616 1545.529785 1554.030396 1561.331421 1568.084961 1568.89209 1563.703979 1555.386353 1538.019409 1545.511597 1550.657593 1550.040161 1554.822021 1563.900024 1573.038696 1577.646606 1579.30896 1584.568481 1597.867798 1599.745483 1599.677856 1598.922363 1598.026123 1598.768311 1598.459229 1596.793457 1596.050903 1596.573486 1592.735962 1587.346191 1583.016846 1578.637939 1574.051514 1569.011597 1564.011841 1557.830688 1550.252686 1541.637573 1534.798584 1530.178955 1525.355225 1518.259644 1510.966919 1503.228638 1497.635742 1492.177002 1486.512207 1481.182617 1475.459839 1469.865967 1464.507202 1459.731201 1454.963379 1449.688599 1442.41748 1435.442383 1428.026001 1419.896851 1429.415039 1437.452515 1441.869873 1441.466431 1439.917603 1433.117188 1425.963989 1415.871216 1410.157227 1402.859131 1398.59021 1393.380005 1386.781982 1378.994263 1375.60144 1372.268677 1369.162354 1365.553467 1365.282593 1368.335815 1368.166626 1365.743042 1365.04248 1364.89563 1365.891846 1366.829102 1371.475098 1377.009155 1385.294434 1393.664185 1393.32666 1389.51416 1384.981567 1378.969971 1364.741089 1373.439087 1382.775391 1392.365845 1401.947632 1411.577881 1422.413452 1431.787598 1440.874268 1445.02063 1448.868408 1447.055786 1444.458862 1442.536865 1441.40918 1438.638794 1433.669556 1430.418335 1430.903931 1434.532715 1438.357788 1441.56604 1440.607422 1439.268066 1438.76062 1437.763916 1435.362793 1436.782104 1441.195068 1442.869141 1442.591553 1440.806519 1437.313232 1432.777222 1429.523315 1423.95459 1416.597778 1408.829224 1421.713013 1433.262695 1441.56604 1441.603149 1440.725708 1439.921265 1439.457764 1436.02124 1432.995728 1428.726807 1425.095215 1421.483765 1418.586182 1416.539673 1413.059692 1408.236328 1411.513794 1413.449097 1416.785889 1422.052856 1426.156738 1428.573364 1429.939819 1430.557617 1430.789429 1430.53479 1429.777954 1428.34082 1425.95459 1418.152466 1415.525513 1414.681274 1414.719116 1414.363159 1416.058838 1419.56189 1423.197388 1426.000977 1428.509766 1431.449951 1433.980469 1436.305054 1438.744019 1441.927612 1445.535522 1449.580933 1452.468994 1454.032593 1454.639771 1454.773804 1454.204468 1453.202637 1451.622803 1449.503662 1447.157104 1445.027222 1443.241333 1441.840576 1438.021729 1428.654419 1422.543823 1427.936035 1426.51416 1433.629395 1439.333984 1439.783936 1438.558594 1443.112305 1445.546753 1446.803223 1447.460083 1447.134766 1446.280396 1445.579468 1446.125488 1446.53064 1447.088135 1447.247925 1446.638428 1445.680054 1444.822388 1444.042603 1443.542358 1442.710327 1441.231323 1438.651855 1436.293579 1433.866821 1431.223999 1428.105225 1425.025391 1422.162598 1423.756226 1423.232544 1422.901611 1421.532104 1420.031006 1418.544678 1416.37561 1413.749146 1412.896973 1410.739014 1409.447632 1408.503662 1406.08313 1402.282227 1398.192505 1392.97876 1389.431763 1387.490234 1384.812866 1382.214355 1378.929443 1373.977295 1374.684448 1380.008667 1385.859863 1388.015015 1386.551392 1382.046875 1373.783569 1365.197144 1358.56543 1353.015869 1349.192261 1346.549072 1345.849487 1344.44751 1351.6875 1358.360718 1360.476074 1361.988037 1362.037964 1360.933594 1360.252563 1360.795654 1361.020508 1359.898926 1357.773193 1354.640015 1352.372437 1352.177002 1353.263184 1360.547852 1368.309082 1375.986206 1380.066895 1381.826294 1381.172119 1381.773438 1381.897461 1380.427246 1370.401001 1367.820801 1375.838867 1368.906982 1370.885254 1377.743652 1385.120605 1392.931885 1401.637329 1406.304199 1408.895752 1408.249756 1407.476318 1406.852905 1401.884399 1397.07666 1392.4021 1390.620239 1383.758545 -1592.022217 1608.310913 1628.741211 1642.535889 1655.016113 1669.890625 1681.436768 1687.736206 1693.520752 1696.829956 1699.599121 1705.681885 1718.138916 1722.415527 1717.72998 1706.218262 1691.050415 1679.024536 1672.378418 1669.612671 1681.186768 1697.332275 1707.260376 1719.545166 1732.501099 1743.840698 1755.557861 1765.019775 1775.190063 1784.931396 1794.327026 1799.793091 1802.500732 1802.017822 1804.942383 1815.365723 1819.207275 1818.597534 1819.591553 1821.315063 1824.967773 1828.863892 1830.82666 1828.973877 1820.010742 1816.513916 1815.926392 1815.517822 1815.134155 1812.788086 1807.376831 1796.599731 1784.924683 1778.704102 1775.674561 1777.399414 1787.597168 1796.151611 1805.309937 1813.828247 1819.179443 1819.205933 1815.385132 1808.147705 1803.302734 1800.789795 1800.696289 1803.347778 1804.368652 1801.885498 1796.958496 1791.752808 1785.145996 1778.748413 1772.118286 1765.270508 1756.764038 1749.842041 1744.390259 1737.097534 1730.560791 1727.207764 1721.786621 1720.400757 1728.993774 1735.895874 1741.818848 1747.523682 1754.884155 1758.45105 1755.687256 1747.856445 1737.726074 1725.431152 1714.446655 1704.797607 1697.379272 1693.42334 1689.381836 1686.249023 1684.827759 1678.84729 1668.138916 1658.912598 1658.015259 1659.053467 1663.699585 1667.357544 1672.46875 1679.686035 1686.573608 1696.405884 1703.627808 1710.694336 1718.188354 1723.621826 1717.162476 1717.986694 1715.373779 1713.357422 1720.83313 1717.981445 1706.157227 1697.141602 1694.819214 1704.559937 1709.04248 1708.283203 1699.213623 1688.755615 1675.742432 1657.096191 1635.115845 1614.93396 1598.834473 1583.843018 1571.142578 1577.077271 1583.367676 1597.342041 1610.056519 1622.547974 1633.692139 1643.504761 1654.651489 1669.130737 1679.268677 1682.061401 1682.302368 1695.18335 1698.183716 1698.145142 1691.420776 1680.528198 1662.821777 1650.372559 1638.424194 1626.198486 1618.065674 1609.854614 1595.406738 1606.000977 1624.326294 1643.911987 1665.61084 1681.711914 1692.879028 1703.865723 1707.935425 1702.463257 1699.945801 1699.018066 1690.158569 1675.952148 1663.616333 1651.481079 1641.257202 1632.580444 1625.485474 1620.258301 1617.61084 1638.273682 1647.332764 1637.616821 1626.248657 1615.099731 1598.853638 1587.723145 1577.810669 1592.570557 1598.677612 1595.396973 1599.776978 1603.80481 1607.084839 1611.401123 1617.983765 1624.979492 1631.955933 1639.595947 1645.803467 1648.649536 1647.671021 1653.342285 1660.598267 1669.707275 1678.65332 1684.608643 1685.771118 1677.475952 1666.820435 1655.787231 1642.218018 1629.121216 1617.526611 1607.67395 1600.318115 1596.102539 1594.333862 1589.540649 1585.727539 1578.512939 1577.043457 1580.609497 1586.859497 1597.756226 1598.99939 1589.939331 1580.748413 1571.217529 1560.762817 1573.344604 1590.161865 1605.423096 1616.280396 1606.432373 1585.731689 1571.086914 1561.569336 1573.365234 1585.163086 1593.048462 1597.182617 1599.602783 1614.858398 1636.437988 1647.265381 1645.385376 1632.74646 1619.16394 1605.054688 1593.807617 1604.359985 1619.203003 1636.802002 1640.06665 1639.479736 1639.109009 1638.156494 1634.334717 1635.6604 1635.543579 1636.778198 1627.330688 1614.72937 1617.35376 1627.546509 1643.669922 1657.138672 1666.010742 1673.032349 1672.591675 1655.615234 1647.287354 1635.481445 1624.334717 1622.174072 1618.254272 1610.289307 1601.228394 1605.472168 1612.254517 1618.083984 1619.30481 1616.603516 1609.65625 1606.377686 1606.182861 1606.184082 1601.924561 1596.915161 1590.546509 1584.803345 1571.974976 1566.935059 1562.462769 1557.427124 1551.684692 1546.44458 1539.739502 1532.294189 1522.94873 1512.858521 1508.818359 1503.384521 1503.909668 1500.584351 1502.241699 1508.396729 1514.14856 1522.157715 1535.729858 1543.093628 1552.380249 1557.436035 1560.740723 1557.288208 1549.654907 1531.865356 1531.811157 1540.124878 1539.975586 1555.103516 1563.115723 1567.675049 1570.814209 1573.098267 1587.542603 1598.374023 1598.411621 1597.711182 1597.283447 1595.359741 1595.997803 1596.377563 1595.368042 1597.330688 1598.933472 1598.623779 1592.552856 1586.601074 1581.812744 1576.688843 1571.441895 1565.820801 1559.659912 1551.39856 1544.3479 1538.144165 1533.070068 1528.14978 1520.945923 1511.006348 1506.006958 1500.609863 1494.744019 1488.297119 1482.758057 1476.611206 1471.957031 1467.566284 1462.966675 1457.78772 1452.213135 1444.595947 1436.943726 1427.342529 1418.620483 1422.484253 1431.125122 1437.15332 1439.726562 1439.583008 1434.713013 1428.733276 1416.636719 1410.906372 1405.612305 1400.550537 1393.396362 1385.478149 1377.501343 1374.174072 1371.437988 1368.440918 1364.89209 1366.999268 1369.300659 1369.727539 1367.860962 1367.454956 1368.219604 1370.965454 1374.861572 1380.27063 1387.465942 1393.754272 1397.196167 1396.7052 1393.400024 1389.572266 1382.758057 1369.924316 1372.511841 1382.262695 1395.734253 1408.224121 1419.58667 1430.75415 1440.826294 1444.45752 1448.852539 1451.974365 1452.119507 1449.344604 1446.677124 1444.586914 1441.308838 1438.024292 1436.322632 1436.489868 1437.791626 1441.762573 1444.41394 1444.465942 1443.941772 1442.968994 1441.71521 1439.782227 1438.44751 1441.998169 1443.215942 1442.867188 1440.44165 1437.239014 1432.368408 1428.502563 1420.571167 1413.21582 1413.654419 1424.634521 1433.032349 1439.81543 1441.019653 1439.714722 1437.869263 1436.303711 1432.679077 1428.017334 1424.126099 1420.674438 1416.940674 1414.490234 1413.519531 1411.887817 1411.281006 1415.994019 1416.306152 1416.553589 1421.375366 1424.799927 1426.889771 1428.407349 1429.950317 1430.608398 1430.514282 1429.886475 1428.415649 1426.227173 1417.434082 1414.657104 1415.664429 1416.473633 1415.324707 1414.398193 1417.932007 1423.253906 1427.278198 1429.228516 1431.895142 1434.922852 1437.05957 1439.378052 1443.174927 1447.06311 1450.961304 1453.379517 1454.763184 1455.414185 1455.466675 1454.920166 1453.813721 1451.762085 1449.717529 1447.555542 1445.437134 1443.345581 1440.912354 1435.176636 1426.661499 1424.870117 1430.251099 1434.577271 1439.956543 1443.500854 1444.5 1444.50415 1445.872925 1447.447754 1449.165771 1450.201172 1450.383789 1449.90271 1449.015503 1449.781372 1450.260986 1450.796997 1450.694946 1450.129028 1449.365967 1449.324951 1449.221191 1448.853638 1447.712524 1445.510376 1441.950439 1438.802124 1436.892212 1432.902588 1428.201904 1425.300171 1428.431396 1428.37793 1427.93335 1428.004395 1425.833984 1423.525269 1421.686646 1419.435181 1418.035522 1416.627686 1414.053711 1414.127441 1413.827881 1410.486328 1405.347412 1401.986694 1399.424438 1394.672607 1391.596313 1388.82251 1385.540649 1380.866699 1376.203369 1373.395508 1370.534546 1373.208984 1377.906738 1380.310669 1376.557007 1368.693115 1361.244629 1353.294678 1347.936035 1349.279663 1353.994995 1357.723755 1358.362793 1359.685791 1364.078003 1366.449219 1366.9375 1366.614746 1364.717896 1365.487671 1367.164917 1367.253296 1365.226929 1361.522095 1356.45874 1355.264526 1355.019043 1353.683594 1364.628662 1373.892822 1381.970825 1388.327271 1392.09021 1391.175293 1391.880737 1390.801392 1385.268799 1377.373779 1377.688477 1383.917969 1379.899292 1376.180542 1382.28125 1389.391724 1396.251343 1402.881836 1409.674316 1412.822388 1413.562256 1412.788696 1411.01355 1407.157837 1403.675781 1395.79187 1391.014526 1383.366455 -1577.093262 1595.087891 1611.578857 1628.630249 1649.371582 1669.570557 1686.790283 1697.353638 1707.383179 1715.283936 1721.166504 1728.141235 1736.238525 1736.675171 1731.539185 1722.074219 1708.304199 1692.139771 1687.952271 1681.503052 1678.004028 1693.99646 1703.693726 1716.491089 1727.077637 1737.10144 1747.808472 1759.201538 1769.203613 1776.428223 1782.221191 1786.920654 1788.17688 1791.570068 1799.201416 1809.743286 1818.511108 1821.416382 1824.555786 1826.144043 1828.131348 1831.040283 1831.878418 1831.95813 1829.386719 1824.553223 1823.602783 1824.34021 1822.686279 1818.154907 1809.968018 1799.599609 1793.289795 1794.919312 1790.128418 1785.587891 1792.600464 1810.516357 1817.966187 1822.715088 1825.958984 1822.440308 1817.153198 1809.59729 1802.733765 1795.51123 1791.970337 1793.776489 1795.477539 1795.784668 1795.486328 1791.429443 1785.91333 1780.078979 1772.547607 1765.258423 1757.413696 1748.952271 1740.724609 1732.578735 1726.953491 1722.048706 1718.843262 1716.398193 1721.963867 1726.747925 1732.956177 1739.892822 1748.854004 1754.849487 1754.119263 1748.02417 1740.069336 1729.376465 1714.251221 1704.052734 1694.72168 1690.459717 1686.056519 1680.141479 1674.332031 1669.413086 1660.147705 1656.945801 1655.87561 1656.885742 1660.043823 1663.219727 1667.479614 1672.921631 1680.126099 1689.591431 1696.593872 1702.632446 1708.364624 1711.414062 1707.596191 1705.92688 1705.519653 1701.354736 1709.82605 1711.539429 1703.380005 1693.570801 1688.338745 1695.759521 1699.607056 1700.371826 1696.130981 1691.176636 1681.564697 1664.688354 1646.777344 1626.491333 1610.670898 1598.93042 1577.13562 1572.489868 1578.996338 1587.34021 1596.278076 1612.876343 1628.137939 1641.353149 1654.337646 1673.376831 1686.281494 1694.455688 1697.086792 1710.629517 1719.785889 1718.896118 1699.285034 1688.988892 1676.454468 1660.254517 1649.992554 1636.211914 1623.905273 1616.197144 1607.980469 1605.97522 1620.155151 1638.075439 1659.366089 1672.639648 1684.386353 1698.217041 1691.769653 1691.689941 1697.21106 1699.083252 1692.939087 1678.598145 1666.434082 1655.598999 1644.640259 1637.10376 1632.150024 1626.246582 1629.150513 1645.445312 1649.968994 1642.770508 1627.535767 1614.965332 1595.947998 1586.20874 1582.597656 1598.889771 1599.716309 1597.19165 1602.599487 1607.109253 1609.814453 1617.091187 1623.838257 1630.286377 1635.569946 1639.437866 1642.544434 1643.657837 1643.719238 1646.707397 1655.296875 1664.344238 1672.077271 1675.086304 1684.316772 1675.217529 1664.96228 1654.581665 1639.159668 1626.026978 1615.105225 1605.415649 1597.335938 1594.115967 1590.223999 1587.99292 1586.209717 1577.939087 1572.297119 1575.058716 1579.502197 1587.811157 1594.613647 1587.123169 1577.496094 1566.853394 1559.818848 1576.753052 1594.651489 1612.053833 1624.578369 1612.268555 1590.506958 1573.084961 1560.675049 1563.608643 1574.151733 1580.50061 1591.117188 1604.123901 1625.533691 1639.810425 1642.52063 1633.809082 1620.360718 1606.936646 1590.590576 1593.195679 1609.056152 1625.482544 1639.869995 1646.917969 1642.638062 1638.651001 1632.127686 1623.386108 1622.105713 1628.253784 1632.858398 1626.092896 1615.891113 1609.244385 1626.311523 1638.619263 1647.824951 1655.791626 1666.630249 1668.564209 1654.56958 1645.05542 1633.843506 1634.192749 1630.684326 1625.160034 1615.468384 1604.231079 1598.947632 1606.922974 1612.443848 1613.146484 1611.520508 1601.547607 1598.455933 1599.082764 1599.720947 1596.405273 1588.545288 1581.199829 1569.06189 1562.668701 1558.71936 1553.847412 1548.724976 1543.598389 1538.215942 1531.105835 1524.439087 1516.069336 1509.44812 1504.846191 1503.199951 1500.184326 1499.159668 1500.791626 1503.129761 1507.160645 1512.838623 1522.169678 1531.535522 1538.42395 1546.423584 1549.238525 1546.485718 1538.94043 1525.671265 1518.878784 1523.189453 1536.269287 1552.001587 1558.354126 1560.166504 1559.534912 1573.202637 1584.885376 1596.50647 1594.373779 1592.785767 1592.075195 1589.801147 1589.402344 1591.379883 1592.550659 1596.032837 1599.4104 1599.585815 1596.194214 1590.133667 1584.845459 1578.965942 1573.446289 1567.765381 1561.609619 1553.540894 1546.666626 1540.763306 1534.756836 1529.971436 1523.204346 1514.825439 1508.77063 1503.502563 1498.028198 1490.835571 1484.934814 1479.069336 1474.589844 1470.478516 1465.890259 1460.200562 1453.803833 1446.757202 1439.171143 1429.265015 1420.406372 1413.311523 1423.337524 1430.208008 1433.176147 1433.403687 1431.415527 1429.547852 1422.6875 1413.47644 1407.027832 1401.805054 1393.248047 1383.476074 1376.510254 1373.547607 1370.232056 1366.797241 1365.08374 1368.667358 1371.4198 1372.415405 1372.258667 1372.762695 1373.859497 1376.657349 1382.431641 1389.91272 1395.034424 1399.593628 1401.522461 1400.399658 1396.779785 1392.932983 1384.651855 1374.084595 1374.076416 1386.541626 1399.46228 1413.357422 1423.98999 1432.317749 1438.497314 1446.51123 1451.763428 1454.042603 1454.353149 1452.806519 1450.36145 1448.017456 1445.120728 1442.057373 1439.676025 1441.052979 1441.177612 1445.431396 1448.232666 1449.083496 1448.518921 1446.735352 1445.227173 1443.749634 1442.788208 1444.428345 1444.172485 1443.158691 1441.40564 1436.137939 1428.868774 1423.500488 1414.136475 1417.919189 1424.48938 1426.521606 1432.119995 1437.147705 1440.334473 1438.743042 1435.463989 1432.82251 1430.062256 1426.524292 1423.141602 1418.885742 1414.530151 1415.461792 1414.419067 1411.942627 1417.173218 1419.38916 1420.375244 1420.979004 1422.610596 1424.711548 1426.000732 1426.70105 1428.37085 1430.50293 1430.728638 1430.24231 1429.004395 1427.867188 1417.317993 1414.664307 1416.883911 1418.379028 1417.576294 1415.575806 1417.998413 1423.775269 1427.479126 1429.11145 1432.169189 1436.103027 1438.671265 1440.290771 1444.359985 1448.414307 1451.969238 1454.105713 1455.396118 1456.276245 1456.426147 1455.803101 1454.644287 1452.866943 1450.948242 1448.465576 1445.206665 1442.166382 1439.182617 1432.18103 1425.205078 1426.817627 1432.581055 1438.004517 1442.558594 1447.615723 1451.232666 1451.336182 1448.554199 1448.994751 1451.321045 1452.879028 1453.209961 1452.783813 1452.836792 1453.807007 1454.834351 1455.654785 1455.77063 1455.150879 1454.108154 1454.368042 1454.621948 1454.188599 1453.251709 1450.427368 1446.784302 1443.447876 1440.628296 1435.970825 1429.509888 1427.867432 1429.90271 1430.962646 1431.255737 1430.399536 1427.750244 1426.723022 1424.749878 1423.169189 1421.976807 1420.625 1419.048828 1418.644409 1417.733276 1414.988037 1411.988281 1408.232666 1404.753174 1402.116943 1399.162476 1394.168823 1389.664062 1384.551514 1379.336182 1378.348511 1376.222168 1371.091064 1367.1427 1365.297363 1367.827271 1366.845337 1359.33606 1350.73938 1350.520752 1354.978027 1362.105347 1365.98999 1367.299194 1366.854492 1369.454224 1372.235229 1373.348145 1372.568848 1370.811035 1371.762085 1373.151489 1372.433838 1369.341309 1363.704956 1362.535156 1363.231201 1363.070068 1359.724731 1366.268555 1375.063232 1384.559692 1392.19458 1396.658081 1400.657349 1403.473022 1399.984863 1390.007202 1386.06958 1387.295532 1392.958618 1392.894775 1388.704224 1387.286743 1392.461548 1400.157593 1407.66626 1413.826416 1416.297852 1416.723999 1416.489502 1415.284912 1408.007202 1400.867554 1390.210815 1382.573975 1376.080444 -1564.114746 1583.718384 1604.981445 1629.681152 1650.192261 1669.919434 1686.519531 1699.215088 1710.46106 1722.755981 1733.405518 1743.29541 1751.939453 1750.710938 1740.695557 1731.942139 1724.815796 1717.443481 1704.049316 1694.921753 1683.716675 1683.06958 1700.436279 1711.985718 1723.137939 1732.818481 1741.775513 1752.630981 1761.503906 1768.897583 1773.165894 1776.448242 1779.313843 1785.948975 1793.761353 1807.307617 1816.641113 1824.783325 1829.449951 1830.404663 1831.128174 1831.849243 1831.901611 1830.435791 1828.418213 1827.78772 1829.344116 1831.449341 1830.116699 1824.532593 1815.141602 1807.730469 1807.152954 1805.718506 1803.300659 1796.998413 1800.524048 1818.216187 1826.100098 1831.884766 1832.806519 1826.609253 1818.692505 1811.025513 1804.124756 1796.388428 1791.174805 1785.365967 1787.130981 1789.567383 1792.855347 1790.540771 1786.730103 1781.702148 1774.710327 1767.217773 1760.834106 1753.217529 1744.200317 1733.387817 1725.589844 1718.295898 1715.372681 1710.422241 1707.597656 1713.81604 1721.434204 1731.6521 1740.987305 1745.379639 1749.189819 1745.812744 1738.295898 1730.658936 1717.188965 1707.361572 1697.44751 1691.098267 1684.01355 1678.443481 1671.038086 1667.877197 1661.635498 1658.039795 1655.67041 1655.101807 1655.880249 1658.203735 1660.791626 1668.029175 1676.497559 1684.75293 1689.598999 1692.662476 1695.651245 1700.22937 1695.588379 1693.676636 1695.593506 1690.720825 1700.238647 1703.530884 1698.74353 1687.302612 1680.051514 1681.828003 1688.291504 1690.46875 1688.114258 1685.508301 1685.716675 1670.815186 1655.028198 1637.384277 1615.65918 1602.84375 1588.984253 1579.040527 1576.09082 1581.730469 1588.890381 1602.24939 1622.550659 1638.341187 1654.284912 1674.655273 1687.255859 1697.560425 1700.133423 1718.289673 1724.481079 1721.682495 1706.373413 1693.821533 1679.848999 1666.586182 1656.304077 1643.424438 1630.949829 1622.349121 1614.689087 1607.524414 1616.75769 1635.603638 1653.529663 1664.753418 1677.221802 1689.385498 1680.836182 1680.768799 1690.989014 1697.583008 1693.734375 1680.345215 1667.993286 1657.614624 1647.769775 1643.349976 1639.991821 1635.437866 1634.674561 1645.99939 1649.614746 1642.996216 1628.884033 1614.105347 1596.408569 1584.68396 1593.744751 1604.548706 1603.926636 1600.471069 1608.025513 1612.549316 1615.544678 1623.08374 1628.271973 1632.541382 1638.030518 1642.141602 1642.678711 1642.636841 1642.174927 1643.016479 1647.166992 1656.625244 1661.103638 1669.706909 1672.833374 1668.081665 1660.658203 1651.035278 1635.663696 1624.49585 1612.958862 1604.461914 1597.389648 1592.907959 1587.602295 1584.703369 1585.008179 1578.161865 1573.310425 1570.772949 1572.327026 1581.980591 1587.165649 1583.415039 1573.300049 1563.291138 1559.741577 1574.837158 1590.922119 1606.43042 1617.077393 1615.649536 1605.738403 1586.566772 1566.987183 1557.072632 1565.666748 1578.112427 1591.81311 1606.74292 1628.245361 1640.91687 1637.572266 1627.029053 1611.956909 1591.627808 1584.381104 1596.509644 1610.473267 1629.285767 1644.2052 1649.160889 1646.19812 1643.873169 1635.620972 1621.5896 1609.574951 1614.819824 1620.033325 1618.670532 1612.243652 1603.967529 1617.84729 1629.264526 1636.174561 1647.650269 1658.611328 1660.140625 1652.152222 1646.276367 1644.48645 1640.4198 1636.80603 1629.105957 1618.411133 1607.18396 1595.890869 1598.02356 1602.643311 1603.149658 1595.76416 1591.652466 1587.313477 1583.192383 1580.068726 1574.713623 1569.075195 1562.947876 1557.272095 1552.446167 1548.43689 1542.328857 1537.169556 1533.807983 1524.635376 1521.028198 1519.909424 1520.022217 1518.652344 1515.447998 1511.142456 1509.325073 1504.715576 1499.539917 1499.435547 1501.002319 1504.839111 1512.627563 1522.521606 1527.146851 1533.345215 1533.048584 1526.741943 1529.822632 1522.822388 1510.598267 1513.101196 1530.890137 1546.203247 1550.52356 1550.250977 1556.355347 1568.443848 1585.72998 1587.098999 1585.955933 1587.262451 1586.61377 1584.038818 1584.17395 1586.998413 1587.432739 1592.426636 1598.884766 1600.145264 1598.104492 1592.512695 1586.674316 1580.887451 1574.99707 1569.509888 1563.873901 1557.323364 1550.694214 1544.636841 1538.518799 1533.446533 1527.600098 1519.430298 1510.490234 1505.966797 1501.345703 1494.467651 1487.795288 1482.856201 1478.184204 1473.848267 1468.543579 1463.155273 1455.268921 1448.246948 1441.328857 1432.956909 1423.790527 1413.633423 1412.096313 1418.393799 1423.868652 1424.672974 1422.604492 1419.248413 1414.977173 1410.912964 1405.257568 1399.833618 1391.295044 1380.392334 1376.852661 1372.872314 1369.426514 1365.256348 1366.290649 1372.000488 1375.055664 1376.124146 1376.171143 1376.713013 1378.939331 1383.926392 1391.044556 1396.514038 1401.195801 1406.542236 1408.491821 1404.453125 1399.720459 1393.927246 1385.916016 1375.514893 1377.592285 1388.123047 1400.848022 1416.372925 1425.355469 1433.141968 1439.370728 1451.263428 1454.453857 1456.441895 1456.828247 1455.836548 1453.886475 1451.389038 1448.853638 1447.602051 1447.598022 1448.080322 1447.739502 1449.258911 1452.204712 1453.604736 1452.787842 1450.061157 1449.088867 1448.794434 1448.063232 1448.21875 1445.272339 1442.069824 1438.878296 1428.292725 1423.570679 1423.852905 1427.209839 1429.862793 1430.977661 1431.559326 1434.96521 1437.770996 1439.419434 1436.871338 1433.27771 1429.981567 1427.049805 1425.200317 1423.45813 1420.732422 1418.749146 1417.452148 1414.95166 1415.88501 1421.214111 1425.640991 1425.672241 1423.99585 1424.766602 1426.661377 1427.557251 1427.740112 1429.242676 1431.142334 1431.557495 1430.928711 1429.65979 1428.045898 1418.684937 1416.590332 1420.039673 1423.007812 1422.225952 1420.033569 1420.893555 1423.503784 1426.170044 1428.415161 1432.324097 1436.723633 1440.384155 1442.130005 1445.169434 1449.413818 1452.477051 1454.767944 1456.296631 1457.267944 1457.377686 1456.731201 1455.5448 1454.051636 1451.973389 1448.744141 1444.497803 1441.131592 1436.878662 1429.356445 1425.444458 1429.095703 1434.985474 1440.594604 1445.274536 1451.111694 1451.53479 1450.619873 1449.92981 1450.818115 1453.927124 1455.683594 1456.822632 1457.995239 1459.272949 1460.223633 1461.123047 1461.652832 1462.107666 1462.182617 1461.838013 1461.554932 1461.312744 1460.657104 1459.276367 1455.643311 1451.545288 1449.182983 1444.677246 1439.121094 1432.490723 1430.870483 1433.320679 1434.919556 1435.031494 1433.800903 1431.940308 1430.143921 1426.934082 1426.078247 1426.365723 1425.140137 1424.25647 1423.669922 1421.376099 1419.075317 1417.149414 1413.579346 1410.544678 1408.733032 1405.913696 1401.278198 1393.929321 1388.221802 1386.408936 1385.503052 1383.117432 1379.115112 1373.067139 1367.355835 1362.013184 1359.357056 1356.468872 1351.865723 1351.015381 1357.815796 1367.895142 1371.055786 1373.428101 1373.72168 1375.07666 1378.245972 1379.938599 1379.655396 1377.101685 1379.062866 1379.997803 1377.9198 1371.516479 1365.244385 1365.807373 1370.22644 1370.857666 1366.169556 1364.52771 1372.342285 1381.635254 1391.318848 1398.756836 1404.390015 1407.438965 1406.086426 1399.256592 1397.331299 1398.010864 1401.590332 1401.681152 1400.268799 1396.287598 1399.011475 1402.226807 1411.034424 1416.741821 1418.327881 1418.629517 1417.879517 1412.697266 1403.444458 1390.96167 1376.031616 1366.111938 1355.027466 -1554.798218 1582.713745 1607.756836 1627.81604 1645.770264 1666.114868 1679.720337 1692.76355 1703.319336 1718.538452 1731.285034 1745.00647 1758.140015 1769.352661 1759.974243 1743.641479 1735.883911 1730.796265 1724.829834 1714.437378 1702.150635 1689.974731 1695.978394 1710.384033 1718.566406 1728.161865 1736.004028 1745.568237 1753.613159 1759.393921 1764.702637 1768.779419 1774.146973 1781.97168 1791.994629 1804.313477 1813.96582 1825.255249 1831.359131 1831.752441 1831.882202 1831.477783 1827.634766 1824.796875 1823.178223 1825.679932 1831.483887 1833.357544 1834.22168 1832.706055 1826.939575 1818.958618 1816.085938 1814.932983 1813.021362 1808.784058 1808.993042 1820.005493 1829.47644 1837.605713 1839.171997 1828.509033 1819.61377 1811.536377 1804.319214 1798.434204 1791.379272 1778.707764 1778.514526 1780.860352 1786.58313 1792.754639 1789.523315 1783.821655 1777.920166 1770.828613 1764.671875 1758.966553 1750.72583 1739.582886 1730.470093 1722.888184 1716.498169 1711.255493 1704.869873 1704.305176 1712.279297 1723.347778 1728.569336 1738.50061 1747.148804 1742.377197 1731.358887 1722.622559 1715.591431 1709.954834 1700.141968 1694.23877 1685.057251 1679.942871 1676.443726 1674.808716 1673.77356 1667.625244 1659.611572 1653.541748 1650.33313 1651.982788 1654.721436 1662.068481 1670.746216 1678.172241 1682.611694 1682.32251 1686.834351 1692.318604 1690.473633 1681.493774 1683.600708 1679.796997 1689.078613 1694.329102 1691.186279 1683.608887 1673.687256 1670.68335 1676.179565 1679.211914 1679.165405 1680.827148 1685.404541 1680.097778 1663.957886 1648.533325 1624.96936 1612.668213 1603.849243 1596.433105 1580.832153 1579.76416 1583.854248 1598.764893 1620.056763 1638.40625 1657.756836 1670.974365 1682.04187 1689.344849 1693.22937 1705.830322 1714.216797 1721.401855 1712.918945 1697.866089 1679.751953 1668.212646 1659.523193 1648.409546 1636.201904 1627.473389 1621.890991 1607.893555 1619.121704 1632.922363 1640.848633 1657.297974 1671.429321 1680.528564 1671.034668 1671.237183 1682.040161 1689.620483 1691.477905 1681.953491 1670.072266 1658.641357 1652.756104 1649.550903 1646.780273 1643.138062 1643.282837 1646.547241 1649.394287 1641.59729 1627.186279 1610.265747 1594.278198 1592.081055 1607.765991 1612.487671 1609.528687 1607.668457 1611.26001 1617.735229 1622.270508 1628.186768 1632.841431 1637.147705 1645.092407 1646.835083 1644.929199 1643.504517 1641.44165 1636.997681 1635.393555 1644.484497 1650.0896 1658.877563 1662.272217 1658.617188 1653.694824 1646.295044 1634.233032 1623.96936 1613.670776 1605.01355 1597.092041 1592.68396 1588.164429 1584.342896 1580.326538 1576.596558 1575.231812 1569.377197 1562.626587 1568.456421 1574.89917 1574.219971 1568.187012 1561.053833 1558.894897 1568.641968 1582.114258 1591.585449 1603.467407 1612.936035 1609.630859 1592.28064 1570.778687 1555.660889 1563.937134 1577.516968 1591.644653 1611.669312 1637.021729 1646.329468 1632.849243 1612.812012 1595.385132 1581.403809 1586.689453 1595.097412 1606.498169 1630.023071 1649.950195 1654.15979 1651.759644 1649.680786 1641.075195 1622.924316 1608.890503 1601.343994 1606.700195 1606.904419 1600.47229 1601.422974 1615.276245 1631.814819 1643.827393 1652.444336 1660.133911 1668.226196 1661.894043 1655.680176 1650.782104 1645.211304 1639.470581 1631.497192 1619.322266 1608.183105 1602.113159 1589.349121 1588.040161 1588.343994 1586.297241 1580.700684 1571.652954 1570.592163 1567.082153 1560.265259 1558.828491 1555.314087 1550.558838 1547.054443 1542.732178 1539.18042 1534.788574 1530.697021 1530.396973 1533.716309 1536.151978 1536.041016 1533.205078 1530.13147 1529.050293 1526.556885 1517.861328 1507.536621 1498.773804 1496.939087 1497.988647 1503.180908 1509.206177 1514.644043 1516.060791 1513.480469 1514.507202 1528.822632 1522.040771 1509.396362 1505.617798 1522.395874 1534.910645 1538.453491 1543.783813 1552.761719 1571.746094 1582.401123 1578.518677 1580.138916 1580.967041 1579.923706 1577.019043 1578.925659 1581.473633 1582.867554 1589.202637 1599.890625 1600.654541 1599.260254 1594.36792 1588.313843 1582.715088 1576.840576 1571.657593 1566.381348 1560.836792 1554.699463 1549.236328 1542.316406 1536.239014 1529.574585 1522.605469 1512.203003 1508.175659 1503.733276 1498.190796 1491.276611 1485.664795 1481.052979 1476.802734 1471.261597 1465.10437 1457.681641 1450.12854 1444.115601 1436.622925 1427.611938 1412.894409 1408.728882 1407.964111 1409.240967 1411.094849 1410.240601 1407.335938 1407.079346 1405.047485 1401.7052 1394.865356 1388.387329 1380.67688 1376.354004 1371.727539 1367.421021 1364.795044 1373.607544 1377.413696 1380.876953 1384.846313 1384.229614 1389.575195 1391.526489 1392.021362 1397.354248 1402.238647 1409.289917 1416.482544 1417.133545 1409.883057 1401.830078 1395.611938 1387.021973 1374.7323 1379.768677 1389.500366 1400.191528 1415.617065 1424.34436 1436.400513 1449.596802 1455.073364 1458.041504 1459.847656 1460.155884 1459.629517 1458.173462 1455.734009 1453.113525 1452.928589 1453.641235 1453.925415 1452.971436 1454.960815 1457.263794 1457.748657 1456.344238 1453.837891 1453.070312 1452.112183 1452.425049 1450.918823 1444.620972 1438.986206 1433.274658 1428.458374 1429.68042 1431.214478 1433.03064 1435.10022 1435.273926 1436.893555 1438.788696 1438.42334 1437.214478 1435.15271 1431.508911 1427.18689 1425.856689 1425.795044 1425.073242 1424.377319 1422.91626 1420.023804 1416.536499 1418.416748 1426.266724 1428.041992 1428.081177 1427.147217 1426.147949 1428.068237 1429.432983 1430.222412 1431.585449 1432.759399 1432.826294 1432.020264 1430.384644 1427.749878 1421.818115 1421.015259 1423.170898 1427.396362 1427.012695 1423.484741 1423.253784 1424.271851 1425.641357 1428.410522 1431.372681 1435.849731 1438.887939 1440.499146 1444.435669 1449.71936 1453.133667 1455.697021 1457.611694 1458.515991 1458.469727 1457.672729 1456.327881 1454.568848 1452.241943 1448.120361 1443.31543 1439.378662 1434.626953 1428.195312 1426.752075 1432.99707 1438.157959 1442.533325 1446.920288 1449.607666 1450.710327 1450.879272 1451.754272 1453.62854 1456.952026 1459.013672 1461.288818 1463.325684 1465.823486 1467.709229 1469.169678 1470.53064 1471.480103 1471.735718 1472.144775 1471.331665 1470.679565 1468.622559 1465.896484 1461.015259 1457.786987 1454.694702 1449.811035 1442.247437 1434.687256 1434.695557 1437.877441 1439.256348 1439.41333 1437.706665 1436.613403 1435.575439 1432.000366 1431.21106 1431.785156 1429.60498 1429.381104 1428.44397 1424.991699 1423.209961 1421.118408 1417.272461 1415.96167 1415.158447 1411.224487 1406.244629 1399.613159 1391.953125 1392.623901 1393.348022 1390.758057 1385.756104 1379.520508 1372.87146 1367.244629 1362.635864 1357.602539 1354.975708 1352.253174 1354.565063 1369.602173 1375.828125 1379.087524 1379.681396 1378.965698 1382.628906 1384.463257 1384.563232 1383.983276 1384.047852 1384.352295 1381.7323 1375.00647 1365.384033 1371.151611 1379.078491 1380.599976 1373.932251 1364.125854 1370.859253 1381.142334 1389.213867 1398.859375 1405.123413 1411.119019 1413.261475 1409.953125 1408.515259 1408.599243 1411.918579 1412.794067 1410.970703 1406.282715 1405.178223 1411.130981 1415.006958 1418.283081 1419.28833 1419.240112 1416.22168 1406.049072 1394.861084 1377.188599 1362.640381 1361.380859 1358.307495 -1554.620728 1577.62854 1604.265747 1619.937256 1639.701782 1655.578735 1671.953613 1679.522217 1693.149536 1703.550293 1720.130981 1735.324829 1750.910767 1765.862671 1773.500244 1762.895752 1751.288452 1743.577148 1738.249634 1729.432373 1713.820557 1701.273193 1695.567505 1710.354248 1718.753784 1724.568359 1730.05896 1739.401489 1746.872925 1752.185181 1757.722534 1762.928467 1769.489014 1779.143555 1791.915894 1802.519775 1812.584106 1823.78418 1832.140503 1832.549561 1831.358521 1826.780762 1819.107056 1816.361816 1816.066284 1820.721069 1829.717041 1834.53418 1837.675659 1837.744995 1834.224243 1831.510132 1827.726562 1824.053955 1821.130127 1817.033325 1815.574951 1820.531982 1828.045288 1832.591064 1834.34668 1830.096313 1819.487915 1811.245117 1803.748169 1798.211548 1792.630615 1779.785767 1771.992065 1774.680664 1780.306641 1789.860229 1792.560913 1785.521362 1780.338135 1773.411255 1767.257812 1761.854492 1756.565186 1745.433838 1740.015259 1735.825928 1733.086914 1718.636475 1705.752563 1699.030273 1700.708984 1712.733276 1715.558228 1732.778198 1743.400269 1739.171387 1725.930786 1715.781128 1708.368042 1704.515259 1699.760864 1697.729492 1694.499512 1685.463989 1683.043579 1683.177979 1680.425293 1673.266724 1664.053833 1655.78772 1645.61731 1647.349487 1647.137085 1649.527222 1660.7854 1670.823975 1673.669434 1672.289429 1677.235718 1684.134766 1686.026001 1678.0802 1672.357056 1668.629272 1674.360596 1683.652222 1677.816284 1674.922241 1667.617554 1662.245728 1665.741699 1668.36853 1669.079224 1676.443359 1685.606079 1681.048828 1670.707275 1657.151611 1641.719116 1628.598511 1617.236206 1605.818115 1595.954102 1581.12793 1582.498413 1599.471436 1615.484375 1637.338745 1654.125488 1664.24939 1671.866089 1677.459595 1682.856567 1698.822876 1707.010254 1719.16626 1717.517334 1699.132446 1684.153809 1672.042603 1660.501587 1651.412476 1641.162476 1632.120728 1625.703491 1609.378296 1613.776855 1623.620605 1631.926025 1644.442261 1660.542969 1664.686157 1659.221924 1664.651855 1673.623779 1680.601807 1686.365112 1684.589478 1674.99292 1661.17395 1656.524902 1654.745361 1652.205322 1648.92041 1648.560181 1648.957642 1649.021118 1633.477661 1622.937744 1601.927612 1599.77832 1608.300049 1616.65686 1619.648438 1612.799683 1609.251099 1616.575684 1623.342896 1629.450928 1635.453247 1641.977173 1648.942749 1650.749756 1650.893433 1648.755859 1646.88501 1643.075562 1638.372681 1633.506958 1633.516357 1639.616943 1647.788086 1651.808594 1647.024536 1643.235718 1638.099121 1630.673706 1621.311768 1613.45874 1605.761963 1598.264282 1591.782471 1587.336914 1583.709473 1577.313232 1572.894775 1572.6604 1566.556274 1561.012695 1558.897583 1558.595093 1560.719116 1560.371704 1557.875244 1556.707397 1559.698364 1570.994141 1580.177368 1588.620483 1597.976685 1596.754517 1584.813232 1568.949097 1554.222534 1564.298584 1578.422485 1594.154663 1611.325684 1638.317993 1649.700806 1628.864136 1608.982544 1590.344238 1573.225342 1579.677856 1581.676147 1599.675659 1627.50769 1654.379517 1659.170532 1656.589355 1647.338745 1630.142944 1613.753174 1604.135742 1594.911865 1593.812378 1592.056885 1589.443604 1608.206421 1622.392944 1636.498901 1645.980591 1655.525757 1665.688965 1673.481812 1674.863281 1663.653931 1654.58252 1647.650024 1641.663208 1634.543701 1625.71814 1616.137085 1606.697754 1595.428345 1590.19812 1585.706055 1582.522705 1582.142822 1583.632324 1583.735962 1581.153809 1576.475586 1569.592041 1563.463867 1557.261963 1556.154297 1552.572144 1547.374023 1541.650757 1537.139404 1539.436279 1544.735962 1546.064819 1545.71582 1544.099243 1542.215088 1540.914795 1539.134521 1532.20105 1516.695679 1500.889404 1494.121582 1492.9198 1494.317627 1496.823608 1500.651855 1503.030151 1501.016846 1513.292847 1514.291748 1507.592529 1502.112549 1498.89856 1510.384155 1523.024048 1531.947998 1535.771729 1553.217896 1563.881226 1564.825073 1569.115723 1574.759155 1574.958252 1573.36084 1570.430298 1574.050171 1576.257812 1580.045532 1588.463745 1598.679688 1600.775269 1599.769897 1595.446899 1589.523315 1584.158569 1579.0802 1574.283447 1568.769775 1563.432129 1557.665649 1551.570801 1544.471802 1537.173828 1529.428955 1522.037598 1515.487549 1510.312866 1506.000854 1500.946411 1494.118652 1487.68335 1483.255737 1478.775146 1473.403076 1466.95752 1460.638672 1454.184204 1448.445312 1440.991089 1434.871094 1430.817139 1418.47229 1409.682373 1401.786621 1400.525513 1400.307983 1398.701416 1397.035278 1396.61084 1392.612183 1388.494263 1381.897705 1376.800903 1373.5448 1370.121338 1365.738281 1365.456543 1381.502686 1388.51416 1392.765625 1394.134155 1393.9104 1395.574097 1397.108276 1399.424561 1403.91333 1411.219604 1419.467163 1427.303345 1425.143799 1414.052979 1403.880127 1396.773193 1387.796753 1374.850708 1381.103516 1392.389282 1401.485107 1416.671387 1426.870605 1442.867798 1453.983032 1458.755615 1461.521606 1463.390259 1464.318359 1463.294922 1462.444214 1461.456665 1459.370361 1458.610352 1458.931152 1460.569702 1461.271606 1463.375 1463.786255 1462.508667 1460.695923 1458.896118 1457.632568 1456.398193 1454.916626 1452.640015 1441.503296 1435.899658 1432.009521 1433.557861 1435.296021 1436.039673 1437.329224 1440.303223 1438.609375 1440.455078 1441.562134 1440.073364 1438.211426 1435.769287 1432.333252 1428.138672 1428.269409 1428.630615 1428.549927 1428.098511 1427.213257 1424.067505 1420.321411 1419.529175 1425.621094 1427.636108 1428.411255 1428.073608 1427.563232 1429.122437 1431.106567 1432.485107 1433.844116 1434.88562 1434.882812 1433.630005 1431.251099 1426.743042 1423.854736 1423.429565 1424.936035 1427.605103 1428.076172 1426.38147 1425.109131 1425.151245 1425.661987 1426.516602 1430.371338 1434.082153 1436.434692 1438.55896 1444.525146 1450.35437 1454.08313 1457.177002 1459.508057 1460.301758 1459.971924 1458.581299 1456.745361 1454.687256 1451.834473 1446.632202 1441.388306 1437.414307 1432.805786 1428.736328 1432.329956 1438.823486 1442.596924 1447.012207 1450.279419 1452.738037 1454.96814 1457.107056 1458.968506 1460.385986 1461.298462 1462.058594 1465.736816 1471.383789 1475.515381 1477.266113 1479.077637 1480.459839 1481.328125 1481.78125 1482.304565 1482.246338 1481.561768 1478.710693 1473.217041 1467.648804 1463.916016 1459.399292 1453.97522 1445.102661 1436.878174 1438.660645 1441.30542 1442.785767 1442.907349 1441.534912 1441.084473 1441.793091 1439.67627 1439.105347 1438.872803 1436.453247 1436.981079 1434.848877 1429.37915 1428.175171 1425.753296 1422.637451 1420.92688 1419.141113 1415.460449 1409.460449 1403.325562 1399.512207 1402.399292 1403.820068 1401.341187 1392.491577 1386.459106 1379.331177 1374.311035 1368.77832 1363.732178 1358.743652 1355.105347 1351.484253 1367.538086 1378.875366 1382.52478 1385.218628 1385.773315 1386.494385 1389.037109 1390.602051 1390.057251 1389.377075 1390.456177 1386.521484 1379.408936 1373.743774 1378.606689 1390.303101 1390.90625 1381.740356 1369.885254 1370.261719 1379.950684 1389.842773 1398.34436 1407.342529 1414.651978 1417.997681 1418.91394 1418.393677 1416.852783 1420.06958 1420.58606 1419.430542 1415.217407 1413.234497 1416.744873 1418.710449 1419.632324 1419.836182 1417.939209 1407.820557 1395.534058 1379.246338 1368.720825 1372.213623 1375.541016 1376.779175 -1545.305542 1566.826782 1594.354492 1612.735596 1629.47998 1641.934814 1655.838379 1669.033813 1683.667358 1690.310547 1702.598022 1721.115356 1738.960938 1755.92334 1769.384521 1780.175659 1771.543335 1762.18689 1754.151733 1744.30603 1727.938232 1712.1073 1703.84436 1708.308716 1717.942505 1723.438354 1728.542725 1734.829468 1741.003418 1745.893433 1751.613403 1757.310791 1766.780151 1779.411133 1794.19751 1803.5 1812.153198 1822.701172 1831.671265 1832.560303 1827.71106 1818.526123 1811.449951 1805.199951 1802.250732 1814.312744 1825.975098 1833.491699 1840.785645 1842.298828 1839.218384 1835.565063 1833.536621 1831.357056 1828.738159 1823.683594 1820.598511 1820.72583 1822.982544 1825.666504 1828.415527 1825.835693 1818.251831 1809.293457 1802.226562 1796.902222 1791.491333 1783.430054 1771.90332 1766.254272 1773.507935 1782.358643 1785.69751 1784.839966 1781.559814 1775.017822 1768.065674 1762.337769 1756.75061 1750.908813 1746.207031 1745.139526 1737.82959 1727.505493 1708.147461 1698.81958 1693.115723 1699.077026 1713.579102 1728.415649 1736.289917 1734.885254 1724.31543 1714.066406 1703.917603 1694.21106 1693.553101 1695.572632 1697.583496 1697.425049 1697.081177 1693.550659 1685.592529 1675.029785 1666.579346 1660.32605 1649.485352 1644.756958 1642.875122 1643.664673 1650.040527 1657.45874 1659.483643 1664.295166 1667.466309 1677.571045 1682.429565 1672.962769 1660.741699 1658.773682 1662.864014 1670.396851 1663.985596 1660.651001 1657.504761 1653.016846 1656.213623 1660.814331 1663.773682 1670.902588 1676.277588 1670.421631 1660.128052 1647.194824 1640.093628 1634.353516 1624.154785 1607.592896 1594.522461 1581.220947 1581.605713 1599.284912 1613.166626 1632.029419 1643.16687 1655.489502 1663.651611 1670.330688 1679.460327 1696.149414 1704.940552 1715.034302 1718.837891 1701.89624 1688.32251 1673.376099 1661.181274 1653.039795 1644.781738 1634.380249 1630.096313 1616.843506 1618.256836 1620.542236 1619.014526 1635.166626 1645.141479 1651.026611 1649.730347 1657.223267 1666.053833 1674.54541 1686.354736 1694.110474 1683.000854 1672.228516 1663.699097 1660.863281 1658.45105 1654.802856 1650.905884 1646.311523 1637.775757 1625.662231 1607.11499 1603.802246 1610.901001 1618.352905 1624.58667 1626.324707 1621.589722 1615.871094 1621.847534 1629.252075 1636.305176 1643.480835 1652.112183 1658.142944 1658.70166 1656.395142 1652.730347 1650.005249 1646.710205 1637.916138 1632.126221 1630.997803 1631.323486 1638.767822 1643.808594 1640.55481 1634.473145 1630.01123 1622.816895 1615.080688 1610.328125 1603.263672 1597.915283 1587.714722 1583.55188 1579.145874 1574.911743 1570.476929 1567.144409 1562.540771 1562.00647 1560.766479 1558.060181 1554.494873 1554.107544 1552.880005 1552.062378 1554.493774 1558.706177 1566.462402 1575.93042 1582.686646 1583.368774 1575.21936 1561.828247 1549.795166 1565.020508 1578.447998 1590.900635 1618.457153 1637.568848 1641.586792 1625.941406 1609.660034 1589.455933 1572.612305 1571.922852 1576.314453 1601.423096 1626.684204 1653.526978 1664.246338 1658.814209 1648.396362 1637.792358 1625.196899 1609.949463 1592.865967 1583.072266 1581.36084 1596.146851 1613.608521 1627.446899 1639.313354 1651.332397 1663.578003 1673.028931 1674.395386 1675.562866 1671.055176 1656.77417 1651.439087 1645.627319 1639.006104 1631.172241 1621.42041 1609.960693 1604.901001 1605.373535 1601.876465 1599.327759 1599.611694 1599.810669 1598.515015 1593.167236 1584.73938 1578.624512 1570.585327 1565.843384 1564.751221 1558.791748 1549.318848 1548.750854 1547.017578 1549.587891 1553.71228 1555.103638 1555.803345 1555.477661 1555.693359 1554.747192 1549.810181 1541.554443 1521.356567 1511.445801 1505.119141 1499.047241 1488.94873 1488.329102 1488.434814 1488.218872 1497.704834 1504.717773 1504.978027 1499.548584 1495.237305 1501.768921 1516.451416 1526.314453 1523.329834 1534.860962 1547.6875 1553.331665 1554.009155 1560.421387 1565.214355 1566.569702 1564.998413 1561.974854 1567.480103 1569.640869 1573.381958 1587.031372 1594.67627 1598.708984 1597.560669 1592.872803 1588.621826 1584.343872 1579.485229 1575.150024 1570.10144 1564.949341 1559.676758 1552.640381 1545.307251 1535.874023 1530.928101 1523.762451 1518.517578 1513.094238 1508.120972 1503.125977 1497.244507 1490.420166 1485.25708 1480.59082 1475.181763 1469.490356 1463.686279 1458.13269 1453.474365 1448.735596 1443.112305 1439.599121 1433.83667 1425.890259 1416.79895 1401.098633 1397.170654 1393.692627 1390.130737 1387.153442 1384.177124 1380.283569 1377.250977 1374.459106 1371.290161 1366.782471 1365.807251 1373.182983 1386.451782 1392.886475 1396.222046 1399.013184 1399.865234 1400.340088 1400.749634 1404.981567 1415.713745 1423.24646 1431.094238 1436.823364 1432.095947 1416.669556 1405.476318 1399.676636 1389.290527 1375.588623 1382.133423 1393.902344 1405.131226 1419.867188 1432.396851 1447.964722 1457.417114 1463.104248 1468.195435 1474.46814 1476.228149 1474.439941 1472.16394 1468.880249 1465.688232 1464.207642 1464.040771 1466.939941 1467.926147 1469.04248 1469.216919 1467.660278 1465.427246 1464.140381 1462.311157 1460.116333 1456.869629 1452.988647 1443.493408 1436.170532 1436.345215 1439.621338 1441.353882 1440.810547 1442.154175 1445.316895 1445.077393 1444.943359 1444.571899 1441.811401 1439.070435 1437.102173 1434.531616 1433.086304 1432.59375 1432.095703 1431.597534 1430.861206 1429.703247 1427.735718 1425.098389 1424.408325 1424.467407 1426.118286 1427.92334 1428.914795 1429.58667 1431.143555 1432.654175 1434.338623 1436.220215 1437.282593 1437.226807 1435.670654 1432.426514 1428.825439 1425.329468 1424.962646 1425.967163 1427.457397 1428.876831 1427.435913 1426.626099 1426.648071 1426.141846 1426.592651 1430.132568 1434.385132 1436.874268 1439.345215 1445.817261 1451.460938 1455.051147 1458.824707 1462.145142 1462.451782 1461.07373 1459.393433 1457.050171 1454.444092 1450.193481 1443.804321 1438.453735 1434.67334 1431.073975 1431.61792 1438.589233 1443.875122 1448.027954 1451.526733 1455.925537 1459.927612 1463.328491 1466.556519 1468.369385 1469.262817 1468.610596 1468.677612 1474.664185 1479.868164 1483.300049 1486.028198 1488.282471 1489.679565 1490.930054 1491.954956 1492.969849 1493.11853 1492.324219 1489.910645 1482.168335 1477.27002 1471.365234 1463.877563 1457.221313 1448.2854 1438.730835 1441.80481 1444.530273 1446.378906 1447.511108 1447.929932 1448.173218 1447.468018 1447.468872 1447.630371 1446.330566 1445.061279 1445.747681 1442.905762 1437.876465 1436.853271 1430.899902 1426.255859 1425.722534 1423.252441 1418.634033 1414.521118 1408.793823 1402.631104 1407.297852 1410.848022 1407.519043 1400.953735 1393.071411 1385.748901 1379.797974 1372.836548 1366.532227 1361.07312 1355.883667 1352.84436 1360.80957 1380.138184 1386.080078 1390.703735 1391.381714 1390.514771 1393.755127 1396.38562 1396.895142 1396.74292 1396.802734 1392.259644 1383.574829 1375.942505 1385.334717 1397.264282 1400.410278 1391.959717 1382.395386 1378.433594 1376.039917 1386.665894 1396.588135 1407.159912 1416.19165 1421.642212 1426.116699 1426.991333 1425.821289 1426.429565 1428.385742 1425.645752 1420.474854 1418.949097 1420.430664 1420.480347 1419.89978 1418.048096 1410.491089 1395.895508 1379.257812 1372.192871 1379.179932 1382.592529 1384.602539 1385.422241 -1529.619751 1555.961914 1574.905884 1601.04834 1615.508423 1628.50769 1642.403931 1658.339355 1667.44104 1678.446777 1693.014404 1716.149536 1734.191162 1747.73645 1761.512207 1779.465576 1782.953857 1770.573364 1762.824707 1754.590332 1742.794922 1731.969116 1718.708862 1704.260254 1716.012451 1721.740479 1726.878418 1730.583496 1736.041016 1742.285889 1748.672241 1755.386108 1765.674683 1779.96814 1793.045166 1804.244873 1812.575684 1822.32605 1831.562256 1829.706909 1820.594971 1812.01123 1804.966309 1793.947632 1793.387817 1810.198242 1822.373657 1830.820557 1838.974487 1839.948975 1837.826904 1835.486206 1834.192749 1833.499756 1831.978638 1827.460571 1819.390625 1816.25708 1816.394287 1818.419067 1820.276489 1819.322021 1814.226074 1806.473389 1799.430176 1793.747314 1788.187988 1783.746338 1774.588013 1761.412109 1764.888184 1772.9021 1777.973267 1782.761719 1782.863037 1776.755371 1768.572632 1762.314209 1756.040894 1748.765015 1742.585693 1740.711182 1737.410645 1731.588623 1711.278198 1700.489746 1693.499268 1694.578247 1711.220337 1723.075195 1728.691162 1730.964722 1724.245728 1712.928101 1702.1604 1691.759766 1682.196533 1688.704956 1696.923584 1696.824951 1696.723267 1691.771973 1684.018921 1674.383301 1665.493042 1658.866211 1652.092529 1647.711548 1641.259644 1638.984131 1637.678711 1641.633301 1650.321655 1654.182739 1660.623291 1666.064941 1670.112061 1665.661743 1655.651978 1647.693726 1654.189453 1660.404175 1653.456543 1645.631836 1645.492065 1643.802002 1646.240479 1652.236816 1655.445435 1661.199585 1664.911987 1660.181885 1649.010498 1636.92981 1623.741577 1616.46521 1610.911377 1598.62439 1580.74292 1581.686401 1590.245361 1605.587769 1620.605957 1631.477417 1645.238159 1651.632812 1659.519043 1669.572876 1678.18396 1694.645386 1702.944092 1713.599609 1718.968262 1701.676025 1686.592651 1672.740112 1661.688843 1654.598389 1647.751465 1637.847168 1633.284546 1629.101807 1635.389282 1639.579346 1633.175659 1630.104492 1636.650757 1641.682739 1646.840942 1656.360474 1663.907715 1673.046631 1688.639893 1702.758911 1692.598022 1680.016357 1674.531372 1670.605591 1664.603638 1658.165649 1649.75708 1641.225464 1628.557983 1612.078857 1607.652222 1612.867798 1623.9375 1628.207886 1633.632202 1634.142944 1626.194336 1621.092407 1623.562378 1633.317383 1641.390137 1651.085571 1661.503662 1665.108154 1664.783569 1660.408691 1656.131714 1653.366211 1649.760864 1643.175049 1634.268555 1631.509033 1630.386353 1631.622559 1634.397217 1633.893066 1628.75354 1624.584717 1614.839844 1606.962769 1602.197876 1597.221802 1589.055176 1582.990967 1579.506592 1574.436401 1572.544312 1573.932007 1575.108154 1570.978394 1568.682739 1568.93042 1567.6698 1565.882935 1560.454346 1551.932251 1547.841431 1549.842651 1547.686157 1552.466187 1560.759399 1568.032104 1572.644287 1565.502441 1554.452881 1548.221802 1567.117188 1582.602539 1597.633179 1620.696899 1633.393921 1631.780029 1620.181152 1607.037842 1587.297852 1574.820312 1569.445679 1576.468628 1599.843628 1627.550293 1653.873291 1672.609741 1660.487915 1650.858765 1637.102051 1619.916748 1600.190918 1581.295898 1575.265259 1581.099976 1599.989502 1618.007935 1631.99707 1642.731201 1656.531982 1661.627808 1661.860352 1667.234985 1668.53125 1666.531006 1663.205933 1656.0625 1648.971191 1641.619751 1634.025391 1622.059814 1610.185791 1617.931396 1621.425049 1622.086792 1621.749634 1621.243774 1619.20813 1613.016235 1604.815552 1594.82312 1588.005981 1578.162354 1575.852905 1571.040405 1562.26062 1555.579712 1554.870483 1550.436035 1556.959351 1561.037109 1563.856445 1567.25354 1569.654785 1571.06311 1564.154175 1556.266846 1543.792114 1527.97998 1527.128906 1518.156738 1509.825928 1497.541382 1486.22522 1483.048218 1484.015015 1488.337036 1494.605225 1497.558228 1493.526245 1487.790527 1504.000732 1513.230225 1515.915283 1514.594604 1531.018677 1540.059448 1544.354858 1545.861572 1551.0896 1553.760254 1557.051392 1554.556152 1554.922852 1560.411377 1560.494629 1571.08667 1583.866211 1588.803711 1587.55249 1584.193848 1583.615234 1583.302856 1580.990845 1577.667969 1574.128296 1569.711426 1564.614136 1560.102539 1552.904053 1546.772949 1541.546143 1537.169067 1529.377075 1522.079224 1515.798584 1510.382324 1505.561157 1501.023438 1494.174805 1488.1698 1482.998535 1477.635132 1472.201294 1465.463257 1460.667236 1456.755127 1453.781372 1450.605225 1445.486206 1441.026123 1433.688232 1426.76416 1420.981567 1414.23999 1403.167603 1399.36499 1392.9021 1387.9729 1378.776611 1376.164185 1373.296143 1368.594971 1366.227051 1366.342407 1381.545288 1389.578369 1395.860962 1400.28479 1404.423584 1408.856201 1410.659546 1413.185303 1420.226929 1428.929321 1437.547974 1442.40564 1446.241211 1438.641113 1419.37793 1408.879395 1400.501831 1392.745972 1376.521851 1383.447021 1395.547485 1408.233765 1421.963379 1435.55542 1450.674072 1460.337036 1469.876465 1477.998901 1483.168823 1484.861084 1484.949463 1482.956177 1479.863159 1477.050781 1474.176025 1472.905762 1472.934692 1473.87146 1475.257812 1475.025635 1473.846436 1471.821655 1469.717041 1466.718384 1463.231079 1459.095703 1453.052856 1444.563232 1437.651611 1440.416138 1444.536499 1447.412476 1449.573364 1452.042603 1452.456299 1451.16272 1450.941162 1449.241943 1445.432251 1441.093384 1437.878906 1437.126587 1437.210571 1436.949585 1436.142822 1434.946045 1434.024536 1432.663086 1430.84375 1429.240845 1429.53833 1429.268921 1428.284302 1428.313232 1429.913452 1431.370605 1433.028687 1434.732788 1436.062378 1438.104126 1439.248535 1439.154785 1437.290649 1434.231445 1430.818604 1426.389404 1427.797974 1427.401245 1427.475464 1429.580444 1429.363281 1428.743774 1428.886841 1427.313232 1426.286499 1429.346069 1436.887939 1439.89563 1441.520752 1447.538696 1452.406128 1456.168457 1460.106567 1463.85022 1463.314575 1461.465698 1460.517212 1457.223389 1453.147217 1446.927246 1439.675659 1435.942871 1432.494507 1434.553711 1439.193726 1443.575439 1448.702393 1453.82312 1459.012207 1464.184692 1469.747314 1475.299316 1478.854004 1481.541748 1482.851196 1481.509399 1477.598633 1481.426025 1486.640747 1491.721069 1496.097412 1499.39856 1502.11731 1503.738281 1505.051392 1505.89624 1505.155029 1503.262207 1497.437988 1491.622559 1489.225708 1480.776001 1470.921143 1460.618164 1450.571167 1442.094849 1444.717896 1448.117065 1450.35498 1452.041138 1453.901489 1455.436768 1455.390869 1456.274414 1457.2052 1456.099365 1455.677612 1456.430542 1452.549316 1450.968506 1447.06958 1439.229858 1435.566772 1433.512939 1427.893921 1424.53418 1419.384155 1414.512085 1410.913452 1413.666016 1416.781616 1412.171875 1404.288208 1396.602539 1388.649902 1382.531494 1375.87561 1368.5354 1362.963379 1356.471069 1353.564697 1361.173096 1379.185303 1388.376343 1393.335571 1395.960449 1396.878296 1398.909912 1402.376099 1404.506226 1403.796753 1404.662476 1399.510376 1391.052002 1383.641479 1392.808105 1404.073486 1410.749878 1403.200806 1399.074463 1389.499756 1380.22937 1382.26709 1390.80835 1403.16394 1416.137085 1424.151489 1429.489502 1431.426392 1432.680786 1433.634033 1434.130249 1430.568726 1426.027954 1424.415161 1424.126831 1421.67981 1418.263916 1412.445679 1399.350342 1381.908325 1375.802612 1385.336426 1389.950684 1391.586792 1393.202393 1393.675781 -1518.827148 1554.376587 1575.749512 1597.823608 1614.187988 1624.898682 1633.129883 1640.137573 1654.136475 1676.731567 1692.509766 1711.421509 1729.219116 1741.874146 1755.950439 1761.40332 1763.459961 1763.230103 1757.913574 1752.88208 1748.706787 1743.710693 1734.048096 1728.013062 1726.658203 1726.35376 1728.574707 1730.699463 1736.309082 1743.137695 1749.612427 1757.801636 1766.965576 1779.614746 1790.345459 1803.872803 1814.636108 1823.139404 1828.952881 1824.374268 1814.413574 1803.683716 1797.057617 1787.503418 1786.000732 1806.433472 1819.790649 1830.226562 1832.789185 1830.943237 1829.961182 1831.866455 1833.374512 1832.942383 1831.898193 1826.702026 1817.310059 1810.919067 1808.330811 1810.22937 1811.308472 1811.189331 1807.610107 1802.12146 1795.383423 1789.410645 1782.258301 1778.523926 1773.169189 1763.652832 1753.636353 1760.566284 1768.603394 1776.633545 1782.668945 1778.742432 1769.432495 1761.533081 1753.940796 1747.014526 1740.219849 1733.280029 1734.256104 1733.230469 1716.734497 1702.626465 1693.884766 1692.166626 1702.535645 1714.78186 1718.034668 1719.369019 1720.68042 1713.080566 1701.110596 1688.224609 1678.581055 1679.766968 1686.624634 1685.176636 1682.161377 1680.532227 1675.178955 1666.096069 1656.172974 1650.381958 1646.693359 1643.44873 1636.839844 1634.946533 1631.72168 1631.383301 1637.296631 1641.918091 1647.982422 1652.043579 1655.073486 1653.503052 1647.966553 1641.400757 1644.591919 1645.758667 1643.417358 1634.783203 1632.491455 1633.153076 1637.105591 1641.834351 1646.22644 1652.323364 1656.141235 1648.896729 1637.221069 1622.046631 1609.430176 1601.894653 1596.29126 1581.430908 1582.371826 1590.039551 1604.120239 1621.613525 1636.134155 1649.154663 1657.96875 1662.041626 1666.775513 1671.387817 1677.520752 1692.756104 1701.819824 1713.700439 1719.345337 1702.397095 1688.131348 1676.313232 1665.903442 1657.416138 1651.47937 1645.92749 1642.406372 1636.767944 1645.125977 1650.53833 1643.418213 1638.098633 1635.856689 1642.73291 1648.158936 1655.421753 1662.553223 1671.842896 1685.472046 1706.929321 1700.977417 1688.622681 1681.255005 1676.763062 1671.768677 1662.42041 1651.534058 1640.529419 1626.0271 1614.788086 1620.333374 1626.856201 1634.403809 1638.02002 1639.242676 1638.074463 1630.802734 1627.747803 1628.952271 1636.089233 1645.894653 1657.27771 1665.575562 1671.424927 1671.284302 1666.051758 1659.986938 1656.951904 1653.223389 1648.202881 1640.491577 1634.564697 1630.655029 1626.546631 1625.061523 1621.153442 1621.808838 1619.802124 1610.04187 1601.564575 1593.594971 1587.86145 1583.943481 1580.325928 1578.749512 1579.843506 1585.352295 1585.651489 1581.532471 1575.383545 1575.832764 1576.64917 1574.350342 1574.240356 1575.803711 1569.144287 1558.443359 1550.509521 1545.418823 1545.849609 1547.313965 1551.480347 1556.158447 1554.557495 1548.439453 1550.142822 1566.989868 1585.622925 1599.446289 1616.366821 1624.948975 1622.269653 1612.128662 1598.648438 1583.071777 1572.93689 1568.146362 1577.417847 1602.263794 1630.755005 1656.503662 1674.178345 1659.617798 1651.592041 1641.853271 1626.225464 1608.299316 1587.03772 1569.63147 1582.638062 1599.528564 1618.412964 1631.21106 1638.922852 1645.575684 1647.57605 1648.623047 1654.890381 1655.125488 1654.394165 1662.05835 1657.4552 1649.442505 1641.048828 1631.418579 1620.011719 1620.446167 1627.395874 1632.393188 1636.131958 1636.793091 1634.100586 1628.081055 1622.900269 1612.255371 1603.412354 1595.369141 1586.555054 1581.631226 1575.013794 1562.016968 1561.933105 1563.092163 1559.912598 1561.973755 1568.180664 1573.158325 1579.551392 1585.342773 1586.79541 1571.59314 1559.96106 1546.636841 1545.461304 1539.72876 1530.385742 1520.035889 1502.638794 1498.898438 1492.859619 1480.882568 1481.827759 1483.880859 1487.141846 1486.152588 1485.513428 1496.948853 1504.807251 1502.861328 1510.790649 1524.160034 1532.577881 1536.458008 1537.169312 1542.164307 1544.287842 1546.916626 1545.742676 1550.142944 1551.373413 1554.357422 1568.591797 1578.783325 1581.412476 1578.612549 1576.566284 1576.467529 1576.436523 1575.975952 1574.951172 1571.452026 1567.014771 1562.211792 1558.418335 1554.819092 1551.452026 1548.600708 1541.834473 1535.252319 1524.907837 1518.256348 1512.570068 1507.806274 1503.135498 1497.51062 1490.980957 1485.609863 1480.448608 1475.249023 1467.301758 1461.621338 1457.146851 1454.387573 1452.57019 1447.215332 1442.22229 1436.699341 1429.924072 1420.574585 1415.616943 1410.853271 1405.23291 1399.998535 1388.625488 1378.817749 1375.154541 1368.802979 1366.838745 1365.526245 1377.53125 1386.459961 1393.738525 1399.868164 1406.539429 1416.911133 1422.24707 1423.745361 1426.875488 1434.190308 1444.81897 1451.369019 1456.949219 1454.484863 1441.265137 1421.346802 1410.029175 1401.362305 1393.490845 1378.645508 1385.744263 1396.355713 1410.921021 1423.186646 1435.995239 1451.452271 1463.945068 1476.003418 1486.591064 1492.12854 1494.777954 1495.03894 1493.761597 1490.923096 1487.449097 1483.71582 1481.774292 1482.538818 1485.388916 1485.606567 1483.656982 1481.168945 1478.648438 1476.008423 1471.804321 1467.247681 1461.365234 1452.871704 1445.290283 1440.84021 1446.191406 1450.983643 1454.275269 1457.319824 1458.996704 1458.390747 1457.12085 1455.670654 1453.884644 1450.206055 1443.918335 1438.61499 1439.437012 1440.865723 1441.059326 1439.536621 1438.240601 1437.591064 1435.746582 1434.473389 1433.597534 1433.379272 1431.94873 1430.61145 1429.859985 1431.349487 1432.96875 1435.046021 1436.881104 1438.121582 1439.795898 1440.756958 1440.578857 1439.558838 1436.97998 1433.505859 1427.713989 1429.758423 1430.271484 1430.507324 1431.535278 1432.431152 1433.068237 1432.942383 1431.21936 1428.287598 1430.179199 1438.648682 1442.114868 1445.160278 1449.421631 1453.606445 1457.325317 1460.935059 1464.454224 1463.791382 1462.881958 1462.969116 1457.639038 1450.550781 1441.241943 1437.135986 1434.491821 1437.177612 1441.775024 1445.599854 1449.665771 1455.091797 1461.811401 1468.827271 1476.665405 1482.282715 1486.412109 1492.035645 1496.145874 1495.780273 1494.06189 1488.069214 1488.119019 1494.966309 1501.765625 1505.901978 1509.894653 1513.150146 1516.720947 1518.169189 1518.199341 1516.818604 1512.584717 1505.861938 1504.247192 1499.370972 1489.971191 1476.96936 1464.070557 1451.87439 1445.174194 1448.40625 1452.206177 1455.107666 1458.233765 1461.954834 1465.21167 1466.924561 1468.401001 1469.13623 1469.46875 1469.701538 1468.790649 1464.590454 1463.505127 1457.736328 1450.189087 1448.114624 1442.985718 1436.92688 1429.873169 1422.97583 1416.90686 1413.106812 1417.739624 1419.170288 1415.079712 1407.898193 1400.339722 1391.627808 1385.816772 1379.727783 1372.541138 1365.998901 1355.975464 1357.596191 1363.780029 1377.073608 1388.792114 1395.455566 1400.875 1402.919067 1404.14502 1406.955444 1409.039673 1409.397461 1408.759277 1405.045776 1398.613037 1390.485352 1397.536621 1414.046143 1419.961304 1416.647583 1412.473145 1403.136108 1391.111328 1386.978271 1388.384888 1401.438477 1414.782349 1424.635986 1430.65686 1434.765015 1438.49292 1439.849121 1440.31311 1435.343506 1429.684448 1428.684692 1426.77063 1421.38208 1415.093506 1404.060547 1389.339722 1383.176758 1393.923462 1398.514404 1399.62439 1400.616089 1402.065674 1403.798584 -1522.216675 1555.084351 1578.893066 1596.414917 1605.460938 1606.939575 1623.404663 1639.609497 1655.401978 1678.268311 1692.06189 1707.81311 1721.445557 1732.131958 1743.910645 1747.209961 1746.368774 1743.991455 1740.806885 1742.056641 1746.802002 1755.374268 1756.633667 1752.808105 1745.894287 1739.762817 1730.842651 1736.47168 1743.352661 1748.167236 1751.982788 1758.669556 1771.006958 1781.769165 1791.01123 1802.440308 1815.418457 1821.733276 1822.551514 1819.427246 1806.223877 1795.160767 1788.216553 1779.250122 1783.925049 1800.934692 1815.918213 1825.050171 1825.953003 1821.915283 1819.101807 1822.041016 1827.101318 1828.647827 1827.506836 1821.893921 1813.968506 1805.169434 1800.740356 1800.527466 1801.319214 1800.915771 1799.261108 1795.037842 1790.647705 1784.935303 1778.350708 1772.821655 1770.294067 1765.207397 1752.134033 1747.168335 1756.828735 1765.862305 1774.050171 1776.783203 1771.004272 1762.323975 1753.246826 1744.571411 1736.857056 1730.203247 1730.490112 1735.470581 1722.272705 1705.218628 1693.0625 1684.183105 1693.725708 1706.271362 1705.779419 1707.708252 1713.862549 1711.719238 1703.35791 1689.031494 1676.502075 1669.213867 1674.973145 1675.325195 1670.037109 1668.040771 1664.971924 1657.046509 1647.703857 1640.808838 1637.318359 1633.40686 1632.066772 1631.40686 1630.17334 1629.447021 1629.923218 1631.543945 1633.439819 1637.522461 1641.301392 1640.837891 1638.377563 1633.363525 1634.647461 1635.611572 1633.850098 1627.396362 1622.224609 1623.026855 1626.056641 1633.156738 1635.705322 1638.103394 1640.231934 1637.944336 1624.198486 1609.057007 1597.954468 1593.067139 1588.505493 1584.194092 1588.651367 1600.000854 1615.788086 1630.694214 1651.780029 1661.369141 1670.75061 1673.657104 1674.687988 1676.734741 1679.80896 1693.662598 1702.290039 1713.970947 1719.700562 1705.866821 1697.477295 1684.683716 1670.763306 1662.331055 1657.818237 1655.200928 1652.634766 1648.572876 1652.51062 1659.117554 1655.056641 1650.879272 1645.237793 1644.183838 1649.547729 1654.218018 1660.467773 1669.569702 1679.790527 1698.198608 1702.134888 1697.775269 1690.165405 1681.499634 1674.200806 1665.199829 1654.065552 1641.556519 1622.477661 1623.292603 1628.811157 1635.458252 1643.10437 1646.266602 1645.574219 1643.430786 1633.759766 1631.997559 1632.977417 1639.194336 1649.258545 1657.437378 1668.180786 1673.286255 1673.045654 1671.603149 1666.269287 1661.609131 1657.374512 1651.940796 1646.138062 1639.047974 1632.580933 1624.27417 1620.218262 1618.537231 1615.640137 1613.198608 1606.468994 1596.343628 1586.060059 1584.29895 1582.192139 1586.329834 1590.053223 1590.357788 1593.257568 1591.794312 1586.731323 1582.052979 1585.108154 1587.515503 1584.775024 1585.025757 1586.188721 1579.675537 1567.873169 1558.670288 1551.083618 1544.750977 1542.907104 1544.345459 1547.235596 1548.23584 1544.21521 1550.247681 1564.970825 1580.744141 1596.808228 1608.407715 1614.621094 1610.820923 1599.898682 1585.774658 1576.651123 1559.990967 1568.514038 1584.174316 1611.429443 1637.301025 1657.369507 1660.244507 1653.222046 1646.354004 1633.289551 1618.161987 1600.425293 1578.984497 1567.523682 1580.442993 1595.696777 1613.93335 1624.010132 1628.993652 1635.38269 1635.414551 1638.117798 1642.111084 1643.057007 1647.180542 1661.34729 1656.988037 1648.278564 1638.269165 1631.906494 1624.233398 1624.338257 1634.05835 1643.378906 1647.621216 1646.338745 1641.85083 1632.125732 1622.178467 1614.963989 1607.659668 1601.248901 1593.997559 1584.701416 1574.370605 1567.252808 1568.922607 1569.115234 1566.081665 1568.948486 1576.0 1582.400146 1591.449585 1597.5 1591.398193 1578.185669 1567.675903 1566.231567 1559.220703 1547.953369 1537.880127 1527.631348 1519.80603 1515.993652 1502.407593 1488.781128 1480.732544 1478.246948 1479.111084 1479.101074 1483.515747 1491.134644 1495.461182 1493.540405 1503.779541 1515.386353 1523.074585 1525.765991 1529.147461 1534.880371 1535.720215 1538.875122 1537.323242 1543.178345 1543.557495 1552.861816 1564.970337 1572.410767 1573.056519 1569.702637 1567.263428 1568.031982 1569.002319 1569.988647 1569.685791 1567.343872 1564.13623 1560.27063 1556.593262 1553.893066 1551.495972 1548.670532 1542.355713 1536.353394 1526.505127 1520.104004 1514.660156 1509.547119 1503.706177 1498.693359 1492.380737 1487.088989 1482.02124 1476.598877 1468.617798 1461.495728 1453.903076 1450.183594 1447.489868 1442.987305 1439.01416 1431.658081 1422.234131 1409.655884 1407.208374 1402.282349 1397.743408 1396.64856 1391.904053 1374.01123 1368.38916 1368.980591 1373.114258 1376.868164 1384.838379 1392.507812 1400.721802 1408.171387 1419.060303 1430.779053 1436.27124 1437.028809 1436.557007 1445.630249 1459.700073 1467.623291 1466.666748 1458.157227 1442.439331 1424.109497 1416.877441 1405.016724 1393.948242 1381.650146 1387.858765 1396.637695 1412.04187 1424.550415 1436.848633 1453.193848 1466.746948 1484.427612 1495.467896 1503.256592 1508.056519 1508.920288 1506.323975 1502.328369 1497.384155 1493.023438 1490.757935 1492.583984 1494.400391 1494.392822 1492.883545 1490.089722 1486.465454 1481.800415 1477.031372 1471.241211 1463.998169 1454.302368 1446.361572 1445.423096 1452.450928 1457.313721 1462.086792 1466.316772 1467.057983 1465.0625 1462.069092 1460.265259 1458.19397 1453.79834 1448.328247 1443.366089 1443.995239 1445.357422 1445.620483 1444.361206 1442.963013 1441.451294 1438.434448 1437.313354 1437.666748 1437.489014 1435.458008 1433.085327 1431.772461 1432.680908 1433.962158 1436.648315 1438.864624 1439.613647 1441.46936 1442.666626 1442.688477 1441.488647 1439.133301 1435.954468 1432.836426 1433.646118 1433.741089 1434.014893 1434.308105 1434.995972 1437.044189 1438.954346 1437.807251 1434.735352 1435.135498 1438.676025 1442.551025 1446.749634 1451.189331 1454.749023 1458.207642 1461.66687 1464.621094 1464.978394 1465.044922 1465.219238 1458.672974 1449.453247 1438.977173 1436.354492 1438.876099 1442.716919 1447.0354 1451.557983 1458.834961 1465.648071 1471.686523 1480.11499 1489.862549 1497.705688 1503.40332 1506.31897 1507.347534 1507.353516 1505.495239 1499.062866 1496.367554 1502.510986 1509.104004 1514.996704 1520.48645 1524.709595 1528.83667 1530.384521 1529.575073 1526.869385 1518.952637 1515.398438 1515.934814 1507.384644 1494.956299 1480.681763 1465.795166 1452.619263 1448.5448 1452.592529 1456.464722 1460.236816 1464.10437 1468.624146 1473.120605 1477.20813 1480.736572 1483.875122 1485.825317 1486.582642 1485.2854 1480.309326 1476.055664 1469.234497 1464.541504 1457.55249 1450.22998 1443.15918 1433.49353 1426.045288 1420.373169 1418.408081 1423.563965 1425.401001 1416.104858 1409.993164 1404.533813 1396.918091 1389.881836 1382.268066 1375.086914 1368.442383 1355.977173 1361.827393 1369.683105 1378.38208 1389.062134 1397.784058 1404.003296 1408.370483 1410.586426 1412.108887 1413.861084 1414.339478 1413.973999 1410.999268 1406.451782 1400.005859 1404.953125 1419.124634 1427.057983 1428.239502 1422.767944 1411.329346 1399.975708 1390.611816 1390.589722 1396.215454 1409.442749 1423.333618 1431.20166 1437.145142 1441.616089 1445.325928 1445.577393 1438.990234 1435.464478 1431.373169 1426.364624 1418.30542 1407.890503 1396.418701 1387.314331 1398.437622 1406.72937 1410.92627 1413.178711 1414.754395 1414.294189 1413.659058 -1527.519531 1548.295654 1568.085693 1579.55603 1587.698853 1603.894897 1622.687744 1638.420654 1650.629883 1669.672607 1687.131104 1699.55957 1712.563843 1720.665405 1724.207764 1726.446899 1726.385986 1724.769653 1724.0177 1729.828125 1743.879028 1754.631836 1763.568726 1768.410034 1759.467163 1751.382812 1743.835083 1746.508179 1752.246582 1756.540283 1760.108276 1765.692383 1773.64856 1783.024414 1794.768555 1805.012207 1812.580322 1816.949219 1816.414795 1811.265625 1801.020264 1789.268311 1778.786255 1768.988403 1782.477661 1793.497559 1807.700439 1816.69519 1816.307007 1811.715088 1807.129517 1811.17688 1816.50293 1819.749634 1820.394897 1816.070679 1809.791748 1801.547119 1792.753174 1790.62146 1790.628906 1790.917969 1790.203003 1788.380859 1785.470703 1782.922485 1775.265869 1766.302734 1765.152222 1761.550537 1754.455444 1741.920288 1744.173706 1754.496948 1763.311279 1768.425293 1768.594971 1762.519531 1753.786255 1741.250854 1732.622803 1726.058838 1719.683228 1730.409424 1724.866089 1709.025635 1692.661011 1681.393433 1684.769409 1695.952637 1693.312866 1698.914551 1708.457031 1709.447144 1701.418091 1687.883911 1673.030884 1665.728027 1664.932495 1665.000977 1660.233154 1657.27832 1653.738281 1645.61853 1635.606934 1633.979858 1633.942505 1633.266235 1631.729492 1630.774536 1629.959717 1629.673584 1629.149902 1628.44397 1624.948853 1625.419067 1629.155396 1631.003052 1630.577026 1629.456421 1629.137207 1627.439209 1624.446411 1620.788208 1617.521606 1616.854614 1619.169678 1625.312988 1623.051392 1625.078613 1627.724976 1625.229492 1614.286499 1601.003052 1593.725952 1589.146484 1584.97998 1588.653442 1596.080078 1610.400391 1624.099243 1639.602295 1658.150879 1675.948853 1684.113647 1685.929932 1681.705688 1681.550537 1684.789673 1695.515259 1704.526489 1714.827148 1720.115845 1710.467041 1700.610718 1686.885132 1674.275024 1667.730225 1666.462402 1667.643921 1661.780884 1657.833374 1660.927979 1674.081543 1670.548706 1661.585327 1652.019287 1645.549194 1650.741943 1655.908569 1661.537109 1667.495117 1675.60022 1687.24292 1699.485962 1699.792358 1697.369629 1685.834473 1675.310913 1665.362915 1653.792969 1639.255249 1626.223877 1633.996704 1634.331299 1643.741821 1650.428955 1652.895264 1653.119019 1651.088989 1642.858521 1635.643433 1638.204712 1645.098145 1652.557495 1659.680054 1668.844727 1673.394531 1674.007446 1673.50708 1671.182129 1666.167847 1661.417603 1655.679565 1648.843384 1642.949951 1638.20105 1635.721924 1624.157227 1614.911743 1610.899536 1608.454468 1598.474243 1595.390747 1594.987183 1590.35022 1592.560791 1600.730103 1600.115234 1598.258911 1600.744629 1596.874146 1588.920776 1584.243896 1591.687378 1596.26709 1593.874268 1593.724121 1590.489746 1582.603516 1569.694824 1560.020264 1561.380615 1555.888794 1550.57019 1540.487671 1541.545044 1541.934326 1541.137085 1548.449951 1559.766724 1570.962646 1584.259766 1594.843506 1598.778687 1592.74353 1582.923096 1575.654419 1564.143555 1561.251831 1568.749146 1586.812988 1617.714844 1644.955688 1652.177002 1653.193237 1647.146606 1637.042725 1623.654663 1606.903564 1585.669556 1571.2146 1566.51123 1585.046265 1598.290649 1609.21875 1614.419922 1618.42041 1624.913086 1624.775391 1629.09314 1631.994263 1635.747681 1645.974976 1656.290283 1654.056396 1648.983521 1642.791138 1637.555786 1635.069946 1632.640869 1646.669189 1652.605225 1656.213501 1656.844604 1649.910522 1635.448975 1622.853271 1617.567749 1612.468994 1606.359985 1598.133789 1585.443848 1577.075195 1572.797119 1576.829712 1575.914429 1574.803833 1574.365601 1582.234985 1593.24231 1605.46167 1607.741333 1597.766724 1590.735596 1581.33606 1580.454102 1570.691162 1555.484497 1542.439575 1533.053467 1533.272339 1526.004761 1515.551392 1507.292114 1493.99646 1479.089966 1474.004517 1473.415649 1476.251465 1482.488525 1483.579468 1482.599731 1494.188599 1502.694092 1508.465454 1509.815186 1517.682495 1519.12854 1521.856934 1526.731445 1528.044556 1537.40918 1532.547119 1550.556519 1560.400513 1565.227905 1564.920776 1560.536011 1556.347778 1557.515747 1561.351562 1563.104736 1564.008423 1562.853027 1560.183594 1556.208618 1553.514648 1550.314453 1546.373047 1543.221802 1539.656372 1534.196289 1527.031128 1520.481689 1515.128906 1509.690796 1502.748901 1497.434448 1491.880737 1488.913086 1482.654297 1476.83252 1468.227417 1458.929688 1449.977417 1442.265137 1436.471802 1432.113525 1426.236816 1417.247314 1406.186035 1399.224487 1396.690796 1385.999146 1386.026733 1383.721069 1372.915894 1368.452026 1371.962402 1375.36499 1377.167114 1383.382935 1391.389282 1401.321777 1413.46167 1422.936279 1431.022217 1441.636963 1453.143799 1453.424316 1451.595459 1462.206299 1473.983398 1477.685181 1471.142456 1458.658569 1443.026367 1426.015381 1417.893433 1407.832031 1395.882446 1384.768677 1387.911133 1396.352417 1412.541992 1424.618042 1438.068359 1453.567139 1470.300171 1490.980225 1503.264648 1517.039307 1526.658691 1525.781006 1519.59021 1514.977173 1508.35022 1502.062012 1499.876587 1501.669922 1503.561523 1503.861084 1503.097046 1500.53125 1495.502563 1488.098877 1482.209717 1475.284058 1465.852539 1455.935425 1447.507935 1450.493896 1457.764038 1463.571045 1469.409058 1475.538452 1476.762451 1475.377686 1470.752319 1466.340942 1464.599487 1458.024414 1450.542847 1449.227783 1450.489258 1451.081665 1451.213867 1450.684814 1449.218262 1446.382446 1442.352539 1440.837646 1441.780029 1441.221069 1438.560059 1436.602173 1435.47937 1434.905396 1435.289185 1437.039429 1439.484375 1441.064453 1442.671387 1444.720093 1446.352783 1446.52063 1443.155273 1439.373047 1436.476929 1437.746216 1437.863647 1437.066895 1436.291382 1437.208008 1439.549438 1441.016113 1440.77356 1439.470703 1438.397705 1438.40686 1441.487793 1446.397461 1451.775269 1454.513062 1458.038086 1461.991577 1464.882568 1465.638794 1466.158936 1465.502808 1457.919556 1447.04834 1438.051514 1439.599976 1443.09729 1447.427734 1452.129272 1459.29248 1467.339478 1473.882324 1483.227783 1493.332275 1501.954346 1508.971191 1512.879639 1516.15332 1517.798584 1518.125732 1516.848267 1511.468994 1503.760498 1509.676025 1517.55188 1525.30127 1531.683105 1536.472534 1539.071533 1539.842651 1538.789062 1532.733032 1524.775757 1525.782471 1524.498413 1512.459351 1497.622314 1483.556885 1466.968872 1454.607422 1452.699585 1456.89502 1460.93335 1465.436035 1470.284546 1475.017578 1481.939209 1487.631714 1492.11499 1495.544312 1497.229492 1496.984497 1494.581177 1488.698608 1482.554565 1477.727417 1470.827026 1462.63269 1454.098755 1444.886353 1436.510986 1429.113525 1424.341675 1424.519775 1428.022949 1423.741089 1412.703979 1405.168091 1404.306763 1399.336304 1393.128296 1384.24353 1375.58728 1368.529297 1356.993896 1364.968994 1375.559937 1385.581909 1393.796021 1400.491089 1407.893677 1414.496948 1416.990112 1418.412476 1420.554199 1421.924561 1421.127808 1418.085938 1414.449585 1405.849609 1408.747681 1422.935059 1434.498047 1437.64624 1428.323975 1417.896973 1405.632935 1394.506592 1400.717163 1406.136719 1409.540405 1421.633545 1431.151855 1438.11377 1443.783936 1450.055298 1452.305908 1443.68042 1439.008789 1431.803589 1423.947876 1414.085571 1401.428589 1393.949341 1399.852051 1410.69043 1418.159546 1422.873779 1426.203735 1427.612061 1426.87561 1424.758667 -1524.530273 1540.100586 1552.674438 1565.895142 1585.981689 1600.917969 1616.12207 1631.41394 1639.762573 1653.989624 1666.486938 1685.51001 1699.101196 1706.96875 1708.041992 1706.30127 1704.627319 1706.310791 1713.921753 1726.945557 1743.186279 1751.818115 1764.587891 1771.491211 1766.024536 1758.822998 1754.324097 1756.565186 1761.328491 1766.230835 1771.396851 1775.353638 1779.410278 1786.837769 1796.3573 1805.013428 1806.174561 1803.488892 1800.385376 1800.291992 1794.728271 1781.239258 1769.362427 1762.717773 1776.973633 1788.202271 1800.266724 1807.977295 1808.35376 1803.150879 1797.572144 1800.999268 1806.036987 1810.108643 1810.41626 1808.944336 1805.241333 1798.382324 1791.56897 1783.889038 1782.351685 1781.873169 1782.190674 1782.622314 1779.890503 1779.061279 1771.868042 1764.157715 1756.574951 1757.344604 1757.625366 1741.140747 1736.174194 1742.706421 1752.500244 1759.847534 1759.204712 1756.895996 1750.014526 1738.532349 1729.334717 1724.15686 1718.35791 1714.894653 1715.846191 1709.058472 1694.960693 1683.903809 1681.104736 1682.817017 1683.574463 1693.078491 1700.411987 1702.202759 1693.723511 1680.422485 1666.970947 1658.977905 1655.97583 1655.800293 1653.0448 1648.845093 1644.164551 1638.65686 1639.392212 1642.199707 1643.912231 1642.620605 1635.917969 1633.569824 1631.495972 1631.533325 1631.938843 1629.579956 1626.827515 1622.417847 1621.16626 1623.708496 1625.232544 1625.263062 1625.009644 1623.02356 1618.290527 1615.353882 1612.982422 1611.772705 1609.207397 1607.422241 1608.129883 1612.738647 1620.793701 1619.100708 1604.926392 1594.835205 1589.385864 1587.498413 1588.073853 1593.619995 1604.304443 1617.825439 1629.71521 1646.973999 1667.579224 1690.109741 1701.919434 1699.382202 1688.57666 1686.632812 1689.157593 1699.60791 1707.182617 1718.469482 1720.230591 1712.205444 1701.241821 1687.547974 1680.080444 1672.978394 1675.29187 1678.154541 1674.977051 1670.905396 1670.467773 1683.871094 1680.413452 1670.258301 1658.024902 1651.961182 1654.160034 1657.532104 1662.050659 1666.552246 1672.257324 1682.685547 1695.386963 1699.241699 1696.962402 1685.780884 1674.307983 1662.332642 1650.311157 1632.553955 1637.808228 1647.010376 1644.506226 1648.092773 1655.603149 1659.668213 1660.832397 1660.436646 1653.337769 1646.042358 1646.908569 1650.116211 1656.582764 1663.149536 1669.83252 1673.990356 1675.255493 1674.982544 1673.064941 1669.845215 1663.828857 1657.724976 1651.563599 1647.415283 1644.790527 1640.335083 1634.192505 1626.048584 1617.293457 1613.680298 1610.705566 1607.835815 1604.033325 1598.797852 1597.116211 1606.772461 1608.174316 1605.453247 1605.629395 1602.226318 1593.5 1588.220703 1598.761475 1605.442383 1605.550171 1600.703125 1593.499146 1580.795654 1570.46228 1572.628662 1572.81543 1565.489258 1557.743286 1550.625977 1538.980957 1538.780029 1539.03125 1545.022827 1553.502075 1560.553223 1569.459106 1575.712891 1576.719238 1575.464233 1571.248047 1563.348877 1548.581665 1562.227905 1572.335938 1597.296265 1627.50415 1641.266602 1646.136597 1649.991577 1641.685913 1626.928223 1609.015747 1591.812134 1576.193359 1562.553101 1566.479736 1584.949219 1598.762817 1603.238892 1606.638428 1611.526978 1614.774414 1618.200562 1623.377563 1631.296631 1641.917969 1649.002319 1651.0896 1649.209106 1646.230469 1640.520752 1637.056152 1635.535645 1639.927612 1653.580811 1661.106323 1667.754395 1661.893311 1652.609253 1641.127441 1628.792725 1620.732544 1614.120972 1608.488159 1597.873901 1584.070557 1585.040527 1583.498291 1587.319824 1584.4375 1583.910889 1583.567139 1589.633423 1603.655518 1613.78772 1612.056763 1607.018188 1599.451294 1597.526978 1593.101562 1582.082642 1561.983521 1547.481201 1541.227539 1538.665527 1531.184204 1525.50061 1515.09314 1496.727417 1485.606201 1475.953613 1469.652222 1470.48291 1472.957642 1473.90564 1473.346558 1482.301514 1488.244141 1495.016113 1495.81311 1504.08313 1502.885986 1507.475708 1508.453003 1525.548096 1526.151855 1518.128784 1542.502197 1554.369995 1558.489136 1555.623047 1547.145752 1544.46228 1540.176514 1546.508301 1545.526367 1553.587769 1554.149658 1551.577148 1550.158325 1547.504883 1540.857056 1536.698486 1534.903564 1533.398926 1530.432983 1526.033691 1516.826538 1509.858154 1502.127197 1496.014648 1487.859009 1483.801025 1481.824829 1480.399048 1475.891846 1462.142578 1451.429565 1443.162476 1435.472412 1428.396362 1414.742188 1413.122681 1410.383301 1396.741699 1392.350952 1384.612915 1374.013306 1374.272095 1373.292236 1371.54187 1373.674438 1376.058472 1377.688599 1383.694214 1391.578491 1401.294922 1412.027954 1423.551025 1434.465332 1443.05481 1456.078735 1466.383545 1470.910522 1470.748047 1472.755249 1481.370117 1482.516602 1473.14624 1458.78125 1443.334595 1426.78772 1419.064819 1410.854858 1399.579224 1392.753418 1387.460205 1395.349976 1413.306763 1424.788086 1439.025757 1453.824463 1472.105713 1494.328491 1515.873047 1539.693481 1538.725098 1534.306152 1528.361206 1522.305542 1517.368164 1512.927368 1511.466553 1514.109741 1516.412598 1516.688965 1515.577881 1512.012207 1505.298584 1496.457886 1487.484253 1478.703613 1468.286255 1457.810913 1449.296997 1454.181519 1463.44519 1470.320068 1476.902466 1481.964355 1484.167603 1482.69873 1479.319458 1475.681152 1469.671387 1462.291748 1456.292603 1456.451904 1457.456543 1458.205078 1458.295654 1457.226929 1455.227051 1452.288696 1449.270752 1448.266235 1446.977051 1443.943726 1439.690063 1438.948242 1440.251831 1439.560303 1440.616333 1440.228027 1439.366089 1441.825439 1444.211914 1447.034668 1449.696167 1452.116577 1450.730347 1444.502808 1438.790649 1440.446167 1440.689697 1439.330444 1437.407593 1438.679443 1441.175293 1442.463501 1442.616943 1441.825317 1439.70874 1438.579224 1438.960693 1443.984131 1448.704468 1452.126099 1456.710327 1462.136597 1465.220703 1466.151245 1466.607666 1464.271484 1455.438477 1444.267822 1440.104004 1443.19104 1447.034668 1451.739502 1459.167969 1466.99646 1475.849976 1485.945557 1495.036987 1503.960571 1513.467896 1518.725464 1522.753784 1527.480835 1529.975464 1529.236938 1527.046509 1520.86377 1511.122925 1517.58374 1527.460449 1535.38562 1541.426392 1544.751343 1546.104126 1545.386963 1542.31897 1536.557617 1535.403687 1532.747925 1523.804443 1512.906006 1497.346191 1482.485718 1466.30835 1456.790771 1457.802612 1461.525146 1466.322632 1471.969482 1477.40332 1485.672974 1492.934082 1498.897461 1502.28894 1504.883301 1505.69751 1503.859497 1501.359497 1493.032715 1486.049194 1480.220215 1472.920898 1464.825195 1453.917725 1444.325317 1435.965698 1428.638184 1423.721069 1420.880371 1422.353394 1413.402344 1402.16333 1394.312134 1395.072632 1395.301636 1392.596436 1383.70105 1373.602173 1365.948242 1358.724976 1364.711548 1380.369751 1391.975464 1398.415161 1405.925659 1414.073853 1418.631836 1422.48999 1425.935303 1428.65918 1430.499756 1429.873779 1428.0271 1423.074463 1414.887573 1413.591919 1426.96521 1440.378906 1441.308838 1431.356934 1422.159668 1409.842163 1398.75354 1411.346436 1420.763306 1420.831299 1424.36438 1431.742676 1438.542603 1443.910889 1448.301514 1449.026489 1444.527222 1439.113159 1429.981079 1420.012085 1407.17749 1398.859131 1399.724609 1413.999023 1421.053101 1428.208496 1432.908447 1435.623291 1436.874268 1436.745728 1435.744385 -1520.969482 1530.744629 1547.601562 1565.669922 1581.437012 1592.854126 1604.700439 1614.871216 1624.811768 1633.819336 1651.294556 1672.899292 1679.560913 1681.026611 1684.485596 1689.783569 1689.979492 1693.813477 1707.197021 1722.917969 1739.662354 1750.772583 1764.025879 1772.07959 1770.797607 1766.611084 1763.327393 1763.4021 1767.823975 1776.823975 1782.641602 1785.432129 1788.373657 1792.187134 1797.075684 1800.281616 1796.307617 1790.356445 1789.460693 1791.162964 1787.227783 1776.633545 1763.381714 1756.140381 1769.644897 1780.633179 1791.850708 1799.375854 1799.275391 1791.975464 1787.385742 1789.874512 1795.969238 1799.675293 1800.881592 1800.723511 1798.411377 1794.189697 1788.870117 1781.074341 1774.634033 1773.236816 1771.626099 1771.553711 1772.637939 1771.754517 1770.817627 1765.108154 1755.817139 1748.040405 1750.365723 1740.817627 1730.945068 1732.927979 1739.880371 1746.31543 1748.716919 1742.388794 1741.50354 1732.207642 1724.995605 1722.124023 1721.621948 1706.636597 1705.096191 1700.037842 1691.866455 1684.994263 1679.441406 1675.272705 1676.637573 1686.06189 1688.13855 1686.260742 1678.535767 1666.371582 1657.209229 1653.513184 1651.373047 1649.962158 1647.020386 1644.587891 1642.084229 1643.912964 1648.532104 1656.15686 1659.365723 1660.146362 1650.92041 1641.353638 1636.419922 1640.259399 1646.299683 1645.53479 1637.144531 1630.27356 1622.130005 1618.495361 1619.808716 1620.858887 1620.039429 1617.712524 1613.26062 1610.015869 1607.130981 1605.054565 1603.337036 1601.672485 1601.131226 1603.43457 1608.254761 1608.959595 1596.032593 1591.016113 1589.801392 1588.978271 1590.577026 1596.883423 1610.100464 1621.981323 1632.001953 1649.72522 1673.073486 1693.092529 1710.610474 1701.034302 1693.321411 1691.769531 1693.537231 1703.661499 1711.003906 1719.304321 1720.179443 1712.191895 1700.647217 1691.807983 1686.468994 1681.964111 1682.324219 1688.598022 1688.04126 1680.550171 1680.504395 1688.883423 1687.549072 1674.947021 1662.779053 1659.276123 1659.578491 1661.65686 1664.626709 1667.418945 1673.273804 1684.781494 1696.840332 1698.549316 1691.979492 1679.255127 1669.161377 1657.089722 1643.866943 1633.506714 1645.562256 1654.190308 1653.916504 1655.171753 1661.458008 1665.897461 1667.69165 1666.890747 1662.044312 1655.069946 1652.804199 1654.739868 1659.707764 1665.164062 1670.483032 1675.029419 1677.319946 1677.343872 1675.311523 1671.872925 1664.772705 1657.885132 1654.760864 1651.896606 1649.815308 1645.993774 1640.693237 1635.546509 1627.923218 1621.952637 1618.460449 1617.247192 1612.656616 1609.023926 1605.190674 1609.630615 1612.115112 1609.62854 1612.091187 1611.944946 1598.107422 1595.725098 1604.322144 1612.338135 1613.734985 1605.312866 1592.920044 1582.081177 1577.994263 1586.478027 1587.104004 1580.836914 1569.367432 1559.763428 1550.36731 1538.49353 1536.656494 1537.891235 1546.455688 1552.668579 1557.121582 1558.699585 1559.378906 1562.068115 1559.487671 1553.078735 1547.2323 1560.260254 1575.885254 1605.287842 1629.814331 1632.661743 1637.030518 1642.336182 1629.303467 1613.658081 1599.297119 1577.976929 1567.521484 1554.786133 1565.937134 1574.314697 1592.615112 1599.817627 1598.743042 1603.453735 1607.30188 1618.546875 1626.945068 1635.79834 1647.080688 1648.392822 1648.312134 1645.158447 1633.270508 1630.432251 1630.34375 1629.341187 1638.233887 1652.18811 1666.355225 1672.72937 1660.470581 1651.511353 1637.422241 1626.805542 1619.574341 1611.258057 1604.375854 1597.317139 1599.267822 1594.408325 1597.950684 1599.507324 1591.170044 1594.379883 1593.421387 1598.444702 1608.994629 1622.36499 1617.080444 1611.096069 1604.276367 1599.937012 1592.906982 1583.512451 1563.270508 1552.882202 1547.637329 1538.430908 1530.488159 1522.993774 1509.4021 1492.954346 1478.400391 1473.880737 1472.70874 1467.811035 1465.260132 1467.146973 1469.028931 1472.465454 1476.199097 1478.231445 1480.825562 1489.103638 1485.69104 1487.652222 1501.953735 1508.167969 1502.481323 1506.058228 1528.208496 1551.986084 1551.381836 1544.006714 1531.44519 1529.677612 1525.5625 1532.216675 1529.035034 1538.866089 1541.239746 1537.04187 1534.022095 1532.129639 1526.47522 1525.32959 1522.971436 1523.336182 1526.184082 1522.070679 1510.730835 1501.155151 1490.866577 1484.83252 1479.28418 1472.670288 1469.145264 1466.164551 1458.752319 1449.401001 1442.692261 1431.682983 1429.861816 1414.761108 1409.172974 1406.024902 1400.794556 1382.727783 1376.20166 1374.46167 1374.073364 1372.758423 1373.179565 1374.296143 1375.707275 1378.90271 1385.382446 1392.759399 1401.599487 1413.718628 1425.880371 1433.815674 1444.557983 1456.769043 1466.872314 1477.630127 1482.963257 1483.323486 1485.742432 1492.352783 1489.14917 1473.495361 1459.86084 1445.139038 1428.60144 1422.721069 1417.469482 1408.861206 1402.324219 1392.370361 1394.75293 1413.61499 1424.879761 1439.462158 1453.889526 1473.765381 1496.384888 1519.816406 1549.229736 1551.779541 1546.694336 1538.456421 1530.747681 1523.870605 1521.342407 1521.448242 1522.868286 1524.444092 1525.332397 1524.451172 1520.604858 1513.562988 1502.443604 1491.945435 1482.261353 1471.570557 1461.149414 1452.271484 1458.3302 1467.971924 1475.703491 1482.298218 1487.531738 1491.553467 1489.309692 1484.914185 1480.509399 1474.142334 1462.734741 1463.581421 1465.075928 1466.039062 1466.315063 1466.227661 1464.283447 1462.079956 1459.148682 1456.186279 1454.5896 1451.812378 1448.072754 1444.718872 1444.178101 1445.108765 1445.291138 1445.02002 1444.188232 1443.605469 1443.394287 1446.528809 1449.752075 1451.489136 1453.512695 1453.579224 1451.161377 1443.168823 1442.93103 1442.028442 1439.34436 1438.494751 1439.528442 1442.026001 1443.897095 1444.637329 1444.159912 1442.688232 1441.648315 1440.961548 1444.699585 1449.077026 1451.253662 1456.296387 1461.910034 1465.2677 1466.206543 1466.982788 1462.081421 1452.860596 1441.515503 1442.550781 1446.200562 1450.087524 1457.056519 1465.538208 1474.102661 1486.008179 1494.799683 1504.623535 1514.852173 1521.999512 1529.217407 1536.716064 1540.235474 1541.814941 1540.660156 1538.103394 1530.980347 1522.374878 1525.054077 1536.198975 1544.392212 1549.432007 1551.515259 1551.503418 1549.975342 1546.057495 1542.212402 1539.85083 1531.767944 1521.438599 1510.064819 1495.250122 1479.508301 1463.90625 1461.109985 1463.862793 1468.858276 1474.991333 1481.356079 1488.750366 1496.519287 1506.415527 1513.931519 1512.815674 1513.720459 1512.556152 1508.790161 1502.338013 1495.489258 1488.487549 1480.727661 1472.332397 1460.49292 1448.642212 1439.865356 1432.622437 1425.366089 1420.287598 1415.873901 1409.841919 1403.849854 1394.003906 1385.765015 1383.437256 1386.480225 1384.451294 1376.451904 1367.534546 1361.771606 1358.748779 1370.85022 1383.356323 1394.017944 1401.799072 1410.313232 1417.618774 1422.395874 1426.850586 1432.579102 1437.450928 1439.541504 1439.073975 1437.625732 1432.937988 1425.274414 1420.356445 1430.345947 1441.817261 1442.766846 1436.286743 1425.117798 1412.379517 1406.807617 1424.17334 1431.848511 1431.839233 1429.900879 1436.739014 1441.234497 1445.528931 1447.951904 1448.180176 1444.730469 1437.524414 1427.633545 1417.526611 1402.604248 1400.604858 1410.414795 1422.881836 1431.408081 1436.998779 1441.354004 1447.287231 1452.532959 1454.787354 1447.048462 -1531.502686 1522.963257 1540.727173 1554.915527 1572.33606 1580.685425 1588.014771 1596.959717 1607.614746 1623.44751 1637.300537 1650.919556 1652.836914 1656.845581 1657.760376 1670.827515 1682.2052 1690.947998 1702.989258 1716.387207 1732.071411 1749.720093 1764.351318 1773.432373 1777.849731 1775.248047 1770.945801 1770.970459 1778.198242 1783.800415 1787.995605 1792.456299 1795.342041 1796.376343 1797.311035 1795.770752 1786.512939 1779.126953 1779.92688 1782.854492 1782.301392 1771.369995 1757.386108 1750.98291 1761.088501 1772.973511 1781.271118 1789.019775 1788.051758 1782.162964 1776.863037 1782.209473 1786.660889 1790.522583 1792.809326 1794.871704 1791.297974 1788.845215 1785.10791 1780.449219 1769.45813 1765.017578 1763.21521 1763.09375 1764.93396 1766.765015 1770.423828 1768.419312 1758.087646 1746.602905 1743.582153 1736.078369 1729.101074 1726.88147 1729.318481 1732.519043 1734.964111 1728.587769 1728.601196 1723.405396 1717.813477 1716.872681 1719.453491 1722.171631 1707.969116 1695.260254 1692.874268 1682.378052 1681.036743 1677.027954 1669.669189 1673.444092 1673.152588 1671.072876 1666.329834 1657.4646 1657.647827 1657.462402 1659.441284 1658.767212 1655.888428 1656.315796 1661.550659 1668.488892 1672.837524 1673.141113 1671.137817 1665.980225 1660.013062 1645.327759 1643.739014 1651.203125 1659.995605 1660.219604 1653.92981 1643.806885 1634.615234 1626.185669 1618.880615 1615.01355 1613.546387 1612.438599 1609.637329 1609.221558 1610.913086 1612.174927 1610.729858 1608.11084 1602.380615 1598.690186 1596.22876 1597.601807 1594.650635 1591.614502 1591.394775 1590.711426 1593.060303 1599.745117 1612.718872 1622.322021 1632.630737 1649.976562 1670.296387 1690.106323 1706.152954 1700.446777 1697.138062 1695.83606 1698.076782 1708.61145 1716.809326 1722.112671 1721.427979 1712.32019 1703.437134 1696.399292 1693.9104 1687.926392 1688.331421 1696.651001 1698.296875 1692.25293 1688.324707 1695.103027 1697.453003 1679.549805 1669.000854 1672.13147 1668.005615 1668.581909 1669.94751 1668.900513 1674.171753 1687.335815 1697.943237 1697.432129 1687.48999 1674.718384 1667.503296 1660.93689 1645.163452 1642.255127 1655.004639 1661.879883 1659.937256 1657.842773 1667.768311 1673.286621 1674.195557 1673.739502 1670.166138 1660.249512 1657.684814 1659.210693 1662.771973 1667.22168 1671.542236 1676.636108 1679.940063 1680.80603 1679.048462 1673.748169 1667.02771 1659.994019 1657.694702 1656.494263 1653.946899 1650.343384 1646.174194 1641.159668 1636.074951 1628.373413 1624.528564 1626.48584 1624.080078 1615.388428 1608.255737 1611.75415 1618.197021 1619.471313 1620.021851 1617.827515 1603.720337 1605.803223 1613.004395 1618.182129 1614.761353 1605.005981 1593.875732 1585.520386 1587.480347 1589.233032 1589.261841 1588.863037 1580.445312 1571.221436 1560.801392 1549.1698 1537.260376 1534.23999 1534.750488 1541.838623 1547.88269 1547.339355 1546.700684 1551.54248 1551.787598 1545.633423 1548.499023 1558.291992 1576.967896 1602.054199 1614.78064 1610.922485 1631.561768 1633.892456 1620.434326 1603.389771 1584.641602 1569.355591 1555.525879 1551.499023 1558.569824 1579.530029 1597.297119 1593.424561 1589.442871 1594.17395 1605.646484 1618.78772 1628.157227 1636.15918 1639.786621 1638.6073 1637.223755 1636.179321 1625.854614 1618.018188 1616.216064 1623.277954 1634.550903 1647.94397 1662.410278 1672.263916 1662.221191 1655.216553 1644.541626 1633.519653 1622.362427 1614.020264 1607.998413 1610.08667 1611.79187 1606.348511 1609.61731 1604.943115 1600.145996 1600.243408 1601.1073 1604.087524 1612.650635 1621.151123 1616.286987 1610.908203 1600.204468 1592.925049 1585.103149 1572.413574 1561.99292 1553.251953 1546.058105 1534.803223 1524.564087 1511.805542 1496.958496 1485.765259 1486.325439 1484.358154 1488.385254 1487.207275 1475.278931 1462.748413 1463.405518 1464.85498 1465.748535 1463.714966 1467.759766 1472.924438 1473.131348 1487.146484 1492.276367 1490.626099 1489.466553 1506.375854 1530.799683 1544.102539 1539.230713 1529.428345 1515.358276 1513.274536 1518.842041 1522.424805 1517.717041 1522.48645 1524.21521 1521.620117 1518.718262 1518.927979 1514.081787 1505.786133 1505.897705 1514.976318 1516.450806 1511.937134 1503.434204 1493.533447 1481.253052 1472.616089 1466.058838 1461.373901 1453.704224 1451.50769 1443.743896 1436.712891 1427.119141 1417.693237 1410.137573 1404.523804 1403.827515 1394.835571 1381.610107 1373.96936 1373.916016 1373.834961 1374.068359 1374.806885 1376.028076 1377.88562 1381.276978 1387.179565 1394.495117 1402.194336 1413.270996 1427.645874 1439.788696 1447.311646 1454.981934 1469.492798 1479.173828 1487.707153 1493.800171 1496.595337 1499.32666 1502.202271 1494.911255 1478.198242 1463.557251 1449.331543 1434.672607 1425.354492 1420.71936 1415.529297 1409.027344 1402.540649 1394.484863 1412.623779 1424.458984 1438.957031 1453.874023 1473.597656 1494.837891 1520.648438 1545.52002 1556.078857 1557.185669 1550.904541 1542.272583 1535.608276 1532.892212 1535.353516 1539.226807 1541.460571 1540.413452 1537.263184 1529.696533 1519.7323 1508.239014 1496.304321 1485.944824 1475.018921 1467.102539 1455.621338 1462.014404 1472.487915 1480.873657 1488.067017 1495.048706 1499.272217 1496.795654 1490.049927 1483.190186 1476.128418 1466.460815 1469.986206 1472.223267 1473.099731 1474.369995 1474.090942 1473.166748 1470.593384 1466.768188 1463.706665 1460.817871 1456.671265 1451.27124 1449.165039 1449.59436 1451.357544 1451.27832 1449.778564 1448.040527 1448.467407 1446.748657 1449.635254 1452.937866 1454.757568 1456.876465 1457.281616 1454.543823 1448.560425 1445.980591 1443.0448 1439.339844 1440.456055 1442.04541 1444.278198 1446.157837 1447.329224 1447.856567 1447.301514 1446.638184 1446.637695 1447.698608 1449.475098 1453.360107 1457.085815 1461.833374 1464.849121 1466.284424 1466.335571 1459.512573 1448.836548 1441.471069 1445.348022 1449.629395 1454.0354 1462.481445 1471.021484 1481.588135 1493.07666 1502.42041 1514.412842 1522.287842 1532.831055 1541.455444 1547.466797 1551.297974 1552.066772 1550.959351 1548.459106 1542.289062 1537.187378 1538.553345 1546.030029 1552.714478 1555.600098 1556.488037 1555.485229 1553.067261 1550.039795 1545.682373 1537.618164 1526.44873 1513.910522 1503.499146 1489.231812 1477.221558 1466.983643 1469.749512 1473.672852 1479.915527 1489.993774 1490.874268 1497.651001 1507.209106 1513.616699 1519.444214 1520.861084 1519.935547 1516.454834 1510.743286 1504.678101 1498.409424 1489.315308 1479.671875 1469.883057 1460.065186 1448.549561 1437.680786 1430.402954 1418.98584 1411.534912 1406.345093 1395.821777 1392.366455 1386.182983 1378.197632 1373.849121 1374.988159 1372.754272 1366.815674 1361.196167 1361.828369 1363.58313 1373.888794 1385.223999 1394.110107 1403.021851 1411.457153 1419.141235 1425.08667 1432.087402 1439.357544 1444.687744 1447.873291 1449.189453 1446.793945 1442.121704 1434.305664 1425.778809 1432.508911 1443.008423 1445.735596 1440.59729 1429.487671 1413.02124 1416.69812 1434.364258 1440.947998 1441.042603 1438.703613 1441.603149 1445.474121 1448.705444 1450.922363 1451.723511 1447.268799 1439.108887 1429.130005 1417.068604 1403.463745 1415.915894 1423.425293 1427.329468 1438.764404 1443.901733 1449.923462 1458.704834 1466.761108 1463.940186 1450.438354 -1553.760376 1529.368774 1533.03772 1552.330322 1565.085449 1576.837036 1587.03418 1596.048828 1602.383545 1614.866089 1628.231445 1640.412964 1657.718994 1663.535522 1676.802856 1687.934448 1694.898071 1700.204834 1707.200073 1723.543457 1741.793701 1752.551514 1766.476196 1778.848511 1783.295776 1783.789795 1782.721069 1782.470581 1785.076782 1787.2229 1791.083862 1794.519287 1796.144287 1796.719116 1797.034546 1790.732666 1778.154053 1772.41272 1770.261353 1773.005127 1773.2677 1765.744507 1754.60498 1742.510498 1748.789307 1762.715942 1773.075562 1778.444336 1776.9104 1770.270996 1765.06604 1771.885498 1776.78418 1783.16626 1786.663452 1787.012207 1784.884888 1782.276245 1781.876221 1776.661133 1768.259033 1758.55835 1756.145996 1754.870728 1758.105225 1762.929932 1769.947632 1771.041504 1766.263794 1755.804565 1748.327026 1741.238525 1734.081177 1724.759277 1718.573242 1719.988525 1720.569702 1717.953003 1715.571533 1713.875366 1711.330444 1707.424072 1709.046997 1713.637939 1715.412476 1711.000122 1707.537354 1701.016235 1693.724487 1686.469727 1675.283569 1670.071411 1667.264648 1664.167847 1661.855103 1665.180664 1664.710571 1668.432983 1672.359497 1672.236084 1671.432617 1675.605591 1680.106567 1684.744873 1685.862793 1684.02063 1676.795532 1668.23999 1659.497192 1645.182007 1647.079224 1659.529175 1670.515747 1675.668335 1670.95752 1660.256348 1649.595947 1642.577148 1633.873657 1623.046509 1619.341187 1618.225098 1619.463013 1624.34082 1628.670776 1627.146729 1622.277344 1614.595581 1608.652222 1603.874756 1600.530151 1599.111816 1595.542969 1593.596802 1596.535156 1592.91748 1594.752563 1600.552002 1611.965576 1620.766479 1630.759155 1649.333008 1665.949341 1686.863403 1698.60791 1696.005371 1695.870605 1699.47937 1704.071045 1717.529175 1728.319092 1731.387451 1722.275513 1713.082886 1706.152954 1702.251831 1699.859985 1696.493774 1697.408691 1703.068604 1704.942261 1699.181519 1694.558594 1700.603882 1704.003662 1689.485107 1679.894165 1679.745605 1677.522217 1678.85022 1678.825317 1675.109497 1677.571655 1688.543335 1697.545166 1697.452026 1689.113281 1680.088379 1672.971924 1662.596924 1646.274414 1650.933838 1663.166748 1671.068848 1667.319214 1665.97229 1674.657959 1681.444702 1682.493408 1679.416016 1675.372559 1670.483032 1665.776001 1664.811035 1666.522095 1669.124512 1673.678833 1678.999634 1682.39917 1684.180786 1683.509399 1677.464111 1669.605591 1666.340576 1663.467041 1661.498779 1658.511353 1655.006592 1650.686523 1645.211182 1638.707153 1632.318726 1633.846558 1634.070312 1628.882935 1620.016724 1612.630737 1616.535645 1624.779541 1627.588745 1628.056763 1623.301147 1617.055908 1624.091064 1626.017212 1623.155884 1617.079346 1611.445435 1598.344849 1591.698364 1588.731445 1588.277588 1587.333374 1586.233154 1579.339844 1576.012695 1571.416992 1559.723511 1546.144043 1534.807861 1531.925415 1533.227173 1534.931519 1536.014526 1540.194702 1541.837769 1540.279541 1535.474243 1547.640991 1556.491699 1572.426514 1587.228638 1593.242432 1601.608643 1622.067139 1628.420532 1613.883911 1594.217041 1572.092041 1562.800659 1545.29126 1549.012817 1558.818604 1577.954346 1587.478882 1580.74585 1577.963013 1587.743774 1601.791626 1611.4375 1622.61084 1629.929932 1630.623779 1628.3302 1626.869873 1625.26062 1616.11792 1607.417236 1610.369385 1621.488037 1631.818481 1645.164795 1658.743652 1672.951782 1666.315308 1658.147339 1646.422485 1634.886719 1624.071655 1614.030762 1609.366699 1611.195068 1611.818604 1612.039795 1611.299072 1606.764526 1601.877319 1601.560059 1604.125244 1609.124268 1613.422485 1613.349854 1608.81897 1603.8125 1594.727295 1585.52356 1573.907593 1564.411743 1555.613037 1547.412842 1539.027222 1524.886597 1511.305054 1503.627319 1505.549438 1504.3927 1502.127319 1506.325317 1509.902954 1507.080322 1489.228394 1477.197754 1480.898804 1478.323975 1468.416504 1459.437134 1458.109619 1458.873901 1465.25354 1475.858032 1474.929077 1482.671509 1499.551514 1514.741699 1524.197998 1528.542358 1526.592773 1521.827759 1499.813965 1499.962036 1511.473145 1512.414062 1507.125122 1508.723145 1510.812012 1508.646729 1505.185913 1505.599976 1501.244629 1492.840088 1496.591919 1504.499878 1508.109863 1501.838989 1493.399414 1484.59729 1472.715332 1459.754028 1453.702026 1450.493286 1442.973022 1439.445679 1433.90332 1426.685303 1414.704956 1407.311523 1399.688232 1394.106934 1386.619263 1375.590698 1374.043457 1373.833618 1374.336182 1375.824463 1377.479736 1379.241333 1381.409912 1384.056152 1389.183228 1395.182007 1403.307495 1414.483276 1423.112305 1437.210571 1450.852417 1464.561279 1473.552124 1482.304199 1489.909912 1497.538452 1503.730225 1506.702515 1507.938843 1506.294678 1498.949341 1486.936157 1467.92749 1454.40271 1440.683228 1428.71814 1423.088257 1418.281006 1413.268311 1407.312012 1395.938843 1408.900513 1424.346313 1438.994873 1453.203613 1472.22998 1493.07666 1517.372559 1536.618408 1555.827515 1564.423584 1562.040649 1556.303101 1551.297363 1548.484375 1550.965454 1557.743164 1560.898071 1556.261597 1547.14209 1537.731323 1524.376953 1513.766479 1500.206055 1489.158203 1479.596191 1470.386841 1460.237061 1463.944458 1476.373291 1484.834106 1494.0177 1502.383911 1505.734131 1503.091431 1495.732666 1486.599976 1477.642822 1474.407837 1477.811768 1480.775879 1483.577515 1485.545166 1484.84436 1483.889038 1480.905884 1476.984131 1472.712036 1467.948242 1463.369995 1456.174805 1453.571167 1455.289917 1457.088135 1457.288696 1454.865601 1451.281006 1452.775269 1451.307739 1451.036743 1454.974487 1457.968506 1461.839722 1463.046265 1457.880493 1451.464844 1448.038086 1446.283813 1445.085083 1444.860107 1445.797852 1447.140503 1448.69104 1449.903564 1450.798706 1451.435425 1451.448608 1450.620605 1450.432495 1450.05249 1453.645752 1457.614624 1461.340576 1464.567383 1466.262573 1466.23645 1455.360718 1444.700562 1444.185669 1449.168091 1454.734863 1461.42749 1468.423462 1474.699219 1485.592651 1498.042725 1510.282959 1520.585205 1531.524292 1542.948853 1551.261597 1556.925049 1560.218994 1561.567505 1560.675781 1558.61377 1555.206543 1552.26709 1552.972534 1555.55957 1560.330322 1562.042969 1561.239258 1559.351685 1555.780518 1551.888306 1545.129272 1534.795044 1523.871704 1511.695435 1502.172974 1484.691528 1474.10498 1476.071777 1479.448364 1483.831665 1488.862183 1494.283203 1499.163574 1509.929321 1517.021484 1521.805786 1525.595093 1526.702637 1524.639893 1518.557739 1512.288086 1506.064819 1498.783569 1487.942627 1476.373535 1463.778442 1454.486206 1442.733521 1432.970947 1425.27356 1414.46167 1398.844849 1393.954712 1387.22522 1381.473755 1377.201538 1371.421875 1366.082764 1364.691772 1363.435913 1362.497925 1369.637817 1370.363403 1366.537842 1372.525757 1382.154541 1390.240601 1398.143066 1405.369507 1414.6427 1425.894165 1435.901367 1444.438721 1451.318726 1455.27417 1457.052734 1455.090698 1449.088623 1440.610474 1433.210571 1437.450073 1445.562622 1451.393555 1445.69104 1435.290771 1417.725342 1426.685547 1440.58606 1445.538696 1446.903809 1446.444214 1446.666748 1450.435547 1452.358521 1453.279419 1453.624146 1450.996216 1442.362793 1430.436401 1416.266235 1411.151123 1423.711792 1432.01355 1435.034912 1439.981201 1446.823486 1454.174805 1462.755371 1465.359253 1457.712158 1445.235718 -1563.505859 1539.562378 1535.950073 1558.366943 1572.37793 1583.897705 1592.350586 1600.325562 1610.661743 1628.210327 1648.796021 1669.216187 1674.571899 1683.675415 1689.554077 1699.170166 1704.591675 1713.301025 1719.304443 1732.278687 1748.545288 1759.273926 1772.847534 1783.228516 1788.233765 1791.523438 1792.252319 1790.940796 1785.716064 1785.748657 1790.324097 1793.950439 1795.718872 1796.251099 1793.641602 1781.497192 1770.450928 1761.62085 1760.229614 1762.859985 1763.452515 1758.990112 1750.454468 1736.987305 1738.839722 1752.602051 1764.667603 1768.100952 1764.082764 1758.327148 1754.062622 1760.498657 1770.151733 1776.397461 1778.814209 1779.40918 1778.665283 1775.683716 1775.847534 1773.030273 1767.3927 1757.375977 1750.129883 1748.502075 1751.526611 1758.271973 1768.231079 1770.329834 1770.62146 1765.160889 1757.437134 1752.325073 1747.015991 1737.22168 1726.083984 1717.848511 1713.132202 1710.258545 1706.120605 1705.708252 1702.513794 1697.631348 1696.769165 1698.91394 1705.058472 1708.797119 1708.482178 1702.302368 1692.861572 1681.399292 1673.827759 1669.386108 1665.398071 1669.987183 1673.906738 1674.343384 1669.245972 1678.004883 1683.712036 1684.386719 1685.153809 1688.229492 1693.463135 1697.99353 1697.933594 1689.484619 1675.841675 1665.342041 1655.818115 1649.81189 1654.174438 1664.343262 1676.567993 1687.216675 1684.529053 1675.990967 1668.708984 1664.452637 1657.897095 1647.421265 1639.019043 1634.612305 1641.974365 1646.345581 1639.987915 1633.68457 1624.129883 1618.99585 1612.875 1609.453735 1604.255005 1600.098389 1597.268066 1596.264648 1600.079468 1599.65979 1595.366577 1600.552246 1609.467285 1617.387085 1627.028442 1644.792603 1662.185791 1680.897095 1691.126953 1689.659424 1693.984863 1700.08606 1706.882935 1732.239258 1731.921753 1728.092529 1720.814331 1716.272217 1710.532349 1706.758911 1704.128906 1704.497803 1705.500366 1709.552979 1711.099854 1707.228516 1703.867554 1707.197388 1709.460205 1700.447266 1696.72522 1695.464966 1690.967285 1697.638794 1695.298096 1682.692993 1682.944946 1694.158203 1697.883789 1696.590088 1686.844482 1676.684326 1668.678223 1657.157837 1655.826904 1663.117676 1673.286011 1680.825684 1675.874146 1669.458008 1680.448242 1687.330444 1688.250244 1684.565308 1679.422974 1675.388916 1672.160645 1670.889404 1670.80542 1672.730347 1678.046021 1682.168457 1686.203247 1687.760742 1687.31604 1683.291504 1676.469849 1672.396973 1669.58313 1666.799805 1663.209961 1659.600952 1654.886475 1649.172363 1642.977539 1637.567383 1640.948486 1639.331055 1634.293091 1619.868896 1618.351196 1621.648804 1631.784302 1636.301636 1635.887695 1630.78418 1630.622192 1635.412231 1632.387085 1622.784668 1615.459351 1609.397949 1597.482056 1590.362549 1585.28125 1585.671143 1579.033813 1574.774292 1570.292236 1571.430786 1576.427979 1567.096191 1556.447388 1546.648315 1536.067749 1529.137207 1529.506348 1530.515625 1533.130981 1533.350098 1528.524292 1532.969116 1542.052002 1548.640991 1557.457886 1567.518677 1577.627075 1593.123413 1611.482666 1625.153564 1609.797241 1592.202148 1569.530518 1557.687744 1540.549927 1543.928833 1550.428833 1565.767822 1570.367188 1566.391602 1574.427979 1584.593628 1594.578247 1605.847412 1622.000977 1623.714111 1623.150024 1618.728271 1615.434937 1611.117188 1604.066895 1595.599365 1606.674805 1617.914307 1628.893555 1642.351318 1657.012207 1669.653687 1659.406006 1649.705322 1637.908325 1627.552979 1619.571289 1612.084229 1607.558838 1609.300903 1610.221436 1607.518799 1604.858032 1601.491333 1597.514038 1600.721558 1604.228271 1607.529785 1610.467407 1609.995239 1604.245117 1598.464478 1588.440308 1576.967651 1566.666992 1558.00293 1549.473511 1540.837524 1531.146606 1522.173462 1521.632935 1522.55481 1521.188599 1518.223755 1518.861206 1523.016479 1524.845093 1518.135376 1498.536865 1499.746704 1497.982666 1493.530396 1488.736938 1476.929688 1461.322998 1451.175781 1451.749512 1461.421997 1466.014282 1486.987305 1497.446045 1505.395996 1508.793213 1512.82373 1509.029907 1508.342651 1494.01001 1493.935181 1499.362549 1500.250244 1496.342407 1497.723877 1498.601074 1497.24939 1490.074829 1491.72876 1490.363525 1484.201294 1487.662231 1502.437134 1502.135376 1499.762085 1480.804565 1468.661987 1459.931641 1451.449829 1445.226196 1442.02063 1434.959839 1425.649658 1422.947998 1413.418091 1406.236938 1399.06311 1391.437378 1385.186279 1376.161743 1375.364624 1376.045654 1376.398071 1379.142578 1382.214722 1385.335083 1388.8927 1389.985229 1388.953857 1396.335815 1402.523926 1413.234741 1427.918091 1435.934937 1445.803955 1463.603271 1477.159424 1485.447388 1493.988159 1501.654907 1506.724609 1511.368286 1515.283081 1514.995239 1510.956299 1503.498535 1492.575195 1475.224609 1461.757568 1446.660278 1433.956665 1425.404053 1421.538452 1417.375 1411.306396 1399.000854 1407.965454 1424.847046 1439.562012 1453.454712 1469.932739 1491.070312 1511.416504 1535.011353 1557.050049 1568.607788 1574.246338 1569.780518 1565.644287 1563.797241 1565.498047 1569.675415 1571.324707 1563.254028 1553.250854 1541.741455 1527.27063 1517.145874 1503.090942 1491.447388 1481.974609 1473.150269 1464.224365 1465.625732 1479.272461 1489.015747 1499.922729 1509.275513 1512.511353 1507.253418 1500.236328 1489.693604 1482.296143 1481.176147 1484.636719 1489.674316 1493.585327 1495.666626 1496.300049 1494.927979 1491.964478 1488.698364 1482.251465 1474.960571 1467.940674 1461.242432 1461.951538 1462.515625 1464.092163 1464.636108 1463.012451 1458.762085 1455.107544 1453.180542 1452.993164 1457.06311 1460.020386 1463.540161 1464.578491 1460.269531 1451.914185 1449.555908 1450.174438 1449.840698 1449.546753 1449.421997 1449.911621 1451.492065 1453.09314 1454.20813 1454.922852 1455.084839 1454.400024 1452.975708 1450.669189 1453.079102 1457.848145 1461.56604 1464.696167 1465.959595 1463.905518 1451.008667 1443.395508 1446.989258 1452.829956 1460.019287 1467.626831 1475.325439 1484.060303 1492.719482 1502.915405 1514.026245 1527.14502 1539.834839 1550.97998 1559.876465 1564.82666 1567.927612 1569.051758 1568.737305 1567.193359 1564.608643 1563.372192 1563.325195 1565.380737 1568.760498 1569.796509 1566.197144 1561.98645 1556.842041 1551.480225 1542.567017 1531.450195 1520.013428 1508.416992 1497.011597 1484.416382 1480.500732 1484.632812 1488.774048 1493.043701 1497.553223 1502.292847 1511.923218 1518.887451 1523.903809 1527.508423 1529.160889 1528.737915 1525.815063 1520.208496 1513.940186 1505.426758 1496.42334 1484.132568 1470.375366 1458.630371 1448.320923 1436.070435 1426.824341 1414.630249 1403.008667 1392.187622 1384.942383 1382.01709 1376.573853 1367.619751 1365.076416 1363.351562 1364.133179 1368.942627 1376.760132 1380.936035 1379.305908 1371.992676 1370.532593 1379.358276 1386.5177 1391.900757 1405.285889 1417.979004 1428.597534 1439.230347 1448.515991 1455.659058 1461.170044 1464.687012 1464.13855 1454.43103 1445.717285 1438.598022 1440.7146 1449.124023 1453.472412 1450.692871 1441.200439 1425.027832 1431.157959 1444.084961 1450.942871 1452.886841 1452.787109 1450.471191 1453.876343 1455.116333 1455.32251 1454.56897 1452.056152 1441.947998 1429.541626 1416.866211 1418.450684 1429.242798 1438.472046 1442.600586 1443.858887 1448.515137 1453.55542 1458.491699 1456.742432 1448.716919 1437.495728 -1567.593262 1545.336304 1536.836304 1560.7854 1575.681519 1587.818237 1597.593018 1609.746216 1623.916992 1633.841187 1656.337646 1679.600464 1688.906982 1699.109497 1709.233887 1713.886475 1724.431641 1731.293701 1739.663818 1745.298096 1756.161621 1767.045166 1780.095459 1788.004028 1793.122314 1795.036621 1794.713013 1789.799316 1780.916626 1779.908569 1785.230591 1790.518677 1793.261353 1791.377075 1783.329712 1772.208252 1761.241943 1751.71228 1749.891968 1751.584473 1755.103271 1751.939209 1744.263916 1731.511963 1731.415771 1744.856567 1755.644165 1757.35083 1753.133301 1746.646606 1743.937988 1756.311035 1767.295044 1767.476562 1767.751953 1772.01062 1772.976562 1767.566528 1768.008179 1770.389404 1769.328003 1759.563354 1747.161377 1742.615356 1746.409302 1756.957031 1765.384521 1767.559814 1767.234253 1768.248901 1762.626709 1759.451294 1756.144531 1749.355835 1740.571533 1731.119019 1723.473267 1717.385132 1713.26123 1708.389282 1703.739624 1699.789673 1694.15686 1690.076172 1690.055664 1688.689697 1689.341309 1686.353516 1680.329346 1675.369385 1669.810913 1671.731201 1677.700928 1683.302124 1683.17395 1680.090088 1677.490479 1686.779175 1696.472168 1700.62854 1701.137573 1704.508301 1711.358887 1708.570312 1699.882202 1687.517822 1672.974731 1665.286621 1660.213013 1656.295532 1659.976562 1669.556763 1679.731567 1691.523804 1698.037354 1691.385376 1686.293091 1683.327637 1678.040283 1670.431763 1660.016724 1652.941772 1651.899902 1646.251587 1640.03894 1632.750366 1629.897827 1625.602661 1619.66272 1611.691772 1605.394287 1599.894287 1596.583252 1601.00061 1606.314453 1608.157349 1595.984009 1600.796387 1606.942993 1614.014526 1623.300293 1636.173096 1655.417236 1672.129272 1680.007324 1681.322998 1693.170776 1703.415405 1715.001587 1731.065918 1720.873047 1719.395386 1717.622192 1720.460571 1720.208252 1714.589478 1711.234253 1713.155396 1716.98999 1717.799683 1716.996704 1712.842285 1709.296753 1710.599121 1712.695435 1711.399292 1707.971436 1704.255493 1705.277588 1710.985107 1707.290405 1693.794312 1691.023438 1696.93103 1697.757202 1692.426025 1682.599609 1675.753418 1671.271851 1669.290771 1665.994019 1669.716675 1680.180908 1688.037109 1685.78833 1676.063477 1682.943237 1692.905884 1695.94873 1689.557495 1682.69812 1679.686157 1677.013306 1676.140137 1676.42688 1678.095947 1682.487671 1687.927002 1692.3479 1693.642456 1692.108765 1687.973022 1683.09729 1678.311157 1675.132812 1671.886841 1667.792603 1663.785889 1659.944946 1653.49231 1645.335571 1647.424438 1648.041504 1644.031494 1632.971802 1622.585815 1623.048462 1625.344727 1633.60144 1630.81604 1630.845947 1633.974121 1636.903442 1636.338257 1628.925903 1618.316528 1609.034058 1598.375366 1592.63147 1585.775513 1582.000488 1576.327515 1572.50647 1565.535767 1561.666504 1560.693481 1566.763062 1564.147339 1559.66687 1552.509644 1546.171021 1539.257812 1528.357422 1524.800781 1525.966187 1525.906128 1524.514038 1525.392212 1533.812256 1538.58728 1543.365723 1552.20166 1571.880249 1583.614136 1593.660645 1610.708252 1609.818604 1594.529541 1569.531738 1554.213867 1536.415894 1539.640625 1545.886841 1554.507446 1556.641479 1559.681396 1578.413452 1588.65979 1594.319946 1602.202759 1610.526855 1609.837402 1611.040527 1606.955078 1600.836914 1596.136841 1586.00769 1594.461792 1606.200317 1615.493286 1625.203613 1639.140137 1653.789673 1662.37793 1656.401978 1644.808472 1629.796143 1619.15625 1612.720337 1607.50354 1604.173096 1603.601685 1600.978149 1598.351807 1594.581055 1593.29834 1595.847046 1600.042725 1602.52063 1604.264282 1605.167725 1602.65625 1598.737305 1591.328003 1580.738892 1569.625488 1560.740967 1550.66687 1543.427612 1536.768188 1535.608154 1538.370972 1539.694458 1537.391846 1530.690186 1527.23877 1535.062988 1537.570923 1535.187866 1525.983032 1515.480713 1517.978638 1515.267944 1511.08374 1508.306396 1496.387817 1477.063232 1458.230225 1449.22522 1449.444702 1468.582031 1480.800049 1486.619385 1492.522095 1496.312134 1495.139771 1493.855347 1494.030762 1485.618164 1485.423462 1489.533447 1490.03186 1486.054321 1488.27832 1486.979736 1488.74353 1481.538818 1474.838013 1474.856079 1471.60437 1485.252197 1493.850708 1493.715942 1494.47644 1487.443481 1466.474365 1451.341187 1442.797607 1437.900024 1433.628418 1427.381104 1420.115356 1413.31189 1405.196655 1398.218018 1390.690674 1386.125732 1380.323853 1376.799072 1376.89624 1379.7146 1381.140869 1386.255493 1390.953857 1394.266724 1397.119751 1397.765015 1399.201538 1407.013672 1415.780029 1422.045532 1435.389771 1449.935913 1462.11731 1475.23938 1492.24292 1496.770996 1503.991333 1511.525024 1517.445312 1521.865723 1525.40271 1520.970581 1515.95166 1508.413696 1497.123779 1482.743774 1468.592529 1453.922485 1440.080444 1429.39856 1424.242798 1420.128784 1415.573608 1400.355103 1409.725342 1426.341797 1440.089722 1453.643799 1468.423828 1488.449097 1510.616943 1536.094482 1559.325439 1571.026978 1578.875488 1581.424927 1578.911865 1576.610596 1579.058105 1584.136963 1580.064453 1566.623901 1555.922607 1545.194336 1529.087158 1518.425415 1506.381348 1492.814087 1482.957764 1474.171631 1467.05896 1471.515015 1481.533691 1492.199951 1504.334839 1513.919556 1514.591919 1508.780884 1501.689697 1491.319824 1485.755249 1486.069702 1491.64856 1497.194092 1501.977905 1505.295166 1506.289673 1504.798584 1502.067139 1497.605835 1491.501831 1483.088379 1474.196289 1465.519165 1470.61084 1473.47937 1472.317139 1469.010376 1465.937744 1461.662842 1457.355713 1454.627563 1457.227783 1460.665039 1462.146362 1465.033447 1465.397217 1462.128174 1455.48938 1453.385864 1454.022339 1454.318481 1453.930298 1453.053711 1453.413696 1455.601196 1457.014648 1458.181641 1458.724854 1458.961914 1458.600708 1456.897339 1454.457642 1455.4552 1458.688965 1461.884644 1464.581543 1466.21582 1458.082764 1447.730591 1444.791016 1449.765259 1456.739136 1465.024902 1472.797729 1481.819214 1491.631958 1501.31543 1512.343628 1522.939453 1532.880615 1544.720337 1556.343384 1565.337402 1571.351074 1575.504517 1577.452759 1577.401611 1575.542236 1573.474731 1573.127197 1573.051636 1575.515869 1577.270752 1575.888306 1569.54126 1562.214355 1555.28418 1548.004761 1536.401855 1525.35022 1514.969238 1502.581421 1492.75061 1484.585083 1488.450317 1493.196533 1497.789062 1502.404053 1506.809448 1512.068359 1520.151001 1526.810303 1532.510498 1534.14856 1532.031372 1529.991821 1527.309326 1521.588989 1512.830322 1502.314209 1491.199829 1476.59314 1463.864136 1451.985962 1439.683838 1428.968628 1418.991455 1405.41272 1390.286987 1386.724365 1378.443726 1375.641479 1365.670898 1364.786011 1366.885132 1372.077515 1377.287842 1383.986816 1388.888916 1390.870117 1384.162354 1373.070312 1377.192383 1388.772583 1393.390747 1393.243896 1404.288696 1418.926636 1430.39978 1442.852661 1452.101562 1460.158325 1466.072266 1468.563965 1467.270142 1460.251709 1453.041626 1446.057739 1447.398804 1453.056396 1455.399292 1453.155273 1445.387451 1431.251343 1434.111572 1447.721802 1454.737427 1457.5802 1457.470703 1456.130615 1457.929443 1458.291138 1456.860718 1454.734985 1450.386475 1439.711548 1427.648438 1420.039795 1427.24707 1437.355591 1443.805664 1450.900757 1450.880615 1449.965576 1452.690308 1453.610352 1448.317261 1438.307251 1430.41626 -1568.973022 1545.591187 1536.706787 1560.943848 1577.909668 1589.326416 1600.379517 1615.503906 1629.300171 1647.810303 1663.134888 1683.565063 1696.123779 1710.44812 1718.70874 1732.251831 1739.962769 1747.532959 1757.13562 1761.425781 1765.705566 1774.877441 1785.913696 1793.482666 1795.487183 1793.209473 1785.892944 1778.676514 1770.630371 1771.934937 1777.266846 1780.199463 1784.160767 1783.602661 1774.851318 1762.870117 1752.079102 1744.063599 1737.279419 1739.793091 1743.929199 1741.883667 1736.253906 1726.001343 1725.283447 1735.815552 1743.059326 1744.657593 1742.200317 1737.441284 1742.854126 1755.478027 1757.790527 1757.12854 1762.502441 1768.352783 1770.140503 1766.577026 1760.925781 1764.295532 1764.780273 1757.615356 1744.479858 1740.109985 1744.091553 1757.782837 1760.671997 1761.518555 1758.639526 1763.217529 1762.637573 1760.582642 1758.828857 1757.177979 1752.695312 1745.185303 1737.109253 1729.916626 1723.196289 1718.849609 1714.186768 1708.463257 1703.234985 1696.138916 1690.126221 1685.928467 1681.377563 1678.616089 1676.251099 1674.887085 1678.369385 1684.359863 1696.436401 1702.535034 1699.959351 1685.777588 1680.890869 1689.616699 1705.557861 1715.994263 1717.660645 1720.267578 1721.42395 1706.248901 1693.336426 1681.659058 1669.827637 1672.112183 1669.243286 1658.118042 1664.114136 1675.220703 1684.192993 1696.321411 1706.752197 1705.781738 1700.56543 1692.26355 1684.153076 1676.235107 1667.645264 1659.657715 1656.40979 1650.143921 1647.401733 1644.961182 1636.36377 1625.981812 1617.271484 1608.953369 1604.165039 1599.449829 1599.954956 1611.524902 1611.799438 1615.894531 1612.324829 1598.376099 1604.324707 1609.156372 1620.428833 1631.774658 1648.435059 1656.90564 1667.850464 1680.670288 1694.659546 1705.950317 1718.414917 1717.448364 1708.068237 1707.929688 1712.465698 1721.660522 1722.516357 1721.729492 1720.680542 1721.608521 1722.192505 1721.898193 1721.889038 1719.484375 1716.242188 1715.730225 1717.73999 1720.752563 1721.773438 1716.695679 1717.720947 1719.113281 1712.085693 1702.943848 1697.700928 1700.033936 1698.482422 1694.658081 1693.417236 1690.5 1686.487427 1679.242676 1670.261108 1675.247437 1684.678589 1693.666016 1696.935425 1683.787354 1684.716675 1694.675659 1697.338257 1695.633545 1689.642578 1685.133789 1681.09729 1680.813721 1681.977173 1682.795532 1688.209595 1694.781982 1697.649902 1698.111084 1696.965088 1692.923096 1687.712891 1683.117554 1679.882446 1676.046143 1671.336426 1667.265503 1663.373901 1657.729126 1654.602905 1655.050659 1653.63562 1648.285767 1637.452515 1634.702148 1628.944824 1621.615234 1625.460693 1620.868896 1619.452881 1626.082275 1632.422607 1630.770264 1623.281128 1615.170166 1604.624023 1595.261963 1589.91626 1584.704346 1579.700439 1573.997681 1567.421875 1560.555176 1558.139771 1556.786133 1556.330688 1555.507568 1553.329346 1552.166748 1549.451904 1540.894897 1537.540405 1530.852295 1525.338989 1523.394043 1522.719482 1521.848755 1521.598755 1522.099365 1527.711548 1541.909424 1556.858521 1570.026611 1579.42627 1595.269409 1602.639404 1592.540894 1570.138794 1552.821899 1535.071045 1532.66333 1537.567871 1545.743652 1546.602539 1562.11084 1583.071899 1588.871704 1592.197266 1595.75708 1595.888184 1597.392334 1598.583374 1596.339111 1589.090942 1577.858276 1578.900391 1594.004517 1604.091919 1613.222656 1624.549805 1640.498657 1653.537842 1669.55481 1656.3125 1642.615845 1625.101807 1611.404663 1606.576416 1600.631592 1598.090576 1598.701294 1597.204224 1591.554443 1585.005859 1583.475952 1591.521973 1599.060791 1600.322144 1599.15564 1598.27771 1595.938965 1590.363647 1582.63269 1570.347656 1559.096069 1550.627319 1545.068237 1544.339722 1543.901367 1543.718018 1549.955811 1552.124756 1549.557495 1540.093872 1540.138672 1549.107788 1549.93689 1542.307861 1530.747559 1528.814209 1530.771118 1529.979248 1529.439575 1521.955322 1504.71106 1486.145996 1467.233154 1446.817383 1448.520752 1461.137695 1468.017334 1466.626465 1476.519409 1483.781738 1482.659546 1481.597412 1481.126099 1474.908081 1472.268677 1478.192505 1479.952148 1475.867554 1474.333862 1473.78064 1476.113525 1474.3573 1464.969482 1459.019409 1461.388672 1476.862061 1481.955322 1482.65625 1485.197754 1485.15686 1476.091431 1460.547119 1439.400391 1427.993652 1426.000732 1420.641602 1414.621826 1406.27356 1398.354858 1391.220947 1387.075562 1383.704102 1380.465332 1377.144653 1379.181641 1383.710815 1387.644531 1393.214233 1398.065186 1401.99707 1406.677979 1409.385742 1411.980347 1419.459106 1427.243286 1434.644897 1444.454712 1463.504639 1475.667847 1488.93335 1500.973145 1505.201782 1511.55603 1524.256348 1531.028076 1539.404541 1540.447388 1528.476807 1521.142578 1514.287231 1502.235229 1490.463501 1476.950195 1462.307007 1446.620605 1434.653564 1426.261353 1422.014282 1417.448364 1402.22998 1410.508057 1425.635742 1440.647705 1453.480225 1467.312988 1487.05835 1505.164917 1532.663086 1554.061768 1570.776733 1584.306152 1590.022949 1591.062866 1591.918457 1593.025146 1590.858398 1583.992676 1568.84436 1557.553833 1546.307007 1529.949829 1518.783569 1508.10437 1494.22876 1484.208862 1477.232056 1469.87439 1475.828369 1483.402588 1495.018555 1507.097412 1514.81189 1515.172363 1510.678223 1505.150635 1498.08313 1488.993652 1492.174927 1501.453125 1506.092163 1511.991455 1515.361084 1515.496216 1513.865479 1510.619873 1505.437134 1499.250122 1490.859985 1480.693237 1474.19043 1478.957031 1480.406006 1477.488892 1472.294922 1467.89563 1464.554077 1459.009766 1458.054688 1462.778198 1464.913696 1465.822266 1467.926025 1468.115479 1464.251709 1461.913696 1460.771362 1460.74707 1460.853149 1460.426392 1459.937988 1459.703247 1460.626831 1461.710083 1462.311401 1462.568726 1463.029907 1463.255981 1462.16272 1460.532959 1459.739014 1460.319824 1461.945312 1464.441528 1463.989136 1452.346558 1446.089233 1446.627808 1451.033569 1460.259644 1468.467407 1477.09668 1487.244873 1497.473755 1510.307007 1521.633545 1533.808594 1541.123657 1548.869751 1560.640137 1570.540771 1577.865601 1583.817017 1587.33374 1588.115723 1587.395508 1585.532715 1584.665283 1584.822266 1586.023438 1584.386353 1577.607544 1570.415771 1562.505493 1554.843506 1544.467163 1531.736816 1520.712158 1510.770752 1500.080688 1491.635254 1491.876465 1496.985107 1502.448364 1508.384521 1513.358032 1517.832397 1523.546143 1531.596313 1538.062622 1539.515869 1536.586548 1533.600708 1530.833374 1527.416626 1519.328613 1508.196167 1496.106567 1483.531372 1469.56543 1456.239136 1443.966919 1432.051636 1421.245483 1408.64563 1395.264648 1379.688721 1373.666016 1370.332031 1369.672729 1370.747192 1378.332397 1382.707886 1385.934448 1393.701172 1400.52771 1404.229004 1398.115356 1383.207642 1373.414185 1383.895752 1395.781616 1404.09436 1410.438721 1403.375366 1415.96936 1431.325195 1444.81897 1454.944824 1463.209595 1470.662476 1474.723145 1471.097656 1466.708618 1462.695068 1451.449097 1451.486572 1456.564819 1459.534424 1457.757324 1450.331787 1438.338623 1437.360962 1448.760376 1457.545776 1462.882324 1463.204102 1461.383545 1462.197144 1461.427612 1458.063477 1453.784424 1449.066162 1438.064209 1435.37793 1424.191162 1431.743408 1443.731812 1451.991211 1455.540894 1456.859863 1457.366699 1460.22876 1450.26123 1438.863525 1431.000244 1423.64624 -1565.619629 1545.873413 1534.655884 1559.02002 1578.794067 1590.100098 1601.090454 1616.752075 1633.890869 1660.238892 1676.725342 1688.189453 1700.300171 1714.591309 1732.863281 1745.975708 1756.614014 1761.752563 1766.575317 1770.739258 1775.302979 1784.033569 1793.06604 1795.920044 1794.141724 1786.793701 1777.336792 1768.923584 1760.512939 1761.625366 1765.360596 1771.086914 1776.12915 1776.070801 1768.000732 1752.86731 1742.448364 1733.254028 1726.450806 1727.81543 1731.588379 1732.539917 1727.837524 1717.662109 1719.324341 1725.855957 1730.450439 1731.713135 1729.676147 1728.936768 1736.996094 1743.788452 1748.071777 1750.302734 1756.532227 1764.668335 1766.556885 1762.764893 1756.049194 1754.725342 1757.839966 1753.440308 1742.799072 1736.369751 1740.905518 1750.469238 1756.890137 1758.256348 1751.473022 1758.377319 1760.980957 1760.112061 1758.578247 1757.380859 1756.620239 1749.813477 1745.179688 1737.64917 1732.734009 1732.495239 1732.009277 1726.155029 1720.074585 1708.343994 1699.034668 1693.356812 1685.814941 1682.058716 1681.499756 1686.984863 1697.435425 1705.034668 1714.127197 1722.210571 1707.643677 1689.132568 1680.686035 1689.441528 1706.338135 1723.062256 1732.231812 1728.006592 1718.369019 1700.659424 1688.171997 1681.331787 1685.123657 1686.137085 1675.903931 1664.915405 1667.057983 1678.082031 1688.927124 1701.601196 1710.555176 1710.055542 1703.606079 1692.592651 1683.389893 1677.190063 1671.493286 1671.463867 1664.430786 1649.596436 1646.179688 1644.261475 1634.709106 1626.736328 1614.317627 1606.898193 1602.057617 1599.617432 1610.206909 1614.521118 1617.417358 1620.358032 1625.365601 1620.018555 1608.310791 1610.193359 1616.201538 1624.087646 1635.613403 1647.456787 1662.380981 1680.358154 1690.996216 1699.683228 1705.950562 1701.375732 1698.619995 1696.87561 1704.189697 1714.428101 1721.422485 1722.853638 1722.29541 1720.928711 1718.699951 1720.211182 1722.459473 1721.395386 1719.477539 1719.001709 1720.675781 1722.598145 1723.113159 1722.536621 1722.187134 1722.163086 1719.041504 1710.891479 1706.889404 1704.746704 1703.391113 1701.684204 1703.773438 1707.165283 1703.139893 1693.283203 1684.244995 1681.265015 1690.266968 1697.232178 1699.153809 1696.266602 1691.37561 1694.401489 1698.25415 1698.224365 1696.389038 1692.339111 1685.652954 1684.758423 1687.406616 1690.409912 1695.099121 1699.773315 1702.229126 1702.598633 1700.980713 1697.606201 1693.086182 1688.616211 1685.077759 1680.739014 1675.695557 1671.167847 1667.399658 1664.212524 1664.108765 1662.969238 1659.948364 1654.039795 1647.074585 1638.774902 1628.935181 1620.82959 1623.318604 1616.230835 1610.958618 1616.978027 1623.081543 1623.638428 1616.676758 1608.798218 1600.282349 1594.207275 1588.688599 1584.94519 1578.46875 1576.245728 1571.463379 1564.529541 1558.629761 1552.366577 1548.417969 1547.446777 1547.529297 1547.179199 1542.84021 1538.071655 1536.651733 1534.362061 1527.489624 1525.301758 1525.563843 1525.422729 1520.875854 1518.174194 1519.61438 1529.486328 1542.890991 1554.64917 1569.063232 1587.306396 1589.360107 1583.345215 1567.507568 1551.190918 1533.297729 1523.359253 1535.47998 1537.356689 1542.267212 1557.436646 1578.233154 1587.493652 1587.700684 1586.802856 1584.941406 1587.367065 1589.088745 1586.010742 1577.060791 1566.052856 1577.185425 1589.644531 1600.623657 1611.60083 1627.341431 1644.694946 1656.560181 1674.340332 1654.815308 1641.024292 1625.599854 1611.373291 1600.988281 1595.117065 1588.779785 1590.64624 1590.842651 1587.366943 1581.661743 1581.220337 1587.948608 1593.759888 1595.327759 1595.194336 1594.849609 1593.255737 1584.793335 1582.73291 1577.999756 1571.541504 1562.979614 1554.02356 1557.680664 1557.731567 1556.007202 1562.644287 1564.77478 1561.655396 1552.371948 1556.211548 1562.028809 1558.236816 1546.543091 1537.317139 1541.969849 1540.859253 1540.891602 1539.430054 1521.227539 1504.848145 1488.408203 1468.867798 1448.356201 1441.852905 1446.289551 1449.375366 1449.60144 1459.015869 1464.193115 1467.964111 1468.299316 1465.245605 1457.96814 1454.567993 1461.388306 1466.647339 1466.776733 1464.034302 1461.784912 1463.11084 1465.630737 1456.757935 1447.454834 1455.491577 1465.339355 1466.447021 1465.940552 1464.709106 1470.774048 1468.544434 1461.034546 1446.126709 1421.841431 1412.822021 1413.6521 1404.934937 1401.112549 1393.883911 1388.550781 1385.45813 1382.089355 1378.701538 1378.143433 1382.583618 1387.678955 1393.613647 1400.314575 1408.107422 1415.56543 1419.799561 1420.858154 1422.061035 1428.286621 1443.899292 1452.898926 1460.562012 1472.81897 1488.260986 1499.799194 1508.040405 1511.746826 1518.999756 1530.405029 1539.683594 1549.094971 1552.098145 1544.168457 1530.509277 1518.790527 1507.422729 1496.681519 1484.937622 1471.113281 1454.249268 1439.608032 1428.984985 1423.281738 1417.62146 1405.76001 1410.909424 1424.917358 1440.332275 1452.679199 1466.370361 1486.072876 1502.310791 1530.450317 1553.915039 1569.541382 1585.852783 1596.564087 1599.599243 1600.710571 1599.954468 1592.87561 1582.00354 1569.969849 1559.099243 1545.378296 1530.85144 1518.98291 1507.78479 1494.932617 1485.986572 1479.216797 1473.477905 1478.30481 1485.817261 1497.182129 1510.369507 1517.363525 1518.936401 1515.848633 1512.02478 1504.328491 1497.255249 1500.35791 1508.539795 1515.141235 1521.185791 1524.664795 1524.061768 1521.666382 1518.006592 1512.138428 1505.69397 1497.315063 1486.484741 1487.681885 1487.037109 1485.985718 1480.844116 1473.797607 1468.996826 1463.9552 1459.928345 1462.235596 1466.166992 1468.621826 1470.501587 1472.451904 1472.668213 1471.383423 1469.71582 1469.280396 1469.119873 1469.13208 1468.364868 1466.929932 1466.571045 1468.236938 1470.643066 1472.681274 1473.351685 1472.357544 1470.49353 1468.139893 1465.629639 1462.906982 1462.039795 1462.761597 1464.720093 1456.08374 1448.889771 1445.99585 1448.940918 1451.833984 1461.579102 1470.554077 1479.872681 1490.343384 1503.138428 1515.958496 1528.459717 1540.365601 1548.01709 1559.607056 1567.597778 1575.621094 1584.033569 1590.441528 1594.715088 1596.293945 1595.630981 1594.645264 1594.345093 1594.630371 1592.655151 1588.51355 1581.230347 1572.487671 1565.270264 1556.333252 1545.170654 1531.524292 1519.850098 1509.118286 1498.08313 1496.843994 1500.262451 1506.302979 1512.901978 1518.740601 1524.178223 1531.203491 1538.958618 1542.36145 1543.585938 1541.396851 1536.645386 1533.829224 1529.821533 1525.060425 1511.796143 1499.463013 1488.274048 1473.860718 1462.16333 1446.505371 1434.140625 1421.953613 1410.516846 1397.81189 1379.636475 1372.362305 1380.38269 1381.998291 1383.082275 1381.891479 1389.042358 1394.864624 1403.996582 1410.448853 1416.225464 1409.52124 1396.05249 1379.768555 1374.958252 1387.546875 1399.563354 1418.452637 1423.516235 1418.550049 1417.212524 1432.857422 1445.608276 1455.612549 1465.103882 1474.94873 1478.37439 1474.400146 1471.410278 1466.672607 1457.849487 1458.466919 1461.901001 1464.347534 1464.1427 1455.2323 1442.720337 1436.85022 1449.746948 1460.937622 1466.442993 1466.865479 1465.554688 1465.799683 1463.522827 1458.507812 1452.538818 1448.344116 1445.427734 1441.088623 1429.054321 1436.30481 1449.415771 1455.270508 1459.214233 1462.027954 1464.2146 1463.099976 1451.321411 1439.864014 1430.118896 1421.264526 -1573.319824 1560.474609 1538.065796 1551.943237 1575.951782 1588.876099 1597.142456 1613.044312 1631.819702 1655.06604 1674.057373 1688.21582 1700.782593 1719.849243 1741.169556 1757.027466 1763.172119 1768.892578 1775.379639 1778.793945 1787.140381 1796.959717 1798.551392 1795.094727 1787.305786 1779.554321 1770.456665 1756.964722 1747.947754 1747.976685 1753.527954 1757.13916 1765.802124 1767.437866 1759.09668 1747.172363 1734.602417 1724.178223 1716.607544 1718.721802 1721.834229 1720.918701 1716.176025 1708.885132 1710.481812 1713.743896 1714.814697 1717.891113 1719.271606 1724.798828 1731.294189 1736.868286 1741.773804 1747.43103 1756.455933 1762.870361 1767.04248 1763.415283 1754.952637 1745.604614 1747.500366 1747.385986 1743.6521 1733.158325 1731.823486 1738.360962 1742.490479 1747.079224 1741.390991 1754.456177 1759.706177 1758.662964 1755.779541 1754.563477 1751.952637 1747.879028 1744.565552 1740.596191 1737.459595 1741.590942 1741.513794 1732.197021 1722.436401 1713.052368 1703.98938 1693.789917 1687.814575 1682.312988 1691.374268 1706.695801 1716.014893 1724.061401 1730.861938 1725.178955 1706.97583 1689.28772 1684.127563 1693.381836 1709.236572 1725.584961 1735.130615 1728.800171 1713.47644 1695.629883 1695.602539 1698.50708 1703.545288 1697.343018 1681.598022 1671.092041 1669.425537 1681.157349 1692.295288 1703.677734 1709.311401 1707.613403 1703.285767 1696.165161 1689.467529 1685.138672 1673.720337 1669.74707 1659.125 1640.654907 1632.12793 1630.671631 1623.670776 1618.630005 1608.331421 1603.571411 1600.938965 1605.138916 1612.588623 1617.741699 1620.859741 1629.356079 1638.650635 1633.51416 1619.426636 1606.391113 1613.46106 1619.845703 1629.106567 1640.914307 1656.198364 1670.258423 1680.786499 1682.317749 1681.221924 1689.675537 1685.937988 1687.925781 1695.270752 1703.135376 1712.408081 1719.945679 1719.550293 1715.63269 1708.110718 1710.029297 1717.216309 1721.016968 1721.76355 1721.289673 1721.736816 1723.074829 1723.317139 1723.011841 1722.691284 1722.444946 1721.092163 1717.882446 1713.349243 1709.625854 1707.716675 1706.325439 1708.98999 1711.91272 1712.205444 1708.182129 1699.427612 1691.690308 1693.318481 1702.256592 1704.095825 1701.285278 1696.751709 1696.248291 1699.796753 1700.576416 1699.558105 1697.064453 1693.244263 1691.765137 1694.270508 1697.692017 1700.830078 1704.782471 1707.424927 1707.380371 1705.344849 1702.279297 1697.88208 1693.403076 1689.574219 1685.060181 1680.391235 1676.537964 1672.462646 1672.311646 1672.991943 1670.828613 1665.686035 1659.093872 1647.528564 1639.295898 1628.57251 1620.961792 1619.05542 1613.783569 1607.29187 1609.15332 1620.896118 1622.298462 1614.260986 1601.760254 1594.516357 1588.863403 1584.295532 1577.951538 1573.467285 1571.04126 1564.613647 1560.794678 1554.469238 1549.606445 1546.240601 1543.703369 1541.936523 1539.067383 1537.604126 1537.895874 1538.744873 1538.877686 1534.249756 1531.428223 1530.999146 1529.742432 1525.356079 1520.185303 1516.28064 1519.919922 1528.677002 1545.047485 1563.228394 1577.382568 1575.03186 1570.920898 1560.005615 1545.92749 1528.735474 1519.430054 1528.733887 1532.340088 1539.976807 1552.815063 1575.269043 1585.832031 1583.62207 1581.291626 1580.156738 1580.279419 1579.215576 1575.403687 1566.985596 1558.881958 1573.725708 1588.669067 1601.635864 1613.584839 1627.50415 1645.398804 1661.917725 1670.779541 1650.82251 1637.532471 1625.903931 1614.172852 1602.020874 1587.220215 1580.800171 1584.244507 1585.807617 1582.942749 1573.842896 1575.987061 1581.02771 1583.832153 1587.446045 1590.575806 1594.734375 1595.5271 1596.494019 1595.303711 1593.083984 1586.81958 1576.431519 1574.749512 1577.559326 1575.449585 1572.168335 1575.460815 1574.648315 1573.346069 1566.817871 1573.742432 1571.062256 1564.644287 1550.449219 1553.763428 1555.634399 1552.641113 1551.217773 1534.536743 1512.463623 1501.516357 1489.710571 1477.960815 1463.699463 1444.818115 1441.09021 1435.046387 1439.679565 1444.092773 1446.968994 1447.947266 1447.511353 1445.391113 1439.907593 1437.95874 1444.013428 1450.125122 1452.78064 1450.448242 1451.55481 1448.28186 1452.128662 1445.885376 1437.294189 1446.454102 1453.620972 1450.317261 1448.077881 1446.856201 1450.660522 1456.268921 1454.274048 1445.162231 1423.769043 1413.651367 1406.59668 1400.551636 1395.439941 1390.308716 1387.262573 1383.858765 1381.099243 1378.284912 1379.846436 1385.724365 1392.751709 1402.296387 1413.922974 1422.693359 1430.306885 1435.020386 1434.892456 1428.30249 1437.235596 1453.095093 1467.046753 1472.955322 1487.06311 1499.637329 1512.153076 1516.976074 1522.305664 1529.705933 1538.049438 1550.192139 1559.393066 1558.542114 1555.062988 1539.678467 1523.502563 1512.700073 1507.216309 1493.742188 1478.47998 1461.909302 1445.368774 1432.396851 1424.463013 1418.802612 1408.753052 1410.993896 1424.243408 1439.438843 1452.33374 1464.825073 1484.322754 1497.887451 1521.37793 1544.845215 1566.69812 1582.667603 1595.388062 1601.018677 1601.096558 1600.358276 1591.484863 1581.121704 1570.834717 1558.461182 1545.305786 1532.161865 1519.909912 1508.905029 1498.064697 1489.951416 1482.457886 1477.005249 1482.549561 1489.973755 1500.318604 1513.693481 1520.963867 1523.752319 1521.376709 1516.797729 1509.827393 1502.744385 1507.322876 1515.708984 1522.760254 1529.630859 1534.581299 1535.551636 1531.769653 1525.511597 1518.416992 1510.674072 1502.309937 1496.799927 1495.938965 1493.921387 1491.274414 1487.972778 1477.175903 1469.329468 1463.265747 1465.495972 1465.062134 1469.359253 1472.607666 1475.175781 1476.917725 1477.901245 1479.150024 1480.327148 1480.344238 1479.768433 1479.115967 1478.507812 1477.034302 1477.933472 1479.349243 1480.866333 1481.985596 1482.182983 1481.30835 1479.253174 1475.858765 1470.487671 1464.684082 1463.279907 1464.515747 1464.041748 1451.69397 1447.84082 1448.407715 1454.004028 1459.806152 1463.231934 1471.019165 1479.652222 1491.112427 1505.549927 1517.86731 1531.930176 1542.509277 1553.526489 1565.297852 1573.752319 1582.990112 1589.49231 1596.217896 1602.105957 1605.629639 1606.373657 1605.409912 1602.950195 1600.74646 1596.034668 1588.598267 1581.914551 1574.169067 1565.427856 1556.086304 1544.625732 1531.246826 1518.600098 1505.884644 1498.647705 1503.473389 1510.172363 1516.19397 1521.786621 1528.799927 1536.843628 1542.688599 1546.927979 1549.092163 1547.572021 1543.293457 1538.822998 1532.356079 1525.139282 1513.567871 1501.622681 1490.730103 1479.672241 1464.578003 1450.940796 1438.601685 1422.654053 1409.764771 1400.090332 1389.592041 1380.595825 1375.368652 1382.822632 1387.161133 1388.640015 1391.408203 1400.210327 1409.341187 1418.212891 1423.048462 1418.177246 1404.868164 1389.782227 1378.141113 1377.671753 1390.236694 1407.010376 1428.666748 1434.095703 1431.526123 1425.595459 1430.87561 1444.337524 1455.712646 1466.194214 1477.168945 1479.614014 1477.936401 1477.157227 1470.30957 1462.470947 1464.745972 1468.44165 1470.359375 1466.969604 1459.249268 1449.782837 1438.831055 1450.187134 1463.315063 1469.522949 1471.225586 1470.130493 1468.344238 1463.659424 1460.737793 1455.575073 1453.166992 1450.286743 1445.294067 1435.622437 1438.747559 1451.780396 1458.446899 1463.234253 1465.969849 1466.211426 1462.785278 1450.442139 1439.056519 1430.01416 1419.744507 -1585.267822 1567.266968 1546.004028 1545.829346 1572.328491 1584.842773 1594.001465 1605.390259 1623.147095 1639.344482 1660.433716 1682.962158 1699.7948 1719.986694 1742.33728 1760.180786 1768.598877 1779.803833 1791.661621 1799.814087 1804.042969 1806.863281 1797.957153 1789.994629 1779.682617 1770.395508 1757.293213 1746.272339 1732.968262 1730.567505 1733.976562 1743.963867 1754.389893 1753.899658 1747.736694 1737.262329 1724.790527 1715.43396 1707.056152 1705.925659 1710.153564 1707.306396 1704.418335 1699.400757 1702.324829 1704.762451 1706.325439 1710.837036 1719.504395 1726.317871 1733.616211 1741.448486 1749.940918 1755.595581 1759.930786 1766.052979 1769.446777 1765.486328 1757.846558 1745.829834 1735.004517 1735.93335 1745.063232 1739.77832 1731.950317 1729.365845 1728.941528 1733.065308 1733.764038 1752.553711 1758.867188 1758.142578 1756.599487 1752.100586 1744.919678 1743.103027 1741.560303 1739.686523 1738.264893 1741.268921 1738.488037 1730.624512 1719.648315 1706.937744 1699.682495 1693.539917 1689.950806 1693.383057 1699.318481 1714.990234 1728.559692 1735.9552 1735.262817 1723.46814 1707.878784 1692.097656 1697.454468 1706.428833 1713.910522 1725.643921 1735.238647 1729.178223 1712.785889 1710.596436 1711.259888 1712.286255 1714.960327 1702.635498 1689.201904 1680.454712 1677.240356 1684.714478 1696.068848 1700.542236 1701.257935 1698.739136 1699.160767 1697.166748 1688.056885 1679.467041 1668.219971 1657.061523 1647.948975 1633.234253 1622.329834 1619.70459 1615.17395 1609.002441 1604.720947 1603.64502 1603.918701 1607.219116 1614.466553 1622.228271 1632.840088 1642.706665 1653.521484 1647.56543 1631.740356 1610.90332 1610.164795 1616.12561 1622.094604 1631.852905 1643.790405 1657.812012 1664.352295 1666.621948 1669.759888 1676.289917 1676.277832 1679.805542 1686.335693 1691.402954 1701.516846 1709.074463 1708.76001 1708.626953 1701.396118 1695.600952 1706.132446 1716.017456 1720.411255 1716.553101 1716.936157 1719.726318 1722.371948 1721.907349 1721.559814 1722.312378 1722.391235 1721.409058 1719.764404 1715.76416 1712.325317 1711.493408 1712.609253 1714.833252 1719.52063 1717.347778 1709.491333 1702.59314 1701.920166 1709.143311 1709.318481 1707.777466 1705.058105 1703.210938 1703.568604 1703.408569 1702.216431 1700.320557 1697.428467 1696.518311 1699.577271 1703.333008 1706.462158 1709.439453 1711.704102 1711.916138 1710.469482 1707.618408 1703.601318 1698.403931 1694.581787 1690.997192 1686.188477 1683.296997 1680.543701 1679.052612 1677.761963 1674.756592 1669.867432 1660.447754 1648.144531 1637.093384 1629.978027 1625.456177 1616.440674 1607.24707 1600.243774 1599.713257 1609.242432 1613.752075 1609.556396 1600.495972 1593.400024 1588.23645 1580.599243 1570.593872 1564.868896 1558.513672 1553.385254 1548.866089 1547.458008 1545.578125 1543.277222 1542.79541 1543.884399 1544.387817 1544.484253 1545.453125 1545.252808 1543.988525 1537.823242 1537.120728 1536.613159 1535.394165 1530.41626 1524.328613 1519.324951 1513.96228 1518.668701 1529.286743 1551.158447 1562.734741 1558.851929 1552.608032 1548.846802 1539.165405 1523.700806 1514.053467 1524.515869 1524.986328 1537.474609 1554.88916 1572.539673 1579.349609 1579.760742 1575.195801 1573.763062 1573.222412 1570.432007 1565.224121 1557.242188 1556.393799 1577.088501 1588.283936 1600.258179 1611.652344 1623.555054 1643.155518 1660.746826 1669.143677 1648.418823 1635.997925 1625.188843 1614.766724 1604.335693 1590.408813 1572.781738 1575.717651 1577.677124 1577.172363 1571.619873 1571.039307 1572.407959 1579.02832 1582.969116 1591.466309 1601.282593 1614.426147 1618.960815 1613.782349 1606.561157 1599.703369 1594.127808 1594.117554 1592.645508 1587.990234 1584.363281 1581.340088 1576.899292 1576.237915 1576.966675 1576.690308 1575.25708 1567.067261 1562.172974 1563.952271 1563.503906 1559.0979 1549.558472 1536.225952 1517.064453 1506.946167 1501.474121 1494.66272 1478.702515 1466.157349 1466.281494 1460.411377 1453.643555 1439.855347 1435.59668 1436.149536 1429.114136 1429.049072 1428.8927 1430.859009 1432.193604 1432.780884 1433.645752 1433.92334 1437.446167 1435.154907 1437.313354 1435.919678 1425.96936 1437.667358 1441.017944 1436.638184 1437.030762 1437.088745 1438.126953 1443.57959 1443.167725 1436.03064 1423.757202 1414.816406 1405.210083 1398.140137 1392.14978 1388.42749 1385.725708 1381.158447 1380.577271 1378.701172 1381.715698 1387.366577 1399.45166 1415.619873 1426.980835 1436.51123 1444.100586 1449.475708 1450.686401 1446.055054 1447.477051 1462.915527 1472.656128 1484.932129 1499.123413 1512.550171 1518.793945 1522.061646 1529.31897 1538.967896 1547.873169 1561.9729 1590.303345 1578.473633 1558.565063 1542.606323 1525.967773 1519.528687 1515.384766 1503.901978 1487.752197 1468.506958 1451.331299 1436.916382 1425.656006 1420.414551 1412.480713 1411.159912 1423.49939 1438.797974 1451.724854 1463.289795 1482.497437 1496.502808 1517.171143 1542.376343 1559.559082 1576.359253 1589.624268 1598.035522 1599.355835 1597.314941 1590.326416 1580.941162 1570.957642 1560.123291 1547.678711 1535.210693 1522.509277 1511.722656 1501.612915 1492.573242 1485.615845 1482.310425 1486.937256 1494.870728 1505.387695 1516.974976 1525.319092 1528.616577 1527.231323 1522.236938 1514.299072 1512.518311 1514.233032 1522.870972 1530.572632 1538.12793 1544.250854 1544.868164 1541.744385 1536.20459 1524.980713 1515.77063 1508.515747 1505.134521 1503.703369 1499.954102 1495.15332 1489.21167 1478.152222 1470.752075 1475.176392 1474.454834 1471.34082 1472.558838 1476.067261 1479.946411 1483.042725 1485.907349 1487.784546 1489.271973 1489.550537 1489.1427 1488.596436 1487.785522 1487.529297 1487.970337 1488.326782 1488.960693 1489.955566 1490.57312 1489.628784 1486.858643 1481.464722 1475.73938 1467.515625 1464.40332 1465.787354 1461.885376 1450.314453 1447.788818 1452.194092 1459.72998 1465.871216 1470.368774 1475.422363 1485.225098 1495.948486 1507.316528 1517.630615 1527.791626 1541.619507 1554.151733 1565.882812 1576.562012 1586.826538 1593.384399 1601.442139 1609.905518 1620.741699 1622.161377 1613.757446 1607.052246 1600.063721 1592.467285 1584.314697 1578.855957 1572.238647 1563.714722 1553.890503 1542.430298 1529.369873 1515.91333 1506.087769 1505.73999 1512.656494 1519.035889 1525.063721 1534.015625 1540.505981 1546.611328 1550.98645 1553.316895 1552.990601 1551.009644 1542.766479 1533.987183 1525.784546 1516.000854 1503.4823 1490.76123 1478.862549 1466.659546 1455.427612 1442.735474 1429.928955 1413.950439 1400.938477 1390.862671 1384.623657 1378.331543 1376.710571 1388.486084 1393.177856 1396.898315 1404.234497 1411.875977 1423.817993 1432.741821 1429.66748 1412.974121 1396.708618 1384.930542 1379.910889 1391.219971 1406.007812 1419.360474 1435.217773 1442.909302 1442.107788 1436.069092 1435.052368 1440.5 1454.172241 1465.866089 1478.461182 1481.792358 1482.069214 1479.956543 1474.238647 1468.507935 1471.67627 1476.448364 1476.243774 1472.700928 1464.082764 1453.625854 1446.415771 1450.46521 1464.272339 1474.27417 1475.87915 1473.339111 1471.589844 1467.868408 1464.113892 1462.24353 1459.462402 1455.474121 1451.298096 1439.448608 1439.83606 1453.173828 1462.036987 1466.534546 1468.244385 1467.566772 1461.366821 1449.615479 1437.276611 1427.517944 1415.152222 -1590.764282 1568.764038 1547.642578 1546.040649 1575.24585 1586.017822 1596.582031 1611.416748 1626.713379 1649.858154 1675.252319 1694.803833 1711.845337 1724.205688 1745.1698 1762.167969 1775.119507 1784.921631 1795.040527 1809.915771 1817.262695 1803.281128 1790.169434 1780.64978 1767.660278 1753.478271 1745.827515 1736.885254 1722.745728 1715.868896 1722.450684 1731.629395 1741.528076 1741.078491 1735.161987 1724.849609 1715.461426 1708.738525 1699.894287 1696.308472 1697.547241 1696.392578 1692.055298 1692.421875 1703.230103 1713.778076 1716.566284 1717.4646 1718.273071 1726.657837 1736.733887 1747.477417 1757.70813 1758.965576 1763.987183 1769.694458 1769.522827 1764.025879 1758.272339 1748.449463 1735.371582 1729.353271 1732.370605 1744.767944 1738.469727 1728.632324 1717.470215 1723.501343 1735.697266 1748.317383 1755.648682 1758.067139 1757.639038 1754.28772 1747.022583 1743.44165 1741.359497 1738.279907 1735.778442 1734.657349 1732.992432 1724.446777 1713.064575 1704.944458 1698.349731 1694.866821 1693.387695 1701.838135 1717.540039 1728.415894 1738.814819 1745.154175 1731.669556 1721.346558 1706.701294 1697.350952 1712.797119 1721.819946 1729.365845 1733.779297 1738.501831 1731.649658 1724.15979 1728.277832 1724.495483 1721.681885 1717.199707 1703.150757 1691.591675 1681.83606 1684.832275 1693.84314 1703.980103 1699.161987 1693.387329 1688.394409 1694.739258 1691.650146 1679.692993 1666.774414 1661.83313 1648.811646 1634.744385 1625.381958 1619.073242 1615.513184 1611.675781 1606.745117 1605.384033 1611.309692 1611.506226 1607.849609 1616.865601 1629.943726 1642.556641 1654.020996 1664.780762 1655.71875 1637.159424 1621.947754 1609.49585 1612.592041 1618.1604 1623.27417 1635.294556 1649.10498 1652.627319 1654.74585 1656.465332 1662.746582 1666.616821 1671.205444 1676.779419 1680.261475 1690.180908 1697.591064 1695.342407 1694.632446 1690.859009 1689.563232 1702.909302 1711.734863 1710.010864 1705.999146 1707.343262 1711.974609 1715.403564 1716.549805 1720.322144 1721.943115 1722.544922 1722.574707 1721.512817 1719.841187 1716.734009 1716.079956 1716.468628 1717.184204 1720.090332 1720.40625 1715.875977 1711.192505 1709.41626 1710.588989 1710.336426 1709.8479 1708.988647 1707.627563 1706.911621 1706.202637 1705.114868 1703.411377 1703.254272 1704.472778 1706.214966 1708.557007 1710.716309 1713.313599 1715.962769 1718.192627 1717.667725 1713.111816 1708.937378 1703.980103 1699.626099 1696.970581 1695.135132 1690.820312 1686.672485 1684.445557 1682.548218 1677.704834 1670.400635 1660.19043 1647.89502 1635.580322 1630.224121 1625.713989 1620.365356 1610.187256 1599.462158 1591.417847 1595.851074 1597.709473 1595.902588 1593.872314 1589.401978 1587.033447 1579.609619 1566.996948 1558.434204 1549.978394 1548.313477 1547.975708 1547.126099 1547.701782 1547.863892 1551.611084 1553.927002 1553.924438 1553.816528 1554.319702 1553.082275 1551.848877 1551.97876 1548.377441 1544.795044 1542.428711 1539.124023 1532.699463 1524.875 1517.292603 1511.455933 1519.555176 1531.584839 1542.684692 1541.698486 1536.250732 1537.055786 1528.783936 1519.103149 1511.474487 1515.394775 1523.969116 1537.277344 1550.79895 1564.875977 1575.796387 1581.942383 1577.414307 1572.432129 1562.924316 1559.605469 1555.060913 1547.22644 1560.826538 1575.040649 1583.426025 1592.99231 1605.942627 1619.454224 1637.667358 1655.295654 1662.881226 1648.007324 1635.416382 1624.456299 1613.991211 1602.66394 1590.3927 1575.19812 1564.558472 1570.471924 1570.617676 1566.996948 1562.557861 1571.398315 1577.423218 1583.204102 1592.807739 1608.813965 1625.462036 1629.311035 1625.690063 1621.024902 1613.049927 1610.657715 1605.447754 1599.58728 1591.853638 1586.038208 1578.244019 1573.4823 1574.642578 1576.846191 1576.714111 1575.453003 1571.968628 1571.595337 1569.906982 1566.400879 1560.77832 1552.396362 1537.027466 1526.346191 1519.59375 1512.816162 1502.995117 1491.747559 1493.401611 1485.022217 1474.729492 1464.553589 1457.558716 1450.779907 1442.476318 1429.466309 1425.499146 1422.940674 1420.35083 1422.238159 1419.90979 1420.626465 1422.348511 1423.691162 1424.974243 1425.576294 1423.131592 1413.340454 1424.875366 1427.446411 1425.344116 1427.829102 1425.108032 1426.398804 1429.381836 1428.785278 1424.766724 1418.890259 1411.854248 1401.622192 1394.690918 1389.400757 1386.771362 1384.860718 1381.114258 1380.823242 1381.120117 1383.096069 1387.772339 1408.921631 1427.952271 1442.123413 1448.747681 1452.680542 1459.314331 1462.197388 1460.806641 1458.837769 1467.057739 1477.505249 1490.667236 1506.040405 1516.558105 1523.831299 1529.151367 1534.132446 1542.725098 1557.347534 1571.644897 1603.214233 1579.553711 1556.897949 1543.085938 1527.757202 1522.232422 1519.244751 1510.460693 1494.925293 1475.386841 1456.262085 1442.000244 1427.301025 1421.78772 1416.033325 1411.382202 1422.089111 1437.829468 1450.763184 1461.862183 1480.079834 1495.114258 1513.019775 1537.165527 1556.390259 1572.240479 1584.444946 1591.257568 1593.453735 1593.133789 1589.604614 1582.236572 1571.669312 1563.517822 1550.83728 1536.851807 1523.952393 1513.941895 1503.559204 1494.73584 1487.428711 1485.220947 1490.375244 1499.731079 1510.510986 1520.812988 1528.54895 1534.3927 1535.198608 1530.633545 1522.085693 1521.918823 1523.724731 1530.495483 1538.744507 1548.913574 1552.606934 1552.241089 1548.492432 1542.036743 1533.229858 1521.979004 1513.969849 1513.881104 1510.449585 1504.216797 1497.014893 1488.938721 1478.411743 1479.944458 1482.358765 1477.430176 1474.415771 1476.032104 1480.646484 1485.520874 1489.512451 1492.541748 1494.63916 1496.831787 1497.649414 1498.355835 1498.689697 1499.091553 1499.517456 1499.762207 1499.3927 1500.051514 1501.311646 1501.161011 1498.847778 1492.72644 1485.45105 1479.079712 1473.497681 1469.250244 1465.329712 1455.937256 1449.011475 1449.728394 1456.973145 1464.842041 1469.437622 1474.558472 1483.800537 1495.599854 1507.007935 1517.828491 1527.754395 1534.012817 1543.096313 1553.546021 1564.691528 1576.416992 1587.226318 1595.167969 1605.225586 1616.939941 1624.402588 1619.841309 1612.539185 1604.222656 1596.07019 1587.720581 1581.051758 1575.663818 1568.546021 1560.793823 1550.71936 1537.972168 1526.495239 1513.028076 1509.429688 1511.860596 1520.376221 1528.718262 1537.970093 1544.954102 1551.171875 1555.383301 1558.662109 1559.297729 1553.864502 1547.881592 1537.690552 1527.94458 1518.700562 1507.363525 1494.445923 1480.559448 1466.415527 1457.322754 1447.657593 1434.669189 1421.580078 1408.585205 1396.771729 1386.96936 1380.656738 1376.564819 1383.966309 1395.180908 1399.818481 1405.781738 1413.869385 1424.429688 1438.458862 1440.432861 1425.218506 1406.35498 1389.564941 1382.551514 1386.519897 1396.228516 1414.517944 1431.26709 1441.144775 1448.68689 1451.130859 1447.199219 1446.522217 1444.334106 1450.86377 1464.296143 1478.790283 1485.598633 1486.649536 1483.302124 1479.133057 1474.283691 1477.118896 1479.269653 1478.998535 1477.307251 1467.793823 1456.027466 1449.032593 1451.101807 1466.556885 1478.193848 1479.432495 1476.796387 1476.293457 1474.748169 1469.67041 1466.996216 1464.914917 1458.4021 1451.174072 1442.302856 1444.473755 1455.401123 1464.346558 1469.658325 1471.157349 1468.174194 1459.717651 1447.289551 1435.443726 1423.713989 1409.904663 -1593.964355 1575.824951 1552.411133 1546.606934 1573.116455 1586.70105 1597.437256 1613.45813 1628.324829 1654.761963 1681.332886 1701.987671 1716.505615 1732.240723 1752.061523 1764.268677 1772.412476 1779.890259 1785.961548 1797.806152 1806.564331 1797.621948 1781.46814 1767.726074 1754.084961 1746.303467 1736.728027 1725.196289 1713.341675 1699.977661 1708.077881 1720.410156 1728.134888 1728.655396 1721.130371 1713.006958 1705.098145 1696.686768 1689.068237 1684.775757 1684.373291 1681.23999 1686.423096 1706.417358 1720.78186 1729.695923 1735.508057 1736.606445 1730.304932 1728.923828 1735.473511 1743.050781 1746.045044 1755.797974 1763.532227 1769.333862 1766.62854 1758.069214 1757.438965 1747.730835 1736.236328 1726.68335 1721.921631 1732.320068 1745.642456 1734.00769 1718.959595 1718.603027 1732.722778 1743.227905 1746.233521 1757.604004 1758.34729 1755.998657 1749.965942 1744.936768 1741.247192 1737.508057 1732.286377 1730.86377 1723.241089 1717.643188 1713.623901 1712.996704 1709.506104 1701.19165 1693.606934 1703.402222 1723.090088 1738.659058 1745.945557 1745.179321 1731.516235 1721.95166 1708.022339 1707.65271 1720.750244 1733.452759 1739.241821 1744.336914 1744.960327 1739.682251 1738.833008 1736.234131 1730.699219 1718.700928 1707.698364 1700.450195 1694.533569 1693.283813 1695.630249 1706.566406 1710.07312 1699.853516 1687.574585 1680.246826 1683.382446 1686.551758 1675.592773 1658.993164 1649.02832 1645.636353 1630.812988 1620.064575 1616.163696 1612.942993 1609.598022 1605.595581 1614.916016 1621.238281 1619.675293 1609.517822 1619.129028 1635.560425 1647.204834 1662.947754 1673.263306 1657.744629 1645.374756 1635.46936 1625.335449 1611.843994 1615.888916 1619.482178 1627.589111 1635.998169 1638.863892 1643.62915 1648.198608 1653.020874 1657.970947 1662.149414 1666.991333 1670.932983 1680.621704 1685.534058 1683.025635 1682.051514 1678.932617 1688.329224 1704.6427 1710.401978 1702.685181 1696.810791 1700.743652 1703.987305 1705.229248 1710.853149 1718.344482 1721.38147 1722.911743 1723.130737 1722.795044 1721.415039 1719.693481 1719.787354 1719.830444 1718.354736 1717.583984 1717.946899 1715.230347 1712.148071 1711.009521 1710.66333 1709.317139 1709.695068 1709.517334 1708.685181 1708.706177 1708.770874 1708.055786 1706.229004 1706.647095 1708.686523 1709.833496 1711.268555 1713.501587 1716.770996 1719.488525 1721.27478 1721.27124 1716.897095 1711.201172 1706.240967 1702.172485 1699.08606 1698.090454 1695.505981 1690.963501 1687.650879 1685.516846 1680.390137 1669.864624 1658.731934 1645.673584 1636.211792 1629.09668 1624.856567 1621.52832 1610.664429 1597.055176 1584.176392 1582.850952 1583.064575 1579.846802 1581.452515 1581.169312 1576.10376 1564.276367 1557.751709 1553.338379 1554.136108 1557.046387 1558.20166 1558.985718 1558.022461 1557.014038 1563.672729 1566.259277 1563.736572 1563.881348 1564.287354 1562.148804 1561.248535 1560.981079 1558.074707 1553.38623 1549.401367 1545.525391 1539.14502 1529.82312 1521.076538 1514.279663 1509.746338 1517.373657 1525.085083 1526.302124 1523.616577 1522.478516 1517.687012 1512.742188 1508.894897 1511.452881 1522.239624 1532.009277 1540.914795 1555.931519 1575.238403 1588.131958 1587.187988 1576.082397 1564.816895 1555.787109 1547.029907 1545.765869 1558.032227 1568.646362 1578.555298 1591.994141 1606.4729 1618.598511 1635.556519 1652.325562 1657.953979 1647.223633 1633.923706 1622.696533 1610.860352 1598.327148 1587.025879 1574.96228 1559.10437 1561.915894 1563.394531 1561.723267 1558.970459 1568.653809 1575.791748 1580.1073 1590.176147 1607.439819 1626.233032 1634.7229 1627.180908 1622.266235 1612.023071 1607.787964 1602.28125 1595.477539 1586.616943 1579.142578 1569.174927 1568.022949 1572.075439 1575.806274 1575.051758 1573.418457 1574.955811 1575.19043 1574.413086 1570.581055 1564.515869 1556.147949 1550.847534 1545.770752 1536.772949 1526.922729 1513.223267 1518.536865 1510.236816 1493.857178 1483.077271 1476.182373 1471.035156 1462.248535 1448.123291 1442.78894 1438.461548 1430.864502 1430.659424 1422.274414 1415.879028 1413.455322 1413.021484 1414.092041 1414.193604 1415.518066 1414.512939 1406.596802 1410.744385 1412.207275 1418.717896 1418.89978 1419.337646 1416.197021 1415.962769 1416.513062 1414.415649 1409.123169 1404.970825 1397.342285 1391.046631 1386.728271 1385.673218 1384.445923 1380.953613 1380.581787 1382.02124 1384.107056 1389.883667 1415.73584 1440.451904 1453.107178 1456.846436 1462.275635 1465.890259 1469.785889 1473.339355 1471.604248 1472.641968 1478.73877 1489.624756 1504.966797 1515.110474 1524.630615 1534.041626 1540.648804 1548.158569 1561.818359 1576.791382 1604.639771 1579.212646 1560.419312 1546.302856 1533.261719 1528.01416 1524.900024 1513.005859 1498.841553 1478.938843 1460.296265 1445.407837 1430.379639 1422.859619 1417.660278 1411.450317 1421.414307 1436.271851 1449.83667 1460.54895 1476.980957 1493.768188 1508.253174 1527.55603 1546.431641 1561.875488 1575.060303 1581.9021 1585.661377 1587.418945 1587.532349 1583.223145 1574.864624 1565.765259 1553.518188 1537.695801 1525.410767 1515.881836 1505.780884 1496.840698 1489.079956 1486.136963 1492.719482 1502.271729 1513.849121 1522.833008 1532.102783 1538.928955 1541.583862 1539.742188 1529.798828 1528.185913 1531.971069 1537.177124 1547.814575 1555.858398 1559.395386 1559.045898 1553.282104 1546.338745 1538.648071 1529.358765 1523.472412 1521.096069 1515.655151 1507.263794 1496.470337 1486.641968 1482.450684 1489.310547 1491.322144 1485.767456 1480.530273 1482.125122 1485.527466 1490.896729 1496.154663 1499.747559 1501.89209 1505.700439 1507.059814 1508.22998 1508.884521 1509.727905 1510.495239 1510.673706 1510.687866 1510.831665 1510.876343 1510.866455 1507.512451 1498.200073 1488.752808 1479.955933 1473.551514 1468.087646 1462.083984 1451.876709 1449.661255 1452.891724 1462.212769 1467.492676 1472.394287 1479.583984 1490.298218 1502.283569 1514.933594 1526.253906 1536.123901 1545.977173 1556.145752 1563.593506 1568.97937 1577.503662 1585.994751 1595.17041 1604.970947 1613.852051 1620.383423 1616.317261 1608.390747 1599.444458 1591.744141 1584.129883 1578.045776 1572.148071 1563.885376 1555.957397 1544.634155 1532.926636 1523.347534 1512.659058 1516.064453 1522.002441 1531.438965 1541.171143 1548.211304 1554.613403 1559.999878 1563.418213 1564.271362 1560.547729 1550.461304 1542.466675 1532.039795 1521.17334 1511.880737 1497.585205 1485.710327 1470.958618 1458.918701 1450.568726 1439.819092 1427.102539 1414.053711 1402.899414 1392.436401 1383.815063 1378.307373 1381.707153 1391.134033 1403.129272 1409.785645 1418.473999 1426.819092 1438.786133 1444.998779 1438.090088 1421.266602 1397.787964 1386.793579 1392.140137 1397.818726 1401.014282 1411.73645 1422.623535 1442.506836 1452.529541 1457.665039 1457.490479 1458.938843 1459.254028 1453.199219 1461.870117 1478.767578 1488.164062 1489.821411 1487.290039 1483.712036 1480.209351 1481.600098 1482.00354 1480.365234 1477.628662 1470.080444 1460.599976 1453.296997 1452.744751 1467.668335 1479.848022 1483.032104 1482.307007 1480.731323 1478.599976 1476.207397 1473.016235 1465.529785 1458.033691 1450.157227 1445.130737 1448.144165 1458.628906 1467.038818 1472.666382 1475.700317 1468.077026 1456.960815 1443.072998 1431.187378 1419.129395 1405.508667 -1604.155518 1584.924561 1560.772339 1544.230713 1565.018311 1582.950806 1594.46936 1611.5625 1624.815186 1649.881592 1680.040405 1703.897705 1718.821777 1734.640747 1749.270386 1754.84375 1756.770264 1759.332153 1768.68457 1783.323608 1797.709106 1793.935059 1773.588501 1759.167725 1744.608765 1735.665405 1728.574585 1717.513916 1704.374512 1692.33606 1694.130859 1707.978149 1713.644653 1713.585205 1708.113037 1701.502197 1693.328247 1685.457642 1678.722412 1674.098877 1675.090942 1686.834351 1703.937256 1720.247314 1731.376709 1743.472168 1749.243164 1750.077515 1743.317017 1735.387085 1738.363037 1743.553955 1746.975952 1756.466431 1761.49292 1767.973022 1763.297607 1753.817993 1747.05835 1745.129272 1736.12915 1725.871948 1717.482666 1723.178345 1740.295288 1734.23877 1717.111816 1713.500488 1724.314575 1731.608887 1742.993774 1754.255371 1759.236694 1756.965942 1751.172119 1745.347534 1741.384277 1737.770752 1733.734985 1730.504761 1727.1521 1726.49353 1726.613647 1726.298706 1718.105591 1706.029175 1695.648926 1702.814453 1720.652588 1739.758667 1747.146484 1746.561768 1738.375 1729.0802 1716.194946 1711.064087 1723.361084 1733.597412 1743.226318 1747.790771 1748.364746 1746.704956 1746.1073 1741.03418 1730.590942 1721.904419 1716.091187 1708.619629 1708.347534 1702.857544 1702.414795 1709.758179 1707.332153 1697.925903 1685.456543 1674.62085 1673.779297 1680.29187 1674.269043 1659.957764 1642.72522 1632.088501 1624.394531 1618.29541 1612.818726 1609.217529 1607.077271 1617.567993 1628.845825 1634.904541 1628.796143 1616.149414 1617.453369 1633.913574 1648.97876 1665.257202 1676.007568 1668.319702 1655.646362 1645.50647 1634.98999 1622.122681 1614.520508 1617.607666 1620.525757 1625.974609 1628.766235 1632.395996 1638.028687 1644.956543 1647.994019 1652.240723 1657.088989 1662.557495 1670.214111 1673.244751 1672.629517 1669.041748 1680.281372 1695.396973 1707.208008 1706.883667 1694.832275 1691.896118 1695.403809 1699.093506 1704.237915 1710.036255 1716.265259 1720.294678 1723.483765 1724.218018 1724.040894 1723.283447 1722.1427 1721.405884 1720.954346 1716.99939 1710.81897 1707.648682 1708.395996 1710.293091 1710.727661 1709.973633 1707.190186 1707.783325 1708.699097 1705.677979 1708.449951 1709.357422 1709.161621 1708.669434 1708.946655 1709.691895 1710.165527 1711.593994 1714.092896 1717.891235 1721.14978 1721.190308 1721.287476 1716.733154 1710.825195 1705.543335 1699.610229 1697.194336 1695.900391 1692.941284 1689.048584 1686.509277 1685.715332 1678.868652 1666.318481 1651.809692 1640.484741 1631.987183 1622.356201 1615.13208 1607.96106 1598.275635 1587.927002 1576.003418 1571.31311 1570.244995 1569.016479 1569.34021 1565.2052 1560.504883 1557.110474 1556.901978 1559.626587 1564.845459 1570.901367 1573.828979 1573.799805 1569.137329 1568.71582 1577.255371 1577.441772 1576.162109 1574.983154 1572.748657 1570.813721 1570.118774 1568.771118 1566.123901 1562.078613 1557.676025 1551.820312 1543.503906 1531.601196 1522.503784 1518.318848 1515.136841 1508.240112 1509.698608 1514.359741 1515.478394 1513.97168 1510.682739 1507.923828 1506.504395 1509.853271 1515.234375 1521.498291 1539.021973 1555.264282 1575.530884 1588.67041 1583.712158 1574.433594 1565.45105 1556.24292 1546.131226 1544.025879 1553.025146 1563.382568 1577.103271 1590.141602 1605.353027 1618.547607 1636.625977 1651.162964 1653.51123 1645.016479 1629.913452 1618.111572 1605.026123 1592.95105 1581.933716 1568.878418 1551.248535 1553.909668 1555.729858 1551.732422 1553.494507 1561.890747 1569.282227 1576.406738 1593.403809 1606.637451 1622.6698 1634.912231 1621.291626 1616.273071 1606.562622 1596.122803 1591.448242 1585.446045 1578.348022 1570.973267 1562.56958 1561.498535 1561.837646 1568.950684 1570.380981 1572.340332 1574.888916 1574.711792 1575.344849 1574.115967 1569.65332 1564.791626 1563.369385 1557.141479 1546.523682 1535.668823 1532.679321 1533.975708 1523.822021 1502.988647 1497.843018 1489.268677 1480.523315 1470.726929 1463.002563 1459.164062 1446.827759 1447.072632 1438.56189 1432.291504 1427.26709 1421.994263 1423.456299 1415.422974 1416.177612 1414.604736 1410.1521 1404.193604 1402.253174 1400.997925 1403.390625 1409.092285 1411.982422 1409.372192 1407.474609 1407.522705 1406.75 1401.12085 1398.159424 1392.973755 1387.712036 1385.731812 1385.069824 1384.13208 1380.839355 1380.574951 1382.977417 1383.982056 1393.634766 1422.252686 1449.722656 1454.62854 1458.516479 1463.299072 1467.884277 1472.750854 1477.031006 1479.858887 1482.779907 1488.677124 1497.377563 1504.918457 1514.103027 1521.724609 1532.721802 1541.359131 1552.226562 1569.852905 1592.088257 1600.096191 1579.841431 1560.5802 1547.364258 1536.272095 1530.994263 1525.976318 1512.749512 1500.615356 1480.437866 1463.307251 1446.11438 1433.712158 1423.606323 1415.951904 1412.817139 1420.783569 1433.545654 1448.623901 1459.149658 1474.537109 1491.392334 1505.168823 1519.067261 1534.270874 1545.540527 1556.77002 1567.977783 1577.095825 1580.718994 1582.421021 1580.305298 1575.080322 1566.403809 1554.814209 1537.526978 1526.047485 1516.611084 1507.534302 1499.26062 1491.126709 1487.642212 1493.917969 1503.068359 1514.173828 1523.229736 1532.839722 1541.187988 1547.97583 1548.174316 1540.485229 1535.779785 1540.622681 1544.086426 1551.061646 1562.691162 1565.906494 1565.040405 1560.114746 1552.503296 1546.017944 1540.280884 1533.866943 1526.042236 1518.898193 1508.90625 1495.139648 1486.171143 1491.176147 1498.864014 1499.515747 1491.456421 1486.731934 1489.667603 1492.070557 1498.550659 1503.47168 1507.615234 1511.486694 1517.0 1518.658447 1519.65686 1520.451172 1521.506836 1523.352661 1524.266724 1525.22229 1524.569946 1523.634033 1519.782837 1511.042358 1500.637329 1489.966797 1479.059082 1472.598145 1466.679077 1458.886475 1450.903931 1451.061279 1458.215454 1465.610718 1469.829102 1474.335815 1485.746094 1497.450195 1509.983032 1520.027954 1532.416016 1544.990112 1556.588623 1565.589111 1571.429443 1575.776855 1581.803833 1587.19397 1594.364746 1601.774414 1608.359131 1613.020874 1612.506592 1605.643311 1596.678833 1588.098999 1580.953613 1574.500488 1565.69519 1559.854004 1550.82019 1541.047485 1534.076782 1524.242676 1521.211304 1527.083374 1533.030273 1541.263794 1549.513794 1557.352783 1564.057983 1570.227661 1570.46167 1564.661499 1557.091919 1545.979736 1537.317261 1525.016235 1514.217285 1501.573486 1488.603516 1476.057129 1463.87561 1451.901123 1443.754395 1432.591187 1418.697876 1406.774536 1396.413696 1388.185425 1383.300049 1384.326782 1394.243408 1401.948975 1411.831055 1422.312744 1432.327271 1440.61084 1449.933716 1449.343262 1434.272217 1416.629639 1392.560303 1391.552246 1399.692383 1408.603271 1415.782227 1419.001221 1420.315186 1428.082031 1447.250732 1459.584106 1466.188599 1467.557007 1472.03064 1470.270386 1463.767334 1477.853149 1488.562012 1491.771729 1491.343994 1488.249268 1485.612061 1485.850586 1485.096924 1481.820923 1477.950806 1470.568115 1462.759766 1459.13916 1457.376953 1468.034912 1480.632568 1488.134155 1487.796875 1484.931641 1481.999146 1478.807129 1472.262573 1463.109009 1460.030273 1456.049561 1448.951538 1450.983643 1461.709229 1469.976196 1476.271606 1476.971558 1466.439941 1452.795654 1437.502808 1427.490845 1413.876587 1401.396362 +NCOLS 611 +NROWS 446 +XLLCORNER 590310.0 +YLLCORNER 4914270.0 +CELLSIZE 30.0 +NODATA_VALUE -9999 +1095.172363 1095.546875 1095.806274 1096.040039 1096.100342 1096.373413 1096.741089 1097.159912 1097.883911 1098.542114 1099.082031 1099.360596 1099.557861 1099.715576 1099.7771 1100.104126 1100.623779 1101.188599 1101.920044 1102.695679 1103.609131 1104.435425 1105.321899 1106.204468 1107.048584 1107.990112 1108.820068 1109.640991 1110.856934 1112.417358 1113.867676 1115.546753 1117.732666 1120.108276 1121.867188 1123.802246 1125.272217 1126.844482 1128.707031 1130.589478 1132.137695 1132.934814 1134.506104 1136.941162 1139.794922 1142.093872 1144.509888 1149.543457 1157.48584 1164.46521 1169.712036 1174.21521 1180.037354 1190.238892 1203.616821 1217.396729 1224.419434 1226.6698 1228.449829 1226.588501 1219.773071 1222.678589 1226.719971 1223.166016 1222.198975 1237.053955 1246.560181 1247.0802 1244.123291 1240.102051 1245.019775 1246.843506 1253.254517 1260.290039 1264.511597 1267.026001 1267.403687 1266.057495 1263.580566 1257.489014 1245.803345 1246.072388 1245.141113 1236.123047 1223.330322 1221.803833 1222.341431 1218.349976 1214.708618 1210.964722 1206.628784 1200.388428 1197.589355 1195.441162 1187.49939 1185.246216 1179.417969 1172.025757 1160.204468 1153.933472 1149.087158 1145.499756 1145.47644 1146.17334 1142.504517 1135.393555 1133.408936 1136.716797 1147.702515 1154.48999 1160.359009 1163.407227 1165.002075 1167.44397 1168.422485 1162.951416 1154.633423 1145.694458 1141.020874 1136.167603 1131.814209 1135.05896 1133.275513 1130.722412 1129.044067 1133.269409 1139.770996 1147.666748 1150.131104 1152.930176 1155.202881 1156.44873 1156.955444 1157.845459 1159.706665 1164.116821 1168.262573 1170.672852 1171.038818 1171.644653 1171.925293 1172.385498 1173.68042 1174.502441 1176.040039 1178.872681 1182.169312 1183.889648 1184.32959 1184.423218 1183.922363 1182.949219 1181.584351 1179.184937 1177.498413 1176.08374 1175.141113 1174.797119 1174.741089 1174.97583 1175.462891 1176.002441 1176.661865 1177.413818 1178.187134 1178.85022 1179.589233 1180.161133 1180.69751 1181.27002 1181.870728 1182.337646 1182.973511 1183.208008 1184.518188 1184.928223 1184.915771 1184.338623 1183.722656 1184.045288 1184.835205 1184.503174 1183.737427 1182.998169 1182.826904 1182.524048 1182.018066 1182.663452 1184.369873 1184.345703 1183.196899 1182.246338 1181.996582 1182.228882 1181.70813 1181.087524 1181.254028 1181.658447 1181.595947 1181.141724 1180.867798 1180.61145 1180.04187 1179.267212 1178.417969 1177.746704 1177.201782 1177.105225 1177.463257 1178.413086 1181.077759 1183.515259 1181.569702 1176.064453 1172.762451 1171.008179 1169.293701 1167.524292 1166.103882 1164.928711 1164.055176 1163.284424 1162.559692 1162.022095 1161.607788 1160.650024 1159.449829 1158.489746 1158.375366 1158.302856 1158.250122 1158.174805 1157.745361 1156.727051 1155.762085 1154.913086 1153.898071 1153.03894 1152.322632 1151.669189 1151.019287 1150.391113 1149.787964 1149.217285 1148.727051 1148.160034 1147.760254 1147.70459 1147.577026 1147.42688 1147.382935 1147.316528 1147.401733 1147.389526 1147.201904 1147.140259 1146.811401 1146.599731 1146.489624 1146.535889 1146.606934 1146.875122 1147.083496 1147.241211 1147.660156 1148.159546 1148.399902 1148.575195 1148.467407 1148.320679 1148.272705 1148.61438 1149.508911 1150.68396 1151.952881 1153.435059 1154.991333 1156.490601 1157.324097 1157.670654 1158.45166 1163.283936 1168.500366 1173.719971 1181.475342 1187.868042 1192.800659 1196.092651 1196.292358 1195.510498 1193.083862 1190.414795 1188.767578 1187.971069 1185.748901 1181.887085 1171.787231 1175.537354 1181.022949 1181.387939 1181.674194 1185.667969 1191.981812 1195.203003 1200.113892 1207.515381 1212.860474 1218.425293 1221.818726 1222.623291 1220.825317 1219.104126 1218.415527 1217.213623 1216.369263 1214.945312 1214.725464 1214.064575 1212.53894 1211.264893 1210.785889 1209.689697 1209.015137 1208.701538 1207.119019 1202.601929 1195.741455 1190.729004 1185.046631 1178.339111 1170.864014 1160.482544 1153.943237 1148.917358 1147.145996 1145.092529 1143.510498 1139.412109 1136.910522 1135.005371 1134.697998 1133.96936 1132.608643 1130.547974 1128.717285 1127.155029 1125.65271 1124.04248 1122.502563 1121.665161 1121.144043 1120.794067 1120.316162 1119.846191 1119.351807 1118.589478 1117.817993 1117.063477 1116.440674 1115.697388 1114.993774 1114.343628 1113.752319 1112.95874 1112.340576 1111.916504 1111.366455 1110.882202 1110.609741 1110.777954 1110.803223 1110.876343 1111.07605 1111.262695 1111.388062 1111.338989 1111.343628 1111.18811 1110.997314 1110.722778 1110.422363 1110.126831 1109.548828 1108.174561 1106.535889 1104.606445 1102.939941 1101.787231 1102.066284 1102.113647 1102.12085 1102.225098 1102.342651 1102.537598 1102.918213 1103.327393 1103.908447 1104.510376 1105.103638 1105.790283 1106.505249 1107.297852 1108.130127 1108.960205 1109.794678 1109.703003 1107.868896 1106.227783 1105.564331 1106.19812 1109.16626 1111.839233 1116.112427 1122.172852 1121.907349 1119.766724 1119.635376 1121.309082 1121.937256 1122.113892 1131.297363 1136.14917 1138.5802 1140.734009 1147.270874 1150.181519 1149.099365 1148.913086 1152.14917 1161.015991 1171.694824 1181.081665 1186.315063 1188.014648 1182.594604 1180.400635 1182.091064 1189.977295 1196.286377 1202.676147 1214.36438 1223.523193 1223.047119 1221.258911 1216.505737 1210.901001 1208.402466 1204.637817 1201.330566 1198.281738 1192.038208 1204.554443 1214.732544 1227.229004 1235.41687 1236.935303 1236.627563 1236.453613 1235.95105 1234.824097 1233.928589 1232.891846 1228.006104 1221.196045 1216.071167 1211.737061 1208.580566 1199.168335 1191.071045 1176.114502 1171.015137 1161.225952 1157.743164 1158.338013 1158.217773 1154.94812 1149.897949 1146.150024 1145.385864 1144.688965 1141.890137 1138.381592 1136.322876 1135.533203 1134.437012 1133.133911 1131.552856 1129.880127 1128.412964 1127.163452 1126.072144 1124.922241 1123.715088 1122.403442 1121.026978 1119.948853 1118.875366 1117.889648 1116.805786 1115.727661 1114.821411 1113.727539 1112.69519 1111.64502 1110.442139 1109.004883 1107.905396 1107.006836 1106.307861 1104.661011 1108.35376 1111.33313 1113.080811 1114.696777 1116.239136 1117.250854 1117.852661 1118.674561 1119.665283 1121.252075 1122.280518 1122.3479 1121.742432 1120.432617 1119.745972 1119.615479 1120.219727 1120.723877 1119.903442 1118.537231 1116.945435 1115.533325 1114.092407 1112.881958 1111.898193 1111.736694 1112.154541 1112.675171 1113.142456 1113.607666 1114.168457 1115.083862 1116.135376 1117.532715 1119.157227 1121.140747 1122.277954 1122.348511 1122.234985 1122.203369 1122.054199 1122.391846 1123.621094 1125.041382 1126.413574 1128.248657 1129.973145 1131.443848 1132.65564 1133.317871 1135.047241 1137.221313 1138.859741 1141.95752 1145.475098 1147.430664 1148.610107 1147.051636 1145.868408 1156.339966 1167.081177 1174.663452 1180.866577 1184.948242 1187.163208 1193.221436 1196.467896 1197.767822 1194.528687 1184.011719 1171.950684 1163.036011 1161.045532 1159.003662 1157.190918 1162.282349 1165.635864 1164.214233 1158.958618 1151.425537 1141.924561 1131.445068 1135.808472 1146.690796 1149.347534 1152.023926 1159.729614 1173.684448 1181.821167 1181.728271 1170.703003 1165.660034 1162.532837 1160.925293 1159.181763 1155.205078 1151.291992 1148.336182 1148.034912 1147.66687 1143.21228 +1095.746704 1096.073975 1096.360596 1096.617798 1096.693726 1096.782593 1097.021973 1097.300781 1097.864502 1098.578491 1099.199707 1099.550049 1099.935181 1100.111816 1100.31604 1100.716309 1101.366577 1101.899048 1102.462036 1103.148193 1103.929077 1104.801758 1105.631348 1106.344116 1107.201538 1107.946533 1108.741577 1109.520996 1110.37793 1112.007324 1113.671509 1115.527832 1117.644653 1119.67749 1121.411133 1122.89978 1124.369507 1125.484741 1127.148804 1128.659546 1130.103882 1131.458008 1132.69165 1134.216431 1137.459229 1140.160156 1142.653442 1145.506104 1150.37207 1155.018311 1159.919312 1165.190552 1172.88147 1178.554199 1188.835327 1199.81604 1213.87207 1220.310791 1224.089478 1229.319336 1230.796631 1231.208984 1233.975952 1235.900269 1239.689087 1246.873535 1251.787598 1251.780396 1249.950439 1246.445923 1251.86792 1257.633911 1259.240967 1264.925415 1269.722656 1272.25708 1272.63208 1272.088379 1269.516968 1263.168457 1257.5354 1258.021729 1254.09314 1243.772827 1232.139038 1228.083008 1223.600586 1219.068604 1211.86145 1205.991211 1198.959473 1195.150024 1192.731689 1188.437378 1182.184326 1180.713623 1179.020142 1172.400513 1160.185547 1151.28894 1146.489136 1146.799805 1153.601685 1153.86084 1148.362549 1141.313965 1137.525391 1133.376465 1139.327759 1145.7052 1155.02832 1160.762695 1164.460327 1167.55127 1171.037476 1172.504761 1165.738037 1157.676392 1147.584839 1142.838379 1135.525757 1134.190186 1136.217285 1136.181274 1136.307617 1130.515137 1135.78418 1145.992676 1148.685791 1150.322388 1151.645142 1153.270874 1156.129395 1159.415161 1162.451782 1165.492432 1169.373901 1171.120728 1171.199097 1171.083496 1170.514404 1170.450439 1171.23938 1171.427979 1170.802002 1174.407593 1180.719482 1183.181274 1184.419678 1184.563354 1184.325928 1183.801392 1182.91333 1180.34314 1178.604614 1177.26001 1176.356567 1175.945679 1175.882568 1176.003174 1176.37085 1176.717407 1177.080933 1177.47583 1177.973633 1178.470337 1179.028564 1179.606567 1180.27002 1180.966675 1181.516235 1182.054321 1182.669922 1183.078491 1183.435791 1183.539185 1183.25708 1182.902344 1182.442261 1182.615234 1183.097168 1182.834106 1182.370605 1181.762451 1181.360718 1181.094482 1180.869385 1181.331177 1182.363159 1182.2146 1181.441406 1180.68335 1180.461548 1180.299194 1179.871582 1179.536377 1179.555176 1179.709229 1179.646851 1179.250488 1178.855469 1178.568359 1178.065063 1177.612671 1176.995728 1176.319946 1175.933228 1175.926636 1176.562012 1178.547241 1183.103027 1183.882324 1183.353027 1178.755249 1174.893066 1172.411011 1170.163696 1167.50354 1165.098633 1163.619019 1162.55896 1161.893799 1160.729126 1160.159058 1159.989624 1159.015015 1157.53418 1156.568848 1156.210449 1155.960693 1155.884277 1155.880249 1155.547974 1155.062378 1154.570068 1153.915405 1152.75647 1151.966553 1151.397705 1151.074707 1150.698486 1150.190796 1149.719116 1149.031128 1148.604614 1148.267456 1148.199463 1148.133789 1148.014404 1147.91748 1147.893188 1147.817017 1147.674438 1147.620483 1147.540405 1147.286621 1146.966797 1146.610718 1146.494873 1146.547485 1146.86438 1147.287109 1147.53125 1147.734619 1148.290161 1148.651733 1148.852905 1149.14978 1149.222534 1149.366333 1149.467407 1150.330078 1151.333618 1152.480591 1153.474854 1154.706421 1156.530029 1158.378296 1159.532959 1159.546631 1159.961792 1164.331665 1170.208984 1175.447388 1183.326782 1189.141602 1196.016968 1197.741455 1197.894409 1197.804077 1195.801514 1193.176758 1192.396851 1190.614502 1186.011597 1181.023071 1181.062744 1187.251343 1189.38916 1188.0896 1184.53418 1183.529541 1194.406372 1198.62085 1202.306274 1208.275024 1215.25647 1221.205444 1225.020264 1226.614746 1225.035522 1221.940674 1220.644897 1219.948608 1219.808594 1219.541626 1219.820557 1219.101929 1218.159912 1216.1521 1212.706909 1208.152588 1205.822266 1203.709961 1201.624512 1197.949585 1193.088135 1188.785156 1184.730957 1175.203735 1166.725586 1157.610352 1148.005371 1143.278076 1144.801758 1144.422119 1140.393188 1138.092529 1136.547119 1135.165405 1134.853271 1134.79895 1133.486328 1131.429688 1129.560791 1127.870728 1126.226685 1124.520752 1122.995605 1121.841187 1121.466309 1121.195068 1120.959106 1120.447632 1119.749756 1118.929321 1118.121948 1117.527832 1116.758545 1116.002563 1115.268799 1114.597778 1113.901733 1113.170776 1112.554443 1112.092041 1111.648438 1111.285767 1111.062622 1110.967529 1111.075073 1111.210938 1111.285156 1111.520508 1111.587891 1111.465454 1111.319214 1111.174561 1110.883667 1110.54187 1110.219971 1109.753174 1108.41272 1107.077026 1105.523804 1103.926514 1102.560425 1102.205688 1102.522339 1102.797241 1102.961182 1103.045776 1103.257324 1103.577271 1103.968018 1104.453125 1104.929932 1105.441895 1106.045166 1106.659302 1107.480103 1108.329224 1109.221558 1110.009644 1110.909302 1111.10144 1110.769043 1109.29541 1108.071777 1107.322266 1106.799683 1107.549194 1112.232178 1120.014404 1122.446045 1119.237061 1117.842163 1118.585083 1119.61792 1121.447388 1126.262085 1130.589722 1131.758179 1132.990601 1139.186157 1140.650024 1138.776611 1144.229492 1151.806885 1161.096802 1169.734375 1176.341675 1179.662476 1180.411743 1177.471313 1168.990234 1173.907104 1181.688843 1188.174805 1194.995117 1206.104248 1219.696655 1223.680542 1223.381104 1221.613159 1217.940796 1213.557373 1208.480957 1204.320923 1201.903442 1197.266968 1197.734863 1214.450195 1225.529541 1233.167358 1235.476562 1235.503662 1236.270508 1236.832397 1236.132324 1235.764648 1235.143921 1232.714355 1227.180542 1221.864624 1215.664185 1207.297119 1194.236572 1180.279541 1166.714355 1162.407837 1166.130127 1166.553101 1164.229858 1159.076172 1157.180176 1155.075928 1150.564209 1148.888184 1147.133301 1145.021973 1140.694946 1137.785767 1136.329834 1135.475586 1133.890747 1132.107056 1130.480957 1129.099243 1127.725586 1126.451172 1125.096191 1123.601318 1122.135864 1121.045166 1120.157959 1119.237915 1118.238037 1117.040771 1116.015747 1115.052734 1113.966064 1112.912598 1111.488892 1109.97937 1109.950684 1109.033325 1108.332397 1109.67981 1106.187622 1108.338867 1111.113037 1113.977417 1117.821777 1120.328247 1119.781128 1119.587158 1119.685425 1119.999756 1121.194946 1122.279297 1122.403564 1122.232178 1121.285522 1120.485474 1120.626953 1122.29834 1122.232544 1121.228516 1119.621704 1117.831543 1116.230591 1114.758423 1113.716553 1113.16687 1113.14856 1113.617188 1113.930664 1114.039673 1114.145752 1114.476685 1115.039185 1115.96521 1117.094116 1118.674561 1120.428833 1121.974854 1122.269653 1122.347168 1122.224243 1122.228027 1122.144287 1122.875732 1124.567749 1126.227905 1127.740356 1129.366333 1130.735718 1131.918091 1132.826172 1133.772583 1134.494873 1134.798096 1138.848389 1143.024292 1144.754517 1145.373047 1146.345825 1149.533569 1155.974609 1166.616211 1174.752075 1183.738281 1187.684082 1192.968262 1195.761841 1195.254883 1196.769653 1197.879272 1189.983521 1176.836548 1168.842163 1167.103882 1165.08667 1165.733032 1171.471069 1171.749634 1168.974487 1163.539429 1157.747681 1147.919067 1132.814941 1138.938354 1149.426147 1155.080322 1157.617676 1162.214233 1172.111816 1179.548096 1177.651733 1167.858765 1161.442749 1156.976929 1156.323608 1149.184814 1144.670776 1144.346436 1138.526489 1134.538818 1132.499878 1131.463867 +1096.367188 1096.740845 1096.978394 1097.174194 1097.21167 1097.378296 1097.365479 1097.48291 1097.920166 1098.633179 1099.323486 1099.764526 1100.151367 1100.515015 1100.869995 1101.322998 1101.915283 1102.582886 1103.125488 1103.7323 1104.404297 1104.996216 1105.764038 1106.570679 1107.308228 1107.99353 1108.602173 1109.316895 1110.00293 1111.458374 1113.262695 1115.295898 1117.277344 1119.076416 1120.488892 1121.59021 1122.669556 1123.841431 1125.298462 1127.109741 1128.843872 1130.584595 1132.316772 1134.234253 1136.722778 1138.904297 1141.314697 1143.640869 1145.236572 1147.169312 1152.362427 1157.910645 1166.036377 1168.464355 1177.231079 1186.489746 1198.964355 1209.123047 1218.524902 1228.914062 1232.837524 1237.2146 1241.797729 1249.144531 1255.690186 1259.381592 1259.252563 1256.807983 1258.155273 1258.555786 1259.141724 1265.216431 1267.35144 1270.408691 1276.230957 1278.919434 1279.395386 1278.688721 1275.195679 1269.441284 1264.206543 1260.634155 1256.913818 1244.806396 1235.802368 1229.216064 1223.289673 1217.812134 1209.250488 1197.733643 1193.75708 1189.01001 1180.87085 1180.028076 1175.679688 1169.104248 1169.709961 1162.733398 1154.150635 1146.150391 1147.841309 1162.174438 1166.932617 1161.697266 1149.603027 1145.059326 1145.582153 1137.664062 1136.378662 1142.486694 1148.420166 1156.531494 1161.312378 1165.924683 1170.262329 1173.286499 1171.36853 1164.804688 1161.004883 1153.697632 1144.714111 1135.287598 1136.369263 1140.640869 1141.754883 1139.304321 1132.598267 1132.255249 1139.14624 1147.920898 1147.312744 1150.068359 1155.125732 1159.730103 1162.012451 1164.687744 1168.244873 1170.947144 1171.078247 1170.665283 1168.679443 1168.870483 1169.555054 1170.315063 1171.088623 1174.470215 1179.173096 1182.087036 1183.908081 1184.40564 1184.230225 1183.813965 1183.244019 1181.446411 1179.722534 1178.365479 1177.571289 1177.14209 1177.071045 1177.151489 1177.396362 1177.477295 1177.570068 1177.671997 1177.862793 1178.243408 1178.697266 1179.189209 1179.81665 1180.463135 1180.950317 1181.506714 1181.893921 1182.267944 1182.418579 1182.371582 1182.135986 1181.84668 1181.672241 1181.509888 1181.534302 1181.494385 1181.091187 1180.64563 1180.09436 1179.821167 1179.737915 1179.988281 1180.311279 1180.204712 1179.564209 1179.081421 1178.812012 1178.588501 1178.1604 1177.854858 1177.738281 1177.832886 1177.718872 1177.284912 1176.937622 1176.658447 1176.27063 1175.837769 1175.383179 1175.074219 1174.661743 1174.389282 1174.926392 1177.330566 1182.915527 1182.687012 1180.509155 1177.713867 1174.56311 1172.110962 1170.279541 1166.446289 1163.424683 1161.919556 1161.347412 1160.476807 1159.341553 1158.277832 1157.528931 1156.246582 1155.649902 1155.515015 1155.13208 1154.685791 1154.138916 1153.823486 1153.761719 1153.502686 1153.311523 1152.829102 1151.875854 1151.47876 1151.178345 1150.760498 1150.442261 1150.015869 1149.620239 1149.269287 1148.764771 1148.666992 1148.628418 1148.567383 1148.421387 1148.334229 1148.298584 1148.190674 1147.980347 1147.781738 1147.721313 1147.418091 1147.055054 1146.708374 1146.586304 1146.745972 1147.248779 1147.751343 1148.026611 1148.294678 1148.683594 1149.186646 1149.450562 1149.852295 1150.207275 1150.414795 1151.03186 1152.148315 1153.397461 1154.534302 1155.190308 1155.975342 1157.32959 1159.228516 1160.76709 1161.614136 1163.090088 1166.02832 1169.699463 1174.646729 1180.321045 1184.056396 1191.856567 1196.062744 1198.312988 1199.169434 1197.664551 1195.758789 1196.641724 1193.808716 1186.819214 1182.137695 1186.876099 1197.585693 1197.872681 1195.36377 1189.741333 1187.070312 1197.990479 1203.102417 1206.62915 1210.564331 1217.937866 1223.537842 1229.019043 1231.098755 1231.24292 1230.299805 1229.151611 1228.961182 1229.569458 1230.928711 1230.774902 1228.957886 1222.146118 1218.864258 1213.690552 1209.429199 1202.519165 1197.035156 1195.795532 1192.023193 1187.501099 1184.660034 1177.667969 1169.43457 1162.66272 1152.186646 1144.762085 1149.036987 1151.694214 1150.969482 1146.388062 1141.835327 1138.404663 1136.043091 1134.349121 1134.377563 1133.580078 1132.083008 1130.349243 1128.680786 1126.922485 1125.232544 1123.635132 1122.444214 1122.163208 1122.084961 1121.932983 1121.044312 1120.125488 1119.273071 1118.570068 1117.917236 1117.080078 1116.28418 1115.505371 1114.829346 1114.099976 1113.413818 1112.82312 1112.310181 1112.050903 1111.685547 1111.454956 1111.269409 1111.200928 1111.436401 1111.496582 1111.623047 1111.723145 1111.597046 1111.360718 1111.067749 1110.771606 1110.385864 1110.109009 1108.785889 1107.031616 1105.686157 1104.312378 1103.092896 1102.323242 1102.638062 1102.990845 1103.302368 1103.598389 1103.752441 1103.971802 1104.498657 1104.948242 1105.327271 1105.822266 1106.2677 1106.812622 1107.403809 1108.017334 1108.928589 1109.783936 1111.116699 1112.092163 1112.377808 1112.415894 1111.68689 1110.443481 1109.996948 1109.513916 1108.404663 1107.323853 1111.543945 1117.504517 1116.442749 1115.99707 1116.771118 1118.13855 1120.493164 1123.166016 1126.029053 1127.771973 1129.849243 1132.980835 1132.775146 1135.514893 1145.221191 1152.134644 1158.177612 1165.572266 1171.822998 1173.815796 1173.846191 1171.597778 1160.375 1165.74707 1172.972656 1179.74353 1187.604126 1199.807251 1214.207153 1223.025513 1224.05188 1223.817261 1222.2229 1219.45105 1213.070801 1208.514038 1206.556152 1201.031128 1196.65918 1209.586426 1220.303101 1225.782471 1227.718872 1228.165161 1231.260132 1235.784912 1236.442627 1236.018433 1235.279297 1234.484009 1230.640259 1223.855957 1214.60022 1203.709106 1187.373535 1173.333618 1180.8927 1182.131104 1176.057129 1173.44873 1160.769409 1158.436401 1161.172485 1161.704346 1157.883667 1151.504761 1148.620605 1145.484741 1139.752075 1136.509277 1135.207886 1134.712646 1133.62207 1132.269531 1131.003418 1129.705566 1128.212646 1126.664917 1125.19104 1123.899292 1122.515137 1121.53479 1120.653564 1119.615845 1118.489014 1117.472778 1116.456665 1115.376831 1114.171875 1113.049927 1111.885254 1110.888062 1110.375122 1109.372925 1109.417114 1110.268921 1108.779541 1107.736084 1111.223633 1114.710693 1120.113281 1122.34082 1122.225464 1121.269043 1120.665283 1120.839844 1121.561401 1122.308228 1122.485596 1122.402954 1122.21582 1121.334106 1121.508057 1122.245972 1122.378418 1122.050537 1120.468872 1118.437378 1116.743164 1115.357666 1114.411133 1114.10791 1114.328369 1114.774536 1115.110596 1115.129883 1114.876465 1114.813843 1115.12207 1115.702881 1116.647339 1117.854004 1119.369263 1120.847046 1121.911865 1122.312744 1122.57019 1122.753784 1122.623535 1122.909302 1124.689575 1126.144775 1127.520264 1128.983154 1130.565674 1132.257568 1133.856079 1134.678223 1135.053345 1135.652588 1138.302979 1142.081177 1144.419434 1146.158936 1151.619141 1160.556152 1166.422729 1170.897095 1173.545044 1182.446777 1186.329468 1191.408081 1192.112549 1191.198242 1194.50647 1197.647827 1197.779297 1186.348633 1177.336304 1174.151611 1172.417236 1170.360474 1173.58728 1174.053589 1171.660156 1165.518311 1157.691162 1146.119629 1141.442505 1148.687378 1155.421387 1161.075317 1163.251465 1167.927734 1171.844604 1175.473877 1171.98877 1168.729614 1163.701538 1160.5448 1159.338135 1154.951416 1149.786987 1147.265991 1141.897461 1137.24707 1134.806396 1132.210327 +1096.927734 1097.414917 1097.546509 1097.642822 1097.727539 1097.826782 1097.890137 1097.716064 1097.943726 1098.614258 1099.385498 1099.981323 1100.493896 1100.89978 1101.302856 1101.851318 1102.453613 1103.166748 1103.749512 1104.276733 1104.884644 1105.53064 1106.191895 1106.845459 1107.59375 1108.207031 1108.772583 1109.264893 1109.731201 1110.950684 1112.972534 1114.928345 1116.789917 1118.412598 1119.605225 1120.514526 1121.263428 1121.924561 1123.292603 1125.94397 1128.202393 1130.17041 1132.018311 1133.828857 1135.783325 1137.948975 1140.964355 1143.031616 1144.716431 1146.312134 1152.537354 1160.419434 1167.144165 1173.545654 1184.731445 1195.612061 1205.663574 1217.813477 1228.187256 1234.348267 1235.07251 1241.554443 1248.297485 1258.007324 1266.524292 1269.303467 1268.58252 1267.642822 1268.121582 1267.335083 1269.493164 1272.181885 1275.457153 1279.744751 1284.970703 1291.710083 1293.164429 1286.296143 1280.659668 1271.971924 1265.023682 1258.732788 1249.973511 1240.422607 1234.01123 1225.787598 1218.381958 1213.001953 1207.57605 1206.756836 1207.354858 1199.891479 1187.591064 1178.880981 1171.24231 1167.19751 1158.94165 1155.698486 1153.413208 1152.160889 1156.263672 1170.037231 1172.912109 1166.167358 1157.343506 1156.832642 1152.529053 1147.03833 1144.933472 1140.720459 1142.348633 1148.495117 1157.53418 1163.53894 1171.264404 1173.318604 1172.136353 1167.719727 1163.731812 1159.109741 1150.40686 1142.363159 1139.497803 1144.26709 1147.506592 1149.12561 1145.30957 1138.577759 1135.412598 1133.360352 1136.933105 1147.367065 1150.590332 1158.269653 1160.350098 1162.617432 1164.273438 1166.99585 1167.546875 1166.815796 1166.351196 1167.486206 1169.389038 1171.3125 1173.086304 1175.301147 1178.343262 1181.672852 1183.651001 1184.391724 1184.069946 1183.516235 1183.266968 1182.195435 1180.784546 1179.648315 1178.762085 1178.351807 1178.12146 1178.127075 1178.103271 1178.083618 1178.047363 1177.942749 1177.923096 1178.194092 1178.479492 1178.914795 1179.327881 1179.853149 1180.353516 1180.732178 1180.922852 1181.064697 1181.163086 1181.026001 1180.921997 1180.797363 1180.619141 1180.469482 1180.350342 1180.066528 1179.832153 1179.408325 1178.897827 1178.634766 1178.530396 1178.475464 1178.591919 1178.450562 1177.87854 1177.524658 1177.145874 1176.819946 1176.403076 1176.009399 1176.012817 1175.965332 1175.775879 1175.370972 1174.950562 1174.885254 1174.63562 1174.155884 1173.920044 1173.754028 1173.364258 1172.845581 1172.631714 1174.570068 1176.749023 1177.69165 1176.694824 1175.190063 1173.3927 1171.445923 1168.306396 1163.878662 1160.962402 1160.022217 1159.630859 1158.938965 1157.240234 1156.731079 1156.883545 1157.438477 1158.022827 1158.291016 1158.291992 1157.414429 1155.671143 1154.084717 1153.268555 1152.931641 1152.609619 1152.586792 1152.519043 1152.533447 1152.104858 1151.651001 1151.074463 1150.617798 1150.091919 1149.687012 1149.373779 1149.296509 1149.285034 1149.13562 1148.978149 1148.765747 1148.620361 1148.472412 1148.299194 1148.104248 1147.835449 1147.513794 1146.968506 1146.607544 1146.664185 1147.20752 1147.689209 1147.956543 1148.231445 1148.551392 1149.08728 1149.747681 1150.230713 1150.773926 1151.113892 1151.628784 1152.503296 1153.768066 1155.497192 1156.709961 1156.900146 1157.012207 1157.628052 1159.006958 1160.386597 1161.55896 1163.358521 1165.757935 1168.277588 1171.072876 1175.940063 1181.003784 1185.92688 1193.775146 1198.68042 1201.928833 1201.572388 1200.265259 1199.609741 1196.604004 1185.84729 1183.944458 1196.143799 1204.909058 1204.366333 1200.912476 1194.581543 1193.97583 1200.055054 1209.573608 1212.693481 1215.918091 1220.973145 1227.053955 1232.541748 1233.946167 1234.240356 1234.343994 1234.496216 1234.028198 1234.129395 1234.967041 1234.562378 1229.785767 1223.103271 1217.768677 1212.108154 1207.787354 1199.487061 1185.152344 1183.774048 1182.659668 1179.344849 1173.037842 1167.250977 1162.461792 1157.274048 1147.186523 1147.942383 1153.755615 1159.168335 1158.152466 1150.675171 1145.216553 1141.146606 1137.872437 1135.962646 1135.527588 1134.4646 1132.983521 1131.185913 1129.445435 1127.700806 1126.03064 1124.647095 1123.629761 1123.476318 1123.212891 1122.377563 1121.447632 1120.577148 1119.683594 1118.853638 1118.134155 1117.382324 1116.677002 1115.813599 1115.050171 1114.332764 1113.622437 1113.034424 1112.736694 1112.446533 1112.158203 1111.736206 1111.538696 1111.509033 1111.537231 1111.682495 1111.802856 1111.825562 1111.678833 1111.462646 1111.134644 1110.746094 1110.466431 1109.94873 1107.650146 1104.832642 1103.896851 1103.122681 1102.731323 1102.923218 1103.126709 1103.418335 1103.846436 1104.048096 1104.323853 1104.664551 1105.143555 1105.7146 1106.149414 1106.697388 1107.086182 1107.398438 1107.838379 1108.438477 1109.343872 1110.214966 1111.996948 1113.317017 1114.153687 1114.623779 1114.423096 1113.564209 1113.047363 1112.302246 1110.980225 1109.54187 1107.906006 1110.526733 1112.27771 1113.977295 1115.076172 1116.609009 1118.62085 1120.87854 1122.931885 1125.169189 1126.299316 1128.733032 1132.52478 1138.79895 1146.000122 1150.816895 1154.683594 1158.727173 1163.681641 1166.375732 1166.141846 1161.541992 1153.815063 1158.204346 1166.073364 1173.734009 1185.565308 1198.928223 1209.586304 1220.160034 1224.667603 1224.689575 1223.731445 1222.842163 1219.857788 1214.58606 1210.062256 1204.74292 1201.301025 1200.782959 1209.737549 1214.438843 1216.101929 1216.729492 1221.420654 1228.01355 1231.657593 1233.010742 1234.643677 1234.574585 1230.375977 1218.506348 1207.943115 1195.681519 1184.937988 1189.757935 1189.22998 1179.804321 1170.878784 1158.415039 1164.154175 1170.510986 1171.467773 1162.869141 1155.369751 1147.812988 1145.380249 1141.415771 1134.754028 1134.150269 1133.965576 1133.680664 1133.312378 1132.93042 1131.817871 1130.297119 1128.675659 1127.107422 1125.452881 1124.248291 1123.332397 1122.279297 1121.242432 1119.956543 1118.828003 1117.784058 1116.740845 1115.577515 1114.359619 1113.059326 1111.935791 1110.944092 1109.900269 1109.764038 1110.212524 1110.56311 1109.525269 1107.618774 1110.112183 1114.105103 1119.468384 1122.315552 1122.259033 1122.277832 1122.183228 1121.617676 1121.932007 1122.290649 1122.566406 1122.610352 1122.562256 1122.362183 1122.066895 1122.239502 1122.372803 1122.284912 1120.863037 1118.946411 1117.277466 1115.963257 1115.140991 1114.916138 1115.324463 1115.906372 1116.264038 1116.236694 1115.751953 1115.390991 1115.26123 1115.49707 1116.046265 1117.005859 1118.156616 1119.50354 1120.845825 1121.681885 1122.317017 1123.214111 1123.576782 1124.028687 1124.901367 1125.835938 1127.045532 1128.597656 1130.560547 1132.720947 1134.688477 1135.907715 1136.53418 1137.452637 1139.303223 1142.060303 1145.612549 1149.036499 1153.872681 1159.727539 1167.052612 1172.838013 1176.951172 1182.033569 1185.747925 1186.174316 1183.657837 1186.316528 1193.004028 1199.062988 1204.954224 1198.811157 1185.414307 1180.46936 1177.65271 1176.13623 1176.0 1174.908325 1171.549683 1164.327759 1157.473511 1155.01001 1152.724365 1158.805542 1164.766479 1168.197632 1168.676147 1173.070679 1177.338257 1179.541382 1175.55835 1171.00647 1167.389282 1165.170288 1163.568481 1160.969727 1156.454224 1151.999023 1147.571167 1144.478027 1141.653198 1137.837524 +1097.302124 1097.848999 1097.980103 1098.091797 1098.19043 1098.293579 1098.328491 1097.921997 1098.074219 1098.935425 1099.733521 1100.314209 1100.904175 1101.371948 1101.75647 1102.354004 1103.044067 1103.743286 1104.377319 1104.949219 1105.504395 1106.007324 1106.615601 1107.222046 1107.989746 1108.585938 1109.223022 1109.66333 1110.170654 1111.238647 1113.122437 1114.994507 1116.62915 1118.072754 1119.061279 1119.930176 1120.65918 1121.665527 1123.44165 1125.514526 1127.963989 1130.158203 1131.921753 1133.065552 1134.036865 1137.473267 1141.1698 1144.162476 1147.819458 1153.043823 1160.222534 1167.89624 1178.695068 1186.218872 1195.55188 1200.889404 1212.222412 1222.757812 1230.212646 1237.50769 1243.014282 1250.498047 1259.588989 1269.016968 1274.139038 1275.843628 1275.280029 1274.59729 1273.989624 1274.083984 1275.816162 1277.946167 1281.348633 1286.94043 1293.68457 1295.243774 1295.240234 1290.159546 1282.246704 1270.459839 1263.888916 1257.717285 1247.535645 1233.824097 1230.158813 1224.930298 1222.643799 1220.742065 1214.762451 1212.383179 1210.503174 1203.226685 1196.934448 1182.504883 1174.057617 1170.971436 1161.404297 1158.384888 1158.505371 1158.720825 1161.671997 1169.691895 1174.098633 1169.882935 1166.476196 1163.965088 1159.565063 1154.288574 1151.405396 1148.371826 1144.604614 1140.416382 1147.972046 1159.889282 1166.041504 1170.02002 1171.625122 1168.509888 1164.699829 1160.006836 1153.63208 1146.252808 1143.704224 1144.74939 1149.429932 1155.379639 1161.247314 1154.046753 1146.411621 1141.610229 1136.82019 1138.408569 1143.261719 1150.371094 1158.116821 1162.170898 1159.994629 1161.442993 1162.576294 1162.340332 1163.150146 1165.771973 1169.530884 1172.090332 1173.039062 1175.110474 1178.510864 1181.461914 1183.784058 1184.288452 1184.020874 1183.350586 1183.168579 1182.55188 1181.418579 1180.372681 1179.671021 1179.15979 1178.910889 1178.77356 1178.66272 1178.506592 1178.345093 1178.145752 1178.146606 1178.206787 1178.450684 1178.61792 1178.894165 1179.170898 1179.436523 1179.788574 1179.924683 1179.995361 1179.957031 1179.930786 1179.880493 1179.830811 1179.670654 1179.43335 1179.128662 1178.699707 1178.424316 1178.158936 1177.808228 1177.406128 1177.233765 1177.035522 1176.98291 1176.702148 1176.307617 1175.894897 1175.607788 1175.099121 1174.533325 1174.08252 1174.119263 1174.303467 1174.187622 1173.656738 1173.044556 1173.060425 1172.991821 1172.719238 1172.424683 1172.285156 1171.985229 1171.51123 1170.498047 1171.059692 1172.238159 1172.595703 1172.155029 1171.500244 1170.186035 1166.67334 1162.053223 1159.653809 1158.504517 1158.160767 1157.902954 1157.921265 1157.893799 1158.422363 1159.029175 1159.468384 1159.605469 1159.699829 1159.627197 1159.361206 1157.402832 1154.440186 1153.555298 1153.08667 1153.783936 1153.91272 1153.91748 1153.478638 1152.956421 1152.415405 1151.824951 1151.279541 1150.833618 1150.510498 1150.183716 1149.995361 1149.814331 1149.606201 1149.385376 1149.18811 1149.005737 1148.794556 1148.578857 1148.369629 1147.972046 1147.424194 1146.814331 1146.591431 1146.786377 1147.108032 1147.539185 1147.813477 1148.076782 1148.545776 1149.289307 1150.405273 1151.296631 1151.863281 1151.912842 1152.541016 1153.664307 1155.394165 1157.89209 1159.08728 1158.926147 1158.181641 1157.959351 1158.162598 1158.596436 1159.879517 1162.163086 1164.421875 1166.637573 1169.571167 1175.565918 1184.049683 1191.727905 1197.799927 1202.054443 1205.626465 1206.0 1204.418335 1202.284546 1196.867432 1188.601074 1192.67041 1202.919434 1210.216675 1210.221436 1208.157349 1200.417725 1194.948364 1199.988037 1216.716675 1220.794922 1221.12439 1223.9104 1228.83667 1232.369385 1234.779785 1235.375122 1235.404785 1235.226318 1234.330811 1233.896729 1233.579712 1229.282837 1221.759766 1216.844604 1211.031494 1205.748291 1199.243286 1191.782471 1182.071533 1170.547974 1170.589355 1166.635986 1160.26709 1157.40332 1154.8302 1150.775513 1147.979126 1153.497314 1158.572876 1161.534424 1160.774536 1153.386108 1146.313354 1142.838135 1139.5896 1137.393188 1136.237793 1134.895264 1133.27356 1131.707153 1129.93103 1128.262451 1126.752808 1125.519165 1124.684692 1124.082642 1123.518433 1122.530029 1121.632935 1120.819824 1119.916626 1119.006226 1118.298462 1117.600464 1116.936279 1116.090942 1115.245605 1114.50061 1113.922607 1113.415771 1113.111694 1112.829102 1112.42395 1112.107056 1111.829468 1111.700806 1111.662354 1111.679321 1111.867554 1111.882446 1111.74585 1111.496094 1111.266357 1110.902954 1110.446167 1109.757202 1105.491699 1103.30896 1103.231079 1103.120728 1103.279907 1103.462769 1103.665649 1103.9646 1104.259277 1104.599487 1104.885986 1105.261475 1105.736938 1106.337036 1106.932861 1107.388794 1107.833374 1108.004272 1108.406982 1108.828491 1109.626343 1110.797607 1112.810181 1114.687622 1116.473511 1117.997925 1118.196411 1117.337646 1116.242432 1114.981201 1113.678711 1112.142944 1110.132446 1108.813721 1110.552612 1111.804932 1113.410645 1114.834473 1116.626587 1118.599365 1120.383545 1122.0354 1122.121704 1125.448486 1132.139648 1138.312622 1144.262817 1148.244873 1150.31958 1153.030151 1154.569946 1155.469116 1154.495117 1149.741699 1145.449951 1153.38562 1161.887573 1174.849487 1188.193848 1198.710327 1205.130859 1213.331665 1222.056885 1223.500977 1225.345947 1223.507324 1221.827515 1218.246704 1210.779175 1206.35791 1206.864258 1207.021729 1206.497925 1206.332275 1208.214233 1217.775391 1218.120972 1216.991089 1221.982056 1229.385742 1232.205688 1234.091675 1234.811157 1217.791138 1204.344604 1200.655884 1204.587036 1202.919434 1185.897217 1170.630981 1178.397705 1182.819702 1180.056396 1175.624023 1167.845093 1152.47522 1145.909424 1146.160034 1146.630859 1144.87207 1137.060791 1135.121582 1133.994995 1134.145874 1134.57605 1134.067017 1132.73938 1130.838501 1129.241943 1127.502808 1125.754028 1123.990356 1122.609863 1122.383789 1121.412842 1120.135742 1119.120361 1118.164429 1117.045898 1115.864746 1114.444092 1112.809082 1111.468872 1110.163086 1109.922852 1110.357056 1110.637085 1110.503052 1108.325439 1108.338623 1109.270508 1112.599976 1118.624634 1121.725464 1122.215698 1122.347046 1122.393066 1122.287354 1122.069336 1122.268799 1122.575073 1122.630737 1122.606079 1122.445068 1122.437378 1122.327026 1122.403809 1122.326172 1121.217773 1119.285767 1117.794312 1116.503662 1115.805542 1115.741577 1116.1698 1116.996216 1117.442261 1117.358032 1116.841675 1116.081543 1115.51709 1115.335938 1115.509888 1116.160645 1117.175537 1118.335938 1119.675659 1120.716064 1121.566162 1122.558716 1123.5802 1124.132568 1124.553955 1125.109741 1126.109375 1127.748169 1129.960571 1132.316772 1134.074829 1135.778809 1136.919312 1137.527954 1138.377197 1140.492432 1144.776245 1148.118286 1151.984619 1156.976074 1162.740845 1169.28186 1174.10498 1179.399292 1183.245972 1181.629028 1179.298096 1185.820923 1192.315918 1198.93335 1207.882812 1207.005127 1198.940796 1187.978394 1182.305176 1180.135132 1178.999634 1175.758911 1170.696289 1168.599976 1164.488159 1167.474487 1163.326416 1166.367676 1172.665283 1174.222778 1174.483154 1178.725342 1182.956299 1184.314697 1180.554688 1174.662842 1171.420288 1170.164185 1168.245728 1164.279785 1159.154541 1157.353638 1154.181519 1151.659424 1149.362549 1146.628052 +1097.577759 1097.91687 1098.344604 1098.5354 1098.709351 1098.808594 1098.792236 1098.714355 1099.003418 1099.487915 1100.122925 1100.719238 1101.311279 1101.806641 1102.282837 1102.862793 1103.635132 1104.304443 1104.93042 1105.541138 1106.119751 1106.605469 1107.146606 1107.736206 1108.542725 1109.245361 1109.871216 1110.571167 1111.262451 1112.37561 1113.729614 1115.300415 1116.694702 1117.988281 1118.903076 1119.776611 1120.581299 1121.640259 1123.178711 1125.549805 1128.199585 1130.564819 1132.180176 1133.686035 1135.931519 1139.06189 1142.283936 1144.832764 1151.451416 1159.354614 1167.224976 1183.52124 1194.827881 1201.444336 1206.659302 1212.355835 1220.316895 1225.171753 1231.13562 1239.829834 1248.657715 1258.140869 1265.197021 1273.499023 1280.867798 1282.128906 1281.344238 1280.462036 1278.731689 1279.000366 1282.080811 1282.985229 1286.249512 1291.989624 1294.784058 1293.117554 1290.956543 1283.629395 1275.203613 1266.800171 1261.457153 1254.358276 1243.072266 1235.712891 1231.140015 1232.889771 1233.067139 1226.122681 1217.578735 1218.742676 1213.15564 1204.521973 1198.206543 1183.273071 1187.592896 1179.910767 1170.030884 1167.652466 1165.468262 1165.389282 1168.359619 1169.011841 1175.568848 1184.628906 1176.457397 1172.40918 1167.113647 1161.482422 1160.498535 1155.116821 1150.124878 1145.020996 1143.215454 1150.776733 1157.94104 1162.717896 1167.206421 1167.432983 1165.966553 1162.64209 1157.240967 1148.721069 1144.845337 1144.917725 1145.103027 1149.020752 1157.414551 1161.518799 1158.936646 1153.399658 1150.056641 1148.389893 1141.783081 1139.634155 1142.93335 1144.040405 1144.59082 1150.49292 1156.030151 1158.196289 1160.042969 1162.925049 1167.446045 1169.849121 1170.535767 1174.39856 1178.292358 1181.866211 1184.151855 1184.16748 1183.909912 1183.256592 1183.052734 1182.414917 1181.492065 1180.623291 1179.984375 1179.566284 1179.306396 1179.092651 1178.85498 1178.749634 1178.5 1178.297119 1178.329468 1178.308716 1178.41687 1178.560303 1178.631958 1178.763428 1178.921509 1178.92041 1179.066284 1179.134644 1179.119507 1179.020142 1178.930176 1178.780151 1178.611328 1178.192017 1177.83374 1177.590454 1177.237061 1176.861694 1176.580078 1176.279541 1175.989868 1175.77002 1175.519531 1175.200684 1174.622192 1174.339844 1174.085693 1173.694214 1172.636841 1171.817139 1172.22583 1172.937988 1173.023682 1172.261108 1171.10022 1171.146606 1171.26001 1171.090698 1170.897583 1170.768311 1170.408691 1169.75 1169.117432 1169.37793 1169.357544 1168.960205 1168.092651 1165.281494 1160.168945 1158.935303 1158.901489 1158.961182 1159.155762 1159.167969 1159.175537 1159.050293 1159.094849 1159.363525 1159.53833 1159.63562 1159.896851 1159.885986 1159.601685 1158.812378 1156.725342 1154.365356 1153.475952 1154.61853 1156.754761 1156.7854 1155.897461 1154.821655 1154.091431 1153.364014 1152.838745 1152.270874 1151.825562 1151.430298 1151.112915 1150.874512 1150.491943 1150.168823 1149.900757 1149.670654 1149.404297 1149.275513 1149.084106 1148.760254 1148.324219 1147.664795 1146.969238 1146.600098 1146.724609 1146.988037 1146.989014 1147.296509 1147.650879 1148.291382 1149.454712 1151.024414 1152.46228 1153.544067 1153.679443 1153.686523 1154.109863 1156.41272 1159.197266 1160.87085 1161.03064 1160.234741 1158.609009 1158.338867 1158.206299 1158.491943 1160.429443 1162.895386 1165.807495 1169.429321 1175.121338 1183.214111 1192.90564 1200.153442 1206.849854 1208.935181 1209.276245 1208.319214 1206.006226 1198.164795 1193.911865 1197.402466 1208.254639 1212.838623 1214.5448 1212.7323 1207.841553 1201.52478 1199.560547 1215.176392 1219.922729 1223.398315 1227.196777 1230.063965 1232.525391 1235.786133 1236.721069 1236.366821 1235.294556 1232.216431 1230.119263 1226.955444 1220.916016 1210.043457 1204.580933 1199.618408 1193.03186 1186.595093 1179.549194 1173.487793 1163.932739 1157.41272 1155.01062 1152.626953 1152.124146 1151.477539 1152.417236 1156.322266 1160.421021 1162.538086 1162.740601 1160.817749 1153.598999 1146.354736 1143.487671 1140.602295 1138.182495 1136.632568 1134.97522 1133.420898 1131.830322 1130.317627 1128.775269 1127.320557 1126.210938 1125.175903 1124.481567 1123.602661 1122.542114 1121.689575 1120.844849 1119.884766 1119.112671 1118.544678 1117.75061 1117.030029 1116.360107 1115.637573 1114.94812 1114.25 1113.875732 1113.571655 1113.107422 1112.814209 1112.412964 1112.168457 1111.938232 1111.828979 1111.782104 1111.786499 1111.842651 1111.694092 1111.584595 1111.229614 1110.900513 1110.477417 1109.519287 1103.891846 1103.793335 1103.80835 1103.7229 1103.879272 1104.043457 1104.277344 1104.575439 1104.77356 1105.094849 1105.429199 1105.828125 1106.359253 1106.858276 1107.593262 1108.129883 1108.560791 1108.724609 1109.000732 1109.167725 1109.666138 1111.194336 1113.588379 1116.10083 1118.79187 1121.330566 1121.965576 1120.821167 1119.294067 1118.02124 1116.595581 1114.903809 1112.859375 1110.906494 1109.314087 1109.997803 1111.38623 1113.21582 1114.707886 1116.466431 1117.927612 1119.46582 1120.576904 1124.241089 1129.965942 1134.629761 1139.851318 1144.308228 1145.726929 1146.984375 1147.542236 1147.924438 1146.182983 1144.433472 1144.100708 1157.704102 1169.511597 1182.417603 1191.54126 1197.128662 1198.520752 1199.071045 1204.607422 1209.583008 1210.098145 1215.479004 1216.619751 1214.060669 1212.290405 1211.263916 1214.854736 1218.286743 1219.618896 1221.760986 1222.17627 1224.102539 1226.535645 1233.218262 1233.332764 1231.585815 1231.8927 1232.930908 1232.739502 1217.830322 1213.707275 1215.977295 1215.605347 1207.51062 1179.425659 1193.27832 1192.124756 1187.89502 1176.788208 1161.666748 1156.113159 1155.892212 1158.896973 1159.125488 1154.191162 1149.841431 1144.796265 1140.541992 1136.569458 1137.013672 1136.731812 1135.067017 1132.943115 1131.523438 1130.022583 1128.197754 1126.020752 1123.714844 1122.146729 1121.616943 1121.165405 1120.453003 1119.551514 1118.548096 1117.482666 1116.27417 1114.750244 1112.915039 1110.533081 1110.052856 1110.216431 1110.614868 1110.679565 1109.710083 1109.849731 1111.053345 1110.56311 1112.421997 1118.210571 1121.094727 1122.261475 1122.391113 1122.460205 1122.441406 1122.24231 1122.210449 1122.555908 1122.633667 1122.572021 1122.430542 1122.383545 1122.438721 1122.254395 1122.268188 1121.396606 1119.780396 1118.291748 1117.163696 1116.498901 1116.52356 1117.094238 1118.027466 1118.526245 1118.516968 1117.811768 1116.820068 1115.86438 1115.232666 1115.079712 1115.477661 1116.349121 1117.433838 1118.7146 1119.904053 1120.873291 1121.821777 1122.719971 1123.31311 1123.51355 1123.847046 1124.82312 1126.605835 1129.026489 1131.827026 1133.58374 1135.405151 1136.547363 1136.69165 1136.283691 1135.14563 1141.511841 1145.011108 1147.658936 1153.678345 1157.688477 1164.513428 1171.131348 1174.43396 1174.11731 1169.383057 1175.811401 1183.49292 1184.825928 1193.609863 1205.915405 1210.634399 1208.482544 1199.516479 1190.917969 1183.646973 1182.069092 1179.823364 1176.439331 1174.143555 1170.068604 1173.907471 1170.217407 1172.276733 1177.204468 1180.696655 1181.44873 1184.428345 1188.034058 1188.882568 1184.615845 1180.177612 1176.76123 1174.884521 1172.740845 1169.046387 1165.63208 1163.446045 1160.71936 1158.065308 1156.022461 1153.624146 +1098.080566 1098.231812 1098.650757 1098.942871 1099.100098 1099.247681 1099.331909 1099.452759 1099.770996 1100.105347 1100.61145 1101.121704 1101.701416 1102.237793 1102.804443 1103.428223 1104.091675 1104.805054 1105.464111 1105.975464 1106.585449 1107.090088 1107.750854 1108.228516 1108.973755 1109.727417 1110.490234 1111.390625 1112.160522 1113.243042 1114.378662 1115.630737 1116.938843 1118.096313 1119.125 1119.947876 1120.834106 1121.608398 1122.890869 1125.80957 1128.651367 1131.164917 1132.910034 1135.250488 1140.600952 1142.107422 1145.028442 1147.651367 1158.308472 1165.880371 1178.192505 1194.622925 1205.116455 1209.540527 1214.505127 1221.549194 1220.63623 1224.098633 1231.746826 1239.811035 1248.278076 1257.170776 1265.296631 1272.633057 1278.539307 1281.798706 1283.200806 1283.317627 1283.396729 1284.31958 1287.654785 1289.220581 1290.00769 1292.085938 1295.389404 1295.181641 1293.595947 1285.617554 1275.613281 1267.619751 1262.456299 1256.893188 1251.140259 1244.759644 1238.01062 1236.908203 1236.690308 1234.21106 1224.324463 1228.542236 1221.192383 1207.48584 1194.792358 1198.833008 1205.151001 1196.348877 1184.730835 1177.047485 1173.464355 1170.093384 1174.255737 1173.388794 1177.674805 1182.094116 1184.501221 1183.2229 1175.385986 1172.068481 1169.665649 1162.992432 1159.614258 1155.094482 1143.165039 1144.554443 1151.135498 1156.98291 1162.205688 1167.093018 1167.882568 1164.901489 1158.740845 1148.008179 1149.32666 1147.215454 1144.8302 1147.401001 1158.040527 1162.631714 1163.197021 1162.377563 1161.755737 1159.966553 1152.615479 1144.61084 1144.997314 1148.132812 1147.998169 1145.612061 1146.257446 1152.565674 1156.606445 1160.703125 1166.161133 1169.071533 1171.834106 1175.105591 1178.468872 1182.327026 1183.952026 1184.056152 1183.795654 1183.296021 1183.019531 1182.217773 1181.189575 1180.459595 1179.940186 1179.463867 1179.297485 1178.960449 1178.927856 1178.734375 1178.564697 1178.436646 1178.422119 1178.437622 1178.592163 1178.52417 1178.495605 1178.488647 1178.549072 1178.494263 1178.551025 1178.511963 1178.363037 1178.336914 1178.100586 1177.858154 1177.383301 1177.056885 1176.722168 1176.425903 1176.05835 1175.650513 1175.336548 1175.071533 1174.821411 1174.564575 1174.157959 1173.629761 1172.938354 1172.879761 1172.940308 1172.406372 1171.424438 1170.449951 1171.064453 1171.749634 1172.0979 1171.332031 1170.113892 1169.636475 1169.618164 1169.501587 1169.321899 1168.9729 1168.537842 1168.056396 1167.60083 1167.259155 1166.422852 1165.122314 1163.468018 1160.390259 1159.645142 1159.10437 1159.117432 1159.196289 1159.29541 1159.347778 1159.373779 1159.368286 1159.383789 1159.296997 1159.268677 1159.150757 1158.910889 1158.546265 1157.742065 1156.678223 1155.160645 1154.05896 1154.46582 1157.829712 1159.071655 1158.856689 1157.684082 1156.24939 1155.228149 1154.489746 1153.877441 1153.35437 1152.902344 1152.446655 1152.160278 1151.769287 1151.337769 1150.860962 1150.512451 1150.207397 1150.005127 1149.934082 1149.687012 1149.280273 1148.810669 1148.258789 1147.598877 1146.932739 1146.640381 1146.594604 1146.77478 1147.069092 1147.425781 1147.878296 1149.351562 1151.594971 1153.906494 1155.760742 1156.635132 1156.419312 1155.644653 1156.154663 1159.7146 1161.737427 1163.230835 1163.941284 1163.091797 1161.610596 1160.270142 1158.133911 1158.482422 1160.837524 1165.162476 1168.040894 1171.666504 1180.216797 1189.890259 1198.811035 1207.064087 1210.494629 1211.638428 1211.688354 1210.112915 1204.049194 1195.295166 1198.938721 1208.745483 1216.889771 1218.71936 1219.463745 1217.48645 1212.095459 1207.972168 1212.360229 1218.989746 1225.088257 1230.028076 1233.232056 1235.467285 1237.80835 1238.388306 1237.378296 1235.422729 1232.418579 1227.161377 1221.064209 1210.532227 1193.404541 1187.147949 1183.108154 1177.931885 1170.28772 1160.760986 1156.576416 1155.859009 1157.791992 1162.655518 1165.798462 1166.751221 1165.283936 1163.774292 1164.81189 1166.816772 1165.866577 1163.473145 1160.30249 1152.626343 1145.90625 1143.408813 1141.013428 1138.590698 1136.500977 1134.973877 1133.403076 1131.909302 1130.445923 1129.104126 1127.836304 1126.602295 1125.483887 1124.484863 1123.438599 1122.42749 1121.566406 1120.654053 1119.997437 1119.374512 1118.519409 1117.799316 1117.117676 1116.585938 1115.956543 1115.263794 1114.651001 1114.324707 1113.80603 1113.45874 1113.111816 1112.796753 1112.482422 1112.227417 1111.953003 1111.908936 1111.904907 1111.821045 1111.672729 1111.460327 1111.154785 1110.828247 1110.260864 1107.035767 1103.959106 1104.142212 1104.222046 1104.217529 1104.534302 1104.702759 1104.921265 1105.154541 1105.509155 1105.687134 1106.035522 1106.431763 1106.932495 1107.459839 1108.126221 1108.724365 1109.25708 1109.609497 1109.891357 1110.031006 1109.872681 1111.615112 1114.575928 1117.469238 1120.38147 1122.563232 1122.935669 1122.653931 1122.172974 1121.250732 1119.80249 1117.892456 1115.749023 1113.912109 1112.112183 1110.493164 1109.930664 1111.618408 1113.218994 1114.50354 1115.875366 1117.584961 1119.456299 1122.331055 1127.088867 1132.429565 1136.78479 1140.106445 1141.697266 1141.23877 1139.18396 1136.461426 1140.868164 1145.67749 1151.489502 1163.576416 1176.604858 1185.467407 1187.74231 1191.373291 1190.22644 1188.550293 1193.530396 1197.680542 1196.735352 1199.777344 1202.392334 1208.527344 1214.769531 1215.875488 1219.574219 1222.460083 1226.649658 1231.337402 1231.447021 1230.563599 1232.384644 1235.58252 1235.811768 1233.78772 1231.917969 1232.288696 1233.191528 1232.00647 1228.117432 1226.75061 1222.661743 1210.524292 1205.692993 1202.371094 1189.887451 1172.504028 1162.493652 1158.504272 1161.083984 1167.192383 1169.786255 1167.09436 1161.362549 1155.633179 1149.361328 1146.969238 1144.001099 1140.46167 1137.285767 1134.388428 1133.257324 1132.910156 1131.414795 1129.193726 1126.505737 1123.692749 1122.059082 1121.851074 1121.681763 1121.152344 1120.216919 1119.196045 1118.064575 1116.852661 1115.482666 1113.8479 1111.975952 1111.013306 1110.957886 1110.947754 1110.429443 1109.932983 1111.926147 1113.300537 1114.389038 1116.584961 1119.125244 1122.025635 1122.465088 1122.610962 1122.781616 1122.709595 1122.4552 1122.388062 1122.52417 1122.481567 1122.437744 1122.22876 1122.234985 1122.235352 1122.222046 1121.906982 1121.246338 1119.937866 1118.782227 1117.740601 1117.33313 1117.359863 1118.102905 1119.078735 1119.652954 1119.569702 1118.77478 1117.557373 1116.115845 1115.170044 1114.667603 1114.917603 1115.611816 1116.718628 1117.998169 1119.068726 1120.077148 1120.915894 1121.671509 1122.036133 1122.085327 1122.566284 1123.839478 1125.077759 1127.459106 1131.559814 1134.557617 1135.609375 1135.990112 1135.255127 1134.246338 1134.006958 1140.507568 1147.092529 1149.181763 1149.742188 1153.000366 1158.788208 1164.929688 1168.776245 1167.729126 1167.475952 1171.246216 1171.43103 1182.559814 1190.963013 1201.701416 1210.674805 1211.395996 1209.718994 1202.302368 1196.538452 1191.853271 1186.235962 1181.972534 1181.361328 1180.311523 1178.595581 1179.534058 1179.432007 1182.410767 1186.202148 1188.369507 1191.011719 1195.123535 1196.196655 1192.379761 1185.956909 1181.599487 1179.059937 1176.248779 1173.088989 1171.582764 1169.21167 1167.177979 1165.870728 1162.923828 1160.161499 +1098.317261 1098.603638 1098.907715 1099.239502 1099.384766 1099.6875 1099.810303 1100.056396 1100.424194 1100.849365 1101.218018 1101.606689 1102.042969 1102.536255 1103.195312 1103.765991 1104.54895 1105.197144 1105.833862 1106.397827 1106.988525 1107.584717 1108.151489 1108.671265 1109.307495 1110.093872 1111.056274 1111.886475 1112.765381 1113.934692 1115.050903 1116.176147 1117.375366 1118.509766 1119.610229 1120.628052 1121.578247 1122.564209 1124.153809 1126.641235 1129.557129 1132.045532 1134.108398 1143.516724 1150.968506 1150.182251 1154.424805 1162.068726 1166.009277 1171.996216 1181.251709 1196.871582 1205.70813 1208.415894 1209.207397 1208.912598 1216.167114 1222.249268 1228.579712 1234.988525 1242.012939 1249.145264 1257.52771 1266.217651 1268.480103 1270.032715 1278.894897 1283.68811 1286.066162 1290.427124 1293.907959 1294.972778 1295.04248 1293.780518 1298.105103 1298.178345 1295.728882 1285.936523 1278.179688 1270.293945 1268.839966 1263.741577 1257.22229 1246.932007 1241.661133 1241.758545 1242.009033 1236.15686 1233.216309 1234.887451 1225.965942 1211.425171 1202.43396 1213.603271 1221.266357 1212.139038 1197.962402 1185.174438 1183.196289 1181.108521 1181.856445 1179.547241 1179.709839 1180.71228 1181.522339 1182.871826 1179.200073 1174.422363 1172.578125 1167.25708 1162.696167 1158.664185 1145.895264 1143.149048 1146.501343 1155.483887 1161.995361 1169.280884 1170.649414 1167.417969 1161.823242 1152.627563 1154.448486 1159.141968 1145.247681 1145.460693 1156.049072 1161.818115 1162.562378 1162.614258 1162.421997 1162.15686 1159.983154 1153.897095 1151.783081 1154.967041 1157.280151 1152.86145 1147.5448 1148.812134 1157.942871 1163.179199 1170.326904 1171.867432 1173.384155 1175.161621 1177.116089 1179.821045 1182.370605 1183.344727 1183.537598 1183.298584 1183.088745 1181.67627 1180.431396 1179.775635 1179.414551 1179.122559 1178.849976 1178.691772 1178.667725 1178.625732 1178.576294 1178.575562 1178.549561 1178.546631 1178.650635 1178.665649 1178.590942 1178.521118 1178.388794 1178.393188 1178.389282 1178.315308 1178.138062 1177.837769 1177.495117 1177.057129 1176.54126 1176.113892 1175.79126 1175.343262 1174.942749 1174.529297 1174.158325 1173.915527 1173.648071 1173.410767 1172.933472 1171.730469 1171.174683 1171.753418 1171.886108 1171.520142 1170.678467 1169.78125 1170.010254 1170.453247 1170.75061 1170.097168 1169.058838 1168.344849 1168.086426 1168.056396 1167.604492 1167.215576 1166.77063 1166.283691 1165.710205 1165.028931 1164.095215 1162.623291 1160.83667 1160.135254 1159.638306 1159.255249 1159.251465 1159.258057 1159.339478 1159.320068 1159.41748 1159.393677 1159.024292 1158.461304 1158.204468 1157.545044 1155.992188 1155.306396 1154.849731 1154.611084 1154.220459 1154.833862 1157.037231 1159.126953 1159.359619 1159.051147 1158.109741 1157.086182 1156.329712 1155.579834 1155.043213 1154.436157 1153.848511 1153.366699 1153.004517 1152.605713 1152.196045 1151.547119 1151.177856 1150.851562 1150.635864 1150.453491 1150.20874 1149.85437 1149.304443 1148.768066 1148.207886 1147.566162 1147.176025 1147.047485 1147.151123 1147.298462 1147.390137 1147.786865 1148.975098 1151.843506 1155.415039 1157.98584 1158.833984 1159.143677 1158.79187 1157.057861 1158.435181 1161.972412 1165.511719 1167.848633 1169.417847 1170.208984 1169.863647 1168.620117 1161.029053 1160.551636 1166.59082 1168.943481 1170.95874 1178.139404 1184.682617 1193.547974 1204.70813 1210.874146 1214.051636 1214.544312 1212.57019 1208.484375 1206.579956 1205.578735 1207.546631 1220.308716 1223.55603 1225.774902 1225.595337 1222.241333 1215.152954 1212.370117 1219.345825 1226.807373 1232.193604 1235.260742 1238.354004 1241.019043 1241.010986 1238.193604 1234.538452 1230.814819 1224.781128 1217.43396 1205.932007 1192.558105 1177.791626 1168.099121 1162.788818 1159.679077 1164.536987 1167.664795 1169.028687 1174.383911 1177.779785 1179.000488 1177.720093 1175.075317 1172.900879 1172.932007 1171.182495 1168.049072 1163.698608 1159.48291 1151.595215 1145.72644 1143.486816 1141.008423 1138.674805 1136.473877 1134.694824 1133.291992 1131.870361 1130.485962 1129.304932 1127.963379 1126.809692 1125.605591 1124.335571 1123.189209 1122.119019 1121.038208 1120.515747 1120.053589 1119.387817 1118.618164 1117.890747 1117.321167 1116.722168 1116.128296 1115.658081 1115.192871 1114.643555 1114.198242 1113.789429 1113.361694 1113.107422 1112.741211 1112.462891 1112.229126 1112.099487 1111.938843 1111.709961 1111.558472 1111.38208 1111.057495 1110.610962 1110.057373 1105.87561 1104.202515 1104.495483 1104.629272 1104.833862 1105.095703 1105.276611 1105.610352 1106.010132 1106.219238 1106.356323 1106.624756 1106.982178 1107.495361 1108.062744 1108.726074 1109.437622 1109.908813 1110.548096 1111.11145 1111.05188 1111.361572 1112.996338 1115.493652 1118.437622 1121.098389 1122.489258 1123.110474 1123.316162 1123.384033 1123.198242 1122.579956 1120.967773 1118.69165 1116.643555 1114.848877 1113.194092 1111.84021 1110.766968 1111.38208 1112.5802 1113.820801 1115.874268 1118.078613 1120.52063 1124.259888 1130.229858 1135.003052 1137.515869 1138.141235 1136.842163 1133.603027 1134.574341 1144.637451 1150.812378 1158.703857 1169.785156 1176.886597 1181.57251 1182.703979 1181.998169 1181.116699 1181.135376 1186.624756 1187.321655 1186.221558 1190.01001 1198.025513 1207.441162 1219.268311 1219.343872 1219.067383 1219.839233 1225.21582 1232.775269 1233.759644 1235.349121 1237.210693 1239.430542 1239.218384 1237.019165 1234.019165 1231.927246 1236.002075 1236.706909 1235.47876 1234.529053 1230.790283 1224.305176 1212.318115 1194.708008 1180.972412 1181.592529 1174.554565 1167.71228 1173.68335 1175.396362 1175.359985 1172.477905 1167.175415 1160.360352 1155.080322 1150.933472 1147.459839 1141.006714 1135.995239 1134.150757 1134.515747 1134.869263 1132.962769 1130.415771 1127.653564 1124.755127 1122.98291 1123.222168 1122.806396 1121.896362 1120.978638 1119.668579 1118.704712 1117.664307 1116.409424 1115.086304 1113.813843 1112.659302 1111.956909 1111.377563 1110.916016 1112.135376 1113.751587 1115.812866 1117.6604 1119.98999 1121.14502 1122.213501 1122.764038 1122.989502 1122.950439 1122.902954 1122.748291 1122.540527 1122.297363 1122.273926 1122.258057 1122.249146 1122.153198 1121.925049 1121.916992 1121.594849 1120.891846 1120.038086 1119.150635 1118.343262 1117.94043 1118.272095 1118.875488 1120.337402 1121.155884 1120.696289 1119.512451 1117.980103 1116.260742 1115.040283 1114.370728 1114.423584 1115.058472 1116.138062 1117.262817 1118.192871 1119.129883 1119.881592 1120.466553 1120.84668 1120.962646 1121.553955 1122.32959 1122.41748 1124.566284 1129.57605 1134.006226 1135.417358 1135.868286 1135.029297 1128.016235 1132.425781 1138.377319 1144.430908 1147.68811 1145.899902 1145.768555 1152.911255 1159.836304 1161.533325 1161.849365 1159.31543 1161.023682 1173.139404 1182.482422 1189.183716 1195.725586 1204.722534 1207.673584 1209.459717 1207.818481 1202.675415 1200.219604 1198.365479 1193.67981 1192.032227 1190.048706 1185.637939 1189.280029 1188.449463 1190.01062 1191.803467 1194.086426 1199.286499 1206.03418 1207.315308 1203.221802 1195.368286 1187.417603 1182.540405 1179.993774 1178.576538 1177.06311 1174.369385 1172.550049 1172.839233 1169.06604 1163.327881 +1098.275879 1098.735596 1099.044556 1099.435547 1099.727417 1099.98584 1100.18689 1100.481812 1100.971313 1101.371582 1101.827881 1102.028687 1102.466919 1102.897705 1103.487183 1104.086426 1104.868042 1105.529907 1106.107788 1106.611816 1107.193726 1107.889404 1108.480469 1109.077393 1109.65918 1110.522461 1111.522949 1112.388794 1113.336792 1114.539917 1115.669556 1116.858521 1117.944336 1118.998169 1120.091064 1121.418091 1122.502686 1124.006958 1125.577637 1127.823364 1130.630127 1133.861084 1138.830444 1151.506836 1162.83252 1166.288696 1167.912964 1171.758667 1175.144165 1180.145874 1188.689941 1197.166626 1198.862305 1199.150391 1202.323608 1208.020874 1213.710205 1220.864258 1224.361572 1229.731079 1235.677368 1241.627686 1248.14856 1252.452515 1256.068848 1263.4375 1271.800537 1279.241943 1284.714844 1290.245239 1295.993774 1300.644165 1304.013672 1303.281616 1302.212402 1300.777954 1300.386719 1293.247314 1285.40332 1280.947998 1276.265625 1270.836304 1261.558716 1248.940796 1244.391968 1248.250122 1249.998413 1243.193726 1241.441406 1240.269531 1231.50354 1215.591797 1206.879395 1222.827881 1231.484131 1230.425903 1209.509155 1194.920288 1193.735107 1192.502563 1188.272095 1184.078247 1181.787476 1179.324585 1177.265503 1175.907349 1174.924438 1172.890869 1168.059937 1161.068726 1158.501465 1153.026855 1144.940674 1144.783691 1145.644409 1154.726685 1161.623047 1169.543335 1172.394287 1171.11377 1166.234863 1158.91626 1157.861206 1161.002441 1150.082764 1144.896484 1147.244507 1156.308228 1160.116455 1160.738892 1162.097168 1163.950806 1164.296875 1161.355469 1157.104858 1158.967163 1161.725464 1160.415894 1154.820801 1149.237915 1153.505249 1161.098145 1168.789673 1171.875854 1173.149658 1174.318359 1174.070801 1174.22522 1177.87915 1180.966675 1181.839355 1183.132202 1181.950073 1180.217773 1179.502808 1179.131714 1178.816895 1178.550781 1178.402832 1178.388184 1178.395996 1178.389893 1178.525269 1178.625488 1178.644897 1178.753296 1178.835815 1178.924194 1178.859131 1178.705688 1178.566284 1178.538086 1178.464233 1178.436035 1178.286865 1177.778931 1177.199097 1176.566528 1175.944214 1175.564819 1175.084839 1174.633423 1173.997681 1173.455322 1173.087769 1172.810669 1172.656982 1172.498291 1172.290283 1171.450928 1170.335449 1170.491211 1170.557007 1170.215942 1169.679932 1169.039307 1168.924805 1168.899658 1168.700317 1168.311157 1167.468262 1167.08313 1166.891479 1166.431519 1165.983765 1165.735718 1165.192017 1164.573242 1163.88208 1163.173218 1162.060913 1161.101318 1160.507935 1160.049561 1159.644043 1159.279297 1159.256836 1159.270752 1159.286743 1159.255981 1159.235107 1159.346436 1158.73938 1157.769165 1157.043335 1156.162964 1156.040161 1157.774414 1157.811035 1157.089722 1156.855835 1157.091675 1158.499756 1159.348267 1159.518677 1159.151489 1158.490356 1158.016357 1157.184082 1156.654297 1155.950439 1155.339355 1154.734009 1154.233398 1153.91272 1153.48645 1152.967896 1152.441895 1151.97876 1151.592773 1151.352417 1151.047729 1150.709473 1150.363892 1149.877197 1149.327026 1148.848633 1148.241577 1147.854492 1147.77063 1147.656616 1147.79895 1147.864624 1147.875244 1148.310425 1151.966431 1156.765381 1159.331787 1160.397217 1160.965454 1161.047363 1159.960938 1158.143311 1160.647339 1166.907959 1170.950073 1174.489258 1175.797729 1176.013428 1175.25415 1173.441284 1171.133911 1169.479736 1170.098755 1174.389893 1179.28125 1186.971069 1195.915527 1205.746826 1212.292358 1217.195557 1218.142456 1216.981445 1213.856201 1211.975342 1209.716309 1206.772705 1221.187622 1227.237549 1231.718018 1233.246094 1233.113525 1226.335938 1215.735474 1220.993286 1229.939209 1233.816528 1236.928955 1240.577271 1244.098877 1242.765625 1238.341797 1233.413818 1228.130371 1220.977905 1206.253052 1192.005493 1180.972778 1172.60022 1162.840332 1172.644409 1178.252197 1179.118286 1179.495483 1179.661377 1181.695312 1186.401001 1189.501099 1188.649414 1185.102417 1180.090454 1176.105469 1172.57605 1167.672363 1163.075439 1158.385498 1151.548462 1146.359863 1143.514282 1140.896118 1138.230957 1136.223633 1134.341309 1132.913086 1131.735229 1130.595337 1129.351074 1127.999146 1126.786499 1125.545654 1124.236572 1122.687012 1121.835938 1121.592407 1120.876831 1120.203369 1119.414673 1118.677246 1118.011597 1117.425659 1116.858154 1116.438232 1115.941406 1115.464966 1114.945557 1114.424927 1114.052856 1113.626099 1113.25647 1112.856445 1112.501831 1112.236694 1112.053345 1111.935669 1111.767822 1111.44165 1111.187744 1110.921631 1110.415527 1109.206665 1105.652954 1104.44751 1104.793335 1105.047241 1105.36084 1105.745117 1106.012695 1106.420166 1106.75 1106.868164 1107.013062 1107.279175 1107.612305 1107.981445 1108.615601 1109.300781 1109.903809 1110.883911 1111.585571 1112.155518 1112.536865 1113.255737 1114.743896 1116.579102 1118.935913 1121.007812 1122.260986 1123.067871 1123.49646 1123.752441 1123.921265 1123.728027 1122.695068 1121.436035 1119.457397 1117.729248 1115.625977 1113.997192 1112.609863 1112.063599 1111.77124 1111.984497 1114.479126 1116.840942 1119.197144 1121.870361 1126.901611 1131.897949 1134.5 1134.315186 1133.167603 1132.928711 1137.990112 1146.60791 1152.750977 1160.654175 1169.032715 1172.798462 1175.214966 1176.459106 1175.760376 1174.708618 1176.557495 1180.988647 1180.583496 1180.328735 1186.531738 1197.859253 1204.628052 1214.533081 1230.341309 1228.933594 1222.221313 1219.905396 1228.869141 1232.413696 1236.140747 1240.84375 1243.991577 1243.384644 1240.845093 1238.618164 1238.232056 1239.770508 1241.124268 1240.557983 1238.13623 1234.462402 1230.816772 1210.89624 1196.097656 1199.640015 1192.511353 1181.827393 1181.546143 1182.38623 1180.494629 1179.15625 1176.829956 1172.760376 1166.069214 1158.381836 1152.569458 1146.655273 1140.638184 1134.175049 1134.957153 1136.302979 1135.141479 1133.296631 1131.432007 1129.203857 1126.924072 1125.200317 1124.421997 1123.826904 1122.813232 1121.388794 1120.177002 1119.227417 1118.428955 1117.469238 1116.323364 1115.074829 1113.890259 1112.892578 1111.872803 1112.688599 1114.182617 1116.103027 1117.888062 1120.04248 1122.294067 1122.467651 1122.786255 1123.150879 1123.105225 1123.009888 1122.948242 1122.436157 1122.245605 1122.258057 1122.130371 1122.244751 1122.210205 1121.940674 1121.894287 1121.600464 1121.227539 1120.58313 1120.002075 1119.259644 1118.659912 1118.512085 1118.983398 1120.097778 1122.197021 1122.209106 1121.624634 1119.998291 1118.100098 1116.235718 1114.823242 1114.02832 1114.052612 1114.669556 1115.63208 1116.53064 1117.362427 1118.014282 1118.621094 1119.217651 1119.604492 1119.876587 1120.160034 1120.344238 1121.014038 1121.525757 1125.9646 1132.511353 1135.450928 1136.150879 1135.653198 1125.82605 1125.179321 1134.628052 1139.537842 1144.697754 1141.980713 1134.43103 1145.117432 1151.934692 1154.53479 1160.556641 1153.824707 1161.237305 1171.41333 1180.844604 1186.989014 1191.743408 1196.567017 1199.891846 1199.919678 1200.763062 1201.188721 1200.104004 1199.760254 1199.50415 1199.590698 1200.928833 1201.524658 1202.308594 1201.425049 1199.377808 1199.005737 1205.085815 1211.219238 1222.346802 1215.486694 1208.816406 1198.148071 1191.063965 1184.427124 1181.997314 1183.122314 1182.992798 1180.226929 1176.289917 1172.564941 1166.312378 1159.942505 +1098.138062 1098.666138 1099.138794 1099.576294 1099.931519 1100.236084 1100.542847 1100.875244 1101.372314 1101.810059 1102.330078 1102.620728 1102.834229 1103.259766 1103.748901 1104.369263 1105.090332 1105.797485 1106.395386 1106.893066 1107.501709 1108.09375 1108.794678 1109.377563 1110.124268 1111.010742 1111.996826 1112.881226 1113.906616 1114.960327 1116.291138 1117.537598 1118.691895 1119.67395 1120.616577 1121.972046 1123.661255 1125.050781 1126.699951 1128.919678 1131.610596 1134.901978 1140.638062 1150.868896 1163.312378 1172.901611 1186.005493 1185.363403 1179.290039 1174.90686 1183.164185 1188.118042 1188.987427 1192.219482 1197.227661 1203.30835 1207.521484 1211.968262 1218.283325 1224.359619 1232.80835 1238.599976 1241.952759 1241.829346 1247.793579 1256.358398 1263.377563 1269.504883 1275.590088 1286.709595 1296.573608 1304.165527 1307.169434 1307.746338 1305.120361 1302.404663 1304.702393 1303.538208 1290.48877 1285.41748 1282.43811 1276.389526 1266.770508 1255.787354 1252.350342 1256.765015 1259.50769 1254.056519 1253.053467 1249.604248 1241.123047 1225.962891 1215.29187 1229.977905 1237.343262 1237.893799 1225.871216 1208.368774 1205.187256 1201.09375 1195.603271 1187.614258 1181.364014 1177.932129 1171.576904 1170.424316 1169.710938 1167.667725 1159.275269 1158.442871 1158.791138 1152.063477 1146.707886 1157.700317 1147.733032 1152.760254 1162.075439 1169.085571 1172.842896 1173.202271 1169.180542 1159.677246 1161.493164 1164.190308 1160.32605 1151.410889 1144.762573 1149.484985 1156.083374 1158.172974 1158.253906 1164.575928 1169.868408 1169.102539 1160.904053 1159.285889 1164.707886 1166.462158 1163.664673 1159.707153 1152.867798 1152.732422 1161.189453 1168.330444 1171.059814 1171.495361 1169.942261 1170.013306 1171.659058 1178.110718 1178.585571 1178.778931 1178.637695 1178.698486 1178.639648 1178.584351 1178.42749 1178.390625 1178.395874 1178.397095 1178.396606 1178.423218 1178.671265 1178.865967 1178.849243 1178.96936 1179.180298 1179.21521 1179.201172 1178.990967 1178.875 1178.781494 1178.82605 1178.776733 1178.584106 1178.01062 1177.317749 1176.58606 1175.893555 1175.307251 1174.762329 1174.177002 1173.484741 1172.271362 1171.936646 1171.648804 1171.530762 1171.436157 1171.234619 1170.525635 1169.480835 1169.204834 1169.091675 1168.942261 1168.577759 1168.150635 1167.907593 1167.358154 1166.942017 1166.36499 1165.947876 1165.774902 1165.565674 1165.168091 1164.695679 1164.163574 1163.439575 1162.814575 1162.289429 1161.913696 1161.384766 1160.836914 1160.287842 1159.904663 1159.540283 1159.212036 1159.038818 1159.178833 1159.301514 1159.205566 1159.061279 1158.956543 1158.111816 1157.073364 1156.174072 1157.020142 1159.124023 1159.368408 1159.373901 1159.204834 1159.117432 1159.018311 1159.275269 1159.839722 1159.89624 1159.613403 1159.196167 1158.853027 1158.131836 1157.40686 1156.810303 1156.158569 1155.514404 1155.079712 1154.650024 1154.209717 1153.815796 1153.210449 1152.793213 1152.392212 1152.037231 1151.612671 1151.230957 1150.85083 1150.385742 1149.866455 1149.420898 1148.884766 1148.581421 1148.539795 1148.567749 1148.35083 1148.280396 1148.276611 1148.123901 1152.872437 1157.668945 1160.090454 1161.605347 1162.617554 1162.865967 1162.067627 1160.220093 1159.442749 1167.776489 1173.465698 1181.315796 1182.410889 1180.709473 1179.089478 1177.825928 1175.527954 1172.591431 1171.253296 1178.968628 1184.935913 1190.462769 1198.606079 1206.352783 1214.476929 1220.399292 1221.708008 1221.181152 1218.348511 1216.015625 1215.7854 1215.483276 1220.366333 1230.097046 1234.287598 1235.559448 1235.508057 1233.71936 1225.758545 1226.101196 1233.370728 1235.829834 1238.402222 1241.686523 1244.411987 1242.725342 1237.954956 1233.468506 1227.302612 1218.091187 1201.870728 1188.837158 1174.021118 1166.674561 1180.511108 1190.262451 1194.506836 1196.118286 1194.225464 1191.904419 1190.219604 1191.412964 1196.651245 1196.426636 1190.785278 1182.229126 1176.292236 1170.819214 1165.990723 1160.799683 1156.512085 1151.24231 1146.703125 1143.532837 1140.828369 1138.012085 1134.661255 1133.692017 1132.890015 1131.880859 1130.745361 1129.343994 1128.035645 1126.724609 1125.496704 1124.34668 1122.862305 1122.630737 1122.175293 1121.352295 1120.505737 1119.647949 1118.855469 1118.263916 1117.664551 1117.179077 1116.645508 1116.162964 1115.677856 1115.029419 1114.547241 1114.145752 1113.732544 1113.330078 1113.053223 1112.550415 1112.265381 1112.079712 1111.807007 1111.574463 1111.38623 1111.100464 1110.773071 1110.43457 1109.345337 1105.748291 1104.692017 1105.062256 1105.547974 1106.032349 1106.421021 1106.822388 1107.173828 1107.387817 1107.617676 1107.692261 1107.978149 1108.27832 1108.670044 1109.106201 1109.641479 1110.540283 1111.597656 1112.454102 1113.173828 1113.939941 1114.920288 1116.311646 1117.84668 1119.317871 1120.75 1121.782837 1122.740845 1123.487427 1123.863281 1124.13208 1124.329102 1123.948608 1122.968018 1122.176758 1120.449585 1118.290283 1116.457031 1114.937988 1113.994507 1113.32312 1112.538452 1113.599609 1115.710938 1117.970825 1120.702515 1124.010376 1127.412842 1129.064575 1127.200684 1129.107544 1132.707397 1139.208984 1146.452515 1151.825928 1156.13623 1160.244507 1165.577881 1168.420288 1170.069458 1170.229492 1168.202393 1171.449463 1173.096191 1170.130249 1177.029663 1185.455322 1194.486938 1200.952026 1209.040771 1223.274536 1236.263184 1234.762817 1231.755859 1229.750488 1231.12793 1232.587524 1241.830933 1245.401001 1245.584473 1244.211182 1242.23645 1241.749756 1243.759155 1244.860107 1244.397095 1241.639648 1237.612305 1232.336182 1207.827637 1212.215576 1209.813965 1202.539917 1196.429688 1195.01123 1193.394653 1187.225708 1184.281738 1182.585449 1176.385742 1171.300171 1160.392456 1150.491089 1145.540649 1143.455322 1141.589478 1139.324829 1136.824585 1134.260498 1133.52417 1132.56311 1130.763794 1128.634521 1126.493042 1124.849243 1123.776855 1122.604248 1121.426392 1120.495972 1119.870728 1119.412354 1118.655396 1117.524658 1116.15979 1114.700073 1113.71106 1112.625244 1114.190186 1116.087036 1117.873657 1119.635864 1120.998535 1122.63855 1122.911133 1123.251587 1123.281006 1123.234863 1123.036987 1122.494263 1122.244507 1122.248169 1122.251221 1122.262329 1122.017822 1122.00415 1121.965698 1121.717041 1121.294556 1120.918091 1120.409302 1119.9021 1119.310425 1119.015869 1118.967529 1119.536987 1120.652466 1122.276855 1122.247314 1122.026001 1120.218506 1118.032715 1116.007446 1114.508911 1113.724976 1113.755005 1114.151001 1114.980225 1115.743164 1116.350098 1116.857056 1117.447388 1117.772461 1118.136597 1118.344727 1118.380737 1118.697632 1119.407837 1120.910889 1124.783813 1130.106323 1133.617065 1135.660889 1133.649292 1125.087646 1121.204346 1129.447876 1134.316284 1137.218506 1136.757812 1130.42688 1135.742065 1139.678955 1148.09082 1149.112793 1144.372681 1153.687622 1167.333618 1176.985718 1183.532227 1187.698608 1191.5271 1190.756592 1188.619141 1190.669434 1195.83313 1196.530273 1197.53186 1199.234619 1200.171631 1203.484863 1207.001099 1208.997925 1209.815918 1206.986572 1206.597778 1211.592041 1217.076904 1215.848145 1204.388184 1193.767456 1188.817505 1184.916626 1181.221191 1180.312622 1181.383179 1183.988892 1183.202393 1176.404907 1170.105469 1160.178101 1152.338257 +1098.01355 1098.623657 1099.225586 1099.670532 1100.070435 1100.407959 1100.795044 1101.204468 1101.700684 1102.213379 1102.631592 1103.051636 1103.391846 1103.689941 1104.10791 1104.708496 1105.255493 1106.022461 1106.602539 1107.217041 1107.744873 1108.322754 1109.022095 1109.700073 1110.487061 1111.432617 1112.349854 1113.299561 1114.364014 1115.544556 1116.78479 1118.103394 1119.56604 1120.721191 1121.480591 1122.064941 1124.175049 1125.911865 1127.64856 1129.608643 1132.022583 1134.821899 1139.284058 1144.935669 1156.12085 1163.648926 1169.42395 1170.05127 1166.3573 1168.074463 1169.764648 1174.908325 1181.900391 1187.338135 1194.24292 1200.02063 1205.189819 1207.988159 1216.084473 1222.910889 1232.810303 1236.906128 1238.007568 1239.369873 1242.581787 1245.625366 1252.539551 1260.646973 1272.334961 1285.742798 1296.651733 1305.442261 1309.822998 1310.71814 1307.81958 1303.81311 1300.720459 1295.020508 1290.335327 1287.935425 1285.676147 1282.414795 1275.701904 1268.479004 1255.882446 1261.545166 1264.688843 1261.914673 1266.512329 1261.034424 1248.9375 1231.604492 1230.825195 1236.989258 1241.750488 1246.972412 1242.280273 1231.512695 1219.494019 1208.902222 1200.280273 1185.827515 1182.459717 1180.20752 1174.656372 1172.257935 1171.079346 1162.456421 1158.452393 1164.068115 1163.190063 1153.194946 1148.256592 1159.244995 1158.5448 1155.410767 1162.676392 1169.093018 1172.841797 1173.375244 1171.456909 1167.366089 1169.780884 1170.188965 1167.923462 1161.614868 1148.375366 1148.651733 1154.077515 1158.299194 1158.500488 1161.587158 1169.980835 1171.897217 1167.143066 1164.566895 1167.980103 1171.734619 1172.077148 1171.887573 1165.173706 1155.767578 1153.026855 1161.022095 1164.991455 1165.577759 1166.131104 1168.331421 1172.213257 1174.768555 1175.088257 1175.931519 1176.984985 1177.63916 1178.107056 1178.355469 1178.42981 1178.412231 1178.394043 1178.38855 1178.38208 1178.632568 1178.714111 1178.885864 1179.044189 1179.289185 1179.536499 1179.608276 1179.552124 1179.40686 1179.247559 1179.21814 1179.265137 1179.206543 1178.938965 1178.476074 1177.768555 1177.065552 1176.320923 1175.614136 1174.910156 1174.305054 1173.433594 1171.933594 1170.801392 1170.569946 1170.376587 1170.571289 1170.507324 1170.318115 1170.028442 1169.122559 1168.069702 1167.752075 1167.467041 1167.157593 1166.771484 1166.33606 1165.933594 1165.625977 1165.276367 1164.858032 1164.482544 1164.074463 1163.793457 1163.487183 1162.993896 1162.626831 1162.239624 1161.865845 1161.225952 1160.719971 1160.249023 1159.785278 1159.405884 1159.095337 1158.993164 1159.132202 1159.297485 1159.11499 1158.851685 1157.82666 1156.889404 1156.692749 1157.588623 1159.044189 1159.405029 1159.745605 1159.855347 1159.862549 1159.780762 1159.753784 1160.095703 1160.332397 1160.23877 1160.077759 1159.654175 1159.217773 1158.666138 1158.038208 1157.442017 1156.78833 1156.166626 1155.648438 1155.284546 1154.956665 1154.586426 1154.054077 1153.664429 1153.2052 1152.679932 1152.14502 1151.592285 1151.175537 1150.798462 1150.333618 1149.903564 1149.465088 1149.151978 1149.178833 1149.191895 1149.013428 1148.912598 1148.953369 1150.356934 1154.488281 1158.254395 1160.580933 1163.192505 1164.819702 1165.234009 1164.380493 1163.43103 1165.000732 1168.3396 1174.739136 1186.011719 1187.87207 1186.245728 1183.296143 1182.571777 1180.154907 1177.819458 1177.949219 1183.637817 1191.445923 1195.959351 1202.344849 1207.825562 1216.393799 1221.860107 1224.194946 1224.714966 1222.822632 1219.141602 1219.805664 1223.398804 1225.788574 1231.678467 1235.866455 1237.3479 1237.349487 1235.93042 1234.015381 1232.827026 1235.776001 1237.776367 1239.33252 1241.118042 1242.271729 1240.529297 1237.082642 1233.29248 1226.198608 1216.619995 1194.962158 1180.032104 1166.464966 1180.36084 1198.187256 1207.153198 1208.39917 1205.352661 1203.635254 1201.338867 1197.862915 1194.737549 1197.89563 1198.493896 1193.142334 1181.439331 1174.917358 1168.976074 1163.955933 1158.349731 1153.585327 1150.029175 1146.38562 1144.100586 1141.651123 1138.622192 1136.198486 1134.729492 1133.719849 1132.235107 1130.952393 1129.390625 1127.925537 1126.499756 1125.212158 1124.263062 1123.559937 1123.006714 1122.307495 1121.542236 1120.666504 1119.875122 1119.144897 1118.566772 1118.03772 1117.463135 1116.954712 1116.482056 1115.888794 1115.277588 1114.755615 1114.310181 1113.930176 1113.54541 1113.114624 1112.600098 1112.192749 1111.867432 1111.682251 1111.456665 1111.248169 1111.000854 1110.665527 1110.276855 1109.547607 1106.739868 1105.216187 1105.3302 1106.357666 1106.929932 1107.269531 1107.536743 1107.829956 1108.235107 1108.380371 1108.55542 1108.728394 1109.001709 1109.372559 1109.740112 1110.074219 1111.118652 1112.178101 1113.204712 1114.14502 1115.243164 1116.446777 1117.753784 1119.047363 1119.954346 1120.655396 1121.308838 1122.225586 1123.053589 1123.696533 1124.205444 1124.423218 1124.56958 1124.374878 1123.486084 1122.53125 1120.938477 1119.057373 1117.392334 1116.186035 1115.008057 1113.721924 1112.769531 1114.510254 1116.672974 1119.002441 1121.526489 1123.889771 1124.265625 1121.372925 1126.042725 1132.009033 1139.35376 1146.618652 1149.560669 1151.607422 1154.158569 1157.096558 1160.080322 1162.112427 1162.073975 1160.821655 1165.589111 1167.397583 1169.664917 1176.313599 1181.245972 1188.134399 1197.398071 1204.798218 1214.818359 1229.248657 1234.433472 1233.966919 1232.892456 1231.408936 1231.642944 1239.550903 1245.70752 1246.231812 1246.013794 1244.829346 1244.540039 1245.065674 1245.735962 1245.673462 1244.73999 1240.211792 1234.089966 1223.405151 1218.918457 1213.779175 1208.05542 1203.806274 1200.586426 1198.887329 1196.370483 1188.984741 1183.056152 1176.618286 1170.327515 1161.076172 1146.970703 1147.242798 1148.433594 1146.924805 1142.098877 1136.628418 1134.257202 1135.240234 1134.775269 1132.568604 1129.848022 1127.34729 1124.83313 1122.891113 1121.906738 1121.629761 1121.113037 1120.729248 1120.886475 1120.137939 1118.71875 1116.97583 1115.395508 1114.316528 1113.804199 1116.052979 1117.808105 1119.751465 1121.759888 1122.571533 1123.136475 1123.331665 1123.367065 1123.264038 1123.037598 1122.423706 1122.243286 1122.247803 1122.247437 1122.246094 1122.246216 1122.222778 1121.952759 1122.021362 1121.686401 1121.277954 1120.876221 1120.417847 1119.994751 1119.564697 1119.352783 1119.3927 1119.790771 1120.481201 1122.116333 1122.223145 1121.820801 1119.983765 1117.678711 1115.533081 1114.096924 1113.327271 1113.253662 1113.718262 1114.257935 1114.84668 1115.269043 1115.692261 1116.142944 1116.446045 1116.528931 1116.465088 1116.34668 1116.495483 1117.756958 1119.615967 1123.456909 1127.391113 1130.099365 1130.41687 1127.943481 1122.426392 1120.534424 1122.349731 1128.463013 1135.855591 1135.906738 1123.324829 1126.682373 1133.80603 1135.981812 1133.910767 1144.32666 1152.250122 1163.494995 1173.438477 1180.296997 1185.33252 1186.072144 1181.020996 1179.592896 1180.391357 1185.279541 1185.572632 1190.657349 1193.484009 1194.365601 1197.384033 1199.265747 1199.773071 1199.755249 1200.331543 1204.682617 1210.17041 1209.794922 1201.654663 1191.89563 1185.502563 1180.645264 1178.4021 1175.876953 1174.531738 1174.5177 1178.213135 1178.78064 1173.885864 1167.824951 1158.941528 1146.660767 +1098.030518 1098.630127 1099.234985 1099.71582 1100.164917 1100.544922 1100.936035 1101.334351 1101.987793 1102.511353 1103.014282 1103.317383 1103.743896 1104.040161 1104.392822 1104.960327 1105.496216 1106.109741 1106.904297 1107.472168 1108.07251 1108.609497 1109.198975 1109.872559 1110.89917 1111.989746 1112.872803 1113.836548 1114.875122 1116.139893 1117.370972 1118.705933 1120.277832 1121.799316 1123.047852 1123.647949 1125.124756 1126.880493 1128.5625 1130.300903 1132.202026 1134.041992 1138.120361 1142.459717 1145.817383 1151.370239 1153.487671 1155.702759 1159.223389 1167.571289 1173.840942 1182.474487 1187.783325 1194.299927 1199.317749 1204.398438 1209.00354 1216.567139 1226.023315 1234.981812 1241.42688 1240.314331 1234.940308 1234.470093 1235.638062 1243.453735 1253.386841 1266.484009 1280.370483 1288.403687 1297.713257 1307.294678 1312.504272 1315.739258 1312.40918 1305.893433 1301.225952 1295.356567 1292.089722 1290.436035 1290.462524 1288.601196 1282.632324 1275.165771 1264.630249 1272.788208 1272.686279 1268.616455 1274.238037 1271.314941 1255.989014 1236.88916 1241.30481 1244.914673 1251.975464 1259.74939 1254.119995 1245.27771 1233.030273 1217.890015 1203.521118 1195.567749 1188.747192 1184.123657 1178.295532 1174.344482 1171.690186 1162.366333 1164.780518 1171.575562 1166.863525 1155.279785 1156.011719 1159.132812 1159.984009 1158.293579 1161.776978 1168.335327 1172.716309 1173.825317 1172.978271 1169.655518 1172.72644 1173.577148 1172.633789 1167.625 1155.613525 1151.621826 1155.255615 1160.010864 1162.510986 1165.444214 1169.362061 1172.06604 1171.944824 1169.187866 1170.2146 1172.901001 1174.268921 1173.675049 1171.934937 1163.911133 1155.615479 1154.353882 1158.936035 1160.07959 1160.583862 1164.05249 1169.765991 1171.370117 1172.506958 1173.878418 1175.830811 1177.154419 1178.091064 1178.765747 1178.874756 1178.917969 1178.816284 1178.838013 1178.755859 1178.692749 1178.684204 1178.747559 1179.015625 1179.454102 1179.760742 1179.927002 1180.031128 1179.759155 1179.69812 1179.637085 1179.635376 1179.5271 1179.36377 1179.025635 1178.442627 1177.884888 1177.127441 1176.326416 1175.602783 1174.947266 1174.172729 1173.406494 1172.756714 1172.671509 1172.928589 1173.079224 1173.080566 1172.927856 1172.581177 1172.025757 1171.225586 1169.232178 1168.157959 1167.552856 1167.230225 1166.840942 1166.359131 1165.953369 1165.630859 1165.196533 1164.805664 1164.49646 1164.109863 1163.701416 1163.109131 1162.700439 1162.358521 1161.827271 1161.244995 1160.71582 1160.19165 1159.760986 1159.31958 1159.014526 1158.900513 1159.026367 1159.126953 1158.850952 1157.526733 1158.297363 1159.04126 1158.988403 1159.017578 1159.464844 1159.828979 1160.080566 1160.285522 1160.293701 1160.399292 1160.494141 1160.606934 1160.663696 1160.606567 1160.351929 1160.081543 1159.576538 1159.091064 1158.467529 1157.956055 1157.255371 1156.669922 1156.261719 1155.943237 1155.728149 1155.381592 1154.908447 1154.464478 1153.934692 1153.353149 1152.63269 1152.052002 1151.523804 1151.075806 1150.663818 1150.341187 1149.975098 1149.767456 1149.704346 1149.553223 1149.889893 1150.315918 1151.274292 1153.601074 1156.92334 1159.717041 1162.887329 1166.398438 1168.183472 1168.248169 1167.449707 1166.620483 1167.234375 1169.589722 1174.161865 1184.326782 1194.034546 1195.94519 1192.322876 1187.744751 1184.046509 1182.484131 1183.426514 1190.2677 1197.515869 1201.426636 1207.929443 1213.183594 1220.035156 1223.397705 1226.647461 1228.862793 1228.582153 1226.340088 1227.737671 1233.019287 1233.321289 1235.326904 1238.383911 1239.516968 1239.566772 1239.654419 1239.720337 1238.158203 1238.847534 1239.409546 1240.012451 1240.401611 1240.153076 1238.711304 1235.832764 1231.402954 1222.633057 1208.823364 1190.173462 1169.978149 1177.644287 1196.008789 1209.329834 1210.905762 1211.182129 1209.930054 1209.472656 1208.503296 1205.556763 1203.209473 1201.512573 1197.977051 1188.097778 1178.325439 1171.961426 1163.511841 1161.847778 1158.23584 1150.004517 1146.446533 1145.891113 1145.725708 1143.309082 1139.421021 1135.942871 1135.284058 1134.232422 1132.719604 1130.92627 1129.259033 1127.652588 1126.03894 1124.516235 1123.720093 1123.2948 1122.865356 1122.239136 1121.597778 1120.804565 1120.082886 1119.442139 1118.94397 1118.356445 1117.857788 1117.271973 1116.792114 1116.25293 1115.682739 1115.095337 1114.592896 1114.141235 1113.702393 1113.170898 1112.73877 1112.124634 1111.775635 1111.396851 1111.171875 1111.012085 1110.800781 1110.543945 1110.183594 1108.994751 1106.761353 1105.335083 1106.476562 1108.023682 1108.093872 1108.014648 1108.19104 1108.566772 1108.887939 1109.192017 1109.375977 1109.555786 1109.758667 1110.116333 1110.574585 1110.968506 1111.845215 1113.018311 1114.142944 1115.322998 1116.534424 1117.894897 1119.354736 1120.493652 1121.014282 1120.93457 1121.144653 1121.599121 1122.247314 1122.946899 1123.906982 1124.503296 1124.882202 1124.943237 1124.858276 1123.921387 1122.612671 1121.36145 1120.066528 1118.870239 1117.422974 1115.807007 1114.239624 1113.292969 1114.819702 1116.538818 1118.720459 1120.433472 1120.595581 1121.595947 1125.763184 1131.089844 1136.045654 1141.310547 1145.402222 1145.869507 1146.529541 1152.483521 1156.655762 1156.140625 1155.006226 1155.800171 1159.170898 1159.79248 1172.855713 1180.134888 1184.772461 1188.584595 1196.877197 1202.911011 1209.008911 1215.844238 1229.685913 1234.970825 1235.964844 1234.107788 1231.372925 1235.521729 1242.76355 1245.938599 1246.468506 1246.318237 1246.298584 1246.349365 1246.312378 1246.377319 1245.667969 1243.290649 1238.373169 1229.757324 1223.576416 1218.036011 1212.050171 1207.663574 1203.926147 1199.899292 1195.10083 1183.730713 1180.942017 1175.646362 1166.572021 1156.149536 1154.062134 1154.549072 1151.382812 1147.093384 1143.99292 1139.367676 1137.438477 1137.187744 1135.588257 1133.056396 1131.000366 1128.650391 1125.096802 1122.079834 1122.692017 1122.869629 1121.963257 1122.045166 1122.17627 1121.493896 1119.828735 1117.682251 1115.921631 1114.960815 1115.171021 1117.112793 1119.50293 1121.407104 1122.539307 1123.277344 1123.502686 1123.501465 1123.406372 1122.945068 1122.247681 1122.248901 1122.248291 1122.247559 1122.247559 1122.247559 1122.246948 1122.246948 1122.207153 1121.964844 1121.75 1121.311646 1120.983276 1120.528076 1120.174316 1119.908936 1119.733765 1119.687622 1119.890747 1120.351929 1121.569702 1122.250244 1122.202881 1119.439697 1116.866699 1114.863525 1113.469604 1112.794434 1112.66626 1113.014038 1113.489502 1113.901489 1114.25354 1114.507324 1114.897339 1114.998901 1114.960449 1114.563599 1113.790894 1113.562378 1115.238892 1117.989624 1121.513428 1124.00647 1124.857788 1122.003418 1121.853516 1119.901978 1119.322998 1120.332275 1122.55127 1134.306519 1132.360229 1121.476196 1121.97583 1122.351807 1132.059937 1140.02478 1150.326294 1159.808716 1165.432373 1169.910767 1173.309937 1180.103271 1179.706421 1171.308594 1173.369385 1171.39856 1174.750366 1177.052002 1181.439575 1181.712891 1183.994751 1188.478271 1190.275024 1190.140747 1190.563965 1193.0625 1199.965576 1203.979736 1197.947632 1191.697266 1185.440918 1180.254883 1176.366821 1171.929199 1169.717285 1168.698853 1168.324219 1172.395386 1173.841675 1172.553833 1164.924316 1154.647217 1144.966675 +1098.003418 1098.634888 1099.238403 1099.721924 1100.241943 1100.677246 1101.071045 1101.614868 1102.165405 1102.745728 1103.140991 1103.610352 1104.036499 1104.426514 1104.780762 1105.245117 1105.824707 1106.387329 1107.008301 1107.724854 1108.418213 1108.870483 1109.339966 1109.960693 1111.09314 1112.2323 1113.266724 1114.334106 1115.298096 1116.516357 1117.798706 1119.16272 1120.638306 1122.140747 1123.716187 1124.788574 1126.302368 1127.974487 1129.532837 1130.847778 1132.402588 1134.601685 1137.127686 1140.095825 1142.432129 1144.543945 1145.923706 1156.05249 1161.479736 1168.342163 1173.004272 1184.147827 1190.113281 1197.087891 1202.999512 1209.212769 1214.919067 1223.783813 1234.744629 1241.662231 1245.165649 1237.620972 1230.418457 1230.075684 1234.880615 1247.326172 1258.348633 1267.963257 1278.608276 1285.398315 1294.673462 1303.722656 1311.287598 1318.811401 1317.11731 1308.26001 1302.886108 1298.80957 1294.695068 1293.742798 1295.015869 1294.622681 1293.196533 1285.859009 1274.59729 1282.38269 1282.615601 1279.10144 1280.942261 1275.688843 1261.490479 1248.572876 1256.992798 1259.170166 1260.818604 1260.85791 1251.157349 1240.852783 1231.77417 1217.702881 1204.358521 1197.650391 1186.014526 1182.668945 1177.088745 1172.095459 1170.084595 1168.526733 1169.38269 1173.026855 1170.534668 1155.364502 1156.530518 1158.787109 1161.043945 1159.346802 1159.727295 1167.208618 1173.116211 1175.343506 1175.75708 1171.66687 1175.295776 1175.189087 1173.10083 1167.746704 1156.587891 1155.417847 1156.171631 1157.799438 1165.456421 1171.472656 1170.498291 1171.578003 1173.710815 1171.584595 1170.480957 1174.638184 1175.470581 1174.823975 1172.967163 1168.521484 1160.455322 1155.813843 1155.099609 1156.27124 1155.920654 1159.030518 1163.720581 1170.027832 1170.874634 1173.199951 1175.569092 1177.30603 1178.430054 1179.207275 1179.516479 1179.630859 1179.571289 1179.315796 1179.013428 1178.687378 1178.694092 1178.693848 1178.886475 1179.428833 1180.013672 1180.302734 1180.462036 1180.222534 1180.092529 1180.030273 1179.946899 1179.82959 1179.747314 1179.583252 1179.351685 1178.873413 1178.344482 1177.488892 1176.69397 1176.105347 1175.513184 1175.290649 1175.184937 1175.329224 1175.422607 1175.513306 1175.374878 1175.000854 1174.495972 1173.785278 1172.736206 1170.716064 1169.630737 1169.224854 1168.799316 1168.335693 1167.337524 1166.475952 1165.895996 1165.473755 1165.086426 1164.802734 1164.296997 1163.972534 1163.286499 1162.825928 1162.322144 1161.707642 1161.210205 1160.741699 1160.243774 1159.746216 1159.220093 1158.77417 1158.537476 1158.512573 1158.463623 1158.670898 1159.157104 1159.505127 1159.813477 1159.868408 1159.877686 1160.029541 1160.248413 1160.4729 1160.639893 1160.662964 1160.83667 1160.984253 1161.020142 1161.034546 1160.839844 1160.610229 1160.230103 1159.83374 1159.366211 1158.875977 1158.281128 1157.614624 1157.132202 1156.87915 1156.669678 1156.528687 1156.163818 1155.785767 1155.169922 1154.555176 1153.930298 1153.180298 1152.492432 1151.889526 1151.4375 1150.969971 1150.680786 1150.386475 1150.187134 1149.956543 1149.933105 1150.31897 1151.789429 1153.382812 1156.088013 1159.01416 1162.606079 1166.961914 1170.220459 1171.415161 1171.333862 1170.438477 1168.502197 1168.513306 1169.816895 1175.106567 1184.390503 1194.21582 1197.670898 1197.319336 1189.280396 1184.271851 1184.167236 1189.573608 1196.751953 1198.924927 1203.969604 1209.608643 1215.01355 1221.140137 1225.779907 1230.110718 1232.560181 1234.073486 1233.681641 1233.846802 1237.829468 1239.983521 1241.487671 1241.849365 1241.5896 1242.059692 1242.805298 1243.653076 1242.037598 1241.592407 1241.01355 1240.472656 1240.057983 1238.971191 1237.367188 1234.793457 1228.302734 1215.402832 1198.245117 1185.178711 1169.274902 1188.987915 1206.117432 1211.094482 1212.310425 1213.105591 1213.280396 1213.011597 1211.932861 1210.223267 1208.405762 1205.382568 1197.540771 1186.156006 1177.237427 1170.125 1161.401245 1157.988525 1151.70459 1146.584351 1146.866333 1148.116333 1148.000366 1144.778198 1140.044312 1135.591187 1134.222656 1133.572021 1132.362183 1130.682861 1129.116699 1127.339478 1125.578491 1123.494141 1122.206055 1122.24231 1121.95105 1121.757446 1121.350952 1120.798828 1120.142212 1119.58728 1119.088989 1118.754517 1118.210205 1117.617798 1117.048706 1116.661133 1116.008789 1115.411011 1114.877441 1114.372803 1113.754761 1113.18335 1112.641724 1112.161865 1111.561401 1111.106689 1110.766113 1110.593628 1110.462524 1110.240967 1109.959473 1108.319702 1106.275757 1106.361084 1109.560913 1109.922241 1109.085571 1108.701294 1108.904907 1109.281128 1109.595093 1109.881958 1110.13562 1110.375488 1110.657227 1110.966187 1111.513428 1112.072388 1112.921143 1114.089844 1115.196899 1116.449341 1117.855591 1119.27356 1120.832886 1121.965332 1122.287231 1121.800537 1121.314087 1121.379517 1121.784912 1122.252441 1123.068848 1124.154663 1124.957886 1125.404541 1125.593994 1125.485474 1124.582764 1122.974731 1122.667969 1121.875122 1120.506592 1118.809814 1116.654541 1114.929321 1114.03833 1114.36438 1115.685791 1117.129639 1118.800049 1121.127319 1124.308228 1127.662598 1132.277344 1134.526489 1134.530273 1133.32666 1143.037842 1153.51355 1159.890015 1154.241455 1147.060303 1148.319824 1153.478149 1161.843994 1171.966797 1179.300659 1185.081787 1190.428467 1196.731812 1200.520508 1204.729858 1211.206055 1226.277466 1236.487427 1241.144531 1239.049438 1234.322021 1231.283936 1237.467041 1243.349365 1246.077148 1246.638428 1246.518799 1246.565918 1246.662354 1246.425781 1246.108887 1244.51062 1240.627075 1232.725342 1225.6698 1219.166748 1214.39563 1209.97876 1205.880127 1200.984253 1196.552002 1192.71106 1186.776489 1181.139282 1168.547485 1159.178101 1166.008423 1161.225342 1155.334839 1148.254761 1147.018921 1144.42688 1141.266113 1138.194092 1134.53125 1134.088501 1132.752319 1130.091797 1126.969604 1124.850342 1124.44751 1124.028442 1123.089722 1123.006348 1123.27063 1122.544434 1120.789795 1118.250366 1116.515991 1115.618774 1116.762451 1118.626343 1120.72168 1122.501221 1123.031006 1123.575562 1123.673096 1123.57959 1123.285767 1122.490601 1122.250488 1122.249023 1122.247681 1122.247559 1122.247559 1122.247803 1122.248779 1122.254272 1122.345093 1122.200073 1121.809937 1121.539917 1121.159912 1120.767578 1120.498291 1120.271484 1120.170654 1120.038086 1120.102905 1120.181152 1120.630371 1121.905396 1122.238281 1118.979614 1115.620117 1113.615479 1112.509033 1111.978027 1112.055542 1112.38208 1112.672852 1112.927734 1113.148071 1113.20813 1113.588623 1113.725098 1113.581787 1112.877197 1110.911011 1110.436279 1112.684937 1115.287964 1118.459229 1120.667358 1120.913818 1119.797852 1119.19043 1117.710693 1117.49231 1118.807495 1121.664307 1126.192749 1123.725098 1121.064819 1121.995361 1125.0177 1132.937256 1138.520386 1144.561401 1152.200439 1157.97168 1161.13916 1164.767334 1168.768799 1169.924072 1166.08667 1166.598511 1166.377563 1167.508057 1169.995605 1173.221069 1173.237915 1177.139771 1180.871704 1181.998047 1181.841431 1184.500732 1193.429199 1197.455933 1191.882324 1187.431152 1183.117188 1177.496338 1174.411743 1173.028198 1169.607788 1163.891235 1162.058228 1162.39624 1164.981201 1166.804077 1166.32312 1161.21582 1152.587891 1140.276123 +1097.926392 1098.597778 1099.22229 1099.807495 1100.286743 1100.761475 1101.247437 1101.720459 1102.33606 1102.836914 1103.390503 1103.950806 1104.359131 1104.708374 1105.189819 1105.706787 1106.126831 1106.726318 1107.336182 1108.005615 1108.676392 1109.472656 1109.865723 1110.045044 1111.239502 1112.443481 1113.520142 1114.548828 1115.6604 1116.887207 1118.014404 1119.217651 1120.702515 1121.86377 1123.296997 1124.845703 1127.207886 1129.457886 1130.718262 1131.873657 1132.748779 1134.036499 1136.893921 1139.175293 1141.556396 1144.205322 1147.823242 1153.250977 1157.890137 1164.397583 1171.510498 1179.820679 1189.103638 1196.65686 1203.720337 1209.725586 1216.262451 1226.445312 1237.683228 1246.859497 1241.753662 1234.320679 1226.62561 1230.250244 1238.697144 1248.689819 1258.714722 1266.471558 1272.847534 1278.426025 1287.994629 1294.54895 1300.963135 1309.560303 1313.32959 1310.478516 1304.203979 1301.384766 1299.522583 1299.004883 1298.842773 1298.26001 1297.122681 1295.156494 1282.641479 1285.69458 1285.780396 1283.722778 1285.212524 1278.760254 1263.585693 1268.425537 1268.864258 1268.655518 1266.571167 1256.39917 1243.254028 1229.289062 1218.551392 1205.247437 1200.672363 1191.143433 1181.116455 1180.696899 1176.899536 1171.71582 1172.51062 1172.670532 1171.754883 1174.10083 1172.060791 1159.922607 1155.868896 1158.528687 1164.909668 1161.625122 1158.553955 1164.669312 1172.587402 1177.366943 1181.297119 1179.631714 1178.455444 1176.556885 1172.178467 1167.514526 1159.27771 1157.326782 1159.669922 1162.465942 1168.281128 1173.094971 1172.848145 1173.261475 1176.931885 1179.390625 1177.838867 1177.870239 1176.746826 1175.305786 1173.374268 1169.036011 1160.144531 1158.905151 1160.628174 1161.01709 1160.418091 1157.77124 1160.406982 1171.752686 1172.101074 1174.068726 1176.030273 1177.679199 1178.974609 1179.793091 1180.138916 1180.28418 1180.055176 1179.716675 1179.145752 1178.688232 1178.690674 1178.682983 1178.888794 1179.514282 1180.192261 1180.724609 1180.958374 1180.760498 1180.568726 1180.355591 1180.194092 1180.155273 1180.085327 1180.091309 1180.127441 1179.85376 1179.447876 1178.884155 1178.125977 1177.55542 1177.282593 1177.397461 1177.680908 1178.064453 1178.239746 1178.16394 1177.683716 1177.113892 1176.393555 1175.412476 1174.281128 1172.265991 1171.380249 1170.893311 1170.804077 1170.124756 1168.734741 1167.117432 1166.122681 1165.679932 1165.389893 1164.987793 1164.516968 1164.137085 1163.625732 1162.834473 1162.271606 1161.740601 1161.275879 1160.763794 1160.426392 1160.242188 1159.821289 1159.597656 1159.562866 1159.701294 1159.791626 1159.932983 1160.147095 1160.378662 1160.695557 1160.721069 1160.742432 1160.887573 1160.791504 1160.874634 1160.960327 1161.047974 1161.202026 1161.360229 1161.341675 1161.239746 1161.030273 1160.717529 1160.296021 1159.821899 1159.429565 1159.068604 1158.611206 1157.89209 1157.610474 1157.615723 1157.426392 1157.468384 1157.064697 1156.519897 1155.887817 1155.125977 1154.402588 1153.616577 1152.953979 1152.333618 1151.803955 1151.389038 1150.998535 1150.67627 1150.454956 1150.36853 1150.217896 1150.657959 1152.60498 1154.603027 1157.317627 1160.827515 1165.783813 1170.302734 1172.560303 1174.145386 1174.013306 1172.356445 1170.100952 1169.323364 1170.010132 1173.916626 1179.915894 1185.970337 1193.980835 1192.705933 1184.60022 1182.920044 1183.046143 1182.291138 1193.585571 1195.108276 1203.067139 1206.277344 1213.717285 1219.087646 1226.674316 1232.553467 1235.427002 1238.012085 1239.042847 1240.354004 1242.395508 1245.56543 1246.243652 1245.006836 1244.829834 1245.221558 1246.607544 1246.440674 1245.960205 1243.391846 1242.205566 1241.317749 1240.059692 1238.052002 1236.163818 1233.890503 1228.778442 1216.771973 1197.928955 1180.852417 1175.325928 1193.010132 1207.368896 1211.032349 1212.748413 1214.203491 1215.68689 1217.516235 1217.091797 1214.081909 1210.913086 1208.32959 1200.170532 1189.063965 1179.439453 1172.223877 1164.711914 1158.435059 1155.821167 1152.268555 1152.287354 1151.692017 1148.3479 1145.147949 1140.978394 1137.514526 1135.703491 1133.989868 1132.392822 1130.664551 1128.923584 1127.218262 1125.256836 1123.478882 1122.262085 1121.864746 1121.57251 1121.3125 1121.050659 1120.73645 1120.312622 1119.781372 1119.435547 1118.917236 1118.490845 1117.974365 1117.621948 1117.114502 1116.49353 1115.891479 1115.199219 1114.597168 1113.808838 1113.140381 1112.487305 1111.957275 1111.537354 1110.943115 1110.41626 1110.176147 1110.411987 1109.752563 1108.559082 1106.976196 1106.299316 1107.448364 1110.306152 1110.232056 1109.610474 1109.248779 1109.562622 1109.959839 1110.280151 1110.67395 1110.961792 1111.194702 1111.409546 1111.969482 1112.429565 1113.122314 1114.064453 1115.085205 1116.379761 1117.619751 1119.053711 1120.530884 1121.861938 1123.164795 1123.435425 1122.704346 1121.935059 1121.463379 1121.435791 1122.055298 1122.27417 1123.240967 1124.555664 1125.369263 1126.104248 1126.384521 1126.40686 1125.648315 1124.775146 1124.240479 1123.189941 1121.855469 1120.106201 1118.151489 1116.633667 1115.751343 1115.161987 1115.463135 1117.24585 1118.901001 1121.409668 1124.530762 1128.290039 1130.455811 1131.173218 1133.65686 1143.555664 1153.475464 1157.191162 1151.344849 1145.651245 1144.989746 1151.459595 1160.008911 1168.700073 1175.433228 1181.400391 1187.374268 1195.158081 1198.391602 1202.345825 1208.286865 1222.087158 1236.844727 1244.928467 1244.792236 1240.28186 1234.424561 1237.26709 1241.232544 1244.076416 1245.299316 1246.059814 1246.273438 1246.462402 1246.472534 1246.18335 1244.979736 1242.266724 1233.435669 1227.231445 1220.320801 1216.49292 1211.598267 1206.60022 1206.783936 1202.526611 1197.965332 1191.666992 1183.022583 1171.814087 1175.80603 1174.473267 1168.77124 1158.653809 1159.012573 1152.04834 1147.371704 1144.201538 1140.451538 1137.279541 1135.797485 1133.702393 1131.33667 1129.338379 1127.612183 1126.08313 1125.098877 1124.391235 1124.084595 1123.841797 1123.126221 1121.245483 1118.291992 1116.973999 1117.001953 1118.299927 1119.965576 1121.435303 1122.567993 1123.239258 1123.726318 1123.838501 1123.685669 1123.300171 1122.62146 1122.250488 1122.248047 1122.245117 1122.232788 1122.296875 1122.314087 1122.598877 1122.788452 1122.96521 1122.684692 1122.23584 1121.808105 1121.355713 1120.929565 1120.716797 1120.692017 1120.760376 1120.702881 1120.502197 1120.143066 1119.709473 1119.311035 1118.22937 1115.748047 1113.735718 1111.891846 1111.099243 1111.182861 1111.225464 1111.337158 1111.759277 1111.956421 1112.055664 1111.832886 1112.197632 1112.551147 1112.468872 1111.738647 1110.361694 1109.49939 1110.462891 1112.493896 1115.203247 1116.677734 1117.053955 1116.845215 1115.86499 1114.211304 1114.606201 1116.710938 1119.335205 1121.142212 1121.076904 1120.918213 1121.299194 1124.922363 1128.959717 1132.743652 1133.466064 1138.289307 1147.717407 1152.390137 1154.976074 1156.011963 1156.470703 1159.823975 1161.249878 1160.971558 1162.457275 1167.885498 1169.590576 1170.165039 1171.396362 1175.807617 1178.509399 1180.341675 1184.479614 1189.814331 1188.393188 1182.244751 1178.453247 1172.995728 1166.409302 1165.290161 1165.815063 1163.807007 1159.174316 1156.031128 1155.885376 1156.307983 1157.792969 1157.196533 1154.743164 1149.154663 1137.356934 +1097.899292 1098.537354 1099.219849 1099.828125 1100.423584 1100.93335 1101.469482 1101.928833 1102.481201 1103.015747 1103.664917 1104.227661 1104.728882 1105.186157 1105.708496 1106.118164 1106.620605 1107.071533 1107.640381 1108.282959 1109.033203 1109.801636 1110.586914 1111.057373 1111.835083 1112.822998 1113.878174 1114.873779 1115.990967 1117.102417 1118.280396 1119.554443 1120.507935 1121.398804 1122.222046 1124.34314 1128.664795 1131.145752 1132.515869 1133.789917 1134.670776 1135.901001 1138.36731 1140.317505 1141.700928 1143.559448 1145.94043 1149.002686 1156.20459 1162.718384 1171.43811 1179.713379 1188.159424 1195.028687 1201.399902 1206.961304 1212.700562 1220.535278 1228.639893 1232.721436 1230.444214 1226.140503 1218.620239 1229.845947 1237.422729 1245.888306 1254.528076 1260.428345 1266.861084 1272.699097 1280.007202 1286.546875 1289.601685 1299.113647 1313.956299 1318.635742 1307.087036 1304.15918 1303.105957 1303.127563 1303.410156 1302.032715 1300.124023 1297.315796 1293.577148 1291.013306 1289.6875 1292.252563 1292.235352 1281.82019 1281.362915 1283.674927 1280.729248 1275.087646 1270.600098 1260.695557 1247.913818 1234.991211 1222.939575 1210.836548 1199.335205 1190.307617 1189.812256 1186.931274 1182.630127 1184.525879 1183.515503 1180.918945 1178.716675 1175.604004 1170.529297 1159.835327 1155.713623 1158.922485 1169.803101 1170.132202 1161.307251 1159.772217 1168.958374 1176.450684 1183.960327 1182.806396 1180.805176 1178.221313 1175.17334 1173.26355 1164.257446 1158.257568 1166.108398 1172.069458 1170.041382 1173.938843 1176.703735 1179.049194 1180.055298 1183.780518 1182.787354 1180.289062 1177.75647 1175.129395 1172.406006 1169.774536 1167.008545 1166.909424 1166.493042 1164.669312 1162.746582 1160.446411 1157.942505 1172.615479 1173.422607 1174.837402 1176.711792 1178.419922 1179.667725 1180.479858 1180.738281 1180.726196 1180.429321 1179.842651 1179.407837 1179.035522 1179.034912 1179.273926 1179.664551 1180.12561 1180.779907 1181.452759 1181.752075 1181.512207 1181.090454 1180.786621 1180.603394 1180.474243 1180.4375 1180.635376 1180.815796 1180.746338 1180.515381 1180.133545 1179.646118 1179.25647 1179.105957 1179.347168 1180.268555 1180.741455 1180.987915 1180.882446 1180.192993 1179.145508 1178.16272 1177.443237 1177.012817 1176.403687 1175.493164 1174.535034 1173.447388 1171.565674 1169.824463 1167.39209 1166.353516 1166.001465 1165.55896 1165.278198 1164.842651 1164.41748 1163.810547 1163.123413 1162.410156 1161.883667 1161.414673 1161.376465 1161.353394 1161.189209 1160.863892 1160.802979 1160.847534 1160.864868 1160.896118 1161.048828 1161.201904 1161.392944 1161.591797 1161.572998 1161.484497 1161.494263 1161.49292 1161.408936 1161.39917 1161.442139 1161.503296 1161.529785 1161.489258 1161.307983 1161.026733 1160.647217 1160.28125 1159.893066 1159.47522 1159.038696 1158.562622 1158.105591 1158.075073 1158.321167 1158.417358 1158.355713 1157.930542 1157.253662 1156.437866 1155.627319 1154.837891 1154.091064 1153.426147 1152.810547 1152.248169 1151.757446 1151.331787 1151.011841 1150.791992 1150.539551 1150.384155 1151.210938 1152.977173 1155.255249 1157.843872 1162.369019 1168.282593 1172.921753 1176.099487 1178.122803 1177.46875 1174.822998 1171.447388 1170.160034 1170.161499 1170.070068 1173.086304 1176.875122 1182.959473 1182.958496 1180.401123 1180.177612 1181.51123 1184.372681 1192.763062 1199.582031 1206.481689 1210.77771 1216.758789 1221.740723 1228.348022 1232.408081 1239.094971 1242.649658 1243.097046 1245.226318 1246.157715 1248.664185 1249.640015 1249.979736 1251.288696 1252.50769 1252.172485 1249.857544 1248.265137 1244.421021 1243.448975 1242.569336 1240.086426 1236.77356 1233.646118 1232.151611 1226.041138 1215.819336 1200.287476 1185.653442 1176.370117 1190.764526 1203.22937 1208.893311 1213.1875 1215.493042 1216.768799 1219.638306 1220.327515 1215.953003 1212.242676 1208.915161 1197.606934 1189.348633 1181.189697 1174.040649 1167.884888 1163.25708 1159.827271 1156.359741 1159.18811 1153.628174 1146.928467 1144.195068 1141.105835 1138.272095 1136.303833 1134.334229 1132.663574 1130.844604 1129.012207 1127.259521 1125.517822 1124.123535 1122.850708 1121.976318 1121.434937 1121.206055 1120.90332 1120.656616 1120.377319 1120.110596 1119.673462 1119.194824 1118.760376 1118.324341 1117.980225 1117.494385 1116.925049 1116.268921 1115.642944 1114.786987 1113.908203 1113.166504 1112.440552 1111.829102 1111.302368 1110.805786 1110.257568 1107.401001 1106.987793 1106.758911 1106.60083 1106.316772 1105.969116 1109.498901 1110.59729 1110.628052 1110.069946 1109.691162 1110.189819 1110.657227 1111.011719 1111.37854 1111.77478 1112.017822 1112.3396 1112.79834 1113.463379 1114.189697 1115.132935 1116.226562 1117.349121 1118.527344 1119.80481 1121.152466 1122.311035 1123.877075 1124.196533 1123.783203 1122.248169 1121.510986 1121.444092 1121.452271 1122.088501 1122.291504 1123.235718 1124.969116 1126.076416 1126.98999 1127.562378 1127.689209 1127.293823 1126.765137 1125.786011 1124.422974 1123.234131 1121.880737 1120.294556 1118.629761 1117.000732 1115.879028 1115.613159 1116.390015 1119.575073 1122.947754 1125.414185 1127.932983 1130.094116 1133.925049 1142.751221 1148.462158 1150.839844 1146.766724 1143.210449 1144.009888 1147.843384 1156.211304 1164.877319 1172.151123 1177.337036 1181.793213 1187.887817 1194.917358 1199.166138 1205.58252 1215.726807 1233.836182 1243.291138 1246.206787 1245.394897 1241.915894 1241.107056 1241.625977 1242.749878 1244.143799 1244.471558 1245.412109 1246.045288 1246.289185 1246.171753 1245.605957 1243.981445 1234.492432 1229.105957 1223.98584 1219.698364 1214.653076 1208.567383 1209.763062 1206.50293 1200.73938 1195.076904 1184.701904 1186.025635 1182.345825 1177.162354 1171.192993 1166.484619 1161.943726 1155.479248 1150.58313 1146.487671 1142.637451 1139.040894 1136.122437 1133.533936 1132.745972 1131.402344 1129.315186 1127.543945 1126.145874 1125.220581 1124.473633 1123.73938 1122.629517 1120.121338 1118.212891 1117.973145 1118.743896 1120.447632 1122.092896 1122.56897 1123.052124 1123.666626 1123.802002 1123.849243 1123.618408 1123.158569 1122.46106 1122.249023 1122.251587 1122.30896 1122.744629 1123.309448 1123.798584 1123.871216 1123.703003 1123.493774 1123.250244 1122.720703 1122.20752 1121.519897 1121.160156 1121.026978 1121.105225 1121.342407 1121.389893 1121.233032 1120.363159 1119.364136 1117.690552 1114.78125 1109.969116 1110.591309 1109.735474 1110.202881 1110.394287 1110.082397 1110.527588 1110.890015 1110.767578 1111.039185 1110.268188 1110.881714 1111.745972 1111.759644 1111.209961 1109.950562 1108.91748 1109.075806 1110.288696 1112.35144 1113.419678 1113.723145 1113.964478 1113.216431 1109.892944 1112.144531 1114.603638 1116.195923 1118.7771 1121.504761 1126.026489 1127.090576 1123.94104 1128.649658 1131.13855 1131.694336 1132.355347 1138.590942 1145.809937 1146.769775 1148.882812 1152.586426 1155.272461 1156.915649 1157.709961 1162.793335 1170.497559 1172.235962 1172.347778 1172.001221 1174.191772 1176.126587 1177.668701 1180.71814 1182.000732 1179.019653 1173.462891 1168.551147 1161.178833 1152.50354 1147.772217 1155.810547 1159.470215 1158.237793 1150.701538 1147.714844 1150.271729 1150.036499 1146.128784 1143.485596 1141.483398 1131.410889 +1097.94873 1098.541382 1099.214111 1099.941406 1100.535034 1101.070312 1101.602417 1102.083496 1102.659546 1103.212891 1103.850708 1104.47998 1105.096802 1105.518799 1106.067627 1106.466797 1106.980591 1107.504639 1107.955444 1108.504395 1109.150024 1109.86145 1110.820801 1111.584106 1112.440918 1113.240967 1114.229736 1115.231445 1116.342285 1117.448242 1118.751221 1119.823242 1120.75354 1121.720947 1122.776489 1126.33728 1131.349121 1133.201538 1134.400513 1137.712402 1140.31604 1141.996704 1142.766968 1141.915649 1142.207153 1143.113647 1144.895752 1147.33728 1153.896851 1159.117676 1166.992065 1174.885254 1184.942261 1190.753662 1194.036743 1195.335083 1202.028687 1208.51416 1218.560547 1222.254395 1219.315674 1213.446289 1219.512573 1226.974243 1234.073242 1242.356079 1249.109131 1255.703369 1264.360107 1270.762573 1278.40564 1283.935913 1288.843018 1295.350342 1312.169434 1325.627197 1318.1604 1311.381226 1310.119263 1309.209351 1308.471436 1305.320312 1303.273682 1301.905884 1299.092163 1295.564575 1292.051514 1294.210571 1295.016235 1290.864746 1289.426392 1288.479004 1284.392944 1278.2052 1269.898804 1260.888916 1245.126343 1230.626221 1224.50769 1212.824585 1202.307129 1210.019043 1209.897461 1203.477905 1196.06311 1196.437744 1197.256226 1190.521484 1182.076904 1176.462402 1169.435181 1160.816772 1156.409546 1159.402588 1169.828247 1172.96228 1169.957031 1166.535522 1168.12085 1171.108154 1179.187012 1184.431641 1182.382935 1180.179199 1176.753784 1170.958252 1158.00354 1160.863892 1172.279175 1174.139771 1175.326294 1177.069336 1180.196899 1183.215576 1182.41687 1183.713745 1183.568359 1180.892212 1178.4729 1173.929688 1170.552002 1170.260254 1171.983521 1172.13208 1171.44751 1168.76416 1165.443115 1162.237549 1159.865479 1172.547119 1173.842773 1175.640381 1177.511719 1179.399536 1180.523682 1181.185425 1181.318604 1181.117188 1180.683716 1180.094849 1179.717041 1179.9646 1180.555542 1180.672974 1180.755371 1181.105469 1181.717407 1182.943726 1182.886597 1182.357056 1181.828125 1181.296265 1180.993042 1180.911377 1180.876709 1181.158203 1181.538696 1181.678955 1181.703979 1181.501587 1181.168213 1181.096802 1181.310425 1181.791382 1182.904175 1183.65918 1183.602905 1183.37146 1182.419312 1180.911621 1179.70459 1179.291138 1179.874268 1180.912231 1182.31665 1179.58252 1175.614258 1172.517944 1170.20105 1167.236328 1166.446289 1166.183105 1165.841309 1165.581543 1165.193237 1164.809082 1164.107788 1163.460327 1162.69812 1162.117798 1161.99707 1162.052734 1162.029541 1162.088135 1162.037964 1162.005493 1161.973633 1162.123901 1162.092529 1162.213623 1162.291382 1162.458496 1162.443481 1162.456177 1162.414429 1162.314575 1162.155151 1162.085449 1161.906372 1161.82019 1161.850952 1161.765015 1161.496826 1161.318237 1160.950073 1160.485962 1160.065674 1159.659546 1159.264648 1158.845215 1158.494263 1158.484009 1158.800659 1159.026245 1159.079712 1159.049072 1158.667236 1157.946167 1157.131592 1156.202026 1155.389282 1154.636963 1153.933716 1153.306763 1152.736328 1152.20166 1151.759033 1151.404053 1151.098267 1150.850342 1151.10498 1152.119751 1153.817505 1155.984863 1158.228271 1162.564331 1168.934448 1173.769897 1179.811157 1183.062744 1182.491089 1178.475952 1174.449585 1172.171265 1171.435303 1170.414795 1169.992188 1169.9646 1174.942139 1176.898682 1177.729004 1179.03772 1181.61499 1186.41626 1193.736328 1202.042114 1210.219238 1215.961182 1222.168457 1228.390869 1233.188232 1236.87439 1242.964722 1245.700439 1246.66626 1248.150024 1249.701782 1251.664307 1252.764404 1254.155518 1256.775391 1258.327881 1257.388062 1254.215088 1252.357788 1248.536011 1246.527832 1243.411377 1239.995483 1235.18335 1231.207886 1226.033325 1221.155029 1211.694946 1197.368164 1182.182495 1181.851074 1195.192749 1205.841187 1209.894409 1215.509644 1217.372437 1217.862549 1218.203857 1217.074707 1213.773315 1210.047729 1204.651245 1198.272461 1190.858032 1185.21936 1176.124268 1170.122314 1164.594727 1160.029663 1159.286743 1158.942261 1151.546021 1145.625488 1143.421143 1140.447998 1137.938599 1136.113281 1134.353516 1132.663452 1130.866333 1129.242676 1127.398438 1125.787231 1124.280518 1122.89917 1121.965698 1121.513672 1121.181519 1120.986816 1120.728027 1120.634644 1120.322754 1119.984741 1119.495361 1119.2677 1118.717529 1118.399536 1117.904663 1117.328247 1116.673462 1115.87207 1115.087036 1114.124512 1113.165283 1112.372925 1111.635498 1111.090576 1110.765137 1110.265625 1108.310791 1107.956665 1108.14917 1108.117798 1108.226196 1108.93811 1110.308838 1110.939087 1111.051025 1110.526733 1110.432373 1110.773438 1111.124512 1111.631348 1112.033081 1112.363892 1112.787109 1113.193359 1113.729126 1114.370605 1115.138184 1116.130493 1117.11084 1118.198486 1119.197754 1120.273193 1121.541748 1122.759399 1124.477905 1124.962891 1124.447266 1122.505127 1121.911011 1121.61853 1121.466797 1121.489136 1121.988525 1122.199219 1123.396851 1125.510132 1127.014404 1128.405273 1129.384644 1129.809326 1129.360962 1128.536621 1127.1875 1126.070923 1124.701294 1123.428345 1121.860107 1119.798218 1117.866333 1117.028931 1116.591797 1117.198853 1120.820557 1123.703979 1126.642944 1129.359985 1133.282959 1139.725098 1146.131714 1149.135986 1140.535767 1137.505005 1143.17041 1148.440918 1160.293823 1164.143066 1169.277222 1173.404907 1175.161255 1180.273926 1186.149536 1196.546387 1203.378906 1210.915771 1224.949707 1237.313843 1244.79187 1245.807739 1245.169067 1243.907104 1242.655273 1242.758301 1243.064209 1244.167358 1244.289795 1245.087891 1246.050537 1246.293091 1246.096191 1245.056519 1236.688354 1231.689941 1227.047485 1222.753052 1218.05603 1213.957275 1211.195435 1207.379272 1203.207764 1197.381348 1197.580933 1192.311279 1183.19812 1181.023315 1176.013428 1173.636841 1170.693604 1160.02771 1153.60083 1148.292603 1144.3302 1140.410278 1136.351807 1134.605957 1134.728882 1133.032349 1130.704712 1128.774658 1127.069092 1125.613525 1124.342773 1123.147217 1120.592285 1121.391113 1122.625977 1120.64856 1120.187622 1121.481689 1122.90686 1123.418701 1123.673462 1123.970215 1123.982788 1123.772949 1123.408081 1122.252686 1122.243774 1122.24585 1122.263916 1123.157104 1123.988525 1124.558472 1124.713501 1124.368896 1124.10144 1123.700928 1123.394531 1122.971802 1122.678833 1122.205322 1121.615845 1121.367798 1121.900146 1122.145874 1122.14624 1122.158936 1121.872559 1120.193848 1117.859863 1114.753784 1111.571655 1109.971313 1109.622192 1109.071411 1109.477905 1109.571655 1109.835571 1110.035889 1109.515747 1109.966553 1109.368774 1110.203613 1110.816406 1111.15625 1110.814697 1109.555908 1108.446045 1108.289917 1109.124634 1110.099976 1110.515625 1111.448364 1112.30896 1111.826782 1110.234741 1110.817139 1112.5979 1111.600952 1116.081543 1122.575073 1131.782837 1138.519897 1137.776245 1132.699951 1134.416626 1135.291138 1134.722656 1133.299438 1136.203491 1143.928345 1146.43103 1148.530762 1154.077271 1158.529297 1163.72168 1170.601318 1175.115234 1177.07019 1176.158447 1174.639893 1174.196411 1174.419556 1173.525269 1172.092285 1168.849243 1167.666382 1162.571045 1156.209717 1148.864014 1142.40979 1139.263794 1145.372803 1151.432739 1151.530518 1148.091064 1142.864258 1143.486572 1142.770752 1135.325073 1132.384277 1133.391724 1128.63269 +1098.058105 1098.6427 1099.298828 1099.874146 1100.529053 1101.087524 1101.560669 1102.203857 1102.869873 1103.586304 1104.106323 1104.701904 1105.277222 1105.882935 1106.414917 1106.841675 1107.342163 1107.861694 1108.279785 1108.784668 1109.42334 1109.909912 1110.900757 1111.860107 1112.809082 1113.726929 1114.624023 1115.674683 1116.813599 1117.953125 1119.119995 1120.274536 1121.485474 1123.037109 1126.026367 1130.801392 1134.628418 1137.537598 1141.258789 1144.526611 1148.643555 1149.321655 1146.830566 1143.427246 1142.487061 1143.106201 1144.720581 1147.628052 1152.40332 1158.154663 1163.922241 1170.2854 1184.405273 1186.1698 1182.720337 1187.192871 1193.446045 1199.197876 1205.303833 1205.281372 1203.632324 1208.661621 1219.499512 1223.034058 1228.889526 1237.085205 1247.099731 1257.006104 1264.507446 1272.396729 1279.993286 1284.572388 1289.474487 1294.837769 1309.110596 1333.84729 1332.827026 1323.488037 1321.399048 1317.755493 1315.199463 1313.253052 1310.11377 1307.708984 1304.859863 1301.111206 1296.525269 1296.904175 1297.188354 1295.0354 1294.639648 1293.248779 1287.714233 1279.382935 1266.480225 1255.182251 1243.717407 1232.168457 1219.951172 1221.306152 1225.353271 1225.930054 1221.443726 1212.26416 1205.349609 1206.09375 1203.30188 1195.802612 1184.573242 1179.366943 1173.717407 1164.837036 1156.932861 1156.904907 1166.07019 1173.359009 1172.130249 1171.290771 1170.261963 1169.817871 1173.415894 1182.32666 1184.415405 1182.887939 1179.186768 1170.901733 1163.370483 1161.608032 1172.638916 1175.877808 1178.334717 1180.288818 1181.289917 1183.813721 1183.954712 1184.265869 1183.785034 1182.68335 1180.543457 1176.594116 1173.168823 1173.60791 1174.411987 1174.005493 1172.985596 1171.373901 1167.632812 1164.170532 1161.893799 1172.678589 1174.25415 1176.360962 1178.711914 1180.700562 1181.830933 1182.068726 1181.98938 1181.513306 1180.998779 1180.443848 1180.867798 1183.05896 1184.122437 1184.531494 1185.274048 1184.956177 1184.976807 1184.60083 1184.299561 1183.575073 1182.997437 1181.923584 1181.423218 1181.353271 1181.409668 1181.732544 1182.265503 1182.588989 1182.469849 1182.673096 1182.707153 1183.176636 1183.646729 1184.748291 1186.029053 1186.794556 1187.34314 1186.807861 1184.784546 1182.624146 1180.88623 1180.771606 1181.831787 1183.254272 1184.074707 1181.630737 1177.075439 1173.322632 1169.689209 1167.052246 1166.949707 1166.582764 1166.398071 1166.206543 1165.848999 1165.331543 1164.609619 1163.925781 1163.283447 1162.686157 1162.486328 1162.55896 1162.687134 1163.017212 1163.117798 1163.207886 1163.264038 1163.348022 1163.39624 1163.503418 1163.530762 1163.632935 1163.585205 1163.505127 1163.345337 1163.224243 1163.039917 1162.77417 1162.482422 1162.257568 1161.99585 1161.817017 1161.458252 1161.207642 1160.754517 1160.378418 1159.845947 1159.234985 1158.90625 1158.79248 1158.824585 1159.089355 1159.381348 1159.62207 1159.616089 1159.522461 1159.108887 1158.422607 1157.606079 1156.701538 1155.80188 1154.9729 1154.267944 1153.735718 1153.252441 1152.636963 1152.095825 1151.606934 1151.264526 1151.603394 1152.166016 1153.196045 1154.478882 1156.174438 1157.834595 1161.353149 1168.525146 1172.900757 1178.649048 1183.507202 1183.081177 1180.208496 1177.207886 1174.99231 1173.819824 1172.188965 1170.357544 1170.070801 1170.751465 1172.799927 1175.337891 1177.902832 1181.157837 1185.937622 1192.201416 1201.272583 1209.632812 1217.927856 1225.708618 1233.093994 1235.921997 1238.79248 1242.741821 1245.732666 1248.280151 1250.561768 1252.893677 1254.883301 1255.691528 1257.34668 1259.995605 1262.039307 1262.766113 1261.133545 1257.836914 1253.939209 1248.831421 1243.291382 1236.116943 1230.361206 1226.175781 1220.707275 1210.986816 1203.610107 1190.508545 1177.835449 1183.845947 1194.036499 1207.666382 1214.473022 1218.720947 1219.746094 1219.461914 1218.439575 1213.478882 1208.830444 1208.272705 1199.635132 1192.040771 1185.808594 1181.360107 1174.109009 1168.517212 1163.670532 1158.858032 1160.245117 1156.006348 1149.94104 1145.103149 1142.508301 1139.446289 1134.661865 1134.682129 1133.720581 1132.445801 1130.990601 1129.269531 1127.706055 1125.970703 1124.293579 1122.674072 1122.026733 1121.670044 1121.312744 1121.115112 1121.124268 1120.949097 1120.624512 1120.314941 1120.040283 1119.663452 1119.244263 1118.805054 1118.269531 1117.610107 1116.934692 1116.103271 1115.195679 1114.254883 1113.240845 1112.293091 1111.554443 1110.837646 1110.500244 1110.363403 1107.714844 1109.203003 1109.894775 1110.127686 1110.159424 1110.41687 1110.874512 1111.357422 1111.557617 1111.471313 1111.315674 1111.464722 1111.842407 1112.202637 1112.604004 1113.139771 1113.601685 1114.077026 1114.608643 1115.259888 1116.041382 1116.896606 1117.861694 1118.76416 1119.595215 1120.676147 1121.510254 1122.969971 1125.350098 1125.942383 1125.327637 1123.181152 1122.23877 1121.860474 1121.554932 1121.480713 1121.61084 1121.990356 1122.219238 1123.783813 1126.556885 1128.851807 1131.01001 1132.331543 1132.105103 1131.324097 1130.246216 1128.836548 1127.653809 1126.173462 1124.331055 1122.260254 1120.448608 1119.33374 1117.69519 1116.664917 1120.141113 1123.474121 1125.52124 1127.50708 1131.109619 1134.869141 1138.521606 1135.910156 1133.106201 1137.8396 1146.743774 1151.728271 1157.86499 1160.900635 1162.919678 1166.131958 1169.769897 1178.599487 1189.616455 1197.220703 1200.951416 1206.1698 1217.055664 1231.152588 1242.644409 1245.815674 1245.71814 1244.462036 1244.097534 1243.274414 1243.067383 1243.202759 1243.917358 1244.224731 1245.753174 1246.588623 1246.77002 1246.055542 1239.641602 1234.319092 1229.427002 1224.058228 1218.750122 1215.927856 1212.485962 1207.847656 1206.553101 1203.468872 1198.042603 1193.949463 1189.354614 1185.179443 1180.482544 1176.353149 1172.551514 1162.389771 1154.778809 1148.476807 1144.944092 1141.858521 1139.114136 1137.349121 1135.611206 1133.363525 1131.450317 1129.625854 1127.664551 1125.681519 1123.718994 1121.923096 1122.118774 1123.515137 1123.857544 1122.692383 1121.515015 1121.677734 1122.863647 1123.666626 1124.173706 1124.251953 1124.161377 1123.830688 1123.107178 1122.348022 1122.87915 1123.194458 1123.860474 1124.713867 1125.454468 1125.539795 1125.26355 1124.831177 1124.200806 1123.717285 1123.212036 1122.858643 1122.235107 1121.944458 1121.874878 1121.860107 1122.290039 1122.492798 1122.58252 1122.521973 1122.533325 1122.21936 1121.521973 1117.064331 1113.357544 1110.698853 1109.479126 1108.623291 1108.303955 1108.318604 1108.532349 1108.409058 1108.045166 1108.209595 1108.279541 1108.909302 1109.341797 1110.210205 1110.124146 1108.941284 1107.870605 1107.662354 1108.12854 1108.639893 1109.008179 1110.36853 1111.527588 1111.260742 1110.078735 1110.239258 1111.045776 1109.541992 1114.380127 1121.265503 1129.933716 1137.313477 1145.664673 1144.331177 1141.903076 1140.812256 1140.282471 1141.053223 1143.415527 1146.812378 1152.093994 1155.505493 1157.7771 1162.307251 1168.208008 1175.114502 1180.487549 1182.493164 1181.492188 1175.169189 1173.032715 1173.468018 1170.739258 1162.122314 1155.995117 1154.645752 1151.877075 1147.400513 1141.289917 1136.278442 1132.165039 1139.243652 1145.406006 1145.653687 1142.71106 1134.279663 1136.147095 1136.802246 1129.015259 1120.435669 1121.500977 1120.952759 +1098.191406 1098.790649 1099.473022 1100.072388 1100.546631 1101.015991 1101.63562 1102.340454 1103.088379 1103.892578 1104.503174 1105.006226 1105.567383 1106.164429 1106.751465 1107.321167 1107.752441 1108.276245 1108.758545 1109.192261 1109.707397 1110.493286 1111.266113 1112.245361 1113.233765 1114.199097 1115.137939 1116.186035 1117.419312 1118.430054 1119.523438 1120.74646 1121.933716 1124.577881 1128.627808 1134.572632 1141.957397 1147.97168 1151.863403 1159.782349 1161.473633 1154.530273 1148.178589 1143.458374 1142.132812 1142.791626 1144.299683 1146.512207 1151.497192 1157.442139 1162.812866 1168.815674 1181.524292 1182.366211 1178.268433 1179.708862 1185.213257 1188.710938 1188.899414 1189.735229 1199.550537 1209.271362 1213.704712 1218.045654 1227.195557 1236.471069 1246.043579 1253.623291 1260.691772 1270.243896 1281.034302 1285.868896 1291.519531 1298.54248 1309.595703 1338.624146 1353.540649 1339.472412 1331.253296 1326.606445 1323.626343 1321.447998 1319.44397 1316.052856 1311.227661 1306.528687 1303.014893 1301.203003 1300.067627 1299.533325 1298.616211 1296.176147 1289.931396 1275.035767 1264.508545 1258.844971 1251.15918 1243.205811 1239.49939 1232.99353 1236.890991 1235.632446 1227.830444 1217.803711 1218.514282 1216.199219 1209.53894 1201.070557 1193.060791 1182.682129 1174.325439 1165.279297 1157.486206 1157.86792 1157.924927 1168.9198 1171.882935 1171.940308 1171.219849 1170.35437 1172.353394 1180.209961 1185.006958 1184.828369 1182.856567 1176.886353 1171.642944 1165.936646 1171.012939 1176.7948 1181.286621 1182.654053 1183.623169 1184.585205 1184.907593 1184.900146 1184.589722 1183.810669 1181.853516 1179.608398 1177.393066 1176.570923 1176.436401 1175.726929 1174.398804 1172.519165 1170.46521 1168.121094 1163.028809 1172.693237 1174.93335 1177.480225 1180.428833 1182.87915 1183.11731 1182.925537 1182.709229 1182.2229 1181.404297 1181.4104 1183.723999 1185.726807 1187.406738 1188.629517 1189.765381 1189.481079 1189.265137 1188.583374 1187.39624 1186.285889 1184.57019 1182.616333 1181.979736 1181.778931 1181.941406 1182.229614 1183.045044 1183.544556 1184.187744 1184.706909 1185.872314 1186.45459 1186.747925 1187.809082 1188.823242 1190.354004 1192.196411 1192.014771 1189.197876 1183.523193 1182.061523 1182.190308 1183.317261 1184.1698 1184.479736 1181.968628 1176.496582 1171.876343 1168.44458 1167.563965 1167.474243 1167.36438 1167.223633 1166.988159 1166.638062 1166.024292 1165.224365 1164.545776 1164.089478 1163.57373 1163.104126 1163.106689 1163.503174 1163.870728 1164.182617 1164.398438 1164.599976 1164.717529 1164.786865 1164.850708 1164.926147 1164.9646 1164.89917 1164.689087 1164.484863 1164.303833 1163.973022 1163.517822 1163.151611 1162.81543 1162.454224 1162.029907 1161.63562 1161.154907 1160.656738 1160.165039 1159.393066 1158.897949 1158.78479 1159.023682 1159.412354 1159.704834 1159.886963 1159.995483 1159.91333 1159.739502 1159.382935 1158.68335 1157.828247 1156.976929 1156.155273 1155.398926 1154.689087 1154.127686 1153.569092 1152.983154 1152.434326 1151.910889 1151.565552 1152.266846 1153.064087 1154.175049 1155.328613 1156.848389 1158.335693 1161.683105 1167.807617 1169.636108 1170.873413 1178.647827 1181.453125 1180.609863 1179.116943 1177.719238 1176.377319 1174.665771 1173.010742 1172.014648 1170.445679 1171.730469 1173.92981 1176.400513 1179.624756 1183.311157 1193.649536 1201.353882 1209.779907 1218.128418 1226.172607 1232.895386 1233.187134 1238.273071 1242.171021 1243.722046 1249.019897 1252.605591 1255.400146 1258.004517 1259.418701 1261.271973 1263.824829 1265.779663 1268.065796 1268.974609 1264.12854 1256.835815 1250.657471 1245.164795 1234.357056 1226.493042 1218.300537 1213.63208 1205.615723 1191.789185 1180.389648 1187.106812 1202.807007 1205.972412 1206.62207 1217.234009 1221.469849 1222.421021 1221.46582 1220.708008 1216.774536 1207.161133 1200.815674 1195.193115 1185.108521 1178.905151 1171.593994 1168.13269 1163.712158 1161.2677 1157.790039 1149.124023 1149.284058 1147.876953 1144.591187 1142.184814 1139.032471 1135.933228 1134.405884 1133.361572 1132.520752 1131.206299 1129.689819 1128.020508 1126.392334 1124.752808 1123.490723 1122.554199 1121.93396 1121.497803 1121.319214 1121.30188 1121.301636 1121.116089 1120.870483 1120.471558 1120.137329 1119.68457 1119.184692 1118.563232 1117.948364 1117.184326 1116.25415 1115.341919 1114.234009 1113.289917 1112.352173 1111.466187 1110.594482 1109.450073 1108.521484 1110.226807 1110.332153 1110.643677 1110.770874 1110.847534 1111.131836 1111.457275 1111.819946 1112.063599 1112.133911 1112.154297 1112.421387 1112.573975 1112.872925 1113.221069 1113.734985 1114.227661 1114.844849 1115.428345 1116.064819 1116.794922 1117.704468 1118.483643 1119.228027 1120.033447 1120.708984 1121.476074 1123.296387 1126.757568 1127.996216 1127.045776 1124.129395 1122.067749 1122.708374 1122.473633 1121.983032 1121.591431 1121.672363 1121.989746 1122.652466 1125.422852 1128.838379 1132.303589 1134.146362 1134.646973 1134.268066 1133.146118 1131.78833 1130.404053 1129.043091 1126.993408 1124.4552 1123.092651 1122.31665 1119.450684 1117.129395 1119.358765 1121.864624 1123.345947 1124.302002 1127.286255 1131.121826 1131.998169 1131.897949 1134.224365 1139.269531 1145.805176 1148.569336 1151.462402 1154.602783 1155.523193 1159.948975 1171.318359 1177.429321 1185.301147 1193.35083 1198.571289 1204.356689 1212.891113 1224.070557 1237.213623 1245.245361 1245.887939 1244.865845 1244.427002 1244.21106 1244.032715 1243.388306 1243.502441 1243.885376 1245.837891 1247.187866 1247.458984 1247.123535 1242.411377 1237.208862 1232.487793 1226.545898 1221.404175 1218.331543 1214.950439 1212.033203 1210.093384 1207.252075 1201.574219 1197.996826 1192.409912 1185.193115 1179.140869 1172.722778 1169.564209 1159.275513 1152.125244 1146.183594 1144.666504 1143.238647 1142.27771 1139.526245 1135.981079 1133.691406 1132.313965 1130.731567 1128.373657 1125.640137 1123.661377 1122.632568 1124.016357 1124.973511 1125.020874 1124.310181 1123.111694 1122.525391 1123.229248 1124.239746 1124.71167 1124.706299 1124.535278 1124.119263 1123.606445 1123.343994 1124.107056 1125.620728 1126.328247 1126.910522 1126.962769 1126.573975 1125.84729 1125.079712 1124.061279 1123.285767 1122.730103 1122.286377 1121.975342 1120.385986 1120.063843 1120.407715 1121.84082 1122.756348 1122.653442 1122.760376 1122.733765 1122.389404 1122.011475 1117.930908 1114.182861 1111.710449 1110.020508 1108.547607 1107.745728 1107.110718 1106.638062 1106.331177 1106.175171 1106.211426 1106.498413 1107.021729 1107.731201 1108.439331 1108.53125 1107.686035 1106.969116 1106.817627 1107.064087 1107.460327 1108.141113 1109.520996 1110.845215 1110.80249 1109.850342 1110.026978 1110.195312 1109.426636 1113.061401 1118.849731 1124.954956 1133.984131 1144.933105 1148.454346 1148.379761 1144.687378 1143.021118 1147.750854 1147.431763 1148.220947 1157.086792 1161.967529 1169.70752 1173.248291 1176.994995 1184.371216 1194.994141 1187.874634 1179.78064 1170.649658 1169.563843 1171.125 1170.764282 1157.402344 1145.585205 1143.536255 1143.055542 1139.31665 1134.055542 1129.808228 1127.930664 1135.428101 1139.828979 1139.765625 1138.072632 1132.613159 1130.488037 1128.391113 1122.717529 1116.887695 1112.687256 1113.742065 +1098.224609 1098.88501 1099.497192 1100.051392 1100.528198 1101.134399 1101.781982 1102.501709 1103.304443 1104.123901 1104.826294 1105.417603 1105.929932 1106.502075 1107.14978 1107.735962 1108.236572 1108.709717 1109.218018 1109.780396 1110.165894 1110.671387 1111.742676 1112.653198 1113.619141 1114.630371 1115.633057 1116.834595 1117.890503 1119.155029 1120.126465 1121.147583 1122.684692 1125.616699 1130.156372 1134.47522 1140.96167 1145.986816 1147.094116 1149.25415 1148.240845 1145.818237 1142.328003 1140.672852 1141.252686 1142.458618 1144.236572 1146.232422 1149.831177 1155.297241 1160.181885 1165.702881 1172.140259 1174.175659 1170.222046 1174.892822 1177.868774 1180.360962 1180.496704 1187.372925 1197.680786 1204.39624 1209.918213 1215.653564 1221.544067 1229.782593 1239.75 1247.270142 1253.488647 1264.232788 1280.403931 1285.72168 1292.570557 1300.912354 1313.339478 1343.054565 1355.584717 1358.40564 1351.706665 1343.221802 1332.907227 1327.39856 1324.887695 1321.719482 1317.411255 1311.03064 1305.057861 1303.360107 1303.404053 1303.275513 1303.072021 1299.105347 1290.003052 1281.508545 1279.108032 1273.49292 1269.631226 1263.260376 1259.14502 1245.28479 1247.408447 1245.648315 1234.915771 1231.385498 1233.12439 1227.692993 1217.124146 1206.123291 1198.384277 1182.782104 1173.853027 1168.567261 1162.619507 1162.303955 1162.157837 1166.470581 1171.309082 1172.059326 1171.895264 1171.025391 1170.803223 1177.803345 1184.421753 1185.224365 1184.606934 1179.969238 1173.38208 1169.764771 1173.318848 1178.610107 1182.73645 1184.267578 1184.688599 1185.313965 1185.572144 1185.580444 1185.363159 1184.512451 1183.315308 1181.655762 1179.874878 1179.185669 1178.66748 1177.588501 1176.103638 1174.307861 1172.720947 1171.792114 1167.67041 1172.307739 1175.825317 1178.849243 1181.358643 1183.52417 1184.616821 1184.499756 1183.766602 1183.069702 1182.429688 1183.848267 1186.678955 1188.733032 1191.16687 1192.963989 1194.750977 1194.444458 1194.218994 1193.414795 1191.685547 1189.559692 1187.169067 1184.854492 1183.043701 1182.46521 1182.396118 1182.62793 1183.526245 1185.422241 1187.002441 1188.980469 1191.143921 1191.477051 1190.951538 1191.081421 1191.817383 1193.38501 1195.861938 1196.052612 1194.426636 1186.509399 1182.865723 1183.266602 1183.977173 1184.69519 1184.704956 1180.49231 1175.140381 1170.488281 1168.04126 1168.094238 1168.134155 1168.334595 1168.271851 1168.018799 1167.588989 1166.84729 1165.852661 1164.983276 1164.562622 1164.112305 1163.570068 1163.932373 1164.443481 1164.983521 1165.432007 1165.789551 1165.985718 1166.238037 1166.294556 1166.367798 1166.413696 1166.349854 1166.195923 1166.065918 1165.824829 1165.470581 1164.995239 1164.466797 1163.978149 1163.463135 1162.99646 1162.502197 1161.96228 1161.473999 1160.809692 1160.151733 1159.262817 1158.811401 1158.966309 1159.592651 1159.956665 1160.187866 1160.283447 1160.264282 1160.099976 1159.878906 1159.561646 1158.849731 1158.108765 1157.233643 1156.462524 1155.739746 1155.152344 1154.515625 1153.927612 1153.329834 1152.749146 1152.192383 1151.86731 1152.401123 1153.443604 1154.588013 1155.922729 1157.760498 1160.711304 1165.643311 1171.207153 1172.853149 1174.643555 1178.618164 1182.521606 1182.580322 1181.901855 1180.851196 1179.302002 1177.983765 1176.311401 1174.921509 1173.065186 1170.838135 1171.787354 1174.936401 1178.845093 1184.88208 1191.612549 1198.547363 1205.869263 1213.266968 1219.920898 1226.195068 1232.246948 1240.670166 1245.391113 1247.733643 1251.428711 1254.653687 1256.819092 1260.01123 1262.499023 1264.93457 1267.325928 1271.487793 1274.452637 1274.610474 1269.336426 1259.243042 1251.555542 1245.635132 1232.822632 1224.651855 1215.520752 1204.613281 1199.655518 1185.979736 1185.752075 1205.172607 1215.075073 1218.715576 1218.917358 1221.146851 1223.935669 1224.38623 1221.984009 1221.061646 1218.198242 1211.015015 1201.897705 1189.204834 1180.425171 1171.927856 1168.602905 1164.974854 1158.181152 1157.892944 1153.998169 1147.690918 1147.04126 1146.08606 1145.353882 1142.59375 1139.244141 1136.454224 1134.552612 1133.599731 1132.880615 1131.821777 1130.246216 1128.481201 1126.852539 1125.438599 1124.165161 1123.183228 1122.172241 1121.696655 1121.581299 1121.645142 1121.717651 1121.637085 1121.453125 1121.004517 1120.541382 1120.050659 1119.527588 1118.963989 1118.193359 1117.357544 1116.483398 1115.499878 1114.469604 1113.445068 1112.497925 1111.592285 1110.662109 1109.152954 1110.292969 1110.801147 1110.897217 1111.088135 1111.349365 1111.5271 1111.784424 1112.09729 1112.298096 1112.581665 1112.744385 1112.889648 1113.161987 1113.427002 1113.569214 1113.90625 1114.30957 1114.899414 1115.520996 1116.166504 1116.880493 1117.549927 1118.203613 1118.940796 1119.711914 1120.484497 1121.179077 1121.60791 1122.823853 1129.793213 1131.035034 1129.488647 1126.891113 1125.005615 1124.982788 1124.512695 1123.414429 1121.953613 1121.812256 1121.908691 1122.022827 1124.218506 1127.54834 1132.152588 1135.429688 1134.812988 1134.638672 1134.760986 1134.44458 1133.474731 1132.154663 1129.794067 1127.484619 1125.900513 1124.32373 1121.135864 1117.717285 1118.702759 1119.680298 1120.75061 1121.345581 1124.244507 1127.855225 1130.076294 1132.240601 1135.383789 1138.165894 1141.986572 1144.348267 1145.500122 1146.941162 1154.052856 1160.1698 1167.748291 1173.11438 1179.82019 1185.602417 1197.018066 1202.739624 1209.921631 1220.030518 1230.553223 1239.358276 1243.986694 1244.660767 1244.668823 1244.770996 1244.729248 1244.414795 1244.493652 1244.693848 1247.067139 1247.967163 1248.227905 1247.855835 1244.643188 1239.79126 1234.717896 1229.40979 1224.560791 1220.733765 1217.064819 1214.636841 1211.862061 1208.058838 1203.066162 1196.262451 1195.687256 1185.91626 1177.589233 1170.364136 1166.833374 1159.241821 1149.337524 1147.534668 1147.12439 1145.48938 1145.605103 1143.649048 1138.997681 1135.540894 1133.807983 1132.872437 1128.667969 1125.615234 1124.437866 1125.093506 1126.388184 1127.688599 1127.512207 1126.713745 1125.675537 1125.006104 1125.101807 1125.343872 1125.459351 1125.419556 1125.104736 1124.909668 1124.505615 1124.470093 1126.83313 1129.344727 1129.809326 1129.336304 1128.608765 1127.656738 1126.511353 1125.022095 1123.632324 1122.68335 1122.175415 1121.690308 1120.726807 1119.355835 1118.722778 1118.45459 1118.967773 1119.889526 1121.017456 1121.232056 1121.031616 1121.196167 1119.46228 1116.777466 1114.051392 1111.785156 1110.229858 1108.814575 1107.342651 1106.022339 1104.69519 1103.819946 1103.502197 1103.815186 1104.353394 1105.122681 1105.562744 1105.951294 1105.999634 1105.652466 1105.400391 1105.437134 1105.871582 1106.418457 1107.278809 1108.712036 1109.561523 1109.674316 1108.953003 1109.641846 1109.028442 1109.122192 1112.428467 1116.246094 1120.854858 1129.529541 1137.0802 1138.285767 1139.464966 1138.235718 1139.463623 1140.783813 1140.188965 1143.995972 1152.421143 1159.582764 1165.204834 1170.892212 1177.073242 1184.908081 1193.476929 1181.844971 1171.942871 1164.701294 1159.993042 1162.359375 1162.874023 1159.416992 1145.860474 1135.772949 1135.593018 1134.016602 1128.409546 1123.944214 1121.294434 1132.007935 1136.660156 1135.346802 1133.493164 1128.35376 1124.533936 1123.288696 1111.626099 1109.571411 1108.266357 1108.130005 +1098.12439 1098.87207 1099.470337 1099.977051 1100.585938 1101.184937 1101.901611 1102.653809 1103.578857 1104.444214 1105.158203 1105.884155 1106.31604 1106.853516 1107.413452 1108.096436 1108.697754 1109.242432 1109.724976 1110.275513 1110.892334 1111.474121 1112.220215 1113.168945 1114.083496 1115.078491 1116.206543 1117.389648 1118.56958 1119.754639 1121.089844 1121.686523 1122.436035 1126.044189 1129.76062 1132.647949 1135.430542 1139.055176 1140.42688 1140.236206 1138.825928 1135.330933 1134.726685 1137.960083 1140.315063 1141.991211 1143.835815 1145.388916 1147.46582 1152.341187 1156.795776 1160.104248 1165.653198 1166.890869 1167.388306 1170.104858 1169.952271 1172.729492 1179.253662 1188.899414 1197.573608 1200.922729 1206.687988 1209.031738 1215.525391 1225.408691 1234.427612 1242.22229 1249.231201 1258.675293 1274.955811 1284.234131 1292.281616 1301.12439 1316.998901 1339.39563 1347.592651 1354.530396 1357.109497 1359.823486 1358.494751 1341.956787 1330.644287 1326.985962 1322.616211 1316.473267 1312.184204 1309.038696 1309.165405 1310.398804 1309.555542 1305.975708 1296.658813 1293.985718 1289.446167 1283.896484 1280.963501 1274.22168 1267.786865 1257.382935 1261.962769 1259.733154 1249.575073 1251.519775 1247.721436 1239.79895 1225.437866 1208.878418 1196.998413 1179.907227 1175.924805 1170.421997 1170.190063 1170.405273 1168.854492 1168.491455 1169.75647 1171.22583 1172.119385 1172.391235 1170.813965 1175.410522 1183.443848 1184.950928 1185.157715 1183.305908 1178.302368 1174.552856 1177.126587 1180.774048 1183.888794 1184.832886 1185.574219 1186.098633 1186.414429 1186.377319 1185.906982 1185.192261 1183.93396 1182.989624 1181.724487 1181.320801 1181.187012 1179.651489 1177.619751 1175.649658 1173.818359 1172.580322 1170.516479 1173.282593 1176.5896 1180.088745 1182.561401 1184.034668 1185.418091 1185.887573 1185.602539 1184.957031 1185.472168 1187.635132 1189.988403 1192.279175 1194.5625 1198.356079 1203.503174 1202.946777 1201.389282 1198.896729 1196.101074 1193.706299 1191.848511 1188.959106 1185.566528 1184.614136 1184.513184 1183.140625 1183.506714 1187.34021 1190.244385 1193.814453 1197.354248 1196.536255 1194.184692 1194.722412 1194.598022 1193.549194 1194.123535 1193.686157 1191.411621 1186.817139 1183.693237 1182.033936 1182.367798 1184.12207 1184.19519 1177.728027 1172.426636 1168.577026 1168.897583 1169.218872 1169.34375 1169.377808 1169.328125 1169.219482 1168.791504 1167.838379 1166.424316 1165.306763 1164.724731 1164.325562 1164.493774 1164.847168 1165.560913 1166.296387 1166.891357 1167.30127 1167.637573 1167.765747 1167.853149 1167.823364 1167.852051 1167.698242 1167.574585 1167.262939 1166.936646 1166.522461 1166.087524 1165.506348 1164.893311 1164.414062 1163.770508 1163.190063 1162.606567 1161.939697 1161.270752 1160.515747 1159.45752 1158.786255 1159.555298 1160.092407 1160.471436 1160.620239 1160.660034 1160.574341 1160.362549 1160.047852 1159.569092 1158.963013 1158.269775 1157.57605 1156.812134 1156.184204 1155.636108 1155.132935 1154.467773 1153.820801 1153.116089 1152.577637 1152.334595 1152.286743 1153.494751 1154.658936 1156.008057 1158.004761 1161.446045 1166.659546 1171.828247 1175.868774 1179.738647 1183.348755 1184.95752 1185.196533 1184.477661 1184.021362 1182.619751 1181.292969 1179.500122 1178.167725 1176.633667 1174.925293 1174.867065 1175.744385 1177.006592 1182.332642 1187.473389 1192.736328 1197.821899 1206.340942 1216.366821 1225.653198 1235.4021 1243.504395 1248.123169 1251.935425 1255.473999 1257.692871 1259.369263 1262.325195 1264.977417 1267.29126 1274.880981 1279.431152 1280.147461 1278.567505 1272.418091 1260.625488 1251.784546 1244.131958 1230.084717 1222.138428 1210.039673 1194.429688 1188.351074 1191.898926 1199.376953 1214.959229 1222.128418 1222.994141 1223.391846 1225.164307 1228.734497 1230.100708 1219.121582 1217.075195 1212.318115 1208.379517 1201.111572 1192.116699 1183.067749 1173.807373 1171.204468 1168.324219 1165.396362 1162.152588 1159.226318 1155.669312 1150.939575 1148.213257 1147.027954 1143.509521 1139.713745 1136.94104 1135.285034 1134.759766 1134.01062 1132.747314 1130.769409 1129.024902 1127.471191 1126.069946 1124.830688 1123.743164 1122.564819 1121.890137 1121.803101 1122.117554 1122.114258 1122.024658 1121.900269 1121.470337 1121.020996 1120.380615 1119.911865 1119.25 1118.534546 1117.662109 1116.74231 1115.787598 1114.700317 1113.672485 1112.792847 1111.901489 1111.093018 1110.38623 1109.63623 1110.702271 1111.031372 1111.246094 1111.639771 1111.884888 1112.189941 1112.451904 1112.771484 1113.041138 1113.2854 1113.494995 1113.831909 1114.088257 1114.374634 1114.582397 1114.97522 1115.397583 1116.057861 1116.772095 1117.443604 1118.163818 1118.867676 1119.555542 1120.245483 1121.122437 1122.172363 1123.887451 1128.014038 1134.360474 1134.163208 1132.609009 1130.771362 1128.786499 1128.346802 1128.0625 1126.742676 1124.395142 1123.529053 1122.631958 1121.999023 1122.059326 1124.11731 1128.598022 1132.160889 1132.866699 1133.218872 1133.900879 1135.052246 1135.468872 1134.900635 1132.814453 1130.376709 1128.281006 1126.249268 1123.265137 1117.656006 1118.657837 1118.767578 1120.885132 1119.703613 1122.974854 1125.640137 1129.348267 1132.875244 1136.046753 1136.644897 1137.871338 1144.858398 1148.17981 1152.835205 1155.31311 1158.028076 1164.11377 1169.467529 1176.804932 1185.218872 1194.915405 1199.407227 1206.890625 1214.119263 1222.093384 1230.075562 1234.831421 1240.420044 1244.237305 1244.734619 1245.172119 1245.934448 1246.522705 1247.229004 1248.000732 1248.266846 1248.482544 1248.05188 1245.73645 1241.761841 1236.434692 1230.841431 1226.633545 1221.570435 1218.337524 1217.321289 1214.370483 1209.185303 1206.298462 1199.680542 1196.69165 1190.248291 1182.401978 1178.332764 1173.596436 1160.823853 1157.449585 1156.803101 1153.780762 1150.873901 1149.338135 1147.508667 1143.930786 1138.155273 1136.1604 1134.25354 1128.416382 1126.284546 1126.821411 1127.942993 1129.961426 1131.65979 1131.049438 1129.753052 1128.518555 1127.680664 1127.238403 1126.92041 1126.560547 1126.266724 1125.91333 1125.640991 1125.248535 1126.816895 1131.018433 1134.546265 1133.220825 1131.496216 1130.122681 1128.957642 1127.372681 1125.147827 1123.036987 1122.101074 1121.234985 1120.132202 1118.933472 1117.873901 1116.913574 1116.357544 1115.726929 1115.539307 1116.30542 1117.158813 1117.568848 1116.923096 1115.042969 1114.435059 1113.342407 1112.006348 1110.358521 1109.306519 1107.055054 1105.144531 1103.010254 1100.338989 1100.141479 1101.223267 1102.124268 1102.903931 1103.404663 1103.720093 1103.596802 1103.330444 1103.273804 1103.772705 1104.395386 1105.306885 1106.229492 1107.262451 1107.833496 1108.05127 1107.792847 1107.826782 1107.997681 1108.728271 1110.93042 1114.642334 1119.146851 1124.256958 1130.274536 1130.114258 1130.465332 1131.063232 1132.154663 1132.668701 1132.286987 1134.624878 1143.962891 1149.978027 1156.939209 1164.985718 1172.078491 1183.9021 1186.734131 1176.658569 1165.83606 1158.288696 1153.687012 1154.752319 1156.010254 1151.479492 1142.698242 1133.022095 1129.423096 1127.012085 1122.905029 1120.554932 1120.001343 1127.194458 1133.993896 1132.113525 1128.14502 1125.021362 1120.442017 1120.685547 1111.716797 1107.495361 1105.000244 1103.835083 +1098.051392 1098.849487 1099.401123 1100.115234 1100.69812 1101.281982 1102.074829 1102.816162 1103.823975 1104.746582 1105.54126 1106.207275 1106.855347 1107.246826 1107.783447 1108.303101 1109.068726 1109.73645 1110.25293 1110.915405 1111.502197 1112.209473 1112.844971 1113.688477 1114.626953 1115.699219 1116.814087 1117.953613 1119.161743 1120.474243 1121.833984 1123.043579 1124.138672 1125.958984 1128.47522 1131.060303 1133.098877 1133.987305 1134.761353 1134.317139 1133.648193 1134.017212 1135.200806 1137.281982 1139.613037 1141.70459 1143.2677 1144.711182 1146.494873 1149.975952 1153.713501 1156.508545 1158.922852 1160.278687 1163.342896 1166.531006 1169.089844 1173.787476 1181.098999 1185.180664 1190.832886 1192.937134 1192.278931 1200.576416 1209.148682 1220.774048 1227.361206 1232.507568 1244.067383 1254.074707 1265.009644 1279.362671 1289.739502 1299.834717 1313.345093 1324.473389 1330.900146 1340.55249 1347.945068 1354.320312 1355.92981 1352.1604 1341.436157 1332.169312 1329.924316 1328.492798 1325.887573 1324.419678 1322.181274 1320.287476 1317.465454 1311.07666 1304.846802 1301.431396 1297.084961 1292.668335 1287.371338 1280.916626 1274.251953 1267.464111 1268.013794 1269.073364 1263.636597 1258.622559 1250.301758 1240.578247 1226.094482 1207.525757 1195.564453 1183.230103 1179.078125 1173.472412 1173.648315 1173.532104 1172.209595 1170.069458 1169.757324 1170.277588 1170.911743 1173.896362 1173.388794 1177.770142 1183.303955 1184.834961 1185.330322 1185.061279 1183.934814 1181.454224 1180.98877 1182.73584 1184.650269 1185.512329 1186.322388 1186.978394 1187.162476 1187.093506 1186.634033 1185.893799 1184.881226 1184.154541 1183.550293 1183.434692 1183.440674 1181.615479 1178.906006 1176.616455 1174.803711 1173.171631 1171.056519 1173.305176 1177.48584 1181.063354 1183.490234 1185.105103 1186.399658 1187.104736 1187.740845 1188.8479 1190.651733 1192.624146 1194.227173 1194.749023 1202.070312 1209.585815 1212.494995 1212.075806 1209.705444 1207.45166 1203.937012 1200.086426 1196.961182 1194.370972 1190.97522 1188.385498 1187.436279 1186.06665 1185.983276 1189.870361 1193.089722 1196.519897 1206.187622 1207.946533 1206.726562 1202.141479 1196.109741 1193.732056 1193.24292 1191.444458 1186.071411 1183.078491 1182.687988 1180.55835 1178.447388 1178.856445 1175.553711 1170.66394 1169.307251 1170.349609 1170.690674 1170.546021 1170.345703 1170.276978 1170.376099 1170.371338 1170.070923 1169.145508 1167.060303 1165.499146 1165.077637 1165.249146 1165.635132 1166.177734 1166.927612 1167.765381 1168.503418 1169.005493 1169.244629 1169.27832 1169.202515 1169.159302 1169.050415 1169.10083 1168.830811 1168.467651 1168.05603 1167.535522 1167.073975 1166.500366 1165.961426 1165.340454 1164.658936 1164.092285 1163.397705 1162.655762 1161.930298 1161.15332 1160.389893 1159.973999 1160.223511 1160.605103 1160.949219 1161.065552 1161.091675 1160.85498 1160.522461 1160.019531 1159.436279 1158.952271 1158.354492 1157.696777 1157.260254 1156.666504 1156.068359 1155.642578 1154.980225 1154.275146 1153.591553 1153.013306 1152.811157 1152.530762 1153.438721 1154.782349 1156.178223 1158.011963 1161.119507 1166.388672 1171.002686 1176.251099 1181.746826 1184.844238 1186.255615 1186.85022 1187.471436 1187.172729 1186.348145 1184.467163 1182.317017 1181.515137 1180.501587 1179.7146 1181.673218 1183.220581 1182.422607 1180.792969 1184.046753 1190.090942 1197.624512 1208.79895 1218.393677 1228.219604 1236.338989 1244.035767 1249.198364 1254.425049 1258.008057 1260.357422 1262.439941 1265.33252 1268.030518 1274.209839 1282.740723 1282.24353 1280.494385 1278.888184 1272.514648 1260.85022 1249.843018 1235.794189 1225.778564 1214.457642 1193.374756 1194.562378 1206.938965 1213.079102 1214.008301 1219.946167 1223.674072 1225.633667 1226.609253 1228.106812 1231.626587 1232.989258 1228.748779 1220.486206 1211.828003 1200.088257 1194.359375 1186.413696 1185.20166 1185.276855 1180.613281 1174.297852 1171.918091 1166.03186 1161.467529 1158.931152 1149.754761 1146.110474 1145.470703 1142.78186 1139.074585 1136.138916 1135.220215 1134.80481 1134.671875 1133.505127 1131.188477 1129.532104 1128.122559 1126.727539 1125.360229 1124.12439 1122.84082 1122.067627 1122.183838 1122.601929 1122.689331 1122.576294 1122.295288 1121.794556 1121.280029 1120.7323 1120.146606 1119.529785 1118.832642 1118.098511 1117.174683 1116.236206 1115.146484 1114.040283 1113.149902 1112.267456 1111.386108 1110.212891 1109.802734 1110.541382 1111.056763 1111.417603 1111.737427 1112.12793 1112.486694 1112.661865 1113.112793 1113.466309 1113.804321 1114.067261 1114.387207 1114.723755 1115.054565 1115.285156 1115.643921 1116.05896 1116.547729 1117.204346 1117.905518 1118.681519 1119.385986 1119.995972 1120.611816 1121.333862 1122.78894 1126.831909 1132.743774 1135.776489 1135.731079 1134.975708 1133.462036 1131.202637 1131.057373 1132.640259 1133.693848 1130.551514 1127.648315 1125.86438 1124.543213 1122.658447 1121.927734 1124.0625 1128.990845 1131.371826 1132.4375 1133.932251 1135.242798 1135.810059 1135.7677 1134.608521 1132.293701 1131.25415 1130.36145 1127.351685 1123.575562 1121.343872 1122.775146 1123.401245 1121.37793 1120.802856 1124.780151 1128.930542 1133.047485 1135.61792 1134.513428 1136.045654 1144.507202 1152.83252 1159.987549 1159.214722 1158.255615 1161.444946 1169.345947 1174.441528 1181.127563 1185.41687 1194.830078 1201.341675 1207.142944 1211.608521 1214.539795 1217.934082 1225.033203 1233.881348 1240.959595 1244.181641 1246.806274 1247.642334 1247.896729 1248.242432 1248.024414 1248.384399 1248.237793 1246.306519 1243.4552 1238.714722 1232.25769 1230.189819 1225.644653 1222.096191 1221.07373 1218.696533 1212.685791 1206.494141 1199.647095 1194.721191 1191.568726 1187.192139 1181.583618 1172.008057 1164.925049 1163.923096 1162.796021 1159.210938 1155.206177 1151.026489 1148.151245 1144.559937 1138.844116 1136.004028 1133.046997 1128.40686 1129.057129 1130.031738 1131.360107 1133.562012 1134.927612 1133.976562 1132.288452 1130.866821 1129.755493 1129.103027 1128.456665 1127.850708 1127.171875 1126.862183 1126.56189 1126.795166 1129.585938 1133.632812 1135.103027 1134.477905 1132.641235 1131.072998 1130.40332 1128.831299 1125.334229 1122.758179 1121.201538 1119.820557 1118.355835 1116.777344 1115.652466 1115.106934 1114.39978 1112.865967 1109.788696 1111.599609 1113.037964 1114.033936 1113.347168 1109.760742 1112.120239 1112.649902 1112.071045 1110.832031 1109.130493 1106.802124 1104.47998 1101.827026 1098.850342 1097.841309 1098.660156 1100.032104 1100.947021 1101.590576 1101.736328 1101.477295 1100.819336 1100.740845 1101.588257 1102.884521 1103.929199 1104.886597 1105.67334 1106.180298 1106.37561 1106.502075 1106.683228 1107.17627 1108.114014 1109.472778 1111.899536 1114.904053 1119.508301 1123.055298 1121.45874 1124.540894 1122.948853 1124.046631 1123.855103 1130.845093 1132.440308 1134.830078 1145.691528 1154.840942 1163.499146 1173.920166 1184.110474 1181.715332 1169.409546 1161.172729 1153.483154 1146.125366 1148.829102 1149.317261 1145.438965 1137.234131 1129.480713 1123.156006 1124.031494 1119.864868 1116.626709 1116.013184 1122.071167 1127.355713 1126.354858 1121.562866 1122.63147 1118.687622 1111.407959 1110.530273 1106.363892 1101.731323 1098.303223 +1097.880859 1098.651001 1099.452881 1100.123779 1100.787598 1101.426758 1102.208374 1103.056274 1103.933838 1104.993774 1105.802612 1106.587036 1107.206177 1107.798706 1108.279053 1108.783447 1109.275269 1110.035645 1110.811401 1111.504395 1112.080566 1112.741943 1113.410889 1114.157593 1115.0979 1116.145752 1117.236572 1118.280396 1119.552979 1120.799194 1122.003784 1123.445679 1124.719482 1126.020508 1127.841797 1129.755249 1131.281494 1132.187378 1132.751709 1133.125366 1133.677734 1134.943237 1136.304688 1137.712036 1139.542114 1141.333984 1142.953125 1144.412598 1145.792236 1147.996704 1151.130493 1154.523804 1156.532959 1157.901245 1161.260742 1164.718262 1168.017944 1171.32312 1174.48938 1178.36853 1180.170654 1183.574829 1186.293579 1194.104492 1199.295288 1209.552856 1223.252197 1238.176025 1249.9104 1259.684082 1268.985107 1278.38269 1289.738037 1300.528076 1308.9823 1314.674683 1315.551147 1318.794922 1322.933838 1330.673584 1337.101685 1333.828491 1329.371826 1329.180298 1331.859253 1333.532837 1333.900269 1333.167847 1329.364868 1323.111694 1318.740356 1314.25708 1309.027222 1306.823975 1304.080444 1298.909546 1293.461792 1286.999146 1279.161865 1268.918457 1265.156982 1267.587158 1260.398193 1252.949463 1243.009155 1231.394653 1218.780029 1204.995972 1197.014282 1186.570435 1181.79895 1180.832642 1178.127686 1174.601074 1171.315552 1170.285767 1170.213013 1171.140869 1172.976929 1175.025269 1177.056152 1179.596313 1181.525757 1184.241821 1185.839355 1185.989502 1185.194214 1183.525757 1183.67395 1183.974243 1185.591675 1186.686279 1187.407837 1187.841431 1187.956299 1187.722046 1187.328491 1186.619751 1185.863525 1185.153442 1184.495972 1184.167603 1183.522461 1181.554443 1179.191772 1177.160522 1175.153442 1173.057861 1170.534302 1173.625 1178.253052 1181.830322 1184.328491 1185.862915 1187.195312 1188.393066 1190.102051 1192.045898 1194.062378 1197.203369 1202.609741 1205.032837 1212.346191 1220.007812 1220.714355 1218.824219 1213.741943 1211.306519 1210.118774 1208.697754 1205.371826 1200.283081 1195.302368 1192.220703 1190.739624 1190.309692 1191.785034 1193.653198 1196.705688 1204.310791 1208.808716 1208.776245 1209.660889 1208.167358 1199.021729 1196.143311 1195.954956 1193.751953 1188.519043 1184.556519 1182.955444 1178.828979 1175.233276 1172.259033 1170.09082 1171.058472 1171.418579 1171.405396 1171.324463 1171.322876 1171.203857 1171.143799 1171.145264 1171.115356 1171.134766 1170.883423 1168.077759 1165.701172 1165.866455 1166.395264 1167.00769 1167.605957 1168.384277 1169.208862 1169.896851 1170.395752 1170.64209 1170.614258 1170.324341 1170.228394 1170.367798 1170.231445 1170.048584 1169.537964 1169.03418 1168.450317 1167.926025 1167.358643 1166.812988 1166.1427 1165.54248 1164.831299 1164.108276 1163.346558 1162.686157 1162.058228 1161.473877 1161.127441 1161.04895 1161.205322 1161.479248 1161.608032 1161.493286 1161.197266 1160.77356 1160.274414 1159.566772 1158.947144 1158.488159 1158.077881 1157.62915 1157.200317 1156.651855 1156.05542 1155.341309 1154.735107 1154.020996 1153.520264 1153.138916 1152.81189 1153.550293 1155.091309 1156.74292 1157.865601 1159.913086 1165.383545 1169.424805 1173.766235 1180.145508 1184.739746 1186.484253 1187.90918 1190.063721 1191.410522 1190.720825 1188.900879 1186.738403 1185.398926 1184.501343 1182.568359 1184.663574 1186.980347 1187.662598 1186.119629 1185.031616 1187.368896 1195.548096 1206.302002 1216.483398 1225.46167 1234.154541 1241.939575 1247.706177 1253.594482 1258.098633 1261.154175 1264.878784 1268.129761 1273.217896 1280.281372 1283.464966 1282.530273 1279.902832 1277.683472 1270.364746 1259.994751 1249.274658 1228.347534 1214.624512 1197.519043 1201.821045 1208.535156 1219.505371 1224.229248 1224.738403 1224.831055 1227.646851 1228.766968 1228.986938 1229.261353 1230.216553 1231.691772 1227.615845 1221.273315 1208.69397 1199.17041 1190.323853 1183.873901 1177.702148 1179.799438 1177.724365 1172.466309 1170.443237 1164.420532 1158.687134 1153.325928 1147.359985 1144.96875 1143.536011 1141.552002 1138.253174 1134.391235 1134.182617 1133.911865 1133.56958 1132.81665 1131.398438 1130.109863 1128.787354 1127.415894 1125.973267 1124.548462 1122.97229 1122.157837 1122.792603 1123.295532 1123.345337 1123.188843 1122.735352 1122.173584 1121.80188 1121.208496 1120.471313 1119.75354 1119.095337 1118.48877 1117.658447 1116.721802 1115.613037 1114.608154 1113.623779 1112.829102 1111.941895 1110.850952 1109.833008 1110.016235 1110.837158 1111.322266 1111.720093 1112.133545 1112.530396 1113.034668 1113.494263 1113.9021 1114.188965 1114.552979 1114.862427 1115.295898 1115.666382 1116.057983 1116.313721 1116.706177 1117.164429 1117.682861 1118.299072 1119.111328 1119.856934 1120.574585 1121.165894 1121.436279 1121.758545 1123.768188 1130.391968 1135.570312 1136.255859 1135.753418 1134.813965 1132.581909 1132.316528 1134.548218 1135.227417 1134.481079 1131.171387 1129.574463 1128.265015 1126.685913 1124.963989 1125.50708 1129.369019 1131.672607 1133.017212 1134.352051 1135.052612 1135.768799 1135.872681 1135.268677 1133.140747 1133.998413 1134.785767 1132.459106 1128.047241 1125.550659 1124.974365 1124.025146 1121.80896 1120.949341 1124.343872 1127.763794 1131.779419 1134.604736 1133.597412 1136.314209 1142.040527 1147.222412 1156.507812 1159.997437 1161.384033 1164.677246 1170.243042 1173.582886 1177.83606 1182.084717 1189.03833 1194.328613 1195.453125 1201.115234 1203.743042 1206.361938 1212.405151 1219.428955 1227.526123 1235.483032 1244.128296 1247.263062 1247.619019 1247.148438 1243.543579 1241.199341 1243.607178 1246.996216 1246.345093 1243.762207 1238.991211 1234.92395 1230.359619 1226.577515 1224.422363 1220.839111 1215.106445 1209.86438 1205.710449 1199.267944 1195.368652 1189.362671 1182.403198 1179.709473 1174.973633 1171.011108 1165.71521 1160.25415 1153.86853 1148.653442 1145.739746 1141.541748 1137.268555 1133.841187 1130.083374 1133.34021 1134.167969 1133.003174 1133.915283 1135.472168 1135.729614 1134.560425 1133.783325 1132.261475 1131.280151 1130.565308 1129.855591 1129.156982 1128.195557 1127.627563 1127.359253 1128.77417 1131.436646 1134.271118 1135.227783 1134.931152 1133.058228 1131.944458 1132.213745 1132.563477 1124.401001 1121.680298 1120.545288 1118.622192 1116.521606 1114.336548 1113.258545 1113.134399 1112.589478 1111.772461 1110.25 1109.63147 1109.973633 1110.887085 1111.971069 1109.935669 1110.088013 1111.860962 1111.861694 1111.150391 1109.109131 1106.790894 1104.248535 1101.68396 1099.189941 1097.618286 1097.642822 1098.680542 1099.704346 1100.215454 1100.269531 1099.552734 1098.714966 1098.256104 1098.946777 1101.242432 1102.605347 1103.503418 1104.13501 1104.629883 1104.926636 1105.240845 1105.621338 1106.264038 1107.191772 1108.407715 1109.387817 1110.200195 1112.706909 1115.364746 1118.813599 1120.262939 1120.643921 1121.65918 1128.907715 1135.722046 1136.839844 1132.826904 1143.966797 1154.205933 1164.245483 1174.30957 1179.962402 1172.945557 1161.019165 1154.372681 1148.684692 1143.534668 1143.434082 1144.005371 1140.286865 1133.715454 1125.269531 1120.825562 1123.348145 1120.443115 1113.66626 1109.647217 1119.025513 1124.209473 1123.451782 1119.515015 1116.837402 1113.966675 1111.551636 1107.701782 1104.50769 1100.393433 1097.624634 +1097.775757 1098.516113 1099.36731 1100.119629 1100.869019 1101.676392 1102.484985 1103.383667 1104.246582 1105.161377 1106.095337 1106.886353 1107.619385 1108.232178 1108.887451 1109.261963 1109.589478 1109.959351 1110.905396 1111.757202 1112.428223 1113.1604 1113.870239 1114.629395 1115.456055 1116.443848 1117.40564 1118.485107 1119.523926 1120.802856 1121.693237 1122.896606 1124.461792 1125.874268 1127.434937 1129.039917 1130.308716 1131.231445 1131.920044 1132.680664 1133.970825 1135.405762 1136.776489 1138.156982 1139.750732 1141.272217 1142.689453 1143.984375 1145.112183 1146.41748 1149.825562 1153.172607 1155.470581 1157.954102 1160.612427 1163.219849 1165.742676 1168.434937 1169.936157 1172.016724 1177.436768 1180.423828 1184.376831 1194.481201 1197.954834 1206.562744 1226.478394 1241.014526 1252.658569 1266.379639 1279.229858 1286.255737 1291.378784 1301.942749 1307.920654 1304.549316 1300.072266 1301.291626 1306.43042 1315.983887 1320.486694 1318.480103 1317.87439 1320.953613 1324.737305 1330.213257 1332.714355 1332.53125 1328.801147 1320.666382 1316.155029 1312.659302 1306.797485 1305.077271 1305.203857 1302.699219 1296.113647 1289.173828 1279.332886 1268.481079 1259.983154 1253.62561 1249.591675 1242.521118 1233.258301 1221.67334 1212.927368 1203.814453 1195.679321 1189.459473 1185.714355 1184.774292 1180.614868 1175.65332 1170.916016 1171.395508 1170.825806 1170.720825 1173.524902 1176.599609 1178.916504 1181.31189 1182.240112 1183.985962 1186.206543 1187.198608 1187.034424 1186.536743 1186.368408 1186.661499 1187.582153 1188.26709 1188.644409 1188.767578 1188.706055 1188.450684 1187.952759 1187.140137 1186.308105 1185.536499 1184.789917 1184.108765 1182.934082 1180.842163 1179.168823 1177.443237 1175.081909 1171.866455 1170.248901 1176.053223 1179.323242 1181.720459 1183.917358 1185.964722 1187.801147 1189.619507 1191.594727 1193.743896 1196.920044 1203.658813 1209.682129 1216.581787 1220.998779 1220.04834 1218.831543 1217.011841 1214.272095 1211.694458 1210.131348 1209.479736 1209.444946 1207.562012 1201.671509 1195.322876 1194.143188 1193.221436 1194.784546 1196.1073 1197.092285 1199.86731 1202.912476 1204.515503 1207.187866 1205.76709 1201.913452 1198.544556 1197.462646 1196.772217 1192.6073 1187.471558 1184.637329 1178.605835 1171.453735 1170.940063 1171.384033 1171.739014 1171.763428 1171.845459 1171.670776 1171.713867 1171.702637 1171.664429 1171.59436 1171.671631 1171.674683 1171.855713 1167.769409 1166.478638 1167.056274 1167.740967 1168.55188 1169.282837 1169.959106 1170.725342 1171.149414 1171.286499 1171.319824 1171.297607 1171.208618 1171.207642 1171.210205 1171.127808 1170.837158 1170.345947 1169.799072 1169.255737 1168.696533 1168.105347 1167.484375 1166.888672 1166.180054 1165.481079 1164.650269 1164.046387 1163.469727 1163.03186 1162.458496 1162.029175 1161.921997 1161.937744 1162.042969 1162.083008 1161.9646 1161.645264 1161.167114 1160.620483 1159.929443 1159.428101 1159.026245 1158.647827 1158.09436 1157.688721 1157.161743 1156.638794 1156.097656 1155.332642 1154.546387 1153.855469 1153.4375 1153.115845 1154.050415 1155.896484 1157.589966 1158.872192 1161.260864 1165.113037 1168.211914 1170.053833 1174.7771 1181.29187 1185.059082 1186.993408 1191.856812 1195.160522 1195.499023 1194.548462 1191.915894 1189.881226 1188.618164 1188.341675 1189.335938 1191.440063 1194.500854 1195.417236 1195.587891 1193.119873 1191.318481 1198.356323 1208.431641 1219.618896 1227.071655 1234.895996 1244.034302 1249.577271 1255.067871 1259.223755 1265.692505 1271.128662 1276.531006 1281.779907 1282.925537 1282.33667 1278.618774 1273.687134 1267.552734 1256.427002 1240.811646 1223.963745 1204.821533 1203.850464 1211.758179 1221.336182 1227.32251 1231.001465 1232.167725 1231.695435 1231.009888 1231.546509 1231.569458 1230.746216 1230.092651 1228.299072 1222.988525 1216.11731 1206.900024 1198.788208 1191.958618 1181.364868 1170.28064 1172.263672 1170.859741 1167.461548 1165.19165 1162.228882 1156.532471 1147.16626 1146.239258 1144.859985 1143.128906 1141.033691 1138.590332 1136.406372 1135.170898 1133.81311 1133.040527 1132.424072 1131.619873 1130.509399 1129.411987 1128.021729 1126.761841 1125.462402 1124.148804 1123.422729 1123.754028 1123.966309 1123.965454 1123.704102 1123.252686 1122.72229 1122.21814 1121.567871 1120.811401 1120.038818 1119.43457 1118.964111 1118.17395 1117.362549 1116.241455 1115.15271 1114.167725 1113.366089 1112.500977 1111.540771 1110.598145 1109.592896 1110.348633 1111.094116 1111.638916 1112.057495 1112.681274 1113.332153 1113.745117 1114.19104 1114.562012 1114.876221 1115.32605 1115.696411 1116.24292 1116.676758 1117.032837 1117.381836 1117.800049 1118.255371 1118.866821 1119.567993 1120.425049 1121.380493 1122.04248 1123.283325 1121.639771 1121.500854 1123.930298 1129.679443 1134.261475 1135.731079 1134.916016 1133.909912 1134.241943 1135.104248 1135.825684 1135.59436 1134.509399 1133.669556 1133.037354 1131.566772 1129.7146 1129.825073 1131.40271 1133.331787 1133.909302 1134.193359 1134.655029 1135.897095 1135.991699 1135.383789 1133.911377 1135.14978 1135.847778 1134.834351 1131.81897 1128.680664 1126.651611 1124.562134 1122.139648 1121.217407 1123.776855 1126.163086 1128.869873 1130.749023 1132.286133 1135.261353 1138.969849 1142.989014 1147.541992 1155.936279 1160.428345 1164.140747 1170.747437 1173.091553 1175.559448 1178.538208 1180.781982 1180.073486 1184.023682 1193.23999 1194.288452 1200.266479 1204.817139 1211.231689 1217.134888 1225.431885 1234.866333 1243.549927 1244.047119 1241.732056 1232.168701 1223.139038 1228.179199 1248.270386 1249.120605 1247.418701 1243.588501 1238.286743 1232.732178 1229.753906 1227.158203 1222.786865 1217.704834 1212.904785 1207.771362 1203.190796 1198.363159 1194.434814 1188.124268 1183.547485 1175.054688 1172.059692 1164.25061 1159.234985 1146.180176 1144.7229 1142.907471 1138.057617 1134.052734 1133.293701 1136.23877 1137.319824 1136.904419 1135.349609 1135.628052 1136.478027 1136.291626 1135.411499 1134.109253 1132.99707 1132.363892 1131.874512 1131.132202 1130.263062 1129.240845 1128.486572 1128.999512 1130.666504 1132.92749 1134.657715 1134.969116 1134.850708 1133.715576 1132.993408 1133.947388 1135.102661 1125.952026 1121.254272 1119.627319 1117.559692 1114.79895 1111.170166 1110.814941 1110.940308 1109.904785 1110.097778 1109.541138 1109.114136 1109.009399 1109.505493 1110.140747 1109.571777 1109.704102 1110.729004 1111.433105 1110.911499 1108.913086 1106.547485 1104.008911 1101.531616 1099.430542 1097.808716 1097.338745 1097.63623 1098.318726 1098.984009 1098.950073 1098.05957 1097.553101 1097.649902 1098.64978 1100.2146 1101.478149 1102.144653 1102.687256 1103.120239 1103.495972 1103.988159 1104.642822 1105.373535 1106.343628 1107.310425 1108.179321 1108.906494 1109.783203 1112.886353 1118.619751 1120.565186 1123.347656 1128.275146 1135.153931 1142.456543 1146.848389 1147.210083 1144.164917 1152.981812 1163.675537 1172.309448 1174.897583 1167.751953 1154.67334 1147.266357 1143.211792 1138.983398 1133.92688 1137.534668 1137.233398 1133.422729 1121.852417 1120.63916 1119.165283 1115.162231 1112.268921 1109.399292 1114.78833 1119.911621 1119.814819 1116.630127 1111.031738 1109.452881 1108.638672 1106.956665 1104.564453 1100.165894 1097.457153 +1098.289185 1098.70166 1099.534424 1100.330566 1101.107056 1101.965454 1102.804688 1103.740112 1104.609253 1105.473389 1106.399292 1107.265381 1108.03186 1108.695068 1109.354858 1109.920898 1110.172729 1110.565918 1111.262207 1112.115479 1112.95459 1113.544434 1114.395264 1115.077026 1115.830688 1116.717163 1117.646973 1118.571655 1119.674438 1120.53894 1121.405884 1122.330811 1124.072998 1125.744141 1127.436401 1128.883057 1130.166992 1131.008057 1131.784668 1132.619263 1133.851929 1135.254272 1136.905151 1138.456299 1139.94397 1141.3573 1142.684204 1144.02832 1145.197388 1147.018555 1149.37146 1152.360107 1155.018555 1157.497925 1159.658936 1161.280029 1163.796143 1166.431641 1168.625488 1172.138062 1178.660889 1185.16333 1198.281738 1208.927612 1216.846313 1221.462891 1226.101929 1239.526245 1252.314331 1267.101074 1280.721436 1291.651001 1295.854248 1300.800171 1300.928101 1292.700317 1289.322266 1290.970093 1297.205566 1302.937866 1308.096558 1308.962891 1308.196411 1311.001831 1314.487793 1321.479736 1327.401245 1326.717529 1322.465576 1316.657349 1313.481689 1310.771118 1307.371338 1303.501953 1301.963989 1300.506104 1295.326538 1285.830688 1274.13562 1262.810913 1252.934937 1243.266968 1237.658936 1231.725342 1223.734863 1213.82666 1205.795044 1196.52478 1193.238037 1190.421875 1187.002686 1183.892456 1180.616699 1177.729248 1175.264771 1174.160278 1173.522705 1173.360229 1175.536133 1178.199951 1180.9729 1183.612061 1183.784424 1183.314087 1187.21582 1188.788574 1189.405151 1189.623901 1189.653687 1189.864502 1190.16626 1190.100098 1190.000122 1189.743408 1189.360474 1188.931641 1188.331665 1187.377441 1186.303467 1185.432617 1184.56189 1183.502441 1182.779419 1180.820557 1179.729614 1178.484619 1176.700073 1173.75769 1174.396118 1179.696045 1181.447754 1182.417725 1183.391479 1186.414795 1188.821655 1190.556519 1192.457642 1194.857422 1201.417114 1208.213013 1212.115356 1217.86731 1218.86438 1218.107788 1216.769775 1214.851929 1212.748657 1210.352539 1208.036255 1207.582153 1209.60022 1210.077026 1209.620605 1204.223877 1198.103516 1195.758057 1194.810913 1194.756714 1194.409912 1195.141479 1196.945435 1199.554443 1200.543579 1199.487671 1198.566284 1197.99707 1197.382324 1196.215576 1192.030273 1185.666992 1180.889893 1174.947998 1171.032104 1171.145752 1171.276001 1171.664062 1171.900391 1171.961548 1171.954468 1171.961914 1171.974243 1171.919678 1171.797974 1171.67981 1171.660034 1169.190063 1167.034302 1167.525024 1168.360962 1169.109009 1169.948242 1170.669434 1171.164185 1171.455078 1171.657104 1171.801514 1171.800537 1171.71814 1171.637207 1171.624512 1171.602417 1171.483032 1171.240356 1170.960693 1170.378662 1169.834473 1169.280029 1168.753052 1168.126831 1167.409424 1166.756226 1166.005859 1165.348267 1164.806763 1164.353271 1163.881714 1163.38855 1162.897095 1162.649292 1162.571289 1162.623169 1162.570557 1162.369995 1162.004395 1161.567383 1160.943726 1160.365234 1159.867432 1159.44104 1159.022827 1158.480835 1158.25769 1157.682617 1157.391235 1157.021118 1156.218018 1155.125366 1154.20752 1153.663208 1153.374756 1154.89978 1157.158081 1158.802734 1160.539551 1163.148682 1166.182617 1168.443604 1169.656372 1170.047729 1172.033813 1180.794556 1182.973877 1191.187744 1196.25769 1196.782715 1197.142334 1196.114136 1193.412476 1193.161133 1194.149048 1194.841919 1195.347412 1199.154541 1200.397461 1200.452881 1199.208008 1197.292114 1195.830566 1205.039673 1212.218628 1221.963135 1231.713989 1240.079468 1245.80127 1254.232544 1258.704712 1266.653931 1272.297852 1278.320801 1282.322998 1282.198486 1279.547729 1274.342896 1268.42395 1261.77832 1251.524048 1229.927734 1218.202759 1205.523926 1208.824463 1220.980957 1230.329956 1236.435303 1238.667725 1238.449463 1237.433472 1236.516113 1236.429932 1235.608032 1233.878784 1231.895142 1228.680298 1224.637329 1221.564453 1213.537842 1204.558228 1195.392944 1183.483154 1175.105347 1169.397217 1164.200317 1159.070801 1159.403931 1158.204346 1154.083496 1150.016602 1148.076538 1145.486694 1143.243408 1141.374512 1139.070312 1135.559448 1134.136841 1133.768433 1133.264404 1132.650024 1132.017212 1131.163208 1130.022949 1128.919922 1127.671753 1126.613159 1125.637817 1124.928833 1124.710205 1124.626465 1124.373047 1124.091187 1123.66333 1123.146851 1122.546875 1121.800537 1120.96228 1120.344238 1119.848145 1119.406128 1118.86731 1118.064819 1116.970947 1115.787109 1114.687134 1113.772827 1112.748413 1111.873901 1111.093872 1110.26355 1110.156494 1110.825073 1111.352905 1112.079712 1112.74707 1113.434082 1114.023438 1114.561768 1114.853882 1115.314453 1115.678345 1116.114258 1116.691406 1117.189697 1117.591309 1118.101196 1118.388672 1118.853516 1119.31604 1119.991943 1120.812134 1121.818359 1125.575562 1134.154419 1135.317505 1124.584961 1122.240601 1122.030273 1127.396729 1133.135376 1134.619141 1134.951782 1135.399292 1136.208374 1136.671753 1136.547852 1136.090942 1135.837402 1135.754395 1135.294678 1134.123169 1132.873413 1134.051392 1134.944336 1134.586548 1134.26001 1134.302124 1135.694336 1136.50708 1135.846924 1134.458618 1136.411499 1136.533203 1135.374512 1133.081665 1130.256226 1128.011597 1125.95752 1123.916138 1121.764282 1121.660889 1123.937012 1126.286377 1128.620361 1130.902466 1133.749512 1136.383057 1139.422119 1143.105957 1149.30481 1155.863403 1159.913574 1165.960571 1170.588989 1173.240479 1173.821899 1170.823608 1171.688843 1175.921753 1180.235596 1188.563354 1195.922241 1197.77417 1205.043579 1211.275146 1219.569946 1227.575806 1233.049072 1228.939575 1226.489136 1221.888672 1215.287598 1231.882202 1249.683594 1252.937378 1250.881226 1246.843872 1243.11084 1238.250732 1234.015381 1231.213257 1226.295898 1220.212646 1215.667114 1210.920044 1205.480347 1200.647095 1196.83374 1188.652954 1177.577026 1170.064697 1166.892822 1158.209106 1157.868652 1150.029785 1145.865356 1140.804565 1136.538818 1139.881104 1142.513428 1141.327881 1140.419067 1139.769531 1138.636353 1138.036865 1137.785889 1136.993408 1135.608032 1134.630249 1134.441162 1133.590454 1133.022461 1132.369629 1131.387085 1130.303345 1129.475708 1130.337524 1131.882202 1133.739014 1134.561523 1134.819214 1134.621094 1133.254028 1133.522339 1134.528198 1135.448853 1127.439087 1121.127197 1119.036377 1116.774536 1113.759521 1110.482544 1109.908325 1109.765869 1109.493652 1109.179443 1108.856323 1108.588013 1108.519897 1108.602173 1108.980347 1108.914429 1108.924805 1109.807983 1110.560791 1110.400146 1108.574219 1106.186768 1103.66748 1101.50647 1099.610352 1097.813843 1097.182129 1097.124756 1097.328735 1097.609741 1097.562012 1097.314209 1097.615479 1098.151855 1099.254761 1100.024414 1100.629639 1101.056641 1101.303223 1101.680908 1102.138916 1102.831177 1103.525879 1104.493896 1105.561401 1106.602295 1107.796509 1109.331787 1111.90918 1116.776978 1121.82959 1123.261597 1124.98999 1129.914429 1136.217163 1145.14502 1148.611328 1149.832642 1149.804077 1152.175293 1159.560547 1170.675049 1173.865356 1163.81189 1152.820557 1144.36499 1134.501953 1135.310059 1133.095703 1131.706787 1132.362305 1131.89978 1129.051514 1124.228271 1117.637695 1110.099121 1109.671875 1108.437256 1109.713745 1111.666138 1112.742554 1112.831543 1110.648926 1108.564941 1108.506348 1108.271362 1107.905396 1105.058472 1101.212036 +1099.284668 1098.673462 1099.624268 1100.484863 1101.484131 1102.37854 1103.285156 1104.121094 1105.044067 1105.921997 1106.755249 1107.540649 1108.366333 1109.185059 1109.928467 1110.471924 1110.884888 1111.234253 1111.877808 1112.444092 1113.293701 1114.020386 1114.736206 1115.411133 1116.220337 1117.056763 1117.907715 1118.877808 1119.737183 1120.61731 1121.437256 1122.251587 1124.054077 1125.956787 1127.792236 1129.312256 1130.539429 1131.358154 1132.157227 1133.198975 1134.329346 1135.469849 1137.086304 1138.701782 1140.201782 1141.721558 1143.150269 1144.56189 1146.257935 1147.774536 1149.467285 1151.813232 1154.234985 1156.203979 1157.668213 1158.796143 1161.960327 1165.771729 1168.993652 1173.05896 1181.334473 1191.625977 1206.397583 1216.089233 1227.023315 1238.993652 1245.415649 1249.910278 1253.102417 1261.17395 1276.006714 1289.385376 1295.797119 1296.567139 1292.098389 1287.257202 1280.208008 1283.160034 1289.704956 1295.064697 1298.75769 1300.349243 1300.735229 1302.997314 1308.950439 1314.720947 1318.474609 1318.377075 1315.695068 1312.056519 1309.9552 1308.859619 1307.077271 1303.883423 1298.895996 1305.220093 1297.714966 1285.412842 1273.816406 1260.904541 1242.236694 1229.794067 1225.158203 1219.038452 1208.737061 1205.897095 1197.265747 1194.650146 1194.446777 1193.282715 1188.849365 1182.671387 1182.144409 1181.423218 1179.138916 1177.550903 1177.087769 1177.383911 1178.63269 1180.011719 1181.65564 1184.943604 1186.364136 1187.440552 1189.127197 1190.631958 1191.718872 1192.450073 1192.705933 1192.979858 1192.867065 1191.996704 1191.219116 1190.494629 1189.928955 1189.397827 1188.529175 1187.416016 1186.053467 1184.609497 1183.465332 1183.074219 1181.943726 1181.099487 1180.361694 1179.736084 1179.539185 1181.075806 1179.660278 1183.036987 1184.421631 1185.043701 1186.599365 1188.486084 1190.399902 1191.859009 1193.406128 1195.705566 1203.897705 1209.164917 1212.053101 1214.710205 1216.168457 1215.992188 1214.744507 1212.934814 1210.820312 1208.021118 1206.654053 1207.660034 1209.611816 1210.766235 1211.065674 1209.337524 1203.610596 1199.006226 1195.817993 1194.082275 1193.211914 1192.921265 1193.35791 1194.484497 1195.212769 1194.278564 1193.672485 1194.051636 1194.07019 1192.310181 1185.685181 1181.665283 1176.442139 1171.608643 1171.338379 1171.378784 1171.435669 1171.586548 1171.806396 1171.903809 1171.983276 1172.116211 1172.165405 1172.061401 1172.000122 1171.846069 1170.147705 1167.796143 1168.462769 1168.937012 1169.629272 1170.603882 1171.224731 1171.368042 1171.775391 1172.034668 1172.168213 1172.237793 1172.233887 1172.187012 1172.10498 1172.008667 1171.969727 1171.80603 1171.464478 1171.276001 1170.889038 1170.258789 1169.866089 1169.253662 1168.591797 1167.956543 1167.216064 1166.538452 1166.029663 1165.565796 1165.212036 1164.730225 1164.228394 1163.632812 1163.358032 1163.175659 1163.141968 1163.067383 1162.796387 1162.450684 1161.933228 1161.314331 1160.872437 1160.43689 1159.870117 1159.391602 1159.075317 1158.879639 1158.395874 1158.243896 1158.17041 1157.305298 1155.811768 1154.519165 1153.841431 1154.430298 1156.412842 1158.678955 1160.358276 1162.403931 1165.272827 1168.607056 1171.078003 1172.526611 1173.833862 1175.938843 1180.949707 1182.983887 1188.421387 1193.3302 1195.674072 1197.778198 1198.452759 1196.994507 1196.542725 1200.707275 1203.158569 1204.294678 1205.396851 1204.31604 1205.812744 1204.719482 1207.063721 1208.155884 1206.183838 1209.99231 1223.161865 1233.806885 1242.442383 1249.088623 1256.484619 1260.858765 1265.74939 1272.223267 1280.32312 1282.266724 1279.34668 1275.049561 1269.914185 1263.646729 1255.69165 1245.130859 1221.546265 1216.724731 1208.572144 1215.610474 1230.471191 1240.035034 1245.40332 1246.362671 1244.941772 1243.691406 1242.888306 1242.498047 1240.630615 1237.377808 1234.022339 1229.553101 1224.238403 1220.925537 1213.000488 1204.283936 1195.179199 1187.108643 1181.800415 1173.089355 1167.921997 1161.403931 1158.75647 1155.005615 1147.472046 1147.108643 1146.447144 1145.366089 1143.944946 1142.698364 1140.528931 1137.562988 1135.671143 1134.961304 1134.068115 1133.490356 1132.557129 1131.71936 1130.817139 1129.800781 1128.733521 1127.883179 1126.934692 1126.203125 1125.585815 1125.291382 1124.859619 1124.418213 1123.962036 1123.422852 1122.646362 1121.838989 1121.027832 1120.626343 1120.360107 1120.016357 1119.60437 1118.968018 1117.857788 1116.500977 1115.160645 1113.89856 1112.855713 1111.858887 1111.278076 1110.443359 1109.990601 1110.506104 1111.432983 1112.25769 1113.054688 1113.716919 1114.328369 1114.856079 1115.370728 1115.700073 1116.234009 1116.636841 1117.074219 1117.628174 1118.219971 1118.630981 1119.138428 1119.438599 1119.860474 1120.324341 1121.019897 1121.970337 1126.295166 1132.374512 1135.058228 1128.731812 1126.117798 1126.189819 1129.308594 1133.68103 1134.329834 1134.66333 1135.84375 1136.913696 1137.557617 1137.77771 1137.666626 1137.49646 1137.153564 1136.781982 1135.92688 1134.211304 1134.251343 1135.753662 1136.102295 1135.514282 1135.071045 1135.919312 1137.430176 1137.500244 1137.361938 1137.391602 1136.842285 1135.432495 1133.087646 1131.056885 1129.613403 1128.207397 1126.043213 1124.130859 1122.768188 1122.344849 1124.728516 1127.17041 1129.407959 1131.372314 1133.213989 1135.106689 1139.844116 1145.026611 1149.577393 1154.499512 1159.82373 1164.548218 1168.949463 1169.374878 1166.812988 1166.602051 1168.585693 1174.646851 1182.220459 1186.643188 1189.951538 1196.834595 1204.293457 1214.706909 1223.265991 1222.858765 1218.054932 1214.387207 1208.441895 1208.994751 1223.171021 1248.769165 1257.15564 1254.96936 1251.185425 1247.364624 1243.209961 1238.624634 1235.175781 1230.794678 1224.22998 1219.620728 1214.259399 1208.515869 1199.341064 1194.083374 1188.484131 1184.572632 1184.113281 1178.843506 1172.213623 1161.788208 1146.750977 1142.942017 1141.797974 1148.516846 1148.905884 1147.945435 1145.847778 1144.398682 1143.679077 1141.838501 1140.421875 1139.288696 1138.106812 1137.020386 1136.23645 1135.695923 1134.880615 1134.2854 1133.462402 1132.495728 1131.468506 1130.581299 1130.727051 1132.560181 1134.080566 1134.801514 1134.927979 1134.045044 1133.588989 1133.900391 1134.466064 1131.989014 1124.393555 1121.074585 1119.06604 1116.755005 1114.402466 1112.390747 1111.452026 1110.410889 1109.69165 1109.001831 1108.56665 1108.20105 1107.9729 1107.936401 1107.973999 1108.0625 1108.290649 1108.950195 1110.008911 1109.638062 1107.802124 1105.364624 1103.002075 1101.06543 1099.492798 1097.793945 1097.003418 1096.799316 1096.725098 1096.822388 1096.815186 1097.035034 1097.901978 1098.707886 1099.200317 1099.578857 1099.825684 1099.986084 1099.765747 1099.884888 1100.646118 1101.640869 1102.608765 1103.69043 1104.878174 1106.123535 1107.558838 1109.053833 1112.588867 1118.911987 1122.885498 1122.563721 1123.49353 1128.46875 1132.692627 1137.85376 1144.950928 1146.384399 1154.519897 1159.559692 1164.260498 1170.897095 1173.270142 1161.638428 1150.413696 1142.962769 1136.866821 1133.510864 1125.062866 1124.700195 1123.846436 1132.519287 1134.608887 1125.907104 1119.132568 1111.108154 1108.072144 1107.097412 1107.565674 1108.484009 1109.028687 1109.143433 1109.04541 1110.042847 1111.13855 1111.550781 1112.838623 1109.824463 1105.677002 +1100.278931 1099.14624 1099.669922 1100.714233 1101.677856 1102.657959 1103.751221 1104.627075 1105.612305 1106.347046 1107.13208 1107.880615 1108.638428 1109.546387 1110.297119 1110.902832 1111.361572 1111.82312 1112.364868 1112.893433 1113.492188 1114.375488 1115.055542 1115.79126 1116.621826 1117.473755 1118.369751 1119.080566 1119.84729 1120.813721 1121.778564 1123.042847 1124.565308 1126.575195 1128.630249 1130.326172 1131.562622 1132.286621 1132.960938 1134.039795 1135.130981 1136.22583 1137.416138 1138.776245 1140.307495 1142.070435 1143.840942 1145.451416 1146.888672 1148.24292 1149.716919 1151.480591 1153.467163 1154.982544 1156.405396 1157.961792 1161.039551 1165.424561 1170.120239 1175.503052 1183.814453 1195.331299 1207.51001 1215.345581 1223.168213 1234.639648 1246.372314 1256.966431 1258.918701 1266.171509 1273.128174 1281.692383 1294.255493 1295.759155 1293.112061 1285.437622 1278.76001 1275.751221 1280.42627 1285.396118 1290.28186 1292.235596 1293.610229 1299.484009 1305.404663 1309.656494 1312.495728 1312.537964 1308.945312 1304.911621 1305.498901 1304.873901 1302.44873 1298.08374 1292.849243 1296.832153 1295.149414 1287.118042 1276.953003 1262.949219 1248.610107 1236.132812 1229.425903 1221.97522 1217.557739 1213.165405 1211.206787 1208.641235 1201.770996 1197.874756 1195.632202 1191.205933 1187.563354 1184.909424 1181.936157 1180.634521 1180.555542 1180.659302 1181.670776 1182.756104 1183.592651 1186.452271 1189.255249 1190.753052 1191.99292 1192.422607 1193.413574 1194.57373 1195.281006 1195.509155 1194.811768 1193.524048 1192.154053 1191.223145 1190.542236 1189.823853 1188.848145 1187.31897 1184.619751 1183.141357 1182.808105 1182.405884 1182.063232 1181.541138 1181.141479 1181.04248 1181.936768 1183.71167 1183.924805 1185.075195 1187.02063 1188.246338 1189.980957 1191.423218 1192.306885 1192.934937 1193.911377 1196.233521 1204.670044 1208.901611 1210.822021 1212.556763 1213.75061 1213.762085 1213.019775 1211.521606 1209.633667 1207.579834 1206.29248 1207.539307 1209.576416 1210.486694 1210.897949 1209.579224 1205.386963 1202.079834 1197.209351 1194.705078 1193.223022 1191.210205 1188.885986 1188.81604 1189.26355 1190.014038 1189.550903 1186.716553 1184.964478 1183.002075 1179.231934 1175.568848 1171.548706 1171.67395 1171.570679 1171.635132 1171.623169 1171.779053 1171.630493 1171.804688 1171.852173 1171.988403 1172.218018 1171.930176 1171.719482 1171.810791 1168.375366 1170.028198 1170.490479 1170.263916 1170.879517 1171.282104 1171.681885 1171.946045 1172.1604 1172.497314 1172.584229 1172.62207 1172.645508 1172.659424 1172.546997 1172.439087 1172.214478 1172.046265 1171.736694 1171.459961 1171.170288 1170.762939 1170.282227 1169.687012 1168.977295 1168.2854 1167.623657 1167.09021 1166.703613 1166.395142 1165.960449 1165.495361 1164.953003 1164.350586 1163.99707 1163.804077 1163.656006 1163.48877 1163.141357 1162.763672 1162.263306 1161.864014 1161.359253 1160.879395 1160.326172 1159.957764 1159.606079 1159.36499 1159.020386 1159.090088 1158.961426 1158.210449 1156.675903 1154.893188 1154.1073 1155.471924 1158.077881 1160.105591 1161.5979 1163.665161 1166.797363 1170.053589 1172.909546 1175.216187 1178.768677 1183.240234 1187.946655 1187.630005 1191.140137 1192.926514 1195.200439 1198.309082 1201.228271 1202.785889 1204.116577 1207.915527 1210.383789 1210.620605 1210.055054 1207.92981 1209.908081 1208.577759 1210.2052 1214.327148 1216.779541 1215.363403 1220.595581 1231.253174 1242.644775 1250.200073 1257.075928 1261.114502 1264.942139 1270.216919 1280.013306 1279.875977 1273.849243 1270.55603 1266.001709 1254.854004 1247.628174 1234.491943 1232.182861 1223.669922 1211.379883 1222.394775 1236.436768 1246.403076 1251.819458 1252.902954 1251.56543 1249.295288 1247.677002 1246.612305 1244.944824 1241.398926 1236.115723 1228.954102 1218.586182 1209.947876 1203.972046 1198.551636 1193.187378 1187.968384 1183.805908 1176.567139 1171.854492 1165.074829 1160.856323 1156.993408 1151.155762 1148.373779 1147.045532 1146.069702 1145.391357 1144.8927 1142.477417 1139.995361 1137.851074 1136.620361 1135.374023 1134.362427 1133.471924 1132.323608 1131.588135 1130.783081 1129.999634 1129.093018 1128.100586 1127.185181 1126.37207 1125.88623 1125.299072 1124.742554 1124.105469 1123.477417 1122.504883 1121.701538 1121.119751 1120.9198 1120.783203 1120.751099 1120.674316 1120.099121 1118.933105 1117.340576 1115.54541 1114.016235 1112.628418 1111.551514 1111.149292 1110.727783 1110.338257 1110.562134 1111.586182 1112.604248 1113.406494 1114.223877 1114.891724 1115.439575 1115.963745 1116.354858 1116.734863 1117.171875 1117.56604 1118.12854 1118.617554 1119.239502 1119.787964 1120.111328 1120.456055 1120.761719 1121.147339 1121.508911 1122.633667 1126.902466 1129.494263 1129.226074 1130.561523 1133.574463 1134.986572 1135.106323 1134.692017 1134.451294 1135.385254 1137.627563 1138.436523 1138.880127 1139.022583 1138.923462 1138.483765 1137.970581 1136.927979 1135.586548 1134.500977 1135.70166 1137.574097 1137.82605 1137.926758 1138.488159 1139.110107 1139.230713 1139.150879 1138.33313 1137.325684 1134.904785 1132.959229 1132.137329 1131.556763 1130.676758 1128.845215 1126.607544 1124.781982 1123.755127 1125.117188 1126.976929 1128.425781 1129.856323 1131.241089 1133.18457 1135.875488 1138.960571 1143.577881 1148.098877 1153.499268 1156.145386 1157.843628 1159.901245 1161.75 1160.343628 1165.539551 1171.504272 1175.723022 1179.616943 1185.472412 1194.558228 1203.401245 1211.491699 1218.463867 1217.596802 1212.21228 1208.646973 1204.067871 1205.557129 1219.940674 1247.339844 1255.899536 1257.849365 1254.678711 1250.578491 1246.542725 1242.281982 1237.457275 1232.92749 1227.702271 1223.160034 1217.894409 1210.517334 1204.155762 1198.297974 1194.8927 1191.27063 1187.399902 1181.836304 1170.837158 1156.901611 1149.125977 1152.662842 1152.533569 1152.459595 1151.516113 1150.054688 1148.179565 1147.583008 1146.195679 1144.143799 1142.279053 1140.730835 1139.556519 1138.576416 1137.699097 1136.865723 1136.192871 1135.433594 1134.510742 1133.587036 1133.083008 1131.715454 1131.355347 1133.923584 1134.708008 1135.131592 1134.807373 1134.311279 1134.518921 1134.726807 1130.448486 1126.378662 1122.02478 1120.786499 1118.936157 1117.078979 1115.22583 1113.63562 1112.464722 1111.427246 1110.174683 1109.276123 1108.364746 1107.92334 1107.530762 1107.302734 1107.282593 1107.322998 1107.518066 1107.99707 1108.42749 1107.807739 1106.23877 1104.17749 1102.260864 1100.5 1099.128906 1097.842896 1097.065552 1096.631348 1096.391846 1096.22229 1096.263184 1096.491455 1097.769897 1098.33313 1098.585083 1098.604492 1098.69873 1099.109253 1098.78186 1097.696289 1099.138428 1100.728027 1101.694336 1102.719238 1103.946411 1105.558472 1107.237305 1109.257568 1112.065308 1117.364624 1120.958618 1119.685303 1120.976318 1124.150146 1127.264771 1131.021606 1137.326904 1145.603394 1154.771484 1161.637207 1168.260376 1173.483032 1168.681641 1156.918823 1145.917114 1138.319214 1136.515625 1134.330566 1125.306396 1120.679688 1119.687988 1125.104736 1128.05249 1122.428223 1116.251831 1111.101196 1107.175171 1104.924561 1104.833862 1105.675171 1106.627197 1108.291504 1110.670288 1113.549194 1116.08606 1118.057739 1118.991211 1114.489014 1111.27771 +1101.059814 1099.826416 1099.985352 1100.977417 1101.991089 1103.046997 1104.121826 1105.183838 1106.132568 1106.883301 1107.54541 1108.171997 1108.795532 1109.766357 1110.425659 1111.088013 1111.665405 1112.171143 1112.748047 1113.345215 1113.877686 1114.519897 1115.340942 1116.112671 1116.872314 1117.724609 1118.525635 1119.290283 1120.07959 1120.887207 1121.964966 1123.498535 1125.262085 1127.428223 1129.69751 1131.73291 1133.329102 1133.943726 1134.258179 1135.052368 1136.035767 1136.575684 1137.380737 1138.564697 1140.099731 1142.212036 1144.375732 1146.220581 1147.623169 1148.824707 1150.004272 1151.410522 1152.855225 1154.204468 1155.850708 1157.487427 1160.156372 1165.001221 1169.895874 1175.518433 1182.547607 1192.539429 1200.615112 1206.843018 1210.441284 1220.217041 1234.389648 1243.944946 1248.694092 1252.832153 1263.25061 1271.141602 1286.577148 1294.041138 1289.923096 1283.114868 1272.677002 1265.566406 1271.110474 1273.414551 1274.617065 1282.142212 1288.421387 1294.609741 1300.884521 1304.066284 1307.019043 1308.277588 1304.80249 1301.081177 1297.539795 1296.0448 1294.675415 1292.517334 1286.8573 1281.92627 1281.787354 1278.979736 1269.198853 1260.757812 1250.190186 1241.134888 1234.77417 1228.85376 1223.821777 1221.642212 1217.466309 1211.337036 1207.964844 1203.542114 1199.404419 1197.331909 1194.449463 1189.164673 1183.533691 1183.630371 1183.903931 1184.001953 1183.86731 1186.952881 1188.827271 1191.27771 1192.547607 1193.737793 1194.421265 1194.777954 1195.085449 1196.057617 1196.119751 1195.897949 1195.558472 1194.236694 1192.963989 1191.912109 1191.192749 1190.481934 1189.563965 1188.039917 1185.120605 1183.428467 1182.817383 1182.869873 1183.109497 1182.822144 1182.169434 1182.606934 1183.487183 1185.152588 1186.890991 1188.198242 1189.767578 1191.554932 1193.374512 1194.22644 1194.300049 1194.191528 1194.964355 1197.957275 1202.783081 1206.52478 1208.934814 1210.859985 1211.911621 1212.102295 1211.487671 1210.384399 1208.014038 1205.821411 1205.251953 1207.457397 1209.494141 1210.82373 1210.764893 1210.34021 1208.844727 1207.388916 1201.039673 1196.903198 1193.241699 1189.996094 1185.294067 1182.921875 1184.449341 1185.739258 1185.887939 1183.505005 1179.314575 1176.895386 1173.757202 1171.814697 1171.908691 1171.904907 1171.814697 1171.850952 1171.838867 1171.797729 1171.551147 1171.486206 1171.416626 1171.243286 1170.666748 1170.137329 1169.81189 1169.955078 1171.154053 1171.368774 1171.359131 1171.300049 1171.369263 1171.718506 1171.944214 1172.327759 1172.587524 1172.805786 1172.962769 1173.024658 1172.937866 1172.958008 1172.845703 1172.674316 1172.442627 1172.208374 1171.936401 1171.715454 1171.43335 1171.083008 1170.600342 1169.966675 1169.260986 1168.564209 1168.0979 1167.741699 1167.337769 1166.997192 1166.600464 1166.162842 1165.599976 1164.971069 1164.553467 1164.306763 1164.117065 1163.836426 1163.461304 1163.009399 1162.706299 1162.236206 1161.823975 1161.182007 1160.789917 1160.519775 1160.031616 1159.824341 1159.649414 1159.633423 1159.407104 1158.884277 1157.182251 1155.115356 1154.426025 1156.30603 1158.989502 1160.968262 1162.335815 1164.311768 1167.315918 1170.314087 1173.036133 1175.499878 1179.544922 1184.888184 1194.037598 1198.005737 1196.016724 1195.125122 1195.337036 1199.359619 1204.058716 1206.41333 1208.644653 1212.297974 1215.145508 1215.405762 1214.555664 1213.265381 1213.324707 1213.645752 1215.29187 1218.064575 1223.279297 1224.13147 1231.067749 1231.594116 1238.168579 1247.27771 1255.365479 1260.29187 1266.113159 1270.978027 1273.655151 1270.445312 1266.191162 1262.494019 1253.417603 1247.150269 1242.18457 1243.935059 1241.180542 1230.236816 1217.690796 1226.404907 1238.478516 1249.799072 1257.839478 1260.237183 1258.083008 1254.235229 1251.717896 1249.260864 1246.756958 1243.124268 1236.795898 1227.595703 1212.983765 1204.158691 1195.236938 1188.451416 1183.509277 1182.971191 1175.500977 1172.371216 1169.662964 1165.327515 1161.775635 1159.598022 1156.317749 1151.716675 1149.254517 1148.318604 1147.726685 1146.868042 1144.8396 1142.427124 1139.860107 1138.240967 1136.86377 1135.398193 1134.042236 1132.995239 1132.450073 1131.981567 1131.135376 1130.123779 1129.129028 1128.047852 1127.228027 1126.370117 1125.666138 1124.948853 1124.131836 1123.226929 1122.250366 1121.629517 1121.408936 1121.452393 1121.505981 1121.506104 1121.711792 1121.587524 1120.250366 1117.991211 1115.893433 1114.000366 1112.409058 1111.752563 1111.502197 1110.985474 1110.920532 1111.126587 1112.203125 1113.191284 1114.032837 1114.887939 1115.622437 1116.262329 1116.692993 1117.09314 1117.432861 1117.797485 1118.154663 1118.608398 1119.0896 1119.688477 1120.422485 1121.004517 1121.404175 1121.50708 1121.404541 1121.391113 1121.658936 1122.40979 1126.091919 1129.02478 1133.034912 1134.630127 1135.273926 1135.516235 1135.803467 1135.569458 1135.528564 1138.403687 1139.287476 1139.938599 1140.163208 1140.222046 1140.015503 1139.62561 1138.93042 1137.871338 1136.892944 1138.074829 1139.498901 1140.203491 1140.828247 1141.313232 1141.461182 1141.13855 1140.555542 1139.481079 1138.0354 1135.133179 1134.491089 1134.266602 1133.901245 1133.287231 1131.633911 1129.149658 1127.424561 1126.447266 1126.499023 1127.081421 1127.998779 1129.094727 1130.051514 1131.109619 1132.457153 1133.944946 1139.121704 1143.834229 1145.963623 1147.368652 1152.333374 1155.388794 1156.929443 1156.97583 1160.039185 1166.262695 1169.840454 1178.884766 1190.753906 1197.760742 1201.103882 1206.254883 1209.307983 1208.832642 1205.470459 1201.630371 1197.008423 1204.171265 1215.821533 1243.56958 1250.234253 1257.0354 1257.246216 1253.304932 1248.124634 1243.521484 1238.796265 1234.290894 1229.764038 1224.777222 1219.974854 1215.862183 1210.251343 1204.309937 1199.567871 1194.674561 1188.071533 1176.882446 1164.329224 1167.101929 1158.894897 1161.913086 1158.041138 1156.247437 1154.016479 1152.008179 1150.337158 1148.868164 1147.094116 1145.196411 1143.350342 1142.002686 1140.90979 1139.879639 1138.98645 1138.08606 1137.290161 1136.398193 1135.24353 1134.709717 1134.405273 1132.544922 1132.52124 1134.393433 1135.187744 1135.347534 1134.89502 1134.461304 1134.863647 1134.78833 1129.620605 1122.269653 1121.767578 1120.670288 1119.118164 1117.426147 1115.712036 1114.06189 1112.690918 1111.608887 1110.134766 1109.314453 1108.379639 1107.750244 1107.202271 1106.837158 1106.63208 1106.606323 1106.716797 1106.831177 1106.655396 1105.983154 1104.534668 1102.967651 1101.415649 1100.164429 1098.922607 1097.828857 1097.21582 1096.59375 1096.102295 1095.801636 1095.733643 1095.941528 1096.688232 1097.460571 1097.566284 1097.557983 1097.678223 1098.365356 1098.166748 1097.717773 1099.312134 1100.225708 1100.789551 1101.437012 1102.843994 1104.600464 1106.708618 1109.000854 1111.630737 1112.945312 1116.38916 1117.085938 1118.247803 1120.487793 1121.811279 1127.856323 1133.539062 1140.935303 1148.333008 1157.471069 1169.06311 1170.732178 1160.779175 1146.797852 1135.067871 1130.23938 1126.182007 1122.057983 1123.510742 1122.008301 1113.789429 1118.102783 1119.02771 1115.499512 1110.585083 1107.776978 1103.936646 1101.428467 1101.622925 1103.011841 1105.068115 1107.469604 1109.581909 1115.884888 1121.425415 1123.294189 1123.848755 1120.039673 1116.025879 +1101.783569 1100.262207 1100.52002 1101.491699 1102.334229 1103.420044 1104.530029 1105.707153 1106.606689 1107.509888 1108.191772 1108.576172 1108.954102 1109.657593 1110.402222 1111.169556 1111.834839 1112.507446 1113.070801 1113.613403 1114.18396 1114.823853 1115.52478 1116.266968 1117.147217 1117.828003 1118.640015 1119.421997 1120.204956 1121.050049 1121.838745 1123.624756 1126.084839 1128.485718 1130.859253 1133.034546 1134.591187 1135.226929 1135.496338 1135.9823 1136.183838 1136.326782 1136.758545 1137.674683 1139.619751 1142.047485 1144.667236 1146.495728 1147.812866 1149.006104 1150.042114 1151.138306 1152.288574 1153.704224 1155.251831 1157.118652 1159.446777 1164.050781 1169.177124 1174.557739 1180.193359 1186.215942 1192.30481 1195.937134 1197.487427 1209.298828 1221.091187 1226.779907 1229.130737 1233.880005 1247.270386 1262.652832 1276.213379 1282.861694 1281.746338 1274.485596 1263.016968 1255.177124 1259.63855 1258.656738 1263.585693 1273.478149 1281.299194 1290.361328 1296.73291 1301.212036 1305.77063 1306.82312 1304.682495 1297.911255 1292.133301 1288.528931 1286.58606 1283.1427 1279.199463 1273.204468 1271.959839 1269.79187 1263.81665 1257.528076 1251.175171 1243.825928 1236.245117 1229.290771 1221.578125 1219.4552 1216.3573 1211.704468 1208.80188 1205.396851 1201.526733 1198.981812 1197.069946 1194.041748 1189.214355 1187.969604 1188.152344 1189.300049 1190.740967 1192.772095 1194.80835 1195.616577 1196.004639 1195.834961 1195.856201 1196.090332 1196.373291 1196.506714 1196.362183 1196.144775 1195.618164 1194.596436 1193.484253 1192.635498 1191.944458 1191.330933 1190.621704 1189.427856 1187.86438 1185.613525 1184.096924 1184.268433 1184.90979 1184.780273 1183.651001 1183.697998 1186.306396 1188.938232 1190.851318 1192.136719 1192.441162 1194.210327 1197.311646 1198.190063 1198.502441 1197.314819 1195.753906 1198.88147 1201.353027 1203.855225 1207.090088 1208.991821 1210.208374 1210.692383 1210.45166 1209.478882 1206.879028 1202.931641 1202.355957 1205.759888 1209.177612 1210.732178 1210.883057 1210.380493 1208.906128 1207.050659 1202.064331 1197.506714 1193.884033 1189.696533 1186.478516 1183.649414 1182.240723 1182.03833 1181.861694 1178.967896 1174.977661 1172.481812 1172.333496 1172.270386 1172.133423 1172.087646 1172.093872 1172.066895 1171.942993 1171.79834 1171.572998 1171.406372 1171.22168 1170.910034 1171.239502 1171.356079 1171.380737 1171.407715 1171.571411 1171.714111 1171.814575 1171.896118 1172.061279 1172.115723 1172.36084 1172.521606 1172.921753 1173.098999 1173.240356 1173.242065 1173.237061 1173.139893 1173.053955 1172.778198 1172.611572 1172.420044 1172.110474 1171.783325 1171.540771 1171.271973 1170.770142 1170.106567 1169.408813 1168.993286 1168.5177 1168.224609 1167.889893 1167.540894 1167.158447 1166.693604 1166.211304 1165.517578 1165.029541 1164.752319 1164.438965 1164.189575 1163.768677 1163.336548 1162.96814 1162.601929 1162.235352 1161.757446 1161.312256 1160.917969 1160.514404 1160.353638 1160.126343 1159.892334 1159.644653 1159.130737 1157.634155 1155.185547 1155.141357 1156.880737 1159.020264 1160.933716 1162.401123 1164.539673 1167.122681 1169.5896 1171.379395 1174.534668 1178.59729 1182.372925 1192.623291 1196.821045 1197.293091 1197.595947 1198.839844 1201.450562 1205.702759 1209.579956 1215.921997 1219.875244 1220.463379 1220.605469 1219.371094 1216.941528 1216.62915 1216.967407 1219.057007 1218.976196 1224.738281 1230.055176 1233.646362 1237.855835 1240.154785 1242.429321 1249.997437 1257.672852 1265.256348 1270.063965 1269.593628 1266.628906 1265.802368 1262.216919 1259.650879 1259.475464 1254.624268 1252.001587 1248.289429 1235.026733 1217.690063 1225.84021 1237.487793 1252.683228 1266.132935 1268.940308 1264.19165 1258.294556 1254.091309 1249.97644 1244.42041 1240.772705 1235.445312 1227.430786 1216.166382 1205.583496 1197.235718 1187.425415 1176.129883 1168.84375 1169.213501 1168.719604 1167.121094 1163.014404 1160.00061 1159.160156 1157.748047 1153.71106 1151.151978 1149.856567 1149.079834 1148.040405 1146.390259 1144.213013 1141.736084 1139.633179 1137.378174 1135.273682 1133.981323 1133.644531 1133.552246 1133.158691 1132.1604 1131.158569 1129.977295 1128.984253 1127.956421 1127.060791 1126.077515 1125.161987 1124.113037 1123.009521 1122.129639 1121.955444 1122.067383 1122.184692 1122.262451 1122.391602 1122.485718 1122.318481 1121.294922 1118.671143 1116.273926 1114.301025 1112.813965 1112.08313 1112.141479 1111.932007 1111.965332 1112.293335 1112.940796 1113.832153 1114.744019 1115.617676 1116.359009 1117.00415 1117.490234 1117.882568 1118.106445 1118.486816 1118.861206 1119.175781 1119.72168 1120.312134 1121.009033 1121.687622 1122.195435 1122.515137 1122.209473 1121.894653 1121.823364 1121.940552 1121.83252 1127.755859 1132.084595 1134.498413 1134.847534 1135.465576 1135.970825 1136.528687 1137.571045 1138.89624 1139.921631 1140.767212 1141.33252 1141.666504 1141.851074 1141.882935 1141.443726 1140.976074 1140.759766 1141.292969 1141.947266 1142.609985 1143.378784 1144.208618 1143.86084 1143.054932 1141.94751 1140.817627 1139.265503 1137.611694 1136.708374 1136.31665 1135.883179 1135.312256 1134.185059 1131.550903 1129.541138 1128.392334 1127.910645 1127.776001 1128.156372 1128.685303 1129.546753 1130.489258 1131.504761 1133.206055 1136.922729 1139.935547 1142.673584 1145.886719 1149.707153 1151.661743 1156.742065 1159.415527 1159.664551 1167.45813 1173.661377 1177.848267 1184.156494 1191.78418 1195.5625 1201.37207 1203.515503 1201.598633 1197.445557 1196.876709 1193.574707 1204.052856 1215.684448 1234.721558 1244.898193 1252.31665 1257.668945 1254.91394 1248.928955 1243.956421 1239.953735 1235.501831 1231.424683 1226.890381 1222.978027 1218.531128 1213.161377 1208.658569 1202.870239 1196.900635 1184.959473 1179.936279 1180.248413 1175.814575 1170.176147 1166.477783 1161.746582 1158.077271 1155.879272 1153.640137 1151.196899 1149.065552 1146.905396 1145.085571 1143.831665 1142.894531 1142.050781 1141.102173 1140.163452 1139.2323 1138.323486 1137.403687 1136.516479 1135.384155 1133.988525 1134.19519 1134.086182 1134.81189 1135.708374 1135.750122 1135.448486 1134.914673 1134.756958 1133.289551 1129.751709 1125.762817 1124.252197 1121.832275 1119.838623 1118.035034 1116.014404 1114.086548 1112.252075 1110.614502 1109.940186 1109.099609 1108.378662 1107.670044 1107.056519 1106.559326 1106.271606 1106.042725 1105.944824 1105.849243 1105.351074 1104.456787 1103.161499 1101.637451 1100.553467 1099.817627 1099.125244 1097.936157 1097.681763 1097.090332 1095.945557 1095.465942 1095.177734 1095.305786 1095.660889 1096.341064 1096.571777 1096.620117 1096.901489 1097.446655 1097.349487 1097.936035 1099.225952 1099.543945 1099.687622 1099.781616 1101.287476 1103.588867 1105.827148 1107.782349 1109.068848 1110.654907 1113.520996 1113.505615 1113.112305 1116.680786 1120.230225 1126.385254 1134.308472 1140.51123 1148.444824 1156.020996 1165.071655 1162.051758 1149.679932 1137.655273 1128.50061 1122.169556 1119.955322 1121.874756 1121.230347 1113.747681 1108.708984 1110.38208 1110.473755 1108.321655 1106.036377 1103.325806 1100.325562 1097.728394 1099.034302 1101.09729 1103.9198 1106.797729 1109.940674 1117.26709 1123.307373 1125.07605 1124.372925 1123.700806 1122.684814 +1102.21936 1100.537964 1100.977295 1101.815674 1102.807251 1103.871704 1105.024658 1106.098633 1107.2948 1108.230469 1108.963135 1109.234253 1109.365234 1109.683472 1110.408569 1111.270508 1112.008423 1112.681396 1113.323364 1113.917114 1114.563599 1115.174194 1115.848755 1116.602173 1117.342651 1118.066528 1118.933716 1119.747437 1120.631592 1121.386475 1122.258789 1124.068848 1126.970703 1129.55542 1132.231445 1134.267822 1135.236084 1135.532837 1135.608154 1135.729736 1135.840698 1135.093384 1135.071289 1136.320557 1138.823364 1141.581543 1144.118286 1146.234253 1147.651611 1148.746826 1149.662231 1150.678223 1151.82373 1153.294189 1154.951294 1156.730103 1158.669189 1163.063232 1167.892212 1172.534546 1176.687256 1180.797119 1183.353882 1185.589844 1190.56543 1197.557373 1205.030518 1209.161621 1209.368896 1224.877319 1244.722778 1258.952759 1267.7323 1269.596436 1267.816406 1260.785156 1251.485352 1247.291992 1249.613525 1252.401123 1263.868652 1273.397217 1282.302124 1290.560547 1295.473633 1298.03125 1301.927246 1303.508057 1301.506226 1295.570679 1289.147461 1282.681274 1280.062012 1274.560059 1272.048828 1266.460693 1263.220459 1262.936157 1258.284912 1254.098145 1252.341675 1247.850098 1237.758057 1227.527588 1218.982422 1215.713379 1211.43457 1208.350708 1207.94812 1205.708862 1202.198242 1199.581055 1197.632202 1196.107178 1192.833984 1191.510498 1192.879761 1195.762085 1194.504395 1195.998291 1196.141846 1196.069458 1195.993652 1196.001587 1196.041016 1196.192627 1196.384521 1196.421265 1196.455566 1196.28833 1195.793823 1194.883057 1194.100952 1193.380859 1192.807373 1192.520386 1191.940674 1191.076538 1189.808472 1188.063965 1186.82312 1186.495117 1186.466187 1186.605591 1186.862305 1188.401733 1190.270508 1193.530396 1195.242065 1195.2854 1194.551392 1197.659912 1203.831787 1208.661255 1207.497559 1202.495972 1199.634155 1199.24231 1199.03186 1199.079712 1203.123657 1206.435059 1208.293823 1209.048218 1209.405518 1208.815063 1206.164551 1198.21228 1197.140625 1202.755859 1207.516235 1210.374878 1210.113037 1208.067261 1205.272583 1201.994385 1198.269165 1195.276123 1191.667236 1188.526367 1186.536743 1185.080566 1183.361816 1179.761963 1176.916016 1173.910278 1172.742554 1172.651123 1172.548706 1172.460449 1172.429932 1172.400391 1172.370605 1172.258301 1172.105591 1171.936768 1171.755005 1171.574951 1171.434448 1171.4729 1171.625488 1171.721191 1171.815918 1171.897949 1171.997803 1172.05957 1172.312378 1172.349731 1172.592285 1172.645874 1172.703247 1172.81665 1173.001221 1173.271973 1173.387451 1173.431641 1173.419434 1173.219604 1173.12085 1172.931396 1172.649292 1172.429932 1172.023804 1171.729004 1171.447021 1171.188354 1170.853516 1170.148315 1169.639771 1169.202148 1168.881348 1168.453857 1168.26355 1167.910278 1167.593872 1167.176636 1166.645996 1165.983398 1165.454224 1165.105957 1164.741821 1164.372559 1164.077026 1163.751343 1163.318726 1162.900757 1162.52771 1162.124878 1161.647339 1161.301514 1160.968628 1160.647705 1160.386841 1160.121948 1159.77063 1159.162842 1157.931885 1155.490234 1155.386719 1156.907837 1158.582275 1160.427368 1162.408691 1164.401001 1166.534912 1168.338501 1170.274536 1173.333862 1176.445435 1179.668701 1185.457397 1194.31604 1197.270996 1198.358643 1199.219727 1201.45459 1205.398682 1211.53125 1218.778687 1223.116089 1226.684814 1227.565674 1224.572388 1219.518677 1220.037109 1219.829224 1223.74231 1228.207764 1234.372681 1239.166626 1243.600098 1243.627197 1245.564209 1245.737305 1247.278442 1255.19043 1259.960938 1266.885742 1271.293457 1269.400391 1270.474365 1270.380493 1270.130005 1268.152344 1262.398315 1256.59436 1249.092041 1231.450439 1222.126465 1229.065063 1233.769043 1251.560913 1266.063232 1271.955322 1270.114136 1264.420532 1257.012207 1251.852295 1245.467163 1242.055664 1231.089844 1218.633545 1209.738037 1201.241577 1192.64917 1183.959351 1179.406128 1178.17749 1171.83667 1170.497192 1167.727051 1162.532959 1159.232666 1157.387207 1156.045166 1153.906006 1151.94165 1150.482666 1149.482178 1148.598877 1147.479004 1146.087646 1143.85083 1141.095459 1138.309326 1135.151001 1134.70105 1134.964355 1134.693848 1134.03772 1133.103638 1132.149658 1130.94397 1129.902832 1128.805664 1127.907471 1126.831299 1125.567505 1124.294189 1122.989136 1122.154297 1122.445557 1122.953125 1123.068481 1123.112915 1123.026489 1122.671509 1122.380859 1121.472168 1119.018555 1116.545898 1114.625854 1113.356689 1112.414795 1112.587769 1112.910156 1113.050293 1113.354126 1113.823242 1114.569092 1115.439575 1116.269165 1117.094604 1117.723267 1118.1698 1118.543213 1118.82373 1119.027344 1119.33728 1119.664185 1120.089233 1120.594482 1121.303955 1122.035522 1123.393311 1124.08252 1123.920898 1123.355469 1122.271606 1123.774536 1124.550781 1127.386963 1130.501221 1132.904053 1134.127197 1134.534668 1135.290527 1136.51001 1137.585693 1138.938599 1140.361084 1141.513062 1142.44043 1143.154053 1143.709961 1144.009521 1144.26001 1143.965088 1143.653931 1143.957764 1144.305664 1145.0177 1146.055542 1146.288818 1145.672363 1144.585449 1143.236694 1142.300171 1141.292847 1140.006226 1138.834717 1138.110474 1137.349854 1136.353394 1135.021362 1132.923706 1131.059448 1129.963379 1129.266235 1128.892334 1128.775757 1128.901367 1129.44458 1130.195923 1131.063599 1132.365234 1133.994385 1136.672974 1140.149048 1144.108276 1146.101807 1147.165283 1156.091187 1159.328735 1160.990967 1165.653809 1171.52356 1174.322144 1179.052002 1182.118774 1190.988037 1198.521729 1198.795654 1196.619873 1190.494019 1188.039185 1187.598145 1199.647583 1209.284546 1227.493896 1237.850342 1244.76709 1248.820068 1251.282959 1248.678711 1244.597778 1240.78186 1236.697144 1232.21582 1228.46228 1224.3927 1221.273804 1216.03186 1210.624756 1204.293579 1196.092896 1185.946411 1189.065552 1186.42334 1181.353394 1175.683594 1170.384033 1164.910767 1160.584839 1157.514893 1154.519897 1151.091064 1148.148438 1146.314331 1145.233276 1144.625122 1143.920654 1143.113525 1142.265503 1141.348511 1140.471924 1139.520508 1138.700073 1137.781006 1136.285889 1135.403687 1135.685059 1135.541626 1136.053589 1136.481323 1136.444702 1135.894653 1135.289307 1134.120483 1132.932495 1132.046875 1130.192139 1126.493408 1122.305542 1120.628906 1118.643311 1116.493652 1114.153931 1111.697876 1110.049438 1109.517212 1109.193848 1108.550659 1107.838745 1107.151245 1106.522217 1106.051147 1105.602417 1105.311279 1104.959351 1104.342407 1103.343506 1101.952393 1100.334717 1099.181885 1099.07605 1098.799194 1098.259644 1097.944092 1097.760742 1095.979126 1095.104614 1094.608887 1094.642456 1094.879395 1095.291504 1095.687134 1095.851562 1096.034058 1096.261108 1096.700439 1097.911011 1098.020996 1098.514282 1098.532471 1097.845337 1099.72937 1102.822876 1105.4375 1107.992188 1109.914917 1111.191772 1111.960083 1109.990723 1109.623779 1112.268433 1121.759155 1126.526855 1134.246338 1134.938599 1142.024414 1154.086548 1161.186035 1152.89978 1139.912231 1130.049438 1122.376099 1118.871094 1117.197754 1121.280151 1115.083252 1108.925049 1107.302368 1106.912842 1106.180542 1104.051636 1101.486084 1099.009399 1097.540894 1096.588989 1097.53418 1100.260132 1103.336792 1107.808228 1111.169189 1116.242554 1119.400635 1117.601074 1115.129883 1120.400635 1122.657593 +1102.616943 1100.977539 1101.382324 1102.285522 1103.207397 1104.37915 1105.515503 1106.794312 1108.008911 1108.937744 1109.726685 1110.007568 1110.148682 1110.101196 1110.632935 1111.486206 1112.346313 1112.984741 1113.625732 1114.29895 1114.918335 1115.637085 1116.270874 1116.922241 1117.640869 1118.415527 1119.205933 1120.130615 1121.054199 1122.017212 1123.089722 1125.079346 1127.736694 1130.650024 1133.080322 1134.671631 1135.177124 1135.337769 1135.234009 1134.987305 1134.620605 1134.165161 1134.139771 1135.089111 1138.097046 1141.010132 1143.385254 1145.421509 1147.05542 1148.125122 1148.768799 1149.925781 1151.228638 1152.900024 1154.683228 1156.319336 1158.226074 1161.672607 1166.101074 1170.779663 1173.522949 1174.497925 1176.488281 1180.960938 1184.855713 1190.044312 1193.916626 1197.374023 1206.155151 1218.536499 1236.717041 1252.248169 1260.524414 1265.820312 1268.349976 1253.086548 1244.673218 1241.063232 1241.964478 1253.513916 1264.76709 1273.644653 1282.0271 1286.625488 1291.562744 1293.002197 1293.528076 1293.821777 1296.139038 1291.602295 1282.827881 1277.052124 1272.211792 1263.185547 1261.617676 1259.067261 1253.637695 1257.247925 1254.58606 1249.272949 1257.236084 1256.112061 1239.499512 1226.643921 1217.843506 1212.583252 1207.318726 1205.282593 1204.213257 1203.170532 1201.124634 1199.354736 1197.52063 1196.098633 1194.129639 1193.704346 1194.919189 1195.777832 1195.373169 1195.05603 1195.427856 1195.613281 1195.52002 1195.441772 1195.647705 1196.00415 1196.23938 1196.46521 1196.292603 1196.224487 1195.997192 1195.35083 1194.653442 1193.873413 1193.608154 1193.494019 1193.552002 1192.989746 1191.959717 1190.317383 1189.218628 1188.717896 1188.665405 1189.016235 1189.949951 1192.126953 1194.675049 1197.318359 1200.018311 1202.780029 1202.178345 1204.563354 1213.165039 1221.286011 1211.626587 1206.309326 1201.76123 1199.338867 1196.271118 1194.830322 1197.806763 1201.207886 1204.417847 1206.679443 1207.648804 1207.729492 1202.856812 1195.591431 1194.84021 1199.814941 1206.250366 1208.751221 1206.872681 1203.401245 1200.043091 1196.450928 1192.097778 1189.334961 1186.143799 1185.373047 1185.118408 1184.725586 1184.043457 1178.360352 1173.688477 1173.058716 1173.016235 1172.953857 1172.859741 1172.743408 1172.691895 1172.702881 1172.644165 1172.547119 1172.387695 1172.194946 1172.048706 1171.915161 1171.843262 1171.888062 1171.975342 1172.0979 1172.243652 1172.349731 1172.387573 1172.574097 1172.687744 1172.824951 1173.002686 1173.125488 1173.143311 1173.133545 1173.273804 1173.35022 1173.459473 1173.52417 1173.464722 1173.349487 1173.168457 1172.950317 1172.715942 1172.320068 1171.930176 1171.717529 1171.557617 1171.329468 1170.843384 1170.263184 1169.770264 1169.396484 1169.164062 1168.904053 1168.65918 1168.318848 1168.004272 1167.594238 1167.0271 1166.345947 1165.818237 1165.36731 1164.986084 1164.677612 1164.512817 1164.096436 1163.64563 1163.279175 1162.823486 1162.419312 1161.947021 1161.616821 1161.280396 1160.952759 1160.523804 1160.104736 1159.697021 1159.191284 1157.929077 1155.93103 1155.264526 1156.61853 1158.14209 1159.9198 1161.891357 1163.868896 1165.935425 1167.662964 1169.209106 1170.79248 1172.774902 1176.473389 1181.729492 1188.599121 1194.688232 1197.759033 1197.136353 1197.049316 1197.84668 1205.307739 1212.03186 1222.543579 1230.369995 1233.756714 1231.536743 1226.608887 1226.422119 1228.384277 1229.440063 1232.542236 1242.152832 1246.390381 1247.984863 1248.863159 1249.821899 1251.969604 1255.377319 1259.459351 1268.306763 1272.744141 1277.84668 1278.586792 1277.678955 1278.844971 1279.225586 1275.291504 1267.673218 1259.735229 1248.037476 1231.039062 1232.702026 1237.554932 1242.909424 1249.482422 1258.865601 1270.914795 1272.165771 1269.956543 1262.92395 1254.622192 1248.414062 1241.843506 1235.676392 1226.614868 1212.951782 1198.965698 1185.029785 1183.66748 1189.275635 1188.093628 1181.324829 1174.674561 1169.729004 1164.490479 1161.306641 1158.892944 1156.342651 1154.087646 1151.83667 1150.203125 1149.043701 1148.283203 1147.751709 1147.211548 1145.589722 1142.373779 1139.417358 1137.219482 1136.293213 1136.107178 1135.904419 1134.867065 1134.155029 1133.021973 1131.838013 1130.996826 1129.981934 1128.810791 1127.599487 1126.276978 1124.949219 1123.421265 1122.458252 1123.387695 1123.567139 1123.353516 1123.22644 1122.966553 1122.879761 1122.566895 1121.244019 1119.063354 1116.644897 1114.868774 1113.783203 1112.856689 1113.145874 1113.431152 1113.839355 1114.213501 1114.702637 1115.285034 1116.086426 1116.894043 1117.791138 1118.333374 1118.82312 1119.144043 1119.293823 1119.545776 1119.822632 1120.132568 1120.405396 1120.820679 1121.390747 1122.134888 1123.74646 1125.082886 1125.789062 1126.005981 1126.208374 1126.437378 1127.32959 1128.727783 1130.408203 1131.956055 1132.922852 1133.552734 1134.312378 1135.358032 1137.075684 1138.869019 1140.59436 1142.145996 1143.450317 1144.523071 1145.17395 1145.833862 1146.35437 1146.536255 1146.130737 1145.720825 1145.787598 1146.873901 1147.727661 1147.591675 1146.968872 1146.060181 1144.743164 1144.121582 1143.380493 1142.092163 1140.858398 1139.616211 1138.279297 1136.868286 1135.325439 1133.639404 1132.192261 1131.358643 1130.799194 1130.208496 1129.808228 1129.557007 1129.749512 1130.299561 1131.19165 1132.25 1133.356445 1134.123291 1137.96582 1141.300659 1143.581909 1145.917725 1149.930176 1154.684204 1157.163818 1158.387573 1164.508911 1170.829468 1175.099609 1178.694946 1185.677856 1195.019775 1194.923706 1191.02832 1184.308228 1181.210815 1184.118774 1192.21936 1201.594116 1221.710571 1229.990234 1233.809204 1238.874756 1245.652344 1247.852417 1245.923218 1242.292725 1237.658447 1232.898193 1229.031494 1225.452148 1220.841309 1216.216919 1209.36792 1205.86377 1196.983276 1197.62561 1195.559326 1190.428101 1185.300415 1179.559814 1173.112915 1167.903564 1162.854736 1158.870728 1155.040771 1151.105347 1146.710449 1146.356567 1146.492432 1146.063477 1145.067749 1144.075562 1143.309082 1142.458618 1141.638062 1140.894287 1140.010864 1139.035645 1138.111084 1137.328003 1137.174316 1137.181641 1137.502319 1137.527954 1137.147217 1136.374023 1135.009033 1134.238037 1135.002441 1135.040649 1133.612061 1131.31604 1126.143921 1121.801392 1119.562378 1117.726685 1114.980103 1111.231201 1109.844971 1109.821167 1109.815063 1109.308105 1108.222656 1107.479004 1106.750732 1106.005859 1105.366943 1104.797607 1104.187866 1103.502563 1102.49585 1101.005371 1099.24585 1097.852783 1097.79187 1097.822754 1097.990479 1097.413086 1096.812866 1095.634277 1094.846924 1094.193848 1093.95166 1094.118164 1094.448364 1094.792969 1095.009644 1095.119019 1095.450073 1096.056641 1096.742798 1096.909546 1097.464966 1097.315063 1097.255127 1099.679321 1102.037964 1104.958618 1108.596313 1110.574219 1110.489502 1109.146484 1107.951294 1107.553955 1110.826416 1121.115723 1124.970703 1127.299316 1132.301514 1145.110474 1156.324707 1160.508667 1146.530151 1131.526611 1122.596558 1119.079468 1116.223511 1113.273315 1109.801025 1108.710815 1106.233154 1104.88208 1103.789307 1102.138184 1099.744385 1097.449951 1096.612915 1095.953613 1095.786987 1096.377197 1098.279175 1101.735962 1107.267334 1111.773315 1113.472168 1112.65979 1105.704834 1105.984985 1113.826904 1113.999268 +1103.387939 1101.731934 1101.625854 1102.588867 1103.594238 1104.830078 1106.297607 1107.560425 1108.761963 1109.507324 1110.342407 1110.695801 1110.794189 1110.825562 1111.251587 1111.883301 1112.623169 1113.413208 1114.047119 1114.722778 1115.352173 1115.986572 1116.672974 1117.30188 1118.013794 1118.747559 1119.507812 1120.403198 1121.377808 1122.452393 1124.049683 1125.873535 1128.674438 1131.646851 1133.918457 1134.778931 1135.031128 1135.072388 1134.484497 1133.936401 1133.661133 1133.620972 1134.025391 1135.45874 1137.838745 1140.19812 1142.490479 1144.231812 1145.889526 1146.939209 1147.593018 1148.865723 1150.587036 1152.44812 1154.376099 1155.982422 1157.412598 1159.034912 1163.319092 1168.222412 1169.909668 1169.761475 1171.026489 1177.846436 1181.078491 1186.116089 1192.057373 1198.49585 1210.935913 1224.428345 1240.302734 1257.354126 1263.500122 1267.940308 1259.312988 1246.321533 1239.802856 1232.550293 1241.015137 1250.927246 1258.962036 1268.626709 1275.760132 1280.893066 1282.361572 1283.456787 1287.34375 1291.335083 1294.032471 1292.283203 1282.049805 1275.134521 1268.077026 1256.951294 1245.364868 1248.828369 1244.174683 1246.157715 1245.071167 1240.015259 1249.017212 1246.253296 1237.100708 1226.380493 1217.584229 1210.683594 1206.455322 1203.19519 1200.248657 1199.174561 1198.899048 1198.470703 1197.17334 1195.453247 1194.608887 1194.455322 1195.30127 1195.630737 1194.693115 1194.022217 1194.231812 1194.683105 1194.563843 1194.392822 1194.678955 1195.156006 1195.54834 1196.213745 1196.290161 1196.140625 1196.066528 1195.667603 1194.903931 1194.217163 1194.057861 1194.410767 1194.91394 1194.56543 1193.885376 1192.433472 1191.285278 1190.803833 1190.947754 1191.445679 1192.07959 1194.066895 1197.533203 1201.174805 1204.797363 1210.895508 1210.416382 1209.040771 1213.63501 1215.179688 1209.643433 1205.317139 1201.864868 1198.821167 1196.00061 1194.112305 1194.004761 1194.992065 1197.88855 1200.645508 1201.675049 1201.190186 1197.613403 1194.382324 1193.617432 1195.796631 1199.053101 1200.951416 1199.740479 1195.893677 1192.742798 1186.654785 1183.425903 1182.572144 1182.206177 1182.096924 1182.13623 1182.365112 1180.826538 1174.733398 1173.3302 1173.352417 1173.231689 1173.17395 1173.160156 1173.065308 1172.973511 1173.007935 1172.970947 1172.860596 1172.668945 1172.475464 1172.405884 1172.243896 1172.141479 1172.268433 1172.350342 1172.468994 1172.621826 1172.700195 1172.914551 1172.963501 1173.159546 1173.210449 1173.456787 1173.547974 1173.533691 1173.496704 1173.433716 1173.568237 1173.552856 1173.568604 1173.4104 1173.325317 1173.141479 1172.883057 1172.576538 1172.168091 1171.86792 1171.6427 1171.460083 1171.052734 1170.792725 1170.251221 1169.963501 1169.719116 1169.583862 1169.330811 1169.092896 1168.775879 1168.459961 1167.897827 1167.342529 1166.5896 1166.10437 1165.68457 1165.281128 1165.067505 1164.681519 1164.364258 1163.999512 1163.60022 1163.136719 1162.600708 1162.240112 1161.819946 1161.474976 1160.987671 1160.506958 1160.033081 1159.498657 1158.877441 1157.9646 1156.42041 1155.634155 1156.29541 1157.732544 1159.011475 1160.718384 1163.105347 1165.687988 1167.72583 1168.901245 1169.480713 1170.262695 1173.54187 1177.734863 1181.632568 1184.286865 1184.616821 1183.816772 1191.708374 1194.824097 1202.591675 1206.879272 1217.381104 1225.286255 1233.423584 1233.998657 1232.395386 1233.379639 1235.410767 1237.139893 1242.433105 1247.228516 1250.473633 1251.833496 1252.879883 1254.697998 1257.088745 1260.166748 1265.010742 1273.963135 1280.967773 1285.713867 1286.703491 1286.548584 1286.994141 1284.617676 1280.240723 1272.176147 1260.645752 1247.918335 1230.547485 1238.310547 1245.433105 1253.952515 1257.880615 1259.605469 1268.668457 1273.920166 1272.997681 1269.887573 1259.468506 1249.479614 1241.888428 1231.901611 1225.28418 1216.492676 1198.460693 1184.049683 1193.595093 1197.323975 1191.353149 1182.49292 1174.978027 1169.74646 1164.617798 1160.982666 1158.578003 1156.245605 1153.246338 1150.824829 1148.918823 1147.014282 1147.281128 1146.997803 1146.537109 1145.226318 1142.843872 1140.471924 1138.276978 1136.968384 1136.251831 1135.694946 1135.092529 1134.309082 1133.371948 1132.86438 1132.093262 1130.98584 1129.7323 1128.292114 1126.865723 1125.588501 1124.447021 1123.776733 1123.67688 1123.677612 1123.379517 1123.133179 1122.992554 1122.847412 1122.517944 1120.932739 1118.688843 1116.470459 1114.894287 1113.695435 1113.102905 1113.481201 1113.858154 1114.318726 1115.043091 1115.603149 1116.116943 1116.781616 1117.50415 1118.324463 1118.989014 1119.388428 1119.735474 1119.898438 1120.056885 1120.245361 1120.537354 1120.841187 1121.158569 1121.481323 1122.05957 1123.680054 1125.907959 1128.047974 1129.781494 1130.29126 1130.492676 1130.319336 1130.561401 1131.081909 1131.975708 1132.94519 1133.466675 1133.715576 1134.306641 1135.729004 1138.432495 1140.861084 1142.700684 1144.094116 1145.703857 1146.575562 1147.299316 1147.858276 1148.168091 1147.91272 1147.337158 1147.291748 1148.104004 1148.747925 1148.79541 1148.205933 1147.450439 1146.685791 1146.078857 1145.291748 1143.969849 1142.655029 1140.911499 1139.200195 1137.443604 1135.804321 1133.916748 1132.773071 1132.583618 1132.401489 1131.840332 1131.034546 1130.505859 1130.248901 1130.587402 1131.380005 1132.624146 1134.055786 1135.411377 1137.190796 1139.070557 1141.296387 1143.557983 1145.695557 1150.199585 1153.779175 1156.373291 1162.008911 1167.858643 1171.167969 1175.979492 1182.693848 1188.327393 1188.93103 1187.015381 1181.702148 1179.326782 1181.293213 1186.319702 1198.209595 1214.50354 1217.081177 1217.85791 1230.382812 1236.944336 1240.008911 1244.600708 1243.941284 1238.64856 1234.031372 1230.10437 1226.177979 1220.891357 1217.407227 1210.214233 1206.613159 1204.491455 1200.69873 1197.312866 1192.292847 1187.270996 1182.424805 1175.202515 1169.258423 1162.571289 1158.511475 1156.170288 1152.514526 1148.66626 1148.249146 1148.308594 1147.401001 1146.050049 1145.178833 1144.427124 1143.695312 1143.010864 1142.124756 1141.239014 1140.476074 1139.757568 1139.207031 1138.850952 1138.855957 1138.78064 1138.609131 1138.110718 1137.463135 1136.206177 1135.991089 1135.998169 1135.663818 1134.939087 1134.879028 1132.15686 1121.901123 1121.464233 1119.561157 1116.445679 1113.239258 1112.015015 1112.155518 1111.545654 1110.745117 1109.465698 1108.101318 1107.032715 1106.153442 1105.266724 1104.480713 1103.701904 1102.83606 1101.835693 1100.552368 1099.180542 1098.053589 1097.848511 1097.841919 1097.72998 1097.857666 1096.499756 1095.52832 1094.557007 1093.760742 1093.471191 1093.442993 1093.666626 1093.929688 1094.052002 1094.231567 1094.561035 1094.973755 1095.401367 1095.848145 1096.098389 1096.24292 1097.055908 1098.705933 1100.997681 1103.65564 1106.85083 1108.253296 1106.314941 1103.787598 1103.797974 1106.105469 1109.469971 1113.853149 1120.078125 1124.62146 1133.64624 1146.847656 1156.704712 1157.333496 1143.8302 1127.373413 1119.853027 1116.335938 1113.579956 1111.578979 1108.220703 1104.843506 1102.222656 1101.600098 1101.313477 1100.259033 1098.123047 1096.237183 1095.289185 1094.895264 1094.872437 1095.456055 1096.74939 1098.650635 1102.914062 1108.723755 1108.882446 1102.715332 1095.59375 1102.47522 1106.825073 1106.073242 +1104.489746 1102.59729 1101.715332 1102.777344 1103.908325 1105.231323 1106.78479 1108.330322 1109.630127 1110.138062 1110.623901 1111.145874 1111.430054 1111.544556 1112.001953 1112.531372 1113.067627 1113.71814 1114.351562 1114.991455 1115.727417 1116.365723 1116.965942 1117.565918 1118.219116 1118.883667 1119.688477 1120.472534 1121.376221 1122.184204 1124.278564 1126.292603 1129.1875 1133.016968 1134.621216 1134.798828 1134.747559 1134.409668 1133.512573 1133.065186 1133.174316 1133.449951 1134.133057 1135.646362 1137.357422 1139.58374 1141.578369 1143.212891 1144.708862 1145.549072 1146.330933 1147.685791 1150.07312 1152.150635 1153.977051 1155.828735 1157.59436 1159.453491 1162.406616 1165.955566 1168.300415 1171.102783 1173.146118 1177.923584 1183.346436 1187.052002 1192.569946 1201.164795 1213.611206 1225.873779 1246.063232 1259.009766 1267.70874 1267.02771 1257.880859 1243.329224 1234.402344 1228.589233 1229.494019 1242.678467 1249.913574 1255.636841 1265.315674 1271.495605 1272.904419 1276.378906 1282.930054 1290.34436 1294.560059 1293.533447 1283.674438 1275.313965 1267.448975 1252.658936 1241.980347 1234.960449 1234.956543 1237.761963 1235.363159 1225.056274 1233.291016 1235.664429 1231.095093 1223.191895 1215.795776 1208.788086 1204.501465 1199.919678 1196.065552 1195.161621 1195.963379 1197.168823 1196.342407 1194.520386 1193.875366 1193.846313 1194.23938 1193.952393 1193.473022 1192.835815 1192.952026 1193.192505 1193.19043 1193.223389 1193.558716 1194.112915 1194.770508 1195.633423 1196.127563 1196.092407 1195.962769 1195.565186 1195.036987 1194.421875 1194.289062 1194.771118 1195.547852 1195.828369 1195.475342 1194.328247 1192.955078 1192.545044 1192.924438 1193.665894 1193.916748 1195.294189 1199.889648 1204.576782 1208.82605 1217.624146 1217.680054 1214.932495 1214.050415 1210.159668 1206.307739 1204.409912 1201.98877 1198.581665 1195.282104 1194.160156 1193.940918 1193.962646 1193.820801 1195.010742 1195.316284 1195.473022 1194.550415 1193.165527 1192.618896 1193.349243 1194.236816 1194.27002 1193.32312 1189.626343 1182.517334 1181.895752 1181.123901 1180.576782 1180.247192 1179.737915 1179.199951 1178.05957 1175.307617 1173.613403 1173.584717 1173.535889 1173.532959 1173.466431 1173.438843 1173.43103 1173.363281 1173.282837 1173.253662 1173.150757 1172.998657 1172.852905 1172.692139 1172.548096 1172.497437 1172.566895 1172.728882 1172.758057 1172.921143 1173.004272 1173.214966 1173.448975 1173.53186 1173.660156 1173.865234 1173.920776 1173.907349 1173.795166 1173.70459 1173.702759 1173.590942 1173.498779 1173.348755 1173.213135 1172.94873 1172.597534 1172.378906 1171.955444 1171.597046 1171.213013 1170.993042 1170.827148 1170.473145 1170.27478 1170.206177 1170.134033 1170.089722 1169.949097 1169.64624 1169.258789 1168.817139 1168.243896 1167.635254 1166.982178 1166.447754 1165.988281 1165.660889 1165.391968 1165.083984 1164.737915 1164.351562 1163.901733 1163.38501 1162.869385 1162.431519 1161.953003 1161.530396 1160.936401 1160.398438 1159.776123 1159.034424 1158.479492 1157.613892 1156.830078 1155.892944 1156.326416 1157.569824 1158.268799 1159.294312 1162.866821 1166.102905 1168.729248 1170.276489 1170.310303 1170.266968 1170.599365 1173.480957 1177.264404 1180.043823 1181.385132 1185.81543 1196.35144 1205.050293 1211.050171 1213.693359 1216.195068 1221.216797 1229.096313 1233.880005 1238.454346 1239.127075 1240.036133 1243.276611 1249.105225 1254.588501 1255.963379 1255.371948 1256.577393 1259.30957 1262.445557 1265.221802 1268.865723 1283.143433 1292.630615 1296.630981 1296.010254 1295.199707 1293.736328 1288.90271 1280.280151 1271.78894 1259.160767 1246.828125 1236.021118 1245.390015 1254.114502 1262.081177 1267.181763 1266.717041 1269.856323 1277.946045 1277.461548 1273.628296 1265.827637 1253.121216 1245.318604 1235.718506 1221.796387 1208.415894 1199.18396 1195.067139 1196.482178 1197.101929 1192.813599 1181.573853 1171.339966 1167.898926 1163.018433 1158.743286 1157.319824 1155.668213 1152.628052 1148.352661 1147.085449 1146.316528 1146.209961 1145.843018 1145.478271 1144.65564 1143.504761 1141.571777 1139.056274 1136.305786 1134.966187 1134.950684 1134.301025 1133.936646 1133.916626 1133.981812 1133.195801 1131.899048 1130.401001 1128.92688 1127.597412 1126.285034 1125.078491 1124.192993 1123.561523 1123.109741 1122.178101 1122.328979 1122.512573 1122.424438 1122.306152 1120.62439 1117.927979 1115.80896 1114.645996 1113.908813 1113.465698 1113.843628 1114.371338 1115.028931 1115.763794 1116.377808 1117.00354 1117.662476 1118.294678 1119.009155 1119.68457 1120.137207 1120.449829 1120.579224 1120.641235 1120.827881 1120.99353 1121.412842 1121.704834 1121.960327 1121.996216 1124.694336 1127.676514 1130.367188 1133.332764 1134.476807 1134.262817 1133.282349 1132.832397 1132.226929 1132.786011 1134.464355 1134.42041 1133.98938 1134.374634 1134.829834 1138.854492 1141.544678 1143.327637 1145.02063 1146.71814 1147.810913 1148.593262 1149.192261 1149.552368 1149.45874 1149.271118 1149.253052 1149.553711 1149.96106 1149.954956 1149.550659 1148.872314 1148.375244 1147.739868 1147.003296 1145.748779 1144.170776 1142.516724 1140.470825 1138.08313 1135.484497 1133.770752 1133.81604 1133.974243 1134.019897 1133.528931 1132.561768 1131.412476 1130.908447 1130.997681 1131.601318 1132.70874 1134.639404 1136.322388 1136.24231 1135.796875 1139.123169 1142.31543 1145.889526 1149.32605 1151.928833 1155.182617 1159.803589 1162.471802 1167.406982 1172.791748 1178.92395 1183.091187 1183.860352 1183.155518 1180.443115 1176.342529 1178.189819 1183.661743 1191.141357 1203.141357 1204.930176 1211.779785 1220.830933 1220.887451 1222.498291 1229.394165 1236.30603 1237.143066 1234.633301 1231.702637 1227.740479 1224.106812 1220.726685 1215.714355 1211.033813 1207.807129 1202.145142 1196.955811 1190.139771 1185.515259 1182.787598 1175.126709 1168.884521 1159.711548 1158.105103 1156.668701 1154.450806 1151.915894 1150.317749 1149.493774 1148.269653 1146.860474 1145.908325 1145.332886 1145.017456 1144.33313 1143.253418 1142.402466 1141.870361 1141.383789 1140.755005 1140.476562 1140.316895 1140.061646 1139.707031 1139.12561 1138.567139 1137.702148 1137.144165 1136.557007 1136.030273 1135.476685 1135.080322 1133.826538 1126.585938 1123.420044 1120.727173 1117.996216 1116.406738 1115.852661 1115.350342 1113.923462 1111.978638 1109.922852 1108.802002 1107.540405 1106.396973 1105.267822 1104.300903 1103.285156 1102.40979 1101.404907 1100.412231 1099.437988 1098.763062 1098.055908 1097.85083 1097.65332 1097.860229 1097.039551 1095.418091 1094.326904 1093.431274 1092.94043 1092.725098 1092.858643 1093.014282 1093.130005 1093.364746 1093.510986 1093.677734 1094.117065 1094.470703 1094.921265 1095.578979 1096.643066 1098.245239 1100.473511 1102.12085 1103.126831 1102.533936 1100.196899 1097.26709 1100.30896 1104.590332 1108.072021 1110.864502 1119.795532 1126.37561 1136.526367 1148.924438 1157.215576 1150.10791 1137.50354 1122.667969 1118.135376 1113.77124 1110.155884 1108.947632 1105.176636 1101.189575 1097.651611 1098.790039 1099.958008 1099.122681 1097.050171 1095.519409 1094.462891 1093.950073 1093.899414 1094.307617 1095.254883 1096.592163 1097.7677 1099.493164 1097.744141 1093.718506 1092.765259 1097.259888 1097.866821 1096.788452 +1105.906006 1103.605347 1102.214722 1102.898193 1104.233887 1105.503784 1107.285034 1108.942627 1110.199341 1110.712524 1111.126099 1111.555664 1111.934082 1112.1604 1112.638672 1113.076904 1113.53772 1114.250854 1114.700562 1115.477783 1116.182983 1116.783447 1117.395508 1117.892578 1118.487671 1119.132935 1119.910645 1120.730469 1121.475952 1122.127197 1123.47229 1125.930908 1128.616333 1131.596436 1133.619507 1133.681641 1132.934448 1132.523804 1132.438843 1132.636963 1132.8573 1133.290039 1134.029907 1135.327271 1137.21936 1139.324219 1141.114624 1142.74231 1144.055176 1145.095459 1146.251221 1147.859741 1150.04834 1151.968506 1154.013062 1156.257202 1158.546265 1160.747559 1162.51123 1165.114014 1168.273804 1171.56897 1174.345825 1177.784912 1182.289795 1186.430176 1191.048096 1198.62085 1210.271484 1223.656006 1240.109497 1259.687134 1261.506714 1259.630859 1252.52417 1242.66272 1233.361328 1223.103516 1221.925171 1230.40686 1239.900024 1248.925659 1257.765747 1261.969238 1263.8927 1271.750488 1281.993774 1287.893433 1292.31958 1289.491455 1281.868042 1273.220703 1265.083496 1253.20166 1242.776855 1232.617432 1228.018555 1231.816284 1226.773193 1217.690308 1217.71167 1225.059814 1224.632935 1218.55835 1212.986938 1208.318115 1202.27124 1197.155762 1194.571289 1194.097412 1194.916138 1195.813721 1195.542603 1193.69812 1192.71582 1192.378906 1192.214844 1192.104126 1191.626221 1191.418823 1191.417603 1191.603149 1191.750488 1192.082642 1192.660156 1193.353516 1194.255737 1195.283325 1195.919434 1195.950317 1195.722168 1195.243408 1194.904053 1194.394897 1194.337524 1194.751709 1195.40918 1195.602417 1195.641113 1195.638794 1193.869385 1193.623047 1194.18042 1195.177246 1196.626221 1198.283813 1203.071167 1208.018555 1213.493652 1221.956055 1221.427979 1219.401978 1217.043213 1211.338867 1207.487061 1206.180542 1204.036743 1201.024536 1197.797607 1196.52356 1195.45752 1194.227661 1194.020386 1193.998657 1194.015381 1193.597534 1192.983398 1192.178589 1191.719482 1191.260742 1191.054077 1189.987915 1188.178467 1185.836792 1184.307983 1182.55957 1180.297119 1179.239014 1178.576294 1177.886841 1176.832397 1175.668091 1173.808228 1173.831665 1173.838623 1173.838989 1173.833618 1173.767212 1173.745117 1173.790039 1173.661133 1173.574097 1173.55188 1173.46814 1173.342529 1173.194092 1172.991943 1172.85437 1172.861572 1172.868896 1173.027588 1173.06604 1173.224365 1173.333984 1173.523193 1173.759399 1173.969849 1174.089233 1174.174316 1174.254761 1174.158447 1174.032715 1173.936035 1173.836792 1173.639648 1173.460327 1173.216675 1172.977173 1172.669922 1172.408813 1172.025146 1171.692139 1171.330566 1171.043213 1170.727905 1170.579712 1170.536743 1170.602051 1170.705933 1170.773926 1170.733276 1170.534424 1170.236572 1169.736084 1169.232788 1168.689209 1167.922607 1167.368652 1166.756348 1166.402344 1166.087891 1165.812378 1165.531006 1165.131104 1164.806885 1164.359863 1163.859497 1163.298584 1162.745239 1162.233643 1161.670532 1161.122925 1160.423096 1159.364868 1158.652588 1158.265625 1157.758789 1156.725952 1156.147583 1157.103271 1158.506958 1159.25415 1160.687866 1163.648193 1167.078857 1170.011353 1171.873413 1172.544556 1172.033081 1171.133789 1171.000854 1176.452637 1180.097412 1182.780151 1191.890381 1201.644531 1210.140015 1216.414551 1220.123901 1220.654297 1218.890381 1231.243042 1237.341797 1244.223755 1244.852173 1244.557007 1247.686646 1254.722046 1258.361328 1259.460938 1259.809692 1261.272949 1264.232788 1267.933105 1271.443237 1279.066528 1292.138428 1300.942017 1307.00415 1305.323486 1301.315063 1296.590332 1289.397827 1276.271118 1268.900391 1258.006592 1243.642822 1245.670044 1253.536011 1262.639404 1270.581787 1274.827148 1275.042969 1278.593384 1282.739868 1281.729248 1276.570923 1269.088623 1254.737671 1246.280029 1238.644287 1230.046265 1218.114136 1209.357178 1197.459717 1192.565918 1194.080444 1191.7854 1183.177368 1173.881836 1168.918091 1163.099487 1159.128906 1157.697632 1156.011719 1152.89978 1148.033569 1147.103271 1147.000122 1146.845703 1146.142578 1145.528931 1145.504395 1145.089722 1143.139648 1139.918701 1136.506104 1134.674561 1134.447632 1134.604126 1134.841919 1135.015747 1134.91394 1134.083008 1132.593994 1131.002441 1129.599731 1128.34082 1127.075195 1125.729858 1124.137329 1122.780029 1122.609375 1122.271362 1122.115601 1122.15625 1121.994629 1121.451538 1119.500488 1116.384033 1114.743042 1114.503662 1114.111572 1113.735352 1114.28772 1114.972534 1115.704834 1116.408203 1117.153687 1117.850464 1118.584473 1119.226807 1119.826294 1120.388672 1120.976929 1121.142944 1121.24707 1121.268433 1121.289062 1121.513184 1121.930542 1122.907104 1125.415649 1126.827148 1128.534302 1129.757812 1132.008789 1134.446655 1136.091064 1136.435547 1135.762939 1134.629883 1133.988892 1133.678711 1135.235474 1136.124756 1135.410889 1134.895752 1137.874512 1140.741943 1142.971191 1144.327515 1145.587769 1147.233765 1148.371582 1149.511597 1150.404297 1150.86145 1151.042114 1151.019165 1151.034424 1151.276367 1151.349609 1151.139038 1150.822021 1150.396729 1149.888428 1149.279541 1148.407227 1147.351807 1146.089355 1144.423828 1142.196899 1139.698975 1136.784424 1135.663208 1135.723877 1135.747559 1135.602173 1134.879272 1133.884399 1132.356323 1131.515991 1130.953857 1131.820435 1132.626465 1134.295898 1135.264648 1134.254883 1134.203979 1137.459229 1140.449707 1144.530518 1147.442139 1149.047119 1150.293213 1155.302368 1159.169312 1165.211182 1170.485962 1173.873047 1176.047607 1177.337402 1177.397705 1175.351929 1171.621704 1174.724487 1181.88501 1186.80188 1189.213623 1196.809814 1204.431641 1205.63501 1208.93042 1211.760742 1217.119629 1223.479126 1233.845947 1234.74292 1233.280762 1230.012207 1226.370117 1222.47522 1218.062622 1213.252563 1208.331177 1204.025024 1195.687622 1187.360718 1183.206909 1181.038574 1171.994873 1169.604614 1165.060791 1161.301025 1158.901978 1157.061646 1154.62085 1152.468506 1151.022461 1149.569214 1147.977783 1146.871948 1146.593994 1146.48291 1145.593262 1144.472656 1143.623657 1143.264038 1142.724731 1142.271851 1141.891479 1141.586914 1141.206055 1140.787109 1140.207764 1139.516846 1138.686279 1137.807617 1136.913208 1136.102417 1135.130127 1134.466309 1131.886597 1126.651123 1122.855591 1120.739746 1119.511963 1118.909668 1120.077393 1120.075439 1116.590698 1112.487793 1110.060791 1109.042114 1107.875 1106.524414 1105.315186 1104.072632 1103.004517 1102.029541 1101.109375 1100.204102 1099.380127 1098.508789 1097.766602 1097.902588 1097.636841 1097.591675 1097.78894 1095.632812 1094.105713 1093.098145 1092.44397 1092.099731 1092.089233 1092.111572 1092.132935 1092.168823 1092.248779 1092.432251 1092.844482 1093.30896 1093.972168 1094.800171 1096.01416 1098.004395 1099.876343 1100.480469 1100.651611 1099.025391 1097.184082 1097.419556 1101.218506 1106.013062 1111.233276 1116.902832 1121.528687 1127.794678 1134.161743 1147.80188 1150.099976 1140.458984 1126.289429 1119.355225 1115.806274 1112.784912 1108.862793 1105.34729 1102.13147 1098.829834 1096.76355 1097.842041 1098.263916 1097.308472 1095.978516 1094.648315 1093.552246 1092.898193 1092.660522 1092.729248 1093.259155 1094.008057 1094.479614 1093.861084 1091.74585 1087.571777 1086.334229 1088.647705 1088.492065 1087.681763 +1107.304565 1104.871338 1103.133301 1102.814575 1104.139526 1105.558838 1107.365234 1109.050049 1110.240112 1110.898193 1111.354126 1111.85022 1112.270264 1112.643799 1113.221313 1113.797119 1114.165649 1114.73938 1115.262329 1115.836914 1116.571289 1117.145386 1117.682251 1118.25769 1118.849609 1119.387329 1120.066162 1120.935791 1121.786377 1122.575928 1123.688599 1125.646973 1127.929321 1129.901367 1131.124878 1131.528687 1131.53064 1131.804199 1132.048828 1132.422852 1132.875854 1134.009766 1135.126343 1136.383911 1137.934814 1139.793823 1141.277954 1142.656738 1143.982666 1145.525391 1147.024292 1148.434692 1150.046143 1152.018555 1154.088501 1156.439819 1158.543945 1160.616211 1162.167847 1164.509277 1167.583374 1170.491333 1173.477783 1176.247192 1179.784546 1183.18396 1189.427979 1197.018188 1207.258179 1224.626587 1240.683716 1258.512085 1257.114258 1253.114136 1245.413818 1238.151367 1230.318726 1220.126709 1216.66333 1223.147339 1235.216309 1244.783325 1250.160889 1253.297485 1253.883667 1266.793823 1278.891724 1283.956543 1285.12439 1282.140381 1276.851074 1268.058594 1257.927612 1249.802979 1241.002808 1232.64917 1219.446899 1222.405151 1223.30481 1214.509521 1207.140015 1216.621582 1217.945801 1213.791138 1209.231323 1205.087891 1199.692383 1195.74939 1193.960083 1193.318115 1193.768311 1194.622803 1194.236206 1192.65564 1191.430908 1190.647827 1190.189453 1189.872925 1189.449829 1189.440308 1189.482544 1189.875366 1190.374512 1191.064209 1191.765625 1192.72583 1193.767578 1194.886719 1195.631348 1195.84314 1195.511108 1195.25708 1194.592773 1194.136719 1194.144043 1194.418823 1195.062866 1195.422729 1195.383423 1194.973877 1193.957642 1194.060059 1194.950806 1196.749634 1199.045776 1202.061035 1205.952026 1211.516357 1217.733887 1223.259277 1222.960327 1221.816406 1220.408447 1216.048584 1211.496338 1208.742676 1206.280151 1204.062256 1202.029297 1200.686768 1199.353394 1197.179443 1194.569092 1194.395264 1193.645142 1193.037476 1192.551025 1191.743896 1190.868408 1189.755371 1188.221558 1186.274414 1183.896484 1182.41626 1181.998291 1181.18811 1179.430908 1178.087402 1177.217529 1176.42981 1175.539917 1174.195801 1174.158936 1174.150635 1174.205078 1174.260498 1174.138184 1174.135986 1174.144165 1174.138306 1174.02124 1173.968262 1173.89917 1173.818726 1173.668213 1173.484863 1173.290161 1173.209595 1173.1521 1173.264893 1173.302246 1173.452881 1173.501587 1173.575317 1173.804199 1173.953857 1174.222656 1174.479858 1174.500244 1174.461792 1174.364868 1174.166504 1173.964478 1173.733765 1173.506958 1173.286987 1173.026855 1172.747803 1172.476685 1172.080322 1171.707397 1171.300293 1171.092529 1170.781738 1170.765991 1170.955322 1171.013306 1171.176392 1171.316528 1171.346436 1171.271606 1171.040527 1170.635376 1170.140015 1169.668945 1168.993042 1168.2854 1167.754272 1167.219727 1166.804077 1166.616089 1166.341919 1166.108398 1165.850586 1165.496338 1165.064453 1164.463745 1163.776367 1163.181396 1162.603516 1162.104858 1161.44751 1160.786011 1159.733398 1159.160767 1159.106445 1158.496826 1156.616699 1156.861084 1158.325562 1159.675903 1160.509399 1161.939819 1164.411255 1167.492432 1170.310913 1172.425293 1173.723877 1174.634277 1174.917725 1175.071411 1177.626953 1181.31604 1184.330933 1191.459839 1201.833618 1212.069092 1220.267822 1224.106445 1227.157837 1228.181885 1232.205811 1241.537598 1246.671875 1249.022583 1251.032959 1253.746338 1256.804199 1259.937988 1262.053101 1263.965698 1265.68103 1267.792847 1272.276367 1276.664795 1283.930664 1296.56897 1306.075562 1308.861938 1307.281128 1303.535278 1297.648926 1289.030029 1273.967407 1265.265625 1254.306763 1244.131104 1252.916138 1262.265015 1272.371094 1280.379028 1282.496216 1283.228882 1283.838013 1285.200317 1283.731323 1278.429443 1270.212769 1256.294434 1246.101074 1238.99707 1231.119385 1218.4198 1210.455078 1201.695557 1193.152466 1182.379028 1184.638184 1185.519897 1178.425293 1170.709106 1165.131958 1161.276978 1158.578003 1156.7323 1154.040161 1151.358276 1149.489746 1148.751465 1148.467773 1147.948242 1147.576538 1147.308472 1146.939453 1144.738281 1141.255493 1137.665527 1134.482666 1135.319946 1135.904663 1135.929443 1135.626587 1135.36853 1134.284302 1132.719604 1131.474121 1130.262939 1129.066528 1127.729126 1126.244507 1124.361084 1122.456055 1122.484375 1122.743408 1122.855591 1122.727783 1122.414429 1121.175293 1119.286621 1116.47229 1115.138672 1115.051025 1114.702271 1114.762329 1115.130127 1115.75708 1116.446655 1117.188843 1118.009277 1118.760864 1119.466553 1120.307007 1120.980591 1121.481934 1121.900391 1122.000244 1122.057495 1122.057739 1122.051147 1121.979492 1123.982056 1127.855103 1133.66748 1134.480835 1132.192261 1131.369873 1132.093872 1134.384399 1136.365723 1137.435791 1137.446533 1136.761475 1136.150879 1134.796509 1135.030884 1137.577637 1138.494263 1139.492188 1141.207031 1143.491577 1144.590698 1145.370117 1145.636108 1146.318604 1148.024658 1150.239136 1151.576538 1152.209473 1152.534668 1152.680298 1152.70874 1152.830444 1152.817017 1152.637329 1152.20752 1151.770264 1151.259033 1150.556885 1149.575439 1148.469849 1147.366699 1145.988892 1143.800415 1141.857544 1140.44873 1139.330322 1138.546753 1137.915527 1136.988159 1135.73291 1134.327148 1132.875 1132.195435 1131.391846 1130.857422 1132.156494 1133.253906 1133.47229 1133.32373 1133.840332 1136.077637 1137.872559 1140.282715 1143.543457 1145.136108 1146.250122 1152.140991 1157.530884 1161.753784 1165.890747 1168.329224 1169.235962 1171.175415 1172.133545 1171.02417 1168.804443 1172.223022 1178.820557 1183.45874 1181.528931 1188.444214 1193.003052 1192.137085 1196.901855 1198.259888 1205.775146 1212.369263 1221.926392 1235.005371 1234.724243 1232.105835 1228.055054 1223.730103 1219.672729 1215.081299 1211.091553 1207.39624 1201.731079 1197.630981 1192.233643 1186.016602 1179.998291 1174.288208 1170.309448 1165.134399 1161.472534 1158.498657 1156.574097 1154.41687 1152.571655 1150.797729 1149.436279 1148.685913 1148.147461 1147.672119 1146.496704 1145.245605 1144.822754 1144.446045 1144.137939 1143.645996 1143.302002 1142.810913 1142.255371 1141.720825 1141.001831 1140.210327 1139.345215 1138.356079 1137.198364 1135.415283 1133.978638 1132.604736 1129.04187 1122.68396 1121.737305 1121.665771 1121.470215 1120.763306 1122.041748 1122.729248 1118.669556 1113.243286 1110.466919 1109.127808 1107.921997 1106.542603 1105.247925 1103.915527 1102.713379 1101.653687 1100.670166 1099.786621 1099.042603 1098.121826 1097.320801 1097.768799 1097.782104 1097.008667 1097.893921 1096.341309 1093.936523 1092.68811 1091.859497 1091.560913 1091.328979 1091.109741 1090.960571 1090.963379 1090.987061 1091.136108 1091.556641 1092.118042 1092.986084 1094.156372 1095.682861 1098.009155 1098.346436 1098.857056 1099.363281 1098.550537 1097.0271 1097.257202 1101.450928 1107.25354 1113.431152 1123.662842 1131.335205 1137.026123 1142.744385 1149.784912 1142.770508 1129.591064 1120.067139 1115.475952 1113.640869 1111.276489 1107.87854 1102.893677 1099.323486 1096.908691 1095.682983 1095.675171 1095.833008 1095.233643 1094.046021 1093.01062 1092.211548 1091.617432 1091.329956 1091.160034 1091.064697 1090.974731 1090.364014 1088.730225 1086.915894 1084.619385 1083.750732 1084.040649 1083.424072 1082.721313 +1108.952026 1106.406982 1104.101685 1102.981567 1104.067627 1105.626709 1107.39563 1108.928101 1110.033081 1110.729858 1111.473999 1112.065552 1112.564819 1113.042236 1113.700684 1114.334351 1114.898804 1115.348267 1115.823242 1116.339722 1116.861572 1117.508911 1118.018188 1118.393677 1118.933716 1119.575806 1120.228149 1121.012939 1121.782104 1122.721191 1124.061401 1125.535889 1127.070435 1128.493652 1129.605103 1130.384155 1130.892822 1131.324951 1131.967773 1132.431152 1133.208008 1134.441895 1136.425293 1137.833008 1139.33728 1140.853516 1141.992065 1142.981567 1144.083374 1145.699585 1147.250366 1148.768677 1149.95752 1151.77063 1153.887085 1156.065918 1158.020508 1159.834229 1161.488647 1163.50415 1165.94043 1168.707275 1171.490967 1173.868774 1177.070923 1180.411743 1187.755005 1201.970825 1212.765747 1224.796265 1236.020142 1244.654297 1247.330444 1247.036499 1241.296997 1233.799683 1223.501587 1212.760376 1213.004761 1221.384766 1231.151611 1237.960205 1242.777222 1243.780273 1246.727295 1260.811523 1271.511475 1279.023315 1278.992065 1275.941406 1272.337402 1265.494995 1255.735352 1245.639771 1234.521362 1226.649292 1217.941895 1216.454712 1221.53125 1213.848877 1204.939575 1208.723022 1209.229858 1206.364746 1202.345825 1198.399536 1196.413452 1194.44812 1193.19519 1192.538452 1192.382202 1192.516235 1191.960449 1191.001831 1189.854736 1188.857666 1188.033203 1187.314941 1186.893188 1186.875977 1187.438232 1188.217896 1188.932495 1189.914551 1190.833496 1191.788452 1192.770996 1193.8396 1194.747437 1195.003052 1195.059692 1194.467285 1193.935303 1193.807983 1193.862183 1194.098022 1194.371338 1194.55127 1194.462769 1194.030273 1194.020996 1194.254395 1195.675293 1197.988403 1200.696777 1203.940796 1207.824829 1214.291382 1220.226196 1223.770142 1223.582642 1222.755127 1221.525513 1219.548706 1215.129761 1211.251587 1208.581909 1206.872559 1205.918335 1205.231934 1204.086304 1202.416748 1199.850952 1197.660645 1195.551392 1194.496582 1193.003418 1191.942993 1190.629639 1188.956543 1186.694946 1184.251953 1182.855103 1182.353516 1181.54541 1180.275513 1178.477783 1177.085083 1176.184082 1175.322144 1174.411621 1174.465088 1174.571533 1174.528931 1174.549683 1174.612183 1174.518311 1174.525513 1174.558716 1174.484497 1174.397583 1174.4104 1174.297363 1174.200562 1173.959961 1173.763794 1173.570801 1173.647583 1173.714233 1173.703125 1173.784668 1173.846313 1173.959351 1174.065918 1174.184692 1174.362427 1174.562622 1174.752197 1174.92041 1174.866333 1174.71106 1174.439819 1174.22998 1173.950928 1173.667847 1173.397705 1173.10083 1172.706177 1172.417358 1172.032593 1171.52771 1171.145264 1170.914917 1170.795532 1170.987427 1171.135864 1171.403442 1171.652466 1171.72876 1171.762695 1171.731201 1171.49292 1171.068115 1170.608521 1170.005493 1169.31543 1168.708862 1168.12207 1167.635376 1167.307007 1167.038818 1166.83728 1166.61438 1166.292725 1165.978882 1165.582031 1164.999512 1164.340332 1163.70459 1163.072998 1162.484009 1161.880249 1161.162842 1160.509888 1159.77478 1159.442139 1158.549072 1156.950195 1157.090698 1158.633545 1160.214722 1161.343262 1162.782227 1164.89917 1167.509277 1169.990601 1171.762085 1173.949951 1176.678467 1178.705566 1178.973022 1179.651367 1181.133911 1184.485718 1191.946167 1202.350098 1212.608887 1220.890503 1225.633423 1231.992188 1234.917847 1233.481567 1237.790527 1246.57312 1251.677246 1255.974976 1258.654419 1260.096191 1262.256226 1264.500732 1266.803589 1269.554688 1272.245605 1276.713257 1281.021606 1289.122192 1301.546753 1309.093506 1309.453491 1308.031494 1304.240479 1295.918213 1283.015381 1269.930786 1261.551758 1252.34436 1252.826172 1262.228394 1273.092407 1282.439941 1285.706055 1287.269287 1288.44104 1288.815063 1287.809937 1284.895752 1279.008179 1269.773804 1257.128174 1245.927734 1238.920776 1232.343994 1219.446899 1210.586548 1202.158081 1193.299194 1184.90271 1179.725586 1179.368408 1176.723877 1171.686035 1166.063599 1161.280518 1158.540161 1156.807007 1155.596436 1153.657593 1151.689819 1150.450928 1149.640015 1148.934448 1147.980469 1147.268677 1146.807861 1145.380981 1142.468628 1139.469727 1136.902588 1136.781738 1136.895752 1136.610352 1136.087891 1135.356079 1134.108276 1132.880127 1131.935303 1130.791504 1129.50647 1128.233643 1126.763062 1125.119019 1124.125244 1123.704346 1123.577759 1123.413574 1123.328247 1122.962891 1122.169067 1119.549561 1117.208618 1115.988159 1115.573242 1115.766357 1115.9375 1116.120605 1116.651489 1117.239258 1117.957764 1118.83667 1119.543701 1120.313477 1121.034668 1121.753174 1122.434326 1123.184082 1123.546509 1123.66626 1123.6875 1123.641479 1124.416626 1127.387939 1132.122559 1135.137939 1135.198975 1133.769775 1133.131104 1133.656738 1134.154297 1136.256104 1138.168579 1139.116821 1139.111938 1138.784302 1137.966431 1138.548462 1140.349731 1141.900391 1143.296997 1144.786255 1146.833008 1146.779541 1146.69458 1146.690796 1147.313477 1147.978516 1151.544434 1153.0448 1153.893799 1154.187988 1154.217041 1154.278931 1154.492065 1154.393311 1154.098633 1153.624634 1153.168701 1152.571655 1151.81543 1150.286011 1148.397461 1147.030762 1146.522095 1144.482666 1144.035767 1144.385376 1143.220215 1142.123047 1139.918213 1137.665039 1135.675049 1134.237061 1133.113159 1132.724976 1132.569458 1132.290649 1131.893433 1131.864502 1132.272095 1132.638672 1132.904419 1134.273804 1134.979126 1134.191162 1139.856445 1142.693481 1145.292236 1149.924194 1154.463379 1158.381226 1161.2052 1163.216431 1164.654663 1166.052246 1166.568726 1166.324219 1166.563965 1169.487427 1173.652832 1175.897339 1175.976562 1179.844727 1181.211426 1184.19873 1190.895752 1197.608643 1208.282349 1215.94458 1232.86853 1237.000854 1236.256104 1233.580566 1229.509888 1225.059937 1220.638672 1216.511353 1212.942383 1208.988159 1204.494629 1200.172241 1195.872559 1189.254761 1182.804932 1177.366943 1172.765259 1168.067627 1163.523926 1160.138794 1157.58252 1155.572754 1153.696411 1151.999146 1150.653076 1149.702271 1148.822998 1147.73584 1146.38623 1145.666138 1145.733276 1145.77124 1145.540283 1145.138428 1144.535156 1143.782593 1143.145508 1142.436523 1141.65564 1140.772217 1139.681763 1138.6073 1137.57312 1136.207764 1135.209473 1134.617065 1131.828369 1124.614746 1125.297241 1125.900757 1124.597778 1121.922852 1120.552734 1120.545532 1117.002686 1112.755493 1110.133179 1109.032837 1107.709839 1106.368774 1105.02771 1103.819824 1102.586914 1101.276855 1100.06958 1099.111572 1098.47168 1097.802368 1097.297729 1097.020508 1096.557495 1096.078857 1097.213257 1097.541016 1093.483032 1091.800537 1091.19519 1090.913696 1090.610474 1090.167725 1089.884521 1089.732178 1089.628662 1089.79541 1090.211182 1090.958862 1091.955811 1093.269897 1095.271729 1098.120483 1097.340454 1098.230469 1098.7323 1098.585205 1096.981323 1097.504272 1102.260742 1108.747314 1116.516113 1125.878906 1135.898926 1138.128784 1142.678833 1145.013916 1132.491455 1121.046387 1111.980103 1111.37793 1111.256836 1107.90918 1103.995239 1100.540405 1097.297485 1095.622803 1094.359741 1093.604492 1093.328735 1092.737183 1091.719849 1091.043457 1090.53833 1090.193359 1089.966553 1089.748779 1089.243286 1088.30896 1087.758057 1086.338745 1084.872559 1083.379517 1082.031738 1081.385742 1080.412598 1079.256714 +1111.081055 1107.870483 1105.275757 1103.629272 1104.113159 1105.861572 1107.439575 1108.655518 1109.691406 1110.610107 1111.424072 1112.181519 1112.716431 1113.316772 1114.006714 1114.884277 1115.553589 1116.156372 1116.568115 1116.960693 1117.444702 1117.859619 1118.19812 1118.651367 1119.072632 1119.608032 1120.159058 1120.766968 1121.550903 1122.404907 1123.996948 1125.179199 1126.262329 1127.505005 1128.705566 1129.653198 1130.589966 1131.414062 1132.161499 1132.906616 1133.603882 1134.547974 1137.345459 1140.043701 1141.849976 1142.738281 1143.251099 1143.649536 1144.26416 1145.344482 1146.778076 1148.267944 1149.816284 1151.424316 1153.358032 1155.267212 1157.194092 1158.630249 1160.287109 1161.891968 1163.501831 1165.930298 1168.688354 1171.151001 1174.584351 1179.426147 1190.800903 1208.186401 1208.890015 1212.062012 1222.250977 1224.477905 1232.86438 1239.069336 1236.618408 1230.111694 1217.167603 1208.870483 1208.845947 1218.411255 1223.975708 1228.768555 1230.183594 1233.364258 1242.296753 1255.719116 1264.202026 1267.827026 1266.934448 1266.576538 1266.859009 1262.192993 1255.035156 1245.549561 1236.39209 1227.419678 1217.660034 1207.678101 1217.576538 1213.263306 1204.090942 1197.387329 1199.804565 1196.971558 1194.590698 1194.221313 1194.138672 1193.241211 1192.069946 1191.398682 1191.004639 1190.724854 1190.086914 1189.115356 1188.11377 1187.153687 1186.106567 1184.922607 1183.050415 1184.309082 1185.46582 1186.544189 1187.652588 1188.727661 1189.744385 1190.702759 1191.531982 1192.196167 1192.656616 1192.944824 1193.13855 1193.195557 1193.361938 1193.475342 1193.754639 1193.989014 1194.039062 1194.02417 1193.956299 1193.760498 1193.949951 1194.273926 1195.082397 1197.672485 1201.299316 1205.391113 1210.15564 1216.937378 1221.842651 1224.015015 1223.834106 1222.967285 1221.605713 1219.395752 1216.585571 1213.38269 1210.820068 1209.26416 1209.045776 1209.057861 1208.623047 1207.895752 1207.398804 1206.744507 1201.84314 1197.684204 1195.669434 1192.971558 1190.849976 1188.861206 1186.853516 1183.978882 1183.428589 1183.393677 1183.363037 1181.658447 1178.097046 1176.455566 1175.244873 1174.711548 1174.852173 1174.906982 1175.012939 1175.130371 1175.053345 1175.056519 1175.071777 1175.061157 1174.913696 1174.829102 1174.816895 1174.741089 1174.740845 1174.555542 1174.376221 1174.05542 1173.983032 1174.087891 1174.255615 1174.382324 1174.314819 1174.426636 1174.418213 1174.50354 1174.659058 1174.826416 1175.100342 1175.306641 1175.368286 1175.345337 1175.126709 1174.910034 1174.664062 1174.276123 1174.062134 1173.699951 1173.404297 1173.040405 1172.577759 1172.122681 1171.620239 1171.250854 1170.843384 1170.923828 1171.120483 1171.400757 1171.646729 1171.839233 1171.96814 1172.053955 1171.88147 1171.722046 1171.411621 1170.871826 1170.208252 1169.625977 1169.045654 1168.362671 1168.056885 1167.641724 1167.443359 1167.235596 1167.109375 1166.876709 1166.587769 1166.112671 1165.613403 1164.971313 1164.177002 1163.57019 1162.903076 1162.140137 1161.522705 1161.014038 1160.333008 1159.758423 1159.057129 1158.005859 1157.054199 1158.807129 1160.307251 1161.479736 1163.074707 1165.109985 1167.214478 1169.164673 1170.59375 1173.122437 1177.929199 1182.792969 1183.385254 1182.344604 1181.868774 1182.654297 1191.606445 1201.630493 1209.719238 1217.292358 1220.065674 1225.096802 1228.04834 1227.397705 1230.693604 1243.0 1251.717651 1258.009888 1261.840576 1263.967651 1264.796021 1266.100342 1268.967163 1272.911865 1276.825195 1281.836426 1289.634033 1299.841309 1308.629517 1310.779175 1309.575928 1306.227051 1300.504395 1292.48291 1276.643188 1266.597778 1259.228638 1258.865356 1265.193237 1273.648193 1281.801514 1286.790527 1289.768921 1291.646118 1292.898315 1293.160034 1290.554321 1285.545166 1278.574707 1267.843628 1256.942993 1243.671265 1238.38916 1234.174683 1222.557983 1212.380737 1205.581299 1195.855225 1185.37915 1176.051392 1170.459961 1171.315552 1171.20752 1164.527954 1159.110107 1158.082153 1157.781616 1157.723999 1155.746338 1153.450439 1151.869873 1150.784668 1149.617432 1147.48584 1146.680542 1145.840942 1144.67627 1143.057983 1140.995117 1139.292847 1138.377808 1137.721436 1137.204102 1136.22583 1134.746948 1133.708374 1132.984985 1132.220703 1131.166626 1129.94873 1128.672729 1127.27356 1125.981079 1125.014771 1124.206909 1123.827515 1123.529175 1123.301147 1122.970337 1122.335693 1119.182129 1116.595093 1116.013794 1116.124756 1116.43396 1116.753662 1117.069824 1117.522583 1118.029175 1118.757324 1119.456909 1120.199097 1120.890869 1121.632202 1122.410767 1123.373413 1124.193115 1124.771851 1125.217407 1125.60144 1126.127441 1127.379639 1130.401733 1134.641479 1134.668213 1134.679199 1135.392334 1135.28186 1134.436279 1134.420166 1134.935059 1139.02478 1141.037598 1142.334473 1142.591797 1142.223511 1142.485596 1143.218262 1144.389282 1146.296265 1147.244019 1148.746582 1149.896362 1150.072998 1150.248535 1150.787109 1151.853271 1153.509033 1154.812988 1155.565186 1155.789551 1155.858887 1155.891357 1155.952515 1155.978027 1155.689087 1155.165039 1154.551025 1154.067871 1153.139526 1151.472046 1147.588867 1146.741211 1145.998169 1145.475708 1145.524536 1146.775024 1146.88147 1145.04895 1141.5271 1138.252563 1135.840698 1133.88855 1133.321411 1133.282715 1133.50354 1133.247925 1132.972656 1132.522705 1131.830322 1132.199707 1132.661987 1132.600342 1133.189575 1135.091187 1138.024658 1141.21814 1144.050781 1147.232422 1150.834961 1154.318726 1157.030151 1158.479492 1159.560425 1160.376953 1161.066406 1159.776245 1161.629272 1165.952271 1169.111328 1170.895508 1170.237549 1171.952393 1183.365234 1191.228516 1198.324829 1203.515015 1211.634399 1225.17627 1237.262573 1240.648315 1238.77478 1235.22168 1231.173218 1226.341431 1221.703979 1217.713989 1214.052002 1210.273193 1206.247559 1201.584717 1196.929932 1191.207642 1184.666504 1179.904419 1174.836426 1170.199463 1165.282837 1161.189697 1158.279541 1156.307251 1154.509766 1153.027466 1151.622192 1150.367188 1149.02063 1147.432861 1146.286255 1146.441528 1146.830566 1146.988159 1146.838257 1146.332153 1145.493286 1144.631592 1144.023071 1142.996338 1141.977661 1140.872559 1139.797729 1138.820801 1137.7052 1136.749512 1135.916382 1135.03894 1132.675293 1133.202759 1133.970337 1133.779663 1127.111816 1122.488159 1119.577271 1117.355957 1114.743286 1112.388916 1109.939941 1108.749756 1107.476562 1106.297119 1105.05481 1103.770386 1102.443726 1101.02832 1099.502441 1098.441895 1097.811035 1097.749023 1097.646729 1097.003784 1095.957031 1094.614868 1094.464355 1096.982178 1091.864258 1090.922241 1090.458984 1090.091064 1089.740479 1089.433228 1088.845093 1088.399902 1088.142578 1088.334839 1088.841919 1089.599365 1090.680298 1092.077271 1094.177856 1096.362427 1096.189209 1097.573242 1098.199341 1098.092407 1096.42688 1097.2771 1101.943604 1107.200684 1116.122925 1126.027466 1130.990601 1130.50769 1130.454834 1129.931519 1121.560791 1114.87854 1107.936523 1111.000732 1107.922607 1103.166504 1099.95752 1097.325928 1095.532471 1093.755615 1092.464355 1091.738037 1091.161865 1090.312012 1089.318726 1088.927612 1088.770508 1088.795288 1088.74231 1088.646851 1088.121094 1086.688843 1085.419922 1084.785034 1083.300415 1081.9552 1080.378296 1078.685547 1077.172485 1076.395142 +1113.434814 1108.915894 1106.05542 1104.238281 1104.494141 1105.936035 1107.395508 1108.705688 1109.879517 1110.718262 1111.563843 1112.275757 1112.949829 1113.693359 1114.466919 1115.367188 1116.147095 1116.858032 1117.391113 1117.635376 1118.01123 1118.383423 1118.693237 1119.036011 1119.278442 1119.633667 1120.094849 1120.605713 1121.291138 1122.199097 1123.306519 1124.497803 1125.549194 1126.846436 1128.13916 1129.343018 1130.640381 1131.936646 1132.936768 1134.141113 1135.775391 1137.144897 1139.738892 1144.255371 1145.953125 1146.046265 1145.481812 1144.783203 1144.994629 1145.257446 1146.339355 1147.868896 1149.341309 1151.021729 1152.470093 1154.031372 1155.623047 1157.153687 1158.511353 1159.575806 1161.049561 1163.023193 1165.872437 1168.91687 1172.867554 1177.714233 1185.141357 1194.952637 1192.817993 1195.661621 1205.465088 1210.959106 1221.290771 1229.327393 1230.835815 1226.740845 1219.39209 1208.793823 1204.973633 1211.620117 1216.064209 1219.109375 1218.057129 1223.145508 1237.189453 1249.6073 1257.192627 1260.018921 1259.686768 1256.974243 1260.273071 1259.844238 1255.489502 1245.544922 1236.962524 1227.77478 1218.019775 1208.042725 1206.349731 1208.077759 1200.452026 1194.533936 1194.063354 1193.549805 1192.720459 1192.176636 1192.002441 1191.531006 1190.778564 1190.160034 1189.598022 1189.17627 1188.437378 1187.483887 1186.354004 1185.537109 1184.73645 1183.647339 1182.96106 1183.179199 1184.083252 1185.165771 1186.621704 1187.718872 1188.67749 1189.549438 1190.189087 1190.766846 1191.126831 1191.594971 1192.002686 1192.463867 1192.926636 1193.437378 1193.834473 1194.07959 1194.105591 1193.8927 1193.691895 1193.571411 1193.769165 1194.275757 1194.96875 1196.977905 1201.683716 1206.585449 1212.710571 1219.646118 1223.055298 1224.036255 1223.817505 1223.025146 1221.394165 1219.274902 1216.824097 1213.937134 1211.561646 1210.283447 1209.70459 1209.576782 1209.351562 1209.003052 1208.688843 1207.812012 1203.61792 1198.917969 1195.812866 1193.716431 1191.098755 1188.878906 1187.062622 1185.596558 1184.702271 1184.146851 1184.079102 1183.174438 1176.549438 1175.252808 1175.161865 1175.202271 1175.366821 1175.42981 1175.591797 1175.61499 1175.701904 1175.639038 1175.624878 1175.499756 1175.388916 1175.321777 1175.155518 1175.143677 1175.103149 1174.966187 1174.780518 1174.608154 1174.571655 1174.709473 1174.972168 1175.008057 1175.10498 1175.032959 1175.012085 1175.107666 1175.190674 1175.349976 1175.627686 1175.843018 1176.115112 1176.055298 1175.854858 1175.587524 1175.273804 1175.017822 1174.664062 1174.385376 1173.966309 1173.484131 1173.048462 1172.531372 1171.830933 1171.254517 1170.958862 1171.109497 1171.429932 1171.621094 1171.938477 1172.153442 1172.206055 1172.295166 1172.073853 1171.862915 1171.521118 1170.940308 1170.269897 1169.748047 1169.324219 1168.813965 1168.365601 1168.084229 1167.879883 1167.670532 1167.626343 1167.281982 1167.065186 1166.675171 1166.150391 1165.452026 1164.648682 1163.901978 1163.235718 1162.546631 1162.044434 1161.433228 1160.783447 1160.203003 1159.491943 1158.75647 1157.667969 1158.561646 1160.166138 1161.528931 1163.233887 1165.083496 1166.807251 1168.208496 1169.530396 1170.964722 1178.106201 1183.999634 1184.498657 1184.670654 1183.579224 1182.788696 1184.01062 1197.676025 1204.535156 1209.6073 1212.763306 1215.148804 1216.647339 1218.945435 1230.092407 1239.866089 1248.486694 1257.364258 1268.251099 1268.143799 1266.845093 1267.988647 1271.567749 1275.859985 1280.545776 1289.40564 1302.574219 1313.056274 1313.75708 1311.772705 1309.087036 1303.606079 1294.722656 1285.63623 1273.726562 1265.702393 1265.952759 1267.943848 1274.25061 1282.459961 1288.691162 1292.03894 1294.427246 1295.831787 1296.204834 1295.648926 1292.425537 1285.550537 1276.974976 1265.842163 1251.750244 1239.892212 1234.919556 1228.759155 1217.319702 1212.201172 1208.699951 1198.885132 1189.692505 1182.804932 1174.625 1171.756226 1169.127441 1163.616943 1159.560913 1159.602539 1160.047852 1159.429443 1157.277832 1154.847046 1153.06604 1151.639893 1150.413208 1149.098022 1148.244751 1147.234375 1145.63501 1144.158203 1142.414795 1140.673462 1139.524902 1138.587158 1137.647339 1136.709106 1135.352783 1134.536621 1133.681152 1132.695679 1131.519409 1130.233154 1128.837036 1127.539307 1126.333862 1125.282837 1124.387085 1123.673584 1123.251709 1122.99292 1122.353027 1120.986816 1117.49585 1116.598877 1116.622192 1116.734619 1116.968628 1117.396484 1117.863525 1118.317261 1118.832397 1119.424683 1120.245483 1120.873169 1121.400146 1122.08252 1123.125244 1124.051514 1124.884888 1125.741333 1126.587402 1127.344238 1128.242065 1129.47937 1131.118286 1132.787598 1134.054321 1135.226807 1136.83606 1136.884033 1134.366211 1136.137573 1137.983276 1141.553711 1143.473389 1145.27063 1146.5 1145.904175 1145.179565 1145.2677 1146.870117 1149.638062 1150.820679 1152.137573 1153.195923 1154.481445 1154.96814 1155.166626 1155.550415 1155.897705 1156.314819 1157.293213 1157.547607 1157.579224 1157.485474 1157.560669 1157.547852 1157.244019 1156.53479 1155.88208 1155.643677 1154.90271 1153.468506 1151.2771 1148.565918 1146.606323 1146.624268 1145.631348 1146.416016 1146.726685 1146.292114 1141.356323 1137.506348 1134.5 1133.931519 1133.99353 1134.692017 1134.894409 1134.732788 1134.2052 1133.254639 1132.611328 1131.804565 1132.160278 1132.644409 1133.003052 1134.894043 1137.429321 1139.785522 1142.53479 1145.129883 1147.762207 1149.884155 1151.50415 1154.393799 1156.461792 1156.939087 1157.035767 1157.546753 1160.494629 1161.921021 1161.358154 1159.680664 1172.21814 1180.894653 1189.466064 1198.231689 1207.921753 1218.801025 1223.755981 1229.507568 1240.6698 1244.484009 1241.215332 1236.841797 1232.359375 1227.600464 1222.899902 1218.657471 1215.034912 1211.288574 1207.588623 1202.01416 1197.123657 1191.922852 1186.826782 1182.175293 1175.893677 1171.312134 1166.32019 1161.995605 1158.878418 1156.798584 1155.245239 1153.931396 1152.514771 1150.890381 1149.079834 1147.051514 1146.4552 1147.569336 1147.926147 1147.884766 1147.614014 1147.101074 1146.563477 1145.726807 1144.711182 1143.229004 1141.859497 1140.632324 1139.47522 1138.533203 1137.555054 1136.785278 1135.920898 1135.279907 1134.821411 1135.302612 1134.895996 1133.117432 1127.032227 1122.171875 1119.115234 1115.914795 1113.045532 1111.11499 1109.346191 1108.404175 1107.292725 1106.261597 1105.140869 1103.976807 1102.63562 1101.148071 1099.140015 1097.805664 1097.829224 1097.853638 1097.884033 1097.866455 1097.083862 1093.389404 1092.183228 1092.971069 1094.088989 1090.19043 1089.910767 1089.280884 1088.807129 1088.392578 1087.914551 1087.207642 1086.683594 1086.769287 1087.509766 1088.333618 1089.437988 1090.658447 1091.932861 1093.51355 1094.790039 1096.340942 1098.012817 1096.140137 1095.682983 1097.450195 1101.891846 1105.72998 1110.884033 1119.703369 1119.949219 1117.646118 1117.030029 1116.140625 1113.893066 1109.852783 1103.855835 1103.073975 1101.348022 1097.154053 1095.679688 1093.638428 1092.004883 1090.989746 1090.443726 1090.050049 1089.515137 1088.348877 1086.595337 1086.912354 1087.415039 1087.552979 1087.547485 1087.652344 1087.513306 1086.595093 1085.061035 1083.37915 1082.067871 1080.786743 1078.968506 1076.36853 1073.688843 1073.776733 +1114.862183 1109.174194 1107.233521 1105.083008 1104.577393 1105.971924 1107.302612 1108.70813 1109.899292 1110.746826 1111.614014 1112.432251 1113.214111 1114.095947 1114.985596 1115.952271 1116.79541 1117.576172 1118.092041 1118.537842 1118.78418 1119.044556 1119.315552 1119.431763 1119.65271 1119.831055 1120.134033 1120.560425 1120.979614 1121.55249 1122.214478 1123.704712 1125.10022 1126.401001 1127.767944 1129.251831 1130.939453 1132.63147 1133.816406 1137.918823 1145.35791 1142.813599 1141.835449 1146.216187 1146.791992 1146.693115 1146.708618 1146.797485 1145.674561 1145.735229 1146.429077 1147.805176 1149.218506 1150.323975 1151.428223 1152.44458 1153.592041 1155.195801 1156.596313 1157.372559 1158.273071 1160.053101 1162.764282 1166.573242 1170.675781 1174.478516 1180.109863 1185.099854 1187.685181 1190.471436 1195.879395 1200.831665 1207.652954 1220.326294 1225.202515 1224.28125 1218.443604 1207.666382 1200.385498 1205.677124 1209.59375 1209.446411 1211.95752 1219.1521 1232.18457 1242.515625 1248.810059 1252.565552 1251.463257 1249.077148 1255.272339 1257.501709 1255.708008 1246.968018 1235.73291 1225.829102 1216.208374 1207.709595 1203.817017 1201.811768 1195.891235 1193.728638 1192.333252 1191.557251 1190.987793 1190.475586 1190.211304 1189.794189 1189.191895 1188.682007 1188.324829 1187.91394 1187.283447 1186.15271 1184.889282 1183.785767 1183.264893 1182.63623 1182.410889 1182.500732 1183.131592 1184.51709 1185.759277 1186.826416 1187.800293 1188.5979 1189.176392 1189.717041 1190.181519 1190.692017 1191.291016 1192.032715 1192.898926 1193.658325 1194.481323 1194.779419 1194.48291 1194.068359 1193.812256 1193.619873 1193.69043 1194.118774 1195.100098 1197.499023 1201.619629 1206.448486 1213.877686 1221.397827 1223.029419 1223.644897 1223.367432 1222.766724 1220.776489 1218.343262 1215.99939 1213.353271 1211.202881 1209.923218 1209.441772 1209.175049 1208.481079 1207.522705 1206.264038 1203.788574 1200.373901 1196.831909 1194.62146 1192.817993 1190.416748 1188.197021 1186.599976 1185.485474 1184.69751 1183.880127 1182.45813 1176.033691 1175.557983 1175.601074 1175.643555 1175.740234 1175.976807 1176.138184 1176.271362 1176.427002 1176.391602 1176.446045 1176.232544 1176.083862 1176.023071 1175.811646 1175.593384 1175.570557 1175.432251 1175.408081 1175.294678 1175.190552 1175.174072 1175.359985 1175.543701 1175.660278 1175.712769 1175.758179 1175.634521 1175.707397 1175.789917 1175.910645 1176.297485 1176.620361 1176.810181 1176.825317 1176.835449 1176.523804 1176.182861 1175.911865 1175.658325 1175.354736 1174.881226 1174.345337 1173.816284 1173.071777 1172.542725 1171.613037 1171.149536 1171.35437 1171.669189 1171.952637 1172.237793 1172.387817 1172.454712 1172.4646 1172.225342 1171.884521 1171.331543 1170.845215 1170.483765 1170.024292 1169.545044 1169.094727 1168.7771 1168.456909 1168.334351 1168.232056 1168.079712 1167.855103 1167.634033 1167.19519 1166.619751 1165.953857 1165.082275 1164.312744 1163.623779 1163.073853 1162.510986 1161.835083 1160.998901 1160.454712 1159.776733 1159.09314 1158.189697 1158.495605 1160.03479 1161.685791 1163.370239 1164.977905 1166.401855 1167.573486 1168.727905 1170.21106 1176.043701 1182.903564 1184.648926 1185.135498 1185.428833 1184.765015 1183.024414 1188.12915 1196.626831 1200.433716 1203.93457 1205.747925 1206.248047 1215.600952 1223.868164 1234.444336 1244.832153 1256.681885 1267.46875 1268.036255 1268.507202 1271.477661 1274.856201 1279.21814 1286.539673 1297.623657 1319.468872 1318.86853 1315.673462 1312.290405 1308.100342 1301.977661 1292.352417 1281.826294 1267.131104 1274.455322 1279.013794 1282.255005 1286.229614 1292.370972 1295.850586 1297.493408 1298.819458 1299.447876 1298.667969 1297.144653 1293.395996 1283.595947 1274.427002 1261.870728 1245.438354 1234.76001 1226.601807 1215.619385 1207.484375 1202.263794 1198.602539 1195.785645 1188.710449 1182.77417 1176.315552 1172.267212 1169.355469 1165.871948 1163.027954 1161.798828 1160.868652 1158.627441 1157.253052 1155.510376 1153.820312 1152.448975 1151.127075 1149.918945 1148.935913 1147.87915 1146.536621 1145.00293 1143.226807 1141.701538 1140.28894 1139.16687 1138.114258 1137.124634 1136.222656 1135.31665 1134.15979 1132.946411 1131.678589 1130.34021 1129.089355 1127.866211 1126.465454 1125.318115 1124.297974 1123.133667 1122.327515 1122.160156 1121.9729 1120.395874 1117.16272 1117.041382 1117.167847 1117.383179 1117.535645 1117.981201 1118.513672 1119.08313 1119.702515 1120.39502 1120.940063 1121.63562 1122.058472 1122.804688 1123.873169 1124.740601 1125.820435 1126.782349 1127.896729 1129.205322 1130.498657 1131.413818 1132.131958 1132.833618 1133.539673 1135.171875 1137.515991 1139.00061 1139.358765 1140.734253 1144.386841 1145.330688 1145.066162 1147.421265 1149.598999 1149.428711 1147.463745 1147.067993 1150.281616 1152.988037 1154.373169 1156.030396 1157.012085 1158.950562 1159.133301 1158.915161 1158.614502 1158.14917 1158.540771 1159.445801 1159.815063 1160.03772 1159.811646 1159.508423 1159.678833 1158.699829 1157.718506 1157.066528 1157.191895 1156.660522 1155.952515 1154.330566 1151.319214 1148.934204 1147.273682 1145.849487 1145.999146 1145.519165 1144.001709 1141.21582 1136.070312 1134.607788 1135.291992 1135.942749 1136.659424 1136.764648 1136.41394 1135.504761 1134.232788 1133.177856 1132.607544 1131.940552 1131.967529 1132.89856 1134.352295 1136.286743 1138.056763 1140.401611 1142.916626 1145.228271 1145.835571 1146.609009 1150.859863 1152.993408 1153.904297 1154.606567 1156.212158 1158.171753 1158.268799 1158.108276 1163.286865 1175.958862 1183.401245 1192.636597 1203.450928 1215.773804 1225.710938 1232.983398 1239.150757 1246.004395 1245.948486 1243.294434 1238.961914 1233.590088 1228.869995 1224.096558 1219.505615 1215.728271 1211.797241 1207.265503 1200.638916 1195.322388 1189.337036 1185.880859 1182.149658 1174.249023 1170.462158 1166.569458 1162.076416 1158.870972 1157.312622 1156.105347 1154.70166 1153.290894 1151.825439 1150.224731 1148.488403 1148.363159 1148.766968 1148.717407 1148.497681 1148.082153 1147.672729 1147.24707 1146.414551 1145.018066 1142.970581 1140.970459 1139.641968 1138.501709 1137.637695 1137.076782 1136.12915 1134.746094 1133.815186 1134.744263 1134.840698 1132.052246 1128.348755 1124.388062 1120.796021 1118.0448 1114.779907 1111.761719 1110.097168 1109.129639 1108.043579 1107.280518 1106.339355 1105.244385 1104.06604 1102.731567 1101.366821 1099.659424 1098.121582 1098.301758 1098.515869 1098.384521 1098.258179 1096.442383 1093.505737 1094.428589 1095.778442 1098.177246 1092.714233 1089.647339 1088.756104 1087.95166 1087.294678 1086.726318 1086.080688 1085.526611 1085.289307 1086.247437 1086.867432 1087.981567 1088.708984 1089.70459 1091.116089 1092.350952 1093.604614 1094.770752 1094.126221 1094.407593 1097.690552 1100.539429 1101.429443 1105.527344 1108.514282 1108.203247 1107.79187 1108.431519 1108.033813 1105.850464 1102.307617 1097.189941 1096.319214 1095.866455 1093.533691 1090.417114 1086.494629 1087.996216 1088.446777 1088.37439 1088.485718 1088.148071 1087.268555 1085.640137 1085.410278 1085.737671 1085.885986 1086.022827 1086.293213 1086.548096 1085.950684 1084.42627 1082.612305 1081.525024 1080.547729 1079.126709 1076.283447 1074.076172 1072.485962 +1117.1427 1110.646851 1109.47644 1107.560303 1104.709106 1105.831909 1107.375244 1108.723633 1109.92749 1110.887939 1111.800415 1112.585693 1113.536621 1114.468018 1115.523438 1116.661133 1117.605713 1118.376831 1118.933716 1119.30896 1119.532227 1119.809204 1120.042847 1120.117188 1119.98999 1120.041626 1120.186646 1120.524414 1120.943237 1121.575562 1122.320435 1123.588379 1124.783447 1126.042603 1127.5 1129.127563 1131.061523 1133.311401 1137.341064 1146.491211 1146.387451 1142.983154 1141.925049 1143.575928 1144.900757 1145.960693 1146.470093 1146.679077 1146.44873 1146.91394 1147.493042 1148.339722 1149.014038 1149.631714 1150.1875 1150.630249 1151.286011 1152.552979 1154.2323 1155.546021 1156.992188 1158.143555 1158.995117 1163.529053 1167.820435 1170.365723 1174.732178 1180.132202 1182.183838 1184.332764 1188.674927 1191.732544 1195.734497 1211.349976 1220.22998 1219.793335 1222.647705 1212.047974 1202.80188 1196.491455 1201.636719 1203.708984 1208.839722 1215.768188 1224.401367 1232.892822 1239.010254 1242.454468 1240.679443 1237.800415 1246.299072 1250.546265 1249.21228 1247.22937 1238.044189 1226.634277 1216.232422 1207.77478 1202.910645 1199.444824 1196.30957 1193.753784 1191.19873 1189.809937 1189.172852 1188.76355 1188.564819 1188.101929 1187.538452 1187.08374 1187.06189 1186.864136 1186.388184 1185.404175 1184.103027 1183.09082 1182.513306 1182.09436 1182.189331 1182.609497 1183.540283 1184.580078 1185.45752 1186.216064 1187.067871 1187.862671 1188.525757 1189.138428 1189.727661 1190.446289 1191.224121 1192.188965 1193.221924 1194.436401 1195.301147 1195.46228 1195.347534 1194.933228 1194.023926 1193.684692 1193.469482 1193.704468 1194.790527 1197.415405 1201.013306 1205.727905 1212.972168 1220.280396 1222.216797 1222.828857 1223.045898 1222.240967 1220.042847 1217.033691 1214.075439 1211.278809 1209.126831 1208.20166 1207.680542 1206.725098 1205.42395 1204.090088 1202.452637 1200.088013 1196.946045 1194.401123 1192.61499 1190.977173 1188.88623 1186.924316 1185.223022 1184.538452 1183.80957 1179.114746 1175.806519 1176.052734 1176.176025 1176.302856 1176.356445 1176.565552 1176.712524 1176.951904 1177.118164 1177.226685 1177.287476 1177.180542 1177.051025 1176.819702 1176.545776 1176.353638 1176.123047 1175.982544 1175.8125 1175.859741 1175.819214 1175.809082 1175.797119 1175.952759 1176.142334 1176.250122 1176.366577 1176.338501 1176.379639 1176.281494 1176.394043 1176.596802 1176.91748 1177.331177 1177.532471 1177.655884 1177.595703 1177.334839 1177.121704 1176.899048 1176.596558 1176.208496 1175.691162 1175.098022 1174.430786 1173.890137 1173.292114 1172.842285 1172.28125 1172.060669 1172.179443 1172.286011 1172.519653 1172.638428 1172.675781 1172.581787 1172.339111 1172.089233 1171.565063 1171.204834 1170.910889 1170.40686 1169.837402 1169.503174 1169.125122 1168.89978 1168.887695 1168.848511 1168.700684 1168.417236 1168.136719 1167.713257 1167.209961 1166.342163 1165.601196 1164.802734 1164.14917 1163.571411 1162.837036 1162.126709 1161.285767 1160.655518 1159.971191 1159.271973 1158.531738 1158.61853 1160.116455 1161.602051 1163.366211 1164.833618 1166.118896 1167.226929 1168.282837 1169.53418 1171.556274 1178.41272 1183.383911 1184.720581 1185.900391 1186.936768 1187.1073 1189.034668 1192.595093 1194.932495 1197.890259 1208.755005 1212.564697 1215.97229 1223.08606 1232.946289 1241.921631 1252.194946 1258.868286 1260.835571 1267.883301 1271.547119 1277.573608 1283.125244 1291.152588 1302.839355 1320.391113 1319.574707 1315.767578 1311.876953 1306.788208 1299.988647 1291.151367 1277.26355 1283.073364 1291.489624 1294.40271 1297.131226 1300.173706 1303.026123 1303.440308 1302.896606 1302.846924 1302.924927 1301.430298 1297.433716 1291.360229 1280.696777 1271.9646 1257.97644 1251.196777 1239.964722 1229.80188 1219.82373 1208.333374 1198.554565 1193.054565 1184.560913 1181.554932 1180.141602 1173.135986 1170.32605 1169.565796 1167.963989 1165.179443 1162.897339 1160.911255 1158.723145 1157.254639 1155.7854 1154.343384 1152.899902 1151.640259 1150.307617 1149.148438 1147.98645 1146.716309 1145.186768 1143.751587 1142.233765 1140.917603 1139.619263 1138.329956 1137.156372 1136.246948 1135.531372 1134.369385 1133.086304 1131.949829 1130.671509 1129.484619 1127.856934 1126.497314 1125.277954 1124.34436 1122.708252 1122.325928 1122.665161 1122.549561 1121.393677 1117.769897 1117.376099 1117.619263 1117.91333 1118.139648 1118.597412 1119.06604 1119.831543 1120.493774 1121.190552 1121.789185 1122.506104 1123.18042 1123.925903 1124.86438 1125.842407 1126.790283 1127.848633 1129.194946 1130.77832 1132.636475 1133.885498 1134.588501 1134.828613 1134.223755 1134.140137 1137.925781 1141.53125 1143.023193 1144.420044 1147.31543 1148.230469 1146.95166 1150.464722 1153.764893 1155.464478 1155.173096 1154.864136 1155.988037 1157.250854 1158.044067 1159.830566 1161.08606 1162.754517 1163.598633 1163.970825 1163.679565 1162.626709 1162.385864 1163.512329 1164.281982 1164.782104 1164.71936 1164.598145 1164.102295 1162.462036 1159.216675 1158.446533 1159.462524 1158.944946 1158.847778 1157.401611 1155.037231 1151.525024 1146.798462 1147.270752 1148.316406 1146.075073 1144.794678 1143.191162 1141.086182 1139.321777 1138.757935 1138.714111 1138.720581 1138.624512 1138.063965 1136.987549 1135.51062 1134.134155 1133.209229 1132.652222 1132.041504 1132.640991 1133.41394 1134.714233 1136.417236 1138.637329 1141.615234 1144.007812 1146.173218 1148.192627 1149.508179 1150.693848 1151.529907 1152.384399 1154.023804 1156.032959 1158.24292 1161.189087 1167.425049 1176.939331 1182.17627 1189.068604 1196.752563 1209.007935 1215.93457 1219.949829 1235.435791 1244.079102 1246.575684 1245.511475 1240.733887 1234.750244 1229.899292 1225.205933 1220.588623 1216.664307 1212.517944 1208.397827 1200.13208 1195.679199 1184.010986 1182.241089 1181.766235 1171.480347 1169.15979 1166.519653 1162.141968 1158.623291 1157.66687 1156.614014 1155.468872 1154.06604 1152.841675 1151.650757 1150.780029 1150.118408 1149.753662 1149.407959 1148.84021 1148.246338 1147.308594 1147.339966 1146.904419 1144.212402 1141.438965 1139.358398 1137.893433 1137.062134 1136.418335 1135.688965 1134.570435 1132.484497 1131.031128 1131.342407 1130.984863 1127.872437 1123.522583 1121.068726 1119.025513 1116.274536 1113.243286 1110.095581 1109.317383 1108.650757 1107.917358 1107.136475 1106.294678 1105.221802 1104.041992 1102.800659 1101.595337 1100.239624 1099.105225 1098.848022 1098.654419 1098.429199 1097.425415 1096.017822 1098.465454 1097.453003 1096.406006 1097.638062 1096.79248 1092.964478 1090.670532 1089.193848 1088.1521 1087.524292 1087.151978 1086.784668 1086.229126 1085.300781 1084.963623 1086.410889 1086.871338 1087.40271 1088.930786 1089.816284 1090.09375 1090.589722 1089.960449 1090.941772 1095.921875 1099.287354 1097.035645 1098.587891 1099.256348 1098.366089 1098.205688 1097.16748 1095.917969 1095.637695 1095.465698 1093.794067 1091.995361 1090.869019 1089.758057 1087.933105 1084.931641 1085.675049 1086.540161 1086.807739 1086.834229 1086.759521 1086.297607 1085.077881 1084.060181 1083.9021 1084.235352 1084.511719 1084.880737 1084.940552 1084.545654 1083.283936 1081.952637 1081.411133 1081.116577 1081.317749 1079.70874 1076.068726 1073.479004 +1120.736328 1115.39856 1112.712402 1110.400635 1106.330444 1105.60022 1107.313599 1108.905273 1110.01355 1111.032349 1112.022827 1112.969116 1113.968018 1115.024658 1116.27417 1117.39502 1118.399658 1119.165039 1119.764038 1120.15686 1120.411987 1120.647705 1120.783569 1120.810059 1120.641479 1120.487793 1120.42395 1120.55481 1120.925903 1121.621826 1122.39917 1123.663574 1124.619385 1125.73291 1127.10498 1128.896606 1131.069092 1133.577515 1135.930542 1139.589355 1139.950195 1139.494263 1140.12793 1141.556152 1143.191772 1144.530273 1145.856445 1146.974976 1147.173462 1147.449951 1147.828003 1148.37793 1148.617798 1148.920776 1148.924805 1148.820435 1148.678223 1149.331177 1151.7323 1154.233398 1156.10437 1157.487305 1158.50293 1161.786255 1165.753784 1168.714355 1172.063477 1175.810913 1178.554688 1180.752197 1184.369873 1187.605713 1191.712158 1201.079468 1208.870605 1213.358154 1220.51416 1216.974731 1206.601929 1196.508911 1195.696655 1199.866211 1205.930664 1211.330811 1217.014893 1222.279785 1226.815063 1228.133179 1226.959473 1227.409302 1233.161133 1239.123535 1241.587402 1242.612549 1236.528687 1227.477173 1216.387939 1209.7052 1200.273071 1196.745117 1195.203247 1192.00354 1188.704346 1187.261475 1187.076538 1187.025757 1186.921021 1186.541992 1185.737549 1185.168701 1185.483887 1185.884521 1185.682373 1185.151245 1184.074097 1183.181885 1182.203857 1181.970825 1182.022583 1182.999512 1184.041504 1184.484131 1184.747437 1185.453613 1186.376953 1187.262451 1188.153564 1188.879639 1189.617432 1190.579712 1191.609253 1192.727661 1193.918823 1194.990356 1195.404541 1196.008423 1196.514526 1195.493652 1194.809937 1193.628418 1193.158203 1193.064331 1193.863892 1195.362305 1198.176758 1203.474854 1210.201782 1217.89624 1219.2052 1219.580078 1221.689087 1221.585327 1218.711914 1214.188599 1211.414673 1208.548096 1206.723999 1205.358765 1204.085938 1202.851074 1201.51416 1200.276855 1198.643433 1196.703369 1194.444946 1192.380005 1190.297119 1188.574707 1187.195312 1185.665283 1183.9823 1181.809448 1176.648682 1176.408447 1176.567993 1176.721313 1176.887085 1177.201782 1177.341675 1177.527344 1177.703613 1177.907471 1178.149048 1178.264526 1178.288086 1178.198486 1178.02356 1177.588867 1177.330322 1176.961304 1176.757324 1176.441284 1176.193726 1176.202393 1176.197998 1176.251953 1176.278076 1176.469604 1176.64856 1176.751221 1176.827026 1176.932861 1176.958008 1176.930908 1177.010254 1177.324463 1177.600586 1178.081787 1178.308838 1178.408325 1178.333008 1178.134277 1177.938843 1177.709351 1177.386841 1176.990601 1176.466187 1175.786743 1175.191284 1174.71228 1174.264404 1173.75415 1173.282471 1172.957397 1172.772827 1172.763306 1172.816284 1172.955933 1172.822266 1172.710815 1172.552856 1172.204224 1171.874512 1171.589722 1171.199463 1170.707397 1170.195679 1169.753906 1169.579834 1169.482788 1169.399048 1169.470703 1169.302246 1169.030396 1168.796143 1168.261353 1167.709473 1166.861206 1166.138428 1165.350708 1164.741455 1163.917969 1163.165771 1162.37793 1161.625854 1160.800049 1160.07251 1159.545288 1158.871704 1158.694824 1160.155396 1161.721802 1163.398438 1165.003662 1166.213501 1167.236816 1168.210205 1169.138916 1169.968994 1171.565552 1178.944214 1182.606445 1184.47998 1188.821899 1192.174072 1194.279419 1193.952637 1194.828979 1201.118774 1211.379517 1221.519165 1220.917847 1223.258301 1229.299072 1234.822754 1242.236816 1247.219727 1251.546021 1260.624878 1268.872559 1277.644043 1284.308228 1291.52124 1304.47229 1321.145386 1320.642822 1317.473999 1310.972778 1305.166504 1297.777344 1283.290161 1284.289917 1296.589966 1299.947998 1300.636963 1302.982422 1308.606323 1312.201294 1312.55542 1309.161011 1307.42334 1306.353516 1303.894653 1297.252075 1289.047363 1279.128784 1271.756958 1266.53772 1259.000244 1244.411621 1233.463623 1224.232666 1213.741455 1203.451538 1195.580444 1187.869507 1185.360107 1183.631104 1181.257568 1176.286987 1172.93457 1169.805786 1166.91748 1163.847534 1161.086548 1159.311401 1157.470947 1156.022827 1154.748291 1153.473145 1152.07605 1150.562378 1148.77417 1147.1875 1146.276245 1145.142456 1143.873779 1142.641602 1141.250854 1139.936279 1138.422363 1136.76709 1135.491699 1134.749023 1133.992554 1133.399292 1132.708496 1131.411499 1129.671265 1127.979736 1126.540527 1125.220947 1124.255981 1123.448242 1122.964844 1122.890625 1122.495239 1121.188721 1118.601929 1117.581421 1117.989014 1118.281738 1118.622559 1119.208252 1119.700562 1120.373779 1121.140625 1121.833496 1122.513428 1123.417725 1124.210571 1125.054077 1125.895386 1126.829834 1127.831665 1128.942993 1130.200684 1131.887329 1133.945312 1135.557373 1136.675903 1137.369873 1137.364746 1137.858276 1141.171753 1144.429199 1145.896851 1147.144653 1148.69751 1150.998047 1152.286499 1155.078247 1158.583008 1160.70874 1161.151611 1161.112915 1161.099487 1161.480957 1162.82373 1164.027222 1165.619751 1167.253418 1168.553223 1169.847412 1171.063354 1170.268677 1167.859375 1168.088135 1169.758301 1170.689331 1170.718994 1170.728149 1170.732056 1168.9104 1163.490479 1162.408447 1165.410034 1167.311646 1166.371826 1162.782959 1158.964966 1155.443237 1152.351685 1152.884766 1152.763794 1148.997803 1146.697876 1145.861328 1145.455566 1143.97937 1143.120972 1141.981201 1141.367798 1140.62207 1140.030396 1139.21167 1137.753662 1136.425903 1134.689575 1132.733887 1132.659424 1132.647339 1132.948242 1133.738037 1133.991821 1137.449707 1140.455078 1143.387939 1146.696777 1147.488892 1146.748779 1149.225952 1149.778198 1149.3479 1150.983276 1155.137939 1158.568848 1162.450073 1167.343506 1174.89856 1177.803467 1182.327148 1189.094727 1193.789551 1208.458862 1219.699585 1228.242065 1235.494019 1240.879517 1242.539307 1239.440674 1235.390137 1231.168579 1226.24231 1221.51416 1217.147217 1213.236572 1209.327515 1203.892822 1197.951294 1191.308105 1187.459717 1185.448608 1178.053589 1171.682861 1167.932129 1163.787354 1160.956665 1158.625366 1157.108032 1155.994629 1154.888428 1153.910034 1152.898193 1151.97998 1151.231079 1150.655029 1150.05957 1149.290894 1147.828003 1146.391235 1146.337036 1144.67749 1141.577881 1138.670898 1136.490967 1135.071045 1134.627563 1134.206055 1133.487915 1132.115112 1128.677124 1123.183594 1126.57666 1127.172241 1124.872925 1121.341553 1119.153687 1117.141235 1114.62146 1111.973877 1110.241577 1109.281494 1108.695312 1108.091064 1107.307983 1106.322754 1105.206299 1103.932495 1102.721802 1101.574097 1100.501709 1099.567139 1099.012817 1098.62207 1097.901489 1095.298462 1098.461548 1098.923828 1098.381348 1097.029419 1097.343994 1097.971802 1095.582153 1092.978638 1091.115723 1089.925415 1089.253418 1088.918823 1088.722412 1087.810059 1086.686646 1084.032349 1084.842651 1085.180176 1085.405396 1086.921021 1087.354126 1087.251343 1086.9104 1086.844482 1085.37439 1092.006104 1098.467773 1095.389282 1093.741943 1093.782349 1093.550537 1092.951782 1092.2948 1091.340576 1090.357788 1089.960571 1088.927246 1088.550537 1087.140015 1086.259399 1086.363403 1084.382202 1083.913818 1084.576782 1084.795654 1084.773438 1084.716431 1084.53418 1083.622437 1082.825317 1082.410278 1082.599365 1082.919434 1083.027222 1082.98291 1082.583252 1081.709961 1081.04541 1080.934692 1082.021118 1086.001099 1084.753296 1079.537231 1074.035645 +1122.06604 1117.996704 1114.44043 1111.9729 1108.938721 1105.62439 1107.502808 1109.6073 1110.586792 1111.448242 1112.409302 1113.431763 1114.567261 1115.734619 1117.008057 1118.239624 1119.246704 1120.124023 1120.734009 1120.934692 1121.207153 1121.407349 1121.545166 1121.609375 1121.429321 1120.937378 1120.767212 1120.818848 1120.983887 1121.476074 1122.190552 1123.08606 1124.016968 1125.256592 1126.779297 1128.586914 1130.510132 1132.454712 1133.54187 1134.182495 1134.953857 1135.265381 1137.082764 1140.325317 1142.219116 1143.30957 1144.496094 1146.144897 1146.840454 1147.317627 1147.563354 1147.741333 1148.082397 1148.128296 1147.792969 1147.208252 1146.649658 1146.232178 1149.564941 1153.139771 1155.445068 1156.873535 1158.244629 1161.115845 1164.518555 1167.707275 1170.442383 1173.436523 1176.001587 1178.374512 1181.351318 1183.67981 1186.493774 1192.212891 1198.113281 1208.173218 1220.600464 1218.710815 1208.986084 1199.124756 1191.999023 1195.608398 1201.604004 1207.762451 1211.782959 1214.385986 1215.634155 1215.220581 1214.259521 1218.929199 1221.211304 1227.793579 1232.804565 1233.304321 1230.268921 1220.80896 1211.549072 1204.955933 1195.457886 1193.070068 1191.515869 1187.995972 1183.640137 1184.641357 1185.293701 1185.065918 1185.290283 1185.224121 1184.471069 1183.167236 1184.136108 1185.051636 1185.109985 1184.670166 1183.696167 1182.94397 1181.743896 1181.549927 1181.71582 1182.772461 1183.328857 1183.33606 1183.296387 1184.235229 1185.634766 1186.672607 1187.741333 1188.786621 1189.869751 1190.998047 1192.178955 1193.407471 1194.462158 1195.322876 1196.191162 1197.158569 1197.567627 1196.9198 1195.104004 1193.602905 1192.720703 1192.441528 1192.708984 1193.726318 1195.159912 1198.177368 1206.714233 1212.090454 1212.80603 1214.989136 1217.412354 1217.355835 1213.786255 1209.573975 1207.681519 1205.980957 1204.048096 1201.980957 1199.629395 1198.082031 1196.987549 1196.082764 1194.906616 1193.45166 1191.987183 1190.029541 1187.878906 1186.184692 1185.048218 1183.823608 1177.952759 1176.953735 1177.122192 1177.383545 1177.590576 1177.798584 1177.95874 1178.28064 1178.4375 1178.588501 1178.822754 1179.026489 1179.326416 1179.429199 1179.373535 1179.231812 1178.91333 1178.524902 1178.051758 1177.726685 1177.410278 1177.032104 1176.865723 1176.690674 1176.704102 1176.770874 1176.802734 1176.952148 1177.088745 1177.242676 1177.356934 1177.328613 1177.525146 1177.589844 1177.713501 1177.993774 1178.355713 1178.746216 1179.067505 1179.125977 1179.067627 1178.835938 1178.64209 1178.385376 1178.047974 1177.525757 1176.930176 1176.363159 1175.946289 1175.660034 1175.175415 1174.589111 1174.093262 1173.657715 1173.39856 1173.30481 1173.266357 1173.17395 1173.114136 1172.914185 1172.738037 1172.468994 1172.176392 1171.777466 1171.380859 1170.894165 1170.327637 1170.129883 1170.007935 1170.026489 1170.05127 1170.082397 1170.033936 1169.720459 1169.353394 1168.870972 1168.297852 1167.52124 1166.787476 1166.053223 1165.168213 1164.325806 1163.404663 1162.569824 1161.733398 1160.970093 1160.295654 1159.733398 1159.166748 1158.707153 1160.372803 1161.940918 1163.696167 1165.240601 1166.549927 1167.647705 1168.586548 1169.709839 1170.768677 1171.908569 1176.376587 1180.494263 1183.392334 1189.445923 1194.944458 1197.56665 1198.521484 1196.550049 1194.825317 1205.328491 1215.168701 1220.499878 1220.995483 1221.750977 1228.014404 1230.12915 1239.205444 1247.232422 1257.186646 1266.691162 1276.092407 1283.323975 1289.257202 1302.858521 1321.289185 1321.66333 1317.768433 1308.084473 1301.711792 1294.942627 1290.696167 1298.078125 1303.046753 1305.065063 1307.593384 1312.44043 1317.109619 1319.65979 1319.974609 1315.370117 1310.171021 1308.253784 1304.075317 1294.550659 1284.434448 1276.805786 1271.517456 1268.743164 1259.030762 1244.884766 1235.031616 1226.472168 1217.152222 1206.07019 1199.749023 1195.229004 1189.8573 1186.326538 1185.130371 1182.506226 1175.213379 1170.935303 1167.521851 1164.209106 1160.500244 1158.371582 1157.919312 1156.782104 1155.450439 1154.049561 1152.555542 1150.853271 1148.754517 1146.757202 1146.629761 1145.506714 1144.526611 1143.22937 1141.731323 1140.079346 1138.466431 1136.677734 1134.291138 1134.245605 1134.259766 1134.379395 1134.237061 1132.278442 1130.037598 1128.036499 1126.344971 1125.079956 1124.138916 1123.479248 1122.993042 1122.393921 1121.709351 1120.710205 1119.136841 1117.999878 1118.274658 1118.591309 1119.175781 1119.771973 1120.399902 1121.069092 1121.807739 1122.510986 1123.439575 1124.260498 1124.998413 1125.862427 1126.745972 1127.671875 1128.714111 1129.843262 1130.956543 1132.177979 1133.532349 1134.726196 1136.657471 1139.06189 1140.757202 1142.54248 1145.109985 1147.343506 1148.700806 1150.593384 1152.333008 1153.982788 1155.609375 1158.181641 1161.632568 1164.004883 1165.812378 1166.507568 1166.763306 1167.2052 1167.848999 1168.747314 1170.494263 1171.718994 1173.127441 1174.336792 1174.557251 1173.677612 1170.9375 1172.859253 1174.733521 1176.030273 1176.39856 1176.425781 1175.731201 1173.427246 1169.557373 1168.364746 1171.88916 1175.041504 1174.688232 1172.086426 1166.797974 1160.449585 1159.663452 1160.245239 1160.032349 1158.477661 1155.721313 1152.555176 1150.381958 1148.268311 1146.164429 1144.983887 1143.846191 1142.675781 1142.345703 1142.211548 1141.564819 1140.020996 1136.941406 1133.532837 1133.155762 1132.598389 1133.072876 1134.349609 1135.920044 1137.469482 1139.655273 1142.320801 1144.770142 1145.17981 1147.212036 1148.26001 1148.022827 1146.586182 1147.486694 1153.858765 1157.240967 1160.797485 1164.430664 1170.192749 1171.410278 1176.892822 1182.955322 1189.078735 1200.746704 1208.192871 1220.546265 1222.905762 1224.276123 1227.098267 1233.445435 1234.88916 1232.13501 1226.997192 1221.813477 1217.449463 1213.650269 1209.560791 1204.979736 1198.620117 1194.497192 1191.061523 1186.733643 1181.03064 1174.069946 1169.190918 1165.170654 1161.782593 1158.853882 1157.599243 1156.736084 1155.843262 1154.916504 1153.75 1152.755127 1151.85437 1151.030518 1150.352539 1149.564697 1148.516235 1147.345215 1145.944946 1141.170532 1136.322144 1134.751465 1133.662354 1132.86145 1132.08728 1131.173828 1129.946533 1128.264893 1125.710571 1122.047607 1123.286499 1124.957031 1123.26416 1120.252563 1117.688843 1115.431885 1113.285156 1110.928101 1110.151733 1109.890869 1109.249512 1108.796753 1107.834595 1106.56958 1104.880615 1103.524902 1102.450317 1101.56897 1100.62439 1099.553589 1098.829712 1098.354004 1095.941772 1098.652954 1099.30896 1099.572632 1099.1427 1097.822388 1097.807739 1097.816406 1097.154541 1094.888062 1093.066772 1091.907104 1091.258667 1090.832642 1090.392944 1089.422119 1088.14917 1086.659668 1083.560791 1083.807983 1084.342651 1085.494995 1085.905884 1085.236084 1084.351807 1084.748779 1084.536499 1086.844849 1090.887451 1089.510254 1088.958862 1089.3573 1089.174927 1088.904663 1088.380005 1087.542969 1085.561279 1085.381958 1084.952393 1085.660767 1084.574951 1083.637817 1083.498657 1082.863647 1082.301636 1082.494629 1082.724121 1082.772217 1082.484741 1082.160034 1081.645752 1081.095459 1080.761475 1080.693604 1080.803101 1080.835449 1080.94458 1080.660034 1080.209351 1080.003906 1080.099854 1081.243164 1083.646606 1083.424683 1083.019897 1086.115845 +1122.118164 1118.756836 1115.446533 1112.670288 1109.588989 1106.459595 1107.577271 1109.685791 1110.648315 1111.806763 1112.925293 1113.981079 1115.220947 1116.479858 1117.75769 1119.093384 1120.297485 1121.09021 1121.478882 1121.687134 1121.847412 1122.149048 1122.20752 1122.21167 1122.245483 1121.508057 1121.172485 1121.069458 1121.115234 1121.282959 1121.719116 1122.374023 1123.463623 1124.712524 1126.328125 1128.012207 1129.693115 1131.230469 1132.331543 1133.080688 1133.74646 1134.425171 1136.843262 1140.610962 1142.736572 1143.088379 1143.169678 1143.992554 1145.440796 1146.257446 1146.109985 1146.660278 1147.069336 1146.936401 1146.503052 1146.054443 1146.175537 1147.688843 1149.595947 1152.637085 1155.256226 1157.274658 1159.033447 1161.201782 1163.715942 1166.388794 1169.140015 1171.754028 1174.032715 1175.660278 1178.389771 1180.258301 1182.24292 1189.123535 1196.725952 1208.782227 1220.221558 1219.484375 1208.951172 1197.671997 1192.033936 1190.750122 1196.993896 1203.142456 1208.11084 1209.14209 1208.485107 1205.930054 1205.036499 1207.019897 1214.423096 1222.812378 1225.193604 1223.830444 1219.938721 1210.862793 1203.498901 1196.377441 1193.018188 1190.498169 1188.354248 1185.521729 1182.688599 1183.164307 1183.678833 1183.396729 1183.244629 1184.231567 1184.09375 1182.72583 1183.266479 1184.014282 1184.244019 1183.866211 1183.131592 1181.840332 1180.997925 1181.005005 1181.298706 1181.833862 1182.394531 1182.570801 1182.838623 1183.579956 1184.782349 1185.996704 1187.141602 1188.438843 1189.875854 1191.226074 1192.552856 1194.003906 1194.966187 1196.011475 1197.548706 1198.773804 1199.184326 1198.414062 1195.607178 1193.279419 1192.207642 1191.708618 1191.89502 1192.689819 1194.124634 1195.84668 1203.210449 1208.436523 1207.866821 1209.338501 1210.474609 1210.193359 1207.764893 1205.936157 1204.751343 1203.006592 1200.869873 1198.300171 1195.485962 1194.252563 1193.573486 1192.81189 1191.647827 1190.474731 1189.194336 1187.378174 1185.595703 1184.310913 1182.913452 1177.47522 1177.690186 1178.370483 1178.856323 1179.083862 1179.045044 1179.008301 1179.101562 1179.342407 1179.539551 1179.721069 1180.012329 1180.432983 1180.613892 1180.617676 1180.487915 1180.280273 1179.82312 1179.385254 1178.873291 1178.515991 1178.122925 1177.673096 1177.549316 1177.382568 1177.250122 1177.319458 1177.298706 1177.356812 1177.466431 1177.654053 1177.739136 1177.884766 1177.969604 1178.264526 1178.502563 1178.779907 1179.131226 1179.526978 1179.818359 1179.861938 1179.706055 1179.535767 1179.331665 1179.016113 1178.581177 1177.94873 1177.518311 1177.041626 1176.667236 1176.44812 1176.058838 1175.492554 1174.722168 1174.343018 1173.999023 1173.904663 1173.770264 1173.62793 1173.442627 1173.236572 1172.930542 1172.639404 1172.324097 1171.929565 1171.476074 1170.966553 1170.549316 1170.614502 1170.743042 1170.661621 1170.625 1170.814697 1170.731445 1170.34668 1169.943359 1169.502441 1168.970215 1168.218384 1167.46167 1166.585083 1165.61792 1164.674927 1163.662476 1162.707642 1161.986938 1161.26123 1160.604004 1160.00061 1159.324829 1158.904541 1160.828003 1162.619629 1164.464111 1165.996826 1167.285767 1168.471924 1169.709106 1170.229614 1172.164551 1173.931885 1176.485107 1179.832642 1183.175171 1189.060669 1195.47168 1199.663696 1204.582153 1204.603882 1203.527222 1203.803589 1206.123047 1212.404663 1216.881348 1219.500366 1226.440796 1233.127563 1239.621582 1247.532104 1255.306885 1267.137085 1274.60144 1281.192383 1286.443115 1296.017456 1314.587524 1321.321533 1312.753662 1301.646484 1295.740601 1293.195679 1299.59436 1306.772095 1309.097046 1312.444946 1315.594116 1319.384766 1321.144287 1320.910767 1319.108398 1311.905518 1306.312866 1304.121094 1298.039673 1290.426392 1280.240356 1271.658325 1265.0802 1260.628174 1253.464722 1243.050537 1234.10498 1225.859619 1217.967285 1206.740356 1199.042358 1194.504761 1189.207275 1185.065186 1183.787476 1180.097168 1174.035645 1171.312012 1168.348511 1165.105713 1161.974976 1160.422241 1159.600586 1158.063843 1156.411987 1154.896362 1153.117676 1151.333008 1149.59375 1148.376343 1147.391357 1146.339111 1145.659424 1144.159912 1142.187622 1140.389038 1138.400024 1136.683594 1135.533203 1134.953247 1134.908081 1134.654175 1134.268066 1132.456787 1130.081299 1127.85498 1126.057983 1124.553589 1123.715332 1123.003174 1122.222778 1122.219727 1122.343994 1121.697388 1119.916138 1118.401733 1118.502441 1118.99939 1119.542114 1120.249634 1121.007812 1121.706665 1122.479492 1123.337036 1124.20813 1125.02771 1125.842529 1126.648438 1127.556885 1128.607788 1129.543945 1130.631958 1131.681885 1132.561157 1133.060669 1133.767334 1135.8927 1140.828491 1143.47998 1145.743652 1147.819824 1150.441406 1152.799316 1154.397949 1155.841675 1157.466553 1159.771606 1160.463135 1165.311768 1168.278076 1170.606812 1172.147461 1171.194702 1172.611816 1173.309326 1173.058594 1175.35437 1176.629639 1177.867065 1178.603149 1178.183105 1176.974121 1177.197266 1178.335693 1180.269409 1181.869629 1182.379761 1181.961426 1180.517456 1175.865601 1170.750854 1169.910889 1177.224854 1183.43457 1180.99585 1177.318726 1173.682983 1169.62793 1166.198364 1168.983032 1170.017212 1168.985474 1165.893066 1162.16333 1159.081177 1156.012085 1151.796753 1148.513916 1146.04248 1144.833618 1144.779053 1144.942627 1145.888062 1146.0896 1141.585938 1137.450928 1136.668701 1133.468262 1132.994019 1134.031006 1135.578003 1136.983887 1138.750732 1140.481201 1142.276978 1144.6427 1147.198975 1147.276001 1146.189331 1147.264282 1149.025635 1152.428345 1155.581055 1157.885498 1159.168579 1169.449463 1170.43457 1173.370605 1182.443237 1197.289062 1203.408203 1209.736938 1214.224854 1207.271606 1208.993896 1215.583984 1225.181885 1234.197266 1232.740479 1227.359863 1221.750732 1217.575317 1213.407959 1209.54541 1205.921631 1201.041504 1197.714966 1193.62146 1187.904297 1183.077881 1176.209473 1170.377197 1166.709229 1162.86438 1160.157227 1158.956055 1158.077637 1157.205444 1155.755737 1154.107422 1152.899536 1151.894165 1151.14502 1150.518555 1149.741821 1149.040161 1148.046143 1146.827637 1141.265259 1135.373169 1135.248413 1134.05127 1131.951538 1129.450806 1126.062866 1125.092285 1125.296631 1123.902832 1121.269287 1120.918579 1122.281494 1121.021362 1118.146973 1115.560303 1113.518921 1112.36731 1111.773804 1111.160767 1110.652954 1110.275513 1109.8302 1108.960449 1106.671753 1104.440674 1103.035278 1102.11792 1101.32959 1100.552979 1099.36853 1098.343872 1098.230103 1096.752197 1099.000488 1099.885254 1100.24707 1099.929688 1099.258301 1098.298584 1097.796631 1097.9375 1096.175049 1094.697388 1093.699951 1093.247925 1093.06543 1092.699097 1091.62793 1090.083984 1088.196655 1086.617188 1085.561401 1082.930054 1083.261353 1082.984375 1082.655151 1082.231323 1082.206299 1082.729858 1083.973877 1084.628906 1085.012451 1085.02771 1085.615967 1085.209839 1084.791504 1084.614014 1083.71936 1082.703003 1082.17395 1082.14978 1082.41394 1081.903687 1081.20813 1080.916748 1080.36731 1080.324951 1080.478394 1080.600342 1080.425903 1080.34021 1079.910278 1079.333618 1078.748047 1078.449707 1078.406738 1078.604614 1078.864258 1079.037964 1079.019775 1078.843384 1078.588745 1078.69165 1078.738892 1078.515869 1078.127808 1080.429199 1083.950684 +1121.610474 1119.034912 1116.255493 1113.426758 1110.940796 1107.70166 1108.149292 1110.550171 1111.21521 1112.420288 1113.494873 1114.721436 1115.974854 1117.317383 1118.776123 1119.993042 1121.137451 1122.021118 1122.271362 1122.417236 1122.532349 1122.754272 1122.849976 1122.819946 1122.635376 1122.092285 1121.651245 1121.305786 1121.275391 1121.326416 1121.53894 1122.10144 1122.946533 1124.197632 1125.900757 1127.417847 1129.01123 1130.240479 1131.380615 1132.493652 1133.74646 1135.715942 1140.175415 1143.692871 1146.780762 1143.938232 1141.958008 1142.039429 1143.198853 1144.05249 1144.396606 1145.039795 1145.379517 1145.222656 1145.548462 1146.108887 1147.62561 1149.422974 1151.019043 1153.119751 1155.566162 1158.003906 1159.895874 1161.266724 1162.566772 1164.680298 1167.224609 1169.637329 1171.61731 1172.440186 1175.122559 1179.712036 1184.217651 1193.095337 1200.290161 1208.509277 1217.177734 1217.328003 1210.369263 1201.58728 1194.419189 1188.922607 1190.871826 1195.891113 1198.810547 1201.760376 1201.48877 1198.708008 1200.804199 1204.701172 1210.089966 1217.234497 1218.277466 1215.731201 1210.81189 1203.648071 1196.172729 1192.924805 1190.607422 1188.567749 1186.703247 1184.441528 1182.300415 1181.634644 1181.739624 1181.640625 1182.62439 1183.612915 1183.8302 1182.343506 1181.629761 1182.493042 1182.914185 1182.10791 1180.940796 1180.203735 1180.152222 1180.443848 1180.90332 1181.397949 1181.831421 1182.106689 1182.473511 1182.928589 1183.964111 1184.96521 1186.4823 1188.074097 1189.730957 1191.253418 1192.895386 1194.330811 1195.516724 1197.061157 1198.922241 1200.812256 1202.034424 1200.862427 1195.587402 1192.699219 1191.69751 1191.277466 1191.269775 1191.776245 1192.651367 1194.407227 1199.705444 1206.074585 1207.903564 1205.789673 1206.109375 1205.774048 1204.711548 1203.245117 1201.984497 1200.25293 1198.475952 1196.179443 1193.779297 1192.140747 1190.975342 1189.635132 1188.346436 1187.262207 1186.365356 1184.756836 1183.165039 1180.807373 1178.391602 1177.803345 1179.899658 1181.594604 1181.491699 1180.955811 1180.528442 1180.230225 1180.291138 1180.395142 1180.681274 1180.86438 1181.346802 1181.657959 1181.828735 1181.822632 1181.597168 1181.173096 1180.698975 1180.077271 1179.64624 1179.274658 1178.961792 1178.583984 1178.295166 1178.128174 1178.085693 1177.962646 1177.819092 1177.808838 1177.844604 1178.016113 1178.123779 1178.34021 1178.581421 1178.832642 1179.228882 1179.651733 1179.95459 1180.341431 1180.574829 1180.612915 1180.481445 1180.208862 1179.956421 1179.500854 1178.996338 1178.501465 1178.135132 1177.796631 1177.654297 1177.335205 1176.838013 1176.193359 1175.51062 1174.990845 1174.703613 1174.598511 1174.488281 1174.155396 1173.891846 1173.601929 1173.317871 1173.000488 1172.595215 1172.138184 1171.553467 1171.063843 1170.988159 1171.209595 1171.320679 1171.234741 1171.172363 1171.32959 1171.255737 1170.766846 1170.353149 1170.129761 1169.796265 1169.039673 1168.032227 1167.089111 1166.01123 1164.911011 1163.90979 1163.101685 1162.274658 1161.609985 1160.891968 1160.305298 1159.645264 1159.425537 1161.457642 1163.500122 1165.801392 1167.220581 1168.125 1169.379639 1171.131714 1171.731689 1172.603516 1174.520386 1176.81311 1179.629272 1182.479858 1187.640137 1193.729004 1200.662354 1208.399048 1216.495483 1212.918213 1209.607544 1209.340454 1212.081543 1216.649414 1219.84436 1226.040649 1232.744507 1238.504761 1245.95166 1255.581055 1265.379517 1272.200806 1277.079346 1281.916016 1288.78418 1297.96582 1303.810913 1299.161133 1292.459229 1287.102905 1294.1875 1305.02478 1309.215698 1313.083862 1316.964722 1319.247559 1320.546753 1321.0802 1319.018433 1311.568237 1303.895996 1300.345215 1297.380249 1292.128784 1285.599121 1278.683472 1272.363403 1263.574341 1248.676758 1240.697754 1233.963867 1223.37915 1217.630615 1211.675781 1202.856445 1194.760864 1188.474243 1184.511353 1182.263672 1179.134644 1170.802368 1170.67688 1169.833496 1168.278442 1165.755859 1163.424194 1161.776733 1160.03772 1158.401855 1157.276733 1155.526001 1153.596191 1151.790283 1150.328491 1149.214355 1148.244873 1147.52771 1146.620728 1144.720703 1142.651978 1140.313721 1138.032471 1136.300903 1135.248779 1134.622314 1133.928955 1133.475464 1133.040039 1131.707642 1129.70813 1127.71228 1125.6604 1123.712158 1122.413452 1122.161133 1122.221924 1122.600464 1122.832031 1122.450928 1120.903809 1119.178467 1118.633179 1119.222778 1119.826172 1120.625244 1121.476318 1122.258301 1123.167725 1124.134766 1125.029663 1125.889648 1126.704712 1127.541748 1128.569092 1129.428345 1130.526367 1131.595337 1132.858521 1133.992676 1134.291748 1134.547485 1138.553589 1143.721436 1146.056885 1148.432373 1150.917969 1153.456543 1156.745605 1158.508545 1159.189331 1160.246948 1164.292236 1167.114136 1169.926636 1172.886841 1175.25415 1177.800171 1177.460083 1178.109497 1180.801514 1180.510498 1180.2948 1181.584595 1182.37793 1183.248169 1182.47229 1180.376831 1181.485718 1183.984619 1186.367065 1188.301392 1188.967041 1187.792847 1184.691162 1177.866333 1170.002686 1169.442627 1179.249756 1190.195801 1198.046387 1181.198486 1177.074219 1173.70752 1170.51709 1171.118408 1175.46521 1179.978149 1177.389282 1173.416748 1169.830444 1165.007324 1160.01709 1155.592407 1150.951172 1147.544067 1146.433716 1146.971313 1148.071167 1148.598022 1145.096558 1143.052368 1143.325439 1135.208252 1132.836914 1133.479736 1134.438599 1135.693726 1137.04834 1138.298706 1140.054199 1142.337769 1144.994873 1145.291626 1146.995483 1148.442871 1149.362915 1151.260498 1153.813232 1156.416626 1160.002563 1173.110107 1178.811768 1183.381592 1187.443481 1200.096191 1208.093262 1210.786621 1208.93335 1203.46228 1202.236938 1207.679565 1217.565796 1225.339111 1232.425659 1227.046509 1221.590088 1217.05188 1212.924194 1208.034668 1204.722412 1200.143677 1197.328857 1194.300903 1188.110596 1184.458008 1176.807983 1170.830688 1167.35437 1163.87207 1161.559814 1160.660767 1159.531128 1158.431274 1155.997314 1153.783569 1152.181885 1151.263428 1150.696533 1150.250244 1149.740845 1149.225342 1148.713379 1147.638062 1146.171509 1143.210571 1139.891968 1136.37854 1132.328491 1127.405396 1122.719604 1121.658691 1122.097656 1121.827637 1119.740845 1118.491821 1118.144043 1116.940796 1114.4552 1112.689697 1111.043945 1110.687012 1110.699097 1110.945068 1110.211548 1109.687012 1110.79126 1110.06311 1105.992432 1103.776123 1102.570068 1101.580566 1100.77002 1100.192505 1099.256348 1098.510132 1097.715332 1097.364502 1099.324951 1100.580078 1100.937988 1100.64917 1100.054688 1099.018311 1097.833008 1097.891724 1097.292236 1095.675537 1094.952881 1095.283936 1095.8302 1095.395386 1093.921021 1091.878662 1089.978638 1088.06958 1086.382568 1084.392944 1083.544922 1083.396484 1083.840088 1086.75647 1082.389526 1081.008423 1081.862915 1082.194946 1082.851074 1082.88623 1082.689331 1082.37915 1081.755371 1081.102051 1080.266113 1079.133179 1078.900391 1079.036255 1079.494507 1079.04834 1078.483398 1078.20813 1077.842651 1078.042114 1078.43689 1078.483521 1078.414307 1078.109863 1077.757202 1077.04895 1076.050415 1075.371826 1075.95813 1076.618774 1077.155518 1077.478516 1077.64209 1077.590576 1077.424683 1076.935059 1075.947754 1075.165771 1073.426147 1075.89978 1079.710815 +1121.098511 1119.143799 1116.815674 1114.548218 1112.227051 1109.251343 1108.365356 1110.627319 1111.750977 1112.671021 1113.936768 1115.263428 1116.717896 1118.169189 1119.659546 1120.955444 1121.585693 1122.591064 1122.97229 1123.100464 1123.243042 1123.374634 1123.48584 1123.456055 1123.102173 1122.263428 1122.054077 1121.703613 1121.520752 1121.460571 1121.688843 1121.816772 1122.3479 1124.008667 1125.421753 1126.813843 1128.264282 1129.519287 1130.766113 1132.065063 1133.896973 1137.532471 1143.459717 1147.31604 1146.987549 1143.125732 1139.592407 1139.034912 1140.153564 1141.794434 1142.889771 1143.771729 1144.400391 1144.886108 1145.585693 1147.034668 1150.282593 1152.71582 1153.473999 1154.211426 1155.635254 1157.98877 1159.638672 1160.288574 1160.844849 1162.120361 1165.01062 1167.907471 1169.638062 1170.064087 1172.882568 1179.34729 1186.438232 1198.092163 1207.269409 1209.421997 1209.182983 1210.875 1210.552368 1205.643433 1198.054932 1190.841553 1185.861938 1188.67334 1192.104248 1195.162598 1195.165161 1193.467651 1197.723633 1201.827881 1205.858398 1209.437012 1210.7854 1208.804077 1202.132812 1197.216919 1193.283691 1190.352539 1188.275024 1186.690308 1185.419312 1183.377441 1181.536499 1180.44751 1180.213501 1180.432617 1181.655518 1183.172607 1183.395508 1181.572632 1179.792114 1179.344238 1178.850708 1178.171509 1177.867188 1178.381104 1179.268921 1180.055664 1180.74585 1181.218384 1181.624268 1181.915527 1182.226929 1182.699585 1183.120239 1183.935547 1185.955444 1187.804565 1189.477295 1191.051636 1192.719849 1194.557983 1195.778076 1198.092896 1200.400513 1202.969849 1205.581055 1205.864502 1198.030396 1192.856934 1191.603027 1191.272461 1190.86792 1191.080811 1191.471802 1192.789062 1195.94397 1203.701172 1208.209106 1204.298096 1203.426147 1202.654541 1201.776611 1200.700073 1199.620483 1198.004761 1196.469604 1194.39563 1192.07312 1190.244995 1188.495483 1186.796509 1184.906372 1183.912354 1183.280884 1181.824951 1178.883057 1177.99939 1178.659302 1180.119751 1182.568726 1183.376221 1183.231079 1182.539307 1182.041016 1181.536011 1181.412231 1181.769287 1181.924561 1182.07019 1182.413208 1182.84668 1183.073608 1182.789917 1182.481567 1182.027954 1181.344116 1180.831909 1180.3479 1180.132935 1179.884888 1179.685303 1179.270264 1179.012573 1178.93335 1178.737061 1178.441284 1178.310791 1178.27356 1178.479858 1178.580078 1178.831055 1179.143921 1179.46936 1180.002563 1180.427368 1180.863525 1181.161987 1181.361328 1181.38147 1181.225952 1180.902344 1180.507446 1179.974731 1179.503052 1179.083618 1178.776855 1178.630005 1178.386963 1178.039673 1177.623413 1176.900024 1176.196045 1175.709595 1175.325073 1175.224365 1175.102539 1174.842407 1174.420532 1174.140747 1173.857056 1173.440674 1173.049194 1172.618164 1172.043579 1171.533203 1171.451416 1171.776733 1171.815186 1171.817383 1171.754761 1171.823242 1171.600098 1171.234741 1171.122681 1170.99585 1170.595703 1169.742065 1168.599365 1167.458496 1166.439819 1165.368042 1164.391357 1163.483154 1162.717651 1161.973145 1161.323364 1160.635742 1160.016357 1159.768188 1161.545898 1164.910278 1168.002319 1169.021362 1169.067627 1169.575806 1170.759888 1172.034302 1172.895752 1174.295532 1176.35022 1178.702026 1181.172974 1183.693237 1189.723755 1194.375244 1204.195801 1222.483887 1220.281494 1211.5979 1209.491333 1211.776245 1217.88623 1220.853638 1225.291138 1229.914429 1234.781738 1242.134888 1250.971069 1260.436279 1268.820068 1273.140137 1276.673828 1278.71228 1282.961182 1285.454468 1285.706421 1281.382568 1278.615967 1294.368042 1306.265503 1311.116577 1315.007202 1317.741821 1319.139648 1321.750732 1317.214844 1310.702759 1303.481079 1298.62207 1294.997681 1291.750244 1286.91333 1281.762695 1277.050781 1271.900635 1264.059204 1249.0896 1235.729736 1226.927734 1214.891968 1204.576904 1201.361206 1194.561035 1193.36084 1184.634766 1184.267578 1183.733643 1181.476929 1177.412842 1173.87085 1171.678589 1168.996094 1166.716064 1164.476929 1162.509521 1160.995972 1159.716431 1158.025024 1155.86377 1153.787476 1151.916504 1150.496704 1149.460083 1148.718628 1147.804077 1146.224243 1145.119019 1142.737427 1140.008423 1137.645142 1135.72522 1134.147461 1133.572754 1133.062012 1132.665039 1132.035034 1130.886719 1129.408203 1127.427124 1125.417847 1123.451172 1122.560181 1122.204956 1122.558838 1123.079346 1123.070435 1122.733154 1121.949951 1120.030762 1118.932617 1119.41687 1120.041138 1120.931519 1121.795898 1122.745483 1123.785889 1124.675781 1125.690308 1126.714233 1127.65918 1128.531006 1129.371704 1130.326172 1131.437866 1132.534912 1133.793823 1135.841675 1136.851074 1137.438477 1142.708008 1147.12146 1148.82666 1151.783569 1154.72998 1156.46106 1159.040894 1162.218628 1163.475708 1165.63208 1169.013916 1172.258057 1174.863892 1177.950684 1181.407471 1184.457031 1182.302002 1183.201782 1185.573608 1185.884033 1185.782593 1187.402344 1189.43042 1190.003296 1183.505493 1181.879517 1185.699341 1192.165649 1194.253052 1194.837524 1196.500244 1191.237549 1184.951904 1173.520996 1169.870361 1171.005981 1176.406372 1186.263184 1195.86792 1183.50708 1179.369873 1177.018677 1174.453369 1171.558838 1175.344482 1183.786499 1184.240234 1183.2771 1179.437012 1174.488403 1169.727051 1164.989502 1159.693115 1155.54834 1151.488525 1147.256104 1150.218262 1149.670532 1146.108276 1145.755737 1147.77124 1143.174316 1134.243042 1133.203613 1133.805664 1133.919922 1135.011108 1136.558594 1137.828491 1138.078735 1139.587646 1143.678589 1147.136597 1148.278564 1147.999756 1149.556885 1152.824219 1156.678833 1160.806396 1174.538696 1183.544678 1189.079102 1196.773804 1201.052979 1207.250854 1209.754517 1207.408203 1198.970825 1195.429077 1205.270752 1210.723511 1215.544189 1223.781494 1224.546509 1220.858521 1217.244263 1213.437378 1209.938721 1205.765869 1196.81311 1193.682861 1185.573486 1184.157227 1181.789795 1175.55481 1170.320312 1166.68689 1163.368652 1160.935425 1159.927124 1159.550781 1158.314697 1155.099121 1152.289795 1150.675415 1149.98999 1149.841187 1149.729858 1149.543579 1149.163208 1148.893311 1148.517334 1148.150391 1147.603516 1142.77832 1137.814087 1133.245361 1126.014771 1122.330811 1121.258789 1120.847412 1119.82019 1117.903687 1116.23999 1114.837158 1112.749878 1111.544922 1110.923706 1110.331909 1109.62146 1108.912476 1107.71521 1106.984741 1106.973511 1105.393555 1105.308594 1104.67981 1102.788086 1102.322632 1102.035034 1101.522949 1100.473145 1099.920166 1100.143921 1100.235596 1100.036865 1100.974731 1101.761963 1102.061157 1101.627808 1100.642456 1099.415039 1098.299316 1097.831543 1097.981323 1096.435913 1096.009521 1097.020508 1098.050537 1097.879761 1095.868896 1093.879761 1091.950195 1089.294067 1085.353271 1087.282959 1087.363037 1086.856689 1087.290283 1087.007568 1084.304932 1081.473145 1080.238892 1080.70166 1081.053711 1081.02063 1080.618774 1079.730957 1078.671265 1077.925537 1077.553955 1077.578857 1076.950073 1076.576782 1077.353516 1076.771851 1075.753052 1075.576294 1075.32959 1075.904541 1076.341675 1076.760864 1076.680054 1076.367432 1075.569824 1074.950806 1074.378418 1072.071411 1074.321289 1075.209717 1075.780762 1076.362549 1076.587036 1076.652954 1076.393555 1075.677124 1074.052734 1073.35791 1072.654541 1074.462891 1076.425049 +1121.47168 1119.470093 1117.571045 1115.368042 1112.882324 1110.459351 1108.60083 1110.777954 1112.05603 1113.062866 1114.193237 1115.62085 1117.15625 1118.878906 1120.539673 1121.871704 1122.524536 1122.853027 1123.443237 1123.735474 1123.933228 1124.047607 1124.180908 1123.923218 1123.685303 1122.969482 1122.389771 1122.19519 1121.760132 1121.693726 1122.085205 1122.188477 1122.141113 1123.539307 1125.188843 1126.421387 1127.704834 1128.890747 1130.259888 1131.664673 1133.273315 1134.507568 1141.307495 1147.254272 1146.525146 1140.026245 1137.302246 1134.729248 1136.577759 1139.928955 1141.683838 1143.010376 1143.973633 1144.994141 1146.372803 1148.740479 1153.69751 1158.108643 1157.740112 1155.190186 1155.364624 1156.544067 1157.609009 1158.189087 1158.579346 1159.059204 1162.91272 1165.979126 1167.801392 1169.541016 1173.316528 1179.159912 1187.268311 1200.171509 1207.693604 1205.305542 1204.462769 1206.53064 1209.286133 1206.777344 1199.587524 1193.853394 1185.605591 1182.793823 1184.827026 1187.286499 1189.566528 1192.159668 1196.02832 1198.654053 1201.300293 1204.377808 1204.375488 1200.215942 1194.717529 1192.566528 1190.002441 1187.625732 1185.876343 1184.552124 1183.328003 1181.9375 1180.352173 1179.282593 1178.833984 1179.081665 1179.811523 1180.744141 1180.285767 1178.459595 1177.181763 1175.694702 1174.373779 1173.234741 1174.043091 1177.104492 1178.829468 1180.044067 1181.020874 1181.526978 1181.738281 1181.7854 1181.960815 1182.335083 1182.742432 1183.593506 1185.59375 1187.452393 1189.136475 1190.799438 1192.282104 1193.746826 1195.597168 1198.49292 1201.655884 1204.890625 1207.365234 1209.425293 1206.996338 1196.098389 1192.823364 1191.584961 1190.898682 1190.554688 1190.807495 1191.801758 1194.212402 1200.984619 1207.703247 1202.879517 1201.290405 1199.959839 1198.826294 1197.872437 1196.879517 1195.671753 1194.043457 1192.074463 1189.94165 1187.927856 1186.234985 1184.492676 1182.568848 1181.340454 1180.163452 1178.364868 1178.686768 1179.974609 1181.241455 1182.280151 1183.3302 1183.626465 1183.593262 1183.39209 1183.109741 1182.272949 1182.516113 1182.972778 1183.163208 1183.012207 1183.272217 1183.418945 1183.44165 1183.428467 1183.218384 1182.730957 1182.084717 1181.510132 1181.075317 1180.938232 1180.807983 1180.649536 1180.3927 1179.961914 1179.678589 1179.322266 1179.103271 1178.691162 1178.685913 1178.967773 1179.202148 1179.49292 1179.786255 1180.200928 1180.763428 1181.117432 1181.588989 1182.044067 1182.368408 1182.289185 1182.011108 1181.526978 1180.932983 1180.423828 1180.067627 1179.71521 1179.570679 1179.413696 1179.115723 1178.801147 1178.234619 1177.57019 1176.761719 1176.253296 1175.947876 1175.821167 1175.631836 1175.431152 1175.148682 1174.72998 1174.391357 1174.005493 1173.484375 1173.035034 1172.638916 1172.355225 1172.162109 1172.285645 1172.403931 1172.329224 1172.260376 1172.23645 1172.022949 1171.745239 1171.617065 1171.462769 1171.14917 1170.314453 1169.156494 1168.005005 1166.886963 1165.828125 1164.8302 1163.945312 1163.173584 1162.417847 1161.754028 1161.052734 1160.48584 1160.069458 1161.839966 1167.037964 1170.987549 1170.922974 1170.509888 1169.993164 1170.127563 1170.518555 1171.28125 1173.451294 1175.422241 1177.495483 1179.513672 1181.628906 1184.671509 1190.498291 1198.3573 1210.706665 1214.69043 1207.711792 1206.299438 1209.308105 1216.649536 1221.856934 1224.883667 1229.120605 1234.134033 1239.528442 1246.368774 1255.07605 1264.263916 1270.064209 1272.459473 1269.0448 1269.225708 1271.192749 1270.397217 1272.204834 1281.786255 1292.584351 1306.33374 1313.686035 1317.891724 1317.429443 1316.700073 1315.224365 1308.049561 1302.759399 1298.878784 1293.153442 1289.708252 1285.174683 1281.095703 1278.059937 1274.840698 1271.466553 1263.015625 1247.445801 1238.485229 1232.589722 1222.580566 1207.463379 1204.240112 1199.834717 1198.575806 1197.963501 1196.015503 1192.924805 1187.172363 1181.993774 1176.109253 1172.279175 1169.450562 1167.126343 1164.792114 1162.493042 1160.630005 1159.383301 1157.843018 1155.671265 1153.419434 1151.495361 1149.978882 1148.984375 1148.245117 1147.60498 1147.235596 1146.440674 1142.603149 1139.446167 1137.153931 1135.410034 1133.960083 1133.100098 1132.635864 1132.087036 1131.498901 1130.464233 1129.211914 1127.404175 1125.450806 1123.182861 1122.206299 1122.600464 1123.185791 1123.358643 1123.37915 1123.039429 1122.454712 1121.051758 1119.463867 1119.567993 1120.404053 1121.325439 1122.172241 1123.36792 1124.405762 1125.496216 1126.491577 1127.507324 1128.557861 1129.471558 1130.422852 1131.350464 1132.247559 1133.169922 1134.648193 1137.076172 1139.222168 1141.411499 1144.437622 1147.342407 1149.966553 1154.349365 1158.787476 1160.591431 1162.129272 1165.560547 1167.501953 1169.971924 1172.515259 1177.000854 1180.072876 1181.610596 1185.487549 1187.170044 1187.63916 1188.575317 1189.909546 1191.181885 1193.622681 1194.015869 1197.382324 1196.97644 1182.865112 1182.553223 1193.272705 1199.42688 1202.105347 1199.772217 1194.975708 1187.543701 1177.235474 1170.058594 1172.976929 1175.308594 1178.565186 1180.835693 1185.122314 1182.482788 1181.1521 1180.468506 1179.241089 1178.486694 1179.013672 1181.476318 1183.263672 1184.682495 1185.122314 1183.217773 1179.848511 1176.603516 1172.52063 1164.645142 1158.039429 1155.095093 1153.740479 1151.651367 1148.453247 1145.845337 1148.194214 1147.233032 1137.720459 1133.899414 1135.350708 1133.744019 1133.746948 1134.39563 1134.853638 1134.204102 1135.605591 1140.578735 1145.064819 1146.221313 1145.484253 1148.156006 1151.344116 1155.249634 1159.510376 1171.241821 1179.036377 1186.075684 1191.996704 1196.748901 1201.261841 1205.381104 1201.673584 1194.927856 1192.549805 1198.981812 1200.274658 1207.359741 1221.202515 1222.119873 1220.545654 1216.627563 1213.39856 1210.362427 1206.293945 1200.597046 1196.752563 1189.611572 1185.342407 1181.559204 1170.692261 1168.935303 1165.76709 1160.349854 1158.879639 1158.120605 1157.775635 1156.718384 1152.722168 1148.923462 1147.92627 1147.954712 1148.809692 1149.037109 1149.031494 1149.156006 1148.562256 1147.955933 1147.197144 1145.216064 1141.073853 1135.987793 1131.084717 1122.568115 1121.342773 1122.88623 1122.280151 1119.171753 1116.214233 1114.20813 1113.224121 1115.190674 1117.643066 1117.948975 1116.817505 1114.484253 1112.640869 1111.116455 1111.067871 1111.094727 1108.496948 1104.772583 1103.860352 1103.776367 1103.578369 1103.501587 1102.986816 1102.548706 1102.556885 1102.861206 1103.036011 1103.211182 1103.490601 1103.581421 1103.626831 1102.964355 1101.926147 1100.612305 1099.297485 1097.817017 1098.408691 1097.300537 1097.520508 1098.519531 1099.011475 1098.827637 1097.808472 1096.049927 1093.990234 1092.598755 1093.310791 1095.950562 1093.395264 1091.31958 1089.052368 1086.591309 1084.452637 1083.942627 1082.611206 1080.285278 1079.482544 1079.578125 1078.881104 1078.807129 1080.812866 1082.556763 1081.130981 1080.187256 1079.043579 1077.142456 1075.942627 1075.381226 1075.336792 1075.084351 1074.359009 1074.078125 1074.496338 1075.178589 1075.491821 1075.061157 1074.079346 1071.687378 1072.176392 1072.685791 1070.637695 1073.695923 1074.788818 1075.242188 1075.615845 1075.680298 1075.443848 1074.930542 1073.814941 1072.571045 1072.209473 1073.162598 1074.671631 +1123.00061 1120.511841 1118.416748 1116.07251 1113.529419 1111.054443 1108.795044 1110.861694 1112.129395 1113.121582 1114.293091 1115.638062 1117.455444 1119.297241 1121.110229 1122.355347 1123.098633 1123.497681 1123.965332 1124.346069 1124.648193 1124.828491 1124.853394 1124.613525 1124.381592 1123.819458 1123.158813 1122.464478 1122.087158 1121.906128 1122.348633 1122.796265 1123.01416 1123.818237 1124.967407 1126.054199 1127.247681 1128.431519 1129.649536 1130.786255 1131.853027 1132.899292 1133.66394 1137.479736 1137.385742 1134.59668 1133.984863 1134.328857 1136.111328 1138.907471 1141.276123 1143.2771 1144.845825 1147.073975 1149.498535 1153.004883 1157.638062 1159.389526 1158.171509 1154.685059 1154.550659 1155.601196 1156.648438 1157.702637 1158.76062 1160.115601 1162.388794 1165.006104 1167.122314 1169.414551 1172.669922 1177.448975 1183.916748 1195.003296 1200.544312 1200.83374 1199.483521 1199.515015 1203.08252 1202.273682 1197.87793 1193.231689 1188.040161 1184.783813 1181.175415 1181.829956 1185.128174 1188.384888 1192.259766 1195.570435 1197.26123 1197.112183 1195.526123 1193.135254 1190.822144 1188.98938 1186.877441 1184.971436 1183.210571 1182.196411 1181.156982 1180.126221 1178.947632 1177.970459 1177.298218 1177.022705 1177.060669 1177.12207 1176.38269 1175.130859 1174.039062 1172.689209 1171.108154 1170.646606 1173.356079 1177.157959 1179.31958 1180.691895 1182.729736 1183.009888 1182.592407 1183.349365 1183.056763 1182.259033 1183.765503 1184.608887 1185.900513 1187.672119 1189.156494 1190.59436 1192.10376 1193.489868 1194.933716 1198.313721 1202.132446 1206.225586 1208.917358 1209.680176 1207.426636 1198.796875 1194.765747 1192.416992 1191.090454 1190.419312 1190.358398 1190.952515 1193.334717 1196.94165 1200.418091 1199.864014 1199.133057 1198.02771 1196.527954 1194.788574 1193.79248 1192.638794 1191.190918 1189.440674 1187.526001 1185.923218 1184.205322 1182.521973 1180.939331 1179.455933 1178.513062 1179.317749 1180.826172 1182.89978 1183.332275 1183.470947 1183.62439 1183.826538 1183.929932 1183.68457 1183.488525 1183.116333 1183.302612 1183.501221 1183.557739 1183.622925 1183.637817 1183.768677 1183.750488 1183.672485 1183.44751 1183.263184 1182.687012 1182.133545 1181.769409 1181.740723 1181.742188 1181.700684 1181.417969 1181.090454 1180.697632 1180.096069 1179.47998 1179.036133 1179.302368 1179.62146 1179.897095 1180.209473 1180.477783 1180.968506 1181.310425 1181.77002 1182.311646 1182.681396 1183.169922 1183.126587 1182.633179 1182.027954 1181.420898 1181.048584 1180.695312 1180.468628 1180.244385 1180.030151 1179.739502 1179.382568 1178.79834 1178.118652 1177.368042 1176.9021 1176.550537 1176.397827 1176.299072 1175.959717 1175.730713 1175.294678 1174.75708 1174.375244 1174.024536 1173.609253 1173.290039 1172.94104 1172.79126 1172.848022 1172.780762 1172.805176 1172.708618 1172.634033 1172.360352 1172.178345 1171.879395 1171.5979 1171.248169 1170.593994 1169.429688 1168.409912 1167.279419 1166.371826 1165.401367 1164.516479 1163.691528 1162.871826 1162.149902 1161.551514 1161.119873 1160.806885 1160.849854 1166.788086 1171.475464 1171.808228 1171.759888 1171.147583 1170.772217 1170.60022 1171.059082 1172.82666 1174.510132 1176.489136 1178.740723 1180.857544 1182.787964 1187.287109 1192.470459 1196.807373 1198.664307 1199.005371 1204.387939 1206.045288 1210.164795 1220.877686 1224.418823 1229.206787 1233.525879 1237.759155 1244.004272 1250.967407 1257.483521 1263.952271 1267.37439 1264.436768 1261.206665 1262.387939 1266.639038 1272.798462 1283.463745 1296.425781 1309.134888 1318.170532 1318.823364 1315.846191 1312.187134 1307.025269 1302.815186 1299.454224 1296.187134 1291.817871 1286.743042 1281.496948 1277.547363 1271.374878 1271.515503 1270.724243 1265.688965 1251.080444 1241.111572 1235.259766 1228.127075 1220.608154 1212.835083 1206.947021 1204.728271 1203.358398 1201.307983 1198.425659 1192.859009 1183.316284 1176.79126 1171.13562 1169.255493 1167.369751 1164.854858 1162.009399 1158.889038 1158.063843 1156.674316 1155.060181 1152.640991 1150.194458 1148.663086 1147.813721 1147.104126 1146.643677 1146.003174 1144.826172 1141.569946 1138.356445 1135.914185 1134.523193 1133.750244 1133.02417 1132.374146 1131.846924 1131.262085 1130.397583 1129.203979 1127.893433 1126.214111 1124.327759 1122.883545 1123.080566 1123.628174 1123.657471 1123.619263 1123.403687 1122.757812 1122.091919 1120.253296 1119.694336 1120.732666 1121.798828 1122.735962 1124.112549 1125.20166 1126.359985 1127.403198 1128.39978 1129.337036 1130.303101 1131.339355 1132.618652 1133.473633 1133.849487 1135.676514 1138.688965 1141.541748 1144.760742 1146.446411 1146.067749 1146.803467 1151.521118 1158.681763 1162.460449 1168.661499 1170.006104 1171.02771 1173.795776 1178.066406 1181.473755 1185.425781 1186.882935 1189.13208 1191.495239 1192.305176 1193.797607 1194.204224 1196.295166 1198.331665 1201.836792 1203.389648 1197.60498 1185.808472 1182.587891 1195.382446 1203.954346 1209.046875 1199.621826 1190.988159 1184.189209 1175.179321 1175.18042 1177.945312 1180.148804 1182.398193 1184.256714 1186.728882 1187.987183 1186.588989 1185.404663 1184.386353 1183.747314 1183.41687 1183.069946 1182.841309 1182.934937 1186.56543 1187.077515 1186.674316 1186.296143 1183.328125 1174.9104 1166.494263 1159.363647 1156.95166 1155.067139 1152.347168 1149.755859 1149.996826 1148.552246 1143.644165 1139.397339 1142.598877 1142.020386 1137.887939 1135.681519 1134.807251 1134.914429 1133.912476 1137.855957 1140.998413 1142.727661 1143.92981 1147.00769 1149.682007 1152.883301 1156.59668 1166.119385 1169.959839 1177.046265 1182.412109 1187.529053 1191.476929 1193.023193 1191.947876 1184.866455 1183.543823 1187.535522 1192.908936 1207.882446 1219.750488 1221.713135 1220.081055 1216.63269 1212.702271 1209.613159 1205.818726 1201.218872 1197.112427 1192.303223 1187.227661 1183.253662 1176.137085 1171.689697 1167.06189 1160.185059 1159.065796 1158.389404 1157.150024 1155.695068 1151.265259 1146.571899 1145.596924 1145.088623 1145.006226 1145.817261 1145.964355 1145.821411 1145.495972 1144.09436 1141.553711 1136.173096 1134.804443 1131.222168 1122.277954 1121.69104 1125.921021 1125.771362 1123.773804 1119.387207 1114.587891 1115.56311 1118.852173 1123.161255 1124.071899 1123.96875 1122.747803 1119.374512 1116.03125 1114.131592 1112.988525 1111.401489 1109.09729 1107.467773 1106.578735 1106.015747 1105.516113 1105.199585 1105.057495 1105.137207 1105.725708 1106.348145 1106.432129 1106.105103 1106.011597 1105.825439 1105.481201 1104.716553 1103.582031 1102.308105 1100.889282 1099.125 1099.2677 1098.679199 1099.040405 1099.61377 1099.502808 1099.264893 1098.633911 1097.568848 1095.235962 1095.431519 1097.974976 1098.546021 1097.686157 1094.639038 1090.497314 1085.846436 1085.791382 1088.122437 1087.988281 1089.69043 1094.981323 1087.69397 1084.002563 1085.565186 1084.924683 1087.490234 1085.648926 1084.639282 1083.580688 1080.233643 1077.407104 1076.660767 1076.772461 1076.506226 1075.887207 1074.295044 1073.255737 1074.29834 1074.195435 1073.915527 1073.154663 1073.378906 1073.96582 1074.366943 1073.219482 1070.107422 1073.052246 1073.779541 1074.43335 1074.409546 1074.521851 1074.531738 1074.068481 1073.141235 1071.956055 1071.639404 1071.873535 +1125.081177 1121.4375 1118.990356 1116.99939 1114.377808 1111.372803 1108.863892 1110.734009 1111.891113 1112.767212 1113.993896 1115.519653 1117.432251 1119.35022 1121.108398 1122.503174 1123.31189 1123.844238 1124.43396 1124.893311 1125.23999 1125.404785 1125.49292 1125.368652 1125.072021 1124.639038 1123.971191 1123.342163 1122.496948 1122.186035 1122.233276 1122.628784 1123.336426 1123.920654 1124.664795 1125.66272 1126.806763 1127.853394 1128.852539 1129.814087 1130.744263 1131.44397 1132.037109 1132.329956 1132.665649 1132.826172 1133.413452 1134.521484 1136.564575 1138.515259 1141.472046 1144.690552 1147.078491 1149.356567 1152.118896 1156.468506 1159.616821 1157.938721 1153.022339 1152.158691 1153.803467 1156.002441 1157.27832 1158.47583 1159.839478 1161.567017 1163.120728 1164.978027 1167.003418 1169.057495 1171.019409 1174.967896 1180.455078 1187.380615 1195.167603 1195.762329 1194.00354 1192.909668 1195.611938 1196.735596 1194.216064 1191.555908 1188.318115 1186.042236 1183.997681 1179.195068 1181.799072 1184.141724 1188.000732 1191.113159 1192.243408 1192.227783 1190.94751 1189.190063 1187.226562 1186.100342 1184.408691 1182.520874 1181.227539 1180.059692 1179.079224 1178.199219 1177.180176 1176.346924 1175.534424 1174.962646 1174.380737 1174.163452 1173.581909 1172.471069 1171.317261 1169.728149 1171.188599 1174.098145 1177.42041 1179.939087 1181.122437 1183.169312 1185.597412 1186.69519 1186.607422 1187.131226 1186.64502 1184.730835 1185.298218 1186.106323 1187.121216 1188.226685 1189.428589 1190.62854 1192.05603 1193.491333 1194.929321 1197.532959 1201.173096 1206.314819 1209.403809 1209.376831 1204.668579 1198.249268 1194.945923 1192.963745 1191.420898 1190.224976 1189.743164 1189.781006 1190.684082 1193.021851 1195.062744 1197.047119 1197.529541 1196.581909 1194.547363 1192.556519 1190.778564 1189.446655 1188.066284 1186.69104 1185.460449 1183.927856 1182.324219 1180.937988 1179.6698 1178.778442 1180.035278 1181.370239 1182.996338 1183.511597 1183.844971 1183.993652 1184.089722 1184.138916 1184.169678 1184.035278 1183.823486 1183.724854 1183.739868 1183.82019 1184.005371 1184.078979 1184.15564 1184.065796 1184.056152 1183.984863 1183.668701 1183.466431 1183.256958 1182.692383 1182.331909 1182.639648 1182.773804 1182.716309 1182.388672 1182.189697 1182.047241 1181.48584 1180.016113 1179.431152 1179.746338 1180.375122 1180.701294 1181.010376 1181.213501 1181.531738 1181.8479 1182.39502 1182.855835 1183.210815 1183.56543 1183.45874 1183.085083 1182.450317 1181.907349 1181.646851 1181.395752 1181.123291 1180.88208 1180.587158 1180.243164 1179.814697 1179.292725 1178.67395 1177.916992 1177.421021 1177.071533 1176.952148 1176.786743 1176.477295 1176.207886 1175.734009 1175.391113 1174.911133 1174.493408 1174.311157 1173.92749 1173.571777 1173.380005 1173.301147 1173.28125 1173.250122 1173.109863 1172.928223 1172.612793 1172.349243 1172.039307 1171.713013 1171.243164 1170.558472 1169.717773 1168.525269 1167.558228 1166.718628 1165.80957 1164.918091 1164.081055 1163.251343 1162.62146 1162.127197 1161.683105 1161.390625 1161.046265 1164.279419 1169.992065 1171.676514 1172.343018 1172.680298 1172.550781 1171.21106 1170.770752 1171.395264 1173.374878 1175.939087 1178.045044 1179.859619 1181.449585 1183.499146 1188.574341 1191.917725 1193.872803 1200.630737 1208.539551 1213.177124 1216.768433 1219.640747 1223.897217 1227.755615 1231.276978 1234.079468 1238.019287 1244.853027 1246.616211 1252.397705 1256.202881 1255.915527 1254.651001 1256.899414 1269.009399 1275.053223 1284.15625 1298.12561 1312.732056 1319.385864 1318.545532 1313.688843 1309.138306 1303.645752 1300.257812 1296.989136 1294.13147 1289.828125 1285.52417 1281.588257 1275.71521 1269.213501 1267.523682 1268.349976 1259.802246 1249.307007 1240.449463 1234.129272 1229.143555 1224.016235 1221.215576 1214.644897 1210.323486 1208.691284 1204.983521 1198.694336 1191.50354 1181.861206 1177.860718 1173.077515 1170.722778 1168.254761 1165.378174 1162.464844 1160.105103 1158.35144 1156.560303 1154.570801 1152.112915 1148.465332 1146.779663 1146.469238 1145.83252 1145.048584 1143.981689 1142.214966 1139.734741 1137.071289 1135.084717 1134.075562 1133.336792 1132.799927 1132.268799 1131.757935 1131.194092 1130.461792 1129.523315 1128.371338 1127.089478 1125.67627 1124.585815 1124.069946 1124.004883 1123.930054 1123.75354 1123.470459 1123.038452 1122.425537 1120.937866 1119.850464 1121.34668 1122.639038 1123.598755 1125.095825 1126.234253 1127.393921 1128.61438 1129.52417 1130.29541 1131.140015 1132.407837 1133.736206 1135.02063 1135.795288 1137.717285 1141.268066 1144.478027 1147.354614 1150.419067 1151.619873 1147.666138 1145.73999 1149.817383 1157.262817 1169.200439 1173.05835 1175.944702 1179.057007 1183.490845 1186.421631 1191.089355 1193.864258 1194.134399 1194.978516 1198.071411 1200.044678 1202.70752 1205.11438 1206.532227 1209.087891 1209.462036 1202.321899 1189.419678 1181.885498 1188.97937 1199.302612 1202.473267 1195.980103 1188.135376 1181.92981 1180.788574 1181.983521 1184.148926 1187.06189 1190.378296 1193.044922 1194.791138 1195.737549 1196.430298 1196.237183 1195.594727 1194.849243 1192.330811 1190.478394 1188.553345 1187.506592 1188.729492 1190.125244 1193.039429 1195.673096 1191.796997 1184.912231 1176.955688 1169.686768 1162.866089 1158.52063 1156.834717 1154.854858 1153.497803 1150.677368 1147.017822 1143.740845 1146.117065 1147.585449 1145.861938 1141.952515 1138.999023 1137.957153 1136.43811 1135.776489 1138.178589 1139.595093 1140.606934 1144.180298 1146.878052 1150.096313 1154.033081 1161.705444 1165.46106 1169.574341 1174.99707 1178.59729 1180.946045 1182.221558 1178.453735 1179.367432 1181.073486 1190.014282 1198.060913 1210.458862 1220.219604 1221.890869 1220.089478 1216.305908 1212.110718 1207.378296 1203.468506 1199.252197 1195.249878 1190.631958 1186.843384 1182.919678 1177.42688 1172.494629 1167.776978 1163.106079 1160.805786 1159.84021 1158.770508 1158.586792 1153.037231 1149.431763 1147.754883 1140.680054 1135.237793 1135.929565 1133.603271 1135.431641 1136.503662 1135.143677 1133.653564 1133.318604 1132.046387 1124.901855 1126.810547 1132.23291 1132.993408 1128.707397 1123.274048 1119.042725 1115.947144 1120.630737 1123.749512 1127.19043 1127.621582 1126.580688 1124.250488 1121.213501 1119.344604 1117.086914 1114.630371 1110.380859 1110.103149 1110.212769 1109.646484 1108.931274 1107.603271 1107.331543 1107.057373 1107.430054 1108.740845 1109.652588 1109.535034 1108.518066 1107.954224 1107.591797 1107.396362 1106.794434 1105.436646 1104.036865 1102.776123 1101.616211 1100.936035 1100.397217 1100.304077 1100.036377 1099.6073 1099.134033 1098.360718 1097.91626 1096.015015 1096.253662 1097.865601 1098.732422 1098.943115 1097.624268 1091.217896 1085.203857 1089.079712 1093.773682 1097.21875 1100.507446 1105.548828 1104.38208 1103.791138 1101.629272 1094.281982 1092.363647 1091.020996 1088.91272 1087.122437 1084.238647 1081.349487 1079.604736 1079.259644 1079.209717 1078.407349 1075.894653 1073.116821 1073.227051 1072.65918 1073.053833 1073.933105 1074.896851 1075.490356 1075.392334 1074.409424 1072.259888 1072.596069 1069.194336 1072.074951 1072.939819 1073.213257 1073.906494 1074.100342 1074.001587 1073.181274 1070.427368 1068.688232 +1125.748657 1121.414185 1119.855225 1118.456665 1115.30542 1111.599731 1108.636841 1110.314087 1111.342285 1112.196777 1113.468506 1115.182495 1117.15332 1119.252319 1121.001953 1122.266235 1123.349243 1124.059448 1124.645142 1125.207642 1125.691528 1126.005737 1126.115845 1126.032959 1125.887939 1125.447632 1124.866333 1124.231323 1123.423462 1122.540527 1122.117065 1122.092651 1122.768921 1123.667236 1124.312378 1125.176636 1126.158081 1127.210693 1128.224976 1129.210327 1130.064697 1130.857178 1131.540894 1132.074829 1132.506104 1132.855957 1133.324097 1134.359375 1136.113647 1137.811646 1140.984375 1145.267944 1147.279297 1149.116699 1151.776489 1157.355835 1155.649658 1152.213623 1146.869629 1149.305664 1153.557251 1157.69043 1158.730103 1159.94397 1161.051392 1162.222046 1163.623169 1165.219604 1166.825195 1168.482422 1169.79126 1171.191528 1176.854736 1181.348022 1187.381958 1189.9198 1189.633911 1187.891968 1187.911011 1188.551514 1190.022583 1188.943359 1187.102417 1185.887329 1184.55188 1179.650513 1178.362061 1181.088013 1183.960449 1186.727539 1187.374512 1187.219971 1186.299072 1184.948242 1183.68811 1182.987671 1181.842896 1180.237061 1178.96875 1177.906982 1177.014526 1176.211548 1175.342163 1174.507812 1173.690796 1173.111572 1172.355347 1171.310669 1171.232544 1170.62915 1169.416138 1171.017334 1175.879272 1178.858521 1182.186646 1184.956787 1184.129395 1187.092896 1189.754028 1192.795166 1195.539551 1192.666504 1190.711182 1189.376953 1188.67627 1188.564209 1188.813599 1189.219727 1189.987671 1190.907959 1191.911499 1193.060669 1194.356323 1195.161255 1198.121094 1200.586548 1201.410645 1201.490845 1198.03125 1194.955322 1194.265137 1192.890015 1191.327881 1190.025146 1188.943237 1188.358398 1187.973999 1188.151367 1190.007202 1194.701416 1195.189819 1194.168091 1191.764771 1189.105347 1187.226074 1185.86853 1184.927856 1184.177368 1183.128296 1182.190186 1180.932251 1179.870605 1179.059692 1180.851929 1182.674805 1183.338257 1183.516357 1183.812378 1184.108521 1184.305298 1184.436523 1184.503784 1184.426392 1184.394043 1184.41687 1184.238159 1184.360229 1184.285278 1184.379272 1184.486084 1184.5 1184.577393 1184.373901 1184.222168 1183.988037 1183.740723 1183.506714 1183.293823 1182.852783 1183.240723 1183.452271 1183.347778 1183.317627 1183.280273 1183.240356 1183.021851 1181.265747 1179.788696 1180.357056 1181.105713 1181.542725 1181.73291 1181.834106 1181.925171 1182.269409 1182.707275 1183.220459 1183.636108 1183.824585 1183.777954 1183.255493 1182.611206 1182.450806 1182.23877 1182.008301 1181.718994 1181.308838 1181.010742 1180.667358 1180.300537 1179.765869 1179.120605 1178.464478 1177.962769 1177.577881 1177.461304 1177.294922 1176.994263 1176.60498 1176.193115 1175.733643 1175.376221 1175.107178 1174.782715 1174.42627 1174.080444 1173.755127 1173.738159 1173.668457 1173.539307 1173.331543 1173.140869 1172.757568 1172.480835 1171.985474 1171.610352 1171.11145 1170.563965 1169.747681 1168.869507 1167.904907 1166.977173 1166.147339 1165.09375 1164.398926 1163.666382 1163.102783 1162.6698 1162.318481 1162.03833 1161.724121 1161.959839 1167.049805 1170.455811 1172.110474 1172.968018 1173.302734 1173.226929 1171.615234 1170.867798 1173.181763 1175.980347 1178.046509 1179.679932 1181.352051 1183.594849 1188.661499 1192.813843 1196.004272 1206.547119 1220.140747 1222.176758 1221.812012 1221.8927 1223.21936 1224.621216 1227.140991 1229.163208 1230.470337 1236.118652 1240.409668 1243.947632 1248.717896 1251.388184 1253.955811 1260.697754 1269.706299 1275.003906 1282.705444 1295.657959 1308.140503 1318.692993 1317.55127 1311.51062 1306.361206 1301.926758 1297.397217 1294.187622 1290.758789 1285.787598 1282.921387 1279.705933 1275.365479 1270.176392 1261.084595 1253.817871 1251.992065 1245.83252 1235.914429 1229.998047 1225.197998 1221.234741 1219.645142 1214.966919 1210.622925 1209.797241 1206.176758 1199.787964 1193.866089 1186.135986 1180.243652 1175.043579 1171.458862 1168.69751 1165.973633 1163.312256 1161.278198 1159.136719 1157.203857 1154.597412 1151.705811 1149.193115 1147.76123 1147.106445 1146.782104 1144.484131 1142.398438 1140.233643 1137.5354 1134.454102 1134.062744 1133.674805 1133.248291 1132.858032 1132.342285 1131.865479 1131.325928 1130.767334 1129.985474 1128.971191 1127.792969 1126.648682 1125.683105 1124.730835 1124.438354 1124.123413 1123.765991 1123.459839 1122.900879 1122.450317 1120.713379 1120.185425 1122.202393 1123.581299 1124.605469 1125.974487 1127.365967 1128.712524 1129.887573 1130.837402 1131.337036 1131.961426 1132.973389 1134.514648 1136.529907 1137.86853 1139.985718 1142.884277 1146.484863 1150.956909 1154.966064 1159.283447 1160.463135 1156.905396 1153.906738 1155.106445 1159.252319 1170.764282 1178.057251 1183.750488 1189.002808 1195.574707 1196.716309 1198.892822 1200.737061 1203.170166 1207.205811 1209.182983 1209.853027 1209.608643 1209.914551 1209.881104 1209.335205 1201.532227 1191.803955 1184.91626 1183.136353 1191.574097 1193.89209 1191.861694 1186.099365 1183.522583 1185.391602 1189.934448 1194.039551 1198.093506 1201.745483 1204.661011 1206.731323 1206.697388 1206.711304 1206.864258 1207.329712 1207.648682 1205.325073 1200.863403 1196.155396 1193.450562 1192.805298 1191.953247 1193.592651 1196.175781 1197.064697 1194.072144 1186.846069 1181.072266 1176.050049 1170.007202 1163.574219 1158.279419 1156.794189 1154.376709 1150.992065 1147.853516 1145.789551 1147.503296 1148.698608 1146.020508 1143.123535 1141.867798 1141.072998 1138.535034 1137.447388 1137.869141 1138.691528 1141.348755 1144.872437 1147.606445 1151.538818 1157.298096 1161.142212 1166.338013 1170.617188 1173.118896 1172.679565 1170.162842 1171.193604 1184.923828 1198.318237 1204.663574 1210.699707 1216.448486 1221.749756 1221.992798 1220.173462 1216.759888 1212.213745 1208.774414 1201.170532 1194.421265 1189.903564 1185.905762 1181.998657 1177.677856 1174.856812 1171.150513 1166.447876 1161.047729 1159.071777 1158.541016 1157.657593 1155.236938 1151.168945 1148.115356 1146.982788 1138.200928 1132.611206 1133.005859 1132.677124 1132.141357 1131.895386 1131.896362 1132.078247 1132.437744 1133.143677 1134.907959 1135.394287 1136.033813 1135.669067 1130.582397 1123.617065 1118.205811 1117.653687 1123.648926 1129.237793 1132.582275 1131.006836 1128.703369 1126.06897 1124.056641 1121.97583 1119.228516 1117.25708 1116.014648 1114.993652 1114.406982 1113.246216 1110.839111 1109.775391 1109.737183 1109.295288 1109.370361 1111.121338 1112.297485 1111.794189 1110.566528 1109.648926 1109.223022 1109.114746 1108.897461 1107.219849 1105.703369 1104.408691 1103.462158 1102.693115 1102.0 1101.104858 1100.206665 1099.255737 1098.170166 1097.561401 1097.005615 1096.747925 1096.77771 1097.470581 1098.562622 1099.011108 1098.29248 1092.815796 1089.809814 1092.873779 1098.824585 1105.054932 1111.53064 1115.75647 1126.480103 1122.028809 1109.631836 1100.321289 1098.814941 1097.259644 1092.900269 1089.338013 1086.262085 1083.602417 1081.808838 1081.74939 1082.971313 1083.846924 1079.383423 1074.990845 1074.201782 1074.762329 1075.123901 1075.619629 1076.424561 1076.850952 1076.600464 1075.714966 1075.135986 1075.312988 1074.022583 1068.052734 1069.142578 1067.71521 1071.39624 1073.521851 1073.879639 1073.074707 1068.856201 1066.938843 +1126.993896 1121.998291 1122.158813 1120.745728 1117.50769 1113.530396 1110.627686 1109.152344 1110.414673 1111.15979 1112.732178 1114.735107 1116.907959 1118.954956 1120.848999 1122.077026 1123.059204 1123.923218 1124.584839 1125.251709 1125.815308 1126.330933 1126.608398 1126.629883 1126.55896 1126.259277 1125.766968 1125.188477 1124.443604 1123.637939 1122.307739 1122.081909 1122.363892 1123.097046 1123.925049 1124.736084 1125.843872 1126.955322 1127.918701 1128.9198 1129.801025 1130.713745 1131.522949 1132.226929 1132.781616 1133.282349 1133.585571 1133.783813 1134.228882 1136.33728 1139.671143 1144.718994 1146.952515 1147.998047 1149.676025 1150.543457 1150.133789 1147.506348 1145.944214 1149.001587 1153.663086 1158.434082 1159.72937 1160.489258 1161.472046 1162.561279 1163.849365 1165.280151 1166.745728 1167.910278 1169.105225 1170.816406 1175.134521 1179.245117 1183.116699 1185.544922 1185.586426 1183.491089 1181.903198 1182.039062 1185.852295 1186.600586 1185.654785 1184.91687 1183.580078 1179.162598 1176.109253 1178.577026 1181.391479 1183.128174 1183.851318 1183.398438 1182.55896 1181.883179 1181.202759 1180.290039 1179.357056 1177.98999 1176.5896 1175.357544 1174.381958 1174.159668 1173.730103 1172.92981 1171.451782 1171.232422 1170.57605 1169.365112 1168.720825 1169.225342 1172.824829 1178.964966 1183.529175 1184.952393 1184.080444 1188.150513 1191.756958 1194.847168 1195.457642 1195.305664 1199.787354 1195.949463 1195.360352 1193.945801 1192.901855 1191.18396 1190.679688 1190.651855 1190.942871 1191.383545 1191.895264 1192.495239 1192.942871 1193.118286 1193.581665 1194.19519 1195.009644 1194.989258 1196.277222 1195.018188 1193.709839 1192.314209 1190.894775 1189.489746 1188.161621 1186.955078 1185.510864 1183.723267 1184.896851 1190.098022 1190.588013 1190.020752 1188.131348 1185.658203 1183.110962 1182.782104 1182.551392 1182.20459 1181.624756 1180.809204 1180.026489 1179.231812 1181.616455 1183.442871 1183.575928 1183.79126 1183.953247 1184.237061 1184.430054 1184.644043 1184.810669 1184.830933 1184.818115 1184.9552 1184.893921 1184.815063 1184.84314 1184.961548 1184.866211 1184.770752 1184.862915 1184.869751 1184.749878 1184.478394 1184.278076 1184.109497 1183.871948 1183.571411 1183.388916 1183.626831 1183.848633 1183.71582 1183.695923 1183.800781 1183.786255 1183.667847 1183.47522 1180.285034 1180.658691 1182.47229 1182.681885 1182.2771 1182.069458 1182.218384 1182.520996 1182.931152 1183.29187 1183.966675 1184.120972 1184.009399 1183.401123 1183.103027 1182.934692 1182.795044 1182.519043 1182.062622 1181.715088 1181.272217 1180.833008 1180.560181 1180.103516 1179.530884 1178.873291 1178.416626 1178.043823 1177.862305 1177.607666 1177.316406 1176.908081 1176.515015 1176.181763 1175.973145 1175.636963 1175.282593 1174.884033 1174.557495 1174.150879 1174.078247 1173.979736 1173.795776 1173.598389 1173.246704 1172.7948 1172.378906 1171.910522 1171.344849 1170.888306 1170.413818 1169.75 1168.944702 1168.204468 1167.249268 1166.409546 1165.537964 1164.821289 1164.145264 1163.542236 1163.245483 1162.848633 1162.488281 1162.208984 1161.915039 1164.875366 1168.869751 1171.190552 1172.434082 1173.577637 1174.449585 1174.765625 1174.670776 1175.695312 1177.506348 1178.795898 1180.041992 1181.716431 1184.002319 1190.906128 1196.981812 1199.415771 1207.418579 1220.451294 1222.346802 1222.695679 1221.509155 1221.29541 1221.136963 1220.838501 1225.193115 1228.665649 1232.212891 1238.557495 1243.672241 1246.325684 1247.560181 1254.652466 1261.58374 1269.442505 1273.772705 1278.788818 1291.771973 1300.471313 1311.83667 1313.608887 1307.215576 1303.70459 1298.834961 1293.275391 1290.060669 1284.592407 1280.707031 1279.254272 1277.505859 1274.546753 1271.851196 1269.748535 1256.503784 1243.012451 1236.108154 1228.142944 1220.797241 1218.070068 1212.988281 1212.116699 1208.526123 1205.766602 1204.630371 1203.234985 1200.512207 1197.566406 1190.785645 1181.443481 1174.942505 1170.495361 1168.8125 1166.546997 1164.164307 1161.531616 1159.023315 1156.969849 1154.407349 1150.802856 1147.39502 1146.953247 1146.386963 1145.994507 1144.074219 1141.73999 1139.180786 1135.793945 1134.380615 1133.905273 1133.749756 1133.474121 1132.977417 1132.581299 1132.250244 1131.86792 1131.440552 1130.667725 1129.675781 1128.447266 1127.236816 1126.109253 1125.185303 1124.688232 1124.182251 1123.647339 1123.148682 1122.753784 1122.105225 1121.844116 1122.307861 1121.565063 1123.53125 1125.001709 1126.752686 1128.52478 1130.087524 1131.377197 1132.353271 1132.704346 1132.803589 1133.199951 1134.547485 1136.908203 1138.901367 1141.478027 1144.159058 1147.614624 1153.623047 1159.682617 1163.240356 1167.190308 1169.186401 1167.493408 1158.830566 1156.172607 1159.550903 1168.686157 1181.023315 1186.589478 1193.928467 1198.126953 1200.153076 1207.396484 1209.697876 1209.255127 1209.695312 1207.335571 1205.498169 1205.89563 1205.028198 1203.161865 1197.465942 1192.087402 1189.549072 1190.6073 1191.951172 1192.457764 1191.76001 1189.725708 1188.984497 1193.921387 1198.903198 1204.001709 1209.126099 1213.328491 1216.381104 1217.483032 1217.594849 1217.674438 1217.790771 1218.059692 1218.144531 1217.250366 1213.633911 1208.331055 1202.490723 1195.436401 1193.889893 1193.608154 1195.025635 1198.722656 1199.685181 1197.51062 1191.709717 1188.129761 1184.962769 1177.584229 1171.300537 1162.61377 1158.306396 1156.019653 1153.14209 1150.072632 1148.119263 1150.07959 1148.059692 1144.969116 1145.671631 1147.158203 1144.94397 1142.118286 1140.908203 1139.841309 1141.456787 1144.070923 1146.687012 1149.966553 1155.628052 1159.265503 1162.785645 1165.210815 1164.731445 1164.483643 1171.852905 1179.900513 1191.647705 1200.365723 1208.182251 1213.167969 1218.88623 1222.428833 1222.039307 1220.630005 1216.477295 1211.163574 1206.136475 1201.153931 1194.413452 1183.794434 1183.421387 1178.997925 1171.14209 1169.640869 1167.596436 1160.779663 1157.992676 1157.967529 1156.234863 1147.213013 1146.137573 1146.341187 1146.394775 1145.507935 1141.477051 1138.8573 1140.234009 1140.978882 1139.425537 1137.316162 1136.439209 1137.741333 1136.18457 1135.335938 1134.911499 1135.5979 1135.045166 1134.084106 1129.856445 1123.781128 1118.431641 1118.607178 1124.57605 1132.476929 1135.519165 1133.249146 1130.849731 1127.903809 1124.597656 1121.756958 1119.835449 1119.716431 1121.50061 1121.500732 1120.47522 1117.561401 1115.054565 1112.868408 1112.478516 1110.288574 1111.370605 1114.070557 1114.829712 1114.150635 1112.77771 1111.944214 1111.442383 1110.975952 1110.372559 1108.85144 1107.090088 1105.968262 1105.160889 1104.392456 1103.379761 1101.845947 1099.360474 1097.944702 1097.746216 1097.72583 1097.623047 1098.174316 1097.783813 1097.630371 1098.601562 1099.003174 1098.131104 1095.486084 1093.982544 1096.248657 1101.922119 1110.171387 1118.281128 1127.77771 1137.245117 1131.2229 1122.102661 1109.835938 1105.410645 1100.520386 1095.74231 1091.226929 1087.431763 1084.818726 1083.764648 1083.325195 1085.089233 1086.380737 1083.431641 1079.675781 1077.456421 1076.939941 1077.040649 1077.457397 1077.938354 1078.226685 1078.206055 1077.911255 1077.478149 1076.82605 1074.824463 1071.152222 1068.251953 1069.338623 1066.859131 1068.631226 1068.804199 1066.922607 1066.022461 1065.675049 +1130.651367 1128.706055 1126.926758 1123.192871 1119.737305 1117.570923 1115.201172 1113.016724 1110.324097 1110.137085 1112.029297 1114.265625 1116.550781 1118.584595 1120.328735 1121.490112 1122.30249 1123.48645 1124.232788 1124.940674 1125.716919 1126.342407 1126.763916 1127.147583 1127.142578 1127.087524 1126.738403 1126.249268 1125.52771 1124.564941 1123.22229 1122.204102 1122.085205 1122.367065 1123.205566 1124.420288 1125.782104 1126.95874 1128.031128 1129.017212 1129.999146 1130.982422 1131.889648 1132.876343 1133.686157 1134.386841 1134.16394 1134.188843 1134.046997 1134.331299 1136.321045 1140.754639 1144.94873 1146.077881 1146.227539 1146.300903 1146.082764 1145.790527 1145.77356 1148.020874 1152.624512 1157.51416 1159.283813 1160.294922 1161.467163 1162.655151 1163.863281 1165.164062 1166.331787 1167.59021 1168.913208 1170.543335 1173.03833 1176.213867 1179.486572 1181.626709 1181.462402 1180.152832 1179.208984 1180.215698 1183.167236 1184.477783 1184.430542 1183.544189 1181.224365 1177.316162 1174.746704 1175.880249 1178.435547 1180.489868 1181.259033 1181.155029 1180.584961 1179.758179 1178.862427 1177.785278 1176.64563 1175.6073 1174.461426 1172.778687 1171.545654 1172.350586 1172.17981 1171.449707 1169.829102 1168.627197 1167.635986 1168.695923 1171.149048 1173.323486 1177.864014 1183.977905 1187.766357 1191.248413 1191.432495 1192.008789 1195.892334 1201.809204 1205.209961 1207.235474 1206.565918 1204.936523 1200.768433 1197.687988 1195.334961 1193.766846 1192.703003 1192.333252 1192.192627 1192.217529 1192.298218 1192.337036 1192.396484 1192.405762 1192.581055 1193.139404 1193.749023 1194.387939 1194.522705 1193.962524 1192.969238 1191.66272 1190.308716 1188.894165 1187.538208 1186.250488 1184.721924 1183.608521 1182.86499 1184.892212 1186.147827 1186.119141 1184.743774 1183.057007 1182.128174 1181.881958 1181.802368 1181.064575 1180.61438 1180.10144 1179.682129 1182.334229 1183.433105 1183.755615 1184.044067 1184.252686 1184.443237 1184.64209 1184.802734 1184.961792 1185.114136 1185.118042 1185.323242 1185.380371 1185.367798 1185.343018 1185.348755 1185.400635 1185.325562 1185.253296 1185.166504 1185.165771 1185.047363 1184.878052 1184.679443 1184.470703 1184.201904 1184.061768 1183.869629 1184.056885 1184.08313 1184.047852 1183.989014 1184.002441 1184.018799 1184.035645 1183.897583 1181.755493 1181.700073 1183.418579 1183.224731 1182.536987 1182.408203 1182.557129 1183.016724 1183.293335 1184.044556 1184.363037 1184.423584 1184.37439 1183.944946 1183.610596 1183.464966 1183.328613 1182.928955 1182.508667 1182.068237 1181.667847 1181.255127 1180.878418 1180.435303 1179.921753 1179.274536 1178.826172 1178.575317 1178.368286 1177.964478 1177.649658 1177.225098 1176.934082 1176.757446 1176.479248 1176.053833 1175.73584 1175.338135 1174.841064 1174.589722 1174.420898 1174.184692 1173.968994 1173.666504 1173.213623 1172.775635 1172.13855 1171.536865 1170.981445 1170.390625 1170.117065 1169.645508 1169.060669 1168.428711 1167.617188 1166.722778 1165.960449 1165.225708 1164.717896 1164.129272 1163.754517 1163.291992 1162.970581 1162.652832 1162.39917 1164.185425 1167.47644 1169.911255 1171.264038 1172.973755 1175.663574 1178.031738 1179.743164 1179.695801 1179.464478 1179.901123 1180.648193 1181.317383 1182.63623 1188.049072 1194.459595 1195.619263 1204.867432 1213.766357 1220.88562 1220.449341 1215.062378 1213.502563 1216.668579 1219.44043 1223.145752 1226.798706 1230.333252 1237.281616 1244.470947 1242.393921 1246.869263 1253.703369 1260.331909 1267.754639 1272.194824 1277.638184 1285.550049 1293.611572 1303.448975 1306.216675 1303.222534 1300.202515 1295.531738 1290.791138 1286.561401 1280.666992 1279.275024 1277.796753 1275.953857 1273.904785 1272.122925 1269.813354 1259.212769 1249.155151 1240.389771 1229.143188 1219.223267 1207.052002 1205.73938 1205.052124 1202.700562 1199.735596 1195.481445 1196.390381 1197.483521 1197.953613 1193.557861 1183.424561 1177.857178 1172.317383 1170.150269 1168.233887 1164.957764 1161.811035 1159.019897 1157.048828 1154.485596 1150.822388 1147.600342 1147.074951 1146.647827 1145.443481 1144.065308 1141.877563 1139.251953 1136.649902 1135.296265 1134.778687 1134.42334 1133.932251 1133.24939 1132.965942 1132.697021 1132.735107 1132.610596 1131.763916 1130.419312 1128.899414 1127.488159 1126.189819 1125.350464 1124.792358 1124.248291 1123.57373 1122.85498 1122.538696 1121.912354 1123.284424 1123.351807 1121.91333 1122.971802 1125.150391 1127.647827 1129.755127 1131.531128 1132.978394 1133.928833 1134.293213 1134.228516 1133.89978 1134.055542 1136.354736 1139.353271 1142.621216 1145.741699 1149.916748 1155.59082 1160.074585 1167.096924 1172.522827 1174.56604 1175.644287 1172.282593 1164.847168 1158.822266 1157.873413 1165.003296 1172.810669 1182.338135 1187.898071 1191.060303 1191.879883 1192.421631 1194.431641 1194.441162 1193.124878 1196.150879 1196.062134 1196.533447 1197.344727 1195.598755 1193.883057 1194.511108 1196.558716 1195.234375 1196.061523 1195.232178 1194.098999 1193.676392 1200.995972 1207.640259 1214.271118 1219.561035 1223.371704 1225.555054 1226.350708 1226.688965 1227.124023 1227.638428 1227.681641 1227.258545 1226.319702 1224.082886 1220.099365 1214.944946 1210.200073 1202.740723 1196.082642 1194.622314 1199.186035 1206.26001 1207.486938 1201.899048 1197.752197 1195.679443 1189.317383 1180.247437 1176.202271 1170.488281 1163.609863 1158.840088 1156.2948 1154.36145 1152.345581 1149.671753 1146.445312 1146.915894 1148.670288 1147.829834 1146.253906 1144.499756 1140.922729 1142.076538 1143.103027 1145.279053 1147.817871 1154.109985 1157.878418 1160.493408 1159.908081 1158.092896 1165.960205 1174.786621 1185.070557 1194.748169 1200.814453 1206.146729 1211.755249 1218.438721 1222.169556 1222.573486 1221.289917 1217.793823 1212.310425 1208.641235 1202.974731 1198.91272 1194.425537 1189.359375 1185.7229 1177.547974 1171.01123 1167.404419 1162.427856 1161.000244 1160.655518 1159.625122 1155.343384 1152.257324 1150.890015 1150.233398 1149.794678 1148.671997 1146.027344 1147.650635 1149.114868 1148.439087 1147.910522 1147.920166 1142.31604 1136.531006 1135.314331 1134.281494 1132.006348 1130.371216 1128.94873 1126.858154 1124.015503 1118.907959 1119.263916 1122.71814 1133.219727 1136.252075 1135.660034 1133.884155 1129.464478 1124.917114 1121.342529 1120.2771 1121.218628 1123.633789 1124.519531 1123.899658 1121.872925 1119.168579 1117.911743 1116.346313 1115.471802 1116.043579 1117.529541 1118.148682 1117.001953 1115.28479 1113.936035 1112.608765 1111.403687 1110.374146 1108.909912 1108.045898 1107.461548 1106.889648 1106.055786 1104.74939 1102.945801 1099.507812 1098.582153 1098.691895 1098.237061 1098.137939 1099.20166 1098.316284 1097.782837 1098.89502 1099.436768 1098.765259 1096.745483 1095.854126 1097.246826 1102.95874 1111.533813 1120.176025 1129.309082 1136.655029 1136.574707 1128.794312 1119.53479 1111.040771 1103.498535 1097.392822 1093.533081 1089.786743 1087.52832 1086.369873 1084.749634 1085.55603 1087.038452 1085.270264 1082.703979 1080.365479 1079.299316 1078.917969 1079.024536 1079.395874 1079.737671 1080.054321 1080.265259 1080.290161 1079.796509 1077.875244 1075.701172 1074.838989 1074.771973 1072.980347 1068.008057 1066.760498 1066.71875 1066.316772 1066.036865 +1134.073853 1136.03418 1132.899536 1123.183716 1121.51355 1121.785156 1120.768555 1119.310059 1115.081421 1110.948486 1111.616821 1113.975586 1116.196777 1118.149048 1119.765747 1120.951538 1121.809204 1122.489136 1123.438721 1124.196045 1125.234985 1126.120361 1126.940674 1127.54187 1127.796387 1127.847778 1127.679565 1127.360596 1126.776123 1125.767944 1124.624146 1123.005981 1122.830322 1122.139893 1122.299927 1124.539062 1126.188477 1127.330322 1128.424561 1129.421509 1130.377686 1131.428711 1132.388794 1133.3302 1134.361084 1134.750977 1134.88269 1135.756714 1136.574463 1135.868042 1134.268555 1137.596191 1142.942261 1144.611328 1145.087891 1145.220459 1145.495117 1145.597046 1145.493286 1146.335815 1150.514038 1155.362061 1157.845947 1159.69104 1161.101807 1162.501709 1163.616577 1164.736206 1165.745361 1166.935791 1168.393311 1170.012695 1171.35498 1173.529541 1175.264771 1177.2146 1177.937256 1177.091919 1174.186279 1173.172729 1178.139282 1181.424805 1182.289062 1180.762573 1178.306763 1175.107544 1173.394531 1174.108765 1175.830078 1177.60791 1178.577637 1178.751099 1178.486572 1177.7677 1176.627319 1175.496704 1174.283569 1173.179321 1172.349487 1171.100952 1169.6875 1170.526489 1170.436157 1169.083496 1167.125854 1167.151855 1169.110962 1171.810181 1174.649902 1177.935913 1181.161011 1185.214722 1191.620239 1196.540771 1196.907104 1194.320068 1201.362305 1209.995972 1213.929688 1214.880493 1213.048828 1210.627808 1206.340332 1201.451782 1197.647583 1195.127563 1194.526489 1194.745117 1194.127441 1193.4198 1192.838745 1192.547485 1192.396606 1192.396973 1192.390747 1192.716919 1193.077515 1193.40979 1193.551636 1193.123535 1192.341064 1191.1875 1189.832764 1188.515991 1187.233643 1186.031006 1184.677368 1183.713379 1183.033813 1182.75769 1182.96814 1182.945435 1182.471802 1181.863647 1181.519531 1181.194092 1180.764038 1180.348022 1180.053345 1180.489868 1183.105469 1183.571411 1183.884644 1184.191406 1184.418823 1184.646362 1184.84436 1185.041382 1185.194946 1185.261963 1185.416992 1185.671997 1185.726562 1185.804565 1185.918823 1185.701294 1185.800171 1185.826538 1185.823486 1185.758057 1185.625122 1185.465332 1185.373535 1185.218872 1185.043091 1184.802124 1184.681763 1184.491821 1184.277954 1184.27124 1184.256104 1184.169434 1184.100952 1184.031982 1184.129517 1183.237549 1182.046143 1181.569092 1183.329224 1183.609009 1183.216797 1182.954468 1182.869019 1182.807617 1183.276733 1183.866333 1184.45166 1184.737793 1184.865601 1184.806152 1184.501831 1184.135254 1183.974121 1183.666626 1183.302979 1182.809448 1182.362305 1181.930786 1181.579224 1181.216797 1180.794434 1180.224365 1179.714722 1179.279175 1179.022827 1178.644043 1178.352539 1177.928589 1177.549805 1177.339966 1177.093506 1176.875122 1176.520264 1176.090698 1175.62854 1175.182617 1174.905273 1174.63855 1174.36438 1174.117188 1173.62207 1173.10498 1172.600708 1171.882935 1171.252686 1170.640869 1170.300171 1170.006836 1169.640137 1169.178223 1168.671631 1168.064087 1167.217407 1166.47998 1165.771484 1165.251099 1164.700317 1164.197632 1163.782471 1163.393433 1163.069702 1162.818237 1164.302612 1166.348755 1168.773193 1170.30127 1172.388672 1176.574829 1180.664551 1183.424438 1183.498535 1182.706787 1181.523804 1181.310059 1181.59375 1182.181519 1183.554932 1189.796753 1194.809082 1201.495483 1205.891357 1214.877563 1208.575684 1205.994019 1209.568848 1218.014282 1218.862915 1222.102661 1224.969971 1229.916382 1234.856934 1233.457275 1238.079956 1242.783203 1249.277222 1256.415527 1263.348755 1269.6521 1276.644287 1283.582275 1289.193848 1294.255737 1298.171631 1301.539917 1297.281128 1292.863525 1290.040527 1286.67395 1283.344482 1280.560547 1278.686157 1276.122314 1272.744141 1270.538208 1268.647095 1260.299438 1250.154419 1241.095825 1230.835449 1218.796143 1212.022827 1205.707397 1200.151978 1195.891479 1194.781982 1189.907471 1182.222534 1185.769897 1191.009521 1191.331177 1186.696289 1182.147705 1176.549927 1172.821777 1169.69397 1165.776611 1162.279663 1159.214478 1157.430054 1155.13916 1152.225952 1150.07019 1148.711914 1146.652832 1145.846313 1144.611694 1142.230957 1139.757935 1137.824585 1136.699829 1136.104248 1135.351562 1134.335327 1133.586548 1133.377686 1133.651245 1134.190552 1134.184448 1132.901611 1130.990112 1129.170654 1127.453857 1126.163086 1125.225098 1124.832031 1124.335205 1123.667603 1122.947876 1122.450562 1122.908203 1123.862671 1123.526367 1122.496826 1122.036743 1125.395386 1128.820923 1131.394287 1132.985962 1134.494507 1136.072266 1137.035767 1137.476196 1136.374634 1135.007568 1134.69397 1140.039062 1143.74585 1146.741333 1152.98938 1159.133179 1164.502808 1169.817627 1172.902954 1178.108154 1180.207642 1180.366577 1175.465088 1169.34375 1162.424683 1160.658203 1166.453247 1171.339478 1175.949829 1178.063599 1177.820068 1181.667603 1181.746948 1181.777588 1184.797974 1192.438354 1193.872192 1195.212402 1196.927246 1199.587891 1197.797852 1198.663452 1200.853394 1201.670166 1202.698975 1203.566895 1205.786377 1203.914673 1208.998291 1217.371216 1224.207642 1229.216553 1231.750854 1234.013672 1235.815308 1237.010864 1238.280884 1238.62854 1238.590698 1236.931152 1235.30957 1232.571533 1229.511597 1225.299805 1220.753052 1214.502197 1208.128784 1203.024414 1202.442749 1204.949951 1208.194702 1214.058838 1209.783203 1203.662476 1198.825928 1193.054321 1186.114868 1183.11438 1176.734375 1169.420898 1162.157837 1158.078857 1155.893188 1152.484741 1148.843384 1147.567505 1149.772583 1149.802979 1148.923828 1147.766602 1146.322388 1142.205933 1142.812988 1143.676147 1146.10437 1151.264282 1154.941528 1157.05896 1157.290771 1160.114502 1166.932129 1173.30835 1180.669556 1190.633301 1197.251099 1203.977905 1209.474121 1209.544434 1216.276855 1222.318115 1221.779907 1218.692749 1213.550049 1209.245361 1204.447021 1199.702393 1195.507568 1190.439087 1185.522705 1179.359497 1171.90979 1169.008301 1166.524292 1164.282227 1162.539429 1161.358887 1160.939697 1159.567261 1157.955566 1156.073975 1154.2229 1152.226074 1150.514282 1149.565918 1149.352539 1148.554932 1145.710449 1140.364136 1134.786133 1132.78418 1130.620605 1127.510376 1124.416504 1124.037354 1123.623779 1122.412109 1120.830688 1118.141357 1122.203491 1130.019043 1132.894165 1137.465698 1137.614502 1135.078735 1131.024292 1125.376099 1121.546509 1121.098755 1122.128662 1125.156006 1126.991089 1126.273804 1122.932861 1122.382202 1122.095215 1120.774536 1120.195923 1120.562866 1121.904175 1121.628784 1120.069702 1117.792969 1115.282959 1113.222046 1111.434937 1109.860352 1109.168091 1109.246704 1109.269043 1108.636353 1107.615479 1106.203613 1104.619629 1103.143311 1102.17395 1101.265137 1099.932129 1099.61792 1099.903809 1098.72937 1097.751465 1099.512451 1100.356689 1099.49231 1097.703613 1096.213013 1097.082275 1102.556641 1108.88147 1117.452393 1125.941772 1134.047119 1137.008545 1131.835083 1122.015747 1112.823364 1104.030518 1097.641724 1095.024292 1093.086548 1090.869873 1089.052246 1086.822021 1087.299561 1087.776978 1085.935181 1084.032471 1082.031372 1080.864624 1080.484863 1080.49353 1080.903687 1081.348022 1081.840576 1082.349365 1083.641235 1083.891479 1081.859863 1079.557495 1078.075684 1077.045044 1075.459351 1072.673462 1069.697998 1069.056152 1068.997192 1068.814331 +1137.38501 1136.931641 1133.587891 1130.637329 1127.766724 1125.257446 1125.107422 1123.966675 1120.088501 1112.937744 1111.525635 1113.686768 1115.89502 1117.823364 1119.381592 1120.466675 1121.23938 1121.754272 1122.161255 1122.717407 1124.400024 1125.855713 1126.959595 1127.84314 1128.383911 1128.657104 1128.704712 1128.446899 1127.985474 1127.13501 1126.101685 1125.012695 1124.496094 1123.830444 1123.585083 1125.29248 1126.839844 1128.017212 1129.078125 1130.057739 1130.953003 1131.797974 1132.774292 1133.641846 1134.310425 1135.223145 1136.554688 1138.256348 1140.769287 1142.750488 1143.135986 1144.220581 1144.827026 1144.96936 1144.452026 1145.055664 1146.352417 1147.739868 1149.922852 1152.123779 1153.533813 1156.022949 1157.789795 1159.467163 1160.866089 1162.256226 1163.268921 1164.146973 1164.9646 1165.885498 1167.196533 1168.648682 1169.877686 1170.75708 1171.801025 1173.609131 1175.167358 1174.588501 1172.008301 1170.557495 1172.886963 1174.64917 1175.256592 1176.131836 1175.311768 1173.38147 1172.109497 1172.44873 1174.006104 1175.545776 1176.417725 1176.649414 1176.491211 1175.927612 1174.87854 1173.601685 1172.291626 1171.198975 1170.134033 1169.017456 1167.981323 1167.445312 1167.021851 1166.029175 1167.031982 1168.895508 1171.683838 1174.029907 1178.185059 1182.060791 1185.088745 1188.2229 1192.910278 1197.695801 1200.94873 1202.047729 1210.039551 1219.363037 1222.039429 1221.197998 1218.095093 1214.266724 1209.559692 1205.539917 1201.0448 1196.065918 1196.303711 1196.865967 1196.127441 1195.170166 1194.139771 1193.140747 1192.815918 1192.58374 1192.42749 1192.565186 1192.779419 1192.957275 1192.913208 1192.537476 1191.71521 1190.793213 1189.600952 1188.414795 1187.273315 1186.07312 1185.019043 1183.704956 1183.245728 1182.744751 1182.178101 1182.023804 1181.617188 1181.387085 1181.112305 1180.797974 1180.652466 1180.993896 1181.761108 1183.168091 1183.665161 1184.038208 1184.28833 1184.648682 1184.862915 1185.034302 1185.235718 1185.438721 1185.542114 1185.580933 1185.796021 1186.047485 1186.167603 1186.183838 1186.226562 1186.167114 1186.173584 1186.206177 1186.244507 1186.131104 1186.020752 1185.931519 1185.800293 1185.66748 1185.399902 1185.258545 1185.055542 1184.895508 1184.587891 1184.50354 1184.237061 1184.162598 1183.76062 1183.243408 1182.622192 1183.551514 1183.521851 1183.559326 1183.627686 1183.721191 1183.289062 1183.367676 1183.402832 1183.27002 1183.374756 1184.094971 1184.736084 1185.025513 1185.192383 1185.168823 1184.921021 1184.592163 1184.401123 1184.048828 1183.540161 1183.056763 1182.595947 1182.169189 1181.745728 1181.468628 1181.164673 1180.694702 1180.158325 1179.72644 1179.347412 1179.063354 1178.604736 1178.273926 1178.049683 1177.731689 1177.474487 1177.183716 1176.797729 1176.397827 1176.005371 1175.626587 1175.307129 1174.983398 1174.665771 1174.357544 1173.864624 1173.278687 1172.532104 1171.729614 1171.086304 1170.642334 1170.367432 1170.288574 1169.863892 1169.458008 1168.931274 1168.471558 1167.861694 1167.195557 1166.461548 1165.863037 1165.257812 1164.736816 1164.365356 1163.927612 1163.619263 1163.434326 1163.57373 1165.96582 1169.333008 1172.144165 1173.665894 1177.272827 1181.234497 1183.358276 1183.95874 1184.099731 1183.572144 1182.691895 1181.910278 1182.140137 1183.457275 1188.122925 1194.645142 1199.469849 1204.346924 1208.540649 1203.143555 1204.427246 1216.236816 1220.420532 1219.643799 1218.994995 1221.631958 1225.798462 1230.12561 1230.218994 1235.577759 1240.822266 1246.678589 1252.357178 1257.595459 1267.400635 1275.050415 1280.678833 1285.185913 1288.828857 1292.43396 1295.440063 1293.673828 1291.204102 1288.824341 1286.34436 1284.427856 1282.721313 1280.224854 1276.7052 1271.444214 1267.152344 1264.563721 1255.510864 1249.214233 1242.300781 1233.206665 1228.721924 1222.814453 1210.124146 1204.122925 1198.217041 1196.626831 1194.888306 1189.191406 1183.991089 1182.530151 1185.389404 1186.008545 1184.150146 1178.429321 1173.176147 1169.803345 1166.151978 1162.764038 1160.528931 1158.769775 1156.11084 1153.584351 1151.386108 1149.59021 1148.023193 1146.945801 1145.011719 1142.581177 1140.161621 1138.111206 1136.761475 1135.985107 1134.853638 1134.244385 1133.813721 1134.150757 1134.702515 1135.009277 1134.67041 1133.410156 1131.326172 1129.130615 1127.228027 1125.814819 1125.047119 1124.680908 1124.243164 1123.595337 1123.348389 1123.723145 1124.04126 1124.19397 1123.657715 1122.934814 1121.961548 1126.018921 1130.154541 1133.077026 1134.729126 1136.171021 1138.01001 1140.538452 1143.596069 1142.975708 1140.923096 1139.743286 1142.435425 1146.323364 1149.530762 1155.086914 1161.098022 1168.043457 1172.998413 1177.555664 1181.901978 1184.14563 1186.495239 1184.38208 1177.577393 1171.221436 1167.126343 1166.709106 1167.934937 1169.66626 1169.95166 1172.729736 1180.774536 1184.62915 1188.802124 1194.481689 1197.570435 1199.266357 1201.658447 1203.7854 1205.886963 1206.228638 1204.739868 1206.503662 1209.190308 1211.7771 1213.322876 1216.458008 1217.971313 1219.182983 1228.375244 1235.470703 1241.307129 1246.790283 1250.822266 1251.922852 1251.815186 1251.905518 1251.999634 1251.731689 1250.294312 1247.298706 1243.891968 1239.629883 1234.717407 1229.367188 1222.937012 1217.00061 1209.057373 1206.644531 1205.873291 1206.773315 1217.044067 1218.89563 1207.346436 1198.86853 1193.533936 1191.002563 1186.769165 1184.071289 1176.251587 1172.479248 1165.986328 1158.689819 1155.71582 1153.660889 1152.972412 1152.822632 1152.138184 1151.125488 1149.702148 1148.111084 1146.095581 1145.112305 1144.804688 1145.230469 1147.828491 1151.472168 1154.329956 1156.926392 1160.95166 1165.474976 1171.259644 1178.830322 1188.125122 1196.876587 1200.546875 1203.29895 1203.408325 1205.090576 1214.746582 1221.278442 1218.383179 1212.797485 1207.895996 1203.711548 1198.998779 1194.928833 1189.759277 1185.410278 1180.360474 1175.020386 1171.43396 1168.720215 1165.759277 1163.523926 1161.935547 1161.22168 1161.258179 1160.889648 1159.835083 1157.748901 1154.152832 1151.483887 1149.855957 1147.573486 1143.000854 1137.187134 1132.540039 1130.815674 1127.512451 1123.704468 1122.754395 1122.189453 1121.314941 1120.44165 1119.855469 1120.056885 1124.911743 1130.12561 1137.416382 1138.213379 1140.578857 1139.303589 1136.807739 1131.90979 1124.484375 1121.692261 1123.52771 1126.455811 1129.40686 1130.314697 1128.643188 1125.305054 1124.892212 1122.456909 1123.313477 1122.140137 1123.460571 1124.067505 1123.593628 1122.352051 1119.234253 1115.517334 1113.037109 1110.94397 1109.855591 1109.764038 1110.555664 1110.872192 1109.960327 1108.802734 1107.091797 1106.378906 1106.768311 1106.953369 1105.191406 1103.520996 1102.110596 1100.985474 1099.254517 1097.767822 1100.223755 1102.07666 1101.908691 1098.981934 1096.36145 1096.528076 1100.634521 1106.068237 1111.697021 1120.640137 1131.033325 1136.986328 1131.699829 1120.104492 1109.688354 1101.40625 1096.797363 1096.850952 1096.019287 1093.795044 1092.379395 1090.646606 1089.467651 1088.295776 1086.350464 1084.362915 1082.928711 1082.075073 1081.81311 1082.011353 1082.502075 1083.086182 1083.637817 1083.673096 1085.033081 1086.312256 1084.956299 1082.853638 1081.038452 1079.441772 1077.140991 1073.567017 1072.526611 1072.426514 1072.029785 1072.480835 +1140.93042 1139.491455 1136.786743 1136.194092 1134.831055 1131.741333 1128.650391 1126.01416 1121.882935 1112.917603 1112.192749 1113.955566 1115.895142 1117.753052 1119.28125 1120.310547 1121.145264 1121.967651 1122.211548 1122.685303 1124.318604 1126.033447 1127.282593 1128.238525 1129.004761 1129.577393 1129.717529 1129.682983 1129.356201 1128.686157 1127.953491 1127.139404 1126.514526 1126.067627 1125.944946 1126.583008 1127.602661 1128.717285 1129.633301 1130.517822 1131.3573 1132.157227 1132.906128 1133.764038 1134.294434 1136.100342 1137.725952 1140.100586 1144.08313 1147.510864 1148.198486 1150.629395 1156.427124 1155.463135 1149.519897 1146.646362 1148.891724 1152.176636 1157.22522 1160.647095 1159.529297 1158.678101 1158.285156 1159.591919 1161.130005 1162.049194 1162.824097 1163.417603 1164.003174 1164.546387 1165.607422 1167.01001 1168.268433 1168.938721 1170.039551 1172.270386 1173.623047 1173.293213 1171.78418 1170.21167 1170.214478 1170.380249 1171.535522 1173.168945 1173.474976 1172.880859 1171.625366 1171.304077 1173.210571 1174.363647 1175.055298 1175.239502 1174.979858 1174.623291 1173.765869 1172.226562 1170.298462 1168.692871 1167.510742 1166.450928 1165.817139 1165.1521 1165.737427 1167.215332 1169.304932 1170.619019 1173.373047 1176.345947 1180.987183 1184.728394 1186.996216 1189.971558 1193.840332 1198.943848 1204.968262 1208.879639 1215.280029 1227.109863 1227.804199 1225.166016 1222.32373 1218.36499 1213.979858 1209.657227 1205.234131 1201.519897 1199.573975 1199.111694 1198.164307 1196.730835 1195.136719 1193.984863 1193.487305 1193.150024 1192.930786 1192.876343 1192.928467 1192.867188 1192.714233 1192.219727 1191.541138 1190.634644 1189.697021 1188.588135 1187.494629 1186.4198 1185.356812 1184.430054 1183.869507 1183.130005 1182.217163 1181.554688 1181.180908 1181.005981 1180.99353 1181.996826 1182.827637 1183.040771 1183.191528 1183.652222 1184.080322 1184.416138 1184.739014 1185.10022 1185.33728 1185.385376 1185.556885 1185.717407 1185.854614 1186.054199 1186.249023 1186.362915 1186.553833 1186.613281 1186.567749 1186.56665 1186.548218 1186.492676 1186.555542 1186.426025 1186.356812 1186.234863 1186.071777 1185.899048 1185.683228 1185.549805 1185.30188 1185.054932 1184.814697 1184.505615 1184.224609 1183.868286 1183.400513 1182.730713 1183.632446 1183.993286 1184.082886 1184.077148 1183.963745 1183.917725 1183.963989 1183.950684 1183.743286 1183.799194 1184.02002 1184.481934 1184.995972 1185.328003 1185.411621 1185.396118 1185.223633 1184.926147 1184.586182 1184.240967 1183.801025 1183.298218 1182.864014 1182.471069 1182.069946 1181.831909 1181.581055 1181.156128 1180.570801 1180.218262 1179.817261 1179.379761 1179.047241 1178.723877 1178.415649 1178.098877 1177.90918 1177.546753 1177.248779 1176.830933 1176.431519 1176.091187 1175.783813 1175.44519 1175.096802 1174.721802 1174.208374 1173.61792 1172.898804 1171.956177 1171.163208 1171.080811 1171.088623 1170.916382 1170.437012 1169.858643 1169.473389 1169.084106 1168.519043 1167.876221 1167.226196 1166.535522 1165.90979 1165.396851 1164.871338 1164.397217 1164.161377 1163.944336 1163.753174 1165.789795 1169.119385 1171.343628 1174.455322 1177.515991 1181.013428 1183.372192 1184.023438 1184.248169 1184.465454 1183.775269 1182.685303 1182.291626 1182.612305 1185.802856 1192.138062 1197.131714 1199.541626 1199.821655 1194.902466 1201.0354 1207.520996 1209.86084 1209.449707 1213.256836 1218.350952 1220.124756 1222.385864 1229.031494 1233.883057 1238.658203 1244.069214 1249.434937 1257.22168 1267.57959 1273.553345 1278.45752 1283.625366 1286.324463 1288.801758 1290.143677 1290.35144 1288.218384 1286.762085 1285.175415 1283.901367 1282.739746 1281.298706 1277.581421 1272.985718 1271.004272 1269.683838 1260.554565 1253.876221 1248.275513 1244.550903 1236.643433 1228.172852 1216.459717 1207.448364 1202.91748 1200.151733 1198.335327 1195.731323 1185.54541 1181.515503 1181.243408 1182.397583 1181.663818 1177.271973 1172.376953 1169.331909 1166.244873 1163.028687 1160.864624 1159.055664 1156.710205 1154.296875 1152.072632 1150.168091 1148.425781 1146.567261 1144.79248 1142.614624 1140.465454 1137.580688 1135.320557 1134.594116 1134.164185 1133.995972 1134.081787 1134.674194 1135.338745 1135.251709 1134.70166 1133.323853 1131.03186 1128.858398 1126.816406 1125.469849 1124.91626 1124.474976 1124.10498 1124.288208 1125.058228 1125.640259 1125.897217 1125.203735 1123.934692 1122.529297 1122.400513 1127.359863 1131.655273 1134.253906 1136.821533 1138.753296 1140.54126 1143.534668 1147.016113 1148.08667 1147.034912 1146.218018 1144.593994 1147.483276 1151.964478 1156.319336 1159.375732 1167.961914 1172.649536 1179.574829 1185.454346 1189.672974 1192.020508 1190.386841 1185.174683 1178.830078 1173.308472 1169.281738 1169.0625 1172.550171 1175.424927 1179.526855 1185.766113 1190.511841 1196.057129 1201.852173 1206.513306 1207.387207 1208.203613 1212.264282 1214.97644 1213.694336 1211.043823 1215.681274 1221.134888 1223.71167 1224.730347 1230.115234 1231.145996 1229.505737 1237.739014 1248.530762 1259.234863 1265.380737 1265.719604 1264.330566 1263.639771 1263.36377 1263.215088 1262.996582 1262.459106 1260.879883 1257.749756 1251.32959 1243.596802 1237.873657 1230.75293 1224.784912 1219.446167 1215.456055 1211.527344 1207.216553 1214.397705 1214.139771 1207.981934 1202.632202 1198.392822 1195.69165 1189.479126 1182.105591 1179.074097 1175.485352 1173.228027 1164.955322 1158.55188 1156.53418 1156.823608 1156.575684 1154.987671 1153.236694 1151.365723 1149.67334 1147.993286 1146.512207 1145.574951 1146.356079 1146.811035 1148.336792 1152.780884 1156.185547 1159.706177 1164.988037 1171.172607 1178.963135 1187.064575 1193.758179 1196.383789 1196.842163 1195.862915 1198.036987 1204.562866 1209.562988 1212.405273 1211.27417 1206.66394 1202.685059 1196.934448 1192.514282 1185.785767 1182.464478 1178.488525 1174.804199 1171.855225 1168.865479 1165.694458 1163.164062 1160.884399 1159.69104 1160.140381 1159.91333 1160.11377 1156.49646 1152.365112 1149.963745 1146.812866 1142.172119 1135.511841 1132.61853 1130.248291 1127.77771 1124.542114 1126.004761 1128.137695 1128.339111 1126.459351 1125.61084 1125.227173 1124.276123 1131.358765 1137.232666 1144.296143 1146.16626 1144.180054 1140.403442 1136.473755 1130.055786 1122.318604 1123.240112 1129.188232 1133.698853 1134.47937 1133.977173 1131.853638 1129.790771 1127.829712 1126.442993 1126.229126 1125.803833 1125.374268 1124.622559 1123.866577 1122.458862 1118.038696 1113.519287 1111.041626 1109.854004 1109.856689 1111.333496 1112.087402 1112.087646 1111.132812 1109.156128 1107.865723 1107.854492 1108.914795 1110.194458 1108.340576 1105.910278 1104.05603 1102.627686 1100.836304 1099.089844 1101.55542 1104.313232 1107.040161 1105.986328 1099.445923 1096.727051 1100.321411 1104.85376 1108.551025 1118.491699 1130.178345 1137.075073 1132.010498 1123.846313 1114.762817 1107.366943 1101.475952 1102.018555 1100.139526 1096.915161 1095.53833 1093.712524 1091.437744 1088.790283 1086.396729 1084.471436 1083.357666 1082.873169 1082.743652 1083.379272 1084.233276 1084.691772 1085.279419 1085.635254 1085.5271 1087.093872 1086.654419 1085.40918 1083.284912 1081.989746 1081.482178 1079.654907 1078.283325 1076.328247 1075.246826 1075.368408 +1143.531006 1143.318726 1141.708618 1139.558838 1137.346436 1133.802002 1131.01416 1127.51355 1122.106445 1112.141602 1113.133301 1114.594482 1116.197021 1117.890015 1119.337402 1120.583984 1121.519653 1122.43689 1123.2323 1123.859863 1125.014648 1126.468628 1127.838501 1128.998413 1129.909424 1130.555786 1130.829712 1130.977905 1130.833496 1130.535645 1129.864868 1129.251709 1128.805664 1128.266479 1128.074829 1128.139648 1128.658936 1129.343872 1130.158813 1130.927002 1131.531616 1132.301636 1133.040527 1133.651367 1134.450684 1136.119751 1137.803223 1140.233032 1143.378784 1145.853638 1147.130005 1150.175171 1155.281738 1159.068237 1159.906616 1153.595947 1151.83667 1154.643188 1159.21875 1160.389648 1160.198853 1160.00647 1160.040527 1160.701172 1161.347656 1161.883789 1162.303467 1162.56665 1162.787476 1163.081665 1163.82019 1165.332397 1166.862305 1168.230835 1169.932983 1171.775879 1172.320801 1171.848389 1170.944946 1169.380371 1168.878418 1169.323853 1170.815796 1171.801758 1172.524292 1172.633057 1171.284668 1170.835449 1172.765137 1173.655762 1174.046997 1174.027954 1173.919312 1173.460815 1172.907104 1171.397217 1168.335449 1165.709839 1164.52356 1163.981079 1164.505371 1165.512085 1167.320435 1170.305298 1171.994263 1172.847412 1174.733643 1177.540161 1180.619995 1182.786621 1185.501343 1190.59021 1193.721069 1200.302979 1208.456299 1216.125854 1222.095215 1230.926025 1232.062134 1228.703003 1226.494019 1222.867188 1218.313477 1213.322754 1207.759644 1204.733276 1202.85498 1201.720093 1200.031372 1198.144897 1196.012817 1194.875366 1194.188965 1193.877686 1193.658325 1193.49707 1193.479004 1193.275513 1192.96228 1192.453491 1191.585693 1190.817627 1189.880615 1188.945435 1187.891846 1186.656616 1185.672119 1184.906616 1184.470703 1183.224365 1182.006104 1181.580811 1182.523315 1183.206787 1183.428589 1183.677124 1183.720581 1183.710083 1183.890015 1184.158936 1184.528931 1184.855835 1185.125122 1185.481079 1185.671021 1185.903076 1185.950562 1186.054932 1186.275757 1186.384521 1186.542358 1186.663574 1186.789917 1186.84314 1186.876099 1186.827148 1186.766602 1186.751343 1186.768433 1186.723389 1186.617432 1186.453979 1186.31958 1186.080566 1185.900757 1185.718628 1185.405518 1185.217651 1184.907593 1184.536011 1184.118774 1183.656006 1183.226074 1183.461304 1183.99646 1184.307739 1184.378784 1184.383789 1184.273315 1184.401123 1184.356934 1184.320679 1184.457642 1184.443604 1184.689697 1184.88147 1185.207397 1185.466919 1185.603638 1185.604248 1185.449829 1185.088013 1184.747803 1184.412354 1184.025635 1183.611084 1183.165649 1182.785278 1182.411377 1182.276245 1182.07251 1181.636353 1181.093384 1180.688599 1180.197754 1179.781128 1179.510132 1179.159302 1178.829346 1178.511963 1178.398804 1178.109497 1177.74939 1177.30603 1177.004028 1176.620117 1176.219971 1175.954834 1175.609619 1175.143677 1174.624146 1174.026733 1173.185425 1172.493896 1171.936768 1171.815918 1171.660278 1171.421753 1170.953979 1170.339478 1170.038818 1169.785767 1169.247925 1168.638184 1167.929077 1167.210205 1166.414185 1165.876953 1165.348511 1164.932983 1164.634033 1164.423706 1164.553467 1166.582886 1169.647095 1171.844238 1174.593994 1177.58667 1180.715942 1182.90564 1183.422852 1184.298218 1184.678223 1184.650391 1183.919189 1182.952637 1182.832397 1182.987549 1186.389648 1192.427246 1194.616943 1194.44751 1194.531006 1196.363159 1203.382568 1206.352051 1208.914673 1218.488037 1220.147705 1220.104858 1221.912476 1225.89563 1231.023438 1234.541748 1239.996948 1246.589233 1255.999756 1266.566162 1272.074707 1279.954468 1282.773926 1281.813599 1283.481689 1285.96167 1286.616577 1285.369629 1284.652344 1283.302124 1282.480225 1281.961914 1280.433716 1275.312866 1271.683716 1271.275635 1269.871216 1262.282227 1254.563477 1249.34314 1243.874268 1235.401489 1225.927979 1216.690918 1209.514282 1205.606934 1201.947998 1196.958496 1194.920654 1185.057251 1180.828857 1177.608032 1174.258301 1174.759277 1174.073975 1172.046875 1168.938721 1165.770386 1162.649292 1159.869141 1158.055054 1156.501709 1154.545898 1152.447388 1150.22522 1148.337769 1146.549561 1144.768921 1143.123901 1141.155762 1137.920898 1134.622559 1134.688232 1134.530762 1134.055298 1134.487183 1135.501709 1135.638916 1135.477295 1134.484741 1132.679688 1130.457397 1128.477905 1126.671265 1125.690186 1125.666382 1125.458374 1125.610596 1126.499023 1127.734497 1128.626343 1128.86084 1127.861328 1124.852905 1122.292725 1124.900635 1130.236572 1134.782959 1136.518311 1138.681396 1140.580078 1142.129639 1143.783691 1145.547241 1148.346558 1152.46936 1154.066895 1146.20459 1147.232788 1154.847046 1160.316895 1164.650513 1169.328369 1170.335938 1178.209106 1185.281006 1193.937622 1197.420776 1196.846558 1192.831177 1185.88208 1180.266602 1174.567749 1170.853149 1174.958008 1181.48938 1183.689453 1190.380371 1195.893555 1202.530762 1209.066406 1213.873779 1215.045288 1217.743774 1222.58374 1223.904297 1221.81897 1220.187378 1226.251953 1232.40625 1234.59314 1233.332886 1239.398315 1241.787964 1241.965576 1241.408569 1255.427856 1268.464966 1275.959473 1280.19751 1278.180664 1277.934692 1277.483276 1276.596313 1275.656494 1275.553101 1275.862061 1274.200317 1269.676392 1257.308228 1247.011597 1238.220459 1231.907959 1227.158203 1224.830322 1223.365234 1221.918823 1220.31543 1218.733154 1212.829468 1209.818481 1208.569702 1204.667847 1198.592407 1187.687866 1181.006714 1175.640869 1170.312134 1164.113403 1158.457764 1158.283081 1160.870605 1159.384399 1157.309814 1155.312134 1152.967163 1150.730103 1147.817993 1146.267212 1146.185547 1146.685547 1147.07251 1148.33728 1152.097412 1155.539551 1158.833984 1164.049194 1169.807251 1176.629517 1182.972778 1187.862671 1191.414673 1191.454834 1190.942993 1192.458862 1196.399902 1200.959473 1205.779297 1209.221802 1207.739502 1202.691895 1198.704224 1194.123413 1183.777588 1179.842896 1172.272583 1171.025757 1169.164551 1166.25293 1163.734375 1161.920288 1160.209839 1156.921143 1150.359741 1147.499268 1148.170532 1148.969971 1147.333252 1144.130737 1139.485718 1134.187988 1132.599243 1133.458008 1129.918213 1126.709595 1125.976562 1132.669556 1135.793823 1135.046143 1132.275391 1133.465698 1130.927979 1129.572754 1134.993408 1148.751465 1149.622559 1149.081055 1145.78833 1138.491455 1133.252686 1126.665161 1122.425537 1129.590576 1135.545898 1138.018921 1138.219727 1136.991333 1134.625366 1132.508423 1131.369629 1130.268433 1129.521484 1128.023438 1126.1698 1124.232788 1122.418579 1119.709717 1116.571655 1110.192627 1109.818359 1109.87854 1111.758789 1113.766357 1113.817261 1112.878662 1111.446289 1109.365845 1108.746338 1108.982056 1109.479736 1110.05127 1109.293823 1107.170166 1105.625366 1104.575317 1103.634399 1103.392578 1104.341675 1106.218018 1109.71228 1110.824829 1107.141968 1097.532593 1099.514282 1105.27771 1111.79248 1119.182373 1130.833252 1138.689697 1134.847656 1128.009155 1118.346924 1110.73938 1108.462524 1109.801514 1110.036011 1102.71521 1098.460205 1096.143555 1093.133179 1089.433472 1086.22937 1084.510376 1083.65918 1083.402466 1083.572998 1084.516846 1085.40686 1086.206055 1086.780151 1087.229126 1087.886475 1088.070923 1087.714478 1086.541382 1084.113281 1083.403809 1085.124146 1086.374756 1085.880249 1083.35144 1082.162109 1078.807495 +1146.104126 1146.643433 1145.674194 1142.751465 1139.738403 1135.573486 1134.567383 1129.729004 1122.060059 1112.624268 1114.009888 1115.112793 1116.544678 1117.99353 1119.527588 1120.900024 1121.921509 1122.886108 1123.706909 1124.766846 1125.920776 1127.254028 1128.702148 1129.864136 1130.810669 1131.556274 1132.052979 1132.34021 1132.498169 1132.34375 1132.044312 1131.497559 1131.014893 1130.411743 1129.871216 1129.779175 1129.821411 1130.213989 1130.691162 1131.140015 1131.751343 1132.309204 1132.807495 1133.440063 1134.205078 1135.337646 1136.996338 1139.276611 1141.722046 1143.81543 1144.953247 1145.701904 1147.183594 1151.532471 1154.768433 1154.21167 1153.844604 1156.116577 1158.638428 1159.843994 1160.368652 1160.373169 1160.624023 1160.878784 1161.268066 1161.476562 1161.64502 1161.707642 1161.495972 1161.080322 1161.668213 1163.330322 1165.37915 1167.583374 1169.724609 1171.420288 1170.724854 1170.130005 1169.354858 1168.312988 1168.360229 1168.827759 1170.115723 1171.150024 1172.27356 1172.406372 1171.249634 1169.470215 1172.249512 1172.99292 1173.184082 1173.070557 1172.935303 1172.71167 1171.977417 1169.842529 1164.502441 1163.049438 1163.736084 1164.763428 1165.561768 1166.679443 1168.588379 1170.902588 1172.76001 1174.098022 1176.098755 1178.882202 1181.471436 1183.024048 1186.46875 1192.362305 1196.398682 1207.826538 1215.094116 1227.877686 1231.879517 1229.959106 1232.062744 1232.12854 1231.860474 1229.901978 1223.378418 1218.289062 1211.815308 1207.5625 1206.220459 1204.645508 1202.444824 1199.277954 1196.325806 1195.058472 1195.162964 1195.101196 1194.509766 1194.287109 1194.317139 1194.262329 1193.789185 1192.931519 1192.041016 1191.120117 1190.191772 1189.138062 1188.072266 1186.902222 1185.980713 1185.13916 1184.461548 1183.012329 1181.843872 1183.012451 1183.388428 1183.545654 1183.797119 1184.026978 1184.112915 1184.36377 1184.441528 1184.761475 1184.943237 1185.188965 1185.47168 1185.806641 1186.0896 1186.2323 1186.393066 1186.40332 1186.57666 1186.64563 1186.785645 1186.949341 1187.073364 1187.05957 1187.046021 1187.004028 1186.960693 1186.917358 1186.846436 1186.779419 1186.784912 1186.566406 1186.415771 1186.203125 1185.915649 1185.702637 1185.431274 1185.213135 1184.953125 1184.547119 1184.230103 1183.770264 1183.564331 1183.886108 1184.23584 1184.537842 1184.693481 1184.656128 1184.682373 1184.776001 1184.759399 1184.859375 1184.996216 1185.084473 1185.281128 1185.355713 1185.483643 1185.629395 1185.759277 1185.759399 1185.599609 1185.283936 1184.922485 1184.582764 1184.164673 1183.753662 1183.357422 1183.076172 1182.875488 1182.796753 1182.538696 1182.139893 1181.605103 1181.129272 1180.647583 1180.218628 1179.882935 1179.512329 1179.285034 1178.928955 1178.736572 1178.495972 1178.186035 1177.890625 1177.596069 1177.092651 1176.807129 1176.443359 1176.091919 1175.60022 1175.032959 1174.3927 1173.766479 1173.189331 1172.689209 1172.360962 1172.121948 1171.777222 1171.277344 1170.832275 1170.842041 1170.59729 1170.057251 1169.232178 1168.434326 1167.625244 1167.005249 1166.456421 1165.888184 1165.378296 1165.090698 1164.867676 1166.060303 1167.778198 1170.334595 1172.41394 1174.353394 1177.134644 1179.695923 1181.63269 1182.676514 1183.086914 1184.456421 1184.957642 1185.46875 1185.61853 1185.516479 1184.020996 1182.781616 1188.161499 1192.111328 1193.642456 1195.99939 1198.178223 1204.161987 1208.554199 1211.659668 1216.427002 1218.189453 1217.132935 1218.744873 1220.302368 1225.544067 1229.471802 1236.309448 1242.838867 1251.753174 1258.391724 1267.7854 1278.366821 1278.554443 1276.777832 1278.300781 1280.411743 1282.452759 1283.143677 1283.265015 1280.758545 1279.574341 1278.187988 1273.899292 1269.155396 1267.244263 1267.601807 1267.205688 1261.046143 1254.608276 1249.128418 1243.058105 1234.521851 1225.138184 1218.733276 1213.515869 1209.040039 1204.194824 1196.712524 1189.644409 1182.724365 1178.067383 1174.717285 1170.923706 1170.17981 1170.216187 1169.76709 1167.671021 1165.020508 1162.153687 1159.188965 1158.4729 1157.167847 1155.150635 1152.782837 1150.238037 1147.959717 1147.017578 1145.362305 1144.457397 1142.771606 1139.912842 1136.979126 1135.685303 1134.695679 1134.484863 1135.544189 1136.082153 1135.931641 1135.332886 1134.147217 1132.14856 1129.92688 1128.221436 1126.791504 1126.1073 1126.741211 1127.30127 1128.084717 1129.357788 1131.233643 1132.330566 1132.581299 1131.975342 1127.511475 1123.218872 1125.095093 1132.061401 1136.509399 1139.184204 1141.772461 1142.980957 1143.821655 1145.875977 1146.990234 1149.267822 1154.985229 1159.660034 1150.48645 1146.070923 1156.038818 1163.415527 1169.208862 1173.910889 1178.023926 1181.695312 1182.617676 1191.846313 1197.421387 1199.695801 1199.592285 1193.496704 1186.894531 1181.487915 1179.067505 1179.344238 1185.483643 1192.769531 1197.277588 1201.862671 1208.25415 1215.900269 1221.205566 1222.47876 1223.902466 1228.748047 1231.901855 1228.974365 1230.289551 1235.626221 1240.427368 1241.704834 1242.657471 1249.621338 1255.045776 1255.834351 1254.089722 1253.532837 1263.385498 1273.411499 1281.229736 1282.290039 1282.79126 1284.464111 1288.040283 1291.081787 1291.119019 1289.365479 1286.171875 1281.610352 1271.940918 1260.259766 1253.806885 1243.259155 1231.590698 1231.920532 1232.599731 1233.348633 1232.611694 1226.169434 1220.785522 1219.202515 1215.890015 1210.512207 1201.326538 1191.330811 1183.064209 1173.98877 1171.460938 1163.237305 1165.35791 1167.070923 1165.241821 1162.406128 1159.769409 1157.538696 1155.171509 1152.251343 1149.414185 1147.695435 1146.631592 1146.377441 1147.534302 1149.034302 1151.915161 1155.317871 1158.686768 1163.091675 1167.806396 1173.033691 1178.790405 1183.38623 1186.500854 1187.36499 1184.590454 1185.702026 1189.813721 1193.069702 1194.640747 1200.226074 1202.346069 1200.016602 1197.648804 1194.240356 1187.656128 1181.936157 1174.287842 1170.29541 1162.978027 1159.526855 1160.330811 1160.154297 1159.353394 1154.407471 1146.802612 1144.817749 1144.36145 1141.333374 1136.868774 1134.01062 1132.796753 1133.124512 1137.357788 1136.700317 1132.280396 1126.344116 1133.312012 1139.303589 1142.556396 1141.425537 1139.552246 1139.285034 1134.989624 1131.888916 1133.90686 1147.520996 1150.869263 1149.994873 1144.766235 1135.061646 1131.702759 1129.94458 1130.524414 1136.361084 1140.942993 1142.372803 1141.75647 1140.055664 1137.521362 1135.307983 1134.480225 1133.934326 1132.207153 1129.393555 1125.689697 1122.376709 1121.316528 1121.383545 1119.716797 1115.18396 1111.27063 1111.548584 1116.31189 1117.501831 1115.567383 1113.213867 1110.32605 1109.420654 1109.816772 1110.473022 1110.418579 1109.951904 1110.025269 1108.372192 1107.068604 1106.450562 1105.774658 1105.794678 1106.764404 1108.254883 1110.584351 1113.612183 1113.180298 1105.301392 1102.065063 1107.205322 1111.507935 1118.291626 1128.445312 1140.424072 1145.400146 1135.761597 1125.095215 1123.418213 1114.461792 1113.976318 1113.229492 1110.078735 1103.342285 1098.550415 1094.853027 1090.568359 1086.692749 1084.8927 1084.057251 1083.928467 1084.212646 1085.584839 1086.894409 1087.757935 1088.337646 1089.021362 1089.62561 1089.51001 1088.841431 1087.342041 1085.008301 1085.28772 1086.539429 1087.937866 1087.480225 1086.891113 1086.187012 1082.833862 +1148.737915 1148.69873 1147.436401 1144.882935 1143.329224 1140.161621 1137.287598 1132.379639 1124.009644 1113.182373 1114.533691 1115.597778 1116.752686 1118.20459 1119.670776 1121.15271 1122.314941 1123.407349 1124.358887 1125.547119 1126.790405 1128.133789 1129.530518 1130.760986 1131.776001 1132.608765 1133.037598 1133.474609 1133.823975 1134.010986 1134.090698 1133.638062 1133.031982 1132.320312 1131.632568 1131.363037 1131.189453 1131.305176 1131.429565 1131.77002 1132.071167 1132.392578 1132.792603 1133.190186 1133.660034 1134.357788 1135.77771 1138.008423 1139.854614 1141.574219 1142.587158 1143.630249 1144.922974 1146.443604 1149.071045 1151.30542 1153.686523 1156.13916 1158.264526 1159.939575 1160.293701 1160.437988 1160.632324 1160.77002 1160.852539 1160.956177 1160.941772 1160.727173 1160.150269 1158.92627 1159.467041 1160.953491 1163.755859 1166.282593 1168.978027 1170.89978 1168.971802 1167.31604 1167.012207 1167.171143 1167.712891 1168.878052 1170.498657 1171.67334 1172.260498 1172.291016 1171.123779 1167.799072 1171.212402 1172.141357 1172.229126 1172.09314 1172.07373 1171.750366 1170.863403 1166.940674 1162.530151 1163.345459 1164.176392 1165.532959 1166.854736 1168.038818 1169.259277 1170.589844 1172.235718 1174.252563 1176.881836 1180.129272 1183.376465 1188.389404 1194.962646 1196.138306 1199.739746 1210.512207 1221.267456 1233.454224 1230.677002 1228.880249 1229.78772 1232.694092 1233.888672 1233.616821 1228.586914 1223.270142 1218.598755 1213.572876 1209.896362 1207.661865 1205.389648 1201.057129 1196.205811 1195.345947 1195.883057 1195.811768 1195.390381 1195.175049 1195.233276 1195.389893 1195.072144 1193.742065 1192.705688 1191.737915 1190.672729 1189.415161 1188.254883 1187.171875 1186.199463 1185.323853 1184.369629 1182.609863 1182.465332 1183.346558 1183.696411 1183.951294 1184.140259 1184.281006 1184.534424 1184.832397 1184.976074 1185.218506 1185.467285 1185.719604 1185.940918 1186.213867 1186.427856 1186.597534 1186.82605 1186.896606 1186.980347 1187.056152 1187.16687 1187.338013 1187.355225 1187.357056 1187.291382 1187.261475 1187.179688 1187.218384 1187.069336 1187.068359 1186.960205 1186.84082 1186.662231 1186.393188 1186.180908 1185.841797 1185.638916 1185.305176 1185.065063 1184.795654 1184.458984 1184.165039 1183.999146 1184.32312 1184.599365 1184.795654 1184.974609 1185.036743 1185.104858 1185.2052 1185.371338 1185.42041 1185.662231 1185.63562 1185.838623 1185.881104 1185.960083 1185.871948 1185.924683 1185.801636 1185.715332 1185.469482 1185.169312 1184.863159 1184.547607 1184.178101 1183.805054 1183.510376 1183.407593 1183.323486 1183.023804 1182.72522 1182.133179 1181.562012 1181.070923 1180.621704 1180.333008 1180.067139 1179.790649 1179.463257 1179.250122 1178.996948 1178.738281 1178.309692 1177.995361 1177.651489 1177.338013 1176.863159 1176.496704 1176.029907 1175.380859 1174.871094 1174.335571 1173.848877 1173.393066 1172.935913 1172.693726 1172.28894 1171.770996 1171.486572 1171.405884 1171.225952 1170.668823 1169.896606 1168.972534 1168.223267 1167.671143 1167.113525 1166.474121 1165.898071 1165.509644 1165.495728 1166.790894 1168.578003 1169.877075 1171.015503 1173.633057 1176.625244 1178.965942 1180.48584 1181.360718 1182.321777 1183.504028 1184.911499 1186.301147 1187.375244 1188.134644 1188.168701 1187.918701 1189.906494 1192.763916 1194.722534 1196.700562 1197.978271 1202.576294 1207.265015 1209.180908 1207.732544 1206.540039 1208.847046 1215.266846 1217.47168 1221.878052 1229.6073 1235.23877 1243.023438 1248.35437 1253.016479 1260.576538 1269.401855 1271.303223 1268.885132 1270.692383 1273.654053 1275.294067 1277.322144 1276.486816 1274.279785 1272.590454 1270.206543 1262.43335 1254.331543 1253.650879 1255.005005 1260.154541 1259.181641 1253.87439 1248.251343 1242.484863 1234.378784 1228.343262 1222.324951 1217.327148 1211.942017 1206.759155 1197.792725 1188.107666 1180.359497 1175.13501 1172.418945 1170.269897 1169.3302 1168.822266 1167.716064 1166.187744 1164.285767 1162.289429 1160.691406 1159.815186 1158.547485 1155.92627 1153.321289 1150.659546 1146.99707 1146.884155 1146.731689 1146.547729 1145.083374 1142.029541 1139.067749 1136.662598 1134.35791 1136.011719 1136.66333 1136.612793 1136.276611 1135.06189 1133.505737 1130.827393 1128.486816 1127.19519 1126.89209 1127.674194 1128.737671 1129.511841 1130.822388 1132.496338 1134.290894 1135.247925 1135.365967 1135.049194 1130.939575 1125.602539 1123.946899 1130.99646 1135.872803 1142.157349 1145.735718 1146.25061 1146.260254 1147.44165 1149.741943 1152.17749 1155.529907 1159.057373 1154.578369 1145.353271 1154.300537 1163.262695 1172.95752 1176.217163 1183.920532 1187.258667 1193.925781 1194.118286 1194.745972 1200.105347 1207.065186 1202.87561 1194.290161 1189.004272 1185.213623 1182.085693 1188.66333 1195.480469 1201.260376 1206.993164 1214.598145 1221.471436 1226.714966 1228.779785 1229.976562 1234.677612 1237.947144 1236.190186 1238.670288 1245.195923 1249.388428 1250.265991 1251.227051 1260.141968 1266.932007 1269.387817 1269.650513 1268.816406 1267.905396 1267.046143 1274.277344 1279.938965 1283.183838 1286.008545 1291.069458 1293.912109 1294.054443 1294.452759 1293.480713 1288.081299 1281.39978 1274.144531 1266.735107 1255.168823 1244.743896 1246.11438 1245.509277 1244.001587 1238.174072 1231.935059 1229.432251 1225.53186 1220.847778 1210.630249 1196.376709 1189.253906 1181.424194 1172.738037 1170.490601 1171.303955 1176.564575 1178.90918 1169.571411 1165.93335 1161.573242 1159.031982 1156.664795 1154.005249 1151.795288 1150.009766 1148.873413 1148.114624 1148.962402 1149.566406 1151.991455 1154.919067 1157.880005 1161.224365 1165.079102 1169.298462 1174.217529 1179.622314 1184.385376 1184.496704 1181.92395 1181.164429 1183.483032 1185.32019 1187.606323 1192.61853 1195.48877 1195.899414 1194.921997 1191.396118 1187.381348 1182.992554 1177.136475 1172.952026 1168.292358 1159.598755 1157.482666 1155.581299 1150.029175 1145.74231 1145.646729 1147.224854 1147.451538 1141.9823 1135.581909 1132.852539 1135.907104 1145.270142 1147.612549 1140.530151 1131.637085 1127.91748 1135.382324 1146.113037 1149.627075 1148.700562 1148.064209 1145.38855 1137.244873 1132.320923 1136.010986 1145.3396 1150.447144 1149.285889 1140.973511 1132.705566 1131.412964 1133.176025 1136.844238 1145.35498 1146.884277 1146.695312 1145.605713 1143.55896 1140.979736 1138.861572 1137.055908 1135.884399 1134.262573 1129.536743 1124.003296 1122.138062 1122.848022 1123.685425 1123.123779 1119.465088 1118.147949 1122.225586 1122.606445 1121.10144 1117.032471 1111.735596 1109.872925 1110.205444 1111.436768 1112.049316 1111.661011 1110.026245 1110.067383 1110.143066 1108.963257 1108.077393 1107.220215 1107.262573 1108.467285 1109.722412 1111.933594 1116.9021 1121.178711 1115.429321 1109.329834 1109.397217 1116.644775 1124.174194 1132.394531 1143.130127 1150.533569 1141.391602 1131.312866 1125.009766 1119.726807 1117.364136 1115.2771 1111.982544 1106.33374 1100.607666 1096.076782 1092.081787 1088.336792 1085.83667 1084.847168 1084.467896 1085.115967 1086.647095 1088.099121 1089.352783 1090.266602 1091.09314 1091.623779 1091.493042 1090.631714 1089.22876 1087.728516 1087.798096 1088.645874 1088.994263 1088.428101 1087.57373 1086.647095 1084.243164 +1151.109253 1150.285522 1148.948853 1147.680786 1146.959229 1143.552124 1139.036743 1133.766479 1122.774414 1113.522217 1114.810913 1115.733765 1116.874268 1118.164062 1119.53479 1121.131348 1122.453857 1123.964478 1125.166504 1126.34375 1127.772217 1129.158203 1130.588135 1131.647827 1132.862183 1133.41272 1133.782471 1134.658691 1136.232666 1137.590454 1137.728516 1136.947021 1135.358276 1134.195801 1133.877319 1133.441528 1132.75 1132.489258 1132.393311 1132.513916 1132.667969 1132.889038 1133.003418 1133.141235 1133.233154 1133.462524 1134.700928 1136.749023 1138.272705 1139.601196 1140.860229 1142.097534 1143.524414 1144.917236 1146.123535 1149.287842 1152.883789 1156.202148 1158.980347 1159.852783 1160.075562 1160.217896 1160.299561 1160.277222 1160.224976 1160.083618 1159.837158 1159.997559 1158.995972 1157.92749 1158.232056 1159.899536 1162.602539 1164.590576 1166.022461 1165.955933 1161.074829 1163.10376 1164.705322 1165.635132 1166.801025 1168.664185 1170.746338 1171.937134 1172.306519 1171.896851 1168.904785 1166.09375 1169.403442 1170.839966 1170.929321 1171.057129 1171.104614 1170.454468 1168.27002 1164.384277 1162.153687 1163.418579 1165.03064 1166.775391 1168.222046 1169.933716 1170.894531 1170.697388 1170.930908 1173.432739 1176.898071 1180.069336 1183.411499 1189.724731 1196.017212 1198.261353 1203.642822 1210.221802 1221.572266 1232.958252 1230.698975 1225.225708 1224.418091 1230.102295 1233.770142 1234.249146 1232.437256 1226.111572 1222.124756 1218.26123 1213.164062 1210.015869 1208.278076 1204.238525 1197.903076 1198.13269 1197.737305 1197.134888 1196.732178 1196.633911 1196.494141 1196.288696 1196.055908 1195.195679 1193.973633 1192.472168 1191.136353 1189.729126 1188.512695 1187.457275 1186.453735 1185.49939 1184.304688 1182.348267 1183.214478 1183.60498 1183.879028 1184.127197 1184.354004 1184.633545 1184.947754 1185.174927 1185.4198 1185.751709 1185.968994 1186.145874 1186.356079 1186.533936 1186.697876 1187.008057 1187.200439 1187.405884 1187.47937 1187.471436 1187.630127 1187.697876 1187.831299 1187.700684 1187.703125 1187.599609 1187.5896 1187.581177 1187.574341 1187.445801 1187.29248 1187.165283 1186.935059 1186.659546 1186.40271 1186.182251 1185.846802 1185.560303 1185.368286 1185.147095 1184.833984 1184.617065 1184.435547 1184.637939 1184.930054 1185.110352 1185.262329 1185.389893 1185.567749 1185.703857 1185.907104 1186.15271 1186.15271 1186.194458 1186.293213 1186.387085 1186.426514 1186.335815 1186.185913 1185.996704 1185.972534 1185.736328 1185.444336 1185.217407 1184.875366 1184.516357 1184.308105 1184.008911 1183.880615 1183.75354 1183.474731 1183.125732 1182.549438 1182.016724 1181.488525 1181.078979 1180.791626 1180.484009 1180.228882 1179.977295 1179.743896 1179.560791 1179.231079 1178.857788 1178.478882 1177.974487 1177.665283 1177.287231 1176.801758 1176.345215 1175.945435 1175.425903 1174.999756 1174.479736 1173.920776 1173.425415 1173.096558 1172.722656 1172.449219 1172.062866 1171.978638 1171.614624 1171.035645 1170.282471 1169.499878 1168.776978 1168.231323 1167.737793 1167.079468 1166.452515 1165.953125 1165.743286 1167.467407 1170.48645 1171.677734 1172.066162 1174.244751 1177.022461 1179.234131 1180.710938 1181.957153 1182.699829 1182.898071 1184.544922 1187.260254 1189.003174 1190.380981 1191.732056 1192.979248 1195.129761 1195.463013 1195.139893 1195.124512 1195.194336 1199.016479 1204.210815 1206.070923 1206.884644 1208.338135 1212.278442 1218.13501 1220.447021 1222.511963 1227.856201 1231.2854 1238.686157 1245.550171 1249.617065 1255.885986 1261.919678 1262.890137 1261.653687 1262.827759 1265.132812 1265.052368 1264.740723 1264.581177 1264.620117 1263.366577 1259.878174 1252.804443 1248.421021 1248.669922 1249.948486 1253.6427 1254.056274 1249.060547 1245.024414 1237.109863 1229.913574 1225.024536 1222.598511 1219.87561 1213.724243 1207.935425 1197.484131 1188.172241 1179.529663 1171.026855 1170.210449 1169.391235 1168.512939 1167.891724 1166.630005 1164.995117 1163.281494 1161.809082 1160.40564 1159.271362 1158.244385 1156.094116 1153.616455 1151.222168 1149.214844 1148.002808 1147.371704 1147.390869 1146.476196 1143.784668 1140.865479 1138.650513 1137.795532 1137.588257 1137.349854 1136.97998 1136.324829 1135.074097 1132.673096 1128.920288 1128.094482 1128.356567 1128.857544 1130.351196 1131.144165 1131.484375 1132.527588 1134.323364 1136.081055 1136.977661 1137.300171 1136.301392 1133.772583 1128.081665 1123.828003 1124.825562 1134.311523 1143.418701 1147.923584 1148.97229 1149.531128 1150.759155 1152.142578 1154.233765 1156.091064 1158.402344 1158.846436 1149.922729 1146.032959 1155.973755 1164.390991 1171.247314 1179.4021 1186.143555 1195.276489 1197.724365 1199.554688 1203.390991 1207.076538 1208.015259 1199.842896 1195.916138 1192.894531 1184.975586 1196.470581 1199.977661 1204.674561 1209.534668 1218.052368 1226.823364 1233.156372 1236.733521 1238.369263 1241.545654 1245.588501 1245.312988 1247.111694 1253.511719 1259.071045 1261.181396 1260.876831 1270.394775 1278.394531 1281.951782 1283.522949 1283.386841 1281.729004 1279.527466 1280.388306 1280.514038 1280.499023 1282.560425 1286.973267 1291.258057 1293.615845 1294.573242 1294.625 1292.789673 1288.17688 1283.856079 1277.44873 1266.954834 1255.36145 1257.930542 1251.540283 1247.123169 1242.490967 1236.705933 1234.315918 1227.785034 1219.125366 1200.635864 1196.706055 1196.936646 1193.220703 1184.94873 1178.937256 1176.53894 1178.973633 1180.998169 1173.135254 1168.543335 1161.630127 1158.654541 1156.76355 1155.34668 1153.982178 1152.486816 1151.351074 1150.419678 1149.701782 1150.076416 1152.049438 1154.310913 1156.600464 1158.619263 1161.810669 1165.337646 1169.467163 1174.891968 1183.161743 1183.535278 1179.120117 1178.299316 1179.136597 1180.196167 1181.776978 1186.016602 1188.736206 1190.036621 1188.931641 1186.266357 1184.135498 1181.958984 1177.791626 1174.271729 1171.782104 1164.276733 1159.526733 1156.099121 1150.435425 1152.807495 1155.842651 1153.449097 1147.879395 1141.844604 1134.057495 1139.102783 1148.113525 1151.243164 1150.02478 1141.060669 1130.920776 1129.880127 1138.426758 1148.506348 1153.196777 1156.627686 1157.358154 1151.868286 1143.108398 1134.22229 1147.07373 1150.380005 1150.503174 1145.811523 1135.499878 1131.292603 1131.75769 1138.735229 1147.916382 1148.059448 1147.589478 1147.573608 1147.695801 1146.707642 1144.131836 1140.979736 1138.704468 1137.373657 1135.369385 1126.588013 1122.142334 1123.117188 1125.522705 1125.674316 1124.506958 1121.382568 1122.672485 1124.032349 1123.758423 1122.84314 1118.527832 1110.183594 1111.316162 1112.50293 1113.480713 1113.72937 1112.882324 1110.741821 1110.023193 1111.157593 1110.397095 1109.131226 1108.081299 1108.072388 1109.324951 1111.47583 1114.529541 1119.23999 1123.119995 1123.005005 1113.106689 1108.416626 1119.296265 1128.914185 1137.813477 1146.149902 1159.047485 1151.048706 1139.752075 1127.850952 1121.866333 1119.900635 1116.852173 1112.617798 1107.277954 1100.266235 1096.130005 1094.02771 1091.035889 1087.96521 1086.052979 1085.047119 1085.613403 1087.602051 1089.264893 1090.682129 1092.178711 1093.588379 1094.573975 1093.834717 1093.046631 1092.176758 1091.113525 1090.692871 1090.489014 1089.880249 1088.879517 1087.429443 1086.084839 1083.92981 +1152.942139 1151.757446 1150.674072 1149.458374 1148.060913 1145.276489 1139.067383 1132.646851 1126.467163 1114.87854 1115.065552 1115.938477 1116.868042 1118.087769 1119.559692 1121.062622 1122.367432 1124.119629 1125.627441 1127.259521 1128.832397 1130.252563 1131.402954 1132.61731 1133.893921 1134.422485 1135.385742 1137.473633 1140.819946 1143.947632 1144.513794 1142.768555 1140.729248 1138.9552 1137.361206 1135.925293 1134.76062 1134.083862 1133.809448 1133.385376 1133.289917 1133.413086 1133.438965 1133.155762 1133.194946 1133.299927 1134.387085 1135.955566 1136.94165 1138.101807 1139.303345 1140.751953 1142.118774 1143.745239 1145.828735 1148.461548 1151.37207 1155.056641 1158.314087 1159.528564 1159.709351 1159.836548 1159.764526 1159.202515 1158.985474 1159.158813 1158.373291 1159.192017 1158.466309 1157.483154 1158.14563 1160.324951 1161.804932 1162.7323 1162.70874 1161.352295 1158.700073 1160.471558 1162.625366 1163.822266 1165.162598 1167.156128 1169.533691 1171.214111 1171.332031 1170.157959 1165.110352 1164.247803 1166.319336 1168.035156 1168.67395 1168.949707 1168.765991 1167.819824 1165.523804 1163.007812 1161.775635 1163.785767 1166.430786 1168.728394 1169.631348 1171.222046 1172.203735 1172.304688 1171.534912 1173.528687 1177.352905 1180.289795 1182.843872 1187.450684 1191.822632 1196.11853 1201.78772 1207.779785 1215.774292 1227.445557 1230.33252 1222.235596 1219.181274 1225.594604 1230.961548 1232.393311 1229.085815 1224.044067 1220.367798 1217.363281 1212.870239 1209.710327 1207.788696 1205.588623 1202.191406 1200.180176 1199.159058 1198.353149 1197.907959 1197.552124 1197.162354 1196.756104 1196.414551 1195.71521 1194.504883 1193.020996 1191.531006 1190.161377 1188.893433 1187.700195 1186.616821 1185.635132 1184.56665 1182.464355 1183.418457 1183.739502 1183.949951 1184.194458 1184.545776 1184.928467 1185.249878 1185.64624 1185.794189 1186.053711 1186.370483 1186.623291 1186.707153 1186.991821 1187.108154 1187.310303 1187.551147 1187.789551 1187.999878 1188.134766 1188.109985 1188.272949 1188.370728 1188.306763 1188.201172 1188.092773 1188.03833 1187.995605 1188.017456 1187.927979 1187.795654 1187.647705 1187.317627 1187.082764 1186.761841 1186.458984 1186.2323 1185.942749 1185.72583 1185.538574 1185.30957 1185.050903 1184.833984 1185.009644 1185.246338 1185.534424 1185.732788 1185.861572 1186.09021 1186.340942 1186.615479 1186.701782 1186.774414 1186.692749 1186.806152 1186.904541 1186.827515 1186.716553 1186.575439 1186.336182 1186.141113 1185.860474 1185.756104 1185.484497 1185.158081 1184.982422 1184.735596 1184.436401 1184.283325 1184.072021 1183.775757 1183.298218 1182.759521 1182.188599 1181.688721 1181.393555 1181.090088 1180.781616 1180.53064 1180.279785 1180.187744 1179.96106 1179.612915 1179.129639 1178.849976 1178.376831 1177.967896 1177.44519 1177.093262 1176.736938 1176.452393 1176.101074 1175.636597 1174.98999 1174.398315 1173.88916 1173.494629 1173.241089 1172.898682 1172.623291 1172.404663 1171.839355 1171.153687 1170.450562 1169.717896 1169.21167 1168.749268 1168.371948 1167.729248 1167.043335 1166.473511 1166.22229 1167.682617 1171.01062 1172.467773 1173.968262 1175.702515 1178.022827 1180.160767 1181.894653 1183.441895 1184.506348 1185.31189 1186.630615 1188.332886 1190.186157 1192.291016 1193.915649 1195.31897 1196.617188 1196.88147 1197.114746 1197.44873 1197.829224 1199.926758 1204.97229 1207.694702 1211.349731 1216.163208 1220.534668 1223.20459 1225.126343 1227.734131 1231.212036 1232.452393 1235.240845 1242.669922 1244.986938 1251.237305 1253.910889 1254.424561 1253.022949 1254.001709 1254.744385 1254.204834 1254.428467 1253.936401 1253.473145 1252.799927 1250.459351 1246.123657 1238.639893 1242.83728 1242.264526 1248.180664 1247.176392 1243.590698 1239.900024 1234.494263 1228.01123 1222.419189 1218.885742 1218.508179 1213.251709 1208.312378 1200.305298 1190.605957 1182.006592 1173.343384 1170.255981 1169.236938 1168.275757 1167.342896 1165.911743 1164.067505 1162.316406 1161.166992 1159.746216 1158.083862 1156.926392 1155.510132 1153.5271 1151.379883 1149.595581 1147.984863 1146.459106 1146.424194 1145.737427 1143.941284 1141.983521 1140.296509 1139.238037 1138.434326 1137.828613 1137.138794 1136.146484 1134.912842 1132.318726 1128.614624 1129.165649 1130.054932 1131.363892 1133.537964 1134.04126 1132.692993 1133.860962 1135.532227 1137.980591 1139.485474 1139.904541 1138.665405 1135.521729 1131.12561 1126.878296 1124.992676 1127.654175 1136.597534 1146.669067 1149.478149 1153.027588 1154.578247 1154.576172 1155.653198 1157.313232 1158.315796 1160.63501 1157.268188 1150.204834 1152.841919 1155.428223 1161.276489 1170.317139 1180.124023 1191.783936 1199.160156 1203.566772 1207.986694 1208.768311 1200.771362 1196.741943 1197.68042 1198.134277 1195.827393 1196.17981 1205.915283 1207.091309 1215.400879 1222.58313 1228.577637 1237.903564 1245.395508 1247.90271 1251.466064 1254.401123 1252.541748 1255.806152 1262.397095 1268.845215 1272.165649 1272.64502 1278.214478 1286.19165 1290.787109 1292.381592 1292.439453 1289.117676 1287.620117 1287.092041 1286.280396 1283.715332 1280.929932 1284.456299 1289.125366 1291.454224 1293.489746 1294.405518 1294.328247 1293.30249 1291.78479 1284.747314 1273.810913 1264.307007 1255.398438 1248.993408 1242.909302 1237.495483 1234.123901 1230.956543 1221.396851 1214.447632 1217.416138 1208.94873 1203.234619 1198.302734 1191.393066 1182.552612 1178.179199 1175.425781 1172.252563 1167.858032 1161.672241 1158.483887 1158.254639 1157.703247 1156.909668 1156.049316 1154.770996 1153.462402 1152.224121 1150.352173 1150.43811 1152.130005 1153.775513 1155.606445 1157.171753 1158.386108 1160.203857 1163.244385 1167.665771 1174.0 1178.057373 1174.947876 1174.804688 1175.535156 1176.579102 1178.512817 1180.933594 1182.993896 1183.222046 1182.687866 1182.140381 1181.002075 1179.529907 1177.030029 1174.230347 1171.752563 1167.349609 1162.328125 1160.143677 1159.224609 1159.599487 1160.533813 1152.11084 1146.107666 1142.564941 1141.183716 1149.006714 1156.971191 1154.968994 1148.745117 1139.774048 1130.484009 1131.084595 1138.958252 1148.025513 1155.824829 1160.298706 1161.508789 1158.049561 1148.178711 1146.721069 1151.516479 1150.854126 1148.651855 1137.186279 1131.880493 1131.58252 1139.650879 1147.781006 1147.962646 1146.991943 1146.909546 1147.132324 1147.399658 1147.566772 1144.357422 1140.545776 1138.040771 1136.343628 1131.368042 1122.172974 1123.915161 1127.206177 1128.732178 1127.776855 1125.134399 1121.959351 1124.629395 1124.980469 1124.289062 1123.180908 1119.416504 1116.42395 1116.042969 1116.470581 1117.008057 1116.456665 1114.863525 1112.478882 1110.571655 1111.955078 1111.384521 1109.737061 1108.903931 1108.721191 1109.649536 1112.537231 1116.007935 1120.119629 1123.692871 1124.051025 1116.874023 1109.438477 1117.990479 1128.910522 1138.049072 1147.639648 1159.103882 1160.409668 1145.009277 1133.157227 1128.794678 1122.451416 1118.562134 1114.046387 1107.872192 1099.960693 1096.608276 1096.861572 1094.238647 1090.630737 1088.116333 1085.960571 1086.11084 1088.582397 1090.516602 1092.047363 1093.596191 1095.962646 1097.929443 1095.956543 1095.484863 1095.266113 1093.898926 1092.911743 1092.237793 1091.023315 1088.366089 1085.511597 1085.152588 1084.21936 +1154.324585 1152.890015 1151.581665 1150.095459 1148.469604 1145.899658 1139.797729 1135.376465 1134.163208 1125.713989 1114.544434 1115.790649 1116.906494 1118.066772 1119.428833 1120.900024 1122.213745 1123.733765 1125.754761 1127.952026 1129.937134 1131.55896 1132.424683 1132.959351 1134.658203 1137.011475 1138.811523 1141.598755 1145.759644 1147.520142 1147.903687 1147.68811 1146.721191 1145.013428 1142.847412 1140.496338 1138.464966 1136.477905 1134.50293 1134.217529 1134.597412 1134.897095 1134.609131 1134.09021 1133.493896 1133.432983 1133.669434 1134.321411 1135.410645 1136.580933 1137.913208 1139.189331 1140.373413 1142.187988 1144.464844 1146.382324 1148.86792 1151.342407 1154.224365 1157.075439 1158.533081 1159.03418 1159.071533 1158.034546 1157.137329 1157.189575 1157.06311 1157.580078 1157.004639 1157.243896 1157.845947 1160.062378 1161.034302 1161.199707 1160.205688 1158.847168 1158.765503 1159.99231 1161.319702 1162.153687 1163.187256 1164.562256 1166.265503 1167.64917 1167.13501 1164.727417 1162.332275 1162.652222 1164.066528 1165.366333 1165.970947 1166.061279 1165.799194 1164.7771 1163.43811 1162.078979 1161.833618 1164.446777 1167.890259 1170.802979 1171.499268 1172.32666 1173.46875 1174.05127 1174.583862 1176.124512 1178.186035 1180.409424 1182.231689 1184.952148 1190.225342 1194.944214 1198.699219 1203.217163 1208.953369 1219.72583 1223.677246 1221.041626 1218.865723 1221.256836 1224.292603 1224.637207 1221.362549 1219.150024 1217.051392 1213.887085 1210.406616 1207.765381 1206.729492 1205.275513 1203.104248 1201.169434 1199.939209 1199.110107 1198.441528 1197.999146 1197.425659 1196.952393 1196.335083 1195.568848 1194.610107 1193.210693 1191.700439 1190.332397 1188.954834 1187.793457 1186.669067 1185.567261 1184.654785 1182.775391 1183.478149 1183.876953 1184.065308 1184.373535 1184.77478 1185.126343 1185.579956 1185.834229 1186.142456 1186.412842 1186.6698 1186.912598 1187.127686 1187.335205 1187.543945 1187.631104 1187.805786 1188.109985 1188.377808 1188.560547 1188.808716 1188.846558 1188.988525 1188.937256 1188.769531 1188.656006 1188.519653 1188.52417 1188.563843 1188.433105 1188.334351 1188.131348 1187.867065 1187.553467 1187.148193 1186.939087 1186.656494 1186.352295 1186.159302 1186.042969 1185.745361 1185.536011 1185.31665 1185.429199 1185.658936 1185.954834 1186.255493 1186.505249 1186.721069 1187.009888 1187.252197 1187.339966 1187.333374 1187.220703 1187.197632 1187.246094 1187.328613 1187.204834 1186.966187 1186.718384 1186.359619 1186.146606 1185.887207 1185.76709 1185.615112 1185.29187 1185.109619 1184.742065 1184.577881 1184.259521 1183.834106 1183.350098 1182.81604 1182.234985 1181.960327 1181.588989 1181.342896 1181.098755 1180.932373 1180.735718 1180.622192 1180.433105 1180.069458 1179.620728 1179.126465 1178.665771 1178.29126 1177.833374 1177.581055 1177.319214 1177.061768 1176.712646 1176.201294 1175.494629 1174.92981 1174.390259 1173.979248 1173.677002 1173.402222 1172.986816 1172.572876 1171.991333 1171.297485 1170.685303 1170.19751 1169.7323 1169.4021 1168.938599 1168.296143 1167.711914 1167.05481 1166.586304 1167.831909 1169.821777 1171.433594 1174.085083 1176.741333 1178.962402 1181.131714 1183.041016 1184.456787 1185.413086 1186.260742 1187.442627 1188.993774 1190.82251 1192.927612 1194.731934 1196.086304 1196.866821 1197.010864 1197.594116 1198.681152 1200.380981 1203.096313 1206.335815 1210.797607 1216.025146 1221.325806 1225.034424 1228.31189 1230.647461 1231.942383 1234.761475 1236.390625 1242.474121 1245.115234 1246.257324 1246.711426 1245.195923 1246.467896 1244.855347 1243.078979 1244.283813 1245.994385 1245.523804 1247.139404 1246.483887 1244.656616 1241.47522 1235.887451 1228.648071 1229.93335 1234.539673 1242.596313 1241.164307 1235.69812 1231.698486 1229.920898 1224.58667 1221.300903 1215.425171 1211.946533 1208.566528 1205.989624 1200.571533 1194.754639 1187.361694 1180.333984 1172.107544 1169.835449 1168.557861 1167.096069 1165.349731 1163.401978 1161.27063 1159.630005 1159.459595 1158.139404 1156.365845 1154.975952 1153.356201 1151.541138 1149.587036 1147.820068 1146.518799 1145.363892 1144.929565 1144.203613 1142.887695 1141.385742 1140.053711 1139.030273 1138.037354 1137.129028 1135.924561 1134.805176 1131.979248 1129.098511 1130.865479 1132.2677 1133.414185 1134.585938 1134.04895 1133.901123 1135.737305 1137.848755 1140.038818 1142.483032 1144.19043 1143.656128 1138.402588 1133.337646 1129.536499 1126.190063 1124.881836 1128.779663 1135.733643 1145.259033 1154.584351 1158.616577 1157.005737 1157.587158 1159.934204 1161.444336 1162.967285 1161.457886 1158.994751 1156.990479 1155.944214 1157.741211 1167.269409 1178.302002 1189.644043 1200.517456 1208.95166 1205.535156 1196.859497 1190.173706 1192.667358 1196.696777 1200.149048 1198.74292 1196.065308 1209.991089 1214.229248 1217.036743 1228.186401 1231.653564 1237.868896 1248.220337 1254.805054 1259.412842 1262.004517 1255.052246 1265.497559 1271.994751 1277.785645 1282.833618 1285.81189 1285.064941 1292.028198 1296.958252 1297.921265 1297.009888 1293.875854 1293.147095 1294.281494 1292.892944 1288.715942 1287.281006 1287.803345 1289.518066 1291.23645 1292.849121 1294.197388 1294.658691 1294.386719 1293.517822 1289.932983 1277.156006 1268.389038 1258.975952 1250.372559 1243.237427 1234.672119 1230.987305 1224.559326 1219.473022 1220.969727 1218.315063 1211.134888 1205.001709 1200.30481 1196.438232 1184.050659 1176.53772 1171.024536 1165.890625 1158.001465 1159.884888 1165.743408 1164.183472 1160.971558 1159.134888 1158.180298 1156.935913 1155.53186 1153.868774 1151.302612 1150.957397 1152.407104 1153.822754 1155.234985 1156.474487 1157.77356 1158.704102 1158.517212 1158.850342 1166.859741 1169.284302 1170.488647 1171.2229 1171.904907 1173.587646 1174.522217 1176.156982 1178.381348 1180.141113 1180.562744 1180.312256 1179.449829 1178.100586 1176.334106 1173.966309 1170.795044 1167.419189 1163.348511 1160.313232 1159.340088 1158.118042 1152.064331 1144.534302 1144.15271 1145.188477 1150.369019 1160.022949 1161.566406 1156.889893 1147.377075 1139.175903 1131.560669 1130.226074 1136.129639 1144.258301 1155.297241 1161.291748 1161.826538 1161.450317 1158.538086 1159.260498 1155.437256 1148.331787 1140.697144 1134.481323 1134.866699 1136.634766 1147.463257 1147.593872 1146.388794 1146.314331 1146.064453 1146.014893 1145.09021 1142.782471 1139.20459 1136.625488 1134.895142 1133.806763 1125.434937 1128.119141 1132.946777 1133.952515 1132.739746 1129.853149 1127.343994 1125.911377 1126.261841 1125.740601 1124.400146 1122.396118 1120.562012 1119.525146 1120.443848 1121.196045 1120.981079 1119.657715 1117.528198 1115.63623 1114.1427 1113.48291 1111.799683 1109.993652 1110.111084 1110.302002 1109.779419 1113.037109 1116.583252 1120.167236 1123.934326 1125.519043 1121.4823 1116.865356 1120.122681 1128.846191 1137.59375 1146.23938 1158.891479 1167.306274 1154.841187 1144.569702 1137.078491 1126.841675 1121.874146 1119.063599 1111.36084 1104.367065 1099.32251 1099.540771 1097.086304 1092.980957 1090.469727 1089.025513 1089.378052 1090.800049 1092.204346 1093.426025 1094.792114 1096.71106 1098.192017 1097.307373 1097.766113 1097.591064 1095.624023 1094.765503 1094.286133 1092.722046 1089.225098 1086.835815 1085.622925 1085.538574 +1155.449341 1154.011841 1152.068848 1149.928223 1147.63855 1145.246704 1143.425293 1141.161011 1138.684204 1133.19458 1117.727051 1116.063721 1117.000244 1117.952637 1119.155518 1120.776123 1122.206543 1123.603638 1125.994751 1128.538086 1131.16687 1133.365112 1134.07019 1133.857666 1134.633545 1137.97998 1141.476074 1144.638184 1147.34436 1148.123657 1148.51062 1148.780884 1148.591553 1148.072876 1147.319824 1145.647217 1143.408813 1141.364258 1139.439697 1138.486572 1138.216675 1137.890869 1137.423096 1136.863159 1135.555908 1134.108765 1133.807739 1133.830322 1134.026001 1134.709839 1135.959839 1137.128662 1138.312256 1140.09021 1142.40332 1144.672119 1146.372314 1146.404907 1147.791504 1151.494873 1153.669312 1155.10498 1155.672607 1155.283936 1154.782349 1154.855957 1154.935059 1155.550293 1156.117676 1156.989868 1158.626099 1160.144653 1160.37439 1159.485962 1158.669922 1158.3479 1159.012451 1159.963379 1160.487427 1160.481079 1161.323242 1162.118896 1162.707031 1163.056152 1162.077515 1160.983154 1161.017822 1161.573608 1162.441528 1163.233887 1163.428955 1163.373047 1163.098999 1162.562134 1161.925171 1160.754639 1162.368042 1164.930298 1168.372925 1171.072266 1172.256348 1173.119263 1174.44519 1175.696167 1176.986328 1178.195068 1179.381104 1180.433228 1182.195312 1184.876587 1188.518677 1192.50293 1194.083496 1198.084961 1205.88855 1218.960693 1221.279297 1220.176392 1218.13623 1218.352905 1218.881348 1218.618896 1217.494507 1215.804932 1213.341675 1210.093384 1207.259033 1206.325195 1205.728149 1204.382202 1202.786011 1201.161865 1199.980591 1199.030273 1198.339111 1197.811279 1197.419556 1196.627686 1195.803833 1195.168213 1194.404175 1193.050537 1191.675781 1190.19458 1188.847534 1187.648926 1186.540161 1185.488647 1184.440552 1183.064575 1183.565063 1183.876831 1184.238037 1184.583008 1184.960449 1185.383667 1185.768555 1186.083008 1186.383423 1186.722656 1187.016357 1187.217896 1187.45752 1187.712891 1187.957886 1188.089111 1188.316284 1188.575684 1188.797607 1189.099976 1189.44397 1189.592896 1189.639771 1189.645386 1189.453857 1189.223022 1189.094604 1189.112305 1189.115723 1188.992798 1188.848145 1188.687378 1188.356079 1188.062378 1187.569702 1187.38562 1187.090454 1186.811401 1186.618286 1186.507446 1186.223877 1185.948853 1185.738525 1185.867798 1186.192627 1186.69043 1187.000244 1187.290894 1187.57251 1187.786499 1187.865356 1187.849976 1187.895264 1187.722778 1187.813354 1187.698608 1187.775391 1187.720581 1187.616455 1187.101318 1186.773071 1186.53418 1186.21875 1186.001221 1185.861816 1185.663208 1185.470459 1185.061768 1184.759155 1184.36731 1183.926514 1183.373047 1182.875 1182.372925 1182.050781 1181.882935 1181.717041 1181.491333 1181.390869 1181.178467 1181.025757 1180.775269 1180.472534 1180.059326 1179.55481 1179.098145 1178.604492 1178.30835 1178.099731 1178.003052 1177.747925 1177.333008 1176.819336 1176.081421 1175.507812 1174.953003 1174.571045 1174.297974 1173.861206 1173.436035 1172.97168 1172.379028 1171.626099 1171.099854 1170.752319 1170.445923 1170.079102 1169.770508 1169.253296 1168.571655 1167.699585 1167.100708 1167.825439 1169.373413 1171.214844 1173.977417 1177.430542 1180.580078 1182.655762 1184.03479 1184.926514 1185.596924 1186.43042 1187.572876 1189.028198 1190.837769 1192.92041 1194.934814 1196.147095 1196.375 1196.376587 1196.891846 1198.649658 1200.954346 1203.930664 1207.194702 1211.823608 1218.725952 1223.329224 1228.275269 1232.99585 1234.022705 1234.214966 1234.157471 1233.875122 1234.333618 1241.292236 1243.009277 1242.104736 1240.619629 1238.91687 1237.593018 1236.784668 1237.230591 1238.745117 1239.419556 1239.082275 1236.069458 1233.860962 1230.374756 1224.686279 1221.130249 1222.969482 1227.764526 1230.692871 1229.004517 1226.525757 1223.143921 1220.746704 1218.738647 1215.97876 1208.634033 1206.053589 1204.281006 1198.73291 1194.660767 1192.002686 1187.865967 1183.259644 1174.420898 1170.503052 1169.0177 1166.948486 1164.975342 1163.027222 1160.814941 1158.991455 1158.332031 1157.571655 1156.44104 1155.036255 1153.500854 1151.765991 1149.96582 1148.195679 1146.858154 1146.727661 1146.167603 1145.350464 1143.896118 1142.11731 1140.546753 1139.312744 1138.11145 1136.930786 1135.838745 1134.664551 1132.031128 1129.446899 1133.618408 1134.231323 1134.628784 1134.366943 1134.903198 1136.265625 1137.722168 1140.055176 1142.639526 1145.230591 1147.28064 1147.440796 1140.879272 1135.277954 1131.706909 1128.754761 1126.594238 1125.346191 1126.111328 1131.092651 1140.723267 1159.325928 1159.864136 1160.17395 1163.744141 1165.90564 1166.540039 1165.661865 1164.092285 1160.745483 1156.955688 1156.255371 1159.27356 1170.366821 1184.474365 1194.413818 1199.174194 1198.860474 1186.172852 1183.768433 1193.250488 1198.066772 1203.439331 1206.595825 1201.959473 1208.893311 1219.096191 1225.517456 1231.308472 1240.932251 1243.004883 1245.895508 1256.282227 1266.212402 1269.604492 1266.274536 1273.170654 1280.082764 1290.314209 1294.407837 1295.77771 1292.002319 1295.993774 1302.698608 1304.476196 1301.251831 1298.322388 1297.039917 1296.840454 1295.21228 1292.868774 1292.130005 1291.759277 1290.734131 1291.369507 1292.841553 1294.187378 1294.74353 1294.867676 1294.602295 1293.347656 1284.119873 1274.105469 1260.847046 1253.109253 1246.099487 1243.310913 1236.223022 1230.650757 1227.523315 1222.196289 1217.678833 1210.871582 1204.864746 1198.918823 1189.26062 1179.610596 1170.481323 1169.229492 1168.249023 1169.326172 1176.341309 1177.233643 1172.319458 1167.190796 1163.276978 1160.786133 1158.889282 1157.451782 1155.626953 1151.971924 1151.409424 1152.806519 1154.057495 1155.256226 1156.460693 1157.802002 1158.908936 1159.225098 1160.283813 1163.21582 1165.475586 1167.423828 1169.185425 1170.740234 1170.627197 1170.944946 1170.765625 1175.176025 1178.375 1179.457642 1179.553589 1178.837891 1177.517334 1175.92627 1173.762207 1170.664917 1166.845093 1161.445557 1158.408936 1158.485474 1158.122803 1150.290283 1144.991821 1146.935547 1155.928955 1162.308105 1162.784546 1161.629395 1156.122681 1147.348999 1139.173584 1133.471924 1129.876099 1133.077148 1142.077637 1153.605713 1160.828003 1162.006958 1162.309326 1161.508545 1160.526245 1153.12915 1145.72168 1147.97168 1147.729492 1140.194702 1143.96875 1147.767578 1146.749878 1146.672485 1147.352295 1146.436279 1145.209106 1144.223877 1141.303223 1134.474365 1134.487427 1134.223022 1133.178711 1135.448853 1136.381104 1136.342041 1135.760254 1134.651367 1131.5979 1130.070557 1129.060303 1128.189087 1126.508545 1123.859497 1121.785278 1121.060547 1121.469971 1123.971802 1124.274536 1123.384033 1122.372681 1120.63916 1118.570557 1116.814209 1115.394897 1113.664062 1111.285767 1112.39209 1112.463989 1111.865601 1113.80603 1116.781006 1119.942627 1123.924927 1129.25354 1130.721313 1120.310059 1125.498779 1136.880737 1144.687134 1152.117432 1160.426636 1173.522217 1164.984741 1154.913208 1146.229736 1138.389648 1131.720093 1125.426636 1115.66394 1108.370117 1103.505371 1101.179932 1098.319458 1094.683228 1093.206787 1092.560669 1092.746582 1093.594604 1094.277222 1094.948242 1096.134888 1097.324341 1098.827393 1097.999512 1098.004272 1098.125854 1097.257935 1096.755005 1096.641602 1095.172729 1091.992676 1089.296021 1087.532593 1086.504272 +1156.509521 1155.043579 1152.839966 1149.232666 1146.059082 1146.058716 1147.002808 1147.0979 1143.52356 1138.248169 1128.231201 1116.557983 1116.687622 1117.589844 1118.658936 1120.248413 1122.135254 1124.080322 1126.10376 1128.857178 1132.302979 1134.59021 1135.723755 1135.921509 1136.657593 1139.429077 1143.237061 1146.515381 1147.644897 1148.247192 1148.622681 1148.83606 1149.066528 1149.154663 1148.980225 1148.444336 1147.475952 1146.783203 1146.424561 1145.96936 1143.761353 1142.056152 1140.787109 1140.040771 1138.887085 1137.386963 1136.585449 1136.823608 1135.224609 1133.891113 1134.11499 1134.986938 1135.975342 1137.479126 1140.057617 1142.76416 1144.762207 1145.558716 1145.993408 1146.685181 1147.429932 1148.939209 1150.577026 1150.779907 1151.536621 1151.858276 1152.450073 1153.62915 1155.200928 1157.319702 1159.2323 1159.733032 1159.699219 1158.32373 1157.597656 1158.190552 1159.060669 1159.978027 1159.832031 1158.911621 1159.144043 1160.025146 1159.906982 1160.393311 1159.645386 1159.581909 1160.028687 1160.729736 1161.310425 1161.619507 1161.569702 1161.268188 1161.065674 1161.018555 1160.260986 1160.81665 1162.52417 1165.034912 1167.735718 1169.708374 1170.563843 1172.189697 1175.231812 1177.611572 1179.30603 1180.246216 1180.374634 1180.71875 1181.714844 1182.966431 1188.203247 1192.950928 1196.39624 1204.190918 1210.560791 1218.609253 1220.729736 1219.92981 1217.572754 1216.067627 1215.324097 1214.993286 1214.399902 1213.275024 1211.020264 1208.583496 1206.57312 1205.436523 1204.546997 1203.377563 1201.979736 1200.633423 1199.343018 1198.353516 1197.728271 1197.220703 1196.845215 1195.914307 1195.153076 1194.715942 1193.943481 1192.802734 1191.554565 1190.100098 1188.783569 1187.524414 1186.34668 1185.432373 1184.470215 1183.244995 1183.632202 1184.051025 1184.418213 1184.736328 1185.14624 1185.578857 1185.931396 1186.286987 1186.584106 1186.911377 1187.227539 1187.442261 1187.735352 1188.108521 1188.336792 1188.585449 1188.851685 1189.068237 1189.369507 1189.626831 1190.065308 1190.249146 1190.298462 1190.252319 1190.180786 1189.872314 1189.704956 1189.661255 1189.707275 1189.540039 1189.486084 1189.261597 1188.941895 1188.446167 1188.060181 1187.692627 1187.518555 1187.332764 1187.127441 1186.985596 1186.654663 1186.368408 1186.241577 1186.534424 1187.108765 1187.644165 1187.944946 1188.248657 1188.524292 1188.643311 1188.464844 1188.432861 1188.413696 1188.329468 1188.295044 1188.303955 1188.325806 1188.34436 1188.160034 1187.804443 1187.309692 1186.916992 1186.578125 1186.370483 1186.182373 1185.979248 1185.697632 1185.36853 1184.972534 1184.571655 1184.025146 1183.51123 1183.010864 1182.585815 1182.4021 1182.268799 1182.172729 1182.039917 1181.892944 1181.552979 1181.410034 1181.184937 1180.905396 1180.455078 1180.049438 1179.468018 1179.108032 1178.839111 1178.609619 1178.632568 1178.387207 1178.028809 1177.52124 1176.707642 1176.102539 1175.633179 1175.151733 1174.791626 1174.370361 1173.909546 1173.40918 1172.764526 1172.283081 1171.634521 1171.348145 1171.160767 1170.943359 1170.692383 1170.318237 1169.64978 1168.554199 1167.717163 1167.862061 1169.511841 1171.813721 1174.57373 1178.005859 1181.952026 1183.71167 1184.266113 1184.711792 1185.281738 1185.992432 1187.035156 1188.421753 1190.05542 1192.11084 1194.2229 1195.11499 1194.946777 1194.668701 1195.067505 1197.787476 1200.318848 1202.822021 1206.130737 1210.957886 1217.636353 1221.790039 1228.267334 1233.471191 1233.991089 1232.758179 1230.693604 1226.681519 1228.229004 1233.576538 1238.557739 1238.746826 1234.006836 1231.814941 1230.238037 1229.856323 1231.008789 1232.760132 1233.577515 1232.670654 1229.294922 1228.119507 1223.058228 1217.485229 1215.654175 1216.278442 1219.68335 1221.1521 1220.775879 1219.059448 1214.641968 1213.262329 1213.044312 1210.175293 1205.931641 1201.552124 1196.102417 1196.21106 1191.903809 1186.443481 1184.605835 1182.376831 1176.77124 1172.296143 1169.632935 1167.025513 1164.673828 1162.812378 1161.371094 1160.404907 1159.622314 1158.438354 1157.215088 1155.467407 1153.794556 1152.122681 1150.514038 1149.213745 1148.449829 1147.89978 1147.260254 1146.279663 1144.612183 1142.499878 1140.800903 1139.327026 1138.118286 1136.89978 1135.732544 1134.327148 1132.244263 1130.420288 1132.900879 1134.191284 1135.052979 1134.635864 1136.519287 1138.513184 1140.067261 1142.105591 1144.754272 1147.619263 1149.770752 1148.625977 1143.472046 1138.019165 1133.916992 1131.296387 1128.707642 1127.470703 1126.859131 1126.318604 1134.99231 1148.747437 1159.62439 1168.177002 1170.015747 1170.019165 1170.259888 1169.931396 1170.468628 1170.151489 1162.277832 1157.65625 1156.256104 1165.888184 1176.721924 1181.170898 1186.787109 1184.938477 1180.698975 1189.04895 1197.156738 1202.256836 1207.014282 1211.671265 1209.12854 1208.165894 1219.903564 1235.338013 1234.856201 1243.746948 1248.391724 1250.239868 1255.011841 1267.564819 1273.960205 1271.666748 1278.183838 1289.2323 1295.318481 1297.88501 1299.574585 1299.684692 1301.719116 1305.921875 1306.781738 1304.251831 1302.136719 1301.196899 1299.419922 1297.321655 1295.765869 1295.099854 1293.825439 1292.599121 1291.794556 1292.637085 1294.11731 1295.055908 1295.403198 1295.07605 1293.926025 1289.704224 1276.439331 1265.368164 1262.018555 1258.12854 1250.256958 1241.664307 1235.280762 1236.085205 1230.108398 1222.407104 1213.199341 1205.231201 1198.645386 1191.401611 1183.251465 1171.609009 1169.460815 1180.329346 1187.5896 1187.540894 1184.512451 1177.719238 1171.907227 1167.471436 1163.934937 1161.501953 1159.378174 1157.343872 1152.704346 1151.925171 1152.890015 1154.271729 1155.632935 1156.89624 1157.66687 1158.212891 1158.401489 1158.776611 1160.175537 1162.28894 1165.976807 1169.344116 1171.043457 1170.964355 1171.92981 1172.999146 1175.306152 1178.290405 1179.464844 1179.648804 1178.884644 1177.636597 1175.857788 1173.847046 1171.658813 1168.305786 1163.742676 1161.441406 1160.656494 1158.991089 1148.166992 1146.650635 1158.117065 1162.785278 1162.952026 1162.016724 1157.657837 1151.557495 1145.75415 1139.796143 1135.406738 1131.337524 1132.880493 1143.133911 1154.379028 1160.204834 1161.949951 1162.485596 1162.311401 1160.865112 1155.767212 1155.966919 1159.804688 1150.553223 1144.97168 1146.575439 1148.372314 1146.790649 1148.416138 1148.476807 1146.69873 1146.652954 1146.515503 1143.739258 1143.290161 1141.55127 1139.280396 1137.48999 1138.177979 1138.527222 1137.829712 1136.672363 1134.983032 1132.85376 1132.0896 1131.227905 1130.432739 1127.536011 1123.381958 1121.652222 1121.563843 1124.154907 1127.153076 1127.255615 1126.050781 1124.27356 1122.542725 1120.811768 1118.6521 1117.417847 1116.772583 1116.815186 1117.017334 1116.059692 1115.149414 1115.778076 1117.495239 1119.76062 1123.952881 1130.72937 1137.370483 1133.906494 1131.257446 1139.107422 1146.670288 1154.873291 1163.898438 1172.673828 1173.421143 1165.886475 1157.028809 1148.96521 1138.240845 1127.617065 1117.336426 1108.703491 1106.141235 1101.664307 1097.647217 1096.131836 1096.25769 1095.176392 1095.02063 1095.829468 1096.841431 1096.818604 1097.294922 1098.880859 1099.217529 1099.099731 1098.569458 1098.243774 1098.116699 1098.287598 1098.315063 1098.038696 1095.224487 1091.327759 1088.898193 1087.495605 +1158.12085 1156.540771 1154.565918 1151.451416 1148.833008 1148.854248 1149.279907 1148.446655 1146.207153 1140.684204 1134.855957 1124.16272 1118.098022 1117.037964 1117.978638 1119.229736 1121.0354 1122.861084 1125.39624 1127.916626 1131.610474 1135.005615 1136.312256 1137.272949 1138.353271 1140.354248 1143.394531 1146.051758 1147.237061 1147.887207 1148.260376 1148.849243 1149.227661 1149.597656 1149.767334 1149.825806 1149.53186 1148.872314 1148.925659 1148.631714 1147.701904 1145.934814 1144.158203 1143.265869 1142.875366 1142.787964 1142.609985 1142.357666 1140.200562 1138.197998 1135.936279 1134.060303 1134.044434 1134.53894 1138.075562 1141.406738 1143.466553 1144.608276 1145.069702 1145.462646 1145.733521 1146.162231 1146.413086 1147.128296 1148.366577 1148.825684 1149.692139 1151.636353 1154.222412 1157.055054 1159.104004 1159.577637 1159.151367 1157.630981 1157.460083 1159.040039 1159.743652 1159.979126 1158.721436 1157.705566 1157.416382 1158.077515 1158.213379 1158.110718 1158.078369 1159.200317 1159.603882 1159.871704 1160.010376 1159.998657 1159.869385 1159.894653 1159.850464 1159.569946 1159.900269 1161.283325 1163.072021 1165.21228 1167.307617 1169.061646 1171.10498 1172.954224 1176.491577 1180.391602 1182.301392 1182.52478 1181.442017 1181.354736 1182.424072 1185.163696 1189.563599 1195.196289 1203.69519 1210.485229 1213.614868 1217.123535 1218.603027 1217.129517 1215.023926 1213.416748 1212.042969 1211.459351 1211.412842 1211.088867 1209.68811 1207.453857 1206.003906 1204.682617 1203.435669 1202.312012 1201.099487 1199.65271 1197.972412 1196.429688 1196.31543 1196.399902 1196.148682 1195.397705 1194.783203 1194.205078 1193.567383 1192.621704 1191.436523 1190.146973 1188.677979 1187.427856 1186.380249 1185.282227 1184.547729 1183.319702 1183.765259 1184.209351 1184.555298 1184.961792 1185.407349 1185.721313 1186.115234 1186.420654 1186.78064 1187.083618 1187.436646 1187.748413 1188.130981 1188.579346 1188.973633 1189.302002 1189.504639 1189.742554 1190.009888 1190.223511 1190.539429 1190.869263 1190.968506 1190.973511 1190.86438 1190.533325 1190.389771 1190.276978 1190.164429 1190.267822 1190.078857 1189.710571 1189.400391 1188.91272 1188.420044 1188.132202 1187.950684 1187.772827 1187.57373 1187.442871 1187.052368 1186.747437 1186.956543 1187.692139 1188.401367 1188.912109 1189.300049 1189.477173 1189.510742 1189.486206 1189.40332 1189.139893 1188.997314 1188.942627 1188.919678 1188.961792 1189.00415 1188.985962 1188.751099 1188.440918 1187.94043 1187.46521 1187.102783 1186.813232 1186.485596 1186.284302 1185.982788 1185.584229 1185.18457 1184.726318 1184.204956 1183.700806 1183.196289 1182.710815 1182.63501 1182.805298 1182.774658 1182.537354 1182.237549 1181.949219 1181.800903 1181.614502 1181.240601 1180.765015 1180.386353 1180.049194 1179.609131 1179.439331 1179.259888 1179.303711 1179.03125 1178.67749 1178.16394 1177.365479 1176.808228 1176.239136 1175.810181 1175.344116 1174.849976 1174.264282 1173.746704 1173.266602 1172.713867 1172.11731 1171.860107 1171.581055 1171.438477 1171.276123 1171.149658 1170.830811 1169.627319 1168.439941 1167.946533 1169.599976 1171.715576 1174.035522 1177.51123 1181.538574 1183.411987 1183.754395 1184.166992 1184.527222 1184.954102 1185.892334 1187.199585 1188.868896 1190.608521 1192.102539 1192.880371 1193.421631 1194.389893 1196.113159 1197.886597 1198.994629 1199.950562 1202.507202 1206.928589 1211.551514 1215.31665 1217.910156 1218.906128 1219.445923 1219.293091 1216.780762 1215.694092 1223.684937 1232.685791 1235.45105 1236.062012 1234.2854 1231.194336 1226.968994 1224.181274 1222.777344 1224.557129 1225.798706 1225.411133 1225.251465 1225.367188 1223.705811 1219.405273 1208.84729 1210.082764 1212.543823 1213.194458 1213.355469 1209.21106 1206.75 1207.293579 1209.553345 1203.855347 1195.718384 1197.50769 1194.626831 1189.078613 1187.243896 1184.468628 1179.875977 1177.067627 1174.100586 1171.13501 1169.240479 1166.44104 1164.087891 1162.112061 1160.982056 1160.477905 1159.976318 1159.181396 1157.668457 1155.716309 1153.901855 1152.361816 1150.921875 1149.862061 1149.088745 1148.333496 1147.681763 1146.549072 1144.5271 1142.375366 1140.539795 1139.093018 1137.851685 1136.73291 1135.449219 1134.054321 1131.957031 1130.692383 1132.703857 1135.314453 1136.414307 1136.426147 1138.376587 1140.29541 1142.16394 1143.98938 1145.449951 1148.834961 1153.212891 1153.830444 1146.631836 1140.767944 1136.15686 1133.016846 1131.365479 1130.106567 1128.376831 1126.779175 1130.997925 1141.55249 1153.803833 1167.256104 1173.459595 1174.844849 1175.525757 1175.400024 1175.973511 1173.395264 1166.835449 1161.209106 1157.66687 1160.310425 1167.021729 1168.794434 1170.56897 1172.089844 1184.444214 1194.999512 1200.676147 1207.024414 1211.557983 1218.266968 1221.179321 1216.311279 1216.94751 1235.43103 1246.193481 1246.281128 1253.605957 1258.338623 1262.866943 1268.688477 1279.209229 1282.251831 1281.403198 1292.453491 1297.012329 1300.884155 1304.346924 1304.383423 1306.497559 1308.184937 1308.528931 1304.533569 1305.676758 1304.58374 1302.205811 1300.189209 1298.494751 1297.296143 1295.845947 1294.256958 1293.279175 1292.597168 1293.677612 1295.23584 1295.458008 1295.171997 1294.501953 1292.647583 1281.85498 1276.389038 1273.991699 1268.850952 1256.908813 1242.276367 1246.75708 1244.49646 1233.552612 1225.799561 1217.149048 1206.540039 1198.660034 1186.748779 1178.528564 1169.599243 1175.898682 1189.298706 1194.727051 1193.709351 1188.58252 1181.914795 1175.477173 1170.546631 1166.959106 1164.025635 1161.493896 1159.167603 1153.876343 1152.421143 1153.500732 1154.716797 1156.416504 1157.990845 1158.973511 1159.902954 1161.00708 1160.737183 1158.947266 1159.463135 1166.238281 1169.245117 1170.397095 1170.513184 1170.182495 1175.779053 1178.422363 1179.749756 1180.490967 1180.49585 1179.713867 1178.167969 1176.104858 1173.845459 1171.535278 1167.688354 1162.505615 1159.771851 1159.088135 1155.465576 1150.417236 1159.381348 1162.174805 1162.114502 1159.230957 1154.903931 1149.10083 1145.785889 1142.116577 1138.402466 1135.296997 1131.750488 1133.670654 1144.973145 1154.697754 1160.437866 1162.140991 1163.10376 1163.175537 1161.747314 1157.959351 1159.805176 1160.400879 1156.265381 1147.665649 1147.010498 1149.942505 1150.74292 1150.459473 1149.818604 1148.931885 1148.517456 1147.999634 1147.313721 1147.7229 1147.444702 1145.440063 1142.537109 1141.167847 1140.55603 1139.480591 1137.668457 1134.733887 1134.539551 1134.500122 1133.958496 1133.121704 1130.133179 1124.435791 1121.823608 1122.093384 1127.943115 1131.573364 1130.628418 1128.398926 1126.217529 1124.276001 1122.552368 1120.64978 1119.324463 1119.024902 1120.657715 1122.328491 1119.151611 1117.597046 1117.645386 1118.551514 1120.353516 1123.662598 1130.722534 1141.336304 1147.35376 1136.269165 1139.453979 1145.511108 1152.81543 1161.459839 1171.395874 1177.105347 1173.719971 1162.14978 1149.870239 1139.94751 1130.34436 1122.543945 1115.189819 1110.158569 1104.250977 1097.631592 1097.419067 1098.587646 1096.917358 1096.299927 1096.842773 1097.955933 1099.952271 1099.033813 1099.89624 1099.963013 1099.686523 1099.129395 1098.517212 1097.641846 1097.393188 1097.542358 1097.443848 1095.478027 1092.002441 1089.803223 1088.204224 +1158.519897 1157.885498 1156.560913 1154.596924 1152.41748 1151.342285 1150.578857 1149.084106 1146.86145 1141.249023 1135.60498 1129.438232 1124.282104 1122.483521 1120.489624 1118.890137 1118.891602 1120.78418 1122.572266 1124.570435 1128.746338 1133.014404 1135.62793 1136.778931 1138.30896 1140.42334 1142.548462 1144.230347 1145.719849 1146.618042 1146.929077 1147.891602 1149.029175 1149.718506 1150.328857 1150.753418 1150.882568 1150.874756 1151.007812 1151.070312 1151.052856 1150.374146 1148.040649 1146.490967 1146.634033 1148.487061 1150.146362 1149.643799 1146.0177 1143.410278 1140.068115 1136.747803 1134.886108 1135.133667 1138.005249 1140.720703 1142.546143 1143.7677 1144.345459 1144.708252 1145.034058 1145.353394 1145.443115 1145.757568 1146.144653 1146.31897 1147.384277 1150.046753 1152.303955 1155.313721 1158.470215 1159.088989 1158.038574 1156.253662 1157.570068 1159.330566 1159.574829 1158.834229 1157.353027 1156.376587 1156.240967 1156.510132 1156.668823 1156.588257 1156.795044 1158.404297 1158.65625 1158.765015 1158.763428 1158.572632 1158.450562 1158.57019 1158.747803 1158.71814 1159.151367 1161.267944 1163.419312 1165.457031 1167.404053 1169.029297 1171.478271 1173.908569 1177.506958 1182.131714 1186.602417 1192.953613 1185.537598 1182.677612 1184.306885 1189.181396 1192.071899 1194.75769 1207.731934 1212.261597 1213.748169 1214.925659 1215.333252 1214.013672 1212.132446 1210.63269 1209.025391 1208.641968 1208.514404 1208.259155 1207.407349 1206.146118 1204.721924 1203.517822 1202.344482 1201.144409 1200.050781 1198.694702 1196.96936 1195.362061 1195.231445 1195.293335 1195.438354 1195.050781 1194.53772 1193.923584 1193.185547 1192.399658 1191.281128 1190.054077 1188.684692 1187.39624 1186.334839 1185.372803 1184.536621 1183.606201 1184.067261 1184.471313 1184.809814 1185.125854 1185.586304 1185.953125 1186.312378 1186.677979 1187.026123 1187.323364 1187.733276 1188.158569 1188.600464 1189.078735 1189.533081 1189.886475 1190.197998 1190.474243 1190.654785 1190.884277 1191.142212 1191.480835 1191.660278 1191.664673 1191.516235 1191.226929 1191.065186 1190.945068 1190.896973 1190.825317 1190.638672 1190.31604 1189.802246 1189.313965 1188.910034 1188.560669 1188.293823 1188.171509 1188.026245 1187.862671 1187.63208 1187.91333 1188.684448 1189.583008 1190.190918 1190.614746 1190.716309 1190.621704 1190.53064 1190.34375 1190.227051 1189.849121 1189.689575 1189.60791 1189.537964 1189.658813 1189.760864 1189.761841 1189.545288 1189.080566 1188.62915 1188.146362 1187.727417 1187.421021 1187.034668 1186.707275 1186.335327 1185.831299 1185.371704 1184.894653 1184.283569 1183.731934 1183.227051 1182.852417 1183.091797 1183.366455 1183.238892 1182.905151 1182.626953 1182.391968 1182.225342 1182.012695 1181.586792 1181.161255 1180.860596 1180.592407 1180.219238 1180.039917 1179.897949 1179.918091 1179.734985 1179.436279 1178.938843 1178.17749 1177.535278 1177.025024 1176.402466 1175.782593 1175.179443 1174.578735 1174.13501 1173.624023 1173.082642 1172.537964 1172.250488 1171.963623 1171.780884 1171.641479 1171.534058 1171.278442 1170.942261 1169.084473 1168.346924 1169.30127 1170.822266 1173.118042 1176.437988 1179.517578 1181.643555 1182.374512 1182.783813 1183.343018 1183.688477 1184.640137 1186.007935 1187.382568 1188.764893 1189.997437 1191.338989 1192.928223 1195.18811 1196.317505 1196.898071 1196.889771 1195.74707 1196.167603 1200.605347 1204.41748 1206.036743 1206.81189 1207.591797 1208.390503 1208.355469 1204.734741 1205.809692 1216.528809 1227.999512 1233.611572 1234.732788 1234.514282 1233.37085 1227.833618 1218.77771 1217.046997 1217.934448 1218.519409 1217.826904 1221.719238 1223.334106 1223.248169 1221.381592 1213.832153 1206.433472 1206.190674 1205.515991 1207.298828 1200.075806 1200.981201 1208.555664 1207.216675 1199.140381 1192.501343 1191.361084 1188.85144 1183.242798 1181.574707 1181.341553 1174.297852 1171.885132 1170.080688 1169.088867 1167.373535 1165.266235 1163.046387 1160.84729 1159.437134 1159.267456 1159.033691 1158.347168 1157.210938 1155.363281 1153.71106 1152.22229 1151.084961 1150.027588 1149.185669 1148.240601 1147.097778 1145.788452 1143.79834 1141.509399 1139.672363 1138.300049 1137.383667 1136.30127 1134.907104 1132.409546 1133.437012 1132.392212 1134.78418 1136.598267 1138.036011 1139.411255 1140.843872 1142.243164 1143.584473 1146.033691 1147.792847 1151.147095 1157.309448 1160.284302 1149.317871 1143.403198 1139.302856 1135.136108 1134.523193 1133.391602 1130.883667 1128.693481 1127.122559 1135.408447 1147.833984 1159.640381 1170.180054 1176.523193 1182.189209 1182.75415 1181.171631 1177.474976 1171.489868 1166.319336 1161.015625 1163.084717 1165.990967 1168.767578 1173.436035 1181.168823 1189.531128 1197.934204 1203.340942 1210.036499 1216.075195 1221.769409 1227.792236 1229.000854 1221.111938 1227.546997 1244.03125 1249.554565 1257.543457 1265.177612 1271.955933 1276.523071 1286.014771 1291.859863 1287.907715 1291.827271 1296.501587 1302.454834 1307.277588 1309.936035 1311.378296 1312.51355 1311.585938 1309.091553 1308.698364 1307.406738 1304.614136 1302.66333 1300.934814 1299.562622 1298.067017 1296.444092 1295.220703 1293.747314 1294.041992 1295.559082 1295.69751 1294.984497 1294.224365 1293.797852 1292.4823 1285.961792 1280.398315 1272.05603 1257.251465 1253.167114 1253.882202 1245.049805 1237.678223 1229.842529 1221.362793 1209.851318 1196.656006 1185.128296 1184.532959 1170.890259 1182.599731 1196.945435 1204.231567 1200.329224 1192.752563 1184.766357 1178.582886 1172.968262 1169.182373 1166.219971 1163.51709 1160.846558 1155.245972 1153.439087 1153.681763 1155.30542 1156.820557 1158.667358 1160.940552 1163.163452 1166.263916 1168.268555 1168.609863 1166.873169 1168.285156 1170.982666 1173.408203 1177.236328 1180.388428 1182.306396 1182.330444 1181.829224 1181.786987 1181.943848 1181.088745 1179.265625 1176.68335 1173.712769 1170.456787 1168.718628 1162.360962 1158.681152 1157.605591 1156.633057 1159.40332 1161.843994 1160.841797 1156.388672 1146.373413 1144.524414 1144.632324 1143.794922 1140.413818 1134.61853 1133.397705 1132.411499 1135.870728 1143.579346 1150.774414 1159.184448 1162.38501 1164.205933 1164.896484 1163.756348 1160.895264 1161.9375 1161.785889 1160.150635 1152.918701 1149.24646 1152.528809 1153.324341 1152.863525 1152.27356 1151.428711 1150.602051 1149.930298 1149.137573 1148.801514 1148.089478 1146.718018 1144.206543 1143.330444 1142.586792 1141.049194 1139.285645 1137.687866 1136.698242 1136.140259 1135.761963 1135.280273 1134.148926 1126.413696 1121.764526 1122.549316 1133.311646 1134.958374 1133.432129 1131.056396 1128.116943 1125.782593 1123.956787 1122.50354 1120.961182 1120.423096 1120.748047 1122.302734 1121.801025 1119.480713 1119.184448 1119.594116 1121.252686 1125.388306 1131.812866 1137.912476 1138.342773 1133.51355 1136.747803 1139.928101 1146.584717 1157.569702 1170.456787 1181.046875 1181.140015 1165.863037 1153.684448 1143.831177 1136.951172 1129.351685 1122.030273 1115.153687 1109.0896 1100.438232 1097.608643 1099.694946 1099.071777 1099.874878 1099.993408 1100.345947 1105.114746 1103.202881 1101.565918 1100.741455 1100.117798 1099.497437 1098.955078 1098.057861 1096.920776 1096.058105 1095.559937 1094.01062 1091.87439 1090.129028 1088.93103 +1160.943604 1160.606689 1159.173584 1157.333618 1154.973877 1153.122803 1151.409302 1149.406982 1146.670288 1140.16333 1134.750977 1130.962402 1127.199097 1125.5448 1124.421143 1123.701172 1122.279175 1121.673584 1121.008667 1120.85376 1123.58374 1128.281494 1132.88208 1135.18396 1137.078369 1139.869751 1142.553101 1144.057617 1144.877075 1145.527466 1146.354858 1146.515015 1147.49353 1149.396973 1150.82373 1151.639771 1152.195068 1152.601196 1153.176758 1153.947021 1154.909058 1155.763184 1156.333252 1158.511108 1160.883179 1162.291626 1163.540771 1163.879272 1158.942871 1149.024658 1144.378296 1140.138062 1138.067871 1137.992554 1139.206787 1140.856323 1142.212769 1143.063599 1143.708008 1144.083618 1144.318481 1144.634155 1144.866699 1144.973389 1145.27124 1145.455811 1147.008301 1148.302246 1149.694702 1151.85498 1155.228638 1156.148071 1154.702026 1153.261841 1155.918823 1158.686279 1157.33313 1153.444946 1152.900269 1153.851318 1154.538818 1154.836304 1155.083618 1155.225098 1154.966553 1155.655762 1155.980835 1156.483398 1156.947632 1157.479492 1158.491943 1158.768677 1158.884277 1158.997314 1159.770996 1161.577026 1163.842773 1166.304199 1168.342407 1169.805298 1170.483276 1172.904785 1177.401733 1181.494385 1186.252563 1196.100098 1192.099365 1188.96228 1190.292603 1194.233887 1199.670654 1207.39563 1210.966553 1212.317383 1212.889771 1213.028809 1212.567261 1211.097778 1209.3396 1208.500732 1206.926392 1206.593018 1206.692749 1206.524414 1205.886108 1204.783203 1203.648193 1202.573242 1201.385742 1200.294434 1199.162109 1198.041016 1197.07605 1196.070679 1195.125732 1194.75 1194.524536 1194.229248 1193.932739 1193.451904 1192.878052 1192.133911 1191.202393 1190.063232 1188.757446 1187.494751 1186.506958 1185.585571 1184.796387 1184.005005 1184.335938 1184.796875 1185.112793 1185.420288 1185.823242 1186.218506 1186.553467 1186.912476 1187.255249 1187.700439 1188.114502 1188.685791 1189.143921 1189.641113 1190.05542 1190.486206 1190.799316 1191.113525 1191.37854 1191.568604 1191.820068 1192.137451 1192.202515 1192.303833 1192.114258 1192.016968 1191.784058 1191.637695 1191.510498 1191.392578 1191.19873 1190.859741 1190.324585 1189.815552 1189.338257 1189.031982 1188.741577 1188.578003 1188.515381 1188.704956 1189.119141 1189.964844 1191.151733 1192.170166 1192.460083 1192.247437 1192.075317 1191.810913 1191.583374 1191.235596 1190.865723 1190.637695 1190.379395 1190.302368 1190.264404 1190.340088 1190.481201 1190.490479 1190.369507 1189.991821 1189.42749 1188.958496 1188.539917 1188.08606 1187.747925 1187.317627 1186.819946 1186.31665 1185.861572 1185.180054 1184.651001 1183.876831 1183.337402 1183.097656 1183.5354 1183.831299 1183.708618 1183.267334 1183.003906 1182.802002 1182.631836 1182.393921 1182.031616 1181.564819 1181.2677 1181.023315 1180.892822 1180.644775 1180.539795 1180.530762 1180.449585 1180.182983 1179.634277 1178.997803 1178.343628 1177.64209 1176.962402 1176.210815 1175.540161 1174.871582 1174.371094 1173.93689 1173.446777 1172.876587 1172.445557 1172.059814 1171.815186 1171.63562 1171.561279 1171.447144 1171.063232 1169.066772 1169.040039 1169.620239 1170.945557 1173.062378 1175.318848 1177.445068 1179.278564 1180.211304 1180.857666 1181.607666 1182.177612 1183.046753 1184.141968 1185.444214 1186.697876 1188.017212 1189.426636 1191.446655 1193.802368 1194.410278 1194.394897 1193.545776 1192.849609 1193.069946 1194.493408 1197.105347 1198.89563 1200.212769 1200.917603 1200.824951 1199.751099 1197.551514 1205.338745 1212.412476 1217.505859 1225.846191 1232.577515 1233.749023 1233.588379 1231.470093 1223.94519 1218.570435 1214.293213 1207.454468 1211.227173 1218.984985 1222.123413 1222.473877 1222.017822 1218.48645 1209.412476 1196.439941 1198.442871 1198.908447 1194.055908 1200.378906 1206.773315 1202.18457 1194.725464 1186.089478 1185.086182 1184.926147 1185.275391 1180.842773 1176.113403 1171.785522 1169.756226 1168.538452 1167.054199 1165.477783 1163.776611 1161.991699 1160.154419 1158.596802 1158.011719 1157.678711 1157.206665 1156.249634 1154.991089 1153.509766 1152.115845 1150.937012 1149.890015 1148.832275 1147.777954 1146.645752 1145.069336 1142.92334 1140.362549 1138.212891 1136.85144 1136.279419 1135.778564 1134.2771 1134.364136 1134.637817 1134.194092 1136.2052 1137.824463 1139.718384 1141.552002 1143.36145 1144.858887 1145.338013 1146.22522 1150.561768 1154.670044 1158.900879 1160.052368 1153.949707 1147.504639 1143.678589 1140.146729 1138.814453 1136.76062 1133.504639 1131.578003 1127.971191 1130.648682 1140.72229 1153.229858 1163.156738 1171.470581 1185.894165 1186.412842 1185.858154 1183.293945 1177.479614 1172.022949 1167.479248 1166.896118 1168.999268 1171.36731 1170.20459 1180.148193 1187.338257 1193.591675 1202.030151 1208.0802 1215.527588 1220.790649 1229.911865 1234.01062 1235.355469 1231.670898 1236.006348 1247.280518 1256.929321 1266.558472 1274.655273 1281.49353 1288.633789 1287.126709 1285.5271 1289.347168 1292.545044 1302.850586 1309.26062 1315.050293 1317.188721 1316.990601 1315.94397 1313.714722 1312.505981 1310.35791 1307.108521 1304.404785 1302.824341 1301.68335 1300.396362 1298.765259 1297.449219 1296.567017 1296.572998 1296.109253 1294.650757 1292.679077 1293.257324 1293.458862 1293.277588 1286.657104 1279.526733 1267.661133 1262.21521 1263.739624 1256.481201 1248.966797 1240.190674 1230.725098 1221.803345 1209.550781 1202.655151 1197.684204 1188.61853 1179.593384 1186.748535 1199.641846 1210.651611 1208.213623 1197.023071 1188.360474 1181.371582 1176.05249 1171.590576 1168.491089 1165.513428 1162.555542 1156.748291 1153.794067 1154.355957 1155.228882 1156.734619 1158.162964 1161.980591 1166.745605 1170.850708 1173.668213 1175.051392 1173.755615 1170.258911 1172.927612 1179.477295 1185.104492 1187.246338 1186.78186 1185.946655 1184.892944 1184.391357 1183.933594 1182.748047 1180.56543 1177.557617 1173.045654 1171.246704 1171.187744 1171.233276 1168.1604 1162.415405 1160.431152 1163.139648 1162.708374 1159.635864 1152.217651 1145.940674 1144.691528 1145.673706 1146.10144 1143.080933 1137.744995 1135.199219 1133.03833 1134.877686 1141.594238 1145.112915 1154.824585 1161.400146 1166.070557 1167.673584 1166.928467 1165.283447 1164.139404 1163.012329 1160.954956 1158.9104 1156.773926 1155.898438 1156.078735 1155.632935 1154.789185 1153.731323 1152.696777 1151.727661 1150.653442 1149.540649 1147.795044 1146.166138 1145.265137 1144.691772 1144.560425 1143.019653 1140.667969 1138.489868 1137.063477 1136.356567 1135.91626 1135.196045 1135.343994 1125.83728 1121.770264 1124.126099 1132.966309 1135.762817 1135.046997 1132.860962 1129.964355 1127.328613 1125.298462 1123.417725 1122.837402 1122.099609 1122.110962 1122.148315 1122.267822 1121.187012 1120.290649 1120.615479 1122.070068 1125.339111 1129.717773 1133.434204 1132.34021 1131.349609 1132.420044 1136.904297 1149.598511 1161.094727 1172.940308 1183.89624 1181.184692 1166.756592 1154.697998 1144.428467 1136.040649 1129.796997 1123.131226 1116.877197 1110.86792 1104.662598 1099.064453 1101.748291 1105.66272 1111.430542 1112.18689 1111.665405 1109.470337 1105.082764 1102.499512 1100.911499 1100.20874 1099.50061 1099.035156 1098.361816 1097.110352 1095.25647 1094.074341 1092.736328 1091.39917 1090.081665 1089.159302 +1165.053589 1163.022217 1161.110352 1158.6073 1156.19751 1154.238647 1151.626709 1148.548706 1144.722656 1136.555786 1133.088013 1131.071045 1129.198486 1128.006592 1126.938599 1125.866821 1125.038086 1124.337769 1123.89624 1122.823242 1120.89624 1123.517944 1128.555908 1133.113281 1135.93103 1139.043335 1143.650269 1146.28186 1146.293579 1146.379028 1147.230957 1147.053345 1146.513306 1149.07666 1151.351562 1152.52417 1153.32373 1154.003296 1154.921997 1156.240967 1157.65918 1159.368164 1160.791504 1162.359253 1164.474854 1167.598022 1171.352173 1173.371216 1168.318115 1156.164673 1147.821655 1144.164917 1141.375977 1140.319214 1140.406982 1141.18457 1142.062012 1142.706421 1143.15564 1143.488037 1143.88501 1144.233521 1144.466675 1144.659912 1144.768677 1145.145142 1145.551636 1146.035522 1147.012207 1148.287964 1149.670288 1150.78894 1149.45813 1149.333984 1149.572388 1149.559204 1150.634033 1151.631958 1152.069702 1152.056152 1152.590454 1153.134644 1153.641968 1154.715332 1156.629761 1157.178345 1157.061768 1156.991821 1156.956909 1158.997437 1159.58313 1159.41272 1159.5354 1159.786987 1160.556274 1161.906128 1164.246704 1167.241943 1170.394043 1171.420776 1172.327515 1174.004517 1177.920166 1180.677856 1181.994751 1187.986084 1193.66626 1197.253662 1198.328247 1205.339111 1210.336182 1210.459961 1211.365967 1211.695068 1211.950806 1211.6521 1210.637939 1208.35083 1207.453369 1206.933594 1206.151001 1205.696777 1205.2771 1205.109985 1204.499756 1203.565796 1202.572266 1201.591675 1200.543579 1199.349854 1198.39563 1197.570435 1196.844971 1196.1875 1195.266846 1194.522461 1194.078735 1193.768555 1193.409668 1193.127808 1192.567993 1191.915283 1191.021362 1189.971191 1188.764404 1187.662598 1186.733765 1185.933105 1185.192993 1184.463623 1184.67395 1184.969482 1185.426025 1185.72583 1186.109985 1186.431519 1186.756714 1187.117065 1187.544922 1188.040771 1188.648315 1189.132202 1189.570068 1190.175659 1190.540771 1190.967041 1191.37854 1191.700684 1192.008911 1192.291504 1192.531128 1192.687744 1192.891846 1192.896851 1192.844849 1192.605835 1192.573608 1192.443481 1192.283325 1192.090576 1191.810547 1191.484497 1190.869263 1190.339844 1189.823486 1189.459229 1189.226196 1189.15918 1188.903687 1189.612671 1190.988892 1192.686768 1194.060913 1194.592651 1194.498901 1193.886597 1193.199585 1192.800659 1192.365479 1191.878906 1191.579102 1191.260376 1191.068359 1191.062012 1191.03186 1191.119629 1191.276489 1191.235229 1191.161865 1190.852905 1190.46936 1189.891724 1189.437988 1188.997681 1188.590332 1188.109009 1187.522949 1186.995117 1186.354614 1185.706177 1185.10376 1184.477173 1183.624268 1183.521973 1184.192627 1184.296021 1184.108154 1183.79541 1183.49353 1183.281494 1183.115234 1182.850464 1182.457397 1182.034546 1181.727905 1181.519531 1181.286987 1181.297119 1181.286011 1181.234497 1181.213623 1180.93396 1180.491333 1179.815063 1179.042847 1178.238892 1177.446411 1176.577393 1175.873657 1175.307739 1174.758179 1174.326294 1173.767944 1173.161987 1172.689087 1172.208252 1171.683105 1171.183105 1171.208984 1171.376221 1170.42627 1169.462402 1170.078613 1170.798462 1170.803345 1172.575439 1174.15979 1175.735962 1177.03064 1178.153809 1179.033325 1179.725464 1180.56958 1181.600342 1182.599609 1183.604858 1184.655273 1186.087646 1187.633057 1188.970337 1189.640503 1189.306274 1188.81897 1189.10022 1189.451172 1190.190186 1191.443604 1192.914185 1193.859619 1194.798462 1195.304321 1194.977051 1193.678101 1194.268311 1206.251831 1210.461182 1212.946533 1216.329102 1221.878296 1230.012695 1234.057617 1232.994385 1228.551514 1221.670166 1215.241821 1210.570801 1207.116455 1212.016113 1220.264771 1219.674805 1220.37207 1217.614868 1210.052856 1199.245361 1194.85144 1193.612549 1192.284424 1197.282227 1197.253296 1193.610718 1189.83313 1184.799927 1180.884521 1180.733154 1181.901245 1177.348755 1173.407227 1170.744141 1169.316406 1167.766846 1165.850952 1163.95813 1162.25647 1161.258667 1160.233765 1158.605835 1157.467285 1156.796021 1156.192017 1155.348267 1154.365479 1153.262329 1151.91626 1150.659546 1149.654663 1148.514038 1147.332764 1145.896362 1144.08728 1141.800415 1139.203735 1136.270264 1134.561768 1134.378052 1134.866699 1133.206299 1134.98291 1134.609741 1135.042236 1137.511597 1139.528564 1141.415161 1143.105957 1145.603271 1147.430054 1148.134888 1149.073608 1152.932861 1157.705688 1159.859863 1159.920044 1158.821899 1153.208496 1146.358521 1143.951416 1144.738281 1142.546875 1138.496948 1135.106812 1131.422852 1129.664185 1139.109009 1147.805176 1156.910156 1166.186401 1178.022949 1185.156006 1190.786377 1189.697144 1183.368652 1178.635132 1171.630493 1169.318481 1171.031616 1175.287842 1181.429932 1183.281006 1183.329224 1193.611694 1202.5354 1210.310669 1218.145752 1222.971924 1231.702026 1231.401855 1242.220703 1245.598267 1243.829834 1243.070679 1253.652222 1263.934082 1271.515137 1276.870972 1278.786987 1278.748657 1279.809937 1291.142578 1298.291016 1305.187378 1312.252197 1318.361206 1321.616089 1321.766724 1319.855957 1317.976685 1316.405762 1314.148804 1311.671631 1308.049438 1304.929321 1303.855225 1302.628174 1301.030151 1300.059448 1299.190918 1298.362549 1296.636475 1293.734619 1291.704956 1291.489868 1292.006348 1287.551147 1281.431152 1279.038208 1280.141968 1275.480347 1270.054688 1260.937012 1249.703857 1241.31897 1235.154907 1229.053833 1221.911377 1213.004761 1202.815063 1189.687988 1181.531494 1187.147583 1202.010742 1211.197632 1210.391113 1201.515503 1192.397827 1184.12854 1178.921753 1174.370728 1170.584473 1167.363403 1164.09021 1158.283447 1155.481934 1154.625366 1155.142578 1156.937988 1158.773438 1163.119873 1168.369995 1172.79248 1177.408813 1180.681519 1180.417725 1175.732666 1172.911255 1182.940918 1188.392578 1191.638184 1191.667847 1190.627686 1188.946777 1187.458008 1186.312012 1184.49646 1182.741333 1179.349121 1174.259521 1171.201172 1170.848999 1170.770508 1169.685181 1169.361206 1168.270386 1166.201782 1162.800903 1159.293579 1148.333496 1145.307495 1146.504761 1149.108887 1149.11853 1147.555542 1143.016724 1137.754883 1133.749268 1138.389282 1142.355469 1147.144897 1154.490112 1161.338379 1169.411743 1170.255981 1169.513794 1167.759033 1166.139771 1164.221313 1162.055298 1160.087402 1158.168091 1158.532227 1159.153564 1158.261719 1157.04248 1155.831543 1154.739502 1153.534668 1152.230713 1150.725464 1148.606812 1147.529297 1147.488037 1146.371704 1146.861816 1144.993408 1140.745728 1137.819336 1136.487305 1135.789673 1134.247192 1131.617188 1128.270752 1121.979858 1124.101562 1132.037842 1135.077271 1135.504517 1135.075928 1133.344604 1130.734131 1128.536011 1126.506104 1125.287231 1124.452881 1123.953125 1123.446289 1122.386963 1122.268677 1122.288818 1121.262329 1121.281494 1122.908813 1125.036133 1125.397095 1123.307373 1127.877441 1130.18103 1132.032471 1136.632812 1149.855469 1161.376953 1173.896729 1185.312256 1178.208618 1163.090088 1150.349609 1140.497559 1132.471924 1127.540161 1122.218018 1117.364502 1112.917358 1109.676392 1105.634521 1104.341797 1106.039673 1110.380371 1110.127563 1108.721069 1107.159302 1104.107422 1101.810181 1100.523438 1099.558472 1098.478638 1098.366821 1097.371948 1096.106445 1094.391846 1093.022095 1091.958252 1090.857544 1089.844727 1089.017212 +1168.127075 1165.134644 1162.595215 1159.65979 1157.001831 1155.620117 1152.253174 1146.587158 1143.251709 1135.555908 1133.078003 1131.572388 1130.889893 1130.45813 1129.674072 1128.695801 1127.373657 1126.249023 1125.377563 1124.171143 1122.836914 1121.449707 1123.44751 1129.04248 1134.225586 1136.975098 1143.084839 1147.077515 1147.145142 1147.496582 1147.905151 1148.482788 1149.28125 1150.696899 1152.180786 1153.282593 1154.182251 1155.126099 1156.081543 1157.461792 1158.900513 1160.762207 1162.104614 1163.79895 1166.235107 1169.396118 1171.721069 1173.566162 1168.887329 1155.574585 1148.480103 1146.016479 1143.306152 1141.760376 1141.283203 1141.435913 1141.895508 1142.344482 1142.816162 1143.167358 1143.440308 1143.730103 1144.103394 1144.390381 1144.950806 1145.622192 1146.386719 1146.934448 1146.987671 1146.818726 1147.191406 1147.894897 1148.345215 1149.611938 1150.318848 1151.152832 1152.375488 1153.694946 1154.729126 1154.797607 1154.791138 1155.294312 1156.088135 1158.034424 1160.165161 1160.206421 1159.794434 1158.896973 1157.579224 1157.922119 1159.200439 1159.276733 1159.608276 1159.96167 1160.578979 1161.793091 1164.023804 1167.287476 1170.69397 1172.164551 1173.468872 1175.696045 1178.758423 1181.951782 1184.735107 1191.711792 1200.006226 1207.963135 1209.788574 1209.276367 1209.332642 1208.689087 1210.120239 1210.76709 1210.964111 1210.63916 1209.565918 1207.407349 1206.860474 1206.366821 1205.679443 1205.07666 1204.530518 1203.960449 1203.359741 1202.473267 1201.620605 1200.640625 1199.629272 1198.713745 1197.672119 1196.712036 1196.035889 1195.371338 1195.033325 1194.456543 1193.895386 1193.422974 1193.055664 1192.576294 1192.34021 1191.681641 1190.879272 1189.931885 1188.866821 1187.862915 1186.979736 1186.297974 1185.741943 1184.928101 1185.022339 1185.22998 1185.575195 1185.928833 1186.249878 1186.641235 1187.03186 1187.496216 1187.936157 1188.497803 1189.029053 1189.68396 1190.138916 1190.61438 1190.968262 1191.352173 1191.760986 1192.217651 1192.610474 1192.868164 1193.104614 1193.342407 1193.442627 1193.508911 1193.43103 1193.358643 1193.260742 1193.196289 1193.093628 1192.845337 1192.48877 1192.048706 1191.608521 1190.954224 1190.393555 1190.013428 1189.749878 1189.564453 1189.607178 1190.880615 1193.05481 1195.038696 1195.678711 1195.683594 1195.420288 1194.886597 1194.292725 1193.615601 1193.034546 1192.674927 1192.213623 1192.005859 1191.875977 1191.86145 1191.895752 1191.977783 1192.037842 1192.092041 1191.923096 1191.69165 1191.317017 1190.802979 1190.33728 1189.856689 1189.375977 1188.750977 1188.084961 1187.564087 1186.906494 1186.266113 1185.724609 1185.220947 1184.88562 1184.630615 1184.747559 1184.734863 1184.68335 1184.368652 1184.079346 1183.874023 1183.623779 1183.364014 1182.938965 1182.528076 1182.184814 1181.938721 1181.774414 1181.747314 1181.925781 1182.04187 1182.064697 1181.856201 1181.332642 1180.53479 1179.691406 1178.702881 1177.783813 1177.090576 1176.269897 1175.70813 1175.126587 1174.626099 1174.123657 1173.607544 1173.088135 1172.494751 1171.853271 1171.08606 1170.911499 1170.879517 1171.211426 1170.841797 1170.914429 1170.968262 1171.147217 1171.130737 1172.564331 1173.887817 1175.220703 1176.275879 1177.065186 1177.999512 1179.104736 1180.200317 1181.37793 1182.553101 1183.347656 1184.709106 1186.044434 1186.45105 1185.951172 1183.49292 1183.352539 1184.033081 1185.239868 1187.221802 1188.599243 1189.836182 1190.806519 1191.557373 1191.956665 1192.005005 1191.852295 1194.000488 1198.376099 1205.266846 1207.857544 1211.85791 1215.344727 1221.437866 1229.738525 1232.535156 1231.388428 1225.507446 1218.579102 1213.982788 1208.589966 1204.056274 1205.029419 1207.248901 1210.701416 1212.028198 1208.665039 1201.891968 1196.241943 1188.053223 1183.783447 1189.07312 1188.836548 1187.240723 1185.867432 1183.404297 1179.364136 1176.966919 1172.595459 1171.483276 1170.828735 1169.797119 1168.484619 1166.849243 1164.940674 1162.4823 1160.464478 1159.816528 1159.179443 1158.154419 1157.098877 1156.254028 1155.516235 1154.713623 1153.947632 1152.840942 1151.616089 1150.389526 1149.201782 1148.230835 1147.086182 1145.318726 1142.993286 1140.724487 1138.161255 1135.108887 1134.55542 1134.787598 1134.70813 1135.037964 1135.634644 1134.583252 1135.446411 1138.525146 1141.315918 1143.768921 1144.645874 1146.187256 1148.508423 1150.385742 1152.492432 1155.348267 1158.083618 1160.734497 1161.456787 1161.430176 1159.9375 1151.421875 1149.197388 1150.324341 1148.207764 1144.583496 1140.644043 1136.529785 1129.804565 1134.917114 1147.239258 1153.390381 1158.401489 1169.455322 1178.573853 1190.706299 1197.594116 1192.53479 1185.188232 1174.808594 1169.815063 1173.170288 1177.511353 1184.067017 1190.23291 1196.608154 1196.109009 1197.78125 1209.955078 1218.478271 1226.455933 1234.229126 1239.770142 1243.039673 1247.692993 1250.103149 1254.797485 1256.400146 1257.072754 1266.687012 1267.766602 1267.42981 1275.130737 1281.955444 1292.194458 1301.822632 1310.109375 1317.367798 1322.192871 1326.055786 1327.228271 1326.06958 1324.11853 1321.567383 1319.028931 1317.403809 1315.744385 1311.439087 1307.811279 1304.905029 1303.393799 1302.121826 1301.406494 1300.478271 1298.11853 1294.772827 1292.505981 1291.150635 1289.365356 1286.446289 1282.794434 1286.209839 1286.652832 1281.36145 1273.082642 1264.908325 1253.766357 1250.252808 1244.13916 1233.981445 1224.756958 1214.992554 1204.078247 1196.890015 1191.133911 1186.745728 1204.212769 1218.201172 1214.134766 1205.473267 1195.583374 1187.038696 1181.114258 1176.635864 1172.685181 1169.172363 1165.588867 1159.321777 1157.254639 1155.803223 1155.254272 1157.592896 1160.536743 1164.800049 1169.031616 1174.652588 1181.134644 1185.122803 1186.312134 1184.163208 1180.208862 1183.763184 1191.581055 1196.095337 1196.379639 1195.678589 1193.307617 1190.560303 1188.453735 1186.649292 1184.756714 1181.307617 1177.376343 1172.172241 1171.907349 1172.715576 1172.89624 1172.664307 1171.923096 1166.766479 1161.11499 1146.510864 1147.197632 1148.550903 1150.668701 1153.596313 1152.641968 1149.759399 1145.762207 1141.744751 1136.429932 1143.216797 1147.047852 1145.770142 1153.462524 1161.544312 1171.197998 1171.959961 1171.244019 1169.633057 1167.80542 1165.477783 1162.795288 1160.198853 1158.346436 1160.143921 1160.685303 1159.88501 1158.875488 1157.671021 1156.548096 1155.331787 1153.752197 1152.169312 1150.735107 1149.591309 1148.862305 1148.240723 1147.476685 1143.057861 1137.174561 1134.248779 1134.263916 1134.224487 1133.154419 1130.616455 1125.2854 1123.570557 1131.506104 1136.025635 1135.919434 1135.109741 1134.268433 1132.582886 1130.857056 1129.01001 1127.525146 1126.306763 1125.41626 1124.770386 1124.110596 1122.853638 1122.226929 1122.311646 1121.977295 1121.752075 1123.191528 1123.939697 1122.446045 1122.135864 1127.283447 1131.66687 1133.853271 1138.981567 1148.27832 1159.280518 1172.149292 1180.429199 1172.532593 1159.813354 1145.006348 1138.312866 1131.834717 1125.42749 1120.322632 1116.540894 1113.132202 1110.449585 1108.134277 1105.085449 1103.951416 1104.686646 1104.567139 1103.261597 1102.435303 1101.247192 1100.020386 1099.224976 1098.497314 1097.184082 1096.677002 1095.984253 1094.531616 1093.268921 1092.079346 1090.976929 1090.2229 1089.385986 1088.495972 +1169.708984 1166.878296 1164.292603 1161.202637 1159.320923 1158.422485 1155.740967 1151.416382 1147.222534 1138.455322 1133.681274 1132.124023 1132.256104 1133.610107 1132.855347 1131.255005 1129.614258 1128.07605 1126.877563 1125.593262 1124.288818 1123.001343 1122.17688 1123.448242 1127.839111 1132.492065 1135.973267 1141.967285 1146.368042 1147.322388 1148.107056 1149.100098 1149.994507 1151.344482 1152.677002 1153.930054 1155.048584 1155.854614 1156.599487 1157.436279 1158.821411 1160.479858 1162.182007 1163.934692 1165.69043 1168.088379 1168.891968 1168.63501 1160.692871 1152.229248 1146.919067 1145.153931 1143.173828 1141.889771 1141.370483 1141.267822 1141.470825 1141.93457 1142.379028 1142.896484 1143.217773 1143.540283 1143.931763 1144.671021 1145.393677 1146.337158 1147.920654 1149.117676 1149.519775 1149.355957 1148.953369 1149.187378 1149.787109 1150.826782 1151.823486 1152.966309 1154.646973 1156.930298 1158.830444 1158.892334 1158.865479 1159.050049 1159.425415 1160.012695 1161.897339 1162.687866 1162.240967 1161.41394 1160.44165 1159.509888 1158.487305 1158.224365 1158.727051 1159.211304 1160.030518 1160.992065 1162.899536 1166.061157 1169.184204 1171.178345 1173.103027 1175.573975 1180.307251 1184.873901 1191.572632 1199.880493 1208.832397 1210.919189 1209.822266 1207.774902 1205.806885 1207.437256 1208.99353 1209.842896 1210.184448 1209.998901 1209.421997 1208.253418 1207.579224 1206.628052 1205.670898 1204.864624 1204.013794 1203.19397 1202.293945 1201.371216 1200.482178 1199.783447 1198.825195 1197.677368 1196.775269 1195.796021 1195.208862 1194.988892 1194.668335 1194.265991 1193.78418 1193.240601 1192.816162 1192.333862 1191.948364 1191.489258 1190.771484 1189.94873 1188.931641 1188.121216 1187.376831 1186.787231 1186.252441 1185.595093 1185.41748 1185.644165 1185.819336 1186.11084 1186.510132 1186.886108 1187.406006 1187.91333 1188.553833 1189.037598 1189.63208 1190.219971 1190.653076 1191.162354 1191.455688 1191.848022 1192.247803 1192.72229 1193.076294 1193.39917 1193.69812 1194.034424 1194.141724 1194.142334 1194.132202 1193.970459 1193.921265 1193.826904 1193.800049 1193.473633 1193.235229 1192.994751 1192.416016 1191.656982 1191.025879 1190.430908 1190.146484 1189.96582 1190.137451 1191.958618 1194.111328 1195.835938 1196.000366 1195.950928 1195.816284 1195.421875 1194.914673 1194.272095 1193.639404 1193.094604 1192.758301 1192.565918 1192.497803 1192.484863 1192.575073 1192.594727 1192.770874 1192.784546 1192.752808 1192.49231 1192.117554 1191.621704 1191.105103 1190.559692 1190.009888 1189.355835 1188.657104 1187.942627 1187.336426 1186.885254 1186.468506 1186.193481 1185.788696 1185.47168 1185.375122 1185.333008 1185.171387 1184.89563 1184.590576 1184.418945 1184.075073 1183.774658 1183.353271 1182.983643 1182.643188 1182.414673 1182.154419 1182.163208 1182.435059 1182.822632 1182.955566 1182.722778 1182.197388 1181.304443 1180.205322 1179.151245 1178.30249 1177.467896 1176.78186 1176.222412 1175.589844 1175.085938 1174.578125 1174.23584 1173.903564 1173.446167 1172.855835 1172.43689 1172.319336 1172.204346 1171.614014 1171.006958 1170.99646 1171.214233 1171.646606 1171.078491 1170.911499 1171.942261 1173.22583 1174.156738 1175.19397 1176.49939 1177.65979 1178.7677 1179.720825 1180.679199 1181.960327 1183.014771 1183.802246 1183.911011 1183.413818 1182.364746 1181.959351 1182.145386 1182.841187 1184.747925 1186.175293 1187.333374 1188.140015 1188.616211 1188.796387 1188.911255 1189.235107 1191.062012 1193.043823 1195.221558 1202.189087 1207.22229 1208.050537 1211.864502 1222.241455 1230.415771 1232.432983 1228.400269 1222.389893 1217.831787 1211.491455 1204.352417 1194.197876 1195.407349 1198.061279 1203.833496 1202.934448 1197.433472 1194.414062 1188.966309 1183.995239 1182.429443 1182.278564 1181.997314 1181.729614 1179.450195 1175.662964 1174.213623 1172.564087 1170.167847 1169.34436 1168.611206 1167.624512 1166.2323 1164.39209 1161.865234 1158.677246 1158.620361 1158.350098 1157.640137 1156.817383 1156.023804 1155.167236 1154.290649 1153.467163 1152.496826 1151.239502 1149.993042 1148.260376 1147.430786 1146.85083 1144.924927 1142.492065 1140.064087 1137.766113 1135.722046 1135.278076 1136.007812 1136.395752 1136.574951 1136.80542 1136.947144 1137.93689 1140.620483 1143.55603 1146.272095 1147.450806 1146.19873 1148.170654 1151.960571 1154.848511 1158.393311 1159.525635 1161.563232 1162.847534 1163.470825 1162.803955 1158.971313 1156.490356 1154.727173 1153.690063 1150.398315 1145.979492 1140.915771 1136.192261 1129.204834 1137.990479 1159.615234 1161.461182 1167.195923 1174.31189 1182.540649 1191.112305 1191.858643 1182.982056 1176.601685 1170.890869 1171.474854 1177.649048 1184.82605 1193.3396 1198.592651 1202.748291 1200.569336 1205.123901 1209.540527 1221.12793 1232.14917 1239.804932 1246.434204 1251.396851 1256.55603 1256.526611 1260.537842 1265.792236 1270.358521 1274.95105 1280.723267 1285.223511 1293.374023 1294.866089 1303.473633 1311.989868 1320.406494 1326.907104 1330.631104 1332.850708 1332.220581 1330.402344 1328.393921 1325.64502 1323.686646 1321.713257 1318.829468 1314.178467 1308.570068 1304.640015 1303.825195 1303.833862 1302.848389 1300.333008 1296.641724 1293.674072 1291.663086 1289.677734 1288.032715 1287.979126 1293.419189 1292.604736 1287.737671 1282.931152 1272.895508 1266.891235 1258.675781 1248.3396 1235.207153 1219.359741 1216.680542 1211.876221 1208.462769 1200.362549 1192.451294 1204.049927 1218.66626 1219.620239 1210.683594 1199.154785 1190.095215 1183.07251 1178.664307 1174.580688 1170.59668 1167.0448 1160.188843 1157.95874 1156.587036 1155.967163 1158.484497 1162.655518 1167.427124 1172.346436 1178.219116 1183.675049 1189.885376 1190.507324 1187.569214 1183.334351 1184.557739 1195.302124 1198.609375 1199.442139 1198.253906 1195.217896 1192.327026 1190.797974 1188.473999 1185.169434 1181.886475 1180.343628 1177.999756 1176.308838 1175.160889 1173.673706 1171.937134 1167.848267 1158.507446 1145.9375 1143.860229 1145.887329 1152.400513 1159.411865 1158.23291 1156.446289 1152.377441 1148.044556 1146.970459 1146.940918 1147.378906 1149.12146 1149.741821 1153.802368 1159.374512 1168.155884 1172.350952 1171.69043 1171.192017 1169.267334 1166.840454 1164.411133 1161.532959 1160.060181 1161.930298 1162.023926 1161.489136 1160.471069 1159.303589 1158.076172 1156.702271 1155.074707 1153.593628 1152.1073 1150.75354 1149.628784 1148.626221 1146.732056 1136.189331 1134.482056 1134.485474 1134.447144 1134.442749 1134.835083 1133.546509 1131.648315 1133.093994 1136.459351 1136.918335 1135.780151 1134.140991 1133.338135 1132.060303 1130.777588 1129.375244 1128.013916 1126.661133 1125.676514 1125.010376 1124.204468 1123.236328 1122.269897 1122.244263 1122.351929 1121.904541 1122.911011 1122.952515 1121.996094 1121.816406 1129.855713 1135.793457 1136.426392 1140.60144 1146.926758 1156.714355 1168.893799 1173.945068 1167.297852 1156.631104 1143.605713 1136.648926 1131.150757 1124.84436 1119.991699 1115.036621 1110.577393 1108.858032 1106.914307 1104.119385 1100.306152 1098.562988 1098.188599 1097.604614 1097.66687 1097.83374 1097.935669 1097.866089 1097.705811 1096.214722 1095.076294 1094.035278 1092.773926 1091.728271 1090.836182 1090.065186 1089.248535 1088.54187 1087.684082 +1170.47937 1168.499634 1166.588013 1164.607056 1162.914673 1161.709106 1159.942993 1155.990112 1148.380859 1137.283569 1133.098022 1132.585815 1133.688232 1136.207642 1135.331543 1133.206299 1131.589478 1130.027954 1128.554932 1127.223511 1125.830444 1124.482056 1123.603027 1123.226929 1123.036621 1126.470825 1130.75769 1133.095337 1137.968872 1144.439453 1147.373901 1148.951538 1150.153442 1151.305908 1152.967529 1154.528931 1155.761353 1156.626831 1156.896606 1157.440186 1158.650879 1159.96814 1161.979248 1163.418335 1164.602661 1164.877075 1162.702026 1159.231934 1153.426025 1147.725586 1145.314453 1143.314453 1141.885132 1140.920898 1140.797363 1140.818359 1140.917847 1141.315308 1141.855347 1142.354004 1143.015137 1143.218872 1144.22644 1145.197754 1145.607666 1146.470215 1148.843018 1150.736938 1151.623047 1152.065186 1151.990967 1152.154053 1152.510864 1152.955322 1153.640015 1154.749878 1156.539062 1158.774414 1160.677368 1161.510376 1161.788208 1162.460815 1163.20752 1163.98584 1165.277954 1165.456787 1165.002075 1164.003418 1163.060791 1162.449707 1161.588379 1160.462402 1159.628296 1159.895874 1159.889526 1160.329102 1161.623047 1164.28064 1166.919312 1169.191528 1171.034912 1174.239136 1179.879395 1185.530518 1193.316895 1201.043335 1208.847778 1210.281982 1209.166748 1204.247437 1202.373535 1206.958618 1208.575439 1209.097534 1209.480713 1209.480103 1209.155029 1208.666992 1207.766846 1207.356689 1206.31897 1205.004395 1203.731567 1202.422607 1201.16272 1200.107178 1199.410156 1198.848022 1198.079468 1196.93811 1195.713989 1195.193726 1194.761719 1194.53064 1194.37561 1194.094727 1193.608398 1193.179565 1192.675171 1192.178101 1191.769531 1191.196289 1190.669678 1189.945801 1189.058716 1188.306885 1187.689575 1187.190186 1186.819336 1186.213379 1186.023926 1185.937012 1186.136597 1186.414185 1186.865967 1187.31958 1187.901489 1188.46814 1189.161865 1189.764526 1190.297974 1190.823486 1191.283203 1191.660278 1191.953979 1192.317627 1192.771484 1193.146484 1193.502441 1193.909546 1194.299194 1194.613403 1194.793091 1194.81665 1194.79895 1194.615112 1194.411743 1194.37207 1194.424194 1194.417725 1194.271606 1193.924927 1193.377686 1192.459595 1191.545898 1190.912842 1190.536377 1190.289185 1191.13623 1192.716064 1194.601562 1195.870117 1196.11084 1196.109131 1196.075439 1195.737915 1195.293213 1194.704468 1193.99292 1193.518677 1193.2146 1193.1604 1193.06897 1193.085693 1193.266235 1193.348633 1193.436768 1193.564209 1193.496948 1193.224365 1192.837158 1192.379761 1191.771729 1191.182861 1190.524292 1189.821289 1189.059692 1188.444336 1187.848999 1187.553345 1187.292603 1186.893555 1186.494141 1186.174805 1186.011963 1185.950195 1185.778198 1185.513794 1185.219482 1184.873535 1184.520996 1184.13147 1183.771973 1183.398682 1183.232178 1183.129028 1182.678833 1182.54248 1182.929688 1183.241943 1183.457886 1183.383423 1182.786987 1182.011108 1180.799438 1179.769287 1178.782715 1177.964111 1177.307007 1176.816406 1176.256348 1175.684204 1175.291382 1174.912354 1174.656006 1174.319824 1173.992065 1173.652588 1173.448853 1172.802246 1171.836548 1171.035156 1171.008789 1171.165771 1171.724609 1172.005005 1171.461182 1171.030273 1171.243896 1172.270874 1173.968018 1175.582886 1176.772217 1177.870972 1178.764526 1179.654907 1180.536499 1181.420776 1181.956909 1182.157104 1181.996216 1181.795532 1181.994629 1181.946289 1182.188843 1182.912842 1184.161255 1185.283569 1185.994995 1186.390503 1186.437012 1185.858765 1184.693848 1187.077148 1189.872437 1192.415039 1195.553711 1198.902466 1200.704468 1204.793335 1215.099365 1226.310425 1231.689453 1229.653931 1225.143799 1220.778198 1215.572021 1210.890991 1203.603882 1195.10022 1193.822144 1194.045166 1193.522095 1191.952637 1189.377563 1187.435547 1185.553589 1183.803467 1181.903931 1179.721802 1178.560425 1175.20813 1171.071411 1171.17749 1170.666626 1169.74231 1168.716675 1167.86084 1166.963013 1165.73938 1164.116943 1162.389526 1160.824341 1159.932495 1159.291748 1158.359497 1156.958496 1155.925659 1154.963135 1154.047607 1153.081787 1152.117798 1150.957153 1149.540039 1147.664795 1146.35437 1145.655273 1144.284912 1142.059204 1139.592773 1137.560791 1136.0896 1135.790283 1136.944092 1137.594604 1138.068604 1138.555542 1139.314575 1140.674072 1142.636597 1144.782349 1147.130493 1149.025757 1149.082764 1150.713135 1153.938599 1156.297119 1158.651733 1160.685669 1162.629883 1164.340332 1165.705322 1166.006714 1164.602905 1162.621216 1160.572998 1160.71936 1156.440552 1148.883423 1141.745239 1136.614624 1129.300903 1135.034424 1158.587769 1165.198975 1169.504517 1171.419312 1175.832397 1179.603882 1180.993286 1183.2146 1182.980957 1177.817627 1170.786499 1178.223267 1183.320068 1193.427979 1200.133057 1207.10083 1210.429443 1210.875488 1210.970703 1213.807129 1217.524536 1232.51416 1243.347656 1251.812256 1257.667847 1258.952759 1260.826904 1264.962158 1268.532349 1274.193115 1280.035889 1287.528809 1293.951416 1297.044678 1302.298584 1311.242798 1321.923218 1330.660889 1335.097046 1338.369507 1339.095703 1336.891113 1334.432617 1332.122681 1329.957275 1327.081543 1323.630005 1319.276123 1313.889526 1308.056396 1307.072266 1307.465332 1305.656738 1302.976562 1299.224854 1294.959473 1291.932739 1290.562378 1289.843262 1290.172729 1292.503296 1293.206543 1292.9198 1287.903198 1283.502563 1272.7146 1259.226318 1246.268066 1235.77124 1232.460938 1227.884888 1222.837402 1217.674561 1209.987427 1195.376465 1201.105225 1215.267456 1222.969849 1215.974243 1203.555664 1192.936279 1185.673828 1180.589966 1176.076538 1172.014526 1168.511719 1161.260254 1158.471313 1156.922974 1157.202759 1159.315186 1164.464355 1169.683838 1175.778809 1182.062988 1189.656006 1196.109741 1196.108643 1192.434082 1186.698242 1185.18042 1196.463867 1202.0354 1202.905884 1200.643677 1195.639771 1194.822266 1194.330811 1192.032715 1188.239014 1184.789673 1184.476196 1182.829468 1179.768066 1176.328125 1172.934814 1168.223999 1160.667114 1147.143311 1147.70105 1145.699341 1152.463989 1161.706543 1170.378296 1167.003296 1160.465698 1153.988892 1146.982422 1145.821045 1146.292969 1146.769287 1150.705078 1153.009766 1155.059448 1156.721191 1162.21936 1168.750488 1171.207275 1171.072021 1169.468262 1167.843018 1166.231812 1164.847534 1164.117065 1163.932861 1163.668579 1162.950073 1161.964478 1160.796631 1159.329834 1158.061646 1156.584229 1154.893921 1152.632202 1151.132935 1149.7146 1147.903564 1139.745728 1134.394043 1137.259521 1138.061401 1134.469849 1135.080688 1137.348755 1134.83728 1135.465942 1135.502808 1138.379028 1137.016357 1134.371582 1133.517212 1132.900513 1132.229614 1131.253052 1129.632812 1127.975952 1126.421387 1125.252441 1124.55249 1123.981323 1123.471802 1122.580444 1122.252075 1122.251587 1121.929565 1122.209717 1122.384155 1121.233276 1120.861816 1127.028076 1134.284302 1134.247681 1139.353882 1144.455444 1153.55188 1163.754883 1167.473755 1161.193726 1151.574097 1139.019653 1132.542847 1128.541748 1125.107178 1120.716797 1113.830688 1109.331909 1107.431396 1105.750122 1103.339355 1100.127441 1097.902222 1097.393311 1097.160767 1097.136475 1097.037109 1097.06311 1096.624023 1096.047241 1094.911133 1093.594971 1092.075195 1090.817261 1089.998657 1089.583374 1088.946777 1088.260376 1087.65564 1087.059082 +1173.115601 1170.707275 1169.319214 1168.325317 1166.756348 1164.945068 1162.448364 1159.385742 1147.515869 1136.497192 1132.758911 1132.51123 1134.449219 1139.749023 1140.11438 1134.935669 1133.019653 1131.515869 1130.080688 1128.629639 1127.19104 1125.914795 1124.966553 1124.337769 1123.968262 1123.816772 1127.240479 1129.634766 1132.325439 1136.637695 1143.704346 1147.504395 1149.211792 1150.6521 1152.200439 1154.598145 1156.766113 1157.777466 1158.103149 1157.865112 1158.386841 1159.925415 1161.747803 1162.903687 1163.279175 1161.810303 1157.470215 1151.310791 1146.384399 1144.911743 1143.192383 1141.367432 1140.09082 1139.649658 1140.305176 1140.597656 1140.825317 1141.034912 1141.411865 1142.026733 1142.597534 1143.54187 1145.152588 1146.020752 1146.058838 1147.297241 1150.260864 1153.202759 1154.812622 1155.514404 1155.554688 1155.577637 1155.745239 1155.435547 1155.123535 1155.869507 1157.076782 1158.910034 1161.297974 1163.249512 1164.752075 1166.095215 1166.857788 1168.062378 1169.324707 1169.040894 1167.705444 1166.627319 1165.606812 1165.382568 1164.603882 1163.464966 1162.858765 1162.196533 1162.06604 1161.862183 1161.945801 1162.657471 1164.909424 1167.309204 1169.643555 1172.030762 1175.590332 1181.416748 1186.971069 1192.077881 1200.40918 1207.886719 1207.733276 1200.661621 1194.398438 1202.821411 1208.147949 1208.644897 1208.863403 1208.949341 1208.907837 1208.609131 1208.22876 1207.685913 1206.781982 1205.546143 1203.661621 1201.626709 1199.911133 1198.597168 1198.353516 1198.094971 1197.544067 1196.401489 1195.277222 1194.736938 1194.47644 1194.249268 1194.02002 1193.848267 1193.46814 1193.098022 1192.657104 1192.0625 1191.570923 1191.119263 1190.552246 1190.021118 1189.265991 1188.616821 1188.074585 1187.676758 1187.377441 1186.912109 1186.544922 1186.433105 1186.533447 1186.866455 1187.189453 1187.704834 1188.4198 1189.112305 1189.79895 1190.532715 1191.032715 1191.562134 1191.877075 1192.320435 1192.647095 1192.919556 1193.266968 1193.546265 1193.89978 1194.293945 1194.757568 1195.131714 1195.367065 1195.493408 1195.341309 1195.141724 1194.925781 1194.912109 1195.106079 1195.138184 1195.060669 1194.969604 1194.474365 1193.305786 1192.064697 1191.310059 1190.966919 1191.081421 1192.051758 1193.456421 1194.838623 1195.788208 1196.08374 1196.213867 1196.149902 1195.974121 1195.472656 1194.939087 1194.236694 1193.78418 1193.615112 1193.615234 1193.678589 1193.804321 1193.958496 1194.094971 1194.181885 1194.247314 1194.208374 1193.916748 1193.495239 1192.922485 1192.431519 1191.777222 1190.990723 1190.211304 1189.553955 1188.937378 1188.665527 1188.267212 1188.047119 1187.690552 1187.140015 1186.846558 1186.588867 1186.549316 1186.348389 1186.094971 1185.702148 1185.371338 1184.952881 1184.533691 1184.320679 1183.952637 1183.733521 1183.518677 1183.134644 1182.910522 1183.230347 1183.61792 1183.829224 1183.7854 1183.316528 1182.411743 1181.283447 1180.04541 1179.155273 1178.401611 1177.830322 1177.245605 1176.691528 1176.247803 1176.136597 1175.957764 1175.67981 1175.387695 1175.222046 1174.828613 1174.440063 1173.64563 1172.627197 1171.652466 1170.985474 1170.973267 1171.798218 1172.371582 1172.565552 1172.067017 1171.337036 1171.362671 1173.806152 1175.408325 1176.608643 1177.438354 1178.327759 1179.126099 1180.015381 1180.677368 1181.252197 1181.589844 1181.776978 1181.980957 1182.001709 1182.280762 1182.457764 1182.591553 1182.734009 1183.102661 1183.753052 1184.443359 1184.596069 1183.728394 1182.537231 1184.453979 1186.567139 1188.500854 1191.330688 1193.372803 1194.270752 1198.867188 1209.537476 1220.926025 1229.161499 1229.930542 1226.480713 1222.648682 1218.118408 1213.481934 1209.425415 1200.071411 1195.225586 1191.910156 1188.185791 1182.878418 1184.174194 1184.123047 1183.155273 1183.649902 1182.661133 1178.87561 1176.602295 1174.347168 1172.088135 1170.78772 1170.018921 1169.27771 1168.293579 1167.385742 1166.457764 1165.415405 1164.093506 1162.755859 1161.407837 1160.428711 1159.476196 1158.504395 1157.143555 1156.064819 1155.039185 1154.028564 1152.939697 1151.799683 1150.640991 1149.427856 1148.146362 1147.313965 1146.255005 1144.015747 1141.510498 1139.25647 1137.713379 1136.223145 1136.629517 1137.651123 1138.563232 1139.324097 1139.977905 1141.023193 1142.164307 1143.908569 1145.914673 1147.849243 1149.989624 1152.11853 1154.720093 1156.100952 1158.06604 1158.343018 1160.586304 1163.450928 1165.820435 1167.959351 1169.929077 1168.826904 1169.491577 1172.109985 1168.52417 1160.898804 1149.689209 1137.328613 1130.026733 1132.868652 1146.048584 1160.479736 1165.675293 1170.784912 1168.74707 1169.396973 1171.987671 1180.493896 1184.067993 1185.246826 1183.33667 1175.973389 1179.447388 1189.37207 1197.031616 1200.78418 1205.411011 1209.291748 1217.09436 1222.991089 1227.71936 1230.509399 1229.833984 1232.426514 1246.149658 1255.19104 1258.191528 1257.070679 1260.032715 1261.732178 1267.526489 1274.753418 1282.196777 1288.446289 1293.228882 1300.023682 1308.594971 1320.411865 1331.031982 1338.500977 1343.810181 1345.873901 1343.158325 1341.280518 1338.395996 1335.51123 1332.528442 1328.859741 1323.868042 1317.989624 1315.937988 1314.558838 1312.737793 1309.915039 1306.220947 1301.996704 1296.76355 1292.594116 1291.679199 1291.524902 1291.11145 1291.922363 1293.059448 1293.392334 1292.603638 1283.789673 1269.311157 1256.128052 1253.786133 1247.841919 1243.006714 1236.104736 1230.523193 1226.231201 1218.445557 1206.711182 1202.193726 1210.828369 1222.30249 1217.369873 1207.044067 1195.607178 1188.126221 1182.022705 1177.479004 1173.39856 1169.626709 1162.491699 1159.311035 1157.218506 1159.854126 1162.302246 1166.207642 1170.782593 1178.754028 1188.654663 1197.888916 1203.778564 1202.767334 1197.887695 1192.622681 1191.606323 1196.338257 1207.593994 1206.667603 1203.879028 1201.341431 1199.762573 1198.123169 1195.106445 1193.231445 1190.682373 1188.04541 1185.290771 1181.549072 1176.579468 1171.72876 1163.351196 1156.946045 1156.678589 1157.283081 1150.572998 1156.962524 1170.814331 1174.169067 1172.399292 1162.629639 1154.901978 1148.129272 1145.315796 1145.598022 1147.187988 1153.609619 1156.921387 1156.754395 1157.342773 1162.363525 1168.337036 1169.995361 1169.976807 1169.378906 1168.657959 1168.12085 1167.20166 1166.485962 1166.003052 1165.350708 1164.235962 1162.920898 1161.643188 1160.447998 1159.518066 1158.168457 1155.413696 1152.582031 1150.605957 1149.199463 1147.086792 1138.535034 1140.765869 1147.08252 1144.531982 1137.227417 1139.384277 1140.916992 1140.732178 1140.614014 1140.805176 1141.054932 1137.614258 1135.279419 1134.301147 1133.550781 1133.325806 1132.407104 1130.386353 1127.124268 1124.965942 1124.203003 1123.849365 1123.535889 1123.190063 1122.982788 1122.217529 1122.245483 1122.170776 1121.162354 1121.012085 1119.382202 1119.477539 1122.653442 1126.843018 1132.423218 1137.358643 1141.543457 1149.431152 1160.05957 1160.808594 1153.81958 1144.53833 1135.105225 1129.889893 1124.34082 1123.428345 1119.400879 1112.908447 1109.279053 1107.346069 1105.706665 1103.749023 1101.731567 1100.029419 1098.503418 1097.682617 1097.036133 1096.616089 1096.092285 1095.630981 1094.752686 1093.592163 1092.081909 1090.147095 1088.72522 1088.298096 1087.968628 1087.612915 1086.915039 1086.16394 1085.964233 +1176.640869 1173.930298 1172.530029 1171.677124 1170.398926 1167.710083 1164.236694 1159.476318 1146.496826 1136.144531 1132.468262 1132.468262 1135.862183 1144.373169 1147.560913 1141.110352 1134.410278 1132.881104 1131.359375 1130.009644 1128.540649 1127.456909 1126.297852 1125.448242 1124.742554 1124.157471 1124.98999 1127.114746 1129.202393 1131.904419 1135.807373 1142.880859 1147.145386 1148.723877 1149.899536 1153.202271 1157.87085 1159.255493 1159.285278 1159.092529 1159.267456 1160.831665 1161.468994 1162.248291 1162.037354 1158.663208 1151.680542 1145.914062 1143.760986 1142.540649 1141.11792 1139.757446 1139.199463 1139.373779 1139.66333 1140.488892 1140.375854 1141.402344 1141.84729 1141.980347 1143.584351 1147.258789 1146.23999 1148.411499 1146.813965 1148.390747 1153.599731 1156.903442 1158.065186 1158.663452 1158.796509 1158.946899 1158.478149 1157.448486 1156.459961 1156.95874 1158.365967 1158.557617 1162.197266 1165.383545 1167.764648 1169.605469 1170.78479 1171.817017 1174.223511 1172.717896 1170.312744 1169.15271 1168.33606 1168.072876 1167.641357 1166.775024 1165.805054 1165.15918 1164.738403 1164.348755 1163.413696 1162.427856 1163.400391 1165.826782 1167.598755 1169.217896 1170.179932 1175.154541 1180.356079 1182.445801 1191.193481 1199.205322 1200.68396 1196.988892 1193.175049 1198.642578 1204.549805 1207.429077 1207.918457 1208.021729 1207.911133 1208.174927 1208.28479 1207.976929 1207.484131 1206.287598 1203.621704 1200.716064 1197.680908 1196.690063 1197.227173 1197.278687 1197.05835 1196.324951 1195.315063 1194.744263 1194.429565 1194.011841 1193.726074 1193.570435 1193.266602 1192.897095 1192.607056 1192.135132 1191.478271 1191.021973 1190.454346 1189.966064 1189.441162 1188.918945 1188.497559 1188.165283 1187.913574 1187.431763 1187.234375 1186.951416 1186.877441 1187.234497 1187.643677 1188.187378 1188.887207 1189.759888 1190.532227 1191.229858 1191.86377 1192.330688 1192.62439 1193.058838 1193.288452 1193.479126 1193.709717 1193.998291 1194.39856 1194.756714 1195.222168 1195.612427 1195.84314 1195.89624 1195.786865 1195.682861 1195.514648 1195.519531 1195.695801 1195.771484 1195.711182 1195.662354 1195.251831 1194.197998 1192.435059 1191.807373 1191.93689 1192.070923 1193.245972 1194.431152 1195.490479 1195.844238 1196.21167 1196.366089 1196.174438 1195.91333 1195.538696 1195.056396 1194.517334 1194.149292 1194.097168 1194.213501 1194.414429 1194.554199 1194.667114 1194.772339 1194.90564 1195.014282 1194.932373 1194.615967 1194.251709 1193.521484 1192.96936 1192.278931 1191.429565 1190.751831 1190.147705 1189.645508 1189.279541 1189.093262 1188.753174 1188.350586 1187.814819 1187.538696 1187.209961 1187.158813 1186.941162 1186.666748 1186.191162 1185.823486 1185.455811 1185.225952 1184.904541 1184.527344 1184.254272 1183.954102 1183.51355 1183.315796 1183.71521 1183.98291 1184.07666 1183.898071 1183.422852 1182.661377 1181.471069 1180.250244 1179.42627 1178.836914 1178.210205 1177.657959 1177.291748 1177.078979 1176.970215 1176.978149 1176.888306 1176.788452 1176.599976 1176.372925 1175.74939 1174.943481 1173.929199 1172.863525 1171.920898 1170.998169 1171.361938 1172.840454 1173.433105 1173.151123 1173.103271 1173.749756 1175.045044 1176.197144 1177.040283 1177.857544 1178.436523 1179.200195 1179.833252 1180.503052 1181.090332 1181.553833 1181.86377 1182.368408 1182.744507 1183.069214 1183.157715 1183.011108 1182.674683 1182.453247 1182.429932 1182.737549 1182.786743 1182.385132 1181.726807 1182.435547 1183.348389 1185.125244 1187.92749 1189.958252 1191.817017 1195.638428 1202.609863 1213.164673 1224.578735 1228.455811 1226.74231 1223.856323 1219.892944 1213.630859 1206.729492 1200.655884 1194.851318 1191.654053 1188.025513 1185.371216 1183.724243 1182.619507 1181.558594 1180.799194 1179.865967 1177.404785 1175.44519 1174.073486 1172.874878 1171.81665 1170.500244 1169.296631 1168.089233 1167.100098 1166.058472 1165.088989 1164.0802 1162.941528 1161.675415 1160.272583 1158.781738 1157.93042 1157.09436 1156.162964 1155.097412 1153.881104 1152.608643 1151.387817 1150.271851 1149.229614 1148.403564 1147.674072 1146.564331 1143.653076 1140.656616 1138.924316 1137.706421 1136.705444 1137.441528 1138.392334 1139.368164 1140.29126 1141.189209 1142.133545 1143.129395 1144.285522 1145.733276 1148.216797 1150.716309 1153.971924 1158.465576 1159.008545 1158.368652 1160.709473 1162.257935 1164.637329 1167.171753 1169.646118 1171.566528 1172.05896 1171.556763 1173.011475 1169.702637 1161.456665 1135.809937 1130.953247 1134.114624 1139.484497 1148.839233 1158.865356 1160.213989 1165.87854 1168.717773 1172.007935 1175.954834 1182.629639 1183.798096 1185.928101 1185.140625 1181.368774 1181.407715 1188.431885 1198.230591 1206.405518 1207.798462 1212.40564 1218.81897 1228.393677 1237.444946 1243.64209 1245.11438 1245.1604 1243.752075 1242.697266 1244.092651 1253.903687 1254.258545 1258.245972 1265.977661 1267.626221 1273.470459 1280.990845 1291.562744 1298.717896 1307.341919 1316.354004 1328.700073 1339.328613 1349.07605 1354.514282 1351.163086 1347.648071 1344.300293 1340.875122 1337.222412 1333.388306 1328.88147 1325.015991 1324.019897 1322.101929 1319.375854 1315.625488 1310.518921 1305.281494 1300.24646 1295.218628 1293.531738 1293.123169 1292.195435 1291.787354 1292.319946 1293.047852 1292.832886 1281.877808 1266.824097 1267.364868 1262.259521 1255.524902 1248.744263 1242.717041 1238.460571 1234.313599 1227.008301 1214.608765 1204.548706 1211.150146 1220.98877 1218.631348 1210.047241 1199.157715 1190.439697 1183.153687 1178.532349 1174.146851 1170.273438 1163.529419 1160.435913 1157.787964 1160.826172 1164.295044 1167.784424 1171.855347 1182.052856 1193.833374 1204.488159 1210.797974 1210.230469 1205.162476 1197.770264 1193.762573 1195.599854 1208.555664 1209.089722 1207.741089 1207.737427 1205.566406 1202.358398 1198.521362 1197.734619 1195.849731 1191.836182 1187.241943 1182.320068 1175.861328 1169.771118 1157.953003 1158.99231 1163.232788 1162.837891 1156.803101 1159.878906 1174.037354 1174.492065 1172.680298 1163.885254 1156.77771 1150.371826 1145.637573 1144.917114 1147.668579 1158.271973 1163.382812 1164.473389 1158.734741 1166.644043 1171.760254 1171.459839 1171.01062 1170.761108 1170.568848 1169.718994 1169.05249 1168.371216 1168.27478 1167.245117 1165.595825 1163.43103 1161.278076 1159.591675 1158.611938 1157.855713 1153.875366 1150.381592 1148.585693 1147.619385 1147.160278 1147.611572 1147.84729 1148.259155 1145.908936 1143.504028 1144.877197 1146.104736 1146.486328 1146.473755 1145.365479 1143.744629 1142.05957 1139.458496 1136.982544 1135.624512 1135.090698 1132.936768 1131.775757 1126.904419 1122.053711 1122.195801 1122.233032 1122.548828 1122.812744 1122.738525 1122.399414 1122.179321 1122.238525 1120.144897 1118.368408 1117.28772 1117.487549 1119.697144 1122.081299 1128.141724 1133.75769 1133.906982 1146.348145 1158.796631 1160.030273 1148.221313 1139.611816 1132.889404 1127.35022 1122.862793 1120.247192 1116.360107 1111.009033 1108.899414 1107.301636 1105.608521 1103.933105 1102.357788 1101.097656 1100.084961 1098.907227 1097.6698 1096.456543 1095.641113 1095.079224 1094.224365 1092.95459 1090.904663 1087.530273 1086.306763 1086.418945 1086.36499 1085.969849 1085.587646 1085.363403 1085.057495 +1179.980835 1177.70874 1175.52771 1174.403687 1172.941528 1170.404053 1164.503418 1156.189697 1143.282715 1135.000977 1132.49707 1132.462891 1140.072876 1148.533691 1151.015381 1148.757812 1140.206665 1133.783936 1132.532349 1131.189575 1129.995972 1128.817993 1127.763916 1126.743286 1125.850098 1125.150513 1124.680908 1124.662231 1126.677612 1128.508789 1131.210693 1134.605469 1139.621338 1142.789062 1144.381836 1147.605103 1156.706909 1159.869751 1160.118042 1160.144897 1160.300171 1161.002808 1161.122192 1160.979126 1159.25647 1151.638062 1146.308105 1143.441528 1141.425171 1140.340088 1139.357056 1138.461182 1139.056885 1140.043457 1140.213867 1140.173706 1141.010132 1142.927612 1144.333252 1144.397827 1149.029053 1159.220947 1159.638306 1159.497681 1153.349365 1153.381226 1157.901001 1160.562744 1161.943481 1162.338135 1162.310059 1162.251831 1160.939209 1158.554688 1157.497681 1157.868896 1160.341553 1161.881592 1165.492432 1167.712891 1170.10144 1173.56665 1177.802124 1182.754883 1182.901978 1179.050537 1175.661133 1172.337524 1170.987549 1170.679199 1170.44104 1169.697266 1168.911621 1168.28186 1168.104492 1167.360962 1166.471802 1165.30957 1164.50708 1164.100708 1166.124023 1167.662842 1170.10376 1173.603882 1176.660156 1178.833252 1182.086548 1191.658203 1194.667358 1193.041748 1191.787354 1196.093262 1200.151489 1202.784546 1204.155151 1204.710693 1205.093262 1206.985718 1208.23999 1208.16748 1208.141968 1206.666016 1203.335815 1199.961548 1196.276733 1195.406982 1195.928589 1196.437134 1196.519043 1196.19165 1195.339233 1194.801392 1194.187256 1193.81665 1193.473267 1193.139648 1193.000732 1192.740967 1192.474976 1192.100708 1191.622925 1191.053589 1190.555176 1190.012695 1189.598267 1189.224121 1188.875366 1188.588135 1188.497437 1188.0177 1187.800781 1187.640991 1187.38623 1187.498535 1187.994019 1188.693481 1189.416382 1190.383667 1191.203491 1191.981323 1192.571655 1193.111328 1193.353516 1193.708862 1193.786743 1194.005005 1194.175293 1194.391724 1194.737915 1195.135132 1195.570312 1195.915649 1196.134155 1196.337646 1196.48877 1196.325439 1196.24231 1196.267334 1196.338989 1196.429199 1196.410645 1196.255981 1195.881714 1194.84668 1192.736328 1192.489136 1192.778076 1193.303345 1194.274414 1195.245117 1195.801514 1196.094849 1196.36084 1196.427734 1196.308472 1196.022827 1195.569824 1195.149536 1194.727905 1194.568359 1194.488647 1194.90918 1195.188477 1195.330566 1195.404053 1195.410889 1195.552612 1195.610474 1195.540649 1195.24585 1194.819824 1194.25415 1193.49646 1192.794922 1192.001709 1191.330322 1190.784668 1190.360229 1190.089722 1189.817505 1189.40979 1189.00769 1188.474243 1188.098755 1187.902954 1187.712524 1187.427856 1187.172729 1186.688232 1186.320312 1186.149536 1185.746704 1185.405273 1185.084106 1184.75354 1184.40979 1184.277832 1184.112915 1184.230103 1184.297729 1184.158081 1183.899048 1183.335693 1182.60083 1181.559692 1180.434448 1179.701538 1179.21521 1178.684937 1178.372559 1178.175537 1178.089966 1178.138794 1178.277954 1178.406006 1178.39856 1178.350708 1178.106934 1177.638184 1176.818481 1175.642212 1174.38623 1172.978027 1171.217529 1172.320557 1173.905396 1174.474243 1174.655273 1175.084839 1175.893799 1176.674683 1177.47168 1178.123657 1178.608887 1179.009888 1179.604004 1180.218994 1180.736328 1181.260986 1181.967773 1182.892334 1183.193481 1183.196777 1183.195679 1183.196167 1183.200806 1183.213135 1182.309082 1181.776001 1181.662476 1181.533203 1181.070679 1180.704712 1180.814819 1181.433472 1182.868408 1185.027222 1187.441162 1190.115723 1193.075928 1197.939697 1209.156128 1219.023682 1224.712891 1225.230835 1224.247314 1221.766357 1215.901001 1209.549194 1202.648804 1194.342285 1192.348511 1189.368896 1185.338745 1184.354126 1183.896729 1182.928955 1180.443359 1177.386841 1174.722168 1173.861572 1172.964722 1172.232544 1172.082397 1170.992432 1169.510132 1167.912109 1166.6698 1165.780762 1164.902466 1163.887207 1162.917969 1161.882812 1160.765747 1159.460083 1158.63562 1157.581665 1156.511108 1155.317505 1153.76001 1152.123413 1150.74292 1149.650513 1149.001221 1148.270142 1147.457153 1146.075195 1142.540894 1139.164551 1138.013062 1137.731689 1137.793213 1138.521362 1139.470825 1140.369141 1141.28772 1142.211304 1143.264893 1144.212646 1144.917114 1145.643066 1147.148804 1150.442627 1153.87915 1157.26062 1159.609863 1160.594482 1161.869019 1163.415527 1165.490723 1167.769165 1170.12439 1171.889648 1172.411133 1172.975098 1173.695557 1165.60144 1140.488037 1131.106323 1134.671387 1137.041626 1141.771729 1148.50647 1155.611938 1160.67334 1164.436768 1171.269653 1175.745605 1182.132568 1185.293457 1186.438599 1187.95105 1186.775391 1183.074829 1182.221558 1185.472412 1198.415649 1209.176147 1213.310059 1218.268066 1224.671997 1234.4021 1243.69873 1247.88855 1251.488037 1254.302368 1252.323364 1251.220215 1259.428345 1259.91272 1257.001587 1255.296143 1269.298706 1273.519287 1276.743042 1279.995605 1291.000732 1296.358276 1304.27771 1314.291748 1325.136841 1337.704346 1350.374023 1357.12146 1356.321777 1354.173706 1349.843262 1345.645996 1341.933472 1338.107544 1333.083862 1329.894165 1331.692383 1330.989868 1327.560425 1321.87793 1316.703613 1308.896362 1303.055908 1299.342041 1296.786255 1295.588013 1294.422852 1292.53125 1291.253296 1290.056763 1285.557373 1279.276611 1278.052979 1276.032227 1269.27356 1258.913452 1252.53418 1247.701904 1244.765869 1239.931396 1234.413086 1222.542358 1210.295898 1220.20874 1229.495239 1223.656372 1213.500977 1202.491943 1192.868042 1183.989624 1179.317261 1174.91626 1170.912231 1164.61438 1161.50769 1158.680908 1160.276245 1166.672485 1170.93811 1176.284058 1184.835938 1194.681519 1206.180054 1214.06958 1219.067261 1214.196167 1207.359863 1201.049683 1198.824219 1208.41333 1210.25769 1210.475098 1210.190918 1209.127197 1206.249878 1204.314941 1202.162476 1198.757812 1194.858276 1187.657593 1180.567383 1173.360107 1166.436035 1162.887939 1167.321533 1170.263062 1171.505371 1166.130249 1165.384521 1173.845581 1173.437988 1170.045044 1164.34375 1159.439941 1152.069946 1146.809082 1144.821289 1146.588989 1154.989746 1164.447632 1174.095825 1171.584106 1169.355957 1172.204956 1173.408203 1173.213867 1172.73877 1172.259644 1171.059814 1170.388062 1170.599976 1170.504761 1169.010986 1166.732422 1163.755493 1159.619263 1158.192505 1157.71521 1155.776245 1150.935791 1146.508301 1146.627808 1146.647461 1146.880981 1149.842163 1150.631836 1149.464478 1146.747192 1145.909424 1147.584961 1148.597656 1148.605591 1148.207397 1147.690552 1147.092529 1145.942505 1143.657837 1140.755981 1138.451782 1136.743164 1134.635254 1134.77478 1131.265991 1125.052246 1122.797363 1122.165894 1122.253906 1122.243896 1122.297363 1122.383545 1121.931763 1121.369873 1118.945435 1116.378418 1114.489624 1114.529785 1116.784302 1119.937988 1122.906006 1123.162354 1133.328857 1144.828247 1158.948242 1158.738525 1146.161255 1133.990601 1127.681885 1123.28125 1123.422607 1121.280518 1114.952271 1111.271973 1108.884766 1107.024902 1105.258057 1103.72876 1102.47168 1101.329468 1100.425293 1099.448975 1098.014038 1096.447876 1095.63147 1095.120728 1094.48645 1093.261108 1091.139404 1087.444336 1086.119385 1085.401611 1085.431885 1085.430298 1085.50647 1085.418457 1085.083252 +1183.312622 1180.340576 1178.189087 1176.151855 1174.224854 1171.419189 1163.419434 1152.741211 1141.370972 1133.662109 1132.871338 1138.168823 1147.175049 1155.732544 1157.450928 1154.589355 1147.242432 1135.798218 1133.70105 1132.683472 1131.628174 1130.22522 1129.186646 1128.226929 1127.304443 1126.661133 1125.864258 1125.465942 1125.223022 1125.44043 1127.244385 1129.656494 1131.993164 1133.189575 1134.850708 1141.113892 1147.075195 1154.092651 1158.961426 1159.77478 1159.235718 1159.096558 1158.894775 1156.513428 1149.349243 1144.357056 1141.944702 1139.927734 1138.907837 1138.135498 1137.936401 1139.156128 1140.325195 1141.503174 1142.483032 1142.902466 1143.608398 1145.164307 1147.609375 1146.958008 1149.666992 1156.081787 1159.344849 1160.148682 1157.972168 1158.345703 1161.837402 1165.147827 1166.728638 1167.044556 1166.78064 1166.129395 1163.991089 1159.944214 1158.538452 1158.129761 1160.193481 1165.350586 1170.262573 1170.359619 1171.131958 1177.509033 1184.650391 1191.478516 1189.100586 1186.124878 1184.775879 1180.353882 1179.970215 1180.492432 1177.610718 1175.751953 1171.990479 1171.250732 1172.105957 1170.274902 1169.836182 1170.19397 1168.356567 1165.72876 1164.905762 1166.620483 1168.255615 1171.334839 1173.51062 1175.464233 1178.613525 1182.096191 1185.467163 1186.88269 1185.913452 1193.200195 1196.340576 1197.144043 1198.035645 1199.964355 1201.389038 1203.351196 1205.91687 1207.511475 1207.646118 1206.411377 1202.659912 1199.546997 1196.861938 1195.361084 1195.348755 1195.420898 1195.670654 1195.583374 1195.151001 1194.494751 1193.892944 1193.467041 1193.091431 1192.783569 1192.58728 1192.498047 1192.250122 1192.018433 1191.714966 1191.142822 1190.715698 1190.266602 1189.919556 1189.64563 1189.436157 1189.219238 1188.975708 1188.438965 1188.295776 1188.161255 1188.0 1187.850586 1188.33667 1189.116943 1190.025269 1190.905151 1191.847534 1192.670532 1193.342285 1193.88147 1194.084595 1194.31897 1194.408936 1194.49939 1194.672241 1194.841553 1195.158081 1195.5 1195.816772 1196.199219 1196.479126 1196.853516 1196.989014 1197.042847 1197.027222 1196.966553 1196.996948 1196.95166 1196.797607 1196.496826 1196.127686 1195.357422 1193.29126 1192.929565 1193.463501 1193.908325 1194.736938 1195.289062 1195.909302 1196.255981 1196.496948 1196.485229 1196.410034 1196.129761 1195.7052 1195.450317 1194.962891 1194.972656 1194.988647 1195.494263 1195.700806 1195.813721 1195.893066 1195.951294 1196.002563 1196.029663 1195.897705 1195.752197 1195.348755 1194.78186 1194.051514 1193.255615 1192.593628 1192.009521 1191.572632 1191.121094 1190.761475 1190.384644 1190.073608 1189.621704 1189.129395 1188.675049 1188.535645 1188.248413 1187.996704 1187.651978 1187.222046 1187.020508 1186.692505 1186.32251 1186.019287 1185.614868 1185.3125 1185.113281 1184.923828 1184.71582 1184.685669 1184.516479 1184.238281 1183.789185 1183.246582 1182.444092 1181.671631 1180.89209 1180.127197 1179.777588 1179.457886 1179.194214 1179.013794 1179.066528 1179.349976 1179.616455 1179.946411 1180.236816 1180.354126 1180.238403 1179.766968 1178.796021 1177.568481 1176.157104 1174.821899 1174.063232 1174.656006 1175.438477 1175.852661 1176.206543 1176.772461 1177.511108 1178.262085 1178.839478 1179.109009 1179.451416 1179.682495 1180.047729 1180.463135 1181.016357 1181.633057 1182.320068 1183.202148 1183.191162 1183.191895 1182.976929 1183.07605 1183.19873 1183.285278 1181.975464 1181.072754 1180.534302 1180.208496 1179.750854 1179.467773 1179.567139 1180.244873 1181.420776 1183.476074 1186.108154 1188.158813 1191.274658 1195.965332 1203.927002 1212.166016 1218.444458 1221.286499 1222.348267 1221.684448 1217.614014 1212.859619 1208.924561 1199.296265 1194.471802 1191.157349 1185.69165 1182.987793 1183.407837 1183.389893 1180.665161 1175.801147 1171.252075 1171.953125 1171.757568 1170.75 1170.700684 1170.234741 1168.890625 1167.426147 1166.294312 1165.304932 1164.526978 1163.643921 1162.884399 1161.990479 1161.119629 1160.317017 1159.208862 1158.234009 1157.404663 1155.726318 1153.458618 1151.445557 1149.872803 1148.883911 1148.216919 1147.653931 1146.867432 1143.166016 1140.753296 1138.981445 1139.581177 1139.52124 1139.757446 1140.311035 1140.828491 1141.471313 1142.292969 1143.197998 1144.513306 1145.981934 1146.014648 1146.024292 1147.810425 1150.193726 1153.314819 1156.519165 1159.140869 1160.628418 1161.940796 1163.695801 1165.69043 1167.652832 1169.368286 1171.031372 1172.610107 1173.686523 1173.536621 1162.571777 1140.968994 1131.03479 1132.581421 1134.616943 1136.967773 1136.790771 1139.587036 1147.794556 1159.748535 1171.150146 1175.196655 1180.243652 1182.810913 1188.901245 1191.27356 1189.687378 1185.173706 1183.901611 1196.269165 1202.001343 1207.847046 1216.113281 1222.191772 1228.685303 1235.524902 1243.136475 1249.65979 1254.900391 1260.476196 1262.616821 1260.200073 1269.792603 1271.364624 1267.172607 1258.235718 1258.937988 1273.970093 1282.250854 1284.294434 1287.922485 1294.243652 1304.23999 1314.017212 1324.753296 1336.37207 1349.712036 1358.302246 1360.082153 1358.529907 1353.938477 1349.487061 1345.979126 1342.266724 1338.96936 1337.336792 1336.709961 1335.728394 1332.895264 1328.247681 1321.839233 1314.14209 1304.567139 1302.172363 1300.209595 1298.38147 1296.569702 1294.563477 1292.855835 1290.46875 1287.270386 1286.554443 1291.323486 1283.801758 1272.578491 1261.874146 1255.046753 1251.42627 1247.748413 1242.790771 1236.273193 1226.653687 1217.756958 1219.660889 1233.307617 1228.085693 1217.241211 1204.717407 1195.062378 1185.247925 1179.940796 1175.587524 1171.51355 1165.414185 1162.596436 1160.137085 1160.283569 1168.364624 1175.482178 1183.395386 1192.172363 1199.773315 1207.696167 1215.375488 1221.049438 1221.197998 1215.124878 1210.421143 1208.428589 1209.683472 1211.052856 1211.909424 1212.609375 1212.273682 1210.751099 1209.162842 1206.590088 1201.478394 1195.890015 1187.174316 1178.496216 1169.641357 1168.591309 1173.125732 1172.897095 1173.240479 1175.468628 1173.596924 1172.931641 1173.105591 1169.893555 1163.900146 1159.581787 1156.744141 1152.821289 1148.612305 1145.069092 1144.564819 1149.271484 1155.623291 1167.038574 1172.855103 1173.633301 1174.289185 1175.26709 1175.296387 1174.898438 1174.156982 1173.149048 1172.619263 1172.903076 1172.330322 1170.671631 1167.56311 1164.195923 1159.505737 1159.119263 1160.353394 1157.274048 1155.610596 1147.170654 1146.962036 1146.557129 1148.182251 1152.066284 1152.834229 1151.474243 1149.068359 1147.296997 1149.182373 1149.653198 1149.719482 1149.421875 1148.893066 1148.313354 1147.49585 1146.824097 1144.040894 1140.918579 1138.741577 1137.216064 1136.504395 1134.577515 1129.881348 1126.59668 1124.592285 1122.612915 1122.264038 1122.247559 1122.327637 1121.911987 1119.294189 1116.928345 1114.626343 1111.657959 1111.080078 1113.703735 1116.598022 1119.060303 1121.189331 1131.704834 1142.65979 1153.184814 1151.938477 1141.923828 1130.809204 1121.109131 1119.418091 1119.086426 1117.148804 1113.180176 1109.776123 1107.987915 1106.071167 1104.337158 1103.143555 1102.212402 1101.294556 1100.207153 1099.03125 1097.808594 1096.731079 1095.835693 1095.607178 1095.359863 1094.88269 1093.321899 1091.112549 1088.735107 1086.104858 1085.786743 1085.931763 1086.196289 1086.018677 1085.667603 +1184.577759 1183.031616 1180.775024 1177.184326 1173.77478 1170.445312 1163.202759 1151.596436 1139.318726 1132.255859 1140.967896 1149.864136 1157.203125 1162.307129 1162.983765 1160.233643 1152.934326 1143.72998 1137.414307 1134.0 1133.12085 1131.859131 1130.627686 1129.698486 1129.025513 1128.254639 1127.601196 1126.944824 1126.575806 1126.374146 1126.163818 1126.223511 1127.27063 1128.295776 1130.547974 1134.207886 1139.279175 1142.668701 1145.302734 1147.028564 1147.907837 1150.213745 1150.938232 1149.102295 1144.464233 1139.983154 1137.634888 1136.827515 1137.340576 1138.112427 1139.048218 1140.535034 1142.117676 1144.007935 1145.760498 1146.512573 1146.498535 1146.066162 1149.389282 1150.408325 1152.079468 1155.012085 1157.697632 1160.237305 1159.117554 1159.265747 1165.03772 1170.104736 1172.318604 1171.915527 1171.09021 1171.315552 1168.380249 1164.859863 1161.473389 1158.415894 1159.098145 1166.41687 1172.141846 1175.240601 1178.484253 1181.188721 1191.966919 1196.207275 1194.15918 1192.708496 1192.311523 1189.914062 1194.548218 1195.04126 1193.631958 1187.858032 1184.01001 1188.077271 1188.511841 1181.118286 1180.585449 1180.98938 1175.47522 1169.988281 1167.366821 1166.17981 1166.509644 1167.166504 1168.967773 1172.272949 1175.189819 1178.693237 1181.360718 1181.986084 1182.066284 1186.808228 1191.094482 1192.013672 1193.634033 1195.547607 1196.327026 1198.092651 1200.304077 1202.105713 1203.728638 1203.103394 1201.2052 1199.108032 1197.243286 1195.602051 1195.290771 1195.171143 1195.031372 1194.858765 1194.48291 1194.095703 1193.675659 1193.190796 1192.795532 1192.478638 1192.331421 1192.053223 1192.031372 1191.885254 1191.701782 1191.361328 1190.936157 1190.477295 1190.193359 1190.049438 1189.889771 1189.675781 1189.572876 1188.909424 1188.723511 1188.598633 1188.359497 1188.243164 1188.785278 1189.604004 1190.550659 1191.65332 1192.593628 1193.368408 1194.117065 1194.630249 1194.876221 1195.020508 1195.015381 1195.057251 1195.200073 1195.388062 1195.661621 1195.959839 1196.251831 1196.62146 1197.027954 1197.328247 1197.473755 1197.595093 1197.592041 1197.648438 1197.543213 1197.354858 1197.130493 1196.724365 1196.218018 1195.584473 1194.267944 1193.332764 1193.80542 1194.224487 1194.565674 1195.200928 1195.893555 1196.308594 1196.573486 1196.658203 1196.517456 1196.262817 1195.985962 1195.590332 1195.221313 1195.523071 1195.462036 1195.933838 1196.165649 1196.313232 1196.386108 1196.41272 1196.486816 1196.376221 1196.269531 1196.0979 1195.655518 1195.088379 1194.325439 1193.624146 1193.039185 1192.552612 1192.09021 1191.668091 1191.303467 1190.999878 1190.606445 1190.189209 1189.750488 1189.215332 1189.018188 1188.73645 1188.434448 1188.113525 1187.838989 1187.573364 1187.228271 1186.878418 1186.428711 1186.110107 1185.966064 1185.68396 1185.438599 1185.175293 1184.996338 1184.740845 1184.342163 1183.737549 1183.160156 1182.410645 1181.804321 1181.180054 1180.69104 1180.413818 1180.143066 1179.920898 1180.004639 1180.071777 1180.385986 1180.822632 1181.362793 1181.881958 1182.290405 1182.296387 1181.912354 1180.952026 1179.364868 1177.939575 1177.077026 1176.542847 1176.833008 1177.073608 1177.381958 1177.655151 1178.141724 1178.859375 1179.495117 1179.966309 1180.043823 1180.041016 1180.06665 1180.320068 1180.655151 1181.16272 1181.718506 1182.256348 1182.967773 1183.203125 1182.974487 1182.498779 1182.439697 1182.202759 1181.946289 1181.227905 1180.257202 1179.546875 1178.870728 1178.385376 1178.102295 1178.212524 1178.950928 1180.328857 1182.413086 1184.070068 1185.765503 1189.143433 1192.974243 1197.359741 1204.074829 1210.016724 1214.550171 1216.912476 1217.514282 1214.214233 1210.85498 1207.540527 1202.074463 1197.468994 1194.376465 1188.942139 1185.125854 1182.28064 1181.543579 1178.717163 1173.250854 1171.948364 1170.478394 1171.550293 1171.146973 1169.792603 1168.899048 1167.859741 1166.794434 1165.711548 1164.924072 1164.084595 1163.281006 1162.649536 1161.936646 1161.155884 1160.568481 1159.92041 1159.241089 1158.418701 1156.077881 1152.930176 1150.500366 1148.75 1147.698364 1147.053833 1146.349976 1143.765381 1140.872559 1140.454956 1140.615356 1142.287231 1142.509277 1142.211182 1142.201782 1142.358032 1142.723389 1143.159546 1143.997559 1145.5177 1146.731567 1146.910889 1146.702148 1147.007324 1149.344604 1151.989258 1155.177002 1157.826294 1159.130737 1161.075317 1163.144287 1165.588501 1168.124268 1170.143433 1171.251343 1173.465454 1175.11499 1174.519287 1163.842896 1146.192993 1137.991455 1136.206421 1133.616699 1133.830811 1134.9104 1134.224609 1132.973145 1142.817383 1161.505249 1172.500244 1182.608887 1186.873413 1192.23645 1194.551758 1193.357056 1189.167358 1189.029907 1198.4104 1206.022217 1213.948242 1221.807251 1222.71582 1229.903198 1238.422852 1245.923706 1251.866455 1256.603149 1265.200928 1270.378418 1272.647949 1274.392944 1278.104004 1274.898926 1269.213623 1263.755127 1266.861328 1277.30835 1282.294312 1283.312622 1290.886841 1300.31189 1311.042847 1321.983154 1333.711304 1346.898926 1357.420166 1364.881714 1364.017578 1357.98999 1352.907471 1349.956787 1347.02832 1344.380981 1342.929932 1342.130127 1340.787964 1337.71228 1331.828247 1324.832031 1317.297607 1310.546875 1306.251831 1303.794189 1301.466675 1299.01001 1296.61145 1294.381836 1291.544678 1290.537842 1290.94397 1293.39917 1286.361572 1276.000244 1266.09668 1259.338623 1254.233276 1249.009644 1243.558472 1235.952393 1227.133423 1218.48938 1216.399658 1220.798462 1225.004761 1220.766846 1206.896484 1196.564819 1186.450073 1180.609253 1176.273071 1172.265381 1166.13208 1163.5271 1161.132446 1160.919556 1170.35376 1177.303101 1185.869141 1196.211426 1203.540283 1210.182129 1215.897583 1220.794556 1220.022827 1214.484741 1210.563354 1209.550171 1210.028442 1210.78418 1212.335815 1214.295898 1215.923096 1216.932007 1214.27002 1209.10083 1203.202759 1196.292114 1187.275269 1177.067505 1169.191284 1170.38147 1182.044678 1181.560913 1179.734863 1180.374878 1179.785522 1177.128906 1170.30835 1164.850342 1156.99292 1157.571899 1157.63916 1154.999878 1146.809937 1144.551636 1144.489868 1146.677734 1153.37439 1157.795654 1170.091797 1175.021362 1176.809082 1177.731201 1177.637573 1177.07312 1176.446899 1175.744141 1175.034668 1174.707642 1173.580444 1171.230591 1168.956543 1167.617188 1160.411743 1163.720093 1163.504395 1160.649902 1160.631226 1146.953125 1156.300903 1158.079834 1148.847412 1155.695557 1155.925537 1154.172485 1152.412354 1151.518188 1151.203979 1150.911499 1150.488892 1149.976196 1149.468506 1148.752808 1148.02478 1147.122925 1145.073853 1142.428345 1140.57312 1139.12793 1137.419067 1134.911987 1132.060059 1129.760498 1127.237427 1124.972534 1122.778931 1122.277588 1122.318726 1121.656372 1118.660767 1115.07312 1112.622192 1110.72522 1109.93042 1110.267334 1114.006104 1116.754272 1119.80896 1127.521118 1140.229614 1149.565674 1146.733276 1137.179321 1126.692261 1119.879761 1116.647949 1114.907715 1112.860596 1110.624878 1108.052124 1105.964722 1104.140869 1102.784912 1102.085083 1101.567749 1101.174194 1100.013306 1098.366089 1097.325073 1096.592407 1096.231689 1096.179077 1097.196045 1097.989136 1096.838623 1094.354004 1090.884033 1088.62085 1087.63855 1087.427124 1087.420532 1086.971558 1086.441772 +1186.720337 1185.0896 1182.863037 1177.315063 1172.909668 1168.032104 1161.252441 1145.536987 1134.700806 1139.828369 1151.084717 1156.676514 1165.628418 1169.541626 1167.4375 1164.517334 1160.565552 1156.372681 1149.450562 1142.035034 1134.5 1133.155273 1131.89978 1131.13208 1130.831299 1130.329224 1129.658691 1129.01355 1128.464355 1127.781616 1127.38562 1127.276855 1127.115356 1127.148438 1127.583008 1131.027344 1133.543335 1135.217896 1137.131836 1139.189331 1142.301025 1144.264893 1144.753052 1143.685425 1139.775391 1136.168457 1137.323608 1138.233276 1139.1427 1140.204346 1141.091797 1142.212769 1143.733276 1145.887451 1151.043823 1157.859253 1156.846924 1150.623047 1152.796875 1153.550293 1154.986816 1156.15979 1157.815674 1160.960083 1160.393921 1160.387573 1167.537109 1174.063965 1178.018799 1180.108521 1180.060547 1178.195435 1174.227661 1170.283691 1164.987427 1158.754395 1160.283447 1166.34082 1171.248047 1179.893555 1185.065186 1191.218872 1195.928345 1196.848511 1196.66626 1196.207397 1196.519897 1196.322632 1196.969849 1196.947021 1196.578369 1196.132935 1196.202271 1196.698242 1196.498291 1195.198486 1193.386719 1192.11853 1187.894409 1178.084839 1170.381592 1169.276367 1169.225464 1168.997559 1168.411377 1169.619507 1172.164673 1175.263794 1177.935181 1179.49646 1180.960938 1183.509033 1186.237427 1187.922485 1189.584473 1191.276245 1193.11792 1194.307617 1194.860962 1195.883301 1198.62793 1199.015381 1198.76062 1198.157227 1197.387451 1196.523071 1195.403809 1195.182617 1194.842896 1194.583496 1194.30249 1193.805664 1193.376221 1192.951416 1192.604492 1192.327271 1192.066162 1191.865479 1191.741211 1191.822632 1191.654907 1191.410034 1191.16626 1190.847046 1190.585815 1190.389282 1190.39209 1190.145752 1189.989502 1189.439941 1189.224731 1188.997314 1188.782593 1188.642822 1189.290405 1190.117798 1191.204468 1192.425171 1193.422607 1194.121948 1194.65564 1195.187134 1195.664062 1195.722412 1195.721558 1195.765747 1195.906372 1196.109741 1196.273926 1196.488159 1196.805908 1197.127441 1197.565552 1197.821289 1197.994507 1198.095215 1198.110352 1198.132568 1198.02063 1197.721924 1197.300537 1196.768311 1196.168945 1195.513184 1194.567749 1193.826904 1194.085815 1194.396729 1194.747559 1195.272949 1195.830078 1196.347046 1196.637329 1196.774414 1196.719116 1196.458252 1196.133789 1195.744141 1195.345215 1195.618408 1195.981812 1196.194824 1196.527588 1196.691162 1196.855103 1196.865723 1196.868286 1196.677124 1196.519531 1196.210815 1195.704834 1195.163208 1194.403198 1193.832642 1193.458374 1193.023071 1192.578369 1192.078125 1191.698975 1191.355591 1191.130737 1190.661011 1190.170654 1189.723389 1189.416626 1189.16748 1188.931519 1188.664307 1188.418701 1188.01709 1187.703613 1187.256104 1186.956421 1186.678223 1186.462402 1186.205811 1185.837402 1185.610962 1185.33667 1184.967041 1184.423584 1183.717407 1183.094971 1182.635376 1182.092651 1181.797607 1181.382568 1181.064209 1180.834351 1180.686401 1180.864746 1181.192139 1181.490112 1182.08374 1182.59021 1183.095215 1183.476807 1183.643066 1183.495728 1182.620972 1180.880981 1179.760254 1178.834595 1178.559937 1178.722046 1178.847412 1178.841309 1178.967407 1179.312744 1179.864502 1180.43396 1180.760986 1180.72522 1180.566284 1180.498047 1180.625244 1180.868042 1181.262695 1181.642334 1182.134521 1182.701172 1182.976685 1182.930176 1182.689453 1182.315186 1181.912109 1181.267578 1180.376831 1179.49707 1178.552734 1177.684326 1176.929688 1176.583984 1176.670898 1177.357666 1178.596924 1180.259521 1181.449829 1183.721802 1186.608032 1189.412842 1192.376099 1196.627075 1201.041748 1205.257568 1207.379639 1208.254272 1207.006348 1204.424927 1200.221924 1197.02417 1195.612793 1193.833374 1188.243042 1184.996582 1182.945068 1177.091431 1172.770508 1172.088867 1170.650146 1169.845459 1169.710815 1169.677856 1168.726562 1167.581421 1166.705566 1165.826538 1164.960449 1164.099731 1163.330444 1162.87146 1162.268433 1161.680542 1161.062622 1160.534058 1160.061768 1159.416138 1158.616211 1155.456909 1152.082031 1149.347534 1147.634033 1146.097412 1144.201782 1142.476562 1141.746094 1143.764526 1145.389648 1146.11853 1146.162476 1145.437378 1144.285156 1143.684937 1143.825439 1144.055664 1144.022705 1144.394531 1145.02063 1146.595459 1147.116211 1147.006226 1146.484619 1146.812012 1151.049316 1154.195801 1156.258545 1157.518433 1159.098755 1162.030396 1165.124146 1168.403198 1171.354614 1173.42041 1175.564209 1178.49231 1178.533325 1163.765015 1148.728149 1142.939575 1140.579712 1138.678223 1138.844482 1139.159668 1138.392578 1135.510132 1133.642578 1145.732788 1167.392822 1176.936768 1184.570435 1195.153931 1208.096069 1201.540405 1193.835449 1192.604736 1197.098389 1205.443848 1208.700562 1219.174561 1228.773315 1233.880859 1242.398071 1249.269409 1255.694092 1262.93811 1270.125732 1275.006836 1279.621094 1280.693848 1282.556519 1280.089966 1272.993164 1268.544922 1266.005127 1266.338013 1273.335815 1279.263184 1287.529907 1296.335449 1306.755981 1316.714355 1327.033936 1341.957031 1354.132446 1364.558105 1368.017944 1363.524292 1357.858521 1353.489746 1352.350464 1350.640381 1349.372192 1348.048706 1346.187866 1343.043213 1335.723022 1327.360229 1322.746338 1319.277222 1314.209961 1308.421387 1304.638062 1301.754028 1299.218384 1296.268433 1293.504028 1293.744629 1293.463745 1291.239136 1286.453979 1278.507812 1270.705566 1263.797852 1256.894653 1249.745117 1243.200562 1235.359131 1226.259033 1218.265137 1212.480103 1210.87793 1220.449951 1221.700073 1208.098633 1198.291748 1187.952637 1181.171875 1176.886108 1173.092041 1167.107666 1164.35498 1162.004517 1160.611816 1171.129639 1177.551025 1185.781128 1196.532227 1204.863037 1210.567017 1214.654175 1218.122803 1213.502075 1207.753418 1205.707031 1207.169556 1208.47937 1208.467896 1211.160767 1215.091797 1218.138672 1220.46814 1218.696655 1211.616943 1203.623413 1194.730347 1182.439331 1172.041626 1172.53833 1178.486816 1185.69397 1183.396729 1183.828369 1185.642212 1184.09436 1181.612305 1176.521851 1173.915161 1174.08606 1170.808105 1166.741333 1160.247803 1152.19873 1146.009888 1144.436768 1148.063599 1153.587769 1162.770386 1172.467163 1175.752686 1179.023193 1180.660034 1180.272095 1179.464966 1178.842163 1178.119873 1177.417603 1176.505127 1174.619751 1170.689209 1171.194336 1171.752563 1172.009521 1171.416748 1169.719482 1165.558594 1160.026001 1156.128174 1159.970825 1160.826294 1157.721436 1160.143921 1158.797607 1156.895264 1155.516968 1154.107178 1152.766113 1151.707764 1150.795898 1149.949829 1149.32666 1148.827271 1148.191284 1147.036255 1145.078125 1143.407104 1142.296021 1141.019775 1139.274658 1137.071411 1135.379028 1132.968994 1130.324097 1127.401489 1124.732544 1122.237915 1121.640015 1120.896362 1117.754639 1113.168457 1109.911255 1109.357788 1109.357422 1111.407593 1113.2677 1115.417358 1118.219849 1123.153687 1137.357544 1145.611938 1139.387085 1130.737549 1122.679688 1117.591064 1113.611816 1111.110107 1109.622681 1108.381348 1105.860596 1103.296387 1101.141479 1100.314941 1100.442505 1100.972168 1101.850952 1101.779175 1098.408813 1097.250854 1096.641113 1096.346802 1096.419556 1097.305054 1097.727051 1097.904541 1096.270386 1092.115356 1089.994019 1088.951294 1088.315674 1087.903687 1087.322876 1086.764404 +1187.70105 1185.476562 1182.722412 1176.557983 1170.559448 1164.02124 1150.742798 1137.959595 1136.568481 1150.467285 1156.677368 1165.824829 1173.807373 1173.819946 1171.728638 1168.421143 1164.837402 1161.937256 1157.959961 1150.56189 1139.742188 1133.825195 1133.108154 1132.297852 1132.321289 1132.65918 1132.182739 1131.487549 1130.484741 1129.645508 1129.083618 1128.672241 1128.392456 1127.918213 1127.617676 1128.768555 1131.255493 1132.686523 1133.465698 1134.420776 1138.049561 1140.01001 1140.003784 1138.830078 1137.02356 1136.081299 1139.359619 1141.386719 1142.380127 1142.927246 1143.241211 1143.915039 1144.814941 1147.646729 1158.266846 1165.572754 1164.762329 1161.410034 1158.783447 1156.015625 1157.689331 1158.744141 1160.768677 1164.917236 1165.577515 1166.238403 1170.418335 1177.655273 1183.550293 1187.470337 1187.807007 1185.554688 1184.218506 1176.924438 1169.559692 1159.312744 1160.779785 1167.686646 1176.741333 1186.219604 1194.431641 1196.88623 1197.331055 1197.786987 1197.95459 1198.015503 1197.861084 1197.820312 1197.916626 1197.995728 1197.748779 1197.455933 1197.276733 1197.081299 1196.952515 1196.654785 1196.943726 1196.926147 1196.44165 1185.779907 1178.587891 1175.333008 1174.265015 1172.171021 1170.239502 1169.677734 1170.082764 1172.707642 1175.102295 1177.617065 1179.602905 1181.503662 1182.677246 1184.09729 1185.384521 1188.228149 1190.708984 1192.290771 1192.897827 1193.578369 1194.814941 1195.871704 1196.403564 1196.899536 1197.082031 1196.594604 1195.976685 1195.309814 1194.872314 1194.472656 1194.029541 1193.61731 1193.265137 1192.880371 1192.528687 1192.160278 1191.874512 1191.696533 1191.588013 1191.593384 1191.60083 1191.49353 1191.341675 1191.283203 1191.012329 1190.838989 1190.795166 1190.563354 1190.427734 1190.043213 1189.672241 1189.44104 1189.230835 1189.067017 1189.574951 1190.633301 1191.977783 1193.428589 1194.30127 1194.814453 1195.301392 1195.916138 1196.444824 1196.699707 1196.723877 1196.624512 1196.764038 1196.824097 1197.016724 1197.231201 1197.464722 1197.642944 1197.97998 1198.257446 1198.41748 1198.523926 1198.623901 1198.484375 1198.38269 1197.959717 1197.442383 1196.762573 1195.953003 1195.340942 1194.579712 1194.311646 1194.505493 1194.755859 1194.971069 1195.353882 1195.787109 1196.49231 1196.785156 1196.936401 1196.88501 1196.666626 1196.342896 1195.976196 1195.488647 1195.875122 1196.30127 1196.661743 1196.770142 1197.044067 1197.145386 1197.266846 1197.118042 1196.984131 1196.572632 1195.926514 1195.365601 1194.844604 1194.560303 1194.107666 1193.721313 1193.305298 1192.908569 1192.459106 1192.145142 1191.849487 1191.585815 1191.083618 1190.679321 1190.237671 1189.861816 1189.685913 1189.549805 1189.279053 1188.837402 1188.559692 1188.125854 1187.799316 1187.539429 1187.213623 1186.862183 1186.661499 1186.244385 1185.971313 1185.729126 1185.251831 1184.691284 1183.972046 1183.471191 1183.10376 1182.802002 1182.408813 1181.992798 1181.554565 1181.252319 1181.310059 1181.612671 1182.084106 1182.544678 1182.783691 1183.38269 1183.812988 1184.114258 1184.134277 1184.099854 1183.414551 1182.223999 1180.857788 1180.247192 1180.147461 1180.516602 1180.690186 1180.486938 1180.273071 1180.37085 1180.687988 1181.163452 1181.371948 1181.317871 1181.103882 1180.990601 1180.943848 1181.160767 1181.447266 1181.821289 1182.268921 1182.631348 1182.956543 1183.154907 1183.012573 1182.607544 1181.914307 1180.973511 1179.906128 1178.829468 1177.735352 1176.518555 1175.469238 1174.713745 1174.688843 1175.347046 1176.608154 1178.054932 1179.668701 1181.940796 1184.06958 1185.91748 1188.183228 1190.847656 1193.704834 1196.453003 1197.138794 1197.331177 1196.921997 1194.525513 1192.529541 1191.427246 1189.621216 1186.827393 1184.940796 1182.183105 1178.008057 1173.278564 1170.440918 1170.137817 1169.359497 1168.58728 1168.280029 1167.932007 1167.30835 1166.379395 1165.434937 1164.766968 1164.114014 1163.30188 1162.738525 1162.187744 1161.650879 1161.195312 1160.79248 1160.269043 1159.740356 1159.010986 1157.053467 1154.396484 1151.128662 1148.276489 1144.872314 1144.836304 1146.08374 1146.911865 1147.108643 1146.999023 1147.15979 1147.194092 1147.106323 1146.785767 1145.149536 1144.741333 1145.560425 1145.897339 1144.732422 1144.65564 1144.828491 1145.399658 1146.501831 1147.658447 1147.67627 1148.237549 1151.24646 1153.794922 1155.616211 1156.81897 1158.359863 1160.983521 1163.9021 1168.126221 1171.069946 1174.193726 1177.074951 1180.5354 1184.159302 1166.069946 1153.803467 1146.838257 1144.369751 1142.532837 1143.244995 1144.621948 1145.451782 1139.724487 1135.351074 1135.643921 1160.594482 1173.883179 1184.714355 1193.116211 1203.43811 1203.089966 1196.978149 1195.44043 1195.953247 1203.435791 1211.270508 1220.88855 1230.677979 1237.635498 1245.457153 1250.915039 1257.66626 1264.918701 1271.299438 1277.216309 1282.074463 1282.8479 1282.999268 1280.76709 1278.212158 1272.774048 1267.870239 1267.447021 1269.858521 1278.622192 1285.807129 1293.569092 1303.251465 1311.831299 1321.449707 1334.397949 1347.806274 1359.216919 1368.085815 1367.918579 1365.268066 1360.649536 1357.994263 1356.821289 1355.257812 1354.36084 1351.483765 1347.063477 1340.979248 1331.871338 1329.731201 1325.644897 1320.048828 1313.613281 1307.537964 1303.984497 1301.495972 1298.76709 1296.863647 1295.81897 1295.138184 1293.627686 1288.004761 1282.338501 1275.278076 1267.4552 1258.744385 1250.257568 1241.987671 1234.034424 1225.968994 1218.02832 1209.934692 1205.520142 1210.203735 1220.922119 1210.888184 1199.503052 1189.16333 1181.6521 1177.776001 1173.994751 1167.887085 1165.253296 1162.99707 1161.45166 1167.681885 1172.565796 1183.723755 1193.661255 1203.393799 1209.595215 1209.305054 1206.954956 1205.289429 1201.726318 1200.081421 1201.029297 1204.335571 1206.931763 1209.28894 1215.750488 1219.029785 1221.534424 1220.425537 1212.617676 1203.460205 1191.840576 1182.000366 1178.147461 1185.1427 1186.907104 1188.80542 1188.819946 1189.744141 1191.10144 1190.339111 1187.487793 1185.165771 1184.67749 1184.389648 1178.879028 1174.102173 1167.492432 1156.910645 1148.354614 1144.771484 1145.436523 1152.273315 1158.885498 1170.296753 1174.934204 1180.703003 1183.424683 1182.997192 1181.671753 1180.991333 1180.452759 1179.856689 1178.828003 1176.827271 1174.431763 1174.777222 1174.89624 1174.853149 1174.054077 1172.378052 1170.129395 1163.083618 1158.25354 1161.497559 1163.337646 1159.35144 1162.210693 1161.961304 1158.680786 1157.189331 1155.684326 1153.554321 1151.701416 1150.178711 1149.106812 1148.893066 1148.820557 1148.306641 1147.092285 1145.257324 1144.143921 1144.045044 1143.349609 1141.914795 1139.915283 1137.833618 1135.728394 1133.610596 1129.400024 1125.74707 1123.259888 1120.84375 1119.352295 1117.158325 1113.772827 1111.246704 1110.556274 1109.328369 1110.304077 1111.789673 1113.312988 1117.384766 1123.7677 1134.912598 1138.099609 1132.404663 1125.164551 1119.360229 1114.314209 1110.450806 1108.521973 1107.200439 1105.858032 1103.514526 1100.428955 1098.023071 1097.790039 1098.322998 1100.739014 1103.006592 1107.334229 1105.016113 1097.436157 1096.741089 1096.299927 1096.249023 1096.488647 1096.689453 1096.036865 1093.998413 1092.152466 1090.621948 1089.530762 1088.795166 1088.002441 1087.352539 1086.744873 +1188.191528 1183.734375 1182.478271 1178.561768 1168.513062 1159.710449 1141.337524 1132.589966 1150.518066 1155.888794 1165.260864 1175.161011 1179.12793 1177.642212 1174.676392 1171.700928 1167.883179 1163.991821 1160.200439 1153.188965 1144.388916 1134.724243 1134.224976 1133.176514 1133.831787 1135.052246 1134.788818 1133.700562 1132.692871 1131.601562 1130.931152 1130.366943 1129.737671 1128.868042 1128.280762 1128.315674 1130.50061 1132.309692 1134.236084 1135.660156 1137.001831 1137.336182 1136.994385 1136.384766 1135.560547 1138.13916 1144.740234 1146.164551 1145.709106 1145.983887 1145.483521 1146.334839 1146.028198 1148.479736 1158.845947 1172.578369 1171.263916 1166.049194 1161.839355 1158.703735 1161.799316 1165.139893 1169.542725 1170.893555 1170.63269 1168.734497 1171.359009 1182.595581 1190.524048 1194.945801 1194.961914 1191.408447 1187.21106 1180.819458 1171.701538 1164.427002 1165.38855 1168.737061 1177.035156 1188.246826 1196.683716 1198.591919 1199.234009 1199.543091 1199.557495 1199.335815 1199.02478 1198.952759 1198.951294 1198.919312 1198.57373 1198.109619 1197.540771 1196.923462 1196.523071 1196.409058 1196.527954 1196.75769 1196.662842 1193.555176 1187.163696 1185.101074 1183.759155 1178.702637 1174.082642 1172.624146 1171.470947 1170.762695 1173.095337 1176.348389 1178.986206 1180.941895 1182.147217 1182.589844 1183.542236 1187.08374 1190.020874 1191.814575 1192.580322 1193.042847 1193.662598 1194.655396 1194.921265 1195.233521 1195.7323 1196.063599 1195.575928 1195.169922 1194.646729 1194.105957 1193.776733 1193.322754 1192.965576 1192.725708 1192.401367 1192.091675 1191.875488 1191.658447 1191.649048 1191.62915 1191.596436 1191.596558 1191.634155 1191.416626 1191.247681 1191.145874 1191.059692 1190.993286 1190.87561 1190.385132 1190.115601 1189.908813 1189.733887 1189.563354 1189.841553 1191.119873 1193.001831 1194.377441 1195.12915 1195.598145 1196.087402 1196.700439 1197.192993 1197.451782 1197.519287 1197.718506 1197.818726 1197.9198 1198.036255 1198.102905 1198.324341 1198.423462 1198.551147 1198.734253 1198.803223 1198.936157 1198.950684 1198.888794 1198.544556 1198.169922 1197.460083 1196.722046 1195.786865 1195.235962 1194.789062 1194.954468 1195.196289 1195.388428 1195.5271 1195.699585 1196.021973 1196.641968 1196.966675 1197.097656 1197.050781 1196.919922 1196.742065 1196.629517 1196.5354 1196.694336 1196.724365 1196.944336 1197.150024 1197.266113 1197.517822 1197.560425 1197.352295 1197.143921 1196.714233 1195.796265 1195.309937 1195.141479 1194.973755 1194.578857 1194.136719 1193.694946 1193.332153 1192.927124 1192.597656 1192.374634 1192.044922 1191.647461 1191.085327 1190.740845 1190.388672 1190.34375 1190.114746 1189.833252 1189.368286 1189.046387 1188.722656 1188.42981 1188.15625 1187.688599 1187.376221 1187.129517 1186.820923 1186.461914 1185.932617 1185.584839 1184.914673 1184.45166 1184.046387 1183.658936 1183.441406 1182.985962 1182.408691 1181.979126 1181.662476 1181.739136 1182.016968 1182.565552 1183.256836 1183.51001 1183.94812 1184.479004 1184.610962 1184.530151 1184.342285 1183.814941 1182.731445 1181.616821 1181.223999 1181.390259 1182.130249 1182.492676 1182.249878 1181.365967 1181.194336 1181.44397 1181.688965 1181.891235 1181.847046 1181.70166 1181.558594 1181.434204 1181.606689 1181.794312 1182.00647 1182.485962 1182.896729 1183.123291 1183.218628 1183.199585 1183.224854 1183.278198 1181.211426 1179.572998 1178.160522 1176.964111 1175.561157 1173.868652 1172.557373 1172.899902 1173.282349 1174.517212 1176.185669 1177.994019 1179.861084 1181.390381 1182.571411 1184.210693 1186.454712 1188.304688 1189.598999 1190.102051 1190.541748 1190.131714 1188.959595 1187.265503 1185.621338 1183.618042 1181.390991 1179.40979 1176.031738 1171.933716 1170.194092 1169.278809 1168.705933 1167.946899 1167.293701 1166.875732 1166.448486 1165.785034 1165.064209 1164.32605 1163.61499 1163.084717 1162.603516 1162.010986 1161.478027 1161.095825 1160.744507 1160.303223 1159.604736 1159.12915 1157.850586 1155.450439 1152.955566 1150.092407 1147.568237 1145.157593 1147.023804 1147.346069 1147.510132 1147.609741 1147.68042 1147.638428 1147.384277 1147.166626 1146.615601 1145.564209 1145.575073 1146.673584 1146.876709 1146.121094 1145.066162 1145.04126 1145.460205 1146.464478 1147.849976 1148.87915 1149.9823 1151.921631 1153.99707 1155.613037 1156.881348 1157.943359 1158.638184 1163.001343 1167.705933 1170.942261 1174.081177 1177.541992 1180.849854 1184.258789 1172.916748 1164.055054 1155.578247 1148.288208 1144.96814 1146.448242 1151.931885 1156.470459 1142.928223 1135.193237 1140.910278 1155.455444 1171.020386 1178.839722 1184.307007 1192.904663 1194.713501 1195.528931 1201.395142 1204.712402 1206.39917 1211.632935 1221.919067 1229.170166 1234.479248 1243.468872 1249.481934 1256.939209 1263.591309 1269.524048 1276.501831 1281.43396 1282.624268 1282.893433 1282.435181 1282.039062 1279.182373 1274.606323 1273.801025 1272.199951 1277.644409 1283.921265 1293.691406 1301.399536 1309.58667 1319.292725 1331.665405 1344.670898 1356.064575 1366.987671 1369.287109 1368.73999 1365.89563 1362.996094 1365.299438 1364.576416 1358.881348 1355.963135 1351.525391 1345.270874 1340.521118 1335.273193 1331.186646 1324.136841 1317.01062 1310.588013 1305.536133 1302.904297 1300.663208 1297.991577 1295.996338 1294.488525 1292.704102 1288.643433 1283.446899 1278.322632 1270.067627 1259.29187 1249.61792 1240.955444 1233.47998 1225.031738 1217.05835 1206.776978 1201.13208 1200.471436 1211.007935 1210.754272 1199.569336 1189.932739 1182.64917 1178.580444 1174.816284 1168.879639 1166.216675 1163.954834 1162.431641 1164.759766 1170.660889 1179.664185 1189.140625 1199.94519 1209.224487 1206.848633 1199.973999 1197.960571 1194.960938 1193.901489 1195.345459 1203.419312 1208.5271 1212.74585 1217.408081 1221.115723 1222.443237 1220.714478 1213.005127 1203.653076 1192.241333 1181.500977 1185.790405 1193.69104 1194.620483 1193.351074 1194.504395 1195.829712 1196.580444 1196.201782 1190.772583 1185.461548 1184.852783 1182.41626 1177.96228 1173.868774 1168.685425 1158.684814 1147.484375 1144.981079 1145.831055 1151.587036 1158.800415 1167.73291 1171.555908 1180.653564 1184.684692 1185.527222 1183.842529 1183.129517 1182.940674 1182.184082 1181.301636 1180.88916 1179.468994 1178.728394 1178.200928 1177.197754 1175.810303 1174.100464 1172.319946 1169.224731 1159.082642 1165.80249 1168.265747 1167.739014 1167.96106 1167.041016 1161.914917 1158.385376 1156.36377 1153.467651 1149.599365 1147.747925 1147.15564 1146.754761 1148.725464 1148.446533 1146.453125 1145.067749 1144.899048 1146.411621 1146.227051 1144.490967 1142.709473 1139.58606 1136.319458 1133.847778 1130.074219 1126.346436 1122.393921 1120.723145 1119.503296 1117.748535 1115.827148 1114.136475 1112.111938 1109.50061 1109.05603 1109.045776 1110.450195 1115.392212 1124.421265 1135.242676 1132.576904 1124.972656 1119.793823 1115.592651 1111.360596 1108.49353 1106.675659 1105.264038 1103.80542 1101.787231 1099.484131 1097.352783 1097.098022 1097.714111 1099.605835 1102.815918 1108.642578 1109.704956 1097.525269 1097.009155 1096.103516 1095.617554 1095.389526 1095.053345 1094.166626 1093.065674 1091.795654 1090.59729 1089.702026 1088.879517 1087.994507 1086.919556 1086.304443 +1188.954468 1186.341675 1184.809082 1179.791382 1166.152832 1152.936157 1133.503052 1147.013794 1155.922241 1165.634888 1176.945923 1184.038818 1183.96814 1180.734863 1177.165649 1172.921997 1168.381226 1164.61438 1159.97583 1153.554199 1147.163696 1144.373291 1143.785156 1136.714355 1142.585938 1147.656494 1146.561157 1141.612671 1134.978394 1133.554932 1132.665161 1132.288452 1131.758545 1130.314087 1128.873779 1128.507935 1130.043457 1132.037598 1134.04895 1135.67395 1136.271362 1135.479614 1133.996826 1134.744629 1136.469604 1144.708496 1150.323608 1159.366211 1159.483521 1155.999512 1150.579346 1150.45752 1149.61145 1150.052734 1160.885742 1173.707764 1179.288452 1169.49585 1165.949219 1165.82312 1167.87207 1172.577637 1181.374756 1181.963379 1178.827393 1173.734497 1173.195435 1184.928833 1196.330322 1198.558472 1197.537842 1193.721069 1187.911011 1180.095215 1170.343262 1167.249634 1168.589478 1172.786743 1179.113403 1183.252808 1194.578491 1199.877075 1201.859375 1201.871948 1201.307739 1200.71936 1200.247925 1200.022949 1199.947998 1199.755493 1199.384521 1198.761963 1197.289795 1195.587158 1195.489746 1195.47998 1195.52417 1195.99939 1196.379272 1193.818115 1189.336426 1186.320312 1184.654663 1182.336914 1178.015503 1175.601685 1173.776733 1171.549561 1172.877686 1176.202515 1179.327759 1182.334106 1184.848511 1187.087402 1187.743042 1189.303833 1191.175415 1192.312744 1192.924927 1193.525024 1193.939575 1194.340698 1194.66272 1194.721313 1194.840576 1194.768066 1194.59729 1194.460327 1194.178467 1193.933716 1193.519287 1193.211548 1192.996704 1192.607544 1192.414307 1192.179565 1192.005249 1191.880249 1191.802979 1191.848999 1191.77124 1191.811279 1191.801514 1191.608643 1191.578491 1191.473267 1191.383301 1191.272705 1191.139282 1190.771851 1190.556274 1190.299316 1190.077637 1189.991089 1190.031738 1191.812256 1193.957886 1195.346558 1196.082275 1196.631226 1197.173462 1197.601685 1198.050659 1198.397217 1198.646484 1198.835938 1198.945312 1198.972778 1199.043945 1199.189331 1199.222534 1199.26709 1199.318115 1199.359741 1199.335815 1199.337646 1199.347168 1199.130981 1198.769897 1198.212891 1197.418701 1196.457764 1195.476318 1195.272095 1195.328125 1195.539429 1195.689575 1195.839111 1196.084839 1196.326172 1196.567627 1196.843262 1197.165649 1197.317871 1197.374146 1197.227661 1197.305298 1197.26001 1197.169922 1197.343262 1197.391602 1197.376953 1197.47583 1197.613892 1197.743286 1197.742676 1197.61084 1197.304199 1196.816528 1196.204956 1195.916138 1195.749146 1195.428467 1195.08313 1194.616455 1194.157715 1193.783447 1193.408203 1193.150513 1192.881958 1192.575684 1192.118286 1191.683838 1191.352905 1191.000854 1190.979858 1190.698242 1190.330322 1189.938232 1189.640503 1189.343262 1189.114136 1188.731079 1188.347534 1188.016724 1187.599976 1187.137207 1186.727661 1186.364014 1185.790161 1185.390015 1184.98645 1184.554565 1184.209351 1183.891724 1183.478638 1182.838379 1182.225708 1181.995728 1182.084106 1182.328979 1182.999146 1183.600586 1184.12915 1184.615479 1184.922852 1185.09021 1185.033081 1184.649048 1184.056885 1183.000366 1182.005859 1181.810913 1182.20459 1183.185181 1183.404663 1183.399292 1182.662231 1181.968872 1181.960083 1182.168823 1182.292847 1182.323364 1182.17627 1182.130127 1182.097656 1182.180054 1182.161133 1182.328613 1182.879272 1183.235352 1183.445068 1183.422974 1183.234497 1183.221313 1182.974976 1181.211792 1179.204468 1177.613403 1176.221069 1174.829834 1173.057617 1170.84021 1171.041748 1171.001343 1172.670898 1174.489624 1176.069214 1177.439697 1178.911255 1179.978882 1181.28125 1182.726929 1184.06543 1185.078979 1185.80603 1185.83252 1185.227173 1183.883057 1182.445923 1180.529663 1178.384155 1176.20813 1173.299072 1170.90332 1169.723145 1168.668091 1167.907349 1167.250732 1166.571899 1165.99585 1165.557617 1165.105103 1164.592407 1163.866211 1163.235107 1162.557373 1162.008911 1161.548096 1161.147705 1160.838379 1160.46228 1160.171265 1159.685303 1159.049683 1157.373779 1155.634766 1153.599365 1151.114624 1148.662109 1146.457397 1145.794434 1147.213135 1147.830811 1148.103271 1148.182251 1148.0625 1147.819458 1147.377808 1146.908203 1146.282715 1145.786865 1146.164062 1146.83313 1146.896118 1146.34082 1145.502319 1145.354614 1145.976685 1147.060669 1148.260864 1149.522827 1151.032104 1152.776611 1154.493652 1156.359741 1157.850342 1158.9198 1159.912109 1163.540649 1168.399414 1170.733765 1173.77478 1177.464111 1180.735962 1183.873535 1184.913574 1174.729126 1161.808594 1153.315186 1149.098877 1151.582031 1158.775635 1158.495239 1140.097168 1137.275513 1146.638306 1157.96814 1168.251343 1184.556396 1186.312378 1193.008545 1196.748901 1199.825684 1207.212402 1209.878784 1219.273438 1220.686401 1223.323486 1229.930908 1232.322388 1233.123047 1243.036499 1247.601807 1256.806885 1268.036743 1273.63623 1278.92041 1279.149536 1281.175781 1281.80127 1282.207275 1281.979126 1279.765991 1281.721558 1281.630737 1279.392456 1285.518433 1292.804199 1302.060669 1309.158081 1317.061401 1330.586304 1343.668091 1352.900391 1364.110352 1370.028687 1369.779663 1368.441284 1366.837646 1367.422363 1365.790161 1361.718872 1358.826172 1354.488037 1348.970947 1344.527222 1338.621704 1333.105957 1326.325073 1318.248413 1313.429077 1308.73999 1305.085327 1301.335083 1297.811768 1293.892456 1291.334106 1288.956055 1286.63916 1284.093018 1279.754883 1270.020386 1256.452515 1244.154541 1233.294556 1225.855347 1218.258423 1205.808838 1197.059814 1196.58313 1194.206543 1203.563599 1209.95752 1199.846313 1190.496094 1183.452881 1179.187256 1175.46228 1169.779053 1167.268433 1165.207642 1163.722168 1163.637329 1169.671997 1176.533813 1184.585205 1198.507446 1209.630493 1201.426636 1192.112427 1192.45459 1192.800293 1194.912109 1199.851196 1205.401245 1210.740479 1215.626099 1219.972656 1223.488647 1224.3396 1221.184448 1212.886353 1202.667847 1190.398193 1181.52832 1196.271362 1201.057495 1199.335205 1197.208374 1197.140015 1197.644653 1197.553467 1194.410767 1186.270386 1180.951416 1178.55481 1176.876709 1173.633789 1168.636475 1161.695679 1151.498047 1145.838501 1147.037598 1145.926147 1149.568237 1161.265747 1173.431763 1178.788574 1183.838745 1184.297363 1188.117188 1187.81665 1186.949463 1186.456909 1185.429077 1184.613403 1183.704956 1182.615479 1183.205811 1181.26709 1179.316895 1177.296875 1175.643555 1174.05542 1172.635986 1172.501221 1171.038452 1172.375122 1172.373779 1171.880859 1172.260376 1167.914307 1160.949097 1157.052979 1152.979614 1147.313477 1146.154907 1144.591675 1144.70105 1149.161377 1148.793823 1147.393066 1146.050537 1145.190308 1146.287842 1147.115112 1146.975342 1145.578125 1140.981567 1137.139038 1133.760132 1131.745728 1128.180054 1122.934814 1122.37146 1121.035034 1119.477051 1118.102539 1116.80249 1114.758423 1111.730835 1109.482422 1108.631104 1108.623169 1110.295044 1123.381592 1129.041382 1124.057129 1119.368652 1115.798218 1112.267456 1109.048706 1106.890869 1105.054565 1103.664673 1102.296021 1100.912842 1099.256714 1097.451904 1096.837158 1097.154541 1097.669922 1100.319092 1101.670532 1101.832642 1099.496338 1097.062012 1095.609741 1094.778198 1094.444702 1093.963257 1093.258545 1092.317505 1091.340088 1090.498901 1089.728149 1088.919189 1087.744995 1085.762207 1085.433594 +1188.816406 1186.610229 1182.823242 1170.694824 1160.858398 1140.890259 1143.568481 1156.195557 1165.542725 1175.96814 1183.793945 1185.644043 1185.587158 1184.16748 1177.908203 1170.420654 1168.986084 1166.128296 1158.728271 1156.245483 1153.456909 1153.676147 1152.164429 1147.075562 1150.553711 1159.242676 1158.028564 1152.497559 1146.156982 1137.358276 1134.313232 1134.237183 1134.221436 1132.400269 1129.854614 1128.750244 1130.000366 1131.687378 1133.520752 1135.18335 1135.444946 1133.503418 1135.020508 1135.352295 1138.820435 1146.326294 1153.581299 1160.18457 1162.879517 1162.5979 1160.982056 1156.94104 1155.184692 1155.536133 1163.393433 1178.411133 1185.554688 1171.531128 1170.24292 1169.24585 1175.684204 1187.018188 1193.159668 1193.272461 1190.0979 1186.037231 1185.236206 1189.138672 1198.362183 1200.255371 1198.76709 1195.124268 1188.697998 1180.383667 1168.847046 1167.721191 1168.2854 1174.522339 1185.377563 1191.818604 1198.125244 1204.331421 1205.463745 1204.225098 1203.001587 1202.093506 1201.385498 1200.984375 1200.796753 1200.566284 1200.214111 1199.35498 1197.860229 1195.804321 1195.570801 1195.537598 1195.220459 1194.619141 1193.422241 1189.886963 1185.769775 1183.96582 1182.958008 1181.409668 1181.317993 1178.696899 1175.378662 1172.775391 1172.37793 1175.403076 1178.71814 1182.029785 1186.724121 1194.796753 1194.389282 1193.078735 1193.823853 1194.315918 1193.977661 1194.119507 1194.503296 1194.797363 1194.794678 1194.800171 1194.80127 1194.781982 1194.599365 1194.36438 1194.098267 1193.911499 1193.609497 1193.326538 1193.097534 1192.85498 1192.655273 1192.427734 1192.337402 1192.291626 1192.223999 1192.23645 1192.253662 1192.161621 1192.081421 1192.042969 1191.922241 1191.863281 1191.726562 1191.760986 1191.625732 1191.243286 1191.026001 1190.795776 1190.61499 1190.501831 1190.49231 1192.92749 1195.134766 1196.197876 1197.032715 1197.689453 1198.315308 1198.800415 1199.115845 1199.440674 1199.739136 1199.953491 1200.143555 1200.300415 1200.391479 1200.364136 1200.240356 1200.354858 1200.276001 1200.203003 1200.070435 1199.870117 1199.669189 1199.306274 1198.892578 1198.135132 1197.350708 1196.134155 1195.353516 1195.536499 1195.734497 1195.867432 1196.105225 1196.346924 1196.559204 1196.843384 1197.089478 1197.230957 1197.392456 1197.472168 1197.598511 1197.747192 1197.84436 1197.866699 1197.834106 1197.875854 1197.961304 1197.997437 1197.935059 1197.947754 1198.026733 1197.970703 1197.768433 1197.492676 1197.04187 1196.660889 1196.354492 1196.060669 1195.859741 1195.467041 1194.886963 1194.629761 1194.385254 1193.954956 1193.6073 1193.318848 1193.070923 1192.651733 1192.241821 1191.940308 1191.716675 1191.531494 1191.293091 1190.994873 1190.578491 1190.244629 1190.066772 1189.734741 1189.299683 1188.864624 1188.444214 1187.923218 1187.451294 1186.987305 1186.563232 1186.191895 1185.807129 1185.312866 1184.908813 1184.508057 1184.146362 1183.667114 1183.040283 1182.470581 1182.272217 1182.206421 1182.661011 1183.125 1183.878784 1184.509521 1185.003784 1185.399902 1185.506958 1185.337524 1184.882568 1184.117676 1183.012451 1182.268188 1182.095703 1182.639526 1183.56958 1183.88269 1183.842896 1183.541504 1182.941772 1182.824585 1182.576782 1182.612671 1182.625732 1182.598877 1182.606323 1182.556641 1182.550781 1182.550537 1182.608154 1183.14502 1183.420532 1183.460571 1183.374023 1182.876831 1182.224609 1181.711182 1180.471924 1178.765869 1177.11853 1175.644165 1174.124634 1172.40918 1171.169189 1170.848755 1170.799316 1171.246094 1173.208252 1174.187134 1175.195068 1176.390503 1177.544189 1178.870972 1179.944824 1180.713379 1181.622559 1181.841553 1181.580933 1181.017212 1179.92395 1178.516968 1176.450928 1173.845215 1171.042725 1170.039917 1169.040527 1168.085449 1167.189575 1166.467163 1165.811035 1165.107788 1164.578857 1164.200684 1163.849121 1163.330933 1162.711914 1162.117188 1161.619141 1161.129272 1160.449219 1159.994385 1160.008911 1159.93457 1159.581543 1159.090454 1158.071289 1156.449707 1154.61438 1152.381226 1149.796509 1147.034058 1146.377075 1147.069824 1147.70459 1148.278931 1148.536621 1148.496338 1148.389038 1147.895752 1146.771973 1146.541382 1146.436523 1146.663452 1146.436035 1146.925293 1146.830444 1146.235962 1145.8125 1145.777466 1146.495361 1146.625366 1147.798462 1149.69519 1151.614136 1153.457153 1155.396362 1157.450195 1159.499512 1160.75061 1162.15332 1164.818359 1168.897949 1171.793579 1173.865234 1177.109131 1181.129883 1183.96521 1183.80542 1176.246582 1166.547607 1156.789673 1152.498535 1154.638916 1162.101807 1145.076538 1136.266113 1143.544067 1155.734985 1170.366821 1178.874512 1185.29895 1190.310913 1196.378418 1199.593262 1204.660767 1210.834106 1216.562866 1221.587646 1224.723022 1229.523071 1232.116455 1233.286865 1242.734985 1247.840576 1252.984253 1256.208618 1261.419189 1268.943604 1271.043213 1276.271729 1279.62439 1280.387573 1282.212036 1282.490601 1282.334473 1282.842529 1283.163696 1284.408447 1288.246338 1293.443237 1300.001099 1306.38147 1312.384888 1322.303467 1334.765503 1344.30127 1357.351807 1367.443848 1370.148682 1369.950073 1369.555908 1367.82605 1364.568848 1364.420288 1362.652344 1355.981445 1351.514648 1345.912231 1339.447144 1333.912109 1327.84021 1323.032959 1316.923828 1311.204346 1306.10144 1300.96875 1295.84668 1293.409668 1289.533691 1282.376831 1280.391113 1283.660767 1279.853394 1263.849854 1242.658691 1239.462646 1231.679199 1221.081421 1219.020142 1213.901978 1207.59082 1195.189453 1193.884277 1195.14978 1206.247559 1199.240479 1190.105103 1183.660156 1179.925659 1175.94458 1170.289551 1168.357788 1166.47876 1164.938721 1163.799194 1167.685059 1173.638062 1183.50647 1196.508545 1205.650391 1196.922485 1188.822388 1189.382446 1193.639282 1198.244019 1204.094238 1209.011841 1213.886719 1218.52124 1223.206055 1227.256592 1227.732544 1222.250366 1213.877808 1203.513916 1192.047974 1191.650635 1205.91272 1207.102173 1202.408691 1196.674683 1195.546387 1194.737061 1192.569092 1187.429077 1182.46167 1176.213501 1170.331055 1170.563232 1168.830322 1162.933716 1154.906738 1147.049194 1147.798828 1150.231323 1147.220093 1146.102295 1154.865356 1165.325195 1173.601562 1184.118042 1189.847778 1192.43335 1192.322021 1191.427979 1190.48584 1189.30835 1187.887939 1186.476807 1185.571533 1184.805786 1182.2323 1180.029053 1177.462524 1175.583496 1174.436157 1173.802612 1173.512207 1173.238892 1173.166382 1172.861816 1171.140259 1171.648071 1168.011475 1161.998169 1158.715332 1154.453369 1150.710449 1147.780273 1143.897583 1134.36377 1141.111694 1147.573853 1147.716431 1146.945068 1145.667725 1144.329102 1143.412476 1143.938599 1143.916992 1140.294067 1138.130737 1135.827026 1134.706177 1132.13208 1128.640991 1125.875977 1123.582642 1121.919189 1120.578247 1120.941528 1118.886841 1115.519043 1112.206055 1109.524048 1108.588135 1109.048096 1116.291016 1120.646973 1118.961304 1115.649536 1112.670654 1109.456665 1107.192871 1105.146362 1103.401489 1102.09668 1100.827759 1099.560913 1098.180176 1097.176392 1096.301392 1096.255371 1096.579956 1097.352905 1097.555786 1097.510864 1097.102661 1095.825439 1094.762695 1094.338257 1093.911621 1093.448608 1092.798828 1091.9198 1091.008545 1090.428955 1090.213867 1089.851807 1088.741333 1086.231934 1085.222046 +1185.243774 1179.157349 1168.805908 1158.006226 1145.0896 1140.810791 1153.057739 1164.105103 1173.473877 1182.343994 1185.446777 1186.621948 1186.110474 1183.853394 1179.160278 1173.83728 1173.808228 1171.158325 1164.786133 1160.845459 1159.505127 1160.643799 1158.26416 1154.431763 1155.282471 1160.205811 1161.191772 1159.414185 1153.728027 1149.735352 1145.911865 1141.685181 1138.134766 1134.211914 1131.542725 1129.034546 1129.80896 1130.558594 1132.260742 1133.752197 1132.251099 1131.659912 1132.188843 1134.50769 1138.364258 1143.636841 1148.872803 1155.084106 1160.766479 1162.818848 1162.714478 1161.781128 1161.071899 1158.606323 1160.236206 1174.724243 1182.873291 1177.322754 1177.736938 1182.446533 1186.998047 1197.087769 1204.463867 1204.427002 1200.190918 1197.186157 1199.575928 1201.031982 1203.345703 1202.336182 1199.930664 1196.740234 1190.793091 1183.258179 1172.265137 1167.953857 1167.973022 1174.852051 1187.531128 1197.813965 1204.443726 1208.248047 1207.408203 1205.966309 1204.360107 1203.28894 1202.434082 1201.947998 1201.685669 1201.445557 1200.891724 1200.184937 1199.031738 1197.742798 1196.925415 1196.588745 1196.205566 1195.209229 1193.417725 1189.057617 1184.673828 1183.54834 1184.475464 1184.950928 1184.197021 1181.140625 1177.086914 1174.38501 1172.759766 1174.786377 1177.58252 1181.228882 1186.067505 1195.721069 1195.762695 1195.750366 1195.848145 1195.613525 1195.335083 1195.326782 1195.390381 1195.40918 1195.199219 1194.987549 1195.003052 1195.012817 1194.722656 1194.513916 1194.261597 1194.029175 1193.856201 1193.598999 1193.434937 1193.232544 1193.109619 1193.019165 1192.906616 1192.918091 1192.855713 1192.855469 1192.824829 1192.678955 1192.531128 1192.379883 1192.365723 1192.304688 1192.302612 1192.211182 1192.172974 1191.791016 1191.517944 1191.286377 1191.129272 1190.927246 1191.416992 1193.996216 1195.831299 1197.050415 1197.919067 1198.732178 1199.455322 1200.006714 1200.436768 1200.712036 1201.014893 1201.309204 1201.572876 1201.646484 1201.650391 1201.684326 1201.441162 1201.2854 1201.110107 1200.952881 1200.652588 1200.382935 1200.014771 1199.550781 1198.882935 1198.164795 1197.122803 1195.538818 1195.493286 1196.038574 1196.133301 1196.276611 1196.518921 1196.740845 1197.031494 1197.344604 1197.538818 1197.610352 1197.760986 1197.882446 1198.067139 1198.266479 1198.341431 1198.373413 1198.342651 1198.393799 1198.436768 1198.554199 1198.549805 1198.434326 1198.300293 1198.254028 1197.935791 1197.648682 1197.339355 1196.974976 1196.695435 1196.367798 1195.991333 1195.521484 1195.307495 1195.216675 1194.947998 1194.496094 1194.039673 1193.769165 1193.61499 1193.24707 1192.87561 1192.548828 1192.377319 1192.230347 1191.907349 1191.613647 1191.234375 1191.021729 1190.705933 1190.302368 1189.854126 1189.278198 1188.707886 1188.113159 1187.619263 1187.1604 1186.834961 1186.452393 1186.014282 1185.478149 1185.075684 1184.630005 1184.162231 1183.621948 1183.021851 1182.53479 1182.394409 1182.699585 1182.946045 1183.377441 1184.073242 1184.793335 1185.392944 1185.751709 1185.882568 1185.631958 1184.994263 1184.011597 1183.030518 1182.371826 1182.304199 1182.941528 1183.917603 1184.288574 1184.384766 1184.173706 1183.970337 1183.658447 1183.30835 1182.748779 1182.866333 1182.948242 1182.954956 1182.807007 1182.693481 1182.612061 1182.839844 1183.115112 1183.44812 1183.433716 1182.732178 1181.968994 1181.381714 1180.609009 1179.538818 1178.187622 1176.714478 1175.044434 1173.558716 1172.677979 1171.999756 1171.276367 1170.836792 1170.759399 1171.244019 1172.149414 1172.8396 1174.355957 1175.407227 1176.291138 1176.944092 1178.042847 1178.150146 1178.178345 1177.963867 1177.541016 1176.631226 1175.015137 1172.799072 1170.453735 1169.370972 1168.357178 1167.571167 1166.630859 1165.856934 1165.025879 1164.269775 1163.632568 1163.060059 1162.768188 1162.531006 1162.151978 1161.649292 1161.061157 1160.494507 1160.204712 1159.558838 1158.889771 1158.919556 1158.925171 1158.760498 1158.300293 1157.115479 1155.547852 1153.807617 1151.935059 1149.580688 1147.600952 1147.428101 1147.866211 1148.408691 1148.824707 1148.930786 1148.895508 1148.588623 1147.665894 1146.696655 1146.616577 1146.633179 1147.136108 1146.856445 1147.252563 1147.020386 1146.418335 1146.012939 1146.29541 1146.714722 1146.623047 1147.643799 1149.710815 1151.796875 1153.909668 1156.04126 1157.620605 1159.351196 1160.640381 1162.229248 1164.944946 1167.763306 1169.922852 1171.390259 1176.049072 1181.091553 1184.58667 1179.004272 1171.596069 1163.893433 1156.661987 1151.21814 1148.803955 1144.256104 1138.615723 1138.606689 1145.602783 1156.678955 1173.466309 1179.970337 1183.480713 1188.000122 1195.00415 1196.395996 1203.436401 1208.167847 1216.496582 1220.862549 1226.327026 1232.385498 1237.052734 1245.206543 1246.263306 1248.013794 1258.924438 1265.425049 1269.713989 1269.3125 1269.788208 1275.703979 1278.961792 1281.032715 1282.031128 1282.209106 1281.267212 1282.099854 1282.997681 1284.946655 1288.903931 1294.062866 1295.62915 1301.239014 1306.783447 1313.71582 1325.025513 1336.747803 1353.235107 1365.512939 1370.279907 1370.63269 1370.251709 1370.488159 1369.913818 1369.821777 1367.774414 1362.412842 1356.439575 1351.693481 1343.802856 1339.613892 1333.500488 1329.075073 1320.453003 1312.860474 1305.541382 1298.167969 1292.389526 1291.59729 1289.055664 1283.557251 1281.065063 1270.40625 1268.167236 1261.043823 1259.326172 1254.758667 1244.378052 1236.51062 1228.868774 1218.761353 1208.620361 1200.620361 1196.092773 1193.296753 1196.026367 1196.197998 1189.22998 1183.207764 1179.790161 1176.285767 1170.344116 1169.950073 1168.22168 1166.256226 1164.909668 1166.268311 1171.508789 1181.572632 1190.971924 1196.051025 1189.823853 1182.541016 1188.212158 1194.787231 1200.98584 1207.162598 1212.240845 1217.227173 1222.015991 1228.205078 1231.724976 1232.243896 1225.133667 1216.098267 1207.675903 1193.78418 1200.501221 1211.705566 1209.262451 1201.781128 1194.461792 1190.223755 1186.733032 1184.128906 1180.546753 1175.608765 1171.259277 1167.442017 1164.165283 1162.792847 1159.970703 1152.874146 1146.246338 1157.533081 1159.114014 1152.616699 1145.798096 1151.658813 1159.040161 1171.133179 1182.925415 1193.649414 1196.329102 1196.146729 1195.47937 1194.591309 1192.947144 1191.201782 1189.780273 1187.875854 1185.939941 1183.953369 1174.867798 1174.584106 1174.162598 1172.96936 1173.417236 1172.295166 1173.500977 1172.662354 1166.863892 1164.043823 1163.620483 1157.671875 1160.472046 1159.078491 1154.374512 1150.438477 1148.747559 1148.083618 1142.385864 1132.813354 1137.830688 1144.755615 1147.530273 1146.942383 1143.307739 1138.338013 1134.578979 1136.683594 1138.091064 1137.915527 1136.848145 1135.863892 1135.252075 1131.856201 1127.440796 1125.009766 1123.765015 1122.184082 1122.713745 1122.76123 1119.56958 1113.758423 1109.89502 1108.723633 1108.082031 1108.321289 1108.980957 1111.927124 1111.868286 1109.274292 1106.773315 1104.605347 1102.827515 1101.758423 1100.567261 1099.280273 1097.915649 1096.967896 1096.18335 1095.544189 1095.373779 1095.703247 1096.124023 1096.248535 1096.111206 1095.270142 1094.587646 1094.327271 1094.161377 1093.861206 1093.357788 1092.646484 1091.537842 1090.813354 1090.545532 1090.954834 1091.743408 1092.123291 1088.848267 1085.382202 +1171.457153 1162.150146 1149.624023 1143.082397 1144.283813 1152.340088 1160.842896 1173.068726 1181.683228 1185.477417 1187.657959 1188.008789 1186.771973 1182.866333 1183.912842 1183.787964 1179.143066 1173.323608 1168.235474 1165.809814 1164.373047 1163.210571 1160.959717 1157.65918 1156.93042 1159.896851 1162.330078 1161.440063 1159.058838 1157.206543 1155.379883 1149.631348 1143.828369 1137.593384 1133.908569 1130.809326 1129.507812 1130.126343 1130.441895 1130.604736 1132.058838 1134.801025 1134.874268 1132.770264 1135.925903 1138.491333 1142.2677 1146.165283 1153.136353 1159.738037 1162.823364 1166.202759 1166.124023 1163.760376 1163.869019 1170.388672 1174.958374 1178.21106 1182.131348 1191.654663 1198.96228 1207.418457 1210.196533 1210.008545 1208.338501 1206.896606 1207.661621 1208.157227 1207.416504 1204.153809 1200.879517 1197.424316 1191.261108 1183.674683 1174.851318 1169.179688 1168.317627 1174.418823 1187.173096 1198.232056 1205.232422 1208.318726 1207.577148 1206.566162 1205.130615 1204.057495 1203.187012 1202.742554 1202.399292 1202.104858 1201.682129 1201.017578 1200.056396 1199.060547 1198.056274 1197.460327 1196.828491 1196.215576 1195.676758 1193.323608 1189.665161 1187.589844 1186.924805 1185.723511 1183.565063 1181.429321 1178.455688 1175.824829 1173.895752 1174.400146 1176.75647 1179.53772 1183.039795 1191.351807 1195.992554 1196.132446 1196.194092 1196.396484 1196.206177 1195.89209 1195.82373 1195.560669 1195.542847 1195.548218 1195.553833 1195.3927 1195.076782 1194.823853 1194.585205 1194.432373 1194.238281 1194.070679 1193.861816 1193.725098 1193.693115 1193.717163 1193.685059 1193.720459 1193.642212 1193.610229 1193.475464 1193.250366 1193.033203 1192.787354 1192.642944 1192.649414 1192.611084 1192.671875 1192.567505 1192.246216 1191.932251 1191.763428 1191.547119 1191.399536 1193.173462 1195.389893 1196.564453 1197.719482 1198.751343 1199.675903 1200.599731 1201.355835 1201.914185 1202.240723 1202.558472 1202.87561 1203.008057 1203.045898 1202.87561 1202.745117 1202.563721 1202.244751 1201.911133 1201.626587 1201.193726 1200.788574 1200.3302 1199.735962 1199.017456 1198.189087 1197.027344 1195.455566 1195.920654 1196.428101 1196.527222 1196.783325 1197.005127 1197.118774 1197.432251 1197.800293 1197.965698 1198.210815 1198.283447 1198.339844 1198.453613 1198.619019 1198.768433 1198.907837 1198.812256 1198.881714 1199.014038 1199.151245 1199.075684 1198.984497 1198.663086 1198.529541 1198.281128 1198.072754 1197.735962 1197.446533 1197.175537 1196.831177 1196.473755 1196.086914 1195.900391 1195.768555 1195.463501 1194.932495 1194.419434 1194.201294 1194.21936 1193.959961 1193.608276 1193.173218 1193.003784 1192.715332 1192.511475 1192.335815 1191.927246 1191.730957 1191.314087 1190.827148 1190.273804 1189.616821 1188.908325 1188.312622 1187.819824 1187.425415 1187.028198 1186.603271 1186.098511 1185.655151 1185.169312 1184.62207 1183.988525 1183.407959 1182.752197 1182.521606 1182.520874 1182.991699 1183.105225 1183.695435 1184.38147 1185.172241 1185.841431 1186.088379 1186.237671 1185.811523 1185.077148 1183.751953 1182.90625 1182.62915 1183.089966 1183.616577 1184.369263 1184.722778 1184.890625 1184.885254 1184.756592 1184.338745 1183.806885 1183.306396 1183.164429 1183.21582 1183.161743 1182.830811 1182.571899 1182.348633 1182.410889 1183.039551 1183.295898 1182.848999 1181.926514 1181.203003 1180.550659 1179.714478 1178.726807 1177.533813 1176.088501 1174.505859 1172.837402 1172.022827 1171.915283 1171.735107 1171.060669 1170.599854 1170.601685 1170.782471 1170.947632 1172.426392 1173.566284 1174.07605 1173.950928 1174.350708 1174.540161 1174.659058 1174.55188 1174.307129 1173.492554 1172.164185 1170.335327 1169.040161 1167.923096 1166.991577 1166.119629 1165.40918 1164.538696 1163.65564 1162.770752 1162.018799 1161.46936 1161.359497 1161.240112 1161.021118 1160.538452 1160.0802 1159.687012 1159.165771 1158.71167 1158.350708 1158.303833 1158.389526 1157.766846 1157.014404 1155.945923 1154.635498 1153.273193 1151.904785 1150.558716 1149.450684 1148.996094 1148.958008 1149.14624 1149.386108 1149.446167 1149.374512 1148.899658 1148.14917 1147.534302 1147.184814 1147.016968 1147.654175 1147.748535 1147.466553 1147.139893 1146.571045 1146.215698 1146.736816 1146.782349 1146.632446 1147.81311 1149.921021 1152.029297 1154.216309 1156.675903 1158.807129 1158.584961 1158.542236 1161.611084 1164.875854 1167.119873 1168.833374 1171.225464 1175.900757 1180.974731 1182.382324 1171.709839 1164.505737 1158.658203 1152.375 1147.245483 1141.103027 1136.928589 1136.617432 1144.593018 1156.771118 1164.72583 1170.9823 1177.954956 1183.68457 1183.021973 1188.496704 1196.332397 1205.841187 1211.658936 1216.896484 1221.745483 1227.405151 1230.974609 1239.202759 1246.093262 1254.079468 1257.060181 1256.048828 1268.670166 1271.302368 1272.965088 1275.266968 1277.843262 1280.343018 1281.027222 1281.751587 1281.209473 1278.65564 1276.274536 1279.55542 1281.58252 1284.83606 1288.276123 1289.672852 1292.275269 1301.273315 1310.990601 1321.213501 1332.339966 1345.838379 1359.547974 1368.437134 1370.028687 1370.091675 1372.004517 1376.385376 1378.19812 1373.437378 1365.715454 1360.23999 1355.679688 1348.901367 1343.924561 1337.73645 1331.638916 1322.372437 1313.047119 1304.512329 1299.080688 1294.933838 1293.246948 1290.573364 1287.329834 1283.773804 1278.520508 1277.724365 1274.145142 1266.143921 1257.887451 1246.898926 1236.625977 1228.293823 1216.405884 1206.430542 1200.825806 1196.010376 1191.169678 1183.740967 1184.902466 1184.98645 1182.48584 1179.81897 1176.794067 1171.502319 1171.666382 1170.173462 1167.845459 1166.205566 1166.103394 1171.674316 1177.91333 1183.251953 1185.06604 1181.846313 1185.282349 1191.299072 1196.665527 1203.135132 1209.324585 1215.085571 1220.852783 1227.615112 1233.327637 1235.504883 1235.19397 1229.99353 1218.280029 1210.231934 1197.101807 1209.494141 1211.012207 1207.9823 1199.348511 1192.317017 1184.686035 1181.220703 1179.668945 1173.356812 1169.999146 1170.126099 1168.331665 1158.542969 1158.002686 1156.328125 1153.704956 1156.303833 1162.473022 1163.274536 1159.283203 1150.817017 1150.259399 1159.833252 1172.914307 1184.219238 1195.213989 1198.147583 1197.939575 1197.747192 1197.402588 1196.161865 1194.516602 1192.688354 1189.997192 1187.179199 1184.692627 1173.206787 1159.744385 1162.37561 1167.197144 1171.697266 1166.872681 1165.552002 1164.06311 1156.94397 1156.523071 1160.186768 1154.581543 1151.299805 1155.379028 1150.486694 1145.866333 1146.148438 1146.705444 1146.405151 1134.4823 1132.995728 1137.118896 1142.04187 1144.767456 1141.791992 1137.723267 1134.691772 1132.744751 1127.223877 1133.629883 1135.870239 1134.621826 1132.854004 1129.602783 1125.62915 1124.036621 1123.28418 1122.493896 1121.923584 1123.109619 1122.05957 1116.34314 1112.185913 1110.195557 1108.784058 1106.559326 1104.926392 1106.216797 1106.026978 1104.844971 1102.957275 1101.420166 1100.454834 1100.005859 1098.893921 1097.466675 1096.343262 1095.519775 1094.702393 1094.342407 1094.403564 1094.671509 1094.880493 1094.760986 1094.424561 1094.133301 1094.095093 1094.136963 1094.39209 1094.686768 1093.953857 1092.557129 1091.191406 1090.515747 1090.849731 1091.960571 1094.803467 1097.758423 1092.787598 1087.561646 +1159.640747 1145.384888 1145.643799 1150.534058 1155.168335 1162.792847 1173.021729 1181.115967 1187.411377 1190.358154 1190.634766 1190.301758 1188.914673 1186.938599 1186.935303 1186.052002 1183.508667 1174.922974 1171.024292 1170.630737 1167.997559 1165.723145 1162.497803 1158.880981 1158.269409 1161.25061 1164.387329 1164.315308 1162.875854 1161.737793 1160.830811 1158.158203 1148.986206 1142.69397 1137.94751 1135.006714 1134.842529 1133.648071 1132.832764 1134.995972 1135.11145 1135.802734 1135.650513 1135.023926 1133.665894 1134.724487 1135.270386 1137.742554 1143.450806 1149.894531 1159.666138 1170.651489 1171.355469 1170.030029 1172.464111 1170.863281 1171.807007 1179.880127 1183.170166 1195.829956 1206.006592 1210.723145 1211.446899 1210.977539 1209.879761 1208.847534 1208.768677 1208.812988 1208.151611 1204.321899 1200.676758 1196.212158 1188.688232 1181.69458 1175.677612 1169.201294 1168.707886 1175.152954 1186.03186 1196.596436 1202.882202 1207.901489 1207.508789 1206.499512 1205.255859 1204.297241 1203.539062 1203.146973 1202.939819 1202.687256 1202.351685 1201.707397 1200.995239 1200.025879 1199.079956 1198.315674 1197.674316 1197.250244 1196.622559 1195.859863 1193.994263 1191.1521 1187.902466 1183.25415 1182.707886 1182.213135 1180.559692 1177.87146 1175.662109 1174.784424 1174.762695 1177.962158 1181.700928 1187.306274 1194.259277 1196.204468 1196.525513 1196.850464 1196.920288 1196.787964 1196.513184 1196.234131 1196.203491 1196.322876 1196.272339 1195.828247 1195.366821 1195.077026 1194.858276 1194.74939 1194.590454 1194.427368 1194.405029 1194.43042 1194.411987 1194.463379 1194.637817 1194.501343 1194.439453 1194.255859 1194.023071 1193.75 1193.472412 1193.148804 1193.021973 1192.994141 1192.976196 1193.044556 1193.055664 1192.584351 1192.346802 1192.129517 1192.154297 1193.325806 1194.697144 1196.095215 1197.225342 1198.429077 1199.719604 1200.845825 1201.973633 1202.924561 1203.578369 1203.999634 1204.308838 1204.488037 1204.55542 1204.28894 1204.039551 1203.827881 1203.43811 1203.10498 1202.629761 1202.207642 1201.723633 1201.31189 1200.786499 1200.118164 1199.379883 1198.483154 1197.545288 1197.025146 1196.860352 1196.836548 1196.97583 1197.155029 1197.37207 1197.586792 1197.821899 1198.212402 1198.456421 1198.739502 1198.84082 1198.865723 1198.937378 1199.084961 1199.220581 1199.282104 1199.371704 1199.489258 1199.675537 1199.634277 1199.618408 1199.406372 1199.154785 1198.792847 1198.577759 1198.327026 1198.05481 1197.819824 1197.568481 1197.199707 1196.879272 1196.53125 1196.325562 1196.097046 1195.594727 1195.058228 1194.737671 1194.865723 1194.822754 1194.629517 1194.155273 1193.832031 1193.550171 1193.334473 1193.271484 1193.010864 1192.641602 1192.345581 1191.832031 1191.314697 1190.618774 1189.837402 1189.227661 1188.57959 1188.063843 1187.572754 1187.120483 1186.63916 1186.127197 1185.632812 1185.127441 1184.458862 1183.760132 1183.184814 1182.720703 1182.672974 1182.721924 1183.303101 1184.031128 1184.263428 1184.969116 1185.692749 1186.232788 1186.539551 1186.47522 1185.959229 1185.119019 1183.622437 1182.970215 1182.913086 1183.473145 1184.217407 1184.809937 1185.12085 1185.45752 1185.51709 1185.33606 1184.984253 1184.447266 1184.023926 1183.811157 1183.500732 1182.983643 1182.611816 1182.334106 1182.156982 1181.89563 1181.918945 1181.980713 1181.727173 1181.111328 1180.418091 1179.684204 1178.809814 1177.943115 1176.901245 1175.522339 1173.866699 1171.924316 1170.931885 1171.004028 1171.337646 1171.155762 1170.32373 1170.082886 1169.942871 1170.022949 1170.646606 1171.403076 1171.791138 1171.61499 1171.220703 1171.455811 1171.373413 1171.629761 1171.338257 1170.675781 1169.935059 1168.809937 1167.315674 1166.343262 1165.532715 1164.796265 1164.112305 1163.408081 1162.561768 1161.407593 1160.356445 1159.749268 1159.872192 1159.858521 1159.674927 1159.44458 1159.044312 1158.713379 1158.511963 1158.122681 1157.936401 1157.854492 1157.249512 1156.255005 1155.616211 1155.853394 1154.083496 1153.165771 1152.282837 1151.390625 1150.735962 1150.276978 1150.006226 1149.924316 1150.090698 1150.051636 1149.777954 1149.460205 1148.952881 1148.369751 1148.15686 1148.147705 1148.31604 1148.253418 1147.814087 1147.026489 1146.502808 1146.70813 1147.278198 1146.6073 1146.63269 1148.121948 1150.268677 1152.216919 1154.422485 1156.724487 1158.719604 1160.25415 1160.896973 1162.512695 1165.052246 1167.393066 1169.583008 1172.036011 1175.074829 1177.307373 1174.92334 1164.872559 1156.855713 1151.624512 1145.710327 1140.291016 1137.860596 1140.309082 1145.765747 1148.282837 1158.568115 1171.447754 1175.696899 1182.469238 1184.802002 1186.406006 1190.521729 1194.042114 1203.022705 1209.598755 1218.169434 1224.401245 1230.480103 1235.190186 1240.696655 1249.289062 1257.905029 1260.919556 1262.461914 1266.030029 1269.563843 1275.133179 1278.487793 1281.354004 1282.491455 1282.546875 1282.470215 1279.808594 1273.506958 1268.413696 1271.038574 1273.547363 1280.709961 1279.950684 1279.762451 1289.129517 1297.84436 1306.979736 1315.801758 1325.268921 1336.210449 1350.636353 1364.673828 1365.363403 1365.627197 1369.856934 1375.539673 1379.889648 1377.030396 1368.004028 1362.591064 1355.913696 1350.057739 1344.535034 1338.70459 1331.666382 1322.759888 1312.905151 1305.135132 1303.740845 1301.060059 1297.921143 1294.583374 1290.912842 1287.638794 1283.541016 1282.935303 1275.813721 1261.74646 1250.160645 1240.978271 1230.877319 1218.03125 1209.026733 1205.320923 1194.52771 1194.991455 1195.643188 1193.478394 1188.322754 1183.766113 1182.080566 1180.236938 1177.824707 1173.697144 1172.769775 1171.430054 1169.245728 1167.224365 1166.279907 1170.069092 1174.326904 1178.884277 1180.638428 1182.927124 1190.424683 1196.750488 1200.816528 1205.168335 1211.222412 1217.750732 1225.076416 1232.487671 1237.072632 1238.838745 1237.067993 1231.04541 1220.964722 1211.983032 1205.724487 1209.359741 1208.533325 1198.93396 1192.769043 1188.881592 1184.492554 1180.822021 1177.480347 1174.153809 1172.374023 1171.711304 1171.744995 1171.213501 1161.186035 1156.935669 1155.627563 1159.525391 1167.347412 1168.586426 1165.141357 1158.494141 1149.413574 1157.324097 1169.104736 1179.108032 1189.691406 1198.220703 1198.908813 1198.865723 1199.198975 1198.575806 1197.035645 1195.197144 1191.473755 1186.276855 1176.692139 1170.82312 1163.558594 1159.812256 1158.735718 1160.356445 1157.117065 1158.52356 1155.734131 1151.527222 1147.41626 1151.91626 1149.157349 1144.220459 1148.951538 1148.404785 1143.547607 1141.03894 1140.956665 1139.665649 1135.225952 1131.128174 1131.952271 1135.767334 1137.688232 1136.880615 1135.605469 1135.041016 1133.133423 1123.710938 1122.021484 1126.795776 1127.627808 1124.965576 1122.63916 1121.744263 1121.630493 1121.855347 1121.532959 1119.37439 1119.622559 1118.179199 1115.363037 1111.984741 1109.763306 1110.216797 1107.088623 1100.262329 1098.429321 1099.911011 1099.526123 1098.959106 1098.366333 1097.910645 1098.26123 1097.026978 1095.314941 1094.161621 1093.68042 1093.217651 1093.213745 1093.403564 1093.616821 1093.592041 1093.575684 1093.267334 1093.264404 1093.567627 1094.418335 1097.493774 1097.419189 1094.941162 1092.098389 1090.487427 1089.995728 1090.858154 1092.91394 1097.397949 1098.623047 1098.018066 1093.494385 +1145.325317 1148.639404 1152.898682 1156.332275 1162.637695 1172.259033 1180.297485 1189.169922 1196.161987 1194.777344 1192.970581 1192.305908 1191.809448 1190.640381 1189.580688 1187.615234 1184.597778 1179.704956 1176.331177 1173.910889 1170.306274 1169.274658 1166.312988 1159.981812 1160.136841 1165.299683 1168.003418 1167.969116 1166.304688 1164.512573 1163.036865 1160.817383 1154.509399 1145.666138 1141.756958 1138.903442 1137.360107 1136.35437 1135.5 1136.221313 1136.549561 1136.434692 1136.182861 1135.618286 1133.504517 1134.777588 1135.32959 1136.26062 1137.729858 1143.697998 1155.212158 1168.87915 1173.404175 1175.598755 1183.257202 1186.789185 1177.289917 1182.036987 1188.473511 1196.469849 1207.151489 1210.830322 1211.622192 1211.280151 1210.882202 1210.15332 1209.790039 1209.383301 1208.758911 1205.057251 1197.020386 1191.775146 1183.814453 1181.491455 1180.400513 1170.919922 1168.905518 1173.216309 1182.471558 1194.269165 1201.271606 1206.238892 1207.006958 1206.306396 1205.008301 1204.265259 1203.617676 1203.403687 1203.238159 1203.184937 1202.936523 1202.452759 1201.755615 1200.807495 1199.991943 1199.266846 1198.587769 1198.119019 1197.517212 1196.856812 1195.894653 1193.563232 1190.919312 1187.303101 1187.297729 1185.531006 1182.633423 1180.073242 1177.775757 1176.272461 1175.62207 1176.935059 1180.574341 1182.447021 1193.523926 1196.183716 1196.755493 1197.146118 1197.365601 1197.384155 1197.24939 1196.938843 1196.857178 1196.944336 1196.920044 1196.554565 1195.903076 1195.358765 1195.317017 1195.117065 1194.957886 1194.990479 1195.076172 1195.075439 1195.192383 1195.335571 1195.371704 1195.217163 1195.042358 1194.773682 1194.461182 1194.189087 1193.828491 1193.536499 1193.417725 1193.317261 1193.351196 1193.543457 1193.59314 1193.017334 1192.801392 1192.559204 1193.745117 1195.451416 1195.968628 1196.90625 1198.200928 1199.555664 1200.933228 1202.280884 1203.704712 1204.712402 1205.456787 1205.810425 1205.9729 1206.025391 1206.084229 1205.67627 1205.209595 1204.764282 1204.320312 1203.911865 1203.388306 1202.982788 1202.447754 1202.024658 1201.403198 1200.764526 1200.042236 1199.152344 1198.427734 1197.900146 1197.594604 1197.281738 1197.374634 1197.529297 1197.727051 1197.954346 1198.296997 1198.677124 1199.017334 1199.346558 1199.538452 1199.421509 1199.470093 1199.561646 1199.692383 1199.794067 1199.977783 1200.191162 1200.274536 1200.145264 1200.005493 1199.696533 1199.417969 1199.234497 1198.962524 1198.685913 1198.466064 1198.148804 1197.84375 1197.591431 1197.232178 1196.901855 1196.513428 1196.094116 1195.565918 1195.131836 1195.202026 1195.477539 1195.512207 1195.211548 1194.752686 1194.356323 1194.227539 1194.119263 1193.978638 1193.748169 1193.310303 1192.911011 1192.303345 1191.658936 1190.920532 1190.185669 1189.456665 1188.939087 1188.333008 1187.831177 1187.384033 1186.856079 1186.284668 1185.68689 1185.09668 1184.4375 1183.750244 1183.113159 1182.845337 1182.774658 1182.944458 1183.776978 1184.682007 1185.298706 1185.907715 1186.427124 1186.921143 1187.014893 1186.755371 1186.093506 1185.179443 1183.963257 1183.20752 1183.121704 1183.735107 1184.563477 1185.130005 1185.667236 1186.007202 1186.058838 1186.006836 1185.717407 1185.151733 1184.757446 1184.329346 1183.91687 1183.424194 1182.809692 1182.300171 1181.929932 1181.660034 1181.463623 1181.225708 1180.872559 1180.351318 1179.744629 1179.026489 1178.221436 1177.283936 1176.207886 1175.03894 1173.811523 1172.244629 1171.452637 1171.092651 1170.939941 1170.592163 1170.091553 1169.753418 1169.459229 1169.276489 1169.393066 1169.968628 1170.121704 1170.488037 1170.139038 1169.783203 1169.609863 1169.598511 1169.347412 1168.890991 1168.178833 1166.907959 1165.589478 1164.670898 1163.980103 1163.403076 1162.890991 1162.264404 1161.670776 1160.620728 1158.986694 1158.424927 1158.489258 1158.500488 1158.491211 1158.489746 1158.395508 1158.218262 1158.071899 1157.817871 1157.387085 1155.633911 1155.634399 1155.652222 1155.687622 1155.896851 1153.792725 1153.404541 1152.902954 1152.514404 1151.912842 1151.375 1151.050049 1150.956299 1150.734741 1150.505615 1150.263794 1150.041748 1149.635132 1149.293213 1149.086914 1148.922485 1149.025391 1148.935913 1148.577515 1147.619751 1147.175781 1147.473022 1147.612305 1147.016968 1147.065552 1148.553223 1150.5354 1152.473755 1154.37085 1156.234985 1158.625366 1160.17627 1161.533203 1163.177612 1165.13147 1167.443604 1169.446777 1171.614502 1173.632324 1173.982178 1171.447632 1157.962524 1150.884277 1144.895752 1138.977173 1138.636963 1140.599121 1144.788574 1149.289307 1154.108154 1157.444946 1167.184692 1170.746582 1178.678955 1181.565186 1185.955444 1193.446533 1198.478271 1203.780273 1207.206665 1216.915771 1225.285889 1233.406982 1240.593018 1245.779541 1252.176392 1258.689209 1264.207275 1268.686157 1270.49646 1273.095459 1277.648438 1280.666992 1282.369629 1282.849365 1282.786621 1282.754639 1279.488525 1272.8125 1266.984497 1259.786499 1266.905518 1271.152466 1268.11792 1277.54187 1285.501343 1292.316406 1300.05188 1308.355347 1316.039429 1326.333984 1343.928711 1356.351074 1356.17395 1360.829712 1364.706055 1368.797119 1371.374756 1372.95105 1369.947632 1365.261719 1357.320435 1351.668945 1344.203735 1338.108032 1331.031494 1323.963867 1317.520752 1313.847412 1310.001831 1307.096924 1302.761719 1298.321777 1295.079224 1293.189331 1284.457031 1280.721924 1266.857178 1256.753296 1245.261963 1244.684082 1234.093018 1223.582397 1216.839111 1212.573975 1208.206665 1202.546387 1202.723022 1207.773804 1198.242432 1189.443848 1183.38208 1181.072632 1179.076538 1174.877197 1173.485474 1171.761108 1170.100586 1168.389648 1167.240845 1168.831299 1172.890869 1179.307251 1182.317871 1186.748779 1193.571899 1200.019775 1205.140381 1209.59668 1215.442871 1220.910522 1229.567505 1236.27478 1241.763916 1243.342163 1239.178589 1231.688477 1223.480347 1216.606812 1211.310669 1211.068604 1206.852661 1196.136719 1190.398438 1185.471436 1182.226929 1178.940552 1174.951904 1173.317383 1171.687134 1170.758057 1171.341919 1171.460083 1164.603271 1157.654419 1157.750244 1168.321289 1173.23645 1173.873657 1171.651733 1164.474731 1155.563599 1153.177368 1162.589966 1169.681519 1180.182007 1189.029541 1197.341431 1198.934448 1200.378174 1200.692505 1199.496338 1197.329102 1191.697021 1180.717041 1169.321411 1161.90271 1158.276367 1158.065796 1152.32251 1147.249756 1149.620605 1149.674927 1147.97644 1148.167358 1144.276489 1146.910034 1144.936279 1138.7677 1141.359009 1142.382568 1138.803101 1134.089233 1133.875366 1134.302734 1132.466431 1128.19104 1123.613159 1128.824585 1133.078369 1134.265137 1129.793457 1129.732666 1129.435425 1125.401123 1121.279297 1119.812134 1120.260498 1118.827148 1117.900269 1117.408325 1117.094116 1116.554443 1115.605957 1114.455566 1113.744873 1113.074219 1113.037476 1111.65979 1109.4104 1107.370117 1105.185913 1098.753052 1097.469482 1096.358398 1097.834106 1097.711548 1096.805054 1096.305176 1095.726562 1094.444458 1093.457275 1093.28833 1092.743042 1092.268677 1092.066895 1092.419312 1092.523682 1092.655396 1092.390381 1092.13501 1092.16394 1092.972046 1095.589233 1098.109985 1098.082275 1094.535889 1090.957886 1089.333374 1089.114868 1090.281006 1093.286987 1098.086548 1097.009766 1097.77417 1097.821899 +1152.906128 1157.044434 1160.280273 1163.594116 1169.911499 1178.398804 1187.281982 1195.994507 1197.904297 1196.512329 1193.971924 1194.795044 1194.276245 1193.501953 1193.505371 1190.569336 1185.470825 1183.860229 1182.038208 1177.433472 1173.903198 1172.936035 1170.621338 1166.53186 1166.666626 1170.291382 1171.561279 1171.036865 1168.942627 1166.841309 1164.667969 1162.104736 1157.517456 1147.052734 1144.206543 1141.918457 1139.984009 1138.558716 1137.728271 1137.557495 1137.280151 1136.820801 1136.027344 1135.019165 1133.960205 1135.0625 1135.724243 1136.373535 1137.681152 1142.374756 1152.463013 1162.572876 1169.64209 1172.641235 1176.534912 1177.105835 1169.893799 1175.933105 1187.107788 1198.814941 1205.985596 1210.278564 1211.484985 1211.787109 1211.571289 1211.017944 1210.584717 1210.037842 1208.867554 1205.842651 1198.135132 1195.33667 1193.172852 1189.657593 1187.693481 1182.940186 1170.842651 1169.844849 1181.014771 1193.235229 1200.505493 1207.57251 1207.528076 1205.583496 1204.216675 1203.733154 1203.609131 1203.654907 1203.69043 1203.702759 1203.429932 1203.139648 1202.453857 1201.620117 1200.879028 1200.20105 1199.649048 1199.018311 1198.271118 1197.359497 1196.270874 1194.465698 1194.63147 1195.554688 1194.267334 1188.899048 1183.953979 1181.391846 1179.261597 1177.716064 1176.629761 1176.435181 1183.602295 1187.250732 1192.279419 1195.461182 1196.764771 1197.469238 1197.880859 1198.011353 1197.839722 1197.663208 1197.464966 1197.646484 1197.484009 1197.273682 1196.760132 1196.233521 1196.003784 1195.518433 1195.367188 1195.513184 1195.650391 1195.614258 1195.814087 1196.047363 1196.031372 1195.860229 1195.508789 1195.181152 1194.934937 1194.629517 1194.263428 1193.971802 1193.7677 1193.685181 1193.836914 1193.992432 1194.200806 1193.547729 1193.04248 1193.675049 1195.477173 1196.265625 1197.041626 1198.064453 1199.338745 1200.680542 1202.253906 1203.948608 1205.462769 1206.515259 1207.071167 1207.160034 1207.251343 1207.523926 1207.171265 1206.776245 1206.175049 1205.573242 1205.026001 1204.568481 1204.179321 1203.797119 1203.307129 1202.938965 1202.448853 1201.715698 1200.911133 1200.004639 1199.175049 1198.525024 1197.959351 1197.680298 1197.913696 1197.971924 1198.183472 1198.393433 1198.826782 1199.225464 1199.752686 1200.065308 1200.19104 1200.111328 1200.11499 1200.182129 1200.321899 1200.470215 1200.608521 1200.826294 1200.817871 1200.631226 1200.393921 1200.137573 1199.943604 1199.687744 1199.440552 1199.190186 1198.935181 1198.695923 1198.392578 1198.039551 1197.71582 1197.292969 1196.747314 1196.112549 1195.450073 1195.290771 1195.717896 1196.074829 1196.019165 1195.67334 1195.303223 1194.942383 1194.941406 1194.825928 1194.658081 1194.485474 1193.991455 1193.387207 1192.709229 1192.055542 1191.295654 1190.618286 1189.926392 1189.286011 1188.726929 1188.161133 1187.568726 1186.997437 1186.397705 1185.77063 1185.23291 1184.472778 1183.763794 1183.185547 1182.993042 1183.071045 1183.101562 1184.127563 1185.556396 1186.571411 1187.081909 1187.553955 1187.633057 1187.512451 1187.1427 1186.436523 1185.402588 1184.341675 1183.383545 1183.131226 1184.157959 1184.959106 1185.596069 1186.059204 1186.50354 1186.794189 1186.734619 1186.470825 1186.025391 1185.390137 1184.883789 1184.375366 1183.756836 1183.220337 1182.656128 1182.005005 1181.672729 1181.274902 1180.87561 1180.427979 1179.92981 1179.373779 1178.542358 1177.738037 1176.758545 1175.736938 1174.744995 1173.720703 1172.974243 1172.436279 1171.950806 1171.295898 1170.797241 1170.077148 1169.538086 1169.047974 1168.659668 1168.498779 1168.501953 1168.600342 1169.112671 1169.266235 1168.966431 1168.794678 1168.423828 1167.888184 1167.2677 1166.265747 1164.974731 1163.735474 1162.953857 1162.42627 1162.11145 1161.837524 1161.406006 1160.772217 1159.920654 1158.608398 1158.157715 1157.998047 1157.872925 1157.900757 1157.908447 1158.022583 1156.171143 1156.885742 1156.489136 1155.658447 1155.666626 1155.754761 1155.861206 1155.990723 1154.752441 1154.38916 1154.061157 1153.869141 1153.475586 1152.942383 1152.403442 1151.994507 1151.763794 1151.514038 1151.123169 1150.866089 1150.767212 1150.449829 1150.102539 1149.882812 1149.796021 1149.76123 1149.696411 1149.475098 1149.071167 1148.638916 1148.533081 1148.464111 1148.516357 1148.729126 1149.727295 1151.277344 1152.77063 1154.453491 1156.204956 1157.633545 1158.575806 1160.869507 1163.14856 1165.22998 1167.169189 1169.19104 1171.023804 1172.67981 1173.468628 1165.556396 1153.498779 1144.573608 1138.568115 1139.085571 1140.197021 1142.797607 1146.074951 1152.295044 1159.116821 1166.766235 1172.970093 1175.63147 1179.926025 1184.508301 1192.140137 1198.15918 1202.608154 1208.924316 1214.915649 1221.580566 1226.804688 1234.234375 1243.781128 1248.514282 1254.435425 1259.322144 1264.699097 1269.227661 1272.248901 1276.132935 1280.163086 1282.136353 1282.564453 1282.680786 1282.784668 1282.526489 1279.039429 1273.110352 1266.694214 1257.351685 1256.934326 1260.065063 1262.629517 1272.243774 1281.71228 1285.067749 1294.322144 1300.832764 1308.877319 1327.070923 1343.025024 1346.486938 1349.353149 1355.070801 1358.126099 1361.428833 1363.417969 1366.971313 1369.367432 1368.189087 1362.277954 1355.894775 1346.577515 1339.313965 1334.211792 1329.247314 1325.640747 1322.255981 1316.736572 1312.118164 1307.093872 1303.276245 1297.902588 1291.736084 1289.462769 1281.219604 1274.461914 1266.558716 1256.684692 1247.31189 1235.993164 1228.151733 1222.188721 1219.964478 1213.907227 1207.703369 1207.542969 1207.022339 1197.221558 1190.915283 1184.908936 1182.845703 1180.103027 1175.454712 1173.598999 1171.724854 1170.453003 1170.69104 1168.409058 1170.166992 1177.25061 1183.828979 1189.135498 1194.957642 1197.446167 1203.133179 1208.895874 1215.220337 1221.000244 1225.996338 1232.324341 1239.976196 1245.576294 1246.873291 1243.1698 1232.671997 1226.383789 1220.299194 1215.812744 1211.26001 1206.172241 1195.039551 1189.287476 1184.901001 1180.750854 1177.596558 1170.977051 1170.792358 1170.616577 1171.641235 1170.832275 1166.933228 1162.040283 1157.652344 1162.700073 1173.6604 1177.330444 1178.119141 1175.842041 1170.898315 1160.737427 1152.898071 1164.046875 1172.004395 1179.975952 1181.717407 1190.862061 1196.053467 1202.699463 1203.359131 1201.595703 1199.078857 1191.627319 1173.237305 1168.883301 1165.364868 1162.663208 1158.741089 1147.635376 1145.313965 1145.255981 1145.378662 1143.321411 1142.415894 1140.164185 1139.444824 1137.706787 1133.658936 1133.099731 1134.141968 1134.160522 1131.209961 1129.000366 1128.687134 1127.733276 1125.36499 1122.446411 1121.574341 1123.69397 1124.310913 1122.258057 1119.687988 1120.590576 1120.316528 1116.827026 1114.680908 1114.186401 1113.555176 1111.918091 1111.809937 1111.921143 1110.884766 1109.355103 1109.131104 1110.865845 1108.699829 1109.017578 1108.106812 1104.727417 1102.359253 1099.374756 1099.71936 1098.286011 1096.467285 1095.674438 1096.947021 1097.113159 1094.825073 1094.106079 1095.117676 1097.05896 1097.180176 1095.79248 1093.695801 1092.275146 1091.407959 1091.561523 1091.547485 1091.313354 1091.041016 1091.137939 1091.696167 1093.553101 1096.727417 1097.714111 1092.296509 1088.976196 1087.175659 1087.178589 1088.938354 1091.825439 1094.554077 1093.70459 1094.360962 1096.955078 +1162.463989 1165.619263 1167.930054 1170.425415 1176.005005 1183.741089 1194.05127 1198.371704 1199.760742 1198.164185 1194.879395 1197.488647 1196.821167 1196.063843 1197.080322 1193.619385 1190.099731 1187.167236 1184.130249 1180.125732 1177.163818 1175.177002 1172.20459 1169.647949 1170.299072 1172.152466 1173.311523 1172.813354 1171.049438 1168.354736 1166.123535 1163.120239 1158.856201 1150.955566 1145.967407 1144.015381 1142.335083 1140.801392 1139.436523 1138.647949 1137.837158 1136.955811 1135.544434 1134.042725 1134.547607 1135.476074 1136.258423 1136.871338 1137.817871 1139.232056 1148.621948 1158.938599 1163.31543 1166.150513 1167.730957 1166.530029 1167.003174 1169.943359 1184.766602 1198.818237 1207.120972 1210.285034 1211.511597 1212.128296 1212.115234 1211.735352 1211.280518 1210.594604 1209.77832 1208.571045 1208.445923 1207.161377 1201.12915 1197.568726 1193.375732 1187.230469 1177.022949 1171.981812 1179.097046 1191.79126 1199.018066 1205.137207 1205.911255 1203.518555 1202.915527 1202.978516 1203.293823 1203.734009 1204.015503 1204.216064 1204.112427 1203.797852 1203.261475 1202.484131 1201.918457 1201.297241 1200.75293 1200.085205 1199.296997 1198.219727 1196.516235 1195.125977 1196.141357 1196.383667 1195.994385 1191.272461 1185.304077 1182.322876 1180.365112 1178.890747 1177.752686 1177.238892 1183.995239 1188.758789 1192.558838 1193.635132 1196.227173 1197.661133 1198.266113 1198.423096 1198.373657 1198.175781 1198.154907 1198.326904 1198.299072 1198.057617 1197.646606 1197.137817 1196.789185 1196.284912 1196.039551 1196.192749 1196.273315 1196.456055 1196.570435 1196.72937 1196.728516 1196.457275 1196.078613 1195.566406 1195.245239 1194.841553 1194.495605 1194.259766 1194.1427 1194.138062 1194.312866 1194.597778 1195.143555 1194.115356 1193.432129 1194.707886 1196.168579 1197.1875 1198.040894 1199.026245 1200.324219 1201.839355 1203.615601 1205.465942 1206.956787 1208.454956 1210.585449 1212.748657 1214.453369 1214.559448 1211.93103 1207.730591 1206.953369 1206.296021 1205.648438 1205.212769 1204.897827 1204.589478 1204.219238 1203.927856 1203.470581 1202.860596 1202.030029 1201.025757 1199.934814 1198.982056 1198.320557 1198.150513 1198.385986 1198.52417 1198.638916 1198.930298 1199.352661 1199.870605 1200.571655 1200.866455 1201.001221 1200.914795 1200.903198 1200.917603 1201.033081 1201.227417 1201.396362 1201.394775 1201.358154 1201.241333 1200.880371 1200.705811 1200.510132 1200.33606 1200.0802 1199.853516 1199.570435 1199.278442 1199.084473 1198.829956 1198.377197 1197.923096 1197.336548 1196.702271 1195.916138 1195.864258 1196.351562 1196.520752 1196.451294 1196.113159 1195.829346 1195.595581 1195.545044 1195.467407 1195.315918 1195.147949 1194.600952 1193.795654 1193.02063 1192.408691 1191.757812 1191.182007 1190.459595 1189.815918 1189.178955 1188.498657 1187.985596 1187.378784 1186.766113 1186.10376 1185.377075 1184.611084 1183.857544 1183.223389 1183.168213 1183.759888 1183.838257 1185.699097 1187.433228 1188.20874 1188.59729 1188.597656 1188.438843 1188.049683 1187.585571 1186.703125 1185.823364 1184.768066 1183.512085 1183.095337 1184.524902 1185.486694 1186.110229 1186.680054 1187.138428 1187.425903 1187.551025 1187.285034 1186.742554 1186.160767 1185.604248 1185.073242 1184.64563 1183.954346 1183.225708 1182.54895 1181.855957 1181.468872 1180.965942 1180.425171 1179.814209 1179.175049 1178.477051 1177.436157 1176.383667 1175.390625 1174.404907 1173.672729 1173.105103 1172.64917 1172.391479 1171.880859 1171.069458 1170.597412 1169.561279 1168.775391 1168.109497 1167.667236 1167.370728 1167.386475 1167.687866 1168.039551 1168.166504 1167.753906 1166.98584 1166.306519 1165.686279 1164.619995 1163.098755 1161.771729 1161.307251 1161.095703 1160.891479 1160.743896 1160.467529 1159.944214 1158.876343 1158.484009 1158.03125 1157.763428 1157.627075 1157.513916 1157.495239 1156.578735 1155.481079 1155.493652 1155.473755 1156.081543 1156.545776 1156.443359 1155.959839 1155.488525 1155.166748 1154.924194 1154.88623 1154.741089 1154.341431 1153.893555 1153.304443 1152.799683 1152.549927 1152.085815 1151.827271 1151.576904 1151.506104 1151.222168 1150.931274 1150.625977 1150.538574 1150.681763 1150.632324 1150.568848 1150.310181 1149.962646 1149.852051 1149.867188 1150.031982 1150.379517 1151.13147 1152.11792 1153.320679 1154.805542 1156.346069 1157.932983 1158.974121 1161.133545 1163.385986 1165.44165 1167.454224 1169.637573 1171.431274 1172.707275 1173.562256 1157.470703 1149.771484 1139.755493 1139.410767 1139.884033 1141.738525 1144.90332 1148.02124 1154.160645 1160.661133 1167.159302 1171.66626 1176.853149 1181.708862 1186.455078 1192.591675 1198.077881 1206.625 1212.454468 1219.410278 1225.367554 1231.269165 1235.339355 1242.36853 1247.888672 1253.548218 1256.871338 1263.305176 1268.02417 1272.137329 1277.145142 1281.059204 1282.333984 1281.846191 1281.82666 1281.64978 1282.026855 1279.339111 1272.746826 1265.779663 1258.5271 1252.985352 1251.689453 1255.769775 1264.650391 1271.645386 1279.938477 1284.96167 1295.117065 1309.956787 1327.66333 1335.613037 1334.424316 1343.615723 1347.633057 1348.412476 1353.432983 1358.512085 1364.709595 1368.010132 1366.306763 1362.609985 1357.233154 1351.012451 1343.413696 1339.760498 1335.687622 1333.65564 1330.790283 1324.442383 1317.764282 1312.474854 1306.95105 1301.082275 1296.728271 1295.900024 1290.371826 1274.564575 1264.210327 1254.944702 1243.474365 1230.634155 1218.436157 1218.969116 1220.679321 1217.421631 1209.682861 1206.844971 1201.53418 1194.647461 1189.332275 1185.292725 1182.383301 1180.353882 1175.907959 1173.584106 1171.024902 1171.675293 1171.530273 1169.246216 1172.90564 1183.782227 1191.119263 1197.20874 1201.473633 1205.102539 1207.883423 1213.009277 1220.046021 1225.894043 1231.020752 1236.429321 1243.467041 1248.032471 1248.87439 1245.817383 1235.835693 1228.342041 1222.684326 1216.228882 1208.321411 1199.669434 1192.221558 1186.483521 1182.56543 1182.328247 1183.203369 1176.203003 1170.944702 1175.899902 1182.942627 1177.256836 1168.110229 1157.388062 1157.937744 1167.551392 1175.421143 1181.506348 1182.983521 1179.790894 1174.503662 1165.672119 1156.458252 1162.385986 1178.62207 1189.133423 1196.959351 1196.919189 1200.474854 1207.63208 1205.819336 1203.460083 1200.817749 1197.472656 1187.750977 1173.229858 1172.880371 1169.880859 1165.302002 1164.371948 1157.929321 1151.717407 1146.862549 1136.381226 1135.695679 1134.473389 1133.980591 1133.272339 1133.191162 1132.94873 1132.050293 1129.419434 1125.932129 1124.484009 1123.355347 1123.930176 1123.276367 1122.169678 1121.075073 1120.888428 1120.655396 1119.490723 1118.576904 1117.434937 1115.136597 1109.602905 1109.262939 1109.110474 1108.129639 1108.123535 1106.677979 1105.599487 1104.919312 1103.800781 1105.153931 1110.023438 1108.028442 1101.942505 1100.021484 1099.180664 1098.398682 1097.683594 1097.293457 1097.424561 1096.594116 1098.604004 1096.647217 1095.869385 1096.723755 1098.174072 1099.096313 1099.847534 1099.613525 1098.588501 1096.432251 1093.80835 1091.854614 1091.005249 1090.485474 1090.400391 1090.246826 1090.016235 1089.940674 1089.884155 1089.755615 1088.770264 1087.886475 1087.635132 1086.063599 1085.520996 1087.317017 1088.567383 1089.557739 1088.031006 1088.396118 1089.245972 +1171.669556 1178.198608 1178.448242 1183.637939 1187.169922 1191.805786 1198.69165 1202.033203 1203.004761 1201.418701 1198.857666 1200.172363 1200.851929 1200.927246 1200.046509 1195.620361 1192.941406 1189.233765 1183.979004 1181.243774 1179.390625 1176.646973 1172.973145 1170.156372 1171.098022 1173.362915 1174.4198 1173.941284 1172.111572 1169.316772 1167.856812 1165.69165 1161.439819 1155.746094 1148.990112 1145.546509 1144.084961 1142.352905 1140.907471 1139.637329 1138.449463 1137.124512 1135.452026 1134.214233 1134.869873 1135.61438 1136.562012 1137.392822 1138.397095 1139.761475 1143.570435 1150.123169 1157.601807 1159.352539 1159.447021 1159.410034 1163.069824 1170.155151 1183.271484 1196.793579 1207.150024 1210.741943 1211.782349 1212.426147 1212.553345 1212.342285 1211.972656 1211.398682 1210.674072 1209.891235 1209.13562 1208.669556 1206.809692 1201.330688 1197.331055 1188.069824 1180.36731 1177.843262 1178.801147 1183.501587 1195.884766 1199.730347 1200.873413 1200.678345 1200.957764 1201.721802 1202.766724 1203.73291 1204.359497 1204.669922 1204.733765 1204.549438 1204.084961 1203.50708 1203.092529 1202.464233 1201.890747 1201.175415 1200.313477 1199.309204 1197.968384 1197.29834 1197.325806 1197.046997 1196.27771 1193.026367 1188.001953 1183.672974 1181.647461 1179.780151 1178.410889 1178.337646 1183.793457 1191.338989 1195.775879 1196.085205 1196.703125 1197.934937 1198.626343 1198.835205 1198.885376 1198.810059 1198.829712 1199.092896 1199.019409 1198.890869 1198.506958 1198.070801 1197.679199 1197.266846 1197.060425 1197.028931 1197.168579 1197.153442 1197.309448 1197.441528 1197.384399 1197.174316 1196.750488 1196.161133 1195.39856 1194.916992 1194.681152 1194.518555 1194.505615 1194.519043 1194.844116 1195.391479 1195.773682 1194.763306 1193.842041 1195.373779 1196.618042 1197.649902 1198.581543 1199.602417 1201.018433 1202.635986 1204.508667 1206.408081 1208.64978 1212.328369 1216.665161 1221.082031 1225.411499 1226.86377 1221.440918 1214.505859 1207.98645 1206.934204 1206.204712 1205.817383 1205.567749 1205.364624 1205.12793 1204.857788 1204.604126 1204.005737 1203.17395 1202.035645 1200.757568 1199.646484 1198.69751 1198.541382 1198.807617 1199.011475 1199.143311 1199.533203 1199.982178 1200.665161 1201.426147 1201.741211 1201.894409 1201.816528 1201.781494 1201.799438 1201.964355 1201.949951 1201.963257 1201.994629 1201.839478 1201.713257 1201.526855 1201.224487 1201.121338 1201.039795 1200.784424 1200.624146 1200.356812 1200.067139 1199.800659 1199.395264 1199.006714 1198.520752 1197.948975 1197.49646 1197.192383 1196.935669 1196.976196 1196.973511 1196.931274 1196.686279 1196.414185 1196.1875 1196.117798 1195.997681 1195.876587 1195.604614 1194.974121 1194.206055 1193.539429 1192.867432 1192.245361 1191.633057 1190.970947 1190.276001 1189.628662 1188.975098 1188.290039 1187.613403 1186.966675 1186.284912 1185.528198 1184.859375 1184.0802 1183.359497 1183.113892 1185.092285 1186.89563 1189.139771 1190.254761 1190.487671 1190.244141 1189.854004 1189.324463 1188.713257 1188.101318 1187.422974 1186.533447 1185.455566 1184.065552 1183.796753 1185.124146 1186.303101 1186.882324 1187.459229 1187.881348 1188.275146 1188.383301 1188.203735 1187.619019 1187.08374 1186.529541 1185.932495 1185.45166 1184.758301 1183.916992 1183.059937 1182.399902 1181.900879 1181.354004 1180.651855 1180.017822 1179.316528 1178.358398 1177.316406 1176.130127 1174.754761 1173.776978 1173.172241 1172.877686 1172.641602 1172.399902 1172.164429 1171.644897 1170.950684 1169.818604 1168.564087 1167.52478 1166.838379 1166.289917 1166.262817 1166.465332 1166.877075 1167.057495 1166.487793 1165.713623 1165.00354 1164.336548 1163.198242 1161.090942 1159.660522 1159.576416 1159.514893 1159.442505 1159.366943 1159.224976 1159.164062 1158.535889 1158.244995 1157.969238 1157.677246 1157.425293 1157.372803 1157.289673 1157.25061 1157.321777 1157.20459 1157.162109 1157.116577 1156.977173 1156.702393 1156.344116 1156.075928 1155.830322 1155.771606 1155.754395 1155.584473 1155.251099 1154.660889 1154.175537 1153.595581 1153.106323 1152.718262 1152.477417 1152.443115 1152.237793 1151.948853 1151.599976 1151.405762 1151.355225 1151.46228 1151.584595 1151.707764 1151.57312 1151.369385 1151.264404 1151.28772 1151.552856 1151.866699 1152.379517 1153.104492 1154.103882 1155.240601 1156.58374 1158.737915 1160.255737 1161.53064 1163.37146 1165.537964 1167.768799 1170.03186 1171.55835 1172.442993 1171.597534 1156.395264 1149.579956 1142.983643 1139.878296 1140.054077 1142.486572 1145.615356 1150.524414 1156.806885 1161.792358 1168.451782 1173.10376 1177.137939 1181.782715 1186.488892 1193.183228 1198.262695 1206.208862 1213.68457 1220.894287 1227.672974 1233.860474 1238.415649 1244.209717 1248.088013 1252.87439 1256.770508 1261.303955 1267.555176 1272.221924 1277.248657 1281.41687 1280.967529 1277.880371 1276.952637 1275.983276 1276.016357 1275.942627 1272.986938 1270.049438 1266.871338 1255.971558 1243.67688 1249.355835 1256.79541 1265.185181 1268.189453 1284.578857 1298.604736 1311.790527 1319.431763 1317.948975 1329.880249 1339.436401 1340.314575 1338.730469 1345.69104 1352.732422 1356.326294 1359.982544 1360.677124 1358.537842 1355.722046 1352.180908 1347.114868 1343.911133 1342.605957 1339.81958 1335.427856 1330.142456 1322.378296 1316.270386 1309.363892 1304.505371 1298.892212 1294.199585 1286.467163 1271.867432 1257.146729 1244.295288 1236.078735 1226.803345 1219.621582 1212.545044 1213.676636 1212.77063 1209.524902 1203.654297 1197.523682 1192.198486 1186.563965 1182.532837 1181.18396 1180.049194 1176.574829 1174.709839 1173.475586 1172.945557 1171.738892 1169.681396 1177.495483 1188.430908 1196.61792 1202.666626 1207.87439 1211.009155 1214.201172 1218.670898 1224.444702 1230.835205 1235.679077 1240.648193 1246.358398 1251.496216 1252.082153 1246.821167 1238.327148 1230.430054 1223.377563 1215.977417 1206.19458 1195.071167 1191.450562 1185.622437 1185.043823 1185.344238 1183.616821 1178.860596 1176.653564 1183.755249 1185.388672 1182.416504 1170.72583 1159.119629 1158.917969 1169.265625 1176.052246 1183.308228 1185.364746 1184.102539 1178.919189 1171.590942 1162.481201 1155.981079 1178.166992 1187.460693 1194.034912 1197.360962 1202.227783 1208.891235 1208.046387 1205.588013 1202.997925 1198.980835 1193.572388 1187.718262 1186.079102 1180.663574 1174.359985 1174.384766 1163.188721 1154.8927 1149.534668 1140.977905 1133.613281 1133.697754 1133.281494 1133.313843 1134.425049 1134.475708 1132.457642 1128.43811 1121.869873 1122.203735 1122.271118 1122.354248 1122.34729 1122.278198 1121.980591 1121.560425 1120.894287 1119.669678 1118.463501 1116.825439 1114.161011 1111.961304 1111.450928 1111.418823 1111.814941 1112.108887 1111.769897 1111.205933 1111.445557 1111.489258 1110.757812 1106.590698 1106.258545 1102.592529 1102.333496 1102.22583 1102.697021 1103.333984 1103.437622 1102.427734 1103.052002 1103.870605 1102.96875 1101.284546 1101.237305 1101.499756 1101.620117 1101.586914 1101.065552 1099.717041 1097.897095 1095.438965 1093.34668 1092.095215 1091.200684 1090.209961 1089.73645 1089.334961 1089.186768 1088.939819 1088.791748 1087.912598 1086.776367 1086.654541 1086.709717 1085.880737 1085.46875 1085.732666 1086.940308 1086.290161 1084.85791 1084.63501 +1188.9552 1190.547974 1190.309204 1195.90271 1197.782471 1197.760864 1202.817993 1206.117798 1206.784058 1206.193604 1204.058838 1204.495728 1205.476074 1206.252075 1204.240112 1199.609375 1196.619751 1193.068359 1187.185181 1184.507202 1181.555908 1180.113159 1176.345459 1172.218628 1172.983521 1175.066772 1176.039429 1175.432983 1172.921509 1170.389771 1170.697876 1169.186279 1165.012573 1159.888794 1152.313721 1146.844604 1145.091797 1143.523315 1141.82959 1140.445068 1139.009644 1137.405273 1135.63208 1134.350098 1134.744995 1135.463867 1136.491089 1137.713501 1139.095337 1140.22583 1141.9375 1146.003662 1150.642822 1153.119751 1154.115479 1156.205566 1161.894165 1169.316162 1179.450317 1192.417969 1205.674072 1210.953613 1212.081787 1212.687622 1212.899658 1212.814453 1212.485962 1211.987671 1211.35022 1210.476196 1209.647827 1208.793701 1207.266846 1201.928955 1197.40271 1182.271729 1183.575928 1184.41626 1181.449707 1180.22229 1189.140869 1196.197144 1197.064331 1197.297485 1198.453735 1200.338745 1202.114136 1203.678711 1204.696167 1205.287109 1205.400269 1205.301514 1205.005493 1204.446289 1204.151611 1203.588867 1202.932983 1202.256714 1201.446289 1200.578979 1199.975708 1199.282593 1198.611938 1197.914185 1196.90625 1195.608154 1191.648682 1186.215088 1182.7771 1180.811768 1179.392334 1178.400879 1181.619629 1192.857788 1196.258911 1196.959839 1197.691284 1198.352295 1198.94043 1199.185913 1199.324097 1199.322632 1199.492798 1199.810547 1199.888916 1199.716309 1199.485352 1198.993286 1198.547485 1198.238281 1198.017944 1198.028809 1198.100098 1198.034302 1198.001709 1198.107178 1197.940918 1197.642578 1197.224365 1196.454956 1195.445435 1195.094727 1194.937134 1194.933716 1194.90686 1194.852295 1195.112915 1195.478882 1195.981567 1195.568359 1194.241455 1195.631104 1196.882324 1197.831787 1198.801392 1200.08667 1201.585327 1203.371216 1205.120361 1206.976929 1210.767944 1215.698486 1220.849609 1226.780273 1232.872437 1234.158813 1229.192139 1222.122559 1212.944702 1207.404175 1206.648438 1206.370361 1206.360596 1206.231201 1206.031616 1205.941528 1205.868042 1205.363647 1204.422119 1203.057495 1201.647949 1200.288818 1199.202271 1198.926758 1199.126587 1199.368896 1199.681274 1200.210815 1200.784668 1201.518555 1202.30481 1202.705078 1202.888184 1202.762817 1202.734741 1202.749878 1202.771851 1202.697266 1202.554688 1202.420166 1202.394653 1202.233154 1201.998657 1201.983032 1201.721436 1201.678467 1201.514893 1201.287842 1201.090942 1200.85791 1200.475952 1200.101685 1199.561157 1199.125244 1198.754395 1198.457642 1198.063965 1197.816406 1197.645874 1197.698242 1197.460938 1197.197632 1196.950439 1196.750244 1196.601807 1196.462402 1196.139893 1195.635986 1195.02002 1194.374512 1193.896606 1193.302734 1192.626709 1191.929688 1191.328857 1190.690186 1189.974243 1189.281128 1188.548584 1187.806885 1187.121948 1186.412354 1185.661865 1184.917236 1184.22998 1183.569336 1183.132568 1186.271851 1190.001953 1193.775146 1194.049683 1192.694092 1191.687378 1190.901733 1190.2229 1189.552612 1188.914673 1188.287842 1187.525024 1186.732666 1186.114624 1185.955688 1186.533691 1187.346191 1187.928467 1188.355835 1188.846558 1189.328735 1189.44458 1189.317749 1188.711426 1188.075195 1187.450073 1186.893066 1186.213989 1185.457764 1184.55957 1183.251099 1183.205566 1182.841187 1182.069946 1181.154175 1180.322632 1179.384277 1178.418457 1177.235352 1175.760132 1174.039429 1172.484497 1172.110474 1172.257812 1172.453125 1172.298828 1172.196899 1171.724487 1170.901123 1169.651733 1168.240234 1166.881958 1165.942871 1165.335571 1165.268188 1165.496216 1165.717651 1165.852173 1165.319214 1164.557861 1163.813965 1163.167236 1162.196655 1160.541748 1158.810059 1158.738647 1158.745361 1158.744263 1158.739624 1158.602051 1158.389893 1158.466675 1158.214111 1158.003418 1157.755981 1157.563721 1157.352661 1157.30542 1157.255127 1157.296875 1157.304321 1157.202637 1157.316528 1157.309937 1157.265991 1157.035645 1156.835327 1156.718872 1156.706909 1156.591675 1156.408325 1156.009644 1155.416748 1154.758179 1154.158447 1153.630249 1153.394531 1153.156616 1153.006348 1152.843872 1152.620117 1152.175781 1152.108765 1152.121094 1152.359741 1152.579712 1152.736084 1152.829834 1152.69165 1152.673828 1152.846924 1152.950928 1153.337646 1153.647827 1154.222046 1154.819824 1155.722046 1156.768555 1158.958862 1160.127075 1161.490112 1163.257935 1165.302734 1167.458618 1169.332397 1170.871826 1172.183716 1172.278564 1157.075073 1151.15271 1145.765015 1141.863525 1140.229614 1142.778564 1145.979736 1151.203369 1157.851929 1163.124756 1168.880249 1173.062134 1176.108887 1180.463989 1183.705688 1193.424683 1200.473145 1208.628784 1214.292847 1221.00708 1228.733643 1233.993408 1237.842163 1242.022705 1244.275269 1251.140259 1256.382568 1262.291504 1268.080322 1271.824097 1275.313477 1277.573975 1274.294067 1271.111694 1269.727661 1267.302368 1267.29248 1271.2229 1271.94104 1270.889038 1270.112793 1260.339233 1243.551758 1242.34729 1252.083252 1261.555176 1274.521484 1289.163208 1300.663818 1306.918213 1303.882324 1311.776611 1327.009521 1331.428467 1329.399536 1335.064087 1339.372314 1345.060425 1348.96521 1351.901611 1353.495117 1352.62207 1349.042114 1346.248901 1345.455688 1344.852539 1344.380249 1343.275635 1336.997681 1330.266357 1323.342896 1316.88208 1310.742676 1306.088745 1297.526489 1289.569946 1280.574951 1269.12439 1252.014526 1238.345947 1229.498901 1223.361694 1217.232178 1208.136108 1207.214844 1207.488159 1205.481079 1199.965332 1194.693726 1189.991089 1184.946899 1181.996582 1180.858765 1179.613647 1177.349854 1175.970825 1174.681274 1173.399414 1171.527222 1171.2323 1183.313354 1192.139282 1199.941162 1207.168213 1211.797607 1215.735596 1219.588379 1223.495728 1229.122925 1234.571655 1239.013428 1243.628174 1250.202759 1255.704224 1256.480469 1248.418213 1239.52417 1230.962524 1222.917969 1214.376587 1202.900146 1194.054565 1194.791748 1196.193481 1191.335815 1184.22998 1182.326416 1182.72168 1181.546265 1184.032837 1183.56604 1176.903442 1168.227295 1159.66333 1159.029419 1167.174316 1174.181885 1180.695801 1185.011108 1185.26062 1183.400146 1176.829224 1169.267334 1158.080322 1168.196411 1179.781006 1181.713623 1182.477295 1196.537964 1208.614502 1209.637085 1208.139771 1205.519531 1202.608887 1198.977417 1194.339722 1186.477295 1181.203125 1173.230103 1166.696411 1156.480591 1153.24939 1148.621216 1142.649658 1138.699829 1139.668457 1137.748657 1136.111572 1137.086304 1136.307373 1134.665283 1131.119385 1128.02771 1125.951904 1125.392212 1125.229004 1124.912231 1124.425415 1123.419189 1122.602783 1121.949219 1120.390015 1118.821289 1117.264404 1115.727173 1114.620972 1114.303711 1114.757935 1115.101562 1115.294067 1114.889038 1114.134033 1113.730347 1113.293213 1112.30481 1111.179443 1110.458984 1106.715942 1105.453003 1106.320557 1108.062256 1110.218262 1111.394531 1111.657227 1112.605591 1112.662354 1111.154663 1108.184692 1106.814575 1105.872681 1104.807861 1103.632324 1102.298706 1100.681641 1098.532593 1096.446411 1094.707031 1093.19519 1092.090454 1091.212158 1090.645996 1090.433105 1090.268677 1089.969116 1089.260742 1087.344849 1085.427979 1085.859619 1085.852051 1085.999023 1085.858154 1085.383545 1084.775146 1084.374512 1083.692261 1082.833496 +1202.027466 1200.900513 1197.456543 1202.35144 1205.115112 1204.597412 1206.890137 1209.32373 1209.4552 1208.921997 1207.44519 1207.112061 1208.958496 1209.174316 1208.106201 1204.746094 1200.273682 1196.201172 1191.68042 1187.001953 1184.46106 1184.10144 1180.744141 1178.485718 1177.637573 1178.127197 1178.54126 1177.826294 1175.775024 1174.077271 1173.880737 1172.568604 1169.085083 1162.345459 1155.488647 1149.044189 1145.766724 1144.07959 1142.715698 1141.202271 1139.505127 1137.803955 1136.162354 1134.533691 1134.732422 1135.402344 1136.462769 1138.207031 1140.088867 1141.422974 1142.28833 1142.861572 1146.068237 1148.327637 1149.441162 1154.634521 1160.846069 1166.9823 1175.005981 1185.543457 1199.744019 1209.993042 1212.381714 1212.852539 1213.09436 1213.098877 1212.878174 1212.44873 1211.762329 1210.922729 1209.923462 1208.689697 1205.408936 1199.944824 1194.1604 1190.545776 1196.303467 1193.960693 1186.595825 1181.006836 1183.137085 1188.520996 1192.954956 1195.040771 1195.575928 1198.71228 1201.798584 1203.859863 1205.102295 1205.862793 1206.201538 1206.064697 1205.896484 1205.620117 1205.283081 1204.567139 1204.0625 1203.241333 1202.660278 1202.133179 1201.516357 1200.85022 1200.014771 1199.054565 1198.205688 1197.122803 1195.47583 1189.732544 1184.127563 1181.725342 1179.96228 1179.257324 1179.688965 1193.081421 1196.471069 1197.313354 1198.056152 1198.708862 1199.159302 1199.451416 1199.617798 1199.814209 1200.069702 1200.499023 1200.723389 1200.687012 1200.412354 1200.018921 1199.509033 1199.230225 1199.047974 1198.997559 1199.000488 1198.978027 1198.867554 1198.800537 1198.560913 1198.178833 1197.550171 1196.569824 1195.399536 1195.330566 1195.527832 1195.582275 1195.312256 1195.165283 1195.384644 1195.866577 1196.491943 1196.118164 1194.771606 1195.706421 1196.934692 1197.776001 1199.029907 1200.49231 1202.055054 1203.729736 1205.529053 1207.25354 1212.419922 1218.50769 1225.954956 1232.425659 1238.858398 1236.886841 1230.536865 1224.124023 1218.121582 1209.030518 1207.057007 1207.199097 1207.31958 1207.197754 1206.901978 1207.162842 1207.093994 1206.759766 1205.785645 1204.363647 1202.735474 1201.273804 1199.897095 1199.271118 1199.424927 1199.659912 1200.180664 1200.829834 1201.612915 1202.542236 1203.32959 1203.800659 1203.953369 1203.792603 1203.795532 1203.711426 1203.475098 1203.301147 1202.964355 1202.89209 1202.775635 1202.641357 1202.485229 1202.450195 1202.4104 1202.248657 1202.162842 1202.056641 1201.781494 1201.517212 1201.156616 1200.704956 1200.260864 1199.964355 1199.649658 1199.290649 1198.909058 1198.547241 1198.315552 1198.18457 1198.069336 1197.694702 1197.444946 1197.206055 1197.023926 1196.767456 1196.373169 1195.783936 1195.348267 1194.963013 1194.297607 1193.589966 1192.862305 1192.220093 1191.497803 1190.917725 1190.21936 1189.530518 1188.758423 1187.991943 1187.234863 1186.474365 1185.71106 1184.889648 1184.095459 1183.261108 1183.204834 1187.190674 1192.16626 1195.787598 1195.346069 1194.220459 1192.89978 1191.838013 1191.089355 1190.491577 1189.870239 1189.357544 1188.829956 1188.289185 1187.781982 1187.695068 1187.986938 1188.569336 1189.033325 1189.52832 1189.985229 1190.515869 1190.746826 1190.569458 1189.993896 1189.311157 1188.594971 1187.807007 1186.979858 1186.13562 1185.187378 1184.54248 1184.237915 1183.593994 1182.735229 1181.625488 1180.621094 1179.66626 1178.429199 1177.119385 1175.517456 1173.449585 1170.957642 1171.041016 1171.166748 1171.465454 1171.716064 1171.737427 1171.384033 1170.721069 1169.199463 1167.544434 1166.180908 1165.170898 1164.538696 1164.620117 1164.709595 1164.775513 1164.920044 1164.300415 1163.509399 1162.802124 1162.222534 1161.460693 1160.487305 1159.620972 1159.05188 1158.737549 1158.744873 1158.746582 1158.639893 1158.342896 1158.345703 1158.421509 1158.328491 1158.034546 1157.736938 1157.695923 1157.593384 1157.558472 1157.521973 1157.491089 1157.523193 1157.623901 1157.890747 1158.262817 1158.123047 1157.842407 1157.761353 1157.550171 1157.426025 1157.175415 1156.730225 1156.065796 1155.284668 1154.682739 1154.244507 1153.981689 1153.71582 1153.58252 1153.451538 1153.246826 1152.904907 1152.761719 1152.858887 1153.122437 1153.500854 1153.752441 1153.995361 1154.109619 1154.236694 1154.356445 1154.429932 1154.687012 1155.013306 1155.320923 1155.634399 1156.289795 1156.952393 1158.088013 1158.741943 1161.147949 1163.081909 1164.930542 1166.916748 1168.744507 1170.692383 1172.112061 1172.644409 1159.34021 1152.778442 1147.114746 1141.990967 1141.363159 1143.044067 1145.977051 1151.424072 1158.13855 1162.253418 1166.236328 1169.854004 1174.105591 1178.601318 1184.553101 1191.908691 1199.856323 1207.890869 1210.16394 1217.939575 1227.391602 1233.178345 1232.234253 1237.843628 1245.191895 1250.258789 1256.4646 1261.216797 1266.086426 1269.695312 1270.387939 1270.688965 1267.291504 1261.907593 1257.745483 1264.849243 1269.119629 1270.702393 1269.633545 1267.69812 1268.79248 1257.663086 1242.888428 1241.771851 1254.816284 1263.610596 1277.290405 1289.49585 1294.891479 1292.050293 1297.842285 1310.373901 1319.509399 1319.804077 1321.738403 1330.551392 1332.715088 1338.61499 1342.218262 1344.589111 1344.647339 1343.602051 1339.963379 1339.239014 1340.996216 1343.566895 1343.4104 1342.394165 1335.730225 1327.382568 1320.938721 1314.63855 1309.83374 1304.116455 1296.661377 1284.510254 1271.623901 1262.169678 1249.630371 1236.04126 1226.180054 1218.720947 1214.204346 1209.514526 1205.216553 1202.304199 1198.02771 1195.490234 1191.985962 1188.112427 1184.464722 1182.011719 1180.738159 1179.732178 1178.429321 1177.117432 1175.364136 1173.586426 1171.744263 1175.910156 1186.282227 1194.67395 1202.410156 1209.399048 1214.755981 1219.885254 1223.570312 1227.293213 1232.114502 1237.398804 1241.795898 1247.926025 1255.369263 1259.769531 1258.630005 1250.285156 1240.196533 1229.650269 1220.665894 1208.523438 1202.056396 1199.70166 1200.529175 1198.55835 1194.280762 1191.65625 1187.948853 1184.398682 1182.920166 1184.703125 1183.069214 1174.68335 1167.979614 1162.042725 1162.917725 1166.882446 1170.207397 1175.76355 1181.709961 1184.683105 1184.807251 1181.557983 1174.272095 1163.623413 1158.447754 1167.704346 1176.822021 1185.645264 1195.775269 1210.104126 1211.152344 1210.404541 1208.522339 1206.755493 1202.57959 1195.481323 1180.71228 1169.539429 1164.413696 1157.498169 1152.871948 1149.563721 1148.117065 1146.203247 1146.025757 1147.578247 1145.726929 1142.65271 1140.182007 1138.399292 1136.534058 1135.068115 1133.321045 1130.451904 1128.593018 1127.816406 1127.072266 1125.012817 1122.231689 1122.150757 1122.07019 1121.546509 1119.706787 1118.536255 1117.640015 1117.114624 1117.032349 1117.720581 1118.936035 1119.366333 1118.853271 1117.166504 1115.56958 1114.534058 1113.647949 1112.292358 1110.902344 1108.554688 1109.228271 1110.405151 1112.171875 1114.401245 1117.074829 1119.090698 1120.731445 1121.372681 1118.844604 1115.298096 1111.855225 1109.439941 1107.66333 1105.872314 1103.913818 1101.654541 1099.206055 1097.162842 1095.696533 1094.284668 1093.278198 1092.549683 1092.015625 1091.749878 1091.532959 1091.365479 1090.602173 1088.7323 1086.946167 1085.570557 1085.432861 1085.370361 1085.404419 1085.336792 1084.80188 1083.945801 1082.979614 1082.097534 +1209.894653 1209.495605 1206.198486 1208.981445 1210.32019 1208.789307 1208.884399 1211.473633 1211.769775 1211.059937 1210.145508 1209.934692 1210.808716 1210.683472 1209.676025 1208.006714 1202.251099 1196.887695 1193.467041 1190.907837 1188.126221 1185.921875 1182.953491 1181.087646 1180.899292 1181.419678 1181.572632 1180.884888 1179.506592 1177.717651 1176.631958 1174.956543 1172.058228 1165.758667 1160.021851 1152.594116 1146.107422 1144.762939 1143.477417 1141.906006 1140.209473 1138.555298 1137.047363 1135.610596 1135.664795 1135.845947 1137.060669 1139.148438 1141.348511 1143.593628 1145.309082 1146.065552 1148.011963 1146.201904 1145.51355 1149.242554 1159.178345 1164.223022 1170.154175 1178.686646 1192.106689 1207.841675 1212.30957 1212.791626 1212.985474 1213.127075 1213.115112 1212.776855 1212.154419 1211.253906 1209.884766 1208.087769 1206.088257 1201.714355 1197.932495 1199.970825 1204.205566 1201.174072 1195.839111 1182.140259 1181.083252 1181.946777 1189.39502 1194.302856 1194.898682 1198.437622 1202.053223 1204.403076 1205.984009 1206.755615 1206.806396 1206.93042 1206.963623 1206.748047 1206.496094 1205.672485 1204.809204 1204.328003 1203.958618 1203.492188 1203.009277 1202.336182 1201.377075 1200.414795 1199.317261 1198.192993 1196.694946 1193.437866 1186.838379 1183.981445 1180.027222 1180.062378 1180.484375 1192.929932 1196.769409 1197.465942 1198.15564 1198.670654 1199.216187 1199.586182 1199.859009 1200.214355 1200.713745 1201.181641 1201.467285 1201.473877 1201.277466 1200.923218 1200.509399 1200.250488 1200.068359 1200.033081 1200.032959 1199.925171 1199.731934 1199.585938 1199.304688 1198.838257 1198.132568 1197.168945 1196.072876 1196.199341 1196.490723 1196.500366 1196.082886 1195.416382 1195.471924 1196.268311 1196.811523 1196.429565 1195.261353 1195.548706 1196.895142 1197.942139 1199.270508 1200.77832 1202.389771 1204.366821 1206.068115 1208.043823 1213.78894 1220.951538 1229.782959 1238.578735 1246.5896 1237.790405 1230.062744 1225.471558 1220.790894 1211.839111 1207.284424 1208.730713 1209.864136 1209.342285 1208.296631 1209.046143 1208.854492 1208.002197 1206.938965 1205.594238 1204.008301 1202.445312 1201.025513 1200.072021 1199.749878 1199.963379 1200.628418 1201.548584 1202.603149 1203.682861 1204.474121 1204.931274 1205.014648 1204.911011 1204.691772 1204.447266 1204.133667 1203.785034 1203.521606 1203.393311 1203.291382 1203.197021 1203.00061 1202.903442 1202.925537 1202.914062 1202.791748 1202.674194 1202.451416 1202.218628 1201.735352 1201.427002 1201.083008 1200.777466 1200.505127 1200.111572 1199.671387 1199.26001 1198.975098 1198.821655 1198.584106 1198.321655 1198.019287 1197.734375 1197.372437 1197.05481 1196.705566 1196.251953 1195.859375 1195.413818 1194.72168 1193.992676 1193.324829 1192.613037 1191.898926 1191.217651 1190.591064 1189.866943 1188.979004 1188.158325 1187.432007 1186.647949 1185.894165 1185.087646 1184.121582 1183.330566 1183.13208 1186.047485 1191.14917 1195.994751 1195.534424 1194.651733 1193.470459 1192.491211 1191.768066 1191.272095 1190.818115 1190.439453 1190.020386 1189.615112 1189.191162 1189.035767 1189.223999 1189.675659 1190.198486 1190.655151 1191.337402 1191.88916 1192.26709 1192.062622 1191.528931 1190.687012 1189.771851 1188.760376 1187.880981 1186.99231 1186.122925 1185.492676 1184.99646 1184.181763 1183.147949 1182.04541 1180.903931 1179.837891 1178.572998 1177.224487 1175.547485 1173.385498 1171.612671 1171.054565 1170.879883 1170.92627 1171.00061 1170.974243 1170.822754 1169.891968 1168.468018 1167.002197 1165.596069 1164.565552 1164.3927 1164.281372 1164.228394 1164.109863 1164.010132 1163.375854 1162.546753 1161.805176 1161.252197 1160.824951 1160.001465 1159.221558 1159.169434 1158.711426 1158.741455 1158.76123 1158.471924 1158.323242 1158.602417 1158.808716 1158.940063 1158.729614 1158.263184 1157.976074 1158.027588 1157.987671 1157.944458 1157.844482 1157.900269 1158.149658 1158.713867 1158.935059 1158.84314 1158.586304 1158.22876 1158.420044 1158.405151 1158.06543 1157.349976 1156.560425 1155.759521 1155.193726 1154.742065 1154.497192 1154.219116 1154.113159 1154.06311 1153.849976 1153.505005 1153.390869 1153.444092 1153.716919 1154.185181 1154.621948 1155.013184 1155.291016 1155.580688 1155.726318 1155.864136 1155.933838 1156.218262 1156.4552 1156.501221 1156.806274 1157.235596 1158.076538 1159.69519 1161.002686 1162.72583 1164.629761 1166.607666 1168.52478 1170.578735 1171.922363 1172.996948 1161.125366 1154.010498 1148.56958 1143.03479 1141.161987 1142.859497 1145.115845 1148.516724 1155.019775 1157.37915 1159.097534 1168.307129 1171.223633 1178.640869 1183.05127 1191.157959 1197.696289 1200.582153 1208.807617 1216.825928 1220.570801 1228.338135 1233.181641 1237.662476 1242.18457 1247.157471 1253.584106 1257.064209 1260.945679 1264.073608 1264.562988 1263.688354 1259.110596 1255.360229 1255.955566 1268.270264 1270.930542 1271.306274 1269.75708 1253.97522 1257.217896 1250.171875 1238.262817 1238.405518 1248.071655 1260.158203 1272.879883 1283.818848 1286.341553 1283.558594 1295.200562 1304.627319 1309.802002 1307.251587 1312.745605 1317.329346 1327.122925 1332.989014 1335.876343 1337.429932 1337.354614 1336.104614 1332.979248 1330.885864 1334.753784 1337.04126 1337.503296 1335.880615 1331.841064 1325.162476 1318.796753 1308.665771 1304.07959 1297.710693 1290.354858 1280.764893 1269.64624 1256.9021 1241.687378 1230.779175 1223.235107 1217.463989 1212.176514 1208.271851 1203.701294 1199.209106 1194.694702 1192.247314 1189.352051 1186.533936 1183.912476 1181.768433 1179.822876 1180.63147 1179.927979 1178.462891 1176.345947 1173.845215 1172.118164 1177.744873 1186.422363 1195.046265 1203.074707 1209.909302 1216.391357 1221.753662 1225.698853 1230.045532 1235.150879 1241.348999 1246.615234 1253.356079 1260.652466 1264.889404 1261.314331 1253.273071 1242.9646 1228.61377 1217.115234 1211.908569 1207.369263 1206.835327 1206.54187 1203.610596 1199.942749 1197.14624 1193.822876 1187.514771 1186.339966 1184.424561 1180.988403 1170.893066 1172.32312 1171.802734 1172.066284 1169.509521 1169.695557 1170.428955 1177.213745 1182.177734 1184.385254 1183.842773 1176.557129 1169.560547 1164.462891 1167.783813 1173.762695 1182.536133 1189.019531 1202.118896 1211.971802 1211.355225 1210.656738 1209.771851 1206.273926 1196.530029 1184.04187 1175.203857 1168.482422 1160.797852 1152.762573 1146.761597 1145.905396 1146.515015 1149.237061 1150.172974 1149.033447 1145.811523 1143.582153 1141.470093 1139.302124 1137.289429 1135.304932 1132.60083 1131.58667 1130.761963 1129.528809 1126.749634 1124.272949 1123.234741 1123.677124 1122.474976 1120.500244 1119.887573 1119.531616 1119.231079 1119.539185 1121.081177 1123.992554 1125.180176 1122.010498 1119.056396 1117.164429 1116.108643 1115.132446 1113.681885 1111.668701 1110.360474 1112.011108 1113.615112 1115.688232 1118.86438 1122.609741 1126.148315 1130.981323 1132.625732 1129.188965 1124.828735 1123.869507 1116.979248 1110.09082 1107.938232 1105.724854 1103.268433 1100.470093 1098.062744 1096.613037 1095.334106 1094.547241 1093.932373 1093.554565 1093.340698 1093.310669 1093.163696 1092.861938 1092.456177 1091.087158 1090.311768 1089.679443 1089.743408 1088.845947 1087.44873 1086.101929 1085.334473 1084.29834 1083.502319 +1212.918823 1212.248047 1211.500732 1213.273438 1214.981201 1215.382935 1215.107178 1214.54187 1214.001709 1213.467529 1212.978271 1212.721191 1212.539062 1211.69104 1209.992432 1207.572388 1203.540771 1199.637329 1197.096558 1194.293457 1190.77124 1187.49231 1183.373291 1182.944824 1183.577637 1183.607544 1184.774414 1183.767578 1181.960083 1181.114624 1180.619751 1178.428223 1173.920288 1168.886108 1164.285034 1159.164917 1147.506348 1145.51001 1144.07666 1142.671265 1141.062988 1139.523926 1138.085327 1137.108887 1136.760742 1136.225342 1138.010254 1140.31311 1142.673706 1145.222534 1147.475464 1149.360352 1150.384888 1150.350586 1148.865479 1146.945557 1154.7948 1160.359863 1168.171875 1176.85022 1189.138062 1203.689575 1210.5979 1212.108643 1212.543823 1213.067017 1213.198608 1213.011841 1212.48584 1211.581787 1210.198853 1208.461304 1206.671753 1207.445068 1208.303955 1207.265991 1208.885254 1207.225586 1199.755371 1182.901001 1182.018066 1190.06958 1195.781006 1196.900024 1197.626709 1199.967407 1203.011963 1205.462036 1206.901245 1207.46521 1207.667603 1207.793579 1207.828857 1207.74939 1207.643066 1206.698486 1205.692993 1205.194092 1205.033813 1204.819336 1204.551392 1204.0177 1202.996094 1201.720337 1200.185181 1198.658936 1196.918335 1194.721436 1188.668457 1183.480347 1180.622192 1183.59668 1180.702515 1188.775513 1196.854126 1197.458496 1197.892334 1198.424683 1199.003052 1199.555786 1199.974487 1200.62146 1201.223999 1201.889526 1202.289185 1202.376709 1202.1698 1201.915283 1201.51709 1201.249634 1201.061157 1201.070557 1201.024414 1200.919556 1200.72583 1200.436768 1200.084717 1199.634521 1199.116089 1198.391724 1197.707153 1197.48877 1197.505005 1197.570557 1197.169556 1196.558472 1196.456299 1196.992065 1197.406372 1196.802612 1195.957397 1195.88562 1197.081665 1198.239746 1199.497559 1201.106812 1202.780273 1204.915161 1206.747803 1209.634399 1214.831299 1220.529541 1226.60144 1231.829956 1243.296753 1233.874512 1228.909912 1224.903198 1220.786255 1215.545044 1211.375244 1212.711304 1214.669678 1214.976318 1214.002197 1212.677612 1211.330688 1210.014893 1208.338989 1206.836182 1205.213623 1203.871582 1202.251831 1201.001831 1200.178467 1200.275391 1201.121826 1202.385132 1203.727417 1204.955566 1205.849854 1206.16687 1206.193848 1205.956543 1205.488647 1205.155884 1204.621948 1204.217285 1204.014038 1203.906372 1203.897217 1203.762695 1203.631104 1203.515015 1203.466064 1203.502808 1203.446167 1203.189331 1203.049561 1202.790527 1202.46936 1202.189209 1202.029663 1201.765625 1201.387451 1200.85498 1200.420288 1200.051025 1199.732178 1199.401245 1199.245361 1198.751831 1198.390625 1198.032349 1197.84729 1197.414062 1197.040894 1196.678223 1196.143799 1195.672119 1194.981079 1194.28772 1193.590332 1192.952637 1192.230103 1191.604126 1190.783691 1190.000488 1189.225098 1188.468506 1187.815063 1186.970093 1186.185303 1185.341919 1184.413208 1183.910767 1183.354004 1183.098755 1188.991943 1194.867065 1195.583374 1194.840576 1193.821899 1192.930298 1192.290894 1191.898926 1191.692627 1191.42749 1191.024658 1190.636597 1190.209106 1190.076904 1190.287231 1190.634277 1191.136108 1191.727905 1192.48584 1193.463135 1194.099365 1193.835693 1193.172974 1192.083374 1190.905762 1189.879272 1188.860596 1187.990112 1187.016724 1186.25354 1185.569702 1184.620605 1183.598999 1182.570312 1181.379517 1180.174438 1178.88269 1177.484497 1175.952637 1174.369141 1173.124512 1172.231567 1171.428467 1171.050049 1170.861694 1170.485474 1170.002808 1169.060181 1167.864014 1166.591431 1165.322266 1164.407349 1164.327026 1164.109009 1163.966187 1163.70166 1163.24646 1162.599854 1161.711548 1160.923828 1160.517334 1160.047119 1159.077393 1158.719727 1158.74353 1158.747803 1158.750488 1158.762451 1158.522827 1158.612183 1159.221069 1159.643555 1159.609863 1159.438965 1158.975342 1158.737549 1158.667847 1158.675659 1158.615479 1158.500244 1158.218506 1158.826782 1159.119751 1159.431519 1159.380615 1158.98645 1158.821167 1158.997925 1159.022095 1158.629761 1157.956665 1156.981812 1156.254639 1155.71875 1155.295532 1155.00708 1154.736572 1154.760498 1154.638428 1154.450562 1154.140991 1154.012695 1154.08374 1154.255249 1154.842529 1155.303955 1155.865479 1156.252319 1156.831909 1157.240479 1157.328369 1157.089844 1157.453003 1157.460693 1157.418579 1157.280029 1157.50647 1157.937988 1158.785522 1160.091064 1161.972046 1164.048584 1166.036865 1167.961304 1169.865845 1171.536255 1172.550781 1162.375732 1154.852905 1149.613281 1145.37561 1142.227539 1142.192017 1144.502441 1148.735474 1155.987061 1160.237793 1162.03186 1169.298828 1173.926025 1179.983276 1185.114868 1187.97168 1192.600952 1194.633057 1203.313965 1210.080444 1220.563721 1226.600098 1232.338257 1234.63208 1239.491821 1245.328247 1248.910767 1252.977051 1256.799561 1255.648315 1257.057251 1257.9646 1249.518311 1248.265625 1259.565918 1267.414917 1269.630249 1268.560181 1265.904785 1253.434204 1242.39209 1240.401123 1229.806274 1244.634155 1253.381226 1263.373169 1271.197876 1277.761841 1274.639282 1280.713135 1288.862183 1294.409546 1297.059814 1297.577515 1305.002441 1316.560913 1322.446411 1327.548218 1329.452148 1329.564697 1330.464844 1330.039917 1326.142334 1323.368042 1327.731567 1329.658569 1329.053955 1327.570923 1325.316528 1321.124023 1318.206665 1302.384521 1292.474609 1288.017578 1283.528687 1269.505005 1263.199463 1254.15979 1240.904175 1227.526489 1218.342407 1213.833618 1209.160156 1205.636963 1202.136963 1198.800781 1195.994507 1191.266235 1186.511841 1184.971924 1182.819824 1180.605225 1180.735474 1182.346802 1181.630371 1180.216553 1177.782959 1174.470093 1173.547119 1178.437988 1185.22937 1192.974609 1201.243408 1208.627441 1216.453613 1221.853516 1227.189819 1232.180786 1237.193237 1244.088867 1250.665405 1257.619995 1266.692261 1270.336792 1266.009399 1256.881592 1247.676147 1234.169678 1223.597046 1218.085693 1213.819702 1212.78479 1211.171265 1208.934204 1205.472656 1201.005249 1196.875732 1194.112671 1189.487305 1183.343872 1181.216187 1183.291748 1183.381958 1178.634644 1177.936157 1173.276123 1174.926147 1176.099487 1177.783325 1180.608398 1182.689697 1183.262939 1179.72229 1174.43103 1169.518555 1168.627075 1173.205933 1182.893066 1187.14856 1193.289429 1210.389526 1211.474854 1210.598877 1209.993286 1206.521606 1197.224487 1188.479736 1181.637085 1174.102539 1166.892456 1158.794434 1151.113403 1146.415161 1149.851562 1153.153687 1153.77356 1151.662354 1148.456055 1147.092529 1144.497559 1141.673706 1139.674194 1137.388306 1135.515259 1134.547729 1133.667236 1132.248169 1130.164185 1128.006958 1125.636475 1123.907227 1122.03064 1121.5979 1122.036377 1121.845825 1121.15332 1122.047119 1127.806519 1135.935547 1134.890869 1122.13562 1119.513794 1118.52832 1117.695557 1116.8573 1115.588745 1114.538696 1114.060547 1115.08728 1116.523438 1118.497559 1121.852051 1127.307129 1132.009399 1139.916504 1145.230469 1141.23999 1133.685303 1128.741211 1123.660278 1114.883545 1109.908936 1107.516846 1105.369385 1102.189941 1099.420776 1097.211914 1096.219238 1095.636597 1095.288208 1095.047363 1095.069946 1095.000244 1094.880859 1095.199707 1096.30603 1096.303467 1095.091309 1094.36499 1096.197266 1097.214478 1094.470581 1090.538208 1087.776855 1085.19397 1085.821411 +1215.71875 1215.410767 1215.728638 1217.954712 1220.078979 1220.608032 1219.828735 1217.89502 1216.390625 1215.749023 1215.402466 1215.03894 1214.743286 1213.141968 1209.974487 1206.67981 1205.611816 1203.166626 1199.113892 1195.735474 1192.936768 1190.934204 1188.877441 1188.760986 1188.355591 1187.903687 1187.384644 1186.059814 1184.850952 1184.404907 1184.054077 1182.840454 1178.259155 1172.486572 1168.000854 1163.262939 1155.312378 1146.435181 1144.877686 1143.388672 1142.081787 1140.506836 1139.012695 1137.812866 1137.21228 1136.884644 1138.788574 1140.966919 1143.212036 1145.598999 1147.98584 1152.396606 1154.392944 1154.907593 1155.010986 1150.991821 1151.578125 1158.408203 1167.296753 1175.640991 1184.941895 1196.597778 1207.592651 1210.682129 1212.162354 1212.938354 1213.287964 1213.252686 1212.82019 1211.954712 1210.857666 1209.56958 1208.562012 1208.567627 1208.684082 1208.869263 1208.838745 1207.090088 1199.614136 1183.89502 1185.187744 1196.609131 1198.26416 1199.188965 1200.460083 1202.186768 1204.143188 1206.625 1207.928223 1208.260498 1208.391479 1208.359253 1208.225952 1208.122192 1207.953125 1207.204712 1206.253174 1205.864624 1205.765015 1205.994629 1206.130737 1205.804321 1204.863892 1202.970947 1200.847168 1198.910767 1197.000977 1195.17688 1188.903687 1183.096802 1181.582764 1184.012207 1183.03125 1182.157471 1194.047485 1196.771606 1197.222656 1197.888672 1198.643311 1199.335693 1200.14502 1201.054077 1201.863647 1202.674194 1203.165283 1203.244873 1203.129517 1202.955566 1202.626221 1202.217041 1202.112305 1202.069458 1201.958862 1201.901855 1201.737793 1201.461426 1201.16687 1200.84375 1200.369263 1199.88855 1199.407104 1199.042603 1198.844238 1198.71521 1198.428223 1198.083618 1198.093872 1198.194824 1198.202148 1197.424072 1196.738159 1196.20752 1197.37793 1198.438721 1199.782104 1201.35498 1203.198486 1205.112061 1207.235962 1210.677979 1214.452148 1218.625244 1222.675659 1226.768311 1229.77417 1230.36499 1228.150391 1225.291748 1221.575317 1217.811279 1215.610352 1216.854736 1220.473145 1221.597046 1219.588135 1216.872559 1214.269043 1212.157959 1210.021973 1207.648193 1206.61377 1205.537354 1203.719482 1201.966309 1200.948364 1200.644775 1201.780029 1203.190308 1204.829956 1206.230591 1207.074341 1207.349731 1207.272827 1206.712036 1206.109131 1205.607422 1205.103027 1204.847778 1204.616333 1204.478027 1204.548828 1204.374146 1204.247681 1204.088623 1204.095337 1204.116943 1204.027954 1203.896362 1203.625488 1203.380127 1203.244263 1203.174561 1202.896484 1202.642212 1202.247803 1201.608276 1201.212769 1200.856323 1200.456787 1200.118652 1199.749146 1199.318726 1198.861328 1198.539551 1198.105713 1197.70166 1197.350342 1196.896362 1196.366455 1195.88269 1195.264893 1194.572144 1193.878784 1193.168457 1192.497681 1191.741577 1190.953735 1190.248413 1189.470703 1188.586182 1187.928833 1187.220337 1186.343994 1185.49292 1184.761108 1184.05127 1183.331909 1183.269043 1188.115723 1194.068848 1195.715088 1194.943604 1193.918579 1193.281128 1192.878052 1192.559448 1192.453491 1192.24707 1191.956909 1191.516846 1191.131958 1190.974976 1190.994263 1191.420166 1191.765747 1192.553223 1193.427124 1194.674927 1195.457275 1195.2229 1194.522705 1193.463745 1192.178711 1190.883911 1189.902466 1188.951782 1188.032837 1187.123169 1186.151978 1185.054688 1183.993042 1182.796021 1181.61731 1180.59314 1179.35376 1178.105591 1176.752319 1175.463135 1174.426147 1173.407227 1172.739014 1172.165161 1171.47644 1170.68811 1169.758911 1168.793213 1167.672607 1166.541382 1165.335449 1164.48584 1164.2948 1164.175049 1163.977905 1163.654297 1162.830078 1162.015015 1161.121338 1160.115723 1159.834351 1158.878052 1158.761108 1158.753174 1158.749268 1158.738647 1158.776733 1159.145386 1158.651733 1158.812378 1159.869751 1160.363281 1160.542969 1160.307983 1160.061401 1159.819214 1159.572021 1159.403198 1159.472168 1159.273193 1158.614258 1159.084595 1159.687866 1159.900757 1159.871094 1159.429199 1159.300171 1159.494385 1159.490234 1159.167725 1158.405396 1157.414185 1156.717529 1156.253662 1155.835449 1155.544922 1155.32019 1155.307373 1155.189209 1155.034058 1154.74646 1154.668457 1154.601196 1154.856934 1155.242676 1155.860596 1156.340576 1156.957642 1157.648071 1158.329834 1158.7052 1158.508911 1158.411987 1158.407715 1158.310303 1157.817749 1157.714233 1157.746948 1158.106934 1158.953247 1161.190308 1163.370728 1165.351196 1167.308472 1169.457764 1171.458008 1172.204224 1164.139526 1155.708252 1150.720703 1146.362915 1143.354126 1141.999146 1143.781982 1146.125488 1154.106689 1159.427734 1162.063965 1165.25647 1169.9729 1170.367065 1180.505981 1185.119141 1191.380859 1197.310059 1206.864624 1211.851562 1217.233643 1222.530518 1227.494507 1229.642212 1235.54187 1240.788696 1244.879883 1248.696899 1249.824097 1248.491943 1244.185425 1246.68335 1242.082153 1250.927612 1259.626343 1262.251343 1261.48938 1258.317871 1256.736694 1248.729614 1239.615601 1229.324097 1230.1073 1242.102417 1255.30835 1259.103516 1260.004517 1261.74646 1265.853882 1274.94104 1281.351562 1283.783691 1282.981445 1290.771851 1301.939453 1311.485229 1317.485352 1320.710815 1321.258301 1321.830078 1323.250488 1322.258667 1318.409546 1313.566406 1314.507324 1319.634766 1320.291992 1319.210815 1317.064575 1312.711792 1306.056396 1298.025391 1287.257568 1275.788086 1276.01416 1265.66333 1251.733765 1243.351074 1235.008301 1224.916748 1216.661011 1211.089844 1206.550659 1203.361694 1199.385498 1196.646851 1193.457397 1188.238159 1183.68042 1182.13855 1180.74585 1180.904419 1184.004028 1185.054321 1183.425537 1182.06958 1180.27832 1176.415894 1173.960083 1177.083862 1183.070801 1189.768677 1197.783447 1206.964966 1214.844971 1221.58728 1227.898315 1233.381104 1237.08313 1242.310425 1250.721924 1262.137939 1270.333984 1272.56189 1271.655273 1266.435303 1255.41748 1245.986328 1232.556641 1224.619385 1220.338745 1217.382202 1214.769897 1211.755615 1208.591553 1204.239014 1199.78772 1197.569824 1192.377686 1183.174438 1184.33313 1185.12085 1182.823853 1183.538452 1184.303101 1180.138428 1183.488647 1184.009521 1181.243652 1180.914307 1182.01062 1183.213257 1184.297729 1182.15625 1174.029785 1169.218994 1170.550171 1183.245728 1192.403198 1200.037109 1206.866943 1209.879639 1205.993042 1203.076294 1198.36853 1192.782104 1187.885986 1181.673462 1175.337891 1169.633667 1159.38208 1154.064575 1148.834717 1155.035767 1157.739624 1158.135132 1154.818115 1151.578369 1148.124023 1145.297119 1143.442871 1142.105103 1141.290527 1140.100952 1139.025024 1137.887329 1135.967407 1133.40918 1131.439819 1127.450073 1122.637329 1122.004517 1124.109497 1125.064941 1124.525513 1123.495483 1124.422363 1126.222168 1129.050415 1124.213257 1121.443604 1120.220459 1119.918945 1119.689575 1118.727783 1117.800659 1117.111084 1117.283447 1118.363525 1119.704468 1121.126465 1125.088013 1133.377075 1137.861084 1145.258179 1152.026855 1149.501709 1139.849854 1131.376831 1124.115234 1117.960815 1112.451782 1109.80957 1108.115356 1104.500122 1100.847778 1097.931152 1097.363647 1097.192139 1096.709229 1096.523315 1096.632812 1096.693115 1096.666626 1096.930664 1098.28186 1099.244263 1098.658813 1097.019775 1098.324707 1098.322021 1098.089355 1094.835449 1090.577515 1087.359863 1087.388428 +1218.365967 1217.547852 1217.935791 1219.995728 1222.002808 1222.432373 1221.554565 1219.984253 1218.13208 1217.363037 1217.751099 1217.701172 1217.489746 1215.608276 1212.343506 1209.683838 1209.060547 1206.776978 1201.145386 1195.664062 1195.088501 1194.817383 1192.905762 1194.695068 1193.94751 1191.943604 1190.234131 1188.786133 1187.56543 1186.788208 1186.038574 1184.904907 1183.24231 1176.989502 1172.417358 1167.238037 1158.998657 1149.002686 1145.614136 1144.432251 1143.243164 1141.650879 1139.950684 1138.326782 1137.440186 1137.902344 1139.516602 1141.35144 1143.370605 1145.358154 1150.018066 1158.32605 1159.093018 1159.539917 1160.762695 1159.87561 1150.882202 1155.791138 1162.843018 1172.116699 1183.249512 1193.52832 1207.906494 1210.009888 1211.759399 1212.84021 1213.347778 1213.423828 1213.15271 1212.555176 1211.684937 1210.750122 1209.912354 1209.424072 1209.237061 1209.051392 1208.49646 1206.019043 1198.218628 1181.48999 1186.743408 1197.21582 1199.803833 1201.615356 1202.856201 1204.250244 1205.475098 1207.564697 1208.447388 1208.691895 1208.806763 1208.759155 1208.510376 1208.220337 1207.651489 1206.977295 1206.812012 1206.813843 1206.673584 1206.987793 1207.508179 1207.691162 1206.62793 1203.971802 1201.368286 1199.255859 1197.341919 1194.759399 1188.404175 1182.810791 1182.012939 1184.695435 1184.572144 1182.800415 1186.004517 1194.55188 1196.355347 1197.166138 1198.227295 1199.180176 1200.305298 1201.465088 1202.571533 1203.532715 1204.111572 1204.30896 1204.205444 1203.965942 1203.709106 1203.373535 1203.02417 1202.920288 1202.800781 1202.849976 1202.807373 1202.65979 1202.441406 1202.183838 1202.038574 1201.577637 1201.062378 1200.708496 1200.343384 1200.187256 1199.914429 1199.711304 1199.616455 1199.631226 1199.541016 1198.546265 1197.559448 1196.927368 1197.49585 1198.545654 1200.012329 1201.594849 1203.26062 1204.987427 1206.966919 1209.545166 1212.643677 1216.566284 1219.199097 1221.92688 1223.764282 1225.861084 1227.4552 1226.053223 1222.746216 1219.445435 1217.312134 1219.420898 1224.650269 1230.351807 1228.256226 1219.707764 1216.897949 1214.918335 1212.325806 1209.997314 1208.567749 1207.423706 1205.443237 1202.894775 1201.539673 1201.30481 1202.640137 1204.235718 1206.006104 1207.178467 1207.80127 1207.908081 1207.663574 1207.215332 1206.585693 1206.08728 1205.661133 1205.420166 1205.287842 1205.266357 1205.243652 1205.068848 1204.828857 1204.766357 1204.735107 1204.680786 1204.642212 1204.534302 1204.384399 1204.15332 1204.052734 1203.941406 1203.747681 1203.482544 1203.152466 1202.621948 1202.129395 1201.722168 1201.324097 1200.878662 1200.450684 1199.884888 1199.491821 1198.989624 1198.702026 1198.153564 1197.787109 1197.212402 1196.743652 1196.162476 1195.483154 1194.760132 1194.072266 1193.367676 1192.69397 1191.991333 1191.036377 1190.320801 1189.535645 1188.800171 1188.077637 1187.276001 1186.500366 1185.724731 1184.723022 1183.755493 1183.134277 1185.113281 1189.545654 1194.258667 1195.707275 1194.945435 1194.145996 1193.677612 1193.407227 1193.267334 1193.254639 1193.072388 1192.701294 1192.318115 1191.850098 1191.661377 1191.669922 1191.907227 1192.361816 1193.022827 1194.019287 1195.368774 1195.693481 1195.791748 1195.659912 1194.572632 1193.165527 1191.98999 1190.912964 1190.099731 1189.140259 1188.003052 1186.812622 1185.487305 1184.10498 1182.742065 1181.831909 1181.02832 1179.897339 1178.824097 1177.709106 1176.633545 1175.536743 1174.469116 1173.601562 1172.855103 1172.091553 1171.19751 1170.023315 1168.85498 1167.849121 1166.854736 1165.823975 1164.920288 1164.587158 1164.483276 1164.306396 1163.92749 1162.866211 1161.939331 1160.655151 1159.555664 1158.938477 1158.758789 1158.741943 1158.735596 1158.890869 1159.298828 1159.672485 1160.054565 1159.484741 1159.851562 1160.507812 1161.087769 1161.357544 1161.481323 1161.209351 1161.000244 1160.722412 1160.456421 1160.358765 1160.185181 1159.498413 1159.924683 1160.240479 1160.393921 1160.245605 1159.994995 1159.977417 1159.955566 1159.82312 1159.474854 1158.628418 1157.729492 1157.216064 1156.809082 1156.477417 1156.178833 1155.943115 1155.793213 1155.76001 1155.631714 1155.337158 1155.242676 1155.265747 1155.415649 1155.726929 1156.264771 1156.765259 1157.313354 1158.046265 1158.889771 1159.204102 1159.116455 1158.991089 1159.055908 1158.825928 1158.345215 1157.918457 1157.93689 1157.904297 1158.765381 1160.751587 1162.696289 1164.348389 1166.146362 1168.233398 1170.325073 1171.91272 1165.747925 1156.509399 1151.39563 1147.17041 1144.53479 1142.604248 1142.460938 1145.442627 1150.384277 1156.239746 1158.442627 1161.360718 1170.700684 1171.115601 1179.212769 1183.657227 1191.724365 1197.709229 1203.555908 1206.410889 1212.687012 1218.65332 1223.05481 1227.547607 1232.945557 1234.205811 1240.372437 1243.228638 1241.884521 1244.974976 1240.40979 1234.166992 1238.153442 1249.087158 1254.957397 1255.581421 1251.566284 1244.999512 1243.220825 1239.770386 1233.408081 1228.716675 1229.665405 1235.154663 1242.005737 1245.361206 1247.691406 1255.157227 1261.490356 1267.266479 1270.336182 1270.595337 1279.016479 1289.322998 1298.512207 1306.625854 1311.250366 1312.473999 1311.318481 1312.588745 1315.936157 1315.114136 1311.682495 1307.215942 1300.051025 1304.344727 1307.85022 1308.655762 1306.05896 1296.602783 1286.302368 1284.074463 1275.119751 1262.131836 1257.49353 1253.781006 1245.671997 1234.088135 1226.005249 1218.93811 1212.987427 1208.264038 1204.741943 1201.316406 1197.235229 1193.268188 1189.690918 1184.6604 1181.770996 1180.553955 1181.733276 1187.219849 1190.102905 1191.811646 1189.542236 1186.202393 1183.817871 1180.438843 1176.473145 1175.008301 1180.003296 1185.668701 1193.008179 1202.238525 1211.472778 1218.886841 1225.661865 1230.967651 1231.099976 1237.099854 1247.135986 1263.198364 1272.650391 1273.862061 1272.784546 1269.728271 1262.415649 1255.667969 1244.384155 1232.099243 1226.405273 1221.895752 1217.969116 1213.837524 1209.721069 1205.300293 1201.37793 1198.292603 1194.0448 1189.284912 1189.633423 1186.262817 1183.137085 1186.513184 1185.799683 1182.603882 1184.525269 1185.63208 1183.443115 1181.669067 1182.967041 1186.914307 1188.249878 1186.142944 1178.428833 1170.26355 1172.531128 1179.77002 1191.274658 1202.971802 1210.794678 1209.904175 1203.894287 1194.377319 1189.010254 1185.467529 1183.27832 1178.304077 1172.939819 1167.23584 1158.320679 1158.492676 1156.33606 1162.312988 1171.589966 1168.433594 1157.240845 1154.188599 1148.296997 1146.575562 1145.268677 1144.622803 1144.812988 1144.754517 1144.735596 1143.182495 1140.692749 1137.078613 1135.399658 1127.374146 1121.890015 1125.251099 1128.673218 1129.641968 1128.781494 1126.989624 1125.353027 1123.781128 1122.412231 1121.262451 1121.356201 1121.482544 1121.777954 1121.746582 1120.742432 1119.790894 1119.103271 1119.194214 1120.400269 1122.28772 1126.279297 1130.840088 1140.558594 1150.244263 1153.478271 1157.639038 1157.779541 1146.862427 1134.867432 1127.205811 1120.582764 1115.390625 1110.3573 1110.052002 1107.289917 1103.738525 1100.858398 1099.779297 1099.370117 1098.338745 1097.579956 1098.182007 1098.930542 1099.101074 1099.853638 1100.825806 1100.658203 1100.171509 1099.406006 1098.958862 1098.696777 1098.355103 1097.141968 1094.190552 1091.241577 1089.238525 +1219.180176 1219.870239 1220.832886 1222.015503 1223.727905 1224.0177 1223.158203 1221.103027 1218.986572 1219.358398 1220.101562 1220.357178 1219.852783 1218.200439 1215.640747 1212.511963 1210.321533 1207.772583 1203.747192 1200.251953 1199.093384 1197.762695 1194.949463 1197.047974 1196.81311 1194.693359 1192.805176 1191.255615 1189.911987 1188.509888 1187.164429 1185.796265 1184.029663 1178.931274 1174.637451 1169.334229 1158.491577 1152.471558 1147.399536 1145.861328 1144.776123 1142.773315 1140.550293 1138.688232 1137.638306 1138.450806 1140.414429 1142.101685 1143.80188 1145.561768 1156.662109 1162.220093 1163.348022 1163.443481 1163.494263 1162.321411 1159.613281 1153.014404 1156.686035 1170.77771 1184.573853 1199.077881 1208.496338 1210.141113 1211.657471 1212.714844 1213.415527 1213.645752 1213.467529 1213.116699 1212.43811 1211.623535 1210.858521 1210.007202 1209.514893 1209.034302 1208.130005 1204.28894 1198.588623 1186.57019 1184.107788 1197.042847 1201.510132 1204.425049 1205.269043 1205.926392 1206.349731 1207.722778 1208.84436 1209.235107 1209.395264 1209.293335 1208.830566 1208.013062 1207.494629 1207.542847 1207.687378 1207.70459 1207.635254 1207.764404 1208.100464 1208.036621 1206.760376 1204.217407 1201.609131 1199.402466 1197.084595 1193.595215 1188.089722 1183.008301 1183.397705 1185.784058 1185.888184 1184.158569 1183.534668 1191.641235 1195.79541 1196.719238 1197.780029 1199.054077 1200.49646 1202.081665 1203.582642 1204.709839 1205.257568 1205.40686 1205.378052 1205.211792 1204.876465 1204.432617 1204.042725 1203.769287 1203.63623 1203.654297 1203.686646 1203.826172 1203.929321 1203.900391 1203.764404 1203.453979 1202.763428 1202.289062 1201.947388 1201.682739 1201.463257 1201.180054 1201.164307 1201.273926 1201.359741 1200.297363 1199.202881 1198.001587 1197.543701 1198.729492 1199.970581 1201.45813 1203.118408 1204.740234 1206.063477 1207.256348 1210.481812 1214.351807 1216.888306 1218.611328 1219.459229 1223.928955 1228.984985 1227.77478 1224.097534 1220.976685 1218.650635 1220.480225 1229.124878 1236.876465 1237.00061 1225.599487 1218.886108 1217.997192 1215.319702 1212.577393 1210.470215 1208.861084 1206.793579 1203.727051 1201.628296 1201.954468 1203.148926 1205.103882 1206.807129 1207.897827 1208.177368 1208.154053 1207.828125 1207.393921 1206.848145 1206.375244 1206.070923 1205.933228 1205.916992 1205.928467 1206.01123 1205.737671 1205.640869 1205.385498 1205.219849 1205.16626 1205.094971 1204.980225 1204.886719 1204.938477 1204.835449 1204.803345 1204.605347 1204.342285 1203.959839 1203.55542 1203.078369 1202.623169 1202.171509 1201.58667 1201.062256 1200.360962 1199.830322 1199.372803 1198.97937 1198.567383 1198.131958 1197.614746 1197.012451 1196.427368 1195.680298 1194.998779 1194.298828 1193.627197 1192.825928 1192.135498 1191.437622 1190.550781 1189.80127 1189.04126 1188.377686 1187.638184 1186.870239 1186.034668 1184.85022 1183.812622 1183.674194 1186.351562 1190.21582 1194.563354 1195.785522 1194.994995 1194.371094 1194.074951 1194.046997 1193.98877 1193.971191 1193.849609 1193.481812 1192.947144 1192.50769 1192.258301 1192.219971 1192.389038 1192.757568 1193.40979 1194.157471 1195.317017 1195.620483 1195.926392 1196.191528 1195.389526 1193.987061 1192.855957 1192.000366 1191.140503 1190.306396 1189.22998 1187.786987 1185.953247 1183.813477 1182.830933 1182.506348 1181.427002 1180.563843 1179.708984 1178.78064 1177.814941 1176.615112 1175.489624 1174.417603 1173.434937 1172.564087 1171.594971 1170.311523 1169.390503 1168.518433 1167.608521 1166.696655 1165.814575 1165.405884 1165.134033 1164.878174 1164.356934 1163.140991 1162.153198 1160.744629 1159.16687 1159.080078 1159.463623 1159.673462 1159.788086 1159.979858 1160.320435 1160.707153 1161.045288 1161.10022 1161.452271 1161.744019 1162.107422 1162.356445 1162.638916 1162.642212 1162.297852 1162.065308 1161.815308 1161.621948 1161.399658 1161.083618 1160.964478 1160.919312 1160.974731 1160.834961 1160.660889 1160.462036 1160.22876 1160.03772 1159.574219 1158.689087 1158.053955 1157.706177 1157.536743 1157.286255 1156.852173 1156.522217 1156.437622 1156.371338 1156.266602 1156.014404 1155.945068 1155.878296 1155.913574 1156.206299 1156.570801 1157.041992 1157.582886 1158.365845 1159.035522 1159.434448 1159.525146 1159.445435 1159.367676 1159.032471 1158.734131 1158.380371 1158.068604 1158.037842 1158.475098 1159.960938 1161.684692 1163.018433 1164.694458 1166.739868 1168.983398 1170.992554 1168.172241 1157.061279 1151.892578 1147.627319 1145.467163 1143.88501 1143.182739 1142.760498 1147.027832 1157.410767 1160.744385 1166.187866 1171.441406 1175.967896 1181.649658 1186.151001 1190.736328 1195.109497 1197.948364 1202.620728 1208.223145 1213.115601 1217.713745 1221.643066 1225.643066 1228.039185 1233.957886 1236.348267 1235.773438 1243.796265 1236.551514 1224.681274 1236.956055 1244.445923 1247.440186 1247.163574 1241.13208 1234.189575 1228.524048 1224.182007 1227.377075 1229.085571 1229.635132 1230.138428 1231.223145 1239.831299 1243.80542 1250.525391 1257.292725 1257.882446 1256.943604 1267.056519 1277.596558 1285.315674 1292.274292 1299.965942 1305.105103 1303.89624 1301.128052 1302.958984 1306.182373 1307.523071 1307.201904 1297.645996 1290.192383 1293.682861 1295.69458 1296.359619 1293.931152 1286.199341 1275.40332 1263.39502 1258.892456 1250.440308 1246.359131 1240.924805 1233.065063 1227.098755 1219.78833 1213.647705 1208.388672 1205.537231 1202.384521 1199.652954 1197.136719 1193.473511 1187.276367 1182.91333 1181.755615 1186.055908 1194.330811 1197.390137 1197.597778 1198.389404 1197.190918 1193.938721 1189.135132 1184.741577 1183.68689 1178.060303 1177.421021 1181.438599 1186.130737 1194.13208 1204.411987 1212.027222 1219.335938 1221.43103 1225.327881 1235.760864 1247.144653 1258.339722 1266.529053 1269.650146 1267.669434 1264.050781 1261.199829 1259.447144 1252.575562 1243.186523 1231.379883 1225.825928 1220.108643 1214.597412 1208.694092 1204.969238 1201.27417 1197.6521 1194.75415 1195.112671 1196.227905 1191.532837 1189.946533 1193.976929 1190.538452 1183.110229 1185.858032 1187.459961 1185.052734 1182.641724 1186.407227 1192.643799 1194.171631 1188.895996 1180.986694 1171.679077 1171.76062 1185.951172 1195.005249 1203.036133 1209.700928 1210.157227 1203.414185 1192.517822 1183.024414 1176.726074 1172.399048 1170.253174 1169.781372 1167.963867 1164.88562 1165.256104 1166.703369 1173.897949 1182.532715 1176.655396 1162.726807 1158.121826 1156.577271 1153.328857 1149.610474 1148.648071 1149.769531 1152.217041 1151.70166 1148.368652 1146.747437 1141.764648 1136.241577 1124.102539 1126.582153 1131.610718 1134.64917 1134.919312 1133.362305 1129.660889 1124.94751 1122.137451 1121.519897 1121.770508 1122.635864 1125.812988 1125.839355 1124.700928 1122.456543 1120.915283 1120.032471 1120.207886 1121.244019 1125.447998 1132.932373 1137.200806 1144.316406 1160.099731 1168.037231 1169.553833 1167.549561 1152.999268 1141.535767 1132.136963 1124.027832 1119.346069 1113.669678 1110.840576 1108.803345 1106.212402 1104.41626 1103.413452 1103.052734 1102.357056 1101.937866 1102.054199 1102.670288 1103.030273 1103.070923 1102.675415 1101.734009 1100.759766 1099.913086 1099.302368 1098.903687 1098.466675 1098.049927 1095.830933 1093.265869 1091.418091 +1219.607666 1222.73938 1224.368042 1225.525635 1226.258789 1225.928833 1224.810791 1222.75708 1221.41626 1222.273071 1222.84436 1222.50647 1222.069336 1220.83728 1218.063477 1213.486206 1209.931641 1206.667114 1205.574585 1204.782104 1204.032104 1201.555542 1199.161865 1199.192017 1198.378784 1196.705688 1194.737671 1193.107056 1191.635376 1189.768555 1187.192017 1184.661133 1182.133789 1177.495117 1172.740234 1168.625244 1161.083496 1158.83313 1153.456543 1148.641602 1146.279541 1143.822144 1140.921509 1138.984741 1138.125122 1139.311157 1141.278931 1143.446045 1144.980225 1147.897705 1161.299561 1168.483398 1168.177979 1166.87085 1166.248535 1165.227051 1162.320312 1156.803711 1156.890137 1172.700073 1184.190552 1201.531616 1208.975586 1210.377441 1211.677368 1212.786743 1213.449707 1213.812256 1213.831299 1213.534058 1213.017334 1212.253662 1211.40625 1210.443359 1209.535767 1208.176147 1206.153442 1202.145752 1196.608887 1187.542847 1181.901367 1197.814209 1205.186279 1207.525757 1207.774536 1207.807861 1207.893433 1208.690674 1209.520386 1209.926636 1209.984497 1209.846191 1209.500977 1208.692993 1208.05127 1208.072266 1208.188232 1208.377075 1208.502808 1208.491333 1208.314697 1207.796875 1205.799683 1203.664795 1201.303833 1198.862915 1196.004761 1192.431641 1187.703979 1182.94873 1184.375122 1187.711304 1190.904419 1189.280884 1184.541504 1191.245483 1196.275146 1196.600586 1197.260498 1198.549072 1200.25354 1202.550537 1204.683594 1205.988892 1206.4729 1206.61438 1206.541138 1206.289551 1205.952271 1205.417236 1204.918457 1204.694336 1204.597046 1204.577271 1204.665161 1204.867676 1205.242798 1205.59375 1205.692383 1205.296753 1204.602417 1203.944824 1203.599976 1203.194214 1202.826538 1202.625977 1202.672119 1202.989746 1203.245605 1202.842651 1201.452881 1199.900879 1198.631836 1198.556763 1199.886475 1201.381836 1203.100342 1204.980591 1206.767822 1208.237183 1210.333008 1213.481323 1215.796387 1217.027832 1218.571167 1224.766235 1232.733154 1229.658447 1225.730713 1221.92041 1218.881348 1219.784302 1231.125366 1243.941895 1245.154907 1234.453613 1226.437988 1222.023926 1218.213379 1214.847778 1212.08252 1209.798828 1207.336304 1204.354492 1202.098755 1202.441162 1203.7146 1205.636963 1207.629761 1208.165405 1208.31958 1208.257446 1207.958618 1207.508789 1206.974121 1206.665894 1206.540161 1206.388306 1206.402344 1206.723022 1206.900146 1206.624756 1206.239746 1205.898682 1205.746216 1205.619385 1205.602783 1205.565308 1205.644531 1205.665405 1205.651733 1205.571777 1205.429199 1205.237061 1204.877319 1204.407837 1203.945435 1203.373413 1202.836304 1202.278809 1201.653809 1200.907715 1200.306396 1199.776245 1199.294312 1198.864258 1198.416382 1197.802002 1197.206177 1196.624756 1195.859253 1195.327637 1194.63855 1193.849365 1193.071533 1192.287109 1191.585938 1190.846313 1190.104126 1189.495728 1188.848877 1188.214966 1187.510254 1186.505249 1185.308594 1184.190674 1183.682983 1185.8396 1189.56958 1193.661377 1195.849121 1195.604126 1195.081421 1194.758301 1194.768555 1194.85498 1194.778442 1194.547974 1194.212036 1193.700806 1193.177612 1192.85022 1192.732056 1192.848267 1193.276245 1193.749146 1194.370117 1194.982056 1195.415894 1196.010132 1196.1875 1195.930298 1194.661377 1193.631592 1193.091431 1192.540039 1191.939941 1190.884644 1189.386963 1187.292847 1185.164429 1184.108765 1183.37915 1182.358765 1181.552612 1180.947266 1180.12915 1178.944824 1177.740479 1176.451416 1175.36731 1174.320923 1173.462891 1172.235596 1171.146606 1170.431641 1169.67749 1168.679199 1167.63855 1166.798096 1166.293091 1165.959473 1165.62854 1164.934448 1163.871826 1162.891846 1161.540039 1160.305176 1160.469604 1160.634644 1160.852539 1161.014282 1161.099487 1161.311523 1161.685059 1162.095947 1162.423828 1162.852417 1163.199219 1163.461548 1163.786743 1164.07019 1164.120605 1163.995361 1163.649902 1163.46521 1163.190308 1162.880859 1162.419678 1162.139526 1161.892822 1161.664795 1161.499146 1161.187866 1160.852417 1160.456421 1160.070801 1159.562012 1158.771851 1158.305542 1158.439575 1158.435547 1158.003174 1157.424438 1157.08667 1156.936157 1156.818237 1156.85144 1156.807861 1156.679565 1156.528687 1156.537842 1156.650635 1156.966919 1157.385986 1157.817749 1158.53064 1159.199829 1159.638794 1159.816406 1159.731689 1159.628784 1159.33313 1159.032471 1158.765137 1158.504028 1158.312012 1158.369873 1159.172241 1160.407959 1161.836792 1163.181763 1164.826416 1166.853149 1168.882935 1165.793579 1157.243164 1152.335083 1148.241821 1145.945923 1144.810425 1143.982544 1143.595581 1143.238647 1147.171509 1156.46875 1163.39563 1169.436523 1175.867065 1183.075806 1185.883057 1187.966187 1190.685059 1193.584961 1195.471313 1203.900269 1207.397949 1212.765869 1218.363647 1217.88562 1220.617432 1228.743286 1229.725586 1229.556641 1234.697144 1231.544189 1217.699829 1231.090576 1233.647949 1238.990356 1238.415405 1232.379272 1224.636475 1218.499512 1221.355957 1234.6604 1241.002197 1242.637817 1243.31958 1245.006836 1244.597412 1242.697144 1242.849854 1244.607666 1252.34375 1255.417603 1267.931641 1274.797974 1280.049438 1287.189209 1290.668335 1292.757812 1290.61792 1294.405396 1296.431641 1298.427002 1300.950195 1301.175049 1293.959351 1282.560425 1280.658813 1283.409302 1281.496216 1277.24585 1273.94165 1266.697632 1251.368164 1246.351196 1241.123169 1232.046265 1229.308838 1224.297119 1219.303467 1214.650879 1207.735229 1205.411011 1203.164185 1200.213135 1196.670044 1195.1427 1190.956421 1183.820435 1181.900269 1189.597412 1198.190674 1201.704468 1203.797363 1204.988403 1205.004028 1201.732178 1198.60022 1193.74292 1190.185181 1188.036377 1184.473755 1176.76062 1178.898804 1181.046997 1186.745605 1193.595947 1200.469482 1206.922119 1212.612671 1222.305054 1232.17334 1239.989258 1248.13208 1256.222412 1256.974609 1252.338623 1248.09082 1250.443604 1253.520386 1252.165405 1247.109375 1238.578003 1229.409058 1221.157715 1216.49707 1209.996338 1205.825073 1201.07605 1195.561523 1194.938354 1198.124634 1198.438477 1194.268311 1194.024414 1197.22229 1195.932495 1190.450317 1190.584961 1191.187134 1189.522339 1188.289429 1190.728271 1196.465088 1196.949219 1192.607544 1183.188721 1174.809448 1169.765381 1186.097778 1196.509399 1206.835083 1210.099976 1210.887695 1204.609375 1192.242798 1182.541626 1177.888916 1175.106812 1175.109619 1175.041504 1172.874634 1171.592285 1175.0979 1181.90625 1185.164185 1183.097168 1182.470947 1175.22168 1172.437256 1166.159058 1161.671753 1159.459229 1158.781128 1159.829468 1161.567261 1158.192749 1150.409912 1146.535522 1135.67627 1128.203003 1128.063965 1134.740356 1138.219116 1138.938843 1137.253906 1134.710571 1131.962036 1130.371094 1128.494873 1129.210083 1129.988892 1132.534912 1133.081543 1130.709961 1127.453125 1123.38269 1121.042114 1120.27771 1120.610229 1122.392944 1130.296265 1140.781494 1149.793579 1151.048218 1158.90686 1173.175537 1181.916504 1174.82959 1157.818237 1146.901123 1136.341064 1128.974243 1123.654907 1118.646606 1114.203247 1110.162354 1107.981689 1106.681641 1106.636475 1107.570679 1107.869263 1107.881226 1107.151978 1106.587646 1106.83728 1106.307739 1104.314453 1102.385864 1100.817749 1099.882446 1099.28418 1098.908569 1098.035156 1097.240723 1095.967529 1094.852661 1093.921387 +1223.839233 1226.783691 1228.570801 1229.482056 1229.254395 1227.907349 1226.75354 1226.161987 1225.498657 1225.64209 1225.566162 1224.392944 1222.727539 1220.835815 1217.591309 1214.035156 1209.220215 1207.104736 1208.382202 1209.288818 1208.579834 1206.143799 1203.239624 1201.748169 1200.465088 1198.797485 1196.815063 1195.058228 1193.244019 1191.008057 1186.572266 1182.382812 1180.388184 1175.812378 1170.307373 1167.796143 1164.458374 1161.743408 1157.854126 1151.447754 1147.485352 1144.244385 1141.192139 1139.278198 1139.077026 1140.642822 1142.38855 1144.512085 1148.194336 1155.391357 1167.453003 1173.465698 1171.42334 1169.141479 1168.941162 1168.922607 1165.766846 1158.837524 1157.265259 1170.741211 1185.082397 1200.518433 1209.122437 1210.5625 1211.863525 1212.791992 1213.479004 1213.903809 1214.168457 1213.996704 1213.553711 1212.814575 1211.866211 1210.709961 1209.14624 1206.600708 1204.966675 1201.108032 1194.200195 1190.467896 1183.354736 1198.412842 1207.533569 1209.453979 1209.942383 1210.083008 1210.162109 1210.203125 1210.43689 1210.688721 1210.706543 1210.519897 1210.162842 1209.600708 1209.045898 1208.826172 1208.919189 1208.876099 1208.816528 1208.722778 1208.334717 1207.150024 1205.195923 1203.231812 1201.064697 1198.546997 1196.026001 1192.186768 1187.823853 1183.731567 1186.83313 1192.434326 1196.040771 1196.999146 1189.134033 1189.452393 1196.442627 1196.869385 1196.160156 1196.26416 1198.952637 1202.915771 1206.391968 1207.10498 1207.501709 1207.619385 1207.590088 1207.283447 1206.921509 1206.262207 1205.764526 1205.646729 1205.512573 1205.530396 1205.583618 1205.820068 1206.303345 1207.035156 1207.239502 1206.977051 1206.381104 1205.718872 1205.010742 1204.503052 1204.084351 1203.946045 1204.093384 1204.478271 1205.230103 1205.628052 1204.511597 1202.26062 1200.312378 1199.284668 1199.678833 1201.252441 1203.014404 1205.574829 1207.65979 1209.741333 1211.764893 1214.339111 1216.3573 1217.32605 1218.993408 1226.138672 1233.193237 1231.474609 1227.484131 1222.932007 1218.995972 1218.830444 1230.800659 1242.848511 1252.162598 1241.27002 1233.859253 1225.918457 1218.991943 1215.836914 1212.905518 1210.238159 1207.546875 1204.984741 1202.885254 1202.684937 1204.134521 1206.047485 1207.636597 1208.280396 1208.386353 1208.390015 1208.10144 1207.492065 1207.126465 1207.24292 1207.178589 1206.827515 1206.720825 1207.288696 1207.730103 1207.262329 1206.688965 1206.428589 1206.202637 1206.215332 1206.204834 1206.207764 1206.231323 1206.389038 1206.368042 1206.366333 1206.231934 1206.039673 1205.737305 1205.245361 1204.677002 1204.130737 1203.531372 1202.875 1202.183594 1201.402222 1200.858521 1200.221313 1199.708374 1199.265747 1198.771729 1198.174072 1197.521118 1196.765747 1196.18457 1195.689453 1195.032593 1194.265015 1193.383179 1192.619873 1191.878418 1191.262451 1190.648315 1190.091187 1189.520386 1188.859863 1188.226929 1187.218994 1186.08667 1185.002319 1184.469238 1184.507202 1188.071045 1191.857544 1194.691284 1195.858032 1195.557495 1195.21582 1195.4552 1195.549927 1195.398315 1195.222534 1194.921265 1194.400024 1193.713989 1193.297485 1193.15332 1193.282104 1193.656372 1194.23999 1194.774048 1195.156494 1195.313965 1195.672119 1196.398315 1196.368042 1195.305908 1194.702881 1194.235962 1194.130127 1193.733643 1192.825439 1191.182495 1189.407471 1187.399414 1185.894531 1184.808594 1183.649902 1183.278931 1182.639404 1181.460327 1180.09375 1178.723877 1177.483276 1176.411011 1175.409424 1174.416138 1173.459839 1172.455322 1171.575684 1170.86438 1169.936646 1168.708008 1167.826782 1167.02771 1166.702637 1166.316895 1165.596069 1164.724121 1163.713013 1162.673218 1161.592407 1161.679443 1161.937866 1162.101562 1162.214111 1162.324463 1162.502686 1162.785645 1163.165161 1163.610962 1164.096313 1164.574707 1164.994751 1165.308472 1165.722778 1165.796265 1165.640747 1165.454468 1165.060547 1164.841064 1164.461182 1163.916992 1163.414307 1162.946777 1162.493896 1162.13269 1161.593018 1161.079834 1160.50708 1160.005859 1159.213989 1158.668701 1158.701904 1159.062744 1159.106201 1158.536133 1157.876465 1157.562866 1157.451416 1157.368896 1157.53186 1157.506104 1157.484009 1157.157349 1157.132935 1157.190674 1157.388428 1157.713745 1158.112671 1158.721802 1159.419434 1159.907715 1160.088501 1160.050659 1159.937622 1159.631836 1159.323364 1159.127563 1158.942993 1158.83252 1158.665039 1158.842407 1159.50354 1160.45874 1161.61853 1162.599243 1163.780029 1164.271973 1161.995728 1157.585083 1153.018921 1148.669312 1146.192749 1145.231934 1144.552368 1144.182861 1143.889404 1146.169678 1153.473145 1160.327759 1168.229248 1174.103638 1180.082642 1184.001709 1184.65271 1184.24231 1190.753906 1196.588501 1202.914673 1208.510986 1206.820923 1211.22229 1213.73938 1216.228516 1221.836914 1223.276489 1219.187622 1226.429321 1223.945923 1216.724121 1222.351807 1219.746216 1229.670898 1228.122437 1221.365601 1212.095703 1219.545898 1236.062134 1245.75647 1251.552979 1258.543823 1253.709473 1252.894287 1252.99585 1251.06543 1249.601318 1252.378174 1256.453735 1257.4552 1270.083252 1277.852661 1282.156616 1282.540039 1281.888428 1279.722656 1279.183228 1284.114136 1286.688232 1290.978149 1291.909424 1295.150635 1291.549927 1279.479126 1270.997192 1270.604736 1267.795288 1264.825806 1260.283813 1252.335693 1243.90271 1234.29895 1230.408569 1226.201416 1221.528564 1218.256958 1215.989014 1212.104248 1207.677002 1204.393433 1201.425049 1198.643677 1195.654053 1193.859375 1193.873901 1192.316528 1190.553345 1194.260376 1201.195435 1206.407715 1209.812012 1211.467041 1210.944946 1206.402344 1202.53833 1197.692017 1194.791138 1193.146118 1189.683228 1184.64624 1179.580688 1178.737427 1182.579712 1187.68103 1192.009644 1201.765747 1210.855957 1217.415405 1225.927856 1233.928223 1240.644043 1247.151001 1246.127441 1239.122803 1232.379883 1235.271606 1238.151001 1241.198975 1243.25293 1238.74646 1231.438599 1224.687622 1220.645386 1213.11145 1207.592041 1200.809814 1195.299438 1198.648926 1205.055176 1201.074219 1194.792969 1195.906494 1198.983765 1196.755371 1193.465454 1194.524902 1195.848877 1194.934082 1192.865479 1194.778931 1197.748291 1198.650146 1196.152222 1189.723511 1181.950317 1170.828613 1179.578491 1188.773438 1197.987549 1209.682007 1211.275391 1206.420532 1193.345947 1185.369263 1187.795654 1188.632446 1183.912598 1181.810425 1179.960815 1181.248413 1184.58374 1183.727051 1179.640137 1176.214111 1176.702515 1176.122925 1174.763062 1173.807983 1172.415405 1172.005981 1169.550415 1163.036987 1156.989624 1149.078735 1141.363037 1132.71228 1128.400269 1131.642822 1137.873047 1142.467285 1145.029907 1144.252808 1136.454346 1133.709717 1132.918823 1134.484619 1137.272339 1138.228638 1139.71521 1142.800537 1142.442261 1136.233154 1131.377563 1122.959351 1120.202393 1120.232422 1120.871094 1125.866821 1134.218994 1145.790161 1156.533325 1162.432251 1165.749756 1174.774048 1187.012207 1176.103149 1161.089111 1148.767212 1137.456909 1130.612183 1125.371216 1120.9729 1119.515381 1112.215332 1109.926392 1108.584106 1109.002563 1110.424316 1111.678589 1112.147095 1110.795898 1110.508179 1110.330688 1108.767822 1104.589111 1102.244873 1100.348022 1098.844238 1098.872925 1098.782349 1098.431641 1097.948853 1097.995239 1097.607788 1096.510376 +1230.228882 1231.683594 1232.546997 1232.70813 1231.770996 1229.850342 1228.874023 1229.454956 1229.349854 1229.474854 1228.518066 1225.988892 1222.797119 1220.082764 1218.066406 1216.432251 1215.705566 1213.516968 1213.630127 1212.327148 1210.357788 1207.375 1204.909058 1203.984375 1202.588013 1200.843872 1199.123291 1197.398438 1195.678467 1192.851807 1188.080566 1184.86792 1181.975708 1176.624634 1172.551392 1168.72998 1165.398682 1161.632812 1157.147461 1152.182617 1147.032227 1144.190186 1141.234741 1139.266357 1139.548584 1140.955688 1142.814819 1144.765381 1147.66333 1161.313599 1172.912476 1178.393433 1176.09375 1172.839233 1172.361572 1172.793335 1171.908203 1159.033081 1163.564453 1177.360229 1191.273682 1205.332275 1208.762817 1210.728027 1211.997559 1212.987183 1213.61853 1214.080444 1214.393921 1214.343018 1213.942993 1213.244751 1212.34375 1210.944702 1209.310791 1208.117432 1207.788818 1207.40686 1206.531738 1196.223389 1191.729614 1194.677612 1205.415161 1210.209473 1211.163818 1211.252075 1211.455688 1211.52478 1211.502319 1211.441772 1211.433472 1211.194458 1210.860229 1210.36853 1209.817749 1209.510986 1209.44397 1209.43103 1209.174805 1208.750244 1207.781982 1206.313477 1204.87915 1203.081421 1200.771973 1198.510986 1196.074951 1192.412964 1187.921875 1184.680176 1189.287476 1193.918335 1196.907104 1197.575684 1194.197754 1188.577271 1188.868164 1193.339966 1195.283936 1194.220337 1196.1521 1202.881714 1207.828979 1208.248291 1208.505859 1208.72876 1208.706421 1208.404541 1207.683716 1206.963135 1206.423706 1206.500244 1206.67627 1206.653564 1206.604126 1206.660767 1207.330444 1207.802979 1208.68042 1208.661011 1207.949585 1206.921509 1206.360962 1205.937988 1205.390991 1204.988159 1205.134399 1205.878662 1206.792969 1207.920654 1207.237427 1204.855835 1202.390991 1200.70459 1199.822388 1200.974121 1202.796753 1205.404907 1207.767212 1209.964844 1213.041504 1217.201782 1219.202026 1219.181885 1219.049561 1226.232422 1233.22583 1233.278809 1229.285034 1225.111816 1219.493774 1222.207275 1230.876343 1241.721436 1257.877563 1245.971802 1237.973877 1230.003662 1219.399414 1216.549438 1213.543335 1210.431641 1207.527588 1205.447632 1203.359741 1202.838623 1204.374634 1205.996216 1207.468506 1208.182129 1208.444214 1208.47522 1208.231445 1207.481934 1207.503052 1207.771606 1207.692627 1207.301025 1207.095703 1207.703613 1208.088013 1207.650513 1207.122925 1206.685791 1206.735229 1206.849976 1206.940186 1206.814819 1206.790405 1206.990112 1207.075195 1207.12793 1207.103638 1206.872681 1206.567749 1206.05542 1205.361328 1204.736816 1204.146118 1203.409912 1202.637573 1202.006104 1201.361816 1200.65979 1200.143799 1199.633789 1198.995239 1198.392212 1197.735718 1197.127808 1196.461548 1195.934082 1195.317383 1194.607056 1193.695068 1192.934814 1192.197021 1191.724609 1191.311768 1190.861816 1190.307007 1189.917603 1189.256104 1188.197266 1187.101318 1186.028809 1185.384033 1184.897461 1186.704712 1189.765015 1192.449097 1194.070801 1195.368896 1195.583374 1195.667969 1195.97229 1195.804077 1195.625366 1195.461792 1195.053955 1194.197998 1193.76709 1193.568237 1193.744141 1194.001099 1194.687378 1195.185181 1195.633911 1195.942993 1196.289429 1196.918335 1196.977295 1196.350586 1195.689697 1195.438354 1195.540161 1195.383545 1194.597656 1193.161255 1191.657715 1189.691528 1187.879395 1186.3302 1185.280762 1184.657715 1183.681274 1182.398071 1181.122437 1179.794556 1178.49231 1177.39917 1176.418945 1175.357788 1174.314575 1173.375488 1172.564087 1171.661011 1170.866455 1169.904297 1168.763306 1168.010742 1167.365479 1167.115723 1166.584106 1165.45166 1164.427246 1163.27356 1163.035522 1163.051392 1163.193115 1163.349243 1163.512085 1163.531128 1163.707275 1163.906616 1164.258057 1164.675171 1165.264404 1165.868286 1166.471313 1167.15979 1167.543335 1167.694946 1167.478271 1167.190674 1166.884766 1166.554199 1166.177368 1165.521484 1164.885376 1164.168091 1163.43042 1162.594849 1161.805908 1161.079834 1160.42627 1159.612793 1158.81543 1158.685669 1158.969116 1159.428467 1159.425049 1158.811646 1158.159912 1157.846924 1157.893921 1158.083618 1158.318848 1158.283691 1158.181885 1157.859741 1157.613403 1157.668457 1157.895874 1158.317749 1158.63208 1159.050293 1159.781616 1160.201782 1160.348511 1160.351929 1160.254395 1159.928467 1159.757446 1159.581787 1159.383545 1159.234985 1159.103027 1159.06189 1158.740845 1159.068115 1159.86438 1160.265503 1159.963257 1161.640381 1160.532959 1157.782837 1153.226562 1148.963623 1146.358643 1145.492065 1144.871948 1144.487061 1144.60144 1145.398926 1149.759277 1158.398682 1163.14209 1169.424683 1174.170288 1176.462158 1180.425415 1184.571899 1188.729126 1194.072998 1198.934692 1203.209717 1204.354248 1209.170288 1209.922241 1206.627808 1217.258911 1220.658081 1216.656128 1219.470947 1217.47583 1208.723389 1211.268311 1212.138428 1216.325562 1210.340454 1205.25708 1210.561646 1224.662964 1234.037842 1241.705078 1247.447144 1253.316528 1253.16687 1255.410767 1258.200317 1258.07312 1257.368286 1260.825073 1266.235962 1270.690186 1269.155029 1269.695068 1272.63501 1272.654297 1270.160645 1267.681641 1265.993286 1271.591553 1273.378906 1277.594604 1282.551758 1285.557495 1283.587158 1271.65918 1262.966919 1261.165039 1258.258179 1253.491699 1245.600586 1238.914185 1231.967773 1228.221069 1224.175781 1221.555908 1218.282593 1215.810669 1213.559204 1211.060303 1208.037109 1203.944092 1199.890137 1197.41333 1194.883423 1194.91687 1196.645264 1197.817749 1196.498657 1194.375732 1203.971558 1210.286133 1214.558228 1217.340698 1218.723022 1211.799316 1207.030151 1203.298218 1200.716553 1198.708374 1196.343872 1192.050293 1186.93396 1181.121338 1180.386475 1182.806641 1189.493896 1197.805298 1205.138672 1213.224365 1221.559326 1228.28772 1232.808838 1235.305908 1232.334595 1227.766602 1225.702637 1225.5896 1225.721558 1226.553955 1230.095703 1231.316406 1227.953857 1223.544067 1219.359253 1209.856323 1206.443115 1201.880249 1196.633179 1207.285156 1209.700806 1204.940186 1194.915161 1199.747803 1202.742676 1198.957275 1194.266846 1196.860107 1198.814209 1198.153564 1194.694214 1197.043579 1200.738892 1201.437256 1199.463867 1195.47168 1186.823853 1179.374023 1179.629028 1185.453491 1195.158203 1209.077759 1211.261963 1209.100342 1196.04834 1199.684814 1200.975586 1199.139893 1196.478271 1189.86731 1186.191284 1183.956787 1182.016235 1175.5896 1170.616699 1168.173706 1169.960083 1171.169312 1171.827026 1172.555298 1171.612183 1170.05249 1163.729248 1152.14856 1141.87793 1134.443237 1131.704102 1133.863037 1140.055176 1145.134766 1149.537598 1152.972168 1153.89563 1146.8396 1137.37561 1133.026367 1134.606567 1141.97998 1144.677368 1145.451538 1147.104736 1149.302246 1149.29895 1142.553833 1134.681641 1122.46106 1120.231689 1120.245239 1122.15332 1131.157104 1138.884277 1148.060425 1157.835327 1165.755493 1173.849854 1181.124756 1187.232666 1175.795898 1158.089844 1146.226074 1135.466064 1129.740479 1125.417358 1121.570312 1122.432983 1116.902222 1111.880371 1110.627197 1111.427368 1113.024902 1114.629639 1113.868896 1110.706909 1110.65979 1108.856689 1105.53125 1102.556763 1100.345215 1097.886841 1097.830688 1097.950928 1098.423218 1098.383057 1098.144897 1098.237671 1098.234253 1097.925781 +1233.336426 1233.923096 1234.532227 1234.658203 1233.771362 1231.618164 1230.639526 1231.755127 1232.844849 1232.607178 1230.929688 1227.721802 1223.107178 1219.647949 1218.615845 1219.303833 1220.735229 1221.2229 1219.555298 1216.349121 1211.9104 1207.250122 1207.449341 1205.976807 1204.44165 1202.954956 1201.191895 1199.314209 1196.865356 1193.201416 1189.865479 1186.338013 1182.233398 1177.164551 1173.261353 1169.220337 1165.565552 1161.35144 1157.307129 1154.674316 1147.672241 1144.495361 1141.327271 1139.345825 1140.293091 1141.611694 1143.443237 1145.588257 1155.364624 1166.384766 1181.598877 1185.318115 1182.2854 1178.706909 1176.6427 1175.181763 1172.640015 1160.482544 1172.084961 1181.869995 1194.715332 1207.732178 1209.456909 1211.086182 1212.353882 1213.227905 1213.962646 1214.434937 1214.762695 1214.776733 1214.405151 1213.723755 1212.790039 1211.514526 1210.338501 1209.358032 1208.982544 1208.877563 1208.714111 1207.870117 1196.582153 1192.984131 1199.31189 1209.112061 1211.936157 1212.233276 1212.252563 1212.310181 1212.294312 1212.154053 1212.044312 1211.866577 1211.526733 1211.066772 1210.531616 1210.22998 1210.067139 1209.822388 1209.391357 1208.835693 1207.742798 1206.789917 1205.21814 1202.959961 1200.60498 1198.374756 1196.332031 1192.571533 1188.153931 1184.986206 1195.085938 1196.430542 1197.654541 1198.25354 1197.338745 1196.164673 1194.777466 1196.625366 1196.896851 1196.929077 1195.796143 1200.148193 1207.959717 1208.748657 1209.33374 1209.734131 1209.773071 1209.523926 1208.838013 1207.547729 1207.112061 1207.32666 1207.702271 1207.861572 1207.526001 1207.412476 1208.46814 1209.486572 1210.324829 1210.434204 1209.767456 1208.479004 1207.744751 1207.275879 1206.791382 1205.954346 1205.895142 1206.830566 1207.975708 1209.384521 1208.784912 1206.959473 1204.248413 1202.139893 1201.089722 1200.653564 1202.553223 1204.872559 1207.411133 1210.336304 1213.751221 1218.175537 1221.618896 1223.493164 1225.148315 1228.487671 1234.148193 1237.450439 1232.881714 1230.06958 1221.966919 1225.408325 1235.107788 1241.824585 1254.188721 1254.179321 1241.219116 1232.495361 1221.902466 1217.837891 1214.575806 1210.861816 1207.723267 1205.95459 1204.245728 1203.136719 1204.003418 1205.830078 1207.252808 1208.029663 1208.589722 1208.667236 1208.489014 1207.746704 1207.920532 1208.150513 1208.243286 1207.700684 1207.516357 1208.057983 1208.375854 1207.932983 1207.218262 1207.109619 1207.294556 1207.608032 1207.643311 1207.401733 1207.304565 1207.598145 1207.796509 1207.92981 1207.7854 1207.608398 1207.285645 1206.747437 1206.023804 1205.26709 1204.632812 1204.002563 1203.348389 1202.630127 1201.930176 1201.296143 1200.649292 1199.991089 1199.373535 1198.703491 1198.129761 1197.489502 1196.928589 1196.278687 1195.58374 1194.793213 1193.960693 1193.24231 1192.621216 1192.175293 1191.805908 1191.663574 1191.383789 1191.104248 1190.48999 1189.503906 1188.383911 1187.101807 1186.296875 1185.672241 1185.6427 1188.407104 1191.12561 1192.80835 1194.237671 1195.574097 1196.087646 1196.255249 1196.186646 1195.990967 1195.782593 1195.469238 1194.560181 1194.109375 1194.058716 1194.111084 1194.35083 1194.836426 1195.500366 1196.133301 1196.633057 1197.196289 1197.501343 1197.52771 1197.238525 1196.63269 1196.392456 1196.391846 1196.234619 1195.874146 1195.216675 1193.734985 1191.799072 1189.704468 1188.090576 1186.640503 1185.673462 1184.314209 1183.009277 1181.796509 1180.511841 1179.51709 1178.420044 1177.150757 1176.097656 1174.996948 1174.082642 1173.283569 1172.442749 1171.559937 1170.617065 1169.62561 1168.002441 1168.202881 1168.088013 1167.720581 1166.457642 1165.19397 1164.497437 1164.354248 1164.449097 1164.486206 1164.749023 1164.8479 1164.838379 1164.871216 1165.068359 1165.358521 1165.753784 1166.222046 1166.987549 1167.865234 1168.798218 1169.422607 1169.428589 1169.384033 1169.01416 1168.456177 1168.228516 1167.924805 1167.51062 1166.588379 1165.467896 1164.211914 1162.880249 1161.792969 1160.904907 1160.021729 1158.80249 1158.739136 1158.920898 1159.317383 1159.592163 1159.504395 1158.968994 1158.393799 1158.192627 1158.430542 1158.695312 1158.86084 1158.944336 1158.912109 1158.646973 1158.157837 1158.130981 1158.485474 1158.839355 1159.167603 1159.747314 1160.220581 1160.579712 1160.592773 1160.649536 1160.444214 1160.192505 1159.985107 1159.721313 1159.566772 1159.386719 1159.307983 1159.210938 1158.755005 1158.180054 1158.401123 1158.543335 1158.139038 1158.927979 1159.237793 1157.913452 1153.623169 1149.535522 1146.787231 1146.026611 1145.220093 1144.715088 1146.319458 1148.360229 1149.107788 1155.069336 1158.026733 1163.929199 1167.515381 1172.880371 1177.824097 1182.317139 1185.417358 1190.019165 1195.019897 1198.717529 1196.237915 1204.366211 1207.428101 1201.83313 1210.246216 1212.619263 1208.37439 1211.135498 1211.436401 1209.037598 1200.020264 1207.74292 1206.978882 1193.566528 1206.131714 1217.474731 1222.554077 1232.307861 1237.61438 1242.958374 1242.883301 1243.45105 1249.140747 1253.074829 1257.574707 1259.559082 1264.880859 1270.2854 1264.660278 1256.334961 1257.060181 1259.460571 1260.192749 1258.454102 1257.36084 1253.157104 1255.255127 1264.286377 1266.759033 1269.857788 1270.071777 1269.088623 1262.115723 1253.488647 1251.594482 1248.773071 1243.822876 1237.498169 1231.299683 1227.081055 1223.700317 1219.448975 1217.558716 1215.79834 1213.666748 1211.736572 1209.742676 1207.012207 1202.673706 1198.320068 1195.236816 1194.574341 1195.893188 1198.799805 1200.4729 1199.842163 1199.711792 1206.990967 1213.405884 1218.804199 1223.246338 1224.8396 1217.809082 1212.458252 1208.240845 1206.162109 1203.856812 1200.848877 1197.55896 1193.354614 1186.828979 1180.613159 1181.231323 1184.388184 1193.452148 1201.907715 1210.216309 1216.5896 1220.989746 1224.465454 1225.495972 1224.746704 1220.242188 1220.725098 1219.889526 1218.030273 1217.425781 1222.275024 1226.247437 1224.105347 1220.0625 1218.184448 1213.154907 1209.157959 1206.991943 1204.769775 1209.332275 1211.583984 1208.48938 1201.989258 1206.443481 1208.295776 1205.519043 1198.194824 1200.357544 1203.078125 1203.407593 1201.468262 1203.276123 1205.690552 1205.411499 1202.174927 1197.538696 1192.105957 1185.667358 1181.375 1183.627686 1190.239014 1198.829102 1208.897949 1209.285645 1206.286621 1209.888916 1209.883667 1206.349976 1199.536377 1192.901367 1187.871338 1181.830811 1178.657715 1172.940063 1169.358521 1162.734985 1159.809448 1158.864624 1157.718872 1155.239746 1151.428345 1150.825928 1146.822266 1140.820801 1135.404541 1136.226807 1140.450439 1147.185791 1152.391846 1155.697266 1159.941406 1161.469849 1160.604126 1146.836548 1135.363892 1134.239136 1145.792603 1149.805664 1150.207275 1149.875854 1150.106323 1150.442261 1147.541382 1140.448486 1133.241577 1122.553833 1120.276978 1121.009277 1122.750122 1130.102417 1135.267944 1144.542114 1152.750854 1160.69165 1171.081177 1179.979004 1186.917725 1171.190063 1155.840454 1141.384766 1132.056274 1127.338257 1123.161987 1120.40332 1118.262451 1114.223755 1109.885254 1110.404419 1112.005371 1115.459717 1118.542725 1118.856079 1109.063354 1107.141724 1101.943848 1098.539917 1097.813843 1098.044189 1097.860107 1097.856689 1097.841797 1098.079834 1098.25647 1098.295288 1098.337524 1098.348145 1098.325439 +1235.748657 1236.108398 1236.361938 1236.227661 1235.194336 1233.003296 1231.911743 1234.005127 1235.123657 1234.798462 1232.879395 1228.622803 1222.576416 1219.373291 1219.932861 1222.302368 1223.812988 1224.370361 1222.731689 1219.751221 1215.57605 1213.025391 1211.147705 1208.470337 1206.514526 1205.169434 1203.892944 1201.648926 1197.708618 1194.720215 1191.614624 1186.237305 1181.571777 1177.014038 1171.944702 1169.158203 1166.604858 1163.896729 1161.082764 1160.018555 1151.7771 1145.14563 1140.75415 1140.19873 1140.993042 1142.477417 1144.422241 1147.367798 1161.81543 1171.115112 1188.678711 1191.894531 1187.369141 1182.033081 1179.471191 1176.968506 1172.532837 1162.601807 1174.81958 1182.62207 1195.201782 1207.970337 1210.304077 1211.440674 1212.806763 1213.748291 1214.374756 1214.934326 1215.152466 1215.14917 1214.775146 1214.155396 1213.255737 1212.382812 1211.392456 1210.644409 1210.062622 1209.844116 1209.360352 1208.334229 1198.033325 1194.661011 1193.607056 1200.656616 1209.898315 1212.039917 1212.260376 1212.584961 1212.679199 1212.594971 1212.562134 1212.422363 1212.066895 1211.676636 1211.137329 1210.742554 1210.551514 1210.175903 1209.644897 1208.971313 1208.39502 1207.862427 1205.703979 1202.944824 1200.442261 1197.899536 1195.400757 1191.205078 1187.527588 1187.596558 1195.153687 1197.170166 1198.484863 1199.143921 1199.024292 1198.260498 1197.369507 1198.634155 1199.143799 1199.097534 1198.23584 1197.401611 1205.353027 1209.084839 1209.844116 1210.471924 1210.709961 1210.5625 1210.016968 1208.804321 1208.269897 1208.702026 1209.107422 1209.145264 1208.94104 1208.992432 1209.982422 1211.265259 1212.54541 1213.279663 1213.15625 1212.103394 1210.957642 1209.536255 1208.301636 1206.930664 1206.485352 1207.346313 1208.791138 1210.439819 1209.644897 1207.501465 1205.222046 1203.388916 1202.046875 1201.312988 1202.144775 1204.230591 1206.611816 1209.314453 1213.047119 1217.320435 1221.174927 1224.854736 1229.579102 1234.411743 1241.914795 1243.814697 1238.748169 1235.020142 1230.448486 1230.619385 1235.697632 1241.74646 1251.212646 1258.100586 1246.578003 1235.634277 1226.292236 1219.529541 1215.67627 1211.959351 1208.686646 1206.540771 1204.917969 1204.028442 1203.786621 1205.817383 1207.102051 1208.014648 1208.707275 1208.967896 1208.974121 1208.736084 1208.692139 1208.903198 1208.791382 1208.494995 1208.405151 1208.54187 1208.607544 1208.174683 1207.594971 1207.715576 1207.918091 1208.274902 1208.229858 1208.061035 1207.977905 1208.259033 1208.505005 1208.499756 1208.443604 1208.230713 1207.837524 1207.290283 1206.575806 1205.799805 1205.165283 1204.421143 1203.811646 1203.155396 1202.421631 1201.716309 1200.978638 1200.297241 1199.594116 1198.94458 1198.313477 1197.697144 1196.998779 1196.410278 1195.655884 1194.886597 1194.123413 1193.575928 1193.120605 1192.734375 1192.45752 1192.300537 1192.258423 1192.310913 1192.094116 1191.355591 1189.83252 1188.330933 1187.076294 1186.235107 1185.800903 1187.841797 1190.755493 1193.509766 1195.100586 1195.713867 1196.239258 1196.45813 1196.585205 1196.292236 1196.020752 1195.428711 1194.766846 1194.778076 1194.862183 1194.50647 1194.533203 1194.881348 1195.559814 1196.401611 1197.057373 1197.738647 1198.106934 1198.13208 1197.946777 1197.614014 1197.245728 1197.177979 1196.970947 1196.548096 1195.786011 1195.447754 1193.641357 1191.643555 1189.723267 1187.882446 1186.387207 1185.036133 1183.698853 1182.400513 1181.619995 1180.5448 1179.257568 1177.772095 1176.546143 1175.38623 1174.375854 1173.471313 1172.676758 1171.664795 1170.77832 1169.718872 1168.259277 1169.87915 1169.403564 1168.866455 1167.948242 1166.548462 1165.96814 1165.783691 1165.760864 1165.865723 1166.141602 1166.172729 1166.177368 1166.201782 1166.282837 1166.486206 1166.80542 1167.26709 1167.882202 1168.891235 1170.174805 1170.921387 1171.11792 1171.078979 1170.317749 1169.390503 1169.447754 1169.850586 1169.676025 1168.667969 1166.729614 1164.757446 1162.976562 1161.669067 1160.671753 1159.680542 1158.772827 1158.855225 1159.208374 1159.660156 1159.72229 1159.619019 1158.963745 1158.506226 1158.721436 1158.981079 1159.257446 1159.394165 1159.445801 1159.355103 1159.096313 1158.713745 1158.579468 1159.004517 1159.325439 1159.747559 1160.307739 1160.641968 1160.905762 1160.913086 1160.748901 1160.598389 1160.324097 1160.017944 1159.818604 1159.620361 1159.439331 1159.313354 1159.115479 1158.799194 1157.781494 1157.4646 1157.247192 1157.045654 1157.213257 1157.748291 1156.611572 1153.125854 1149.831421 1147.587158 1146.708496 1145.856445 1145.205566 1147.604248 1150.961792 1153.571533 1155.267944 1156.336304 1157.812866 1164.04187 1170.688843 1170.845947 1178.372192 1181.798462 1186.153687 1191.852051 1194.459106 1192.904785 1196.636597 1198.2677 1193.764771 1203.901855 1207.924683 1204.37146 1205.095215 1205.195923 1204.760864 1193.685547 1198.015381 1197.108276 1193.11377 1202.438965 1211.879639 1222.977539 1231.040649 1235.005127 1237.192627 1236.338013 1239.547119 1242.159424 1247.527222 1250.242188 1251.634277 1259.348511 1263.310669 1256.07373 1246.441162 1246.918823 1247.214966 1246.584595 1244.984741 1242.063232 1236.957397 1250.556274 1252.980103 1258.738403 1256.790527 1254.351196 1254.955444 1251.03479 1245.120972 1238.391357 1238.898682 1235.950684 1231.28125 1227.659546 1223.915039 1220.617065 1218.010986 1215.525757 1213.410767 1211.685791 1209.91626 1207.957764 1204.745117 1200.312012 1196.233765 1195.548096 1197.21936 1196.654175 1201.947144 1205.122681 1205.838135 1204.662354 1209.263184 1216.710083 1223.36438 1230.210327 1232.144897 1224.453735 1219.620972 1215.303589 1211.673828 1208.308838 1204.860718 1200.916016 1197.258667 1191.711426 1185.995361 1181.884155 1181.901123 1187.066406 1196.223633 1204.845093 1209.876587 1213.365356 1216.24939 1218.486816 1217.397949 1212.829102 1213.135742 1212.225586 1208.458618 1218.960693 1221.97229 1222.41333 1219.977905 1221.307495 1223.441895 1222.856934 1220.662354 1214.838501 1206.853149 1213.127563 1215.14209 1210.66272 1205.793579 1209.694946 1211.854248 1210.185425 1206.651489 1204.714722 1207.212769 1209.259033 1206.241089 1208.790771 1210.055786 1208.96936 1206.004517 1201.883789 1197.598145 1192.666626 1185.047852 1181.479492 1186.272095 1193.399536 1204.323608 1215.005371 1215.849487 1214.252319 1211.204834 1206.032959 1199.681152 1194.527466 1193.746582 1185.494507 1179.901733 1175.652222 1170.940552 1168.240967 1163.279907 1162.529053 1158.318726 1154.884155 1155.190063 1149.144287 1144.672607 1139.069824 1147.759277 1143.723877 1148.922119 1160.394287 1162.969849 1165.230225 1168.577515 1165.932983 1159.935425 1148.092651 1133.711182 1143.23645 1153.050293 1153.421753 1150.835205 1150.039429 1150.315552 1147.987793 1140.290405 1133.1073 1128.108887 1122.158569 1120.694702 1122.173218 1125.171753 1128.845703 1133.724731 1140.559814 1146.471069 1155.101074 1165.080933 1176.762085 1182.89856 1164.988892 1152.78064 1141.06897 1131.588623 1124.039795 1120.589844 1118.550659 1116.139526 1112.681763 1109.924072 1109.206421 1112.433105 1117.28772 1122.572388 1124.713989 1110.734985 1106.07251 1100.168457 1097.787598 1097.632202 1097.758667 1097.643799 1097.659058 1097.728638 1097.875366 1098.045166 1098.233887 1098.328613 1098.351929 1098.375977 +1237.938232 1238.347778 1238.370361 1238.041138 1237.146606 1236.172974 1235.773926 1236.690918 1237.32373 1236.512817 1234.046875 1229.970215 1222.671387 1221.195679 1224.56958 1227.357544 1228.168945 1227.553223 1224.25 1218.943726 1219.018677 1218.108276 1216.104004 1212.789307 1209.651978 1208.008667 1206.880859 1205.047729 1201.812256 1198.149658 1194.082031 1186.853638 1181.99585 1177.494995 1172.306396 1169.652954 1168.082886 1168.481689 1165.275269 1160.947876 1152.908936 1144.584595 1140.328369 1140.889893 1141.839478 1143.204712 1145.297485 1151.43811 1164.02356 1176.124878 1195.311523 1198.872559 1194.020874 1185.210938 1182.017212 1178.995239 1174.132324 1166.982422 1174.166748 1181.887573 1192.947266 1207.790405 1210.58252 1211.939209 1213.104492 1214.219727 1214.958008 1215.451538 1215.684082 1215.601807 1215.222534 1214.626709 1213.873901 1213.234009 1212.542114 1211.831665 1211.196777 1210.549927 1209.762695 1208.150757 1205.017822 1202.967896 1198.062622 1194.593628 1207.607666 1210.757812 1211.725464 1212.358398 1212.689697 1212.868652 1212.939453 1212.830322 1212.620972 1212.230713 1211.802612 1211.321533 1210.96814 1210.492798 1209.859619 1209.271729 1208.575806 1207.904785 1205.825317 1202.833496 1200.057495 1197.624512 1195.596924 1188.755493 1187.592651 1191.462402 1195.904175 1197.817383 1199.378784 1200.396973 1200.754395 1200.652466 1200.786011 1201.302734 1202.075073 1203.196777 1202.334595 1199.37085 1204.105957 1208.817017 1210.209717 1211.154297 1211.674927 1211.730103 1211.397827 1210.766846 1210.384766 1210.503906 1210.63208 1210.635376 1210.743774 1211.100586 1212.153442 1213.517944 1215.314209 1217.122314 1217.716919 1217.142578 1215.197632 1212.686035 1210.424072 1208.059204 1207.275146 1207.689209 1209.936768 1211.864014 1210.644287 1208.039673 1206.149658 1204.53064 1203.325317 1202.442139 1201.874512 1203.556274 1205.677734 1207.808594 1211.532104 1215.564209 1219.57666 1224.05481 1230.431763 1236.10376 1242.231812 1246.570679 1242.521606 1238.455566 1233.951172 1230.35022 1234.5896 1240.234009 1247.379761 1257.436646 1252.747314 1241.376953 1230.610596 1221.124146 1216.867554 1212.954346 1209.678467 1207.058105 1205.162964 1204.122681 1204.596191 1206.034912 1207.275879 1208.118896 1208.901611 1209.314575 1209.592773 1209.57019 1209.694214 1209.627197 1209.51062 1209.359131 1209.220093 1209.280396 1209.126953 1208.786011 1208.4375 1208.434692 1208.727173 1208.900635 1208.878418 1208.795532 1208.738647 1208.983765 1209.046631 1209.096313 1208.915894 1208.678589 1208.191162 1207.705811 1207.004517 1206.221313 1205.545776 1204.875854 1204.294312 1203.583374 1202.748657 1202.004883 1201.257324 1200.415649 1199.745728 1199.049194 1198.428345 1197.61438 1197.026367 1196.372803 1195.547974 1194.823364 1194.268799 1193.90332 1193.632935 1193.39978 1193.139404 1192.974731 1193.076782 1193.696289 1194.271729 1193.646729 1191.80835 1189.562988 1187.953125 1186.849487 1186.32251 1187.798462 1191.295654 1194.560425 1195.644531 1196.144653 1196.515991 1196.699097 1196.864624 1196.722168 1196.403198 1195.474609 1195.443604 1195.519409 1195.535767 1195.239136 1194.728271 1194.866211 1195.410278 1196.481934 1197.368042 1198.169434 1198.695557 1198.849121 1198.735962 1198.373291 1198.041138 1197.907104 1197.655396 1197.260742 1196.738647 1196.107422 1195.053833 1193.179565 1190.994995 1188.990601 1187.343994 1186.012207 1184.680786 1183.611328 1183.044189 1181.777832 1179.80188 1178.07251 1176.607544 1175.265747 1174.264893 1173.364258 1172.53833 1171.681641 1170.754517 1168.792969 1170.846802 1171.059448 1170.522583 1169.943726 1169.007568 1167.862427 1167.280884 1167.089722 1167.108521 1167.258545 1167.507202 1167.679688 1167.508545 1167.486206 1167.51001 1167.684204 1167.863647 1168.156982 1168.574341 1169.439087 1170.909424 1171.874878 1171.704346 1171.612671 1171.137573 1170.193481 1170.729004 1171.218384 1171.299683 1170.333008 1167.711426 1164.934937 1162.902222 1161.369019 1160.555786 1159.897583 1159.027466 1158.755737 1159.47229 1159.859619 1159.902466 1159.895752 1158.714233 1158.955444 1159.408936 1159.646851 1159.827148 1159.838135 1159.913574 1159.772095 1159.518433 1159.188721 1159.259766 1159.519287 1159.872559 1160.44397 1160.740112 1160.960571 1161.070557 1161.039062 1160.83667 1160.599243 1160.263306 1159.910767 1159.624023 1159.359497 1159.219604 1159.023682 1158.705811 1158.231079 1157.42395 1156.776978 1156.287964 1155.990234 1155.777344 1155.348022 1154.052856 1151.897095 1149.929199 1148.22522 1147.407104 1146.402466 1145.293701 1147.920044 1154.4104 1158.713135 1157.964355 1157.115601 1156.905029 1158.043457 1159.613403 1173.84021 1182.736694 1184.169922 1184.588013 1187.09729 1188.9552 1185.067261 1190.847168 1192.386841 1192.7771 1197.921875 1200.106689 1196.787354 1196.279907 1196.983398 1198.942139 1192.33313 1186.229614 1185.305542 1195.597168 1202.94812 1212.133789 1219.605713 1228.570801 1232.878174 1232.094604 1231.309326 1234.751953 1234.848755 1242.247803 1241.337036 1241.779175 1251.954224 1253.692871 1246.191772 1237.865234 1235.454468 1237.317017 1237.551392 1236.452026 1232.751221 1228.652222 1233.633057 1244.110474 1244.748291 1241.495239 1240.984619 1237.201782 1233.437744 1234.098633 1224.909912 1229.16333 1227.350586 1223.165283 1223.259521 1221.34668 1217.579102 1215.436646 1213.450928 1211.302612 1209.478394 1207.787598 1205.950195 1203.724731 1198.59314 1195.814575 1198.947021 1201.007935 1202.786499 1206.465942 1209.03479 1209.8396 1207.765381 1210.091675 1219.415039 1228.178345 1235.801392 1240.324219 1231.133911 1225.286255 1221.110107 1216.832886 1211.932861 1207.765015 1202.558105 1197.151367 1192.887573 1189.799438 1186.75 1183.74353 1182.41333 1188.775879 1196.102417 1201.138794 1204.861206 1207.34375 1207.714844 1206.398682 1204.055542 1205.845215 1205.289917 1209.215576 1217.703003 1220.55127 1218.949341 1219.174683 1223.048584 1227.207397 1230.417725 1228.648804 1224.026611 1219.165405 1218.963257 1220.37793 1216.948853 1211.297852 1213.074097 1216.516968 1215.894775 1211.61853 1207.160889 1210.296021 1212.782227 1212.604614 1213.210083 1213.679688 1212.030151 1209.122803 1205.26355 1201.077393 1196.840454 1189.251587 1182.514404 1185.165771 1194.887207 1207.886963 1218.099121 1221.465454 1217.395508 1210.687012 1206.016235 1207.472046 1208.138062 1201.199707 1191.076782 1182.087891 1179.867798 1176.616089 1175.436157 1175.043823 1173.9729 1170.639038 1169.487549 1168.849121 1157.231812 1146.873413 1144.516113 1157.841675 1145.371216 1157.788574 1170.658813 1171.81958 1172.744019 1173.7229 1167.490234 1155.758789 1143.57959 1144.919922 1154.696167 1160.692261 1151.818237 1147.712036 1142.73877 1143.013428 1138.028076 1133.194214 1129.356445 1125.70105 1122.564453 1121.658203 1121.909668 1125.295776 1128.679443 1133.490234 1138.968628 1146.64209 1152.309326 1160.881104 1173.73877 1173.150269 1157.268311 1147.810791 1138.374268 1130.430786 1123.129883 1119.817505 1117.280518 1114.974121 1112.522583 1110.164185 1109.106934 1110.176392 1114.734619 1119.786011 1119.829224 1111.965576 1106.185913 1101.49707 1099.21875 1097.693726 1097.638428 1097.59729 1097.667114 1097.75415 1097.863403 1097.853516 1097.839111 1097.971436 1098.07312 1098.183838 +1240.246216 1240.372803 1240.320923 1240.224854 1239.980835 1239.696411 1239.683838 1240.434814 1240.405273 1239.252441 1235.474854 1229.9552 1228.482178 1230.668945 1231.334595 1233.318848 1233.067017 1231.752319 1228.564575 1224.400024 1224.175415 1223.361816 1220.998047 1217.622437 1215.278687 1213.479614 1211.742065 1209.308594 1205.790405 1201.077148 1195.607788 1188.720093 1183.061157 1178.146118 1174.087158 1170.34436 1170.47583 1171.603882 1168.055298 1160.2052 1150.068481 1142.556152 1140.929199 1141.622437 1142.434814 1143.683228 1145.574951 1152.764893 1164.871704 1178.553589 1200.404175 1205.526611 1199.309204 1191.0896 1186.022949 1181.11499 1177.480103 1171.33728 1172.745728 1180.232056 1189.359009 1201.799194 1209.575073 1211.740967 1213.319946 1214.699829 1215.565308 1216.004272 1216.252197 1216.11438 1215.704102 1215.236816 1214.662354 1214.131226 1213.532227 1212.79126 1212.10437 1211.323853 1210.490601 1209.09375 1208.507446 1208.262451 1205.096313 1200.487671 1206.616333 1209.603149 1210.929443 1211.824341 1212.526611 1212.965698 1213.143433 1213.178955 1213.015991 1212.703125 1212.342529 1211.863403 1211.369507 1210.781372 1210.137451 1209.436157 1208.667847 1207.626099 1205.471436 1202.571289 1199.348999 1196.803833 1193.01416 1188.584839 1191.869507 1195.409058 1197.331665 1199.426025 1200.999634 1202.116821 1202.769165 1203.1073 1203.211914 1203.835571 1204.985718 1207.231201 1207.957764 1202.072632 1206.13855 1209.107056 1210.735474 1212.059937 1212.899536 1213.196167 1213.123169 1212.819824 1212.528564 1212.510254 1212.590454 1212.518921 1212.649414 1213.151978 1214.196289 1215.974365 1218.119019 1219.998291 1220.359497 1220.43335 1219.380615 1216.149292 1213.17749 1210.91333 1209.182129 1209.774414 1212.519165 1214.459717 1212.561279 1209.588257 1207.171509 1205.98645 1204.601562 1203.602783 1202.91272 1202.749756 1204.531006 1206.400024 1209.074097 1213.262939 1217.531128 1222.008789 1229.626709 1235.693115 1242.126587 1252.626221 1250.307739 1243.674561 1239.183594 1231.523438 1233.600342 1238.575439 1244.129517 1256.404541 1256.929199 1244.972778 1231.781738 1223.57666 1218.062988 1213.706665 1210.197632 1207.09668 1204.972778 1204.770142 1205.901855 1206.876709 1207.788452 1208.432617 1209.18396 1209.867188 1210.187256 1210.44397 1210.568726 1210.473877 1210.43811 1210.147339 1210.016968 1209.994873 1209.813965 1209.627441 1209.32312 1209.237061 1209.297729 1209.535767 1209.524048 1209.549072 1209.507935 1209.636963 1209.600586 1209.526245 1209.446655 1209.052856 1208.534424 1207.993774 1207.367065 1206.524902 1205.937256 1205.364868 1204.719116 1203.968872 1203.110107 1202.189453 1201.281616 1200.525757 1199.705444 1199.140991 1198.281982 1197.616699 1196.793335 1196.044312 1195.322266 1194.799683 1194.602783 1194.39209 1194.324951 1194.143188 1193.72644 1193.625 1193.799805 1194.449341 1195.463013 1195.525146 1193.619263 1190.607056 1188.677368 1187.579224 1187.029663 1187.963013 1191.657471 1194.895752 1195.783813 1196.256714 1196.731445 1197.046753 1197.196411 1197.082764 1196.762939 1196.348389 1195.953003 1195.965454 1195.958374 1195.647461 1195.159058 1194.981079 1195.177979 1195.891479 1197.547607 1198.505493 1199.25293 1199.44043 1199.415039 1199.067505 1198.853638 1198.638916 1198.344238 1197.881592 1197.215088 1196.606567 1195.631348 1193.831055 1191.628784 1189.533203 1187.822754 1186.38916 1185.295532 1184.519653 1183.874878 1182.325684 1180.030151 1177.896484 1176.072632 1174.77417 1173.748291 1172.674683 1172.018433 1171.213623 1168.990967 1170.216064 1172.09668 1172.217651 1171.658325 1170.841309 1169.823364 1168.671265 1168.511841 1168.30481 1168.412964 1168.62146 1169.060181 1169.220093 1168.9104 1168.629272 1168.592041 1168.930298 1169.116699 1169.241821 1169.242676 1169.86145 1171.096802 1171.999146 1172.268311 1172.015381 1171.619019 1171.281616 1171.689819 1171.94873 1171.770508 1170.38855 1167.825562 1164.70166 1162.500977 1161.103882 1160.453857 1159.772705 1158.82373 1158.877441 1159.499512 1160.059082 1160.233643 1160.165894 1159.730713 1159.598389 1159.768555 1160.018188 1160.213135 1160.257568 1160.326538 1160.307861 1160.11792 1159.913696 1159.954102 1160.139771 1160.54126 1160.809814 1161.062378 1161.162964 1161.193481 1161.026245 1160.802246 1160.45105 1160.02478 1159.563721 1159.11792 1158.869385 1158.737793 1158.55957 1158.036255 1157.456909 1156.802856 1156.20105 1155.509888 1154.965576 1154.33728 1153.587646 1152.357666 1150.71936 1149.388428 1147.617676 1146.529053 1146.0802 1145.782959 1146.646973 1155.291504 1162.543579 1167.907715 1168.087891 1161.629639 1162.171021 1157.886719 1167.494385 1174.614746 1178.857178 1180.619019 1184.607666 1185.15271 1182.827637 1185.854492 1186.61853 1183.669189 1191.79834 1193.928101 1194.471924 1185.863892 1190.720215 1193.259521 1186.789795 1182.388916 1186.877075 1198.175537 1208.214722 1212.173462 1217.985474 1223.559814 1226.35376 1220.825806 1232.830322 1231.012573 1230.498779 1234.094604 1231.464355 1232.682251 1241.81897 1241.705933 1236.563721 1232.893555 1224.111084 1228.593384 1230.647461 1230.146973 1225.950806 1218.955933 1226.675659 1232.411377 1234.719116 1233.17981 1232.861328 1227.150635 1222.9729 1222.854858 1217.120483 1216.2854 1212.120972 1217.713379 1220.68103 1216.077759 1212.188843 1212.176392 1211.115601 1209.367676 1207.293701 1206.545776 1206.040283 1205.011841 1203.218384 1203.21167 1204.994385 1205.391724 1205.12085 1208.481445 1212.042603 1213.854492 1213.43457 1215.331177 1220.732544 1230.914917 1241.05127 1246.700195 1235.544556 1229.446655 1224.285767 1219.494507 1213.765015 1208.601196 1203.912964 1198.897461 1196.53894 1192.932007 1191.653809 1189.181152 1186.082764 1184.935913 1190.186157 1193.426636 1196.798584 1198.771851 1199.50293 1198.825439 1196.660034 1195.671997 1199.748901 1205.266602 1208.103516 1207.939697 1215.657715 1218.348633 1221.865845 1229.199219 1233.557495 1233.999023 1230.234741 1225.829468 1224.671875 1225.144775 1222.403931 1218.79834 1218.609619 1221.744995 1221.98877 1218.691895 1215.991699 1214.927002 1218.443726 1219.691284 1219.03894 1217.939087 1215.693237 1211.630493 1207.676392 1202.913086 1197.929321 1192.732666 1185.731689 1185.824463 1191.74353 1207.166382 1218.299072 1222.158813 1219.422729 1212.971436 1212.069946 1215.923584 1213.406982 1205.845825 1195.365601 1190.48584 1185.089722 1181.240967 1181.644775 1180.020508 1178.716919 1177.289551 1175.387207 1172.731812 1156.200928 1144.513062 1156.517578 1163.611938 1148.455322 1161.30542 1173.221436 1175.432983 1175.307495 1174.737671 1163.174194 1149.480835 1144.604736 1154.230713 1161.601318 1155.361938 1146.016724 1134.923706 1132.205688 1131.744263 1130.695679 1129.074951 1127.783691 1125.751221 1124.058716 1123.015747 1121.780273 1124.00769 1128.054321 1131.374512 1135.407104 1142.419067 1147.076904 1156.445801 1169.47583 1171.858032 1154.732666 1140.258911 1132.936401 1127.593872 1122.783081 1119.402832 1116.311401 1113.765503 1111.995361 1110.285156 1108.73645 1108.503784 1109.349121 1109.309692 1109.012451 1108.506836 1104.688843 1100.747803 1098.126343 1097.740479 1097.728149 1097.543823 1097.490479 1097.459106 1097.552734 1097.560791 1097.568115 1097.637451 1097.800781 1097.814697 +1242.285889 1241.871704 1242.170776 1242.565918 1242.822388 1242.581055 1242.317871 1243.534668 1243.883667 1243.098511 1237.365356 1231.578003 1232.161133 1239.004395 1239.445068 1239.825562 1241.369019 1240.76123 1235.503174 1232.261475 1231.033936 1228.547241 1225.858765 1222.621948 1220.916992 1220.049316 1217.827393 1213.535156 1209.08667 1203.716553 1195.827026 1190.273926 1183.221069 1178.718262 1173.746216 1170.631226 1172.377686 1172.404907 1164.895386 1156.161987 1146.748169 1141.335205 1141.696167 1142.148804 1142.990112 1144.221313 1145.694214 1152.990356 1164.802612 1179.997437 1201.77832 1213.51123 1209.005737 1195.272461 1189.61499 1185.109131 1181.612915 1172.598877 1172.852173 1179.778076 1186.300293 1192.728882 1205.091431 1210.344971 1213.460327 1215.217651 1216.238525 1216.709595 1216.816895 1216.625488 1216.332153 1215.946045 1215.510498 1214.947144 1214.37561 1213.658203 1212.871582 1212.133057 1211.343872 1210.504639 1209.740601 1209.041992 1207.849731 1205.157104 1206.483765 1208.853027 1209.964355 1211.143066 1212.17041 1212.880859 1213.311523 1213.565063 1213.505737 1213.181885 1212.741089 1212.293701 1211.785034 1211.117554 1210.41394 1209.488647 1208.453857 1206.7948 1204.717407 1202.031616 1198.899658 1195.360474 1189.620605 1191.1875 1195.401001 1197.47998 1199.536255 1201.400391 1202.824097 1203.897583 1204.754883 1205.312378 1205.338867 1205.515869 1206.460205 1208.098145 1208.82959 1206.926758 1205.810791 1209.432495 1211.27417 1213.18103 1214.332275 1214.927368 1215.022339 1214.759155 1214.691162 1214.636719 1214.674683 1214.550537 1214.455811 1214.901611 1215.973511 1217.527832 1219.470459 1220.682007 1221.179199 1221.149414 1220.312134 1217.595215 1215.679688 1214.42395 1213.752319 1214.709351 1216.323486 1218.353149 1216.159546 1212.379272 1209.31604 1207.394409 1206.1875 1205.197144 1204.302734 1203.581909 1203.668701 1205.316284 1207.507935 1211.310425 1214.887329 1218.454346 1225.536255 1232.739258 1238.882935 1248.077637 1259.396362 1254.294922 1246.888428 1238.945068 1237.015869 1239.706787 1245.21936 1258.515137 1259.191406 1247.417236 1232.568359 1224.479004 1218.238037 1214.224976 1210.398804 1206.973999 1205.043457 1206.19751 1207.384888 1207.97168 1208.552246 1209.202148 1209.913086 1210.534424 1211.05249 1211.274292 1211.346924 1211.334595 1211.198364 1210.968872 1210.869995 1210.728638 1210.736084 1210.436157 1210.179199 1210.066284 1210.144897 1210.071411 1210.263062 1210.188477 1210.167236 1210.257935 1210.225586 1210.094727 1209.809692 1209.426147 1208.879395 1208.301392 1207.581543 1206.970581 1206.637329 1205.95874 1205.182861 1204.273682 1203.307007 1202.404297 1201.472168 1200.69873 1199.889648 1199.010132 1198.102661 1197.301147 1196.463867 1195.660034 1195.203857 1194.98291 1194.847778 1194.99353 1195.069946 1195.010864 1194.430054 1194.151978 1194.326782 1195.179688 1195.714966 1195.536133 1193.668091 1190.866211 1188.847534 1187.939697 1187.239624 1188.639404 1191.817017 1194.25647 1195.29541 1196.230347 1196.942871 1197.343384 1197.536865 1197.509644 1197.254761 1196.967651 1196.661011 1196.487549 1196.360352 1196.081543 1195.500977 1195.09375 1195.226807 1195.9552 1197.650879 1198.848755 1199.684814 1200.046875 1200.05249 1199.891968 1199.650513 1199.484619 1198.976807 1198.280396 1197.471558 1196.620117 1195.668579 1193.864746 1191.619751 1189.393188 1187.405151 1185.895508 1184.65686 1183.611694 1183.013306 1181.439941 1179.154907 1176.840576 1174.889282 1173.59082 1171.99646 1170.026367 1169.994507 1169.015137 1169.981445 1171.905151 1172.986816 1173.119263 1172.887817 1172.078003 1170.738525 1169.442383 1169.501343 1169.658081 1169.707031 1169.921631 1170.610474 1170.780151 1170.12561 1169.387817 1169.484985 1170.218018 1170.608032 1170.460205 1170.138306 1170.236694 1171.126343 1172.344849 1172.677246 1172.716797 1172.556763 1172.472534 1172.347046 1172.161011 1171.991943 1170.31604 1167.296631 1163.881714 1161.613037 1160.687744 1160.205078 1159.56543 1159.201416 1159.390503 1159.886475 1160.424561 1160.706421 1160.704346 1160.560791 1160.456665 1160.350708 1160.502808 1160.568359 1160.73291 1160.868286 1160.830688 1160.803467 1160.564575 1160.623535 1160.695435 1160.898926 1161.177979 1161.278076 1161.339111 1161.204834 1160.941284 1160.612183 1160.063354 1159.688599 1159.252075 1158.869751 1158.427856 1158.042725 1157.881226 1157.450073 1156.678711 1156.126953 1155.514648 1154.787598 1154.056396 1153.363525 1152.375854 1151.187134 1149.727783 1148.178345 1147.107544 1146.956177 1146.888306 1146.691895 1145.89209 1152.779297 1163.992432 1172.62439 1174.268677 1175.33313 1176.657471 1172.387085 1168.546631 1169.778076 1170.363281 1176.206665 1181.69165 1183.877808 1181.474365 1181.603394 1184.14502 1181.093384 1184.292114 1187.095581 1187.554565 1182.75415 1184.177124 1186.911621 1183.29834 1182.427979 1187.542236 1195.579346 1202.712402 1206.644775 1213.147949 1219.333008 1219.843262 1217.901855 1223.83606 1223.671509 1219.499878 1224.76709 1225.106812 1227.243042 1232.489868 1232.717041 1227.426025 1222.556519 1217.147827 1222.478882 1223.314331 1220.123291 1219.609985 1216.506836 1220.572388 1220.373047 1221.797119 1222.387817 1221.108032 1218.985718 1216.75708 1216.338745 1210.522461 1206.65918 1208.083496 1213.421021 1210.242798 1205.136475 1207.483643 1209.101318 1209.514648 1209.329346 1209.038818 1209.205444 1209.103882 1208.441284 1207.700195 1209.353027 1210.755615 1210.403687 1207.505493 1208.315186 1215.979004 1220.069702 1218.780518 1217.87439 1220.999878 1230.198975 1240.206787 1246.262573 1237.606445 1231.47583 1225.710693 1220.129395 1213.813477 1208.300171 1204.277222 1201.179321 1197.798706 1195.361816 1197.474487 1195.158081 1190.776855 1185.760254 1186.475464 1188.819214 1190.585205 1191.138794 1190.802856 1191.059692 1191.80835 1193.071899 1194.858154 1196.677734 1204.477295 1210.78894 1219.675415 1221.755127 1224.183716 1229.853027 1233.174927 1234.631348 1233.971313 1230.731689 1230.846191 1231.811157 1229.416382 1227.196655 1226.465698 1227.665039 1227.261475 1224.560547 1221.185425 1219.448364 1223.046631 1224.227295 1223.629395 1222.398071 1219.556519 1214.204102 1208.655151 1204.171753 1200.655273 1197.071411 1193.292969 1192.064697 1196.693726 1204.859375 1217.303345 1224.771362 1223.725952 1218.217407 1220.668579 1222.170166 1219.487427 1207.268066 1202.684937 1199.553223 1193.098633 1187.582275 1186.791016 1183.52478 1183.444824 1182.741943 1177.54187 1166.853149 1150.981079 1147.043701 1167.876465 1170.758667 1160.21582 1157.847168 1173.53894 1175.861328 1175.928345 1174.337769 1163.208862 1148.521362 1151.299316 1160.504883 1160.009888 1150.021118 1144.444336 1138.103394 1133.38501 1130.492554 1129.305542 1128.684204 1127.885742 1127.031372 1126.040894 1124.877686 1123.413696 1124.742676 1129.106689 1131.604736 1135.298096 1141.520752 1148.655151 1158.620483 1173.631958 1170.462158 1153.654053 1135.827759 1129.844849 1125.327637 1121.458618 1118.171631 1114.973755 1112.355957 1110.01123 1110.110107 1108.615845 1107.619751 1106.903809 1106.488525 1106.239746 1105.631714 1102.999878 1100.015625 1097.940308 1097.828125 1097.606567 1097.324219 1097.146729 1096.972168 1096.868042 1096.735107 1096.681519 1096.630005 1096.48584 1096.590088 +1244.524536 1243.771851 1244.138794 1245.013672 1245.523315 1245.700928 1245.731201 1246.7146 1247.445557 1246.604004 1240.336792 1231.650879 1244.399658 1248.24292 1247.480347 1247.668457 1250.047974 1250.163574 1247.531616 1242.649414 1238.947754 1234.645264 1231.666992 1229.609009 1227.69043 1226.336182 1222.976196 1217.921753 1213.165894 1208.994873 1201.550049 1193.228516 1183.846802 1180.942993 1175.261841 1174.622192 1174.517212 1170.663574 1159.477417 1152.189575 1145.132935 1141.512695 1142.108276 1142.590088 1143.434692 1144.740845 1146.19751 1156.069336 1167.800415 1183.021362 1202.110107 1223.814087 1216.045898 1199.280762 1192.349609 1187.879028 1183.72229 1173.134888 1178.04187 1183.817261 1188.536133 1194.317139 1204.023315 1209.941406 1214.220947 1216.07373 1217.060181 1217.372559 1217.355713 1217.245239 1217.061523 1216.734009 1216.283569 1215.787842 1215.171753 1214.433105 1213.684937 1213.009155 1212.190063 1211.324097 1210.442749 1209.335571 1207.932983 1206.456665 1207.006104 1207.500977 1208.73877 1210.452759 1211.787476 1212.867798 1213.491211 1213.816895 1213.781982 1213.531128 1213.108765 1212.642212 1212.107788 1211.421021 1210.54126 1209.597168 1208.157837 1206.612183 1204.329224 1201.786133 1198.754639 1195.775391 1190.585938 1191.676636 1196.124756 1198.881714 1202.015381 1203.93811 1204.690796 1205.273315 1206.327271 1207.401733 1207.802612 1207.540527 1206.88208 1208.28125 1209.771118 1208.860229 1204.067749 1209.540894 1212.325195 1215.046265 1216.172119 1216.738281 1216.957397 1216.895264 1216.840332 1217.132812 1216.77832 1216.299316 1215.98938 1216.201172 1217.102295 1218.296387 1219.661865 1221.095581 1221.66626 1221.59375 1220.522095 1218.271362 1217.805786 1217.289551 1216.847046 1217.858643 1219.821167 1220.576172 1219.478638 1216.270264 1212.337769 1209.435425 1207.737671 1207.103394 1206.084351 1205.097412 1204.516235 1204.408447 1206.247559 1209.373779 1212.684204 1216.549072 1221.577881 1228.743652 1235.132812 1244.581177 1256.449219 1259.495728 1255.249634 1244.989014 1240.454712 1241.976685 1249.88916 1259.035645 1260.235229 1247.602173 1235.761108 1225.798462 1218.752075 1214.740845 1210.348145 1206.442139 1206.055908 1207.672974 1208.516968 1208.870605 1209.497803 1210.224487 1210.887207 1211.496948 1211.843872 1212.053345 1212.079712 1212.082642 1211.984863 1211.768555 1211.665649 1211.622681 1211.445557 1211.258789 1210.949585 1210.848755 1210.82605 1210.855469 1210.790894 1210.813232 1210.8125 1210.800781 1210.811157 1210.533325 1210.282227 1209.846436 1209.192139 1208.609009 1207.991211 1207.810181 1207.379517 1206.607056 1205.593872 1204.608521 1203.675781 1202.782349 1201.896973 1201.023071 1200.132324 1199.119995 1198.010254 1196.766602 1195.703735 1195.325806 1195.274658 1195.30188 1195.413086 1195.583496 1195.729492 1195.689941 1195.191162 1194.650269 1195.095703 1195.580688 1195.878174 1195.131958 1193.021362 1190.668091 1188.702271 1188.033325 1187.896729 1190.483765 1193.834229 1195.314819 1195.613159 1196.44458 1197.210693 1197.631836 1197.947998 1197.908569 1197.78833 1197.426025 1197.186401 1196.970947 1196.613892 1196.191406 1195.684692 1195.272217 1195.344727 1196.32251 1197.875977 1199.240967 1200.221069 1200.681763 1200.793579 1200.692261 1200.552124 1200.222656 1199.487305 1198.623291 1197.324951 1195.965454 1194.894531 1193.115723 1191.345093 1188.78833 1185.675415 1183.272217 1183.056519 1182.998413 1182.573853 1180.99939 1178.371094 1175.200684 1173.112061 1171.690186 1170.443726 1169.108154 1169.831665 1170.631836 1171.846313 1173.05481 1174.095947 1174.105713 1173.897583 1172.96875 1171.845581 1170.637573 1170.598633 1170.920288 1171.101807 1170.822998 1171.989136 1171.910889 1170.784302 1170.333008 1170.172607 1171.398682 1171.763306 1171.538574 1171.245117 1171.053345 1171.486328 1172.921753 1173.29187 1173.35498 1173.202759 1173.033081 1172.781738 1172.447388 1171.90564 1169.810303 1166.141846 1163.007568 1161.285767 1160.900024 1160.39209 1160.064331 1159.999268 1160.298218 1160.680298 1160.988037 1161.175293 1161.320068 1161.201538 1161.131226 1160.956299 1160.941162 1161.021973 1161.166138 1161.354614 1161.474243 1161.415527 1161.30481 1161.251099 1161.283569 1161.405518 1161.510376 1161.553467 1161.335571 1161.134521 1160.684326 1160.267456 1159.884033 1159.460693 1159.122559 1158.873413 1158.174194 1157.721069 1157.374878 1156.828247 1156.210571 1155.535034 1154.840942 1154.14978 1153.379272 1152.517944 1151.695679 1150.540283 1149.234497 1148.038818 1147.546143 1147.523315 1147.60498 1147.349487 1146.830688 1145.86853 1158.205078 1168.248169 1173.467407 1178.982788 1184.143311 1183.682617 1175.24231 1169.842041 1170.527588 1171.102295 1176.623291 1178.596924 1177.780762 1175.989258 1175.834717 1175.601074 1181.809448 1181.809692 1181.419434 1180.761475 1181.277832 1183.701782 1181.489258 1182.495483 1185.806152 1191.33606 1196.487183 1197.325806 1207.864258 1211.637329 1211.501465 1209.765747 1216.428345 1216.176392 1212.857544 1216.850952 1217.051147 1217.035278 1220.483032 1221.509033 1217.524048 1213.049927 1208.796387 1219.123047 1219.179565 1215.299927 1213.130615 1207.576416 1211.783325 1213.435303 1214.323364 1214.089478 1212.659668 1210.187622 1210.447021 1209.933472 1205.917358 1207.130493 1208.90564 1207.609131 1205.275391 1205.197876 1206.119385 1207.02124 1209.330444 1211.128418 1212.208374 1213.069336 1213.717407 1213.801025 1214.616333 1216.390503 1218.352661 1219.166748 1216.178711 1211.828613 1218.433228 1222.298218 1222.958984 1220.520142 1220.041504 1229.584351 1236.803589 1242.049194 1237.75708 1232.557495 1226.449585 1220.068115 1212.602295 1207.126831 1206.154053 1204.214478 1200.555664 1203.612183 1205.919067 1202.473755 1197.236694 1193.048462 1187.825317 1186.955933 1188.146362 1189.809448 1193.428467 1195.498169 1194.542603 1193.404419 1192.928589 1197.480347 1209.228394 1215.333862 1220.932495 1222.659546 1224.955566 1228.586426 1231.955566 1235.290161 1238.608887 1239.470337 1238.643188 1237.568359 1235.58606 1236.080078 1236.941284 1235.256836 1232.931274 1230.906738 1227.875488 1227.568848 1228.856812 1229.606689 1228.308594 1225.520874 1221.602173 1215.646973 1209.168335 1205.847656 1203.504639 1200.718384 1196.687744 1193.833008 1199.521118 1208.830811 1216.555298 1230.539429 1231.280273 1219.388184 1222.74707 1225.078003 1223.140381 1215.825317 1210.274292 1206.265381 1198.379639 1193.32605 1191.447632 1189.119141 1187.672974 1185.687988 1178.347046 1158.92395 1148.69812 1163.738525 1174.201904 1173.216309 1164.431763 1157.210083 1168.205688 1175.275513 1177.482666 1176.036133 1166.277466 1157.594482 1158.763184 1161.429688 1159.652954 1153.264526 1146.979492 1137.099121 1132.952515 1130.163696 1129.467651 1129.002441 1128.831665 1128.89856 1128.811401 1128.203003 1128.186279 1129.891846 1131.312744 1132.353638 1135.828613 1141.293945 1148.358032 1160.055786 1171.201416 1163.343506 1150.552002 1134.27478 1127.736572 1122.533936 1119.574463 1116.6521 1113.550903 1110.649048 1109.88269 1110.071899 1108.720337 1107.216919 1106.232666 1105.353027 1104.595215 1103.634644 1102.105225 1099.985718 1098.614502 1097.65271 1097.305786 1096.950317 1096.646362 1096.287354 1096.081665 1095.816772 1095.604004 1095.372437 1095.15979 1094.895874 +1247.335571 1246.955322 1247.354614 1248.121094 1248.750366 1249.920898 1250.956787 1251.95105 1252.035156 1249.685303 1243.052124 1241.473877 1246.89502 1253.15918 1256.883301 1257.81311 1258.919556 1258.543579 1256.977905 1253.866211 1249.021362 1243.29126 1239.871582 1236.690063 1234.153564 1233.521484 1229.330688 1222.275879 1217.90332 1213.585938 1207.052734 1197.048828 1189.641602 1183.889282 1182.206543 1182.847778 1175.420532 1165.861084 1155.645264 1149.439575 1143.953857 1142.085938 1142.490356 1143.034302 1143.90564 1145.323853 1147.94397 1159.572144 1173.052734 1187.174805 1202.982666 1225.405273 1215.452271 1200.581055 1193.054199 1188.666382 1183.700562 1174.38269 1185.899902 1195.356567 1197.959961 1201.483887 1210.242065 1213.298584 1216.061523 1217.541382 1218.122803 1218.099731 1218.080811 1217.951172 1217.759399 1217.387329 1216.961548 1216.412598 1215.822876 1215.072754 1214.376343 1213.733765 1212.961426 1212.021362 1210.942017 1209.54541 1207.661621 1206.85144 1207.553223 1207.579346 1207.653076 1209.651855 1211.468506 1212.912231 1213.753784 1214.11853 1214.032349 1213.85083 1213.434692 1212.859741 1212.296265 1211.54895 1210.709839 1209.621338 1208.336792 1206.970581 1204.481079 1201.56311 1199.093384 1196.602539 1193.361328 1190.803833 1195.71106 1200.539673 1205.326172 1206.651001 1206.627075 1206.705078 1208.093506 1209.414062 1210.301514 1210.166016 1208.414795 1209.674072 1211.219849 1210.778809 1207.503784 1208.622314 1214.408691 1217.87085 1218.287964 1218.554688 1218.732422 1218.814209 1219.071777 1219.501953 1218.690918 1217.638916 1216.922241 1217.09729 1217.884155 1219.303345 1220.571167 1221.717773 1222.323853 1222.254272 1221.19751 1220.449585 1220.213989 1219.475464 1218.520508 1219.897095 1221.069458 1221.437378 1220.694092 1219.457153 1215.894287 1212.228882 1209.724731 1208.807861 1207.879272 1206.793701 1206.499512 1207.383301 1206.134399 1206.616455 1210.065918 1215.33374 1220.693848 1226.82666 1233.877319 1242.680176 1253.15979 1259.872437 1259.787964 1252.054688 1241.530884 1243.536499 1251.714355 1258.717163 1259.337769 1249.068604 1237.295654 1228.017456 1220.885986 1215.774536 1210.358154 1206.180786 1207.443726 1208.900513 1209.703857 1210.080933 1210.837158 1211.510864 1212.165527 1212.516479 1212.689087 1212.804321 1212.834351 1212.846924 1212.712646 1212.597046 1212.550171 1212.46936 1212.288086 1212.060669 1211.751953 1211.598145 1211.60791 1211.637695 1211.569458 1211.370483 1211.410767 1211.3302 1211.244995 1210.984741 1210.635742 1210.148682 1209.601807 1209.088867 1208.63562 1208.376953 1207.915649 1207.040283 1206.029419 1205.018921 1204.067627 1203.294067 1202.500854 1201.62439 1200.68103 1199.603638 1198.14624 1196.257446 1195.306152 1195.533813 1195.784058 1195.963745 1196.005127 1196.06604 1196.19519 1196.18689 1195.612793 1195.236206 1195.517456 1196.127808 1196.019775 1195.087646 1192.400879 1189.64856 1188.768677 1188.615967 1190.132324 1193.248901 1195.634155 1196.092041 1196.315796 1196.954834 1197.596436 1198.000122 1198.342773 1198.39502 1198.210205 1197.910278 1197.673828 1197.304443 1196.93811 1196.489746 1195.77832 1195.261353 1195.33252 1196.471558 1198.290771 1199.759521 1200.81958 1201.422607 1201.644287 1201.573608 1201.439209 1200.988159 1200.004028 1198.570679 1195.681641 1194.872803 1194.447266 1193.768555 1192.250244 1189.22583 1184.231201 1183.480591 1184.430054 1184.515747 1183.783813 1181.535522 1177.344727 1172.137573 1171.305542 1170.997803 1169.973267 1170.777588 1171.821655 1173.091797 1173.710327 1174.642578 1175.583862 1175.705322 1174.958374 1174.155396 1173.323242 1172.312134 1171.471191 1172.215942 1172.629883 1172.775391 1172.993042 1172.77771 1171.857544 1171.387573 1170.672974 1171.58728 1172.588379 1172.618896 1172.387329 1172.457764 1173.14563 1173.875488 1174.071533 1173.987183 1173.623535 1173.263672 1172.945312 1172.343018 1171.109985 1168.116821 1164.498169 1162.123779 1162.205322 1161.879517 1161.4729 1161.147095 1161.183838 1161.338135 1161.454346 1161.688965 1161.808594 1161.928589 1161.857666 1161.698242 1161.467041 1161.500977 1161.508423 1161.652954 1161.960571 1161.996338 1161.999756 1161.856079 1161.736572 1161.766968 1161.800781 1161.671509 1161.605347 1161.396606 1161.000854 1160.610718 1160.06897 1159.702393 1159.39502 1159.19043 1158.775513 1158.018433 1157.468872 1157.052368 1156.479004 1155.731323 1154.997681 1154.223267 1153.556885 1152.791016 1152.159546 1151.397705 1150.303223 1149.110229 1148.313599 1147.942383 1147.973633 1148.034058 1147.73999 1147.253784 1146.660034 1147.973145 1158.562256 1168.308472 1173.085815 1177.174683 1184.234863 1182.219971 1175.630493 1173.499878 1173.855713 1176.735962 1177.192261 1173.850952 1170.859985 1170.492065 1172.173584 1175.241089 1175.30603 1174.137695 1175.668091 1177.48584 1177.234619 1174.861816 1177.693726 1181.799072 1183.489258 1185.23584 1194.077515 1200.251221 1203.09375 1202.751831 1204.65625 1207.311401 1207.816528 1205.783447 1208.020142 1209.007812 1206.620361 1211.140259 1212.23291 1210.982422 1207.190674 1205.651367 1209.939941 1212.401123 1210.769897 1208.377197 1206.366943 1206.256104 1208.069824 1209.733521 1207.809937 1206.148926 1204.986694 1206.660767 1205.11084 1202.786621 1203.573364 1203.725342 1204.066406 1205.1073 1206.077881 1207.127686 1209.666504 1212.175293 1214.634399 1216.54895 1217.695923 1218.567017 1219.631592 1221.093628 1223.016968 1224.599976 1224.980347 1222.758545 1218.98291 1219.612305 1223.368774 1226.391357 1228.227173 1230.204834 1229.621094 1233.936279 1238.074829 1237.000488 1233.217285 1226.952026 1219.885742 1211.064941 1207.461548 1209.629517 1207.188354 1205.659546 1209.770508 1214.620239 1210.325195 1203.914551 1197.876709 1193.072021 1192.790405 1194.03186 1194.254517 1197.495483 1199.95459 1199.511108 1198.290283 1196.073853 1194.171509 1203.763062 1211.552124 1216.9823 1220.545288 1222.167358 1226.861206 1230.44751 1235.660767 1241.534424 1245.423462 1245.425049 1243.27771 1239.859497 1241.27356 1244.953491 1238.537354 1234.459717 1233.476685 1232.442261 1237.206421 1246.197876 1243.853027 1233.922729 1229.793945 1222.630615 1217.142944 1212.825562 1207.536865 1207.13562 1206.824707 1201.539429 1197.921265 1201.870117 1209.68042 1218.544434 1233.015381 1233.81543 1229.678833 1229.042847 1230.124268 1227.125122 1222.121582 1218.119507 1212.859497 1207.458862 1200.159912 1196.085327 1193.370117 1191.661499 1186.863403 1173.359863 1152.12915 1156.260742 1174.183105 1177.535156 1173.621704 1167.320679 1168.767456 1169.238525 1170.619263 1180.358887 1182.447632 1170.032349 1157.513428 1159.355713 1157.919678 1150.606079 1146.473511 1139.014771 1133.310181 1131.313721 1130.535645 1130.168335 1129.945801 1130.400146 1131.422974 1132.22876 1131.994507 1132.404297 1133.92688 1133.753296 1132.902344 1135.833374 1143.021362 1149.883423 1159.94458 1163.033081 1155.475098 1144.283569 1132.082764 1126.095337 1121.395874 1118.269165 1115.389526 1112.654663 1109.980103 1109.952637 1110.063721 1108.669189 1107.118042 1105.553955 1104.508789 1103.415039 1102.352051 1101.259399 1100.131226 1098.713989 1097.397583 1096.884521 1096.479248 1095.994385 1095.654541 1095.320312 1094.911743 1094.470459 1094.212891 1093.786743 1093.413208 +1250.28479 1250.51709 1251.071167 1251.667358 1252.762451 1254.1073 1255.53833 1257.433838 1257.314087 1255.956543 1248.152588 1243.061523 1250.480225 1260.624756 1266.221436 1266.394775 1266.256226 1266.048096 1265.240112 1262.997925 1259.839844 1255.05127 1248.353271 1243.842041 1242.071777 1240.204468 1235.976929 1229.402588 1223.653076 1218.837402 1208.753174 1200.096191 1192.936157 1184.772827 1184.92749 1185.376343 1170.511841 1161.341064 1152.919556 1146.388306 1143.039917 1142.693115 1142.830566 1143.401855 1144.20813 1145.662354 1149.849121 1161.582275 1176.063965 1191.06604 1208.445923 1223.304443 1213.497437 1201.122803 1193.447998 1188.712036 1182.682739 1179.713989 1192.513672 1200.400024 1205.250122 1208.47998 1212.865601 1217.375366 1218.453369 1218.66272 1218.898682 1218.719849 1218.678101 1218.685059 1218.568237 1218.174805 1217.5448 1216.971802 1216.490601 1215.649902 1215.080444 1214.502808 1213.714966 1212.75415 1211.555786 1210.0354 1208.556763 1208.788574 1208.712891 1208.084473 1207.57019 1208.694946 1211.327271 1212.997559 1214.063965 1214.395508 1214.290771 1213.991943 1213.528687 1212.946167 1212.358643 1211.506836 1210.630371 1209.619141 1208.525269 1207.176636 1204.43396 1201.488647 1198.671753 1196.203125 1193.779907 1191.814697 1197.562988 1203.545654 1208.234741 1208.826538 1208.976074 1209.173584 1210.447754 1211.852905 1212.579712 1212.744751 1212.375488 1213.300171 1214.599976 1214.348511 1210.464233 1207.546875 1218.698242 1220.243774 1220.163452 1220.604004 1220.567383 1220.647705 1220.90332 1221.222168 1219.927856 1218.519775 1217.726562 1217.78894 1218.394043 1220.016846 1221.739136 1222.760254 1223.30542 1223.291382 1222.832764 1222.405884 1221.855591 1220.990479 1220.431274 1221.512817 1222.194946 1221.679199 1221.001831 1220.29541 1218.281616 1214.813965 1212.091064 1210.498901 1209.247803 1208.15979 1207.758057 1208.390503 1208.221069 1206.678223 1208.483276 1213.847412 1219.676025 1225.578247 1232.223389 1239.70459 1249.179199 1258.329346 1260.328491 1259.51416 1246.576782 1243.411255 1252.629028 1259.187622 1260.449097 1254.573853 1240.938599 1230.195435 1222.918457 1216.417847 1210.151855 1206.29834 1208.475952 1210.09729 1211.075928 1211.765015 1212.349609 1212.989136 1213.389038 1213.63623 1213.640991 1213.62146 1213.561768 1213.593872 1213.5271 1213.420288 1213.367188 1213.372559 1213.163696 1212.75 1212.57373 1212.387329 1212.332031 1212.290405 1212.302002 1212.007446 1211.864746 1211.795532 1211.588013 1211.329468 1210.928223 1210.470093 1209.880859 1209.282227 1208.719727 1208.408447 1207.97876 1207.368164 1206.40625 1205.552856 1204.726074 1203.90686 1203.108887 1202.240479 1201.209717 1200.061523 1198.762451 1197.052612 1196.136963 1196.263794 1196.526123 1196.654419 1196.68103 1196.780273 1196.785278 1196.493408 1195.780151 1195.385254 1196.039185 1196.319702 1196.131104 1195.254639 1191.911621 1189.562988 1190.126831 1190.531616 1192.207642 1194.363647 1195.773315 1196.384277 1196.845337 1197.537842 1198.010254 1198.481201 1198.691895 1198.833984 1198.625244 1198.283203 1197.980713 1197.595947 1197.220581 1196.677856 1195.892334 1195.322144 1195.339966 1196.712158 1198.890259 1200.598633 1201.730835 1202.334229 1202.61145 1202.598389 1202.343994 1201.7854 1200.688599 1198.694946 1195.019897 1195.665283 1196.272217 1195.436401 1193.975708 1190.989258 1187.683838 1186.402222 1185.949585 1185.534546 1184.463745 1182.301758 1176.77356 1172.333496 1170.751953 1169.935425 1170.188843 1171.268433 1173.434082 1175.051758 1175.924561 1176.799316 1177.47644 1177.505737 1176.771729 1175.948364 1175.08606 1174.156616 1172.424438 1173.403198 1174.203003 1174.351685 1174.071533 1173.558228 1172.65271 1171.750977 1170.799438 1171.933472 1173.342163 1173.900757 1173.998413 1174.256348 1174.811279 1175.066528 1175.036133 1174.579468 1174.014038 1173.338013 1172.62915 1171.140625 1169.20105 1166.177734 1163.852173 1162.843506 1163.134033 1162.981201 1162.759277 1162.59082 1162.518555 1162.506592 1162.502808 1162.586548 1162.589966 1162.587646 1162.420288 1162.277588 1162.179077 1162.130981 1162.1698 1162.279541 1162.446289 1162.506226 1162.483643 1162.420288 1162.209839 1162.213745 1162.096191 1161.909668 1161.603027 1161.355835 1160.857666 1160.375244 1159.899048 1159.583008 1159.400757 1159.017822 1158.60022 1157.895386 1157.357422 1156.811523 1156.203613 1155.370728 1154.506714 1153.685913 1152.967651 1152.159058 1151.627319 1150.988037 1150.025879 1149.137817 1148.471069 1148.370972 1148.407837 1148.504761 1148.195923 1147.57605 1146.974976 1146.357666 1150.234619 1159.406616 1163.605957 1169.064453 1175.133545 1177.27771 1175.172485 1174.049561 1175.873047 1182.788818 1180.609741 1173.210083 1170.192871 1170.259521 1170.665161 1170.641113 1170.577393 1171.47583 1173.792603 1174.618896 1173.097412 1170.538818 1172.712524 1181.219849 1181.113159 1181.203369 1185.780273 1193.627319 1194.186523 1194.811646 1199.329102 1202.178101 1203.228271 1202.17981 1201.581421 1201.450439 1202.281616 1204.696289 1205.936401 1204.765747 1200.775635 1199.262695 1205.672119 1207.664551 1206.774048 1204.387817 1203.157471 1203.510742 1204.817749 1205.247681 1203.385742 1201.40918 1200.960083 1200.873901 1200.124878 1198.598267 1196.076904 1196.978394 1202.591064 1206.986816 1209.020508 1211.331665 1214.168701 1216.770996 1219.256226 1221.131714 1223.290649 1225.236328 1227.006714 1228.239868 1229.181885 1230.275269 1231.032471 1227.796021 1221.926514 1219.09729 1224.923462 1230.21228 1233.237549 1234.627686 1234.321655 1236.202026 1238.643921 1237.638916 1233.773804 1226.675537 1219.521484 1215.073608 1215.339966 1215.102905 1209.032593 1206.455444 1215.003052 1221.787964 1216.0448 1207.816528 1200.261475 1194.427368 1196.28125 1199.703369 1201.486084 1202.804321 1204.547485 1205.72583 1204.524658 1201.230103 1197.808594 1195.415039 1201.001587 1204.413208 1214.976074 1222.108154 1225.89624 1230.001099 1234.25647 1239.053223 1242.33728 1244.907837 1244.484131 1240.221069 1238.345459 1237.671509 1234.437378 1231.781982 1231.938721 1235.064331 1241.723633 1243.595337 1242.855713 1238.502686 1234.084351 1230.229492 1221.95752 1216.910156 1212.98877 1212.894043 1210.803345 1206.208374 1208.725708 1206.088257 1210.608276 1221.341919 1233.271729 1234.136353 1230.8479 1232.817993 1233.967407 1232.166504 1228.985962 1223.618896 1217.9198 1210.636719 1205.50647 1203.071045 1198.991211 1195.591187 1188.045166 1164.807861 1153.539062 1167.46875 1185.814941 1182.113525 1175.831055 1172.386353 1175.748657 1175.250122 1176.022095 1180.644531 1184.00415 1181.002563 1159.279663 1153.800293 1147.090088 1142.618164 1138.86145 1132.796997 1131.318359 1131.139404 1131.26123 1131.096924 1131.401978 1132.875366 1134.451416 1135.605469 1135.0625 1137.017578 1137.733521 1136.035767 1133.773315 1133.840088 1143.230835 1151.688232 1159.894897 1156.720825 1149.564819 1137.926147 1130.018799 1124.760254 1120.688477 1117.387451 1114.512939 1111.949951 1109.883911 1109.912231 1110.062256 1108.494629 1106.953857 1105.184692 1103.743286 1102.435303 1101.295166 1100.285522 1099.575439 1098.221191 1097.263916 1096.522705 1096.099243 1095.648682 1095.126343 1094.709717 1094.290649 1093.81543 1093.389404 1092.897217 1092.418335 +1252.879395 1253.518433 1254.410278 1255.172729 1256.530151 1259.106323 1262.463013 1265.132935 1265.059692 1262.72937 1257.454224 1252.270874 1252.575684 1264.108887 1272.999512 1275.720337 1274.994995 1273.852417 1272.538208 1270.603149 1267.139404 1261.956665 1256.21521 1251.914551 1249.248657 1247.001831 1243.108521 1233.921997 1227.68457 1222.19873 1209.330322 1199.828857 1193.157959 1193.671265 1191.347168 1184.820557 1168.685303 1158.40686 1150.056885 1144.863892 1142.876343 1143.131714 1143.227905 1143.666382 1144.484375 1145.729004 1150.57959 1162.335083 1176.750122 1192.959473 1212.908813 1223.828125 1213.519531 1202.228394 1193.784424 1189.678345 1182.846802 1181.449463 1194.383179 1202.053467 1209.332153 1213.76001 1218.741089 1220.346436 1220.058228 1220.054688 1219.893555 1219.696167 1219.577515 1219.430664 1219.250366 1218.829346 1218.141724 1217.531982 1216.846924 1216.263794 1215.696899 1215.165527 1214.516357 1213.559082 1212.589233 1211.536621 1210.785278 1210.344116 1209.786865 1208.947876 1207.768799 1207.5354 1211.791504 1213.521484 1214.401001 1214.654175 1214.485107 1214.093994 1213.553345 1212.884644 1212.173828 1211.380981 1210.505615 1209.532349 1208.519897 1207.073486 1204.18689 1201.228638 1198.157349 1195.131836 1193.673584 1194.207642 1200.059692 1205.260986 1208.489868 1210.13562 1211.07373 1211.830566 1213.166016 1214.388306 1215.625244 1215.795532 1215.609985 1216.357666 1218.39856 1219.582031 1215.365845 1208.158813 1219.121704 1221.414551 1221.991089 1222.800659 1222.709595 1222.667236 1222.815552 1222.343384 1220.881592 1219.289062 1218.401001 1218.298462 1218.748169 1219.858887 1222.431763 1223.837646 1224.667847 1224.942749 1224.939697 1224.425659 1223.866577 1223.246582 1222.814453 1223.129517 1222.988647 1221.608032 1219.970337 1219.765259 1218.742432 1216.029419 1213.630127 1211.847534 1210.568848 1209.756714 1209.454712 1209.371948 1209.119507 1208.213623 1206.819092 1211.884644 1218.258911 1223.598389 1229.842285 1236.400879 1243.852783 1253.264893 1258.831177 1260.373535 1256.671143 1246.220093 1254.450806 1259.781494 1260.44165 1257.365967 1243.323364 1231.657837 1222.920654 1215.643799 1208.650635 1207.193115 1209.626587 1211.788208 1213.022583 1213.715454 1214.07373 1214.419189 1214.652222 1214.745728 1214.687988 1214.574585 1214.436401 1214.369873 1214.346436 1214.21936 1214.190552 1214.164917 1213.993164 1213.675415 1213.326538 1213.167358 1213.140137 1212.989868 1212.867065 1212.630493 1212.418945 1212.162598 1211.888916 1211.546997 1211.071289 1210.469482 1209.856812 1209.199829 1208.783813 1208.21875 1207.625 1207.166504 1206.400024 1205.729126 1205.035767 1204.375122 1203.567505 1202.706177 1201.776367 1200.736206 1199.535889 1198.546753 1197.708862 1197.437378 1197.291016 1197.240845 1197.244629 1197.241821 1197.253906 1196.965942 1196.519653 1196.248413 1196.630493 1196.553589 1196.178955 1195.253906 1192.130859 1190.126099 1191.179932 1192.078491 1193.277832 1194.838989 1195.897705 1196.629272 1197.218262 1197.868774 1198.449097 1198.857056 1199.170898 1199.245117 1199.056519 1198.728027 1198.300537 1197.931885 1197.508179 1196.922119 1196.191406 1195.327148 1195.356812 1196.851929 1199.890991 1201.666138 1202.872437 1203.518799 1203.747803 1203.618042 1203.365479 1202.712769 1201.693848 1199.666504 1197.985229 1198.275757 1198.852295 1197.495117 1194.768188 1192.80481 1190.42334 1188.167114 1186.643188 1185.57666 1184.140747 1181.630737 1177.555786 1171.872437 1171.374756 1171.913574 1170.056763 1171.274902 1175.179932 1177.547729 1178.349487 1179.091675 1179.529053 1179.715332 1179.422729 1178.499634 1177.585693 1176.747314 1175.023682 1175.535156 1175.887085 1175.792114 1175.082275 1174.128296 1172.903809 1170.969482 1171.501709 1172.960327 1174.308838 1175.039795 1175.536377 1176.107422 1176.404175 1176.404053 1176.05481 1175.272827 1174.210083 1173.046265 1171.635864 1169.934692 1167.001587 1164.246826 1163.583008 1163.705078 1164.301514 1164.484009 1164.436646 1164.124634 1163.929688 1163.807251 1163.693726 1163.657104 1163.635376 1163.46521 1163.205811 1163.058716 1162.882324 1162.897461 1162.915771 1163.008911 1162.933472 1162.951538 1162.939575 1162.788208 1162.649414 1162.463867 1162.267212 1161.967407 1161.66333 1161.190796 1160.688232 1160.147827 1159.900269 1159.490723 1159.093628 1158.810303 1158.326416 1157.977295 1157.457153 1156.783691 1156.046387 1155.112427 1154.243408 1153.136475 1152.212524 1151.434937 1150.823608 1150.299194 1149.661865 1149.132568 1149.02832 1149.084595 1149.115723 1149.117432 1148.866333 1148.238647 1147.555664 1146.928467 1146.32373 1151.831665 1156.713257 1162.339478 1167.553833 1170.799194 1172.567871 1171.187256 1171.025024 1181.078613 1184.386963 1172.949707 1169.743774 1169.445801 1169.799438 1172.767944 1175.319458 1177.752686 1176.036987 1172.655273 1170.922974 1171.012817 1193.665527 1196.614014 1191.491943 1186.940063 1183.99292 1189.48645 1192.538452 1193.827148 1194.975708 1198.76355 1199.732666 1198.487427 1195.015503 1195.096924 1197.267944 1199.783691 1200.337524 1199.039917 1195.387329 1198.925171 1205.450439 1202.820557 1201.980103 1200.481445 1198.858887 1199.993408 1201.175171 1200.908691 1199.064209 1195.666626 1196.489868 1197.165527 1196.20166 1194.841797 1194.167725 1195.92395 1206.472778 1210.290039 1213.638184 1216.634888 1218.98877 1221.356567 1224.392334 1227.348999 1231.051392 1233.222168 1235.366699 1236.225464 1236.464844 1236.645142 1236.299805 1233.32251 1228.719482 1222.53186 1227.784546 1233.983643 1237.405029 1238.829468 1239.523071 1240.967285 1241.524414 1239.562012 1234.68103 1226.978516 1219.117798 1218.567017 1223.563354 1221.352661 1211.981323 1207.731689 1220.966187 1222.669556 1217.484375 1208.435181 1200.424561 1195.182617 1200.817261 1207.026001 1209.506714 1208.307861 1209.425903 1211.083496 1209.553467 1205.984741 1205.154785 1203.466553 1198.993286 1199.56543 1212.585449 1220.339355 1223.815063 1228.24585 1232.456421 1235.990234 1238.412842 1239.644653 1238.543945 1235.975708 1233.023315 1231.060791 1229.628174 1228.518066 1230.273804 1234.74939 1236.864014 1237.386475 1236.691284 1234.509399 1233.442261 1232.64917 1225.938843 1219.508301 1220.12561 1221.264771 1218.096924 1216.59668 1218.110718 1213.127075 1216.684326 1222.268311 1234.110474 1237.148926 1234.845337 1236.144409 1236.514893 1235.27417 1233.150269 1226.976074 1220.581787 1216.929565 1213.797729 1210.225952 1205.150757 1198.536011 1186.250488 1160.704834 1154.99292 1182.527344 1190.121338 1186.981445 1181.738525 1179.773438 1182.550537 1182.921997 1180.489014 1180.597656 1184.298218 1182.55957 1162.90271 1149.841675 1143.957031 1139.614258 1136.153931 1132.609253 1131.847168 1131.83252 1133.064697 1133.681274 1133.441772 1135.867676 1139.204102 1141.459473 1141.853149 1142.579346 1142.698975 1139.426392 1136.06897 1133.939331 1134.819458 1149.338257 1151.054443 1147.037842 1139.891357 1131.878784 1126.683105 1122.6521 1119.575439 1116.423828 1113.635864 1111.184448 1109.853027 1109.965942 1110.04126 1108.566284 1106.563721 1104.727295 1103.032593 1101.630859 1100.461548 1099.102051 1098.056396 1097.584961 1096.956055 1096.460693 1095.86145 1095.470581 1094.981689 1094.489502 1093.970947 1093.548706 1093.067505 1092.549316 1091.911499 +1254.881958 1256.426392 1258.413696 1260.234497 1263.361206 1267.181885 1270.642456 1272.90332 1272.918091 1270.543457 1265.781494 1260.127686 1255.758057 1259.277222 1272.382812 1281.525757 1282.636597 1281.321655 1278.954224 1276.435303 1273.060181 1268.24707 1262.950806 1258.545776 1255.496094 1252.421143 1247.945801 1240.98584 1230.47583 1224.332764 1211.178955 1203.733398 1201.083618 1201.331543 1196.375732 1184.072998 1167.838379 1157.904907 1150.401489 1145.060669 1143.264038 1143.469604 1143.613281 1144.028809 1144.645508 1145.775146 1148.951172 1160.397339 1175.257935 1191.088867 1212.616333 1224.963989 1218.22583 1205.592773 1197.955322 1192.860596 1185.626221 1180.59021 1192.693359 1201.761597 1208.410156 1215.125488 1221.154541 1221.042969 1220.501709 1220.349609 1220.365234 1220.294312 1220.206299 1220.23999 1220.021118 1219.654663 1218.88147 1218.137085 1217.558594 1216.867798 1216.36377 1215.862793 1215.313354 1214.596802 1213.879883 1213.164551 1212.617432 1211.927246 1211.268311 1210.38916 1209.525879 1210.989258 1213.07019 1214.273682 1214.959595 1214.945557 1214.664551 1214.033203 1213.433228 1212.594482 1211.935791 1211.158081 1210.237915 1209.329712 1208.32959 1206.804565 1204.125122 1201.243042 1198.365723 1196.198486 1194.125977 1195.185425 1201.639526 1207.738403 1209.80835 1211.657471 1213.178223 1214.521362 1215.92334 1217.189331 1218.744385 1219.236816 1218.632812 1218.02771 1219.859375 1221.378906 1220.755127 1212.103638 1215.907959 1222.400757 1224.055054 1225.372925 1225.454346 1225.101929 1224.484131 1223.527588 1221.85791 1219.834106 1219.276733 1218.942017 1219.589355 1220.858521 1223.23999 1225.1427 1226.329956 1227.029541 1227.199463 1226.849365 1226.41272 1225.782715 1225.116699 1224.500854 1223.765503 1220.840698 1219.224976 1218.625244 1217.842285 1216.344971 1214.612915 1213.174072 1212.139771 1211.249512 1210.760132 1210.272949 1209.650635 1208.677368 1207.4375 1210.119263 1215.937134 1219.921265 1225.494141 1231.794678 1238.487671 1245.984497 1254.244141 1258.55481 1257.80957 1257.399658 1257.138184 1260.557861 1261.004028 1257.338745 1242.846802 1232.034058 1223.952148 1215.317261 1207.053345 1208.464233 1211.94751 1214.710693 1216.030273 1216.015869 1215.821045 1215.768066 1215.820068 1215.820068 1215.701172 1215.550293 1215.358398 1215.271851 1215.124023 1215.076416 1215.108032 1214.983398 1214.765625 1214.529175 1214.121094 1214.058716 1213.882812 1213.670898 1213.462524 1213.147583 1212.774658 1212.468506 1212.108643 1211.64209 1211.004883 1210.221069 1209.512329 1208.883179 1208.199829 1207.590088 1207.305176 1206.829102 1206.412842 1205.851929 1205.313477 1204.610718 1203.881348 1203.11853 1202.160034 1201.328735 1200.4021 1199.694214 1199.048584 1198.519653 1198.229248 1198.048828 1197.926392 1197.824585 1197.776611 1197.613403 1197.444824 1197.245728 1197.044678 1196.805542 1196.162354 1195.15625 1192.735229 1190.625244 1191.161865 1193.79541 1194.522461 1195.194092 1196.03186 1196.838379 1197.468872 1198.085449 1198.766602 1199.235352 1199.549316 1199.599487 1199.556519 1199.104858 1198.729614 1198.422363 1198.039917 1197.601196 1196.965942 1196.590088 1197.312378 1198.827271 1201.439697 1203.193481 1204.278442 1204.831543 1204.887329 1204.715088 1204.428589 1203.892578 1202.984619 1202.074951 1201.618896 1202.556152 1203.637207 1201.839355 1197.729858 1194.963501 1192.167236 1188.720337 1186.135376 1184.566284 1182.955444 1181.275757 1179.075928 1176.290405 1174.229858 1173.288696 1170.036133 1170.897827 1177.635254 1180.951416 1181.1073 1181.409302 1181.486206 1181.931274 1181.960571 1181.217041 1180.577759 1180.053101 1179.276001 1178.481079 1177.809937 1177.24939 1176.138916 1174.565674 1172.218262 1171.188477 1172.926147 1174.20105 1175.496948 1176.412354 1177.017212 1177.696411 1178.064087 1178.044312 1177.256836 1176.005981 1174.348999 1172.615845 1170.956299 1168.762939 1165.328491 1164.774048 1164.878906 1165.670654 1166.405396 1166.508057 1166.27002 1165.77417 1165.371826 1165.148071 1164.960083 1164.911377 1164.764404 1164.471313 1164.214111 1164.018311 1163.841797 1163.785156 1163.892578 1163.860962 1163.642212 1163.440796 1163.275269 1163.157837 1162.974976 1162.72583 1162.396484 1161.963135 1161.62915 1161.089233 1160.634521 1160.152344 1159.660889 1159.293579 1159.000244 1158.601807 1158.375977 1158.529053 1158.525024 1157.081787 1155.894287 1154.872192 1153.789062 1152.72998 1151.544556 1150.833862 1150.565552 1150.178467 1149.900024 1149.892334 1149.969604 1150.074829 1150.107788 1150.011475 1149.698608 1149.279785 1148.630005 1147.927368 1147.317017 1150.851685 1154.727295 1157.518555 1160.296509 1165.317871 1168.202759 1168.765259 1173.16748 1176.765381 1178.813354 1172.263916 1169.447754 1169.964111 1178.503662 1182.318726 1182.553467 1184.440552 1180.019287 1171.084595 1170.080811 1182.499512 1192.209106 1192.910522 1195.769287 1190.978882 1187.808594 1190.029297 1194.308594 1195.122314 1196.387939 1197.690186 1196.917358 1195.430542 1193.931396 1193.236694 1194.356445 1195.530518 1197.241089 1195.001221 1195.012573 1203.75293 1203.822144 1198.265991 1197.246948 1196.715576 1194.789551 1197.463989 1198.698853 1198.158447 1196.503906 1194.10376 1193.519287 1193.63562 1193.679199 1193.798462 1195.528564 1203.132324 1210.52356 1215.527954 1219.229736 1221.986572 1224.660645 1227.470093 1230.392334 1233.368652 1237.653442 1241.172485 1245.030884 1245.600464 1245.17627 1244.064209 1241.705444 1238.415405 1234.241089 1230.190063 1231.613647 1237.533325 1242.320679 1243.769897 1244.272217 1243.67981 1245.547363 1241.661743 1235.840088 1227.515747 1218.519897 1226.970459 1231.036377 1224.779053 1217.341553 1215.074829 1222.07019 1222.674194 1217.329834 1207.91626 1202.265869 1200.679565 1204.894653 1210.698975 1214.298462 1215.694946 1216.056641 1215.947876 1214.981812 1212.401611 1211.358032 1210.236694 1205.028076 1200.201782 1202.191162 1213.24231 1219.956299 1223.71521 1228.356567 1232.575928 1233.90918 1234.154175 1233.027344 1230.630981 1228.410034 1226.05957 1223.884521 1223.645874 1227.012573 1231.428223 1231.632202 1231.317017 1231.057495 1230.151611 1229.264526 1229.232178 1227.514893 1228.206299 1232.985474 1232.616821 1227.203369 1227.509644 1228.203613 1223.340698 1226.410278 1229.252075 1237.857544 1242.245361 1240.847412 1239.714722 1239.019409 1237.442017 1234.450195 1230.00769 1226.33667 1224.299438 1221.497192 1215.196777 1207.691772 1197.785156 1184.845093 1163.561157 1157.844604 1187.232056 1196.513794 1194.000366 1186.247559 1183.185669 1185.22644 1185.219238 1183.665161 1177.448975 1172.847534 1168.695801 1155.415894 1146.996094 1142.211792 1138.181396 1134.197388 1133.159546 1133.203003 1134.404297 1137.44397 1138.623657 1139.015991 1141.158691 1146.091919 1148.888184 1147.795166 1148.206909 1147.391968 1142.416626 1138.118042 1135.617432 1132.784302 1131.284424 1136.512451 1136.078247 1131.842163 1126.898682 1122.953125 1120.865356 1118.065674 1115.33374 1112.759033 1110.33606 1109.861938 1109.951538 1109.96875 1108.325439 1106.112915 1104.059937 1102.242554 1100.725708 1099.712524 1098.493286 1097.483643 1097.158325 1096.864502 1096.511597 1096.095703 1095.579712 1095.122437 1094.530762 1094.110474 1093.556763 1093.102295 1092.57251 1091.961792 +1258.039307 1261.511719 1264.589844 1267.479614 1270.633179 1274.003052 1277.233765 1280.741699 1282.14563 1278.260376 1272.806152 1267.391968 1261.353027 1256.8396 1268.454102 1277.359375 1283.350586 1287.720703 1287.362305 1283.244141 1279.374756 1274.406616 1268.697998 1264.890991 1261.442139 1257.535889 1252.050171 1246.79541 1236.696167 1224.12207 1211.20105 1210.554199 1212.69397 1207.719971 1195.555054 1180.647705 1167.019287 1158.307373 1151.698975 1145.919067 1143.75354 1143.910889 1144.007324 1144.38562 1144.766235 1145.445312 1146.46936 1156.348511 1171.373779 1184.91272 1202.970337 1222.769775 1222.007202 1211.517334 1202.786743 1195.696899 1186.609009 1181.115967 1187.840698 1197.955566 1204.017212 1210.130127 1218.626465 1220.173706 1219.603027 1219.245361 1220.320923 1220.649048 1220.664673 1220.590698 1220.395264 1220.072876 1219.373169 1218.613403 1218.049316 1217.370605 1216.843384 1216.547729 1216.205688 1215.777954 1215.285522 1214.812988 1214.255615 1213.618286 1213.055054 1212.628418 1212.822388 1213.63208 1214.487915 1215.215942 1215.428101 1215.322388 1214.865112 1214.109131 1213.332886 1212.502808 1211.587036 1210.803589 1209.954102 1209.229614 1208.313965 1206.484131 1203.721924 1200.609741 1198.535034 1196.425659 1194.644165 1195.935181 1201.344971 1208.050293 1210.839111 1213.121826 1215.187866 1216.911011 1218.236328 1219.529297 1221.048096 1221.74707 1221.247681 1219.480591 1220.585938 1222.376343 1221.937866 1216.547607 1214.91626 1222.164673 1226.759888 1229.276123 1228.580811 1227.223145 1226.124268 1224.969238 1223.236206 1221.521484 1220.970703 1219.627686 1220.964111 1222.751465 1224.860107 1226.759155 1228.063232 1229.172363 1229.700684 1229.566406 1229.119141 1228.062744 1226.904907 1225.647827 1224.434204 1220.654541 1218.996948 1218.158081 1217.343506 1216.526611 1215.480835 1214.478149 1213.463379 1212.578491 1211.786743 1211.147339 1210.266235 1209.286621 1208.325684 1210.425537 1213.817017 1217.172485 1221.261353 1227.890503 1233.46228 1240.981689 1248.321289 1254.638184 1257.143921 1258.092285 1259.922852 1262.014648 1261.944458 1257.495972 1242.605713 1231.130005 1224.828979 1212.960205 1207.735718 1210.53772 1214.329102 1218.588989 1219.532837 1218.086304 1217.186523 1217.009155 1217.008179 1216.95459 1216.697998 1216.518433 1216.343506 1216.148804 1215.950073 1215.876831 1215.881104 1215.782959 1215.518799 1215.256714 1214.984863 1214.898926 1214.574585 1214.327759 1213.953735 1213.563843 1213.143677 1212.792725 1212.306885 1211.713013 1210.937256 1209.839478 1208.681274 1207.79248 1207.561768 1207.291748 1207.270752 1207.11853 1206.675781 1206.091064 1205.518799 1204.778809 1204.068604 1203.331299 1202.579224 1201.990967 1201.465942 1200.900513 1200.258057 1199.673218 1199.192505 1198.922485 1198.664429 1198.557617 1198.421997 1198.351929 1198.161499 1197.890015 1197.576172 1197.099243 1196.424927 1195.7323 1194.301758 1192.168457 1191.111694 1195.245972 1195.900879 1195.920898 1196.379883 1197.053711 1197.649902 1198.332397 1198.985962 1199.53064 1199.841797 1200.050537 1199.951172 1199.665283 1199.415894 1199.046631 1198.869629 1198.805908 1198.749023 1198.960938 1200.018311 1201.84082 1203.765015 1205.078613 1205.834351 1206.35437 1206.102417 1205.592285 1205.371704 1205.059082 1204.800293 1204.299316 1204.048584 1205.816284 1207.68335 1207.159668 1201.374268 1196.525513 1192.802368 1187.794067 1184.837402 1183.031128 1182.10083 1182.061768 1182.204102 1180.266846 1176.392456 1173.326904 1170.289673 1171.233276 1180.061646 1184.466187 1183.521118 1183.682617 1183.459839 1184.009399 1184.047607 1183.387329 1183.026978 1182.981323 1182.254028 1180.704834 1179.820557 1179.070068 1177.701294 1175.117432 1170.889404 1172.275879 1174.167114 1175.843018 1176.968384 1177.685303 1178.549316 1179.335327 1179.933838 1180.081543 1178.880615 1176.674561 1174.219604 1171.664185 1170.202515 1168.286255 1165.96167 1165.292603 1166.441528 1168.393066 1169.246582 1168.923096 1167.994507 1167.295044 1166.770386 1166.416504 1166.191162 1166.102295 1165.948853 1165.654053 1165.344482 1165.074707 1164.919434 1164.969238 1164.777954 1164.590332 1164.314209 1163.999634 1163.814331 1163.619019 1163.46814 1163.015137 1162.659668 1162.213013 1161.776611 1161.24231 1160.832886 1160.294678 1159.691406 1159.252075 1158.853638 1158.750732 1158.765259 1158.966675 1158.937988 1157.667969 1155.964722 1154.585815 1153.721802 1152.744263 1151.579102 1151.364624 1151.222412 1150.966309 1150.72937 1150.715576 1150.848877 1150.838989 1150.952759 1150.91394 1150.693115 1150.294434 1149.877686 1149.806885 1150.70874 1152.426392 1154.542603 1156.116821 1157.072632 1158.606323 1161.591187 1164.627441 1169.062378 1171.255737 1171.487671 1168.765991 1169.013184 1173.641113 1182.058228 1183.011597 1182.59436 1181.61377 1177.016968 1170.579956 1170.407593 1178.723389 1182.076172 1182.769165 1185.225952 1186.380005 1186.178345 1187.933105 1195.761963 1196.187134 1196.781982 1197.327148 1195.611084 1195.312256 1194.651733 1192.956177 1195.657837 1196.209595 1195.783936 1193.560669 1195.776245 1195.451782 1194.403076 1193.64624 1193.370117 1192.861206 1193.487061 1196.133545 1196.507446 1195.659302 1193.688354 1192.235718 1192.113403 1192.498779 1192.751709 1194.116577 1197.710083 1204.890137 1212.582275 1219.904541 1223.421631 1226.920166 1230.628174 1233.647095 1237.590454 1242.366455 1246.226074 1249.587891 1253.374878 1254.963623 1254.906372 1252.898315 1248.689575 1243.753174 1238.321899 1231.553833 1232.778076 1243.386841 1247.739258 1248.884644 1249.239868 1248.695679 1249.228027 1245.112061 1238.236328 1228.210571 1217.501221 1239.120728 1237.309082 1229.048828 1219.756226 1218.860107 1223.996216 1223.571167 1216.428101 1205.596802 1204.231323 1204.082397 1206.760132 1212.53894 1218.460083 1221.470703 1221.526367 1221.189331 1220.911865 1219.883301 1218.180664 1214.940063 1208.977051 1206.226807 1200.526489 1202.12085 1211.638184 1218.271484 1221.535767 1224.859497 1227.218506 1227.485107 1226.517578 1225.078125 1223.309082 1221.15332 1218.902466 1219.190186 1222.767456 1224.85498 1225.338379 1225.325195 1225.338501 1225.434326 1225.146362 1225.700806 1228.239868 1232.054932 1234.092285 1236.230103 1236.103882 1237.547974 1237.19458 1235.101807 1239.184204 1241.133911 1244.613281 1245.119507 1243.953003 1242.586914 1241.612183 1240.132812 1237.264038 1233.667114 1233.732178 1231.31665 1225.038208 1217.94873 1207.842651 1198.091919 1189.74353 1177.147827 1159.117065 1187.848511 1197.147583 1196.444214 1191.64563 1188.114136 1186.110596 1185.707031 1185.356812 1170.136475 1162.032104 1153.486572 1148.127563 1143.995728 1141.272461 1138.769897 1137.073364 1137.72168 1138.136597 1139.766602 1144.8479 1147.314575 1144.786377 1145.081055 1153.550049 1158.524536 1155.710571 1151.710205 1147.228516 1141.24939 1136.638672 1134.5979 1132.144287 1130.175293 1129.141724 1127.62439 1124.267822 1121.608032 1120.762329 1119.526001 1117.270142 1114.350098 1111.973389 1110.009155 1109.370483 1109.602417 1109.908813 1107.372314 1105.326904 1103.399414 1101.256226 1099.644043 1098.446777 1097.579712 1097.242065 1097.221924 1097.084229 1096.834839 1096.450806 1095.988403 1095.469971 1094.978027 1094.45459 1093.922241 1093.497681 1092.964111 1092.331909 +1265.743042 1268.122192 1270.915283 1272.981323 1277.167725 1280.636597 1284.678955 1288.518921 1289.653076 1285.088257 1278.82312 1273.551147 1269.833984 1266.56958 1266.043213 1270.69751 1279.293945 1290.116577 1295.387817 1293.853149 1287.905518 1281.333862 1275.118286 1270.616333 1267.323853 1260.489258 1253.281982 1246.711914 1234.695068 1220.597168 1219.918701 1222.558838 1215.839844 1204.357788 1188.979004 1173.154297 1166.654663 1160.113525 1153.186035 1146.62854 1144.092529 1144.345337 1144.437378 1144.817261 1145.243042 1145.679932 1146.103394 1148.240356 1165.439941 1178.194092 1193.883301 1211.551514 1224.51355 1217.246704 1205.290527 1195.235352 1190.198853 1184.602905 1183.61853 1190.917358 1196.581177 1202.377441 1209.02356 1211.725952 1211.526855 1207.525879 1213.919922 1220.462036 1220.880859 1220.792725 1220.578735 1220.236694 1219.699097 1218.886475 1218.34375 1217.796753 1217.398682 1217.177124 1216.976074 1216.79541 1216.522217 1216.227661 1215.874023 1215.421021 1215.123413 1214.913574 1215.019897 1215.394653 1215.743652 1216.146484 1216.079956 1215.781128 1215.195557 1214.428101 1213.385498 1212.431641 1211.451538 1210.524292 1209.810181 1208.986084 1208.029785 1205.847778 1202.576782 1199.605225 1197.660034 1195.803589 1197.41272 1199.31897 1198.583252 1206.050659 1210.599487 1214.108398 1216.976074 1219.095825 1220.529907 1221.482544 1222.748779 1223.65271 1223.427612 1222.431519 1223.212158 1223.905518 1223.709229 1219.783203 1214.782715 1222.257935 1228.841919 1232.453613 1230.742188 1228.794067 1227.883179 1226.736084 1225.411377 1224.064331 1223.159424 1222.55542 1223.383057 1225.193726 1227.094116 1228.544678 1229.404297 1230.696655 1231.95166 1232.014648 1231.142578 1229.795776 1228.297607 1226.770874 1225.022461 1220.921875 1219.460327 1218.299927 1217.566284 1216.927246 1216.474731 1215.804199 1214.860352 1213.84729 1212.917114 1212.009155 1211.084473 1210.021729 1209.32605 1209.947388 1213.217163 1216.999878 1221.454834 1225.599976 1230.016724 1235.753296 1242.244385 1247.138916 1252.888794 1256.327026 1259.722412 1263.805542 1262.30957 1258.384399 1244.567749 1233.134766 1225.200073 1211.159424 1210.174683 1212.68042 1216.372314 1219.953613 1219.99646 1218.885864 1217.937744 1217.918945 1218.10498 1217.909546 1217.793091 1217.422974 1217.115234 1216.958008 1216.770142 1216.651489 1216.560181 1216.490845 1216.233398 1215.975708 1215.755737 1215.494385 1215.315918 1214.95166 1214.545166 1214.222656 1213.759766 1213.34021 1212.728149 1212.022583 1211.05896 1209.401367 1207.568359 1207.557007 1207.696899 1207.908813 1207.928467 1207.721436 1207.221191 1206.643066 1205.9375 1205.203003 1204.343628 1203.736694 1203.179199 1202.724243 1202.37146 1201.869873 1201.324951 1200.700684 1200.171509 1199.773071 1199.555908 1199.406616 1199.324097 1199.104126 1198.724731 1198.452271 1198.054932 1197.568359 1196.904907 1196.244507 1195.57666 1193.781982 1192.404541 1192.675903 1196.203125 1196.463867 1196.78479 1197.186401 1197.819336 1198.493286 1199.096436 1199.726074 1200.147827 1200.34436 1200.483276 1200.365723 1200.116089 1200.031128 1200.035156 1200.180054 1200.496704 1201.15918 1202.30957 1204.519653 1206.565796 1207.045776 1207.153076 1207.720947 1207.278564 1206.508545 1206.114258 1206.601318 1206.624878 1206.158203 1205.158691 1206.306274 1207.833496 1207.78833 1201.9552 1197.238159 1192.525391 1186.202637 1183.204712 1182.622437 1183.120728 1184.018188 1184.059082 1182.918823 1178.460938 1173.409668 1170.035889 1172.632202 1180.057007 1184.770142 1185.578979 1185.408325 1185.279663 1185.442627 1185.439331 1185.274658 1185.070068 1184.575195 1183.735718 1182.224365 1182.216919 1181.332397 1179.56543 1177.376587 1175.345093 1174.939697 1176.377075 1177.671021 1178.504639 1178.956665 1179.742676 1180.724365 1181.857666 1182.311035 1181.119385 1177.4104 1173.281128 1170.854248 1169.358643 1167.968384 1166.868042 1166.071655 1168.372314 1170.65918 1171.151855 1170.57312 1169.482544 1168.559937 1167.962402 1167.601074 1167.401367 1167.293823 1167.169556 1166.951904 1166.634155 1166.324097 1166.130859 1165.83374 1165.609497 1165.344482 1164.905518 1164.772095 1164.462158 1164.029053 1163.71521 1163.477173 1163.039062 1162.576904 1162.099609 1161.565552 1161.05249 1160.435181 1159.891357 1159.136353 1158.72876 1158.874756 1159.064941 1158.964355 1158.421265 1157.261963 1155.720337 1154.311279 1153.611206 1152.861084 1152.106689 1151.915771 1151.974976 1151.828735 1151.705566 1151.709961 1151.83252 1151.88269 1151.922485 1151.977539 1151.758179 1151.452515 1151.283569 1151.401733 1152.190674 1153.33606 1154.535645 1155.420776 1156.241333 1157.098877 1158.526001 1158.123169 1161.27124 1163.609985 1163.67395 1161.068726 1167.356201 1172.14563 1172.171265 1171.87561 1171.569458 1172.733643 1170.981689 1169.880737 1170.514893 1173.673462 1176.25 1177.945923 1179.595215 1181.624878 1181.859375 1182.871826 1188.202271 1193.425171 1194.956787 1195.432617 1194.96106 1194.922485 1193.546265 1189.831177 1193.023193 1193.203003 1192.479736 1191.189819 1191.624023 1191.506226 1190.713501 1190.288574 1189.519897 1189.647095 1190.545288 1192.067383 1191.981201 1190.448853 1188.711426 1189.775879 1191.595215 1192.646973 1195.04834 1199.290039 1202.582031 1204.631348 1210.163574 1219.513184 1225.384521 1230.932861 1235.348022 1239.628784 1244.318237 1250.498291 1255.335205 1258.817017 1262.589355 1264.957764 1265.791626 1261.44458 1257.253662 1250.710205 1244.325439 1233.164917 1237.446655 1248.048828 1253.292236 1254.996338 1255.168213 1253.726318 1253.862549 1248.882935 1241.210815 1231.091919 1229.172852 1247.530396 1244.138306 1234.50769 1222.529785 1221.518066 1229.80542 1225.063843 1213.306274 1205.881958 1206.817749 1205.744629 1207.057739 1213.992065 1220.841431 1224.47583 1225.620239 1225.658325 1225.185791 1224.491699 1222.96814 1221.233398 1218.316284 1213.560913 1208.262939 1203.299927 1202.429077 1206.919189 1210.459351 1213.951172 1217.223511 1218.871704 1219.153687 1218.669556 1217.771362 1216.247437 1215.609619 1216.635376 1218.807617 1219.466187 1219.459106 1218.65686 1220.175781 1221.012329 1219.848511 1220.446411 1226.84375 1231.060791 1234.417114 1237.990723 1243.678345 1245.927246 1244.631958 1243.882568 1246.207153 1246.432251 1245.856689 1245.527466 1245.518433 1245.223389 1244.28894 1243.203979 1241.137573 1238.195557 1236.078613 1232.955688 1224.056396 1217.723389 1211.351318 1207.073975 1194.819946 1183.382324 1164.600586 1188.137085 1197.035278 1196.955688 1193.770996 1189.414307 1183.710449 1181.58374 1171.534424 1162.933472 1156.021851 1145.21521 1144.607056 1142.991943 1141.630981 1141.145264 1142.513428 1145.734497 1145.973267 1144.444824 1149.849854 1153.429321 1150.808472 1150.643677 1159.645508 1161.697998 1159.710205 1154.012939 1145.414429 1138.829102 1133.462524 1132.630737 1131.325195 1129.679443 1127.608765 1124.398682 1122.140503 1121.005493 1120.113892 1118.81543 1116.681396 1113.893921 1111.164307 1109.370728 1108.872559 1108.557617 1107.93042 1106.744507 1105.073853 1102.92688 1100.438477 1098.341675 1097.515503 1097.341553 1097.3479 1097.376587 1097.75354 1097.764282 1097.505493 1096.797241 1096.10437 1095.631836 1095.07373 1094.552734 1093.963501 1093.376343 1092.854614 +1268.696167 1267.871338 1273.34082 1277.519043 1282.377808 1288.991943 1294.127686 1296.01355 1296.548584 1292.680908 1284.409668 1277.724609 1274.844971 1271.160645 1269.425659 1269.800659 1274.951782 1279.21167 1292.329712 1294.908203 1295.101685 1287.595703 1278.927124 1274.763184 1271.310303 1264.546021 1254.768677 1246.456543 1233.395996 1226.034058 1229.011719 1222.640747 1208.136475 1193.638062 1180.891968 1173.743408 1174.734741 1165.988159 1155.500122 1147.818237 1144.819092 1144.899048 1145.158081 1145.527344 1145.975708 1146.497192 1146.852661 1146.14917 1154.230469 1167.328003 1184.189087 1197.58252 1215.333008 1220.803711 1207.848267 1199.932861 1195.021484 1194.686157 1195.364136 1189.273315 1188.448853 1190.493408 1193.196777 1194.794312 1196.077393 1200.22229 1209.103882 1219.074707 1221.138794 1221.05896 1220.752075 1220.307861 1219.80896 1219.137207 1218.683105 1218.356201 1218.049072 1217.911011 1217.918335 1217.813477 1217.560181 1217.549805 1217.33667 1217.227661 1217.228638 1216.978638 1216.71814 1216.82312 1216.862915 1216.860229 1216.661865 1216.207031 1215.526978 1214.72644 1213.604614 1212.569336 1211.447266 1210.461426 1209.515503 1208.6521 1207.480591 1204.398193 1200.875366 1197.932617 1196.940674 1198.733032 1205.178833 1208.996094 1204.480591 1201.952515 1208.57312 1215.926514 1218.67981 1220.76416 1222.567505 1223.713867 1224.899292 1225.751831 1225.895996 1225.634644 1225.948486 1225.897095 1224.632446 1220.912476 1215.281494 1222.408447 1228.963989 1232.683716 1231.345581 1230.078857 1229.525269 1229.017334 1227.650391 1226.553711 1225.994751 1225.925049 1226.682129 1227.854736 1229.40271 1230.709473 1231.139282 1232.153198 1233.133057 1233.645508 1232.545044 1231.023071 1229.359741 1227.443237 1225.589478 1221.598022 1219.92749 1218.757568 1218.047363 1217.745972 1217.568359 1217.23291 1216.316528 1215.219849 1214.098267 1212.924194 1211.893799 1210.950562 1210.21167 1209.95105 1212.630005 1216.197144 1219.459961 1223.254761 1227.320801 1230.468994 1236.887695 1242.285156 1248.585815 1254.632202 1258.61145 1263.522217 1262.444458 1259.526978 1247.385986 1235.222778 1225.815186 1208.748901 1211.268555 1214.532104 1217.481934 1220.176025 1219.968506 1219.0625 1218.488647 1218.959961 1219.174072 1218.923218 1218.528687 1218.362183 1218.167114 1217.825684 1217.595337 1217.451294 1217.390503 1217.306641 1217.08252 1216.890625 1216.548462 1216.346191 1216.05603 1215.754761 1215.359375 1214.904663 1214.519653 1214.000732 1213.443848 1212.549194 1211.401978 1210.061768 1208.195923 1208.32312 1208.715454 1208.842529 1208.695801 1208.260986 1207.634277 1206.987305 1206.195435 1205.383911 1204.641724 1204.160278 1203.797607 1203.553711 1203.212891 1202.856201 1202.321167 1201.642822 1201.175293 1200.775024 1200.568604 1200.36145 1200.059082 1199.763062 1199.426025 1198.850342 1198.54541 1198.000366 1197.318481 1196.647949 1195.875244 1194.69165 1193.152222 1192.315063 1195.834839 1196.433228 1196.940796 1197.360474 1197.976318 1198.609497 1199.216309 1199.78186 1200.322388 1200.619385 1200.846802 1201.001953 1201.026123 1201.134399 1201.359497 1201.679688 1202.158447 1202.820068 1204.046021 1206.021606 1207.651001 1207.980591 1208.285034 1208.256226 1208.041138 1207.617432 1207.492188 1207.849121 1207.872437 1207.496338 1207.362915 1206.323975 1206.579224 1204.628052 1198.880127 1194.964966 1192.305298 1185.558472 1183.974121 1184.202026 1184.924805 1185.381958 1185.046143 1183.901123 1179.59021 1172.967041 1170.190674 1174.308594 1178.89209 1182.413208 1185.532959 1186.592041 1186.887207 1186.872681 1186.731201 1186.687744 1186.346069 1185.707275 1184.85498 1183.756592 1183.877686 1182.998779 1181.20105 1180.040161 1178.998535 1178.647827 1179.081299 1179.666626 1180.051636 1180.252441 1180.930298 1182.318359 1183.327881 1183.613525 1182.681152 1177.736816 1173.079468 1170.169922 1168.375977 1167.109741 1167.084717 1167.814209 1170.002441 1171.368164 1171.65332 1171.053711 1170.281372 1169.446167 1168.717773 1168.370605 1168.241821 1168.360474 1168.268555 1168.112793 1167.812744 1167.510376 1167.123047 1166.771851 1166.362427 1166.008911 1165.780762 1165.371338 1165.047485 1164.592896 1164.1427 1163.661499 1163.418945 1162.987427 1162.538818 1162.050171 1161.441162 1160.882446 1160.25708 1159.58252 1159.379517 1159.369751 1159.029175 1158.519409 1157.712769 1156.509155 1155.396118 1153.984497 1153.228638 1152.663452 1152.436768 1152.440796 1152.6427 1152.562012 1152.668457 1152.814819 1152.838379 1152.947144 1153.076416 1153.053955 1152.915161 1152.631348 1152.44812 1152.608765 1153.070679 1153.886719 1154.599854 1155.224854 1155.576782 1155.923706 1156.241211 1156.463135 1156.715088 1157.244873 1158.095215 1158.904663 1162.174316 1165.976685 1166.713501 1167.649048 1168.475464 1169.06543 1169.089233 1168.517212 1169.174805 1170.425781 1171.765015 1173.282471 1174.727661 1176.332397 1177.313477 1178.654419 1180.707031 1183.067017 1184.878296 1185.668701 1185.355713 1185.624878 1183.584229 1183.984741 1187.272949 1188.123535 1188.483887 1187.968018 1187.970825 1187.345093 1186.566284 1186.415283 1186.33728 1186.314941 1185.968628 1185.182617 1184.631104 1184.250244 1182.80481 1187.738525 1191.950439 1194.263916 1200.495117 1207.222412 1209.138306 1206.02002 1210.336426 1216.821899 1224.195435 1231.981079 1237.617798 1243.877197 1250.533203 1258.079468 1263.893066 1268.746704 1272.253906 1273.879761 1272.187012 1268.021362 1262.05481 1256.397949 1248.437134 1241.203003 1243.944946 1254.475342 1258.822998 1259.898315 1259.776733 1258.422363 1258.221313 1254.9375 1246.687012 1231.923584 1242.098633 1250.644043 1247.712646 1240.732056 1230.980225 1233.551025 1235.665771 1225.321289 1216.375122 1212.636719 1213.058838 1210.023438 1206.667114 1214.959473 1222.584473 1227.254272 1229.376587 1229.966431 1229.520874 1228.489502 1227.047852 1225.378784 1223.479614 1220.544556 1213.924805 1208.142456 1204.930664 1207.949829 1206.534668 1206.346313 1206.502808 1208.785278 1209.890625 1210.207642 1210.716797 1211.400269 1212.110962 1213.269653 1214.143433 1214.242676 1214.446167 1215.983032 1216.724854 1216.792969 1218.705811 1221.097778 1224.526611 1228.603149 1231.673828 1235.59375 1240.958618 1245.273193 1246.418091 1246.826294 1247.133179 1246.588867 1245.93689 1245.435181 1245.126099 1245.830688 1246.450073 1246.011841 1244.227783 1240.718506 1236.33667 1231.131104 1219.611694 1221.701782 1221.180176 1212.472778 1200.907837 1185.404297 1168.329346 1188.109131 1196.454712 1197.552246 1194.404175 1189.891968 1183.554077 1179.124756 1173.923462 1173.534546 1166.250366 1154.485352 1145.938965 1143.621582 1142.599976 1143.36084 1147.088379 1151.5979 1152.355103 1151.42041 1156.970093 1161.267334 1160.229492 1156.944092 1161.070435 1164.322388 1162.360229 1156.993408 1148.531006 1141.691772 1135.182617 1132.824951 1131.353027 1129.950562 1128.278076 1126.150024 1124.643921 1122.581177 1120.790527 1119.164551 1117.00415 1114.234375 1111.087891 1109.549194 1109.033447 1108.635986 1108.101929 1106.999146 1105.263306 1103.194092 1100.566772 1098.091309 1098.089233 1097.979004 1097.514038 1097.760132 1098.129883 1098.295044 1097.920532 1097.579834 1097.138062 1096.457275 1095.840332 1095.331665 1094.651367 1094.031128 1093.467529 +1280.406006 1280.244995 1277.38623 1279.599976 1286.363037 1293.623413 1298.035034 1301.817017 1302.98291 1299.844238 1292.462402 1283.511353 1280.007324 1276.56958 1277.908936 1282.275269 1283.277466 1282.479004 1286.8573 1292.955933 1296.253296 1293.392334 1282.139404 1277.285522 1273.187256 1267.439575 1257.241089 1246.183838 1242.538452 1240.845703 1231.280518 1216.035156 1196.179443 1181.561401 1186.341187 1189.242065 1184.486572 1170.806519 1159.202515 1151.557129 1146.117676 1145.140869 1145.493042 1146.098755 1146.349487 1146.989014 1147.256592 1146.550293 1146.265747 1152.4375 1174.576416 1185.854736 1198.181763 1211.954712 1209.752075 1202.466919 1195.302856 1196.672485 1199.152466 1198.890015 1199.232544 1198.726074 1196.305542 1195.589355 1196.61377 1196.217041 1205.906372 1215.046753 1221.540405 1221.321289 1221.026123 1220.614502 1220.01123 1219.738403 1219.529297 1219.286011 1219.075562 1218.972778 1218.885986 1218.72644 1218.471191 1218.552368 1218.719482 1219.119141 1219.063477 1218.631226 1218.016602 1217.816772 1217.772583 1217.530396 1217.144287 1216.624512 1216.028198 1215.17395 1213.986938 1212.859985 1211.61438 1210.477173 1209.083496 1208.008423 1206.172974 1202.775146 1198.860474 1198.632446 1199.640381 1202.965454 1207.651733 1209.489624 1208.817993 1201.957886 1210.265991 1219.369751 1220.812256 1222.461914 1224.339355 1225.984253 1227.362061 1228.308716 1228.506714 1228.111694 1228.233887 1228.336426 1226.602295 1221.562622 1215.493164 1222.523071 1228.166992 1232.53418 1232.492798 1231.944336 1231.764404 1231.368408 1229.747559 1228.711792 1228.173828 1228.335938 1229.352783 1230.551025 1231.800049 1232.998169 1233.252197 1233.64209 1234.456421 1234.555054 1233.702515 1231.776367 1229.996704 1228.15332 1226.481323 1222.370239 1220.331055 1219.158325 1218.985596 1219.194702 1219.085815 1218.627808 1217.682129 1216.467285 1215.070312 1213.907837 1212.841797 1211.948364 1211.205444 1210.970093 1212.160156 1215.289795 1218.364502 1222.437378 1226.512939 1230.203613 1236.116943 1245.14978 1252.714966 1257.549072 1260.211304 1262.419556 1262.261353 1259.905884 1250.588989 1237.217041 1226.371216 1209.233154 1212.891968 1216.80481 1219.354248 1220.282715 1219.928955 1219.380005 1219.202515 1219.981079 1220.106201 1219.765991 1219.330933 1219.349731 1219.145508 1218.69519 1218.289429 1218.144287 1218.223755 1218.122437 1217.889282 1217.583252 1217.184326 1216.935791 1216.838501 1216.596436 1216.249512 1215.930786 1215.459717 1214.909912 1214.179199 1213.249512 1212.259399 1210.937378 1209.872437 1209.478394 1209.419678 1209.37146 1209.071899 1208.731079 1207.878906 1207.158691 1206.420898 1205.506348 1204.992188 1204.642822 1204.332642 1204.206543 1204.02478 1203.730713 1203.178589 1202.659546 1202.182739 1201.827271 1201.653076 1201.2771 1200.922607 1200.379395 1199.835449 1199.420776 1198.978882 1198.432129 1197.764526 1197.018433 1196.25415 1195.500366 1194.136108 1192.992554 1195.332886 1196.093384 1196.740845 1197.430054 1197.981934 1198.617676 1199.234619 1199.834961 1200.347534 1200.806641 1201.154297 1201.478638 1201.888916 1202.262085 1202.589233 1202.947876 1203.452026 1204.036011 1204.832153 1206.314209 1207.408691 1207.857178 1208.24939 1208.357788 1208.49707 1208.499146 1208.447266 1208.488892 1208.458618 1208.255615 1208.390503 1207.559814 1202.94812 1197.366699 1195.162354 1194.916626 1192.998047 1190.588135 1188.060181 1187.140259 1186.904297 1186.578491 1185.888062 1184.417847 1181.075684 1174.453979 1170.416504 1174.999268 1179.805176 1182.471069 1185.885254 1187.490967 1188.095581 1188.174683 1188.109619 1188.113892 1187.838745 1187.0354 1186.143433 1185.21814 1184.677734 1184.115112 1182.782104 1181.739502 1181.215942 1181.653442 1181.748535 1181.533691 1181.447388 1181.422241 1181.842651 1183.454224 1184.044922 1184.083862 1182.599854 1176.983643 1172.317261 1169.476318 1168.656982 1171.266113 1170.189087 1169.54126 1170.960449 1171.924683 1171.916138 1171.426758 1170.809204 1170.015015 1169.32251 1169.005859 1169.035156 1169.29541 1169.380859 1169.377075 1168.959717 1168.480713 1167.983521 1167.467896 1167.085327 1166.667603 1166.375977 1166.003906 1165.5271 1165.039307 1164.491821 1164.047607 1163.669189 1163.311768 1162.847656 1162.323975 1161.737183 1161.136841 1160.55896 1160.08374 1159.646484 1159.379395 1158.857056 1157.991089 1157.078613 1155.944946 1154.739258 1153.638916 1153.449219 1153.369141 1153.255981 1153.367798 1153.384155 1153.404053 1153.550049 1153.820435 1154.006104 1154.159058 1154.258545 1154.398926 1154.242798 1153.954346 1153.640015 1153.60791 1153.790771 1154.296021 1154.772095 1155.136353 1155.231323 1155.468384 1155.719482 1155.911255 1156.194946 1156.651611 1157.118408 1158.782593 1158.920166 1159.584229 1161.391968 1164.076172 1165.626831 1166.51062 1166.853638 1167.181885 1167.827026 1168.963013 1169.523804 1170.125732 1170.483765 1171.162109 1172.278198 1173.728149 1175.858643 1178.038818 1179.777954 1180.608887 1181.045654 1181.171143 1181.124756 1181.747803 1183.222656 1184.306152 1184.824463 1184.897949 1184.846191 1183.894409 1182.861206 1183.014404 1182.645386 1182.681885 1182.5448 1180.920776 1182.155151 1183.221436 1185.467163 1189.599731 1194.213623 1199.815674 1206.495483 1214.025024 1220.586792 1217.666382 1216.189087 1221.11145 1226.95105 1230.696655 1238.212402 1243.31958 1253.431274 1263.48877 1271.13562 1278.190186 1282.605957 1281.044922 1276.195801 1271.244629 1264.944702 1258.852051 1251.243286 1245.592285 1247.895996 1259.224609 1263.610352 1264.890259 1264.546997 1264.174316 1263.693237 1256.941772 1248.061035 1238.170654 1250.005005 1256.309937 1255.803345 1248.650269 1238.391968 1243.078125 1246.688843 1232.426025 1230.015015 1227.309692 1224.232056 1219.280396 1207.032959 1215.680786 1224.942261 1230.618896 1233.626465 1234.500366 1234.03125 1232.475098 1230.235596 1229.555908 1228.046875 1223.821655 1218.318115 1211.297852 1205.726074 1207.187866 1209.780518 1213.568604 1214.012817 1213.866699 1214.629395 1216.354614 1219.082642 1220.227905 1219.12915 1215.871704 1215.02771 1215.842896 1217.163452 1220.276611 1220.536011 1219.653442 1217.988159 1220.399658 1222.472168 1225.268433 1228.543091 1231.079956 1234.70459 1239.218872 1242.345337 1244.72998 1245.670288 1245.225098 1244.762817 1243.840698 1243.890747 1245.437378 1247.617554 1247.669434 1246.092773 1242.645996 1237.213501 1233.409912 1234.067749 1230.021729 1224.051636 1215.623901 1202.306152 1186.611816 1174.145508 1189.75293 1196.846191 1198.897705 1197.280029 1192.731812 1184.868774 1180.945923 1178.978027 1176.434814 1172.531128 1163.889526 1150.971191 1143.992676 1143.380005 1144.994263 1151.547119 1158.526367 1161.623047 1158.903442 1162.05188 1170.07019 1168.6427 1166.948608 1168.183472 1169.314453 1164.138672 1159.774048 1150.428711 1142.761963 1135.411621 1133.049805 1131.885132 1131.150635 1130.191895 1129.271973 1128.343506 1125.628418 1122.629395 1120.5354 1118.399902 1115.936401 1113.56189 1111.973755 1110.156128 1109.569946 1109.398193 1107.8396 1105.994873 1104.023804 1101.869995 1100.116699 1099.266235 1098.756104 1097.919922 1098.094727 1098.721802 1098.853882 1098.575806 1098.165405 1097.842651 1097.285278 1096.539062 1095.899292 1095.272949 1094.705566 1094.158325 +1281.300171 1283.549072 1282.293823 1279.524658 1286.841187 1294.981201 1300.776978 1305.828613 1307.330811 1306.739502 1300.688232 1292.260986 1285.149536 1279.921509 1281.272583 1286.802246 1289.132202 1289.747437 1294.426514 1298.621826 1300.858154 1296.80188 1286.677856 1278.671265 1273.353516 1267.114746 1260.917114 1258.043457 1251.326416 1242.405396 1220.921265 1203.123047 1191.683716 1197.37207 1200.953125 1197.636475 1187.11853 1172.185425 1163.64978 1155.533447 1147.06897 1145.915771 1145.833862 1146.932983 1147.187744 1147.838013 1147.735962 1146.578369 1146.349731 1145.559326 1163.420776 1174.101807 1186.819946 1205.40979 1209.782593 1204.685303 1196.205688 1198.722656 1203.800659 1206.641113 1206.285522 1205.23877 1204.769531 1204.114014 1200.520142 1197.711426 1202.498901 1210.963379 1218.755249 1221.327881 1221.297607 1221.018677 1220.770264 1220.546997 1220.54248 1220.18042 1220.024536 1220.183472 1219.965942 1219.817871 1219.560547 1219.618286 1220.011597 1220.164185 1220.129028 1219.900635 1219.241455 1218.722534 1218.447021 1218.035645 1217.549316 1217.133911 1216.529053 1215.782471 1214.706177 1213.309448 1211.848633 1210.506714 1209.078369 1207.577881 1205.327026 1202.262085 1199.344116 1200.250854 1202.612549 1204.750732 1208.071899 1210.207031 1209.377075 1203.812622 1211.718628 1221.186401 1222.292725 1223.771729 1225.6875 1228.072144 1230.164062 1230.809937 1230.968994 1230.577393 1229.996582 1230.829468 1230.969238 1222.696289 1215.570679 1221.279541 1225.944214 1230.855103 1233.245972 1233.422974 1233.103516 1232.480225 1231.359009 1229.93396 1229.544067 1229.868896 1231.3302 1232.271484 1233.925293 1235.336548 1235.856201 1236.037476 1236.052124 1235.628906 1234.41272 1232.425293 1230.684204 1229.189697 1227.777832 1224.017822 1221.718506 1220.334595 1220.651245 1220.91687 1220.686157 1219.966919 1218.802002 1217.575317 1216.075684 1214.863403 1213.75708 1213.00293 1212.401001 1212.031128 1212.324707 1215.095459 1218.334473 1222.511963 1228.235596 1232.384766 1237.526855 1246.706177 1256.803467 1259.100342 1260.701416 1261.855103 1261.342407 1260.0448 1253.52417 1238.622437 1226.313232 1210.394043 1214.788818 1219.666626 1220.372559 1220.796875 1220.695923 1220.165894 1219.896973 1220.420776 1220.609131 1220.503174 1220.211426 1220.257446 1220.047485 1219.45459 1218.918091 1219.010986 1219.188232 1219.172485 1218.638062 1218.12561 1217.799683 1217.661133 1217.532715 1217.466797 1217.071411 1216.721558 1216.207153 1215.588989 1214.87439 1213.908569 1212.954956 1211.931396 1211.040039 1210.484131 1210.121216 1209.776245 1209.35144 1208.652954 1207.895142 1207.196533 1206.239624 1205.672363 1205.226196 1204.928955 1204.724609 1204.70813 1204.646362 1204.496948 1204.080933 1203.660278 1203.222412 1202.972168 1202.565674 1202.102051 1201.68042 1201.091675 1200.44519 1199.828003 1199.437988 1198.894531 1198.284668 1197.515015 1196.831177 1196.252686 1195.598755 1193.569946 1194.552124 1195.740112 1196.494629 1197.189087 1197.939209 1198.518555 1199.222412 1199.780884 1200.355225 1200.833862 1201.297241 1201.962646 1202.579956 1203.117676 1203.620239 1204.07959 1204.34668 1204.689331 1205.224121 1205.940552 1206.988892 1207.632568 1207.815063 1208.271484 1208.497437 1208.636963 1208.826294 1208.989014 1208.966187 1208.866821 1208.729004 1207.878662 1204.137939 1197.353638 1196.527466 1196.902344 1196.386719 1194.728638 1191.999634 1190.044678 1188.810059 1187.922241 1186.788452 1185.335205 1183.204224 1175.847412 1171.723633 1176.535522 1182.406494 1185.064209 1187.195435 1188.412964 1189.164185 1189.436401 1189.406372 1189.484375 1189.439697 1188.077026 1186.982422 1185.903442 1184.849487 1183.551392 1182.766357 1182.84729 1183.31897 1183.366577 1183.291748 1183.171631 1182.952026 1182.737427 1182.785889 1183.873657 1184.282227 1184.166626 1181.190308 1175.776245 1171.181396 1168.866089 1171.293945 1171.246338 1170.360962 1170.954956 1171.760864 1172.267944 1172.152954 1171.809448 1171.126221 1170.537354 1169.743408 1169.592285 1169.961914 1170.265259 1170.427368 1170.443481 1169.982544 1169.271973 1168.609009 1168.135376 1167.738037 1167.343628 1166.902222 1166.432373 1165.928711 1165.342529 1164.798828 1164.279663 1163.879028 1163.53125 1163.075928 1162.470703 1161.911621 1161.236084 1160.739624 1160.274536 1159.805176 1159.310913 1158.580933 1157.615845 1156.70105 1155.650635 1154.631958 1154.051514 1154.140503 1154.161743 1154.296143 1154.412598 1154.361572 1154.345825 1154.571899 1154.736328 1155.147095 1155.405029 1155.593384 1155.743286 1155.610718 1155.223022 1154.738037 1154.447266 1154.3927 1154.5979 1154.914185 1155.101807 1155.147705 1155.28772 1155.492065 1155.695068 1156.06958 1156.490723 1156.908447 1157.785278 1158.266846 1158.688721 1159.02063 1161.586548 1163.084717 1164.093506 1165.026611 1165.766602 1166.548706 1167.407715 1168.007568 1168.564331 1169.137451 1169.502563 1169.895386 1170.311646 1171.45874 1173.956665 1175.805298 1177.405273 1178.175049 1178.631104 1179.200806 1180.153442 1180.972534 1181.571533 1182.047729 1182.247192 1182.160278 1181.690918 1181.103516 1180.864502 1180.584351 1180.280396 1179.808105 1181.682129 1184.977173 1187.320312 1188.962524 1192.456543 1197.858032 1205.413818 1213.279785 1220.292847 1226.797363 1226.814941 1223.716309 1228.007446 1234.234497 1239.885864 1245.681274 1251.081421 1260.31604 1270.810425 1277.93103 1283.747925 1286.258423 1284.339844 1278.842407 1272.609863 1266.703247 1261.961548 1257.654419 1255.688721 1254.559326 1262.640137 1268.726562 1270.443481 1269.428711 1269.211304 1268.985107 1259.370605 1253.611816 1244.480835 1258.898804 1261.039062 1260.447632 1255.428711 1248.392456 1248.542725 1253.985718 1249.046143 1247.371338 1243.404419 1233.02832 1224.841064 1216.187622 1218.700928 1229.800537 1235.663574 1238.981689 1239.947754 1239.157227 1236.94165 1234.649292 1234.17334 1232.79541 1228.048584 1220.651978 1212.874268 1206.496094 1214.341919 1220.791748 1221.896729 1222.415039 1222.927856 1223.625122 1224.660278 1225.500366 1225.223267 1223.656738 1220.957153 1219.165771 1219.85498 1218.629639 1221.300537 1223.221802 1223.085938 1220.381958 1218.912354 1220.153076 1221.916382 1224.6521 1227.359741 1229.993652 1231.844116 1234.460205 1236.640625 1237.327637 1237.89209 1240.608521 1242.728271 1244.995605 1247.81665 1249.818848 1249.848877 1248.098145 1245.616089 1244.596069 1240.97522 1236.639648 1231.542969 1223.999756 1215.760742 1201.59021 1185.649292 1180.343384 1191.570068 1198.963013 1201.134644 1201.441895 1196.471313 1190.543945 1185.774292 1183.424194 1180.975342 1175.732422 1167.953369 1152.075806 1144.11853 1144.558105 1145.691528 1154.442627 1165.054443 1171.336426 1169.565796 1169.971313 1178.185669 1177.480957 1174.116455 1173.449463 1168.904541 1159.716675 1154.098389 1145.772095 1138.319336 1133.680176 1133.287842 1132.639038 1133.567139 1133.363892 1134.104004 1133.690186 1130.465576 1125.726562 1122.138794 1120.614868 1118.59314 1116.728638 1114.748901 1112.707764 1111.665771 1110.037842 1108.7771 1106.711548 1104.856812 1103.11731 1101.704346 1100.518311 1099.683594 1099.288208 1099.205444 1099.382935 1099.452759 1099.236938 1098.767212 1098.245483 1097.606201 1097.019775 1096.351685 1095.864014 1095.340332 1094.897827 +1275.089233 1283.789185 1292.704468 1290.336426 1289.762207 1294.563232 1300.849731 1305.720093 1308.518799 1308.928955 1306.44043 1296.723633 1289.572388 1286.35498 1286.584473 1293.184692 1295.115234 1294.966187 1298.607422 1304.006104 1306.122925 1302.629028 1291.117188 1280.88855 1276.767944 1272.00415 1266.99353 1257.69519 1248.713135 1231.363281 1210.822021 1208.615479 1214.854492 1216.767578 1212.318115 1202.890747 1187.876465 1175.836304 1167.867065 1158.448364 1147.594238 1146.239868 1146.260986 1147.751099 1148.508057 1148.681152 1148.437622 1148.028442 1148.394653 1149.460693 1154.828247 1162.962769 1181.54834 1198.537109 1210.0802 1206.936768 1202.160522 1202.877197 1208.119995 1210.953369 1212.389648 1212.83606 1212.466309 1209.928345 1204.923584 1199.029053 1202.806519 1207.975464 1214.073242 1218.59729 1220.713501 1220.897827 1220.911987 1221.050537 1221.432129 1221.693481 1221.736572 1221.647461 1221.20813 1221.000244 1220.746948 1220.644775 1220.71521 1220.866455 1220.883057 1220.653809 1220.193481 1219.49939 1219.003662 1218.444458 1217.970459 1217.616089 1217.167114 1216.493042 1215.359985 1213.978638 1212.325439 1210.675049 1209.334473 1207.856812 1205.183105 1202.10498 1199.786987 1203.101074 1207.290649 1207.43042 1208.561279 1211.051514 1211.125854 1207.567261 1209.016479 1219.1875 1222.570801 1224.139526 1226.220093 1229.544434 1232.314087 1232.840454 1232.980225 1232.799927 1231.847412 1232.420654 1233.10791 1226.657593 1221.205444 1216.940308 1222.541504 1231.030518 1233.842651 1234.012207 1233.721313 1232.990845 1231.619263 1230.835327 1230.873047 1231.277344 1233.155762 1235.373901 1237.564575 1238.96106 1239.193237 1238.643433 1237.889526 1236.828735 1235.394409 1232.941772 1231.023315 1230.077393 1229.174805 1225.888794 1224.01709 1222.824463 1222.646484 1222.533325 1222.045776 1221.043701 1219.690796 1218.28418 1216.937378 1215.821899 1214.787598 1213.867432 1213.361938 1212.878906 1212.937256 1215.258179 1218.340942 1222.808105 1229.73999 1235.937744 1243.118164 1250.910156 1257.294312 1259.521973 1260.848022 1261.726807 1261.587524 1259.984863 1254.140137 1238.576538 1224.814941 1211.557983 1216.499756 1220.358765 1221.16748 1221.356812 1221.320068 1221.139771 1220.884644 1221.02417 1221.163086 1221.10791 1220.96875 1220.78418 1220.460693 1220.026489 1219.543335 1219.796387 1220.074829 1219.838501 1219.254272 1218.630859 1218.296631 1218.351074 1218.340088 1218.387573 1217.956787 1217.488892 1216.896362 1216.228149 1215.494263 1214.551636 1213.675659 1212.799683 1212.00769 1211.253174 1210.753906 1210.098999 1209.342407 1208.482544 1207.586914 1206.847778 1206.293091 1205.835938 1205.451416 1205.25769 1205.134155 1205.180176 1205.328857 1205.372559 1205.098511 1204.706543 1204.363159 1203.875366 1203.376099 1202.869751 1202.201294 1201.660645 1201.134277 1200.487549 1199.934204 1199.376099 1198.6875 1198.128296 1197.48645 1196.887573 1196.42041 1195.535767 1193.907715 1195.267822 1196.014038 1196.886841 1197.676025 1198.377563 1199.152466 1199.789795 1200.382812 1200.95752 1201.47229 1202.206543 1203.120117 1203.81665 1204.548828 1205.083618 1205.220825 1205.225342 1205.571167 1206.028198 1206.409546 1206.934814 1207.357666 1207.62854 1208.184204 1208.730591 1209.123901 1209.384888 1209.372681 1209.127197 1208.826782 1207.948975 1204.61853 1202.259033 1201.331299 1200.571167 1198.363525 1195.828735 1193.514893 1191.752319 1190.370972 1188.939331 1187.569214 1185.797119 1183.45874 1177.306885 1172.517334 1177.407959 1183.662598 1186.721191 1188.244873 1189.466553 1190.310791 1190.653687 1190.581299 1190.787964 1190.526123 1189.232544 1187.922241 1186.101685 1183.452881 1183.196655 1183.337769 1183.39624 1183.780029 1184.135376 1184.127808 1184.241821 1184.098022 1183.931763 1184.001831 1184.209961 1184.018433 1182.002319 1178.512939 1174.329834 1170.24231 1171.12915 1171.488037 1170.948975 1171.161499 1171.769897 1172.411377 1172.514404 1172.343628 1172.085938 1171.428589 1170.724121 1170.10791 1170.273682 1170.784302 1171.100464 1171.133423 1171.095825 1170.733765 1169.80127 1169.255005 1168.852661 1168.312378 1167.791504 1167.2948 1166.809082 1166.176025 1165.599854 1165.155396 1164.625 1164.167725 1163.707275 1163.178467 1162.611694 1162.033691 1161.501221 1160.84314 1160.357544 1159.80127 1159.18811 1158.470947 1157.561768 1156.781372 1155.959717 1155.104126 1154.538696 1155.07251 1155.373535 1155.488037 1155.540894 1155.368652 1155.403076 1155.523804 1155.853516 1156.305786 1156.626587 1156.896484 1157.190918 1157.131104 1156.540649 1155.759644 1155.204346 1155.036377 1155.026489 1155.078369 1155.122314 1155.223389 1155.365601 1155.513672 1155.792358 1156.028809 1156.393311 1156.982056 1157.494385 1158.39563 1158.981567 1160.151733 1160.5802 1160.946289 1162.354492 1163.420044 1164.292725 1165.224854 1166.115967 1166.734131 1167.213501 1167.704346 1168.281128 1168.808838 1169.321655 1170.204834 1171.450806 1173.304688 1174.462524 1175.659302 1176.622681 1177.376221 1178.142578 1178.838379 1179.325195 1179.732788 1180.145142 1180.069214 1179.706421 1179.341064 1179.052124 1178.889648 1178.908447 1179.253174 1183.644531 1187.344849 1191.502197 1192.671997 1192.960571 1197.97998 1208.016724 1217.119263 1226.480469 1233.506104 1234.776245 1234.090942 1235.010376 1242.015137 1248.366943 1254.203125 1261.071289 1269.529907 1277.217651 1284.702515 1291.796265 1291.70752 1287.276245 1281.089233 1274.95105 1269.654053 1267.825439 1264.687744 1262.055786 1259.737793 1265.749023 1272.921387 1274.990234 1275.369629 1274.967163 1273.772461 1265.463745 1259.934326 1254.574585 1262.19104 1265.763306 1265.91748 1262.910278 1257.496216 1257.273193 1262.15625 1262.584961 1261.220337 1254.869385 1241.057861 1229.337158 1222.542969 1218.892334 1235.706177 1241.695312 1244.816528 1245.726318 1244.266968 1241.852539 1240.300415 1238.785645 1236.058228 1232.545654 1222.328613 1213.961304 1208.001343 1221.698608 1226.794556 1228.991821 1229.623047 1229.366211 1230.904907 1232.724609 1232.312866 1230.095459 1227.444702 1224.814819 1223.040894 1222.477539 1220.114746 1221.408203 1226.475098 1230.216797 1227.037598 1223.436768 1222.830811 1222.947021 1222.233398 1223.749146 1226.411133 1228.557861 1229.84082 1230.559326 1230.700195 1232.718384 1239.723145 1244.273804 1248.049194 1252.001343 1252.935547 1252.4552 1251.30188 1249.460205 1247.563599 1245.048218 1238.078369 1229.686646 1221.433594 1212.714478 1199.588135 1183.335327 1182.128052 1190.829102 1197.448486 1203.636353 1206.472778 1204.774414 1199.719604 1198.2771 1193.21228 1184.793213 1176.536865 1167.52002 1150.086182 1144.816772 1148.333984 1150.391113 1155.265991 1166.608765 1174.14502 1176.911743 1178.215698 1183.981689 1183.450317 1178.484863 1174.415527 1164.841064 1151.190308 1144.863525 1144.404663 1141.319824 1136.700195 1134.464355 1133.774292 1136.938477 1138.360229 1140.612305 1140.447876 1135.564575 1130.916992 1127.275024 1124.477661 1122.25061 1119.838745 1118.706543 1116.287964 1112.916016 1110.125366 1108.875732 1107.161011 1105.613647 1104.172119 1102.89502 1101.742676 1101.016479 1100.484009 1100.272461 1100.211548 1100.055786 1099.663818 1099.132935 1098.239868 1097.602417 1097.167114 1096.807007 1096.480591 1096.101807 1095.675903 +1269.260986 1278.395752 1287.766479 1293.490112 1292.394165 1293.646729 1300.878784 1304.181885 1309.728271 1311.282227 1307.572266 1301.457153 1296.552002 1293.572754 1291.355225 1295.233887 1298.853882 1303.527588 1306.258423 1307.431396 1307.278076 1302.131958 1293.62207 1287.712769 1282.727051 1274.881104 1267.745728 1255.452393 1240.338745 1224.355713 1219.815918 1225.083618 1233.368408 1224.80896 1215.16626 1207.977539 1197.211548 1184.473755 1172.680542 1157.383423 1147.965332 1146.469849 1146.786621 1148.208984 1149.05835 1149.505493 1149.840332 1150.026611 1150.734009 1152.578247 1155.031128 1158.392944 1177.521729 1192.312988 1203.610229 1205.215698 1204.059692 1205.062866 1208.098267 1213.495361 1217.357422 1220.712036 1219.106201 1212.499878 1204.676147 1202.55188 1207.893433 1206.209595 1209.95459 1214.391724 1217.759644 1219.453369 1220.014038 1220.663208 1222.374878 1223.049805 1223.17981 1222.901611 1222.489136 1221.858887 1221.538208 1221.354492 1221.403564 1221.545776 1221.462769 1221.273804 1220.941284 1220.128418 1219.640381 1218.91687 1218.453247 1218.136108 1217.905518 1217.289795 1216.168457 1214.600586 1212.608521 1210.710327 1209.191406 1207.662476 1205.040894 1202.177734 1200.558472 1206.27002 1209.581909 1210.012939 1211.034424 1212.519409 1212.985352 1211.112305 1206.618164 1211.426392 1218.705811 1222.112427 1224.361572 1228.884766 1233.025391 1233.831299 1234.15918 1234.196899 1233.726318 1233.263672 1231.635376 1231.664917 1233.937012 1227.704102 1218.98584 1230.143921 1234.537476 1234.414062 1234.135864 1233.977295 1232.545532 1232.639771 1232.776123 1233.733154 1235.862793 1238.912231 1242.533081 1243.519287 1242.478149 1240.999023 1239.658203 1238.436646 1236.67627 1234.287476 1232.261963 1231.463257 1230.69458 1228.038086 1226.376587 1225.073853 1224.427856 1223.949219 1223.05481 1221.840088 1220.135498 1218.813232 1217.498901 1216.610229 1215.724854 1214.875732 1214.092407 1213.675781 1213.805054 1215.651123 1218.011353 1222.592041 1230.029785 1236.37561 1242.74646 1251.95459 1257.400513 1259.648804 1260.967896 1261.693359 1261.696289 1260.436035 1253.739868 1236.916748 1222.505737 1212.532349 1217.811768 1221.180176 1221.679077 1221.97998 1222.011475 1222.026367 1221.821045 1221.893311 1221.809692 1221.599121 1221.425415 1221.134766 1220.977661 1220.641113 1220.445435 1220.619019 1220.701172 1220.292603 1219.605713 1219.021362 1218.998901 1219.166992 1219.328491 1219.263184 1218.811646 1218.137939 1217.529907 1216.818848 1216.062866 1215.309448 1214.674072 1213.786621 1212.811768 1211.924438 1211.204346 1210.386597 1209.410522 1208.389404 1207.43042 1206.709717 1206.358521 1206.048584 1205.713745 1205.62561 1205.593872 1205.737305 1205.958008 1206.27417 1206.259644 1205.908691 1205.311646 1204.635986 1204.019531 1203.391479 1202.803223 1202.377808 1201.783325 1201.187012 1200.656128 1199.994385 1199.393555 1198.797852 1198.151855 1197.56958 1196.925171 1195.947876 1194.670532 1194.990234 1195.897217 1196.714966 1197.650391 1198.500488 1199.300781 1200.006714 1200.599121 1201.226929 1201.852539 1202.553467 1203.363647 1204.265137 1205.142822 1205.92981 1206.521606 1206.289429 1205.893433 1206.154541 1206.397217 1206.635498 1207.004639 1207.439453 1207.809448 1208.658447 1209.249634 1209.643921 1209.748291 1209.490356 1208.807495 1207.511108 1205.620728 1206.07605 1206.19043 1204.089966 1199.994019 1196.430786 1194.115601 1192.7677 1191.561035 1189.948364 1188.070679 1185.753174 1182.934814 1178.469849 1173.455566 1178.187622 1184.151245 1187.515015 1189.224243 1190.64209 1191.605103 1192.097778 1191.955688 1191.893188 1191.489624 1190.228271 1188.841919 1186.59314 1183.567261 1184.141846 1184.097656 1184.291504 1184.633911 1184.848877 1185.094116 1185.256958 1185.224365 1185.002197 1184.858643 1183.949585 1181.625854 1179.071533 1175.777222 1172.857178 1170.278809 1171.536011 1171.830688 1171.30603 1172.002075 1172.506592 1172.670166 1172.655151 1172.469604 1172.114746 1171.614136 1170.77356 1170.538818 1170.988647 1171.500977 1171.699463 1171.609375 1171.314819 1170.805176 1170.082275 1169.770508 1169.351074 1168.831421 1168.236572 1167.567627 1166.990356 1166.494263 1165.947998 1165.540161 1165.02063 1164.487427 1164.015503 1163.426392 1162.898804 1162.230347 1161.63855 1160.829346 1160.221802 1159.5802 1158.864258 1158.192261 1157.52124 1156.817871 1155.813599 1155.056641 1155.755371 1156.882568 1157.047363 1156.781982 1156.689331 1156.269165 1156.287842 1156.580566 1157.100098 1157.49231 1157.601196 1158.068726 1158.440186 1158.544189 1157.84375 1156.688721 1155.988647 1155.598389 1155.535645 1155.505737 1155.503052 1155.588379 1155.6073 1155.811523 1155.935425 1155.960083 1156.447876 1156.919067 1156.799683 1157.961182 1158.30542 1158.535522 1158.433228 1159.2323 1160.90686 1162.113037 1162.95166 1163.824585 1164.735352 1165.52771 1165.961914 1166.624512 1167.21521 1167.785767 1168.464478 1169.245483 1170.181885 1171.259521 1172.675415 1173.805908 1174.984497 1175.718018 1176.316772 1176.800781 1177.281982 1177.563232 1177.869995 1178.00647 1177.876221 1177.760742 1177.781128 1177.658936 1177.935791 1183.619751 1187.988281 1192.749634 1196.407837 1198.620972 1198.513062 1199.511963 1207.838867 1217.840942 1227.874634 1234.631348 1238.96167 1241.654785 1242.759521 1248.466064 1255.25415 1261.398193 1267.489258 1276.803467 1285.146362 1293.693115 1297.78833 1296.43042 1291.860107 1284.414551 1279.419556 1275.6073 1273.173218 1271.11853 1268.580078 1266.07959 1269.05835 1277.107666 1280.55249 1280.923706 1280.797974 1279.170776 1270.830078 1263.969604 1263.797119 1269.165405 1270.98938 1271.242188 1270.389893 1266.470581 1267.720825 1270.037842 1270.140259 1267.93103 1259.839966 1249.826172 1240.432373 1230.225708 1229.060913 1242.735962 1248.145386 1249.968628 1250.044922 1248.439575 1246.438721 1245.235596 1243.192261 1239.199097 1234.017212 1223.901245 1215.517456 1211.659424 1225.76709 1233.009399 1235.630371 1237.76416 1238.819092 1240.05542 1240.659302 1238.87439 1235.090332 1230.86377 1228.614014 1226.746948 1225.613403 1224.57959 1225.563599 1228.861206 1233.020996 1232.851685 1231.418579 1230.915283 1230.145508 1228.344849 1225.628052 1224.367798 1226.710571 1229.406372 1230.411255 1231.446167 1236.320068 1242.899536 1247.744995 1253.461426 1256.29187 1256.029419 1255.315674 1254.356567 1252.520386 1249.66626 1246.036865 1235.767212 1226.184082 1217.22583 1208.296997 1200.813965 1189.219238 1182.976929 1194.38916 1200.413818 1205.308472 1210.849976 1214.342285 1212.250854 1202.432861 1192.52124 1183.498047 1174.484253 1161.286499 1146.71814 1147.948975 1153.622925 1158.212036 1158.078979 1162.543701 1175.058838 1182.657959 1184.27124 1185.472534 1183.701172 1175.262939 1169.258667 1157.510376 1144.887085 1149.552124 1152.202148 1149.006958 1144.52002 1138.015015 1136.186401 1140.235962 1143.685303 1147.858643 1149.106445 1142.696411 1136.338623 1132.651001 1129.030396 1125.462402 1123.214966 1122.94397 1119.630859 1115.050659 1110.533325 1108.727417 1107.533936 1106.354248 1105.129272 1103.961792 1102.973267 1102.139771 1101.546631 1101.158325 1100.952881 1100.683228 1100.217407 1099.472412 1098.512451 1097.989014 1097.944336 1097.640259 1097.324341 1097.075684 1096.751831 +1265.463867 1273.826416 1280.416016 1290.331665 1295.520142 1298.726685 1303.598145 1308.528931 1312.940308 1315.433716 1313.590698 1308.230957 1306.035645 1302.056763 1296.312256 1298.929077 1301.054565 1305.672485 1314.008057 1305.552856 1303.012329 1299.696777 1296.391602 1294.537231 1281.107788 1273.122437 1262.893066 1249.666016 1232.831665 1229.896484 1234.46814 1225.406372 1219.780518 1214.85437 1210.072876 1205.497192 1195.933838 1186.253174 1167.763916 1153.1427 1146.74353 1146.460693 1147.701294 1148.791992 1149.654053 1150.507324 1151.267456 1151.947021 1152.800903 1154.321411 1155.809814 1156.639404 1168.346069 1182.134888 1195.318115 1200.863403 1204.899048 1208.32666 1210.346558 1216.337891 1220.739136 1222.506348 1221.197388 1213.519653 1204.053589 1206.710815 1215.99585 1216.776855 1211.063843 1216.518799 1218.248413 1219.238281 1219.699951 1220.26355 1224.006226 1224.653198 1224.726929 1224.22583 1223.510254 1222.845459 1222.39563 1222.224609 1222.154907 1222.278198 1222.214478 1221.972778 1221.565063 1220.941406 1220.225098 1219.528687 1219.039307 1218.976562 1218.724976 1218.376587 1217.19043 1215.226196 1212.990845 1210.577271 1208.511475 1206.641113 1204.799438 1202.487549 1201.568481 1207.485352 1209.758179 1211.620361 1213.249268 1214.543457 1215.430054 1215.375366 1215.668335 1217.100464 1216.205444 1214.962158 1218.373779 1222.930786 1231.422974 1234.359375 1235.108154 1235.148804 1234.988037 1234.124634 1231.947876 1232.241455 1233.619507 1232.708252 1219.993774 1226.380249 1233.09436 1234.027222 1234.522095 1234.967407 1235.399536 1236.090698 1236.446411 1237.344971 1239.381348 1242.537842 1244.741577 1244.945801 1244.375366 1242.698608 1241.100098 1240.209351 1238.865234 1236.884644 1234.839111 1233.766602 1232.692871 1230.131714 1228.512207 1226.996948 1226.100464 1225.338501 1224.247192 1222.588989 1220.614014 1219.166992 1218.290649 1217.414429 1216.482788 1215.748535 1214.842651 1214.35022 1214.76062 1216.182007 1217.932495 1221.685669 1229.607056 1235.907471 1242.217041 1250.041626 1256.419434 1259.655762 1260.709473 1261.390625 1261.666382 1258.293701 1247.554932 1232.144775 1219.152954 1213.214355 1220.376831 1221.621338 1222.236206 1222.524292 1222.741699 1222.73938 1222.635864 1222.525391 1222.360107 1222.137695 1221.873291 1221.729126 1221.594604 1221.664429 1221.452271 1221.376709 1221.218506 1220.789917 1219.90918 1219.706787 1219.885254 1220.076904 1220.223755 1220.09082 1219.479248 1218.561157 1217.995605 1217.417603 1216.785889 1216.221313 1215.476562 1214.612671 1213.63855 1212.743774 1211.669678 1210.648071 1209.506104 1208.137817 1207.327515 1206.875732 1206.510742 1206.236816 1206.033447 1205.977905 1206.02002 1206.264404 1206.599976 1207.422485 1207.397827 1207.02771 1206.092529 1205.215332 1204.504028 1203.963989 1203.474854 1202.978271 1202.511841 1202.040771 1201.407104 1200.919678 1200.248413 1199.722046 1199.020142 1198.294189 1197.302612 1196.24353 1195.225586 1194.915894 1195.721802 1196.665649 1197.831421 1198.8396 1199.671143 1200.464355 1201.069824 1201.640015 1202.28772 1202.915649 1203.730835 1204.552856 1205.626953 1206.669556 1207.349243 1207.675903 1206.738525 1206.558105 1206.578369 1206.773438 1207.050049 1207.560181 1207.684814 1208.446533 1209.276367 1209.832764 1210.147461 1209.964111 1209.253052 1207.579224 1207.505249 1207.762817 1207.965942 1207.266602 1203.086914 1198.718384 1196.087402 1194.377686 1192.818115 1191.029541 1188.914551 1186.666504 1184.498047 1182.236816 1174.554443 1178.236328 1183.470093 1187.532959 1189.822632 1191.764648 1193.022583 1193.721924 1193.522827 1192.781738 1192.163818 1191.084106 1189.816772 1188.108276 1186.755249 1185.692993 1185.512573 1185.460938 1185.561401 1185.743042 1185.99292 1186.067505 1185.972534 1185.791382 1185.128662 1182.359375 1178.854614 1176.298828 1173.305664 1170.877686 1171.063843 1171.944092 1172.253418 1172.320679 1172.618408 1172.787354 1172.901611 1172.755737 1172.414062 1172.03186 1171.432983 1170.772217 1171.128418 1171.757202 1172.089722 1172.009033 1171.821289 1170.963623 1170.769897 1170.608398 1170.296875 1169.896606 1169.220825 1168.446167 1167.851196 1167.295166 1166.813843 1166.4823 1166.060791 1165.505249 1164.941895 1164.424805 1163.895264 1163.287964 1162.62085 1161.985718 1161.018555 1159.744385 1158.78418 1158.613159 1158.663086 1158.567749 1156.564087 1155.859009 1157.579468 1158.669189 1158.67981 1158.47522 1158.130615 1157.736694 1157.177979 1157.03186 1157.505249 1158.351074 1158.765503 1158.516113 1158.906006 1159.264282 1159.138184 1158.702759 1157.535767 1156.728027 1156.250977 1156.033325 1156.026367 1155.953247 1156.066406 1156.139648 1156.25 1156.330566 1156.276611 1155.940918 1156.818481 1156.839478 1157.069214 1157.446899 1157.667725 1157.874878 1158.849854 1160.061646 1160.925537 1161.595703 1162.534302 1163.471802 1164.262817 1165.0177 1165.709229 1166.280273 1166.889404 1167.644653 1168.509155 1169.185181 1170.147949 1171.377319 1172.629883 1173.544922 1174.280762 1174.812866 1175.075195 1175.325317 1175.673218 1175.940186 1176.198853 1176.381348 1176.558472 1176.595337 1176.866455 1181.133179 1186.61499 1192.199951 1197.691406 1204.105835 1208.178101 1209.841064 1208.522583 1206.496094 1215.088501 1225.486816 1234.42981 1242.055054 1247.102051 1252.033691 1258.26709 1262.932495 1268.981934 1277.792358 1286.381348 1296.761108 1304.409302 1303.77478 1301.199341 1295.707397 1290.221802 1284.412842 1280.205933 1277.951782 1276.573364 1273.996948 1271.44165 1272.674316 1281.645142 1283.747803 1284.552979 1284.702393 1283.59375 1278.602051 1269.163818 1269.622437 1273.657593 1276.040649 1276.698486 1275.884033 1273.371216 1273.418579 1274.42688 1274.191528 1272.302612 1267.795288 1260.571289 1250.6427 1234.58252 1235.28064 1250.840454 1255.325684 1256.606323 1254.708862 1252.326172 1250.61145 1248.885132 1246.383423 1241.44458 1234.3927 1225.204468 1216.985352 1212.389282 1226.752197 1235.667603 1240.749756 1245.384888 1247.762817 1248.092285 1247.715698 1245.322388 1240.583862 1235.552856 1232.374268 1229.643799 1229.59082 1228.845459 1228.837891 1230.263062 1233.890259 1235.204956 1235.515991 1234.779175 1233.805176 1233.296265 1231.400757 1227.003662 1226.462769 1231.829224 1232.385254 1231.705566 1236.631836 1244.928589 1251.981079 1257.074097 1258.262207 1258.268311 1257.948975 1257.394043 1255.449829 1251.703247 1244.370117 1232.686035 1224.243408 1217.626221 1211.899414 1205.276978 1194.202759 1185.936523 1196.849365 1203.640747 1206.8396 1214.775513 1221.84668 1216.30957 1199.150757 1184.434082 1173.299805 1163.064453 1153.041748 1146.650146 1153.634521 1160.508423 1165.473267 1162.675903 1161.467163 1178.438477 1186.549927 1186.974854 1185.871216 1182.397339 1173.124268 1163.376831 1153.706665 1156.602539 1163.337402 1163.70752 1157.829224 1149.674805 1144.112793 1141.249634 1143.951538 1148.872803 1154.312134 1157.513428 1151.853882 1146.019653 1137.86377 1132.562622 1129.353027 1126.745972 1125.388672 1123.034546 1119.279297 1112.263794 1109.414551 1108.296997 1107.066406 1105.970581 1105.067749 1104.113037 1103.192017 1102.482544 1102.02771 1101.675659 1101.180298 1100.780884 1100.129639 1099.637939 1099.093872 1098.834839 1098.567017 1098.319336 1098.040894 1097.744507 +1265.421387 1273.135498 1280.462402 1289.704712 1295.520996 1302.999268 1304.079956 1310.838501 1317.681396 1323.139038 1324.645874 1316.573486 1311.504028 1307.550171 1304.405518 1302.86499 1301.824097 1302.819214 1319.481201 1300.779907 1296.023315 1294.149902 1290.946289 1284.861938 1275.677002 1267.74707 1255.867188 1243.708374 1233.227051 1238.618286 1229.942993 1204.840088 1197.541748 1192.980713 1187.676147 1180.994629 1176.23938 1161.978638 1152.861938 1146.977661 1146.370483 1147.470093 1148.608643 1149.658081 1150.627319 1151.6073 1152.603882 1153.628784 1154.622681 1155.919556 1157.853271 1160.292603 1170.770752 1180.162354 1191.888306 1201.140503 1209.271362 1216.62085 1220.917847 1219.923218 1222.749023 1224.226929 1222.043091 1215.085815 1205.772339 1205.234253 1218.888794 1222.794922 1221.848145 1220.975952 1221.520874 1222.310791 1223.434204 1225.231079 1226.312134 1226.456543 1226.130371 1225.503174 1224.611206 1223.90686 1223.414551 1223.10498 1222.988037 1223.05896 1223.00293 1222.727783 1222.256104 1221.622803 1220.831421 1220.083252 1219.866455 1219.884155 1219.757202 1219.24585 1218.061035 1216.000854 1213.333984 1210.478149 1208.157715 1206.304443 1204.516846 1202.839478 1202.57605 1207.499512 1210.67981 1213.332031 1215.409668 1216.820801 1217.70166 1219.456055 1222.440918 1224.702271 1224.697266 1223.050293 1221.586304 1220.91394 1223.382568 1230.731689 1234.781616 1235.654663 1235.308594 1234.93042 1233.640991 1233.455688 1234.051025 1233.214111 1228.024658 1222.72937 1229.855347 1233.072144 1234.206055 1235.454224 1237.167236 1238.699707 1239.828857 1240.523071 1242.27417 1243.501953 1245.152344 1245.62793 1245.215454 1243.833984 1242.473022 1242.055786 1241.359131 1239.760376 1237.679688 1236.106934 1234.734619 1231.645508 1230.030518 1228.774048 1228.02832 1227.447021 1226.158569 1224.282227 1221.871948 1220.242432 1219.260132 1218.408691 1217.248901 1216.369751 1215.767944 1216.064087 1217.713745 1217.901123 1218.220703 1220.154663 1227.291382 1234.301025 1241.209106 1248.228149 1255.305054 1259.049805 1260.533447 1261.162354 1259.565186 1252.502808 1239.321289 1226.236328 1216.787964 1217.626099 1221.608643 1222.298584 1222.769531 1223.1073 1223.378906 1223.366211 1223.287842 1223.090088 1222.874634 1222.624023 1222.427002 1222.404785 1222.371704 1222.417603 1222.303711 1222.207275 1221.887939 1221.3125 1220.858032 1220.750122 1220.872559 1221.028687 1221.141968 1220.813599 1219.570068 1219.140625 1218.676392 1218.298828 1217.865112 1217.112427 1216.32312 1215.431641 1214.499756 1213.442505 1212.380005 1211.271851 1210.072388 1208.662231 1207.935913 1207.366577 1206.816406 1206.621094 1206.500366 1206.389404 1206.487183 1206.717041 1207.191772 1207.936279 1208.183716 1207.4823 1206.413208 1205.596069 1204.974121 1204.429565 1204.005371 1203.701538 1203.329956 1202.861084 1202.473145 1201.89209 1201.331909 1200.77417 1200.036011 1199.303101 1198.262939 1197.227051 1196.282837 1195.450684 1195.442505 1197.030518 1198.383423 1199.358521 1200.264648 1201.035645 1201.734619 1202.282837 1202.813965 1203.222534 1203.815308 1204.60437 1205.605835 1206.92627 1207.692139 1207.58606 1207.04187 1207.027954 1207.067871 1206.967285 1207.10144 1207.390747 1207.578125 1208.24231 1209.25708 1210.072021 1210.461182 1210.463379 1210.009277 1209.076172 1208.47644 1208.452881 1208.467041 1208.092651 1205.518066 1201.309937 1198.478149 1195.927124 1194.035767 1191.959717 1189.797485 1187.838745 1186.072388 1184.542358 1180.591309 1176.070312 1181.814453 1186.314331 1190.277588 1192.860474 1194.413574 1195.348022 1195.178833 1193.808838 1192.980835 1191.886353 1190.78064 1189.570923 1188.490479 1187.48291 1186.937988 1186.692505 1186.651855 1186.682373 1186.753784 1186.596436 1186.458374 1186.043335 1184.464722 1180.168579 1175.051392 1173.085205 1172.141724 1172.017456 1172.159912 1172.499146 1172.827393 1172.963135 1173.084717 1173.127319 1172.955566 1172.709229 1172.26416 1171.619385 1171.043579 1171.029053 1171.80188 1172.284912 1172.386719 1172.308228 1172.070312 1171.361694 1171.348755 1171.245117 1170.880981 1170.366699 1169.583374 1168.820801 1168.144287 1167.705933 1167.281006 1166.99939 1166.612427 1166.051636 1165.574219 1165.078491 1164.549316 1164.015747 1163.292114 1162.44104 1161.408447 1160.19812 1159.126709 1159.21167 1159.46814 1159.271484 1156.954834 1157.581909 1159.171021 1159.356567 1159.298218 1159.189087 1159.020264 1158.592163 1157.993042 1157.647949 1158.014526 1158.997925 1159.62915 1159.473145 1159.622192 1159.854736 1159.613647 1159.007446 1158.299072 1157.285522 1156.973022 1156.716797 1156.654419 1156.693604 1156.730957 1156.853882 1156.852905 1156.860229 1157.044312 1156.815796 1156.842407 1156.847168 1156.844727 1156.815796 1157.157959 1157.702148 1158.049683 1158.688843 1159.645752 1160.31958 1161.246826 1162.226807 1163.230103 1164.044189 1164.803345 1165.421997 1166.008789 1166.785889 1167.547485 1168.334106 1169.206055 1170.254761 1171.485962 1172.364502 1173.016357 1173.469116 1173.643677 1173.685425 1173.887695 1174.282227 1174.74292 1175.105835 1175.468018 1175.487427 1177.593872 1182.057373 1188.356567 1195.680786 1203.933228 1211.294678 1217.761841 1219.799438 1219.476685 1217.028687 1217.033081 1220.127197 1230.816772 1240.490601 1248.157593 1255.801758 1262.555054 1269.363647 1279.543213 1287.307129 1295.459595 1305.221924 1308.099121 1307.249756 1306.078979 1300.879883 1295.105347 1290.215576 1285.712891 1283.824585 1282.349854 1280.91394 1278.955688 1278.950439 1283.304443 1286.008179 1287.690552 1288.398926 1287.819092 1284.224731 1279.845215 1277.256836 1279.411377 1281.351929 1281.987427 1282.203247 1280.59314 1279.521118 1279.119141 1278.499512 1276.773315 1273.454468 1268.765381 1258.272461 1241.308716 1251.114868 1261.765991 1264.377319 1262.560913 1259.124146 1255.954468 1254.44812 1252.206543 1248.136719 1242.862671 1234.145142 1226.705566 1219.263672 1214.585327 1224.147339 1236.328735 1243.232666 1249.387573 1254.46167 1254.847412 1253.124878 1250.473999 1246.335327 1243.006348 1238.361084 1232.646973 1233.323975 1232.990479 1231.076172 1231.025391 1234.243652 1237.357788 1238.454224 1238.053833 1236.839233 1235.339355 1233.528931 1230.003052 1227.75415 1228.666382 1232.797363 1234.656616 1239.043823 1245.863403 1253.783569 1258.412842 1259.484497 1259.449463 1259.633423 1259.22937 1258.075317 1255.19043 1248.296509 1240.125122 1229.483765 1222.255493 1215.174072 1207.927124 1196.930298 1194.351562 1202.960571 1208.917114 1210.524658 1213.924194 1216.978149 1207.919556 1190.545532 1170.923096 1158.429443 1154.021973 1152.372192 1153.528809 1160.629272 1171.078735 1174.261719 1172.349609 1167.611084 1179.68457 1187.496582 1187.829712 1186.315063 1182.776855 1174.464966 1165.189697 1156.879883 1165.79895 1172.757202 1170.920044 1161.715698 1152.348389 1145.30896 1143.17395 1145.981079 1153.410522 1159.485962 1164.678711 1160.589966 1152.202271 1142.410522 1134.57959 1132.14978 1130.106445 1127.883423 1125.443359 1123.438232 1116.945679 1110.219849 1108.956177 1107.814941 1106.887451 1105.912109 1105.03418 1104.129028 1103.346436 1102.786377 1102.303833 1101.814453 1101.333984 1100.959473 1100.482056 1100.007935 1099.758057 1099.417725 1099.12793 1098.842773 1098.127563 +1265.541626 1273.599609 1283.063721 1292.821045 1300.93811 1306.590576 1307.825439 1312.525146 1318.759888 1327.744507 1333.160645 1321.021118 1314.453003 1310.646118 1307.747681 1304.999023 1303.167725 1302.689575 1300.908081 1291.581909 1286.476685 1281.886597 1280.562744 1274.880737 1268.089722 1260.63562 1249.799805 1242.989502 1246.364746 1239.276245 1219.145264 1189.816284 1175.714478 1171.285156 1163.888794 1157.497681 1154.465088 1149.595825 1146.11499 1146.551392 1147.557007 1148.674072 1149.914795 1150.940796 1151.858765 1152.795166 1153.776855 1154.958496 1156.371826 1157.4729 1158.198853 1165.230103 1175.378662 1185.330444 1194.983032 1202.531616 1213.064819 1222.838013 1227.435425 1228.223022 1228.826416 1226.571899 1222.923096 1216.474854 1207.474121 1203.45813 1208.662354 1219.174561 1221.463013 1222.04126 1224.62854 1228.646729 1229.494019 1229.019775 1228.985352 1228.397217 1227.518799 1226.633179 1225.66687 1224.857544 1224.427612 1224.096436 1223.995117 1223.92041 1223.803467 1223.546021 1223.055664 1222.41333 1221.62854 1220.995728 1220.650269 1220.467163 1220.368042 1220.078003 1219.120483 1216.831543 1213.80603 1210.317627 1207.539307 1206.005981 1204.557495 1203.230957 1204.344238 1208.940796 1212.328491 1215.463745 1217.523804 1218.510254 1219.783813 1223.092407 1228.723877 1231.731934 1230.748169 1228.256592 1227.039429 1225.929199 1224.786621 1224.668579 1226.857178 1232.796875 1234.792969 1235.220215 1235.408081 1235.44751 1235.365845 1234.534424 1233.419678 1228.704834 1225.539795 1231.25354 1233.3479 1235.076416 1237.608276 1241.191528 1243.117676 1243.212891 1244.753662 1245.67688 1246.407959 1246.568726 1246.306763 1245.234985 1244.516968 1244.310791 1243.95459 1242.514282 1240.281616 1238.363892 1236.544312 1232.832031 1231.176636 1230.216187 1230.217163 1229.787109 1228.783936 1226.657715 1224.199463 1222.156006 1220.619141 1219.34314 1218.058716 1216.975342 1217.473511 1220.643066 1220.669678 1220.047729 1219.113159 1219.061646 1224.963867 1231.494629 1238.271362 1245.208862 1253.295898 1257.741211 1259.780884 1260.285156 1259.151733 1248.084839 1235.091064 1223.805908 1215.259399 1220.831787 1222.297974 1222.836182 1223.280884 1223.657227 1223.871826 1223.936279 1223.813843 1223.639648 1223.273438 1223.173218 1223.124146 1223.135132 1223.264648 1223.268188 1223.175537 1223.012695 1222.640747 1222.351685 1222.018921 1221.923462 1222.06958 1222.080322 1221.881592 1221.323608 1220.480957 1220.194214 1219.814087 1219.251953 1218.763428 1218.031372 1217.219849 1216.265259 1215.241455 1214.352783 1213.267822 1212.138916 1210.84314 1209.744751 1208.887329 1207.750122 1207.173584 1206.869995 1206.791748 1206.907959 1207.035156 1207.088989 1207.544434 1208.469482 1208.381714 1207.459106 1206.594238 1205.939209 1205.439941 1204.937744 1204.568481 1204.37207 1204.030273 1203.776489 1203.394897 1202.976318 1202.457275 1201.935547 1201.258301 1200.374878 1199.584351 1198.667725 1197.764526 1197.052002 1197.21875 1198.256958 1199.275757 1200.05603 1200.910889 1201.6521 1202.275879 1202.717407 1203.191528 1203.480347 1203.944824 1204.658203 1205.434692 1206.777832 1207.595825 1207.465332 1207.298096 1207.776245 1207.655396 1207.55249 1207.246582 1207.234131 1207.603149 1208.040161 1209.117432 1210.136353 1210.731323 1210.926025 1210.611816 1210.142578 1209.55127 1209.110352 1208.808716 1208.328857 1206.582275 1202.784058 1199.555298 1196.972656 1194.575073 1192.538086 1190.649414 1188.663452 1186.966309 1185.296021 1182.691284 1177.125244 1180.954468 1185.457031 1191.002441 1194.237305 1195.880981 1195.887207 1195.569946 1194.56665 1193.666138 1192.681274 1191.723389 1190.863403 1189.992065 1189.073242 1188.449951 1188.008667 1187.77356 1187.545166 1187.227295 1186.821777 1186.378662 1185.409058 1182.74585 1177.23584 1174.05127 1173.690186 1173.310547 1173.341187 1173.530396 1173.54541 1173.691528 1173.662354 1173.583618 1173.423584 1173.015137 1172.481445 1171.750854 1171.237305 1170.944458 1171.782227 1172.379395 1172.695068 1172.817017 1172.660034 1172.393799 1172.042725 1171.705811 1171.490723 1171.11499 1170.550903 1169.745972 1169.039795 1168.488403 1168.04248 1167.80188 1167.588257 1167.234619 1166.732788 1166.304321 1165.790283 1165.361816 1164.626343 1163.797363 1162.867432 1161.844727 1160.961304 1160.139282 1159.924805 1159.786377 1159.424561 1157.416138 1158.366089 1159.584351 1159.792114 1159.799561 1159.730469 1159.504517 1159.140381 1158.746094 1158.14502 1158.464844 1159.319824 1159.964478 1160.239868 1160.37561 1160.236694 1159.970947 1159.345215 1158.797363 1157.83313 1157.603149 1157.449463 1157.442993 1157.457031 1157.615601 1157.745117 1157.670532 1156.801636 1156.84082 1156.848755 1156.847534 1156.8479 1156.847778 1156.84729 1156.845215 1156.812134 1156.762939 1156.953125 1158.452393 1159.227417 1159.9646 1161.176636 1162.310791 1163.210693 1163.992676 1164.60083 1165.144653 1165.747437 1166.539185 1167.238159 1168.088623 1169.015747 1170.056152 1171.033936 1171.663086 1172.013428 1172.087158 1172.066772 1172.064453 1172.570435 1173.321533 1174.066406 1174.412109 1175.402832 1178.272705 1182.449585 1189.541016 1197.964966 1207.11731 1216.070312 1221.682251 1222.87146 1224.109497 1224.934692 1224.575439 1226.188477 1230.830933 1239.872803 1247.709961 1254.833008 1263.929932 1273.709595 1283.824585 1291.703491 1297.349365 1301.942749 1305.21106 1306.61084 1306.584473 1303.098267 1297.612915 1293.858521 1291.623779 1290.147583 1288.36792 1285.268311 1282.647949 1281.100342 1284.605591 1288.013428 1290.530396 1292.229492 1292.13147 1288.521606 1284.792725 1282.293701 1283.539185 1285.454834 1286.49353 1287.088867 1287.0979 1286.196289 1285.10498 1283.501953 1281.957397 1280.140503 1274.205322 1262.475098 1253.784546 1266.640869 1272.527588 1272.290527 1268.959717 1264.714355 1261.251709 1258.962891 1255.805298 1251.478638 1244.860596 1234.50415 1229.020996 1224.50769 1219.712646 1219.106934 1233.74231 1243.842407 1252.276001 1258.412598 1259.263306 1258.023682 1256.284424 1253.115723 1249.373535 1244.491699 1241.678345 1244.632568 1242.812378 1234.592529 1231.499023 1234.818726 1240.059204 1241.994385 1241.726074 1239.375122 1236.446167 1233.154175 1231.306641 1233.869751 1232.184082 1228.960083 1232.475708 1237.142212 1243.795776 1251.763306 1258.282104 1260.063232 1260.55542 1260.519897 1260.510864 1259.50415 1256.533813 1251.991577 1246.400635 1235.301758 1225.883179 1216.546387 1207.295044 1204.092896 1196.6073 1206.981201 1211.645142 1212.669556 1212.480835 1210.151978 1200.754761 1188.576538 1171.634399 1156.736206 1156.138672 1159.684814 1161.434692 1171.331543 1179.31604 1183.071289 1181.922363 1171.888062 1178.916626 1188.101929 1189.293335 1186.774658 1181.158081 1175.214478 1170.258179 1159.630249 1171.293091 1174.666504 1173.234253 1165.326416 1154.840088 1145.54126 1144.933594 1146.300049 1159.493774 1168.090088 1172.584229 1167.491943 1157.189087 1145.772583 1139.128052 1136.016113 1133.408447 1129.685425 1125.755493 1121.665649 1118.703369 1111.176147 1109.267334 1108.464478 1107.603027 1106.631104 1105.737671 1104.915649 1104.078613 1103.552612 1102.934204 1102.497192 1102.073242 1101.77417 1101.30896 1100.839478 1100.456055 1100.042114 1099.549927 1098.96228 1098.202393 +1264.85376 1272.169556 1282.446045 1290.512939 1297.622437 1304.023682 1306.882202 1310.769531 1316.316528 1322.020508 1324.922852 1319.426147 1315.678467 1312.560059 1309.614502 1307.554688 1305.628784 1303.413818 1298.96875 1295.074829 1286.831177 1277.939819 1268.577148 1266.541138 1261.752319 1255.481323 1252.538452 1252.48999 1244.917114 1225.228149 1203.722534 1182.726929 1167.44165 1158.923706 1156.102295 1153.295532 1148.869873 1146.24292 1146.894653 1148.380249 1149.390991 1150.376343 1151.494751 1152.505981 1153.361816 1154.083984 1154.884888 1155.869629 1157.607788 1159.878296 1162.355713 1167.817017 1177.354248 1187.599976 1197.222046 1206.452759 1216.30127 1225.989746 1232.954102 1233.450073 1232.406982 1228.506836 1223.58313 1217.875366 1212.627075 1208.949707 1205.591431 1208.111938 1217.078369 1221.175171 1224.814209 1230.887695 1232.77356 1231.676758 1230.599121 1229.935425 1228.705811 1227.457397 1226.605713 1225.832031 1225.327637 1225.156006 1224.928711 1224.856689 1224.624756 1224.361084 1223.823608 1223.165039 1222.462158 1221.897705 1221.504272 1221.238159 1220.998901 1220.578003 1220.039673 1217.638794 1214.123169 1209.974731 1207.14563 1205.736572 1204.489014 1203.691528 1208.578003 1211.892212 1215.359497 1217.855713 1219.784668 1221.66748 1224.057495 1228.860352 1233.086914 1234.492554 1234.177612 1232.30957 1232.571533 1230.959961 1231.742676 1231.667969 1229.953125 1228.845581 1233.027588 1235.214722 1236.368774 1237.119019 1237.52002 1237.089844 1236.023804 1234.116211 1229.322144 1227.380737 1231.005371 1233.025269 1236.066162 1240.502319 1244.702148 1245.036255 1245.823242 1246.779419 1247.401489 1247.755249 1247.579834 1247.092773 1246.485718 1246.139038 1245.501465 1244.587769 1242.567505 1240.560181 1238.842163 1234.84314 1232.640747 1232.039917 1232.47937 1232.146118 1231.364502 1229.677856 1226.766113 1224.104858 1222.002563 1220.364746 1218.755005 1217.542969 1220.542603 1222.013916 1222.161377 1221.612305 1220.172119 1219.120483 1223.455933 1229.57666 1236.488647 1243.860718 1250.221191 1255.286621 1258.181641 1259.699463 1260.236572 1245.962769 1234.126465 1222.069702 1215.70105 1220.883057 1222.367554 1223.098511 1223.676636 1224.013062 1224.275513 1224.252563 1224.2229 1224.001587 1223.863525 1223.880493 1223.839478 1223.925781 1224.081299 1224.184814 1224.109863 1223.798096 1223.532349 1223.305786 1223.224731 1223.110474 1223.102173 1223.046265 1222.739746 1222.218628 1221.784424 1221.304199 1220.917603 1220.286865 1219.577637 1218.792603 1217.886475 1217.094116 1216.041992 1215.123779 1214.258667 1213.226318 1212.070801 1210.945801 1209.687012 1208.36145 1207.609741 1207.318726 1207.20459 1207.485107 1207.598755 1207.713867 1208.382446 1208.92981 1208.63623 1207.407715 1206.925903 1206.339966 1205.9021 1205.402222 1205.196899 1204.877563 1204.763428 1204.536865 1204.289917 1203.920776 1203.54187 1203.05481 1202.387939 1201.755127 1200.998291 1200.353516 1199.84314 1199.614868 1199.708984 1199.937378 1200.47644 1200.977905 1201.481201 1202.173462 1202.696533 1203.134399 1203.473999 1203.658691 1204.105469 1204.642578 1205.286377 1206.040161 1206.941406 1207.098877 1207.504395 1208.317139 1208.602783 1207.790649 1207.599121 1207.356201 1207.505493 1207.672119 1208.817993 1209.985962 1210.804565 1211.335205 1211.217163 1210.847534 1210.273315 1209.680298 1209.102661 1208.405396 1207.06311 1203.536499 1200.201416 1197.04895 1194.606689 1192.95105 1191.373047 1189.301025 1186.912354 1184.874146 1182.369751 1178.273438 1182.74585 1187.077881 1193.022583 1196.016846 1196.846802 1196.612427 1195.901489 1195.068115 1194.107178 1193.435547 1192.707153 1192.067505 1191.414795 1190.629761 1189.955566 1189.353027 1188.859131 1188.152588 1187.333008 1186.437622 1185.019409 1182.926514 1180.224243 1176.567139 1174.914307 1175.078125 1175.071289 1175.050537 1175.000732 1174.857422 1174.647583 1174.468872 1174.254517 1173.931885 1173.455566 1172.624512 1171.394653 1170.927612 1171.306641 1172.451416 1172.900146 1173.083008 1173.088379 1172.850098 1172.543213 1172.117798 1171.793335 1171.413452 1170.946411 1170.301147 1169.635132 1169.108887 1168.731445 1168.384644 1168.314087 1168.20105 1167.968994 1167.482788 1167.046021 1166.636719 1165.946167 1165.163818 1164.286621 1163.287476 1162.113647 1161.28894 1160.644043 1160.258911 1159.775879 1159.370605 1157.891602 1158.619629 1159.805176 1160.24292 1160.316895 1160.26416 1159.975952 1159.653564 1159.262817 1158.805908 1158.687744 1159.634766 1160.376831 1160.709229 1160.786255 1160.746826 1160.446533 1159.864136 1159.070068 1158.606201 1158.203491 1158.548218 1158.427734 1158.110718 1158.558838 1158.723755 1158.424438 1158.479858 1156.802002 1156.833252 1156.846191 1156.8479 1156.834717 1156.834473 1156.847778 1156.848022 1156.854126 1156.874634 1157.486694 1158.358398 1159.046875 1160.450195 1161.527832 1162.369751 1162.991699 1163.631714 1164.193726 1164.692993 1165.266724 1165.874146 1166.536987 1167.338501 1168.057617 1168.859131 1169.525146 1170.0802 1170.233276 1170.103638 1170.796021 1171.39624 1172.176514 1172.951538 1173.675903 1175.440674 1178.867432 1182.178467 1189.41394 1198.207886 1206.924561 1215.115234 1220.964478 1222.449341 1224.44043 1229.841553 1233.065186 1234.436279 1235.860474 1241.406982 1247.428467 1254.292236 1263.322754 1272.370117 1281.949219 1289.237793 1294.176025 1296.287476 1298.294189 1299.182617 1299.588257 1299.178711 1297.526367 1296.102539 1295.205811 1294.669678 1293.148804 1289.359863 1286.50354 1285.569946 1286.988892 1289.821655 1292.739014 1294.48999 1294.934448 1293.521118 1290.638672 1288.310913 1287.61084 1288.723511 1290.900269 1292.723267 1293.540039 1293.433472 1292.133423 1289.792725 1288.011108 1285.502563 1281.973267 1271.281372 1267.834839 1275.658691 1280.595215 1278.018066 1273.800415 1269.307129 1265.967285 1263.547485 1260.247314 1255.736206 1246.420288 1239.758545 1233.926392 1231.583252 1225.7052 1218.345093 1227.862305 1241.78064 1251.989258 1259.223755 1261.574219 1262.418213 1261.684937 1259.178833 1255.505737 1251.373047 1249.510742 1248.7948 1246.675537 1239.913086 1231.47937 1235.824341 1243.379517 1245.147461 1244.536865 1241.032837 1236.875 1231.684326 1236.349487 1241.730469 1239.782837 1235.584839 1231.935669 1231.803955 1238.176636 1246.274292 1253.904419 1259.023682 1260.920532 1261.404663 1261.203003 1260.775879 1258.546753 1255.52356 1249.577759 1240.814575 1230.349365 1219.796143 1215.317749 1210.819336 1206.007446 1209.932007 1215.575562 1214.862793 1208.798584 1200.300659 1188.340576 1175.556152 1157.799927 1156.000732 1162.001953 1171.993408 1178.701538 1180.748169 1186.504883 1194.295654 1189.685181 1181.900024 1181.817017 1190.674683 1192.75647 1188.103271 1183.625244 1179.304077 1173.267944 1169.484985 1173.257446 1176.348877 1175.034424 1169.599976 1156.864746 1158.897583 1150.570068 1146.50708 1158.772583 1174.003784 1184.635132 1173.933228 1163.131836 1151.186768 1143.707764 1138.237793 1134.891357 1130.571655 1126.09314 1122.283691 1117.404175 1112.188599 1109.590454 1108.785767 1108.026978 1107.314087 1106.353027 1105.586304 1104.828979 1104.235962 1103.709839 1103.242676 1102.855225 1102.453491 1102.211182 1101.666748 1101.212036 1100.624146 1099.760986 1098.657959 1097.782715 +1267.293579 1268.662964 1279.832275 1285.710205 1290.596313 1296.508179 1301.851318 1303.748413 1306.015625 1311.954346 1316.273193 1316.425293 1315.108032 1313.423218 1311.648315 1309.782227 1307.833008 1305.796875 1300.358154 1294.707275 1287.929688 1279.844971 1272.866455 1267.279541 1262.088257 1258.57605 1258.484985 1251.052124 1220.893066 1203.335083 1188.487671 1174.274292 1160.432861 1156.540283 1153.733032 1150.137207 1146.61853 1147.112061 1148.844604 1150.070679 1151.223267 1152.419434 1153.515747 1154.327759 1154.739746 1155.298706 1155.943237 1156.671143 1157.79895 1161.237427 1167.179077 1173.054565 1179.588745 1187.568604 1198.352051 1210.973999 1218.047363 1226.531494 1233.193726 1234.255005 1233.576294 1230.397583 1226.302856 1220.856201 1217.093506 1214.10791 1211.193726 1208.224365 1207.43457 1215.633057 1220.131104 1225.536987 1231.079712 1232.512451 1231.772461 1230.707153 1228.848755 1227.778564 1226.960327 1226.487915 1226.131592 1225.860718 1225.750854 1225.600098 1225.315796 1225.007568 1224.460083 1223.809082 1223.139282 1222.549561 1222.226929 1221.840088 1221.462646 1221.041382 1220.364136 1218.948608 1214.490112 1209.49707 1206.989014 1205.776001 1204.642212 1206.382202 1210.767456 1214.914673 1218.299561 1220.687744 1222.893433 1225.117798 1228.411865 1231.802612 1235.182251 1236.789551 1236.805054 1235.794067 1235.051636 1234.221558 1234.031494 1233.987427 1233.087158 1230.513306 1233.001343 1235.258423 1237.141602 1238.531372 1239.779785 1240.557495 1240.111084 1238.386108 1234.315186 1228.258667 1233.622559 1231.878906 1231.564697 1233.744385 1240.509277 1244.551758 1246.13916 1247.049438 1247.945923 1248.770264 1249.306885 1249.287964 1248.956299 1248.335571 1247.434937 1246.427612 1244.039185 1242.634888 1241.248901 1237.428955 1235.575439 1234.958252 1234.599243 1234.463013 1233.602295 1232.171387 1229.192627 1225.692139 1223.244629 1221.38269 1218.888794 1219.962891 1221.942383 1223.414307 1223.717651 1223.099243 1221.860596 1219.991089 1223.086304 1230.050293 1235.925781 1242.513916 1247.527344 1252.218262 1255.716919 1258.449463 1260.249756 1245.567017 1230.470703 1219.768677 1216.669678 1220.946045 1222.344238 1223.159302 1223.863525 1224.241821 1224.475342 1224.660522 1224.557861 1224.564819 1224.540527 1224.595337 1224.720581 1224.815918 1224.986938 1225.144043 1224.979004 1224.799683 1224.61853 1224.392334 1224.240601 1224.276489 1224.333618 1224.05835 1223.765747 1223.445923 1222.987427 1222.425293 1222.01709 1221.477173 1220.491943 1219.461792 1218.723389 1217.859985 1216.876587 1216.095093 1215.252197 1214.434937 1213.519775 1212.350586 1211.07666 1209.743774 1208.849609 1208.015015 1207.689819 1208.62561 1208.990356 1208.921387 1209.480591 1209.47644 1209.088013 1208.225708 1207.642578 1206.935181 1206.313354 1205.931641 1205.689331 1205.648071 1205.514404 1205.386475 1205.168701 1204.862427 1204.529297 1204.055176 1203.554932 1203.126343 1202.690552 1202.2229 1201.735107 1201.610352 1201.647461 1201.732056 1201.841675 1201.962891 1202.187744 1202.508545 1202.944214 1203.353271 1203.558594 1203.867432 1204.151855 1204.646973 1205.234253 1205.838379 1206.378662 1206.83667 1207.3125 1208.478516 1209.030884 1208.88623 1207.643311 1207.381592 1207.39978 1207.583252 1208.290039 1209.832764 1210.827759 1211.595581 1211.715332 1211.395386 1210.751587 1210.094971 1209.272949 1208.400146 1206.813721 1203.999268 1200.812744 1197.806641 1195.779053 1193.957031 1192.148682 1189.768555 1187.024902 1184.151001 1179.790771 1181.7229 1186.337036 1190.680908 1195.179565 1197.621338 1197.634888 1197.201538 1196.660767 1195.4021 1194.592407 1194.119629 1193.604614 1193.318604 1192.805786 1192.109375 1191.297241 1190.421875 1189.540771 1188.44165 1187.191772 1184.86499 1182.604614 1179.678467 1176.960815 1176.183716 1176.98584 1177.375488 1177.35022 1177.027344 1176.651001 1176.242065 1175.901123 1175.547119 1175.158936 1174.694092 1174.208618 1173.537476 1172.001831 1171.482666 1172.390381 1173.036865 1173.32019 1173.415771 1173.240479 1172.86792 1172.420776 1172.022461 1171.644043 1171.206909 1170.772827 1170.066772 1169.536133 1169.215088 1168.923218 1168.819946 1168.838135 1168.83313 1168.650146 1168.275269 1167.869873 1167.231934 1166.576416 1165.690674 1164.621338 1163.583862 1162.526611 1161.575928 1160.659668 1160.027954 1159.254761 1158.685059 1157.694824 1159.082397 1160.050781 1160.558838 1160.745972 1160.75769 1160.483398 1160.172729 1159.716187 1159.256714 1158.890869 1160.055176 1160.857056 1161.259033 1161.418823 1161.369385 1161.021973 1160.612915 1160.058228 1159.566284 1158.670166 1159.002686 1158.802734 1158.457153 1158.676392 1159.205688 1158.842407 1158.908447 1158.356812 1156.776123 1156.851685 1157.222168 1158.951904 1158.800659 1156.781616 1156.831177 1156.846924 1156.832275 1157.67627 1158.507935 1159.428833 1160.242188 1161.01709 1161.77063 1162.454224 1162.933105 1163.266479 1163.629883 1164.106201 1164.476685 1165.020142 1165.645264 1166.154541 1166.429077 1166.911011 1167.88562 1170.220337 1171.822754 1171.562988 1171.482544 1171.907471 1172.581787 1173.768677 1175.747559 1178.422974 1181.494873 1186.081421 1195.389526 1203.534912 1210.361694 1216.687134 1219.222656 1220.099121 1227.005249 1233.254272 1234.506836 1234.311523 1237.778809 1244.355103 1252.178345 1259.889893 1266.705811 1274.632202 1280.730713 1284.626831 1287.878052 1289.752319 1290.2948 1290.840088 1291.817871 1295.299561 1296.610962 1296.346069 1295.720581 1294.579468 1291.241943 1288.000488 1287.129883 1288.428223 1291.312744 1294.495117 1295.758301 1296.146606 1295.505981 1293.933472 1291.498779 1290.401855 1291.091064 1293.72876 1295.130249 1295.818726 1295.94165 1295.574585 1294.618408 1293.598633 1290.466187 1283.467651 1280.508911 1277.43457 1282.050537 1285.37793 1283.06897 1278.704712 1274.432007 1271.190796 1268.782227 1265.121826 1258.993042 1248.598022 1242.278076 1238.971436 1236.704956 1233.046143 1224.896851 1224.311768 1236.248657 1249.903931 1259.044067 1263.040039 1266.514893 1267.555054 1266.287598 1262.379761 1258.88562 1255.799683 1251.8125 1246.919312 1240.890869 1236.063721 1242.292114 1245.977783 1246.531372 1245.654785 1243.015747 1238.934814 1238.263672 1245.37085 1246.789673 1246.504272 1244.095093 1240.557251 1235.240112 1232.531616 1240.452026 1245.555298 1253.721313 1258.823242 1261.569214 1261.825073 1261.766968 1260.884521 1258.814453 1254.652344 1245.452026 1233.282349 1227.615723 1222.518921 1215.335449 1206.654663 1213.487061 1220.494385 1217.53479 1203.715942 1190.407837 1177.67688 1156.961914 1163.521118 1159.554199 1170.512329 1183.24707 1191.212769 1191.307007 1192.119995 1196.796997 1196.123901 1185.853516 1181.702271 1194.379761 1195.38623 1190.635132 1186.575073 1182.97168 1176.145386 1171.024414 1176.506714 1180.328735 1179.767578 1172.853638 1165.794556 1171.107178 1161.992554 1155.380859 1157.636475 1172.78833 1186.896362 1179.916016 1168.68457 1155.767578 1144.497559 1137.032959 1133.190796 1130.829712 1127.097656 1123.540039 1118.795776 1113.425415 1109.933472 1109.233154 1108.573608 1107.803467 1107.016968 1106.279663 1105.63501 1105.032715 1104.514526 1104.15564 1103.783691 1103.403442 1102.957275 1102.517456 1102.040161 1101.428589 1100.489746 1098.941895 1098.106323 +1269.650146 1269.175903 1274.135986 1280.956665 1287.840088 1293.487915 1297.125977 1300.176392 1303.404907 1305.672485 1313.589233 1316.424194 1316.084717 1315.135498 1313.900879 1312.171875 1309.951904 1305.901611 1303.308594 1298.841553 1295.50769 1289.643555 1277.022949 1267.442627 1266.770508 1265.672241 1259.202515 1236.696411 1206.526367 1185.216553 1171.958008 1164.051392 1157.398315 1154.92688 1152.199341 1148.805298 1146.290039 1148.310913 1150.148315 1151.991089 1153.493896 1154.807251 1155.765259 1156.21936 1156.303467 1156.640747 1157.223511 1157.550171 1158.281494 1162.720337 1168.949219 1176.444092 1184.636719 1191.294067 1199.438843 1214.619995 1223.0354 1228.014648 1232.38147 1234.855103 1234.407959 1232.737183 1230.393921 1225.646118 1221.755859 1219.075928 1216.276245 1213.293091 1210.27124 1209.225586 1212.536621 1219.31543 1225.354858 1231.530029 1232.286011 1230.100952 1228.344971 1227.480225 1226.97522 1226.59082 1226.416626 1226.265625 1226.230835 1226.104736 1225.857666 1225.516724 1224.995361 1224.369873 1223.771729 1223.227905 1222.828857 1222.422607 1222.034424 1221.460571 1220.799316 1220.083008 1215.128174 1208.408447 1206.872437 1205.975586 1204.868408 1208.765747 1213.135498 1217.705322 1220.878418 1223.035278 1225.492554 1228.771484 1232.047241 1236.782837 1240.427979 1240.030518 1239.503296 1238.469849 1237.544067 1236.667114 1235.971558 1235.199951 1234.072388 1232.360107 1232.964966 1235.598511 1237.847656 1239.845337 1241.759277 1243.362061 1243.904053 1243.316284 1238.911743 1231.392212 1239.540283 1247.82605 1241.73877 1235.631592 1237.471436 1243.153809 1244.155518 1246.329102 1248.299927 1249.77832 1251.174927 1251.869263 1252.002319 1251.235229 1249.922485 1248.104126 1246.272217 1245.165405 1243.649902 1240.46875 1239.020752 1237.782959 1237.051025 1235.957642 1234.856201 1232.971069 1230.026611 1226.498413 1223.601196 1221.104248 1219.858154 1221.989136 1223.92749 1225.501221 1225.900146 1225.406128 1224.604248 1224.421143 1226.831299 1230.243896 1234.87146 1239.983643 1244.387451 1249.150757 1253.329224 1256.947632 1258.704834 1247.809448 1233.888062 1224.189331 1217.032104 1220.786865 1222.244019 1223.105713 1223.854248 1224.341919 1224.690552 1224.742554 1224.911499 1225.163452 1225.450928 1225.578979 1225.687988 1225.877197 1226.077026 1226.19873 1226.072144 1225.953491 1225.676758 1225.562134 1225.491211 1225.465576 1225.428589 1225.241333 1224.958496 1224.613159 1224.264526 1223.793701 1223.31665 1222.451538 1221.458862 1220.227539 1219.329834 1218.550903 1217.536255 1216.860229 1216.37146 1215.679199 1214.836548 1213.849243 1212.695801 1211.567871 1210.501831 1209.672119 1209.609131 1210.157593 1210.293457 1210.408447 1210.449585 1210.353149 1209.80249 1209.132446 1208.29126 1207.488159 1206.779053 1206.286499 1206.184448 1206.331909 1206.421387 1206.118286 1205.979004 1205.601929 1205.430176 1205.072998 1204.792725 1204.513428 1204.371094 1203.881348 1203.564453 1203.354126 1203.259766 1203.230591 1203.137085 1202.985229 1202.942627 1203.024658 1203.190918 1203.508301 1203.594727 1203.931885 1204.287231 1204.829102 1205.250244 1205.819702 1206.303833 1206.754395 1207.192749 1208.415649 1209.37207 1209.567993 1208.469482 1207.593262 1207.453247 1207.456177 1207.812866 1209.506836 1210.820312 1211.827271 1212.076172 1211.766724 1211.152954 1210.189331 1209.261841 1208.021484 1206.235596 1203.943481 1201.27832 1198.96228 1196.986084 1195.194336 1193.00415 1190.341064 1187.361572 1184.272095 1180.656128 1181.837524 1186.970703 1192.365479 1196.688965 1198.380249 1198.410156 1197.898193 1197.088135 1196.212646 1195.436401 1194.890625 1194.332764 1194.496582 1194.198608 1193.522583 1192.381836 1191.195557 1189.920898 1188.357544 1186.72644 1182.783447 1178.834717 1179.167603 1180.72168 1180.910278 1181.205688 1180.407349 1179.550903 1178.807617 1178.133667 1177.684448 1177.236694 1176.749023 1176.210205 1175.681885 1175.267944 1174.601318 1173.839966 1173.260376 1173.441162 1173.653809 1173.784302 1173.655029 1173.269287 1172.819092 1172.129761 1171.523071 1171.288696 1171.039307 1170.511475 1169.872681 1169.554688 1169.269043 1169.153931 1169.251953 1169.496826 1169.648315 1169.484253 1169.149292 1168.544556 1167.918213 1167.151001 1166.141602 1165.217163 1164.13147 1162.958252 1161.876343 1160.692139 1159.479126 1158.591309 1158.650635 1159.105225 1159.568481 1160.315186 1160.841797 1161.1875 1161.325806 1161.221069 1160.943726 1160.594849 1160.378906 1160.637695 1161.283691 1161.72522 1162.01062 1162.006104 1161.933716 1161.744019 1161.349609 1160.781616 1159.967896 1158.711914 1159.507812 1159.448608 1158.95105 1158.620483 1159.425049 1159.532837 1159.350708 1159.13916 1158.448364 1158.558594 1159.101318 1159.767456 1159.699707 1159.064697 1156.775391 1156.793457 1158.050781 1157.972656 1158.484863 1159.31189 1160.102295 1160.679321 1161.302734 1161.825073 1162.166992 1162.453613 1162.634644 1162.942505 1163.335449 1163.815186 1164.30896 1164.909424 1165.772583 1166.601196 1168.663818 1171.090332 1171.38501 1171.637329 1171.677002 1172.137207 1172.695679 1173.622803 1174.938965 1176.954468 1179.66687 1182.351807 1188.627686 1196.887329 1205.028198 1209.690796 1213.446411 1215.086426 1218.092529 1226.189575 1228.209229 1226.415283 1230.824463 1237.719238 1247.438477 1256.286011 1262.529175 1266.786011 1271.613037 1275.037354 1277.569946 1279.325317 1279.682495 1280.291504 1284.641724 1289.939575 1293.701172 1295.412109 1296.700073 1294.202515 1290.085449 1287.121338 1286.460571 1287.866577 1291.177124 1295.049561 1296.482422 1296.968628 1296.169556 1295.264648 1293.366699 1291.677246 1291.975342 1294.043457 1295.649536 1296.432739 1297.179321 1297.336182 1296.562866 1295.117554 1293.11853 1289.727905 1286.998047 1282.204956 1283.704102 1291.566895 1291.401489 1283.567017 1279.329102 1276.106201 1272.977539 1269.873291 1261.854858 1253.360474 1246.262573 1243.856445 1241.235596 1237.929932 1234.142212 1224.209839 1230.296265 1245.865112 1256.974487 1262.796631 1267.814331 1270.497437 1270.54834 1268.660156 1263.787231 1259.045776 1253.709717 1246.703003 1242.506104 1243.272827 1246.392456 1248.084473 1247.896118 1246.579956 1243.404907 1241.603394 1242.516968 1246.092041 1250.047241 1250.892578 1249.394287 1246.869141 1242.715088 1240.596558 1240.793457 1241.867065 1248.639893 1256.671387 1260.966675 1262.225342 1262.346802 1262.08667 1261.082397 1257.597168 1249.017334 1241.335815 1234.796997 1226.458862 1218.686768 1213.679565 1219.639404 1222.398193 1215.023682 1201.462036 1187.588745 1171.748291 1174.002197 1180.328369 1172.704956 1174.543091 1193.263062 1199.691284 1199.685425 1196.159546 1198.619385 1198.654297 1194.440552 1185.10437 1195.881958 1196.106323 1192.156494 1188.43335 1184.983032 1179.728394 1180.518921 1182.71521 1184.266724 1184.87146 1176.720581 1170.046021 1174.608154 1172.681274 1163.855713 1162.387939 1170.279785 1189.377197 1186.57312 1174.445557 1161.430664 1147.76062 1140.46582 1135.259766 1132.161133 1128.734741 1124.601318 1120.858154 1113.648682 1110.990845 1109.836304 1109.194214 1108.420532 1107.597778 1107.004639 1106.414917 1105.82959 1105.470703 1105.058472 1104.639526 1104.287476 1103.81604 1103.363159 1102.90918 1102.317383 1101.62146 1100.844482 1100.26709 +1278.935425 1269.678955 1272.35791 1282.7229 1289.743652 1292.053955 1293.111084 1299.670654 1305.357178 1309.388794 1315.497314 1318.406006 1318.303467 1317.536133 1316.313843 1314.809937 1312.09021 1309.199341 1306.650757 1300.938599 1296.21167 1285.803101 1277.230225 1270.675537 1271.958496 1270.989868 1251.035034 1221.837158 1200.852051 1180.817871 1166.886963 1159.267822 1156.283813 1153.763672 1151.11438 1148.427734 1146.564453 1149.459351 1152.548096 1154.80188 1156.238403 1157.284668 1158.032349 1158.21106 1158.031982 1158.078247 1159.127197 1159.066406 1163.898193 1170.97229 1179.27356 1185.91626 1192.132202 1199.211914 1207.315308 1219.823242 1229.938721 1232.295898 1233.947998 1235.890381 1235.900024 1234.645508 1233.151733 1230.557495 1226.382812 1223.259644 1220.862549 1218.604614 1214.873291 1212.328735 1211.592285 1211.818604 1220.275024 1226.881714 1229.210327 1227.895264 1227.176392 1226.658447 1226.41626 1226.414917 1226.411621 1226.536133 1226.505981 1226.488159 1226.290649 1225.906982 1225.359619 1224.859009 1224.247681 1223.747803 1223.306763 1222.923828 1222.525879 1221.986206 1221.261963 1220.495239 1217.806396 1209.565918 1207.95459 1206.508789 1206.441895 1210.595337 1215.032227 1219.452393 1222.177124 1224.34375 1226.968994 1229.699463 1235.517212 1244.192627 1244.7677 1243.050171 1242.554932 1241.073364 1239.896362 1238.864136 1237.885742 1236.725098 1235.212769 1233.931885 1234.84436 1236.6427 1238.791016 1240.763062 1242.924194 1244.478027 1245.465088 1245.469727 1244.295288 1237.024536 1231.72168 1244.093018 1246.115967 1244.809448 1243.700928 1243.444092 1244.398804 1245.283081 1248.539917 1250.591675 1252.751709 1254.708862 1255.829956 1254.401489 1252.237427 1250.403442 1248.845093 1247.52356 1245.430176 1243.401489 1241.65625 1240.142456 1239.000854 1237.660278 1235.689575 1232.802246 1230.415771 1227.473633 1224.153809 1222.479126 1222.951782 1224.787598 1226.963745 1228.483398 1228.773438 1228.307129 1227.975586 1227.822754 1228.982788 1230.550903 1233.217285 1237.604858 1242.030151 1246.454712 1251.049316 1255.353394 1257.319458 1247.827271 1236.076782 1227.169556 1219.743774 1219.802856 1221.895874 1222.862549 1223.673828 1224.262817 1224.673706 1225.036377 1225.303467 1225.804077 1226.144287 1226.459961 1226.80896 1226.974121 1227.159668 1227.295044 1227.276245 1227.122681 1226.919922 1226.72168 1226.660034 1226.548828 1226.582764 1226.500732 1226.235962 1225.908203 1225.659058 1225.337891 1224.730347 1223.959106 1222.84375 1221.481079 1220.083862 1219.217529 1218.335938 1217.877075 1217.466187 1216.924194 1216.195923 1215.353394 1214.479736 1213.466675 1212.712036 1212.139404 1211.844727 1211.910156 1212.073486 1211.804199 1211.613159 1211.203003 1210.578857 1209.8479 1208.908936 1208.002441 1207.10376 1206.659302 1206.58252 1207.214722 1207.202759 1207.022339 1206.752075 1206.335205 1206.182617 1206.034058 1205.972656 1206.085938 1205.855713 1205.540283 1204.968506 1204.675781 1204.465698 1204.371094 1204.319458 1204.047119 1203.691406 1203.547119 1203.42981 1203.540894 1203.736084 1203.993042 1204.557251 1204.925293 1205.415039 1205.904175 1206.460693 1206.933716 1207.250244 1208.336426 1210.074219 1210.457642 1209.886475 1208.210815 1207.692627 1207.452759 1207.599121 1209.131958 1210.85144 1211.977905 1212.326904 1212.077637 1211.346924 1210.265015 1209.011963 1207.403687 1205.558716 1203.571777 1201.527832 1199.570435 1197.846069 1195.99353 1193.833252 1190.999878 1188.016602 1185.452026 1184.125244 1181.651489 1184.57959 1192.689697 1198.049072 1199.181763 1198.954468 1198.397827 1197.558594 1196.831909 1196.155884 1195.717285 1195.195068 1195.579834 1195.610962 1194.266724 1193.12085 1191.786377 1190.092529 1188.119141 1185.211548 1180.670044 1180.377808 1183.693115 1183.693237 1183.564209 1183.487549 1182.75415 1181.421387 1180.245239 1179.56897 1179.027954 1178.506348 1177.990112 1177.398315 1176.905151 1176.373169 1175.781006 1175.139526 1174.600098 1174.339844 1174.306396 1174.186035 1173.864868 1173.283325 1172.460938 1170.914917 1170.956909 1170.914551 1170.621338 1170.295654 1169.878296 1169.617676 1169.479858 1169.470947 1169.641479 1170.253662 1170.593018 1170.533569 1169.954468 1169.222046 1168.561035 1167.713867 1166.898315 1165.886963 1164.865112 1163.625488 1162.317749 1161.126221 1159.798706 1159.109497 1159.41626 1159.664185 1160.15686 1160.636475 1161.229492 1161.557495 1161.852417 1161.879272 1161.835938 1161.860474 1162.079346 1162.258789 1162.661865 1162.966187 1162.991333 1162.963867 1162.826904 1162.601074 1162.056519 1161.390625 1160.71521 1160.069336 1159.924683 1159.570679 1158.755005 1159.209595 1159.852295 1160.22229 1160.201782 1159.895508 1159.58606 1159.598389 1160.059082 1160.260986 1160.144165 1159.661621 1158.525391 1157.82605 1158.060303 1158.122314 1158.467407 1158.998901 1159.726807 1160.291626 1160.800903 1161.260498 1161.4552 1161.541016 1161.692871 1161.920166 1162.259888 1162.741821 1163.343872 1164.164551 1164.918335 1166.233398 1168.14917 1169.93042 1170.862183 1171.334229 1171.579346 1171.9198 1172.366211 1172.725708 1173.496582 1174.900391 1177.242798 1180.306274 1183.446655 1193.01123 1199.34729 1203.845093 1208.81665 1208.472412 1209.18457 1216.589111 1218.91272 1217.090698 1220.843628 1233.957275 1245.991699 1254.184937 1259.08252 1262.309448 1265.339844 1267.577759 1267.853516 1267.673828 1270.213623 1268.194702 1273.215088 1281.452881 1284.365112 1285.924561 1286.006592 1284.916382 1284.780884 1282.937012 1282.565308 1284.775391 1288.644653 1292.977173 1295.828247 1296.446045 1296.991821 1295.700195 1294.373169 1291.996582 1290.883179 1293.007935 1295.626831 1297.141968 1297.855957 1298.101562 1297.541382 1296.44751 1292.681885 1293.683716 1293.421143 1290.309326 1290.920654 1293.773315 1294.178711 1289.044678 1283.768921 1279.914795 1276.351074 1272.425781 1266.408691 1256.488403 1251.665527 1248.243408 1245.385864 1241.780029 1237.823608 1232.06665 1227.351929 1239.061768 1251.837646 1260.391113 1268.130371 1271.437134 1271.714478 1270.953857 1267.149292 1261.44519 1255.195923 1245.622803 1244.497192 1248.022095 1250.482788 1250.718506 1249.269165 1247.14978 1244.254028 1242.689087 1242.62561 1244.771606 1253.040161 1255.378052 1254.28125 1251.384766 1248.709595 1246.841553 1245.214233 1242.11438 1243.478516 1251.391846 1258.087891 1261.144775 1262.484985 1263.809937 1263.842773 1261.033691 1257.176514 1249.276855 1237.900269 1229.716797 1221.861084 1222.350342 1223.337769 1221.001587 1206.101318 1197.527466 1178.89563 1177.408325 1194.901489 1192.877197 1179.946045 1178.540771 1199.187744 1205.425293 1207.457031 1206.569946 1205.549927 1202.202515 1197.591675 1193.672485 1197.785156 1196.89502 1193.861084 1190.762207 1186.723022 1182.877319 1186.533203 1187.804932 1188.381958 1187.210327 1180.894409 1174.898926 1178.099121 1180.239502 1176.85791 1178.173218 1177.506104 1192.414673 1192.946655 1179.746582 1166.933472 1154.039429 1144.488159 1138.404053 1133.778809 1129.814453 1126.066895 1122.14209 1110.704712 1110.179443 1110.45105 1109.684326 1109.094849 1108.35144 1107.646484 1107.156738 1106.756104 1106.360107 1105.858276 1105.455811 1105.055786 1104.626709 1104.139648 1103.779297 1103.414429 1103.137329 1102.858154 1102.449097 +1282.391846 1275.38147 1275.71106 1282.90625 1294.188965 1295.598755 1296.331665 1301.686768 1304.818481 1310.929565 1317.237427 1318.900146 1319.579712 1319.436401 1318.679443 1317.648926 1315.173828 1311.125122 1306.508667 1299.359131 1290.006714 1279.376709 1280.13916 1281.212524 1271.579224 1254.69873 1233.239014 1209.873291 1192.85376 1173.566162 1162.992432 1157.681641 1155.144043 1152.744995 1150.461548 1148.68457 1147.184204 1152.272705 1155.898682 1157.612793 1159.001343 1161.023438 1162.535767 1162.874512 1162.175415 1161.726929 1164.046997 1167.256714 1172.998657 1183.904053 1196.69519 1203.506592 1207.267944 1213.652222 1218.342407 1225.069458 1233.922729 1235.575928 1236.861938 1237.911377 1237.881714 1236.731689 1235.196289 1232.605835 1229.6604 1226.76062 1223.573608 1221.317383 1218.603149 1215.554688 1213.52124 1212.922974 1217.742676 1222.91272 1225.057739 1225.768433 1225.870361 1225.869141 1226.016113 1226.142456 1226.329346 1226.534302 1226.73877 1226.740845 1226.62854 1226.301025 1225.936523 1225.353027 1224.842896 1224.361694 1223.859497 1223.553101 1223.133179 1222.548584 1221.750366 1220.802124 1218.914551 1214.11731 1210.484009 1207.602905 1207.395508 1211.721069 1216.347778 1220.429443 1223.042603 1225.279785 1227.857422 1230.78772 1237.959595 1246.056274 1247.219482 1246.510132 1245.218506 1243.257935 1241.620605 1240.650635 1239.968384 1238.826538 1237.106934 1235.617188 1236.632812 1238.246216 1240.074097 1241.590698 1243.345825 1244.937744 1246.0448 1246.147705 1244.94751 1241.535889 1240.120728 1235.076294 1243.813354 1245.319458 1245.337769 1244.089722 1244.417847 1246.394775 1248.980225 1251.394165 1253.585938 1255.942627 1257.161133 1256.381104 1254.063232 1252.765747 1251.454712 1250.007568 1248.507202 1245.812378 1243.749756 1242.04541 1241.263794 1240.060791 1237.707153 1234.869629 1232.457642 1229.372437 1226.275513 1226.080444 1226.591919 1227.756958 1229.816772 1231.456909 1231.837646 1231.301392 1230.946655 1230.443237 1230.508545 1230.701904 1231.418213 1235.22876 1239.846558 1243.76001 1248.745117 1251.458252 1251.412109 1245.068848 1235.372314 1228.464233 1222.389038 1218.52417 1220.965698 1222.440063 1223.459106 1224.257202 1224.819214 1225.311279 1225.830078 1226.466553 1226.964111 1227.389038 1227.796753 1228.092773 1228.297729 1228.441772 1228.37854 1228.301636 1228.038208 1227.937744 1227.729004 1227.739746 1227.758667 1227.668579 1227.547852 1227.289795 1227.039795 1226.854248 1226.450439 1225.863647 1224.871826 1223.586914 1221.890625 1219.980713 1219.323608 1219.181152 1218.680786 1218.065796 1217.397339 1216.869507 1216.237061 1215.604614 1214.9375 1214.430542 1214.181152 1213.907227 1213.606079 1213.339722 1212.822388 1212.214478 1211.451294 1210.500854 1209.487305 1208.423462 1207.463501 1206.885986 1207.137329 1208.060425 1208.639038 1208.42041 1207.461182 1207.145142 1207.124268 1206.95813 1207.230591 1207.32666 1207.227051 1206.804321 1206.031128 1205.52771 1205.388184 1205.280029 1205.11499 1204.847534 1204.447632 1203.981934 1203.817017 1203.756104 1203.873657 1204.205811 1204.59021 1205.201904 1205.634033 1206.105469 1206.792847 1207.210083 1207.625122 1209.240967 1211.398315 1211.862671 1211.412842 1210.069824 1209.043335 1207.697021 1207.557251 1208.969727 1211.122437 1212.190674 1212.606567 1212.297607 1211.46521 1210.275269 1208.659424 1206.988159 1205.093506 1203.258057 1201.440796 1199.61499 1197.853027 1195.943481 1193.756592 1191.199829 1188.93811 1186.867798 1185.481689 1183.98645 1184.355957 1193.976562 1200.09375 1199.728394 1199.422607 1198.730103 1197.956787 1197.338135 1196.840942 1196.798462 1196.666016 1196.752319 1196.31543 1194.971313 1193.707886 1191.926514 1189.802856 1187.594116 1185.355713 1184.092285 1180.847778 1183.590454 1184.223145 1184.125366 1183.841675 1183.402222 1182.049316 1181.16272 1180.720947 1180.29248 1179.774292 1179.148193 1178.487915 1177.931152 1177.553345 1176.984863 1176.270752 1175.595093 1175.250732 1174.935913 1174.596436 1174.093628 1173.437988 1172.379883 1171.621704 1170.97998 1170.933472 1170.778198 1170.400391 1170.020142 1169.839966 1169.701904 1169.719849 1170.070557 1170.843994 1171.014038 1171.110962 1170.4104 1169.681274 1169.050903 1168.414795 1167.819824 1166.929321 1165.770142 1164.393799 1163.010986 1161.782227 1160.842041 1159.941284 1159.878296 1160.14978 1160.571045 1161.042725 1161.484375 1161.996582 1162.350952 1162.648804 1163.023193 1163.305664 1163.655273 1164.007324 1164.309448 1164.503662 1164.366211 1164.150757 1163.802612 1163.463013 1162.856323 1162.289062 1161.766235 1161.139282 1160.565796 1159.577515 1158.742554 1159.839478 1160.585083 1160.905151 1161.001221 1160.802612 1160.715942 1160.655151 1160.8396 1160.813843 1160.568237 1160.076416 1159.297974 1158.470215 1158.295166 1158.822144 1158.439453 1158.729736 1159.372681 1159.944214 1160.412476 1160.729858 1160.828613 1160.781494 1160.883667 1161.06189 1161.528931 1161.952148 1162.44165 1163.359375 1164.262939 1165.556641 1167.026855 1168.552002 1169.598267 1170.351318 1170.927124 1171.171631 1171.485474 1171.912598 1171.989868 1172.787354 1174.61792 1178.200317 1181.940674 1186.247314 1193.260498 1199.831055 1206.085083 1208.923218 1203.491699 1206.813477 1208.260376 1211.814697 1217.754883 1231.460327 1243.960205 1249.659058 1255.460571 1258.529297 1260.521362 1261.594604 1260.075317 1256.133789 1257.096924 1253.840454 1260.904297 1267.90564 1270.643188 1268.700073 1269.559448 1267.651245 1274.135986 1273.727661 1270.52771 1277.563477 1282.058472 1284.704956 1287.73645 1289.450317 1292.495728 1292.601196 1291.297852 1289.089966 1288.270142 1290.476929 1293.458496 1296.792358 1298.274292 1298.558105 1298.477295 1297.780273 1296.616089 1295.745239 1294.837036 1292.401245 1292.512817 1294.375732 1294.650513 1291.973877 1286.822021 1282.798584 1278.733398 1274.331421 1268.669312 1259.797485 1254.441528 1251.530762 1248.580933 1245.737671 1242.056885 1236.506104 1229.922485 1234.40271 1246.291626 1257.418213 1267.472656 1271.743164 1272.0896 1271.75708 1269.08606 1262.732666 1257.276123 1252.20874 1250.85376 1253.526978 1255.119263 1253.620361 1250.808716 1247.361206 1244.328369 1243.185913 1242.963013 1245.322632 1257.3927 1259.484985 1259.033569 1256.151978 1255.488892 1255.766113 1253.423462 1247.237915 1242.475342 1242.648804 1249.832886 1255.647339 1259.642944 1265.553101 1267.422607 1265.916138 1261.758179 1250.940063 1241.512939 1239.242676 1236.701294 1230.758057 1226.852051 1218.539062 1203.300293 1183.60498 1188.042603 1205.722046 1208.321777 1199.789062 1184.436646 1182.772827 1202.909302 1210.400391 1210.794067 1209.737183 1208.556641 1205.283081 1201.645752 1200.418823 1200.769531 1198.87915 1196.275513 1193.092407 1190.341919 1190.038452 1193.327271 1194.561401 1193.815186 1191.033203 1184.60437 1182.074707 1182.543579 1189.550171 1191.319336 1193.084717 1186.56665 1191.524292 1196.593384 1182.515869 1169.640625 1157.197021 1145.897217 1138.314819 1133.502075 1130.18335 1126.413086 1123.142334 1115.5448 1110.437744 1111.554199 1110.34436 1109.661865 1108.979858 1108.462158 1107.977661 1107.527954 1107.049561 1106.593018 1106.206665 1105.838257 1105.340942 1104.951172 1104.80835 1104.616211 1104.707031 1104.719116 1104.564697 +1282.916748 1278.99646 1280.941162 1278.009766 1288.709717 1296.010742 1301.475464 1306.126831 1308.266846 1312.197021 1315.63916 1317.699463 1320.02002 1320.673096 1320.36377 1319.438843 1317.564819 1311.964722 1305.1604 1295.247192 1290.312988 1290.414795 1286.357178 1280.159912 1250.120728 1233.982178 1212.908691 1197.880249 1179.197998 1167.963745 1159.525146 1156.665405 1154.144409 1151.98291 1150.223389 1148.67334 1148.965576 1156.556885 1160.903687 1169.028809 1172.713867 1171.908081 1171.111938 1171.193359 1171.563721 1169.612061 1169.217651 1174.172607 1180.924438 1194.88623 1207.987549 1215.984741 1223.142456 1228.899292 1232.707397 1233.682739 1235.98645 1237.893188 1239.40979 1240.298828 1240.388916 1239.02478 1237.096436 1234.959961 1232.669434 1229.499634 1225.847412 1223.102295 1220.492065 1217.507935 1215.063232 1215.524902 1218.111328 1220.751465 1222.861206 1223.994263 1224.704712 1225.288208 1225.720459 1226.066895 1226.439331 1226.71936 1226.942017 1227.086426 1227.039917 1226.846558 1226.491943 1225.988037 1225.496704 1224.939575 1224.591919 1224.246826 1223.721558 1223.035034 1222.201294 1221.262817 1219.609619 1215.646362 1211.861938 1208.484497 1207.741943 1212.719971 1217.386719 1221.134277 1223.806152 1226.21936 1228.861206 1232.408447 1242.944946 1248.161133 1250.238525 1249.745117 1247.73584 1244.640503 1242.985596 1242.632568 1241.922363 1241.164917 1239.858032 1237.578979 1238.12854 1240.155029 1242.208862 1243.026489 1244.787598 1245.979736 1247.097534 1247.246704 1246.285767 1245.741455 1245.943115 1243.496094 1241.786865 1245.640869 1246.411499 1245.948975 1244.531128 1246.445557 1249.895386 1251.992554 1253.914673 1255.914795 1257.560669 1257.175049 1255.410278 1254.668701 1254.036133 1253.239624 1251.667358 1247.892456 1245.544189 1244.342529 1243.723145 1242.528076 1240.422119 1237.438721 1234.422974 1231.388916 1229.397583 1229.866699 1229.784668 1230.338867 1232.293701 1233.88208 1234.043701 1233.540527 1233.318481 1233.157349 1231.982178 1231.388306 1231.164795 1233.054077 1238.496338 1242.920044 1246.365723 1245.759521 1243.575806 1240.108643 1232.702515 1228.198975 1223.336304 1219.329102 1220.355835 1221.961548 1223.223145 1224.289429 1225.07019 1225.609741 1226.369995 1226.93103 1227.640747 1228.146362 1228.645996 1229.060791 1229.379395 1229.598267 1229.638428 1229.457153 1229.197144 1228.933594 1228.74939 1228.78479 1228.957764 1228.937866 1228.754028 1228.666016 1228.453613 1228.371094 1228.170044 1227.865601 1227.428711 1226.666382 1225.100952 1223.209106 1222.015137 1221.249268 1220.262329 1219.405762 1218.785645 1218.305176 1218.074585 1217.77063 1217.215942 1216.702759 1216.184814 1215.879028 1215.405762 1214.820923 1214.234131 1213.297607 1212.207886 1211.028076 1209.751587 1208.602051 1207.471558 1207.098999 1207.418091 1208.189941 1209.532715 1210.689331 1211.03418 1209.640259 1209.031616 1208.780029 1208.788452 1208.767456 1208.392944 1207.697388 1206.834717 1206.111816 1206.021118 1205.880371 1205.674194 1205.393066 1204.967529 1204.528564 1204.168091 1204.025269 1204.094727 1204.362183 1204.764526 1205.443604 1205.880737 1206.282349 1206.978271 1207.434692 1209.097534 1211.484253 1213.5271 1214.032471 1213.219727 1211.763794 1210.296997 1208.683594 1207.50708 1210.040161 1211.857422 1212.717651 1212.817993 1212.402588 1211.508423 1210.173706 1208.652344 1207.190918 1204.754517 1202.871216 1201.030029 1199.076904 1197.075439 1195.147705 1193.109131 1191.569336 1190.116455 1188.629395 1187.130981 1184.89563 1189.438477 1198.286743 1200.24646 1200.139771 1199.678589 1199.145386 1198.328125 1197.928101 1197.703979 1197.935547 1198.12854 1197.752563 1196.996582 1195.879028 1194.116089 1191.927368 1189.57019 1187.22229 1185.473511 1183.805176 1181.662109 1184.134155 1184.549194 1184.535889 1184.274902 1183.336304 1182.563599 1182.098389 1181.643066 1181.382568 1180.861084 1180.075195 1179.605225 1179.098389 1178.61853 1177.985962 1177.363892 1176.552612 1176.00293 1175.583008 1175.189941 1174.531494 1173.741699 1172.840332 1172.115601 1171.349243 1170.939453 1170.795288 1170.664429 1170.488403 1170.089844 1170.031616 1170.137939 1170.779053 1171.056396 1171.447876 1171.5 1170.981812 1170.342041 1169.829468 1169.434204 1168.935425 1167.983032 1166.73999 1165.255493 1163.678711 1162.424805 1161.478271 1160.688354 1160.433594 1160.715576 1161.091675 1161.518433 1162.004272 1162.549805 1163.112915 1163.63562 1164.297119 1164.87854 1165.411377 1165.916504 1166.308105 1166.161743 1165.925903 1165.400879 1165.029297 1164.474854 1163.888184 1163.397095 1162.77356 1162.178711 1161.651489 1161.058105 1160.323486 1160.723389 1161.372681 1161.664551 1161.849487 1161.814087 1161.723022 1161.709106 1161.639648 1161.50708 1161.12793 1160.312988 1159.451172 1158.735596 1158.566284 1159.330688 1158.514648 1158.471313 1159.040527 1159.542603 1159.949829 1160.180176 1160.304932 1160.137329 1160.068848 1160.28186 1160.548706 1160.995972 1161.44751 1162.438477 1163.539062 1164.616455 1165.651123 1166.964233 1168.08606 1168.796143 1169.407227 1169.974243 1170.217529 1170.497559 1170.664429 1170.936279 1171.669434 1175.298218 1178.971436 1182.161743 1188.804443 1194.951416 1200.679199 1202.470825 1195.278809 1199.558228 1209.113892 1216.054199 1224.914185 1234.069336 1239.560425 1242.867798 1246.483765 1253.133423 1255.764038 1256.126221 1254.267822 1250.254761 1246.712769 1244.231689 1248.597168 1253.349976 1254.52063 1254.703491 1256.114136 1253.430298 1258.959961 1259.642578 1256.840942 1263.541748 1269.618408 1273.462524 1276.583252 1277.837402 1278.907837 1279.689087 1280.280029 1281.729248 1283.297363 1285.793457 1290.225464 1294.962769 1297.911377 1298.628662 1298.489258 1298.050415 1297.531494 1296.819092 1296.210327 1294.001587 1293.456665 1294.986206 1294.653809 1292.641479 1288.708374 1284.696777 1280.890869 1276.488892 1271.23938 1264.355713 1257.408203 1253.820557 1251.416138 1248.864502 1246.073853 1241.99707 1234.461548 1231.874634 1243.624756 1255.183838 1266.752808 1271.824951 1272.900757 1272.458862 1269.854126 1264.944458 1259.578857 1256.103516 1255.484619 1257.815186 1257.703247 1255.73999 1252.658813 1248.245483 1244.242676 1243.270996 1248.317749 1255.54126 1260.648193 1263.296021 1263.697266 1262.517212 1261.884888 1261.32959 1259.682373 1254.579102 1247.279785 1245.476074 1244.469971 1252.69751 1257.301147 1267.067505 1270.099487 1269.890381 1266.031006 1256.123535 1252.315063 1249.573608 1246.608032 1238.801514 1229.599609 1220.583984 1201.139282 1192.613892 1206.577515 1214.57605 1213.304199 1201.027344 1195.83374 1194.306396 1205.117065 1212.187378 1213.160522 1212.361572 1210.38501 1206.808594 1206.699341 1206.800171 1204.593994 1201.716187 1198.501953 1196.032471 1193.695923 1194.587158 1195.775024 1196.852783 1197.115479 1195.719849 1194.137817 1191.08374 1188.608398 1197.812622 1195.85144 1190.150513 1181.77002 1183.348145 1189.845093 1186.74707 1173.079956 1159.644653 1145.192871 1137.627075 1132.828613 1130.219116 1127.011963 1123.563843 1119.090942 1114.999512 1113.511108 1111.94043 1110.627563 1109.807739 1109.283569 1108.785278 1108.270264 1107.857544 1107.347778 1106.954834 1106.449463 1106.089966 1105.845703 1105.817017 1105.958496 1106.230957 1106.560181 1106.58313 +1282.209961 1280.602539 1284.017334 1282.796631 1284.119751 1295.911499 1303.092407 1307.918457 1313.366089 1316.649048 1316.348999 1317.452026 1320.957886 1322.119263 1322.041016 1320.934082 1318.578247 1313.327148 1306.259521 1303.8302 1298.205811 1296.162842 1285.499878 1262.725098 1243.038086 1226.202148 1207.259766 1185.286377 1170.111694 1163.695923 1158.152344 1155.544434 1153.21228 1151.247559 1149.580444 1148.199829 1157.416382 1167.292114 1175.750122 1180.461182 1182.702515 1183.601074 1182.286011 1180.247192 1178.248047 1174.841064 1176.319824 1185.706543 1191.263428 1200.307983 1215.586914 1231.200195 1236.23645 1237.246338 1238.046631 1238.224854 1239.33606 1240.199951 1241.601196 1242.629028 1242.861084 1241.343994 1239.068359 1236.678223 1234.042358 1231.005005 1227.69519 1224.47644 1221.630981 1218.53064 1216.40979 1218.730713 1218.869263 1219.557251 1221.589844 1222.667847 1223.953491 1224.906738 1225.754639 1226.341431 1226.645386 1227.024902 1227.313599 1227.489624 1227.580566 1227.376221 1227.016602 1226.621582 1226.098877 1225.611084 1225.249268 1224.815186 1224.270752 1223.493896 1222.603882 1221.465942 1219.869873 1216.181519 1212.245117 1209.03418 1209.481445 1214.040039 1218.54834 1221.77832 1224.290527 1227.287598 1229.909302 1234.136353 1244.463623 1251.350952 1254.549561 1253.902832 1250.727295 1247.478027 1245.508545 1245.246948 1243.891724 1243.658691 1243.384033 1241.671143 1239.431519 1242.170044 1245.025513 1244.491699 1246.287598 1247.957031 1248.941895 1249.098999 1248.800781 1248.312988 1247.71106 1245.700073 1242.491089 1246.353638 1247.674683 1247.969604 1248.38855 1249.900269 1251.483643 1252.752808 1254.134277 1255.732422 1257.382812 1258.097656 1257.199341 1257.056519 1256.884155 1256.451416 1254.708984 1250.786377 1248.959961 1247.680176 1246.823608 1245.447632 1243.510254 1240.28894 1235.991699 1232.709839 1232.845703 1233.978516 1232.64209 1231.820312 1234.288818 1235.658203 1236.010254 1235.78186 1235.559814 1235.083008 1233.860107 1233.041138 1232.125488 1232.786621 1238.10022 1242.27417 1245.062378 1244.783813 1240.907837 1235.728882 1230.744629 1227.491699 1224.076538 1220.754395 1220.000854 1221.582764 1223.21228 1224.422974 1225.337402 1226.011719 1226.682129 1227.426636 1228.116333 1228.71106 1229.27771 1229.907715 1230.49585 1230.816162 1230.926147 1230.664795 1230.166626 1229.779419 1229.759277 1229.940308 1230.143188 1229.994385 1229.847534 1229.761353 1229.774292 1229.846924 1229.786133 1229.695312 1229.840942 1230.060913 1229.537842 1228.088501 1226.490479 1225.13623 1223.736206 1222.303833 1220.263672 1219.55896 1219.865356 1219.564209 1219.184937 1218.70459 1218.093262 1217.618042 1217.101318 1216.579956 1215.753296 1214.516113 1213.096069 1211.472412 1210.080811 1208.725586 1207.530884 1207.132202 1207.317383 1208.225098 1210.346313 1212.726562 1215.837402 1216.384399 1214.709961 1212.773438 1211.567871 1210.676025 1209.826172 1208.831787 1207.48584 1206.72937 1206.622681 1206.434082 1206.125732 1205.645996 1205.224243 1204.857178 1204.590576 1204.394897 1204.389771 1204.657593 1205.008667 1205.486084 1206.019653 1206.517334 1207.183228 1208.146606 1210.941406 1214.574707 1216.805786 1216.850708 1215.307739 1213.567017 1212.086426 1210.581665 1210.908203 1212.166992 1212.924805 1213.308228 1213.125854 1212.513794 1211.54895 1210.185669 1208.718872 1206.634399 1204.733765 1202.74707 1200.615967 1198.505615 1196.65686 1194.733398 1193.217041 1192.300537 1191.413452 1190.508789 1189.582031 1189.706787 1193.748657 1198.266235 1199.598999 1199.987305 1199.903076 1199.421875 1198.887085 1198.452148 1198.33374 1199.006714 1199.447266 1198.60376 1197.614502 1196.19104 1194.220581 1191.532471 1189.110962 1186.834229 1184.366943 1182.729004 1183.588257 1184.530273 1184.814941 1184.83313 1184.629272 1183.936646 1183.691772 1183.313721 1182.857666 1182.369263 1181.812744 1181.109009 1180.696533 1180.150635 1179.634277 1178.921021 1178.205566 1177.447632 1176.818359 1176.399292 1175.846436 1175.102051 1174.335205 1173.50293 1172.611206 1171.858032 1171.356812 1171.254761 1171.168579 1170.916382 1170.342041 1170.279297 1170.408447 1170.949707 1171.498779 1171.797607 1171.849609 1171.516968 1171.161133 1170.786499 1170.479858 1170.004639 1169.225098 1167.803101 1166.036987 1164.321167 1162.927124 1161.805176 1161.046265 1161.084717 1161.288818 1161.842773 1162.25708 1162.734741 1163.274658 1163.909668 1164.725098 1165.570923 1166.424316 1167.442139 1168.176514 1168.467529 1168.177124 1167.506592 1166.792114 1166.207642 1165.626221 1164.976929 1164.393555 1163.911133 1163.326294 1162.9375 1162.484741 1162.055908 1162.083374 1162.23999 1162.59375 1162.84375 1162.795898 1162.846191 1162.85144 1162.791504 1162.528198 1162.072632 1161.255371 1160.310181 1159.317017 1159.50354 1159.436035 1158.491211 1158.450439 1158.644775 1159.07373 1159.405518 1159.552124 1159.544312 1159.365234 1159.239014 1159.356323 1159.272339 1159.594116 1160.290649 1161.61438 1162.78894 1163.584839 1164.233765 1165.307739 1166.283569 1166.954224 1167.790405 1168.536133 1169.027222 1169.352661 1169.643555 1169.904419 1170.457397 1172.741089 1177.030029 1180.694214 1182.86084 1188.200317 1195.447021 1195.988647 1193.609497 1202.431396 1210.855591 1219.478882 1227.650269 1233.396606 1235.085083 1237.033813 1241.261597 1247.42981 1249.246704 1246.543823 1246.281982 1244.122314 1238.999023 1237.464478 1239.169922 1241.048584 1240.795654 1241.292725 1241.137695 1242.339722 1245.87085 1247.314697 1245.147339 1249.662964 1254.014648 1258.538086 1263.24939 1268.610962 1269.242065 1270.019897 1268.676147 1271.346191 1276.10498 1279.878906 1284.744385 1291.9198 1295.901001 1297.687988 1298.003906 1297.71228 1297.758911 1297.30481 1297.221191 1296.690796 1296.260376 1295.849854 1294.917358 1292.537842 1289.712891 1286.871704 1283.205688 1278.844604 1273.935547 1268.573975 1261.252075 1256.046509 1253.710327 1251.710938 1249.244629 1246.299927 1241.087402 1233.937988 1242.255127 1254.266113 1266.115356 1272.270264 1274.130249 1274.381104 1271.158203 1266.854736 1262.583374 1259.259888 1259.177368 1260.032837 1259.497192 1257.56897 1255.128662 1249.591431 1244.003296 1245.024414 1257.364868 1260.766479 1264.272095 1267.009521 1268.630981 1269.209473 1268.103149 1266.66394 1264.31897 1259.069946 1253.963135 1252.81958 1252.117554 1253.730591 1259.906616 1268.611816 1271.263428 1271.091431 1269.544922 1263.868042 1258.646118 1250.942871 1245.257446 1236.337158 1226.935913 1214.533325 1197.854126 1206.71582 1216.897339 1221.423462 1216.990967 1204.919189 1209.269897 1201.456787 1207.815186 1215.758911 1216.627563 1214.872192 1212.134888 1209.56897 1209.411011 1208.842773 1206.881836 1204.741943 1201.550659 1197.864014 1195.100586 1194.34314 1195.563599 1196.982422 1198.069702 1197.931519 1197.944336 1197.886353 1197.406494 1195.147705 1182.537842 1176.627319 1171.322021 1170.690918 1178.238037 1185.24353 1176.296021 1161.574951 1146.678833 1139.102173 1133.289795 1131.536133 1128.207397 1124.122559 1120.897827 1117.74231 1115.588745 1113.539429 1112.061035 1110.917358 1110.081299 1109.518921 1109.077759 1108.634766 1108.057007 1107.580322 1107.135132 1106.852051 1106.811157 1106.913696 1107.211914 1107.894897 1108.482422 1108.449219 +1281.241333 1282.462524 1287.467773 1289.400879 1290.186157 1295.162476 1303.375 1308.752197 1315.865601 1319.227051 1319.549194 1320.492188 1323.484497 1324.465332 1324.081299 1322.708984 1319.1698 1315.366577 1313.18811 1309.059814 1302.558838 1290.612671 1265.339233 1247.922852 1228.18396 1214.720459 1198.505859 1181.123047 1168.556274 1161.366943 1157.452026 1154.804199 1152.546021 1150.5354 1148.554443 1156.298584 1169.129639 1179.983154 1186.773926 1190.58252 1190.755615 1190.050659 1190.331543 1188.706787 1184.881104 1183.33667 1183.044678 1196.629517 1206.652466 1215.206665 1227.921509 1239.634888 1244.285278 1244.367798 1242.560425 1241.267578 1242.242676 1243.024536 1243.829224 1244.865234 1245.119751 1243.481201 1240.824097 1238.141968 1235.384888 1232.5625 1229.197021 1225.142334 1221.931763 1218.689575 1218.815918 1220.948853 1220.022461 1219.296265 1220.338989 1221.612305 1223.118896 1224.514404 1225.803223 1226.637939 1227.174683 1227.482788 1227.755859 1227.99939 1227.984375 1227.927612 1227.7052 1227.224487 1226.750977 1226.222412 1225.812012 1225.424194 1224.747437 1223.964355 1222.908569 1221.629028 1219.974731 1217.023682 1213.344238 1209.176758 1211.178101 1215.277466 1219.601685 1222.289673 1225.189209 1228.21106 1231.499146 1240.531128 1248.137085 1254.498413 1257.37561 1257.062622 1254.159546 1251.900146 1250.176758 1249.043945 1247.818848 1247.147461 1246.78894 1245.917725 1244.039795 1242.190918 1246.029053 1248.049683 1249.177856 1250.598511 1251.212158 1251.303711 1250.96875 1250.296143 1248.962646 1245.965454 1243.498901 1247.133057 1249.714355 1251.484253 1252.036133 1252.583862 1252.991699 1253.523926 1254.425415 1255.746094 1257.250977 1258.828613 1259.331299 1259.266357 1259.390015 1258.834839 1257.019287 1253.802734 1252.582275 1251.091064 1249.94397 1248.272583 1246.065063 1243.233154 1237.057617 1234.540405 1237.314697 1240.867065 1239.762207 1237.738892 1237.616455 1237.993774 1238.085693 1237.859131 1237.561035 1237.095215 1236.325439 1235.196533 1234.434692 1235.8125 1239.504395 1243.781128 1245.056885 1244.975098 1240.881836 1234.661621 1230.712402 1227.576782 1224.429932 1221.791016 1220.24231 1221.741455 1223.457275 1224.782227 1225.817261 1226.655762 1227.234253 1227.807373 1228.469238 1229.122437 1229.751587 1230.471924 1231.231079 1231.815063 1232.052246 1231.713867 1230.78833 1230.46875 1230.626831 1231.198486 1231.409058 1231.232056 1230.806763 1230.782471 1231.062622 1231.338623 1231.47229 1231.456421 1231.68457 1232.774414 1233.164307 1232.515991 1230.417725 1229.933228 1228.950073 1226.785522 1224.663818 1223.968018 1223.97937 1222.992188 1221.656372 1220.780273 1219.928345 1219.255493 1218.841064 1218.094604 1217.250366 1215.84668 1213.901123 1211.862549 1209.904175 1208.246338 1207.300781 1207.100586 1207.10083 1208.072876 1210.613281 1213.570923 1218.54895 1220.869019 1220.226929 1217.257812 1214.817383 1212.930786 1211.433228 1209.934326 1208.214478 1207.856201 1207.164062 1206.777466 1206.193359 1205.695557 1205.261597 1205.088013 1204.88269 1204.886963 1204.824951 1205.014282 1205.306274 1205.794067 1206.165649 1206.699707 1207.244751 1208.67688 1213.155396 1217.73938 1219.976074 1219.429199 1217.399536 1215.485962 1214.138428 1213.522217 1213.538696 1213.714844 1214.005737 1213.952393 1213.483643 1212.677612 1211.502686 1210.342041 1208.80896 1207.555176 1205.553833 1202.851562 1200.0448 1197.911743 1196.175659 1194.536865 1193.661255 1193.168701 1193.015625 1192.781372 1192.330078 1192.536499 1194.966797 1197.570679 1199.306274 1200.081909 1200.112061 1199.82251 1199.421265 1198.997314 1199.036621 1199.918701 1200.487671 1199.44397 1198.002441 1196.140259 1193.888916 1191.25293 1188.626953 1186.024414 1183.807983 1183.841675 1184.481079 1184.961548 1185.225342 1185.306641 1185.152832 1184.846558 1184.393433 1184.121704 1183.713989 1183.25 1182.596802 1182.23999 1181.683716 1181.058594 1180.431396 1179.858032 1179.074707 1178.274536 1177.686157 1177.137573 1176.474609 1175.747192 1174.813477 1174.008545 1173.199707 1172.701172 1172.210205 1171.820923 1171.451294 1171.114014 1170.555786 1170.493286 1170.797363 1171.069702 1171.835449 1172.255859 1172.307983 1172.166626 1171.86084 1171.602905 1171.314209 1170.913696 1170.213379 1168.772461 1166.82959 1164.91687 1163.239868 1162.116455 1161.554077 1161.916138 1162.234985 1162.692505 1163.059692 1163.524658 1164.176392 1164.868042 1165.758667 1166.801758 1167.768677 1169.22644 1170.592773 1170.636841 1169.753784 1168.899902 1168.099365 1167.432373 1166.792114 1166.125488 1165.480835 1164.949829 1164.507812 1164.031982 1163.724976 1163.353638 1163.321167 1163.439209 1163.582031 1163.773071 1163.958496 1164.05188 1164.099731 1164.147705 1163.981934 1163.462402 1162.712036 1161.837646 1161.223877 1160.565674 1159.418335 1158.506226 1158.442749 1158.447754 1158.521851 1158.680176 1158.689209 1158.63562 1158.522461 1158.537842 1158.613647 1158.673462 1159.451904 1159.336304 1160.632935 1161.989014 1162.636597 1162.93811 1163.639648 1164.384277 1165.218262 1166.007446 1166.963989 1167.761841 1168.484741 1169.061646 1169.800659 1171.04834 1173.116211 1176.164429 1178.882324 1180.843384 1183.883057 1188.155273 1190.06543 1193.991943 1202.031128 1209.676025 1215.672485 1220.753052 1225.291748 1228.534424 1230.543091 1237.471558 1245.528198 1246.428223 1243.008911 1240.196777 1234.117798 1230.802002 1230.491089 1233.435913 1233.744385 1234.131348 1233.85791 1233.621826 1236.965576 1234.333984 1236.943604 1237.419312 1239.630737 1242.14917 1243.255859 1249.879639 1258.276001 1258.288452 1258.420166 1256.736328 1262.459351 1268.065674 1270.298218 1277.270752 1283.591797 1290.45166 1293.159546 1294.239258 1295.580566 1296.477539 1296.686279 1297.533813 1297.618164 1297.117676 1296.526367 1295.653687 1293.659546 1292.520264 1289.26062 1285.302979 1281.388794 1276.574585 1271.258667 1265.504028 1260.13855 1256.574951 1254.523682 1252.332764 1249.417603 1245.87146 1238.118896 1241.187378 1255.306274 1265.840576 1272.581665 1276.464966 1278.123901 1274.015869 1268.033203 1265.180054 1263.169189 1262.407471 1262.119385 1261.254395 1259.700928 1257.584839 1251.97998 1244.692383 1246.449707 1259.235352 1264.794189 1268.606323 1271.524902 1273.511963 1273.924805 1273.097778 1271.856567 1269.598145 1265.324097 1259.471313 1259.042847 1258.663574 1257.075562 1258.098755 1270.103271 1272.164673 1271.815186 1269.575073 1262.908081 1257.594238 1242.588623 1239.671875 1230.778931 1223.805908 1213.342529 1207.899536 1216.326782 1222.65271 1225.133667 1219.741089 1206.714722 1210.414673 1207.616089 1209.445923 1220.78418 1219.585205 1217.209961 1214.429565 1211.869385 1210.275269 1209.446655 1208.851685 1207.860229 1203.998169 1199.708374 1196.756226 1194.627563 1194.307495 1192.376221 1191.861938 1188.375488 1192.44519 1195.90918 1196.010498 1194.262329 1178.066406 1168.796509 1163.171875 1163.357666 1168.253296 1177.38562 1176.844604 1164.050781 1150.443237 1142.525513 1136.219604 1134.576904 1130.106689 1125.502441 1122.506958 1119.869141 1117.479004 1115.176147 1113.418823 1112.012573 1111.196655 1110.459717 1109.837891 1109.343628 1108.746704 1108.099121 1107.820923 1107.738037 1107.608521 1107.893188 1108.402954 1109.394165 1109.986084 1110.108032 +1284.141724 1287.919189 1293.117798 1294.894409 1294.416626 1293.387573 1302.787354 1308.067261 1313.91626 1317.564819 1321.127441 1325.296631 1327.670166 1327.410278 1326.357544 1325.638672 1322.700439 1319.684448 1318.565063 1311.911987 1298.596191 1277.958252 1253.204346 1233.648804 1216.893921 1202.445923 1187.62561 1175.187744 1166.747437 1160.202759 1156.878662 1154.258179 1151.884766 1149.938354 1151.809082 1166.991333 1180.61377 1190.490723 1198.074219 1200.260132 1198.038696 1194.90686 1197.568481 1196.462158 1192.101562 1193.618164 1194.715942 1208.057983 1223.415649 1234.983643 1239.768188 1247.245239 1249.099976 1248.198975 1244.930908 1242.864136 1245.241455 1246.257935 1246.61499 1247.161255 1246.449341 1244.60022 1241.793457 1239.192017 1236.464722 1233.605469 1230.30542 1225.126709 1221.583496 1218.810059 1220.530518 1221.803345 1221.156982 1219.557129 1219.366821 1220.227905 1222.039185 1223.999268 1225.701172 1226.978882 1227.678833 1228.119385 1228.310791 1228.537476 1228.566162 1228.445068 1228.2948 1227.921875 1227.403198 1226.845459 1226.44165 1225.892456 1225.141235 1224.320801 1223.253296 1221.99353 1220.514771 1220.218506 1215.175293 1209.755737 1212.386719 1215.867798 1219.160767 1222.619873 1225.660278 1228.883667 1233.562256 1244.536865 1250.31958 1256.32251 1258.377197 1258.209961 1256.180176 1255.551758 1254.82312 1253.047974 1251.889648 1251.693115 1251.217651 1249.677002 1246.90918 1243.884521 1246.443604 1251.329468 1252.81311 1253.305908 1253.756592 1253.473511 1252.906616 1252.361694 1250.811523 1247.434692 1243.861938 1247.769043 1253.536377 1255.753052 1254.940674 1254.71582 1254.47168 1254.493774 1255.032349 1256.120483 1257.976807 1259.611328 1261.218628 1262.496948 1263.231689 1262.262695 1260.037598 1256.984497 1255.980835 1254.571777 1253.312866 1251.339111 1248.427002 1245.593628 1237.644409 1239.177246 1241.699707 1245.082764 1244.930054 1243.270264 1241.681274 1240.379639 1239.999512 1239.836426 1239.832275 1239.565918 1238.611816 1237.758301 1237.461304 1238.602905 1240.661621 1243.889771 1245.14502 1244.929321 1241.010986 1235.921387 1232.386719 1228.502441 1224.556519 1221.656128 1221.193604 1222.462891 1224.125488 1225.693604 1226.684082 1227.40332 1227.894409 1228.317871 1228.881836 1229.468506 1230.242554 1231.016357 1231.80249 1232.634766 1232.738647 1232.199463 1231.158569 1231.05127 1231.568237 1231.875732 1232.577271 1232.560425 1231.822144 1231.80896 1232.536987 1233.132446 1233.516235 1233.719238 1234.346191 1235.358643 1236.203857 1235.75293 1234.429443 1234.462646 1233.861328 1231.999756 1229.464478 1230.94519 1231.038208 1228.084229 1225.428833 1223.499756 1222.174438 1221.352295 1220.53479 1219.638794 1218.662598 1217.129395 1214.736572 1211.805542 1208.843994 1207.506836 1207.430664 1207.493896 1207.091431 1207.266113 1208.516724 1211.149414 1214.873413 1218.690063 1220.837402 1219.697266 1217.262695 1215.015137 1213.030884 1211.142944 1209.814941 1208.753784 1207.59375 1207.004028 1206.286743 1205.806641 1205.427979 1205.217529 1205.1073 1205.196655 1205.272583 1205.373047 1205.747559 1206.00354 1206.426392 1206.840454 1207.786621 1210.832153 1215.172974 1219.819946 1220.739502 1220.390869 1218.929565 1217.37561 1216.32666 1215.526733 1215.210327 1215.169189 1215.020142 1214.675537 1213.952271 1212.945557 1211.82251 1210.561401 1209.514893 1208.401733 1206.101929 1202.420288 1199.218384 1196.995361 1195.256714 1194.188965 1193.962036 1194.037598 1194.779907 1194.935303 1194.85437 1194.165283 1195.039062 1197.824951 1199.553955 1200.404907 1200.594238 1200.23938 1199.883789 1199.55127 1199.665894 1200.725098 1201.31311 1199.998413 1198.387573 1195.988281 1193.676636 1191.438477 1188.7323 1186.114502 1184.543335 1184.707031 1185.046387 1185.444824 1185.734985 1185.792603 1185.775635 1185.537476 1185.258789 1184.887573 1184.433716 1184.033691 1183.572998 1183.15979 1182.502563 1181.712402 1181.206299 1180.61377 1179.924438 1179.204346 1178.575562 1177.850342 1177.074707 1176.247437 1175.502808 1174.63916 1173.873291 1173.148438 1172.351196 1171.598999 1170.988281 1170.841064 1170.71228 1170.908081 1171.074097 1171.569458 1172.306763 1172.648315 1172.822388 1172.755493 1172.666748 1172.294312 1172.041748 1171.566895 1171.203491 1169.997925 1167.888672 1165.459473 1163.524048 1162.387085 1162.365356 1162.747314 1163.035278 1163.449707 1163.906616 1164.440674 1165.109863 1165.795776 1166.672607 1167.533447 1168.638184 1169.901855 1171.019165 1171.175049 1170.647339 1169.728027 1169.077271 1168.514404 1167.865845 1167.231201 1166.508423 1165.949707 1165.452637 1165.071655 1164.730225 1164.42395 1164.474609 1164.577148 1164.626465 1164.76062 1164.989502 1165.258789 1165.654907 1165.90332 1165.837402 1165.46936 1164.616821 1163.640625 1162.623291 1161.344116 1159.459717 1158.55481 1159.711548 1158.660767 1158.454346 1158.453735 1158.44751 1158.44165 1159.153564 1160.038086 1159.953369 1160.626831 1160.414185 1159.999023 1160.078003 1161.426758 1161.903809 1162.209351 1162.459473 1162.98877 1163.372437 1164.365112 1165.429199 1166.688965 1167.848999 1168.82019 1170.129272 1171.961182 1173.832642 1175.516357 1177.464844 1179.575928 1181.884888 1182.60791 1185.261353 1194.80481 1200.372925 1205.558472 1209.688721 1211.971924 1216.205688 1221.667847 1230.618896 1237.306396 1242.913086 1245.851929 1245.021973 1239.413696 1232.067627 1226.914551 1221.723145 1225.282593 1227.152344 1227.978638 1228.140259 1229.464722 1234.2052 1231.151123 1229.580322 1229.969971 1232.087524 1232.011597 1230.918579 1238.47998 1243.355957 1243.771606 1246.503052 1243.636597 1255.65332 1258.854492 1261.424805 1270.644409 1276.147461 1280.178223 1283.596924 1286.043091 1288.459595 1291.202393 1292.967651 1294.655273 1297.715332 1297.721558 1296.96582 1296.400391 1295.436523 1294.184082 1291.140503 1287.56958 1283.817505 1279.502441 1274.414795 1269.646851 1265.459595 1261.438354 1258.383057 1255.400391 1252.430542 1248.270264 1241.964722 1240.969238 1255.708374 1265.506714 1272.611206 1278.476196 1281.887695 1278.515137 1270.120605 1267.20166 1265.410889 1264.672974 1264.299561 1263.321655 1261.346558 1258.744751 1253.810181 1245.63208 1245.764282 1257.564575 1267.067627 1272.035522 1276.299072 1279.463501 1279.031616 1277.831787 1276.397217 1274.297485 1270.530762 1266.13623 1266.478516 1268.887329 1269.27124 1267.93396 1271.428711 1272.885498 1271.77356 1267.083984 1256.447266 1251.172852 1249.606934 1247.72583 1240.571289 1231.649902 1216.877441 1213.161621 1228.226929 1231.568237 1228.783081 1221.24231 1206.412476 1216.610474 1210.654785 1212.24646 1221.814575 1221.216309 1218.427246 1215.214722 1211.990112 1209.180054 1207.656006 1207.853149 1207.883667 1204.840576 1200.665649 1198.609985 1196.746948 1194.8125 1188.957764 1182.163086 1180.060791 1179.064575 1180.831543 1187.213135 1187.240845 1176.241943 1165.437622 1157.830688 1157.62439 1163.220459 1174.033691 1179.903198 1166.612183 1153.971313 1144.941895 1139.047607 1135.074707 1130.569702 1126.352539 1123.563599 1121.09436 1118.974609 1116.579712 1114.61438 1113.294922 1112.270142 1111.557861 1110.802856 1110.054077 1109.212646 1108.687744 1108.546143 1108.595215 1108.76709 1108.937622 1109.651367 1110.375488 1110.636475 1110.494141 +1290.658569 1293.75061 1296.293457 1298.56189 1301.048096 1303.964966 1304.237671 1309.857544 1314.723755 1318.034912 1322.379761 1328.698486 1330.173828 1329.311035 1327.977051 1329.013916 1327.314575 1323.507812 1320.328003 1312.663208 1290.909302 1264.917236 1247.689209 1233.925903 1209.519165 1195.467041 1182.533936 1173.123779 1166.028076 1159.756714 1156.599854 1154.029785 1151.412964 1149.543823 1156.427734 1176.538696 1188.875366 1201.67041 1209.228271 1210.422729 1206.031616 1203.397583 1204.17688 1202.977051 1199.815186 1204.730591 1211.08252 1223.845947 1233.883301 1240.495605 1246.488037 1253.534668 1255.972412 1253.029053 1246.966309 1246.142822 1249.252319 1250.113892 1249.815063 1249.016479 1247.504517 1245.166626 1242.479858 1239.622803 1236.519409 1233.846924 1229.994629 1224.170288 1220.856445 1220.465454 1221.988892 1222.613647 1221.869385 1220.221069 1219.518555 1219.692017 1220.248291 1223.160156 1225.566772 1227.321899 1228.286865 1228.835938 1228.994507 1229.053589 1229.148682 1229.046509 1228.863159 1228.50647 1228.006104 1227.499512 1226.889648 1226.254639 1225.434937 1224.580322 1223.460938 1222.551147 1221.589478 1220.697754 1216.415771 1210.841309 1213.264771 1218.362915 1220.853638 1223.564697 1226.822144 1229.771973 1234.571289 1244.545532 1250.885254 1256.589355 1258.616943 1259.184082 1258.800537 1258.557983 1257.88269 1256.194702 1255.378052 1255.960815 1256.427612 1254.651733 1249.969238 1246.423096 1251.051758 1256.550537 1255.748169 1255.882324 1256.111816 1255.054688 1254.547119 1254.801758 1253.875732 1250.921387 1246.178223 1248.661377 1255.781616 1257.209229 1256.877808 1255.978882 1255.571167 1255.638184 1256.430908 1256.437378 1256.720215 1260.424438 1263.005127 1265.189453 1267.265747 1267.459473 1263.938232 1260.453857 1259.015869 1257.919312 1256.997192 1254.807739 1251.109741 1246.912476 1240.083252 1245.27063 1243.536499 1244.991943 1246.644165 1246.092285 1243.92395 1242.345825 1241.92749 1241.931641 1242.096191 1242.040649 1241.341553 1240.013062 1239.599243 1240.269897 1241.796143 1243.969238 1245.130615 1244.105957 1240.668945 1236.569824 1233.22644 1229.285645 1224.646606 1221.734131 1222.31665 1223.686157 1225.473633 1226.930054 1227.84436 1228.391724 1228.655273 1228.896729 1229.319458 1229.838501 1230.595459 1231.47876 1232.212402 1232.921753 1232.988281 1232.491943 1231.414307 1231.387573 1231.960571 1232.852417 1233.581421 1233.795288 1233.523804 1233.696899 1234.505005 1235.276367 1235.985352 1236.837769 1237.924438 1239.011841 1239.857056 1240.248169 1239.729126 1239.417114 1238.39209 1235.872803 1233.057251 1234.247437 1233.880615 1232.231445 1229.262085 1226.672974 1224.812622 1223.278687 1222.314331 1221.389526 1220.251587 1218.442505 1215.515747 1211.564453 1207.800293 1207.61731 1208.27356 1208.444946 1207.419189 1207.519775 1207.498169 1207.205078 1208.463135 1212.990723 1218.235596 1220.534302 1219.185547 1216.820557 1214.490112 1212.481934 1210.932373 1209.612915 1208.214355 1207.172974 1206.437012 1205.95874 1205.56958 1205.356934 1205.29187 1205.43103 1205.485352 1205.74353 1206.00293 1206.524658 1207.27356 1207.352295 1209.233765 1212.714966 1217.015015 1220.650391 1220.997437 1221.012085 1220.162964 1218.96936 1217.841064 1216.946411 1216.438232 1216.207886 1215.861206 1215.316406 1214.431519 1213.313232 1212.003296 1210.795044 1209.827148 1208.575439 1205.933105 1201.686157 1197.94043 1195.519287 1194.562256 1194.304688 1194.261963 1195.060425 1196.092041 1196.62561 1196.728149 1196.075806 1195.337646 1198.931519 1200.464355 1201.178467 1201.179199 1200.817261 1200.495361 1200.10437 1200.330933 1201.323853 1201.752686 1200.36145 1198.611206 1196.517212 1194.22583 1191.514038 1188.928101 1186.772461 1185.330322 1185.447388 1185.563232 1185.948364 1186.203247 1186.329224 1186.318237 1186.135864 1185.827393 1185.462524 1184.977783 1184.568604 1184.108154 1183.578857 1182.988281 1182.149048 1181.758789 1181.41748 1180.78064 1180.105225 1179.248413 1178.540283 1177.834717 1177.042114 1176.22522 1175.439819 1174.614624 1173.664307 1172.02771 1170.924316 1171.003052 1171.074707 1171.160645 1171.22229 1171.498047 1172.122559 1172.759644 1173.168213 1173.362915 1173.36731 1173.116699 1172.855591 1172.429077 1172.039185 1171.602539 1170.97876 1168.631958 1165.805542 1163.701416 1162.72522 1163.060181 1163.408569 1163.712769 1164.107788 1164.539429 1165.14978 1165.780396 1166.543579 1167.302612 1168.141602 1169.028198 1170.099976 1170.865601 1171.204102 1171.1521 1170.444214 1169.938354 1169.519531 1168.953613 1168.118652 1167.502319 1166.845703 1166.322388 1165.887573 1165.555664 1165.3125 1165.49939 1165.559692 1165.672485 1165.779907 1165.971802 1166.476318 1167.140991 1167.788574 1168.14563 1167.714722 1166.759521 1165.605957 1163.897339 1161.990234 1159.733521 1158.736816 1163.008179 1163.128784 1158.203857 1158.406738 1158.452881 1159.25769 1161.246826 1162.424683 1162.819214 1162.894775 1162.247681 1160.479736 1160.292358 1161.222778 1161.666626 1162.162231 1163.118896 1163.348633 1163.572388 1163.671143 1164.571899 1165.950195 1167.290039 1168.720947 1170.244019 1172.025879 1173.65625 1174.981567 1176.573486 1178.19873 1179.939209 1181.632202 1185.516479 1193.506836 1197.569458 1200.145508 1200.68042 1205.441895 1214.956665 1224.117798 1232.228149 1235.432861 1237.953735 1241.879272 1243.640259 1241.527466 1235.347534 1228.896851 1219.866699 1218.630859 1221.170532 1222.998657 1222.5896 1222.03186 1231.789307 1229.846802 1224.417725 1224.138672 1223.119263 1223.096924 1225.929932 1229.982666 1233.001343 1231.072632 1232.065796 1235.228271 1241.442017 1251.842163 1260.38855 1267.425903 1270.884888 1272.479858 1274.45459 1277.033325 1278.325562 1280.001343 1281.024414 1288.625 1295.432251 1296.917603 1297.12439 1296.735718 1295.908325 1294.858887 1292.345459 1289.727661 1286.498047 1282.440552 1277.977417 1273.760376 1269.924072 1266.113403 1262.886108 1259.531982 1255.660767 1251.38208 1245.557251 1240.445923 1254.017944 1265.532959 1272.863892 1279.007568 1282.68457 1282.215454 1274.771851 1268.893433 1267.464844 1266.846802 1266.575684 1265.900635 1263.567383 1259.658813 1255.189331 1245.592041 1244.369873 1254.168457 1265.842529 1272.860107 1279.423828 1283.348267 1284.183228 1283.460449 1281.658936 1279.194702 1277.70105 1275.320923 1274.881592 1275.769165 1275.333374 1274.612305 1275.885254 1275.44104 1270.160156 1258.879028 1258.446655 1260.566895 1259.538696 1254.762695 1244.973877 1234.231079 1224.305054 1226.46228 1235.807495 1235.795044 1233.275757 1225.12561 1216.987427 1222.120605 1219.050171 1218.370605 1222.293823 1221.779907 1218.641113 1214.342773 1209.953247 1207.167969 1206.235596 1204.837769 1200.651245 1199.810303 1199.230225 1198.507202 1197.930054 1197.802246 1197.824219 1194.145874 1186.560181 1173.652222 1168.834839 1177.755005 1178.953003 1170.75061 1160.511841 1155.194336 1154.82959 1158.578491 1174.343262 1185.801514 1168.375244 1155.963745 1145.557983 1137.424438 1133.171387 1129.912231 1125.604492 1123.60437 1122.186401 1119.654297 1117.548462 1115.756958 1114.485107 1113.328735 1112.568481 1111.638794 1110.677368 1109.576538 1109.364868 1109.348022 1109.51123 1109.878662 1109.945068 1110.294312 1110.723267 1110.598511 1110.591675 +1292.612305 1296.834717 1299.622192 1302.253418 1305.815674 1309.968018 1311.651245 1313.803711 1316.706543 1321.25415 1326.190796 1330.901367 1331.723877 1329.879272 1336.357056 1341.400146 1330.187134 1326.343262 1321.641357 1309.295044 1283.799927 1259.71582 1241.136719 1226.793213 1209.564087 1192.463013 1181.290894 1171.457153 1165.555908 1160.069702 1157.083008 1154.27124 1151.46936 1150.805908 1162.254395 1180.988647 1196.483154 1216.07605 1224.779175 1225.439819 1214.951416 1212.36499 1217.244385 1216.049316 1209.765015 1220.947632 1234.801147 1243.252075 1243.13916 1245.697754 1254.421265 1259.646606 1259.715942 1256.512573 1253.246094 1253.175415 1254.493896 1254.124634 1252.58606 1250.828735 1248.670776 1246.575439 1243.932983 1238.591309 1235.120728 1231.89624 1226.474854 1222.171387 1221.742798 1223.019775 1224.120605 1224.265381 1222.87854 1220.831909 1219.857422 1220.266357 1219.770752 1221.013428 1225.520508 1227.758545 1228.955444 1229.493774 1229.661133 1229.772949 1229.692993 1229.605713 1229.472534 1229.012939 1228.633545 1227.977661 1227.265381 1226.461548 1225.574097 1224.584473 1223.540527 1222.653931 1221.876953 1220.217041 1215.718628 1212.114624 1213.691895 1218.088989 1221.467285 1224.841797 1228.065552 1231.117676 1236.52356 1245.252197 1251.156006 1255.058838 1258.419678 1260.434692 1261.099487 1260.90686 1259.949585 1258.755737 1258.750977 1258.850708 1258.619629 1257.568237 1253.208374 1248.685425 1256.445923 1258.431274 1257.996094 1258.146362 1258.309814 1256.68457 1256.741211 1257.532959 1257.419556 1256.086548 1249.767456 1248.906494 1255.954834 1257.672241 1257.965332 1257.695801 1256.672852 1256.158081 1257.903076 1258.349609 1258.674438 1262.024292 1264.79126 1267.026489 1268.998413 1269.11731 1266.818115 1264.236572 1262.758911 1261.120483 1259.533691 1257.422607 1253.371704 1247.564087 1242.666138 1246.103271 1245.784546 1245.937012 1248.351685 1248.371216 1246.391113 1244.550293 1244.410278 1244.305664 1244.603516 1244.525757 1243.974487 1242.560059 1241.186646 1241.16687 1241.762695 1243.088501 1244.345337 1242.586182 1239.513062 1236.024048 1233.103149 1229.395996 1225.011963 1222.24292 1223.384766 1225.502563 1227.31189 1228.661987 1229.303589 1229.407471 1229.413452 1229.454834 1229.700195 1230.150757 1230.912231 1231.718384 1232.490601 1233.164917 1233.260254 1232.778564 1231.812866 1231.582886 1232.239746 1233.429199 1234.356079 1234.96521 1235.574707 1236.387085 1237.304199 1238.142578 1239.052734 1240.180786 1241.494263 1242.632202 1244.056885 1244.386719 1244.256104 1244.317261 1242.919922 1240.835083 1238.490479 1236.978394 1235.531128 1233.640747 1231.255005 1228.908936 1226.736206 1225.027466 1223.83728 1222.750977 1221.609253 1219.892212 1217.236206 1213.010986 1208.617432 1209.349487 1209.85791 1209.184204 1207.818115 1207.501221 1207.704224 1207.801758 1207.47522 1209.725952 1215.419067 1219.793579 1220.078735 1218.191895 1215.81543 1213.804565 1212.057739 1210.599121 1209.032104 1207.676758 1206.954468 1206.228516 1205.86731 1205.611694 1205.529907 1205.573608 1205.824463 1206.033203 1206.446411 1207.044556 1208.166138 1209.279541 1210.994385 1214.559082 1218.30542 1220.666626 1221.12085 1221.12854 1220.569458 1219.697754 1218.664673 1217.64563 1217.12207 1217.130005 1216.741455 1215.986572 1215.012451 1213.692261 1212.180176 1210.687866 1209.367065 1207.874878 1204.411377 1200.614624 1196.881592 1194.860352 1194.646729 1194.618164 1194.803833 1196.060181 1197.622192 1198.516357 1198.790283 1198.38147 1199.076416 1200.842773 1201.695312 1202.119995 1201.995117 1201.657715 1201.17688 1200.773071 1200.914185 1201.752319 1201.981567 1200.425293 1198.672974 1196.692749 1194.200684 1191.290161 1188.993652 1187.373901 1186.093994 1186.077637 1186.31311 1186.651733 1186.796265 1186.932983 1186.890747 1186.666382 1186.281616 1185.836304 1185.309937 1184.777832 1184.263672 1183.752319 1183.215698 1182.566528 1182.660645 1182.398682 1181.682861 1180.833374 1180.2146 1179.378296 1178.672974 1177.925659 1177.270142 1176.377075 1175.395508 1174.220947 1172.584106 1171.729004 1172.096436 1171.96875 1171.776611 1171.902222 1172.192749 1172.724609 1173.25415 1173.682495 1173.834106 1173.768555 1173.485107 1173.140015 1172.650269 1172.245239 1171.713867 1171.10022 1168.952759 1166.037231 1163.937012 1163.368652 1163.69104 1163.993164 1164.196777 1164.598877 1165.0271 1165.658691 1166.290771 1167.059937 1167.698364 1168.445068 1169.373657 1169.998657 1170.752075 1171.293213 1171.387573 1171.197266 1170.856445 1170.523682 1169.877441 1169.138062 1168.295776 1167.587402 1166.912109 1166.540894 1166.287964 1166.198486 1166.395508 1166.502686 1166.657227 1166.683472 1167.009521 1167.491211 1168.343994 1169.807373 1170.471069 1169.854492 1168.786621 1167.535889 1165.859497 1163.69458 1160.559326 1159.069214 1168.377075 1170.407715 1164.529541 1159.289429 1159.905029 1162.412109 1164.432617 1165.467773 1165.903687 1166.471436 1165.983765 1162.495239 1160.454712 1161.082764 1161.399536 1162.419312 1163.41272 1163.845947 1163.998413 1164.012817 1164.335571 1165.745239 1167.201904 1168.636963 1170.161743 1171.77417 1173.328369 1174.573608 1175.847656 1177.216431 1178.958984 1181.156494 1184.192383 1189.13147 1193.483643 1193.123047 1194.019409 1204.703369 1213.36853 1221.19165 1228.778687 1232.194336 1230.77124 1234.960938 1237.319092 1236.255737 1235.120605 1232.213745 1222.104858 1216.329224 1213.989258 1217.989136 1217.605103 1216.994751 1223.593506 1224.229858 1218.23291 1218.671631 1217.019165 1217.384033 1221.064575 1221.37439 1219.546387 1229.110107 1233.175537 1244.484497 1250.204712 1259.150269 1260.560669 1263.52832 1265.430054 1266.275146 1266.546143 1270.123291 1272.437378 1273.256104 1274.773071 1279.320312 1286.495239 1290.128052 1294.26123 1296.594727 1296.255005 1295.726074 1294.418823 1292.928101 1290.166992 1286.044312 1281.567383 1277.723389 1274.021484 1270.595459 1267.676025 1264.044922 1259.803345 1254.836304 1249.075317 1242.79834 1250.563599 1264.969238 1272.47937 1278.521118 1282.497925 1282.308716 1278.923828 1274.448486 1271.611572 1269.938965 1269.335205 1268.618652 1266.581543 1261.734009 1256.256592 1252.399048 1248.171631 1253.224365 1262.239746 1270.661133 1277.990356 1283.990601 1288.747559 1292.238647 1290.286255 1286.724854 1284.921143 1284.230835 1283.740845 1283.155396 1281.327026 1279.037476 1281.00293 1279.053833 1268.168579 1267.317383 1271.042969 1270.708618 1265.598633 1260.136353 1248.910767 1241.276855 1232.656494 1233.514893 1240.536987 1241.876221 1239.119629 1233.62085 1220.966187 1224.07251 1221.580933 1221.847046 1224.301636 1221.695435 1218.021484 1214.595459 1207.31665 1206.873413 1206.276001 1204.588257 1198.12439 1194.85791 1194.618652 1197.313721 1197.395996 1197.003052 1196.876953 1192.54126 1182.230225 1171.78894 1160.569092 1163.971069 1165.913574 1162.157959 1155.973022 1152.224609 1153.319458 1157.522705 1170.636719 1185.624146 1168.798218 1157.278442 1146.270508 1137.250244 1132.187988 1128.366577 1123.878418 1121.844849 1120.886841 1119.503906 1118.111816 1116.692017 1115.497437 1114.438965 1113.394653 1112.412842 1111.229126 1110.262207 1110.285034 1110.214111 1110.349243 1110.769897 1110.925781 1110.821167 1110.616943 1110.590454 1110.501709 +1294.822754 1300.674316 1303.937134 1305.27063 1311.534424 1318.015503 1319.035156 1318.017578 1316.463867 1321.982666 1326.720093 1330.820435 1332.832642 1334.310791 1340.772461 1341.872192 1335.311157 1329.398315 1319.281738 1299.24707 1270.742188 1254.284058 1241.664062 1217.552979 1200.341187 1183.306274 1177.429443 1170.632812 1165.822632 1161.407959 1157.980225 1154.307861 1151.394043 1152.679199 1166.745361 1184.87915 1207.050049 1227.461182 1251.372803 1245.408203 1224.268433 1229.944458 1234.764771 1236.020508 1229.12915 1237.54248 1251.873535 1257.491211 1256.329224 1256.686646 1265.269897 1265.9823 1262.631104 1257.462524 1255.238159 1257.191406 1258.198975 1256.895386 1254.491821 1252.712524 1249.79834 1246.753296 1241.468994 1235.440186 1231.360962 1227.457153 1223.073486 1224.546997 1225.958862 1227.268677 1228.001831 1227.479004 1225.535645 1223.195679 1222.032837 1223.24353 1222.261597 1220.217163 1226.54895 1228.674927 1229.71106 1230.121094 1230.402222 1230.429443 1230.366333 1230.157959 1230.097412 1229.626831 1229.129517 1228.424438 1227.582275 1226.560059 1225.407227 1224.292847 1223.22937 1222.400146 1221.727783 1218.840332 1214.095703 1212.517822 1215.514526 1219.102539 1222.479004 1226.93457 1229.670654 1232.89917 1243.04834 1248.438599 1254.719238 1257.80957 1259.86438 1262.081299 1263.276001 1263.563965 1262.890747 1262.253052 1261.876099 1261.422485 1260.296143 1258.394287 1254.407959 1252.603638 1257.912231 1260.201172 1260.750488 1260.750732 1260.337646 1259.671875 1259.599121 1259.740601 1259.369019 1258.339844 1253.600464 1250.194214 1257.190063 1258.164551 1258.849487 1259.092041 1258.759277 1258.479858 1259.919922 1261.862427 1264.096313 1264.873657 1266.282471 1268.314453 1269.31897 1269.647339 1268.345703 1268.310791 1266.268433 1263.582764 1261.268677 1258.812134 1255.197632 1247.810303 1244.237061 1247.806641 1249.489258 1250.097168 1250.901001 1251.59729 1251.022217 1249.77063 1248.663574 1247.609009 1246.984497 1246.41394 1245.66333 1244.287231 1242.502441 1241.753052 1241.511597 1241.462036 1241.366333 1240.365967 1238.341431 1235.524292 1232.812988 1229.230713 1225.325928 1222.969727 1224.949707 1228.025879 1229.785034 1230.617065 1230.946045 1230.560181 1230.052002 1229.916016 1230.048462 1230.392334 1231.102661 1231.860474 1232.699707 1233.384521 1233.566162 1233.246338 1232.241089 1231.779297 1232.854126 1234.078125 1235.201782 1236.469604 1237.984131 1239.490723 1240.778198 1241.612061 1242.35144 1242.995239 1244.851318 1246.010254 1246.832886 1246.928101 1246.325195 1246.291016 1245.555664 1244.479858 1241.942017 1239.525635 1237.066772 1234.840088 1232.213989 1229.758911 1228.002441 1226.657593 1225.145508 1223.791016 1222.166504 1220.124878 1217.809448 1215.945801 1214.118774 1212.765991 1211.679077 1210.643066 1209.246948 1207.634888 1208.05603 1208.654907 1207.437622 1209.61438 1213.580811 1217.377686 1220.214111 1219.024536 1216.744873 1214.936279 1213.30896 1211.668823 1210.069946 1208.682861 1207.459106 1206.617065 1206.220703 1205.963867 1205.863403 1205.913208 1206.094238 1206.310547 1206.748291 1207.406616 1209.22876 1210.647705 1212.790161 1215.671509 1218.634399 1220.679932 1221.237183 1221.296387 1221.010742 1220.061401 1219.079102 1217.979736 1217.761353 1217.947998 1217.598999 1216.965942 1215.766479 1214.218384 1212.266968 1210.137329 1208.354858 1206.172485 1202.745972 1199.121582 1195.705444 1195.269653 1196.37854 1196.87207 1197.032227 1198.245728 1199.597412 1200.543823 1201.08313 1201.199585 1201.856323 1202.53064 1203.15625 1203.347656 1203.074341 1202.525757 1201.976929 1201.469116 1201.434814 1202.026978 1201.931396 1200.273071 1198.311157 1196.122925 1193.444214 1190.639526 1188.82605 1187.500122 1186.890869 1187.16687 1187.425537 1187.586182 1187.651245 1187.568726 1187.493286 1187.153564 1186.702515 1186.116089 1185.465088 1184.817505 1184.154297 1183.549805 1183.085083 1183.093262 1183.423462 1183.124634 1182.442627 1181.572998 1181.128052 1180.428223 1179.689331 1179.000122 1178.229736 1177.303467 1176.267334 1175.050415 1174.022705 1173.345947 1173.18103 1172.892334 1172.738281 1172.699829 1172.926758 1173.313477 1173.668945 1173.999146 1174.136108 1174.03894 1173.651611 1173.296753 1172.69165 1172.2229 1171.645386 1170.913574 1168.573975 1166.196777 1164.253662 1164.016357 1164.246216 1164.549927 1164.845459 1165.227295 1165.583252 1166.173706 1166.787598 1167.467163 1168.146606 1168.860596 1169.523804 1170.075195 1170.79126 1171.310425 1171.541138 1171.728027 1171.577637 1171.324585 1170.798706 1169.98584 1169.030396 1168.085449 1167.548218 1167.226929 1166.968872 1166.972168 1167.110352 1167.367065 1167.510254 1167.688843 1167.926025 1168.293579 1169.073975 1170.556641 1171.244507 1171.132324 1170.08606 1169.301636 1168.650146 1166.626465 1162.118774 1158.279297 1170.512817 1171.463135 1171.360718 1170.449097 1168.432495 1168.037354 1168.859009 1168.705078 1169.024658 1169.927246 1170.900391 1166.145752 1161.7323 1161.559814 1162.635498 1164.500488 1165.105591 1164.998169 1164.733765 1164.560425 1164.454956 1165.702759 1167.242798 1168.568115 1169.953247 1171.342285 1172.656128 1173.862183 1174.868164 1176.110107 1177.834229 1179.993408 1182.277466 1184.675659 1186.442749 1183.65271 1193.026611 1201.63562 1208.714478 1216.187866 1220.155518 1222.476562 1225.403931 1229.5354 1230.793823 1231.414185 1232.667114 1232.448242 1225.740601 1216.986816 1207.324219 1208.831055 1210.377441 1216.303223 1221.082153 1221.318726 1217.229004 1209.880127 1209.042969 1208.975464 1211.72522 1217.447388 1219.943848 1234.494751 1241.049194 1245.327759 1251.63623 1256.774414 1258.259033 1259.393188 1260.453003 1260.188232 1259.511475 1262.873047 1265.945068 1266.361938 1267.869629 1271.764771 1274.899902 1279.578857 1291.916504 1296.135742 1296.351318 1295.846191 1295.860229 1295.460693 1293.971924 1290.917847 1286.363037 1281.894165 1278.13208 1274.712158 1271.667603 1268.828613 1264.567139 1259.317261 1253.907837 1246.389526 1248.284912 1263.392944 1271.323364 1276.651245 1280.982544 1282.266846 1280.183228 1276.64624 1273.637695 1272.102295 1271.427979 1270.57959 1269.273804 1265.029907 1259.763428 1256.435669 1254.220825 1250.329712 1254.196777 1264.462158 1271.996582 1280.511719 1286.953979 1294.315308 1295.151733 1294.129395 1291.605469 1289.69397 1289.442383 1288.660156 1286.914062 1285.536621 1285.21936 1283.27002 1274.334473 1277.145142 1278.955322 1274.739746 1268.144043 1261.092285 1253.360352 1248.993774 1242.101685 1240.583008 1245.832275 1247.373413 1244.482056 1236.836914 1230.191895 1229.719849 1229.505127 1228.286499 1227.978149 1223.914185 1220.765991 1217.804321 1211.898804 1209.643311 1209.41626 1208.244385 1204.057007 1198.804321 1191.9375 1182.489746 1184.838745 1185.703491 1183.078247 1177.607666 1169.482788 1160.424316 1154.278198 1152.248169 1154.877563 1151.614258 1146.647827 1148.332764 1151.361816 1155.873291 1164.939087 1174.87854 1167.399048 1154.471313 1144.664917 1136.9198 1132.432617 1128.410278 1124.343628 1122.069946 1120.791992 1119.720093 1118.626343 1117.584106 1116.448364 1115.30542 1114.332275 1113.233887 1112.280151 1111.562866 1111.285889 1111.234009 1111.326172 1111.376831 1111.280273 1110.212402 1110.052979 1110.072266 1110.268066 +1300.336426 1305.633057 1309.702393 1311.951294 1316.493164 1320.214478 1321.719116 1322.282593 1322.187378 1325.127686 1328.53064 1330.72583 1333.057129 1334.753662 1336.121582 1336.616089 1334.308472 1330.36377 1318.891968 1293.078613 1269.27771 1252.771484 1238.116089 1223.776733 1203.362183 1185.60791 1178.282471 1172.251587 1166.715332 1162.335205 1158.596558 1154.63208 1151.608887 1154.29187 1169.08374 1187.333618 1213.633179 1236.480347 1258.766968 1262.293335 1242.25647 1249.213135 1250.606812 1247.588623 1242.65686 1259.449341 1268.735596 1269.475708 1267.977539 1272.100586 1273.231201 1270.230347 1265.206421 1257.951416 1256.27356 1259.71167 1260.574341 1258.822144 1257.144043 1254.64502 1249.121582 1242.434692 1233.38623 1227.905151 1226.120972 1229.470825 1231.286011 1231.538208 1231.045898 1231.75708 1231.648315 1230.80188 1228.596924 1226.821655 1226.464478 1227.583008 1229.169312 1228.579712 1229.318359 1229.938232 1230.344727 1230.703979 1231.232178 1231.206055 1231.069824 1231.042603 1230.78894 1230.429199 1229.707397 1228.885986 1227.781982 1226.497681 1225.137817 1223.866943 1222.558594 1221.285034 1221.176514 1215.257202 1214.782104 1217.524658 1218.564209 1220.119873 1224.913574 1229.459229 1233.105835 1236.033569 1243.412964 1248.440063 1256.068237 1259.299316 1261.568604 1263.986206 1265.995361 1266.864868 1266.107056 1265.158936 1264.546387 1263.882935 1262.020142 1257.824585 1255.611938 1256.338501 1258.819336 1261.893433 1263.040283 1263.501953 1263.530762 1263.025513 1262.529297 1261.997437 1261.197998 1259.654541 1256.048218 1250.297852 1256.495117 1258.449097 1259.661621 1260.529663 1261.047607 1261.699829 1263.677734 1267.427124 1268.109009 1266.916626 1267.212036 1269.158325 1269.825562 1270.23291 1270.201172 1269.978638 1268.250854 1265.190796 1262.897949 1260.017944 1256.058105 1250.228027 1247.063965 1253.442139 1254.285889 1253.108643 1253.570435 1255.169067 1256.209961 1256.164429 1253.816772 1251.493164 1249.530762 1248.041992 1246.546265 1244.797119 1243.237061 1242.002441 1241.477539 1241.037842 1240.302734 1239.077393 1237.520142 1235.449097 1233.456787 1230.490967 1225.826294 1223.775635 1227.887817 1231.080078 1232.092651 1232.21936 1232.006104 1231.336914 1230.512695 1230.322754 1230.422852 1230.721313 1231.200073 1231.994751 1232.944458 1233.539795 1233.770142 1233.509277 1232.567139 1231.872681 1233.338989 1234.577148 1236.1521 1238.089233 1240.144653 1242.064697 1243.65918 1244.625366 1245.672241 1246.522705 1248.09729 1249.402222 1249.919434 1249.464111 1248.497437 1247.641235 1246.821655 1245.806641 1244.086304 1241.241089 1238.366211 1235.141968 1232.22876 1230.474243 1229.597168 1228.39209 1226.803223 1224.697998 1222.411621 1220.09021 1218.73291 1218.989868 1218.025635 1216.138062 1214.351562 1212.477295 1210.493896 1208.012939 1208.530029 1209.35791 1207.973999 1209.133301 1213.485718 1216.775269 1219.378174 1218.546021 1217.340698 1216.08313 1214.756226 1213.073486 1211.288574 1209.624878 1208.12854 1207.271851 1206.677124 1206.460693 1206.301514 1206.307373 1206.378296 1206.645752 1206.962524 1207.586914 1209.488159 1211.517578 1213.802612 1216.151611 1218.551025 1220.589355 1221.277466 1221.464844 1221.25293 1220.428589 1219.333618 1218.423096 1218.47998 1219.10791 1218.745728 1217.984253 1216.68396 1214.90918 1212.609985 1210.00769 1207.574707 1205.137451 1201.933838 1196.849487 1195.074097 1197.443237 1199.03125 1199.827881 1200.426147 1201.368896 1202.41687 1203.417969 1203.840454 1203.606201 1203.790894 1204.422485 1204.90271 1204.668823 1204.188354 1203.55188 1202.879395 1202.096802 1201.877319 1202.197998 1201.687012 1199.830078 1197.121704 1194.997803 1192.221802 1189.589355 1188.580444 1188.373779 1188.443726 1188.710205 1188.93396 1188.858643 1188.733276 1188.448975 1188.098999 1187.669189 1187.07959 1186.340454 1185.525757 1184.657959 1183.862793 1183.220337 1183.07312 1183.665771 1183.972412 1183.655884 1182.930542 1182.235474 1181.973267 1181.597656 1180.798462 1179.980225 1179.098755 1178.239502 1177.095825 1176.223877 1175.359619 1174.790649 1174.398193 1173.965942 1173.684692 1173.485718 1173.617188 1173.77478 1174.066528 1174.260742 1174.259644 1174.034912 1173.661499 1173.060669 1172.547852 1171.99707 1171.279297 1170.131226 1167.973877 1166.286133 1164.693115 1164.507324 1164.723633 1165.047363 1165.446411 1165.771729 1166.202637 1166.761963 1167.378784 1167.946045 1168.53772 1169.254028 1169.756836 1170.131714 1170.693726 1171.249023 1171.650757 1171.839722 1171.852051 1171.655884 1171.126465 1170.540039 1169.35022 1168.665039 1168.164062 1167.875977 1167.796753 1167.682617 1167.810059 1168.064087 1168.250488 1168.645996 1168.78186 1169.058105 1169.593628 1170.517944 1171.401855 1171.696533 1171.46936 1171.301758 1171.223145 1170.846191 1168.327515 1161.793701 1167.515625 1171.176147 1171.522217 1171.647095 1171.43689 1171.300903 1171.424438 1171.274902 1171.384521 1171.439819 1171.144287 1169.155762 1167.707886 1168.392334 1168.474487 1168.558228 1167.633545 1166.506104 1165.597534 1165.032959 1164.890747 1165.861572 1167.015625 1168.3479 1169.53894 1170.534668 1171.334595 1172.607422 1173.515625 1174.599365 1176.215454 1177.991943 1180.027222 1181.71228 1181.899536 1182.824951 1194.571167 1200.529297 1205.612183 1210.576172 1213.990601 1216.509155 1219.73584 1223.971802 1225.608398 1226.601562 1228.335571 1227.94873 1224.942627 1220.129639 1211.008423 1206.181641 1206.912598 1212.956421 1219.563843 1219.021606 1211.999023 1206.387329 1206.394653 1209.501343 1218.268188 1221.642456 1225.401367 1234.39209 1237.1073 1240.094238 1243.708496 1249.751465 1253.031982 1254.36853 1255.198853 1254.74707 1252.361938 1253.940063 1255.913818 1253.773315 1254.745483 1260.724976 1266.060913 1279.044556 1286.834717 1293.601929 1293.882324 1295.562744 1296.444092 1296.793335 1296.356689 1294.406982 1292.02771 1287.080444 1282.191406 1278.059204 1275.004883 1272.15564 1269.209473 1263.81189 1258.757935 1251.775269 1248.71521 1260.415771 1269.584595 1273.665894 1276.947266 1278.550171 1277.414429 1274.911011 1273.031982 1272.226196 1272.022217 1272.155151 1271.155396 1267.72522 1267.711304 1268.060059 1262.557495 1255.068726 1252.89624 1256.19458 1266.274292 1273.379272 1279.357178 1287.843628 1294.535645 1295.491943 1295.139893 1294.238159 1294.243408 1294.18103 1293.014526 1292.575684 1292.046509 1285.064575 1279.847046 1284.061523 1284.115479 1280.175903 1273.229248 1268.616577 1261.97168 1256.731079 1248.11438 1246.486816 1253.277588 1255.391602 1249.800537 1241.485474 1233.826904 1235.162598 1233.983521 1233.088867 1232.235474 1229.149902 1224.111328 1219.24707 1216.080933 1212.760132 1210.684326 1209.500854 1208.394043 1207.352173 1199.279053 1187.958374 1173.747437 1169.398071 1167.676147 1163.11731 1156.890625 1154.908936 1147.699585 1144.375488 1144.665405 1145.064819 1144.974731 1145.967773 1149.251831 1153.71875 1160.483398 1167.741089 1158.300293 1149.391724 1142.348022 1136.425537 1132.437866 1128.69397 1125.267578 1123.00415 1121.473145 1120.343628 1119.369629 1118.308716 1117.380371 1116.229736 1115.218628 1114.257446 1113.448364 1112.676758 1112.302979 1112.232056 1111.979004 1111.789551 1111.491333 1110.71228 1110.050293 1110.044189 1110.047119 +1304.249878 1309.480713 1316.397339 1317.980835 1317.512329 1321.864624 1325.378418 1328.25708 1329.726318 1328.901001 1329.532715 1332.402588 1333.77124 1334.563354 1334.363159 1333.554565 1331.955566 1328.369995 1319.028931 1290.672241 1270.220093 1255.476074 1240.922607 1226.500244 1206.530518 1189.540161 1180.451904 1172.39856 1167.020508 1162.193237 1158.21228 1155.055908 1152.468384 1153.137085 1168.942993 1189.972168 1212.470337 1239.479248 1262.327393 1274.703369 1279.532837 1279.127319 1263.390137 1262.628418 1263.537842 1274.661011 1277.819214 1279.818481 1280.0354 1280.421387 1278.48938 1273.909546 1268.059326 1260.066162 1258.929077 1262.794922 1263.745972 1262.21106 1259.889038 1257.33374 1247.21106 1233.995605 1227.819702 1234.567139 1238.986694 1238.384033 1237.022217 1235.484253 1234.779297 1234.549805 1234.280884 1233.213501 1231.455078 1229.076294 1228.980957 1231.154785 1232.895874 1232.757812 1231.653931 1230.560303 1230.699707 1231.086426 1232.085327 1231.933716 1231.790283 1231.875122 1231.700562 1231.208618 1230.391113 1229.297241 1228.058105 1226.621948 1224.956177 1223.364868 1221.637695 1220.258789 1216.669189 1217.530884 1220.585815 1221.498169 1221.724854 1223.197998 1227.436401 1230.753052 1235.095581 1241.608154 1246.849731 1251.249756 1254.743286 1259.305908 1263.203247 1265.237915 1268.297852 1269.21106 1268.275513 1267.649414 1267.526489 1266.462036 1264.027832 1261.174194 1261.930786 1262.655273 1262.973999 1263.880859 1265.404175 1266.655762 1266.80481 1266.007568 1265.171875 1264.376343 1263.284912 1261.456421 1257.989014 1253.336914 1255.707031 1258.49353 1260.363281 1261.93335 1262.875488 1263.862305 1266.03479 1268.400391 1268.34021 1267.929199 1267.753052 1269.317993 1270.221069 1270.865234 1271.300293 1270.74646 1268.616089 1266.780396 1264.771973 1261.659058 1258.056763 1253.27478 1252.815674 1257.498169 1257.291626 1255.168457 1255.27124 1258.350586 1261.839966 1262.033936 1257.485962 1254.39856 1251.994263 1249.510864 1247.507446 1245.153442 1243.279053 1242.249268 1241.545166 1240.960083 1240.077026 1238.725952 1237.104126 1235.424194 1233.702271 1231.037842 1225.826172 1225.694458 1231.192505 1232.584839 1233.062866 1233.25769 1232.700195 1231.661987 1230.960083 1230.727417 1230.760376 1230.967651 1231.415894 1232.157593 1233.150269 1233.935791 1234.146118 1233.78064 1232.840454 1231.833618 1233.396729 1234.8302 1236.966431 1239.630493 1241.996826 1243.835571 1245.973755 1248.127686 1249.537231 1251.002075 1252.190674 1252.857666 1253.19751 1252.179443 1250.666504 1249.183472 1247.674561 1246.403198 1245.060425 1243.248779 1239.846191 1236.302246 1233.207397 1232.291992 1231.998291 1230.782593 1228.44519 1226.071411 1223.807861 1221.716309 1220.780273 1220.776611 1220.373047 1219.00647 1216.813232 1214.54187 1212.377197 1210.508301 1210.396851 1210.452148 1210.054321 1211.504761 1214.322144 1217.596191 1219.769165 1219.585815 1218.580811 1217.550903 1216.286621 1214.74292 1212.750732 1210.527588 1208.772705 1207.654907 1207.287476 1206.876953 1206.740479 1206.62207 1206.681274 1206.743164 1207.062744 1207.559814 1209.5979 1212.140015 1214.510864 1216.757324 1218.723022 1220.460327 1221.49939 1221.765137 1221.532104 1220.726807 1219.463135 1219.004639 1219.834229 1220.17334 1219.712402 1219.011475 1217.845703 1215.85791 1213.626343 1210.873291 1208.629028 1206.49585 1202.210693 1197.175171 1197.888062 1200.409302 1202.444336 1203.483887 1203.812256 1204.283203 1205.389282 1206.708008 1206.786499 1205.343872 1205.235596 1206.192139 1206.650635 1206.127563 1205.374756 1204.431519 1203.69043 1202.781128 1202.25 1202.245483 1201.402222 1199.155273 1195.469849 1193.450317 1191.225708 1189.827759 1190.274902 1190.454956 1190.713501 1190.929932 1190.829224 1190.494141 1189.991455 1189.498413 1188.983276 1188.341919 1187.648682 1186.817139 1185.829712 1184.644287 1183.33313 1183.12439 1183.670166 1184.331177 1184.397339 1184.177856 1183.412598 1182.926025 1183.164551 1182.732788 1181.858765 1180.834595 1179.983276 1178.888184 1178.157227 1177.33252 1176.710815 1176.179199 1175.655762 1175.022339 1174.579468 1174.31189 1174.21228 1174.329834 1174.320068 1174.2854 1174.156738 1173.812378 1173.326294 1172.777954 1172.124634 1171.404541 1170.759155 1169.349121 1167.949585 1166.522949 1165.558472 1165.14917 1165.322266 1165.617432 1165.946655 1166.356934 1166.823364 1167.415771 1168.007202 1168.649292 1169.075928 1169.586914 1170.40271 1170.785278 1170.62915 1170.998413 1171.623535 1171.90979 1171.869629 1171.713989 1171.243042 1170.488037 1169.749756 1169.216309 1168.831543 1168.550903 1168.458008 1168.478027 1168.541016 1168.725098 1169.009155 1169.417236 1169.873169 1170.13501 1170.128906 1170.3927 1171.085449 1171.813599 1172.144775 1172.129761 1172.075562 1171.861572 1171.349243 1169.653809 1169.263062 1170.609741 1171.202759 1171.837524 1172.109375 1172.159546 1172.210327 1172.180054 1172.038574 1171.701416 1170.707764 1170.798096 1171.248047 1171.43103 1171.330688 1170.86731 1169.643188 1168.060913 1166.544434 1165.626831 1165.284912 1166.106812 1166.93457 1167.966797 1168.925537 1169.810669 1170.498657 1171.456543 1172.448486 1172.963257 1174.244629 1176.162476 1178.202759 1179.680908 1180.716919 1183.866211 1193.636353 1198.332764 1202.170654 1206.252441 1208.961548 1211.901855 1216.153809 1219.700806 1221.463135 1219.358154 1223.770996 1223.57605 1222.060059 1219.708252 1212.311401 1206.730591 1205.393311 1208.03064 1210.897339 1210.540161 1207.081787 1206.32312 1211.897461 1220.494629 1221.843506 1222.412354 1224.564453 1229.506714 1230.730225 1234.626709 1239.01355 1242.546753 1244.800049 1246.099976 1246.959839 1245.137329 1242.577515 1246.066284 1244.795288 1239.089355 1241.45459 1251.803223 1262.488037 1270.182495 1279.162109 1284.528931 1290.740723 1294.796875 1296.835083 1297.419189 1297.712158 1296.916382 1295.273926 1292.75354 1286.84375 1280.452026 1277.529175 1274.661133 1271.240723 1266.542725 1261.723999 1254.609375 1249.263794 1256.438354 1265.016357 1269.850952 1271.927979 1273.195312 1272.341431 1271.622437 1270.528931 1271.121582 1272.305542 1273.394165 1273.997314 1273.492432 1274.339722 1274.837646 1270.085327 1263.724365 1256.89978 1253.50769 1258.130005 1268.119751 1278.231567 1286.06311 1292.321533 1295.465942 1295.864624 1295.390991 1295.771484 1296.139404 1296.084839 1295.834106 1295.454346 1293.66748 1290.144287 1290.812988 1289.324951 1284.332153 1281.108154 1275.889282 1268.664429 1262.201538 1256.183228 1255.318604 1260.228394 1260.911865 1255.904175 1247.376831 1245.532715 1243.172363 1240.19458 1238.448975 1235.793823 1233.117798 1227.446533 1222.641235 1218.593628 1213.341797 1209.536255 1208.274414 1200.817871 1198.318237 1195.795288 1187.122314 1172.606079 1166.610352 1160.0177 1157.740601 1159.881714 1160.885498 1160.680664 1157.546265 1152.025146 1147.787842 1144.814087 1144.369751 1145.531616 1149.959473 1158.034668 1160.726807 1152.732178 1144.609619 1139.378052 1135.171875 1131.998291 1129.079956 1126.226685 1124.149658 1122.510986 1121.395386 1120.268188 1119.092041 1118.118164 1117.02832 1116.123535 1115.322266 1114.469116 1113.793335 1113.241089 1112.796265 1112.45166 1111.978882 1111.437866 1110.883911 1110.352417 1110.046631 1110.049927 +1313.445435 1313.896362 1319.40686 1321.653076 1322.296021 1324.751709 1328.057007 1330.741821 1331.714478 1331.700195 1332.035034 1334.151489 1334.98938 1334.868408 1333.769897 1331.106812 1328.279053 1323.78479 1314.08252 1286.317627 1267.525391 1250.844849 1236.237915 1220.629639 1202.740723 1190.525513 1181.193726 1174.078735 1168.390137 1161.856445 1157.693237 1155.131348 1152.992065 1152.601685 1168.781006 1190.217773 1211.202026 1237.197632 1262.553223 1285.621094 1294.176147 1284.395386 1277.654907 1278.087769 1282.386841 1283.876709 1285.11084 1286.311157 1286.851318 1286.073486 1283.409668 1277.855225 1269.77771 1266.974121 1265.425293 1267.056763 1267.919189 1265.960693 1261.987671 1258.431152 1246.856934 1230.463135 1236.312866 1246.316284 1246.348633 1245.381226 1242.984863 1239.912354 1238.156982 1237.330566 1236.316284 1234.846558 1232.784302 1230.503784 1230.099609 1232.061768 1233.700684 1233.630859 1232.320435 1231.229248 1231.255127 1231.613037 1231.821655 1231.989868 1232.148926 1232.698608 1232.590454 1232.021606 1230.996582 1229.905762 1228.454224 1226.737671 1224.79541 1222.950439 1221.37915 1219.297119 1216.857178 1220.868774 1222.316162 1223.581055 1225.080078 1227.752319 1230.296021 1231.199219 1233.454712 1240.595337 1245.711792 1254.123413 1260.539429 1266.098267 1265.9729 1266.787354 1268.909912 1270.007568 1270.071533 1269.700439 1269.573364 1268.635132 1266.108887 1265.490112 1268.549438 1268.611694 1266.264771 1265.669556 1267.44519 1268.944092 1269.026611 1268.582886 1268.000977 1266.437622 1266.09314 1266.144409 1263.026611 1257.97583 1254.314453 1257.636963 1260.686768 1263.578247 1264.823486 1265.281616 1266.07959 1267.467529 1268.74353 1268.564941 1267.84021 1268.566528 1269.877075 1271.428833 1272.36853 1271.776978 1270.435303 1269.292236 1266.98291 1263.823608 1260.076782 1254.904663 1257.036133 1259.099976 1258.984985 1256.707275 1256.007568 1262.578125 1269.05542 1269.290527 1262.748657 1256.418091 1253.405396 1250.71106 1248.309692 1245.668823 1243.691162 1242.856079 1242.154785 1241.370605 1240.438843 1239.014893 1237.177124 1235.148315 1233.279297 1230.274048 1225.696167 1227.992676 1232.529053 1233.336548 1233.724365 1233.927124 1233.416016 1231.908569 1231.588867 1231.339355 1231.181274 1231.526978 1231.817139 1232.556274 1233.619019 1234.504028 1234.854614 1234.326782 1233.120605 1232.392822 1233.144165 1234.495972 1237.418457 1241.401123 1243.891602 1246.05957 1248.693848 1251.518921 1253.397949 1255.855957 1256.404785 1256.583618 1256.054199 1254.509888 1252.610718 1250.514893 1248.607178 1246.792236 1245.581909 1244.187866 1241.134521 1237.754395 1235.357178 1234.165649 1233.351929 1231.715332 1229.533691 1227.311768 1225.369019 1223.797241 1222.526978 1222.027832 1221.442749 1220.404907 1218.30188 1216.151245 1214.772217 1213.380615 1212.595215 1212.167114 1212.330322 1213.623901 1215.699097 1218.866821 1220.920654 1220.914062 1220.119141 1219.466797 1218.552612 1217.087769 1214.705078 1212.104492 1209.859497 1207.780029 1207.358276 1207.093994 1207.055664 1206.897095 1206.796997 1206.876099 1206.880859 1207.455566 1209.920166 1212.65625 1215.264282 1217.530884 1219.437866 1220.568115 1221.752197 1222.198608 1222.005005 1221.220703 1219.530151 1219.318359 1220.213135 1220.822266 1220.633179 1220.084106 1218.885376 1217.02063 1214.705933 1212.313354 1210.337769 1208.406128 1202.878418 1198.218506 1201.111816 1203.854858 1206.09375 1207.251343 1207.483887 1206.4823 1207.557373 1208.255859 1208.029663 1206.46814 1206.795776 1207.756348 1207.831665 1207.265259 1206.2323 1205.23584 1204.350342 1203.428223 1202.536255 1202.051636 1200.852661 1198.011475 1194.148926 1191.831177 1191.009155 1192.112305 1192.942139 1193.231689 1193.294678 1193.206299 1192.68103 1192.032959 1191.451782 1190.71875 1190.06543 1189.314941 1188.486938 1187.550659 1186.52771 1185.386475 1183.743286 1183.677734 1184.604126 1184.90918 1184.885986 1184.650024 1184.06311 1183.848022 1183.693848 1183.352661 1182.494995 1181.505493 1180.641357 1179.800415 1179.097534 1178.5625 1178.03125 1177.400269 1176.846069 1176.240356 1175.547607 1175.195923 1174.861328 1174.633667 1174.462036 1174.216797 1173.891968 1173.474243 1172.910522 1172.215332 1171.450562 1170.887451 1169.997559 1169.010986 1167.99707 1167.097778 1166.37146 1166.140991 1166.022583 1166.126343 1166.463501 1166.947998 1167.539062 1168.18103 1168.908081 1169.278076 1169.557007 1169.921021 1170.663086 1171.193848 1170.894043 1170.814575 1171.115723 1171.928833 1171.888062 1171.822388 1171.133423 1170.465576 1170.033447 1169.703125 1169.365723 1169.257324 1169.348755 1169.272095 1169.43457 1169.579346 1169.546875 1170.012817 1170.823608 1171.071167 1171.044434 1170.861816 1170.882324 1172.016602 1172.586182 1172.729736 1172.712769 1172.39209 1171.908936 1171.222412 1170.561768 1170.282837 1171.160522 1171.935181 1172.369995 1172.724976 1172.781006 1172.814331 1172.433105 1171.60144 1170.912598 1171.675781 1172.02478 1172.08313 1171.897583 1171.411011 1170.959595 1169.316162 1167.545776 1165.97876 1165.57312 1166.377197 1166.978027 1167.651855 1168.399536 1169.186523 1169.800781 1170.475952 1170.923462 1170.881592 1172.134277 1174.638672 1176.483154 1178.076782 1179.793335 1182.225464 1187.802124 1194.942627 1197.217896 1199.509521 1204.282715 1209.148315 1211.701904 1213.73645 1216.089722 1219.041138 1220.644409 1219.072266 1218.659668 1215.794434 1210.798462 1206.122559 1202.75415 1203.292969 1204.687134 1204.60083 1204.776733 1205.86377 1210.955933 1217.843994 1219.453857 1220.354858 1220.891602 1222.661255 1225.731812 1230.028809 1234.297974 1236.255981 1237.435791 1239.401611 1240.456299 1239.482788 1236.657837 1236.202881 1232.048828 1234.056763 1249.12854 1261.871826 1271.219727 1275.920654 1282.162842 1286.588501 1292.34436 1295.026733 1297.092163 1298.085449 1298.187866 1297.989868 1297.268555 1295.693115 1293.053467 1286.201538 1280.28186 1276.738892 1272.972168 1268.322754 1264.042236 1256.717651 1250.109497 1253.238525 1257.227539 1263.8396 1266.766724 1267.504395 1268.036499 1268.037231 1267.922241 1269.07251 1271.919312 1274.492554 1276.836548 1278.463867 1280.828247 1282.177246 1278.78479 1270.347656 1263.335693 1255.109131 1254.266846 1266.345581 1274.369141 1281.312744 1286.285278 1290.560547 1292.204468 1293.778687 1296.134033 1297.011963 1296.945679 1297.098145 1297.005249 1296.186646 1295.298462 1295.079712 1294.097778 1290.764282 1286.527954 1282.046753 1273.99353 1267.016479 1264.517212 1268.007568 1268.838501 1265.875854 1261.698242 1255.230591 1254.712646 1251.486084 1246.306396 1243.291626 1239.156006 1233.993042 1225.919922 1219.727783 1217.858765 1215.575562 1207.026978 1206.767456 1197.230103 1189.080078 1178.063843 1169.98999 1169.001221 1170.565552 1169.623657 1172.056274 1174.596802 1175.128296 1172.503662 1166.640015 1159.587402 1152.672363 1146.372437 1144.253296 1144.010864 1146.343506 1152.622192 1152.062866 1145.838013 1140.195068 1134.688721 1133.197998 1131.071045 1129.122925 1127.182617 1125.295166 1123.939697 1122.35376 1121.046631 1119.910889 1118.810425 1117.858398 1116.966797 1116.221802 1115.487793 1114.603882 1113.988892 1113.350708 1112.726929 1111.996216 1111.126099 1110.150635 1110.046387 1110.046753 1110.047974 +1318.431152 1316.298096 1321.111816 1325.589233 1326.498413 1327.203857 1327.974609 1330.956177 1333.07373 1334.098755 1335.123047 1336.300781 1336.703247 1336.143555 1334.010254 1330.175293 1326.39978 1320.917847 1305.111084 1280.449219 1260.677002 1244.26416 1229.808105 1215.625122 1204.98291 1196.197144 1186.644653 1178.293213 1170.876465 1161.87439 1157.531616 1155.168091 1153.28064 1152.596313 1167.745483 1188.345581 1208.948975 1234.557495 1261.598022 1285.605225 1299.838013 1291.696045 1286.44397 1286.048584 1288.778931 1290.705933 1290.718994 1292.023193 1292.987915 1291.442627 1287.796021 1280.853271 1273.806396 1268.937012 1267.751709 1269.86731 1270.224487 1268.064575 1262.946899 1257.801636 1245.338867 1229.996948 1241.311646 1247.113892 1248.536621 1247.619141 1244.64856 1241.982056 1240.856934 1239.955933 1238.484497 1236.571533 1234.278442 1232.269409 1231.046021 1231.951904 1233.901123 1234.274048 1232.776978 1232.236694 1232.82373 1232.27771 1231.752319 1231.683716 1232.091064 1232.896484 1233.176758 1232.880493 1231.849609 1230.360718 1228.813965 1226.565674 1224.415039 1222.044312 1220.06665 1217.88269 1220.194702 1222.572388 1224.307129 1225.90918 1227.834473 1231.017578 1233.836304 1235.685791 1241.36853 1244.040039 1243.33374 1252.632324 1263.691772 1269.124634 1267.470825 1268.546021 1268.848145 1270.703491 1271.267822 1271.326416 1270.741455 1269.872192 1268.422485 1267.637695 1268.697021 1269.15625 1267.535278 1267.666504 1269.102417 1270.021362 1270.230469 1269.949829 1269.37793 1268.417969 1268.448608 1269.041992 1268.422852 1261.676392 1256.727051 1255.90686 1260.380371 1266.09314 1268.106079 1267.472656 1266.786133 1267.324707 1268.442627 1269.693359 1269.533325 1268.862671 1268.286255 1272.284668 1273.643921 1273.827393 1272.705566 1271.160034 1269.528931 1266.604858 1260.675293 1255.426025 1257.703247 1260.522461 1260.911865 1259.289307 1259.659302 1266.953247 1269.902344 1270.097412 1266.634888 1257.911865 1254.535156 1252.257446 1249.711304 1247.147217 1245.132446 1244.182129 1243.157104 1242.332153 1241.438354 1239.838013 1237.614868 1235.186279 1232.495483 1229.582031 1226.015503 1229.561401 1232.918823 1233.927979 1234.314697 1234.561157 1234.28894 1233.505615 1232.491821 1232.313965 1231.882324 1232.581909 1233.044189 1233.985107 1234.971436 1235.825684 1236.186279 1235.699585 1234.766724 1233.889771 1233.599609 1233.851318 1237.449219 1242.684082 1245.813721 1248.613525 1252.360474 1255.708984 1256.28064 1257.520264 1257.857666 1257.821533 1257.493896 1256.142578 1254.018677 1251.481567 1249.048218 1246.879395 1244.860474 1243.53186 1241.388306 1238.774048 1236.576294 1234.949829 1233.539062 1231.553589 1229.645874 1228.06311 1226.701538 1225.201416 1223.905762 1222.948486 1222.195801 1221.099243 1219.212036 1218.030273 1217.398804 1215.676392 1214.520508 1213.980591 1214.081177 1214.983765 1216.641479 1219.506714 1221.093018 1221.569092 1221.905396 1221.44104 1220.776489 1219.295288 1216.957886 1213.992798 1211.108154 1208.467041 1207.148682 1207.075073 1207.12207 1207.044189 1206.96814 1206.875488 1206.770996 1207.401123 1209.915161 1213.166382 1216.420898 1219.032837 1220.335083 1221.287109 1222.325195 1222.724121 1222.638916 1222.088379 1220.305176 1219.554443 1220.737427 1221.43811 1221.417358 1220.778564 1219.781494 1217.706177 1215.784424 1213.644775 1211.46167 1209.18103 1204.167603 1202.423462 1207.185181 1207.345825 1208.701172 1208.844604 1208.80481 1208.432861 1209.009766 1209.001221 1208.329956 1207.262329 1208.012451 1208.414429 1208.301636 1207.673096 1206.815674 1205.739136 1204.880127 1203.772339 1202.63623 1201.277588 1199.21814 1194.155029 1194.888916 1195.589966 1195.348633 1195.307495 1195.460815 1195.487793 1195.197876 1194.782593 1194.294678 1193.544312 1192.694336 1191.844971 1190.994751 1190.217773 1189.329956 1188.445679 1187.512451 1186.666138 1185.933838 1185.396484 1185.512329 1185.459717 1185.345825 1185.066772 1184.608398 1184.247437 1183.894775 1183.359497 1182.511475 1181.654175 1181.175049 1180.679321 1180.219238 1179.718628 1179.242432 1178.67688 1178.067871 1177.315796 1176.65332 1175.990356 1175.329712 1174.779175 1174.327026 1173.892212 1173.51001 1173.004272 1172.304688 1171.562378 1170.968506 1170.368286 1169.651489 1169.056885 1168.387939 1167.749268 1167.265503 1166.9729 1166.777344 1166.572388 1166.94519 1167.295898 1168.026489 1169.136475 1169.990234 1170.105713 1170.058105 1170.287109 1170.716675 1171.293701 1171.153076 1171.077271 1171.008423 1171.899048 1172.047363 1171.889526 1171.161499 1171.096802 1170.838135 1170.412964 1169.924316 1169.853516 1170.04541 1170.212524 1170.463623 1170.500122 1170.193115 1170.299927 1171.11377 1171.578125 1171.755249 1171.588257 1171.515747 1172.365601 1172.998779 1173.215088 1173.12854 1172.7854 1172.255249 1171.506958 1170.986572 1170.797485 1170.994141 1171.906982 1172.660522 1173.142334 1173.329468 1173.302368 1173.021362 1171.725098 1171.492432 1172.379517 1172.476196 1172.489502 1172.212402 1171.823242 1171.250366 1170.063721 1168.384399 1166.874512 1165.883545 1166.567993 1167.063599 1167.506104 1168.03894 1168.750366 1169.201782 1169.690308 1170.018433 1170.368164 1171.959106 1173.621094 1175.219727 1176.773315 1178.354492 1180.485352 1182.427979 1186.013916 1189.104248 1194.579468 1200.712402 1206.092896 1206.897827 1206.69519 1211.421143 1213.222656 1214.375977 1213.36377 1212.149292 1211.066772 1209.254761 1204.3302 1198.099731 1196.307373 1199.051636 1198.708374 1200.531372 1204.098145 1206.845825 1209.439209 1212.130127 1213.843994 1215.017578 1216.495239 1220.306152 1224.379395 1228.385864 1229.97876 1230.730225 1233.270142 1235.376221 1235.521729 1232.284546 1229.991943 1231.054932 1239.035889 1250.30249 1260.74231 1270.64563 1279.857666 1283.947998 1287.956421 1293.167725 1295.517944 1297.200806 1297.88623 1298.427246 1298.39856 1297.81897 1296.880371 1295.324097 1292.748657 1284.397827 1279.006958 1275.577271 1271.088501 1267.377441 1265.199585 1260.085693 1255.25354 1254.939575 1260.921997 1261.043091 1263.160278 1262.641235 1264.237549 1266.962891 1267.903442 1271.128052 1274.943359 1278.384766 1280.894165 1283.818726 1285.293579 1284.395508 1279.344849 1268.167847 1259.601807 1254.582153 1257.803955 1265.774536 1272.096436 1278.784912 1282.971436 1281.411987 1287.652222 1293.382568 1296.904785 1297.389526 1297.775269 1297.410889 1297.361816 1296.946289 1296.493164 1295.961426 1294.332764 1291.093018 1284.107544 1277.969482 1272.018921 1271.818726 1272.936035 1272.551025 1270.983154 1270.122314 1265.980103 1263.150391 1260.344727 1254.399048 1248.546021 1241.560547 1232.245483 1224.039917 1220.876465 1221.525757 1221.525879 1217.546875 1211.787476 1209.995728 1196.668213 1179.865845 1178.05835 1183.435669 1183.578491 1181.432495 1184.131958 1187.023682 1186.965332 1180.000366 1173.324341 1164.758911 1156.506592 1147.044067 1144.197998 1143.455322 1144.133179 1146.64917 1145.507568 1142.004639 1137.502563 1133.75 1132.182373 1130.922241 1129.598633 1128.129028 1126.578369 1124.883911 1122.595215 1121.885742 1120.542847 1119.461304 1118.558472 1117.840332 1117.138428 1116.316162 1115.475342 1114.59436 1113.788818 1112.906128 1111.747437 1110.551025 1110.064453 1110.046875 1110.023193 1109.859863 +1320.737183 1317.854492 1324.82312 1330.297974 1330.825684 1329.424683 1328.843262 1331.5625 1334.307007 1336.216797 1337.548828 1338.572998 1338.949951 1337.954224 1335.31311 1331.162598 1329.11731 1323.886963 1310.144775 1286.782471 1269.030151 1252.99292 1240.127563 1224.362915 1213.351318 1203.103882 1191.029297 1180.743286 1172.089966 1162.133301 1157.5177 1155.265015 1153.562744 1153.156616 1165.391602 1184.619263 1206.690063 1229.789185 1253.408569 1279.261841 1306.998657 1300.40979 1292.894409 1290.418457 1293.694946 1296.055298 1296.242676 1297.182739 1297.363403 1295.984497 1292.730225 1283.452637 1277.725098 1271.394043 1269.302979 1271.331665 1270.983032 1267.930176 1260.541016 1253.614868 1235.479126 1235.670044 1244.285522 1250.317749 1251.759277 1250.350098 1246.91333 1244.827515 1243.709717 1242.391846 1240.766479 1238.693481 1236.303711 1234.165649 1232.133301 1231.630493 1234.475342 1235.591553 1235.088989 1234.411255 1234.296631 1233.683472 1232.337158 1231.752808 1232.005981 1233.093628 1233.365723 1233.439453 1232.557739 1231.170532 1228.959595 1226.306152 1223.417358 1220.711792 1218.805054 1221.370728 1222.505737 1224.167358 1226.140503 1227.765747 1228.94043 1231.141113 1235.112427 1240.362061 1245.095703 1246.972412 1247.963257 1252.46167 1256.758667 1269.065918 1269.398682 1269.794067 1270.65686 1271.697876 1272.446899 1272.476562 1271.881592 1270.909668 1269.268433 1268.279541 1269.511963 1269.550903 1268.060059 1268.680176 1270.0354 1270.776245 1271.116333 1271.099854 1270.5271 1269.899658 1269.781982 1269.415405 1268.745605 1264.213989 1260.705933 1258.220581 1261.355835 1268.673584 1269.985352 1269.666138 1268.147095 1268.032104 1269.738647 1270.866943 1271.388428 1271.203857 1271.514404 1273.592773 1275.30481 1276.419678 1275.437012 1273.775635 1271.877319 1268.985596 1260.372437 1258.82666 1261.982178 1263.661011 1263.606934 1263.487305 1264.842041 1267.983887 1269.878174 1270.342651 1267.006958 1260.366455 1256.188232 1253.722778 1251.808716 1249.499146 1247.468018 1246.011475 1244.477905 1244.438721 1242.939453 1240.836792 1238.429688 1235.87439 1233.434692 1230.979858 1226.811157 1230.763184 1233.052002 1234.328857 1235.164185 1235.569336 1235.561035 1234.949585 1234.247925 1233.83313 1233.763306 1233.999756 1234.663574 1235.800659 1236.837158 1237.82605 1238.422241 1238.022827 1236.897949 1235.727051 1235.018921 1234.63623 1237.568848 1243.350464 1247.151489 1250.72937 1254.795776 1257.526855 1257.919922 1258.294067 1258.290894 1258.132202 1257.779907 1256.794312 1254.431641 1251.603027 1248.987793 1246.399658 1243.930054 1242.453735 1241.052979 1239.357666 1237.286987 1235.234497 1232.916016 1231.250122 1230.149292 1229.012573 1227.822632 1226.422852 1225.042969 1224.01416 1223.031006 1221.48291 1219.607544 1219.92334 1219.7323 1217.442261 1216.052368 1215.521606 1215.461548 1216.039307 1217.122681 1219.065063 1220.420776 1221.952515 1222.849854 1223.657227 1223.52832 1221.682007 1219.178589 1216.234619 1213.114014 1209.596436 1207.659424 1207.351807 1207.412964 1207.438477 1207.421753 1206.968994 1206.790771 1207.048584 1209.63208 1213.000122 1217.381104 1220.417725 1221.363037 1222.220703 1223.010498 1223.476807 1223.430542 1222.876587 1221.485962 1219.863037 1221.794312 1222.176025 1222.120483 1221.561646 1220.472168 1219.233643 1217.265991 1214.713135 1211.858154 1208.892822 1203.022949 1209.393677 1209.750732 1209.756714 1210.268555 1210.214966 1210.213379 1210.250488 1210.191406 1209.894775 1209.218872 1208.94751 1209.062744 1208.78125 1208.437256 1207.775391 1207.193726 1206.240356 1205.244141 1204.188721 1202.604492 1199.435669 1196.540039 1195.473389 1196.439819 1196.357544 1196.180542 1196.131836 1196.126099 1196.124756 1195.958374 1195.702515 1195.389771 1194.640259 1193.766968 1192.818237 1191.853271 1191.02771 1190.16748 1189.358398 1188.542114 1187.782471 1187.203735 1186.698608 1186.388794 1186.104126 1185.761353 1185.286255 1184.814087 1184.315308 1183.768188 1183.099854 1182.35498 1181.898071 1181.642456 1181.43335 1181.203979 1180.776489 1180.312256 1179.764282 1179.23291 1178.447388 1177.515137 1176.540894 1175.581665 1174.704224 1173.948486 1173.440186 1173.036987 1172.453857 1171.786987 1171.140259 1170.688354 1170.016968 1169.604126 1169.250977 1168.950073 1168.644043 1168.252197 1167.795776 1167.444946 1167.188599 1167.427612 1167.824097 1168.682739 1169.892578 1170.91687 1171.044189 1170.843628 1170.908203 1171.202271 1171.492188 1171.536743 1171.7146 1171.815796 1172.205811 1172.323364 1172.123291 1171.889404 1171.711426 1171.430908 1170.945801 1170.449707 1170.431885 1170.740967 1171.105469 1171.36499 1171.371826 1171.067383 1170.556274 1171.060303 1171.720215 1172.014771 1172.336548 1172.606567 1173.143066 1173.504517 1173.68457 1173.552856 1173.081421 1172.41272 1171.230591 1170.959473 1170.995117 1170.951538 1171.225952 1172.756348 1173.431396 1173.839844 1173.87085 1173.695679 1173.19165 1172.926514 1173.078125 1173.011719 1172.887573 1172.436279 1171.973511 1171.37561 1170.33374 1170.143188 1169.106567 1166.655273 1166.368652 1166.777832 1167.312256 1167.856445 1168.489258 1168.773926 1169.167236 1169.652832 1170.438721 1171.745972 1172.911377 1174.302979 1175.591553 1176.856812 1178.477417 1180.072144 1181.193115 1182.180908 1192.453857 1198.178101 1200.748169 1201.700439 1202.987915 1205.76355 1207.106201 1207.236572 1206.773315 1205.696289 1205.775269 1205.5177 1201.733643 1197.334229 1195.282837 1197.171631 1195.160156 1196.983398 1200.949219 1204.037354 1205.222412 1206.408569 1207.002319 1207.901855 1212.124268 1215.787231 1218.641479 1221.519043 1224.294312 1226.735718 1229.275513 1231.505127 1232.347412 1230.167603 1228.543823 1230.94519 1237.072998 1244.441162 1253.150269 1264.638916 1274.884888 1282.014893 1285.485596 1291.149048 1294.781616 1296.639038 1297.671997 1297.943604 1298.152344 1298.016113 1297.503174 1296.460938 1294.636353 1289.310425 1282.161987 1279.11084 1277.345703 1274.39978 1272.437134 1270.353638 1268.481201 1269.30603 1269.462402 1269.739746 1269.876831 1269.26062 1267.598389 1266.322876 1266.419312 1270.574585 1275.350098 1279.326782 1283.010254 1286.588135 1288.98584 1288.190186 1284.310059 1274.979492 1264.449097 1254.90564 1255.096802 1253.79834 1263.470581 1266.953491 1270.169678 1274.069824 1279.567749 1287.921509 1294.055176 1295.942261 1297.265625 1297.874878 1297.758911 1297.604614 1297.316772 1296.55481 1295.154419 1293.132202 1287.288208 1281.996948 1280.842529 1279.597412 1277.756104 1276.015869 1274.770752 1273.303101 1271.33313 1269.984619 1268.591553 1261.63208 1254.015747 1243.711426 1232.059692 1230.548706 1228.112793 1225.58606 1220.817505 1217.600586 1209.661621 1205.21167 1190.835205 1185.131348 1194.598999 1198.870239 1197.367676 1195.244507 1197.388062 1197.759521 1196.626099 1187.643066 1176.717407 1166.742798 1158.290894 1149.758301 1145.526001 1142.244263 1140.971436 1140.610718 1139.964111 1138.699829 1136.334351 1133.69751 1132.033813 1131.236816 1130.34021 1129.465576 1128.268188 1126.333008 1124.319214 1122.389648 1121.083496 1120.134644 1119.287598 1118.571533 1117.990967 1117.110596 1116.22168 1115.251343 1113.967896 1112.844482 1111.832275 1110.491089 1110.046875 1110.023804 1109.693481 1109.345581 +1325.92688 1324.883179 1327.417236 1332.149048 1338.681274 1335.685181 1331.61438 1333.562866 1336.116211 1338.449341 1339.776245 1340.700928 1340.9021 1339.846924 1337.961304 1335.707275 1333.894653 1331.167603 1319.767944 1295.578979 1273.412231 1258.829346 1244.944336 1230.698608 1218.549927 1207.478394 1193.202759 1180.691406 1172.712646 1162.029419 1157.506592 1156.244507 1154.192139 1153.968628 1164.483154 1180.937622 1203.02771 1227.44873 1254.911987 1279.986206 1306.965332 1306.255249 1296.437012 1292.837158 1297.115601 1300.200562 1301.983887 1302.443481 1301.544189 1298.967896 1294.318115 1287.881958 1281.206055 1276.647217 1273.892334 1272.490723 1270.613403 1264.214355 1255.874268 1246.429443 1232.330688 1239.526611 1247.877319 1255.172363 1255.844482 1253.869507 1250.721558 1248.156494 1246.594849 1245.037598 1243.256226 1240.928467 1238.456421 1235.635132 1232.063721 1233.865723 1236.623169 1238.154785 1237.837769 1236.822998 1235.923218 1234.720947 1233.306885 1231.922119 1232.042725 1233.168335 1233.653809 1233.758301 1233.153564 1231.980591 1229.105469 1225.374512 1221.783325 1219.113281 1220.861328 1222.889526 1224.567871 1226.145874 1227.83728 1229.560303 1231.059814 1231.972412 1235.324707 1241.461914 1245.412231 1248.258667 1251.481689 1255.089722 1255.694336 1265.217163 1269.620972 1271.143311 1272.407471 1273.407837 1273.959839 1273.847656 1273.283325 1272.16687 1270.600464 1269.637817 1270.500488 1270.318237 1269.256226 1269.301392 1270.690063 1271.630737 1272.072632 1272.092896 1271.81543 1271.310913 1270.490723 1269.366699 1267.727783 1265.995728 1266.94873 1264.150391 1261.795532 1268.93396 1270.584229 1270.888306 1269.515381 1268.492188 1271.019653 1272.79834 1273.668701 1274.244751 1274.847046 1275.714233 1276.838257 1279.538574 1278.56665 1276.368896 1273.241699 1269.515015 1261.650146 1265.303345 1267.901489 1267.263306 1266.505249 1266.223877 1266.384888 1268.194458 1270.82251 1271.198364 1269.182983 1262.825928 1257.033447 1254.779785 1253.932007 1252.094482 1249.793823 1247.953247 1246.834595 1245.671021 1243.935181 1241.671753 1239.046509 1236.659546 1234.545898 1232.074951 1227.626587 1231.255615 1233.688721 1234.96582 1236.285767 1237.261108 1237.512573 1237.161377 1236.804565 1236.460205 1236.22998 1236.238159 1236.769653 1237.682007 1238.937134 1240.289795 1241.246826 1240.978027 1239.584595 1237.63623 1236.286011 1235.510986 1237.39502 1243.653687 1247.660034 1251.306885 1255.223511 1257.884033 1258.418579 1258.490967 1258.48877 1258.213379 1257.758301 1256.88623 1254.579712 1251.816772 1249.00354 1246.159912 1244.06897 1242.529785 1241.293335 1239.838501 1237.875488 1235.869263 1233.878418 1232.702271 1231.499878 1230.176392 1228.849365 1227.4729 1226.193115 1225.080322 1223.924805 1222.490356 1221.094727 1221.145264 1220.393188 1218.745972 1217.435425 1216.766235 1216.594971 1216.983154 1217.539673 1218.22937 1219.576294 1220.672974 1223.461914 1226.022217 1226.801025 1224.701904 1221.665039 1218.430298 1215.78418 1212.75415 1210.404663 1209.150024 1208.81543 1208.921631 1208.603027 1207.954834 1206.985229 1206.900269 1208.37854 1212.357422 1216.990356 1220.484619 1221.921387 1223.000854 1223.791138 1224.277344 1224.259277 1223.83667 1222.944824 1222.470215 1222.963623 1223.109619 1222.902588 1222.378052 1221.478882 1220.550781 1218.82251 1215.40332 1210.915283 1205.573608 1210.667603 1212.227417 1212.39856 1212.16394 1211.900146 1211.686646 1211.674316 1211.52002 1211.310913 1210.908081 1210.454712 1209.97229 1209.599243 1209.062378 1208.501221 1207.784912 1207.417114 1206.495239 1205.418213 1204.44397 1202.600952 1198.482544 1195.53894 1196.212646 1196.968384 1197.066162 1196.910278 1196.838623 1196.772095 1196.749146 1196.447266 1196.293335 1195.905151 1195.266113 1194.483521 1193.530518 1192.513916 1191.692871 1190.911499 1190.15918 1189.568604 1188.912842 1188.269531 1187.624512 1187.055664 1186.582886 1186.068359 1185.45752 1184.714844 1183.907104 1183.228516 1182.572998 1182.477295 1182.42749 1182.417603 1182.392212 1182.042725 1181.775879 1181.492188 1181.050903 1180.538086 1179.643921 1178.328247 1176.906006 1175.517944 1174.360474 1173.484619 1172.912476 1172.512207 1171.922852 1171.256104 1170.889038 1170.260132 1169.948242 1169.763672 1169.662598 1169.596191 1169.520264 1169.224731 1168.836914 1168.602783 1169.243286 1170.334961 1168.910889 1168.884766 1170.116943 1171.200195 1171.426025 1171.410278 1171.595581 1171.706055 1171.918457 1172.135132 1172.379395 1172.540771 1172.675293 1172.69458 1172.614868 1172.53479 1172.28833 1171.93335 1171.471191 1171.134399 1171.169434 1171.472412 1171.862549 1172.085571 1172.02478 1171.771362 1171.197754 1170.893433 1171.457397 1172.375 1172.879883 1173.385498 1173.780396 1174.098999 1174.197632 1173.905273 1173.406982 1172.580811 1171.310669 1170.945679 1171.168091 1171.494629 1171.268311 1172.87793 1173.858643 1174.264404 1174.404175 1174.318604 1174.141602 1173.939941 1173.791992 1173.629395 1173.279419 1172.69397 1171.806641 1170.956055 1170.594116 1171.317993 1171.189575 1169.447998 1167.65332 1167.295166 1167.11377 1167.723511 1168.278076 1168.5448 1168.857666 1169.454956 1170.201294 1170.998291 1172.231079 1173.418579 1174.326538 1175.235596 1176.621582 1178.101318 1179.663208 1181.718872 1187.668335 1194.5448 1196.846558 1196.447388 1196.417603 1199.101685 1200.275879 1200.455078 1200.258667 1200.171143 1200.014648 1200.071655 1198.665527 1196.724243 1194.07605 1194.70813 1195.636841 1197.517822 1199.248901 1201.287354 1202.455078 1203.753296 1204.640503 1205.073486 1207.840454 1210.407104 1213.307251 1216.213623 1220.115723 1222.782715 1225.249634 1227.064087 1227.358765 1226.096436 1225.70813 1228.928589 1232.468018 1235.675781 1243.230713 1252.049683 1262.914429 1273.283936 1280.162964 1284.14624 1290.129883 1293.662109 1295.380981 1296.535156 1297.52124 1297.977417 1297.938232 1297.36499 1296.018311 1293.567749 1289.123291 1285.59082 1284.116333 1282.495117 1280.606689 1278.845825 1276.686401 1275.428833 1274.123291 1273.572021 1272.768555 1271.894653 1270.205566 1268.512451 1266.919434 1268.824341 1275.930908 1281.095459 1285.531982 1290.189453 1293.104614 1293.019287 1288.252319 1280.088135 1268.907227 1258.962402 1270.505981 1272.63916 1270.438721 1268.211182 1267.384033 1266.976196 1271.739136 1279.361328 1285.44873 1289.814575 1293.298706 1296.174805 1297.39624 1297.785767 1297.742798 1297.164062 1295.92749 1293.771606 1291.085938 1288.854614 1286.817749 1284.400024 1281.471924 1278.738037 1277.871216 1276.662964 1275.583496 1273.678223 1271.605591 1267.474976 1258.738403 1245.261963 1241.300293 1237.968872 1233.902222 1229.396606 1223.581055 1219.591919 1209.925171 1208.290039 1201.78186 1197.383301 1205.888428 1210.655884 1205.354004 1199.66333 1199.220703 1197.458862 1192.296509 1185.913208 1171.859741 1164.64209 1157.994873 1150.5896 1145.259033 1139.9375 1135.907837 1135.699585 1135.20459 1134.708984 1133.735962 1132.730713 1132.365234 1131.855591 1131.474731 1131.243408 1130.228027 1128.889771 1126.221436 1123.680786 1121.786743 1120.647827 1120.068481 1119.532349 1118.8302 1118.061768 1117.022583 1115.698608 1114.474731 1113.109497 1111.569702 1110.212524 1110.046753 1110.04834 1110.050537 1109.363037 +1329.537354 1327.630005 1329.365723 1332.950806 1341.265137 1341.25415 1336.38208 1336.516479 1338.053345 1340.643555 1342.067017 1342.292603 1342.512329 1342.095825 1341.874268 1339.861938 1335.217041 1330.210693 1319.004028 1296.07605 1276.296875 1261.992432 1247.867432 1233.337158 1221.973145 1210.48291 1193.065063 1180.272583 1172.12439 1161.386108 1157.835938 1158.828369 1158.675049 1154.787842 1164.888794 1182.749634 1207.892578 1228.220337 1258.457153 1282.944702 1309.306152 1314.464478 1301.067627 1299.076172 1301.27417 1304.383545 1306.235718 1306.313721 1305.161011 1301.829712 1297.43396 1292.712891 1282.153198 1279.061279 1276.156982 1272.328979 1267.665771 1255.228027 1257.820068 1249.727661 1235.17334 1244.531128 1253.241455 1258.99939 1260.167236 1256.978271 1253.788208 1251.20813 1249.277832 1247.574829 1245.521606 1243.595093 1241.186157 1238.604736 1236.358643 1238.203369 1240.687622 1241.524292 1241.019531 1239.40918 1237.449341 1235.464722 1233.661987 1231.997681 1231.970215 1233.304077 1233.94165 1233.985718 1233.507812 1232.319702 1229.098389 1225.115234 1221.269165 1221.077026 1222.609985 1224.520752 1226.50415 1228.19397 1229.822144 1231.539673 1233.572021 1235.541992 1238.981201 1241.837646 1244.488892 1248.715698 1252.704102 1257.091919 1260.976318 1264.995972 1268.713501 1272.271606 1274.070068 1275.297119 1275.760254 1275.460327 1274.788696 1273.858643 1272.789062 1272.135376 1271.995972 1271.624268 1271.258789 1271.315552 1271.922974 1272.577881 1273.036743 1273.103516 1272.912109 1272.293945 1271.129883 1268.744385 1268.430542 1268.622192 1269.978638 1269.38916 1265.677246 1267.975952 1270.795288 1272.016357 1271.897217 1272.120972 1273.680664 1275.293335 1276.672485 1277.140137 1277.503174 1277.885864 1278.32605 1281.312744 1281.208374 1278.38855 1274.208252 1268.92041 1266.829712 1270.750732 1271.994385 1270.325928 1269.372314 1269.646118 1268.481689 1269.329956 1272.37915 1272.230957 1269.667603 1265.600342 1260.068237 1257.962402 1256.688354 1254.489868 1251.915527 1249.99585 1248.256958 1246.474609 1244.423828 1241.771484 1239.336304 1237.063354 1234.957397 1232.685547 1228.846802 1231.428955 1234.066772 1235.977051 1237.904297 1239.431885 1240.171021 1240.060059 1239.710938 1239.24353 1238.74939 1238.515137 1238.808838 1239.615112 1240.908447 1242.569702 1243.89624 1243.80603 1242.38208 1239.819092 1237.715332 1236.522827 1237.192871 1243.624878 1247.537354 1251.362793 1255.013794 1257.825439 1258.557251 1258.796387 1258.629639 1258.252319 1257.676392 1256.525757 1254.381226 1251.818848 1249.094482 1246.707886 1244.901611 1243.100586 1241.731689 1240.244141 1238.458618 1236.576538 1235.037598 1233.713501 1232.233887 1230.729858 1229.790039 1228.624634 1227.382324 1226.025024 1224.811279 1223.72522 1222.718262 1221.786987 1220.713989 1219.369385 1218.363892 1218.047241 1217.808105 1217.901733 1218.133179 1218.34021 1218.481445 1219.283325 1222.33374 1228.525879 1230.762207 1228.491821 1224.866943 1220.618408 1218.550171 1216.067871 1213.986206 1212.72937 1211.836914 1211.343384 1210.765259 1209.837646 1208.386841 1206.947266 1207.146606 1211.912842 1217.59314 1220.37793 1222.351685 1223.703979 1224.664917 1225.197998 1225.255615 1224.921387 1224.418945 1224.130737 1224.237183 1224.178101 1223.835571 1223.188843 1222.348755 1221.44397 1220.103394 1215.561401 1208.622681 1208.941772 1214.87915 1215.780029 1215.096191 1214.286255 1213.596558 1213.175537 1212.995605 1212.627563 1212.223633 1211.819336 1211.239258 1210.609497 1209.888184 1209.242188 1208.525269 1207.833374 1207.595459 1206.664673 1205.571411 1204.421631 1202.624756 1199.571533 1197.046631 1197.409058 1197.755981 1197.815918 1197.728027 1197.510132 1197.432495 1197.247681 1196.983032 1196.689941 1196.266724 1195.707275 1194.875732 1193.845825 1192.970337 1192.321777 1191.658569 1191.076416 1190.564819 1189.893677 1189.141235 1188.367798 1187.662964 1186.955078 1186.238159 1185.429443 1184.364624 1183.249512 1182.764771 1182.693726 1183.081543 1183.272217 1183.265991 1183.066162 1182.703491 1182.513306 1182.545288 1182.359253 1182.096191 1180.935303 1179.105713 1177.059326 1175.289062 1173.850464 1172.879517 1172.312378 1172.002563 1171.503296 1171.003662 1170.395996 1170.114136 1170.105103 1169.963257 1170.115601 1170.44458 1170.369507 1170.201782 1169.793945 1169.71814 1170.780396 1171.179321 1171.384155 1170.322876 1169.677612 1171.029541 1171.546509 1171.837769 1171.962891 1172.208496 1172.430176 1172.647339 1172.897827 1173.126343 1173.193359 1173.213257 1173.122559 1173.059204 1172.887085 1172.516602 1172.183594 1172.059326 1172.121338 1172.275757 1172.543335 1172.71814 1172.740967 1172.450806 1171.835938 1171.030518 1170.997925 1172.626831 1173.41272 1173.973145 1174.487671 1174.694702 1174.718994 1174.425781 1173.81897 1172.830688 1171.860596 1171.122192 1171.105347 1171.922485 1172.664429 1173.425659 1174.098999 1174.719727 1174.94043 1174.947632 1174.869629 1174.637085 1174.497437 1174.198242 1173.643921 1172.863647 1171.074463 1171.216797 1171.546509 1171.775635 1171.591797 1170.657104 1169.05127 1167.938354 1167.645508 1167.635376 1168.151978 1168.522705 1168.831177 1169.184326 1169.694214 1170.284302 1170.957153 1171.955322 1172.903564 1173.581787 1174.939331 1176.491821 1178.40979 1180.710449 1182.738037 1187.453247 1189.734863 1188.862427 1188.722168 1191.953369 1193.378174 1193.445801 1193.692871 1194.380615 1194.978027 1195.603271 1195.401733 1194.480957 1193.088013 1194.136353 1196.203491 1197.166016 1197.651245 1198.912476 1199.786743 1201.034668 1202.358398 1203.428467 1205.928955 1206.804199 1207.764893 1209.918091 1215.713257 1219.628296 1221.85083 1222.719971 1223.116821 1222.094238 1220.043945 1225.468262 1229.348999 1230.759521 1235.239258 1240.607788 1252.127808 1263.168823 1269.590698 1278.576904 1281.149292 1286.139282 1291.091797 1293.524658 1296.431519 1297.79834 1298.440063 1298.346436 1297.526123 1295.895386 1294.087891 1293.354004 1292.142822 1289.698364 1286.814453 1284.537354 1282.738647 1281.124634 1279.264526 1277.782593 1276.381226 1274.871582 1272.618042 1270.553589 1268.457153 1268.329834 1276.62793 1283.518433 1289.332275 1293.648804 1295.407593 1295.750977 1293.239136 1282.328003 1272.30957 1266.715454 1277.44165 1282.9021 1281.14563 1278.276855 1274.973389 1271.17041 1267.835938 1273.75415 1278.651245 1281.604614 1287.119873 1292.761841 1296.042847 1297.445557 1297.889771 1297.692383 1296.976807 1295.634521 1294.095215 1293.804932 1292.370117 1289.054565 1285.097046 1282.080566 1281.725586 1279.694946 1279.348511 1277.13208 1273.84314 1270.091309 1264.3302 1255.759644 1252.993164 1247.71814 1241.018677 1232.137207 1227.341919 1222.759399 1218.52771 1215.335327 1209.517944 1207.377441 1210.865112 1209.69519 1197.423584 1192.838623 1189.352417 1184.570679 1179.331543 1170.763672 1163.034058 1157.193604 1151.514404 1146.131836 1141.035034 1136.610107 1134.47583 1133.933472 1133.482788 1133.46167 1132.817261 1132.86499 1133.222656 1132.938477 1133.035645 1133.095337 1132.904175 1132.421875 1129.2229 1125.074341 1122.145752 1121.335205 1120.968384 1120.512085 1119.880981 1118.919067 1117.751221 1116.460693 1115.181152 1113.842163 1112.017456 1110.735352 1109.956665 1110.04126 1110.045532 1110.050781 +1332.272705 1330.961548 1332.348511 1334.822266 1337.931885 1339.180176 1338.62915 1339.210205 1338.837036 1339.850586 1342.881958 1343.443359 1343.494019 1343.375732 1343.095581 1342.348877 1329.842041 1317.379395 1304.062378 1288.319214 1276.553711 1267.858887 1252.732422 1238.050781 1225.151001 1212.238647 1193.54541 1181.084106 1171.413696 1159.192383 1158.345703 1159.071167 1159.161377 1154.971313 1165.222778 1187.414307 1208.959595 1229.996216 1257.759277 1284.932129 1312.350952 1317.727905 1303.963257 1302.670532 1305.849731 1306.755615 1307.386475 1307.392456 1306.664429 1305.039062 1298.992188 1292.804077 1285.557739 1282.632935 1279.018555 1269.389526 1267.720215 1270.562988 1264.953125 1250.489746 1240.796997 1248.366333 1255.587158 1263.055176 1266.711426 1260.213623 1255.407471 1253.432983 1251.640503 1249.697754 1247.419312 1245.453125 1242.765381 1241.838623 1241.485352 1243.433228 1244.219604 1244.526245 1244.012451 1242.015991 1239.348145 1236.397827 1233.800781 1231.959106 1232.434814 1233.825806 1234.678833 1234.378174 1233.307129 1231.509644 1229.465088 1226.10376 1222.436523 1223.042236 1224.731812 1226.6427 1228.103882 1229.877686 1231.885864 1233.70874 1236.106812 1238.847412 1242.755615 1245.654541 1246.320923 1249.520752 1253.164673 1256.007935 1262.073608 1268.351929 1271.010498 1273.5802 1275.87439 1277.591797 1277.86438 1277.239624 1276.459106 1275.58606 1274.656006 1273.990967 1273.575439 1273.380493 1273.03125 1273.038574 1273.35437 1273.758423 1274.087036 1274.315796 1273.995972 1273.406494 1272.179932 1270.063232 1270.401245 1271.297729 1271.687134 1271.059814 1269.728271 1268.204468 1271.147095 1273.737427 1275.084961 1275.911865 1277.289307 1278.12915 1279.77771 1280.344849 1279.747925 1279.391357 1279.446655 1282.132935 1282.13501 1281.131226 1275.618286 1268.622314 1270.628418 1274.503296 1277.13208 1277.824585 1277.632324 1276.2229 1275.700928 1275.276489 1275.039551 1273.6604 1270.45166 1267.723145 1268.421509 1264.59375 1259.898682 1256.17395 1253.580566 1251.492798 1249.524658 1246.905518 1244.013184 1241.932861 1239.458618 1236.82251 1234.576538 1232.567383 1229.077026 1231.343262 1234.192993 1237.092651 1239.86084 1241.952393 1243.135986 1243.13501 1242.619873 1241.673584 1240.776978 1240.358154 1240.567017 1241.432617 1242.521973 1243.750977 1244.838623 1244.985352 1244.171021 1241.779175 1239.274658 1237.542236 1236.850952 1242.351196 1247.064819 1251.452637 1255.65686 1257.935913 1258.662476 1258.745239 1258.497681 1258.028076 1257.199219 1256.039795 1253.878296 1251.56897 1249.30603 1247.31189 1245.428589 1243.866699 1242.289307 1240.57605 1238.953247 1237.409546 1235.834717 1234.184204 1232.508423 1231.112793 1230.920532 1229.875854 1228.250488 1227.024658 1225.887329 1224.707275 1223.480347 1222.22583 1220.847534 1219.509644 1219.067505 1219.380615 1219.2948 1219.300537 1219.051514 1218.850342 1218.595459 1218.421265 1220.652344 1227.967407 1233.13562 1232.395142 1229.491089 1225.628662 1221.864624 1218.807739 1217.544556 1216.558105 1215.135254 1214.36438 1213.25 1211.828003 1210.100342 1207.909302 1206.86499 1210.659058 1219.407959 1221.536011 1223.117554 1224.655151 1225.716431 1226.180298 1226.292236 1226.066162 1225.721924 1225.513306 1225.459473 1225.245361 1224.803711 1224.09021 1223.098633 1221.924683 1220.270264 1217.328979 1214.871704 1218.718628 1220.3125 1218.736816 1217.317505 1216.048218 1215.160645 1214.531372 1214.117065 1213.685181 1213.12439 1212.421387 1211.64917 1210.849976 1209.95752 1209.210571 1208.475952 1208.051514 1207.547485 1206.538696 1205.40564 1204.460693 1202.842896 1200.939575 1199.548218 1198.887085 1198.694702 1198.664062 1198.463745 1198.222046 1198.049683 1197.785645 1197.368408 1196.999878 1196.500244 1195.970337 1195.054565 1194.038574 1193.398438 1192.94519 1192.595947 1192.13916 1191.585205 1190.817871 1189.94873 1189.040771 1188.325195 1187.501221 1186.629272 1185.790649 1184.576904 1183.723877 1182.983154 1183.273193 1183.796265 1183.914917 1183.887329 1183.654053 1183.39624 1183.322754 1183.352661 1183.467407 1183.199585 1182.142578 1179.77478 1177.074341 1174.771851 1173.135498 1172.068115 1171.723755 1171.179443 1170.905273 1170.65686 1170.437378 1170.373779 1170.302124 1170.52356 1171.050659 1171.219482 1171.168823 1171.078857 1170.903564 1170.826172 1170.858398 1171.062622 1171.794067 1171.791626 1170.863525 1170.610596 1171.438232 1171.817627 1172.117554 1172.505249 1172.744629 1173.119507 1173.334106 1173.575195 1173.766357 1173.766113 1173.71875 1173.660278 1173.386719 1173.264648 1173.164795 1173.022705 1173.011475 1173.184204 1173.271851 1173.478271 1173.380005 1173.181274 1172.55481 1171.832764 1172.085938 1173.119263 1174.032593 1174.615234 1175.083008 1175.417847 1175.292847 1174.990723 1174.221436 1173.402344 1172.344849 1171.185303 1171.015869 1172.279297 1173.131958 1173.939209 1174.573242 1175.113525 1175.327026 1175.486694 1175.365479 1175.229858 1174.967529 1174.61145 1174.043579 1173.237061 1172.157471 1172.041626 1172.18042 1172.16272 1171.856934 1171.172119 1169.997559 1168.473633 1168.052856 1167.72522 1168.026855 1168.499512 1168.820312 1169.118774 1169.438721 1169.905151 1170.251587 1170.554321 1170.957275 1171.587524 1173.035034 1174.908569 1176.608887 1178.300415 1180.359497 1181.844604 1182.345825 1181.901978 1181.68689 1183.015991 1184.506836 1186.359985 1188.839844 1189.702271 1189.396484 1188.365234 1187.601685 1190.575195 1191.370972 1193.044556 1194.696411 1195.104248 1195.409424 1196.094238 1196.886475 1198.233154 1200.296631 1202.054443 1204.703125 1205.812866 1206.568237 1207.166992 1211.004761 1216.788208 1218.960938 1219.792114 1219.901978 1219.246826 1219.538086 1228.17749 1234.998413 1241.60083 1251.21167 1264.20459 1274.732178 1279.970459 1283.084106 1282.942749 1281.95105 1282.386719 1289.341919 1292.506714 1295.581909 1297.924438 1299.193848 1299.563354 1299.046387 1298.191772 1296.912842 1296.227905 1295.463867 1294.241699 1292.320557 1289.370728 1286.588989 1284.463745 1282.849976 1281.47168 1280.10083 1278.596802 1275.846436 1273.068115 1270.287964 1267.657227 1277.162109 1285.424927 1291.985352 1295.389038 1296.422485 1296.577393 1295.293091 1286.116577 1275.724854 1266.940308 1278.706177 1288.828003 1292.596802 1289.828979 1284.400513 1279.736084 1275.51123 1276.173462 1281.43457 1281.291626 1283.73645 1292.082275 1295.538696 1296.978271 1297.879761 1297.998901 1297.570801 1296.952759 1296.034058 1295.219604 1294.323364 1293.105591 1289.574219 1286.912231 1285.193237 1283.786499 1282.552368 1279.304321 1276.746094 1274.052002 1271.512939 1268.69519 1262.187256 1256.464966 1247.089478 1237.270874 1231.460083 1227.615356 1224.425293 1220.989868 1217.710693 1213.713623 1209.765381 1199.31958 1186.528076 1179.724243 1176.509277 1172.521973 1166.54187 1159.870605 1154.24646 1148.828735 1144.74292 1141.297485 1137.418579 1137.865723 1140.129761 1139.520264 1137.025879 1138.084351 1140.843018 1139.060425 1136.641724 1134.900024 1134.782593 1135.651978 1135.848999 1135.520142 1132.856812 1127.728271 1123.21875 1122.809448 1121.795288 1121.614136 1120.845703 1119.841675 1118.604004 1117.20752 1116.151855 1115.234375 1114.564941 1114.307129 1112.401733 1110.022583 1110.018677 1109.830444 +1336.010254 1335.573486 1336.210815 1337.846313 1339.369019 1341.097656 1341.790649 1341.168457 1337.107544 1335.712158 1342.555298 1343.869141 1345.983887 1344.595459 1336.711182 1319.337402 1307.733276 1293.21814 1281.834229 1274.286743 1269.637939 1265.769531 1257.779663 1241.096558 1229.155273 1212.877563 1195.916382 1183.680542 1170.124268 1158.177612 1158.674438 1159.052612 1159.202515 1154.765381 1165.539307 1188.557739 1209.358032 1231.613403 1255.877441 1284.01062 1310.837769 1315.848022 1305.063232 1305.561523 1308.223389 1308.723389 1308.507935 1307.809204 1306.716797 1305.60144 1297.057739 1290.989136 1288.132812 1284.4646 1280.885864 1271.130371 1272.809204 1271.927246 1258.735107 1246.22644 1246.098877 1250.859253 1256.751953 1266.198853 1270.529419 1265.001953 1258.494751 1256.147705 1253.942871 1251.832397 1249.318237 1246.950928 1244.196655 1243.608521 1244.970093 1245.618042 1246.11084 1246.329712 1245.6604 1244.105591 1240.503662 1237.258667 1233.317383 1232.032349 1234.028564 1235.583862 1235.934204 1235.194824 1232.033325 1231.627075 1230.479004 1228.531982 1224.398682 1224.704712 1226.737061 1228.931396 1229.980103 1230.89978 1233.405273 1235.869751 1238.197876 1240.572144 1243.275024 1246.43457 1249.156494 1251.899048 1253.676758 1255.405396 1261.515747 1268.910889 1271.84436 1274.682739 1277.694336 1279.881226 1279.897339 1279.099487 1278.346069 1277.166504 1276.032227 1275.403931 1274.990723 1274.757446 1274.6521 1274.594238 1274.731079 1275.130981 1275.292358 1275.304688 1275.220215 1274.853516 1274.12439 1273.635864 1273.576416 1273.949951 1273.758789 1273.323242 1272.187866 1271.850708 1273.965698 1276.011597 1277.617798 1279.281738 1280.29541 1280.252197 1281.61853 1282.257202 1281.682251 1280.571899 1280.665161 1282.873535 1282.999634 1281.962036 1278.143677 1270.568237 1273.886108 1278.181641 1281.419922 1282.010742 1282.071533 1281.686523 1280.7052 1278.877197 1277.817261 1275.581421 1272.377686 1270.991211 1270.884521 1268.531494 1262.509888 1257.860229 1254.617798 1253.197266 1251.637329 1248.471558 1245.511353 1242.695312 1239.760742 1236.210205 1233.261597 1231.20166 1228.795776 1231.446899 1235.231079 1238.562012 1241.735718 1244.145508 1244.868774 1244.915039 1244.437744 1243.22937 1242.070801 1241.455078 1241.728271 1242.820801 1243.997925 1244.479004 1245.2052 1245.437256 1244.848389 1243.100586 1240.448242 1238.491211 1237.495605 1242.472656 1247.022461 1251.775391 1255.3479 1258.048096 1258.592163 1258.622192 1258.289673 1257.697266 1256.78833 1255.541748 1253.439087 1251.304932 1249.349121 1247.575073 1246.129639 1244.501343 1242.725586 1241.06311 1239.650146 1238.388794 1236.843628 1234.760254 1232.084351 1232.184082 1232.476807 1230.908691 1229.150391 1228.002197 1226.878784 1225.612305 1224.218872 1222.629028 1220.868286 1219.493774 1220.181641 1220.702759 1220.712891 1220.125488 1220.326294 1219.894043 1219.217407 1218.893188 1219.04541 1224.330688 1229.766724 1232.374146 1233.145142 1231.583618 1227.088013 1221.760986 1220.916138 1219.129761 1218.682983 1217.935791 1216.424683 1214.275513 1212.248535 1210.041504 1207.68103 1211.683716 1220.145996 1222.600464 1224.447998 1225.876587 1226.793335 1227.21936 1227.380249 1227.296021 1226.904907 1226.735718 1226.738525 1226.412354 1225.886719 1224.97583 1223.746704 1222.216553 1220.095093 1218.926758 1220.166504 1221.11853 1221.141479 1219.73877 1218.381104 1217.38623 1216.519531 1215.829102 1215.180176 1214.430664 1213.639282 1212.763794 1211.759277 1210.759277 1209.789551 1208.998169 1208.350342 1207.775757 1207.082764 1205.985718 1205.264526 1204.536377 1203.162109 1201.972412 1200.855469 1200.207764 1199.632812 1199.466064 1199.169434 1198.884644 1198.650146 1198.276245 1197.720703 1197.194824 1196.612061 1195.901978 1195.011719 1194.285034 1193.938965 1193.758423 1193.594727 1193.244629 1192.521362 1191.704102 1190.714478 1189.844482 1188.91394 1188.148315 1187.25647 1186.366455 1185.239624 1183.966431 1183.217529 1183.946045 1184.403442 1184.645386 1184.509399 1184.450439 1184.235474 1184.115845 1184.043701 1183.921509 1183.553223 1182.651367 1179.925781 1176.707275 1174.065674 1172.54126 1171.640259 1171.054932 1171.036133 1171.0802 1171.046265 1170.917603 1170.932617 1170.798462 1171.158691 1171.713989 1171.931763 1172.001587 1172.036133 1171.963379 1171.895996 1171.558228 1171.197876 1172.348511 1172.633057 1172.230469 1171.115234 1171.257935 1171.708862 1172.173706 1172.641724 1173.078369 1173.455811 1173.716064 1174.046143 1174.174683 1174.260498 1174.394409 1174.324341 1174.221558 1174.175415 1174.039795 1173.929199 1173.947998 1174.04126 1174.191528 1174.221802 1174.148193 1173.87085 1173.567139 1173.557129 1173.88562 1174.435791 1174.818115 1175.411011 1175.874023 1176.117554 1176.09021 1175.65332 1175.005371 1174.200928 1173.081665 1171.349121 1171.294434 1172.770752 1173.845947 1174.457397 1175.088989 1175.4104 1175.771606 1175.828491 1175.838867 1175.607178 1175.347168 1175.055542 1174.562256 1173.844727 1173.226929 1172.793701 1172.599121 1172.330688 1172.015015 1171.312988 1170.151245 1169.035034 1167.94397 1167.93042 1168.152832 1168.587402 1169.560669 1170.435913 1170.845459 1170.553955 1170.344849 1170.664917 1170.850464 1170.869873 1171.720093 1173.486206 1174.790039 1176.255249 1177.611816 1178.592773 1179.039673 1179.064819 1179.362671 1180.116211 1180.904297 1182.168579 1184.901978 1185.989014 1183.613525 1182.741211 1183.53894 1187.630493 1189.197998 1190.606201 1192.059814 1192.706787 1193.217041 1193.78125 1194.454224 1196.349487 1198.978882 1201.13855 1204.428101 1205.969238 1207.780518 1209.142334 1211.492065 1214.621704 1216.749268 1217.409302 1217.708862 1218.141846 1219.853638 1229.871094 1237.036011 1246.504517 1255.614624 1266.376831 1271.735718 1277.062988 1281.648438 1285.730957 1292.76001 1294.288452 1292.700317 1292.468994 1295.715942 1298.569336 1300.171387 1301.218628 1301.014893 1300.298462 1299.365845 1298.43457 1297.645264 1296.463867 1294.956665 1292.883545 1289.983154 1287.568848 1285.652222 1284.222168 1283.02002 1281.744507 1279.186401 1276.777832 1273.259399 1270.879028 1276.848267 1284.965576 1292.394897 1295.896606 1296.459839 1297.122681 1296.315186 1290.621582 1280.796509 1270.040039 1273.17749 1286.989624 1296.353516 1296.20105 1293.412354 1288.354736 1282.863892 1279.317261 1281.281372 1284.50293 1290.476562 1293.862793 1295.151611 1296.375977 1297.371338 1297.884766 1297.896973 1297.552002 1297.057251 1296.685303 1295.968994 1294.537354 1292.46106 1290.851074 1288.883667 1286.906616 1283.889893 1280.228516 1279.458008 1278.216553 1275.544922 1271.594971 1266.164307 1261.169189 1254.53833 1244.974243 1237.676392 1231.969604 1226.109253 1222.92627 1220.736328 1211.630127 1202.979004 1189.484009 1177.24585 1169.187866 1165.324463 1160.013184 1156.317871 1152.607666 1147.798462 1143.64563 1140.978027 1139.959595 1140.921753 1143.269165 1147.435791 1148.316772 1144.648804 1143.919067 1149.144531 1150.000977 1147.045898 1145.120972 1142.672974 1140.700928 1138.962891 1137.095825 1134.1521 1130.191162 1126.522095 1124.359253 1123.344116 1122.856445 1121.798218 1120.686279 1119.341797 1118.107178 1117.179688 1116.802979 1117.429932 1121.521118 1119.528442 1113.987915 1110.36792 1109.366333 +1339.357056 1338.66333 1339.407471 1341.064697 1342.027466 1342.933228 1343.059082 1342.497681 1335.775757 1321.307251 1327.722778 1331.86792 1328.643921 1313.912842 1296.351929 1290.573486 1282.086182 1270.631714 1264.388306 1255.437622 1249.861694 1250.05127 1248.613525 1237.523804 1224.935059 1212.550415 1197.907837 1184.557007 1162.734131 1157.959839 1158.702393 1158.921143 1158.704224 1154.799072 1169.31543 1188.609497 1209.583008 1229.41687 1251.822876 1280.260254 1310.612427 1315.167114 1312.734497 1311.09668 1311.143188 1310.569336 1309.483643 1308.141357 1305.89502 1302.330933 1295.183472 1292.608643 1289.909302 1283.9646 1279.468018 1280.924927 1280.523193 1273.986694 1263.207642 1243.979858 1247.479614 1252.067993 1257.539551 1267.304321 1270.355347 1267.200317 1262.518066 1259.194824 1256.097534 1254.062012 1251.568604 1248.025269 1244.361084 1244.999268 1247.0 1247.588379 1247.695557 1247.301147 1246.188354 1244.234253 1241.750854 1239.126343 1236.460083 1234.789185 1237.106689 1238.456787 1237.947144 1236.623169 1234.947388 1234.214355 1232.98938 1232.63269 1227.813354 1226.169678 1229.255249 1231.627197 1232.610352 1232.483398 1234.817871 1237.656494 1240.336426 1243.128296 1245.279663 1248.031494 1251.560791 1254.980957 1256.413574 1255.601318 1257.102173 1266.412109 1271.634399 1275.887451 1279.590332 1281.24585 1281.434326 1280.769897 1279.706787 1278.411865 1277.203857 1276.537231 1276.236938 1276.050415 1275.884644 1275.996826 1276.149658 1276.421631 1276.548828 1276.514404 1276.42334 1276.319214 1276.183228 1276.42627 1276.956299 1277.253418 1276.793579 1275.835327 1275.378296 1275.908081 1277.546875 1278.248291 1278.722168 1281.294434 1282.011475 1281.960938 1282.880493 1283.474731 1283.192505 1282.579224 1282.515259 1283.916016 1283.911255 1283.278809 1281.880127 1272.708862 1277.141968 1280.359253 1282.769287 1283.707275 1283.8479 1283.526978 1282.579712 1281.140137 1279.517456 1277.512939 1275.338135 1273.397095 1271.852905 1269.197266 1263.509033 1257.437134 1255.753906 1255.940186 1254.843994 1250.512085 1246.665649 1243.493408 1239.536499 1236.000977 1232.351318 1229.619019 1230.509033 1232.380249 1236.257324 1239.971558 1242.832153 1244.854248 1245.817871 1246.158936 1245.68042 1244.180908 1242.636108 1242.083374 1242.397827 1243.44751 1244.506226 1245.247925 1245.617554 1245.616577 1245.467773 1244.349731 1241.927612 1239.34668 1238.251831 1242.338867 1247.362671 1252.398193 1256.655884 1258.507324 1258.511475 1258.485962 1258.008057 1257.04834 1256.35144 1254.931396 1253.000977 1250.828003 1248.805054 1247.103027 1245.776733 1244.275024 1242.703125 1241.39563 1240.332642 1239.4552 1238.153687 1236.180786 1234.436279 1233.782349 1232.685791 1231.201538 1230.183594 1229.006836 1227.758545 1226.558228 1225.259521 1223.854004 1222.077759 1220.739136 1221.432251 1222.03479 1222.142212 1221.743896 1221.495728 1220.924805 1219.884155 1219.017822 1218.771484 1221.556519 1225.79541 1228.807373 1231.152954 1232.637695 1232.15686 1227.752563 1223.543457 1221.991577 1221.506958 1220.70813 1219.266968 1216.756958 1214.701782 1213.38562 1214.031616 1219.623657 1222.01062 1224.190552 1226.086792 1227.334595 1228.132324 1228.515137 1228.543213 1228.356934 1228.051514 1227.94519 1228.020142 1227.67041 1227.042725 1225.986694 1224.410522 1222.385376 1219.56604 1220.072876 1221.467529 1222.075684 1221.806152 1220.477783 1219.11792 1218.092041 1217.624756 1217.045898 1216.161011 1215.067749 1213.903809 1212.794067 1211.570679 1210.327515 1209.327026 1208.2771 1207.595703 1207.063354 1206.219849 1205.66333 1205.155396 1204.53833 1203.437012 1202.732422 1201.862549 1201.164185 1200.479736 1200.280884 1199.89624 1199.565308 1199.227295 1198.769531 1197.996582 1197.314941 1196.339355 1195.373291 1194.816528 1194.644897 1194.777344 1194.779175 1194.638184 1194.3927 1193.505249 1192.52356 1191.52063 1190.58313 1189.73938 1188.894287 1188.015015 1187.179443 1186.198608 1185.344849 1184.748047 1184.775024 1185.141479 1185.23291 1185.231201 1185.122681 1184.956421 1184.673828 1184.49646 1184.211914 1183.675903 1182.616455 1179.31189 1175.773315 1173.154541 1172.163452 1172.000854 1171.816772 1171.7948 1171.938599 1171.830811 1171.822876 1171.729492 1171.810791 1172.122681 1172.561279 1172.769531 1172.78064 1172.978516 1172.923218 1172.998901 1173.076904 1173.222046 1173.532593 1173.797241 1173.434692 1172.862305 1171.695801 1171.880615 1172.285645 1172.763184 1173.295166 1173.718994 1174.093018 1174.404785 1174.606567 1174.911011 1175.071167 1175.1698 1175.156738 1175.012085 1174.917725 1174.845459 1174.834717 1174.939331 1175.086426 1175.095703 1175.017334 1174.829956 1174.755737 1174.8927 1175.156006 1175.570068 1175.951416 1176.335205 1176.670654 1177.041382 1177.033813 1176.741455 1176.035522 1175.344604 1174.395996 1173.632446 1173.534424 1174.075439 1174.727539 1175.200806 1175.668945 1176.014404 1176.199829 1176.206909 1176.154907 1175.869873 1175.700073 1175.337769 1175.015991 1174.512695 1173.911255 1173.400391 1173.122559 1172.632812 1171.972656 1171.366455 1170.395386 1169.411499 1168.213013 1168.1073 1168.470093 1169.84375 1171.296753 1171.737427 1171.824707 1171.619019 1171.472534 1171.338989 1171.245483 1171.280762 1171.280151 1172.378296 1173.417236 1174.228394 1175.14624 1175.77771 1176.364868 1176.922241 1177.604614 1178.492065 1179.578979 1181.115479 1182.998413 1183.115234 1183.149414 1184.067017 1185.323853 1186.511963 1187.387817 1188.397949 1189.672485 1190.784912 1191.777588 1192.97583 1194.487427 1196.65918 1198.816895 1200.835938 1204.973267 1207.330933 1208.957153 1210.124878 1211.533569 1213.155884 1214.606445 1215.622192 1216.68103 1218.457886 1222.1698 1229.03479 1237.011597 1244.665527 1250.419434 1256.798584 1261.534668 1266.671997 1274.269897 1280.326416 1289.616211 1295.565308 1295.283203 1295.489502 1297.278564 1299.517456 1301.634766 1303.027954 1302.906006 1302.134277 1301.339966 1300.369507 1299.231201 1298.063232 1296.84082 1294.921753 1292.324097 1290.000122 1288.197998 1286.752319 1285.409668 1283.788574 1282.105713 1280.314087 1276.985474 1276.444946 1279.619629 1285.077148 1291.873901 1295.453613 1296.902954 1297.10022 1296.605835 1293.134277 1286.223022 1277.823242 1266.408203 1278.938354 1290.072876 1296.137207 1296.218628 1295.258911 1292.384521 1285.357788 1279.828003 1282.307983 1288.534912 1293.164795 1294.160645 1295.273315 1296.763794 1297.47522 1297.652344 1297.638428 1297.484741 1297.484619 1296.713745 1296.294556 1295.03833 1293.868652 1292.208374 1290.557739 1287.858887 1284.879395 1283.037964 1281.991333 1279.522217 1274.279053 1268.82312 1264.850098 1257.215088 1247.664307 1239.09375 1232.236328 1221.601074 1216.822998 1213.179443 1205.184204 1191.289551 1179.929443 1167.76355 1157.415161 1155.515259 1153.033081 1149.841919 1146.867188 1143.503296 1143.720459 1145.949707 1146.759155 1146.03125 1148.109375 1152.574219 1157.276611 1151.974243 1145.149292 1153.473999 1158.569214 1154.747437 1151.749023 1148.268799 1144.775146 1141.714233 1138.058594 1134.497192 1131.610107 1129.028931 1126.721191 1125.239502 1124.032959 1122.37561 1121.27771 1120.215332 1118.893433 1118.253662 1118.225464 1119.419189 1122.506226 1122.760132 1120.161621 1114.121216 1110.621704 +1342.082764 1341.780273 1342.047974 1342.612305 1343.425781 1343.955444 1343.9823 1343.608032 1338.794922 1307.247192 1299.920776 1298.930908 1288.599243 1277.995361 1269.334473 1265.077026 1260.167358 1255.630249 1249.23645 1239.578003 1233.973145 1231.445312 1229.261353 1224.618408 1217.195801 1209.132568 1196.673828 1179.211182 1164.145752 1158.419922 1157.394287 1157.614136 1155.363159 1158.742432 1173.815796 1188.090576 1209.52832 1225.983032 1247.713867 1271.025635 1307.544067 1318.588257 1317.162964 1315.014648 1313.873291 1312.306885 1310.652588 1308.140259 1304.907593 1303.234985 1300.406982 1296.242798 1292.658813 1287.46814 1285.676025 1285.767212 1282.610596 1274.222046 1261.979858 1243.941162 1248.764771 1253.140869 1258.114868 1268.19397 1271.845581 1269.604858 1265.81189 1261.982788 1258.774292 1256.935669 1254.157959 1250.585449 1247.683228 1248.011719 1249.713867 1249.96106 1249.190674 1247.612549 1245.814087 1243.77771 1242.245361 1241.464233 1240.946411 1241.106323 1242.2146 1241.759277 1240.111938 1239.037354 1238.192383 1237.042847 1235.722656 1234.192871 1230.681274 1227.70105 1230.911255 1233.581665 1234.801758 1235.776001 1237.517578 1239.54187 1241.739502 1244.532471 1247.439209 1249.858887 1253.002686 1256.348267 1261.156982 1261.550537 1255.170166 1263.371826 1269.963623 1276.215942 1280.310181 1281.649414 1281.970947 1281.774292 1280.811279 1279.223999 1278.091064 1277.437866 1277.177612 1277.126343 1277.087646 1277.233032 1277.468506 1277.763428 1277.844727 1277.733887 1277.60376 1277.52063 1277.824707 1278.390747 1279.368408 1280.713745 1279.548096 1278.372803 1277.54126 1278.185547 1280.293335 1280.729858 1279.979858 1281.202637 1283.050781 1284.087036 1284.723511 1284.973511 1285.023315 1284.82666 1284.9729 1285.24353 1284.866089 1284.129883 1283.109009 1275.753174 1281.598267 1282.771118 1284.348877 1285.123413 1285.510254 1285.165283 1284.090698 1282.457031 1281.392456 1279.598877 1277.233521 1274.762451 1271.912354 1268.436035 1266.189209 1265.502441 1263.613281 1261.224365 1257.598511 1252.06897 1246.323242 1242.897827 1239.420898 1235.630737 1232.874756 1230.554199 1232.897339 1235.36499 1238.554932 1241.324829 1243.685791 1245.683594 1246.987671 1247.160767 1246.397705 1244.618652 1243.013062 1242.375732 1242.677612 1243.501099 1244.503174 1245.3479 1245.705078 1245.878906 1245.787231 1245.032471 1243.032715 1240.364258 1238.997192 1243.293335 1248.149902 1253.470825 1257.37146 1258.451782 1258.413818 1258.220459 1257.434448 1256.512817 1255.304199 1254.016602 1252.381104 1250.274658 1247.870239 1245.793823 1244.378296 1243.293579 1242.406982 1241.722168 1241.221069 1240.705811 1239.777832 1238.273682 1236.44165 1235.039673 1233.661499 1232.230225 1231.27417 1229.896729 1228.599854 1227.41333 1226.403076 1225.41394 1224.599731 1223.921753 1223.66394 1223.667725 1223.562988 1223.115723 1222.630859 1221.729614 1220.626831 1219.375854 1218.884888 1219.720703 1223.210327 1226.1427 1228.814697 1230.942261 1231.659058 1229.040039 1226.114868 1224.650269 1223.675781 1222.696411 1221.185059 1218.949341 1217.11853 1216.550049 1217.829834 1220.725952 1223.453979 1226.069702 1228.059326 1229.091797 1229.651245 1229.818359 1229.628418 1229.435425 1229.108521 1229.122437 1229.430908 1229.124512 1228.374878 1227.060181 1225.391846 1222.392212 1220.404053 1221.705078 1222.803711 1222.88916 1222.505005 1221.275146 1220.090332 1219.258179 1218.907471 1218.377075 1216.966675 1215.336426 1213.857788 1212.544434 1211.245605 1209.931274 1208.667725 1207.637329 1206.708008 1206.165771 1205.849365 1205.524048 1205.234741 1204.821655 1203.981812 1203.442627 1202.771362 1201.999878 1201.413452 1200.997437 1200.601196 1200.14856 1199.806519 1199.210083 1198.429932 1197.36145 1195.29126 1195.310547 1195.500122 1195.562134 1195.564331 1195.579712 1195.470703 1195.251709 1194.480957 1193.204712 1192.212402 1191.306641 1190.549561 1189.649048 1188.908325 1188.105225 1187.305176 1186.639038 1185.979736 1185.742554 1185.921509 1185.896729 1185.91394 1185.747559 1185.442627 1185.110474 1184.651855 1184.265747 1183.835327 1182.426636 1178.568359 1174.921265 1172.73645 1172.677856 1172.570312 1172.609741 1172.548706 1172.66394 1172.669922 1172.569214 1172.744995 1172.723633 1173.089966 1173.448853 1173.535767 1173.718994 1173.901855 1174.122803 1174.406982 1174.759033 1175.204712 1175.606079 1175.792114 1175.561157 1174.487915 1173.033325 1172.274292 1172.608032 1173.088989 1173.605347 1174.112671 1174.564087 1175.016479 1175.28186 1175.669189 1176.053589 1176.200806 1176.173706 1176.020142 1175.901855 1175.841675 1175.837402 1175.901123 1176.017578 1175.978882 1175.952759 1175.922363 1175.83313 1175.923584 1176.306274 1176.658081 1177.09021 1177.3927 1177.750366 1178.144897 1178.166504 1177.893433 1177.428955 1176.779663 1176.217407 1175.87207 1175.720459 1175.670776 1175.934326 1176.194214 1176.451416 1176.678711 1176.849854 1176.763428 1176.596313 1176.437134 1176.188965 1175.909546 1175.60144 1175.086304 1174.507202 1173.976685 1173.487915 1172.993896 1172.348755 1171.568359 1171.065674 1170.207764 1168.993408 1168.149658 1168.154663 1169.772461 1171.015625 1171.57666 1171.768066 1171.775391 1171.690918 1171.660767 1171.506836 1171.134277 1171.055176 1171.003662 1171.828003 1172.425049 1172.743896 1173.258423 1174.166992 1174.973145 1175.981689 1177.250732 1178.689453 1180.407837 1181.779907 1182.718262 1183.701294 1184.494751 1185.187988 1185.451904 1185.515869 1186.296997 1187.598633 1189.06189 1190.766602 1192.841064 1194.901367 1197.141357 1198.775635 1200.611694 1205.352661 1207.695312 1209.13562 1209.966064 1210.786255 1211.701904 1212.917847 1214.383057 1216.048096 1218.147339 1221.197266 1227.144897 1233.213989 1238.944824 1242.307861 1243.946289 1248.416504 1254.615356 1265.559448 1272.15564 1276.934448 1286.860352 1294.03772 1296.406982 1297.668579 1299.83606 1302.804199 1304.672241 1304.585083 1304.090576 1303.150635 1301.803223 1300.202759 1299.355347 1298.506836 1296.780884 1293.977783 1291.842773 1290.179688 1288.855835 1287.526733 1286.153442 1284.361816 1282.01062 1279.713745 1278.524902 1280.11792 1289.476318 1292.239014 1294.371094 1296.503174 1296.46521 1296.28418 1294.504639 1292.114014 1286.380615 1279.231201 1275.079956 1280.834839 1289.461304 1295.632568 1295.806396 1294.666138 1293.673462 1289.549805 1283.786621 1289.379395 1291.450317 1292.609863 1292.968018 1294.438232 1296.312866 1296.907593 1295.879639 1295.880615 1296.976929 1296.874146 1296.354004 1296.519653 1295.59375 1294.641724 1294.036621 1292.147339 1288.05603 1284.906128 1282.954224 1279.866333 1275.311157 1272.356567 1270.228027 1256.63147 1242.369385 1230.429565 1221.687134 1211.084595 1201.08667 1198.932617 1192.226318 1176.782837 1168.091309 1160.231201 1155.666748 1151.113647 1148.211548 1145.800415 1147.500122 1149.601807 1152.172729 1154.013184 1153.859375 1153.532593 1155.68396 1157.763062 1162.236084 1160.702515 1151.390991 1153.077148 1160.874512 1160.596802 1156.987793 1152.329712 1147.857422 1143.360596 1138.646851 1134.015381 1133.566406 1131.928101 1129.260864 1127.004517 1125.096558 1123.461792 1122.357178 1120.93042 1119.560547 1119.03186 1119.089478 1119.923096 1121.697388 1122.375 1122.409424 1116.774414 1112.078247 +1344.179443 1343.648315 1343.276123 1343.652588 1344.193481 1344.867798 1345.250732 1344.571167 1330.717163 1307.357422 1278.950806 1265.856812 1265.676758 1260.855225 1254.753052 1247.216675 1240.64856 1236.928833 1229.994019 1222.30188 1215.981812 1213.085693 1212.215088 1205.887085 1202.300171 1199.950928 1190.484131 1170.70166 1160.64624 1157.04834 1156.353394 1157.832031 1161.557739 1167.511841 1176.046753 1186.512939 1205.386353 1221.865234 1243.142944 1263.629517 1300.0354 1320.749512 1320.511353 1317.241577 1315.50061 1313.738403 1311.723511 1309.446899 1307.534058 1306.505859 1304.292358 1297.888794 1291.892578 1293.536743 1294.824219 1289.495483 1282.223755 1269.657959 1255.209961 1246.166016 1251.063232 1254.872925 1261.961182 1269.949097 1277.289185 1274.056396 1268.319214 1264.553833 1261.435791 1258.528564 1255.102783 1253.477905 1252.4646 1253.190552 1253.895386 1253.094971 1250.933105 1248.086548 1244.572144 1243.852905 1243.730225 1243.460449 1243.058716 1244.544556 1244.984619 1243.85083 1241.734863 1241.347656 1241.597656 1241.180542 1238.892456 1235.223145 1231.434937 1230.664429 1232.485229 1234.833008 1236.849487 1238.341675 1240.165405 1241.712891 1242.755981 1245.079956 1248.115845 1251.007324 1253.348022 1256.145752 1264.528564 1269.938843 1269.828491 1265.304932 1271.537476 1276.385498 1280.387207 1281.799194 1282.062256 1281.913818 1281.040405 1279.699829 1278.666992 1278.112671 1277.975952 1278.065552 1278.165161 1278.390747 1278.69812 1278.972046 1278.97644 1279.011475 1279.03833 1278.67395 1278.666748 1279.481934 1280.862915 1281.936157 1281.355347 1280.039795 1279.074585 1279.341553 1281.383179 1282.418823 1281.697876 1281.859375 1284.434937 1285.660278 1286.533081 1287.114502 1287.210449 1287.054443 1287.227173 1286.717163 1285.804077 1284.403198 1282.226074 1279.331543 1283.149292 1284.823486 1286.006348 1286.88147 1287.327637 1287.254272 1286.2052 1284.618774 1283.207275 1280.965088 1278.471191 1276.213989 1272.259888 1268.025269 1269.459595 1270.39917 1270.217041 1265.041138 1258.814941 1250.111328 1243.793823 1241.652954 1238.431763 1235.382935 1232.598389 1231.587891 1234.898071 1237.975098 1241.325684 1243.331665 1245.435059 1247.763794 1248.693604 1248.343994 1247.130371 1244.952881 1243.731689 1242.99231 1243.033325 1243.426147 1244.282349 1245.358154 1245.861694 1246.08313 1245.831299 1245.389282 1243.68457 1241.02478 1239.838867 1243.76123 1249.025757 1253.715454 1257.303101 1258.258057 1258.389404 1257.994263 1256.800049 1255.533936 1254.508179 1253.369995 1251.893433 1249.938721 1247.385742 1244.251831 1243.701538 1243.358887 1242.712646 1242.226685 1242.112427 1242.349487 1242.044312 1240.585205 1238.364746 1236.200928 1234.488525 1232.965088 1231.754639 1230.425171 1229.081299 1228.338257 1227.694336 1227.357544 1226.890259 1226.464111 1226.031372 1225.855347 1225.387573 1224.745483 1224.008423 1222.995972 1221.79248 1220.140869 1219.556763 1219.288818 1220.687378 1224.478027 1228.016357 1230.287842 1230.412231 1228.89563 1227.783936 1226.808228 1225.873169 1224.661743 1223.004395 1220.990356 1220.161377 1218.275391 1219.064941 1221.734619 1224.966919 1228.055542 1230.203979 1230.755249 1230.936035 1230.900513 1230.785278 1230.251709 1230.019897 1230.388062 1231.009399 1230.724243 1229.852661 1228.418213 1226.775146 1225.121338 1223.88501 1223.915771 1224.088135 1223.861572 1223.273438 1222.264404 1221.303833 1220.684814 1220.206299 1219.535034 1217.358521 1215.275391 1213.451416 1211.949341 1210.71167 1209.433594 1208.479248 1207.068237 1206.248779 1206.094604 1205.875977 1205.651489 1205.523682 1205.288208 1204.610474 1204.259277 1203.45105 1202.80542 1202.204834 1201.787598 1201.345215 1200.809692 1200.394165 1199.738403 1198.887817 1197.644653 1196.579102 1196.515259 1196.478271 1196.320557 1196.144043 1196.029907 1195.835571 1195.523682 1194.779175 1193.722778 1192.740112 1191.794678 1190.993042 1190.338379 1189.5177 1188.917725 1188.192505 1187.495361 1186.931396 1186.598877 1186.549683 1186.462891 1186.469116 1186.119873 1185.778809 1185.30835 1184.799927 1184.033203 1183.036499 1181.240234 1177.617798 1174.270508 1173.184937 1173.181885 1173.265625 1173.246948 1173.381226 1173.427124 1173.527466 1173.577271 1173.634521 1173.787476 1174.019531 1174.316895 1174.571777 1174.917725 1175.169678 1175.513672 1175.988647 1176.475952 1177.236694 1177.973022 1178.76001 1178.968628 1177.83252 1174.643921 1172.80603 1173.200684 1173.561646 1174.085083 1174.618896 1175.144409 1175.650757 1176.176147 1176.633911 1177.008667 1177.287476 1177.275269 1177.109009 1176.94043 1176.80835 1176.794556 1176.791382 1176.85437 1176.970093 1177.011108 1176.891113 1176.78186 1176.839355 1177.185913 1177.772339 1178.15686 1178.661377 1179.033203 1179.31543 1179.429199 1179.196777 1178.936646 1178.487061 1178.035034 1177.609741 1177.366089 1177.243408 1177.339233 1177.317749 1177.385376 1177.467773 1177.582275 1177.529541 1177.280762 1177.033569 1176.807617 1176.667114 1176.283936 1175.7677 1175.182129 1174.519531 1173.952759 1173.491821 1172.824219 1172.253906 1171.675415 1171.087402 1170.074829 1168.987061 1168.271729 1169.037476 1170.361572 1171.019531 1171.376465 1171.837036 1171.911987 1171.787354 1171.741211 1171.702759 1171.558228 1171.052856 1171.048828 1170.987793 1171.004761 1171.111938 1172.35791 1173.218262 1174.084229 1175.947144 1178.081543 1179.898926 1181.309448 1182.640869 1183.600708 1183.605835 1183.502808 1183.255005 1183.521362 1184.238159 1185.71106 1187.272339 1189.58374 1192.270142 1194.7948 1196.738403 1198.347656 1199.9552 1204.526733 1206.477051 1207.720581 1208.453491 1208.920532 1209.912842 1211.546143 1213.336914 1215.238647 1217.214478 1219.584106 1225.20874 1230.573242 1234.604492 1236.930054 1239.591675 1242.606689 1248.730225 1254.330933 1260.110229 1269.077148 1275.687256 1285.800781 1293.638306 1296.447021 1298.832031 1302.048218 1305.505981 1305.989868 1305.7052 1304.849854 1301.961182 1299.902832 1299.863892 1300.76001 1299.949951 1296.823853 1294.026489 1292.327393 1290.979004 1289.838013 1288.511841 1286.184937 1283.789673 1281.469971 1279.220337 1279.466919 1290.245605 1294.342651 1295.440796 1295.817871 1295.708374 1294.952026 1294.209351 1293.80249 1293.670654 1291.728516 1285.617188 1279.246948 1279.244995 1287.93811 1293.142456 1294.624023 1295.452026 1295.329834 1294.68042 1293.512085 1292.565796 1292.205933 1293.123047 1294.487793 1295.064819 1295.027954 1292.675415 1282.142334 1285.535767 1287.67334 1285.507446 1294.359131 1293.553711 1286.907104 1292.748901 1291.379395 1286.78125 1283.651123 1275.492798 1271.520508 1270.91272 1269.251953 1265.523926 1252.507812 1239.692627 1220.292358 1204.957886 1198.488525 1190.060303 1181.624634 1172.55481 1166.417969 1160.2323 1154.640503 1150.435791 1149.723267 1151.116211 1153.258667 1154.905518 1155.474731 1158.606079 1161.160767 1161.200317 1158.554199 1162.808105 1166.887817 1169.595703 1167.862061 1160.592041 1157.355713 1162.323853 1165.819336 1161.206787 1155.900024 1150.258545 1145.460938 1141.260498 1137.737427 1136.369873 1134.320068 1131.348877 1128.63147 1127.151978 1125.788696 1123.484863 1121.460449 1120.133057 1119.493896 1119.592651 1119.9021 1120.194946 1120.681641 1120.953613 1116.865601 1112.553467 +1328.167114 1330.576782 1329.239624 1343.05249 1344.521973 1345.51416 1346.646729 1343.051758 1320.884521 1298.27002 1274.096558 1257.49939 1249.793945 1248.205933 1243.514038 1235.229858 1228.309326 1223.584351 1216.426758 1206.801514 1200.528564 1194.873535 1198.432373 1195.525635 1184.662354 1180.610107 1171.421387 1165.297485 1158.508667 1157.161865 1160.077148 1162.907104 1167.240967 1173.666748 1181.444946 1193.417725 1209.952515 1234.87439 1255.644531 1275.807129 1312.245483 1326.456055 1325.275391 1319.249146 1316.292725 1314.783447 1312.712891 1310.793457 1309.189819 1307.545654 1305.48645 1300.984863 1297.033936 1297.247437 1295.178833 1287.090454 1275.578491 1260.292969 1249.300293 1250.278809 1254.686035 1257.483032 1265.700806 1276.782715 1282.307007 1279.952393 1271.651733 1267.523071 1263.469604 1258.522827 1255.362915 1255.244385 1255.0979 1256.598633 1256.946289 1255.6698 1253.431274 1250.285156 1246.559082 1246.037476 1246.292603 1245.059937 1244.021851 1245.747803 1246.27356 1245.28064 1243.289429 1243.100952 1244.493286 1244.696899 1243.30957 1237.634888 1232.15332 1231.940552 1234.641357 1236.873779 1238.995361 1240.451172 1242.49585 1244.366211 1245.462036 1247.209106 1249.87793 1252.802734 1255.415161 1258.567383 1265.209473 1269.79187 1272.656616 1270.140381 1273.903198 1277.969971 1280.035278 1281.913086 1282.413086 1282.124756 1281.01355 1279.757812 1279.208618 1278.806519 1278.716064 1278.815186 1279.11853 1279.40979 1279.705688 1280.008911 1280.354858 1280.441284 1280.447998 1279.956787 1279.412964 1280.023804 1281.703003 1282.636963 1282.47229 1281.197388 1280.283691 1280.679565 1281.218994 1283.163086 1283.900879 1284.851685 1286.182129 1287.453857 1288.565796 1289.28186 1289.489502 1289.260254 1289.211182 1288.269409 1287.016968 1285.122192 1281.447388 1281.260132 1284.142334 1286.15686 1287.45105 1288.669678 1289.476807 1289.988281 1289.039429 1287.002075 1284.713379 1282.333984 1280.736084 1278.764771 1275.671021 1273.55188 1272.666748 1271.774292 1270.06897 1263.718872 1255.252563 1243.677368 1241.855225 1239.851685 1237.290771 1234.805542 1232.106201 1233.240112 1237.291748 1240.670166 1243.674927 1248.421143 1251.311035 1251.830933 1250.946655 1249.708496 1248.122803 1246.298462 1244.981567 1243.994385 1243.312012 1243.487915 1244.229614 1245.262085 1245.886475 1246.128418 1246.014404 1245.376831 1243.951782 1241.428345 1241.670654 1246.561157 1251.09314 1255.283936 1257.747314 1258.364258 1258.347534 1257.904419 1256.583618 1255.566895 1254.504883 1253.507568 1252.189209 1250.382568 1248.061279 1245.763062 1245.025024 1244.557495 1243.549561 1243.023071 1243.308716 1244.127197 1244.096558 1242.780884 1240.109253 1237.192383 1234.825806 1232.917969 1231.533081 1230.417847 1229.586914 1229.191772 1229.047729 1229.161987 1229.123779 1228.620361 1228.392456 1228.044678 1227.526855 1226.712158 1225.859497 1224.743408 1223.506348 1222.181396 1221.288696 1220.517456 1219.452637 1223.153809 1228.039551 1231.202393 1231.924927 1230.744629 1229.682739 1229.098389 1228.184204 1226.608765 1224.767822 1222.751709 1220.862305 1219.217529 1219.157837 1222.226318 1226.367554 1230.241455 1232.135864 1232.338989 1232.198608 1232.135254 1231.836426 1231.31958 1230.754761 1231.484375 1232.206055 1232.108276 1231.179688 1229.43335 1228.578003 1227.589722 1226.708496 1226.031738 1225.569702 1224.978638 1224.090332 1223.082031 1222.069824 1221.065674 1219.86438 1218.214722 1216.373413 1214.286011 1212.664429 1211.112549 1209.64856 1207.967163 1207.203613 1206.607788 1206.383789 1206.260254 1206.15918 1206.079224 1206.027344 1205.971069 1205.509766 1205.160645 1204.16626 1203.57959 1202.953369 1202.625244 1202.069214 1201.560303 1201.047974 1200.300903 1199.421387 1198.489502 1197.824097 1197.383911 1196.957764 1196.61084 1196.333618 1196.113281 1195.655518 1195.306763 1194.625977 1193.783691 1193.025146 1192.191406 1191.508301 1190.815063 1190.301392 1189.656128 1188.961304 1188.251587 1187.602051 1187.231323 1187.127686 1187.0177 1186.793823 1186.513672 1186.068237 1185.476318 1184.74292 1183.957275 1183.172729 1180.638184 1177.605103 1174.140991 1173.708252 1173.808105 1173.907104 1174.072754 1174.263916 1174.390991 1174.475464 1174.575806 1174.61499 1174.805664 1175.030518 1175.417236 1175.765991 1176.091919 1176.533691 1177.032593 1177.591309 1178.314453 1179.121826 1180.484253 1181.546753 1182.66272 1182.340454 1177.060913 1173.342407 1173.590942 1174.145752 1174.583862 1175.164307 1175.834229 1176.513672 1177.08606 1177.769165 1178.218018 1178.485962 1178.4552 1178.223267 1178.079346 1177.924561 1177.789062 1177.754272 1177.895386 1177.918823 1177.959717 1177.895996 1177.650635 1177.765015 1178.069336 1178.597778 1179.187256 1179.765625 1180.325928 1180.666016 1180.789917 1180.700806 1180.456055 1179.920532 1179.432007 1179.015625 1178.770142 1178.64624 1178.50415 1178.497559 1178.432739 1178.443115 1178.459106 1178.330688 1178.110229 1177.822144 1177.605957 1177.421021 1176.987549 1176.51355 1175.848022 1175.115479 1174.504639 1173.901733 1173.401001 1172.912598 1172.236694 1171.677612 1171.105957 1169.877075 1168.626831 1168.461304 1169.512085 1170.167969 1170.774658 1171.28479 1171.85791 1171.644653 1171.695435 1171.854492 1171.925659 1171.869263 1171.493286 1171.313965 1171.324463 1171.04126 1171.003174 1171.182617 1171.649048 1175.00415 1178.056152 1180.060913 1181.542969 1182.57251 1182.900513 1182.918945 1182.950073 1183.625122 1183.497803 1182.989136 1183.733154 1185.462158 1187.980103 1191.345703 1194.292358 1196.175171 1197.597656 1199.333252 1203.0 1204.729248 1205.89917 1206.347778 1206.959717 1208.574707 1210.521973 1212.46521 1214.473633 1216.702759 1219.393066 1223.412476 1227.846558 1230.627808 1231.39917 1237.637573 1244.804932 1248.122925 1253.260742 1256.97229 1263.661987 1266.944336 1274.562012 1285.266113 1293.459473 1295.339233 1297.845093 1300.595825 1303.788208 1303.852417 1302.292603 1298.716309 1296.333984 1297.39502 1303.720947 1303.911011 1300.347534 1297.628784 1295.746826 1293.744141 1292.506226 1290.917114 1288.759155 1286.598877 1284.04541 1281.481445 1279.802002 1281.436401 1291.036621 1293.931519 1294.588989 1293.458618 1293.208252 1293.123047 1293.231445 1293.553101 1293.727905 1293.538086 1294.223267 1290.900635 1287.340332 1291.860962 1293.224243 1296.406494 1297.647827 1297.252686 1295.725708 1294.551392 1293.902222 1295.100098 1294.799927 1293.450806 1292.939209 1286.715454 1276.264282 1271.265015 1271.947632 1268.701416 1275.062988 1274.03064 1263.457642 1272.806152 1279.777344 1280.446289 1277.242798 1266.664307 1251.003418 1252.453979 1256.850586 1257.827393 1247.724854 1239.676392 1223.376343 1205.872803 1191.374634 1180.873291 1171.689209 1165.768188 1161.279297 1156.427979 1151.982422 1154.638306 1157.999634 1160.3573 1161.293335 1161.753662 1160.346802 1164.807495 1168.662354 1167.066772 1166.570801 1169.554199 1174.792114 1175.788452 1174.841309 1168.478638 1160.21167 1167.555054 1171.542603 1165.109497 1159.382202 1153.113159 1147.922729 1144.138306 1140.183838 1137.3573 1134.487549 1131.741943 1130.203003 1129.896484 1129.981201 1126.250854 1121.921387 1120.645386 1120.135986 1120.069336 1119.956543 1119.652466 1118.687012 1117.125244 1115.023315 1112.865356 +1321.974487 1307.499878 1312.945679 1321.613647 1342.563232 1346.450317 1344.920898 1329.239258 1314.179443 1290.154419 1271.846313 1255.907104 1238.661011 1231.338989 1229.238159 1224.544312 1219.230347 1212.197754 1203.288574 1193.274658 1183.779541 1182.258301 1182.654419 1176.637817 1170.37439 1168.932007 1166.32605 1161.919067 1157.905762 1159.593994 1163.163696 1166.518066 1170.184448 1178.588989 1189.603638 1202.364136 1224.508667 1245.77478 1265.906006 1293.445435 1321.879028 1332.584717 1330.02417 1323.292847 1318.220703 1315.797852 1313.735352 1311.779541 1310.024658 1308.463745 1306.032959 1303.865845 1303.081543 1301.15979 1294.026611 1279.029663 1265.214355 1253.069946 1250.08606 1257.675293 1260.68103 1263.702515 1269.138916 1280.455566 1283.75061 1282.691284 1277.092163 1271.371948 1265.836548 1258.01709 1256.226562 1257.686401 1258.329102 1258.637817 1258.249756 1257.094849 1254.819214 1253.391357 1252.088989 1250.35083 1249.012817 1247.768921 1246.883545 1247.278198 1247.504517 1246.272583 1244.529907 1244.757935 1245.937744 1246.172485 1245.217407 1240.437988 1234.556885 1232.900269 1236.164917 1239.674438 1241.612305 1242.805786 1244.429199 1246.561035 1247.987671 1249.893555 1251.858765 1254.210815 1257.518433 1262.99585 1268.992432 1273.589111 1277.44165 1276.727417 1279.552368 1280.887817 1281.14624 1282.349731 1282.929688 1282.534546 1280.897705 1280.12146 1279.861328 1279.671143 1279.673218 1279.535278 1279.74585 1280.431396 1280.760254 1281.181396 1281.637085 1281.97583 1281.93689 1281.095581 1280.11438 1280.415039 1281.994019 1283.239624 1283.364014 1282.498901 1281.721802 1282.111206 1282.131226 1284.533325 1285.866455 1287.081421 1288.368896 1289.334106 1290.625244 1291.469727 1291.651733 1291.373169 1291.099731 1289.809937 1288.417603 1286.561157 1283.618408 1283.728516 1285.731079 1287.498169 1288.954712 1290.254517 1291.397949 1292.733276 1291.998901 1289.181763 1286.557251 1284.368164 1282.668701 1281.263794 1279.119019 1276.645996 1274.231323 1271.776733 1268.025879 1256.777954 1245.414795 1242.33252 1240.122192 1237.993652 1235.908203 1233.598633 1233.0 1235.75354 1239.308105 1242.633423 1249.644653 1257.293823 1257.023438 1255.341431 1253.16626 1251.163574 1249.609497 1247.900757 1246.30603 1244.535767 1243.571533 1243.847168 1244.444702 1245.25293 1245.948975 1246.244629 1246.086914 1245.093628 1242.891479 1241.509277 1244.73645 1249.109253 1253.911743 1257.285645 1258.314575 1258.622925 1258.469238 1258.044312 1257.122681 1256.358276 1255.340332 1254.126343 1252.792847 1251.131104 1249.19519 1247.403076 1246.278198 1245.524292 1244.754761 1244.083618 1244.508911 1245.06897 1244.842896 1244.291382 1241.602661 1238.100708 1235.351196 1233.237915 1231.778809 1230.508301 1230.218262 1230.126709 1230.451294 1230.765503 1231.091309 1230.708374 1230.471802 1229.928467 1229.655029 1229.124023 1228.067627 1226.630493 1225.44043 1224.22522 1223.014038 1222.219849 1221.675781 1223.557861 1227.519287 1232.187622 1232.519775 1232.375488 1231.802979 1231.790649 1230.436157 1228.801147 1226.614624 1224.296753 1222.108276 1219.744385 1219.69519 1223.489624 1227.7229 1231.645874 1232.827637 1233.138306 1233.097412 1232.984619 1232.728271 1232.169556 1231.392944 1232.145386 1232.762207 1232.745239 1232.144165 1230.853882 1230.336914 1229.828003 1228.77832 1227.983643 1227.09668 1226.0448 1224.820923 1223.6698 1222.303467 1220.854004 1219.152466 1216.708008 1214.997437 1213.061523 1211.398071 1209.70813 1207.895874 1207.065918 1206.831665 1206.796387 1206.932739 1207.020996 1206.811035 1206.621826 1206.616821 1206.738525 1206.735596 1206.046753 1204.938477 1204.266724 1203.774292 1203.331299 1202.884033 1202.237671 1201.5625 1200.837524 1199.987305 1199.174316 1198.531494 1198.014404 1197.373291 1196.766724 1196.092651 1195.475342 1195.240234 1194.712891 1194.39563 1193.841064 1193.327026 1192.641479 1192.056274 1191.458496 1190.917114 1190.302246 1189.53064 1188.766846 1188.173584 1187.719604 1187.617188 1187.437744 1187.145996 1186.704956 1186.148071 1185.514648 1184.562988 1183.552124 1182.796997 1183.239136 1178.407593 1174.279541 1174.249146 1174.335815 1174.60144 1174.884033 1175.065308 1175.239746 1175.41333 1175.540283 1175.579956 1175.792969 1176.05835 1176.5177 1177.019409 1177.439331 1177.936646 1178.515137 1179.156128 1179.832642 1180.946533 1182.239502 1183.358887 1184.052612 1184.06543 1180.84082 1174.447144 1174.072632 1174.620361 1175.169678 1175.830811 1176.497437 1177.366821 1178.219971 1178.938232 1179.405884 1179.700562 1179.700195 1179.4729 1179.286621 1179.019165 1178.822388 1178.774658 1178.862427 1178.856689 1178.814941 1178.756958 1178.47937 1178.550537 1178.845703 1179.258301 1180.036743 1180.759399 1181.456543 1182.069824 1182.059814 1182.151733 1181.865723 1181.273193 1180.687988 1180.099976 1179.804321 1179.713623 1179.696899 1179.621338 1179.569336 1179.402954 1179.353882 1179.150391 1178.952881 1178.63147 1178.476562 1178.204224 1177.758057 1177.207153 1176.436401 1175.765869 1175.100464 1174.577026 1174.023926 1173.472046 1172.800781 1172.200928 1171.592407 1170.880371 1169.580933 1168.587524 1168.872192 1169.272705 1169.49707 1169.702759 1170.469727 1170.984863 1171.458252 1171.944336 1172.075928 1172.245239 1172.42395 1172.44104 1172.47998 1172.436768 1171.967285 1171.180542 1171.622192 1175.563721 1179.057617 1181.703735 1183.289917 1184.067749 1185.098877 1185.896606 1187.040771 1190.141113 1189.651367 1186.509033 1183.081665 1183.547119 1186.107666 1189.75293 1193.341675 1195.723755 1197.16687 1198.631958 1201.574219 1203.027222 1204.310791 1205.134521 1206.236328 1207.960083 1210.068848 1211.753418 1213.662231 1216.195435 1218.990479 1222.38269 1225.677246 1228.008057 1231.341919 1237.421143 1243.970215 1247.601929 1254.163086 1258.463013 1261.050903 1261.980957 1265.700562 1275.02063 1283.322388 1288.516846 1291.438843 1293.307495 1291.867432 1290.276489 1292.818115 1292.467285 1286.348389 1290.558594 1299.614014 1303.921387 1301.441406 1301.388062 1300.588501 1298.312134 1296.152954 1293.614624 1291.764648 1289.630371 1287.457764 1284.645508 1281.59375 1279.421387 1282.344971 1287.035767 1290.057129 1291.272461 1291.660278 1291.911743 1292.39917 1293.146484 1293.643311 1293.884399 1294.312012 1294.99353 1294.815063 1293.35498 1292.708252 1297.882324 1299.959229 1299.800293 1298.569092 1297.750244 1297.438354 1296.661621 1295.671631 1291.193237 1281.60498 1277.385132 1268.677734 1260.154419 1258.792969 1253.964111 1262.901489 1260.773682 1247.727539 1252.825073 1257.963135 1271.424805 1265.006958 1254.840576 1238.798218 1233.054565 1240.935425 1244.489258 1233.758179 1230.076172 1219.537354 1205.066162 1191.832642 1179.030518 1172.177368 1161.978149 1157.340576 1154.275146 1157.002197 1162.061401 1165.2854 1168.165405 1169.909058 1168.592407 1167.41687 1171.086914 1175.027344 1172.806152 1169.721069 1174.406006 1180.671143 1184.211426 1180.829712 1173.530762 1168.640747 1173.224609 1173.838867 1167.25061 1160.294678 1154.601929 1149.655151 1145.330566 1140.763306 1137.017944 1133.788574 1132.047241 1131.558838 1132.767212 1135.061157 1133.591919 1123.608521 1121.349609 1120.745605 1120.72644 1120.908691 1119.964722 1118.191406 1116.231689 1113.887451 1112.060913 +1322.315796 1306.258667 1291.850952 1296.424683 1309.713135 1320.642944 1324.224243 1319.611572 1305.678711 1286.857544 1269.736328 1255.096558 1237.435913 1221.709351 1217.060669 1213.252197 1207.487305 1198.890503 1192.653931 1185.629761 1177.412598 1171.230469 1170.207397 1169.477295 1167.891724 1165.793335 1163.565186 1160.568726 1157.773193 1161.745728 1166.185425 1170.125122 1174.943848 1182.525757 1195.058472 1208.865967 1233.860474 1251.76001 1274.426636 1304.449219 1332.863159 1334.87207 1332.316162 1326.951904 1320.185303 1316.134033 1313.784546 1311.572021 1309.882935 1308.794678 1307.803101 1306.815796 1306.597168 1305.403931 1292.342529 1275.807251 1260.204956 1250.906128 1257.904175 1263.04834 1267.873901 1270.526367 1274.747314 1281.381958 1284.487793 1283.157227 1278.843384 1272.884521 1268.082886 1262.717041 1260.697632 1261.320312 1260.879395 1259.864136 1258.667603 1256.897705 1255.39917 1256.110474 1256.077393 1254.374146 1252.462769 1251.232178 1250.230713 1249.731201 1249.09436 1248.250977 1247.373169 1247.196167 1247.544922 1247.25769 1245.985352 1242.791382 1235.575684 1234.758301 1238.536133 1242.411133 1244.671631 1245.31311 1247.270752 1248.971313 1250.462646 1252.224731 1253.941162 1256.18042 1260.192627 1265.801392 1271.472534 1277.813477 1281.383667 1281.06543 1281.235596 1282.287476 1283.009155 1283.69812 1283.912476 1283.535767 1282.122192 1281.183105 1280.871094 1281.024048 1280.818359 1280.242188 1280.106323 1281.239136 1281.981079 1282.494995 1282.989136 1283.215698 1282.901489 1281.938354 1280.542358 1280.612671 1282.346802 1283.957275 1284.718018 1284.837646 1284.883667 1285.077759 1285.698608 1286.693848 1287.65564 1288.956787 1290.469727 1291.666504 1292.553467 1293.330811 1293.552612 1293.389282 1293.016113 1291.127075 1289.694946 1288.752563 1287.966675 1287.703735 1288.221802 1289.122681 1290.227661 1291.380859 1292.871216 1293.978516 1293.150391 1290.583252 1288.240601 1286.209106 1284.576782 1283.01709 1280.513672 1277.278442 1273.199341 1268.458862 1258.24585 1248.131226 1242.900391 1240.908081 1238.846924 1236.78186 1234.860474 1233.144653 1235.074097 1237.948975 1241.931396 1247.003906 1257.692017 1258.502319 1258.303589 1256.72998 1254.773682 1252.889771 1251.373291 1249.556763 1247.62439 1245.626709 1244.301514 1243.968628 1244.423462 1245.404907 1246.13269 1246.374878 1246.176147 1245.036499 1242.669922 1243.418335 1245.954956 1250.775024 1255.062744 1257.753052 1258.471313 1258.824707 1258.868774 1258.417603 1257.702515 1256.992065 1256.078491 1255.074097 1253.550415 1251.909546 1250.262451 1248.684326 1247.380737 1246.665649 1246.150879 1245.911377 1245.730469 1245.432129 1245.156494 1244.469849 1242.153564 1238.596802 1235.805176 1233.925659 1232.322632 1230.952393 1230.645386 1231.263428 1231.789307 1232.226074 1232.773315 1232.984131 1232.119507 1231.45105 1231.427002 1231.453979 1230.183105 1228.538452 1227.368652 1226.110352 1225.067017 1224.529053 1224.480469 1225.862183 1227.626099 1230.944214 1232.520264 1232.837646 1232.981689 1232.918091 1232.391113 1231.104004 1228.738281 1226.340332 1223.470703 1220.450562 1219.950317 1224.310791 1227.992432 1231.161621 1233.077393 1233.617065 1233.887817 1233.807617 1233.482544 1232.870605 1232.205322 1232.762695 1233.265625 1233.158569 1232.600952 1231.572876 1231.56189 1231.812866 1230.712036 1229.685669 1228.565674 1227.062134 1225.483276 1223.944702 1222.299194 1220.523193 1218.391602 1215.358154 1213.175659 1211.505859 1209.707886 1207.993896 1207.547241 1207.190918 1207.488892 1207.753296 1208.072266 1208.180542 1207.509644 1207.169678 1207.105469 1207.307251 1207.339844 1206.735107 1205.704834 1205.069336 1204.58374 1204.168823 1203.628052 1202.976074 1202.129883 1201.368164 1200.594971 1199.854492 1199.311035 1198.577515 1197.671387 1196.243896 1195.25061 1195.071045 1195.007446 1194.82019 1194.582397 1194.16626 1193.714844 1193.184937 1192.619873 1192.15625 1191.595459 1190.905518 1190.122559 1189.288818 1188.667603 1188.136597 1187.999512 1187.677368 1187.341797 1186.806152 1186.226074 1185.484863 1184.724487 1183.974487 1183.582642 1183.395264 1179.197266 1174.930786 1174.676514 1174.868896 1175.189819 1175.489868 1175.824219 1176.110107 1176.271362 1176.44458 1176.516113 1176.752075 1177.165771 1177.578979 1178.13916 1178.594849 1179.209595 1179.819824 1180.412598 1180.965454 1181.699341 1183.072266 1184.163086 1184.560791 1184.30835 1180.864746 1174.371826 1174.965698 1175.480469 1175.695557 1176.383179 1177.268677 1178.218872 1179.193359 1180.098389 1180.692017 1181.112183 1181.00354 1180.737549 1180.384155 1180.008179 1179.82251 1179.861328 1179.792969 1179.720215 1179.602539 1179.471558 1179.239014 1179.312256 1179.503296 1179.999756 1180.662231 1181.523438 1182.432739 1183.043335 1183.246216 1183.155396 1182.706787 1182.18689 1181.548096 1180.984863 1180.608276 1180.488525 1180.626099 1180.598022 1180.557983 1180.483887 1180.261963 1180.087524 1179.842163 1179.511963 1179.285767 1178.919922 1178.430908 1177.837769 1177.157837 1176.466675 1175.751709 1175.219238 1174.709595 1174.064209 1173.418945 1172.756836 1172.110229 1171.415283 1170.772705 1169.446167 1168.610474 1168.60498 1168.787476 1168.97522 1168.970093 1169.80249 1171.115601 1171.778076 1172.15564 1172.300171 1172.563477 1172.822144 1173.090088 1173.283447 1173.342041 1173.437256 1174.414185 1177.082642 1180.208496 1182.834473 1184.465454 1185.93042 1187.382812 1189.265625 1192.162476 1195.890259 1196.296875 1192.438721 1188.393066 1183.086914 1183.783447 1188.03186 1191.965576 1194.71582 1196.412476 1197.659302 1200.176392 1201.619141 1202.969482 1204.182739 1205.715088 1207.327759 1209.244873 1210.774658 1212.723633 1215.096924 1218.050415 1221.001953 1224.012817 1226.737427 1230.503662 1234.494263 1240.010864 1244.597778 1250.610718 1256.54895 1258.365967 1255.687866 1258.506592 1266.889526 1273.715698 1277.206665 1279.440674 1283.262329 1283.290405 1279.152832 1277.400024 1277.517334 1274.354614 1281.947632 1292.729248 1296.121948 1298.243042 1303.09082 1305.455566 1303.260376 1299.476196 1296.218872 1294.277222 1292.697754 1290.881836 1288.923462 1286.416016 1283.556519 1280.968628 1282.762451 1288.394043 1290.555786 1291.513672 1291.849976 1292.164429 1292.794678 1293.070435 1293.522949 1294.203491 1295.445801 1296.981689 1298.178833 1299.413696 1301.170166 1302.736816 1302.637695 1301.809082 1300.827881 1299.720581 1298.219238 1296.452881 1293.639526 1284.846802 1274.6875 1258.422119 1249.911743 1242.268799 1238.626221 1243.502563 1242.522705 1229.743774 1233.595947 1245.939575 1260.14917 1253.2146 1244.059204 1228.218262 1216.056885 1219.205688 1225.636597 1214.863403 1207.210449 1202.770264 1194.919189 1182.443848 1174.970703 1166.803833 1157.79126 1155.7229 1158.712524 1165.588623 1169.696411 1172.730835 1175.473511 1176.227905 1173.706909 1171.28894 1176.924194 1182.328491 1181.722046 1179.141113 1181.109009 1187.289429 1190.597168 1187.049438 1180.9646 1179.621704 1180.416748 1173.694458 1166.986328 1159.122559 1154.501099 1148.411133 1144.822144 1141.537964 1137.281494 1134.144409 1132.616821 1132.527344 1134.078247 1135.80127 1136.220947 1132.395508 1121.918945 1121.643188 1121.562256 1122.224854 1121.214233 1118.694702 1116.210205 1113.473877 1110.590332 +1331.65564 1314.984619 1289.332397 1278.762939 1287.994995 1293.844604 1296.047607 1296.706421 1293.247681 1279.429321 1264.397339 1249.764404 1235.068848 1220.718384 1208.869629 1201.199829 1193.767822 1190.429321 1185.50708 1180.491943 1174.232788 1169.939819 1168.471313 1167.109375 1165.561157 1163.747803 1161.644531 1159.434082 1158.796631 1164.402588 1169.47644 1174.835815 1180.001465 1187.085815 1200.603271 1214.393799 1240.457397 1258.504639 1282.167969 1314.123657 1339.635986 1338.74292 1332.439331 1326.412842 1318.660645 1315.812378 1311.672119 1309.409668 1308.576172 1307.876953 1307.564453 1307.523071 1307.450195 1299.359009 1286.58313 1275.014893 1258.446655 1254.549561 1262.94751 1268.804077 1273.544434 1276.766235 1279.122314 1283.527466 1287.286743 1284.937866 1279.506104 1274.713745 1269.342529 1266.757202 1265.76709 1264.937012 1263.09436 1260.518799 1257.844971 1256.06958 1256.197876 1257.618652 1258.380249 1256.880127 1254.987549 1254.102051 1252.909302 1252.020874 1251.270142 1250.806152 1250.117188 1249.692871 1249.410278 1248.514648 1246.95459 1244.755371 1241.102173 1235.688599 1240.800659 1244.852173 1246.735352 1247.867432 1250.128296 1252.029297 1253.294434 1254.518188 1255.657104 1259.112183 1264.392334 1270.137085 1276.925171 1281.568237 1282.708252 1283.155029 1283.275635 1283.827759 1284.654053 1285.107422 1285.30957 1284.960938 1284.154419 1283.119019 1282.786499 1282.619263 1282.16394 1280.96167 1280.302368 1281.19458 1282.581177 1283.388306 1284.01416 1284.208252 1283.872437 1282.835571 1281.226807 1281.848511 1283.839722 1285.545776 1286.78479 1287.426147 1287.812988 1288.124146 1288.576416 1288.87793 1289.342407 1290.373291 1292.089478 1293.398071 1294.212158 1294.907593 1295.112305 1294.950928 1294.766846 1292.357788 1291.111084 1290.972534 1290.520142 1290.129639 1290.466553 1290.788452 1291.577148 1292.802002 1294.34021 1294.469971 1293.338013 1290.817627 1289.039307 1287.165283 1285.421021 1283.773315 1281.57959 1273.338501 1266.643555 1257.678101 1249.497437 1243.599854 1241.555542 1239.862793 1237.999023 1236.128906 1234.576172 1234.175293 1236.91748 1240.470459 1244.542725 1252.475952 1258.386475 1259.615601 1259.447632 1258.439087 1256.579956 1254.491577 1253.101318 1251.321533 1249.235718 1247.38562 1245.464233 1244.005005 1244.60083 1245.829956 1246.653564 1246.774048 1246.354736 1245.438721 1243.338623 1244.73291 1246.928223 1253.474854 1256.270508 1257.898071 1258.837891 1259.260986 1259.300415 1259.081055 1258.43042 1257.666016 1256.695435 1255.685181 1254.244629 1252.828125 1251.062988 1249.426025 1248.117432 1247.022583 1246.335449 1246.039307 1245.757568 1245.459473 1244.987427 1244.046265 1241.27771 1238.455811 1235.739014 1233.852661 1232.124756 1231.209106 1231.121582 1232.234619 1233.486084 1233.851807 1234.60376 1234.792358 1233.875732 1233.35437 1233.727417 1233.437866 1231.891724 1230.06958 1229.067505 1228.082886 1227.191284 1226.573242 1226.45105 1227.031494 1228.161743 1229.800171 1232.193481 1233.067627 1233.332764 1233.575562 1233.450195 1232.528198 1231.16687 1228.601929 1225.674805 1222.224854 1220.689941 1225.93689 1229.653931 1231.667236 1233.596558 1234.373657 1234.677612 1234.648071 1234.312378 1234.05127 1233.932861 1234.028687 1233.98584 1233.706665 1232.937256 1232.107056 1232.390381 1232.42041 1232.493164 1231.259033 1229.74707 1227.950806 1225.862427 1223.983032 1222.258057 1220.337402 1217.213135 1212.939087 1210.930908 1209.571899 1208.015137 1207.589111 1207.764648 1207.713135 1208.310303 1208.956787 1209.189819 1208.930542 1208.109375 1207.701294 1207.501099 1208.056763 1207.980713 1207.29248 1206.27771 1205.826172 1205.459595 1205.040894 1204.450073 1203.597534 1202.790527 1201.967651 1201.158203 1200.53894 1199.890381 1199.034302 1198.04126 1196.435303 1195.497437 1195.50415 1195.489258 1195.464722 1195.277466 1194.98645 1194.549072 1194.0 1193.452271 1192.843994 1192.166992 1191.430664 1190.620605 1189.732666 1189.084351 1188.587769 1188.28186 1187.908447 1187.432373 1186.908569 1186.174561 1185.463867 1184.680054 1184.084839 1183.302612 1181.869995 1178.537354 1175.690186 1175.124023 1175.55249 1175.735962 1176.099731 1176.481079 1176.872925 1177.05835 1177.27124 1177.42688 1177.764526 1178.158081 1178.711792 1179.159546 1179.651855 1180.302368 1181.026123 1181.617065 1182.091187 1182.435913 1183.115723 1184.657349 1185.033203 1184.66687 1182.199829 1175.309082 1175.740845 1176.105103 1176.344482 1177.06604 1177.964233 1179.094116 1180.116211 1181.230225 1182.143066 1182.5 1182.228027 1181.812744 1181.2771 1180.952271 1180.904297 1180.719116 1180.621338 1180.454224 1180.324219 1180.143311 1179.969238 1179.936646 1180.088623 1180.499146 1181.274658 1182.062012 1182.953613 1183.473267 1183.784668 1183.802368 1183.380615 1182.813477 1182.276245 1181.610229 1181.299316 1181.311279 1181.433105 1181.457764 1181.461792 1181.307983 1181.191528 1181.027832 1180.71936 1180.386108 1180.113647 1179.677246 1179.16748 1178.5271 1177.758057 1177.083496 1176.507202 1175.957153 1175.359131 1174.73645 1174.023315 1173.409912 1172.708252 1171.996216 1171.343872 1170.480835 1169.586304 1169.273804 1169.550537 1169.645264 1169.231201 1169.473755 1170.57605 1171.317017 1171.654907 1171.991455 1172.435059 1172.868164 1173.421631 1173.674438 1174.06604 1174.90625 1176.063354 1178.059082 1180.461182 1182.594116 1184.447266 1186.719604 1188.884155 1191.210327 1193.624512 1196.185791 1197.827393 1197.191162 1196.213501 1193.108154 1184.956055 1188.925415 1192.127686 1193.894897 1195.287109 1196.363159 1198.930176 1200.393066 1201.813965 1203.224243 1204.766724 1206.389038 1207.895752 1209.692383 1211.482422 1213.858643 1216.982422 1220.116821 1222.599609 1224.554321 1227.45166 1230.709595 1236.305664 1240.648071 1244.993408 1251.321411 1254.116699 1252.79834 1254.744385 1260.047485 1265.314697 1265.61792 1266.868652 1270.753052 1268.664062 1265.236572 1266.277344 1264.715942 1265.368652 1272.868408 1279.717773 1283.220459 1289.792603 1297.432251 1302.877319 1305.06958 1299.88855 1296.878906 1295.478027 1294.668457 1294.02417 1293.247192 1292.358154 1291.113159 1290.209595 1289.281128 1290.122925 1291.120972 1291.833618 1292.209229 1292.469482 1292.707275 1292.865601 1292.903198 1293.406982 1295.582642 1298.337524 1301.933716 1304.131836 1305.315308 1305.722534 1305.385986 1304.584717 1303.14502 1301.536499 1299.72168 1297.582764 1295.608154 1293.518433 1286.546265 1276.106201 1259.153809 1243.526123 1231.333984 1229.004639 1227.687134 1223.648926 1220.119507 1235.986206 1249.625488 1242.74353 1230.476685 1220.552734 1206.880371 1200.147461 1208.023682 1203.799927 1193.111328 1186.258423 1179.963867 1175.170288 1168.499756 1158.664551 1157.223022 1163.099854 1170.32959 1174.68042 1177.585571 1180.726685 1183.896606 1182.428101 1180.310425 1180.459229 1185.957275 1194.547363 1193.463135 1187.681763 1191.715576 1198.36731 1199.171021 1194.358643 1189.880127 1187.480469 1184.493286 1176.315063 1167.407837 1158.014771 1155.063965 1148.916992 1146.684937 1143.812744 1138.047485 1134.253052 1133.255737 1133.543945 1133.980713 1135.866821 1138.932251 1137.268066 1130.741455 1123.073364 1121.840698 1122.672485 1121.97998 1119.583374 1117.078247 1114.195923 1111.258911 +1327.319458 1308.56958 1292.599854 1273.46106 1265.689087 1273.023926 1274.415771 1273.514038 1268.812256 1260.550537 1252.524414 1241.828125 1229.948608 1217.089844 1204.78186 1197.427124 1190.902344 1184.8302 1180.177734 1174.932495 1170.876831 1168.850708 1167.101807 1165.37146 1163.965942 1162.562378 1160.787231 1158.653442 1161.480957 1168.029419 1174.306763 1181.866943 1189.091675 1199.813843 1209.804565 1224.669434 1244.343628 1264.57605 1288.849854 1327.553101 1345.699219 1341.296631 1332.570312 1326.480835 1320.245605 1314.877197 1307.240723 1304.667603 1305.78833 1306.259399 1306.145142 1304.274658 1295.718628 1289.640381 1283.841309 1272.970215 1255.19043 1259.069214 1268.554688 1274.517578 1279.784668 1282.385864 1283.91687 1288.170654 1292.509644 1288.724121 1282.418457 1277.492065 1270.264893 1270.266968 1269.973267 1267.751099 1264.374023 1260.022339 1256.474121 1256.211792 1257.665771 1259.501099 1259.784424 1258.568237 1257.005005 1256.60498 1255.021118 1253.686035 1253.427124 1253.404541 1252.815308 1252.269531 1251.25415 1249.867188 1248.332031 1246.845947 1245.1521 1236.155762 1242.063232 1245.348267 1248.083984 1250.586548 1253.611084 1255.410522 1256.599243 1257.494629 1258.856567 1262.344604 1267.123169 1273.802979 1280.398926 1282.741577 1283.469604 1284.139526 1284.624268 1285.330566 1286.157471 1286.739746 1287.036377 1286.698364 1286.194092 1285.287964 1284.710083 1284.328369 1283.446777 1282.18335 1280.612793 1281.120728 1283.048706 1284.38623 1285.195312 1285.422485 1285.322144 1284.811279 1284.326538 1285.014038 1286.404663 1287.628662 1289.041016 1290.042114 1290.375 1290.891479 1290.943237 1290.937012 1290.705933 1291.283813 1292.76416 1294.691528 1295.651733 1296.251221 1296.480347 1296.332886 1296.092773 1293.576172 1292.318604 1292.487915 1292.567505 1291.858398 1291.621094 1292.605347 1293.857178 1294.843628 1295.418213 1294.938965 1293.008423 1290.750854 1289.407104 1287.678711 1285.283691 1282.773193 1278.024414 1266.907959 1255.61731 1249.510864 1243.827881 1242.124268 1240.426636 1238.99353 1237.386841 1235.777832 1234.312378 1235.76123 1238.808228 1242.760742 1248.899536 1256.303223 1259.803589 1261.36853 1261.300171 1260.151001 1257.82251 1256.037354 1255.073364 1253.354614 1251.316528 1249.203857 1247.004517 1244.794678 1244.9375 1246.967407 1247.475342 1247.342407 1246.68396 1245.438232 1243.794312 1247.330444 1253.026001 1256.991089 1257.822754 1258.453613 1259.148804 1259.69873 1259.939331 1259.726562 1259.235352 1258.493652 1257.652344 1256.63623 1255.235474 1253.494751 1251.663696 1249.754639 1247.924316 1246.766357 1245.985352 1245.652588 1245.153687 1244.623169 1243.952881 1241.977783 1240.198242 1238.097534 1235.513428 1233.089844 1231.84082 1231.733398 1231.974731 1234.046997 1235.401123 1236.420898 1237.189941 1237.388306 1236.725952 1236.066406 1235.595337 1234.81958 1233.026733 1231.156982 1231.143433 1230.446045 1229.196045 1228.407593 1228.064575 1228.158203 1228.792603 1229.620972 1230.91748 1232.554688 1233.506348 1233.879272 1234.011475 1233.621582 1232.599243 1231.100464 1228.495972 1226.764648 1227.03064 1229.254639 1232.218262 1233.297485 1234.686035 1235.290771 1235.541016 1235.509766 1235.350342 1235.355835 1235.260742 1235.076538 1234.839844 1234.309937 1233.714111 1233.298218 1233.11084 1233.208496 1233.035278 1232.26001 1230.591797 1228.147339 1225.543091 1223.495361 1221.771484 1218.995605 1214.477661 1209.589478 1207.688599 1207.585205 1207.592041 1208.163696 1208.946899 1209.1073 1209.603516 1209.973511 1210.094116 1209.765869 1209.301392 1208.93396 1208.760376 1208.501831 1208.202393 1207.680664 1206.818115 1206.597656 1206.45813 1206.121826 1205.359253 1204.360596 1203.421143 1202.578979 1201.848999 1201.261353 1200.432373 1199.595581 1198.488647 1197.5448 1196.857056 1196.716431 1196.495239 1196.309814 1195.90332 1195.68103 1195.390869 1194.86853 1194.182495 1193.557617 1192.792725 1192.028076 1191.15918 1190.242065 1189.506714 1188.910767 1188.438843 1187.985718 1187.427979 1186.783081 1186.056274 1185.258179 1184.482056 1183.77063 1182.888184 1180.334106 1177.935913 1176.056519 1175.744263 1176.050537 1176.410767 1176.727295 1177.086792 1177.608765 1177.862183 1178.106323 1178.344849 1178.797119 1179.30127 1179.807007 1180.268066 1180.585571 1181.10791 1181.971191 1182.825073 1183.656616 1183.860229 1184.224487 1185.643066 1185.983765 1185.548218 1184.605713 1183.634644 1178.775146 1176.952881 1177.131714 1177.721436 1178.663208 1179.824951 1180.997559 1181.982544 1182.919556 1183.369019 1183.130371 1182.689087 1182.189819 1181.959473 1181.718018 1181.530884 1181.394775 1181.176636 1180.958374 1180.741333 1180.588257 1180.446411 1180.589478 1180.917725 1181.533813 1182.15564 1183.03125 1183.809082 1184.1521 1184.267944 1184.072632 1183.463989 1182.876831 1182.214111 1182.076172 1182.038086 1182.189575 1182.209229 1182.16626 1182.113159 1182.107178 1181.965332 1181.63269 1181.181885 1180.858154 1180.357056 1179.787598 1179.240356 1178.442261 1177.77063 1177.137573 1176.619263 1176.026123 1175.328735 1174.611816 1173.882812 1173.174072 1172.466919 1171.784058 1171.086792 1170.419067 1170.046875 1170.47998 1170.879395 1170.845093 1170.572144 1170.123657 1169.474609 1169.731812 1170.61377 1171.198853 1171.950928 1173.068481 1173.822632 1174.576416 1175.520142 1176.833008 1178.563599 1180.342407 1181.855469 1183.661987 1186.703491 1189.61377 1192.133545 1194.288574 1196.739014 1199.010742 1199.956055 1199.413818 1197.641113 1195.60022 1193.467651 1193.458252 1193.903442 1194.507324 1195.103882 1197.784668 1199.342407 1200.763062 1202.050781 1203.613525 1205.010254 1206.437378 1208.13562 1209.962524 1211.806763 1214.804443 1218.380859 1220.423706 1221.621216 1223.559082 1229.239502 1233.027588 1236.928589 1241.35083 1245.602539 1247.831665 1247.591675 1250.141479 1254.38208 1255.48291 1253.754639 1254.363281 1256.7146 1257.396851 1259.397339 1256.231689 1254.556519 1258.752563 1264.283936 1266.578979 1269.283447 1278.858398 1289.658569 1294.373291 1295.77063 1296.22583 1295.779297 1295.396729 1294.980225 1294.580444 1294.618896 1294.733765 1294.372925 1293.814453 1293.356689 1293.334595 1292.70105 1292.369507 1292.769531 1292.807251 1292.851318 1292.848145 1292.856079 1292.876099 1294.082031 1298.310059 1302.905518 1306.260254 1306.328369 1305.921997 1306.046997 1305.835815 1304.686523 1302.473999 1300.865967 1299.051147 1297.391357 1295.654175 1293.33728 1282.832397 1266.120239 1251.133423 1236.400391 1227.55542 1220.76416 1216.195435 1211.916626 1217.648193 1237.276245 1231.335693 1223.235474 1209.348999 1193.208862 1191.510864 1192.048828 1190.185181 1186.326172 1182.322266 1170.843262 1165.46936 1160.931152 1162.187378 1167.411743 1172.479492 1177.581055 1182.238892 1185.897705 1189.27124 1190.390015 1188.991455 1186.82666 1185.557007 1194.723145 1200.985352 1202.517212 1202.195435 1207.373291 1210.060181 1204.298584 1199.60437 1196.180664 1185.873535 1182.652344 1185.003906 1175.747803 1166.551758 1157.938965 1153.116211 1149.652222 1146.253052 1138.348511 1133.771484 1134.192749 1135.791748 1135.944214 1137.258423 1143.471802 1145.310791 1138.712891 1131.352417 1126.077759 1125.069946 1122.740112 1120.638184 1118.246948 1115.629883 1113.509155 +1327.34082 1304.28186 1286.866455 1274.887085 1263.218262 1254.723389 1257.686523 1255.068726 1249.932861 1245.018433 1240.770996 1233.923706 1222.95459 1210.733643 1201.942749 1195.681641 1190.152222 1185.390259 1177.762085 1170.295532 1169.03833 1167.111938 1165.312134 1163.7948 1162.596191 1161.404297 1160.136108 1160.216431 1167.058105 1173.500732 1181.415894 1188.901855 1197.962769 1207.496826 1217.815308 1240.70874 1255.443848 1273.171021 1296.203979 1337.08728 1346.352783 1343.024902 1335.758667 1329.110352 1321.78772 1316.372925 1309.934692 1305.719849 1302.781616 1304.060547 1301.866333 1292.352539 1287.788696 1283.504395 1279.140503 1265.806641 1254.893311 1263.552979 1272.598511 1279.703857 1283.029907 1285.407593 1288.088501 1291.854492 1294.315063 1292.131104 1284.571777 1278.802124 1277.498169 1275.372192 1273.20166 1270.210815 1263.80835 1256.654663 1255.914551 1262.733398 1263.047119 1262.10437 1261.560425 1260.916382 1259.524292 1258.523315 1256.514038 1254.984009 1254.967651 1255.77356 1255.715576 1254.613281 1252.947021 1251.27478 1249.549438 1247.497925 1245.18689 1237.418823 1242.13623 1245.520142 1248.448975 1253.316895 1256.625 1257.956909 1259.562988 1261.094849 1262.626587 1265.057129 1268.227295 1275.216675 1280.599854 1282.676147 1283.710449 1284.53772 1285.348999 1286.402588 1287.502808 1288.589233 1288.957397 1288.695435 1288.094482 1287.345215 1286.643799 1286.015259 1285.042603 1283.735107 1282.523804 1283.117554 1284.563232 1285.80896 1286.735596 1287.432007 1287.512573 1287.339355 1287.281738 1287.977173 1289.01123 1289.79126 1291.068359 1292.38501 1292.92334 1293.140625 1293.057495 1292.373169 1292.218994 1292.023315 1293.248169 1295.505127 1296.723511 1297.392456 1297.659912 1297.692871 1297.411377 1295.051147 1293.955688 1294.768433 1294.803101 1293.667847 1292.695557 1294.432617 1296.427002 1297.179932 1296.692505 1295.521973 1292.845459 1291.298218 1290.844604 1288.231079 1284.008911 1279.674683 1270.552246 1258.337402 1250.432007 1244.164673 1242.472656 1240.80249 1239.53125 1238.332031 1237.03186 1235.604736 1235.110352 1237.922974 1240.593262 1245.014038 1254.55481 1260.588745 1264.002563 1264.405151 1263.576172 1262.116699 1260.257812 1258.529785 1257.190918 1255.738037 1253.432251 1251.420044 1249.602295 1248.328857 1248.317871 1248.731689 1248.868774 1248.262573 1247.312622 1245.872437 1244.657593 1248.535278 1255.274902 1258.172852 1258.701172 1259.060791 1259.584229 1260.122681 1260.414795 1260.33667 1259.914429 1259.108765 1258.24292 1256.920654 1255.445557 1253.739746 1251.946045 1249.706787 1247.447144 1245.151489 1244.531982 1244.307373 1243.955322 1243.201538 1242.295532 1241.174805 1239.93689 1238.153931 1235.87854 1232.572266 1232.157959 1233.172241 1233.915405 1235.603027 1237.593262 1239.447388 1240.972046 1241.292236 1240.452026 1238.736816 1237.270142 1235.918579 1233.957642 1232.183228 1232.790161 1232.267456 1231.063843 1229.91394 1229.176392 1229.083862 1229.305176 1229.811401 1230.52832 1231.671021 1233.392456 1234.033813 1234.416748 1234.342407 1233.853638 1232.991089 1231.618652 1229.881592 1230.339355 1232.188477 1233.557861 1234.780518 1235.690552 1236.273926 1236.619263 1236.540405 1236.567261 1236.457397 1236.28772 1236.0625 1235.678833 1235.168945 1234.693481 1234.280884 1234.065308 1233.832153 1233.568726 1232.934448 1230.721069 1227.314209 1223.89917 1221.689697 1219.228516 1215.892456 1210.856323 1208.516235 1208.248779 1208.524658 1208.82373 1209.522827 1210.116455 1210.380493 1210.704956 1211.113037 1211.056396 1210.910034 1210.59729 1210.166626 1209.793457 1209.062256 1208.254517 1207.78894 1207.194336 1207.389404 1207.390015 1207.325684 1206.258057 1204.955688 1204.082153 1203.290649 1202.543701 1201.779175 1201.025269 1200.071899 1199.176392 1198.45874 1197.935791 1197.602905 1197.348511 1196.995605 1196.634521 1196.289429 1195.956177 1195.501709 1194.864136 1194.102173 1193.37146 1192.501221 1191.689941 1190.810059 1189.819702 1189.099976 1188.502563 1187.952515 1187.360474 1186.648682 1185.885376 1185.049316 1184.158325 1183.237427 1181.208618 1178.901123 1176.688599 1176.08667 1176.335083 1176.71106 1177.071045 1177.456787 1177.837402 1178.287109 1178.640869 1178.842773 1179.203857 1179.718872 1180.29895 1180.892212 1181.351074 1181.671265 1181.843872 1182.438477 1183.563477 1184.769043 1185.302002 1186.133789 1186.98645 1187.384521 1187.036011 1185.896606 1184.069946 1181.116455 1177.782471 1177.759644 1178.364258 1179.363892 1180.461426 1181.646362 1182.854614 1183.173828 1183.719849 1183.712646 1183.517334 1183.120361 1182.747437 1182.446533 1182.258179 1182.091553 1181.891113 1181.674927 1181.410645 1181.124023 1181.070068 1181.042603 1181.281494 1181.729858 1182.488159 1183.218262 1184.014526 1184.387573 1184.544556 1184.573242 1184.140503 1183.49939 1182.900757 1182.792236 1182.951904 1183.006104 1182.987915 1182.927246 1182.921265 1182.919312 1182.775269 1182.513062 1182.010864 1181.568237 1181.09021 1180.472534 1179.916992 1179.178101 1178.437012 1177.782104 1177.307739 1176.629395 1175.9198 1175.127075 1174.369995 1173.607178 1172.880371 1172.168335 1171.364624 1170.734985 1170.564819 1171.122437 1171.535767 1171.683594 1171.748413 1171.455811 1171.150146 1171.324341 1170.996948 1169.961304 1171.06897 1172.388184 1173.563232 1174.549438 1175.69519 1177.199707 1178.700439 1180.122559 1181.439209 1182.865845 1186.385742 1189.856079 1193.21106 1195.601196 1198.722046 1201.351196 1202.230835 1201.366333 1199.931152 1198.127319 1196.204712 1194.6604 1194.216064 1194.334961 1194.668701 1196.96228 1198.308838 1199.71814 1200.980469 1202.221802 1203.561035 1204.985352 1206.629761 1207.793091 1209.509155 1211.473145 1214.546387 1216.751587 1218.071655 1219.974365 1224.471924 1228.832886 1232.588989 1236.922852 1241.112183 1242.908813 1242.466919 1245.059204 1246.343994 1245.764038 1246.188721 1248.257324 1249.920898 1251.961548 1252.756958 1248.826172 1245.906128 1253.712036 1259.143799 1260.859009 1266.871216 1273.238525 1278.010864 1281.692505 1284.377441 1285.425293 1286.215332 1288.661621 1289.720947 1289.509033 1290.490112 1292.472778 1294.946167 1294.353882 1294.194092 1294.168579 1294.131958 1293.50708 1293.07019 1292.882446 1292.83728 1292.845703 1292.849609 1292.842773 1292.901733 1296.388794 1300.997803 1303.977661 1303.528442 1303.648926 1304.868164 1305.959473 1305.732422 1303.880005 1302.028809 1299.534302 1297.611816 1296.686768 1294.740234 1287.123779 1268.457153 1255.162598 1241.003174 1229.805176 1222.925049 1215.153687 1206.471313 1211.614868 1221.57312 1222.122559 1209.250732 1199.810669 1191.319092 1185.817383 1184.558105 1177.344604 1168.232666 1166.415283 1166.500244 1166.784302 1167.352173 1170.16748 1174.799072 1179.20874 1182.768311 1192.312012 1197.108398 1198.301392 1197.089233 1195.502075 1195.893066 1193.85144 1201.026001 1208.155762 1210.842896 1211.172729 1210.254028 1199.953247 1196.082397 1196.282959 1189.749878 1179.775513 1172.653931 1179.376953 1176.606201 1173.011841 1161.093994 1152.834473 1148.055298 1144.659302 1138.668579 1134.625 1138.421753 1140.681885 1141.577881 1142.814941 1145.668579 1148.034546 1145.804443 1134.104004 1129.632568 1127.074463 1123.917603 1121.323364 1119.209473 1117.294434 1115.510742 +1333.147217 1312.151733 1295.839233 1279.947876 1265.861084 1253.28833 1241.898682 1237.820312 1236.566528 1233.940186 1227.587769 1221.49646 1214.7771 1206.467896 1198.943481 1193.040405 1187.586182 1183.94104 1176.278809 1170.539795 1168.099976 1165.897827 1163.722656 1162.182007 1161.299683 1160.69458 1159.656006 1164.00647 1170.086548 1178.809082 1187.786499 1196.064575 1204.213013 1214.398438 1230.860352 1249.054688 1266.24585 1283.432251 1312.665405 1341.962891 1346.924805 1344.340698 1337.798462 1329.009399 1321.320801 1315.392212 1311.674805 1308.016846 1304.019897 1292.843018 1295.675903 1292.757202 1284.97168 1278.622925 1271.831909 1261.134644 1257.97522 1267.554565 1275.788696 1281.975098 1285.036621 1287.450439 1290.087158 1293.190552 1294.346924 1293.613281 1285.283691 1280.536865 1281.970825 1280.282959 1275.699219 1271.053467 1260.297363 1256.223633 1264.304565 1270.657959 1267.320923 1264.673462 1264.296143 1263.70105 1261.917114 1259.690063 1256.943481 1255.759521 1256.532837 1257.772095 1257.709473 1256.385986 1254.124023 1252.539917 1251.041382 1248.327271 1244.944336 1238.432861 1241.539673 1244.408325 1247.702881 1253.604736 1257.426758 1258.611084 1260.621216 1265.01355 1266.514771 1267.791992 1272.272095 1277.555298 1281.497925 1282.909058 1283.726074 1284.33728 1285.463379 1287.060791 1288.893677 1290.416748 1290.848633 1290.722046 1290.119141 1289.319336 1288.543335 1287.954102 1287.18042 1286.38147 1285.714355 1285.962891 1286.748657 1287.592773 1288.769287 1289.642212 1290.016235 1289.774292 1289.61499 1290.195557 1291.311768 1291.888062 1292.988403 1294.598145 1295.539917 1295.932983 1295.768677 1294.873291 1294.440918 1293.925903 1295.031128 1296.833862 1298.20105 1298.719604 1298.986816 1299.015869 1298.971313 1298.369507 1298.470215 1299.211792 1298.742676 1298.085449 1297.455688 1298.363281 1299.497192 1299.594116 1298.467285 1296.610107 1293.775391 1292.991699 1293.399414 1290.768555 1282.619751 1274.238892 1262.944092 1253.692261 1247.088989 1243.19104 1241.503296 1239.979248 1238.737427 1237.86145 1236.741821 1235.296631 1237.704468 1242.428833 1242.835449 1247.20813 1259.596313 1266.745117 1268.412231 1267.04895 1265.770386 1264.618164 1263.084106 1261.208496 1259.275513 1256.785278 1254.806885 1253.294189 1252.266357 1251.407227 1251.086792 1250.955566 1250.574829 1249.860229 1248.734009 1246.920166 1245.064209 1247.784424 1254.347778 1257.970459 1258.852783 1259.232788 1259.753784 1260.485352 1260.977783 1261.03833 1260.594238 1259.769287 1258.601318 1257.151978 1255.68457 1254.17688 1252.123779 1249.586304 1246.932129 1244.800415 1243.786499 1243.792847 1243.464966 1242.818359 1242.18811 1241.384033 1240.345703 1239.044067 1237.241943 1235.102783 1234.217651 1234.671265 1235.610596 1237.114014 1239.220215 1242.458008 1244.235718 1244.474365 1243.407837 1240.812744 1239.044189 1237.689209 1236.251221 1234.81665 1234.25061 1233.581299 1232.324219 1231.800537 1230.36438 1229.888062 1229.88208 1230.222534 1230.63855 1231.516602 1233.201294 1234.065796 1234.738159 1234.902832 1234.660522 1233.964478 1232.802612 1231.2771 1231.602905 1232.916138 1234.607178 1235.848389 1236.763428 1237.35791 1237.661133 1237.666748 1237.592407 1237.389038 1237.211792 1236.892456 1236.488525 1236.022827 1235.496948 1235.042358 1234.714722 1234.416016 1234.054932 1233.241455 1230.507568 1224.624146 1220.919312 1215.935913 1214.08313 1212.884644 1209.222046 1209.616455 1209.84436 1210.124268 1210.424927 1210.928711 1211.319824 1211.638672 1212.038208 1212.282715 1212.4823 1212.376221 1212.194702 1211.737549 1211.195068 1210.300903 1208.776001 1208.028687 1207.665894 1208.184692 1208.038086 1207.747559 1206.752563 1205.619385 1204.650513 1203.862915 1203.092163 1202.336304 1201.477905 1200.602417 1199.872559 1199.294312 1198.817749 1198.379028 1198.023926 1197.630859 1197.254639 1196.891846 1196.515869 1195.99646 1195.358887 1194.528809 1193.713013 1193.015625 1192.152344 1191.24939 1190.332275 1189.385498 1188.553101 1187.74939 1187.091064 1186.485474 1185.639038 1184.796631 1183.671875 1182.291382 1179.742065 1177.053833 1176.754639 1176.77356 1177.060913 1177.388794 1177.737305 1178.198853 1178.616211 1179.080566 1179.373901 1179.728394 1180.103394 1180.561157 1181.088379 1181.816162 1182.404419 1182.736816 1182.862915 1182.663452 1183.185059 1185.213989 1186.598267 1187.835938 1188.884033 1189.431885 1189.082642 1187.64978 1185.230469 1182.345947 1178.533325 1178.114136 1178.805908 1180.076416 1181.275391 1182.309692 1183.188477 1183.466553 1184.003906 1184.155884 1184.053589 1183.801636 1183.426147 1183.239014 1183.038208 1182.860352 1182.599121 1182.39978 1182.141968 1181.831055 1181.511475 1181.479614 1181.638428 1181.952026 1182.541504 1183.463623 1184.222778 1184.65564 1184.962891 1184.944824 1184.692017 1184.110718 1183.755371 1183.773682 1183.822998 1183.88623 1183.853149 1183.791504 1183.734741 1183.692505 1183.537354 1183.2323 1182.76416 1182.182129 1181.630371 1181.169189 1180.569092 1179.819214 1179.134644 1178.641357 1178.004639 1177.291992 1176.609619 1175.837524 1174.985718 1174.160278 1173.376343 1172.575562 1171.684326 1170.882935 1170.768555 1171.199341 1171.867432 1172.173218 1172.400635 1172.256592 1172.060303 1171.98645 1171.775024 1170.913818 1170.760742 1172.108887 1173.363159 1174.573364 1175.814453 1177.221436 1178.68811 1180.013306 1181.303467 1182.778442 1186.113159 1190.235352 1193.918091 1197.049927 1201.150635 1205.13269 1205.270874 1203.732178 1202.247925 1200.478271 1198.459839 1196.987305 1195.795166 1195.191162 1194.748047 1195.965698 1197.256958 1198.36853 1199.588623 1201.00354 1202.433228 1203.686646 1204.768555 1205.769287 1207.020996 1207.932251 1210.186768 1213.336914 1215.449219 1217.557373 1220.492188 1225.003174 1228.824585 1232.670288 1235.371216 1236.870483 1238.318848 1240.693481 1240.868896 1240.102661 1240.954834 1242.929932 1245.328857 1245.66748 1245.014282 1242.612549 1242.184326 1247.572998 1253.474609 1254.512329 1257.009033 1268.689819 1271.565308 1273.551758 1275.032471 1275.391602 1276.307983 1281.805786 1281.967285 1281.87207 1283.182373 1287.633423 1293.747803 1294.059082 1294.283325 1294.483398 1294.860352 1294.885254 1294.3479 1293.743408 1293.11438 1292.9729 1292.903687 1292.836548 1292.810791 1295.011841 1297.709351 1299.541016 1298.891846 1299.765991 1302.278687 1305.848267 1306.284668 1305.115479 1301.668457 1297.172119 1296.610352 1296.908813 1295.998169 1290.835571 1278.302246 1259.668823 1244.274902 1231.280029 1226.151855 1217.938477 1208.100342 1195.855103 1207.990479 1202.991943 1198.889893 1187.412598 1178.438965 1174.999756 1172.260864 1172.315918 1173.931763 1176.175171 1178.43457 1180.065552 1177.930054 1177.166016 1180.528076 1186.468872 1193.788086 1201.137085 1204.244995 1204.972168 1203.697754 1203.369751 1202.816406 1203.457031 1209.165283 1215.921265 1218.709839 1215.681641 1207.430298 1195.46228 1184.736084 1183.853149 1179.988403 1172.680542 1165.352661 1171.018188 1170.291748 1165.936646 1158.422852 1146.366211 1145.33728 1143.859009 1141.438477 1140.625854 1145.064941 1146.919312 1147.003296 1146.305298 1147.045532 1148.01123 1145.330322 1133.649048 1131.998291 1130.689697 1126.89917 1122.932983 1120.902954 1119.163086 1117.353027 +1334.231079 1316.880493 1301.622925 1284.169556 1269.431641 1255.449341 1237.672974 1227.984741 1221.036987 1219.537354 1215.603027 1212.810791 1208.696411 1200.909912 1195.133179 1189.533325 1183.449219 1179.726562 1173.522583 1169.572876 1167.061279 1164.734375 1162.621216 1160.836792 1160.370483 1160.543701 1166.461426 1171.261597 1174.440063 1184.376831 1196.429932 1203.670776 1210.560669 1220.372925 1239.042114 1254.200684 1273.318359 1296.986206 1325.818237 1346.222412 1347.309082 1343.562134 1337.368042 1329.680908 1321.565796 1315.563843 1311.816284 1308.358154 1304.714722 1293.965332 1292.897949 1291.958374 1286.01355 1280.949951 1272.687012 1260.630737 1262.650269 1269.930542 1278.297974 1283.169556 1286.360107 1288.925415 1291.136353 1294.090698 1295.124756 1293.22229 1289.224976 1285.70813 1285.1073 1282.860229 1276.910156 1267.851562 1255.643677 1261.711914 1269.789062 1272.323486 1267.664185 1266.396484 1267.58728 1267.286865 1264.851074 1261.295532 1257.026733 1256.747437 1258.318481 1259.036255 1258.693848 1256.920654 1254.623535 1253.71521 1253.353638 1250.805176 1244.942627 1239.728516 1241.092773 1243.127319 1245.796021 1250.034302 1254.184692 1256.819336 1259.888428 1266.648315 1270.189819 1270.292603 1273.171021 1278.679688 1281.810303 1283.175171 1283.600342 1283.697266 1284.374146 1286.769775 1290.320435 1292.236084 1292.330933 1292.463013 1292.147461 1291.432251 1290.730591 1289.93811 1289.450195 1288.739258 1288.176758 1288.272827 1288.692139 1289.285278 1290.4375 1292.347778 1292.411987 1291.292114 1291.230469 1292.334351 1292.99646 1293.18457 1294.724121 1296.720093 1297.957886 1298.584717 1298.567261 1298.329224 1298.408569 1298.058716 1298.610962 1299.370972 1299.924805 1300.160645 1300.367188 1300.39917 1300.603027 1301.534912 1302.474365 1304.248535 1304.740234 1304.032349 1302.981201 1302.989136 1302.802124 1302.371094 1300.470825 1298.029663 1296.030884 1295.071777 1294.712646 1292.815796 1281.327148 1270.723877 1259.681885 1252.251343 1246.316895 1242.993408 1241.033569 1239.31958 1238.201782 1237.334595 1236.056641 1237.386719 1243.635498 1247.720581 1248.483032 1252.737549 1262.717407 1270.79126 1271.822876 1269.991089 1268.207275 1267.266357 1266.043335 1264.005249 1261.435181 1258.617432 1256.398682 1255.197021 1254.206177 1253.44519 1253.494019 1253.248291 1252.556763 1251.665527 1251.154297 1249.828491 1247.374268 1246.3125 1249.936279 1255.653442 1257.984375 1258.612549 1259.666748 1260.602905 1261.330811 1261.524658 1261.168823 1260.32666 1259.070557 1257.814331 1256.88916 1255.129883 1252.754028 1250.05481 1247.035034 1244.299683 1243.939941 1243.886719 1243.481323 1242.912598 1242.434937 1241.963135 1241.406738 1240.346436 1239.16626 1237.80603 1236.986328 1236.955811 1237.435913 1238.57312 1240.341187 1243.494873 1244.427368 1244.451416 1243.781494 1241.773682 1240.95105 1240.262085 1238.97998 1237.308838 1235.923218 1234.814575 1233.785034 1232.875854 1231.574707 1230.842041 1230.537964 1230.583618 1230.842407 1231.634521 1232.61084 1233.998901 1235.276611 1235.651489 1235.677979 1235.001099 1233.924316 1232.22229 1231.745117 1233.63855 1235.634033 1236.953613 1237.900757 1238.465576 1238.636353 1238.580933 1238.405762 1238.097656 1237.842529 1237.394897 1236.933838 1236.456055 1235.915527 1235.447876 1235.083374 1234.761719 1234.337769 1233.003418 1228.395996 1221.654297 1217.348389 1211.826904 1211.619019 1210.405884 1210.926147 1211.695801 1211.951904 1211.89209 1212.119385 1212.429443 1212.710083 1213.03479 1213.362915 1213.796753 1214.019287 1214.062378 1213.823608 1213.476196 1212.914185 1212.089111 1211.022583 1209.331787 1208.428467 1208.400757 1208.013916 1207.437012 1206.603271 1205.713501 1204.934204 1204.175293 1203.555542 1202.673462 1201.860107 1201.117676 1200.529053 1200.003662 1199.446899 1199.029419 1198.588989 1198.2146 1197.788818 1197.259644 1196.84021 1196.336914 1195.642334 1194.902588 1194.149536 1193.389404 1192.560303 1191.675171 1190.544434 1189.517822 1188.492798 1187.651855 1186.838623 1186.175293 1185.539551 1184.760132 1183.689087 1182.10022 1178.736694 1177.34082 1177.354126 1177.684814 1177.745483 1178.151611 1178.526978 1179.067505 1179.530396 1180.020508 1180.347534 1180.542725 1180.938965 1181.454346 1182.079102 1182.728394 1183.33374 1183.991089 1183.978516 1183.214478 1183.396973 1185.561157 1187.52832 1189.438843 1191.016235 1191.952271 1191.606567 1190.146973 1187.408325 1183.803955 1180.788208 1178.903076 1178.765747 1181.161621 1182.47937 1182.485352 1183.051392 1183.85144 1184.275391 1184.401733 1184.435791 1184.131714 1183.966675 1183.865112 1183.733154 1183.588989 1183.349121 1183.127075 1182.916504 1182.621216 1182.106079 1181.942505 1181.996338 1182.134399 1182.568481 1183.312744 1184.352783 1184.876953 1185.364502 1185.419678 1185.316528 1184.994019 1184.75647 1184.728271 1184.810059 1184.752563 1184.643188 1184.642456 1184.617188 1184.50354 1184.347534 1184.024048 1183.539185 1182.936768 1182.381226 1181.808594 1181.293945 1180.517212 1179.850708 1179.261353 1178.661255 1178.001099 1177.232178 1176.301025 1175.394287 1174.60376 1173.684937 1172.800659 1171.875732 1170.968018 1170.817017 1171.19397 1172.08313 1172.603149 1172.808594 1172.875977 1172.751831 1172.437134 1171.936279 1170.979004 1170.842529 1172.154541 1173.29187 1174.588867 1175.852539 1177.192993 1178.528076 1179.849731 1181.258179 1182.616333 1185.536987 1189.562988 1193.630737 1197.947998 1202.755127 1207.990601 1207.926514 1206.092651 1204.574219 1202.897827 1200.988281 1199.457275 1198.430054 1197.626343 1196.467773 1195.065063 1195.993286 1197.009033 1198.218506 1200.143555 1201.913818 1203.207397 1204.218262 1204.891602 1205.723022 1206.508545 1207.953369 1210.983765 1213.199219 1215.425171 1217.938477 1220.883057 1224.516724 1228.093506 1230.458008 1231.931274 1233.620605 1235.520264 1235.286865 1234.301392 1236.523804 1238.799438 1240.362793 1240.694092 1239.622192 1238.45874 1239.577759 1243.546631 1245.666382 1245.628906 1251.681763 1258.263794 1263.573608 1267.192139 1268.019775 1267.575562 1268.71814 1269.213989 1269.615356 1270.484619 1271.4104 1276.201904 1282.543091 1292.61438 1293.456787 1294.477295 1295.183105 1295.605713 1295.665405 1295.051147 1294.366089 1294.216431 1293.823853 1293.070679 1292.818359 1292.914429 1295.020264 1295.957275 1293.140015 1294.913696 1298.954956 1303.098267 1306.354492 1306.385254 1297.743774 1291.29248 1292.809448 1295.853516 1296.160522 1294.940308 1287.05835 1275.215942 1256.780151 1242.129028 1234.324829 1220.550781 1210.225708 1196.564819 1190.862793 1191.05249 1179.514038 1180.117798 1185.638428 1186.292847 1183.109375 1180.267944 1179.769043 1185.029297 1193.372681 1195.869385 1190.904175 1182.188721 1185.336914 1192.748535 1203.952881 1211.095459 1213.256592 1213.446167 1211.308472 1211.714478 1210.813232 1209.595459 1217.051514 1222.405273 1222.500122 1214.47998 1204.141724 1192.752686 1183.531982 1174.616699 1170.958374 1165.688477 1159.354492 1154.240234 1156.723511 1153.015137 1144.981689 1145.072388 1145.216553 1145.158569 1144.789551 1145.022461 1151.524902 1157.127197 1154.879517 1152.919312 1147.727539 1144.815552 1138.785767 1134.298828 1138.120728 1135.38562 1131.711914 1126.542969 1122.418945 1120.675049 1118.904297 +1333.116333 1317.105347 1305.922729 1286.795898 1271.238892 1259.6875 1247.063721 1235.27417 1224.423218 1216.192993 1207.871094 1206.223755 1199.882324 1194.316895 1191.412476 1186.834229 1181.627319 1175.721802 1170.862305 1168.422974 1165.977295 1163.939941 1162.066772 1161.914673 1164.747803 1169.417847 1175.92334 1184.578125 1185.889282 1191.549683 1201.610107 1208.547607 1215.419556 1228.136475 1245.935181 1261.514893 1281.054321 1306.319336 1330.746948 1348.044556 1349.636597 1342.96814 1336.992676 1329.060547 1320.119263 1314.478638 1309.943237 1306.751953 1300.46521 1292.533325 1289.533936 1288.653076 1284.270508 1279.306519 1272.306885 1259.806274 1267.44397 1273.471558 1278.622314 1283.573853 1288.174927 1290.608276 1292.900269 1298.399902 1297.51709 1292.616455 1292.370117 1291.610107 1286.327026 1281.068115 1274.122803 1264.925903 1260.905762 1270.24939 1278.945557 1280.541504 1271.387451 1267.718506 1269.833374 1270.018066 1267.725342 1264.27478 1261.616455 1260.167358 1260.263428 1260.315063 1259.135254 1256.944458 1255.076538 1255.320923 1256.194458 1255.821289 1250.353516 1243.965332 1241.0448 1242.57373 1244.305054 1246.217163 1248.499878 1249.427246 1251.357544 1255.228638 1258.345703 1263.248901 1269.197876 1273.812622 1278.171387 1280.833496 1282.569946 1281.79834 1280.966919 1285.531128 1290.919678 1293.374268 1293.468994 1293.065796 1293.101685 1292.946777 1292.787109 1292.147095 1291.374512 1290.513916 1289.880005 1289.925903 1290.378906 1290.943237 1291.743042 1293.546753 1293.671875 1292.465576 1292.654175 1294.115723 1294.890625 1295.499146 1296.914185 1298.758057 1300.433838 1301.421509 1302.095825 1302.453369 1302.628174 1302.045654 1302.039429 1302.09668 1301.799683 1301.614136 1301.429932 1301.632568 1302.326904 1303.760498 1304.94104 1305.729614 1305.518799 1306.093628 1306.605713 1305.43811 1305.656494 1304.838623 1302.104492 1298.625854 1296.674438 1296.164673 1295.683594 1292.794922 1278.574463 1266.591431 1257.893433 1251.267212 1245.963135 1242.778076 1240.347778 1238.634766 1237.567017 1236.755371 1237.958984 1242.403687 1249.076782 1254.748047 1257.308472 1256.614868 1264.126831 1270.773682 1274.993286 1278.448486 1278.233032 1273.160156 1269.352051 1266.9021 1263.744507 1260.798096 1257.875732 1255.880249 1255.848389 1255.739014 1255.597412 1255.312622 1254.006348 1253.554932 1254.000732 1254.956055 1252.639282 1248.411865 1247.307495 1252.497314 1255.486694 1256.322632 1259.120483 1260.729248 1261.729736 1262.009155 1261.730957 1260.986084 1259.655151 1258.481689 1257.124268 1255.663086 1253.565186 1251.070679 1248.406128 1246.101807 1245.602051 1245.331299 1244.470337 1243.802124 1243.129639 1242.715332 1242.627686 1242.282227 1241.097656 1239.921143 1239.124634 1238.973389 1239.263672 1239.9375 1241.024048 1242.839478 1244.332397 1244.345093 1243.306152 1242.931152 1243.269165 1242.845581 1241.800781 1239.603149 1237.70874 1236.160645 1234.781494 1233.460571 1232.41394 1231.822754 1231.025757 1230.955444 1231.077515 1231.4729 1231.887939 1231.971436 1235.431763 1236.613281 1237.135498 1236.823364 1235.653564 1233.524292 1232.176636 1234.724609 1237.012817 1238.273682 1239.094604 1239.513794 1239.536011 1239.28894 1238.936768 1238.438721 1237.998901 1237.497437 1236.911377 1236.327515 1235.907837 1235.442017 1234.810059 1233.463989 1231.813721 1227.959473 1220.905762 1217.674072 1215.125732 1212.964966 1214.706177 1215.066895 1215.192627 1214.896851 1214.316895 1213.853394 1213.736816 1213.773804 1214.10498 1214.388794 1214.843384 1215.419556 1215.758057 1215.845581 1215.612183 1215.200684 1214.69104 1213.999634 1212.701172 1210.714233 1209.318481 1208.325684 1207.657349 1206.836304 1206.072388 1205.587402 1205.126587 1204.495728 1203.723999 1202.95459 1202.316284 1201.752197 1201.100952 1200.50061 1199.925049 1199.432983 1199.043823 1198.621948 1198.178345 1197.677979 1197.120483 1196.446655 1195.869629 1195.189575 1194.463013 1193.851929 1193.002075 1191.954834 1190.833862 1189.532593 1188.415039 1187.526855 1186.710571 1185.98938 1185.344971 1184.684326 1183.885132 1182.541016 1179.096191 1177.682861 1177.945923 1178.252563 1178.563354 1178.846436 1179.362061 1179.875977 1180.488403 1181.159912 1181.455078 1181.447266 1181.612427 1182.056763 1182.751343 1183.509399 1184.538818 1184.96936 1184.903564 1183.971313 1183.07605 1185.305176 1188.516968 1191.127808 1193.181274 1194.34668 1194.383179 1193.051025 1189.193481 1183.897217 1181.731567 1180.289429 1179.450928 1183.248169 1183.534302 1183.296509 1183.404785 1184.118774 1184.492798 1184.682495 1184.746338 1184.687378 1184.539551 1184.507568 1184.449951 1184.285156 1184.09021 1183.895508 1183.682251 1183.310669 1182.803833 1182.402222 1182.317261 1182.359375 1182.654297 1183.15918 1184.265991 1185.063232 1185.769409 1186.033447 1186.037598 1185.942871 1185.737793 1185.707397 1185.689575 1185.535156 1185.516113 1185.490845 1185.403809 1185.369263 1185.162476 1184.78479 1184.282227 1183.715576 1183.11438 1182.519775 1181.998413 1181.283813 1180.518066 1179.946655 1179.319214 1178.606201 1177.821533 1176.935547 1175.937256 1175.056152 1174.12439 1173.07019 1172.080811 1171.046509 1170.940308 1171.423096 1172.302734 1172.903809 1173.215088 1173.238159 1173.033325 1172.566162 1172.011597 1171.078857 1170.859619 1172.161377 1173.46582 1174.588745 1175.771484 1177.073486 1178.356079 1179.700073 1180.900879 1182.408203 1185.077026 1189.139771 1193.393188 1197.548828 1202.386963 1207.258789 1208.71228 1208.276245 1206.834351 1205.18103 1203.509277 1202.17688 1200.959839 1199.918213 1198.875 1196.116089 1194.990967 1195.424927 1197.071289 1200.273193 1202.216187 1203.4375 1204.373901 1204.972168 1205.485718 1206.120239 1207.304077 1209.52417 1211.538452 1213.476807 1215.527466 1217.74646 1220.273804 1223.530151 1225.597534 1227.519043 1229.650391 1231.605591 1231.498169 1230.488037 1232.838989 1235.044067 1235.904785 1235.749756 1235.249634 1232.532227 1234.186157 1238.083496 1239.641724 1241.595215 1246.04895 1250.865723 1254.826416 1257.971436 1258.797241 1256.023682 1258.561279 1258.300293 1255.74585 1254.296265 1266.875244 1273.886475 1279.643555 1284.553589 1292.665161 1293.694824 1295.540039 1296.595947 1296.839355 1296.603271 1295.996826 1295.547241 1295.247681 1294.530151 1293.923706 1293.509644 1293.763794 1293.89917 1291.797119 1292.908447 1294.356934 1296.959595 1300.922119 1302.664062 1298.337524 1289.626343 1280.649292 1288.91687 1291.126343 1287.931763 1283.956787 1278.587769 1268.770264 1251.89502 1236.494507 1222.526001 1210.244141 1195.394043 1181.80542 1182.788696 1191.495728 1196.814575 1198.04834 1197.209595 1195.094727 1188.022583 1185.001099 1195.142578 1205.310059 1207.798828 1206.123657 1195.861938 1194.080811 1198.444214 1209.793213 1219.336426 1222.848267 1222.548462 1221.255859 1222.07312 1221.601807 1219.115967 1223.011108 1224.151123 1220.224487 1209.081787 1197.905029 1189.528076 1182.147949 1170.596436 1162.37915 1158.557251 1155.031982 1150.526123 1145.954834 1145.029907 1147.360229 1151.430664 1152.365234 1150.515137 1147.766846 1145.481201 1153.767334 1163.03186 1165.700562 1160.784424 1154.259766 1147.650635 1143.5177 1144.05957 1150.215942 1145.792725 1137.709961 1131.814819 1124.722168 1121.457031 1120.039673 +1330.185913 1316.223877 1304.950562 1291.181763 1280.890869 1277.205566 1265.437256 1246.551147 1234.042603 1223.458984 1212.48645 1205.916138 1200.789429 1195.950317 1191.403809 1184.170776 1179.475708 1173.71814 1169.733398 1167.25769 1165.120117 1163.497681 1162.075317 1163.56958 1168.890869 1174.980469 1181.865479 1191.264038 1197.697632 1199.976318 1207.382812 1216.219482 1223.932983 1240.754272 1260.563965 1274.532227 1295.39978 1316.951538 1336.869873 1351.789062 1353.811401 1347.396851 1340.383545 1331.059082 1317.395508 1312.516602 1305.735229 1302.062378 1292.987061 1286.804688 1283.031006 1283.640381 1282.246582 1275.834106 1268.305298 1260.970337 1269.30603 1277.019531 1280.39856 1285.29187 1290.984863 1293.849365 1300.943848 1305.418335 1299.680176 1292.614502 1294.62793 1294.016968 1286.336426 1278.547729 1271.632324 1266.253296 1265.761475 1274.966797 1282.716064 1282.546631 1277.682251 1271.652222 1271.967773 1271.519409 1268.295166 1266.861694 1265.486938 1263.67627 1262.760498 1261.665894 1259.771851 1257.005249 1255.569458 1257.025391 1258.833374 1258.433472 1256.31543 1248.831299 1243.112671 1244.258667 1245.257935 1245.116943 1245.248413 1246.470093 1247.151611 1247.168823 1249.314087 1253.669922 1260.817383 1268.331909 1271.688354 1274.414062 1277.287231 1277.199219 1277.373535 1281.637817 1287.069214 1292.115356 1293.964355 1293.387695 1293.447388 1293.683838 1293.7229 1293.335815 1292.639282 1291.589966 1291.281616 1291.60083 1291.636841 1292.366333 1293.113403 1294.183105 1294.730225 1293.972046 1294.396484 1295.7854 1296.944336 1298.071533 1299.780029 1301.533203 1303.131348 1304.401245 1305.453735 1306.103271 1306.186523 1305.413452 1304.565186 1304.106201 1303.679321 1302.908813 1302.485718 1302.729126 1303.754883 1305.211914 1305.94043 1306.094482 1305.509399 1304.252563 1303.309692 1300.499878 1302.585815 1304.490967 1297.818115 1296.324219 1296.104736 1295.905273 1294.614258 1288.404541 1275.645752 1263.282715 1255.312988 1249.7146 1245.318115 1242.119019 1239.452271 1237.903198 1237.973633 1239.025757 1241.869507 1247.99707 1257.002319 1262.856445 1266.276001 1265.785156 1266.253052 1268.967773 1275.92334 1281.593262 1282.207764 1280.808594 1275.023315 1269.675415 1266.227905 1263.207153 1260.21228 1257.9729 1258.660889 1258.550415 1257.734131 1256.718872 1255.034302 1254.977905 1256.010254 1256.956665 1256.189941 1250.1875 1247.667725 1251.50647 1255.213623 1256.387817 1258.835083 1261.006104 1262.172607 1262.66748 1262.509521 1261.736816 1260.422607 1258.733276 1256.726807 1255.513672 1253.941528 1252.029785 1250.098633 1248.557007 1247.60022 1247.093872 1246.214111 1245.231201 1244.221924 1243.781494 1244.605103 1243.942627 1242.802979 1241.504272 1240.821289 1240.805054 1241.197998 1241.275391 1241.856934 1242.659302 1244.160278 1244.143555 1243.81543 1244.512939 1244.913696 1244.79248 1244.245117 1241.795898 1239.331909 1237.486938 1235.874512 1234.557129 1233.472656 1232.401001 1231.665039 1231.298706 1231.3125 1231.770386 1232.251343 1232.69751 1235.572754 1237.796387 1239.074097 1239.594238 1238.734253 1237.40686 1236.896484 1237.421143 1238.599121 1239.734985 1240.333984 1240.554443 1240.345703 1239.755493 1238.949097 1238.246094 1237.606201 1236.90918 1236.437256 1235.720215 1235.036865 1234.314819 1232.46228 1229.233521 1226.025635 1222.646851 1217.469727 1215.113525 1214.109009 1215.652588 1219.268311 1220.320435 1219.56189 1217.81189 1216.472412 1215.616577 1215.058716 1215.065674 1215.303589 1215.759521 1216.350098 1217.112427 1217.481934 1217.607422 1217.392578 1216.889893 1216.459961 1215.873169 1213.855713 1211.842773 1210.076294 1208.120605 1207.226562 1206.607422 1206.177979 1205.639893 1205.187256 1204.631836 1204.084717 1203.368286 1202.738892 1202.177734 1201.49292 1200.81897 1200.222168 1199.738281 1199.382202 1198.92334 1198.440308 1197.93103 1197.353149 1196.760498 1196.106445 1195.517578 1194.92334 1194.321289 1193.387085 1192.215576 1190.997803 1189.669434 1188.472656 1187.502808 1186.584106 1185.869629 1185.108398 1184.470459 1183.958618 1182.503174 1178.933472 1178.111694 1178.434937 1178.736572 1179.107422 1179.636719 1180.161865 1180.773071 1181.538452 1182.368408 1182.596436 1182.455566 1182.212891 1182.351318 1183.285034 1184.60437 1185.568848 1186.025757 1185.857544 1185.098511 1184.341064 1186.108521 1189.706299 1192.782104 1194.974609 1195.8125 1195.987427 1195.537842 1191.399536 1186.325684 1182.658325 1180.563965 1181.317261 1183.646606 1183.819092 1183.811035 1184.017822 1184.51123 1184.762329 1185.071533 1185.180298 1185.235596 1185.188965 1185.119141 1185.104614 1184.984253 1184.824829 1184.636353 1184.397827 1183.999146 1183.426514 1182.979736 1182.991455 1182.88916 1182.781738 1183.08606 1184.251587 1185.311523 1186.08606 1186.619019 1186.868896 1186.843506 1186.668945 1186.617554 1186.581665 1186.451904 1186.398438 1186.260254 1186.317261 1186.151978 1185.975342 1185.578125 1185.114136 1184.398926 1183.835449 1183.305786 1182.707642 1182.043335 1181.245972 1180.573242 1179.896484 1179.238525 1178.50647 1177.557373 1176.595703 1175.63623 1174.640503 1173.497192 1172.28833 1171.135864 1171.063599 1171.753784 1172.664185 1173.233276 1173.518677 1173.488037 1173.203491 1172.654175 1171.952271 1170.599243 1171.110962 1172.277954 1173.46936 1174.499023 1175.664917 1176.905273 1178.067871 1179.268677 1180.557495 1182.06311 1183.996338 1188.07605 1192.552979 1196.704346 1201.497681 1206.098145 1208.883179 1209.05127 1208.653564 1207.585938 1205.857666 1204.384399 1203.311279 1202.487671 1201.601807 1199.250854 1198.162842 1197.100952 1198.716187 1201.825073 1203.47522 1204.434814 1205.054688 1205.403687 1205.762939 1206.112427 1206.991699 1207.716919 1209.665405 1211.310059 1212.858887 1214.843872 1216.995728 1219.790894 1220.973389 1222.075562 1225.876343 1227.713501 1228.112061 1228.176514 1229.725342 1231.475586 1232.274902 1232.36792 1231.651733 1229.994263 1231.074097 1233.731323 1234.682861 1236.934448 1241.004639 1244.069214 1246.74646 1248.407227 1247.051636 1245.006714 1245.139526 1242.539307 1253.444336 1266.056885 1275.788452 1285.130859 1293.272949 1293.625122 1292.359009 1292.86438 1295.86499 1297.615601 1298.161865 1298.105103 1297.639038 1297.082275 1296.738281 1296.185181 1295.57666 1294.677734 1293.171875 1292.469604 1291.387817 1289.604004 1288.091675 1291.723267 1294.56311 1294.528564 1295.521606 1294.911987 1280.113037 1272.929932 1277.921265 1274.530762 1269.312622 1269.604126 1263.237427 1251.245483 1237.510254 1223.540283 1203.049072 1187.19519 1193.501953 1204.836548 1208.061401 1210.077515 1210.54895 1209.134766 1205.494385 1197.470703 1192.865356 1205.150024 1214.498779 1218.21167 1219.045044 1209.866211 1203.79126 1206.93811 1213.185181 1222.849487 1229.563721 1229.49585 1229.917725 1232.115601 1232.037476 1233.11792 1230.799561 1222.63208 1214.327271 1201.618408 1191.551636 1183.966675 1175.666382 1165.35022 1157.595215 1155.982422 1155.478149 1153.008545 1150.766357 1150.667725 1154.782593 1162.61438 1165.607788 1162.662109 1157.188599 1151.520996 1154.204102 1163.134521 1173.463623 1171.841187 1164.236938 1157.124634 1148.345337 1149.085815 1160.934204 1157.307739 1146.321533 1136.849487 1128.712769 1122.631714 1121.263428 +1328.213989 1315.251221 1305.480225 1301.133789 1298.596802 1293.271362 1280.411743 1259.977295 1244.756592 1230.129395 1220.428955 1212.288574 1206.226318 1200.125244 1195.456055 1186.544312 1180.92981 1173.319824 1169.409424 1166.105713 1164.272827 1163.053955 1162.004517 1166.343384 1172.074341 1180.206055 1195.612183 1206.434326 1219.25293 1216.250854 1217.532715 1228.834106 1241.173828 1256.585938 1269.889282 1288.435669 1310.269165 1327.041748 1344.504028 1358.47644 1356.956787 1351.374512 1341.956543 1329.261597 1317.296387 1313.024292 1306.702271 1302.398315 1295.056519 1285.628784 1279.387207 1279.892456 1276.752686 1270.018921 1263.012817 1265.350098 1274.726807 1282.31543 1285.382446 1290.341187 1294.993774 1300.12207 1306.272339 1305.611084 1301.909302 1298.086182 1296.82605 1294.201416 1286.233765 1277.378296 1269.412598 1265.814087 1265.80896 1277.777344 1282.803467 1282.320435 1279.881104 1276.727173 1276.027954 1274.253784 1271.491455 1269.63501 1267.817017 1265.931274 1265.111206 1264.329712 1262.366455 1258.497192 1256.024292 1259.759766 1261.365112 1260.472046 1258.230713 1252.645142 1245.283447 1246.289673 1247.615356 1247.971924 1248.170532 1248.566895 1248.915405 1249.037231 1248.389404 1250.734619 1254.842896 1260.661865 1264.732544 1267.215942 1270.224243 1270.369385 1267.811646 1274.538818 1281.008789 1286.27417 1290.910034 1293.161377 1294.514404 1294.127686 1294.236694 1293.942627 1293.361816 1292.789551 1293.018066 1293.178833 1292.866211 1293.539307 1294.544678 1295.505249 1296.065552 1296.363403 1296.945312 1297.901733 1299.087402 1300.683838 1302.552856 1304.20813 1306.072998 1308.217773 1309.7771 1310.342407 1310.1604 1309.126831 1307.715454 1306.271729 1305.161133 1304.368774 1303.445801 1303.646606 1305.057373 1306.179565 1306.214355 1305.117188 1301.904175 1299.077637 1296.45166 1291.842285 1290.973999 1290.155151 1289.658447 1290.57605 1291.831665 1291.989502 1289.908081 1284.759155 1274.846436 1257.666504 1252.645874 1247.536377 1243.456665 1240.996704 1238.799805 1238.848511 1239.507202 1241.386841 1244.421265 1258.174927 1268.183472 1274.228394 1275.374634 1274.709229 1272.003296 1269.151611 1274.294312 1281.302734 1282.211426 1282.380737 1280.475464 1272.391602 1267.275757 1264.890137 1263.508057 1262.784424 1262.8927 1262.171265 1259.694824 1256.792114 1255.728394 1255.929932 1256.588501 1257.685303 1255.810913 1250.688965 1248.535767 1252.716553 1256.909058 1258.309082 1259.856079 1261.696045 1262.840332 1263.423462 1263.373901 1262.764038 1261.41626 1259.239136 1256.692383 1256.028931 1254.474609 1253.077271 1251.837524 1250.592896 1249.572266 1248.774292 1248.018555 1247.091675 1246.173706 1245.703125 1245.971436 1244.898438 1243.626953 1242.554932 1242.035156 1242.628052 1243.44104 1242.861694 1242.542358 1242.876465 1244.087524 1244.335938 1244.412354 1245.039062 1245.425537 1245.35437 1244.604004 1242.941406 1240.479004 1238.580811 1236.834106 1235.52832 1234.239624 1232.907349 1231.91626 1231.453735 1231.713867 1232.41272 1233.922974 1234.757812 1236.696411 1239.016724 1241.395874 1243.072021 1242.696045 1241.25293 1240.342896 1240.150146 1240.411865 1241.081543 1241.896973 1241.868408 1241.027832 1239.777466 1238.447876 1237.335815 1236.554321 1236.025146 1235.285034 1233.61792 1231.74646 1229.79126 1226.641968 1224.009521 1219.844482 1218.235352 1216.45105 1216.96167 1217.074585 1218.984009 1220.808105 1221.307251 1220.80957 1219.483398 1217.982178 1216.746704 1216.241089 1216.245972 1216.566406 1217.097168 1217.993896 1218.66626 1219.120117 1219.290283 1219.143066 1218.619629 1218.034668 1217.587891 1215.522461 1213.004517 1210.883423 1208.460327 1207.350342 1206.980957 1206.560181 1206.072876 1205.545776 1205.075806 1204.542603 1203.899292 1203.233032 1202.487061 1201.84021 1201.170166 1200.530762 1200.088989 1199.56897 1199.060913 1198.592896 1198.090088 1197.583496 1196.992188 1196.543091 1195.992798 1195.418579 1194.820435 1193.894775 1192.483887 1191.124634 1189.722534 1188.446289 1187.464478 1186.633789 1185.755127 1184.904053 1184.115356 1183.567261 1181.744385 1178.971436 1178.546509 1178.905762 1179.312622 1179.867432 1180.422852 1181.134888 1181.70105 1182.6073 1183.301392 1183.883179 1183.431396 1183.213989 1183.083496 1183.198975 1184.87085 1186.59314 1187.280518 1187.444824 1187.370361 1187.860962 1189.307739 1191.448608 1194.0354 1195.823364 1196.312256 1196.466919 1196.289551 1194.985107 1191.437134 1184.00708 1180.783081 1182.343262 1183.710693 1183.941528 1184.306152 1184.401245 1184.661377 1184.948975 1185.312134 1185.594971 1185.765259 1185.851685 1185.861816 1185.787354 1185.698242 1185.560547 1185.310547 1184.957642 1184.479614 1184.077759 1183.740967 1183.765259 1183.673096 1183.141968 1183.289917 1184.431641 1185.665283 1186.630371 1187.235718 1187.560913 1187.796143 1187.703613 1187.561646 1187.565186 1187.363403 1187.258179 1187.259766 1187.178711 1187.040527 1186.743408 1186.416138 1185.897949 1185.188843 1184.584961 1184.035889 1183.466064 1182.872192 1182.118774 1181.264404 1180.642212 1179.921021 1179.20874 1178.356323 1177.453125 1176.485474 1175.488281 1174.408447 1172.93396 1171.102295 1171.303589 1172.310547 1173.08728 1173.647095 1173.878418 1173.688354 1173.305664 1172.584106 1171.666992 1170.545532 1171.528931 1172.375 1173.311279 1174.377808 1175.44043 1176.539551 1177.583252 1178.797363 1180.100708 1181.485718 1183.034302 1187.119995 1191.151489 1195.245972 1199.848999 1204.182739 1207.866699 1209.330444 1209.317749 1209.006104 1207.984619 1206.679321 1205.613647 1204.889771 1204.317871 1203.253174 1202.693604 1202.528687 1203.136963 1204.564575 1205.753296 1206.136597 1206.221069 1206.220459 1206.070435 1206.309814 1206.530029 1207.154419 1207.608154 1209.001343 1210.264404 1211.477051 1213.101685 1215.646484 1217.576294 1220.324341 1223.013916 1224.2323 1224.665405 1224.993774 1226.010376 1227.193115 1227.587646 1227.648193 1227.661499 1227.582275 1229.043335 1230.011841 1230.318604 1232.234741 1234.527832 1236.383911 1238.095459 1238.707275 1238.934692 1241.654907 1243.77063 1250.602539 1261.790649 1273.371216 1284.679443 1295.250122 1297.957886 1297.555542 1296.172974 1295.336548 1297.173096 1299.425537 1299.907227 1299.715454 1299.241089 1298.922974 1298.399048 1297.865234 1297.035889 1295.598267 1293.161011 1292.248291 1291.585571 1287.135742 1280.525391 1281.609375 1285.195801 1287.807373 1291.686035 1295.795166 1286.840454 1272.033203 1262.038574 1261.876831 1259.45166 1258.377075 1253.875 1246.753174 1237.045898 1216.366333 1191.540649 1196.667114 1212.601562 1220.702881 1224.728638 1225.771729 1225.173584 1222.61438 1219.24646 1211.450806 1202.237183 1212.1521 1222.085205 1227.036621 1227.283813 1222.223389 1212.634277 1215.683228 1219.087036 1229.180542 1236.197388 1237.665161 1239.22644 1243.000488 1242.269409 1234.293823 1227.257935 1218.815918 1210.509766 1198.660522 1188.55481 1179.517822 1168.338867 1158.456177 1156.008789 1157.33252 1159.869629 1160.620361 1158.831421 1156.589966 1158.131714 1170.148071 1175.573608 1173.351807 1165.806152 1157.816772 1155.713379 1160.845703 1172.007202 1182.761841 1175.372192 1167.631714 1161.593262 1155.387939 1160.404297 1160.80127 1149.618774 1139.662476 1132.39502 1125.9375 1123.314941 +1327.00354 1314.792603 1309.816528 1308.106812 1302.398071 1295.299438 1288.419189 1279.083374 1259.597656 1245.473999 1232.660522 1221.322754 1211.675049 1204.198364 1197.575684 1189.567627 1182.531128 1170.404663 1167.001465 1164.580444 1162.901123 1163.030029 1165.42981 1171.355591 1177.690063 1187.604736 1203.391113 1220.286133 1232.689453 1230.616455 1231.024048 1244.945312 1263.512939 1276.637817 1285.810913 1299.922607 1318.862305 1336.231445 1354.35083 1359.760254 1358.392578 1352.687012 1340.048828 1331.026123 1322.081177 1314.644531 1309.805176 1305.751343 1299.450684 1292.806274 1281.955322 1276.792236 1268.480713 1264.926758 1264.939331 1272.439697 1280.625732 1285.771973 1289.261597 1293.84668 1299.209839 1304.43689 1306.97937 1304.959595 1303.521362 1300.665527 1297.362671 1293.498901 1282.680054 1274.204468 1266.960449 1265.546997 1268.077026 1279.905762 1283.369995 1283.092407 1280.245972 1280.284668 1279.689819 1278.375488 1275.696289 1272.55188 1269.318359 1267.276489 1267.096802 1267.381592 1266.140625 1263.514526 1261.934448 1264.137695 1265.294922 1263.7677 1259.632812 1255.008911 1251.723511 1250.281982 1250.336304 1251.098755 1251.528687 1251.946167 1251.819824 1251.136719 1249.919312 1249.105225 1251.187378 1254.295776 1257.414307 1259.509033 1261.839478 1262.204102 1260.623047 1267.85437 1274.343872 1279.41626 1283.395874 1287.164307 1290.765991 1293.266235 1294.424194 1294.289185 1294.028442 1293.805054 1294.126343 1294.290161 1294.549438 1294.928345 1295.754883 1296.666016 1297.49292 1298.27478 1299.028931 1299.962158 1300.983643 1302.487671 1304.294922 1306.920654 1309.628052 1313.318481 1315.321411 1315.53833 1314.980591 1313.588867 1311.687622 1309.496704 1307.599854 1305.958374 1304.601074 1304.478271 1305.594604 1306.789307 1306.670654 1305.723267 1301.682739 1295.044678 1291.997803 1286.710815 1284.134277 1283.827026 1280.907959 1281.888794 1283.194946 1282.94812 1282.775269 1280.477905 1271.406372 1256.717041 1251.360107 1246.520264 1243.002563 1240.662109 1239.018677 1239.84729 1241.078735 1242.914917 1255.51355 1269.560303 1280.895752 1282.802246 1282.898193 1282.13916 1281.162598 1278.508057 1277.352783 1280.188354 1281.500244 1282.176758 1281.987427 1278.900757 1270.057861 1266.734131 1265.820923 1266.331177 1267.779785 1267.459961 1260.829224 1256.171509 1256.83374 1258.58374 1258.607788 1257.818481 1253.849487 1249.797363 1249.896484 1255.157593 1257.556396 1259.662476 1261.348267 1262.744873 1263.73584 1264.376587 1264.486694 1264.035645 1262.958008 1260.896973 1259.048462 1257.567749 1255.789673 1254.482422 1253.405518 1252.413696 1251.514648 1250.883057 1250.06189 1249.307129 1248.809448 1248.046753 1247.273315 1245.946411 1244.068481 1243.082031 1242.971558 1244.479492 1245.032349 1244.279419 1243.479126 1243.279175 1243.943481 1244.193115 1244.407837 1245.251099 1245.606323 1245.689819 1244.885742 1243.123413 1241.033813 1239.09375 1237.508423 1235.989868 1234.630981 1233.165405 1231.693115 1231.53186 1231.778442 1233.420044 1235.35437 1236.732544 1238.211914 1240.046875 1242.407715 1244.512207 1244.477661 1243.419312 1242.260498 1242.109863 1242.340332 1242.650635 1243.430664 1243.483032 1241.763062 1239.119019 1237.272705 1235.686768 1234.577271 1234.125 1233.183105 1230.687256 1225.762939 1221.849121 1219.928467 1219.209595 1219.157227 1219.410278 1218.580688 1218.948975 1219.351562 1220.296631 1221.611572 1221.769409 1221.36377 1220.426514 1218.758667 1217.699707 1217.259766 1217.48291 1217.843018 1218.450562 1219.327637 1220.110474 1220.598633 1220.609619 1220.385376 1220.027344 1219.469116 1218.820923 1216.858643 1214.041992 1211.802979 1209.342529 1207.956177 1207.644531 1207.328247 1206.789551 1206.292603 1205.77832 1205.079956 1204.233765 1203.426025 1202.626587 1201.914917 1201.291992 1200.628418 1200.105835 1199.529175 1199.018188 1198.516846 1197.934814 1197.499023 1197.039429 1196.592041 1196.264893 1195.883179 1195.290771 1194.272095 1192.619751 1191.203125 1189.735962 1188.501587 1187.419067 1186.469116 1185.679565 1184.822632 1183.746826 1182.562378 1180.162354 1179.49585 1179.029419 1179.146606 1179.566895 1180.315063 1181.384277 1182.130737 1182.387573 1182.780396 1184.026855 1184.886475 1184.900146 1184.812866 1184.818726 1184.539062 1186.417358 1188.376587 1189.312622 1189.556885 1189.746582 1190.383911 1191.315918 1192.774536 1194.300415 1195.765503 1196.387329 1196.570557 1196.572876 1196.333984 1196.401001 1185.820068 1181.179932 1182.23584 1183.452148 1184.011597 1184.320435 1184.466797 1184.763916 1185.125732 1185.584351 1185.9729 1186.247681 1186.464844 1186.534058 1186.478149 1186.417236 1186.21106 1185.844482 1185.626587 1185.320068 1185.003662 1184.894287 1184.772217 1184.619507 1184.008301 1183.873901 1185.178223 1186.334717 1187.18396 1187.875732 1188.381592 1188.646729 1188.694092 1188.591431 1188.454468 1188.33728 1188.275513 1188.157837 1188.042236 1187.922729 1187.63147 1187.174072 1186.675171 1186.009033 1185.352539 1184.779785 1184.17627 1183.535645 1182.658325 1181.913574 1181.362305 1180.7146 1179.961792 1179.24353 1178.308105 1177.316895 1176.401611 1175.427734 1174.347168 1173.326904 1172.868896 1173.301636 1173.778076 1174.104614 1174.247559 1173.988647 1173.365601 1172.370117 1171.452148 1170.657349 1170.80188 1171.807251 1172.991699 1174.010376 1175.04126 1176.011597 1177.071533 1178.28479 1179.635498 1181.235962 1182.846558 1186.070557 1189.765503 1193.568726 1197.523926 1201.614624 1205.57251 1208.772705 1209.574219 1209.689087 1209.499756 1208.815674 1208.053833 1207.43689 1207.053833 1206.737671 1206.870728 1206.867798 1207.509399 1207.512939 1207.713135 1207.515869 1207.347778 1207.023682 1206.625 1206.471313 1206.448975 1206.419922 1206.623901 1206.996094 1207.315918 1207.972046 1208.242065 1211.604248 1218.48645 1220.915405 1221.683594 1222.176392 1221.83728 1221.486572 1222.14624 1222.729248 1222.577271 1221.970581 1222.123413 1225.01355 1226.130859 1226.626221 1227.237549 1228.819214 1229.992432 1231.076904 1231.109863 1230.777832 1236.165894 1244.685059 1250.975952 1258.833862 1269.562744 1281.765015 1293.717651 1300.504272 1303.876099 1302.511719 1300.996216 1300.407593 1301.08252 1301.684692 1301.805908 1301.37146 1300.899536 1300.483276 1300.223389 1299.710449 1298.763062 1297.114624 1294.982544 1294.521484 1293.284546 1288.466064 1283.513428 1280.727295 1278.880981 1279.735352 1279.153442 1288.331055 1287.132202 1276.848877 1262.948853 1257.320923 1254.177612 1246.50415 1246.607178 1238.74585 1220.019775 1204.145996 1192.686646 1211.533691 1226.872803 1234.676392 1237.817749 1239.275635 1237.703003 1235.201416 1231.702271 1225.043335 1214.083984 1216.302979 1228.302124 1235.035645 1235.13147 1230.078247 1219.640869 1223.42627 1226.967896 1233.818604 1243.71167 1247.958496 1249.719727 1248.042969 1239.318237 1228.011841 1218.982666 1213.012451 1206.047241 1196.361816 1187.148193 1177.94458 1167.365479 1156.818726 1156.529907 1163.776001 1169.175537 1170.317749 1167.741455 1162.29248 1160.630249 1174.063843 1183.027588 1180.410034 1173.804565 1163.513672 1157.367554 1158.856079 1171.084717 1183.074341 1185.616455 1178.332642 1171.753418 1162.27124 1161.778931 1160.508423 1150.01001 1138.951294 1132.883423 1129.355957 1126.133545 +1314.769165 1309.065063 1308.942017 1300.654419 1283.446045 1274.916382 1272.842285 1268.371948 1261.400879 1251.207642 1236.59314 1222.248169 1211.590332 1202.868896 1195.882812 1185.300415 1173.374634 1167.321533 1164.058228 1163.432617 1164.373047 1166.740601 1170.261353 1175.849365 1184.885864 1196.562622 1215.055908 1233.865723 1245.617432 1248.180786 1248.710938 1260.118774 1277.102295 1288.282471 1301.709106 1312.905762 1329.557739 1346.366455 1358.811035 1360.160645 1357.87793 1351.634277 1341.813721 1333.016724 1324.144531 1315.363647 1310.311035 1306.684937 1299.77417 1293.284668 1284.954712 1277.856689 1269.312134 1264.598755 1272.43042 1277.437866 1283.79895 1289.830078 1293.584839 1298.107666 1303.678101 1307.561401 1308.610229 1307.44458 1305.906738 1301.515137 1296.684326 1290.663818 1283.67041 1275.868774 1268.079346 1267.278687 1274.065918 1281.076904 1285.28772 1285.417603 1283.758057 1283.280396 1282.704346 1281.998169 1280.12561 1276.408325 1271.864502 1267.77832 1269.25415 1270.604126 1269.752808 1265.93457 1263.823242 1268.650635 1269.524292 1268.068604 1263.424683 1257.273071 1254.582397 1253.158569 1253.349976 1254.078613 1255.26123 1255.548584 1255.265869 1254.47998 1252.283936 1250.289795 1250.072876 1250.251221 1251.012939 1252.377808 1253.419922 1254.153564 1253.906372 1256.277222 1266.593018 1271.789917 1275.678589 1279.688354 1282.945312 1286.26123 1289.585083 1291.878174 1292.913818 1293.307251 1294.253418 1294.804565 1295.345215 1296.008789 1296.842285 1297.867188 1298.869019 1299.791626 1300.737183 1301.581421 1302.393677 1303.260498 1305.451904 1309.385498 1314.182129 1317.707886 1320.630127 1321.280029 1320.582031 1318.093628 1316.078979 1313.036987 1310.325073 1307.828979 1305.554688 1304.942383 1306.355713 1307.380249 1307.230591 1306.521606 1305.136108 1296.705933 1289.76355 1282.664062 1278.320801 1275.325928 1271.199463 1267.648682 1269.714233 1273.494507 1273.962402 1271.408447 1264.817871 1255.860107 1250.859985 1246.69812 1243.284058 1240.262817 1239.819458 1240.918091 1242.907593 1248.06189 1264.360474 1280.138672 1289.910522 1288.242676 1285.937866 1284.759277 1283.356201 1282.345215 1280.705688 1280.145264 1281.035278 1282.187988 1282.25769 1281.489868 1275.030396 1267.921997 1268.004272 1268.793091 1269.93689 1268.902466 1263.745361 1258.842896 1263.622803 1265.486816 1260.33374 1255.875854 1250.01709 1250.851196 1252.984863 1255.921631 1258.673706 1261.015503 1262.810059 1264.028076 1264.749634 1265.420898 1265.871948 1265.780273 1264.937012 1263.337769 1261.428955 1259.126221 1256.859985 1255.663818 1254.516846 1254.094971 1253.618896 1253.173584 1252.339478 1251.663818 1251.348022 1250.682373 1249.710205 1247.399658 1244.466919 1243.650513 1243.558594 1245.019653 1245.968018 1245.900757 1244.577148 1243.764282 1244.104858 1244.128662 1244.188843 1245.022461 1246.021606 1245.936768 1244.523438 1242.526489 1240.883301 1239.341309 1237.937378 1236.286011 1234.509399 1232.586914 1231.650513 1231.598267 1232.317627 1234.752197 1237.208008 1238.773804 1239.867432 1240.796143 1242.678589 1244.432129 1244.832642 1244.60437 1243.348389 1242.983276 1243.360718 1244.203979 1244.799561 1244.498413 1241.515259 1237.799072 1235.047363 1233.281006 1231.512817 1229.60437 1227.288818 1225.533691 1221.314697 1221.580688 1221.419556 1220.920288 1221.301514 1221.469849 1221.158203 1220.966187 1221.279785 1221.908081 1222.467285 1222.349731 1221.519287 1220.359619 1219.228638 1218.541992 1218.84668 1219.05957 1219.246582 1219.672729 1220.41333 1221.064087 1221.197266 1221.116089 1220.853394 1220.487915 1220.130859 1219.476196 1217.583252 1214.776733 1212.526611 1209.939819 1208.581421 1208.198242 1208.043457 1207.603638 1207.286743 1206.748291 1205.720337 1204.454468 1203.324341 1202.359497 1201.661621 1200.932007 1200.371216 1199.723511 1199.139893 1198.569824 1198.002319 1197.530884 1197.172363 1196.829956 1196.39624 1196.065308 1195.833618 1195.374878 1194.023804 1192.470703 1191.040405 1189.69458 1188.408691 1187.143921 1186.216919 1185.396484 1184.643555 1183.754517 1182.02063 1180.253784 1180.193237 1179.818726 1179.575684 1179.925903 1180.887451 1182.349487 1183.134766 1183.317017 1183.185059 1184.240967 1185.679077 1186.294067 1186.560547 1187.011963 1187.99292 1189.580322 1191.2677 1191.918457 1191.868652 1191.864502 1191.984497 1192.632568 1193.420288 1194.557983 1195.67981 1196.496826 1196.71875 1196.750977 1196.597534 1196.067261 1189.369873 1183.601074 1182.073853 1183.128174 1183.755859 1183.94397 1184.255127 1184.660889 1185.193726 1185.784302 1186.319824 1186.686768 1186.965454 1187.14856 1187.189697 1187.101074 1186.840942 1186.666748 1186.377075 1186.279907 1186.153564 1185.958984 1185.814941 1185.678467 1185.70105 1185.858765 1186.48291 1187.269165 1188.028931 1188.672607 1189.202271 1189.488525 1189.577881 1189.578491 1189.439087 1189.355469 1189.236206 1189.111328 1189.003174 1188.704712 1188.42688 1187.863647 1187.353149 1186.712158 1186.126099 1185.498291 1184.828125 1183.993408 1182.938232 1182.339355 1181.943604 1181.525391 1180.880249 1180.043701 1179.118286 1178.262329 1177.452148 1176.75 1175.911621 1175.138672 1174.695312 1174.631958 1174.748413 1174.801514 1174.753418 1174.311523 1173.630005 1172.606689 1171.312866 1170.892822 1170.664307 1171.336792 1172.575195 1173.540283 1174.439697 1175.32666 1176.515625 1177.77063 1179.274414 1180.773926 1182.323364 1184.796631 1188.029419 1191.528564 1194.740967 1198.554443 1202.823608 1206.575073 1209.454102 1210.071045 1210.48645 1210.824463 1211.175171 1211.078247 1210.639526 1210.213501 1210.13147 1209.653564 1208.410278 1207.825684 1207.866699 1207.878052 1207.543945 1207.355347 1207.060059 1206.599121 1206.507202 1206.268066 1206.043823 1205.906494 1206.164429 1206.462158 1206.637329 1208.564331 1214.211792 1218.582031 1218.949951 1219.230469 1218.951782 1218.523315 1218.688232 1218.947876 1218.732422 1219.349487 1220.973633 1222.938232 1223.400635 1223.059937 1223.292603 1226.311646 1229.751465 1231.717651 1233.302979 1237.911011 1244.790161 1250.340576 1257.199463 1267.849976 1275.591431 1284.944458 1295.33313 1304.172119 1306.52832 1305.94165 1304.574097 1304.309692 1304.416016 1303.948242 1303.558472 1302.861694 1302.237671 1302.10791 1302.171143 1301.777954 1300.780273 1299.692139 1298.230713 1296.292358 1293.799805 1291.895874 1291.999756 1288.145752 1281.051758 1269.390503 1271.575073 1278.801636 1281.197632 1275.306396 1264.629761 1249.331665 1235.635132 1229.37439 1224.267822 1215.397583 1209.784302 1198.934082 1201.889893 1222.115112 1237.048706 1244.755493 1247.547729 1249.743774 1249.633057 1247.271606 1242.536865 1235.47229 1223.118896 1219.933838 1234.440674 1243.225952 1244.026733 1238.098389 1230.32605 1230.925293 1234.41272 1241.134766 1250.266602 1257.044678 1257.907959 1247.038696 1235.255493 1223.667847 1215.344727 1206.908691 1200.166748 1192.124023 1185.111206 1175.742798 1164.659546 1156.35791 1161.506958 1172.570679 1179.126831 1180.237915 1176.331543 1171.20752 1167.892212 1175.888672 1186.504761 1185.805176 1179.746094 1170.321533 1163.161743 1161.152222 1171.067627 1181.991089 1192.231689 1187.355469 1180.971436 1173.807007 1168.321655 1158.802246 1147.535645 1140.220947 1134.723267 1131.819946 1128.968628 +1293.818726 1286.453003 1292.040771 1283.32959 1270.061157 1253.393311 1253.434204 1251.201538 1248.110474 1243.63501 1229.387939 1214.297729 1205.254028 1194.128662 1182.348999 1174.192871 1168.283203 1164.621094 1164.52417 1165.748535 1167.368408 1170.497437 1176.470947 1185.318604 1193.26062 1205.821899 1224.411865 1238.828735 1253.669678 1267.577759 1271.422974 1273.270508 1286.470337 1300.33374 1313.279419 1325.756836 1339.851685 1355.500366 1361.275879 1362.472534 1356.172852 1346.810669 1336.395752 1325.813599 1319.322632 1314.155762 1308.497559 1303.915771 1293.32019 1289.925415 1282.946289 1275.858032 1267.239136 1270.36499 1278.257446 1283.576416 1288.547241 1294.395264 1298.556152 1303.379272 1307.747437 1310.53894 1311.557739 1309.580444 1305.488037 1302.725952 1299.769775 1295.348022 1289.014771 1279.279663 1267.584961 1271.01062 1280.561035 1287.175781 1289.456055 1288.661011 1287.182983 1286.149902 1285.121094 1284.262695 1282.736572 1280.845825 1276.531372 1271.425293 1272.906616 1273.872681 1271.568115 1266.604492 1266.463257 1269.861328 1272.094238 1271.201904 1268.846313 1261.324341 1255.740234 1254.359619 1255.059326 1257.312012 1262.700684 1264.615967 1262.012817 1258.387817 1255.085571 1251.973389 1250.903687 1251.737793 1252.998413 1253.596924 1255.786133 1254.876709 1254.404663 1254.094482 1254.684082 1260.771118 1267.261841 1271.504395 1275.564087 1278.716675 1282.114014 1285.244385 1287.719971 1290.952881 1294.050659 1295.089233 1295.845703 1296.592163 1297.603638 1298.864258 1300.13562 1301.27771 1302.252319 1303.207886 1303.630981 1304.269531 1306.758545 1311.026978 1315.828369 1319.102539 1322.93103 1329.610718 1328.656494 1323.372192 1318.966309 1315.724243 1312.200928 1309.061401 1306.781006 1306.497681 1307.356934 1308.073486 1307.93396 1307.050049 1305.633057 1297.447754 1290.498169 1284.356079 1277.419312 1269.226562 1266.173584 1265.640503 1265.583374 1266.390869 1266.239014 1262.526367 1257.320068 1253.780029 1249.939575 1246.731689 1243.406372 1240.166504 1241.430542 1242.284912 1244.791382 1255.812866 1272.300171 1287.973511 1294.06604 1291.095459 1288.509888 1286.727051 1285.431274 1284.014648 1281.798218 1280.47644 1280.561523 1281.76123 1282.372314 1281.979736 1278.762817 1272.07959 1270.610596 1270.725098 1270.501221 1268.596436 1265.480835 1265.582031 1269.394653 1267.930908 1260.257935 1251.961426 1251.899414 1253.601929 1255.811279 1256.380005 1259.540405 1263.119751 1264.680054 1265.387939 1265.725708 1266.217651 1267.075073 1267.662354 1267.202881 1265.847656 1263.564331 1261.178711 1258.96582 1256.908325 1255.604614 1256.175415 1256.027344 1255.567871 1254.772217 1253.829102 1254.096436 1253.955566 1253.338257 1251.606812 1247.966187 1245.914062 1244.051392 1245.030518 1246.973022 1247.049316 1245.927734 1244.359863 1244.36731 1244.746582 1244.439819 1244.634521 1246.274414 1245.988647 1244.096802 1242.332642 1241.115601 1239.879517 1238.450195 1236.648682 1233.892578 1231.795532 1232.291992 1233.090454 1234.544189 1237.78186 1240.641357 1241.590454 1241.332275 1241.502075 1242.36145 1243.838501 1244.887207 1245.08252 1244.499512 1243.654541 1244.017334 1244.768188 1244.897217 1244.011719 1239.452148 1235.064697 1232.14624 1229.902954 1227.236694 1223.584839 1223.499268 1222.416016 1222.449707 1223.129517 1223.522949 1223.21875 1223.163452 1223.247192 1223.033813 1222.938477 1223.116089 1223.523682 1223.621826 1223.162476 1221.925659 1220.118896 1219.342407 1219.803955 1220.275879 1220.494873 1220.828857 1221.008057 1221.57373 1221.668213 1221.546509 1221.356079 1221.046875 1220.616211 1220.064697 1219.539429 1217.788208 1214.99353 1212.636963 1210.237061 1208.859497 1208.472412 1208.234253 1208.060791 1207.893921 1207.514893 1206.171509 1204.223511 1202.634766 1201.438354 1200.695068 1200.101929 1199.463501 1198.841797 1198.322021 1197.775879 1197.227905 1196.838135 1196.489746 1196.050049 1195.669312 1195.383057 1194.930298 1194.00415 1192.893677 1191.914185 1190.756836 1189.512817 1188.208374 1186.816162 1185.758301 1184.807251 1184.216431 1183.574463 1181.272827 1181.115234 1181.888184 1181.727783 1180.705566 1180.199829 1181.062378 1183.217651 1184.084595 1184.348389 1184.438843 1185.470093 1186.817993 1187.717285 1188.409668 1189.372681 1190.834717 1192.837036 1194.834473 1194.645142 1193.438721 1193.536621 1193.905273 1193.761353 1193.853638 1194.4823 1195.45166 1196.760864 1196.983887 1196.901855 1196.366211 1195.442871 1191.807983 1186.701904 1184.661133 1183.216309 1183.142944 1183.720825 1184.187866 1184.678711 1185.369751 1186.055298 1186.648926 1187.166138 1187.512939 1187.737671 1187.858276 1187.825684 1187.668579 1187.529297 1187.414307 1187.335327 1187.222168 1187.131714 1187.02124 1187.001343 1187.149658 1187.431396 1187.907227 1188.465454 1189.039795 1189.61145 1190.082764 1190.403442 1190.533447 1190.552612 1190.510498 1190.406616 1190.319092 1190.079956 1189.785889 1189.595703 1189.215698 1188.77478 1188.151001 1187.439697 1186.777588 1186.103516 1185.37793 1184.433716 1183.549927 1183.052979 1182.764526 1182.342773 1181.673828 1180.793335 1179.8927 1179.149048 1178.559082 1177.938599 1177.32605 1176.682861 1176.187866 1175.998779 1175.945435 1175.828857 1175.677612 1175.070557 1174.365723 1173.354126 1172.386963 1172.119629 1171.263672 1170.977783 1172.143799 1172.780884 1173.55835 1174.63501 1175.876831 1177.316528 1178.703735 1180.17749 1181.629028 1183.187256 1186.208618 1189.050781 1192.21228 1195.12854 1199.2323 1203.886963 1207.925415 1210.0802 1210.823364 1211.899902 1213.859375 1215.577637 1215.522705 1214.584961 1212.611816 1210.483276 1208.962769 1207.888306 1207.598145 1207.466309 1207.764893 1207.541016 1207.24707 1207.255493 1206.730835 1206.175903 1205.799072 1205.429321 1205.245605 1205.403931 1205.735107 1206.865845 1209.942871 1213.470093 1215.349854 1216.270386 1216.5448 1216.78418 1216.716064 1217.158569 1218.662964 1220.410889 1221.497681 1221.562988 1220.924683 1220.05127 1219.509399 1225.313232 1230.578125 1233.54895 1235.857056 1241.015259 1246.185791 1252.492065 1259.508911 1267.218628 1274.588013 1284.536621 1293.995239 1302.500366 1307.628052 1307.105103 1306.817383 1306.560303 1305.89563 1305.581543 1305.218994 1304.257202 1303.366455 1303.359375 1303.959351 1303.919434 1303.275879 1302.641846 1301.152588 1299.000488 1296.923584 1295.351074 1294.920166 1293.737915 1283.748169 1275.030396 1268.155518 1270.359009 1273.412231 1270.473999 1261.617798 1249.811646 1231.007568 1230.425659 1228.190674 1224.166748 1217.590332 1204.124268 1211.243774 1228.389771 1244.474609 1249.29541 1253.956177 1257.568359 1259.077881 1256.594604 1251.249756 1243.697876 1234.650391 1228.447144 1240.970825 1251.667114 1253.244751 1245.324341 1238.056396 1238.122314 1241.478271 1248.132935 1257.477051 1260.22998 1257.62915 1245.421143 1234.901367 1223.562988 1214.692139 1207.397949 1198.504395 1190.973145 1184.359009 1175.58606 1166.144653 1162.781616 1169.244507 1179.741333 1186.682373 1187.177856 1183.364868 1176.531372 1169.701538 1176.807373 1187.368286 1188.655884 1184.588501 1176.227539 1168.422363 1169.026611 1177.199219 1189.514648 1201.233032 1200.098145 1190.250122 1181.090332 1172.611084 1162.721069 1154.199585 1147.097656 1139.962036 1133.784424 1131.033569 +1270.909302 1269.710815 1268.809814 1264.579834 1253.537354 1232.365112 1224.066895 1222.416138 1223.548584 1231.275757 1219.581177 1205.467773 1193.356323 1185.738403 1173.742554 1168.868042 1165.925293 1164.604492 1166.468872 1168.886963 1170.988159 1173.106323 1179.835815 1189.990723 1203.234863 1212.522217 1223.559937 1239.336182 1254.802734 1274.574951 1288.820801 1296.75293 1299.929932 1309.540405 1324.962158 1335.951782 1350.015259 1358.702515 1364.33252 1366.724243 1358.971069 1348.836304 1337.316528 1331.237061 1315.898315 1312.293701 1304.830444 1301.974487 1298.441895 1295.104492 1287.456177 1276.130005 1266.331421 1272.692383 1281.604858 1287.852661 1291.16748 1297.18103 1302.397217 1307.394043 1311.919922 1314.883789 1315.439453 1312.239746 1306.002808 1306.717407 1306.302979 1299.071045 1290.999512 1279.346802 1266.882324 1276.617798 1287.980469 1293.978882 1293.30542 1291.626953 1289.654175 1288.477295 1287.44165 1286.31897 1284.902466 1283.263916 1281.119995 1277.816772 1278.787231 1278.730347 1275.509277 1266.741577 1266.809937 1271.210205 1275.203491 1274.682373 1271.880493 1266.814819 1257.512085 1254.542236 1257.103638 1265.161133 1272.42981 1273.990723 1270.723999 1264.83728 1259.202637 1254.804077 1251.938965 1253.393921 1256.171631 1256.993652 1259.001343 1258.37439 1256.899414 1256.087158 1255.635742 1255.276611 1256.859985 1264.151489 1269.975586 1273.49585 1276.533325 1278.769775 1282.141113 1287.770264 1292.76001 1295.461304 1295.848022 1296.858521 1297.951782 1299.456421 1301.381104 1302.842529 1304.075439 1304.984253 1305.53064 1305.844116 1308.325684 1312.012695 1315.393677 1317.083984 1321.340088 1327.294556 1331.165283 1328.092407 1320.288086 1316.237549 1312.060791 1308.822754 1306.555908 1307.071533 1307.725098 1308.559448 1308.504517 1307.755371 1305.314087 1297.471924 1291.087891 1286.075195 1282.530518 1280.344604 1269.914429 1266.069946 1264.635986 1263.151489 1259.686035 1255.512817 1253.902832 1251.54895 1248.836426 1246.113403 1242.560791 1241.573486 1244.786255 1244.086792 1251.23999 1262.504028 1276.105591 1291.547363 1293.790771 1291.638794 1290.144897 1288.674316 1287.179321 1285.257446 1282.746338 1280.707397 1280.553345 1281.535156 1282.491211 1281.141724 1278.089722 1274.868286 1273.105835 1271.599609 1269.279907 1268.102417 1267.585815 1267.450195 1269.625366 1267.284058 1259.608521 1251.479248 1253.32251 1255.850098 1258.716553 1260.387695 1263.173828 1265.767944 1266.920654 1266.859253 1266.542114 1267.043945 1268.344482 1269.171021 1269.339233 1267.889893 1265.96167 1263.811646 1261.348877 1258.301636 1257.670898 1258.857422 1259.292725 1258.477417 1256.675781 1255.335938 1257.248901 1257.190552 1256.568604 1256.338501 1255.081177 1251.216064 1247.516113 1247.275391 1248.506958 1248.589966 1247.615967 1246.821777 1246.685669 1246.623657 1246.421021 1246.516968 1246.661621 1246.041748 1244.410156 1242.836548 1241.925659 1240.822144 1239.413208 1237.873901 1235.571899 1234.393799 1236.035889 1236.990112 1238.52478 1241.135864 1244.276245 1244.025269 1242.656738 1242.328613 1242.720825 1244.092407 1245.058716 1245.446533 1245.169678 1244.591309 1244.680298 1245.063599 1245.002319 1242.056519 1237.613281 1232.145508 1225.904541 1225.620361 1224.777588 1226.054199 1226.643433 1226.028076 1226.003906 1225.989746 1225.884766 1225.560425 1225.174194 1225.132935 1225.060303 1224.925903 1225.090088 1225.226196 1225.046875 1224.627197 1223.55542 1221.811279 1221.128174 1221.389526 1221.716309 1222.042603 1222.210083 1222.277832 1222.195801 1221.974854 1221.766479 1221.444458 1221.166992 1220.672241 1219.976562 1219.46167 1217.573975 1214.46167 1212.190552 1210.174438 1208.864502 1208.452026 1208.219482 1208.074585 1207.948608 1207.730103 1205.894531 1203.213135 1201.057129 1199.82959 1199.049072 1198.686035 1198.33313 1197.774902 1196.994019 1196.288208 1195.661865 1195.408569 1195.271118 1194.988159 1194.67627 1194.322266 1193.755127 1193.075073 1192.385864 1191.476074 1190.452026 1189.374634 1187.980713 1186.370972 1184.845459 1183.962769 1183.436279 1182.82373 1181.656494 1182.500854 1183.380371 1183.47937 1182.714111 1181.486572 1180.851074 1183.065674 1184.290161 1185.007324 1185.673706 1186.896118 1187.995239 1189.145508 1190.182007 1191.384277 1192.808105 1194.529907 1195.651978 1195.515259 1194.384277 1194.796509 1195.782959 1195.122437 1194.85437 1195.386841 1195.679077 1197.352661 1197.403931 1197.082886 1196.032471 1194.68457 1192.34021 1189.288452 1186.732178 1185.011108 1184.208374 1184.381226 1184.62439 1184.923462 1185.619873 1186.312866 1186.972412 1187.54248 1188.053955 1188.442505 1188.665283 1188.704224 1188.743774 1188.596191 1188.587646 1188.468018 1188.4375 1188.32373 1188.415527 1188.375977 1188.526611 1188.866211 1189.324585 1189.824829 1190.191162 1190.561157 1190.940308 1191.194824 1191.555664 1191.582275 1191.459351 1191.37915 1191.157837 1190.962769 1190.70166 1190.383789 1189.999756 1189.527344 1188.834351 1188.182861 1187.423828 1186.659058 1185.845947 1185.082031 1184.351074 1183.905273 1183.536499 1183.163574 1182.50293 1181.575562 1180.688354 1180.055298 1179.556885 1179.042236 1178.462036 1177.929321 1177.567505 1177.376709 1177.318848 1177.156616 1176.816895 1176.154663 1175.348389 1174.525146 1173.695923 1172.936523 1171.752686 1170.619507 1170.937012 1171.45105 1172.630493 1173.858154 1175.317871 1176.677246 1178.095947 1179.451538 1180.694458 1182.171387 1184.115845 1186.883789 1189.693604 1192.615845 1195.52771 1200.098633 1204.898071 1208.517334 1210.344727 1212.090942 1215.155396 1219.17334 1219.789429 1218.561646 1213.926392 1210.957886 1209.174927 1207.877319 1206.939331 1206.966797 1207.617798 1207.711548 1207.560059 1207.515137 1207.404663 1206.543823 1205.638306 1204.985962 1204.567017 1204.664795 1205.046997 1205.982178 1207.30249 1209.515503 1211.637817 1213.322998 1214.145874 1214.505493 1214.885132 1215.827393 1218.573364 1220.049438 1219.931274 1219.212402 1219.111938 1219.296875 1221.628418 1225.648926 1230.990112 1233.891602 1236.819702 1241.196777 1245.187866 1250.366211 1255.813354 1261.781616 1268.402344 1280.585693 1288.448975 1296.687988 1306.143677 1307.790283 1307.727905 1307.371216 1307.052979 1306.479858 1305.967163 1305.260742 1304.034668 1304.445068 1305.210449 1305.674072 1305.449341 1304.809692 1303.791504 1301.657471 1300.031494 1298.13147 1296.722656 1294.546021 1288.87439 1280.226318 1270.896973 1264.846802 1263.437012 1260.805542 1250.897705 1242.329834 1241.368896 1244.028931 1242.686157 1238.643677 1230.648071 1210.929932 1214.114624 1230.019897 1245.409912 1251.92981 1258.345093 1265.235229 1269.292114 1266.556519 1260.141479 1252.252441 1242.452148 1235.902954 1245.704956 1258.662109 1261.68396 1253.013794 1245.463989 1243.371582 1249.156982 1256.087524 1260.484375 1260.515381 1249.933228 1240.263794 1230.448853 1222.022339 1212.462769 1204.153198 1194.977539 1185.37207 1181.581543 1180.232788 1173.051025 1171.41272 1173.636719 1184.678345 1192.197266 1194.956299 1190.908569 1183.995972 1175.891113 1179.408691 1190.334717 1193.322876 1188.583496 1180.332153 1171.011963 1173.579102 1181.968628 1191.639648 1207.206665 1210.131104 1194.444702 1181.438843 1173.60437 1165.662476 1158.511353 1155.418213 1146.077759 1135.78125 1132.132935 +1260.162231 1244.912842 1249.174438 1246.804932 1234.856323 1217.675903 1204.525024 1202.875244 1202.686035 1212.022583 1208.714844 1194.018188 1180.270996 1171.244873 1168.460449 1166.600464 1164.919189 1166.275757 1169.04126 1172.307495 1175.800049 1179.123657 1180.59668 1187.86731 1199.601807 1209.367554 1216.679443 1232.786987 1249.559937 1267.682861 1287.483887 1300.744141 1309.434814 1317.736206 1331.282959 1342.375 1355.665161 1362.224121 1367.940552 1367.638306 1360.813599 1352.835449 1345.018555 1336.43811 1321.997192 1314.957886 1311.618286 1308.553589 1306.676392 1302.251831 1292.869751 1279.356323 1267.140503 1275.609009 1285.735474 1293.592529 1295.799072 1299.940308 1305.267578 1311.229614 1316.663818 1319.257935 1318.386963 1316.045044 1314.798218 1310.588013 1306.348511 1296.042725 1284.43811 1274.196045 1267.838867 1283.151733 1294.637695 1296.54834 1296.147095 1293.855347 1291.759521 1290.546509 1289.428467 1288.543335 1287.31543 1285.520386 1282.752075 1280.333496 1282.484009 1282.801147 1281.870972 1266.810547 1266.2854 1273.691406 1280.262695 1278.175659 1274.822144 1269.882324 1258.024902 1254.589111 1260.320679 1271.697876 1282.841919 1281.818237 1278.026123 1273.335815 1267.211914 1257.802856 1253.566895 1254.628662 1263.326782 1266.7677 1263.585449 1261.5177 1259.947144 1258.871704 1258.541504 1258.18811 1256.494141 1258.552368 1264.587036 1269.180176 1271.849487 1273.686279 1277.56311 1281.896729 1286.039429 1290.514404 1294.683105 1297.018311 1297.026611 1299.069214 1302.631836 1304.456421 1305.642822 1306.539917 1307.230713 1308.21875 1309.966797 1312.236572 1314.590454 1315.925171 1317.184692 1322.18457 1325.095459 1323.130371 1318.122681 1313.900635 1309.658569 1306.242798 1303.657104 1306.145386 1307.844727 1308.868652 1308.68689 1308.199219 1305.844971 1299.029541 1292.033813 1289.560059 1287.161011 1283.876709 1276.078979 1267.724487 1265.352295 1262.667969 1259.003296 1255.5625 1252.894287 1250.473267 1248.000366 1245.25293 1241.400879 1244.915039 1248.694458 1253.383179 1259.352051 1266.546753 1279.857178 1293.369873 1295.36084 1293.869873 1292.496582 1290.903931 1289.220337 1287.428589 1285.074219 1283.13147 1282.410278 1283.282593 1282.581665 1280.025024 1278.233887 1276.454834 1274.704712 1272.293213 1268.37793 1270.325073 1269.867188 1269.219971 1270.659058 1266.631226 1259.777832 1252.212158 1254.220581 1257.319092 1262.978882 1264.597412 1266.627563 1268.742554 1269.015381 1268.246826 1267.652832 1268.080322 1269.72168 1270.947021 1270.925049 1269.4375 1268.734741 1266.549683 1264.088867 1263.057251 1262.685913 1263.432129 1263.884155 1262.489258 1259.522095 1257.302612 1259.819092 1260.597046 1260.322388 1259.936279 1258.894287 1256.560181 1254.057251 1251.973267 1251.021484 1250.561035 1250.20166 1249.768799 1249.531982 1249.476318 1248.833862 1248.255615 1247.537354 1245.859863 1243.991455 1243.613525 1243.283203 1242.13916 1240.547485 1239.41626 1239.14563 1240.48877 1242.437256 1242.401367 1242.036743 1242.751099 1244.804077 1244.696289 1243.968872 1242.968018 1243.454956 1244.612061 1245.501465 1245.875488 1246.005737 1245.95813 1245.793945 1245.442871 1243.136963 1239.659424 1236.432373 1232.532837 1226.509644 1229.046387 1231.830566 1231.386597 1231.180908 1231.467651 1230.791504 1229.358765 1228.607666 1227.887329 1227.445801 1227.149536 1226.961792 1226.784058 1226.795532 1226.956055 1226.828491 1226.574219 1225.853027 1224.815308 1223.872192 1223.613403 1223.616821 1223.656616 1223.407349 1223.018677 1222.594604 1222.040161 1221.59729 1221.255859 1221.107056 1220.73645 1219.881104 1218.664551 1216.366455 1213.355957 1211.17981 1209.666138 1208.497192 1208.049194 1207.781982 1207.67395 1207.592651 1206.490845 1204.279541 1201.605591 1199.022705 1197.337524 1196.692505 1196.710938 1196.555298 1195.831543 1195.232422 1195.063721 1194.953491 1194.907593 1194.803345 1194.630005 1194.327393 1193.876221 1193.358398 1192.816406 1192.091919 1191.361572 1190.550781 1189.455933 1188.129028 1186.352173 1183.812378 1183.116821 1182.73877 1182.132324 1182.584106 1183.362671 1184.175659 1184.523315 1183.933594 1183.226196 1182.525146 1181.582031 1183.198608 1184.945068 1186.607788 1188.314087 1189.682861 1190.676025 1191.571167 1192.911133 1194.12915 1195.245117 1195.857788 1195.907349 1195.433228 1195.463867 1196.296631 1196.239868 1195.879883 1196.469482 1197.511841 1198.050903 1197.937378 1197.479492 1196.297852 1194.800293 1193.025391 1190.880005 1188.517212 1186.783447 1185.96582 1185.714722 1185.277344 1185.655884 1186.104126 1186.816406 1187.536743 1188.203857 1188.830933 1189.259033 1189.705688 1189.926392 1189.838013 1189.852295 1189.861572 1189.720337 1189.667725 1189.651611 1189.60022 1189.609985 1189.779541 1190.18335 1190.626587 1191.016479 1191.416382 1191.728149 1191.953125 1192.282471 1192.542725 1192.612427 1192.57666 1192.508423 1192.250977 1192.00354 1191.706665 1191.391968 1191.023193 1190.562866 1189.835815 1188.994629 1188.178711 1187.398315 1186.58728 1185.900635 1185.152954 1184.647705 1184.287231 1183.816406 1183.213867 1182.332275 1181.487427 1180.945801 1180.396362 1179.828247 1179.465576 1178.960815 1178.737061 1178.728882 1178.719482 1178.5 1178.111328 1177.4552 1176.68689 1175.843872 1175.001709 1173.951782 1172.680786 1171.432007 1171.234375 1170.797729 1171.81665 1173.28186 1174.846313 1176.245117 1177.621582 1178.95813 1180.062256 1181.109619 1182.37146 1184.475952 1187.171021 1190.188965 1193.145264 1195.763672 1200.442505 1204.491333 1207.532349 1209.591675 1212.861694 1218.180054 1220.200195 1216.468262 1212.591187 1209.963989 1208.273804 1206.859131 1206.180054 1206.954346 1207.544312 1207.730347 1207.891235 1207.843262 1207.544556 1207.389771 1205.710327 1204.734009 1204.080444 1203.980103 1204.325073 1205.110962 1206.096191 1207.339844 1209.487427 1211.317871 1212.087158 1212.35437 1212.546387 1213.221924 1215.082153 1217.231934 1217.699463 1218.849976 1219.568604 1220.87146 1223.391724 1226.321167 1229.947876 1232.827881 1235.786377 1238.647949 1241.795654 1244.115356 1248.943115 1255.65271 1262.497803 1271.27356 1281.748657 1288.526611 1297.312866 1305.773438 1308.184326 1308.293213 1307.773315 1307.186523 1306.508423 1305.452515 1304.51709 1305.231689 1306.184448 1306.501465 1306.674561 1306.389893 1305.729248 1304.192993 1302.571045 1300.442261 1298.317627 1295.952271 1291.891846 1282.676025 1271.573242 1261.779907 1255.073853 1255.19104 1252.809082 1249.817383 1260.348633 1261.693726 1258.074463 1249.469604 1240.192261 1219.689331 1220.027222 1234.633423 1246.330078 1252.800415 1259.301758 1269.769897 1272.718018 1272.360474 1269.478394 1262.842163 1252.348145 1241.857056 1249.629028 1264.924438 1270.907349 1261.281738 1255.778198 1254.247192 1257.902832 1265.028198 1258.237061 1250.171631 1238.991333 1230.911621 1223.491333 1215.848755 1206.631714 1196.492798 1193.118164 1188.550171 1186.779297 1185.807373 1181.821533 1179.014893 1179.759399 1188.464111 1197.393311 1201.04895 1198.331787 1190.812866 1182.18042 1182.690918 1195.393921 1197.595825 1192.205688 1183.901855 1178.678345 1181.338989 1186.034912 1193.562256 1202.878662 1202.644043 1191.898438 1178.659912 1171.197144 1164.630371 1158.998901 1157.103516 1156.867188 1138.832153 1132.758789 +1247.69873 1228.646729 1234.845459 1235.555176 1214.905151 1208.79541 1196.126709 1189.371826 1188.045532 1190.00708 1183.97522 1172.891724 1168.72522 1167.219849 1166.188843 1165.404175 1166.322754 1168.779541 1171.014893 1176.450073 1181.685303 1186.330444 1187.308472 1187.896973 1193.550537 1200.753418 1208.777832 1221.627319 1238.594971 1254.631836 1273.800049 1287.847778 1307.673096 1318.447144 1327.579346 1343.021484 1355.590942 1363.221069 1373.596069 1367.413818 1361.166382 1355.800293 1347.860107 1340.653687 1330.044067 1322.439331 1320.114502 1317.157104 1312.332275 1305.503784 1292.480957 1279.960449 1267.884399 1281.980957 1292.894165 1297.781982 1300.165283 1302.262451 1307.581665 1315.37439 1321.559692 1324.52478 1322.837402 1320.764771 1319.079956 1310.23999 1301.882812 1291.224243 1280.473877 1271.745728 1272.632324 1287.690674 1300.152466 1301.187134 1299.241211 1296.909424 1294.916138 1292.364502 1291.428223 1291.056519 1289.811157 1288.12915 1286.476562 1285.758545 1286.262939 1284.993408 1282.473755 1267.19458 1266.949829 1276.763184 1283.812866 1281.645264 1278.56958 1271.489136 1258.953003 1254.559448 1261.288208 1273.200317 1284.041382 1293.102417 1290.717896 1282.812012 1272.741821 1262.03186 1255.383545 1253.92395 1269.029419 1269.5625 1266.90979 1264.582153 1263.022217 1262.061157 1261.972534 1261.901733 1260.879761 1259.218872 1258.394043 1262.511597 1266.571533 1267.321533 1271.211304 1275.287476 1278.221924 1280.539185 1282.310425 1289.00293 1292.428589 1294.754639 1303.449951 1305.771118 1306.860596 1307.715454 1308.331909 1309.15271 1310.442505 1311.987549 1313.403076 1314.605713 1316.096313 1317.52832 1318.992676 1316.844604 1313.540771 1309.34729 1305.671753 1303.078491 1298.05127 1305.690918 1307.730347 1308.827637 1308.604248 1308.269531 1308.000122 1306.628052 1301.488159 1294.353271 1291.121948 1285.378052 1279.014038 1271.870972 1267.494385 1263.460938 1260.04541 1257.045898 1253.650635 1249.743286 1246.973267 1244.45752 1242.86731 1247.894653 1252.774048 1258.169312 1264.031738 1271.787964 1284.368286 1295.935181 1298.796143 1297.324463 1295.0448 1292.241943 1290.923828 1289.685059 1287.988159 1286.410034 1285.506226 1285.139526 1283.698853 1281.821289 1280.052856 1278.164429 1277.070923 1275.476807 1273.073364 1273.931152 1275.097412 1274.75354 1271.471558 1266.440796 1260.414917 1252.717651 1254.539795 1262.624268 1269.212646 1268.473511 1269.036011 1270.512573 1270.98938 1270.169312 1269.4198 1269.508179 1271.380127 1272.629761 1272.685425 1272.052124 1270.809814 1267.977051 1266.592773 1266.921631 1267.791382 1268.532104 1269.331055 1267.579712 1265.119629 1263.410767 1264.419189 1265.326294 1264.703003 1263.416626 1261.463379 1258.942017 1255.927246 1254.400879 1253.413452 1252.809937 1252.793945 1252.57605 1252.671265 1252.492676 1251.665527 1250.504639 1249.20166 1247.093262 1244.996948 1245.162476 1244.606323 1243.140137 1241.573486 1241.106323 1241.536499 1243.462158 1245.037354 1245.181885 1244.613159 1243.348022 1244.950562 1245.265869 1244.488159 1243.594116 1244.140381 1245.278809 1245.692505 1246.031006 1246.364624 1246.658447 1245.686401 1242.745117 1239.085938 1236.012085 1233.314697 1232.320068 1227.516357 1231.819946 1233.059448 1233.135864 1233.229858 1233.126099 1232.567627 1231.835938 1231.132935 1230.112183 1229.458618 1229.050293 1228.657104 1228.372314 1228.500122 1228.612061 1228.691772 1228.61438 1228.35498 1227.553467 1226.567383 1225.924438 1225.50061 1225.059082 1224.430664 1223.709717 1222.862549 1221.900146 1220.861572 1220.744507 1220.768555 1220.37561 1219.023438 1216.662476 1214.180908 1211.474243 1209.832153 1208.656372 1207.653931 1207.220703 1206.798462 1206.428101 1205.770142 1204.764648 1203.125366 1200.545044 1196.84668 1195.428711 1195.241821 1195.242676 1195.277222 1195.262085 1195.124512 1195.015015 1195.029663 1195.052612 1195.036377 1194.768799 1194.229004 1193.875 1193.356567 1192.848022 1192.309204 1191.654053 1190.920898 1189.979858 1188.759277 1187.081665 1185.012817 1184.109985 1183.739746 1183.048462 1183.505737 1184.266968 1185.060913 1185.231079 1185.058716 1184.383789 1183.90271 1183.038574 1182.485596 1184.822998 1187.593384 1190.314331 1192.106445 1192.319946 1192.716431 1194.253296 1195.582886 1195.997314 1196.272583 1196.32959 1196.187012 1196.456787 1197.014404 1197.217285 1197.250122 1197.67041 1198.329468 1198.614746 1198.60144 1197.984253 1197.023071 1195.788696 1194.149292 1192.092041 1189.99231 1188.383423 1187.463013 1186.657104 1185.93335 1186.107178 1186.557007 1187.343628 1188.297485 1189.156006 1189.839111 1190.485596 1190.979858 1191.143799 1191.233154 1191.230103 1191.192383 1190.998535 1190.959351 1190.834839 1190.682983 1190.728271 1190.869629 1191.262695 1191.752075 1192.170898 1192.619019 1192.911133 1193.120972 1193.37207 1193.680786 1193.688354 1193.688965 1193.522949 1193.29248 1193.074219 1192.779419 1192.471924 1192.116821 1191.554199 1190.935425 1190.031128 1189.036499 1188.209595 1187.360474 1186.626953 1185.87915 1185.253296 1184.839355 1184.30127 1183.689941 1183.029419 1182.272583 1181.553711 1181.005981 1180.490234 1180.109131 1179.779419 1179.826416 1179.892578 1179.987915 1179.904907 1179.60022 1179.070435 1178.262573 1177.398071 1176.426514 1175.214478 1174.080811 1173.053223 1172.040161 1170.9104 1171.499878 1173.142944 1174.641235 1176.031982 1177.360474 1178.647827 1179.894043 1180.899536 1181.686523 1182.565308 1184.598999 1188.052612 1191.478882 1193.698486 1195.696045 1199.800049 1203.269897 1206.029053 1207.968994 1209.613159 1210.820679 1209.916016 1209.127441 1207.677979 1206.773438 1205.279907 1205.241455 1206.867432 1207.534302 1207.61377 1207.849976 1208.012573 1208.084961 1207.740112 1206.18396 1204.493286 1203.636475 1203.376587 1203.614868 1204.369263 1205.519287 1207.469238 1209.374146 1210.475952 1210.714844 1210.481689 1210.085449 1209.768555 1209.856689 1214.552368 1217.987915 1220.30481 1222.690796 1225.029297 1226.182983 1227.458862 1228.844849 1230.958252 1233.258545 1235.748657 1238.072266 1240.498291 1243.841553 1250.810547 1256.757202 1262.941284 1270.754639 1280.079956 1287.619019 1294.224976 1303.04248 1308.266602 1307.964844 1307.694702 1307.243774 1306.359985 1305.162842 1305.955566 1306.927612 1307.402466 1307.564209 1307.506348 1306.75708 1305.791016 1304.467529 1302.274902 1299.026855 1296.082642 1293.008423 1282.414062 1268.062744 1265.325317 1267.097656 1267.70752 1263.414795 1261.125854 1269.993408 1269.874512 1265.10144 1257.447754 1245.290527 1223.921997 1225.422485 1246.577881 1253.305786 1257.992798 1262.08313 1267.786011 1274.714478 1277.22522 1276.786621 1273.328003 1265.462158 1254.217163 1254.419189 1272.866211 1279.589722 1271.255859 1269.037476 1269.308472 1270.828125 1260.437134 1248.665405 1239.323853 1231.069458 1224.859375 1217.946411 1212.802979 1208.390259 1202.127319 1196.963623 1196.314819 1192.249878 1189.802124 1186.519287 1184.357178 1185.099487 1191.678101 1201.122559 1208.332275 1205.858643 1198.821655 1189.841919 1186.591064 1197.767578 1200.183838 1195.180786 1184.863281 1183.373779 1187.876953 1193.824341 1197.291138 1199.223511 1196.700684 1186.034912 1174.71582 1167.412476 1161.618042 1156.867188 1153.61792 1151.078857 1140.983032 1133.447998 +1235.745483 1219.234131 1215.371582 1227.529053 1212.275635 1192.405029 1185.822998 1179.932861 1177.353149 1169.628906 1168.236816 1167.29126 1166.446045 1166.402344 1167.518555 1170.287964 1172.227173 1173.579346 1175.381592 1180.363525 1189.366211 1199.461304 1200.203369 1193.905029 1199.03772 1204.065063 1205.302979 1215.007202 1226.590332 1242.925903 1261.155396 1273.779785 1288.925903 1303.396851 1320.698364 1342.413818 1356.615234 1364.244873 1374.036987 1366.274536 1359.512573 1352.850708 1344.699219 1339.046387 1334.169678 1330.596191 1324.60083 1320.334717 1315.313477 1305.496948 1292.568115 1278.148315 1273.501587 1287.212036 1297.403442 1303.857178 1305.697388 1305.244873 1310.134766 1318.695679 1327.994141 1329.774536 1327.326904 1322.539673 1317.707764 1310.326904 1302.923706 1295.176636 1285.144775 1277.539307 1276.62915 1289.487671 1306.234985 1304.922119 1302.892822 1301.072754 1298.339844 1295.472656 1294.501831 1294.123535 1292.057617 1290.86377 1290.405518 1290.746216 1290.961792 1287.33313 1282.187134 1268.85022 1266.94397 1278.133423 1284.703613 1284.95752 1282.992432 1276.854248 1265.300537 1256.012573 1259.581787 1270.620239 1277.529053 1289.46875 1290.699707 1283.437988 1274.638428 1264.696777 1256.947876 1254.238403 1268.349121 1269.943848 1268.483887 1266.922241 1265.47644 1264.551758 1265.575317 1267.226929 1267.120972 1266.411987 1265.282959 1262.14209 1260.614868 1262.711548 1266.140747 1269.299561 1272.027222 1274.162109 1275.83374 1278.544678 1283.817749 1291.187134 1303.360596 1306.762329 1307.639282 1308.059814 1308.634155 1309.362671 1310.305176 1311.406006 1312.538208 1313.566528 1314.508301 1315.319214 1314.53186 1312.079468 1308.969971 1305.222046 1301.451172 1297.195679 1291.814941 1300.507568 1306.642578 1308.114624 1306.560913 1307.493774 1308.303223 1308.810181 1308.104248 1303.117188 1294.558105 1287.9646 1282.637207 1274.812256 1268.18396 1265.018311 1260.809937 1257.311279 1253.15625 1248.333008 1245.692261 1242.553467 1245.745361 1250.487671 1255.783936 1261.066772 1267.69812 1275.262817 1287.709839 1302.063477 1303.789307 1300.504883 1297.59021 1294.417236 1293.458374 1292.481812 1290.53186 1289.002319 1288.005005 1287.437622 1285.707275 1283.185059 1280.995483 1279.22229 1279.655762 1279.741699 1277.445557 1278.505005 1281.084106 1280.631958 1274.684814 1267.574707 1261.264282 1253.893799 1254.642456 1264.243042 1269.607788 1270.59021 1271.48584 1272.518066 1273.361084 1273.019653 1272.685303 1272.858398 1273.891968 1274.885132 1275.200928 1274.662964 1273.270142 1269.979248 1268.984741 1270.095581 1271.123169 1271.590332 1271.952026 1270.819336 1268.734863 1267.075195 1268.898438 1269.841431 1268.874756 1267.204956 1265.196411 1261.478516 1257.458862 1255.904175 1255.129028 1255.32019 1255.319092 1255.619629 1255.672974 1255.340942 1254.047119 1252.590576 1251.352661 1250.002808 1248.491699 1247.432617 1246.050049 1244.102417 1242.64917 1242.533447 1242.875488 1244.078369 1245.431641 1246.069336 1245.765869 1245.00769 1245.818604 1245.825073 1245.126465 1244.168335 1244.50708 1245.652832 1245.855103 1246.006348 1245.961792 1245.187622 1241.341919 1234.674194 1232.921509 1232.162354 1229.356445 1228.612061 1228.756226 1233.335449 1233.990356 1234.39856 1234.442261 1234.328247 1233.863525 1233.325684 1232.77478 1231.984863 1231.013672 1230.5896 1230.340942 1230.020142 1229.949097 1230.293335 1230.575562 1230.792114 1230.791504 1230.171143 1228.980713 1228.239868 1227.259888 1226.288574 1225.340454 1224.214722 1223.008545 1221.472778 1219.799316 1219.458496 1219.265503 1218.061401 1216.380859 1214.094727 1210.845947 1209.096802 1208.387695 1207.494019 1206.855225 1206.547729 1206.244263 1205.95459 1205.369507 1204.497681 1203.037964 1200.828247 1197.663208 1196.153442 1196.427124 1195.883057 1195.240356 1195.311279 1195.352417 1195.422363 1195.360474 1195.42688 1196.069946 1195.312622 1194.762451 1194.071777 1193.563599 1193.168213 1192.736572 1192.33606 1191.722046 1190.88916 1189.770996 1188.569946 1187.216919 1186.221436 1185.489868 1184.896606 1184.954834 1185.504272 1185.976929 1186.086304 1185.833862 1185.35376 1184.629883 1183.894043 1182.757812 1185.011475 1188.660522 1192.522339 1195.265381 1194.195068 1193.630249 1194.564575 1195.716553 1196.141846 1196.414185 1196.59314 1196.887817 1197.409424 1197.832642 1198.238525 1198.447266 1198.778809 1199.250732 1199.398926 1199.19751 1198.456055 1197.565796 1196.291138 1194.710571 1192.823608 1191.102783 1189.631958 1188.479858 1187.672729 1186.947632 1186.578003 1187.077148 1187.860474 1189.013062 1190.062866 1191.019409 1191.856689 1192.401001 1192.589966 1192.562256 1192.499512 1192.380005 1192.262207 1192.119873 1191.790039 1191.696289 1191.706177 1191.893311 1192.315063 1192.724365 1193.314453 1193.807373 1194.013428 1194.265625 1194.559814 1194.920654 1194.896484 1194.730103 1194.592285 1194.392822 1194.106079 1193.875244 1193.553955 1193.257812 1192.719849 1192.02356 1191.069824 1190.070312 1189.081177 1188.209473 1187.389282 1186.589233 1185.931763 1185.318604 1184.617798 1184.006836 1183.287598 1182.438721 1181.942139 1181.468506 1180.975708 1180.531494 1180.435547 1180.499756 1180.793579 1181.068481 1181.301758 1181.137329 1180.702148 1179.904053 1178.952881 1177.875854 1176.739258 1175.688232 1174.542969 1173.050659 1171.710327 1172.387939 1173.647217 1174.831055 1175.955933 1177.3573 1178.676147 1179.956299 1181.080566 1181.897217 1182.443237 1183.040161 1186.453613 1190.007446 1192.355591 1193.946045 1195.270996 1198.518555 1201.033691 1203.164062 1204.246216 1205.032959 1204.993652 1204.573486 1203.509277 1202.892334 1202.151611 1203.664795 1206.247925 1207.560547 1207.53833 1207.818481 1207.984985 1208.10791 1208.00415 1206.80188 1204.33313 1203.22583 1202.658813 1202.845581 1203.655029 1205.149902 1207.498779 1209.055664 1209.576538 1209.546875 1209.002808 1207.790283 1207.258423 1207.802002 1213.475586 1217.731689 1220.400269 1225.495117 1230.627808 1230.801514 1229.221069 1229.130005 1229.255371 1230.61499 1232.4021 1234.515625 1237.309082 1240.810913 1244.941772 1249.031006 1254.666992 1261.952881 1270.855103 1278.129272 1283.149414 1288.09436 1296.850342 1306.378662 1307.796631 1307.999146 1307.792969 1307.331055 1307.262939 1307.866089 1308.307861 1308.456787 1308.275024 1307.858154 1307.062744 1306.033813 1303.56543 1297.447388 1292.222778 1286.148682 1275.075928 1267.292114 1274.420288 1278.009766 1275.814697 1270.505615 1267.150146 1273.082397 1273.808472 1270.010376 1262.181396 1249.779541 1231.869263 1232.09729 1249.205688 1259.768066 1269.656982 1270.398193 1272.489868 1277.919434 1281.312134 1282.760498 1281.146606 1275.435425 1266.062378 1263.383057 1281.51001 1284.913452 1282.031982 1278.445435 1272.37854 1265.243896 1255.146484 1244.085693 1233.274658 1230.505493 1225.828613 1221.873535 1217.733887 1213.100098 1207.749023 1206.835449 1200.885376 1196.977295 1194.1698 1194.201416 1192.920532 1192.941895 1194.327271 1202.736694 1210.26416 1210.411377 1206.725098 1197.840088 1193.15979 1202.847778 1205.678711 1197.891357 1191.07959 1190.718262 1194.957275 1197.829468 1196.859741 1193.704102 1187.437866 1177.878784 1168.564941 1162.23584 1157.240112 1152.314453 1149.921387 1147.263916 1141.296265 1134.060303 +1234.504028 1213.040527 1200.983521 1203.092163 1193.286621 1180.105835 1176.631592 1173.643921 1170.819824 1168.710205 1167.255737 1167.163574 1167.837891 1169.174438 1171.720825 1176.300537 1179.19397 1180.169556 1181.814575 1185.419189 1195.496338 1208.588989 1210.937988 1204.886597 1206.491821 1214.627808 1219.923706 1215.441406 1229.323364 1249.155762 1265.68335 1276.910278 1285.234375 1295.383423 1314.302612 1338.975586 1356.467163 1365.539062 1369.516968 1366.435547 1357.760132 1345.130737 1336.847168 1332.567383 1331.297729 1327.117798 1321.878174 1317.554199 1312.670654 1304.770264 1291.036865 1274.442993 1277.950806 1291.224487 1303.542358 1308.292725 1310.657104 1311.190796 1314.091553 1320.848145 1329.757446 1330.791748 1328.96106 1319.205078 1313.568237 1308.350464 1301.452881 1293.977173 1284.338623 1278.068115 1277.013794 1290.434937 1303.111328 1307.168213 1306.560913 1305.025146 1302.414429 1300.832764 1299.414551 1297.681519 1295.542725 1294.400391 1292.966797 1294.714478 1294.119629 1290.508179 1281.432373 1268.561279 1269.122925 1280.390869 1286.919312 1287.899658 1286.474243 1282.354614 1271.850586 1259.824341 1256.504395 1265.925659 1271.969116 1276.607056 1278.823486 1278.015747 1271.567871 1263.911011 1257.168335 1254.768188 1267.520508 1270.520264 1270.865601 1269.305054 1267.638672 1266.178833 1266.96167 1269.703613 1270.41748 1270.771729 1270.425415 1269.742554 1267.281616 1264.315063 1263.213623 1263.829956 1266.297485 1269.408936 1271.373047 1275.239746 1282.312622 1290.029053 1300.071533 1306.852905 1308.046021 1308.093506 1308.252197 1308.934937 1309.801147 1310.962402 1312.076294 1312.959839 1313.31543 1312.927979 1310.768799 1306.811646 1303.996704 1301.147339 1298.029053 1294.762207 1291.601929 1293.929321 1300.455444 1304.194336 1302.339722 1305.009644 1307.82312 1308.174805 1307.525024 1304.003052 1294.441284 1287.576782 1281.379761 1276.404663 1271.326172 1268.446899 1260.58252 1256.322021 1250.717407 1246.37854 1243.61731 1244.540527 1248.649536 1252.416016 1257.230835 1262.139038 1268.64978 1275.979614 1288.926758 1304.322021 1305.822754 1303.786865 1300.640747 1298.233765 1296.658569 1294.386597 1292.074097 1290.871338 1290.416748 1290.27478 1288.174927 1284.742065 1281.867432 1279.792969 1281.865601 1281.827271 1280.089844 1280.919067 1282.300415 1281.986572 1278.432739 1269.69873 1263.629028 1257.734985 1254.126221 1256.16333 1267.623535 1270.508789 1272.134888 1274.500122 1276.354858 1276.332886 1276.225342 1276.329834 1276.952637 1277.435791 1278.157715 1277.817627 1276.736572 1275.092163 1274.26709 1274.389038 1274.796265 1274.765503 1274.492065 1273.687622 1272.217896 1271.878784 1272.805786 1273.45813 1272.329834 1270.952759 1268.782349 1265.194214 1262.192383 1259.171753 1257.417847 1258.103638 1258.195557 1258.180542 1258.121582 1257.406738 1255.898193 1254.070557 1253.771973 1253.318726 1251.875 1250.073608 1247.668701 1244.894287 1243.796753 1243.905518 1243.567383 1243.843384 1245.862427 1247.041992 1247.345825 1247.153931 1247.181641 1246.851318 1246.31189 1245.586304 1245.637817 1245.714355 1245.731567 1244.886597 1243.592651 1241.147583 1234.335327 1231.621216 1231.49585 1231.610229 1232.793213 1232.636475 1232.406738 1233.824097 1234.857788 1235.341431 1235.446411 1235.341797 1235.078003 1234.658447 1233.897095 1232.990845 1232.441162 1232.322998 1232.226929 1231.718872 1231.643555 1232.108887 1232.469238 1232.509766 1232.458862 1232.145386 1231.077515 1230.217041 1228.791016 1227.243896 1225.990723 1224.619995 1223.241699 1221.739746 1220.612915 1219.19458 1217.377075 1215.535767 1213.4646 1211.400146 1207.835083 1207.280396 1207.043335 1207.197388 1206.913208 1206.677856 1206.369141 1205.996704 1205.597168 1204.873901 1203.768433 1202.193481 1200.184204 1198.819458 1198.322266 1196.661133 1195.896118 1196.156372 1196.555786 1196.67041 1196.599731 1196.864624 1196.605347 1195.454346 1194.795776 1194.322754 1193.897949 1193.675049 1193.42981 1193.070923 1192.493286 1191.801025 1190.985474 1190.112427 1189.305298 1188.458374 1187.907349 1187.370483 1187.115112 1187.084595 1187.049683 1186.938477 1186.645996 1186.079468 1185.291016 1184.395508 1183.409058 1184.084473 1189.202148 1193.365356 1195.529785 1194.900391 1194.060303 1194.166504 1195.086304 1195.454834 1196.437012 1196.854248 1197.442383 1198.158325 1198.77478 1199.242188 1199.452393 1199.704346 1200.005249 1200.078125 1199.737915 1198.967529 1197.903564 1196.424683 1194.674561 1193.020386 1191.647827 1190.355103 1189.267822 1188.424805 1187.756592 1187.164062 1187.783081 1188.416748 1189.570923 1190.986328 1192.235718 1193.338257 1193.865112 1193.923096 1193.848877 1193.614746 1193.584473 1193.455566 1193.198975 1192.945801 1192.644043 1192.578247 1192.807861 1193.050415 1193.705078 1194.289551 1194.675903 1195.00061 1195.249634 1195.570923 1195.764038 1195.758179 1195.669556 1195.514526 1195.397339 1195.228394 1194.887939 1194.55957 1194.339111 1193.955811 1193.175537 1192.087769 1191.208984 1190.26001 1189.22229 1188.243164 1187.348145 1186.546143 1185.866089 1185.163208 1184.340088 1183.386597 1182.912598 1182.437622 1181.858643 1181.285034 1180.92627 1180.847168 1181.025146 1181.555786 1182.217285 1182.648926 1182.531006 1182.085083 1181.38269 1180.467773 1179.442261 1178.346436 1177.216797 1175.990723 1174.842407 1174.187622 1174.114258 1174.57373 1175.210815 1176.075317 1177.253418 1178.644897 1180.091553 1181.444702 1182.612183 1183.268921 1184.35376 1186.274414 1188.877075 1190.942017 1192.57312 1193.87207 1194.966553 1196.948608 1199.036255 1200.209351 1200.630981 1200.920898 1199.942627 1198.987915 1197.633301 1196.117676 1200.622803 1205.092407 1207.479736 1207.537231 1207.620361 1207.835327 1207.995605 1208.002686 1207.219238 1204.23645 1202.666382 1201.87439 1201.986694 1202.735718 1204.443115 1206.591919 1208.063599 1208.259399 1207.934814 1207.111084 1206.584473 1208.172607 1210.382812 1213.310547 1217.042358 1220.326538 1226.635986 1232.556396 1232.625854 1232.157715 1230.601074 1228.405884 1228.287109 1229.979492 1231.029541 1233.074097 1236.965088 1239.983276 1242.5 1249.074951 1255.791626 1263.254272 1267.291504 1270.88147 1276.896729 1285.833008 1302.073364 1307.202881 1308.582153 1308.450928 1308.163086 1308.225586 1308.686646 1309.023315 1309.252563 1309.210327 1308.61731 1308.002075 1307.0448 1305.417847 1293.463257 1286.014526 1279.164551 1275.285645 1280.938354 1285.37146 1286.062622 1282.293091 1275.326538 1268.248047 1278.206299 1279.499512 1274.075806 1265.977417 1252.97998 1235.042969 1232.4646 1250.531006 1264.694946 1274.861816 1279.884277 1282.095093 1282.84375 1285.126953 1286.036255 1285.165405 1282.939209 1275.600464 1274.20166 1288.545532 1292.62561 1288.777954 1282.013306 1270.377441 1259.043457 1249.471436 1241.873169 1237.787842 1235.278809 1231.861694 1226.178711 1220.905029 1218.624878 1215.304199 1209.801147 1207.92395 1204.065918 1202.718262 1201.390259 1199.694702 1199.67627 1200.498413 1205.932373 1212.515137 1215.774658 1213.126465 1207.346436 1200.633789 1206.81604 1209.339722 1205.064575 1195.773682 1196.13208 1198.196045 1198.479614 1192.17749 1181.906738 1175.366577 1168.049927 1161.84668 1156.669312 1152.028687 1146.717407 1144.189331 1142.163696 1138.434692 1133.528076 +1234.859375 1218.894531 1192.160278 1180.441284 1178.595093 1174.553101 1170.678589 1168.342896 1168.157837 1168.414062 1169.080322 1169.983154 1170.355347 1172.408936 1178.509399 1184.672363 1192.035889 1193.79541 1190.81189 1196.889648 1206.017944 1209.641113 1216.838257 1215.359131 1210.790039 1223.396118 1233.572144 1239.013062 1237.085449 1251.199829 1271.131226 1283.220703 1291.042236 1301.912964 1323.187622 1341.748291 1354.716797 1365.593994 1367.832275 1363.731812 1354.214722 1342.390869 1330.77417 1325.365234 1319.216553 1316.750244 1314.140503 1310.910156 1306.378296 1297.243774 1284.762451 1275.276611 1284.869873 1291.005249 1305.057495 1313.187622 1316.244873 1316.741455 1316.738892 1320.358521 1324.268433 1321.383667 1316.431274 1312.563477 1308.961182 1303.517578 1296.580811 1289.032959 1281.701782 1277.376831 1277.002197 1286.131104 1298.600586 1306.426392 1311.631104 1310.893555 1306.831421 1305.72168 1303.861206 1302.344604 1300.514771 1298.758057 1297.975586 1298.259766 1295.845215 1291.355591 1277.942017 1267.90979 1273.109619 1285.120728 1292.621704 1290.494751 1292.089111 1284.802246 1275.485596 1265.345947 1256.301392 1262.282593 1266.944824 1269.77478 1273.164917 1271.934326 1267.703857 1262.145874 1256.63269 1257.446045 1265.93335 1270.440063 1272.488281 1271.78125 1269.588623 1267.536499 1268.79895 1270.773926 1272.4646 1273.185303 1273.129028 1272.23584 1271.094849 1269.465088 1268.761353 1269.232422 1268.960815 1266.767944 1266.773804 1269.976318 1279.16687 1285.29895 1291.71167 1299.061279 1304.237061 1306.464966 1307.00647 1307.760132 1309.135376 1310.543823 1312.14624 1313.185669 1313.12207 1311.86377 1308.708374 1304.642944 1300.62561 1296.661133 1294.194824 1291.868042 1286.483276 1287.072388 1293.017212 1295.110718 1293.821289 1300.837036 1304.733887 1304.96936 1303.631104 1298.043823 1290.560913 1283.270264 1278.339478 1272.450928 1270.185303 1265.183228 1258.289673 1252.432129 1245.559814 1243.812012 1245.622803 1249.119873 1254.098511 1255.142944 1256.63208 1261.838135 1266.677856 1274.257202 1284.580444 1298.043091 1306.69519 1305.977295 1303.68335 1301.440308 1299.895996 1297.628784 1294.568481 1293.327759 1293.102539 1293.368286 1290.798828 1286.751953 1282.267944 1281.194702 1283.224365 1282.983521 1280.790039 1281.501221 1282.545532 1282.210083 1279.545044 1269.8302 1264.895508 1259.776733 1255.719482 1256.235229 1262.216187 1267.016846 1269.645996 1276.333008 1279.869141 1279.622803 1279.151489 1278.919189 1279.524902 1280.199463 1281.08606 1281.334839 1280.858032 1279.633301 1278.900146 1279.160522 1278.771118 1278.455933 1277.561401 1276.885742 1277.689819 1278.576538 1278.693726 1277.680664 1275.917236 1273.737427 1270.944946 1268.265137 1265.984985 1265.476929 1264.335815 1262.904419 1261.480469 1260.487793 1259.187012 1258.269287 1256.61792 1255.359985 1255.835205 1256.16626 1255.173096 1253.427246 1250.442261 1247.428955 1246.097046 1245.773804 1244.299194 1244.086548 1246.906006 1248.193481 1248.671997 1248.763672 1248.366821 1247.799561 1247.187256 1246.533325 1246.045166 1245.684692 1244.896729 1242.914795 1240.606689 1237.109863 1232.491455 1233.054688 1233.483276 1233.838989 1234.10791 1234.18396 1234.247559 1235.085327 1235.848145 1236.339355 1236.461304 1236.499512 1236.30542 1235.809204 1235.176514 1234.609985 1234.128662 1234.085327 1233.71228 1233.533813 1233.515015 1233.473145 1233.39624 1233.210571 1232.93811 1232.768433 1232.285767 1231.325073 1229.678711 1227.884155 1226.266479 1224.79895 1223.42395 1222.212036 1221.179932 1219.606079 1216.822144 1214.09082 1211.259033 1209.37085 1206.8479 1207.150269 1207.081055 1206.989258 1207.007446 1206.924194 1206.741089 1206.658569 1206.286743 1205.787842 1204.985107 1203.905518 1202.673584 1201.355713 1200.295532 1199.073853 1198.24646 1198.088745 1198.054443 1198.15979 1198.320312 1198.015625 1196.973511 1195.2771 1194.92688 1194.683228 1194.364136 1194.174072 1194.109497 1193.856812 1193.395874 1192.742676 1192.151489 1191.809692 1191.195557 1190.830322 1190.302856 1189.831055 1189.294067 1188.742676 1188.402466 1188.021484 1187.529297 1186.823608 1186.184326 1185.429321 1185.0896 1186.994507 1190.324097 1193.924438 1195.68335 1195.303467 1194.54248 1194.540405 1194.720825 1194.925171 1195.680664 1196.860962 1197.800903 1198.910156 1199.683105 1200.282959 1200.588135 1200.730835 1200.891357 1200.855713 1200.359497 1199.448853 1198.155029 1196.464478 1194.800415 1193.372925 1192.158081 1191.088135 1190.069824 1189.218262 1188.434692 1187.793091 1188.112061 1188.841064 1190.375732 1191.921997 1193.424194 1194.644531 1195.157837 1195.085449 1194.939941 1194.857178 1194.652222 1194.42688 1194.153198 1193.835815 1193.762451 1193.60083 1193.540283 1193.800049 1194.479736 1194.965942 1195.40625 1195.752197 1196.056641 1196.271362 1196.436523 1196.464355 1196.290649 1196.154907 1195.998169 1195.922485 1195.717651 1195.551758 1195.484619 1195.111816 1194.234497 1193.271484 1192.271973 1191.209839 1190.099121 1189.088257 1188.107056 1187.239624 1186.549805 1185.796753 1184.849365 1184.178345 1183.479492 1182.889648 1182.272827 1181.604614 1181.313843 1181.177002 1181.427856 1181.974487 1182.803833 1183.188354 1183.484985 1183.3302 1182.632568 1181.823608 1180.834106 1179.771851 1178.661377 1177.610107 1176.643921 1175.780396 1175.656982 1175.555786 1175.793823 1176.304932 1177.212036 1178.439087 1180.007812 1181.773071 1183.179199 1184.226807 1185.067993 1186.308105 1187.976318 1189.742554 1191.338013 1192.637207 1193.644653 1194.640869 1195.440674 1196.025024 1196.314087 1196.53833 1196.068604 1195.308716 1194.869873 1194.976318 1198.696289 1203.09314 1206.072998 1207.591797 1207.557007 1207.565796 1207.632568 1207.676392 1206.633545 1203.498169 1201.656128 1200.890747 1200.810059 1201.335815 1202.646729 1204.330688 1205.767578 1206.096802 1205.995361 1205.641479 1206.164062 1208.158936 1210.164307 1212.33252 1214.988892 1217.988892 1221.711182 1226.687134 1229.885254 1231.903442 1232.328857 1226.354614 1225.578125 1227.025391 1228.50354 1231.108276 1234.138672 1236.355713 1240.778809 1246.762451 1252.486328 1257.87561 1260.919312 1265.929321 1274.47229 1286.765503 1298.358154 1305.687988 1309.061035 1308.351929 1307.594727 1308.235596 1308.857544 1309.922485 1309.891235 1309.708862 1309.413452 1308.724854 1307.849243 1306.023438 1295.447632 1285.880859 1278.225586 1284.384888 1292.849487 1294.42395 1292.62854 1287.623413 1280.611572 1277.886108 1281.874146 1282.496338 1278.539062 1267.787842 1254.719849 1237.377808 1230.335205 1250.396973 1266.8573 1277.650879 1283.373047 1286.333496 1288.810913 1290.313721 1289.559204 1288.623047 1286.430908 1282.103149 1283.467896 1295.100098 1295.441406 1292.810059 1278.747925 1266.202515 1256.490112 1252.639038 1247.902954 1243.615112 1239.886841 1234.694458 1230.338257 1227.022461 1224.05188 1220.658813 1217.309814 1215.314209 1210.718872 1210.846924 1208.709717 1206.608887 1207.5177 1206.698364 1210.396973 1218.515991 1221.54541 1219.870239 1214.303955 1207.670654 1209.226196 1212.213745 1210.468628 1203.48645 1197.978882 1198.123413 1193.50647 1184.901855 1175.660034 1167.050781 1160.616455 1154.876343 1150.478027 1146.848999 1142.549683 1139.011841 1136.660645 1134.107544 1130.244507 +1216.993896 1219.446533 1187.695068 1178.409302 1173.917847 1169.821411 1169.428833 1171.343018 1172.009644 1172.898315 1175.50647 1179.380737 1183.724976 1184.400024 1188.61792 1201.057739 1208.793823 1210.165161 1204.099365 1203.125732 1215.042603 1219.990601 1228.411377 1226.912842 1220.902222 1230.356812 1243.16272 1254.240234 1261.125977 1254.965454 1272.519653 1289.289795 1303.891602 1311.326538 1333.198364 1352.203491 1359.553223 1364.0979 1362.556396 1355.213623 1347.353882 1338.552734 1328.716187 1321.786499 1315.845093 1308.992676 1305.856567 1303.766602 1296.686401 1288.421631 1278.807739 1280.148071 1293.054688 1298.189087 1302.480713 1315.7771 1320.445312 1320.757568 1320.257812 1320.569824 1320.296387 1315.207275 1309.317383 1306.011475 1303.503784 1295.140381 1290.894897 1283.403564 1279.469482 1278.436279 1277.276001 1280.59082 1295.46875 1302.677124 1314.09729 1318.0896 1313.799805 1310.897461 1308.104614 1306.401489 1305.380249 1302.97998 1302.535278 1303.689697 1297.652588 1286.818726 1274.940308 1267.600708 1276.936157 1288.124146 1294.314453 1292.710938 1294.866943 1286.417236 1275.920288 1267.584229 1262.538452 1263.716797 1265.888916 1267.527222 1273.120239 1269.654053 1264.92749 1260.366699 1259.787476 1267.723877 1267.499268 1269.85022 1275.363037 1274.001221 1271.53479 1268.608887 1269.533813 1272.30249 1274.255493 1275.615967 1275.785278 1275.235474 1274.242432 1272.996094 1272.737427 1272.62793 1272.300415 1271.501587 1270.015381 1268.799561 1270.472168 1280.547607 1285.029907 1290.642212 1296.050049 1299.392334 1303.655151 1306.859741 1307.592529 1310.289307 1313.159424 1314.522461 1314.390015 1312.34082 1308.571289 1303.897705 1298.69458 1292.379272 1290.714233 1286.41687 1282.383911 1280.126465 1285.967651 1289.957275 1290.562256 1293.245483 1294.901611 1298.245972 1298.744507 1294.484741 1287.22644 1280.076538 1274.943604 1268.393188 1264.354614 1257.039429 1252.340576 1245.679932 1245.786499 1248.181152 1250.954712 1254.292725 1257.913818 1258.965454 1259.071533 1262.663696 1266.704102 1271.587769 1279.494873 1295.46167 1305.151855 1306.807007 1306.006592 1303.927246 1303.273438 1303.457764 1301.087158 1299.02124 1297.116333 1295.671265 1293.180298 1289.813965 1286.763916 1285.028687 1285.065918 1283.234009 1280.788086 1281.622559 1283.048584 1282.942871 1279.416382 1269.646729 1265.416504 1261.584839 1257.917969 1255.646362 1258.439697 1262.918945 1266.655884 1275.14563 1281.771484 1282.803223 1282.959473 1282.700928 1283.398926 1284.364502 1285.033936 1285.141846 1284.441162 1283.439819 1283.194458 1283.32251 1283.159546 1282.818481 1280.889893 1279.740479 1281.600708 1283.270874 1283.140259 1281.716675 1279.205933 1277.011475 1275.150391 1272.50354 1269.887939 1270.470581 1269.765747 1267.748413 1265.299927 1262.742432 1259.447998 1257.020508 1256.118042 1256.38501 1258.28418 1258.661743 1257.96875 1256.257935 1253.457031 1251.136353 1249.483643 1248.11499 1246.257202 1246.521729 1248.721436 1249.861938 1250.234741 1250.154541 1249.575928 1248.726685 1247.688843 1246.83667 1245.93396 1244.99939 1243.793579 1241.085938 1238.313843 1235.438965 1232.80127 1234.387939 1235.454712 1235.629639 1235.773071 1235.760376 1235.953125 1236.414795 1236.94458 1237.384888 1237.602295 1237.69165 1237.539185 1237.158325 1236.680786 1236.252441 1235.933105 1235.608276 1235.265747 1234.967773 1234.621216 1234.248169 1233.915405 1233.543579 1233.136475 1232.661743 1232.28064 1231.475586 1229.805908 1228.005249 1226.206543 1224.678467 1223.252197 1222.150391 1221.085327 1219.514404 1216.507324 1213.421631 1210.200562 1207.859009 1206.842285 1207.079346 1207.137817 1206.971558 1207.305298 1207.416382 1207.310791 1207.406128 1207.418457 1206.403687 1205.81189 1205.675293 1205.051147 1203.644897 1203.005249 1201.842529 1200.818481 1200.218994 1200.074219 1199.997803 1199.812988 1199.123291 1197.525879 1196.13623 1195.129395 1195.145386 1195.123535 1194.802856 1194.660645 1194.673462 1193.986328 1193.571045 1193.317505 1193.329102 1193.396606 1193.253174 1192.675781 1191.874634 1191.18689 1190.441528 1189.874878 1189.132446 1188.44751 1187.811157 1187.248779 1186.980347 1187.564819 1188.982544 1191.580322 1194.431763 1195.814331 1195.678955 1195.504517 1195.9104 1195.407715 1194.990845 1195.202515 1196.243652 1198.167969 1199.62854 1200.648804 1201.292725 1201.674194 1201.858765 1201.863525 1201.576782 1201.015625 1199.998901 1198.550537 1196.742554 1195.047974 1193.936523 1192.724609 1191.764526 1190.980347 1190.266602 1189.585083 1189.04187 1188.762207 1189.109619 1191.772339 1193.407593 1194.16272 1195.328003 1195.945923 1196.025879 1195.835327 1195.685791 1195.575317 1195.303955 1195.059814 1194.881592 1194.738403 1194.62085 1194.411743 1194.328735 1194.672974 1195.455566 1196.158691 1196.433105 1196.833496 1197.000122 1197.092285 1197.05127 1196.898315 1196.803589 1196.657227 1196.507446 1196.33728 1196.198853 1196.068604 1195.764771 1195.286743 1194.266113 1193.173706 1192.045288 1190.887207 1189.870728 1188.775024 1187.890503 1187.102417 1186.196533 1185.497925 1184.775757 1184.057861 1183.338501 1182.510132 1181.907715 1181.552979 1181.394165 1181.647583 1182.105591 1183.159302 1183.544922 1184.052002 1184.558105 1184.271484 1183.164307 1182.290283 1181.16333 1180.418091 1179.224243 1178.325928 1177.19104 1177.049683 1176.650269 1176.457153 1176.669556 1177.31604 1178.40271 1179.800049 1181.637085 1183.221558 1184.357666 1185.145508 1186.105835 1187.325439 1188.662109 1190.091064 1191.320557 1192.492432 1193.261475 1194.041992 1194.353149 1194.469116 1194.595215 1194.386597 1194.252563 1194.461182 1195.228271 1198.476074 1201.312378 1204.074829 1206.298706 1207.521362 1207.555542 1207.564575 1207.140137 1204.41333 1201.581909 1200.067017 1199.498291 1199.480591 1199.574585 1199.795288 1200.839844 1202.085815 1202.832642 1203.376709 1204.117188 1205.209595 1206.604248 1208.325073 1209.932495 1211.425659 1213.975586 1216.883789 1219.436035 1222.058105 1223.803223 1223.887695 1222.58252 1221.697754 1223.684692 1226.64209 1229.101685 1230.864136 1231.914185 1238.219116 1243.432739 1247.290527 1251.201172 1254.090332 1263.599731 1275.69812 1283.791504 1290.055176 1294.450562 1299.395142 1301.185791 1300.369385 1299.992554 1302.553101 1308.796143 1309.967896 1310.144531 1309.918701 1309.268066 1308.505615 1306.378662 1297.628174 1285.794312 1281.533081 1295.679077 1301.932251 1301.810181 1298.27124 1294.111572 1282.931641 1279.73584 1281.916748 1283.307617 1281.65686 1269.925171 1256.345093 1242.422729 1231.721436 1247.495605 1264.854126 1275.43396 1283.828857 1289.700195 1293.386108 1294.015747 1292.530029 1292.134644 1290.270874 1289.893311 1292.730835 1295.981567 1296.189209 1291.044312 1276.988403 1270.396362 1265.13208 1260.016479 1256.984497 1250.555054 1244.664795 1239.614746 1235.74292 1232.322632 1228.741455 1225.731689 1223.40332 1222.355347 1219.106689 1217.766846 1215.348267 1213.342529 1213.536987 1214.81604 1216.990356 1222.741089 1225.417358 1224.440063 1220.549194 1217.098511 1218.130371 1214.097168 1209.106812 1196.283936 1187.769287 1186.760742 1181.880493 1175.643188 1168.941162 1161.946655 1155.701904 1149.268921 1144.935547 1140.808838 1135.562012 1133.393677 1132.871948 1132.060425 1131.057007 +1202.528198 1201.904907 1180.268677 1174.894531 1169.803101 1171.248657 1172.613159 1174.368408 1176.618042 1180.131836 1185.115845 1191.795898 1197.497681 1200.597168 1200.878418 1214.974976 1221.895142 1220.347168 1219.458496 1210.794434 1223.656982 1235.851685 1243.090088 1241.278809 1230.996826 1233.290283 1250.506104 1267.305908 1277.522583 1277.69751 1274.717896 1298.315552 1316.295654 1327.935425 1340.666504 1353.845947 1363.158569 1365.083008 1359.556274 1349.544067 1339.796631 1330.805054 1325.681885 1318.613403 1313.743896 1306.741211 1303.161255 1299.554443 1292.775269 1288.739258 1279.161499 1284.819214 1299.302734 1306.706909 1311.648193 1316.255493 1322.298828 1323.897705 1322.673706 1320.450317 1317.859497 1311.242676 1304.374146 1302.796387 1296.907227 1293.177856 1293.310547 1289.737671 1283.81543 1280.783569 1278.619019 1279.241211 1293.250366 1300.157349 1307.927734 1318.105347 1317.919434 1314.915283 1310.61792 1308.415161 1307.423584 1306.148804 1306.049438 1306.016846 1297.246338 1286.020996 1274.832764 1268.484741 1278.284424 1288.670654 1295.552856 1295.56543 1294.380127 1285.051025 1275.330688 1267.401733 1265.556885 1266.164673 1268.549683 1276.201416 1281.118408 1270.008423 1263.952393 1259.94812 1274.40979 1279.734253 1281.913818 1281.176514 1278.552124 1276.428711 1273.091309 1269.412109 1269.522583 1274.251221 1276.730347 1278.78894 1278.843262 1278.021606 1277.112183 1276.609375 1276.442749 1276.233521 1275.858276 1275.070435 1274.14978 1273.440918 1274.631592 1277.587891 1278.823975 1282.678955 1287.71814 1290.514648 1292.815308 1300.829834 1305.555176 1309.496704 1315.261475 1317.374634 1316.915894 1314.19458 1308.734253 1304.873535 1299.755127 1295.73291 1290.465454 1283.803833 1279.858887 1280.07373 1282.587036 1286.12915 1287.699219 1289.153931 1290.376587 1293.516968 1295.056396 1291.525269 1283.310181 1278.371826 1274.02356 1270.045898 1262.038818 1253.279541 1247.045654 1247.060181 1248.963013 1252.569214 1255.617065 1257.438843 1261.040894 1262.637451 1263.152588 1264.744629 1267.723511 1272.307495 1279.838135 1292.547974 1301.53772 1306.963379 1306.997437 1306.384277 1306.44458 1306.638062 1306.482422 1304.94397 1301.316406 1298.08252 1294.432495 1291.711792 1290.221436 1289.060913 1288.319214 1284.599121 1280.944092 1282.144653 1284.787964 1283.840088 1279.406616 1269.547363 1265.954102 1263.135864 1259.986694 1257.400513 1256.602417 1259.652344 1263.71167 1268.885132 1279.34668 1283.362061 1290.037354 1291.510986 1291.158447 1290.466797 1289.814819 1288.935303 1287.899048 1287.742798 1288.2229 1288.913818 1289.108032 1288.59021 1286.747559 1285.85791 1286.955811 1287.999634 1287.283569 1285.308105 1282.6427 1279.959961 1280.420288 1278.405884 1275.579102 1274.092285 1272.511719 1270.254883 1267.588257 1264.328979 1261.211304 1257.377808 1258.362671 1260.489258 1260.872925 1260.882568 1259.946655 1258.315796 1255.787231 1253.901245 1252.420654 1251.312012 1250.228882 1250.082031 1251.102051 1251.738647 1252.062256 1251.737061 1250.557861 1249.226074 1247.735229 1246.237793 1244.694092 1243.518311 1241.559692 1238.994629 1236.30957 1234.089966 1235.418579 1238.893677 1238.459961 1238.112061 1237.671997 1237.477539 1237.572632 1237.838745 1238.33313 1238.618286 1239.039917 1239.18042 1239.077637 1238.873169 1238.359619 1237.85376 1237.543823 1237.0802 1236.574951 1236.039185 1235.46582 1234.891357 1234.337769 1233.678589 1233.198975 1232.611938 1232.046143 1231.009521 1229.415405 1227.610107 1225.87146 1224.124146 1222.699219 1221.476196 1220.047974 1218.082397 1216.47168 1214.207397 1210.864868 1208.657715 1206.858032 1207.126221 1207.149292 1208.311768 1209.439087 1209.361938 1209.099854 1209.011475 1208.962891 1208.14978 1207.115234 1207.489014 1207.117676 1206.383301 1205.932251 1204.745605 1203.214844 1202.298584 1202.088501 1202.00769 1201.825806 1200.870117 1198.782471 1196.6073 1195.268433 1196.087524 1196.349365 1195.357544 1195.237549 1195.612305 1195.150024 1194.453247 1194.712891 1194.6427 1195.051636 1195.595215 1194.550903 1193.355957 1193.00354 1192.138306 1191.098511 1190.126465 1189.479004 1188.899414 1188.393311 1188.298218 1188.859253 1190.161011 1192.354858 1195.228149 1195.91333 1196.317139 1196.702881 1196.811523 1196.813843 1196.151611 1195.58252 1196.136841 1198.789062 1200.518188 1201.712158 1202.48291 1202.739136 1202.829224 1202.823486 1202.52124 1201.765137 1200.660034 1199.127563 1197.240356 1195.636353 1194.468506 1193.356567 1192.379517 1191.58313 1191.076538 1190.724243 1190.269897 1189.76062 1189.77063 1194.140259 1195.095825 1194.967041 1195.57312 1196.369263 1196.706543 1196.654663 1196.522827 1196.402466 1196.15564 1195.838501 1195.743408 1195.632446 1195.55481 1195.434692 1194.961914 1194.928711 1195.548096 1196.459595 1196.932251 1197.386475 1197.666992 1197.787964 1197.746704 1197.578247 1197.416382 1197.229492 1197.139771 1197.000488 1196.803955 1196.596924 1196.295532 1195.757446 1194.969971 1193.804443 1192.635376 1191.564453 1190.499756 1189.44397 1188.416016 1187.537109 1186.706665 1185.990723 1185.188599 1184.340332 1183.459961 1182.611938 1182.242432 1181.810425 1181.703125 1181.773682 1182.177002 1183.096802 1184.240479 1185.252686 1186.017456 1186.166626 1185.087891 1183.649292 1182.869385 1182.255249 1180.821167 1179.722168 1178.553101 1178.304077 1177.680542 1177.186279 1177.261719 1177.71106 1178.504028 1179.754761 1181.296265 1182.856201 1183.931152 1184.925781 1185.821899 1186.818604 1187.889282 1188.980591 1190.216187 1191.230957 1191.942383 1192.784546 1193.193726 1193.529541 1193.537598 1193.626831 1193.759521 1194.279663 1195.302856 1197.527588 1199.234985 1200.870483 1202.740845 1204.455322 1205.415039 1205.082886 1203.101074 1200.198975 1198.424683 1198.211792 1198.446167 1198.103394 1197.598755 1196.71106 1197.166626 1198.276855 1199.735352 1201.114258 1202.316284 1203.335938 1204.57373 1205.890137 1206.871582 1207.949951 1209.515015 1212.165771 1214.150269 1216.28894 1217.593506 1217.655029 1218.36145 1218.526001 1221.583862 1224.784912 1227.151367 1229.420288 1232.538574 1235.783325 1239.682129 1242.39209 1242.687744 1248.314331 1262.875244 1270.63562 1276.542725 1279.032349 1283.877808 1285.832031 1287.296265 1287.290771 1286.697754 1288.601562 1296.681519 1307.927002 1310.152344 1310.242554 1309.84668 1308.42749 1305.465454 1296.602051 1287.074219 1291.787109 1302.796509 1306.842285 1306.310181 1302.683228 1296.858032 1286.277466 1280.066772 1282.289307 1284.889771 1282.514893 1272.852051 1260.432129 1245.032471 1237.883057 1241.683472 1255.244751 1266.485352 1279.98584 1290.660767 1294.759888 1295.399414 1295.297485 1294.90918 1293.470337 1291.500977 1294.439087 1296.678711 1297.654419 1296.169922 1290.025879 1281.953735 1274.064453 1267.956299 1263.230103 1257.30957 1249.79834 1244.26062 1240.915771 1237.208984 1233.999023 1232.141602 1229.419434 1227.365723 1225.498535 1223.822144 1221.501465 1219.036987 1220.025024 1222.04834 1223.776611 1228.051025 1230.910645 1229.269775 1224.874512 1222.536499 1221.121948 1214.093262 1203.953247 1190.115845 1178.954834 1173.258911 1170.189453 1165.733765 1159.806274 1156.133545 1149.288452 1145.047241 1144.706787 1141.227417 1136.262817 1136.198486 1132.644165 1133.005859 1134.055298 +1194.459106 1182.52417 1179.041016 1173.192627 1169.87085 1172.61377 1174.38855 1177.222656 1179.940796 1184.065552 1193.587769 1204.713867 1213.080566 1220.074951 1219.31311 1223.291138 1236.669312 1237.589355 1235.469238 1222.204468 1229.974609 1243.434326 1253.557495 1254.887817 1244.457397 1240.429321 1258.206543 1273.689819 1289.203979 1299.982056 1288.082153 1298.039917 1322.341797 1340.315308 1353.488159 1360.877075 1367.75708 1367.709839 1361.220215 1352.019531 1342.029785 1331.575806 1325.042969 1318.970337 1314.472046 1310.147583 1306.629517 1304.999268 1302.090454 1296.945435 1281.829102 1289.429688 1305.645996 1317.702515 1324.361816 1326.789429 1327.145752 1327.583374 1325.425171 1319.045044 1316.438232 1309.940186 1306.196655 1305.833984 1303.361816 1298.589966 1296.693115 1294.259155 1288.185547 1283.309692 1281.629272 1280.117065 1294.299072 1299.537598 1305.056641 1313.003418 1316.703613 1313.687988 1309.474365 1307.513184 1306.984131 1306.812378 1305.024292 1300.520996 1293.376587 1282.195312 1275.893921 1273.8302 1278.518311 1289.15271 1294.621338 1295.120117 1292.862915 1282.231445 1272.817749 1267.28833 1269.562988 1269.916992 1273.278687 1281.88623 1278.146484 1267.943115 1262.274902 1277.76709 1283.455322 1284.56311 1284.655396 1283.433472 1281.600952 1279.298584 1275.857544 1271.151245 1274.115723 1279.036987 1279.003174 1281.861084 1281.8927 1280.905518 1280.022461 1279.182129 1280.011108 1279.75293 1279.423218 1279.029541 1278.322998 1277.755249 1278.362549 1278.52478 1279.198486 1279.30835 1281.452881 1284.759033 1287.690918 1290.825562 1300.533936 1308.566162 1315.953125 1318.398071 1318.626099 1314.733032 1307.376831 1303.161133 1297.727417 1295.065308 1291.911987 1285.350342 1281.995117 1279.809692 1278.584961 1283.741455 1284.763916 1285.447266 1286.590454 1289.006348 1290.511963 1288.412964 1281.392944 1276.928833 1273.453613 1270.108887 1260.77417 1249.111206 1247.625977 1249.148315 1252.432251 1256.174561 1260.297241 1262.869995 1265.990601 1267.765625 1266.34436 1266.33728 1267.098267 1271.04895 1277.437744 1286.648315 1296.146729 1301.83252 1304.68457 1305.480469 1306.322876 1307.315063 1307.246704 1306.686646 1304.255737 1300.721313 1296.960571 1293.9823 1292.165771 1292.637085 1292.628418 1289.900635 1285.668701 1285.984863 1288.409058 1284.186401 1278.575439 1270.187378 1267.052856 1264.496948 1262.144043 1260.012939 1258.720825 1258.174927 1259.623291 1264.958252 1271.591797 1278.579102 1288.179443 1295.267578 1294.807373 1294.504517 1293.866089 1292.701172 1291.490112 1291.126831 1292.245728 1294.26062 1294.700439 1294.650879 1293.658813 1292.860718 1293.526733 1293.310059 1292.227051 1290.239136 1287.663574 1285.182861 1284.180786 1282.36145 1279.629761 1276.932373 1274.732788 1271.869019 1268.817383 1262.740723 1265.433105 1268.491577 1270.08313 1266.494507 1264.666504 1263.392578 1262.024658 1259.945557 1257.41272 1256.668823 1255.249634 1254.059692 1253.068115 1252.818726 1253.552979 1253.670898 1253.938477 1253.681641 1251.924316 1249.312622 1246.699097 1244.923584 1242.558472 1240.484009 1238.825195 1236.923584 1234.909302 1240.249878 1244.741577 1243.736328 1241.842041 1240.4823 1239.584473 1239.110596 1239.018433 1239.288574 1239.726196 1240.111694 1240.5177 1240.789429 1240.778442 1240.613525 1240.171631 1239.544678 1238.976685 1238.297363 1237.652466 1236.865112 1236.149658 1235.254028 1234.466187 1233.671631 1232.964355 1232.335693 1231.577271 1230.239136 1228.777588 1227.136841 1225.124023 1222.976929 1221.263306 1219.708374 1218.891235 1218.357666 1217.911743 1217.169189 1213.200317 1209.763428 1207.743042 1208.972046 1209.514771 1211.672729 1213.455933 1213.391235 1212.788208 1211.946045 1211.149292 1209.72644 1208.815308 1209.162476 1209.112427 1208.855835 1208.151245 1206.816284 1205.267578 1203.947998 1203.644165 1204.182617 1204.880005 1204.181641 1201.020386 1196.077515 1195.853027 1197.591553 1197.695679 1196.791504 1196.734863 1196.819702 1196.507324 1195.599365 1196.230713 1195.783325 1196.267334 1196.914673 1195.508057 1195.023071 1194.961548 1193.460571 1192.032715 1191.212036 1190.611206 1190.048218 1189.485352 1189.223755 1189.686523 1190.864624 1192.533081 1195.039185 1195.742798 1196.330322 1196.790283 1197.314575 1197.740845 1197.777954 1197.545044 1198.115234 1199.890869 1201.68457 1202.925903 1203.707764 1203.894653 1204.065796 1203.809448 1203.360718 1202.55603 1201.42395 1199.848145 1198.140625 1196.532104 1195.047974 1194.028198 1193.002808 1192.313599 1191.990112 1191.76123 1191.041626 1190.292969 1192.273926 1195.732544 1195.94751 1195.590576 1195.673462 1196.782715 1197.216064 1197.278687 1197.219116 1197.066895 1196.790283 1196.510376 1196.483643 1196.445679 1196.281372 1196.063232 1195.510254 1195.08252 1195.532837 1196.703125 1197.440308 1198.014648 1198.368286 1198.460205 1198.456421 1198.255737 1197.982788 1197.85022 1197.776367 1197.64209 1197.377686 1197.029663 1196.626709 1196.148071 1195.261597 1194.087402 1193.000244 1191.967163 1191.036987 1189.853638 1188.922241 1188.079224 1187.25647 1186.419189 1185.537598 1184.578247 1183.359985 1183.200684 1182.876587 1182.273682 1181.888672 1181.938477 1182.154175 1182.916504 1184.276489 1186.609497 1188.32959 1188.708862 1187.637329 1186.016602 1184.934692 1183.75647 1182.434204 1180.968628 1179.999634 1178.902466 1178.773804 1178.178101 1177.954468 1178.16748 1178.803711 1179.768921 1180.981079 1182.334961 1183.3396 1184.383301 1185.463257 1186.302856 1187.143433 1188.05249 1189.089111 1189.981812 1190.74353 1191.540894 1192.105347 1192.478271 1192.822266 1193.010986 1193.333984 1194.009033 1194.928589 1196.240356 1197.134521 1197.785278 1198.071167 1198.675659 1198.486572 1198.300781 1197.129517 1195.869873 1195.697021 1196.391113 1197.333618 1196.568115 1196.273804 1195.041748 1194.924072 1195.473999 1197.648071 1199.35791 1200.192627 1200.927734 1201.670288 1202.711792 1203.47876 1204.52771 1205.437256 1207.246094 1209.740356 1211.526245 1213.177979 1214.109741 1215.7854 1218.65686 1221.708496 1223.53833 1225.642944 1229.012207 1232.5896 1233.945679 1234.794067 1239.618896 1243.644897 1251.912476 1259.109375 1264.945557 1266.671387 1270.037231 1273.91626 1274.703125 1274.042725 1274.810059 1277.624634 1285.610229 1295.679565 1305.411621 1310.248047 1311.271851 1310.260742 1307.142334 1301.507324 1294.199585 1291.118042 1294.859253 1306.536621 1307.786987 1307.369751 1305.231445 1299.399658 1293.69751 1284.401978 1285.483643 1288.488892 1283.926147 1275.783325 1265.075439 1251.210205 1238.796997 1239.060303 1254.359375 1265.99353 1276.610352 1290.832886 1295.946899 1296.509399 1296.586548 1294.380859 1288.887451 1285.728882 1291.797241 1295.710327 1297.918701 1297.485718 1296.504517 1296.881226 1286.962891 1276.322266 1269.45813 1262.805786 1256.889771 1252.597168 1246.674194 1242.398438 1241.27124 1239.828491 1236.219482 1233.265503 1231.392334 1229.067627 1227.128418 1227.099365 1228.335327 1230.313232 1231.31311 1234.066895 1239.416626 1236.368042 1230.41748 1222.565063 1217.12915 1210.335571 1194.427856 1184.865112 1175.110718 1169.3302 1166.375488 1159.864258 1158.579224 1158.811523 1156.975098 1152.896362 1149.699341 1146.61438 1142.876587 1138.603149 1135.44043 1139.386597 1143.421509 +1198.578857 1184.411011 1179.14624 1174.582031 1170.199707 1172.393555 1175.700806 1180.090698 1183.386963 1192.405396 1203.544678 1216.458008 1228.923218 1235.855713 1233.137573 1229.31897 1245.16748 1251.159302 1251.734863 1243.576538 1246.157471 1258.815552 1266.665283 1266.743042 1263.725708 1257.200439 1260.299683 1277.071289 1301.841675 1314.302979 1312.435547 1306.671631 1320.643433 1340.94104 1354.95813 1363.943115 1369.08667 1369.63501 1364.769897 1353.0 1342.272827 1331.08606 1324.765015 1319.216553 1315.661865 1316.180054 1314.24353 1311.539062 1307.588501 1300.577759 1287.181519 1292.914917 1309.533569 1322.118652 1332.168457 1333.52417 1333.242188 1332.496704 1328.664307 1326.596069 1322.646118 1317.928223 1312.890381 1309.499146 1305.424805 1302.197021 1299.323608 1292.853027 1293.171021 1290.333252 1283.249146 1280.942505 1293.734985 1298.039917 1302.591187 1306.8302 1308.575562 1307.393677 1304.6604 1302.950562 1301.372192 1300.364746 1298.714111 1295.423584 1287.212402 1277.930664 1277.334351 1278.058594 1280.915527 1287.466187 1291.386841 1291.019775 1287.760742 1279.337769 1270.662842 1269.168213 1274.761353 1277.003906 1280.213379 1283.245972 1272.440308 1264.736816 1280.078613 1287.360474 1288.544312 1288.225464 1287.224365 1285.62561 1283.744507 1281.901367 1279.048218 1276.97229 1281.120239 1282.209106 1279.775879 1283.021484 1284.492554 1284.034668 1283.27417 1282.588135 1282.828857 1283.341064 1283.021484 1282.515869 1281.895386 1280.96106 1281.723755 1281.435181 1281.16333 1280.694458 1280.15271 1280.545166 1283.211182 1287.559204 1294.317017 1303.797363 1310.746094 1315.416748 1314.718018 1308.024292 1302.546753 1297.569824 1293.281494 1291.948364 1289.697876 1285.968872 1282.756226 1279.728149 1274.378418 1281.488525 1282.498901 1282.211792 1280.930298 1284.189819 1285.510132 1284.959595 1281.507812 1276.628784 1271.343262 1266.330933 1255.838745 1248.10144 1249.228394 1251.079468 1253.860718 1258.911133 1267.598267 1268.199829 1269.231079 1270.012329 1269.006592 1267.874512 1267.718628 1270.337158 1274.302368 1280.730591 1290.894775 1295.471802 1297.977905 1299.400635 1302.646851 1305.616699 1306.758789 1306.967407 1306.112427 1304.080566 1300.55896 1297.296753 1295.676392 1295.882324 1295.654053 1293.798828 1291.509888 1292.421387 1292.723999 1284.907837 1278.376465 1272.8479 1268.749878 1266.488281 1264.062256 1262.164673 1260.864746 1260.002563 1259.645996 1261.008423 1265.15918 1268.88562 1278.082642 1287.399048 1293.150757 1295.349731 1294.774902 1294.797241 1295.322632 1295.793457 1296.919434 1298.658813 1299.486328 1299.190796 1298.444336 1297.502808 1297.119263 1296.271973 1295.60144 1294.420776 1293.225586 1290.248169 1287.311157 1285.029053 1282.150757 1279.603027 1277.266724 1273.000488 1267.896851 1262.934204 1268.86731 1274.017456 1275.215942 1270.714844 1267.86792 1266.203247 1264.140503 1262.305664 1260.63269 1259.182495 1257.287476 1255.782593 1255.067505 1255.036133 1255.751221 1256.087769 1256.165283 1255.564453 1253.272583 1249.107422 1244.950195 1242.924438 1238.842407 1237.093872 1236.55249 1235.948486 1239.311157 1244.955811 1245.402588 1244.831543 1243.726562 1242.155029 1240.909912 1240.232788 1240.172974 1240.565063 1241.125977 1241.554932 1242.026123 1242.385742 1242.477783 1242.427734 1241.944702 1241.137329 1240.182617 1239.365234 1238.441162 1237.517212 1236.525391 1235.497559 1234.539795 1233.569092 1232.708862 1231.875854 1230.634521 1229.691528 1228.449951 1226.959595 1224.844238 1221.837769 1219.644775 1219.547485 1219.562988 1219.834961 1220.344116 1220.461182 1217.20459 1210.290161 1209.60376 1211.45813 1212.93103 1215.348145 1219.119141 1218.17981 1217.311035 1215.173218 1213.385742 1212.261108 1211.568848 1211.430542 1211.146118 1210.589844 1209.531616 1208.022217 1206.168945 1204.990112 1204.846436 1205.887207 1207.510498 1207.490723 1204.811157 1199.87915 1198.647339 1199.322021 1199.39502 1199.103394 1199.070679 1199.05835 1198.568115 1198.059448 1198.081055 1197.947388 1197.963501 1197.815186 1196.922119 1196.25 1195.617065 1193.753052 1192.933472 1192.201782 1191.791626 1191.14209 1190.421143 1190.10498 1190.32251 1191.137329 1192.328857 1194.166626 1195.373657 1195.874146 1196.866821 1197.550293 1198.233276 1198.666504 1199.214478 1200.155151 1201.498779 1203.089966 1204.438477 1205.051147 1205.201904 1205.180542 1204.92688 1204.419556 1203.47168 1202.213745 1200.75769 1199.031738 1197.418457 1195.666748 1194.557739 1193.627563 1193.100952 1193.045654 1192.953613 1191.794067 1190.846802 1194.250977 1196.086548 1196.42334 1196.64209 1196.922119 1197.427368 1197.697876 1197.865356 1197.894165 1197.653809 1197.507324 1197.350464 1197.302124 1197.195068 1196.991211 1196.590332 1196.050781 1195.308228 1195.309082 1196.731323 1197.826172 1198.598877 1199.0 1199.192993 1199.105347 1198.90686 1198.607056 1198.521729 1198.42395 1198.169922 1197.861816 1197.412354 1196.878662 1196.30896 1195.418091 1194.358154 1193.324463 1192.404785 1191.387207 1190.363403 1189.504883 1188.633301 1187.737427 1186.903687 1185.982422 1185.009888 1184.366699 1183.997803 1183.477417 1182.819214 1182.112549 1181.991455 1182.086914 1182.609253 1183.34668 1187.961792 1192.017578 1192.172607 1190.70813 1188.822876 1187.148438 1185.533569 1183.889038 1182.21167 1181.068115 1179.503784 1178.943359 1179.00708 1178.894287 1178.749756 1179.23584 1179.898804 1180.860352 1181.788452 1182.88916 1183.876831 1184.934326 1185.735474 1186.523438 1187.354248 1188.149902 1188.977783 1189.728271 1190.547852 1191.076416 1191.466064 1191.973145 1192.319092 1192.75293 1193.400757 1194.170288 1195.020996 1195.137939 1194.992798 1194.922974 1195.003296 1194.916504 1194.879272 1194.60144 1194.631958 1194.609497 1195.088501 1196.182251 1195.108643 1194.884644 1195.24939 1196.574463 1196.050415 1196.465088 1197.951782 1198.758423 1198.779297 1198.615356 1198.94104 1199.837646 1201.077026 1200.243286 1200.841797 1204.535767 1207.744385 1209.365356 1209.862793 1212.781006 1217.207153 1220.263794 1221.497437 1223.317017 1225.791626 1229.34021 1230.271729 1231.405273 1239.129761 1245.520874 1251.303589 1255.848877 1259.512695 1260.664062 1262.892456 1265.485962 1265.422974 1264.368042 1268.599487 1283.71521 1295.002197 1305.105591 1308.876465 1311.85437 1313.198242 1311.509155 1307.514282 1305.112915 1301.264404 1293.752075 1297.57312 1307.4729 1308.700439 1308.230713 1306.363525 1302.653442 1295.422485 1290.343384 1293.768921 1292.619873 1285.913086 1277.926392 1269.299561 1259.266602 1242.465454 1238.355103 1245.206787 1261.804688 1272.983398 1288.294067 1297.262939 1296.741333 1295.721191 1289.169312 1279.722778 1278.480225 1282.87854 1289.596313 1294.74231 1294.851929 1290.89209 1288.31897 1294.190063 1288.137817 1275.967651 1267.709961 1264.518066 1260.234619 1254.765869 1251.948608 1250.472168 1248.720825 1246.687256 1243.938232 1240.672485 1235.99585 1232.650024 1235.841675 1240.255493 1242.571533 1244.800537 1252.150757 1259.22876 1247.338135 1231.342529 1219.528442 1212.255615 1202.330566 1191.728394 1182.306641 1172.296631 1169.738037 1167.253296 1164.473999 1163.549194 1163.531982 1162.669434 1160.793457 1157.218262 1151.78833 1148.764282 1145.726929 1143.248901 1147.126587 1150.809692 +1207.546387 1188.804077 1181.62561 1177.358643 1172.242188 1171.160522 1175.923462 1182.232178 1194.799561 1204.069092 1219.467041 1232.690674 1244.920044 1249.653198 1247.325317 1244.464478 1252.001953 1261.676025 1267.038818 1267.704224 1268.13562 1275.004639 1281.495117 1282.107178 1279.790649 1273.219238 1267.38562 1284.58728 1308.240479 1320.912109 1326.400879 1322.312134 1327.53479 1336.720825 1351.745361 1364.490112 1370.312988 1370.369263 1360.232788 1344.956787 1338.313477 1333.024536 1329.097412 1323.69751 1323.997314 1327.700806 1323.002441 1317.405029 1311.379761 1303.828003 1294.270996 1291.102661 1311.530884 1323.463623 1331.691772 1335.800415 1339.042847 1340.192383 1339.494873 1334.449707 1330.859253 1322.740967 1316.041504 1313.177124 1307.996338 1306.76709 1302.332642 1302.020142 1300.091309 1294.281738 1283.321533 1281.971924 1291.015991 1295.959839 1300.042969 1302.878418 1303.552002 1303.722168 1301.978394 1297.222656 1294.146851 1293.163086 1291.991821 1288.111938 1281.137207 1279.03479 1278.816406 1280.121704 1283.386719 1287.129395 1288.706543 1287.560181 1283.824219 1277.594116 1270.300537 1274.3125 1282.043823 1284.143188 1284.772583 1280.180542 1267.009521 1278.779541 1292.946167 1294.608032 1293.622559 1291.630859 1289.556641 1287.568726 1285.316528 1283.095825 1280.607422 1279.11731 1281.292114 1283.843872 1281.998291 1284.011108 1286.762817 1287.477661 1287.400635 1287.369995 1287.391724 1286.945435 1286.42981 1285.608643 1284.943115 1284.465576 1284.317993 1283.980225 1283.568115 1283.05249 1282.106079 1280.976685 1280.088867 1284.747681 1290.815063 1297.134033 1302.43396 1305.163574 1305.751099 1301.965942 1296.762085 1292.532227 1290.44043 1289.282227 1287.54895 1285.383667 1282.911987 1278.408081 1268.401001 1275.114868 1278.847534 1278.891235 1277.7052 1279.722656 1280.888062 1282.99646 1282.227783 1276.960083 1269.030151 1260.136963 1248.44812 1249.77063 1251.695557 1253.440063 1254.529053 1259.356445 1268.601318 1269.596313 1270.379028 1271.042236 1270.920532 1269.736572 1268.708008 1268.072876 1271.055908 1276.843872 1282.917114 1288.866089 1291.249268 1292.537354 1296.655518 1300.975586 1304.803101 1307.085815 1306.953247 1305.702026 1303.578369 1301.286377 1299.940186 1299.846558 1298.956787 1297.340698 1296.533569 1296.238037 1294.459839 1286.568237 1278.914673 1274.718018 1270.743652 1268.02124 1265.932983 1264.176025 1263.245239 1262.505981 1261.580688 1260.680176 1261.260254 1266.633667 1273.337646 1279.14624 1284.468384 1288.883179 1292.200073 1293.964355 1298.576294 1303.011475 1302.921509 1303.379272 1304.41394 1304.431152 1303.183228 1301.665283 1300.380493 1298.987915 1297.265259 1295.733276 1294.525879 1292.561035 1289.752075 1287.733032 1285.415405 1283.026123 1280.37793 1275.156372 1268.15918 1264.026611 1268.657715 1279.998779 1281.723389 1279.04541 1272.853027 1268.552246 1266.303711 1265.037476 1263.78186 1262.264404 1260.203613 1258.191772 1257.237427 1257.327515 1257.477173 1257.746826 1257.486084 1257.059937 1253.791626 1248.813843 1244.157349 1240.883789 1238.228149 1239.981201 1240.345215 1240.942017 1244.45166 1245.952881 1245.786865 1245.248901 1244.175903 1242.615112 1241.543701 1241.061768 1241.121948 1241.700439 1242.24707 1242.83252 1243.295776 1243.918823 1244.11499 1244.207275 1243.563232 1242.403442 1241.228027 1240.113281 1238.999268 1237.929443 1236.759766 1235.617554 1234.51123 1233.492188 1232.601929 1231.694458 1230.614502 1229.570312 1228.459351 1227.010864 1225.271851 1223.11853 1221.335815 1221.217041 1221.535278 1221.380737 1221.396484 1221.109741 1219.62854 1209.703369 1211.205688 1213.787964 1215.570923 1218.321533 1220.076904 1220.445435 1219.845581 1217.249878 1215.619263 1214.76709 1214.292725 1214.356201 1213.891235 1212.461182 1210.294678 1208.18042 1206.343384 1205.536255 1205.703491 1207.157471 1208.211548 1208.387085 1207.490601 1204.829956 1202.421021 1201.723877 1201.486694 1201.389282 1201.514893 1201.807617 1201.500366 1201.072144 1200.914185 1200.25293 1199.44397 1198.186035 1196.874268 1195.439087 1194.809082 1194.012817 1193.6073 1193.404541 1193.032104 1192.19519 1191.298218 1190.842163 1190.828003 1191.372803 1192.347656 1193.437744 1194.621948 1195.294067 1196.242676 1197.549194 1198.458252 1199.340454 1200.225708 1201.422363 1203.141968 1204.843262 1206.071045 1206.50708 1206.463501 1206.150635 1205.991577 1205.53479 1204.469849 1203.170898 1201.736206 1200.055176 1198.309082 1196.599854 1195.120972 1194.298828 1193.943115 1194.12207 1194.98645 1193.718506 1191.734741 1193.945923 1195.769165 1196.786621 1197.279297 1197.53479 1197.88855 1198.215698 1198.419922 1198.43396 1198.341187 1198.268066 1198.121216 1198.037842 1197.890869 1197.570923 1197.318237 1196.669067 1195.827393 1195.269531 1196.685303 1198.210938 1199.045044 1199.566284 1199.769531 1199.733887 1199.460449 1199.249512 1199.166504 1198.919678 1198.684204 1198.282959 1197.77002 1197.143921 1196.441772 1195.36731 1194.350464 1193.574341 1192.692261 1191.770874 1190.880249 1189.986572 1189.03186 1188.171143 1187.265503 1186.366455 1185.669434 1185.060059 1184.466309 1183.872192 1183.15625 1182.348877 1182.09729 1182.058472 1182.19873 1182.26416 1188.129761 1195.28186 1195.488403 1193.781128 1191.568604 1189.464478 1187.364258 1185.446045 1183.407959 1181.962769 1181.516357 1180.658081 1179.444214 1178.942017 1179.643799 1179.703857 1180.219727 1180.874878 1181.590698 1182.608765 1183.489136 1184.537598 1185.352295 1186.027222 1186.733032 1187.414673 1188.174316 1188.846191 1189.622681 1190.246948 1190.541626 1191.300781 1191.70166 1192.181396 1192.773315 1193.495117 1194.029785 1194.250732 1194.312988 1194.389404 1194.561401 1194.619629 1194.650146 1194.713989 1194.656128 1194.649048 1194.656006 1194.77002 1194.631592 1194.824097 1197.006226 1198.269165 1198.078491 1196.743164 1196.472656 1197.254395 1197.277954 1199.004761 1199.952393 1200.051147 1199.709106 1200.53894 1200.949585 1200.845581 1202.611572 1205.234009 1206.081909 1209.126953 1213.122681 1216.9021 1219.254028 1220.816284 1222.107056 1225.216064 1229.426392 1233.80249 1239.831909 1245.348999 1248.902466 1252.596313 1254.584839 1254.243408 1256.008545 1258.542847 1257.662842 1254.726929 1270.000977 1287.535522 1297.405884 1305.601685 1310.027222 1315.64856 1316.231201 1313.327759 1310.699463 1307.986572 1306.449219 1301.820435 1303.242798 1307.329468 1309.073975 1309.017822 1307.783936 1305.940186 1296.153931 1292.33252 1296.196777 1294.773682 1288.383789 1280.556641 1272.625977 1263.920044 1250.730225 1239.190186 1238.008789 1253.340332 1267.189941 1279.30188 1292.643188 1295.323486 1292.255981 1283.181641 1276.410522 1269.220703 1274.036133 1279.204956 1282.990845 1283.165771 1280.331299 1278.31958 1289.586914 1297.137573 1283.366699 1275.761597 1271.918335 1267.820557 1266.941406 1265.94043 1263.297119 1259.204346 1256.000488 1252.794922 1249.517944 1244.812988 1246.734741 1255.263306 1256.718262 1250.483887 1249.544556 1255.55249 1260.428345 1251.084351 1232.173584 1220.67981 1210.63623 1199.829468 1190.7229 1184.404419 1177.305542 1172.425659 1168.650269 1169.128418 1169.494873 1169.241455 1167.583374 1164.201904 1160.265137 1158.101807 1155.970337 1151.639893 1149.582275 1154.044556 1156.301758 +1221.315796 1207.524536 1190.62207 1180.420776 1175.11438 1170.680542 1174.997925 1182.661621 1193.541626 1203.650635 1215.386963 1232.805664 1253.042114 1263.656006 1264.545044 1260.068604 1262.93811 1272.671753 1281.360474 1287.492188 1290.141357 1290.080933 1293.961548 1298.426636 1298.745483 1292.50293 1278.743164 1286.938599 1310.995117 1326.773926 1339.610718 1339.014893 1344.485596 1344.420898 1355.142822 1368.757202 1373.66272 1371.373169 1361.670654 1346.785767 1344.953369 1345.161255 1337.039429 1331.887451 1334.514404 1333.638794 1329.823853 1322.661743 1315.174927 1303.918945 1293.999146 1288.711304 1309.49707 1321.432495 1329.323975 1334.97937 1342.022705 1343.35498 1344.282715 1342.509277 1334.607056 1326.985229 1318.942261 1319.111572 1315.309692 1305.949829 1306.149536 1307.405396 1303.579102 1292.848877 1289.368774 1293.265625 1293.897949 1295.986938 1299.236084 1301.028931 1301.666626 1301.355713 1299.380615 1294.780029 1292.47876 1290.699219 1287.837769 1280.684204 1280.439819 1281.115845 1280.100464 1283.084473 1286.066406 1288.667358 1288.978271 1286.47583 1281.649536 1278.784546 1279.699463 1280.434814 1288.552124 1293.740845 1289.327759 1273.562134 1275.177002 1295.355591 1299.332764 1299.451782 1296.950439 1294.03418 1291.639771 1289.388306 1286.092529 1282.440918 1280.27124 1280.227783 1282.520996 1287.368652 1288.651978 1290.330322 1289.558105 1290.593384 1291.445435 1291.921509 1291.92981 1291.126221 1289.995728 1288.670654 1288.022095 1287.601318 1287.286621 1286.757324 1286.047729 1285.452271 1284.567749 1283.495483 1283.035156 1285.62561 1288.867798 1291.065186 1293.507324 1296.213257 1296.543823 1293.994141 1291.546143 1289.109619 1287.498169 1286.180054 1285.119629 1284.259888 1283.081909 1281.510376 1273.896851 1267.931396 1269.894897 1269.485718 1268.539917 1271.668457 1273.343262 1280.454346 1281.626343 1276.121094 1266.556885 1250.236328 1250.616577 1252.291016 1254.616821 1257.442139 1255.473633 1257.81958 1268.974121 1269.510498 1270.401367 1271.382812 1272.004761 1271.568237 1270.075317 1268.339478 1268.003052 1271.980957 1278.511963 1282.852417 1285.706909 1288.236328 1292.385498 1297.044067 1302.037964 1306.383301 1306.631714 1306.476562 1305.21228 1303.172974 1303.429077 1303.538696 1302.654175 1302.572754 1303.111816 1299.822754 1294.423706 1287.912231 1279.896729 1275.715088 1271.926025 1269.363037 1267.305908 1265.974243 1265.84729 1265.912598 1264.537354 1263.029053 1262.085449 1265.075073 1270.622559 1274.54895 1277.435913 1279.799438 1285.259277 1289.579346 1294.094604 1303.969727 1305.023804 1304.694702 1304.326172 1305.010254 1305.457397 1304.066162 1303.711304 1301.189209 1297.802734 1296.184082 1295.13916 1293.685913 1291.567017 1290.626465 1289.55957 1286.738403 1283.342896 1278.127075 1269.919067 1264.031372 1267.345947 1276.553833 1282.808716 1282.575195 1278.630371 1272.337646 1268.026245 1267.305298 1267.100708 1265.974365 1263.583008 1261.650513 1260.391602 1259.579346 1259.262085 1258.915527 1258.145752 1256.831299 1253.060303 1247.710449 1243.477539 1240.139526 1241.906494 1244.390625 1244.598633 1244.897339 1245.987183 1246.455444 1246.117188 1245.542969 1244.154419 1242.798218 1242.018066 1241.899658 1241.918945 1242.733276 1243.479126 1244.068848 1244.665161 1245.191284 1245.0448 1244.973389 1244.390015 1243.21167 1241.909546 1240.667847 1239.343506 1238.109619 1236.802368 1235.58667 1234.438599 1233.457275 1232.52478 1231.487793 1230.365723 1229.509155 1228.693726 1227.450073 1226.013672 1224.529785 1223.310669 1222.476929 1222.102295 1221.87146 1221.590088 1221.154175 1219.470215 1208.862061 1213.30542 1215.51416 1217.125244 1219.490356 1220.505615 1220.478271 1219.63147 1218.015991 1217.290894 1216.786011 1216.817871 1218.121094 1217.713257 1214.966675 1211.171021 1207.580933 1206.984253 1206.794189 1206.466553 1207.42749 1208.548706 1208.715698 1207.967773 1206.272705 1204.276978 1203.679321 1203.487183 1203.460938 1204.046387 1204.772461 1204.875854 1204.537842 1204.142334 1202.981934 1200.988403 1198.555542 1195.856689 1195.126221 1195.090454 1194.988892 1194.637695 1194.564331 1194.552368 1193.356445 1192.163086 1191.55835 1191.290894 1191.646118 1192.337036 1193.112183 1193.931274 1194.661133 1195.717773 1197.329468 1198.440308 1199.490234 1200.700684 1202.278442 1204.529785 1206.723022 1207.844849 1207.906616 1207.572021 1207.384766 1207.206909 1206.572632 1205.469971 1204.13623 1202.687866 1201.094971 1199.369507 1197.63208 1196.112793 1195.058472 1194.709351 1195.428345 1196.125244 1195.907593 1193.714355 1192.578247 1194.399414 1196.615479 1197.33374 1197.809937 1198.331055 1198.727173 1198.942383 1199.078003 1199.06311 1199.159668 1199.015015 1198.783325 1198.698486 1198.412598 1198.101685 1197.524658 1196.817261 1196.629272 1197.552002 1198.744629 1199.590698 1200.091553 1200.322876 1200.317871 1200.123901 1199.873535 1199.667114 1199.378174 1199.043213 1198.625244 1198.107422 1197.37085 1196.457153 1195.504028 1194.841187 1194.029541 1193.162354 1192.2854 1191.315796 1190.305908 1189.415039 1188.409668 1187.614258 1186.795166 1186.141357 1185.457642 1184.769775 1184.049194 1183.230469 1182.505737 1182.206421 1182.04895 1182.032837 1182.021362 1187.860474 1195.800781 1196.738037 1195.921997 1194.153564 1191.911133 1189.476318 1187.121948 1184.877075 1183.06311 1182.486206 1181.638794 1180.925659 1179.513184 1179.436279 1180.325928 1180.556885 1180.944946 1181.543823 1182.159912 1183.026367 1184.041016 1184.870605 1185.609131 1186.255737 1186.814941 1187.467163 1188.046875 1188.724487 1189.311279 1189.891724 1190.690796 1191.081909 1191.625854 1192.180786 1192.708618 1193.224365 1193.473022 1193.840332 1194.125122 1194.378418 1194.945557 1195.501221 1196.023682 1195.725708 1194.84375 1194.646851 1194.632324 1196.288574 1199.093872 1201.391724 1202.671875 1202.227905 1200.22644 1199.04126 1199.162842 1201.181641 1204.202148 1205.385498 1205.363525 1203.730591 1202.791138 1202.627319 1202.387817 1202.004517 1201.778687 1203.390137 1206.324341 1209.278076 1212.465698 1215.379395 1217.302734 1218.541382 1221.709229 1227.976929 1233.671021 1239.601807 1245.384766 1247.400757 1248.616821 1247.952393 1245.466553 1246.766968 1244.893188 1243.179443 1256.292114 1268.460938 1286.333252 1296.416504 1303.867188 1309.01709 1315.153809 1317.891479 1315.493408 1313.299194 1311.137085 1308.844238 1306.147339 1305.711914 1308.460449 1310.101318 1310.15979 1308.839478 1306.799805 1301.946899 1298.806641 1300.037231 1296.654541 1290.843506 1281.94397 1275.064209 1266.714722 1255.987671 1246.3302 1239.129761 1258.022461 1272.514893 1283.019531 1289.937134 1291.739136 1288.01001 1280.323608 1273.755737 1267.712891 1267.033325 1270.949707 1273.094116 1272.992554 1270.250488 1276.035156 1286.748779 1295.061279 1295.752441 1283.439453 1278.612793 1275.473877 1273.222656 1272.71875 1272.296265 1269.834595 1265.971191 1262.378052 1256.754761 1254.743896 1258.567627 1260.565308 1256.70813 1249.447144 1243.761719 1245.840698 1248.650391 1242.400879 1232.539429 1220.583374 1210.061646 1202.04187 1194.745483 1187.698608 1181.40918 1178.460571 1177.058105 1177.046753 1176.324463 1174.856934 1172.085693 1168.042969 1164.823975 1163.201538 1161.598389 1158.579712 1158.111084 1161.17981 1161.31189 +1223.187866 1213.443237 1196.515625 1182.265381 1177.732544 1172.64502 1173.085083 1178.755249 1184.540161 1194.300659 1202.622559 1219.31189 1242.314209 1262.447998 1272.906494 1272.957031 1277.119507 1283.539062 1297.126221 1305.844971 1306.294067 1306.502075 1309.638794 1312.608887 1311.465698 1304.554199 1302.619385 1290.36438 1313.170654 1329.928955 1347.51123 1353.531982 1354.577026 1360.017456 1366.478149 1372.900024 1377.92688 1375.615601 1368.797485 1359.289795 1359.822388 1354.020508 1345.52124 1345.725342 1340.980835 1334.756836 1329.824219 1322.132202 1314.438721 1301.597534 1290.98584 1292.152832 1300.941162 1314.533447 1321.13269 1326.392822 1331.458008 1338.179077 1343.624023 1344.574219 1336.97998 1328.416626 1325.739014 1321.209473 1315.807251 1316.362427 1314.382202 1308.85376 1299.824341 1291.362915 1295.63855 1298.020874 1298.212158 1298.840088 1300.332153 1301.137329 1301.084717 1300.098999 1298.317749 1295.804321 1293.503784 1292.54895 1291.307251 1285.069946 1283.461792 1282.826294 1280.749634 1284.8125 1289.500732 1292.540527 1292.71106 1286.219727 1279.704834 1281.385498 1284.047974 1287.614014 1293.822388 1296.648193 1292.871704 1272.775391 1283.9552 1301.355957 1305.57605 1304.034302 1300.428345 1296.919312 1294.097534 1290.71582 1286.655151 1280.960693 1281.25293 1285.20752 1289.780884 1293.134521 1294.650391 1294.289429 1293.625 1294.297485 1296.391846 1296.931763 1296.677612 1295.531494 1293.476562 1291.525024 1290.662964 1290.575806 1290.439087 1289.771973 1288.671997 1287.849365 1286.905396 1286.150879 1285.808472 1286.764526 1287.810791 1288.563232 1289.393555 1290.625977 1290.868286 1289.458862 1287.660889 1285.224609 1283.628662 1282.472778 1282.165283 1282.707764 1282.623535 1281.949341 1278.793091 1268.689087 1266.776367 1266.773682 1266.775269 1266.389404 1266.445557 1268.699219 1275.143066 1269.896851 1255.096802 1251.07019 1252.306396 1254.570679 1257.751831 1265.362183 1257.412598 1255.062866 1265.151489 1268.689087 1268.909912 1270.968384 1273.006104 1273.371094 1272.162109 1270.889648 1270.020264 1271.289795 1276.341064 1279.337769 1281.244141 1284.239868 1288.286743 1292.287109 1297.531494 1303.204834 1306.018799 1306.446899 1305.799683 1305.616089 1305.887573 1305.686646 1305.622314 1305.79126 1305.559082 1299.525513 1293.809692 1286.387695 1279.961426 1275.944824 1272.610596 1269.76416 1267.731567 1268.016846 1268.862549 1269.210815 1267.950195 1265.263794 1263.775269 1263.568604 1267.991821 1271.249634 1273.668945 1276.381714 1279.93396 1284.062378 1287.819946 1291.564697 1295.593872 1297.631592 1298.202393 1298.37561 1298.560059 1302.750854 1305.159668 1300.676147 1297.112061 1295.447754 1294.623901 1294.239136 1293.739502 1293.540894 1293.471069 1291.683838 1285.87439 1280.939453 1273.04248 1266.695312 1264.920776 1269.870483 1277.971069 1282.94043 1282.87085 1278.15625 1271.962646 1270.944824 1270.811279 1269.279541 1266.897705 1264.967285 1263.294922 1262.02002 1260.907471 1259.923096 1258.566406 1256.373779 1252.048218 1247.095093 1242.58606 1240.541138 1244.82666 1245.387207 1245.781738 1246.564087 1247.135742 1247.07019 1246.597168 1245.605591 1243.895752 1243.152832 1242.954224 1242.574585 1242.918579 1243.771973 1244.590942 1245.370239 1245.82251 1245.872681 1245.585815 1245.286621 1244.536011 1243.37146 1242.359985 1240.888306 1239.475342 1238.001587 1236.635376 1235.349487 1234.107544 1233.11145 1232.094116 1231.160889 1230.441284 1229.717529 1229.064087 1228.018677 1226.706055 1225.359619 1224.047852 1223.071899 1222.380737 1221.912598 1221.506836 1220.534424 1216.821777 1209.997925 1214.818359 1216.560059 1217.809937 1219.524902 1220.668213 1220.650757 1219.533936 1219.712402 1219.672974 1218.907715 1218.270386 1220.038818 1220.069458 1218.0 1213.687866 1209.805054 1208.956543 1208.683228 1207.884155 1207.398193 1208.699341 1208.819214 1208.000122 1206.295166 1205.387451 1205.315552 1205.311279 1205.509399 1206.586304 1207.288818 1207.526733 1207.525879 1207.244751 1206.149536 1203.59436 1200.013184 1195.626465 1196.038696 1196.473511 1196.26709 1195.574951 1195.488892 1195.683105 1194.853271 1192.933105 1192.063965 1191.796997 1191.990479 1192.4646 1193.112915 1193.722656 1194.334229 1195.390259 1196.845947 1198.069214 1199.18335 1200.569946 1202.331177 1204.877686 1207.298584 1208.480957 1208.709839 1208.633911 1208.521362 1208.321655 1207.718872 1206.811523 1205.427368 1203.99707 1202.433105 1200.83606 1199.080444 1197.567749 1196.268799 1195.832153 1196.326904 1197.125488 1197.112671 1196.502808 1195.934326 1194.695312 1194.448975 1196.728149 1197.67395 1198.286987 1198.999023 1199.447144 1199.677246 1199.927246 1199.958008 1199.856323 1199.773804 1199.636353 1199.364624 1199.152344 1198.788086 1198.566772 1198.53186 1198.974976 1199.621948 1200.19104 1200.596558 1200.86377 1200.820557 1200.667114 1200.439575 1200.123047 1199.772583 1199.422852 1198.890015 1198.361206 1197.668457 1196.758545 1196.060181 1195.486206 1194.722534 1193.820557 1192.839111 1191.687256 1190.733154 1189.678833 1188.690796 1187.939575 1187.187134 1186.383667 1185.646606 1184.927979 1184.044189 1183.221436 1182.500122 1182.211914 1182.098511 1182.180054 1182.449219 1188.58252 1195.520996 1197.300293 1196.812622 1195.884521 1194.231812 1191.559326 1188.938599 1186.635376 1184.858887 1183.502075 1182.56604 1181.661743 1181.198975 1180.890625 1180.794678 1180.931885 1181.09436 1181.550293 1182.009521 1182.67334 1183.445312 1184.373047 1185.145386 1185.818604 1186.346924 1186.82373 1187.392822 1187.957886 1188.518555 1189.101074 1190.12085 1190.607422 1191.155762 1191.672852 1192.140381 1192.601807 1192.983643 1193.411987 1193.930054 1194.650635 1195.403442 1196.709473 1197.502197 1197.671997 1196.618286 1196.029663 1197.444336 1200.94104 1204.29126 1206.522583 1207.249512 1207.122681 1205.413696 1203.468872 1204.439453 1207.468872 1209.062378 1209.616821 1209.020264 1207.200439 1205.486938 1205.050171 1205.608643 1204.967407 1203.520996 1202.401123 1204.582764 1206.511963 1208.37207 1211.913696 1214.664673 1217.025391 1220.863403 1225.564941 1230.263062 1235.708374 1244.307129 1245.71814 1244.990112 1241.621948 1239.740723 1241.462891 1242.356689 1248.219604 1258.24707 1269.318726 1282.367432 1293.142578 1299.695435 1305.219849 1310.903564 1315.457397 1315.375244 1315.14978 1313.62439 1312.070557 1311.215698 1310.816162 1311.289673 1312.11499 1311.820923 1310.47168 1307.543823 1305.059814 1305.784424 1304.768677 1299.938965 1292.576904 1283.078735 1277.632324 1270.394653 1264.739624 1256.986328 1242.990356 1255.59082 1273.060425 1284.756592 1291.81189 1290.225342 1285.635742 1280.091675 1273.342407 1267.988159 1263.830444 1261.257202 1259.925171 1261.110962 1263.424927 1274.310059 1283.988647 1292.173218 1293.879272 1288.616089 1282.640625 1277.630859 1273.205078 1272.820068 1272.571167 1272.225952 1271.362183 1268.251221 1262.643555 1260.116455 1260.276733 1257.843872 1246.804443 1240.236206 1234.874634 1234.102783 1236.804199 1235.745361 1231.307861 1225.274658 1219.641479 1209.304077 1199.733643 1192.690674 1185.916382 1186.432739 1186.933105 1186.278442 1184.676636 1181.105591 1174.77356 1169.658691 1169.105591 1168.12207 1165.870361 1163.670288 1164.195435 1165.728027 1165.667603 +1216.438477 1206.917236 1197.012085 1191.236938 1182.085327 1176.525391 1172.595337 1174.423096 1178.403687 1180.667114 1182.781616 1196.951904 1224.411987 1246.663452 1267.740356 1273.420898 1276.12146 1276.613892 1281.580933 1294.026367 1307.447388 1315.254517 1321.459106 1324.289795 1321.75415 1316.345825 1319.212524 1314.723022 1312.733765 1329.776001 1349.078003 1364.485352 1370.864258 1376.507324 1379.404907 1379.590454 1380.063232 1378.458984 1372.481567 1369.910522 1368.948853 1364.95813 1356.606323 1347.582031 1336.682129 1330.098877 1325.206909 1317.05603 1307.005371 1297.105347 1293.49707 1298.827637 1300.681763 1305.059326 1312.956665 1315.017212 1324.132812 1333.789429 1343.092529 1345.477417 1339.526978 1333.728271 1329.892334 1324.480469 1320.495605 1320.471069 1318.21228 1307.307495 1301.890869 1305.370483 1304.448242 1304.448975 1302.839478 1302.769775 1303.640503 1302.58728 1301.349609 1300.040405 1298.306152 1296.392578 1295.126221 1294.436401 1293.351929 1288.785767 1286.134888 1285.653076 1286.260498 1288.481812 1292.02832 1293.560547 1293.28479 1284.751831 1281.450195 1286.437744 1289.2854 1290.228027 1295.962646 1301.244019 1292.351074 1278.128418 1286.844604 1297.702271 1306.886475 1305.929443 1302.652954 1298.677002 1295.548218 1292.370483 1288.550171 1285.377075 1288.005249 1290.878662 1295.562134 1298.932861 1301.178833 1301.44104 1300.894043 1301.322144 1303.328857 1303.690186 1302.472168 1300.212769 1297.925537 1294.813843 1293.664185 1294.174805 1293.721191 1292.501465 1291.058838 1290.184204 1289.691895 1288.823242 1287.91626 1287.916748 1288.063599 1288.243164 1288.284546 1288.308228 1287.718994 1286.156006 1284.057129 1281.723999 1280.182129 1279.71814 1280.203247 1280.9552 1281.893555 1281.826416 1278.413452 1268.425171 1266.745361 1266.65564 1267.802979 1267.599365 1265.756958 1265.28186 1265.987549 1259.034302 1251.533691 1253.098145 1253.607422 1255.044312 1265.283569 1270.569458 1262.703003 1255.457642 1262.252319 1267.53833 1268.849121 1269.134766 1274.968872 1275.529297 1275.155518 1274.708374 1274.55542 1275.004517 1276.405029 1278.324585 1279.274414 1280.046143 1283.300171 1289.604126 1293.380737 1298.576294 1302.596924 1305.435791 1306.295166 1306.164185 1306.111328 1306.096558 1305.364868 1303.703125 1298.461548 1294.269287 1289.290283 1283.486938 1279.041382 1276.591309 1273.514526 1269.200562 1268.920288 1271.817749 1272.206421 1271.140381 1269.382812 1267.108154 1264.957031 1263.948242 1266.327271 1268.16748 1270.109497 1272.404541 1275.858765 1279.235718 1281.683838 1284.656616 1287.986572 1290.475342 1291.760986 1291.849487 1291.649292 1293.454956 1296.049194 1296.524658 1294.715088 1293.301514 1293.431519 1293.372559 1293.630127 1293.586182 1293.640137 1292.773438 1286.183838 1280.787231 1274.983643 1269.762329 1265.940552 1265.872314 1271.794189 1280.617676 1285.72168 1282.937256 1278.496948 1275.737549 1273.968994 1271.746826 1269.109009 1267.010498 1265.284424 1263.706665 1262.313599 1260.891846 1259.119507 1257.343262 1252.863281 1246.821655 1240.891968 1244.500122 1245.55835 1246.261597 1247.123779 1247.687378 1247.921265 1247.655762 1246.887207 1245.279907 1243.889893 1243.762939 1244.330566 1243.565918 1243.997192 1244.908813 1245.931519 1246.391602 1246.505615 1246.34668 1246.055786 1245.53772 1244.792236 1243.804443 1242.416992 1240.886108 1239.348633 1237.802124 1236.287109 1234.955566 1233.575928 1232.289917 1231.463623 1231.02771 1230.709595 1230.251465 1229.848389 1228.906738 1227.560791 1225.815552 1224.256958 1222.944702 1222.111328 1221.44519 1220.884155 1219.982056 1212.891113 1211.611206 1215.305176 1217.074219 1218.476196 1219.960938 1220.463501 1220.909058 1220.706299 1220.432129 1220.39209 1220.110596 1219.653442 1220.143677 1220.894775 1219.201782 1216.130127 1213.355103 1211.405273 1210.464722 1209.491333 1208.525879 1209.285156 1208.873047 1207.401733 1206.541382 1206.90686 1207.30127 1207.045898 1207.227173 1208.166748 1208.484985 1208.489624 1208.454346 1208.235962 1207.839478 1205.80957 1202.658936 1200.400391 1198.69751 1198.044434 1197.567017 1196.83252 1196.274292 1195.486816 1194.581055 1193.379761 1192.705322 1192.293701 1192.370972 1192.736694 1193.264404 1193.927612 1194.346802 1194.865356 1196.069214 1197.417114 1198.476074 1199.709229 1201.23584 1203.937866 1206.703491 1208.518066 1209.028809 1209.173462 1209.201782 1208.980347 1208.568115 1207.727173 1206.514526 1205.180786 1203.804199 1202.321045 1200.836548 1199.483276 1198.467773 1197.955444 1197.990723 1198.134033 1198.204956 1197.831177 1197.284668 1196.382446 1195.171631 1195.52002 1197.085815 1198.232422 1199.207397 1199.901489 1200.41272 1200.795288 1200.927246 1200.815796 1200.852295 1200.775391 1200.535889 1200.446045 1200.147827 1199.994019 1200.086182 1200.288574 1200.661377 1200.890137 1201.129639 1201.278564 1201.248047 1201.079468 1200.769043 1200.413696 1200.084595 1199.618774 1199.094849 1198.488647 1197.878662 1197.195068 1196.610718 1196.028198 1195.342163 1194.347046 1193.265503 1192.093628 1190.912598 1189.932739 1189.057007 1188.149292 1187.27832 1186.432495 1185.599487 1184.810547 1184.020752 1183.08606 1182.436035 1182.174072 1182.289551 1182.672974 1185.03418 1190.581909 1195.948242 1197.28772 1197.101074 1196.565796 1195.56189 1193.010376 1190.602051 1188.326538 1186.4823 1185.056885 1183.757324 1182.592651 1181.996216 1181.74646 1181.293823 1180.952271 1181.333252 1181.584229 1181.954346 1182.470825 1182.997559 1183.876343 1184.68335 1185.368042 1185.852417 1186.250977 1186.701172 1187.297363 1187.862427 1188.479492 1189.710083 1190.352539 1190.842163 1191.284912 1191.802124 1192.212646 1192.723877 1193.238892 1193.804443 1194.656372 1195.697266 1197.359009 1198.769287 1199.520386 1200.07019 1201.065674 1202.966187 1206.123291 1209.603149 1211.52771 1212.174316 1211.680054 1209.564087 1206.74646 1206.356079 1209.426147 1212.037842 1212.710449 1211.870361 1209.769775 1206.861572 1207.594727 1208.555664 1208.272949 1206.595581 1203.227173 1203.580078 1204.356323 1205.681519 1209.673584 1212.926025 1215.810547 1218.96936 1222.884521 1226.902344 1230.319458 1234.987915 1238.657837 1236.999023 1234.006714 1233.431274 1241.552979 1243.317505 1250.925049 1259.98877 1269.533447 1277.235962 1285.49585 1293.10437 1298.343262 1305.118286 1308.720215 1312.802856 1317.175659 1316.412109 1315.728882 1314.99585 1314.616089 1315.004395 1314.522217 1313.888672 1312.871338 1311.104004 1309.753906 1309.604248 1308.020386 1303.72522 1294.542847 1289.378052 1284.404175 1279.034302 1272.085815 1262.962891 1249.738281 1253.200806 1271.214233 1285.636108 1294.611084 1291.496094 1285.510376 1279.584961 1272.724976 1266.750854 1262.176636 1257.78479 1254.504639 1253.500488 1260.272339 1270.525391 1277.660767 1279.445679 1283.040039 1284.226685 1281.104858 1273.321533 1267.39563 1267.998291 1266.040283 1263.012451 1259.926025 1257.605591 1257.866333 1259.078003 1259.560425 1254.23291 1243.807861 1231.369385 1223.276245 1223.829468 1227.346191 1226.322632 1224.93396 1227.496826 1230.726807 1220.373291 1206.517334 1196.094971 1195.297729 1195.711792 1195.213135 1193.859619 1190.833618 1186.067871 1179.890137 1173.773193 1173.86499 1173.035034 1169.836548 1169.024292 1170.28064 1171.297729 1170.521729 +1230.574219 1222.968018 1215.23291 1203.142212 1188.692749 1180.188599 1176.01355 1172.904053 1174.706665 1176.974365 1178.967773 1181.696045 1202.894165 1229.332275 1247.847534 1262.032959 1263.475098 1261.301758 1264.908325 1273.810181 1299.203857 1319.231323 1331.948364 1337.385254 1335.034912 1329.914429 1327.775024 1325.397461 1321.572754 1326.906372 1344.050781 1364.279053 1371.756714 1379.178589 1381.102051 1381.808594 1381.568115 1378.093872 1378.682373 1374.15918 1369.91687 1367.795654 1358.882568 1344.789917 1329.896362 1324.352051 1317.057861 1309.131836 1300.962524 1296.415894 1307.340332 1306.970825 1302.871216 1308.00647 1317.08728 1318.637573 1324.779053 1330.722656 1342.416138 1353.238525 1342.761353 1336.343872 1330.213135 1328.652832 1325.914429 1321.469238 1316.072998 1304.633423 1308.022217 1311.016602 1309.708008 1308.406372 1306.529663 1305.857544 1306.533569 1305.023193 1302.618164 1300.532715 1298.7229 1297.144165 1295.819214 1294.479248 1292.683228 1290.506592 1288.864868 1288.946167 1290.609985 1292.197876 1293.188843 1293.999756 1292.459229 1289.78125 1290.845337 1294.27002 1295.486938 1296.213989 1301.61792 1306.874634 1289.288818 1280.712769 1290.770996 1295.570679 1303.424438 1305.44043 1303.470825 1301.2948 1297.826294 1292.868164 1290.665039 1291.924194 1294.985229 1297.17749 1301.297241 1305.599976 1307.301025 1308.18042 1307.628662 1308.01123 1309.190186 1309.124023 1307.626465 1305.279297 1302.744507 1304.094116 1302.836792 1300.970703 1298.421753 1296.011597 1293.177002 1292.988403 1292.194946 1291.358887 1289.969482 1289.20105 1288.861694 1288.695557 1288.371216 1287.707886 1286.41394 1284.31897 1281.94873 1279.915283 1279.018066 1278.723022 1278.690063 1279.177734 1280.985596 1281.503418 1271.819824 1266.77124 1269.20874 1274.18396 1274.779175 1271.601318 1267.603882 1262.036011 1256.289551 1252.693848 1256.649536 1257.001343 1256.392334 1255.349731 1264.062378 1270.433594 1269.25769 1260.802734 1265.75061 1272.265503 1275.771606 1277.194946 1278.031128 1277.938354 1277.696411 1278.72168 1279.452148 1278.488403 1277.945557 1279.264038 1280.703979 1280.271484 1281.831299 1288.340576 1291.382202 1295.151001 1298.580444 1301.439087 1303.917114 1305.079468 1305.439941 1304.716675 1301.12146 1296.358887 1291.380981 1287.59082 1284.107666 1280.297607 1278.447754 1277.432129 1276.188721 1275.502319 1276.147827 1277.131714 1275.811768 1273.196411 1270.754028 1268.61145 1265.836304 1265.293579 1267.463867 1267.952148 1267.789551 1268.285034 1273.138672 1276.467529 1277.85376 1278.9198 1280.480347 1282.350342 1284.340576 1286.118652 1288.070068 1289.911377 1290.961426 1291.855469 1292.080566 1292.705566 1292.755493 1292.788452 1292.910156 1292.906128 1292.901123 1290.706177 1284.905884 1279.556641 1275.213257 1271.214478 1267.263184 1265.835205 1269.817017 1280.510254 1293.723022 1288.134888 1282.188965 1279.015503 1276.93457 1274.056885 1270.928345 1268.071411 1266.381958 1265.091309 1263.444092 1261.690063 1259.978394 1258.020142 1253.937012 1247.264404 1241.375122 1244.874146 1246.151733 1247.12793 1248.006836 1248.532471 1248.744019 1248.459961 1247.283447 1244.633423 1243.927612 1244.835938 1244.879761 1243.9198 1245.159058 1246.567749 1247.11377 1247.176392 1247.063721 1246.788086 1246.305054 1245.691162 1245.152954 1244.087891 1242.462402 1240.769043 1239.193726 1237.516235 1235.930786 1234.164185 1232.77832 1231.708618 1231.359497 1231.171631 1231.27832 1231.392944 1231.293457 1230.560547 1228.391113 1225.868408 1223.684814 1222.149902 1220.954102 1220.131714 1219.195923 1217.204468 1211.349487 1211.725708 1214.943359 1217.769165 1219.439697 1220.009766 1220.541748 1220.86438 1221.087769 1221.171143 1221.0625 1220.876099 1220.739624 1221.511108 1221.569702 1220.188721 1217.788208 1215.372803 1213.472412 1212.264893 1211.339111 1210.699707 1210.007324 1209.037231 1207.758789 1207.379761 1208.208496 1208.812012 1208.575684 1208.672241 1209.244019 1209.327759 1209.368408 1209.23938 1208.884155 1208.341064 1206.492676 1205.323975 1203.682495 1201.409546 1199.892944 1198.618408 1197.505615 1196.227905 1195.282471 1194.480469 1193.731812 1193.075562 1192.796265 1192.854004 1193.189331 1193.792236 1194.26123 1194.532349 1194.828613 1195.082397 1195.95166 1197.324829 1198.180542 1199.605103 1202.115845 1205.154663 1207.794312 1209.295166 1209.60083 1209.704468 1209.509888 1209.146729 1208.289795 1207.388184 1206.087646 1204.84436 1203.612549 1202.553223 1201.573486 1200.772949 1200.27002 1200.015259 1199.662964 1199.294312 1198.903687 1198.345459 1197.496704 1196.177612 1195.150024 1196.566528 1198.129272 1199.356201 1200.462524 1201.118164 1201.627563 1201.925415 1201.984619 1201.942139 1201.983643 1201.793701 1201.634644 1201.50293 1201.280029 1201.404541 1201.562256 1201.759155 1201.750732 1201.763672 1201.738159 1201.619141 1201.36145 1200.979492 1200.577881 1200.176636 1199.67334 1199.173828 1198.564697 1197.947632 1197.295654 1196.736938 1196.290771 1195.685547 1194.69104 1193.520752 1192.296387 1191.146362 1190.0448 1189.09314 1188.168945 1187.265869 1186.253052 1185.358887 1184.46814 1183.411865 1182.835815 1182.552002 1182.200439 1182.831909 1185.308838 1188.169678 1192.867432 1196.671265 1197.539795 1197.334351 1196.828735 1195.88269 1194.035645 1191.777832 1189.798584 1187.906494 1186.30249 1184.968506 1183.396606 1182.946289 1183.022705 1182.220825 1181.463257 1181.108032 1181.865967 1182.054321 1182.286011 1182.746338 1183.454346 1184.233765 1184.821411 1185.346558 1185.628052 1186.176758 1186.677979 1187.29248 1187.934326 1189.486694 1190.054932 1190.490479 1191.067749 1191.632446 1192.086182 1192.659058 1193.185547 1193.816528 1194.705322 1195.843018 1197.715454 1199.433105 1201.259766 1203.219971 1205.120361 1206.925537 1210.934204 1215.204224 1217.12915 1218.085815 1217.414307 1214.174438 1210.349121 1206.813965 1210.546997 1214.983643 1216.85376 1216.445312 1213.519653 1210.544067 1210.551025 1211.100342 1210.577515 1209.185547 1205.701294 1203.544312 1204.223267 1204.878662 1208.447021 1211.697388 1214.491211 1217.394409 1220.157593 1223.317139 1226.392456 1228.96106 1230.181519 1230.462402 1232.395508 1238.78125 1245.510986 1248.722778 1253.679321 1260.463745 1267.756958 1272.961792 1279.85498 1285.287964 1289.115967 1292.362915 1299.502441 1308.438232 1316.963135 1318.471313 1318.035156 1317.51355 1317.430176 1317.274292 1316.785645 1315.632202 1315.015991 1315.104248 1314.074707 1313.663574 1311.24585 1306.248657 1301.015381 1296.355469 1291.829102 1284.946411 1277.542603 1268.362427 1255.136719 1254.290771 1269.707886 1285.217407 1295.02002 1292.225708 1286.032593 1279.902222 1273.555176 1267.264771 1262.023071 1256.405518 1253.139282 1252.108032 1258.011719 1266.707397 1267.900635 1267.035645 1270.229858 1276.695801 1276.605835 1272.749512 1265.117676 1254.545166 1251.471069 1248.57251 1247.625732 1247.113525 1247.230713 1248.807007 1249.4823 1246.68689 1240.593628 1228.726929 1220.357788 1217.381958 1219.171753 1215.353271 1217.351196 1224.581543 1232.930176 1231.571167 1216.798706 1206.001709 1205.88562 1204.983398 1203.611084 1201.291504 1197.494019 1191.502686 1184.5 1181.862915 1180.758301 1177.731934 1174.115601 1174.56665 1176.573242 1175.736938 1173.503662 +1249.433594 1239.266602 1229.157715 1214.352783 1196.210083 1184.643066 1181.417236 1176.973145 1173.321899 1175.17041 1176.956177 1179.864868 1185.881836 1205.024292 1230.483765 1241.588745 1243.699585 1243.702026 1258.445068 1269.608154 1292.028809 1319.192017 1335.129883 1343.601562 1344.433716 1340.776733 1339.339233 1335.220825 1335.338135 1338.737427 1340.385742 1354.479736 1366.783936 1375.796265 1380.800293 1382.156006 1382.928711 1382.024536 1379.971436 1368.460327 1364.325684 1359.814697 1352.382446 1342.24231 1328.329102 1322.270508 1315.824463 1305.329834 1300.944702 1315.394775 1320.205078 1314.869629 1303.138062 1314.177246 1322.990234 1326.849121 1330.4552 1340.39978 1351.271973 1356.125122 1345.637695 1339.094849 1335.766968 1332.969116 1328.572754 1320.450928 1315.583984 1319.153809 1319.223389 1317.259888 1314.406494 1311.877319 1310.497559 1309.571655 1308.425537 1305.223877 1303.202393 1301.240234 1299.500732 1297.505371 1295.540161 1293.467041 1292.705933 1292.904053 1291.857544 1291.306641 1293.783081 1295.749878 1296.069946 1294.830811 1292.427979 1293.110474 1294.952271 1298.464355 1301.696411 1304.895996 1306.86792 1306.670776 1288.81897 1283.737183 1299.409546 1306.000488 1303.35437 1304.813354 1305.742065 1304.790039 1300.834717 1293.074219 1292.209473 1295.853271 1299.946411 1302.661133 1306.746826 1310.393433 1312.413818 1313.319458 1314.996094 1315.928833 1315.536255 1314.166748 1312.273315 1309.748901 1308.248657 1309.067383 1308.565552 1306.959229 1304.044067 1300.440552 1298.030884 1297.154541 1296.099609 1294.758301 1292.513428 1290.944458 1290.318237 1289.588867 1289.066162 1288.217773 1286.455566 1284.104736 1281.719116 1279.855835 1278.645386 1278.269775 1278.326538 1278.185791 1277.655762 1275.095215 1268.620972 1273.124634 1281.169434 1288.335938 1281.3125 1274.650146 1268.402588 1261.792603 1257.590942 1255.592773 1260.01123 1263.056396 1265.287598 1261.327881 1264.59082 1272.282837 1276.504761 1267.095703 1268.430542 1279.021729 1282.69104 1282.720093 1282.029785 1280.434326 1279.367798 1281.533447 1282.815796 1280.513306 1279.381958 1280.619751 1283.438721 1285.353638 1287.724243 1289.973145 1291.914307 1292.287231 1295.133057 1298.462891 1301.886597 1303.713379 1303.977661 1302.718994 1298.890137 1292.971069 1289.783813 1285.482422 1280.433838 1279.098389 1278.701538 1278.85144 1279.22644 1281.406006 1283.035522 1281.802368 1279.308594 1275.756714 1272.382202 1269.650635 1266.641602 1267.418335 1270.828003 1272.512817 1272.173096 1271.944092 1274.028564 1276.384399 1277.310425 1277.587158 1277.970337 1278.529541 1279.406616 1282.365112 1284.995605 1286.897461 1288.414917 1289.981079 1291.246826 1291.993652 1292.409668 1292.383423 1292.303711 1291.687378 1290.675171 1288.510864 1283.954834 1279.377441 1276.887817 1272.168091 1267.495239 1266.624634 1268.835815 1280.857544 1294.459839 1290.788086 1285.990112 1282.78894 1280.218872 1276.918945 1273.014771 1269.3573 1267.47876 1266.177734 1264.366455 1262.472656 1260.263672 1257.801514 1253.470215 1246.835693 1241.993164 1245.173584 1246.560425 1247.676514 1248.681641 1249.398682 1249.774414 1249.450928 1248.282959 1246.044922 1245.532715 1246.656616 1246.418579 1246.69043 1247.748779 1248.106689 1248.117554 1247.946045 1247.557007 1246.952271 1246.412842 1245.759644 1245.109497 1244.088989 1242.362793 1240.802856 1239.190308 1237.488647 1235.817505 1233.644409 1231.918945 1231.779785 1231.820068 1232.041138 1232.19751 1232.282471 1232.265381 1231.872559 1228.889282 1225.26001 1222.735474 1221.312988 1220.071289 1218.538818 1216.727539 1214.324097 1211.580688 1210.862305 1215.241577 1218.563599 1219.726196 1219.688599 1220.327148 1220.959229 1221.42041 1221.619141 1221.744263 1221.641724 1221.90979 1221.98938 1221.862549 1220.739502 1218.700806 1216.715088 1215.057129 1213.917847 1212.987183 1212.044922 1210.940186 1209.432007 1207.817505 1207.856812 1208.897583 1209.592163 1209.900879 1210.220703 1210.254028 1210.191406 1210.149048 1209.94397 1209.523804 1208.990723 1207.904175 1207.489136 1206.582764 1204.14978 1201.543823 1199.484863 1197.964844 1196.755371 1195.874268 1195.348511 1194.048828 1193.549316 1193.264771 1193.314819 1193.693481 1194.424805 1194.907959 1195.22644 1195.336792 1195.279907 1195.191895 1195.459717 1196.473511 1197.844971 1199.639038 1202.664429 1206.335571 1208.90686 1209.83667 1209.97876 1209.934937 1209.570435 1208.888672 1207.959106 1207.187378 1205.920288 1205.031494 1204.299316 1203.596191 1202.839722 1202.232544 1201.858154 1201.439941 1200.785278 1200.117432 1199.186035 1198.135742 1196.918091 1195.888794 1196.738892 1198.46814 1199.984497 1201.098145 1201.988159 1202.606201 1202.814941 1203.021729 1203.049683 1203.112305 1203.074951 1202.916504 1202.788452 1202.536377 1202.54248 1202.68396 1202.719849 1202.703369 1202.500366 1202.209839 1201.99939 1201.567993 1201.106567 1200.640259 1200.13562 1199.592529 1199.005371 1198.511475 1197.942627 1197.356812 1196.817993 1196.209351 1195.685669 1194.879395 1193.556396 1192.337402 1191.204712 1190.149414 1189.078613 1188.044067 1186.906982 1185.880005 1184.896729 1183.74646 1183.010376 1182.887939 1183.001587 1182.552734 1182.93811 1186.323364 1190.143799 1194.812012 1197.356689 1197.690796 1197.53186 1197.019409 1196.215088 1194.927612 1193.001221 1191.13855 1189.300415 1187.533081 1185.9104 1184.122681 1183.232666 1183.533691 1182.60022 1182.192261 1181.033325 1181.580078 1182.150879 1182.30603 1182.485474 1183.037109 1183.704224 1184.297974 1184.752197 1185.157227 1185.468018 1186.072388 1186.71875 1187.600342 1189.104614 1189.804565 1190.356812 1191.031494 1191.657104 1192.106323 1192.746826 1193.407349 1193.939209 1194.525024 1195.377563 1197.641113 1199.874878 1202.276001 1205.157715 1207.816772 1212.630005 1218.031006 1220.680298 1222.156006 1222.52002 1221.944214 1219.638062 1215.660034 1210.887695 1213.07312 1218.401367 1220.484619 1220.555786 1219.216919 1216.053101 1215.363892 1214.321167 1212.941772 1211.239746 1208.815063 1206.491211 1207.094238 1205.637085 1207.926514 1210.328857 1212.71582 1215.370972 1218.042969 1220.45459 1223.275024 1225.735718 1228.612061 1232.449951 1235.571533 1241.095581 1246.304932 1250.857178 1256.671021 1260.394531 1264.348633 1266.58252 1269.754395 1276.071899 1279.113647 1281.076904 1291.068237 1301.550537 1309.55127 1317.239868 1318.931763 1319.437988 1320.080566 1320.273438 1319.956543 1318.694824 1317.880493 1318.049438 1318.289062 1317.763672 1316.716187 1313.240234 1307.674561 1302.422119 1296.807495 1290.065552 1282.004517 1272.865112 1257.67749 1253.059204 1271.820923 1284.385986 1294.773315 1292.927856 1287.431274 1282.554688 1275.407593 1268.259033 1262.176147 1258.091675 1252.303223 1245.515991 1253.288696 1260.2854 1259.893188 1256.333862 1263.227051 1270.002808 1270.575073 1271.15625 1271.023438 1261.258545 1247.955688 1240.331421 1235.380005 1236.752441 1237.000122 1236.703857 1235.198853 1235.594971 1235.500854 1230.158081 1220.880981 1212.111328 1206.741089 1206.165527 1206.034668 1215.773315 1225.815552 1234.209717 1231.662231 1223.110352 1219.20166 1215.894775 1213.219849 1209.682495 1205.635376 1199.455322 1194.857666 1192.619019 1187.907471 1182.221802 1181.751343 1184.400146 1183.562256 1179.951538 1175.699585 +1258.092041 1244.528442 1229.277588 1220.420166 1209.47229 1201.850586 1195.360596 1183.936279 1177.55127 1173.941284 1175.248535 1177.609985 1180.647461 1188.773071 1207.740845 1219.221069 1217.159668 1223.911255 1238.748657 1257.744019 1274.936279 1302.487915 1331.85791 1340.389404 1343.71875 1344.884888 1344.809692 1341.882812 1342.656128 1348.394897 1350.374756 1357.946289 1366.097168 1374.976685 1379.964722 1382.347534 1382.99646 1382.579834 1376.113037 1360.804688 1354.168091 1351.216675 1343.460815 1332.91687 1325.685303 1320.86438 1313.31665 1302.742188 1312.078491 1324.120972 1328.020874 1318.403076 1306.930908 1320.672241 1330.757812 1334.923462 1336.897095 1347.263672 1357.190674 1356.510864 1352.061279 1343.807251 1341.791382 1336.447876 1328.910034 1318.814209 1317.977295 1322.34436 1323.199219 1321.069824 1318.122437 1315.486328 1313.607544 1314.311157 1315.291138 1306.611206 1304.072632 1302.163818 1300.421631 1297.739136 1294.001587 1292.776489 1294.220581 1294.758301 1293.469116 1292.424072 1296.467163 1299.84375 1299.768433 1295.18457 1295.18396 1302.028442 1303.69397 1303.889526 1305.890137 1310.655273 1314.033691 1312.690918 1291.603027 1291.734863 1305.675903 1312.651001 1309.335205 1309.211914 1310.395752 1309.164795 1305.224487 1293.378662 1296.356323 1303.796265 1306.244873 1308.355103 1312.75415 1315.648804 1317.427734 1318.608643 1319.976929 1321.359131 1321.039307 1319.516602 1317.161987 1314.930176 1313.778931 1314.04248 1313.124512 1311.190796 1308.125366 1304.441895 1302.184937 1303.14209 1302.627808 1299.367065 1295.826294 1293.112183 1292.926758 1291.862671 1290.833496 1289.884399 1287.88269 1285.094971 1282.591553 1280.99707 1278.717407 1278.284668 1278.231079 1278.625 1278.1875 1276.197021 1274.949707 1279.64502 1293.891479 1296.483032 1284.764404 1272.163574 1265.980591 1259.849487 1254.695435 1259.251099 1263.844116 1268.548096 1273.129272 1267.936401 1266.29895 1273.337402 1282.104736 1269.774292 1268.268433 1280.85791 1286.154663 1288.351685 1287.513306 1284.802856 1281.734375 1284.156982 1285.579102 1282.330811 1280.213013 1281.084351 1285.75293 1291.164307 1293.483887 1294.497925 1294.735596 1293.938965 1293.135132 1297.642334 1301.218018 1302.824585 1303.151855 1301.891968 1298.505859 1294.266846 1292.38562 1287.689697 1282.947021 1279.800171 1279.624268 1281.767456 1283.803101 1286.743652 1288.421875 1285.735718 1281.130005 1276.728394 1273.202393 1270.247437 1267.295654 1269.467529 1275.045044 1278.754761 1278.483032 1276.506104 1276.52063 1277.934814 1278.558472 1277.859741 1277.98291 1277.864624 1278.405762 1280.070312 1282.320435 1284.355347 1287.104858 1289.553345 1291.036987 1291.88208 1292.260864 1292.218872 1291.860596 1291.214844 1290.161377 1288.159058 1285.228149 1282.143555 1280.685303 1277.350586 1272.243286 1269.006958 1266.655029 1277.9646 1289.588135 1289.302856 1287.453491 1285.374878 1282.98584 1280.045898 1275.721558 1271.923462 1269.489868 1267.40686 1265.464478 1262.986572 1260.206299 1257.135864 1252.645386 1245.835693 1242.317749 1245.068115 1246.625488 1247.930908 1249.241577 1250.293213 1250.821899 1250.853516 1250.241455 1249.542725 1249.111938 1249.262573 1249.497314 1249.612305 1249.588867 1249.341431 1249.038208 1248.44165 1247.75 1246.917236 1246.231323 1245.507568 1244.763306 1243.662964 1242.330933 1240.619751 1238.947021 1237.326416 1235.764038 1233.963745 1232.799805 1232.616943 1232.708008 1232.654663 1232.64856 1232.632812 1232.629761 1231.78479 1227.797119 1223.767334 1221.380615 1219.78125 1218.130493 1216.072876 1214.230957 1212.344727 1210.581665 1214.885742 1217.275757 1218.707886 1219.371338 1219.630493 1219.88855 1221.004883 1221.645752 1222.02832 1222.216553 1222.340698 1222.556885 1222.4823 1222.070435 1221.269165 1219.454102 1217.72876 1216.398071 1215.286499 1214.459961 1213.463013 1212.414062 1210.913086 1208.390991 1208.576782 1209.775879 1210.467407 1210.939087 1211.222534 1211.232178 1211.164307 1210.929932 1210.582886 1210.244995 1209.721436 1209.239136 1208.693115 1207.897461 1205.726074 1202.278442 1199.601929 1198.095581 1197.221924 1196.51416 1195.387085 1194.450195 1193.932251 1193.704346 1193.779297 1194.10083 1195.025391 1195.41626 1195.932251 1196.195801 1196.285278 1195.980103 1195.636963 1195.661743 1196.497437 1197.552979 1199.456177 1203.983887 1207.641968 1209.578491 1210.157349 1210.171631 1209.930908 1209.453491 1208.544312 1207.899658 1207.122681 1206.577026 1206.151123 1205.409912 1204.576538 1203.916382 1203.621704 1203.248413 1202.542114 1201.655762 1200.453247 1198.975586 1197.398804 1196.857056 1197.708984 1199.299561 1200.895996 1202.187622 1203.148071 1203.771606 1204.103638 1204.233276 1204.271973 1204.369141 1204.345825 1204.185913 1203.914917 1203.720459 1203.551514 1203.664795 1203.685791 1203.631836 1203.328735 1202.92334 1202.449341 1201.969727 1201.394043 1200.77771 1200.113159 1199.541504 1199.015137 1198.433838 1197.775269 1197.24292 1196.612183 1196.191772 1195.621582 1194.81958 1193.424438 1192.270264 1191.15332 1190.055298 1189.000488 1187.711792 1186.568604 1185.364014 1184.178101 1183.135498 1183.144043 1183.227905 1183.736206 1183.189209 1182.771973 1185.366089 1190.692505 1195.60022 1197.493652 1197.699829 1197.608276 1197.28479 1196.701294 1195.721313 1194.563354 1192.936157 1190.91687 1188.804688 1187.01355 1185.451294 1184.611816 1183.935425 1182.756348 1182.617554 1182.509399 1181.065674 1181.621094 1182.399536 1182.375366 1182.664551 1183.16333 1183.701904 1184.172119 1184.509277 1184.690674 1185.339111 1186.318726 1187.272095 1188.845703 1189.515015 1190.281738 1191.006104 1191.71228 1192.384033 1193.038696 1193.731812 1194.401367 1195.270386 1195.705688 1197.127808 1200.3927 1202.997925 1205.852539 1211.35437 1219.809082 1222.782715 1225.427612 1227.454834 1227.165405 1225.506226 1223.26001 1220.613159 1217.8125 1218.975342 1220.487061 1222.160522 1221.899048 1219.529785 1220.087524 1219.633057 1217.922241 1215.799194 1213.478638 1210.928467 1209.570435 1208.92334 1206.806763 1206.677979 1208.978394 1210.791748 1213.260376 1215.664185 1217.899292 1220.565674 1223.489746 1227.623779 1232.195801 1235.686523 1239.906372 1244.174805 1250.210571 1255.382568 1258.440063 1260.678833 1262.725342 1264.989624 1266.845215 1266.533691 1271.898438 1283.303833 1291.675049 1300.625488 1308.953369 1317.577515 1320.169678 1321.921631 1323.974976 1324.736328 1324.015137 1323.312622 1322.647949 1322.52417 1321.695679 1320.689331 1319.076782 1314.832031 1307.766357 1301.140137 1293.911255 1286.164307 1277.157959 1266.829956 1254.806763 1269.526733 1284.096924 1294.651855 1292.535034 1287.640991 1283.206299 1276.408447 1267.661499 1260.706299 1254.799316 1250.427124 1244.091797 1246.981934 1257.6875 1254.645386 1250.971191 1258.799683 1263.813965 1264.168457 1265.019531 1265.903076 1261.621704 1252.813965 1241.745972 1230.467896 1219.243774 1223.319946 1222.650757 1221.116089 1221.438599 1232.69397 1233.61853 1225.337158 1215.323364 1202.744385 1197.214355 1198.701538 1205.775269 1215.763672 1226.390381 1233.946045 1235.864746 1234.500122 1233.383789 1226.313965 1221.255615 1215.694824 1210.513672 1205.39624 1200.565796 1195.54541 1191.153687 1194.126953 1195.216553 1189.162231 1182.935059 1176.334595 +1254.263794 1245.240356 1237.501953 1233.187744 1224.542969 1215.293579 1205.516968 1197.597778 1183.473633 1177.952515 1174.683716 1175.929077 1178.526123 1180.898071 1190.030273 1201.005859 1210.307495 1233.14856 1252.481079 1272.818115 1288.880981 1307.500366 1328.785278 1335.068237 1339.8479 1343.11792 1345.454834 1348.48938 1353.114014 1356.591919 1358.542969 1364.320923 1372.446167 1379.996582 1382.021362 1382.551025 1382.112549 1379.990967 1373.149048 1362.224854 1352.302002 1345.744019 1335.839844 1327.301147 1322.549805 1317.588379 1309.670654 1309.995605 1322.407837 1331.601929 1335.064209 1324.035522 1314.266602 1320.864746 1336.074341 1343.848145 1341.289429 1352.85022 1358.632812 1358.4823 1354.721436 1349.095703 1345.367798 1339.716187 1329.630859 1321.148438 1326.923218 1330.057251 1327.679077 1324.154785 1321.056885 1317.495483 1315.074829 1317.077759 1317.474487 1310.946777 1305.738037 1303.88208 1302.011963 1299.406616 1295.424316 1295.313232 1296.403198 1296.096313 1293.682861 1293.290283 1300.099121 1305.421997 1302.917603 1302.789795 1306.530518 1308.986084 1310.106445 1309.973999 1311.66687 1315.821899 1319.412842 1319.051636 1291.423828 1295.771973 1312.66748 1319.345337 1318.873291 1316.266479 1316.032959 1313.399048 1306.739868 1302.822021 1304.55127 1309.556274 1312.204834 1314.980347 1319.10083 1321.404419 1322.748901 1323.765625 1324.766357 1326.003418 1327.001221 1326.641846 1324.069214 1319.720703 1318.561279 1319.616699 1318.379028 1316.330078 1313.557495 1309.080688 1306.02832 1308.403442 1307.802246 1304.44397 1301.439331 1299.407959 1297.981812 1294.614502 1292.57959 1292.354614 1289.905396 1286.05188 1282.753418 1280.707275 1279.114868 1279.936768 1282.213379 1283.35437 1282.802002 1280.156006 1279.138184 1294.405518 1297.467407 1295.043701 1277.495728 1266.214722 1261.082153 1255.567993 1258.364868 1262.157104 1266.374512 1272.9729 1280.335205 1270.165527 1268.012573 1277.264771 1283.984985 1274.624268 1266.809082 1280.175293 1288.563965 1293.773071 1294.001099 1291.879028 1289.453369 1290.342896 1290.302979 1284.518066 1280.298218 1280.523438 1286.63562 1293.746948 1295.803467 1297.359375 1298.149292 1297.746826 1297.554199 1299.27356 1301.619873 1303.324585 1303.888672 1302.851562 1301.078613 1298.723389 1296.109863 1291.211426 1284.115601 1279.753418 1283.071167 1287.17395 1291.109741 1293.721558 1294.189819 1287.987549 1280.702637 1276.813354 1272.866455 1270.189941 1267.586914 1273.236084 1280.579834 1283.933105 1283.821289 1280.956909 1278.602783 1280.705933 1283.182373 1282.115479 1280.980713 1279.794312 1278.693481 1278.4729 1280.130615 1282.640259 1287.361206 1290.272095 1291.730225 1292.22644 1292.606567 1292.365479 1291.642944 1291.262207 1290.346924 1289.401978 1288.22644 1285.99231 1284.147583 1282.099243 1278.412598 1273.197998 1268.009033 1271.703613 1281.295044 1286.358887 1288.598145 1287.722778 1285.142212 1281.143066 1277.843628 1274.609253 1271.744263 1268.909912 1266.16333 1263.309448 1259.621094 1255.833496 1252.459229 1247.691772 1244.135986 1243.674194 1245.953979 1248.096191 1249.830078 1251.175903 1252.153442 1252.544067 1252.942871 1252.939331 1252.451172 1252.592773 1252.249023 1251.62146 1251.005859 1250.334839 1249.570801 1248.604736 1247.644653 1246.667114 1245.696167 1244.710693 1244.056396 1242.8302 1241.553955 1239.984985 1238.459229 1236.922974 1235.654175 1234.360107 1233.644653 1233.22168 1233.067993 1232.675659 1232.045532 1230.831299 1229.613159 1227.955078 1225.130737 1221.741577 1219.717163 1217.572266 1215.348755 1213.506104 1212.252075 1213.513916 1218.005005 1220.69043 1219.509155 1219.130615 1219.21875 1219.459839 1219.755005 1220.868408 1221.66333 1222.290283 1222.691895 1222.997437 1222.97168 1222.773193 1222.116211 1221.322021 1219.742798 1218.45752 1217.315063 1216.539673 1215.835571 1215.014771 1214.250488 1213.196411 1212.098999 1211.400269 1211.427734 1211.822754 1212.076294 1212.206421 1212.238037 1211.995117 1211.668457 1211.182617 1210.740112 1210.203857 1209.713013 1209.209106 1208.197388 1205.975342 1201.850952 1199.124878 1197.681763 1196.997925 1196.055908 1194.986572 1194.645752 1194.237549 1194.165405 1194.22229 1194.541748 1195.214111 1195.752441 1196.292236 1196.606689 1196.795532 1196.782227 1196.478516 1196.659912 1197.403687 1198.010498 1198.722168 1201.121948 1205.667603 1208.762817 1209.981323 1210.204712 1210.144775 1209.827393 1209.38623 1208.764771 1208.491211 1208.172852 1207.640015 1207.134888 1206.301636 1205.514893 1205.1521 1204.983276 1204.525879 1203.771606 1202.342407 1200.222168 1198.206665 1198.029297 1199.037476 1200.654053 1202.349731 1203.617554 1204.577515 1205.124512 1205.458862 1205.477417 1205.648804 1205.66626 1205.57605 1205.367188 1205.100586 1204.745605 1204.591187 1204.666626 1204.684326 1204.395142 1204.118164 1203.659302 1203.15686 1202.422485 1201.781372 1201.106567 1200.36145 1199.688965 1198.988647 1198.259888 1197.55481 1196.973633 1196.294556 1195.772339 1195.333374 1194.043945 1193.194336 1192.340698 1191.30542 1190.22937 1189.03186 1187.644897 1185.844849 1184.396484 1183.21167 1183.152466 1183.479858 1184.201172 1184.56958 1184.079346 1183.208008 1183.77771 1190.518555 1196.189209 1197.282471 1197.42688 1197.601685 1197.255249 1197.01001 1196.46167 1195.672119 1194.400391 1192.420776 1190.089233 1188.162354 1186.575439 1185.206421 1183.734009 1183.196167 1183.200806 1183.130493 1182.805786 1181.769287 1181.921143 1182.547607 1182.544556 1182.768066 1183.083252 1183.485229 1183.665649 1183.391113 1184.610962 1185.908447 1186.874023 1188.580444 1189.289917 1190.139038 1190.996704 1191.919189 1192.679932 1193.532104 1194.394653 1195.382324 1196.636963 1197.77478 1199.294312 1201.512085 1203.992676 1206.084473 1209.802856 1220.981689 1224.912598 1229.891846 1232.514038 1231.633789 1229.020752 1226.357422 1223.421753 1222.118774 1221.514893 1222.277466 1223.451538 1223.104614 1221.951782 1222.121216 1221.570312 1220.293213 1218.284546 1215.741333 1214.305054 1212.991333 1211.280518 1208.739502 1206.859375 1206.981445 1208.471069 1211.150879 1213.697876 1215.973145 1218.591675 1221.467407 1224.719604 1228.81543 1233.036255 1238.066284 1244.15271 1248.671753 1252.42334 1255.876953 1257.966797 1259.409668 1259.407227 1258.406128 1257.713257 1266.130737 1274.728149 1282.39856 1290.692627 1299.01709 1307.89978 1318.065796 1321.882324 1327.147949 1329.494507 1330.018555 1329.212402 1327.620483 1326.344849 1325.225586 1323.685059 1321.682251 1318.542603 1312.196411 1304.973389 1297.048096 1288.866821 1280.363647 1276.088989 1268.586548 1266.464966 1283.611816 1294.675293 1291.936646 1286.352173 1280.38269 1275.988892 1269.738647 1263.771973 1257.313721 1252.110229 1243.993042 1241.927002 1246.876221 1244.657104 1244.263062 1254.028442 1257.33374 1256.242065 1255.7052 1256.882324 1255.055298 1249.943359 1243.719604 1235.936768 1223.555664 1211.815063 1208.487427 1208.696411 1213.381104 1225.725952 1234.401367 1229.384399 1218.365479 1205.182983 1191.365112 1192.442627 1197.192505 1206.296631 1217.325073 1225.087646 1227.835938 1226.932373 1227.490479 1228.044678 1224.091675 1221.530029 1215.187134 1210.573853 1206.105591 1201.640991 1201.772095 1203.867676 1200.647583 1194.520386 1184.379883 1176.894897 +1272.070923 1260.97937 1249.212036 1240.776978 1235.116455 1224.05127 1213.095825 1204.390259 1193.653076 1181.749878 1176.864014 1174.881226 1177.777588 1182.51001 1196.495972 1209.88916 1217.040161 1231.360718 1253.234497 1274.382935 1289.943115 1303.09375 1315.952759 1329.56665 1333.617065 1336.995361 1341.967285 1347.695557 1355.994507 1363.493286 1368.549316 1367.418457 1375.480347 1381.120972 1382.529053 1382.03125 1378.850708 1374.255981 1368.775146 1361.295044 1353.929688 1345.384644 1335.724609 1326.915649 1321.325562 1314.761353 1308.372314 1321.482544 1333.043579 1344.007568 1341.629883 1329.277588 1320.063599 1319.273804 1339.262695 1352.239258 1352.089233 1354.766724 1362.959961 1362.555908 1355.638794 1350.61792 1346.338013 1340.069824 1332.140747 1328.321045 1330.922729 1332.2229 1330.695068 1327.598511 1324.343506 1318.582031 1315.791626 1314.905396 1314.061401 1310.99231 1307.296875 1305.145142 1303.252319 1301.716797 1301.661011 1301.446533 1301.142212 1297.911011 1293.753296 1293.578125 1305.281372 1306.905029 1304.276855 1303.852539 1307.485962 1313.196655 1315.518555 1315.501343 1315.121948 1318.06189 1321.363525 1319.318115 1289.808716 1300.292236 1319.783447 1323.065674 1323.005127 1321.239502 1320.395142 1317.720703 1309.976807 1303.939453 1308.484253 1315.472778 1318.009888 1320.185059 1324.566772 1327.539062 1328.342041 1328.661499 1329.103516 1331.365479 1334.355103 1335.061279 1332.731079 1328.687866 1327.906738 1328.578003 1326.17981 1322.748047 1319.567017 1315.723877 1314.119873 1314.116699 1312.484741 1309.353882 1307.236572 1306.111816 1305.019897 1300.0271 1296.109131 1294.625244 1291.315552 1286.55481 1282.004395 1280.296509 1282.241577 1286.305542 1291.430908 1293.475342 1290.416748 1287.598389 1293.624756 1306.802368 1295.827026 1281.835693 1268.174683 1262.795532 1257.569092 1256.745239 1260.549561 1264.610229 1269.150757 1278.274292 1282.9198 1273.716309 1269.670044 1280.250488 1286.767212 1281.232178 1267.755859 1278.607056 1291.938843 1295.400391 1296.89917 1295.857666 1294.514038 1294.635498 1294.380371 1291.075684 1280.25 1280.585938 1287.209473 1293.831299 1296.928833 1300.208862 1301.860352 1301.937744 1301.484009 1301.758667 1302.585938 1304.296387 1305.179688 1306.125977 1305.749023 1303.048096 1298.524658 1292.989258 1289.470215 1286.827881 1288.758545 1293.153564 1297.130981 1298.133057 1295.891968 1287.603149 1279.840698 1276.050415 1272.550415 1269.477539 1268.893066 1279.199707 1286.743774 1291.235352 1290.805298 1286.059082 1280.583252 1280.862427 1292.293335 1293.007935 1290.350708 1288.692993 1288.723145 1287.715454 1284.049927 1285.572144 1290.473145 1293.303833 1294.816895 1295.058105 1294.371338 1292.656982 1292.20105 1292.236938 1291.72937 1291.688599 1291.657593 1289.561279 1287.144897 1284.522827 1282.171265 1278.481079 1271.74939 1271.483276 1277.531128 1285.208618 1291.566162 1290.551636 1288.205688 1284.328247 1280.711304 1277.264648 1273.828979 1270.435303 1267.123779 1263.50061 1259.789673 1255.881104 1253.11853 1250.326294 1246.830078 1243.953247 1245.117065 1247.980713 1250.481201 1252.463257 1253.563477 1254.263306 1255.053833 1255.614624 1255.965454 1255.617188 1254.555176 1253.278687 1251.957642 1250.819336 1249.601074 1248.512451 1247.334106 1246.130127 1244.736206 1243.665527 1242.688843 1241.626343 1240.425903 1238.996948 1237.624023 1236.302124 1235.085327 1234.197266 1233.570801 1232.973511 1232.212646 1231.005127 1229.02832 1227.059204 1225.568359 1223.628662 1221.099854 1218.740479 1216.323975 1214.183716 1214.018433 1214.873657 1217.058716 1220.429932 1221.829102 1222.209351 1220.498535 1219.687866 1219.410278 1219.549316 1219.767944 1220.677612 1221.646118 1222.518433 1223.048462 1223.301147 1223.342407 1222.886475 1222.185425 1221.005859 1219.559204 1218.56958 1217.893188 1217.661621 1217.173584 1216.524536 1216.047119 1215.337646 1214.574829 1213.957642 1213.55603 1213.559204 1213.544434 1213.463623 1213.246094 1212.887207 1212.293945 1211.585449 1210.973755 1210.408569 1209.873047 1209.289062 1208.14856 1204.891846 1200.847412 1198.570068 1197.448364 1196.362183 1195.175171 1195.416138 1195.455811 1194.838623 1194.625488 1194.608398 1194.751099 1195.147827 1195.512207 1196.196655 1196.629028 1197.022217 1197.231079 1197.388428 1197.857666 1198.481689 1199.109009 1199.553711 1200.116943 1203.88623 1207.375854 1209.331299 1209.90979 1210.073975 1210.093628 1210.025757 1209.880493 1209.749023 1209.541626 1209.175049 1208.567383 1208.153809 1207.248413 1206.848267 1206.516479 1206.302979 1206.148438 1205.144775 1202.455933 1199.346924 1198.903687 1200.493286 1202.450073 1203.982544 1205.231934 1205.907104 1206.491089 1206.664307 1206.891357 1206.849854 1206.755859 1206.61438 1206.404297 1206.194092 1205.778198 1205.617188 1205.675781 1205.512451 1205.235718 1204.916992 1204.452759 1203.807373 1203.062012 1202.332642 1201.547974 1200.772217 1199.942383 1199.220337 1198.369141 1197.552612 1196.439697 1195.390991 1195.236572 1194.512573 1194.024414 1193.347778 1192.564941 1191.694702 1190.599487 1189.449707 1187.849487 1185.842529 1183.129028 1183.247192 1184.0896 1184.818359 1185.30957 1185.447266 1185.206909 1184.477173 1184.610474 1190.336182 1195.393555 1196.702637 1197.122314 1197.209961 1197.184326 1196.984009 1196.677856 1196.125732 1195.552002 1193.689331 1191.416016 1189.18103 1187.025513 1185.490601 1183.977783 1183.398315 1183.511475 1183.310913 1183.089355 1182.866699 1181.986694 1182.284668 1182.650146 1182.829102 1182.950562 1182.979858 1183.017944 1183.052124 1184.110229 1185.605591 1186.588623 1188.177612 1189.094971 1190.113892 1190.996826 1191.952148 1192.931274 1193.769165 1194.720459 1195.800537 1197.393921 1199.059448 1200.7948 1202.872437 1205.232788 1206.914307 1207.700806 1217.328247 1223.623535 1231.603271 1233.962036 1233.659058 1231.580566 1228.822754 1227.101318 1225.990234 1225.39978 1225.334961 1225.258179 1225.035034 1224.565918 1223.957397 1222.786621 1221.161377 1218.996582 1218.289795 1217.326782 1215.706299 1214.713013 1213.304443 1210.978516 1207.78772 1207.306152 1209.745361 1211.700806 1213.583862 1215.678467 1218.183594 1220.503662 1224.25293 1229.284546 1234.346558 1242.955566 1246.209839 1248.467407 1251.599609 1253.547485 1254.369141 1252.507324 1249.70105 1251.983765 1257.061279 1264.03418 1269.205078 1278.833984 1289.802979 1303.267822 1314.63916 1321.585815 1329.346558 1332.944702 1335.105591 1335.188965 1333.104858 1330.161133 1328.106812 1326.696899 1324.287476 1320.434082 1315.186768 1307.095825 1300.572388 1294.116943 1289.186035 1285.059448 1277.978882 1266.159424 1280.836182 1289.060791 1289.521851 1285.638794 1280.796875 1277.863037 1273.140137 1267.395874 1261.143677 1254.115723 1245.215698 1242.160889 1240.609619 1237.000488 1238.968262 1246.611816 1248.620239 1248.606323 1247.282593 1248.080688 1248.012695 1245.438721 1241.567993 1236.869385 1232.134521 1221.814697 1209.095703 1204.350952 1207.268311 1216.386719 1224.631348 1223.797119 1216.959717 1206.507935 1190.937744 1188.883179 1192.428223 1199.637207 1208.064453 1214.479614 1216.040039 1214.130615 1214.572266 1216.115845 1215.779297 1212.682617 1211.189575 1212.203003 1209.98877 1211.845703 1213.337646 1212.181885 1206.219238 1195.818359 1183.838501 1181.544434 +1267.528809 1257.827271 1246.587402 1236.355225 1232.534424 1226.393188 1218.761108 1211.592896 1204.802368 1183.559326 1178.530762 1175.901855 1177.209229 1185.047729 1201.207031 1226.878052 1249.679443 1242.92749 1245.313599 1266.21521 1279.995117 1293.876709 1303.85022 1312.62561 1320.89978 1327.30603 1332.136719 1339.191284 1351.315186 1362.514771 1371.259155 1379.021851 1380.458984 1383.024902 1383.075073 1380.654419 1375.028931 1367.453491 1362.108643 1356.292847 1351.001221 1344.005859 1333.766113 1326.514893 1321.705811 1316.16626 1314.057983 1326.504028 1338.769409 1348.491211 1346.714233 1336.114868 1329.768433 1327.419678 1338.74939 1354.860352 1361.312988 1361.11377 1368.01416 1366.511963 1358.720093 1353.11499 1348.152954 1341.56897 1333.291138 1329.038452 1333.259888 1334.399414 1333.547729 1331.436523 1329.302368 1323.616577 1318.283813 1315.989746 1314.094116 1312.302979 1309.394409 1306.644775 1303.764526 1303.524414 1304.846313 1306.209229 1305.621338 1301.703491 1295.408325 1296.144287 1306.947632 1308.256958 1305.588745 1304.565918 1309.559082 1317.044189 1319.957764 1320.380981 1320.181641 1323.901367 1324.993652 1315.030151 1293.233154 1312.41626 1324.697632 1327.657471 1327.724976 1325.7229 1323.319824 1320.458862 1314.148682 1304.804077 1313.539307 1320.102295 1323.60498 1326.940796 1330.625122 1333.935425 1335.026245 1335.55188 1336.729614 1340.023315 1344.522339 1345.461426 1343.086304 1338.901367 1336.195923 1334.478516 1332.555054 1330.245728 1326.617676 1321.518188 1320.352173 1320.2146 1317.422363 1314.95874 1312.348511 1310.012207 1307.735474 1303.987549 1298.806519 1294.592163 1290.945312 1287.30603 1281.201172 1284.159424 1289.633789 1292.82312 1295.259277 1295.664185 1294.628784 1294.990845 1304.020142 1301.106689 1285.294067 1272.41394 1264.843994 1260.019287 1256.251587 1259.369263 1262.996826 1267.107178 1273.854126 1281.648804 1283.780762 1272.708618 1271.361084 1285.50415 1293.738037 1286.396973 1277.305664 1281.381348 1292.274658 1297.894897 1300.089111 1299.572266 1298.37146 1297.5271 1296.4104 1294.189453 1283.47229 1287.645142 1290.512939 1292.704712 1298.458862 1303.588257 1305.632812 1305.746216 1305.423462 1304.736084 1304.720093 1306.120361 1307.752686 1308.47583 1308.341064 1306.794067 1303.768555 1297.582397 1295.781128 1294.900146 1294.999878 1301.78833 1304.547119 1301.599365 1294.264648 1285.738892 1278.778564 1274.879639 1271.447876 1275.032349 1278.690674 1283.081543 1293.671997 1300.203247 1297.476807 1291.593628 1284.230713 1279.925171 1290.639038 1293.822266 1294.012695 1294.173462 1294.462769 1294.861694 1294.860107 1294.136719 1294.561768 1297.82019 1300.938965 1302.163818 1301.878296 1299.547729 1297.451172 1296.604004 1295.204346 1294.72644 1294.474609 1293.041626 1290.30188 1287.019165 1284.427856 1281.572754 1276.960571 1275.611084 1277.275635 1283.840942 1294.314575 1293.632935 1291.835693 1288.932617 1283.704102 1279.453125 1275.526001 1271.400879 1267.193604 1264.135254 1260.466187 1256.463135 1254.820068 1252.782837 1248.943359 1245.411743 1244.99585 1248.083374 1251.477051 1254.144775 1255.030762 1255.592285 1256.325684 1256.992554 1257.086182 1256.791504 1255.581055 1253.908325 1252.251343 1250.776123 1249.41626 1248.068848 1246.799927 1245.564331 1244.270264 1242.686768 1241.394043 1240.310181 1239.12793 1237.884644 1236.526123 1235.29834 1234.070557 1233.243164 1232.617554 1231.688843 1229.425171 1227.026489 1224.745483 1222.847168 1221.372437 1219.686279 1217.134399 1215.455566 1216.675415 1219.968262 1220.878906 1219.895264 1220.646851 1222.132202 1222.554321 1222.423096 1221.122559 1219.913208 1219.775024 1219.724854 1219.838501 1220.487183 1221.747803 1222.611816 1223.326782 1223.594604 1223.449951 1222.859009 1221.868652 1219.964478 1219.202026 1218.662109 1218.835083 1219.341675 1218.772339 1218.150146 1217.787354 1217.115112 1216.428101 1215.858398 1215.591064 1215.400879 1215.24939 1214.985352 1214.518921 1213.66748 1212.692993 1211.713867 1210.958862 1210.252808 1209.630005 1209.089111 1207.186401 1202.316162 1200.206787 1199.370728 1198.166382 1197.232666 1196.824341 1196.882324 1196.414429 1195.441162 1195.413696 1195.317017 1194.985352 1195.124878 1195.311646 1195.823975 1196.479492 1196.869385 1197.466064 1198.327881 1199.241089 1200.151367 1200.8302 1201.286377 1201.292358 1202.341675 1205.927979 1208.030151 1209.16394 1209.654297 1209.99292 1210.486938 1211.107422 1211.498047 1211.608521 1211.30957 1210.974731 1210.269897 1209.467651 1208.783569 1208.403564 1208.14978 1208.182617 1207.663452 1205.906006 1200.946411 1199.824829 1202.455078 1204.909912 1206.081055 1206.792358 1207.215454 1207.567749 1207.749268 1207.813721 1207.797729 1207.698486 1207.618408 1207.361816 1207.174683 1206.877075 1206.557861 1206.536377 1206.370361 1206.037109 1205.7052 1205.114136 1204.562622 1203.810669 1203.033081 1202.183716 1201.319946 1200.518311 1199.551025 1198.644165 1197.712402 1196.597412 1195.807617 1195.401978 1194.825684 1194.364868 1193.853394 1193.194214 1192.225464 1191.322388 1190.080566 1188.69104 1186.879639 1184.803101 1184.816162 1185.417847 1185.925415 1186.361694 1186.554077 1186.338501 1186.391235 1187.53125 1190.097168 1193.89917 1195.539062 1196.383423 1196.776978 1196.893188 1196.82605 1196.563354 1196.303101 1195.746338 1194.781006 1192.472046 1189.899414 1187.51001 1185.62793 1184.164307 1183.801514 1183.765503 1183.584229 1183.324829 1183.09729 1182.913818 1181.844604 1182.709229 1183.129395 1183.396118 1183.401245 1183.419922 1183.722656 1184.443848 1185.350586 1186.285767 1187.939209 1188.984619 1190.075317 1191.160767 1192.12915 1193.147095 1194.133301 1194.960327 1196.316162 1198.13623 1200.013428 1202.299072 1204.392212 1206.652466 1211.388428 1217.520386 1220.924927 1223.705078 1230.388062 1234.512939 1235.65686 1233.858521 1231.25293 1229.575806 1229.270508 1228.83374 1228.198364 1227.711182 1227.021851 1226.511841 1225.700317 1224.388184 1222.234741 1219.9021 1221.000977 1220.533813 1218.315918 1217.463013 1219.431763 1218.989014 1213.064575 1208.149536 1208.349121 1209.845947 1211.020264 1211.990356 1213.082153 1215.916382 1219.672363 1225.016235 1229.541748 1234.853271 1241.77832 1243.997192 1247.050781 1247.82666 1246.163452 1243.466431 1242.561768 1248.400635 1254.121582 1261.663696 1269.996582 1277.169312 1291.711426 1306.031006 1316.585938 1322.322266 1329.992798 1335.668579 1340.418091 1341.794312 1341.537231 1337.405518 1333.131836 1330.159058 1327.662109 1323.026245 1317.838989 1311.32251 1306.488647 1300.993408 1295.919312 1291.616089 1284.921753 1277.668335 1278.614746 1283.682251 1285.91333 1285.410156 1283.348877 1281.587158 1276.06189 1269.062134 1263.184937 1258.355225 1249.131958 1242.513306 1242.076538 1233.079102 1230.911011 1236.661987 1240.357178 1239.386475 1237.999878 1238.656738 1239.247925 1238.630493 1235.876099 1234.362671 1231.992676 1224.656372 1215.710571 1205.371094 1203.917236 1209.825317 1213.143311 1213.926147 1208.343262 1198.31665 1188.916016 1183.810181 1186.484009 1192.265259 1197.875854 1202.330444 1203.291748 1201.071899 1201.528564 1201.438477 1200.372925 1199.231934 1204.499878 1211.933716 1218.019775 1222.537109 1222.646362 1219.384155 1208.966309 1196.218018 1194.072388 1193.938843 +1250.314453 1231.511108 1223.411621 1218.166992 1209.077271 1205.737305 1203.472046 1197.1604 1188.859253 1181.523438 1178.492432 1176.508423 1177.592773 1185.510498 1199.845581 1220.698975 1255.670166 1280.937012 1276.86438 1272.738647 1276.616455 1280.966431 1291.115356 1302.207397 1310.453125 1321.222412 1333.462769 1342.538086 1348.923096 1357.983398 1368.722168 1379.960449 1384.883301 1386.80249 1384.631958 1378.954346 1366.988647 1362.547485 1355.420166 1350.608398 1345.205566 1339.898193 1330.182373 1326.231079 1322.027954 1315.955811 1318.921387 1330.319702 1344.262085 1354.551636 1352.884277 1341.440186 1335.251465 1330.427612 1339.047729 1350.696167 1367.005005 1366.421875 1369.98877 1367.620239 1362.346313 1355.910278 1351.491089 1346.008423 1340.52832 1334.775269 1337.575684 1338.420898 1337.360352 1335.084717 1332.721191 1329.07959 1322.910889 1318.833618 1316.859741 1315.204468 1311.30127 1306.488037 1304.708374 1305.080566 1307.344604 1308.745483 1307.730713 1304.653198 1301.649902 1303.906372 1307.987061 1310.437622 1310.071045 1306.588867 1309.295044 1317.69397 1322.396729 1325.380615 1328.774902 1330.841064 1329.731445 1316.043945 1298.112305 1317.211182 1332.058716 1334.296875 1332.866699 1328.706787 1325.811279 1321.992554 1316.986694 1312.887573 1317.551636 1323.551636 1327.713989 1332.004517 1336.874756 1340.738037 1342.960693 1343.373779 1344.74231 1351.151489 1355.255493 1356.825806 1354.513062 1348.759155 1343.63269 1339.51062 1338.160645 1335.63147 1332.067749 1327.545532 1327.413818 1328.332764 1326.259644 1320.80249 1315.988281 1312.880127 1308.769653 1304.513184 1300.007568 1295.448364 1293.788574 1288.966675 1287.633911 1290.482178 1294.5448 1295.846802 1297.229858 1297.677124 1297.375732 1298.656128 1301.465332 1291.269897 1275.350464 1264.870361 1259.779785 1257.156616 1258.817749 1261.799561 1265.481323 1270.027832 1278.541016 1282.040527 1281.115967 1273.734253 1278.097778 1289.909668 1295.443481 1290.856934 1279.597412 1282.548584 1292.601807 1301.279297 1304.596924 1303.187622 1301.324097 1299.803223 1297.908691 1294.652588 1292.575562 1295.623535 1294.719482 1292.20752 1299.713867 1305.71228 1307.433105 1308.033203 1307.958008 1307.29187 1308.067383 1309.596802 1311.039307 1311.810303 1311.341431 1310.829834 1309.041626 1305.555298 1303.817383 1303.041382 1305.624146 1308.189087 1308.329346 1298.709229 1290.642456 1283.246338 1277.433716 1274.871704 1281.678711 1283.469238 1284.838379 1288.283325 1296.066162 1307.241455 1303.442505 1295.870728 1290.373779 1283.47168 1282.129272 1290.968018 1293.377441 1294.560791 1295.303955 1296.655518 1297.619751 1298.770386 1301.860107 1305.075684 1306.603516 1307.029419 1307.706665 1307.195312 1305.75293 1303.144409 1300.063965 1298.069824 1296.991699 1295.134521 1292.757568 1288.890015 1285.032715 1281.81665 1278.824097 1277.723877 1278.063599 1280.065918 1288.833862 1295.630493 1294.473633 1293.705566 1288.236816 1282.310791 1277.337402 1269.997314 1267.37085 1265.169067 1263.038208 1260.263916 1258.140869 1255.984863 1251.400269 1245.574829 1245.37207 1248.822754 1253.154907 1256.236938 1256.940186 1257.378174 1257.715698 1257.765991 1257.53186 1257.139404 1255.240845 1253.5448 1251.861572 1250.324341 1248.76062 1247.421509 1245.960815 1244.438843 1243.508179 1241.796997 1240.135376 1238.902588 1237.663818 1236.591797 1235.496338 1234.009888 1232.707153 1231.583252 1230.221436 1228.798096 1225.231323 1221.88855 1219.647949 1218.785767 1217.932617 1216.604248 1217.220581 1218.992432 1220.882202 1222.323608 1222.590454 1222.011597 1222.381104 1222.953857 1223.043945 1222.938477 1221.695801 1220.749268 1220.243408 1219.932007 1219.78186 1220.162354 1221.621094 1222.702271 1223.379639 1223.711914 1223.501709 1222.756836 1221.041504 1219.500366 1218.940308 1218.858887 1220.004028 1220.450806 1220.188477 1219.697266 1218.980957 1218.549927 1217.668213 1217.23999 1217.115723 1217.217651 1217.356934 1217.055786 1215.910522 1214.466309 1212.95105 1211.668457 1210.409546 1209.651123 1209.092651 1208.217163 1204.383057 1202.033203 1201.583252 1200.867432 1199.951904 1199.075684 1198.677612 1198.199097 1197.696411 1197.026001 1196.528687 1195.519043 1195.276978 1195.697021 1195.33313 1195.346069 1195.74231 1196.606323 1197.9375 1199.515137 1201.04834 1202.318359 1203.4646 1204.563721 1204.867798 1203.072754 1204.045532 1206.617798 1207.887817 1208.628906 1209.273315 1210.592407 1212.380493 1213.867676 1214.446167 1214.153564 1213.552856 1212.705322 1211.797729 1211.114624 1210.793579 1210.459351 1210.233765 1209.411377 1208.482666 1203.525024 1200.971802 1205.340088 1207.269775 1207.737549 1208.059082 1208.298218 1208.37915 1208.516724 1208.593018 1208.529297 1208.42627 1208.275879 1208.140137 1207.96936 1207.819702 1207.6427 1207.347412 1207.123901 1206.758423 1206.332397 1205.890747 1205.200073 1204.534546 1203.75769 1202.920776 1202.040283 1201.173584 1200.174927 1199.098999 1198.170654 1197.21106 1196.457031 1195.853149 1195.237427 1194.991577 1194.685547 1193.851929 1192.937012 1191.934814 1190.922974 1189.831787 1188.732056 1187.742554 1187.23291 1187.299805 1187.562378 1187.723267 1187.806519 1187.685425 1187.968872 1188.824463 1190.294556 1192.327515 1194.558716 1195.390259 1196.242676 1196.490967 1196.60437 1196.545166 1196.328735 1195.9823 1195.311279 1193.029419 1190.354248 1187.815796 1185.657837 1184.429077 1184.235474 1184.165039 1183.951538 1183.745972 1183.619385 1183.485596 1182.612915 1182.02832 1183.039307 1183.618286 1183.883301 1184.078735 1184.390137 1184.796631 1185.36377 1186.040771 1187.717773 1188.793823 1190.034912 1191.120117 1192.302734 1193.291992 1194.321899 1195.267334 1196.838501 1198.630371 1200.789307 1203.3396 1206.068726 1208.011719 1216.052368 1224.132202 1229.419556 1233.352661 1235.052856 1237.581299 1238.459229 1236.837646 1233.57373 1231.13269 1232.279419 1231.782837 1230.468872 1230.186523 1229.026245 1228.423706 1227.665894 1226.440308 1225.014648 1224.234375 1224.124268 1223.17334 1220.800659 1219.234009 1221.934326 1222.592896 1220.137085 1215.979126 1213.681519 1212.751343 1212.381836 1212.79895 1213.23584 1213.151733 1216.529907 1221.697998 1226.057251 1229.448853 1232.281006 1236.33374 1240.710693 1241.172729 1241.351074 1242.565308 1246.830688 1255.252075 1259.498657 1267.983887 1271.883545 1276.273804 1287.309448 1300.428589 1309.813843 1317.903198 1326.722534 1335.808105 1344.15564 1344.848877 1344.670044 1343.1427 1338.751343 1333.89856 1330.559082 1325.360718 1320.513062 1315.394653 1309.498901 1305.828857 1300.3479 1295.326416 1289.62561 1282.690796 1280.625488 1281.952148 1284.912476 1285.505493 1284.837036 1282.890991 1278.375488 1270.193481 1263.265747 1255.71228 1254.523438 1250.435669 1246.026245 1236.130493 1230.746948 1224.285278 1224.76416 1225.462891 1223.699219 1223.95459 1228.21875 1227.808228 1227.037476 1224.974487 1221.983887 1216.907593 1208.946777 1201.929932 1197.046631 1200.153442 1202.780762 1200.28894 1194.446533 1188.424805 1182.381836 1181.286255 1181.179443 1183.525879 1187.165527 1190.263062 1190.869019 1190.130005 1190.540649 1189.92688 1188.879639 1188.644897 1193.941895 1205.876953 1214.733521 1223.241943 1228.945801 1229.590332 1217.046387 1208.625977 1207.859497 1207.094849 +1254.612427 1235.867188 1215.339355 1200.865723 1192.783447 1191.741577 1188.856201 1184.086792 1181.52417 1179.448486 1177.619629 1176.49707 1179.224365 1186.281372 1196.755127 1209.223022 1233.95459 1265.240601 1288.157227 1295.174072 1292.47168 1291.110352 1298.514893 1311.734863 1318.355713 1325.249878 1335.964478 1345.896362 1354.529785 1363.437866 1372.225464 1381.007568 1388.78833 1390.781616 1386.596191 1379.855347 1370.175537 1363.277832 1358.185303 1351.302002 1340.090576 1338.345093 1333.811523 1328.910034 1322.973511 1315.736572 1322.468018 1336.045288 1349.23584 1357.558594 1355.493896 1346.182495 1342.581055 1339.526489 1348.977417 1357.310425 1363.369629 1371.261353 1375.526367 1371.305298 1364.404785 1360.347168 1356.450439 1351.102783 1342.238647 1339.759644 1342.434204 1342.478149 1341.269043 1338.701172 1335.251099 1330.652466 1326.516846 1322.803955 1320.319702 1318.292847 1314.99646 1310.437012 1309.553833 1309.314331 1310.69104 1311.22168 1309.878906 1307.229614 1305.166504 1304.267822 1307.736084 1313.133911 1314.844727 1313.446411 1315.534546 1320.020996 1325.85498 1328.773926 1331.68396 1332.69397 1331.366699 1316.588745 1298.323486 1318.174805 1337.924805 1343.418335 1338.881958 1333.396973 1328.451904 1325.036377 1316.972412 1315.576538 1320.020752 1326.979858 1333.30127 1337.735962 1343.075684 1349.025513 1350.727173 1351.046753 1353.852661 1361.155762 1366.145264 1369.12146 1366.856689 1359.063965 1351.599854 1347.536621 1344.664062 1340.729492 1337.784546 1334.742676 1336.362427 1337.013062 1334.51709 1330.044189 1321.223999 1314.777466 1309.341797 1304.099976 1301.324829 1297.901001 1294.391968 1291.25708 1290.687622 1293.255127 1295.81897 1297.764648 1298.941772 1298.918823 1297.894531 1295.379761 1292.128418 1276.400513 1266.091064 1258.962402 1258.538208 1259.311523 1261.182861 1263.904297 1266.904419 1274.556396 1284.65271 1283.252441 1280.03064 1280.497925 1284.061035 1291.58667 1295.825317 1294.543945 1281.772461 1282.859863 1294.892944 1305.205444 1305.991821 1305.339966 1303.421509 1301.738037 1299.460693 1296.24646 1297.374878 1302.317017 1301.781982 1300.047363 1301.711182 1306.342896 1308.442383 1309.808838 1310.301025 1310.830444 1312.630371 1314.577148 1315.589966 1315.213379 1314.515259 1315.798462 1316.112671 1315.520874 1312.323975 1308.94165 1307.043945 1305.446167 1299.625366 1291.031616 1285.747925 1280.093384 1276.778442 1282.083862 1285.427979 1287.555054 1288.546631 1290.143677 1295.502319 1307.239624 1306.88501 1305.046265 1298.955933 1294.550659 1289.397827 1290.057739 1291.856079 1292.897217 1294.861084 1297.066895 1299.339111 1301.931274 1305.156006 1307.572632 1309.448242 1310.801758 1311.321777 1310.714844 1309.434814 1306.573608 1303.36145 1301.174316 1298.800293 1296.545044 1293.704712 1289.561401 1285.0802 1281.327515 1279.13269 1278.836426 1279.006836 1279.07373 1280.783813 1290.458862 1294.440063 1294.067383 1290.842163 1285.096313 1280.672974 1274.988647 1269.409424 1266.631836 1266.528442 1264.775024 1261.707275 1258.549316 1253.360107 1245.803101 1246.470459 1249.412598 1254.673584 1257.463989 1258.749878 1259.11792 1259.007935 1258.607666 1258.097778 1256.970703 1254.800293 1252.667847 1250.872559 1249.294312 1247.882935 1246.464722 1244.950073 1243.519897 1242.309448 1240.756226 1238.916504 1237.315674 1236.045776 1235.109863 1234.243286 1232.816895 1231.328613 1229.629883 1227.772583 1225.268921 1220.728149 1219.154297 1219.188965 1219.376953 1218.359131 1218.974731 1220.234741 1221.066895 1222.548828 1223.585327 1223.833374 1223.693359 1223.772583 1223.890381 1223.83667 1223.398438 1222.505615 1221.595337 1220.509766 1220.040527 1220.558716 1220.874512 1221.89209 1222.844971 1223.47876 1223.81897 1223.566284 1222.659058 1221.178223 1219.900024 1219.065674 1219.297485 1220.452759 1221.048462 1221.001221 1220.532349 1219.991333 1219.510864 1218.863647 1218.458862 1218.165649 1218.414062 1219.309937 1219.213379 1217.474121 1214.975098 1212.872192 1211.055786 1209.670288 1208.7052 1207.813232 1205.288818 1203.777588 1203.86499 1203.522827 1202.808838 1201.852295 1201.074707 1200.483765 1199.850952 1199.103027 1198.279907 1196.971924 1195.635864 1195.293091 1196.067993 1196.177246 1195.337769 1195.460205 1196.485718 1198.620117 1201.051514 1203.037109 1204.515991 1205.969604 1207.397705 1207.928101 1208.061401 1206.012817 1204.753662 1206.647095 1207.498657 1207.775391 1209.495605 1213.384277 1217.589233 1217.981079 1217.083984 1216.023682 1215.074341 1214.129028 1213.512817 1213.075073 1212.630981 1211.801025 1210.807617 1209.633179 1203.091675 1203.675171 1207.815186 1208.332275 1208.592773 1208.899902 1208.970581 1209.168457 1209.306763 1209.312378 1209.275391 1209.144653 1208.998291 1208.846924 1208.686401 1208.526611 1208.549683 1208.24231 1207.934814 1207.521606 1207.07251 1206.603394 1205.889282 1205.262329 1204.420776 1203.603149 1202.735107 1201.751953 1200.764038 1199.758057 1198.731567 1197.930176 1197.203735 1196.38916 1195.795288 1195.728882 1195.270386 1194.430176 1193.273804 1192.421143 1191.671631 1191.053467 1190.54541 1189.993774 1189.630493 1189.590576 1189.550903 1189.567139 1189.366577 1189.048828 1189.145752 1189.662231 1190.73999 1192.017334 1193.432495 1195.281128 1195.553467 1196.118408 1196.328613 1196.355103 1196.259644 1195.990479 1195.395264 1193.297974 1190.73938 1188.200317 1186.132202 1184.864136 1184.680176 1184.545776 1184.395874 1184.24939 1184.053833 1183.825439 1183.54187 1182.483398 1181.877808 1183.213257 1183.91333 1184.14624 1184.363647 1184.732422 1185.144043 1185.658569 1187.503784 1188.668701 1189.87207 1191.116821 1192.272705 1193.474365 1194.462646 1195.647583 1197.376587 1199.047241 1201.344971 1204.081909 1207.165527 1213.202271 1221.088989 1231.56311 1236.768555 1239.630493 1240.887207 1242.41687 1242.098022 1240.433838 1238.169556 1236.216187 1235.891846 1234.233887 1233.005493 1232.186523 1230.574829 1230.427246 1229.943237 1228.374878 1227.735474 1227.888306 1228.75769 1228.730103 1226.416992 1223.787109 1224.747314 1225.911499 1224.910645 1223.383545 1222.327271 1221.325073 1219.537964 1218.490967 1217.25769 1215.501709 1214.274292 1219.51709 1223.015747 1226.026978 1228.474121 1229.772705 1230.829468 1233.056519 1237.724976 1243.497559 1250.094116 1257.444946 1260.389771 1264.382324 1269.432251 1271.300781 1278.467163 1291.338013 1301.625 1310.432251 1319.973633 1331.612549 1344.421021 1345.805298 1344.929688 1343.356079 1339.577881 1335.217041 1331.328125 1325.668335 1320.233398 1315.15979 1310.016602 1306.130493 1301.324463 1295.846924 1291.396484 1285.679321 1280.973633 1282.412354 1286.476074 1286.871582 1285.422241 1282.85022 1277.927368 1268.133911 1265.607056 1263.32666 1260.987793 1256.350708 1245.914795 1238.348877 1231.664795 1225.814819 1220.862549 1219.310913 1218.433228 1216.298828 1209.95752 1210.043579 1210.865479 1209.576904 1207.197876 1204.405273 1200.275269 1194.866699 1193.1427 1192.624878 1193.149292 1190.829224 1185.020996 1181.557007 1181.720459 1181.103394 1180.673828 1180.235229 1180.414062 1181.228882 1181.435425 1180.690674 1179.720581 1179.004761 1178.717163 1180.353271 1187.810425 1196.123901 1206.37854 1218.355225 1226.613037 1233.086304 1233.260986 1224.425903 1221.004517 1214.682129 +1248.849365 1229.610596 1213.851807 1198.533813 1191.599243 1186.921753 1182.956787 1181.183228 1179.829102 1178.599365 1177.519531 1177.799805 1183.964478 1196.368896 1205.627319 1213.006836 1215.800537 1242.48291 1267.823975 1289.400635 1297.622681 1305.415771 1316.990112 1324.342773 1335.048584 1342.584473 1343.980225 1349.497681 1358.653076 1369.344116 1378.196533 1385.847046 1391.996216 1392.452637 1387.491455 1377.015625 1372.006104 1366.690796 1360.363525 1352.077759 1353.350952 1346.509766 1339.337158 1331.301514 1324.314575 1316.706665 1325.405029 1339.951782 1351.623657 1365.727295 1361.419189 1354.720581 1353.605225 1348.526489 1356.117676 1364.501221 1367.991089 1374.55957 1379.699463 1378.041992 1368.958618 1364.057861 1359.35083 1354.034058 1342.670776 1341.899048 1345.968994 1346.4552 1345.210083 1342.382446 1338.513306 1334.050415 1329.989014 1325.989868 1323.39563 1319.98584 1315.942139 1318.356323 1317.468628 1315.834717 1315.736084 1314.495605 1312.161011 1309.544434 1306.806763 1304.591064 1308.680664 1317.000366 1319.766235 1320.922607 1320.573975 1325.366943 1330.116333 1332.57251 1333.764282 1333.654785 1328.620117 1313.638184 1303.512939 1318.846924 1340.013306 1345.465332 1343.38269 1338.541626 1334.317017 1331.290405 1320.344604 1315.608154 1321.568848 1329.526855 1337.84436 1342.647949 1353.550171 1359.312378 1365.095215 1369.16626 1370.071289 1372.529663 1373.883301 1373.109863 1371.133545 1368.024048 1361.791992 1356.902222 1352.997681 1349.091797 1344.429199 1345.640381 1348.723633 1347.251709 1341.702759 1335.454834 1326.435669 1316.534668 1311.895142 1307.670288 1305.160522 1299.88208 1294.353394 1292.078613 1291.740112 1293.338013 1297.161621 1299.579956 1300.87561 1299.911865 1295.868896 1287.781494 1279.325806 1265.1521 1258.708496 1259.508057 1260.17334 1261.686523 1263.740967 1266.391968 1269.249756 1281.765991 1295.832886 1281.527466 1281.437744 1288.512451 1292.305908 1292.776611 1299.666504 1297.575562 1285.043823 1283.366577 1296.031006 1306.477783 1306.758423 1306.420288 1305.320435 1303.414185 1301.545166 1301.404785 1304.357544 1306.878906 1306.889404 1304.567261 1303.909912 1306.696533 1309.247437 1311.635864 1312.738037 1314.042236 1315.934814 1318.858521 1320.173828 1318.501343 1317.779785 1320.651489 1322.248779 1321.169678 1318.28125 1308.744873 1301.891357 1295.568726 1291.257935 1287.063354 1281.381104 1279.161743 1281.792114 1286.956543 1290.386719 1291.462158 1292.633789 1292.295898 1294.098145 1305.099487 1309.602051 1309.629028 1304.53418 1298.290161 1292.999268 1292.935181 1293.282837 1292.679199 1292.78064 1296.083008 1300.03479 1302.119751 1305.082764 1308.148193 1311.108398 1314.060669 1315.950562 1315.411377 1312.88501 1309.448853 1306.361694 1302.720093 1300.304077 1297.08667 1293.281372 1289.062134 1285.157959 1280.867554 1280.938354 1281.289551 1281.42334 1281.34314 1281.463989 1286.782593 1292.091919 1293.625854 1291.393433 1287.316162 1283.473511 1280.041504 1275.443359 1268.624878 1270.394775 1268.952393 1266.245972 1261.907715 1256.898193 1249.386597 1246.455322 1248.520386 1254.681763 1258.256958 1260.012817 1260.640381 1260.186279 1259.249634 1258.254028 1256.092163 1253.660522 1251.488037 1249.423218 1247.877319 1246.54541 1245.032715 1243.762451 1242.48291 1240.861938 1239.137451 1237.481079 1235.801147 1233.970825 1232.687378 1232.62561 1231.852173 1230.475464 1228.79834 1226.696655 1223.843872 1220.895752 1221.311646 1221.683594 1221.517944 1220.55249 1220.809082 1222.244629 1222.972778 1224.006714 1224.950195 1225.200317 1225.270508 1225.062866 1224.86377 1224.627441 1224.199341 1223.380371 1222.595825 1221.797729 1221.133789 1221.391724 1221.921875 1222.490967 1223.109497 1223.695312 1223.86438 1223.611816 1222.84314 1221.608154 1220.255249 1219.81543 1219.807251 1220.88562 1221.602539 1221.713867 1221.443726 1220.912231 1220.460815 1220.12085 1219.80188 1219.230347 1219.16333 1220.054321 1220.0896 1218.391113 1215.356323 1212.622803 1210.407593 1209.071289 1207.527588 1206.074097 1206.500732 1206.941162 1206.985474 1206.360352 1205.199707 1204.024902 1203.193604 1202.50647 1201.687988 1200.805176 1199.40332 1197.665771 1195.835205 1195.274902 1196.532227 1197.282593 1195.883423 1195.317017 1196.459839 1199.4375 1202.834961 1205.354492 1206.447876 1207.373047 1208.152954 1208.667847 1208.692993 1208.289795 1207.756226 1207.289185 1207.452637 1207.726196 1209.074829 1213.525146 1220.012329 1220.245361 1219.441528 1218.245972 1217.234863 1216.414062 1215.733765 1215.293457 1214.770386 1213.574707 1211.342163 1208.942749 1202.258423 1206.188965 1208.367676 1208.93396 1209.268677 1209.5802 1209.85022 1209.968506 1210.099976 1210.094482 1209.96106 1209.823364 1209.768555 1209.630615 1209.549316 1209.578491 1209.358643 1209.052734 1208.685181 1208.304199 1207.801636 1207.182129 1206.58728 1205.818848 1205.092651 1204.225464 1203.281128 1202.368408 1201.28125 1200.277466 1199.341431 1198.491455 1197.709961 1197.13623 1196.629395 1196.190308 1195.63208 1194.670898 1193.643677 1192.910522 1192.474121 1192.390259 1192.267944 1192.012817 1191.75769 1191.917236 1191.877686 1191.677246 1191.07312 1190.5177 1190.248291 1190.47876 1191.128784 1192.092285 1193.072632 1194.232666 1195.315796 1195.469849 1195.966309 1196.244507 1196.136841 1195.973267 1195.390747 1193.393311 1191.203857 1188.781128 1186.677979 1185.342407 1185.215942 1184.966553 1184.834473 1184.696289 1184.46936 1184.218628 1183.83374 1183.407593 1182.605957 1181.85022 1183.181274 1183.722412 1183.955933 1184.127563 1184.64502 1185.296509 1187.227905 1188.461426 1189.63623 1190.955811 1192.19751 1193.427979 1194.491211 1195.361328 1197.397705 1199.213623 1201.489014 1204.185303 1207.244751 1216.067261 1227.878174 1238.223999 1245.055664 1246.81958 1247.165527 1247.587158 1246.793091 1244.56665 1244.164917 1243.101929 1240.434814 1238.055298 1235.788086 1233.575684 1231.551514 1232.924805 1232.071655 1230.140381 1229.363892 1230.004272 1231.883667 1232.879883 1232.436035 1228.981567 1228.805786 1230.591187 1231.657959 1230.782227 1229.315796 1227.935059 1226.123901 1223.851074 1221.847168 1219.660645 1216.427979 1216.609253 1221.33374 1223.469849 1225.671875 1227.315063 1228.685913 1231.155396 1236.667358 1243.050171 1247.874512 1252.240723 1254.455322 1255.146851 1263.927856 1268.062866 1279.286255 1286.515015 1294.388184 1303.392944 1312.303833 1326.268921 1340.320801 1346.14917 1344.988037 1342.320923 1338.51062 1334.642822 1331.156738 1323.255371 1317.34375 1312.499023 1307.766357 1303.858276 1299.742798 1295.540283 1291.695068 1289.584106 1288.619385 1290.833008 1290.683472 1289.124756 1286.302124 1281.948364 1278.016357 1272.686279 1270.84314 1269.838013 1266.292603 1257.677856 1250.732544 1244.640747 1238.141724 1232.83728 1227.587402 1225.458862 1224.680054 1222.589722 1219.409424 1210.958984 1206.172241 1204.462769 1203.182861 1201.381714 1195.731323 1195.317261 1194.081299 1194.356323 1193.376587 1190.803223 1186.744141 1186.439087 1186.05896 1184.493408 1182.529419 1180.46936 1180.617554 1180.432739 1179.555298 1175.481812 1170.390625 1169.635742 1170.461304 1173.530396 1182.105469 1188.386719 1197.846436 1207.530273 1219.642212 1226.868652 1232.650879 1234.935059 1230.419434 1219.958618 +1232.532471 1218.878662 1203.487915 1192.917358 1188.550781 1184.72168 1181.798096 1180.047729 1178.745972 1177.751587 1178.241821 1182.166138 1189.827637 1202.336548 1214.367554 1232.361206 1246.557861 1236.884644 1245.936401 1271.750732 1291.727539 1310.421021 1325.817139 1338.4823 1344.410645 1349.14563 1351.203369 1352.864868 1361.155396 1370.000488 1378.860352 1387.243896 1392.75769 1392.622925 1388.387695 1381.818604 1374.962036 1369.120361 1363.368286 1370.12915 1368.399536 1355.957031 1344.402588 1332.88208 1325.267578 1318.94104 1324.099365 1343.96814 1355.330566 1368.003784 1366.263062 1364.395386 1361.317139 1355.97937 1363.491089 1370.692627 1373.465942 1377.051758 1380.257324 1378.714355 1372.414795 1366.969727 1360.575562 1354.317749 1342.273315 1347.41272 1353.524414 1351.653076 1349.154541 1345.94458 1341.554443 1336.898438 1332.551392 1329.199951 1326.674683 1325.903564 1323.295654 1323.759888 1322.420532 1321.553345 1320.280151 1317.825195 1314.950684 1313.526611 1308.592896 1304.651245 1313.443604 1320.488281 1324.41333 1328.690063 1331.027954 1331.536377 1334.650757 1336.979736 1335.768799 1331.2323 1320.999512 1304.876587 1319.633301 1330.87561 1340.371826 1350.284668 1348.005249 1343.987427 1340.428589 1335.741699 1327.640259 1319.36377 1324.036377 1335.617188 1343.908447 1348.52063 1356.960571 1367.478271 1379.458374 1382.956177 1383.033569 1380.840942 1378.15979 1375.107422 1372.223511 1370.308105 1369.020386 1368.428955 1367.875122 1359.700073 1353.568604 1355.208374 1356.83252 1356.813232 1351.812378 1339.408569 1329.959473 1320.838623 1315.270874 1311.271729 1307.342285 1300.769043 1293.482178 1292.756714 1294.859497 1296.49292 1299.300537 1301.585815 1303.342896 1302.034058 1291.771362 1278.627563 1270.760742 1259.782227 1260.317993 1260.975342 1262.283569 1264.041992 1266.190918 1268.398438 1280.956543 1296.548828 1292.123413 1279.48291 1287.991821 1295.044312 1297.7771 1300.26062 1305.258057 1304.63562 1290.547607 1287.289795 1295.153198 1305.803589 1307.329468 1307.259155 1306.85083 1305.356689 1303.387451 1303.264771 1305.256958 1308.301147 1309.278687 1308.088623 1304.644897 1306.561646 1311.183105 1314.14856 1314.47583 1315.853027 1318.837769 1323.563477 1325.065796 1324.638062 1326.250977 1328.874878 1328.210449 1324.67041 1317.790649 1304.69519 1294.276489 1290.039551 1286.947266 1283.585327 1281.932861 1283.522949 1288.477051 1293.800415 1296.336182 1298.685791 1302.103027 1302.641113 1303.799194 1303.560669 1311.882324 1317.909668 1309.430176 1301.948975 1298.493896 1298.081909 1298.486938 1298.305176 1297.106567 1298.857056 1301.207764 1302.556152 1303.949463 1306.353027 1311.752686 1315.924927 1318.800537 1318.448608 1316.248779 1311.988403 1307.4823 1304.092407 1302.763428 1297.200073 1292.326904 1289.466919 1286.870117 1284.790894 1284.868408 1285.261597 1285.223022 1284.112427 1284.448608 1287.521362 1291.292114 1293.386841 1292.011475 1289.257446 1286.68396 1284.575806 1282.969238 1279.79126 1275.649414 1272.953735 1271.014404 1266.228027 1257.431641 1252.991821 1249.281372 1247.719604 1254.370361 1258.861084 1261.884155 1262.57373 1261.508911 1259.563843 1257.442261 1254.985718 1252.0896 1249.445068 1247.244995 1245.489136 1244.661255 1243.557007 1242.115601 1240.77771 1239.078735 1237.164551 1235.555908 1234.425171 1232.532837 1231.390991 1231.184204 1230.883179 1230.188599 1228.919067 1227.084106 1224.899536 1223.644043 1223.37793 1223.54895 1223.639282 1223.44165 1223.662476 1224.419312 1225.251587 1226.098145 1226.759766 1226.960938 1226.740845 1226.360962 1225.815796 1225.39917 1224.948242 1224.171021 1223.62915 1222.901367 1222.635132 1222.667969 1223.000122 1223.28894 1223.69873 1223.945312 1224.154785 1223.963989 1223.264282 1222.343018 1221.311646 1220.904419 1221.14978 1221.733765 1222.341187 1222.485107 1222.343994 1221.94812 1221.509155 1221.302856 1221.018311 1220.322998 1219.609009 1220.532227 1220.304688 1218.42688 1215.300171 1212.422485 1210.171631 1208.592163 1208.557251 1208.860352 1209.113525 1209.565063 1209.292725 1208.506104 1207.199707 1206.223145 1205.690552 1204.940552 1203.900635 1202.805786 1201.176147 1198.866333 1196.100586 1195.205811 1197.694824 1198.794678 1197.782715 1195.370483 1196.809814 1200.425171 1204.281372 1207.123535 1208.001709 1208.378784 1209.029419 1209.205566 1209.220825 1208.758789 1208.469482 1208.435425 1208.823853 1208.716431 1208.733765 1212.458008 1218.653809 1220.990356 1220.703369 1220.12146 1219.139771 1218.180786 1217.793091 1217.834473 1217.494263 1215.937134 1211.995728 1208.161377 1203.925293 1207.229492 1208.876831 1209.501831 1209.899048 1210.362549 1210.634644 1210.805542 1210.868164 1210.806519 1210.742676 1210.651245 1210.629395 1210.526855 1210.545044 1210.48291 1210.159424 1209.811768 1209.459106 1209.018066 1208.519287 1207.90564 1207.162354 1206.380615 1205.565186 1204.5896 1203.803101 1202.783813 1201.736816 1200.818726 1199.911987 1199.074097 1198.37207 1197.776489 1197.127686 1196.510986 1195.702393 1194.735474 1193.817139 1193.509644 1193.347534 1193.536499 1193.889282 1193.796387 1193.686768 1194.071411 1194.112183 1193.842529 1193.009766 1191.947998 1191.488525 1191.356323 1191.749756 1192.472412 1193.251831 1193.849243 1194.344604 1195.098755 1195.398926 1195.991699 1196.052856 1195.882324 1195.187866 1193.466797 1191.614258 1189.619995 1187.5802 1186.084595 1185.810913 1185.556641 1185.353027 1185.164062 1184.900757 1184.607788 1184.253174 1183.854614 1183.466553 1182.741943 1181.829834 1183.053955 1183.098022 1183.41394 1184.090332 1184.858276 1186.912231 1188.078857 1189.240112 1190.640503 1192.018433 1193.221436 1194.49231 1195.765381 1197.367188 1199.303467 1201.611694 1204.253296 1206.917358 1216.012207 1228.460449 1240.704224 1251.038574 1256.769287 1256.043213 1255.138428 1253.582153 1251.85791 1249.718018 1247.223999 1244.413574 1241.828125 1238.882812 1236.086548 1234.640625 1234.89917 1233.349976 1231.24231 1230.276489 1230.920776 1233.183228 1234.007568 1232.772095 1230.126343 1230.735229 1232.986206 1234.250244 1234.406494 1233.78418 1233.199707 1232.555176 1230.345703 1227.153564 1223.6521 1219.707275 1216.497437 1218.903564 1221.62207 1223.7229 1226.043091 1228.470459 1230.916992 1234.982666 1240.140381 1243.11145 1243.492065 1250.617554 1258.124878 1264.717896 1272.672485 1281.940308 1289.462036 1295.489136 1300.116821 1305.02832 1316.471558 1332.664062 1345.338379 1344.61084 1341.780273 1337.422119 1332.715698 1327.227539 1316.127808 1313.0448 1308.15625 1304.008911 1302.857422 1300.83667 1295.605713 1292.778687 1293.51062 1294.822754 1294.736328 1293.808594 1290.900391 1289.681396 1285.476318 1281.504883 1278.28186 1275.446167 1273.209839 1270.126831 1262.554688 1255.998657 1248.943237 1242.599121 1234.685669 1229.660034 1232.021851 1233.026123 1232.515503 1229.27002 1223.94397 1216.136963 1209.379028 1209.31897 1210.313599 1210.769165 1210.03125 1207.981445 1204.810059 1199.456787 1194.293823 1193.111816 1193.469482 1192.765259 1190.399048 1186.501709 1182.914429 1182.99707 1183.475708 1182.400757 1179.5354 1175.77124 1173.437378 1169.326538 1169.549072 1175.900269 1182.927612 1190.623169 1199.188232 1210.386963 1220.395264 1227.585938 1232.783691 1234.450317 1225.630615 +1224.208618 1208.271729 1196.641724 1191.451416 1185.757202 1182.367676 1180.765747 1178.99646 1181.062866 1187.171509 1189.9104 1196.53833 1196.171509 1211.188843 1231.544189 1248.865723 1268.203735 1269.581177 1256.163452 1267.512207 1285.28418 1309.714233 1329.707031 1345.734131 1351.914673 1354.888306 1357.867432 1358.852661 1362.902222 1370.388184 1379.393066 1387.553223 1392.74707 1392.919556 1390.651978 1382.960327 1377.332275 1377.281372 1378.310669 1379.885986 1371.05127 1358.049927 1346.527222 1332.089722 1326.459473 1322.893555 1327.239624 1346.236816 1361.261963 1373.68335 1373.585938 1372.020264 1370.111572 1366.458374 1367.749634 1377.488403 1378.945801 1380.040649 1381.720459 1378.838623 1374.021362 1369.281372 1362.084839 1352.648438 1353.776245 1354.199463 1358.343262 1356.397095 1354.072144 1350.244751 1344.733765 1339.318481 1335.955078 1331.67395 1328.612305 1331.029297 1331.776123 1330.173096 1327.463135 1327.85437 1326.193237 1321.87561 1319.108521 1318.388184 1313.527344 1303.558472 1318.155029 1323.359863 1327.406616 1331.586914 1334.188721 1337.28833 1341.632935 1341.868896 1333.844604 1317.394775 1313.809082 1316.016479 1328.389282 1344.981323 1354.639038 1355.498047 1352.731323 1348.916626 1345.585815 1342.49939 1337.383545 1332.233154 1328.389893 1335.930542 1343.90332 1348.606934 1354.311523 1369.310547 1382.216675 1382.709229 1381.705078 1379.623291 1376.263184 1373.558105 1370.999756 1369.759766 1368.882324 1367.621948 1366.945068 1359.633301 1353.235474 1353.641357 1354.874756 1354.718384 1350.197388 1340.482788 1330.286865 1323.489868 1317.758423 1312.023682 1307.524414 1300.230469 1292.323486 1295.795776 1298.983032 1301.203003 1302.330078 1303.812012 1305.697021 1306.456543 1292.423584 1277.92395 1268.59436 1260.553711 1261.312744 1262.579224 1264.512939 1266.629517 1268.864502 1278.219604 1293.278198 1296.297607 1285.87146 1281.960938 1293.817017 1298.860107 1301.278564 1304.09314 1307.575073 1306.791748 1296.085205 1289.744507 1292.155029 1303.548828 1307.907593 1307.733887 1307.354004 1306.443481 1304.441528 1303.990845 1305.421143 1308.871216 1311.656982 1313.74646 1311.15271 1310.420288 1314.717285 1317.774658 1316.473633 1316.639038 1324.924316 1331.671509 1332.220215 1330.361938 1333.702637 1336.330688 1333.554443 1326.362793 1316.524048 1301.89856 1294.261963 1288.576538 1284.647949 1284.878784 1286.241577 1287.843262 1291.174438 1298.591553 1303.056641 1306.063965 1310.05957 1311.495483 1311.381714 1311.535767 1314.014893 1317.801025 1319.407104 1309.792603 1303.519897 1303.776611 1305.57251 1305.866455 1304.679199 1303.518311 1302.524048 1303.540771 1304.096069 1305.149048 1312.144043 1317.284058 1320.197998 1320.026001 1317.646484 1314.575439 1312.176392 1308.938232 1306.591431 1300.363647 1293.180054 1290.604858 1290.089966 1289.584229 1289.898315 1290.276733 1289.419556 1287.529175 1287.780151 1289.322266 1292.019287 1293.607544 1293.218994 1291.5448 1290.113037 1288.231201 1286.220337 1283.152954 1279.014648 1276.564575 1273.925659 1270.652466 1261.398438 1255.329468 1251.249268 1249.330322 1253.61084 1259.039795 1265.692749 1265.651978 1262.60144 1258.608032 1255.816406 1253.084351 1249.966187 1246.458618 1244.455078 1243.509277 1242.89978 1242.253418 1241.116333 1239.475708 1237.095215 1234.845581 1233.481323 1232.8302 1231.787231 1231.231445 1231.192139 1231.038696 1230.730469 1229.895142 1228.440186 1226.922485 1226.247925 1225.953979 1225.797729 1225.914673 1226.003906 1226.368286 1227.032349 1227.753052 1228.408081 1228.908691 1228.867676 1228.230713 1227.371094 1226.746094 1226.094727 1225.725342 1225.10437 1224.553223 1224.126343 1223.791626 1223.969604 1224.206787 1224.291626 1224.437744 1224.519897 1224.521729 1224.300171 1223.895386 1223.337402 1222.817017 1222.450806 1222.475708 1222.875 1223.229858 1223.363037 1223.373779 1223.14502 1222.860718 1222.58252 1222.26123 1221.807739 1221.442871 1220.936035 1219.934082 1217.991943 1215.396362 1212.591675 1210.423584 1209.798462 1210.60144 1211.163452 1211.61145 1211.565308 1211.280273 1210.599731 1209.296265 1208.50293 1208.093018 1207.047363 1205.888428 1205.283447 1204.061523 1201.633545 1198.989746 1198.2146 1201.20459 1201.946533 1199.645996 1196.353027 1197.86792 1201.122559 1204.827637 1207.541992 1208.315552 1208.906494 1209.400269 1209.658569 1209.780273 1209.732056 1209.480347 1209.418457 1209.682739 1209.651489 1209.560913 1210.764282 1216.275513 1219.793457 1220.845459 1220.909912 1220.562622 1219.898315 1219.680542 1220.014526 1220.022705 1218.919434 1214.832031 1210.447388 1204.485229 1207.866211 1209.485596 1210.12793 1210.668091 1211.109253 1211.48938 1211.64978 1211.694702 1211.707153 1211.666504 1211.593262 1211.535034 1211.599487 1211.512939 1211.300415 1210.950195 1210.606934 1210.216431 1209.724365 1209.244507 1208.476807 1207.664673 1206.803101 1205.994873 1204.937988 1204.153809 1203.067627 1202.285645 1201.400757 1200.508423 1199.698486 1198.943237 1198.146606 1197.47522 1196.787598 1195.877441 1194.893433 1194.180176 1193.914307 1194.09375 1194.640747 1195.053711 1195.282471 1195.664307 1195.745728 1195.627563 1195.45459 1194.92395 1193.416626 1192.491455 1192.325317 1192.468018 1192.979126 1193.541382 1194.0802 1194.463379 1194.777832 1195.074829 1195.374512 1196.033325 1195.94165 1195.119263 1193.599365 1192.312012 1190.832031 1188.840942 1187.287109 1186.439575 1186.263672 1186.00354 1185.712891 1185.378052 1185.054932 1184.738159 1184.387817 1183.960938 1183.666626 1183.270996 1182.774902 1182.780151 1183.006226 1183.533691 1184.55957 1186.556396 1187.680664 1188.891235 1190.277954 1191.681885 1193.052734 1194.342163 1195.872192 1197.401123 1199.248169 1201.523193 1203.934937 1206.71875 1213.872437 1224.511353 1237.689453 1249.200928 1258.315186 1259.545532 1259.218262 1258.558838 1257.660278 1254.758057 1250.824707 1247.414795 1244.464966 1241.466309 1239.723999 1238.167603 1236.8573 1234.634033 1232.058472 1230.883667 1231.883545 1234.15979 1234.760254 1233.16333 1230.835327 1231.520752 1234.202759 1236.064819 1236.742798 1236.545532 1235.977783 1235.343994 1233.923096 1232.499146 1228.341309 1222.145142 1218.525391 1217.185303 1219.716309 1222.084595 1224.953979 1228.537476 1231.669312 1234.49231 1237.988159 1240.875732 1243.271118 1250.898682 1258.973999 1266.879028 1274.338501 1282.553833 1290.058594 1295.149292 1298.512085 1302.136719 1309.90271 1321.4104 1336.389404 1343.604126 1340.97522 1335.978516 1330.164551 1321.931763 1315.821411 1313.010132 1308.513184 1305.86377 1305.287964 1304.157349 1301.831055 1298.596924 1298.00708 1298.689331 1298.386597 1296.814697 1294.374268 1294.022949 1291.854248 1286.496094 1282.506104 1279.027222 1275.67749 1270.973389 1264.745728 1257.531494 1249.771118 1243.269287 1237.999756 1236.212158 1239.044189 1239.978516 1239.225464 1237.154053 1233.724976 1226.307373 1221.58667 1222.174805 1222.374268 1221.912842 1220.983521 1219.068115 1214.884277 1209.429932 1203.751465 1201.457397 1200.556641 1199.141479 1196.433838 1191.926025 1189.389648 1189.415649 1189.412231 1187.897949 1184.822388 1180.917725 1176.640381 1172.457397 1166.993286 1172.646118 1178.946777 1185.220703 1193.877075 1203.400391 1212.792847 1221.881714 1227.095825 1227.569946 1223.570801 +1215.583008 1206.180542 1196.016968 1190.900269 1185.681763 1183.151001 1179.659058 1181.863525 1199.74353 1199.940308 1197.542725 1209.550537 1214.289185 1214.622925 1237.087769 1261.340576 1281.218994 1288.413574 1281.30835 1270.388672 1285.605347 1309.789307 1331.370239 1347.785522 1355.538086 1359.112671 1363.349731 1366.537598 1366.94812 1372.553223 1379.611206 1386.367188 1391.279175 1392.926025 1393.390869 1390.037598 1388.787354 1386.992554 1382.994385 1379.587769 1369.78479 1353.245972 1346.539185 1339.75647 1330.458496 1325.113647 1327.469971 1346.516235 1361.877808 1378.978394 1379.375977 1377.910278 1378.570068 1378.158203 1376.467773 1381.161743 1383.857788 1385.243408 1385.037231 1380.973511 1376.683228 1370.437256 1364.551758 1361.203003 1366.969604 1367.279175 1365.196411 1362.229736 1358.873657 1354.562866 1346.574829 1340.720215 1341.285767 1337.489746 1334.883789 1335.796021 1336.738525 1335.349731 1333.707275 1333.69458 1331.615723 1327.523438 1324.144531 1321.989014 1318.50061 1306.578491 1317.350464 1326.170776 1329.774048 1333.367188 1336.788574 1340.23291 1343.170044 1344.079102 1326.359131 1317.233887 1325.718384 1334.134033 1336.852051 1353.230225 1358.543945 1358.952271 1356.858154 1352.734375 1349.595337 1346.749146 1343.892212 1339.374146 1334.798584 1336.865723 1341.057373 1346.759399 1355.188721 1367.556396 1381.440186 1380.7146 1378.215332 1375.040527 1371.470215 1368.471313 1367.014526 1366.281982 1365.004395 1362.67749 1358.790894 1353.27478 1349.665894 1348.731323 1348.506348 1346.420044 1341.300293 1334.819458 1328.494873 1322.64917 1317.665894 1310.677368 1305.698853 1300.009399 1297.386841 1301.516724 1304.777466 1305.421021 1305.547485 1306.142456 1306.889893 1306.218872 1291.997314 1277.138184 1268.707153 1261.21106 1262.371704 1264.047485 1266.234863 1268.993652 1276.056763 1289.065308 1300.12146 1297.211304 1283.987549 1288.571289 1299.702759 1304.768799 1305.500854 1306.830566 1310.181396 1308.957397 1302.295776 1290.908081 1291.882324 1297.640503 1306.467896 1307.595581 1307.453735 1306.688721 1304.822998 1304.957642 1307.403442 1311.375977 1313.699097 1316.791138 1320.11853 1317.028931 1316.108398 1320.554321 1319.097534 1316.50293 1329.132935 1342.789673 1343.137939 1339.549438 1342.131958 1344.198853 1338.119751 1325.725586 1312.424927 1300.813599 1293.265015 1287.331909 1286.341919 1289.792603 1292.168213 1290.536377 1293.515625 1304.629395 1311.182617 1314.16272 1317.439209 1320.177979 1320.583374 1320.788696 1319.23291 1318.105469 1322.810669 1319.994873 1316.543335 1311.950806 1314.050537 1314.646851 1311.731323 1305.82373 1304.627441 1305.958496 1306.306274 1310.609741 1315.818481 1320.061768 1322.096313 1321.404053 1319.049072 1317.997559 1317.760132 1313.949951 1309.211792 1303.33374 1293.111328 1291.966553 1292.86438 1293.717407 1294.297852 1294.177002 1293.327148 1290.067871 1289.838135 1290.876709 1292.64856 1293.737305 1293.818848 1293.813232 1293.430054 1292.246704 1290.226929 1286.913208 1282.71936 1279.711914 1277.21106 1273.319458 1267.924072 1258.781494 1253.377319 1250.055786 1252.468018 1258.855713 1269.681885 1267.417969 1263.758179 1256.307251 1254.641479 1252.850098 1248.771851 1244.260742 1243.445435 1243.135132 1242.799805 1242.177979 1240.949585 1238.860474 1235.902344 1232.254517 1231.583618 1231.514526 1231.46875 1231.516602 1231.755981 1231.8927 1231.978882 1231.741211 1231.030884 1229.214233 1229.34375 1228.769897 1228.116699 1227.936279 1228.03479 1228.506104 1229.455811 1230.247803 1230.625488 1230.947388 1230.925293 1229.638428 1228.343872 1227.530029 1226.929199 1226.478394 1226.112671 1225.558105 1225.314087 1225.070068 1225.303467 1225.461426 1225.498535 1225.338257 1225.244263 1225.180664 1225.010132 1224.868286 1224.483032 1224.136841 1223.823486 1223.771973 1223.885742 1224.244385 1224.358765 1224.548584 1224.439941 1224.266724 1224.116577 1223.887451 1223.424561 1222.553101 1220.755981 1218.910522 1217.437866 1215.468994 1213.105835 1211.030029 1212.109985 1213.475586 1214.120972 1214.185425 1214.06958 1213.571655 1212.997314 1211.962402 1210.944458 1210.050537 1208.770752 1207.806152 1207.611328 1207.209106 1204.724365 1204.061523 1204.893433 1206.725586 1206.661011 1203.351196 1198.07019 1199.203125 1202.105347 1205.208984 1207.404419 1208.172852 1208.948242 1209.580688 1210.074951 1210.407227 1210.567749 1210.647217 1210.626587 1210.648926 1210.429688 1210.236694 1210.606689 1214.465698 1217.984985 1220.177979 1221.155029 1221.15918 1220.983032 1220.775513 1221.062012 1221.277466 1220.859619 1216.837524 1211.778564 1205.847046 1208.554688 1209.977295 1210.773071 1211.394531 1211.992798 1212.352173 1212.593018 1212.785278 1212.75354 1212.705688 1212.625244 1212.652222 1212.509766 1212.322388 1212.066284 1211.704712 1211.310669 1210.812378 1210.289795 1209.708374 1209.031982 1208.070435 1207.175049 1206.276489 1205.240112 1204.28479 1203.469116 1202.765259 1201.859497 1201.074829 1200.221069 1199.331665 1198.377686 1197.603271 1196.807373 1196.055664 1194.938843 1194.486572 1194.359375 1194.842285 1195.338135 1195.819214 1196.290039 1196.500244 1196.514282 1196.431641 1196.127563 1195.629517 1195.115479 1193.481567 1193.205322 1193.268555 1193.859253 1194.39563 1194.835571 1195.075684 1195.187012 1195.280762 1195.543579 1196.17749 1196.142212 1195.506348 1194.710938 1193.608398 1192.356201 1190.450195 1188.605103 1187.323853 1186.887207 1186.597412 1186.220215 1185.86438 1185.566162 1185.264771 1184.91394 1184.550781 1184.283325 1184.05188 1183.75708 1183.228271 1182.761353 1183.268066 1184.395752 1186.141968 1187.307373 1188.47583 1189.824463 1191.220703 1192.49353 1194.012573 1195.371338 1197.008789 1198.987915 1201.07666 1203.589355 1206.343628 1211.566895 1218.978149 1231.304199 1242.837158 1252.700439 1259.90625 1260.597656 1259.991455 1259.137817 1257.234863 1253.539429 1250.157349 1247.039062 1243.891724 1242.011719 1241.476562 1240.002075 1236.048828 1232.527222 1231.497314 1233.344116 1235.791382 1236.767578 1234.647339 1231.900024 1231.777588 1235.237793 1238.07251 1239.175903 1239.275513 1238.913818 1237.952026 1236.540771 1234.776978 1232.467407 1224.359253 1219.183105 1220.157837 1219.049438 1219.856812 1223.457397 1228.494873 1232.208374 1234.649658 1237.253662 1240.509399 1244.390747 1250.889526 1258.191406 1265.531128 1272.806885 1280.129883 1286.240356 1292.929199 1296.392456 1303.178711 1309.454102 1316.439697 1329.808472 1337.919556 1338.000854 1334.47583 1329.19043 1322.013916 1317.083008 1314.579346 1313.084839 1310.803223 1309.39563 1308.117188 1306.229126 1303.748535 1302.090088 1302.490234 1303.195557 1303.091309 1300.578491 1298.208618 1295.204834 1290.965576 1286.364258 1282.714478 1278.294189 1271.272461 1265.834473 1259.663818 1252.718384 1243.385498 1242.773682 1245.677002 1246.794434 1247.022583 1246.042358 1244.880981 1241.286133 1234.971313 1230.255493 1231.459106 1233.0979 1233.636475 1232.114136 1230.014404 1224.913574 1218.564697 1215.95874 1213.461426 1208.644653 1205.208862 1200.571899 1194.796265 1195.033325 1196.603271 1196.428223 1194.087646 1189.379395 1183.892334 1178.449829 1173.224487 1167.340942 1169.390869 1175.695435 1182.4375 1190.993774 1198.259766 1203.667114 1212.992188 1221.729614 1219.338989 1214.943115 +1228.428467 1218.099487 1195.499756 1190.696167 1186.170044 1182.164307 1180.010986 1193.621216 1215.121094 1216.66626 1208.052124 1217.644775 1234.609375 1238.907959 1243.297974 1263.147339 1283.791504 1298.201416 1300.626587 1293.509644 1291.706299 1313.347412 1332.438965 1346.657104 1355.630005 1359.621338 1366.124878 1368.189819 1370.339355 1373.852905 1377.935547 1384.166748 1389.106689 1392.681396 1393.53833 1393.555786 1392.872681 1390.084473 1384.66687 1377.764038 1366.62207 1356.598145 1350.4021 1344.833496 1332.215332 1327.915161 1327.693848 1345.907471 1359.457886 1371.881836 1380.315918 1381.84314 1382.357422 1382.971436 1383.238525 1385.043579 1388.375977 1390.687744 1388.493286 1384.092773 1379.722656 1374.531006 1369.352173 1373.70459 1375.963257 1374.939331 1371.630615 1368.24353 1363.855225 1356.971436 1352.015015 1349.121216 1345.641479 1341.365234 1339.477661 1341.715454 1343.077881 1342.379883 1341.40625 1339.580078 1336.344849 1331.53833 1328.320312 1324.450562 1318.753418 1315.137939 1321.445557 1329.91333 1332.686401 1335.649658 1338.391113 1341.711304 1343.648071 1338.559204 1325.969971 1321.550415 1329.567261 1344.768188 1356.099609 1356.51001 1363.366577 1363.542114 1361.81897 1357.094604 1352.511108 1351.503662 1349.602661 1344.98291 1343.002441 1343.807251 1341.823608 1345.652222 1354.644165 1366.281738 1376.789917 1375.143066 1370.476562 1367.043213 1365.103882 1362.799561 1361.230347 1359.874756 1357.634155 1354.84436 1350.417847 1346.060059 1342.51416 1342.94043 1342.480591 1338.355103 1332.292725 1327.76062 1323.04541 1318.920898 1313.298218 1307.432251 1303.815796 1302.915283 1303.437012 1306.400024 1307.944946 1308.10498 1308.264771 1308.008789 1307.702148 1301.106567 1289.001221 1275.228027 1267.509033 1261.634277 1263.179321 1265.205444 1267.51062 1273.825439 1284.284058 1298.437134 1307.825928 1299.991089 1290.340454 1295.067505 1306.38855 1310.645874 1312.208374 1313.994385 1314.830322 1311.336426 1304.312866 1298.188965 1300.178711 1292.049927 1302.187012 1306.680054 1307.836792 1306.967407 1304.874756 1306.1521 1310.48291 1314.916016 1316.05896 1317.25293 1325.291016 1319.23877 1317.124268 1326.875 1326.163086 1322.026733 1326.647583 1338.351562 1345.522217 1350.255615 1354.032349 1348.538818 1337.977295 1321.512939 1310.25769 1300.117432 1291.441162 1287.409668 1289.799438 1293.696899 1296.636353 1293.846436 1304.860229 1310.94043 1318.901245 1327.71167 1332.243408 1330.971802 1332.67627 1333.757935 1330.58728 1327.578369 1327.84082 1331.051758 1326.164185 1321.105347 1322.649658 1322.575073 1319.63916 1313.923096 1311.720947 1311.457031 1313.791138 1318.643188 1322.143677 1325.296143 1325.16748 1323.536255 1321.956421 1320.769531 1319.563599 1316.008667 1308.867188 1300.298218 1292.260254 1294.258545 1295.621216 1296.368774 1296.516968 1295.829102 1294.209473 1291.615112 1291.224976 1291.734619 1292.737183 1292.816895 1293.764282 1294.300781 1294.415649 1294.430664 1293.962402 1291.889038 1288.057739 1283.665161 1281.069458 1276.618774 1270.697876 1259.839478 1254.811035 1252.272461 1251.265625 1257.047241 1269.455566 1269.66748 1268.231567 1258.545288 1256.592285 1255.303345 1250.664917 1245.363037 1244.432983 1243.956055 1243.473633 1242.868286 1241.620728 1239.630981 1236.765381 1233.583984 1232.706543 1232.131226 1231.852173 1231.89624 1232.33728 1232.866577 1233.024048 1232.658569 1232.292603 1232.107788 1232.288452 1231.149048 1229.82312 1230.13855 1230.285767 1230.234741 1231.153931 1232.345337 1232.562134 1232.690308 1232.333862 1230.406372 1229.213379 1228.325684 1227.693237 1227.366577 1227.033569 1226.660767 1226.549561 1226.260132 1226.443604 1226.577026 1226.527954 1226.358887 1226.109131 1225.993652 1225.870239 1225.842896 1225.604736 1225.325195 1224.979736 1224.915283 1224.968262 1225.294312 1225.43811 1225.686035 1225.783813 1225.905518 1225.874023 1225.712769 1225.053223 1223.632324 1220.620361 1218.892456 1218.088379 1215.861328 1213.169189 1212.754883 1216.831909 1217.661621 1217.016357 1216.806885 1216.811157 1216.537964 1216.027588 1214.829346 1213.354126 1211.998535 1210.746948 1209.702393 1209.31311 1208.476318 1206.916382 1206.240723 1207.669312 1208.348145 1208.462402 1207.589355 1200.355469 1200.768921 1203.339478 1205.542114 1207.116699 1208.101685 1208.860962 1209.575562 1210.387817 1211.049438 1211.582764 1212.002808 1212.220947 1212.262207 1211.832275 1211.058594 1210.928223 1213.344238 1216.043091 1218.620728 1220.606201 1221.330444 1221.48938 1221.756104 1221.921387 1222.000122 1221.511475 1217.538818 1210.3479 1206.170044 1208.900146 1210.397827 1211.326294 1212.126343 1212.864746 1213.38269 1213.798218 1214.003418 1213.985229 1213.879639 1213.863159 1213.662476 1213.47937 1213.201294 1212.838013 1212.390137 1211.894897 1211.351807 1210.677856 1210.016602 1209.341431 1208.478882 1207.336304 1206.367188 1205.308838 1204.565308 1203.847778 1203.100464 1202.401611 1201.577271 1200.609619 1199.580444 1198.489014 1197.381714 1196.506958 1195.511353 1194.787231 1194.682739 1194.845947 1195.412476 1196.146851 1196.612915 1196.929688 1197.088501 1197.144775 1197.039673 1196.616089 1196.007202 1195.545288 1194.55542 1193.859009 1193.920166 1194.679688 1195.314453 1195.61145 1195.790283 1195.819092 1195.873657 1196.37146 1196.600708 1196.49353 1196.02002 1195.692139 1195.318848 1194.175781 1192.258911 1189.900635 1188.360107 1187.491943 1187.087769 1186.671875 1186.385864 1186.037964 1185.77832 1185.428101 1185.083984 1184.861206 1184.479004 1184.2146 1183.732544 1182.821899 1183.093506 1184.132202 1185.695557 1186.82019 1188.06604 1189.316284 1190.619141 1192.050903 1193.39917 1194.553711 1196.14502 1198.411133 1200.586304 1203.007324 1205.94519 1210.181763 1215.542725 1222.495483 1233.089111 1244.655396 1254.941895 1260.846313 1261.05249 1259.877075 1258.004517 1255.564941 1252.582153 1249.469482 1245.389526 1244.4104 1245.398193 1243.638672 1238.513184 1232.954102 1232.122192 1235.962646 1239.288696 1240.316772 1238.231812 1233.084839 1232.142944 1237.164917 1240.603149 1241.879517 1242.023804 1241.59082 1240.38501 1238.507935 1236.20752 1233.291016 1227.317505 1222.84375 1222.521606 1221.269653 1219.839722 1221.962891 1227.773438 1231.821411 1234.365234 1236.841919 1240.226807 1244.162354 1249.281372 1255.069702 1261.49585 1268.799194 1274.569214 1280.274292 1285.681763 1292.565674 1301.147339 1307.125366 1311.939331 1322.763672 1331.893066 1333.341064 1332.7229 1328.910645 1324.10083 1319.657837 1317.71875 1317.211426 1315.536621 1313.849121 1311.921143 1310.094849 1307.858765 1305.465576 1306.834717 1308.456055 1308.070557 1306.39624 1302.887573 1297.518188 1292.124878 1289.698486 1286.622681 1281.999268 1275.58728 1268.907471 1261.526123 1255.07373 1245.177124 1248.815063 1252.644775 1253.822632 1253.439697 1252.387695 1250.570435 1247.592163 1242.389038 1238.999634 1238.507446 1239.231201 1239.065186 1238.191895 1236.435303 1233.39917 1228.810913 1226.520142 1225.042236 1219.114258 1212.219116 1206.476562 1201.20166 1201.319458 1203.895264 1203.565674 1199.009521 1194.302368 1186.302002 1179.54895 1172.864502 1167.95459 1164.790283 1173.861938 1181.1427 1187.039673 1192.927979 1197.314941 1202.994873 1210.606812 1207.831055 1204.786499 +1237.857788 1221.709961 1201.414551 1191.002563 1184.985474 1180.051636 1181.955566 1199.185425 1231.597656 1233.810425 1222.893799 1225.643433 1232.651367 1249.703857 1259.133179 1265.321045 1279.515137 1302.013062 1310.806885 1313.012939 1307.629883 1312.127197 1331.903442 1344.104126 1351.862915 1356.139282 1362.517456 1366.800293 1369.772339 1373.326416 1377.668091 1382.724365 1387.901001 1392.006592 1393.765503 1394.420166 1394.343018 1391.795898 1384.074219 1376.185547 1369.050293 1360.538208 1352.393066 1344.201782 1339.342896 1333.878174 1327.650757 1343.957642 1355.332764 1365.25769 1377.947021 1380.936157 1384.123779 1387.748535 1389.229736 1389.398804 1391.175903 1393.049805 1391.281372 1386.539551 1380.631348 1376.046265 1377.940918 1380.270752 1380.987793 1380.161865 1378.271606 1373.406738 1368.139526 1363.12854 1358.723145 1355.588989 1350.391479 1344.441162 1342.128662 1350.476929 1354.173096 1355.045654 1352.567017 1347.197754 1342.17395 1337.912476 1333.020508 1327.562012 1318.595337 1317.674683 1326.293579 1331.86731 1334.919434 1337.71582 1339.228149 1341.68396 1344.483154 1334.664307 1321.221436 1329.325684 1329.077637 1343.111572 1357.021362 1366.003662 1367.016968 1367.37085 1366.543945 1365.212036 1359.510498 1357.432495 1355.802612 1352.628662 1349.289673 1348.452026 1350.020142 1354.137817 1355.679565 1364.397949 1369.824341 1368.150757 1363.91333 1360.855713 1357.696655 1354.883423 1354.450562 1352.871826 1349.245728 1345.579468 1341.305298 1338.771484 1336.304321 1334.451416 1330.509277 1326.436279 1324.42749 1321.380005 1317.169189 1312.523804 1307.232056 1303.564331 1303.594727 1304.122437 1306.662109 1308.969238 1310.356812 1310.665405 1310.126099 1309.200439 1305.181152 1295.822266 1283.16687 1271.319946 1266.170044 1262.238403 1263.913208 1266.331055 1269.714722 1282.29126 1297.401245 1306.430664 1311.096802 1302.450806 1292.316162 1297.011719 1308.910034 1315.354736 1318.479248 1318.813843 1319.108032 1314.706177 1305.481201 1309.36792 1308.335815 1301.515625 1300.190186 1307.078125 1309.786133 1308.228027 1304.849609 1307.486084 1313.868042 1318.934448 1322.023071 1325.180664 1332.462036 1325.978882 1326.068481 1335.542603 1332.831543 1326.88208 1331.109863 1339.390747 1344.944336 1355.383423 1353.338501 1341.570801 1329.230347 1318.355591 1309.637695 1300.353638 1291.712769 1289.016602 1292.772827 1301.814941 1302.449585 1301.056763 1306.599976 1313.771606 1322.8927 1334.697266 1343.575317 1347.215698 1351.234253 1351.359985 1345.434082 1333.710571 1334.109009 1342.353149 1333.594971 1328.498047 1331.260254 1330.669678 1325.565308 1321.967407 1318.378174 1316.494385 1321.181274 1328.02478 1330.051514 1329.539429 1327.720093 1325.689941 1323.326294 1321.808105 1320.603516 1312.228516 1304.015869 1301.557373 1298.872803 1300.277832 1300.420898 1299.420776 1298.439819 1296.773438 1294.378418 1292.232544 1291.665527 1291.803833 1291.786743 1291.730835 1291.895386 1293.289917 1293.045288 1292.715576 1294.057373 1293.781372 1291.831421 1284.915039 1282.827637 1279.233887 1272.59314 1263.336792 1255.740723 1253.387817 1252.662231 1255.277222 1266.115967 1271.026123 1268.010254 1263.231812 1259.37854 1257.382446 1253.201172 1248.876465 1246.421875 1245.566528 1244.622803 1243.998169 1243.135742 1240.959961 1238.497437 1236.13623 1234.459229 1233.633545 1233.106567 1233.090576 1233.69104 1234.192383 1234.055664 1233.543945 1233.13562 1233.109375 1233.074829 1232.029663 1231.071777 1231.945312 1232.597534 1231.71936 1232.468384 1233.461792 1233.628784 1233.399902 1232.588623 1230.799316 1229.807251 1229.131958 1228.552612 1228.212891 1227.962891 1227.665649 1227.582275 1227.412842 1227.546631 1227.726562 1227.584473 1227.353027 1227.061401 1226.875977 1226.772705 1226.75769 1226.63916 1226.367188 1226.110474 1226.029175 1226.135864 1226.368164 1226.674438 1226.915161 1227.036621 1227.349854 1227.660156 1227.816528 1227.331787 1225.480713 1222.556152 1220.292725 1219.817749 1216.890137 1213.547485 1216.872192 1220.794678 1220.573486 1219.783936 1219.544189 1219.595459 1219.477173 1218.820557 1217.544189 1215.842041 1214.242676 1212.717773 1211.489502 1210.311157 1208.885132 1207.137085 1206.864624 1207.931763 1208.75708 1208.81897 1208.455078 1202.549561 1202.739746 1204.583862 1205.697388 1206.962036 1208.065063 1208.95752 1209.957031 1210.962402 1211.750366 1212.72583 1213.532227 1214.156372 1214.514771 1214.231934 1213.248047 1212.342773 1212.0625 1213.724731 1216.585327 1219.094727 1220.776855 1221.782471 1222.257202 1222.516724 1222.51062 1221.974609 1216.18042 1207.115845 1209.496826 1209.866821 1210.772095 1211.843872 1212.689697 1213.753906 1214.54187 1215.040649 1215.300903 1215.225464 1215.161987 1214.939331 1214.729736 1214.410156 1213.918701 1213.494995 1213.005493 1212.390747 1211.703857 1211.061768 1210.305908 1209.516357 1208.637451 1207.465332 1206.309814 1205.548584 1204.917358 1204.30249 1203.720947 1202.999878 1202.263672 1201.181885 1200.071899 1198.488037 1196.566528 1195.359619 1195.085815 1194.874878 1194.848999 1195.412231 1195.878174 1196.61853 1197.156738 1197.481567 1197.666992 1197.526367 1197.273682 1196.861572 1196.38562 1195.804688 1195.11731 1194.465576 1194.368652 1195.181274 1195.926025 1196.230713 1196.395264 1196.4823 1196.711426 1196.983887 1197.10437 1196.968018 1196.658203 1196.328979 1195.987305 1195.602661 1194.091797 1191.088989 1188.972534 1187.927124 1187.562012 1187.143555 1186.782349 1186.415527 1186.172241 1185.95105 1185.68335 1185.299683 1184.87793 1184.428467 1183.821289 1183.137207 1182.740967 1183.510498 1185.200928 1186.30835 1187.501221 1188.591309 1190.129272 1191.514648 1192.878906 1194.3479 1196.104858 1197.97937 1199.950928 1202.501465 1205.519043 1208.282349 1212.23877 1216.821533 1223.593994 1233.589844 1244.081177 1255.734131 1261.068237 1260.537964 1259.216919 1257.018311 1255.213623 1252.501221 1249.722778 1247.775757 1247.043945 1244.998657 1240.478394 1237.738281 1237.22168 1239.987915 1242.98938 1244.335571 1242.82312 1235.907104 1235.269287 1240.051636 1243.68457 1244.600586 1244.838379 1243.92041 1242.343018 1240.265503 1236.960571 1233.093506 1229.199463 1226.127197 1225.016357 1223.738281 1223.007568 1224.69812 1227.744873 1231.206543 1233.602905 1236.140869 1239.408203 1242.812622 1247.16748 1251.769531 1256.118042 1262.343994 1267.657349 1272.344482 1279.055054 1289.230835 1295.699097 1299.934692 1304.416992 1314.143311 1322.611206 1329.199951 1330.828125 1327.106201 1323.702026 1321.728027 1320.394165 1319.791626 1319.528687 1317.992188 1315.743408 1314.371216 1314.661499 1314.649658 1314.442139 1313.634766 1312.385986 1309.510254 1305.56897 1300.640015 1296.025146 1294.630859 1291.7052 1285.825684 1279.115601 1269.56189 1260.921631 1254.726807 1255.554443 1257.610962 1259.5625 1259.91272 1259.426025 1258.202026 1256.326172 1252.818481 1247.581543 1245.473145 1245.239258 1244.912842 1244.610596 1243.016602 1241.532104 1240.368408 1238.284424 1236.013184 1234.76062 1233.528564 1220.498169 1210.744507 1205.503784 1207.491455 1209.598755 1208.580688 1202.334839 1196.352661 1187.318848 1179.440063 1171.27124 1167.312622 1163.627563 1171.966187 1176.560059 1181.893433 1185.696899 1189.987061 1196.642212 1201.44397 1198.551147 1197.745361 +1230.350952 1206.660278 1193.190063 1188.9729 1183.885254 1180.961548 1184.879395 1198.535522 1223.342896 1236.640869 1244.114746 1245.845947 1245.709106 1246.060547 1261.080444 1274.022583 1287.869751 1305.115845 1317.719727 1323.693237 1323.017212 1317.305786 1329.67981 1342.854736 1347.545532 1350.820068 1355.21228 1363.299561 1367.716919 1372.10083 1376.127197 1380.200439 1385.65918 1390.644653 1393.869873 1395.197144 1395.185669 1393.68103 1384.439209 1375.390381 1370.410522 1362.165039 1352.825317 1349.374146 1347.266113 1343.008545 1332.349854 1338.09314 1347.307617 1355.955322 1363.713379 1375.440918 1383.857666 1390.42395 1392.765259 1393.42041 1394.291748 1395.199341 1393.545166 1389.848022 1381.58313 1378.068115 1381.521484 1383.352905 1383.829712 1383.147461 1381.291504 1378.380981 1374.12793 1369.772583 1364.487305 1359.435425 1357.761963 1354.452393 1354.200073 1360.390991 1362.910522 1363.808716 1360.450806 1355.020996 1348.342407 1343.029419 1337.296021 1331.47522 1318.433594 1319.125732 1326.02832 1332.092529 1336.956665 1340.461426 1340.956665 1338.658081 1336.125977 1325.960449 1324.258301 1340.527466 1343.824585 1339.375 1347.752686 1360.728638 1367.491943 1366.259521 1366.968018 1367.530518 1366.701172 1364.884766 1362.956543 1358.23877 1352.346313 1354.384155 1354.644653 1364.874512 1366.657593 1364.725708 1364.599854 1362.691406 1359.327393 1355.987061 1351.814453 1348.812866 1346.16626 1341.390259 1338.797729 1336.963867 1334.962036 1333.001953 1329.699585 1326.83313 1323.475464 1321.228149 1319.03064 1315.804688 1313.468994 1306.552856 1304.031006 1304.840698 1304.413452 1304.970947 1309.157593 1311.702148 1313.137573 1313.09082 1311.329712 1309.086182 1300.977783 1287.085327 1273.178467 1266.849121 1264.277466 1263.097656 1264.812744 1267.404297 1275.611206 1293.226196 1309.543945 1318.35144 1316.667603 1307.005859 1293.396362 1296.302368 1309.139038 1317.389526 1320.835083 1321.894043 1320.600464 1315.946411 1315.81604 1315.922607 1310.649902 1305.553223 1304.192383 1308.505493 1314.161255 1313.338379 1304.857422 1308.40625 1315.352783 1321.812378 1328.974731 1337.275391 1341.267456 1335.177856 1335.068359 1344.42688 1341.367554 1331.858276 1336.155396 1346.839478 1354.028198 1356.826782 1352.24353 1338.740967 1326.243652 1316.336548 1309.125732 1300.360474 1292.058472 1290.702271 1302.539307 1308.927002 1308.273438 1303.286621 1306.612427 1312.824463 1321.335449 1336.759277 1347.236328 1353.227051 1355.627441 1356.616211 1356.017822 1348.528931 1345.132446 1351.159302 1343.55835 1338.711304 1337.463379 1335.272217 1331.49585 1329.277954 1324.127319 1324.945557 1330.014893 1332.411865 1332.606079 1331.499756 1329.580566 1327.09314 1322.953613 1317.418945 1312.717529 1303.664795 1304.512451 1305.381226 1306.323853 1306.252441 1304.584473 1302.285889 1300.721191 1299.357178 1296.619019 1293.140137 1292.103516 1291.69397 1290.835938 1289.204468 1286.121094 1281.994995 1282.474487 1282.886475 1282.740479 1282.131104 1281.152344 1280.510376 1280.660522 1277.661621 1270.28772 1264.007324 1256.389038 1254.642944 1253.612915 1254.499146 1259.147461 1270.832153 1269.259155 1264.979126 1260.909058 1256.095947 1254.027832 1251.117554 1248.664551 1247.192627 1246.082275 1245.039062 1243.945435 1241.890991 1239.84729 1238.05542 1236.63269 1235.76709 1235.362671 1235.545654 1235.552368 1235.399658 1234.824707 1234.375 1234.153198 1234.332764 1233.765015 1232.425415 1232.242554 1233.531372 1234.036499 1233.738159 1234.045898 1234.304443 1234.009155 1233.384766 1231.987915 1231.235718 1231.126953 1230.039795 1229.375244 1229.049316 1228.77356 1228.582153 1228.485229 1228.560791 1228.737305 1228.716919 1228.538574 1228.233765 1227.834473 1227.654297 1227.613647 1227.611328 1227.526611 1227.303833 1227.095825 1227.119995 1227.229614 1227.484375 1227.795166 1228.049316 1228.284302 1228.653564 1229.338989 1230.050049 1230.139893 1228.583862 1226.234985 1223.442383 1222.091431 1217.883179 1214.989624 1219.342163 1222.641357 1223.339233 1222.931396 1222.764771 1222.536865 1222.194214 1221.435913 1219.974731 1218.078247 1216.349731 1214.481445 1212.753052 1210.962158 1209.045654 1207.296997 1207.186035 1208.232544 1208.973999 1209.021973 1208.764893 1204.498779 1204.583984 1205.851685 1206.268555 1207.016235 1208.161377 1209.402832 1210.64978 1211.753662 1212.771606 1213.843994 1215.115967 1216.296387 1217.369995 1217.307495 1216.365234 1214.894287 1213.726685 1213.337036 1214.578125 1217.30481 1219.71582 1221.759888 1222.566406 1223.00769 1222.988037 1221.867798 1214.30896 1207.432983 1208.772339 1210.036133 1211.064575 1212.266113 1213.526611 1214.783691 1215.876343 1216.488037 1216.730957 1216.675659 1216.41394 1216.125122 1215.672607 1215.175537 1214.662231 1214.104492 1213.380127 1212.724609 1212.046875 1211.274536 1210.494385 1209.580933 1208.443848 1207.446533 1206.44165 1205.907837 1205.451294 1204.99646 1204.47229 1203.816772 1203.003296 1201.989014 1200.660522 1199.039673 1196.761597 1195.622925 1195.537598 1195.14856 1195.398682 1195.97876 1196.613525 1197.113647 1197.631104 1197.956055 1198.004761 1197.935303 1197.571411 1197.052124 1196.511597 1195.993286 1195.194824 1194.709229 1194.678711 1195.486694 1196.296265 1196.692627 1197.015015 1197.239746 1197.445923 1197.625488 1197.651855 1197.494385 1197.202271 1196.871094 1196.485474 1196.111328 1195.322998 1191.94104 1189.100464 1188.38269 1188.011353 1187.613281 1187.294556 1186.987549 1186.735107 1186.525024 1186.214233 1185.803833 1185.367798 1184.870728 1184.185791 1183.533447 1182.927124 1182.770874 1184.508667 1185.680786 1186.734253 1188.030396 1189.424805 1190.788574 1192.245239 1193.808594 1195.261963 1196.979858 1199.021606 1201.577271 1204.192017 1206.414429 1208.890503 1212.658569 1217.16272 1224.324219 1234.596313 1244.579712 1256.889526 1261.25769 1260.350464 1259.003784 1257.707886 1256.130981 1253.672852 1250.849609 1247.882935 1244.760498 1242.256836 1241.456543 1242.052979 1244.324585 1246.036255 1247.037109 1245.994019 1243.070801 1241.089355 1243.450195 1245.949219 1246.869995 1246.874512 1245.833618 1244.588867 1242.123657 1238.109131 1233.259644 1229.859985 1228.419556 1228.11731 1227.182007 1226.754639 1227.548706 1228.772827 1230.204834 1232.452515 1235.092163 1238.079956 1241.358276 1244.726074 1248.463867 1252.289673 1255.015015 1260.17688 1266.895996 1275.804321 1282.258789 1290.268433 1291.069824 1296.614502 1304.991577 1311.2771 1316.148071 1319.765015 1320.363647 1321.30603 1322.231079 1322.618408 1322.623901 1322.657959 1321.452393 1319.34314 1318.769287 1319.29126 1319.618408 1319.243164 1318.438843 1317.034668 1313.496582 1307.221924 1302.79834 1299.820312 1297.107056 1294.232544 1288.133667 1279.778564 1268.083984 1264.614258 1261.660889 1263.665283 1264.817139 1265.353516 1265.724609 1265.157227 1263.259644 1260.847778 1257.814209 1253.785034 1251.944214 1251.154297 1250.565186 1249.849854 1248.645386 1247.329224 1246.90918 1246.75061 1245.692505 1243.625854 1238.302856 1228.360596 1216.929932 1211.571167 1211.266846 1210.660278 1206.982056 1201.185425 1194.567993 1186.296753 1178.394775 1170.598511 1166.609253 1163.798218 1164.629517 1171.252808 1176.477417 1179.492188 1183.566162 1191.449829 1193.043579 1192.127319 1191.111206 +1232.47522 1213.508667 1193.646606 1188.707764 1183.282715 1181.481812 1184.645996 1194.577271 1207.605469 1222.175293 1241.343994 1257.343018 1258.517456 1263.623047 1264.162476 1280.554199 1299.787109 1313.556641 1325.587891 1331.134521 1333.341187 1330.933472 1328.170532 1340.681885 1345.534668 1349.686646 1354.749634 1361.933472 1367.169067 1371.05249 1374.405518 1376.888062 1383.993774 1389.893555 1394.402954 1396.612915 1396.658936 1393.95105 1386.099854 1376.614014 1371.19104 1362.30481 1353.141235 1355.96814 1355.508789 1347.984375 1338.312988 1343.284546 1344.917603 1352.624512 1360.253296 1369.119385 1379.973511 1391.398315 1395.025757 1397.289673 1398.915283 1398.900513 1396.648926 1393.074463 1387.610107 1385.030029 1386.706421 1387.597412 1387.120361 1385.789429 1384.033447 1381.81543 1380.210815 1378.012085 1368.240112 1365.452515 1368.438721 1367.877686 1364.529663 1368.23999 1370.102173 1369.469971 1366.368774 1358.903687 1351.824951 1346.392822 1340.4198 1331.005859 1322.150757 1321.48938 1326.966309 1332.209229 1338.983032 1342.676636 1343.22644 1334.141235 1326.25647 1329.828735 1335.304443 1351.863281 1357.513672 1356.03418 1350.787964 1353.378662 1359.669067 1363.936157 1366.497314 1368.811035 1369.440308 1369.072144 1368.091431 1366.500977 1361.355103 1361.314575 1359.591187 1361.169556 1362.374023 1361.054199 1359.223755 1356.300903 1354.419189 1351.27063 1346.947876 1343.98877 1339.550415 1331.779053 1329.575928 1329.127563 1328.864258 1328.226074 1325.366089 1319.130981 1316.355469 1316.437378 1315.821899 1315.487793 1315.379761 1311.378296 1310.045898 1308.958252 1307.666992 1308.526978 1311.927856 1314.744141 1316.038696 1315.554321 1311.319458 1303.807983 1290.022827 1273.605835 1264.375977 1263.711304 1263.276245 1264.519409 1266.214844 1268.348022 1281.871216 1302.955078 1318.905151 1321.880371 1318.941406 1308.366699 1297.957886 1293.347534 1307.238647 1317.556519 1322.922363 1325.218628 1324.165039 1319.609375 1321.248779 1319.927368 1314.484497 1306.95105 1304.175049 1310.164673 1317.326416 1318.178955 1312.692383 1312.153076 1314.584106 1319.835571 1330.269775 1342.236572 1347.431152 1346.617798 1347.947144 1352.609619 1350.162354 1339.722656 1339.377197 1349.985229 1358.700806 1357.04248 1349.747192 1338.287354 1325.292725 1314.521118 1308.248779 1299.507324 1292.040527 1295.667969 1308.966919 1314.914307 1315.817505 1309.949707 1308.374268 1312.641968 1316.235474 1327.67334 1342.941284 1353.238037 1356.631226 1357.667358 1357.751587 1356.004883 1355.554077 1355.557739 1352.564697 1345.019775 1343.43811 1341.498657 1338.15686 1333.377075 1328.273438 1332.487793 1334.210815 1334.880371 1334.207886 1332.87207 1331.07312 1328.176025 1322.068481 1315.289429 1305.122925 1305.199341 1307.128052 1308.160156 1309.196167 1308.925781 1307.253784 1304.279175 1303.162598 1302.908691 1301.807251 1298.283936 1295.416748 1293.903198 1291.888428 1288.372192 1283.362061 1280.134033 1279.142944 1278.589111 1277.553223 1275.989502 1272.658569 1271.825562 1273.291138 1272.455811 1268.280396 1263.487305 1257.32312 1256.986938 1257.086914 1255.151978 1255.616333 1265.812988 1269.600586 1267.921753 1263.299805 1259.31189 1255.740234 1252.977905 1250.641357 1248.808594 1247.31604 1245.871216 1244.20459 1242.460449 1240.938599 1239.632812 1238.608276 1238.015259 1237.756226 1237.845093 1237.77417 1236.983643 1235.716553 1235.385498 1235.619019 1235.536987 1235.30542 1235.196411 1235.108398 1235.51062 1236.086548 1236.09668 1235.875244 1235.376099 1234.364746 1232.828125 1231.741211 1232.126099 1232.405884 1231.026733 1230.143799 1229.77356 1229.693481 1229.384766 1229.353271 1229.720581 1229.899292 1229.790771 1229.4104 1228.828735 1228.570679 1228.425781 1228.408325 1228.427612 1228.311401 1228.177734 1227.983154 1228.011719 1228.251343 1228.495483 1228.854614 1229.286865 1229.521851 1229.655151 1230.354126 1231.566528 1232.190918 1232.058716 1229.973267 1226.226318 1222.419067 1217.701172 1217.300171 1220.963623 1224.751953 1226.248657 1226.53064 1226.350586 1225.73999 1224.857788 1223.574951 1221.856445 1219.761475 1217.810059 1215.616089 1213.402954 1211.235718 1208.966064 1207.303955 1207.495361 1208.564331 1209.244629 1209.453491 1208.824707 1205.753174 1207.219849 1207.720337 1207.85791 1208.157837 1209.281982 1210.503784 1211.667114 1212.738647 1213.770264 1214.980103 1216.408813 1218.195801 1219.448608 1219.868774 1219.293823 1217.932495 1216.113281 1215.01416 1214.305298 1214.80249 1218.679932 1221.528564 1222.770996 1223.237427 1223.218628 1221.802002 1212.958862 1208.359253 1209.171021 1210.127319 1211.371582 1212.834473 1214.450195 1216.062378 1217.404297 1218.057617 1218.273804 1218.146362 1217.697632 1217.177612 1216.420532 1215.870605 1215.364258 1214.669556 1214.071533 1213.294922 1212.584717 1211.72644 1210.72876 1209.550049 1208.337646 1207.417358 1206.730347 1206.370361 1206.212402 1205.892578 1205.359619 1204.740356 1203.843384 1202.816895 1201.460938 1199.951172 1198.328979 1197.137939 1196.680298 1196.029907 1196.210815 1196.762451 1197.291382 1197.811523 1198.11377 1198.308228 1198.259033 1198.093384 1197.610718 1197.148438 1196.425903 1195.815308 1195.189209 1194.794434 1194.953735 1195.59314 1196.612793 1197.173218 1197.665771 1197.964844 1198.137329 1198.248535 1198.211426 1198.006714 1197.636719 1197.325684 1196.827515 1196.390747 1195.685669 1192.672852 1189.643311 1188.891724 1188.561768 1188.195435 1187.80127 1187.47168 1187.39502 1187.087158 1186.785645 1186.375366 1185.894897 1185.343628 1184.744751 1184.271362 1183.872803 1182.862183 1183.717163 1184.755127 1186.105103 1187.41687 1188.730225 1190.208008 1191.750854 1193.130981 1194.409546 1195.57312 1198.207397 1200.596924 1202.761108 1204.69458 1206.375732 1208.579346 1213.300659 1217.791504 1225.854614 1235.473877 1248.278809 1259.633789 1261.206299 1260.256714 1259.176025 1257.865234 1256.352539 1252.909424 1248.42395 1244.346802 1243.145386 1243.6521 1245.354492 1247.489014 1249.643311 1250.315796 1248.637451 1244.877686 1242.91394 1245.049683 1247.703735 1248.789429 1248.782715 1247.837158 1246.452881 1244.337158 1239.438477 1233.393188 1230.525269 1230.592285 1231.792236 1229.749512 1229.800415 1230.874512 1230.269897 1230.416138 1231.107178 1233.53833 1236.34082 1239.335327 1242.307007 1245.479736 1248.832642 1252.551147 1257.583618 1265.738525 1274.614502 1282.349609 1285.091064 1286.546875 1289.907715 1295.387207 1301.065918 1304.853516 1308.909546 1312.192139 1317.717651 1322.088867 1324.362427 1325.970581 1326.225098 1325.283569 1324.125 1323.262207 1322.757935 1322.454224 1322.07373 1321.212402 1319.791382 1317.638672 1311.033936 1305.181152 1299.966187 1296.665283 1293.678345 1286.863892 1277.056885 1267.376953 1269.37207 1271.607422 1272.428711 1272.643311 1272.257324 1271.876831 1270.86499 1268.414429 1265.541382 1262.387329 1258.400146 1257.309814 1256.960815 1256.164917 1255.037109 1254.028931 1253.638794 1253.687012 1252.839111 1251.465576 1247.811279 1241.531006 1229.708984 1219.711914 1216.171875 1212.875244 1210.67749 1206.283569 1199.214355 1191.922363 1184.042725 1176.394653 1170.259277 1165.876709 1162.820435 1162.091553 1168.019531 1172.58728 1175.221802 1181.136108 1185.580566 1185.403564 1184.822754 1186.215088 +1242.861328 1219.010742 1195.199585 1189.018799 1183.850708 1181.894653 1187.572998 1200.411377 1215.112671 1224.204346 1233.876953 1245.721313 1261.371948 1272.6875 1276.038208 1289.382202 1309.227173 1325.439697 1337.141602 1342.059204 1342.488647 1339.151367 1337.181519 1339.391846 1343.345703 1349.012207 1354.942871 1361.06604 1366.900024 1370.431885 1374.726562 1378.312378 1385.674194 1392.469604 1396.449097 1399.046021 1399.181885 1395.601929 1388.367188 1379.672241 1371.454956 1364.069824 1363.597046 1363.922974 1360.250854 1353.406128 1340.667969 1353.637451 1358.274048 1358.051147 1359.012573 1363.622559 1374.799438 1389.20166 1395.239868 1400.268311 1403.180176 1402.803589 1400.068115 1394.142334 1389.542358 1391.142578 1392.075195 1391.562256 1390.169189 1388.412476 1386.631104 1385.343506 1383.821045 1382.22168 1379.156006 1374.062744 1375.147461 1376.195557 1375.296021 1376.637817 1375.836792 1372.768066 1368.85022 1362.69458 1353.881226 1347.89209 1341.876587 1334.949585 1332.427124 1329.919067 1328.29895 1334.94104 1339.824829 1343.578003 1344.036865 1330.752075 1330.192261 1346.201782 1353.234863 1357.334595 1362.79834 1364.487671 1362.9646 1359.496704 1360.75647 1364.546265 1367.223999 1370.143555 1371.85376 1372.214111 1371.279785 1369.990601 1368.313843 1367.01123 1363.641357 1361.534302 1360.420776 1357.740601 1355.090454 1352.036865 1350.591064 1346.527832 1341.510132 1339.763306 1332.661987 1329.130981 1329.035522 1329.575684 1329.456421 1329.014893 1327.580566 1323.679932 1320.581787 1317.937012 1316.815308 1318.444946 1319.385498 1319.195679 1318.067993 1314.935913 1313.55542 1313.484375 1315.371094 1318.192139 1319.143188 1318.1073 1312.529297 1299.132568 1281.416382 1268.526123 1264.979858 1264.655273 1264.633057 1266.310303 1267.564209 1276.431396 1287.141602 1306.143066 1321.040771 1324.537964 1320.287109 1309.531128 1306.48999 1302.770752 1303.865479 1316.26355 1323.998657 1328.750244 1328.712646 1327.463501 1326.309204 1322.737305 1317.314819 1308.321411 1304.087646 1310.421143 1317.531982 1319.793945 1316.591553 1315.760986 1316.881958 1322.22937 1326.520874 1331.825195 1348.879639 1355.635132 1356.474976 1357.761353 1357.667114 1348.145264 1347.09436 1354.186157 1362.783936 1358.288696 1349.275024 1337.878052 1325.370361 1314.535034 1307.303711 1299.184082 1292.802734 1302.49707 1314.199219 1319.011353 1320.820068 1319.955688 1317.47998 1314.252808 1314.441162 1322.391968 1342.761475 1351.078003 1356.907959 1358.218506 1358.731812 1358.520752 1357.381958 1354.80603 1351.661011 1348.819946 1347.031006 1345.308838 1343.480469 1339.579102 1336.018311 1338.035156 1338.568237 1337.316772 1335.648926 1333.661255 1331.558228 1328.237671 1321.213013 1315.929321 1308.765381 1308.570679 1310.168945 1311.264038 1312.616577 1312.658936 1310.750977 1307.257568 1306.498047 1306.956543 1306.55603 1305.68042 1301.857056 1297.921265 1294.985352 1292.080444 1287.077026 1282.970459 1280.108765 1278.134033 1276.307251 1273.544922 1269.68335 1268.003906 1267.422607 1267.829224 1266.628906 1263.608887 1261.008179 1259.43335 1257.701416 1256.404053 1256.398926 1262.2323 1268.693604 1269.414185 1266.888428 1261.78125 1256.371216 1254.558838 1252.291138 1250.264893 1248.2854 1246.384277 1244.169922 1242.908447 1241.940796 1241.04541 1240.416504 1239.897949 1239.877197 1240.198242 1240.417969 1239.42627 1237.202637 1236.438477 1236.50415 1236.658691 1237.284058 1237.844604 1238.261353 1238.783203 1239.068359 1238.837769 1238.203003 1237.018799 1235.431763 1233.55957 1232.272095 1232.800537 1232.473022 1231.282715 1230.730957 1230.665771 1230.796631 1230.642578 1230.388916 1231.064087 1231.113525 1230.782349 1230.084717 1229.568604 1229.26001 1229.040894 1228.991821 1229.165649 1229.106689 1228.923584 1228.92395 1228.947021 1229.158691 1229.618896 1229.896606 1230.52417 1230.817505 1230.587158 1231.233643 1232.371094 1232.871704 1232.929199 1232.49707 1227.870239 1221.824951 1217.101807 1220.018677 1226.8927 1228.709351 1229.17334 1230.363892 1230.438965 1229.117065 1227.328613 1225.478882 1223.598511 1221.201416 1218.695679 1216.310181 1213.902344 1211.297119 1208.463989 1207.43042 1208.148071 1209.031738 1209.612427 1209.700562 1209.05957 1207.380005 1208.264038 1208.968384 1209.54248 1209.962402 1210.84082 1211.875488 1212.916138 1213.849609 1214.838257 1215.942139 1217.385742 1218.88269 1219.963135 1220.241211 1220.309937 1220.063843 1218.821045 1217.110107 1216.021973 1215.679688 1217.038452 1221.703979 1222.852661 1223.361572 1223.267822 1221.732422 1214.460205 1208.974121 1209.630493 1210.555664 1211.794189 1213.49353 1215.577881 1217.604126 1218.935913 1219.527344 1219.572021 1219.283936 1218.674316 1218.016846 1217.34668 1216.810303 1216.212158 1215.569214 1214.860962 1214.115479 1213.315674 1212.452637 1211.427124 1210.109497 1208.552124 1207.519775 1207.136597 1207.008301 1206.910767 1206.757202 1206.243652 1205.559204 1204.758057 1203.649048 1202.4729 1201.198364 1199.984375 1198.812744 1198.174316 1197.692505 1197.525879 1197.789062 1198.164062 1198.360352 1198.618896 1198.650513 1198.50647 1198.151123 1197.547119 1196.935181 1196.248535 1195.564453 1195.046387 1194.868164 1195.149414 1195.809326 1196.966797 1197.627686 1198.176758 1198.509277 1198.749023 1198.775269 1198.709717 1198.500732 1198.117676 1197.656738 1197.190674 1196.610229 1195.727295 1192.527832 1190.002563 1189.341064 1188.977051 1188.674683 1188.382568 1188.104614 1187.914429 1187.635742 1187.317383 1186.93103 1186.35376 1185.863281 1185.360229 1184.888428 1184.402832 1183.799561 1182.854492 1183.904907 1185.523682 1186.777832 1188.194336 1189.559082 1191.210815 1193.154175 1194.904419 1196.494507 1198.086548 1199.94751 1201.691284 1203.574585 1205.175415 1207.300171 1211.288452 1215.231079 1219.60791 1228.157715 1238.184692 1248.006714 1257.730591 1260.556152 1259.973145 1258.849243 1257.792114 1254.465454 1248.746094 1244.057251 1244.07605 1246.356079 1249.026733 1251.99707 1254.110962 1254.882324 1253.540649 1248.052734 1243.523315 1246.30188 1249.841553 1251.332886 1251.161743 1250.024292 1248.160889 1246.01416 1240.84729 1233.267578 1231.24585 1232.237061 1233.180298 1231.341919 1231.517944 1232.921143 1232.252686 1231.14502 1230.843262 1231.89563 1234.579224 1237.371216 1240.074219 1242.799561 1246.865112 1251.141724 1255.903809 1263.624512 1270.877075 1279.321777 1280.403809 1281.514282 1284.249146 1287.611938 1292.651123 1295.587646 1297.217163 1301.123535 1311.73645 1320.372314 1325.650024 1329.332153 1329.891235 1329.348145 1328.18103 1327.160889 1326.496338 1325.560303 1324.470947 1323.344482 1321.50769 1318.728882 1311.797241 1304.154297 1294.956421 1292.40564 1290.137085 1283.730835 1278.695312 1279.542236 1280.71167 1282.127808 1282.134277 1281.478882 1279.86145 1278.25061 1276.270264 1273.277466 1270.191895 1267.700195 1265.313354 1263.828491 1262.677246 1261.894043 1261.064087 1260.08728 1259.845459 1259.473633 1258.504639 1257.364624 1252.344727 1243.925049 1232.601318 1221.626709 1215.992188 1210.407227 1209.045044 1205.023438 1197.921631 1190.212646 1182.317993 1174.55127 1169.155396 1164.487183 1161.760986 1160.526733 1163.927368 1167.493774 1169.186157 1172.455078 1177.153198 1177.549316 1177.959839 1179.357666 +1238.87085 1213.420776 1193.25293 1189.057129 1184.481201 1182.123657 1191.540405 1212.05896 1230.86438 1251.930298 1255.361694 1260.005371 1270.827026 1275.911743 1288.182373 1300.377197 1321.934937 1339.822144 1349.294434 1351.461304 1351.431641 1347.656128 1345.366089 1344.084839 1341.397339 1348.484741 1353.947754 1359.42688 1364.87793 1370.162842 1376.257568 1382.043701 1389.413574 1395.346802 1399.418945 1401.407349 1402.208374 1399.969238 1390.961426 1383.092163 1375.01355 1366.10376 1372.081787 1370.555542 1364.977417 1354.569336 1349.450195 1360.26416 1366.875854 1369.482544 1367.053223 1366.31897 1375.223267 1385.218628 1394.639893 1403.208496 1407.504272 1408.096802 1404.875732 1399.087769 1394.667114 1395.883423 1396.708252 1396.110596 1394.312744 1391.733643 1389.278442 1388.37146 1387.665283 1386.174438 1383.143921 1379.918701 1381.694946 1383.388184 1383.759521 1383.510864 1380.419312 1376.589844 1371.496582 1364.873047 1355.604492 1349.275757 1342.096069 1341.920044 1341.286499 1338.657837 1332.506592 1339.715454 1342.782715 1343.851196 1342.119141 1328.975342 1339.947388 1351.080566 1357.50647 1361.790405 1366.384277 1369.567383 1370.10437 1368.659912 1365.922363 1364.96167 1367.22229 1371.492188 1374.855957 1375.607666 1375.03894 1374.078003 1372.23291 1369.464478 1366.119019 1363.048828 1361.129761 1357.489746 1353.518799 1352.723633 1351.678833 1348.748169 1344.821167 1342.778809 1340.427002 1336.061523 1334.989136 1334.723999 1334.38623 1333.606323 1332.560303 1330.497681 1327.249878 1324.098145 1322.970947 1323.941162 1324.707886 1324.167847 1322.859131 1319.949463 1318.726196 1317.218872 1318.975098 1321.564453 1321.794067 1320.072266 1313.850342 1295.710449 1277.645752 1265.4646 1265.531738 1265.806519 1266.176514 1268.04895 1276.59021 1285.862671 1292.899414 1309.211548 1322.136841 1329.9198 1324.707153 1316.389648 1319.112915 1310.038574 1302.677368 1313.617188 1326.17627 1331.870728 1332.560913 1332.108276 1330.461304 1326.269897 1319.140747 1309.923706 1305.016479 1311.521118 1316.975464 1324.50708 1323.266602 1317.728149 1317.281128 1328.006714 1332.420776 1330.297974 1338.177979 1355.10022 1358.255493 1362.329834 1362.768921 1358.381958 1361.279297 1367.474487 1367.62146 1361.816772 1348.810791 1337.245972 1325.329468 1314.792969 1305.516968 1297.501465 1297.283325 1307.630005 1318.690308 1322.560303 1324.411987 1323.543579 1320.024414 1315.805786 1315.141113 1321.156494 1333.072388 1346.384888 1356.066895 1358.450073 1359.748413 1360.217651 1359.007568 1355.784424 1353.312134 1351.27771 1349.889282 1348.442749 1346.255859 1342.86499 1340.917236 1342.923218 1341.384033 1339.360474 1336.958984 1334.12915 1331.158325 1326.492676 1320.777588 1316.378418 1312.891724 1312.064697 1313.037964 1314.43103 1316.099731 1316.855225 1315.625366 1313.680908 1312.839111 1311.970581 1310.889526 1308.520752 1305.064087 1300.549561 1297.02771 1293.980225 1289.87085 1285.619629 1282.335815 1279.929932 1276.857422 1273.852051 1270.962646 1268.815674 1267.292358 1266.2771 1265.698364 1264.62915 1262.731812 1260.427002 1258.415039 1257.514526 1259.35144 1263.781738 1268.009644 1269.430664 1269.363281 1266.776733 1260.774902 1256.542358 1254.21106 1251.739746 1249.724976 1247.553345 1245.477905 1244.390503 1243.486206 1242.738403 1242.099609 1241.651001 1241.776489 1242.824585 1243.32251 1242.414917 1239.667236 1237.469238 1237.303345 1238.143311 1239.455322 1240.459595 1240.989868 1242.019409 1242.488647 1242.010864 1240.703125 1238.852417 1236.902954 1235.098999 1233.785278 1232.628906 1231.929688 1231.426636 1231.202026 1231.437744 1231.823242 1231.874756 1231.99292 1232.522705 1232.197144 1231.565796 1230.697876 1230.066284 1229.719116 1229.623901 1229.643921 1229.794556 1229.966187 1229.9729 1229.782715 1229.662964 1229.905762 1230.400146 1231.110596 1231.704224 1232.0271 1231.591187 1231.994141 1233.074707 1233.300415 1233.328003 1232.560425 1225.30249 1219.416504 1219.683228 1229.520996 1232.946289 1232.062134 1232.044678 1233.04248 1232.837036 1231.578491 1229.310791 1227.645508 1225.186401 1222.170776 1219.254272 1217.091187 1214.647095 1211.775269 1208.783081 1207.538086 1208.463867 1209.468506 1210.243042 1210.281494 1209.631348 1209.147217 1209.246094 1210.391235 1211.054077 1211.669922 1212.626831 1213.467529 1214.29834 1214.948486 1215.670288 1216.531494 1217.560303 1218.810059 1219.837402 1220.372803 1220.527466 1220.713745 1220.219238 1219.237671 1217.743286 1216.661621 1217.221558 1221.827881 1222.813354 1223.145508 1223.004028 1221.980957 1218.098877 1212.217163 1210.143799 1210.959106 1212.230103 1214.294922 1217.141357 1218.949463 1220.043945 1220.588989 1220.60791 1220.304321 1219.658569 1218.910034 1218.285889 1217.778076 1217.313599 1216.670898 1215.90918 1215.116943 1214.477905 1213.529419 1212.534058 1211.180786 1209.798096 1208.585327 1207.979126 1207.877197 1207.732666 1207.432739 1207.051758 1206.343628 1205.542603 1204.530029 1203.416138 1202.425293 1201.433105 1200.476929 1199.855591 1199.257446 1199.065918 1199.025757 1199.083618 1199.111694 1199.16394 1199.021484 1198.640503 1198.119263 1197.350342 1196.510132 1195.634521 1195.352051 1195.128784 1195.371704 1195.635254 1196.229614 1197.335327 1198.073242 1198.691162 1199.042236 1199.31543 1199.27356 1199.116333 1198.840698 1198.351196 1197.856934 1197.309814 1196.435181 1194.5802 1191.035156 1190.070068 1189.765015 1189.464355 1189.27356 1188.987793 1188.723633 1188.512207 1188.213623 1187.841431 1187.395752 1186.853394 1186.401123 1185.940186 1185.375244 1184.834961 1184.340576 1182.717285 1183.843506 1185.234619 1186.363403 1187.522095 1188.993896 1190.918213 1192.97937 1195.022705 1196.740356 1198.054321 1199.294922 1200.889526 1202.625488 1204.60498 1207.105103 1209.728638 1212.555298 1216.462158 1220.542236 1231.063477 1237.763672 1244.345093 1254.475708 1259.311157 1259.221802 1258.289917 1255.622192 1249.624023 1244.496948 1246.5979 1249.442017 1252.924805 1256.369629 1257.9021 1258.25415 1257.547485 1254.704224 1248.183716 1249.692139 1252.840088 1254.177979 1254.0979 1252.229614 1249.685913 1246.716919 1242.714111 1233.62146 1231.704468 1232.890259 1234.200195 1232.469482 1232.219604 1234.402466 1234.827515 1232.854614 1230.924927 1230.946167 1232.805298 1235.648193 1238.662598 1242.028687 1245.810425 1249.734375 1254.471069 1260.084961 1265.981201 1270.724731 1274.217041 1276.584473 1277.828491 1279.209839 1282.421387 1283.255737 1283.838257 1294.141357 1303.534058 1315.599365 1325.472778 1331.475708 1332.396484 1332.247314 1331.599243 1330.675903 1329.630859 1328.158203 1326.885498 1325.698486 1322.874878 1318.798218 1310.758789 1303.608887 1296.425415 1293.753052 1291.804688 1289.04187 1285.864624 1287.244019 1287.526367 1287.428101 1286.837402 1285.75 1284.525879 1283.363892 1281.531372 1278.309448 1275.192993 1272.370605 1270.626465 1269.333618 1268.437622 1267.693115 1267.520142 1267.393799 1266.467285 1264.767578 1261.932007 1258.897095 1253.755249 1243.447998 1234.854614 1224.564453 1213.885254 1205.591675 1203.698242 1199.666748 1194.666504 1187.024414 1179.526245 1172.171265 1167.210083 1162.366455 1160.22937 1159.140991 1159.700562 1161.540283 1163.52356 1165.998657 1168.287964 1168.909546 1169.793091 1171.648193 +1238.525146 1204.619629 1193.111328 1189.456787 1185.208984 1182.062134 1192.322998 1213.050537 1230.558472 1253.384033 1266.091064 1276.485352 1286.602295 1294.141479 1302.312744 1314.143311 1332.013916 1350.796509 1360.506104 1364.269043 1361.754639 1356.795532 1352.928223 1349.431641 1347.374634 1349.294678 1352.405029 1357.41272 1363.717407 1370.7948 1379.109131 1386.893921 1393.55896 1399.591675 1403.057983 1404.088135 1405.150635 1405.266968 1392.685669 1384.076172 1377.1073 1374.97229 1380.434937 1378.064331 1368.776123 1352.895508 1352.593018 1367.682861 1373.978271 1376.717896 1376.914917 1374.951782 1376.926514 1387.35144 1396.802979 1405.188965 1413.13208 1415.258057 1413.392578 1403.067505 1400.071167 1401.476074 1403.071777 1401.377563 1399.61377 1396.975342 1393.769409 1392.563721 1391.845215 1390.348877 1387.85376 1386.825317 1388.181274 1390.238892 1391.670654 1390.412109 1385.327148 1379.459595 1373.206909 1366.009644 1354.988281 1351.565552 1349.646606 1347.858643 1346.44873 1343.984985 1341.466675 1342.047363 1344.379883 1343.983032 1339.995483 1332.584839 1344.94104 1353.240601 1359.029541 1363.44519 1368.009521 1372.660522 1374.622314 1373.737549 1370.454224 1366.478027 1365.599976 1372.412964 1377.677368 1378.664795 1378.566406 1377.90564 1375.572266 1372.419556 1367.835815 1364.986694 1363.719727 1362.640259 1360.813477 1358.929688 1356.791382 1353.794067 1350.279785 1347.181152 1344.214966 1341.122437 1341.265991 1339.856689 1339.891602 1339.376587 1338.421021 1336.542236 1333.511963 1329.917969 1328.558716 1330.074585 1330.56543 1330.095093 1328.629761 1325.903809 1323.989502 1323.579712 1324.500854 1325.936646 1325.009644 1321.747681 1315.759888 1293.563843 1279.189697 1265.889771 1266.229858 1266.778076 1267.432007 1278.578491 1285.265503 1290.827881 1303.363525 1316.875 1328.18689 1332.461182 1330.514648 1324.301514 1322.042603 1317.580078 1305.959839 1313.147949 1327.905151 1334.015015 1335.715088 1335.184082 1333.654419 1330.252686 1320.658813 1311.943115 1309.753052 1315.559448 1320.368408 1330.560669 1331.981201 1326.642456 1316.001465 1337.297119 1344.714722 1347.187012 1346.539673 1347.653564 1354.098267 1366.290039 1367.662354 1367.215454 1368.042847 1368.586182 1368.079346 1361.465942 1349.840088 1335.572632 1325.141724 1316.564453 1303.612915 1296.889771 1301.123047 1312.327026 1320.962036 1325.483276 1328.765015 1327.277832 1326.020996 1320.583008 1316.093384 1318.81665 1330.042847 1340.240967 1352.280273 1358.09375 1361.396729 1362.474487 1361.479248 1359.187378 1356.407715 1354.201782 1353.218872 1351.978149 1349.414673 1345.848511 1344.415894 1344.908691 1343.217773 1340.874756 1337.920532 1334.018066 1329.913574 1324.162476 1318.777466 1315.519775 1314.466309 1314.937866 1316.453979 1317.901367 1319.505493 1319.977905 1319.326416 1318.45874 1317.982178 1317.510742 1315.967896 1311.159546 1305.147583 1301.744751 1297.98877 1294.935059 1291.861328 1286.716797 1283.512817 1281.295532 1278.2854 1275.149292 1272.405029 1270.203003 1268.990723 1267.473022 1266.912964 1266.966187 1265.009155 1261.185181 1258.104492 1259.279297 1261.304932 1264.539917 1267.143433 1268.830811 1269.572144 1269.880005 1265.948853 1258.642822 1255.113403 1253.270752 1251.199585 1249.179688 1247.366211 1245.929932 1244.956177 1244.424438 1243.641113 1242.885742 1243.563599 1244.606323 1245.05957 1244.737915 1243.235107 1239.562378 1238.82605 1239.78064 1241.616211 1243.278442 1243.885254 1244.206421 1244.705322 1244.520508 1242.793579 1240.208252 1238.384155 1236.540771 1233.968018 1231.983765 1231.626831 1231.610229 1232.380005 1232.853882 1233.809326 1233.918457 1233.633179 1233.819458 1233.186523 1232.041016 1231.052002 1230.537598 1230.296143 1230.16272 1230.16748 1230.532959 1231.116333 1231.133179 1230.732056 1230.462036 1230.703003 1230.97583 1231.723755 1232.471802 1232.788452 1232.846924 1233.305298 1233.555664 1233.552124 1233.203125 1228.99231 1221.954468 1219.987915 1226.095337 1232.245972 1233.896851 1234.079956 1234.140991 1234.562988 1234.195923 1232.817749 1231.913696 1230.248413 1227.491089 1223.875854 1220.408569 1218.19165 1215.548828 1212.317017 1208.355347 1207.689087 1209.221802 1210.795044 1211.578613 1211.719727 1211.38269 1210.932739 1210.883545 1211.616211 1212.501709 1213.323975 1214.227051 1215.072754 1215.621094 1215.974854 1216.37207 1216.855835 1217.610229 1218.460571 1219.440552 1220.047363 1220.605347 1220.861084 1220.898682 1220.324341 1219.446655 1217.739014 1217.715088 1220.782104 1222.330078 1222.64856 1222.547241 1221.630737 1219.980469 1216.255371 1213.091431 1211.297485 1212.541992 1214.688232 1218.210571 1220.174316 1220.626709 1221.242798 1221.463867 1221.217529 1220.598999 1219.752197 1219.0625 1218.713623 1218.271973 1217.70813 1216.960571 1216.176636 1215.418213 1214.608765 1213.763184 1212.619019 1211.488892 1210.304321 1209.527344 1209.352905 1209.030762 1208.56958 1207.807617 1206.956543 1206.029419 1205.307861 1204.460449 1203.629272 1202.808228 1202.055664 1201.410767 1200.713379 1200.417358 1200.341553 1200.306274 1200.106079 1199.79895 1199.44458 1198.887817 1198.067383 1196.911377 1195.672852 1195.344604 1195.34436 1195.30835 1195.750366 1196.190186 1196.804688 1197.505127 1198.381592 1198.962036 1199.440918 1199.650757 1199.659058 1199.473022 1199.036011 1198.51062 1197.805176 1197.193481 1195.376953 1191.592896 1190.845337 1190.588867 1190.262085 1190.039795 1189.852661 1189.692871 1189.493896 1189.219849 1188.840698 1188.348755 1187.880981 1187.380005 1186.903687 1186.344482 1185.794434 1185.219604 1184.616455 1182.715454 1183.405762 1184.555054 1185.586914 1186.64563 1188.182617 1190.249512 1192.424683 1194.540894 1196.271484 1197.504395 1198.513306 1199.786255 1201.47937 1203.539795 1205.735962 1206.94873 1210.243164 1213.372559 1216.84436 1221.505615 1231.677002 1237.077026 1243.638916 1255.50061 1259.449341 1258.524292 1256.268799 1252.256592 1249.944946 1250.116211 1252.297241 1255.938477 1258.622925 1260.08374 1260.483276 1259.710205 1257.345093 1254.286011 1255.200317 1256.687256 1257.180054 1256.620117 1254.589478 1251.712769 1248.459839 1245.196411 1234.699829 1231.553955 1234.437622 1236.05835 1234.738403 1234.083008 1237.883545 1238.793579 1236.750244 1233.543213 1230.954224 1231.29126 1234.020874 1237.190674 1240.646606 1243.908447 1247.790161 1252.303589 1256.984619 1261.930542 1265.960449 1269.623535 1271.306152 1272.222168 1272.915894 1272.672485 1278.389648 1283.935059 1289.832153 1299.075073 1307.824707 1320.189453 1331.372437 1334.040894 1334.806396 1334.619385 1333.678467 1332.58313 1331.192993 1329.625 1328.447876 1325.905151 1319.132446 1313.128662 1307.57666 1306.00061 1302.790771 1297.79541 1293.787476 1294.440796 1294.629639 1294.185303 1292.539795 1291.303955 1289.45752 1288.260132 1286.934814 1285.082153 1282.234985 1279.118164 1276.64978 1274.67627 1273.266602 1271.965576 1271.322388 1271.161377 1270.952515 1270.564087 1268.697144 1262.258667 1258.009766 1249.219604 1240.11438 1232.486694 1224.287231 1214.219971 1205.02417 1197.634766 1193.832886 1188.135376 1182.199219 1174.754272 1170.230713 1163.611084 1159.353027 1158.098022 1157.782837 1156.781616 1157.269287 1158.453003 1160.584229 1162.155884 1163.640869 1165.438721 1166.206299 +1245.423096 1218.223145 1194.36438 1190.302979 1186.109131 1182.759399 1195.150879 1206.162964 1217.628784 1233.304565 1253.001953 1267.592529 1284.893188 1298.779541 1308.973511 1322.140015 1336.791382 1358.298584 1369.329712 1371.00708 1369.314087 1364.942627 1359.588135 1354.982422 1352.341919 1352.042114 1351.814209 1354.281128 1363.047729 1371.544678 1380.70459 1390.706177 1397.70459 1403.539062 1404.984619 1405.967407 1406.242676 1404.424194 1391.890869 1383.533569 1377.591797 1382.96875 1389.250732 1383.559937 1373.511841 1360.524902 1362.102051 1374.442627 1380.718262 1383.66687 1383.8396 1381.140869 1376.445557 1389.399658 1400.46106 1410.433716 1417.101929 1418.809814 1419.550049 1412.08606 1401.780396 1413.206787 1416.594849 1413.768555 1409.564819 1403.893921 1401.798218 1399.574463 1397.377441 1395.688843 1392.640015 1392.130737 1394.031738 1395.967163 1396.238403 1393.644531 1389.942383 1382.10022 1374.508911 1366.252808 1360.217529 1357.351074 1355.591309 1352.87146 1350.181519 1347.65564 1344.171143 1343.684692 1345.292847 1344.378418 1339.476318 1337.010864 1349.296997 1356.415283 1361.14209 1363.880371 1369.036377 1375.750854 1378.735596 1379.47522 1377.684082 1372.111694 1369.425537 1373.765381 1379.456055 1380.862915 1381.249756 1381.130737 1379.373169 1375.825562 1370.405029 1365.662231 1366.753662 1367.436401 1367.418579 1366.239624 1364.711182 1360.625244 1354.669556 1351.049438 1347.87146 1345.996582 1345.146118 1344.450317 1344.408081 1343.907715 1343.480835 1342.883301 1340.702271 1336.73938 1335.024902 1335.166504 1335.46814 1335.000244 1333.643677 1331.303833 1328.993164 1329.015259 1330.63562 1330.76416 1328.764648 1324.457275 1315.874756 1295.114746 1278.349609 1268.677734 1266.880981 1267.722656 1270.295898 1284.698486 1288.90918 1296.62793 1310.826416 1324.107422 1332.380127 1335.201172 1331.93689 1327.515381 1326.401123 1319.697998 1313.083984 1316.165649 1330.386719 1337.184692 1339.36145 1338.989746 1336.901733 1333.054565 1322.139404 1314.157959 1316.125244 1321.916626 1328.340088 1336.483032 1339.19751 1336.726196 1329.119385 1337.625732 1349.757935 1355.750244 1360.613159 1360.963379 1361.765259 1365.924561 1368.816406 1369.302856 1368.991699 1367.451538 1363.666138 1357.203369 1347.374023 1333.377563 1323.802612 1315.36377 1303.0271 1298.136108 1302.809204 1317.155762 1324.158325 1329.023804 1333.35376 1334.88269 1339.60083 1337.035034 1328.102661 1321.963257 1337.637939 1347.306274 1354.740234 1359.046021 1363.596558 1364.844482 1364.287476 1362.719482 1359.789062 1357.678955 1356.428467 1355.189575 1352.888916 1350.39978 1348.174316 1346.658325 1344.844482 1342.198608 1337.850586 1332.685791 1327.182129 1321.078247 1316.451294 1315.5625 1315.640503 1318.493774 1320.432251 1322.200317 1323.040161 1322.884644 1321.865601 1320.857178 1319.918335 1319.093018 1318.512939 1316.137817 1307.45813 1302.110718 1297.880005 1293.7229 1290.185913 1283.546875 1282.022949 1280.76062 1278.267578 1275.929321 1273.953003 1272.380493 1270.971313 1269.746704 1269.210693 1269.089844 1268.137207 1262.865112 1259.000122 1260.480103 1262.249512 1264.763672 1266.598145 1268.475098 1269.624268 1270.130615 1267.296753 1260.13855 1255.81958 1254.485229 1252.73999 1251.049683 1249.180786 1247.629883 1246.440796 1245.82959 1244.602539 1244.249634 1244.575684 1245.508057 1245.888916 1245.657959 1244.921143 1242.84314 1239.742798 1241.011475 1243.204468 1244.695679 1245.627441 1245.70459 1245.545898 1245.100708 1243.506348 1241.483154 1239.911743 1237.90625 1235.138306 1232.823975 1232.953369 1233.015625 1234.565186 1235.483887 1236.013428 1235.92334 1235.577026 1235.207275 1233.882324 1232.308228 1231.448975 1230.939087 1230.89563 1230.763916 1230.765137 1231.095093 1232.081177 1232.375977 1231.670044 1231.30542 1231.65979 1231.723877 1232.198608 1233.084595 1233.55127 1233.75415 1233.910889 1233.713135 1233.402466 1231.611328 1225.634277 1225.817261 1230.744019 1232.341431 1234.012939 1235.027466 1235.700928 1236.031006 1236.012451 1235.564087 1234.672119 1233.834229 1232.186523 1230.494385 1226.537109 1222.734131 1220.248169 1217.845947 1214.109131 1209.734619 1209.644653 1211.702881 1212.953247 1213.579834 1213.903442 1213.807129 1213.158203 1212.73584 1213.114502 1213.855835 1214.824951 1215.923096 1216.686279 1217.03125 1217.047241 1217.071167 1217.325806 1217.729858 1218.270264 1219.058716 1219.74292 1220.391968 1220.9646 1221.088867 1220.921509 1220.395752 1219.33728 1217.809814 1220.115112 1221.678711 1222.165405 1222.133789 1221.490845 1220.628784 1219.990723 1217.015259 1213.729004 1212.227417 1214.552246 1218.302246 1220.624146 1221.341797 1221.853516 1222.013306 1221.87085 1221.488403 1220.657715 1219.996338 1219.709839 1219.297974 1218.565063 1217.782959 1217.03418 1216.470581 1215.858398 1215.147461 1214.287354 1213.198242 1212.213013 1211.352539 1210.774414 1210.329346 1209.623779 1208.593994 1207.31604 1206.864136 1206.38208 1205.555664 1204.92334 1204.110718 1203.316162 1202.685547 1202.043701 1201.803833 1201.675415 1201.532715 1201.289062 1200.825195 1200.209595 1199.511719 1198.510376 1197.068604 1195.536499 1195.336548 1195.350708 1195.396362 1196.03479 1196.67041 1197.191284 1197.870728 1198.535034 1199.182373 1199.697876 1199.856567 1199.842773 1199.574341 1199.06189 1198.373413 1197.562988 1196.39209 1193.833374 1191.435181 1191.344971 1191.140747 1190.921387 1190.750732 1190.545776 1190.335449 1190.209717 1189.968018 1189.527832 1188.957764 1188.553955 1188.039795 1187.514282 1186.975708 1186.397827 1185.809082 1185.063232 1183.279663 1182.969849 1183.587524 1184.284302 1185.633911 1187.020508 1189.169922 1191.439941 1193.511963 1195.265991 1196.400879 1197.263184 1198.315552 1200.356567 1202.559204 1204.732422 1206.614502 1208.868774 1211.276611 1214.388916 1217.553589 1223.013672 1231.001343 1237.764771 1249.044556 1259.300781 1259.203247 1257.244629 1255.118164 1252.970337 1252.936035 1254.925171 1258.607178 1261.312622 1262.728882 1262.896362 1261.619995 1258.678589 1255.172974 1257.202881 1258.470459 1258.881104 1258.393066 1256.348755 1253.144775 1249.372314 1245.490845 1235.621094 1231.571777 1235.733765 1239.558594 1239.985474 1239.956421 1242.588867 1244.0271 1241.043213 1236.981445 1233.031616 1231.067505 1232.511963 1235.881104 1238.995728 1242.119019 1246.145508 1250.148193 1254.291626 1258.368164 1261.670166 1264.780762 1265.815796 1267.297607 1267.431274 1267.109009 1280.159668 1290.179565 1299.046143 1308.84436 1316.377075 1324.081421 1331.404663 1335.872314 1337.602783 1337.50061 1336.961304 1336.054565 1334.648682 1333.379272 1332.056641 1329.70105 1324.290405 1317.981689 1315.239746 1312.46106 1309.373169 1304.691406 1302.896851 1302.187012 1300.971924 1299.675415 1297.604614 1295.19751 1292.53479 1291.726318 1291.207642 1289.868408 1286.200684 1282.41333 1279.515991 1277.844238 1275.660278 1273.334839 1272.427856 1271.956787 1271.844727 1270.015869 1263.312134 1256.240112 1250.647949 1242.364746 1233.828857 1226.581177 1218.791992 1210.792236 1201.342896 1192.960571 1186.006104 1180.867188 1175.242065 1169.188843 1165.374023 1159.227173 1157.97583 1158.34729 1157.341064 1155.739746 1154.259155 1155.171021 1156.368774 1157.465576 1158.757935 1160.86731 1161.965454 +1216.627686 1230.235718 1196.760986 1190.609497 1186.536865 1183.299561 1198.265625 1223.937744 1231.142212 1247.784424 1263.208496 1277.751221 1285.195557 1292.882324 1303.060425 1320.663452 1336.985229 1361.360229 1378.566162 1377.503906 1374.336426 1370.192871 1366.237061 1361.48584 1357.963745 1356.131592 1354.067383 1352.599487 1360.346802 1370.124634 1380.869751 1391.142334 1399.567505 1404.934814 1406.613647 1407.13269 1406.286621 1400.702515 1389.919556 1385.823608 1384.47229 1389.667847 1393.460327 1389.962769 1376.632812 1366.451782 1368.91687 1379.47644 1385.761475 1389.641602 1391.700684 1389.809448 1381.218018 1389.410522 1403.984985 1412.899902 1418.500977 1421.975464 1422.988159 1418.46582 1414.470215 1422.01062 1424.304565 1426.57373 1430.790771 1427.031982 1418.162964 1409.595947 1403.556152 1401.320435 1399.862061 1399.12854 1402.310303 1402.456787 1400.743774 1396.652344 1390.643799 1383.586914 1376.45166 1366.778687 1367.299194 1366.120728 1362.086426 1357.761108 1353.879761 1351.18689 1349.296387 1347.834106 1346.618164 1344.477905 1338.833618 1342.072998 1354.789307 1360.445679 1364.610107 1367.812012 1374.013916 1379.344849 1381.832031 1382.55835 1381.265625 1378.283813 1375.060181 1375.770386 1379.224487 1382.749268 1384.27356 1384.103027 1382.388062 1379.746826 1375.8396 1372.637695 1371.593994 1371.35144 1371.125122 1370.109619 1368.934204 1367.240845 1361.168579 1353.511841 1350.858887 1349.734009 1349.556885 1348.679321 1348.168213 1347.44812 1346.715942 1345.660034 1344.225586 1342.121216 1340.938477 1340.428467 1340.422974 1340.132935 1339.042358 1336.746582 1335.281006 1335.582764 1336.925293 1336.413696 1332.654175 1326.458618 1312.730225 1292.531982 1277.37207 1271.087769 1267.270264 1270.624634 1278.591919 1288.777588 1291.754395 1302.632568 1320.113403 1338.452393 1341.053101 1339.040039 1337.915405 1335.144897 1332.301392 1326.803833 1318.914307 1314.830444 1329.881714 1341.175415 1343.345581 1342.443604 1340.159668 1335.208618 1324.244629 1314.702026 1321.341675 1331.45459 1336.0271 1343.289307 1345.725342 1345.015503 1341.683105 1339.198242 1349.487671 1361.116089 1368.460205 1368.796631 1369.410767 1369.776611 1369.696411 1369.344849 1365.015137 1359.843018 1355.761353 1350.221558 1342.640259 1329.210327 1320.853149 1313.297119 1304.258179 1299.672607 1304.630371 1320.39563 1328.191528 1335.036987 1339.549194 1345.026245 1355.101196 1352.740601 1341.62915 1327.435059 1342.128418 1351.340576 1356.927368 1361.679443 1365.97644 1367.28064 1367.075806 1366.043701 1363.175171 1360.931519 1359.24707 1357.435669 1355.071045 1352.336182 1350.238525 1348.169189 1345.617188 1342.483765 1336.049805 1328.758301 1328.766724 1323.884033 1317.787109 1315.277344 1320.763794 1325.020386 1326.214233 1326.880737 1327.022461 1325.990967 1323.656128 1321.353149 1318.893433 1317.94751 1317.880859 1312.244019 1305.280762 1301.237305 1297.318848 1294.208618 1286.72522 1280.643555 1280.05957 1279.283813 1278.068726 1276.80957 1275.454712 1274.249878 1273.097534 1272.054199 1270.908325 1270.453003 1269.778076 1265.356445 1259.816772 1261.428589 1262.937622 1264.979126 1266.804443 1268.57666 1269.590454 1270.18042 1269.055908 1264.511719 1259.225464 1256.363281 1254.459106 1252.689087 1250.910034 1249.354126 1248.098022 1247.090332 1246.331787 1246.088135 1246.196167 1246.634399 1246.724609 1246.447632 1245.697144 1244.28772 1241.150269 1241.705444 1243.994629 1245.674438 1246.533813 1246.615112 1246.300537 1245.350098 1243.797607 1242.747681 1241.244751 1239.57251 1237.865601 1236.523193 1236.605469 1236.926025 1237.719482 1238.392456 1238.799561 1238.481689 1237.75708 1236.819336 1234.677002 1232.372437 1231.6604 1231.730835 1231.743774 1231.533081 1231.239014 1231.858398 1233.304199 1233.603882 1232.679199 1232.350708 1232.843994 1233.103271 1233.388672 1233.895264 1234.331177 1234.539307 1234.403198 1233.938721 1233.201294 1230.396606 1227.995239 1233.06311 1234.119995 1235.216675 1236.411743 1237.114624 1237.529175 1237.766357 1237.672852 1237.208984 1236.432129 1235.390259 1234.209229 1232.820312 1229.584595 1225.072388 1221.336792 1218.730469 1216.638184 1214.994141 1214.222534 1214.915161 1215.312866 1215.588745 1215.961792 1216.275024 1215.652588 1214.876343 1214.602295 1215.336426 1216.451782 1217.692261 1218.297241 1218.582642 1218.129761 1217.825806 1217.753296 1217.944092 1218.289551 1218.922241 1219.34314 1219.894043 1220.930298 1221.324829 1221.437744 1221.012085 1220.246704 1218.914429 1219.639648 1221.130981 1221.642944 1221.872803 1221.721802 1221.436646 1220.995483 1220.121216 1216.977539 1213.604492 1213.678589 1217.736938 1220.891602 1221.811401 1222.328003 1222.598633 1222.572144 1222.228516 1221.657227 1220.954468 1220.29895 1220.001099 1219.470215 1218.624023 1217.831299 1217.342651 1216.970215 1216.584106 1215.818848 1214.947021 1214.095581 1213.206177 1212.532227 1211.94519 1211.098877 1209.966187 1208.823608 1208.312988 1207.419678 1206.700928 1206.036987 1205.178833 1204.401978 1203.739868 1203.226929 1202.981323 1202.877075 1202.740112 1202.510376 1202.052856 1201.263184 1200.431396 1199.400635 1197.995239 1196.710938 1195.942627 1195.340332 1195.503052 1196.418945 1197.164429 1197.73938 1198.29187 1198.826416 1199.322754 1199.74707 1199.939575 1199.816162 1199.44043 1198.899414 1198.07312 1197.223267 1195.801636 1192.803345 1191.972778 1191.805908 1191.77771 1191.682495 1191.611816 1191.341675 1191.129517 1190.938599 1190.649658 1190.198364 1189.762939 1189.277222 1188.749634 1188.165771 1187.62915 1187.121216 1186.435425 1185.730835 1184.374146 1183.660034 1183.163208 1183.363037 1184.421753 1185.795288 1187.72229 1190.027344 1192.088867 1193.853149 1194.765259 1195.248657 1196.420776 1199.185425 1201.432007 1203.457642 1205.230347 1206.758179 1209.391968 1212.021851 1214.989014 1218.303711 1224.370239 1230.973999 1240.412598 1251.175049 1259.512207 1257.962402 1255.643677 1254.441895 1255.344482 1257.641113 1261.862183 1264.811523 1265.812134 1265.87085 1264.118652 1261.33313 1259.14209 1260.136475 1260.436523 1260.004761 1259.208496 1257.388672 1252.687256 1248.103149 1243.334351 1234.820923 1231.537598 1238.957886 1243.942749 1244.512207 1242.502319 1243.862061 1244.705933 1244.552856 1240.429688 1236.118164 1232.126587 1231.539429 1234.539795 1237.675781 1241.266602 1244.54248 1247.590332 1251.447998 1255.502441 1258.283203 1259.658813 1260.358032 1262.619873 1265.337402 1267.900757 1279.481812 1292.37439 1301.68811 1310.357056 1320.856323 1330.203003 1334.85022 1339.007202 1340.273682 1340.678223 1340.170776 1339.397339 1338.821411 1337.743286 1335.808105 1333.210571 1330.189209 1326.493042 1322.568726 1319.293945 1315.348389 1312.310547 1311.211426 1309.616211 1307.277222 1305.095581 1302.392944 1299.486206 1296.952271 1295.415283 1294.896484 1294.112183 1290.908203 1286.074707 1282.492432 1279.596924 1275.585693 1273.192871 1271.780029 1269.833008 1265.61084 1259.279785 1253.482178 1248.915161 1243.033936 1235.427734 1228.957031 1222.756348 1214.365845 1204.013794 1193.761719 1186.687866 1181.325928 1176.332397 1170.807007 1168.883179 1166.400269 1164.0271 1163.555298 1161.176636 1158.546387 1156.055542 1153.310303 1152.193481 1153.050903 1153.672241 1154.509521 1156.016235 1157.44873 +1208.185303 1220.718506 1194.349121 1190.444824 1186.952881 1183.970459 1191.491211 1220.305054 1234.871826 1259.084961 1276.832642 1288.433105 1298.638184 1306.729614 1318.295044 1331.773193 1348.218994 1364.627808 1378.864502 1380.712646 1379.026001 1374.653198 1370.457642 1366.608398 1362.720825 1360.476929 1359.347046 1358.276733 1361.02002 1366.457397 1379.273071 1389.962524 1399.49353 1405.58313 1407.543701 1408.26355 1407.014282 1401.851196 1391.528687 1390.204346 1388.899292 1394.520996 1394.957764 1389.5448 1375.161865 1365.829468 1375.385498 1384.300781 1391.25293 1399.649658 1401.51355 1398.045898 1390.522827 1389.888062 1402.817017 1412.540405 1418.993896 1425.598633 1427.523804 1425.345825 1426.54248 1430.719849 1434.283813 1440.13501 1441.622925 1440.392212 1429.150146 1422.290771 1419.177734 1418.02417 1417.553833 1417.663696 1416.053711 1411.888916 1406.070435 1399.998779 1391.019409 1384.304077 1377.704956 1375.831055 1375.23291 1372.315552 1368.352539 1363.724487 1358.881348 1354.552734 1352.094849 1350.365845 1348.20105 1344.565674 1338.426636 1349.02478 1358.966431 1364.909912 1370.783813 1375.920288 1379.213013 1382.600586 1385.328247 1386.041748 1384.84082 1381.440674 1377.22937 1377.008789 1379.173828 1385.604492 1388.500122 1387.914551 1386.234375 1383.487061 1379.828979 1378.061035 1378.09668 1376.278687 1374.658813 1373.039307 1371.473877 1369.566284 1366.289185 1357.46814 1353.286011 1353.243286 1353.316406 1352.767944 1351.8302 1350.865845 1349.648071 1348.293579 1346.863647 1345.418701 1344.987793 1344.97998 1345.024658 1344.991577 1344.129272 1342.43689 1340.913208 1341.902954 1343.076172 1342.580688 1338.764038 1328.560303 1306.783569 1286.716309 1276.881348 1271.338013 1267.936523 1275.43396 1282.742065 1292.199707 1301.061401 1310.499268 1322.344238 1342.72876 1344.71106 1343.0625 1343.102539 1343.168579 1340.930664 1334.431396 1325.407959 1316.103882 1326.730957 1341.835327 1344.464966 1344.63501 1343.597412 1339.197388 1328.534912 1319.856323 1331.54834 1339.567627 1343.82019 1350.67627 1353.008911 1350.090332 1349.1698 1345.778198 1348.322388 1358.205933 1366.622925 1368.825928 1369.454224 1369.722534 1369.294922 1366.7854 1357.039185 1351.041504 1347.282104 1342.291504 1334.695312 1325.660645 1316.785889 1311.994019 1306.172119 1301.146729 1307.744263 1323.085327 1333.185181 1343.547729 1348.990356 1356.00708 1363.406982 1360.934326 1348.451294 1341.94458 1341.206665 1351.112427 1357.550659 1362.754517 1367.245117 1368.749023 1368.926025 1367.972412 1365.530029 1363.240845 1361.577759 1359.277344 1356.611694 1353.745483 1352.166504 1349.861938 1345.223022 1341.213623 1340.046631 1338.297241 1334.994385 1330.619019 1320.895752 1322.72522 1331.105347 1331.126221 1331.242188 1331.164795 1330.39917 1328.47168 1324.474854 1319.389038 1314.40271 1308.549805 1306.397705 1304.484009 1299.812378 1295.564331 1293.692383 1291.909302 1285.776367 1281.736816 1281.166504 1280.213379 1278.877197 1277.790161 1277.013062 1276.28418 1275.465576 1274.139771 1272.616455 1271.487793 1270.407837 1266.984985 1260.440186 1262.085815 1263.449341 1265.308105 1266.995605 1268.655151 1269.602051 1270.127563 1270.174927 1268.808838 1262.956665 1257.742798 1255.258179 1253.839233 1252.340088 1250.885986 1249.782593 1248.901001 1248.393433 1248.079956 1247.976318 1247.948242 1247.640259 1247.044067 1246.249634 1244.922363 1242.742554 1242.186157 1244.737305 1246.298584 1247.204956 1247.515015 1247.190674 1246.282104 1245.118286 1243.942993 1242.179688 1241.182861 1240.540283 1240.127686 1240.278809 1241.093262 1241.949219 1241.842896 1241.939209 1241.491943 1240.279785 1238.485352 1235.620972 1232.751465 1231.979126 1232.87915 1233.137695 1232.736084 1231.804443 1232.839478 1234.387207 1234.977417 1234.82373 1234.585205 1234.746338 1234.90625 1235.187744 1235.355469 1235.47583 1235.287109 1234.904175 1234.168823 1233.095825 1230.161133 1232.407837 1234.724854 1236.229614 1237.616821 1238.576172 1239.254761 1239.62085 1239.756958 1239.648071 1238.947021 1237.825439 1236.540527 1235.285278 1233.896484 1231.533325 1225.559326 1221.420776 1218.956421 1218.697388 1218.164185 1217.345093 1217.953857 1217.405151 1217.026123 1217.416382 1218.520264 1218.904541 1217.876953 1216.304077 1217.13147 1218.220825 1219.27771 1219.803833 1219.762329 1219.020752 1218.48938 1218.509888 1218.508667 1218.813477 1219.191895 1219.425537 1219.634399 1220.763306 1221.428101 1221.694824 1221.488403 1220.881958 1220.129761 1219.315674 1220.634766 1221.39502 1221.821411 1221.955444 1221.92981 1221.714966 1221.01062 1220.056641 1216.883057 1214.619995 1214.696533 1221.605225 1222.203491 1222.785034 1223.208984 1223.261475 1222.930542 1222.416138 1221.765625 1221.150635 1220.671143 1220.374268 1219.380981 1218.55542 1218.293701 1218.23999 1217.981201 1217.472046 1216.662354 1215.673584 1214.900879 1214.491821 1213.929077 1213.139404 1212.19812 1210.953491 1209.852905 1208.696411 1207.494141 1206.829712 1206.026123 1205.147827 1204.549683 1204.224487 1204.106201 1204.061646 1204.057373 1203.756836 1203.353027 1202.641479 1201.821655 1200.716675 1199.511108 1198.204346 1196.726807 1195.435059 1195.540161 1197.011353 1197.957153 1198.520874 1198.964355 1199.273193 1199.57251 1199.725342 1199.827026 1199.618286 1199.172729 1198.486206 1197.605347 1196.594849 1195.077881 1192.558228 1192.500244 1192.611328 1192.768799 1192.704956 1192.549194 1192.27832 1191.983398 1191.682739 1191.393677 1191.018921 1190.606079 1190.09729 1189.573486 1189.002563 1188.335693 1187.789062 1187.128174 1186.499268 1185.274902 1184.699951 1184.227295 1183.985352 1183.922729 1184.318604 1186.441895 1188.666504 1190.830811 1192.661011 1193.679443 1194.775391 1196.14978 1198.50061 1200.607666 1202.50354 1204.093628 1205.815308 1207.554199 1210.239014 1213.369019 1216.725952 1220.489746 1226.645142 1233.094849 1239.337646 1243.272095 1247.272827 1251.817749 1256.588379 1259.124634 1263.422852 1267.336792 1268.258423 1268.875488 1269.063354 1266.974487 1265.546753 1264.15271 1263.427246 1262.352783 1260.963501 1259.301147 1256.881958 1250.103149 1244.313843 1240.255249 1235.961548 1235.070801 1243.707275 1245.700684 1246.075928 1244.490845 1243.781982 1244.45105 1244.971924 1242.987915 1238.652588 1234.913086 1231.4104 1232.986206 1236.255493 1239.529419 1242.122437 1244.275391 1247.098755 1251.318115 1254.493042 1255.137207 1255.385254 1259.670532 1264.564209 1268.922852 1277.432739 1288.330444 1298.444946 1307.352905 1319.049561 1332.123413 1337.314453 1342.58313 1343.085327 1343.04541 1342.825073 1342.533569 1342.450928 1341.998169 1339.634399 1336.374756 1333.483765 1332.149658 1329.800659 1326.226807 1321.183472 1318.892578 1318.944214 1317.172974 1312.155396 1308.516968 1306.243042 1303.55603 1300.309204 1297.541748 1296.594238 1295.375244 1291.198853 1285.145752 1281.939941 1276.057251 1270.922485 1269.416382 1266.133789 1261.64209 1256.062012 1251.050293 1246.952026 1242.293579 1236.059937 1229.558716 1224.88269 1219.700317 1211.996216 1200.527344 1189.81604 1181.774048 1178.809814 1174.62085 1170.622681 1169.682861 1169.860596 1170.612305 1171.845947 1169.908325 1161.950073 1157.391846 1152.993164 1150.203735 1149.987549 1150.343506 1147.817871 1147.071899 1146.680176 +1193.96521 1194.462158 1193.287354 1190.324707 1186.839844 1184.462036 1188.544678 1206.158203 1232.013916 1261.710449 1276.259399 1290.60791 1304.717041 1312.123535 1321.424683 1329.560303 1338.625732 1353.64624 1366.679932 1375.040039 1380.616455 1378.099365 1372.498047 1369.23584 1366.16272 1365.113892 1366.111084 1366.420044 1366.124146 1365.499878 1375.405151 1385.578735 1396.83728 1405.343994 1408.019531 1409.596558 1409.385498 1406.021729 1403.580444 1400.621948 1398.879883 1400.718384 1396.838623 1387.668823 1376.039673 1372.31958 1380.557373 1388.716675 1399.970215 1407.24231 1409.193481 1406.847656 1400.046509 1392.751709 1401.361694 1410.7323 1418.779297 1426.28833 1429.863403 1430.678711 1432.309448 1437.109619 1441.61853 1444.00769 1444.013062 1440.932373 1435.297363 1430.559082 1428.060425 1425.772339 1423.676147 1421.455566 1419.467041 1416.769897 1410.009277 1400.496704 1391.465454 1388.361694 1385.43042 1382.861816 1381.322632 1378.465088 1373.513794 1368.63501 1363.884399 1357.840576 1353.28125 1353.275391 1350.512573 1345.128784 1338.702393 1355.037842 1363.052612 1370.42627 1377.677002 1381.259033 1383.736328 1386.798828 1388.758667 1389.914307 1389.953491 1386.711792 1379.640015 1377.167236 1379.604492 1387.499146 1391.283569 1391.113525 1389.999146 1386.998535 1384.184326 1382.764526 1381.557495 1379.862671 1377.561646 1375.46228 1373.658081 1371.592651 1368.578491 1364.316162 1361.165161 1360.555786 1360.569092 1358.680054 1356.544189 1353.571411 1352.14502 1350.491455 1349.468506 1348.861084 1348.9729 1349.521973 1350.134766 1350.203613 1349.012451 1346.842651 1345.500244 1345.039673 1344.735229 1344.025635 1341.061646 1331.127686 1311.904907 1288.894653 1276.951538 1270.760742 1268.966064 1278.913574 1284.135986 1295.929565 1313.098389 1326.954224 1327.243896 1339.249268 1345.115479 1346.73877 1347.597778 1347.21106 1345.828003 1343.233276 1331.726929 1322.802979 1326.577148 1336.562012 1343.759277 1345.292236 1345.203491 1342.847778 1333.05188 1327.345337 1342.372437 1350.496704 1353.304321 1356.490112 1358.447144 1357.388062 1357.585449 1357.36084 1355.026611 1356.175781 1363.446045 1366.101685 1368.36438 1366.137329 1364.401733 1359.337158 1351.244141 1344.206543 1339.511108 1332.254639 1327.754761 1324.330688 1317.606201 1313.28418 1307.791138 1302.598633 1310.302612 1326.561401 1336.922729 1347.855591 1356.335205 1364.292847 1368.751831 1369.276001 1357.795288 1349.169189 1342.12085 1353.375244 1358.11499 1363.058228 1367.223267 1369.87146 1370.705811 1370.10376 1367.94165 1365.838501 1363.935425 1361.635986 1358.826538 1356.425659 1355.164307 1352.718018 1345.92334 1341.969238 1343.981689 1343.960693 1341.390137 1333.250122 1327.695557 1331.888062 1334.320435 1334.790039 1333.997803 1333.389526 1332.335938 1330.084839 1322.327026 1315.541138 1309.164062 1303.184448 1299.064941 1294.954712 1292.581543 1292.289673 1291.919067 1290.964844 1288.51001 1286.08667 1284.332764 1282.66394 1280.628784 1279.138428 1278.548218 1278.652832 1278.081543 1276.669922 1274.342529 1272.236816 1270.636719 1267.057495 1261.215332 1262.583984 1263.812988 1265.553345 1266.966675 1268.318726 1269.55127 1270.271606 1270.40332 1269.791138 1264.901489 1259.657104 1256.432983 1255.0354 1253.533813 1252.314087 1251.303589 1250.684937 1250.03833 1249.619751 1249.541748 1249.327026 1248.955688 1248.195068 1247.046509 1245.460571 1244.150513 1242.701904 1244.700439 1246.727417 1248.07605 1248.589233 1248.37085 1247.652954 1246.41748 1244.377075 1242.929321 1242.765869 1242.695923 1242.658203 1243.194458 1244.157959 1245.431152 1245.317383 1245.049316 1244.39502 1242.841431 1240.392822 1237.31897 1234.330078 1233.040771 1234.080566 1234.582031 1234.187378 1233.663818 1234.581665 1235.896973 1236.732056 1236.953613 1236.957275 1237.17749 1237.226685 1237.290894 1237.184814 1236.879883 1236.213135 1235.315063 1234.24646 1233.06543 1231.818604 1233.723389 1235.86438 1237.869507 1239.596924 1240.814697 1241.411255 1241.664307 1241.820068 1241.781006 1240.846558 1239.175415 1237.177368 1235.154541 1233.254272 1229.881226 1225.139893 1219.604248 1219.887939 1219.942505 1220.008911 1219.967651 1219.853638 1219.312012 1218.389526 1218.836182 1220.010376 1220.561157 1220.27124 1218.185059 1219.077637 1220.011963 1220.571777 1220.879272 1220.652832 1219.925293 1219.300781 1219.675171 1219.282471 1219.692749 1220.228027 1220.282349 1220.094727 1221.009155 1221.854004 1222.122437 1221.952759 1221.422119 1220.717896 1219.896118 1220.572021 1221.384644 1221.997559 1222.335083 1222.395386 1222.159912 1221.634644 1220.784668 1219.732178 1216.471313 1215.559448 1220.994751 1222.442383 1223.311157 1223.923584 1224.017212 1223.778809 1223.177612 1222.731445 1222.266479 1221.839966 1221.357544 1220.115845 1219.436768 1219.502808 1219.532593 1219.529053 1219.354858 1217.841553 1216.983032 1216.478882 1216.364746 1216.253296 1215.695435 1214.904297 1213.274658 1211.582764 1209.97229 1208.490356 1207.261963 1206.457153 1205.71521 1205.378662 1205.106567 1205.134888 1205.336792 1205.348877 1205.16333 1204.647095 1203.909058 1203.164185 1202.426636 1201.512939 1200.293335 1198.672485 1196.847412 1197.12561 1198.361084 1199.167358 1199.526733 1199.838013 1199.963379 1199.958252 1199.881958 1199.697998 1199.29187 1198.748413 1198.007812 1196.985474 1195.962402 1194.246948 1193.19165 1193.674927 1193.894653 1193.801758 1193.768311 1193.589233 1193.292847 1192.885376 1192.578857 1192.237915 1191.822266 1191.412598 1190.916626 1190.3396 1189.716553 1188.979736 1188.430908 1187.867188 1187.232422 1186.154175 1185.501343 1185.116943 1184.736938 1184.547241 1184.543823 1185.334717 1187.663452 1189.900635 1192.175781 1194.018311 1195.675171 1196.928833 1198.311646 1200.12854 1201.724609 1203.227661 1204.814697 1206.399292 1208.547852 1211.833374 1214.856934 1217.956177 1221.946045 1226.755615 1231.689453 1235.985474 1239.619629 1243.83374 1256.092285 1261.037231 1268.295288 1270.517456 1270.614746 1271.353027 1271.314331 1269.651123 1268.392822 1267.139282 1266.283325 1264.092896 1261.189697 1258.584473 1252.654663 1245.658081 1242.235107 1241.095459 1241.320557 1243.328613 1245.682251 1247.21814 1247.484741 1246.403442 1244.180908 1244.038086 1245.178467 1244.533813 1241.091675 1237.988037 1234.490601 1234.121948 1236.382812 1238.719971 1240.756958 1242.472656 1243.498657 1247.556519 1251.377808 1253.842896 1257.202881 1260.859131 1267.18396 1272.053955 1278.17749 1286.963989 1295.97937 1304.962524 1314.70813 1327.024292 1332.604248 1336.611572 1340.132568 1340.43103 1341.632935 1343.222534 1344.407104 1343.786499 1341.907104 1336.59375 1333.931274 1333.181641 1333.888794 1332.046631 1328.678711 1321.457642 1319.207031 1314.153564 1308.89856 1306.463745 1304.815063 1303.569214 1299.644287 1296.660156 1292.456787 1289.354614 1283.615234 1277.677368 1270.774414 1265.974976 1263.817505 1261.974609 1258.00708 1252.779053 1247.233032 1243.240723 1239.43103 1234.793335 1229.443115 1223.64624 1220.573364 1214.201294 1207.517334 1197.709839 1187.793945 1181.755859 1178.064819 1174.970093 1172.868408 1171.520386 1171.614746 1172.245972 1172.238037 1168.489258 1162.090454 1157.844849 1152.987549 1149.514038 1147.382935 1148.294189 1147.321777 1145.533691 1144.547241 +1190.718384 1195.275757 1194.631714 1190.356079 1187.030518 1185.246582 1187.210205 1200.979126 1225.687988 1243.696167 1267.224121 1284.882446 1296.587646 1304.575195 1314.057983 1319.736206 1327.246338 1338.949219 1349.423096 1360.625366 1369.408569 1373.237671 1372.013672 1371.309937 1370.634033 1369.867676 1370.577515 1371.737427 1371.617188 1373.348877 1376.324829 1386.169312 1395.781738 1404.035645 1408.331665 1411.269409 1412.788452 1413.257568 1412.702759 1409.581177 1408.155151 1406.640259 1402.705688 1391.625854 1381.87207 1375.935425 1383.144531 1393.39978 1404.653931 1413.177856 1416.457886 1415.81189 1408.118164 1398.99646 1400.678101 1408.556885 1415.897705 1425.338135 1430.488037 1433.981323 1437.770874 1444.547729 1448.865356 1447.832275 1445.917114 1442.908691 1440.320557 1438.30127 1435.346558 1431.091797 1427.685059 1424.553589 1421.914429 1417.948242 1412.009644 1403.618896 1399.367188 1395.515137 1392.676758 1388.389282 1385.610596 1382.064697 1377.784546 1372.393066 1367.633789 1362.198608 1357.917114 1356.338013 1352.799194 1346.237183 1338.804443 1358.347046 1367.921875 1375.540405 1380.90625 1384.804321 1387.945435 1390.908081 1392.927368 1393.992065 1394.098999 1392.472534 1384.221191 1377.530884 1377.762817 1387.102661 1392.185669 1392.428345 1392.139648 1390.5354 1388.052002 1386.375854 1384.910645 1382.893555 1380.490234 1377.80249 1375.980835 1374.859131 1373.078979 1370.018066 1368.874512 1369.043335 1369.199951 1367.243408 1363.265015 1358.930664 1354.938354 1352.253296 1351.273926 1350.994263 1351.717529 1353.253906 1354.503784 1354.803223 1353.620605 1350.793701 1347.786743 1346.509033 1346.209717 1345.368042 1340.395508 1329.360718 1311.021362 1287.132812 1275.984009 1270.632324 1271.063965 1279.831787 1285.005493 1304.726318 1324.497803 1336.224365 1336.483398 1339.230469 1344.888428 1349.087646 1351.396484 1352.619141 1351.75 1347.906494 1339.245117 1331.615112 1332.903442 1337.720459 1340.761963 1345.332764 1346.58728 1343.899658 1336.106445 1329.343018 1342.607666 1354.443481 1356.920166 1359.315918 1364.858032 1367.380493 1367.258179 1365.372803 1365.016479 1364.4552 1366.246338 1367.979614 1367.557617 1364.700073 1357.153442 1351.457275 1345.715698 1340.838013 1338.238037 1333.580933 1332.985229 1331.75415 1324.996582 1316.478271 1309.519653 1303.761841 1313.353516 1329.504028 1338.15918 1352.384521 1360.952393 1367.713745 1369.963257 1370.564575 1366.552612 1355.044434 1350.698853 1353.731079 1359.199341 1363.564331 1367.293701 1371.663086 1373.325928 1372.876831 1370.953613 1369.036621 1366.586548 1364.053223 1361.334229 1358.893188 1356.827515 1353.971924 1350.365967 1348.009399 1347.636108 1346.335205 1343.703369 1337.794922 1331.75769 1335.164917 1337.442261 1337.766479 1336.135864 1333.906738 1331.712036 1323.989868 1316.667358 1309.180176 1304.27478 1302.233521 1298.854248 1296.545044 1295.324341 1294.067871 1294.095337 1294.30481 1293.292847 1290.107178 1287.747559 1285.651245 1282.869263 1280.442139 1280.948975 1281.097412 1280.684448 1279.083862 1276.360718 1273.130005 1270.601318 1267.285767 1262.102905 1263.06311 1264.187622 1265.599243 1266.811646 1268.073608 1269.485107 1270.4823 1270.680786 1269.735474 1265.893311 1262.410278 1258.702515 1255.940796 1254.732422 1253.691406 1252.923096 1252.040405 1251.517456 1251.069824 1250.840942 1250.816406 1250.563477 1249.82605 1248.762085 1247.426392 1246.170044 1244.398071 1244.176636 1247.449829 1249.585693 1250.154419 1249.938354 1248.99231 1247.171753 1243.8302 1244.457153 1244.797241 1244.519775 1245.509277 1246.668945 1247.30957 1248.218994 1248.436279 1247.875977 1246.823853 1245.126587 1242.814819 1239.928467 1237.871948 1236.406372 1236.165527 1236.403687 1236.28772 1236.344482 1236.971558 1238.079224 1238.875732 1239.285767 1239.345459 1239.708374 1239.731812 1239.623535 1239.283081 1238.404663 1237.28833 1235.786255 1234.384155 1233.211426 1233.788452 1235.535767 1237.546997 1239.634399 1241.789429 1242.924316 1243.251221 1243.681152 1244.094849 1243.8573 1242.464722 1240.401367 1237.904907 1234.52417 1231.647461 1230.595459 1227.287354 1224.025146 1222.590454 1222.428223 1222.251343 1221.9646 1221.61084 1220.570557 1219.787354 1220.243774 1221.084839 1221.519043 1221.134277 1219.912354 1220.28418 1220.995972 1221.481934 1221.705444 1221.473755 1220.811157 1220.367188 1220.754395 1220.598267 1220.910034 1221.414307 1221.588745 1221.663208 1221.991577 1222.457031 1222.700073 1222.474854 1222.032715 1221.390625 1220.920288 1221.345581 1221.769409 1222.369995 1222.773926 1222.93689 1222.683105 1222.005737 1221.375488 1220.587402 1216.99585 1217.962891 1220.658081 1222.781372 1223.98938 1224.587769 1224.80249 1224.571655 1224.213867 1223.886475 1223.495605 1223.149658 1222.535278 1221.491455 1221.089233 1221.110107 1221.206543 1221.236084 1219.69165 1218.729248 1218.330811 1217.984375 1218.185425 1218.473145 1218.405396 1217.832153 1216.27356 1213.744995 1211.185303 1208.864868 1207.29541 1206.788574 1206.254272 1206.043579 1205.956299 1206.192871 1206.470459 1206.599854 1206.491089 1205.892944 1204.982056 1204.467041 1204.167358 1203.570435 1202.672241 1201.503052 1200.704346 1200.381592 1200.403198 1200.64563 1200.919922 1201.0177 1200.954956 1200.663818 1200.120605 1199.628784 1198.985352 1198.276855 1197.493774 1196.542236 1195.706787 1194.002686 1194.903687 1195.130737 1194.946167 1194.828735 1194.644165 1194.445679 1194.108032 1193.817993 1193.428345 1193.109619 1192.61438 1192.145386 1191.65332 1191.065552 1190.442383 1189.737183 1189.189941 1188.646606 1188.102417 1186.887939 1186.427856 1185.899048 1185.594727 1185.269531 1185.059937 1184.947021 1187.072754 1189.30603 1191.724121 1194.252197 1196.055786 1197.206909 1198.319702 1199.455811 1201.042725 1202.631958 1204.307739 1206.295532 1208.394531 1210.687988 1213.235596 1215.852661 1218.345825 1219.421631 1225.004028 1229.882568 1233.900146 1239.081421 1246.035645 1253.603394 1262.776978 1272.386475 1273.394165 1274.056885 1273.921387 1272.432983 1271.055176 1270.089111 1268.394531 1265.039185 1260.581055 1255.238403 1245.026123 1243.546265 1242.564697 1242.435059 1244.107178 1246.616699 1248.386108 1249.638428 1249.767456 1248.27832 1245.820923 1244.446045 1245.782104 1245.833374 1244.419434 1241.663452 1238.971069 1237.362183 1237.460449 1238.89563 1240.314209 1242.154907 1244.247192 1247.046021 1250.508667 1254.026733 1257.501343 1260.948608 1266.633179 1271.546509 1277.47168 1284.586914 1290.897217 1297.925293 1306.460571 1316.113892 1321.413208 1322.014648 1320.461304 1322.130127 1324.166748 1326.759766 1331.21936 1332.893677 1332.594727 1329.152344 1320.657227 1313.912842 1313.64856 1313.729614 1308.134766 1305.219116 1301.722168 1295.959351 1291.075317 1286.263794 1284.328979 1287.681641 1291.439209 1289.316162 1279.660645 1276.115112 1271.957642 1266.213379 1262.168457 1257.813232 1255.562744 1254.117432 1250.245972 1244.158691 1238.768921 1233.977905 1230.911499 1226.175781 1220.756714 1215.078857 1211.178589 1206.542236 1200.662598 1192.97168 1184.76709 1179.612671 1175.529541 1173.624878 1171.77002 1170.328125 1170.784912 1169.187012 1164.886841 1160.145874 1157.847412 1155.517212 1152.257446 1148.926636 1146.556274 1145.749634 1146.465576 1145.065918 1143.276611 +1188.946899 1191.734863 1194.844849 1189.545532 1187.020874 1185.573853 1186.454834 1195.28772 1210.805664 1226.824951 1257.33667 1271.371704 1280.623169 1291.479736 1299.911987 1307.701172 1312.83252 1320.980103 1332.165039 1345.086914 1360.48584 1369.035522 1371.228394 1373.390747 1375.770264 1375.043823 1375.193726 1377.177246 1379.225098 1379.492065 1387.445801 1393.536377 1398.840942 1403.050293 1408.907471 1412.788696 1415.156006 1417.39624 1418.229492 1416.877808 1415.417969 1412.322266 1405.73999 1396.69519 1388.740356 1379.240845 1385.283325 1395.759399 1409.499756 1421.769409 1426.574829 1422.793457 1417.105591 1400.621704 1405.469849 1414.713257 1417.221313 1424.623779 1430.744629 1435.896484 1439.003906 1448.552856 1452.625854 1450.457397 1448.281006 1446.153198 1444.154541 1442.394409 1440.30957 1435.40918 1430.920654 1427.130981 1424.186157 1421.258789 1417.390381 1415.717163 1412.723999 1405.456543 1399.835815 1394.33252 1389.346924 1385.577637 1380.447998 1374.869507 1369.735229 1364.689209 1361.252686 1358.263794 1353.673462 1346.071655 1339.841553 1360.247437 1372.170288 1379.37793 1383.705933 1387.685303 1391.317749 1394.373169 1397.466919 1399.12793 1398.723755 1395.840698 1390.520752 1388.418945 1378.403198 1383.262695 1390.811646 1392.807617 1393.205933 1392.704834 1390.935059 1389.967163 1388.067871 1386.75293 1384.379761 1381.176025 1378.039795 1377.507935 1377.422363 1376.991577 1376.826538 1377.140259 1376.302856 1374.234375 1370.577881 1366.122803 1360.890137 1354.326294 1353.615967 1352.863403 1354.006592 1355.550659 1355.940308 1355.874756 1354.926514 1347.905273 1346.456421 1346.762695 1347.101929 1343.781128 1328.279419 1314.371948 1297.047852 1278.763428 1273.474976 1272.428467 1275.358521 1280.506104 1285.971313 1310.737427 1334.649292 1343.501709 1343.59729 1341.353027 1346.783447 1351.415649 1354.449219 1355.940552 1355.89563 1351.814209 1342.847412 1338.661377 1341.74939 1343.113647 1342.80481 1347.037598 1350.087158 1347.183716 1340.767334 1338.410156 1339.214478 1344.886108 1353.171021 1356.852661 1364.367676 1367.6427 1367.898438 1368.02124 1367.889526 1367.50293 1368.435181 1368.805664 1368.216797 1362.557007 1354.059814 1347.622437 1340.879395 1340.890503 1341.7948 1342.75647 1340.117554 1335.261353 1329.47229 1317.780396 1310.012329 1305.463013 1316.488281 1330.428467 1338.693237 1351.619507 1360.760376 1367.452637 1369.927002 1370.187134 1367.457886 1360.245605 1355.314331 1353.324463 1361.157227 1366.263672 1370.424438 1374.678833 1376.417358 1376.161621 1374.816772 1372.60144 1369.832275 1366.626709 1363.697998 1361.037598 1358.21106 1354.353516 1353.593994 1352.746704 1351.150513 1348.247559 1344.674683 1341.011597 1338.352905 1340.251587 1341.142212 1341.067871 1337.230835 1331.334351 1323.369995 1312.663574 1304.879883 1305.355225 1306.645142 1307.039917 1307.886108 1308.800781 1305.17395 1301.297119 1299.209595 1297.821655 1295.890869 1293.077759 1291.328247 1289.784546 1286.952026 1284.969727 1284.514893 1284.125 1283.003174 1281.258301 1278.08606 1273.286377 1270.428223 1266.776489 1263.032959 1263.411987 1264.491699 1265.87793 1267.081909 1268.177002 1269.573242 1271.043823 1271.330688 1270.19519 1268.936157 1266.118164 1261.604492 1258.15686 1256.196045 1255.179565 1253.883179 1253.190674 1252.649292 1252.378662 1252.318481 1252.37085 1252.298828 1251.936646 1251.152954 1250.258423 1248.330811 1246.561523 1245.459595 1249.494751 1251.928955 1252.191162 1251.668701 1250.683105 1248.56604 1246.687134 1247.172974 1248.001465 1248.874512 1250.613159 1251.590942 1251.793945 1251.662231 1251.471069 1250.708374 1249.161377 1247.208008 1244.46106 1242.537354 1240.546021 1239.046997 1238.453003 1238.638916 1238.543457 1238.502441 1239.258911 1240.400757 1241.271118 1241.531006 1241.730835 1241.996582 1242.137207 1242.031006 1241.292847 1240.004761 1238.430908 1236.58313 1234.767212 1233.849976 1236.186646 1238.389526 1239.879028 1241.281128 1243.188843 1245.031128 1245.182495 1245.427612 1245.610596 1245.285645 1244.126709 1242.039795 1239.438599 1236.403687 1233.764648 1232.885376 1230.158691 1228.030762 1226.411133 1225.470337 1224.757202 1224.05127 1223.280884 1222.4021 1221.754028 1221.848877 1222.292603 1222.341919 1221.854736 1221.151245 1221.174194 1221.826416 1222.269531 1222.583862 1222.447998 1222.289795 1222.032837 1222.178955 1222.162842 1222.546143 1222.687378 1222.925659 1223.235229 1223.492188 1223.490601 1223.466431 1223.297852 1222.770386 1222.351929 1221.938599 1222.196167 1222.672974 1223.144775 1223.758545 1223.896973 1223.522217 1222.667603 1221.448364 1220.242554 1217.171509 1220.581543 1221.668579 1223.496826 1224.696045 1225.498291 1225.741577 1225.57666 1225.344238 1225.218872 1225.073364 1224.834839 1224.273315 1223.793213 1223.392822 1223.334106 1223.244629 1222.623291 1221.193726 1220.172729 1219.826294 1219.82312 1220.089478 1220.45105 1220.604736 1220.249268 1219.429199 1216.495239 1213.149902 1209.648926 1207.409912 1207.246094 1207.126099 1206.787964 1206.813721 1207.162231 1207.489746 1207.712891 1207.636963 1206.727295 1205.928345 1205.766602 1205.911987 1205.681763 1205.181519 1204.219482 1203.411011 1202.8573 1202.540405 1202.481323 1202.375 1202.352051 1202.074219 1201.526611 1200.76123 1199.869141 1198.970459 1198.051392 1197.148193 1196.403198 1195.393677 1194.66394 1195.985474 1195.952393 1195.88269 1195.782593 1195.566284 1195.254028 1194.922852 1194.630249 1194.256104 1193.860352 1193.403442 1192.849243 1192.378296 1191.644897 1191.146362 1190.495728 1189.995483 1189.549805 1188.955811 1187.77356 1187.262329 1186.77002 1186.299194 1185.951416 1185.69043 1185.324463 1186.586914 1188.747681 1191.539795 1194.129028 1195.91394 1196.947876 1197.812988 1198.827515 1200.181519 1201.875122 1203.884521 1205.743164 1207.431885 1209.721924 1211.705933 1213.907715 1215.803955 1217.866821 1220.94873 1224.247192 1228.446533 1232.806396 1238.080078 1243.285522 1250.686279 1263.111694 1274.400879 1277.755371 1277.37207 1275.458862 1273.656738 1271.945068 1269.268555 1264.515991 1258.422363 1252.877686 1245.693481 1246.99231 1244.853516 1243.506348 1246.931519 1250.503418 1252.223633 1253.206665 1252.883667 1251.03125 1249.233398 1248.139038 1248.337646 1248.050537 1246.947266 1244.899292 1241.68811 1239.253174 1238.920776 1239.29126 1240.512085 1242.001953 1244.310425 1246.850098 1249.949341 1253.284058 1256.073364 1259.208496 1263.027466 1266.59314 1273.400391 1282.123779 1287.527588 1294.20813 1301.146851 1306.780273 1311.598755 1308.354614 1305.750366 1307.04541 1308.735229 1311.574951 1312.455078 1312.670532 1311.747681 1307.815063 1300.714478 1297.068237 1295.812866 1292.949219 1290.726685 1287.234985 1283.503662 1280.382446 1278.117065 1275.183838 1273.035156 1274.414795 1277.529785 1276.800781 1270.263306 1263.440674 1260.838013 1258.144165 1255.132935 1252.270264 1250.201294 1247.329224 1243.703369 1239.762573 1234.301636 1224.600464 1217.563232 1215.115234 1210.21167 1204.344849 1201.740356 1198.924194 1193.751221 1185.146851 1179.981201 1175.280762 1171.466187 1170.776733 1168.210327 1165.220703 1162.938843 1159.889526 1157.590088 1156.600586 1155.304199 1152.877319 1150.725586 1148.69165 1146.198364 1143.7948 1143.341431 1142.939575 1141.87146 +1190.881348 1188.23291 1188.473877 1187.989868 1186.529541 1185.595947 1186.591309 1192.018799 1198.325317 1207.841309 1226.03418 1242.931396 1256.518677 1271.021484 1283.767822 1290.313232 1299.088379 1307.682983 1319.524292 1335.193115 1351.187012 1366.53064 1372.007202 1376.840698 1379.275146 1379.514893 1378.478149 1381.487427 1383.808716 1386.041992 1391.283936 1397.848877 1402.820801 1406.930908 1411.647217 1415.38623 1419.1073 1421.478516 1422.432861 1422.695923 1421.804321 1417.880859 1409.30896 1398.964722 1389.951416 1387.216919 1388.599976 1395.321899 1414.067383 1428.699097 1430.277588 1427.984619 1421.175415 1413.354858 1420.198853 1421.301758 1424.338379 1428.816162 1436.325684 1439.887817 1442.019287 1447.949341 1451.766968 1452.455078 1450.559082 1448.812744 1446.682861 1444.441895 1441.277588 1437.575073 1433.770142 1429.513306 1426.97998 1425.0625 1422.383301 1420.816528 1419.33313 1417.003906 1412.141724 1402.752686 1395.324585 1389.066162 1382.612549 1376.568848 1371.145874 1365.350098 1365.112793 1360.848389 1353.457275 1346.47876 1345.320068 1363.216309 1377.232178 1381.890015 1386.113403 1389.983521 1393.867188 1397.647949 1401.408813 1403.87439 1403.294189 1399.72229 1396.797852 1395.202026 1392.312622 1389.228149 1389.267822 1392.259277 1393.91626 1394.391602 1393.612061 1392.841187 1391.448364 1390.904907 1389.479248 1386.421265 1383.901855 1382.900513 1383.140869 1383.892334 1384.586182 1385.199097 1384.512329 1382.310547 1378.97998 1373.577393 1368.358032 1362.637939 1357.901123 1356.607178 1356.756592 1356.947998 1356.759033 1355.845947 1350.21228 1338.998413 1335.514526 1334.762695 1330.301392 1319.523804 1307.060059 1295.304077 1280.76416 1277.707153 1275.796387 1276.38623 1277.797241 1280.947021 1287.729736 1313.82373 1335.664673 1344.342529 1346.995239 1347.344238 1350.830078 1354.205566 1356.409546 1357.454224 1356.900146 1353.921387 1343.789307 1341.314941 1344.960327 1346.882446 1348.408447 1351.519043 1353.997681 1354.124756 1350.084961 1349.204712 1344.951294 1340.521362 1346.059814 1352.486816 1358.598145 1364.077637 1367.357788 1368.735107 1369.232788 1369.28772 1369.168213 1368.750732 1365.863525 1357.273071 1352.908936 1349.27124 1346.01416 1346.616211 1346.298096 1345.166504 1342.694458 1336.317383 1330.482544 1315.956177 1309.148193 1308.733276 1318.367676 1329.991089 1338.14917 1349.338623 1359.970337 1366.463379 1369.806274 1370.138916 1368.441406 1365.798462 1364.349487 1358.44104 1364.408203 1369.7052 1374.333374 1378.273804 1379.602783 1379.624023 1378.557617 1376.383545 1373.233521 1368.919434 1365.251221 1362.881958 1360.6521 1358.23291 1356.876831 1356.200073 1353.989502 1350.713501 1346.347534 1341.67981 1343.182251 1343.884033 1344.02002 1343.150513 1337.067627 1326.683838 1315.99292 1306.346313 1310.906738 1313.870117 1316.81189 1320.609741 1320.450439 1318.64917 1314.199829 1307.85376 1303.571655 1301.86853 1300.081055 1297.619019 1295.758301 1294.066284 1291.549194 1289.692017 1288.447998 1286.848145 1284.912109 1282.33728 1278.476929 1272.494263 1268.445923 1266.437256 1266.949951 1264.319214 1264.519409 1266.25061 1267.901978 1269.151855 1270.50708 1271.898682 1272.692505 1272.531128 1271.28833 1268.930176 1264.770996 1260.680298 1257.813354 1255.745728 1254.635742 1254.013306 1253.773682 1253.689087 1253.709229 1253.906982 1254.135376 1253.768677 1254.028076 1253.577393 1251.583008 1248.520996 1248.361328 1253.980103 1255.038574 1254.044678 1253.174316 1252.55542 1251.790527 1251.065186 1251.224976 1251.80957 1253.336548 1256.413818 1256.842896 1255.358032 1255.578369 1255.152954 1253.324341 1251.450195 1249.211548 1245.696289 1243.459229 1242.204956 1240.872437 1240.499512 1240.967773 1240.834106 1240.527832 1241.040283 1242.3479 1243.659546 1243.962158 1243.866821 1244.003052 1244.227661 1244.084961 1242.999634 1241.479614 1240.116211 1238.005493 1235.599609 1235.11792 1243.394043 1242.21582 1241.424316 1242.985596 1244.686279 1245.985718 1246.819092 1247.072388 1246.977783 1246.394165 1245.015625 1242.927368 1240.913086 1239.095703 1236.860962 1234.269775 1231.806519 1230.960449 1229.464355 1228.507324 1227.475952 1226.478516 1225.376953 1224.439209 1223.813354 1223.614624 1223.550049 1223.251465 1222.848022 1222.379517 1222.467529 1222.810791 1223.251831 1223.561768 1223.684326 1223.630493 1223.55249 1223.771606 1223.892334 1224.112305 1224.306396 1224.540039 1224.789185 1224.960693 1224.972534 1224.616211 1224.264893 1223.833252 1223.406372 1222.987061 1223.181396 1223.553345 1224.312012 1225.035156 1225.507446 1225.106323 1223.908447 1222.220337 1220.851196 1218.087646 1221.481201 1222.797363 1224.237427 1225.606323 1226.523071 1226.805054 1226.705322 1226.542236 1226.554321 1226.544556 1226.619263 1226.446167 1226.209351 1225.987427 1225.841064 1225.598755 1224.868896 1223.855347 1222.839111 1222.45459 1222.358521 1222.258789 1222.178223 1222.203247 1221.971191 1221.043335 1219.266235 1215.891235 1212.445068 1209.924927 1209.370483 1208.922729 1207.824097 1208.182739 1208.775146 1209.203369 1209.34021 1209.063721 1207.892456 1206.639526 1206.802612 1207.318359 1207.304565 1207.230225 1206.307007 1205.26416 1204.735596 1204.407593 1204.240112 1204.080078 1203.810547 1203.2948 1202.578491 1201.540405 1200.244995 1199.139038 1197.977905 1196.936035 1196.149048 1194.97229 1195.788574 1196.588013 1196.868652 1196.773804 1196.680054 1196.479492 1196.166382 1195.855713 1195.444336 1195.046021 1194.666504 1194.149414 1193.631104 1193.022095 1192.408203 1191.864624 1191.184326 1190.733643 1190.373535 1189.770142 1188.699829 1188.095947 1187.585327 1187.147461 1186.610596 1186.225708 1185.909668 1186.008545 1188.282593 1190.79248 1193.036865 1194.699951 1195.812744 1196.721802 1197.722534 1199.180054 1201.180176 1203.162354 1204.915649 1206.642578 1208.541992 1210.51001 1212.197876 1214.076172 1215.921021 1217.680542 1218.897949 1223.494263 1228.243652 1231.361572 1236.257568 1241.650757 1249.393799 1266.10791 1281.04248 1280.46167 1278.071411 1275.906738 1273.120728 1269.597656 1264.531616 1257.88147 1253.565186 1253.64209 1254.386841 1246.957031 1244.71814 1250.865723 1254.873779 1256.192383 1256.751587 1255.949707 1254.065796 1252.636597 1251.401245 1251.036377 1250.808838 1249.922607 1247.627441 1243.5802 1240.600952 1239.739624 1239.974243 1240.804688 1242.042236 1244.014771 1246.58374 1249.051025 1251.483154 1253.866455 1256.080933 1258.635132 1263.841797 1268.965088 1276.70874 1283.46875 1294.00293 1297.619385 1302.386353 1304.991577 1298.907227 1294.592163 1297.908936 1299.323975 1301.436768 1299.515015 1294.228882 1294.564209 1292.70459 1285.751343 1283.623413 1282.780396 1281.591675 1278.478516 1275.541504 1273.779297 1273.259277 1272.059937 1269.00293 1265.724487 1266.907227 1269.283813 1268.67749 1263.588501 1256.23999 1252.7146 1250.737427 1249.493774 1247.696655 1246.091431 1242.928711 1239.478516 1236.338013 1233.248291 1224.309326 1213.274902 1203.233765 1198.017822 1195.022949 1192.877075 1188.431641 1182.312378 1177.104248 1173.245117 1170.731201 1167.242188 1163.458496 1160.954224 1159.115479 1157.766602 1156.532104 1155.019653 1153.974609 1152.552124 1150.695923 1148.962646 1147.025024 1145.174438 1142.909302 1141.556641 1140.821777 1140.175903 +1193.483643 1189.447876 1187.179321 1186.781616 1186.861572 1185.8573 1188.559448 1202.661621 1219.269287 1220.42334 1219.949585 1221.162964 1228.836304 1245.316528 1261.538208 1272.58252 1284.645996 1301.616943 1313.864502 1327.742676 1339.398804 1355.22229 1369.052734 1377.435913 1380.787354 1383.32605 1384.870483 1387.463989 1389.315918 1388.171875 1393.629272 1402.148193 1407.585693 1412.13916 1415.223145 1422.159546 1425.314941 1426.023682 1426.847168 1428.126953 1428.296875 1424.349609 1414.542847 1401.74231 1394.958496 1394.645752 1394.400635 1396.243774 1414.112915 1429.141846 1430.985352 1429.915039 1424.773926 1426.640747 1429.40686 1427.897827 1427.909424 1433.701172 1439.859375 1441.350586 1440.484741 1442.805664 1447.277832 1451.310059 1452.519531 1451.248413 1448.95105 1446.359375 1443.406128 1440.047485 1436.755249 1434.404541 1431.706421 1428.889282 1426.066528 1424.534302 1423.299194 1421.207886 1418.013794 1411.826416 1400.201416 1391.245728 1384.747803 1378.938354 1374.390137 1367.502319 1368.581421 1362.249268 1352.136963 1344.282837 1359.161133 1369.856812 1379.408813 1383.899902 1388.04895 1392.374512 1396.168091 1400.461792 1404.051636 1405.59436 1405.671387 1403.449951 1401.73645 1399.890991 1396.568115 1392.127808 1389.907715 1390.62085 1394.661377 1396.192993 1396.470703 1396.073364 1395.305664 1394.849854 1393.620239 1391.567505 1389.174683 1388.774658 1389.740479 1391.596436 1392.687378 1393.517578 1392.977295 1390.978882 1385.848999 1380.273682 1373.038696 1366.689941 1363.059692 1359.942139 1358.154175 1357.676392 1357.237793 1355.950195 1348.225708 1333.392578 1320.667114 1314.365356 1310.231934 1301.882812 1291.78772 1281.095459 1279.096558 1278.376831 1278.054321 1279.37439 1280.343628 1282.695068 1290.056763 1317.883301 1330.237183 1344.019287 1350.778809 1351.798584 1354.07312 1356.871094 1358.790405 1359.53125 1357.404907 1351.961426 1345.737671 1345.39624 1349.552734 1351.761841 1351.808228 1354.474976 1356.48291 1357.00061 1356.576904 1356.513428 1355.530273 1348.822266 1349.520996 1352.997803 1353.460449 1361.378174 1366.845825 1369.173218 1369.670166 1369.67749 1369.080322 1367.318359 1360.966553 1353.639648 1352.941895 1354.864258 1354.067383 1352.609131 1350.04248 1346.253418 1341.717529 1333.810669 1324.920044 1314.018433 1307.985352 1314.962402 1323.307861 1330.30249 1338.989868 1348.87146 1361.506836 1367.884399 1369.526611 1369.91272 1369.678955 1369.332886 1369.215088 1367.56897 1367.003052 1372.41333 1377.162842 1380.807861 1382.210449 1382.759033 1381.88916 1380.170166 1377.166626 1371.224487 1365.553833 1364.263184 1364.201172 1362.759888 1360.578003 1358.207153 1354.950562 1352.449219 1349.855713 1346.861206 1346.373169 1345.798828 1344.917236 1343.394287 1335.317261 1321.80481 1313.611328 1319.468506 1326.026978 1330.110107 1333.792603 1331.786377 1328.97583 1327.417725 1323.602783 1318.296631 1312.170898 1307.508911 1305.350342 1303.653442 1300.484985 1297.944092 1295.628174 1293.911499 1291.930542 1289.556885 1286.206665 1282.730591 1278.364746 1271.732422 1269.090576 1270.782349 1271.085571 1268.445923 1265.127808 1266.619019 1268.32959 1269.96167 1271.391724 1272.822021 1274.208984 1276.169922 1277.09082 1272.491943 1266.7146 1262.899536 1258.792725 1256.192871 1255.332031 1254.918335 1255.12085 1255.467773 1254.924805 1255.707397 1255.978882 1255.125732 1256.001831 1256.828125 1255.921143 1250.855591 1253.784424 1257.579102 1257.304077 1255.748413 1254.502197 1254.910645 1254.508057 1253.71814 1254.393433 1255.918091 1255.913696 1258.637207 1259.727295 1259.505371 1259.38916 1258.556274 1255.182495 1253.614502 1252.055298 1248.619019 1245.340332 1243.798706 1242.262207 1242.12439 1243.499023 1243.307861 1242.054321 1242.626221 1243.559082 1246.17749 1247.524902 1247.396118 1247.046265 1246.819214 1246.107666 1243.969727 1242.961304 1242.506592 1240.758789 1236.553345 1241.394043 1245.392334 1244.235107 1242.738892 1243.914551 1246.081665 1247.405518 1248.172119 1248.298218 1248.134888 1247.27063 1245.721191 1243.360352 1243.066895 1241.987915 1239.423096 1236.766602 1234.512695 1233.478638 1232.007935 1231.355591 1230.399536 1228.851318 1227.555176 1226.36853 1225.65918 1225.279541 1224.924927 1224.331787 1224.082886 1223.953369 1223.938232 1224.103149 1224.406738 1224.748413 1224.873901 1224.986816 1225.065552 1225.31604 1225.569214 1225.854736 1225.891357 1226.127441 1226.423706 1226.428101 1226.420288 1226.086548 1225.518188 1225.019409 1224.627563 1224.368408 1224.197021 1224.518799 1225.7771 1226.965454 1227.544556 1227.27771 1225.976807 1223.600342 1221.493042 1218.400635 1221.033203 1223.159058 1225.000488 1226.782104 1227.783936 1228.162964 1227.979004 1227.662476 1227.659912 1227.907471 1228.245483 1228.665771 1228.574829 1228.306763 1228.252441 1228.387329 1228.092285 1227.103027 1226.154053 1225.75061 1225.373779 1224.807739 1224.326782 1223.810303 1223.070312 1221.869019 1219.957886 1217.223755 1215.699585 1213.967896 1212.885132 1212.053833 1211.192993 1210.930176 1211.071167 1211.133911 1211.017212 1210.330688 1208.813354 1207.209106 1207.750977 1208.73999 1208.749878 1208.427612 1207.522461 1206.397217 1205.980347 1205.851929 1205.90564 1205.778442 1205.405029 1204.634644 1203.631226 1202.349976 1200.904175 1199.426392 1198.136597 1197.014771 1195.979248 1195.464233 1196.585327 1197.173706 1197.467041 1197.597168 1197.547607 1197.379272 1197.160278 1196.99707 1196.540405 1196.019409 1195.455078 1194.895386 1194.391602 1193.772583 1193.115601 1192.62915 1191.99585 1191.647705 1191.159546 1190.75293 1189.679565 1189.164307 1188.53064 1187.959473 1187.411987 1186.845703 1186.48938 1186.054321 1187.701782 1189.726685 1191.789307 1193.491089 1194.46521 1195.210327 1196.199097 1198.319214 1200.496338 1202.336792 1204.266846 1205.997925 1208.028931 1209.63208 1210.848755 1212.449707 1214.098877 1215.892212 1218.079224 1220.62561 1224.841797 1228.015747 1231.026001 1236.864868 1244.623779 1258.405273 1279.137939 1281.959229 1280.48291 1277.87793 1274.600464 1270.299805 1266.843018 1262.963257 1256.495972 1259.095337 1259.028809 1254.872803 1250.349487 1255.627808 1257.684326 1258.466919 1258.571167 1257.846924 1256.553345 1254.952637 1253.398926 1253.004761 1253.690552 1255.400269 1253.781128 1246.234985 1242.832275 1240.898682 1240.567383 1241.184326 1242.008911 1243.933838 1245.998901 1248.096802 1250.469727 1252.901855 1255.102905 1256.31604 1262.570679 1266.700806 1272.825562 1279.706299 1288.438354 1292.649292 1296.479126 1297.761597 1291.336182 1286.592896 1289.854736 1290.921997 1295.144043 1293.547729 1285.939087 1284.785767 1280.442505 1274.552612 1272.592529 1272.332397 1270.908203 1269.488525 1267.320435 1266.502563 1267.737793 1268.159546 1265.81543 1262.010254 1259.113159 1258.164795 1260.212036 1258.374023 1252.58728 1244.607178 1244.543457 1244.85144 1242.364258 1240.766724 1238.547974 1235.57312 1231.935547 1225.815552 1218.253906 1210.769165 1198.93811 1182.964355 1181.341553 1181.241455 1177.508667 1172.91272 1169.68457 1167.671387 1165.369385 1161.097168 1157.884399 1157.23877 1156.396484 1155.590942 1154.418701 1153.011841 1151.487915 1150.16748 1148.834717 1147.943115 1147.353882 1145.342163 1142.171875 1140.204346 1139.314453 1138.398804 +1194.843262 1191.101196 1187.972656 1186.561523 1186.094482 1186.937012 1194.282227 1218.899658 1244.191284 1250.590088 1252.381104 1253.420898 1254.849121 1252.402344 1250.916138 1261.720581 1277.762207 1291.935059 1305.375732 1318.517334 1332.30896 1345.393799 1359.871094 1375.089111 1382.326172 1387.749878 1389.904175 1392.85791 1394.463013 1390.749023 1398.470703 1407.214722 1414.028809 1419.981201 1427.368774 1432.127563 1436.654663 1437.004639 1435.03479 1433.378174 1431.851929 1428.562744 1416.705444 1402.962158 1400.928833 1401.272583 1404.357178 1404.376465 1411.781494 1427.422119 1432.933716 1434.367065 1432.325806 1433.31311 1434.180176 1433.649292 1433.650635 1436.123291 1440.046753 1441.243042 1438.625488 1438.342041 1440.891968 1444.963623 1448.453003 1450.903442 1450.242432 1448.718872 1446.679321 1443.404907 1440.468262 1438.994873 1436.918457 1433.480103 1430.141724 1428.502563 1427.148193 1424.568848 1421.218384 1416.530396 1406.115112 1394.782349 1387.623169 1382.503174 1378.450806 1373.823486 1369.177612 1360.334229 1350.265991 1348.345337 1362.477905 1375.653687 1381.396362 1385.210938 1389.261719 1393.52124 1397.846191 1401.966431 1405.699951 1407.624512 1408.024292 1406.83374 1405.766724 1404.435669 1401.733521 1396.958008 1392.556396 1390.038452 1395.816895 1398.482422 1399.413208 1399.689209 1399.372925 1398.917603 1398.119263 1396.826904 1395.724731 1395.589233 1396.511597 1398.283081 1399.684448 1400.408936 1400.11853 1395.77771 1390.357544 1382.189819 1374.047729 1367.016479 1363.555786 1360.245728 1358.177856 1357.06543 1356.481445 1354.191895 1345.335815 1330.977295 1314.424194 1302.901733 1295.862915 1286.319214 1279.346924 1279.190063 1279.161133 1280.811035 1281.587769 1281.515381 1283.73291 1286.747437 1292.300537 1324.599854 1342.42395 1351.482666 1354.499512 1355.429199 1357.352295 1360.001587 1362.382446 1362.674927 1358.94104 1352.880737 1351.079956 1350.533936 1354.17041 1355.710571 1355.604492 1357.06543 1359.075073 1360.072021 1360.497681 1360.259521 1358.009766 1353.863037 1354.03186 1356.926392 1358.049683 1361.631348 1365.515259 1368.64624 1370.211304 1369.921753 1368.301758 1365.881348 1361.403076 1357.396973 1358.223877 1359.657104 1358.706909 1356.438965 1353.002686 1346.76416 1338.620728 1327.36438 1319.160156 1312.69873 1308.268799 1321.47937 1330.959961 1339.099243 1345.739136 1353.282349 1364.252563 1368.295288 1368.895874 1368.643188 1368.989502 1369.916992 1370.251221 1369.063599 1369.009766 1373.207642 1378.005249 1382.900635 1386.566772 1386.881714 1384.964233 1382.784912 1380.417114 1375.375244 1366.145508 1367.589722 1368.317993 1367.086426 1364.573853 1361.027954 1357.601318 1355.731567 1353.587036 1350.914185 1348.525757 1346.698975 1345.195801 1342.604492 1334.077881 1315.027832 1317.428467 1335.351196 1343.099609 1340.967041 1336.561646 1334.093018 1332.935669 1332.499878 1327.947754 1323.049561 1319.587769 1314.588623 1310.534912 1307.615723 1304.316162 1302.355713 1300.118164 1297.67749 1294.754883 1291.571167 1286.647949 1282.347656 1276.063232 1270.635254 1274.358765 1277.553345 1275.295288 1271.274414 1267.640625 1266.334717 1268.411621 1270.555908 1272.176025 1273.749756 1275.6604 1278.751465 1281.217773 1278.141602 1270.000122 1266.082031 1262.005127 1258.487915 1256.526855 1255.978882 1256.446777 1257.433472 1255.868286 1257.129028 1258.027222 1257.155151 1257.528198 1258.543823 1257.365601 1252.988525 1255.287842 1258.991577 1259.280273 1256.609497 1256.115234 1257.436157 1257.084473 1255.744873 1256.742432 1259.040283 1259.974731 1261.469482 1262.716309 1263.720703 1264.230835 1263.183105 1259.317017 1258.082764 1256.126831 1253.231812 1249.318481 1246.328369 1243.555542 1244.157837 1246.409546 1245.42395 1242.925293 1244.170654 1246.786865 1250.049316 1253.780518 1253.414917 1251.055176 1249.466675 1247.909302 1246.198608 1244.579468 1244.848145 1244.214355 1236.911499 1244.835938 1246.954346 1245.51062 1244.166138 1245.842651 1247.577148 1248.984131 1249.640991 1249.770752 1249.353882 1248.523804 1246.724121 1245.011108 1245.389771 1244.037964 1241.675049 1239.530029 1237.329346 1235.830688 1234.519287 1233.818726 1232.365845 1230.693237 1229.181641 1228.125854 1227.352661 1226.973145 1226.492554 1225.735962 1225.377563 1225.353027 1225.304565 1225.44519 1225.724976 1225.910889 1226.088623 1226.31543 1226.59314 1226.901978 1227.240967 1227.514771 1227.694092 1227.735474 1227.965088 1228.060181 1227.930298 1227.5979 1226.956909 1226.315186 1225.854492 1225.524902 1225.326172 1225.873657 1227.602661 1229.324951 1230.182129 1230.062256 1228.68335 1225.668213 1222.369873 1219.405518 1219.921631 1222.987793 1225.888672 1228.372803 1229.512573 1229.733643 1229.358276 1228.705444 1228.225952 1228.490845 1229.751099 1230.802002 1230.69751 1230.225464 1230.396484 1230.921875 1231.242676 1230.427856 1229.467896 1228.876953 1228.47583 1227.821777 1226.674561 1225.485718 1224.070923 1222.355591 1220.147827 1218.536987 1218.403442 1217.676025 1216.894653 1216.205322 1215.208374 1214.63147 1214.0979 1213.668823 1213.188477 1212.221924 1210.631714 1208.987671 1209.293335 1209.923828 1209.997803 1209.416748 1208.646606 1207.505859 1206.629272 1206.848389 1207.213379 1207.164429 1206.786987 1205.864136 1204.711914 1203.318115 1201.637695 1200.062988 1198.536255 1197.384277 1196.432983 1196.539673 1197.245483 1197.840698 1198.200195 1198.252319 1198.355103 1198.250122 1198.19751 1197.903931 1197.502808 1196.935181 1196.275391 1195.669189 1195.127808 1194.531006 1193.888184 1193.265869 1192.723755 1192.322876 1191.989502 1191.748291 1190.868774 1190.268555 1189.584229 1188.893555 1188.229614 1187.532715 1186.983643 1186.550537 1187.533325 1189.289062 1190.935547 1192.537476 1193.93457 1195.256592 1195.710327 1197.743042 1199.808838 1201.700073 1203.387573 1205.276123 1207.101807 1208.5177 1209.233032 1210.567505 1212.557617 1214.918213 1217.525269 1220.517944 1222.969482 1225.653198 1229.130249 1234.153198 1241.812744 1253.220825 1268.347656 1283.628296 1282.373657 1280.608643 1277.493774 1274.295044 1271.145996 1268.274536 1264.82019 1264.843262 1260.959351 1256.880249 1254.837646 1257.750244 1259.643799 1260.345459 1260.165894 1259.467529 1258.696411 1257.177856 1255.362061 1254.312256 1254.917358 1256.670898 1257.127563 1253.747559 1247.165161 1243.438354 1241.46106 1241.594727 1241.986206 1242.886719 1244.438599 1246.849121 1249.887573 1253.520264 1256.769897 1261.029053 1266.826782 1267.661377 1269.019897 1276.586426 1280.315674 1285.286621 1292.760986 1293.345825 1283.042603 1278.073608 1279.562744 1279.554077 1286.437378 1284.839355 1278.05542 1277.463867 1274.157104 1268.752563 1264.415039 1263.311401 1262.627686 1261.457886 1260.816772 1261.620972 1267.75708 1268.959595 1268.506592 1257.916016 1253.93811 1247.329346 1250.279541 1251.197144 1248.744629 1244.176025 1239.56665 1233.839111 1234.516846 1233.435059 1234.644287 1232.62561 1224.181641 1215.769897 1209.272949 1201.093018 1188.624023 1180.586914 1177.168579 1173.531982 1169.750366 1168.343872 1166.265503 1163.686401 1161.423462 1158.304077 1156.566284 1155.334717 1154.462524 1153.448486 1152.434204 1151.180054 1149.476562 1147.227539 1146.93103 1146.295166 1146.67981 1145.190308 1141.550537 1139.361328 1137.871338 1136.932739 +1194.857422 1194.244019 1192.760254 1190.194702 1189.494263 1191.321045 1209.509521 1236.17334 1259.121338 1269.219116 1274.626221 1287.635742 1284.52356 1273.873657 1265.921265 1265.443726 1270.950195 1282.136597 1298.235962 1310.400879 1328.21167 1343.604736 1359.093872 1372.556396 1383.649536 1391.360352 1394.910767 1398.295044 1399.226318 1399.684204 1404.832764 1413.738281 1421.968018 1429.119263 1434.337891 1439.698242 1446.119751 1446.953003 1443.410278 1437.665771 1434.54248 1430.250488 1418.104614 1405.41394 1409.584229 1416.713379 1421.977295 1425.205933 1426.194092 1431.643677 1438.395874 1439.100098 1440.37561 1440.351562 1439.648926 1438.769897 1437.168579 1437.190674 1439.362793 1440.185791 1438.578735 1436.478271 1435.94397 1437.786011 1440.237305 1443.498169 1447.086304 1451.063965 1450.124268 1447.046875 1444.209961 1442.157837 1440.743652 1438.059937 1434.450806 1431.965454 1430.119873 1427.929443 1424.447021 1418.683838 1409.594604 1398.375732 1389.261597 1384.484131 1380.146851 1374.876465 1368.565308 1353.563965 1346.802856 1360.129028 1370.165649 1378.121582 1382.334717 1386.228516 1389.824951 1394.514771 1399.165283 1402.98938 1407.671631 1410.396484 1410.991211 1410.224609 1409.272461 1407.741577 1405.203491 1401.315063 1397.713989 1396.983521 1398.945923 1400.270996 1401.618896 1402.94104 1403.421143 1403.509888 1402.730469 1402.561646 1403.321289 1404.327148 1405.387695 1406.81897 1406.606323 1405.344727 1404.21521 1397.470947 1390.705566 1380.017456 1372.160278 1364.842407 1360.133057 1357.67749 1356.702637 1352.309448 1351.849854 1348.795288 1341.272949 1326.675537 1307.869873 1294.87085 1286.32312 1280.029419 1280.194702 1281.4375 1282.822388 1283.791382 1283.948364 1283.970581 1284.915161 1288.282349 1295.349121 1325.571289 1342.202026 1351.963989 1356.771851 1357.393921 1358.964966 1363.294922 1366.054932 1366.405151 1362.703491 1356.780518 1353.414185 1353.376709 1355.925049 1357.827148 1358.987305 1360.645874 1362.196289 1363.282349 1363.651611 1363.940186 1363.060425 1358.109009 1355.585693 1360.711548 1362.902222 1365.940796 1367.959595 1369.96521 1371.481812 1370.574707 1367.344849 1364.783813 1363.356812 1362.484985 1363.45459 1365.743164 1363.92749 1359.232788 1354.807251 1346.990723 1339.121948 1327.215088 1317.826538 1312.245361 1309.955566 1327.336914 1338.244019 1345.430176 1352.106079 1356.099487 1359.342773 1360.819214 1358.588867 1358.600708 1360.279297 1364.093628 1365.98584 1365.255981 1365.237671 1370.458862 1377.289795 1384.325317 1390.495361 1390.398071 1387.473022 1384.942993 1381.878296 1377.47229 1376.605835 1377.067383 1374.661011 1370.482178 1366.097778 1363.03833 1361.084717 1358.07605 1355.402832 1352.064575 1348.380249 1345.531128 1344.269531 1339.77002 1328.362305 1313.965454 1330.515747 1344.636963 1343.99707 1339.377197 1333.030518 1330.752319 1328.731689 1324.526489 1321.380005 1321.078979 1319.30957 1315.786377 1313.249023 1312.188599 1309.670532 1307.191772 1304.817993 1300.498413 1295.926025 1291.069458 1284.275879 1279.435669 1272.685547 1276.943115 1282.09021 1282.586304 1280.630371 1275.800049 1271.328247 1269.069336 1268.17041 1270.556763 1272.668213 1274.587036 1276.647827 1279.113159 1280.927002 1281.68457 1277.564331 1269.096191 1265.512939 1262.225464 1260.60083 1259.142578 1258.174561 1259.286255 1256.588623 1257.462891 1260.296631 1260.508789 1260.414307 1259.660767 1258.071167 1254.704224 1258.09021 1260.769409 1261.464966 1260.632446 1260.835693 1262.275269 1262.44104 1261.258667 1261.324951 1262.766235 1263.957764 1265.189331 1265.697021 1266.880493 1268.950317 1268.986938 1266.567749 1263.760498 1260.24585 1256.481201 1255.310425 1251.042603 1246.503784 1249.148315 1251.422607 1248.161377 1243.335571 1246.532593 1250.5802 1254.921631 1257.848267 1256.923828 1254.165405 1251.929565 1250.585815 1248.963867 1247.678101 1246.987061 1245.196655 1238.257202 1245.999512 1248.743042 1248.416016 1246.692383 1248.692627 1250.140259 1251.10144 1251.447632 1251.344971 1250.852539 1250.052734 1249.077515 1248.069824 1247.425903 1246.003418 1244.028076 1241.690308 1239.44873 1238.054932 1236.642456 1235.051514 1232.758545 1231.057861 1230.127808 1229.551514 1229.095825 1228.934326 1228.077759 1227.084961 1226.762207 1226.854126 1226.850708 1227.016602 1227.106689 1227.260254 1227.355469 1227.543091 1227.919922 1228.373535 1228.767822 1229.230591 1229.338257 1229.381592 1229.575562 1229.666626 1229.49353 1229.016846 1228.616821 1227.859009 1226.993652 1226.543457 1226.655151 1228.233032 1230.134521 1231.429688 1231.997803 1232.10022 1231.353394 1228.318848 1224.506104 1221.295898 1219.467896 1222.728516 1227.393555 1230.633545 1231.216064 1231.339111 1230.664307 1229.330688 1227.722046 1227.426025 1229.852539 1232.342285 1232.335938 1232.2229 1232.314819 1232.049683 1231.955566 1232.0 1232.248901 1231.65564 1231.388794 1230.470825 1228.846069 1226.959595 1225.209961 1223.401489 1221.351562 1220.736572 1220.806274 1220.751709 1220.313965 1219.597412 1218.800537 1217.958008 1217.215698 1216.591919 1215.638184 1214.504395 1213.351807 1212.039673 1211.692017 1211.622681 1211.233398 1210.571289 1209.734741 1208.443115 1207.272339 1207.767334 1208.519653 1208.263916 1207.565186 1206.814087 1205.782593 1204.373169 1202.526855 1200.636108 1199.156738 1198.080688 1197.508179 1197.802734 1198.164917 1198.741577 1199.058472 1199.286621 1199.359497 1199.44104 1199.228882 1198.929199 1198.55957 1197.953979 1197.26355 1196.684692 1196.081787 1195.301392 1194.601685 1193.99292 1193.433594 1193.171021 1193.048706 1192.85791 1192.064941 1191.496582 1190.744385 1189.917114 1189.160522 1188.337036 1187.609009 1187.037476 1187.408447 1188.920044 1190.352539 1192.11853 1194.218628 1195.85144 1196.743286 1197.642334 1199.244507 1200.942139 1202.56543 1204.180054 1205.716431 1206.680664 1207.111206 1208.74646 1211.004761 1213.468384 1216.260742 1218.592041 1220.269775 1222.734619 1226.796997 1230.969849 1238.100342 1247.788696 1260.15625 1281.058838 1283.061523 1282.340576 1280.634644 1278.046997 1274.729736 1271.79541 1270.897461 1268.576172 1262.898193 1257.327271 1256.104614 1259.207031 1261.668213 1262.594238 1262.491821 1261.783936 1260.738525 1259.243408 1257.434204 1255.800659 1255.422119 1256.715088 1257.441895 1256.876221 1250.632935 1245.313843 1242.624878 1241.961426 1242.044189 1242.477295 1243.146973 1245.241089 1249.26709 1253.206909 1257.604858 1263.112061 1268.765747 1269.893433 1271.502563 1274.663696 1277.23877 1279.094727 1283.981934 1285.320557 1279.60437 1274.534058 1273.324219 1274.711426 1278.332275 1276.259521 1271.064819 1271.049561 1269.413818 1264.865356 1258.200806 1254.754395 1255.558228 1253.844116 1253.834473 1256.637085 1259.007324 1259.33667 1256.453857 1251.703979 1247.355713 1241.797974 1241.559448 1244.393066 1245.836792 1242.51123 1236.773804 1231.716797 1228.753662 1227.70874 1227.78833 1224.117554 1217.239014 1210.518066 1201.662598 1189.651123 1180.633667 1177.57666 1173.888062 1170.865967 1168.228882 1165.460938 1163.077148 1160.843628 1158.449829 1156.718872 1154.994995 1153.753784 1152.60083 1151.609497 1150.764771 1149.777466 1148.491577 1146.367432 1145.217285 1144.974121 1144.653931 1143.010742 1140.720825 1138.366699 1136.775635 1135.098877 +1199.019775 1201.183472 1199.340088 1196.531738 1196.67041 1193.910767 1212.762695 1244.615234 1273.507812 1293.845581 1301.843262 1303.204346 1300.110474 1295.010132 1287.095703 1278.523438 1284.965576 1287.71875 1297.387207 1312.252563 1331.315796 1344.989868 1359.859741 1372.246704 1383.293945 1393.252686 1400.056641 1404.199707 1406.190186 1406.635132 1410.846069 1419.871704 1428.700195 1434.190552 1439.434082 1449.206177 1457.021973 1462.12793 1454.242554 1443.342529 1437.296509 1431.515503 1423.365112 1417.021851 1417.785889 1423.410889 1429.867065 1434.612427 1439.901367 1440.28894 1442.054321 1442.529297 1443.274292 1443.065674 1442.377686 1441.521729 1440.471436 1439.019653 1439.02478 1440.150269 1439.217529 1434.817017 1431.610474 1428.741333 1430.296021 1436.602539 1441.700317 1447.346313 1452.608887 1450.244751 1446.176514 1443.664673 1442.234253 1439.929321 1436.883057 1434.294312 1432.127563 1430.089844 1427.223999 1420.40564 1410.760132 1398.564209 1389.74231 1385.078003 1380.730835 1373.754272 1361.064575 1350.973633 1348.846802 1364.181885 1375.045044 1380.495728 1383.953735 1387.115479 1389.650635 1394.786865 1399.663086 1403.642822 1410.296021 1413.566772 1414.095581 1413.678101 1412.554199 1411.055054 1408.374756 1404.442505 1401.885132 1402.679443 1403.00061 1403.11084 1404.55603 1408.818481 1413.614502 1415.873413 1417.324219 1417.309814 1416.800415 1417.123169 1417.345215 1417.37085 1409.333862 1404.547485 1398.980103 1392.321899 1384.391235 1375.453247 1369.564331 1362.337036 1353.593384 1352.024658 1350.147705 1339.031372 1344.403198 1344.62854 1337.268066 1319.733032 1301.34314 1292.401245 1283.042236 1281.322144 1282.500366 1284.150757 1285.61145 1286.631958 1287.48999 1287.903076 1287.52356 1288.142944 1294.182495 1319.686157 1331.544312 1338.54541 1344.483765 1348.920288 1354.140137 1363.523071 1367.781372 1367.761475 1367.322021 1362.014893 1355.508789 1354.655029 1357.732666 1359.980957 1361.73938 1363.832275 1365.493774 1366.782471 1367.140259 1367.865967 1368.013306 1365.79126 1365.818848 1366.4823 1365.872437 1368.536743 1371.073608 1372.922119 1373.938477 1372.809937 1365.908447 1366.325806 1366.928955 1366.858643 1367.688599 1368.115479 1366.339966 1360.663696 1354.967773 1347.308228 1337.227417 1325.776733 1317.543579 1312.023682 1312.901489 1332.058594 1344.709351 1348.798462 1353.411133 1352.742065 1350.759888 1347.806885 1344.033325 1342.159546 1343.359741 1347.037598 1350.147095 1354.90686 1361.01709 1368.333008 1375.75061 1383.376343 1391.945435 1393.042236 1390.012329 1387.728271 1384.929565 1380.738525 1381.137695 1380.868774 1379.376831 1374.315796 1366.534668 1365.754028 1364.414185 1360.586792 1356.461548 1351.731689 1342.220337 1341.526611 1340.205811 1332.337891 1320.994263 1323.380737 1343.801636 1344.248291 1341.030396 1333.082275 1324.382324 1319.235596 1313.817139 1311.397217 1311.705933 1312.129761 1309.529053 1308.117676 1311.630859 1317.612061 1315.611572 1309.467773 1304.787476 1297.892578 1293.122314 1285.834106 1280.229614 1275.581299 1277.077026 1281.944214 1284.717041 1284.820679 1282.852661 1278.349731 1272.934204 1269.384033 1269.403809 1271.298706 1273.348511 1275.350464 1277.367554 1278.901855 1280.53064 1282.566528 1282.725708 1274.766357 1267.905396 1266.001831 1266.741211 1266.282593 1264.62915 1262.906616 1261.387939 1262.824341 1263.672729 1263.797607 1263.770142 1261.649902 1258.994263 1258.567017 1262.976318 1264.629272 1265.226318 1264.976196 1265.888306 1268.675903 1269.922607 1267.721069 1266.458374 1266.802368 1268.447876 1268.762207 1268.90271 1272.196045 1274.144409 1274.203857 1272.555908 1269.540283 1265.516235 1263.191406 1261.415527 1257.87854 1254.040161 1257.382446 1258.045166 1256.976196 1252.890747 1251.570679 1254.058716 1257.329468 1259.658936 1258.559448 1255.314087 1253.818359 1253.152832 1252.18103 1250.488892 1248.166626 1244.932495 1239.773438 1247.047974 1251.384399 1252.153198 1251.813477 1252.424072 1252.908325 1253.587646 1253.668091 1252.960449 1252.420898 1251.854736 1251.452515 1251.116333 1250.709717 1249.114868 1246.558594 1243.189331 1241.259521 1239.985718 1238.589233 1236.371704 1232.782471 1231.610962 1231.550293 1230.930908 1230.416748 1231.363403 1231.086426 1228.287354 1228.18457 1228.351929 1228.466919 1228.483887 1228.501465 1228.550659 1228.63269 1228.774048 1229.061279 1229.575562 1230.342163 1231.002563 1230.967529 1230.766968 1231.18335 1231.235718 1230.790405 1230.380249 1230.199707 1229.730957 1228.439209 1227.590942 1228.495728 1230.248291 1231.961182 1232.416748 1232.582275 1232.857666 1232.630615 1230.49353 1226.447144 1222.318115 1220.186157 1224.09021 1229.563965 1232.369141 1232.533569 1232.404297 1231.779541 1229.326538 1225.346558 1223.00354 1225.446167 1229.106079 1230.075317 1230.629883 1230.957397 1231.59729 1231.968018 1232.111328 1233.441162 1233.602173 1233.121582 1232.044312 1230.160278 1228.218262 1226.661011 1225.095947 1224.034912 1223.160767 1222.828003 1222.675171 1222.170288 1221.713745 1221.191284 1220.475464 1220.075684 1219.356445 1218.254028 1217.444214 1216.123779 1214.746338 1214.101562 1213.860596 1213.179688 1212.266846 1210.986694 1209.236084 1207.509399 1208.760986 1209.544434 1209.41687 1208.669189 1207.799072 1206.889771 1205.531616 1203.426514 1201.271729 1199.738892 1198.864258 1198.790161 1199.037476 1199.353149 1199.775635 1200.140625 1200.387207 1200.644897 1200.565918 1200.545898 1200.270264 1199.812744 1199.244873 1198.542603 1197.77417 1197.013916 1196.082397 1195.089233 1194.686279 1194.146973 1193.997437 1194.070801 1193.977295 1193.344238 1192.833618 1192.057617 1191.056885 1190.175049 1189.269165 1188.351929 1187.733032 1187.294434 1188.10083 1189.36438 1191.277222 1193.426636 1194.77002 1195.585205 1197.278198 1198.647095 1200.130493 1201.587036 1202.975586 1204.240601 1205.470337 1206.383911 1207.829834 1209.901123 1212.244263 1214.674561 1216.676514 1218.039795 1220.271118 1224.650513 1228.883667 1234.168213 1242.765747 1253.2771 1265.11084 1283.016724 1283.432861 1282.451172 1280.79187 1277.795166 1275.429199 1273.072144 1269.692627 1265.698608 1261.708008 1260.033813 1261.917603 1264.051392 1265.461914 1265.420288 1264.455322 1262.803467 1261.151367 1259.3927 1257.512329 1256.044556 1256.247925 1257.706421 1256.667114 1252.351318 1247.574707 1245.056641 1243.848755 1242.262329 1242.51355 1243.379028 1245.685791 1248.934326 1252.793335 1256.284546 1261.498413 1265.919189 1269.541748 1271.583252 1272.814331 1274.473633 1276.71936 1279.300293 1280.924683 1276.453247 1268.17041 1267.687134 1269.165649 1270.504761 1267.725952 1264.42627 1264.444336 1263.108765 1259.863525 1255.796509 1247.049561 1245.704102 1243.899048 1245.366821 1247.085327 1248.741333 1248.993042 1247.895508 1245.932007 1242.222534 1238.747681 1234.638306 1232.87915 1237.535278 1237.090576 1235.017578 1231.512939 1225.606567 1219.937012 1218.804321 1215.623413 1208.341919 1201.375732 1193.90564 1190.674438 1184.670776 1177.223755 1171.122925 1168.658081 1166.342651 1163.373657 1159.978882 1158.186768 1156.611938 1155.108521 1153.445068 1152.102051 1150.945068 1149.953369 1149.390137 1148.903809 1148.039551 1146.357422 1144.483398 1143.39624 1142.584229 1141.134766 1139.755127 1138.053101 1136.217285 1134.960449 +1205.008423 1210.130981 1209.531006 1207.576904 1213.116211 1215.4021 1212.339722 1218.442627 1244.689941 1272.817993 1306.43042 1313.975952 1311.701782 1308.549561 1303.630859 1296.488403 1293.025879 1299.868164 1305.39978 1311.456909 1331.469116 1345.399658 1358.971436 1370.489136 1382.54187 1394.293335 1403.785645 1408.495117 1413.014893 1416.415039 1415.885376 1425.018433 1432.68335 1438.711792 1450.159668 1457.525391 1466.123047 1473.097412 1462.335571 1451.00415 1442.983154 1440.155518 1434.755615 1425.925659 1428.568848 1431.530273 1436.441895 1439.09082 1443.11792 1444.237427 1445.477173 1446.086304 1446.405762 1446.055664 1445.192261 1444.352905 1443.116455 1441.56189 1440.396973 1440.935303 1438.961182 1433.268799 1428.261963 1425.744385 1424.709351 1428.194092 1433.88562 1438.549805 1443.834229 1446.480591 1444.578369 1443.513916 1442.325928 1440.202515 1437.720581 1435.56958 1433.444214 1431.17627 1428.574219 1420.409058 1408.853882 1397.229736 1389.174927 1384.268188 1379.866211 1371.478271 1353.654297 1350.109131 1353.200806 1370.370605 1378.609497 1381.893066 1385.546387 1388.602661 1392.170776 1396.454468 1400.403809 1405.962769 1414.226318 1416.135498 1416.347168 1416.206543 1415.599365 1414.381958 1411.332275 1407.711304 1405.846924 1405.857544 1405.416748 1405.830566 1407.2323 1411.62854 1416.91333 1418.949707 1420.300537 1420.179565 1419.487793 1418.401978 1417.981689 1410.091187 1400.207764 1394.329102 1389.674683 1385.128906 1378.289185 1371.39978 1365.303589 1358.460571 1352.020752 1343.76062 1343.684204 1330.005249 1329.051514 1334.84314 1329.1604 1313.552612 1299.251953 1291.351074 1283.127808 1282.188232 1284.045166 1286.77478 1288.786377 1290.002319 1291.343628 1292.655518 1292.983887 1292.080566 1291.379761 1306.12793 1316.254028 1319.720093 1322.468262 1328.642822 1347.294434 1357.869141 1365.369141 1367.156372 1367.416504 1365.932861 1361.900635 1360.867798 1361.375854 1362.456543 1363.664673 1366.421387 1368.644531 1370.517578 1371.78064 1372.135742 1371.643311 1369.97168 1370.396851 1371.650635 1372.578857 1373.193237 1374.341187 1375.461304 1376.524292 1376.281494 1375.895874 1374.222534 1372.635986 1371.818848 1370.559326 1369.091553 1366.41687 1359.906372 1352.8479 1346.77063 1336.557373 1323.213989 1315.311279 1311.299561 1316.279175 1329.554688 1341.455078 1342.688843 1341.692139 1340.676147 1338.362061 1336.063354 1340.390747 1343.486816 1344.380981 1345.022339 1345.421509 1348.828491 1356.613281 1365.109009 1372.629883 1380.974976 1390.997192 1400.783936 1397.523315 1390.458496 1388.38855 1386.334473 1384.572388 1382.941162 1380.355225 1376.706787 1373.96521 1370.686035 1367.959961 1363.199951 1357.072021 1350.543213 1341.886475 1335.517334 1331.234375 1328.512695 1333.476929 1343.791626 1343.884766 1340.846191 1335.767822 1326.244751 1312.296387 1304.543091 1304.020996 1304.272705 1304.028442 1303.337891 1302.386597 1302.712891 1303.454102 1317.871094 1317.630005 1306.094604 1293.726807 1285.78186 1280.870483 1277.773315 1277.28186 1279.561768 1283.102051 1285.620728 1287.498291 1287.286377 1284.628296 1279.89856 1273.426392 1269.191406 1270.480347 1272.467041 1274.460205 1276.384644 1277.875122 1279.309448 1280.93457 1284.684204 1285.523071 1280.440063 1271.572021 1271.95166 1273.725464 1272.646973 1270.09314 1267.14563 1266.983887 1268.397461 1267.398926 1267.551392 1267.825317 1265.389038 1262.776855 1268.344482 1269.954346 1268.96814 1269.690308 1269.513916 1266.936646 1275.433105 1278.177856 1275.14917 1273.640869 1273.669434 1275.145996 1278.003784 1280.394653 1280.569336 1280.693237 1280.307251 1279.678589 1277.32666 1274.327026 1271.495728 1267.329712 1262.832886 1262.443359 1263.50769 1263.483154 1261.380493 1258.687866 1255.32666 1258.045044 1261.019897 1261.987061 1260.136475 1255.79834 1256.619751 1256.392822 1255.26123 1253.011353 1250.670166 1246.228149 1240.072021 1247.770508 1255.058228 1255.348022 1255.088257 1255.400146 1255.48584 1255.976807 1255.810547 1254.390381 1254.03125 1253.455811 1253.231201 1253.404175 1254.55603 1254.486084 1251.286499 1245.739746 1243.232422 1241.963501 1240.858887 1239.966675 1237.768066 1235.718506 1234.254028 1232.601929 1231.80542 1232.633789 1231.667114 1229.900269 1230.24646 1230.207642 1229.944824 1229.925415 1229.983398 1229.978271 1229.995239 1230.109253 1230.409058 1230.822021 1231.615845 1232.584717 1232.594849 1231.996826 1232.859863 1232.668213 1232.094482 1231.718994 1231.760864 1231.582886 1230.335083 1228.895264 1230.130615 1231.947632 1232.58252 1232.836182 1233.236084 1233.351807 1233.236572 1232.216187 1228.035034 1223.278442 1221.043335 1224.197998 1228.841064 1232.580444 1233.337402 1233.55127 1233.12439 1228.773071 1219.131592 1218.75647 1219.426392 1222.679199 1225.121704 1227.730469 1229.653198 1230.944092 1232.11438 1233.427368 1234.38562 1234.393433 1233.491211 1231.869751 1230.28479 1228.895386 1227.755859 1226.824219 1226.039185 1225.278931 1224.940552 1224.520874 1224.169556 1223.661133 1223.207153 1222.604736 1221.920654 1221.308228 1220.623169 1219.678833 1218.336548 1216.741211 1216.432007 1216.3479 1215.741211 1214.549438 1213.078979 1211.533691 1210.31189 1210.410645 1210.674438 1210.558594 1209.856934 1208.966675 1208.01001 1206.75293 1204.490112 1201.832031 1200.436035 1200.069946 1200.072266 1200.368042 1200.7771 1201.125732 1201.34729 1201.695068 1201.942627 1202.141235 1202.112183 1201.920776 1201.461426 1200.754395 1199.964966 1199.034668 1198.030762 1197.139526 1196.240723 1195.464722 1194.781006 1194.854004 1194.91626 1195.035034 1194.659546 1194.057739 1193.393921 1192.447266 1191.351685 1190.422852 1189.416382 1188.637817 1188.076294 1187.843018 1188.741455 1190.731201 1193.093018 1195.477417 1196.260742 1197.11438 1198.092041 1199.327148 1200.701904 1202.060669 1203.542969 1204.678833 1205.867065 1207.038574 1209.081665 1211.170166 1213.181396 1215.183838 1217.236084 1220.181885 1223.449219 1227.106934 1231.156128 1238.288696 1246.30957 1256.420654 1269.309448 1281.413696 1283.303345 1282.619385 1281.173462 1278.672607 1275.742432 1271.886841 1268.113037 1265.657715 1264.22644 1265.342163 1266.95752 1268.26709 1268.17627 1266.974121 1265.461792 1263.652954 1261.720825 1259.807739 1258.084473 1257.991211 1258.519897 1256.342896 1254.562988 1252.460327 1248.725586 1245.944458 1243.195923 1242.793701 1243.190674 1244.968994 1247.97937 1251.501099 1254.524902 1258.563354 1264.091553 1268.904663 1270.118652 1270.602905 1271.54187 1273.759155 1275.628906 1276.046265 1273.147705 1267.19519 1262.366211 1263.018677 1263.859619 1259.631226 1254.722778 1257.444824 1257.22876 1254.850708 1250.285645 1243.923706 1239.334351 1234.396973 1236.096924 1238.108154 1238.682861 1239.007202 1239.363037 1238.096313 1236.274902 1234.567993 1232.081787 1228.070679 1230.110352 1231.565308 1231.109131 1227.043091 1222.736328 1219.139282 1216.322754 1212.169678 1208.296875 1209.02478 1210.102783 1196.788818 1184.43335 1177.249023 1170.541382 1167.491089 1165.045166 1162.543213 1159.549805 1157.633423 1155.545288 1153.73999 1152.051514 1150.431152 1149.098633 1148.346802 1147.928955 1147.508545 1146.826172 1144.721313 1143.147461 1142.153076 1141.136841 1139.729248 1138.531006 1137.53479 1136.480103 1135.367798 +1210.154907 1216.115356 1218.45459 1216.812378 1226.191162 1238.453979 1254.224976 1257.1427 1259.57019 1270.808838 1304.961426 1323.909668 1323.126221 1319.395508 1314.687012 1307.649902 1301.823608 1308.395996 1316.553955 1318.070679 1329.575073 1346.274414 1358.91272 1370.790894 1384.025879 1396.23999 1405.880493 1412.485718 1418.293213 1422.283081 1423.358887 1428.596436 1437.218872 1447.985962 1456.764526 1463.785034 1477.863281 1481.257202 1464.101196 1451.776855 1447.7948 1445.107544 1442.926025 1439.32666 1440.290161 1441.882935 1442.434692 1443.415649 1446.330688 1447.953735 1449.272827 1449.570679 1449.866333 1449.135864 1447.98645 1446.782593 1445.784302 1445.001831 1444.358276 1442.372437 1438.782104 1433.067261 1426.568726 1423.76416 1421.365234 1420.296631 1424.329712 1427.537842 1432.915894 1437.0354 1439.126465 1441.69751 1442.473755 1440.753296 1438.580933 1436.412354 1434.401123 1431.82312 1428.731812 1419.380005 1405.375854 1394.942749 1388.292603 1382.798828 1376.460205 1366.449951 1354.601318 1350.497192 1359.013916 1379.164917 1381.768066 1384.322876 1387.51001 1389.55249 1394.287354 1398.848022 1402.713013 1412.426514 1416.211914 1417.564941 1418.069214 1417.839111 1417.315552 1416.29187 1414.847534 1411.812256 1409.418091 1408.662354 1407.955933 1407.192871 1407.249512 1409.516602 1415.464844 1419.100586 1419.862061 1419.801758 1417.226074 1413.701416 1409.863403 1401.266357 1394.020386 1387.2854 1382.662354 1377.758179 1371.130615 1366.095947 1357.76355 1351.275024 1345.371704 1331.619263 1326.654297 1319.86084 1317.887085 1322.217896 1318.560913 1306.93396 1296.952881 1290.550659 1285.343506 1282.825073 1286.02002 1289.924561 1292.246094 1293.446655 1295.864258 1298.032959 1298.656128 1298.019043 1295.859619 1299.095581 1303.756958 1308.931274 1314.128906 1328.080444 1341.727905 1355.091187 1361.795654 1365.040771 1366.940308 1367.004395 1365.804443 1365.744507 1365.033691 1365.158691 1365.078979 1368.061768 1371.268433 1374.106323 1376.359863 1377.394653 1375.871948 1374.860962 1375.884399 1377.027954 1378.209473 1378.050659 1376.97876 1377.527466 1378.678589 1379.220337 1379.760254 1379.96106 1377.995605 1375.599365 1372.660034 1369.687378 1366.44043 1359.187134 1352.075073 1345.767822 1331.659912 1317.064697 1312.71936 1312.154175 1317.516479 1324.276123 1329.284668 1330.139282 1330.828857 1332.481079 1344.689819 1346.133545 1347.68689 1348.8396 1351.505493 1353.985596 1353.075195 1348.584839 1351.456421 1360.761719 1369.005249 1377.652466 1388.299072 1399.492432 1404.939453 1397.872559 1392.081787 1389.870117 1387.788818 1385.25647 1382.69165 1380.317749 1379.121094 1375.439331 1369.483276 1362.872803 1355.891602 1348.144775 1340.363525 1332.384766 1334.189941 1340.324097 1344.414673 1345.427612 1341.570557 1336.969727 1331.682861 1317.85437 1311.953491 1309.515503 1309.619385 1309.919922 1309.476196 1307.828369 1305.102661 1301.866821 1298.72998 1296.149292 1300.152222 1292.648926 1285.69397 1280.545166 1281.731812 1283.207031 1283.745972 1284.910156 1287.329468 1289.900757 1291.101685 1290.572021 1286.810913 1281.397827 1272.977051 1270.257935 1271.678589 1273.769409 1275.761353 1277.458252 1278.644531 1279.914185 1282.755493 1289.733398 1290.990356 1286.727661 1282.627563 1282.605103 1282.298828 1281.067505 1279.241455 1273.533691 1273.487793 1274.023926 1273.019775 1272.692993 1271.84729 1269.131836 1269.395386 1276.425171 1279.87146 1282.092163 1283.022095 1281.715942 1281.004272 1284.532349 1285.181274 1283.700195 1283.613892 1282.182861 1281.977783 1284.538086 1285.900024 1286.663818 1286.781616 1285.607178 1284.062744 1282.266357 1281.944458 1278.886963 1273.824097 1268.779663 1270.855957 1271.463257 1269.814819 1266.196045 1265.168945 1264.903442 1265.675171 1266.528198 1265.470947 1263.185547 1261.067383 1260.681274 1260.05481 1258.114014 1256.075439 1255.427979 1249.01709 1241.089355 1251.630981 1257.433472 1257.782593 1257.833252 1257.460327 1257.534546 1257.789185 1257.365234 1255.871582 1256.076172 1254.989136 1254.45874 1255.005981 1256.735596 1257.214355 1256.645386 1251.467285 1246.158569 1243.825073 1242.699097 1243.250732 1243.723877 1241.846191 1238.55957 1235.784912 1234.322876 1233.21936 1231.280884 1232.391602 1232.419312 1231.714355 1231.085205 1231.118164 1231.384888 1231.380371 1230.998291 1231.142334 1231.79187 1231.923096 1232.888184 1234.165283 1234.327881 1234.356079 1234.59314 1234.508667 1234.216431 1233.741211 1233.698242 1233.583496 1232.729736 1230.327759 1231.115723 1232.533813 1232.975952 1233.366211 1233.633179 1233.693237 1233.584351 1232.789429 1230.681152 1226.255981 1221.557007 1224.241211 1227.704102 1231.942505 1233.773926 1234.005981 1234.208862 1231.397095 1222.671875 1217.231934 1218.070435 1219.023193 1222.14563 1226.90979 1229.357422 1231.675415 1233.610107 1234.927124 1235.505371 1234.918945 1232.88269 1231.422241 1230.269043 1229.487061 1228.843262 1228.375977 1227.741089 1227.161133 1226.778809 1226.593872 1226.019165 1225.471436 1225.099854 1224.473511 1223.616211 1222.934692 1222.255737 1221.247559 1219.684937 1218.559326 1218.883301 1218.883545 1218.170898 1216.760132 1215.474854 1214.357178 1213.309448 1212.801758 1212.453247 1211.793945 1211.01709 1210.108765 1209.058472 1207.850952 1205.608398 1202.835693 1201.399414 1201.429565 1201.592407 1202.008057 1202.409546 1202.525879 1202.74939 1203.052979 1203.412476 1203.727417 1203.934814 1203.749146 1203.338867 1202.645752 1201.549316 1200.46167 1199.253296 1198.075928 1196.925171 1195.582275 1195.248047 1195.653564 1195.866089 1196.068604 1195.756714 1195.287354 1194.603882 1193.757935 1192.692383 1191.595459 1190.568604 1189.687256 1189.005737 1188.618652 1188.321045 1189.364502 1192.069702 1194.866577 1195.889648 1196.558105 1197.23877 1198.318481 1199.741821 1201.217163 1202.686523 1204.102051 1205.5448 1207.227783 1209.002319 1210.057495 1211.493408 1214.097046 1216.966553 1219.544678 1222.221313 1225.207275 1229.08374 1233.976196 1240.587769 1248.065918 1257.902832 1269.435181 1277.673218 1283.574585 1282.989624 1281.886597 1279.143921 1274.678223 1269.664429 1267.30127 1266.339966 1267.636597 1269.200439 1270.279419 1270.24939 1269.087769 1267.743652 1266.109619 1264.234497 1262.430298 1261.183594 1260.7229 1260.026001 1258.572266 1257.719482 1256.55542 1252.493408 1248.186523 1244.499023 1243.478027 1242.959351 1243.761719 1247.144897 1250.13147 1252.843018 1255.772705 1260.069214 1265.601807 1267.141235 1267.692749 1268.301758 1270.839233 1272.060913 1272.810303 1271.053955 1265.439819 1256.609497 1257.503418 1259.163818 1255.643311 1249.791626 1250.020874 1249.93103 1248.851929 1247.224609 1242.849731 1235.298096 1229.228516 1226.984253 1230.389648 1230.365723 1230.033203 1230.287964 1230.32959 1230.13269 1228.906006 1224.977173 1219.81604 1222.950073 1223.715942 1222.965942 1220.67041 1218.709839 1216.598633 1214.698975 1212.47998 1210.643677 1209.405273 1207.144897 1193.72229 1184.386475 1175.739624 1170.262085 1167.325073 1164.495728 1162.096924 1160.367554 1158.024414 1154.799805 1152.256836 1150.462891 1149.00647 1146.992065 1146.373291 1145.93396 1144.931152 1143.762573 1143.020508 1142.03064 1141.371216 1140.023438 1139.258057 1138.211304 1137.353882 1136.519165 1135.745605 +1217.260986 1221.834351 1229.652588 1236.816895 1238.825317 1256.124023 1276.126221 1290.580078 1296.222656 1301.962769 1307.343506 1332.118286 1333.841431 1332.684814 1329.130371 1321.542358 1311.159668 1318.050415 1329.319702 1341.577393 1345.330811 1351.705322 1366.416992 1377.509644 1385.883545 1396.670166 1407.881714 1415.319946 1424.860474 1429.484863 1431.680054 1436.634399 1443.977295 1453.973755 1461.453247 1473.060791 1487.094238 1488.443481 1468.668701 1458.017456 1450.889893 1448.315308 1447.653076 1446.030396 1445.974854 1446.818359 1447.350342 1448.098145 1449.746948 1451.672607 1453.084717 1453.572388 1453.463257 1452.200439 1450.401001 1448.831787 1448.35498 1448.630737 1448.277344 1445.411987 1440.887451 1435.67334 1429.984985 1424.963501 1419.150879 1413.588501 1413.990601 1418.460815 1423.272705 1427.429199 1429.220947 1433.098389 1441.416016 1441.246826 1439.569458 1437.36853 1435.241821 1432.266479 1428.897949 1418.581665 1403.255127 1394.329224 1388.555176 1383.327148 1376.919556 1367.605713 1359.591431 1352.450317 1361.726685 1379.915649 1383.083252 1387.046875 1390.519043 1392.976196 1397.416138 1402.498291 1412.584106 1416.512451 1417.851685 1419.178955 1419.626221 1419.498535 1418.865723 1417.810791 1416.397827 1413.872192 1411.802612 1411.301636 1409.944336 1407.76123 1405.526733 1403.065552 1406.195923 1413.655396 1416.901245 1415.462646 1410.473511 1404.922363 1400.913208 1395.598022 1389.425537 1383.489624 1378.728882 1366.320679 1360.531128 1356.208618 1347.373413 1336.99292 1333.594849 1326.425415 1316.793457 1314.037476 1312.247192 1313.055298 1309.505005 1302.540405 1294.109741 1289.845581 1286.118896 1283.92749 1288.054443 1292.592285 1296.589111 1300.70752 1304.175049 1305.092285 1305.206543 1304.820801 1303.849976 1297.745972 1299.090088 1305.283813 1321.098267 1333.657471 1346.420654 1357.316772 1362.096191 1365.876343 1367.014038 1367.995239 1368.215576 1367.981445 1367.368164 1368.18042 1369.371338 1371.656006 1375.046753 1377.763794 1379.556152 1379.80542 1379.142212 1378.050781 1378.96582 1379.654663 1380.194336 1379.916382 1379.485474 1379.522461 1379.682251 1379.733521 1380.045044 1380.018311 1379.521606 1376.963501 1373.147705 1369.180908 1364.268066 1356.3479 1347.814209 1340.590332 1323.170654 1312.957886 1314.120728 1317.365723 1319.289062 1321.096069 1324.016602 1327.511108 1336.132812 1345.094604 1350.012207 1352.936646 1354.662109 1353.158813 1355.474121 1356.788208 1356.519287 1354.441284 1349.415649 1356.294556 1364.667847 1372.851562 1382.222046 1392.974731 1397.697144 1396.459229 1393.097656 1391.386353 1389.604736 1386.726562 1384.369873 1382.36084 1380.634155 1377.614014 1368.427002 1360.359497 1351.975464 1345.093506 1340.707153 1345.074585 1347.940186 1348.381348 1346.821899 1344.639648 1339.031128 1333.044678 1322.023071 1313.402588 1313.920166 1315.66748 1315.134521 1315.481323 1316.430542 1314.838379 1310.511597 1305.057739 1299.626953 1292.448975 1290.026001 1285.86084 1283.023438 1284.849365 1286.879761 1288.079712 1288.740967 1289.435669 1291.417725 1294.338257 1295.538086 1294.609375 1290.570068 1282.10022 1271.528931 1271.536743 1273.008179 1275.036499 1277.095337 1278.610596 1279.777344 1280.424927 1284.233643 1291.404419 1294.78064 1293.983032 1290.640137 1288.31897 1287.318604 1286.865112 1285.555298 1282.917847 1282.05127 1281.749512 1281.198975 1279.504272 1276.775513 1273.212646 1278.652954 1283.360107 1285.200684 1286.529541 1287.448486 1287.031006 1287.858765 1290.34729 1291.821899 1291.746216 1290.296875 1289.115112 1288.564941 1288.817383 1290.322998 1292.275024 1293.252075 1290.135986 1285.966431 1284.158569 1284.445679 1284.506958 1281.612793 1281.330322 1282.794312 1282.681763 1281.320068 1276.421875 1274.365479 1273.144409 1271.442871 1270.398682 1268.711426 1267.23938 1266.217163 1265.549927 1264.311523 1262.324341 1260.373901 1258.346313 1252.939209 1243.508423 1250.491333 1258.334717 1259.910156 1260.197876 1259.711182 1259.478516 1259.379883 1258.598145 1257.793823 1257.451538 1256.379883 1256.133667 1256.342651 1257.771851 1258.1521 1257.61853 1255.849365 1251.168457 1247.677979 1246.344971 1247.040527 1246.921265 1245.71875 1242.930298 1239.236816 1236.269043 1234.049072 1233.153564 1236.859619 1237.565674 1235.276611 1232.693481 1232.868896 1233.492554 1233.144043 1232.110718 1231.826294 1233.792725 1234.482422 1235.11438 1235.878906 1236.503906 1236.590332 1236.754272 1236.611572 1236.584229 1236.774536 1236.614868 1236.294678 1234.943726 1233.510498 1231.343994 1232.731567 1233.36731 1233.679932 1233.938721 1234.021484 1233.996582 1233.585205 1232.859009 1231.699585 1226.105835 1222.984009 1225.082031 1230.972412 1233.585083 1233.795776 1234.095825 1233.531128 1230.08728 1221.92688 1218.814819 1219.967285 1223.734375 1229.736694 1231.681152 1233.616577 1236.112183 1237.334351 1237.227417 1235.976807 1233.268188 1231.989136 1231.426636 1230.674927 1230.080688 1229.705322 1229.400024 1229.035034 1228.864014 1228.535156 1227.970093 1227.293213 1226.947266 1226.318604 1225.490845 1224.77124 1223.947144 1222.795166 1221.210693 1220.576538 1221.151611 1220.951904 1220.307373 1219.090942 1217.887207 1216.830566 1215.735107 1215.10437 1214.477905 1213.469604 1212.341064 1211.254517 1210.044189 1208.520508 1206.586304 1203.814941 1202.540039 1202.722656 1203.295898 1204.01416 1204.325684 1204.335938 1204.135864 1204.300049 1204.713379 1205.386475 1205.752075 1205.753296 1205.470703 1204.658691 1203.351929 1202.026611 1200.697876 1199.384399 1197.901855 1195.963135 1196.025757 1196.660156 1196.954346 1197.135254 1196.865845 1196.351685 1195.672485 1194.928101 1194.014282 1192.924683 1191.837158 1190.868774 1190.029297 1189.417236 1189.040649 1188.788452 1190.393433 1192.926636 1194.270142 1195.228394 1195.745117 1196.770264 1198.876465 1200.539185 1202.05896 1203.423584 1204.758301 1206.364868 1207.567993 1208.118286 1208.931274 1212.663452 1215.756348 1217.993896 1219.942261 1222.986938 1226.909058 1231.047485 1236.404175 1241.706421 1248.657349 1257.765259 1266.025269 1278.033936 1284.585083 1284.470337 1282.509766 1277.991943 1271.918091 1267.879028 1267.223389 1268.822388 1270.465088 1271.69397 1271.922607 1271.02478 1269.968262 1268.291382 1266.39856 1265.060425 1263.658203 1262.530396 1261.670776 1260.549072 1259.28064 1257.765015 1255.228638 1250.520264 1247.207886 1244.255493 1243.09729 1244.959961 1246.710693 1249.486084 1251.932373 1253.941895 1256.291016 1260.124512 1262.935181 1264.899536 1266.526123 1268.400635 1269.67041 1270.941528 1269.958862 1261.992554 1254.253296 1253.008179 1255.038452 1248.664429 1242.366821 1242.885376 1243.298218 1243.18457 1243.163818 1239.920288 1234.661133 1227.490112 1218.324951 1220.806885 1223.089111 1223.919312 1224.013672 1223.795654 1222.799072 1221.02478 1218.067261 1216.194458 1217.581177 1216.652466 1215.527954 1215.889893 1215.296387 1213.717896 1212.260376 1210.950195 1209.067261 1207.005493 1198.032349 1188.502319 1180.486938 1174.016724 1169.674683 1166.227417 1163.304932 1161.385742 1159.694946 1156.76709 1153.00354 1150.621948 1149.007446 1147.998657 1147.853516 1146.837036 1146.060547 1145.560303 1145.080566 1144.421875 1143.167847 1141.267334 1140.756592 1140.435913 1138.925049 1137.138062 1136.356079 1135.63916 +1218.259521 1222.167114 1236.303955 1256.782959 1264.713623 1271.169556 1284.387451 1307.620728 1324.977905 1331.091064 1326.217896 1341.460083 1343.747803 1341.970581 1339.469727 1333.306519 1323.738403 1325.775757 1342.775391 1354.729614 1359.833374 1360.745239 1370.039795 1381.307861 1390.406128 1403.403931 1411.688599 1421.653687 1430.794067 1436.512695 1441.487549 1445.099609 1450.066406 1458.039551 1467.033447 1480.958374 1495.243408 1495.595337 1476.644043 1465.423706 1456.021118 1452.899536 1452.723022 1449.886963 1450.702637 1451.923828 1451.780273 1451.492554 1454.299438 1456.575562 1457.580566 1457.63623 1457.286743 1455.9729 1453.621948 1451.089111 1450.384155 1451.369873 1452.349121 1449.89624 1443.948975 1438.797241 1432.950073 1427.699829 1421.474365 1415.67041 1411.997192 1410.485474 1411.641479 1413.706665 1416.658691 1422.614136 1432.317261 1440.101318 1440.509399 1438.883057 1435.997925 1433.175903 1430.193604 1423.864014 1408.642944 1398.072388 1391.316284 1386.53894 1381.327515 1373.694458 1363.453979 1354.373291 1362.308838 1379.799805 1383.318115 1388.275879 1392.498901 1396.273438 1401.368286 1408.453857 1416.717773 1419.09729 1420.300049 1421.132324 1421.488281 1421.129272 1420.390015 1419.166382 1417.319214 1414.44043 1413.9104 1413.852417 1411.952393 1408.387207 1404.758545 1398.3396 1396.371338 1401.421753 1405.404297 1405.409424 1400.805176 1396.650513 1393.542236 1389.800049 1384.221313 1378.740479 1369.667114 1355.762573 1348.222534 1344.956299 1340.041138 1331.361938 1323.160522 1320.71936 1316.500122 1310.651367 1306.855591 1307.350098 1304.383545 1299.432129 1294.145264 1290.144531 1286.647339 1284.979004 1289.773804 1295.951172 1302.349365 1306.996216 1309.206177 1309.736694 1309.490967 1309.263062 1308.479492 1305.324707 1301.529541 1300.94751 1319.275635 1332.389893 1338.196167 1355.963501 1365.737915 1367.699341 1368.503418 1369.023071 1369.354004 1369.594604 1369.932495 1371.026123 1373.262329 1375.997192 1378.425903 1379.630493 1380.302246 1380.222168 1379.76416 1379.293579 1379.559814 1380.099976 1380.244995 1380.19458 1379.97937 1379.918335 1379.877319 1379.531006 1379.404907 1379.681641 1379.229126 1376.92041 1371.692017 1367.967529 1362.219238 1353.123535 1339.947021 1331.230957 1319.021973 1314.287109 1317.593262 1323.545044 1329.567139 1329.364624 1334.764404 1339.722534 1344.214233 1352.542114 1357.434814 1359.440918 1359.87146 1358.669067 1359.353394 1359.897217 1359.1604 1356.552612 1351.494019 1353.352539 1360.988647 1367.61792 1374.324585 1381.53894 1386.783936 1389.448608 1390.99585 1390.648315 1389.162842 1387.373413 1385.759521 1383.753662 1381.240723 1375.873779 1365.116577 1362.321777 1357.066162 1355.049683 1354.395264 1355.767456 1353.815552 1351.142212 1346.908325 1342.452271 1333.256958 1327.032593 1314.850586 1323.822632 1328.979492 1328.274048 1323.640503 1324.948486 1328.02771 1326.522095 1318.842285 1313.437744 1306.436157 1296.052246 1288.85144 1284.743164 1286.613037 1289.83728 1292.048584 1293.517212 1293.092041 1292.077759 1295.95813 1300.506714 1302.268921 1300.372437 1295.151001 1280.233521 1271.582642 1272.676025 1274.451904 1276.597412 1278.456055 1280.165649 1281.798828 1283.16333 1286.277344 1290.867065 1294.110352 1297.814087 1297.532837 1292.10144 1292.608521 1291.654053 1290.817261 1289.968262 1289.467407 1288.653809 1287.057007 1284.651855 1281.717407 1279.544189 1284.629883 1288.259521 1289.722168 1290.2323 1291.646851 1292.455811 1291.891602 1295.487549 1297.734741 1298.228027 1297.762573 1296.137329 1294.13501 1293.616211 1294.291138 1294.146973 1293.793945 1290.693115 1285.96521 1284.002563 1283.965088 1284.351685 1283.987183 1283.801392 1283.588745 1283.375122 1283.559448 1283.368164 1283.193237 1279.456787 1272.700806 1270.762207 1270.192871 1269.915649 1270.153564 1269.603027 1268.944336 1266.760376 1263.539917 1259.364014 1254.001953 1244.924072 1248.180786 1260.623657 1262.531738 1262.770752 1262.16394 1261.396851 1260.812744 1260.203857 1259.415527 1258.856445 1258.15332 1257.498169 1257.61731 1258.689453 1258.873901 1258.308228 1256.619019 1254.891357 1252.613647 1251.725952 1251.605957 1249.943359 1247.458374 1244.097046 1240.520752 1237.664917 1235.171753 1237.175903 1244.523438 1244.731079 1241.584595 1238.343262 1236.9823 1236.567505 1236.00293 1234.821045 1233.532471 1235.709717 1236.965332 1237.833618 1238.638428 1238.928711 1238.874634 1239.001221 1239.028076 1239.202271 1239.592773 1240.311646 1240.358643 1238.143311 1235.167725 1232.421021 1232.77771 1233.547729 1233.993896 1234.288818 1234.459473 1234.478271 1234.178955 1233.718506 1232.935791 1232.01355 1227.209595 1224.467041 1229.586914 1232.549805 1232.599976 1233.822266 1234.189819 1233.599487 1231.199585 1231.048706 1230.462158 1230.224976 1233.674194 1237.000488 1239.945068 1240.489502 1240.32312 1239.502563 1237.741699 1235.815186 1234.168213 1233.259521 1232.294312 1231.398071 1230.677002 1231.185059 1231.275635 1230.989014 1230.39917 1229.670044 1229.03125 1228.705688 1228.142212 1227.417358 1226.530762 1225.568848 1224.745972 1223.836548 1223.380493 1223.04541 1222.773438 1221.991821 1220.646118 1219.275024 1218.814819 1217.866943 1217.436157 1216.607056 1215.375244 1213.901733 1212.460938 1210.940552 1209.401489 1207.876587 1205.775024 1203.691895 1203.993408 1205.300659 1206.263306 1206.414185 1206.010498 1205.474854 1205.525391 1206.11792 1206.891113 1207.365601 1207.530518 1207.302124 1206.511108 1205.237549 1203.762573 1202.283325 1201.005249 1199.739868 1198.716675 1198.097778 1198.089233 1198.130859 1198.179688 1197.849365 1197.405762 1196.703735 1195.953491 1195.226562 1194.240967 1193.150879 1192.092896 1191.194824 1190.486328 1189.872559 1189.472656 1189.281372 1191.970825 1194.513428 1195.354004 1195.549316 1196.290161 1198.413086 1200.071777 1201.449829 1202.873413 1204.217407 1205.450806 1206.410278 1207.130371 1208.271729 1211.462646 1214.22168 1216.350586 1218.239014 1221.009521 1225.054321 1229.071045 1233.283203 1237.472778 1241.933716 1248.14563 1255.685791 1266.070923 1283.317505 1287.109253 1285.828125 1281.812134 1274.927368 1268.339966 1267.776611 1269.410767 1271.841675 1273.23584 1273.712158 1273.254639 1272.170776 1270.50354 1268.486816 1266.85498 1265.16687 1264.091431 1263.009521 1261.774414 1260.079834 1258.152954 1255.099854 1252.027344 1247.654785 1243.703491 1244.28418 1245.035278 1247.726807 1250.07312 1251.900146 1253.488525 1255.066528 1257.355469 1260.881592 1263.305542 1264.956787 1266.118652 1266.822021 1267.717041 1265.661743 1259.161987 1252.42041 1246.632812 1246.477905 1243.546753 1239.466797 1235.054932 1236.279053 1237.418701 1238.80481 1236.969238 1233.779907 1227.265625 1219.818726 1211.8125 1214.500122 1217.014893 1217.663208 1217.306885 1215.289551 1209.317627 1209.775879 1212.820557 1211.763184 1208.015625 1206.960083 1211.551636 1212.283691 1211.032593 1210.084961 1209.089722 1206.817017 1198.752075 1191.344482 1184.003662 1177.018066 1171.339233 1167.626953 1164.125977 1161.735596 1159.954956 1157.648804 1153.790039 1150.806152 1150.769043 1151.175781 1151.776123 1151.134644 1150.206909 1149.087646 1148.238647 1147.440674 1146.673218 1145.615845 1144.088135 1143.087524 1142.046509 1140.711548 1138.677979 1136.860596 1135.352417 +1231.226929 1223.989014 1235.690186 1262.861206 1284.939941 1296.810303 1307.71521 1319.892334 1333.941284 1344.426025 1344.130249 1357.745117 1359.481567 1356.790771 1349.400513 1343.372803 1334.645996 1332.249634 1350.176147 1362.726685 1370.235596 1374.584229 1376.0354 1383.651367 1396.097534 1408.384277 1416.874634 1427.717163 1436.946167 1443.216187 1448.699829 1452.016602 1456.583984 1463.685669 1475.79248 1487.91333 1503.058838 1501.220093 1485.578125 1469.803467 1461.638794 1460.31958 1458.470703 1456.051025 1456.873657 1458.682373 1458.725708 1459.300415 1461.918701 1462.736938 1462.63916 1461.689575 1461.742554 1461.431519 1458.55896 1455.235107 1453.703857 1454.266724 1453.669312 1451.036255 1445.429199 1440.710693 1435.156616 1429.776123 1424.006714 1418.278076 1412.643555 1403.626831 1401.117188 1404.447266 1409.671265 1416.019653 1423.713379 1429.957031 1435.82312 1437.520386 1435.42749 1433.072388 1431.366821 1427.664551 1414.781982 1401.375244 1395.138428 1389.696899 1383.490112 1376.228638 1364.603882 1354.704224 1359.979004 1379.90979 1382.804443 1388.105591 1392.957642 1397.467407 1403.380981 1412.223877 1417.988403 1421.107788 1422.858032 1423.584717 1423.589355 1423.108887 1422.063965 1420.542358 1418.531128 1416.647217 1416.541138 1415.888916 1414.630737 1409.907349 1405.472168 1393.860596 1386.78772 1393.892822 1397.303223 1395.891357 1390.963745 1388.19873 1383.895264 1381.160522 1376.137207 1363.144653 1355.608398 1347.973999 1339.500854 1334.82605 1331.974243 1325.699829 1316.354492 1314.373901 1310.624878 1306.481689 1303.092651 1302.010254 1300.525391 1297.083618 1294.237549 1290.904663 1287.35437 1285.698853 1291.287598 1299.874146 1307.461426 1311.555664 1313.815186 1314.19873 1313.657349 1313.090454 1312.151855 1308.869995 1306.331665 1302.885986 1309.255737 1325.55542 1334.721313 1351.626587 1365.957886 1368.119141 1369.156494 1369.828125 1370.06189 1370.281372 1370.916138 1371.866211 1374.663696 1377.846191 1379.579834 1380.203857 1380.30835 1380.027222 1379.179077 1379.02771 1379.041748 1380.045532 1380.254272 1380.246826 1379.713867 1379.382446 1378.918213 1377.549927 1376.829468 1376.3302 1376.55957 1373.560303 1368.194824 1364.20459 1359.302002 1351.362915 1339.095459 1328.687378 1318.01062 1315.153931 1321.10498 1331.295654 1339.310425 1344.813232 1348.723633 1351.23584 1355.679321 1362.5625 1366.422241 1366.954346 1365.724487 1363.466553 1364.473877 1364.701294 1362.738403 1358.481445 1353.588989 1353.912964 1359.08606 1363.867676 1367.375977 1374.517944 1378.927246 1382.753296 1386.30249 1388.751709 1388.941895 1388.336548 1387.586182 1384.834229 1380.613281 1371.909424 1366.426758 1370.019653 1370.998047 1369.30957 1364.807495 1359.591064 1355.991699 1350.388184 1343.471436 1335.563232 1327.136963 1327.004883 1331.974609 1335.97937 1336.890259 1335.132935 1333.151978 1333.981689 1334.859863 1333.19458 1326.773438 1317.442993 1307.609985 1296.596069 1287.850586 1287.659302 1290.805176 1294.985352 1299.506348 1302.209229 1301.163086 1300.370605 1303.555298 1307.821655 1308.934082 1306.168457 1296.717285 1279.803223 1274.09375 1273.598267 1275.668701 1278.226807 1279.9729 1281.767944 1283.343262 1284.952026 1287.138306 1289.496704 1292.100586 1299.75 1306.649536 1304.014282 1300.75415 1299.916626 1298.718872 1297.533081 1296.48938 1295.557617 1293.503906 1289.06311 1284.141968 1284.032715 1290.672852 1293.942139 1294.411133 1294.302979 1296.588989 1298.063599 1298.614258 1300.408447 1303.033203 1305.064819 1306.089478 1306.720825 1305.944824 1300.40625 1295.496826 1291.055908 1288.506104 1286.469238 1284.313965 1282.338867 1281.588501 1280.765503 1281.396851 1282.17749 1281.258911 1279.803955 1278.037598 1275.472168 1272.544189 1269.916504 1268.081665 1266.935303 1266.737671 1267.298096 1270.487671 1271.550293 1270.680054 1269.95105 1264.409302 1257.649048 1251.429565 1245.006958 1247.108032 1263.301636 1265.83728 1265.511353 1264.461792 1263.293945 1262.434937 1261.680298 1261.033936 1260.499878 1259.913086 1259.573364 1259.604858 1259.775391 1259.672485 1259.220093 1258.335083 1257.237671 1255.375732 1256.463623 1256.323486 1253.21936 1248.014282 1243.67981 1242.056274 1240.317383 1235.897949 1244.450195 1246.016724 1246.254272 1244.984985 1242.144165 1241.074097 1241.086548 1240.050903 1238.709717 1238.265503 1238.9375 1239.611816 1240.76123 1241.704224 1241.760498 1241.275635 1241.114014 1241.30127 1242.038818 1242.38208 1243.306885 1244.47583 1241.59729 1236.980591 1233.652466 1233.307983 1233.866089 1234.380493 1234.708618 1235.152832 1235.394043 1235.309204 1234.734009 1233.8396 1232.907959 1230.962036 1226.302246 1229.514648 1232.332397 1232.435669 1232.855591 1234.820801 1235.681641 1235.667114 1235.53833 1235.570312 1236.564453 1240.400269 1244.845459 1245.131226 1243.707031 1242.837769 1241.576416 1239.981445 1238.348633 1236.520752 1235.224854 1234.094604 1232.46228 1231.422974 1232.510986 1233.341064 1232.954468 1232.233398 1231.105347 1230.573242 1230.618164 1230.155762 1229.09314 1228.171875 1227.595581 1227.138062 1226.460938 1225.893555 1225.288818 1224.520508 1223.560181 1222.376709 1221.356201 1220.81604 1220.240845 1219.508911 1218.562378 1217.310425 1215.636353 1213.868774 1212.273438 1210.682861 1209.230835 1207.95813 1205.735962 1205.471558 1207.294312 1207.840332 1207.818481 1207.261719 1206.571167 1206.381104 1207.313721 1207.971436 1208.364258 1208.525513 1208.41626 1207.82312 1206.748779 1205.266357 1203.774536 1202.5625 1201.796875 1200.979126 1200.314697 1199.907837 1199.605591 1199.352661 1198.865112 1198.411621 1197.734131 1196.960449 1196.080322 1195.181396 1194.261841 1193.24585 1192.31543 1191.655884 1190.860474 1190.129761 1189.756958 1192.537231 1195.635986 1196.230835 1196.624512 1197.378662 1198.419189 1199.72522 1201.079102 1202.4552 1203.861816 1205.319092 1207.064575 1208.341797 1209.567017 1211.2052 1213.461304 1215.645386 1217.744141 1219.99353 1223.304443 1226.796143 1230.237183 1233.769409 1237.740479 1241.703491 1247.209961 1258.019287 1276.560791 1291.250366 1290.279541 1285.59375 1279.874878 1272.712769 1269.239136 1271.448364 1273.74939 1275.280762 1275.923584 1275.754395 1274.672607 1272.805176 1270.710449 1268.233521 1266.402466 1265.323486 1264.33667 1262.970093 1261.085327 1258.448975 1256.662964 1255.355103 1249.950195 1246.53418 1248.726074 1249.759888 1250.644653 1251.66687 1252.838013 1253.922119 1255.800293 1258.263428 1260.296265 1261.800293 1262.834961 1263.020508 1262.321289 1261.463257 1259.83728 1256.300293 1248.510864 1242.34668 1240.978882 1239.491821 1236.004761 1232.12915 1230.822876 1233.414307 1235.916016 1235.263062 1232.579956 1226.971191 1221.289551 1210.740479 1205.846191 1207.968018 1210.027588 1210.712524 1208.349121 1203.69165 1206.555542 1209.754517 1209.769653 1206.307983 1207.889038 1209.87439 1209.836426 1208.65686 1207.376587 1203.658325 1195.321777 1190.447266 1185.274902 1179.175171 1172.916016 1168.518311 1164.671631 1161.751953 1159.702637 1157.397339 1154.433838 1152.272949 1156.81543 1157.794556 1158.493286 1158.172241 1155.338745 1153.511963 1152.456177 1151.529663 1150.528931 1149.6604 1148.486328 1146.621704 1145.406616 1144.948242 1144.165771 1141.901978 1139.3927 1137.442627 +1247.97168 1236.074951 1230.177246 1254.146851 1279.498779 1296.707397 1308.000854 1322.03479 1333.736816 1344.676147 1354.786987 1365.651855 1374.730957 1372.259277 1363.507568 1355.258911 1348.512207 1341.012085 1356.623779 1372.410645 1381.067383 1385.912964 1385.798706 1388.078125 1402.668091 1413.530884 1423.338623 1435.873901 1444.488037 1451.337646 1456.115356 1459.645874 1463.813599 1473.171143 1483.901978 1497.477783 1505.861572 1502.401611 1488.862793 1473.776489 1471.412964 1469.99646 1466.761597 1462.943481 1465.203857 1467.367798 1466.951782 1466.922241 1467.595947 1467.725708 1466.927368 1465.976929 1465.708618 1465.572754 1463.782715 1460.608765 1458.617065 1457.09314 1453.774658 1449.885864 1445.93689 1441.733765 1436.792603 1430.889526 1425.323242 1419.822388 1414.661865 1405.34436 1399.862427 1400.246704 1404.654907 1409.359619 1414.642334 1419.442871 1426.151489 1430.402222 1432.330566 1432.126709 1431.317139 1428.990845 1416.219971 1403.453125 1396.986084 1391.282227 1383.818359 1375.572876 1364.008301 1354.809448 1367.12561 1378.561768 1378.355835 1386.122925 1391.295776 1400.253784 1405.978149 1415.110352 1419.88623 1423.399658 1425.418701 1425.900146 1425.669556 1424.963867 1423.688232 1422.154907 1420.803589 1419.559448 1418.482544 1417.346313 1416.109009 1409.17627 1399.208862 1387.928345 1372.942261 1383.642822 1391.499146 1392.981567 1384.569702 1375.26062 1370.780518 1366.8927 1361.551758 1354.23999 1345.334961 1339.67334 1334.408936 1328.135254 1323.515503 1318.033936 1313.021484 1307.979492 1305.166016 1302.686157 1299.902832 1298.085327 1296.726074 1295.55835 1293.723145 1291.14502 1288.098633 1286.35376 1291.142578 1301.801025 1310.407593 1316.43103 1318.736572 1318.920166 1317.921631 1316.619629 1315.583984 1312.130859 1309.357178 1306.30188 1304.82666 1319.993164 1332.780151 1347.80188 1359.268066 1364.506226 1365.21521 1364.753906 1366.414917 1367.913696 1368.347046 1369.726074 1373.338623 1377.23999 1378.906982 1379.462769 1379.009399 1376.47937 1377.102173 1377.249634 1377.796631 1379.63208 1380.002441 1378.382324 1377.143799 1376.848633 1374.827637 1373.773071 1372.681274 1372.089233 1372.577637 1370.802979 1366.677002 1362.863403 1356.013062 1344.24231 1336.055908 1327.942261 1320.316284 1315.653931 1326.356079 1338.566162 1348.975342 1357.364258 1362.222412 1364.167603 1369.173096 1372.115234 1372.623657 1371.793335 1369.361206 1365.4104 1367.912598 1367.744629 1366.489624 1362.469604 1355.859497 1355.74292 1360.172485 1364.113403 1366.394531 1373.095947 1376.411011 1378.186279 1384.493652 1388.183105 1389.64563 1390.100952 1389.552612 1385.723389 1377.981445 1377.338867 1380.234375 1380.8927 1378.939575 1372.932617 1365.943237 1359.655396 1354.265259 1347.585938 1339.192383 1329.570801 1327.155518 1333.872681 1340.255859 1343.272827 1342.362549 1340.023682 1340.655884 1340.458496 1339.656006 1332.589844 1324.074951 1313.907349 1303.440308 1290.77771 1289.366699 1293.033813 1295.79895 1303.459106 1307.884399 1309.768433 1309.13208 1305.775391 1309.260132 1314.691406 1317.308716 1313.209229 1297.424194 1281.585693 1276.539185 1274.510132 1277.156738 1280.345581 1281.787598 1283.209961 1284.854492 1286.234497 1287.908813 1289.721802 1291.489136 1296.735718 1306.254517 1308.248535 1307.791016 1307.554199 1307.137085 1306.373779 1304.768066 1301.560303 1298.221436 1293.847778 1286.342896 1288.092407 1294.631958 1297.650879 1299.225464 1300.349243 1302.376709 1305.564819 1305.402344 1305.258301 1306.94458 1307.260864 1306.798706 1307.121948 1304.400757 1298.097046 1292.511963 1288.183716 1281.709229 1280.656006 1280.655762 1280.971802 1279.597656 1278.134521 1276.355713 1274.189331 1273.203735 1271.958252 1268.940063 1266.439331 1264.87793 1264.348877 1263.452393 1261.664062 1258.894165 1256.922485 1254.299316 1260.069214 1265.3479 1265.151367 1261.321533 1255.421143 1249.47876 1244.188477 1253.549072 1269.010864 1269.31897 1267.771851 1266.333984 1264.983398 1263.971069 1263.256836 1262.591675 1262.102173 1261.723389 1261.35498 1261.211426 1261.017822 1260.69873 1260.173096 1259.473022 1258.510498 1257.947021 1257.615112 1257.18396 1255.599121 1249.480103 1244.833374 1245.542236 1244.039307 1237.35022 1245.52771 1246.74939 1246.943604 1246.141479 1244.390259 1244.392334 1244.886963 1243.727417 1241.748779 1241.261963 1242.47522 1242.937744 1243.43335 1244.510254 1244.527466 1243.776978 1243.307617 1243.338745 1244.363281 1245.133789 1245.690552 1245.830566 1243.191406 1239.065918 1235.709473 1233.845825 1234.250122 1234.721191 1235.31189 1236.163452 1236.826904 1236.974609 1236.309082 1235.126465 1234.078125 1231.931763 1226.30249 1231.900757 1232.730591 1232.455444 1232.543579 1235.279663 1237.438477 1238.401733 1238.936768 1240.052612 1241.748535 1244.897583 1246.72522 1247.422363 1246.528687 1245.360962 1243.989624 1242.453125 1240.652222 1238.813721 1237.444214 1235.976562 1234.448608 1233.52417 1234.231567 1234.995972 1234.841309 1233.955444 1232.687378 1232.05542 1232.653442 1232.018066 1230.736938 1229.68689 1229.67981 1229.464478 1228.82251 1228.224731 1227.423828 1226.360474 1225.388062 1224.442871 1223.477783 1222.967896 1222.347412 1221.449951 1220.418457 1218.927124 1217.205078 1215.354614 1213.61499 1212.16272 1210.578613 1209.243042 1208.109009 1206.28772 1208.012085 1208.668579 1208.668823 1208.320923 1207.611938 1207.370605 1208.083008 1208.78125 1209.137451 1209.214355 1209.005859 1208.542603 1207.717407 1206.162476 1204.878418 1204.282715 1203.636108 1202.949829 1202.293457 1201.654053 1201.200073 1200.626465 1199.835815 1199.262451 1198.644287 1197.792847 1196.864014 1196.110474 1195.19458 1194.408569 1193.735107 1193.134277 1192.056763 1190.956299 1190.209717 1193.620483 1196.034302 1196.644531 1197.07019 1197.613403 1198.331665 1199.420166 1200.654541 1201.979492 1203.431519 1205.098511 1206.921875 1208.221558 1209.403931 1210.682129 1212.59729 1214.754272 1216.889893 1218.778931 1221.452393 1224.470459 1227.749268 1230.751709 1234.615723 1238.58667 1243.855225 1253.688965 1265.586548 1287.205322 1294.57251 1290.763794 1284.564453 1279.469238 1276.612061 1275.829346 1276.229004 1277.465942 1278.575073 1278.641113 1277.601196 1275.958984 1273.478027 1270.30835 1267.667358 1266.510742 1265.7677 1264.449707 1262.59436 1260.571655 1258.892578 1257.49646 1253.37561 1251.726807 1254.580566 1255.868896 1254.951172 1253.966553 1253.847534 1254.479736 1256.444946 1258.514648 1259.7677 1260.669312 1261.002197 1260.412598 1258.798096 1256.956055 1254.819702 1250.274658 1244.848389 1241.202759 1236.808838 1235.210693 1234.580566 1232.183716 1229.652832 1232.812744 1234.391846 1233.838867 1231.35376 1226.654907 1221.112915 1212.032715 1205.640503 1202.139404 1200.883301 1201.808838 1197.565552 1198.72229 1205.099365 1208.76709 1209.125 1202.533081 1206.987671 1208.023682 1204.588989 1197.958008 1193.227173 1191.178711 1187.867188 1184.026367 1178.978516 1173.710938 1168.943359 1165.00769 1161.387085 1158.908691 1156.11084 1154.282837 1156.194458 1160.404541 1162.115845 1162.534668 1162.828003 1161.54541 1157.671021 1156.874512 1155.989868 1154.775146 1153.680054 1152.844238 1151.841431 1150.60791 1148.610596 1148.408081 1148.282593 1145.14856 1143.008057 1141.108276 +1262.30603 1250.989868 1247.53833 1241.8396 1255.55603 1280.151611 1302.760254 1313.96228 1322.290283 1330.961426 1346.647339 1367.078857 1388.273438 1387.272827 1375.392212 1369.511353 1364.148193 1355.119629 1363.554077 1380.450928 1389.258423 1395.214478 1398.303833 1399.940674 1408.137817 1419.710205 1432.349609 1444.148804 1451.577881 1458.091675 1464.001587 1470.771118 1477.7771 1483.188354 1491.901855 1504.98999 1512.941772 1507.998901 1492.431152 1483.079834 1484.062622 1482.293823 1477.16394 1475.430542 1476.610107 1477.913208 1477.546997 1476.226562 1474.129028 1472.817627 1471.257812 1470.016724 1469.16748 1468.299438 1466.472046 1464.168579 1461.746094 1459.775146 1453.845337 1449.290283 1445.933594 1442.149902 1437.337036 1430.97522 1425.506714 1420.044189 1415.254883 1405.694336 1398.171997 1394.244263 1398.105103 1402.596313 1407.221191 1411.001709 1414.350586 1419.592407 1424.043701 1426.973389 1427.94397 1425.596558 1414.895264 1403.677979 1397.150146 1391.445801 1383.078247 1372.994629 1362.740723 1355.548706 1363.198242 1366.929321 1379.962402 1385.965332 1393.108276 1403.701294 1413.811279 1418.585693 1422.589722 1426.059814 1428.179077 1428.694458 1427.986572 1426.745728 1425.231934 1424.04834 1423.176392 1421.708618 1420.068604 1418.409424 1416.05896 1406.10144 1387.366821 1376.53418 1361.845093 1366.273071 1378.032471 1386.781372 1386.574585 1375.028076 1354.87085 1352.466553 1348.731934 1342.470947 1335.636597 1331.648926 1328.817749 1323.448364 1317.123413 1313.62854 1309.750366 1305.648438 1301.456665 1298.515015 1296.141357 1295.123535 1293.955566 1292.923706 1291.894165 1290.25293 1288.722046 1287.437378 1290.423584 1301.849976 1312.930786 1320.280273 1323.165649 1324.609131 1324.111206 1322.46582 1320.4198 1315.63562 1313.182251 1309.67395 1305.952759 1317.572632 1327.536621 1337.786377 1349.832397 1354.94519 1355.189575 1352.463745 1352.897217 1354.691284 1356.681641 1366.348633 1370.80957 1374.002563 1375.521851 1375.249268 1373.278442 1370.34021 1370.751953 1377.229126 1379.453247 1380.482178 1380.324951 1378.917114 1376.122314 1371.008789 1369.043091 1369.353638 1368.593506 1366.095459 1369.111694 1369.606201 1368.543457 1366.628906 1357.512695 1345.534668 1335.503784 1327.328613 1320.66687 1316.452881 1329.468628 1345.157104 1358.148804 1368.215698 1376.399902 1378.708374 1379.654663 1379.736694 1378.837769 1376.993408 1373.36499 1369.691895 1371.117432 1370.2677 1368.545166 1366.797974 1358.779785 1357.376953 1363.125122 1367.846436 1372.998291 1377.870728 1380.556885 1382.716431 1386.998779 1390.3927 1391.897705 1392.445923 1391.752686 1388.484863 1387.227905 1391.134644 1388.095459 1384.034424 1380.512207 1372.804688 1364.511841 1355.917114 1350.754639 1345.192505 1337.421021 1328.7052 1335.529541 1343.366211 1346.335205 1347.56311 1347.11084 1348.253174 1354.466919 1354.526123 1342.69873 1327.433228 1317.2854 1305.166748 1291.681152 1291.890259 1295.574341 1299.148071 1303.502686 1308.875244 1313.418457 1316.887939 1318.140137 1316.112793 1315.314087 1320.881348 1321.977173 1316.744263 1297.514404 1284.42688 1278.622925 1275.661865 1278.166626 1281.934692 1283.621948 1285.198364 1286.441284 1287.60791 1288.969971 1290.893066 1292.748047 1298.661133 1305.531372 1310.317749 1312.192261 1312.032104 1312.252319 1311.57373 1309.961548 1306.814941 1302.873779 1298.484863 1290.41272 1289.220337 1295.957031 1301.511597 1303.726929 1305.973633 1308.723755 1312.569092 1312.507935 1310.530273 1308.105713 1305.091431 1303.160156 1300.620728 1297.255005 1293.131226 1290.292725 1287.07019 1283.133301 1281.679565 1281.069092 1280.581299 1280.654419 1279.494385 1276.98645 1268.894043 1267.499268 1266.410522 1265.380493 1264.796509 1264.337402 1262.742432 1260.726685 1259.883667 1259.67395 1258.951904 1258.043701 1254.266357 1253.668579 1255.19458 1256.084106 1251.773804 1247.771484 1250.118896 1275.207031 1276.698608 1273.029419 1269.724121 1267.434692 1266.115479 1265.202271 1264.61853 1264.00769 1263.51062 1263.174927 1262.86731 1262.602051 1262.347168 1261.885742 1261.185913 1260.462402 1259.484497 1258.647949 1257.718018 1256.539062 1254.865601 1252.141602 1249.286743 1247.894409 1245.84082 1239.523438 1245.301025 1247.11145 1247.558472 1247.101685 1246.430298 1246.494995 1246.47522 1245.406006 1243.809814 1242.914551 1244.772583 1245.549072 1246.13208 1247.11145 1247.371094 1247.060425 1246.680542 1246.669678 1247.384766 1247.516724 1247.635132 1246.837524 1244.463867 1241.567261 1238.793945 1236.413696 1234.910522 1235.119873 1235.898804 1237.327881 1238.861572 1239.303467 1238.589844 1236.824585 1234.804688 1232.386841 1227.676636 1232.97644 1234.027466 1232.92749 1234.155396 1236.91626 1239.153687 1240.695923 1241.875854 1243.170776 1245.616089 1248.294189 1249.964355 1250.108398 1249.265137 1247.810181 1246.204834 1243.958496 1242.340576 1240.618408 1239.361084 1238.30835 1237.565063 1237.011719 1237.228516 1237.215698 1236.855835 1236.011108 1235.109009 1234.675293 1234.390747 1233.574707 1231.879639 1231.148438 1231.6604 1231.590576 1231.153564 1230.334717 1229.310669 1228.032837 1227.307739 1226.463501 1225.646362 1225.046021 1224.374878 1223.244873 1221.966187 1220.288574 1218.34021 1216.539429 1215.055542 1213.430908 1211.897217 1210.348389 1209.066284 1207.317627 1208.258911 1209.332397 1209.554932 1209.138062 1208.613892 1208.535034 1208.955444 1209.467041 1209.73938 1209.755493 1209.485596 1208.897217 1208.013306 1206.624023 1205.864868 1205.788086 1205.418701 1204.803833 1204.015503 1203.339478 1202.612427 1202.036621 1200.701294 1200.169312 1199.510132 1198.705933 1197.93689 1197.051392 1196.142334 1195.57959 1195.23938 1194.6698 1193.722656 1191.959106 1190.665894 1193.706665 1196.035767 1196.513184 1196.889893 1197.444458 1197.994141 1198.861938 1199.880859 1201.303589 1202.773315 1204.419067 1205.734375 1206.728516 1207.614258 1210.008423 1211.802979 1213.632324 1215.655518 1217.625488 1219.69397 1222.635864 1225.603271 1228.571167 1231.870361 1236.278564 1240.801636 1246.324707 1256.954346 1272.314331 1290.868164 1294.915771 1290.905029 1283.294434 1279.475464 1279.065796 1278.83313 1279.966797 1281.036987 1281.780884 1280.698608 1279.616089 1278.44751 1274.692871 1269.518921 1267.756592 1267.319336 1266.122925 1264.601318 1262.516602 1260.225464 1257.346436 1255.284546 1255.985229 1257.413452 1258.035522 1257.590698 1256.450562 1254.964111 1254.831177 1256.137573 1257.846069 1259.090454 1259.742798 1259.814331 1258.87146 1256.61145 1254.637939 1251.94812 1246.600952 1242.370483 1239.046021 1233.569092 1231.289917 1231.780029 1229.80249 1226.604126 1230.246216 1233.14563 1232.462036 1228.98938 1225.076538 1221.264282 1213.983276 1206.983521 1200.303467 1194.677002 1193.620117 1194.961182 1202.624023 1205.177856 1208.758057 1209.491333 1198.523071 1193.605347 1194.011841 1192.054932 1189.639526 1187.37439 1184.876831 1182.016113 1177.975464 1173.430542 1168.771484 1164.68103 1160.694946 1158.07373 1155.831909 1157.179688 1158.797241 1161.101562 1164.360474 1166.407715 1167.103516 1166.960083 1165.13269 1162.222656 1161.768921 1159.774902 1157.925659 1156.421387 1155.960815 1156.22168 1155.979858 1155.780762 1155.593872 1154.227905 1150.25769 1147.115112 1145.162598 +1285.072144 1269.237793 1256.799561 1246.476074 1248.684082 1274.146362 1291.395752 1295.116333 1300.76709 1324.147827 1345.933105 1365.23584 1390.391235 1402.33252 1389.731689 1381.838379 1377.039551 1368.836548 1368.341919 1385.714233 1396.332764 1403.916016 1410.092163 1413.397339 1418.262939 1428.98291 1440.916138 1450.404297 1457.668579 1465.182495 1474.863281 1481.11853 1485.383545 1491.638306 1501.307861 1513.240112 1517.7323 1515.595459 1498.769653 1496.876465 1497.51355 1494.820557 1488.617188 1486.178345 1488.286743 1487.693604 1486.06897 1484.074829 1481.001587 1477.776855 1474.837646 1473.28064 1472.186768 1470.985474 1469.524048 1467.554077 1465.751587 1463.921265 1457.548828 1450.375 1445.971802 1441.519531 1435.745972 1429.374756 1423.641846 1418.096802 1413.529907 1405.733521 1396.310669 1388.741943 1391.761353 1396.171265 1401.25769 1405.307495 1408.112427 1410.169678 1411.618774 1415.057739 1417.978149 1416.698242 1409.637085 1400.945435 1395.903442 1390.39856 1381.926514 1371.447754 1362.171265 1356.475708 1360.636841 1369.731079 1380.438843 1386.69165 1394.683594 1404.24292 1414.238647 1420.428223 1425.40625 1429.137085 1430.925049 1431.606201 1430.838623 1429.233276 1427.244263 1426.060547 1425.363281 1424.12854 1421.432007 1418.879028 1416.302612 1405.993652 1390.377075 1371.282227 1356.037231 1352.999268 1363.542969 1372.751587 1376.086914 1372.282349 1367.144287 1356.361816 1342.004517 1332.239502 1327.47583 1326.557617 1323.359497 1319.38269 1315.3396 1311.026978 1307.689331 1302.912964 1297.217651 1296.152466 1296.122925 1295.339478 1292.910522 1292.010254 1291.098755 1290.219849 1289.35083 1288.368286 1290.272949 1299.914551 1311.025879 1319.358765 1326.411621 1330.379883 1331.450317 1329.352295 1326.932251 1320.495972 1317.60437 1314.487061 1309.325073 1311.356567 1319.699585 1327.352783 1335.607788 1342.067627 1341.52356 1339.860229 1339.731934 1346.241699 1356.834106 1367.908569 1370.057739 1371.278809 1371.410522 1370.418701 1367.290161 1364.416992 1366.165649 1378.04541 1380.864868 1381.203247 1381.228149 1380.334229 1377.518433 1367.08252 1364.471069 1364.646606 1364.769653 1363.801758 1367.365112 1368.922119 1368.709229 1367.242065 1356.050537 1346.68457 1335.51416 1326.356079 1319.654785 1319.286133 1333.026978 1349.785156 1364.197266 1375.241699 1383.1073 1385.293457 1385.244141 1384.167603 1382.549805 1380.365479 1377.559814 1375.744995 1374.976074 1372.760742 1370.295654 1368.079346 1362.427368 1358.608765 1365.769531 1371.827637 1378.572144 1382.702881 1387.305786 1390.392578 1391.386475 1393.372803 1394.532349 1394.876465 1394.178833 1391.72998 1392.545166 1393.141602 1390.910645 1385.517456 1378.834351 1368.81897 1357.817017 1350.82251 1346.206421 1341.637695 1338.512207 1339.448242 1343.932617 1348.648071 1352.749512 1352.852783 1350.120483 1350.1073 1353.131348 1349.197632 1334.077271 1316.762329 1306.335205 1292.485962 1294.616333 1296.849609 1299.861206 1304.013794 1309.008789 1314.244751 1319.084106 1324.427856 1326.940674 1319.704102 1317.614746 1330.443481 1325.422363 1310.218994 1292.851807 1286.508545 1281.477661 1277.988403 1277.915894 1283.184692 1286.306763 1288.170776 1288.744507 1288.947021 1290.076782 1292.082642 1296.092651 1301.904907 1307.283447 1313.082031 1315.771973 1316.152588 1317.075928 1316.236938 1315.174561 1312.874878 1309.584351 1306.88623 1296.920654 1289.570923 1298.521118 1306.098022 1308.870728 1312.979614 1317.310913 1319.625854 1318.121094 1314.188721 1308.542969 1303.329346 1299.644409 1292.988525 1291.528442 1291.42749 1290.310913 1288.919067 1288.485596 1287.43042 1286.259644 1285.531372 1286.669434 1285.426514 1283.339478 1273.815308 1268.354248 1270.407593 1271.136475 1271.091431 1270.166016 1268.849731 1265.519043 1263.522095 1263.270142 1262.786133 1260.7677 1256.238647 1254.054077 1251.296021 1249.701538 1248.186157 1247.213501 1259.080322 1278.446045 1282.060547 1277.467651 1270.885742 1267.855591 1266.856445 1266.233521 1265.733887 1265.260986 1264.793091 1264.419189 1264.107544 1263.85498 1263.570557 1263.151001 1262.417236 1261.460815 1260.206665 1258.136108 1256.223755 1255.681763 1255.949707 1255.37207 1252.505737 1249.506836 1246.463623 1241.004028 1245.35498 1247.639038 1248.697754 1248.745361 1248.595093 1248.28125 1247.831787 1246.879639 1245.159424 1244.178101 1246.472412 1247.676636 1248.480835 1249.549072 1250.913208 1252.291504 1252.637085 1251.933838 1251.026489 1250.218506 1249.4198 1248.095459 1246.003906 1244.089111 1242.270142 1240.233398 1237.591309 1235.776367 1236.370483 1238.635498 1241.262939 1242.466797 1241.811035 1239.139893 1235.380737 1232.151123 1230.329712 1233.760254 1235.42395 1236.338379 1238.042725 1239.620605 1240.933594 1242.579468 1243.691284 1246.141968 1250.905396 1253.490234 1253.812134 1253.577393 1252.264038 1250.368408 1248.204468 1245.779419 1243.921143 1242.154175 1241.033447 1240.722046 1240.341187 1239.92981 1240.340088 1240.315063 1239.644897 1238.711548 1237.741577 1237.10083 1236.469727 1235.346191 1233.838623 1233.130737 1233.584961 1233.709595 1233.333252 1232.560669 1231.162476 1229.739502 1229.075073 1228.641602 1227.898438 1227.336792 1226.428589 1224.941162 1223.19458 1221.258301 1219.192871 1217.703857 1216.296631 1214.807983 1213.364624 1211.741699 1210.317749 1209.197754 1209.437622 1210.155273 1210.354736 1210.174683 1210.005981 1209.917603 1210.139648 1210.348633 1210.477173 1210.354248 1209.887085 1209.078369 1208.035889 1206.955078 1206.993286 1207.298828 1207.255859 1206.663086 1205.508911 1204.744873 1203.979858 1203.147949 1201.643188 1201.037109 1200.375732 1199.719116 1199.03479 1198.205078 1197.464844 1196.918213 1196.550537 1196.039062 1195.184326 1193.152466 1191.484375 1191.453003 1195.420776 1195.807861 1196.010742 1196.632202 1197.371704 1198.121094 1199.219971 1200.443848 1202.13623 1203.881348 1205.581909 1207.468018 1208.62085 1209.82605 1211.122925 1212.609863 1214.494263 1216.377197 1218.279297 1220.559082 1223.550293 1226.964111 1230.702759 1234.586304 1237.968384 1241.855957 1249.091309 1262.3479 1275.49231 1289.27771 1293.850586 1286.12439 1282.293579 1279.832275 1280.552979 1282.5 1283.554321 1284.318359 1284.028442 1283.169312 1282.552734 1281.151978 1276.201416 1271.726318 1270.002197 1268.390747 1266.753296 1264.602539 1261.78479 1258.738403 1255.967529 1257.284912 1259.193848 1259.600464 1259.209717 1257.902222 1256.158447 1255.128418 1255.561035 1256.462158 1257.973267 1259.30481 1259.39563 1258.587646 1256.600342 1255.082031 1252.114868 1247.60022 1244.172852 1240.151978 1235.547485 1232.039795 1229.37915 1225.28125 1220.0896 1223.287109 1226.651978 1227.433228 1224.780029 1221.865356 1221.326416 1220.487671 1208.670288 1200.579102 1196.000122 1193.359741 1198.988647 1209.368408 1199.525635 1203.949219 1204.17627 1196.485718 1190.930908 1188.046753 1187.040283 1184.487915 1182.098877 1179.814575 1176.633179 1173.048584 1168.779663 1164.875244 1160.087524 1157.694214 1159.113647 1160.533569 1161.535645 1163.026001 1165.570557 1168.802368 1171.026489 1171.593262 1171.446655 1171.144531 1169.989746 1169.671753 1168.502563 1164.458618 1159.268555 1159.172363 1161.303467 1162.581543 1163.862427 1164.239868 1163.455688 1161.665283 1158.66333 1154.23877 +1312.472778 1291.28833 1275.263916 1256.255615 1252.885376 1256.353394 1264.766602 1282.992676 1307.003906 1323.257812 1344.834961 1363.704346 1384.354004 1407.003418 1403.545166 1393.508545 1388.629761 1381.093018 1375.628784 1388.578125 1403.032227 1413.880127 1419.305908 1424.182617 1430.235229 1437.213745 1447.101074 1455.712402 1463.141113 1474.744873 1482.824341 1488.94397 1494.848267 1501.692993 1510.698975 1521.950073 1524.473633 1521.812988 1512.069336 1510.78064 1509.581543 1506.439453 1500.101807 1497.920288 1501.417725 1500.615967 1496.685913 1492.855591 1488.819458 1483.562622 1479.205444 1476.548096 1474.891357 1473.676514 1472.854492 1471.9104 1470.150391 1467.58313 1462.199219 1452.35791 1445.607788 1439.728149 1432.541748 1424.427246 1416.059204 1412.247681 1408.794434 1403.907104 1395.684692 1389.406982 1388.336304 1388.9823 1394.425049 1399.914551 1403.667603 1405.040161 1405.683105 1407.308838 1408.345215 1407.20166 1402.567139 1397.637817 1393.606934 1388.275513 1381.771118 1370.291016 1362.030396 1356.989014 1363.922119 1366.949585 1376.049927 1382.879517 1392.588989 1400.373413 1410.392212 1420.097412 1427.511719 1431.818848 1434.467896 1435.352539 1434.437256 1432.325806 1430.353027 1428.703979 1427.856445 1426.916138 1421.025391 1415.022095 1412.785034 1404.547485 1392.197876 1374.982666 1358.527222 1345.390259 1347.931152 1356.44812 1360.212402 1359.749268 1358.682495 1357.712402 1355.595215 1346.697266 1334.745361 1328.844116 1325.414429 1316.95752 1313.144409 1308.063965 1303.851074 1298.101562 1298.899048 1300.69104 1302.166748 1302.327637 1300.425293 1296.648315 1293.314575 1291.618896 1290.224976 1289.296753 1290.563354 1297.967163 1307.721313 1315.071533 1324.852539 1333.98938 1340.655029 1342.132812 1336.37207 1326.223389 1322.753784 1319.733521 1315.922241 1310.102417 1310.540405 1314.324341 1321.435669 1328.965942 1331.285645 1332.419922 1337.744751 1348.626221 1360.415771 1368.439697 1369.297485 1368.214844 1367.314087 1365.709106 1359.932495 1360.150513 1368.483887 1380.109863 1381.122803 1381.394043 1381.317383 1381.238647 1380.004028 1372.212402 1363.968994 1359.551392 1358.937256 1359.653687 1365.670776 1368.207764 1367.601929 1365.338501 1352.394531 1343.58252 1332.025757 1323.883667 1318.911987 1325.607056 1338.714722 1354.479248 1368.240479 1377.578735 1387.73877 1391.303711 1389.909546 1387.797729 1385.826172 1383.047852 1380.37854 1379.470337 1377.840454 1375.043335 1371.209717 1367.884155 1362.664795 1360.842041 1367.041992 1374.353516 1381.228271 1387.333984 1392.293945 1396.250366 1397.642578 1398.575806 1398.745605 1398.079834 1397.175903 1395.658081 1394.980957 1393.810547 1391.186768 1383.549194 1373.803955 1363.010498 1353.23584 1350.8125 1341.688721 1339.963379 1342.630981 1346.629517 1350.026489 1354.342407 1357.829224 1353.598267 1348.528687 1345.949829 1342.27356 1332.851562 1316.849243 1309.19043 1295.958618 1297.58667 1300.823608 1301.542358 1302.73999 1307.544312 1313.481567 1319.381836 1326.228027 1333.103271 1336.795044 1329.947021 1329.135132 1333.854248 1324.022217 1305.100952 1291.131104 1287.260132 1283.521729 1280.34436 1278.25647 1286.075562 1291.210815 1291.931641 1291.705933 1290.547974 1290.581665 1292.96814 1298.38208 1304.998169 1310.957275 1317.039429 1321.264893 1324.137573 1325.988525 1326.113892 1324.064697 1320.105957 1315.970947 1312.012573 1307.328003 1290.921509 1300.325195 1308.867432 1313.311035 1317.588989 1322.229248 1323.101807 1319.835693 1314.542236 1308.033569 1304.592651 1301.530762 1295.742798 1294.736084 1293.609985 1292.518555 1293.907104 1294.526855 1294.005737 1291.928467 1289.633057 1294.389771 1293.811523 1282.192383 1273.910034 1273.589844 1279.799927 1281.695068 1278.719604 1274.970337 1271.675415 1268.019531 1266.673218 1268.161377 1267.863647 1265.049805 1262.809204 1261.516235 1259.519165 1255.360718 1253.139893 1252.303101 1258.733154 1266.997437 1277.775146 1278.560303 1274.944946 1269.745361 1268.374268 1267.552734 1266.899536 1266.257446 1265.948608 1265.580444 1265.25415 1265.125977 1264.859375 1264.380493 1263.726929 1262.73291 1261.333008 1258.811523 1257.24353 1257.460571 1258.075684 1257.347534 1254.948242 1250.925049 1246.513794 1242.592407 1246.246704 1249.067261 1250.621704 1250.771484 1250.452881 1249.835449 1249.345215 1248.412476 1247.493652 1247.397339 1248.494751 1249.75415 1250.967163 1252.278564 1254.023315 1256.309814 1256.935791 1255.919189 1254.208862 1252.443848 1251.343628 1250.075195 1248.219116 1246.548584 1245.289429 1244.653564 1243.176025 1237.921265 1237.425781 1240.386841 1243.650635 1244.411011 1244.505127 1241.828003 1237.128174 1231.730835 1232.155518 1234.690308 1237.143433 1239.140259 1241.401611 1242.684326 1243.340454 1245.207886 1247.493164 1251.61084 1256.515747 1257.092407 1256.919434 1256.595459 1255.204102 1252.70459 1250.401733 1248.094482 1245.922119 1243.659668 1242.967407 1242.713257 1242.354858 1242.388184 1243.116821 1243.32312 1242.839355 1241.22583 1240.130127 1239.487915 1238.689697 1237.789673 1236.737671 1235.87561 1235.793213 1235.609985 1235.19519 1234.244385 1232.559692 1231.012573 1230.857788 1230.714722 1230.315796 1229.828491 1228.949707 1227.280884 1224.896973 1222.306274 1220.035889 1218.615845 1217.294556 1216.043457 1214.623535 1213.300903 1212.159424 1211.346191 1211.326172 1211.431152 1211.34729 1211.277466 1211.153198 1211.083008 1211.256104 1211.349121 1211.261841 1210.952637 1210.393555 1209.41748 1207.997437 1207.354736 1207.994629 1208.453125 1208.431396 1207.944702 1207.010498 1205.960571 1205.077637 1204.193237 1202.704712 1202.026123 1201.417236 1200.784302 1200.112061 1199.411865 1198.705811 1197.983398 1197.441772 1196.737061 1195.610596 1194.122192 1192.974854 1191.588989 1191.586304 1193.359009 1194.549805 1195.776611 1196.575684 1197.275146 1198.230591 1199.674194 1201.341309 1203.227905 1205.348511 1207.304565 1208.717896 1209.5802 1210.178833 1211.283325 1213.102783 1215.125977 1217.238403 1218.708862 1221.351318 1225.236938 1229.054932 1232.949951 1236.080322 1239.365234 1243.687744 1253.03894 1264.310425 1273.372437 1279.06958 1277.510498 1275.433105 1273.474121 1277.077271 1283.245117 1285.652588 1287.652954 1287.60791 1287.067017 1286.03064 1284.283569 1281.644653 1277.702759 1274.217407 1271.596436 1268.949097 1266.596924 1264.015747 1261.064209 1257.944092 1259.086304 1260.899292 1261.505493 1260.96521 1259.76062 1257.808838 1257.330444 1257.5448 1256.740234 1258.285278 1259.802246 1259.825073 1259.110474 1257.880859 1256.943726 1253.401123 1249.548096 1246.283813 1242.703369 1238.175659 1234.510132 1230.153687 1224.772583 1220.25708 1217.625732 1217.793335 1218.651489 1218.611206 1215.229614 1209.351562 1203.970947 1198.547607 1195.569702 1193.970581 1192.658691 1192.507324 1196.645996 1195.102051 1197.114868 1194.473755 1191.481201 1186.94397 1182.803467 1182.848877 1180.465454 1177.814575 1175.185669 1172.278809 1168.669189 1164.802002 1161.317993 1159.542847 1161.153564 1162.88147 1164.144165 1165.544678 1166.863525 1169.284424 1172.690308 1174.972412 1176.289307 1178.569824 1179.905762 1178.959473 1181.365112 1177.941772 1172.830078 1167.933838 1167.243774 1170.063599 1172.962646 1173.87207 1174.071777 1173.314087 1172.124756 1169.512695 1165.153198 +1329.78772 1311.402466 1288.939087 1268.217896 1264.137573 1265.083252 1263.545532 1283.852173 1307.133667 1319.125366 1339.042114 1360.437744 1375.963989 1404.182373 1412.626831 1405.939819 1399.789429 1394.391235 1385.226929 1392.386475 1409.35791 1419.061523 1425.098267 1431.070679 1436.315918 1443.488281 1452.495361 1460.361206 1470.435547 1481.677002 1490.346802 1497.632935 1504.302124 1509.620117 1520.994751 1531.014526 1533.60022 1530.531494 1525.036987 1522.00061 1519.607178 1516.822021 1511.682739 1508.325073 1512.01709 1512.298828 1507.522339 1501.995483 1496.009399 1487.864258 1484.14856 1481.800171 1479.552002 1477.369385 1476.696289 1476.139526 1475.377563 1472.638306 1464.896118 1453.01123 1444.317993 1437.116333 1430.654297 1418.59314 1412.458374 1408.782715 1405.220337 1400.859985 1394.822144 1390.178833 1387.849487 1387.243164 1389.050049 1392.865845 1396.539062 1398.717773 1399.35791 1399.972046 1400.360352 1399.296143 1396.567993 1393.375732 1390.060181 1385.349487 1380.111206 1369.620361 1362.181641 1357.91272 1370.890869 1378.766113 1379.231201 1377.02002 1387.014893 1393.679565 1401.422607 1420.819458 1429.80188 1434.630249 1438.015625 1439.44873 1438.254883 1435.708496 1433.539795 1431.678711 1430.095947 1428.219849 1417.413574 1403.567017 1405.020508 1401.566772 1388.374756 1370.61084 1357.136719 1342.532593 1338.829102 1341.379517 1344.175415 1346.648682 1345.811401 1345.653442 1350.581177 1356.023804 1349.713989 1342.846924 1334.336914 1324.432007 1314.967041 1306.601196 1299.763428 1301.332886 1304.306152 1306.392944 1308.346558 1308.922119 1308.586182 1305.30603 1299.242676 1294.321655 1291.693359 1290.433838 1290.76709 1296.306519 1304.678467 1311.399536 1319.112061 1331.209473 1343.346313 1350.22522 1347.214722 1332.58374 1327.478882 1324.38501 1321.236206 1318.171997 1315.008057 1313.411621 1313.065918 1314.812744 1318.933105 1324.954712 1333.466431 1342.715698 1351.204834 1358.563354 1362.191772 1362.154663 1359.685303 1354.785522 1351.790161 1358.734863 1369.498169 1378.74585 1380.640991 1381.139038 1381.157349 1380.912842 1381.156982 1376.713501 1366.526123 1354.068359 1353.820312 1353.946411 1361.817871 1365.026733 1363.198364 1356.385986 1345.69812 1336.081177 1326.720093 1320.720459 1324.828369 1334.37793 1345.911133 1362.080933 1373.078491 1383.63269 1392.858032 1395.133911 1394.373047 1391.046509 1388.370605 1385.963135 1383.22998 1381.698364 1379.909302 1376.165649 1370.478638 1366.229736 1361.925171 1363.104858 1367.511353 1375.742432 1382.814453 1389.766357 1397.138672 1403.107422 1403.838867 1403.376587 1402.506592 1401.303223 1400.50415 1398.760742 1396.713501 1393.412598 1388.442993 1380.361694 1375.433228 1370.427246 1365.265747 1356.377686 1347.391968 1348.281128 1351.474854 1353.337158 1360.57666 1369.125488 1359.670532 1350.18457 1341.60376 1335.821533 1327.167847 1320.120483 1309.731323 1300.192139 1303.178467 1307.084961 1307.463623 1306.134033 1304.051147 1310.574097 1317.151245 1325.017944 1332.59314 1341.459839 1345.075439 1339.281494 1339.974854 1336.910034 1322.730225 1303.987183 1291.783203 1288.029419 1284.749023 1281.659546 1277.82019 1294.373657 1298.949951 1297.918823 1295.454712 1292.579346 1291.494507 1293.224365 1300.208862 1306.167847 1312.674927 1319.985474 1327.532349 1332.555298 1337.02832 1338.169312 1333.598755 1328.969116 1322.064209 1315.878296 1310.446411 1295.956299 1301.111572 1311.521606 1318.059204 1322.261108 1327.611206 1328.297852 1320.969849 1315.200928 1309.778564 1306.939941 1303.51416 1299.983521 1298.64502 1298.182495 1298.406372 1301.125732 1304.470459 1303.619385 1298.50647 1294.237183 1292.727173 1286.523193 1277.8479 1274.312988 1281.696045 1285.210083 1286.149902 1283.165649 1279.055786 1273.706177 1268.193359 1269.411743 1272.135254 1272.237305 1269.574463 1269.84668 1268.970825 1264.369507 1261.476196 1260.807251 1257.431274 1254.995605 1260.334595 1266.954834 1276.64978 1280.162354 1275.344482 1271.95752 1269.053589 1267.732788 1267.236206 1267.15918 1266.94043 1266.604004 1266.257812 1266.071777 1265.765137 1265.122314 1264.202881 1262.965454 1261.432373 1260.047607 1259.543091 1259.274658 1258.505005 1256.394775 1251.486206 1245.452393 1244.238281 1248.497559 1252.315796 1253.428711 1252.981201 1252.072876 1251.416138 1250.903564 1250.662109 1250.379639 1250.372925 1250.966064 1251.716553 1252.832397 1254.269287 1255.857544 1257.185669 1257.51062 1257.136963 1255.938477 1253.923584 1253.296753 1252.596802 1250.948242 1248.920898 1247.594849 1246.156616 1244.932861 1242.313354 1237.862549 1241.252808 1245.008423 1245.782715 1245.964478 1244.340454 1238.279663 1230.991577 1232.813599 1235.801514 1238.930664 1241.661133 1243.888062 1245.178833 1246.537354 1248.954346 1251.657471 1255.274902 1257.388672 1258.214844 1258.422119 1258.146118 1257.105835 1255.272217 1253.234253 1251.130737 1248.597412 1245.764648 1245.075195 1244.917236 1244.46582 1244.751099 1245.220093 1245.239258 1244.768433 1243.312622 1242.257935 1242.266968 1241.507324 1240.694458 1239.559814 1238.518311 1238.200195 1237.972046 1237.37561 1236.34668 1234.644165 1233.130493 1233.237061 1233.065918 1232.742432 1232.398071 1231.394531 1229.770874 1227.292358 1224.361694 1221.627197 1219.632324 1218.332764 1217.070801 1215.794067 1214.881104 1213.85083 1213.237305 1212.922119 1212.72229 1212.589844 1212.314453 1212.21106 1212.194336 1212.278442 1212.310059 1212.170898 1211.833252 1211.104614 1210.344604 1209.346191 1208.87085 1209.023438 1209.269897 1209.251099 1208.86731 1207.961304 1206.947754 1205.958008 1204.910522 1203.584717 1203.037231 1202.41748 1201.798096 1201.174805 1200.523315 1199.640259 1198.801514 1197.722656 1196.449097 1195.197998 1194.982422 1195.186279 1195.011353 1193.274048 1192.297974 1192.162354 1193.34436 1195.32312 1195.954468 1197.458618 1198.602539 1200.194946 1202.131714 1204.365967 1206.274048 1208.099731 1208.778564 1208.985474 1209.558228 1211.819336 1214.105469 1216.10376 1218.12439 1220.505493 1223.939941 1227.458618 1231.147095 1234.415161 1237.294434 1240.814941 1245.526733 1252.351562 1258.549316 1263.282715 1264.605103 1264.06958 1263.618042 1267.608643 1279.284912 1286.995483 1291.699341 1291.675903 1290.738647 1289.231079 1287.074951 1284.639526 1281.864502 1278.556274 1274.897583 1271.152832 1267.899292 1266.092651 1264.620239 1262.976807 1262.77356 1263.361938 1263.832275 1263.927368 1263.324341 1262.396729 1261.636475 1261.201294 1260.772339 1260.981201 1261.304443 1261.081787 1260.178589 1259.021729 1257.32605 1254.149902 1251.532715 1248.428467 1244.550171 1240.762207 1235.937256 1230.902466 1227.551147 1223.611938 1218.543945 1207.389893 1204.445435 1204.60498 1200.216919 1193.66272 1191.942871 1193.940063 1194.464722 1194.252563 1192.699097 1193.189331 1194.876221 1195.060547 1187.133057 1184.761353 1184.599609 1182.845337 1180.702515 1179.226685 1176.947876 1174.35376 1171.472534 1168.211548 1164.706665 1161.832275 1162.22522 1163.249878 1164.641724 1166.366577 1167.551147 1168.920166 1169.731323 1172.185547 1177.158203 1179.17688 1180.184937 1183.837524 1186.146851 1185.764771 1186.534058 1182.999268 1179.098755 1177.09375 1176.571045 1178.045288 1179.256348 1180.408813 1180.738037 1178.670654 1176.846436 1175.609741 1172.53894 +1340.050171 1320.124878 1297.988525 1276.472046 1274.739136 1283.517578 1282.490234 1275.46106 1292.202515 1310.773193 1328.331299 1353.355591 1370.851318 1397.279541 1417.901611 1418.140991 1412.825562 1405.671631 1398.298462 1396.174072 1413.136475 1421.657837 1428.99646 1436.591187 1442.443359 1449.434692 1456.90979 1465.569824 1477.187256 1487.52002 1497.10022 1506.285522 1513.925537 1520.053955 1531.1604 1538.730835 1539.436768 1538.753906 1535.624878 1532.803589 1529.343506 1525.89502 1522.141846 1519.847412 1525.152344 1527.400635 1522.043579 1513.146851 1504.168945 1493.865845 1488.190308 1487.123047 1486.073364 1483.5802 1481.658936 1480.257935 1479.251221 1477.087036 1467.482788 1453.761597 1443.730713 1436.261719 1430.480591 1419.068237 1411.851807 1407.04248 1402.048218 1398.414307 1393.546753 1389.329468 1387.758301 1386.814697 1386.691528 1387.488892 1389.166016 1391.174683 1392.47998 1393.158447 1393.223145 1392.17334 1390.156616 1388.173218 1385.30481 1381.315063 1376.071167 1367.309814 1362.21582 1359.227417 1373.836304 1385.308472 1392.624268 1398.242065 1399.92041 1395.853271 1406.987915 1422.75 1431.765259 1438.275879 1441.160278 1441.140991 1439.975586 1438.400146 1436.652588 1433.936035 1430.098877 1418.408203 1404.652344 1392.039307 1393.149048 1403.003052 1399.517578 1384.94873 1373.480957 1360.262695 1346.417114 1339.278198 1337.774048 1335.106445 1334.671021 1333.905884 1337.342651 1340.824463 1344.034912 1344.054565 1342.690186 1331.630493 1313.833252 1304.445312 1301.045898 1305.454468 1308.758179 1311.835083 1314.208374 1315.654663 1314.987427 1310.917114 1304.62854 1297.131836 1292.53894 1291.26123 1291.504883 1296.534668 1303.52356 1311.071167 1318.397583 1328.573975 1340.370361 1352.773315 1357.227539 1344.001343 1335.920532 1329.149658 1326.219727 1323.378418 1320.16333 1318.291382 1317.711182 1317.143311 1316.129028 1316.743164 1327.524414 1334.852417 1342.010376 1345.570679 1349.254761 1350.253174 1348.895142 1349.062256 1352.626343 1359.826294 1368.226562 1374.87146 1377.521484 1378.984375 1379.644165 1380.097046 1379.968628 1376.759399 1367.297119 1357.257446 1351.259155 1352.397827 1356.107544 1355.063843 1352.664551 1346.335571 1335.743652 1327.378052 1322.794067 1323.483154 1332.44458 1341.173706 1355.088013 1367.575317 1377.901978 1387.828857 1395.631958 1399.975952 1399.58728 1395.224365 1391.242554 1388.569946 1385.605225 1383.098267 1380.79541 1376.140015 1367.797852 1364.886963 1366.867554 1365.644531 1367.448975 1375.618042 1382.912964 1390.36145 1400.057861 1406.084351 1408.192871 1408.226685 1406.978516 1405.583618 1403.512939 1401.474121 1399.314941 1395.497925 1391.762329 1390.705566 1386.424438 1381.371216 1370.264404 1363.463013 1363.57019 1360.910767 1359.76123 1359.174805 1361.189209 1361.999512 1356.0 1345.687622 1336.462891 1328.389038 1320.756592 1311.809082 1301.858765 1306.099121 1310.905273 1314.131836 1315.664917 1315.721069 1312.968018 1314.44165 1321.001953 1328.091431 1336.37146 1344.638672 1352.689697 1349.140503 1346.776855 1341.383057 1321.609131 1305.219849 1292.578003 1289.335938 1285.27478 1281.651245 1278.404419 1297.074829 1307.357788 1306.313599 1302.473267 1297.303589 1292.511353 1299.729858 1304.584473 1307.130859 1313.827637 1321.690796 1331.38147 1337.402222 1344.086548 1345.601196 1340.068359 1334.490356 1327.9552 1319.135254 1312.731567 1301.898071 1306.650269 1317.692993 1324.189087 1328.594727 1331.889526 1331.839355 1323.464844 1315.579956 1311.828979 1307.779541 1304.321533 1302.719604 1303.12915 1303.293945 1303.59668 1307.790283 1310.725464 1308.434326 1304.211548 1296.788086 1289.561279 1282.149902 1276.693726 1283.188354 1286.759277 1289.626953 1292.263184 1288.660278 1280.629639 1277.039795 1274.636719 1275.350952 1277.045166 1277.877686 1277.222534 1275.065552 1269.350586 1267.441528 1269.349365 1269.866821 1266.302979 1259.972168 1256.445312 1261.352417 1265.796753 1281.939331 1280.832031 1277.222778 1273.295288 1269.387207 1268.777466 1268.746948 1268.512695 1267.925537 1267.576538 1267.329346 1266.922607 1266.491821 1265.620728 1264.886597 1263.804565 1262.5 1261.37793 1260.583374 1259.15979 1256.865845 1252.450317 1246.96582 1245.588745 1252.759155 1256.369141 1256.053101 1254.88501 1253.713745 1252.863281 1252.721436 1252.789185 1252.612915 1252.565674 1253.04187 1253.622437 1254.45874 1256.269653 1257.129517 1257.976807 1257.895264 1257.480957 1256.182373 1254.863525 1255.708984 1255.348267 1253.787231 1251.463135 1249.014404 1247.197876 1245.730347 1244.532104 1240.066528 1240.675781 1245.390015 1246.445312 1246.651001 1245.596436 1239.813599 1231.981689 1232.422607 1236.387207 1240.629272 1243.869385 1246.261719 1247.940063 1250.197998 1252.410767 1254.261719 1256.671997 1258.000488 1259.053711 1259.446777 1259.349487 1258.544556 1257.081421 1255.93103 1254.041748 1251.621338 1249.369507 1248.003906 1247.246826 1246.969116 1247.067505 1246.982056 1246.511841 1245.699951 1244.024902 1244.244141 1244.908325 1244.193481 1243.177979 1241.91748 1240.789429 1240.353271 1240.467407 1240.209839 1239.33728 1238.0625 1236.766968 1236.455444 1236.031494 1235.764282 1235.212402 1233.958496 1232.228516 1229.942627 1226.792358 1223.585327 1221.111816 1219.317749 1218.016235 1217.113525 1216.204468 1215.315796 1214.725708 1214.299927 1213.961426 1213.739868 1213.362427 1213.299683 1213.184204 1213.307373 1213.28418 1213.121338 1212.818359 1212.245117 1211.633545 1211.116821 1210.676636 1210.434814 1210.244751 1210.03894 1209.510376 1208.735107 1207.78064 1206.570068 1205.58667 1204.536621 1204.120972 1203.558105 1202.999023 1202.346558 1201.665161 1200.862671 1199.887451 1198.296631 1195.71521 1195.599854 1196.5979 1197.017578 1196.814453 1195.747559 1194.546997 1193.541016 1193.009277 1193.135864 1195.107544 1196.203003 1197.047729 1198.875854 1200.870483 1203.007568 1205.203003 1206.979492 1207.16394 1207.140869 1207.492065 1210.730957 1213.098145 1215.062744 1216.931396 1219.092041 1222.078979 1225.370728 1229.132324 1232.5177 1234.87854 1237.516113 1240.872925 1243.3125 1245.384888 1248.308472 1250.972168 1252.041016 1252.942261 1259.055176 1273.004883 1284.855591 1294.475952 1294.432861 1293.82959 1291.987915 1289.683472 1287.448486 1284.901855 1282.207153 1279.333984 1274.744507 1270.59314 1269.060913 1267.539185 1265.890259 1265.535522 1266.000977 1266.255737 1266.868896 1267.197266 1266.85376 1266.091309 1265.575317 1264.969116 1264.336304 1263.449219 1262.787109 1261.883789 1260.555908 1258.396851 1256.800415 1254.609741 1250.830933 1247.69519 1245.47876 1242.70874 1235.98877 1231.865112 1226.494995 1220.480469 1210.804443 1209.391235 1209.994141 1209.523926 1203.498169 1199.889038 1201.117676 1200.843628 1198.675171 1195.085205 1194.469971 1195.81604 1183.164185 1182.547241 1182.379517 1181.24707 1180.408325 1178.56897 1176.190674 1173.711304 1171.334961 1168.209229 1164.95166 1164.194214 1164.914429 1165.924194 1167.526001 1169.072754 1170.125 1170.88208 1173.969604 1177.364868 1181.563843 1183.802612 1184.213257 1183.884766 1187.238037 1190.024536 1190.729004 1190.494873 1187.230225 1186.197998 1187.621094 1188.353516 1186.249268 1185.225952 1185.188965 1184.681885 1181.25293 1180.902466 1181.003052 1177.865112 +1340.772583 1318.855225 1299.015259 1298.139282 1292.853516 1295.218506 1300.072388 1298.410522 1290.961914 1297.808228 1319.942749 1342.751709 1365.661133 1388.933838 1412.141357 1427.939941 1425.172485 1419.431885 1413.907715 1405.071289 1413.928955 1423.728149 1433.40564 1441.764648 1447.544922 1453.976318 1460.496582 1471.854736 1482.068237 1492.07605 1504.176636 1515.165039 1521.749023 1532.216187 1538.953003 1541.296997 1542.30835 1541.778931 1540.512207 1539.563965 1538.339355 1536.18689 1532.771729 1534.045532 1537.823486 1537.448364 1533.022705 1522.161011 1511.337646 1501.716064 1498.999878 1495.102295 1492.034546 1488.783325 1486.212769 1484.044067 1481.493408 1478.44397 1469.83313 1455.958984 1445.295776 1437.217163 1428.764282 1415.341187 1411.741943 1407.480225 1403.075073 1399.709106 1394.105591 1389.927612 1388.13916 1386.686279 1385.546997 1384.300903 1383.687988 1385.030029 1386.137817 1386.900146 1387.118042 1386.121582 1383.483398 1381.381836 1379.526245 1376.820068 1371.329224 1365.106567 1361.593018 1362.840698 1376.176758 1386.050171 1396.095581 1404.056396 1414.002563 1415.20105 1419.943359 1426.924805 1434.018921 1440.52417 1441.694824 1441.571777 1441.244019 1440.074097 1439.297119 1434.003174 1427.936768 1412.613281 1397.707153 1382.057983 1376.069336 1389.837769 1394.490356 1389.581665 1382.852295 1372.860718 1360.853638 1348.393188 1342.828979 1329.813599 1328.592407 1327.582397 1328.412964 1332.42395 1335.712891 1337.764526 1336.812744 1330.447876 1310.945068 1302.10083 1304.043213 1308.796021 1313.354614 1317.110107 1323.198364 1326.321289 1322.346802 1316.303467 1305.922363 1300.402954 1295.124146 1292.161743 1292.196045 1303.342041 1308.927979 1314.053101 1320.233887 1327.864136 1336.321777 1345.11792 1354.638794 1354.410034 1347.600342 1341.221802 1332.797119 1328.592896 1326.35791 1324.995605 1324.526001 1325.044434 1325.575317 1322.681274 1320.002197 1326.226318 1332.063721 1336.442871 1340.371948 1340.096069 1340.427734 1345.570312 1351.078857 1358.695679 1366.633667 1370.103394 1372.702026 1374.512573 1376.491943 1377.150269 1376.991699 1373.410889 1367.008423 1358.736572 1350.51001 1341.646851 1346.787354 1347.138672 1343.006592 1333.162964 1326.962036 1323.352539 1325.811157 1331.186523 1339.70813 1349.675903 1360.69751 1370.840332 1380.733521 1389.923462 1398.707764 1404.569092 1404.335693 1400.094604 1394.515503 1390.400146 1386.93811 1383.353271 1380.015137 1373.019043 1367.929688 1369.079468 1369.98999 1369.012695 1369.58606 1376.107056 1382.327759 1389.830811 1399.13623 1406.846069 1412.02124 1413.127319 1412.90918 1410.978516 1407.981079 1404.760254 1401.488647 1399.864502 1396.949951 1394.621094 1391.020752 1381.808105 1376.779175 1377.337769 1374.59082 1369.913086 1366.012939 1360.458252 1356.057251 1352.154053 1347.758301 1339.588867 1331.573853 1323.6698 1312.162476 1302.745117 1306.490601 1312.751099 1317.938965 1321.360107 1323.509766 1323.380371 1322.167969 1323.529785 1327.138184 1329.737793 1338.769531 1350.101318 1356.723022 1354.389648 1348.921509 1341.063354 1318.437622 1303.925537 1296.961914 1291.693726 1285.370483 1281.531006 1280.887817 1291.362915 1308.726929 1309.03418 1307.560303 1302.44519 1301.003906 1306.156006 1308.753052 1311.296631 1315.630127 1324.342285 1333.019043 1339.848999 1351.79834 1352.733643 1344.371704 1338.157104 1331.125488 1323.222046 1317.122803 1306.068115 1308.30603 1321.077881 1329.977905 1334.438477 1336.682617 1333.1521 1323.833618 1316.223511 1313.839111 1307.23938 1304.556274 1306.592285 1311.550415 1312.667358 1312.881104 1317.007324 1316.541382 1309.067383 1303.778076 1296.035767 1286.023682 1280.898071 1285.069458 1290.765747 1292.651978 1293.356567 1293.721313 1287.694824 1279.893921 1280.535889 1280.598755 1281.392578 1282.621216 1283.235474 1283.428589 1280.319092 1273.358521 1273.05188 1275.163696 1276.871704 1273.623291 1267.72876 1263.016113 1262.722534 1264.414551 1273.140137 1283.017578 1282.176636 1279.629395 1276.555054 1274.401001 1272.929932 1271.85498 1270.634033 1269.567993 1268.745239 1267.97644 1267.360352 1267.015625 1266.74939 1266.06897 1264.686279 1263.300415 1262.012451 1260.206665 1257.403687 1254.277344 1249.317261 1249.675537 1256.627563 1258.022949 1257.55188 1256.811646 1255.124023 1254.16626 1254.421143 1254.895142 1254.710693 1254.360474 1254.640137 1254.999878 1256.188599 1257.37915 1258.354492 1258.462402 1258.102783 1257.578491 1256.235596 1255.596069 1256.52356 1256.60498 1256.177368 1253.433228 1250.494263 1248.310425 1246.777344 1245.338867 1242.137085 1240.278442 1245.119385 1246.540405 1246.912231 1246.69812 1243.032959 1235.673462 1231.270386 1235.558105 1241.006104 1245.235107 1247.883789 1250.666382 1253.846069 1256.527344 1257.103271 1258.228638 1259.234131 1260.126587 1260.5896 1260.516479 1259.97168 1258.871948 1257.794556 1256.768555 1255.157593 1252.890991 1250.913086 1249.94873 1249.374023 1249.100586 1248.713379 1248.066895 1246.824707 1245.006836 1245.361206 1246.4552 1246.030396 1245.005493 1243.805054 1242.378052 1242.244019 1242.853516 1243.086792 1242.527588 1241.556885 1240.238281 1239.742188 1239.379395 1238.780029 1238.147217 1236.576416 1234.393555 1232.324463 1229.176025 1225.714966 1222.819824 1220.486206 1219.159912 1218.202759 1217.336914 1216.515137 1215.770264 1215.427856 1215.09729 1214.769409 1214.545288 1214.339722 1214.177856 1214.324951 1214.274048 1214.220703 1213.780396 1213.487183 1213.123535 1212.662354 1212.132812 1211.727295 1211.214966 1210.668945 1210.093384 1209.281494 1208.0802 1207.011841 1206.206909 1205.759644 1205.330933 1204.913086 1204.419189 1203.754395 1203.086182 1202.140015 1201.299561 1200.150879 1198.772949 1198.266602 1198.490601 1198.611816 1198.36853 1197.474976 1196.298096 1195.060791 1194.162231 1193.670654 1193.612427 1194.745972 1195.901001 1197.725342 1199.65625 1201.797974 1203.758057 1205.183594 1206.373901 1207.807373 1208.78479 1210.240723 1212.261108 1214.206421 1216.035278 1218.161499 1220.038574 1222.873779 1225.959961 1229.371826 1232.013428 1234.059204 1236.215332 1237.987915 1239.442017 1240.647583 1241.900269 1243.02063 1245.036621 1253.062012 1264.397827 1276.549561 1289.383057 1295.631104 1294.957886 1294.032715 1292.327515 1290.207397 1287.816162 1285.237061 1282.117432 1278.586792 1274.70813 1271.358521 1268.991577 1267.194824 1267.066284 1267.779907 1268.734131 1269.619019 1270.172119 1270.254028 1269.762817 1269.349976 1268.507324 1267.017334 1265.670654 1265.125122 1264.079468 1262.646851 1260.7677 1258.912109 1256.91333 1252.430054 1247.985962 1245.953979 1245.313843 1241.702271 1235.092163 1229.12561 1219.4646 1220.537109 1223.358521 1222.458984 1217.94458 1213.19397 1211.590698 1210.610229 1208.897217 1207.827515 1198.558472 1195.275513 1193.692139 1187.077515 1185.69458 1183.72876 1180.84729 1178.749023 1176.743286 1174.305786 1171.332886 1168.860107 1166.139526 1166.384277 1167.639771 1169.284058 1170.540405 1172.519043 1177.084229 1179.701294 1181.321899 1181.966064 1185.783936 1188.76001 1190.481079 1190.961304 1190.817627 1192.470825 1194.295044 1194.922363 1195.23291 1195.554443 1196.593384 1197.706055 1198.085205 1193.216675 1186.632568 1179.157104 1174.768311 1174.99292 1180.320435 1184.40332 1177.142456 +1343.268311 1321.481812 1313.618408 1313.671997 1310.891724 1305.342773 1311.18457 1311.989502 1310.830688 1307.51416 1314.310303 1339.557495 1358.604004 1382.348877 1405.997437 1425.451782 1433.962524 1428.100586 1424.636353 1419.406616 1415.441895 1425.793335 1436.890747 1444.611572 1451.472656 1457.511353 1464.548828 1477.006104 1485.46167 1496.763428 1510.633545 1519.913086 1529.626587 1538.819214 1542.962891 1545.106567 1545.49353 1545.095459 1544.252686 1543.477173 1542.203613 1540.051636 1538.799683 1539.311646 1539.325073 1538.667358 1537.930542 1526.943115 1515.772705 1508.925537 1507.578003 1502.981079 1497.546387 1493.668335 1489.809814 1486.495117 1483.171875 1479.183228 1469.691528 1456.187256 1446.261597 1438.313477 1430.075073 1418.462402 1413.277954 1409.377319 1405.869385 1403.605713 1398.380371 1392.337036 1388.912354 1386.609619 1385.282227 1382.408325 1378.421021 1379.018921 1379.991699 1381.366699 1381.640259 1381.079468 1378.300293 1376.155029 1375.197144 1371.642456 1366.466309 1363.849487 1361.243164 1370.567017 1387.438965 1396.246948 1403.712402 1408.430298 1417.337646 1425.095581 1429.706787 1430.615356 1435.479614 1439.332031 1440.591431 1441.275635 1441.555298 1441.134033 1438.297363 1431.789795 1424.352295 1406.570435 1392.416504 1376.734619 1365.563599 1371.629639 1376.56311 1377.850098 1377.835938 1372.602661 1365.535522 1353.854248 1347.300781 1340.482544 1329.906128 1325.236816 1323.625122 1323.442871 1325.937988 1330.081055 1329.144775 1323.967896 1313.516968 1302.696167 1307.280518 1312.566406 1316.940918 1325.193848 1331.862793 1332.379761 1328.028809 1318.148071 1311.2771 1305.329834 1299.574951 1293.623047 1292.841309 1304.202515 1309.376099 1317.291626 1319.427856 1323.253906 1330.005615 1336.585938 1345.442505 1368.500488 1358.933105 1350.350464 1344.447266 1337.947876 1333.108276 1331.381592 1331.575928 1332.53833 1333.298706 1332.46582 1330.408691 1326.864014 1325.560669 1328.180664 1331.811401 1335.151245 1338.668091 1343.237915 1348.62793 1354.61792 1360.596924 1364.467407 1366.300171 1368.042236 1370.990601 1373.783325 1373.760864 1371.263794 1367.495728 1360.732544 1350.407104 1340.169312 1339.259399 1337.876953 1329.785034 1326.610718 1324.550537 1331.414185 1335.598511 1342.766968 1351.718628 1360.430054 1369.037354 1375.91333 1382.719238 1390.171875 1401.557983 1409.471924 1409.548706 1402.131836 1396.48938 1391.570801 1386.874878 1382.214355 1377.631836 1371.89502 1374.075439 1374.567017 1374.138794 1372.887817 1373.721313 1376.211426 1381.122437 1388.298096 1397.267334 1407.013184 1415.894409 1416.879028 1416.790771 1416.031128 1412.807007 1409.003662 1405.589111 1403.766968 1400.708984 1398.036621 1390.043335 1388.998413 1387.432495 1384.731201 1380.517822 1373.738647 1366.003052 1354.656982 1343.376221 1340.617798 1336.203979 1329.883179 1325.373169 1319.802002 1303.5177 1307.114746 1312.869507 1318.537476 1324.930176 1328.978516 1330.973145 1331.205322 1329.839233 1333.084229 1335.685547 1337.915161 1343.81604 1355.076172 1357.461792 1355.127075 1347.271851 1337.140503 1320.072021 1305.953491 1298.667358 1292.214966 1283.763306 1280.487915 1282.497559 1288.561035 1302.136963 1311.765137 1312.320923 1307.146729 1303.647827 1307.945557 1311.413452 1314.001709 1316.098633 1325.94165 1335.514282 1343.439087 1356.246216 1353.661377 1347.70813 1341.879639 1331.227783 1325.505859 1321.311279 1311.515625 1309.198975 1322.428467 1332.960205 1339.053955 1342.890747 1336.910278 1327.325195 1320.803101 1317.21106 1313.61499 1309.449585 1315.197021 1319.106323 1320.035156 1320.704468 1320.693115 1309.627197 1302.260376 1295.636108 1289.565186 1285.406006 1285.095825 1292.575562 1293.614746 1293.236938 1292.531128 1290.854126 1286.96167 1283.167358 1284.322266 1285.335083 1286.469116 1287.400879 1288.012939 1287.358521 1284.716309 1282.459229 1278.93396 1280.33313 1283.530396 1280.46228 1271.376465 1265.940796 1265.735352 1265.519897 1266.217773 1278.227295 1285.32373 1289.046509 1284.697754 1280.714722 1278.621826 1276.659302 1274.758545 1273.040039 1271.554932 1270.182495 1269.395752 1268.977173 1268.478271 1267.824585 1266.40271 1265.091675 1264.054443 1262.615479 1259.677124 1257.387817 1250.549194 1255.032837 1258.485229 1259.706787 1259.938721 1258.825806 1256.453735 1255.213623 1255.802368 1256.868042 1256.762817 1256.586426 1256.248901 1256.437744 1257.618774 1258.716064 1258.99939 1258.848511 1258.313843 1257.49231 1256.122925 1255.633179 1256.185547 1256.489624 1256.387695 1253.713379 1250.73877 1248.527954 1246.932495 1245.491333 1243.061646 1240.562256 1244.183594 1246.20105 1246.893433 1247.255737 1245.986938 1240.061157 1233.036133 1234.134033 1240.250488 1245.344238 1248.57373 1252.493774 1256.365356 1258.138184 1259.137695 1259.972778 1260.784546 1261.629639 1262.068848 1262.039185 1261.437378 1260.665405 1259.661499 1258.515015 1257.053345 1255.099854 1253.338379 1252.168457 1251.554932 1251.181274 1250.61084 1249.871094 1248.925659 1248.030151 1247.971436 1248.012451 1247.511719 1246.459839 1245.246704 1243.716187 1244.195557 1245.091675 1245.394287 1245.070068 1244.460449 1243.656128 1242.903687 1242.5448 1242.333984 1241.798584 1239.970825 1236.787476 1234.041626 1231.206421 1227.851562 1224.544678 1221.891479 1220.033569 1219.0177 1218.234131 1217.340088 1216.710693 1216.25354 1216.006836 1215.693481 1215.514648 1215.275391 1215.186768 1215.158936 1215.241699 1215.176392 1214.952637 1214.919434 1214.502319 1214.068604 1213.508545 1212.844116 1212.172607 1211.543579 1210.686035 1209.548584 1208.351929 1207.171631 1206.929077 1206.96106 1206.654175 1206.224121 1205.743042 1205.124268 1204.301636 1203.464111 1202.728149 1202.255859 1201.927734 1201.646362 1201.428833 1201.195679 1200.591309 1199.362549 1197.903809 1196.339233 1195.251221 1195.72583 1194.793335 1194.126953 1194.654297 1196.137085 1198.572998 1200.59668 1202.448608 1204.148926 1206.219116 1207.794312 1208.322632 1209.945068 1211.51123 1213.180908 1215.098145 1216.939575 1218.553345 1219.825562 1222.16394 1225.441406 1228.217407 1230.444336 1232.467163 1234.05835 1235.210327 1236.441284 1237.851318 1239.393066 1241.800293 1247.243042 1257.11377 1266.627319 1275.15918 1282.702637 1289.752075 1294.956177 1294.404907 1293.19458 1290.819824 1286.968018 1284.022461 1281.052368 1276.845703 1272.983521 1270.590454 1268.31543 1267.746826 1268.94043 1270.137085 1271.15686 1272.11084 1272.939697 1273.192749 1272.971313 1271.587402 1268.710571 1268.185059 1267.784058 1266.289185 1264.969849 1262.896851 1260.353516 1257.569702 1248.964844 1243.766724 1243.50647 1242.115845 1237.62854 1232.000366 1229.496948 1225.062378 1228.625488 1233.25647 1231.245117 1225.415527 1221.456421 1219.624634 1219.771484 1219.821899 1213.710571 1205.994019 1197.475708 1192.980469 1189.785034 1186.516235 1183.171143 1180.770264 1178.036011 1175.53418 1173.353271 1171.403442 1168.887451 1168.375977 1169.491211 1173.155273 1180.520752 1181.526733 1184.09436 1187.529663 1188.785278 1189.370605 1190.156006 1193.150024 1196.199707 1197.507568 1197.677612 1196.425049 1198.210205 1200.985962 1202.41748 1202.814331 1203.198975 1204.220337 1202.650146 1197.835449 1182.384644 1169.004028 1164.381348 1160.703491 1157.253418 1161.437012 1163.219971 1160.344116 +1356.2052 1349.019409 1344.09082 1337.617676 1330.076782 1323.822754 1324.9552 1328.826904 1328.206055 1324.288086 1315.86377 1335.404297 1354.413208 1375.341187 1399.317749 1418.059692 1439.374756 1440.724609 1435.910767 1430.840576 1425.711548 1428.14917 1438.610107 1446.75769 1453.945923 1460.610474 1470.197632 1479.851318 1487.641479 1499.911987 1512.519287 1522.800293 1536.359741 1542.196533 1546.63855 1548.917114 1548.75354 1547.904175 1547.381348 1546.87854 1545.703125 1543.632935 1541.835693 1540.494385 1539.422729 1538.605347 1537.557007 1529.2677 1521.414795 1514.448486 1516.113892 1514.861572 1505.5 1498.023438 1493.018799 1487.699219 1483.227417 1478.726562 1465.118164 1454.981323 1446.224121 1438.252319 1431.940552 1424.416016 1415.07251 1410.973145 1407.691162 1405.197998 1400.932983 1392.689087 1388.980469 1387.194336 1386.842896 1385.345703 1382.484375 1379.459961 1377.87561 1377.844238 1377.582275 1377.605713 1376.890015 1375.498169 1374.238525 1371.955078 1368.377197 1364.836182 1361.708374 1373.581421 1393.458862 1404.433105 1414.870972 1418.286987 1422.002563 1427.73584 1429.830444 1430.578613 1432.474487 1435.216675 1438.297241 1440.129883 1441.574951 1439.649658 1434.196655 1427.313721 1419.300781 1410.25708 1404.176758 1389.393311 1372.396606 1363.131958 1367.073608 1368.976685 1366.208252 1362.668945 1359.740845 1354.357056 1346.635986 1340.237671 1328.608398 1321.340942 1318.109619 1315.422485 1313.283325 1317.082886 1321.286133 1319.341553 1310.634277 1304.68689 1312.442627 1318.205933 1322.064819 1327.880005 1333.24292 1334.350708 1331.253052 1324.915771 1319.047852 1312.346191 1303.811157 1297.57251 1292.936768 1295.858521 1305.36499 1310.113892 1313.102417 1315.559448 1317.079102 1326.377563 1335.720093 1358.893188 1369.587402 1361.494995 1352.675293 1346.435181 1341.515137 1339.206421 1337.990234 1337.780151 1338.456787 1338.401733 1337.334839 1335.181274 1332.870972 1331.891113 1333.216919 1335.10498 1336.764404 1339.540405 1343.559326 1349.724976 1353.286987 1357.736816 1362.377197 1364.786499 1366.818848 1371.168091 1371.15564 1369.617554 1368.223755 1362.033691 1350.948486 1339.706421 1333.16687 1329.04248 1327.158936 1328.824219 1334.902344 1338.76123 1343.425171 1350.399414 1358.410645 1365.680054 1374.767456 1382.935425 1390.531128 1395.606689 1403.72644 1414.372681 1412.412109 1402.950195 1397.158569 1392.015503 1386.158936 1379.71521 1376.536987 1379.471313 1380.150757 1379.684082 1378.433716 1376.947021 1375.712402 1376.381836 1380.004517 1386.893921 1395.428955 1405.066406 1415.790527 1418.355957 1418.654053 1418.479858 1416.392944 1412.854248 1409.769653 1407.397583 1404.462769 1402.643555 1402.085327 1396.489136 1392.60144 1386.283325 1379.104492 1371.044922 1360.213867 1343.945312 1335.509888 1329.533691 1324.576538 1321.498413 1318.773926 1311.025024 1308.38147 1313.293823 1318.758057 1326.520752 1331.47998 1333.757812 1335.090942 1336.058594 1337.80542 1340.688965 1344.471436 1347.679932 1352.659668 1357.16394 1357.265625 1354.194336 1344.444458 1332.315552 1319.806763 1308.641846 1298.625854 1289.075806 1281.625244 1281.920044 1282.846069 1288.605347 1300.789551 1314.893799 1318.572266 1313.458008 1310.234375 1311.839478 1314.83728 1317.668823 1327.027832 1331.976929 1343.016724 1350.35144 1356.644531 1354.70459 1350.730103 1344.999756 1333.989868 1327.526611 1324.279541 1317.666016 1311.847778 1323.467163 1335.748291 1344.044189 1346.072754 1342.143311 1331.463379 1325.873047 1321.401123 1318.979126 1315.391968 1315.372437 1317.82251 1320.44812 1322.119141 1311.461914 1300.011353 1293.064575 1289.583984 1287.347046 1287.004028 1286.807617 1292.609985 1293.038696 1292.597778 1291.584229 1290.423218 1289.169067 1288.01123 1288.969971 1289.860718 1291.469116 1293.123901 1293.475098 1292.202271 1290.883545 1289.764038 1289.898804 1291.669312 1286.765015 1280.497437 1270.289062 1268.685791 1271.500366 1271.155396 1268.603027 1266.471558 1281.955078 1293.060181 1295.115234 1292.175537 1286.019409 1281.861938 1279.202515 1277.032471 1275.234985 1273.614746 1272.527832 1271.735718 1270.875977 1269.877441 1268.194458 1266.544678 1266.696777 1266.303955 1261.662842 1256.468506 1253.763916 1258.56311 1260.91272 1262.38147 1262.383179 1260.982544 1258.744385 1256.804443 1258.41626 1260.208496 1260.778687 1260.65918 1259.815796 1259.576782 1259.816284 1259.936279 1259.684082 1259.17688 1258.362183 1256.983887 1255.751343 1255.044312 1254.709595 1254.641602 1253.740112 1251.819092 1249.650391 1247.712646 1246.075317 1244.604736 1242.797852 1240.822021 1243.503418 1245.582764 1246.834351 1247.211304 1246.601562 1243.980591 1236.501099 1233.056274 1238.344727 1243.077148 1247.236206 1252.378296 1256.625732 1258.566528 1259.950195 1261.265259 1262.33606 1263.294067 1263.859863 1263.783936 1263.258789 1262.392944 1261.217529 1259.862793 1258.0177 1255.865723 1254.305664 1253.755127 1253.495728 1253.247559 1252.483643 1251.665161 1251.087891 1250.640381 1250.549194 1250.313354 1249.514282 1248.581665 1247.175415 1246.170898 1246.472656 1247.113159 1247.194458 1246.908203 1246.274658 1245.760864 1245.31604 1245.083984 1245.031738 1244.796143 1243.369629 1239.653931 1235.818726 1232.633179 1229.488159 1226.047241 1223.320679 1221.400391 1219.89856 1218.999878 1218.051636 1217.310303 1216.901733 1216.723999 1216.481323 1216.278564 1216.150879 1216.162476 1216.118286 1216.249634 1216.33606 1216.333252 1216.195801 1215.929199 1215.437988 1214.821411 1214.000244 1213.319458 1212.447266 1211.460571 1210.289307 1208.60144 1207.503418 1208.347412 1208.155273 1207.842773 1207.484131 1206.976074 1206.303345 1205.487793 1204.496216 1204.107788 1204.16748 1204.398804 1204.614014 1204.974976 1204.721436 1203.290527 1201.549805 1199.766113 1198.124268 1197.192871 1196.855591 1196.22998 1195.045898 1194.565674 1195.606689 1197.716064 1199.476929 1201.525635 1203.585571 1205.47644 1207.071411 1208.038574 1209.289307 1210.719971 1212.194458 1213.736328 1215.403931 1216.871826 1217.915649 1219.001953 1221.434204 1224.255371 1226.766602 1228.520508 1229.894287 1231.43335 1232.669556 1234.205566 1236.371582 1238.958862 1242.502075 1249.428833 1257.097046 1264.53479 1270.353882 1275.123535 1279.547852 1287.210571 1292.320312 1290.614868 1285.675293 1283.221436 1280.214111 1275.306641 1271.92395 1270.828735 1269.307007 1268.091187 1269.465088 1270.644897 1272.038818 1273.584961 1275.37561 1276.677368 1277.435181 1276.133423 1273.600586 1271.870605 1270.773682 1268.919312 1267.437378 1265.187866 1261.8573 1257.981689 1251.607422 1244.2229 1242.247437 1241.019409 1236.947266 1232.961792 1232.645752 1230.674194 1233.01709 1235.582153 1234.520386 1230.54126 1228.16748 1227.364136 1226.942505 1224.266479 1216.567261 1205.947388 1197.725342 1193.723511 1190.337036 1186.227539 1182.883667 1180.507324 1178.145264 1174.496216 1171.782104 1169.801758 1171.276245 1175.516113 1178.565308 1186.200684 1190.186279 1191.127441 1192.674561 1195.590698 1195.566406 1197.105591 1195.998291 1199.058594 1202.226807 1203.331055 1203.675659 1204.7146 1206.761841 1209.667969 1211.252319 1212.848877 1213.799438 1211.465576 1201.637329 1185.525269 1171.642944 1161.329224 1154.517822 1148.682861 1144.905518 1145.684448 1147.194336 1146.854614 +1368.204224 1369.32605 1365.968262 1359.092773 1351.914795 1346.050903 1341.797241 1343.166138 1342.308472 1340.987671 1337.076904 1332.274536 1351.05542 1369.399048 1391.90271 1416.109131 1435.689575 1444.716553 1446.290283 1442.813599 1437.704468 1435.293579 1439.027832 1448.610718 1456.026978 1463.316528 1474.796997 1481.3573 1488.822632 1501.731934 1512.879517 1525.225586 1537.130005 1544.455322 1550.384033 1552.18811 1553.026733 1551.827026 1551.275024 1550.41687 1548.936035 1546.861572 1543.474487 1540.755981 1538.929932 1537.6604 1536.219238 1528.976562 1524.298828 1525.513062 1523.108154 1519.169067 1513.301025 1503.410767 1496.092529 1488.452515 1479.530029 1472.051636 1460.510864 1452.459717 1444.627197 1437.761353 1430.600464 1422.788574 1414.300171 1411.061768 1408.054932 1405.161621 1400.003052 1391.528198 1388.901733 1391.301147 1393.14917 1392.841064 1389.526855 1391.865601 1392.944946 1392.00415 1391.059692 1382.567749 1378.347168 1376.55896 1375.342163 1378.88916 1379.677856 1368.451416 1363.560547 1369.140991 1390.47644 1401.150269 1414.503052 1417.488159 1419.739868 1421.825806 1424.072266 1425.366821 1426.595703 1432.278442 1436.998657 1439.96106 1440.907715 1433.67395 1428.581177 1423.509521 1412.996216 1400.935791 1389.926758 1387.543945 1376.729614 1359.750366 1353.908936 1358.108276 1357.678711 1356.751953 1353.899658 1344.576782 1339.37561 1328.05957 1320.83728 1316.749023 1314.717041 1316.402222 1315.877686 1311.144165 1313.181274 1312.761963 1305.980835 1308.014526 1317.064819 1322.450562 1327.238892 1331.869263 1337.870117 1339.14624 1335.841675 1331.599731 1326.68457 1320.640259 1309.049683 1301.58374 1297.102539 1294.640137 1296.014404 1303.125366 1306.639404 1308.929321 1311.457764 1317.046143 1329.30835 1350.653931 1364.093384 1369.69751 1363.159668 1355.224854 1350.141602 1346.558594 1343.842529 1343.40564 1344.003784 1344.214844 1343.673096 1341.857788 1339.425415 1338.243164 1339.361206 1341.983154 1343.871582 1344.478149 1345.326538 1347.638428 1350.879639 1354.771729 1362.963013 1366.246216 1368.839966 1369.789551 1369.166626 1367.116089 1365.192383 1357.096924 1346.095947 1336.067383 1329.174194 1327.367676 1331.645874 1337.616333 1343.033813 1349.319214 1355.66333 1359.588257 1365.89978 1373.525635 1380.224243 1388.831909 1395.356201 1399.975708 1406.672363 1415.341309 1409.559937 1401.926025 1396.793457 1391.486084 1384.327759 1379.690308 1381.322876 1382.687622 1383.85022 1383.15564 1382.045288 1380.68811 1378.377808 1377.016846 1379.045532 1386.022583 1393.831055 1402.191772 1412.849121 1418.568604 1420.172241 1420.904053 1418.961426 1414.503662 1413.71582 1412.591431 1408.887207 1405.64502 1402.940674 1396.730225 1391.561768 1382.618408 1374.628418 1365.839233 1350.377197 1338.308472 1331.945068 1320.063232 1315.156494 1315.662476 1312.931274 1310.259277 1312.909912 1318.382812 1325.299072 1331.620361 1335.328979 1337.966797 1339.24939 1340.452026 1343.455688 1347.958008 1353.017578 1356.199951 1357.898926 1357.992432 1356.832642 1350.663574 1340.591919 1328.360107 1318.8302 1308.961548 1295.873535 1283.984863 1282.790649 1282.834839 1283.64624 1288.704346 1302.031372 1314.61792 1319.213379 1317.937256 1315.266846 1316.838867 1319.795288 1329.38623 1333.164917 1337.53772 1342.646362 1346.681152 1351.872314 1354.273315 1355.219604 1349.42627 1342.460083 1333.982178 1328.776733 1320.390747 1315.460693 1327.706421 1339.730835 1350.254761 1351.719971 1343.975098 1335.391724 1328.358521 1324.167236 1320.515015 1316.917236 1314.104248 1312.93689 1309.855225 1307.755859 1296.270264 1291.154297 1290.532471 1294.440308 1294.491089 1289.426392 1288.245239 1289.939331 1292.440063 1293.008545 1293.051025 1292.624512 1292.16272 1291.216553 1293.72998 1294.903198 1298.700317 1305.890137 1307.00061 1302.199219 1299.770996 1301.977051 1301.44458 1295.063354 1285.866577 1279.622559 1280.185425 1282.059082 1281.788574 1280.053589 1276.749268 1270.02478 1270.809692 1284.175537 1292.728638 1294.433716 1293.294556 1289.429443 1284.712036 1281.03894 1278.942383 1277.353882 1275.766602 1274.51709 1273.204834 1271.685547 1269.736694 1267.905884 1268.666748 1269.293701 1263.166016 1255.824829 1258.983765 1262.683838 1264.824707 1265.486694 1265.223267 1264.467163 1263.02002 1262.353516 1263.50647 1265.376709 1266.706787 1266.249634 1264.487915 1262.860352 1261.821533 1261.10498 1260.238403 1259.225586 1258.196899 1256.494751 1255.284058 1254.443604 1253.974854 1253.236816 1252.180542 1250.698364 1248.72937 1246.302856 1244.416992 1243.697754 1243.442383 1242.111694 1242.899048 1245.244263 1246.734131 1246.866577 1246.501587 1244.888916 1239.181641 1234.025513 1238.332886 1244.523071 1247.540649 1252.410278 1255.166382 1257.897827 1260.287964 1262.255615 1263.932007 1265.175415 1265.93811 1265.827515 1265.174072 1264.121582 1262.657593 1260.948975 1258.697266 1256.193726 1255.039429 1255.228638 1255.695068 1255.40271 1254.301392 1253.442383 1252.888062 1252.763306 1253.024902 1252.945435 1252.031738 1250.780762 1249.749512 1248.89856 1248.804321 1249.000854 1249.003906 1248.583008 1248.216309 1247.821045 1247.323608 1246.879028 1246.361694 1245.787109 1244.77124 1241.035156 1236.929565 1233.369751 1230.267212 1227.204834 1224.250488 1222.3396 1220.723389 1219.4375 1218.458496 1217.894409 1217.555298 1217.344604 1217.156616 1216.946045 1216.895142 1216.986694 1217.28125 1217.265747 1217.524414 1217.605835 1217.542236 1217.350098 1216.845215 1216.093018 1215.364502 1214.515381 1213.658447 1212.658569 1211.532715 1210.372192 1209.61792 1209.517578 1209.403198 1209.212158 1208.773315 1208.194702 1207.49939 1206.489258 1205.519775 1205.291992 1205.752563 1206.387207 1206.904175 1207.667603 1207.448853 1205.862305 1203.766113 1201.903809 1200.310181 1199.042236 1198.28418 1197.242065 1195.63916 1195.234375 1195.160645 1196.717285 1198.748779 1200.654297 1202.862549 1205.200928 1207.642456 1207.943115 1207.615479 1209.84021 1211.168579 1212.307007 1213.714966 1215.025024 1216.182617 1217.439697 1219.049927 1221.285645 1223.321777 1224.648682 1225.690308 1227.661255 1229.083984 1231.116455 1233.657471 1235.981079 1239.069092 1242.862061 1248.782959 1254.63147 1259.825928 1264.797363 1268.197876 1272.23291 1276.601074 1278.633545 1278.086792 1276.256714 1273.04895 1270.064941 1267.098389 1268.073242 1267.839722 1265.972534 1266.92688 1269.421875 1271.696533 1274.961548 1277.568726 1279.121338 1281.177124 1281.343262 1278.908447 1276.108398 1273.909912 1271.995239 1269.63147 1266.863037 1263.726074 1260.102051 1255.217651 1246.909668 1245.232178 1243.838623 1241.111938 1238.739502 1237.661011 1236.670776 1237.07605 1238.178589 1237.674927 1235.376587 1234.157959 1233.971924 1233.631836 1229.588013 1216.41626 1205.30835 1199.643188 1195.241577 1190.548828 1185.817871 1182.658936 1183.031128 1178.530151 1173.753174 1171.185303 1177.165405 1184.214478 1187.567261 1189.721558 1194.456909 1197.937744 1199.175415 1202.510498 1206.818115 1207.57666 1208.336304 1205.664429 1205.606323 1209.900146 1211.978882 1213.596558 1214.541138 1215.460938 1218.159668 1221.275635 1223.205933 1223.19812 1207.834351 1192.239624 1176.477539 1162.543335 1150.863403 1139.443359 1134.027954 1133.789795 1134.833252 1136.473389 1137.992798 +1380.860229 1383.921509 1381.721558 1377.514648 1373.002441 1364.189819 1357.349976 1358.148438 1360.095215 1359.239868 1355.185059 1346.27832 1348.651978 1365.178223 1386.50708 1412.435059 1431.463501 1447.681274 1454.373047 1455.286987 1452.774902 1449.175293 1443.803589 1449.933105 1457.916748 1466.052368 1475.915161 1481.780518 1489.015747 1501.307983 1511.126099 1523.697998 1536.558838 1544.033569 1551.304321 1556.313232 1558.157593 1556.508179 1554.363525 1551.981201 1550.062378 1547.522217 1543.204224 1539.477173 1536.827515 1535.456299 1533.882324 1530.695068 1531.96228 1538.214966 1530.262329 1523.30957 1515.102783 1505.451294 1496.196777 1487.822388 1474.508667 1464.152344 1456.569946 1449.155762 1442.623291 1435.836426 1426.411743 1419.685303 1413.832764 1411.76123 1408.267822 1404.081909 1400.059448 1396.517822 1399.830078 1402.536133 1403.407471 1403.463379 1403.605591 1403.064209 1403.013306 1401.766724 1396.442017 1389.850708 1381.602295 1377.333008 1377.985962 1386.021729 1386.732422 1377.91626 1365.49353 1364.338745 1381.733032 1392.291382 1398.94397 1405.744263 1408.463867 1407.565308 1408.738647 1418.674316 1427.623657 1433.522583 1438.81604 1440.728394 1436.046143 1424.11438 1417.64856 1417.446777 1411.74707 1404.098755 1387.795532 1376.830566 1367.793945 1357.727417 1347.547241 1347.919189 1349.132324 1347.244507 1341.624512 1334.948242 1328.96582 1321.915283 1316.854614 1317.964966 1320.959106 1322.471436 1321.497681 1318.172607 1308.627075 1308.255737 1306.164429 1312.318604 1319.867188 1325.335938 1330.666504 1337.383057 1342.863037 1343.421631 1340.631958 1336.311768 1332.106567 1325.489624 1315.713379 1303.875854 1301.127441 1299.144409 1296.46936 1296.883911 1301.367432 1303.208862 1306.903809 1313.422119 1324.662598 1341.364624 1353.258301 1365.350708 1368.958008 1367.456421 1360.719971 1354.437012 1351.586426 1350.416504 1349.893799 1349.525879 1348.886719 1347.512329 1345.228638 1343.897705 1344.431274 1346.717773 1350.098999 1353.27063 1353.730103 1355.137939 1356.861328 1360.215698 1365.509521 1367.761597 1369.263672 1369.497803 1367.566895 1362.832275 1356.142578 1350.356689 1340.92981 1331.378296 1329.124634 1333.514526 1339.220215 1345.505615 1352.418701 1359.161743 1364.465454 1367.203125 1375.43689 1385.114258 1392.137695 1395.813354 1401.368042 1405.50415 1409.836792 1410.657104 1406.85791 1401.120239 1395.835571 1390.365845 1382.933105 1383.322876 1385.382935 1386.708984 1387.819092 1388.201416 1387.164551 1384.886475 1381.550659 1377.942871 1378.268066 1385.024902 1392.236572 1400.722412 1409.925659 1416.932251 1422.050537 1424.473999 1423.018433 1419.861328 1417.86438 1414.860596 1409.189575 1403.573486 1396.96228 1391.285278 1383.12146 1374.566528 1367.125732 1355.313354 1340.86377 1333.296753 1322.889771 1323.66626 1329.050659 1329.994751 1320.317993 1314.771973 1315.684448 1322.601196 1329.970703 1335.265381 1339.598755 1342.658569 1344.29187 1347.088257 1351.263184 1355.480103 1359.182251 1359.99292 1358.9823 1357.369629 1353.815796 1346.847656 1336.140991 1324.642212 1316.914917 1307.178955 1289.767456 1283.061035 1283.75354 1284.0271 1284.411377 1287.839966 1298.394531 1311.761108 1317.843506 1319.531982 1319.444336 1320.047119 1324.381226 1329.651489 1332.238037 1333.5354 1335.103394 1337.491699 1340.728516 1344.19751 1348.503418 1348.710083 1344.945435 1342.616455 1336.296387 1328.790283 1323.012939 1332.874634 1343.11145 1355.771362 1355.325806 1346.212158 1337.400635 1329.705566 1326.067749 1322.68103 1319.769287 1315.801636 1308.443115 1302.18689 1292.038452 1293.269165 1295.621216 1301.687744 1310.053223 1305.602417 1292.828369 1290.610474 1291.882812 1295.608521 1297.787476 1299.007324 1299.716675 1298.459351 1297.67749 1298.689087 1300.943481 1304.474609 1312.459839 1313.746704 1310.794678 1309.540894 1309.004639 1307.037354 1294.039185 1283.480225 1282.223511 1286.945068 1289.08374 1289.429932 1288.738647 1285.345337 1277.925171 1274.864502 1279.338501 1285.782227 1292.0625 1293.725098 1293.843994 1291.876709 1287.975708 1283.955811 1280.999512 1279.158325 1277.587646 1275.954834 1274.167969 1272.243774 1270.68103 1270.422485 1269.719238 1263.209595 1257.760132 1265.213989 1267.943115 1268.456421 1268.439087 1268.171997 1268.056396 1267.633179 1266.188354 1267.430542 1269.128052 1269.353882 1268.974609 1267.492065 1265.317383 1263.463379 1261.895874 1260.570312 1259.302124 1257.865845 1256.368164 1255.193481 1254.199951 1253.432373 1252.600586 1251.574341 1250.272339 1248.458374 1246.003662 1244.358765 1245.036011 1245.584473 1244.649536 1242.584473 1245.630737 1246.985107 1247.380615 1246.550415 1244.950684 1239.817139 1234.60791 1239.478149 1245.586426 1250.433472 1253.363892 1255.418091 1257.449219 1260.946167 1263.237793 1265.300537 1266.996704 1267.914917 1267.671753 1266.982056 1265.755859 1264.228394 1262.275879 1259.677124 1256.92334 1256.283447 1257.13562 1257.614502 1257.295044 1256.02417 1254.798828 1254.08252 1254.296875 1255.439087 1255.589844 1254.305542 1253.078491 1252.025879 1251.164551 1250.928467 1250.995117 1250.825806 1250.515015 1250.182373 1249.571777 1248.911865 1248.106323 1247.119141 1246.061646 1244.487061 1241.105591 1237.270264 1233.92041 1231.000732 1227.7948 1224.899902 1222.522339 1220.658691 1219.373291 1218.763062 1218.348145 1218.251831 1217.987061 1217.698486 1217.576538 1217.590942 1217.741089 1218.219604 1218.531616 1218.586426 1218.75 1218.817017 1218.641235 1218.256348 1217.296875 1216.605103 1215.692261 1214.832764 1213.976074 1213.14209 1212.345337 1211.556885 1211.135498 1210.604248 1210.435791 1210.003906 1209.425537 1208.707764 1207.825684 1206.834229 1206.250854 1206.692627 1207.628296 1208.613403 1208.807251 1208.394531 1207.479614 1205.593384 1203.778442 1202.003296 1200.583252 1199.605591 1198.513794 1197.556274 1196.710815 1195.707764 1195.922852 1197.876587 1199.679565 1201.76001 1203.997437 1205.724121 1207.009399 1208.250488 1209.406982 1210.139771 1210.646606 1211.916748 1213.270874 1214.768677 1216.193848 1217.696777 1219.022461 1220.165161 1220.776001 1220.7052 1223.565063 1226.461914 1228.675903 1230.806519 1232.926758 1235.575806 1238.933716 1242.495117 1246.776978 1251.380127 1255.385742 1258.977539 1261.40625 1263.492554 1265.865845 1267.002319 1266.066772 1264.603394 1261.760376 1258.265991 1260.591675 1260.725586 1259.019043 1257.133179 1264.353271 1269.50061 1276.880859 1280.286621 1281.282593 1282.745728 1282.654297 1281.60022 1279.412109 1277.179077 1274.904297 1272.160278 1269.828613 1266.182007 1260.278564 1255.501221 1256.283081 1254.514404 1248.612183 1244.121582 1243.979126 1244.299927 1242.789307 1241.328857 1241.466675 1241.905396 1241.992188 1241.882812 1241.093628 1235.059814 1225.641724 1212.86792 1204.295532 1198.647217 1194.171387 1190.512939 1186.414795 1184.747925 1183.000488 1177.378418 1173.213867 1179.81311 1186.585205 1191.525269 1195.785034 1197.837402 1201.539429 1204.799194 1206.051758 1211.303467 1214.739014 1215.919922 1217.761719 1213.783447 1215.133057 1222.723267 1225.280151 1226.390015 1225.732178 1225.092773 1227.137817 1228.838989 1224.710693 1215.636597 1201.898071 1183.817871 1167.83252 1154.711792 1133.928833 1132.903687 1133.501465 1132.400269 1131.751221 1131.553711 1132.064331 +1403.253784 1403.104858 1399.782471 1396.329224 1391.769775 1384.672485 1375.831787 1373.29126 1374.065063 1372.51416 1368.274048 1361.946411 1355.284302 1359.432861 1383.054443 1409.849854 1428.060791 1446.163574 1459.003784 1463.838013 1462.710449 1459.208008 1455.697021 1453.586548 1460.03479 1466.344604 1474.423096 1480.922852 1488.465332 1500.469482 1509.743774 1519.933838 1531.457764 1540.759277 1549.307129 1559.421387 1562.418945 1560.101562 1556.135376 1552.488647 1549.581543 1546.313721 1541.789307 1537.491211 1535.765015 1534.159546 1532.637939 1531.56189 1532.846313 1535.772461 1529.951538 1524.116821 1514.709351 1505.969727 1495.17041 1483.19104 1472.729248 1463.765869 1455.225708 1448.710571 1442.374756 1436.079834 1429.812256 1425.882812 1419.185303 1415.47522 1409.533691 1402.606934 1401.287231 1404.291382 1411.22522 1410.125 1407.906006 1407.650513 1409.293823 1411.148926 1414.069336 1409.566284 1398.087402 1388.029175 1379.207275 1376.749634 1385.374634 1395.620361 1394.379761 1383.923828 1372.322021 1364.706787 1371.815308 1379.368774 1387.678589 1390.988403 1395.612549 1400.474976 1414.344604 1427.340942 1431.489868 1436.126709 1440.44043 1438.467773 1425.335815 1410.028076 1399.680298 1406.898926 1404.550659 1397.306274 1384.713379 1374.621094 1365.676636 1358.511353 1347.733276 1339.462769 1340.47876 1336.66687 1330.408813 1326.325928 1320.827881 1319.283569 1321.996704 1325.734741 1329.062256 1329.930664 1327.46814 1321.638184 1313.968018 1310.055542 1316.131714 1316.558472 1323.400635 1329.636963 1334.422729 1340.967163 1345.102417 1345.71875 1343.329468 1340.61792 1336.359741 1330.342041 1318.389404 1309.437744 1307.883179 1305.63562 1301.363159 1296.195312 1298.528564 1301.206543 1304.367676 1310.689453 1318.334229 1336.29187 1345.954834 1355.106812 1365.520508 1368.953369 1369.459961 1367.18042 1362.55188 1358.67749 1356.842041 1355.441284 1354.481445 1353.5354 1351.785156 1350.167969 1349.395874 1350.268066 1354.572876 1357.399536 1359.023193 1361.397827 1362.375854 1364.183594 1367.671753 1369.446533 1369.724854 1369.337402 1366.703613 1357.058472 1349.842285 1344.099854 1335.446777 1330.703491 1335.258057 1340.696899 1346.863647 1353.581787 1362.158936 1368.547485 1373.584961 1377.362793 1383.398926 1392.797607 1399.480469 1404.455688 1408.854858 1412.994141 1414.733521 1411.004517 1404.537842 1399.804077 1395.06665 1389.026123 1385.817871 1389.672852 1390.801636 1390.486816 1392.170532 1392.633301 1391.979248 1390.308594 1386.895142 1381.640747 1378.33313 1384.396729 1391.295044 1399.293335 1407.680054 1415.258545 1423.615601 1427.265991 1427.635132 1424.615234 1419.311401 1413.635498 1406.05896 1397.652344 1389.063354 1380.809448 1372.29248 1364.187378 1353.463135 1342.896362 1332.650513 1325.606201 1333.859741 1339.887207 1340.828125 1336.172241 1321.959351 1315.336304 1319.616333 1327.614502 1334.078857 1339.399902 1343.734741 1346.85437 1349.607788 1353.578613 1360.576904 1365.309814 1365.071045 1361.759766 1357.473633 1352.241821 1345.365479 1340.329346 1328.660889 1320.023071 1312.2771 1299.857788 1284.318359 1285.327637 1286.889771 1287.053101 1286.251221 1286.142456 1290.429321 1307.984863 1313.557373 1317.794067 1319.679077 1320.045166 1319.016724 1318.186523 1321.775146 1323.811523 1324.695312 1327.35144 1331.496582 1334.676758 1338.130249 1340.928589 1342.751099 1342.858276 1342.506226 1335.806763 1328.745728 1334.644165 1344.666992 1356.561279 1354.725342 1347.072144 1339.463623 1333.054688 1328.797119 1325.136963 1321.068359 1317.669678 1307.538696 1302.153076 1298.814575 1300.113892 1301.099609 1313.475342 1318.431396 1308.841553 1293.908813 1292.621826 1295.905884 1300.162231 1303.735474 1306.026855 1307.477661 1307.484375 1304.923706 1304.292969 1307.241089 1315.26001 1322.341919 1325.779419 1319.86145 1318.163086 1313.974121 1305.934082 1290.746216 1290.464966 1291.85498 1295.586914 1296.884766 1297.422241 1297.017456 1293.839722 1283.386719 1279.069946 1282.782593 1285.726562 1289.509033 1292.056152 1293.841919 1294.539795 1293.911133 1291.116943 1286.730225 1283.010864 1280.287109 1278.277344 1276.420898 1275.265747 1273.640503 1272.031494 1270.034302 1263.168579 1262.122681 1269.593628 1270.338013 1270.442383 1270.317261 1270.18811 1269.991577 1269.691284 1268.909912 1268.985107 1270.125 1269.863892 1269.474365 1268.190308 1266.214844 1264.121094 1262.168457 1260.53894 1259.03186 1257.449707 1256.081421 1255.01355 1254.132324 1253.341431 1252.4729 1251.572876 1250.525879 1249.34314 1247.9646 1246.956055 1246.934326 1246.857056 1245.239014 1243.697754 1245.340576 1247.934814 1248.44104 1247.397217 1244.74292 1240.532104 1235.090942 1239.511597 1246.127319 1255.065063 1256.812866 1257.711426 1259.224854 1261.744263 1264.216187 1266.275879 1268.162842 1270.342407 1270.74939 1269.031006 1267.415161 1265.80603 1263.87854 1261.627441 1259.607178 1258.863525 1259.077393 1259.236572 1258.359985 1256.78772 1255.21875 1254.907837 1255.457642 1257.144775 1257.36792 1256.304199 1254.974609 1253.761719 1252.899414 1252.833252 1252.988647 1252.870239 1252.666626 1252.074829 1251.341553 1250.36731 1249.128906 1247.638428 1246.090576 1244.061646 1240.737427 1237.539551 1234.293457 1231.121826 1227.927979 1225.212891 1222.286499 1219.79541 1219.447266 1219.402466 1219.321533 1219.167603 1218.698242 1218.209229 1218.125244 1218.161499 1218.571777 1219.076538 1219.446533 1219.75 1219.924316 1220.018555 1219.873901 1219.387695 1218.578491 1217.847168 1216.861084 1215.97644 1215.310303 1214.666138 1214.041382 1213.331299 1212.814697 1212.068726 1211.737305 1211.223022 1210.56543 1209.750488 1208.801758 1207.850586 1206.929565 1207.563477 1208.457153 1209.238281 1209.381592 1209.084229 1208.228271 1206.856689 1204.984375 1203.214478 1201.893677 1200.929321 1200.026489 1199.012573 1198.113159 1197.062378 1196.27002 1196.988892 1198.63562 1200.606812 1202.694702 1205.37085 1207.874756 1208.740112 1209.047119 1209.086426 1208.657227 1209.862793 1211.749023 1213.39856 1214.87146 1216.257324 1217.5896 1218.376099 1218.310181 1218.924683 1221.430908 1223.801636 1226.003784 1227.971191 1229.994019 1231.956787 1235.227905 1238.513428 1241.532471 1244.281006 1247.979004 1250.972778 1253.166504 1254.532837 1254.97522 1254.662354 1256.725586 1256.471313 1254.083984 1252.592651 1253.777466 1253.77356 1253.650879 1254.981812 1266.409668 1272.374634 1277.728271 1282.415405 1283.389404 1283.803833 1283.556152 1282.917603 1281.713745 1280.332031 1277.943604 1275.04126 1271.899048 1268.142456 1264.570312 1261.410156 1260.9021 1258.033447 1253.072998 1253.631836 1253.626953 1251.390747 1247.895264 1244.326782 1245.707275 1247.52771 1249.373901 1249.095459 1244.07312 1231.274292 1217.447388 1207.44751 1202.115479 1197.451172 1193.195068 1189.274536 1185.965698 1183.182373 1179.745728 1175.202026 1183.637695 1187.735596 1192.100098 1197.229858 1201.874634 1204.2948 1208.490845 1212.989136 1215.451538 1219.696045 1222.42981 1223.668457 1225.941162 1223.000122 1224.052246 1230.195923 1234.040161 1236.439697 1236.592163 1236.546265 1240.619385 1236.329956 1217.61499 1202.661377 1191.216553 1175.381714 1160.979614 1147.083984 1133.264282 1134.951416 1135.754395 1135.507935 1135.415527 1135.652466 1135.248413 +1409.364502 1416.921265 1420.923218 1420.072754 1410.903076 1401.177979 1395.088989 1387.101685 1386.243774 1385.10376 1383.12439 1380.896851 1375.535889 1368.281738 1374.628662 1402.338257 1425.923584 1444.031738 1461.983398 1469.685425 1472.267334 1468.298462 1465.38623 1466.393433 1465.442017 1469.809448 1473.555908 1479.598999 1486.717285 1498.965454 1507.52002 1516.028809 1525.081421 1535.291382 1544.726929 1555.807617 1563.211792 1560.640747 1555.175415 1550.84436 1547.367065 1544.598022 1541.051758 1537.598022 1535.526245 1533.945923 1532.175537 1530.719849 1530.005127 1529.468384 1526.060303 1519.914429 1512.102783 1505.145386 1494.259033 1479.911499 1469.213501 1460.740479 1454.179199 1448.929077 1444.498535 1439.118652 1435.298096 1430.59021 1426.002563 1418.521973 1408.555298 1401.219482 1406.580566 1416.224976 1416.901489 1412.839111 1409.207153 1409.107788 1412.255493 1415.096924 1417.766846 1404.143799 1388.979736 1379.887695 1377.695312 1380.490723 1394.469727 1405.356567 1402.151245 1390.324707 1379.638184 1369.30481 1369.463013 1379.434814 1386.513184 1390.740845 1395.707153 1405.009277 1419.504028 1428.881226 1433.265259 1436.69397 1437.229248 1430.394897 1418.811035 1401.158081 1390.359375 1389.355225 1390.447754 1385.244507 1376.661743 1368.281372 1361.631836 1355.67688 1345.421021 1335.106934 1328.397705 1325.93335 1322.902588 1320.853516 1322.381836 1325.270874 1328.406616 1331.017822 1332.588989 1332.748535 1330.494507 1324.444946 1319.08313 1321.127319 1324.252441 1325.615601 1327.731079 1333.54248 1338.312012 1343.802368 1348.247803 1349.490479 1348.227661 1345.362915 1341.300537 1333.600586 1325.370972 1322.084473 1319.497192 1316.111206 1307.860352 1300.337524 1297.344238 1300.292847 1303.226196 1307.4646 1314.433838 1329.575562 1338.863525 1350.528931 1360.725708 1366.911011 1369.235718 1370.259155 1370.365601 1369.046021 1367.720703 1366.373169 1364.912476 1362.556885 1359.206299 1354.961426 1352.561401 1353.838745 1356.382324 1360.575806 1363.684204 1366.751587 1367.592773 1367.524536 1370.41333 1370.895508 1370.293091 1368.77832 1363.672729 1355.168335 1347.049805 1339.278931 1331.704102 1335.018555 1341.664551 1347.172241 1354.551758 1362.315186 1370.525024 1376.412109 1383.290283 1390.379272 1391.904541 1399.560547 1409.944336 1416.12146 1417.639404 1418.580811 1417.364258 1412.342651 1404.827393 1400.178833 1394.796143 1388.524414 1390.222656 1394.657471 1396.394409 1397.043335 1397.097046 1396.641113 1395.627563 1394.081665 1391.461548 1386.555664 1384.110107 1386.092773 1390.272339 1397.705933 1405.556885 1414.004395 1425.420776 1429.641968 1429.374268 1426.570312 1417.243896 1410.253296 1402.430786 1390.115845 1382.318726 1372.447021 1361.007935 1349.467407 1341.270142 1334.431885 1331.813232 1342.222168 1347.232422 1347.562134 1346.223022 1338.269897 1317.010376 1318.841064 1330.424072 1334.536987 1339.130981 1343.582031 1347.966431 1351.266846 1353.833984 1361.530884 1368.697144 1369.343994 1366.141235 1359.309937 1353.249023 1343.875977 1335.770508 1328.061035 1322.584106 1314.982788 1304.94104 1289.251343 1285.635864 1289.725342 1291.989258 1291.307983 1288.94812 1287.685913 1287.927856 1293.704468 1305.405151 1306.891968 1306.925171 1307.460205 1306.345337 1310.408447 1313.680542 1314.82251 1314.901733 1320.240967 1327.157593 1327.836426 1329.898926 1336.598877 1339.407227 1340.381226 1341.601318 1343.006958 1343.246704 1340.814941 1346.802002 1357.141724 1354.634766 1349.546631 1343.64856 1338.319824 1332.748169 1327.510132 1320.164185 1313.388916 1303.088379 1301.605225 1303.395752 1309.751465 1313.547485 1322.860596 1321.275269 1308.556641 1294.084839 1294.835327 1301.47583 1305.093994 1308.043213 1310.022217 1311.792236 1313.677002 1313.810913 1312.921631 1315.169434 1322.809204 1332.025513 1335.431274 1332.795654 1325.94519 1315.948486 1301.255249 1291.651245 1295.697144 1299.902588 1303.404541 1305.293701 1306.149048 1304.087036 1299.289307 1288.930908 1281.33606 1285.643433 1288.624146 1290.222046 1291.474365 1293.140869 1294.927856 1295.23877 1294.227051 1292.483032 1288.698608 1284.562378 1280.375122 1279.072144 1278.057617 1276.064819 1273.321411 1270.484985 1263.087769 1265.863037 1271.17395 1271.935181 1271.979736 1271.912476 1271.839111 1271.654907 1271.088257 1270.587769 1270.578613 1270.624512 1270.286011 1269.656616 1268.380249 1266.289307 1264.036133 1262.021729 1260.191772 1258.501709 1256.837646 1255.752441 1255.003174 1254.333496 1253.538086 1252.766968 1252.011108 1251.268921 1250.497681 1249.928223 1249.579224 1249.887085 1250.134155 1247.632812 1244.4375 1245.796143 1249.314941 1250.52356 1249.50293 1247.41748 1244.163208 1236.665161 1238.383301 1244.098267 1256.408936 1258.843872 1259.903809 1261.304565 1263.143677 1264.912598 1266.69165 1268.712036 1272.938354 1276.478394 1275.0802 1269.98999 1267.509155 1265.499512 1264.028442 1262.556885 1261.536743 1261.213989 1260.702515 1259.445435 1257.517822 1256.110229 1255.818726 1256.459595 1258.395142 1258.469971 1257.457642 1255.977783 1254.774048 1254.180176 1254.563477 1254.926025 1254.86438 1254.548218 1253.864868 1253.028076 1251.788818 1250.245972 1248.268677 1246.154663 1243.937622 1240.246216 1236.873047 1233.730957 1230.98938 1228.548462 1225.914062 1223.205566 1220.774292 1220.780396 1220.691162 1220.691772 1219.967407 1219.189087 1218.643677 1218.534668 1218.904907 1219.398193 1219.88501 1220.771118 1221.228638 1221.462158 1221.733032 1221.461182 1220.881958 1219.936523 1218.993774 1217.911377 1217.041382 1216.603638 1216.130005 1215.580444 1214.894409 1214.413696 1213.53418 1213.023071 1212.481689 1211.76123 1210.858032 1209.904541 1208.929932 1207.589233 1208.19043 1209.290161 1209.831299 1209.741577 1209.377197 1208.542969 1207.223145 1205.541748 1204.251221 1203.096802 1202.370605 1201.592529 1200.623413 1199.633911 1198.650391 1197.662964 1197.105713 1197.39917 1198.849243 1200.358643 1203.661133 1207.086914 1207.96106 1207.904785 1207.52832 1207.051025 1208.385864 1210.514282 1212.166748 1213.501465 1214.807739 1215.901978 1216.501343 1217.12854 1218.212402 1219.806885 1221.880005 1223.725098 1225.689819 1227.86853 1229.692017 1232.00061 1235.13855 1237.991699 1240.494751 1242.495117 1244.309082 1246.503784 1247.670166 1248.186401 1249.296631 1250.848877 1250.644775 1249.241577 1246.848145 1246.402954 1244.799805 1248.397949 1255.497803 1262.122559 1268.091553 1272.60083 1278.637695 1282.903198 1285.251465 1283.9021 1283.380127 1282.814575 1282.364746 1281.200562 1277.917603 1273.78125 1269.382202 1268.799316 1267.415527 1265.58374 1260.512085 1257.759521 1259.109741 1259.275146 1258.004639 1254.299683 1252.077881 1253.389526 1256.186768 1258.389404 1251.128906 1236.997314 1222.092529 1210.990967 1204.661011 1199.787476 1195.560303 1191.671875 1188.022827 1184.383789 1180.596191 1176.961792 1184.394897 1190.676025 1195.373535 1198.049194 1202.956787 1208.28894 1211.866577 1215.818726 1221.241821 1223.7229 1226.345825 1230.049683 1232.653198 1234.149536 1234.109497 1233.33313 1240.109497 1245.436401 1247.293213 1247.548218 1244.640503 1242.931641 1232.479248 1208.206055 1193.340576 1179.231445 1167.991821 1157.637695 1142.467285 1134.251831 1135.792114 1136.864624 1137.298462 1137.646851 1137.851807 1137.91333 +1402.469727 1412.448853 1425.222778 1436.969727 1436.806274 1427.75354 1422.113403 1412.299805 1403.840088 1401.818726 1400.435425 1395.784302 1393.254272 1391.640137 1387.667236 1398.061035 1422.700195 1441.142334 1463.203491 1475.863892 1479.673462 1479.157959 1473.697266 1473.221436 1476.510864 1478.335571 1480.205078 1484.595947 1487.722778 1496.917236 1504.167847 1511.9104 1520.301758 1528.413696 1537.614258 1545.875 1553.630737 1555.086792 1552.372925 1548.534668 1545.767578 1543.154907 1540.134521 1537.045288 1535.430298 1534.146729 1532.093384 1529.258301 1526.881348 1526.194946 1523.862793 1516.716064 1509.226196 1502.040771 1493.228638 1480.518555 1470.693481 1465.416504 1460.727905 1454.779907 1450.355103 1444.555786 1438.817383 1433.452393 1428.599365 1419.33667 1413.572998 1410.709839 1415.195312 1417.653687 1416.142822 1411.291748 1407.145386 1406.83313 1410.972046 1416.967773 1403.309082 1391.218628 1382.775879 1377.570435 1382.534912 1387.963379 1401.179565 1415.686768 1408.275391 1397.106567 1387.961426 1380.056274 1371.163086 1383.965332 1392.400513 1397.811035 1404.642456 1409.942749 1421.699707 1427.202148 1437.128662 1438.255371 1433.049194 1425.842041 1415.610229 1399.836914 1382.862671 1376.273926 1375.474609 1373.086304 1367.078003 1360.623535 1354.965576 1346.9552 1339.305664 1331.115356 1324.764282 1324.362549 1327.53064 1330.202637 1330.856445 1332.184448 1333.446777 1334.548218 1334.940186 1333.679565 1329.574829 1327.48938 1328.649414 1329.394531 1330.967163 1332.853149 1332.793457 1336.536133 1340.476074 1347.138428 1352.365845 1354.17041 1353.424927 1349.430664 1344.311768 1338.500244 1335.04541 1333.468018 1328.270996 1323.213501 1315.726196 1302.926392 1297.797729 1300.454346 1303.442383 1306.843872 1312.248413 1326.031494 1337.189453 1348.831177 1358.180908 1364.196411 1367.457886 1369.767578 1370.901489 1372.884766 1374.713745 1375.048096 1374.757568 1372.221313 1369.151489 1366.002319 1361.334229 1359.656738 1361.23877 1363.268188 1367.065308 1370.797241 1372.625122 1373.367065 1374.144287 1372.281738 1369.36084 1365.686279 1357.482178 1350.524536 1342.950562 1334.451904 1334.516724 1338.949707 1345.255371 1351.654663 1360.325439 1368.145996 1376.401245 1385.444214 1393.13916 1397.709961 1399.932983 1408.070068 1419.845825 1424.305664 1425.017212 1423.262817 1418.029175 1413.145386 1408.065308 1402.664917 1395.545654 1389.474976 1394.769653 1401.125 1403.018677 1403.812134 1402.234375 1400.8927 1399.385986 1397.051514 1393.536621 1389.704102 1387.64624 1387.998291 1389.66394 1396.230713 1403.556763 1413.829468 1424.19519 1429.62854 1430.105591 1423.440552 1413.620361 1406.617065 1397.130127 1386.538818 1377.871216 1366.818115 1354.425293 1341.683716 1337.609253 1345.702271 1353.7146 1355.849243 1355.292847 1352.572021 1347.292969 1333.226685 1320.001709 1330.4375 1337.500366 1342.585571 1344.972412 1348.902588 1353.255249 1356.829956 1360.759888 1366.598267 1369.359497 1366.877808 1358.50647 1352.521729 1345.939087 1337.822021 1330.942749 1323.365112 1316.980225 1310.425049 1299.474487 1285.56958 1288.505615 1293.186646 1295.373169 1294.136719 1291.852295 1290.116333 1289.371338 1289.641235 1291.73291 1297.682007 1300.392334 1304.077393 1308.930054 1312.08313 1317.469238 1320.763062 1326.53479 1331.38147 1332.9198 1334.633789 1336.260742 1338.178101 1339.75708 1340.425293 1340.734009 1341.533813 1346.468872 1352.783936 1354.007568 1356.460449 1355.89563 1352.996948 1347.687622 1342.833984 1335.220337 1328.123413 1318.737305 1310.269043 1302.990601 1301.365356 1311.792725 1322.447632 1327.210815 1331.718018 1321.08374 1303.848389 1298.727539 1300.744141 1306.204224 1310.041016 1312.716309 1313.939453 1315.471558 1319.702515 1322.036011 1322.144409 1328.184937 1332.916016 1339.065552 1342.60144 1336.319214 1326.646973 1312.696777 1298.602417 1297.036377 1302.72522 1309.845581 1315.620728 1316.329102 1314.292114 1310.342529 1305.053101 1293.80896 1287.088135 1290.036499 1293.184692 1293.57019 1293.231201 1292.898193 1295.242432 1294.771851 1293.764404 1293.477783 1293.419556 1291.3573 1286.773193 1282.399658 1280.54126 1278.435913 1274.894775 1270.916016 1263.476562 1267.633179 1271.852783 1273.122681 1273.37439 1273.546509 1273.375244 1273.025879 1272.576782 1272.126343 1271.649414 1271.063843 1270.495483 1269.783813 1268.143433 1265.775024 1263.505005 1261.427612 1259.358276 1257.539429 1256.149902 1255.649414 1255.238281 1254.643555 1253.88562 1253.212769 1252.594238 1252.050903 1251.729248 1251.587891 1251.854004 1253.059814 1255.929077 1252.625977 1245.780396 1247.18396 1253.188599 1253.81311 1252.297241 1251.142212 1246.496948 1240.062256 1237.151611 1240.702515 1245.880981 1257.531616 1259.673828 1261.996704 1264.535767 1265.660156 1266.823364 1269.766846 1276.308228 1281.618408 1282.879883 1278.685303 1270.455444 1267.58313 1266.30249 1264.886353 1263.728516 1263.273926 1262.557129 1261.264648 1259.759399 1258.457397 1257.857544 1258.942261 1259.966797 1259.72998 1258.692017 1257.128052 1255.744629 1255.347534 1256.321777 1256.784546 1256.734497 1256.21936 1255.484985 1254.503662 1253.261841 1251.444946 1249.1604 1246.803833 1244.244263 1240.539917 1235.864746 1232.617065 1230.61499 1228.663818 1226.530396 1224.514404 1223.049316 1222.352539 1222.155029 1221.724365 1220.75647 1219.509155 1218.922363 1218.859009 1219.501831 1220.472412 1221.499146 1222.365967 1223.005371 1223.275879 1223.396606 1223.345947 1222.709351 1221.734497 1220.194458 1218.934692 1218.055908 1217.830688 1217.545898 1217.030029 1216.335083 1215.887329 1214.95752 1214.387817 1213.794312 1213.075684 1212.306641 1211.419189 1210.532104 1209.840698 1209.83667 1210.294434 1210.543335 1210.360596 1209.7052 1208.430542 1207.157837 1206.244019 1205.136963 1204.234375 1203.640259 1203.254639 1202.47876 1201.642822 1200.6604 1199.619995 1198.685425 1198.059204 1197.758179 1198.356201 1200.338013 1203.37854 1205.635986 1206.030518 1206.056274 1206.799927 1208.408447 1210.080688 1211.199951 1212.308716 1213.418823 1214.450928 1215.314697 1216.288818 1217.485352 1218.618042 1219.61792 1221.801025 1223.631836 1225.842041 1227.882324 1230.34021 1232.508179 1235.006348 1237.073608 1239.067139 1240.826172 1241.97229 1242.61499 1242.900024 1244.481201 1246.352051 1246.411987 1245.136108 1242.917725 1242.373535 1242.536987 1246.053711 1251.338135 1254.708008 1257.456299 1262.25769 1265.780273 1270.054199 1275.864014 1282.393799 1282.636963 1282.796875 1282.924805 1282.210205 1279.545166 1276.7323 1273.812866 1272.256836 1271.14856 1269.865356 1266.756836 1263.705444 1263.190796 1262.964844 1262.050781 1259.46582 1257.732178 1258.700806 1259.371582 1251.17981 1238.975464 1228.065186 1215.384644 1206.423706 1202.369141 1198.218506 1194.448486 1190.075806 1186.596069 1183.075439 1178.942627 1180.199951 1190.692505 1197.945679 1203.765991 1205.711548 1207.970703 1216.002075 1221.301758 1223.848511 1228.272827 1229.667236 1232.270264 1236.230225 1239.066162 1241.31543 1242.38501 1246.468018 1252.031128 1250.431274 1247.118408 1239.628174 1227.482422 1219.747803 1214.154419 1202.34082 1191.102905 1178.078979 1166.719971 1157.670776 1141.757446 1134.511475 1136.453735 1137.975708 1139.487671 1140.231567 1140.771606 1141.603516 +1383.277466 1393.402222 1411.86145 1427.500122 1439.113037 1439.536011 1433.745483 1431.503296 1423.902832 1417.946045 1416.436523 1414.658081 1412.112549 1411.11731 1410.281372 1409.096558 1420.533203 1439.065674 1461.860718 1478.081421 1483.980957 1486.664917 1481.703003 1480.166992 1484.259155 1488.80603 1491.9646 1493.066772 1497.617554 1502.857544 1506.094116 1509.352783 1514.45874 1521.529541 1529.350952 1537.235352 1544.122192 1548.032349 1547.717529 1546.600098 1544.640869 1542.83728 1540.585938 1538.397827 1537.034424 1534.906982 1532.96521 1529.406494 1524.179321 1522.486328 1518.735352 1513.021118 1506.241333 1498.411011 1491.590576 1482.882446 1476.629028 1475.97583 1470.3573 1463.54126 1456.300537 1450.739746 1441.321777 1434.982178 1429.620728 1424.809082 1419.381348 1417.074097 1417.700684 1417.322266 1412.372681 1406.917603 1402.405273 1401.279663 1401.516479 1395.038696 1387.465454 1387.101318 1386.773438 1389.001953 1391.390259 1396.562744 1412.677734 1419.798218 1415.473145 1403.368896 1392.305786 1383.725586 1372.957397 1387.494507 1394.84668 1402.544312 1414.081177 1424.175049 1435.963135 1441.570923 1441.751343 1439.162964 1429.200562 1420.051758 1409.685791 1396.446167 1381.989136 1365.869263 1364.739136 1361.850464 1356.619751 1350.762451 1343.295166 1336.089355 1330.529907 1325.507935 1328.834961 1335.66333 1341.307373 1342.635254 1341.661621 1340.462891 1339.508789 1338.372314 1337.62207 1336.117798 1331.50293 1331.763306 1333.999146 1335.567749 1337.410767 1339.269531 1339.224487 1340.08374 1341.221069 1352.993896 1357.157471 1358.498291 1357.656372 1353.42041 1348.337891 1344.737183 1345.01416 1340.737915 1333.786255 1326.079468 1315.52356 1302.22522 1298.606812 1302.237915 1304.111084 1307.96106 1313.282471 1326.448608 1336.09729 1346.327637 1356.255127 1360.499634 1364.146973 1367.386108 1369.742554 1373.368286 1378.400391 1380.311279 1380.951782 1380.310913 1377.037964 1372.546509 1368.005493 1364.521973 1366.239624 1366.643188 1371.598145 1375.622681 1377.889893 1378.150757 1377.327148 1373.827637 1366.65332 1360.987427 1352.453979 1347.512695 1340.316895 1333.652344 1337.088745 1342.94812 1351.314087 1358.438354 1369.311035 1377.315674 1383.262329 1390.97168 1401.506348 1407.55481 1413.724854 1419.524902 1427.735107 1431.588989 1430.694946 1427.15564 1422.347534 1417.498779 1412.109985 1405.659302 1397.552246 1394.449585 1401.958374 1406.949585 1409.449707 1410.526001 1409.147339 1406.108643 1403.309814 1401.025879 1397.462524 1393.314209 1391.380127 1389.171631 1389.550171 1395.042236 1401.85144 1412.946045 1421.271606 1426.73645 1427.285645 1418.636353 1410.245483 1402.460449 1391.341797 1381.990479 1371.720093 1359.991943 1348.986206 1349.566162 1358.146729 1361.492554 1362.041016 1360.403931 1358.007568 1354.909058 1343.658203 1325.933228 1326.978516 1336.191895 1343.114014 1346.846191 1349.784058 1353.978882 1358.284058 1362.78418 1366.576416 1368.075562 1364.875244 1353.061157 1348.566772 1344.768188 1338.707275 1331.959839 1325.881226 1318.931152 1312.806152 1307.338257 1297.313843 1285.994019 1290.226074 1295.210449 1299.292114 1297.923706 1294.201904 1292.545166 1291.720337 1290.382446 1292.327515 1305.927002 1315.165527 1318.364746 1325.064697 1328.357666 1330.803711 1331.015869 1335.536255 1338.185547 1341.168945 1343.164795 1343.362915 1342.884399 1342.291016 1341.848633 1341.647705 1341.413086 1341.881104 1355.414185 1356.327759 1356.139893 1356.062622 1355.195801 1350.799683 1344.082886 1336.549683 1328.438843 1324.105835 1319.063232 1303.764282 1309.852051 1322.918945 1330.212158 1337.432861 1335.758667 1323.304199 1309.602905 1301.739746 1303.954834 1309.51416 1315.208984 1318.41687 1319.501587 1321.673706 1327.189697 1330.551758 1331.415894 1334.296509 1338.84375 1344.049438 1344.685791 1336.6073 1325.321045 1312.072021 1302.493042 1302.320312 1311.241577 1321.732178 1325.47876 1325.082275 1321.403198 1315.417358 1309.330444 1296.528076 1291.419067 1293.609863 1297.081909 1298.874634 1298.285889 1297.645142 1296.96167 1293.612305 1292.734009 1292.696167 1292.901489 1293.148804 1293.683594 1289.506226 1283.86792 1280.740723 1276.506104 1271.30127 1264.043091 1269.265991 1273.024902 1274.46936 1275.016357 1274.966919 1274.769897 1274.345947 1273.8302 1273.185425 1272.230347 1271.370361 1270.483887 1269.375 1267.42749 1265.16394 1263.273071 1260.951294 1258.37207 1256.390625 1256.113159 1256.208984 1256.229248 1255.379883 1254.398193 1253.742554 1253.326904 1253.051025 1252.941528 1253.165649 1253.694702 1255.84729 1256.824829 1253.981445 1246.814819 1252.776855 1257.546265 1256.64624 1254.925171 1257.169312 1253.418091 1244.136353 1238.07251 1238.312378 1240.900146 1243.986328 1255.068237 1260.331665 1266.567261 1267.682007 1267.912231 1271.995483 1278.501953 1283.614014 1285.354736 1282.77356 1276.868042 1270.027222 1267.608398 1266.283813 1265.499878 1265.284912 1264.922241 1263.720093 1262.656372 1261.942749 1261.762085 1262.230469 1262.37207 1261.52832 1260.129028 1258.503662 1256.800171 1256.34314 1257.700317 1258.141968 1257.958252 1257.536865 1256.844604 1256.015015 1254.55542 1252.77417 1250.389526 1247.880249 1245.2146 1241.114136 1234.299561 1231.145386 1230.104126 1228.668579 1227.174072 1225.919922 1224.697021 1223.832031 1223.312012 1222.438599 1221.025513 1219.614868 1219.116333 1219.599487 1220.578735 1221.860352 1223.241089 1224.161865 1224.914429 1225.417358 1225.808472 1225.609497 1225.056641 1223.730591 1221.898438 1219.549561 1218.740112 1218.873169 1218.740112 1218.523193 1217.796265 1217.401001 1216.192139 1215.773926 1215.212158 1214.569336 1213.833618 1213.220825 1212.553833 1211.89978 1211.796631 1211.69873 1211.468628 1211.012085 1210.281494 1209.126343 1208.326904 1207.440552 1206.325684 1205.299805 1205.155396 1205.039185 1204.463989 1203.88562 1203.140381 1201.993042 1200.873291 1200.043701 1199.510376 1199.219604 1199.035278 1200.122314 1202.416138 1204.142822 1205.392822 1207.366943 1208.583496 1209.553345 1210.503784 1211.202637 1212.170532 1213.255737 1214.342773 1215.588745 1216.60437 1217.577759 1218.733521 1219.926392 1221.463013 1223.668579 1226.470947 1228.796265 1230.626221 1232.700806 1234.564941 1236.185791 1237.586792 1238.778809 1239.42688 1240.046387 1241.41626 1242.376099 1242.648071 1241.653931 1240.684814 1240.356079 1241.50769 1244.294556 1246.126587 1248.349487 1250.200684 1253.642578 1256.539917 1261.36145 1268.501099 1277.039429 1279.489868 1281.324707 1283.543335 1283.206421 1281.091553 1279.919678 1277.405273 1275.440186 1274.308838 1271.884766 1268.359375 1267.111694 1267.117065 1266.333374 1266.619995 1268.495605 1263.684937 1256.706055 1248.213501 1239.149414 1228.848877 1218.022095 1208.865601 1203.991699 1200.27124 1196.797852 1192.574707 1188.095947 1184.554565 1180.282104 1187.651367 1198.686768 1203.828369 1210.509033 1212.988403 1214.588623 1216.801025 1223.346924 1230.03772 1233.808594 1235.859131 1237.289185 1239.248779 1242.397949 1246.168335 1250.717529 1255.94873 1260.301392 1260.576294 1243.068359 1232.232178 1225.05188 1214.796143 1202.924072 1200.675171 1195.673096 1186.665039 1175.937012 1163.64624 1155.166382 1141.222412 1134.527954 1136.917114 1139.828735 1142.503418 1143.765503 1144.161621 1144.378418 +1361.724487 1369.190186 1393.37561 1407.757324 1408.665161 1422.189087 1435.868774 1437.958496 1436.998413 1434.333252 1432.288208 1430.846924 1430.214844 1431.131836 1432.328369 1430.571045 1427.130859 1437.310181 1460.323608 1480.570923 1488.907593 1492.440674 1492.686279 1487.325073 1492.547485 1499.21228 1502.286743 1502.824463 1503.937866 1507.256592 1510.833252 1512.464966 1515.345459 1521.336304 1524.018799 1531.301758 1535.192261 1538.980835 1542.491943 1543.685303 1543.846069 1543.312134 1542.272827 1540.863281 1539.070557 1537.462524 1535.062134 1531.994629 1526.323364 1522.378906 1517.536011 1511.791016 1505.603027 1499.330933 1493.566284 1489.751953 1487.138062 1483.460449 1478.251343 1470.095581 1461.812012 1454.302612 1443.885864 1436.565063 1430.182861 1427.164917 1424.426025 1419.336426 1416.050659 1411.118774 1405.010864 1401.172974 1398.907959 1395.651367 1392.379272 1387.632202 1388.029541 1391.211792 1394.114746 1398.426392 1404.125854 1416.733521 1417.124756 1417.322266 1417.66333 1404.024292 1391.779175 1383.670898 1374.056763 1388.490479 1395.054565 1401.822998 1416.52356 1429.127197 1440.643188 1441.809204 1442.552124 1434.136108 1423.708008 1413.630371 1404.376099 1392.498901 1380.789795 1364.555298 1354.866089 1348.978027 1344.543701 1338.039062 1330.790405 1327.420898 1326.818115 1333.360107 1343.290283 1347.588135 1349.855835 1349.813354 1348.102661 1346.005737 1343.634399 1340.773804 1340.135986 1340.16748 1338.546509 1337.874634 1338.942261 1341.445312 1343.666382 1344.833374 1345.943359 1347.510254 1350.878052 1358.063232 1361.797852 1364.030396 1364.225952 1361.292114 1356.925171 1356.92749 1356.262207 1347.85498 1336.126343 1325.151733 1305.642334 1300.168823 1301.265137 1305.72229 1307.91333 1311.139648 1316.601318 1331.784546 1337.984009 1345.750854 1354.162842 1356.442383 1356.898682 1359.431274 1364.199951 1367.386475 1374.551514 1378.807861 1380.154419 1380.93457 1380.731445 1377.955933 1375.426147 1371.345825 1372.205322 1376.398682 1377.014404 1379.442261 1380.200562 1380.054321 1379.547363 1374.442261 1367.330811 1360.23645 1353.873047 1347.177246 1340.953247 1334.494385 1339.616333 1350.904907 1358.501709 1365.947266 1377.997192 1388.113037 1394.132202 1399.174194 1409.141235 1418.071411 1424.595337 1428.541504 1437.584961 1439.104126 1435.594849 1431.244873 1426.247925 1420.807617 1414.909058 1407.644653 1400.278564 1401.513306 1407.548828 1412.352539 1416.210083 1417.841309 1416.971069 1412.125122 1408.759033 1405.217285 1402.087891 1399.046021 1395.145752 1391.379883 1389.212158 1393.675659 1400.452271 1410.954712 1418.858643 1422.195312 1421.582397 1415.701172 1407.390991 1396.9021 1384.613647 1374.599365 1363.422485 1357.880371 1366.135376 1372.591187 1373.129883 1371.353394 1368.089111 1363.974731 1359.286499 1352.877808 1343.040527 1327.407715 1332.570068 1343.14917 1347.00708 1350.663208 1353.769287 1358.226074 1363.039673 1368.505249 1372.802368 1364.726196 1355.639038 1348.634521 1341.109985 1337.036011 1331.08606 1325.110229 1319.556519 1314.257935 1308.734253 1303.834961 1297.270508 1288.039062 1290.584229 1299.899048 1305.88208 1302.745239 1299.168701 1296.89624 1295.140625 1292.45166 1291.647705 1305.080933 1329.461304 1335.883911 1340.088257 1340.419067 1340.537842 1341.440796 1342.868896 1345.475098 1347.088623 1348.036621 1348.095825 1347.362549 1346.543579 1345.673218 1344.874512 1344.194946 1345.241821 1353.189575 1354.938477 1355.597656 1355.623169 1355.476929 1352.782959 1346.150635 1340.770264 1333.928833 1328.599854 1322.814697 1307.672363 1317.411865 1333.137573 1340.810791 1349.740234 1340.313599 1327.552856 1314.856934 1305.567261 1303.933228 1313.440552 1320.654663 1326.216553 1331.250732 1331.928345 1333.755615 1335.966064 1337.562866 1339.414429 1343.476562 1350.949463 1346.176147 1335.47876 1323.799805 1309.644409 1305.043335 1312.996216 1321.422241 1331.486816 1333.673828 1332.946655 1328.337646 1321.584717 1313.864624 1301.176514 1291.708618 1295.417725 1300.635986 1305.575317 1304.493286 1301.677002 1299.694336 1296.149536 1293.504028 1292.073364 1291.613525 1291.17749 1291.054077 1289.245239 1284.916626 1282.061523 1277.392822 1270.27063 1263.822754 1270.437134 1275.092896 1276.552368 1276.753052 1276.508423 1276.244019 1275.745605 1275.00708 1273.98645 1272.716919 1271.225098 1269.669434 1268.424072 1266.803467 1265.291138 1263.45166 1261.192627 1258.16272 1256.495361 1257.222412 1257.503784 1256.832764 1255.579712 1254.839233 1254.433716 1254.140137 1253.94043 1254.089233 1254.440918 1255.494385 1257.715454 1257.416382 1254.091553 1248.267334 1255.557373 1259.397949 1259.432739 1257.490723 1259.647949 1258.230713 1251.21167 1242.841553 1238.041748 1239.25647 1241.071045 1244.115479 1256.902344 1268.675781 1270.75061 1271.415771 1275.160278 1279.529297 1285.189575 1290.122803 1287.216187 1280.735718 1272.877319 1268.437988 1267.189941 1266.634888 1267.477905 1267.288818 1266.043091 1265.274902 1265.067993 1265.486694 1265.839966 1265.492432 1263.929077 1262.132568 1260.29248 1258.764648 1258.458008 1259.12146 1259.297241 1259.075073 1258.462769 1257.765381 1256.986938 1256.000854 1254.078979 1251.631958 1249.07959 1246.498535 1243.628296 1236.857056 1232.753052 1231.158691 1229.495361 1228.219604 1227.16333 1226.21582 1225.338623 1224.46106 1223.246826 1221.603638 1219.832031 1219.412598 1220.689331 1222.145386 1223.716064 1225.159058 1226.381226 1227.318359 1228.078491 1228.514771 1228.623535 1227.958618 1225.913574 1222.980103 1219.783325 1219.612183 1220.180298 1220.01123 1219.891968 1219.377319 1218.88562 1217.369385 1217.125488 1216.727661 1216.109741 1215.478027 1214.908569 1214.254272 1213.746582 1213.321533 1213.030273 1212.622559 1211.911377 1211.046509 1210.148315 1209.213379 1208.221069 1206.954346 1206.175781 1206.421875 1206.755493 1206.624634 1206.12793 1205.54834 1204.576782 1203.523682 1202.425415 1201.568481 1200.818237 1200.218384 1199.670898 1201.090332 1202.783691 1204.878296 1206.348755 1207.363159 1209.011963 1209.619873 1209.839844 1210.569458 1212.208984 1213.822144 1215.015869 1216.153931 1217.050659 1218.075684 1218.970581 1219.512329 1222.161865 1225.00293 1226.877563 1228.720093 1230.653687 1232.30835 1233.935059 1235.104614 1235.953979 1236.76123 1237.435425 1238.029907 1238.222412 1238.121582 1237.881104 1237.542847 1238.124634 1239.543701 1241.324341 1242.53186 1243.237183 1243.544312 1249.324219 1253.395996 1262.445435 1272.277588 1281.185547 1282.419067 1284.040649 1284.88855 1284.727783 1283.570312 1282.013672 1279.975952 1278.945068 1277.915649 1275.143066 1271.459351 1271.171265 1270.580322 1270.069214 1269.987061 1268.44751 1257.95874 1244.27063 1235.033447 1222.908936 1216.548218 1211.190186 1205.638672 1201.644897 1198.026245 1194.6521 1190.475952 1185.633667 1181.982056 1192.238892 1200.541748 1206.850464 1213.370117 1218.256714 1221.168945 1223.112427 1225.747192 1232.119751 1236.797729 1240.28772 1242.775635 1245.233765 1247.497437 1252.505005 1258.831055 1261.582764 1263.446899 1260.927734 1251.596436 1231.501709 1220.086304 1212.305054 1201.23291 1189.706421 1188.923828 1186.982666 1177.187378 1165.645386 1157.353394 1145.431152 1139.873657 1134.957397 1138.203125 1142.427368 1145.407104 1146.971436 1147.807983 1146.667236 +1343.11438 1353.034668 1373.090698 1379.481201 1396.039551 1417.244141 1434.916748 1448.87915 1456.302124 1455.527222 1454.094238 1451.561157 1450.411377 1450.850342 1451.16333 1449.920532 1447.329468 1444.827759 1459.554443 1482.542847 1492.010132 1497.919067 1499.293335 1497.882324 1501.796875 1506.325073 1509.89209 1511.424561 1511.698486 1512.183228 1516.39502 1520.927979 1524.865723 1527.062134 1529.073364 1532.657593 1535.907715 1536.394897 1538.539673 1542.487915 1543.853271 1544.374023 1544.660767 1544.267822 1542.633057 1540.323975 1537.857666 1536.597046 1531.156494 1525.43042 1520.423096 1516.408203 1511.087524 1501.32373 1498.717285 1498.252197 1496.442871 1489.14502 1481.780151 1472.920776 1463.133301 1455.047119 1446.762085 1438.626465 1432.288818 1428.985596 1425.812378 1416.090332 1409.611694 1401.299194 1400.473389 1400.94751 1399.722778 1395.613647 1389.620972 1392.007324 1393.62439 1398.526855 1403.099487 1407.165894 1416.450928 1413.104614 1409.906128 1408.8302 1405.783447 1397.092407 1388.486084 1382.051025 1373.996338 1384.767822 1393.162109 1400.842529 1412.69519 1423.790771 1431.979858 1438.150146 1440.768555 1428.312134 1417.92041 1408.391357 1397.888306 1385.787109 1372.9552 1360.72937 1349.833008 1338.671753 1334.420166 1328.060425 1329.508667 1335.553833 1339.502563 1346.439697 1352.832642 1356.083496 1356.757568 1356.062988 1354.222656 1351.010986 1347.952148 1344.919556 1344.419678 1344.644165 1342.739014 1341.063965 1343.93103 1346.647339 1348.456543 1350.024902 1352.748901 1356.424927 1358.878052 1363.171875 1366.957397 1368.984375 1369.869263 1368.020264 1364.332886 1361.108276 1357.045044 1344.036255 1332.31604 1315.712036 1300.424561 1301.276367 1304.248535 1307.805786 1310.686157 1313.393433 1317.487549 1333.729858 1342.049927 1344.681519 1347.308472 1347.484741 1348.152344 1351.272705 1356.643433 1361.041016 1365.683472 1370.168091 1373.405273 1379.102417 1381.540039 1381.271973 1380.077271 1378.233398 1378.26709 1379.926025 1380.380005 1380.794189 1380.801147 1380.98645 1379.339966 1373.768433 1367.771606 1359.596313 1353.419556 1346.893311 1340.877075 1336.190918 1344.469849 1357.208252 1364.126465 1372.801025 1385.669434 1394.856812 1400.883789 1405.981812 1414.026367 1424.625122 1435.231567 1442.684692 1447.104126 1445.39978 1440.472778 1435.478027 1429.999512 1423.803589 1416.569214 1409.437988 1402.129883 1408.085693 1414.02002 1419.270386 1425.012695 1426.307495 1424.162842 1417.484985 1414.893799 1410.804077 1406.55127 1403.711548 1399.37146 1394.519165 1391.061401 1392.694092 1399.180176 1408.109619 1416.162109 1418.033081 1417.536865 1413.114502 1404.456421 1389.356934 1376.500244 1367.668945 1364.474487 1376.832764 1381.503052 1382.364136 1381.933838 1379.783325 1374.377319 1366.602295 1360.57373 1353.685425 1347.237793 1337.916504 1341.667847 1347.010254 1350.386108 1354.20105 1358.643188 1363.266602 1369.697754 1380.148438 1379.488525 1366.509277 1355.724243 1348.89624 1341.976318 1334.745605 1327.77417 1321.876709 1315.999878 1310.907104 1304.396484 1301.420898 1297.194458 1292.817505 1288.95813 1301.427856 1308.067505 1306.901733 1303.4375 1301.302246 1301.061401 1298.066895 1293.891113 1298.507568 1318.51123 1333.689941 1344.669678 1345.57019 1346.553833 1350.52832 1353.716797 1354.324829 1352.971802 1353.006592 1353.324097 1352.830933 1351.945923 1350.21228 1348.834717 1348.029175 1348.987305 1351.57312 1353.913452 1354.543579 1355.133423 1355.363892 1354.197266 1350.702759 1345.713867 1340.113159 1333.703613 1326.630127 1316.052856 1319.782471 1334.074097 1344.778931 1357.75415 1347.232422 1331.029297 1319.230347 1311.318848 1305.256226 1316.836548 1326.641846 1332.060913 1336.805664 1338.917969 1339.836548 1341.129517 1342.989624 1346.777222 1354.483765 1355.424927 1346.2948 1335.375732 1320.991577 1313.125366 1320.844727 1323.868774 1330.40332 1337.079468 1342.030762 1340.969238 1335.386108 1329.136719 1318.413574 1303.152222 1295.509277 1299.269775 1302.220215 1308.449829 1307.343628 1305.268066 1302.575317 1299.581177 1296.36731 1293.255249 1291.486206 1290.354492 1288.929321 1286.791382 1284.664673 1282.635376 1277.217407 1268.419556 1265.883301 1274.958984 1278.597412 1278.934204 1278.615723 1278.199707 1277.732056 1277.06189 1276.032715 1274.800171 1273.062988 1270.343628 1268.368896 1267.933228 1267.078979 1265.922852 1264.203735 1262.333618 1260.208618 1258.748535 1258.678589 1258.257935 1256.550537 1255.710815 1255.391235 1255.084717 1254.899658 1255.087891 1255.077759 1255.577637 1257.470581 1259.489258 1258.050171 1254.165039 1248.951294 1256.730957 1261.289185 1262.536621 1263.203491 1264.513916 1263.566895 1259.231323 1249.456055 1242.145386 1238.731079 1239.924072 1242.532104 1251.342651 1265.609131 1271.970093 1275.024414 1277.542847 1280.314331 1287.457153 1293.831055 1291.76001 1282.549805 1276.094849 1271.167358 1268.90625 1267.687622 1268.943848 1269.598389 1267.964478 1267.061401 1266.952881 1268.306763 1268.997437 1268.018677 1266.133301 1264.216797 1262.576538 1261.301392 1260.667603 1260.533691 1260.453369 1260.042358 1259.438599 1258.817871 1258.082886 1257.103394 1255.51062 1252.947144 1250.376221 1247.829468 1245.141724 1240.304688 1235.630737 1232.596558 1230.445312 1229.267334 1228.415039 1227.777466 1227.19812 1226.239868 1224.838623 1222.630737 1220.131348 1219.846802 1222.204712 1224.071533 1225.897095 1227.5802 1228.743652 1229.692871 1230.61377 1231.331909 1231.567627 1231.049927 1228.336914 1223.40271 1219.47998 1220.78064 1221.926514 1222.006836 1221.719482 1221.279785 1220.324219 1218.532593 1218.65979 1218.293457 1217.691284 1217.165161 1216.406616 1215.837158 1215.164185 1214.746826 1214.424194 1213.874756 1213.094727 1212.069336 1210.907349 1209.764038 1208.502441 1207.18811 1207.202759 1207.883667 1208.200806 1208.21582 1207.925659 1207.650879 1207.258789 1206.4646 1205.164795 1203.895264 1202.782593 1201.980713 1201.169434 1200.21814 1202.080078 1204.411499 1207.285522 1208.317627 1208.647461 1208.259766 1208.073364 1208.369385 1211.702271 1213.529907 1214.985229 1216.009033 1216.877441 1218.198242 1219.77478 1221.191895 1222.394653 1223.841675 1225.15686 1226.852173 1228.799194 1230.242798 1231.807861 1233.147949 1234.064697 1234.577881 1234.796631 1234.859253 1234.69812 1234.242432 1233.548096 1234.065186 1235.731689 1237.320557 1239.158447 1240.675293 1242.619263 1245.677856 1248.805176 1253.532349 1260.523926 1269.132446 1278.116089 1283.566406 1285.330933 1286.561768 1286.654663 1285.809326 1284.154175 1282.606934 1282.071411 1281.374512 1279.277588 1276.413574 1275.151123 1273.329956 1271.428223 1268.970947 1259.817627 1246.827393 1236.717896 1219.036743 1215.605713 1211.761719 1207.400269 1203.278076 1199.47937 1195.857056 1192.012939 1188.162354 1184.518677 1192.485474 1200.912476 1207.479858 1215.405518 1221.51416 1225.200562 1228.020142 1230.013672 1232.54834 1238.962769 1243.539185 1247.192261 1251.206665 1254.806641 1258.302979 1264.647949 1268.962891 1270.286743 1267.898926 1257.260986 1243.905762 1224.410034 1211.397217 1199.065552 1189.969238 1181.894897 1178.360229 1178.043701 1171.686768 1158.866821 1154.497437 1151.263428 1143.717041 1135.382446 1139.373657 1144.987549 1149.289307 1155.272095 1157.356812 1155.985229 +1321.37207 1338.160278 1351.797485 1356.475342 1379.1073 1410.033203 1426.574341 1452.534668 1466.359497 1471.514282 1473.33728 1474.866699 1475.273071 1474.800415 1472.786255 1471.568604 1468.881836 1465.107056 1464.242676 1484.192383 1496.371826 1502.268799 1504.622681 1503.530396 1507.221191 1512.721802 1516.403198 1518.517334 1519.830688 1521.135498 1524.619629 1529.190796 1532.271484 1533.616821 1534.625366 1537.582764 1538.952637 1539.312134 1540.860107 1542.964355 1544.536743 1545.740479 1547.509033 1547.860474 1547.09729 1544.804321 1541.907349 1539.853027 1536.421997 1529.600708 1525.186768 1520.690308 1515.2854 1509.302856 1513.463867 1514.334839 1505.831421 1495.2146 1483.575317 1471.430054 1460.355713 1453.276611 1446.359985 1438.370361 1426.500488 1424.754272 1419.273926 1414.139893 1406.997314 1404.949707 1405.670288 1406.09082 1406.368408 1406.741333 1407.169678 1405.442627 1404.61084 1407.709106 1408.616333 1405.003174 1404.4646 1402.021118 1399.376953 1397.525391 1391.737305 1388.699463 1381.798462 1377.161743 1379.703369 1384.604858 1389.468018 1395.876465 1403.212891 1414.748413 1425.667358 1433.390869 1434.281616 1426.661133 1416.979126 1404.250366 1391.411133 1376.371094 1364.608398 1356.496216 1342.399536 1332.466797 1330.751587 1338.662964 1345.44458 1348.853394 1350.923706 1356.950928 1363.640869 1365.501343 1363.579102 1360.775269 1358.320068 1354.92688 1352.484863 1351.81958 1350.68811 1348.889038 1347.606079 1347.322632 1348.918335 1352.384155 1354.078491 1355.349243 1359.859741 1364.739136 1365.831543 1367.858765 1371.477295 1374.384155 1375.124878 1371.61499 1367.313232 1362.190063 1355.220093 1337.621338 1325.670654 1308.469727 1301.925293 1303.473267 1306.105835 1310.247559 1314.358276 1315.821167 1315.653687 1329.834351 1335.777466 1339.849609 1339.296631 1339.090454 1340.905029 1343.831787 1349.639771 1354.153198 1358.526733 1362.188965 1365.030029 1375.997192 1381.484253 1381.140381 1380.459595 1380.057251 1380.024658 1380.858643 1381.29126 1381.104858 1380.680908 1378.941895 1374.178833 1369.133545 1363.595825 1355.249756 1349.897827 1345.169434 1338.36853 1339.906738 1351.35376 1361.139282 1369.508423 1378.819092 1392.280518 1399.991455 1406.293091 1411.390869 1418.782227 1431.12439 1443.34314 1452.45105 1454.036865 1451.490967 1445.175659 1439.245728 1432.955688 1426.109009 1418.067749 1410.560547 1406.161011 1414.897949 1420.758423 1427.092163 1433.44751 1434.776367 1430.183594 1424.666992 1418.903076 1414.928345 1410.068848 1405.98999 1402.057861 1397.850708 1396.224854 1396.299805 1398.661499 1403.803467 1410.602783 1413.390869 1413.309937 1408.541504 1400.137939 1384.05249 1373.429077 1368.532471 1378.029053 1383.918823 1387.084473 1389.356812 1389.516113 1387.572876 1381.276733 1370.706665 1363.412354 1357.320923 1350.59729 1342.508179 1345.317017 1351.625 1354.071167 1357.815308 1363.285156 1370.403198 1383.044922 1388.007812 1379.206421 1366.607422 1358.081543 1350.466553 1343.215088 1336.375854 1331.254517 1327.109009 1319.150146 1311.13916 1304.625854 1300.893921 1297.76062 1293.87561 1288.629028 1300.588989 1309.674805 1310.708252 1307.048218 1305.382568 1306.669434 1306.529907 1302.817383 1296.77124 1301.569214 1319.119751 1333.378418 1341.634888 1346.165771 1352.858643 1356.235962 1356.689819 1356.344604 1355.874756 1356.09729 1355.89917 1355.392578 1354.286255 1352.460693 1351.466553 1351.461914 1352.093384 1352.920898 1354.131836 1355.008667 1355.676636 1355.574219 1354.499634 1350.730103 1345.13623 1338.714966 1331.250977 1320.84375 1316.862549 1330.133789 1341.588135 1349.26355 1343.907227 1332.060181 1322.773438 1316.522461 1310.240967 1318.16394 1331.618652 1338.788208 1343.00708 1345.24585 1346.170288 1347.537231 1350.065308 1354.052612 1358.199219 1355.966797 1346.146118 1335.715942 1318.953125 1321.059692 1327.961182 1330.747437 1336.578491 1341.928589 1347.575195 1347.319702 1340.717896 1332.285645 1318.763672 1310.835327 1316.716187 1308.04834 1302.844727 1311.519043 1318.53479 1315.11145 1305.664429 1303.747803 1300.415161 1295.914917 1292.519653 1290.85376 1289.238647 1286.11499 1281.402344 1280.313232 1273.871826 1266.986816 1271.253906 1281.990234 1281.943359 1281.154419 1280.270508 1279.599609 1278.987305 1278.307251 1277.200195 1275.593994 1273.649414 1271.077393 1269.664062 1269.049683 1268.169312 1266.77478 1264.9646 1263.53894 1262.219971 1261.096802 1260.137207 1259.272583 1257.729248 1256.601196 1256.441406 1256.0448 1256.077026 1256.067505 1255.977783 1256.689575 1260.417969 1262.656982 1259.873535 1254.562378 1250.830688 1258.619629 1264.158203 1265.531372 1266.836914 1268.950928 1269.560547 1267.272827 1258.774414 1248.028076 1242.016113 1239.625366 1241.495361 1246.180176 1259.591187 1270.984497 1279.525757 1281.799561 1284.068604 1290.507446 1294.122437 1293.515381 1283.165405 1277.963013 1275.63269 1272.915283 1269.777466 1270.090088 1270.964722 1269.405762 1267.802368 1268.510254 1270.113403 1270.303345 1269.397827 1267.583618 1265.857544 1264.476685 1263.262207 1262.481934 1262.070679 1261.531372 1261.083984 1260.427979 1259.713623 1258.889893 1257.952026 1256.633545 1254.116577 1251.30957 1248.731201 1245.734619 1241.067871 1235.338257 1232.105469 1230.957031 1230.238037 1229.786377 1229.631714 1229.494385 1228.611206 1227.371094 1225.727661 1223.76123 1222.78772 1224.25293 1226.184814 1228.589233 1230.451172 1231.296631 1231.981445 1232.529907 1232.988647 1232.908203 1232.734863 1231.517944 1222.770996 1220.122925 1222.706055 1223.922119 1224.230835 1223.67688 1222.65979 1221.028687 1219.666138 1220.25 1219.942505 1219.358398 1218.488647 1217.676758 1217.032104 1216.450195 1216.105835 1215.873779 1215.306641 1214.452515 1213.30542 1212.047974 1210.587402 1208.732544 1207.376099 1208.241943 1208.87146 1209.183594 1209.303101 1209.151001 1208.865967 1208.45874 1208.093384 1207.487305 1206.227539 1204.550659 1203.509766 1202.497925 1201.328613 1200.843018 1203.490234 1207.147827 1207.934448 1207.297485 1206.998657 1207.562378 1208.621094 1211.768555 1214.09436 1215.516968 1216.387207 1217.014404 1218.130249 1219.647339 1220.939453 1221.627441 1222.334473 1223.145874 1224.677612 1226.563843 1228.232544 1229.757568 1230.977661 1231.765015 1232.139771 1232.225098 1232.018188 1231.763062 1231.397095 1230.933838 1231.762329 1233.137207 1235.220703 1237.151733 1239.279663 1242.401978 1245.078979 1247.00354 1249.965576 1254.505859 1261.356201 1268.895874 1278.68042 1285.154297 1288.760986 1289.197998 1287.949951 1286.556641 1285.454956 1284.44873 1283.375244 1281.086426 1279.934937 1278.805298 1274.563965 1269.419067 1260.748657 1249.858765 1238.698975 1224.810425 1216.82605 1213.101074 1208.920898 1205.162964 1201.193848 1197.132935 1193.696533 1190.266846 1186.895874 1192.012695 1200.069702 1207.302979 1215.614136 1222.997437 1228.506592 1232.168945 1234.961548 1237.623291 1241.055298 1246.488647 1251.369263 1256.164185 1261.084473 1265.677856 1269.552124 1272.522217 1272.901245 1269.794922 1256.800171 1248.014526 1234.221802 1218.678955 1205.978638 1194.032593 1184.423584 1177.756348 1171.661133 1168.230103 1158.228516 1159.901001 1163.391846 1158.96582 1145.512329 1136.04541 1140.117065 1147.886475 1156.5625 1164.175171 1165.774902 1163.669067 +1341.150146 1347.521118 1360.479492 1365.249268 1381.976074 1404.665161 1421.703369 1445.072754 1473.115967 1482.968628 1488.739136 1491.700684 1493.668335 1493.421753 1492.769165 1492.518921 1491.211914 1487.949341 1483.656128 1486.504517 1501.450562 1508.121338 1510.189575 1509.372437 1511.363281 1517.756104 1522.584717 1526.233643 1529.565552 1531.799316 1533.933716 1538.246216 1539.862549 1540.411011 1540.99707 1542.268799 1542.924438 1543.118652 1543.43042 1544.382446 1545.848267 1547.557251 1549.55188 1551.441284 1550.998047 1548.944458 1545.515137 1542.153442 1538.235352 1533.484863 1530.085571 1525.768555 1521.328857 1522.650879 1523.231689 1517.396606 1509.155884 1498.033203 1484.034058 1470.026123 1458.734375 1449.490845 1443.832275 1436.033081 1426.510986 1422.335938 1417.89209 1413.175049 1410.195679 1409.383667 1412.66394 1415.587891 1417.167725 1418.213135 1419.497925 1419.02063 1418.324219 1417.939331 1409.463989 1402.010742 1399.435669 1396.249023 1389.778687 1387.974487 1386.863037 1383.7323 1380.169556 1386.146362 1391.425049 1390.483398 1391.797485 1394.827515 1402.557617 1413.716553 1426.038574 1431.333374 1431.026611 1425.164185 1416.650513 1404.082275 1387.484985 1372.097412 1359.434082 1345.324219 1332.46814 1334.045288 1340.046875 1347.416748 1353.445068 1358.677246 1362.944824 1368.124512 1370.015259 1370.047729 1367.989258 1364.802856 1362.201172 1359.725342 1357.837646 1357.156494 1355.920532 1353.851685 1352.819702 1351.865723 1354.054688 1357.759888 1360.476318 1363.667969 1367.730225 1368.779907 1370.204346 1372.159546 1375.337036 1378.598389 1379.509155 1373.362183 1366.849365 1360.596069 1353.330078 1336.298462 1325.116211 1306.42395 1302.618042 1304.692017 1308.699951 1314.032837 1318.70105 1322.968262 1325.701782 1329.099854 1330.601562 1337.47998 1339.311157 1339.325439 1339.094849 1339.671387 1342.757935 1349.568481 1352.998901 1357.807251 1361.995239 1367.74292 1376.21228 1378.400513 1378.924927 1380.572021 1381.147095 1381.592773 1381.569946 1381.245972 1379.509033 1375.037964 1368.19397 1362.216675 1356.752197 1351.309937 1346.834595 1342.391968 1336.883179 1343.375122 1353.983032 1365.224976 1373.476807 1385.030029 1394.937378 1402.395752 1408.766235 1416.108032 1425.211792 1436.931763 1450.126587 1454.348999 1454.55835 1453.514771 1448.154419 1441.837891 1434.766968 1427.979004 1419.411377 1411.359009 1412.444214 1419.580444 1425.709473 1433.676758 1440.889771 1439.577026 1432.452759 1426.208618 1420.958374 1416.75415 1411.986938 1407.311401 1403.244507 1400.473877 1399.921143 1399.591553 1399.909546 1401.452759 1406.613892 1409.115479 1408.711914 1405.639038 1394.746582 1381.822998 1372.849976 1374.45752 1382.373779 1388.422607 1393.24646 1398.523193 1399.702148 1395.966919 1389.975098 1377.592651 1367.478516 1360.791382 1353.766968 1349.66272 1354.186646 1356.380371 1357.930176 1361.317871 1366.248901 1375.589966 1391.446533 1388.131958 1374.773071 1364.388916 1357.954956 1350.706665 1341.490967 1338.424561 1334.733398 1330.949463 1321.474243 1312.432007 1304.47168 1301.50293 1297.914551 1294.481445 1289.549561 1300.531616 1313.831909 1315.766846 1313.445068 1311.922607 1311.183472 1310.376221 1308.118042 1303.951904 1299.37854 1301.768555 1309.476685 1323.325562 1333.649048 1340.361938 1344.534058 1349.600952 1353.262085 1355.872681 1357.012939 1356.817505 1356.396729 1355.800781 1354.962524 1354.596802 1354.438477 1354.007324 1353.265137 1353.634277 1355.111084 1355.943115 1356.405518 1355.953369 1354.703857 1349.950928 1343.145752 1335.410034 1325.767578 1316.283325 1324.276245 1332.426636 1341.534058 1341.794067 1334.201782 1325.650146 1320.203613 1315.478394 1320.893066 1334.635742 1343.307617 1347.742065 1350.520996 1352.363159 1354.077393 1356.534912 1361.959106 1363.460815 1357.329346 1347.15686 1334.949951 1326.567261 1332.718262 1338.569946 1342.513794 1346.466919 1352.873657 1355.165894 1354.313965 1346.053589 1330.127441 1321.544067 1323.951782 1330.63208 1322.406982 1310.133423 1317.976196 1325.224731 1320.659302 1314.956299 1310.287109 1305.482178 1300.653076 1296.140015 1293.340332 1291.367432 1287.411987 1281.982178 1277.31189 1271.198486 1267.078857 1279.215698 1284.312866 1284.437988 1283.555908 1282.668213 1281.311279 1280.263672 1279.515015 1278.378174 1276.508667 1274.339844 1272.420044 1271.172974 1270.011963 1268.709473 1267.024658 1265.932373 1264.949707 1263.85083 1262.801758 1261.667603 1260.701294 1259.803955 1259.060913 1258.683594 1258.55896 1258.800781 1259.135132 1259.26416 1260.686157 1264.765137 1268.093018 1262.307861 1254.810913 1253.801392 1262.4375 1268.919189 1268.797241 1270.463989 1272.390625 1273.075439 1271.990967 1269.207397 1258.881226 1245.459595 1241.012573 1242.557861 1246.597168 1257.616211 1268.3302 1281.15332 1285.152588 1288.425903 1292.394165 1294.039307 1292.861694 1283.195557 1280.857178 1280.90332 1278.570923 1275.966309 1273.914429 1272.23877 1269.678101 1268.138672 1270.306763 1271.377441 1271.149536 1269.994873 1268.079102 1266.884033 1265.802612 1264.733398 1263.88208 1263.224487 1262.726318 1262.124146 1261.318726 1260.412476 1259.530151 1258.484253 1257.079346 1254.440552 1251.611572 1248.777344 1245.371704 1239.5354 1233.689697 1231.473022 1231.726685 1231.515503 1230.87793 1231.603882 1231.797974 1230.792969 1229.940063 1229.414185 1227.674194 1226.544189 1226.841919 1228.211182 1230.789185 1232.574707 1233.107422 1233.383423 1233.861206 1233.919067 1233.59436 1233.13501 1232.437256 1227.751465 1225.752686 1226.793091 1227.268799 1227.015625 1225.976929 1224.331909 1222.24585 1221.399292 1221.7948 1221.505493 1220.583252 1219.498291 1218.678345 1218.338989 1217.736572 1217.484619 1217.146606 1216.765991 1215.837646 1214.682617 1213.348877 1211.989136 1210.405518 1209.381836 1209.564819 1209.903809 1210.231934 1210.385376 1210.266602 1209.865601 1209.570679 1209.115723 1208.599731 1207.898438 1206.295898 1204.872314 1203.82959 1202.687012 1201.812378 1201.868042 1203.594116 1204.939819 1206.113159 1207.909668 1208.857666 1209.901733 1212.18103 1215.294434 1217.348389 1217.42627 1217.178833 1217.338867 1218.469849 1219.321655 1219.904541 1220.478638 1221.085327 1222.328491 1224.207764 1226.016357 1227.543945 1228.726562 1229.531128 1229.818604 1229.994995 1229.877563 1229.477295 1229.286133 1229.476196 1230.246704 1231.630859 1233.654663 1235.303589 1237.373657 1239.885742 1242.193604 1243.561035 1245.702515 1250.18396 1254.650635 1262.061768 1271.388428 1281.949951 1292.955078 1291.781616 1289.973877 1288.774048 1287.369873 1285.920654 1284.564453 1283.092651 1282.320801 1281.520752 1271.588745 1262.302124 1251.001465 1240.290161 1229.210327 1217.953857 1214.505737 1211.43042 1208.444092 1203.897827 1199.81665 1195.637085 1192.130615 1189.310669 1192.398804 1197.893921 1205.134644 1214.379272 1222.783936 1230.160156 1234.709717 1238.317749 1242.007935 1245.771851 1248.723999 1253.667114 1259.511108 1266.321289 1270.80249 1273.78479 1276.400757 1277.031128 1267.751221 1255.060181 1247.178345 1236.744995 1223.23584 1211.311523 1198.865479 1188.649292 1181.592896 1178.912476 1174.28064 1173.378906 1171.26709 1172.368164 1170.317505 1160.907471 1144.453491 1137.321411 1141.118774 1150.723389 1160.933838 1171.517822 1173.636475 1171.304443 +1360.037476 1376.24939 1388.400024 1395.459717 1407.573486 1424.178345 1436.787354 1452.81189 1470.790283 1489.088501 1500.462402 1504.876465 1508.784058 1508.692017 1507.456421 1508.57312 1509.430176 1506.757446 1501.878174 1495.765747 1509.512329 1515.728638 1516.944336 1514.847778 1516.394043 1524.378296 1531.61377 1537.668701 1539.768799 1540.922974 1542.148315 1544.482422 1546.250122 1547.894165 1549.41394 1548.289673 1546.70874 1546.073853 1546.149292 1545.995361 1546.627808 1548.293091 1551.450562 1555.885376 1556.401489 1553.343994 1548.384888 1544.373901 1540.868408 1537.710327 1537.536743 1535.117065 1530.596924 1529.237671 1526.521729 1518.452881 1508.56897 1496.647583 1483.637817 1472.085449 1459.758667 1449.975708 1441.60498 1434.173828 1427.612915 1423.12561 1419.515991 1415.009888 1413.451416 1412.562134 1417.445557 1420.618408 1422.538086 1424.276001 1426.000854 1424.401855 1418.766846 1412.322876 1401.344971 1400.548096 1399.315796 1396.930298 1393.249023 1390.120972 1387.865479 1390.082275 1393.985596 1396.757812 1398.185303 1396.905884 1397.394409 1401.955322 1406.918945 1415.798706 1426.636475 1430.86853 1430.410278 1424.953735 1415.550781 1404.135254 1386.970825 1372.338135 1356.121704 1336.043945 1335.025146 1339.776245 1347.468384 1355.572876 1365.241943 1370.321167 1374.522705 1376.37207 1376.009277 1374.162354 1371.482666 1368.512329 1366.283203 1364.688965 1363.153687 1362.141602 1360.706177 1359.065063 1358.237305 1357.585449 1359.163452 1362.346069 1366.107178 1367.973755 1369.17041 1369.934692 1371.121338 1373.113647 1376.325073 1379.314209 1378.311401 1372.266479 1365.545166 1358.309326 1346.862549 1334.465088 1320.447266 1306.05896 1303.431519 1306.467896 1310.743896 1316.457764 1325.074341 1331.984131 1335.670776 1339.216431 1340.52002 1341.644775 1343.618042 1345.458984 1348.052979 1348.802246 1350.032471 1351.101929 1352.261963 1354.612305 1358.316284 1362.61499 1367.474609 1373.031982 1377.330322 1380.880493 1381.526855 1381.916626 1381.802368 1381.155151 1379.396851 1374.175293 1368.101074 1360.966675 1354.717041 1348.745972 1344.044922 1339.432007 1339.415649 1346.355835 1355.134033 1367.822388 1375.912842 1386.252808 1394.744263 1402.618652 1409.57666 1417.394531 1427.095947 1438.244629 1449.29895 1453.83313 1454.449951 1453.998657 1449.847534 1442.686523 1435.620728 1428.500488 1419.947266 1412.410278 1417.127319 1423.352051 1431.081787 1439.86145 1441.731934 1439.328857 1432.158691 1425.815308 1420.601196 1416.189575 1412.679321 1410.167969 1406.048828 1403.873413 1403.394165 1402.907593 1401.839233 1402.450684 1404.984253 1406.733887 1406.423828 1403.883545 1393.346191 1382.911133 1373.995972 1378.141113 1386.518799 1393.675659 1401.326294 1405.990112 1406.709839 1403.021362 1394.921753 1384.173096 1373.900024 1364.947754 1356.254272 1353.28418 1356.816284 1359.303467 1360.978516 1362.70813 1366.462646 1375.816406 1389.237305 1382.757446 1369.699341 1363.264648 1357.834839 1352.773071 1347.381714 1342.225586 1337.147949 1330.260376 1321.956421 1314.93396 1307.695312 1302.554077 1298.288086 1294.583374 1291.030884 1303.873413 1320.544922 1320.901123 1318.245483 1317.07251 1317.082275 1315.094238 1311.245239 1306.905762 1302.178345 1304.560913 1306.598999 1312.081421 1316.380249 1325.314575 1330.02124 1336.057983 1341.158691 1344.868042 1349.568481 1353.506104 1355.956665 1356.533203 1356.188965 1355.886597 1355.734009 1355.437622 1354.422363 1353.683472 1355.043701 1356.671265 1356.913452 1356.799683 1356.010132 1354.317627 1346.841675 1339.044312 1328.881104 1316.568115 1325.988403 1332.980469 1340.187134 1342.150635 1338.598999 1331.125732 1322.832031 1318.123535 1322.167725 1337.660156 1347.292847 1352.928345 1356.187256 1358.531738 1361.36792 1364.986816 1371.679565 1368.859375 1360.004028 1348.52478 1333.207031 1332.426392 1342.456787 1347.216064 1351.344238 1355.619873 1359.772095 1360.699219 1359.105957 1352.357422 1335.328979 1329.934204 1336.932373 1338.007324 1324.78418 1318.019775 1330.068115 1332.93457 1331.194458 1327.536499 1318.288452 1311.874512 1306.090942 1302.255493 1298.177734 1294.453247 1289.033569 1283.264893 1277.202759 1270.119995 1273.384888 1283.634155 1287.464233 1288.220947 1286.962769 1285.233887 1283.455444 1282.150635 1281.000732 1279.515625 1277.289185 1275.276855 1273.333496 1271.51355 1269.756714 1268.328857 1267.322754 1266.756104 1266.294556 1265.33374 1264.213501 1263.258545 1262.445679 1262.028564 1261.720459 1262.039185 1262.523926 1263.267578 1264.719604 1265.501953 1266.126221 1269.074219 1270.325317 1264.06958 1255.094727 1255.066895 1265.855347 1271.95813 1273.944336 1275.127319 1276.189819 1276.75415 1276.084106 1273.04541 1266.101318 1251.430786 1241.315552 1244.805176 1249.850342 1256.896973 1267.459961 1281.547485 1287.385986 1291.602173 1294.008667 1293.795532 1291.515747 1287.239624 1284.62439 1283.803101 1282.197144 1279.682007 1277.294922 1274.588623 1271.996094 1270.470703 1272.130615 1272.607056 1272.149658 1270.469849 1268.747803 1267.610229 1266.604126 1265.715088 1264.889526 1264.246338 1263.761108 1263.02832 1262.194824 1261.173828 1260.063477 1258.7677 1257.223755 1254.487427 1251.172363 1247.722656 1243.25061 1235.978638 1231.42749 1232.322754 1233.877686 1233.157593 1231.637817 1234.068237 1234.359985 1233.780029 1232.99646 1231.654541 1230.198853 1228.982422 1229.222412 1229.793701 1231.420288 1232.897827 1233.918701 1234.414062 1234.594116 1234.351196 1233.852295 1233.123169 1231.912109 1230.409424 1230.216553 1231.402344 1230.690186 1229.983887 1228.453613 1226.637817 1225.338135 1223.760864 1223.414185 1222.780396 1221.646606 1220.077026 1219.42041 1219.794189 1219.169678 1218.65564 1218.544434 1218.182617 1217.318481 1216.035034 1214.782227 1213.641235 1212.608765 1211.727905 1211.504028 1211.405396 1211.466064 1211.381714 1211.27478 1210.924438 1210.529907 1210.032349 1209.396973 1208.615845 1207.444946 1207.133301 1205.841553 1204.32605 1203.056152 1202.444092 1202.666138 1202.887817 1205.246704 1208.623291 1209.317749 1210.099609 1212.099487 1217.357178 1219.940186 1220.094727 1216.809937 1216.313232 1216.81665 1217.568848 1218.253418 1218.936523 1219.251831 1220.16394 1222.151611 1223.979858 1225.307373 1226.364868 1226.942261 1227.219482 1227.538452 1227.561157 1227.483887 1227.622314 1228.229492 1229.274414 1231.057861 1232.329834 1233.871216 1235.257446 1236.809082 1238.854736 1240.471558 1242.492676 1246.624512 1251.407959 1258.012817 1265.906982 1278.091553 1291.481689 1293.316528 1291.98645 1290.617188 1288.797241 1286.48999 1285.169312 1283.913696 1282.602661 1276.16748 1264.776245 1252.821411 1242.638428 1231.689209 1219.848877 1216.318237 1212.947876 1209.618164 1206.437988 1202.514282 1198.251465 1194.552979 1192.232788 1196.946289 1200.21814 1205.071655 1212.74292 1222.115234 1229.126953 1235.254639 1239.706055 1243.871216 1248.1604 1252.276733 1256.52478 1262.854736 1269.383911 1273.486572 1276.699951 1279.632812 1281.943359 1276.218506 1257.719116 1246.69751 1235.387451 1223.759399 1209.817261 1203.391846 1196.328369 1195.449829 1189.064209 1184.664307 1182.513672 1181.015747 1182.881592 1183.259888 1175.675537 1161.617554 1144.872192 1138.082886 1141.338135 1152.78125 1165.283203 1175.858643 1178.695679 1176.61499 +1385.618774 1400.664429 1411.775757 1421.06543 1423.644775 1438.204956 1453.392578 1471.701782 1485.313477 1500.858643 1508.674805 1514.181763 1516.809814 1518.11438 1520.015869 1523.967407 1525.973145 1525.977783 1523.137451 1513.273682 1521.418091 1525.966187 1526.397827 1524.866211 1523.720093 1532.87146 1539.075928 1542.071899 1544.96228 1547.17981 1549.412109 1552.085327 1555.872925 1557.610229 1556.958862 1553.762329 1549.924683 1548.979492 1548.38916 1547.353271 1547.922974 1549.852905 1556.832642 1561.532959 1562.304077 1559.828857 1549.529175 1546.504272 1544.310669 1542.294312 1541.594238 1539.994873 1537.376587 1532.967041 1525.666504 1515.523682 1505.0896 1494.039795 1482.635498 1471.155029 1459.867432 1449.901001 1439.169189 1435.853394 1428.237549 1427.914062 1426.390503 1421.209595 1417.980713 1418.22229 1423.913696 1425.650879 1426.881836 1428.970215 1428.787964 1424.766235 1412.480591 1402.697388 1400.781738 1402.747803 1403.750122 1402.275757 1396.530151 1390.625732 1389.545776 1396.80896 1402.411499 1405.66394 1405.43042 1402.837158 1400.524536 1407.162354 1414.857422 1421.751221 1427.665527 1431.712158 1430.588745 1423.255005 1413.162354 1401.353027 1384.965332 1369.197876 1352.016602 1334.578979 1338.430176 1345.532104 1356.529419 1366.383057 1377.617676 1380.959839 1382.443237 1382.707031 1381.269775 1378.014404 1375.252686 1372.96875 1370.875122 1369.226562 1367.890869 1366.620483 1365.535156 1364.466675 1365.056519 1365.160889 1365.404663 1367.016968 1368.195923 1368.798584 1368.906616 1368.932251 1369.706055 1371.113281 1372.814819 1373.999512 1372.619141 1369.140625 1363.859497 1358.078491 1347.739014 1335.310181 1322.305542 1305.026855 1305.169556 1307.830322 1312.745117 1318.978638 1330.827026 1340.202393 1342.814697 1345.396973 1347.302856 1349.234253 1353.220459 1356.241577 1357.278809 1357.651611 1356.907349 1355.623901 1354.219727 1353.029053 1354.5448 1359.95459 1363.446045 1369.957031 1378.064575 1381.238403 1381.73877 1381.631226 1381.404419 1380.858032 1378.941284 1373.302002 1365.951782 1358.651855 1351.357056 1345.653931 1340.850708 1339.220947 1344.274536 1350.470459 1356.622192 1364.33374 1371.956665 1382.4646 1391.93811 1400.655029 1407.773926 1415.448975 1425.082031 1435.513428 1444.018433 1450.067871 1453.826416 1454.477051 1452.834351 1445.922241 1438.303589 1428.364746 1421.025146 1415.381714 1421.181519 1426.860229 1437.670898 1441.853149 1441.251221 1437.424316 1430.651367 1424.363892 1418.611694 1414.349976 1413.731934 1413.877808 1413.326782 1410.843872 1408.950562 1406.534424 1404.41333 1402.735474 1405.280762 1406.459717 1405.836914 1403.609375 1396.582275 1386.402954 1376.541016 1381.215942 1390.433472 1397.394287 1404.651367 1411.893188 1412.143921 1407.434814 1399.312744 1388.532227 1378.057007 1369.395142 1360.51709 1358.828613 1362.333496 1363.621826 1363.137085 1364.067139 1367.988281 1375.694702 1381.251221 1379.449585 1369.902832 1363.988647 1360.38855 1357.035889 1353.704468 1346.510864 1339.210083 1330.488281 1325.498657 1319.815186 1309.135376 1302.627197 1298.119507 1294.150879 1292.34729 1309.763184 1322.381958 1324.92627 1325.181519 1326.608276 1325.476929 1320.52832 1315.061157 1309.350586 1304.001709 1307.181763 1311.601685 1314.657227 1315.828003 1316.084106 1318.134155 1326.795776 1332.253418 1335.641479 1339.136475 1344.524292 1350.776367 1355.34729 1356.443481 1356.384277 1356.442505 1356.337769 1356.460449 1356.485962 1356.852051 1357.506592 1357.743774 1357.509033 1356.703979 1355.301514 1349.162109 1340.869141 1334.316528 1328.237061 1330.081421 1341.224609 1343.381104 1344.447632 1342.502686 1337.182007 1325.419189 1321.154419 1329.575562 1340.411499 1351.983398 1357.27832 1360.976929 1364.265137 1368.231567 1377.245483 1382.143921 1377.87793 1360.320435 1347.540161 1333.733521 1341.703125 1349.201294 1354.315186 1358.737793 1363.170166 1366.460693 1366.961182 1361.588745 1352.89209 1346.592529 1347.761353 1347.001709 1338.05542 1322.985229 1330.81604 1337.702148 1340.427979 1339.18811 1335.605225 1328.898804 1320.113281 1317.079712 1309.562012 1302.863892 1296.821777 1289.036499 1281.382568 1273.439087 1276.811768 1282.61438 1287.205566 1291.704834 1292.569702 1290.391235 1288.009399 1285.951904 1284.216187 1282.550293 1280.778564 1278.503174 1276.292969 1273.923828 1271.055786 1268.639893 1267.972534 1267.976562 1267.934326 1267.495972 1266.717285 1265.502319 1264.748291 1264.439453 1264.049438 1264.067749 1264.891602 1266.116821 1267.575806 1269.475586 1270.821167 1270.918823 1272.749634 1271.402954 1263.385132 1254.670532 1255.576782 1267.886841 1274.693115 1279.501587 1279.865967 1280.212891 1280.83728 1280.328613 1275.078003 1265.314453 1249.797974 1242.948364 1247.239136 1251.772949 1257.999756 1270.072754 1282.219116 1291.344238 1294.370239 1294.560669 1293.421387 1291.060669 1289.362793 1287.661621 1286.146484 1284.15918 1281.625977 1278.856079 1276.755981 1275.185547 1274.164062 1274.220581 1274.149048 1273.381958 1271.792969 1270.298706 1268.800537 1267.690552 1266.538696 1265.75354 1265.266846 1264.776733 1263.963013 1262.975952 1261.797852 1260.483521 1259.068726 1257.450317 1254.505371 1250.837891 1246.472412 1240.012085 1231.793823 1232.276367 1236.267334 1237.009155 1235.081543 1233.96875 1236.807495 1237.900635 1237.24231 1236.062622 1234.243164 1232.207275 1230.963745 1231.201172 1231.359253 1231.186646 1231.709839 1234.02771 1234.939331 1235.154785 1234.653442 1233.187622 1231.951172 1231.720093 1232.344727 1233.327271 1233.662476 1233.30835 1232.448975 1231.195068 1229.276367 1228.078979 1226.558472 1225.812622 1224.704224 1223.323975 1221.901001 1221.064575 1221.131836 1220.483276 1220.113892 1219.915283 1219.468506 1218.623413 1217.20459 1216.111816 1215.189819 1214.358398 1213.630737 1213.293945 1213.143188 1212.830811 1212.587402 1212.30188 1211.862793 1211.273315 1210.787109 1210.115112 1209.230469 1208.221558 1208.102051 1207.201782 1205.662842 1204.823242 1204.058716 1203.907104 1203.718506 1203.280396 1207.562134 1208.296387 1208.56897 1210.04834 1214.153198 1217.566406 1216.41626 1214.916138 1214.956421 1215.721436 1216.759155 1217.689941 1218.303101 1218.807861 1219.505493 1221.23645 1222.751343 1223.617554 1224.061035 1224.429443 1224.630249 1224.98584 1225.325317 1225.628784 1226.087158 1226.78479 1227.930908 1229.459473 1230.616089 1231.269775 1232.631714 1233.926636 1235.61377 1237.509277 1240.151489 1243.201294 1247.631958 1253.7677 1260.534546 1270.266235 1283.574463 1294.414429 1293.823364 1292.153687 1287.887695 1285.61792 1283.741333 1280.916138 1275.418945 1264.416138 1253.896118 1243.585815 1235.455444 1224.088623 1217.697021 1214.560913 1211.728027 1208.383789 1204.581665 1200.582764 1196.365601 1194.661865 1199.184326 1203.356079 1207.769165 1215.15918 1224.420654 1232.610962 1235.774292 1239.759399 1244.245972 1249.569946 1254.507935 1258.976929 1264.46167 1270.36377 1275.227295 1279.376465 1281.81958 1283.053955 1282.703003 1272.809692 1252.914185 1236.226562 1225.510864 1217.950439 1209.488037 1204.30127 1203.224121 1200.535278 1196.861328 1192.611328 1189.315552 1189.354248 1191.760498 1191.249146 1181.355103 1162.224854 1146.113525 1138.243774 1141.265259 1152.730103 1167.881714 1182.115967 1184.948975 1182.167358 +1409.665649 1417.12793 1427.01709 1438.593872 1448.615234 1451.796387 1464.350952 1480.605469 1493.059204 1505.503174 1514.133301 1518.494995 1521.434814 1524.554932 1529.192627 1533.746338 1536.623535 1536.243896 1533.952148 1531.779663 1533.162842 1535.084473 1535.373535 1534.871216 1533.852905 1535.400024 1541.345215 1545.89502 1549.691406 1553.936523 1559.052734 1564.159546 1569.307129 1568.353027 1565.380737 1561.1427 1557.459717 1553.793335 1551.056885 1548.664795 1549.385498 1555.937866 1563.070557 1566.151123 1566.30481 1564.194214 1557.859497 1549.75 1547.353882 1546.313965 1544.993042 1542.744751 1539.899536 1535.032227 1523.400635 1511.087891 1499.573242 1490.275391 1479.834839 1468.370972 1459.544922 1450.429932 1448.341431 1444.475098 1441.184326 1435.806885 1430.770142 1426.16748 1424.260376 1428.365845 1431.858398 1435.496338 1438.711548 1432.910767 1429.138184 1420.285889 1410.172119 1402.817505 1405.525391 1417.370972 1415.236328 1408.378418 1400.694092 1389.710083 1395.029663 1405.845337 1415.314819 1414.803833 1412.166138 1408.868164 1405.824097 1414.38916 1421.362671 1427.740356 1433.410034 1437.322266 1429.874268 1420.092773 1409.021606 1395.659424 1379.268311 1363.363281 1347.218018 1335.351318 1341.376465 1353.738892 1363.484009 1378.436279 1384.191528 1387.439453 1388.647705 1388.631836 1387.023926 1382.810181 1379.157227 1376.899658 1375.466797 1373.846558 1371.853149 1370.056396 1369.039307 1368.226685 1368.162231 1368.369873 1368.092773 1368.021362 1368.325562 1367.833862 1366.98938 1364.90918 1365.045044 1366.741943 1367.638916 1367.248169 1366.061157 1363.87915 1359.657349 1355.274292 1346.255615 1335.128784 1317.396484 1304.351318 1306.378784 1308.851074 1313.525513 1319.811279 1333.50061 1343.015503 1342.217773 1346.262939 1350.038818 1353.684204 1357.457764 1360.481934 1362.782471 1363.154297 1362.464233 1361.086426 1359.633301 1358.236084 1357.562378 1360.625977 1364.367554 1368.955688 1376.871338 1380.769653 1381.156494 1380.912109 1380.824585 1380.363892 1378.087402 1373.502441 1367.091675 1359.344482 1350.748657 1341.694946 1339.902466 1345.666626 1352.907959 1356.748779 1362.085815 1364.193726 1365.228638 1376.193359 1384.046509 1394.391235 1403.219116 1410.67334 1419.475952 1429.090942 1439.992065 1448.393066 1453.836548 1454.938965 1454.468506 1450.346069 1442.890747 1433.11377 1423.817627 1421.490479 1428.281372 1435.88501 1441.433838 1441.805542 1440.160889 1434.379517 1428.082764 1424.937256 1420.126343 1416.619141 1416.972656 1417.659912 1417.414795 1416.22583 1414.514282 1411.113281 1408.632202 1407.032837 1407.403564 1407.615723 1406.645386 1404.571899 1401.953491 1391.770264 1380.800659 1383.606812 1390.446899 1397.531494 1406.879395 1417.324219 1416.639648 1411.799072 1402.670288 1392.393799 1382.796997 1373.264771 1364.80249 1366.417969 1368.262817 1368.456543 1366.556763 1365.068359 1369.721924 1375.353638 1378.684204 1377.190918 1369.113037 1364.975464 1362.266968 1359.182739 1356.153442 1351.088257 1344.840576 1338.457886 1329.292847 1322.208496 1310.508179 1302.629272 1298.122192 1293.012451 1293.911255 1311.735962 1323.954346 1329.249756 1330.032471 1332.026733 1331.896606 1327.701538 1319.156006 1311.635986 1305.43457 1309.968506 1316.570557 1320.221436 1322.439941 1322.669312 1322.654175 1325.102173 1326.995483 1328.856689 1330.70874 1335.543457 1339.989746 1348.160156 1352.85376 1354.617676 1355.792114 1356.790527 1357.236694 1357.240845 1357.793823 1358.322266 1358.448364 1358.172241 1357.259155 1355.451416 1349.47644 1341.522827 1339.119141 1330.640381 1332.737427 1344.835449 1348.0271 1348.946899 1346.704712 1340.304199 1327.648682 1323.34375 1331.599243 1341.275269 1355.963623 1361.258545 1365.868774 1370.662598 1376.483276 1386.437622 1388.647339 1380.994141 1361.258911 1346.456055 1339.653809 1350.048096 1356.440063 1361.367554 1365.963257 1371.747681 1373.159302 1370.871826 1364.345947 1364.311279 1365.150269 1358.985596 1348.350464 1333.946777 1333.048462 1343.450562 1349.601562 1352.789673 1348.826294 1342.978394 1336.672241 1330.105957 1323.650513 1314.724731 1303.979004 1296.107788 1279.505249 1281.353027 1282.898804 1284.385986 1286.84668 1290.874634 1294.074463 1294.982788 1292.836792 1290.644775 1288.388306 1286.027466 1284.105103 1282.112671 1279.913574 1277.744019 1275.548706 1271.57605 1268.296387 1269.840942 1270.297607 1270.046387 1268.655396 1268.141968 1266.903687 1266.357788 1266.380981 1265.93103 1265.948853 1266.929932 1268.962646 1271.099365 1273.37207 1275.572021 1277.562378 1279.205322 1272.328979 1262.578491 1255.066772 1257.592163 1269.524536 1278.39502 1282.815918 1283.532104 1283.714966 1283.903931 1283.127197 1276.196411 1256.887939 1244.396606 1243.81665 1248.234253 1252.978516 1260.194946 1273.065063 1286.439941 1294.84729 1296.088501 1295.650391 1293.238403 1291.953125 1291.788208 1290.985718 1289.141602 1285.799194 1282.549194 1279.741455 1278.601807 1277.489868 1276.484131 1276.376953 1276.030884 1275.146484 1273.570435 1271.911865 1270.312988 1268.481079 1267.289307 1266.775391 1266.432495 1265.875854 1264.991821 1263.625244 1262.230225 1260.738892 1259.486572 1257.759033 1254.497192 1249.800049 1245.755615 1234.64856 1231.802612 1240.874512 1243.983643 1240.802368 1240.224976 1240.89563 1241.970947 1241.587402 1241.679321 1240.579712 1238.417358 1236.396118 1234.906738 1234.60791 1234.270386 1232.800781 1231.678833 1233.496216 1235.61731 1235.823975 1234.240112 1231.852661 1231.907471 1233.152954 1234.357666 1235.466797 1235.526855 1235.109863 1234.134399 1232.317505 1230.5802 1230.464233 1229.386353 1228.398438 1226.93042 1225.40979 1224.092896 1223.114136 1222.614136 1222.112305 1221.681885 1221.304077 1220.69458 1219.710449 1218.295654 1217.416138 1216.496704 1215.776001 1215.162598 1214.894165 1214.668457 1214.442505 1214.068359 1213.515381 1212.864136 1212.068115 1211.483276 1210.836182 1210.054321 1209.247803 1208.58667 1207.399902 1206.970337 1206.568115 1205.766235 1205.080322 1204.799438 1204.419434 1204.015869 1206.13562 1206.911133 1207.952759 1210.071655 1211.911987 1212.118652 1212.095337 1213.253418 1214.848877 1216.395508 1217.518433 1218.187744 1218.714233 1219.490601 1220.894043 1221.98938 1222.451782 1222.093994 1221.781982 1222.122314 1222.579224 1223.299561 1224.110962 1224.605591 1225.102051 1226.070312 1227.362427 1228.483032 1229.568726 1231.05249 1231.524048 1232.088501 1234.857422 1237.091797 1239.994507 1243.321899 1248.236938 1254.058472 1261.473999 1272.538574 1283.824829 1287.532715 1285.408691 1282.199829 1280.138794 1275.322266 1269.704468 1264.230835 1252.379028 1243.32312 1236.560425 1229.488159 1219.659546 1216.405884 1213.540283 1210.734131 1208.002686 1203.124023 1198.725952 1196.219727 1200.078491 1204.698975 1210.234131 1218.270264 1226.399658 1234.049927 1239.547974 1242.949341 1244.141846 1249.665039 1255.60022 1260.889282 1265.561279 1270.102417 1272.059326 1270.827271 1275.241699 1275.203979 1273.428345 1272.151123 1267.562744 1255.164795 1244.21582 1232.777466 1224.286621 1216.46875 1211.886719 1209.858154 1206.19397 1203.265869 1198.720581 1194.641846 1196.996704 1201.177734 1199.752319 1182.675293 1165.839233 1148.130493 1138.584473 1140.956543 1149.884155 1168.116943 1187.582397 1192.578613 1192.070068 +1419.148315 1425.299927 1440.60083 1455.442017 1464.341797 1472.591797 1487.697144 1498.326416 1505.368774 1513.254517 1519.462524 1522.535645 1526.345581 1530.771729 1536.483643 1539.591064 1540.987061 1541.123657 1540.008301 1539.594849 1540.376343 1541.162964 1541.519165 1541.391235 1540.902588 1540.157227 1544.449829 1548.216675 1553.872559 1560.382202 1569.318359 1577.691772 1583.066895 1579.914917 1572.634399 1566.83252 1563.177246 1558.109375 1554.754395 1550.55127 1552.973999 1559.009277 1567.967285 1572.154297 1570.565674 1567.084595 1561.380249 1554.260254 1551.982788 1550.500977 1547.967163 1545.505127 1541.774658 1535.871826 1523.547485 1514.354248 1502.261108 1490.819336 1481.97229 1474.697998 1467.758545 1462.02417 1456.692017 1452.768311 1446.230835 1439.125854 1433.172241 1427.909424 1429.72876 1435.771973 1440.021729 1441.839844 1438.374268 1430.691772 1423.971558 1415.466919 1410.144043 1407.941528 1419.080566 1429.098145 1422.815796 1411.720093 1401.387939 1393.434326 1401.300659 1415.675049 1425.052734 1426.507202 1421.634766 1416.610596 1413.47229 1417.762817 1424.934326 1432.046631 1438.307129 1442.018799 1429.280884 1417.805176 1404.596313 1389.553711 1374.615234 1358.773804 1343.39856 1337.464233 1346.556885 1359.829834 1371.860718 1383.525269 1389.55249 1393.130249 1393.749634 1393.421143 1391.83313 1387.964478 1383.929932 1381.373535 1379.594971 1377.96875 1375.437012 1372.838257 1370.460815 1369.406128 1369.291992 1368.995728 1367.691895 1364.824463 1363.374878 1362.133423 1359.114258 1355.841675 1356.526978 1358.352417 1359.799438 1359.617798 1358.980347 1357.800537 1354.895508 1350.585815 1344.598511 1333.981567 1313.80896 1305.60498 1307.511719 1309.657593 1312.515625 1316.511963 1323.208862 1324.30481 1326.584473 1340.822876 1348.011597 1355.182617 1361.336182 1365.912842 1367.794678 1368.377319 1368.08728 1366.762207 1365.381958 1364.053589 1362.621826 1362.430542 1363.554565 1366.325562 1372.797241 1377.928833 1379.06311 1378.828857 1379.245117 1380.424438 1380.384277 1378.320801 1371.138306 1361.262451 1347.541992 1340.90271 1344.790771 1354.220947 1358.749023 1362.502075 1367.680176 1373.554932 1380.742798 1384.326294 1387.782593 1389.135498 1397.454346 1405.013062 1414.769531 1428.74353 1440.153198 1447.972778 1454.481323 1455.554077 1455.022461 1452.08252 1445.647949 1439.082642 1426.76062 1428.281982 1437.974731 1441.603394 1443.063477 1441.614014 1437.357422 1432.777344 1426.97998 1425.893921 1424.585815 1422.591553 1421.980347 1421.416504 1420.439331 1418.810425 1416.99585 1414.758301 1412.634766 1410.650757 1410.0448 1409.651001 1408.770874 1407.332642 1405.170532 1398.473022 1388.008911 1383.544189 1389.905518 1396.595459 1405.065186 1416.049561 1418.011719 1416.111572 1406.012207 1395.657837 1385.698364 1376.695435 1368.797607 1375.767578 1376.627197 1375.196899 1373.042847 1371.038452 1373.876953 1376.001709 1376.002197 1374.424805 1370.935547 1367.593872 1364.311768 1360.800659 1357.341797 1353.217285 1347.075806 1340.857422 1332.332031 1324.097168 1313.916504 1303.880737 1298.756714 1293.055786 1292.821777 1310.406128 1325.545776 1332.606201 1333.905762 1334.629028 1333.973511 1331.120605 1322.628418 1314.459106 1307.489868 1311.914795 1319.16394 1327.227905 1330.544189 1330.853882 1329.177734 1327.607056 1326.557495 1326.598877 1326.575928 1328.770264 1332.256958 1337.738647 1343.531128 1347.168823 1351.106567 1355.382568 1356.962158 1357.50354 1357.982056 1358.575317 1359.063477 1359.017334 1358.063599 1355.763184 1351.695068 1347.491943 1344.770752 1338.80188 1339.797974 1347.556152 1351.901855 1353.559937 1351.752441 1343.59668 1330.016113 1322.83606 1329.635742 1342.934326 1357.867554 1365.12854 1370.705688 1376.453003 1385.148804 1393.986572 1393.346802 1381.295166 1363.926025 1349.686768 1345.819336 1357.543457 1363.5448 1369.935547 1379.421997 1381.172119 1379.740356 1375.61853 1372.918579 1373.038086 1369.453613 1361.163696 1342.96228 1342.92395 1355.905884 1361.932739 1365.926147 1364.059326 1357.22644 1343.564331 1336.677612 1329.697754 1315.188232 1306.734985 1297.423462 1286.102539 1285.930176 1290.006348 1289.465332 1288.543701 1289.465576 1292.334106 1296.239502 1297.96106 1295.734985 1292.802979 1290.184692 1287.582642 1285.182373 1282.898804 1280.664185 1278.981323 1277.775391 1276.204102 1274.703613 1274.422241 1273.897217 1273.058594 1271.89624 1270.639526 1268.423218 1267.922974 1268.359741 1267.85498 1267.493164 1269.600708 1272.517456 1275.404907 1277.866821 1280.008423 1282.122314 1282.61438 1271.983032 1261.535278 1255.654297 1260.692261 1269.1698 1279.460693 1284.624023 1286.443481 1286.833496 1286.071533 1284.085938 1270.394531 1246.81604 1243.277954 1245.908936 1249.407593 1253.970703 1262.565674 1276.699707 1290.933716 1297.593872 1298.506348 1297.48938 1295.763184 1294.817627 1294.637939 1294.227295 1291.968506 1288.080444 1284.593872 1281.127441 1279.815063 1279.260132 1278.432007 1278.353638 1277.946899 1277.275635 1275.732544 1273.849976 1271.735107 1269.479858 1268.341431 1268.149536 1267.711792 1267.002319 1265.935913 1264.337891 1262.532837 1260.832275 1259.036987 1257.356445 1252.91626 1247.693726 1241.517944 1230.483154 1241.569214 1246.671753 1245.803223 1243.061523 1243.808838 1245.784912 1246.076782 1245.810181 1246.36792 1245.337524 1243.181519 1242.034302 1241.912109 1240.880127 1239.110352 1236.412598 1233.717285 1234.647583 1237.013672 1237.030029 1234.358765 1233.70752 1234.698242 1235.907227 1236.84082 1237.40332 1237.296021 1236.508301 1234.560059 1232.013794 1231.611816 1232.737671 1231.896118 1230.761108 1229.263916 1227.726562 1226.342651 1225.014771 1224.262939 1223.537354 1222.938232 1222.374756 1221.613647 1220.37561 1219.198364 1218.222534 1217.390503 1216.852539 1216.422852 1216.279785 1216.238037 1216.023315 1215.576172 1214.871338 1213.93689 1212.984863 1212.245605 1211.659546 1210.922119 1210.32312 1209.61145 1208.859375 1208.46936 1208.044312 1207.13916 1206.708496 1206.325684 1205.772827 1205.789307 1205.71936 1205.563232 1205.806763 1207.375244 1208.138916 1209.050415 1209.410156 1211.634521 1214.413818 1216.701782 1218.257324 1218.634766 1218.952148 1219.608521 1220.984741 1221.519287 1221.481323 1220.233154 1219.709961 1219.913574 1220.484741 1221.924927 1222.762085 1223.074951 1223.165161 1223.912964 1225.32312 1226.928345 1228.357544 1229.432861 1230.241577 1231.082031 1232.022705 1233.583496 1236.928589 1240.243164 1243.229004 1247.479492 1252.637451 1259.886475 1269.377686 1273.350342 1272.833008 1271.426147 1268.433594 1263.509766 1259.411621 1252.834473 1243.894287 1235.085938 1229.887817 1225.454712 1219.553955 1215.924072 1212.620972 1209.515015 1205.980469 1201.075562 1197.262573 1199.944214 1204.962036 1213.776123 1222.863037 1229.351562 1234.696777 1241.25354 1246.360352 1249.961914 1252.928711 1255.815552 1261.519043 1266.845337 1270.570557 1272.054077 1268.593872 1254.669312 1256.302734 1257.62207 1249.626953 1255.587158 1255.676636 1251.774048 1247.977417 1244.644409 1228.974854 1224.504639 1222.888062 1217.907959 1215.71521 1212.02356 1207.239136 1206.176514 1208.786133 1211.144409 1202.244629 1179.358887 1161.535034 1146.036133 1138.595581 1142.614014 1151.219849 1166.83606 1190.773193 1199.552734 1201.934692 +1424.584961 1433.692627 1447.826172 1460.879639 1471.717773 1486.6698 1505.772461 1516.7146 1522.329224 1525.795288 1526.789917 1530.203369 1533.597168 1535.804565 1539.081543 1542.819946 1544.832886 1545.656128 1545.50061 1545.221436 1545.210449 1545.642822 1546.516602 1547.220459 1548.003784 1549.131226 1548.345703 1547.685303 1554.074341 1564.310303 1575.722412 1586.102539 1594.226807 1590.864624 1577.559937 1570.836548 1566.222778 1561.073975 1560.0 1558.31311 1560.518677 1561.377808 1572.71582 1575.08252 1574.062622 1570.4552 1564.907715 1561.207886 1559.227173 1555.256836 1551.701904 1548.380127 1544.484375 1537.88269 1528.410645 1520.445068 1512.644043 1499.201172 1490.284424 1482.369995 1476.173828 1467.578125 1461.151611 1455.849976 1449.202271 1439.169556 1435.184082 1435.417847 1438.684448 1441.204346 1441.587891 1437.330322 1429.078857 1423.977051 1417.344604 1412.426147 1413.719849 1419.254761 1428.987305 1427.677246 1420.404053 1411.140381 1401.13916 1401.561768 1405.302246 1417.707153 1427.157104 1429.280396 1428.448364 1423.608398 1421.750488 1424.380127 1429.751343 1436.48291 1449.752197 1443.27063 1428.174561 1416.879639 1405.098633 1385.852661 1372.123901 1356.886719 1337.7229 1338.646851 1353.182373 1365.120728 1378.749512 1388.378906 1394.992188 1397.89978 1398.212524 1396.865112 1394.337891 1390.938232 1387.494141 1384.976685 1382.790283 1380.147339 1377.4198 1373.604004 1370.296875 1367.911011 1366.846191 1364.767578 1361.526245 1357.217041 1356.357056 1354.706299 1351.655396 1349.538696 1349.341919 1350.205444 1350.999634 1351.018433 1350.876221 1350.012085 1347.306396 1343.336548 1337.925293 1324.490601 1306.849487 1306.741821 1307.724243 1308.955933 1310.203979 1312.647949 1314.065918 1315.071777 1316.743652 1328.963135 1344.009155 1355.310181 1363.642456 1368.423218 1370.149902 1371.984741 1373.498291 1373.139282 1371.753418 1369.98291 1367.565308 1365.564941 1364.121094 1364.481445 1367.417603 1372.06604 1375.494995 1377.005859 1378.847046 1380.899292 1381.219971 1380.840088 1372.274414 1359.251953 1345.375 1343.259033 1351.243774 1358.193726 1363.331421 1366.623169 1373.289917 1381.006836 1390.180786 1394.666016 1396.918823 1401.025879 1402.242432 1403.559204 1416.011597 1426.593018 1435.008667 1443.065308 1453.551025 1455.876953 1455.093628 1452.153809 1446.595093 1441.323975 1431.939941 1436.654419 1442.833374 1444.935669 1445.410034 1443.044556 1438.878906 1436.225586 1434.8396 1432.943359 1428.6698 1427.531006 1427.019409 1425.726074 1423.704956 1421.293091 1418.817383 1416.275146 1413.874512 1412.327026 1412.259399 1412.550171 1412.252563 1411.131348 1408.280273 1404.139893 1395.991089 1386.945801 1387.835693 1393.009277 1400.607178 1410.453979 1417.5896 1417.228882 1408.842407 1398.581421 1388.367676 1380.339844 1377.04248 1381.120117 1381.944824 1381.174683 1379.735352 1378.83313 1379.128906 1378.726318 1377.401245 1375.526001 1372.847534 1369.606079 1365.885986 1361.614868 1357.428467 1353.598511 1347.206177 1341.185181 1333.994385 1325.97229 1315.675171 1305.475708 1300.420654 1295.668579 1291.492432 1307.724609 1322.304565 1333.346802 1336.162598 1337.118042 1335.857178 1332.689941 1325.434937 1316.568481 1309.259644 1314.388184 1322.281982 1330.169678 1335.348755 1337.868042 1337.3479 1334.683838 1330.25 1327.037598 1327.140991 1327.619629 1327.388306 1327.689453 1332.664551 1339.31897 1341.463379 1347.518921 1353.515625 1355.366455 1356.736328 1358.474609 1359.577271 1359.900513 1359.420288 1357.665039 1355.119263 1352.390381 1347.681641 1344.08313 1345.423096 1353.177856 1357.526367 1360.875122 1358.231567 1348.749756 1333.55249 1323.233032 1331.766724 1344.440796 1358.100952 1367.23877 1375.672607 1382.362427 1390.332764 1398.903931 1397.473389 1383.811279 1369.821411 1354.246216 1355.814941 1362.442139 1371.030884 1380.865601 1386.468262 1388.364136 1387.108521 1383.327271 1381.139282 1379.281494 1371.964233 1355.360962 1353.640259 1362.699219 1369.722168 1371.663696 1370.415527 1364.410645 1348.810791 1333.425903 1322.20105 1308.919434 1297.137573 1288.923462 1289.063843 1293.665527 1298.562378 1296.796875 1293.137207 1291.219116 1290.540283 1293.010864 1300.937866 1303.707642 1298.976807 1294.755615 1291.363281 1288.575806 1285.879395 1283.434814 1280.976929 1279.412598 1279.505127 1280.605591 1280.861816 1279.932007 1278.39502 1277.394287 1276.505127 1274.698242 1271.55835 1271.571899 1272.035767 1270.812622 1270.253906 1274.243408 1277.703979 1280.325684 1282.443359 1283.603882 1283.54895 1279.64563 1268.654663 1260.018066 1258.099731 1263.608887 1269.641724 1281.898804 1287.461914 1289.53064 1289.901245 1288.200195 1282.677246 1267.374634 1244.769775 1245.266235 1247.612915 1250.772705 1254.828491 1264.852905 1279.13916 1293.626099 1300.693481 1301.503906 1299.863892 1298.510376 1297.649414 1297.047241 1295.726807 1292.61499 1290.486938 1288.51355 1285.08252 1282.821411 1281.777954 1280.837646 1280.200317 1280.262207 1279.525757 1277.91272 1276.200317 1274.025391 1272.067017 1270.893555 1269.929565 1268.987061 1268.071045 1266.930908 1265.014404 1262.405762 1259.097168 1255.189087 1248.899536 1245.250244 1243.134521 1233.560425 1241.95459 1248.296021 1250.422119 1247.408203 1243.785645 1247.387939 1249.388306 1250.300781 1251.028931 1251.628784 1251.137695 1249.109009 1247.70874 1247.500366 1246.23291 1244.412476 1241.248047 1239.369995 1239.079346 1239.072388 1239.221802 1239.290649 1238.948486 1239.100342 1239.688965 1239.84436 1240.174438 1239.761597 1238.749512 1236.146973 1232.322144 1233.455078 1234.750488 1234.19458 1232.913452 1231.386963 1229.88916 1228.246094 1226.822998 1225.811035 1224.928101 1224.014771 1223.066528 1221.993896 1220.53479 1219.338379 1218.434814 1217.947144 1217.707031 1217.588257 1217.713379 1217.762085 1217.556274 1217.14624 1216.371338 1215.178955 1213.972534 1213.158203 1212.496582 1212.018433 1211.494019 1211.021484 1210.427368 1209.856079 1209.174927 1208.252686 1208.135376 1207.633911 1206.745972 1207.638916 1208.150513 1207.810913 1206.87085 1206.661011 1206.776001 1207.078613 1207.785278 1211.211548 1214.48938 1217.141846 1219.461548 1219.806396 1219.676392 1220.171387 1220.89978 1221.058105 1220.376587 1219.413818 1219.085693 1219.214966 1219.823975 1221.209106 1221.625854 1221.544189 1221.183838 1221.352783 1223.414795 1225.459473 1227.021729 1228.230713 1229.146606 1229.930786 1230.767334 1231.736328 1234.838257 1237.301147 1239.653198 1242.346191 1245.733521 1250.293457 1254.809326 1258.889526 1261.100342 1260.227539 1257.486816 1253.804932 1249.411255 1242.185303 1235.832275 1230.526123 1227.132812 1223.646484 1219.375122 1215.743286 1211.74353 1208.571167 1203.528809 1198.633545 1200.398804 1204.610229 1212.375244 1226.194946 1233.605469 1237.415649 1242.083252 1247.756714 1252.707031 1256.917847 1261.294678 1264.821899 1268.63916 1271.767944 1272.27417 1266.839355 1253.324463 1235.210205 1235.532104 1234.165649 1228.919678 1235.307617 1238.119629 1245.903564 1242.828247 1241.043701 1234.150513 1233.069092 1229.299561 1227.669434 1226.001831 1222.94165 1216.947632 1216.587524 1219.216431 1219.646729 1202.259033 1178.115723 1165.574585 1150.427124 1138.690918 1144.812622 1157.125244 1169.440918 1193.101318 1204.665649 1211.254517 +1419.182495 1426.496948 1438.189331 1456.666748 1471.804932 1488.796753 1507.804077 1524.52771 1532.662964 1536.873169 1538.855591 1540.539795 1542.362915 1543.796143 1545.282715 1546.531372 1548.834839 1550.362671 1550.683228 1550.32019 1550.406128 1551.075317 1553.230957 1555.066528 1557.013062 1560.717407 1561.824829 1559.261719 1558.440063 1566.84729 1578.421265 1588.207764 1597.831665 1594.524048 1581.662842 1575.070068 1570.54834 1568.644897 1565.86499 1562.965088 1565.206787 1567.550171 1572.58606 1575.44165 1575.786011 1573.857178 1569.466064 1565.6427 1563.455811 1559.821289 1555.087769 1551.41626 1549.03186 1543.907471 1534.371704 1525.265137 1517.387573 1505.817017 1494.885986 1486.512939 1479.16687 1470.520996 1462.145142 1454.535767 1448.31665 1440.350952 1437.897339 1439.767334 1440.546631 1440.877808 1437.424927 1427.973267 1423.779419 1422.01355 1416.947388 1418.284302 1422.279785 1428.185547 1428.287476 1423.997192 1417.519531 1409.477417 1402.915527 1412.131836 1416.422852 1421.051636 1426.650391 1430.207153 1430.46936 1428.108032 1427.233276 1431.819946 1437.127686 1447.049072 1452.677368 1439.747192 1424.019409 1413.327637 1400.563477 1385.109863 1370.564331 1357.220947 1337.734131 1338.583984 1358.077026 1369.033081 1382.314941 1392.773315 1401.539917 1403.472534 1401.903931 1399.753418 1396.735474 1393.382446 1390.189087 1387.254883 1383.772949 1381.139771 1377.590942 1371.953491 1367.697266 1362.047363 1355.469849 1354.630127 1353.098511 1350.74939 1349.657715 1348.292114 1345.727051 1342.796753 1343.276367 1344.163208 1343.433105 1341.967529 1340.88501 1339.859009 1337.778442 1333.904175 1327.375 1317.612183 1306.867065 1308.046387 1308.62146 1308.980347 1310.158569 1311.599609 1312.05481 1313.306519 1314.524536 1323.725098 1337.910889 1351.43103 1359.977051 1366.146118 1369.488647 1374.249146 1378.144531 1379.352661 1378.792358 1376.827881 1373.606323 1370.56897 1368.355225 1366.35376 1365.060059 1368.754395 1374.349365 1377.926636 1380.546997 1381.396362 1381.503418 1380.597778 1368.867554 1355.784668 1347.268921 1345.80188 1354.362305 1362.640747 1371.276245 1377.705933 1378.844604 1386.87915 1394.594482 1400.482788 1404.445923 1407.233643 1408.360352 1410.169434 1413.577026 1421.457642 1429.043945 1439.893188 1450.053345 1455.353882 1455.726074 1453.056274 1447.845459 1441.981323 1437.911743 1442.787476 1447.421143 1448.905151 1448.794556 1446.774902 1441.089355 1441.507324 1442.347412 1441.895142 1438.138306 1436.723511 1433.99292 1429.688599 1426.63916 1423.675293 1420.460815 1417.297119 1414.645386 1413.317627 1413.988281 1415.204956 1415.779785 1415.16626 1412.914062 1408.727661 1403.218506 1397.428955 1391.209229 1389.741943 1396.155151 1403.722778 1412.94812 1414.485718 1409.305298 1400.887695 1389.780029 1385.2146 1382.621826 1385.06604 1385.856934 1385.443604 1384.743896 1384.583862 1383.99939 1383.037964 1381.40564 1378.937378 1375.681274 1371.174927 1366.723022 1361.52356 1356.643188 1352.005249 1345.985596 1339.815063 1333.767578 1326.239868 1316.135864 1308.601685 1304.045898 1297.2229 1292.252441 1305.451904 1320.174805 1331.958618 1338.78064 1339.86145 1338.674561 1333.507446 1326.137573 1317.363525 1311.331665 1318.380371 1327.145874 1333.68042 1339.625977 1343.636475 1344.507446 1343.194824 1337.547241 1332.829468 1332.787842 1332.839355 1332.223267 1333.681152 1335.962524 1338.671265 1339.706787 1340.425293 1341.283325 1350.265259 1353.549316 1357.428833 1360.041138 1361.330078 1361.181885 1359.877197 1357.5896 1354.349121 1351.522949 1351.014404 1353.114868 1357.798584 1363.647217 1366.701172 1364.549316 1353.111816 1338.905884 1327.92627 1332.460083 1345.07605 1357.884399 1368.506104 1377.748901 1384.226807 1392.755859 1405.071533 1404.297119 1388.886719 1376.158691 1362.36145 1364.439209 1370.415039 1378.96521 1387.441772 1392.601929 1394.186157 1393.218628 1391.907471 1387.549561 1381.244141 1369.49231 1356.367676 1365.903564 1375.922607 1379.442261 1373.292603 1365.892456 1353.390869 1336.982422 1325.621704 1306.470947 1298.658325 1294.328735 1298.119385 1304.043945 1312.08667 1312.34668 1302.749023 1297.934692 1293.425537 1292.388794 1294.68689 1301.323853 1306.322021 1301.569702 1296.547241 1292.275513 1289.385864 1286.498779 1283.631348 1280.750366 1279.835449 1281.210571 1282.92749 1283.844238 1283.515991 1282.578369 1281.733154 1281.691162 1280.237793 1277.589111 1278.855347 1279.153564 1277.89917 1276.97229 1280.651245 1283.496216 1286.314819 1288.466919 1286.292725 1282.706665 1274.187134 1264.217773 1258.693237 1261.815308 1266.258667 1274.568726 1285.224121 1291.980957 1292.761475 1293.100342 1291.018433 1282.117798 1267.664062 1250.626953 1244.903198 1247.887451 1251.486572 1255.606689 1266.768311 1279.088013 1295.072021 1304.782593 1304.333252 1302.349365 1300.849243 1300.122192 1299.610718 1298.188354 1295.541626 1294.196655 1292.777832 1291.359619 1290.140259 1289.023193 1286.788452 1284.290527 1282.399902 1281.138062 1279.963989 1278.605835 1276.786987 1274.886963 1272.950684 1271.500732 1270.403442 1269.582153 1268.321045 1265.828857 1261.936035 1257.367554 1249.874268 1243.458496 1244.597412 1242.053101 1242.205688 1247.709595 1254.95105 1256.375244 1250.153564 1246.376343 1251.339844 1253.793823 1254.489136 1255.640869 1257.106323 1257.287476 1255.994507 1253.995239 1252.537476 1250.480957 1246.935303 1243.802124 1242.106934 1242.649536 1241.190918 1241.23999 1243.207153 1243.24585 1243.479126 1243.311279 1242.595581 1242.756714 1242.687134 1241.808105 1239.407837 1237.370972 1236.79126 1237.272461 1236.202026 1234.881836 1233.085083 1231.19043 1229.529907 1228.160767 1227.290283 1226.227295 1225.018433 1223.523682 1221.925171 1220.210571 1219.196533 1218.760864 1218.435791 1218.48877 1218.744263 1219.143433 1219.122803 1219.006348 1218.716431 1218.071533 1216.668579 1214.923096 1214.106812 1213.606812 1213.25708 1212.928589 1212.498657 1211.861206 1211.065308 1210.434448 1209.879028 1209.368286 1208.481323 1207.449951 1208.097534 1209.051758 1208.827637 1208.260132 1208.288452 1208.370972 1208.187744 1208.66272 1211.825562 1214.632812 1217.642334 1219.680176 1219.854614 1220.071167 1220.106445 1219.840698 1219.730103 1219.376587 1218.788086 1218.84436 1218.957275 1219.648804 1220.111816 1220.200073 1219.980347 1219.575684 1219.498169 1221.825073 1224.37561 1226.140869 1227.523193 1228.465698 1229.234131 1229.976562 1231.307861 1233.466919 1234.9198 1236.224976 1237.941284 1240.395386 1243.040894 1246.211304 1248.799561 1250.347656 1250.065063 1248.375366 1245.642212 1241.110229 1235.158081 1229.752686 1226.928955 1224.67334 1222.715088 1219.860962 1215.213013 1210.96582 1207.224243 1200.848511 1200.71814 1204.536621 1210.72583 1223.262329 1234.819946 1239.757324 1243.278687 1247.495117 1253.36377 1259.244263 1264.520264 1269.205566 1272.391235 1275.36084 1277.647217 1265.282715 1242.837524 1234.67688 1221.360596 1213.045898 1215.553345 1212.618164 1214.328125 1228.085083 1236.700317 1230.649292 1234.95752 1236.36438 1237.296997 1237.912476 1237.362183 1235.710327 1230.551025 1226.953003 1228.27124 1229.393066 1225.276611 1212.68335 1195.305298 1177.01123 1158.467041 1139.131958 1145.839966 1164.65979 1178.164795 1190.478882 1210.69043 1221.821289 +1393.66333 1414.501709 1430.279541 1445.213257 1461.641113 1479.994385 1502.522339 1525.188599 1538.821045 1544.820923 1548.546997 1550.487671 1551.038452 1551.104126 1551.207764 1551.515503 1554.417236 1556.412964 1558.578491 1560.821777 1561.683228 1561.728638 1563.486938 1565.627197 1567.547729 1569.468018 1569.739746 1568.658813 1566.269653 1570.464478 1580.634888 1589.893799 1593.397705 1591.055298 1587.346802 1582.384399 1575.627197 1575.628174 1573.569336 1572.005859 1572.26355 1570.993408 1572.916016 1576.212402 1576.758301 1575.273193 1571.916748 1567.812134 1564.269409 1560.217163 1557.089111 1554.584229 1552.676636 1550.796631 1541.680542 1529.856445 1519.869385 1509.745728 1497.0354 1488.320923 1480.397461 1471.835327 1462.056274 1451.054443 1448.604004 1442.199707 1441.268677 1441.802856 1440.442139 1438.004883 1432.194458 1426.399048 1422.976562 1424.893799 1427.842041 1430.274658 1429.457031 1428.244141 1425.667847 1420.307739 1414.75354 1411.842896 1414.479492 1421.138062 1425.831787 1427.964355 1429.778931 1432.179932 1432.488403 1433.073853 1437.539307 1440.080444 1441.786865 1443.353027 1439.661743 1429.19104 1418.447754 1408.135864 1395.413818 1381.528442 1368.502075 1355.426758 1340.789551 1340.478149 1360.016724 1371.884644 1385.254272 1397.708862 1408.148071 1408.659058 1405.704468 1402.572388 1399.266724 1395.86145 1392.146362 1387.158569 1382.294922 1378.41394 1373.980713 1369.095581 1364.75354 1356.751465 1352.089844 1349.906006 1348.10437 1345.906128 1344.327026 1341.991333 1338.861938 1332.216797 1329.885132 1327.889526 1325.350464 1326.220703 1329.104004 1329.613159 1328.634644 1323.981689 1317.398804 1311.622559 1307.829224 1310.292847 1311.833008 1313.806763 1316.592651 1319.527954 1319.717163 1316.657227 1314.206543 1321.002075 1330.377197 1344.604248 1353.415649 1359.090698 1364.765015 1372.142456 1379.933716 1381.835083 1382.349854 1382.004517 1379.130249 1376.039795 1373.473755 1371.428223 1369.66687 1371.067017 1374.909912 1378.518921 1381.325195 1381.786743 1381.325684 1377.078491 1364.958984 1358.95813 1354.219727 1346.440063 1355.264038 1366.498901 1380.688232 1387.207275 1392.148926 1396.046875 1400.32959 1405.250244 1408.929321 1412.501221 1414.916138 1415.367554 1416.560913 1423.868774 1433.448242 1444.106934 1451.735718 1456.810181 1458.797241 1455.074585 1449.484741 1445.02124 1444.723877 1449.417358 1452.407349 1453.244751 1452.97168 1450.917603 1449.092773 1448.921753 1448.290771 1448.283081 1448.047729 1445.35376 1440.391479 1434.62085 1429.641602 1425.658203 1422.180786 1419.116089 1416.232422 1413.938965 1415.389404 1417.578735 1418.408203 1417.817505 1416.676636 1413.820312 1409.777588 1405.923096 1401.583252 1396.500122 1393.693604 1400.105957 1406.00415 1410.206543 1408.678345 1402.454346 1395.143921 1391.021606 1389.20813 1389.933838 1390.474731 1389.893433 1389.325684 1389.982056 1390.106445 1388.536133 1386.521606 1382.943359 1378.335205 1373.0 1366.611694 1360.320557 1353.974731 1349.265137 1343.499023 1337.557373 1332.019409 1322.866943 1315.026733 1310.359375 1305.245728 1295.584106 1296.745483 1307.505005 1321.487061 1332.983765 1342.09082 1343.009521 1341.915649 1334.732666 1326.500854 1318.029785 1313.345459 1321.970337 1332.61731 1338.480591 1343.846436 1348.272949 1349.128906 1347.626343 1344.272949 1342.164429 1341.15979 1341.113403 1341.240234 1341.914185 1342.517212 1342.241821 1341.457153 1342.32373 1345.862671 1350.031738 1353.765259 1356.512329 1360.881348 1362.991089 1363.453613 1362.633179 1360.658203 1357.937988 1356.071899 1354.291504 1356.584839 1360.625732 1365.518311 1367.029175 1366.076172 1355.520996 1342.866821 1332.48584 1331.261353 1344.375 1356.893555 1368.251099 1376.605591 1384.278687 1393.170532 1405.618774 1406.174805 1397.329346 1384.914673 1367.850952 1372.261475 1381.160767 1386.546631 1391.487915 1399.164551 1399.498169 1397.301392 1394.133545 1387.578369 1378.786011 1366.124146 1366.873657 1378.930298 1382.433228 1378.241211 1367.148682 1355.229614 1341.411377 1330.880615 1314.666382 1301.760864 1298.380737 1303.457642 1304.019409 1312.36084 1323.570679 1325.528564 1312.784912 1303.597778 1298.801025 1297.863647 1299.030396 1302.711182 1305.967896 1303.452759 1298.22937 1293.276611 1290.19458 1287.112061 1283.350708 1280.332886 1280.942627 1283.566162 1285.792358 1287.173706 1287.559204 1287.949097 1287.648193 1286.960449 1284.198242 1279.760864 1283.616333 1284.664429 1283.2854 1279.627197 1284.624146 1289.903198 1293.616211 1293.49292 1286.203491 1278.318115 1268.351807 1260.186523 1261.735962 1265.378662 1270.475586 1278.335693 1290.928467 1295.861206 1296.586426 1296.213501 1293.599854 1282.250732 1269.728516 1254.936646 1246.79248 1247.677856 1251.871338 1257.032959 1267.498413 1279.810547 1294.50415 1305.065796 1305.505371 1303.820068 1302.211426 1301.762329 1302.309937 1302.737793 1302.092773 1300.531616 1297.818481 1295.157227 1294.032837 1293.81189 1292.046509 1287.549316 1284.641113 1282.796265 1281.856689 1281.07373 1279.673218 1277.205933 1274.644043 1272.828613 1271.579712 1270.736206 1269.529907 1266.016235 1261.134521 1254.763184 1244.863403 1246.930664 1258.251831 1249.761108 1243.27002 1252.081055 1258.09436 1258.242676 1255.341064 1254.199707 1256.624756 1258.365845 1258.934448 1260.009399 1261.03064 1260.954224 1259.654663 1258.307983 1257.151611 1255.266235 1249.193848 1244.148071 1245.715942 1244.785767 1242.740234 1243.109009 1245.617432 1246.371216 1247.209839 1246.645142 1245.817139 1246.087036 1245.717896 1244.801636 1243.023071 1241.038208 1241.011719 1241.075684 1238.411865 1236.539429 1234.429565 1232.170898 1230.540039 1229.809937 1228.912964 1227.637695 1226.10498 1224.388306 1222.067627 1219.789062 1219.588989 1219.54895 1219.080811 1219.230835 1219.988525 1220.457886 1220.318237 1220.307983 1220.02356 1219.639282 1218.232422 1215.939575 1215.358398 1215.12207 1214.877441 1214.535522 1213.934204 1213.381226 1212.670166 1211.940063 1211.405151 1210.768799 1209.968262 1209.2948 1209.558594 1209.859619 1209.904907 1209.720093 1209.677368 1209.691772 1209.716919 1210.449219 1212.232056 1214.455933 1216.89978 1219.109741 1219.796631 1219.789551 1219.502808 1219.104248 1218.874878 1218.760986 1218.735596 1218.848511 1218.93103 1219.160278 1219.363159 1219.556885 1219.543457 1219.517212 1220.599976 1221.913818 1224.333618 1226.03894 1227.293457 1228.325073 1229.129883 1229.569824 1230.083862 1231.3927 1231.91394 1232.623169 1233.625488 1234.851196 1236.60022 1238.889893 1240.567505 1240.90332 1240.836914 1239.772583 1237.319824 1233.897217 1229.815186 1225.457031 1222.49707 1221.642578 1220.550781 1217.595215 1213.358398 1209.634521 1204.509033 1201.254517 1205.64563 1213.668213 1222.852051 1233.30127 1240.889282 1245.788208 1249.599243 1252.859009 1258.22937 1265.580078 1271.071045 1274.466675 1277.620483 1280.718018 1279.070312 1259.279053 1239.632812 1223.808228 1208.077393 1197.328125 1203.942139 1195.865112 1207.499268 1224.643433 1231.345947 1223.250732 1230.684326 1235.463013 1240.471924 1245.164185 1245.90979 1244.290161 1238.957275 1236.826294 1238.704468 1240.823853 1230.62793 1213.118042 1198.366577 1183.556519 1161.35498 1139.548096 1145.643188 1167.775269 1185.065918 1194.330811 1209.130005 1228.661865 +1382.839478 1399.85791 1410.198608 1421.78064 1448.056519 1474.440552 1496.007446 1513.985596 1538.31543 1549.119751 1552.042969 1553.79541 1555.416748 1557.457764 1559.92334 1560.243286 1560.670898 1562.700317 1565.637817 1568.209351 1570.35791 1572.930664 1575.61853 1577.55188 1578.573486 1579.024536 1578.873535 1577.927368 1576.682739 1575.030029 1585.074951 1592.55603 1594.539795 1594.577881 1591.514404 1585.434082 1581.704224 1581.519897 1579.304077 1577.973145 1576.975586 1576.071899 1576.312012 1578.040283 1577.890503 1575.660645 1572.309448 1569.192749 1564.897705 1560.486084 1558.529907 1557.207153 1554.846802 1551.779053 1547.727539 1532.446899 1520.096436 1509.679443 1497.553711 1488.921265 1480.492676 1471.109497 1460.084229 1450.692749 1452.707642 1452.249756 1447.161377 1441.544556 1438.656738 1435.817017 1431.410889 1428.676758 1432.519043 1438.568604 1441.116821 1436.964233 1431.359253 1426.512573 1421.988892 1417.20813 1413.134521 1414.357788 1421.387939 1428.126465 1433.028198 1435.610474 1435.846436 1433.705933 1432.610718 1433.707275 1438.505981 1440.451416 1436.278809 1431.385864 1426.045044 1419.081177 1410.307861 1400.283203 1387.820435 1376.453491 1364.318848 1352.54126 1339.328979 1347.719238 1361.332275 1373.462524 1389.28186 1403.532593 1416.549316 1413.241821 1408.857788 1405.296021 1401.195557 1396.803223 1392.291016 1384.314331 1377.01123 1371.876343 1367.587036 1362.990112 1358.152588 1353.60083 1350.106079 1347.005127 1343.710449 1340.834595 1338.477051 1335.214355 1331.719604 1320.454102 1315.098267 1313.958496 1313.462891 1312.57312 1312.777344 1314.857056 1315.197754 1313.987793 1311.166748 1308.549927 1309.989746 1312.851685 1315.171875 1317.578857 1321.171021 1324.359863 1325.285767 1323.334229 1318.419312 1318.685791 1325.464355 1335.514648 1344.577515 1351.350464 1359.145142 1366.446777 1375.623291 1380.752808 1384.723999 1387.86731 1385.21167 1381.171753 1378.621582 1376.698486 1374.830444 1375.554688 1376.043091 1378.936523 1382.133545 1382.677246 1381.932983 1377.359253 1370.259033 1364.963989 1359.006592 1352.15686 1353.86792 1369.338501 1383.960571 1393.613892 1402.021484 1405.528564 1406.754639 1410.233765 1413.488159 1417.331421 1420.391724 1422.018066 1423.471313 1424.890625 1435.876587 1446.740601 1455.2948 1462.235596 1462.695801 1457.629272 1450.571533 1449.865723 1451.483276 1455.196777 1458.248779 1458.965332 1458.633423 1456.753174 1456.125977 1455.94043 1455.609253 1455.303345 1453.986328 1452.481079 1444.647095 1437.869141 1431.429443 1427.253052 1424.387329 1422.253418 1417.904053 1416.274902 1418.681763 1420.392212 1421.004395 1420.754272 1419.721436 1417.798706 1415.734009 1413.068481 1409.102905 1403.310181 1397.343506 1399.294434 1404.32251 1413.358643 1412.339966 1402.793945 1399.784546 1397.598755 1395.932129 1395.908936 1396.164673 1395.784668 1395.370483 1395.424805 1395.376343 1394.226807 1392.363892 1388.764648 1381.619385 1375.619019 1367.926147 1361.372559 1353.026978 1343.591064 1339.685547 1332.885132 1327.508301 1318.226929 1316.550659 1311.688721 1304.074585 1295.46936 1299.577759 1308.599487 1322.415527 1336.192505 1344.95459 1345.769897 1344.894287 1339.029663 1330.343628 1323.959473 1316.136963 1323.086914 1334.410156 1341.336182 1348.918579 1354.294556 1354.448242 1352.607788 1349.628784 1347.563721 1346.547974 1346.414429 1347.043701 1347.557739 1347.700073 1347.746338 1347.449951 1346.829956 1348.850708 1352.03064 1355.434692 1358.23291 1361.959839 1364.787476 1365.30896 1365.253418 1364.126465 1362.215698 1360.614502 1360.955566 1361.827148 1362.909302 1365.298462 1367.078369 1366.297485 1357.888428 1346.241821 1337.529053 1330.225342 1342.787964 1353.473755 1365.859131 1375.80603 1383.604248 1392.680298 1404.582275 1406.526855 1402.271606 1393.138062 1379.525757 1378.365723 1386.540161 1393.731079 1401.669312 1404.839355 1404.560181 1400.285645 1392.710693 1387.525146 1380.52124 1371.192017 1380.549438 1387.128052 1384.161499 1376.119995 1364.180908 1352.272339 1338.017822 1321.807617 1304.494507 1302.878662 1308.863403 1317.461304 1319.504639 1322.230225 1333.080688 1332.869141 1318.025879 1308.961426 1307.221924 1305.006592 1302.336914 1306.978638 1316.219727 1305.865234 1300.970215 1295.657837 1291.76123 1288.250977 1282.227783 1281.351196 1283.699707 1286.563965 1289.72229 1290.917236 1291.536865 1293.159058 1293.836914 1292.838257 1288.575562 1285.798706 1290.437256 1292.020264 1291.630615 1288.476074 1291.569092 1294.477173 1294.362549 1289.56189 1281.567627 1271.9375 1264.34729 1261.243164 1264.101929 1268.343994 1275.280518 1283.759277 1294.391235 1298.308105 1299.274414 1298.367554 1294.944214 1283.257812 1270.491211 1258.068115 1248.579224 1247.730347 1252.027588 1257.35376 1268.950073 1280.520996 1293.700195 1303.212646 1305.88147 1303.926758 1302.628662 1302.475952 1304.246094 1305.478516 1306.05188 1306.010254 1300.702759 1296.457642 1294.705322 1293.285767 1291.625977 1288.242432 1285.455811 1283.5271 1282.435303 1281.899292 1280.862305 1277.912964 1275.12561 1273.275024 1272.157837 1271.234619 1269.537842 1265.123413 1258.347168 1245.260742 1245.208984 1258.874634 1261.31189 1257.282715 1243.021729 1253.567993 1259.695557 1259.72522 1255.719849 1257.967285 1260.976807 1262.783325 1263.757812 1264.227539 1264.578247 1264.529419 1263.085449 1261.246948 1259.445557 1257.320801 1246.797729 1245.709595 1249.216797 1247.098389 1243.672607 1243.822754 1245.030151 1249.237549 1251.139404 1250.633423 1250.114502 1249.925415 1249.082153 1247.206909 1244.143433 1242.843628 1244.334229 1244.389282 1240.942261 1238.659058 1236.139526 1233.219116 1232.213623 1231.873413 1230.481323 1229.006836 1227.610962 1225.815674 1223.771484 1221.791016 1221.114136 1221.033081 1219.861206 1219.941528 1221.002808 1221.426636 1221.432007 1221.264404 1221.039185 1220.566284 1219.658203 1216.685913 1216.691772 1216.704468 1216.438721 1216.012695 1215.418335 1214.674438 1214.018799 1213.364502 1212.715942 1212.168579 1211.701172 1211.237061 1211.288208 1211.281494 1211.204102 1210.98291 1210.913086 1211.018433 1211.176636 1211.822021 1212.789185 1214.286011 1215.825806 1217.526611 1218.564575 1218.903442 1218.840454 1218.631958 1218.627563 1218.723022 1218.759521 1218.959351 1219.23645 1219.533325 1219.858154 1220.03479 1220.40564 1221.321045 1222.391724 1223.511475 1225.145264 1226.592163 1227.690674 1228.693359 1229.400757 1229.804565 1229.966797 1230.142212 1230.368164 1230.483154 1230.912476 1231.062256 1231.354492 1232.220947 1232.886963 1233.056763 1232.302856 1231.326294 1229.383179 1227.072632 1224.896118 1220.765625 1218.321167 1217.854492 1216.814453 1213.908569 1210.394409 1207.23938 1201.596313 1207.808594 1215.689209 1224.926392 1232.779663 1240.330444 1246.787842 1252.192139 1256.573486 1259.694214 1265.731812 1271.176147 1276.257812 1279.272949 1282.876099 1284.155884 1269.591553 1244.057495 1227.44519 1217.80896 1201.447876 1191.396484 1187.31897 1185.198486 1205.99292 1221.425293 1222.692017 1217.872925 1222.035278 1230.058228 1238.495483 1244.838135 1247.838745 1249.080566 1247.928589 1247.631592 1249.392822 1246.845093 1226.737305 1209.379639 1192.92334 1177.654053 1157.017578 1140.509399 1143.411499 1161.631348 1180.733398 1191.97522 1208.869507 1223.670654 +1361.93335 1379.321655 1399.778076 1431.018799 1451.291504 1468.021606 1485.443359 1512.166626 1533.658569 1548.295288 1552.7052 1555.347534 1558.356689 1561.331177 1564.436035 1566.189331 1567.849365 1570.429199 1573.05542 1576.809448 1581.887573 1584.730103 1586.066895 1587.296875 1588.269775 1588.545776 1588.825317 1588.636108 1587.153687 1585.827515 1590.912476 1597.969604 1599.994873 1599.259644 1596.375732 1586.798096 1587.284302 1587.25354 1585.591675 1583.553955 1581.740967 1580.904419 1580.876709 1581.398071 1580.175781 1577.229858 1573.25061 1572.437134 1568.929077 1563.50061 1561.251343 1560.369019 1557.049927 1552.711182 1546.117554 1528.486938 1516.689209 1506.896851 1497.42688 1489.244751 1480.565552 1471.512207 1463.01355 1457.996094 1455.860107 1453.019165 1446.099854 1438.886719 1438.254395 1437.87561 1439.271851 1440.594238 1441.872437 1442.546509 1441.346069 1435.989136 1429.05896 1424.980225 1421.748413 1417.453979 1418.249634 1421.191772 1427.319458 1435.05249 1440.505615 1441.278198 1438.052734 1431.020508 1426.213745 1423.546631 1422.336792 1420.29187 1418.300537 1415.423828 1411.895874 1404.626465 1396.376831 1389.921631 1378.4104 1367.862183 1358.803345 1342.44519 1343.831543 1350.872314 1363.031006 1376.125366 1394.010864 1409.046387 1417.952026 1415.059082 1410.824097 1406.492798 1401.716797 1396.599854 1390.721313 1380.18042 1366.45813 1361.628418 1355.71228 1353.377563 1352.34668 1350.51123 1347.62085 1344.955811 1342.622437 1336.594604 1330.192505 1327.495972 1316.500854 1315.69043 1315.963745 1317.448486 1317.028809 1314.969116 1313.421143 1311.527954 1310.806763 1310.13147 1309.863281 1311.025024 1313.305176 1315.867065 1318.619019 1322.995239 1327.106567 1330.391235 1332.540283 1332.066406 1329.893433 1316.560425 1322.49585 1328.852173 1336.293213 1345.101196 1353.044312 1359.524414 1365.998901 1374.147339 1381.74939 1391.541748 1390.140869 1385.752563 1382.617798 1380.73584 1378.826904 1379.171021 1379.6427 1381.071655 1384.00647 1384.898071 1383.848633 1380.230957 1375.076294 1368.59082 1362.312744 1356.738037 1351.261963 1367.58606 1383.450928 1395.011719 1404.679688 1408.436157 1411.852173 1415.536987 1418.422729 1422.679932 1426.121338 1429.071655 1430.815186 1431.927246 1436.853882 1447.805542 1459.731689 1466.587158 1466.961914 1461.910156 1453.109131 1454.441772 1459.435303 1462.982422 1464.669434 1465.434326 1465.299438 1464.625 1463.921143 1464.371948 1463.921387 1462.041626 1458.307129 1453.61438 1445.260132 1437.528564 1431.460815 1426.864502 1425.588013 1424.98999 1425.106812 1423.564819 1423.725464 1424.256226 1424.289062 1423.897095 1423.248657 1422.307983 1420.781616 1418.949951 1416.207031 1410.080933 1401.810425 1399.688599 1408.293091 1416.931763 1416.434082 1412.207153 1406.645752 1404.660278 1401.858154 1402.302368 1403.012085 1401.869995 1401.985352 1400.975342 1401.002441 1401.304077 1399.526733 1394.230591 1387.337036 1379.819702 1372.203369 1365.731567 1357.146118 1343.091553 1338.035156 1332.171265 1327.947388 1323.554565 1319.857666 1314.533325 1305.236816 1296.634277 1301.805176 1309.27124 1319.845337 1336.074097 1346.88855 1348.755981 1348.05188 1342.27771 1336.864502 1331.171753 1321.448364 1320.903687 1333.150146 1341.58252 1351.809204 1356.03064 1356.325317 1355.793213 1354.202026 1351.500488 1350.844971 1351.288452 1352.392578 1352.822021 1353.168335 1353.786377 1353.911499 1352.674316 1351.51416 1352.756714 1356.677368 1360.914307 1364.566406 1366.767944 1367.560791 1368.107178 1367.782471 1366.021362 1364.408325 1365.324219 1367.204102 1366.227539 1364.990601 1370.079956 1368.832031 1362.173706 1355.430054 1348.251953 1332.443848 1341.774658 1350.710938 1362.823608 1373.880249 1382.900757 1392.191284 1404.19397 1408.001465 1406.094238 1398.37561 1388.294678 1381.831787 1390.561035 1400.507935 1406.738037 1408.925781 1408.246094 1402.898926 1399.727905 1394.537476 1387.71814 1382.169067 1392.822876 1392.288452 1384.668335 1374.726562 1362.700928 1351.033936 1336.633545 1317.690552 1305.53064 1316.153687 1322.119507 1327.276367 1332.974731 1336.683105 1344.607666 1336.890991 1320.423096 1313.996582 1315.266724 1311.36145 1304.616455 1309.697876 1317.473511 1315.29248 1304.894409 1300.10083 1294.759399 1290.327393 1286.419922 1285.662476 1287.496338 1289.81543 1293.69873 1295.369751 1296.312256 1298.686646 1300.272583 1299.350098 1294.398682 1291.199463 1295.53894 1298.055664 1297.264282 1292.988892 1294.320312 1295.228149 1289.844482 1283.392822 1275.450195 1266.947754 1262.325439 1263.264404 1266.461548 1271.678589 1280.624878 1291.193848 1298.088379 1301.481323 1302.253418 1301.119873 1296.536865 1284.474121 1270.339722 1259.263306 1249.369995 1248.408691 1251.569946 1256.157349 1269.000366 1281.200684 1293.906372 1303.193481 1306.131714 1304.728638 1302.340698 1301.48938 1303.876221 1305.8302 1305.049927 1301.440063 1297.497559 1294.087891 1292.376831 1291.429565 1289.593994 1287.299683 1284.879761 1282.873779 1280.956543 1279.783569 1278.640381 1276.219849 1274.083618 1272.466064 1271.809448 1270.533447 1264.469116 1258.315796 1254.0802 1250.671753 1257.988159 1264.696533 1266.640869 1255.926758 1243.809692 1255.908691 1262.308838 1263.389771 1261.314819 1262.910889 1265.912842 1268.045044 1268.385498 1268.189941 1268.563354 1268.190063 1266.005615 1263.192871 1260.083374 1256.718262 1252.383423 1254.944702 1254.223633 1249.959717 1243.978027 1246.710815 1243.799438 1250.596924 1256.395996 1255.177124 1253.817749 1254.255981 1253.139404 1248.646851 1244.22583 1244.573975 1246.342041 1246.421265 1243.041138 1241.026855 1238.400146 1236.106689 1234.605591 1233.442627 1231.44751 1230.185059 1228.887817 1227.580322 1226.197632 1224.815186 1223.59021 1222.779541 1221.976685 1221.705444 1222.10376 1222.505737 1222.381958 1222.031128 1221.44812 1220.989502 1219.923828 1218.084473 1218.723022 1218.628052 1218.28418 1217.463867 1216.637573 1215.964111 1215.240845 1214.655029 1214.12207 1213.750732 1213.231445 1212.978027 1212.914062 1212.747925 1212.568115 1212.354248 1212.338989 1212.376709 1212.496582 1212.846558 1213.443604 1214.198364 1215.217651 1216.274292 1217.093018 1217.676636 1218.016479 1218.175781 1218.380737 1218.605469 1219.129395 1219.641479 1219.710571 1219.776978 1220.111206 1221.614624 1222.594849 1223.496582 1224.359131 1225.389893 1226.413086 1227.549072 1228.707275 1229.61499 1230.188843 1230.330444 1230.21582 1230.11499 1229.816772 1229.703979 1229.431519 1229.396973 1229.344849 1229.282593 1229.498291 1228.601685 1227.119751 1225.127808 1222.448486 1219.648315 1220.424683 1220.180542 1216.776489 1214.685913 1213.139526 1210.680054 1208.059326 1203.547119 1205.869385 1212.755493 1222.024292 1229.034912 1237.931763 1246.506714 1251.770996 1257.604126 1262.57373 1268.20166 1271.873901 1277.427246 1281.951294 1283.878174 1290.516846 1286.436401 1259.920532 1229.620728 1211.800415 1201.398926 1198.986572 1190.283813 1178.26123 1180.922485 1197.893799 1220.475464 1220.445557 1217.470825 1219.530273 1231.470947 1237.897949 1244.079346 1249.220337 1252.762573 1255.256104 1258.626709 1258.553711 1242.119751 1222.876099 1205.575317 1190.250488 1173.942017 1159.463257 1141.829224 1143.55481 1165.906128 1180.407715 1194.832764 1211.122559 1231.508789 +1390.012817 1409.420776 1423.066528 1440.985596 1455.026123 1472.593384 1488.513672 1509.373047 1526.817383 1538.859009 1550.726196 1555.450928 1559.850098 1563.578003 1567.469971 1570.900269 1574.018188 1577.270874 1582.574341 1588.163696 1590.789429 1592.662354 1593.858154 1594.623779 1595.600098 1596.63623 1598.786011 1601.29248 1601.906616 1598.949219 1600.108154 1604.338745 1606.289307 1605.72522 1602.755493 1596.549927 1593.849731 1591.747925 1589.864014 1587.523315 1585.414185 1584.4021 1584.443848 1584.546387 1583.431763 1581.547607 1578.652832 1576.535034 1573.215698 1568.529663 1565.168213 1563.09729 1558.467285 1549.498169 1537.615723 1522.108765 1511.573486 1503.722656 1495.615967 1488.442627 1480.937744 1473.81604 1465.553345 1459.984985 1455.741089 1452.153931 1444.266968 1438.378662 1438.848633 1443.376343 1446.443359 1447.67688 1446.191284 1442.736084 1438.499634 1432.0 1426.337158 1425.057007 1424.392944 1426.666504 1427.369019 1427.721069 1434.628784 1441.053345 1443.276367 1443.304932 1434.672729 1421.727173 1409.926392 1403.534668 1403.671631 1404.140625 1404.543945 1402.756226 1396.498535 1388.104126 1384.157349 1378.866821 1371.124146 1362.209351 1351.821899 1341.221191 1349.591064 1356.943726 1368.057495 1380.017334 1396.826294 1413.18396 1418.209106 1416.308228 1411.99231 1406.860352 1401.702271 1396.474609 1390.865967 1380.972534 1366.099243 1356.134644 1352.488892 1351.216064 1350.156616 1348.289673 1345.04541 1342.319702 1339.852661 1333.498413 1326.747192 1319.977417 1316.387573 1321.903076 1329.364746 1327.948608 1322.584961 1317.145874 1316.563721 1318.025757 1317.346313 1316.447876 1314.533569 1314.779175 1316.741943 1320.018799 1324.471069 1329.522949 1334.761719 1339.35083 1343.848755 1345.086792 1344.054443 1324.337402 1319.413696 1323.788208 1328.917603 1338.862061 1345.33252 1351.458252 1357.926392 1366.713867 1374.721313 1382.260254 1388.295288 1385.264648 1383.520752 1382.524902 1382.110107 1381.952148 1382.525391 1384.517334 1386.821045 1387.745972 1386.924683 1383.789795 1379.014771 1372.018799 1366.308105 1360.247559 1352.41272 1362.575806 1378.473267 1391.28064 1403.337402 1409.634399 1414.747925 1419.206543 1423.260132 1427.812256 1432.484375 1435.66748 1439.781982 1444.021729 1447.669189 1451.481567 1463.193726 1474.340942 1474.205078 1464.071289 1465.953979 1464.880737 1468.701172 1470.994873 1472.409058 1473.24939 1473.40918 1473.473633 1472.124878 1470.09729 1468.062744 1465.250488 1460.769653 1452.394409 1444.129517 1437.89209 1432.652344 1427.463257 1429.148804 1429.272583 1429.348999 1428.557373 1428.314941 1428.258911 1428.011353 1427.422974 1426.732666 1426.586548 1426.402588 1424.354004 1420.186035 1415.553589 1405.286865 1401.98938 1410.628296 1417.610229 1419.706177 1418.474365 1414.085571 1410.473877 1408.515015 1407.696899 1408.074097 1408.437134 1408.540283 1408.359619 1409.092529 1409.324341 1405.719971 1399.127319 1390.053223 1380.40564 1371.991577 1365.311035 1357.961426 1346.846436 1338.515869 1333.744751 1330.283081 1324.18396 1319.282959 1313.340088 1303.261963 1297.399902 1306.205078 1311.67688 1320.201538 1335.246704 1345.037964 1351.730713 1352.922485 1350.011841 1344.660645 1338.990845 1329.31665 1319.2854 1330.714966 1339.276123 1347.93457 1354.647705 1356.834106 1356.668335 1356.045898 1354.512695 1354.390015 1355.444092 1358.052368 1360.924561 1362.289062 1361.258057 1359.133301 1357.273682 1355.694702 1353.870361 1354.514526 1362.090454 1366.792847 1369.217651 1370.701294 1371.44104 1371.450684 1369.528809 1365.521118 1369.891357 1373.83313 1374.866211 1374.248047 1376.01709 1374.540405 1368.901489 1364.413208 1357.713623 1339.008667 1341.647339 1350.916626 1361.563965 1372.616577 1382.436768 1393.456421 1405.794556 1410.804321 1412.468506 1405.892334 1396.513184 1389.428955 1389.491821 1402.842529 1409.397949 1413.312988 1413.973145 1410.396851 1406.498169 1401.330322 1393.02002 1395.039307 1395.00708 1391.328125 1382.797363 1372.016479 1360.22168 1345.966064 1332.567627 1310.745605 1322.072876 1330.57312 1333.032349 1338.47522 1345.281982 1351.335938 1353.729248 1340.101685 1330.415649 1319.041138 1323.843872 1320.52832 1314.993408 1311.714111 1312.853027 1315.082764 1309.978027 1306.124146 1298.793457 1292.47583 1290.354004 1291.172852 1292.389648 1291.71936 1296.415405 1300.873291 1302.432373 1304.586304 1306.930298 1306.784058 1301.251709 1292.422485 1299.715576 1304.185303 1304.607544 1296.395386 1297.209717 1292.64563 1281.341309 1276.798828 1268.488525 1264.452881 1263.625 1265.460815 1268.77124 1275.131348 1284.902832 1296.585449 1304.007568 1305.329224 1305.453857 1304.793579 1296.843994 1285.250854 1269.69751 1259.362061 1250.307739 1248.796753 1251.19873 1254.861572 1267.583862 1281.758789 1295.581787 1304.684814 1306.484985 1305.505005 1302.441284 1297.77832 1298.026245 1299.519287 1297.988525 1294.472168 1292.216064 1291.273193 1290.759277 1289.63916 1287.864014 1285.80481 1283.675903 1281.605469 1279.419556 1277.662598 1275.938965 1273.722778 1271.445923 1270.079102 1264.720337 1256.209839 1254.34021 1253.794434 1255.046997 1260.82312 1266.909058 1270.745728 1271.950684 1254.417969 1251.407349 1261.23291 1268.068848 1267.979126 1266.094849 1267.449585 1270.199097 1272.057129 1272.619263 1272.99585 1273.180176 1271.807617 1268.224731 1264.866089 1260.474976 1256.189819 1256.584473 1258.479858 1257.33313 1255.627441 1245.460083 1254.984375 1253.572876 1252.38916 1256.645142 1257.18811 1257.011353 1257.44043 1256.980835 1249.482422 1243.923462 1246.451904 1248.47583 1248.506714 1245.224121 1243.623047 1241.061035 1238.674072 1236.64209 1234.710938 1232.566284 1230.950562 1230.143677 1229.317627 1228.452515 1227.332031 1226.210693 1225.405518 1224.637207 1224.248291 1223.981934 1223.652832 1223.140381 1222.495117 1221.709839 1220.706177 1219.366577 1220.370239 1220.607178 1220.400024 1219.76416 1218.685181 1217.825439 1217.072266 1216.316895 1215.877563 1215.609985 1215.225098 1214.789795 1214.476318 1214.329956 1214.15332 1214.050049 1213.766235 1213.723999 1213.853638 1213.992432 1214.037964 1214.19043 1214.564087 1215.029541 1215.620117 1216.274658 1216.76416 1217.237793 1217.616455 1217.989136 1218.606323 1219.573608 1219.82019 1220.049438 1220.192139 1220.721191 1222.766846 1224.375732 1225.79248 1226.69751 1227.415894 1228.099243 1228.880005 1229.812012 1230.75769 1231.359253 1231.376709 1230.964111 1230.248047 1229.795776 1229.368652 1228.756226 1228.319458 1227.844482 1227.19043 1226.28894 1224.940186 1222.952271 1220.337646 1218.532715 1217.494019 1216.726929 1216.11792 1214.117432 1211.883057 1209.822266 1207.72937 1204.380981 1202.294922 1194.963501 1199.287109 1206.036621 1216.590576 1222.638428 1229.199585 1239.495117 1252.061646 1262.238159 1269.022705 1272.348755 1270.480225 1275.985107 1278.462769 1284.148071 1276.731201 1259.046997 1235.179565 1217.025513 1195.89624 1181.171997 1179.524536 1171.509766 1177.818115 1203.231079 1220.139648 1221.550415 1209.055664 1223.393799 1233.17627 1239.217529 1246.761841 1250.722778 1255.742554 1258.356079 1260.074951 1252.074707 1239.282837 1220.788208 1203.693604 1189.053345 1173.804077 1156.409424 1142.997681 1145.605225 1171.032837 1190.182129 1207.276245 1218.793457 1232.736206 +1392.798584 1414.154053 1429.103394 1439.294922 1450.320923 1462.122314 1477.510986 1495.989258 1514.706543 1530.058716 1540.297607 1552.302002 1560.249756 1565.300293 1569.58728 1574.399536 1578.39917 1582.611938 1587.994873 1593.178833 1596.339355 1599.372803 1601.657227 1602.663208 1604.114502 1606.237793 1608.70105 1611.379272 1612.972656 1612.034302 1610.457886 1611.744019 1612.579102 1612.599731 1609.54541 1603.060425 1599.32251 1596.657837 1594.067749 1591.322754 1589.154419 1588.144531 1587.828125 1587.675537 1586.638794 1585.848511 1584.599731 1579.999512 1574.543091 1569.719727 1564.955566 1562.688721 1554.944458 1541.444092 1526.435425 1518.329102 1509.630005 1499.321289 1492.33667 1485.7323 1479.894531 1472.195435 1462.813721 1458.167847 1453.54895 1450.709839 1444.469727 1441.753296 1450.978394 1453.490601 1453.50708 1452.814331 1448.527344 1439.671753 1433.435059 1426.520508 1426.527954 1425.821167 1427.536133 1430.322021 1433.45813 1436.521606 1442.215332 1446.100464 1445.280396 1441.737427 1426.221313 1411.493164 1398.725952 1391.628662 1388.65979 1388.322021 1388.840454 1387.515625 1383.042603 1376.667847 1372.740723 1369.501465 1364.292236 1358.670288 1349.763672 1347.673462 1358.067749 1368.412354 1375.83728 1385.514282 1398.594116 1416.936279 1419.429688 1417.309448 1413.057373 1406.929321 1401.456299 1396.692871 1391.439331 1383.63916 1372.105347 1360.837402 1353.679077 1351.188232 1349.413574 1347.107666 1344.041748 1340.485229 1335.562866 1328.42981 1322.911987 1317.062012 1324.495972 1337.864258 1339.173828 1335.488159 1328.572754 1323.464111 1323.158813 1323.27417 1322.394653 1320.559692 1318.083252 1319.068237 1321.72937 1325.425293 1330.616577 1338.419678 1344.260986 1349.295044 1353.230957 1354.131592 1351.371826 1335.162842 1329.138062 1323.30603 1322.155518 1327.568604 1335.407227 1341.836792 1348.873047 1356.523804 1364.038574 1373.04248 1380.2229 1382.949707 1382.954956 1382.68335 1383.128052 1384.089355 1385.32959 1387.464966 1389.790527 1390.651245 1390.285156 1388.845459 1381.928467 1375.231323 1370.990601 1366.383179 1357.583374 1358.696167 1371.145386 1384.810791 1399.800415 1409.0625 1416.536255 1422.28833 1427.292114 1434.001831 1439.551514 1444.15625 1449.052979 1454.536011 1459.837769 1464.134888 1473.171875 1478.05481 1478.005127 1475.598022 1478.105591 1477.224976 1477.638062 1478.380737 1478.921021 1479.231934 1479.072632 1478.218262 1477.41272 1474.19104 1470.369019 1467.185913 1461.556763 1450.339966 1443.511108 1438.146484 1436.874268 1435.95166 1436.170166 1435.563599 1434.733154 1433.546631 1432.827759 1432.363647 1431.771362 1431.102051 1430.298828 1429.460083 1428.647095 1427.68042 1422.097412 1416.910767 1409.848022 1405.374146 1412.147339 1420.285645 1424.627441 1424.22168 1421.121704 1416.36438 1414.317139 1412.456909 1412.858398 1414.98999 1416.937988 1416.935791 1418.685303 1417.141968 1407.8396 1397.560669 1387.106934 1376.37793 1365.989868 1361.225952 1355.614014 1345.033691 1337.335083 1332.388672 1328.540161 1321.857788 1316.091675 1311.270264 1303.904175 1300.670166 1307.966797 1314.576538 1324.476074 1334.685425 1343.539062 1354.491943 1357.850098 1357.11377 1352.424927 1345.303345 1335.268311 1324.780762 1324.553711 1333.925903 1341.032471 1349.448975 1355.766113 1357.242065 1357.457642 1357.480713 1358.106689 1360.13269 1363.619385 1367.417603 1369.02063 1367.900879 1364.905029 1362.765991 1361.883789 1360.032959 1359.771118 1363.13916 1366.846191 1370.416016 1374.007324 1375.973022 1376.67395 1375.825562 1375.168945 1379.125122 1381.722778 1383.231567 1384.820557 1385.704834 1382.858276 1378.825439 1371.880493 1363.103394 1349.691284 1342.360596 1351.865845 1364.909546 1373.761475 1382.857788 1393.355713 1404.77063 1412.331299 1417.031006 1415.487915 1406.451416 1396.494141 1387.584717 1404.651001 1413.019287 1417.137207 1417.755493 1416.060669 1412.659424 1406.424561 1404.648071 1401.709961 1394.076538 1386.643433 1377.903198 1366.351318 1354.946777 1339.059692 1320.587158 1323.061157 1334.300537 1338.069702 1343.542969 1348.568848 1355.642212 1359.958862 1353.452881 1351.005371 1338.152344 1330.57666 1333.360229 1326.108154 1316.053467 1312.639282 1308.5 1303.592529 1302.874146 1300.309814 1295.44458 1292.141113 1292.646118 1295.715454 1297.317139 1296.603027 1302.664795 1306.983643 1309.144043 1311.657104 1313.731079 1312.757202 1308.90564 1297.138184 1305.750854 1308.62146 1307.708496 1303.612183 1305.433228 1291.938843 1281.02124 1274.455688 1268.248413 1264.361938 1265.288574 1267.647339 1271.407471 1277.133301 1286.226318 1297.798462 1307.121582 1307.884766 1307.757446 1305.043335 1295.806641 1285.602051 1268.646362 1260.373291 1253.110229 1248.716797 1250.950195 1253.968994 1263.762939 1280.995361 1296.14917 1307.359131 1306.896362 1305.843506 1300.800659 1294.456055 1292.461792 1293.467407 1292.487793 1291.315186 1290.410522 1289.624634 1288.793701 1287.894775 1286.318848 1284.378784 1282.046875 1279.580811 1277.583984 1275.560913 1273.848267 1271.330811 1268.269409 1261.114624 1254.575317 1254.922241 1254.745361 1254.590942 1265.527954 1270.968872 1272.802979 1274.060303 1271.605591 1253.046265 1256.303589 1269.626099 1272.069336 1271.835449 1270.489624 1270.844116 1273.406372 1275.674805 1277.166748 1278.196167 1278.827759 1276.722534 1270.769775 1266.62146 1261.487427 1256.666504 1257.931274 1260.490723 1259.243652 1255.630859 1255.444946 1257.869385 1257.569458 1255.491821 1255.984619 1257.254517 1258.132935 1258.364624 1258.448853 1245.062744 1245.971558 1250.939941 1252.268433 1251.328369 1247.703003 1245.581055 1242.97583 1240.861938 1238.628662 1236.651611 1233.688965 1232.524292 1232.273926 1231.248169 1230.384644 1229.603638 1228.661987 1227.957275 1227.156738 1226.451904 1226.017212 1225.234375 1224.241821 1223.412354 1222.581421 1221.427734 1221.273315 1221.833008 1222.104858 1221.700073 1220.887573 1219.787476 1218.895264 1218.260376 1217.560181 1217.240479 1216.893555 1216.694336 1216.168945 1215.908325 1215.689087 1215.543701 1215.379028 1215.19458 1215.250488 1215.306763 1215.605835 1215.52478 1215.371216 1215.291016 1215.305176 1215.525635 1215.846069 1216.254761 1216.629272 1217.112183 1217.634033 1218.435303 1219.613037 1220.380859 1220.654419 1221.148438 1221.946655 1223.645752 1226.028076 1228.106445 1229.411133 1229.821411 1230.147095 1230.480347 1230.81189 1231.429199 1232.025757 1231.991577 1231.677002 1231.098999 1230.328491 1229.366333 1228.509644 1227.767578 1226.720459 1225.56665 1223.641846 1221.422852 1219.878418 1218.904541 1218.067993 1216.790283 1215.399414 1213.512329 1211.236938 1209.539062 1207.443481 1205.164795 1206.145874 1206.238037 1197.93396 1192.193726 1192.956909 1199.769287 1208.009033 1212.868774 1217.771973 1227.797729 1240.402954 1247.848145 1250.042969 1250.598022 1255.028198 1259.496094 1260.39502 1264.949707 1252.763916 1236.447021 1223.874634 1210.268921 1192.196533 1173.599854 1164.047119 1170.529907 1186.170044 1196.234497 1212.097412 1204.080322 1220.882202 1225.959106 1224.680786 1234.026245 1238.529907 1251.469238 1255.91748 1245.500977 1238.630737 1233.299927 1218.482056 1204.411377 1188.213379 1171.140137 1151.978394 1142.09729 1143.162231 1163.712646 1191.124146 1220.591187 1239.997192 1250.435913 +1380.401001 1391.461426 1396.027466 1413.087769 1423.698486 1437.995728 1466.956421 1489.113525 1502.454712 1522.723389 1531.191895 1543.391724 1555.015869 1564.619873 1568.987549 1575.300659 1580.734985 1585.914673 1592.984131 1598.279419 1603.349976 1607.468384 1610.908813 1611.567871 1612.674561 1615.656616 1619.188843 1621.42688 1622.932251 1623.185181 1622.138184 1619.91272 1618.532593 1617.319214 1614.217896 1609.249634 1605.812256 1601.597656 1597.802002 1594.833252 1593.082153 1591.907227 1591.06604 1590.151001 1589.191895 1588.187134 1587.010742 1581.557739 1574.325439 1567.822021 1562.168457 1557.564331 1549.286133 1537.376099 1522.227051 1515.823975 1505.937866 1494.839111 1486.89624 1481.654541 1476.388794 1469.409424 1461.694458 1454.272217 1450.760132 1449.08374 1448.781006 1452.184937 1457.947876 1458.446655 1456.407349 1453.50061 1446.486694 1437.237305 1428.079956 1426.343872 1428.41272 1429.310181 1431.178589 1434.397339 1438.517456 1445.821899 1453.729004 1449.549683 1444.464966 1432.129883 1418.13562 1402.706909 1391.576782 1383.580078 1377.116211 1375.276978 1376.637817 1375.440186 1372.243774 1367.726929 1363.936157 1360.994629 1358.285889 1354.935303 1345.699463 1357.658203 1370.085815 1378.435303 1384.163208 1390.85791 1403.116455 1418.76355 1420.370239 1418.392212 1413.725586 1406.791748 1400.942871 1396.257568 1391.399292 1383.848877 1374.522217 1362.73938 1355.146973 1351.977905 1349.4823 1346.899658 1344.532471 1342.731689 1335.868408 1328.375732 1318.982056 1326.808716 1343.182495 1344.815918 1345.17041 1342.776978 1334.801392 1329.671387 1330.807495 1329.944214 1327.177002 1324.290649 1324.118896 1325.993774 1328.268799 1332.428467 1343.39563 1351.451172 1356.780762 1359.939575 1364.205444 1363.27002 1355.745483 1343.707153 1339.480713 1335.795288 1331.180054 1324.952881 1327.741455 1334.226196 1341.417847 1348.697632 1356.655518 1365.879272 1377.436401 1380.348145 1381.703979 1382.123779 1383.119751 1385.203003 1387.497559 1389.443604 1392.581665 1395.319336 1395.447754 1394.422729 1388.577637 1379.045532 1375.641357 1371.587524 1366.354004 1356.882202 1365.506836 1375.946045 1392.662109 1407.922119 1417.459961 1425.517212 1433.725708 1442.071899 1450.189941 1456.187866 1463.884399 1468.820312 1473.215942 1475.637451 1478.202271 1478.983032 1480.246582 1482.065796 1483.275879 1483.802246 1484.018433 1484.000854 1483.834717 1482.648071 1480.500366 1479.201416 1477.796387 1474.843628 1471.016846 1467.401123 1460.733643 1450.184937 1442.96936 1438.821289 1441.088013 1442.72644 1442.485352 1441.831421 1440.251953 1438.332397 1436.929932 1436.407349 1435.380371 1433.409546 1431.283325 1429.837402 1428.868286 1426.500488 1421.213867 1416.765137 1412.813477 1410.389038 1413.923218 1424.517212 1428.814575 1429.632324 1429.250122 1425.582764 1422.813477 1420.463989 1422.978516 1425.613281 1430.074951 1430.411133 1427.078735 1416.124268 1400.675049 1389.087891 1382.473877 1372.946167 1363.813721 1357.029785 1350.266113 1340.340576 1331.624512 1328.798584 1325.143799 1318.30127 1316.71582 1314.543213 1306.351318 1300.396729 1306.800049 1315.076782 1325.557739 1333.807251 1341.798096 1355.970703 1362.479736 1363.675049 1355.318359 1348.573975 1342.163086 1329.448486 1323.883301 1329.423584 1335.983276 1343.173706 1355.512451 1357.743042 1358.492676 1358.822754 1359.800659 1361.826172 1364.789795 1368.224609 1370.185181 1371.216064 1370.909302 1369.675049 1368.911011 1367.331299 1365.756104 1366.50769 1364.797607 1373.089478 1377.355103 1380.160522 1381.935791 1382.289185 1383.505737 1386.922241 1388.486206 1390.262085 1393.051758 1392.873657 1390.172607 1383.831177 1376.209961 1366.046875 1354.593262 1341.895996 1353.115112 1365.351685 1375.13147 1383.074829 1390.915527 1401.179077 1410.356445 1417.170776 1418.524414 1415.116577 1405.556763 1395.699097 1404.938354 1416.876587 1420.046631 1420.617798 1418.837646 1415.668091 1410.701172 1406.636841 1400.284668 1389.49646 1378.317505 1368.974731 1357.186523 1347.14978 1331.356689 1320.28186 1338.74939 1343.351318 1347.028809 1351.271729 1356.797852 1366.828979 1367.625488 1364.063477 1359.449707 1342.689087 1344.144409 1340.910156 1330.349731 1318.99353 1313.383301 1308.569214 1303.927979 1299.588745 1293.855225 1291.797119 1291.709595 1297.903442 1305.203613 1304.509277 1302.218018 1306.253662 1312.554565 1316.497925 1318.268677 1318.728027 1318.163818 1312.534546 1303.663696 1308.89856 1312.120239 1309.824707 1306.315552 1305.414185 1291.224121 1282.761353 1274.361206 1267.033569 1266.312744 1267.422607 1269.28833 1273.558594 1277.51001 1284.182373 1294.0177 1305.748413 1309.139648 1308.777588 1305.53894 1298.36438 1288.563721 1275.134644 1265.448975 1257.471802 1249.517334 1250.906616 1253.726807 1257.933594 1276.73645 1293.248169 1306.380737 1307.031494 1304.729248 1299.659058 1294.493164 1291.970459 1290.959595 1290.644287 1290.242065 1289.520752 1288.645386 1287.614746 1286.392578 1285.15332 1283.574463 1281.733276 1278.678833 1273.521606 1272.707642 1272.027466 1270.343018 1259.331665 1254.062988 1257.605957 1264.71582 1262.155884 1260.267212 1270.448853 1275.858032 1277.064697 1275.958618 1268.564331 1253.11145 1263.523315 1273.000732 1276.074707 1275.96582 1275.912476 1276.416992 1277.480469 1279.276001 1280.942871 1281.658936 1281.974609 1281.508057 1274.928833 1269.481323 1262.201172 1256.071167 1262.497314 1264.870361 1259.265259 1255.908081 1258.283203 1259.397339 1258.99939 1257.664185 1256.575439 1256.503662 1258.618896 1258.302612 1255.537354 1247.796875 1255.068726 1256.434082 1256.177246 1254.599365 1249.413086 1246.80957 1245.078369 1242.887085 1240.716553 1239.383545 1237.596924 1236.281372 1235.345215 1233.47998 1232.272949 1231.87207 1230.980469 1230.036255 1229.196045 1228.589111 1228.15979 1226.944946 1225.740601 1224.692383 1223.958618 1223.604858 1223.545166 1223.691406 1223.72937 1223.187744 1222.418579 1221.212769 1220.290527 1219.515869 1218.810669 1218.344849 1218.24292 1218.191772 1217.84082 1217.288818 1217.03418 1216.677246 1216.413696 1216.518921 1216.76355 1217.065186 1217.166992 1217.258911 1216.896606 1216.426514 1216.048584 1215.842041 1215.824707 1216.060425 1216.341064 1216.774292 1217.293579 1218.032104 1219.087769 1220.078369 1220.822266 1221.263672 1222.138794 1224.247803 1227.450195 1230.590088 1232.028564 1232.041626 1232.052856 1231.977539 1231.977539 1232.12793 1232.372314 1232.461792 1232.173462 1232.058472 1232.067871 1231.196289 1229.127441 1227.686279 1226.208374 1224.569702 1222.552002 1219.727539 1219.673706 1219.564941 1219.927246 1217.462402 1214.603882 1212.310059 1209.567383 1207.150757 1206.295288 1210.763428 1218.060547 1218.042114 1206.297363 1197.307861 1191.702271 1191.364624 1194.957153 1201.120361 1205.809204 1215.086182 1226.369141 1230.195435 1234.529541 1230.327515 1236.5979 1242.077515 1245.287842 1251.331787 1249.761475 1230.333862 1220.245483 1217.040649 1200.030396 1180.733643 1163.401245 1156.304077 1164.047852 1180.090576 1189.818604 1201.272461 1210.942871 1212.999023 1205.379639 1209.294678 1213.313477 1235.068604 1239.826904 1229.934326 1225.845825 1215.058838 1206.280151 1194.684326 1179.846313 1162.234253 1145.234131 1140.678101 1149.227417 1165.288818 1182.533203 1214.837402 1238.439941 1253.359741 +1354.315308 1361.658325 1372.680176 1387.478149 1409.045532 1433.242188 1463.006714 1475.416748 1486.707764 1501.0354 1521.850342 1532.28894 1542.28064 1555.232666 1564.790283 1573.839966 1581.098511 1589.445068 1598.192017 1604.889526 1610.745728 1614.77771 1618.322021 1619.126221 1619.978271 1623.767578 1627.314819 1629.461182 1631.021851 1631.151123 1629.739136 1627.659302 1625.176636 1622.332886 1619.669189 1615.833862 1612.290771 1607.265503 1602.01123 1597.439453 1596.006714 1595.180786 1594.067261 1592.268066 1590.084717 1588.310425 1585.537964 1576.374878 1570.500122 1563.393311 1556.581787 1551.030029 1543.272583 1530.228638 1519.484619 1512.749756 1502.650757 1490.752808 1483.675659 1477.440918 1473.190674 1468.644531 1463.43811 1452.94751 1449.19812 1451.538086 1454.455811 1461.739136 1464.532471 1462.871094 1458.625488 1453.599243 1445.277344 1437.704956 1430.059082 1431.158569 1432.996704 1433.821289 1435.170288 1437.814941 1443.605225 1451.696289 1453.93042 1446.598389 1437.536743 1421.097534 1406.040894 1394.038208 1384.402344 1377.307861 1372.08374 1367.81897 1364.67981 1364.507202 1363.030884 1356.776489 1352.537842 1351.896973 1351.51416 1348.662842 1351.851196 1367.023193 1380.495361 1386.439087 1393.751465 1399.485718 1416.418213 1422.294434 1420.51416 1417.631592 1412.52124 1405.609253 1399.706055 1393.961304 1388.828613 1382.387329 1372.979736 1362.714233 1355.736694 1352.164551 1349.385376 1346.641602 1344.413574 1342.516479 1333.885498 1323.416138 1332.133667 1340.185547 1346.510498 1349.10498 1349.242798 1346.945679 1341.550903 1339.391479 1340.70874 1340.033081 1332.286377 1327.674805 1327.730469 1333.236328 1339.584595 1344.584839 1351.983887 1360.044922 1364.837769 1370.219727 1373.577637 1371.256714 1365.156616 1359.636963 1355.870361 1348.790161 1343.065063 1336.171631 1327.359497 1327.880981 1334.415894 1343.210449 1351.568604 1359.317993 1367.776855 1375.582031 1378.242065 1379.186401 1381.401367 1384.192383 1388.187378 1391.11499 1397.263306 1401.926636 1402.56311 1401.427734 1398.254395 1390.971802 1382.948486 1376.792847 1370.823486 1362.418823 1363.052612 1372.075439 1385.005981 1405.230591 1416.261475 1426.462891 1437.165649 1448.450439 1457.681274 1467.070435 1475.679932 1477.158081 1477.618408 1475.782104 1476.62915 1477.383667 1479.884521 1485.563477 1488.292969 1489.326904 1489.252319 1488.924927 1487.762695 1484.503296 1481.290771 1479.215332 1476.773193 1473.808105 1470.279663 1466.601685 1458.248413 1449.779541 1448.508179 1448.003662 1449.29834 1449.314087 1448.590088 1447.386475 1445.530762 1443.08667 1441.240112 1440.412598 1438.158081 1434.387207 1430.25647 1428.085449 1425.881226 1421.579834 1417.164185 1413.993286 1412.034424 1411.796631 1415.029907 1427.316284 1432.042969 1434.232788 1433.784546 1432.502319 1431.584106 1433.135254 1433.88147 1433.121826 1432.887085 1431.96521 1423.0896 1405.964478 1395.552002 1387.121582 1380.071655 1371.623901 1362.858276 1352.813354 1345.306763 1336.525146 1328.324829 1328.447021 1328.495117 1326.996948 1326.503662 1319.458496 1308.571289 1300.525146 1303.710083 1313.501953 1323.719238 1331.95105 1338.557861 1351.67749 1361.488159 1365.019165 1354.354248 1351.237549 1346.611816 1339.282349 1332.215332 1325.718506 1331.171021 1336.798218 1342.930908 1355.647705 1359.124023 1359.137451 1359.051025 1360.559082 1363.172852 1367.14978 1370.48877 1373.814819 1376.803833 1379.725708 1380.697876 1377.177612 1375.498535 1379.135864 1379.128662 1377.259644 1380.60144 1385.044434 1388.687012 1389.83374 1391.224609 1394.342163 1395.545288 1396.661987 1398.000732 1396.99292 1393.775513 1387.702393 1376.89209 1368.051514 1361.688721 1347.114868 1354.724854 1365.292603 1374.895508 1382.596313 1389.365356 1400.518921 1408.871704 1415.456665 1419.507812 1420.55127 1414.368164 1404.25354 1407.45874 1419.502441 1423.364868 1424.735962 1422.265259 1417.282227 1411.710571 1404.366333 1392.137085 1382.956299 1373.04541 1361.579102 1348.195557 1335.101196 1323.420288 1338.560791 1347.39856 1352.424438 1357.497192 1360.535034 1366.880493 1377.120972 1376.001953 1370.299927 1363.024658 1356.472046 1355.242188 1344.94104 1336.036743 1324.567383 1314.197388 1306.848022 1303.182373 1299.991455 1296.322021 1293.118042 1292.481201 1302.955322 1307.790771 1307.505005 1304.02356 1306.453735 1317.327026 1319.584106 1320.520264 1320.751953 1319.934082 1318.001831 1313.237183 1314.587158 1316.519165 1315.669312 1310.270996 1302.238647 1289.493164 1281.49939 1272.711914 1266.765869 1269.428345 1271.640991 1274.316284 1277.14502 1278.555664 1281.478638 1291.938721 1303.421021 1308.859009 1309.564941 1308.301392 1303.220337 1294.67749 1281.463257 1269.32312 1261.227661 1252.940308 1251.195679 1254.101196 1260.227173 1271.353271 1285.457275 1300.171875 1306.439453 1303.287964 1298.81958 1293.012085 1291.898926 1291.087524 1290.576904 1290.026245 1289.322021 1288.090332 1286.751709 1285.36377 1283.996094 1282.910645 1281.47168 1274.767334 1268.460571 1268.934937 1268.973022 1264.91687 1258.735229 1257.307129 1267.918335 1273.348267 1272.305298 1266.428833 1273.492554 1281.313965 1281.105713 1279.402954 1269.418213 1254.379395 1267.900635 1279.398438 1281.293823 1280.373413 1279.89978 1280.253418 1281.293335 1281.918457 1282.629517 1282.750977 1282.409302 1281.200684 1276.307373 1271.280396 1262.198608 1256.488403 1270.401978 1267.32666 1257.498535 1257.211792 1260.191895 1261.577026 1261.161499 1260.080566 1258.864746 1258.974487 1259.369385 1258.427612 1256.116577 1257.06897 1258.713867 1258.94043 1258.260742 1256.829468 1251.06604 1248.825806 1246.497192 1243.752319 1242.682739 1242.36377 1241.272827 1240.237305 1239.786133 1238.057129 1236.248169 1234.981934 1233.442993 1231.748291 1231.111816 1230.491333 1230.470581 1228.987915 1227.149048 1226.179932 1226.223877 1226.36731 1226.35437 1226.264648 1225.844727 1225.005127 1224.032227 1222.920288 1221.774536 1220.851807 1219.747925 1219.053955 1219.679443 1219.738159 1219.046875 1218.648193 1218.403442 1217.85376 1217.472046 1217.489502 1217.978516 1218.751465 1218.954956 1218.882446 1218.470703 1217.669434 1216.941895 1216.482544 1216.255249 1216.239746 1216.37793 1216.618408 1217.121948 1217.734619 1218.454956 1219.436401 1219.860107 1220.146362 1220.885132 1223.936768 1228.032227 1232.013672 1232.565308 1232.372314 1232.254883 1232.16748 1232.259888 1232.560425 1232.723389 1232.864014 1232.895508 1232.691528 1232.506592 1232.062622 1230.679688 1228.247925 1226.056396 1224.185791 1222.657104 1221.422607 1220.793457 1220.497192 1219.984375 1217.665894 1214.800415 1212.52478 1209.609497 1206.974121 1214.512695 1222.459717 1226.26355 1226.223877 1217.655762 1206.883301 1195.836914 1189.714233 1187.728271 1192.045532 1195.29834 1207.813477 1212.227417 1219.147339 1219.210571 1212.69397 1219.504028 1224.329346 1226.774048 1243.585449 1246.324951 1232.229248 1211.941406 1207.031982 1198.024536 1180.915894 1162.816162 1152.720947 1153.180176 1161.384644 1173.820923 1194.11731 1200.493042 1196.651855 1186.295654 1193.052368 1201.509521 1221.928467 1227.125977 1205.120972 1199.900024 1192.621582 1183.696777 1171.509277 1155.394043 1144.475464 1141.55603 1144.703003 1161.623413 1184.7323 1206.64978 1221.53772 1229.413574 1242.898071 +1351.021729 1369.642822 1387.515991 1402.44812 1419.322754 1437.094482 1461.276245 1467.533325 1469.902466 1483.269409 1503.984497 1515.482056 1528.002197 1544.176392 1557.114502 1569.546753 1580.432861 1591.329834 1601.922974 1609.7771 1615.954224 1621.644043 1626.32373 1628.335571 1629.138184 1631.117798 1634.073364 1637.244507 1639.685303 1639.815308 1637.81897 1636.016113 1634.486206 1632.066406 1626.458862 1622.172241 1619.47522 1613.559814 1607.896851 1603.303223 1600.274048 1598.572144 1596.5448 1593.712036 1588.872925 1585.441162 1579.209473 1571.23645 1566.859985 1560.671265 1549.710327 1542.378662 1533.014526 1520.838501 1514.704468 1506.894409 1496.701294 1488.738403 1480.977051 1475.661743 1472.841675 1470.80481 1466.976929 1459.183838 1456.266724 1463.161865 1465.403687 1466.652466 1467.993042 1465.057495 1459.316284 1452.907837 1445.348511 1439.601196 1441.168457 1439.377686 1436.91748 1438.451294 1439.155396 1440.701416 1444.038818 1449.776855 1446.497314 1437.770996 1421.409668 1402.926514 1392.244873 1383.371338 1376.074219 1370.126099 1367.702393 1363.911621 1360.863647 1359.212891 1356.640015 1355.415405 1357.276123 1356.984375 1354.778687 1359.230835 1364.713379 1374.674683 1387.206177 1394.250488 1407.835083 1420.30835 1428.3396 1424.101196 1418.015747 1411.528442 1406.173218 1400.946533 1395.548828 1390.669922 1384.056274 1377.618652 1369.146729 1361.12915 1354.80188 1351.495605 1348.881836 1346.408936 1344.053711 1339.303223 1324.452637 1330.283813 1341.642578 1346.146973 1350.2948 1352.878418 1354.260254 1351.625244 1346.191772 1345.965698 1347.832764 1347.230713 1341.170166 1337.222778 1333.140747 1340.369507 1349.026489 1356.481934 1364.290283 1369.295654 1373.84314 1379.581787 1381.806885 1379.923584 1376.913574 1371.675293 1366.004272 1361.2677 1357.578125 1352.455811 1341.458618 1329.284912 1328.923706 1338.203491 1345.467163 1352.077393 1358.598633 1365.908569 1369.921021 1373.752441 1377.381104 1379.498047 1387.80481 1394.717896 1403.107422 1407.960693 1408.964355 1408.163086 1406.5625 1402.807373 1392.237915 1383.358398 1375.720947 1367.986328 1361.388794 1369.709473 1379.757202 1400.626587 1414.19165 1424.930542 1436.149536 1446.416382 1455.970337 1464.525879 1470.878418 1473.653442 1473.466675 1471.705322 1471.395386 1473.279297 1476.23877 1482.22644 1489.741699 1490.320923 1490.510132 1490.178345 1487.015137 1481.889648 1478.804688 1476.661865 1473.064697 1469.967529 1468.273926 1465.172729 1456.211304 1452.036133 1453.667236 1455.950806 1456.428955 1456.582397 1455.499023 1453.753906 1451.20166 1448.062134 1445.616333 1442.774048 1438.781128 1431.589111 1425.920898 1424.480347 1421.838501 1415.881836 1414.128174 1413.599854 1412.382812 1411.890259 1417.051025 1428.227783 1434.750366 1439.284058 1438.761841 1437.279907 1440.044067 1441.736084 1441.183838 1438.078979 1434.685059 1429.63269 1414.136841 1400.926636 1391.703003 1383.466187 1376.136963 1366.831421 1359.139404 1351.252319 1342.203125 1332.91272 1332.525513 1334.230835 1334.780029 1334.178833 1332.466064 1324.287964 1311.186401 1301.762085 1304.078003 1311.290405 1318.77832 1327.860474 1335.688599 1343.022827 1356.426636 1363.740112 1365.500122 1358.942993 1353.915771 1347.83313 1342.933228 1334.189209 1328.017334 1330.945557 1335.736084 1339.40332 1346.868896 1353.589722 1355.112305 1355.666626 1356.778442 1361.798706 1367.263428 1373.571167 1378.885254 1382.129517 1385.31958 1387.023804 1385.515991 1384.413574 1384.974243 1384.892334 1386.611328 1390.156494 1393.946289 1396.234863 1398.771606 1401.12439 1402.067749 1402.866577 1403.172485 1401.083008 1396.692383 1389.287964 1381.785645 1375.006592 1365.657593 1353.019409 1353.416748 1364.227783 1374.076172 1382.638062 1391.569336 1403.519897 1409.087158 1414.659424 1420.334839 1426.388306 1424.947144 1413.830811 1413.925171 1421.796509 1426.766724 1428.293701 1424.960449 1419.017822 1412.48291 1402.889038 1391.72229 1382.466309 1372.155151 1360.215332 1344.368408 1327.932983 1342.47583 1348.458862 1352.852295 1359.892944 1365.576782 1371.550537 1383.205933 1387.911987 1379.732178 1372.990234 1367.532104 1366.638306 1358.145386 1347.780762 1336.582642 1323.293823 1314.122192 1306.201538 1305.586426 1303.101318 1297.701294 1293.139771 1295.003296 1303.679688 1310.197998 1310.825439 1304.477173 1303.934448 1317.209351 1320.611938 1321.906738 1322.474854 1321.637817 1319.442627 1316.886475 1318.858887 1319.373657 1318.073608 1310.237915 1297.586304 1285.489258 1277.956421 1270.238647 1268.311035 1272.539307 1276.771729 1280.745972 1282.671997 1282.924194 1282.563965 1291.003296 1300.890015 1308.181152 1310.270508 1309.922852 1306.277222 1297.260864 1286.690918 1275.115234 1264.934326 1257.224609 1250.925049 1252.987183 1256.220703 1266.719971 1277.216919 1293.150635 1303.256592 1301.765259 1299.987427 1296.178711 1293.153442 1291.928101 1291.193481 1290.570801 1289.59436 1288.053467 1286.187256 1284.382935 1282.792236 1281.578125 1279.470825 1273.662231 1271.217529 1267.896606 1270.937134 1272.187988 1269.829224 1266.011108 1270.396851 1278.903809 1280.993042 1273.590942 1274.699707 1283.96106 1284.024048 1282.044434 1269.316895 1255.437012 1270.086304 1282.168335 1283.401733 1283.002808 1282.682617 1282.676514 1283.037842 1283.667847 1283.659058 1282.997559 1281.559082 1279.133911 1274.993652 1270.37439 1260.654053 1265.831665 1271.62561 1269.815674 1256.345703 1259.810791 1264.058716 1264.977295 1263.800781 1262.541626 1261.782715 1261.373535 1260.46875 1258.066528 1256.280029 1258.217896 1260.428955 1260.705566 1259.696899 1257.27124 1253.071533 1251.167603 1248.835815 1246.397217 1245.850098 1245.456055 1244.311279 1243.940552 1244.518677 1243.295288 1240.963379 1239.462524 1237.623169 1235.512329 1233.565674 1231.974121 1232.880127 1230.914062 1228.590698 1229.154907 1229.821045 1229.797485 1229.542236 1229.286743 1228.597656 1227.165161 1226.031128 1224.622925 1223.388062 1222.139526 1220.806396 1219.492065 1220.45874 1221.04834 1220.292969 1220.116943 1219.68335 1218.872192 1218.429077 1218.327759 1218.710938 1219.714233 1220.27356 1220.177246 1219.681885 1218.714722 1217.8479 1217.305664 1216.974976 1216.7677 1216.743774 1216.87439 1217.192505 1217.618652 1218.144653 1218.856323 1219.272705 1219.364258 1220.0896 1222.196411 1226.203491 1230.238159 1231.652222 1231.809814 1231.91394 1231.990723 1231.974243 1232.634888 1233.113281 1233.308716 1233.181885 1232.962891 1232.685791 1232.189819 1230.762817 1228.357666 1226.030029 1223.946045 1222.333618 1221.424316 1220.55542 1219.996948 1219.240601 1217.064575 1215.693237 1214.523438 1214.800537 1217.737671 1223.24353 1229.510376 1233.979736 1235.531738 1227.043213 1216.10437 1205.494141 1194.721558 1181.904297 1186.065308 1190.800537 1196.659302 1201.566772 1209.046997 1208.086304 1202.67041 1207.165649 1207.718384 1218.785645 1233.739502 1238.410645 1231.220337 1216.173706 1192.75415 1189.350464 1174.169189 1159.354126 1149.999146 1149.509033 1152.553711 1163.807495 1181.441772 1181.675293 1176.254761 1169.544189 1172.006226 1186.590576 1201.692139 1198.702026 1185.421265 1178.479126 1169.811646 1156.618286 1144.257568 1143.100098 1148.014771 1151.678345 1164.091064 1167.732056 1181.903564 1202.386963 1222.642944 1240.12085 1252.397827 +1359.980469 1377.164795 1398.079346 1416.203735 1431.982178 1447.378174 1458.923462 1456.21875 1451.543823 1470.765747 1484.692139 1497.137817 1514.215454 1534.548584 1549.510254 1561.943359 1578.231323 1591.192139 1603.084473 1612.509521 1619.146973 1627.931274 1635.23291 1638.569214 1641.144775 1643.412842 1646.645386 1649.449341 1650.948364 1650.64917 1647.867798 1644.626953 1641.93335 1638.996582 1633.697144 1629.215698 1626.393921 1622.359619 1615.051392 1609.677612 1605.490234 1602.129395 1599.553101 1593.332764 1585.148682 1581.925293 1575.769653 1569.797241 1564.277588 1555.553467 1543.015503 1529.911133 1520.026489 1513.944458 1509.670654 1502.228149 1491.67688 1485.356567 1479.468628 1475.241211 1476.500977 1476.817261 1471.346558 1463.62085 1466.761475 1470.706665 1472.952026 1473.570679 1472.144653 1467.00647 1460.703003 1451.649902 1449.49707 1447.647461 1446.586548 1446.706055 1445.591797 1447.820679 1446.256714 1442.894409 1440.65686 1434.856323 1428.929077 1415.385864 1398.310791 1385.99646 1375.695435 1368.382446 1362.598877 1361.5896 1360.569702 1358.590088 1356.832764 1357.84314 1359.96521 1361.095459 1365.100098 1365.612183 1362.740479 1365.429932 1378.901123 1384.090088 1392.047485 1401.424805 1419.258301 1429.52356 1428.264404 1415.934204 1401.712524 1398.217651 1396.524414 1393.174805 1389.12146 1382.767212 1377.589844 1371.807983 1364.859253 1358.282715 1353.387329 1350.474609 1348.014038 1345.637573 1343.580322 1338.762329 1324.187622 1341.355347 1346.800171 1350.58313 1354.081543 1357.831421 1359.438843 1355.19458 1352.535767 1352.422607 1355.337402 1356.099854 1352.334595 1348.299927 1342.645508 1341.450562 1350.696289 1366.181641 1372.539307 1377.605103 1380.662598 1385.169189 1387.196045 1386.96936 1385.837402 1379.780762 1374.039917 1370.019165 1367.167725 1362.191284 1354.875488 1341.364868 1330.477661 1334.414673 1340.248291 1345.618164 1350.363281 1353.282959 1362.769287 1368.996338 1375.53418 1382.018433 1390.41626 1398.96814 1407.829956 1415.054688 1415.532593 1413.994507 1411.713623 1409.413818 1403.562744 1392.3396 1382.717163 1374.006104 1364.333496 1365.453003 1376.783203 1395.5354 1409.848022 1421.130127 1429.806274 1436.899048 1442.318726 1451.838745 1459.605225 1464.265015 1464.774048 1462.849609 1463.797485 1467.835571 1472.668457 1478.492188 1484.731079 1485.315063 1484.52417 1482.131714 1476.934692 1474.593384 1473.226074 1470.924194 1466.390625 1464.315552 1465.918823 1463.912598 1460.953735 1459.42334 1461.381348 1462.700684 1463.600952 1464.068726 1463.950073 1462.204346 1457.274536 1451.900391 1448.343384 1443.547974 1437.881348 1428.967651 1425.735352 1424.804199 1423.343628 1419.281982 1417.60498 1416.095337 1413.869385 1412.743286 1417.575439 1428.093994 1436.127197 1442.721436 1445.383423 1444.753296 1446.384766 1447.597534 1445.59314 1440.643433 1433.334839 1422.276489 1408.062378 1395.219971 1385.27771 1377.043579 1368.591064 1361.44043 1353.573364 1349.382935 1342.042358 1342.967407 1345.158569 1341.783936 1342.274414 1342.275513 1335.794434 1323.84729 1313.14978 1306.025879 1303.304199 1310.215576 1319.266113 1329.407349 1340.140259 1346.525513 1352.112061 1363.539673 1368.035278 1367.322754 1360.369507 1353.690552 1347.876465 1343.462891 1336.832886 1334.74646 1339.855591 1339.350342 1340.749146 1342.50415 1345.076416 1347.173218 1349.457642 1353.4021 1361.829712 1370.959473 1379.276245 1384.017334 1389.352173 1393.230835 1392.067993 1389.372192 1391.27417 1392.257568 1391.648193 1395.510376 1399.762817 1401.282715 1405.390381 1407.252686 1407.949341 1408.105713 1407.814575 1405.534424 1401.312012 1393.458496 1386.291382 1378.155151 1365.793823 1353.908813 1354.646973 1362.696167 1372.763184 1382.351196 1391.782959 1402.580322 1407.812622 1412.833252 1419.201172 1426.188721 1429.397583 1429.354492 1422.7323 1425.252563 1429.051636 1428.958496 1425.682007 1419.375488 1412.364258 1403.377441 1391.018677 1380.982178 1369.322266 1355.167603 1336.24231 1343.059692 1351.996094 1356.271118 1360.396729 1369.482056 1380.848389 1389.132935 1393.98938 1386.56604 1377.446045 1370.618408 1367.449097 1361.020142 1349.422607 1338.134277 1329.536743 1318.230469 1315.002686 1314.065674 1309.386475 1304.785278 1299.723877 1294.080688 1298.401855 1304.541382 1313.943848 1316.206055 1312.018188 1306.897095 1311.212036 1320.465576 1323.72644 1324.652954 1323.998413 1322.577515 1321.595947 1321.060913 1320.197754 1317.109863 1307.35376 1291.327759 1285.137817 1278.793335 1271.235229 1270.112671 1275.313354 1280.848511 1288.437012 1292.64856 1290.505981 1289.205566 1290.551514 1298.232056 1306.656738 1311.450439 1311.734497 1308.43811 1300.057495 1289.647949 1280.455811 1267.742065 1259.65625 1251.681274 1252.721436 1254.772583 1261.144531 1271.420532 1283.277954 1296.308594 1301.143188 1302.687744 1300.36084 1297.036865 1294.575562 1292.624268 1291.613281 1290.274292 1288.126587 1285.57959 1283.339355 1281.575195 1280.56897 1280.865112 1281.937866 1278.677124 1277.933716 1282.619995 1282.840576 1281.837646 1267.705688 1273.217896 1282.34436 1284.400024 1282.646606 1280.053711 1284.001587 1285.087402 1282.512207 1272.146851 1264.065796 1270.991333 1282.639526 1284.715454 1285.135254 1285.085327 1285.015137 1285.198975 1285.20105 1284.527954 1283.11145 1279.896118 1277.479492 1273.700317 1269.177612 1268.543579 1270.574585 1271.17688 1269.670898 1255.964478 1262.518555 1268.921875 1268.226318 1266.245483 1264.957397 1263.951538 1263.357544 1262.199341 1258.629761 1256.633301 1260.56958 1262.908691 1262.824219 1261.067871 1256.953857 1255.31311 1253.207397 1251.791504 1250.587158 1249.751099 1248.84375 1247.973022 1247.410645 1247.399902 1246.605469 1244.909302 1244.41272 1242.9375 1239.894897 1237.782959 1236.059326 1234.71521 1231.709839 1231.895874 1233.577637 1233.031006 1233.08313 1232.199951 1231.968872 1231.143311 1229.636353 1228.200928 1226.767944 1225.35144 1223.984131 1222.353271 1220.92627 1221.65918 1222.175659 1221.854004 1221.561646 1220.86438 1219.856323 1219.446655 1219.299927 1219.064575 1219.990479 1220.938721 1220.97583 1220.24292 1219.38916 1218.643066 1218.172852 1217.848267 1217.544312 1217.449341 1217.38208 1217.441406 1217.665039 1218.116089 1218.516357 1218.856812 1219.131104 1219.482666 1220.774048 1223.98584 1226.578491 1228.496094 1229.240845 1230.045898 1231.039185 1231.820801 1232.781982 1233.448364 1233.468262 1233.352905 1233.18042 1232.765503 1231.891968 1230.28418 1228.024902 1225.576416 1223.516235 1221.718994 1220.596191 1219.586304 1218.887817 1217.964966 1217.16394 1216.352295 1217.134033 1220.255005 1224.571411 1229.705933 1236.611816 1243.046021 1248.801758 1237.856323 1223.425171 1210.837646 1199.369507 1184.738892 1182.177856 1185.516479 1189.784912 1194.769653 1199.011353 1198.269287 1193.365112 1194.283569 1200.30542 1211.319336 1219.008789 1228.994141 1226.140015 1215.991577 1191.906494 1175.842896 1164.449707 1155.677979 1150.612427 1155.044556 1149.216919 1155.533203 1163.649414 1162.343994 1156.61731 1152.387817 1154.949707 1162.78833 1170.864258 1172.393311 1164.804688 1153.038208 1145.937012 1142.842773 1145.540161 1155.242188 1161.495728 1163.804077 1174.204956 1188.632446 1190.002197 1192.465698 1211.879028 1236.340332 1256.684326 +1345.884888 1372.90625 1392.564331 1411.297729 1426.529663 1440.157104 1440.38501 1430.976196 1439.545166 1457.600464 1470.466797 1484.609741 1502.958252 1523.057129 1538.459351 1552.346436 1572.481201 1587.665161 1602.053955 1614.193481 1622.04248 1634.864502 1641.489258 1646.822266 1653.063599 1659.135376 1662.836914 1665.24939 1666.021851 1664.896484 1661.608032 1657.202393 1651.192139 1645.835327 1640.203857 1634.778687 1631.891357 1627.946167 1621.993286 1614.822998 1608.763062 1604.108154 1599.307861 1586.951416 1582.901489 1579.407471 1575.51123 1567.363037 1559.807373 1548.148438 1537.806519 1522.565308 1519.195923 1514.531494 1513.592651 1511.542969 1496.35376 1490.857788 1488.657104 1485.192993 1482.596436 1480.182495 1475.642212 1473.450439 1476.338257 1478.59314 1479.435059 1479.024048 1477.08374 1470.244385 1462.244019 1454.949463 1454.509888 1455.171265 1453.201172 1454.794678 1455.9104 1453.914185 1451.013794 1444.315308 1435.469604 1420.763428 1408.203979 1396.245239 1387.897095 1376.391968 1362.717407 1362.379272 1363.346802 1363.913452 1366.214111 1369.705322 1372.331543 1373.886719 1372.573608 1367.143433 1370.039795 1374.543457 1371.63269 1367.760376 1380.358521 1389.531372 1397.224976 1405.209839 1422.069458 1424.502197 1418.440186 1407.341309 1397.010864 1389.194702 1387.157715 1384.093628 1376.577148 1373.481079 1370.379395 1366.122314 1359.776978 1354.833008 1352.216553 1349.545044 1346.541016 1343.759766 1342.245728 1331.711914 1330.534302 1345.220459 1349.579346 1353.781494 1360.680298 1365.559692 1366.346436 1364.940674 1359.760498 1360.510132 1364.293579 1364.23645 1360.942017 1357.660278 1353.056152 1351.671509 1351.37854 1364.349121 1374.966309 1381.653076 1386.312744 1390.557007 1391.598999 1392.091553 1391.983276 1387.239624 1380.466431 1376.196045 1373.296631 1368.862061 1360.959717 1349.745605 1338.611084 1332.534912 1337.718994 1344.528564 1354.063965 1358.120972 1364.281982 1371.432617 1377.908447 1385.700195 1393.360474 1401.059326 1411.960815 1417.781982 1419.660645 1419.259766 1417.797607 1417.366699 1412.672485 1402.425659 1390.083862 1380.878418 1370.543091 1364.439819 1371.011841 1388.594482 1404.431641 1416.257568 1422.359131 1425.605957 1432.690796 1440.852783 1449.362549 1456.255859 1457.703247 1454.800903 1455.839233 1465.784058 1471.384521 1476.808105 1477.30249 1476.293335 1475.890747 1474.046509 1470.554321 1466.907471 1466.104736 1464.512207 1461.896851 1463.462402 1465.182129 1464.833496 1464.536743 1465.023071 1466.678345 1469.599609 1469.634766 1468.491943 1467.390747 1466.154907 1463.0625 1455.614502 1448.90686 1441.659302 1433.387939 1425.983643 1425.480347 1427.282104 1428.738892 1426.804443 1423.448364 1421.021851 1417.137329 1413.930054 1417.28772 1426.620117 1436.051758 1446.131958 1452.500854 1452.20166 1452.895264 1453.06189 1450.471802 1440.871704 1426.202515 1411.490112 1400.61377 1389.129761 1382.374634 1376.74585 1367.275757 1363.602783 1356.593994 1355.689453 1351.858154 1350.339355 1353.491699 1353.738281 1350.70752 1345.366089 1335.891479 1322.02417 1314.20105 1308.603638 1303.902832 1309.684082 1321.037598 1330.710693 1342.854614 1352.168457 1358.324585 1364.384155 1368.388672 1368.851196 1364.542358 1355.650757 1351.079346 1347.310181 1342.725098 1341.400391 1345.84021 1348.806519 1350.45752 1352.824951 1354.126099 1354.712524 1354.905518 1354.148315 1354.696899 1365.515625 1374.046753 1381.37439 1390.149902 1395.620483 1399.047485 1398.807129 1400.036865 1401.154541 1401.348877 1403.699585 1407.494263 1410.084595 1411.93811 1413.919922 1413.237305 1412.652222 1412.881348 1410.193359 1404.17334 1396.15979 1386.540161 1375.523193 1364.716309 1360.965698 1362.862549 1364.04126 1367.508179 1380.795288 1389.745483 1399.13855 1405.500732 1410.594849 1415.963135 1421.997314 1427.2677 1428.976562 1428.497559 1428.635864 1429.759888 1429.032715 1424.568848 1417.681519 1409.872192 1400.260132 1387.271851 1376.162476 1363.625244 1344.639771 1339.129883 1352.048828 1358.304932 1362.210083 1367.027466 1381.273193 1390.477783 1393.096802 1383.500732 1373.108643 1363.730713 1359.591919 1355.356689 1345.680542 1335.337524 1329.246094 1322.282227 1318.059692 1319.848999 1319.008545 1312.199097 1305.033447 1304.944336 1300.843994 1304.027832 1310.650391 1318.523315 1320.620728 1318.134155 1317.289551 1317.263428 1318.910034 1326.17041 1327.326904 1326.760498 1326.104004 1324.407349 1322.477783 1320.139038 1314.448364 1303.020386 1290.276855 1284.448364 1278.598755 1271.677002 1271.307007 1277.315552 1284.241577 1295.435791 1309.900635 1305.269897 1298.004272 1290.474609 1296.213989 1306.343384 1314.166016 1314.777954 1310.703491 1303.21582 1292.120117 1283.956177 1271.039795 1261.413818 1253.459961 1252.854614 1254.038452 1256.970703 1266.623901 1277.642578 1292.046753 1302.412842 1305.262695 1304.851318 1303.0271 1299.366699 1295.806763 1293.282593 1291.264526 1288.320068 1285.045288 1282.379517 1280.616821 1280.749268 1282.826904 1282.463257 1279.690796 1282.178467 1285.383179 1285.50061 1283.350098 1269.063477 1275.636597 1284.970215 1288.223877 1287.490234 1286.290283 1287.200806 1287.403809 1285.06311 1280.242432 1268.54187 1270.566406 1282.146973 1285.709961 1286.96875 1287.271851 1287.327026 1287.121826 1286.709839 1285.627686 1284.005981 1282.003906 1279.33313 1272.792236 1268.284058 1269.96228 1271.834229 1271.096802 1267.072632 1254.920288 1264.35376 1269.954956 1269.823853 1268.185791 1266.37439 1265.832275 1265.422363 1264.557129 1263.016113 1262.246704 1264.705811 1266.687988 1265.609253 1262.977173 1260.296875 1257.779663 1255.552124 1254.454956 1254.252808 1253.928833 1253.084595 1251.850098 1250.829712 1250.560791 1249.694824 1248.950928 1247.93103 1246.392578 1244.130005 1242.014404 1240.297363 1239.894409 1233.255981 1235.007935 1238.962769 1237.974487 1236.589111 1235.416138 1234.361572 1232.967773 1231.065796 1230.341309 1228.879395 1227.335571 1226.07605 1224.945068 1223.968628 1223.822754 1223.730957 1223.285645 1222.796753 1222.013062 1221.011963 1220.722046 1220.570312 1220.032837 1220.219727 1221.376099 1221.477661 1220.890503 1219.699463 1219.554443 1219.357056 1218.977661 1218.580688 1218.242798 1218.015747 1217.991943 1218.078491 1218.276733 1218.517578 1218.75708 1218.911987 1218.849854 1219.278931 1221.56604 1222.92041 1225.292114 1227.590942 1229.711182 1232.103394 1232.761353 1233.27771 1233.458862 1233.542725 1233.43335 1233.136841 1232.244141 1230.951416 1229.409302 1227.345215 1225.178467 1223.024292 1220.946289 1219.677246 1219.015625 1218.396484 1217.814209 1217.119751 1218.083618 1221.165283 1225.469116 1230.085571 1237.226685 1245.371704 1255.061523 1259.349243 1244.693115 1226.808228 1215.947266 1205.115112 1195.749023 1182.494263 1182.089111 1185.296265 1188.077881 1190.207153 1190.300903 1189.083984 1189.286377 1192.113892 1196.571289 1210.685669 1221.641846 1219.927612 1211.753052 1194.430664 1183.135498 1172.139893 1160.629272 1151.567871 1163.435669 1155.705322 1148.761719 1149.420654 1146.787354 1146.140991 1145.902222 1145.233276 1144.585205 1145.397095 1146.76709 1144.370361 1143.65979 1145.300903 1152.505249 1163.302979 1176.542847 1182.477295 1184.718262 1184.134033 1197.043701 1208.22583 1214.520386 1209.122437 1219.781128 1238.011963 +1331.056885 1348.018799 1368.057007 1398.3125 1423.492676 1431.259766 1428.164673 1412.366089 1423.444824 1429.491211 1459.612793 1479.242676 1495.087158 1506.290039 1521.66394 1537.517334 1560.932861 1580.896606 1594.94812 1614.080322 1625.536133 1639.205566 1647.3479 1655.877441 1662.920898 1667.980469 1672.028076 1675.825928 1677.701416 1677.328735 1675.260864 1674.364258 1669.394531 1658.93335 1650.004761 1645.894043 1640.150757 1634.110718 1627.464844 1619.356567 1611.212524 1602.540527 1592.864868 1583.913696 1580.373535 1577.695435 1572.802246 1560.375977 1549.561157 1540.120239 1523.073364 1521.871338 1521.789917 1521.425537 1519.910767 1516.401367 1509.941162 1504.931885 1499.283325 1493.620239 1488.243042 1485.483276 1484.0177 1484.823975 1486.703491 1487.520752 1485.731567 1483.583862 1480.047485 1474.502686 1469.445923 1466.358521 1462.150024 1461.911499 1463.890381 1464.057861 1459.33252 1455.265869 1449.08606 1438.956909 1427.139648 1415.945923 1401.927368 1389.157593 1382.668091 1372.954956 1363.536133 1365.486572 1370.407104 1374.811279 1379.220703 1383.249512 1385.648071 1385.101318 1383.001465 1378.339478 1376.551514 1381.538818 1381.22229 1379.537476 1376.892944 1392.282959 1403.74939 1412.540283 1418.85083 1417.307251 1410.688965 1402.693237 1394.90332 1389.046997 1383.555176 1379.891357 1374.208984 1365.983276 1361.686523 1354.182739 1353.196777 1352.047607 1350.482666 1348.123535 1345.019897 1340.932617 1336.351074 1327.20459 1340.940674 1347.015625 1351.199707 1358.88269 1367.741943 1370.232178 1371.309448 1370.490356 1368.842285 1369.395752 1370.607422 1370.281982 1368.937622 1365.905396 1363.435791 1361.936035 1361.359375 1363.010986 1368.939697 1377.386353 1387.182007 1392.771484 1393.554321 1393.815674 1393.872314 1392.517212 1391.533569 1385.177612 1379.048828 1375.189697 1367.953491 1357.648071 1346.897339 1335.388428 1337.069092 1345.47168 1357.047241 1364.725098 1375.040894 1380.675903 1387.199585 1392.316528 1396.746948 1402.010132 1414.098145 1419.690308 1423.071777 1424.138672 1425.945068 1425.577881 1419.893433 1409.759644 1396.913208 1384.992554 1375.206909 1369.485718 1367.595947 1380.237305 1394.916504 1407.348755 1413.442139 1415.950684 1422.06189 1429.412231 1441.741577 1452.129883 1452.632812 1449.009277 1457.237061 1463.866699 1466.885376 1468.471924 1465.80603 1465.972412 1467.937988 1467.723877 1465.226074 1461.010864 1459.74707 1459.291504 1458.911011 1462.101562 1465.396362 1466.307007 1466.863037 1468.737183 1472.389771 1476.612915 1474.699097 1472.282837 1469.427734 1466.929077 1463.315552 1455.333984 1446.321655 1436.5354 1427.036255 1426.591553 1432.796875 1438.490234 1437.169189 1432.491455 1430.867188 1428.451904 1423.555298 1417.982544 1416.517578 1424.416992 1433.556274 1444.269531 1453.664307 1455.057861 1455.163818 1455.308716 1453.101807 1438.579468 1424.860107 1412.112061 1403.495483 1394.811401 1385.882202 1379.079834 1376.725952 1368.015991 1364.906128 1361.128296 1356.606079 1356.88916 1359.512695 1358.560913 1355.471802 1346.966797 1336.231934 1325.325195 1316.740356 1309.911865 1304.606567 1311.072266 1319.618042 1327.721069 1338.351318 1344.233765 1356.920532 1365.726807 1369.065674 1370.390381 1368.415283 1362.082886 1355.550415 1351.298218 1347.888306 1347.161499 1350.226196 1354.655151 1356.920898 1358.635376 1359.384766 1360.045288 1360.621338 1361.321533 1362.053101 1361.591553 1366.53772 1375.817017 1388.776245 1401.298096 1405.326172 1407.913086 1412.208374 1413.099487 1410.641602 1411.47522 1417.131714 1423.951538 1426.018921 1426.661499 1425.934814 1422.209839 1418.227539 1414.660034 1405.769043 1395.850464 1383.463013 1369.202515 1366.566772 1369.823853 1370.875977 1368.990112 1365.88147 1378.153931 1385.679688 1394.471069 1402.525879 1407.236328 1412.069824 1416.873535 1421.843872 1425.489258 1428.151001 1429.602173 1429.879395 1429.145752 1424.046265 1416.555176 1405.824463 1393.891479 1383.638428 1373.891479 1362.094849 1340.210205 1346.986694 1358.220703 1364.028931 1371.640747 1383.603394 1391.977173 1392.199707 1379.207031 1369.660278 1360.515259 1352.548218 1343.841064 1340.051392 1337.379517 1330.608887 1330.221558 1325.943848 1328.552734 1329.101562 1317.190063 1313.420898 1310.223022 1306.92041 1304.05835 1307.264893 1314.613647 1322.277344 1325.633423 1323.096558 1322.230347 1322.320435 1325.094727 1329.000732 1330.035889 1329.577881 1328.428955 1326.603027 1322.960571 1319.304321 1312.66687 1301.175537 1290.189453 1282.716431 1276.223022 1271.752686 1272.713989 1278.392456 1285.915649 1297.157104 1315.792603 1319.450073 1311.607056 1302.386841 1294.073608 1308.571411 1318.084106 1318.111938 1313.770142 1306.551514 1293.742432 1285.470825 1272.932739 1263.511475 1256.671021 1253.574219 1253.853882 1255.714478 1263.983276 1273.525879 1285.006348 1299.071777 1308.078125 1307.911011 1306.85144 1304.816162 1300.0625 1295.870239 1292.25061 1289.110718 1284.584229 1280.995117 1280.432495 1283.204468 1285.018555 1282.988403 1280.531494 1285.179688 1288.37146 1288.34729 1284.859497 1275.193726 1279.12793 1289.484619 1292.750977 1292.383789 1290.724365 1290.675415 1291.030273 1289.215332 1284.148682 1274.572021 1270.491943 1283.358154 1287.323486 1288.995728 1289.50647 1289.5271 1289.239624 1288.392212 1287.03064 1285.289307 1283.297852 1280.831787 1274.483032 1272.636597 1274.068237 1272.973145 1269.177002 1267.585327 1269.351929 1268.057007 1270.708008 1270.835205 1268.443726 1267.728149 1268.319214 1267.690308 1267.577148 1267.516113 1266.051636 1268.095215 1269.140015 1268.060669 1266.01709 1264.060059 1260.295654 1257.615845 1256.686768 1257.597656 1257.712036 1256.741699 1254.849609 1253.629028 1254.277222 1253.919678 1252.819214 1251.198975 1249.290771 1247.359985 1245.192017 1242.805908 1245.274536 1238.42334 1238.032471 1245.144531 1242.807739 1240.704712 1239.115723 1237.077637 1235.234131 1233.647827 1232.353027 1230.855835 1229.13623 1228.318115 1227.223755 1226.371826 1225.910767 1225.419067 1224.868042 1224.128662 1223.407593 1222.788086 1222.324341 1221.93457 1221.506714 1221.685059 1222.067627 1222.163208 1221.658936 1220.865845 1220.562378 1220.35083 1219.832642 1219.485229 1219.466064 1219.136108 1218.661377 1218.526123 1218.596313 1218.744019 1218.875854 1218.921509 1218.839355 1218.849243 1219.185913 1219.533569 1222.989502 1225.912354 1229.19458 1232.189575 1233.032471 1233.148926 1233.287964 1233.253296 1233.160767 1232.845947 1231.772705 1230.125244 1228.593872 1226.969482 1225.009033 1222.971802 1220.904785 1219.458496 1218.852661 1218.364258 1217.93457 1218.545044 1223.057251 1228.301514 1232.96106 1238.539673 1247.048828 1256.317871 1263.31189 1264.926758 1251.603271 1231.223633 1220.471558 1207.76416 1193.526001 1185.158936 1181.040283 1182.031616 1182.493652 1182.494019 1183.264404 1184.16333 1184.467407 1183.274292 1187.079346 1197.939819 1209.942017 1212.886475 1206.525879 1194.020264 1185.151001 1174.897583 1162.751221 1152.445557 1173.322876 1176.187378 1165.41748 1162.399414 1165.01123 1163.958008 1158.078857 1151.249268 1147.823486 1148.64502 1150.950562 1151.789429 1148.089844 1154.967773 1170.014282 1184.928711 1198.035522 1204.15979 1205.154297 1204.513062 1204.4375 1217.229248 1233.494019 1233.59082 1230.045776 1231.30542 +1337.415161 1336.68335 1363.581909 1390.697754 1409.759766 1410.723145 1404.67334 1402.127075 1415.264038 1430.831177 1451.748779 1470.412354 1485.028687 1495.317871 1507.217529 1522.272583 1549.126709 1572.415894 1589.618896 1608.188965 1627.935669 1641.960083 1654.600464 1665.30542 1673.707397 1677.428467 1681.083252 1686.03479 1689.091675 1688.438965 1685.442261 1681.324951 1677.874878 1672.110596 1665.712036 1659.150391 1650.025513 1642.212646 1633.945435 1623.718994 1613.396606 1599.359497 1585.82959 1581.573486 1578.081665 1575.980347 1572.076294 1563.126587 1553.01123 1546.102295 1533.746704 1529.587769 1530.828491 1529.497314 1527.084473 1524.496094 1520.623779 1516.965576 1512.275391 1502.942139 1497.26355 1494.629639 1494.299072 1496.60022 1497.584595 1496.699341 1493.28894 1488.683838 1486.396606 1481.8302 1479.151733 1477.441528 1475.91748 1471.586548 1468.563599 1464.645996 1456.692871 1448.77002 1439.5271 1428.322021 1419.07666 1407.988647 1397.59729 1388.691528 1378.398804 1369.898804 1365.062744 1373.097412 1380.264771 1383.451172 1387.824219 1392.196655 1394.786255 1392.977295 1389.056763 1385.122314 1380.897095 1385.420654 1388.319946 1388.516235 1384.252441 1388.750244 1402.502808 1411.236084 1415.303589 1410.369263 1403.601074 1397.575928 1391.747192 1387.412109 1382.171143 1377.103638 1373.600708 1368.255493 1361.244263 1354.14209 1352.364624 1351.457764 1350.103149 1347.807739 1345.0802 1342.974609 1334.281616 1327.647095 1344.708008 1349.122681 1353.719849 1364.650513 1370.55957 1374.03833 1375.521851 1376.291138 1376.454712 1375.940063 1375.245239 1374.708618 1374.427979 1373.362915 1372.302246 1370.908203 1370.716309 1369.41748 1370.149414 1376.074951 1384.123169 1392.038696 1394.371704 1394.667358 1394.598022 1393.318604 1392.277954 1389.127686 1383.287598 1380.26416 1374.043335 1361.740356 1350.626465 1341.498291 1335.717407 1345.801147 1358.604736 1371.573975 1384.435181 1392.081543 1396.973755 1400.991333 1403.037354 1408.439209 1416.379761 1422.640259 1427.046021 1428.42334 1430.140137 1430.049805 1426.431641 1415.672119 1401.9823 1389.407715 1379.429443 1373.753296 1368.953979 1369.974609 1382.097534 1393.786011 1401.800049 1405.528442 1410.47998 1422.382202 1434.73291 1442.411011 1443.200684 1444.27417 1453.675171 1457.438599 1459.524292 1459.251099 1456.848145 1456.718506 1460.254883 1461.643066 1458.911865 1455.703979 1453.483398 1454.164917 1455.269775 1459.615723 1463.616577 1466.185913 1467.285767 1469.342041 1472.455811 1475.37439 1476.414185 1474.838501 1469.256226 1463.636108 1458.891479 1452.008301 1441.152344 1434.849365 1430.992554 1436.40918 1442.162842 1444.35498 1442.71106 1441.570923 1440.155273 1434.902954 1428.317017 1424.38269 1423.262451 1424.277222 1431.225342 1439.828003 1451.453003 1455.506348 1456.443726 1456.521362 1452.217773 1436.890137 1425.537598 1412.771851 1412.71106 1398.605103 1388.802979 1388.55249 1379.581421 1375.843384 1371.663208 1365.449829 1364.233032 1365.129517 1365.422729 1363.321655 1356.666504 1347.079712 1337.309448 1328.119995 1316.383789 1311.430908 1306.219238 1312.455933 1323.857788 1334.132568 1343.03125 1350.122803 1354.182129 1362.661255 1366.124268 1374.39856 1373.498047 1367.903809 1361.457153 1355.336792 1352.019043 1351.582642 1354.089722 1357.966675 1361.856689 1364.272705 1364.654297 1364.488281 1366.064697 1368.770264 1371.282471 1370.072021 1367.615967 1373.238647 1386.254883 1399.208618 1407.37207 1414.094116 1418.819092 1420.906738 1418.649902 1419.723999 1428.612061 1433.849365 1436.702759 1432.713623 1427.716675 1424.581665 1418.640625 1414.163452 1402.782471 1393.168213 1377.234497 1368.004028 1371.458984 1378.610229 1379.285278 1378.210449 1376.186279 1375.123657 1378.225952 1388.159912 1395.824097 1403.678955 1407.387207 1412.016724 1416.562256 1419.761963 1422.21167 1425.687988 1428.845581 1429.31189 1425.870117 1417.515503 1405.525635 1395.043945 1383.681641 1373.262573 1361.113281 1339.703735 1355.25769 1364.193604 1375.259766 1385.212036 1393.526855 1392.607178 1378.225464 1368.783691 1359.289185 1351.881836 1349.003296 1345.144531 1343.555908 1344.241333 1339.528198 1339.62915 1342.777222 1342.92395 1331.001343 1317.719604 1316.262817 1315.032104 1307.731445 1304.281738 1309.513794 1317.120605 1328.498413 1330.910522 1327.725098 1327.552124 1326.558105 1327.920654 1331.962402 1332.650391 1332.160645 1330.727905 1327.886841 1320.704956 1315.925049 1308.646362 1298.675781 1288.678833 1280.305908 1272.623779 1272.858521 1275.770752 1279.358521 1288.135864 1299.366089 1315.595581 1321.200317 1319.142334 1309.999756 1303.40564 1317.724243 1321.717529 1320.734619 1317.69458 1309.930176 1297.018311 1285.586914 1274.061768 1266.087646 1261.23291 1258.455811 1255.467773 1254.813843 1261.755249 1270.24231 1278.646362 1292.008789 1308.172852 1309.885742 1308.836426 1306.863647 1303.874756 1298.685059 1294.735352 1291.511597 1283.539062 1280.354126 1285.325195 1289.694702 1288.169189 1285.068604 1283.734253 1289.425171 1292.317383 1291.76123 1286.199707 1279.83606 1281.280151 1294.410034 1296.449219 1296.75769 1294.175781 1292.803833 1294.655518 1293.393555 1287.866699 1281.232422 1274.721313 1284.52124 1289.667114 1291.049194 1291.516602 1291.525269 1291.126099 1289.97522 1288.47644 1286.498413 1284.276489 1280.990967 1280.94519 1281.504395 1278.575317 1275.43396 1270.589111 1270.907593 1271.873413 1271.907715 1272.560547 1271.732788 1268.521606 1270.205933 1271.177246 1270.506836 1270.265747 1269.560425 1267.708618 1268.099731 1269.632446 1269.950684 1268.585449 1266.744995 1263.423828 1261.751099 1260.754639 1260.451294 1260.221558 1259.217896 1257.183105 1255.675293 1257.238403 1257.299927 1256.456299 1254.614258 1252.687378 1250.963745 1248.491211 1246.665649 1246.773438 1242.897705 1237.207031 1245.411987 1245.403809 1244.216187 1242.418335 1239.966431 1238.184082 1236.198364 1234.454834 1232.545654 1230.937988 1230.171021 1229.327637 1228.203003 1227.883423 1227.355713 1226.521606 1225.732422 1224.984619 1224.482422 1223.882446 1223.463745 1223.145874 1223.107056 1223.109253 1223.014771 1222.737427 1222.146973 1221.656006 1221.321045 1220.88269 1220.539062 1220.443726 1220.246094 1219.682495 1219.196289 1219.175659 1219.342041 1219.405273 1219.398193 1219.287231 1218.978271 1218.994263 1219.202026 1221.319702 1224.194092 1227.912598 1231.536377 1232.908325 1232.966797 1232.840576 1232.698608 1232.658081 1232.251465 1231.019897 1229.709106 1228.51001 1226.900513 1225.044922 1223.007935 1221.132324 1219.513184 1218.836426 1218.458374 1218.992554 1224.747559 1231.151367 1236.148315 1240.862061 1247.328003 1256.04895 1264.720093 1271.285767 1273.834595 1255.210693 1232.793701 1221.494263 1209.783081 1200.730347 1192.571777 1183.244385 1180.875732 1180.34314 1180.023315 1179.536743 1178.495239 1178.444336 1177.868652 1179.028687 1184.197632 1197.482056 1204.853882 1198.805054 1190.897095 1183.642822 1173.49939 1159.681152 1154.070557 1177.141846 1187.919434 1184.581177 1180.583862 1180.110718 1179.21582 1175.768066 1170.029663 1165.124023 1170.378296 1173.842896 1168.306519 1160.651367 1159.003052 1174.932251 1194.898682 1212.214355 1222.909058 1229.050171 1229.100586 1225.04126 1220.917969 1242.022339 1254.409424 1261.536011 1266.109741 +1347.855713 1340.327759 1348.528687 1362.135986 1372.734375 1383.243408 1384.648682 1391.881592 1404.701294 1417.771851 1438.02417 1455.753296 1472.020752 1485.076172 1500.418579 1519.351929 1542.94873 1563.976807 1584.459229 1599.096191 1625.628296 1642.278076 1661.430908 1674.140137 1682.693359 1687.049927 1690.793945 1697.527954 1701.786987 1701.366455 1697.614502 1691.662476 1684.083862 1680.192139 1677.279419 1670.701416 1661.16687 1651.318115 1641.200317 1628.279297 1615.080566 1597.43457 1585.737915 1580.569336 1573.716919 1573.037231 1569.281982 1564.416748 1558.328491 1553.082397 1545.068359 1539.360596 1540.628662 1539.442871 1536.553101 1532.063965 1527.288086 1522.366821 1517.952637 1513.519409 1506.963867 1505.568359 1505.7052 1506.924683 1505.46521 1503.378174 1501.758545 1498.242676 1493.355835 1490.101685 1486.095459 1480.458984 1479.569824 1475.142822 1469.842407 1465.374023 1455.623413 1443.517456 1430.180786 1421.69519 1411.831299 1400.884766 1393.341797 1385.757202 1375.687988 1366.315186 1370.21228 1377.579346 1383.756104 1389.070801 1393.554932 1397.827759 1400.748779 1403.427246 1402.235718 1395.309692 1388.230713 1390.550781 1395.849609 1397.63562 1395.965332 1390.198608 1394.19104 1406.279907 1407.242432 1402.318237 1399.679077 1393.526611 1389.385376 1387.231812 1383.262329 1380.253784 1376.155762 1368.586548 1362.619263 1354.786377 1354.48645 1352.817993 1350.382812 1347.764282 1345.605957 1343.353638 1333.717651 1336.625488 1345.663696 1350.678955 1357.880127 1368.234619 1375.220337 1378.426514 1379.683472 1380.578369 1380.939575 1380.386353 1379.837891 1379.112061 1379.616699 1380.021118 1379.944824 1378.669312 1376.634644 1376.701172 1379.149902 1381.872314 1387.927612 1392.845703 1395.616821 1395.292969 1394.345215 1389.36731 1384.404907 1380.23584 1380.98877 1379.966919 1375.652954 1362.293945 1350.672485 1343.051392 1336.435791 1345.198608 1359.391235 1376.449341 1390.02417 1398.791504 1405.340698 1411.130859 1415.094116 1417.482666 1421.37085 1426.207642 1429.796631 1431.888306 1432.881958 1432.145874 1429.049927 1419.033569 1406.116211 1393.944824 1385.86145 1378.493408 1373.367065 1370.229858 1372.279053 1381.115112 1387.648682 1392.723511 1403.498535 1417.33313 1426.321289 1431.943726 1432.749268 1437.177002 1445.632568 1446.983521 1446.090576 1445.66748 1444.893188 1446.104248 1449.518066 1451.554199 1451.692261 1449.387573 1447.440674 1448.916626 1451.065308 1453.887451 1458.283569 1463.213989 1464.924194 1467.992554 1471.3302 1473.814941 1475.41687 1476.241577 1467.978394 1461.082764 1453.483521 1445.630005 1437.778442 1437.170898 1440.574219 1444.376343 1448.326294 1449.45166 1449.460205 1448.027466 1445.110596 1440.228149 1435.009399 1430.635132 1427.742432 1426.208862 1434.151123 1442.513062 1450.856689 1455.590088 1457.682007 1457.632935 1453.745117 1439.749023 1429.2854 1431.184692 1426.405029 1405.426636 1402.832397 1394.852173 1388.779541 1385.223145 1378.166138 1376.387573 1372.957764 1371.190918 1369.323853 1367.241455 1359.812134 1349.967896 1338.74353 1329.215576 1318.957642 1315.028809 1310.302002 1310.474487 1324.844727 1336.384155 1344.55896 1353.188232 1357.923096 1364.356323 1368.621582 1377.358521 1379.472168 1373.826904 1366.190796 1359.502808 1353.928345 1352.641724 1356.240967 1362.013428 1366.522949 1370.911743 1372.392456 1372.301758 1374.478882 1379.422241 1381.066528 1379.138916 1374.633179 1372.528564 1381.668823 1393.401001 1404.357666 1412.880615 1419.633423 1427.404907 1427.280884 1427.779419 1434.007324 1438.866211 1441.350464 1435.519653 1426.624634 1417.588867 1411.391724 1405.505249 1397.175171 1387.140747 1373.541626 1372.386963 1377.274048 1386.874268 1388.825195 1388.86792 1384.72229 1382.523926 1381.326172 1384.649048 1389.40625 1395.378662 1401.564209 1406.751831 1412.148193 1413.486084 1413.975586 1417.457397 1422.166138 1427.05127 1426.857056 1418.676147 1407.939087 1396.194702 1382.934204 1371.084595 1357.594238 1346.204834 1360.799194 1373.893433 1383.867798 1392.260376 1392.838623 1378.732544 1369.470581 1363.906128 1357.513794 1356.973511 1358.211304 1359.764893 1360.537842 1361.281738 1357.710205 1354.96228 1355.722534 1344.807617 1332.619629 1323.293579 1324.95752 1320.789917 1312.868896 1306.312378 1312.12793 1319.553345 1329.923706 1339.103394 1333.890259 1331.755005 1329.571533 1330.432983 1336.336182 1335.736572 1332.913086 1330.223633 1319.638306 1314.001465 1306.198608 1301.471313 1292.891846 1284.473267 1275.144287 1274.530518 1276.577515 1279.190186 1280.986938 1291.030518 1300.467285 1312.832642 1321.405762 1321.803711 1313.594727 1308.678833 1322.469971 1323.765015 1322.275146 1320.367188 1311.453857 1299.680054 1289.443848 1281.743286 1269.918091 1264.885986 1261.351685 1258.240967 1255.232056 1260.38501 1267.699829 1275.241577 1283.864502 1300.692505 1311.4375 1310.908081 1308.832153 1305.484619 1301.622192 1297.173828 1294.490234 1281.891113 1286.446777 1294.181641 1294.156738 1291.263062 1290.977783 1290.511963 1293.415039 1295.153564 1294.489014 1289.131958 1280.666992 1281.836304 1295.618286 1301.745117 1301.497192 1298.746338 1297.195312 1297.25769 1295.457886 1290.97876 1282.305786 1280.138428 1288.139771 1292.934814 1293.556885 1293.753662 1293.557983 1292.784546 1291.663574 1289.98645 1287.842773 1285.578735 1283.588379 1282.726807 1281.289307 1279.236206 1279.096802 1277.087524 1275.936768 1275.736938 1275.239014 1274.96521 1274.430176 1273.824707 1273.957153 1274.281738 1273.838745 1272.716797 1270.960938 1268.578491 1268.100098 1269.723511 1270.685425 1270.459839 1268.709595 1266.948853 1265.754395 1264.775024 1264.541626 1263.828979 1262.277222 1260.263062 1258.92627 1259.613037 1259.393921 1258.215576 1257.066406 1255.808228 1254.571533 1252.85144 1250.970703 1249.374634 1246.289429 1238.250977 1244.426392 1246.703857 1246.47583 1245.055786 1243.055664 1240.850464 1239.159546 1237.224976 1234.78125 1232.736938 1232.096191 1231.010864 1230.00354 1229.767944 1229.209839 1228.220337 1227.418701 1226.777466 1226.087769 1225.531494 1224.94812 1224.623291 1224.470703 1224.342773 1224.2323 1223.751221 1223.335815 1222.840088 1222.466919 1222.143677 1221.904663 1221.846069 1221.590332 1221.241821 1220.571289 1220.455811 1220.529175 1220.572388 1220.577271 1220.422241 1220.026978 1219.524414 1219.077637 1219.392944 1221.637573 1224.622559 1228.712891 1231.368774 1231.962769 1231.978149 1231.918579 1231.928955 1231.550171 1230.756836 1230.013672 1228.994995 1227.450195 1225.332764 1222.90332 1220.690918 1219.256592 1218.848877 1219.205688 1225.083008 1232.530884 1238.222168 1243.518677 1249.093018 1255.928345 1263.809082 1271.61145 1278.103516 1280.741333 1257.477661 1241.385864 1232.486572 1222.260742 1208.998901 1196.898315 1184.272217 1180.721313 1179.052979 1177.804199 1175.69397 1171.997192 1172.723022 1172.388306 1171.694092 1177.2854 1189.378052 1198.338501 1193.929688 1185.515381 1177.481445 1167.283325 1153.577148 1158.001587 1175.399048 1191.054932 1198.236694 1197.973145 1197.529419 1197.003296 1192.966187 1186.181885 1180.059692 1188.064697 1190.419922 1187.202148 1178.727539 1167.942993 1172.401489 1198.049927 1221.147705 1238.737305 1246.296021 1248.601074 1248.648438 1245.979126 1244.594727 1265.483032 1278.395142 1286.895874 +1382.310913 1369.686157 1349.901489 1366.076904 1369.064941 1375.929688 1390.06543 1397.179443 1403.656494 1409.080688 1424.857178 1441.269653 1461.257935 1479.264893 1494.962036 1516.5802 1534.746948 1556.436035 1572.436035 1595.351318 1620.67749 1638.672852 1666.532593 1683.192993 1691.072266 1696.158203 1701.050659 1709.001709 1710.618652 1710.085205 1707.967407 1701.19519 1693.646606 1692.130981 1690.408569 1685.200195 1674.348145 1661.421265 1649.644653 1633.795776 1621.863525 1608.841919 1594.553345 1584.677002 1574.933105 1571.763184 1570.905518 1568.542969 1564.681152 1559.365601 1548.618652 1546.894775 1547.239746 1546.694458 1544.141357 1539.365112 1534.35022 1526.971558 1522.105835 1518.094727 1513.380249 1514.037598 1514.672974 1513.075928 1507.663818 1503.944458 1502.502197 1503.148071 1497.231445 1489.571045 1482.492432 1475.933472 1466.165649 1464.327759 1465.928711 1463.529419 1455.588745 1446.010986 1435.647949 1421.084595 1410.471436 1399.935791 1390.536865 1382.866333 1372.147339 1369.682373 1380.202881 1382.730957 1386.143677 1391.618164 1398.451416 1403.508057 1410.012207 1413.020142 1411.283813 1408.423706 1398.581299 1395.881104 1405.11438 1408.858521 1407.332153 1399.873413 1401.266724 1410.162354 1407.784424 1401.505737 1399.63501 1394.67749 1391.570801 1389.479004 1385.916992 1381.943481 1376.740112 1366.301514 1363.004272 1361.148071 1356.99292 1353.367188 1350.696533 1347.758911 1345.552979 1343.280029 1331.528442 1343.079956 1347.529663 1352.025879 1362.348022 1372.761841 1379.173096 1381.500122 1382.855957 1383.720947 1384.046509 1384.017212 1383.822144 1384.029541 1384.746582 1385.977173 1387.059814 1387.281494 1386.289429 1385.962891 1388.491089 1391.793091 1394.167603 1397.992188 1397.841919 1395.137939 1391.570068 1382.535767 1376.759033 1372.606323 1373.005981 1371.902588 1368.519653 1356.040283 1348.376587 1342.733643 1337.976685 1346.391479 1359.803467 1373.216553 1390.783936 1401.744873 1411.422119 1416.963623 1419.366577 1420.901245 1423.984619 1427.613281 1431.848267 1435.653198 1436.452026 1434.171997 1430.631348 1421.384766 1409.475098 1400.537231 1392.842773 1383.733398 1378.300415 1375.920044 1371.553833 1371.997925 1379.289062 1385.44397 1396.921753 1408.881226 1416.21106 1417.968872 1425.84436 1431.661987 1435.074219 1434.404175 1432.904053 1432.991943 1432.73645 1435.370361 1439.377197 1440.47644 1440.641724 1440.385498 1440.262451 1442.723267 1448.977539 1450.008911 1451.308472 1460.188599 1462.277954 1466.726318 1470.737305 1472.693481 1473.142334 1471.246704 1467.49646 1461.11853 1452.237793 1443.379395 1438.702759 1442.15564 1446.230713 1451.848511 1454.520264 1454.887939 1454.679443 1453.263184 1449.613525 1444.988403 1439.809814 1435.704346 1432.498291 1427.955811 1437.91272 1447.006592 1453.560425 1456.030396 1458.640381 1460.516724 1455.389404 1447.897339 1446.535645 1440.717285 1433.176392 1421.164185 1411.352051 1406.713501 1403.791016 1393.875732 1386.376831 1383.671021 1378.431274 1373.049072 1368.992554 1367.089722 1360.175293 1352.573486 1340.849487 1331.051636 1324.616089 1320.209595 1313.717163 1311.4552 1322.155518 1333.023071 1340.792847 1347.857544 1354.851196 1361.301147 1367.452515 1374.305542 1380.740967 1379.66272 1371.537354 1363.422363 1356.951416 1352.880371 1357.666748 1364.680298 1372.626953 1379.49939 1380.749634 1381.203369 1382.122437 1386.448975 1387.231323 1386.510986 1382.913086 1375.743408 1378.521484 1387.753174 1398.864868 1407.584473 1416.320801 1426.479736 1429.950317 1433.862549 1439.380615 1441.726196 1441.832886 1437.928955 1430.915161 1421.990479 1411.862305 1401.578125 1393.463989 1381.793335 1375.293335 1376.530396 1383.507324 1392.486084 1394.683716 1394.906128 1392.666138 1392.73584 1391.450195 1390.060425 1395.552734 1400.824097 1404.20752 1408.193848 1410.557007 1409.539185 1408.218506 1410.408325 1413.422729 1416.481689 1417.264526 1413.981323 1403.528076 1392.026489 1379.083984 1368.522461 1352.62915 1354.919067 1367.6521 1381.098511 1388.121826 1391.70813 1383.371338 1371.345459 1364.584106 1363.932861 1366.366577 1366.325073 1364.645996 1368.725098 1372.507324 1373.030884 1369.518066 1364.263184 1353.608032 1341.117065 1330.806396 1330.358887 1333.65625 1327.922852 1317.930054 1312.549072 1314.493286 1321.648804 1332.098633 1343.875 1340.265381 1336.87793 1335.567261 1339.078003 1342.797485 1336.327271 1330.278198 1322.537598 1313.621094 1306.068726 1298.438843 1291.679077 1286.551025 1279.845215 1274.755127 1277.867554 1280.926758 1283.139404 1285.998779 1291.987793 1300.31189 1310.885742 1320.541504 1326.072998 1315.077026 1311.482666 1322.57373 1325.603516 1323.696289 1318.95459 1308.38269 1299.160767 1291.528931 1283.046753 1273.292847 1266.737793 1263.581421 1259.738159 1255.797363 1260.255737 1266.360107 1273.616211 1281.765625 1293.853882 1310.692139 1314.487793 1311.132568 1307.935181 1305.227417 1298.529663 1289.688354 1288.21814 1293.697998 1296.006592 1296.437012 1295.06665 1293.864746 1291.835205 1295.307617 1297.129761 1296.227417 1292.417969 1282.814453 1281.172852 1294.967285 1304.823486 1305.678467 1302.96582 1301.073486 1300.550903 1297.765991 1292.946655 1281.982788 1282.781006 1293.818726 1295.00708 1295.364746 1295.553589 1295.328491 1294.568359 1293.427856 1291.415283 1289.146484 1287.427734 1285.683838 1283.763428 1281.482544 1279.965332 1281.663818 1279.661621 1280.649536 1279.320679 1277.543823 1277.416626 1277.622192 1277.483032 1278.38562 1278.721436 1277.764282 1275.81958 1272.300415 1268.881104 1268.366089 1270.231812 1271.76001 1271.926758 1270.833618 1269.843872 1268.442871 1267.655762 1268.22644 1267.77063 1265.791626 1264.172729 1262.816406 1262.082764 1261.17334 1259.965332 1258.785522 1257.78064 1257.235718 1255.743042 1254.49585 1252.391479 1248.0448 1241.90686 1243.654297 1247.253662 1248.09436 1247.008057 1244.029907 1243.868164 1242.525879 1240.308594 1237.836426 1235.810547 1234.390137 1232.78479 1231.931763 1231.63562 1231.060913 1230.179199 1229.273682 1228.365234 1227.663208 1226.935547 1226.41394 1226.005371 1225.780151 1225.692261 1225.409302 1225.024658 1224.616821 1224.272705 1223.965332 1223.695923 1223.593994 1223.386353 1223.216309 1222.878052 1222.609009 1222.485474 1222.335083 1222.285645 1222.39209 1222.199707 1221.835083 1221.029785 1220.012817 1219.430298 1219.118652 1220.767212 1224.189087 1228.076294 1230.119385 1231.0896 1231.448486 1231.769287 1231.655396 1231.177979 1230.805908 1230.163574 1228.580322 1225.839966 1222.710571 1220.261475 1219.072876 1219.792847 1224.308594 1231.264404 1237.977905 1244.965088 1250.933594 1257.88855 1263.427124 1270.322144 1276.56958 1282.114502 1282.310059 1259.628296 1244.980347 1231.686401 1213.209473 1203.66272 1193.91272 1183.933594 1180.746582 1178.177368 1176.228271 1173.669922 1171.383911 1169.639526 1168.409424 1168.256104 1171.066162 1184.942871 1190.376709 1186.931152 1178.41394 1166.801147 1154.973633 1154.65918 1165.385376 1184.254028 1195.984253 1205.304321 1209.789795 1213.913208 1212.803345 1208.56543 1202.168457 1198.189331 1205.339478 1208.596924 1203.820435 1193.243164 1180.572021 1170.407715 1191.832764 1221.466675 1240.834106 1259.587402 1267.34314 1268.372192 1267.575684 1267.864014 1269.969849 1284.566528 1299.566284 +1408.304443 1394.056152 1385.825806 1389.825684 1383.890747 1391.541626 1412.400024 1426.114746 1428.730835 1433.434326 1435.936035 1457.046875 1474.622925 1486.079712 1496.071289 1519.309082 1533.428345 1554.174072 1569.810059 1590.924683 1622.135254 1645.590088 1671.607056 1689.835083 1699.83313 1706.531372 1710.098022 1713.525513 1714.629028 1714.412964 1712.71521 1709.299438 1704.463501 1703.256226 1701.44104 1697.129028 1688.971436 1676.104736 1658.072144 1642.381836 1629.640015 1620.70752 1606.150269 1592.776978 1585.167114 1577.94458 1576.897339 1574.143555 1570.359253 1564.850708 1559.743408 1557.635498 1555.660034 1553.636597 1550.774536 1547.295044 1541.849487 1537.786499 1529.331665 1524.071777 1519.352783 1516.206055 1514.427002 1505.176636 1500.198242 1497.200195 1495.371704 1495.47522 1488.937988 1481.06958 1471.226807 1461.646118 1450.840454 1449.871338 1454.03418 1454.166748 1450.054565 1444.251587 1436.243774 1423.499634 1413.0354 1402.052979 1393.530396 1379.731201 1368.647583 1376.066895 1382.710938 1385.949097 1388.281494 1392.85437 1401.984375 1414.662476 1421.496094 1425.593628 1423.342896 1417.494385 1408.734253 1406.759033 1416.534424 1419.269165 1418.327393 1410.990845 1405.099731 1416.173584 1415.9198 1408.595215 1403.536499 1399.708618 1396.181396 1392.800537 1388.822388 1381.692139 1376.069946 1371.386597 1368.972168 1366.236084 1359.143677 1353.756714 1350.981934 1347.410767 1344.105591 1339.355957 1336.301025 1344.507935 1348.831787 1352.749512 1364.218384 1376.692017 1381.343872 1383.97937 1386.091919 1387.132446 1387.545166 1387.286133 1387.375732 1388.10437 1389.535034 1391.367065 1392.776978 1393.54895 1393.848267 1393.873413 1395.582153 1398.070435 1400.593506 1402.904297 1399.820801 1392.500732 1387.470459 1375.468384 1368.66333 1364.031738 1363.863159 1362.600342 1355.491089 1350.635742 1345.603027 1341.59021 1339.071289 1348.803955 1358.511475 1367.768311 1383.555786 1396.862427 1407.607544 1417.606812 1419.255615 1419.977783 1423.176025 1427.953491 1431.942871 1438.620239 1439.58728 1435.738159 1431.793213 1425.894653 1416.851562 1409.666138 1400.8573 1391.861694 1387.649048 1383.505371 1377.872681 1373.744141 1372.150757 1377.854248 1386.924561 1397.543213 1405.491211 1410.592407 1420.564087 1427.93335 1428.118408 1422.860107 1420.942261 1421.836792 1422.007202 1425.068726 1428.158813 1430.332397 1432.919189 1436.645142 1439.162964 1447.988159 1453.540283 1457.703979 1461.717407 1464.373291 1465.55249 1468.679443 1471.831543 1472.577515 1471.719727 1469.161865 1465.151489 1457.578735 1450.139282 1446.87854 1448.818237 1451.900513 1450.112793 1457.903564 1461.113037 1460.704468 1459.664673 1457.57251 1454.068481 1449.025146 1443.91272 1441.459961 1439.103516 1435.739624 1439.411621 1448.453857 1453.460205 1455.981323 1458.837036 1462.506226 1465.463013 1464.371216 1462.410767 1453.329102 1443.133789 1433.925049 1425.454956 1425.6604 1415.927124 1402.810425 1393.291016 1385.471558 1377.484741 1368.033203 1364.413574 1360.883545 1356.753784 1350.265747 1340.831421 1333.428955 1327.516724 1321.176758 1315.226074 1311.657349 1315.904785 1326.927368 1335.678711 1339.756836 1347.179321 1354.321777 1360.532227 1366.287109 1377.2771 1380.789307 1377.345825 1367.42334 1360.476929 1354.741455 1359.010254 1365.630127 1375.867065 1381.788574 1385.500977 1389.148438 1392.566406 1394.452026 1395.110352 1395.452148 1393.709229 1386.70166 1379.009766 1385.32605 1391.275757 1401.370239 1411.954834 1420.938232 1426.767578 1433.084229 1440.0448 1441.509155 1442.123657 1437.841187 1428.474243 1420.535767 1410.263428 1401.111206 1394.219482 1381.898315 1382.195557 1387.561035 1395.418091 1399.348755 1399.355591 1399.321289 1398.546753 1397.873535 1396.620605 1396.39209 1400.912476 1405.857788 1411.214233 1415.307251 1413.023193 1406.640259 1401.557129 1403.409668 1406.427734 1408.183105 1407.932983 1403.567383 1394.862427 1385.705444 1375.514526 1364.136353 1353.185303 1362.358276 1375.019043 1383.13208 1386.429932 1385.016479 1377.634277 1369.625488 1370.220337 1371.838623 1373.782349 1376.733765 1376.353027 1379.27124 1380.798462 1377.942139 1368.768188 1358.250366 1346.095825 1339.222168 1340.274536 1341.57019 1340.483154 1330.986816 1317.786743 1314.421387 1316.630615 1324.082642 1335.394043 1344.499878 1343.84021 1341.268555 1337.067505 1340.105713 1335.801514 1326.204956 1317.916382 1314.539917 1309.339844 1302.164307 1293.007324 1286.69397 1281.597046 1277.056885 1277.537109 1281.677246 1284.161743 1286.491699 1289.532837 1292.714233 1300.973999 1309.293213 1319.417603 1330.601807 1322.899414 1316.102051 1321.755493 1329.211914 1326.956177 1314.531738 1305.208984 1297.887329 1290.633911 1283.678101 1276.019653 1268.452271 1267.237061 1265.235718 1257.019775 1261.207886 1266.725464 1273.824097 1282.522217 1292.001465 1307.955933 1316.407104 1313.140259 1310.015137 1306.936035 1295.855835 1288.998413 1290.146484 1294.704468 1297.183716 1298.521362 1299.001831 1298.129395 1296.433594 1298.169434 1299.983032 1299.377563 1294.469971 1286.304199 1285.979492 1293.255493 1303.000244 1306.004761 1304.317139 1303.973511 1304.655273 1301.641602 1294.109253 1282.018188 1288.746094 1294.88562 1296.415283 1297.09668 1297.226807 1296.838501 1296.067017 1294.400391 1292.178345 1290.513062 1289.352539 1287.875977 1285.389771 1281.911377 1281.371826 1282.309814 1280.427979 1281.901001 1281.331787 1280.060669 1279.973145 1280.177856 1279.93457 1281.56665 1282.062256 1281.358765 1279.82666 1275.137085 1268.81958 1268.55957 1271.771973 1273.700562 1274.095215 1273.718994 1272.19751 1270.520752 1270.325928 1270.697876 1270.24231 1268.43042 1267.241821 1265.556519 1264.310547 1263.086548 1261.699951 1260.389648 1259.233521 1258.661011 1258.1604 1257.47583 1255.900146 1249.588501 1242.462769 1244.455933 1249.674561 1250.557617 1248.964478 1245.597778 1246.455322 1245.418213 1243.570312 1240.898682 1238.883789 1237.250244 1235.603027 1234.824341 1234.164673 1233.071045 1231.776611 1230.67627 1229.867432 1229.088867 1228.346191 1227.672485 1227.23645 1227.044434 1226.859741 1226.702637 1226.363892 1225.951294 1225.590332 1225.391968 1225.289307 1225.303589 1225.172485 1225.177002 1225.082275 1224.789551 1224.655151 1224.630859 1224.528442 1224.445312 1224.295166 1223.862915 1223.152222 1222.19519 1221.710571 1220.958618 1220.043091 1220.570557 1225.790161 1228.494263 1229.963013 1230.835815 1231.497681 1231.824951 1232.035767 1231.880615 1231.794434 1230.286499 1226.223999 1222.573975 1219.862915 1219.791504 1223.912476 1229.3125 1235.528564 1240.891846 1248.544312 1255.985229 1262.200562 1268.461426 1275.349487 1280.959839 1284.572021 1282.852295 1262.053101 1246.055786 1230.897705 1211.834961 1195.614258 1189.857666 1184.815674 1180.859375 1177.697266 1175.372314 1173.752686 1172.123535 1170.678223 1166.147217 1165.239258 1167.346191 1173.290039 1179.903076 1177.887817 1168.673828 1159.013306 1154.26123 1157.86145 1166.138184 1183.68042 1202.291992 1213.965698 1222.050049 1226.977173 1227.854492 1226.061157 1220.049072 1213.742432 1219.479736 1224.009399 1220.583008 1208.833496 1193.964233 1186.712524 1184.72522 1209.120117 1228.651611 1245.482544 1266.14624 1280.753418 1284.993164 1288.060425 1292.65271 1294.886353 1301.823486 +1424.438721 1409.386597 1411.497681 1405.095703 1391.942139 1395.324829 1407.837402 1426.818481 1447.098267 1462.244751 1466.356689 1471.730713 1483.752686 1495.645386 1507.776611 1527.533569 1540.28833 1559.8125 1572.563477 1596.385376 1628.903076 1647.341431 1675.2948 1695.474121 1709.35437 1717.143799 1718.728638 1718.506226 1718.10083 1718.067505 1717.482666 1715.903198 1714.98999 1715.420532 1711.80481 1706.09436 1695.308228 1685.78772 1668.282593 1650.593262 1634.18335 1626.073853 1614.039795 1602.634155 1593.433228 1586.029175 1582.748291 1580.063965 1576.935303 1574.274048 1569.254761 1565.305542 1562.515991 1557.949219 1554.140381 1551.623047 1546.572388 1540.369141 1533.50293 1527.02002 1515.839233 1507.626709 1499.331299 1493.159302 1485.482422 1481.536743 1476.975342 1483.531006 1481.52124 1466.130249 1453.969604 1449.106445 1439.966919 1435.770874 1438.63623 1441.249268 1441.770752 1439.159424 1429.177246 1420.87561 1412.474731 1401.182617 1392.336426 1383.281128 1369.889526 1378.958618 1388.67395 1390.713867 1389.542969 1395.927979 1406.402954 1422.254883 1430.106812 1435.396118 1436.009155 1430.589355 1420.915039 1418.940796 1425.579102 1427.930664 1426.779419 1418.090088 1414.488892 1420.149658 1420.046387 1416.080566 1408.959106 1404.201782 1400.24585 1395.372437 1390.444946 1384.535767 1380.498291 1377.954956 1372.44519 1367.003174 1360.264526 1354.460815 1351.083618 1347.501953 1343.475464 1333.387329 1340.549316 1345.965942 1350.96814 1356.745483 1366.80249 1378.624512 1383.923462 1387.603394 1389.422729 1390.624878 1391.112549 1390.787842 1390.781738 1391.877319 1393.692383 1395.428711 1396.84021 1397.803955 1398.582275 1399.720337 1401.296997 1403.227539 1405.147583 1404.907104 1400.583008 1390.482056 1384.120239 1365.510132 1363.6604 1362.250122 1359.438232 1355.33606 1352.263306 1350.47644 1349.015259 1346.409912 1340.199341 1345.56189 1355.052856 1361.737305 1372.421021 1386.627197 1395.042358 1402.001465 1410.568848 1415.026611 1418.676636 1423.491333 1426.963623 1432.741333 1436.38269 1435.028687 1432.920044 1431.393188 1429.796021 1425.885254 1411.007935 1401.992432 1398.306763 1392.653442 1384.847534 1378.391235 1375.467041 1373.533569 1376.211426 1386.325439 1396.46167 1403.028076 1411.016846 1415.008179 1413.178711 1407.99353 1406.609253 1408.937256 1412.944946 1415.357422 1419.812866 1424.415039 1433.363892 1441.635376 1450.173462 1455.535034 1460.383301 1465.367432 1467.432007 1468.748657 1470.146606 1472.883789 1474.051514 1473.878418 1472.131714 1468.650024 1463.074219 1455.955078 1450.016113 1449.498901 1454.098389 1457.94397 1462.260864 1465.866943 1467.381714 1466.73584 1465.080444 1462.208496 1457.168335 1451.030518 1448.47522 1446.895264 1444.379883 1440.586304 1441.412964 1448.180908 1452.500122 1454.111084 1455.641724 1459.707031 1463.032104 1463.022217 1462.103271 1456.50293 1449.58667 1443.101074 1438.771118 1424.50769 1412.263306 1398.971924 1389.758667 1382.731934 1375.157837 1368.096191 1358.773804 1353.164307 1350.305054 1345.327881 1338.678833 1332.130981 1326.689819 1320.193115 1313.261719 1315.087524 1322.722412 1331.487061 1344.0802 1349.069214 1352.610107 1353.039673 1357.671997 1365.71521 1372.878662 1378.870728 1380.323853 1372.445068 1363.660767 1360.47876 1361.539062 1365.079468 1373.935669 1380.950684 1388.372681 1393.694092 1398.381836 1401.744873 1404.285645 1405.734619 1405.271606 1398.8302 1388.476562 1384.705078 1389.643799 1400.507935 1408.276489 1417.075806 1423.261719 1429.528564 1434.4198 1437.844482 1437.302246 1429.153809 1421.674072 1414.242554 1406.057373 1399.939087 1393.470581 1384.886108 1385.962036 1395.473877 1409.145874 1418.901855 1413.719727 1406.366455 1404.066406 1403.136353 1401.932861 1400.419434 1403.062012 1408.123047 1413.779419 1416.494629 1412.602295 1403.332886 1391.051636 1390.459839 1396.283325 1399.024292 1396.542603 1390.108032 1385.690063 1380.166626 1368.869507 1357.205933 1363.965454 1375.12561 1381.880127 1388.722656 1387.165161 1379.786133 1376.02356 1375.19104 1378.440796 1380.612671 1383.508789 1387.158325 1389.070923 1384.509521 1380.006958 1370.524292 1361.150146 1352.913452 1348.044678 1349.695923 1352.466919 1349.845825 1343.165527 1330.2854 1321.02002 1316.000366 1320.067261 1326.987671 1338.333618 1344.720581 1343.770142 1337.599976 1330.95874 1329.529785 1323.394165 1317.937744 1312.413208 1305.231689 1303.443726 1296.197266 1287.717163 1281.079224 1278.434204 1276.659302 1281.59021 1285.116089 1287.722046 1289.332642 1293.432495 1298.86377 1305.306885 1314.846558 1324.002441 1331.967529 1327.634766 1317.459351 1320.060791 1329.026367 1326.532349 1315.829346 1307.851807 1298.09729 1290.068481 1284.500488 1280.056274 1269.600586 1271.887451 1270.125 1257.804688 1261.884521 1267.40564 1274.03772 1281.639404 1291.072266 1304.873901 1315.645996 1313.452271 1310.567993 1306.283691 1296.042969 1290.117065 1291.179443 1295.504883 1298.567261 1300.727173 1302.297974 1303.366943 1302.585205 1302.430542 1303.587646 1304.547119 1296.777954 1289.859009 1289.568481 1292.117798 1299.940308 1305.776611 1304.934937 1306.728149 1307.49646 1305.890991 1296.08252 1290.401733 1292.178101 1296.014893 1298.24585 1299.096313 1299.117065 1298.634277 1297.500977 1295.642456 1293.823242 1292.173218 1291.388916 1290.737671 1288.568848 1286.131348 1284.768921 1283.899536 1281.622925 1283.592529 1283.755981 1283.036377 1282.793945 1282.983765 1283.159424 1284.116821 1284.490967 1283.826416 1282.207397 1279.91626 1268.598145 1269.530884 1274.504395 1276.57605 1277.059204 1276.558228 1274.718994 1273.731201 1273.010254 1272.649536 1271.791748 1270.449585 1269.238647 1267.391724 1266.036011 1264.714233 1263.193604 1261.703857 1260.57312 1259.88269 1259.451294 1258.656616 1257.45105 1247.874268 1241.972412 1250.010742 1254.741577 1253.566284 1252.085693 1250.146484 1248.834961 1247.501831 1244.591431 1243.265869 1241.492554 1239.817139 1238.689209 1237.839233 1236.885132 1235.3396 1233.699219 1231.823364 1230.901978 1230.275391 1229.588989 1228.854858 1228.359131 1228.14563 1228.088501 1227.966309 1227.787231 1227.439819 1227.074829 1226.79541 1226.717529 1226.816528 1227.016479 1227.223633 1227.326416 1227.241089 1227.057007 1226.974731 1227.086304 1226.987183 1226.772217 1226.58728 1225.876953 1224.94397 1224.419434 1223.863403 1223.290649 1223.44751 1225.675659 1227.865234 1229.303955 1230.473267 1231.878296 1231.935791 1231.99939 1232.015259 1231.960449 1230.645752 1226.86145 1223.704346 1221.281616 1224.174683 1228.695435 1231.845337 1239.96521 1245.638428 1252.208496 1258.538208 1264.947266 1273.266113 1280.547119 1284.331421 1286.443359 1284.46521 1262.891235 1244.498901 1225.551025 1208.42334 1197.13208 1189.023682 1182.890381 1179.526123 1175.872314 1174.189331 1173.018921 1171.24292 1167.198486 1162.73584 1161.504639 1162.481689 1165.017212 1167.500488 1165.934448 1160.118652 1154.579346 1159.265259 1171.114136 1180.751099 1186.096558 1203.003784 1219.945679 1232.522827 1239.307373 1242.790405 1244.34436 1240.306519 1232.776123 1238.152466 1241.563965 1235.795654 1223.658081 1209.626831 1206.164551 1197.157471 1203.30542 1211.8927 1221.737793 1236.510254 1262.873657 1285.612061 1298.517456 1308.39917 1314.271606 1319.613892 +1436.333252 1427.572021 1429.184204 1423.992065 1410.874512 1415.291138 1418.44397 1416.291992 1429.127319 1460.638428 1479.807495 1491.829956 1497.930664 1499.894775 1509.328491 1530.471191 1544.572754 1564.43103 1575.863647 1599.022949 1627.157227 1646.077271 1676.099731 1699.890137 1716.034546 1725.237427 1727.355713 1726.540894 1725.011719 1724.760132 1724.467163 1723.234131 1723.191772 1724.967407 1722.353516 1715.005249 1703.928223 1690.821045 1675.362915 1660.197632 1643.971802 1631.807007 1619.708496 1610.401978 1599.919067 1593.079102 1589.405396 1586.99292 1583.114014 1578.119751 1573.933838 1566.97644 1562.095215 1556.465576 1553.083862 1551.144653 1544.06604 1536.71167 1528.889771 1520.911255 1509.146851 1496.354126 1488.291504 1482.422607 1473.893799 1465.659058 1461.478027 1469.399902 1475.23291 1463.127441 1446.108643 1436.991089 1431.000732 1426.132568 1428.517578 1428.987793 1427.379761 1424.491211 1421.432007 1416.006348 1406.998535 1396.364014 1387.890991 1379.072754 1371.657593 1384.905884 1394.397339 1396.589844 1395.006836 1398.882812 1407.934082 1426.709351 1436.279663 1441.82312 1444.130127 1441.161621 1431.313354 1428.466309 1434.809082 1437.414551 1434.630127 1429.540283 1423.804565 1427.530151 1425.36438 1418.170532 1412.114868 1408.256958 1403.515991 1397.864258 1392.178101 1388.922119 1384.732422 1380.822266 1374.453979 1365.414185 1359.894165 1354.253052 1350.811279 1347.271362 1343.044312 1334.380981 1341.416382 1347.209961 1353.186401 1364.420166 1375.48938 1382.498901 1388.170532 1391.241333 1392.806519 1394.048218 1394.711914 1394.761108 1394.986206 1396.216187 1397.940063 1399.473389 1400.683838 1401.755615 1403.112793 1405.058472 1407.602051 1409.344849 1408.713257 1405.930176 1400.189087 1391.657959 1381.522339 1371.117065 1373.43042 1372.529419 1370.166992 1367.989868 1363.285034 1360.583374 1359.497803 1357.962036 1351.925781 1343.21228 1349.870117 1355.895874 1363.783936 1374.008301 1382.967529 1390.297607 1396.384888 1402.73938 1410.914917 1416.469116 1420.564941 1424.639526 1428.367432 1431.370361 1431.871338 1430.984375 1430.37915 1430.134155 1422.640259 1411.313477 1408.829712 1404.936035 1395.027954 1387.563843 1381.291382 1377.606201 1375.0271 1377.13269 1387.248047 1393.890381 1397.825317 1400.230469 1399.080688 1399.033813 1403.663452 1410.199585 1412.348145 1416.398682 1421.920532 1430.164185 1440.786621 1447.844482 1454.564331 1459.913452 1464.734863 1469.459595 1472.681641 1473.759277 1473.423706 1476.526245 1476.778564 1475.658081 1473.33252 1470.059082 1466.368164 1461.756348 1453.754639 1450.556152 1458.453613 1464.60791 1468.236938 1470.961426 1473.927002 1476.0625 1473.20105 1467.681519 1461.73291 1456.706909 1452.995361 1452.635742 1450.972046 1447.489624 1446.492065 1448.470337 1450.260132 1450.615601 1449.628418 1451.572876 1454.357422 1454.340454 1450.084473 1451.520996 1449.624146 1440.487915 1433.023438 1422.335449 1406.81665 1393.504517 1384.100342 1376.770874 1369.653687 1364.722656 1354.75769 1347.363892 1342.475708 1338.924805 1329.649658 1327.340332 1324.26709 1318.287964 1313.328003 1320.45752 1333.674683 1344.474365 1353.23999 1357.804688 1361.228882 1363.356201 1363.746216 1364.647461 1370.873291 1379.66748 1380.598145 1378.303711 1365.913696 1363.150146 1364.044189 1367.377075 1375.898315 1382.292114 1390.116089 1397.834839 1403.847046 1409.069458 1413.589478 1414.577026 1413.841797 1408.376221 1398.585205 1390.898804 1388.391846 1394.765991 1401.46936 1409.968262 1417.566284 1423.39856 1427.180298 1432.127197 1432.999268 1425.720093 1419.994141 1413.444336 1406.853027 1400.873901 1396.696045 1391.784424 1392.812134 1399.105835 1414.202148 1427.62561 1425.190063 1418.203369 1415.627563 1411.900757 1408.053101 1405.640869 1404.466309 1409.738281 1412.044434 1413.678711 1406.894165 1394.937622 1385.320679 1381.518188 1378.199829 1375.390625 1376.369507 1378.233765 1376.461182 1369.735352 1360.942627 1368.157593 1380.281616 1383.922241 1388.379883 1391.718872 1388.499512 1378.869263 1379.657471 1381.265869 1386.911255 1390.932495 1393.497925 1393.77063 1390.642334 1379.991211 1375.127441 1366.897217 1362.513916 1359.562744 1363.237671 1363.376465 1359.683594 1354.218262 1341.859009 1332.81958 1324.254883 1323.62854 1326.231445 1329.372192 1338.942383 1344.967407 1343.50647 1332.468262 1323.664673 1319.312134 1315.17627 1312.958008 1309.59436 1305.8573 1297.714722 1288.363647 1279.932129 1279.668701 1281.488403 1279.61499 1284.597412 1289.435425 1291.955322 1293.123047 1295.753418 1303.077393 1310.493774 1318.485229 1326.757324 1338.339966 1329.792236 1320.070435 1317.999756 1320.85144 1317.827148 1311.35498 1308.65332 1299.124023 1289.963501 1283.231323 1279.280273 1276.946655 1274.79541 1270.527222 1258.529663 1262.851685 1267.978149 1274.088013 1280.726685 1292.491821 1305.442871 1312.473022 1313.577515 1311.061523 1307.358154 1300.777588 1291.345703 1292.027222 1296.331299 1300.953979 1303.145264 1304.454102 1306.858154 1306.667725 1304.498657 1306.909058 1307.096924 1298.033325 1290.782227 1292.779663 1293.279785 1297.897583 1305.315674 1308.398193 1309.42041 1309.650024 1307.985352 1298.53479 1292.267578 1292.875488 1297.575317 1300.863403 1301.580933 1301.338257 1300.672485 1299.166138 1297.180908 1295.012573 1292.365845 1292.988159 1293.578125 1292.060425 1289.897461 1288.185303 1287.454224 1286.744629 1286.669312 1286.355713 1286.101929 1285.935547 1285.964844 1286.147339 1286.632812 1286.738037 1286.063843 1284.350708 1282.588501 1270.069702 1271.544434 1278.440918 1279.640503 1280.024658 1279.545898 1277.635376 1276.640259 1275.545288 1274.438354 1273.31543 1272.049072 1270.569824 1269.15918 1267.550293 1265.965576 1264.316772 1262.613281 1261.173218 1260.205566 1259.639038 1259.298828 1255.513184 1243.415283 1248.642212 1257.533936 1257.404907 1256.597778 1255.152466 1253.024902 1251.551025 1249.532837 1247.489502 1246.06604 1244.316284 1242.502319 1241.213623 1241.36438 1240.996338 1238.781494 1235.994873 1233.534424 1232.269409 1231.710449 1230.915527 1230.042969 1229.290527 1229.081177 1229.22168 1229.345215 1229.329102 1228.920532 1228.503784 1228.205688 1228.010742 1228.134399 1228.524902 1229.139282 1229.752441 1229.587158 1229.39624 1229.26709 1229.418335 1229.669189 1229.8302 1229.585083 1228.576782 1227.67041 1227.68042 1227.756104 1227.021729 1226.480713 1227.092285 1228.237793 1229.21167 1230.172974 1231.303833 1231.893555 1231.897705 1231.895752 1231.430664 1229.599731 1228.003418 1226.82312 1227.107666 1229.519165 1233.957642 1237.356689 1244.202881 1250.737305 1257.470581 1262.671753 1267.610352 1279.931641 1284.250977 1286.362549 1287.772827 1284.866455 1263.108643 1246.730103 1226.13208 1208.271729 1197.473877 1190.172974 1183.11438 1177.025879 1172.842529 1172.269409 1171.988403 1165.70105 1159.705566 1158.131836 1158.018677 1158.079712 1157.936646 1157.819214 1156.843994 1155.275513 1159.028687 1168.077026 1183.073242 1201.333252 1208.417603 1207.721313 1217.913818 1235.863403 1249.515991 1257.631958 1264.048218 1264.252075 1253.677734 1255.040283 1258.683838 1255.466797 1239.192261 1232.372681 1224.817871 1213.140503 1219.893433 1227.939209 1226.626099 1227.42041 1235.696899 1259.502563 1287.502075 1308.304932 1321.315552 1328.964355 +1457.595093 1447.536865 1450.206055 1448.693115 1442.41333 1449.656128 1451.482544 1446.437256 1456.730835 1462.088745 1476.488647 1497.100586 1506.917725 1512.764771 1515.971558 1531.274048 1546.187378 1564.758667 1576.737915 1597.848877 1624.174316 1641.88501 1673.656372 1699.376831 1718.540894 1732.235596 1735.098511 1734.378662 1733.536499 1733.727173 1732.830688 1731.422363 1731.945679 1733.264526 1729.646729 1722.314087 1711.347412 1697.76001 1684.976929 1667.973999 1655.473145 1639.710205 1629.040161 1618.005737 1607.048584 1599.172729 1595.88269 1591.389282 1585.583252 1580.39209 1575.616089 1566.623413 1554.66687 1546.358398 1545.251953 1540.780396 1533.810791 1526.96814 1521.040649 1512.720093 1499.352539 1487.310913 1480.152588 1472.75647 1463.622803 1451.797485 1449.900879 1454.389038 1464.710693 1458.537598 1445.926636 1432.0802 1424.380127 1417.490112 1417.298462 1417.583008 1417.459473 1416.467163 1414.082764 1409.205566 1400.581787 1387.244995 1378.244873 1374.765015 1382.830566 1393.917725 1404.125854 1405.206299 1401.554321 1399.818237 1406.306519 1426.934204 1439.740723 1448.238525 1452.268677 1447.566528 1439.638306 1438.280884 1444.200317 1446.224854 1443.19751 1437.018555 1432.296143 1433.575684 1431.172974 1424.757324 1417.424316 1413.077026 1406.755493 1401.574707 1396.842041 1392.178467 1387.378906 1382.319214 1375.831299 1364.860474 1358.556885 1353.500488 1350.519775 1347.379395 1344.394653 1336.746094 1342.672974 1348.524902 1356.072754 1370.37207 1382.088989 1387.867065 1391.846191 1394.117554 1395.838623 1397.308594 1398.57019 1399.312744 1399.424927 1399.883911 1402.403198 1404.337524 1406.606201 1409.186768 1411.989502 1414.286621 1415.361572 1414.993408 1411.998779 1406.987671 1400.29126 1392.81958 1378.424316 1378.501587 1380.938721 1379.871338 1375.986328 1373.761719 1371.022461 1369.307983 1368.783936 1367.134033 1363.492798 1357.683228 1351.42627 1351.557373 1356.739868 1364.622681 1371.730957 1378.947998 1383.568237 1388.998169 1396.974609 1406.127197 1413.172852 1416.001953 1420.593018 1425.945312 1428.592529 1428.323608 1427.595825 1428.770142 1428.303345 1425.227539 1422.402344 1415.248901 1408.068726 1398.3302 1390.560181 1384.501709 1379.688965 1376.103882 1380.22937 1387.225342 1388.939331 1389.26123 1397.078369 1407.050537 1421.555054 1433.147705 1433.564087 1429.616821 1424.521362 1431.987915 1442.412598 1450.381592 1457.082153 1463.183472 1468.869751 1474.262817 1478.42627 1479.689575 1477.290527 1479.186401 1480.223022 1478.509399 1475.660278 1474.048096 1470.452393 1466.530029 1462.144165 1456.393921 1463.806885 1469.02124 1473.509399 1476.848511 1479.616943 1481.311768 1479.192261 1472.731689 1467.103027 1462.018799 1459.459106 1458.34021 1455.852661 1452.990112 1450.978394 1449.532593 1448.486694 1446.998657 1443.481567 1437.255005 1438.192505 1436.002197 1430.689453 1432.260254 1434.316162 1432.244385 1422.569214 1414.399536 1402.813354 1392.422119 1378.961792 1367.406372 1362.971313 1355.847412 1348.635376 1341.594238 1339.428101 1335.195679 1331.275757 1329.744263 1324.821045 1319.517944 1314.593628 1322.103882 1334.909302 1344.04248 1354.588623 1361.557373 1367.210449 1369.819946 1373.797363 1376.631226 1376.104614 1377.496948 1381.202026 1380.188599 1371.871338 1366.450073 1366.091064 1371.241089 1379.18396 1387.264893 1394.92395 1402.112793 1409.405151 1416.019531 1421.914185 1424.969482 1423.333862 1417.219482 1407.515503 1404.142578 1400.594238 1402.467773 1401.197632 1400.968384 1410.033447 1415.573608 1427.112427 1436.03418 1439.32019 1435.011353 1428.855713 1420.429932 1412.73291 1406.587769 1403.030762 1397.437622 1397.471924 1408.592651 1410.882324 1425.854126 1439.560303 1427.903564 1423.207153 1417.359863 1412.621948 1413.485596 1414.697998 1413.96875 1409.489868 1406.722168 1397.519043 1386.792236 1386.27417 1386.236816 1384.091797 1381.546997 1378.42395 1370.564087 1366.000854 1363.838501 1368.404663 1379.867798 1388.467041 1389.30835 1391.805298 1392.169189 1388.564697 1388.166016 1388.770752 1390.261353 1399.565063 1403.462036 1402.120117 1393.811035 1388.30896 1384.493896 1381.953735 1377.455933 1367.262817 1372.843506 1373.947144 1369.978516 1365.137085 1353.600464 1345.114136 1332.272095 1330.648071 1334.299438 1334.081421 1333.819214 1337.354858 1341.500488 1338.010254 1329.366943 1318.607544 1316.001221 1310.763428 1306.039673 1306.474976 1304.251343 1294.264282 1281.279907 1282.679443 1286.462891 1287.283569 1285.837036 1289.825195 1294.359131 1298.120728 1302.224731 1306.17334 1307.825806 1313.294067 1319.759521 1328.897461 1344.695923 1334.037109 1323.793091 1317.628174 1312.533325 1306.371704 1298.803955 1296.588745 1291.945557 1288.627441 1281.142456 1281.861572 1281.880859 1278.680664 1270.635742 1260.171387 1264.129395 1269.408081 1275.260132 1281.994751 1292.134399 1306.863281 1316.552979 1314.8479 1312.541504 1308.935181 1304.147095 1293.222534 1292.039185 1298.109253 1303.390991 1306.644287 1307.585327 1309.555054 1309.664185 1308.705811 1309.849365 1308.336304 1296.365356 1292.426392 1297.692871 1299.260864 1301.727783 1306.980469 1311.241821 1312.583008 1312.243774 1309.526978 1300.616699 1291.988892 1292.722168 1300.52832 1304.086548 1303.931641 1303.342163 1302.786743 1301.136475 1298.368774 1294.652588 1292.901245 1294.722656 1295.005005 1293.431641 1291.502563 1291.033569 1291.004761 1289.893311 1289.940552 1289.36438 1288.738647 1288.964966 1289.135254 1288.872803 1289.244141 1289.553589 1289.04834 1286.412354 1282.743286 1276.790161 1278.86084 1281.649658 1282.024902 1282.137939 1281.84375 1280.412231 1279.175903 1277.518799 1276.190308 1275.042114 1273.584473 1272.170654 1270.591064 1268.587891 1266.776245 1264.981812 1263.01001 1261.134155 1259.502197 1257.571289 1254.672607 1247.204102 1252.048096 1257.715942 1258.899048 1258.901855 1258.452515 1257.354248 1255.660889 1253.750366 1252.194824 1250.500122 1248.691528 1246.874268 1244.671753 1242.872314 1244.284668 1244.75647 1242.234863 1238.985718 1236.243408 1234.514648 1233.365845 1232.055786 1230.945679 1230.150757 1229.963501 1230.236206 1230.742188 1230.9729 1230.633301 1230.116943 1229.557251 1229.335205 1229.327515 1229.588745 1230.739624 1231.639648 1231.891724 1231.527222 1231.366821 1231.651245 1232.031372 1232.45813 1232.370117 1231.119629 1229.674316 1230.474487 1231.453735 1230.947754 1229.762939 1229.016357 1229.017456 1229.472046 1230.015137 1230.547241 1231.038086 1231.213745 1231.231567 1231.053955 1230.007324 1229.549316 1230.141113 1230.443848 1233.383911 1237.573242 1240.797607 1243.366089 1253.724121 1260.886475 1266.894653 1276.408936 1283.762573 1286.317505 1287.017456 1287.862793 1282.39978 1262.25769 1247.094604 1227.016968 1208.529053 1199.824951 1191.303833 1182.514404 1174.190063 1166.822754 1161.640137 1159.935791 1158.656982 1158.565552 1158.514038 1158.358276 1159.086426 1159.45166 1159.755127 1160.067017 1162.842407 1174.069702 1187.025513 1194.475586 1211.120483 1221.836182 1225.86377 1223.992432 1230.75415 1248.83667 1261.712158 1273.500854 1278.140625 1273.088867 1274.574951 1274.62085 1269.801514 1258.925537 1254.500732 1239.615112 1226.033936 1236.411499 1247.428955 1248.555176 1245.852417 1242.390259 1245.345337 1267.145508 1288.406006 1302.561523 1314.238159 +1466.31311 1471.723389 1477.156372 1476.287842 1471.915039 1473.688843 1478.254761 1476.612549 1476.571655 1487.438477 1489.893066 1495.500977 1513.0271 1522.769531 1531.197632 1538.35022 1545.10022 1561.191895 1573.932983 1595.288574 1620.262085 1636.105957 1668.365479 1691.588379 1712.747314 1732.443726 1739.448242 1740.79248 1741.368042 1741.675293 1742.079224 1743.37793 1745.187622 1745.350708 1736.558105 1726.317749 1715.568115 1703.407959 1691.015869 1676.528687 1663.37207 1649.151245 1639.902222 1628.651123 1615.922607 1608.327515 1601.543091 1595.321777 1586.42627 1580.039429 1574.098755 1564.421997 1551.660522 1537.269775 1530.758179 1526.046631 1522.131836 1518.310181 1514.737915 1506.255859 1492.250244 1478.478027 1471.46228 1464.483765 1453.39856 1444.171753 1436.508423 1442.730469 1450.814697 1449.691284 1439.84668 1428.244629 1417.675293 1413.069214 1409.838013 1408.684448 1408.197144 1405.712158 1403.723755 1399.46167 1389.358521 1379.400513 1377.886353 1383.797363 1388.560547 1398.212524 1412.710815 1415.926147 1413.26709 1403.264893 1404.208008 1423.903931 1440.88269 1449.940308 1457.718994 1455.489624 1445.803711 1446.839111 1455.830688 1457.228394 1455.282837 1447.419678 1440.797241 1441.951172 1440.141968 1432.769043 1425.368286 1418.615234 1411.86084 1405.473389 1399.392944 1393.67981 1389.078247 1382.492065 1375.792236 1364.116455 1355.809814 1352.379761 1349.901855 1347.356567 1344.398804 1337.907593 1343.876343 1349.385986 1357.911987 1373.74707 1384.681763 1391.338013 1394.50769 1397.355835 1399.251099 1400.390381 1402.122925 1403.922607 1402.994995 1402.986328 1406.385132 1410.953857 1415.103516 1417.40625 1418.224365 1419.357056 1419.355957 1418.124023 1414.502563 1408.18335 1400.727783 1392.074951 1379.827637 1385.061646 1384.604248 1383.229614 1380.924561 1379.766846 1376.619629 1374.842896 1374.825439 1375.054565 1373.596191 1370.128052 1364.847778 1355.713013 1353.351685 1360.312134 1364.385376 1371.089844 1376.797363 1386.138184 1389.101074 1394.422119 1402.10083 1408.365356 1412.619507 1413.805176 1420.451416 1425.240723 1425.65332 1427.182495 1429.82312 1430.263794 1429.700806 1428.617065 1418.746094 1407.657104 1399.188354 1390.587402 1384.455444 1379.176758 1378.520752 1382.85376 1386.552246 1391.373169 1403.444458 1418.440796 1442.565308 1442.388916 1444.372681 1443.628784 1441.407837 1438.316406 1440.934692 1450.006714 1458.296387 1465.989502 1472.874146 1479.079712 1485.062988 1487.252075 1487.00415 1485.347534 1483.776001 1484.661499 1482.032593 1478.045776 1473.888428 1470.956177 1466.07959 1461.908691 1466.394409 1473.328979 1479.913574 1485.774902 1487.310547 1487.526733 1485.285645 1480.126099 1475.733765 1468.32373 1465.187988 1464.130859 1462.278687 1457.810425 1454.117798 1451.638428 1448.346069 1444.955933 1441.291382 1425.900757 1422.677979 1422.855591 1417.414795 1414.499634 1419.380005 1421.720337 1412.652344 1402.619019 1396.454712 1389.602783 1377.643555 1365.200073 1359.592773 1353.985962 1343.565063 1342.05957 1343.734009 1344.378662 1342.872559 1334.255859 1325.412598 1318.211182 1316.726196 1324.626099 1332.979004 1340.07605 1345.331909 1353.071899 1364.340942 1369.810913 1378.171265 1378.92334 1380.4021 1382.409912 1385.117188 1382.405273 1375.024048 1371.010376 1370.282104 1374.921387 1382.746094 1392.318604 1399.633545 1407.576904 1414.605103 1423.980469 1433.136353 1435.684692 1432.182739 1423.166504 1415.402832 1414.857666 1411.548096 1412.057373 1413.591919 1412.270996 1408.401611 1416.240967 1432.882446 1444.069824 1453.085449 1448.460449 1436.639282 1426.30896 1417.407959 1414.828735 1410.213623 1405.84729 1401.723267 1417.042847 1419.969604 1423.326172 1434.727783 1433.194458 1428.347534 1423.568726 1418.994141 1418.863403 1417.916138 1414.935913 1405.924072 1395.427612 1389.208862 1393.015747 1400.449707 1401.031982 1393.065308 1387.841309 1385.22876 1381.901245 1376.770752 1372.027344 1379.553955 1389.113525 1397.919312 1398.853271 1397.365845 1391.340088 1391.974365 1398.987427 1400.996948 1403.308228 1406.199341 1405.785278 1401.908569 1395.345947 1392.989624 1393.134277 1388.937744 1379.3479 1380.397827 1383.116577 1379.90979 1373.665649 1366.021484 1355.123291 1346.50708 1338.991333 1341.376953 1344.505493 1341.872559 1337.117188 1332.43457 1328.659546 1326.987061 1323.726685 1316.922729 1314.364502 1306.159424 1305.099243 1299.875244 1291.269653 1286.348145 1284.230225 1292.855225 1294.146484 1293.387207 1290.117798 1293.126221 1298.912842 1304.122559 1308.411255 1312.227661 1316.322632 1319.529663 1324.454346 1332.831787 1345.019897 1335.377686 1323.243774 1316.123901 1310.140625 1307.447021 1303.186523 1295.069092 1293.386963 1292.674927 1289.557861 1286.383179 1284.551758 1281.931396 1271.19873 1261.366821 1264.961914 1268.390869 1277.265625 1284.190674 1291.197144 1305.356689 1318.003906 1316.877563 1314.695923 1309.662476 1303.532715 1295.225464 1291.603271 1300.721802 1307.268188 1310.36377 1311.970581 1313.776611 1314.248291 1313.90332 1314.016724 1307.52002 1294.349121 1296.117065 1305.904907 1305.606323 1303.622925 1309.3396 1316.778198 1315.404541 1315.280029 1310.310303 1301.210449 1291.839355 1292.368652 1303.918213 1306.550293 1306.13855 1305.825195 1305.162842 1303.547852 1300.225952 1295.594604 1294.249756 1296.092896 1296.407471 1295.089478 1293.523682 1293.665039 1293.246704 1292.952148 1292.844482 1291.697144 1291.749634 1292.062988 1292.078613 1291.458862 1291.661011 1292.542236 1292.574341 1289.652588 1281.732178 1279.286011 1280.75415 1282.983398 1283.840942 1283.919189 1283.640747 1282.459351 1280.994019 1278.993652 1277.710449 1276.829956 1275.322754 1273.777466 1271.875244 1269.811646 1267.962036 1265.817139 1262.737549 1260.17981 1258.186157 1255.426147 1252.599976 1257.56311 1258.470581 1259.982422 1260.708618 1260.664551 1260.2146 1259.28833 1257.956787 1256.393066 1255.031128 1253.50708 1251.823486 1249.74939 1247.17041 1244.928833 1246.672729 1246.333862 1244.035767 1241.409302 1238.818237 1236.46582 1234.876587 1233.251465 1231.658569 1230.787109 1230.756714 1231.066406 1231.62854 1232.427124 1232.189331 1231.44519 1230.81189 1230.947021 1230.692017 1230.481812 1231.460571 1233.266602 1233.94519 1233.858521 1233.803833 1233.974976 1234.240479 1234.53186 1234.278076 1233.019897 1231.273071 1232.103027 1233.252563 1233.086914 1232.404419 1231.878906 1230.813477 1230.082764 1230.059814 1230.308716 1230.628052 1230.914185 1231.152466 1231.84021 1231.545288 1231.349365 1232.582886 1235.171509 1239.768433 1243.89624 1247.869019 1253.003174 1257.932129 1267.479004 1273.109985 1284.002075 1285.10376 1280.966797 1276.724976 1273.56543 1266.886597 1260.769531 1249.228516 1232.265137 1215.812012 1204.885376 1195.385742 1182.766846 1172.696411 1161.520142 1160.558105 1160.758667 1162.704834 1170.955444 1170.286621 1167.362305 1169.237549 1172.21106 1172.354614 1172.832642 1176.412231 1186.3573 1204.047607 1213.324951 1219.196777 1229.467896 1238.181152 1241.462402 1239.731079 1242.027222 1256.222168 1273.843994 1286.399292 1289.462524 1289.972046 1289.006836 1282.137817 1279.627441 1271.151245 1258.553955 1239.877319 1247.514404 1263.776245 1268.32312 1266.846436 1261.117554 1254.637695 1250.950073 1266.983154 1287.929688 1313.366089 +1448.19873 1462.809326 1482.958008 1494.453125 1495.795166 1505.406982 1507.368896 1503.708374 1500.403564 1507.141113 1508.828247 1511.045532 1518.190552 1530.067871 1540.57959 1547.342773 1555.185181 1570.95752 1581.821411 1601.586426 1627.442017 1646.142334 1685.890869 1709.088501 1723.15979 1738.887451 1746.076782 1748.219482 1750.264648 1751.090332 1751.05249 1750.875244 1750.209473 1747.153931 1738.421631 1728.047485 1717.029541 1705.274292 1693.337891 1680.937744 1670.506226 1659.383057 1646.300293 1636.299683 1620.677979 1612.871948 1605.648926 1598.718384 1587.40979 1578.322021 1568.658936 1558.010742 1545.115479 1527.2146 1521.336792 1511.945801 1509.50415 1507.471191 1503.794189 1497.390747 1486.60498 1473.976318 1463.90686 1449.84314 1449.632446 1451.89917 1441.861938 1428.727051 1432.793335 1433.672485 1429.362915 1417.955078 1412.421997 1410.695068 1407.132568 1401.374023 1401.169312 1399.762573 1393.750122 1389.185547 1383.843384 1377.268311 1384.435425 1390.762817 1395.175659 1401.833496 1418.47644 1424.879028 1425.461304 1420.393066 1415.529663 1416.004761 1438.862549 1449.308838 1461.987793 1466.27478 1455.960327 1458.712036 1467.382568 1469.608032 1467.625244 1459.634155 1451.91687 1448.781982 1445.375122 1440.182495 1429.967163 1421.979248 1414.359863 1405.188843 1399.53418 1393.778931 1388.50061 1380.399536 1371.97998 1362.156616 1353.419312 1351.809326 1350.085449 1347.446533 1344.189331 1338.242065 1343.964355 1349.493164 1358.445312 1373.765991 1386.312378 1393.31958 1397.388184 1400.696289 1402.871094 1404.275391 1406.291626 1408.004883 1408.251831 1408.826904 1411.403687 1415.625 1419.976318 1422.491699 1423.531494 1423.654419 1423.067627 1420.680298 1415.934326 1408.755981 1400.19873 1388.11084 1388.071167 1391.833374 1387.823364 1388.244141 1388.288696 1386.685547 1382.421753 1379.603516 1381.287598 1383.006348 1382.356201 1378.970581 1372.387085 1364.937988 1355.268921 1361.389771 1367.765137 1373.727661 1386.485352 1396.929688 1402.568481 1406.81958 1408.532715 1412.341187 1415.768188 1421.003662 1424.614014 1426.412964 1426.937744 1427.724365 1431.109497 1432.563843 1431.786621 1428.674683 1420.912231 1412.086426 1405.819702 1396.801514 1388.065186 1383.007935 1378.241699 1381.566528 1386.013062 1392.281616 1407.09314 1421.43396 1438.540527 1441.196411 1446.887817 1450.673584 1452.198853 1452.66687 1451.672974 1449.768555 1459.92334 1467.575317 1474.799805 1485.007812 1490.08606 1492.068726 1491.957275 1490.095337 1487.212769 1490.06543 1488.838379 1483.667725 1479.43396 1476.081909 1470.613892 1464.013672 1468.978882 1477.666016 1489.231567 1492.717896 1494.06543 1494.006836 1492.377441 1488.937134 1481.492676 1473.787109 1471.121216 1468.776855 1465.960083 1461.161865 1457.000366 1454.016357 1449.22168 1442.302979 1433.709595 1419.799927 1411.430176 1407.095337 1402.236206 1396.691772 1401.652954 1408.93457 1397.955688 1388.861328 1388.262573 1383.314209 1375.402588 1365.108398 1357.237061 1352.779541 1348.728516 1348.278564 1352.059326 1352.759888 1346.892334 1335.787354 1324.494507 1316.672852 1321.657837 1331.259155 1337.102539 1349.029785 1356.442993 1357.590942 1361.358032 1364.744385 1369.017944 1377.261963 1377.404785 1384.146851 1390.038818 1389.531738 1380.588989 1377.447754 1374.894409 1378.796753 1389.625366 1399.216187 1406.762207 1415.78894 1425.953857 1439.668457 1445.847168 1446.534424 1440.502441 1429.912842 1432.103149 1433.421265 1422.936768 1425.827148 1433.680054 1431.339478 1418.870483 1420.062866 1436.016479 1450.230957 1466.454468 1458.309814 1443.377441 1431.993286 1424.830566 1422.170776 1417.24939 1411.436768 1405.848999 1415.194946 1427.039917 1430.808594 1434.894043 1438.888794 1435.869995 1431.391479 1427.774414 1424.284546 1418.261963 1410.01123 1399.481689 1393.945801 1399.150635 1403.934937 1407.356567 1408.089722 1404.560547 1396.863037 1392.675049 1387.443115 1380.466797 1377.018311 1387.80957 1398.825928 1404.601685 1404.939697 1402.06665 1400.406738 1406.362549 1409.241943 1410.235474 1410.337646 1410.210449 1407.511108 1403.419312 1403.219604 1401.844849 1396.423218 1390.46228 1386.0448 1389.437256 1390.845459 1383.302002 1374.99353 1367.297974 1358.139404 1348.341553 1343.471191 1354.377441 1351.799683 1345.568237 1340.872314 1333.765015 1330.252319 1326.44458 1316.920776 1318.431152 1317.806152 1309.453003 1307.0 1297.794678 1288.490479 1286.533447 1290.081299 1296.342041 1298.186768 1293.981934 1291.855713 1296.485596 1303.690796 1308.239502 1312.823853 1317.04248 1323.020996 1327.69458 1331.406738 1342.92688 1344.226562 1334.109253 1325.855225 1322.698608 1323.348999 1319.723755 1313.480713 1306.84082 1301.622803 1297.232178 1293.589355 1289.88501 1286.498047 1282.848877 1269.938477 1261.9375 1267.393921 1274.517822 1277.2677 1283.371948 1290.587158 1303.704224 1317.571777 1319.714844 1318.121826 1311.055298 1302.055664 1295.464722 1291.597534 1300.265991 1311.631958 1316.65625 1314.918823 1317.748535 1317.275024 1317.345703 1318.092041 1308.151001 1299.794434 1300.384521 1308.81311 1312.943481 1305.644531 1311.772949 1319.324707 1319.211426 1319.149536 1313.802368 1302.151733 1294.446289 1291.852051 1302.502563 1307.790039 1308.914429 1309.234497 1308.095825 1305.551147 1302.477905 1300.436157 1299.032593 1298.839844 1298.642944 1297.82373 1296.810547 1296.61377 1296.044556 1295.980713 1295.308716 1294.34021 1294.695801 1295.099731 1294.700806 1294.11499 1294.504028 1294.934814 1294.538696 1292.291016 1280.717529 1279.627808 1281.414795 1284.517456 1285.866089 1286.019287 1285.641357 1283.805664 1282.126343 1280.037598 1279.592285 1278.764893 1277.305664 1275.325562 1273.215332 1271.172607 1269.469727 1266.949097 1262.094971 1258.935303 1256.394409 1255.597412 1259.045532 1260.801636 1261.795776 1262.547729 1262.900879 1262.594971 1262.003784 1261.191895 1260.066528 1258.765137 1257.771606 1256.616699 1255.1698 1253.27478 1251.585083 1249.772827 1248.995972 1247.800903 1245.750977 1243.557373 1240.930664 1238.116333 1235.999268 1234.032227 1231.980469 1231.168457 1231.668579 1232.262085 1232.895874 1233.969727 1233.871826 1232.741577 1231.926514 1232.739502 1232.332397 1231.653442 1231.583252 1234.248047 1235.911865 1236.513062 1236.620605 1236.662109 1236.652466 1236.519775 1235.749512 1234.060913 1231.936768 1233.162109 1234.314209 1234.373901 1233.826782 1233.022949 1232.115479 1231.005737 1230.247437 1230.282349 1230.451416 1230.807495 1231.285522 1231.953125 1231.688721 1233.427246 1238.366211 1243.80481 1247.911743 1253.937256 1259.589722 1265.255493 1271.119995 1271.352173 1267.235107 1266.758545 1264.565796 1256.626099 1258.044067 1256.343018 1258.418945 1258.505249 1250.829346 1239.092407 1223.010742 1207.059692 1195.593872 1184.459473 1176.56604 1170.053101 1160.681641 1161.482422 1165.520996 1170.761963 1173.127441 1174.002563 1175.491455 1179.432495 1185.153564 1195.825439 1198.223877 1195.984009 1210.279175 1223.617798 1233.224365 1239.71106 1248.391113 1255.152466 1260.736206 1263.655273 1254.478882 1268.836792 1287.583618 1299.709106 1304.493408 1304.701172 1302.082275 1297.67688 1288.028198 1271.140625 1253.72583 1262.447876 1279.022583 1284.904907 1285.855957 1281.313354 1276.295776 1267.103271 1263.168823 1288.628174 1307.917847 +1438.387695 1458.424805 1480.379395 1495.514893 1504.200317 1513.250854 1522.849854 1524.549805 1523.276001 1526.405396 1529.636597 1532.845581 1536.285034 1538.694336 1551.73291 1559.705444 1572.878418 1585.339966 1603.901855 1625.039795 1647.970947 1686.848511 1703.163696 1717.031616 1728.033936 1743.290405 1753.141724 1757.571899 1758.5354 1762.860718 1761.644653 1756.769287 1754.047119 1747.007202 1737.921509 1727.88147 1717.395508 1705.165405 1693.514526 1683.45105 1673.436523 1663.09314 1650.88501 1639.308838 1623.494263 1615.53894 1608.0448 1600.189941 1588.815552 1578.498901 1566.898071 1557.310303 1550.797363 1542.897461 1533.626465 1520.410034 1508.631592 1496.894653 1488.781738 1485.481079 1476.761719 1463.082031 1459.938599 1465.295776 1465.749512 1460.661011 1453.387085 1432.455566 1422.920288 1421.135742 1414.51416 1412.322388 1415.65979 1418.50415 1420.380737 1418.250854 1407.559937 1401.613647 1394.97876 1390.058105 1382.131348 1379.296387 1390.339111 1397.814331 1402.130371 1409.154053 1426.597412 1434.706299 1437.786499 1434.04895 1426.778931 1421.78125 1432.803467 1447.489136 1462.192627 1470.883057 1470.972778 1473.04834 1478.42981 1478.596558 1474.82251 1471.726562 1469.33667 1462.596069 1450.692871 1444.355347 1435.705566 1425.495361 1414.466187 1401.984253 1396.791016 1391.268677 1381.564087 1373.450562 1366.038574 1360.989868 1355.300903 1353.382935 1351.286499 1348.214478 1344.44812 1338.729248 1343.495117 1348.990601 1356.910034 1370.134521 1386.119873 1394.994629 1400.103027 1403.830811 1406.622314 1409.690674 1412.191528 1413.426758 1413.283691 1413.196899 1415.082275 1420.194336 1424.814941 1427.780762 1429.125977 1428.28125 1426.870483 1423.274292 1416.943237 1409.73938 1399.636475 1389.398682 1399.284302 1392.084106 1390.521362 1393.420776 1396.083862 1395.246338 1390.637451 1389.178101 1390.828125 1391.896118 1389.915649 1383.879517 1376.827881 1369.775635 1359.666016 1363.290039 1371.861694 1380.894775 1395.079468 1406.21936 1414.423218 1417.755859 1418.991089 1421.919067 1427.84021 1431.213745 1431.518066 1431.59375 1431.695312 1432.619019 1434.488525 1435.186279 1433.766724 1427.735596 1422.892456 1417.215942 1410.5625 1403.275391 1391.194336 1387.42688 1381.759155 1381.477783 1385.314697 1389.971069 1403.865845 1418.422607 1429.302002 1435.556396 1443.034668 1453.067627 1459.593018 1461.17627 1461.990601 1460.789551 1462.17041 1469.265625 1475.314819 1488.37207 1493.552856 1496.132202 1497.560791 1497.592407 1495.883301 1494.972046 1493.265015 1489.978638 1486.380981 1481.849731 1475.971069 1471.59436 1472.435913 1483.137939 1493.987915 1497.505493 1500.340576 1501.298584 1499.064453 1495.418579 1490.747681 1482.488403 1474.439819 1473.113647 1467.619629 1461.884033 1456.211304 1450.402222 1441.248779 1434.28186 1423.944092 1412.12439 1407.624146 1403.597168 1398.305664 1391.402588 1388.472412 1389.012329 1388.342163 1382.929443 1381.603027 1377.806152 1367.869507 1359.123779 1353.535889 1351.696899 1351.953125 1353.872192 1357.291748 1356.675659 1348.870605 1332.807373 1321.686035 1319.298218 1324.10083 1328.588135 1336.741821 1342.098511 1352.227783 1360.686157 1367.62854 1372.304077 1376.728027 1378.678711 1380.344971 1386.453857 1391.87915 1392.337891 1386.770386 1380.977417 1378.362183 1383.386963 1393.757446 1403.710815 1411.779541 1423.467407 1438.644409 1448.875366 1457.04248 1460.13562 1452.840454 1441.244385 1449.525024 1449.330811 1441.394653 1445.096313 1449.848999 1447.299072 1437.871704 1424.254517 1436.838745 1449.6427 1469.099854 1464.020508 1448.726074 1440.855957 1437.510376 1430.578369 1425.319458 1419.202393 1414.491333 1411.39856 1430.785278 1442.264526 1445.585693 1447.667725 1444.161743 1441.11084 1434.604858 1428.016846 1415.636353 1404.414551 1397.351807 1403.383789 1408.034912 1411.693481 1413.788086 1412.955444 1410.985962 1407.995972 1403.534546 1391.846436 1382.726807 1378.526001 1391.79248 1402.957397 1406.316772 1407.565308 1406.171265 1406.496826 1414.275146 1417.205811 1417.397827 1415.690796 1413.716309 1410.937256 1408.259155 1406.370728 1404.538086 1396.680176 1389.309814 1390.674683 1393.234741 1392.94873 1386.226074 1376.649536 1371.494019 1363.296021 1353.359131 1355.980835 1355.822632 1354.269287 1346.370117 1340.601685 1334.151245 1331.38623 1331.343262 1323.338989 1316.97168 1304.316284 1305.2229 1300.782837 1290.02832 1286.710815 1293.890991 1292.194702 1299.271118 1303.498779 1293.804321 1293.779419 1304.688721 1308.616089 1312.909668 1317.116089 1323.177856 1331.544434 1341.480713 1344.577026 1345.447021 1343.301758 1334.033813 1327.439575 1332.988159 1333.750122 1325.95166 1318.379761 1311.879639 1306.405518 1300.830933 1295.859863 1290.903442 1287.069702 1282.238647 1271.820312 1262.168701 1267.420898 1282.093994 1283.047729 1284.002075 1291.088501 1301.394043 1315.720337 1320.784424 1320.347656 1311.347046 1302.411377 1298.375244 1293.335938 1297.17395 1310.616211 1319.340576 1319.001953 1320.829712 1320.929321 1321.425415 1320.173462 1312.083374 1303.17041 1303.732422 1315.803955 1320.448364 1317.719482 1315.351074 1321.820801 1323.751953 1322.00061 1314.785767 1302.682983 1298.170898 1292.165405 1299.748535 1307.650757 1311.438843 1313.355103 1311.870728 1307.571289 1304.224365 1303.223633 1302.295044 1301.91394 1301.133179 1300.60144 1299.802124 1299.61438 1299.083862 1298.700928 1298.18042 1297.70459 1297.84668 1297.902466 1297.730469 1297.595703 1297.491089 1296.685547 1295.390381 1292.395142 1280.041992 1280.503662 1285.09314 1288.483032 1288.772461 1288.324341 1287.571411 1285.354492 1283.743896 1282.387573 1281.846436 1280.864136 1279.012939 1276.879517 1274.427734 1272.281616 1270.298584 1266.855835 1261.710571 1259.129272 1259.01709 1260.626587 1262.814819 1264.50354 1265.448486 1265.74646 1265.019409 1264.329102 1264.046509 1263.538574 1262.592773 1261.593384 1260.538818 1259.005371 1257.770752 1256.817993 1255.301636 1253.138794 1251.39624 1249.342773 1247.226685 1244.781982 1242.110962 1239.463623 1237.010742 1234.473633 1232.059204 1231.690918 1232.869629 1233.96936 1234.91272 1235.467041 1235.436401 1234.978516 1234.728271 1234.965454 1234.609009 1233.959717 1233.844971 1235.727295 1238.131592 1239.47876 1239.796997 1239.839844 1239.327393 1238.52002 1237.377319 1236.140259 1235.253174 1235.352661 1235.607178 1235.683716 1235.198486 1234.379517 1233.316895 1232.160889 1230.945068 1230.432739 1230.483398 1230.98645 1231.672241 1232.784058 1233.827759 1239.666748 1245.432007 1249.731079 1255.138306 1261.90271 1268.968384 1269.664062 1261.056152 1249.996948 1247.187012 1248.043945 1241.613403 1236.85022 1236.237915 1233.985474 1240.88855 1247.01001 1246.340576 1239.775269 1221.800049 1208.021973 1203.028931 1196.973022 1186.22644 1178.008789 1168.35144 1161.622192 1162.862915 1166.945312 1170.529297 1178.106812 1179.887085 1184.349731 1198.05188 1207.537109 1210.799927 1211.467529 1213.59314 1227.765015 1241.450317 1250.064575 1256.174805 1267.916138 1276.034546 1280.278687 1275.359497 1267.667236 1285.091553 1307.363525 1313.890625 1319.376587 1321.230713 1313.554443 1300.414185 1284.34436 1266.33606 1274.747925 1291.327026 1299.543457 1302.451538 1301.28064 1295.53186 1285.735718 1271.691895 1279.043823 1294.890869 +1428.811523 1443.822632 1462.107788 1473.269775 1475.019287 1498.306274 1511.385986 1522.240356 1540.649658 1550.008179 1553.390991 1555.965332 1558.651978 1561.836548 1564.874146 1573.363892 1584.456787 1597.406128 1617.703857 1638.714966 1663.501465 1677.839478 1689.649414 1698.910889 1709.633301 1718.776489 1732.433594 1747.189697 1753.463867 1760.746338 1765.552734 1761.431274 1758.076904 1746.131226 1736.040405 1725.230469 1714.67041 1702.997314 1692.016113 1684.133301 1673.767822 1663.897461 1652.790894 1640.257446 1626.805542 1617.493896 1609.608154 1601.601196 1591.019287 1582.03833 1574.991821 1565.719727 1558.811279 1551.909424 1540.750488 1526.507202 1513.13208 1502.30896 1489.272461 1475.401001 1473.277466 1471.327759 1475.375366 1477.692505 1477.553101 1474.177002 1461.246582 1447.274292 1441.796997 1442.912354 1434.102661 1432.050903 1436.565796 1438.168579 1431.497803 1421.637939 1411.460083 1403.454346 1393.920776 1387.306274 1380.588379 1391.897095 1400.484741 1406.314575 1410.106567 1413.731445 1430.64563 1442.891724 1447.948364 1446.03064 1438.308716 1428.025879 1430.599365 1451.344238 1466.972412 1477.662964 1481.460205 1482.271484 1485.278442 1484.21167 1481.145264 1479.722656 1477.45752 1470.939697 1461.619995 1448.719482 1439.450439 1427.389404 1413.286865 1401.285034 1392.407715 1383.805908 1374.85083 1366.339233 1363.984009 1362.258423 1359.626099 1356.089478 1352.635376 1349.251587 1345.343384 1339.671875 1342.557373 1347.665649 1354.560425 1366.594482 1383.756958 1394.850952 1401.27478 1406.411865 1411.122314 1415.133911 1416.718872 1417.869263 1418.134033 1418.405884 1420.800171 1425.81311 1429.821167 1432.782715 1434.035278 1433.46521 1431.083252 1426.752563 1420.244873 1413.37146 1399.342529 1398.956055 1405.930664 1399.388306 1400.119873 1401.468384 1405.837769 1404.807129 1399.768433 1399.25769 1398.659058 1396.600586 1393.37439 1388.17981 1380.746826 1371.665161 1362.064453 1363.626587 1374.530151 1386.018188 1399.09082 1411.69104 1419.003662 1424.042236 1426.186157 1431.208862 1437.737671 1438.699951 1439.181641 1438.513916 1436.816406 1436.724854 1437.684448 1437.820923 1436.987915 1433.00293 1427.284424 1420.972168 1413.105957 1404.12439 1397.406982 1393.989868 1389.932373 1382.453613 1384.668213 1389.086426 1397.771729 1411.906372 1420.300537 1427.373413 1439.265503 1455.810181 1465.88269 1468.54187 1469.956421 1469.44043 1468.115845 1474.300903 1478.450806 1489.917847 1497.146606 1500.101074 1504.052002 1507.366943 1505.504761 1500.478516 1497.504272 1498.757324 1495.214844 1488.426636 1479.474121 1473.877441 1477.030273 1489.390747 1501.55481 1503.678467 1506.9021 1508.721924 1507.296875 1502.921631 1500.19519 1491.190674 1487.709229 1480.667969 1473.942017 1466.454468 1457.437744 1441.965576 1433.699219 1424.553833 1419.961792 1423.153442 1424.662842 1422.82666 1420.749634 1412.995239 1396.636597 1383.868774 1376.282349 1373.894897 1370.902832 1364.729858 1361.594116 1354.035034 1355.571533 1358.301147 1361.101685 1363.049927 1361.619995 1356.703003 1346.959595 1329.837158 1321.404663 1321.115845 1326.70813 1331.656494 1339.118652 1342.476074 1344.228271 1355.243652 1367.762329 1375.90918 1379.719604 1380.235352 1383.103394 1388.090088 1392.488281 1392.314087 1390.090698 1384.92627 1384.754883 1391.155518 1398.455444 1409.174927 1419.706787 1431.231689 1445.695801 1456.963379 1466.745972 1472.889648 1467.536743 1458.303467 1462.783569 1464.068359 1460.492432 1463.085327 1464.436401 1458.459229 1449.630981 1438.910645 1433.845825 1444.94458 1467.792358 1478.067749 1466.587402 1457.621948 1449.542358 1443.364624 1434.978638 1427.575806 1421.128052 1412.956787 1431.612915 1447.213745 1452.986328 1453.0625 1446.758667 1440.195679 1434.355591 1428.502808 1411.2677 1400.605591 1403.315796 1410.413574 1415.992554 1419.631958 1420.742798 1419.47998 1418.283691 1417.798462 1411.174194 1399.08728 1389.466919 1384.526978 1392.838867 1403.505981 1407.328979 1409.587646 1412.783447 1416.654053 1423.741455 1426.088135 1423.320801 1420.131836 1417.159302 1413.08252 1411.064941 1408.286621 1404.184082 1398.72229 1395.466797 1397.092407 1396.260498 1393.532593 1389.223145 1382.23291 1376.185181 1367.02002 1361.053589 1357.814575 1354.86084 1347.184937 1341.763306 1335.80481 1327.825684 1320.892334 1319.003906 1316.615479 1312.394043 1305.842896 1294.75769 1288.66333 1287.974609 1295.143311 1295.193359 1293.958618 1304.658203 1307.525757 1295.288208 1295.111572 1306.689453 1311.219971 1316.981079 1321.776855 1328.679443 1341.557861 1351.031372 1350.547607 1347.22998 1342.827271 1334.038574 1329.16333 1339.286011 1343.779297 1331.807617 1322.320068 1314.931152 1309.207275 1302.755981 1295.15686 1291.030151 1287.998535 1283.91748 1276.110474 1263.307739 1272.351685 1284.138306 1291.982666 1290.981445 1295.320435 1302.283936 1315.521729 1321.408936 1318.756958 1310.724365 1304.988037 1304.382812 1301.857178 1300.470215 1305.021484 1317.671387 1323.572998 1326.711548 1325.49939 1325.783447 1322.42749 1313.46167 1303.128418 1310.74646 1322.0896 1327.72644 1324.55835 1317.290894 1327.67627 1328.813477 1325.825317 1318.932129 1309.366943 1304.968872 1293.598755 1298.274048 1305.808105 1313.559692 1317.588257 1316.882202 1309.398926 1304.479614 1305.298096 1305.527588 1304.028931 1303.643188 1303.367188 1302.580811 1302.418335 1302.175903 1301.671875 1301.273438 1300.898315 1301.070312 1301.244629 1301.163696 1300.910522 1300.577393 1298.780273 1295.703491 1289.2677 1280.279419 1282.762329 1291.240845 1292.633667 1291.411133 1290.330811 1289.387573 1287.201782 1286.166626 1284.890503 1283.904907 1282.703369 1280.699829 1277.918701 1275.481567 1272.244629 1269.004883 1264.687622 1263.599121 1263.737793 1264.748779 1266.03772 1266.393311 1268.013306 1268.828003 1268.192261 1266.919922 1265.865967 1265.871094 1266.428223 1265.887451 1264.820679 1263.361572 1261.624146 1260.013306 1258.8125 1257.527466 1255.986694 1253.368652 1250.500854 1247.651367 1245.05481 1242.847412 1240.210571 1237.9375 1235.711914 1233.077637 1233.570923 1235.143677 1236.304199 1237.229492 1237.73999 1237.745605 1237.726318 1237.80188 1238.09729 1237.915649 1237.720825 1238.071777 1239.063477 1240.607788 1242.671997 1243.169434 1242.746948 1241.732056 1240.443848 1239.585205 1238.794312 1238.061035 1237.882812 1237.733276 1237.16748 1236.425415 1235.490234 1234.340576 1233.109253 1231.861572 1230.88269 1230.857056 1231.370361 1232.355957 1235.37439 1239.769775 1245.356689 1249.785645 1254.450928 1260.751587 1268.97168 1266.056519 1254.515381 1241.665527 1235.263672 1228.6521 1226.691772 1221.458252 1218.345947 1216.134399 1215.683472 1218.334717 1223.615845 1226.689331 1228.689941 1224.894653 1221.650879 1217.062256 1206.71106 1197.645264 1187.898315 1181.241211 1175.142822 1169.027466 1163.519165 1166.889893 1180.42981 1183.339478 1185.103271 1206.064453 1215.109863 1221.463379 1228.310547 1230.875366 1234.307739 1244.276733 1257.892578 1267.96228 1277.12793 1285.911499 1293.342896 1292.727417 1281.247314 1284.360962 1308.497559 1320.569214 1329.917114 1332.015381 1323.401367 1307.058472 1291.311646 1278.414795 1289.30957 1302.472778 1311.876709 1318.043457 1318.430176 1312.424561 1302.90564 1289.242432 1277.868774 1287.68335 +1399.795532 1416.88623 1433.761597 1446.762329 1449.18335 1472.75 1487.468384 1501.277222 1527.764893 1547.912109 1559.950806 1567.633789 1574.348999 1576.666992 1576.998169 1584.104858 1590.687988 1602.272827 1617.807861 1629.16687 1644.638672 1654.118042 1664.67395 1677.116699 1684.758423 1692.325562 1704.150024 1712.591431 1724.011353 1736.386475 1740.406372 1745.146973 1747.004883 1741.439697 1733.307617 1721.301636 1711.0354 1698.416992 1690.219849 1683.407593 1672.082397 1662.271118 1651.548828 1639.434692 1628.82373 1620.115845 1612.061157 1602.92627 1593.75647 1585.614502 1578.709351 1571.010254 1563.078247 1553.843994 1541.547974 1525.642822 1509.554443 1501.030151 1486.578857 1483.922607 1489.911865 1490.740356 1486.44104 1484.900269 1484.707642 1483.288696 1477.03186 1467.463623 1463.997925 1459.437378 1454.949951 1454.934448 1455.367554 1452.635498 1435.429199 1417.181519 1408.771606 1400.247437 1390.232178 1382.877686 1395.077393 1402.184814 1408.788696 1414.014404 1418.921265 1421.640625 1430.917236 1450.161621 1456.755859 1456.852661 1450.956055 1442.23645 1433.798096 1455.576782 1470.144775 1486.912964 1490.418457 1490.837891 1492.939209 1490.599854 1487.289551 1485.045288 1481.248779 1475.669434 1466.636719 1451.018311 1440.634277 1423.766479 1409.503174 1396.492188 1383.932373 1376.081787 1373.647217 1369.793457 1366.665161 1366.56897 1363.993164 1358.906982 1353.826782 1350.906006 1347.409424 1343.525757 1340.214966 1345.76062 1351.024292 1359.463989 1373.875732 1390.152466 1399.322632 1406.934814 1413.14917 1417.090088 1419.268311 1421.330322 1422.55603 1423.352417 1424.755859 1428.756714 1433.782837 1438.111938 1439.975586 1439.040405 1435.246582 1428.682861 1422.12439 1415.186768 1399.333374 1403.773804 1409.863403 1409.993774 1413.488281 1416.381348 1416.08313 1411.882202 1408.53833 1407.4104 1404.540405 1400.735596 1396.221436 1390.499512 1383.324341 1371.778198 1362.947021 1363.857178 1375.180054 1387.10437 1398.409302 1412.252197 1423.030396 1429.706787 1435.383057 1441.220825 1444.070801 1444.984619 1445.092529 1443.899048 1441.704712 1441.726074 1442.387939 1443.971436 1443.531006 1438.731201 1432.416992 1424.9104 1415.124023 1403.598633 1402.917358 1402.650391 1397.959229 1391.100708 1384.013916 1388.62793 1402.599365 1410.048096 1418.514526 1429.65686 1440.283325 1457.992065 1469.013184 1474.795898 1477.628052 1477.80896 1476.259033 1487.390259 1492.580811 1498.752686 1502.627441 1508.114136 1514.158081 1515.316406 1514.559204 1509.392944 1503.958374 1505.80127 1503.686157 1496.279541 1484.806274 1474.423218 1483.041626 1495.192383 1503.716187 1509.157104 1513.403809 1515.460571 1515.248413 1512.686768 1507.573608 1501.940552 1496.356812 1489.564209 1479.279297 1474.954712 1460.469238 1447.83313 1441.849854 1434.615112 1433.814087 1440.30127 1444.988403 1443.526611 1434.352905 1420.253174 1402.679688 1391.480591 1378.530518 1370.478027 1365.933716 1365.050903 1362.894897 1363.37793 1364.870117 1367.240112 1369.501587 1369.430786 1365.430908 1356.329712 1343.062256 1329.259888 1322.85376 1321.297607 1330.670654 1339.195923 1346.868408 1352.058594 1352.87146 1352.68103 1355.615845 1363.540649 1367.006226 1375.152588 1379.065796 1383.001099 1389.271973 1391.278687 1390.626465 1387.807861 1387.598877 1391.631104 1401.489746 1417.727173 1427.872803 1437.953247 1451.825562 1460.244019 1472.835815 1479.711304 1479.56189 1473.998535 1479.484497 1485.022217 1484.450684 1485.361816 1481.430054 1471.047363 1460.540771 1450.176758 1438.835815 1441.186646 1457.622925 1475.843506 1480.276245 1472.144043 1462.199097 1451.040039 1442.585693 1433.616455 1424.443237 1421.272705 1437.044189 1450.195557 1452.203369 1449.566284 1440.783203 1434.819702 1428.503174 1418.75769 1406.955688 1406.363159 1410.5 1418.136719 1426.202515 1428.615845 1427.424438 1426.611328 1427.677002 1423.589722 1416.474487 1406.116455 1392.677612 1389.765625 1396.230713 1402.274048 1409.12854 1411.546265 1413.809326 1421.484863 1428.871094 1429.379272 1427.663208 1423.874878 1419.592163 1415.725952 1414.568726 1411.484619 1406.834595 1404.414673 1403.924438 1402.249878 1398.68103 1394.859985 1391.592896 1384.581665 1377.509521 1367.809937 1360.59729 1355.317017 1350.523926 1342.508057 1331.958008 1327.664917 1322.094604 1313.156982 1302.82019 1300.345337 1298.194946 1292.851807 1288.836914 1290.782349 1295.017578 1306.604004 1294.476074 1296.203613 1305.584106 1308.134277 1298.047974 1293.510132 1305.699829 1311.515625 1318.535889 1324.578125 1332.845093 1348.003052 1355.654785 1353.682007 1347.677612 1342.095093 1336.008057 1334.129517 1342.008789 1343.244263 1335.82959 1326.018188 1318.959595 1313.295044 1307.437988 1300.88916 1293.35376 1289.762451 1284.589355 1275.018188 1264.027466 1269.670044 1282.683838 1294.505127 1295.715454 1299.21875 1305.664551 1318.560059 1326.31958 1321.391113 1315.181885 1310.379272 1308.257202 1306.640503 1304.261475 1304.175049 1313.747192 1325.555176 1330.195557 1327.964233 1330.457031 1326.929443 1313.481567 1305.046387 1318.510132 1327.662842 1332.421997 1331.837402 1330.870239 1332.591064 1331.587891 1328.600952 1322.265137 1315.969727 1307.020142 1300.874268 1303.203857 1305.979004 1316.054565 1319.825317 1319.415771 1314.26709 1304.544678 1307.736938 1308.503662 1306.35437 1306.053223 1306.430542 1305.367554 1305.215332 1305.102417 1304.835571 1304.258911 1303.150635 1304.373413 1304.928345 1304.261475 1304.291748 1304.328491 1302.042114 1296.18457 1287.081665 1280.282959 1284.642578 1293.961914 1294.511475 1293.461792 1292.179321 1291.100708 1289.444214 1288.464111 1287.109985 1285.645874 1283.854126 1281.300781 1279.30249 1276.835815 1271.511475 1267.56543 1269.089355 1269.910278 1268.790771 1269.741089 1270.287231 1269.958618 1270.851807 1271.115845 1270.431274 1268.537231 1267.048828 1267.680542 1268.709961 1268.671509 1267.745117 1266.185547 1264.260986 1262.193726 1260.554565 1259.185059 1257.454224 1254.96936 1251.196045 1247.836182 1245.199463 1242.536011 1240.66748 1239.143921 1237.708008 1236.924194 1237.121948 1238.259155 1239.191528 1240.246216 1240.641235 1240.291626 1240.098389 1240.744141 1241.65564 1241.837769 1241.775146 1241.529663 1242.096924 1243.459595 1245.355469 1245.821411 1245.236206 1243.864624 1242.569702 1241.901733 1241.106445 1240.303467 1240.179443 1239.856567 1239.076904 1238.071167 1236.957397 1235.582886 1234.192139 1232.539062 1231.60498 1231.160278 1231.968018 1234.711914 1238.254395 1242.609375 1248.438721 1253.7771 1257.793213 1262.240356 1261.496826 1249.890137 1238.323608 1230.004883 1218.336426 1214.356689 1211.60376 1207.256226 1207.035156 1204.650269 1202.539795 1204.488159 1204.870728 1205.241699 1212.314697 1220.308838 1224.591675 1224.887573 1217.066406 1205.713623 1200.173096 1194.16687 1187.026489 1179.820801 1174.574341 1165.763306 1174.714355 1188.382935 1182.350098 1202.042969 1217.014038 1228.299316 1238.192749 1245.885742 1252.689087 1258.474365 1264.907837 1276.987915 1289.100098 1295.587158 1299.395752 1302.571411 1298.288452 1292.806396 1306.452637 1322.596313 1334.14978 1337.591797 1330.605591 1311.894531 1297.966064 1287.042725 1301.815186 1314.000732 1323.957153 1329.555298 1329.40564 1323.112549 1313.203003 1297.646362 1283.446533 1290.801147 +1380.044067 1392.949829 1405.783081 1411.495728 1433.969604 1452.067139 1461.399414 1493.835205 1517.661255 1536.690186 1548.824951 1557.467041 1562.787964 1565.185059 1566.502441 1568.683594 1582.837402 1597.192749 1609.936646 1617.994263 1626.148438 1633.531982 1642.86438 1649.894531 1654.71814 1662.60376 1675.021851 1690.34668 1699.585815 1706.799194 1715.044556 1723.506226 1729.039795 1729.406494 1725.825928 1718.005493 1706.182739 1694.655884 1688.324341 1680.739624 1668.768921 1659.195801 1647.949585 1637.529663 1629.400269 1622.638672 1613.373413 1604.154785 1595.306641 1588.562134 1579.909424 1571.56665 1563.841187 1552.609497 1534.327271 1518.15271 1507.05835 1498.867798 1498.226929 1495.899292 1500.668579 1503.21521 1499.639404 1496.508057 1495.19519 1492.563965 1488.775146 1482.296387 1479.204834 1471.457397 1465.641968 1459.343872 1454.574951 1446.177979 1425.329346 1411.763672 1403.410767 1393.678711 1385.111694 1394.322632 1401.206177 1409.455322 1416.817383 1423.887207 1429.910889 1435.360229 1437.58252 1452.715942 1465.172363 1468.560425 1463.62085 1454.888306 1446.016235 1458.767334 1473.54187 1487.991821 1501.706543 1502.038574 1501.462036 1500.192139 1496.861816 1491.254883 1485.574463 1477.323975 1465.315063 1449.517944 1434.49707 1414.460449 1400.855957 1389.119873 1380.152466 1378.117554 1375.657593 1373.348511 1371.699219 1370.192871 1368.104492 1362.89563 1357.734741 1354.255859 1350.556519 1345.788696 1341.032715 1344.592041 1350.028931 1355.639648 1367.299927 1379.128052 1393.776733 1403.82019 1411.130371 1416.608521 1421.16394 1424.72644 1426.57019 1427.78418 1429.123291 1433.036499 1437.621094 1441.571899 1443.387451 1442.610596 1439.982056 1430.78479 1423.774902 1415.896606 1401.194824 1406.07605 1413.574463 1418.214355 1418.696655 1419.428223 1418.978394 1417.031738 1415.713501 1414.018677 1409.90918 1404.950317 1399.102783 1391.149536 1384.70105 1374.819702 1364.911621 1364.294922 1372.68457 1383.97876 1395.328857 1408.369507 1422.769775 1431.552612 1438.620605 1445.483398 1449.474243 1450.922363 1451.163696 1450.598877 1448.595215 1448.843384 1449.288452 1452.590942 1453.328613 1446.113037 1437.246826 1427.58252 1414.99292 1411.339111 1409.465454 1409.692139 1407.214111 1399.643921 1389.38855 1387.318604 1399.867798 1415.078125 1422.418701 1430.365479 1437.464478 1450.19751 1468.362671 1478.824951 1484.05127 1488.489502 1490.434082 1494.994263 1500.36084 1505.109741 1508.956543 1513.517944 1518.053101 1520.233521 1519.853882 1513.048828 1511.305176 1513.787598 1510.111938 1501.856079 1489.192017 1480.797974 1485.244995 1495.341064 1505.05603 1513.020996 1518.059082 1520.496704 1520.497559 1518.413696 1513.871216 1508.370361 1501.331055 1495.083618 1489.605957 1487.411011 1475.272949 1461.516113 1457.237305 1449.540649 1448.589478 1454.690063 1454.035522 1444.675659 1428.17334 1414.844604 1404.65564 1391.205933 1381.666016 1378.868652 1377.300781 1373.444458 1369.566162 1370.301636 1371.675415 1374.038574 1375.463745 1373.945557 1367.176147 1356.674072 1342.101929 1328.840088 1323.693726 1322.543823 1334.211304 1348.148682 1356.804077 1360.305176 1361.030518 1361.3125 1361.31604 1363.034424 1364.798584 1367.316162 1375.339844 1377.626343 1384.567627 1390.410156 1390.753296 1389.244385 1388.848022 1392.845825 1404.621216 1418.863892 1429.147949 1441.217773 1452.00769 1462.352783 1475.734131 1483.404053 1489.049316 1493.704956 1501.002197 1505.514893 1508.944092 1507.837769 1499.236816 1487.035767 1476.954834 1462.13855 1452.79834 1442.76123 1450.150513 1470.104004 1485.441406 1487.911865 1472.823608 1460.209229 1449.299194 1437.327026 1427.997437 1432.093994 1442.628906 1452.860107 1450.097046 1445.662109 1438.332886 1430.279419 1419.165527 1411.154907 1407.772827 1414.281616 1416.613037 1426.832764 1431.531738 1432.99646 1432.202271 1431.000366 1430.359497 1427.584717 1418.874878 1408.374634 1395.933228 1399.037598 1405.75293 1409.996582 1414.315796 1415.21167 1415.239624 1422.326416 1428.128174 1430.339966 1429.550171 1426.799194 1424.935791 1421.490112 1418.25415 1414.478638 1410.911255 1407.691528 1405.786133 1403.166992 1398.013672 1394.244019 1391.226074 1383.016113 1374.985718 1365.655884 1354.950684 1349.0 1343.424927 1337.433838 1332.152588 1321.300781 1311.862671 1303.543579 1296.062134 1292.013428 1293.138916 1296.361694 1298.074341 1301.002075 1306.288818 1308.32373 1295.776367 1295.269287 1305.185425 1306.903931 1304.656738 1297.997681 1302.254395 1310.789429 1318.238281 1326.079102 1335.310425 1350.370239 1356.012695 1354.230469 1348.327393 1342.232544 1339.479858 1339.981934 1342.624878 1344.082031 1343.009521 1332.538208 1324.414673 1317.328979 1311.608765 1305.807007 1298.044434 1292.204468 1285.477051 1274.13269 1264.570312 1267.751709 1277.249023 1290.469971 1294.96814 1300.678833 1308.509155 1325.127686 1331.728638 1329.052002 1318.226074 1313.633667 1310.856567 1308.375854 1305.116577 1304.819946 1313.9198 1324.843018 1331.778809 1329.887817 1333.634277 1330.56665 1316.04187 1312.543823 1322.652222 1331.261963 1335.530151 1335.8302 1335.527466 1334.726196 1332.376099 1327.944824 1322.601562 1315.877075 1305.135254 1303.746948 1309.097656 1313.067017 1317.773682 1321.528931 1320.839355 1317.783081 1311.509766 1312.210693 1313.51001 1311.783936 1310.696899 1310.092285 1309.394043 1308.895508 1308.528687 1307.845459 1306.838745 1305.233521 1307.209351 1307.858032 1307.157715 1307.180908 1306.63269 1304.517456 1298.267456 1289.007446 1280.170166 1284.919312 1294.702148 1295.684692 1295.44397 1294.243408 1293.165039 1291.540161 1290.777222 1289.410767 1287.741455 1285.459473 1283.321899 1281.558838 1279.188965 1274.811157 1271.579834 1272.467651 1273.022095 1272.928711 1273.49646 1273.938843 1273.946411 1274.043701 1273.48291 1272.137573 1270.025024 1267.928101 1269.040771 1270.459961 1270.480835 1269.780884 1268.598633 1266.546875 1264.27356 1261.970825 1260.117432 1258.078247 1255.315186 1251.260742 1247.900513 1244.672607 1242.741577 1241.353271 1240.454468 1239.971802 1239.726929 1240.097534 1241.220947 1242.309814 1243.39917 1243.483765 1242.660278 1242.085205 1243.281494 1244.763672 1245.066528 1245.459839 1244.990723 1244.354248 1245.516235 1247.375 1247.97876 1247.458618 1246.165527 1244.736694 1243.554688 1242.957886 1242.3927 1242.272461 1242.02771 1241.205566 1240.078125 1238.839111 1237.400269 1235.650635 1233.553711 1231.847046 1231.584595 1233.999756 1237.025879 1240.856567 1245.415405 1252.362549 1257.442505 1259.531738 1258.309448 1248.070557 1236.562134 1223.443726 1214.023804 1206.468384 1203.450439 1198.708496 1196.531372 1195.648193 1193.023682 1192.110474 1192.228271 1191.310669 1191.06543 1193.922119 1210.208008 1223.759399 1230.880493 1222.147583 1211.566162 1204.700562 1199.89563 1196.393677 1182.057007 1173.644653 1165.429199 1170.730591 1190.109619 1202.854126 1191.323975 1211.759277 1224.776123 1236.052124 1244.331787 1254.593018 1262.614502 1272.417847 1282.003784 1287.005981 1289.517334 1299.213135 1307.824463 1310.516357 1308.979736 1306.182129 1318.592529 1333.434082 1343.663208 1334.939697 1321.114624 1307.578125 1293.391602 1311.270508 1324.483032 1333.666992 1338.968506 1337.04834 1328.204834 1315.35791 1298.23584 1293.716187 1298.276855 +1362.113037 1371.143311 1382.980225 1392.192871 1417.803345 1435.787231 1451.273071 1472.115234 1497.487793 1513.053589 1523.865234 1533.993286 1542.428345 1547.399048 1549.013916 1553.341553 1567.254639 1583.446167 1598.321777 1606.526123 1611.806885 1617.373657 1624.162598 1630.087158 1634.452881 1638.625977 1647.182861 1662.922241 1676.233887 1688.276489 1693.212646 1701.75415 1710.32666 1715.770142 1716.73584 1711.660156 1701.401123 1692.166504 1685.032837 1675.714233 1664.805664 1654.044922 1642.668579 1634.663086 1628.414062 1622.259644 1613.742798 1604.469482 1595.47876 1587.965332 1577.518555 1567.415771 1557.910645 1539.213745 1522.021851 1510.827271 1512.270508 1516.457397 1514.644775 1509.990845 1512.1427 1514.733521 1513.527344 1508.517944 1504.456909 1498.748047 1491.911743 1483.795166 1476.904419 1467.44519 1460.2854 1453.633301 1443.381836 1432.856689 1417.684692 1407.62146 1398.014526 1387.44043 1393.743652 1399.858032 1408.216309 1417.516968 1425.748657 1435.250488 1445.050659 1453.792969 1458.558716 1461.155762 1476.334595 1479.673584 1479.200317 1475.61145 1462.478882 1467.93396 1481.573486 1492.509644 1507.347534 1509.653809 1508.644043 1507.145386 1504.092041 1498.523804 1487.917114 1476.810669 1458.1604 1438.534058 1420.69519 1407.213257 1399.257812 1395.511963 1388.22876 1383.437866 1378.877808 1377.110352 1376.852539 1375.239136 1371.775024 1366.548462 1363.297485 1358.812012 1354.427734 1348.087646 1341.773071 1344.490967 1351.14917 1359.809937 1369.868896 1377.853394 1388.286621 1401.086548 1409.562378 1415.832397 1423.951172 1427.802002 1430.2854 1432.04895 1434.189575 1437.275391 1440.829468 1444.880371 1447.331543 1447.549927 1443.214844 1434.613525 1426.484985 1420.213623 1409.730103 1408.587036 1414.308228 1421.092651 1422.467285 1423.143433 1422.897217 1421.486572 1419.850952 1417.994507 1414.735962 1408.577271 1402.015503 1394.082764 1388.427368 1379.820679 1371.357178 1364.689209 1369.781494 1377.300659 1388.946777 1401.616821 1417.230713 1428.868042 1437.706787 1448.493652 1453.595703 1454.259766 1455.304688 1456.411255 1456.619507 1456.91626 1458.639648 1460.082397 1457.746094 1453.084106 1443.001587 1428.713257 1421.921509 1417.157959 1415.378418 1417.16333 1417.41748 1409.105469 1395.774292 1387.741455 1394.603394 1405.072632 1415.312988 1426.2052 1432.9823 1441.237671 1457.678955 1474.205444 1489.209717 1493.86377 1498.535156 1501.048218 1505.266357 1509.968872 1514.102173 1518.143555 1522.375 1525.456421 1526.279907 1522.799072 1518.491089 1516.755859 1513.50354 1504.417725 1492.428955 1485.74353 1490.846191 1497.99585 1506.5802 1515.324097 1523.054565 1526.811646 1526.910767 1524.838013 1519.849609 1514.524414 1509.374146 1503.736084 1499.016968 1491.891968 1490.043091 1483.79126 1480.851929 1469.06665 1460.958984 1455.625854 1449.475098 1435.922974 1417.418335 1409.361938 1402.635132 1391.839355 1392.505615 1391.70105 1387.567383 1380.996948 1378.522095 1377.474243 1376.900269 1379.881226 1380.351196 1379.282593 1369.717896 1357.508545 1341.165649 1327.366943 1323.455811 1325.546143 1337.02832 1354.111328 1363.230713 1367.642944 1369.884888 1371.401001 1370.367676 1369.001587 1371.610962 1377.499878 1381.484497 1387.038086 1392.821899 1391.764648 1391.908691 1389.310181 1391.842407 1395.939697 1403.830078 1416.134033 1425.265137 1439.761108 1449.643677 1462.848999 1474.901367 1484.785278 1494.074463 1501.700195 1507.884521 1515.170532 1525.190308 1527.199951 1519.068604 1505.730103 1493.01001 1477.60498 1463.602661 1452.886475 1450.814575 1469.867676 1487.569702 1491.381592 1483.317993 1468.030518 1454.04187 1441.910767 1432.603882 1438.149414 1449.523438 1453.414673 1453.198975 1446.878662 1441.023804 1428.846069 1413.145996 1410.045776 1414.694458 1421.624268 1425.1073 1431.029907 1436.156616 1437.970215 1437.104248 1434.769775 1432.316162 1428.992676 1419.780396 1409.043335 1400.835083 1405.780151 1412.216675 1417.299927 1421.19519 1422.037354 1422.14563 1424.635132 1428.978882 1432.151611 1432.108276 1430.434937 1429.187744 1426.557495 1421.556763 1416.578491 1412.098755 1408.107544 1404.51709 1400.210571 1393.502319 1388.5448 1382.76709 1375.766968 1368.253662 1359.053223 1349.717773 1341.254883 1336.899292 1329.600708 1326.333984 1318.236084 1309.004883 1300.239868 1294.73584 1301.067505 1305.797241 1307.611084 1308.919067 1310.612549 1312.398193 1309.70874 1301.62439 1293.67041 1303.308838 1306.984741 1307.088745 1305.474854 1305.178467 1311.56189 1319.004272 1326.117798 1335.068604 1348.027954 1357.172485 1354.654419 1349.825684 1343.481445 1341.026245 1340.873901 1342.82959 1345.205688 1344.850098 1340.017334 1328.042847 1320.173096 1313.829224 1307.886475 1301.750732 1295.628296 1287.301025 1273.923096 1265.377319 1267.802612 1274.851318 1281.592041 1294.032227 1300.10022 1307.219482 1321.836792 1332.685059 1330.338867 1319.502319 1314.931396 1312.928101 1309.981445 1305.726318 1304.395264 1312.275635 1322.98645 1332.687134 1335.921997 1338.5271 1331.856812 1319.658203 1316.033936 1325.267578 1338.209717 1340.579102 1338.918213 1339.100708 1337.95813 1333.873047 1330.151611 1321.054932 1312.012451 1303.072998 1310.766724 1320.11853 1320.559692 1323.312744 1325.475586 1322.872925 1318.344604 1315.33252 1316.768311 1318.419312 1315.818359 1315.435547 1315.217651 1313.721069 1312.564453 1311.94104 1311.020264 1310.192261 1309.756226 1310.55896 1310.914795 1310.04895 1308.930054 1307.563843 1305.227539 1297.446899 1288.976807 1280.289795 1286.623047 1294.639771 1296.932983 1297.103638 1296.217285 1295.359741 1293.746948 1293.078979 1291.808838 1289.94458 1287.911255 1285.362671 1282.990601 1280.491333 1278.149536 1276.504395 1276.737183 1276.777588 1276.655029 1277.158813 1277.661499 1277.861694 1278.337036 1276.925415 1274.628662 1272.270752 1270.166382 1270.598389 1271.770752 1271.72229 1270.959961 1269.782349 1268.088623 1265.418579 1262.728882 1260.013306 1256.917358 1254.470093 1252.062012 1248.973999 1244.387817 1243.800659 1243.029785 1242.135254 1241.755249 1241.794922 1242.490112 1243.197632 1244.904419 1246.685303 1246.975464 1244.787231 1243.352539 1246.801147 1249.103271 1249.875977 1249.84082 1249.210449 1248.783569 1249.042969 1249.758057 1250.197632 1249.732178 1248.547119 1247.209595 1246.095215 1245.256104 1244.890381 1244.404175 1244.176392 1242.825195 1242.292969 1241.171875 1239.7323 1237.96106 1235.784668 1233.582764 1233.866943 1236.473755 1239.462036 1243.178833 1249.771362 1256.64563 1259.275024 1259.031982 1249.366089 1237.184326 1223.124146 1213.546143 1205.296753 1197.124634 1194.829834 1191.733276 1190.314941 1190.005737 1188.57019 1186.357422 1183.093628 1179.423584 1181.140381 1186.36792 1199.763062 1223.937866 1233.724976 1223.860596 1214.219482 1205.771729 1198.460205 1192.006226 1178.706787 1168.715454 1167.327271 1177.399414 1189.661621 1210.30896 1202.989868 1192.786133 1210.61499 1223.468262 1233.403687 1241.769531 1252.943359 1265.115479 1271.597412 1270.171387 1273.775513 1295.036255 1306.46582 1315.14624 1320.532837 1319.831177 1317.421021 1329.396118 1344.360107 1342.606934 1331.063477 1316.620239 1302.772705 1318.493286 1332.011475 1339.927124 1344.762329 1340.800781 1330.554688 1313.081299 1302.145386 1311.6604 1308.156006 +1347.741211 1360.922241 1372.919189 1381.72522 1392.568237 1414.769897 1438.21167 1465.359985 1481.915649 1482.231445 1489.771484 1510.539062 1523.844604 1528.272095 1531.136963 1545.096558 1562.5271 1576.324463 1588.790405 1594.690918 1600.025269 1602.854004 1605.741943 1610.789673 1614.779297 1622.553101 1632.595703 1641.394897 1650.60022 1661.286255 1673.943237 1680.940063 1692.411987 1705.133667 1710.173218 1705.943237 1697.428467 1689.95105 1682.50769 1672.783081 1661.635376 1650.102295 1639.005493 1631.461304 1626.5 1620.419312 1612.533691 1602.851318 1591.147705 1579.575439 1564.308472 1553.677368 1542.789429 1530.35144 1524.6875 1528.062866 1529.220459 1526.674805 1524.070557 1523.269409 1528.497559 1531.017944 1527.093994 1515.315796 1505.769165 1495.970215 1486.897095 1475.631958 1466.338379 1459.218262 1451.513428 1437.09082 1427.152466 1416.250977 1408.489136 1401.320068 1392.903442 1390.098633 1398.144531 1405.638184 1415.983765 1424.778931 1437.998291 1448.500732 1461.324829 1474.065796 1478.490112 1478.292969 1480.396484 1485.709717 1487.12085 1486.064331 1477.946655 1470.993164 1486.819458 1504.818237 1515.943115 1518.723145 1516.958984 1513.623169 1508.912109 1501.346558 1487.280884 1471.070557 1447.910034 1430.709839 1421.812256 1415.249023 1408.323486 1401.376709 1393.859375 1389.731445 1384.567261 1383.257202 1383.342285 1381.105591 1378.715576 1375.461914 1369.738159 1364.022949 1357.134521 1349.761108 1342.83374 1346.194092 1352.369141 1363.792236 1373.021606 1382.67334 1392.631592 1401.561157 1411.367432 1417.922241 1425.964355 1430.154663 1433.026611 1435.462158 1437.872314 1440.943115 1444.480713 1448.383911 1451.682251 1452.416748 1450.235596 1440.092773 1432.51355 1426.171875 1419.747437 1410.347656 1414.766357 1423.732666 1425.625488 1426.806519 1426.926514 1425.261963 1423.228394 1420.556885 1417.035889 1410.704102 1402.450684 1398.495117 1393.752441 1387.484619 1378.765259 1369.457764 1369.020508 1374.008667 1380.22168 1392.598389 1407.344116 1421.094727 1431.223511 1440.651123 1449.725342 1454.374634 1456.637207 1461.338989 1464.783325 1464.842285 1465.655396 1465.489502 1462.743286 1456.1427 1445.516357 1436.091797 1430.993774 1424.994507 1423.296021 1424.355347 1421.579468 1412.116211 1399.279297 1390.349243 1394.580444 1407.531372 1420.412476 1425.458618 1438.615234 1450.578125 1458.96582 1475.383179 1489.812744 1498.27124 1502.985962 1505.964966 1509.675171 1514.695435 1519.54895 1522.809937 1528.214722 1534.95752 1533.470337 1527.161987 1522.015503 1519.419922 1515.139038 1506.190063 1495.369995 1488.5177 1493.230591 1500.657349 1508.81543 1516.25061 1524.329834 1531.873657 1538.903809 1533.480347 1524.83313 1518.453613 1512.898682 1505.061279 1498.226685 1486.147827 1482.005493 1479.194336 1476.005859 1465.000122 1456.777832 1449.68396 1441.518066 1425.898438 1414.100464 1405.61145 1400.467285 1403.013062 1402.554932 1400.136475 1394.90271 1388.520996 1385.559326 1383.576416 1382.396973 1381.488647 1381.295776 1379.693115 1370.120972 1357.988403 1337.739624 1326.997192 1323.502075 1326.864868 1337.033569 1356.485962 1367.159546 1371.584229 1378.630859 1380.311279 1380.751709 1379.519531 1379.722778 1381.401733 1384.320557 1390.297607 1390.492432 1386.532227 1384.669678 1387.102051 1391.389526 1393.559937 1400.962524 1410.672607 1420.61853 1434.965454 1445.564087 1457.810791 1471.420044 1482.525024 1493.637939 1503.414673 1510.780884 1525.12854 1530.805054 1534.020996 1531.241089 1520.026245 1505.293823 1489.872314 1476.542725 1460.893921 1462.817017 1479.981079 1490.860962 1495.737061 1486.223267 1472.336304 1457.330566 1442.294189 1441.253906 1445.338379 1452.041382 1449.131348 1442.193848 1438.422241 1427.834839 1415.990479 1415.390259 1415.541382 1420.703979 1429.612915 1434.453247 1437.667236 1440.494263 1441.375244 1440.069824 1437.352051 1433.743896 1429.199097 1420.119995 1409.841919 1405.252808 1412.413818 1421.10437 1428.804321 1430.496704 1428.167725 1428.602295 1429.09436 1432.179688 1435.726318 1435.717896 1433.659668 1431.400513 1428.501587 1424.041016 1417.782227 1412.273804 1404.96936 1399.372803 1392.386719 1387.331543 1377.885986 1374.246948 1368.042969 1362.318848 1355.106445 1346.845947 1339.516479 1332.837891 1327.793945 1322.067749 1316.150757 1306.720459 1299.944092 1298.390259 1311.877808 1320.227051 1323.464355 1322.875 1319.737793 1316.64563 1314.358643 1307.778198 1303.654297 1306.339722 1308.12793 1308.569824 1307.459473 1304.806396 1310.231079 1318.258179 1325.742065 1334.28894 1345.120728 1356.359985 1355.693726 1352.787842 1347.103271 1342.584473 1340.933228 1343.57666 1348.592529 1347.543823 1341.814087 1331.669312 1322.722778 1315.27832 1309.01062 1303.044678 1296.409546 1287.987915 1272.046265 1266.289185 1268.549316 1275.06958 1284.257446 1294.605347 1299.147461 1305.959717 1317.508423 1329.776733 1329.775269 1321.423096 1317.468628 1316.300781 1313.547119 1309.391235 1305.310547 1310.427734 1317.791992 1329.095215 1336.032593 1342.817383 1336.375244 1323.716553 1317.278564 1328.728149 1343.161499 1343.661377 1341.351318 1342.310425 1340.798584 1333.629517 1326.588379 1317.177368 1306.384399 1304.123169 1319.853149 1329.369141 1326.449219 1329.635742 1329.370972 1324.255249 1317.729614 1316.037231 1318.38269 1320.654785 1320.155151 1319.488403 1319.188965 1317.108765 1316.13208 1315.995483 1313.974365 1313.568848 1313.576172 1314.658081 1314.706421 1312.801758 1310.152954 1307.709351 1302.64917 1294.703491 1289.204346 1286.292236 1292.66272 1296.552734 1298.886719 1299.347778 1298.658569 1297.622803 1295.890747 1294.898926 1293.884399 1292.544189 1290.375244 1287.69873 1284.75647 1281.736206 1279.23584 1278.57251 1280.301147 1280.794678 1280.062134 1280.420898 1281.07373 1281.323364 1281.506836 1279.618652 1277.520508 1275.973999 1274.409668 1273.663574 1273.404053 1272.758423 1271.802979 1270.544922 1268.660889 1265.98584 1263.439087 1260.515381 1257.169678 1255.877075 1253.986938 1251.994751 1249.146973 1246.820068 1245.064453 1243.329468 1243.065674 1243.807617 1245.400146 1246.455688 1248.272949 1250.345215 1251.709106 1249.245483 1247.541992 1252.787842 1255.121948 1255.554565 1255.099243 1253.892578 1253.04895 1253.034302 1252.898071 1252.841431 1252.202148 1251.358276 1250.512207 1249.454102 1248.681763 1247.984985 1247.463989 1246.002441 1245.096924 1244.544556 1243.17981 1242.132446 1240.54834 1239.081421 1237.997437 1238.202271 1239.718872 1242.185059 1247.30542 1255.177856 1259.236572 1260.024902 1253.781006 1240.205444 1224.990112 1214.083984 1206.949341 1196.991211 1190.006348 1183.622925 1184.800415 1185.765381 1186.106445 1185.397339 1182.69873 1177.17041 1177.631226 1176.285156 1178.080811 1192.836182 1222.055908 1231.090942 1221.051514 1210.530151 1201.58313 1193.925171 1184.119629 1172.76001 1165.829102 1176.116577 1184.115479 1192.633301 1208.367676 1210.637817 1207.785767 1208.395386 1214.267456 1216.339478 1220.707642 1232.510864 1245.395996 1251.664795 1254.162354 1266.603027 1282.690063 1295.763916 1306.461914 1319.180176 1328.333618 1330.750732 1329.863159 1343.177612 1345.098999 1336.956299 1323.48291 1312.091919 1326.513306 1338.806274 1347.951904 1349.117188 1342.089355 1329.050903 1311.70166 1319.799194 1328.311768 1320.751953 +1338.211182 1354.634277 1365.425171 1373.72998 1385.441406 1401.352417 1419.705688 1440.232544 1457.993774 1457.83606 1465.803589 1477.069458 1490.559082 1512.142334 1534.957397 1553.169922 1562.056641 1566.480713 1576.978271 1577.313477 1585.049927 1590.584229 1588.320679 1590.229492 1597.243408 1603.323608 1613.27478 1625.355957 1636.119751 1643.905884 1655.607056 1670.0625 1676.728638 1684.845215 1699.06897 1700.011963 1694.869995 1687.85437 1680.446777 1670.974243 1659.491821 1648.804932 1636.797485 1630.181641 1624.717773 1618.423096 1611.081299 1599.37561 1585.274902 1577.370605 1571.187256 1565.783447 1561.42334 1553.77356 1546.026123 1548.93457 1548.081787 1542.772705 1539.05603 1538.665649 1540.737183 1539.455322 1530.527832 1516.510254 1499.006104 1485.400269 1474.685181 1465.38147 1459.688599 1453.314453 1443.331909 1423.299194 1412.565186 1407.540039 1400.78125 1396.762695 1389.70813 1394.0177 1402.530518 1410.508667 1420.892212 1433.96875 1446.301025 1459.147095 1478.485474 1489.588257 1492.385498 1491.123291 1487.114868 1493.830933 1498.826294 1497.636841 1493.288574 1487.130859 1490.202148 1508.898071 1524.473511 1527.806396 1525.285767 1519.69104 1512.925903 1501.602173 1480.03772 1465.050049 1453.174561 1444.640137 1434.772217 1427.814819 1417.5177 1408.280518 1400.760742 1392.858887 1388.203247 1391.208618 1392.207642 1389.708496 1385.457397 1381.533325 1375.768188 1368.441528 1359.612305 1350.824463 1343.182983 1347.330811 1352.963135 1364.954102 1376.946289 1388.825562 1397.235718 1406.212158 1416.498535 1422.836914 1427.658813 1432.68335 1436.230103 1438.885498 1441.244385 1444.079468 1447.845703 1451.701782 1453.633057 1453.873901 1453.177246 1445.921631 1437.730591 1430.735474 1424.246948 1416.137451 1415.361694 1426.431763 1429.755249 1431.189209 1431.280151 1429.480347 1425.872803 1422.974731 1419.058838 1414.2146 1408.130249 1402.714478 1397.758179 1392.197754 1382.284424 1375.004395 1371.476685 1371.578247 1375.390625 1384.451416 1397.627441 1409.214478 1420.324707 1428.045532 1436.852539 1443.614746 1450.379395 1456.368652 1463.708984 1466.933472 1467.136597 1467.086792 1465.049683 1456.287354 1449.306641 1443.133423 1437.857056 1429.17749 1433.187988 1433.130615 1427.214722 1411.558472 1398.798706 1392.436646 1400.758911 1418.404907 1431.559448 1443.487183 1456.931152 1464.410645 1467.459229 1476.135254 1486.296631 1499.601074 1505.692871 1509.547485 1514.029541 1522.126465 1526.353516 1531.670776 1537.967041 1541.959961 1538.975952 1533.396851 1526.294067 1521.483398 1515.195068 1507.364258 1499.642822 1495.541748 1495.831421 1499.672852 1507.64209 1514.07312 1520.939209 1526.025024 1535.924072 1533.065674 1525.409546 1516.23999 1506.189575 1494.081421 1487.997803 1478.999023 1470.098267 1469.070679 1464.463989 1457.127319 1450.101807 1442.188965 1429.711548 1419.495361 1412.240479 1410.615845 1413.560791 1417.105347 1413.589111 1407.197388 1401.557373 1394.26416 1391.943481 1388.892578 1384.955078 1380.745972 1378.28064 1376.958008 1369.804321 1356.368164 1338.076538 1327.374146 1324.463379 1326.85083 1335.922119 1353.989136 1365.515503 1367.309814 1368.515137 1370.060181 1374.277344 1378.728149 1381.023071 1380.95813 1381.697144 1380.947998 1377.932861 1376.59729 1377.052856 1384.872803 1390.10498 1392.389893 1399.956787 1404.670532 1414.616211 1424.811768 1441.39978 1450.513428 1464.877319 1476.008423 1488.937866 1500.297119 1510.011475 1526.013184 1533.842407 1538.914917 1539.265991 1529.249146 1516.490723 1504.918335 1490.22522 1470.894409 1483.940308 1498.704834 1507.200439 1501.270996 1489.479492 1471.513428 1458.325562 1451.551025 1454.129883 1453.436157 1448.580933 1441.479858 1432.81543 1424.70459 1422.484497 1422.719849 1425.878662 1428.432617 1432.526245 1437.564575 1442.380981 1443.406982 1443.823975 1443.420166 1442.014526 1439.216064 1433.941772 1428.054565 1419.117554 1412.666748 1411.44873 1418.719482 1430.304443 1439.174683 1440.801025 1437.421875 1437.65686 1435.858643 1437.931885 1439.594482 1438.957275 1436.243774 1432.922607 1430.007935 1427.113159 1421.815186 1415.355347 1404.644409 1391.723755 1385.277344 1378.505493 1374.190186 1367.560303 1362.648315 1356.015625 1351.366699 1345.531372 1338.74939 1329.145264 1324.705078 1317.823364 1314.508545 1307.052124 1301.562866 1299.612061 1312.7854 1327.213745 1331.969482 1330.500122 1325.342773 1321.087646 1319.536499 1311.286743 1304.902954 1307.26001 1309.330078 1310.528687 1310.106323 1307.024292 1308.150146 1317.407349 1324.775879 1332.818359 1342.275757 1353.558716 1356.422241 1354.830933 1350.086548 1345.118408 1341.723022 1342.708374 1353.532227 1351.33374 1341.412964 1332.71582 1323.504272 1315.349365 1308.525513 1301.193481 1292.74646 1284.669312 1267.928833 1268.980469 1271.97583 1277.2052 1283.486084 1293.381226 1298.028198 1303.740112 1310.770386 1316.847656 1318.532593 1318.681519 1320.629028 1320.31543 1317.253174 1314.525757 1314.124756 1313.792236 1315.146362 1324.068115 1330.661621 1342.829468 1340.340454 1326.845581 1320.73645 1334.384155 1345.473022 1346.168823 1344.911377 1343.995728 1339.555542 1330.263672 1323.425659 1313.802979 1303.284058 1309.805298 1323.644653 1330.735596 1330.013184 1332.033325 1330.796997 1325.071899 1318.065796 1316.475586 1319.704102 1324.02124 1324.521484 1323.963989 1322.364136 1320.115723 1319.355957 1318.699707 1316.298462 1316.613281 1316.610962 1318.082642 1317.908447 1315.082764 1310.642822 1305.947998 1296.973511 1291.062256 1290.492065 1292.097534 1295.790039 1300.021118 1302.028076 1301.93811 1301.265625 1300.095459 1297.817383 1296.628906 1295.511475 1294.240112 1292.744995 1290.149414 1286.364014 1282.647461 1279.978149 1280.344849 1281.903076 1282.411499 1282.391968 1282.630249 1282.903687 1283.271851 1282.915771 1281.553589 1280.424194 1279.307861 1277.436646 1276.202637 1275.018677 1273.821655 1272.33252 1270.737671 1268.665649 1266.518433 1264.589355 1262.536621 1260.402344 1258.505005 1256.305054 1255.994385 1253.731934 1249.813477 1246.121582 1243.537964 1244.792114 1247.952637 1251.552612 1252.798096 1252.990112 1254.752197 1257.275635 1254.983154 1255.469971 1259.019531 1260.327515 1260.556519 1259.759277 1257.682129 1257.213379 1256.318481 1255.710693 1255.758667 1254.852905 1254.108643 1253.984009 1253.144897 1252.159424 1251.568481 1250.743042 1250.205444 1249.282715 1248.128906 1246.41748 1244.768921 1243.325684 1242.31189 1240.999512 1241.070679 1242.732178 1245.337646 1253.043701 1259.22998 1260.688477 1259.207642 1245.400024 1229.330078 1215.464844 1206.673828 1196.411377 1191.278809 1184.882202 1180.421265 1179.982422 1180.856567 1182.048828 1181.160522 1178.768311 1182.657959 1183.001831 1178.416992 1175.412354 1190.981079 1218.646484 1222.756836 1210.011597 1202.231201 1194.454712 1186.95874 1178.397095 1168.98584 1169.623047 1183.695801 1189.609619 1197.336182 1209.866943 1216.879761 1221.878052 1228.049683 1232.400391 1234.019043 1233.835571 1230.135498 1228.194458 1235.75415 1242.632202 1254.355835 1266.678589 1281.808472 1298.894043 1315.123047 1330.874756 1336.952881 1338.237793 1343.119751 1346.401733 1339.630493 1328.624023 1317.47644 1334.680542 1348.450562 1357.481201 1353.52478 1343.565796 1324.970703 1316.931885 1337.335449 1342.491577 1331.179077 +1328.288696 1341.930176 1354.218994 1367.377075 1373.855103 1380.683472 1392.985596 1411.18689 1425.512451 1433.335571 1447.895264 1467.219727 1497.205688 1526.975952 1540.247314 1546.96814 1544.74585 1549.239624 1554.706909 1556.921143 1561.666504 1570.947632 1563.180298 1570.471069 1577.340088 1586.493042 1596.673828 1608.408325 1622.88147 1634.944702 1641.919434 1656.385986 1666.827393 1670.924805 1680.215088 1691.802246 1691.410645 1685.338867 1677.736206 1668.215332 1656.484253 1646.556396 1637.151123 1629.865234 1623.009766 1616.865234 1609.658081 1600.144043 1589.799927 1585.098633 1584.395752 1578.439575 1571.377563 1568.175537 1568.875488 1568.540771 1561.14624 1553.854248 1551.72168 1551.269775 1547.124512 1538.935913 1526.425537 1511.682251 1494.960205 1479.280151 1469.141479 1461.063354 1456.239258 1448.870117 1430.161011 1412.148438 1413.161133 1413.452271 1407.405273 1400.472656 1391.652466 1398.45813 1403.266846 1411.734253 1423.022095 1436.975464 1447.609253 1466.806274 1488.408569 1499.05127 1504.049561 1507.758789 1502.764893 1507.673218 1512.854858 1512.138794 1508.947144 1499.828979 1488.983276 1515.630249 1529.819214 1533.264893 1530.663208 1524.031006 1513.300049 1494.736694 1476.876099 1471.398438 1463.399048 1457.098022 1446.243652 1436.488647 1425.989624 1414.27478 1402.40332 1396.108276 1399.787476 1405.633423 1405.928345 1400.575562 1391.091309 1385.322754 1378.841919 1370.535278 1360.781006 1349.505859 1344.889282 1349.082153 1354.174072 1368.503784 1381.469116 1392.572754 1401.060547 1412.157349 1421.05127 1427.707397 1431.724243 1436.233521 1439.691406 1441.852539 1443.943237 1446.839233 1449.888428 1453.139893 1454.605713 1454.738892 1453.652466 1448.330811 1439.792236 1432.811646 1426.443726 1417.964355 1422.330078 1431.299438 1435.259155 1437.10437 1437.094727 1434.873291 1430.003784 1425.59375 1422.671753 1418.960083 1416.016968 1409.774048 1400.516357 1394.481689 1384.983276 1376.09375 1379.165161 1379.128906 1374.599487 1377.526245 1392.0354 1400.200195 1410.172119 1417.421997 1423.019409 1428.835571 1437.456177 1442.714844 1450.028198 1462.310181 1467.765869 1467.691162 1465.786499 1461.769775 1456.118652 1451.368408 1443.924561 1444.20813 1443.779785 1440.670166 1430.797363 1411.811157 1398.527954 1392.865723 1406.974365 1423.367798 1434.53064 1448.041382 1462.631592 1474.942261 1477.956787 1483.616821 1490.63208 1500.908813 1510.941284 1516.447144 1525.866821 1531.457642 1536.976929 1544.826904 1549.320068 1548.718506 1544.751709 1540.038208 1532.317627 1523.652954 1516.333862 1510.577637 1504.314941 1499.981567 1497.972168 1499.598511 1505.257812 1510.117676 1518.104736 1524.277588 1530.031494 1528.333618 1522.538818 1514.779053 1503.299194 1488.466797 1477.381836 1465.484741 1459.883545 1457.369141 1453.718506 1448.839233 1443.907593 1437.921387 1428.308716 1416.04187 1418.099854 1423.527832 1429.855713 1428.060913 1419.936768 1411.739258 1405.5177 1399.892334 1394.984863 1390.224243 1383.44751 1378.095215 1372.675293 1370.386353 1366.538818 1352.104126 1339.890503 1328.274414 1325.941895 1326.248901 1334.645508 1348.041504 1356.796265 1358.298706 1356.274902 1355.775635 1361.451904 1368.219482 1373.097412 1374.513672 1372.952148 1370.497925 1374.74353 1378.615356 1383.045532 1391.860352 1396.958008 1403.903809 1406.900757 1408.600586 1411.878174 1416.030273 1432.598389 1446.094482 1458.763794 1469.09668 1481.358887 1494.711426 1506.147095 1524.942627 1534.296997 1541.552979 1544.444214 1537.641113 1524.78479 1511.136719 1497.934204 1481.147827 1498.982422 1518.973755 1523.65564 1512.477173 1496.908203 1479.873291 1468.161133 1463.924194 1463.828369 1456.930664 1446.526001 1436.105469 1429.944946 1424.814453 1425.130493 1428.848633 1434.312744 1440.26416 1443.678833 1446.15332 1448.608154 1448.293213 1446.990112 1445.226196 1442.702271 1438.878052 1432.715332 1425.957031 1416.389282 1415.038086 1420.099854 1426.560181 1436.843628 1443.625244 1444.826538 1443.994629 1442.971313 1441.299072 1441.829834 1442.04126 1440.843262 1437.069946 1432.991455 1430.190918 1429.077148 1427.088013 1415.777832 1404.656738 1394.616821 1386.166504 1378.177002 1372.885376 1368.02124 1362.153809 1355.533447 1350.258545 1345.294556 1339.643433 1333.428589 1327.505371 1317.824341 1313.863281 1309.585938 1305.422363 1300.18457 1310.517944 1329.370972 1332.797241 1331.020264 1327.560669 1324.676636 1321.098999 1314.414429 1304.765015 1306.925049 1310.573853 1313.082153 1314.422974 1314.538696 1316.690552 1317.02002 1323.677856 1330.438477 1339.296997 1352.13623 1356.252197 1355.216675 1351.735962 1347.207275 1343.83252 1345.846558 1355.209839 1350.440796 1339.554932 1331.442383 1321.775269 1314.047241 1308.0271 1299.247559 1288.205322 1275.16333 1268.2854 1271.204712 1274.203369 1277.904663 1282.802979 1290.866333 1294.910522 1297.606812 1301.794312 1304.596924 1312.195923 1318.940918 1324.761597 1325.484009 1321.92688 1320.055542 1319.161133 1316.598145 1319.163696 1325.270874 1333.710571 1343.672852 1342.901001 1328.343506 1327.250977 1340.352173 1346.664062 1347.543701 1346.373901 1343.979248 1335.423584 1327.400879 1321.694336 1313.058228 1304.994385 1314.599365 1324.436768 1332.121094 1334.408936 1334.274292 1331.142944 1325.645752 1320.756348 1316.982788 1321.377441 1328.477783 1329.739746 1328.123169 1326.019653 1324.547729 1322.839722 1321.039429 1319.66626 1320.037354 1320.469849 1320.429321 1319.328003 1315.677979 1308.470337 1299.261108 1290.85083 1290.426514 1291.678223 1296.088989 1300.654419 1304.383179 1304.991577 1304.611816 1303.774658 1302.397705 1299.604614 1298.165527 1296.846558 1295.609863 1294.274292 1292.526245 1288.551514 1284.40625 1281.186768 1281.90686 1283.306885 1284.14502 1284.449341 1284.654175 1284.962402 1284.921509 1284.53833 1283.689575 1282.553711 1281.445068 1279.613159 1278.080688 1276.442993 1274.69397 1272.689941 1270.464966 1268.159058 1266.550659 1265.467407 1264.796265 1264.176514 1262.752319 1261.008057 1259.328857 1257.194824 1252.560669 1247.214844 1244.875488 1249.827148 1255.452271 1258.238403 1258.720459 1257.69812 1261.145386 1261.332275 1255.476318 1260.351074 1263.856079 1265.22522 1266.11084 1265.131714 1263.33252 1261.853882 1260.579224 1259.932007 1259.854858 1258.501465 1257.544556 1257.909302 1256.990234 1255.677734 1254.461304 1254.588623 1254.858765 1254.555542 1253.739746 1251.623657 1249.379883 1246.485596 1243.999512 1242.45752 1242.611816 1244.669556 1250.081299 1257.42749 1263.122925 1262.599854 1251.1521 1234.93335 1218.392334 1206.391479 1194.590942 1191.075439 1187.469604 1183.331299 1181.066284 1181.154541 1181.061646 1181.550415 1184.001099 1185.96106 1185.92627 1184.92688 1180.869873 1175.039429 1194.46875 1220.082153 1216.760254 1202.615723 1194.935059 1188.545776 1181.31604 1174.266357 1166.69104 1173.007324 1186.581909 1193.62207 1202.007935 1212.183716 1221.434937 1230.258301 1238.938965 1245.670654 1249.49939 1250.085815 1248.201172 1242.084717 1237.992798 1246.27063 1254.328857 1268.157715 1288.598145 1302.504883 1321.264893 1333.387939 1342.626953 1344.957153 1349.779419 1352.570801 1344.265991 1332.942139 1327.304199 1342.559692 1357.797607 1363.598877 1357.140503 1344.00708 1322.963989 1335.553345 1351.816162 1353.525391 1345.35376 +1319.248169 1326.294922 1344.992676 1353.840698 1356.612427 1363.617554 1377.985962 1392.5802 1412.137207 1435.109009 1456.331421 1472.14978 1498.566162 1526.3302 1534.584351 1531.175049 1527.138306 1529.748657 1525.487427 1533.364136 1539.790527 1544.02478 1546.112671 1554.337402 1563.453491 1572.932373 1586.761475 1596.911865 1611.091553 1621.624634 1635.226807 1646.509155 1661.19458 1661.464966 1668.844849 1682.201294 1687.116455 1682.804321 1675.162598 1665.793579 1655.852905 1647.905884 1637.465088 1630.005615 1622.915283 1616.387695 1609.123901 1601.048706 1594.796509 1591.671875 1591.244507 1589.967285 1587.175903 1584.458008 1582.856445 1579.936768 1573.449585 1566.024902 1563.444946 1557.967651 1545.526611 1531.237915 1519.440918 1507.386841 1491.335693 1478.691772 1468.446533 1460.41748 1453.95459 1434.245117 1420.343018 1428.188721 1431.674194 1422.470337 1414.352173 1401.130737 1397.2323 1407.473389 1416.415894 1418.425781 1425.321411 1432.874146 1443.836914 1464.769409 1489.254395 1502.480591 1509.972168 1515.973145 1517.733398 1517.766846 1522.905762 1524.404663 1520.955933 1513.116333 1502.776001 1519.419067 1535.600342 1539.303711 1535.551147 1526.834106 1511.869385 1499.390625 1494.432373 1486.403809 1477.916626 1465.69043 1453.679199 1442.821045 1428.884155 1415.691772 1401.912231 1408.034668 1416.947876 1417.945801 1413.608398 1406.574707 1396.335327 1388.167358 1380.467407 1370.395996 1357.96228 1345.217163 1347.392334 1351.282593 1361.427368 1373.225464 1386.061523 1394.867432 1402.313843 1416.984985 1426.436401 1431.313721 1435.307007 1439.359863 1442.21521 1444.207275 1446.25 1448.398315 1451.121704 1454.276123 1455.802856 1455.694336 1453.961182 1448.051636 1439.281738 1433.2677 1426.512573 1422.642944 1429.642334 1436.963745 1440.84082 1442.594238 1442.516968 1441.268311 1437.524414 1430.90979 1426.202148 1423.010864 1419.818359 1415.897705 1402.830566 1395.476685 1387.577881 1378.645508 1383.509888 1384.069824 1381.417847 1377.25354 1385.848999 1394.178345 1401.812622 1408.488403 1412.972534 1419.032104 1424.937988 1433.923584 1445.859619 1462.585327 1467.994751 1468.913086 1468.763794 1466.222534 1461.454956 1453.716064 1453.259277 1452.755859 1448.954834 1443.513062 1433.796387 1415.793701 1398.450439 1396.819336 1408.116455 1420.8125 1434.763184 1447.407715 1469.997681 1481.90271 1488.771606 1495.923706 1501.101685 1510.159668 1519.583252 1528.547485 1535.658081 1542.466675 1550.236694 1553.821045 1555.279053 1554.532104 1550.241821 1544.044922 1536.463867 1525.415894 1520.043823 1515.022827 1509.19873 1502.526367 1498.77124 1501.759033 1505.479004 1510.553223 1519.697021 1527.322876 1528.549438 1526.019775 1519.175781 1511.519531 1502.491699 1487.297363 1476.271362 1461.848267 1450.842773 1446.598022 1439.854736 1440.482788 1437.437378 1434.076172 1427.281372 1429.814941 1432.026245 1442.467407 1443.418091 1438.485962 1423.692505 1413.717651 1407.987549 1401.822998 1394.953125 1389.313599 1380.671509 1376.007812 1366.637573 1363.141357 1357.954834 1349.659424 1340.990112 1329.335571 1327.580566 1327.758667 1332.546631 1341.943481 1348.679077 1348.169312 1345.299316 1345.627075 1348.3573 1352.255249 1360.340698 1363.625977 1363.602661 1366.565308 1375.392456 1381.31604 1387.169067 1394.520142 1402.360718 1409.389893 1414.718628 1416.832397 1417.514648 1417.031372 1424.966187 1435.383667 1450.114014 1463.296997 1474.102051 1486.983398 1500.483276 1519.54541 1533.654297 1544.372681 1550.484009 1549.613159 1536.241577 1516.973877 1499.897705 1497.700684 1518.167969 1532.479858 1534.279297 1524.639282 1506.926147 1493.119751 1478.470581 1469.174561 1463.86792 1456.855835 1447.951538 1441.681763 1432.437012 1425.561768 1429.19458 1434.663574 1440.806152 1447.054565 1451.53833 1454.583374 1453.709229 1451.930298 1449.491699 1446.550171 1442.517944 1437.777832 1430.824585 1424.85022 1420.74353 1421.00354 1427.628906 1439.401123 1444.845093 1448.737183 1450.121948 1449.629028 1448.374878 1446.977783 1445.387817 1443.566406 1440.953491 1435.765015 1428.858032 1426.242554 1426.49939 1427.047607 1413.956665 1404.467041 1393.367432 1385.721436 1377.718384 1373.053345 1367.257935 1361.972168 1355.80835 1350.93689 1346.436646 1341.275635 1336.238281 1331.353149 1323.707031 1316.921143 1311.305908 1306.69519 1302.223877 1311.742798 1328.225708 1333.811035 1333.236572 1331.052246 1326.850464 1321.289185 1312.998047 1306.234375 1310.213013 1313.174194 1315.647705 1318.091675 1319.183105 1319.613892 1321.51416 1325.426025 1329.112427 1337.369995 1348.81543 1356.249023 1355.237549 1353.162109 1349.219482 1347.709473 1349.75354 1355.144287 1346.558594 1335.567261 1327.40979 1319.204346 1310.759155 1304.902466 1296.980835 1282.976074 1271.943237 1271.060181 1274.922485 1277.160767 1277.535889 1279.901855 1289.291016 1292.876099 1293.308472 1293.557129 1302.943726 1311.208862 1319.889648 1328.974243 1330.750488 1327.980225 1325.651489 1319.493286 1317.437012 1322.740601 1330.364746 1340.110596 1347.121826 1344.157959 1329.807129 1333.340576 1343.811279 1348.691895 1350.020264 1347.630737 1342.855347 1329.662598 1324.664673 1319.454712 1314.432251 1311.942505 1318.93396 1325.726562 1331.728149 1338.406128 1338.546265 1332.194946 1327.470215 1322.691406 1317.272949 1325.984375 1331.626953 1333.612183 1331.827026 1330.025024 1328.084473 1325.578491 1324.700439 1324.153442 1324.535767 1324.316895 1323.006348 1319.987183 1315.327759 1304.983154 1292.417358 1290.485718 1290.565796 1294.194336 1300.328125 1305.670898 1306.921021 1307.27063 1306.855591 1305.94751 1304.443848 1301.302612 1299.630859 1298.023071 1296.399414 1294.878906 1292.901001 1289.93396 1286.957031 1284.814209 1284.816772 1285.373169 1285.846069 1286.187134 1286.568848 1287.09314 1287.367798 1287.068604 1286.046021 1284.811646 1283.255981 1281.44165 1279.293335 1277.41748 1275.579102 1273.298096 1270.530396 1268.079102 1267.018311 1266.946899 1266.727539 1267.171875 1268.113892 1266.859131 1262.285522 1258.406372 1254.325684 1251.80249 1251.392944 1254.646851 1259.251099 1262.480469 1264.81543 1267.507446 1270.279175 1268.391846 1261.426636 1267.52771 1269.508545 1270.08313 1271.177002 1270.452271 1268.493408 1266.564819 1265.375 1264.734985 1265.303955 1265.215942 1264.208008 1263.577881 1263.66626 1261.430542 1258.732178 1258.253784 1259.246094 1259.273682 1258.387085 1257.167969 1255.26355 1251.69873 1247.476685 1244.307373 1244.379883 1248.432373 1254.332397 1261.847656 1268.941772 1259.633667 1241.429565 1223.563599 1207.112793 1197.187256 1191.070679 1187.33606 1185.152588 1182.141357 1181.990234 1182.668335 1184.473877 1186.921875 1188.745972 1188.624634 1187.259521 1185.11377 1179.888184 1175.305664 1197.700806 1216.204346 1204.376465 1196.408203 1189.851196 1183.599731 1177.040039 1170.780762 1166.863892 1177.861328 1188.846069 1197.698242 1206.483032 1216.787842 1225.64624 1235.93103 1246.217285 1254.012939 1259.463745 1261.917236 1260.678833 1254.495117 1252.426758 1254.174805 1259.963989 1273.564331 1286.748047 1298.654541 1318.461304 1331.289551 1342.485352 1349.951538 1355.555664 1357.513428 1353.152222 1339.389404 1333.756348 1352.694702 1364.481079 1369.516724 1360.119263 1344.685059 1327.844849 1351.916138 1363.832764 1363.924194 1356.94751 +1309.90271 1319.72998 1331.767456 1337.333862 1337.857544 1349.921021 1365.792114 1388.187744 1420.324219 1437.077515 1458.977173 1470.509521 1489.782471 1508.735962 1517.304321 1508.396851 1509.653198 1507.290161 1509.028198 1515.960449 1520.0448 1518.753906 1523.206665 1535.809692 1550.103394 1557.779663 1573.806641 1590.297119 1598.224976 1618.037964 1629.380859 1639.72937 1647.843872 1651.442505 1660.184937 1673.490479 1683.617065 1680.086548 1672.50415 1664.229614 1656.097168 1648.816406 1639.104614 1630.991821 1624.332764 1616.717529 1609.000977 1603.156128 1598.242432 1597.541138 1596.333984 1598.010376 1600.461426 1598.635864 1592.585327 1588.025635 1580.735107 1572.946167 1567.227051 1556.68689 1539.197388 1522.643433 1511.925415 1501.795532 1486.106445 1476.10791 1467.215576 1457.28772 1438.916992 1438.6875 1450.495605 1448.493652 1437.611816 1422.366577 1411.877441 1398.401367 1406.135498 1421.040649 1429.244019 1428.483887 1431.586304 1438.108887 1445.359985 1455.956909 1477.385864 1496.833618 1509.334961 1520.176514 1528.753662 1531.029297 1537.191528 1538.194214 1533.57605 1524.621826 1513.488037 1523.513062 1541.620483 1542.801025 1539.2146 1532.166626 1526.383911 1516.616089 1507.164062 1497.476562 1485.822632 1470.819824 1455.937988 1442.986328 1429.475708 1421.606323 1424.447754 1428.651367 1429.387329 1427.334106 1420.910156 1410.725464 1398.017822 1388.793701 1381.219238 1369.718994 1352.453125 1346.157837 1351.956665 1354.620361 1367.034546 1376.586182 1388.947754 1396.263306 1404.420044 1421.079834 1430.334717 1435.181519 1438.802002 1441.6698 1444.306152 1446.602783 1448.490723 1450.335938 1452.79541 1456.25415 1457.770264 1457.396851 1454.953003 1450.826172 1442.051025 1434.508423 1426.597412 1431.253174 1436.583374 1442.042603 1445.717285 1447.55957 1448.076416 1447.718018 1444.760376 1438.887451 1432.100342 1426.197021 1422.300781 1417.00354 1406.522461 1396.328125 1388.869629 1389.905884 1390.300171 1389.535278 1392.464844 1389.681274 1383.097656 1388.893799 1397.137695 1404.429443 1415.014771 1421.538086 1428.582031 1434.128906 1443.065918 1458.863159 1468.042114 1470.908569 1472.341431 1470.270264 1464.865234 1462.967285 1460.573975 1457.103516 1452.973999 1445.532593 1433.077637 1415.190186 1398.425781 1399.871826 1410.006104 1421.105469 1433.507568 1451.268066 1474.196899 1486.679565 1499.202026 1508.112671 1511.654419 1518.3302 1530.096069 1539.603516 1546.646484 1552.34668 1556.754883 1559.558472 1561.154541 1561.560791 1559.961914 1548.396606 1538.573853 1529.754272 1522.655396 1517.107056 1510.985718 1504.452148 1499.084595 1502.34436 1507.072388 1510.246094 1519.71936 1526.367798 1526.433716 1521.988647 1515.658203 1508.737183 1500.210693 1489.642578 1478.606934 1465.286987 1453.801392 1442.918091 1433.182495 1432.71106 1433.348145 1434.53894 1438.237427 1442.714478 1446.61377 1448.096802 1448.054932 1442.943359 1432.855103 1422.113892 1410.451904 1401.886475 1393.268799 1387.165527 1382.491821 1378.196655 1367.59375 1357.721802 1351.792847 1346.932129 1340.064331 1329.377808 1330.314575 1330.063965 1329.209229 1335.129028 1338.43457 1342.321045 1346.89978 1351.308594 1352.078857 1352.247192 1351.582397 1355.17981 1362.611938 1372.948486 1380.560791 1383.547485 1387.437988 1393.279419 1403.409912 1411.536743 1417.367554 1420.419312 1424.267578 1429.085815 1434.175537 1436.846436 1439.990479 1450.293213 1468.502686 1481.812622 1496.490356 1512.209351 1532.994751 1546.59436 1553.260986 1554.483276 1545.862671 1525.379028 1505.321167 1519.632568 1534.291016 1542.547363 1540.896606 1527.449219 1510.905762 1496.176025 1480.120117 1469.774658 1460.608887 1458.966309 1450.547729 1445.564087 1436.26355 1427.918823 1434.299438 1440.053467 1448.348877 1456.705933 1463.966431 1462.232056 1458.2229 1454.881592 1451.607056 1447.222778 1441.93811 1435.848999 1428.855469 1424.609131 1425.483154 1424.70874 1435.827271 1444.946411 1451.225464 1453.607788 1454.087524 1453.214478 1452.462402 1450.949097 1448.072021 1444.845947 1441.90686 1436.625122 1426.22998 1421.806274 1419.033813 1420.012451 1415.130005 1404.576538 1393.546021 1386.831665 1379.360352 1376.789917 1370.802002 1365.752197 1359.502319 1353.734131 1347.49939 1342.205811 1337.323364 1332.866211 1326.905029 1318.235474 1311.463257 1305.549194 1306.002441 1317.979858 1328.709351 1338.030518 1335.999268 1332.57605 1327.442993 1318.062744 1315.971191 1314.913696 1315.880249 1315.599854 1316.766357 1319.865112 1322.582153 1324.562988 1326.661133 1327.813354 1330.183472 1336.046387 1343.996948 1355.072998 1355.094727 1353.231323 1351.074463 1349.124512 1349.052856 1350.749512 1343.185181 1330.766235 1321.811646 1315.306763 1308.654419 1295.975586 1280.572998 1274.511963 1270.939575 1279.122314 1278.913574 1280.787476 1278.968262 1283.865845 1294.113159 1296.447388 1298.24353 1302.287598 1308.128906 1315.838745 1321.781738 1328.540894 1333.60083 1332.964111 1330.407471 1322.787598 1318.730835 1325.840698 1333.293701 1341.600708 1353.087036 1349.30481 1337.755493 1339.755615 1347.167358 1351.567261 1353.033203 1349.780273 1343.533569 1333.748047 1324.19873 1316.749634 1316.986084 1316.612915 1319.671875 1328.645874 1335.899414 1342.425415 1342.228271 1335.61438 1329.653931 1325.898926 1325.446167 1330.52832 1337.968018 1338.974609 1336.177612 1333.853516 1330.855225 1328.128296 1327.624634 1327.999146 1328.739746 1328.749756 1326.596191 1320.345337 1312.557861 1299.821533 1290.342773 1290.377563 1292.34082 1298.320801 1304.760254 1307.664062 1308.939331 1309.112183 1308.707031 1307.73584 1306.183594 1302.824219 1301.064697 1299.009888 1296.711182 1294.521362 1292.298462 1290.493164 1288.799072 1287.598022 1287.323486 1287.384888 1287.567505 1287.751221 1288.341675 1289.306519 1289.994995 1290.096313 1289.29187 1287.348145 1285.010742 1282.757935 1280.529419 1278.857666 1276.976807 1274.755615 1271.915405 1269.352783 1268.801758 1269.070679 1269.036011 1269.743164 1270.253296 1269.079712 1263.962769 1258.357788 1255.087769 1255.745117 1255.531128 1257.333252 1262.882812 1266.786987 1270.401611 1274.592651 1275.846436 1269.929443 1268.979126 1272.593994 1274.006714 1274.765259 1275.735718 1275.88623 1274.203735 1272.13269 1269.916016 1268.466797 1270.384277 1270.898804 1269.914673 1268.600342 1270.299927 1269.011719 1266.46106 1264.664551 1264.297729 1263.790405 1262.513916 1260.862915 1259.124268 1256.941162 1254.118286 1251.113159 1250.626709 1252.960449 1257.645752 1265.913086 1268.213867 1248.915283 1230.264893 1211.119751 1192.738159 1188.997192 1185.518188 1183.170044 1182.362915 1182.22876 1183.7948 1186.802124 1190.597656 1193.641846 1193.729004 1191.257935 1188.031982 1183.996704 1177.497192 1180.431152 1200.635986 1205.509644 1199.188599 1191.819092 1185.226685 1179.149048 1172.459351 1167.553223 1168.684204 1175.920532 1189.510132 1200.701416 1211.249146 1221.56189 1228.869873 1239.899414 1252.017212 1260.938721 1268.112915 1273.699341 1275.308228 1271.937988 1272.591064 1272.093994 1268.266113 1277.456787 1295.928467 1307.675049 1317.877686 1327.025391 1336.047119 1348.426025 1358.817505 1363.186401 1361.821289 1349.322388 1341.329346 1360.374512 1372.683228 1373.998413 1363.185181 1345.557129 1341.560303 1363.66687 1372.478149 1372.097046 1366.188721 +1302.904663 1311.473022 1316.125854 1325.222046 1338.122559 1358.52356 1373.045776 1390.552734 1414.802612 1431.973267 1448.311646 1465.760742 1474.164429 1485.782593 1491.454224 1489.723511 1491.247192 1490.17688 1493.264771 1502.364502 1504.965698 1505.357666 1511.819336 1519.012329 1536.985962 1550.853882 1565.997314 1586.241333 1599.040405 1614.798218 1624.45752 1633.535889 1639.82312 1646.942017 1659.987183 1668.837402 1676.41687 1675.541016 1669.52478 1662.577515 1655.385742 1648.73584 1640.192261 1632.156006 1624.967651 1618.212891 1610.964355 1610.911255 1612.062866 1607.98877 1604.06897 1604.571045 1604.003418 1601.790283 1597.868164 1592.260132 1586.948853 1577.967285 1561.701782 1544.211304 1527.825317 1512.657227 1502.269897 1493.292603 1481.14502 1471.769775 1464.610352 1451.163086 1445.844604 1461.556763 1461.368774 1451.026611 1434.229614 1419.548218 1408.233643 1398.932495 1415.242554 1427.658081 1436.949219 1439.651001 1436.769897 1440.539062 1448.045654 1460.927368 1476.914551 1493.328491 1512.689087 1522.911133 1538.115601 1543.150024 1545.794189 1547.946777 1546.187134 1538.902954 1526.032471 1531.054932 1545.78772 1548.880249 1544.189087 1539.904541 1534.752075 1525.799805 1512.480957 1499.643066 1484.873657 1472.080444 1457.93457 1444.479858 1438.03833 1436.731079 1436.129272 1436.76062 1434.64856 1430.51355 1424.006836 1412.031494 1398.424805 1389.046387 1380.702393 1369.991943 1348.540894 1350.327271 1356.315674 1360.249268 1368.674072 1379.555908 1390.753906 1397.779175 1408.769531 1425.263062 1435.058594 1439.932983 1442.354248 1444.692749 1446.991455 1448.824097 1450.835083 1453.575439 1456.763306 1459.603882 1460.564941 1459.828857 1457.328857 1453.56189 1445.733032 1437.229736 1431.463989 1438.707764 1442.893555 1447.861572 1450.978394 1453.427368 1453.830078 1454.463013 1452.891235 1446.730225 1439.529419 1430.900513 1424.595947 1417.911133 1407.516479 1400.451172 1397.637207 1398.479736 1397.403442 1397.100586 1400.662598 1402.587402 1395.750122 1388.692139 1396.199463 1410.413818 1419.678955 1427.150024 1437.353027 1443.131104 1448.657593 1458.68689 1466.833618 1472.301514 1475.544067 1475.98999 1473.008789 1469.139038 1465.593384 1461.022583 1454.398315 1442.609009 1429.861816 1411.925415 1398.598511 1401.493286 1412.566162 1425.24353 1437.757935 1456.087646 1474.765503 1492.236694 1507.629883 1515.830078 1521.781616 1531.878662 1541.357544 1548.322632 1554.533813 1558.703369 1564.005005 1570.79126 1575.296875 1570.985474 1565.151001 1561.527954 1546.311035 1535.552124 1525.128906 1518.116333 1512.71521 1508.375732 1503.54126 1507.100464 1509.985596 1511.577759 1512.806274 1518.740967 1518.798218 1514.868286 1510.192505 1504.732544 1500.193115 1492.796265 1485.843872 1473.515625 1454.77478 1438.852295 1426.200684 1424.164551 1429.246948 1433.909424 1441.998901 1447.411621 1456.709473 1456.976196 1455.102783 1449.199829 1439.057983 1429.156006 1411.613892 1401.085815 1392.415771 1384.279419 1376.942749 1370.002563 1363.98877 1357.219482 1351.116821 1345.424194 1338.631104 1329.046753 1331.193237 1331.227661 1329.19104 1333.293823 1340.71875 1349.449585 1354.979614 1357.310669 1358.168945 1357.724609 1356.528809 1354.353149 1362.81189 1374.72522 1381.538208 1387.170898 1390.841797 1392.590454 1403.49939 1410.722046 1416.864014 1422.568115 1431.654297 1444.625732 1450.320923 1453.128662 1454.636963 1453.998901 1462.349243 1474.57666 1493.348999 1508.805054 1530.22229 1545.27063 1554.62085 1557.508667 1550.893677 1529.710815 1511.402832 1532.356934 1545.661011 1551.911743 1547.99939 1529.103516 1513.057861 1498.447998 1481.474365 1475.02002 1472.619873 1466.546143 1457.248779 1449.524658 1441.12793 1435.105103 1441.342773 1448.681274 1459.216675 1468.340454 1470.618164 1466.519165 1461.655762 1457.123657 1452.74646 1447.366089 1441.729736 1436.753784 1430.256714 1429.723267 1431.252808 1433.283447 1440.416748 1449.152466 1454.41272 1456.471436 1457.086426 1456.223877 1454.839233 1452.151611 1448.456909 1444.327637 1441.070068 1435.710938 1427.46521 1417.427368 1412.186768 1413.060425 1414.880737 1407.640869 1399.936157 1391.296875 1385.071045 1380.978516 1376.40332 1369.044067 1361.362427 1353.834839 1346.898315 1342.210327 1336.894653 1332.614746 1327.442627 1317.927979 1310.397339 1306.331421 1310.779785 1319.007446 1334.351562 1342.528931 1337.223755 1332.310913 1327.815186 1319.000854 1319.655884 1320.649414 1319.97876 1318.636719 1317.093628 1321.567017 1326.275513 1329.395142 1331.263428 1332.760498 1337.14856 1341.00061 1346.08313 1354.988647 1356.054443 1354.443848 1352.396851 1350.716064 1347.587891 1345.024292 1341.269531 1328.771484 1316.910034 1309.779175 1304.374878 1293.221313 1273.525513 1272.175903 1278.436157 1286.055542 1292.134888 1279.559082 1279.146118 1284.32959 1293.193481 1296.67041 1300.636841 1306.341553 1313.415039 1320.637939 1326.592041 1333.990723 1339.423828 1336.910889 1333.191406 1327.020996 1324.559448 1327.759155 1334.339111 1342.49707 1356.072998 1355.570801 1341.170654 1341.935425 1350.360962 1355.315796 1355.602539 1351.065552 1342.32373 1333.095825 1322.889404 1320.383301 1326.539551 1323.169434 1323.657227 1329.905884 1338.85791 1344.553467 1343.827759 1338.972412 1331.82373 1327.809082 1328.282837 1332.963745 1339.52002 1342.303467 1340.064819 1338.24231 1334.631104 1330.739624 1330.195312 1330.899536 1330.954346 1330.889893 1329.213135 1320.084839 1310.980591 1291.600098 1290.491333 1291.06543 1296.11145 1302.694946 1307.450928 1310.012939 1311.081909 1311.052246 1310.606689 1309.546875 1308.123291 1304.466919 1302.416138 1299.760254 1296.6521 1293.973633 1291.853516 1291.015137 1290.199219 1289.428833 1289.184326 1289.215454 1289.190063 1289.287598 1289.865967 1291.164185 1292.394409 1292.947632 1292.476318 1290.230225 1287.307251 1284.549438 1282.158203 1280.265625 1278.593994 1276.587891 1274.589233 1272.561523 1271.537598 1271.364502 1271.548584 1271.605957 1270.959839 1268.911621 1264.793701 1259.735962 1259.429077 1261.069092 1262.367432 1262.956299 1266.359497 1272.760864 1279.859741 1282.496216 1281.803711 1278.292847 1278.262085 1278.336304 1277.767944 1278.509888 1280.521362 1281.674805 1281.209106 1279.133423 1276.530029 1275.048828 1274.851807 1275.093994 1274.698853 1273.938965 1273.853149 1272.916138 1271.378418 1269.652344 1269.718872 1268.537354 1265.973267 1264.552124 1262.487061 1260.437134 1258.448608 1256.925049 1256.439819 1257.524292 1261.193604 1269.008545 1255.331909 1237.531372 1217.734375 1192.835693 1183.570435 1183.440918 1183.450928 1183.48291 1183.889526 1185.531494 1188.596924 1192.691528 1196.62207 1198.02063 1196.79541 1192.611816 1187.592041 1181.445801 1174.09668 1186.077271 1199.408325 1199.572632 1194.348999 1187.944458 1181.383789 1175.975464 1170.162598 1167.788452 1173.412231 1179.564575 1184.125244 1201.209106 1214.996948 1225.369995 1235.106079 1247.965576 1259.128296 1266.671021 1276.776978 1283.918579 1288.583008 1285.834229 1289.194214 1286.248779 1285.993896 1286.792603 1296.376221 1316.978394 1331.340698 1341.700073 1341.81897 1342.126709 1359.344482 1367.604492 1369.337158 1360.179688 1350.805054 1369.960083 1381.932373 1379.229736 1365.348755 1348.779785 1353.136108 1372.22168 1380.824707 1379.93811 1377.026367 +1299.169556 1304.86731 1315.705566 1323.345093 1337.80188 1355.585693 1368.124268 1382.84314 1402.655151 1416.591553 1429.527222 1444.25647 1459.389282 1467.910767 1470.281738 1469.861816 1467.943481 1470.363647 1472.198486 1481.170044 1486.132324 1491.611084 1502.162476 1514.005127 1527.385986 1546.344116 1559.218262 1578.419922 1595.840942 1610.404541 1618.456177 1627.379883 1635.803467 1642.395386 1654.05896 1663.978271 1673.440063 1672.536133 1667.53186 1660.613525 1654.373901 1647.777588 1640.059326 1633.460083 1626.821045 1623.078613 1623.324951 1621.244385 1618.345459 1614.119385 1610.97937 1610.108276 1608.353394 1604.210449 1599.612427 1593.740723 1588.285645 1572.847656 1557.588013 1536.263672 1517.832397 1504.47229 1494.455078 1484.276733 1473.887695 1467.137695 1456.470337 1451.033081 1469.042847 1477.462646 1462.251587 1444.408569 1425.506226 1413.805542 1403.53418 1404.71106 1415.846313 1427.167358 1441.160645 1449.931274 1448.841064 1447.782349 1454.267578 1468.644287 1483.664917 1502.939087 1517.619873 1529.643188 1541.421631 1549.310181 1552.593872 1554.574097 1554.372559 1553.136963 1547.365845 1539.650146 1551.648071 1553.443726 1550.812622 1546.702393 1540.174072 1529.129028 1513.87915 1497.407471 1490.137817 1482.697021 1465.233643 1459.5 1454.693359 1452.187256 1449.19043 1443.506348 1438.968628 1432.643311 1423.455566 1410.29187 1396.864258 1387.676514 1378.72644 1368.138794 1348.639038 1354.988037 1358.247192 1362.304199 1368.921875 1381.465454 1391.445435 1399.994751 1415.703369 1428.176758 1440.443726 1443.865723 1446.430664 1448.279053 1449.366577 1451.150757 1454.294434 1457.961792 1461.787842 1463.373901 1463.317139 1462.180786 1459.531128 1453.976685 1447.289917 1439.090454 1436.380859 1443.124756 1448.707764 1454.275635 1459.015015 1462.295166 1462.262085 1459.895752 1456.469116 1451.893799 1444.245361 1437.102905 1427.615601 1414.620972 1410.383301 1406.262451 1408.565063 1407.104248 1404.553223 1403.277466 1406.785156 1407.910889 1405.892212 1397.407227 1398.068726 1413.249146 1422.060791 1431.606689 1446.960815 1455.682373 1462.757812 1465.599121 1468.644653 1473.633301 1477.89624 1481.378662 1479.286743 1473.858765 1469.117554 1464.360962 1455.288574 1443.99353 1426.584595 1410.880249 1399.498779 1406.467163 1413.678833 1425.931763 1440.811768 1457.59314 1473.736572 1492.936279 1509.357788 1519.157837 1528.589111 1540.372925 1548.123047 1555.901733 1562.530029 1568.237061 1575.078369 1574.866333 1565.842773 1562.393921 1560.586914 1555.973755 1548.409424 1537.88562 1525.533325 1520.139893 1516.085449 1512.851807 1509.643066 1512.705933 1513.142822 1512.242188 1510.778809 1510.749756 1509.405884 1506.477661 1503.152832 1498.615234 1493.215576 1488.156006 1481.783447 1471.963501 1454.997437 1438.259399 1425.03125 1412.914917 1418.445435 1424.23999 1428.080078 1435.846924 1455.51123 1463.580811 1459.908691 1450.400757 1440.385132 1425.915894 1411.091553 1398.912964 1389.884033 1383.083984 1374.803467 1363.758423 1356.856445 1352.443848 1347.729614 1343.109863 1334.773682 1332.07251 1336.000244 1333.144531 1329.85791 1334.701172 1342.917847 1354.715332 1358.680054 1362.694702 1364.559448 1364.378296 1362.041626 1357.632446 1360.730835 1371.452393 1380.487793 1388.848999 1393.445068 1396.803711 1400.945801 1407.556885 1413.954956 1423.335815 1440.700439 1455.620361 1465.376953 1467.945068 1469.230103 1469.393188 1465.838989 1473.207275 1488.463623 1504.472656 1527.012329 1545.175049 1557.382568 1562.615356 1553.855835 1537.029907 1526.277466 1538.734009 1554.401489 1559.459595 1552.282959 1532.699097 1519.536743 1505.937012 1488.315552 1488.231445 1484.314087 1475.06897 1462.34082 1453.123901 1442.321777 1439.938599 1447.81189 1457.853638 1468.769287 1476.643311 1476.845093 1470.552612 1463.316284 1457.832153 1452.406616 1447.721313 1443.010864 1437.636475 1438.212402 1438.276001 1440.318115 1441.669189 1445.179565 1451.40918 1456.039795 1459.509277 1461.234619 1459.577393 1456.598633 1453.292847 1449.240967 1440.473999 1435.164673 1429.469971 1423.342407 1416.755493 1408.115112 1401.525879 1401.80249 1403.561035 1399.174438 1391.518555 1384.876953 1380.672607 1376.521851 1367.85791 1359.616089 1351.014526 1343.553223 1338.316528 1333.626953 1329.581177 1317.366333 1312.009277 1309.039429 1310.524658 1316.304077 1321.600342 1341.377563 1341.383545 1337.15332 1331.968506 1328.321045 1326.612183 1324.978027 1325.625977 1325.387573 1324.434326 1323.383545 1324.589722 1329.0896 1332.603394 1335.673584 1338.730225 1343.018555 1347.177002 1353.171997 1356.94043 1357.255493 1356.665039 1354.513794 1354.059692 1347.843384 1341.085083 1332.672241 1324.511719 1316.400513 1308.099976 1290.457397 1286.449829 1275.686035 1276.283936 1282.644775 1292.249023 1296.314697 1279.088623 1279.461548 1284.561279 1290.653442 1294.086792 1299.68396 1306.625244 1315.613525 1321.59729 1328.421753 1342.072144 1345.668579 1340.385742 1335.11145 1329.438721 1326.442139 1328.541626 1334.698608 1342.574829 1356.130127 1357.425049 1345.604126 1343.138794 1355.514038 1357.189819 1356.300293 1347.593262 1337.814331 1329.384644 1327.426758 1334.486572 1334.45813 1329.752441 1327.001709 1331.187622 1341.222168 1349.004028 1346.143677 1340.93689 1332.755249 1328.319214 1330.149048 1334.719604 1339.560059 1343.363892 1343.575806 1342.624512 1339.397949 1334.354614 1332.184204 1332.005859 1331.609009 1328.607788 1323.058472 1315.830688 1307.367432 1293.984131 1290.276978 1294.558472 1300.857666 1307.231079 1311.630615 1313.206543 1313.427856 1313.205811 1312.674316 1311.767334 1310.336914 1306.348022 1303.97876 1300.318115 1296.008545 1293.012329 1291.992676 1292.024292 1291.787964 1290.835815 1290.587402 1290.53833 1290.513794 1290.630493 1291.131104 1292.683472 1294.136719 1294.733276 1294.200439 1292.575684 1289.522461 1286.62561 1284.095337 1282.24585 1279.864136 1278.11731 1277.034546 1275.738159 1274.61499 1274.240112 1273.727051 1273.137085 1271.444946 1268.795044 1266.03125 1266.302124 1266.129639 1268.790283 1269.810913 1267.275635 1270.764282 1279.562744 1285.177612 1287.312622 1286.386963 1284.730103 1285.77478 1285.066284 1281.820557 1283.040283 1285.748901 1286.5896 1286.163452 1284.364746 1282.891235 1279.797852 1279.67627 1280.009766 1279.442383 1277.775757 1277.868164 1277.18396 1276.010986 1274.650269 1273.394531 1271.694092 1269.612549 1267.965576 1265.568359 1263.105957 1260.942139 1259.082764 1257.322754 1256.338745 1259.675659 1257.617554 1245.389038 1226.096436 1208.081177 1185.31311 1185.105957 1184.934814 1184.737793 1185.232422 1186.709351 1189.562744 1193.091187 1196.952881 1200.01062 1200.993164 1198.178467 1192.772949 1185.76416 1175.888916 1174.501465 1186.466797 1197.817749 1195.867065 1190.622925 1184.613159 1178.424316 1173.583374 1168.567993 1170.442017 1180.210571 1187.754639 1190.033813 1197.0979 1216.059082 1228.581543 1242.074341 1256.481201 1265.737305 1274.864746 1285.351074 1294.62561 1300.709229 1302.922607 1304.916992 1303.595459 1303.763672 1306.348511 1304.716064 1313.776855 1335.263794 1347.422607 1354.157471 1354.335938 1360.163574 1371.268433 1374.112183 1369.409424 1361.135254 1380.122559 1386.268555 1382.724243 1369.590454 1351.907349 1364.108643 1378.889648 1384.539917 1386.096924 1386.016846 +1304.100586 1305.00415 1310.043091 1316.591919 1327.615845 1338.872192 1353.38147 1372.946777 1386.245361 1396.762817 1409.756836 1426.19519 1436.903442 1448.041992 1447.907227 1444.142456 1445.430176 1447.793213 1454.250488 1460.606934 1464.265015 1471.508911 1490.171875 1505.695923 1517.867065 1536.068848 1552.535767 1569.666748 1586.693604 1601.360596 1612.984131 1620.977661 1629.530762 1637.380859 1647.052612 1655.85083 1666.575439 1669.777832 1666.703125 1661.43103 1654.795166 1646.393433 1639.350464 1633.317383 1632.691895 1631.85498 1630.878174 1627.572144 1623.531494 1619.595337 1616.364746 1614.036011 1611.588745 1606.167725 1599.720825 1592.293579 1584.663452 1565.120117 1552.637573 1533.080322 1514.467529 1502.503418 1491.856567 1479.136841 1467.255127 1461.271973 1462.193359 1466.151978 1474.818726 1461.779297 1446.742676 1432.08728 1414.148804 1405.765381 1403.135498 1418.154175 1426.549072 1428.849731 1440.359985 1456.499023 1460.11377 1461.876953 1461.413696 1470.356445 1485.453247 1500.695679 1517.807007 1536.066162 1545.710938 1553.500732 1558.321289 1560.254517 1561.217896 1560.418213 1557.005127 1547.138428 1557.915527 1560.994019 1557.809082 1551.971191 1542.317871 1531.735596 1522.572021 1514.972778 1505.490356 1489.64978 1481.349487 1480.457886 1474.407715 1468.123779 1459.954834 1448.404907 1442.858643 1435.243896 1423.792725 1407.341797 1393.910645 1383.950439 1374.38208 1364.678711 1355.06897 1352.248291 1358.797485 1364.362183 1373.058838 1383.72644 1394.041626 1404.35498 1420.266113 1433.820312 1443.461792 1448.493652 1451.12854 1452.045166 1452.901245 1455.302368 1458.925537 1462.63562 1465.349365 1466.131226 1465.784058 1464.869385 1462.240234 1456.418945 1450.498657 1440.749268 1440.912231 1449.020264 1454.987305 1462.363403 1467.364868 1470.073242 1469.155884 1464.777588 1458.855103 1452.190552 1446.113403 1439.311523 1430.885254 1418.36792 1413.65625 1418.67395 1419.213867 1414.785645 1411.019531 1410.789673 1413.324097 1414.444458 1411.166138 1405.571777 1397.85376 1411.59314 1423.014893 1436.612793 1449.959839 1456.452393 1463.497803 1466.680054 1469.542236 1473.366455 1479.387085 1487.206055 1487.333862 1477.466309 1471.474854 1465.229126 1456.459229 1446.936157 1433.869141 1412.37207 1401.440918 1410.044189 1421.606567 1433.368164 1445.951172 1459.433472 1474.214233 1487.363037 1505.631348 1519.280762 1533.275391 1544.064331 1554.577881 1563.586792 1571.172485 1575.640503 1570.346802 1560.486572 1553.64624 1547.53186 1545.031738 1544.147705 1540.7854 1533.736084 1524.300537 1520.779907 1517.323608 1514.612305 1513.838623 1513.997437 1513.751831 1513.508179 1509.66272 1504.743408 1498.836304 1498.075684 1496.089233 1492.653442 1487.029297 1478.090698 1472.868042 1464.220215 1450.718384 1436.213257 1419.085938 1410.38208 1408.318481 1409.082397 1411.428101 1423.935059 1439.733765 1447.994873 1445.942383 1439.764404 1429.473633 1418.876831 1407.629517 1397.306641 1388.700806 1381.807739 1371.462769 1362.682983 1354.283691 1347.362671 1343.707275 1336.585938 1338.107666 1343.011108 1342.358032 1338.922607 1333.116699 1334.540649 1340.650879 1354.975586 1362.344727 1368.409912 1375.862061 1374.877563 1369.124268 1363.391479 1360.113281 1365.919678 1376.272461 1385.742554 1392.240356 1396.915771 1400.8927 1405.145996 1414.724609 1425.574585 1441.526978 1464.538452 1477.910034 1488.290405 1493.001343 1493.55603 1494.396484 1496.2052 1502.942017 1512.84021 1527.675903 1549.459717 1561.905029 1566.112183 1560.267822 1552.707642 1544.383911 1553.133667 1565.958496 1571.069946 1564.075439 1546.368164 1535.675171 1525.337769 1510.416748 1501.426025 1488.021118 1476.631714 1464.554443 1454.678467 1443.63855 1444.724609 1455.014648 1466.366699 1476.512939 1480.073486 1479.167236 1473.339966 1463.889282 1458.546143 1453.092773 1451.326782 1446.988525 1441.784058 1443.935547 1445.811646 1447.704346 1448.0 1448.291626 1452.752319 1457.49939 1462.072021 1464.675049 1461.895508 1457.097778 1454.443237 1449.888916 1440.823975 1429.42627 1423.139526 1416.793213 1411.902588 1404.136475 1398.20752 1391.973999 1392.865234 1390.862183 1384.938965 1379.335815 1373.573608 1367.779053 1360.554565 1352.089722 1338.87085 1331.459839 1327.764893 1321.615479 1314.197632 1315.554199 1317.091797 1313.408081 1314.659668 1317.438232 1328.923584 1343.988892 1341.583496 1339.350586 1337.175903 1333.972534 1331.048096 1330.494629 1330.987549 1331.164551 1330.646851 1328.669189 1327.619629 1330.404785 1334.935181 1339.838867 1344.268677 1347.998901 1352.196045 1355.394775 1357.325928 1357.38147 1357.599731 1356.022339 1355.676025 1347.864746 1337.759888 1327.826172 1318.176025 1311.854248 1306.619995 1290.109985 1282.924561 1275.8479 1278.233887 1287.563965 1307.111328 1294.627686 1279.948853 1279.351685 1291.583374 1292.82251 1290.984863 1298.548584 1306.273804 1315.293579 1321.92395 1328.94873 1344.851074 1355.673828 1346.546265 1339.151001 1332.249146 1327.249023 1328.491211 1334.508911 1343.394165 1354.692383 1356.72522 1352.964722 1348.974243 1356.95813 1358.214233 1355.247437 1346.240479 1336.830933 1328.079956 1333.306519 1344.456055 1341.311523 1332.073486 1329.987671 1333.68042 1343.291016 1354.756592 1348.199707 1340.990845 1334.391113 1329.056519 1331.515625 1335.857056 1341.040405 1343.880737 1343.984619 1343.047485 1337.087769 1330.833618 1330.682373 1330.24939 1326.512207 1321.299316 1316.22583 1307.035767 1300.639404 1291.542725 1293.097656 1305.298218 1308.73999 1316.433228 1316.590088 1315.981201 1315.733032 1315.173584 1314.800293 1314.199097 1312.804688 1307.726562 1305.110107 1299.930786 1294.900757 1292.587769 1292.486816 1293.636353 1293.56311 1292.690186 1291.801147 1291.530884 1291.611084 1291.735107 1292.338623 1294.095337 1295.421265 1296.052368 1295.476196 1293.827881 1291.066162 1288.325684 1286.094482 1283.685791 1281.175415 1279.894165 1279.388184 1278.079956 1277.299927 1276.887695 1276.484497 1275.533691 1273.868164 1270.452881 1268.403564 1270.550903 1272.147949 1275.73291 1277.159668 1272.13562 1274.75061 1283.160767 1290.614258 1293.109497 1292.177979 1291.368164 1293.72522 1293.899658 1291.564209 1291.418579 1291.782593 1292.476074 1291.092773 1290.15271 1288.426758 1284.859863 1284.967041 1285.267822 1283.451538 1281.662476 1281.89917 1281.630859 1280.552856 1278.709839 1277.022339 1275.541504 1273.380737 1271.020386 1267.824219 1265.290527 1263.159546 1259.703003 1256.137329 1253.393921 1254.138794 1250.529053 1239.978271 1224.992798 1204.683472 1185.334351 1185.647827 1185.858643 1186.110352 1187.151123 1189.176147 1192.441406 1195.294556 1202.58313 1206.299072 1205.430176 1200.242676 1193.562012 1184.901611 1173.322632 1174.616333 1181.200806 1189.150635 1189.548584 1185.880859 1179.584229 1172.830811 1169.40332 1170.211426 1179.460815 1191.407593 1201.94104 1203.27356 1204.872192 1212.744507 1229.637939 1244.601074 1258.924194 1270.364624 1279.979126 1288.937256 1300.754517 1308.854492 1315.030518 1318.192749 1318.311279 1319.879272 1324.117676 1326.793701 1322.570801 1331.665894 1352.03833 1361.80127 1368.207275 1369.280884 1378.18811 1380.952148 1378.834595 1370.848389 1385.08667 1392.37439 1388.092529 1374.765991 1361.322144 1371.078491 1383.079956 1390.751953 1393.970825 1395.277466 +1314.039917 1316.35437 1318.038086 1318.600708 1320.667603 1329.998413 1345.842773 1362.572876 1375.043213 1382.292603 1398.997437 1411.262695 1418.577637 1422.128906 1423.08374 1422.929199 1421.350586 1424.141968 1437.60791 1444.857666 1451.240234 1460.124023 1476.291748 1490.532349 1504.240356 1518.412476 1539.123169 1555.62854 1576.354492 1589.268799 1604.5448 1614.759888 1620.869873 1629.348755 1642.489258 1653.681885 1662.240723 1665.7677 1664.705322 1661.594727 1654.092407 1645.556519 1641.405884 1636.955688 1639.283813 1639.686279 1636.898682 1633.316406 1628.462158 1623.622681 1619.929077 1616.490112 1611.821411 1605.568604 1599.317993 1586.986938 1576.656738 1558.118896 1543.820312 1528.144531 1512.75354 1497.792114 1485.569458 1473.921997 1468.76709 1477.37915 1476.607666 1471.47583 1462.394287 1447.475342 1435.776978 1418.276489 1406.331543 1410.627686 1419.592163 1428.212646 1439.002808 1444.951294 1447.77478 1463.834717 1473.666138 1478.353271 1475.945312 1475.443726 1486.332642 1499.4198 1513.474121 1537.980713 1547.778198 1558.447632 1564.511841 1567.989868 1570.09436 1571.34729 1572.38623 1568.839111 1566.052856 1570.239258 1564.539062 1557.147827 1547.920532 1539.837402 1532.544067 1525.74353 1512.46936 1501.253906 1503.841064 1496.518188 1483.359253 1474.340942 1462.338989 1448.695312 1442.680664 1435.374878 1425.418213 1405.441284 1388.880615 1378.888428 1370.215576 1362.618652 1356.27832 1350.131348 1360.028198 1369.202759 1380.955688 1391.728882 1398.80542 1411.173462 1423.637329 1438.63562 1448.651489 1452.976318 1455.08728 1456.513306 1457.784058 1459.921021 1462.783813 1465.619507 1467.759399 1468.466187 1468.184814 1466.889526 1464.320679 1458.780273 1453.306763 1444.036377 1445.632324 1453.71936 1462.120239 1470.032715 1475.871704 1477.718506 1476.109497 1466.316528 1460.769653 1453.54187 1449.47168 1442.953735 1434.923584 1425.958374 1427.602173 1430.383911 1429.335449 1423.072144 1416.97937 1416.544067 1420.188965 1421.840942 1417.866943 1411.542236 1401.136963 1408.5177 1421.937378 1436.711426 1446.371704 1453.369751 1461.463867 1465.923828 1469.096802 1472.638184 1475.825317 1482.137939 1484.493286 1479.489258 1473.230469 1463.304565 1452.390747 1444.777832 1433.823975 1419.099487 1401.435547 1409.466797 1424.978027 1437.751221 1449.188965 1459.466919 1475.561157 1490.460693 1505.99231 1519.806885 1534.193848 1547.199707 1561.745972 1571.335083 1575.828491 1569.633545 1561.018921 1553.664185 1546.832886 1536.953247 1533.005615 1533.292725 1532.577515 1527.217651 1522.056641 1518.481689 1515.9729 1515.280396 1514.601562 1514.30188 1513.548462 1512.488525 1508.324097 1503.898926 1499.866699 1492.886108 1489.359375 1487.251465 1480.609131 1470.063599 1461.581421 1453.316284 1441.300537 1428.848633 1413.987915 1415.666138 1414.66333 1405.535278 1406.768799 1416.234253 1423.156738 1428.873291 1428.996948 1424.686523 1418.370483 1411.705933 1404.236816 1397.026855 1390.111572 1383.716431 1377.264648 1367.688599 1354.859253 1340.703369 1338.44812 1343.948853 1346.414673 1347.740845 1346.947266 1344.325317 1342.075684 1333.55603 1338.748901 1349.644531 1361.108765 1372.875122 1382.674194 1387.159668 1380.93811 1369.456421 1362.430054 1364.006836 1370.523682 1378.321777 1389.911133 1396.225708 1404.356079 1411.473022 1421.832764 1437.979858 1450.915527 1467.263916 1478.182129 1488.121338 1498.037109 1507.373657 1514.518555 1521.373291 1525.784058 1531.937866 1544.149658 1556.101318 1565.755371 1572.766846 1568.830444 1562.281982 1557.727173 1562.590698 1577.162964 1579.022461 1576.498413 1559.513428 1548.983154 1539.022217 1525.910889 1507.473145 1489.777344 1476.117432 1464.650757 1456.619141 1449.698853 1452.186279 1460.40625 1471.295044 1480.463745 1484.169922 1481.611572 1474.583374 1463.185791 1460.387573 1458.515137 1455.337036 1451.321777 1449.962036 1452.321655 1452.474854 1453.737061 1452.964844 1451.355103 1454.069092 1458.388062 1463.062988 1465.30127 1459.180908 1453.227295 1450.870728 1445.158936 1437.712402 1427.541748 1419.747559 1412.945923 1408.190918 1401.217896 1393.045044 1384.848389 1376.858765 1374.489136 1370.175903 1357.615967 1352.973145 1351.743652 1346.677246 1337.216553 1328.687378 1322.53772 1324.26355 1322.928467 1323.101807 1322.631226 1319.301025 1316.512329 1318.525635 1323.079224 1330.331421 1344.727905 1345.604492 1343.009521 1342.511841 1339.642334 1337.211182 1337.104858 1337.394653 1336.641724 1334.749146 1331.782593 1328.785645 1331.746704 1336.349609 1341.381226 1347.214478 1353.417969 1355.848755 1356.21106 1356.963013 1356.524048 1356.149536 1350.077515 1347.276611 1345.103638 1337.817017 1328.633911 1319.497803 1310.369751 1293.656128 1287.474854 1279.964844 1274.939697 1282.405029 1294.442017 1310.50354 1293.830078 1284.805176 1279.290527 1297.443604 1302.262085 1296.858887 1295.469604 1308.347656 1315.09375 1321.578735 1328.644165 1343.581055 1357.515259 1353.111694 1343.574341 1336.416626 1329.51416 1328.208862 1334.27002 1342.552979 1352.521973 1356.348999 1355.775391 1353.048706 1358.177246 1361.641479 1356.651489 1347.940674 1338.291992 1327.815063 1344.537476 1354.120605 1345.377075 1337.266724 1341.190674 1341.1875 1347.805664 1355.384277 1347.687622 1340.521606 1336.161621 1331.656006 1330.381104 1332.980957 1338.194702 1340.921021 1339.498169 1335.351318 1328.858643 1322.895142 1320.470825 1319.195801 1316.63855 1313.405396 1308.418213 1299.595215 1292.523315 1292.740234 1303.106079 1312.731567 1319.436035 1320.206665 1319.516235 1318.968994 1318.235718 1317.587646 1317.180542 1316.786987 1315.690796 1308.152466 1304.451416 1298.797607 1292.817017 1292.485596 1293.009766 1295.270874 1295.784058 1294.908081 1293.325928 1293.015503 1293.11792 1293.204712 1293.707764 1295.442749 1296.855957 1297.207886 1296.582397 1294.673828 1291.985718 1290.08313 1288.039917 1285.904541 1283.669189 1282.43396 1281.510742 1280.259766 1279.424316 1279.095215 1279.63147 1278.656128 1277.21106 1275.992676 1275.303711 1276.558838 1277.993408 1283.4729 1284.896118 1279.614868 1279.244385 1288.684814 1295.619385 1296.744873 1296.275513 1296.219116 1296.98584 1296.951904 1296.365356 1295.937256 1295.97937 1296.17395 1294.723999 1294.620483 1293.14209 1291.73645 1292.954468 1291.236816 1288.450073 1286.990723 1286.34314 1285.713867 1284.458374 1282.60144 1280.674072 1279.330566 1277.246094 1274.478638 1270.863037 1268.315063 1265.743042 1259.934082 1255.016602 1250.079346 1248.244263 1247.227295 1239.984863 1225.028198 1204.882935 1185.3125 1185.721313 1186.286987 1187.026001 1188.53894 1190.908936 1193.555298 1198.033447 1208.478271 1210.37085 1209.368042 1204.612061 1195.783813 1185.786133 1176.716675 1172.3302 1173.200073 1174.134033 1176.688721 1173.522583 1169.981812 1169.185791 1172.262817 1178.985107 1193.334351 1207.422607 1214.896851 1218.347412 1220.548828 1222.422729 1226.988159 1236.431152 1256.702393 1268.825073 1280.829956 1289.47998 1300.942749 1310.731323 1319.210815 1325.314209 1329.543213 1333.19458 1339.857788 1343.910767 1342.5177 1338.552734 1355.20813 1369.619141 1376.819336 1379.872192 1383.878174 1388.824341 1388.608154 1383.882935 1393.591675 1396.977173 1393.500732 1380.752319 1369.103027 1377.007202 1388.303101 1397.759277 1403.827026 1407.310303 +1321.600586 1324.293213 1326.661133 1327.945801 1328.347534 1328.014404 1336.951904 1347.933716 1358.812134 1372.589355 1393.091919 1400.408447 1403.067749 1405.17041 1405.32312 1405.049316 1409.661255 1414.582275 1424.723999 1435.540405 1449.934937 1461.892944 1478.020874 1500.026733 1521.987061 1533.339233 1546.097412 1551.341187 1561.852295 1581.765747 1595.408936 1610.030762 1615.293335 1619.54248 1637.551514 1651.652954 1661.264038 1663.299805 1662.817749 1659.459473 1653.799072 1649.10144 1646.222412 1646.549561 1648.86499 1645.563232 1640.992188 1637.089966 1632.687866 1627.01355 1623.148682 1617.05542 1611.832397 1600.136597 1588.352661 1578.122192 1567.423096 1551.745605 1535.279419 1523.233154 1503.792725 1491.777588 1490.405151 1495.44043 1493.529419 1485.954468 1478.695312 1469.589233 1458.209839 1442.995972 1426.266479 1410.928711 1411.7677 1417.242065 1426.817017 1436.745361 1446.189453 1456.282104 1465.986816 1471.592407 1488.812378 1494.432495 1495.218872 1489.413208 1494.615234 1508.61731 1520.55481 1537.644043 1548.368896 1561.43103 1571.262573 1578.965454 1585.784668 1587.19873 1587.514526 1584.763062 1587.229614 1582.231812 1571.502075 1563.072632 1557.434448 1548.250366 1537.027344 1528.935913 1518.266968 1514.497803 1512.64856 1504.782715 1486.460938 1474.173218 1459.648682 1448.671509 1442.239868 1434.149902 1424.512329 1407.322388 1388.633789 1379.151978 1370.074341 1362.628418 1356.125122 1349.68396 1363.85144 1378.627319 1391.321777 1398.411621 1407.358154 1419.451416 1427.25769 1442.647461 1452.787842 1456.00647 1458.641846 1461.072021 1462.567749 1463.612305 1466.275391 1468.735229 1470.580688 1471.175781 1470.75354 1468.651611 1464.393799 1459.933105 1454.520996 1447.121948 1450.651733 1463.161743 1467.524902 1476.703613 1481.122437 1483.093262 1478.399048 1473.638672 1468.140503 1463.273193 1457.53894 1452.400879 1441.265747 1435.188599 1437.292114 1437.325073 1434.747437 1430.012817 1425.770386 1425.34314 1428.425293 1429.932373 1428.3396 1420.814209 1410.266479 1407.000366 1418.246216 1430.391846 1440.893921 1448.222168 1457.092651 1464.061157 1467.453369 1470.339966 1473.414551 1476.345947 1479.270142 1478.948975 1474.338989 1465.09668 1456.973999 1441.762451 1428.602783 1422.603638 1416.529785 1404.275269 1416.177124 1435.480591 1449.420898 1460.151245 1473.123169 1491.032715 1505.51416 1518.291382 1532.565186 1548.884766 1567.800293 1576.348022 1570.758423 1562.207153 1554.145142 1546.376953 1539.803345 1529.869507 1522.130127 1523.90625 1524.975586 1521.742188 1517.745239 1514.542969 1510.292236 1508.107056 1509.664307 1509.544678 1507.070068 1504.229126 1502.200928 1501.399902 1498.526489 1491.825928 1485.751099 1480.012695 1474.150269 1465.124756 1454.806763 1444.759521 1433.463623 1422.296997 1417.186646 1424.744751 1419.827515 1410.477295 1399.921509 1407.57373 1413.603271 1414.453003 1413.246948 1412.342896 1410.102173 1406.382324 1401.646851 1396.247437 1391.902222 1385.281494 1378.668457 1368.276733 1347.456055 1341.2771 1346.187134 1349.774414 1351.862671 1352.758789 1352.729858 1349.116455 1345.358643 1337.659058 1339.247681 1347.823853 1357.161377 1367.437134 1378.940918 1392.110107 1392.549072 1381.828613 1367.954346 1364.623657 1370.178467 1376.500244 1382.952271 1393.074219 1403.767578 1412.947998 1423.961792 1436.19751 1452.216309 1465.373657 1473.417603 1483.160156 1495.309937 1507.982422 1519.709595 1528.599731 1532.994629 1539.964966 1546.762207 1555.07019 1564.815674 1575.307251 1575.461426 1568.110962 1566.302979 1574.202759 1583.275879 1586.837524 1584.973389 1577.071045 1561.44165 1546.156494 1529.27356 1512.315186 1492.80127 1479.833618 1470.029663 1459.858276 1452.282593 1457.869751 1463.345703 1474.604248 1486.095825 1489.015137 1483.578491 1474.38208 1464.047363 1463.590942 1463.439819 1461.720459 1458.22583 1457.671509 1457.348022 1456.952637 1457.456421 1457.137939 1456.639893 1456.622314 1457.436157 1458.608032 1459.079346 1452.555542 1446.917603 1443.123779 1438.587524 1431.988281 1424.960938 1417.801636 1412.372314 1407.535522 1403.895508 1393.233154 1383.541626 1368.787109 1358.543945 1347.334106 1338.04187 1336.760254 1335.985474 1330.396484 1327.138306 1328.087402 1336.526611 1339.938477 1336.803589 1332.021118 1328.273682 1321.315796 1316.463867 1319.647583 1328.741821 1339.636597 1342.467896 1351.618408 1353.077881 1348.765747 1344.605591 1340.810181 1342.237305 1343.648804 1342.276367 1339.87561 1335.214844 1330.711426 1332.630371 1337.388916 1341.733154 1348.026489 1354.089966 1354.408813 1349.412109 1348.32605 1346.918091 1348.672485 1341.708374 1337.883789 1337.460083 1332.166992 1327.361572 1321.700806 1316.818604 1302.082642 1287.185425 1279.675781 1278.272827 1287.393677 1301.341064 1307.185425 1292.711182 1286.199219 1285.716797 1303.280029 1306.668945 1305.266357 1305.655884 1304.16333 1314.483765 1321.409668 1327.682617 1342.133423 1357.450806 1355.46875 1347.951172 1340.906006 1333.477417 1329.296631 1333.975098 1340.356934 1349.060303 1356.198853 1361.108032 1357.046997 1361.944946 1366.74585 1357.680176 1348.706177 1340.313599 1339.38208 1350.899292 1356.794434 1347.746948 1340.075439 1355.460938 1348.477539 1353.684692 1354.90625 1349.286987 1343.282715 1337.26001 1332.216187 1327.95874 1328.032471 1330.723267 1332.758057 1332.572998 1329.567017 1322.654663 1316.062622 1313.034302 1311.498535 1309.268066 1306.187378 1303.550659 1297.678467 1297.603394 1304.395996 1310.918701 1318.224976 1322.071411 1323.113159 1322.577759 1321.591309 1320.840332 1319.998169 1319.372925 1319.140015 1317.977783 1307.564697 1303.149292 1298.829224 1295.426147 1292.870483 1293.748413 1297.144409 1298.279175 1297.883789 1296.917358 1296.37085 1296.40271 1296.571777 1296.990234 1297.936401 1298.738403 1298.773193 1297.854736 1295.909424 1293.753174 1291.804443 1289.826172 1288.565186 1286.956421 1285.502319 1284.189453 1283.056641 1282.10022 1280.949097 1282.287476 1281.081177 1279.873291 1280.900635 1282.289673 1283.918701 1286.658203 1292.948975 1292.913818 1281.436157 1280.488281 1293.813965 1299.627075 1301.505615 1301.509033 1300.863159 1300.236206 1300.03064 1300.042358 1300.032837 1299.840942 1299.456665 1298.846924 1298.192139 1296.259399 1296.234375 1296.581421 1295.235107 1292.26062 1291.575562 1291.048828 1289.790039 1288.517578 1286.913696 1285.161987 1283.479858 1281.404785 1278.877197 1275.801147 1272.206299 1269.189575 1260.88562 1253.093384 1246.47644 1242.342041 1244.524414 1236.94397 1225.148315 1208.030273 1187.848633 1186.150391 1186.5448 1187.49585 1189.322876 1192.117432 1194.620361 1202.252197 1210.227173 1212.641235 1213.024902 1209.915283 1201.994995 1190.858154 1181.199463 1176.670898 1174.144653 1172.964233 1171.449707 1171.161011 1171.151855 1170.334106 1174.999146 1183.386353 1203.848633 1216.815186 1227.390137 1235.711304 1236.336182 1240.931519 1245.361816 1246.263428 1247.617554 1259.173462 1275.110229 1286.960449 1297.958374 1308.533813 1318.704346 1328.958374 1335.455322 1343.556519 1350.912964 1356.949707 1357.759766 1352.620483 1358.114624 1376.880371 1382.765991 1386.135986 1390.365845 1396.13269 1398.123901 1400.210327 1403.228271 1403.613403 1398.746216 1386.718506 1376.622314 1383.616333 1395.423584 1404.906494 1412.834229 1416.995117 +1329.390015 1332.251587 1335.699463 1337.28186 1337.288574 1335.362671 1335.053711 1340.405396 1350.990112 1364.234375 1379.984985 1390.903687 1393.628174 1394.375488 1393.455078 1401.898193 1414.531494 1424.019897 1435.296143 1450.704712 1464.014038 1482.214355 1507.450439 1528.442139 1537.807373 1554.633423 1582.742554 1584.359863 1587.572144 1593.960693 1606.558594 1611.789062 1617.074097 1621.559692 1637.671021 1649.623291 1659.471191 1662.222168 1662.263672 1661.083496 1660.198364 1659.066162 1655.745483 1655.838989 1652.894043 1647.886963 1643.016113 1638.39209 1633.437622 1627.311035 1620.859741 1613.047607 1605.555054 1592.137939 1578.220459 1567.097534 1556.148926 1542.15332 1528.471069 1512.394897 1503.096436 1512.069092 1517.378296 1511.210571 1504.07019 1484.69751 1472.69873 1462.539673 1451.412354 1439.2677 1423.433594 1411.132202 1417.445312 1424.963501 1432.000977 1443.043091 1457.029785 1470.754883 1479.199951 1487.99231 1498.427368 1508.634888 1512.504272 1511.081787 1501.582642 1515.367798 1533.865479 1540.924805 1549.977661 1563.717651 1580.991089 1590.920044 1595.685669 1597.213867 1595.293945 1594.710938 1594.956421 1590.459717 1580.460449 1572.588013 1564.058228 1551.607422 1539.145142 1534.876221 1531.842041 1529.00293 1523.570068 1508.479736 1487.350098 1473.942261 1461.175171 1449.598877 1443.337891 1433.915771 1421.490112 1407.692261 1390.370117 1380.10083 1369.580811 1361.455566 1354.46814 1351.669189 1372.062866 1387.546631 1397.323486 1406.99292 1419.099365 1428.265503 1437.042358 1447.24353 1454.884033 1459.269653 1461.902588 1465.015869 1466.842651 1468.085205 1470.103394 1472.441162 1473.828125 1474.146973 1473.947266 1471.391113 1466.653931 1462.832153 1456.262695 1450.696655 1457.604126 1466.192993 1470.530151 1480.866821 1486.724854 1489.520264 1489.170532 1484.266235 1478.498169 1472.017212 1465.730347 1459.255371 1450.083984 1443.88855 1445.328247 1444.837158 1441.21228 1436.277832 1433.555054 1433.000488 1434.672607 1435.759644 1434.549561 1429.6875 1419.886963 1409.715088 1416.060425 1425.94519 1435.814575 1444.494873 1451.269775 1460.170532 1465.21228 1468.245361 1471.391235 1474.142822 1476.829102 1477.750732 1474.195679 1468.476196 1461.048584 1453.081421 1445.432861 1428.217896 1420.478882 1412.733032 1406.612549 1419.825806 1437.338257 1460.155151 1479.499634 1494.270996 1504.218994 1515.10791 1530.070923 1549.265747 1574.026611 1573.341675 1564.13269 1556.318237 1549.367188 1541.48584 1532.297363 1523.758423 1516.984131 1513.943359 1515.481812 1515.237793 1513.474854 1507.416626 1498.696533 1496.034302 1496.644775 1497.19043 1495.251343 1493.478394 1492.879395 1491.782837 1490.088623 1489.351807 1485.575684 1477.1604 1470.010376 1459.841553 1450.010254 1440.505737 1428.556274 1420.985229 1430.609985 1432.278198 1425.643799 1413.258057 1399.640015 1395.881226 1399.64917 1405.001465 1405.674805 1405.393921 1404.120605 1400.712036 1395.946899 1393.072388 1389.438477 1383.665527 1377.036377 1364.648926 1344.822021 1348.193726 1353.028687 1355.617188 1357.043335 1357.495239 1356.278076 1352.55127 1347.054565 1340.019409 1339.423462 1349.331665 1359.169434 1367.792236 1375.136963 1387.043823 1394.432495 1392.859619 1380.111328 1368.530029 1370.520142 1379.207397 1388.451172 1394.69104 1403.236694 1410.494873 1418.523682 1427.987305 1439.743408 1453.798096 1466.137085 1475.436523 1486.59021 1498.294189 1510.782715 1523.027222 1530.620483 1536.227783 1541.10144 1549.123779 1556.77063 1569.363281 1577.404419 1580.109863 1581.333618 1584.01709 1591.398193 1599.030029 1594.084595 1584.194092 1569.360962 1552.515259 1530.348389 1516.092163 1500.211792 1484.745361 1473.487427 1462.162598 1458.206421 1465.449097 1472.187622 1481.135376 1490.814087 1489.737427 1485.603882 1478.81897 1474.072266 1469.911743 1468.437744 1467.075806 1465.443726 1464.848877 1462.501221 1460.800659 1461.668457 1461.974854 1460.580444 1458.178589 1456.185547 1453.813843 1451.668335 1447.581787 1440.491455 1435.776001 1432.094849 1427.143188 1421.216919 1416.228638 1411.318115 1406.768066 1402.403076 1392.793335 1382.89563 1365.870239 1348.973511 1338.359863 1336.243652 1336.317871 1335.626099 1336.640747 1341.270508 1347.399536 1353.327148 1347.196533 1342.33667 1335.759644 1331.174194 1323.227539 1318.360718 1325.815552 1334.600586 1341.104248 1351.486938 1353.917847 1355.293945 1354.274414 1349.744507 1346.433105 1346.624878 1347.626099 1345.545898 1343.236938 1338.371338 1337.365112 1337.789307 1339.34436 1342.853271 1342.767212 1345.321045 1344.5 1340.454346 1338.462036 1338.686157 1339.634399 1336.751709 1330.897827 1328.763428 1326.705078 1323.633179 1321.22522 1319.223022 1309.591064 1285.558716 1277.248413 1283.736694 1290.891602 1309.483521 1304.27002 1290.589478 1289.081177 1296.862671 1305.464844 1312.450684 1314.445068 1313.615479 1313.244995 1315.08667 1320.407837 1326.742676 1340.396484 1357.316284 1356.672241 1351.198364 1343.819336 1337.244263 1335.40686 1337.371948 1339.060547 1345.76062 1356.125366 1366.635132 1363.966064 1364.806274 1367.170288 1358.942993 1348.877686 1340.814331 1344.274536 1355.499634 1361.922363 1350.581909 1349.573853 1357.491089 1354.332764 1355.510498 1356.759277 1351.914062 1343.317993 1337.172241 1331.508057 1327.347168 1323.056885 1322.97876 1324.068115 1323.51001 1319.993774 1315.749268 1311.682007 1308.376709 1305.97937 1303.834473 1303.259399 1303.671753 1306.204712 1308.696411 1311.998657 1316.403809 1323.200806 1327.910034 1326.86853 1325.273804 1324.108521 1323.373291 1322.217773 1320.924316 1319.637939 1317.942017 1306.755127 1303.89502 1300.886841 1297.801758 1294.347778 1297.680542 1300.516113 1302.00293 1302.177856 1301.159668 1300.675415 1300.874634 1300.731934 1300.87793 1301.278076 1301.24939 1300.749268 1299.561035 1297.751587 1295.520752 1293.008545 1291.491577 1291.209229 1289.886475 1288.483032 1287.509521 1286.476807 1285.635498 1284.870117 1284.873291 1285.200439 1287.528076 1290.669922 1293.609741 1295.042969 1296.355347 1298.047485 1295.848389 1288.815674 1289.460693 1298.671997 1304.605713 1306.157715 1305.666382 1304.00415 1302.97168 1303.115967 1303.264038 1303.347534 1303.21228 1303.083984 1302.368652 1301.403442 1301.047119 1300.795654 1300.693848 1299.243042 1297.198242 1296.250122 1295.304932 1294.016602 1292.759033 1291.391968 1289.87915 1288.003174 1285.79248 1282.975342 1280.970703 1276.782471 1270.461304 1261.237183 1251.68103 1243.148193 1239.145752 1237.05603 1235.418091 1232.244019 1214.299316 1193.755249 1186.003906 1186.644043 1187.60437 1189.654663 1192.629028 1195.501221 1204.556641 1210.994873 1214.396973 1216.693726 1216.674316 1210.182983 1199.770142 1187.893311 1180.756104 1180.786377 1180.294556 1178.551514 1180.182129 1185.751953 1184.962036 1176.418457 1184.09082 1206.980713 1223.098267 1236.295044 1247.859009 1252.464233 1256.216064 1261.140991 1264.245972 1265.263916 1265.986694 1267.59375 1279.587524 1292.807373 1304.574097 1314.195068 1325.314697 1335.603516 1346.258301 1357.540405 1366.665894 1369.808594 1369.330566 1365.040039 1379.022339 1387.700317 1391.070312 1400.666504 1405.731323 1407.33374 1409.574585 1411.164185 1410.126831 1405.472778 1392.457886 1385.619873 1391.152466 1402.780762 1412.008179 1419.204956 1423.778809 +1337.205566 1341.588013 1346.075562 1347.474121 1346.906616 1343.770142 1340.932007 1344.741699 1347.789551 1356.220093 1366.49646 1373.670044 1378.669922 1379.446167 1391.042603 1405.648193 1419.031616 1428.470947 1443.126343 1460.450317 1477.194214 1502.365479 1526.983765 1541.867188 1551.291138 1557.631104 1581.920898 1597.213623 1606.414673 1616.40332 1621.484863 1623.945068 1625.52124 1629.431641 1635.932861 1647.376953 1657.224365 1661.231323 1662.301392 1662.727661 1662.871948 1662.679688 1661.675659 1660.93689 1656.649414 1648.763916 1643.051636 1638.133545 1633.024048 1626.557617 1616.654297 1605.576904 1596.98877 1589.015137 1574.897461 1555.445923 1539.369019 1527.685181 1521.072021 1522.915771 1531.631226 1534.911255 1531.032227 1516.978516 1501.754639 1480.798828 1465.716919 1455.012939 1444.627197 1430.90979 1420.006958 1412.752075 1424.906738 1434.32251 1440.198853 1449.352417 1467.967896 1481.244629 1495.623169 1507.656494 1513.074219 1521.406372 1523.237427 1521.11377 1518.391113 1520.319214 1540.414551 1548.984253 1559.220947 1567.246704 1588.46228 1599.015991 1604.894897 1606.198853 1604.79187 1604.121948 1603.932373 1599.234253 1588.709473 1577.726196 1568.054199 1554.517334 1545.864136 1542.130249 1540.610596 1536.797607 1530.522705 1516.041992 1490.506226 1477.194702 1465.328857 1451.382935 1444.310059 1435.305786 1418.404053 1406.126587 1390.957764 1380.415649 1366.228394 1357.797607 1350.94751 1361.764038 1379.307251 1393.405884 1402.752319 1418.012695 1429.218994 1439.303711 1445.854858 1451.532593 1460.897949 1462.939209 1465.315918 1468.350342 1470.563965 1472.129517 1474.253296 1476.311157 1478.059692 1478.28894 1478.036987 1474.777588 1470.207642 1465.525024 1457.82605 1454.959717 1461.796753 1468.293457 1473.132812 1485.567627 1492.257446 1496.346558 1496.695435 1493.260132 1485.939331 1478.676147 1471.566162 1464.852539 1454.659302 1453.646484 1456.522217 1454.89917 1450.232056 1441.757446 1439.855713 1439.285645 1440.44873 1442.978394 1442.487305 1438.887451 1430.67749 1418.158813 1414.091797 1424.817871 1434.197266 1441.612305 1447.117432 1453.63269 1462.695923 1466.304443 1469.345947 1473.436523 1476.901978 1477.994019 1476.802979 1472.948242 1467.959106 1463.939697 1451.358521 1434.028198 1420.959717 1413.542114 1407.708496 1421.9646 1437.656494 1463.918701 1485.847778 1499.647095 1513.535522 1522.151855 1531.961792 1548.2323 1570.428101 1567.534302 1558.668335 1550.512451 1545.053589 1538.752197 1527.419678 1518.891968 1512.116577 1507.396729 1505.483154 1506.078491 1503.545288 1497.005371 1490.286133 1483.687134 1483.216553 1482.053223 1480.816284 1480.595703 1478.779419 1476.332397 1474.609741 1475.072144 1476.094727 1476.480225 1468.196167 1453.361206 1443.474976 1435.268433 1425.871582 1430.259521 1438.712769 1439.805176 1427.317871 1413.38562 1402.275024 1391.796631 1386.534546 1386.666138 1390.804199 1392.51001 1393.274048 1389.469727 1386.535645 1384.508667 1382.125244 1379.536255 1371.994995 1358.017578 1348.58313 1355.297852 1358.682617 1360.657837 1361.489014 1361.583252 1359.186035 1354.492188 1347.646729 1340.607788 1339.105225 1348.963135 1359.439209 1367.970581 1374.623779 1382.766235 1393.302979 1399.600952 1391.993042 1378.784302 1370.31665 1376.406006 1388.602661 1394.263184 1399.018921 1403.707275 1410.648438 1418.505737 1429.046997 1440.16626 1454.255981 1465.676514 1475.844849 1484.680298 1493.211792 1502.630127 1513.462891 1528.054199 1531.297852 1535.774902 1544.480591 1558.526978 1575.134033 1586.283813 1592.672241 1596.159058 1604.610718 1611.60376 1602.071045 1587.487793 1571.101562 1552.795288 1533.035645 1519.533936 1504.452271 1491.319824 1479.019531 1464.042358 1466.405151 1473.258301 1481.539185 1487.983276 1491.894531 1490.918701 1486.767822 1482.198242 1477.64856 1475.541138 1473.305298 1471.590088 1470.70752 1469.005371 1466.151855 1466.018555 1469.912476 1469.662109 1463.105835 1459.151489 1455.326172 1451.678345 1447.250732 1443.175049 1438.325928 1430.538208 1426.098877 1422.50354 1417.218994 1412.5 1407.937134 1403.969727 1397.741089 1387.867065 1377.970703 1359.184448 1340.952026 1339.657104 1344.562622 1349.118896 1350.926636 1352.477539 1354.071533 1355.755005 1355.138794 1348.359131 1341.472656 1336.690674 1331.726929 1327.008667 1324.773438 1328.661377 1344.05542 1355.206909 1355.383301 1355.614014 1355.944458 1355.694824 1353.458862 1350.931274 1351.574097 1353.238159 1350.778809 1343.07666 1342.00061 1342.435059 1341.388794 1340.980347 1343.273071 1341.906494 1340.024414 1339.230103 1337.118042 1333.154419 1332.550049 1332.168213 1330.856567 1327.678223 1323.967285 1319.534912 1319.74939 1317.940186 1313.770752 1295.981079 1278.157471 1281.378296 1289.900879 1298.64978 1315.734619 1307.620117 1291.401245 1289.208252 1301.393555 1314.852295 1318.076294 1320.045654 1320.694214 1321.819336 1322.303467 1326.879028 1330.193115 1340.554932 1356.602417 1358.192871 1353.703735 1344.714478 1339.580933 1339.888428 1341.530029 1340.322021 1342.514404 1353.991455 1366.466064 1366.484497 1365.580933 1367.170166 1360.191772 1348.327759 1340.299683 1351.28772 1363.046509 1368.477905 1352.620239 1357.0 1361.733643 1363.480957 1361.840698 1357.409668 1350.748291 1342.260376 1336.198486 1330.677856 1324.076294 1318.406006 1316.215576 1316.282471 1315.332275 1312.973389 1309.938843 1306.369629 1304.109375 1303.711182 1304.775391 1307.947632 1311.172974 1313.925415 1315.725464 1317.609619 1322.438721 1328.970703 1331.121216 1329.558838 1327.643433 1326.397095 1325.78479 1324.412231 1321.801514 1318.73999 1315.013794 1304.895264 1304.055542 1302.599609 1302.081055 1301.840332 1304.18396 1304.348511 1306.327881 1306.905396 1304.757202 1304.539551 1304.779907 1304.828857 1304.20752 1303.965454 1303.576294 1302.959473 1302.018066 1300.272583 1298.172607 1294.953003 1294.63562 1294.385254 1292.729004 1291.560181 1290.849365 1290.130981 1289.530884 1288.473511 1288.42688 1290.43042 1293.834106 1297.4552 1299.790527 1301.399292 1302.954834 1304.414795 1303.275757 1295.382202 1293.200684 1303.793579 1308.327881 1309.467285 1309.054199 1307.186768 1306.020874 1306.75293 1307.387573 1307.623413 1307.54834 1307.112671 1306.339233 1304.887695 1304.031128 1304.946289 1304.94812 1304.21582 1302.291626 1300.699707 1299.460693 1298.350342 1297.17627 1296.00293 1294.672729 1292.603394 1290.176514 1287.06897 1283.914795 1277.751831 1268.031738 1261.060791 1250.630493 1240.667358 1234.882446 1230.70752 1228.294556 1227.07019 1218.641968 1201.66626 1190.994995 1186.633057 1187.791748 1189.412354 1192.283203 1195.761963 1204.452026 1210.949951 1216.166504 1219.640747 1222.457031 1223.857544 1211.70166 1200.068848 1195.397827 1194.635132 1192.558716 1186.689331 1194.025146 1203.125244 1200.785156 1188.864868 1181.526489 1201.608521 1219.691162 1232.632568 1247.599487 1261.664062 1271.562134 1275.070679 1278.076782 1280.627686 1283.204956 1284.877441 1287.303955 1293.007935 1301.549316 1313.150269 1323.564941 1337.161377 1351.961914 1361.403687 1369.261597 1375.731812 1379.623047 1381.719727 1387.060547 1394.426025 1401.653076 1407.876709 1412.327881 1415.319092 1417.078735 1417.807983 1417.216309 1412.605591 1400.799683 1390.65625 1393.843994 1408.908569 1417.828491 1424.91394 1430.240845 +1346.782837 1354.148682 1357.015015 1358.007568 1357.265381 1354.292358 1350.268799 1354.015869 1358.944336 1359.55481 1363.295532 1367.86145 1373.232178 1378.629272 1394.085571 1408.841187 1420.692505 1431.452393 1449.926147 1467.536377 1486.835449 1508.969604 1532.91333 1551.848877 1574.935181 1582.393799 1581.397339 1602.635986 1620.931519 1633.982178 1639.692139 1637.577759 1635.69751 1641.387451 1646.460083 1648.954468 1657.120239 1660.694214 1662.153076 1663.103638 1663.394287 1662.930908 1662.339722 1660.961914 1655.455811 1646.488525 1640.953491 1635.616333 1630.731201 1624.806274 1611.917236 1599.324707 1591.219849 1583.849487 1568.42627 1549.298584 1538.710205 1533.318604 1539.44519 1542.258301 1545.904419 1543.576782 1532.525024 1512.569824 1492.860474 1473.349243 1459.068604 1447.899902 1437.105225 1425.288818 1418.341431 1417.19873 1433.682861 1444.772339 1453.805176 1461.80481 1475.007935 1487.993164 1505.365601 1518.61084 1527.351685 1531.712158 1532.483887 1530.446533 1529.617065 1529.864624 1541.923462 1558.065186 1570.599487 1579.065063 1595.906738 1606.971313 1613.449463 1615.665527 1614.671021 1613.211548 1612.155884 1606.482666 1594.488159 1580.194336 1569.774536 1561.338745 1553.532715 1548.133911 1545.0896 1540.934326 1534.469849 1522.706787 1497.493896 1479.986694 1466.892334 1452.513184 1443.945679 1434.215332 1417.641357 1401.609009 1389.016357 1376.020264 1363.133545 1354.135742 1353.635742 1367.383911 1385.973877 1397.403809 1409.577515 1425.45105 1437.105347 1446.575195 1454.920532 1464.55835 1468.19873 1469.557373 1470.890137 1472.491211 1474.113281 1475.899902 1478.52124 1481.164551 1483.709595 1485.932983 1484.51062 1478.38562 1472.773193 1466.050293 1458.389526 1459.890503 1465.027588 1472.420898 1478.414551 1493.83667 1500.305176 1504.077393 1504.723389 1501.505981 1491.80896 1484.278198 1475.75354 1468.524292 1465.429932 1468.048096 1468.214966 1466.868408 1460.014771 1451.459717 1450.2771 1448.098633 1447.529419 1451.483276 1453.018188 1448.689819 1440.815063 1429.152222 1417.880615 1424.353394 1432.386475 1438.85498 1444.585571 1449.500488 1455.93042 1463.12561 1466.512207 1472.271729 1477.085327 1478.150513 1478.484253 1477.049072 1466.039795 1460.543823 1448.417725 1431.514648 1416.739014 1410.098755 1417.430054 1427.209961 1447.938965 1463.275879 1481.059326 1507.062744 1523.080078 1533.19519 1541.23999 1549.851807 1565.536499 1561.790649 1553.610596 1545.426392 1538.736328 1532.048462 1521.869263 1514.741577 1508.112793 1502.566284 1497.570801 1495.485962 1490.143677 1483.159424 1473.474365 1471.244751 1468.892212 1466.631226 1463.407349 1462.017822 1462.140381 1461.880615 1461.816284 1462.58606 1463.640381 1463.96814 1452.307617 1444.078857 1437.259766 1431.953125 1432.069214 1441.448486 1445.952271 1445.424927 1435.235352 1420.691284 1412.614746 1408.094604 1401.845459 1389.412231 1381.100464 1376.528687 1372.567627 1375.447876 1371.203613 1369.936279 1369.875 1368.319824 1363.033081 1351.795288 1356.632446 1362.998535 1365.435669 1365.296387 1365.902466 1366.245361 1362.332764 1355.102905 1347.759277 1340.487915 1342.658203 1347.519043 1355.970703 1364.226685 1372.651123 1380.871704 1392.246216 1404.716553 1400.151611 1389.888794 1379.872559 1374.009644 1379.253052 1390.539551 1394.202759 1399.235596 1402.05249 1410.726318 1416.472778 1425.776001 1437.811401 1452.480347 1462.127563 1471.856934 1479.911499 1485.816772 1494.567749 1504.938354 1518.140137 1525.373901 1536.428955 1554.84082 1571.931763 1585.27417 1597.940552 1608.088623 1614.499756 1615.039551 1605.106934 1587.694458 1569.729126 1556.025024 1537.21167 1522.02063 1507.947998 1497.822388 1484.623779 1466.602417 1470.794189 1479.656006 1490.021851 1494.555664 1496.560547 1493.084106 1488.784912 1485.033691 1481.235962 1478.81311 1476.561646 1475.889038 1475.648193 1473.711304 1472.084717 1476.033936 1478.672974 1478.923584 1467.116211 1458.917847 1451.837524 1448.407349 1442.629639 1437.768921 1433.408447 1426.944702 1422.488037 1419.091187 1414.347046 1409.394043 1404.154785 1397.959961 1389.680054 1379.879761 1370.042358 1350.022583 1342.703857 1356.657349 1362.819824 1365.692261 1366.675537 1365.291016 1362.283569 1359.312622 1354.795776 1347.982178 1340.904907 1337.233521 1332.805054 1329.515015 1327.215576 1329.266479 1343.119751 1356.301025 1356.475098 1355.136108 1356.044312 1356.21814 1355.270264 1353.504395 1354.424316 1354.442261 1353.105225 1347.996582 1345.248291 1344.456787 1343.415283 1342.685547 1343.164062 1342.149414 1338.826782 1337.018921 1336.144409 1332.021118 1327.331543 1325.88269 1327.175293 1326.916626 1322.02063 1316.155518 1314.712402 1305.302368 1296.764282 1279.525879 1280.087402 1285.857788 1292.499878 1301.384644 1318.983032 1308.897827 1289.864746 1288.957275 1302.758057 1318.480835 1320.928345 1323.356201 1325.999756 1328.924194 1332.981079 1334.653198 1337.462402 1343.470459 1355.993408 1363.345581 1356.045044 1346.486084 1341.038574 1346.319946 1347.308716 1345.942139 1347.052246 1353.449585 1364.95752 1368.373291 1368.227783 1368.573364 1360.725708 1348.548462 1348.168579 1359.260986 1366.888916 1366.310425 1357.046631 1364.843994 1367.463257 1367.877075 1363.547852 1354.975342 1346.978394 1339.304199 1333.271729 1327.775513 1319.68689 1316.295776 1316.833252 1317.459839 1314.808105 1310.164185 1305.383179 1304.245972 1305.811401 1308.030518 1311.487793 1315.606567 1319.310547 1322.164551 1323.480103 1324.677856 1327.522217 1331.721924 1333.334473 1332.108887 1329.837769 1328.863892 1328.430176 1326.970825 1322.570557 1317.661133 1314.641602 1308.266113 1308.150757 1304.785034 1305.343384 1308.796509 1314.306519 1314.114868 1314.604858 1314.50293 1313.694702 1312.944702 1312.348511 1312.108643 1311.520752 1310.328613 1308.391479 1306.223511 1304.582886 1302.608643 1301.628784 1301.00415 1300.231689 1299.216919 1297.651489 1296.031616 1294.683594 1293.651123 1293.086304 1291.577148 1290.671021 1292.4552 1299.267944 1303.938965 1305.57605 1307.314575 1308.787964 1309.720459 1308.879517 1305.819336 1302.477905 1306.394165 1311.561279 1313.558105 1313.393799 1311.994629 1311.626221 1312.447388 1313.488647 1313.636963 1313.246582 1312.496704 1311.242432 1309.543213 1308.85022 1309.599731 1309.588135 1308.74585 1306.952393 1304.808838 1303.569092 1302.700073 1302.041992 1301.233276 1299.672241 1297.409424 1294.223022 1290.001465 1284.521118 1275.634399 1265.926636 1259.854004 1248.938232 1237.463013 1230.952637 1226.515991 1219.550049 1216.789551 1216.26062 1205.331055 1198.099854 1190.159058 1187.536255 1188.767456 1191.236328 1195.679932 1203.638794 1211.2052 1217.559448 1222.787354 1226.908936 1228.807129 1225.796631 1213.025757 1209.511475 1211.290771 1208.610474 1202.417725 1211.850464 1219.543213 1215.616455 1198.907104 1186.770874 1193.37439 1209.193115 1223.906982 1239.226685 1261.601807 1272.255371 1279.929199 1283.625977 1286.191528 1289.211426 1292.85498 1297.242798 1301.734619 1310.310791 1320.875488 1329.843506 1342.721924 1354.227661 1363.799683 1371.58728 1378.960693 1384.022583 1389.80481 1395.522827 1402.180664 1408.612061 1414.621826 1418.334229 1421.20459 1422.78064 1423.454346 1422.685059 1419.512329 1412.156982 1402.261719 1400.405151 1412.7146 1422.250122 1430.543457 1437.615967 +1361.85144 1366.829224 1368.016113 1367.432373 1366.486206 1363.086914 1357.187622 1354.07373 1367.53064 1370.338013 1374.177979 1379.640015 1382.192505 1382.448608 1392.431763 1407.285156 1420.084717 1431.346436 1449.268677 1471.989136 1489.554321 1512.376953 1533.718628 1555.346436 1584.973877 1600.609497 1605.373901 1620.297607 1637.994019 1651.503174 1663.204712 1651.214233 1645.094116 1648.380005 1650.282837 1653.169678 1656.961426 1660.444214 1662.103882 1662.980591 1663.244507 1663.174438 1662.056641 1658.924683 1649.727417 1642.045044 1636.084229 1629.172974 1623.668213 1617.779419 1607.314697 1597.459961 1586.609131 1576.313232 1556.416748 1545.380737 1548.283691 1559.705811 1562.513306 1559.18103 1556.997314 1547.143188 1527.019531 1507.925049 1490.476807 1474.116089 1462.013428 1448.086426 1435.043579 1424.12207 1417.675781 1426.92749 1442.98938 1454.333984 1465.697266 1477.933228 1484.168457 1492.331177 1512.379883 1530.04126 1539.692261 1543.509521 1543.788452 1541.745605 1541.744873 1542.822388 1547.938354 1566.214478 1580.764038 1594.049561 1604.330688 1613.654541 1621.481812 1623.585205 1623.039062 1619.679932 1615.599854 1610.733276 1597.243164 1581.221558 1571.479492 1567.703735 1563.263062 1555.926025 1549.738892 1544.023315 1536.074829 1521.03833 1499.092163 1481.049194 1466.278198 1451.971558 1441.645752 1429.971924 1412.595215 1395.684204 1380.234985 1373.268555 1363.859375 1351.92627 1359.288818 1374.105713 1389.996338 1401.822998 1414.085571 1431.549194 1444.215332 1455.962891 1467.860474 1475.644043 1476.544189 1476.709229 1476.436768 1477.196655 1479.332153 1481.676025 1483.77124 1486.20752 1489.217407 1491.148438 1489.694336 1483.564819 1475.364014 1463.923096 1461.005737 1467.93689 1473.542236 1479.933594 1489.63855 1503.949463 1508.414429 1513.228882 1512.659302 1505.52063 1497.928101 1491.666138 1481.88208 1475.042114 1481.354492 1482.043335 1475.338501 1471.258423 1464.635864 1462.364136 1458.912354 1455.370972 1454.668945 1457.285034 1457.675049 1454.37854 1447.360352 1435.954468 1424.631836 1425.997925 1433.455688 1439.81665 1444.869751 1448.897217 1452.438721 1459.417725 1462.703003 1469.44165 1475.909424 1478.11499 1478.896484 1475.976074 1461.906616 1448.758423 1438.680054 1420.621216 1412.086182 1415.975586 1425.490479 1437.369019 1459.550049 1479.01416 1495.802368 1514.953857 1531.826294 1544.102905 1553.87793 1561.604614 1563.383179 1555.92395 1548.443604 1541.366821 1533.281372 1525.389893 1517.356567 1509.963989 1503.467651 1497.782104 1493.822266 1488.09436 1484.974731 1480.300537 1481.189819 1479.979736 1478.223511 1476.364014 1473.843384 1469.623901 1466.19397 1460.532227 1455.172485 1452.841675 1448.771362 1446.671265 1442.57959 1437.887207 1435.414551 1437.588013 1445.947754 1452.328003 1453.699585 1452.077148 1443.794067 1429.591797 1423.350952 1422.118896 1416.219482 1407.823608 1400.40332 1396.016113 1387.08374 1374.085815 1365.883911 1362.313232 1361.738037 1358.934692 1353.096191 1358.312012 1364.992432 1369.987427 1372.654175 1375.573975 1377.096069 1371.945923 1363.78772 1354.687988 1346.956177 1340.409058 1347.98645 1346.887207 1357.179443 1365.570312 1371.53772 1379.996338 1392.693115 1400.900146 1405.393921 1398.153687 1390.530884 1384.319458 1378.799072 1382.522705 1389.499878 1396.373291 1404.051636 1410.188232 1414.035889 1420.527588 1422.95752 1432.057739 1448.114136 1457.602295 1464.056763 1470.450317 1476.450073 1484.793945 1500.312256 1516.27002 1530.280762 1547.328491 1566.664429 1584.298218 1598.542969 1612.055542 1619.350464 1620.586792 1608.453613 1588.736206 1571.920166 1559.882446 1542.346191 1526.770386 1514.730347 1503.308228 1491.387817 1479.539551 1474.984619 1483.938965 1494.012085 1500.600464 1500.157349 1495.264771 1490.748413 1487.047485 1483.604248 1480.266602 1478.27124 1477.609009 1477.475708 1476.618896 1473.263428 1474.547485 1475.180664 1472.959961 1464.815063 1457.448242 1450.825439 1445.890015 1441.150879 1435.290405 1429.69165 1424.700317 1419.578735 1416.601074 1411.921875 1406.846924 1400.804932 1389.373779 1381.794434 1372.56897 1359.650391 1347.577148 1361.517212 1369.442993 1375.72876 1379.307129 1376.893188 1371.771973 1366.76062 1361.889648 1355.709717 1348.933716 1342.484131 1338.046021 1334.203857 1331.03125 1327.976562 1328.005859 1340.745239 1355.73584 1355.068115 1352.078491 1355.436157 1356.795654 1356.920166 1356.181763 1355.682617 1354.010254 1351.561401 1349.467407 1347.36438 1346.052856 1344.712158 1342.706421 1341.039917 1339.534912 1336.253174 1335.194458 1340.482544 1340.838501 1324.791748 1319.031982 1330.915161 1330.548828 1322.793335 1309.704346 1305.871338 1294.892334 1283.776855 1280.224365 1284.78772 1290.226807 1296.995972 1305.04187 1322.415283 1302.833008 1288.860352 1294.625488 1304.789917 1316.737427 1320.527344 1324.976807 1329.436279 1335.698364 1341.470459 1344.197144 1346.175415 1350.058105 1360.928833 1368.67041 1359.516846 1350.20752 1349.639771 1356.659546 1356.234741 1353.051514 1352.298096 1356.228027 1364.88501 1369.10083 1370.168335 1369.501953 1360.506958 1351.647095 1357.392212 1365.198242 1367.821655 1365.859985 1366.719971 1368.901978 1369.340942 1368.675537 1361.062988 1351.578857 1342.191406 1334.263672 1328.901855 1325.332397 1318.329346 1319.515015 1319.588623 1318.496948 1316.012695 1310.675415 1306.672607 1309.143066 1311.395874 1313.717651 1317.908447 1323.740601 1328.475464 1330.93335 1331.228271 1330.196411 1331.753418 1335.319702 1336.285889 1335.352661 1333.620361 1332.237183 1331.057617 1329.61731 1324.02832 1317.61853 1315.630249 1324.173096 1317.04895 1310.280396 1311.472656 1313.916748 1317.379395 1319.550903 1319.826538 1320.299438 1322.680664 1325.146118 1324.779419 1324.448853 1323.140015 1321.38623 1319.679077 1317.422485 1309.63147 1304.282104 1304.63855 1306.14563 1305.895508 1305.054443 1304.112793 1302.962891 1301.076416 1299.490967 1297.384644 1293.85791 1291.995361 1295.002686 1305.925293 1312.032959 1314.675537 1314.660645 1314.599365 1314.248047 1313.812256 1312.731567 1310.06311 1310.554443 1315.127686 1317.585938 1317.859741 1315.932129 1315.706787 1317.825562 1318.732666 1318.916382 1318.574463 1318.044556 1316.787964 1315.577148 1315.007202 1314.945679 1314.639648 1313.836304 1312.241577 1310.231445 1308.541626 1307.672607 1307.150513 1306.732666 1305.233643 1303.21521 1297.627441 1291.535645 1283.253418 1273.051514 1263.98645 1256.300781 1243.06604 1234.758911 1232.708374 1229.331299 1224.189087 1219.771606 1206.168335 1204.496338 1200.679688 1196.03064 1189.64502 1187.758789 1189.458618 1193.447266 1201.554199 1210.473267 1218.174683 1224.96228 1231.02771 1235.04248 1235.033447 1228.011719 1226.639038 1229.05835 1225.19104 1219.259766 1229.439209 1234.810669 1229.104492 1212.105957 1196.828491 1194.087402 1210.693115 1223.80957 1246.52771 1262.771484 1272.427124 1280.074585 1283.977051 1287.115723 1291.511597 1295.945068 1300.522949 1306.926514 1314.146362 1322.478027 1332.154175 1343.477661 1351.797485 1362.644897 1370.360474 1378.137939 1384.8125 1392.061401 1400.990845 1407.664917 1413.94104 1418.978271 1423.204346 1426.755859 1428.534058 1429.426758 1428.887695 1426.436768 1421.175171 1413.377808 1407.280762 1416.337402 1427.249634 1438.633057 1444.859253 +1379.794189 1383.420654 1385.150513 1385.380249 1384.16748 1378.139526 1367.70752 1363.546387 1373.415039 1380.181519 1384.670532 1390.842896 1392.648682 1394.927734 1393.540283 1401.806274 1415.665527 1429.454834 1445.643555 1468.990845 1488.557007 1510.416748 1531.153442 1551.713135 1579.930054 1600.320068 1613.772461 1628.350708 1640.741211 1653.793579 1660.525757 1660.056885 1657.093384 1652.156128 1651.735962 1653.712158 1656.775635 1660.10022 1661.757446 1662.363892 1662.922852 1662.439331 1660.147217 1654.240234 1644.463257 1637.456299 1630.30127 1620.56897 1615.40686 1608.317749 1602.677856 1595.531616 1585.310913 1570.205078 1564.606079 1569.287109 1570.276733 1574.320679 1579.471313 1577.936523 1568.953613 1552.389893 1531.862915 1510.065796 1494.27002 1479.870728 1464.013062 1447.230225 1433.258423 1423.677246 1419.46936 1434.305786 1447.533936 1461.290894 1478.984375 1491.570312 1503.177002 1511.155518 1520.171875 1544.959595 1553.649048 1556.556519 1556.12793 1553.768188 1553.564331 1556.365845 1558.526855 1570.656616 1586.80188 1601.102905 1611.382568 1619.918823 1624.220337 1625.94397 1625.857422 1623.740845 1618.102417 1608.772827 1597.366821 1587.912109 1579.793091 1573.424683 1568.973022 1562.476929 1555.497314 1548.040771 1533.112793 1510.769409 1494.173706 1477.202759 1462.127197 1447.899658 1435.718994 1420.91272 1402.031982 1388.601929 1384.067505 1377.55896 1370.962524 1351.183838 1361.428955 1379.042969 1390.727173 1404.867676 1418.570679 1435.233154 1452.03186 1465.035034 1478.164429 1482.592773 1484.088745 1483.479858 1483.219238 1484.497803 1487.064209 1488.12146 1489.478394 1492.602417 1496.100586 1495.581177 1492.539185 1486.899292 1475.778931 1463.248779 1467.746704 1476.967285 1482.04187 1489.775757 1498.249878 1510.638916 1514.582886 1517.025391 1514.589966 1509.451782 1504.045654 1498.46228 1489.192993 1489.637695 1495.052856 1494.263916 1489.878784 1477.807861 1474.809082 1472.044067 1466.736206 1462.194702 1464.170776 1464.828247 1463.078491 1459.460083 1453.246582 1439.256104 1429.558228 1429.045166 1436.636108 1442.15979 1446.90564 1451.62439 1455.074097 1458.493164 1462.61731 1467.568481 1472.730713 1475.934082 1476.532837 1470.536133 1460.974976 1443.982422 1423.609375 1412.584351 1414.468262 1428.652222 1439.288086 1456.916748 1473.606323 1494.874634 1509.168213 1520.859253 1537.960449 1555.381836 1564.738159 1566.494873 1560.671265 1552.172607 1544.87561 1539.203369 1531.301147 1523.234131 1515.776978 1508.46814 1507.039673 1511.361084 1510.653931 1505.515015 1497.048706 1493.275024 1490.689331 1492.422119 1491.505005 1487.005127 1485.401001 1483.355713 1479.447144 1474.023926 1470.267334 1466.842773 1463.997314 1460.154175 1453.446411 1447.008423 1446.141113 1449.021362 1457.430298 1460.597656 1460.367432 1458.429077 1450.5802 1441.910645 1435.109863 1433.481934 1430.46106 1427.504028 1417.85498 1407.903931 1399.147339 1392.436401 1384.671387 1374.77002 1363.785522 1356.192871 1359.317505 1365.548462 1371.280029 1375.742554 1380.011475 1384.072021 1382.74292 1374.661499 1362.322998 1353.251465 1346.610352 1348.322021 1355.905884 1351.698364 1354.889404 1361.184814 1367.077026 1377.651123 1386.322021 1392.954834 1404.05542 1405.072266 1400.182739 1395.221802 1389.843262 1383.866821 1388.547852 1395.642822 1402.002563 1416.614502 1427.810303 1437.633301 1439.670776 1438.458252 1437.856934 1446.146362 1454.071899 1464.483643 1476.722656 1487.642822 1508.178101 1523.263794 1541.098511 1553.016235 1566.322876 1585.368164 1600.376221 1613.327393 1622.591431 1623.793823 1613.998535 1600.025269 1580.41394 1564.301636 1550.654785 1536.4729 1520.932861 1507.868774 1495.210327 1484.088013 1478.323853 1486.687256 1496.822021 1502.590698 1500.932983 1496.017822 1491.247559 1487.379761 1483.844849 1480.059814 1476.964844 1476.511353 1476.338623 1473.57312 1469.03479 1464.811279 1466.383301 1464.824829 1460.357056 1454.433105 1448.818359 1444.087646 1438.747925 1432.784302 1426.81897 1419.193359 1414.966553 1412.205078 1407.311401 1403.146851 1395.004395 1384.782104 1375.772217 1365.252441 1349.402588 1362.640259 1371.966919 1378.331665 1383.812866 1383.968628 1381.19043 1377.373413 1370.694824 1364.700562 1357.581543 1350.894897 1344.561768 1339.322144 1334.843262 1330.223511 1327.507568 1327.500366 1336.594971 1346.887085 1348.390259 1351.932861 1356.059326 1357.387573 1357.825806 1357.773193 1356.860596 1354.849487 1352.624634 1350.388794 1348.991455 1347.58374 1345.878418 1343.613159 1341.30249 1334.118652 1332.311401 1331.526245 1335.476318 1333.604004 1321.098022 1313.208862 1328.743408 1326.704956 1317.94104 1308.129761 1292.185547 1288.639404 1281.744507 1285.020874 1290.168579 1295.25415 1302.122192 1319.339844 1322.944092 1297.722534 1288.763184 1305.536865 1311.018066 1315.082886 1318.824219 1325.381104 1330.737671 1342.864868 1354.567993 1358.084106 1357.892822 1361.089966 1366.986084 1369.234741 1361.977173 1355.013794 1358.310303 1366.771851 1366.103271 1362.988892 1361.4646 1363.695312 1367.187988 1370.625977 1371.317383 1368.918579 1358.643677 1356.734009 1365.083252 1368.914917 1369.783081 1367.350952 1370.525879 1371.12915 1369.851196 1366.922485 1357.372192 1347.054077 1339.772827 1332.710327 1330.731323 1328.912598 1326.637085 1324.155884 1321.399536 1318.072144 1315.443115 1313.061523 1312.285034 1314.743774 1317.780273 1320.576172 1326.646484 1332.553101 1336.044678 1338.192139 1339.239258 1340.160156 1339.951538 1339.766602 1339.760742 1339.459229 1337.613403 1334.56958 1331.965332 1330.190063 1323.694702 1316.817017 1318.289062 1329.99231 1320.598633 1316.69043 1318.557495 1318.55249 1318.459961 1320.904663 1322.949341 1324.25354 1327.957153 1331.507568 1335.08374 1340.34668 1340.941162 1333.631714 1328.636353 1321.615479 1314.611328 1307.897217 1308.924438 1314.209473 1317.730591 1317.191528 1314.631348 1311.406128 1308.739868 1306.180176 1302.84436 1295.774048 1292.330078 1297.19165 1307.176147 1317.032471 1319.229736 1320.686768 1320.780518 1319.818726 1319.649902 1319.61853 1317.991699 1315.525879 1318.197021 1320.373657 1320.552124 1318.733398 1318.512573 1320.730103 1322.03064 1322.34729 1322.065674 1321.75769 1320.688232 1319.827026 1319.555054 1319.444092 1319.381958 1318.924561 1317.789307 1316.247192 1314.500488 1313.402588 1313.268555 1312.674316 1309.853027 1306.450073 1299.212036 1290.422363 1279.591675 1269.413452 1260.088257 1253.6073 1250.360229 1248.405884 1242.460571 1235.048706 1228.855591 1223.769653 1216.549805 1206.539795 1202.967896 1199.147339 1194.88269 1192.89563 1189.768066 1189.06189 1194.459961 1207.150391 1216.298462 1224.574707 1232.852417 1239.092041 1244.897827 1244.160278 1242.12439 1245.317383 1245.151733 1241.676636 1248.346558 1247.946655 1239.035034 1223.770874 1208.970215 1196.497681 1211.888062 1226.539185 1248.359619 1262.056763 1270.536621 1277.409424 1281.964355 1285.242065 1290.292236 1294.598633 1299.692627 1305.418701 1311.921265 1319.440063 1330.79187 1340.851196 1346.216309 1353.590088 1364.505981 1375.919434 1383.394653 1391.946167 1402.991333 1410.060303 1416.794189 1422.927856 1427.719727 1431.28479 1434.195068 1435.909302 1436.041016 1434.502563 1431.001099 1426.064209 1417.817261 1420.366821 1434.64856 1443.942139 1451.112915 +1393.904175 1400.356812 1405.930176 1407.059326 1403.771118 1391.80542 1379.889282 1371.172241 1376.767212 1392.627319 1397.912964 1401.939331 1405.168335 1406.693848 1407.536743 1409.928467 1414.383911 1422.778564 1439.681885 1460.271729 1481.359009 1505.835083 1525.797729 1544.249268 1569.644775 1597.02771 1613.554688 1624.739014 1637.097656 1647.4104 1654.56189 1658.14624 1657.552002 1652.205444 1651.155518 1652.641113 1655.89978 1659.131836 1660.884766 1661.629639 1661.824951 1660.76355 1656.999268 1648.952271 1642.136841 1635.673218 1627.821777 1620.380859 1612.819702 1605.272339 1597.967896 1590.476318 1583.199097 1580.116211 1579.738525 1585.322388 1586.461426 1593.812866 1600.315796 1590.717773 1573.980713 1550.153198 1528.497559 1508.518311 1493.400757 1478.944336 1461.18042 1445.247925 1432.567017 1422.427002 1431.081787 1442.499146 1453.013062 1469.028198 1486.603149 1504.295044 1517.948853 1530.573853 1543.536255 1555.69519 1564.185913 1566.899292 1567.320312 1566.69751 1567.400513 1568.362671 1569.598389 1573.509277 1589.771851 1600.966919 1612.849487 1622.434082 1626.358398 1628.070679 1627.849487 1625.253052 1617.303833 1607.757202 1601.64978 1596.472778 1590.370972 1585.351318 1576.188843 1568.187256 1560.078613 1550.265015 1532.434326 1509.31604 1487.588013 1470.452515 1452.709717 1439.604736 1423.631592 1407.779907 1401.918213 1397.323608 1391.731323 1377.921143 1368.342041 1352.505859 1362.862549 1379.191528 1389.970459 1402.643555 1421.012085 1436.049316 1454.587524 1467.999878 1481.584473 1488.081299 1490.652588 1491.730225 1492.466919 1494.743774 1495.705811 1495.921753 1497.610962 1500.696899 1502.04541 1499.291626 1493.851074 1485.773438 1472.99231 1469.951538 1477.478394 1483.775269 1488.205566 1496.18689 1504.452271 1518.581543 1523.453979 1522.565063 1518.38855 1514.679565 1510.438721 1503.399658 1497.007812 1501.587524 1503.386963 1501.07251 1493.872803 1485.616211 1483.229004 1480.2146 1475.585571 1474.0177 1474.607544 1473.898071 1470.661621 1465.632324 1456.934937 1445.891113 1437.406128 1437.940918 1443.920654 1448.135742 1449.02063 1453.568848 1459.552246 1461.605103 1462.729736 1466.272705 1469.16748 1471.419067 1470.105835 1466.072876 1456.983887 1441.521484 1418.508057 1414.309326 1424.049072 1434.778198 1454.408569 1466.663696 1481.82251 1495.637329 1509.153442 1518.646118 1534.203857 1550.606445 1569.248657 1569.800171 1558.61853 1548.001343 1543.324707 1536.19812 1530.020142 1522.238403 1513.810791 1514.095337 1520.550171 1521.766113 1520.90686 1517.37439 1505.200928 1501.58606 1497.774414 1501.434082 1503.033081 1499.680908 1502.447021 1501.738281 1499.371582 1493.95166 1485.695312 1477.997314 1472.155884 1468.796509 1464.117554 1463.059082 1459.182373 1459.663696 1472.493164 1476.078491 1472.248291 1466.376343 1457.916992 1450.819458 1444.640991 1440.063354 1436.014404 1431.878662 1427.460815 1417.129517 1407.801758 1396.814819 1387.373657 1376.239502 1363.595703 1358.838989 1366.312256 1372.515381 1378.030396 1383.606689 1390.211182 1391.710938 1385.927979 1374.365112 1360.734497 1351.572388 1345.195557 1354.921021 1358.492676 1356.446289 1353.115356 1361.042603 1367.351685 1376.598999 1386.002808 1393.196777 1403.646729 1407.333008 1408.826416 1406.669189 1401.794067 1395.996704 1388.460449 1394.210938 1407.871948 1421.234863 1433.989746 1449.669678 1460.485107 1461.86438 1457.668091 1456.934326 1455.526611 1467.551514 1482.454102 1500.06311 1518.907104 1538.605957 1557.796631 1571.54187 1581.093872 1593.506836 1605.787964 1615.496826 1622.763916 1622.494873 1614.832031 1604.263306 1591.009888 1570.633179 1554.871704 1539.075562 1524.290649 1510.122192 1498.723267 1489.937134 1487.422241 1492.788452 1499.268433 1503.293091 1500.998657 1495.833252 1490.280762 1486.406006 1482.96814 1479.100952 1475.378662 1472.28479 1470.313477 1467.907959 1464.514038 1460.615234 1459.748657 1459.086792 1454.826904 1450.272095 1445.403564 1441.507324 1436.349854 1429.373901 1422.353394 1414.138306 1407.545044 1404.543213 1399.929932 1393.199341 1386.114014 1377.36438 1368.260376 1353.554321 1360.615967 1375.181152 1382.4021 1389.501465 1390.79895 1387.936401 1384.008667 1379.608154 1373.346069 1367.250488 1359.976929 1353.227173 1346.34436 1340.494141 1335.598145 1330.540283 1327.94812 1328.932495 1329.264648 1336.567993 1339.52832 1347.674927 1356.252319 1357.863403 1359.088379 1359.179932 1357.473877 1354.775879 1352.507812 1351.520874 1351.11084 1349.567871 1346.728271 1343.401123 1332.811279 1328.470093 1326.811646 1325.541016 1322.629761 1320.852417 1311.914917 1303.346313 1316.970337 1317.116699 1311.098267 1300.477295 1288.764038 1283.599243 1284.891113 1290.62207 1295.613281 1301.140503 1307.821899 1325.576782 1327.065186 1303.672974 1289.047485 1304.136963 1314.397461 1319.170166 1323.311646 1328.106323 1332.392456 1345.781494 1361.825195 1368.992065 1370.733887 1371.449829 1372.056763 1371.907715 1366.060669 1368.142212 1366.434937 1368.86499 1370.529663 1369.621094 1369.547241 1370.248169 1372.275635 1374.220337 1373.479126 1369.295898 1364.669312 1366.335083 1370.086304 1372.598999 1373.921997 1374.143066 1374.831665 1373.447754 1369.351562 1362.605713 1352.0177 1341.148926 1342.838257 1343.885864 1342.641968 1336.84668 1331.665161 1327.685791 1323.313232 1317.888184 1316.333374 1315.490234 1317.642822 1324.366699 1330.644653 1333.053223 1336.372192 1340.242554 1343.221436 1343.883179 1343.608032 1343.091064 1343.222778 1343.186646 1343.009033 1342.75354 1341.305298 1334.988647 1331.652954 1327.574829 1320.857544 1316.963135 1319.667236 1325.34729 1322.876831 1322.165649 1322.586548 1322.772217 1323.076782 1324.060181 1325.039185 1326.129883 1327.415161 1329.26123 1336.705078 1342.154053 1342.0896 1337.181274 1330.577026 1320.577271 1314.870361 1314.005005 1315.853149 1318.554688 1323.040527 1323.266602 1321.937378 1320.140503 1318.225586 1312.583008 1307.716919 1301.645264 1299.644409 1301.507935 1302.848389 1308.720215 1316.940552 1322.769165 1328.159668 1327.067261 1325.467529 1324.258301 1322.783447 1319.799561 1320.240845 1323.041626 1323.65979 1323.376221 1323.146851 1323.874878 1325.158325 1326.197266 1326.079956 1325.221436 1324.125244 1323.655029 1323.329102 1323.132935 1323.092773 1322.861694 1322.392822 1321.560425 1320.17627 1319.030029 1318.968872 1318.423096 1311.949829 1305.78479 1296.338989 1286.060913 1276.786377 1269.607788 1265.170776 1259.335205 1258.404785 1251.727295 1243.485474 1235.885986 1230.596191 1224.957031 1220.302368 1210.72229 1206.0979 1201.7854 1197.635498 1197.932861 1196.094971 1190.948242 1189.250488 1192.634399 1207.235229 1220.1698 1230.588013 1238.427246 1246.810425 1254.693604 1260.626099 1260.174316 1258.116943 1258.004395 1262.099609 1259.831787 1249.428345 1236.047607 1221.210693 1203.60437 1209.702148 1225.10144 1245.341797 1259.208008 1267.259888 1273.340454 1277.937866 1280.924316 1284.533813 1288.554321 1291.893066 1295.326904 1303.372437 1309.823242 1317.439331 1326.73584 1334.074097 1347.134155 1358.000366 1367.919678 1376.786743 1387.979858 1401.581299 1410.250732 1418.228271 1425.5448 1430.928223 1435.640015 1439.122192 1441.795776 1442.889526 1442.873779 1441.099731 1438.155273 1432.241211 1427.94397 1437.839355 1447.9104 1458.687256 +1404.33374 1412.496704 1416.239258 1414.109619 1410.094482 1403.200684 1385.475342 1375.445679 1378.546997 1396.085449 1405.11438 1410.065186 1413.551147 1417.555542 1420.562866 1425.658325 1434.094482 1436.973633 1436.562378 1448.465576 1472.96875 1498.205078 1515.467407 1535.662109 1563.449097 1586.877808 1605.739136 1616.968384 1628.198242 1637.267822 1645.932007 1648.560913 1648.877075 1648.357666 1647.856567 1648.832764 1653.588013 1658.099854 1659.68042 1660.463257 1660.478149 1658.110596 1653.1604 1646.267212 1639.729858 1633.720825 1625.910767 1618.315796 1611.699463 1601.404419 1596.032959 1590.501343 1589.621948 1590.603027 1591.361694 1592.719849 1595.153076 1607.820801 1610.864624 1591.778809 1569.621338 1542.816895 1520.023804 1503.633545 1487.887451 1469.778442 1457.098999 1442.005249 1429.461304 1423.700073 1439.195679 1451.232056 1464.670654 1483.587158 1497.305664 1513.518188 1532.637573 1548.679443 1560.024414 1567.296631 1574.827759 1577.502808 1578.739258 1580.010986 1581.249878 1582.612793 1584.062134 1584.854858 1592.657593 1601.165161 1611.057129 1621.416748 1627.255737 1630.547241 1630.785278 1627.265259 1621.192505 1612.272583 1606.369751 1603.199585 1598.160034 1592.190308 1583.403931 1570.956787 1560.892944 1547.899902 1526.682129 1509.64856 1489.605957 1471.929199 1454.29541 1443.535034 1435.112549 1429.248169 1418.182983 1399.544434 1388.193726 1374.688477 1364.018311 1354.343506 1362.969482 1374.673828 1386.585571 1398.177246 1419.482666 1433.93689 1451.493652 1463.571777 1479.44751 1489.750488 1495.987549 1501.134888 1504.064575 1505.400635 1504.586426 1503.842896 1504.984619 1505.660522 1504.468262 1501.317505 1494.12146 1485.139526 1473.01355 1475.876343 1484.616821 1490.461426 1495.198975 1501.626587 1510.199707 1527.969482 1529.7677 1526.933105 1521.636353 1517.978638 1514.34375 1508.308838 1505.789429 1509.499878 1509.644775 1507.09375 1499.415161 1494.434448 1490.617554 1486.263672 1484.931519 1484.92041 1484.620239 1482.540649 1478.553345 1471.338989 1461.549438 1453.283203 1443.143677 1443.838257 1452.311523 1453.762451 1450.720337 1458.568115 1464.728882 1465.324219 1465.256714 1465.79248 1466.279419 1466.640991 1464.193481 1457.789551 1449.215576 1436.517944 1418.212402 1419.940552 1429.399292 1441.320679 1457.929688 1470.364624 1481.11731 1491.350464 1499.901978 1509.50415 1522.896729 1538.772339 1560.430176 1572.406616 1559.110229 1549.461792 1544.125366 1539.155029 1532.641235 1524.479004 1522.966431 1528.195435 1533.560669 1534.442749 1531.540771 1527.77478 1520.124878 1512.094727 1501.229126 1506.885254 1511.193726 1516.644287 1517.25061 1514.806152 1510.557617 1504.732056 1496.545898 1486.31604 1475.665649 1474.765137 1474.207886 1471.473633 1467.422607 1474.764038 1488.707886 1489.463257 1483.079834 1478.27356 1465.491821 1456.282227 1448.640381 1442.491211 1436.64209 1431.224854 1426.148071 1416.515747 1402.802979 1383.932251 1375.181396 1364.15625 1363.138306 1368.248657 1373.945923 1380.199707 1385.81543 1392.059814 1395.785522 1394.188477 1385.61853 1374.078003 1360.229736 1350.779175 1346.038208 1362.560181 1364.349976 1360.746704 1356.514648 1360.975952 1369.328125 1377.92627 1388.036621 1399.517212 1405.480713 1405.129028 1413.036865 1417.991821 1416.430786 1410.797363 1405.659912 1399.376709 1405.6875 1421.45813 1435.325684 1453.675049 1472.636841 1484.327026 1478.802734 1477.532349 1477.554443 1472.856079 1479.788208 1504.657593 1525.865112 1541.063354 1561.509277 1573.838867 1584.351074 1596.933472 1606.237427 1614.199951 1617.70874 1614.437378 1609.377563 1602.206421 1591.963623 1572.099976 1554.981689 1538.223511 1525.091675 1511.507812 1503.373901 1499.101929 1496.537231 1500.347168 1506.061523 1506.302368 1500.650391 1495.534058 1489.092651 1485.919556 1482.833252 1478.681396 1474.716431 1467.43042 1463.540283 1462.295532 1459.582275 1455.693726 1454.901978 1453.946167 1450.304321 1444.813232 1440.728882 1435.313477 1427.175659 1421.692383 1414.260498 1407.999268 1400.425781 1389.328857 1383.664551 1378.029785 1372.249512 1364.17688 1357.074219 1361.400879 1377.253662 1387.048828 1391.789917 1396.014526 1394.818115 1391.077637 1385.990112 1380.328125 1374.187622 1368.158813 1361.571533 1354.866089 1346.940063 1340.42395 1336.883179 1332.16687 1329.219604 1340.123047 1344.420288 1340.402832 1341.914673 1340.754883 1351.089111 1357.85144 1360.973999 1361.013306 1358.520996 1353.551147 1353.118652 1353.629761 1354.123413 1352.990967 1343.745605 1336.689087 1320.32373 1315.865479 1309.702148 1305.873535 1303.152588 1303.84375 1303.49939 1300.838623 1302.244141 1303.653198 1299.397461 1290.164307 1284.688354 1286.671143 1292.636475 1297.01001 1300.658447 1310.87146 1321.253784 1329.710815 1327.972412 1303.214111 1288.599121 1305.425903 1314.73645 1319.350708 1324.920288 1331.008911 1334.774536 1341.115356 1355.255249 1364.631836 1370.948242 1377.500122 1377.822632 1376.263672 1372.54187 1372.086914 1372.56958 1373.750732 1374.59436 1374.740234 1375.646851 1376.787354 1377.772095 1377.491455 1376.295166 1372.60022 1370.63269 1373.115234 1374.894043 1376.390747 1377.52771 1378.202637 1378.508789 1375.61438 1367.30127 1355.537476 1349.896118 1348.100342 1350.561157 1351.516724 1349.677734 1344.335083 1338.050293 1331.410278 1325.756714 1320.748779 1316.476685 1317.762939 1326.288208 1336.177979 1342.299683 1345.402588 1348.299316 1350.804565 1351.04895 1347.769775 1345.421753 1344.036865 1343.45105 1343.580322 1342.848511 1340.274048 1335.076416 1329.724609 1328.685059 1326.58252 1323.706665 1321.559082 1323.541016 1326.21582 1326.900757 1326.762939 1327.353882 1327.021729 1326.60144 1326.913818 1327.069336 1328.270874 1328.936401 1329.93457 1335.943604 1340.226074 1340.212524 1338.905151 1330.069092 1326.556885 1319.268066 1319.667725 1323.728638 1326.052246 1328.461548 1328.824829 1327.96875 1325.704468 1321.780518 1315.853271 1310.011841 1304.880127 1307.333496 1308.163574 1307.645142 1306.459961 1313.106689 1320.202759 1329.215454 1330.946045 1330.431152 1329.189209 1328.546387 1327.797729 1326.638184 1325.807129 1327.555298 1328.058838 1326.796875 1326.763428 1328.44812 1329.748535 1329.689697 1328.467773 1327.219604 1326.905518 1326.710571 1326.436279 1326.449341 1326.881226 1327.231567 1327.506836 1327.224487 1326.349121 1322.760986 1316.955566 1309.89917 1303.051025 1293.365479 1288.509644 1283.924438 1277.734009 1265.583496 1255.893188 1251.974121 1246.938599 1240.950562 1235.966919 1230.999756 1224.465576 1218.614868 1211.831909 1206.349121 1204.151489 1202.116943 1199.940796 1196.014526 1194.226074 1193.952026 1191.053589 1190.284302 1204.844482 1220.002686 1231.597534 1243.610107 1255.488037 1269.852051 1274.183716 1279.025635 1279.318604 1278.891846 1273.128052 1263.067017 1248.618652 1235.195312 1219.644897 1204.662598 1222.085205 1239.154297 1253.833374 1262.42395 1269.186279 1272.667847 1274.537109 1275.804565 1277.495605 1278.919189 1281.140747 1286.128296 1291.488281 1300.775269 1308.025391 1322.466675 1339.45459 1346.775879 1355.170898 1369.02063 1385.909424 1399.172974 1409.210327 1418.147949 1426.724365 1433.259033 1438.868408 1442.702271 1445.929199 1448.665649 1451.344849 1452.152466 1450.139893 1446.356323 1441.248291 1439.879761 1449.922241 1462.166016 +1415.681152 1427.19104 1430.018188 1426.306885 1413.830322 1404.028564 1388.373779 1384.893555 1389.796509 1397.852295 1407.492065 1416.52356 1426.286743 1431.784912 1435.133667 1442.852173 1449.781738 1449.764282 1455.858276 1456.498535 1462.846069 1484.921021 1508.145752 1523.862061 1542.090088 1574.018311 1594.007812 1605.410156 1615.521973 1625.525391 1631.601562 1637.359497 1640.252808 1641.460571 1642.793579 1645.407227 1650.434448 1655.542603 1658.319946 1658.745728 1657.071289 1653.884277 1649.506958 1643.467285 1637.021851 1630.348755 1622.720459 1614.499268 1603.260254 1595.892822 1596.262939 1598.44397 1598.090698 1596.483887 1597.589478 1599.442993 1608.859253 1623.211426 1610.278198 1589.420654 1570.636597 1543.101196 1519.44104 1501.119263 1482.283447 1466.756592 1451.549561 1437.337769 1425.404053 1432.324951 1445.393188 1458.148682 1474.056885 1490.922729 1508.882324 1523.131592 1539.91748 1557.816772 1572.450073 1580.167847 1587.161255 1589.529785 1592.50061 1593.508301 1593.6698 1593.709229 1594.456909 1595.157959 1595.953979 1601.461182 1611.712769 1619.74939 1627.161499 1633.291626 1634.237183 1632.708496 1624.572388 1616.479004 1613.73938 1614.079712 1606.984741 1598.620483 1586.366455 1569.383911 1556.541992 1537.163818 1516.487915 1498.379028 1483.731201 1468.756348 1455.536255 1445.323486 1439.60498 1427.144287 1410.817993 1394.437866 1381.826172 1370.622803 1356.813354 1359.170532 1368.120972 1375.82959 1384.685425 1395.013916 1410.186523 1424.961792 1440.568115 1455.363159 1467.153687 1484.48938 1496.616333 1503.647583 1509.209961 1511.969971 1512.989746 1512.938965 1512.01355 1509.790894 1506.308228 1501.55957 1493.730591 1484.657227 1475.186523 1481.9198 1490.221069 1495.046509 1501.031494 1510.429932 1520.281494 1536.843506 1537.581909 1534.194824 1524.161865 1521.0625 1515.98938 1511.138794 1513.5354 1515.653687 1515.530151 1514.769775 1511.239868 1502.898315 1497.790771 1496.557495 1494.399414 1492.750854 1491.718506 1490.047852 1485.157837 1476.121216 1466.239014 1458.997559 1449.509277 1450.661865 1456.968018 1459.270142 1459.435303 1464.535034 1467.541138 1468.276978 1467.808594 1466.168701 1461.596802 1454.227417 1451.352051 1445.485107 1440.404297 1428.9823 1417.058105 1424.603638 1432.297729 1439.007324 1452.38269 1465.006226 1472.142944 1478.45752 1489.55481 1501.253052 1519.46228 1538.442505 1556.003784 1566.897461 1562.677002 1552.051636 1546.756836 1541.96228 1536.439941 1524.328003 1529.550903 1538.009766 1548.047852 1551.04126 1543.198486 1536.078003 1529.112305 1519.733643 1510.092407 1516.127808 1524.24585 1528.835815 1526.96228 1522.557373 1517.062378 1509.812134 1501.053589 1490.199097 1484.416748 1483.282837 1481.547729 1478.083008 1474.376221 1484.852661 1500.584717 1504.052734 1488.536987 1481.259033 1468.411255 1456.122437 1447.326904 1439.578979 1431.87793 1421.843994 1411.913818 1403.120239 1388.565186 1370.68396 1364.167969 1368.628784 1371.726929 1375.21936 1380.793335 1387.269775 1393.658325 1401.306885 1401.606934 1393.477417 1383.19519 1372.31604 1358.709595 1348.879395 1360.474487 1370.468018 1370.100708 1365.795898 1362.706909 1359.48999 1368.008789 1377.209229 1384.036377 1391.978027 1394.523804 1395.814819 1404.779663 1413.107544 1423.91687 1427.548706 1419.519531 1412.742676 1407.990234 1413.9729 1431.719971 1449.69812 1472.843872 1491.281372 1503.011963 1501.484741 1499.807983 1493.679321 1484.910278 1500.972168 1524.957397 1540.989868 1558.746582 1570.587402 1580.739746 1592.390015 1604.223633 1612.678101 1612.0271 1604.447632 1600.17334 1594.322876 1583.12793 1567.266235 1551.48291 1533.928223 1523.732422 1508.769165 1504.472778 1503.504395 1502.131104 1512.26001 1514.10083 1509.295654 1501.80249 1496.965576 1490.947876 1486.252563 1482.740234 1477.858521 1473.631104 1467.847046 1463.689331 1459.581909 1452.621582 1450.264771 1449.426025 1448.815308 1442.538208 1436.848389 1431.458008 1424.484497 1418.024048 1412.448364 1407.481445 1401.628906 1393.589966 1383.433838 1371.77002 1364.335083 1360.302002 1363.081665 1367.389893 1378.02478 1389.281372 1396.257812 1401.577393 1401.798218 1398.630859 1393.078735 1386.62793 1379.758057 1373.804688 1367.489014 1361.023315 1354.169189 1346.917725 1341.938232 1340.638184 1336.098511 1336.167725 1353.788086 1357.194946 1350.207275 1356.162964 1351.752686 1354.074951 1358.200806 1363.511963 1363.586304 1360.654907 1355.299438 1355.822021 1355.286621 1353.955078 1347.175659 1332.767334 1318.954102 1315.168823 1316.974487 1317.619385 1320.230835 1318.274902 1313.6521 1307.880859 1303.555908 1293.546631 1292.740356 1289.362915 1285.621826 1289.831055 1298.516479 1306.251709 1308.246582 1303.386841 1315.513306 1327.798828 1334.609131 1323.993896 1306.575928 1293.773438 1303.926392 1310.397827 1317.151245 1322.66333 1326.370361 1331.610596 1336.975952 1343.380127 1353.771973 1364.88147 1376.734741 1381.335693 1380.428955 1377.399536 1378.194702 1377.051514 1377.673584 1379.362915 1379.141846 1379.813354 1380.817627 1381.292358 1380.811401 1379.790039 1378.951782 1379.176025 1379.547363 1379.805664 1380.224976 1380.356689 1380.618896 1380.228882 1376.758789 1363.549438 1352.200439 1352.985229 1356.363403 1360.131592 1361.235107 1357.617798 1351.8573 1343.901978 1335.95813 1328.413208 1320.081543 1316.904907 1322.897217 1332.30249 1345.132812 1357.677124 1357.282349 1355.853271 1355.111816 1354.39917 1349.930298 1345.690796 1343.313232 1342.079712 1340.386719 1336.613281 1331.986694 1328.154907 1327.668457 1327.474976 1327.721191 1328.632324 1327.422607 1328.255371 1329.956909 1331.154053 1332.033081 1332.188477 1331.722046 1330.397095 1329.251831 1329.44519 1332.505859 1335.185669 1338.739136 1342.324219 1344.132812 1345.131104 1345.037598 1342.871216 1337.015259 1327.757324 1329.175781 1333.426147 1334.509644 1335.396484 1335.071167 1333.714722 1330.640869 1325.055786 1318.24231 1314.084717 1315.518433 1317.662598 1318.963135 1318.401978 1317.226685 1316.124146 1315.392334 1320.987427 1329.654907 1331.827515 1333.813477 1333.725098 1332.786255 1330.045288 1328.243408 1330.474121 1331.156128 1329.252563 1328.151489 1330.492676 1331.975342 1332.161255 1331.036499 1330.092163 1330.156982 1329.917358 1329.638306 1329.903687 1330.686157 1331.416016 1331.994873 1331.63269 1331.124878 1325.977417 1315.139526 1307.808594 1302.71106 1298.84729 1295.444092 1287.217651 1273.236938 1261.762939 1252.263306 1243.62854 1239.731934 1233.546021 1230.782104 1228.728516 1223.416992 1219.656982 1218.749512 1211.128662 1207.417358 1205.105957 1203.328247 1200.204712 1198.483276 1197.819336 1196.113525 1192.852051 1190.456177 1201.42749 1217.579956 1231.07959 1245.287354 1260.739868 1270.582153 1279.265991 1285.417114 1294.304688 1290.810303 1276.323975 1263.986084 1247.981445 1233.674194 1218.737305 1214.705933 1227.531738 1246.61145 1255.240845 1261.615479 1265.365479 1265.172852 1265.716064 1266.517212 1272.618774 1282.562622 1292.967285 1304.171387 1310.450317 1313.932129 1317.082397 1324.180664 1334.570557 1347.655273 1364.007812 1378.349609 1390.633423 1404.596313 1417.217896 1426.249756 1433.038696 1439.669922 1444.640991 1449.229614 1453.186401 1456.261841 1459.05542 1459.104248 1457.807251 1454.542358 1450.757324 1450.472534 1463.596802 +1425.964111 1436.228027 1436.031982 1431.272461 1420.203979 1403.140991 1403.986572 1397.05127 1395.664062 1405.722534 1413.560913 1424.944702 1437.498901 1446.102295 1451.379639 1457.561768 1460.634888 1461.627686 1465.378052 1477.039307 1475.870728 1476.975098 1500.134644 1517.893433 1533.426758 1558.545044 1582.191406 1595.308716 1604.243164 1613.073486 1623.699341 1628.730713 1632.22937 1634.678711 1640.83252 1645.80603 1649.999878 1653.903931 1656.019165 1656.062988 1653.91626 1649.094849 1644.622192 1636.949707 1630.977417 1624.102539 1616.961304 1609.133545 1598.285156 1602.025146 1604.519165 1604.956909 1604.812744 1606.557983 1609.7146 1612.359863 1623.412354 1631.726807 1610.608154 1591.465332 1571.117065 1550.518066 1529.133301 1506.082764 1490.224731 1471.496948 1453.275146 1440.119019 1426.552612 1437.300537 1448.790649 1461.811035 1476.991089 1494.382202 1514.028931 1524.888062 1542.868896 1564.701294 1580.034302 1588.591309 1593.665527 1598.099243 1604.49292 1606.744629 1604.57373 1602.961426 1603.588379 1604.265747 1603.712402 1606.662842 1612.539062 1621.085449 1628.346191 1635.13208 1637.663208 1636.638672 1627.15979 1623.652222 1625.831299 1623.384033 1612.687988 1600.693848 1586.703735 1568.478638 1549.081665 1518.637207 1498.546753 1484.03064 1470.517822 1458.149658 1445.983154 1435.36731 1423.288208 1409.716431 1397.984741 1386.730957 1375.962891 1365.258545 1356.846802 1363.079102 1372.356323 1381.821533 1390.302612 1398.260986 1411.574097 1429.155762 1435.904663 1448.490845 1465.171753 1479.689209 1495.170654 1505.47876 1513.776733 1519.842651 1523.572632 1523.665161 1519.952637 1513.703979 1508.212158 1499.651855 1494.742432 1487.934448 1479.359131 1487.179077 1493.063477 1498.132446 1505.726562 1516.544067 1532.647583 1541.218628 1541.202881 1539.563477 1534.583008 1525.424927 1520.329102 1515.8927 1518.33728 1520.365112 1520.714111 1519.414917 1516.102661 1510.385986 1507.62439 1506.193481 1503.052856 1498.557617 1496.607178 1494.428223 1490.700562 1483.916382 1475.871338 1466.420288 1456.332275 1459.408936 1464.440918 1465.828369 1464.626221 1467.586304 1471.120239 1471.740967 1470.33667 1467.50769 1463.476318 1452.349365 1445.578247 1438.950806 1433.083374 1424.974609 1420.207275 1429.410645 1436.544678 1441.261475 1446.837036 1452.119629 1462.268799 1473.889526 1489.314331 1501.877319 1517.610718 1534.012085 1546.778564 1559.299683 1561.879395 1555.534058 1550.943726 1543.317993 1536.739258 1532.151123 1534.691528 1543.888794 1559.444336 1563.126831 1553.220337 1542.381714 1532.734009 1526.252808 1521.666016 1531.163452 1540.84436 1547.709229 1542.003418 1531.245483 1521.199829 1511.162354 1500.776245 1494.078613 1493.282349 1493.062012 1489.125366 1484.203735 1483.487183 1493.738281 1506.760132 1508.576172 1497.658081 1483.511597 1465.406616 1452.630737 1439.116089 1431.526733 1424.653076 1411.11438 1398.202637 1385.823975 1376.384155 1367.083374 1370.67749 1374.459229 1377.666382 1382.07605 1388.551514 1397.749512 1405.128418 1405.963379 1402.049683 1387.772705 1377.023804 1369.310303 1353.105225 1354.185303 1370.202759 1377.564209 1377.333862 1373.287964 1370.577637 1366.134033 1362.669434 1364.192749 1373.172119 1377.258789 1383.577881 1386.462646 1389.174683 1400.307617 1410.007202 1426.355591 1430.452759 1426.282959 1419.184448 1415.386108 1422.85791 1443.21167 1463.883057 1483.169678 1500.160156 1509.202271 1517.992554 1515.682617 1508.469727 1499.950317 1518.866455 1535.267822 1551.548462 1563.678955 1574.377075 1587.290405 1601.663208 1609.955444 1601.616577 1591.647217 1586.239502 1580.560791 1570.993896 1559.338867 1542.497803 1529.434937 1516.825195 1505.482544 1502.481079 1503.620972 1506.447876 1511.566406 1513.216064 1513.288574 1506.768188 1501.228638 1494.643799 1487.364258 1483.962769 1479.44165 1477.011597 1472.289062 1467.029053 1462.030151 1455.154297 1449.35083 1442.837158 1437.299805 1431.974609 1426.133789 1420.634399 1413.796631 1409.748291 1405.685425 1400.630005 1393.202881 1383.468262 1369.599976 1365.192871 1367.986572 1372.127686 1373.684814 1375.230469 1388.845093 1397.674683 1403.589966 1405.456909 1404.810913 1402.568115 1394.466797 1386.873047 1379.078003 1373.361572 1366.44104 1359.477783 1353.02478 1351.672729 1349.897583 1346.550293 1341.402588 1345.310181 1363.947998 1367.404297 1359.331299 1367.223877 1363.517456 1363.952148 1366.364868 1366.887329 1366.380859 1364.970215 1362.860718 1360.361694 1353.49939 1341.146362 1335.07251 1325.300537 1315.123657 1329.660889 1334.20874 1332.925171 1334.0625 1330.381714 1324.015991 1314.572144 1303.596069 1294.627563 1289.384521 1287.469604 1294.364136 1303.107056 1311.4198 1321.478638 1329.417358 1315.94165 1315.521606 1329.746948 1343.756958 1329.04248 1320.85083 1301.195435 1301.733887 1305.077271 1314.196289 1314.68335 1318.68811 1329.756714 1334.007935 1339.148804 1345.097534 1354.303955 1367.03833 1379.537354 1384.461548 1385.606323 1384.47583 1383.124878 1382.692627 1383.862183 1384.394531 1384.633057 1384.469238 1384.233032 1383.777588 1382.929321 1382.472046 1383.017456 1383.210938 1383.510254 1383.67981 1383.15271 1382.078369 1381.109009 1374.21521 1362.421875 1358.73584 1361.9375 1366.381714 1369.312256 1368.832153 1363.077759 1355.53125 1347.116943 1339.16748 1330.788208 1319.415039 1319.131592 1325.319214 1332.259766 1340.113403 1353.001587 1355.640137 1354.505493 1352.776245 1351.078857 1347.584106 1342.506592 1340.837646 1340.175537 1337.895874 1331.440796 1328.016357 1328.502808 1329.109863 1330.644165 1331.828613 1333.568726 1335.082153 1335.70459 1338.368652 1338.918579 1339.297607 1339.307739 1339.202637 1338.225098 1336.446167 1336.416626 1338.728638 1342.810181 1348.142456 1352.629639 1353.834229 1354.731567 1353.504395 1350.665894 1346.721191 1336.947266 1339.70874 1342.832642 1343.700928 1343.741943 1342.032715 1339.296387 1335.078247 1329.418579 1324.049683 1322.372681 1327.019531 1329.158691 1329.244629 1327.874268 1325.878174 1324.431885 1322.892822 1323.557129 1327.597412 1329.958984 1337.562622 1340.868042 1337.998657 1334.629517 1332.336304 1332.814453 1333.298584 1331.794556 1329.56958 1331.413208 1333.58313 1334.130981 1333.698486 1333.292358 1333.388794 1333.322021 1333.405029 1333.832886 1334.550537 1335.18811 1335.385254 1334.294067 1332.011353 1325.480713 1316.546509 1310.802368 1306.805542 1299.079956 1292.936646 1280.258423 1267.311646 1256.673584 1245.180176 1241.799927 1237.675659 1233.256226 1231.966797 1229.756836 1228.045654 1225.359131 1223.599365 1220.539551 1212.10022 1209.087646 1207.401367 1205.043579 1202.380981 1200.671143 1198.727051 1196.457642 1192.593262 1191.87915 1201.370728 1213.265869 1228.716064 1244.348755 1259.108765 1266.748413 1274.15271 1281.833984 1293.252441 1291.764038 1275.331665 1263.10498 1246.354736 1231.374756 1221.870972 1219.598022 1230.278687 1242.547485 1247.758301 1252.23999 1255.755005 1270.297974 1281.055664 1288.168823 1295.953857 1308.972412 1318.211182 1324.429443 1328.37915 1332.197754 1336.410156 1344.858521 1349.58728 1360.702393 1375.29126 1388.492188 1401.585571 1413.723633 1423.94104 1431.728149 1439.118164 1444.605835 1450.001709 1455.67395 1460.859009 1464.96875 1466.560425 1466.997803 1466.397217 1463.640747 1460.289307 1463.611694 +1430.23877 1442.057373 1440.360229 1434.080444 1423.946777 1414.456909 1415.101562 1406.571533 1400.555664 1414.612793 1426.457397 1434.77002 1446.549561 1457.953125 1465.225586 1474.704468 1482.161987 1485.770996 1481.60144 1497.911133 1497.06189 1495.414917 1495.321289 1517.197266 1542.364136 1570.289429 1589.902832 1601.565674 1608.860718 1615.776001 1622.585693 1627.127319 1631.350098 1635.682007 1640.77356 1645.82019 1650.04187 1653.350098 1655.585327 1655.411865 1652.948242 1648.151978 1639.736572 1631.102661 1622.991699 1617.7771 1610.343506 1608.545776 1610.902466 1612.191284 1612.859131 1612.206543 1612.512329 1618.774658 1623.315308 1629.43335 1636.959351 1621.455811 1604.666382 1586.633911 1568.911987 1550.723877 1529.157959 1506.0354 1491.350586 1470.781616 1451.304565 1439.680908 1431.303345 1442.139648 1450.616699 1461.992554 1476.155396 1495.466797 1514.028442 1522.682129 1543.566528 1564.876099 1580.736572 1590.843872 1599.421753 1612.152954 1616.601929 1617.011108 1614.285645 1610.871582 1612.420532 1613.65979 1613.939331 1611.713623 1611.638184 1621.744751 1629.033081 1635.636475 1641.116211 1640.301636 1635.049072 1633.614258 1633.017334 1626.491577 1614.730103 1602.242432 1586.591187 1573.036865 1550.796265 1523.583496 1502.834717 1480.156006 1462.879395 1446.567383 1429.171265 1418.457031 1404.61499 1396.470947 1388.868896 1380.642578 1374.379272 1367.614502 1357.308472 1364.084351 1376.637817 1388.116211 1398.307251 1411.103027 1425.823242 1439.499268 1452.056641 1466.375366 1481.949219 1492.018311 1502.99231 1513.075439 1522.088135 1533.742188 1544.364868 1538.858398 1528.723877 1519.518799 1510.880615 1502.99585 1497.965698 1490.675293 1483.294434 1489.718384 1495.797729 1502.038696 1512.021362 1525.448975 1540.818604 1545.871826 1544.792236 1542.747192 1539.910278 1536.764404 1524.515625 1521.948608 1524.529785 1526.999634 1527.494873 1525.051147 1521.424683 1518.420532 1516.958618 1515.314209 1510.694458 1505.634399 1502.171997 1499.144775 1495.469604 1489.593628 1482.798828 1475.324829 1463.19165 1469.676758 1472.390625 1471.596191 1471.359619 1473.687134 1475.750366 1475.435181 1473.757202 1468.952271 1461.797974 1455.320679 1445.224731 1436.419556 1428.78125 1420.25293 1426.855835 1434.711304 1443.499268 1452.683838 1455.785156 1458.75769 1464.756836 1468.845703 1483.9104 1498.302979 1511.710938 1525.666138 1536.388916 1547.508667 1552.879028 1551.534668 1548.705322 1541.305908 1535.26355 1535.770752 1541.81604 1547.078003 1561.851562 1565.270142 1558.966309 1548.853149 1541.5354 1536.595337 1534.043579 1542.928711 1552.46582 1552.087891 1546.589355 1537.793335 1523.96167 1511.701416 1500.72583 1503.09729 1506.12085 1504.331665 1499.567993 1490.487427 1487.363525 1495.986328 1513.007202 1514.303345 1505.845337 1490.600464 1462.279419 1447.177856 1434.020752 1422.167969 1412.2771 1400.938477 1388.22937 1379.408325 1370.287476 1372.072144 1377.338013 1380.789429 1384.308838 1389.285889 1398.926636 1406.151978 1406.768433 1404.723022 1397.415527 1388.862549 1377.512817 1366.734497 1351.162109 1360.501587 1374.830811 1381.610718 1382.644409 1380.058472 1379.293945 1373.077515 1368.118286 1370.28186 1376.995728 1383.937622 1391.542725 1396.73999 1396.543823 1395.20874 1400.300049 1413.942017 1426.613525 1430.677124 1430.296875 1425.966064 1422.963745 1430.966309 1450.235352 1469.945557 1487.621094 1502.809326 1517.597412 1531.775269 1532.319702 1526.727661 1515.153564 1527.350952 1541.15686 1556.084473 1571.655029 1585.033813 1599.723755 1602.919189 1595.369751 1582.425415 1572.305908 1567.63562 1561.019165 1549.724609 1534.196777 1521.593018 1508.150879 1501.335205 1497.044922 1500.833618 1503.026489 1506.687988 1509.712891 1512.110962 1509.237183 1504.183105 1500.454224 1491.411499 1485.867676 1482.477051 1479.251343 1475.436646 1468.52356 1462.580688 1455.386475 1448.552368 1439.251343 1429.652344 1422.531616 1418.036499 1412.678589 1407.539185 1403.465942 1397.093262 1389.494751 1381.24707 1371.839111 1373.006958 1381.263672 1384.019165 1384.613892 1383.314331 1386.626953 1396.606812 1403.656372 1406.709961 1407.008179 1405.970459 1403.196045 1393.962891 1386.417725 1378.68042 1373.437256 1368.39502 1358.756348 1353.518066 1356.759033 1357.923706 1355.405518 1346.335571 1349.740967 1371.916382 1377.797485 1370.306763 1372.727051 1372.148926 1372.141479 1371.750122 1371.755371 1371.144775 1369.453857 1367.186279 1365.486572 1365.08606 1356.55835 1339.776733 1318.462891 1325.580444 1343.863647 1350.231201 1351.382202 1351.561523 1342.81665 1321.459595 1310.02478 1300.248047 1292.110229 1288.543457 1295.991211 1303.583252 1309.735229 1316.911377 1334.845093 1340.751709 1333.79187 1315.181885 1330.553467 1339.074341 1334.02832 1324.705444 1304.445679 1303.40686 1304.713379 1304.619385 1314.760742 1321.610718 1331.272583 1337.610596 1340.460815 1341.358032 1350.752808 1359.471558 1372.720337 1384.414795 1391.984131 1391.630371 1389.787842 1388.428223 1388.876831 1389.783569 1389.353882 1387.968262 1387.283936 1386.62207 1386.012817 1385.783325 1386.480591 1386.879883 1387.118164 1387.308594 1385.834961 1382.787476 1379.941284 1368.731812 1365.012085 1367.833374 1370.467407 1374.127075 1376.101807 1370.167725 1364.237183 1355.480347 1346.412231 1339.073608 1332.18396 1318.118774 1320.564331 1325.446899 1328.789307 1333.871704 1338.655151 1344.05957 1346.093262 1347.674805 1348.252808 1346.764526 1342.578003 1341.432129 1341.133179 1340.597046 1338.001831 1336.58313 1336.193726 1337.427612 1341.252808 1344.641602 1346.203003 1346.161377 1347.025757 1348.082153 1348.570923 1350.896118 1351.579346 1349.740479 1347.572144 1345.03833 1343.764648 1346.97876 1351.697876 1356.4646 1359.358643 1361.630005 1363.839478 1364.470825 1361.695923 1357.062134 1348.208252 1354.295166 1357.237305 1356.888428 1355.484619 1352.780273 1348.176636 1341.879883 1335.349365 1329.450684 1332.818115 1336.35498 1338.67395 1339.198975 1336.602173 1334.725098 1333.583618 1332.305298 1333.122437 1332.029785 1330.778076 1337.007202 1341.951904 1342.262207 1340.692139 1338.314209 1337.000854 1335.77124 1334.733521 1333.923828 1334.675537 1335.666626 1336.459717 1336.740601 1336.775391 1336.925171 1336.951294 1337.188477 1337.761963 1338.422607 1338.981934 1339.41748 1337.546265 1331.459839 1324.369019 1316.679443 1309.617554 1304.482056 1293.585815 1281.705566 1269.490845 1262.674805 1256.131348 1250.043579 1244.79126 1242.855103 1240.715088 1236.573608 1233.755859 1232.698364 1230.594238 1227.139893 1221.255737 1218.281982 1215.130737 1211.804565 1207.860107 1205.197266 1203.119751 1200.935791 1198.531372 1195.612671 1191.151367 1193.489258 1203.231689 1214.801392 1229.538818 1246.613403 1256.89502 1261.815552 1272.863281 1285.293091 1298.122437 1291.706421 1277.954346 1265.41626 1247.404907 1243.882568 1240.464722 1232.131592 1231.695923 1242.385986 1253.314209 1266.898438 1278.993286 1289.811279 1298.075317 1307.367554 1318.158569 1328.31665 1333.442627 1337.808594 1341.457764 1347.172852 1354.463867 1363.276123 1365.562378 1373.129395 1383.016235 1393.281128 1406.40918 1417.796265 1427.888672 1435.983765 1442.225586 1449.129272 1456.521851 1463.207886 1468.071655 1472.272827 1474.512207 1475.260254 1474.158936 1471.935059 1472.627319 +1431.352417 1444.328125 1443.344971 1436.650269 1427.173584 1427.510498 1426.500977 1415.019409 1409.343628 1424.432129 1438.074585 1446.272339 1455.78064 1467.695312 1478.209595 1490.510742 1500.389038 1508.199951 1510.476685 1513.911011 1511.363037 1510.286621 1506.563354 1518.168091 1546.231079 1578.263428 1600.14978 1610.192871 1621.567261 1626.702393 1628.545776 1629.648315 1632.315063 1635.890991 1641.03894 1645.773193 1649.981445 1654.489258 1657.554443 1656.887329 1653.571289 1649.496826 1644.16333 1634.306519 1622.910278 1617.870361 1613.131104 1614.114624 1616.198242 1617.570068 1618.518188 1619.593872 1623.750122 1630.047363 1637.338379 1641.259766 1625.591553 1607.651001 1592.626709 1574.555542 1560.472046 1541.369873 1518.265137 1503.817017 1486.987305 1472.109985 1451.715088 1435.588501 1434.371948 1444.952148 1457.606689 1467.268799 1474.7052 1487.968262 1509.325073 1519.111694 1541.158691 1563.79187 1577.128784 1591.70813 1605.737183 1620.568726 1626.223389 1626.8479 1623.900146 1621.934814 1622.313232 1623.23999 1622.846558 1621.769043 1620.216309 1620.433228 1630.441772 1639.41626 1646.73938 1646.039429 1644.181274 1641.702393 1637.592529 1627.332642 1615.288086 1601.149902 1585.187866 1570.351318 1549.322144 1525.609863 1508.676514 1485.642212 1465.836426 1446.991699 1430.244141 1415.467529 1401.20459 1394.345215 1388.532593 1383.302979 1377.998779 1371.273438 1363.775513 1363.629883 1380.808716 1392.399048 1404.37793 1420.57373 1440.270874 1452.867188 1464.759155 1478.719482 1487.635742 1499.608398 1516.994629 1531.664062 1540.278198 1552.55542 1561.887451 1552.87793 1536.358154 1523.463867 1513.991089 1507.667236 1502.714111 1494.443726 1486.555176 1492.139404 1498.639038 1510.13147 1524.194458 1539.38147 1548.554199 1549.8573 1547.903198 1545.343506 1542.777466 1539.916504 1533.568237 1524.839478 1530.78064 1537.83728 1538.497437 1537.291992 1530.675415 1527.75354 1526.6521 1523.825317 1518.930298 1514.609985 1511.1073 1506.186401 1500.684448 1494.609253 1488.699585 1479.591064 1475.788208 1482.223877 1481.000732 1476.389038 1475.216919 1478.640381 1481.13623 1481.152344 1478.496704 1473.144287 1466.410278 1453.939087 1446.602539 1439.919556 1426.188232 1422.090454 1429.11145 1439.095337 1451.726196 1465.532959 1474.612671 1470.606079 1477.440674 1483.265259 1481.789185 1487.932251 1501.328735 1513.099487 1525.356934 1535.438232 1546.590332 1547.797363 1545.294312 1538.265015 1538.722534 1539.903198 1549.502441 1557.808838 1565.948975 1571.887085 1566.996948 1558.038696 1555.953369 1553.171143 1546.393433 1550.480835 1552.132446 1550.740601 1544.467041 1536.284912 1524.996948 1510.721313 1511.59021 1515.283325 1516.555908 1515.212036 1508.587769 1497.81311 1490.872192 1496.865967 1513.632812 1516.43042 1513.510132 1496.619263 1464.109009 1445.327759 1432.334229 1419.035889 1404.261963 1390.539185 1379.299438 1373.837769 1370.880249 1378.238159 1383.110718 1387.06189 1390.125977 1397.325684 1405.050415 1407.677856 1406.87854 1402.981201 1390.538452 1382.682495 1374.807495 1367.797974 1352.475342 1362.820435 1378.967163 1386.530151 1388.339233 1386.479736 1385.159668 1382.038086 1376.752563 1375.895996 1381.776733 1388.256226 1397.40625 1405.799438 1405.330444 1401.889526 1399.309448 1406.855469 1418.453491 1428.623657 1438.634155 1438.687378 1435.024658 1428.878174 1437.910767 1456.674072 1475.614136 1493.5979 1512.482788 1529.571045 1540.542725 1547.735962 1544.436768 1537.994629 1549.255615 1560.168335 1575.31189 1584.858154 1600.67981 1600.715088 1592.476074 1577.811768 1561.504883 1554.858887 1548.16272 1535.856567 1523.124634 1510.219482 1500.407715 1494.569946 1489.578613 1491.898071 1498.712402 1503.52002 1505.671387 1504.695435 1503.783569 1503.226318 1502.332153 1495.645508 1487.830688 1484.20459 1480.246094 1476.28186 1469.373779 1461.946655 1452.280029 1445.303467 1437.074707 1426.890991 1414.932495 1410.327393 1405.310425 1399.854736 1392.971802 1384.206665 1377.657593 1372.084473 1376.060791 1386.271484 1392.923584 1396.091919 1396.504639 1392.951172 1392.381958 1402.529785 1407.316162 1409.194214 1407.88269 1404.853516 1400.275513 1392.140625 1386.204346 1380.375488 1374.201538 1368.12207 1363.309814 1363.231689 1365.014038 1363.827759 1359.587158 1354.349976 1348.223267 1370.028198 1380.869995 1380.241455 1379.662354 1380.150513 1379.541382 1377.911133 1377.17749 1376.375488 1374.622192 1373.362549 1371.523315 1368.774048 1356.927124 1336.42334 1320.838867 1337.989624 1353.129761 1358.090698 1357.926514 1354.311279 1340.091919 1321.892944 1307.454712 1295.660034 1290.452148 1291.223389 1300.187866 1307.956177 1313.793945 1328.602173 1342.402588 1344.987671 1336.842896 1326.612061 1332.1604 1331.144043 1327.074829 1315.147217 1303.995972 1303.912598 1311.70752 1304.553467 1316.179077 1328.826904 1338.083496 1342.596313 1344.921875 1348.760376 1352.894043 1357.982666 1366.214111 1378.539062 1390.866211 1392.762085 1392.723999 1392.355591 1392.494507 1393.075562 1391.980835 1390.841553 1390.440186 1389.807495 1388.669678 1388.761597 1389.137451 1390.281494 1390.780884 1390.714844 1388.361328 1382.645264 1377.394409 1374.422852 1374.835449 1376.945068 1378.604614 1379.755127 1377.490356 1369.634399 1361.748047 1352.670288 1343.212402 1337.091064 1331.56897 1317.526611 1325.693115 1329.140381 1328.047363 1328.391968 1328.703857 1337.251465 1339.736694 1343.127563 1347.585693 1348.282837 1346.628052 1344.449219 1343.831543 1345.458008 1346.921021 1347.177124 1345.634888 1346.290894 1351.859497 1354.764282 1355.973755 1356.630493 1357.194824 1358.076416 1358.998413 1361.000854 1362.316528 1362.122803 1358.553345 1354.727539 1352.956055 1356.095947 1359.530762 1361.923096 1364.453003 1368.245605 1370.854248 1372.490112 1372.862183 1371.584229 1365.444702 1368.560059 1371.310669 1370.22229 1368.133423 1365.503418 1361.066284 1355.26416 1341.124146 1340.342407 1342.423462 1346.539185 1353.391602 1354.734253 1347.032349 1343.420898 1341.363525 1340.748047 1341.821167 1339.883911 1337.791992 1338.204224 1340.660889 1342.373535 1343.618896 1342.132568 1339.844482 1338.450317 1338.066772 1337.553101 1337.979858 1338.407104 1338.819092 1339.454712 1339.781738 1340.158569 1340.398926 1340.642212 1341.271118 1342.409668 1342.674194 1342.720703 1340.901001 1329.75 1322.168945 1313.675293 1304.384888 1292.846924 1284.458374 1278.799194 1274.092529 1269.923218 1263.715332 1259.070068 1256.425293 1252.60376 1247.090454 1243.795654 1243.531006 1240.21167 1235.762085 1231.171631 1227.705811 1224.866821 1221.179688 1217.581421 1213.056396 1208.063965 1205.429565 1203.090332 1200.29126 1197.049194 1192.79126 1192.503784 1198.805908 1209.965576 1218.469238 1227.546875 1237.897705 1253.927124 1268.574097 1277.924561 1295.216675 1299.059326 1298.829712 1286.560669 1273.744873 1260.497314 1255.244141 1249.410156 1240.549194 1241.437256 1254.480957 1269.111816 1278.650391 1292.220581 1301.508057 1311.868286 1321.359131 1330.250122 1337.660034 1345.211792 1354.5354 1360.322144 1368.667725 1375.022583 1379.484497 1383.374023 1391.056274 1398.569458 1407.860107 1416.076172 1423.802734 1429.736816 1437.505371 1447.101196 1455.775757 1464.859497 1471.97168 1476.739746 1479.487671 1481.515625 1482.735229 1481.457886 1480.868774 +1439.578979 1447.860107 1450.653687 1443.885498 1435.533325 1438.349243 1432.47998 1428.832764 1420.949341 1432.622925 1448.743164 1459.336182 1468.088623 1475.161133 1490.21936 1504.12854 1517.630127 1524.865479 1526.00293 1524.868774 1521.395752 1521.723877 1520.790161 1520.157471 1546.050659 1582.201416 1601.915771 1615.487061 1626.782349 1633.268311 1634.887451 1634.221191 1632.605957 1636.078247 1641.008057 1645.990967 1650.85144 1656.026855 1659.77478 1658.506104 1654.524292 1651.087158 1646.73645 1638.850464 1628.452393 1619.625 1622.036377 1621.438965 1620.607422 1623.387939 1625.695068 1627.701294 1632.663208 1644.546265 1651.424927 1638.200562 1620.597046 1601.171631 1576.025024 1561.869263 1543.337769 1524.672363 1506.519653 1495.078369 1479.812378 1466.586792 1448.735229 1437.578613 1435.688232 1446.718384 1464.486816 1480.14563 1491.260376 1503.919189 1513.309082 1520.76416 1536.536621 1557.748901 1578.83252 1597.19397 1613.436035 1626.404541 1633.858887 1637.590088 1636.411011 1632.419312 1631.771973 1630.4729 1630.38208 1630.280273 1628.453491 1625.253174 1632.778198 1644.943115 1650.497925 1651.55835 1650.580688 1646.044678 1637.021484 1623.55896 1610.62561 1595.840332 1577.561768 1561.271729 1536.827759 1519.726562 1505.696533 1486.78418 1467.673462 1449.855835 1435.024414 1420.19104 1402.510376 1396.211914 1390.682617 1384.752197 1379.399292 1372.898804 1366.714478 1363.160522 1383.955078 1394.874023 1409.577026 1432.85144 1451.147949 1467.641479 1478.605103 1483.551514 1492.219238 1507.195435 1527.785889 1550.748535 1561.228882 1566.636963 1572.054932 1560.875854 1543.181519 1527.340088 1517.334106 1510.27771 1505.132812 1498.739746 1489.932251 1494.974487 1502.092163 1516.525391 1534.74646 1548.674561 1553.988647 1554.123657 1551.262329 1547.622192 1545.133667 1542.284546 1538.056885 1533.129883 1536.196533 1540.561768 1541.880249 1541.739014 1541.054077 1540.544922 1539.683716 1537.633545 1529.817383 1526.06543 1520.978516 1514.19812 1507.314697 1499.75293 1494.060791 1486.433838 1486.946411 1491.370239 1490.322266 1483.494385 1481.3479 1483.930786 1488.404053 1488.380737 1486.196167 1478.393188 1468.971802 1459.161743 1450.060547 1443.689087 1427.842529 1424.090332 1431.994141 1442.197388 1454.106323 1468.426636 1479.518555 1484.63269 1490.168335 1495.022095 1496.529907 1499.038208 1507.314819 1517.075073 1525.837646 1536.973877 1548.175293 1548.705322 1546.9646 1548.901123 1548.981934 1545.943115 1553.209961 1565.82666 1577.396484 1583.985352 1578.487915 1570.235962 1563.435425 1561.38147 1556.454712 1551.160645 1547.00647 1541.672119 1537.940308 1530.528687 1522.774902 1517.364136 1521.528198 1526.681763 1527.327393 1522.98645 1512.840576 1498.679565 1487.360718 1489.488892 1505.804199 1511.885498 1508.915649 1488.806519 1462.40625 1443.413818 1430.312256 1418.135742 1403.141602 1390.651733 1376.053101 1371.546753 1377.080444 1385.567383 1389.963501 1394.042847 1399.402222 1404.278442 1408.084106 1408.042603 1406.42981 1398.111206 1389.896606 1383.47998 1375.624756 1368.338745 1354.512573 1363.033569 1380.153442 1390.515991 1398.502197 1392.061523 1393.658936 1392.669922 1383.130249 1377.466553 1386.359741 1403.02124 1407.519165 1410.435669 1413.493164 1412.763184 1405.133423 1405.300537 1412.322388 1426.863892 1439.530151 1444.143677 1445.921021 1439.393311 1434.508911 1445.24707 1462.882202 1480.397339 1505.106812 1524.657715 1539.554688 1552.580078 1556.891602 1558.970947 1561.128662 1566.333618 1574.875488 1584.453979 1596.785645 1595.636841 1588.020142 1573.40332 1557.618408 1540.557129 1529.349854 1523.984863 1511.736694 1501.841675 1492.295166 1488.105835 1485.937256 1488.806396 1495.632324 1500.455444 1500.009766 1496.423462 1495.805786 1497.550659 1502.255493 1497.690918 1490.357422 1485.592529 1480.469482 1476.112549 1469.06311 1459.86084 1448.708496 1440.940308 1432.014526 1421.902954 1411.144775 1402.804932 1393.735107 1386.307129 1377.238647 1375.457397 1374.496094 1376.161743 1387.424438 1397.03418 1404.93396 1409.96521 1411.035522 1407.48291 1402.512695 1408.270996 1411.532715 1412.552246 1409.406006 1401.381104 1397.85498 1390.504272 1386.281006 1380.624146 1375.415894 1367.76001 1368.39917 1371.610596 1371.878418 1368.56897 1363.694458 1356.091431 1350.399292 1362.196289 1376.467773 1383.521484 1386.415527 1386.053467 1384.899536 1383.559082 1382.330688 1381.099243 1379.947998 1379.438354 1375.997314 1366.833618 1357.156616 1337.791992 1327.19165 1347.94873 1359.55542 1359.185913 1351.24707 1341.684814 1330.609497 1317.527222 1304.158691 1297.30896 1292.109009 1290.782593 1298.595825 1308.735107 1315.667358 1333.097046 1346.325562 1347.615601 1342.561279 1339.626099 1340.057129 1332.113647 1328.030273 1322.453247 1311.619385 1302.593994 1316.073364 1319.856812 1315.338623 1322.138794 1337.779785 1343.483887 1346.274414 1351.769775 1356.119507 1359.730103 1365.390991 1375.41748 1384.493286 1390.700317 1393.081421 1394.070312 1395.15686 1395.864136 1394.813232 1393.580444 1392.417969 1391.692139 1391.160278 1391.32959 1391.544678 1392.036133 1392.072632 1391.966064 1390.359253 1383.570435 1379.134766 1380.393555 1380.393066 1380.991211 1381.124634 1378.94397 1371.776245 1364.935181 1357.018066 1349.401978 1340.997681 1335.729126 1327.917603 1316.907593 1332.000244 1337.017334 1334.113037 1335.432129 1339.333008 1340.811523 1341.574341 1347.410522 1351.046021 1351.759521 1352.489014 1351.082397 1350.387817 1354.289795 1356.808472 1356.803711 1354.712158 1352.41748 1357.956787 1361.41394 1363.518311 1365.152344 1366.37915 1367.236694 1368.987793 1369.870239 1371.556274 1372.079712 1370.233154 1366.075562 1362.5896 1364.27771 1366.774658 1367.936035 1370.884277 1374.36792 1377.171997 1379.619263 1381.116821 1381.246338 1378.256592 1379.999512 1383.190918 1383.552368 1381.962891 1378.618286 1374.447388 1367.186279 1359.273926 1352.604858 1358.462769 1359.759155 1366.008545 1364.439697 1359.648438 1354.771606 1350.597168 1353.018555 1353.679565 1349.699829 1343.84668 1341.122192 1340.988525 1341.179199 1345.037964 1344.651245 1341.965332 1341.173828 1340.931152 1340.335693 1340.347168 1340.921265 1341.561646 1342.108521 1343.163452 1344.445923 1346.104858 1348.016235 1349.393433 1346.339355 1344.626221 1344.015747 1341.375977 1326.725464 1317.373535 1306.067261 1301.65271 1295.245728 1294.025146 1286.994629 1282.55542 1275.882202 1271.141357 1268.361328 1262.9823 1258.835938 1253.98999 1252.99646 1249.70105 1246.334106 1241.293701 1235.651367 1233.706665 1232.68103 1229.277466 1225.164062 1220.026978 1213.919434 1208.273193 1205.342896 1202.348511 1198.688599 1194.523682 1192.108643 1195.756958 1203.583984 1207.663696 1214.220947 1231.524292 1250.911133 1264.820557 1272.433716 1280.244629 1292.389893 1303.430176 1308.233765 1297.5 1284.684204 1274.258057 1265.873901 1260.771973 1246.006104 1243.657227 1257.723633 1272.285889 1282.527344 1294.972046 1304.669067 1315.443359 1324.275879 1333.90564 1344.709351 1354.757935 1361.543823 1371.151733 1381.062866 1388.032593 1396.525146 1404.968994 1408.699951 1414.204224 1420.350952 1426.229004 1432.164307 1439.422119 1446.673828 1456.446289 1466.606567 1474.537842 1479.152344 1483.018066 1486.578857 1489.231689 1489.836304 1489.056885 +1447.133545 1454.678101 1457.270264 1454.253906 1448.053223 1446.636353 1447.178345 1445.95459 1437.227905 1441.350952 1456.407959 1468.840454 1480.028931 1497.515503 1506.441528 1525.25293 1537.873413 1545.4104 1546.575195 1539.621338 1534.613647 1535.644775 1538.595703 1532.759766 1542.940674 1582.715332 1602.899658 1622.752197 1633.777222 1638.247925 1639.397949 1638.094971 1635.928833 1637.962646 1642.90332 1646.906128 1651.604858 1656.792114 1659.912964 1658.922485 1655.270386 1651.750122 1647.628296 1639.678223 1631.587158 1625.644287 1627.993408 1629.130249 1631.811279 1636.121338 1636.943115 1636.857788 1646.788452 1651.298218 1649.719849 1637.274048 1616.48645 1601.861206 1583.5 1557.634399 1531.659302 1512.67334 1496.069458 1484.101196 1472.638672 1460.763794 1448.536011 1437.900024 1437.399536 1451.344482 1472.966064 1491.647095 1503.506836 1516.390503 1525.478882 1539.969116 1556.745728 1567.302124 1581.706543 1598.25293 1613.341309 1626.858887 1635.031982 1645.172607 1647.336792 1643.168213 1639.960083 1637.429199 1637.972412 1638.648193 1638.128662 1636.457275 1635.867065 1646.406372 1652.634277 1657.911987 1656.326904 1643.434937 1627.924194 1613.55542 1600.484375 1584.103638 1562.847778 1544.602905 1522.022827 1508.057495 1493.907715 1478.02356 1464.261108 1446.526001 1432.446655 1419.47168 1403.980225 1396.309326 1390.487549 1384.755737 1379.841064 1373.250488 1366.262329 1363.214966 1381.924683 1394.735596 1414.720459 1438.61792 1459.394653 1470.31543 1475.977783 1480.140259 1493.00647 1507.550049 1528.089722 1555.771851 1574.387451 1576.811646 1577.093384 1564.1521 1547.760864 1529.039917 1519.293457 1511.82959 1506.818237 1501.567505 1492.249268 1496.661621 1504.74353 1521.902222 1539.5448 1552.995972 1560.457031 1558.382202 1555.637451 1550.9823 1547.748413 1545.320557 1539.621704 1536.493896 1540.479126 1543.500732 1544.779419 1545.809448 1547.015747 1547.349854 1546.525757 1544.439331 1540.639038 1536.875 1530.561035 1522.689453 1515.365601 1507.674438 1500.210693 1495.140747 1498.161133 1499.569824 1496.42334 1489.277222 1485.955444 1488.297852 1492.209839 1492.3302 1490.446777 1484.059448 1472.553833 1462.145752 1453.295044 1444.759155 1429.717407 1424.851685 1437.691284 1448.048218 1461.810059 1469.312256 1481.706543 1492.693115 1499.839844 1508.017944 1515.299561 1517.371094 1515.411499 1523.148193 1526.649658 1525.49231 1534.903442 1551.109131 1551.60498 1552.97876 1553.216309 1551.704468 1558.061279 1569.834961 1585.628418 1591.440674 1585.892578 1576.959351 1570.1604 1564.461548 1552.044067 1545.204346 1538.979736 1531.521118 1528.31311 1523.942261 1520.876343 1525.596436 1524.372437 1525.32251 1524.128906 1521.186035 1508.933228 1494.829346 1481.256836 1480.841919 1492.851929 1496.864746 1485.096558 1467.858643 1451.391602 1436.530518 1423.770264 1411.970947 1398.795044 1391.322754 1375.906982 1374.759766 1385.345215 1395.054688 1398.582031 1403.047974 1407.935547 1410.589844 1411.172241 1408.858154 1405.321655 1395.085083 1384.749634 1377.137085 1373.306519 1367.704956 1356.189575 1364.762573 1377.59314 1391.39563 1403.337402 1405.150757 1405.271973 1399.01709 1389.444092 1384.451294 1392.549316 1410.930664 1420.644165 1417.864502 1423.11438 1426.897827 1414.345093 1411.029541 1417.694946 1424.42334 1432.036743 1444.866699 1454.150757 1451.509399 1442.524048 1442.704102 1456.920044 1474.556519 1496.170776 1515.269775 1534.515503 1549.234619 1556.690186 1562.344238 1563.73291 1563.785034 1570.544067 1581.195801 1589.693237 1587.041748 1580.245239 1567.864258 1553.610229 1536.329224 1521.833618 1509.984131 1501.278809 1493.731689 1485.286499 1482.734741 1482.059448 1486.900757 1491.998047 1487.532715 1487.564575 1483.29834 1482.715332 1485.838257 1490.184448 1492.613525 1489.778809 1485.264648 1479.780762 1475.964233 1467.948975 1458.002441 1447.319824 1436.962158 1424.772827 1415.076416 1406.608032 1392.818604 1384.745117 1382.817017 1384.52124 1384.979004 1380.067871 1380.712158 1394.421753 1404.215332 1414.984497 1423.800415 1424.194092 1417.538696 1412.653442 1414.594971 1416.267944 1415.667725 1412.324097 1405.421021 1400.564697 1394.395264 1388.659546 1382.021851 1377.198608 1377.206787 1378.2948 1378.994019 1378.187378 1373.514282 1365.522095 1355.532715 1351.573242 1353.365845 1366.153442 1380.503296 1392.026733 1391.642456 1390.293823 1388.84668 1386.938354 1385.344116 1383.363525 1381.160889 1376.765503 1366.501343 1348.498413 1328.300171 1338.904175 1354.349487 1366.651123 1355.545166 1336.996094 1326.847412 1319.822998 1316.585449 1317.74292 1306.768677 1302.571045 1294.309814 1291.065918 1305.654053 1319.425781 1329.905884 1347.810913 1353.273926 1350.981567 1348.521851 1346.026733 1341.481445 1336.968384 1329.113403 1318.489258 1302.345215 1311.032349 1326.275513 1324.776611 1315.753906 1331.745483 1340.550415 1343.903809 1348.496094 1353.652588 1358.265747 1365.265747 1371.865845 1378.197632 1382.431152 1388.223877 1392.900513 1398.047485 1399.889038 1397.411377 1394.649658 1393.36853 1392.805176 1392.595581 1392.539307 1392.634277 1392.626099 1392.55603 1392.56958 1392.11499 1389.442261 1386.359131 1382.968262 1381.742798 1380.755371 1378.419678 1369.75354 1363.082031 1357.177979 1351.85376 1346.444458 1341.539062 1336.990845 1332.573608 1321.292603 1336.178345 1346.469604 1343.11084 1339.880127 1352.43042 1358.110474 1351.198853 1354.662231 1358.452271 1356.897461 1358.921631 1358.503418 1353.814209 1358.350586 1364.640991 1364.730835 1363.747925 1362.067871 1364.624512 1368.585205 1371.868286 1374.429077 1376.027588 1377.322998 1377.899414 1378.299561 1379.874023 1380.662109 1379.382446 1376.486694 1372.382568 1373.003296 1375.575073 1376.477783 1378.052612 1381.998169 1385.130249 1386.718872 1387.614624 1387.749634 1387.415039 1388.114746 1392.169067 1392.807373 1393.119385 1392.754761 1389.855347 1381.318359 1376.561401 1371.003174 1372.001709 1375.439087 1380.474487 1374.158081 1366.88916 1361.968994 1364.693604 1371.70752 1369.471313 1361.494263 1353.054932 1346.572632 1345.557983 1346.241943 1348.579224 1347.46936 1345.275879 1344.033447 1343.477417 1342.655029 1342.386719 1342.613159 1343.001587 1343.56897 1344.883545 1351.052246 1354.143311 1356.171997 1353.553833 1346.151733 1344.317505 1345.83374 1339.990845 1326.827759 1317.178467 1309.671387 1304.28772 1300.912476 1297.17041 1292.694214 1288.217529 1282.350586 1278.444214 1272.84314 1267.304443 1264.870605 1261.67334 1259.445312 1255.225098 1249.138062 1243.561768 1245.783081 1242.831055 1239.496826 1236.868042 1233.063477 1227.596802 1221.202515 1214.332031 1208.264648 1204.798706 1200.776367 1196.184082 1192.216919 1193.715942 1197.460083 1203.25769 1210.124023 1223.469482 1241.285034 1254.006104 1260.452881 1268.193481 1278.930176 1289.840332 1306.942749 1312.254761 1305.970337 1297.515747 1288.289307 1279.098267 1272.830322 1263.530762 1254.282837 1256.24292 1266.530396 1278.746582 1292.519897 1299.804443 1309.536865 1321.701782 1334.189453 1344.12085 1355.653564 1365.380005 1378.681519 1390.279785 1399.959717 1405.802246 1410.420776 1416.416992 1422.376099 1429.037354 1434.755005 1441.512695 1448.795166 1458.147827 1466.742798 1474.158325 1479.739136 1484.928711 1489.091064 1491.299438 1492.845947 1495.541138 +1457.320679 1464.710205 1465.122925 1461.077637 1459.553955 1456.090576 1460.03772 1461.651855 1451.638428 1448.769287 1464.419678 1478.916138 1495.521362 1512.589722 1527.463501 1541.404907 1551.900635 1555.706665 1556.122314 1553.036621 1547.247192 1550.368408 1552.109375 1549.309204 1546.282837 1578.192017 1602.666016 1626.963623 1640.479126 1646.455322 1644.814697 1642.123291 1640.649536 1641.768433 1644.298584 1648.311279 1652.444946 1656.809692 1659.775879 1658.945068 1655.355103 1651.798584 1647.511475 1638.920166 1632.408569 1635.389526 1635.256226 1637.998901 1645.31897 1648.003662 1647.770142 1648.962524 1653.419922 1652.949219 1649.123169 1638.100952 1619.471436 1604.527832 1588.420654 1568.333984 1541.753662 1520.158325 1501.297974 1485.230225 1476.454468 1462.316284 1446.019287 1437.07251 1445.776001 1462.895142 1481.542358 1497.585938 1509.37439 1522.26123 1535.435669 1554.279053 1568.476318 1583.189453 1596.729492 1606.356812 1619.363037 1629.532471 1637.831421 1649.107544 1656.679443 1654.083984 1648.260254 1644.935547 1644.746094 1646.286377 1646.599365 1645.46228 1643.834595 1645.266846 1652.928833 1659.728516 1659.30542 1640.482178 1619.829102 1602.660156 1580.916504 1570.546753 1551.973877 1531.817139 1512.340454 1494.368774 1480.103149 1468.505737 1455.450562 1438.148682 1425.25 1416.709351 1402.684937 1394.329956 1388.654663 1383.473267 1378.015869 1372.498535 1365.546021 1369.029175 1382.66394 1390.800293 1411.827759 1432.313354 1448.578125 1457.933838 1461.131592 1474.613647 1491.098511 1504.383423 1518.372559 1540.514648 1563.483887 1578.251953 1577.171875 1564.934814 1549.202393 1532.073975 1521.562744 1512.529175 1507.749023 1502.906372 1495.148071 1498.355713 1506.432495 1523.247559 1541.597778 1554.977173 1564.618286 1564.097046 1561.839722 1559.978882 1555.154419 1549.871338 1544.870361 1544.637451 1546.777954 1546.970947 1547.054321 1548.725952 1551.727417 1553.030273 1552.674927 1550.944458 1547.42334 1543.162354 1539.117432 1531.254761 1521.458984 1514.400024 1506.298218 1506.019653 1510.890747 1508.32959 1504.151733 1499.369385 1489.480957 1492.407959 1496.763306 1495.861938 1492.528564 1486.870361 1475.897217 1464.342896 1455.162354 1444.850464 1428.772583 1425.946655 1441.445679 1456.00293 1469.605713 1480.252319 1490.930298 1503.303589 1510.346558 1522.348511 1530.637939 1527.826416 1512.27124 1512.082275 1514.800415 1517.744507 1534.547485 1550.662231 1558.975098 1559.089111 1556.808716 1558.476196 1563.87793 1572.714355 1587.196411 1599.393188 1587.766846 1577.964844 1569.193604 1560.63269 1550.764526 1539.557129 1530.376953 1521.134644 1514.720581 1516.645508 1516.032593 1513.567017 1515.38147 1511.570923 1508.071045 1505.710449 1499.372192 1487.109253 1474.502808 1473.238403 1478.178467 1477.214355 1469.988159 1455.571777 1440.010132 1421.791016 1409.487183 1400.213989 1391.559082 1383.638306 1374.923584 1381.311401 1396.755493 1409.604858 1409.064819 1411.306152 1415.15564 1415.850098 1413.238647 1408.002319 1401.118286 1389.932007 1382.719971 1376.748901 1372.16626 1367.241821 1358.471191 1371.656982 1381.666138 1390.863403 1402.865967 1414.45166 1415.05896 1405.032104 1391.836182 1386.874146 1394.25415 1413.34668 1428.576294 1432.087646 1433.868652 1435.03894 1426.273315 1421.143433 1426.311768 1437.280884 1441.324951 1443.918701 1454.075073 1463.833374 1456.26416 1449.198853 1454.137085 1472.17627 1487.788452 1505.890015 1528.337402 1538.383057 1549.494263 1552.43811 1551.574463 1556.425659 1567.675781 1578.237549 1582.016846 1571.735596 1567.11438 1558.997803 1542.970093 1530.393188 1517.21228 1499.354614 1491.457642 1485.967651 1480.602417 1478.120605 1476.767944 1484.233643 1489.693848 1485.279175 1473.898193 1471.143433 1471.855591 1475.886841 1478.03125 1481.322266 1481.351807 1478.512329 1475.200806 1469.545654 1462.778442 1453.5354 1443.837402 1433.812866 1420.501221 1408.384155 1398.183594 1390.381104 1396.155884 1401.005005 1404.275146 1404.004395 1392.44104 1383.664673 1395.833618 1408.81604 1422.645508 1430.622314 1430.613403 1424.038452 1420.729126 1420.032349 1420.181152 1418.864502 1416.356934 1410.455444 1403.584106 1396.376465 1390.234131 1387.115601 1383.149536 1382.85083 1383.463379 1382.418823 1380.23999 1373.92688 1363.912109 1359.181763 1354.658447 1353.95752 1365.668945 1378.122192 1391.643311 1394.263062 1395.417969 1394.420166 1391.386841 1388.622192 1385.720825 1381.888306 1376.477417 1365.383667 1353.452393 1329.172119 1346.776489 1365.482544 1367.334595 1347.570557 1330.554932 1329.726318 1330.793457 1326.37915 1323.223999 1318.638306 1312.890137 1306.777466 1297.071167 1296.832275 1312.622925 1324.191162 1337.338745 1354.266479 1356.544312 1355.274658 1352.657227 1349.450562 1344.390991 1330.019653 1315.733887 1302.700928 1307.176025 1327.503784 1340.28125 1334.651245 1327.682251 1328.060303 1333.499146 1340.56604 1348.556519 1356.075195 1361.247192 1366.83252 1371.776611 1375.005981 1380.050659 1388.135498 1397.383057 1403.699097 1397.739136 1394.289673 1393.577026 1393.067871 1393.021729 1392.979736 1393.290771 1392.689453 1392.352417 1392.564209 1392.558228 1391.152466 1387.066528 1382.683594 1380.178467 1376.006714 1366.492676 1360.240601 1353.946533 1350.978516 1348.67981 1344.173462 1339.882202 1339.963135 1339.207397 1333.146484 1332.985229 1352.949097 1359.180176 1351.924072 1356.336914 1368.014526 1358.453613 1358.070312 1368.578735 1364.474487 1368.134399 1368.73584 1364.971924 1363.619629 1371.491211 1374.745117 1373.564087 1371.55481 1375.263062 1379.550659 1381.652222 1383.328613 1384.42688 1386.005981 1386.647217 1387.05603 1387.750854 1388.541138 1389.244141 1388.568359 1384.506714 1383.461182 1386.149902 1388.359009 1390.172485 1391.651245 1392.660034 1393.438477 1393.878418 1394.297485 1394.163818 1394.092896 1395.909668 1396.997681 1397.312988 1397.743286 1398.081665 1396.448975 1394.798218 1388.604614 1389.801758 1393.090698 1391.501221 1384.246826 1375.359741 1372.556396 1376.401245 1385.008545 1382.754272 1372.206909 1358.737061 1351.004395 1351.921875 1353.164551 1353.371704 1351.270996 1348.611084 1346.335327 1345.175903 1344.148682 1343.557495 1343.708496 1344.0625 1344.217773 1344.800903 1345.088989 1353.41333 1349.338623 1333.443848 1332.239502 1325.468628 1340.534302 1345.176025 1335.890381 1325.576538 1317.510376 1310.503418 1304.902222 1301.048584 1296.865356 1294.791138 1290.187622 1284.095947 1280.420654 1275.063965 1271.771851 1268.395142 1262.908569 1256.571167 1253.270874 1252.240479 1254.107666 1253.314697 1247.895996 1244.387695 1241.964966 1235.136108 1228.457275 1221.269287 1214.27124 1208.14209 1203.847656 1198.517334 1193.403687 1194.419434 1197.280029 1203.317627 1207.071411 1215.473389 1223.835205 1237.470581 1243.30127 1258.202637 1268.37915 1279.430786 1290.632446 1313.831177 1316.076782 1310.477051 1309.6698 1303.188721 1293.615112 1285.829834 1283.891235 1279.205078 1274.393921 1270.745483 1275.313232 1282.271362 1296.854492 1310.542847 1322.426514 1333.955933 1345.090698 1356.289795 1368.765381 1384.603271 1398.2854 1404.860718 1408.828491 1413.774902 1421.455811 1429.299438 1435.285767 1441.927368 1449.383789 1457.964111 1465.932861 1472.878418 1478.657959 1484.674927 1489.319946 1491.807495 1494.040161 1497.548828 +1467.154907 1470.84082 1472.440796 1472.749146 1471.803345 1462.451416 1474.561523 1482.347412 1474.67749 1457.828003 1472.51001 1491.68103 1509.300903 1526.069214 1542.296021 1551.789551 1561.098145 1563.756348 1563.666138 1560.730469 1557.789795 1558.351562 1559.261597 1557.677368 1553.047241 1571.377563 1600.122437 1629.50415 1643.57373 1649.375366 1649.660767 1646.049805 1643.794189 1644.304443 1645.28186 1648.803711 1652.85144 1656.728638 1659.645508 1659.302734 1656.151367 1651.461304 1646.904541 1640.884766 1641.653564 1646.36438 1647.557739 1651.05481 1657.44104 1658.648438 1659.095093 1660.238525 1658.700317 1652.515625 1644.807617 1633.678223 1617.609497 1601.805908 1586.124512 1568.158081 1541.552368 1521.707153 1508.200684 1489.505249 1474.022827 1455.695435 1438.658081 1446.115479 1465.924194 1475.395874 1489.078857 1504.317871 1517.373535 1528.270752 1543.513672 1561.198975 1577.637085 1591.895752 1603.823364 1615.800537 1627.132446 1636.16687 1644.546631 1655.765259 1661.075928 1661.631836 1657.968994 1652.398438 1651.075562 1651.740723 1651.760498 1651.067749 1649.269043 1647.314941 1652.906494 1658.825684 1655.548218 1637.684448 1613.307495 1593.495972 1571.553467 1548.861206 1527.140137 1514.737061 1497.036499 1483.38562 1469.492798 1453.733276 1438.533569 1424.548462 1421.301392 1412.930176 1402.136475 1391.952515 1387.790771 1383.335815 1378.356445 1372.076172 1365.320312 1373.013062 1386.954834 1394.574951 1404.852173 1415.910278 1428.308105 1435.990845 1455.68457 1472.019287 1488.999023 1499.768555 1509.808228 1521.61438 1541.811157 1567.30481 1576.149536 1565.429321 1548.616699 1534.154175 1525.079346 1513.831299 1508.800049 1504.067993 1498.220093 1499.972656 1507.026001 1521.391724 1540.506104 1554.587036 1565.224487 1574.332275 1572.12207 1570.282471 1564.696411 1556.882202 1549.250244 1550.527954 1551.903076 1551.339233 1551.636353 1554.838745 1558.034302 1558.624146 1558.062012 1556.120972 1552.450195 1547.296387 1542.734375 1536.148804 1524.098633 1520.395264 1514.344482 1516.053345 1517.311768 1514.762329 1509.768311 1505.283569 1499.545044 1500.076782 1501.266357 1499.218262 1494.60791 1488.257202 1477.494751 1464.849487 1454.327271 1441.777466 1427.957397 1429.295532 1443.519775 1460.651001 1472.339111 1485.947266 1499.967407 1508.712524 1518.913208 1534.480469 1540.3927 1529.808838 1508.928467 1496.668701 1499.646851 1514.06897 1531.36499 1547.370972 1560.273193 1561.824341 1559.277954 1559.546265 1567.378662 1578.234131 1589.252197 1597.088501 1588.243652 1578.619385 1568.577515 1557.09314 1544.167236 1534.918457 1526.930054 1514.806152 1503.881714 1506.221069 1506.751221 1500.552856 1497.469238 1496.256836 1497.12793 1496.392212 1490.346558 1478.729736 1470.475952 1466.399536 1468.614624 1468.104248 1463.106567 1442.316284 1419.479614 1403.36377 1391.206177 1385.102661 1380.100098 1377.31604 1374.505371 1392.088501 1413.191772 1421.303345 1419.207031 1419.276367 1419.26709 1417.247437 1413.304321 1407.282349 1400.043945 1390.308228 1381.414062 1377.857666 1371.203125 1364.092896 1362.3479 1376.390015 1388.119629 1398.453613 1408.250244 1416.964233 1422.236084 1413.31958 1397.499146 1390.748047 1389.69812 1407.204102 1426.875366 1440.752075 1442.75354 1444.7677 1444.46167 1437.593384 1428.972778 1443.614624 1453.623535 1452.109985 1457.864014 1464.720581 1466.976685 1462.076904 1455.189453 1463.548462 1482.047974 1497.205933 1509.537964 1523.139282 1530.676636 1535.848633 1539.331055 1551.714966 1566.891479 1575.938843 1572.387207 1561.611328 1554.296265 1542.973022 1533.824585 1523.293457 1510.098633 1495.456665 1485.376221 1480.680542 1475.155884 1471.763794 1471.806152 1476.537231 1480.565918 1477.447998 1467.312378 1460.772583 1461.809204 1465.831909 1467.706177 1468.713867 1467.917358 1465.062866 1462.95459 1459.231201 1453.552246 1446.556519 1438.804321 1429.523804 1416.237061 1399.564697 1400.632812 1407.981323 1415.108032 1421.582397 1423.319824 1415.879028 1403.685425 1389.518799 1394.406616 1411.119141 1426.321777 1434.787476 1436.407715 1430.014771 1428.955566 1426.138428 1423.497681 1421.509644 1418.054565 1412.570435 1405.135864 1399.89563 1393.926514 1391.603516 1390.297729 1388.710938 1387.407593 1383.913452 1377.696533 1374.020874 1366.94812 1362.261108 1358.768066 1353.603394 1363.481445 1375.152466 1382.444946 1393.380127 1400.631104 1401.925049 1396.370117 1391.351074 1383.862061 1377.386719 1371.536255 1360.190674 1340.240967 1335.343872 1355.344727 1369.572998 1366.59021 1345.322144 1337.655151 1339.370117 1338.697144 1332.352051 1328.02063 1324.642334 1320.241943 1315.037964 1304.35791 1294.818115 1306.653687 1318.842285 1326.903809 1345.272217 1358.293457 1361.176758 1359.186035 1356.164551 1346.740845 1331.883179 1320.093872 1302.35376 1306.842041 1324.938599 1344.392334 1346.695557 1342.317017 1337.712769 1332.773926 1328.616577 1342.861206 1351.161499 1357.361084 1363.724365 1365.932373 1370.713257 1375.403931 1381.155762 1387.757324 1393.145508 1391.643066 1389.694702 1389.936768 1391.05481 1391.505371 1390.942261 1389.994263 1387.97876 1387.868774 1388.055054 1386.74585 1384.576904 1381.699463 1378.168457 1373.177612 1364.968384 1362.291992 1356.647217 1351.961304 1350.643677 1350.0802 1347.988159 1345.43811 1346.929199 1349.082642 1345.999756 1338.367432 1358.631714 1368.118286 1366.26416 1360.796875 1372.293091 1369.074097 1364.858398 1370.593994 1373.242065 1375.07666 1377.570557 1376.928711 1370.721313 1378.992676 1383.850098 1384.9021 1384.537842 1387.772949 1389.728516 1390.511108 1391.281738 1392.005615 1393.456909 1394.039673 1394.682861 1396.043579 1397.903442 1398.071045 1396.925537 1395.275269 1394.272827 1394.993164 1395.392578 1395.432861 1395.127441 1395.714478 1397.531372 1400.154785 1400.569336 1400.483887 1400.19812 1400.328979 1399.983154 1400.578369 1402.030884 1404.057251 1405.005615 1406.288818 1407.443481 1408.728027 1406.031494 1401.501099 1393.875366 1389.183472 1389.541626 1383.366821 1393.072266 1388.635376 1375.517822 1364.256348 1359.064575 1360.422729 1359.266968 1356.465454 1353.867065 1349.198364 1347.338989 1345.999634 1344.119263 1343.588989 1342.853638 1338.652832 1338.5625 1334.561646 1328.242432 1333.32312 1330.571777 1317.509888 1308.685303 1310.567993 1329.2323 1340.202759 1341.970703 1331.764771 1323.790771 1317.54248 1308.819824 1303.214111 1299.54187 1295.94458 1291.687012 1286.034058 1283.222656 1281.381348 1276.648682 1271.489746 1265.47876 1256.863159 1256.133667 1257.639648 1258.65979 1260.632324 1258.667603 1250.73645 1247.692627 1241.536621 1234.955933 1229.019775 1221.276001 1214.190308 1207.271973 1201.744995 1195.655151 1194.801392 1198.937744 1204.334839 1209.675659 1212.497437 1216.187134 1220.221924 1233.588867 1244.401489 1258.612915 1272.709961 1285.551636 1298.58313 1303.74292 1304.458496 1311.308838 1318.962036 1317.669312 1313.119141 1307.000854 1301.865234 1297.400635 1291.952026 1287.231201 1283.959961 1287.4021 1297.886475 1310.854492 1323.843018 1337.65979 1355.132568 1366.689941 1380.849854 1392.124756 1398.866455 1400.127075 1403.382812 1414.38501 1427.740479 1433.285522 1440.760498 1447.513184 1456.068115 1464.891235 1470.72229 1476.630371 1483.18103 1488.326416 1490.856934 1492.846313 1496.392578 +1473.258911 1476.753174 1479.981201 1481.908691 1483.849854 1486.290771 1498.63147 1504.43103 1489.9552 1471.045044 1485.34668 1503.889648 1520.238403 1538.68335 1547.71814 1561.971313 1569.039673 1571.712036 1571.177612 1568.481201 1567.282104 1567.932617 1567.359375 1567.452881 1564.431763 1568.157593 1593.327759 1628.057251 1642.476685 1651.992432 1655.272583 1650.893799 1647.795044 1647.138672 1646.078491 1649.159302 1653.458374 1657.348633 1659.859497 1660.059814 1657.882812 1651.885498 1645.932495 1646.225098 1650.756958 1654.275757 1656.218018 1659.044189 1662.245361 1663.39624 1663.578735 1663.300903 1660.389404 1647.721436 1634.470459 1621.098999 1605.185547 1592.008911 1577.493286 1558.140015 1533.598022 1518.724121 1507.735229 1491.913452 1464.704346 1444.359619 1448.456421 1467.313721 1479.486816 1487.175415 1497.096069 1509.857422 1520.601074 1532.932495 1547.277588 1565.184448 1581.800293 1593.955688 1606.840942 1619.036011 1629.581299 1638.68396 1648.59021 1659.567383 1662.034302 1662.464111 1661.299194 1658.028198 1656.099609 1656.658081 1657.376099 1657.172241 1654.631592 1652.901855 1654.106689 1654.616455 1649.00354 1630.851074 1602.597046 1584.546387 1560.719238 1541.273682 1522.905273 1506.476562 1488.394043 1475.5354 1462.062134 1448.451294 1438.846558 1428.384155 1423.197876 1417.525269 1407.496704 1397.539429 1390.209595 1384.010498 1378.808105 1372.270508 1366.060059 1371.039185 1390.759766 1399.755859 1412.809937 1421.502808 1430.740601 1444.049072 1454.405518 1470.38208 1481.881836 1495.293213 1506.291748 1520.221924 1543.083496 1566.487793 1576.843994 1568.805054 1551.079468 1536.865356 1528.264648 1517.65918 1510.578369 1505.611572 1500.307373 1501.384521 1507.425293 1518.016479 1534.871216 1549.652954 1562.706543 1576.473511 1576.450806 1576.316895 1574.536865 1565.397583 1558.312622 1556.741699 1556.513794 1556.496704 1559.444214 1562.907349 1564.740234 1564.821655 1563.888184 1562.079956 1557.71106 1551.394653 1545.243164 1538.94458 1530.808838 1523.431519 1524.093994 1524.109619 1523.094849 1519.772827 1514.441772 1509.513306 1503.271729 1504.490723 1504.144775 1501.762451 1495.712769 1485.921509 1475.554932 1464.178467 1451.188477 1437.630859 1429.302246 1432.981567 1443.073608 1458.599121 1474.422729 1484.756714 1497.896606 1508.20105 1518.931641 1529.236328 1527.984375 1518.916016 1500.950928 1489.625732 1497.772705 1511.19104 1522.595093 1540.912109 1554.515259 1561.692627 1559.564819 1561.225464 1572.505249 1583.380005 1590.334106 1591.989258 1588.005493 1578.231567 1568.530884 1558.473511 1544.055908 1529.206299 1517.563354 1507.233765 1497.74231 1495.223511 1493.837402 1487.214844 1489.183716 1487.317261 1486.4104 1486.737427 1478.655029 1470.352051 1463.544678 1456.809326 1460.479126 1457.482788 1443.862061 1425.360962 1398.746948 1387.695679 1383.302124 1383.183228 1384.602661 1384.578369 1387.14209 1406.4104 1426.91272 1430.130859 1428.775024 1426.945557 1422.008179 1415.432251 1410.448242 1404.833496 1395.821899 1388.583618 1389.015259 1379.616211 1369.918335 1360.117188 1364.641113 1377.420898 1391.596191 1398.610718 1410.760864 1421.768188 1429.689941 1418.435181 1403.256958 1400.949829 1399.307251 1399.652222 1418.746216 1431.820679 1445.126221 1453.988647 1455.402222 1450.652832 1443.57019 1443.636353 1458.02832 1466.331909 1467.84436 1475.960938 1475.812012 1472.340454 1467.169556 1462.127441 1469.578613 1482.022583 1491.561523 1501.420898 1510.711792 1520.675781 1538.109985 1552.854614 1562.506836 1569.03186 1563.241211 1554.379028 1539.583984 1530.331421 1524.134644 1511.538574 1501.161011 1492.111816 1482.079712 1474.875366 1468.643311 1464.473389 1463.251343 1463.849609 1463.814819 1457.65332 1454.050415 1450.196777 1452.920898 1454.980957 1456.330444 1455.918701 1454.894775 1453.444458 1451.509521 1448.675537 1444.208862 1438.378784 1430.705444 1419.752563 1407.19397 1407.769775 1417.298218 1428.926758 1436.011841 1438.287964 1434.513306 1423.811401 1410.406372 1396.939697 1395.276001 1409.733643 1427.646729 1440.28064 1443.963501 1442.360107 1436.887451 1431.194214 1425.734741 1424.527832 1421.847778 1414.448853 1410.103516 1403.791992 1399.616455 1396.519287 1395.147705 1393.627441 1391.116943 1387.892456 1383.098511 1380.458008 1367.882446 1366.623901 1366.767822 1352.820801 1359.25 1364.265869 1374.727417 1391.866455 1402.813477 1404.692871 1397.330078 1389.171021 1382.591187 1369.608765 1358.569214 1353.631714 1336.234619 1339.381592 1361.291992 1378.509888 1374.372314 1363.265381 1347.287109 1353.126587 1351.82019 1340.59375 1335.26001 1330.192749 1324.36438 1318.450562 1306.372437 1302.528442 1296.560913 1314.707642 1324.173096 1338.692749 1354.36853 1366.314453 1365.594116 1359.471924 1350.872925 1339.270264 1320.656494 1301.481079 1309.836426 1323.703369 1340.147339 1353.486816 1355.638062 1350.977661 1347.263306 1345.00708 1341.799438 1341.486328 1354.483154 1358.107056 1362.665649 1366.71582 1371.775024 1376.786011 1381.691772 1379.74585 1381.727905 1382.835938 1382.658936 1384.185181 1383.979004 1382.675659 1380.79541 1378.599609 1379.903564 1380.938232 1378.973755 1377.26123 1376.711548 1375.56189 1370.778442 1367.146851 1366.935547 1365.172241 1359.257324 1360.488647 1357.957397 1356.572632 1361.890381 1361.958008 1362.89563 1358.22998 1353.629883 1361.047729 1369.22168 1371.764893 1371.112549 1378.119629 1379.723999 1376.021484 1376.498169 1383.151123 1386.291138 1388.462646 1388.538818 1386.310669 1386.705933 1391.418335 1394.10791 1394.726074 1396.069946 1396.833862 1397.320557 1397.950439 1398.804688 1399.322876 1399.810303 1401.348389 1403.522339 1405.444336 1405.684692 1403.338501 1402.605713 1402.075439 1401.432373 1397.831177 1395.869995 1395.772583 1396.616821 1398.922607 1402.739136 1404.297241 1405.060669 1405.217407 1404.874146 1403.772949 1404.418823 1405.871704 1406.706543 1407.383179 1408.41394 1408.358398 1411.875732 1417.517578 1416.628906 1405.583618 1402.474243 1400.006226 1395.740234 1394.542725 1386.172852 1375.923218 1372.080566 1370.904785 1368.344482 1363.45874 1357.718994 1348.26355 1342.219971 1346.77002 1349.116455 1338.249512 1330.784302 1326.963623 1320.381714 1323.520508 1321.360229 1314.197998 1318.457397 1314.612183 1303.104248 1290.449951 1298.154175 1316.542603 1324.181641 1334.525146 1333.162231 1326.221436 1317.873779 1309.445679 1303.599365 1302.193604 1294.977417 1290.866455 1281.655396 1279.942993 1279.829346 1276.237061 1270.196899 1266.224121 1260.23938 1258.570068 1258.993408 1253.72522 1246.093262 1240.335815 1238.109253 1235.318848 1234.80127 1236.28833 1234.030884 1229.11438 1221.208984 1212.419434 1205.251587 1198.760132 1193.572144 1196.41272 1202.118408 1206.712891 1209.743652 1215.368164 1216.58374 1224.619507 1240.487061 1256.48645 1266.191406 1276.978027 1283.966187 1289.194214 1294.0177 1304.294678 1311.844116 1318.628418 1320.943604 1320.725464 1320.348389 1317.690186 1314.821411 1310.394653 1303.493774 1300.165649 1296.426147 1302.678833 1313.638916 1324.399536 1341.331787 1358.576538 1373.075562 1382.793579 1385.324829 1382.733643 1393.12439 1408.085327 1419.862915 1427.814331 1435.408325 1442.854614 1450.545288 1460.598877 1467.490112 1474.147583 1480.161255 1485.086548 1488.443604 1490.109253 1492.774414 +1479.745728 1485.064941 1488.590454 1490.728516 1504.146606 1515.657104 1522.687256 1523.063232 1506.662109 1482.919189 1499.975708 1514.051758 1529.759521 1543.469116 1559.436523 1571.74292 1577.1073 1579.478149 1579.661499 1577.77002 1578.441772 1577.802002 1575.276367 1577.675537 1578.5625 1575.552856 1590.962891 1625.934326 1638.974609 1651.832642 1659.877197 1655.942383 1652.024536 1650.038208 1649.044556 1650.334595 1653.54248 1658.468994 1660.171875 1660.252808 1658.540161 1653.168091 1647.488159 1654.312378 1659.064575 1660.865479 1662.269409 1664.220337 1666.324219 1667.251831 1666.780518 1664.568726 1660.533691 1649.083862 1633.239258 1616.746338 1594.910156 1576.317871 1561.637695 1539.623047 1522.5625 1513.795532 1504.369019 1486.591797 1452.900146 1447.277466 1461.071899 1473.895386 1480.025513 1488.729126 1497.521851 1509.934448 1522.959351 1534.412842 1548.642944 1565.489746 1580.613525 1592.811646 1605.494019 1618.174316 1629.827881 1639.698975 1649.126099 1659.634155 1662.432617 1662.786377 1662.449829 1661.243286 1660.274048 1660.928711 1661.687012 1661.271851 1659.397095 1656.680908 1657.179077 1657.201416 1652.583008 1639.380859 1613.002563 1593.054077 1568.850098 1547.588867 1536.311157 1518.541748 1504.906006 1488.204712 1473.154907 1458.525146 1447.174072 1439.363525 1428.407104 1421.255859 1413.283936 1402.173706 1391.435303 1383.343628 1377.43335 1372.379761 1367.6875 1367.650879 1388.46167 1402.368408 1416.046509 1425.38916 1439.907349 1451.092773 1461.647217 1473.823242 1486.785278 1500.449097 1513.271362 1536.776855 1560.723145 1572.405029 1577.09375 1573.232544 1558.012817 1543.636108 1530.362915 1520.264282 1513.115234 1507.246216 1502.031982 1503.857422 1508.078003 1514.935913 1527.090454 1538.936768 1553.83313 1573.407349 1576.960693 1577.51416 1577.177612 1572.450928 1564.918701 1563.892212 1562.115845 1560.673828 1565.857666 1570.194824 1571.452515 1571.3479 1570.390625 1568.162231 1563.748047 1556.128662 1547.275391 1543.562378 1538.556274 1538.265503 1537.304199 1535.347046 1530.096313 1525.545776 1520.026123 1514.969116 1510.642578 1508.629761 1506.64624 1502.735229 1496.508057 1487.21228 1475.492432 1469.800659 1456.674072 1439.971558 1429.268677 1435.22998 1445.068115 1457.774536 1473.199829 1484.347046 1495.657715 1504.450684 1509.821655 1515.113403 1516.108887 1507.566406 1490.754028 1486.105713 1495.071777 1505.991577 1517.93396 1532.060913 1548.67749 1555.375366 1555.391846 1560.795776 1572.523682 1585.049805 1589.264893 1589.010864 1584.616943 1575.426392 1565.501831 1555.61438 1544.230347 1527.581177 1516.527466 1500.751587 1489.904419 1486.909302 1484.47583 1478.405029 1478.189209 1477.23645 1473.912598 1474.924438 1469.116699 1463.741089 1454.721313 1444.504517 1444.261475 1439.506104 1429.306274 1415.306396 1388.987305 1388.469238 1393.458252 1398.171265 1401.175781 1399.692627 1400.579224 1424.231567 1433.590088 1434.771606 1433.051147 1429.261108 1422.3479 1413.625977 1407.963257 1401.26123 1390.726807 1394.678467 1391.160034 1379.908325 1366.616577 1361.601196 1367.376953 1379.654419 1392.15625 1401.071411 1413.034668 1425.423706 1431.463257 1427.47229 1416.698853 1408.298462 1406.152222 1414.362915 1414.897339 1428.334961 1449.123779 1461.825806 1465.407593 1462.033447 1457.470947 1457.003174 1452.622314 1462.734131 1475.754272 1486.500488 1488.874512 1484.799805 1479.193115 1476.953247 1473.172852 1480.922241 1491.184814 1504.276733 1518.384888 1532.504272 1547.490601 1550.626953 1552.018799 1556.101318 1554.328003 1546.550171 1532.168701 1519.428345 1511.658447 1498.245728 1492.851807 1485.602905 1475.083252 1466.679077 1461.893921 1461.50647 1461.106323 1459.453003 1454.321167 1450.76062 1448.541382 1447.270996 1446.148438 1443.662964 1444.495117 1445.449707 1445.331177 1444.34436 1442.725098 1439.531738 1432.411865 1425.532837 1414.293091 1410.409302 1411.710205 1423.428711 1432.924805 1441.749878 1448.801636 1448.98999 1441.958374 1427.623413 1415.972778 1403.471069 1396.183472 1408.111572 1425.93396 1444.374634 1453.01355 1452.62854 1447.046753 1438.332886 1434.55249 1432.925659 1429.734741 1422.857178 1416.556519 1409.403442 1404.084595 1400.578491 1399.558594 1398.62793 1395.943359 1392.262207 1386.702393 1380.181396 1366.605103 1373.798218 1371.634399 1354.660889 1359.778687 1370.235107 1384.009521 1393.686523 1403.098877 1404.127441 1389.262451 1376.408447 1365.709473 1363.773438 1345.411255 1341.98645 1350.116089 1345.408447 1360.67395 1377.494141 1379.489502 1372.436157 1368.136597 1371.244385 1362.781616 1350.192139 1342.348389 1332.94397 1322.401978 1316.209229 1317.253906 1314.226074 1299.323853 1309.009521 1320.985962 1331.05835 1350.929443 1370.39502 1368.342407 1360.361572 1349.143921 1329.921387 1320.855347 1309.201782 1313.994507 1323.460327 1339.641113 1351.954712 1357.933105 1357.401245 1355.505737 1349.420288 1348.163818 1350.112915 1352.35437 1353.741821 1361.043213 1364.99292 1368.834839 1372.413208 1374.21167 1372.3479 1374.114502 1375.911865 1374.748291 1376.741577 1375.459839 1374.007324 1372.333496 1371.447388 1372.633789 1374.283447 1375.734009 1376.538818 1377.003052 1377.627808 1378.478882 1378.419556 1376.555786 1371.820557 1370.027832 1370.686035 1368.694458 1370.533569 1375.337769 1376.72522 1375.290771 1365.647827 1361.147705 1363.324585 1369.821533 1375.919922 1379.352295 1381.626831 1384.359863 1385.395386 1387.655518 1392.48291 1394.385132 1395.009277 1395.064941 1394.186157 1393.22229 1396.424316 1400.579834 1402.420044 1402.804077 1403.044067 1403.353149 1404.211914 1405.216064 1404.552979 1404.680298 1405.414307 1406.749512 1409.428101 1411.656128 1410.536499 1406.013428 1404.72876 1401.380737 1394.577637 1393.207397 1395.044556 1394.295532 1396.737549 1401.502197 1405.410767 1406.500977 1408.599976 1410.486328 1410.731934 1410.425903 1408.296021 1407.76001 1408.281494 1406.949097 1398.516724 1396.497803 1404.424438 1410.599365 1417.165527 1414.447754 1410.983887 1405.827026 1396.521606 1387.634277 1382.664551 1378.226196 1370.36438 1366.787231 1357.97522 1346.932617 1331.985962 1329.840942 1338.555298 1354.723267 1343.547241 1321.439331 1307.24292 1300.380493 1307.976318 1311.117676 1306.570557 1301.008423 1298.496704 1288.808594 1279.210449 1287.012573 1295.488037 1310.376587 1331.25061 1331.162109 1325.114014 1317.771484 1314.039185 1309.619995 1307.431763 1303.432129 1296.737305 1292.439331 1283.195068 1277.5177 1272.24231 1265.925171 1261.178955 1256.167847 1246.96936 1235.73999 1228.931152 1223.278076 1217.960571 1216.023438 1215.753662 1215.800049 1218.547607 1230.784546 1234.288208 1227.004639 1218.32666 1208.514648 1201.53064 1195.808838 1194.451904 1198.640869 1203.080566 1208.742432 1219.393555 1228.482788 1225.695679 1230.870483 1246.009155 1257.817139 1266.13147 1271.427002 1274.890869 1280.89856 1291.113159 1298.316284 1306.939941 1316.421021 1318.227539 1320.643433 1325.768677 1330.791748 1333.274048 1330.982422 1323.496826 1314.615601 1310.969727 1308.733032 1314.015869 1321.642822 1338.353882 1352.20459 1361.027344 1364.069946 1372.757202 1383.901245 1397.449341 1408.312256 1417.134521 1426.507812 1437.390747 1447.528687 1457.118042 1465.462769 1470.201904 1474.433716 1477.491577 1481.054321 1485.47522 1487.653564 +1489.762085 1503.328491 1507.418823 1515.564453 1524.35083 1532.345581 1542.254272 1537.255371 1521.695557 1498.188599 1507.192139 1520.870728 1536.568115 1554.221924 1570.065674 1579.209106 1585.427002 1588.686279 1590.44104 1590.317261 1589.252441 1587.858154 1584.866089 1587.844238 1590.630127 1594.902832 1597.487427 1615.353149 1635.994507 1649.987305 1660.125 1658.747437 1655.292847 1653.306519 1651.800537 1651.691406 1653.16333 1657.757935 1660.444702 1660.605347 1659.036621 1656.459839 1658.279175 1660.608643 1663.083496 1664.873169 1666.868286 1669.084473 1670.794189 1670.952393 1669.987793 1664.638794 1659.057129 1647.251465 1633.414551 1621.607788 1598.314697 1574.297363 1540.600952 1524.668213 1513.666992 1501.839722 1492.829224 1476.601074 1451.578247 1450.208374 1463.095337 1469.807129 1473.86792 1482.865356 1492.957275 1505.359863 1519.685791 1533.589844 1546.257324 1563.9021 1576.43103 1589.982422 1601.273926 1613.268066 1628.02124 1638.648804 1646.939331 1656.076294 1660.993164 1662.504028 1663.026978 1663.459961 1664.337158 1664.979004 1665.131836 1664.407593 1662.714355 1660.88269 1660.446533 1661.264526 1658.588013 1643.251709 1619.785645 1597.921387 1577.565308 1552.815063 1540.942383 1523.93042 1509.242798 1493.400024 1476.462646 1465.334717 1454.816895 1444.31958 1433.514771 1424.577271 1417.130493 1405.283203 1392.631104 1381.555908 1375.965698 1372.259033 1368.312866 1368.206665 1381.125244 1391.454468 1404.317627 1413.809204 1429.347046 1449.282227 1458.88623 1472.476807 1491.818481 1503.580444 1517.938232 1542.799683 1564.033203 1572.24707 1575.411743 1572.199341 1562.241455 1548.703003 1534.331055 1521.238159 1515.259399 1509.254761 1503.828979 1504.314453 1508.904541 1514.728027 1521.722168 1530.875366 1542.307983 1564.674194 1573.491699 1577.122314 1578.212402 1576.167358 1573.372192 1574.553223 1573.026611 1571.254517 1575.699829 1577.896729 1578.011963 1577.246338 1576.240723 1574.672485 1569.967529 1561.384766 1552.055542 1549.439819 1549.316895 1547.768066 1544.881714 1541.36792 1536.414795 1530.658569 1525.16687 1520.015747 1515.332153 1512.057983 1509.773071 1504.275146 1498.457275 1491.516968 1484.550537 1475.940186 1459.199341 1441.021851 1431.77832 1437.378418 1447.233032 1465.882324 1479.970581 1488.987427 1493.923706 1500.947998 1503.322998 1504.22229 1501.487305 1490.883667 1480.519653 1482.385254 1499.055054 1514.095459 1528.06897 1541.787354 1550.074097 1550.143188 1548.563232 1558.110962 1568.426758 1581.406982 1587.736206 1585.654175 1580.356812 1574.004272 1563.690063 1549.61377 1540.060059 1524.824097 1514.605591 1501.129761 1491.106812 1480.704102 1475.119019 1472.503418 1470.638794 1469.061035 1464.76001 1463.305054 1460.474365 1454.984741 1446.96521 1438.048828 1429.838501 1426.898071 1414.956787 1405.753662 1389.068115 1400.556519 1405.505493 1408.937256 1410.67749 1412.106323 1416.762817 1433.630005 1440.023804 1440.275757 1437.018555 1430.84729 1423.639526 1414.233032 1406.079346 1401.586182 1404.322144 1402.841309 1389.630737 1380.620483 1366.508667 1362.83374 1372.454834 1384.939575 1393.873047 1405.62439 1420.655029 1430.888428 1437.481445 1434.770386 1426.593994 1414.836792 1413.174805 1416.453003 1429.860229 1432.029053 1447.091675 1462.165283 1468.695801 1470.962158 1469.390869 1470.00354 1468.668091 1461.873291 1473.077271 1490.92395 1499.481689 1501.560791 1500.114136 1495.290283 1493.337646 1491.473022 1497.769287 1509.224487 1522.470459 1533.206665 1543.828613 1544.772949 1540.943115 1543.385498 1542.045044 1532.736572 1524.018188 1507.540283 1498.570923 1488.910889 1478.810181 1472.856934 1470.860107 1465.950439 1465.675537 1466.226318 1464.795776 1461.215088 1458.906738 1454.984619 1448.970093 1445.72644 1443.982056 1439.766846 1436.907837 1438.142944 1438.228394 1433.546387 1428.49585 1424.444824 1419.33728 1419.077515 1420.987183 1423.15979 1426.945557 1435.774414 1439.356812 1448.694336 1456.869751 1457.396606 1451.591675 1434.921509 1423.27832 1412.79126 1400.485107 1404.317261 1419.454346 1439.677612 1452.275513 1455.431763 1454.90271 1450.526245 1449.191406 1450.783081 1443.197266 1431.036865 1421.573853 1414.399902 1408.839111 1404.852417 1403.886963 1403.799438 1400.882935 1394.277954 1388.121826 1378.767456 1375.158447 1379.740967 1372.623779 1361.991943 1363.614014 1364.285522 1377.509399 1391.700806 1400.026611 1402.035767 1392.376465 1380.852539 1366.333862 1343.618896 1344.485107 1354.236572 1368.915771 1358.436157 1366.997925 1375.716553 1381.409058 1380.953247 1379.614746 1376.52478 1366.622314 1353.170776 1342.661743 1329.334717 1324.025513 1322.025879 1321.94458 1319.069458 1302.685547 1304.908936 1320.576904 1329.533691 1346.435669 1370.291382 1369.378174 1358.073364 1345.23999 1342.250977 1328.463257 1313.836792 1313.54126 1322.128174 1336.706543 1346.321045 1355.978149 1357.218994 1353.241089 1347.132935 1348.151489 1354.908447 1356.635742 1357.735718 1361.21167 1364.418579 1366.668335 1368.369263 1368.602905 1365.588867 1364.486084 1365.12207 1364.555298 1366.616943 1366.109619 1365.44751 1364.709961 1364.862427 1365.09436 1370.040771 1375.564575 1377.54541 1380.160278 1382.340088 1384.002197 1385.332397 1383.448242 1376.837402 1377.126831 1377.730591 1376.401855 1381.317261 1383.679321 1383.66394 1381.675537 1377.628418 1367.712158 1364.159546 1369.353638 1376.049194 1380.471191 1384.848145 1388.540405 1391.450439 1393.337769 1394.368774 1395.618042 1399.617676 1400.314331 1397.065186 1396.086426 1398.950928 1403.171753 1404.978638 1406.933472 1408.95459 1412.114258 1412.909668 1411.634521 1407.785767 1406.41748 1406.179077 1407.248535 1411.350098 1415.940063 1411.636719 1402.315308 1397.092163 1390.865356 1379.638306 1371.267578 1379.09436 1384.061279 1389.468018 1394.136719 1402.341431 1406.130981 1408.524048 1415.915771 1416.612305 1412.78772 1406.287109 1405.768311 1401.851196 1394.029663 1381.496704 1379.252197 1385.16394 1391.514038 1414.594849 1418.876953 1418.448242 1415.054321 1401.181396 1393.558716 1390.172729 1378.856079 1357.576538 1347.48291 1339.96228 1332.819336 1315.156738 1313.335693 1326.319336 1347.780273 1340.323608 1318.295288 1301.453735 1283.53894 1292.506592 1300.094238 1296.247437 1283.641602 1282.57312 1277.281128 1274.680176 1278.415283 1285.315796 1297.863647 1313.39502 1325.862793 1324.196899 1321.576782 1320.362183 1319.202393 1316.037598 1310.514648 1304.561279 1298.181763 1289.812744 1277.176758 1268.92688 1259.013062 1249.593872 1237.683228 1225.327759 1217.794189 1213.42688 1209.566528 1208.328369 1207.878052 1207.186157 1208.280396 1208.645508 1212.755493 1231.954468 1232.641724 1223.654419 1211.558472 1203.25293 1196.624634 1194.027466 1195.821045 1202.339111 1207.857544 1222.569702 1239.071533 1249.007568 1241.756104 1238.204224 1241.34082 1252.759399 1258.949585 1265.255615 1272.033447 1278.272705 1287.354004 1297.090454 1303.994263 1309.864502 1316.254761 1323.755371 1332.466553 1339.781616 1341.809448 1338.287598 1332.372803 1325.592896 1322.99231 1322.123291 1319.125244 1324.13623 1332.044556 1343.346924 1352.944458 1362.878662 1375.819336 1388.180298 1399.570923 1412.781006 1428.59375 1440.758423 1448.130127 1454.604004 1460.502197 1463.687134 1466.760864 1471.205444 1473.445068 1478.575195 1484.898804 +1501.016968 1510.911987 1518.752075 1527.578491 1535.554321 1545.354126 1555.373901 1549.621582 1535.271362 1511.214966 1511.770996 1528.737793 1547.726807 1567.573242 1577.39209 1586.114014 1596.719849 1602.713745 1604.432129 1604.141968 1602.80127 1601.508911 1599.978271 1596.846313 1603.236206 1612.642944 1621.245605 1635.294678 1646.060181 1648.330322 1658.139404 1660.286133 1658.547241 1656.630981 1653.681274 1651.388794 1651.354248 1655.830322 1660.248779 1661.448364 1661.233521 1660.254761 1661.770874 1663.66394 1666.002441 1668.117065 1670.298828 1672.143188 1673.000122 1673.256592 1671.990479 1658.353149 1650.32605 1640.373047 1627.859863 1614.971436 1596.006348 1578.921387 1548.452026 1528.621582 1516.165649 1499.715698 1487.886719 1476.796021 1458.461792 1450.125122 1455.567383 1461.061279 1465.689575 1474.911621 1484.450317 1498.946411 1513.775879 1528.365723 1542.962158 1560.415527 1570.286865 1584.538452 1595.096313 1609.955933 1623.676514 1634.583374 1642.016602 1649.393433 1655.697998 1659.913696 1661.970337 1664.284912 1667.381836 1669.253418 1668.896118 1667.87854 1667.793579 1667.229004 1666.041748 1663.144531 1658.475464 1642.724854 1621.312988 1599.482178 1581.061646 1560.472656 1542.270508 1527.96814 1512.541016 1500.156372 1481.254883 1469.619873 1458.037231 1446.227539 1435.904175 1427.136353 1417.958374 1407.397095 1392.6073 1379.153198 1375.071289 1372.204102 1370.330078 1376.97937 1387.458374 1394.758423 1399.908936 1408.809692 1424.515015 1444.322876 1458.158691 1477.483521 1492.187744 1504.037842 1516.47998 1537.878174 1557.268799 1565.067627 1566.92041 1566.852173 1561.793335 1548.971558 1538.93457 1523.992676 1517.30188 1511.098145 1505.618408 1504.942749 1509.857178 1515.334961 1521.332031 1529.494873 1540.103149 1562.771484 1571.804565 1576.928833 1580.511353 1580.521118 1579.703247 1579.569092 1579.602173 1581.270874 1584.096924 1586.140869 1585.061768 1583.056885 1580.887329 1578.61499 1575.189575 1564.27417 1557.968018 1557.741211 1557.078247 1554.720093 1550.917114 1546.228882 1541.036743 1535.982422 1532.355713 1526.456543 1523.139038 1518.148315 1513.936035 1509.170776 1503.619629 1496.730103 1487.98645 1472.414062 1458.046265 1442.360107 1433.31958 1435.935181 1443.037231 1462.78125 1472.300171 1476.919189 1478.921143 1482.932983 1491.393433 1491.909912 1485.669189 1477.670532 1472.719971 1481.271118 1497.052124 1513.767212 1528.962891 1547.056152 1549.852661 1546.952026 1548.726685 1558.172485 1568.913696 1578.481934 1583.522705 1579.556519 1574.150146 1570.766968 1564.834839 1556.380127 1548.352661 1539.108154 1523.882935 1505.995605 1493.541626 1482.124634 1473.661255 1465.003906 1464.953247 1465.203613 1460.401367 1455.547852 1451.521729 1446.199585 1438.477295 1433.713867 1426.4021 1422.957642 1414.283936 1406.17041 1392.803345 1402.117188 1410.423462 1416.57019 1426.525391 1432.5448 1435.835571 1441.769165 1441.680176 1441.176392 1438.785156 1431.00769 1417.660767 1413.151367 1410.591309 1409.192139 1404.413818 1398.286621 1388.445435 1378.615234 1369.112427 1363.756958 1373.040161 1387.726929 1397.636841 1410.323975 1423.22998 1432.046753 1439.780273 1440.625488 1432.056885 1425.65332 1423.527466 1421.53772 1427.379883 1442.3125 1449.639404 1459.951782 1471.656738 1478.284058 1483.363281 1485.171509 1482.144775 1478.855591 1470.399292 1483.633667 1502.270386 1512.58374 1517.091431 1518.190796 1512.75061 1510.207153 1508.535278 1511.42981 1521.564087 1528.90332 1535.271729 1538.467773 1531.74707 1529.519287 1526.528931 1520.975708 1511.444458 1497.834717 1488.048462 1475.848145 1474.226074 1473.36438 1472.773926 1474.677979 1474.904663 1474.015381 1472.95459 1471.481201 1467.312622 1462.951172 1456.587036 1455.780151 1451.661865 1446.992188 1441.442017 1438.077515 1433.862671 1426.936157 1424.453369 1421.765259 1425.128784 1430.138184 1434.15271 1436.496582 1438.114624 1444.796509 1450.869751 1457.096191 1465.081543 1465.997803 1462.33606 1448.449463 1433.294556 1423.359985 1414.958496 1402.400269 1411.186157 1423.485596 1441.491699 1450.151245 1453.825317 1454.35437 1454.262329 1453.954346 1448.096313 1435.701782 1424.742798 1415.907715 1410.957153 1406.550537 1404.71582 1404.457153 1399.626831 1393.352417 1385.439209 1377.842041 1378.727905 1378.955322 1367.788818 1366.764404 1368.515503 1369.764771 1370.915405 1377.867798 1391.05896 1395.238281 1386.967773 1374.299316 1353.157837 1361.314819 1354.27124 1367.516113 1378.254028 1371.227783 1381.591431 1383.154785 1382.692139 1380.218384 1368.691528 1368.037598 1365.814331 1347.879028 1336.078125 1330.615967 1332.16333 1329.40979 1325.494141 1320.293335 1309.24646 1298.387329 1319.63208 1327.954468 1345.947876 1367.542358 1370.670288 1366.71106 1357.863525 1345.953003 1330.902222 1315.458862 1313.174561 1314.532104 1329.86438 1335.882324 1337.658936 1340.195923 1344.468262 1340.509155 1344.210327 1353.806152 1358.243286 1361.65979 1363.129639 1363.818115 1363.786743 1363.875732 1362.424194 1358.945557 1357.588989 1356.004639 1357.201538 1356.921875 1358.376953 1358.141479 1360.219482 1364.7146 1368.710449 1374.866089 1379.045044 1382.081665 1384.986816 1387.720093 1390.207642 1391.748779 1389.997803 1388.947144 1390.725708 1387.706909 1385.967651 1389.26062 1391.010498 1388.484741 1384.126709 1380.564941 1374.915039 1367.223145 1374.315552 1379.617676 1382.356812 1386.074585 1391.273315 1388.63623 1389.755737 1390.27124 1388.817139 1398.929077 1401.688843 1392.0354 1393.373169 1394.942139 1399.749634 1402.661743 1409.865479 1413.311401 1416.493408 1416.976318 1415.675293 1408.670166 1405.852783 1404.44104 1403.761353 1404.6073 1405.837769 1399.115601 1391.865845 1384.572388 1373.826782 1360.593018 1353.882568 1365.927734 1381.286499 1376.824463 1378.018066 1390.787964 1396.383789 1396.545776 1404.345581 1407.479492 1396.470093 1379.26062 1383.305542 1374.142212 1373.565552 1369.135132 1359.478394 1363.073608 1388.886597 1406.127808 1411.174805 1417.428101 1414.303833 1403.147095 1382.204468 1370.861816 1362.835327 1347.460205 1330.155151 1321.1521 1312.706665 1300.09668 1302.593262 1321.566895 1343.865723 1327.465576 1308.220337 1294.25708 1280.200317 1276.069702 1280.266602 1282.280273 1274.30603 1270.639038 1270.976318 1268.784302 1268.845825 1278.067749 1285.295166 1302.630737 1317.866211 1321.710205 1324.044922 1328.647949 1327.698242 1321.313965 1317.120728 1307.445435 1298.050415 1286.473022 1268.77356 1257.166016 1246.161621 1234.272095 1221.953003 1213.606689 1207.065796 1203.297119 1202.026855 1202.427002 1202.571045 1202.056152 1201.227783 1200.095947 1200.40564 1214.362793 1224.821411 1222.504639 1211.172729 1202.436646 1196.550781 1194.275635 1197.78894 1203.204224 1209.344727 1220.165283 1237.242554 1257.487549 1260.800903 1256.799438 1256.073364 1259.360107 1258.190796 1257.862915 1265.57666 1269.927856 1276.589233 1285.341919 1294.452759 1304.050415 1311.930908 1319.224854 1331.089478 1341.155273 1344.934814 1345.971191 1345.58606 1342.960938 1338.805542 1336.851562 1334.449341 1330.505005 1329.489746 1339.179077 1357.979248 1373.411133 1387.235229 1397.745239 1407.43335 1419.36084 1431.306396 1439.363281 1443.248901 1447.906006 1451.229248 1453.802002 1460.375 1466.980713 1473.322632 1479.033447 1486.182617 +1510.718262 1519.492798 1533.2677 1543.922119 1554.157227 1563.287109 1567.069336 1563.817749 1547.243164 1533.29126 1523.311768 1541.009277 1563.483887 1574.508179 1585.179077 1599.772705 1611.314697 1614.530273 1616.447998 1617.466064 1616.428955 1613.683105 1609.769653 1606.763916 1614.275757 1622.75 1633.976929 1643.267334 1654.113892 1660.783691 1662.066284 1663.325317 1661.801147 1659.47583 1655.138184 1649.515869 1647.571289 1650.423096 1658.50769 1661.867798 1663.222534 1664.383179 1665.644897 1666.940308 1668.934082 1670.613647 1672.359863 1673.801025 1674.158325 1674.397949 1671.223999 1654.567505 1638.701416 1627.925415 1615.993286 1602.518677 1587.73291 1571.713745 1551.414307 1539.478516 1527.474487 1513.474487 1504.24646 1494.577393 1481.47229 1458.914185 1449.494507 1452.069336 1461.286377 1472.674805 1483.001465 1497.50061 1509.619141 1522.166138 1538.204834 1553.132568 1564.939697 1575.736694 1588.537354 1604.390015 1618.191406 1627.28186 1635.010742 1641.65271 1647.071899 1652.562744 1657.648071 1662.204346 1668.39563 1672.25769 1674.166382 1672.110352 1671.954224 1672.111938 1669.79834 1663.028931 1652.452271 1638.622437 1620.147217 1599.846191 1580.992065 1561.533203 1541.034424 1526.204712 1514.363647 1502.674194 1485.710327 1471.63855 1459.05542 1448.03064 1436.936157 1427.545288 1418.455566 1407.86377 1391.040283 1376.940796 1374.68335 1373.398926 1374.833008 1380.458862 1389.068726 1397.217041 1408.432007 1424.946411 1426.721069 1430.197021 1453.565674 1475.597168 1489.981934 1502.463135 1513.031372 1525.837891 1540.09668 1546.921509 1554.463379 1559.724487 1557.220093 1548.44458 1539.417969 1528.172363 1518.944458 1511.794312 1507.135986 1505.693237 1510.599731 1515.723022 1521.013672 1527.845947 1535.370483 1564.485352 1572.934692 1578.576416 1583.590088 1584.199951 1584.244873 1584.286743 1585.286133 1592.956055 1596.8927 1595.939697 1593.734131 1589.536987 1585.054077 1582.116455 1577.160156 1569.861694 1564.273315 1564.71936 1564.35791 1561.660645 1557.150635 1552.061279 1546.930786 1543.208374 1540.574707 1537.268921 1530.228271 1523.251465 1517.525391 1512.510254 1506.230469 1501.632935 1493.753906 1477.063354 1463.958374 1452.307007 1440.456543 1434.529297 1437.384399 1449.724609 1459.450195 1462.543457 1461.085815 1463.677734 1475.867554 1479.185791 1475.551758 1471.905396 1473.204956 1482.157715 1496.532227 1508.015137 1520.109253 1545.307861 1550.730225 1542.460693 1545.68811 1555.845947 1566.998779 1576.148438 1577.227539 1573.233521 1568.45813 1562.84668 1561.178589 1556.144531 1551.054688 1539.730225 1526.909424 1512.799561 1496.831055 1484.255493 1475.866699 1465.503174 1460.652588 1458.142456 1456.262329 1453.776367 1450.082397 1441.945801 1439.492188 1439.793823 1437.190796 1428.9552 1419.934937 1410.876465 1399.067139 1399.496826 1412.042969 1428.067139 1437.198853 1441.53064 1440.907227 1439.776611 1439.067993 1437.80603 1435.108154 1429.451172 1424.042725 1418.618164 1416.822754 1410.839966 1401.408203 1391.76355 1382.490356 1375.702759 1369.960083 1365.021606 1371.921021 1379.244263 1394.155396 1409.578979 1421.286255 1427.281616 1431.911621 1437.872314 1435.40918 1438.455078 1443.323242 1440.105103 1432.890259 1438.11084 1448.019043 1461.637329 1474.455933 1486.984009 1498.284058 1501.736206 1494.068726 1486.543457 1485.133545 1480.582642 1491.353027 1509.066528 1522.582642 1530.331787 1534.35144 1532.63208 1529.171875 1527.1427 1523.571411 1526.719604 1533.107544 1531.960571 1523.73938 1511.94873 1509.329346 1499.7677 1492.502686 1486.969727 1483.55835 1480.905884 1481.057251 1481.422363 1482.637451 1485.238892 1485.687622 1483.69104 1482.632446 1481.682861 1478.116455 1472.354248 1471.696655 1471.392334 1465.210083 1457.586304 1452.976074 1445.107544 1437.720703 1429.309448 1424.608154 1428.662109 1433.656128 1439.546509 1445.83667 1449.896606 1451.129517 1450.878174 1461.49292 1466.720337 1471.14209 1473.570557 1470.174561 1460.494385 1443.693481 1432.452759 1424.672485 1418.776855 1410.657715 1410.636719 1423.790283 1439.997314 1447.772705 1453.150269 1452.227661 1445.922119 1439.195435 1432.544678 1424.572632 1415.681274 1408.667603 1402.78772 1401.71521 1395.033447 1390.13147 1387.960449 1380.484497 1379.02478 1377.78064 1369.077637 1365.129395 1374.073975 1375.743164 1379.520386 1387.493042 1384.489136 1385.793335 1390.373291 1390.163452 1374.177734 1354.434204 1374.664673 1364.653931 1373.518677 1383.978516 1383.315796 1388.920532 1387.045044 1380.956787 1370.022339 1355.278442 1351.282593 1348.743164 1341.904419 1343.759399 1342.175293 1337.641235 1332.614502 1327.674561 1322.357422 1312.048706 1299.308594 1317.228149 1327.260376 1346.168701 1368.509766 1373.0448 1370.267334 1360.019775 1346.02124 1329.193604 1316.109253 1318.489502 1316.838745 1314.358398 1319.25293 1326.560303 1329.852417 1330.62146 1333.50354 1345.067139 1356.472778 1360.242676 1366.331787 1366.228027 1366.263672 1362.710205 1359.069092 1355.781494 1351.605957 1350.925293 1350.373535 1351.447266 1351.728638 1352.318726 1354.951172 1365.571655 1370.37915 1376.616699 1379.865112 1383.315186 1386.894165 1390.414917 1391.785889 1392.703003 1394.203735 1395.602661 1398.270264 1400.739746 1399.355103 1396.578003 1395.192139 1393.461548 1387.648804 1383.298584 1380.910522 1375.787964 1369.246216 1373.276611 1377.904053 1377.661011 1379.661255 1381.982056 1379.565308 1372.623413 1373.88562 1373.970093 1387.106323 1389.072144 1382.351196 1383.885254 1390.710815 1402.28125 1406.798218 1412.968628 1416.549072 1417.767334 1417.519531 1417.288086 1404.610596 1400.849731 1398.732788 1396.809204 1398.357544 1395.481934 1382.932739 1374.24646 1365.90979 1356.840454 1344.711914 1338.761353 1366.532715 1371.882568 1357.706665 1362.386963 1375.734741 1379.168701 1375.567383 1392.818848 1392.612549 1377.737427 1355.961182 1360.777588 1350.491333 1356.056274 1347.907715 1339.117432 1358.635498 1386.473267 1397.25354 1393.25 1401.877075 1404.625854 1395.088745 1374.346436 1354.035645 1348.376099 1338.660767 1325.245605 1305.95105 1297.748779 1289.462402 1303.207764 1321.771851 1335.475342 1327.697998 1313.092651 1303.020386 1291.204224 1279.202515 1267.110718 1266.795288 1266.024536 1262.232178 1262.349243 1260.585571 1258.671021 1266.195557 1274.096313 1285.784424 1296.353516 1304.796753 1317.046021 1330.175659 1325.356689 1321.271729 1317.754272 1305.25708 1291.099365 1274.86853 1259.398926 1248.114136 1236.581055 1225.95166 1216.088745 1207.490234 1203.391357 1205.606567 1207.685425 1208.3302 1207.942017 1207.094727 1205.772339 1203.368774 1199.530396 1205.625244 1213.259644 1213.469849 1205.915527 1199.791504 1195.475708 1195.761841 1199.881348 1204.889038 1211.359619 1218.984985 1232.707886 1252.70874 1266.279785 1273.984253 1278.061035 1282.148193 1280.925049 1277.104736 1270.829224 1268.874878 1273.343262 1278.169922 1288.684204 1304.155273 1313.681396 1321.805908 1329.897095 1336.773926 1342.85791 1346.559082 1351.733032 1357.069092 1357.089478 1352.72229 1351.379517 1348.121338 1341.665649 1338.554932 1356.233032 1375.894043 1390.779541 1401.731201 1409.505859 1419.851929 1429.21875 1433.818848 1436.793701 1436.921509 1439.424072 1448.630737 1460.893555 1468.546387 1476.439331 1481.586304 1488.126343 +1533.64917 1534.425659 1550.268311 1562.569946 1568.924561 1576.329956 1579.729492 1575.993896 1566.105103 1544.746582 1533.872925 1558.383057 1571.029175 1585.917969 1600.713013 1615.357178 1621.458496 1624.619507 1627.659546 1629.607178 1629.154541 1627.118774 1624.170898 1618.952393 1623.104858 1635.237305 1648.882812 1655.711426 1659.378906 1664.133545 1667.087524 1667.96106 1665.735352 1661.923584 1655.503174 1646.493286 1643.194946 1643.940063 1649.603271 1659.771606 1664.713989 1668.060059 1669.030151 1669.946899 1671.729248 1673.002075 1674.272583 1674.912842 1675.208252 1674.630371 1666.406616 1652.355713 1636.699951 1616.716064 1600.334473 1582.224243 1571.004272 1559.838867 1547.748169 1539.341309 1530.078003 1520.467407 1509.62207 1502.605469 1493.00415 1483.556274 1471.973999 1457.952881 1451.949341 1464.407471 1480.800537 1494.611328 1505.687134 1515.544312 1528.880371 1542.1698 1554.475952 1565.174927 1577.534302 1593.447632 1610.729736 1617.83667 1624.013428 1632.51355 1637.875488 1644.795898 1652.399902 1659.039673 1668.368652 1675.157959 1679.874146 1677.131958 1674.36084 1673.864868 1671.865479 1658.445068 1644.817627 1631.521484 1616.905518 1598.37793 1575.761475 1555.29248 1533.422485 1520.474854 1512.328735 1500.502808 1485.37207 1471.399048 1459.087036 1450.400024 1440.825195 1428.933838 1416.893188 1404.881592 1385.737671 1377.259766 1376.073486 1375.233154 1376.962402 1381.067627 1388.849854 1398.728271 1414.775269 1435.714233 1450.297363 1447.822144 1446.803955 1469.443115 1487.279541 1498.149048 1507.00354 1515.263916 1527.223633 1536.558838 1543.649048 1552.161499 1552.8125 1546.881226 1537.561523 1528.557861 1520.045776 1512.302368 1508.416504 1506.785278 1510.658203 1515.522095 1520.620728 1526.965698 1536.98877 1563.220459 1574.820068 1583.887695 1588.33667 1590.837524 1592.240845 1594.479614 1599.779297 1603.573853 1605.460083 1606.487915 1605.397217 1599.325317 1592.696167 1586.753052 1581.241577 1573.922363 1571.821777 1571.650879 1570.086792 1567.82312 1564.165039 1561.070923 1554.740601 1549.325928 1545.433105 1540.793945 1534.625488 1526.775391 1518.840942 1512.937744 1504.205933 1502.075195 1499.492798 1490.38269 1479.928589 1469.509766 1458.055786 1448.210693 1439.231934 1439.555176 1446.965576 1448.936279 1449.378784 1452.013672 1457.661499 1462.643311 1466.181396 1469.367798 1476.812012 1488.922119 1503.532837 1514.890747 1528.77124 1544.793579 1553.034668 1539.617554 1535.096069 1549.735352 1558.155762 1568.291626 1571.702271 1567.431396 1564.309204 1559.233521 1554.947632 1550.86731 1548.085327 1538.749634 1528.187012 1517.562988 1506.150513 1492.688843 1480.746338 1471.409058 1458.323364 1450.391602 1451.664795 1452.080688 1449.720825 1444.362549 1441.239258 1438.935303 1433.209351 1427.394165 1420.733887 1412.207031 1403.303101 1397.128174 1410.198364 1427.276123 1436.137329 1440.593872 1438.59375 1435.855835 1433.458862 1432.319458 1431.069946 1429.140015 1424.922241 1414.915283 1406.512085 1400.87146 1392.005615 1382.547729 1376.949951 1375.03479 1371.111084 1366.614868 1375.231079 1387.255615 1395.348633 1400.653198 1417.525269 1424.312866 1428.454224 1436.036743 1436.947144 1440.900513 1453.181152 1456.542358 1454.35437 1445.807373 1448.347778 1456.697632 1474.690918 1490.564087 1504.047729 1512.962646 1509.906006 1503.355591 1502.416138 1500.453491 1497.198486 1500.575806 1519.095581 1534.192017 1540.919678 1544.014648 1543.859619 1541.186157 1537.885376 1537.553833 1535.760254 1526.86145 1516.354004 1506.929932 1499.508301 1499.16748 1494.678589 1496.581421 1493.696655 1488.420898 1487.818848 1494.006104 1497.675781 1497.744263 1496.418945 1494.781006 1493.032715 1493.420532 1489.829712 1482.844727 1482.043213 1480.703491 1477.168701 1470.143555 1461.184204 1448.931885 1437.507568 1428.732056 1429.308716 1434.54248 1440.571533 1450.147095 1455.752808 1459.938599 1462.66272 1462.975952 1467.112793 1471.314819 1476.273926 1481.932495 1476.520142 1466.180298 1454.760742 1440.960083 1434.22229 1427.446533 1422.749146 1417.475952 1410.887207 1424.112183 1440.314697 1448.100708 1447.84436 1437.62207 1429.796753 1426.7323 1419.567993 1411.393555 1402.217896 1399.963257 1394.750854 1391.210205 1391.493042 1390.033203 1385.860718 1380.836182 1378.331909 1366.070435 1372.804443 1383.256226 1391.770142 1388.520874 1395.370117 1395.027954 1395.052246 1394.814209 1391.451294 1371.192017 1368.4104 1381.483765 1368.776245 1378.203857 1392.05957 1393.579956 1393.486206 1388.834351 1374.440063 1365.538452 1370.761353 1362.454102 1358.973633 1357.7677 1353.056763 1347.73877 1341.965576 1336.037476 1330.648926 1321.672119 1307.782227 1302.726196 1320.745728 1331.067993 1341.718628 1362.101196 1376.978027 1370.974731 1355.94812 1342.932739 1328.769043 1333.44043 1331.243896 1326.424561 1318.169678 1316.928589 1318.669434 1324.118164 1325.870605 1334.755371 1346.641479 1353.834839 1357.658813 1361.884888 1362.4375 1364.330444 1359.135986 1354.176147 1347.886353 1342.559448 1341.89502 1348.255005 1350.215088 1352.636475 1360.983765 1369.902222 1370.170288 1375.276489 1379.993286 1382.13916 1385.434814 1390.068481 1392.155396 1392.342163 1393.069702 1395.015625 1398.547607 1402.557739 1404.036743 1405.24353 1403.772461 1398.98645 1391.038452 1380.786865 1372.93335 1375.132202 1370.192261 1364.755493 1361.072754 1363.09314 1358.932373 1364.170898 1367.960449 1368.690796 1353.456421 1352.01062 1360.090332 1373.195312 1370.235229 1362.625488 1379.083374 1392.4198 1403.757324 1408.551514 1413.883667 1416.866943 1417.185791 1417.402466 1415.950928 1399.827026 1394.262573 1391.696167 1388.815308 1392.691284 1393.723511 1374.113159 1353.135498 1340.704224 1339.084961 1330.647095 1322.162476 1349.724121 1348.460449 1332.891968 1351.838135 1362.480591 1353.286987 1363.776855 1379.914551 1368.710938 1357.439331 1334.432617 1344.087158 1334.454834 1331.647095 1322.508179 1323.648315 1351.734863 1378.281616 1379.875244 1368.532104 1384.065796 1387.077515 1385.640381 1370.057495 1348.05603 1331.648071 1326.962891 1316.817871 1300.016602 1285.764893 1278.918701 1301.844238 1317.364136 1331.91394 1333.683105 1329.363892 1318.639526 1303.640869 1285.170776 1271.232788 1256.87207 1255.411011 1254.11731 1253.981323 1253.236816 1252.498169 1255.682251 1263.785156 1271.033081 1275.753906 1289.119629 1315.112427 1320.658936 1316.052002 1307.653931 1304.626221 1295.456787 1281.306396 1266.202148 1252.382812 1241.176758 1230.43042 1221.946899 1213.959961 1206.643921 1205.085571 1209.354736 1211.336426 1211.892578 1211.630127 1210.887817 1209.955078 1208.018799 1202.253174 1198.981812 1204.912598 1205.19043 1201.36499 1196.174072 1195.262573 1196.723877 1200.828003 1205.927002 1212.389648 1221.450317 1233.386353 1246.780518 1262.113159 1277.166382 1291.776489 1304.953247 1303.884155 1296.115112 1289.536011 1287.891724 1287.56665 1284.419189 1282.656372 1298.873169 1311.806641 1319.67749 1324.458862 1328.591064 1334.11377 1341.283447 1347.204834 1354.2146 1360.304932 1365.428833 1366.702148 1363.413452 1358.770508 1352.103516 1346.83667 1364.456665 1383.526489 1397.813965 1406.342407 1415.060059 1423.583252 1427.116699 1426.104004 1426.27356 1438.510132 1448.333862 1461.848145 1470.590332 1477.813721 1483.243164 1488.505737 +1549.427856 1549.551758 1564.460327 1570.855103 1578.533447 1588.513184 1590.50061 1588.529419 1578.561279 1562.389404 1551.625488 1567.491577 1581.531616 1598.480469 1613.977295 1624.793213 1634.098877 1635.837158 1639.279053 1640.775146 1639.718018 1638.624634 1639.308228 1637.387573 1632.196655 1645.897339 1658.934814 1665.138306 1668.391968 1669.189087 1671.429565 1672.27124 1669.960449 1663.448364 1652.413086 1641.847534 1634.426147 1633.97937 1640.167236 1647.311646 1662.861572 1671.589233 1671.77417 1672.251099 1673.714111 1674.717651 1675.374146 1675.891113 1675.47522 1671.587036 1658.520874 1645.464111 1634.390381 1616.994141 1593.42334 1574.661133 1558.545288 1549.167358 1541.006714 1533.549805 1526.319214 1518.360962 1509.569458 1502.524414 1496.704956 1490.404175 1481.682129 1470.594482 1454.543823 1460.448975 1475.138794 1488.82019 1502.189331 1509.062378 1516.795776 1528.360229 1537.44812 1554.516602 1575.3302 1592.80188 1604.352173 1612.421509 1621.935669 1628.663452 1634.310425 1642.219849 1649.296265 1658.506348 1668.218872 1674.779297 1676.228149 1673.099487 1673.044312 1673.87915 1669.005371 1654.901978 1637.425537 1621.125977 1608.126465 1592.004028 1565.124634 1551.253662 1529.813599 1513.362793 1503.182861 1493.515015 1482.653442 1468.735474 1456.971313 1448.841064 1442.097778 1432.964111 1420.938843 1404.526733 1388.36731 1378.080811 1375.880127 1375.956177 1376.558838 1380.772827 1387.372192 1397.258911 1416.611694 1439.591797 1462.624756 1472.641113 1465.785522 1462.324463 1481.355713 1493.57019 1500.724731 1506.358765 1512.22168 1525.139282 1533.91687 1544.24646 1549.617554 1544.569946 1536.30188 1528.181519 1521.10437 1514.857544 1510.440918 1507.824585 1510.817383 1515.491089 1520.291382 1526.282471 1536.767822 1564.098511 1575.072998 1586.420288 1594.737671 1599.368042 1601.061279 1603.322632 1606.571411 1609.786011 1613.446289 1614.727417 1613.74292 1607.233765 1599.805298 1593.407959 1586.11145 1581.812866 1582.100098 1582.286133 1579.351685 1574.925049 1570.963135 1566.63501 1561.401489 1554.293091 1547.980591 1540.724487 1533.686768 1525.756836 1514.490356 1508.681641 1501.734497 1493.942993 1494.41687 1489.385864 1481.736206 1471.911377 1460.756714 1451.660034 1441.545898 1439.995361 1447.535645 1450.845581 1455.014526 1457.944702 1458.781738 1460.144775 1461.627319 1465.809326 1475.199585 1489.172729 1498.9375 1509.19104 1526.147095 1534.381104 1545.995483 1534.941284 1531.132202 1541.116943 1548.716553 1556.606201 1561.275269 1560.975708 1557.665039 1553.961182 1548.396729 1544.272461 1539.980103 1533.681396 1526.092651 1516.663574 1507.547241 1497.298462 1484.781982 1477.591309 1459.802246 1450.314453 1446.792847 1445.567139 1443.433716 1440.638916 1438.904053 1433.666992 1426.863159 1421.411255 1416.37085 1409.218628 1402.291382 1399.424072 1409.420288 1418.596436 1425.185547 1430.602905 1434.338745 1431.405151 1426.811035 1424.865601 1423.881836 1421.879639 1417.956665 1410.582153 1401.095825 1390.953735 1384.039062 1377.32251 1379.604004 1379.542969 1374.533936 1367.37146 1375.576904 1386.992554 1403.858521 1416.867432 1422.980835 1426.197998 1434.224609 1440.609131 1444.130493 1446.188965 1449.501099 1463.392456 1468.880005 1466.792358 1468.646729 1463.414551 1468.159424 1491.349976 1512.002441 1517.893555 1518.6875 1515.075439 1516.236694 1517.634644 1517.037476 1515.395508 1515.254272 1528.645386 1540.507202 1549.386597 1551.300049 1551.12561 1549.653809 1545.290161 1539.059448 1526.980103 1519.524048 1515.689453 1510.326904 1506.859863 1508.869385 1510.638794 1502.381836 1497.958618 1504.125 1508.20874 1511.562134 1512.532227 1511.528564 1507.501831 1507.241943 1507.961304 1502.283203 1494.291016 1492.547729 1487.053101 1480.782837 1471.222778 1458.823486 1444.730469 1435.579834 1437.059448 1440.325806 1440.968628 1449.195312 1457.237549 1462.500244 1468.459839 1470.43457 1470.860229 1471.500244 1474.05896 1478.335938 1489.099976 1485.526489 1474.214233 1465.057007 1454.950928 1445.613892 1437.751709 1429.765747 1422.717773 1413.557861 1417.427979 1433.104126 1443.880127 1443.729004 1438.262695 1426.113525 1419.886475 1413.467773 1407.355225 1401.929077 1400.557251 1399.333984 1400.908936 1397.008789 1391.933716 1386.195068 1379.48584 1376.435669 1377.181641 1383.771973 1390.079956 1401.840942 1399.715576 1400.385254 1403.166138 1400.591309 1396.342163 1382.032715 1363.973877 1374.893677 1386.871094 1375.347168 1387.964355 1395.035645 1396.069946 1392.787231 1381.795776 1380.990356 1386.483398 1385.599243 1379.400024 1371.369507 1368.814209 1359.097534 1350.584717 1343.324219 1337.480591 1331.717285 1318.001587 1301.700317 1315.767456 1329.891357 1337.273315 1351.055054 1371.531372 1381.183594 1371.220703 1355.158447 1342.785156 1350.40271 1348.86792 1343.72937 1335.519043 1327.859131 1326.587769 1329.300171 1325.867676 1325.154419 1326.424194 1336.39624 1342.657837 1346.748901 1349.309937 1349.787476 1352.949219 1350.475342 1342.200684 1339.083618 1341.556763 1345.48645 1354.915894 1353.246094 1352.283203 1357.077881 1366.477417 1369.045166 1374.653076 1379.85376 1380.579102 1381.651611 1386.300415 1389.963745 1390.318848 1390.286255 1393.685791 1397.824341 1400.615845 1402.431396 1404.663086 1404.858765 1401.748291 1389.663452 1377.921143 1364.513428 1357.937622 1358.274048 1353.468994 1349.102783 1349.520508 1347.636719 1348.70752 1349.999146 1348.513428 1341.072998 1338.843384 1350.065796 1355.626465 1352.728882 1352.610229 1368.098633 1384.90979 1398.248413 1405.216797 1411.161621 1415.294922 1415.528809 1414.180176 1411.503784 1392.214233 1385.242798 1379.450928 1385.010254 1391.410767 1392.607788 1378.634521 1357.424683 1335.73877 1314.223755 1312.529419 1302.02832 1321.574707 1321.119141 1312.189331 1334.471436 1336.539673 1335.869507 1361.271729 1378.02771 1356.866821 1337.409912 1327.703613 1305.789673 1302.977051 1305.42041 1292.32312 1309.873901 1338.47168 1360.213501 1355.451538 1352.459106 1360.987915 1369.426025 1377.934082 1368.98999 1347.814819 1328.427856 1311.160156 1306.383911 1289.720215 1280.162476 1277.369263 1295.529541 1309.004517 1322.261963 1331.024048 1334.016846 1319.75061 1301.061279 1285.500488 1272.787476 1257.91687 1247.192627 1246.351562 1246.236938 1248.218018 1248.336914 1247.326538 1250.529785 1255.036255 1267.240845 1283.374634 1306.763794 1311.261475 1303.377686 1293.903198 1293.270996 1283.554321 1274.186157 1261.818848 1248.116211 1235.608643 1227.02063 1220.065674 1212.695068 1205.841919 1207.524902 1212.977173 1215.373901 1215.809082 1215.450195 1214.599854 1213.403076 1210.886597 1205.802734 1198.565186 1198.682739 1199.129272 1198.341187 1195.76709 1196.560791 1197.224365 1201.587524 1205.809814 1212.558716 1220.338501 1230.657837 1247.570312 1261.820679 1274.707397 1286.776245 1304.822632 1320.075562 1313.744873 1305.027832 1302.800659 1301.40271 1299.045044 1295.632935 1294.606934 1307.400391 1314.841431 1319.088135 1322.747314 1328.054565 1335.554565 1341.997559 1351.938232 1358.677246 1366.731689 1374.659302 1377.620605 1370.862915 1364.020874 1358.570801 1352.175659 1364.911621 1385.225708 1397.275146 1405.217163 1412.116699 1414.649292 1412.476807 1421.178833 1438.555664 1447.439209 1461.796143 1470.481201 1477.180786 1481.265015 1484.576538 +1566.291016 1564.276001 1570.093384 1575.155029 1583.449219 1597.262573 1602.580078 1599.76123 1584.925659 1572.18457 1564.761597 1583.414185 1601.214722 1610.246338 1620.61853 1638.678223 1653.194092 1656.397095 1658.228271 1655.198608 1646.393188 1645.983765 1651.181274 1653.454468 1649.418091 1650.942261 1666.750488 1674.104736 1677.348999 1677.141235 1677.10376 1676.355225 1673.505249 1666.066284 1653.205566 1639.926514 1631.711182 1628.445557 1632.593872 1640.398804 1653.248169 1670.071533 1673.694824 1674.628418 1675.039429 1675.497314 1675.937378 1676.631958 1675.417236 1668.453003 1654.07373 1636.97937 1625.759766 1610.569458 1591.721313 1572.416138 1553.9729 1541.280518 1530.613159 1521.151611 1517.450439 1511.790527 1502.537109 1496.68042 1492.266479 1488.151855 1476.912354 1465.601807 1465.910767 1457.371704 1468.311401 1481.368164 1497.43811 1504.298218 1509.188232 1521.084473 1538.31665 1554.028809 1575.917969 1594.470703 1604.912476 1613.821289 1622.829102 1628.101807 1635.32666 1641.330078 1649.011597 1657.785522 1667.645264 1673.546875 1672.188721 1666.95166 1663.187622 1663.472534 1661.422241 1651.552734 1636.026855 1615.145386 1596.55188 1575.540039 1555.935181 1541.180786 1524.555298 1509.887695 1496.120117 1486.143677 1475.938965 1463.368408 1451.904785 1445.445679 1440.440308 1432.655396 1423.056152 1407.568359 1392.133911 1380.15332 1376.262207 1376.72522 1377.673584 1380.441528 1387.193359 1394.205811 1413.379761 1440.510742 1465.703491 1486.447754 1489.979248 1482.922241 1473.176636 1487.575806 1495.051758 1499.505005 1506.558105 1514.78894 1525.183838 1534.104858 1540.056396 1542.707886 1536.89917 1528.405029 1521.923584 1517.355225 1513.098999 1508.913574 1511.851074 1516.385742 1521.169067 1528.241089 1541.237061 1566.975342 1577.641968 1588.287231 1599.060059 1603.008301 1606.571167 1610.318115 1613.393311 1616.905396 1621.513794 1622.731201 1619.6427 1611.761108 1605.665527 1600.865479 1595.61084 1589.91626 1589.178345 1588.481934 1587.279907 1580.612061 1575.134766 1568.167969 1561.850586 1552.924194 1545.811768 1536.608398 1527.435303 1520.936035 1509.425781 1501.745239 1494.825806 1484.282959 1482.992554 1477.443481 1474.426147 1463.60083 1453.738403 1449.381226 1442.89856 1445.763184 1454.642334 1465.690796 1470.96106 1473.166504 1469.547607 1465.185547 1461.269287 1461.579956 1468.767334 1481.630005 1490.579712 1500.779175 1509.69519 1523.704468 1533.778442 1532.166382 1522.515259 1532.095703 1539.408081 1545.244263 1552.571899 1552.630737 1547.857544 1547.154175 1541.728394 1535.84021 1532.719727 1527.900513 1520.673096 1511.89917 1504.797974 1493.634155 1483.052856 1476.284546 1463.314819 1451.031372 1440.271851 1438.803101 1438.358643 1436.236084 1432.757812 1428.597412 1423.409668 1415.846069 1411.628296 1405.427979 1399.908691 1404.395874 1408.650146 1413.253296 1419.260986 1428.290161 1431.0271 1429.106812 1418.386597 1412.550781 1412.758179 1411.216553 1407.671021 1400.168579 1392.736572 1387.888794 1386.476807 1386.654785 1388.11792 1382.942871 1376.008545 1368.850098 1374.334229 1383.15918 1398.673706 1418.199341 1429.313477 1434.292847 1440.888428 1447.756592 1454.998657 1462.322998 1461.27417 1467.104614 1477.381958 1484.44519 1486.482544 1485.934204 1479.704468 1489.619873 1513.435791 1523.87207 1526.19104 1527.218384 1531.101685 1532.452759 1533.633545 1533.873413 1531.616821 1529.652832 1534.698242 1542.575928 1549.724609 1553.380371 1553.30957 1549.562256 1544.592529 1537.906616 1532.832275 1526.588013 1518.867554 1514.103027 1523.440308 1520.631714 1509.446411 1512.863525 1518.838867 1524.925659 1527.888306 1528.460449 1527.517456 1523.006592 1522.234985 1522.038818 1513.946411 1512.698364 1503.227295 1491.623901 1479.642822 1468.985352 1454.230469 1442.775757 1442.870483 1447.17981 1448.925415 1450.131714 1455.981201 1463.394409 1473.521851 1481.510864 1478.907471 1475.950806 1474.569702 1476.88208 1478.365967 1481.815552 1482.094482 1476.851318 1467.54895 1460.046631 1452.577271 1444.319092 1437.216919 1428.279663 1415.337158 1420.271484 1434.36499 1443.126465 1442.126831 1436.983887 1426.546143 1418.394409 1413.455444 1411.625488 1406.25061 1405.534912 1404.775757 1403.571777 1398.945312 1392.521484 1384.411377 1377.13501 1380.47583 1383.044556 1398.217407 1397.530518 1408.123779 1408.247314 1407.358643 1406.395874 1401.843872 1389.611328 1373.539185 1374.618896 1389.022583 1393.393066 1376.702148 1395.423828 1400.168213 1399.656616 1394.897583 1393.947021 1394.991821 1394.129761 1388.379761 1382.085205 1374.371948 1364.450317 1358.200806 1351.041626 1341.611084 1337.373779 1331.47644 1314.015747 1304.845337 1321.372437 1332.727417 1341.328613 1356.724609 1375.80481 1382.329834 1372.717041 1358.034302 1358.893188 1362.352539 1360.65271 1352.268799 1341.729492 1331.498413 1331.761353 1342.344116 1337.474854 1329.259399 1326.141968 1327.127441 1332.827759 1336.064819 1336.685181 1337.114258 1337.678711 1337.367798 1338.168091 1344.511597 1354.330566 1352.10144 1356.688232 1361.306641 1356.111084 1352.564453 1353.752563 1364.158203 1366.254028 1367.159058 1368.426758 1374.447021 1378.425659 1384.036987 1387.141479 1390.515747 1393.523193 1396.120239 1399.347534 1402.921387 1404.104858 1404.358765 1404.895752 1394.833496 1379.556885 1365.832886 1352.171265 1341.07373 1343.730957 1343.154175 1338.879395 1339.406616 1338.619995 1339.035645 1341.435181 1331.883911 1326.726318 1339.975098 1344.670654 1337.141113 1351.252808 1368.19812 1388.13916 1395.579956 1401.599854 1408.077759 1411.618896 1410.399414 1409.892578 1407.933594 1393.088623 1379.13501 1375.122925 1383.151001 1393.401489 1384.444336 1365.005737 1351.2229 1332.579468 1308.847046 1288.365234 1282.310547 1292.919556 1292.486694 1294.629639 1308.653564 1306.532227 1332.661743 1357.577393 1368.789795 1362.480225 1349.510986 1304.282349 1275.970947 1279.973633 1278.000854 1273.654175 1299.157593 1337.442627 1339.358521 1337.409668 1326.772705 1341.130493 1348.215942 1360.862793 1357.808105 1342.03894 1327.917236 1304.083374 1290.867065 1282.700562 1272.869873 1271.184937 1284.886108 1295.062134 1305.924438 1310.993774 1314.32312 1319.063354 1300.487061 1280.974243 1267.355591 1259.001587 1246.600342 1241.53894 1242.154907 1244.77002 1244.314331 1241.473511 1241.964966 1247.422241 1258.21936 1273.795288 1287.77832 1298.362793 1293.031372 1283.763306 1277.703857 1274.64563 1269.221191 1257.770386 1243.733276 1231.678711 1225.216675 1218.894531 1211.383911 1205.409424 1211.064575 1218.490234 1219.859131 1219.89856 1219.340454 1218.155396 1216.965698 1214.651489 1210.282227 1206.335205 1197.894043 1196.75061 1196.44458 1197.474731 1198.099854 1199.237915 1203.128296 1206.350952 1213.687134 1222.893066 1235.69519 1249.384644 1262.285278 1275.467773 1292.28064 1304.256348 1315.838379 1321.073853 1317.650391 1314.753906 1311.705078 1308.318359 1304.831543 1302.373047 1302.780396 1307.802856 1313.170288 1318.015503 1325.789917 1332.030151 1338.902344 1344.082031 1353.856323 1362.675903 1372.929321 1381.838013 1382.05127 1377.411743 1370.521362 1365.676636 1362.275269 1363.902588 1380.469971 1389.508057 1393.628296 1395.442139 1403.995972 1421.643311 1436.777466 1446.639771 1458.927246 1467.358643 1474.452637 1477.563354 1478.519409 +1585.234497 1578.901611 1586.973877 1583.768677 1589.724854 1611.152954 1617.876709 1610.427002 1600.668579 1595.711182 1584.787476 1605.980225 1618.504028 1624.130737 1631.068848 1650.902344 1664.643066 1671.2948 1674.81311 1675.180664 1669.693604 1668.220093 1672.335449 1672.872803 1668.709839 1663.016846 1675.478882 1684.45105 1684.966553 1684.26062 1682.132935 1680.86145 1674.468018 1666.316528 1654.053589 1639.790405 1624.447632 1620.870361 1621.162476 1633.829346 1640.717773 1651.875 1668.199951 1675.055786 1675.511597 1675.181641 1673.547241 1671.655029 1667.810181 1660.070801 1649.137085 1633.091309 1614.153198 1599.776855 1586.468506 1565.988037 1551.674194 1539.925537 1528.027832 1514.830566 1508.397095 1499.225586 1496.119019 1488.559937 1482.33667 1474.040283 1467.8302 1472.849365 1474.733276 1470.072876 1462.348633 1475.650757 1484.893555 1499.688599 1507.437378 1519.394897 1539.107788 1555.033936 1573.586548 1593.407104 1602.784912 1609.806152 1617.557983 1625.701782 1633.576172 1641.298584 1649.11731 1657.097046 1666.047607 1671.55249 1667.949463 1659.742188 1648.845581 1648.449951 1649.23291 1642.250732 1630.063354 1611.849731 1592.058472 1564.447754 1544.447388 1529.204956 1518.259277 1506.40625 1491.456787 1477.35144 1468.735107 1455.020142 1444.983521 1438.819214 1433.782227 1428.074585 1420.733643 1408.30188 1392.86499 1384.473999 1379.065918 1376.846313 1378.956299 1383.762817 1390.655151 1399.14917 1419.273926 1442.539551 1464.090454 1485.058716 1498.101074 1498.364014 1490.274048 1488.541138 1496.584839 1501.057861 1511.296875 1519.068115 1526.302002 1534.641235 1540.581421 1544.042236 1539.949585 1531.74939 1523.788696 1519.460815 1515.373413 1510.949341 1512.510132 1517.613037 1523.934082 1535.602173 1543.128662 1566.898926 1576.784058 1587.337891 1600.810303 1605.587891 1610.248535 1616.019287 1620.110596 1623.334473 1627.543213 1628.905884 1623.92627 1616.705444 1610.395996 1604.905884 1600.474243 1595.546753 1590.979492 1588.595581 1585.741211 1578.633301 1573.325928 1565.292847 1557.217163 1547.406738 1536.915405 1526.471436 1518.160278 1511.619019 1504.32959 1493.269165 1484.188965 1475.371704 1471.025146 1465.543335 1460.939453 1459.3396 1454.067627 1453.521729 1442.952148 1451.446167 1461.145874 1475.122559 1482.675415 1483.97644 1481.761841 1478.446167 1476.07605 1469.478516 1466.092407 1473.912598 1481.075073 1491.446655 1501.226685 1509.390015 1524.258667 1526.772339 1517.089111 1518.787598 1526.866943 1536.138428 1545.79126 1546.185425 1540.204956 1537.993286 1534.46936 1529.59668 1526.741943 1522.394897 1515.298828 1507.390137 1499.346924 1489.065674 1477.30481 1470.312622 1460.499268 1450.903442 1439.389282 1435.772339 1433.925049 1432.324951 1428.467896 1424.062378 1419.629517 1414.317505 1409.039795 1402.934326 1403.211914 1406.435059 1410.060303 1412.740112 1413.473389 1425.885376 1429.696777 1426.809692 1420.942627 1416.058594 1413.891846 1408.042236 1402.093384 1393.0354 1388.104126 1388.389893 1392.182495 1396.507324 1394.709229 1386.524902 1378.671875 1369.270874 1373.240356 1378.810181 1390.896729 1408.769409 1422.008545 1433.284668 1442.374634 1450.448242 1461.755493 1466.237671 1466.049316 1473.442017 1485.477539 1496.686646 1504.008789 1506.884277 1502.396362 1497.768066 1520.694824 1529.950073 1534.039551 1536.535278 1540.720947 1542.661133 1544.402954 1544.939697 1543.308594 1539.199951 1539.156982 1543.189209 1548.014893 1553.324707 1557.818848 1558.039917 1555.905884 1548.696289 1542.550781 1536.659302 1527.154663 1528.47168 1534.382446 1524.598145 1522.688354 1529.048218 1533.351807 1534.72583 1532.808105 1529.736572 1528.039673 1529.086304 1528.22876 1526.716675 1520.485718 1515.662598 1502.959717 1491.243896 1478.458618 1466.651367 1452.277222 1446.122925 1453.204834 1456.484009 1458.585815 1460.084473 1465.999023 1473.762817 1485.773438 1492.035156 1487.747803 1479.986328 1474.904663 1472.194824 1471.033569 1471.705688 1471.137817 1465.794067 1460.080566 1453.029541 1449.120117 1443.698608 1436.455078 1425.869019 1417.795776 1424.540039 1434.709961 1441.744629 1441.115112 1435.328857 1426.443481 1426.079102 1425.25647 1423.692017 1417.361328 1412.306885 1406.49231 1401.755859 1396.160522 1390.541138 1385.912354 1382.952393 1386.386841 1392.611084 1402.653198 1409.994751 1412.990723 1416.634033 1411.732056 1404.69519 1390.839966 1375.525391 1377.736938 1387.922974 1397.960205 1396.851318 1383.533081 1397.968506 1404.697266 1402.625244 1400.388428 1394.910278 1390.525513 1389.35437 1377.907837 1372.60083 1366.071899 1357.744507 1351.817139 1345.880127 1339.74353 1336.567749 1332.051025 1312.661499 1304.700195 1319.248047 1331.744019 1341.026367 1356.302368 1374.674438 1382.489014 1376.498047 1364.722168 1369.188843 1372.653198 1369.556152 1358.179077 1344.885864 1335.070801 1338.32251 1348.253174 1348.723877 1342.272461 1334.388306 1329.30188 1328.109863 1328.978149 1327.717529 1332.289917 1338.345337 1339.767822 1346.576416 1359.348755 1365.669556 1361.079468 1360.549072 1367.069336 1367.565186 1367.985474 1365.914185 1364.247681 1365.664429 1366.177368 1367.882324 1372.641724 1378.189575 1381.802979 1386.092407 1390.651367 1391.761841 1392.562134 1397.434692 1401.5448 1401.981934 1401.955078 1403.447754 1394.540161 1377.59436 1365.075928 1352.158203 1343.425049 1336.835815 1317.605347 1324.702759 1329.373779 1328.721436 1327.228394 1328.868164 1320.059692 1321.175415 1334.453613 1335.245972 1331.559692 1346.115112 1360.471191 1380.182739 1397.558716 1404.409302 1406.263916 1407.031006 1403.591675 1404.566528 1404.848389 1392.587524 1379.32666 1368.175903 1376.961304 1388.097412 1371.349243 1348.665405 1330.742676 1316.814453 1292.468872 1274.321655 1269.208862 1270.842163 1270.289795 1275.773682 1281.473267 1301.464355 1331.556396 1351.158813 1342.438599 1329.99646 1321.123779 1282.820435 1262.251221 1263.736694 1257.302856 1261.273926 1272.798828 1280.699585 1297.937134 1295.862183 1307.459839 1314.766846 1331.698975 1344.067383 1339.988281 1332.591675 1320.369751 1301.091431 1286.851685 1276.344727 1267.456421 1268.613037 1275.00708 1275.988892 1282.769409 1290.112793 1291.348267 1306.378662 1304.619141 1285.043335 1267.275269 1255.860596 1247.491089 1241.110962 1237.452637 1237.625854 1238.052979 1236.399536 1236.38855 1238.64502 1243.320557 1251.530273 1276.900513 1288.430542 1281.662354 1273.450562 1267.747681 1266.717651 1261.550903 1252.85791 1239.270752 1228.92395 1223.248047 1217.498779 1210.048828 1205.265015 1219.07666 1224.783691 1224.969116 1224.028931 1222.886841 1221.69043 1220.812256 1219.610962 1216.835205 1212.713135 1207.969482 1204.961426 1202.618774 1200.394775 1201.538208 1205.06897 1206.84729 1209.44873 1216.6698 1224.944702 1238.146606 1254.474121 1266.001587 1280.015991 1294.095215 1309.598999 1319.188354 1321.258057 1321.701538 1321.808838 1320.226929 1317.290527 1314.485352 1310.997559 1307.786865 1305.425293 1311.629883 1314.597534 1318.487305 1325.333008 1329.52124 1336.286011 1345.793579 1355.416504 1363.544556 1374.836426 1382.273926 1386.555664 1386.348022 1380.993408 1374.748535 1369.166138 1368.127319 1375.362915 1379.932007 1391.656616 1406.677368 1420.226929 1433.09375 1443.723633 1453.347534 1461.54541 1466.647583 1472.479004 1474.26123 +1616.6073 1609.664673 1618.316895 1616.422607 1612.034912 1625.734131 1630.411499 1626.137207 1628.161865 1617.271851 1605.025757 1620.584595 1633.213501 1639.934814 1642.615112 1663.428223 1675.846069 1684.096924 1690.752197 1691.367676 1688.484375 1686.248779 1685.717651 1681.151978 1675.509277 1669.841553 1678.569336 1685.748535 1687.348389 1687.183105 1685.827026 1684.421875 1675.449219 1665.336548 1651.43811 1639.181274 1626.551147 1616.532837 1614.585449 1621.707886 1631.776245 1636.049072 1644.775879 1656.57019 1663.92749 1666.886597 1662.242554 1650.766357 1652.229614 1649.688721 1641.719849 1628.243286 1609.533081 1590.844238 1574.96167 1558.328125 1548.090576 1537.064819 1525.411377 1513.189087 1503.430908 1496.864624 1492.54834 1486.57666 1476.284546 1471.478027 1482.011353 1492.331665 1494.794189 1485.139648 1462.004883 1470.553589 1480.152222 1489.992554 1504.330811 1518.712524 1536.810913 1557.464111 1574.506104 1586.884521 1598.875732 1602.981689 1613.675659 1625.379517 1633.944458 1640.828735 1648.189331 1655.373047 1661.716919 1664.171021 1662.079468 1654.911865 1635.249268 1624.711182 1626.598022 1624.376221 1614.952881 1599.714111 1584.924805 1562.021362 1538.312012 1517.841919 1508.80957 1498.142822 1485.324707 1472.685791 1463.473022 1449.788696 1439.548218 1432.111694 1426.123901 1422.70813 1417.397827 1405.610107 1393.130249 1384.171753 1378.206055 1376.988892 1380.567871 1385.285278 1391.116333 1408.321045 1433.628174 1448.146484 1469.178833 1488.691772 1503.552368 1510.528931 1507.631104 1506.438354 1506.230469 1507.262817 1513.449463 1523.152588 1529.504395 1536.413696 1546.985352 1549.636963 1543.479004 1535.942261 1526.663086 1521.551392 1517.26355 1512.808716 1512.998291 1518.850952 1524.387695 1534.24646 1542.925293 1563.945435 1574.316162 1584.394165 1599.327637 1606.806763 1615.178589 1622.560303 1626.725464 1630.213867 1634.00415 1635.539673 1626.327271 1618.297363 1611.922363 1604.223267 1598.250244 1591.574707 1587.228638 1584.260864 1579.056641 1570.504761 1562.95874 1557.097412 1549.844482 1538.613892 1522.798584 1514.546509 1508.951904 1504.459961 1497.412354 1485.903564 1478.530273 1472.221436 1465.316895 1461.119751 1463.810669 1462.319214 1457.024414 1449.664307 1447.654419 1455.523071 1466.53772 1484.577881 1495.107666 1500.803589 1494.09729 1487.400269 1483.311523 1477.703613 1472.414673 1472.669922 1473.634888 1483.244629 1492.36792 1500.871216 1509.910645 1516.442749 1512.749878 1509.025879 1513.638428 1528.353394 1538.126465 1537.643433 1532.786133 1528.493896 1523.525391 1521.408203 1520.173828 1516.756836 1511.481323 1504.263062 1497.791748 1491.149902 1480.524902 1467.478394 1455.615845 1448.461792 1440.138184 1434.004272 1427.787476 1428.570435 1427.273071 1421.936401 1417.299805 1412.302246 1407.475464 1403.829956 1406.752563 1409.437012 1412.628906 1416.465576 1423.210815 1428.918335 1429.539307 1428.797974 1428.01123 1426.444336 1418.738037 1415.300415 1406.055908 1394.755127 1387.997437 1393.350098 1402.870117 1405.381592 1401.675049 1389.177124 1381.96814 1371.990845 1372.387817 1376.448486 1386.941772 1400.602417 1420.014526 1432.383667 1440.925049 1448.945557 1455.904053 1458.284912 1460.430176 1472.156982 1486.217529 1502.282349 1513.67749 1518.45813 1516.066895 1509.284546 1529.242432 1537.659912 1543.638306 1548.184204 1549.998047 1551.201294 1557.843018 1560.860229 1557.923096 1550.712036 1549.595581 1556.057495 1559.833008 1559.869141 1561.862549 1567.020996 1568.817627 1563.542603 1550.238647 1544.047729 1539.175659 1543.516479 1542.255981 1531.310669 1534.499756 1541.087646 1543.115479 1540.717651 1533.939087 1523.720093 1523.976685 1524.075317 1521.446655 1515.402832 1510.510132 1502.450928 1493.070068 1484.549194 1475.121582 1463.247437 1449.903076 1454.159058 1460.136353 1464.999146 1468.362549 1470.00061 1475.703857 1480.893677 1489.962646 1490.680176 1483.809814 1476.276978 1469.908081 1464.718018 1462.553711 1461.076416 1459.323242 1456.217041 1451.623413 1446.625366 1443.151978 1438.767212 1426.423096 1422.536865 1425.119019 1433.538208 1441.734375 1446.034424 1445.609741 1442.267334 1440.869141 1433.952637 1429.269409 1424.801025 1415.80896 1409.98877 1403.074951 1398.187378 1393.161255 1388.795166 1389.718384 1389.553467 1387.381348 1405.566895 1410.670532 1416.371338 1416.5354 1416.556641 1400.958618 1387.805298 1384.552979 1394.302734 1391.18811 1403.606201 1404.492554 1400.295044 1391.423584 1399.842041 1405.629517 1405.304932 1404.739624 1391.143311 1381.696533 1375.360474 1371.175537 1363.425903 1359.553467 1354.428345 1348.147583 1343.101074 1336.510986 1333.234985 1333.841309 1326.437256 1303.896606 1307.785767 1327.791382 1337.571533 1349.541382 1366.123657 1379.542114 1379.032715 1374.80249 1379.557251 1380.225464 1366.74292 1357.492798 1345.961792 1338.565186 1338.214844 1354.832886 1360.128052 1354.162476 1346.786133 1337.953003 1329.924561 1328.053101 1339.109009 1349.452759 1353.686401 1357.178955 1363.00293 1369.375488 1371.499023 1368.04541 1364.232788 1366.410767 1368.916138 1369.873169 1370.010376 1369.174072 1369.095093 1372.042603 1374.05188 1375.048096 1376.878052 1378.510742 1383.475586 1387.782959 1389.209595 1390.555054 1395.223022 1398.090942 1398.94873 1398.216553 1397.175171 1394.694092 1381.345581 1369.150513 1352.495361 1345.273438 1338.130859 1328.046021 1317.31604 1322.178711 1322.026611 1320.268433 1318.819458 1314.190674 1319.465088 1331.508057 1329.898438 1326.136597 1337.766357 1357.019409 1376.508423 1386.362915 1387.723145 1404.48584 1404.411743 1400.260742 1398.167358 1398.508789 1388.554321 1381.531982 1368.861206 1360.953491 1373.754639 1362.681763 1341.256714 1321.280396 1287.129028 1269.161133 1259.864746 1255.72998 1256.338135 1257.32959 1261.687378 1270.355347 1289.875366 1317.707642 1341.131836 1329.258911 1302.93042 1284.595581 1264.106934 1248.550659 1242.39856 1240.026978 1243.778076 1252.838379 1261.074951 1265.773193 1270.70166 1289.2052 1298.576172 1318.525391 1327.876587 1323.794678 1317.228638 1308.974243 1292.625366 1281.298096 1269.67041 1264.120361 1265.744873 1269.901245 1265.457275 1270.081055 1273.256348 1274.536255 1285.7771 1296.665771 1287.000488 1268.354614 1254.213013 1244.69458 1239.567993 1234.409912 1230.017822 1233.227539 1230.367676 1228.330078 1226.726318 1224.545898 1235.267944 1262.225952 1270.040894 1266.766602 1260.975464 1258.68457 1258.199585 1254.323486 1247.907593 1235.831787 1226.124634 1219.474854 1214.587646 1208.677734 1206.424072 1224.689087 1233.086548 1230.420532 1227.678101 1226.380127 1225.102295 1223.907593 1222.629517 1221.202148 1218.741089 1213.899902 1210.526611 1207.585083 1203.001831 1206.87439 1209.681396 1212.252197 1216.595337 1222.523071 1235.427124 1246.354004 1255.739868 1268.843506 1278.488647 1286.689575 1296.140869 1305.011475 1311.024292 1319.689087 1324.003174 1327.692261 1326.715576 1325.077148 1322.667236 1319.443359 1318.363159 1317.278564 1314.759521 1315.38855 1319.527222 1326.907227 1333.147705 1339.204834 1345.499146 1351.559937 1360.9198 1373.954346 1385.147339 1394.333008 1394.748779 1391.491943 1384.413696 1379.689697 1375.067139 1376.588867 1390.530029 1404.21582 1414.814453 1427.023193 1437.935303 1445.624023 1451.625 1457.833008 1464.161743 1467.911255 +1646.953735 1646.09436 1643.355591 1647.12854 1646.648682 1641.497314 1641.86499 1648.28833 1656.136353 1633.379272 1625.187866 1639.71167 1653.249268 1659.216431 1665.866211 1674.793457 1693.36853 1697.665405 1697.575439 1697.217896 1696.491089 1694.270874 1688.759033 1684.428711 1682.366821 1676.231079 1679.007812 1684.483887 1689.078369 1690.045654 1688.513428 1685.516846 1674.848022 1663.976807 1647.939941 1636.942993 1626.263184 1615.229492 1608.152344 1613.100464 1621.621216 1626.483765 1630.972778 1637.586426 1641.618408 1642.534668 1637.989014 1631.60498 1634.567627 1637.694946 1629.345947 1617.15625 1604.690308 1590.248291 1567.398926 1553.664185 1544.297607 1530.95105 1520.487549 1513.898926 1502.886963 1495.875732 1489.481079 1483.432007 1474.709717 1479.770508 1488.923218 1498.253052 1503.060547 1495.052246 1469.86792 1467.081665 1477.211426 1488.070923 1498.6521 1514.363159 1529.584961 1552.699585 1567.166626 1576.952759 1586.075317 1599.197144 1612.775757 1623.615112 1632.933105 1639.591675 1645.889404 1651.574829 1657.306519 1659.31311 1656.748657 1649.590698 1635.099365 1613.309326 1601.724365 1602.245972 1595.461182 1582.356445 1567.341797 1552.094849 1528.033813 1509.206787 1494.531616 1488.692017 1479.451172 1466.738647 1455.090454 1444.331299 1435.519653 1427.40332 1422.589233 1418.868286 1413.072266 1401.650513 1389.419678 1380.519897 1377.070068 1378.71875 1382.972656 1387.850952 1390.539429 1412.70813 1438.935303 1454.759521 1471.546143 1492.292114 1512.167603 1517.582031 1516.822144 1516.46106 1515.947388 1513.215698 1517.452148 1523.31189 1530.005127 1538.216431 1550.624146 1552.158691 1546.811401 1538.289917 1530.062744 1523.754761 1519.107056 1514.619995 1515.029785 1521.337891 1528.154541 1536.844727 1542.94043 1558.703369 1568.81897 1579.471924 1593.553467 1606.524902 1620.785034 1627.778564 1633.318726 1636.565674 1638.221802 1635.770996 1625.630737 1617.633057 1610.678345 1600.592896 1592.713501 1583.960693 1580.945312 1578.248291 1573.731201 1562.837524 1551.175171 1545.00769 1538.076538 1528.672241 1513.202026 1505.480103 1501.453003 1495.869995 1486.048096 1479.052979 1473.842651 1473.378418 1477.58252 1480.153198 1475.491333 1467.630005 1458.104858 1447.822144 1450.167969 1461.838989 1469.054688 1473.479858 1484.311401 1499.785889 1503.479614 1499.061768 1490.49939 1484.517578 1479.012695 1478.623413 1476.996094 1477.909424 1485.420044 1491.146851 1496.489868 1500.398438 1502.170166 1503.597778 1509.553955 1524.660522 1530.528931 1529.202271 1524.407227 1517.27771 1511.19519 1513.197998 1513.361816 1511.141968 1504.130249 1497.886475 1492.3479 1487.484619 1478.683716 1466.030273 1452.879272 1445.166382 1438.335693 1434.891357 1427.462158 1424.845093 1422.751221 1418.274292 1414.199585 1409.34021 1405.759888 1411.234009 1413.452271 1412.093994 1415.40686 1422.722168 1428.251465 1430.401367 1427.568237 1426.696899 1423.636597 1420.185547 1416.079224 1410.285156 1401.355347 1390.464111 1388.11084 1396.0 1405.701294 1408.903076 1405.039795 1395.271973 1386.394775 1378.017578 1372.02771 1376.319214 1386.425293 1398.53833 1415.762207 1425.906982 1437.805298 1442.907471 1446.922485 1447.334473 1453.442383 1467.821045 1484.594604 1502.380615 1517.111572 1527.615112 1524.984253 1522.733032 1533.079834 1545.099121 1553.444458 1560.026489 1562.770508 1563.928833 1567.906494 1570.215698 1569.664307 1567.143677 1565.838501 1568.483154 1572.139038 1572.565063 1570.799316 1576.85376 1579.35144 1575.511841 1565.637085 1550.988525 1546.718018 1551.080444 1550.229736 1542.418335 1544.334595 1549.83606 1549.775269 1540.224609 1529.363037 1516.339233 1512.202881 1510.278564 1508.06543 1505.449463 1500.5979 1491.505249 1483.973511 1477.356689 1467.786621 1458.674438 1453.13562 1460.20874 1467.616699 1474.405273 1478.015259 1479.911865 1481.337769 1481.547241 1481.700195 1478.055786 1472.741455 1466.883057 1461.900757 1456.864624 1454.00415 1453.132935 1451.47583 1448.012817 1442.01123 1439.609375 1435.273926 1429.948242 1428.52063 1429.848999 1435.495239 1444.352295 1452.07019 1453.406982 1450.785767 1440.550903 1436.17749 1428.148804 1423.4021 1414.312134 1409.401978 1402.384399 1400.090576 1397.525146 1393.26355 1392.394043 1394.310791 1395.493652 1393.298096 1399.792358 1418.681274 1418.682251 1415.97644 1409.878662 1403.37915 1389.367065 1391.560425 1405.114502 1401.776245 1406.371582 1410.875122 1403.057983 1407.680664 1405.954102 1403.570801 1398.916504 1396.737305 1388.455078 1378.900513 1364.216919 1359.129272 1352.367065 1351.164917 1348.653564 1343.884399 1339.482788 1331.480347 1320.69458 1330.136353 1342.937378 1325.626221 1310.471313 1315.10083 1331.308228 1340.730103 1358.708496 1373.104858 1382.869385 1383.765015 1382.318115 1377.066528 1365.283813 1353.74353 1342.499146 1342.093262 1343.12146 1356.312256 1370.362549 1369.15979 1358.216675 1346.231934 1335.667969 1331.449097 1346.240723 1360.318726 1369.090576 1371.71936 1373.135742 1373.719849 1377.296509 1376.251587 1368.31897 1366.086548 1369.871704 1371.958008 1373.18103 1374.03894 1375.946777 1378.551025 1379.391357 1379.127808 1379.126587 1379.233276 1382.817627 1386.687012 1389.63623 1391.777222 1393.715088 1394.88208 1395.214111 1393.596191 1390.009277 1389.872314 1381.471069 1368.073608 1351.216919 1344.563843 1337.109131 1328.796265 1317.059326 1317.677246 1317.062988 1312.742432 1308.208252 1304.01001 1309.095825 1319.113037 1315.177979 1318.462158 1328.359619 1326.05481 1326.301636 1331.367554 1345.274048 1388.073486 1401.53418 1396.449097 1389.717529 1388.589722 1383.784668 1378.248047 1369.59082 1349.710327 1346.383667 1345.444336 1331.645386 1307.341675 1282.051514 1257.737183 1255.844971 1260.223999 1260.441162 1254.815063 1250.442139 1260.895264 1275.178345 1301.998413 1332.553833 1315.768311 1291.93689 1270.099243 1252.067993 1240.133667 1241.521729 1245.161743 1241.930908 1237.497803 1241.337769 1247.348389 1260.50293 1270.031982 1283.791382 1301.508789 1311.320557 1312.22937 1303.390503 1294.81665 1284.362183 1273.620239 1263.531494 1256.981201 1260.707764 1259.605225 1256.610229 1258.916016 1259.343384 1257.981812 1266.575073 1278.02002 1278.834229 1266.135132 1253.180664 1242.83374 1236.977661 1233.935913 1226.687378 1220.619141 1218.769287 1217.55127 1217.037109 1216.661865 1219.074341 1241.158081 1250.308594 1250.748657 1248.196289 1249.674561 1250.939331 1247.747437 1242.005737 1233.092773 1222.287354 1216.743042 1212.268066 1207.575073 1207.081299 1228.140137 1234.702148 1232.71167 1230.451904 1229.415283 1228.032837 1226.384644 1224.826416 1223.317505 1221.334473 1218.015381 1212.352661 1205.691284 1205.433472 1209.024902 1212.468018 1217.096436 1222.861938 1232.456543 1243.212036 1251.353149 1259.258423 1266.160767 1270.465332 1276.080322 1280.830566 1286.663208 1294.676758 1309.94751 1320.007324 1329.678345 1332.057983 1332.490356 1331.500732 1331.019409 1329.22522 1327.74646 1320.650513 1321.631958 1321.100952 1326.087524 1329.397949 1333.75061 1337.969604 1344.575684 1353.528198 1365.097046 1378.616455 1390.95874 1397.069702 1402.186401 1401.930054 1394.703857 1390.261841 1385.04248 1385.41394 1391.111084 1402.893188 1415.481323 1426.279663 1436.629395 1442.734497 1449.41748 1458.474976 1463.565308 +1660.058716 1663.693604 1662.658569 1664.056763 1667.738037 1665.407104 1662.538818 1666.48999 1661.645508 1648.253906 1643.131958 1655.13501 1664.485596 1674.397095 1686.705933 1695.781494 1697.236572 1698.317627 1699.178101 1698.750244 1697.27478 1694.981812 1690.778442 1687.821533 1684.678589 1681.161987 1681.966187 1686.438599 1692.074463 1693.667358 1691.391357 1685.682739 1672.567139 1661.320068 1644.678467 1634.475464 1624.276733 1614.437378 1606.70459 1604.491577 1606.584229 1616.035767 1621.876709 1624.917114 1627.039185 1625.526001 1619.473511 1615.189209 1617.240234 1615.314575 1612.427979 1604.661133 1595.386963 1582.123047 1563.741455 1550.806274 1541.342651 1529.023682 1519.230713 1512.59436 1502.636841 1493.904053 1487.595825 1481.059448 1475.896973 1482.728027 1490.467896 1499.463379 1503.601685 1497.525635 1473.335571 1465.874146 1474.704346 1483.549438 1493.311279 1505.953003 1518.745728 1532.686279 1547.241699 1560.927856 1579.828735 1596.723511 1609.092163 1619.209839 1629.764038 1637.119873 1642.39563 1647.696533 1651.385498 1651.271362 1651.232178 1650.47644 1634.578979 1618.127319 1590.240112 1573.494141 1566.083496 1550.810547 1545.352539 1535.066162 1519.238525 1501.96521 1484.439087 1476.665161 1470.307739 1454.469849 1446.38562 1437.609375 1427.967407 1423.398682 1419.341064 1415.144775 1405.778442 1395.907104 1385.634155 1377.515503 1378.848267 1383.057373 1386.782837 1392.063843 1398.790527 1417.440796 1443.17981 1460.366455 1477.777588 1496.212891 1517.500977 1524.068604 1525.290283 1524.996216 1524.611572 1522.931519 1521.5177 1527.017212 1531.212769 1538.519043 1549.962646 1557.050293 1548.291992 1540.547729 1533.237549 1526.866333 1521.637329 1516.230347 1516.97168 1524.03833 1531.185913 1538.627197 1543.55603 1556.360718 1563.708984 1573.211548 1585.883301 1603.329346 1622.148315 1632.085815 1638.55542 1642.809814 1643.101562 1635.408936 1623.740112 1614.857056 1606.426147 1596.797729 1588.92688 1581.575439 1573.698486 1570.593262 1564.830322 1554.678589 1540.943237 1532.825806 1527.445801 1518.811768 1505.586304 1496.892822 1492.471436 1486.990356 1476.769653 1475.891235 1485.505127 1492.394775 1494.62915 1491.847656 1481.890991 1470.099121 1457.869141 1449.046997 1456.220337 1469.056152 1474.693237 1480.054077 1490.208008 1496.981201 1506.648193 1510.575684 1500.282837 1490.73999 1488.354858 1487.037964 1486.474976 1488.370361 1488.077148 1486.952271 1491.612427 1496.269409 1497.572021 1502.384644 1508.021851 1517.108643 1524.127441 1520.471313 1512.986572 1505.036133 1503.0625 1501.829468 1503.004761 1502.486328 1497.267212 1490.022339 1484.504028 1478.994995 1471.436401 1461.839844 1451.989746 1445.876465 1442.614014 1439.863159 1430.931519 1424.541382 1418.596069 1414.313965 1410.357666 1408.39917 1414.827637 1418.551392 1418.531494 1415.170532 1415.891235 1429.223877 1437.0448 1434.605225 1422.788696 1413.654419 1410.546021 1405.956421 1403.725098 1400.27771 1393.771118 1389.647461 1389.206177 1397.026855 1406.522949 1413.532471 1410.930786 1403.193481 1393.443848 1382.204224 1371.942749 1375.248901 1380.293213 1390.864868 1406.443359 1422.436279 1429.86499 1432.253174 1433.677979 1442.355591 1453.486572 1467.404663 1483.345581 1501.699219 1512.956909 1524.051514 1528.172607 1531.609253 1537.98999 1550.323608 1560.359009 1564.654419 1567.40271 1572.164551 1575.216919 1576.807373 1577.935425 1577.886475 1578.333374 1585.262085 1586.379517 1584.670532 1582.904663 1586.421997 1589.228149 1585.089233 1573.795654 1563.498779 1551.087036 1558.772217 1558.621582 1548.995117 1553.12207 1553.950195 1543.174438 1529.218872 1520.496826 1510.805298 1503.56311 1501.287109 1498.794067 1497.692749 1492.417603 1484.483643 1477.754517 1468.518066 1460.607056 1455.340454 1458.665161 1465.575317 1477.033081 1483.224976 1488.605469 1489.631348 1484.991577 1479.397583 1473.621338 1466.911987 1461.541016 1455.334839 1451.127075 1449.224121 1447.046387 1444.853882 1442.628418 1438.647095 1437.553711 1437.229492 1437.196899 1436.569946 1435.613281 1436.027588 1441.41748 1450.920776 1454.677612 1454.308594 1452.015015 1443.685181 1436.16394 1428.479004 1425.072632 1418.166016 1411.821533 1403.153809 1400.189697 1399.080688 1398.398315 1397.586304 1400.212891 1403.764526 1403.998779 1400.439209 1414.782959 1419.716675 1418.236938 1413.571899 1402.357544 1397.816528 1400.015137 1407.776245 1414.342896 1414.524048 1417.02478 1413.916748 1406.572266 1406.032471 1399.87915 1390.420288 1381.122559 1378.479614 1370.87793 1358.422607 1347.199585 1341.185913 1340.57251 1339.439575 1336.744873 1332.982666 1325.927734 1319.343872 1315.317383 1332.986206 1333.36792 1324.753052 1308.838013 1327.286133 1338.272949 1356.720703 1369.964966 1384.903809 1392.024902 1381.433472 1371.201416 1361.052002 1352.262451 1349.115112 1354.578979 1357.429077 1361.344482 1372.738281 1377.166748 1366.892578 1352.526733 1340.302979 1336.507935 1343.241821 1356.1698 1368.915771 1379.347656 1374.317627 1372.862793 1376.263062 1380.105469 1377.916138 1373.549561 1372.557251 1374.1875 1376.023193 1377.254028 1378.979126 1380.409302 1381.099487 1381.284058 1381.572876 1382.440552 1384.257202 1386.624146 1388.765381 1390.007568 1391.998535 1392.227905 1390.931152 1390.18103 1378.249023 1377.499756 1373.354004 1361.43042 1350.647827 1343.709839 1334.154053 1325.037231 1316.591675 1315.605225 1314.26123 1310.147583 1305.899292 1303.02832 1302.335205 1304.570801 1304.480103 1307.598022 1310.589111 1305.299316 1302.990601 1306.132935 1319.168823 1356.487183 1386.120361 1388.205322 1385.008545 1381.303223 1380.986938 1378.359985 1369.898438 1352.346558 1330.494141 1321.229614 1315.233887 1295.925537 1273.690918 1254.582397 1266.458496 1274.869995 1279.87207 1273.518555 1260.596436 1252.059814 1266.560547 1285.573486 1319.040405 1306.941162 1280.747681 1260.587524 1243.520996 1242.968628 1257.09729 1260.107178 1256.57251 1249.089844 1238.305054 1237.528931 1243.995972 1254.603638 1268.908569 1277.061401 1286.54248 1299.931396 1291.654175 1283.146729 1273.960938 1265.435425 1257.992065 1253.937988 1255.978516 1254.226807 1251.266113 1250.259033 1249.782104 1248.821289 1250.166382 1261.567627 1263.023682 1255.945923 1246.044434 1236.241211 1232.538696 1226.449097 1219.24292 1219.36499 1221.308228 1222.132935 1220.900146 1218.595459 1216.328857 1217.68396 1226.526123 1231.36731 1233.706543 1242.076172 1245.612915 1242.997803 1236.922485 1228.723877 1220.213257 1215.387085 1211.009033 1207.042358 1209.504395 1235.171143 1239.905884 1236.984131 1234.559814 1232.543335 1230.415527 1228.642456 1226.638306 1224.575684 1222.329712 1219.040771 1211.450073 1204.538818 1207.625488 1210.10437 1214.141235 1219.999146 1225.413574 1233.008911 1241.814331 1248.3302 1253.642578 1256.294067 1261.60376 1263.85437 1267.168457 1279.38269 1286.140991 1296.254395 1308.565918 1318.755249 1326.767578 1330.103882 1331.198853 1331.228516 1331.727783 1331.609985 1328.279297 1331.564209 1332.69397 1331.746094 1329.863647 1329.032471 1336.803589 1340.952515 1348.841919 1360.112305 1374.397827 1386.388184 1396.327271 1403.837524 1406.332275 1406.394165 1404.519409 1403.363281 1403.647949 1404.272217 1405.665527 1412.324951 1423.155518 1434.078857 1442.620239 1452.093994 1459.04187 1465.424683 +1655.66626 1672.835083 1673.762817 1678.093628 1684.284546 1693.488892 1687.086792 1675.432739 1667.76123 1669.667358 1667.345337 1665.81604 1672.709839 1686.037842 1695.335815 1697.692017 1699.064087 1700.020386 1700.303833 1699.466797 1697.199951 1694.165161 1692.356079 1689.958618 1687.64502 1686.396606 1686.548218 1689.800049 1695.793701 1696.479858 1694.8302 1685.74939 1672.048096 1658.382568 1642.655151 1632.064941 1622.266357 1613.086426 1605.314331 1598.02478 1597.89563 1604.517578 1609.72998 1613.102417 1614.811401 1613.375122 1608.746582 1601.502686 1602.695923 1601.300781 1595.339844 1586.065674 1580.553589 1570.40332 1557.317139 1547.434692 1537.718506 1526.912842 1515.925171 1507.861084 1500.286865 1488.524048 1484.603271 1480.640015 1481.193359 1489.172607 1493.69519 1499.731445 1503.121704 1491.797729 1475.149292 1479.915039 1469.385986 1479.255615 1486.772461 1496.597412 1508.193359 1518.380737 1532.413818 1556.07312 1574.190552 1589.680664 1602.829102 1614.255493 1624.442749 1633.051025 1636.997681 1641.243286 1644.443359 1643.80957 1645.327637 1646.680664 1632.272461 1621.029541 1591.240112 1566.231079 1545.309692 1526.225952 1518.518311 1516.746826 1505.879028 1490.551025 1477.614746 1468.210327 1461.380615 1447.778198 1438.600464 1427.306274 1423.545166 1419.172974 1415.655029 1408.623535 1399.884644 1392.46875 1380.58667 1377.781128 1384.418579 1389.60376 1390.316895 1397.394653 1412.859497 1423.798096 1443.648438 1465.964355 1486.626831 1504.585815 1525.165894 1536.702271 1541.697998 1539.605713 1534.718506 1530.077393 1525.102661 1529.365723 1535.038208 1538.372437 1552.957764 1563.811646 1553.114014 1544.131836 1535.715332 1530.201294 1524.662964 1518.049927 1519.014771 1524.685181 1531.36438 1537.351196 1542.885742 1557.038696 1566.085205 1576.701294 1586.602173 1601.544678 1620.923462 1634.308594 1643.248901 1648.535522 1647.916016 1635.388184 1621.563599 1611.190674 1601.272095 1591.798218 1584.260742 1578.675781 1570.880249 1560.313965 1554.616455 1546.282593 1534.126587 1522.182983 1516.688232 1509.213623 1498.841309 1489.401978 1485.438965 1485.53186 1487.91394 1496.809204 1503.439575 1506.368774 1505.577637 1499.920044 1482.647827 1469.165405 1456.048218 1450.784058 1465.269165 1476.365723 1488.073364 1491.667358 1496.30603 1503.976318 1512.548584 1517.842529 1508.841797 1497.773315 1500.1604 1499.44458 1499.333374 1500.685425 1497.477295 1495.386108 1495.724854 1498.560181 1498.931763 1501.699219 1504.869629 1507.63501 1509.006592 1507.423096 1503.583496 1496.897949 1493.187866 1492.565918 1492.521606 1491.97522 1489.111206 1483.660034 1476.611328 1469.867676 1463.274902 1456.951294 1450.80249 1451.697754 1446.483887 1441.940552 1434.192505 1424.568359 1415.974487 1411.706909 1411.205444 1415.102295 1419.676758 1423.771484 1425.958618 1424.464355 1424.727295 1431.893188 1442.895996 1439.813354 1424.412109 1415.871948 1409.357788 1403.803223 1402.833374 1401.661621 1400.211548 1400.633179 1397.42627 1402.145874 1409.590454 1416.391968 1415.07666 1407.638062 1397.586182 1384.622925 1372.769653 1374.79187 1377.77002 1390.098999 1403.027832 1413.359375 1416.697876 1417.307129 1428.761719 1442.141968 1456.794556 1469.053711 1481.998901 1495.451904 1505.49292 1514.705444 1527.328735 1536.162476 1543.718994 1552.881226 1561.000854 1565.047852 1567.475952 1571.634155 1575.758789 1578.912476 1582.876587 1587.602051 1590.358765 1594.210693 1596.856079 1598.320435 1597.841309 1598.76123 1599.745728 1594.02063 1581.842041 1572.106689 1565.157227 1565.082764 1563.726685 1559.019165 1560.858032 1556.529419 1539.442017 1524.952393 1510.230469 1504.834839 1498.211548 1492.66748 1490.655273 1486.717041 1482.334229 1476.541992 1467.635864 1461.021606 1458.88147 1461.890015 1467.377563 1475.321167 1484.375977 1490.245361 1492.285278 1490.233643 1481.852051 1474.645752 1467.275879 1459.846558 1454.28125 1454.453125 1454.71167 1453.093018 1450.957275 1451.942871 1450.54834 1447.564941 1446.865723 1446.579468 1445.696533 1444.341675 1442.774048 1443.084839 1446.594116 1453.500122 1455.267334 1454.752441 1452.166626 1447.399292 1439.00769 1437.923828 1432.793335 1426.835693 1414.838989 1403.404663 1401.755249 1403.540527 1402.446655 1401.09436 1407.890137 1420.592896 1420.710205 1411.665527 1407.018066 1418.608032 1420.15625 1417.42041 1406.162842 1408.041504 1410.053589 1414.601196 1417.627808 1417.837158 1417.683594 1405.889282 1400.46228 1396.258301 1392.873779 1385.506592 1375.827881 1365.34668 1359.760254 1350.889038 1338.298096 1328.833252 1329.477539 1327.964966 1325.687988 1323.403564 1323.716431 1331.901367 1314.797729 1321.888916 1320.456787 1319.49707 1311.008911 1327.390137 1336.452393 1343.929321 1360.893311 1377.887085 1389.35437 1380.947266 1370.719116 1360.760376 1356.505737 1359.47876 1361.620483 1370.173706 1375.894897 1381.213989 1381.578369 1370.670776 1357.062256 1343.420898 1337.842773 1338.876709 1347.901611 1360.831543 1368.229858 1366.550049 1366.936646 1369.102051 1374.144043 1377.613647 1375.095093 1374.460693 1375.829712 1378.021362 1379.381958 1380.330566 1381.276001 1382.090454 1383.072144 1383.781128 1384.765991 1386.022461 1387.600464 1389.598511 1391.016357 1391.67627 1390.776855 1382.342529 1379.713867 1371.637451 1362.920898 1359.761841 1354.442871 1347.151611 1341.393921 1332.256836 1324.938477 1319.926758 1316.543701 1315.884888 1316.903076 1314.432495 1310.671997 1305.644775 1302.104126 1301.198608 1301.719238 1301.211182 1299.780029 1298.478271 1299.802246 1306.106812 1341.091675 1369.639648 1372.5802 1380.409546 1379.284668 1375.195679 1370.754639 1366.936035 1357.367065 1338.163818 1319.472412 1301.580566 1280.339233 1265.01062 1260.397705 1275.169312 1294.236206 1298.150635 1289.766724 1273.750977 1252.809692 1256.255981 1275.161987 1301.946411 1299.087036 1270.065796 1250.372437 1240.864868 1255.468506 1266.730103 1273.37146 1275.362915 1269.949341 1257.61377 1243.593262 1235.230225 1240.039429 1249.149658 1257.028442 1266.527222 1288.76709 1285.2854 1274.501465 1265.253906 1258.450073 1254.316528 1251.341553 1250.985596 1249.181396 1245.550903 1242.888794 1242.94043 1240.942993 1237.86084 1239.251587 1240.969849 1237.061768 1229.657959 1224.11438 1221.184326 1220.223022 1222.79895 1226.727417 1228.627563 1227.465332 1225.046265 1222.210693 1219.575317 1216.034546 1215.739502 1216.974976 1219.846069 1235.960083 1240.227661 1239.133057 1234.86145 1225.746582 1217.842529 1214.092529 1209.700073 1206.851807 1218.540161 1242.001587 1245.77832 1241.929443 1238.779175 1235.977417 1232.949707 1230.185059 1227.838867 1224.982178 1222.125244 1218.026733 1211.046631 1205.372681 1208.080688 1210.104126 1213.79187 1218.162476 1222.844971 1228.861694 1234.973511 1242.390991 1245.172607 1246.035889 1252.959717 1252.921021 1258.26062 1265.67749 1274.882568 1282.720459 1293.973999 1306.634277 1314.192505 1317.352417 1325.13269 1329.113159 1332.5448 1333.87207 1334.070923 1336.89978 1340.96167 1342.189453 1340.926025 1339.746704 1340.125244 1339.93335 1339.847534 1352.796875 1366.429443 1379.537109 1389.582886 1397.62085 1403.781006 1411.813477 1415.029297 1418.120239 1420.600708 1423.122192 1424.800049 1426.344604 1429.526733 1437.291626 1445.520264 1454.5 1463.148071 1470.372681 +1660.056641 1671.765625 1680.170776 1687.820923 1697.412476 1706.068604 1690.196777 1671.175903 1676.331421 1680.340454 1678.486938 1671.42334 1680.150269 1690.77832 1696.727905 1699.185303 1700.821899 1701.883911 1702.082153 1701.026489 1698.039795 1695.69812 1694.899414 1692.422241 1692.166626 1692.71875 1693.189209 1694.659058 1696.745972 1697.585938 1696.568726 1686.694946 1672.439819 1656.547607 1641.831543 1629.036255 1618.722168 1610.276978 1602.350098 1596.533569 1588.557007 1593.904175 1599.452148 1601.754639 1604.841675 1603.819824 1598.589111 1591.099731 1586.415283 1587.376587 1584.71106 1573.991577 1564.184448 1556.094727 1547.773682 1538.536499 1530.062988 1521.129517 1511.541138 1502.14563 1491.362061 1485.146362 1486.760986 1490.644653 1495.786377 1500.114014 1499.92627 1503.037231 1504.177002 1492.115967 1485.432007 1484.594971 1475.311157 1475.517334 1482.229004 1488.733887 1497.828247 1512.151978 1525.210327 1550.092896 1565.309326 1579.919312 1593.913086 1606.188477 1617.264648 1624.305786 1627.160645 1630.311035 1634.346924 1634.395752 1637.499512 1639.966187 1633.022217 1619.74646 1592.094482 1569.208984 1547.378784 1524.403198 1509.004517 1491.703247 1486.694092 1477.81604 1467.593262 1457.184326 1449.874634 1438.407837 1429.026978 1424.718872 1424.49646 1416.148438 1410.685425 1402.761963 1395.977661 1388.154175 1376.629395 1384.668701 1392.920532 1399.079956 1400.171753 1402.348755 1424.311157 1443.360229 1453.342529 1467.704834 1490.079956 1509.0979 1525.919312 1550.976074 1552.082031 1548.227295 1542.915405 1537.98877 1533.301025 1534.622192 1539.788452 1545.241211 1559.36377 1563.802979 1559.171265 1548.97937 1540.22168 1533.775513 1527.257446 1519.843872 1521.850464 1526.526611 1531.433105 1535.026123 1540.143433 1556.279785 1565.407227 1575.376465 1588.460938 1605.408691 1619.427246 1635.349976 1646.288086 1651.264648 1648.72583 1635.855713 1622.256836 1608.81897 1598.359741 1587.731812 1580.956787 1575.87915 1564.970825 1553.198364 1544.802979 1537.582153 1529.272949 1518.992188 1503.372437 1495.382935 1494.056274 1492.210693 1494.890625 1500.165771 1506.677002 1513.17395 1514.683228 1513.811279 1507.258789 1494.186646 1478.822144 1463.427979 1454.659058 1457.079224 1470.009399 1490.365356 1506.176025 1510.584106 1513.681274 1512.178589 1526.979004 1522.70813 1511.810913 1508.28772 1510.168945 1513.647217 1513.241455 1512.223511 1507.848389 1504.518677 1501.729126 1502.28894 1501.72876 1502.450928 1503.204468 1502.462891 1501.286865 1499.318237 1495.024536 1489.464844 1485.33728 1484.069702 1482.863159 1482.087891 1479.887939 1477.172729 1470.230835 1462.470215 1459.968262 1455.912109 1453.581299 1450.046631 1444.94458 1440.473511 1433.432739 1423.844604 1414.777832 1412.820068 1416.923096 1421.633911 1426.000244 1429.926514 1432.587524 1431.702148 1433.222168 1438.733032 1441.006592 1432.579346 1423.026245 1415.122314 1415.540161 1415.381104 1410.827637 1408.97583 1407.686035 1406.640259 1404.245361 1406.726562 1414.974609 1417.260254 1415.638672 1407.261719 1398.505859 1390.33728 1373.715088 1375.133545 1378.683716 1386.130615 1393.695923 1400.63269 1413.529175 1422.870483 1430.735229 1439.776367 1454.992676 1466.454956 1475.315186 1484.565918 1493.115356 1507.786499 1525.634155 1536.558716 1543.20752 1549.260254 1557.240112 1561.96814 1562.686768 1563.440674 1568.996338 1575.581177 1582.081787 1588.692139 1598.146606 1603.682007 1610.271973 1610.346313 1606.474609 1604.045166 1600.90918 1596.162109 1585.114624 1576.945557 1571.323975 1567.296997 1563.263062 1555.776978 1551.080566 1545.987305 1535.988403 1525.853638 1508.146729 1498.655396 1491.826172 1486.753906 1485.302246 1477.264526 1472.267334 1466.537354 1462.615234 1464.597534 1471.356323 1478.793823 1483.864136 1486.189575 1496.23999 1497.110352 1492.284302 1485.9552 1475.74939 1467.984253 1461.676025 1458.270142 1460.472168 1463.033936 1465.301758 1466.208252 1466.440063 1464.751709 1462.932373 1459.239746 1456.52063 1455.00061 1453.088867 1451.684082 1451.075195 1452.553833 1452.111084 1455.170654 1455.734253 1455.115356 1453.822144 1452.2323 1447.12561 1442.516846 1437.680664 1427.117188 1412.645752 1407.620605 1406.764038 1410.552979 1411.626709 1409.337524 1415.765015 1425.554321 1429.75354 1428.117432 1415.789185 1415.489624 1424.346924 1421.461548 1415.658203 1417.13501 1417.362061 1417.261353 1415.370239 1416.19751 1415.175049 1403.528931 1388.673828 1385.18042 1383.608398 1376.828369 1371.310303 1359.414551 1345.378418 1330.924072 1327.171875 1328.421631 1333.300049 1331.668823 1332.299927 1337.663452 1338.761597 1334.695923 1313.686646 1313.893921 1314.969727 1317.455811 1315.513428 1333.997681 1344.773193 1353.177734 1366.98584 1380.975342 1382.518311 1377.026611 1371.143921 1366.607788 1369.810303 1370.881226 1371.669189 1379.800415 1385.083252 1386.483643 1383.98999 1375.146484 1363.265259 1351.248535 1343.182251 1338.49292 1339.531738 1351.695801 1357.521484 1353.5896 1354.075928 1360.286133 1365.427734 1369.334961 1371.430908 1373.724976 1377.310425 1379.13269 1380.055298 1380.404297 1381.0802 1382.45813 1384.327393 1385.900146 1386.998169 1387.769409 1388.598877 1390.006104 1391.489014 1391.361328 1380.617065 1373.693237 1363.715454 1361.353027 1356.765137 1353.073242 1347.127197 1342.653931 1335.142944 1328.702637 1325.213623 1320.334839 1319.073486 1317.953247 1317.319946 1328.814575 1326.779907 1318.164795 1308.501709 1300.97937 1298.136353 1295.291138 1294.229248 1294.564941 1296.59082 1303.774048 1331.95874 1351.701904 1361.768677 1374.536011 1373.324829 1366.533936 1360.416748 1350.814453 1351.5802 1342.97168 1326.920776 1309.533447 1280.648315 1262.171753 1264.345947 1282.511963 1301.44043 1313.916748 1303.823975 1289.14856 1267.136475 1246.660522 1259.376831 1280.686401 1285.595337 1258.333252 1242.10083 1248.055298 1267.387695 1283.980225 1293.960571 1295.252441 1289.317871 1276.403442 1261.708374 1246.919678 1236.332397 1235.437622 1243.01062 1254.721436 1273.526123 1279.682129 1272.406006 1263.28894 1254.850342 1249.776611 1246.521606 1247.369629 1246.242188 1242.964844 1239.072998 1235.565796 1230.242676 1226.193604 1223.041016 1221.955688 1221.578735 1222.504639 1223.390869 1224.453369 1226.756226 1230.470703 1235.177124 1235.820923 1233.334106 1230.061646 1226.810547 1224.185425 1221.744385 1218.884277 1215.335938 1214.660522 1229.291138 1237.058838 1235.317017 1233.654663 1224.369995 1217.235107 1212.46167 1209.289185 1209.469482 1221.498535 1242.942749 1258.623047 1249.978027 1242.852051 1239.608276 1235.532837 1231.581055 1228.226196 1224.08667 1219.459717 1215.904053 1211.63916 1207.224731 1207.572876 1209.990479 1212.191772 1215.717163 1219.7146 1224.093628 1228.135498 1232.377808 1235.218384 1235.849731 1240.050781 1240.806885 1246.99292 1254.407715 1265.22876 1275.827026 1288.167847 1298.936523 1312.246704 1324.039429 1327.724609 1330.372437 1333.762329 1336.853271 1338.859375 1340.535767 1343.672363 1346.155029 1347.362305 1348.680298 1350.490967 1353.20752 1353.029541 1350.742676 1359.173828 1369.966187 1379.825195 1394.223633 1406.498291 1415.681641 1420.902344 1426.034912 1430.066528 1433.387695 1437.52832 1441.043579 1444.424927 1448.287598 1452.165161 1458.235107 1465.363525 1473.110596 +1657.373779 1669.150391 1682.978516 1693.324219 1706.677124 1711.222778 1687.059082 1682.74353 1685.801514 1686.976929 1686.046021 1683.59082 1682.67749 1694.696777 1698.156738 1700.519531 1702.602783 1703.953857 1704.475586 1703.502441 1701.381714 1699.528931 1697.96875 1694.820557 1695.549805 1696.32019 1696.616699 1697.549072 1698.150879 1698.174927 1696.867798 1687.315308 1671.05542 1655.30603 1642.797241 1630.60376 1613.761719 1605.562988 1597.217773 1589.979858 1582.916504 1583.026733 1588.422485 1591.126953 1593.543457 1593.352661 1588.940796 1582.772583 1576.833984 1576.277588 1571.1427 1559.615112 1552.47876 1544.938721 1536.855957 1527.430176 1519.401489 1512.349731 1503.600464 1497.427612 1487.901855 1496.262695 1501.331299 1504.950928 1507.356323 1508.347412 1508.979004 1510.145508 1505.886963 1497.445679 1492.398193 1494.209473 1488.164917 1472.699463 1479.214844 1486.650146 1494.192749 1505.075073 1518.42395 1534.874023 1556.072021 1567.025269 1581.822754 1594.559082 1603.520874 1611.155884 1612.434326 1617.177368 1621.221191 1622.048584 1629.087524 1637.362427 1633.379395 1614.381348 1589.550049 1564.308472 1541.366943 1521.708008 1505.210571 1489.446167 1486.172241 1481.248657 1477.457764 1467.271973 1454.450195 1449.286011 1440.974854 1439.732422 1429.980469 1420.134644 1410.912476 1400.02356 1391.18103 1382.170288 1380.620117 1391.758667 1400.929565 1406.962402 1409.00061 1418.469971 1436.630981 1450.417847 1465.389282 1480.04126 1493.234863 1512.797607 1529.014038 1554.357056 1560.70166 1556.55188 1550.128296 1545.915405 1540.587158 1536.852783 1542.350952 1548.522583 1558.14856 1563.868896 1561.827515 1552.2229 1543.98938 1536.987305 1529.100464 1522.091675 1523.927002 1529.796387 1534.64624 1535.315918 1536.096924 1552.151489 1562.559326 1570.697754 1585.63855 1604.149658 1617.917236 1633.354858 1646.168579 1655.70105 1648.688843 1637.282471 1624.648682 1611.838379 1596.526855 1585.169067 1576.319336 1568.103027 1555.838867 1547.289307 1538.878418 1527.696289 1520.598145 1512.364258 1499.210205 1496.7948 1503.660156 1510.950317 1511.854248 1513.714722 1518.806885 1520.377808 1519.013672 1518.087158 1497.885376 1486.21936 1470.969849 1459.473999 1453.599121 1460.7854 1478.986328 1499.673706 1513.493286 1525.422363 1528.882324 1526.838623 1533.537109 1530.388306 1524.533569 1524.11499 1521.596558 1526.755005 1527.582397 1524.956055 1519.494019 1512.783569 1508.457886 1506.865479 1506.437256 1505.434814 1503.584961 1500.700439 1497.712158 1493.93689 1488.117188 1485.663574 1481.702759 1477.105713 1475.467041 1473.783569 1472.147095 1470.33313 1465.961304 1461.667236 1458.008911 1455.508057 1452.015137 1444.750854 1439.241333 1436.40918 1430.473999 1422.062134 1413.609619 1417.601074 1422.851929 1428.295776 1433.233398 1437.934814 1440.432251 1439.630859 1439.414673 1440.647583 1435.946289 1427.022339 1423.879028 1421.974854 1420.476562 1419.70105 1416.68335 1416.647827 1415.457153 1411.441528 1410.262207 1412.847046 1417.992676 1419.341064 1416.902344 1409.053589 1404.227051 1401.46582 1376.052734 1375.371826 1377.815918 1387.381348 1396.345581 1411.467529 1427.967041 1436.121948 1443.598511 1452.192993 1454.80957 1461.088135 1462.741943 1474.343506 1490.474854 1509.068359 1524.942993 1534.135376 1539.555786 1542.550781 1547.427734 1550.553467 1550.663086 1551.95105 1563.878784 1574.762451 1582.366821 1592.719116 1601.802246 1608.394409 1616.846802 1621.234375 1611.973022 1606.334595 1600.156006 1593.624878 1586.508789 1578.622437 1572.565796 1566.422363 1559.777588 1547.137451 1542.357422 1538.785767 1529.79895 1515.925049 1501.335205 1493.102417 1486.630493 1486.497681 1485.36377 1478.980957 1478.24353 1478.558716 1475.866699 1477.609497 1485.170654 1493.227173 1498.07959 1502.116455 1502.481079 1494.832642 1487.236572 1478.073486 1469.910034 1462.512329 1462.010132 1464.418335 1466.897583 1469.065552 1471.571045 1472.659546 1472.446167 1471.529785 1470.092773 1467.901367 1465.214233 1461.85376 1458.939087 1457.266724 1456.762207 1457.059326 1457.035889 1457.084229 1456.142334 1454.621948 1453.372925 1451.815674 1446.804199 1441.261719 1435.069458 1422.056641 1412.777832 1412.756714 1412.230469 1416.65564 1419.237305 1417.976807 1422.249268 1429.533203 1432.470581 1431.944336 1428.520142 1426.723755 1428.765991 1425.752808 1420.505249 1418.322266 1417.864502 1413.90918 1404.237793 1407.685547 1404.939087 1394.935791 1386.749512 1377.688477 1373.50061 1371.716797 1368.972412 1359.782104 1343.347534 1327.796509 1342.839233 1350.771729 1350.115479 1341.87793 1345.795166 1349.367798 1348.272217 1344.053955 1334.060669 1330.870117 1333.425415 1331.694336 1323.376709 1330.106567 1346.164917 1361.302368 1370.749878 1374.559937 1381.193604 1380.047974 1378.158813 1376.777466 1379.813721 1379.9375 1378.546997 1386.537598 1391.953613 1392.091797 1388.16394 1379.456787 1367.337524 1361.101562 1354.000488 1340.302124 1339.506958 1340.418335 1346.190063 1349.217407 1350.694702 1352.255615 1353.724609 1357.531372 1367.051025 1367.820312 1375.442749 1379.782715 1380.195923 1379.46936 1380.096558 1381.30603 1384.496704 1388.650024 1389.657227 1389.752686 1389.468384 1389.768311 1391.027954 1388.361694 1370.064575 1361.229614 1353.224121 1344.358398 1343.625366 1342.222046 1340.163086 1333.567505 1328.497803 1327.961182 1326.395142 1324.47876 1322.593018 1320.749023 1317.822998 1320.695435 1330.983154 1332.100342 1320.285034 1304.542358 1296.183838 1292.354492 1292.266357 1291.154663 1292.435913 1300.306274 1321.930542 1337.046875 1348.760254 1356.178955 1353.4021 1357.935913 1350.763672 1333.398682 1327.263184 1315.947876 1308.271606 1292.77124 1272.381226 1261.223633 1265.256714 1287.263916 1312.126709 1326.0448 1321.03064 1301.606201 1282.027344 1259.393799 1245.008545 1258.105591 1262.856445 1245.988037 1241.936157 1261.699219 1282.762939 1300.247314 1310.436401 1311.660522 1305.564453 1293.97522 1276.119263 1257.707397 1242.365112 1236.705078 1232.575562 1239.330322 1256.952515 1268.417847 1271.504272 1263.8479 1253.417847 1245.425537 1240.339111 1243.628418 1242.424438 1238.795532 1235.708984 1232.78186 1226.388794 1224.910522 1227.137695 1228.107788 1227.901855 1227.704834 1229.66272 1230.793091 1232.137085 1240.108398 1245.740356 1244.34668 1240.26416 1234.982666 1230.744141 1228.669067 1226.714722 1224.138794 1220.777832 1214.138428 1217.435791 1227.844116 1231.586426 1228.338989 1221.067139 1215.10498 1210.98291 1208.599365 1213.500732 1225.249512 1246.332275 1261.983154 1260.248535 1250.766357 1243.547363 1238.562378 1233.228394 1229.116455 1224.490845 1219.797852 1216.8573 1215.174438 1212.159058 1209.223999 1208.802246 1210.57373 1212.858276 1216.359497 1219.062378 1220.264526 1222.418579 1224.839966 1226.919067 1230.003174 1230.977295 1241.476929 1255.757812 1264.86145 1274.91687 1287.012573 1297.994995 1315.051758 1330.808472 1331.502441 1332.553345 1334.869141 1338.843384 1341.843628 1342.953979 1345.254272 1348.655396 1351.569214 1355.736206 1363.392334 1368.29541 1366.813599 1363.62793 1361.347656 1369.414307 1383.871826 1397.499146 1407.655518 1416.903564 1425.234497 1430.509399 1434.714966 1439.46875 1444.409668 1449.541992 1454.196167 1457.307129 1460.624268 1464.764526 1472.34375 1476.350464 +1663.277588 1671.746948 1684.937866 1698.704956 1710.518188 1703.140015 1688.77002 1688.203247 1690.599243 1692.422119 1692.185791 1690.565674 1689.052246 1695.805664 1699.502686 1701.967529 1704.189209 1705.9198 1706.853394 1706.491821 1704.831665 1702.959961 1701.493164 1699.501343 1699.700073 1699.621094 1699.385864 1699.16333 1698.853027 1698.345703 1695.890015 1686.02478 1669.104736 1654.590942 1643.265381 1632.300171 1620.098267 1607.928833 1598.28064 1586.540039 1579.025757 1573.179321 1576.858887 1580.532959 1581.931152 1580.053833 1576.540405 1574.312622 1563.909668 1562.851807 1558.94104 1550.525879 1544.25061 1537.785278 1529.780518 1519.664429 1508.315552 1499.389771 1495.05896 1492.057129 1505.17334 1512.222534 1515.261719 1517.426636 1519.488037 1519.827881 1517.946777 1515.171631 1507.139648 1499.961914 1506.787476 1505.55603 1500.600586 1482.198242 1476.433472 1484.489746 1491.85376 1499.556274 1510.587646 1522.227905 1536.966919 1554.574463 1566.070679 1577.182251 1584.877441 1590.695679 1595.809692 1599.187012 1601.533325 1608.356079 1621.970581 1633.409302 1628.142822 1604.986938 1579.343018 1548.230713 1529.052979 1518.008057 1512.746826 1510.560791 1506.199707 1497.476562 1488.3479 1478.051514 1464.01709 1464.905029 1460.07666 1450.019287 1434.583862 1422.75708 1412.403076 1398.711914 1389.744385 1380.88623 1385.712646 1395.862915 1408.936523 1415.529907 1412.232544 1425.539062 1441.099121 1453.527466 1477.303833 1492.844238 1510.887207 1524.031982 1542.760498 1563.538696 1575.440796 1568.125 1558.758301 1554.733643 1548.494263 1543.75354 1545.025146 1550.44397 1557.039551 1562.818848 1562.740112 1554.612183 1545.697266 1538.262939 1529.957031 1523.209351 1526.143188 1535.007446 1539.269165 1539.491943 1540.038086 1548.565186 1557.519043 1570.646362 1584.398438 1601.501709 1613.879639 1627.636719 1644.25415 1662.179688 1648.741089 1638.919678 1626.884277 1613.150757 1596.44043 1584.798218 1574.625366 1566.682495 1555.976929 1545.186523 1534.64917 1526.277588 1515.782837 1505.477661 1497.225586 1504.621582 1517.896973 1523.963989 1525.416748 1532.009277 1535.54895 1525.530518 1521.408447 1513.248779 1496.787598 1484.489502 1468.457031 1456.257446 1457.867188 1467.432739 1483.468506 1496.653076 1510.384888 1519.166504 1527.403931 1537.504517 1543.889893 1541.068115 1537.815796 1538.904419 1534.497314 1538.469238 1541.58606 1538.057739 1530.224976 1518.295898 1510.726074 1511.453003 1511.598022 1509.219727 1505.863159 1502.538818 1499.016113 1493.867188 1489.347046 1486.158691 1481.24707 1475.978638 1473.782593 1470.435669 1465.814941 1465.137573 1462.472168 1459.266235 1456.197754 1454.015869 1450.877686 1439.451294 1435.344482 1431.844849 1427.308716 1420.00293 1415.108154 1420.522217 1427.120361 1433.549683 1439.851685 1443.772461 1445.11084 1444.952393 1444.438721 1442.547363 1440.227905 1434.49939 1429.677002 1426.572754 1424.876709 1424.403687 1423.384033 1422.069214 1419.174683 1414.844727 1412.670044 1415.564453 1421.499146 1423.199463 1419.454956 1413.539429 1414.566895 1406.449707 1382.146851 1376.193481 1378.098389 1386.444092 1396.228271 1411.501221 1418.939941 1424.910767 1437.418579 1443.005737 1446.447388 1449.05249 1458.796265 1473.130493 1490.72937 1506.864502 1519.422974 1526.356201 1529.57312 1531.945923 1533.515259 1534.762573 1536.662842 1548.730347 1562.091187 1571.065308 1578.627808 1588.789795 1598.868896 1605.934204 1615.533569 1624.368286 1614.800903 1602.719482 1594.848511 1587.50061 1583.253662 1577.956543 1571.801636 1564.625122 1555.217407 1543.328857 1535.001465 1529.757202 1519.615112 1502.085205 1497.496216 1492.473511 1491.45874 1491.232422 1489.475342 1490.238647 1490.393311 1488.863525 1488.290283 1488.948486 1499.557007 1505.240845 1505.014526 1501.7146 1494.554932 1486.079102 1478.590698 1468.633789 1465.665771 1466.285767 1468.321045 1471.554932 1472.994507 1474.0979 1477.817505 1479.262817 1479.112305 1478.636719 1476.404785 1474.361084 1470.751953 1466.737671 1462.572021 1462.099731 1461.941162 1461.284912 1460.35498 1459.276367 1455.898315 1451.713745 1450.793335 1446.327148 1440.969482 1436.729736 1428.50354 1424.96228 1419.773682 1416.969727 1414.033936 1420.151611 1425.263062 1430.2677 1427.361328 1433.222046 1436.284302 1436.078857 1435.354492 1434.078979 1430.951904 1424.398926 1415.493408 1414.230957 1414.010986 1407.653687 1397.474976 1397.810913 1396.844727 1386.56958 1380.509399 1373.12915 1365.348145 1365.303101 1363.903564 1354.159912 1341.781616 1330.816162 1342.426514 1356.932861 1356.433716 1351.780396 1353.479126 1356.583252 1355.776245 1353.988892 1351.457764 1346.919922 1343.858643 1337.691528 1328.247925 1327.185303 1343.921265 1349.058716 1352.641846 1358.314453 1374.677734 1379.21228 1380.831421 1383.172729 1387.514282 1392.865234 1390.286499 1389.920044 1392.989868 1393.394287 1391.343628 1386.234741 1375.960327 1367.405762 1357.577393 1347.714355 1341.789062 1340.576172 1341.439087 1351.647095 1354.781738 1356.880859 1357.509766 1355.764038 1355.314575 1363.73938 1365.424561 1369.223755 1371.384033 1376.66333 1378.080322 1378.281006 1381.557739 1390.694336 1392.256348 1392.016113 1391.596558 1391.412109 1391.347412 1379.383423 1359.683838 1352.821899 1354.234741 1346.496094 1343.218994 1340.39917 1339.249512 1337.627686 1335.766968 1333.024292 1330.359375 1327.938354 1326.674194 1325.604614 1321.926392 1317.404419 1321.00708 1324.085938 1319.62207 1305.164062 1295.541504 1294.762207 1299.749512 1296.498291 1291.521606 1295.281128 1313.332275 1327.896851 1333.730225 1336.710571 1339.793701 1352.825806 1337.283203 1311.102539 1296.830322 1283.656738 1276.275391 1269.833496 1265.213379 1263.045654 1266.419434 1290.625122 1319.286865 1336.116089 1333.496826 1315.494263 1293.098145 1270.657104 1248.433228 1243.039307 1242.968018 1242.030029 1249.574585 1273.383545 1299.177002 1315.856445 1325.400757 1325.666992 1317.117065 1305.109863 1288.339478 1270.2229 1256.264404 1241.970947 1237.283813 1233.497925 1232.449097 1254.16748 1264.034302 1260.045654 1247.160034 1231.06543 1228.906006 1229.009033 1231.836182 1233.467163 1232.636719 1228.462158 1224.660767 1230.307861 1233.476807 1235.012695 1234.026489 1233.134521 1236.342529 1239.52478 1245.327759 1252.72229 1256.026855 1256.770996 1248.751221 1241.160767 1237.424927 1234.648438 1231.438232 1229.55603 1227.633667 1219.164551 1212.551025 1213.842651 1216.41394 1217.255615 1214.489258 1210.782227 1209.205322 1211.744263 1217.364868 1234.134888 1254.279907 1269.945923 1269.036255 1259.549805 1249.755737 1242.145142 1235.826538 1231.157227 1228.140137 1222.287109 1218.608398 1219.420166 1219.246582 1217.339966 1213.763672 1211.866699 1211.700806 1212.584229 1214.97522 1216.418823 1217.22998 1218.052612 1220.288208 1224.391968 1230.870972 1240.207764 1252.694702 1262.295776 1271.627075 1280.80127 1294.227905 1308.256104 1319.71521 1326.795776 1328.501709 1333.983032 1338.81897 1342.520386 1344.574341 1346.709961 1350.060791 1353.987549 1360.968994 1367.854248 1371.865112 1374.546509 1376.648193 1376.515869 1374.733032 1381.36792 1394.245239 1402.921631 1412.872925 1423.577881 1430.939087 1437.046387 1442.643921 1448.641357 1453.945435 1458.938354 1463.934082 1467.223999 1473.662476 1477.860107 1478.700562 +1666.857544 1676.813843 1688.988647 1703.972168 1711.096924 1699.006592 1692.927979 1692.573364 1695.381714 1698.494263 1698.844482 1697.588501 1696.165894 1697.720581 1701.212769 1703.719482 1705.764771 1707.744019 1708.404907 1708.356812 1707.080566 1705.921509 1706.29187 1705.30835 1704.416138 1703.079468 1701.65686 1700.310181 1699.236938 1697.917969 1693.305664 1681.648438 1665.703125 1651.99353 1640.138794 1630.257935 1620.497192 1609.585205 1599.922729 1589.093506 1579.218506 1573.205933 1565.675415 1563.964478 1567.404785 1566.0448 1561.90625 1559.391357 1554.528687 1550.260742 1547.481689 1542.285889 1537.703857 1529.579346 1521.325195 1507.786133 1497.780273 1498.644775 1507.245483 1513.722656 1522.65686 1526.487183 1531.364136 1534.680298 1537.494873 1537.601074 1526.256348 1514.527588 1510.861572 1518.827759 1521.476562 1516.586182 1509.765869 1500.628906 1482.161499 1482.183472 1490.264893 1495.41626 1501.999512 1510.998047 1520.611816 1530.148438 1544.661621 1555.080811 1566.411377 1571.170166 1574.313965 1579.401489 1593.36438 1611.024536 1626.846558 1633.319946 1621.302002 1594.726685 1570.613159 1555.978394 1542.145508 1537.852539 1535.644287 1528.042236 1522.150757 1513.501343 1496.678223 1482.272217 1478.622925 1478.125977 1467.558716 1452.145996 1434.852783 1422.686523 1411.857544 1399.133423 1388.832153 1380.359741 1388.768433 1398.357788 1417.144287 1418.320801 1413.987915 1427.85791 1442.235596 1458.414185 1484.545776 1501.950684 1517.17981 1531.61792 1553.210449 1571.479736 1584.393311 1581.200928 1574.1073 1566.113281 1556.432007 1547.00061 1549.534302 1552.214111 1557.09375 1561.019775 1563.360596 1558.7323 1546.254517 1535.855225 1531.383423 1523.821045 1530.445068 1539.738892 1545.098267 1546.313354 1545.125244 1548.383545 1557.350098 1569.938843 1583.962769 1597.640381 1608.18396 1619.125977 1636.159424 1648.460571 1644.929565 1638.197998 1627.619385 1614.936035 1601.452637 1591.361694 1583.010132 1575.689331 1564.172974 1551.265015 1538.427368 1531.053955 1523.98291 1507.994385 1500.702393 1521.934692 1537.485107 1541.579102 1542.70813 1544.185303 1542.049316 1532.19043 1520.119507 1507.85144 1493.368164 1482.719238 1468.244751 1456.00708 1463.844727 1473.213989 1480.132935 1487.576904 1497.917114 1502.014404 1512.865234 1532.196411 1542.638428 1542.96228 1546.636475 1550.869019 1552.140137 1551.564575 1552.314209 1546.57312 1535.934448 1524.045898 1520.661255 1519.010864 1516.768066 1512.675537 1508.740845 1504.719604 1500.634521 1497.042969 1493.863037 1489.689941 1485.265625 1480.238159 1476.366333 1471.103149 1464.17688 1462.296509 1460.495361 1456.470581 1452.939941 1451.449951 1444.880127 1437.470947 1432.483398 1428.314087 1424.213745 1419.608154 1417.444946 1422.839111 1429.588745 1437.162231 1443.984131 1449.074829 1450.406738 1450.23291 1448.420166 1447.06604 1444.499146 1441.054199 1436.022339 1433.027222 1431.272705 1430.364014 1429.628052 1427.997314 1424.5625 1417.964111 1417.432373 1423.265015 1427.522095 1427.782593 1424.480957 1419.12207 1418.074829 1408.059204 1389.292603 1376.512451 1377.064697 1382.31604 1390.017822 1401.380859 1410.099243 1419.327393 1425.561646 1429.063354 1431.798706 1439.753418 1451.517822 1468.043091 1484.46814 1497.104858 1509.576538 1513.296387 1515.360474 1517.805786 1520.941895 1524.561401 1531.540771 1542.69165 1554.467163 1561.861816 1569.40332 1577.611572 1588.180908 1598.517212 1612.777222 1620.472046 1610.421875 1601.446411 1591.831543 1583.00415 1575.484375 1572.568481 1566.438721 1557.02356 1546.033569 1537.92041 1531.536499 1526.807617 1521.499634 1513.083252 1506.753174 1503.791626 1503.149902 1504.996094 1505.065918 1506.221924 1504.955566 1503.749512 1505.185669 1507.34082 1512.803589 1513.456787 1505.7229 1495.762085 1485.795288 1478.255127 1470.194702 1469.207642 1471.00769 1472.552612 1474.766968 1479.495239 1480.30188 1481.398926 1484.967651 1485.495239 1487.322632 1488.741577 1488.790527 1482.446289 1475.908081 1473.266968 1472.30481 1469.970459 1468.017212 1465.668945 1463.424194 1462.057129 1456.716309 1451.220093 1449.264648 1441.725342 1438.150757 1436.069824 1433.604736 1430.419067 1426.95813 1424.917358 1423.026367 1423.349121 1431.079712 1440.887817 1441.887207 1440.519043 1440.486084 1440.34314 1440.609375 1439.140259 1432.333984 1423.686523 1410.707886 1402.53833 1404.041016 1400.724609 1391.671387 1386.374756 1386.020264 1379.880859 1368.879517 1362.486084 1353.324951 1352.318359 1351.468506 1345.480469 1337.839355 1331.694702 1343.978271 1362.62146 1362.32666 1354.639648 1356.203369 1359.912109 1360.384399 1359.733276 1358.428955 1355.805664 1350.845459 1344.42041 1332.031616 1325.821655 1333.320557 1342.800781 1344.580688 1349.286865 1362.328979 1370.474243 1380.572266 1383.585938 1387.337646 1392.216919 1391.8302 1386.0177 1389.562744 1393.594238 1393.336914 1392.253784 1383.233643 1370.731079 1357.850098 1349.334473 1343.018921 1344.161865 1351.512451 1357.85083 1363.557129 1367.657715 1370.241089 1371.838989 1370.627686 1368.30896 1366.779175 1365.153687 1368.66687 1375.123047 1378.594604 1380.671509 1385.515259 1390.640991 1393.599487 1394.751587 1394.009888 1392.79834 1384.228882 1367.005859 1370.495972 1372.072998 1368.244507 1359.816895 1351.686035 1346.144897 1347.114502 1347.242676 1345.528198 1341.44751 1335.629272 1331.874146 1331.37915 1330.706543 1328.755005 1323.468018 1316.946411 1317.638428 1307.060669 1301.718506 1295.391357 1301.994629 1308.288452 1302.574219 1296.472778 1288.907837 1301.323608 1314.161377 1318.420044 1321.140381 1338.12793 1327.141968 1308.306641 1289.252075 1282.455688 1274.210327 1267.306519 1267.277588 1265.303101 1268.295044 1277.549194 1301.950684 1327.786987 1345.526367 1343.912231 1326.066895 1301.335571 1281.558594 1263.987549 1246.6073 1243.197754 1255.001465 1263.205444 1283.014771 1313.503296 1327.555298 1338.949097 1341.666504 1329.996216 1315.844482 1306.29126 1285.978394 1262.632935 1248.616943 1243.001221 1237.83313 1232.362183 1231.647583 1243.218018 1240.381836 1228.704956 1229.619263 1231.697754 1231.293823 1228.061523 1226.534058 1226.760986 1225.706665 1229.961914 1239.521118 1243.568604 1243.024658 1240.918823 1242.134766 1243.562256 1248.351562 1255.829346 1262.997681 1268.873047 1269.530273 1261.334229 1250.192871 1246.678467 1243.234741 1239.615967 1238.179565 1236.708374 1231.233154 1217.890869 1213.821411 1212.479614 1211.467896 1211.134277 1211.462891 1213.266113 1217.796875 1226.295776 1240.112549 1260.498535 1273.426392 1274.081421 1265.920166 1256.998657 1246.562622 1240.862183 1236.674072 1233.076416 1228.171021 1226.634766 1233.779053 1234.900757 1228.544678 1222.006714 1220.550781 1220.016968 1216.382202 1214.059692 1214.66748 1216.370117 1218.446167 1218.571289 1220.124756 1229.009888 1236.948486 1244.524902 1256.697266 1270.24292 1278.964966 1289.831665 1298.175781 1307.543823 1317.923584 1330.569336 1334.5354 1340.617188 1343.178955 1345.086914 1347.224243 1350.3927 1354.240967 1362.000732 1368.925171 1373.820923 1378.567139 1383.308105 1387.187256 1386.09668 1385.432983 1388.872314 1399.59729 1405.32605 1416.706055 1428.031738 1436.772461 1442.781372 1449.208374 1454.466553 1460.338013 1465.421509 1468.376465 1473.306519 1477.026245 1478.461426 +1668.978516 1681.087891 1694.594482 1709.417603 1708.882202 1698.469727 1693.431641 1695.084351 1699.7677 1706.343018 1706.579712 1704.721802 1703.293823 1702.510498 1703.321289 1705.110596 1707.497559 1708.946655 1709.476318 1709.39624 1708.72583 1708.373535 1708.193481 1708.317139 1707.303223 1705.463013 1702.955078 1700.574829 1698.962891 1697.19458 1685.986328 1673.019043 1661.779297 1646.981689 1635.273804 1624.260376 1615.606201 1606.345703 1598.616211 1587.906982 1574.109131 1568.683838 1564.12915 1557.543945 1554.328857 1550.87439 1550.881714 1550.521973 1547.006226 1539.31543 1536.346069 1532.079834 1526.164673 1517.714844 1507.892212 1501.082153 1509.954102 1518.908691 1528.161743 1536.237183 1539.349487 1543.227661 1548.891357 1550.957275 1548.081055 1543.565186 1531.567627 1511.380737 1524.68396 1532.964355 1534.952271 1530.220093 1519.170898 1505.530151 1494.195557 1481.198975 1486.412842 1491.023315 1495.20752 1501.136353 1508.224976 1514.28186 1520.504028 1530.654785 1539.881714 1552.740601 1561.600098 1574.020264 1594.146484 1617.050781 1633.195435 1640.589355 1624.538208 1607.443848 1589.139526 1572.255371 1555.536377 1551.460815 1549.714478 1543.379883 1533.38916 1521.436768 1505.600952 1496.527344 1488.922729 1480.645508 1467.645996 1450.749146 1433.281616 1421.786133 1411.577026 1400.557495 1387.514893 1381.734741 1390.687134 1402.712524 1417.893066 1420.703613 1420.694458 1424.414307 1438.731323 1460.439575 1487.468262 1504.790649 1518.437622 1533.852295 1556.608032 1574.437256 1593.455933 1592.138916 1583.566528 1576.662231 1563.355957 1554.93396 1554.412842 1557.264526 1558.759399 1562.856812 1566.011108 1558.809937 1547.330933 1540.413452 1537.762573 1529.224243 1534.491211 1546.460693 1552.215454 1556.719604 1553.171387 1547.036377 1556.147339 1567.343018 1579.126587 1591.519409 1601.250854 1608.109009 1624.412354 1632.517944 1634.312744 1633.951172 1630.443359 1621.880737 1612.52063 1599.0979 1588.622925 1577.340942 1566.935913 1553.819458 1543.325073 1535.983765 1526.826538 1513.767944 1518.766113 1538.131958 1546.845215 1551.487793 1554.405151 1552.005249 1543.376831 1525.328613 1511.775879 1499.703247 1487.240845 1479.770264 1462.965576 1457.852295 1463.532104 1477.94812 1484.939209 1490.776367 1495.151489 1500.688965 1517.046753 1528.444336 1531.962036 1532.307983 1533.287109 1541.815308 1549.795654 1550.888794 1551.94873 1545.94397 1536.212402 1533.500488 1535.267212 1529.732056 1523.186646 1516.721191 1511.017944 1508.821655 1505.234375 1502.019897 1499.221558 1494.610229 1488.522949 1483.180054 1478.60498 1473.489624 1467.931885 1464.722168 1461.381958 1455.610474 1450.092773 1444.040649 1438.121704 1434.208618 1429.527344 1425.914307 1424.656128 1424.252075 1420.502319 1423.807983 1430.904541 1439.512939 1448.592163 1454.32666 1456.55249 1456.140503 1452.839844 1451.240845 1449.467407 1446.177368 1441.36792 1440.9646 1438.471558 1437.281006 1438.141724 1436.622192 1432.33252 1428.185181 1428.79834 1432.286499 1433.197876 1431.847046 1428.811646 1423.671875 1416.835083 1405.846924 1390.154175 1383.910767 1377.435425 1381.401123 1390.454346 1399.66748 1404.547607 1413.348755 1415.875 1424.654419 1424.181519 1432.830078 1443.474609 1458.027466 1474.203125 1483.036987 1490.483398 1499.845215 1502.602539 1504.13147 1506.84668 1512.672607 1521.542603 1532.333252 1544.107666 1552.459717 1557.233398 1568.075928 1583.109253 1599.430664 1611.796875 1613.050293 1608.25293 1601.658081 1592.835938 1583.152954 1572.952393 1558.095215 1547.317749 1543.494141 1539.412598 1535.794312 1535.036133 1533.246704 1528.422363 1520.312134 1513.966675 1517.03186 1518.798706 1519.330688 1518.774414 1519.168945 1519.072266 1519.067993 1518.453613 1517.722778 1516.269653 1512.585693 1503.269165 1491.62146 1479.317993 1472.235962 1471.378906 1474.477051 1477.922119 1480.001831 1484.377441 1490.255127 1490.793701 1492.17688 1495.195435 1496.620239 1496.904663 1496.543579 1494.166992 1487.841675 1482.271973 1481.430054 1481.941406 1479.812378 1477.270142 1474.571777 1470.609009 1466.783081 1463.082397 1458.108154 1453.973145 1449.323975 1443.606567 1441.03894 1438.67688 1434.805542 1432.277222 1430.682007 1429.658813 1426.956787 1434.960327 1439.645386 1433.846191 1433.149658 1435.280151 1438.049683 1437.233276 1431.89502 1425.060913 1417.420898 1407.500977 1398.671143 1389.560059 1391.948486 1385.077026 1375.16394 1373.747192 1368.3302 1359.900269 1350.491211 1343.180298 1339.741089 1337.140625 1334.647827 1333.61853 1341.283936 1361.156616 1368.425293 1368.380371 1365.613647 1361.890259 1363.842163 1365.139282 1365.09729 1363.208496 1360.507202 1357.021851 1351.508301 1340.451538 1328.439819 1326.851196 1327.310181 1330.447876 1343.362183 1348.573486 1356.968384 1371.203857 1378.000977 1378.164795 1381.984619 1382.850586 1376.585327 1380.68811 1391.140137 1391.705688 1388.030396 1381.524902 1367.630371 1356.177856 1350.401611 1349.050171 1349.076416 1353.67395 1359.959473 1366.763672 1373.778442 1379.132202 1380.859619 1381.086304 1377.952515 1373.183472 1372.372681 1375.840454 1379.370239 1386.466797 1390.648071 1391.643311 1390.89209 1396.006958 1398.589722 1395.404419 1385.713623 1376.477051 1381.633545 1385.37439 1380.705078 1373.278198 1363.667114 1352.715088 1356.200928 1358.772461 1357.346436 1352.645508 1343.772827 1338.75647 1336.965942 1336.061157 1334.809937 1333.22522 1330.577393 1322.900879 1314.851685 1312.734741 1303.650879 1294.562866 1303.865845 1317.458374 1305.665283 1298.319458 1289.861572 1291.465088 1297.867676 1299.583374 1301.428223 1303.491455 1290.539307 1281.40564 1281.091797 1278.294067 1275.995728 1274.882202 1275.303589 1277.296143 1285.76416 1298.753052 1313.401123 1333.232178 1353.122559 1352.763916 1332.836792 1309.624023 1294.279175 1278.030762 1257.16687 1261.560913 1274.594238 1282.808472 1293.24939 1321.651611 1340.763794 1348.4375 1352.463867 1344.500732 1330.978882 1312.442749 1292.574463 1270.35791 1267.866333 1258.850098 1243.041138 1235.621948 1230.942505 1229.957397 1229.824829 1231.683838 1235.874512 1238.06311 1237.214233 1232.56311 1230.220581 1231.188721 1232.488647 1237.787598 1248.224854 1250.491455 1249.76062 1249.113892 1250.686768 1252.460693 1256.07605 1264.418701 1273.163574 1281.245972 1281.774048 1272.674438 1260.550293 1254.321411 1249.326538 1247.668457 1246.41687 1244.286499 1238.479126 1230.89856 1217.956543 1215.468506 1215.267456 1215.195557 1215.799438 1218.080933 1227.380859 1238.633179 1249.691406 1264.040771 1282.006348 1282.892212 1273.718384 1263.914307 1255.222046 1246.963379 1243.337646 1239.71936 1234.463501 1232.084961 1246.192749 1247.266113 1238.633911 1230.676147 1228.395386 1227.158081 1227.065796 1225.367188 1222.779785 1223.779785 1225.703735 1223.393921 1219.333984 1224.054688 1233.529297 1245.799072 1255.164673 1264.238281 1270.66748 1279.397339 1291.172852 1303.679688 1318.12854 1330.396362 1333.456909 1341.166138 1343.626343 1344.812012 1345.937134 1348.139771 1351.400024 1357.762939 1366.310303 1372.243286 1379.753174 1388.444336 1394.789673 1403.377441 1399.345215 1402.210327 1406.381592 1412.44104 1420.371216 1428.411987 1434.567505 1438.604126 1444.7052 1450.314575 1455.984009 1461.305908 1464.710571 1468.038086 1472.327026 1475.7323 +1671.925781 1687.01709 1700.716553 1710.449463 1707.599121 1697.182861 1693.414185 1696.562622 1703.294312 1708.461182 1709.014526 1708.515503 1707.432739 1705.754883 1704.888184 1705.735229 1708.376221 1709.755005 1710.317627 1710.501709 1710.264771 1709.759644 1709.439941 1708.974976 1708.176147 1705.700439 1702.751099 1699.760132 1696.951782 1689.948364 1676.797974 1664.942993 1652.830322 1642.465454 1630.730469 1618.849731 1609.23877 1600.977417 1593.30481 1585.189941 1584.178101 1582.148438 1577.747559 1569.020996 1562.385986 1550.246582 1545.584961 1537.98645 1532.527954 1531.349731 1524.533325 1521.999878 1519.513672 1511.849365 1507.541626 1517.097168 1527.503662 1541.08374 1550.957397 1554.300903 1554.657959 1560.058716 1565.644531 1562.924072 1555.19397 1544.082153 1523.046143 1523.184448 1535.193848 1545.974121 1545.175903 1536.654907 1523.900513 1507.591553 1497.79541 1492.417114 1490.762939 1485.608765 1488.041504 1491.670532 1498.673462 1505.235718 1510.892334 1517.366089 1524.838989 1538.330444 1561.174683 1577.022095 1593.723877 1612.816772 1634.574585 1647.097168 1644.529419 1629.594604 1607.21875 1581.208984 1566.908569 1562.782959 1557.281494 1550.999023 1540.595581 1527.194092 1522.477539 1517.734253 1500.348511 1480.30896 1465.385986 1445.771729 1431.14563 1422.469971 1413.756348 1403.364136 1387.502563 1383.038208 1391.211914 1404.529297 1419.72583 1424.313477 1423.474243 1427.466309 1442.703979 1456.026489 1480.651733 1500.329956 1512.797485 1532.137695 1551.811646 1574.98291 1597.325317 1601.61145 1594.441895 1584.502563 1575.432007 1567.402222 1560.127686 1563.149414 1563.272217 1571.105469 1571.761475 1560.501709 1554.645264 1550.612915 1544.441772 1537.493774 1538.318726 1551.663818 1558.441528 1567.644043 1567.785889 1546.874268 1558.166016 1567.131226 1575.236816 1584.467896 1594.475464 1602.97644 1612.612427 1620.722168 1625.519775 1630.744873 1635.304443 1628.38501 1617.37854 1607.538696 1592.654907 1578.172363 1566.96106 1555.328369 1545.731445 1539.175781 1527.343506 1520.370605 1530.617798 1548.427612 1555.818481 1562.732788 1564.694824 1559.193604 1546.557861 1529.713013 1514.103516 1499.583374 1490.500977 1478.676636 1471.44458 1461.294434 1459.593994 1469.616821 1487.501221 1492.275513 1498.47876 1507.840454 1520.444824 1523.814819 1517.383057 1517.068359 1519.213135 1527.971069 1533.763184 1542.630981 1552.168457 1552.491089 1551.943604 1547.210693 1549.347534 1544.923828 1533.410767 1522.924561 1518.110718 1516.059692 1513.195312 1508.833252 1504.684082 1499.900879 1492.397339 1485.846191 1481.380371 1474.947876 1470.494507 1466.785645 1463.415894 1455.812622 1451.969604 1442.802856 1437.225708 1433.048584 1428.359131 1425.362915 1428.667969 1430.405151 1427.918457 1423.786011 1431.739502 1439.050781 1448.384521 1455.407471 1463.642822 1464.270996 1460.07959 1458.009888 1455.35144 1451.379517 1451.1427 1449.112427 1446.327515 1446.380981 1447.467773 1447.065186 1443.57251 1438.888794 1438.704468 1441.071289 1439.603882 1436.247314 1430.814575 1423.77771 1414.169434 1409.103394 1404.214355 1390.445557 1381.521362 1380.976318 1389.812256 1403.154663 1411.82251 1423.01709 1434.658081 1444.702881 1445.555908 1440.397095 1437.020264 1449.292847 1462.343994 1471.596313 1476.694702 1479.917114 1486.424194 1491.153198 1495.725464 1501.081665 1508.43396 1519.726807 1532.298828 1541.696167 1552.667236 1570.58728 1584.19751 1599.944092 1606.998047 1608.058105 1604.517578 1599.795532 1587.857056 1578.882446 1563.87439 1559.373169 1559.724731 1557.682739 1553.363037 1545.431152 1544.574341 1542.474976 1535.28833 1524.081299 1526.669189 1529.453613 1529.797607 1532.895264 1534.091187 1535.705811 1535.506226 1530.952148 1524.13562 1519.434204 1513.458984 1505.231689 1496.734619 1487.970581 1476.005249 1473.214478 1477.037842 1481.679199 1486.402588 1489.46875 1495.509644 1500.38208 1500.832642 1503.137207 1508.28125 1510.234497 1508.50415 1504.747559 1499.02063 1491.473022 1491.249023 1492.407593 1491.513184 1490.003052 1487.806274 1480.954712 1477.934692 1472.18689 1466.837891 1465.246216 1460.703491 1454.98877 1450.866333 1446.806396 1443.074341 1439.095703 1436.269531 1435.171143 1435.978149 1435.412842 1435.289062 1431.414185 1424.440674 1422.650879 1426.424438 1427.584961 1427.429932 1421.931274 1411.549927 1405.661499 1399.402588 1391.6521 1382.37561 1377.512085 1373.370972 1362.709351 1355.338379 1350.913574 1345.467773 1340.111206 1336.992065 1343.268433 1349.703369 1350.7677 1352.640137 1361.489746 1370.388062 1372.857666 1372.183228 1367.866699 1364.995605 1368.279053 1369.587402 1369.349854 1367.986938 1365.703003 1362.593262 1358.126221 1350.277832 1341.604126 1339.310181 1343.784912 1339.57312 1338.807129 1341.586304 1348.799561 1360.928955 1367.415405 1368.370972 1370.325073 1371.959595 1368.660645 1376.377808 1385.529541 1390.704712 1385.303589 1377.348389 1363.602539 1354.102905 1353.557617 1354.22937 1351.537598 1354.90564 1360.659302 1365.130249 1375.231567 1380.958496 1385.984741 1390.1427 1386.77063 1377.853394 1377.185303 1383.021729 1386.951904 1392.278442 1396.154907 1399.352173 1400.769287 1400.530273 1402.935059 1400.817871 1388.219116 1384.73938 1393.60791 1394.134521 1387.639404 1376.585693 1365.903442 1365.49707 1371.064331 1370.049194 1366.270752 1356.10791 1343.860352 1341.325562 1341.586426 1340.266846 1338.78125 1336.865112 1334.619263 1331.237915 1318.00293 1318.686401 1302.62146 1294.531006 1304.185913 1331.190063 1311.07019 1301.320435 1293.506104 1287.345093 1289.914307 1290.451904 1289.890259 1287.096069 1285.469238 1293.037964 1294.315796 1291.651001 1287.086182 1284.553833 1285.381104 1289.822266 1298.290161 1310.52417 1321.373901 1337.194336 1355.810791 1356.527222 1339.680542 1318.932373 1304.085205 1287.671387 1269.275879 1285.269775 1299.365723 1307.209595 1311.943237 1321.844482 1344.891846 1353.664917 1356.722046 1350.426392 1335.300171 1312.208008 1290.964966 1283.071899 1285.569214 1273.582886 1253.466431 1243.875 1236.266113 1231.111328 1233.099609 1241.267944 1245.197754 1245.907715 1244.245728 1239.564331 1240.65271 1248.800781 1252.034546 1254.637695 1258.464966 1258.30249 1256.394165 1259.09436 1260.626221 1262.610107 1267.185181 1277.754761 1290.127319 1295.397827 1293.385132 1277.919067 1266.728271 1259.243042 1254.460083 1251.125122 1248.564819 1246.145142 1241.498657 1234.956055 1222.777466 1218.379639 1218.438477 1220.336548 1221.435791 1225.124756 1238.316895 1250.925781 1262.141113 1277.705078 1292.132324 1289.202026 1280.925659 1270.515137 1261.766479 1254.902222 1251.165649 1247.418335 1242.955688 1241.473267 1256.324341 1261.889526 1249.807129 1240.8479 1238.39209 1235.043213 1237.242065 1237.313354 1233.297363 1233.963623 1232.876099 1228.161743 1221.748901 1224.299194 1231.852783 1240.80896 1247.851074 1254.369263 1263.484863 1276.010254 1287.390503 1299.600342 1308.964355 1317.109741 1326.533325 1334.337402 1342.095337 1343.180054 1342.785889 1342.002197 1347.021973 1351.872192 1360.577393 1369.87793 1377.665649 1386.508545 1393.88208 1402.601074 1401.309692 1403.387695 1407.379883 1415.22937 1422.739868 1428.893066 1430.192261 1431.719971 1434.683594 1438.84729 1445.286621 1452.718994 1457.54187 1461.03418 1464.191162 1467.391235 +1676.47522 1690.682373 1703.442383 1710.510132 1705.110229 1695.391602 1693.182129 1696.187744 1702.851074 1708.003296 1709.223022 1709.270264 1708.480103 1707.268188 1706.059082 1706.461426 1708.848877 1710.54248 1711.393677 1711.711548 1711.482422 1711.044678 1710.345459 1709.427979 1708.056396 1705.382202 1700.970093 1697.06543 1691.732422 1680.602539 1668.948975 1660.561646 1654.75769 1646.240967 1637.487671 1624.714478 1613.016968 1601.339966 1595.171997 1600.671387 1601.544312 1600.096436 1596.374023 1587.077759 1574.094849 1564.76123 1555.082764 1548.612305 1547.083984 1539.211182 1534.512207 1529.042969 1519.783081 1511.130005 1518.686401 1529.615112 1537.359741 1553.045288 1566.381958 1572.147095 1573.407715 1577.162842 1577.739868 1573.567993 1558.060059 1538.047485 1526.132324 1537.721924 1550.175903 1556.24939 1553.179199 1535.928223 1521.482056 1504.990112 1497.855713 1499.039795 1499.817749 1496.010376 1492.520508 1487.784058 1494.553223 1501.488525 1506.775513 1511.173218 1519.394165 1535.53186 1556.507568 1573.768677 1589.071411 1607.015869 1622.380981 1636.083252 1647.640869 1638.913818 1615.790039 1594.896729 1585.451172 1575.931519 1565.513184 1557.991821 1548.186768 1538.098022 1531.402222 1520.488403 1498.317383 1482.790894 1470.106079 1452.268799 1435.635254 1426.266602 1418.473755 1407.440186 1392.73584 1385.611938 1390.358154 1402.942261 1422.485718 1429.156982 1427.109253 1428.968262 1448.28064 1460.299072 1482.129761 1498.327393 1512.786011 1525.638062 1541.897339 1567.475464 1587.696777 1604.273071 1601.303833 1592.407593 1583.956543 1579.857666 1570.295532 1570.502441 1573.928589 1578.637695 1576.631836 1568.649048 1560.615234 1554.979004 1550.02478 1541.684937 1545.737061 1554.46582 1562.219849 1575.167358 1578.283081 1555.389282 1560.8573 1572.943726 1577.960327 1582.751099 1590.441895 1599.296753 1608.779053 1616.062134 1621.131714 1632.552246 1637.265625 1631.86377 1619.293579 1609.53125 1594.466064 1579.84729 1567.192627 1556.717529 1548.338013 1540.486206 1525.371582 1525.155396 1540.724854 1553.666626 1561.6073 1570.5 1573.564087 1564.352051 1549.469604 1535.324463 1515.991455 1500.452393 1499.254517 1493.437744 1487.211182 1468.330688 1459.990967 1466.771118 1486.949219 1491.357666 1498.331543 1505.452026 1509.664429 1503.077759 1501.038574 1501.749268 1504.498291 1510.259521 1517.634155 1532.348511 1548.043335 1554.131714 1556.689087 1556.510864 1556.28833 1553.971924 1546.306152 1532.946533 1529.435913 1527.693115 1522.996582 1515.108398 1508.983765 1504.244629 1497.440186 1491.461548 1486.591919 1477.728149 1472.233521 1466.217407 1462.369751 1455.127563 1450.377686 1443.422852 1438.550659 1434.027832 1427.435059 1433.216187 1441.967041 1435.369629 1427.579712 1427.053345 1433.558594 1437.864502 1446.994751 1454.699707 1465.369873 1470.931641 1468.667236 1466.631592 1462.289062 1459.472412 1459.173462 1457.164795 1454.682007 1456.866211 1457.59082 1456.415039 1453.925659 1449.595703 1448.240601 1448.159546 1445.299805 1440.400513 1433.52478 1426.121826 1420.224609 1417.543457 1413.594482 1400.455933 1386.303955 1380.419067 1387.166382 1400.41626 1413.862061 1427.409546 1440.02063 1453.056641 1457.387085 1462.203125 1460.403931 1454.484253 1448.963867 1459.775391 1462.791138 1470.612427 1475.644653 1489.224976 1501.245605 1515.539673 1525.800903 1533.814453 1538.125 1544.335205 1551.748169 1569.778687 1584.394531 1598.565796 1604.625244 1605.508301 1601.085693 1592.211182 1582.237549 1574.654419 1571.134644 1573.135742 1574.07019 1573.119995 1568.579346 1559.171143 1556.336792 1552.128906 1541.777832 1534.29187 1538.108521 1538.761719 1538.163818 1540.358276 1540.595703 1541.262573 1540.989624 1535.720581 1523.978271 1518.956543 1513.32373 1501.730713 1491.471436 1481.46521 1474.538452 1477.877197 1484.356201 1489.758911 1495.724609 1501.019165 1507.931274 1514.809326 1514.598877 1515.681763 1522.464844 1526.627686 1521.970215 1512.378906 1504.047363 1501.36853 1503.624268 1503.242554 1499.677979 1492.33313 1486.189087 1479.922607 1473.15564 1465.157837 1462.661621 1461.957764 1459.168823 1454.369141 1453.299561 1452.910522 1447.072266 1442.268433 1439.444824 1439.28186 1440.482788 1441.009277 1438.445923 1431.452881 1422.855103 1412.864868 1412.575195 1415.213257 1413.551636 1408.566528 1405.801514 1397.362061 1388.496948 1382.365967 1373.527588 1363.382324 1359.94751 1354.267334 1341.613281 1339.423828 1340.877686 1350.446411 1364.906494 1369.63623 1372.104858 1373.224243 1374.130127 1375.803223 1378.212646 1378.112427 1377.236816 1372.929565 1369.68811 1372.601318 1374.144531 1373.994507 1372.575195 1370.499023 1367.91272 1363.640137 1356.517578 1349.564697 1351.391235 1354.704102 1351.904663 1345.915405 1341.376343 1340.908569 1353.209351 1356.634644 1358.457397 1360.398804 1362.80188 1362.55188 1368.317139 1376.412598 1379.599731 1382.488892 1380.601807 1368.941284 1362.157837 1360.072144 1357.686401 1353.534668 1358.067871 1364.036011 1369.06311 1375.170166 1378.71521 1387.162109 1392.932739 1393.619751 1384.094971 1381.278809 1389.717529 1394.396118 1397.71167 1401.173218 1404.987915 1405.800415 1405.10437 1406.693115 1406.154907 1390.649536 1392.052612 1402.609131 1403.281494 1395.768555 1381.250977 1373.474609 1383.101685 1384.091431 1377.525146 1370.444092 1356.053345 1351.70874 1350.669434 1349.549805 1347.859253 1343.641479 1340.354736 1339.22644 1336.020386 1325.021729 1310.562378 1301.373413 1295.431152 1304.636841 1332.786499 1329.845947 1312.993652 1302.260254 1290.090698 1286.815918 1286.19458 1284.953979 1286.079834 1291.568848 1299.226685 1300.233398 1298.089233 1294.125122 1293.69397 1295.90271 1303.85144 1312.560547 1322.766357 1333.634888 1346.227661 1361.162231 1363.378662 1349.945801 1334.199707 1311.509155 1293.72876 1285.133667 1304.103882 1318.936401 1326.217407 1329.791992 1331.096924 1342.606323 1356.924805 1358.499146 1349.12854 1328.423584 1305.51123 1304.919434 1307.03418 1297.968628 1283.437134 1270.058472 1256.160767 1243.103027 1240.361206 1242.468994 1249.929932 1254.504395 1255.34314 1252.575928 1248.224243 1259.990967 1268.592285 1277.395386 1276.949707 1272.026001 1266.544922 1268.188721 1272.08606 1275.508911 1278.786255 1287.098145 1299.481201 1306.775146 1300.192749 1290.142456 1276.785034 1266.980469 1260.559448 1255.4646 1252.187378 1249.021851 1246.175415 1241.379028 1234.822998 1226.081299 1225.304199 1234.169556 1237.026245 1235.551636 1233.263184 1249.574707 1261.571289 1271.179077 1287.521606 1301.162476 1294.704468 1286.696777 1278.716431 1268.355713 1263.974854 1259.897095 1254.721802 1249.505127 1247.304443 1263.182617 1269.699707 1257.67041 1253.150391 1248.667725 1242.619263 1245.105469 1246.978882 1245.73999 1241.625244 1238.344727 1233.774536 1224.920654 1223.647095 1229.01001 1236.46167 1242.83606 1251.196411 1259.023926 1271.096924 1281.22583 1290.731812 1298.148438 1303.899902 1311.458374 1321.554199 1329.890625 1335.435547 1337.092773 1339.207886 1343.45813 1348.343994 1355.173706 1366.411987 1372.937744 1379.301636 1385.473633 1387.933838 1387.148315 1391.131714 1403.551392 1412.286011 1415.547607 1415.766724 1419.695923 1421.038696 1421.144165 1425.02832 1435.06189 1443.817627 1449.108398 1452.880127 1456.031494 1460.288818 +1678.814819 1692.867065 1705.475464 1709.641113 1701.965088 1693.336792 1691.772583 1695.135132 1701.370605 1706.854126 1709.316284 1709.692505 1709.546753 1707.685059 1707.042236 1707.068481 1709.651245 1711.575073 1712.659668 1713.013184 1712.805908 1712.093384 1711.040649 1709.669312 1707.421021 1704.47583 1699.540894 1693.895386 1686.834106 1679.30249 1671.209106 1666.957031 1662.04187 1653.271973 1641.368896 1627.11084 1615.745483 1613.839233 1620.328003 1621.956177 1617.482056 1610.699097 1606.45874 1598.985596 1586.559692 1571.848145 1567.818848 1564.015991 1561.800171 1554.399292 1544.15686 1531.321533 1517.2854 1523.395142 1533.955933 1546.285767 1551.801758 1561.231812 1578.046143 1586.927002 1588.594971 1587.566895 1582.112427 1572.363281 1553.404419 1531.940552 1545.355225 1555.023804 1562.449829 1562.634644 1546.023315 1530.431519 1510.590332 1505.17688 1509.351318 1513.005493 1511.840454 1506.869141 1502.914185 1496.815674 1492.5354 1499.621582 1504.69458 1510.167603 1517.231934 1529.550293 1547.912842 1567.848389 1581.507812 1594.516602 1605.855225 1612.006714 1621.961426 1639.692993 1625.1521 1617.380737 1608.444458 1596.444824 1581.812622 1567.973755 1555.735474 1542.906738 1529.900391 1516.52124 1498.238525 1483.564941 1472.128052 1454.834351 1437.912109 1427.202271 1420.245483 1411.829834 1399.41272 1393.201416 1386.079102 1399.012695 1420.831543 1430.689453 1436.553345 1439.989746 1452.162354 1468.878662 1492.413086 1509.808472 1526.904419 1540.64917 1557.130493 1570.402222 1582.2146 1597.554199 1607.639038 1600.254272 1594.019409 1590.38208 1579.367554 1579.167236 1585.770996 1587.111328 1582.693115 1575.324341 1563.446411 1558.49646 1553.156616 1546.15564 1548.406982 1556.706299 1566.811401 1580.527344 1584.506836 1569.768921 1559.495483 1573.529053 1579.078247 1585.218018 1594.764404 1602.136719 1609.12146 1616.205322 1624.139648 1635.858032 1637.165894 1629.098389 1617.952515 1608.848267 1595.906738 1583.357544 1570.459717 1559.02478 1549.487671 1539.379761 1532.220337 1542.870361 1551.111938 1563.128784 1568.362671 1576.568359 1578.722534 1566.013306 1550.05835 1535.788086 1523.25708 1515.176147 1509.543213 1500.656494 1491.902344 1478.558228 1460.613281 1462.501343 1477.02417 1481.989014 1487.196045 1489.258667 1489.592407 1489.77771 1487.346558 1486.692993 1491.757935 1497.073364 1505.177856 1519.307739 1533.828857 1548.890137 1556.88623 1563.390381 1564.121948 1559.030884 1550.893799 1545.08728 1544.034058 1538.633789 1531.953003 1524.447144 1515.18689 1510.890503 1503.979614 1497.80603 1490.377075 1481.979004 1474.57959 1463.386597 1462.741211 1461.13916 1455.865845 1450.188843 1441.735718 1436.407715 1434.365112 1441.335571 1450.010132 1439.071045 1426.930176 1431.246704 1437.318604 1443.818481 1451.926514 1459.871338 1471.765259 1478.642944 1479.66272 1478.678589 1474.147583 1467.923828 1467.020752 1464.644409 1462.64502 1467.983398 1467.698608 1463.278076 1460.05481 1458.732422 1458.745239 1456.380981 1451.859375 1445.056274 1438.637207 1435.787354 1428.591553 1422.526123 1415.079102 1402.704224 1389.185181 1383.129517 1385.12854 1395.308838 1409.733765 1422.670166 1437.002441 1446.359863 1454.117676 1462.01062 1466.265015 1468.643921 1466.369263 1468.546143 1475.596558 1486.464478 1493.344604 1498.142822 1508.325562 1523.11792 1531.139526 1540.484741 1550.221313 1563.34668 1569.098145 1577.990845 1591.63916 1601.70874 1606.5354 1606.912231 1602.394531 1596.770508 1585.665039 1585.327026 1588.717041 1588.579468 1588.177856 1586.374634 1579.112183 1570.499878 1564.363892 1556.588989 1547.904541 1551.474976 1549.40979 1543.78064 1541.745605 1536.652466 1533.144653 1529.968994 1524.93396 1521.42627 1519.374756 1516.612671 1512.74646 1500.616455 1488.807373 1479.106689 1478.664673 1483.063477 1489.420288 1496.02124 1503.6875 1513.018677 1525.375977 1532.117676 1530.355957 1530.618408 1536.014038 1537.852539 1530.483154 1519.701782 1509.74646 1512.069702 1514.238281 1509.277954 1500.346191 1485.269409 1475.246582 1463.875854 1457.581299 1451.068359 1449.594971 1446.865967 1447.190918 1440.986816 1437.775513 1441.774658 1444.57666 1442.429443 1441.60144 1441.050171 1441.029663 1438.327515 1430.795654 1424.686768 1414.047729 1401.560791 1404.209106 1404.824463 1399.468384 1400.467285 1401.805664 1392.282715 1382.211182 1370.990601 1363.596069 1355.671753 1349.445435 1342.854248 1344.093384 1357.528198 1363.55896 1372.101807 1378.146729 1380.891602 1382.308472 1383.477295 1384.190552 1384.749756 1384.773926 1384.075684 1382.367798 1378.409302 1376.384521 1378.922607 1379.276855 1378.897461 1377.704346 1375.06665 1372.133789 1368.773071 1363.338257 1352.998169 1357.733276 1361.979004 1359.038208 1352.719482 1347.186646 1343.245972 1340.550903 1341.950806 1344.710693 1349.709961 1353.31958 1358.560181 1363.384888 1367.359253 1373.56897 1378.662231 1380.485962 1377.017944 1368.53479 1368.699951 1363.86731 1356.302734 1362.177612 1368.778198 1375.216309 1381.466064 1386.612305 1389.898071 1394.929932 1397.974365 1393.568604 1392.630859 1396.773438 1400.678101 1404.166626 1406.143188 1410.194946 1411.340332 1410.176636 1409.00415 1406.431396 1392.466797 1399.707886 1412.432617 1410.596069 1404.223755 1390.22998 1385.411377 1391.729492 1392.4729 1381.342651 1368.828857 1357.025391 1362.004272 1362.838501 1361.003418 1360.20459 1356.990601 1351.599854 1349.050903 1344.860352 1337.419067 1311.551514 1301.707642 1295.65332 1304.614014 1331.224854 1352.487549 1334.52771 1314.632202 1305.368042 1299.530396 1296.131836 1294.67627 1293.942993 1293.079102 1305.69043 1306.500122 1302.563477 1301.434204 1301.842896 1305.544189 1314.942993 1324.681396 1334.931274 1344.297729 1360.892334 1369.876221 1369.736938 1358.568726 1341.820679 1317.667114 1296.691162 1302.510498 1318.056885 1330.390015 1341.217041 1350.584473 1352.542114 1355.992432 1359.178589 1356.684082 1339.254517 1331.091309 1318.307617 1329.451538 1323.302734 1307.702271 1292.714233 1280.479614 1263.417114 1248.45752 1253.070923 1254.497314 1258.875732 1263.291992 1264.29541 1262.880005 1261.897827 1275.067017 1297.216064 1300.932495 1293.911987 1283.640991 1280.603638 1288.713257 1292.545288 1292.783447 1298.925293 1307.101318 1311.044678 1307.5177 1294.259033 1283.844604 1274.190063 1265.821533 1260.0896 1255.195312 1251.221436 1247.823242 1244.648438 1239.38623 1233.575317 1224.805664 1230.585938 1238.279175 1245.097168 1250.198242 1251.639038 1259.828979 1270.227417 1280.724365 1297.679688 1307.756348 1303.517822 1294.014282 1285.169922 1277.176758 1273.035767 1270.208618 1265.298096 1257.740356 1254.216919 1267.860229 1278.585571 1276.880127 1270.580322 1257.674316 1252.336182 1257.016968 1259.258789 1257.213379 1249.66748 1245.402222 1239.358887 1231.05542 1222.519653 1229.322021 1239.263062 1247.180054 1251.80188 1256.451782 1266.581055 1276.724609 1283.953735 1290.84436 1299.134277 1302.66333 1310.710938 1317.647827 1327.639038 1332.557007 1336.234253 1340.24646 1345.820435 1352.239136 1360.735596 1367.129272 1371.918091 1375.513672 1376.898804 1376.481323 1386.98938 1400.226807 1405.003174 1403.616333 1402.885254 1407.048096 1408.197876 1408.826416 1416.669556 1425.882568 1434.509033 1439.724976 1442.606567 1448.268677 1454.182983 +1679.145752 1692.673096 1708.174561 1708.321777 1698.546265 1689.422729 1685.523193 1691.059692 1699.220581 1704.886841 1708.797974 1710.246216 1710.72998 1710.704224 1709.541992 1708.856201 1711.067871 1713.237793 1714.194214 1714.512573 1714.104248 1713.221313 1711.843994 1710.096436 1707.619141 1705.768433 1700.999878 1697.102295 1693.423584 1686.802368 1679.466309 1672.373047 1665.624146 1656.700195 1644.074097 1634.001221 1633.202881 1635.843018 1634.586548 1629.39563 1625.955078 1623.982788 1616.184204 1611.162842 1595.922852 1582.941406 1577.071411 1575.239014 1566.358398 1554.474731 1535.721069 1521.201416 1531.22583 1546.333862 1560.144165 1567.02478 1564.153564 1567.061523 1588.581787 1599.806152 1600.069214 1593.351318 1582.583252 1564.151855 1547.834106 1545.761597 1559.891846 1568.413208 1572.062134 1556.933716 1541.284668 1524.575806 1507.661255 1514.807129 1523.969238 1528.248901 1525.490234 1519.8396 1511.285278 1507.106201 1498.669067 1496.417236 1502.814087 1508.456665 1515.232178 1524.578247 1539.715088 1554.239014 1566.909302 1577.740967 1590.586548 1598.084229 1612.633911 1635.216187 1643.063965 1639.749512 1630.616455 1613.944092 1598.06958 1576.51416 1560.289673 1545.532959 1528.089355 1511.907715 1495.950806 1480.117554 1466.516235 1449.930664 1436.093262 1426.71228 1421.024048 1414.667114 1400.255981 1394.723145 1386.269287 1399.017944 1420.824219 1431.633423 1440.95105 1450.427979 1459.269287 1476.198364 1496.611938 1520.556763 1536.024536 1556.741333 1576.634155 1591.00708 1598.581543 1604.56604 1613.356323 1612.108887 1607.651123 1601.946655 1589.274902 1587.52356 1594.587891 1594.32605 1587.781372 1578.31897 1570.124634 1564.505615 1557.638672 1547.878784 1551.43042 1558.22229 1569.254028 1583.394409 1590.020142 1577.953857 1568.941528 1572.630371 1579.098633 1586.220093 1596.80481 1603.732056 1610.783325 1617.952148 1627.662476 1637.342529 1636.625122 1624.415161 1616.181885 1608.05835 1595.321411 1583.823608 1571.891846 1559.968262 1549.901733 1536.123779 1547.822876 1558.369751 1564.316895 1573.555176 1579.238892 1587.6875 1582.713867 1568.546387 1554.964111 1544.199097 1533.110229 1521.094604 1511.829102 1500.699951 1490.831177 1477.28479 1466.024048 1462.317749 1462.668945 1466.526611 1471.611206 1472.314331 1471.623779 1470.979004 1473.024292 1473.799561 1475.759644 1484.827881 1492.707031 1503.727051 1518.359863 1535.446167 1548.322021 1561.678223 1575.517456 1568.182983 1559.720703 1560.232422 1559.267334 1554.525513 1543.458862 1532.907715 1526.908813 1519.836548 1511.087402 1502.375244 1492.743896 1483.733398 1475.12561 1469.814087 1467.157715 1465.655762 1458.166626 1450.394165 1442.760132 1438.154785 1436.916992 1445.713257 1446.260132 1439.282593 1429.630127 1437.802612 1442.557373 1450.839722 1459.5 1467.457031 1477.621704 1485.529907 1488.942993 1488.875488 1484.201782 1478.54187 1473.099609 1472.552856 1477.407227 1478.481079 1478.294312 1474.546875 1466.971069 1467.874512 1468.360474 1464.666626 1455.397827 1449.176392 1445.584961 1443.096802 1437.542969 1427.62793 1413.52478 1406.414062 1395.198853 1387.263306 1384.841431 1400.477661 1407.642944 1412.487915 1424.058838 1434.07666 1441.668701 1447.466309 1453.945312 1461.773438 1471.997437 1480.010864 1491.542114 1501.279907 1506.939819 1510.687744 1515.103027 1522.13269 1530.425903 1539.759888 1556.758057 1569.724121 1578.476807 1589.3396 1601.665649 1609.063599 1612.974121 1612.621826 1610.171753 1606.810547 1600.165649 1598.665283 1597.232422 1593.315186 1590.495728 1587.667725 1578.53833 1570.430176 1562.703247 1558.522461 1555.206421 1551.427734 1546.302002 1536.84668 1530.97937 1524.327393 1521.535767 1518.109863 1514.620605 1515.377319 1514.622314 1513.32312 1505.613037 1489.605835 1483.735107 1481.534668 1483.846069 1485.628296 1490.903442 1497.772217 1508.374634 1522.237305 1533.964355 1542.439087 1543.397705 1543.594849 1544.347534 1542.567017 1535.692871 1529.398071 1526.913818 1520.13147 1515.054443 1506.651489 1493.954956 1476.579224 1458.883057 1454.033936 1448.445801 1440.809204 1438.495972 1433.814575 1432.571045 1428.724121 1423.775146 1425.914673 1431.914429 1435.519897 1437.223022 1440.388184 1438.057617 1426.903687 1418.591675 1412.000244 1404.837524 1395.169922 1389.13269 1388.24585 1382.327759 1384.945312 1388.736328 1383.818237 1377.174194 1361.833374 1351.12854 1345.108154 1347.614868 1349.637207 1363.807983 1378.591309 1383.689331 1386.888184 1387.969727 1388.186279 1388.387817 1389.607422 1391.486206 1391.878174 1391.529297 1390.233154 1386.748535 1380.256714 1380.861938 1384.900146 1385.372314 1384.262085 1382.509033 1379.758789 1376.625 1372.901855 1368.069824 1363.328247 1366.440918 1368.179443 1365.924683 1358.661743 1354.544678 1355.72644 1354.482178 1351.173462 1346.182129 1347.763428 1352.136108 1355.778198 1359.076782 1363.68457 1369.438599 1374.427856 1377.966797 1377.216064 1376.222656 1374.872192 1366.118896 1362.829468 1365.675171 1372.817017 1382.289917 1391.479126 1393.689331 1396.045776 1400.530762 1404.334961 1405.29541 1404.059204 1404.168579 1408.227051 1412.279053 1412.106079 1415.634155 1416.208252 1413.846558 1411.673584 1404.729614 1400.387085 1404.015381 1419.678101 1417.954468 1409.84021 1399.019531 1398.530396 1404.436279 1395.049561 1384.250122 1371.985352 1368.491821 1380.144653 1380.759644 1375.593994 1374.344971 1369.669312 1366.787109 1361.061279 1350.062744 1331.039551 1312.879395 1301.733154 1296.032593 1304.508667 1333.498779 1359.188843 1349.661987 1336.125854 1327.02002 1321.098145 1315.407715 1308.015015 1303.569092 1299.728638 1307.83313 1319.758301 1309.18811 1306.044434 1308.938965 1315.217529 1326.495728 1336.785767 1349.364746 1361.455566 1371.488403 1376.777588 1374.008789 1359.288696 1338.792236 1319.030273 1300.707642 1313.00354 1330.999268 1345.345947 1360.03125 1367.314331 1368.103027 1366.849976 1365.356689 1359.921021 1353.914917 1343.707397 1342.40625 1341.848999 1332.411133 1315.598267 1299.306885 1283.199463 1267.316528 1258.847412 1267.309082 1268.888184 1267.71875 1272.045654 1272.869141 1273.32605 1276.719116 1288.598755 1312.124878 1323.567749 1309.317871 1296.645508 1298.345093 1306.209595 1307.143555 1308.464355 1317.612549 1317.917236 1309.564331 1300.94519 1288.567261 1278.293335 1270.921875 1263.511597 1257.413208 1253.35083 1248.333252 1244.987549 1241.300537 1236.034912 1230.980225 1227.948486 1234.132446 1240.052368 1247.551636 1257.84668 1261.46936 1268.518677 1277.239868 1291.247314 1303.738892 1309.416382 1308.552979 1302.124878 1292.86145 1285.726074 1278.825195 1276.571411 1273.152954 1268.65271 1263.297119 1273.907837 1285.143311 1284.094238 1278.361938 1268.182495 1258.684448 1266.45874 1269.865112 1268.890137 1262.998535 1254.86499 1244.649658 1233.308716 1225.202881 1226.752197 1238.365234 1247.940918 1256.020874 1266.105103 1274.078247 1282.578247 1293.352905 1301.591064 1310.022339 1315.100342 1321.342896 1323.888062 1326.687866 1329.634888 1334.740479 1338.659912 1342.832886 1348.453613 1354.744507 1359.976562 1363.307739 1364.44519 1366.111694 1375.686401 1388.274902 1395.216064 1396.898438 1393.985107 1391.081177 1394.556763 1395.77124 1399.589111 1409.027954 1417.025513 1424.706909 1429.370361 1437.484741 1449.539062 1456.561157 +1676.673828 1689.526123 1707.540527 1703.346191 1693.265381 1682.532593 1680.694946 1686.586914 1697.411865 1703.200684 1707.704468 1710.451538 1711.415894 1712.528687 1712.761841 1712.875244 1714.092529 1715.359985 1716.075195 1716.36377 1715.736816 1714.490234 1712.845215 1710.891357 1709.123901 1707.800659 1704.127075 1700.38855 1697.693481 1694.419067 1686.696533 1678.976318 1670.440063 1660.318237 1650.746704 1644.095825 1640.986938 1637.536499 1634.111328 1630.211182 1625.994629 1622.260254 1616.596313 1612.768921 1600.857056 1583.903076 1569.378174 1561.268066 1555.60376 1536.817993 1527.633423 1532.80896 1545.830078 1562.894043 1575.194458 1585.060547 1580.091675 1570.88562 1596.802246 1609.050293 1608.076782 1595.562012 1578.272461 1560.990723 1548.260864 1562.692139 1573.303711 1579.866577 1573.52832 1557.118042 1542.561035 1522.891846 1514.403809 1533.833252 1541.276367 1542.549072 1540.314331 1531.385986 1521.759155 1518.831299 1510.421143 1499.565308 1500.347778 1506.568481 1513.20752 1521.373291 1531.296265 1540.65625 1551.544189 1564.227173 1582.139893 1594.714111 1607.87207 1628.279785 1644.693726 1661.373169 1645.68042 1622.780396 1600.831177 1578.280762 1559.171265 1541.565552 1520.542725 1504.88855 1491.391479 1476.5625 1459.452393 1442.207886 1430.105103 1424.657959 1420.68335 1415.64502 1400.312988 1395.16687 1387.312256 1398.189087 1421.564575 1432.690063 1443.542725 1453.524658 1461.026489 1479.526489 1500.930542 1522.949341 1543.031616 1565.886108 1585.019409 1604.712036 1612.993652 1617.220947 1619.130249 1617.982788 1616.364258 1613.288574 1601.613159 1598.516479 1605.319092 1601.538452 1593.427856 1584.630615 1576.356445 1570.299316 1563.230835 1550.671753 1553.382202 1558.641846 1571.061157 1581.146851 1596.306274 1584.251099 1570.802612 1572.003174 1578.278198 1586.225342 1596.020386 1604.145386 1611.423462 1619.225464 1630.38147 1637.882935 1634.17749 1620.409912 1614.136353 1604.572876 1592.251831 1581.511108 1571.528442 1559.259888 1549.291016 1548.428833 1559.745361 1570.58667 1577.022827 1583.688843 1588.585693 1588.736328 1580.08728 1566.328491 1555.026855 1545.993774 1534.579346 1520.790405 1509.566772 1500.650513 1491.85376 1479.729614 1471.961304 1466.986084 1467.5625 1467.807373 1467.752441 1469.061401 1476.570068 1481.039307 1484.219971 1485.957031 1484.22168 1482.059448 1480.186157 1488.970459 1502.938354 1519.132446 1538.467407 1549.617676 1558.862671 1566.515137 1568.029663 1569.094116 1567.156006 1563.526855 1554.915894 1545.265259 1536.886597 1526.472168 1515.377319 1504.70105 1493.990479 1485.277344 1479.390015 1474.884155 1469.829712 1466.047485 1457.145874 1448.640503 1442.140747 1437.795166 1438.34082 1451.638794 1445.989014 1435.959717 1434.298462 1442.752441 1448.387329 1456.47644 1465.630981 1473.068726 1482.12793 1491.37854 1495.679443 1496.439819 1492.801147 1486.616455 1481.222412 1480.437988 1487.671631 1487.962036 1486.117676 1481.891479 1477.701416 1477.906616 1475.556519 1465.13208 1459.115234 1454.514893 1450.857178 1447.080811 1440.612427 1431.140503 1420.058838 1411.951538 1405.727173 1392.775879 1384.901245 1403.187866 1413.904541 1422.003906 1425.526855 1426.868774 1431.250366 1436.95874 1440.876953 1453.904053 1467.323242 1483.987915 1497.937866 1509.26123 1521.795166 1530.015015 1534.372314 1535.466675 1535.036499 1535.475586 1554.57019 1568.078735 1579.810303 1593.748901 1604.455444 1616.396606 1622.983643 1622.942993 1622.067505 1617.420654 1611.521973 1606.083008 1599.69458 1593.811768 1589.357422 1585.257568 1578.560669 1574.756836 1567.373047 1562.991455 1553.194824 1545.896118 1539.195312 1532.543579 1524.762573 1525.074829 1521.639404 1510.977905 1508.335938 1504.729858 1503.504395 1500.169678 1491.075562 1488.632324 1490.011841 1489.26062 1491.020142 1491.640259 1495.210449 1500.384399 1512.594116 1524.346802 1534.295654 1547.010498 1551.816162 1550.841064 1550.701172 1547.644409 1539.168823 1527.489136 1519.256226 1509.079468 1501.89502 1493.653564 1482.852539 1462.432129 1447.396973 1438.654053 1434.696167 1427.844116 1426.886108 1420.632812 1418.623291 1415.242676 1410.855225 1411.618042 1416.682861 1418.154175 1421.864136 1425.696045 1425.427612 1416.950684 1408.83313 1400.094238 1391.591553 1387.755249 1378.431152 1373.574829 1367.620605 1361.994629 1369.873535 1370.886841 1362.885864 1354.147705 1345.947876 1356.71814 1369.597168 1370.420898 1370.333618 1384.055054 1391.55188 1395.440918 1395.965332 1396.218018 1396.705444 1397.851196 1399.126709 1399.043701 1397.562378 1395.41333 1390.920166 1387.077148 1389.6521 1392.920776 1392.004639 1390.14978 1388.023682 1384.581787 1381.05249 1377.601685 1372.575073 1369.66626 1370.727783 1371.673706 1370.008301 1365.661377 1365.212646 1364.852051 1364.146362 1360.953247 1356.234863 1353.053711 1351.429321 1352.449829 1353.838379 1359.528076 1366.05188 1368.976929 1372.297852 1374.656494 1377.657959 1379.906494 1372.680908 1367.62915 1364.79834 1375.032471 1388.571289 1395.314453 1399.967041 1402.349121 1405.743652 1411.024048 1412.169556 1412.764771 1414.312988 1417.315186 1419.062866 1418.049683 1419.331055 1421.260254 1419.393188 1416.125 1408.192505 1403.357056 1404.091553 1424.785278 1426.588501 1415.182129 1407.680054 1408.969604 1409.550537 1402.140137 1387.502808 1376.586182 1381.714722 1390.709473 1389.673462 1389.476074 1391.015869 1387.519287 1381.485107 1371.198364 1349.436768 1326.088379 1311.527588 1301.747803 1296.02771 1303.190674 1325.108154 1357.795044 1359.941162 1350.228027 1344.689087 1332.398926 1325.097534 1320.307739 1316.226318 1305.555908 1320.290771 1321.86792 1317.475586 1313.449097 1316.373169 1321.394287 1335.259277 1351.609497 1366.991089 1373.982666 1379.461548 1384.68396 1378.569092 1358.8927 1337.174927 1320.47522 1306.23877 1324.730957 1342.097656 1359.816528 1371.800171 1374.950073 1374.182983 1372.450562 1370.772583 1368.084473 1361.019897 1352.316284 1354.831787 1348.703247 1333.952148 1314.535156 1297.335938 1281.465698 1271.483765 1278.457642 1287.777954 1286.192871 1278.934814 1280.695679 1279.68457 1281.083008 1294.603638 1303.970459 1314.717163 1333.274658 1321.459351 1314.221069 1316.388184 1321.460327 1320.785278 1319.152954 1315.039307 1309.906616 1303.430298 1296.396118 1284.827148 1276.040039 1268.03894 1261.703003 1255.077637 1251.328857 1245.699585 1241.661743 1238.234131 1232.875366 1229.670898 1234.75769 1238.669189 1242.952148 1250.871338 1259.288208 1264.985107 1271.903198 1281.479736 1296.296509 1306.498047 1313.431274 1313.112427 1306.876709 1301.281372 1297.063232 1290.20105 1283.383911 1278.535522 1273.427124 1269.370483 1279.576416 1290.214355 1288.040039 1283.220947 1271.702759 1267.745605 1274.618408 1275.006104 1272.897339 1270.904175 1263.168945 1248.029053 1238.152832 1232.343872 1224.608032 1232.894287 1247.912476 1256.970947 1266.938232 1275.150513 1287.133545 1298.299316 1310.993164 1324.251587 1329.717163 1331.195435 1334.200195 1333.890137 1333.83252 1336.114868 1338.77002 1340.639771 1342.675537 1347.474854 1352.795532 1354.58313 1359.814331 1367.032349 1377.362061 1385.1698 1389.257935 1388.039917 1383.607178 1379.532959 1380.150513 1387.912964 1397.835938 1406.028198 1415.028442 1426.12146 1436.350952 1446.542358 1454.097778 1457.54834 +1671.933594 1684.848389 1695.979736 1695.222168 1685.451782 1677.419922 1680.116211 1687.801025 1695.910278 1701.896851 1706.806396 1710.174805 1712.270752 1713.848999 1715.129761 1716.044189 1717.202637 1717.692505 1717.932495 1718.203491 1717.354858 1715.753052 1713.879517 1712.088013 1710.385254 1708.590698 1705.670044 1702.528564 1699.906128 1697.560791 1692.500366 1684.625 1675.695801 1666.32959 1657.314331 1648.961548 1642.357056 1634.97876 1632.310547 1628.97583 1623.094727 1616.497681 1609.231689 1602.50415 1591.104858 1576.275513 1561.589355 1546.148315 1543.314087 1536.165405 1536.659912 1538.467163 1554.878418 1571.737793 1586.820923 1597.613281 1595.570557 1580.679932 1602.912354 1615.515259 1609.267578 1595.089844 1580.262329 1561.029663 1556.414673 1572.403687 1587.804077 1587.275513 1575.579224 1562.052002 1544.000732 1521.258911 1530.714355 1544.470703 1551.934692 1552.257324 1548.804321 1542.734619 1540.553955 1535.383789 1525.674194 1507.595215 1498.971802 1505.060303 1511.311157 1517.624023 1524.866089 1535.713745 1548.911621 1563.464966 1578.235718 1590.860107 1602.670532 1620.502563 1639.774048 1656.401123 1650.876587 1622.012329 1594.146606 1572.217651 1560.768921 1543.862915 1524.820679 1513.391113 1499.947754 1483.388916 1467.900269 1448.637817 1430.755493 1424.539673 1421.175293 1412.922607 1400.36145 1395.45459 1389.308594 1403.064209 1420.388672 1431.22522 1443.615601 1453.664429 1461.91394 1479.846436 1503.112183 1522.998291 1546.851685 1568.579956 1591.814209 1611.125488 1622.739624 1627.323975 1626.318726 1624.331909 1622.058105 1618.66687 1612.682495 1614.297852 1613.27771 1609.279053 1597.824463 1588.429077 1580.889771 1574.811157 1566.70166 1556.390259 1557.153564 1562.264648 1571.978638 1580.952026 1592.18811 1596.605835 1584.629883 1579.588013 1580.894043 1584.935059 1597.274414 1604.112671 1611.417358 1619.171875 1631.140137 1638.058716 1631.725464 1619.268066 1613.227783 1600.256348 1588.128784 1578.657227 1568.46936 1558.514893 1549.10022 1556.563965 1563.887573 1577.016113 1587.583984 1594.786865 1596.439331 1586.172119 1575.904175 1561.106445 1552.124023 1542.320435 1532.236572 1522.691895 1511.728027 1501.896606 1493.371094 1483.964478 1473.783569 1471.043213 1472.55896 1475.11438 1476.11731 1478.848755 1485.333618 1489.307983 1493.030396 1495.407227 1495.862671 1494.063965 1487.524414 1483.213745 1492.649658 1509.480103 1521.304443 1534.385864 1540.206909 1553.670288 1567.720215 1575.254395 1572.259888 1568.154663 1562.303101 1553.214844 1542.019653 1530.668701 1518.888428 1505.812744 1495.214355 1487.097656 1480.814331 1475.386475 1469.697021 1464.75061 1458.588379 1453.097046 1443.862427 1438.640747 1440.889893 1446.505371 1440.059448 1434.228149 1439.630371 1446.172119 1452.209473 1459.717285 1469.043335 1478.931641 1487.629883 1497.319092 1502.753296 1505.455933 1503.966553 1499.325928 1493.280762 1493.414062 1495.604126 1494.609375 1491.052856 1486.30127 1484.55481 1481.485107 1476.615845 1465.967529 1461.960327 1458.228638 1454.776001 1452.017456 1445.250122 1438.694824 1429.119507 1418.643799 1407.137329 1395.996826 1386.192383 1399.870728 1414.531616 1427.641357 1434.946045 1440.408936 1441.528076 1440.526245 1444.853394 1454.000122 1468.759888 1482.759155 1500.190674 1514.78186 1529.208496 1537.015137 1544.932739 1549.143677 1550.297729 1545.608643 1551.210815 1560.452393 1577.8573 1592.707031 1604.858154 1622.475342 1629.067993 1633.317383 1633.819336 1625.143188 1616.451538 1608.382812 1598.522705 1588.504639 1584.171509 1579.411621 1576.839478 1572.671875 1565.157959 1558.107544 1548.037598 1538.444824 1534.826416 1534.632812 1532.670532 1530.398315 1528.228638 1520.339966 1510.606812 1498.121704 1495.911133 1497.337769 1499.22937 1499.911377 1499.359985 1497.999512 1501.967651 1499.285889 1498.393311 1505.841431 1513.933838 1523.885376 1531.738525 1537.67041 1547.198486 1547.199463 1545.295898 1540.366943 1531.84436 1519.073364 1506.249512 1491.857422 1484.257568 1476.869263 1466.400635 1453.675781 1439.235352 1424.710571 1421.914917 1418.401245 1416.608032 1407.22998 1402.077148 1400.010498 1395.374512 1397.255493 1402.294556 1405.223511 1411.314819 1413.41394 1412.828735 1406.177368 1400.590942 1391.90625 1383.566528 1378.34729 1371.22168 1361.960449 1353.325562 1352.012451 1354.385376 1357.179199 1353.54187 1347.900269 1360.057129 1373.426758 1383.744019 1387.177002 1380.059448 1387.071045 1395.851685 1402.238892 1403.552856 1404.345093 1405.741699 1406.768677 1407.579712 1406.621704 1404.034302 1400.893921 1393.469604 1389.118896 1396.688232 1402.789185 1400.765503 1396.635742 1393.136108 1389.377563 1385.149048 1381.157837 1377.275024 1375.837769 1376.864746 1376.081055 1374.563232 1372.576782 1371.729126 1370.52417 1368.967407 1366.880005 1361.976562 1356.498657 1352.707397 1353.896484 1355.682129 1355.934814 1362.904053 1364.757568 1366.624878 1370.240601 1375.525391 1379.155029 1378.518799 1373.013916 1367.595825 1369.616577 1385.449341 1394.76416 1404.154541 1407.588867 1413.871948 1417.564941 1419.166138 1421.374634 1423.345093 1424.838257 1425.888184 1425.010864 1425.678223 1428.045654 1425.751831 1421.015991 1416.225708 1413.166016 1411.889648 1423.036255 1429.163208 1426.227905 1424.053467 1421.654907 1415.763184 1406.660522 1388.771729 1385.033691 1397.583496 1403.021973 1405.489868 1406.472534 1406.152222 1400.476196 1388.551636 1373.726196 1351.224976 1329.552979 1311.781982 1301.600098 1296.491333 1301.429199 1320.083374 1353.357788 1368.963379 1358.453613 1348.68396 1337.532959 1329.966675 1326.793091 1326.228271 1326.876587 1327.349243 1325.694824 1317.893188 1318.497925 1324.459229 1328.878174 1344.309204 1367.223022 1377.404297 1388.891357 1398.165405 1396.402832 1384.937744 1365.19397 1347.216553 1324.873413 1315.39856 1332.260498 1350.396606 1367.862793 1383.744751 1387.975952 1381.377808 1376.757324 1375.44043 1372.677734 1366.796387 1363.444336 1360.819458 1352.334839 1332.862549 1323.571411 1307.908447 1292.075562 1279.005737 1286.887695 1300.271118 1299.966064 1293.448853 1294.402954 1288.981567 1292.468262 1303.313965 1313.819214 1325.141846 1339.927612 1338.900513 1332.195801 1329.968506 1326.09082 1319.5 1313.500488 1306.658569 1301.312744 1295.10791 1288.484375 1279.622192 1274.394653 1269.003418 1262.022949 1256.217896 1251.196289 1246.324707 1241.70105 1236.830322 1232.387817 1235.434692 1240.047363 1242.844116 1247.960449 1256.790039 1261.546387 1265.96521 1273.436279 1283.759766 1296.447632 1306.631348 1317.094116 1317.828003 1312.914429 1307.983032 1303.058472 1297.373047 1292.358154 1284.195923 1279.012329 1276.880981 1284.581055 1295.439209 1291.5625 1285.795166 1278.898071 1279.920288 1282.265381 1279.472656 1275.91333 1272.25415 1265.101929 1250.64502 1241.310547 1235.985474 1229.311157 1228.414429 1243.655029 1252.114258 1261.216187 1269.66748 1281.641235 1297.905029 1310.817139 1325.295288 1340.182495 1345.333618 1343.313477 1341.320068 1340.998535 1340.501709 1339.847046 1341.176514 1341.253296 1341.479736 1348.202271 1352.854736 1360.818726 1368.757568 1377.858276 1382.359131 1382.593994 1379.381348 1376.712891 1376.324097 1383.263306 1395.115234 1406.412354 1414.015869 1423.534058 1433.944824 1443.275879 1450.688477 1454.402344 1455.951904 +1664.899902 1677.840698 1687.386719 1687.016602 1677.876343 1669.531494 1679.713257 1687.90979 1695.441528 1701.786255 1706.96875 1709.662354 1712.823486 1715.353027 1717.052368 1718.008179 1719.400757 1719.798218 1720.066772 1719.762695 1718.552246 1716.834839 1715.022461 1713.051392 1710.998169 1708.709839 1706.081055 1703.951172 1702.6875 1700.15625 1695.747925 1687.720581 1678.748657 1668.751343 1658.290771 1648.136963 1642.874512 1637.620483 1635.411255 1628.413574 1621.770386 1612.38623 1600.379639 1590.222412 1576.552002 1565.82019 1562.153809 1561.192261 1556.327026 1549.956299 1544.164429 1541.325684 1559.911499 1579.037109 1594.517334 1607.765381 1608.022949 1593.774414 1609.721924 1622.544556 1613.915771 1601.85144 1582.330688 1558.070435 1564.157104 1585.65332 1599.410278 1595.934448 1578.404785 1564.301514 1542.703979 1528.69751 1538.69873 1553.869629 1565.106445 1565.221436 1560.189941 1556.060181 1553.726685 1548.543945 1539.327881 1519.397461 1499.917847 1503.76062 1508.994995 1513.945312 1521.685425 1534.95105 1544.767822 1556.298096 1567.370483 1583.761108 1599.9646 1616.325439 1636.216309 1647.690552 1641.416626 1620.022217 1601.018677 1576.135986 1564.105835 1549.641602 1531.537842 1516.987183 1501.167358 1481.439087 1464.746826 1446.591064 1433.897583 1427.823242 1424.932495 1418.15332 1401.532471 1396.043457 1389.877075 1398.953735 1419.021851 1426.937744 1441.255493 1452.130249 1461.848999 1476.936768 1501.82959 1519.593994 1544.684814 1566.173706 1584.058105 1611.193359 1628.880981 1636.375732 1635.445557 1632.723022 1629.374023 1624.774048 1620.810181 1619.567139 1617.074951 1612.790039 1603.105469 1591.095459 1582.764404 1577.512085 1570.176147 1558.970337 1561.38208 1569.863403 1576.255493 1582.677612 1588.706299 1605.740723 1603.235596 1598.161987 1593.055176 1592.055298 1597.800537 1603.749756 1609.432251 1617.714966 1629.310913 1637.582153 1630.258057 1618.782715 1612.59082 1594.845825 1583.615356 1576.287109 1566.639038 1558.564209 1559.328735 1564.959473 1569.442871 1580.749023 1593.051147 1600.716187 1600.833496 1588.222412 1576.431396 1562.507202 1554.149536 1545.067627 1534.712158 1521.891479 1511.161255 1500.836304 1492.429443 1484.059204 1477.152344 1473.692017 1476.97644 1480.603516 1484.866455 1489.86853 1492.540039 1496.727661 1501.153076 1503.799438 1504.894287 1503.69873 1499.718262 1489.572998 1485.986694 1498.908813 1509.447876 1517.980225 1528.927246 1542.014282 1560.208496 1573.677612 1575.379517 1572.637939 1566.033569 1558.354248 1547.161377 1533.664062 1520.005615 1506.338745 1495.41394 1487.522339 1480.039185 1474.050537 1468.887207 1463.246582 1457.929932 1453.503418 1443.925781 1439.237549 1442.834839 1443.359619 1437.80603 1440.73645 1446.162109 1452.421021 1458.891602 1462.738892 1470.62854 1481.224609 1493.893311 1504.485962 1511.268677 1516.407837 1514.246826 1509.184448 1504.029297 1505.475098 1503.96228 1500.31189 1495.80896 1491.419067 1489.319214 1484.747925 1479.642334 1472.988281 1465.817505 1461.104126 1457.890747 1454.661499 1449.972778 1443.65564 1435.454468 1422.573486 1406.294434 1395.888184 1387.61731 1395.949219 1408.524292 1424.739868 1433.688477 1442.319946 1452.010376 1461.772217 1464.078003 1461.906616 1467.82019 1480.509399 1493.765137 1513.489014 1530.290161 1541.037476 1553.027344 1561.682983 1568.045898 1570.730103 1570.66272 1568.995239 1573.893677 1587.271118 1601.335327 1620.269897 1631.596069 1637.629761 1638.336426 1632.505005 1619.817261 1608.013916 1600.825195 1591.409058 1581.745605 1571.796631 1567.736572 1559.592651 1557.578125 1548.55542 1546.692017 1544.396851 1542.481323 1541.178223 1538.817871 1530.154907 1524.330322 1513.694214 1500.705322 1501.5802 1505.38501 1508.771362 1510.443237 1510.289673 1509.85144 1509.610718 1509.392578 1506.161865 1501.614624 1510.630737 1518.252808 1525.845337 1531.885498 1536.217163 1539.029053 1534.656006 1529.583008 1525.478638 1516.968384 1502.964722 1490.550659 1481.090942 1467.39563 1460.890381 1453.956543 1444.343628 1428.355469 1416.730469 1406.008423 1404.461792 1401.785889 1392.255859 1388.889282 1386.413574 1379.122314 1379.394775 1384.149536 1389.067017 1395.804565 1398.863892 1400.418579 1396.731689 1385.852051 1381.824707 1377.515015 1365.91333 1361.775024 1354.739868 1357.370117 1355.483643 1351.384644 1350.100464 1349.416992 1360.799438 1371.361572 1381.186768 1391.985107 1395.610596 1394.819336 1390.877319 1401.058228 1406.326538 1410.237549 1412.792603 1414.23291 1414.80127 1416.260498 1415.059326 1411.659912 1405.705078 1397.006958 1392.335205 1403.963013 1407.776001 1406.453735 1402.001465 1397.274536 1393.213501 1389.450073 1384.86377 1380.194458 1380.217651 1381.119507 1380.658691 1379.507935 1378.746094 1376.736206 1374.65332 1372.060669 1369.283936 1365.580933 1359.241577 1353.843872 1354.824219 1360.998779 1364.513916 1364.747681 1364.752808 1364.571655 1367.609375 1372.900146 1377.019531 1379.771729 1378.742798 1376.962524 1374.232788 1376.38855 1388.936279 1403.692505 1407.381958 1412.101562 1418.221802 1424.814087 1428.020752 1430.377563 1431.513916 1432.195557 1431.545166 1431.767578 1432.810181 1430.883301 1425.744141 1426.444824 1422.203125 1423.940308 1426.164185 1433.194824 1433.10022 1431.169922 1427.601929 1415.214722 1405.658203 1394.716919 1403.605469 1409.34082 1413.960571 1422.780518 1418.423462 1413.546143 1402.904175 1385.616943 1368.013062 1350.321045 1329.201172 1309.932495 1300.131714 1297.442261 1301.758667 1312.298828 1341.801025 1366.854248 1364.026123 1354.57666 1339.242798 1335.988159 1338.890381 1342.525513 1341.766724 1337.624268 1332.359009 1326.975708 1326.817017 1334.627197 1340.674805 1352.920288 1377.209717 1392.526367 1409.189575 1413.904175 1410.085449 1391.180908 1371.476318 1355.901489 1329.967163 1320.905151 1333.569214 1351.698608 1371.696411 1398.41272 1400.572144 1392.752441 1385.69812 1383.802368 1379.099731 1376.4375 1373.942871 1367.013306 1358.327881 1348.10083 1336.544434 1318.181763 1304.699707 1299.460083 1289.948975 1305.676636 1306.533936 1305.059204 1301.563721 1295.830933 1296.77063 1309.358643 1323.605713 1337.639526 1345.86792 1344.60083 1340.660767 1333.488281 1324.739136 1314.096436 1306.784546 1298.967529 1292.212646 1286.785767 1280.940674 1277.200073 1273.382202 1269.727417 1263.246216 1256.807983 1251.060547 1245.929077 1241.440552 1236.677124 1235.10791 1240.136963 1245.874512 1251.605591 1256.55896 1261.561401 1266.152466 1270.020264 1277.339844 1284.164673 1294.526611 1306.41333 1319.305908 1321.886597 1318.471069 1312.400269 1305.83728 1301.427002 1295.692871 1288.930542 1283.292603 1282.223999 1289.014771 1298.818604 1295.461304 1290.352783 1283.057007 1284.007935 1283.891602 1280.953125 1276.904175 1272.883667 1268.922729 1257.407959 1243.415161 1237.535767 1230.95752 1226.75415 1239.181519 1248.36853 1257.533569 1266.612305 1278.460938 1294.658936 1303.258667 1319.234131 1333.817383 1344.016113 1344.022583 1343.670288 1342.987671 1342.69812 1342.968994 1342.73877 1342.699951 1344.792358 1350.662231 1356.244629 1363.850464 1372.036743 1379.131226 1379.39856 1377.057495 1373.14624 1371.595703 1379.67981 1389.059692 1402.125 1409.447388 1417.924316 1427.540649 1437.722046 1443.936279 1448.880371 1452.144531 1452.98999 +1655.399536 1666.647217 1679.052246 1677.935425 1668.806763 1668.827881 1677.672852 1686.753784 1695.367676 1701.574707 1707.175415 1710.019409 1713.142456 1716.433472 1718.671021 1719.924072 1720.62207 1720.816895 1720.88269 1720.753418 1720.091797 1718.29126 1716.077026 1713.66272 1711.152344 1708.610107 1706.494751 1706.404663 1707.086914 1704.775024 1697.263428 1689.220825 1679.678589 1667.925537 1656.219971 1646.451904 1640.945679 1637.102783 1634.17749 1624.299927 1617.051758 1608.509399 1597.420044 1585.057373 1575.923584 1583.752808 1582.236084 1577.539673 1569.273193 1561.351807 1551.65918 1542.955811 1561.265625 1578.295898 1595.137207 1612.248169 1616.243164 1607.292725 1615.405396 1626.3927 1619.831177 1605.799194 1584.522339 1557.744995 1580.286499 1597.890259 1606.967285 1595.916748 1577.663086 1563.680176 1542.550293 1544.15918 1550.962646 1565.008789 1577.739014 1576.795288 1574.609863 1572.449219 1568.408203 1562.122437 1545.84668 1531.234253 1513.789917 1501.976318 1505.709961 1509.620239 1514.677734 1525.064087 1534.177124 1545.061646 1563.569336 1583.380127 1596.489624 1614.431519 1628.375122 1635.04126 1625.474731 1610.90625 1592.630371 1574.998535 1564.432861 1550.547607 1532.655029 1517.164673 1494.652344 1473.686646 1458.991089 1453.491211 1447.267212 1439.525146 1430.394531 1421.510742 1405.032593 1397.005249 1390.516602 1396.407471 1418.147583 1425.035156 1438.861572 1451.926514 1462.244629 1473.738525 1497.738525 1516.311646 1539.413208 1562.648071 1578.491211 1606.886475 1632.267334 1644.221924 1644.758667 1641.35791 1637.733276 1633.830688 1629.727417 1625.614258 1620.464233 1614.890015 1606.457397 1595.119629 1584.223267 1579.322632 1572.986938 1562.445557 1564.941162 1575.346924 1582.574585 1590.974976 1601.168335 1611.485229 1613.406128 1612.130249 1608.768677 1604.505371 1603.90686 1605.893433 1607.756958 1613.616699 1624.652588 1634.272827 1625.689209 1617.021362 1608.824219 1594.11377 1587.173218 1582.595459 1576.479004 1573.362549 1563.111328 1569.850586 1575.427979 1582.797485 1594.13562 1603.901489 1605.873779 1593.943359 1583.808838 1572.288696 1560.155762 1547.963135 1536.419189 1521.458008 1512.491089 1499.951538 1499.765015 1489.209473 1481.017822 1475.088135 1480.369995 1485.568115 1489.681274 1493.998291 1496.898438 1501.609985 1509.072266 1513.35144 1512.795288 1511.778931 1508.350708 1502.305664 1489.94812 1491.119385 1495.847778 1503.736084 1519.799194 1535.113037 1550.190186 1562.566528 1575.020264 1572.439331 1567.383179 1560.996216 1548.799072 1535.676514 1519.219238 1506.60791 1494.989624 1486.030518 1478.634155 1472.948242 1468.267944 1462.36499 1453.778931 1449.80835 1448.152344 1450.775635 1451.259644 1442.924683 1439.701172 1445.392944 1451.867676 1460.105591 1466.606689 1471.674561 1474.701782 1479.744995 1497.082031 1512.206055 1520.009033 1526.456177 1526.626953 1524.912354 1520.307007 1517.002808 1513.092651 1506.670044 1499.465942 1495.544312 1491.979248 1487.317139 1481.054565 1474.699707 1467.973022 1462.849854 1458.907227 1454.598755 1449.911621 1442.641357 1433.538818 1418.113281 1402.384399 1394.556763 1388.885376 1394.904663 1400.590088 1411.815308 1425.190063 1433.939819 1442.030396 1453.557983 1462.5979 1468.394775 1473.592529 1475.130737 1491.955933 1513.52478 1529.643799 1540.449341 1553.720459 1566.578247 1578.496948 1587.667603 1590.874878 1592.345337 1587.5177 1594.117676 1605.425903 1618.647461 1632.240601 1641.470581 1643.189087 1636.716309 1622.029053 1611.39209 1603.01709 1593.615601 1581.059204 1571.68689 1561.889282 1562.488281 1562.610352 1560.712402 1556.131958 1553.91333 1549.372314 1542.185913 1535.402344 1521.349976 1510.546387 1509.503418 1509.228149 1508.777832 1513.433594 1519.797119 1524.562012 1526.070923 1524.389282 1522.091553 1518.776367 1514.878662 1510.530518 1513.844727 1521.299683 1533.053955 1535.561157 1530.702148 1525.864746 1521.079712 1517.919067 1513.940186 1502.615845 1491.076538 1481.447998 1472.057129 1456.677856 1444.666138 1437.785889 1429.031372 1417.634277 1405.040894 1393.679443 1391.063721 1384.039185 1377.637207 1375.353027 1373.569946 1372.393799 1371.472534 1370.682617 1374.242554 1378.147095 1381.844482 1384.596924 1383.747437 1376.362061 1365.942993 1361.264404 1358.11731 1361.194946 1369.516479 1369.072998 1367.508911 1368.582764 1364.871582 1359.509888 1369.247803 1377.410522 1386.483276 1394.463013 1400.401978 1402.876099 1399.773071 1402.039429 1410.013916 1415.47644 1416.89917 1417.964844 1418.501953 1419.758301 1418.298462 1415.836914 1408.563599 1401.965942 1399.406372 1408.965332 1414.12439 1411.193481 1406.14502 1400.796265 1396.57666 1392.226318 1388.036255 1386.339722 1385.886475 1385.640015 1385.311279 1384.481812 1383.270996 1380.732544 1377.890381 1374.563232 1370.85376 1366.540405 1359.743652 1354.048462 1358.307861 1366.428345 1367.754272 1367.900146 1367.082031 1365.520508 1366.446655 1371.196411 1375.329102 1379.321167 1387.291992 1387.009888 1379.331909 1376.455688 1383.54126 1396.10437 1402.745972 1404.613647 1417.087158 1427.43689 1430.500122 1433.867554 1437.37146 1439.045166 1438.343872 1438.757202 1438.931641 1436.06543 1433.192383 1433.0979 1429.358032 1432.554443 1434.744141 1438.243164 1439.02063 1432.904175 1425.038086 1410.736816 1406.727905 1408.256958 1412.963257 1422.429688 1429.952637 1427.736206 1419.885498 1409.465332 1394.69104 1376.588867 1358.597046 1343.939575 1317.993042 1305.656006 1297.696289 1299.0802 1302.620361 1310.679077 1335.377319 1360.343994 1367.07251 1358.184204 1341.974243 1342.922363 1347.873657 1353.384644 1358.546021 1349.963013 1341.413086 1335.304565 1334.155273 1343.257812 1349.575317 1357.530273 1382.424561 1408.091187 1420.956421 1422.463013 1416.355957 1395.874146 1375.046265 1358.608032 1333.053345 1324.641113 1332.089722 1348.81958 1368.252686 1400.968384 1409.940063 1404.837891 1398.609619 1395.834351 1394.027222 1390.851685 1387.039429 1381.277222 1370.329468 1360.137939 1343.739136 1329.97168 1324.543701 1316.473633 1301.400391 1304.787354 1312.180664 1310.896851 1306.280518 1302.725952 1307.06958 1317.15271 1330.373291 1346.641113 1348.483398 1339.09436 1328.460205 1325.971802 1318.812378 1308.252808 1300.073608 1291.942139 1283.770752 1279.935547 1277.494385 1274.770508 1272.488037 1269.869507 1263.442871 1256.867432 1250.287109 1244.803101 1241.212524 1237.588501 1238.095947 1244.650146 1253.656128 1259.483521 1263.40979 1266.665894 1272.484741 1281.599609 1284.873047 1290.378296 1300.814331 1315.816162 1325.922729 1327.640381 1322.006714 1316.374512 1311.434937 1306.633667 1300.13916 1293.486328 1288.594604 1287.595093 1293.805786 1305.943237 1300.380249 1293.269653 1289.525269 1287.847046 1285.445068 1281.425903 1276.637207 1270.202026 1262.607422 1253.628296 1245.203003 1240.201172 1233.982422 1226.937012 1234.76123 1246.589844 1255.107422 1264.127441 1273.686646 1287.293701 1300.578491 1310.638672 1320.115356 1334.52832 1343.436279 1343.826782 1342.273682 1342.485962 1343.008911 1343.771729 1345.477173 1348.759888 1353.0354 1359.553711 1365.685547 1371.544678 1376.128052 1375.088013 1371.853638 1367.314941 1367.83667 1381.483032 1391.359863 1403.70166 1410.854492 1419.318848 1429.20752 1437.350098 1441.82019 1444.776245 1447.094116 1447.264526 +1647.393677 1655.145996 1665.014404 1665.122925 1658.651855 1665.407715 1675.694702 1683.766235 1693.934937 1700.626709 1706.743042 1710.136963 1713.240112 1717.043945 1720.281372 1721.013794 1721.281616 1721.261597 1721.197876 1721.113647 1720.587524 1719.211548 1716.856812 1714.481812 1711.353882 1707.916382 1707.466431 1708.634644 1708.884033 1708.289429 1698.203369 1688.932373 1677.750488 1665.406738 1653.248779 1643.653442 1635.670166 1632.107788 1624.30481 1617.992798 1611.0979 1603.575562 1591.798706 1582.915283 1597.49646 1604.940308 1597.56665 1583.209839 1573.079468 1563.64563 1555.182373 1548.262451 1554.857178 1574.346313 1589.409668 1610.354492 1622.073486 1623.657227 1625.243652 1630.94104 1621.390137 1606.058472 1585.407227 1569.980347 1591.710327 1608.903076 1611.560913 1597.447144 1580.472168 1562.114624 1548.840454 1562.975098 1567.818359 1574.578979 1584.989502 1587.451416 1584.193237 1581.093994 1578.070923 1571.844482 1556.105469 1543.763428 1527.955933 1514.959473 1502.459961 1505.798096 1508.819336 1513.028076 1523.656494 1538.01416 1558.74646 1576.092285 1589.673096 1604.770752 1617.30603 1619.724487 1611.00708 1595.805298 1587.082642 1572.089355 1561.560669 1549.156128 1531.329712 1513.188599 1497.967529 1492.350708 1484.678833 1478.26416 1465.874268 1451.168213 1434.520874 1423.219238 1408.154907 1397.473389 1390.742554 1393.343994 1416.022949 1424.887939 1441.091797 1453.11499 1463.920654 1474.95874 1490.618774 1511.78894 1533.729492 1558.02356 1575.654541 1599.884399 1623.159546 1649.174927 1650.427002 1649.009888 1647.072632 1643.949219 1638.939819 1632.675049 1624.075562 1616.234741 1607.203003 1596.666016 1586.564453 1580.180908 1574.147339 1565.196655 1568.31897 1576.241089 1585.643921 1594.094604 1606.594116 1616.560425 1618.273804 1618.02063 1616.102661 1613.56665 1610.714111 1610.232666 1610.225952 1610.791504 1618.317017 1622.505127 1620.770874 1614.982178 1608.973267 1603.04248 1598.265747 1591.135986 1585.529663 1580.809326 1572.369995 1572.63208 1577.971436 1582.87915 1593.018311 1603.717407 1611.929199 1600.046021 1589.058594 1577.665405 1565.536621 1553.506714 1538.50708 1523.591553 1514.500977 1505.875122 1505.791748 1498.835815 1485.840698 1476.956787 1485.144165 1491.279785 1496.020386 1499.095703 1500.341064 1505.829346 1512.023682 1518.296509 1520.009399 1519.917603 1516.742065 1510.781128 1502.332397 1494.162598 1491.548462 1493.082642 1504.398804 1521.886353 1537.195312 1550.340454 1557.626099 1565.320801 1566.263672 1560.941406 1546.880127 1532.753906 1518.436646 1505.128296 1494.492188 1485.298706 1477.222046 1472.403809 1467.757446 1462.064209 1453.536865 1450.214844 1451.33667 1454.110962 1452.531494 1443.694824 1443.599243 1449.308472 1456.262451 1464.627563 1471.39209 1478.928345 1485.349243 1486.42334 1494.11438 1514.452271 1523.559204 1530.393799 1532.819824 1532.870728 1531.365845 1527.792236 1522.333374 1513.966064 1504.52356 1498.029663 1493.824341 1487.800659 1481.298218 1474.684326 1469.599854 1464.406616 1459.217285 1453.704834 1448.076416 1439.679932 1429.61377 1417.319092 1404.713379 1394.762939 1391.652588 1405.896851 1404.645996 1403.587036 1412.818726 1430.724121 1448.381714 1458.183594 1455.951172 1474.344971 1481.783813 1479.963501 1489.946533 1506.454102 1523.132935 1535.330688 1550.139771 1564.061523 1581.864746 1591.676514 1598.704956 1604.299194 1609.547852 1612.105347 1614.218018 1625.795898 1635.668823 1645.058228 1647.629272 1634.41687 1620.959595 1610.200806 1601.835083 1589.733521 1573.465576 1570.356934 1569.398804 1570.62793 1571.708862 1570.796997 1565.325928 1559.435913 1550.826538 1537.401733 1527.486572 1510.71228 1512.699097 1517.421753 1519.439575 1518.741699 1520.092773 1527.064087 1534.40564 1537.597656 1537.608398 1534.788818 1528.216553 1522.896729 1517.561768 1517.075806 1522.755249 1534.775879 1530.300781 1522.532837 1513.478149 1508.782593 1506.077637 1498.814453 1488.603882 1477.380859 1469.634277 1458.988892 1448.286865 1435.583008 1421.861816 1413.370117 1403.029175 1395.029541 1385.321533 1377.328613 1376.973267 1377.323364 1379.939209 1381.88855 1382.070923 1382.3396 1380.383911 1374.385254 1368.06958 1365.029297 1368.620239 1368.005249 1362.912354 1361.270386 1371.217651 1378.945679 1382.908813 1381.853149 1377.223755 1378.7771 1378.061768 1373.505859 1366.081299 1375.447998 1382.909668 1389.586304 1399.109741 1405.463989 1407.770996 1405.016357 1402.025635 1410.786255 1416.307007 1418.401733 1420.409546 1422.755371 1424.686768 1422.51416 1417.434082 1409.439453 1401.385376 1398.435425 1417.248901 1418.417969 1416.007446 1410.756592 1404.848755 1400.606201 1395.875244 1391.083008 1390.019409 1390.275757 1390.555054 1390.517212 1389.670776 1388.088501 1384.956421 1380.681641 1376.521973 1371.098389 1365.201294 1358.547119 1352.885864 1365.049805 1369.27002 1370.355591 1370.501587 1369.601929 1367.515747 1365.436768 1370.703491 1376.144775 1377.959595 1390.085205 1393.288574 1386.084473 1379.487793 1375.796265 1386.900757 1393.159912 1404.460693 1418.414429 1425.404297 1429.431763 1434.456299 1439.446167 1441.408325 1441.158813 1441.147339 1441.614624 1440.516846 1438.781006 1440.445312 1439.743164 1440.397949 1440.118896 1439.577393 1437.644653 1431.676636 1423.003418 1416.409546 1416.217896 1420.555298 1430.998657 1429.671509 1425.667969 1418.742065 1410.328247 1397.991943 1383.532104 1365.914795 1347.346069 1322.267456 1308.261108 1301.212769 1297.536011 1302.393066 1307.466919 1316.639038 1333.761719 1355.431641 1369.218994 1359.162354 1350.164673 1350.517212 1355.650513 1363.547119 1368.569092 1354.783569 1349.20813 1344.369385 1340.988892 1350.079224 1357.258057 1364.914551 1383.776489 1411.781616 1434.944946 1429.18396 1418.23999 1397.463257 1375.403442 1355.771973 1337.779541 1328.98999 1337.9104 1345.529663 1363.376221 1390.093262 1414.174927 1413.93811 1410.213379 1407.046631 1405.729492 1404.019531 1399.372559 1391.109741 1382.697021 1368.455933 1356.290161 1348.729492 1337.0448 1325.614258 1313.828369 1317.305054 1318.219604 1315.331543 1317.0271 1324.501953 1325.780273 1326.131592 1342.044434 1357.368042 1349.879028 1336.777832 1326.799438 1318.240967 1310.649536 1302.362671 1291.842529 1291.782227 1281.440186 1278.800171 1275.305176 1272.051636 1270.526367 1268.16272 1261.647095 1254.843628 1248.858521 1243.359863 1243.276978 1239.938232 1240.016357 1248.374146 1258.746704 1264.539062 1270.146362 1276.843628 1285.881836 1292.494995 1297.099731 1298.163696 1307.472412 1321.835815 1331.516357 1331.216431 1326.645264 1321.400146 1316.94165 1310.394409 1304.226074 1297.212524 1292.432617 1292.34729 1289.596924 1309.119873 1304.808105 1297.004517 1292.501709 1290.359253 1287.182983 1282.295532 1276.081909 1268.026123 1267.123535 1265.143555 1256.484863 1244.471558 1238.049072 1232.018188 1228.305298 1237.430176 1245.821411 1259.739746 1272.077271 1284.045654 1293.972778 1301.860229 1313.252075 1323.77832 1332.91626 1336.11438 1336.450684 1340.095337 1341.593628 1342.028809 1344.62207 1349.429077 1353.308228 1359.176392 1365.367432 1369.009155 1370.714233 1370.331177 1367.22229 1364.338867 1369.68335 1382.132324 1391.781372 1402.419678 1410.085327 1418.23645 1426.412842 1432.241089 1437.085938 1439.224365 1440.244385 1439.409424 +1633.016968 1641.254517 1643.9198 1645.941162 1650.301147 1660.446533 1674.889038 1683.159546 1692.635498 1698.762329 1704.625366 1708.678101 1711.999268 1715.729492 1719.644043 1721.355225 1721.456787 1721.516113 1721.445435 1721.234741 1720.887085 1719.709961 1717.909302 1715.340942 1712.8302 1710.659546 1710.185059 1709.988403 1709.656616 1707.774048 1697.788696 1687.141602 1673.415039 1662.843384 1651.221069 1642.526001 1634.982544 1629.155151 1621.89563 1613.291626 1606.161987 1598.721924 1588.439087 1602.487183 1612.686646 1612.600952 1597.698242 1582.493652 1571.619751 1560.743408 1558.282349 1556.019531 1551.68396 1567.459473 1583.622192 1602.479004 1621.040894 1634.266602 1641.088989 1636.547363 1623.15564 1603.836182 1582.565796 1579.546265 1598.879761 1616.501343 1612.475342 1602.001465 1581.926025 1558.700195 1568.033203 1579.677734 1586.571533 1591.084717 1596.185669 1596.54895 1594.924438 1588.031006 1583.142822 1577.793579 1567.993774 1556.805786 1542.361816 1526.167847 1518.433716 1510.564453 1504.845215 1508.19043 1512.762451 1532.528931 1550.748169 1567.061646 1580.798706 1593.727539 1604.557617 1606.557129 1599.029541 1590.285645 1580.362061 1567.441162 1555.775635 1541.955322 1525.095093 1515.564331 1517.97876 1513.531494 1502.105103 1490.626099 1476.138306 1453.578491 1438.53772 1424.165527 1408.514038 1397.919312 1391.362793 1393.160889 1408.042358 1422.39917 1441.405273 1451.352051 1463.394165 1477.118652 1489.100098 1507.970093 1528.718872 1550.659424 1570.946045 1588.538696 1609.892334 1632.240601 1650.356079 1651.753418 1651.406494 1650.228638 1646.978882 1638.577515 1627.277954 1616.676636 1606.604126 1596.343018 1587.194702 1580.530884 1573.791016 1567.331055 1570.87439 1578.148926 1587.032471 1597.500854 1609.21814 1622.236816 1624.615845 1624.733398 1621.894775 1619.172974 1616.515137 1614.936646 1614.467773 1614.796997 1617.208862 1618.837524 1618.964111 1617.335327 1615.495483 1614.555542 1609.540161 1600.398315 1593.229858 1588.56897 1582.593018 1577.803589 1581.133179 1582.887329 1591.329224 1600.831543 1606.705322 1608.394043 1593.252441 1580.779541 1568.578735 1556.577026 1542.666626 1525.69104 1514.85083 1513.389893 1512.792725 1503.512329 1489.940796 1484.677002 1490.213379 1498.567505 1504.282837 1509.536377 1511.916016 1509.74646 1513.293945 1523.887817 1527.79834 1529.296387 1526.521118 1519.897583 1511.116211 1508.335449 1500.675903 1495.785645 1493.710205 1502.545288 1520.3927 1533.776245 1546.232666 1558.119507 1564.901978 1558.713623 1546.18811 1533.256714 1522.589966 1507.397949 1498.433228 1488.875 1480.181885 1473.839478 1467.922974 1461.355469 1452.834961 1451.222778 1454.413452 1455.949463 1452.791016 1444.433228 1446.920898 1452.042236 1459.097534 1467.240112 1476.159912 1489.151123 1496.344238 1501.524292 1506.138794 1514.074341 1525.424072 1534.6604 1538.498047 1540.828125 1541.16626 1537.245728 1531.316895 1523.838989 1512.658813 1503.379395 1497.031738 1487.733887 1483.014771 1477.392334 1470.423096 1464.096069 1458.674683 1453.062012 1447.026123 1440.0802 1430.83374 1420.019043 1405.761963 1394.3479 1397.081421 1414.170654 1419.57251 1417.954956 1412.975342 1429.535156 1452.141479 1472.254883 1474.779785 1477.5 1494.315552 1499.339966 1493.748657 1502.012817 1520.193481 1533.620117 1546.001953 1560.557739 1579.122559 1590.923462 1601.043091 1611.762817 1622.344238 1624.490601 1625.70105 1633.290771 1642.603638 1648.198242 1644.31311 1626.203247 1615.723267 1607.416992 1599.094238 1584.792358 1579.878906 1578.365967 1580.776245 1587.187744 1585.463501 1578.42688 1571.159302 1560.503418 1549.401001 1535.353027 1520.581421 1517.797852 1520.672119 1527.832153 1530.157959 1529.953979 1528.701416 1533.750244 1542.975098 1548.093262 1545.391113 1541.599976 1535.882812 1528.619751 1523.992798 1520.380859 1518.616455 1521.029175 1518.428833 1512.512817 1503.497437 1498.102295 1494.588257 1487.452393 1478.659058 1465.279907 1453.873047 1447.065918 1438.107666 1426.681763 1415.190308 1403.719849 1393.52832 1384.551025 1380.403809 1384.661987 1390.030762 1391.087036 1398.488403 1399.766479 1394.480225 1393.012329 1389.59375 1386.525879 1385.57251 1381.584595 1366.435913 1364.832031 1364.723999 1374.651733 1386.934326 1394.13269 1393.832764 1387.679077 1387.873657 1390.355225 1386.07605 1380.516235 1375.709961 1380.109619 1387.134521 1394.929932 1404.246826 1412.5896 1414.981079 1413.334106 1406.0 1411.725464 1416.393921 1419.293701 1421.927856 1425.300781 1427.676514 1426.157959 1418.61853 1410.695679 1401.769775 1400.125 1420.5177 1423.13855 1421.008301 1416.090942 1411.189575 1405.084106 1400.334717 1397.255981 1396.116333 1395.890503 1396.173462 1396.203735 1394.868042 1392.759644 1389.419922 1383.568359 1377.162231 1369.774048 1364.528809 1361.981812 1363.0177 1369.092651 1372.292114 1373.738281 1374.061768 1373.052612 1370.303833 1365.990234 1374.975342 1381.24292 1386.005615 1393.393433 1396.317749 1391.765137 1391.531372 1387.768311 1383.57373 1390.634033 1400.913086 1416.024292 1417.200928 1423.654663 1430.508789 1434.663696 1438.213135 1440.61853 1442.053955 1441.794922 1441.82312 1441.685303 1441.978394 1441.715454 1440.266602 1438.836182 1437.540771 1435.495728 1432.263428 1428.665161 1428.816528 1429.831299 1435.147217 1429.792847 1420.527954 1413.411377 1405.549438 1397.375854 1386.517212 1370.148438 1349.690674 1317.451538 1308.717896 1302.676636 1298.265625 1300.297729 1307.547974 1321.011597 1328.653442 1333.992188 1353.236938 1368.363159 1362.196045 1357.3302 1359.244629 1365.444458 1372.733887 1371.798218 1359.778687 1355.197266 1355.429443 1350.747681 1356.120972 1362.624634 1369.960083 1382.958252 1408.584106 1447.897339 1440.772217 1418.41333 1396.029907 1370.425537 1362.668457 1352.713013 1332.740723 1344.766113 1363.10083 1369.999146 1378.232544 1400.834717 1418.582764 1421.681274 1419.999878 1417.55127 1413.789062 1409.685669 1402.452393 1392.255737 1381.50647 1368.355225 1359.457031 1348.876709 1333.43335 1324.8479 1323.71228 1323.805054 1323.422729 1331.00354 1342.24939 1340.269287 1340.71814 1355.640869 1357.411743 1349.359985 1336.476196 1325.451416 1316.103516 1311.917847 1306.93689 1302.127319 1296.825928 1289.236206 1280.378906 1273.646118 1267.959106 1267.361084 1262.431641 1256.897339 1254.280273 1251.307861 1249.420288 1247.6073 1244.107666 1240.955933 1251.699951 1261.901855 1269.807983 1279.58313 1289.989014 1298.55542 1306.23999 1314.016846 1314.429321 1314.124023 1327.448486 1335.303223 1334.115479 1329.12207 1324.418091 1318.627686 1312.949219 1308.269775 1303.875854 1299.531372 1298.585571 1294.694214 1300.719116 1306.023071 1303.216064 1297.612061 1293.920044 1290.261353 1281.641846 1278.427124 1276.689575 1273.932373 1272.095703 1265.860962 1252.407837 1241.621094 1236.912354 1233.259033 1228.498291 1242.641968 1258.109009 1270.386841 1278.033081 1287.239746 1297.2229 1306.646484 1313.013306 1318.70752 1323.65918 1328.233521 1335.047607 1339.716797 1342.151245 1345.181763 1349.782349 1352.339844 1356.900024 1362.846191 1366.020874 1367.06311 1365.5271 1361.796753 1362.261353 1370.494995 1381.448364 1389.716187 1398.683716 1406.535034 1413.571777 1420.911987 1427.099243 1430.579834 1432.683838 1432.550659 1431.504395 +1623.954102 1627.675415 1631.067627 1633.098389 1649.478516 1665.37207 1680.465942 1686.287109 1691.232178 1695.963745 1700.989868 1705.620972 1709.008301 1712.564331 1716.517212 1719.753174 1720.557739 1721.227051 1721.446045 1721.293945 1721.03479 1719.962036 1718.051147 1715.941528 1713.92749 1712.223389 1711.418213 1710.582275 1709.302124 1705.072632 1693.628784 1683.048828 1669.546875 1661.038696 1650.155273 1641.935669 1635.594238 1628.610596 1622.004517 1610.930786 1602.033325 1594.969727 1604.631226 1613.873047 1613.612915 1601.979126 1588.041016 1573.263672 1567.097046 1564.518433 1568.850708 1566.771973 1559.574951 1561.040405 1576.97876 1592.915527 1613.888184 1633.12915 1649.875488 1637.301147 1623.891113 1598.62146 1582.232666 1595.690796 1605.183472 1623.962891 1616.521362 1605.029663 1580.989624 1563.902222 1581.05835 1591.592163 1597.87793 1604.008423 1608.993896 1606.819336 1603.783569 1599.124268 1590.748779 1585.450317 1579.114746 1569.641968 1557.403931 1542.819214 1530.881592 1521.967407 1512.831299 1505.784058 1510.283081 1525.295044 1540.571655 1554.870972 1571.334717 1585.287231 1595.36084 1599.050293 1592.618164 1585.187744 1572.476807 1558.289185 1548.630493 1540.647583 1527.46106 1532.266113 1528.765991 1521.355469 1509.182007 1493.242798 1478.79248 1454.185913 1441.770508 1427.385864 1411.00769 1399.081299 1393.140259 1391.371582 1402.19458 1418.453369 1436.504028 1446.969727 1460.955444 1476.546631 1490.141357 1506.415405 1524.571289 1539.765015 1563.19812 1579.694702 1595.308594 1616.106079 1633.180786 1647.593018 1653.077881 1652.289307 1650.158203 1643.302002 1630.753906 1618.148438 1607.354248 1596.386353 1586.552124 1581.578613 1575.923584 1569.92334 1574.734497 1582.346069 1591.51062 1601.134766 1612.220703 1631.088745 1636.056641 1634.769409 1628.565552 1624.061646 1621.092773 1619.978516 1619.343262 1618.674194 1618.693481 1619.102173 1620.05249 1621.777466 1623.13623 1623.127319 1618.791992 1609.034912 1598.203003 1594.566772 1594.182617 1592.168335 1588.023926 1587.268433 1593.148926 1597.875122 1605.448242 1609.913208 1593.978271 1583.132446 1572.335327 1559.023682 1546.182495 1526.864258 1520.228394 1518.694092 1515.588379 1505.927856 1492.2771 1485.309082 1496.986694 1505.989258 1512.768921 1517.151855 1518.643677 1516.370972 1523.725098 1534.911499 1539.036377 1540.635864 1538.952026 1533.216675 1528.936401 1523.557495 1515.766602 1503.974976 1498.801514 1495.159424 1500.673584 1517.797729 1531.985352 1546.098022 1555.892822 1555.84021 1550.439819 1536.719604 1525.022461 1510.788208 1501.529419 1491.209717 1482.411255 1475.041016 1468.104004 1461.852051 1452.991699 1457.150757 1461.785767 1459.089233 1451.528442 1446.672241 1448.813477 1453.684082 1460.615356 1471.219849 1482.723877 1495.813965 1506.103882 1516.036377 1522.350342 1526.464966 1532.434937 1539.31543 1544.741943 1549.044678 1552.223755 1550.982788 1542.330688 1534.030029 1524.42749 1515.751587 1504.930298 1494.521606 1486.259155 1479.117065 1468.925659 1461.401001 1457.016724 1452.283447 1445.605713 1439.432617 1426.250366 1418.080078 1405.081543 1394.39978 1397.948486 1418.364014 1428.380981 1428.699707 1417.830688 1426.104614 1446.237793 1469.429443 1490.538818 1495.674316 1511.265625 1526.706421 1529.25061 1523.983521 1521.690308 1532.462769 1545.338135 1558.537476 1573.230957 1589.077271 1599.671509 1617.127441 1626.20459 1631.309082 1635.505249 1644.696777 1648.927002 1650.238647 1641.416504 1625.797241 1615.11792 1607.612671 1602.283325 1597.702637 1592.546997 1589.222534 1589.692749 1588.432373 1585.276001 1577.672852 1568.072632 1554.856567 1543.433228 1530.499023 1517.794312 1525.468628 1529.843384 1535.299805 1539.162598 1539.668579 1537.774658 1535.01355 1550.800049 1553.804443 1551.090332 1546.179565 1538.976196 1532.144165 1526.185425 1520.097778 1512.930298 1509.849854 1505.829468 1500.820923 1496.331665 1491.986572 1487.406494 1478.666748 1469.473145 1457.516113 1442.956787 1434.359131 1425.316162 1418.271606 1407.801025 1397.477051 1388.477051 1381.073853 1385.873169 1392.483887 1399.705444 1406.574341 1412.339844 1417.246704 1412.206909 1404.776978 1397.101196 1397.957886 1403.123779 1396.465942 1385.915649 1382.494629 1381.726318 1393.346924 1401.202393 1407.915161 1403.932983 1389.674805 1397.22876 1400.363525 1391.620483 1383.474731 1377.008667 1383.318726 1390.831177 1401.0625 1414.408447 1419.173096 1420.539429 1418.576416 1413.461792 1413.479492 1416.024048 1419.522705 1422.312134 1425.080933 1427.555054 1426.662598 1421.317505 1416.77002 1407.307861 1403.272827 1419.123291 1428.11853 1427.373047 1422.618652 1418.139771 1412.803223 1406.289185 1402.845337 1401.898315 1401.787842 1402.717163 1402.576538 1399.837891 1395.150879 1390.991699 1384.567505 1378.436157 1366.432251 1364.848633 1366.56189 1370.194092 1373.435669 1375.906006 1377.248657 1378.095947 1376.813354 1373.635498 1373.050659 1377.822388 1384.242188 1390.194702 1399.317993 1402.17981 1401.158569 1398.899902 1395.408691 1392.634399 1390.273438 1390.422852 1402.311768 1405.768188 1415.606079 1423.574951 1428.567505 1428.245239 1434.903809 1440.163208 1441.662964 1441.779053 1441.888428 1441.869263 1441.991089 1440.416138 1438.230469 1436.793823 1434.897339 1432.464966 1430.395508 1430.621948 1434.576294 1440.685303 1425.281738 1407.38562 1392.709351 1387.71106 1381.256592 1368.158813 1349.61853 1317.849487 1309.809326 1303.963745 1299.390869 1298.860718 1303.394043 1315.060303 1327.550781 1333.640137 1339.687866 1351.46167 1368.974121 1365.829956 1367.362671 1368.550171 1374.240479 1383.886719 1377.866455 1362.150391 1360.90686 1361.592407 1360.226196 1363.118652 1367.55481 1373.09314 1381.136475 1397.538208 1449.047852 1439.288452 1414.87793 1393.233154 1380.940308 1375.046387 1360.794434 1337.803711 1352.544434 1369.111694 1382.773071 1393.628906 1400.651245 1415.104736 1430.441772 1430.477173 1428.373657 1425.097534 1420.126343 1412.807983 1405.472046 1394.740845 1375.293335 1363.440674 1354.582642 1343.760132 1334.410278 1331.734985 1329.405518 1329.190063 1344.86853 1352.963745 1352.235229 1354.487793 1356.739746 1351.156494 1342.348022 1330.552979 1324.937012 1327.828979 1326.493774 1318.364624 1308.370605 1298.831665 1291.075684 1281.583008 1274.260986 1268.318115 1264.858521 1259.144043 1256.019531 1254.714722 1256.320801 1257.370117 1254.137451 1246.982544 1242.120728 1253.836792 1265.882568 1279.441895 1289.433594 1298.464966 1310.983032 1325.862061 1330.565186 1330.604858 1326.395508 1333.369263 1341.990479 1337.78064 1332.77478 1328.297729 1321.203857 1316.00769 1311.253418 1305.867065 1304.982056 1306.160278 1302.102417 1301.750488 1305.946533 1306.302979 1302.878174 1297.818237 1294.273682 1288.789673 1284.298828 1282.536987 1279.420288 1274.50769 1269.420044 1259.789185 1247.236572 1240.647705 1235.303589 1230.700562 1235.868774 1251.795166 1264.435791 1276.12085 1284.13623 1291.697266 1298.576294 1304.799072 1311.454956 1319.985352 1331.619629 1336.513794 1341.786987 1344.798584 1347.537231 1350.900391 1354.043457 1356.925903 1360.143555 1362.442261 1362.097412 1359.318237 1353.45874 1360.001831 1370.100708 1379.533203 1386.925659 1394.621338 1402.139526 1408.747437 1413.837769 1419.911133 1423.546631 1425.027954 1424.92041 1423.807007 +1607.547363 1614.807129 1618.806274 1633.409912 1652.96167 1669.783936 1686.326904 1693.011108 1691.554321 1693.308594 1697.006226 1701.318237 1704.557983 1707.935791 1713.022705 1716.49353 1718.234741 1719.778687 1721.387207 1721.258545 1721.000366 1719.950195 1717.744995 1715.970581 1714.331543 1712.552124 1711.508179 1710.227905 1707.349609 1698.57959 1687.862305 1677.27124 1667.050903 1658.683472 1648.53479 1641.145142 1634.912964 1627.409424 1619.048096 1607.831055 1601.010864 1607.664917 1614.580322 1614.280884 1602.198486 1588.582397 1578.315796 1576.910034 1582.047607 1581.748901 1581.294067 1577.493286 1568.955688 1559.489746 1575.14917 1589.039795 1610.690552 1628.601807 1640.183594 1632.523926 1618.605469 1594.554443 1608.139893 1613.486084 1619.579468 1626.552124 1619.840942 1607.619141 1577.82019 1576.834473 1592.823608 1606.888794 1615.195923 1620.317139 1624.272705 1617.725464 1610.640503 1604.003784 1597.48291 1592.23999 1588.623047 1581.939575 1567.630127 1554.435425 1540.438477 1529.931519 1518.798584 1509.108521 1508.007324 1517.460815 1530.74585 1546.450073 1563.958984 1576.491699 1586.78186 1590.958252 1585.786621 1577.490479 1569.835693 1565.037109 1560.259277 1553.8125 1549.567627 1544.025757 1536.738159 1521.653198 1507.655762 1491.858276 1474.52063 1459.480347 1442.755371 1428.209961 1419.256592 1400.703735 1394.968872 1390.761597 1400.374878 1413.750977 1428.949585 1443.557739 1456.359619 1475.232178 1488.300781 1504.906494 1518.878296 1531.755615 1547.690186 1571.102295 1580.623413 1595.618042 1610.366943 1629.157104 1645.519653 1651.460938 1650.754272 1646.710449 1633.264526 1623.19812 1611.93457 1601.99292 1592.783447 1585.384155 1577.548706 1571.945435 1577.109131 1584.891846 1593.20752 1602.077271 1611.258911 1633.606445 1636.420288 1636.265015 1633.770752 1628.827637 1625.127075 1624.209473 1623.53064 1622.273438 1621.284668 1620.659546 1621.92334 1623.663086 1625.165405 1625.413574 1624.02417 1618.944092 1607.066406 1603.753418 1604.43396 1602.582153 1599.135864 1598.919189 1600.031494 1601.011108 1603.295654 1601.112183 1592.817871 1583.317261 1573.608521 1559.95874 1545.265015 1527.834106 1524.821777 1525.084351 1517.988525 1507.175903 1493.622192 1486.918335 1502.014404 1511.464355 1521.059204 1525.711792 1526.673584 1524.581177 1533.720947 1544.966064 1549.868164 1553.671997 1550.678833 1544.663574 1540.577515 1536.478149 1527.387817 1516.79126 1509.85437 1499.990845 1496.799316 1498.710083 1514.411865 1531.597778 1544.389526 1548.962158 1546.377686 1536.838989 1524.967285 1513.120361 1502.216919 1491.571899 1482.835083 1475.182373 1468.105957 1461.888306 1461.385132 1464.643677 1465.439941 1463.567627 1454.888184 1448.850464 1451.296997 1456.966797 1462.905029 1472.919189 1484.03064 1499.7771 1510.995117 1525.60498 1528.702759 1531.721924 1536.414185 1543.538818 1551.069336 1560.006592 1566.273438 1564.979736 1557.881958 1549.760986 1538.145508 1524.331543 1513.365234 1501.028076 1491.650757 1480.613281 1467.909912 1459.817749 1453.178833 1447.552734 1440.047119 1427.620361 1416.900513 1412.127441 1404.479248 1395.786743 1396.630859 1417.419189 1431.516235 1434.806519 1423.791992 1431.262939 1449.243408 1470.545532 1492.193237 1505.315186 1517.030396 1528.573486 1534.056274 1538.837524 1533.215088 1539.266724 1546.370605 1559.760254 1577.176147 1589.600708 1601.536377 1617.267822 1627.301147 1635.83728 1641.420166 1648.187134 1648.937988 1648.120117 1644.167358 1637.291504 1627.964722 1616.177856 1609.788818 1604.990601 1600.506836 1597.113159 1592.630371 1586.00769 1581.160645 1572.06958 1560.217651 1545.925171 1536.049683 1525.053467 1522.098389 1533.046753 1538.19104 1541.852173 1547.268433 1549.786011 1548.115723 1543.969971 1551.018921 1559.929321 1559.768311 1552.356323 1542.924561 1533.873779 1527.055054 1521.47644 1516.096924 1509.158569 1503.099365 1498.05481 1493.679443 1486.594238 1480.014038 1473.256958 1463.271729 1453.825562 1440.630615 1429.028442 1417.906372 1407.555298 1398.65625 1391.886963 1384.70459 1384.26062 1390.500244 1396.082275 1404.191284 1416.037598 1422.999634 1426.395996 1423.643921 1415.084961 1400.35498 1406.061401 1415.613037 1409.323975 1398.945435 1395.877197 1400.705078 1408.575806 1418.044678 1418.999268 1405.154053 1401.151855 1409.259399 1409.069702 1400.874023 1386.036011 1382.497559 1389.025391 1398.678711 1411.305664 1419.626221 1424.637573 1427.289429 1425.365967 1420.241577 1415.898682 1415.650024 1420.251587 1422.996094 1424.893311 1426.266724 1426.129517 1425.48877 1421.812012 1413.514771 1411.488525 1419.540283 1425.198608 1429.385986 1428.360352 1424.622803 1419.156128 1413.59375 1410.730713 1410.903687 1411.491211 1408.917114 1405.520752 1402.074951 1395.248535 1388.811035 1382.519165 1373.354858 1365.525757 1369.125244 1374.149536 1377.976562 1378.979126 1379.44397 1380.262573 1380.477417 1379.427612 1377.197266 1376.204346 1378.067505 1386.568726 1394.761963 1403.589233 1405.836914 1407.442383 1407.032959 1403.387085 1402.557251 1401.478638 1395.734497 1395.774292 1399.743042 1402.222046 1402.781494 1415.293579 1427.103882 1435.139648 1440.903442 1441.432373 1441.431274 1441.569946 1441.995361 1441.737305 1440.870361 1439.134155 1437.208008 1435.204224 1431.998047 1427.300415 1428.99585 1431.936401 1430.741943 1421.279297 1398.31604 1375.130127 1354.582886 1350.872803 1344.177124 1314.130005 1309.17627 1305.802612 1300.241333 1299.209106 1302.455933 1305.690796 1316.784424 1329.44397 1336.550293 1339.058472 1346.47522 1357.233032 1367.710815 1374.736816 1375.842041 1384.14209 1396.432129 1383.877441 1370.724365 1364.547119 1368.00061 1369.929932 1371.126953 1374.081909 1376.973999 1382.479858 1390.446777 1424.499146 1431.258911 1412.423218 1406.62085 1397.81958 1381.808838 1365.874268 1343.952271 1352.106812 1369.275391 1388.822754 1398.894531 1409.361816 1419.775635 1431.578247 1441.744141 1437.53479 1433.228882 1429.237061 1421.097412 1411.747681 1402.145264 1380.483154 1366.517456 1361.018188 1353.954102 1342.320679 1339.527466 1337.166748 1337.862305 1359.694702 1370.006836 1368.241699 1363.585938 1355.140747 1344.21228 1339.293945 1340.412231 1343.802368 1338.503052 1331.155396 1321.484985 1308.983643 1297.89624 1289.370361 1282.336182 1276.824097 1269.05835 1266.341064 1263.375 1261.72998 1262.540161 1263.607056 1262.812012 1259.344482 1251.859863 1244.120361 1256.576294 1270.240845 1287.198608 1299.576294 1308.108521 1329.936279 1341.50415 1345.303223 1345.612671 1343.999756 1345.841797 1345.549194 1341.023071 1336.080688 1330.772217 1324.581787 1319.325317 1314.789673 1309.223633 1309.316284 1308.657837 1305.218872 1304.105591 1306.618164 1307.434448 1305.165527 1300.304321 1296.347412 1291.609863 1286.577148 1283.925781 1280.875122 1275.432495 1271.656738 1268.516479 1255.034546 1242.440552 1236.27356 1231.865601 1239.655762 1253.363525 1261.893921 1269.083374 1273.762207 1279.286499 1290.038452 1301.41394 1310.88269 1321.824829 1331.419434 1337.871094 1342.820312 1345.005859 1347.684326 1351.142944 1354.349121 1356.177246 1356.902344 1357.856934 1357.393188 1354.692261 1352.921631 1358.729126 1368.702637 1377.480713 1383.806885 1389.584473 1396.905518 1403.525269 1408.242188 1412.476562 1416.526123 1417.965454 1417.992798 1416.721558 +1596.15564 1601.0625 1620.453003 1639.308228 1661.511108 1678.451904 1687.619751 1696.207031 1690.550781 1690.386841 1693.604492 1696.164185 1703.17627 1708.142944 1711.70752 1715.198608 1717.737183 1720.164185 1721.213013 1721.306763 1721.038208 1719.770264 1717.619995 1715.894653 1713.750488 1711.80249 1710.277222 1708.286133 1700.598389 1690.572266 1680.829956 1673.147339 1664.003906 1655.407715 1646.10498 1639.321777 1632.94751 1624.27002 1610.398193 1606.024414 1618.772339 1625.482788 1620.43811 1603.437622 1587.275146 1585.148071 1596.838135 1600.693726 1599.106445 1596.953003 1593.273926 1588.955688 1580.849609 1566.178833 1574.725098 1593.119873 1613.987305 1628.399658 1637.501831 1627.855591 1611.382568 1611.418457 1618.975098 1622.566528 1630.176392 1631.665283 1620.177612 1606.982788 1580.141602 1588.776733 1605.367432 1625.317993 1633.043945 1636.579224 1634.578003 1627.332275 1617.475952 1608.624512 1601.965576 1596.572998 1592.467407 1588.246338 1574.283203 1559.259033 1548.392822 1537.459717 1524.305054 1514.849121 1508.009399 1512.641724 1529.328491 1548.532959 1565.474121 1577.516235 1586.060913 1587.736816 1585.121338 1581.88855 1577.845337 1574.268188 1568.132568 1562.599976 1555.77356 1549.200928 1536.741577 1523.351196 1510.235474 1494.644165 1478.342773 1465.106323 1447.94043 1432.453247 1421.286987 1406.616333 1397.377808 1392.031738 1399.61731 1415.035034 1429.421875 1442.049927 1454.914795 1472.760254 1484.470703 1499.650391 1512.902466 1525.00415 1535.297241 1551.575562 1568.655273 1578.653687 1595.501709 1612.970215 1628.410522 1642.872437 1650.174438 1649.126953 1639.329346 1630.229492 1621.976318 1610.791626 1601.044678 1591.935913 1582.504028 1574.131958 1581.167725 1588.416504 1593.88208 1601.015137 1608.066772 1629.245972 1635.589966 1635.463989 1634.543701 1631.4198 1629.526855 1628.260254 1627.105347 1625.635254 1624.403931 1623.985962 1624.70459 1626.055664 1627.212158 1627.617676 1626.637207 1624.28186 1620.866821 1617.483643 1613.449097 1608.720581 1605.744751 1605.426025 1605.649536 1606.957153 1604.786743 1598.606689 1591.460205 1582.34314 1573.081055 1558.761108 1544.437012 1537.60083 1537.97229 1530.06311 1519.58313 1507.850098 1493.758423 1491.150146 1505.162109 1518.292114 1527.574585 1532.017456 1536.459106 1539.237427 1544.025146 1555.012085 1563.731079 1565.74231 1564.344482 1557.996094 1551.889404 1547.411499 1540.574707 1529.625488 1519.692871 1510.2323 1501.052368 1498.62915 1498.432495 1514.999023 1529.203125 1535.816284 1536.074585 1531.473511 1523.737183 1513.485962 1501.979736 1490.390015 1482.15686 1474.846436 1467.986572 1463.21875 1464.184204 1466.765747 1466.682495 1465.246094 1458.767334 1451.290527 1457.069336 1463.781128 1471.529053 1473.139404 1481.749023 1495.485718 1508.380249 1525.123169 1529.904175 1534.660645 1539.919312 1547.152344 1561.547363 1571.94458 1583.033691 1581.242188 1574.154419 1562.631348 1552.921509 1536.86084 1525.351074 1513.067993 1496.696777 1484.518677 1470.965942 1460.119263 1449.78894 1441.93811 1429.392578 1423.40332 1416.992676 1413.835815 1405.360107 1398.749634 1395.29834 1414.509888 1429.4823 1441.584351 1438.69397 1432.188721 1450.236328 1466.875122 1484.230469 1499.641479 1510.023682 1525.220093 1531.68811 1538.400757 1539.911377 1544.616577 1555.69397 1567.498413 1581.540405 1592.634888 1606.204102 1617.901733 1625.080811 1630.919067 1636.591675 1643.031616 1644.612915 1639.653442 1636.207153 1637.207397 1634.327515 1619.681885 1613.106689 1607.114014 1600.274902 1598.01001 1592.634644 1586.226074 1580.511475 1572.866577 1557.483643 1544.019653 1532.528809 1523.387451 1528.417725 1538.844727 1545.097412 1548.625488 1556.041626 1560.473755 1560.764893 1552.085205 1554.414185 1563.384155 1563.940063 1557.082031 1546.749512 1537.78125 1534.184448 1527.583618 1524.270996 1518.317627 1512.897949 1505.803589 1497.386597 1488.678955 1480.219238 1475.619019 1465.00708 1450.059082 1435.883301 1424.848877 1414.538574 1400.271973 1392.518677 1386.410278 1382.976318 1391.955322 1396.508179 1399.007812 1405.023682 1420.324097 1432.002075 1438.621948 1432.613037 1422.370605 1405.243774 1416.052734 1422.820923 1419.062866 1409.641479 1408.722046 1415.732056 1422.457642 1432.076416 1427.209106 1409.564453 1413.126465 1422.216431 1415.955444 1403.222168 1387.442505 1386.914062 1393.976318 1406.354126 1417.026978 1424.321777 1429.686768 1431.912598 1430.691528 1426.515869 1421.61438 1420.196899 1421.841919 1423.942505 1425.954346 1427.71582 1429.133789 1429.335205 1427.484131 1415.685181 1417.794556 1424.783081 1425.313965 1430.528198 1433.075684 1430.387695 1425.531372 1420.27124 1417.666626 1417.602539 1416.686523 1410.931274 1403.57373 1397.922607 1391.635132 1382.054443 1377.692871 1373.781128 1372.011841 1376.607422 1379.849243 1381.272583 1382.119019 1382.763794 1382.886475 1382.639893 1381.303467 1378.965454 1377.099976 1379.379272 1389.200073 1395.7948 1402.729736 1406.379761 1411.462158 1415.769653 1415.450195 1413.212158 1413.536499 1409.123901 1405.319824 1406.137939 1409.526245 1415.049927 1418.233521 1429.848877 1437.151123 1441.114746 1441.223145 1439.709595 1439.408813 1440.084839 1441.398193 1441.175171 1440.307861 1438.786377 1436.20166 1432.453003 1428.181885 1422.293091 1424.806641 1421.362915 1411.262451 1393.234497 1373.367798 1349.646362 1331.666748 1319.93811 1304.836182 1305.54834 1302.339966 1299.44519 1304.961304 1309.166992 1313.512085 1321.587402 1333.969971 1342.583984 1342.574951 1340.684814 1347.004517 1366.993652 1380.683716 1384.384155 1392.638428 1401.235718 1393.356323 1383.903687 1376.29126 1373.644897 1376.598145 1378.998169 1381.419434 1384.428345 1387.904663 1394.129639 1413.977051 1428.558472 1423.969849 1417.563232 1406.214233 1385.182617 1367.402466 1351.338257 1347.984741 1365.857666 1381.8573 1397.091309 1407.862671 1418.064819 1431.611572 1442.342773 1443.364258 1439.345825 1435.012085 1428.533325 1417.197021 1404.046021 1389.45874 1377.140747 1366.668335 1356.523682 1350.109741 1349.065552 1346.861694 1348.169678 1377.869507 1382.892456 1374.6875 1364.337524 1353.220947 1352.943115 1352.943115 1355.897095 1352.238159 1342.402832 1328.189209 1315.47998 1305.567627 1299.296509 1293.643311 1287.849976 1282.963013 1275.60498 1269.453247 1266.814819 1269.536621 1271.352295 1271.173828 1269.86145 1265.399414 1256.509277 1247.543213 1257.909424 1271.729004 1292.280884 1312.759521 1325.677368 1343.320068 1351.939697 1355.393677 1355.49707 1354.162231 1352.84668 1349.871338 1343.906616 1338.081421 1331.868896 1326.197388 1320.693237 1315.907104 1315.215454 1317.168091 1312.797729 1306.123901 1305.1521 1309.215698 1309.131836 1306.233521 1301.68811 1295.674683 1290.877808 1282.819336 1281.233032 1278.200195 1272.275269 1269.127197 1264.332886 1253.703003 1243.2771 1237.662476 1232.081543 1238.509155 1248.697876 1255.849609 1261.739746 1270.466675 1281.156006 1290.966309 1302.825806 1311.732666 1323.905151 1331.922607 1337.628174 1341.726929 1343.533691 1346.135986 1349.103882 1352.410156 1353.616699 1353.231445 1353.64209 1353.380249 1351.517822 1352.031494 1357.477905 1366.176025 1373.690308 1380.069336 1385.069946 1390.200073 1397.322266 1402.14856 1405.784668 1409.304321 1411.0802 1411.006104 1409.346924 +1594.965576 1608.913574 1624.594849 1644.976562 1666.634766 1675.710449 1681.010254 1684.666992 1685.320679 1686.780151 1691.00354 1695.151611 1702.367432 1708.452393 1711.411133 1714.664307 1718.258057 1720.561523 1721.31665 1721.440186 1721.164551 1719.627075 1717.692139 1715.911865 1712.948853 1709.763428 1707.54895 1700.237671 1691.857788 1682.346313 1675.822144 1668.643188 1659.961548 1650.871948 1643.087036 1636.396729 1627.256348 1618.828247 1612.399414 1624.136597 1629.128784 1628.178833 1612.993896 1595.089233 1603.852173 1609.802856 1617.397583 1615.39624 1610.78186 1605.921387 1601.823975 1596.505005 1589.60376 1575.157837 1570.730347 1594.048218 1616.751099 1631.98938 1636.225708 1624.899536 1614.19751 1622.656494 1629.171387 1633.03186 1639.855957 1633.045654 1618.386963 1597.90918 1588.452148 1604.598633 1621.953125 1638.110107 1644.469971 1646.880127 1643.371826 1635.94104 1623.81897 1612.549194 1605.252686 1599.194946 1594.300049 1589.164551 1577.699219 1565.450562 1554.144897 1543.056641 1529.703735 1517.532715 1509.716187 1512.827759 1527.523438 1549.366577 1566.983521 1579.867676 1589.175171 1591.735107 1590.532959 1588.086548 1584.483765 1578.760742 1573.857544 1566.258179 1558.890625 1550.865967 1532.632446 1518.217041 1505.898071 1491.089722 1474.313965 1458.83606 1445.027222 1430.651245 1421.28125 1409.822876 1398.468506 1393.040283 1399.622559 1416.971802 1431.208496 1442.649048 1453.052124 1468.31543 1481.048462 1492.558228 1503.842896 1516.548462 1525.35791 1534.171387 1550.074829 1563.973633 1582.77478 1594.25415 1606.289917 1631.955566 1647.195312 1650.335449 1647.368774 1637.696289 1628.297974 1618.108398 1608.575439 1598.191772 1585.976318 1580.682739 1583.506714 1588.631836 1594.452881 1601.37561 1609.829224 1623.835815 1632.04834 1634.414062 1634.393921 1633.137207 1632.800415 1631.929443 1630.821289 1629.460571 1628.767212 1628.48291 1628.455444 1628.687378 1629.512573 1630.641846 1630.956421 1630.106567 1627.974976 1625.636963 1621.524048 1615.181152 1610.941528 1610.134766 1611.064209 1611.368896 1609.31958 1600.363647 1592.175049 1582.401245 1568.423584 1555.075195 1549.184814 1548.860962 1542.103516 1531.409424 1519.533081 1506.78064 1496.36377 1496.393555 1508.866333 1523.435181 1531.795776 1537.522705 1545.25708 1549.593872 1553.324463 1561.192261 1570.578003 1575.349731 1576.285522 1571.390137 1564.014282 1557.941772 1550.853271 1540.21228 1526.923218 1519.726196 1515.5177 1511.780884 1505.993408 1502.637451 1515.569702 1522.473267 1525.86853 1525.332031 1520.133667 1511.725464 1498.911011 1487.756836 1481.89624 1474.3396 1467.420044 1463.544434 1466.290039 1468.478394 1467.976929 1465.850098 1460.714111 1453.906494 1463.935913 1476.130493 1482.884766 1478.783691 1480.757324 1489.157471 1501.722534 1518.371582 1527.251221 1537.014404 1542.757202 1551.88855 1567.275879 1580.42749 1589.175293 1587.574097 1576.99353 1566.983643 1556.217163 1543.177979 1532.803467 1521.45874 1500.211914 1485.148926 1469.630371 1458.463989 1450.381836 1442.695312 1440.853516 1434.688843 1428.174438 1420.273926 1413.621216 1405.575562 1395.604614 1410.57605 1423.26709 1438.542603 1443.297852 1437.453247 1445.372559 1459.28418 1472.914917 1481.783325 1494.341675 1508.867188 1525.263306 1532.828613 1538.378784 1543.854126 1552.827148 1564.682983 1575.103638 1590.025513 1600.572144 1610.432373 1615.88623 1621.065308 1631.012207 1637.27417 1637.395142 1628.729614 1624.056885 1625.618652 1623.631104 1616.94397 1611.731079 1598.580566 1594.136963 1592.349487 1591.112427 1588.322021 1585.193604 1572.566528 1559.515747 1545.196655 1531.428345 1525.459961 1533.713135 1542.38562 1552.114746 1562.521973 1566.941772 1569.915283 1568.138306 1564.268677 1560.27356 1564.945068 1565.700684 1559.133667 1547.627563 1543.996338 1540.748779 1538.231445 1533.678467 1528.969971 1525.066406 1515.399292 1502.557861 1488.94751 1474.442749 1463.832031 1455.327393 1441.991943 1430.196533 1418.395386 1408.276123 1397.70752 1387.981934 1384.515015 1389.161865 1398.278687 1405.040527 1406.440552 1406.43042 1421.161499 1437.270264 1444.602417 1440.985962 1429.516602 1414.693604 1421.390991 1429.91748 1429.58313 1421.825684 1418.403687 1431.687744 1440.006226 1444.3573 1433.663574 1416.374268 1434.179077 1435.574829 1421.497559 1404.779541 1387.94812 1391.157227 1403.151855 1413.803711 1422.083008 1429.788452 1437.100098 1438.621582 1435.557495 1430.137939 1425.866211 1424.097778 1423.951416 1424.915283 1427.70459 1431.619507 1433.604126 1433.844727 1430.714111 1423.50769 1429.131104 1431.229004 1432.908691 1436.913696 1438.625488 1439.010864 1435.337402 1426.325439 1424.333496 1419.638794 1415.560791 1408.760498 1400.702026 1390.549561 1379.216797 1377.58313 1377.922363 1378.156616 1376.464844 1379.385498 1382.148438 1383.692139 1384.960083 1385.905518 1386.249268 1385.789429 1384.016724 1379.555054 1377.547241 1381.529175 1388.922241 1394.270264 1398.313354 1401.643555 1408.294312 1414.337036 1416.751709 1418.221436 1419.380005 1419.65686 1415.727539 1417.178833 1421.792114 1424.857666 1426.625732 1430.865845 1438.117798 1440.988892 1440.555298 1437.536377 1436.36377 1436.019287 1439.722046 1441.158081 1440.71582 1439.963135 1437.89978 1433.735962 1429.936768 1421.953857 1406.120605 1400.870728 1397.44397 1384.318848 1365.355957 1346.340576 1328.032837 1315.005859 1307.008667 1305.215088 1300.157959 1301.816895 1308.347656 1316.47168 1320.931763 1325.559692 1334.877808 1343.112549 1346.063599 1347.342529 1347.08252 1358.824951 1376.439941 1392.153076 1398.762329 1406.256592 1397.902832 1390.371216 1381.096313 1379.802612 1384.407227 1387.833496 1391.793823 1396.241943 1404.474121 1414.771729 1426.310913 1429.411865 1421.961304 1414.980347 1404.785889 1387.317993 1372.899902 1359.685303 1347.584839 1361.438843 1375.711304 1388.643677 1403.112427 1412.287598 1428.310791 1438.119385 1447.87207 1451.702148 1443.30896 1436.112305 1428.943237 1417.490356 1402.940918 1389.307861 1372.496582 1361.223755 1360.431641 1359.318726 1359.332031 1378.226807 1396.048218 1392.880859 1377.128662 1364.586304 1362.978394 1366.529541 1366.82605 1363.538086 1356.080933 1340.410156 1329.784058 1322.223022 1310.897949 1302.760498 1297.331909 1291.934082 1285.635986 1280.252319 1275.159058 1273.56958 1276.324341 1276.849487 1276.456787 1274.916382 1271.208252 1261.185791 1252.719116 1254.197998 1270.394409 1296.720825 1317.352173 1334.198486 1349.682007 1361.3927 1367.447998 1368.87146 1366.664917 1360.595947 1354.887573 1346.745239 1339.447266 1332.673096 1327.331543 1323.036255 1318.18042 1318.117554 1319.2771 1316.143921 1307.032837 1307.36438 1313.619019 1312.203369 1308.320679 1305.04541 1298.087646 1293.36499 1282.662964 1281.239136 1278.310669 1268.752441 1266.269165 1258.387573 1255.344604 1245.2854 1239.637817 1232.899658 1236.722168 1242.447388 1251.565674 1260.717285 1270.67627 1280.902588 1290.010864 1301.027832 1309.836426 1322.085571 1331.634277 1335.556885 1339.514404 1341.969116 1344.134033 1346.165283 1348.51355 1350.379883 1350.127075 1349.172485 1346.985718 1346.219116 1349.964355 1355.001953 1361.40332 1367.8479 1375.464233 1380.835571 1386.067017 1391.290649 1396.119629 1399.423462 1401.915771 1403.087524 1403.362183 1402.296509 +1596.672119 1609.353027 1625.199097 1643.067627 1659.789062 1658.021729 1665.340332 1671.486206 1677.067627 1681.262573 1688.467285 1696.918579 1702.25708 1707.299927 1710.231445 1713.85791 1718.324463 1720.598999 1721.442993 1721.740479 1721.698975 1720.341797 1718.994873 1716.664062 1712.406006 1708.387695 1701.792236 1691.226074 1682.092651 1676.388306 1670.803101 1663.88855 1655.783447 1646.568481 1639.003052 1631.932861 1622.830933 1624.125488 1632.194336 1637.273438 1628.854492 1618.221069 1606.025269 1616.135498 1625.197754 1633.031128 1633.498413 1628.787476 1622.317749 1613.376343 1606.651245 1600.94043 1593.052368 1579.371704 1570.867798 1592.342041 1617.608643 1635.769043 1638.892212 1632.383545 1620.950317 1633.94873 1645.384399 1650.646362 1647.250244 1630.708496 1616.587524 1594.174072 1606.876343 1620.153931 1636.346802 1645.585327 1655.422485 1656.903809 1649.01355 1640.393433 1629.228882 1616.102417 1607.179932 1601.102783 1595.433472 1589.052368 1580.950684 1571.043701 1559.163208 1543.463135 1529.473145 1517.005981 1509.522095 1518.095581 1532.519775 1546.673218 1565.127563 1582.875488 1594.459351 1598.131348 1596.07666 1592.469727 1588.362427 1582.26355 1574.82019 1565.177979 1556.37915 1540.180176 1520.439209 1508.893799 1494.933105 1478.878906 1459.737671 1449.685303 1437.123901 1427.725708 1420.572021 1409.843872 1399.206543 1393.852783 1401.023315 1416.006958 1428.899658 1441.644653 1448.724487 1463.044189 1475.285522 1484.474365 1492.888672 1502.035156 1513.796143 1523.252441 1542.524658 1555.283569 1570.198364 1586.277588 1608.92688 1634.709839 1647.071045 1651.703247 1650.698242 1643.080566 1634.567139 1622.049316 1612.837891 1603.202759 1587.588989 1584.123535 1587.789307 1592.893311 1596.936523 1602.890747 1610.298096 1625.307495 1631.147705 1634.314209 1636.072754 1636.590576 1636.581543 1635.688599 1634.39624 1633.131104 1632.874756 1632.416138 1631.747437 1631.041992 1631.505127 1633.405518 1634.792603 1634.966187 1633.78894 1630.329468 1625.838989 1622.091553 1618.456055 1615.0 1613.575684 1613.063354 1609.327148 1599.446899 1589.81897 1578.320312 1566.497314 1562.95105 1558.827881 1554.564453 1545.594482 1532.77063 1520.485718 1509.091187 1497.630737 1497.804077 1511.821045 1526.05835 1535.897095 1547.27771 1558.981689 1565.640137 1567.157349 1568.792969 1579.015991 1591.225586 1592.242676 1581.037598 1574.69519 1567.037476 1558.890259 1546.667358 1538.140015 1536.605469 1530.016113 1522.098022 1516.310913 1508.655273 1503.000977 1513.452515 1517.840698 1520.693359 1515.050659 1507.183472 1497.361572 1491.125366 1484.503784 1476.219482 1471.810425 1469.501587 1471.629639 1471.487427 1468.942261 1465.637329 1461.090088 1458.42749 1468.683838 1479.771118 1491.291504 1495.437256 1491.725342 1489.31543 1496.847168 1510.310913 1519.921143 1535.110596 1543.1698 1553.659302 1567.386475 1581.536987 1589.05835 1584.890747 1574.280518 1564.201904 1555.573364 1545.718506 1537.338623 1521.160522 1501.449341 1486.103149 1471.697876 1463.912354 1459.877075 1455.11084 1449.907959 1442.740845 1433.216431 1425.477417 1421.983032 1409.859131 1396.752563 1409.657227 1427.797852 1440.860718 1450.169189 1443.862427 1437.671387 1447.155029 1461.838745 1470.426636 1483.872314 1496.787109 1509.107788 1524.603638 1530.597168 1536.265259 1542.178589 1554.361328 1564.314819 1577.171021 1586.377197 1592.883667 1602.57605 1615.786865 1627.00769 1630.288696 1628.00708 1618.931152 1613.201416 1613.824463 1613.594727 1610.470459 1600.741821 1590.518311 1583.84729 1584.261353 1585.82312 1586.665039 1578.383301 1566.146484 1554.872803 1541.348999 1528.020508 1532.079468 1540.312378 1546.856567 1555.905151 1567.171631 1574.787354 1575.496826 1573.151245 1570.614624 1568.717773 1568.547119 1572.737427 1564.181396 1555.216309 1549.020874 1545.482178 1541.912354 1539.338623 1535.351929 1530.043457 1524.206299 1509.01355 1488.795776 1473.794312 1459.238159 1445.508057 1434.831909 1426.133789 1413.97522 1404.064575 1395.456787 1386.077515 1387.213013 1393.280151 1405.332397 1416.500732 1421.970459 1420.537598 1424.86853 1437.672729 1451.497192 1448.682983 1437.067993 1424.796143 1427.521851 1435.892822 1437.962646 1434.308472 1427.040039 1445.080444 1454.705566 1452.606567 1436.97168 1433.893677 1443.865112 1438.407593 1420.635742 1404.977051 1388.31958 1398.21106 1411.169556 1419.989746 1427.466553 1440.265625 1443.538086 1443.793213 1440.5802 1435.496948 1429.749756 1426.120728 1425.651489 1426.183105 1431.091187 1436.566284 1439.087402 1439.191284 1435.296875 1426.42395 1431.991455 1437.880127 1440.630981 1441.747925 1441.530273 1438.913452 1435.588989 1428.954224 1425.294922 1418.464233 1412.540283 1405.618042 1397.769775 1388.708496 1377.213135 1380.069092 1383.050293 1382.473389 1381.610718 1382.416382 1383.942871 1385.738159 1387.310425 1388.885986 1389.681885 1389.282715 1387.688477 1382.38623 1380.8396 1383.813477 1387.562866 1390.615601 1390.403198 1396.678833 1401.113037 1412.153687 1416.810303 1420.364258 1423.905029 1426.126343 1425.978271 1426.497314 1428.824829 1431.060303 1433.695068 1437.624756 1441.028076 1441.316162 1441.380127 1437.870239 1431.313354 1427.520996 1434.164307 1439.571045 1440.872314 1440.369873 1439.01062 1434.857178 1431.078247 1427.553833 1415.904419 1389.503052 1371.731079 1366.540771 1347.480469 1332.214844 1322.940063 1315.84436 1308.666626 1304.962646 1301.348877 1301.176025 1306.832397 1316.018433 1322.121948 1328.794434 1334.102173 1341.076416 1346.533447 1353.104614 1357.991455 1363.137085 1372.620361 1389.179932 1402.503662 1416.637329 1401.899658 1393.71167 1389.413452 1390.633179 1395.254639 1402.806152 1406.604858 1414.088501 1421.321045 1428.597046 1429.584595 1421.318237 1410.412842 1404.296753 1393.338623 1382.710205 1372.239258 1359.958618 1350.445679 1360.553101 1374.147095 1383.535767 1394.398438 1407.597534 1421.015137 1432.286865 1441.63916 1454.415039 1454.556763 1446.331299 1436.567017 1427.403198 1415.638794 1398.852539 1379.388306 1370.780273 1372.753296 1369.137573 1374.329956 1398.877319 1408.429199 1404.141846 1383.593262 1369.388428 1379.845825 1382.81665 1380.126465 1372.270386 1362.602539 1350.54187 1337.809082 1325.176025 1314.742798 1306.99231 1300.483154 1293.739502 1289.161621 1284.224121 1279.471436 1281.588501 1283.272705 1282.695801 1282.184204 1281.456299 1277.86731 1270.321289 1259.464233 1253.132935 1269.149658 1294.414917 1315.978271 1333.580811 1349.571655 1370.027222 1379.065552 1377.048218 1370.614502 1365.07666 1356.911743 1348.887451 1340.941895 1335.07251 1330.478882 1327.081299 1323.324463 1321.905518 1320.572754 1317.112915 1312.733276 1315.912842 1317.830688 1315.008423 1310.479858 1305.707886 1298.931274 1292.624023 1289.238403 1286.381958 1282.27002 1279.463623 1269.565796 1267.53894 1266.029419 1258.038452 1243.547485 1235.970459 1234.752808 1240.39209 1248.011108 1256.941772 1264.353149 1273.845337 1284.118408 1294.137695 1303.271606 1313.431763 1328.035645 1332.69165 1337.218018 1339.953491 1341.690186 1343.53064 1344.471069 1346.963013 1347.013306 1345.107056 1342.098877 1341.12146 1347.442139 1351.8927 1359.47583 1367.286987 1372.093628 1378.044434 1382.38269 1386.964355 1391.664551 1394.339355 1396.13147 1397.191406 1397.480835 1397.126709 +1593.788696 1604.474243 1620.03772 1632.96106 1642.946167 1648.347168 1654.046387 1660.458008 1665.814941 1674.586426 1689.788574 1697.544189 1701.67395 1704.802979 1707.87207 1713.372559 1717.692261 1720.581055 1721.452026 1721.840454 1722.05127 1721.680176 1720.642334 1717.682495 1712.131836 1707.038696 1699.14856 1687.26709 1677.866333 1671.063477 1665.35498 1658.815796 1652.180542 1643.93689 1634.255249 1629.446167 1634.91626 1637.366089 1641.093872 1632.88855 1620.243042 1611.647339 1621.114746 1634.438354 1641.345703 1644.534058 1643.885498 1639.548096 1633.134644 1623.90564 1610.508423 1603.733765 1595.297974 1583.380371 1574.162109 1595.037842 1618.005615 1638.806396 1642.906372 1637.499634 1630.09668 1646.030151 1654.407593 1659.325806 1645.358887 1632.819946 1616.086548 1604.318726 1623.120972 1634.365112 1643.552002 1652.840576 1661.511597 1660.526489 1651.004761 1641.554077 1631.175049 1618.058105 1607.656128 1601.682617 1595.36438 1588.362671 1580.562744 1570.792236 1557.578369 1539.609497 1525.641357 1514.323975 1510.903442 1526.019531 1540.75647 1554.356689 1570.402222 1584.500122 1598.629028 1601.501343 1600.345459 1596.622559 1591.265991 1583.970459 1571.629639 1559.918823 1551.098755 1537.149414 1523.459595 1513.239868 1499.832275 1483.500122 1468.833496 1454.788696 1442.268677 1428.345947 1421.904907 1412.405029 1399.954346 1395.043579 1401.909058 1414.953857 1425.758789 1438.94165 1444.813599 1452.75061 1465.503906 1474.738403 1480.7948 1488.796387 1498.825439 1515.466187 1535.621338 1553.022095 1574.851318 1596.081909 1609.968018 1633.45874 1645.832031 1653.752563 1657.180908 1646.05957 1637.970581 1626.322144 1616.371094 1605.484375 1590.18457 1592.505127 1596.610229 1597.264526 1602.126709 1608.155273 1613.742676 1629.197021 1634.973877 1637.851929 1639.692139 1640.519287 1640.51123 1639.631592 1637.963867 1636.764526 1636.338135 1635.696777 1634.025146 1633.064697 1633.071899 1635.610107 1637.756592 1638.103638 1636.94104 1634.334229 1629.844482 1625.923218 1622.315674 1618.241211 1613.386475 1610.493164 1599.21521 1591.734863 1583.593384 1575.862305 1574.894165 1575.114624 1569.255249 1560.627197 1551.515259 1538.521362 1525.882935 1514.033447 1500.212769 1499.194092 1515.891113 1529.445068 1540.209229 1555.002808 1569.635864 1576.898193 1579.444336 1579.513672 1585.183228 1592.760864 1594.893799 1586.425659 1578.6427 1573.256714 1566.637695 1559.669312 1553.772827 1551.547852 1545.070679 1533.425903 1523.546021 1516.459961 1511.02124 1504.02063 1513.037598 1517.162354 1515.644531 1513.31897 1506.493286 1499.975342 1489.540527 1477.458862 1475.27832 1477.260498 1477.022949 1474.163452 1469.654663 1465.572144 1460.470581 1464.447266 1474.80249 1488.022827 1499.952026 1506.655518 1508.295166 1505.69458 1507.258301 1510.538086 1516.366211 1528.220947 1541.890137 1553.858887 1566.538208 1579.89917 1588.223267 1582.564209 1573.915405 1568.196777 1560.433716 1550.350952 1539.512085 1523.487793 1514.245239 1502.529541 1490.47522 1481.051514 1471.202026 1461.171997 1453.031494 1443.326294 1435.834351 1430.830688 1426.177734 1406.45813 1400.267456 1410.850586 1431.37085 1448.403564 1465.295288 1457.651978 1449.511475 1450.299072 1450.298706 1459.418579 1467.536987 1485.955566 1497.727661 1507.258545 1516.956543 1523.408447 1528.031616 1535.1698 1550.587891 1558.683594 1575.646484 1587.039185 1603.324097 1614.662231 1621.515625 1621.153564 1617.980103 1608.507568 1601.10498 1600.736206 1601.230103 1597.032715 1589.44165 1580.834351 1573.553833 1571.328613 1572.80542 1570.328735 1566.19458 1556.852295 1547.026001 1533.251221 1536.331787 1543.445068 1552.28772 1555.930298 1560.850586 1566.936035 1574.672485 1578.105469 1577.25647 1575.789673 1572.340698 1569.777832 1572.593262 1566.371582 1558.747803 1552.296387 1547.948853 1539.836304 1538.977295 1535.300415 1531.014038 1526.779419 1511.160156 1489.585938 1475.039917 1459.568848 1446.320923 1433.977295 1422.216797 1412.292603 1402.937988 1394.999268 1386.555298 1388.354126 1397.406738 1415.819702 1427.581421 1434.463501 1434.798584 1433.410522 1443.996582 1458.151245 1460.231689 1445.833984 1430.263672 1429.961548 1444.634766 1453.380249 1451.115479 1443.152832 1449.066406 1461.43103 1462.146729 1455.222046 1450.008911 1442.037109 1430.556396 1412.843994 1399.148438 1389.967896 1402.754395 1416.73999 1425.331055 1438.143677 1448.280396 1452.426758 1448.912109 1445.691162 1441.549194 1437.092041 1430.828613 1427.045654 1428.206299 1436.140137 1440.947144 1442.783936 1443.078247 1441.266357 1437.021729 1437.279541 1441.963013 1443.271729 1442.712402 1441.588379 1432.935303 1424.874634 1422.43042 1418.317383 1413.375854 1407.518921 1401.239136 1391.541382 1383.902222 1378.330078 1386.729614 1390.983643 1390.446655 1387.897461 1386.567017 1386.203613 1387.228271 1389.151855 1391.352661 1392.379517 1392.034546 1391.290771 1388.100098 1387.36377 1387.758301 1387.477783 1388.863281 1390.226807 1395.964111 1404.086426 1414.516479 1418.040161 1421.069946 1425.41333 1428.327026 1429.456421 1430.444824 1431.894653 1434.596436 1437.974121 1440.431519 1440.529297 1441.20105 1441.526855 1438.932495 1430.547485 1422.097534 1428.275391 1434.237427 1438.80481 1439.92688 1437.989868 1433.814941 1430.067993 1427.495605 1420.067749 1402.946777 1379.408203 1357.40625 1343.127075 1327.486572 1315.506592 1311.97644 1308.871094 1305.219971 1302.329102 1300.237793 1302.238892 1310.208008 1320.604004 1329.045288 1333.946167 1338.094971 1343.078613 1352.493286 1362.161255 1369.815796 1378.734253 1385.59729 1396.20105 1414.674072 1407.995972 1398.989014 1399.312744 1402.800293 1411.070312 1417.6698 1423.758667 1428.61377 1429.945312 1426.578491 1419.385498 1412.183105 1400.994629 1388.35022 1382.577637 1375.135864 1366.057129 1363.61438 1353.828247 1357.920776 1371.037231 1380.830688 1388.78772 1401.785645 1413.354492 1426.837036 1434.47583 1446.131958 1454.175537 1454.33252 1447.100098 1436.260864 1423.96875 1407.524658 1398.930664 1394.498047 1385.723511 1381.634399 1397.735962 1418.722778 1418.880249 1412.34436 1390.805664 1387.669678 1396.307495 1392.699951 1386.731323 1381.108643 1370.547363 1354.858154 1344.410156 1332.068481 1319.52771 1309.677368 1302.762695 1299.601562 1294.080933 1288.197021 1286.561157 1289.201538 1289.913208 1288.640015 1289.247192 1291.774292 1289.374756 1281.278076 1272.560913 1258.831177 1263.925049 1288.878052 1308.31543 1325.85022 1344.144653 1365.291504 1375.31897 1374.421631 1368.980469 1364.143555 1356.388672 1349.97229 1343.44812 1338.390991 1333.899658 1329.68103 1327.711304 1325.623291 1321.144165 1317.299072 1315.310181 1316.681763 1317.802612 1316.594849 1310.789062 1304.233887 1301.05896 1296.205933 1295.251953 1291.088135 1290.145752 1284.599854 1277.351196 1276.86731 1272.521729 1262.754028 1247.812134 1240.946533 1236.441528 1235.598877 1240.381104 1241.298828 1257.378418 1269.216553 1282.91272 1294.727661 1306.483643 1319.052246 1327.587158 1331.551147 1335.250732 1337.88916 1339.630371 1340.695557 1341.786621 1344.574707 1344.65564 1342.541382 1340.539551 1342.938599 1348.673096 1352.489136 1358.382568 1363.381348 1366.747925 1374.369629 1377.25354 1380.907227 1384.728882 1389.950562 1391.209106 1391.576294 1391.428955 1391.350342 +1583.828003 1595.000488 1607.594849 1620.494873 1630.146851 1636.575806 1643.886475 1656.065918 1671.755371 1682.48291 1694.003662 1699.56543 1703.003784 1705.633911 1708.667725 1714.21814 1717.684814 1720.353394 1721.355225 1721.74939 1721.949951 1721.933472 1721.212158 1717.739746 1711.173584 1705.375244 1697.161743 1684.758423 1675.140869 1667.20874 1660.050781 1654.698486 1649.200317 1641.423096 1635.426514 1641.714844 1647.298218 1651.035156 1643.204346 1620.27002 1620.631836 1628.487427 1636.396851 1644.83667 1652.120239 1655.219482 1654.00415 1647.060791 1639.481689 1630.73877 1617.936035 1607.226196 1598.643311 1587.391113 1581.695435 1608.043945 1626.667358 1645.145752 1649.515381 1646.4552 1639.243042 1650.018433 1660.044067 1662.456909 1652.502075 1638.073486 1621.22229 1614.781616 1632.202637 1642.022095 1650.324341 1657.518188 1661.41687 1658.821045 1649.516846 1640.441162 1630.210693 1616.43457 1606.435547 1600.093872 1592.751709 1585.612793 1576.661621 1565.557861 1550.545166 1532.68396 1521.285278 1511.698242 1515.972778 1532.37915 1544.979614 1562.517822 1577.676147 1588.03186 1599.531494 1604.992676 1604.731812 1600.547729 1592.882812 1583.641479 1573.316895 1568.388184 1560.973877 1554.205322 1542.506958 1530.966064 1514.881592 1500.196411 1489.710693 1473.592529 1454.550293 1436.25415 1423.593384 1415.135742 1401.407715 1396.832642 1401.706299 1414.111816 1422.442261 1432.007812 1439.697754 1445.46228 1452.755981 1461.993408 1472.460205 1485.827148 1506.090576 1523.884277 1540.238159 1556.16748 1580.640015 1600.252686 1619.70459 1630.252686 1642.609863 1654.178955 1661.595215 1652.464355 1641.810425 1630.81604 1619.924316 1609.76709 1599.501343 1603.28833 1604.218872 1603.417725 1606.247559 1611.923218 1617.812012 1631.873901 1637.943115 1642.087402 1644.040527 1644.794556 1645.035767 1643.936768 1642.052979 1640.516724 1639.518188 1638.544312 1637.259033 1635.961426 1635.699463 1638.498047 1640.512451 1640.621948 1639.230347 1636.675171 1632.59436 1628.364624 1624.082397 1618.834106 1609.779785 1604.657959 1597.338501 1593.420166 1587.913818 1587.787842 1587.96936 1584.523926 1576.270874 1563.645752 1552.981079 1540.499146 1527.241089 1513.974976 1503.976685 1503.395996 1520.630371 1531.793945 1541.777954 1557.717896 1574.50415 1583.609253 1589.238159 1590.187256 1589.662354 1589.967407 1588.738037 1584.976318 1580.272705 1576.538086 1573.452148 1566.365845 1562.306519 1555.86438 1549.790405 1539.457642 1527.831909 1520.668335 1514.773315 1509.942139 1506.106812 1515.604614 1517.648682 1519.347168 1514.647827 1505.697388 1493.997925 1485.209473 1486.644409 1485.710083 1481.081787 1475.94751 1469.974609 1464.682983 1465.059326 1471.682617 1482.162476 1492.271484 1508.717773 1518.053711 1519.838989 1517.464722 1518.120728 1521.085815 1521.155762 1524.769287 1541.1875 1551.46228 1565.457031 1577.238281 1588.679321 1587.675049 1584.124023 1574.387695 1563.926025 1552.895142 1540.210083 1533.600952 1527.403564 1516.693604 1499.418945 1487.753418 1480.081177 1467.52002 1456.742065 1446.321289 1436.772583 1426.84375 1413.761353 1401.626343 1404.202271 1411.428955 1429.720825 1447.058472 1465.071289 1468.034668 1463.363403 1464.562378 1466.858398 1466.109863 1464.366821 1469.427124 1481.052612 1490.724731 1500.064575 1508.364624 1519.861084 1533.74231 1545.496826 1559.536499 1577.870117 1592.171509 1607.236694 1614.375488 1615.874512 1611.415649 1604.804443 1597.134521 1591.404175 1588.389893 1586.220581 1581.307495 1574.739014 1567.890503 1563.692017 1561.950562 1559.473267 1557.13501 1552.786011 1546.67395 1535.702881 1540.677734 1546.31958 1553.561768 1560.192139 1566.860718 1571.749512 1573.053589 1577.463013 1583.17627 1580.330078 1572.036255 1565.244507 1563.289551 1562.390991 1558.440552 1552.566528 1547.716431 1541.459473 1533.69458 1527.041504 1528.140259 1527.395142 1524.063965 1508.183594 1492.15979 1477.295776 1459.825073 1445.517578 1430.650879 1417.0802 1408.533447 1400.796997 1394.355835 1387.637451 1389.413208 1401.351074 1420.130615 1444.167358 1451.141113 1452.287354 1451.094604 1448.768311 1459.919067 1467.214722 1451.567261 1437.421875 1436.577026 1454.391357 1466.345459 1468.040161 1460.398804 1458.509277 1467.515137 1470.229858 1466.712769 1453.430786 1441.511353 1430.743408 1418.497314 1407.833252 1399.389771 1405.0177 1420.715698 1431.468506 1445.782715 1460.445923 1462.24585 1456.894531 1451.795654 1447.740845 1443.634399 1439.675171 1436.553101 1435.218506 1440.43811 1444.088623 1446.280273 1447.577881 1446.551514 1441.441284 1439.826294 1445.151733 1444.272461 1442.426514 1439.23938 1430.929932 1424.026855 1418.66626 1412.898315 1407.799072 1401.349365 1398.419312 1392.81665 1387.966553 1385.012329 1392.236084 1394.463135 1394.064209 1391.340942 1388.858032 1387.796631 1388.675293 1391.093994 1393.375244 1394.256714 1392.662354 1390.387817 1390.290527 1392.873169 1392.011108 1388.53894 1392.169922 1393.654541 1397.829712 1403.49646 1411.058716 1415.973145 1418.665894 1423.327393 1427.185913 1429.769775 1431.196289 1432.723511 1435.079346 1437.900513 1438.589355 1437.976318 1438.234009 1439.44519 1436.709106 1428.859375 1414.761963 1419.477783 1427.135254 1434.135376 1435.182617 1433.434082 1430.936768 1427.16687 1420.369385 1415.227539 1406.685181 1392.1875 1371.20166 1353.857178 1325.720825 1316.225952 1317.392578 1313.331421 1305.994385 1303.345459 1301.861328 1300.793945 1301.93457 1315.003418 1324.442261 1331.426758 1336.161255 1339.53186 1347.302612 1357.258545 1369.505493 1377.655762 1387.772339 1396.60144 1405.823608 1413.055054 1408.660889 1416.515381 1418.570435 1423.791626 1428.736328 1429.596802 1427.611694 1422.096191 1413.735229 1400.433594 1392.99585 1387.187134 1384.627197 1378.759033 1375.251953 1378.611206 1375.970215 1362.567383 1360.106689 1367.378296 1376.889404 1384.748535 1395.347656 1408.444092 1418.861572 1427.797363 1438.02417 1447.673584 1454.035034 1454.625732 1445.705322 1432.546143 1423.825928 1423.414673 1418.34668 1406.492432 1396.62207 1420.691162 1430.543213 1427.23877 1419.630493 1399.161011 1402.164185 1411.403442 1405.904541 1394.74646 1386.63562 1378.416382 1358.600708 1343.762695 1333.173462 1323.533569 1315.300781 1311.39978 1307.158569 1296.357544 1291.225464 1293.806396 1296.001343 1296.071533 1294.210327 1295.3125 1300.90564 1300.652222 1291.511353 1280.149414 1270.283203 1264.211914 1279.817261 1299.314819 1320.571045 1341.089844 1360.476562 1371.416016 1369.685425 1365.37085 1360.315186 1354.451782 1349.553589 1344.506714 1340.368652 1336.41272 1332.533325 1331.503418 1328.703369 1322.004883 1317.06604 1316.083374 1317.13562 1318.680176 1317.529053 1313.951172 1310.469116 1306.004272 1303.853027 1300.884521 1298.057129 1296.135498 1290.463379 1286.23291 1284.393311 1277.820068 1267.020386 1254.0896 1245.939941 1241.349121 1238.011597 1237.383057 1242.468384 1257.951172 1270.158325 1284.561768 1297.778931 1309.312622 1321.193604 1330.487793 1332.349487 1334.223267 1336.317505 1338.073975 1339.477783 1341.455078 1343.421021 1343.066895 1339.81958 1340.841431 1351.514038 1355.884155 1362.107056 1367.822266 1367.658813 1370.110474 1373.837036 1376.390381 1377.057739 1378.764282 1384.543091 1387.190186 1387.94519 1388.072876 1388.858032 +1595.57251 1611.423828 1620.359131 1629.461548 1642.443359 1650.40979 1658.310181 1670.074707 1681.510498 1692.514282 1699.845093 1704.649414 1707.249023 1710.171387 1714.40564 1718.196899 1719.788696 1720.572266 1720.833252 1721.327271 1721.947754 1722.122681 1721.318115 1716.61853 1710.075562 1702.802246 1693.994629 1682.695312 1674.096313 1665.55835 1657.298096 1651.370361 1645.907715 1638.765625 1645.077026 1654.287598 1661.176636 1658.83374 1642.072266 1618.619629 1627.453857 1637.131348 1642.78125 1655.248779 1662.289307 1667.747192 1667.271851 1654.613403 1643.023438 1634.459839 1621.763306 1610.482666 1602.231567 1588.306763 1591.048096 1616.664185 1638.525635 1651.172241 1659.047607 1659.087769 1647.522217 1657.327637 1665.261963 1665.28894 1659.414673 1639.762817 1623.777466 1625.308838 1640.442139 1649.685669 1658.376099 1661.188477 1660.82312 1656.454834 1646.787231 1636.908447 1623.903076 1613.595703 1605.444336 1596.668579 1587.626465 1577.975342 1568.770874 1556.933838 1539.787598 1526.297485 1516.322876 1512.972778 1522.736328 1534.446899 1546.139648 1564.77356 1581.195557 1592.496216 1602.297119 1609.604614 1610.470337 1604.657837 1595.413208 1588.6875 1582.721558 1577.654175 1570.320557 1561.134399 1550.749268 1539.285645 1522.372925 1505.972046 1494.851196 1481.86792 1457.77478 1438.944214 1425.767944 1429.081055 1410.727051 1401.586426 1400.00647 1410.410278 1417.765259 1424.28418 1429.539429 1441.154419 1450.473877 1463.127197 1475.359131 1490.984863 1508.949585 1526.235107 1541.22583 1553.532715 1575.923462 1595.078491 1616.323364 1625.910278 1635.671875 1651.356079 1662.550659 1659.782715 1648.907715 1638.839111 1627.883545 1618.668701 1614.452881 1612.707886 1611.125 1608.921021 1610.36792 1617.825073 1622.806519 1633.531738 1641.927246 1647.105591 1650.023071 1651.254639 1650.579102 1648.443481 1645.665039 1643.891968 1642.577148 1641.914062 1641.528076 1641.690308 1642.407471 1643.862061 1644.230957 1643.776123 1641.682007 1637.990479 1633.943604 1629.723755 1625.302124 1620.811279 1616.021606 1612.229492 1609.642822 1604.932129 1601.064697 1596.814209 1591.944702 1588.144165 1578.640259 1567.586792 1556.872314 1542.703491 1529.106689 1517.464722 1508.857422 1508.795654 1523.86084 1534.14978 1545.591553 1559.356812 1577.293335 1590.010254 1599.103027 1596.210571 1591.11377 1586.866577 1582.500977 1577.814331 1576.621094 1574.970825 1572.285645 1566.723999 1561.935547 1553.731323 1547.080322 1538.990601 1529.204102 1522.619873 1517.380493 1514.147095 1508.826904 1513.246582 1517.856812 1522.970581 1521.895996 1508.502808 1501.186523 1494.015259 1495.912109 1491.659424 1484.181641 1476.972168 1470.783936 1468.190063 1477.707153 1479.929932 1490.521484 1501.356689 1513.80188 1527.357056 1530.420044 1530.109863 1529.725464 1534.391602 1534.09375 1533.505249 1538.617798 1548.9823 1563.756958 1578.522095 1590.860962 1596.245605 1590.199341 1577.679443 1568.894775 1559.19519 1547.624634 1541.537964 1534.165039 1524.661987 1505.487183 1494.649536 1485.268433 1471.804199 1457.994507 1447.515991 1438.184326 1428.775146 1415.224487 1402.658447 1403.596069 1411.663574 1427.278076 1441.729492 1457.109131 1471.779541 1479.600342 1484.084106 1486.4198 1479.34375 1472.101562 1475.355835 1476.971436 1482.944702 1491.865845 1510.392456 1522.449829 1535.792603 1556.049316 1568.549194 1579.916016 1591.03772 1604.179688 1612.151245 1613.363281 1609.360474 1604.098999 1599.044067 1592.846313 1583.296021 1577.458374 1572.17688 1567.294922 1558.860474 1558.489258 1554.457153 1549.865234 1549.251343 1546.91394 1549.276733 1549.970215 1547.733521 1548.900391 1556.720337 1564.499756 1574.667969 1579.637085 1581.251465 1584.274536 1586.490967 1579.49231 1564.640991 1552.054688 1549.674927 1548.633667 1544.256592 1536.947754 1535.112305 1532.408813 1525.486816 1510.623779 1509.707886 1511.098389 1507.926758 1498.092163 1486.525024 1472.744507 1458.78772 1443.978027 1424.700684 1413.463257 1404.335571 1398.951538 1393.3573 1388.184448 1390.272217 1403.596436 1422.621948 1456.373657 1469.082642 1470.578613 1468.332886 1464.205444 1465.770386 1476.159912 1464.393555 1449.08313 1444.821899 1464.204224 1480.30835 1484.53064 1475.935181 1471.468384 1476.002808 1478.01123 1477.572144 1464.158569 1451.598877 1439.552612 1429.214478 1414.164673 1401.492065 1405.462769 1423.700684 1435.504272 1455.008789 1469.733032 1471.792114 1467.977173 1461.327881 1454.917358 1450.319702 1447.129761 1443.65979 1440.911377 1443.948608 1447.050171 1449.07312 1452.194702 1453.118896 1451.037476 1450.061035 1448.653931 1443.015991 1437.647461 1430.860229 1425.910645 1422.425781 1416.437134 1413.279785 1409.658813 1406.774292 1405.216675 1398.800903 1390.651001 1389.689209 1396.735352 1400.046875 1398.987549 1393.827393 1389.728882 1389.265259 1390.706909 1393.478271 1395.532715 1396.034912 1391.453003 1390.983154 1397.237305 1401.819092 1403.726318 1393.246094 1393.330688 1402.635376 1405.473389 1404.824585 1405.031494 1413.424438 1414.14502 1423.807495 1427.406616 1429.788086 1431.270996 1432.476562 1433.628906 1434.015991 1433.38855 1431.802368 1431.058228 1433.754639 1431.851074 1423.991821 1413.954712 1413.776245 1427.66748 1431.053589 1430.245117 1427.355713 1426.354492 1419.508423 1404.294189 1396.929077 1391.283569 1381.32251 1369.262207 1354.889038 1319.394165 1321.241699 1322.052979 1317.70459 1309.505127 1304.505005 1303.204834 1302.633667 1301.766357 1301.228027 1317.526489 1328.782104 1336.609985 1342.485107 1349.881958 1353.817993 1366.018433 1377.39502 1391.965942 1402.317505 1412.619507 1428.909302 1431.441162 1430.759277 1429.623779 1431.243042 1433.286865 1430.940674 1424.778809 1417.46228 1415.373535 1409.213501 1402.026733 1390.164429 1395.334473 1391.362671 1381.694824 1390.461426 1386.637573 1372.067139 1362.63916 1372.787354 1376.121582 1382.385986 1389.321411 1404.973022 1412.952881 1420.417847 1429.039307 1439.71936 1449.463379 1455.527466 1455.011108 1443.150391 1440.215454 1439.310425 1436.459717 1421.684082 1412.946411 1436.692993 1444.682373 1438.299561 1428.728394 1408.715332 1407.94104 1423.990112 1418.462769 1406.250854 1392.691284 1381.112061 1365.801147 1351.387817 1340.180786 1329.363037 1322.32666 1319.588989 1309.695435 1297.421021 1296.687622 1300.845947 1301.838135 1301.562622 1301.48999 1305.151245 1311.458008 1311.464355 1299.089355 1282.650146 1269.974121 1264.954224 1281.18103 1302.758301 1322.49707 1338.414307 1350.47583 1369.678833 1367.018433 1362.967041 1357.478271 1352.671021 1348.951172 1344.035767 1340.731689 1339.384155 1336.357788 1333.002808 1329.62561 1323.096802 1317.723511 1317.298828 1319.467773 1320.083862 1318.932007 1318.462036 1318.395386 1314.465942 1311.016235 1307.163574 1304.990112 1300.890259 1294.738037 1295.129272 1289.506958 1279.61792 1267.728027 1258.619019 1251.376831 1245.019653 1241.575684 1239.366699 1242.703369 1252.970825 1264.735352 1279.313477 1292.105591 1304.520508 1317.980347 1329.696289 1331.243286 1332.435181 1334.161743 1337.158447 1339.95459 1341.833008 1342.869263 1340.910156 1335.335571 1340.136963 1349.611572 1355.673218 1363.072266 1367.378662 1369.196533 1373.929932 1378.953125 1379.657104 1386.738647 1387.439819 1385.437012 1384.552979 1385.089355 1386.228271 1388.883667 +1604.587158 1617.486328 1628.809814 1642.358643 1656.028687 1664.608643 1669.071655 1682.551025 1692.166016 1700.046631 1706.555908 1709.679321 1713.117188 1717.101074 1720.161621 1720.167114 1720.187622 1720.2677 1719.657959 1719.380981 1721.480835 1722.118896 1721.119507 1714.879639 1707.553833 1698.300171 1688.919067 1679.601685 1672.221924 1663.595703 1655.204712 1647.525513 1642.155396 1649.296875 1658.728394 1666.287476 1668.234375 1656.953979 1641.067993 1618.486084 1634.130493 1639.845215 1645.773193 1660.28186 1668.118408 1676.47937 1681.972656 1661.927856 1645.458374 1635.235229 1623.180908 1611.551025 1602.430664 1590.867432 1600.242554 1622.193848 1641.398682 1655.934692 1665.761597 1669.0177 1659.77002 1665.764648 1671.665649 1668.967529 1658.706787 1640.038208 1633.848877 1634.577515 1646.300171 1657.155762 1663.141357 1661.555786 1658.293823 1653.948242 1648.758789 1640.009277 1629.915771 1617.687866 1607.000732 1598.876465 1583.921631 1569.933472 1558.339478 1547.179199 1533.437866 1521.485474 1513.632446 1522.372192 1532.670044 1538.09021 1546.052612 1563.309204 1581.348877 1594.485352 1609.114868 1615.837524 1618.392334 1613.072998 1604.38855 1596.74353 1589.41626 1580.643188 1572.174438 1562.467773 1552.865112 1537.614014 1521.795654 1506.396851 1494.739868 1480.243286 1457.060547 1439.082275 1434.892212 1437.493896 1421.213013 1408.489746 1399.123413 1405.791016 1412.718018 1419.445923 1427.331177 1436.946533 1448.303589 1460.515137 1473.264771 1490.125122 1508.856934 1524.360718 1539.527954 1549.012329 1561.620728 1583.569458 1598.944824 1613.932129 1624.20105 1637.333862 1651.56897 1662.14917 1658.429443 1649.709595 1642.328735 1636.442139 1626.327637 1620.033203 1620.015137 1620.688232 1619.276611 1624.081421 1629.937378 1640.577148 1648.937256 1658.560425 1660.335815 1660.205811 1658.072388 1653.924805 1650.026123 1646.978271 1645.192017 1644.716309 1645.474243 1646.426392 1647.536621 1648.095825 1648.096313 1647.07666 1644.986816 1641.266479 1635.76416 1632.394897 1629.487305 1625.342163 1622.557495 1618.234619 1614.580688 1611.028809 1602.568359 1597.470825 1590.655762 1586.473145 1579.224854 1569.771973 1561.059326 1548.076294 1533.966187 1523.112061 1512.060913 1510.872559 1524.453369 1534.204102 1549.74707 1565.455811 1579.397461 1594.903442 1609.484253 1596.286011 1587.86438 1580.285522 1574.017822 1571.024048 1571.151611 1569.867432 1565.991455 1562.026245 1556.528809 1548.172852 1541.807617 1533.907837 1525.152344 1522.16333 1519.049805 1515.89624 1512.28772 1511.186401 1516.317139 1518.808716 1516.46521 1510.45813 1502.584351 1500.451904 1503.120605 1499.097534 1487.692261 1476.645752 1471.632446 1476.432861 1481.946899 1485.530884 1495.419556 1506.619873 1517.008911 1529.531006 1539.070312 1543.63916 1545.319336 1547.197754 1550.154785 1550.924194 1548.379883 1552.717651 1563.768433 1578.340088 1592.740601 1600.895996 1597.613159 1583.599243 1577.655762 1570.667969 1563.973145 1547.437378 1537.806152 1528.200073 1508.922485 1497.15564 1485.97998 1471.781372 1458.503906 1448.366821 1440.191406 1432.407104 1429.154785 1411.373413 1402.317017 1411.369995 1424.84314 1436.178345 1452.018433 1465.737549 1478.508667 1490.890747 1496.877319 1491.557129 1483.024902 1491.557373 1497.955688 1501.786255 1500.289185 1506.276489 1518.715698 1531.209717 1548.604614 1562.213623 1574.638672 1585.293701 1597.066895 1606.704834 1611.748047 1617.683472 1616.00354 1614.453125 1606.873169 1596.53894 1592.34729 1585.559448 1581.985718 1579.209106 1575.819092 1573.637329 1573.695312 1568.945557 1561.781006 1560.713623 1557.296021 1557.348267 1555.212402 1558.630859 1566.599365 1578.263062 1585.08667 1588.156006 1588.874268 1588.345825 1575.388672 1562.316772 1547.662842 1533.193726 1530.397095 1528.282959 1526.239746 1523.472412 1522.791992 1516.526245 1499.697754 1491.310669 1492.692139 1492.593384 1483.380737 1474.650269 1462.979858 1453.332397 1437.081055 1420.608032 1409.827881 1401.392212 1397.730957 1392.48938 1388.59082 1391.281372 1404.852661 1422.93103 1449.69812 1472.509399 1480.13855 1481.349121 1480.084473 1480.615112 1487.519653 1479.956665 1464.039429 1455.266602 1469.570679 1484.843506 1497.008179 1487.421631 1483.467529 1481.371582 1476.168335 1470.436401 1462.291138 1455.415161 1446.996582 1437.79895 1416.811035 1412.634644 1417.894287 1421.10791 1437.088135 1458.527222 1472.914062 1478.387695 1477.90979 1471.560059 1464.40918 1458.653564 1454.422974 1451.031494 1449.308105 1449.407715 1450.119995 1453.405151 1458.766724 1460.057617 1460.267212 1456.396606 1451.904785 1443.945557 1434.770874 1426.009399 1424.706421 1421.659058 1417.011475 1416.013062 1415.901733 1414.233887 1408.884644 1402.064331 1389.872192 1393.392334 1402.719116 1404.541626 1403.595703 1396.57019 1389.739624 1391.11377 1394.212158 1396.957031 1398.430664 1399.043335 1398.997437 1400.846558 1406.105103 1409.564453 1410.05896 1404.825928 1399.49231 1408.252686 1413.695557 1416.353271 1417.953735 1419.149902 1422.160522 1426.878418 1428.59021 1429.891113 1430.901367 1431.807617 1431.888916 1427.926392 1428.172241 1426.203369 1424.509155 1429.139404 1428.773682 1422.095947 1407.975464 1410.201294 1428.10144 1429.294922 1427.093872 1420.785278 1414.045898 1408.096313 1395.157471 1381.417969 1372.705444 1369.619629 1357.463379 1338.251221 1325.217285 1329.15271 1328.928467 1322.955078 1316.528687 1307.938232 1304.701904 1304.071899 1305.527344 1303.217041 1304.180054 1321.067871 1337.985229 1352.204468 1361.157715 1371.378418 1378.958862 1391.143921 1404.784912 1417.704346 1428.603149 1441.146484 1440.084351 1437.49231 1435.847534 1438.194702 1439.091187 1434.843262 1428.134033 1425.635132 1422.017212 1417.304565 1406.658936 1401.958496 1408.845947 1399.779541 1390.165039 1400.654053 1396.444702 1381.670654 1367.800293 1379.070557 1388.374756 1386.502441 1391.354126 1400.473022 1409.011841 1415.638184 1425.849976 1434.362305 1444.467529 1454.489746 1463.748047 1455.656616 1449.776367 1448.848145 1446.513672 1434.467651 1426.606567 1451.254028 1456.494629 1451.169556 1441.639771 1421.746948 1411.937134 1431.699341 1427.449951 1415.155273 1400.240967 1381.571899 1367.417358 1351.656616 1341.99646 1332.292236 1326.364624 1320.281616 1308.647339 1304.112671 1307.309326 1309.124756 1309.294678 1308.488037 1307.258789 1313.877563 1319.546753 1317.555786 1299.55603 1280.540894 1266.275269 1269.897705 1279.403076 1298.786865 1313.626221 1328.911377 1340.988647 1351.655151 1361.083252 1360.866333 1354.776367 1351.943726 1349.502563 1346.209595 1344.121216 1342.787109 1339.419067 1333.953979 1329.436523 1325.05481 1320.129639 1319.797363 1321.466919 1321.569946 1321.023193 1320.223511 1319.612671 1318.917603 1317.409058 1311.963135 1308.41626 1305.661621 1302.089233 1296.594604 1289.631348 1279.928101 1273.667969 1264.988037 1255.068481 1248.769409 1244.615356 1242.020386 1239.789062 1247.819702 1256.696411 1269.207642 1283.092773 1295.162354 1307.84314 1318.611206 1328.251099 1329.876953 1331.276855 1336.177979 1340.189819 1342.410034 1343.085571 1336.593262 1328.512207 1335.82312 1342.633911 1350.179443 1355.761719 1361.471436 1365.695923 1369.564575 1375.891235 1381.026367 1387.05188 1389.769775 1385.82312 1381.689941 1382.417847 1384.235596 1387.449585 +1606.488892 1620.603516 1634.558228 1652.194702 1666.803711 1677.315308 1687.135742 1695.165161 1702.947998 1708.664185 1711.15332 1713.965942 1717.78833 1721.03833 1720.862061 1720.441162 1719.876221 1719.52417 1718.638428 1719.220093 1721.012939 1721.795532 1719.577026 1711.649536 1703.134766 1692.410156 1683.125 1676.274902 1669.175415 1660.588623 1651.077148 1645.658203 1656.546753 1664.83667 1669.800049 1671.419312 1672.392212 1656.06897 1642.260864 1623.276123 1636.804199 1641.72229 1647.068237 1661.306885 1669.224854 1678.825684 1684.479858 1665.131592 1647.383667 1635.372314 1622.785156 1610.863403 1601.380127 1596.167358 1613.692017 1628.488037 1645.665039 1663.786133 1673.686279 1675.559082 1671.30957 1673.251953 1676.069458 1672.740234 1658.575317 1651.404907 1652.070435 1649.595581 1653.011353 1662.762329 1668.498901 1660.721924 1655.864624 1652.237061 1649.537354 1644.056396 1633.384155 1620.646484 1608.667603 1600.374146 1585.017334 1572.979492 1557.584229 1545.837158 1531.927368 1519.676636 1519.000244 1536.039673 1549.347534 1548.585815 1546.618042 1558.463013 1576.197876 1592.049072 1609.788696 1618.366821 1624.31189 1621.825073 1612.083984 1602.226196 1591.749268 1580.478394 1567.805054 1556.500732 1546.188477 1527.677734 1514.119751 1500.203979 1488.494629 1470.43689 1452.988281 1445.151855 1446.78833 1446.531616 1425.711792 1411.9021 1403.394287 1401.930664 1410.205566 1417.21814 1422.567139 1429.935059 1438.854858 1451.95874 1467.62207 1485.584595 1504.485229 1520.258911 1535.025879 1544.338745 1554.675415 1567.857056 1584.785767 1596.455322 1606.455566 1610.566528 1623.849731 1641.399658 1658.45813 1654.897583 1648.69812 1641.208252 1636.079712 1629.646973 1628.110352 1628.352173 1627.707642 1629.780273 1636.391113 1651.272705 1661.817627 1666.896484 1667.355591 1666.111084 1663.300903 1659.627197 1655.693237 1652.158447 1649.161865 1648.290527 1648.874268 1650.003418 1651.053955 1651.466553 1651.425171 1650.559814 1648.654541 1645.921631 1641.730103 1637.113647 1633.448608 1629.13208 1625.567627 1620.78186 1614.276489 1609.52002 1600.48877 1590.724731 1583.005005 1577.168335 1571.695068 1565.583374 1558.898926 1547.683716 1534.489868 1525.188232 1514.421875 1512.870117 1523.549561 1536.918823 1552.335938 1566.22583 1579.965332 1593.261597 1600.834717 1593.383301 1583.784546 1574.534912 1570.578857 1568.183228 1566.736938 1564.301636 1560.272217 1556.536499 1550.952026 1543.634033 1537.293213 1530.241455 1524.087158 1522.720947 1519.904785 1516.686523 1513.702393 1509.937134 1514.185181 1519.12854 1522.031006 1516.958252 1511.198364 1508.560181 1507.687866 1500.903442 1490.044312 1480.87146 1474.473022 1477.693237 1486.407959 1491.919556 1498.600952 1510.549194 1520.091797 1533.25 1547.949219 1554.662109 1559.828247 1560.956787 1565.7948 1566.629639 1565.401978 1564.054199 1568.737671 1579.602051 1593.183716 1602.520996 1602.061768 1593.442017 1584.079224 1575.205444 1565.357178 1551.322144 1539.667603 1527.895508 1508.299927 1496.293945 1483.008545 1471.040039 1462.765381 1450.496582 1440.700806 1430.522095 1423.674927 1411.777466 1400.834106 1408.140381 1420.126343 1431.81958 1441.067749 1455.232056 1472.114502 1487.371704 1501.618896 1501.660034 1493.739136 1503.946655 1516.261963 1524.252686 1522.305786 1519.938232 1522.562378 1528.742554 1534.259155 1547.63623 1556.667114 1573.137085 1585.954956 1596.941284 1610.82019 1623.755127 1623.612793 1621.490967 1616.721069 1610.702637 1604.44751 1600.4198 1594.233765 1586.502319 1584.492188 1583.526367 1581.663086 1578.074951 1573.784424 1566.342896 1563.80249 1564.959961 1565.354492 1564.417358 1570.749268 1579.341064 1587.432861 1593.46228 1594.412598 1587.893799 1569.305542 1558.068481 1544.2323 1524.237915 1511.943726 1512.07251 1511.868408 1505.270752 1510.986694 1507.190674 1496.179443 1477.416138 1477.248169 1478.878418 1474.56958 1463.329956 1452.556396 1442.013916 1428.102783 1415.41748 1404.100586 1401.944946 1400.932007 1395.19397 1389.602295 1391.746948 1404.467651 1420.894897 1440.541382 1460.212524 1477.042969 1487.022583 1491.272949 1496.675049 1503.033691 1496.655518 1480.268311 1474.787964 1475.857422 1486.04895 1504.171387 1496.802856 1491.781494 1485.016357 1469.83606 1458.608887 1449.77771 1442.872559 1431.491333 1421.539185 1414.439209 1432.813354 1431.348267 1429.740356 1433.774414 1457.572754 1471.844482 1479.613647 1480.073975 1477.846191 1471.89209 1465.544189 1460.753296 1456.597168 1454.473999 1453.682251 1454.964966 1463.595703 1465.986328 1465.22998 1465.457764 1462.945801 1455.975464 1451.267334 1438.338379 1429.553955 1425.815552 1423.165161 1420.941406 1418.929565 1417.455933 1416.206421 1411.077881 1402.437012 1389.083374 1401.21875 1405.789673 1407.25061 1405.631226 1400.603516 1391.603149 1394.731201 1399.983276 1402.266479 1400.397461 1402.986084 1403.409058 1408.56604 1414.480713 1416.62146 1416.34729 1411.920654 1407.057495 1414.13147 1417.335938 1418.137207 1419.441772 1421.751587 1425.277466 1428.121826 1428.762329 1429.531128 1430.519531 1431.162598 1430.877686 1429.611084 1422.300781 1413.661987 1415.52771 1422.091797 1424.283203 1419.907227 1407.058105 1405.473755 1421.012695 1424.515991 1420.948608 1413.77063 1399.271484 1393.880737 1386.188843 1374.460205 1358.54895 1348.939575 1338.925781 1329.281128 1333.858765 1335.089722 1334.002563 1329.760254 1321.768311 1314.553223 1309.248779 1307.737427 1308.026855 1304.65332 1301.988403 1310.248047 1338.12561 1358.743286 1374.94812 1384.675903 1391.614868 1399.733887 1408.957275 1424.78418 1435.215576 1442.37793 1443.723389 1442.427979 1438.897339 1441.232544 1443.154785 1441.052124 1436.679199 1432.349243 1428.229614 1420.862305 1411.686523 1417.002075 1417.394653 1404.383545 1401.115723 1409.112183 1404.206543 1386.50415 1374.177002 1375.778198 1389.830811 1391.611694 1389.939819 1401.471191 1410.691528 1417.60791 1424.34668 1432.558716 1442.531982 1456.818604 1467.813599 1470.582397 1468.745972 1463.746704 1457.11377 1448.178467 1448.603271 1461.606079 1469.22583 1465.595337 1452.668335 1435.412598 1418.307129 1438.526611 1436.628174 1419.711426 1406.150635 1390.452393 1370.655273 1354.747681 1346.658936 1338.874146 1327.059326 1317.372559 1308.126587 1310.932129 1316.085205 1318.257568 1318.310425 1316.794067 1316.312134 1319.926514 1320.597412 1310.625977 1292.011108 1275.056152 1268.514771 1279.225342 1287.01355 1297.97522 1309.20166 1322.368164 1334.534302 1346.871948 1358.47998 1361.545898 1356.964966 1352.897705 1350.505737 1348.110718 1345.808105 1343.819702 1341.11084 1334.711792 1329.941528 1326.817139 1324.788818 1323.590332 1323.446777 1322.839966 1321.851562 1320.5802 1319.713745 1318.585449 1316.350952 1312.026245 1308.449341 1307.54248 1305.554688 1297.410278 1294.310791 1288.027466 1278.769409 1267.012085 1255.831299 1252.664673 1249.301636 1245.685547 1241.723389 1242.749146 1252.33728 1263.211548 1272.043213 1283.70105 1297.778442 1307.124756 1313.353149 1324.366577 1331.550293 1335.383179 1339.978149 1342.455566 1340.022949 1333.104126 1328.542114 1332.313721 1337.893188 1341.697998 1346.921875 1351.810547 1357.869385 1363.468384 1367.092163 1373.364502 1378.05188 1378.175781 1377.75769 1378.385132 1379.6521 1381.528198 1383.724731 +1620.652832 1621.021362 1637.136841 1656.835938 1671.036865 1683.60022 1694.473389 1704.448608 1709.877441 1711.529419 1712.843262 1715.328491 1719.150391 1720.825317 1720.184326 1719.327759 1718.231689 1717.739014 1718.205688 1719.782349 1720.798584 1720.233032 1715.095459 1707.571655 1699.664062 1688.427856 1679.285767 1672.741455 1663.73877 1653.959229 1654.289185 1659.625244 1668.855591 1675.596436 1684.234863 1678.831665 1666.504028 1656.661499 1644.114624 1631.688599 1642.238892 1645.313232 1647.590088 1661.080688 1668.677734 1677.499268 1680.442627 1664.116211 1647.126587 1634.296753 1621.249756 1612.495972 1602.397949 1609.630127 1623.571777 1637.071411 1653.253174 1671.551025 1680.490723 1681.716431 1680.672974 1681.566895 1682.365601 1677.219971 1668.717773 1666.194946 1665.661133 1665.963867 1665.879639 1672.930054 1670.112427 1659.27356 1652.83252 1648.254395 1645.72583 1639.411865 1630.096191 1618.920898 1607.267456 1598.988281 1584.845215 1572.996338 1557.695068 1543.52771 1530.606323 1517.873413 1526.978271 1551.664062 1564.123657 1567.18335 1563.697144 1560.001221 1567.811523 1583.84729 1602.710449 1616.022339 1624.647095 1625.140625 1614.424561 1603.421387 1590.820312 1577.952026 1561.694824 1544.369995 1523.051025 1512.457642 1496.798828 1489.959839 1474.143555 1466.121338 1466.86499 1459.517944 1454.613281 1453.381226 1428.008057 1414.594482 1406.567139 1400.74231 1406.416504 1412.684082 1417.645752 1424.967896 1432.574219 1444.521118 1460.545776 1477.424194 1497.87915 1512.914795 1528.019165 1538.810181 1547.134888 1557.312256 1570.61145 1582.375488 1590.779541 1593.471802 1601.193726 1615.943237 1634.592407 1645.154175 1646.79541 1638.533447 1632.60437 1635.270996 1635.46875 1636.231689 1635.238525 1635.068359 1642.3396 1656.321167 1671.984741 1678.015137 1675.208984 1672.14978 1668.424805 1664.723389 1660.7948 1657.656616 1655.12561 1653.429688 1652.772461 1653.267822 1654.270264 1655.143311 1655.604614 1655.036743 1653.294067 1650.45459 1647.223877 1642.065796 1636.943848 1632.03772 1626.936523 1621.828735 1611.864014 1598.004395 1590.938843 1583.764526 1574.755859 1569.780762 1561.527466 1553.289795 1548.860962 1541.583496 1532.793457 1524.362061 1516.852661 1516.953613 1523.099609 1533.826416 1550.449463 1562.821411 1574.517944 1589.683716 1594.546631 1587.823486 1580.888428 1575.328369 1568.985718 1564.702515 1563.253052 1560.387817 1555.764771 1551.569702 1547.376587 1541.048462 1536.202759 1534.389771 1528.55127 1524.103882 1520.689209 1517.636597 1514.248169 1510.272339 1513.334106 1519.646606 1525.609497 1524.511353 1516.5354 1516.362549 1512.429199 1501.83667 1491.309448 1485.591309 1478.716431 1479.312134 1488.816284 1497.115601 1504.137695 1513.767822 1524.065552 1540.593506 1550.392456 1560.072998 1568.336426 1574.950562 1578.147949 1579.307495 1575.474976 1573.486206 1574.656372 1583.66748 1595.144043 1609.31665 1608.889404 1598.700928 1586.884888 1575.953857 1564.63916 1550.114258 1538.998169 1522.078003 1505.343018 1492.577759 1476.821411 1466.603638 1456.991211 1444.803223 1435.522339 1425.126099 1418.167114 1410.70459 1403.461182 1401.730957 1418.871338 1431.62207 1443.875244 1455.568481 1466.14502 1479.654175 1492.361816 1502.182251 1502.899658 1509.046021 1527.41687 1536.856079 1540.68042 1540.495239 1539.105347 1547.769409 1546.797485 1555.153687 1559.62915 1577.218628 1589.795776 1605.162598 1618.188721 1624.957153 1624.44104 1624.297974 1621.405273 1614.220581 1609.183594 1602.352051 1597.968384 1594.325195 1594.419189 1592.631226 1588.158569 1583.271851 1575.473022 1570.044556 1570.281982 1571.682129 1571.401611 1573.612549 1579.059937 1585.194214 1591.880737 1597.669312 1594.859131 1585.122437 1565.89856 1552.209839 1534.433838 1519.002686 1501.824585 1496.212402 1496.070312 1491.651123 1500.779785 1499.828369 1490.390381 1475.14502 1466.417725 1466.237061 1462.769897 1452.449341 1440.639771 1429.811768 1418.225464 1411.24646 1414.888428 1417.001465 1409.299561 1402.494385 1392.728027 1392.480957 1403.781494 1418.572388 1435.105835 1451.268799 1468.928955 1489.632202 1499.281494 1508.506348 1512.594604 1512.116211 1496.822388 1489.75647 1498.131348 1505.299438 1516.571899 1506.37439 1495.539673 1485.907227 1472.807007 1456.45166 1440.112793 1428.800049 1427.23877 1426.835327 1432.453491 1448.162109 1445.630981 1444.364624 1437.8125 1447.984131 1465.858521 1479.403442 1480.896973 1479.767822 1476.907837 1471.026611 1465.736938 1461.943359 1459.587646 1457.71875 1457.382568 1460.646851 1460.632812 1458.966064 1457.870972 1456.057861 1453.549194 1450.641602 1444.216431 1438.585205 1430.272461 1426.453003 1422.891479 1419.32251 1417.484619 1415.534546 1407.694946 1400.556885 1401.347656 1407.688843 1410.462158 1410.693848 1408.569336 1404.374146 1400.157715 1401.201294 1404.472656 1405.306885 1403.790527 1407.651123 1411.925903 1416.72168 1419.03125 1419.360107 1418.432739 1416.508545 1415.373291 1416.753662 1417.522705 1418.012695 1418.619385 1420.04187 1423.440918 1426.484131 1427.531616 1428.086304 1429.088501 1430.144653 1430.346802 1430.168823 1427.131836 1417.035889 1406.709717 1411.806885 1416.420776 1414.314209 1401.243652 1400.571167 1415.494263 1418.296143 1412.854614 1400.987549 1389.294312 1381.444458 1375.6698 1364.711792 1347.678955 1342.683228 1348.448975 1349.451294 1345.552246 1342.193237 1339.422974 1335.230469 1328.750122 1318.32605 1314.102051 1316.08252 1310.473022 1304.29248 1302.544434 1306.979614 1338.439575 1362.684204 1383.61145 1394.228271 1403.704102 1410.412598 1415.039429 1420.824097 1429.207275 1443.637939 1446.400879 1447.824219 1446.167114 1446.209839 1446.560791 1446.17627 1444.015381 1439.013062 1433.401855 1425.360718 1424.630127 1426.591675 1420.983643 1406.862793 1409.22998 1417.93689 1407.621704 1391.332153 1381.804321 1377.443481 1384.983521 1397.258179 1400.640869 1403.334595 1411.027222 1418.014282 1425.257568 1434.745972 1448.075317 1459.987793 1471.154053 1479.880371 1480.612305 1474.368408 1467.373901 1463.754272 1466.382568 1471.59436 1484.740356 1475.91626 1461.006592 1446.758179 1425.838135 1440.250366 1440.978638 1421.294922 1406.139404 1390.546875 1372.38501 1359.375244 1350.297607 1341.142944 1330.122681 1319.896973 1316.158691 1323.14502 1327.13916 1327.379639 1327.001465 1326.647095 1325.936279 1322.989624 1315.272095 1300.339966 1284.727905 1272.694458 1280.099243 1286.728271 1294.71814 1306.869385 1320.622803 1332.216675 1343.616577 1356.394531 1365.396973 1367.973267 1364.628418 1356.628662 1352.213379 1349.298584 1346.15625 1342.772705 1339.269653 1335.057739 1331.514648 1328.761719 1327.486084 1326.361572 1325.425659 1323.915527 1322.105713 1320.105225 1317.694702 1314.598267 1310.890503 1306.133423 1304.366699 1304.250244 1302.479736 1297.447021 1293.897461 1288.178589 1276.130859 1267.310303 1263.68396 1258.418823 1254.479004 1249.533447 1244.255615 1241.748779 1247.983643 1257.641479 1266.075806 1275.543091 1289.51709 1302.241333 1316.104614 1332.723999 1331.821289 1333.204224 1336.182617 1338.816772 1336.585205 1331.627441 1328.449829 1330.31604 1334.008423 1337.003906 1340.09082 1345.192749 1350.957764 1356.520264 1359.734009 1363.056641 1364.392334 1365.338867 1366.994873 1371.195801 1374.891235 1378.0979 1379.443604 +1641.687012 1639.322144 1641.693115 1658.123779 1672.925049 1688.941406 1702.326782 1709.662842 1710.984619 1711.300781 1711.717651 1713.187134 1715.277222 1715.92395 1715.364136 1714.646973 1714.19104 1715.906128 1718.491943 1720.17749 1720.556885 1717.576294 1710.028687 1703.693726 1696.962646 1686.927856 1677.286255 1668.996094 1659.180298 1656.192749 1663.348755 1668.610596 1676.354004 1683.466675 1684.807373 1677.388672 1667.212891 1654.710938 1644.671265 1636.632812 1656.907349 1656.421143 1653.631714 1660.849854 1668.556274 1675.289429 1676.402344 1665.453369 1649.155884 1639.182373 1626.212036 1615.5 1604.734497 1620.532715 1634.223022 1643.767822 1660.708374 1677.470581 1689.480835 1694.238403 1691.555298 1691.69165 1691.283203 1685.158813 1682.480225 1680.59082 1676.818359 1675.297729 1673.36084 1666.425537 1659.584351 1652.319946 1647.599609 1642.950684 1637.998291 1633.086914 1624.830322 1613.610107 1604.037354 1594.517944 1581.713867 1570.703857 1555.6604 1539.526489 1529.361206 1517.905884 1533.552856 1558.56604 1577.026855 1583.849731 1580.805176 1575.914307 1570.321655 1580.217041 1598.353027 1609.728638 1622.385254 1625.057251 1613.139771 1601.175415 1584.422119 1569.554321 1550.900513 1535.133911 1526.633179 1518.728271 1506.946899 1495.523438 1490.238281 1483.777344 1481.994629 1473.218628 1462.109619 1462.403687 1436.189697 1417.366577 1409.633789 1403.095459 1402.736816 1408.155762 1412.305054 1415.559814 1425.121216 1440.503784 1455.009888 1468.157715 1484.298096 1505.435303 1520.72168 1532.047607 1540.56311 1548.301147 1555.737183 1561.821045 1569.836792 1578.262695 1587.926147 1594.365723 1603.035645 1614.959839 1618.207153 1618.052856 1623.251343 1632.86377 1640.905273 1645.527344 1647.715088 1646.868896 1649.182739 1659.335449 1676.49585 1685.412476 1684.033936 1678.427002 1673.776245 1670.945801 1667.043579 1662.748901 1659.378174 1657.047241 1655.992065 1656.426758 1657.492432 1658.861816 1659.828125 1659.519409 1658.467163 1655.2854 1650.847534 1645.911499 1639.784302 1633.880127 1626.937134 1620.793579 1613.977295 1603.108643 1590.038208 1582.425659 1574.078125 1560.669556 1554.772949 1548.931763 1547.900391 1541.658936 1533.287354 1524.251953 1520.607422 1521.806396 1528.150146 1539.071411 1553.383789 1565.954956 1579.775635 1589.801758 1590.130371 1585.776001 1579.280273 1573.470581 1563.285034 1560.349976 1559.266479 1553.673584 1549.368286 1547.832886 1545.665527 1542.063721 1539.765259 1538.193115 1530.322388 1523.696411 1521.651001 1518.875244 1515.573608 1512.665527 1512.060425 1518.528931 1525.120239 1529.832397 1525.446655 1523.647095 1515.20813 1505.246582 1498.533569 1491.910767 1488.315063 1483.099365 1490.219604 1499.166016 1505.534546 1512.405762 1525.533325 1539.976562 1548.435547 1557.425903 1566.90271 1576.473755 1582.424194 1588.026855 1588.266846 1588.766113 1588.071777 1592.071777 1602.361206 1613.229004 1612.941895 1601.270752 1587.000122 1575.870239 1561.775635 1546.28479 1535.379517 1518.078979 1501.706421 1490.145264 1474.235474 1464.436401 1456.847412 1447.328125 1436.563965 1430.930176 1423.217163 1414.049805 1407.196533 1403.550659 1415.693604 1430.644897 1442.845581 1455.374878 1464.513306 1470.609009 1480.393677 1494.443359 1506.58667 1515.980713 1527.211304 1538.313965 1550.682861 1554.435181 1559.28479 1567.713501 1565.068237 1570.59021 1579.248535 1585.999023 1596.519653 1612.880493 1621.364258 1622.189819 1616.5177 1614.781616 1613.17334 1609.786133 1601.091064 1593.057373 1585.475342 1596.441895 1602.974243 1601.375977 1594.391724 1587.933716 1576.390015 1571.795166 1574.929688 1577.971802 1578.113525 1579.610596 1584.681763 1592.848755 1598.852417 1596.429688 1587.141357 1576.831421 1566.373535 1553.244629 1538.983276 1519.765869 1500.162231 1487.069702 1480.256958 1475.787354 1487.809204 1491.256592 1490.109741 1472.31311 1460.864624 1455.086548 1451.596436 1442.059448 1428.524902 1420.756104 1413.235596 1419.708496 1429.614746 1427.733521 1417.22876 1408.256226 1397.601562 1394.048462 1403.035278 1416.795898 1429.974243 1446.199341 1463.727661 1485.73877 1500.248657 1514.35437 1520.990479 1520.767334 1513.27002 1511.014893 1517.951294 1520.542114 1516.154175 1506.056885 1493.851074 1482.580078 1467.161987 1451.719849 1442.685059 1444.098633 1444.408691 1445.635132 1445.140625 1466.206177 1461.388916 1461.932007 1456.349854 1449.344971 1462.230103 1478.580566 1483.004272 1482.55542 1479.687866 1475.138794 1469.872314 1465.569702 1462.626343 1459.46936 1455.290039 1452.749878 1451.574829 1450.131104 1449.268799 1448.788452 1447.868164 1445.898682 1443.172852 1439.945312 1432.958618 1427.763306 1422.146851 1417.546631 1415.346436 1409.665283 1401.263306 1402.363281 1410.188354 1414.652832 1415.539062 1414.488037 1411.446777 1406.711792 1402.95813 1404.63562 1407.529541 1409.271484 1409.949097 1412.647949 1417.918579 1422.742798 1422.812866 1421.439209 1419.28418 1417.259277 1415.803589 1416.433228 1416.870728 1416.756226 1415.485962 1414.662109 1418.08728 1422.039429 1423.793701 1424.07251 1426.608887 1428.190918 1429.063354 1429.465698 1429.440186 1422.211426 1411.060791 1399.430054 1403.352417 1402.621216 1392.958008 1394.056885 1406.729248 1404.005493 1396.455566 1387.97644 1377.264404 1365.638062 1359.707275 1348.183105 1355.054932 1361.813721 1364.561401 1365.606445 1362.076782 1355.677856 1348.614014 1341.713745 1334.484985 1322.472656 1317.289062 1318.599976 1307.706909 1303.396729 1305.482422 1308.21814 1340.374146 1366.722412 1387.451416 1396.030273 1404.129883 1415.818726 1427.385254 1420.315674 1426.460449 1432.012329 1444.507202 1452.515381 1452.205322 1451.167969 1450.240112 1451.724243 1452.370605 1448.069092 1440.146973 1434.418823 1436.87915 1433.216553 1427.288086 1412.815063 1421.810669 1424.845337 1407.486694 1397.789429 1392.83606 1393.024414 1385.378052 1395.100342 1404.749023 1402.523926 1412.97583 1421.127686 1430.419189 1440.349365 1452.784546 1461.341309 1473.005859 1484.708374 1491.776123 1486.309204 1482.15686 1483.626099 1484.116821 1488.90625 1491.301147 1477.423828 1463.26001 1453.626709 1435.64917 1452.106323 1448.738159 1433.626953 1410.671143 1395.555298 1384.508789 1366.323608 1352.462891 1345.386841 1333.571899 1331.639526 1328.761719 1336.652222 1339.778442 1341.659912 1339.317139 1334.826782 1331.236572 1323.794067 1308.539062 1296.342651 1284.391724 1274.888672 1290.509155 1295.779785 1301.515381 1310.727051 1326.513794 1339.978638 1351.845459 1363.031616 1369.011719 1368.741333 1366.681274 1359.025757 1353.453247 1349.983398 1346.132935 1342.841309 1339.794189 1336.277954 1332.352051 1330.415039 1330.077026 1328.621704 1327.006958 1324.390503 1321.420532 1319.007935 1315.614136 1308.811401 1305.417603 1302.624268 1299.15271 1297.852295 1296.894287 1293.607666 1284.947632 1279.07373 1280.194214 1279.254517 1273.953491 1266.920044 1260.418945 1255.28479 1248.549072 1243.401001 1244.18103 1253.352783 1264.391602 1276.492188 1292.325928 1304.951904 1318.595459 1328.763184 1329.893921 1329.644775 1330.896606 1333.896118 1332.883301 1329.412842 1326.641602 1327.758057 1330.534546 1332.621094 1336.593994 1339.900635 1342.859375 1349.045654 1353.702148 1354.998779 1355.432739 1356.831665 1359.685547 1362.947021 1365.773926 1367.88855 1368.262939 +1660.520386 1663.844727 1662.608521 1668.537842 1678.280151 1690.709351 1704.99939 1709.912231 1710.307617 1709.318237 1708.354858 1707.817993 1708.685913 1709.779663 1709.521973 1707.854248 1709.235229 1714.129028 1718.168335 1720.479126 1720.08374 1712.966797 1705.820679 1700.907349 1694.574707 1685.36377 1673.770264 1665.756836 1658.606445 1661.49585 1669.727173 1676.094971 1682.734497 1686.381348 1684.96582 1675.253296 1665.981201 1655.661377 1642.979492 1654.840942 1662.060181 1661.268066 1656.887085 1662.398926 1670.308472 1677.437012 1682.616089 1674.101074 1656.936646 1642.878174 1634.082153 1617.620117 1611.202148 1629.439209 1640.969971 1660.198242 1673.678467 1683.923462 1699.285034 1704.231567 1703.263916 1702.051392 1699.792969 1695.62854 1690.33606 1686.386108 1682.920654 1673.78125 1664.299194 1654.824585 1648.968384 1641.282471 1639.831787 1638.423584 1632.772095 1622.011719 1614.943115 1606.095337 1598.589966 1587.855225 1578.688477 1567.136353 1552.90271 1539.834717 1528.684448 1519.069336 1535.933594 1559.658936 1585.060425 1595.55957 1595.518066 1588.757568 1583.642822 1581.259155 1595.438721 1609.095947 1621.769043 1622.574829 1608.221069 1592.765381 1575.000122 1559.230225 1552.025024 1554.477539 1551.964233 1538.01709 1523.485107 1516.116089 1510.623657 1501.098267 1490.339966 1476.102539 1477.216309 1477.102661 1449.20105 1427.858643 1413.187744 1408.126953 1404.425171 1405.154419 1408.567749 1411.768311 1421.520386 1435.319824 1447.112183 1459.548584 1473.59668 1495.236206 1509.185913 1523.15332 1531.856323 1538.746338 1545.719849 1550.812378 1553.257202 1558.363281 1571.583496 1580.290161 1585.512695 1590.463501 1592.95459 1603.501099 1621.44873 1635.626587 1645.026733 1653.028442 1657.832764 1659.991211 1661.599976 1667.750488 1672.139282 1682.362671 1684.787354 1683.189087 1679.263672 1675.963623 1672.200317 1667.698608 1663.562012 1660.962036 1659.361328 1660.416138 1662.19519 1663.887573 1663.949585 1663.007812 1661.539795 1659.131104 1654.108521 1648.039429 1641.093262 1634.222046 1626.996216 1620.77832 1614.300659 1608.19104 1599.951294 1591.037231 1585.581665 1575.435425 1571.080444 1566.556152 1560.510498 1552.524536 1540.264282 1529.349487 1522.545776 1525.251465 1532.246948 1545.09021 1559.022949 1570.682129 1584.594971 1588.992188 1588.824219 1585.00647 1577.200806 1571.158447 1565.99231 1561.57373 1559.320435 1551.586548 1549.267334 1548.7146 1546.166626 1543.520752 1540.670898 1537.99585 1530.089355 1524.470703 1523.294189 1520.758057 1517.499023 1514.629639 1512.686768 1516.745972 1522.832764 1534.595215 1536.939819 1530.330566 1517.570435 1508.595459 1502.382324 1497.167114 1492.868896 1489.313354 1491.239014 1498.516846 1505.202393 1511.230591 1521.527222 1536.486084 1543.4552 1551.752197 1560.623779 1572.765503 1579.585571 1587.011597 1595.359497 1601.580811 1606.381714 1607.175903 1611.682495 1613.846069 1611.605469 1600.949341 1586.086792 1574.925293 1559.366943 1543.193481 1532.275513 1520.997437 1505.082642 1493.589111 1481.124023 1470.25708 1462.174927 1451.960815 1441.206543 1432.442383 1424.588379 1416.503784 1409.982788 1405.048096 1416.727173 1430.700439 1438.597656 1448.96875 1457.194092 1463.735474 1472.576538 1485.512817 1507.483765 1524.676636 1535.114502 1543.83313 1554.15564 1563.860107 1572.741211 1581.478027 1584.172363 1583.302734 1595.924927 1601.918945 1609.049438 1618.02832 1619.801392 1614.062988 1607.322388 1604.399658 1605.420654 1602.09021 1595.176025 1580.60144 1581.906128 1597.481689 1611.571777 1610.945068 1598.418213 1589.721313 1577.118042 1575.678101 1581.321899 1586.01355 1585.045898 1584.503418 1587.950806 1587.738403 1585.644897 1581.074341 1573.270996 1563.897827 1558.521484 1549.514404 1540.950195 1530.142822 1515.974243 1498.598999 1481.455444 1471.427124 1472.412354 1479.244873 1478.443848 1468.675781 1454.515259 1443.538574 1438.487671 1427.290771 1422.416626 1422.029541 1426.943481 1435.862061 1443.046387 1438.125 1426.733887 1412.030273 1401.274902 1394.686523 1402.401733 1414.375488 1426.452271 1443.927734 1460.287231 1478.936279 1494.374878 1509.256958 1527.067261 1535.994019 1532.314575 1532.227661 1533.524292 1527.177368 1515.039429 1500.515259 1486.159668 1472.314209 1460.596924 1459.322021 1459.16626 1457.255615 1456.431763 1460.960205 1459.663452 1464.743652 1473.166138 1474.30896 1470.621094 1468.23645 1468.08374 1481.097778 1485.942505 1485.807129 1483.409424 1478.100098 1473.140869 1469.006836 1465.447632 1460.850098 1452.576904 1449.984009 1449.019531 1446.477051 1442.290527 1441.868774 1441.375366 1440.763916 1439.038452 1434.707886 1429.852417 1424.68811 1417.891602 1414.602417 1412.366455 1404.047729 1405.933105 1414.377441 1416.855713 1417.474731 1417.349487 1416.776733 1414.551758 1410.598022 1410.474365 1412.261108 1412.648682 1412.956055 1413.571289 1419.722046 1429.584595 1427.908447 1425.931519 1422.76355 1418.950195 1416.530151 1414.257812 1414.883911 1415.46936 1414.80188 1413.266357 1412.207031 1414.666138 1418.446533 1419.03894 1414.982788 1417.357788 1421.957153 1423.800415 1424.030518 1423.619141 1420.415894 1416.256226 1403.828125 1387.984863 1389.294312 1386.189697 1388.404419 1393.033081 1390.036011 1382.526611 1374.756348 1366.760864 1352.646484 1353.118042 1362.369751 1368.498169 1371.815674 1373.678955 1374.541138 1372.396851 1363.942749 1355.945679 1347.572754 1338.523926 1327.716187 1316.603516 1317.465942 1303.265015 1305.208252 1305.026123 1316.121826 1343.444336 1369.734863 1383.174194 1388.204956 1390.043945 1396.261108 1400.126709 1404.109497 1406.270508 1413.545166 1433.783081 1445.470093 1453.520752 1454.539429 1454.98999 1455.966309 1456.650635 1454.460083 1448.772217 1445.369507 1445.017334 1439.942749 1429.681274 1426.869263 1431.8396 1423.740479 1405.863159 1400.962646 1398.581665 1398.084473 1393.96106 1389.389893 1404.929688 1409.864136 1413.483032 1422.474976 1433.125732 1443.802124 1454.30481 1461.831543 1474.018799 1486.837036 1501.902832 1506.393677 1504.219849 1501.348267 1497.63855 1490.404053 1482.419067 1472.613892 1460.970947 1451.302612 1451.866577 1463.844849 1458.390137 1442.647827 1423.174805 1402.150146 1390.475586 1375.988159 1362.892822 1350.179443 1346.749268 1343.308716 1338.980469 1352.439819 1356.296265 1350.637573 1345.925049 1340.538696 1333.86853 1323.660645 1307.132324 1294.639648 1283.4375 1278.766968 1298.617676 1307.285889 1311.599609 1319.514282 1330.207031 1343.556396 1356.980103 1368.189697 1369.650513 1368.865479 1365.853516 1359.728027 1354.470947 1350.169189 1345.603882 1342.839111 1340.241943 1337.469482 1335.088623 1333.402466 1332.470215 1330.607422 1327.785156 1325.14978 1318.762817 1315.77063 1306.894775 1303.50293 1302.772705 1301.151733 1296.357788 1292.359497 1292.281494 1291.234497 1289.606201 1291.788696 1290.922363 1287.468628 1283.045654 1273.519043 1265.356812 1260.065186 1253.768921 1247.320923 1243.692871 1251.931274 1263.250732 1275.358521 1290.71228 1302.345459 1310.765747 1314.107544 1314.585815 1317.745728 1327.348633 1330.879395 1330.299316 1322.47583 1323.032471 1325.197754 1327.194824 1330.177734 1333.520996 1335.971558 1337.860352 1340.364014 1344.274658 1346.686035 1347.881348 1349.700928 1353.085815 1355.307739 1356.24231 1357.178467 1356.620972 +1670.288208 1673.970825 1673.852051 1673.709351 1675.161011 1685.647827 1698.078857 1704.491821 1703.824951 1701.410889 1699.855957 1700.60144 1701.26123 1700.568481 1698.0354 1696.017822 1709.125732 1713.202515 1716.997192 1719.836426 1716.713989 1707.644653 1703.022339 1698.637329 1691.800049 1681.697876 1669.448486 1665.646362 1665.167603 1670.897095 1680.605225 1686.624512 1691.543091 1689.952637 1685.981934 1676.613403 1666.629761 1658.617798 1655.459473 1664.949585 1667.887695 1664.706421 1658.323364 1666.481812 1674.221069 1681.079834 1685.634766 1680.241821 1668.352905 1645.873779 1637.566772 1620.926514 1617.653076 1636.814819 1648.991943 1669.736206 1681.065308 1691.844971 1705.846069 1716.296143 1717.005981 1709.965332 1702.763184 1696.411743 1690.087891 1685.749878 1674.528198 1658.557251 1649.866699 1644.004028 1636.742676 1628.790527 1630.800781 1631.848755 1627.169556 1614.926514 1602.846313 1596.611816 1588.771362 1580.704712 1573.412598 1561.084717 1550.509766 1537.325073 1526.163574 1521.129272 1534.697754 1560.09314 1586.516602 1600.296143 1606.815308 1609.272949 1607.02478 1600.255127 1595.725098 1614.334717 1624.672607 1619.608276 1606.748413 1593.917114 1575.824341 1565.452881 1572.585693 1571.175903 1561.717529 1552.172119 1540.90625 1531.195557 1521.583008 1511.217407 1492.401489 1485.823608 1489.70459 1485.429932 1462.170654 1442.96936 1425.953491 1413.72522 1410.304565 1406.723877 1406.357178 1410.109497 1416.476318 1430.551392 1439.755615 1455.140015 1469.316895 1487.142334 1499.424438 1508.467163 1519.293457 1526.253418 1530.098633 1530.864258 1535.293213 1546.138672 1554.185669 1561.43457 1566.391846 1569.47644 1576.787231 1596.010254 1617.181396 1636.032959 1647.967773 1661.124756 1665.987427 1666.237915 1666.360107 1674.060059 1676.985718 1680.501099 1684.110229 1685.430176 1684.287964 1680.197998 1675.630371 1670.631226 1667.848389 1667.383789 1666.729614 1667.507568 1669.648315 1669.643799 1668.055786 1666.036255 1663.772705 1661.068848 1656.598999 1649.402588 1641.282593 1632.979736 1624.786377 1615.181763 1609.013306 1602.701172 1597.643188 1592.038818 1586.935181 1581.42627 1577.534302 1576.772339 1570.99646 1562.507812 1547.30249 1532.820801 1523.005371 1526.979126 1533.378052 1544.207886 1557.912354 1570.708984 1580.7229 1585.818115 1585.07605 1578.428955 1574.334351 1574.61731 1574.538086 1570.368286 1566.071167 1562.556519 1556.075928 1551.797974 1547.436401 1544.648315 1541.059204 1535.331787 1535.290894 1532.520996 1526.923096 1522.998657 1519.539429 1516.026001 1513.876221 1516.647705 1521.793335 1530.667114 1538.849487 1533.935181 1516.805542 1508.706421 1504.120483 1499.281982 1495.753052 1493.971191 1493.520264 1500.224487 1506.42749 1511.861816 1520.664429 1529.750732 1537.439209 1545.44519 1552.458862 1563.373169 1573.342651 1582.511963 1594.615479 1605.750977 1613.113892 1614.918335 1615.045654 1613.965332 1609.574585 1599.12561 1583.128662 1573.631592 1557.534668 1542.273926 1532.405151 1522.010254 1506.150269 1494.009277 1482.019043 1470.109741 1461.388428 1451.483276 1440.92334 1431.861938 1424.044189 1417.846313 1411.924316 1407.10498 1416.1521 1431.752563 1440.708496 1454.827393 1468.763306 1480.185547 1490.172241 1499.42041 1515.371094 1530.014893 1539.573242 1549.314819 1562.123657 1569.660156 1577.384644 1587.118652 1593.979858 1600.204712 1604.650024 1612.140259 1621.72522 1624.074951 1621.030518 1612.57605 1599.085938 1595.891846 1596.731934 1593.593872 1588.520142 1571.623657 1579.085571 1594.652222 1604.627075 1608.631104 1600.985474 1591.886475 1584.899292 1582.205933 1587.831055 1591.739258 1586.662109 1578.568604 1580.162842 1578.141113 1574.034668 1569.250732 1561.434692 1548.031372 1543.231079 1540.090942 1534.684937 1527.856445 1515.551514 1502.570923 1491.225098 1475.767578 1461.577026 1464.024658 1463.749512 1456.996948 1444.676147 1432.845947 1424.429932 1423.669922 1428.050659 1434.796997 1443.495605 1452.670166 1455.976807 1443.507812 1431.79248 1419.079712 1403.576416 1394.687378 1401.915283 1413.067261 1423.654663 1440.835571 1455.57251 1469.809204 1485.630249 1497.588257 1523.404053 1540.901733 1546.135132 1545.251221 1541.012085 1530.824219 1517.805664 1501.864258 1486.138062 1471.020752 1466.858521 1471.150269 1470.321411 1468.727661 1468.59082 1470.536743 1472.540405 1475.244873 1480.157959 1482.030151 1480.285156 1481.403198 1486.099854 1489.997925 1490.715698 1489.710571 1487.660522 1482.260376 1476.2948 1472.157227 1468.374268 1464.917847 1459.33667 1453.828369 1450.154175 1446.224243 1439.977661 1439.158936 1438.887329 1438.530396 1434.415283 1426.382324 1425.441284 1421.684204 1415.983887 1415.307007 1415.51062 1414.658081 1416.185547 1418.129639 1419.449707 1419.646606 1419.223999 1418.293213 1415.8479 1413.680176 1414.324463 1416.627808 1417.848022 1418.345337 1422.277954 1428.994629 1430.381836 1429.512207 1427.531006 1421.631836 1415.260742 1414.461426 1412.764648 1412.220093 1412.44043 1411.320801 1409.316284 1408.290161 1411.564087 1415.532227 1414.731812 1410.585449 1408.891602 1412.416382 1414.195312 1413.020752 1409.111694 1408.357178 1407.021362 1402.003906 1389.142578 1377.746948 1378.0271 1377.913696 1378.133545 1375.733765 1371.49939 1366.237671 1356.841675 1361.237793 1368.731201 1374.663452 1378.468506 1379.952515 1381.569458 1381.935181 1379.921875 1367.382446 1358.452148 1349.217041 1339.091919 1331.385742 1312.44104 1304.231812 1305.077881 1305.116211 1304.403931 1324.267334 1347.145996 1367.311157 1372.460571 1367.987061 1367.142944 1376.491577 1386.731567 1388.154541 1385.424316 1401.331421 1418.157349 1440.78833 1448.861816 1455.694824 1459.252075 1460.298462 1460.846191 1461.922852 1459.050171 1456.920654 1454.772949 1449.599976 1440.141602 1442.223022 1436.835449 1422.314331 1413.745483 1404.578857 1403.597168 1404.331299 1400.708374 1393.681152 1405.995605 1415.012817 1419.196533 1426.931885 1434.553101 1444.049683 1454.284546 1463.544434 1475.373901 1489.862793 1506.161865 1517.674683 1521.806763 1512.832397 1504.433594 1494.074829 1480.985718 1472.2323 1463.975952 1458.263428 1462.701294 1472.567505 1466.158081 1446.905029 1430.1875 1418.378662 1402.71582 1385.293945 1369.350464 1368.898438 1369.238403 1354.197266 1356.424561 1370.18042 1366.200317 1355.003418 1347.525024 1339.845947 1330.726562 1318.585938 1300.998901 1290.10144 1282.584961 1285.69043 1305.97644 1317.99353 1326.272095 1329.008545 1341.944824 1349.508179 1363.169556 1369.518433 1369.131714 1368.080322 1364.703979 1358.895264 1354.005737 1349.104492 1344.272949 1341.539673 1339.639282 1338.555542 1337.362549 1336.003052 1334.722046 1332.573608 1330.029053 1327.728271 1320.787964 1317.303345 1311.339722 1307.646851 1304.359497 1303.790405 1300.30542 1297.361816 1294.682495 1292.989136 1297.562744 1300.415161 1300.220215 1294.979614 1288.260498 1280.576416 1270.821533 1264.664673 1258.221313 1251.833984 1245.565063 1250.849731 1259.978394 1271.471558 1282.699463 1294.541992 1301.85022 1303.424194 1303.366089 1308.036621 1314.902588 1317.250122 1314.19751 1315.320435 1320.027466 1322.97937 1326.044434 1329.03418 1331.724976 1333.335449 1332.864502 1330.07959 1335.420166 1338.538208 1340.297607 1343.037109 1345.897827 1347.131226 1347.297974 1346.636841 1344.773315 +1666.841675 1668.210571 1666.54187 1663.390137 1661.862427 1673.405518 1684.52356 1691.009399 1691.916504 1690.147949 1688.345093 1690.542358 1690.392456 1688.844482 1690.189819 1697.231201 1708.775757 1712.10498 1713.687622 1714.679932 1712.249878 1706.380005 1700.865356 1696.132812 1688.052124 1676.810547 1668.323608 1669.992676 1672.32251 1680.425537 1692.133545 1697.588501 1696.700439 1690.950317 1685.700073 1677.869629 1668.532227 1658.479248 1664.481445 1671.50293 1672.276367 1668.76355 1666.00415 1671.726074 1676.928589 1682.73645 1686.953735 1683.655884 1673.463013 1651.252686 1639.69873 1623.313354 1623.451538 1641.061646 1656.993652 1674.991333 1688.789062 1699.76123 1714.633423 1724.251099 1721.087524 1709.696045 1697.287476 1689.62207 1682.878296 1675.893677 1664.75293 1649.863281 1637.400391 1632.750122 1624.661255 1617.242188 1620.560913 1622.234619 1618.931519 1609.599609 1591.252197 1583.229736 1578.010132 1573.590088 1565.178467 1555.004395 1545.039307 1532.088501 1522.037109 1530.437866 1534.483032 1557.527466 1583.356812 1601.012817 1611.298096 1616.129761 1619.494873 1618.260986 1609.987671 1612.853149 1623.858643 1620.219604 1610.714844 1596.161987 1572.394531 1580.199463 1586.731201 1582.040894 1569.479736 1556.490967 1546.438843 1531.635498 1518.490967 1503.335815 1496.084229 1498.696777 1499.89563 1490.551636 1475.585449 1453.956299 1437.322388 1425.730713 1416.620483 1411.468628 1407.721191 1409.067017 1412.411987 1425.777466 1436.868652 1452.522827 1466.101929 1475.287964 1490.02832 1499.25 1504.99707 1509.549438 1512.545654 1516.10791 1523.552979 1529.415161 1538.40625 1545.655273 1549.702637 1553.95874 1566.565308 1589.01062 1605.787109 1629.782715 1642.375366 1657.7323 1672.455933 1670.187256 1666.563232 1675.712524 1679.138672 1681.362549 1685.355957 1690.017944 1688.206055 1684.324707 1680.312134 1675.674927 1671.785522 1673.640503 1672.737427 1673.496826 1673.992188 1673.056396 1671.038208 1668.790039 1666.415527 1662.896118 1658.657593 1650.130737 1640.507202 1630.370972 1618.567871 1605.618896 1596.305298 1592.536499 1584.394409 1582.112305 1574.628784 1571.32373 1569.070435 1570.547974 1565.733154 1560.712769 1546.105469 1534.108276 1524.500122 1527.790283 1533.476685 1541.600586 1552.577271 1564.361206 1572.928955 1575.414917 1574.070557 1571.42395 1571.398193 1574.524292 1575.859619 1575.220581 1571.723511 1564.961426 1557.78186 1550.630249 1547.612671 1546.754761 1547.268433 1548.515259 1549.29895 1541.492676 1532.562744 1525.246582 1521.214355 1517.331177 1514.958374 1516.665894 1521.432983 1528.28125 1536.470581 1535.112305 1518.52002 1509.871216 1504.766724 1499.587158 1498.310547 1497.892334 1496.880127 1503.135132 1510.052734 1517.806396 1525.991699 1532.112549 1536.381226 1544.675049 1553.462402 1564.116211 1573.652832 1585.02063 1594.951294 1606.495117 1613.578979 1614.471313 1614.256226 1612.379883 1604.912842 1594.709717 1581.013306 1571.145752 1555.860962 1540.608154 1532.625244 1525.63916 1505.245239 1492.842896 1479.178101 1465.335938 1457.225952 1447.510132 1437.365845 1430.837402 1423.937744 1418.386841 1412.677246 1407.987427 1420.73645 1432.563477 1443.020142 1456.834473 1473.930664 1482.922119 1493.104126 1506.706909 1525.858032 1533.336426 1541.037476 1550.222656 1561.807617 1570.698364 1577.927002 1585.213135 1594.834106 1601.063477 1606.500977 1611.315063 1616.931396 1618.939453 1617.02417 1612.150024 1600.667969 1587.777832 1583.737671 1581.966919 1577.097046 1568.913818 1575.60437 1585.582886 1594.378296 1598.692505 1600.190552 1596.661255 1591.684204 1589.175537 1600.369019 1594.881958 1583.669067 1569.123535 1564.936279 1564.637695 1560.218994 1555.611328 1548.454468 1540.573486 1531.713501 1522.625977 1521.071167 1516.201782 1506.41626 1497.817017 1490.560181 1475.81189 1460.833618 1452.125 1449.369629 1441.3927 1435.791626 1431.157349 1433.16748 1440.078247 1448.319336 1455.786743 1455.957031 1454.115967 1448.406006 1437.860229 1429.223633 1420.548584 1408.334595 1396.467163 1400.395752 1412.026733 1422.522095 1437.595947 1450.623901 1463.000366 1477.93457 1496.344971 1517.880371 1536.767456 1552.918457 1549.859741 1540.823364 1529.656738 1516.564209 1503.250732 1486.831177 1474.422241 1477.442627 1479.162842 1479.244507 1480.747803 1482.91748 1483.116943 1486.990967 1489.12439 1489.790039 1490.668457 1490.885986 1492.173828 1495.655762 1497.015015 1496.237061 1493.69043 1491.111328 1487.064575 1480.185425 1475.566284 1471.923584 1467.820679 1462.856445 1457.562744 1452.833618 1452.383057 1450.434814 1445.269897 1442.783081 1441.387817 1439.297607 1429.592041 1426.102173 1423.851562 1422.805542 1422.446045 1420.907349 1419.940674 1420.450562 1421.478271 1422.208984 1422.04541 1421.25061 1419.869141 1417.412476 1415.4198 1417.052734 1418.371704 1420.773682 1425.237915 1428.528442 1430.118408 1430.16626 1429.640137 1427.945435 1421.551392 1415.289062 1412.148804 1409.583862 1408.614136 1408.211304 1407.391602 1405.610229 1402.042969 1406.258423 1408.575684 1408.493042 1405.100342 1399.747925 1401.657349 1403.062256 1401.166504 1396.034912 1395.3927 1394.898804 1390.331299 1380.247559 1375.06604 1372.784668 1370.954712 1369.232178 1366.651123 1362.160278 1360.341675 1365.923462 1372.443726 1378.986816 1383.761963 1386.986328 1388.688721 1389.147583 1386.946167 1380.49707 1369.317871 1357.777588 1352.535278 1342.450684 1323.43457 1309.633911 1304.509277 1305.154297 1304.912476 1312.251221 1327.472534 1343.553223 1351.170898 1351.058472 1348.617065 1354.208374 1360.402222 1363.975098 1365.088867 1365.157104 1392.250488 1410.294678 1428.48877 1442.256836 1454.386353 1463.493164 1464.412109 1464.773926 1466.05542 1466.856445 1467.084351 1467.244751 1463.753052 1459.601807 1453.438232 1440.091431 1430.664917 1420.791992 1414.08728 1411.827271 1409.318237 1406.342163 1399.756836 1408.96875 1419.537354 1426.190918 1431.987549 1437.612549 1445.70105 1454.925781 1466.122559 1480.261108 1494.660034 1510.408569 1525.276978 1533.546143 1525.430176 1509.390991 1499.337158 1485.913574 1479.494873 1469.618774 1466.27063 1471.078003 1480.890137 1476.348389 1458.882446 1443.103027 1428.765259 1411.869141 1390.561523 1390.143066 1386.985962 1381.08606 1368.972778 1374.853882 1380.530762 1367.703003 1353.314697 1344.373047 1335.839478 1324.204712 1305.345459 1298.138062 1291.568359 1283.552002 1293.157959 1314.001831 1329.530762 1336.300903 1339.304565 1348.739502 1357.863647 1366.800903 1369.098511 1368.376221 1365.883057 1361.109375 1356.134155 1351.839722 1347.989624 1341.668823 1341.04541 1340.486084 1340.069946 1339.553711 1338.776245 1338.183594 1336.84021 1333.838257 1330.624634 1325.809814 1320.959839 1315.803223 1313.88501 1311.82019 1309.132446 1306.081543 1302.7229 1300.119995 1302.6698 1306.452148 1308.519409 1309.268311 1305.810425 1297.557251 1291.458618 1277.629883 1270.313843 1265.623901 1258.076294 1250.221313 1248.170898 1254.345459 1265.362915 1278.309448 1287.400879 1291.280273 1292.49292 1295.76062 1298.635986 1300.801636 1301.527588 1302.55249 1309.974731 1317.965454 1321.628052 1324.849609 1327.605103 1329.56897 1331.153809 1330.735718 1327.574951 1327.753174 1331.472656 1333.137085 1336.005249 1338.775269 1339.47522 1338.877686 1337.113525 1334.903931 +1658.361084 1657.535522 1654.62915 1648.430664 1650.178589 1654.934814 1665.896973 1676.797485 1679.295166 1675.861084 1674.109375 1677.279541 1678.879517 1680.339233 1688.471313 1699.268188 1706.029419 1709.303223 1710.618774 1710.569946 1708.40271 1703.832397 1698.291016 1692.025146 1683.439697 1673.605957 1671.618896 1675.166992 1680.059326 1688.867554 1698.140381 1697.156372 1694.714111 1687.620117 1681.449707 1675.611938 1668.283936 1665.776367 1672.238647 1675.387695 1675.410278 1671.700317 1669.582642 1672.703857 1677.785522 1682.564819 1693.68689 1686.417358 1674.188477 1654.878906 1639.95166 1624.377441 1627.380859 1644.545898 1660.116699 1678.807373 1692.414429 1704.781128 1722.272705 1724.487183 1717.093262 1704.706909 1693.802856 1682.616089 1668.208618 1664.555664 1657.418823 1643.840332 1629.071655 1616.903076 1613.368652 1604.972412 1607.057739 1609.255005 1606.996948 1598.708618 1584.655762 1575.344238 1566.51709 1562.778198 1555.987061 1548.894165 1537.06189 1525.723145 1523.701294 1544.014526 1553.205933 1554.040039 1577.722656 1597.049927 1611.670044 1619.879639 1625.422729 1627.567871 1625.765381 1622.063232 1624.095459 1620.563354 1610.703613 1589.834839 1583.68811 1594.343262 1594.697266 1582.277588 1568.497437 1554.586548 1542.785034 1518.759399 1509.83374 1510.816284 1517.527344 1515.880737 1508.215942 1491.850586 1479.570679 1462.353149 1444.055176 1432.469849 1423.458374 1416.060547 1411.127075 1408.813354 1411.869141 1419.967041 1434.032349 1447.469116 1461.501709 1469.930054 1479.498779 1489.438599 1494.690186 1498.296143 1501.817749 1505.571655 1511.940674 1517.501465 1522.451172 1529.36084 1535.279663 1545.685303 1561.148926 1574.976807 1591.83606 1612.688232 1627.96106 1637.776855 1650.461426 1657.266968 1662.410156 1676.205933 1682.136719 1685.273438 1690.477051 1695.348145 1693.949951 1688.766357 1684.949341 1684.33606 1684.438232 1682.180908 1679.5354 1677.709351 1675.985962 1674.539185 1673.283081 1671.65918 1668.808105 1664.583862 1659.715454 1651.493774 1641.19397 1629.565674 1617.05188 1609.0802 1600.926514 1595.671021 1585.130493 1576.699585 1570.933716 1561.94458 1557.878052 1556.587158 1551.900146 1547.228149 1540.729492 1533.852905 1529.538818 1531.36438 1534.435547 1536.503052 1545.734985 1555.803955 1563.654663 1566.662109 1567.77417 1568.171753 1570.703979 1574.210327 1576.012939 1576.232056 1574.385132 1562.664673 1555.943237 1548.940918 1547.311523 1549.546021 1554.359009 1556.455933 1553.015747 1545.720825 1534.950562 1526.87561 1522.428589 1518.331665 1515.803589 1517.217651 1521.487061 1527.255737 1535.783569 1537.790283 1526.900024 1512.757812 1509.377563 1502.671143 1502.446899 1502.684326 1501.220825 1505.722656 1513.429688 1523.324707 1530.344238 1537.646362 1544.869873 1552.917725 1562.374634 1574.922607 1584.210449 1590.911865 1598.275513 1607.942261 1613.13916 1613.451782 1610.392334 1605.713989 1597.539673 1587.384521 1577.954346 1568.294556 1554.514404 1542.86145 1535.797852 1527.846802 1511.44751 1495.127197 1483.605957 1470.449585 1459.543335 1449.796997 1439.078857 1429.390625 1422.278687 1416.59082 1410.543213 1411.692627 1419.812622 1430.351685 1442.874756 1454.637939 1469.77124 1479.831177 1489.792603 1504.472778 1521.911743 1530.813721 1538.394409 1545.757324 1553.124023 1560.839844 1572.712891 1580.461792 1590.098145 1598.745239 1603.528564 1604.003784 1603.186279 1610.334595 1612.547852 1608.934692 1601.776855 1589.885742 1575.304199 1571.308105 1568.378052 1560.017578 1570.01001 1578.401978 1587.762329 1594.283813 1599.525513 1599.496826 1600.591431 1600.480591 1602.330566 1595.406982 1581.572754 1569.617676 1554.269653 1549.346558 1547.203247 1543.487427 1538.568604 1530.327148 1519.7052 1509.019409 1504.375122 1500.870117 1492.201294 1485.039795 1477.383179 1465.792847 1453.914429 1447.499268 1443.264893 1441.455322 1444.987915 1451.146118 1454.848755 1460.386963 1465.086914 1460.675903 1453.078247 1445.563721 1433.306274 1423.929688 1410.990112 1404.625366 1405.008911 1399.845703 1400.002808 1412.604248 1422.818359 1434.667358 1445.587769 1458.675781 1479.041016 1494.835815 1515.890503 1528.504639 1553.04187 1548.708984 1538.083618 1527.890747 1514.20105 1501.299927 1483.059692 1479.359863 1483.39917 1484.179199 1486.563599 1493.836914 1499.376343 1502.05603 1500.610596 1501.789307 1504.308105 1505.442139 1503.558838 1501.221313 1504.281372 1503.890747 1501.185425 1497.331543 1492.915894 1488.02002 1482.948975 1478.713867 1475.775146 1470.664429 1464.556274 1460.766602 1458.957764 1456.573364 1453.914062 1449.225708 1443.600098 1440.826294 1436.300049 1427.95166 1426.659302 1428.126587 1428.672852 1428.406738 1427.002563 1424.610107 1424.001709 1424.5271 1425.207275 1424.762329 1423.5271 1422.753296 1421.641968 1420.331787 1419.735474 1420.32312 1422.561401 1426.856445 1428.700073 1428.827148 1428.375488 1427.349121 1424.636353 1420.238037 1415.927368 1410.474731 1403.755249 1404.189453 1405.264404 1404.584351 1402.890137 1398.98291 1399.934692 1401.986938 1402.01062 1398.785278 1393.596558 1388.366089 1392.182495 1390.502808 1383.490967 1380.278809 1379.573975 1376.442261 1373.719849 1370.891968 1368.791626 1365.425415 1363.770752 1365.102295 1368.067261 1370.89563 1376.556396 1381.8396 1386.911133 1391.487183 1394.772949 1397.073486 1397.485107 1392.263794 1381.995117 1370.912109 1361.959473 1356.157959 1340.431396 1318.341675 1306.536987 1305.306152 1305.220825 1304.675171 1314.99939 1324.284912 1331.874023 1334.771729 1335.604614 1337.533813 1340.792847 1346.27124 1360.12146 1375.593628 1387.577881 1403.838501 1416.165649 1431.294556 1441.426514 1450.642944 1461.671509 1465.541138 1464.244019 1463.293823 1465.560547 1469.583862 1475.792847 1476.123291 1472.059204 1466.446289 1452.572388 1435.739624 1429.001343 1426.930298 1418.285278 1416.384766 1412.179688 1403.509033 1413.939819 1421.994507 1427.695801 1435.8927 1444.679443 1454.882568 1466.149536 1477.661865 1489.979248 1504.193726 1517.495483 1531.160522 1543.420166 1534.610107 1518.063721 1505.465942 1495.3302 1488.666138 1481.403076 1477.148804 1477.539429 1488.040527 1485.772827 1465.320312 1451.165771 1434.653931 1414.962158 1411.484375 1416.67688 1406.549561 1393.036011 1389.197266 1385.004883 1379.492798 1365.093018 1351.755005 1341.45105 1329.82373 1316.341919 1311.727295 1311.165405 1298.337158 1285.270996 1300.111328 1315.643066 1331.720947 1342.923706 1349.078369 1356.001587 1366.493896 1369.503662 1369.057495 1365.627075 1362.769775 1358.012939 1353.450073 1352.743774 1350.28125 1346.519409 1344.893921 1343.690918 1342.723145 1342.616577 1342.580811 1342.42627 1341.911865 1340.619507 1335.781982 1330.098267 1325.375366 1321.517944 1321.809082 1320.517822 1317.719116 1313.507568 1309.141724 1304.977905 1307.785156 1315.830933 1318.068604 1315.784546 1312.049927 1308.240112 1296.540405 1289.278198 1280.815796 1273.963257 1267.268921 1258.327271 1249.17395 1252.647339 1264.501831 1276.137695 1282.728271 1284.157959 1285.390991 1287.742798 1290.385376 1290.938965 1291.460815 1301.531494 1310.731812 1317.999512 1321.913452 1324.749756 1326.095215 1326.802002 1327.841919 1327.719604 1326.101074 1316.920166 1319.179077 1324.35498 1328.145752 1331.387451 1331.846313 1331.270874 1329.09314 1325.141235 +1645.731812 1642.404907 1638.337158 1628.962891 1633.640381 1637.216919 1645.857422 1664.055298 1664.735474 1657.244629 1661.529053 1665.839233 1669.168457 1678.486206 1687.358154 1694.142334 1697.456909 1703.01355 1706.977417 1706.7948 1703.606567 1698.445923 1693.490356 1686.093872 1680.393677 1677.957764 1678.123535 1679.748291 1686.446289 1696.671509 1698.519165 1695.645386 1692.021362 1684.188354 1680.680542 1676.153076 1670.733643 1671.762207 1679.417358 1682.553467 1679.282471 1673.407104 1669.975464 1673.539307 1679.714478 1685.086182 1696.723999 1690.074463 1673.025757 1657.550659 1643.149658 1627.989868 1630.36792 1646.982178 1661.063843 1679.278076 1693.907959 1711.659668 1722.225708 1721.919067 1710.185059 1700.374756 1690.584351 1678.320923 1660.996338 1652.019409 1645.118652 1636.696167 1623.999268 1607.760376 1599.258545 1592.240479 1589.561523 1593.327515 1592.036865 1588.341187 1578.528198 1569.090332 1558.459595 1551.885498 1547.240967 1542.746826 1538.146851 1525.924805 1530.683716 1550.077026 1568.461304 1563.766479 1563.158813 1587.577759 1605.789551 1619.511719 1627.511475 1633.372559 1634.241699 1631.170776 1629.935059 1624.105103 1609.865234 1588.827515 1596.136475 1601.918945 1598.340088 1575.502197 1561.597534 1548.289307 1536.3479 1530.126465 1532.732788 1533.36377 1528.434692 1520.587158 1508.121704 1487.031616 1477.724365 1460.106934 1445.547241 1434.965942 1426.502075 1418.591553 1413.460938 1410.276611 1411.901978 1418.686157 1430.642456 1442.262939 1454.453003 1464.665649 1470.959595 1477.702026 1484.377075 1487.490112 1490.837036 1495.004517 1498.539795 1508.052002 1513.913574 1517.946167 1525.760132 1539.116699 1552.081909 1563.249512 1578.23584 1593.740356 1608.901978 1622.283325 1629.935303 1638.128052 1644.887695 1673.660034 1684.254272 1688.484741 1694.619751 1696.977173 1695.335815 1691.424805 1687.691772 1685.604126 1683.994629 1684.368774 1682.916504 1679.868652 1676.701538 1674.878418 1673.930542 1672.908447 1670.621704 1665.372192 1660.421997 1652.911133 1644.214355 1634.411133 1625.543701 1618.267334 1612.005371 1601.591553 1588.504639 1582.014282 1578.935303 1575.362305 1564.53064 1557.064575 1548.780884 1541.053345 1534.708374 1533.752563 1533.137085 1534.697144 1539.084839 1543.552734 1546.998291 1548.375122 1557.174561 1560.738281 1562.095703 1563.154541 1567.640503 1572.267212 1575.613403 1576.595581 1574.864502 1561.688354 1556.028564 1549.99353 1554.708252 1561.92981 1563.809937 1561.688965 1553.248535 1544.409424 1534.997192 1527.875732 1522.942017 1519.181152 1516.56189 1518.232666 1521.90979 1527.19751 1535.304932 1538.890747 1533.881836 1523.62085 1514.32312 1509.631226 1507.751831 1507.22229 1506.831665 1508.675171 1515.585205 1525.7229 1533.350464 1540.529785 1548.2854 1555.99939 1568.794556 1579.985352 1588.1604 1594.226196 1603.077271 1611.548218 1613.612183 1612.241455 1605.717041 1596.757935 1588.47876 1580.988892 1573.378906 1564.323975 1552.547974 1543.582764 1536.931396 1527.253052 1512.94873 1495.69812 1483.467773 1469.909302 1459.489502 1449.669312 1442.784546 1430.692749 1416.950684 1412.630249 1418.687866 1415.157471 1419.208496 1428.06311 1441.126953 1451.879883 1466.33252 1475.589966 1484.046143 1497.909912 1509.159058 1522.80188 1529.305786 1534.219727 1537.944824 1550.652344 1563.576416 1576.459473 1584.558228 1597.661011 1601.127197 1593.189087 1590.531372 1600.843506 1604.580444 1604.054443 1599.293091 1588.454102 1580.032593 1573.43042 1564.507935 1559.678711 1564.071899 1577.384277 1584.860229 1585.108521 1585.202637 1596.956543 1605.999512 1608.159058 1607.394897 1599.839355 1586.526001 1574.978149 1559.30957 1540.887573 1537.283447 1530.557007 1524.761475 1515.941895 1506.458496 1494.890381 1489.358276 1484.120239 1475.194458 1465.938721 1460.4198 1460.799438 1459.038086 1459.054199 1459.253052 1459.384766 1462.837524 1467.111694 1466.276855 1463.677246 1455.760254 1451.077026 1445.032959 1433.567871 1419.52356 1410.533691 1403.663818 1402.930664 1400.613159 1398.720459 1399.809326 1411.318726 1423.276001 1433.186279 1444.508911 1458.117188 1478.058716 1493.007202 1511.512939 1524.833862 1550.947632 1547.559448 1535.27124 1525.488403 1510.292236 1498.51062 1489.962524 1492.074341 1490.513184 1489.022705 1495.370239 1503.622681 1511.267212 1516.076904 1519.41333 1520.388794 1519.259033 1518.223389 1516.137939 1511.37793 1513.021362 1510.531372 1504.602783 1499.683472 1493.51001 1487.817505 1483.466309 1479.28772 1477.088257 1472.908569 1467.081421 1464.77356 1463.836548 1460.350464 1454.847412 1449.703735 1439.782593 1438.22937 1437.071899 1436.39624 1434.966187 1433.421509 1432.347656 1431.11853 1429.426392 1427.646362 1426.758789 1427.62854 1427.822144 1426.501343 1425.370239 1426.292847 1425.55481 1423.00769 1421.204956 1421.052734 1422.395752 1424.21875 1424.335083 1423.433105 1422.360352 1420.963013 1418.709473 1415.840088 1412.497681 1407.471313 1402.276367 1399.580078 1401.197754 1400.210815 1397.074951 1392.885132 1389.747192 1393.174194 1393.034912 1390.262817 1385.370972 1377.847534 1376.704224 1377.249634 1375.011719 1373.080933 1371.852783 1370.250488 1369.025635 1368.111084 1368.98938 1372.472412 1375.891724 1378.300415 1380.18457 1382.578979 1386.066406 1390.047363 1394.696655 1398.686523 1402.054077 1404.93689 1405.817017 1401.642334 1386.990112 1375.86792 1364.884277 1353.805298 1332.174805 1314.640625 1306.342529 1306.12561 1304.92749 1309.651123 1314.47229 1316.179443 1324.677124 1329.58252 1333.473999 1340.21582 1341.961914 1351.536377 1374.257935 1390.016846 1394.848999 1406.748413 1415.341431 1427.012085 1435.342407 1443.059204 1447.799316 1447.729248 1447.188477 1447.985229 1456.298584 1464.085449 1471.38562 1479.098877 1477.691528 1470.790771 1454.166992 1443.18042 1438.956909 1433.634399 1426.950684 1426.669922 1417.629395 1408.153076 1421.762451 1428.045044 1430.306519 1439.712158 1452.592163 1464.473999 1477.273682 1489.615356 1502.832153 1512.323242 1522.699463 1540.824097 1554.750244 1545.563843 1528.035034 1511.807495 1503.74939 1496.95105 1488.165039 1484.355713 1482.459717 1482.310425 1477.603027 1467.932007 1456.259521 1441.52832 1427.547852 1429.010254 1420.317993 1406.438843 1397.37439 1390.674438 1379.846558 1371.459839 1358.048218 1344.582275 1331.190674 1325.737061 1323.572266 1324.758301 1318.354858 1295.27124 1288.118774 1304.405273 1320.743408 1336.625854 1348.602539 1357.901489 1366.835327 1372.526611 1374.075928 1370.350708 1366.037964 1364.172607 1359.927979 1357.096069 1355.717407 1353.551514 1351.467896 1350.201904 1348.963135 1348.032104 1347.908691 1348.511108 1349.159668 1348.789673 1346.19812 1342.662231 1335.483521 1329.605469 1330.947144 1330.64917 1328.715332 1324.583496 1320.8927 1318.049072 1313.664673 1312.631104 1318.689331 1319.894165 1319.271118 1317.88916 1311.819214 1304.766235 1298.000488 1289.279297 1280.321777 1272.137817 1264.217407 1257.788208 1249.63269 1258.13501 1268.570435 1273.976807 1277.452515 1279.101807 1279.352417 1282.907227 1289.692627 1297.023193 1305.329102 1312.14624 1317.744629 1323.860962 1326.726807 1326.807129 1325.371704 1325.180054 1328.232788 1331.132935 1319.06189 1309.485352 1315.046997 1318.607544 1320.461304 1321.259399 1319.906128 1315.797607 1313.973755 +1631.441284 1628.050903 1621.451538 1611.751953 1617.87915 1617.330322 1619.230103 1642.68396 1647.585693 1643.562256 1647.497925 1655.355713 1666.337769 1673.380615 1679.010986 1682.121094 1685.037964 1688.893677 1691.938965 1695.019165 1694.667114 1693.677002 1689.015503 1681.691162 1683.359985 1685.176636 1684.986938 1685.653198 1693.212402 1700.394409 1700.323242 1695.135376 1692.730957 1689.311035 1685.889404 1683.058228 1677.086792 1681.335083 1684.414307 1684.822021 1682.591919 1676.223877 1670.240723 1674.865601 1684.464966 1691.588745 1697.893311 1695.273438 1677.20874 1664.215332 1651.375732 1638.115112 1633.121216 1648.922363 1659.638184 1678.2323 1695.969849 1714.089722 1722.614258 1716.548706 1704.091675 1694.723755 1684.96582 1671.724731 1657.322266 1647.096191 1634.470703 1625.303955 1614.753662 1600.491699 1583.866577 1579.463257 1571.376953 1569.699097 1571.134644 1565.791992 1562.127563 1557.571411 1551.161133 1548.33606 1549.785278 1548.788208 1543.792358 1533.87207 1531.407593 1555.342285 1577.81543 1582.453247 1572.489136 1580.869019 1600.46228 1614.755371 1627.296387 1636.094116 1638.90564 1639.154785 1635.786865 1628.604492 1612.635742 1607.934814 1609.0271 1605.990112 1592.799072 1571.972046 1569.255005 1560.238403 1554.268433 1551.34668 1546.695068 1540.918823 1529.878662 1519.213867 1502.177734 1481.502686 1468.781738 1456.101562 1443.726685 1434.365845 1426.734863 1419.469727 1415.558472 1413.53772 1411.838501 1418.77832 1429.320801 1438.549805 1448.342041 1456.859863 1462.428833 1467.623047 1472.634766 1475.956543 1481.695435 1485.198853 1489.18396 1496.442627 1503.215942 1510.541992 1520.489258 1530.632324 1542.805786 1552.609863 1562.598877 1579.032715 1591.885742 1599.958252 1607.775513 1622.780273 1630.848755 1666.486084 1679.670654 1687.095581 1691.805298 1696.693481 1694.875854 1690.702393 1686.575073 1683.7052 1680.533569 1682.927612 1682.466797 1677.123291 1674.197754 1673.631958 1672.015869 1670.572998 1667.518066 1663.214478 1660.062378 1652.24939 1644.922363 1637.08374 1628.029297 1619.858398 1613.656982 1605.656494 1597.761475 1592.010742 1585.171509 1578.179932 1570.398682 1558.886475 1550.05957 1541.582031 1536.852417 1536.237061 1538.378662 1545.589722 1550.705444 1555.786865 1559.094971 1559.085205 1558.75061 1558.8479 1559.549194 1559.961426 1562.046997 1570.199585 1575.633667 1576.620728 1575.658447 1566.088867 1558.338013 1560.772827 1564.569824 1566.822388 1564.613281 1559.78186 1550.403931 1541.966797 1533.900513 1527.441772 1522.718384 1519.363525 1517.206055 1519.43689 1522.767944 1528.741943 1536.443359 1540.060059 1540.005737 1532.337036 1523.65686 1516.339478 1511.281128 1512.339478 1512.171143 1511.188477 1516.445801 1525.449951 1535.072266 1542.104126 1548.970703 1557.383545 1573.494141 1583.821289 1590.921387 1597.634277 1610.014282 1614.232666 1613.973511 1609.611328 1602.093018 1593.449829 1582.312256 1573.380859 1565.574951 1557.874878 1550.146729 1540.887329 1534.160522 1524.571777 1508.878906 1492.584229 1479.085815 1465.838257 1459.842896 1452.782349 1441.715454 1427.237793 1414.664795 1422.299316 1435.515747 1433.907715 1422.669678 1426.848877 1437.803223 1448.858887 1462.914551 1470.599609 1478.552979 1487.009399 1496.975586 1504.160645 1509.125366 1518.776123 1530.646362 1542.44751 1560.492432 1572.74231 1584.071167 1592.884033 1592.162476 1580.505493 1579.731689 1588.694946 1596.926147 1597.408081 1591.837769 1581.477051 1574.098877 1570.775269 1564.68811 1560.022095 1563.193848 1574.695068 1571.484619 1581.811279 1593.449707 1602.300781 1609.561646 1612.023926 1612.207275 1605.943115 1594.353394 1579.167969 1559.394531 1547.16272 1536.91394 1526.331665 1522.026001 1511.834351 1502.910156 1493.826172 1486.830322 1482.823486 1477.135376 1477.550415 1477.62854 1480.233643 1481.306641 1482.385376 1483.303467 1482.943237 1478.656128 1466.161377 1457.826416 1453.9104 1444.826904 1439.467773 1432.097168 1419.917725 1411.106812 1404.819092 1415.157959 1418.759155 1415.492188 1403.904785 1401.964111 1410.878296 1423.154541 1433.929321 1447.14563 1460.424927 1476.360474 1489.644653 1505.623169 1521.938477 1544.78772 1545.388306 1533.718262 1521.512817 1507.622314 1500.323364 1501.689697 1502.912598 1502.557129 1501.931519 1507.876953 1513.563965 1523.44812 1531.71936 1537.679077 1536.296631 1530.089844 1527.26123 1524.018921 1519.999878 1517.185547 1512.855347 1506.758789 1500.682495 1493.867554 1486.919067 1482.732178 1476.787598 1473.866577 1471.535767 1467.780884 1465.601807 1464.630859 1461.064819 1453.258545 1449.386719 1442.458374 1442.682495 1443.050903 1442.794556 1440.796997 1437.977051 1435.73999 1433.682495 1431.803833 1430.068726 1429.150513 1428.65686 1427.562256 1425.672363 1425.844116 1427.776245 1426.498901 1423.448486 1421.255859 1420.304565 1420.16748 1419.605835 1417.235718 1415.710815 1415.037964 1413.76062 1412.566162 1410.683105 1407.565063 1404.343384 1398.119507 1389.703857 1392.726196 1392.102905 1389.639282 1385.676514 1385.399902 1382.118774 1380.17395 1379.473999 1377.366699 1375.346069 1374.253906 1373.124023 1372.713379 1373.487671 1373.385986 1373.578369 1375.426514 1378.666138 1380.920654 1383.94519 1387.187866 1389.455444 1390.869141 1392.271484 1395.571777 1399.224121 1402.829956 1406.740601 1409.669678 1411.212646 1411.44104 1408.558105 1391.767578 1380.55603 1367.643311 1349.56311 1322.827759 1313.811768 1308.307983 1306.762817 1310.374634 1316.363525 1320.277832 1323.464966 1330.91748 1337.526855 1352.457642 1362.292236 1356.580566 1350.25293 1375.597168 1389.393921 1394.074951 1395.115234 1414.354614 1420.928223 1423.444824 1432.651978 1435.72937 1432.379639 1429.141602 1432.215698 1439.234009 1453.190552 1461.168579 1467.370972 1479.09375 1476.733032 1463.498657 1453.037354 1445.019653 1438.013916 1435.862061 1430.179688 1419.59021 1419.504761 1431.76062 1433.330566 1435.483643 1442.541382 1455.786987 1467.658325 1481.685059 1496.182007 1507.181519 1516.688232 1527.470459 1543.591675 1561.168823 1553.175903 1536.976562 1524.390625 1510.656616 1505.810547 1499.458984 1489.515259 1485.293213 1476.91687 1470.314209 1464.138672 1458.310913 1453.363281 1441.035278 1431.022827 1416.732666 1403.233643 1394.880737 1384.140503 1370.979248 1359.033936 1345.675537 1339.648438 1335.725098 1337.01709 1337.725708 1332.061035 1317.520874 1290.396973 1297.396362 1307.117798 1320.380615 1337.87439 1357.097656 1366.580566 1377.133667 1379.997192 1379.369019 1375.51123 1369.880981 1365.78186 1363.50647 1361.935669 1360.020142 1357.487915 1355.89209 1355.303345 1354.473389 1353.464233 1353.22937 1354.315796 1355.365479 1355.319092 1352.085205 1345.990356 1340.93042 1337.035767 1337.084106 1336.493408 1333.92688 1330.234619 1326.101074 1322.452148 1317.84436 1317.53186 1317.581665 1320.968262 1320.400146 1319.234741 1314.116211 1307.094482 1298.639282 1291.09375 1282.427368 1274.150879 1267.338501 1259.325806 1252.004395 1253.182251 1258.196289 1265.385376 1273.672485 1279.65625 1283.111206 1291.617676 1295.023315 1302.065063 1308.03479 1316.54541 1324.419067 1330.14856 1330.507935 1330.146606 1324.768799 1321.064087 1327.243652 1330.905273 1318.924194 1303.865356 1306.581543 1308.956909 1308.965942 1306.264282 1303.776001 1304.338013 1309.650513 +1615.298584 1607.471313 1598.210815 1593.758545 1597.518799 1597.985352 1612.442993 1628.947388 1633.262939 1633.169678 1637.063843 1648.544556 1659.556885 1662.597168 1664.976562 1667.688721 1672.166382 1675.7771 1679.107544 1682.015503 1687.207031 1689.102051 1688.185181 1690.551758 1696.387817 1697.498901 1695.930786 1695.562012 1701.672241 1707.468018 1703.905762 1698.999023 1697.033447 1694.046631 1689.55835 1684.792358 1681.394897 1683.727173 1685.348022 1685.408691 1684.020142 1678.433472 1672.249878 1677.575928 1688.515381 1697.252075 1701.800415 1698.387817 1686.163208 1675.071655 1659.437866 1643.445923 1633.918335 1651.124756 1660.306519 1672.792114 1695.069824 1713.356323 1719.632446 1710.459595 1696.819946 1686.034424 1673.881958 1662.796265 1651.514038 1641.911743 1630.093628 1612.196045 1599.483887 1584.33252 1581.008545 1583.032593 1583.922241 1581.924316 1578.692993 1569.797119 1564.715576 1563.52478 1565.652222 1569.283081 1567.302612 1563.134155 1553.22583 1540.640503 1528.600098 1552.704468 1579.800659 1598.389648 1591.759277 1575.06958 1596.19397 1610.421997 1623.706421 1635.569092 1642.139893 1647.601807 1642.910156 1634.404419 1621.514526 1624.253906 1619.818115 1610.566772 1598.564453 1589.00769 1583.165039 1575.20459 1562.724121 1556.269897 1550.197144 1537.942627 1523.304199 1513.535034 1495.975708 1476.409302 1461.208618 1449.984253 1439.277954 1434.883667 1425.983398 1423.892212 1419.592529 1416.269287 1412.877686 1419.187866 1428.35144 1436.311035 1443.633423 1450.464233 1455.086182 1459.797241 1464.353394 1469.264893 1474.91626 1479.379761 1482.998657 1486.988647 1494.412476 1501.922241 1511.861572 1518.317505 1528.02002 1541.964722 1551.750122 1559.985229 1576.216431 1587.330811 1592.084229 1600.337891 1617.622314 1657.623047 1666.32251 1678.313843 1687.372314 1697.004395 1695.201904 1689.069824 1683.79834 1678.325684 1674.646606 1676.621704 1674.678345 1670.779297 1668.717651 1668.879761 1667.796143 1665.487793 1661.61438 1659.27478 1653.76416 1646.750854 1641.696777 1636.225952 1627.200317 1618.749756 1612.725464 1607.092163 1600.313965 1595.556519 1587.25415 1576.183838 1563.913208 1553.508423 1547.214355 1544.738647 1543.072266 1542.255737 1544.322998 1552.892578 1560.083862 1567.27002 1572.361084 1572.698975 1568.65271 1563.928589 1563.03186 1566.270996 1567.5625 1568.599121 1574.674805 1577.35791 1576.445923 1570.320801 1563.129639 1569.758301 1573.687988 1570.011963 1562.496704 1555.030396 1546.37207 1538.887695 1532.388184 1526.823486 1522.213745 1518.834839 1519.32959 1521.281738 1524.792603 1531.106689 1538.010742 1543.635376 1544.935913 1540.397339 1532.267822 1522.193604 1519.053711 1519.091064 1519.87146 1517.654419 1519.603027 1524.383911 1534.983765 1543.718384 1550.637329 1561.290771 1575.44165 1585.434326 1594.333496 1604.303589 1613.462524 1614.724976 1613.839844 1606.816895 1595.637207 1587.037842 1576.518311 1563.167236 1555.303955 1548.127197 1541.15625 1534.478638 1527.491943 1516.917969 1503.614868 1490.918701 1480.075562 1471.387939 1464.30542 1452.462769 1438.144653 1418.786865 1419.729614 1428.1521 1440.854126 1442.972168 1431.457031 1425.271851 1434.42395 1444.051758 1453.318848 1461.086548 1467.215454 1476.413574 1484.182495 1490.082764 1497.789917 1511.837769 1524.07959 1535.382812 1556.104126 1573.986572 1582.286865 1586.823242 1586.85376 1572.292603 1564.409424 1574.94812 1580.837646 1584.833374 1584.371826 1577.263672 1566.509766 1562.448608 1561.570312 1557.706665 1560.27063 1564.868286 1570.605225 1584.18689 1594.710693 1600.147217 1602.863892 1605.197998 1608.887329 1612.035156 1599.822388 1584.500854 1569.860229 1561.179199 1552.568726 1540.819092 1535.13623 1533.298218 1528.28125 1516.833618 1507.253418 1502.943237 1500.133057 1500.45105 1501.4198 1503.034058 1503.708496 1503.132935 1496.760254 1488.318481 1475.3396 1462.915161 1450.392212 1438.856445 1432.5802 1424.70105 1421.431885 1415.528442 1408.262451 1409.328125 1423.141357 1428.783203 1428.322632 1420.348267 1415.890991 1423.648926 1428.371826 1434.994019 1448.103516 1463.301025 1480.751709 1498.437988 1512.217041 1528.599609 1540.120605 1539.879883 1531.43042 1516.961548 1509.932373 1509.71936 1510.845825 1511.7854 1511.282104 1515.480957 1523.038086 1530.060791 1539.44751 1548.427246 1549.383545 1543.796265 1540.024658 1536.123535 1530.152222 1524.686768 1520.264648 1513.738037 1508.174683 1501.916504 1495.904541 1489.101562 1483.549438 1477.897217 1472.915771 1468.175903 1464.905151 1463.209473 1460.96814 1454.859253 1450.613159 1450.705444 1451.69397 1451.047974 1449.056885 1446.906616 1443.970459 1440.6427 1437.678589 1435.69519 1433.82373 1431.551758 1429.340332 1427.590332 1426.144531 1424.281128 1423.976562 1425.341553 1423.482056 1421.300293 1419.46875 1418.294189 1416.990845 1415.313232 1412.081177 1409.613647 1408.2948 1407.19519 1406.208008 1405.039795 1402.980469 1398.555786 1392.057007 1388.940674 1387.491577 1387.479614 1387.256348 1390.129272 1391.345459 1389.592896 1379.635742 1376.530396 1375.571289 1374.612671 1376.223511 1379.920288 1380.690186 1380.987183 1380.923462 1381.410645 1384.298218 1387.852539 1391.224487 1393.638428 1396.039917 1397.957275 1399.693115 1402.36377 1405.713989 1409.182373 1412.786133 1416.379028 1418.400391 1419.045044 1417.73938 1411.79895 1395.900757 1382.344482 1365.628418 1342.812622 1321.599121 1314.462036 1309.774902 1307.083496 1311.585571 1318.178955 1323.515503 1328.891846 1336.445557 1347.344727 1362.41394 1375.525879 1376.143555 1359.009277 1364.258789 1370.150757 1370.212158 1385.33252 1398.635742 1409.293091 1412.626221 1420.186157 1419.379761 1420.902954 1430.726318 1440.054443 1446.44873 1453.172119 1458.242676 1465.613281 1478.745605 1489.618164 1476.311401 1462.495605 1450.325317 1449.279053 1442.833618 1430.727661 1425.327026 1435.466187 1441.271606 1438.974609 1436.757202 1442.774292 1456.11499 1468.531128 1481.511475 1496.639893 1509.112549 1518.394897 1529.026001 1541.372925 1550.807495 1548.516235 1541.292969 1533.067627 1524.801392 1515.70105 1510.147583 1502.985962 1492.693481 1477.084961 1462.819092 1455.801147 1451.561035 1446.268311 1435.924072 1426.632935 1411.862061 1400.685547 1390.979248 1375.7948 1368.661011 1363.201904 1358.259644 1354.788086 1355.377808 1353.99707 1345.436523 1331.32373 1306.926147 1295.124146 1311.93335 1324.042847 1332.38208 1343.080933 1362.79834 1375.496582 1384.351196 1389.45752 1386.451416 1380.121094 1374.86145 1369.594971 1367.507446 1366.657837 1365.171143 1363.073486 1360.99585 1359.817139 1358.730469 1357.968994 1357.499023 1358.117188 1358.213501 1356.73291 1353.491577 1348.388916 1342.831909 1341.743896 1342.765015 1341.946655 1339.006836 1334.538208 1330.419189 1327.56604 1324.397217 1322.829712 1322.323364 1321.851807 1319.66748 1317.012817 1310.281494 1303.650146 1295.636108 1288.468628 1279.744141 1272.660034 1265.091797 1257.352783 1253.106079 1251.888306 1254.157349 1265.151367 1275.542603 1285.414062 1295.320557 1303.611084 1307.781128 1308.873047 1313.427612 1319.862183 1328.413696 1332.312134 1331.829956 1328.201416 1321.595581 1317.609131 1316.712769 1317.709961 1310.477417 1300.374268 1298.293945 1300.906006 1301.542603 1301.112427 1303.023804 1307.51123 1312.271973 +1590.7146 1581.424927 1570.75708 1574.716431 1577.400391 1582.352783 1602.268066 1619.975586 1624.773071 1625.662231 1632.812988 1641.573853 1648.31543 1651.330688 1652.353882 1653.049683 1655.795654 1656.279297 1664.407471 1679.391724 1685.061035 1684.44751 1683.213501 1691.002686 1697.442139 1698.525024 1700.547729 1705.654419 1709.689819 1708.387939 1701.843018 1698.794434 1697.907593 1695.941772 1691.582886 1686.715454 1684.136353 1684.870483 1686.182861 1686.005371 1684.246216 1680.929199 1678.549072 1681.258667 1689.771362 1699.224731 1707.579468 1706.156616 1694.210327 1681.050293 1667.723633 1648.989624 1638.513184 1654.931274 1669.323486 1677.825684 1691.47168 1711.250366 1714.510498 1706.943604 1693.369141 1676.778687 1663.490723 1652.863159 1643.671265 1635.034668 1624.705444 1609.097656 1589.592041 1588.779541 1596.744141 1600.672485 1600.674316 1600.212036 1597.026855 1583.444214 1579.3573 1582.020996 1586.969238 1587.530518 1582.346436 1573.770386 1561.522827 1547.068237 1533.435181 1545.513672 1569.772949 1597.774292 1604.589355 1594.671143 1586.471313 1602.437622 1616.075684 1629.879517 1640.36792 1648.894043 1647.425415 1641.783325 1637.627075 1635.100586 1627.878662 1618.772705 1610.029663 1600.430908 1590.004395 1578.988892 1566.914307 1555.828125 1544.968628 1528.052246 1516.499634 1503.341797 1484.301392 1470.322876 1454.975952 1449.487061 1450.385376 1446.566772 1438.610474 1428.522949 1422.320923 1417.107422 1413.933594 1418.98999 1426.315308 1432.706665 1438.69104 1443.897583 1447.987671 1453.876343 1458.80249 1463.488159 1469.304199 1473.95105 1478.12146 1482.409546 1488.308594 1493.629028 1501.496582 1509.883667 1522.266479 1532.766724 1540.391602 1548.959961 1556.212524 1566.186035 1578.203247 1587.053345 1597.651611 1643.432251 1656.74231 1666.873047 1685.33374 1697.482178 1694.53064 1688.438477 1680.584229 1670.404297 1668.821899 1670.324463 1669.745728 1664.252808 1659.941284 1660.809326 1663.122925 1661.256958 1656.420166 1650.757568 1644.929443 1641.542236 1637.337891 1632.593506 1624.878052 1615.558228 1607.376709 1600.823975 1593.477539 1587.77002 1582.297852 1571.075073 1556.78833 1547.382812 1550.35083 1551.009521 1550.152344 1552.506714 1550.215332 1554.632446 1562.78479 1573.781616 1577.337402 1577.431885 1575.412109 1571.052856 1572.635742 1576.192871 1576.797729 1574.30603 1576.077637 1579.285034 1577.922119 1573.639648 1573.763184 1575.630493 1574.333496 1568.241577 1561.007812 1551.22876 1543.502075 1536.447144 1530.71106 1525.533325 1521.366943 1521.420654 1525.783936 1523.180664 1525.524414 1531.767578 1538.775879 1546.508911 1550.656738 1545.625 1536.083984 1526.342285 1528.28186 1525.289551 1527.932739 1524.401001 1523.769775 1529.875 1538.074341 1548.116821 1556.560669 1565.822266 1576.613159 1588.046753 1599.000732 1608.728149 1613.805176 1614.6604 1613.280762 1603.578247 1590.108521 1579.531738 1570.026855 1557.764526 1547.129761 1536.915161 1528.663574 1524.876099 1516.758911 1506.358276 1496.537354 1487.407715 1478.250854 1469.545044 1460.718994 1448.462036 1432.17041 1418.771729 1423.004272 1429.154297 1441.672119 1446.873413 1439.409668 1428.612427 1429.110107 1436.46814 1447.487549 1453.073486 1462.410522 1465.706299 1476.319458 1486.987061 1504.57373 1524.809814 1535.073853 1549.950195 1562.573364 1575.042969 1578.435791 1579.643555 1577.347656 1568.418701 1555.775757 1561.025269 1566.143921 1572.641113 1577.169189 1575.564697 1562.614502 1555.627686 1554.250488 1551.799438 1551.895142 1557.475464 1568.94397 1580.00293 1586.713013 1591.126831 1591.412354 1593.705322 1597.430054 1610.29895 1605.44043 1591.270874 1581.347412 1574.728149 1563.696655 1558.778931 1551.607178 1543.61499 1533.805786 1526.523438 1516.274414 1517.868652 1521.297607 1527.435303 1528.422119 1522.392212 1517.48877 1505.588135 1485.693604 1477.390991 1468.138062 1457.514648 1445.395386 1428.9823 1420.778076 1416.095825 1415.219238 1411.841064 1406.764771 1413.047852 1428.780396 1436.672852 1440.67749 1438.750488 1430.860229 1440.551147 1446.600708 1450.782715 1451.096558 1464.300537 1484.231812 1503.024048 1517.813843 1532.818359 1539.057251 1535.375122 1525.673218 1522.512085 1520.105835 1521.009766 1521.946777 1522.545532 1523.528687 1532.413696 1539.318237 1544.880737 1554.324951 1560.596802 1558.252808 1551.533569 1547.498657 1541.77124 1535.374756 1530.322388 1524.974487 1518.845459 1510.960327 1505.917603 1498.727051 1489.92627 1482.929199 1475.860229 1469.945557 1464.526123 1462.407837 1461.638306 1459.938354 1457.016724 1455.888428 1456.364868 1456.819336 1455.76062 1453.611084 1450.887085 1447.604614 1443.749756 1440.05835 1437.580688 1435.658447 1432.495483 1428.020142 1425.924683 1424.696045 1422.850464 1421.277832 1419.814331 1418.400269 1417.641235 1416.470825 1415.445801 1413.40625 1409.930298 1406.462524 1403.124512 1401.537476 1401.328003 1401.280273 1400.295532 1396.065552 1389.837402 1389.20752 1393.184937 1397.356689 1398.443726 1398.358765 1398.243652 1395.803467 1390.609375 1380.600952 1376.495239 1376.625732 1377.761963 1380.842773 1383.473999 1385.336548 1386.94165 1388.049316 1389.971802 1392.50769 1395.04541 1397.752319 1400.12915 1403.045776 1406.507202 1409.220947 1412.64856 1416.191406 1420.042236 1423.786133 1427.696411 1430.881104 1430.435547 1424.178589 1416.150146 1399.238647 1381.599365 1363.548584 1345.659302 1324.660767 1315.406616 1311.249512 1308.458618 1311.49646 1319.168213 1326.821655 1333.085449 1339.889526 1350.853882 1364.535889 1381.459839 1390.453003 1379.289551 1363.659058 1365.606812 1384.171631 1392.157593 1390.434692 1397.311035 1404.659302 1409.855103 1411.60498 1425.63501 1435.490845 1443.521851 1453.490112 1457.723389 1465.285278 1472.247314 1483.417114 1491.231201 1484.523682 1471.064209 1465.613647 1458.595825 1447.156616 1434.154907 1437.598267 1442.944702 1447.792236 1444.681641 1437.715576 1440.893066 1454.763428 1467.121582 1477.137817 1493.071411 1508.32251 1517.681519 1527.252319 1538.199097 1541.039551 1536.89209 1533.017334 1528.487915 1526.050659 1527.092285 1520.898193 1510.822021 1501.722656 1485.730469 1463.876465 1451.490845 1439.304077 1431.85498 1423.918213 1415.793091 1410.171509 1407.577026 1404.496582 1401.300293 1394.292969 1380.952515 1370.773438 1368.027954 1365.298462 1357.19397 1337.680298 1317.102051 1296.485474 1309.98291 1324.403687 1334.688232 1345.240112 1350.655396 1365.876099 1380.729004 1390.137695 1393.488647 1392.516479 1384.959839 1377.656372 1374.595825 1372.347168 1371.199463 1369.764282 1367.809692 1365.587524 1363.97644 1363.172241 1362.31958 1361.465698 1361.095581 1360.633301 1358.383667 1354.333252 1351.134644 1348.206177 1345.996216 1345.686279 1344.624634 1342.73877 1339.308472 1334.891846 1331.712158 1329.381836 1327.252563 1325.493774 1322.818115 1319.355713 1314.124878 1305.765259 1300.678345 1295.416992 1286.319336 1277.111328 1267.718018 1259.842041 1255.234619 1255.127075 1254.135498 1253.717651 1261.177368 1273.345093 1284.016968 1295.870483 1305.772949 1308.12561 1310.118652 1314.175171 1318.130249 1322.887939 1323.447266 1318.040894 1314.799805 1314.286987 1311.775391 1311.431641 1308.609253 1300.040161 1289.101807 1289.842285 1294.140137 1296.286499 1298.362061 1303.344482 1307.94458 1313.706421 +1571.370728 1565.55481 1586.54541 1590.863647 1589.867554 1584.340698 1585.540527 1602.995361 1611.667114 1617.082275 1625.500244 1633.846191 1636.999023 1640.162354 1640.62207 1643.49353 1646.690918 1655.6427 1667.571777 1683.924072 1684.177612 1674.705933 1674.031494 1684.305542 1691.814453 1693.488647 1694.358643 1702.325317 1706.816528 1701.197021 1692.947754 1692.476196 1694.775146 1693.151489 1688.898438 1684.661743 1685.205322 1685.376831 1687.035645 1687.189087 1685.307007 1682.537598 1681.005127 1682.823486 1689.728516 1699.713379 1708.853271 1709.863647 1701.825317 1688.196655 1672.637329 1653.869263 1641.444946 1656.980713 1673.800903 1686.614746 1698.709106 1709.490967 1711.919922 1702.792114 1687.118896 1670.613281 1662.000122 1650.148071 1637.131592 1626.978516 1616.05957 1602.197388 1596.671875 1607.838013 1616.414429 1618.633545 1616.89502 1611.828979 1605.567749 1595.458008 1589.844727 1599.289062 1605.365356 1603.589233 1592.838379 1579.303955 1566.644043 1551.77002 1537.812744 1538.34314 1561.164673 1590.488037 1609.708374 1609.228638 1601.561035 1596.480225 1606.949341 1618.921021 1632.96228 1647.699463 1651.683472 1647.380127 1642.984619 1638.691406 1633.489502 1621.475098 1612.335205 1602.618164 1590.36731 1577.142944 1566.391357 1554.806152 1541.825317 1522.156616 1502.34729 1488.198364 1477.082031 1460.282959 1464.680664 1467.98645 1466.639038 1458.558228 1445.282471 1430.565918 1423.476807 1417.435547 1414.460449 1417.6427 1424.216675 1429.31604 1433.757324 1437.489502 1442.190918 1450.022705 1455.001465 1459.284912 1464.248657 1468.787964 1472.950317 1477.011108 1481.338867 1485.773193 1494.030151 1502.503296 1512.206055 1523.750366 1530.60437 1537.681763 1548.13147 1554.269287 1559.248779 1571.681885 1591.230347 1624.238892 1640.135254 1660.121826 1676.640381 1687.564209 1689.071045 1686.49939 1680.830811 1668.944458 1663.71814 1662.273193 1660.782959 1656.048096 1652.14209 1653.732422 1659.513428 1658.773071 1653.112061 1646.091675 1641.209473 1637.078369 1633.123901 1629.41748 1624.872437 1617.77063 1610.77063 1603.143311 1592.825684 1581.873657 1573.192627 1565.80896 1556.376831 1557.033081 1561.014771 1560.491211 1562.116333 1564.435547 1562.565308 1559.060303 1563.839233 1576.326416 1582.194336 1581.203613 1578.912842 1576.477783 1577.907959 1580.632324 1582.272461 1581.935791 1582.930786 1582.654419 1579.904297 1577.123779 1575.272217 1574.156494 1569.653442 1564.030273 1557.873535 1550.539795 1541.146973 1534.423096 1529.192749 1524.179077 1520.644531 1526.824829 1528.137451 1523.488281 1524.147217 1531.264404 1538.723389 1546.637085 1551.274048 1550.067627 1540.531128 1538.849854 1535.195068 1535.72583 1536.265869 1531.221802 1530.806274 1534.093628 1542.902466 1551.895142 1559.974121 1568.008667 1580.581177 1592.046997 1601.092407 1609.442139 1613.305176 1614.413452 1609.384888 1598.063965 1588.636475 1576.314453 1562.344727 1553.474854 1543.670776 1533.55603 1522.525635 1510.416016 1504.789429 1496.793335 1488.593628 1478.759521 1470.84375 1463.096924 1452.406738 1441.846436 1424.781006 1422.562744 1427.269531 1435.567017 1444.739746 1452.075806 1451.958252 1439.984619 1435.431152 1435.901855 1445.060059 1460.473877 1467.550781 1475.887329 1487.62146 1499.613159 1512.235229 1527.709961 1538.490845 1554.19873 1565.356323 1572.623901 1573.130615 1570.630493 1569.23645 1563.643311 1552.508789 1546.90686 1554.339233 1559.090454 1569.924194 1568.952393 1559.497803 1550.836792 1546.475586 1547.519531 1547.357666 1554.557617 1563.660889 1573.438721 1577.542725 1577.661133 1577.075195 1587.98877 1596.691528 1603.925903 1600.585693 1590.697266 1581.933594 1573.458374 1564.270386 1557.040894 1547.787231 1538.744263 1523.842773 1510.735107 1508.592896 1512.16748 1512.552979 1520.997925 1526.766357 1526.657593 1514.775269 1492.680786 1477.803345 1469.4552 1461.785156 1450.849243 1440.254883 1423.272095 1412.016479 1409.233887 1408.685913 1407.253296 1408.921997 1413.292358 1431.52417 1443.865112 1450.977539 1453.575684 1450.339355 1453.308594 1464.170776 1470.197876 1474.924927 1471.729248 1491.048462 1509.22876 1523.817383 1536.667358 1538.86438 1535.121582 1531.697754 1530.300781 1530.000122 1531.358276 1534.783569 1538.094238 1538.796875 1546.992676 1554.583374 1559.711792 1566.814087 1567.661987 1564.218384 1559.657471 1553.591553 1547.717896 1542.650513 1537.205444 1531.627808 1526.376709 1517.540039 1511.08606 1502.105713 1490.928955 1483.156006 1475.285889 1465.922241 1461.929932 1461.795898 1462.660889 1464.191895 1465.045898 1464.808105 1463.14624 1461.800781 1459.955811 1457.375854 1454.317017 1451.172607 1447.470703 1443.509399 1440.130249 1437.828857 1434.464478 1430.304932 1427.677002 1425.069702 1421.619751 1418.619507 1416.46167 1414.271118 1413.845825 1413.21875 1411.236572 1406.884521 1402.191895 1401.452637 1400.775391 1400.674194 1400.616455 1400.311523 1399.225952 1396.311035 1397.010742 1403.26355 1406.53833 1407.551025 1407.354614 1405.915527 1404.432251 1397.133057 1388.209717 1377.751709 1378.374146 1381.007812 1383.306152 1385.917114 1387.949219 1389.560059 1391.90979 1393.847534 1396.029175 1398.202393 1400.685669 1403.977783 1408.844116 1413.472168 1416.424438 1419.158813 1422.744141 1427.06189 1432.123901 1437.756592 1442.660522 1444.399658 1443.217651 1433.777954 1419.198242 1399.269775 1376.251953 1358.948364 1343.516724 1326.261353 1315.735229 1310.881348 1309.828491 1309.814453 1317.7323 1329.179077 1335.145874 1343.210327 1355.628784 1371.517334 1383.328125 1399.207031 1400.519653 1386.118286 1389.191895 1401.088379 1409.399414 1407.246826 1413.44751 1426.606445 1433.433472 1436.086426 1436.027832 1439.256592 1438.017578 1449.22998 1456.522095 1463.929443 1471.559082 1480.608276 1490.254883 1491.98877 1486.931641 1477.71106 1462.951538 1449.547119 1437.995972 1443.817017 1450.797607 1454.957153 1453.386475 1443.719849 1438.258057 1451.300903 1464.638062 1473.296631 1486.591553 1502.479248 1515.078735 1523.421021 1530.014282 1529.443359 1525.702881 1521.130127 1516.577515 1512.469849 1513.959961 1519.119751 1513.569092 1505.362427 1489.20813 1471.440796 1461.629272 1456.202026 1447.847412 1434.325439 1427.139038 1427.650146 1424.681396 1418.93335 1413.521973 1406.228027 1393.083496 1385.276855 1380.326172 1368.484009 1351.490234 1331.791626 1307.96582 1300.189209 1317.182129 1333.84436 1344.994995 1357.741089 1366.495728 1372.789673 1385.552246 1395.56665 1397.431274 1394.142822 1388.296387 1382.405273 1379.079102 1377.329468 1375.915771 1374.056274 1372.172607 1370.061523 1368.498657 1367.592041 1366.238892 1364.465454 1364.106689 1364.091797 1362.4552 1358.01709 1354.729126 1352.432739 1350.17981 1348.263184 1346.353394 1344.352661 1342.202881 1338.444336 1334.280151 1332.0896 1330.098022 1327.274658 1323.436157 1317.68335 1312.944092 1304.88147 1299.682495 1293.407593 1282.383179 1270.845459 1265.018311 1261.016602 1260.632568 1260.310791 1259.085083 1256.177002 1254.697998 1268.235229 1277.973999 1290.401367 1300.367798 1305.05249 1306.508545 1308.81311 1312.234375 1313.065308 1308.843872 1301.114624 1302.553955 1303.620605 1302.591919 1307.155762 1304.128662 1290.122559 1289.102661 1291.030273 1290.614258 1292.431152 1293.87146 1299.773193 1305.699707 1310.532104 +1559.164185 1580.668091 1592.596558 1599.606079 1597.748291 1591.661743 1585.127075 1590.67981 1598.976807 1608.927124 1616.857788 1623.186401 1626.52063 1629.329346 1631.295776 1637.220581 1648.614868 1661.241943 1673.677124 1685.35022 1677.568604 1666.495483 1667.360962 1676.886719 1683.905762 1683.130005 1678.863525 1688.326904 1693.230713 1692.680908 1686.319946 1679.831299 1680.812988 1684.322998 1683.534058 1679.947632 1681.277954 1682.316772 1688.968506 1690.469604 1686.688965 1682.645142 1683.996582 1686.946655 1691.941406 1698.674927 1707.685791 1709.767456 1703.991943 1692.470947 1675.82959 1661.080811 1643.94873 1656.40625 1675.923218 1692.405273 1704.209229 1711.026611 1710.760132 1700.633423 1686.303833 1669.658936 1661.75061 1651.765259 1638.757324 1625.834961 1611.945923 1602.613892 1611.389526 1621.799561 1629.737427 1633.612915 1629.882446 1623.720215 1612.990356 1602.898804 1602.568848 1613.186035 1620.910278 1620.83374 1601.899414 1584.287354 1570.962036 1556.271362 1539.678223 1535.331787 1562.387817 1589.78064 1609.75708 1616.635498 1617.258667 1620.985107 1615.329102 1626.037598 1639.057129 1652.522095 1658.571289 1649.870361 1642.734497 1637.066895 1627.694946 1617.071411 1608.446777 1593.801636 1581.460815 1570.656982 1560.313965 1549.784912 1534.196289 1515.004028 1498.053833 1482.865723 1471.576782 1478.758057 1482.363159 1481.796997 1477.707886 1467.600586 1448.474243 1432.549927 1424.270386 1418.614502 1414.455078 1414.771729 1419.339233 1425.275391 1428.623291 1432.506836 1436.726074 1443.000732 1450.611816 1454.877197 1459.255859 1463.216919 1466.977783 1471.274048 1475.203125 1481.515625 1488.669312 1495.934692 1504.395264 1514.474487 1523.869629 1529.991211 1538.005737 1545.942505 1551.926147 1564.356567 1580.391724 1609.808472 1631.70105 1646.240356 1661.106689 1673.197266 1681.303711 1684.084106 1680.142578 1668.03125 1659.742188 1656.258423 1653.730713 1649.321533 1644.932861 1645.610718 1652.015747 1653.92749 1650.549561 1644.710571 1637.789429 1633.065552 1630.003662 1626.772949 1623.253784 1617.897461 1612.286499 1604.190063 1594.888062 1582.014526 1571.706909 1565.767944 1561.696045 1567.964966 1569.409546 1569.501709 1570.723389 1574.047852 1574.297485 1564.961914 1563.493408 1577.515137 1586.842773 1584.441406 1582.349976 1582.316284 1583.658447 1585.833374 1587.265137 1587.175659 1586.619873 1585.172974 1582.017822 1578.094482 1574.100586 1568.776123 1561.976929 1558.348877 1552.482178 1546.329712 1537.953491 1532.653442 1527.992432 1523.67395 1522.674683 1534.142334 1536.236816 1526.353882 1523.333008 1529.416016 1536.725098 1544.412354 1550.226318 1551.57959 1549.755981 1546.582275 1541.48877 1541.16272 1541.09729 1539.353271 1539.57251 1538.871704 1544.18396 1553.301025 1561.862427 1570.920532 1584.870239 1593.181519 1600.970825 1607.714233 1612.333862 1612.311646 1599.625366 1589.442017 1582.301147 1572.468262 1561.225464 1548.855957 1538.085083 1528.524658 1517.355835 1502.638306 1494.314209 1484.042725 1476.990479 1470.182861 1460.603149 1453.25061 1444.40918 1431.70166 1422.348145 1427.953369 1432.185059 1440.146851 1448.014404 1454.97229 1457.810059 1453.571533 1446.272583 1438.504272 1437.664429 1448.547241 1463.384521 1472.582642 1485.851929 1500.248901 1510.790527 1525.843628 1535.098267 1550.730713 1561.905762 1564.238403 1563.470703 1560.068359 1559.861816 1556.708252 1548.907104 1536.612305 1542.13269 1549.324951 1564.096558 1559.680664 1551.451782 1545.182983 1537.887451 1540.375732 1542.627075 1550.899048 1557.554443 1563.418335 1564.413452 1570.717651 1579.424561 1590.6875 1599.619751 1596.520142 1588.89624 1581.895874 1574.35437 1564.509399 1553.841919 1545.101562 1539.095825 1524.786743 1507.820435 1497.946289 1491.333862 1492.625 1496.299927 1500.224121 1505.263062 1512.119141 1510.116455 1498.078491 1478.227051 1463.557617 1452.190186 1443.977539 1434.595093 1416.938599 1410.350708 1412.08728 1418.079468 1423.212646 1424.095947 1429.469971 1434.239746 1452.625122 1464.335327 1470.576416 1472.344482 1470.58606 1478.752686 1491.56665 1495.866943 1496.477173 1509.276245 1527.710815 1536.995728 1541.504761 1541.762207 1537.610107 1538.121094 1538.789917 1536.352173 1541.862671 1546.174805 1547.811646 1550.610474 1561.179199 1569.788696 1575.295532 1575.891846 1572.6521 1567.577759 1563.396118 1559.121948 1552.77356 1550.706299 1542.421509 1534.186279 1527.67627 1522.486572 1515.223877 1503.484741 1493.743042 1483.397095 1472.784668 1464.546387 1461.930542 1463.206909 1467.884155 1471.112549 1471.634888 1470.783447 1468.473755 1466.3396 1463.961792 1461.132446 1457.802002 1454.237671 1451.012451 1447.013672 1442.863647 1439.605225 1436.257568 1432.502808 1429.277222 1426.095215 1418.643311 1415.813721 1414.130737 1413.249268 1413.05481 1412.770508 1411.865356 1408.971191 1405.662354 1403.819824 1401.492676 1402.366211 1402.815552 1401.977295 1400.389038 1400.990723 1404.801514 1409.128784 1413.349976 1413.552979 1409.928955 1405.9729 1400.338867 1391.837891 1379.977417 1379.325928 1382.547852 1385.908203 1388.914307 1391.254761 1392.621948 1394.139038 1396.316284 1398.831421 1401.73877 1403.993774 1408.769165 1413.904175 1417.939697 1421.141724 1424.162598 1427.868164 1433.396606 1439.138672 1445.537842 1451.887573 1455.185913 1454.025391 1449.231934 1441.39563 1421.152466 1395.024292 1378.541626 1363.487671 1351.263062 1336.004761 1317.023071 1313.838867 1309.56604 1309.842773 1313.178711 1325.59668 1333.366455 1342.189575 1358.703003 1378.009766 1394.557251 1405.816284 1412.666504 1411.858765 1416.081421 1417.192383 1424.172607 1423.900513 1423.156128 1429.786011 1441.734619 1450.79541 1454.548584 1451.693115 1448.057617 1448.656616 1453.0271 1465.382202 1470.559937 1480.511353 1492.884521 1497.167236 1491.665894 1478.397461 1460.078857 1448.687256 1443.725952 1449.426636 1458.953979 1464.15979 1459.354858 1453.991455 1450.146362 1448.35083 1460.649414 1469.986084 1480.296387 1493.496094 1507.796021 1516.646118 1520.661133 1516.487549 1511.853394 1508.709229 1504.557129 1499.038452 1501.466797 1505.973511 1514.696289 1507.14502 1495.958862 1486.212036 1471.724487 1460.779053 1453.411499 1448.505127 1447.291016 1442.920044 1435.260864 1426.907104 1418.986084 1409.26123 1398.724609 1388.124023 1381.244507 1361.861938 1338.883301 1317.113647 1301.908936 1309.456909 1319.245728 1340.622437 1356.230713 1366.446655 1379.150635 1388.020386 1397.421753 1404.186768 1401.658203 1396.264404 1390.927979 1388.226196 1385.997314 1383.55542 1381.164551 1378.783447 1376.666016 1374.823608 1373.182739 1372.071289 1370.96228 1368.683838 1368.690796 1368.318237 1366.702393 1362.416382 1358.103271 1355.439453 1352.767822 1350.113647 1347.618286 1345.276733 1342.727295 1339.46106 1336.044312 1333.511475 1331.74231 1329.283813 1324.734497 1320.71228 1318.464966 1306.998291 1298.443848 1292.899292 1279.640747 1272.017456 1272.999268 1270.037842 1269.314941 1266.966309 1263.635498 1259.974976 1256.945068 1258.685303 1270.033569 1280.185791 1290.840576 1297.122192 1299.607788 1301.682861 1302.125244 1299.332642 1290.418823 1283.622681 1287.939575 1292.308105 1293.996216 1297.710571 1293.705322 1286.375 1294.63623 1295.143188 1292.988647 1294.341919 1294.020874 1293.938721 1299.300903 1305.408569 +1581.646606 1593.693726 1603.008789 1609.648315 1608.972168 1599.566406 1594.3479 1587.807739 1590.721558 1598.820068 1605.970581 1612.454346 1618.185791 1621.323608 1630.672852 1641.162354 1654.177856 1662.243164 1666.40686 1668.856323 1666.980835 1659.337769 1659.323608 1668.407959 1672.408081 1668.995239 1668.880859 1679.029175 1682.710693 1682.147461 1679.262207 1673.959717 1672.136963 1674.782104 1675.350586 1673.734009 1672.450195 1679.908691 1694.442749 1693.80188 1687.968628 1685.838135 1687.626831 1691.195557 1695.870483 1700.963257 1706.865723 1709.651123 1705.147705 1693.56958 1676.834473 1663.344604 1652.411987 1666.724365 1675.719604 1693.572632 1708.214844 1711.248413 1709.079346 1698.883545 1687.712158 1675.4552 1663.856323 1651.911621 1640.051758 1625.467773 1609.151611 1613.118042 1623.81543 1628.694824 1638.044922 1641.749878 1637.055664 1628.973633 1618.243896 1610.147217 1613.009766 1624.38623 1635.144287 1630.978027 1609.183838 1594.18811 1576.968506 1560.717041 1541.08374 1534.144531 1563.852905 1586.358643 1605.128418 1620.919067 1631.14917 1637.914551 1635.579834 1633.163574 1647.692261 1660.884277 1659.384155 1647.491699 1637.595459 1628.774902 1618.053223 1610.328003 1601.895752 1584.850708 1567.212158 1556.285278 1547.207153 1537.961914 1520.753784 1507.304077 1491.369507 1476.212036 1481.395264 1493.009766 1495.00415 1492.204468 1485.222656 1474.047607 1452.754272 1438.704346 1427.275635 1422.496094 1417.200928 1415.272827 1414.937622 1421.171753 1426.456909 1428.996338 1431.2771 1434.643188 1439.619751 1447.452148 1452.714966 1456.825073 1461.632935 1466.523804 1471.30603 1477.480347 1483.541016 1490.428955 1497.377075 1505.6521 1513.47644 1520.563232 1524.59668 1530.828369 1544.948364 1556.279785 1565.379761 1598.481079 1616.490723 1632.629517 1645.376953 1656.409424 1666.572632 1674.305176 1680.752197 1672.67334 1661.090576 1652.769165 1648.03186 1643.55542 1639.774902 1640.202881 1645.469604 1648.00769 1646.576172 1640.986938 1634.581055 1630.52356 1627.000854 1623.691895 1619.888306 1615.082031 1610.075195 1599.781006 1589.420166 1577.959473 1572.03125 1574.766724 1576.920532 1577.693848 1577.693359 1578.706665 1581.511353 1583.125 1581.806152 1577.530518 1573.250732 1573.97168 1586.400635 1588.376831 1585.32666 1585.633667 1587.974487 1590.512573 1591.397461 1590.760864 1589.362793 1587.174927 1582.577637 1574.758179 1571.140747 1562.070068 1557.98645 1552.242065 1547.202515 1541.71167 1535.444824 1531.069824 1526.660889 1522.968262 1529.380737 1539.730713 1540.590942 1535.39502 1526.255249 1527.500366 1533.675293 1539.333374 1546.743652 1551.105713 1552.890259 1551.230225 1546.986084 1545.917603 1545.246338 1545.910889 1546.766724 1546.581787 1549.273193 1555.289185 1563.734863 1574.559204 1584.384277 1592.022339 1598.624023 1604.77063 1609.230713 1608.685791 1602.05249 1591.485474 1582.536743 1574.070435 1565.304443 1550.760498 1539.103882 1529.519165 1517.99939 1504.799927 1492.28418 1477.549561 1466.077148 1459.902222 1452.798706 1444.10498 1432.964478 1425.531128 1424.372437 1429.007568 1434.312134 1441.125732 1447.756104 1455.417969 1463.374268 1465.582397 1456.232666 1444.074951 1436.53833 1441.300537 1455.597656 1470.733154 1485.104614 1497.10437 1506.230225 1518.157104 1531.115234 1544.068481 1552.069824 1553.227173 1549.795288 1548.091309 1548.215088 1546.757324 1540.897705 1533.441528 1536.53772 1548.162842 1555.239502 1549.459106 1543.419434 1539.26123 1535.258301 1538.066162 1536.316528 1544.74231 1549.398682 1555.71936 1562.533936 1572.431885 1583.696533 1594.72998 1599.059937 1583.368164 1574.96936 1568.622925 1562.500244 1554.565308 1542.517334 1531.221191 1522.754517 1516.293213 1505.843506 1485.77478 1479.071777 1475.895142 1480.086304 1484.868774 1488.532349 1496.553711 1503.028442 1503.990234 1482.010742 1465.111572 1450.12439 1438.001221 1432.014282 1417.406006 1411.924438 1416.65625 1432.819824 1442.435059 1439.624268 1443.058594 1439.19458 1456.822754 1473.490723 1484.872559 1490.210327 1493.079956 1497.372803 1508.992432 1517.400024 1523.203735 1530.009399 1536.559448 1545.764771 1549.94873 1548.618774 1544.879395 1545.502319 1544.992432 1548.674561 1554.756836 1559.442993 1563.660889 1568.496826 1574.551514 1579.510132 1579.090698 1576.348145 1572.766602 1567.086792 1562.778076 1558.655029 1553.874634 1550.793213 1541.359985 1532.317993 1523.307983 1516.925903 1510.181152 1500.721558 1492.911499 1479.663452 1469.953613 1462.763672 1466.19519 1470.203979 1474.989014 1478.533936 1478.490967 1476.331177 1473.166138 1470.382202 1467.294922 1464.581543 1461.051636 1457.10083 1453.861084 1450.464722 1445.930908 1442.047974 1438.847534 1431.778687 1427.895508 1423.27417 1415.086914 1414.299194 1415.238892 1416.023315 1415.805908 1416.02124 1416.463257 1416.40979 1413.267944 1408.356079 1407.50769 1409.151123 1409.848267 1408.162964 1405.469238 1406.105347 1410.133301 1414.535645 1416.778687 1415.470825 1409.658813 1402.64624 1392.957764 1385.628052 1380.039185 1382.763916 1386.558472 1390.125122 1392.842651 1394.961914 1396.9198 1398.714722 1400.604248 1403.869507 1408.394043 1411.92395 1416.319702 1420.166016 1423.803711 1427.573608 1432.574219 1438.743652 1445.097656 1452.137207 1459.077515 1465.513672 1468.563599 1467.595581 1460.730591 1444.629761 1422.713867 1391.369751 1379.411621 1367.954346 1356.09082 1342.948608 1324.035034 1315.664307 1312.5896 1309.536011 1310.711426 1319.730469 1323.711792 1333.301758 1354.421631 1376.436157 1396.566772 1411.923218 1422.535889 1431.224243 1431.456299 1434.118042 1437.976074 1436.460938 1438.955078 1437.080078 1440.516113 1455.037964 1463.344849 1468.745239 1460.18396 1459.64209 1460.008789 1462.292114 1468.50293 1477.022217 1494.694458 1502.745972 1489.315186 1476.099854 1463.32019 1452.384888 1448.131714 1455.989014 1467.490356 1471.279297 1467.775391 1467.221069 1462.746582 1451.346069 1454.151733 1466.596924 1476.460815 1485.017944 1497.420166 1509.775513 1514.845459 1509.764771 1504.850952 1499.968018 1494.939941 1488.506592 1487.375488 1487.643677 1493.35083 1505.108398 1499.006348 1491.533447 1475.668457 1460.726318 1455.287598 1459.571167 1464.466187 1450.90625 1440.389771 1429.730347 1416.113892 1403.268555 1394.18689 1385.798218 1377.901489 1359.064331 1339.293335 1316.762817 1304.028076 1315.675903 1328.17688 1341.792603 1355.911743 1374.6427 1388.092163 1399.677979 1404.23291 1404.999512 1403.424927 1399.470825 1395.567505 1393.703613 1392.401978 1390.611328 1388.414673 1385.580322 1382.403931 1379.435669 1377.691162 1376.432251 1376.805298 1377.877563 1377.711914 1373.706909 1369.228394 1365.053101 1360.624878 1357.212891 1353.980103 1350.898071 1347.980469 1345.320923 1342.659668 1339.531006 1335.936279 1332.707153 1331.061523 1329.853271 1323.474121 1320.979858 1319.063232 1304.766724 1293.241211 1286.272827 1282.010254 1284.963501 1284.644165 1281.694336 1277.855103 1272.680176 1268.109741 1263.438232 1259.609253 1257.830322 1263.292725 1270.019653 1281.064575 1288.466309 1292.061035 1292.209961 1290.130859 1284.93103 1277.566772 1275.838623 1277.643555 1279.56604 1283.272705 1287.809448 1286.742676 1288.623291 1297.680054 1299.436768 1298.615723 1297.637085 1296.927612 1296.175293 1295.799561 1296.519165 +1604.671875 1610.151611 1618.620605 1622.796997 1621.021973 1616.424072 1608.602417 1596.501465 1592.40625 1591.324341 1596.972046 1607.312622 1614.042847 1622.750366 1635.154419 1643.346313 1649.313477 1653.610229 1656.293457 1657.900879 1657.668335 1653.540527 1654.810181 1659.845337 1661.45105 1658.745605 1662.468018 1671.366333 1674.378906 1674.375122 1672.461914 1667.141846 1664.671143 1666.00061 1666.886841 1666.525146 1667.152344 1678.914429 1692.279419 1689.783813 1685.062866 1687.144897 1691.217651 1694.673096 1699.150879 1703.568481 1707.84021 1710.085938 1707.443481 1695.190918 1679.802979 1666.646484 1657.859131 1675.210205 1683.189453 1691.23999 1710.36731 1710.761841 1704.542236 1693.592285 1683.974854 1674.34668 1663.504028 1650.810303 1638.706299 1624.680786 1609.906494 1625.557983 1635.181763 1638.599365 1647.512817 1649.803223 1644.15332 1634.227051 1626.669678 1625.444458 1628.367065 1635.998291 1648.344727 1633.14563 1610.837402 1596.404785 1580.82605 1563.283691 1544.707642 1535.237305 1560.630981 1583.055908 1604.07605 1620.765991 1636.534668 1647.171509 1649.200806 1648.938477 1658.121094 1663.609253 1656.590454 1639.834351 1619.928833 1611.593628 1607.074219 1600.131958 1593.031372 1581.843018 1565.22229 1545.608765 1531.87439 1520.680542 1511.475708 1498.425537 1484.053589 1485.143677 1493.596802 1503.167114 1504.395752 1501.157959 1492.269287 1480.964355 1465.737793 1445.829834 1433.245605 1426.112915 1421.721191 1418.741089 1417.006592 1422.570435 1433.500488 1441.30249 1442.837036 1443.985107 1441.701294 1439.121582 1441.056885 1450.289429 1456.169189 1461.567261 1466.307129 1471.484741 1476.802734 1483.905029 1491.269409 1497.838989 1504.783203 1510.910156 1517.071411 1525.201538 1539.006348 1551.247314 1558.62915 1589.071167 1600.084106 1613.264282 1627.723633 1643.65979 1653.259888 1663.824463 1674.223267 1669.253174 1661.345337 1649.748291 1640.650269 1634.651001 1634.710327 1631.981323 1638.335327 1641.636841 1641.507812 1637.399902 1631.924561 1627.789062 1623.891846 1619.785767 1615.352783 1610.359253 1601.383789 1590.293457 1582.861938 1580.953613 1579.904175 1582.208008 1585.67395 1586.067017 1584.838379 1588.106079 1591.359375 1591.548828 1589.584473 1585.86853 1579.47168 1576.333374 1585.026733 1594.292847 1593.654663 1594.0448 1595.599731 1595.780396 1595.533691 1593.985718 1590.724121 1587.202026 1582.514526 1575.562256 1570.873169 1563.966919 1558.338501 1551.624512 1546.3396 1540.582397 1535.538452 1531.084473 1525.763428 1524.213135 1534.291992 1542.661011 1544.991333 1541.027954 1535.888916 1532.728149 1533.216797 1535.672485 1545.847412 1551.379272 1555.770996 1556.756104 1551.319092 1551.405396 1549.589355 1551.902466 1554.503296 1555.69751 1558.447754 1561.2323 1566.831787 1574.503052 1581.706543 1588.651978 1594.577881 1599.972046 1603.925781 1604.28772 1601.589722 1594.064209 1584.670654 1573.796509 1561.902588 1546.798706 1536.256958 1527.233887 1516.217529 1503.215576 1492.06665 1476.68396 1463.396973 1450.489014 1442.639893 1436.953491 1434.535156 1433.538696 1429.011353 1426.832764 1432.360229 1439.658203 1446.338013 1454.792603 1465.375732 1467.592163 1462.74707 1450.295654 1438.641968 1438.008057 1452.184937 1466.473755 1478.197754 1491.138184 1503.600464 1521.153564 1530.55249 1537.796143 1540.701782 1538.314331 1533.394897 1535.367065 1538.544556 1538.790405 1534.473022 1524.390869 1534.936646 1544.504883 1546.91626 1537.500122 1536.299072 1533.112915 1533.708008 1537.241943 1535.973633 1538.864258 1545.234741 1554.49292 1563.437256 1571.687012 1584.773682 1593.978638 1592.356323 1573.194336 1561.060669 1553.792358 1550.084473 1542.272095 1533.263916 1524.931152 1510.206055 1507.90686 1501.824829 1489.629761 1471.547485 1462.019409 1463.996338 1467.756348 1474.67334 1483.536865 1492.749756 1499.592529 1482.005981 1467.287964 1449.737793 1439.90918 1432.129272 1418.292236 1412.804932 1420.528564 1442.13269 1455.688843 1455.265015 1453.813354 1448.084717 1456.327148 1474.060425 1488.275757 1503.344849 1511.873169 1517.057129 1524.464111 1530.866699 1535.437256 1543.973877 1550.792114 1557.073242 1557.192749 1551.459717 1550.37793 1552.018188 1551.648193 1557.258057 1564.559448 1570.561035 1575.365356 1580.341553 1586.384766 1585.558838 1579.664307 1575.416626 1570.119385 1563.129517 1558.491089 1551.681641 1548.607788 1541.865723 1534.821777 1528.367798 1520.978027 1512.351196 1502.699463 1494.044312 1486.603027 1472.209839 1469.189087 1470.218384 1475.862183 1478.649048 1481.409546 1484.686646 1485.918213 1483.400879 1477.784668 1473.95105 1470.350952 1467.034424 1463.490723 1459.663452 1455.935791 1452.220459 1446.750488 1441.334961 1435.381348 1427.736206 1426.709595 1424.545532 1421.044922 1421.347168 1423.669312 1424.022705 1423.424927 1424.345459 1424.902954 1422.331421 1417.103882 1412.25 1413.063965 1416.296875 1416.753418 1415.583618 1412.44751 1411.935791 1415.258301 1417.449341 1417.565796 1415.579956 1407.702393 1398.438965 1387.634155 1382.089722 1383.466675 1386.137939 1389.763306 1393.284302 1395.923706 1398.546021 1400.875488 1403.407471 1407.195312 1412.865112 1416.720703 1418.896973 1421.401489 1424.439209 1429.800781 1435.827637 1443.197754 1451.411133 1460.298462 1467.267822 1474.993408 1478.658569 1479.057861 1477.024292 1465.716187 1445.711182 1424.23877 1389.493774 1376.607788 1368.991577 1357.557983 1346.234375 1331.640503 1316.213745 1314.453125 1311.668945 1310.103271 1312.004395 1313.607422 1325.580688 1349.068848 1373.255493 1393.123169 1401.941895 1410.66272 1417.87207 1424.340576 1437.502319 1447.620972 1450.623047 1452.371094 1452.289795 1449.171143 1450.690796 1463.180786 1477.855591 1472.569336 1473.235474 1473.783447 1471.38147 1471.59436 1479.383057 1492.782104 1503.652588 1489.380615 1473.794189 1466.700684 1456.051392 1448.789673 1460.894165 1477.279419 1480.125366 1477.735474 1479.269897 1475.788208 1463.84021 1460.275879 1462.616699 1471.713013 1479.136719 1490.990234 1504.53833 1508.81897 1504.1521 1500.14917 1493.32019 1487.669678 1478.796387 1473.806641 1473.478882 1473.871826 1483.765381 1487.552124 1484.731445 1471.675171 1449.93042 1440.860962 1443.825806 1444.390991 1437.906738 1431.747925 1418.664795 1404.90686 1393.307251 1386.350464 1380.250732 1370.829224 1357.062012 1342.807373 1327.093872 1309.208374 1315.804565 1336.262695 1348.483765 1360.424316 1378.879761 1394.24231 1404.521729 1405.775269 1405.785034 1403.693237 1400.801758 1399.393188 1398.829834 1397.779785 1396.266724 1394.657593 1392.695557 1389.487793 1386.553101 1384.495728 1382.679932 1382.337158 1381.490723 1380.560547 1377.102417 1371.303345 1366.501465 1361.79126 1357.846802 1353.85083 1350.796509 1347.787109 1343.807251 1340.894897 1338.808228 1333.861694 1329.866089 1326.254517 1317.65686 1315.464355 1314.59082 1307.825317 1299.434448 1293.542114 1293.369263 1296.534058 1298.02002 1295.818359 1291.239258 1284.43457 1277.926025 1270.664917 1266.06311 1261.732788 1259.915405 1260.286987 1265.289307 1271.318359 1277.724243 1281.20105 1281.412231 1280.108154 1275.846558 1273.620117 1280.269775 1281.464111 1282.602295 1284.740967 1287.032349 1287.802979 1297.836304 1305.759888 1305.733398 1303.652832 1302.246582 1300.874023 1299.65332 1298.74707 1298.150146 +1623.437866 1626.686768 1630.689087 1633.320435 1631.769653 1626.754761 1619.27124 1606.551025 1597.822998 1596.117188 1594.634644 1596.896973 1608.977539 1617.479492 1627.833252 1634.373901 1638.015381 1640.375 1642.95813 1645.572632 1647.862061 1646.773682 1647.401855 1651.913208 1652.631348 1650.810791 1654.79834 1659.870728 1664.896973 1666.137451 1663.651611 1658.847778 1656.137817 1657.0896 1659.03479 1659.832031 1664.348022 1676.858032 1686.198975 1685.107544 1681.477661 1685.287109 1691.819336 1696.70459 1701.201416 1706.279419 1709.414307 1710.640625 1709.180786 1699.391602 1688.212524 1675.399902 1666.038086 1685.12439 1694.373657 1699.529053 1707.411865 1709.61377 1700.234253 1684.298218 1672.9646 1666.134888 1656.871582 1644.535767 1633.979248 1623.316528 1623.079712 1636.605225 1645.433472 1652.459839 1656.693359 1657.585938 1651.397217 1640.064453 1636.625 1636.588501 1639.121948 1647.80896 1647.924683 1628.884888 1609.93457 1595.922119 1583.466919 1563.338501 1550.417114 1538.185303 1554.682861 1583.617798 1606.085083 1619.040894 1640.867798 1650.88269 1657.054443 1662.30481 1666.496704 1662.559692 1650.320068 1636.272095 1614.579956 1596.69165 1590.458008 1586.461426 1581.6875 1574.068115 1561.438354 1542.197388 1527.090088 1513.273682 1502.653564 1486.112549 1493.991211 1497.286255 1504.162354 1511.187256 1513.11499 1511.243896 1501.879028 1488.774536 1474.608643 1451.294922 1437.53479 1429.400513 1424.734497 1421.520386 1419.645264 1420.185303 1432.411865 1443.224121 1448.40979 1455.825928 1465.584106 1464.428711 1457.745728 1446.800415 1451.114502 1456.186646 1460.441528 1463.379639 1467.039062 1474.055542 1481.529419 1490.389526 1497.582031 1505.078735 1512.265747 1520.155884 1531.733032 1546.408936 1554.57666 1578.572632 1589.773682 1597.755249 1609.580566 1623.455444 1634.707397 1649.304199 1660.198486 1661.830933 1657.728516 1648.674072 1635.534668 1626.024292 1621.69751 1622.521484 1631.1521 1636.132446 1636.502563 1634.229736 1629.86145 1625.44165 1620.640015 1615.261108 1609.836304 1600.324463 1594.232178 1585.382812 1587.721313 1589.536865 1588.427856 1591.866577 1597.686646 1597.966797 1596.463623 1597.707764 1599.712891 1599.769775 1597.660034 1594.893799 1587.695923 1583.389648 1591.661011 1599.61377 1599.960083 1600.28064 1601.035522 1600.286865 1599.352661 1596.675537 1590.115112 1584.922485 1580.446533 1576.687256 1572.39624 1564.43042 1558.554932 1552.055908 1547.096191 1541.767456 1537.958496 1531.410522 1525.459961 1528.245972 1536.409546 1547.931274 1550.108398 1547.063354 1541.514893 1536.736816 1534.38562 1537.102417 1546.081909 1553.011475 1558.977783 1561.971924 1563.505615 1561.120483 1560.902954 1562.581543 1562.67395 1563.341797 1563.513916 1562.822144 1561.466187 1567.743286 1575.650269 1582.476074 1586.972534 1593.258545 1598.866699 1600.798706 1598.350342 1587.911011 1577.866089 1565.20752 1550.345947 1539.613892 1528.73877 1518.336426 1507.06897 1496.592773 1487.396484 1471.157837 1456.25293 1442.97522 1437.54187 1439.512939 1442.113281 1443.986328 1442.98938 1434.623047 1429.503662 1435.954224 1443.449097 1452.834961 1465.295654 1468.03772 1465.999634 1455.43335 1443.924561 1437.165283 1447.985107 1461.253784 1472.465454 1490.003418 1503.818237 1512.747803 1524.439087 1528.379639 1527.228149 1524.201294 1522.384033 1522.408691 1524.563965 1525.879272 1523.146973 1515.665039 1529.334961 1537.377808 1536.495361 1530.709595 1527.595459 1525.013184 1528.225342 1536.94165 1534.847656 1534.152466 1537.87439 1549.635498 1557.465088 1564.075684 1575.667969 1584.537354 1587.907959 1570.98645 1553.092407 1540.489258 1533.948975 1529.229126 1522.355225 1516.008667 1502.227661 1492.003418 1492.666748 1485.526611 1468.582764 1456.706909 1452.839966 1456.296509 1463.321655 1472.148682 1485.344238 1493.855469 1490.700806 1476.351685 1460.401123 1444.835449 1432.927124 1418.974487 1412.99231 1422.252197 1442.47583 1463.206421 1468.795776 1458.605957 1449.343018 1465.090088 1477.972656 1490.18042 1507.391113 1525.222656 1531.786499 1535.129272 1543.476074 1548.461548 1556.123291 1562.674194 1564.607422 1563.420532 1559.264771 1557.004028 1556.839478 1558.636108 1565.158813 1572.755859 1576.928955 1579.29541 1584.02002 1583.526367 1580.390869 1576.620605 1571.794922 1566.789307 1560.913452 1554.635132 1547.406738 1537.427002 1532.390137 1529.073486 1523.987183 1517.693481 1511.273682 1498.945312 1486.271851 1475.165771 1471.361938 1472.966797 1478.021851 1483.787476 1486.931641 1488.073242 1490.213135 1491.336182 1489.799438 1484.833862 1477.641357 1472.973267 1469.091309 1465.206299 1460.807373 1456.652832 1452.471436 1445.960571 1439.609131 1437.491211 1435.129883 1429.812622 1427.6427 1426.261353 1428.803223 1430.44165 1431.153687 1430.334229 1430.73999 1429.820801 1428.313232 1420.322144 1413.791382 1417.471558 1420.132568 1420.940918 1419.345215 1416.13501 1416.08374 1417.87854 1418.317627 1417.792603 1413.278687 1404.542725 1394.496582 1384.94873 1384.797974 1387.570679 1390.049927 1392.777954 1396.547485 1398.921997 1401.584229 1406.806152 1413.962646 1416.467041 1420.027344 1423.545288 1425.567505 1425.989868 1428.916992 1437.483276 1449.806152 1458.563477 1467.544067 1475.859253 1482.854736 1488.758789 1490.988037 1490.089722 1480.401123 1465.026367 1443.672363 1425.092651 1393.372559 1375.092773 1363.589844 1357.209717 1347.539673 1334.947754 1316.026978 1315.314209 1313.406006 1310.621826 1313.789429 1313.818481 1324.849976 1344.23584 1366.773193 1381.129028 1386.888062 1391.346802 1398.838989 1421.505005 1440.019409 1451.143433 1456.526001 1461.444702 1465.805054 1465.123901 1458.375366 1461.65686 1478.33313 1482.628174 1484.011108 1484.915405 1482.537842 1477.980835 1479.359131 1493.808472 1503.120239 1493.651489 1484.366211 1475.430786 1464.150513 1456.984497 1465.145386 1483.425049 1489.353516 1487.699097 1487.72998 1484.28418 1474.877197 1473.383301 1465.704468 1470.03772 1475.625977 1487.762573 1502.128296 1502.605591 1494.468872 1487.630249 1482.965088 1476.015747 1469.858154 1465.832397 1462.295288 1460.256104 1467.623779 1470.765747 1468.867676 1461.892822 1445.839478 1424.188354 1421.704834 1422.509644 1419.966064 1414.177002 1404.862427 1392.243408 1384.837158 1376.069702 1368.764648 1359.51355 1349.150391 1337.572021 1324.185303 1312.177612 1326.915894 1338.228638 1359.665894 1373.963867 1382.804565 1396.884888 1405.047485 1407.299316 1407.060181 1404.661987 1402.699341 1403.119507 1403.302246 1402.852417 1401.804321 1400.947388 1398.626099 1395.720093 1393.523071 1391.743164 1389.828247 1387.807129 1385.063965 1381.624023 1377.648926 1372.334595 1367.012573 1362.431763 1357.4375 1353.316528 1351.053833 1348.442627 1344.42395 1342.664429 1340.236572 1333.55835 1329.421143 1323.62207 1319.249023 1320.022705 1317.558838 1307.773438 1304.722778 1302.28894 1302.310059 1307.859009 1306.961426 1303.95874 1296.127075 1287.891357 1279.917603 1273.350098 1268.148193 1263.047485 1262.700684 1261.530273 1262.680176 1265.950317 1267.680786 1267.562012 1266.976929 1267.553589 1271.71106 1282.021484 1285.742065 1288.119141 1290.649414 1298.109131 1302.913208 1304.530151 1307.982056 1311.498291 1311.63855 1309.914551 1306.792725 1304.932373 1303.61792 1302.697876 1301.667358 +1636.171265 1643.464355 1648.389038 1649.469482 1647.717285 1640.973877 1633.062622 1621.578857 1612.157349 1605.041992 1601.510132 1598.099487 1598.829834 1605.143188 1610.091797 1618.530762 1622.94397 1627.050415 1632.283081 1636.075195 1637.900513 1638.7323 1640.402344 1644.769165 1644.45752 1642.435913 1647.218872 1650.108887 1653.389771 1654.855591 1654.255371 1651.178345 1648.09436 1648.284668 1649.302856 1653.484863 1660.084595 1670.604736 1683.109619 1681.872192 1676.513428 1684.050049 1690.901978 1696.838501 1701.756592 1707.033447 1710.101929 1710.667236 1709.834717 1702.932251 1695.191284 1683.233398 1670.282593 1692.137573 1700.742676 1706.22876 1709.596069 1709.233154 1697.627197 1684.473877 1667.076904 1656.039307 1645.468018 1634.582642 1629.735962 1623.042847 1629.325928 1642.733154 1655.85498 1663.675659 1665.947998 1664.668457 1659.427734 1647.059326 1646.702881 1646.566162 1644.154541 1660.048462 1646.325928 1627.957642 1608.56311 1595.250122 1581.203125 1562.024902 1552.768188 1539.849121 1558.338867 1576.453613 1603.177124 1620.002563 1640.619995 1653.916626 1666.323486 1673.229248 1675.14856 1667.916016 1649.540649 1634.961304 1611.847656 1591.472656 1577.38269 1569.051392 1567.946533 1561.993774 1548.110718 1535.007202 1521.784058 1508.73584 1497.619385 1506.843262 1508.6427 1509.570435 1516.317139 1524.9823 1526.524292 1521.352539 1510.352661 1492.228516 1477.909912 1454.907104 1441.025024 1432.994141 1426.365479 1422.875977 1420.479004 1420.338135 1425.166138 1437.663696 1444.132202 1450.643677 1464.449585 1477.601074 1476.436768 1465.080444 1451.502686 1450.440918 1461.429565 1465.686157 1471.417236 1472.877563 1472.916138 1480.098267 1489.716919 1501.259155 1508.983521 1516.623047 1526.285278 1538.130859 1549.600464 1567.397583 1579.867065 1589.304199 1595.65564 1603.829346 1614.967529 1627.862793 1645.728516 1652.252197 1652.723511 1646.63623 1629.970459 1619.520508 1617.428833 1616.006226 1624.251709 1628.963501 1630.834961 1630.513184 1627.809082 1623.811279 1617.264282 1609.726807 1603.34375 1596.661743 1598.297241 1600.046509 1600.690308 1601.033203 1600.821533 1602.76062 1604.73291 1604.894653 1605.028809 1605.917969 1607.21936 1607.004395 1606.036865 1603.673218 1598.252808 1590.775269 1595.537231 1601.576172 1603.807983 1605.05957 1605.934082 1605.058472 1602.019531 1597.051758 1585.072266 1578.876587 1575.007446 1572.891602 1566.943359 1562.194702 1556.993408 1551.080078 1546.543701 1542.315796 1538.354248 1531.706665 1526.863037 1532.65686 1540.755615 1551.396851 1552.973022 1551.130127 1546.534668 1540.523071 1536.099731 1535.99353 1546.678589 1554.243164 1560.175659 1566.443726 1571.912964 1571.506592 1572.038696 1569.026367 1563.074219 1559.414185 1562.123657 1560.299316 1556.300659 1558.335083 1564.498535 1570.378418 1575.500244 1580.823364 1586.966797 1591.36853 1586.568359 1578.241943 1569.042236 1556.976929 1540.89502 1531.743164 1517.614868 1506.552124 1497.249023 1489.388428 1480.069946 1465.646362 1449.713013 1437.693848 1442.599976 1447.47644 1451.038574 1454.272461 1452.432251 1444.882568 1436.093018 1432.396362 1439.646118 1450.280151 1464.723145 1469.009644 1467.520752 1458.53186 1447.526123 1438.906982 1442.9021 1456.262451 1467.843018 1483.500122 1500.685913 1505.352051 1511.642334 1516.289795 1515.216431 1512.796143 1514.454224 1515.313721 1513.728394 1515.075073 1510.83252 1509.890991 1522.080933 1528.86377 1527.742432 1522.289917 1519.475098 1519.324097 1525.725342 1534.522217 1533.069458 1527.078613 1532.521606 1540.795654 1550.656006 1554.912598 1558.746948 1570.298706 1579.817139 1569.531738 1549.734863 1532.295776 1518.018066 1512.647461 1509.698486 1506.164185 1499.756226 1486.154663 1477.150146 1473.059937 1462.20459 1453.406006 1448.128784 1451.545776 1456.463013 1463.426025 1477.428589 1489.297729 1491.006714 1481.520264 1465.64624 1449.446655 1433.548828 1418.820557 1413.517578 1423.124634 1443.223633 1466.197266 1481.779541 1470.769165 1456.065918 1469.296265 1485.736328 1503.136475 1517.465088 1533.617065 1544.958618 1548.026123 1557.520874 1564.746704 1566.33606 1568.574341 1569.36377 1568.375488 1564.388428 1563.072998 1561.973755 1563.076782 1571.688843 1577.77063 1581.009888 1581.132202 1578.910767 1575.223633 1573.689941 1570.753052 1566.300293 1561.846069 1556.443481 1550.872314 1543.070068 1534.466919 1526.223267 1523.14978 1517.298706 1512.238525 1503.797852 1492.972534 1481.755859 1472.932007 1475.663818 1482.091553 1488.791138 1491.584717 1493.074097 1494.070312 1495.123047 1495.641479 1493.359375 1488.903931 1480.886108 1474.755493 1470.422241 1466.145752 1461.424438 1454.533325 1450.220703 1444.82251 1439.219849 1439.827271 1439.05188 1434.047363 1430.238403 1430.862061 1434.511108 1436.811523 1437.449707 1437.156738 1435.871094 1432.914917 1429.664185 1425.103516 1420.735718 1423.144409 1425.699219 1425.96228 1423.752563 1421.796387 1421.247925 1420.629517 1418.99646 1415.357178 1407.370605 1399.022339 1390.171021 1386.09375 1388.486328 1391.827759 1395.531372 1399.167603 1401.301758 1401.922974 1406.445435 1414.490601 1420.674683 1425.322998 1426.064209 1430.922241 1435.606323 1436.608765 1437.853516 1450.184937 1461.016724 1470.546021 1479.310791 1487.779297 1495.29126 1497.769287 1496.320557 1491.230835 1477.111694 1460.14978 1437.341431 1420.428711 1396.471802 1380.93335 1365.114258 1354.494019 1346.789429 1334.731445 1315.992065 1315.634277 1312.822632 1313.22937 1314.959839 1315.209473 1323.749268 1338.886353 1354.569214 1360.332886 1371.356934 1391.111206 1410.064575 1425.282715 1435.322632 1451.462769 1458.605103 1464.826294 1470.343018 1474.077637 1471.460571 1461.768188 1479.373169 1489.951294 1493.942871 1494.506836 1492.197266 1488.593018 1486.277466 1491.412598 1502.994141 1503.05188 1495.73938 1482.67981 1471.744873 1469.549683 1465.544312 1488.371582 1494.283936 1497.182495 1496.306152 1492.393921 1486.563721 1483.251831 1475.163208 1477.442261 1482.956787 1488.183228 1497.430908 1495.719727 1485.871094 1470.953735 1463.651489 1461.651733 1459.389893 1455.143311 1448.699707 1449.583374 1453.422852 1456.456177 1453.349609 1446.678589 1437.13208 1416.592163 1404.795898 1403.768677 1404.209229 1399.475464 1387.940674 1381.248291 1371.482056 1356.416138 1350.627563 1344.968994 1334.97998 1327.567871 1315.266357 1324.234497 1339.825928 1357.368408 1368.709961 1382.425781 1388.93042 1399.560669 1406.592041 1409.39856 1409.411987 1407.916016 1406.45166 1406.565918 1406.570435 1405.986572 1405.305908 1404.576172 1403.486816 1402.532104 1401.020264 1397.27063 1393.789062 1391.650635 1387.571167 1382.340576 1377.259644 1373.267822 1368.734863 1364.094971 1357.531738 1353.063354 1351.55542 1349.834595 1346.967651 1344.486328 1342.829468 1337.443481 1331.45874 1323.306641 1325.52478 1324.526123 1320.693481 1315.522095 1312.434204 1310.480225 1309.44873 1312.668213 1309.897949 1305.962524 1297.467651 1290.281738 1283.15625 1274.936523 1267.890259 1265.221313 1269.331299 1270.725464 1266.158936 1263.494385 1264.884888 1266.717773 1272.026367 1280.382446 1283.750122 1287.776611 1291.258179 1295.474609 1301.415649 1309.175537 1315.012573 1318.797119 1317.505371 1318.112915 1318.818604 1318.44458 1317.90625 1315.643188 1311.396362 1307.769775 1305.549561 +1642.642578 1651.282837 1658.905029 1658.111572 1656.575806 1652.962891 1646.245605 1634.347778 1626.743774 1615.006104 1608.326172 1605.846436 1602.746216 1600.250732 1601.616455 1605.68335 1609.192993 1613.730225 1618.572388 1623.4646 1627.547974 1629.569336 1630.304199 1632.004395 1632.753662 1633.805786 1636.381592 1640.971924 1644.673096 1646.255127 1645.945557 1643.656372 1643.26123 1644.094971 1644.083984 1646.821045 1654.818481 1665.188232 1672.955688 1670.432983 1670.482544 1677.987915 1684.522583 1696.658325 1701.569702 1707.480713 1710.679932 1711.275757 1709.857666 1704.905762 1699.115356 1688.389893 1678.657715 1697.522583 1706.573975 1710.1521 1710.925171 1704.664551 1693.648193 1680.440186 1666.972656 1654.824341 1644.085571 1632.560791 1635.381958 1638.27002 1640.070557 1649.350708 1665.28186 1673.146851 1673.704712 1671.639648 1665.749023 1659.534912 1660.710938 1659.170288 1657.531616 1660.624878 1643.487183 1628.095215 1609.468018 1594.145264 1578.252686 1563.271118 1554.570679 1542.829834 1558.170044 1577.487549 1599.750977 1619.572144 1638.550781 1653.176025 1667.61377 1679.46936 1682.392944 1669.096924 1653.172485 1637.262207 1620.048218 1602.299805 1580.648804 1561.110474 1553.94043 1545.47583 1537.075806 1523.244995 1517.662231 1514.202148 1518.796875 1523.602539 1526.775269 1528.514404 1535.116821 1541.777466 1539.657104 1527.487793 1513.805298 1492.290283 1479.367554 1459.651245 1448.195312 1439.444946 1429.275513 1425.625122 1422.21936 1420.741943 1423.597168 1428.045654 1437.976074 1443.959473 1448.960205 1462.196533 1475.07251 1482.445557 1479.197021 1480.898438 1484.254272 1486.619141 1486.345215 1484.651245 1482.426636 1478.494629 1485.695557 1497.622437 1505.131104 1511.935303 1521.627686 1530.646484 1540.540527 1559.101929 1568.113403 1578.249268 1584.276245 1590.052856 1596.991577 1606.427734 1620.010742 1637.330566 1646.383301 1648.689331 1639.152222 1625.688354 1617.248047 1609.868042 1613.947632 1620.885986 1624.293823 1625.887817 1625.078125 1622.55896 1613.796875 1607.984009 1605.306641 1604.473633 1604.93689 1606.626587 1607.012207 1606.659302 1607.371094 1609.219971 1612.105103 1612.780762 1613.939087 1618.58728 1621.119751 1619.783447 1615.627808 1611.959595 1606.920288 1598.375977 1598.273926 1603.748291 1606.704468 1608.85791 1610.627686 1609.090454 1602.529541 1595.14624 1583.576416 1573.667358 1570.026733 1564.124146 1559.553223 1557.896973 1553.484131 1548.532104 1545.15332 1541.727905 1537.953735 1531.516602 1529.936401 1538.903564 1546.092773 1553.228394 1556.235962 1554.031128 1549.460327 1543.706299 1538.79895 1534.907227 1545.067505 1554.479614 1561.390259 1569.440186 1574.945068 1575.574219 1575.726685 1571.325317 1562.046387 1552.858643 1552.960449 1552.958862 1548.360718 1550.695557 1553.995483 1557.248291 1562.988892 1568.487793 1572.286743 1575.815796 1574.155151 1569.363892 1562.89978 1551.080933 1534.291016 1527.969604 1513.550415 1500.335083 1489.095581 1481.100708 1471.387207 1457.072021 1448.037476 1450.286133 1453.983521 1460.791748 1465.295166 1465.670288 1462.085205 1453.887451 1443.432617 1433.831177 1437.043457 1448.165527 1463.665649 1469.818237 1470.197388 1462.602051 1450.470093 1444.861084 1439.776489 1452.151855 1462.827637 1476.054688 1485.596313 1493.836426 1497.903198 1500.963867 1500.989014 1499.303101 1504.824707 1505.408936 1502.383911 1506.059692 1504.488647 1506.938477 1514.077393 1520.154053 1519.377808 1515.300049 1510.483521 1516.565186 1527.368042 1537.519897 1535.445435 1525.032104 1525.63501 1531.245239 1536.770752 1544.312988 1549.401611 1562.745728 1576.07312 1567.521118 1548.343994 1530.89624 1516.179932 1495.294678 1490.496216 1489.792114 1490.429443 1483.170654 1467.6427 1461.21228 1456.175171 1450.510742 1444.261963 1446.395264 1450.219604 1457.209717 1467.650024 1483.605225 1491.942505 1482.500854 1465.05603 1448.325439 1432.073486 1414.98584 1414.825317 1428.111572 1443.803833 1466.951294 1489.834473 1486.203857 1465.188843 1468.507324 1486.759033 1505.970337 1523.866211 1541.537476 1554.98645 1564.089844 1571.055298 1573.613525 1574.015991 1574.536743 1574.485229 1574.502197 1571.482422 1569.838501 1568.760254 1570.594849 1579.015625 1584.668945 1585.011719 1583.871338 1577.764038 1570.002563 1562.387451 1560.817383 1558.588257 1553.934448 1549.408569 1540.17395 1534.008423 1526.793701 1517.524414 1512.145874 1508.057373 1502.80542 1495.075195 1486.655518 1478.727051 1484.064819 1489.995605 1493.099609 1495.475708 1497.212402 1498.519531 1499.148315 1499.833252 1500.471069 1497.382935 1490.527222 1482.93396 1475.632202 1470.861206 1465.007812 1459.837646 1452.246704 1449.790039 1446.776733 1443.97583 1442.542358 1439.627563 1435.62793 1434.620972 1437.556396 1440.764526 1441.275635 1441.472046 1441.102051 1439.859131 1435.081421 1430.259766 1426.44104 1426.081055 1428.308472 1429.605835 1429.405884 1427.396484 1424.952515 1425.949829 1424.216797 1418.432007 1411.914673 1401.032837 1392.556763 1387.432495 1389.838501 1392.894165 1397.363525 1401.913452 1406.124756 1408.71936 1409.834839 1411.890747 1418.964844 1426.313843 1432.37146 1435.763062 1440.162109 1448.656494 1451.130249 1448.988037 1458.9646 1470.250366 1480.191406 1490.157227 1500.933105 1508.709473 1507.092041 1498.520264 1488.335571 1471.578369 1453.131348 1431.915161 1412.124878 1395.636353 1382.895264 1367.210327 1355.568481 1341.37439 1330.056152 1316.536743 1316.871948 1314.20166 1312.700195 1315.854126 1316.049805 1321.868408 1329.498047 1341.491089 1355.315308 1376.094604 1393.778076 1405.294556 1414.81665 1422.218262 1447.050659 1455.59375 1465.167969 1473.502197 1478.789062 1480.329346 1477.34436 1482.119995 1497.068481 1502.071411 1502.421509 1501.619873 1497.550659 1492.134766 1494.78479 1504.686157 1510.900024 1503.737793 1487.840454 1481.390869 1479.76123 1474.150146 1484.799927 1496.861938 1503.269287 1503.3396 1500.253174 1498.283813 1492.021484 1484.681885 1487.015259 1490.428101 1490.962646 1491.960693 1488.999756 1478.275146 1464.613037 1450.849487 1448.983032 1447.928833 1443.875854 1438.418823 1440.614624 1440.836792 1438.858398 1436.688354 1431.4104 1422.621582 1409.627319 1398.602417 1385.894653 1387.245117 1384.351562 1378.11792 1363.398315 1353.775513 1340.048462 1337.350098 1331.337036 1329.49707 1328.496582 1324.520996 1332.096924 1350.254395 1369.526001 1379.947021 1388.965698 1396.782837 1404.519531 1411.142212 1412.219482 1412.100342 1411.56604 1410.227539 1409.84436 1409.432007 1408.735107 1407.990967 1406.916138 1405.828735 1405.094971 1404.088257 1401.387695 1396.535034 1392.790039 1388.29541 1383.295288 1379.060791 1374.392578 1369.702515 1365.509277 1358.368652 1353.522827 1353.57019 1352.175415 1349.166016 1345.581299 1343.076294 1335.133667 1327.677856 1331.845947 1332.290527 1329.643433 1325.060669 1319.950684 1319.873169 1318.455811 1318.520142 1317.859741 1312.88147 1306.796387 1300.182251 1293.65625 1284.286499 1275.78186 1267.441895 1271.64856 1278.430176 1279.35437 1278.740356 1278.647461 1274.714478 1275.724609 1280.65979 1286.73938 1290.934937 1296.077515 1301.879883 1306.552002 1314.572876 1321.045532 1326.121704 1328.968384 1327.743652 1325.441528 1326.267578 1327.297974 1326.748413 1324.552246 1321.44397 1317.398193 1312.425537 +1644.231079 1654.370117 1662.011475 1663.716309 1663.769287 1661.420776 1657.128784 1646.431641 1634.576538 1627.922485 1623.097046 1618.90271 1614.913208 1610.53064 1607.203247 1604.346924 1603.80603 1606.124634 1608.319702 1612.302979 1617.258179 1620.896729 1622.202393 1622.898804 1623.724854 1625.577271 1629.083862 1633.114868 1635.654907 1636.692749 1636.362183 1636.498291 1643.255493 1645.296021 1645.123169 1644.326904 1645.721069 1656.085571 1661.694336 1663.805908 1668.896606 1680.344482 1689.757202 1692.228271 1698.46521 1707.130371 1711.183838 1712.153076 1711.136475 1705.869873 1700.466675 1691.885376 1686.209595 1702.684326 1710.603271 1710.406738 1706.519653 1697.641968 1684.349487 1673.452148 1665.128052 1654.651489 1643.197998 1636.008179 1645.530396 1648.390991 1645.497803 1655.756104 1673.243896 1679.374023 1680.095947 1677.753296 1673.476929 1671.36499 1670.407715 1670.721558 1666.521362 1656.553833 1640.459351 1624.455566 1607.025513 1593.899292 1581.521973 1571.122681 1558.756104 1545.278198 1554.340088 1577.172852 1597.930908 1616.2323 1633.028564 1649.007812 1662.093628 1679.650391 1684.959106 1671.230835 1653.359985 1639.791382 1623.631836 1608.829956 1587.796875 1568.666504 1555.591919 1544.026001 1530.179321 1520.652222 1524.851685 1533.195923 1537.566162 1540.382568 1541.902588 1544.540771 1549.130737 1549.564331 1542.632324 1529.660522 1514.159668 1498.187134 1483.263306 1468.873901 1456.888794 1447.511475 1440.63916 1430.087524 1425.919922 1421.578613 1422.942505 1427.268433 1433.572876 1438.592773 1442.867065 1448.670166 1459.74353 1481.930542 1492.644409 1491.88623 1493.672485 1497.881592 1498.700073 1496.701904 1493.315308 1487.624023 1483.109497 1492.488403 1501.828735 1507.662842 1514.569458 1524.409058 1532.487183 1548.998779 1558.368774 1565.457397 1569.5271 1573.611328 1585.533325 1592.350464 1603.30957 1613.025024 1623.93689 1635.291626 1634.068115 1627.123291 1618.454224 1608.63269 1604.446411 1611.862183 1617.434082 1621.684082 1622.190552 1620.990967 1619.151978 1616.009399 1614.685059 1612.931763 1612.674561 1616.613403 1617.310913 1616.779541 1618.943604 1624.984009 1627.212036 1629.387207 1630.978271 1632.439453 1631.24292 1628.549927 1624.732788 1620.086426 1614.136108 1607.879639 1604.901367 1606.566406 1609.670654 1611.536499 1612.028076 1607.841064 1601.128296 1593.549927 1585.772705 1577.94812 1573.388306 1565.614014 1560.52002 1556.590088 1552.057129 1548.108398 1544.465698 1540.257324 1536.442261 1531.653931 1533.090454 1543.57312 1551.998779 1559.209351 1560.848389 1558.230225 1552.281128 1547.023315 1541.109009 1535.173584 1544.76001 1556.062256 1564.351074 1571.289062 1575.543091 1575.84729 1575.224121 1567.809937 1557.625122 1547.553345 1545.702271 1545.063721 1540.070435 1534.063477 1540.439819 1543.773193 1549.068237 1554.963135 1558.612671 1562.595581 1565.226807 1562.706787 1553.338623 1540.320923 1531.535889 1524.126099 1509.011353 1497.039307 1484.730713 1472.441895 1460.876099 1450.04895 1456.983521 1462.260254 1469.727783 1476.18457 1476.911377 1474.616943 1471.15979 1463.285278 1451.040527 1439.035034 1435.687622 1446.59082 1461.429321 1470.14978 1475.349609 1469.55249 1460.407471 1453.834351 1449.184204 1448.614624 1453.78479 1465.876343 1476.93042 1482.427368 1486.1073 1488.898193 1489.346436 1490.028687 1492.610352 1493.189819 1496.695923 1500.140015 1499.021118 1502.660034 1508.841675 1510.950806 1510.566528 1509.326782 1509.894897 1521.237061 1530.42334 1538.04126 1535.978394 1526.686035 1519.437012 1523.050781 1525.840454 1531.407349 1544.292358 1557.706543 1570.422241 1563.277466 1544.636963 1530.601196 1512.827148 1491.333984 1479.11145 1475.886353 1475.835327 1469.040894 1460.853516 1451.421875 1448.239868 1441.636597 1437.67981 1441.121338 1444.835938 1450.623047 1459.091553 1476.857544 1487.55249 1478.078369 1460.63855 1443.013062 1420.315308 1416.968994 1424.164917 1434.177734 1447.230835 1469.673584 1492.095703 1499.97583 1486.045532 1470.670044 1483.815674 1503.150391 1520.097534 1539.713135 1555.142456 1566.80188 1574.174194 1576.779053 1579.312744 1583.25 1582.480103 1579.430664 1577.384033 1575.828247 1573.413086 1577.148926 1587.129761 1588.849609 1587.792358 1587.165894 1577.841431 1568.954346 1559.527222 1550.561279 1546.419312 1541.915771 1535.508667 1529.466309 1524.828491 1518.208252 1509.565552 1504.564087 1498.773682 1493.648804 1487.133911 1486.386963 1490.375732 1494.700806 1498.650391 1500.605957 1502.155396 1504.01062 1505.297119 1505.748169 1504.999146 1503.447998 1499.333374 1490.48645 1483.542603 1476.097412 1471.928101 1466.544312 1462.214966 1458.86377 1453.666626 1450.361206 1449.987061 1447.970093 1441.399414 1438.049683 1437.46167 1440.966553 1444.848877 1444.95459 1443.525757 1441.911865 1439.425781 1435.327637 1429.883301 1427.683594 1431.263916 1431.919312 1431.430664 1430.453369 1428.37207 1427.633667 1428.675171 1422.659668 1415.727173 1406.239502 1393.832031 1389.662231 1391.981567 1394.63623 1398.413818 1402.967651 1410.331543 1415.756836 1418.366943 1417.405273 1416.289917 1422.759155 1430.849121 1439.905884 1445.950928 1448.931763 1459.012207 1463.774902 1460.845825 1464.775879 1478.237305 1486.55542 1501.649048 1513.286377 1516.734009 1510.079956 1495.448608 1482.31958 1464.889893 1443.11145 1423.143677 1406.453613 1392.453247 1378.845947 1366.276489 1355.691895 1341.759277 1328.855225 1316.977295 1317.233521 1314.702148 1311.756226 1316.853516 1315.59021 1320.287231 1326.150879 1334.104858 1349.339111 1364.030396 1378.80127 1387.020264 1396.119141 1417.703491 1445.096313 1453.751587 1462.804199 1472.029297 1478.129761 1486.386597 1487.510376 1485.93335 1500.247192 1504.769531 1507.086548 1507.249634 1504.427734 1498.648926 1503.049438 1513.178223 1516.077637 1512.132324 1493.504272 1491.017578 1488.826538 1481.488159 1479.329834 1493.751221 1503.431519 1510.61853 1510.074219 1506.059692 1500.171021 1499.449951 1500.451294 1497.543457 1491.515625 1485.345825 1477.770752 1467.927612 1455.451416 1439.416992 1437.994629 1437.688965 1431.710327 1427.052368 1427.499512 1426.732422 1425.164429 1422.248047 1418.539551 1409.571045 1399.140747 1387.546021 1371.78418 1361.280396 1359.05542 1354.55188 1344.136719 1341.735352 1342.268433 1345.740967 1348.190552 1346.919189 1341.766357 1329.408936 1333.334351 1354.282593 1372.170532 1382.92749 1392.622559 1402.366577 1412.194214 1415.773071 1415.146606 1414.874512 1414.582397 1413.580688 1412.679077 1411.976318 1411.291748 1410.343262 1409.020874 1407.574585 1406.187866 1404.682373 1402.116699 1397.264771 1393.061401 1388.459473 1383.337646 1379.720459 1374.651611 1368.546753 1364.556885 1362.524902 1359.634644 1358.046631 1355.180664 1351.502441 1345.379639 1340.109009 1332.1073 1335.349731 1338.541992 1336.728638 1331.682739 1327.638062 1326.246826 1324.55188 1322.730591 1321.339111 1318.985352 1313.543579 1305.630615 1300.44458 1294.093628 1288.031616 1276.650513 1270.36145 1280.845215 1286.30542 1288.091919 1288.765015 1289.818726 1291.109619 1290.536377 1290.476562 1291.57666 1297.875977 1305.53894 1311.894165 1318.731323 1325.54834 1331.527832 1334.775391 1335.860474 1334.379883 1332.311646 1334.378906 1336.099121 1335.464722 1332.372437 1328.388672 1323.48584 1318.977051 +1643.321777 1653.610596 1662.108521 1668.469604 1670.756592 1667.166748 1663.441406 1657.112427 1649.157104 1642.920532 1636.586426 1631.966309 1628.792358 1624.680542 1617.765991 1610.886719 1609.731445 1610.485107 1608.988892 1608.272095 1608.980957 1612.817383 1617.467773 1619.573853 1620.803101 1623.608765 1628.81958 1631.933594 1632.111938 1632.161865 1633.01355 1643.166016 1649.543945 1652.452759 1652.014648 1649.743896 1647.339844 1650.472778 1655.313477 1659.165283 1670.079468 1686.370728 1697.039795 1696.887695 1694.005371 1704.473755 1711.253174 1714.751099 1715.419434 1709.713867 1702.834351 1693.693848 1692.077637 1709.53186 1712.024658 1706.907471 1698.533081 1683.951904 1672.575562 1668.041504 1661.72998 1651.244507 1641.508545 1650.104858 1661.620483 1662.742798 1656.270142 1672.186157 1681.178467 1686.384155 1686.575684 1683.865967 1681.438354 1680.944824 1678.824097 1673.980957 1668.203857 1655.183228 1639.040039 1623.160156 1608.516846 1598.850342 1587.671387 1574.202759 1562.892578 1550.878906 1547.052002 1570.981567 1590.775146 1611.341064 1626.157593 1640.640137 1654.430176 1672.752563 1682.766846 1666.90625 1649.664795 1636.692261 1619.974487 1607.616577 1589.95874 1570.420166 1556.224854 1542.277222 1526.321167 1528.395752 1542.534302 1548.75647 1553.020752 1552.65271 1551.587158 1556.207153 1558.192627 1553.306396 1541.004639 1529.067749 1514.241089 1503.177856 1490.614746 1478.249634 1462.90271 1451.958618 1444.965576 1437.913818 1429.272339 1425.610229 1421.737549 1426.100708 1429.881714 1433.713989 1437.394287 1447.42749 1457.412354 1476.53064 1490.977661 1491.697876 1490.631104 1499.363159 1503.401611 1504.72937 1503.568359 1498.741211 1491.283936 1487.483521 1498.303467 1504.398071 1509.714844 1517.560425 1526.509155 1538.08728 1548.014648 1555.862183 1561.591675 1566.220703 1572.599731 1581.742188 1588.826538 1595.940063 1602.448364 1607.360474 1611.117065 1612.092163 1609.174438 1598.705933 1594.348633 1605.336182 1611.051025 1618.55188 1620.458008 1622.810913 1624.478882 1625.102173 1624.65564 1623.485596 1624.436279 1627.338501 1628.830933 1629.314819 1630.151611 1632.132935 1635.077026 1638.849365 1641.115112 1641.421265 1638.712891 1634.34729 1629.93396 1624.97229 1618.765503 1612.051514 1609.070312 1610.061523 1612.069336 1612.561279 1609.606812 1601.587158 1597.184937 1591.052246 1585.039429 1579.018921 1575.38623 1567.811401 1561.434204 1556.783203 1552.644043 1549.318726 1544.334351 1538.777954 1535.037476 1532.554565 1536.090576 1549.147217 1557.618408 1564.666992 1566.639282 1562.797729 1556.70813 1551.480103 1545.71582 1535.702759 1547.474487 1559.888062 1565.542847 1571.368652 1574.958496 1575.487671 1572.320923 1562.38855 1553.8302 1546.236328 1541.836792 1536.019165 1535.394897 1529.975098 1528.649292 1527.372925 1531.223633 1537.202515 1544.10437 1550.177002 1552.177002 1548.379395 1539.048462 1532.063477 1526.113037 1516.458252 1503.272705 1491.120972 1476.657227 1461.894653 1459.105591 1461.898438 1470.149658 1479.310791 1484.608521 1487.726196 1488.398438 1487.135986 1480.77002 1471.894531 1458.126343 1444.993408 1437.715942 1444.040161 1459.144775 1469.35791 1477.674194 1477.963379 1470.057983 1461.186646 1455.457642 1453.195557 1450.6521 1456.156616 1464.205566 1473.404297 1475.88208 1478.53125 1479.102051 1479.921265 1481.713501 1485.712646 1488.664307 1493.211304 1499.939209 1502.65918 1504.281738 1503.47522 1502.477539 1504.661621 1510.77124 1520.26416 1529.697998 1537.32605 1534.592529 1527.112427 1511.936646 1514.061035 1519.740479 1527.706787 1538.629639 1558.9375 1564.100586 1552.87146 1536.997314 1527.433472 1505.670654 1487.346191 1474.743042 1465.979126 1460.386963 1454.991943 1450.713257 1443.966919 1437.697144 1433.852051 1433.51001 1435.814819 1437.951782 1440.557983 1450.394165 1465.553955 1476.673096 1468.282837 1450.845459 1428.362549 1417.434448 1421.561768 1428.979736 1439.986328 1451.720581 1472.39917 1494.505859 1506.302856 1499.375244 1481.120239 1480.305542 1496.323975 1514.048096 1531.919067 1546.861816 1563.385376 1570.185059 1576.448364 1582.993286 1586.921143 1588.148315 1584.344482 1582.114746 1580.498901 1580.411499 1583.168335 1589.808472 1591.856689 1590.571289 1587.254272 1574.778076 1566.308594 1558.347534 1548.790649 1536.715088 1527.620361 1523.068726 1514.936401 1512.556519 1509.368896 1502.807495 1499.160522 1496.717407 1491.975464 1490.747192 1491.948975 1496.274536 1502.258667 1507.620605 1511.12561 1511.944092 1513.101562 1513.462036 1512.465454 1509.224609 1504.339111 1497.988037 1488.415527 1483.671875 1477.318726 1475.348267 1472.82605 1467.880005 1465.445801 1461.908203 1454.786133 1451.161499 1451.326172 1445.54895 1440.446533 1438.462769 1444.502808 1450.278687 1448.552124 1444.880859 1440.821167 1438.184937 1436.246948 1434.635376 1434.647583 1436.107544 1435.531982 1433.011475 1430.739746 1428.639526 1423.030396 1416.28186 1412.20752 1405.832764 1398.669189 1391.482544 1393.403931 1396.097046 1399.413696 1403.977783 1412.135986 1418.034424 1422.621704 1426.600952 1428.490234 1425.799683 1425.368164 1436.915771 1450.570068 1459.574219 1461.366821 1464.769043 1473.62854 1477.254272 1481.595947 1485.540771 1497.561523 1511.531372 1520.588135 1519.858032 1505.62854 1490.700928 1475.094238 1457.34314 1434.05896 1413.24707 1402.582642 1388.758179 1372.448975 1363.135986 1353.363525 1341.009888 1318.892212 1317.369141 1315.288696 1310.782715 1314.849609 1321.786621 1339.778564 1338.891724 1327.391602 1329.590698 1327.958252 1347.996826 1358.144043 1372.713135 1395.773926 1413.552979 1454.26001 1460.979248 1464.581055 1470.057495 1474.233398 1483.614624 1492.867188 1498.639893 1498.055298 1506.025879 1511.334229 1513.10022 1513.111816 1510.870361 1511.082275 1518.118286 1520.265015 1517.422241 1505.768311 1503.170898 1496.583984 1489.866089 1487.221069 1487.687622 1500.566284 1509.637207 1514.145752 1510.753052 1505.588867 1503.859863 1503.766113 1501.287598 1491.212769 1478.367798 1464.362061 1454.41626 1444.763916 1427.360107 1425.562988 1424.103394 1418.855225 1416.392456 1417.083862 1417.431763 1416.195557 1413.347046 1407.257446 1397.30896 1383.257935 1363.211792 1358.487549 1353.831299 1350.387817 1352.270508 1356.015625 1355.113892 1355.690796 1361.657715 1362.98584 1356.07251 1348.307129 1335.406494 1334.607056 1347.180176 1360.406128 1381.016602 1390.883911 1402.333008 1411.697754 1417.430298 1417.950928 1417.904175 1417.617554 1416.849365 1415.558716 1414.53772 1413.5354 1412.503906 1410.987305 1408.977417 1406.713501 1404.333374 1401.527222 1396.8573 1392.595825 1387.56665 1380.21936 1377.36731 1374.921997 1369.444336 1367.509155 1367.618652 1366.955444 1363.667969 1358.982666 1353.884766 1343.556885 1336.684326 1341.044434 1344.525146 1344.842285 1341.922852 1336.916626 1332.092773 1331.157959 1328.68457 1325.882935 1322.932739 1318.970947 1313.141479 1305.057251 1301.935791 1297.29126 1289.862671 1274.82605 1282.291382 1288.006714 1293.181519 1297.641846 1298.807495 1300.931885 1304.980103 1306.755127 1305.870728 1303.596313 1304.174194 1309.163208 1317.363403 1324.532959 1331.422974 1337.411011 1341.507935 1342.897583 1340.547852 1338.990967 1342.677979 1343.25061 1343.321899 1339.084595 1334.041382 1329.32019 1324.102661 +1641.944092 1651.466309 1660.769043 1669.499512 1673.329834 1671.917847 1668.346436 1665.220459 1662.126953 1658.581299 1652.052368 1646.232056 1639.508301 1634.621216 1626.918945 1620.099243 1621.886719 1623.717285 1622.060181 1618.104614 1613.669312 1612.13269 1616.570923 1621.346313 1627.714233 1635.687134 1636.157593 1637.155518 1643.577881 1647.60083 1651.534546 1656.891357 1660.830078 1662.543335 1661.873779 1659.036865 1654.783569 1653.703857 1655.284058 1657.638672 1668.008057 1681.647705 1694.846436 1699.969604 1703.991821 1704.071533 1709.692993 1716.46228 1720.466187 1717.42749 1706.106689 1699.368896 1703.015625 1716.118286 1717.393311 1706.701416 1692.581787 1682.966919 1673.008545 1668.524658 1660.772583 1649.83374 1647.643921 1663.830078 1674.735229 1675.292114 1667.976929 1676.373657 1686.299194 1692.519897 1695.356323 1695.09436 1692.828735 1688.359741 1684.270752 1677.63855 1669.117188 1655.379395 1641.042603 1626.371338 1611.929932 1602.80249 1592.287231 1579.168945 1567.307129 1556.399536 1543.801636 1561.786865 1582.14624 1600.609497 1616.619141 1635.144897 1648.568237 1667.094849 1674.238647 1658.974976 1641.575195 1625.705078 1613.020508 1599.337402 1583.596191 1566.651489 1551.302002 1537.740967 1541.301392 1549.081055 1562.017456 1565.359985 1566.866577 1566.854248 1567.572144 1566.800659 1563.574341 1553.598755 1537.670898 1523.46228 1511.992798 1502.137329 1490.916016 1480.759033 1466.388672 1453.711548 1447.339722 1441.39624 1438.360352 1429.079468 1425.5177 1424.119995 1426.603271 1430.281494 1435.880493 1446.18396 1456.326782 1469.437256 1489.695923 1491.364746 1482.955688 1488.575562 1498.064819 1506.573486 1512.119019 1510.068848 1502.981079 1497.767944 1495.370728 1501.866699 1506.678223 1510.972656 1520.199951 1532.171387 1538.162842 1547.253906 1553.234375 1558.664795 1563.758179 1569.814331 1576.770752 1583.250977 1588.614258 1594.344238 1598.402344 1598.624756 1594.447144 1586.186157 1603.560669 1614.487183 1619.71936 1622.547485 1623.898926 1626.362671 1628.026001 1629.294189 1629.504395 1630.16748 1632.292358 1634.606689 1636.690918 1637.322632 1638.303711 1640.3302 1642.834106 1645.416626 1647.940674 1648.310059 1644.084106 1638.596558 1634.982422 1628.94165 1623.112793 1618.942993 1616.340088 1615.407104 1613.829102 1610.285522 1601.391846 1590.067017 1587.07373 1584.297119 1579.933228 1576.256348 1573.118652 1565.376587 1559.886963 1556.174927 1552.403198 1549.263184 1544.060669 1538.039062 1537.195068 1537.252075 1537.963989 1551.930664 1560.540039 1569.782837 1574.423462 1567.541626 1559.193115 1554.713379 1550.180054 1542.768555 1549.26123 1562.380615 1566.917725 1570.84436 1574.481934 1575.547485 1573.655396 1567.108154 1559.444214 1549.25708 1545.155029 1550.339111 1558.371948 1548.908203 1536.062622 1522.540283 1522.95752 1527.294189 1531.200195 1533.522095 1533.891846 1532.744629 1530.154297 1526.345581 1519.215454 1509.035278 1494.492798 1480.313965 1470.699585 1467.579224 1471.702515 1479.053345 1486.177612 1492.351685 1496.972534 1499.970825 1498.828735 1495.460571 1488.496338 1479.206421 1463.698608 1450.743652 1440.489624 1442.157715 1455.304077 1465.88562 1474.196411 1478.317383 1478.325073 1470.421265 1461.346069 1458.035767 1456.09668 1456.578247 1460.623901 1461.605591 1464.148682 1471.766846 1473.176147 1474.42395 1478.989502 1486.021484 1488.70459 1496.118042 1501.212402 1501.568359 1500.497925 1499.494751 1500.139648 1503.496338 1510.038208 1518.158569 1527.530029 1536.585815 1534.740234 1525.491333 1511.270752 1509.825317 1518.251343 1528.99646 1544.936401 1561.933594 1554.975342 1541.204712 1529.424927 1511.325562 1493.288818 1479.167236 1470.469971 1462.58313 1452.670044 1446.556396 1442.104492 1436.430298 1434.890625 1436.900391 1433.983154 1430.691528 1432.631226 1434.845337 1440.429199 1457.625977 1466.742798 1458.738281 1437.633179 1423.597534 1419.661133 1424.770752 1432.533569 1443.111084 1454.936035 1476.119873 1496.174316 1513.775879 1510.581909 1493.539062 1485.670166 1491.460815 1508.349976 1523.858032 1542.626099 1558.023193 1567.187378 1574.585449 1583.678223 1589.30896 1592.573486 1590.3573 1587.764893 1585.786743 1585.018677 1587.647217 1593.860474 1596.114014 1593.542114 1588.304077 1578.843384 1567.369385 1559.256592 1551.541138 1537.363159 1528.210815 1521.500732 1512.107178 1508.055908 1503.019165 1498.733276 1498.84314 1498.997925 1498.932983 1498.043579 1497.398682 1500.525024 1507.823853 1514.982056 1520.94104 1521.111694 1520.021851 1518.480225 1516.081543 1511.691284 1504.257935 1496.670288 1490.007935 1486.447876 1483.312012 1480.255371 1476.924561 1472.881958 1470.360718 1467.629272 1463.872681 1453.736206 1451.630005 1449.266113 1444.939575 1443.917114 1448.694824 1452.755981 1450.262207 1444.629761 1439.279541 1437.765625 1437.797729 1438.469116 1438.721191 1439.916382 1438.130127 1433.152588 1429.917847 1424.958862 1415.629639 1407.647095 1402.008057 1397.248779 1393.005249 1394.224854 1396.51062 1399.794678 1403.718506 1411.921997 1418.673584 1423.818359 1428.763428 1434.340454 1436.51416 1434.349487 1432.278931 1440.328247 1457.085449 1467.44104 1473.109741 1475.310303 1486.162231 1493.135986 1496.448853 1500.114136 1508.692383 1519.127686 1527.452026 1516.055542 1498.384399 1481.125854 1463.861694 1443.919312 1424.805664 1407.791992 1397.61731 1384.633057 1365.908691 1356.444214 1347.918945 1332.008301 1317.346069 1313.649658 1310.985352 1312.492065 1315.084473 1332.921387 1352.867065 1355.402588 1346.856323 1353.975708 1346.321777 1338.033813 1360.799683 1379.872437 1397.31189 1415.172119 1452.083984 1461.614136 1466.020386 1467.920044 1465.328247 1473.234009 1487.928345 1501.583008 1505.473389 1510.282227 1515.218018 1521.900024 1522.473267 1522.716064 1523.215332 1524.986816 1525.804321 1523.286743 1519.529053 1516.5896 1505.994141 1498.315186 1492.86792 1489.684326 1496.944824 1505.397949 1510.562866 1507.28894 1503.26123 1502.214111 1500.606689 1495.859619 1489.539551 1479.7771 1464.21228 1449.341064 1433.842163 1424.784058 1426.25415 1425.855469 1423.217651 1415.440063 1408.146484 1402.745605 1398.644409 1396.318726 1390.088257 1380.676636 1379.084229 1385.550049 1386.216431 1374.792358 1363.328979 1372.540894 1379.460327 1379.593872 1377.744873 1380.157593 1375.773682 1362.93042 1352.415771 1339.735596 1343.327881 1353.48645 1359.794556 1366.779541 1381.776123 1392.612549 1403.381348 1416.408081 1420.503662 1421.595459 1420.991821 1420.141113 1418.687622 1417.291992 1416.151489 1414.635742 1412.627441 1409.939941 1406.717896 1403.404175 1400.207764 1395.453979 1390.76709 1385.912476 1378.742798 1378.634399 1376.488525 1376.764282 1374.380615 1372.504395 1370.283081 1367.546509 1362.22937 1355.032349 1340.969849 1343.060791 1348.822266 1351.326416 1350.695923 1345.743896 1340.265991 1337.598145 1334.703613 1331.390137 1327.019165 1323.502686 1316.563599 1314.440918 1310.650879 1305.158081 1297.242188 1285.7771 1275.433472 1291.793091 1296.705566 1301.253418 1307.773926 1309.749268 1312.821289 1316.178223 1316.188965 1315.323608 1312.97168 1312.341797 1313.515259 1318.031372 1327.403198 1335.723633 1341.747314 1344.94751 1345.55835 1343.981689 1342.36792 1345.318604 1348.578003 1349.29834 1343.921753 1338.92749 1333.947632 1329.049072 +1640.339355 1649.453735 1660.070801 1669.695679 1675.392944 1676.283081 1674.175537 1672.555664 1670.62793 1666.62915 1661.759644 1655.933594 1650.307129 1642.996948 1634.125244 1629.897339 1632.215088 1633.235229 1632.469727 1627.928833 1622.057861 1617.161743 1617.527832 1620.493042 1627.260864 1634.51001 1635.593018 1639.205688 1644.365723 1647.417358 1656.674805 1663.841675 1670.355347 1673.351074 1674.418579 1669.940308 1661.592163 1658.678101 1661.536865 1657.760864 1659.67749 1675.320923 1688.451904 1698.220215 1707.762939 1708.897339 1711.814209 1717.828857 1721.057861 1721.953857 1714.310425 1716.504761 1716.164795 1722.185425 1721.388184 1713.355713 1700.714111 1692.071289 1680.962524 1671.054688 1666.503296 1655.283203 1654.744507 1672.981567 1680.631592 1684.599976 1679.90564 1682.094482 1691.421753 1697.855103 1699.685425 1699.192871 1697.408691 1689.905518 1684.704956 1674.446167 1665.78064 1654.899658 1642.055298 1626.498413 1613.962891 1604.112671 1593.533813 1582.436768 1573.440308 1562.718872 1549.683105 1549.731201 1569.873901 1596.030151 1615.999512 1632.793091 1649.619507 1669.074097 1675.042358 1663.156982 1645.162109 1628.620483 1615.749634 1597.890381 1576.714722 1559.569946 1547.46167 1552.295532 1560.739014 1567.689331 1574.63147 1579.338989 1581.720093 1583.978882 1581.37561 1571.907349 1557.619385 1545.78772 1530.459106 1515.194458 1505.535522 1497.379761 1487.31897 1478.258301 1461.107544 1451.664062 1449.539185 1448.355347 1444.796753 1440.758789 1427.29126 1424.811279 1424.397949 1427.617554 1433.857178 1442.744019 1452.510132 1462.577271 1477.710815 1477.805664 1474.20105 1481.25647 1491.769409 1501.376099 1515.286377 1517.731079 1516.697144 1511.240112 1503.608887 1500.575317 1504.904541 1507.947144 1511.538574 1527.852417 1532.144897 1535.893921 1543.328735 1551.661987 1556.223145 1561.628418 1567.740356 1572.350586 1575.747314 1579.14917 1580.142944 1576.798096 1579.247681 1589.390747 1611.018555 1620.480225 1625.743652 1628.864868 1629.935669 1630.79541 1631.995117 1633.425293 1633.896362 1634.799316 1637.740234 1640.923706 1643.159546 1644.623413 1645.945801 1647.567871 1648.747192 1649.522583 1649.594482 1648.691284 1644.450562 1640.248291 1636.810181 1632.194824 1627.48291 1624.161133 1622.134766 1619.720093 1614.56604 1609.399536 1601.959961 1594.293213 1584.817505 1579.851929 1572.44873 1571.479126 1567.343994 1560.081543 1557.748291 1554.405029 1550.941895 1548.388672 1545.565308 1544.127563 1544.385132 1539.914917 1538.13501 1553.114502 1561.002808 1571.280518 1576.12915 1572.783325 1562.66333 1557.455688 1552.322754 1547.522705 1549.38916 1561.432983 1567.656494 1572.669312 1575.226562 1576.37854 1575.671509 1571.065186 1563.120117 1551.110229 1551.927612 1569.038086 1578.717651 1570.173828 1547.981201 1533.997559 1522.42627 1519.784668 1522.074097 1523.810669 1523.573608 1523.219849 1521.84436 1517.436401 1510.602417 1496.851562 1481.608887 1475.920532 1477.52417 1479.989014 1484.59375 1491.874634 1499.430786 1506.69043 1514.353638 1514.655151 1511.499634 1502.466187 1492.920044 1481.973511 1466.952515 1454.527832 1443.432617 1444.911499 1449.838501 1460.951416 1468.454468 1475.518433 1478.239258 1477.851196 1468.149414 1462.641602 1461.71228 1464.077759 1465.817505 1467.717529 1469.935303 1475.624268 1477.736328 1481.064575 1487.212891 1490.675171 1493.060059 1498.693481 1500.637817 1499.06189 1498.788574 1500.440552 1503.932739 1506.273438 1509.525269 1515.793213 1524.12085 1531.436768 1529.054932 1519.492065 1501.887207 1502.051025 1511.131348 1528.264404 1538.019775 1544.052246 1538.03125 1527.801025 1512.05481 1495.534668 1480.854126 1470.597534 1462.645874 1453.272339 1446.870361 1440.565063 1436.711548 1438.546143 1447.904419 1449.324341 1447.025879 1439.330688 1428.699707 1427.598022 1431.012085 1441.278687 1452.740234 1447.415039 1432.276611 1421.12207 1422.7771 1430.498657 1439.964355 1447.286499 1457.783569 1482.310913 1505.370605 1525.804688 1526.148682 1510.087036 1501.682495 1497.270142 1507.351196 1525.43689 1542.169189 1555.960693 1566.157959 1574.813843 1583.05542 1591.402344 1598.506226 1596.812622 1595.888184 1596.936157 1595.470825 1595.801514 1599.251709 1599.825195 1595.799194 1589.578003 1580.530029 1569.567871 1560.348022 1548.836426 1536.89978 1535.043579 1529.532959 1518.171021 1510.239502 1506.684082 1507.448364 1509.039795 1509.27002 1507.393066 1504.357422 1503.568359 1505.687988 1511.769287 1521.170776 1530.139404 1530.767212 1526.338379 1522.651733 1519.124268 1513.846069 1506.189209 1498.937256 1495.245239 1491.3479 1488.12146 1484.694214 1481.25354 1477.77771 1475.228516 1471.897339 1467.82959 1462.538208 1456.924072 1452.561157 1450.10376 1450.338501 1452.324707 1452.82019 1451.172485 1445.636841 1440.088379 1438.873413 1439.690063 1440.057495 1440.456543 1439.198242 1435.295166 1430.907471 1426.718628 1419.991821 1410.995117 1402.490601 1397.276123 1394.67688 1395.479004 1397.277344 1400.053223 1403.634155 1410.873535 1417.889404 1423.351074 1429.197876 1436.3302 1442.550415 1446.023804 1447.446045 1444.883057 1445.385498 1459.772583 1472.6521 1482.380859 1490.65686 1496.664062 1503.26416 1508.416748 1513.096436 1518.69104 1524.270752 1522.399048 1500.531494 1483.53772 1466.968872 1450.225098 1427.688965 1410.268311 1400.628906 1389.978394 1376.835938 1359.322632 1345.006592 1335.631958 1318.892212 1313.124268 1311.871216 1312.026001 1314.257812 1318.671143 1340.880005 1363.874268 1372.108032 1368.116211 1373.216187 1361.152344 1338.213989 1356.617188 1375.837036 1389.133423 1404.754395 1432.495483 1442.622192 1458.208374 1465.070312 1454.958984 1458.557129 1476.669556 1495.172363 1507.459839 1514.826904 1520.264648 1525.359985 1527.123535 1529.557739 1531.788086 1532.481567 1532.477783 1531.056274 1528.420898 1522.32373 1513.619141 1504.771118 1498.24231 1499.406738 1500.284668 1503.306152 1505.716064 1502.44458 1497.150513 1492.611694 1487.96228 1484.246338 1482.332886 1475.676392 1462.766724 1448.150146 1431.93335 1431.806396 1440.466553 1445.053467 1443.91748 1435.750854 1424.543457 1416.659546 1407.712891 1401.236328 1392.27124 1397.276245 1396.161133 1404.670776 1403.219727 1384.189575 1379.14563 1387.27124 1390.903442 1391.744263 1391.239746 1386.638794 1379.109985 1366.479736 1354.629639 1339.358276 1356.691406 1373.257202 1380.550293 1382.972168 1383.405151 1390.743774 1404.439697 1417.916504 1422.623535 1425.657227 1424.794922 1423.525757 1421.800171 1420.06189 1418.398071 1416.427124 1413.749512 1410.658691 1406.209106 1401.802246 1398.863159 1394.22583 1389.840088 1387.294434 1384.354736 1381.918091 1380.879272 1380.449219 1379.261841 1376.053223 1372.266479 1368.76709 1363.335083 1353.405396 1344.593384 1352.104492 1356.934937 1357.886719 1355.505859 1350.035645 1344.637085 1342.157959 1338.273682 1333.383911 1329.866699 1328.936401 1322.990845 1319.637695 1315.293213 1306.474365 1296.489624 1278.850098 1280.097778 1296.637817 1305.069946 1308.78833 1316.756592 1319.528198 1327.422363 1329.172119 1327.956665 1324.619629 1320.237061 1319.287476 1317.684326 1318.091919 1328.280762 1339.031738 1345.378052 1349.007568 1349.016724 1347.714355 1346.729126 1348.579224 1352.912231 1354.80896 1349.290649 1343.133911 1338.083618 1332.660645 +1640.70459 1649.376831 1662.344727 1671.66748 1680.155518 1681.26355 1680.378174 1681.853516 1678.91394 1674.085693 1670.124146 1664.716797 1657.546875 1649.751465 1638.612305 1637.610596 1645.719971 1647.108521 1644.361938 1639.762329 1633.737061 1624.033447 1619.393799 1619.756958 1622.551636 1628.146362 1631.295776 1633.284058 1642.882935 1648.028442 1655.930542 1665.855957 1675.764404 1683.490356 1685.640381 1683.203857 1672.822266 1667.987671 1675.275635 1673.06311 1662.765503 1667.588013 1678.212036 1691.341675 1700.004028 1706.916504 1711.414673 1717.23584 1721.263428 1722.791992 1722.659058 1723.295288 1725.701294 1727.341919 1725.104736 1720.057495 1705.621216 1695.870972 1684.825439 1679.521851 1674.341675 1660.520142 1659.144531 1677.652466 1685.065552 1688.376953 1689.84314 1691.88855 1696.79541 1701.147217 1705.337769 1704.480591 1693.616455 1684.470703 1675.395508 1665.277954 1658.203247 1648.52124 1638.832642 1623.633789 1614.27356 1604.089966 1591.107422 1581.901733 1575.407104 1566.490845 1555.780884 1546.539551 1569.184204 1593.086426 1613.929199 1635.670532 1650.707153 1668.434692 1676.191284 1669.311035 1652.445557 1633.130005 1618.910645 1605.718384 1578.720947 1556.66748 1555.591431 1569.437622 1580.192139 1587.127441 1593.694702 1594.504028 1597.352417 1597.817749 1590.972412 1576.91333 1559.10437 1534.084961 1518.836426 1507.818359 1497.756226 1486.898193 1480.569946 1472.593994 1468.27124 1466.503662 1464.133423 1457.322266 1449.764893 1444.723022 1439.306885 1431.731934 1426.475342 1424.683838 1426.513672 1437.781738 1446.081055 1454.726562 1463.827026 1465.115479 1464.278198 1472.951904 1483.70459 1495.854126 1510.028687 1521.58374 1525.797363 1521.213989 1515.515625 1506.565552 1503.450928 1505.980347 1509.537598 1523.044189 1527.79895 1531.469238 1536.22644 1544.706421 1549.832031 1555.340576 1561.469482 1565.12854 1567.285156 1567.603638 1565.455566 1569.508545 1581.998535 1594.696899 1613.657227 1626.009644 1634.338623 1635.521118 1635.157837 1635.171875 1635.820923 1636.85083 1638.179688 1640.156006 1643.473999 1647.039673 1648.480347 1648.953125 1649.7323 1649.948608 1650.329712 1650.200928 1649.980347 1647.618896 1642.753296 1638.344849 1635.802734 1630.841675 1626.653198 1624.878662 1623.751831 1621.03833 1614.97522 1611.08728 1606.053711 1601.025024 1591.374512 1582.091309 1575.076294 1571.572021 1566.564331 1561.949585 1558.332764 1552.017334 1548.547363 1548.12207 1548.918945 1550.534912 1551.196045 1548.497437 1538.822876 1553.181885 1561.20813 1570.08606 1575.731689 1576.044922 1569.557495 1560.356934 1554.35144 1549.077026 1549.428467 1559.99707 1568.708618 1574.815552 1576.837769 1577.56189 1577.231323 1574.53772 1565.39624 1559.611572 1556.709839 1574.098877 1587.629395 1578.575806 1554.927612 1539.854248 1528.338867 1518.953003 1511.175537 1510.889526 1512.039551 1511.510132 1508.865723 1503.256714 1496.011475 1485.778198 1480.304932 1480.558472 1483.583374 1487.494141 1497.234131 1509.052124 1518.187256 1525.915771 1529.535278 1529.018921 1522.760742 1506.172974 1493.576782 1481.976196 1466.877319 1454.338257 1445.584351 1449.893555 1457.747437 1463.778931 1465.244263 1474.276611 1477.584961 1477.628052 1473.517334 1471.280884 1469.293579 1471.767334 1475.915283 1477.504639 1478.557251 1481.269775 1483.491211 1485.628906 1490.674683 1494.858887 1495.419189 1495.194946 1495.147095 1494.095215 1498.988647 1504.063232 1509.10144 1510.95752 1511.074707 1513.299561 1521.375854 1526.716431 1525.988892 1511.394775 1499.902954 1487.358643 1502.760132 1517.19043 1522.041504 1523.542236 1518.901855 1508.696777 1492.690063 1479.856323 1469.724243 1462.050537 1453.609741 1447.996338 1441.461304 1438.093994 1445.643921 1464.081543 1474.411499 1474.186157 1466.339111 1449.9729 1436.818359 1428.839355 1425.807007 1427.925171 1438.89856 1438.770752 1424.501953 1420.580078 1427.643677 1439.846924 1450.366089 1461.112915 1468.670288 1490.61731 1511.344849 1532.639893 1539.502686 1533.155518 1520.92395 1517.781738 1512.71875 1522.111206 1538.167725 1555.390991 1566.412476 1575.427124 1582.589355 1590.69873 1598.382935 1601.371216 1602.639038 1604.574951 1605.121094 1604.877197 1603.450317 1600.095093 1594.994507 1587.487427 1578.315796 1569.593506 1560.142456 1554.579712 1551.922729 1545.463501 1536.250854 1522.585815 1510.190186 1514.548706 1520.127808 1522.079102 1520.672607 1517.46228 1512.111206 1510.640137 1510.913452 1515.919067 1524.522461 1538.731689 1544.902588 1536.015625 1528.88208 1522.762207 1517.803223 1512.253418 1504.489014 1500.064453 1496.996094 1493.7052 1489.696411 1486.387085 1482.710083 1479.449097 1475.721191 1470.232422 1465.18689 1460.820923 1456.004883 1454.093262 1454.154663 1453.682861 1453.069702 1451.056763 1447.145264 1443.070435 1440.917358 1440.375366 1439.867798 1437.825562 1434.562622 1430.921753 1426.901611 1421.963013 1414.492065 1406.100708 1399.228882 1396.191772 1396.767212 1397.987061 1400.349854 1403.454468 1410.334717 1416.872559 1422.542969 1428.553101 1436.604004 1443.960938 1450.437988 1456.331909 1461.609619 1463.751953 1460.764648 1462.272461 1475.631226 1488.629028 1497.437622 1505.898071 1513.686157 1521.043823 1527.611206 1531.003906 1531.464966 1513.394531 1488.343994 1465.073486 1448.473633 1428.785767 1411.928345 1401.067871 1388.738037 1379.074341 1366.067383 1348.113281 1329.883423 1319.934204 1313.396362 1311.839844 1311.810669 1312.656494 1316.292114 1329.849609 1349.342773 1370.635254 1385.126831 1385.577759 1385.256714 1374.493896 1349.973389 1342.416138 1360.298218 1374.80835 1389.064209 1412.115112 1428.010986 1440.604614 1453.455933 1444.003174 1452.771118 1464.411865 1483.956909 1506.52478 1515.14624 1516.358398 1515.486572 1523.450195 1531.635132 1538.098633 1541.088623 1541.098511 1540.194946 1535.642334 1528.740845 1521.619995 1513.365723 1510.460938 1507.143555 1504.971924 1504.623779 1503.764404 1499.070801 1490.632935 1478.824951 1476.040527 1471.912354 1470.924561 1464.047485 1453.927002 1439.237183 1435.047119 1438.919189 1451.669556 1460.451782 1457.845337 1450.73938 1439.296021 1425.500732 1415.915527 1410.399658 1404.773438 1416.102539 1420.3302 1416.603394 1407.245972 1388.467407 1394.970825 1401.36377 1404.189575 1402.137939 1396.622192 1389.599854 1378.572754 1366.670654 1351.440796 1346.349609 1365.586792 1382.821411 1393.540894 1401.855347 1406.672607 1406.473389 1401.696899 1415.200195 1423.062012 1429.131226 1428.434204 1426.643921 1424.810059 1422.650635 1420.375366 1417.770508 1415.06543 1411.374146 1406.423096 1402.176514 1399.364868 1396.019043 1392.907104 1390.58606 1387.940186 1385.501099 1383.422852 1381.871094 1380.194946 1377.046753 1371.842285 1368.788208 1360.394897 1347.253296 1353.870728 1363.379883 1367.280273 1363.745117 1357.882568 1352.55249 1348.187622 1344.530762 1340.085938 1337.070923 1334.572021 1331.9375 1327.288574 1322.473999 1317.102417 1306.604248 1292.156006 1283.141113 1292.899292 1293.842651 1305.849365 1311.332642 1318.747681 1328.621338 1331.766479 1333.437744 1333.204834 1331.525269 1327.824219 1326.453247 1326.281128 1325.692139 1327.991089 1339.512329 1348.533936 1354.680054 1352.904053 1350.831787 1349.596191 1349.848755 1351.213257 1353.001587 1350.006714 1344.321533 1341.240845 1335.984985 +1643.472656 1650.859863 1663.644165 1673.194702 1681.350952 1684.707886 1684.717773 1685.114136 1684.555176 1680.554443 1676.507324 1673.187744 1668.732788 1658.30188 1646.110718 1648.952637 1656.3479 1658.929688 1656.505981 1650.382568 1643.537354 1636.283325 1626.790527 1620.798218 1620.549438 1623.237915 1627.709839 1634.0448 1643.451416 1651.383057 1659.673218 1668.249878 1681.952881 1687.117554 1688.859131 1687.874634 1678.55603 1674.377319 1685.597778 1686.819092 1679.978149 1670.784302 1669.844482 1680.901123 1690.975464 1699.295532 1707.864746 1714.376221 1720.2052 1722.909668 1723.773193 1726.742065 1731.800659 1732.138794 1727.657837 1722.231812 1711.692871 1702.829224 1693.407104 1687.649048 1681.728882 1670.79126 1663.148071 1679.419434 1686.977905 1692.050049 1695.802368 1698.546875 1701.489868 1704.874756 1708.504272 1696.809814 1686.116089 1671.116089 1661.416626 1650.31189 1645.600586 1638.576904 1632.237305 1620.526611 1610.443359 1599.533325 1586.364746 1580.831909 1575.493652 1567.566895 1558.219849 1548.634033 1559.557251 1585.832397 1609.320679 1630.855103 1643.832031 1666.098267 1675.99353 1673.211304 1653.525635 1634.484985 1616.749878 1600.493164 1572.859375 1567.998535 1562.480835 1582.223877 1597.83313 1608.578247 1611.404907 1611.673584 1613.612183 1608.530518 1594.27002 1577.989624 1556.523193 1530.447144 1522.167603 1514.262695 1507.446533 1500.856445 1494.685181 1489.862427 1485.510498 1479.359131 1473.928345 1466.947876 1453.969238 1447.266968 1441.910645 1436.954468 1431.527588 1428.043091 1424.721924 1427.604736 1439.059692 1446.900269 1452.261353 1456.746582 1461.936401 1470.288696 1481.004028 1493.085327 1505.384644 1516.817261 1528.136963 1532.447998 1527.555664 1521.757202 1511.302979 1508.87146 1507.692871 1513.206909 1524.318604 1528.783325 1533.891846 1539.190186 1544.039551 1549.227051 1555.160767 1559.54895 1561.289307 1560.602173 1558.2323 1569.63501 1585.447388 1595.411377 1614.924438 1634.327271 1640.373047 1639.288818 1638.43042 1638.192749 1638.349243 1639.161499 1640.587769 1643.15564 1646.345947 1648.47937 1649.109497 1649.702148 1649.957886 1650.174805 1650.339478 1649.744995 1647.68457 1643.150269 1637.66394 1632.819946 1624.765381 1620.924561 1619.708862 1617.748657 1615.071899 1613.192749 1613.193726 1612.051636 1608.845337 1602.875977 1595.969238 1586.441528 1579.983032 1574.502075 1568.455933 1563.81604 1558.978638 1551.908447 1548.345825 1550.468628 1552.727417 1553.965454 1554.348633 1552.357544 1541.580322 1552.723389 1561.459839 1569.175659 1574.900024 1576.544312 1574.521973 1563.372559 1556.220459 1549.345093 1548.423218 1558.268677 1569.023804 1575.951416 1577.969971 1578.56604 1578.088623 1575.705811 1569.806152 1563.186768 1559.700928 1574.220337 1587.09729 1585.760498 1562.362793 1549.08374 1537.903687 1527.381348 1523.898926 1510.839844 1504.022705 1498.032837 1496.396606 1492.336548 1486.961426 1483.82605 1482.946167 1485.12915 1490.705322 1502.574219 1517.021973 1524.407593 1530.781006 1536.630615 1536.182129 1532.394531 1524.174072 1505.689453 1491.84375 1478.143066 1462.765503 1451.012695 1447.054688 1451.764526 1462.772217 1467.055664 1470.606812 1474.077881 1477.225464 1478.898193 1478.317627 1478.071899 1477.203857 1478.72644 1482.722778 1485.58374 1487.070312 1487.025269 1489.134888 1493.10022 1497.167603 1501.01062 1499.255371 1492.879761 1488.826416 1490.474854 1503.980835 1512.098877 1515.507568 1516.567993 1516.828613 1518.856079 1522.683594 1525.812256 1523.206055 1505.199341 1492.828979 1484.96228 1488.119019 1496.394287 1502.796387 1503.532104 1497.881226 1489.216309 1475.878052 1466.659058 1459.083618 1452.888062 1447.592407 1444.556519 1441.817383 1448.623901 1466.615112 1485.917603 1492.164307 1487.037842 1475.619141 1458.545654 1445.095337 1437.488281 1428.058472 1424.576904 1424.891235 1423.300537 1422.536743 1428.622314 1434.074951 1441.306885 1464.606812 1474.089355 1486.186646 1499.32959 1521.61499 1540.009033 1551.802124 1550.14856 1540.53833 1537.959717 1535.726318 1531.054199 1532.712036 1552.28064 1565.522461 1575.230225 1581.689331 1589.203735 1597.111206 1603.55188 1609.591064 1611.543457 1612.320312 1610.886108 1607.036255 1599.759033 1595.250854 1589.753906 1584.086182 1576.870483 1569.434814 1561.901001 1553.859863 1548.318848 1536.859985 1523.738159 1519.840698 1527.070312 1529.854004 1530.470337 1529.41333 1526.653442 1520.244873 1517.26062 1517.532837 1521.241089 1532.477173 1548.312134 1552.901367 1547.954834 1538.096558 1528.935669 1522.192017 1516.439209 1510.596436 1509.061035 1509.729492 1500.918701 1496.415161 1491.322266 1486.665771 1482.090698 1477.502563 1471.551514 1465.912842 1461.950562 1459.05127 1456.606812 1455.145264 1454.255249 1453.05835 1450.401733 1446.753418 1442.950684 1439.123657 1437.702393 1434.963501 1430.920288 1428.263672 1425.696655 1421.916748 1416.786987 1408.914917 1401.190918 1397.608154 1397.933105 1398.859375 1400.649414 1403.215942 1413.336548 1417.791382 1421.570679 1426.822876 1435.257202 1444.734375 1454.079956 1462.274292 1468.359985 1472.951294 1472.78772 1470.628174 1468.963623 1477.975708 1492.008057 1504.021606 1515.299805 1524.62854 1532.626709 1539.010498 1540.485962 1530.160767 1508.491699 1486.949951 1461.313232 1431.977783 1414.383423 1399.22998 1387.641724 1380.032593 1366.286865 1349.017456 1334.274292 1320.724609 1312.986328 1311.997559 1312.006958 1312.932739 1315.376953 1327.142944 1348.571533 1363.724609 1376.18811 1398.46814 1403.960571 1393.987427 1386.826538 1369.248657 1360.652466 1356.252563 1350.294189 1366.001221 1397.27832 1413.519287 1433.293945 1443.372559 1436.174683 1446.8125 1457.415894 1471.450684 1502.665283 1515.749756 1508.724609 1501.175049 1515.691895 1527.014404 1537.92981 1546.54248 1551.527588 1548.413818 1542.947754 1538.183105 1530.233521 1522.584961 1516.869873 1511.76709 1508.360718 1504.182861 1497.71814 1485.998169 1475.692139 1466.326172 1462.221191 1454.103271 1450.178589 1441.252441 1435.042236 1435.751953 1442.132446 1450.61145 1462.001709 1471.431274 1464.501221 1451.787109 1439.247803 1427.664062 1423.245972 1415.114502 1418.046631 1437.589844 1440.022339 1424.043091 1410.885742 1404.930664 1413.721436 1421.302124 1418.338867 1407.918945 1399.787598 1392.328735 1379.910889 1364.401001 1351.358398 1356.420532 1363.824707 1382.994751 1397.360596 1408.68811 1415.301514 1420.322388 1421.884888 1419.848755 1425.241333 1428.859619 1432.46521 1430.777222 1427.513916 1424.809692 1422.210938 1419.320068 1416.338257 1411.558838 1406.974976 1401.842285 1400.470337 1399.574585 1396.666748 1393.676514 1390.670532 1387.631958 1384.140015 1381.523193 1379.705444 1376.126587 1370.19043 1365.220093 1351.470215 1352.907593 1363.826172 1370.120972 1368.611938 1365.049927 1359.485962 1354.453735 1351.283569 1347.223145 1343.148438 1340.495239 1337.013306 1332.92749 1328.328979 1322.133911 1316.096924 1304.175293 1288.111206 1299.91687 1308.210449 1306.237549 1303.052612 1310.278931 1316.124146 1326.513184 1332.120361 1335.375 1336.084351 1335.058716 1333.167725 1332.943726 1333.311646 1332.191895 1329.631592 1337.958984 1346.789917 1354.928101 1354.149536 1352.364258 1350.98584 1350.447266 1350.202271 1349.621826 1347.849487 1345.390869 1342.910034 1340.669678 +1644.585449 1650.674683 1662.495972 1671.330933 1676.926514 1681.371704 1684.312988 1685.300659 1685.484253 1684.308716 1680.950806 1677.991089 1675.02356 1670.961914 1659.226685 1655.019653 1661.437134 1663.202881 1662.067505 1659.03064 1651.472168 1643.369629 1634.724609 1627.559326 1622.622925 1620.587769 1624.392212 1631.128906 1641.080811 1650.65979 1659.703125 1670.261108 1683.148682 1688.057861 1692.2052 1693.560181 1685.493896 1688.219238 1695.585083 1695.697632 1690.191162 1682.132568 1673.905151 1676.966309 1682.393921 1691.845215 1702.805786 1709.633789 1715.638428 1719.367798 1721.684814 1725.043457 1729.324707 1732.188843 1728.823242 1724.573486 1720.855713 1711.999512 1701.908569 1694.243042 1687.101929 1676.881592 1668.534668 1681.044067 1688.887817 1694.522827 1698.824585 1702.053467 1704.864258 1708.075073 1701.633057 1684.256714 1673.368042 1661.604004 1649.717529 1639.903931 1632.381714 1628.114502 1625.010742 1615.034546 1604.692505 1595.092041 1586.726074 1580.062988 1574.964844 1566.659668 1558.0177 1549.4646 1560.544556 1581.184448 1601.724365 1620.80603 1641.501953 1661.557129 1673.142456 1674.147949 1652.570679 1631.0802 1612.998657 1602.388428 1599.509277 1595.937622 1582.66748 1599.061401 1613.824707 1623.591797 1626.962036 1626.336914 1624.578979 1614.362183 1594.512817 1578.209839 1565.772339 1549.081909 1538.312378 1529.19519 1523.036377 1516.475342 1506.753662 1498.495972 1491.253662 1484.119751 1475.194092 1467.409302 1454.919434 1448.018799 1442.844727 1438.271606 1435.557617 1431.312866 1427.621216 1425.924194 1433.858765 1442.307861 1449.678589 1454.197388 1459.643677 1463.556396 1477.430786 1487.782593 1501.177979 1510.435425 1523.005737 1536.211548 1542.307007 1543.57666 1538.527466 1529.164185 1521.946411 1511.784058 1518.36499 1526.207397 1530.118164 1534.629395 1539.466431 1544.618774 1550.394043 1552.736206 1551.321655 1548.225708 1559.157227 1571.273193 1585.944946 1594.552002 1610.062378 1640.683228 1645.468262 1641.697998 1640.300537 1639.749756 1639.633301 1639.952515 1640.994507 1643.152588 1645.414917 1647.490479 1648.740234 1649.057373 1648.629395 1648.06604 1646.448242 1644.227783 1640.710571 1636.562378 1630.749878 1622.838745 1614.541626 1609.231567 1606.219727 1604.362549 1603.709839 1603.638306 1605.317383 1611.311401 1610.242065 1603.130737 1596.944458 1589.776123 1584.005615 1575.788452 1568.216675 1561.552368 1559.290161 1555.954468 1556.57605 1558.161499 1558.914185 1558.718628 1556.755127 1553.40564 1547.680298 1550.187378 1561.543335 1568.62207 1574.473633 1576.305542 1576.411987 1567.380249 1558.36853 1551.593262 1547.518677 1557.303101 1568.88208 1576.039551 1578.856079 1579.952271 1579.740479 1576.64502 1571.15271 1565.973633 1561.99939 1574.494873 1586.59082 1590.151855 1573.958984 1554.790771 1541.690796 1533.238892 1527.540649 1515.285156 1505.042847 1499.119873 1496.336304 1490.084961 1486.583008 1484.812988 1486.957397 1493.503418 1507.508301 1519.75 1529.660889 1537.115601 1542.506226 1542.779297 1540.424561 1533.484985 1521.78833 1502.968628 1486.967163 1471.006226 1457.900757 1451.21228 1453.38208 1454.199829 1460.262939 1464.72937 1473.844116 1477.500977 1479.625 1481.250244 1481.830811 1482.011719 1482.230957 1484.165283 1488.277832 1492.714355 1495.775635 1496.161743 1498.618896 1502.313843 1502.530884 1503.113892 1501.549805 1488.494873 1485.821899 1495.157959 1516.308228 1524.42981 1522.783813 1522.130249 1522.76001 1525.135498 1528.354248 1529.762817 1526.180054 1511.623657 1496.123657 1484.322266 1481.07959 1476.53833 1482.564087 1486.712402 1481.573608 1470.815063 1462.416138 1456.950439 1451.324219 1447.909302 1449.439575 1448.299316 1446.793945 1458.675659 1480.051392 1499.400513 1500.839844 1491.993408 1477.372803 1461.453369 1449.588989 1442.260254 1431.687744 1425.838745 1424.419922 1425.328247 1430.645996 1446.17688 1447.10437 1444.782227 1459.111572 1474.787598 1491.62439 1509.220337 1525.324219 1536.832031 1549.964355 1553.631958 1552.723389 1550.984131 1550.994141 1550.070312 1546.433838 1546.350708 1562.691528 1574.831909 1581.08606 1588.361572 1596.935669 1603.50415 1609.494141 1612.231567 1613.184692 1613.08667 1611.195557 1606.517212 1599.929077 1594.173218 1588.30603 1578.818726 1570.633911 1561.311646 1553.390015 1542.826416 1531.103027 1524.215576 1529.71228 1532.926147 1535.677002 1537.196411 1536.622192 1534.229248 1528.423096 1523.997437 1522.769043 1527.338379 1540.886108 1552.06665 1556.693481 1551.186035 1543.143066 1535.793579 1526.064697 1519.831177 1513.330078 1510.329956 1513.912842 1512.178345 1502.593384 1495.873413 1490.038574 1484.318115 1477.945312 1471.926147 1465.412354 1462.008179 1459.345459 1457.009888 1455.380981 1453.995605 1452.342651 1449.529053 1445.985229 1442.458496 1438.447998 1433.845459 1429.324463 1424.711548 1422.52356 1420.291138 1417.007812 1411.821289 1403.304077 1399.291992 1399.154541 1399.630493 1400.981445 1403.265381 1413.837769 1419.607422 1423.271606 1425.829956 1431.703491 1440.869751 1452.329956 1463.69043 1472.984863 1479.553589 1482.311035 1481.752808 1479.191772 1475.342041 1479.722046 1495.303101 1510.501709 1523.002808 1535.12085 1543.306763 1548.508789 1536.387207 1521.431396 1504.163818 1480.631592 1457.032837 1424.634521 1408.590576 1391.327637 1379.351318 1362.159424 1349.775757 1333.674561 1322.567017 1313.457275 1312.108765 1313.130615 1313.300903 1316.984009 1323.809326 1333.799805 1356.806274 1371.878174 1384.058105 1400.852051 1409.687988 1403.86499 1391.119629 1385.02417 1377.549072 1374.011353 1372.314941 1367.239624 1388.775146 1407.851562 1429.266724 1435.678711 1425.695923 1436.981323 1451.250732 1468.18811 1490.930664 1505.230347 1496.916992 1490.491089 1507.175049 1519.546509 1527.049316 1533.996216 1541.501953 1550.479126 1550.584595 1544.173828 1536.733643 1527.784912 1520.948853 1515.213989 1507.270874 1497.004395 1485.692139 1479.83606 1465.72229 1459.922119 1460.662964 1461.030151 1456.880005 1450.905273 1444.01355 1437.582764 1452.200439 1465.247437 1476.844482 1479.621216 1467.609009 1456.699707 1444.917725 1435.485596 1429.636841 1421.581177 1431.305908 1454.858032 1449.012817 1436.355469 1433.66394 1427.82605 1431.542236 1429.459106 1414.113281 1407.007446 1399.366943 1391.738403 1379.63562 1363.066772 1359.716919 1372.381958 1379.524902 1377.210938 1393.131958 1409.817383 1422.440063 1430.888916 1434.780151 1434.810547 1433.738037 1437.174683 1438.119873 1436.47644 1431.373901 1426.671143 1423.888794 1420.728638 1416.683105 1413.835083 1412.576416 1407.996826 1405.202637 1403.225952 1400.917847 1396.974487 1392.463013 1388.334717 1384.068604 1379.330566 1376.133423 1371.01709 1365.640869 1354.411255 1353.584229 1361.458252 1369.490356 1373.83667 1370.529907 1365.21936 1361.589111 1357.79187 1354.950562 1351.469238 1346.781494 1342.932251 1338.114258 1333.182251 1327.959595 1321.275146 1312.396606 1298.875732 1298.520386 1307.264404 1316.381958 1317.974243 1311.38855 1312.47644 1321.031006 1330.492432 1334.400391 1338.647339 1339.271362 1338.948364 1338.959351 1339.639038 1340.31543 1340.262329 1338.356934 1339.583252 1342.729858 1351.466553 1354.415405 1353.473999 1351.836304 1350.833984 1349.810303 1348.602295 1347.155029 1345.503906 1344.082275 1341.860107 +1646.125 1649.265015 1659.813599 1668.115112 1673.251099 1677.687134 1681.489014 1683.824707 1685.975952 1686.349976 1684.044556 1681.347656 1678.876587 1676.109741 1671.810547 1658.214233 1664.587402 1667.119629 1666.604004 1663.61792 1657.861816 1649.791748 1641.405396 1633.572632 1627.951416 1622.428223 1621.314575 1630.710938 1638.872559 1647.466675 1657.766235 1667.176025 1681.003174 1688.567627 1693.575073 1697.316162 1696.219849 1697.835693 1700.209473 1700.257202 1697.568115 1690.172241 1679.800537 1677.947876 1680.583374 1692.947876 1699.944702 1704.884766 1709.407715 1713.265259 1717.42688 1722.009521 1726.680664 1728.392456 1726.206055 1723.469116 1720.732056 1714.886963 1706.946899 1698.995728 1689.828003 1680.485107 1673.31604 1681.568115 1690.162964 1696.541138 1701.469238 1705.768555 1708.049438 1709.615601 1693.30127 1673.597778 1661.307861 1648.463379 1636.920654 1629.05542 1619.270508 1617.75415 1614.139404 1607.057251 1599.247437 1589.807251 1583.090454 1577.713501 1572.110107 1563.994995 1556.483398 1550.136108 1567.747314 1589.104004 1608.009277 1625.890015 1644.244385 1662.223999 1671.438843 1672.009766 1649.483032 1639.246948 1631.390991 1617.478149 1617.286255 1617.3302 1603.984863 1612.342285 1624.387573 1631.29248 1643.361816 1651.031128 1643.639771 1619.449463 1601.657837 1581.914307 1571.781738 1560.281128 1547.981812 1537.760132 1529.575317 1520.125732 1510.151245 1501.0448 1492.445923 1482.891235 1472.844849 1463.868042 1453.112549 1450.278809 1447.068359 1442.764648 1439.600708 1434.841553 1430.159058 1426.164795 1431.105225 1444.938477 1453.625732 1457.567871 1461.862183 1465.253052 1474.745483 1485.189087 1498.854248 1511.414307 1518.615967 1524.459473 1538.169312 1550.593018 1555.137817 1550.575439 1541.175049 1524.344971 1518.202148 1521.578125 1526.311646 1530.646973 1534.492554 1536.960815 1538.769043 1539.572144 1545.323364 1549.651001 1560.152466 1570.885742 1584.273315 1592.010498 1602.981323 1624.937988 1641.640015 1642.440918 1641.704834 1640.329224 1639.649658 1639.600586 1640.341797 1641.282471 1642.281982 1643.596802 1644.9375 1644.62085 1643.164917 1640.816406 1637.832642 1634.610596 1631.461548 1627.77478 1622.056152 1614.315674 1606.047974 1597.88562 1595.077026 1594.206787 1593.891602 1593.24939 1594.07312 1604.886719 1607.356934 1600.871094 1594.433838 1588.813354 1582.792358 1574.210327 1564.275757 1559.867798 1559.309082 1560.66333 1563.816162 1565.236206 1565.461182 1563.707275 1559.839478 1556.331055 1551.90332 1546.277344 1561.182373 1568.111084 1573.815063 1576.268433 1576.538086 1570.732056 1560.591187 1556.297363 1549.324585 1554.898071 1568.699585 1575.799316 1579.563843 1582.119263 1582.586548 1579.822388 1574.815552 1570.967773 1572.520264 1579.636963 1584.136841 1583.962402 1571.002441 1555.538452 1540.329102 1529.864136 1521.419556 1509.251587 1504.953247 1500.911621 1504.627686 1501.730957 1488.839233 1487.631104 1494.520752 1503.996826 1519.250854 1529.436157 1537.273926 1546.748047 1550.86145 1546.11499 1540.520996 1529.435425 1515.019531 1496.620361 1477.379395 1462.855225 1460.296753 1463.900146 1463.991577 1464.220581 1466.064453 1465.999512 1474.852661 1478.40271 1481.895386 1484.527954 1485.103271 1485.45874 1485.383789 1486.24231 1491.811035 1499.637695 1502.786377 1502.783325 1503.364136 1503.93689 1504.287109 1504.361694 1499.783691 1488.485229 1487.157593 1495.450317 1515.885986 1532.244019 1541.888794 1538.38855 1534.221069 1534.864136 1537.012695 1536.855591 1530.254395 1521.037476 1506.290405 1494.232422 1489.485107 1477.182251 1467.482666 1465.800903 1462.528564 1458.811523 1453.980103 1449.487549 1447.024902 1448.101929 1453.157959 1452.929565 1449.550903 1466.331177 1485.797241 1503.585449 1504.92981 1493.861328 1478.488525 1466.535156 1457.47998 1446.552246 1438.660278 1440.198853 1435.420288 1443.36377 1448.120972 1459.690552 1461.569092 1450.755493 1453.609619 1472.041016 1490.349731 1503.705322 1517.148682 1527.797241 1535.921143 1549.979126 1559.226685 1563.800293 1566.609131 1564.198608 1560.976074 1560.109985 1560.984253 1574.281982 1580.758789 1588.460449 1597.284912 1602.622681 1607.182007 1610.915161 1612.917847 1613.429443 1613.644897 1611.762085 1604.275879 1595.342529 1585.365845 1575.82312 1569.062134 1559.130005 1548.968628 1537.356323 1533.522461 1534.104126 1540.37793 1542.125244 1546.110474 1547.928711 1546.799927 1543.494507 1538.039429 1534.567871 1531.801514 1534.687134 1547.977051 1559.114258 1562.765137 1555.442871 1544.90332 1535.660522 1527.813599 1521.156372 1514.040527 1503.292236 1506.209351 1508.368164 1503.764648 1498.75 1491.876099 1486.024658 1478.576904 1471.510986 1464.08728 1460.408081 1457.399536 1455.664795 1454.384766 1452.631348 1450.529175 1447.436768 1444.018311 1440.874878 1437.141846 1431.158936 1426.664795 1421.507446 1417.487305 1414.807251 1411.616821 1406.082764 1400.949951 1400.425293 1400.776855 1401.58313 1403.439087 1412.544067 1419.86084 1425.292114 1430.108887 1433.779663 1437.552002 1445.757446 1458.001709 1470.699097 1480.808228 1487.930908 1492.360596 1492.23999 1490.458252 1486.136475 1486.476562 1498.723511 1515.864624 1530.386353 1542.77124 1550.713257 1547.90979 1530.699341 1514.139648 1496.337769 1473.869629 1442.539795 1414.802612 1402.232544 1386.401489 1373.169678 1354.819092 1335.578247 1322.724731 1314.83667 1312.738892 1315.991577 1321.55481 1321.959473 1330.06189 1340.771973 1343.459839 1361.526245 1375.874878 1397.742676 1410.755371 1417.108521 1410.925659 1400.54834 1394.075073 1387.006226 1384.837769 1382.143921 1377.190918 1384.719116 1402.260376 1423.954102 1425.151611 1418.398804 1434.424683 1452.215942 1463.809937 1476.596436 1486.313232 1479.911011 1476.046875 1497.454834 1511.459961 1513.202026 1523.560913 1525.505615 1531.61853 1542.137329 1543.604492 1538.704712 1531.350708 1523.670166 1516.391724 1508.400879 1501.983521 1499.379883 1492.109741 1475.77002 1469.271729 1476.113159 1474.339355 1470.925537 1468.012817 1457.769043 1446.375366 1457.197144 1474.932251 1488.921753 1484.061157 1474.054932 1463.813477 1450.822266 1437.702393 1432.104492 1425.49231 1439.491089 1464.868042 1456.249512 1446.883545 1439.780884 1433.082764 1429.373047 1420.404419 1410.350708 1403.904297 1395.831421 1386.174072 1371.303101 1364.286621 1370.447388 1384.389404 1391.244019 1392.860596 1391.86731 1405.318604 1425.480469 1436.856567 1442.216187 1444.343628 1444.84314 1444.323853 1443.624023 1441.34436 1436.753418 1430.221558 1426.347168 1423.177002 1419.422974 1417.187866 1416.689819 1416.369507 1412.899536 1408.150269 1404.905518 1400.837646 1394.618286 1390.058838 1384.897705 1378.256226 1372.441772 1364.163574 1359.599121 1355.427246 1360.709473 1367.130493 1375.75708 1378.657837 1373.098633 1366.99646 1362.956543 1359.43457 1356.571045 1353.497192 1347.741943 1343.633667 1338.052612 1331.290039 1325.964233 1319.316162 1309.368164 1301.679199 1310.12561 1314.873535 1326.691162 1329.629883 1322.597656 1317.450562 1317.341187 1331.845215 1339.418335 1342.627686 1343.348877 1343.447998 1343.812012 1345.532227 1346.721436 1346.907593 1345.577026 1342.230469 1340.634399 1346.768188 1353.521362 1354.200806 1352.77832 1351.550293 1349.930054 1348.058472 1346.405029 1344.929077 1343.524414 1341.532593 +1650.29834 1649.431641 1657.771973 1664.21875 1669.530762 1674.070801 1678.429321 1682.00293 1685.021729 1687.954956 1689.579102 1686.507812 1682.590576 1680.223145 1677.281616 1671.281006 1668.665283 1671.550293 1671.601562 1668.968384 1662.450439 1655.002441 1648.267334 1640.553223 1634.750854 1628.908569 1623.389526 1628.541016 1636.957642 1643.848755 1653.122314 1662.074341 1670.133667 1685.432129 1695.887451 1698.437012 1700.389038 1702.35791 1704.365234 1705.426147 1702.871582 1698.101562 1685.786255 1681.463867 1680.726929 1687.456421 1695.762573 1698.789917 1701.202515 1706.232544 1713.981201 1720.328491 1724.138794 1724.89856 1723.611816 1721.362793 1718.425293 1714.241211 1708.85791 1700.31958 1692.745361 1685.350952 1687.221558 1687.726685 1692.748413 1698.160767 1704.329102 1708.744385 1710.018799 1703.042358 1686.493774 1665.778076 1651.363037 1636.602173 1625.889526 1618.386719 1609.948242 1607.410156 1600.777222 1595.799072 1589.009644 1583.195923 1578.578491 1571.727661 1565.160645 1559.557251 1554.451172 1559.363525 1581.641479 1593.86499 1613.670532 1633.181519 1647.515137 1663.503906 1673.834473 1676.05188 1663.877075 1657.655396 1646.978882 1625.153931 1629.536377 1629.872681 1616.996948 1621.370361 1630.534912 1642.72583 1657.947632 1658.071411 1644.257446 1621.352905 1606.965454 1584.821655 1575.260376 1563.460571 1549.125977 1538.749512 1529.112183 1519.511108 1509.137451 1498.647705 1490.399902 1479.27478 1471.583618 1463.780151 1462.12561 1455.810547 1451.106567 1446.367432 1441.979492 1437.425049 1432.345947 1426.927734 1431.237793 1444.291504 1453.435303 1461.859253 1473.920044 1481.123413 1490.712402 1495.631592 1504.956543 1513.41394 1514.630005 1512.914551 1529.3927 1546.234985 1557.651123 1563.532104 1557.648071 1541.946289 1531.877075 1525.976562 1523.691406 1528.156372 1533.337891 1535.619385 1536.764404 1539.339111 1543.603516 1549.938354 1560.057739 1570.130493 1580.980591 1589.398193 1597.343872 1611.827148 1627.132935 1642.979614 1641.598022 1637.307007 1638.348755 1638.376343 1638.327271 1637.842407 1636.603882 1636.71936 1637.829346 1637.352173 1636.307251 1632.022949 1628.81604 1626.424561 1623.259277 1617.50769 1611.347534 1604.707397 1597.983398 1588.987305 1587.476929 1587.512207 1586.322144 1583.474609 1589.028198 1601.557861 1601.799194 1596.994507 1587.906494 1582.203491 1575.305664 1566.376221 1559.743164 1560.765869 1561.392334 1563.628052 1569.769165 1573.189575 1574.363159 1570.447021 1563.050781 1558.887207 1554.3125 1547.218872 1559.759766 1567.056641 1573.097412 1576.275269 1576.292725 1572.166748 1566.560791 1562.661377 1554.555298 1555.593628 1567.378296 1575.102539 1580.098999 1583.873291 1585.598145 1584.500122 1582.654785 1576.702759 1576.335571 1585.014648 1581.777466 1573.441895 1563.946411 1550.29248 1533.508423 1524.226807 1513.143799 1514.28894 1516.748535 1517.981934 1519.668823 1510.276733 1489.955444 1493.494263 1501.974365 1515.900757 1530.148193 1538.020142 1545.204224 1551.837769 1550.869385 1542.391235 1533.685425 1519.684448 1503.932251 1487.099365 1465.906006 1466.688843 1471.924316 1473.75769 1474.021973 1472.386719 1474.7229 1477.025635 1477.778687 1481.833862 1485.244385 1487.652222 1489.061035 1489.374512 1487.724609 1491.326172 1497.644897 1502.912231 1505.203125 1505.098755 1504.103394 1500.855225 1497.974487 1497.132324 1490.484497 1484.161743 1484.291138 1491.897095 1502.627441 1516.333618 1525.706909 1537.615234 1544.935913 1544.932251 1542.678833 1540.159546 1534.857178 1527.671387 1503.693481 1492.681152 1487.355957 1476.369141 1465.519653 1459.565918 1456.368408 1452.91748 1448.729614 1448.128174 1450.264282 1460.384644 1464.102173 1458.24585 1452.646973 1465.949707 1482.540771 1497.630005 1510.683228 1499.365112 1486.29126 1477.499023 1465.454224 1451.063843 1450.679688 1454.311157 1450.391235 1459.72583 1467.299072 1475.153687 1479.051025 1465.659912 1450.260132 1466.350464 1484.03418 1494.452271 1503.333496 1510.973999 1520.236816 1540.036377 1554.313599 1567.832642 1574.786743 1576.957397 1571.258423 1572.38855 1571.4375 1572.448975 1580.62207 1588.932251 1598.378296 1599.546997 1601.537109 1606.938477 1610.595947 1612.983887 1613.524292 1612.950195 1607.188843 1596.927856 1589.092529 1582.183716 1574.027466 1562.863892 1553.323242 1551.014282 1541.267212 1550.116211 1554.570312 1555.91333 1559.744385 1559.535645 1556.992554 1551.808472 1547.198364 1547.429688 1542.732788 1540.322754 1556.37085 1565.017822 1565.108643 1559.791992 1546.866943 1537.87085 1522.859497 1516.812256 1509.348999 1497.87439 1494.688721 1499.283691 1499.962158 1496.935425 1491.65271 1486.530762 1478.638916 1469.835205 1462.378174 1457.480835 1452.538818 1452.303223 1452.85022 1450.73999 1447.446289 1443.746338 1440.157593 1436.526611 1431.548218 1426.973877 1422.244995 1417.450317 1413.032837 1410.44397 1406.991943 1402.326416 1401.706299 1402.195435 1403.189087 1404.983643 1411.154053 1418.514404 1424.925537 1432.644531 1440.734253 1445.349731 1446.832764 1450.161499 1461.450195 1476.344604 1488.99646 1502.131104 1506.37085 1506.288696 1501.751099 1496.639038 1494.881348 1502.908569 1517.855591 1534.146606 1547.782837 1550.335571 1534.452881 1519.460938 1502.557129 1485.703247 1456.697144 1426.450317 1405.203491 1393.890259 1381.744873 1365.947754 1347.67688 1330.913208 1315.155884 1314.538818 1324.730591 1331.833496 1334.728638 1340.504639 1341.313354 1353.955811 1365.393066 1374.393921 1379.817993 1393.634644 1417.841431 1431.743774 1422.309692 1410.111084 1402.334717 1398.741333 1395.674194 1390.884155 1383.083008 1381.351685 1395.327271 1410.528076 1409.429565 1418.867676 1437.957642 1449.607788 1453.092407 1457.217529 1469.079346 1463.873901 1464.126099 1492.221191 1498.198486 1496.895996 1503.08374 1508.354126 1514.016968 1531.282104 1541.076904 1539.725342 1533.19104 1525.350708 1520.785522 1515.793091 1510.456665 1503.572998 1493.698608 1478.264038 1484.488037 1490.130005 1490.373169 1484.280273 1478.36499 1464.095581 1449.35144 1461.608276 1476.6427 1491.189575 1486.54895 1478.380981 1465.980225 1455.13501 1443.131958 1434.926147 1434.945068 1451.924316 1467.193848 1463.634155 1449.025391 1436.942383 1427.485107 1419.140259 1412.706421 1404.368286 1397.151733 1389.759644 1379.04834 1378.782837 1379.126709 1378.244873 1394.964233 1404.681519 1409.838257 1410.114868 1409.373901 1421.204834 1439.535034 1445.967896 1450.686523 1452.779419 1451.647827 1448.018311 1444.137451 1439.202271 1432.348511 1427.457153 1424.254028 1421.499268 1419.256592 1418.039673 1417.182617 1414.939087 1410.481323 1406.677002 1402.817383 1396.693481 1391.738525 1385.928711 1380.218384 1373.006104 1366.045288 1356.971558 1360.525635 1366.430054 1371.297119 1376.974121 1380.067261 1375.147583 1367.76123 1363.258179 1359.113403 1356.121338 1352.692139 1347.234253 1342.302734 1336.447388 1328.563232 1322.625244 1315.255127 1305.596802 1309.534668 1318.962646 1326.268921 1333.145874 1334.859375 1332.145874 1327.497437 1320.056885 1330.697266 1341.306885 1345.012329 1347.28125 1348.683716 1350.398804 1352.390991 1353.623779 1354.125 1352.938843 1349.477051 1346.604004 1349.750977 1353.40625 1355.082397 1353.876587 1351.942017 1349.754761 1347.379517 1344.747681 1342.783569 1341.612183 1337.744019 +1654.749878 1653.970337 1656.566528 1661.204102 1666.288208 1671.015015 1675.445312 1679.482056 1683.190186 1688.189087 1694.690552 1695.631836 1692.533081 1687.301025 1683.770508 1681.754639 1679.3125 1677.321533 1676.024536 1673.598022 1668.686523 1660.384644 1653.719238 1646.819824 1640.867188 1635.8302 1629.353638 1625.01355 1634.555054 1640.216187 1645.955078 1654.775635 1666.742676 1683.219116 1696.387573 1699.34375 1701.96521 1705.710083 1708.229614 1709.371948 1708.081543 1702.615112 1695.135864 1691.71875 1688.483154 1685.630127 1691.668823 1693.234863 1694.615112 1704.408081 1712.927124 1720.946411 1722.832153 1722.941528 1721.513428 1719.518921 1716.795532 1713.108887 1708.013794 1705.083984 1701.081055 1699.3927 1698.067871 1697.309937 1696.922729 1701.395508 1706.281738 1709.228149 1706.451416 1694.263306 1675.558228 1659.043701 1639.063354 1632.765015 1632.654663 1628.140015 1623.233276 1615.103516 1607.242065 1604.803711 1599.301514 1592.390259 1582.119751 1572.503906 1563.581665 1557.585815 1552.140503 1570.571045 1590.072632 1601.421875 1613.950806 1632.657715 1645.956299 1662.490601 1675.349487 1686.218506 1680.562378 1668.737793 1652.922485 1640.653076 1648.141235 1644.460571 1629.532593 1635.065674 1645.045044 1660.369629 1663.742188 1652.425659 1633.607422 1619.415283 1604.492554 1585.191284 1572.983154 1560.902466 1545.149292 1534.818237 1524.411377 1513.550049 1501.046143 1492.948364 1485.338867 1478.011719 1474.670166 1473.342773 1467.812744 1460.937622 1454.159424 1448.617065 1443.530273 1439.26123 1433.934448 1428.947388 1432.131714 1438.807373 1447.74353 1459.452881 1473.869385 1479.690063 1483.53064 1491.892944 1500.561401 1506.464966 1503.299072 1508.161255 1524.633179 1543.925049 1555.876221 1565.105103 1569.009644 1550.3927 1541.005859 1535.978394 1533.171875 1532.420166 1534.93103 1537.743286 1542.153442 1545.924438 1546.023315 1546.819458 1555.525513 1566.655762 1577.54187 1586.457764 1592.868286 1601.11145 1616.500732 1643.597656 1641.064819 1631.219604 1634.511597 1634.71814 1633.550903 1631.967407 1628.979858 1627.421997 1626.889648 1624.815552 1619.7146 1618.898071 1616.705688 1610.169434 1604.74646 1600.888428 1598.0177 1594.875244 1589.289551 1578.122314 1576.598267 1577.821533 1574.785522 1573.865967 1590.701538 1599.74646 1599.343262 1590.841675 1582.392212 1575.880127 1571.320557 1565.306763 1564.970947 1565.636963 1566.661621 1568.14978 1573.30835 1576.916138 1577.915405 1575.805054 1572.832764 1564.895142 1559.204224 1551.419922 1556.326904 1565.350342 1572.083984 1576.542603 1576.918335 1574.689331 1573.325073 1569.702759 1561.000244 1558.387573 1564.313843 1574.148804 1580.121216 1585.179077 1587.13916 1587.796265 1588.367554 1585.830078 1585.096313 1587.348511 1583.487061 1571.757324 1556.768433 1544.262207 1532.78479 1523.765991 1523.565674 1529.965942 1533.481323 1534.491333 1530.993164 1513.079224 1497.494995 1502.031006 1508.837891 1526.1604 1534.562744 1542.040649 1549.139771 1551.821655 1548.101685 1537.325562 1523.358521 1510.2771 1494.260132 1473.036011 1469.490845 1476.069214 1478.108643 1479.0271 1478.858276 1478.665894 1481.048096 1483.357666 1484.990723 1486.378906 1487.43457 1491.604736 1494.536133 1495.863037 1496.516357 1499.337036 1507.750366 1511.447632 1506.112671 1500.166748 1494.109009 1489.199341 1484.401245 1481.489624 1479.808228 1476.554932 1475.41333 1482.658813 1491.283203 1502.208618 1512.286255 1523.641235 1537.661011 1550.699219 1546.730713 1541.124023 1535.859131 1527.852783 1504.958496 1487.658203 1475.852051 1468.171387 1462.269897 1456.465088 1452.234619 1449.390015 1449.29541 1459.307739 1467.815186 1475.525879 1473.872681 1461.587891 1454.832275 1461.381592 1475.333252 1492.220703 1511.837769 1519.321167 1503.30127 1486.186523 1471.64502 1458.394287 1463.150879 1468.803955 1470.155396 1472.150879 1480.605591 1490.616455 1492.908203 1481.677612 1466.178711 1461.063232 1472.080933 1483.55957 1493.256226 1501.930542 1513.04541 1526.50647 1544.523071 1564.981323 1578.814819 1588.184204 1585.734985 1584.630249 1580.642212 1574.642578 1582.815796 1589.668335 1597.423584 1595.848022 1596.639648 1601.206665 1605.276123 1609.050415 1612.040405 1612.588013 1611.73291 1603.273193 1594.017212 1584.901611 1575.100952 1566.329346 1563.258057 1560.938721 1553.383423 1559.541626 1564.532471 1568.71814 1571.337158 1569.782104 1565.79895 1560.781982 1556.002075 1554.786255 1551.716309 1550.805786 1564.047729 1568.651367 1567.663452 1562.849609 1552.25769 1541.040405 1525.931885 1515.206909 1502.448975 1493.076904 1485.149536 1487.025391 1490.66687 1490.880249 1488.213867 1483.439453 1476.649048 1465.911377 1459.245117 1454.338989 1449.782837 1447.588989 1447.697266 1445.926758 1443.026367 1439.623169 1434.396729 1428.803711 1425.141235 1420.863403 1416.934448 1413.613403 1410.111816 1407.277344 1404.033936 1402.835571 1403.183838 1405.10498 1407.439819 1410.818115 1416.13855 1422.604248 1429.987305 1440.560181 1455.170898 1460.786865 1463.635986 1461.589111 1466.529541 1480.470825 1496.584961 1509.180786 1516.4021 1519.476807 1518.335571 1515.635864 1507.283691 1512.71582 1523.92749 1536.372437 1546.668213 1539.304932 1522.11499 1506.274292 1489.955322 1464.966309 1433.009521 1407.322388 1395.377075 1386.264526 1374.801758 1357.503784 1340.868286 1319.228394 1314.796265 1322.879639 1333.848877 1340.302246 1345.369629 1351.701782 1355.981079 1363.354492 1377.439697 1387.164307 1398.758789 1409.358032 1430.511719 1449.358643 1438.917603 1425.018311 1415.004517 1409.264404 1404.792236 1398.494019 1391.673828 1378.309814 1382.032837 1388.972656 1397.548828 1420.81189 1434.05835 1441.263428 1442.246094 1449.226929 1451.014648 1447.381348 1467.877563 1486.201294 1484.825928 1483.903076 1491.11438 1494.100586 1506.515137 1526.488525 1541.607422 1544.307861 1536.832153 1531.591919 1525.313843 1519.936157 1512.814941 1502.807983 1492.213867 1487.547119 1495.430908 1501.141357 1498.533203 1492.201538 1481.248535 1461.637451 1451.440308 1466.263672 1480.743042 1490.878296 1488.760864 1479.5448 1467.791382 1457.969971 1449.076416 1439.723145 1451.517944 1462.522095 1474.514282 1462.366455 1446.844727 1436.125244 1425.744263 1418.259155 1413.922729 1405.338379 1398.592773 1393.154297 1388.836304 1388.618286 1386.345459 1382.178833 1402.414795 1417.409668 1423.966675 1426.77771 1426.498657 1424.9198 1436.861572 1448.998291 1455.605957 1460.008911 1459.407715 1451.789429 1445.776611 1438.716919 1432.126953 1427.045654 1424.26355 1421.235229 1418.810669 1417.585938 1416.861084 1414.252686 1410.298218 1406.280396 1402.981079 1397.286133 1391.750122 1386.89978 1381.361938 1375.410034 1368.047241 1358.774536 1365.225708 1370.152222 1374.032837 1376.091675 1377.619507 1372.82373 1366.453369 1361.720825 1357.152954 1353.956299 1349.779175 1344.824585 1340.156128 1335.015259 1330.020508 1322.150269 1314.937866 1307.381226 1314.322754 1323.376343 1331.093872 1338.162354 1340.737793 1343.437744 1338.869507 1329.876709 1330.230591 1341.21228 1347.298462 1351.389038 1353.087402 1355.733032 1358.896729 1361.491699 1362.997314 1362.062134 1355.595581 1352.330444 1355.418335 1356.250244 1356.359253 1354.65918 1351.915649 1349.717163 1347.040649 1342.349487 1341.905273 1340.956543 1338.280029 +1657.052856 1655.779297 1656.963379 1658.513062 1663.69043 1668.644653 1673.026611 1677.161133 1681.069946 1685.769775 1692.928589 1697.606323 1697.896973 1697.066162 1694.511108 1690.086548 1686.862061 1683.633545 1680.575928 1677.652954 1673.334839 1666.439575 1659.945801 1653.128174 1645.449707 1640.53833 1635.582886 1626.618774 1631.019775 1636.723877 1641.123779 1647.538574 1666.488159 1681.330688 1692.375854 1697.382812 1700.053589 1703.62439 1708.369507 1709.544434 1710.137695 1707.717651 1703.484863 1700.2854 1697.841431 1695.231689 1694.424316 1693.440186 1697.078613 1703.634277 1711.79895 1719.736084 1722.252197 1721.938965 1720.778442 1719.071899 1717.067871 1714.480347 1711.799072 1710.079468 1709.149414 1707.266602 1705.249634 1705.4552 1705.372925 1703.536377 1706.876221 1705.364746 1694.625732 1681.072632 1664.087158 1647.605591 1639.130127 1640.927979 1641.983276 1640.991089 1636.782593 1634.336426 1627.471191 1618.949097 1609.850098 1602.527588 1588.120972 1574.553955 1565.42041 1558.093628 1560.151978 1580.48291 1590.312866 1602.583374 1614.022827 1629.23877 1641.195557 1659.005371 1674.822266 1685.463013 1686.728394 1674.682007 1661.504395 1659.154907 1661.867798 1655.182739 1645.306885 1653.5625 1666.554321 1664.535034 1657.884399 1641.377686 1625.730469 1611.986328 1598.424805 1585.004517 1571.654419 1557.459106 1545.162964 1533.181152 1521.591675 1511.927856 1498.637939 1487.311523 1488.709961 1488.736084 1487.489624 1482.764526 1473.80127 1463.625488 1456.062134 1449.960449 1444.182495 1439.275391 1436.268799 1433.716675 1431.857422 1434.777832 1437.02002 1442.59314 1462.05188 1467.758301 1471.887207 1484.796265 1493.264648 1493.089111 1489.19043 1501.469482 1514.738525 1534.362305 1548.02063 1561.445679 1574.355713 1560.69165 1549.773193 1543.451782 1539.344238 1536.605103 1534.348633 1540.281494 1548.794922 1555.859985 1556.843384 1554.354614 1555.291626 1560.070801 1573.467651 1582.734253 1589.053101 1594.249756 1605.16626 1626.596313 1629.822998 1621.565308 1623.179443 1626.428467 1625.794312 1623.249023 1618.581177 1613.477417 1611.647095 1610.133057 1608.291138 1604.920288 1600.734497 1596.440796 1593.222046 1591.104614 1589.671021 1587.974976 1581.867676 1571.066528 1569.812134 1568.668457 1566.688354 1575.106689 1586.876343 1594.491211 1595.459473 1584.34082 1581.667114 1576.441406 1571.756836 1572.276855 1573.88501 1574.19043 1571.91687 1570.777832 1575.242554 1582.226074 1583.47937 1580.472778 1577.069824 1571.278076 1564.407593 1556.833984 1553.0 1562.594971 1569.822876 1575.810181 1578.937866 1579.603638 1578.797363 1576.012939 1567.79248 1558.934814 1561.064453 1571.497681 1578.282837 1584.636475 1587.866821 1588.832764 1589.234253 1589.103149 1588.585327 1588.371338 1588.151123 1570.631348 1554.248779 1541.537354 1532.99353 1533.317749 1537.597534 1540.85083 1546.724976 1541.503296 1530.129761 1509.373901 1502.175293 1512.123535 1524.547241 1530.480103 1535.440918 1543.259888 1549.755005 1552.200806 1547.31958 1535.365112 1518.673218 1502.489014 1486.053467 1469.812256 1475.291016 1478.532593 1480.7948 1482.005615 1482.969604 1484.382812 1487.008057 1489.55896 1491.023926 1490.933105 1491.699463 1497.857056 1501.235352 1505.017212 1508.109497 1516.186157 1518.200928 1510.682373 1497.855835 1482.036621 1480.43042 1479.27356 1478.682739 1478.618652 1477.410767 1475.219482 1473.5271 1472.162842 1473.040527 1483.762329 1497.15332 1506.603149 1517.482422 1523.182983 1527.121216 1530.893555 1528.212646 1519.899536 1506.53064 1485.849976 1470.952881 1461.374023 1457.593262 1452.772461 1451.670532 1456.869873 1464.60376 1471.312256 1482.283325 1488.751953 1477.914062 1464.120972 1456.616089 1462.696899 1476.518066 1491.937866 1508.637817 1527.907471 1515.80188 1493.388184 1475.817749 1464.787476 1469.057617 1481.269165 1487.145142 1487.427246 1491.81958 1505.895142 1504.038818 1492.121948 1477.625 1462.047241 1470.634155 1482.122925 1494.845459 1511.491943 1517.439453 1522.932129 1535.306519 1556.979004 1576.73999 1596.32605 1599.722534 1594.549438 1587.38623 1582.773926 1586.079102 1588.838135 1590.393799 1589.770386 1592.1427 1595.411499 1598.258179 1601.180542 1604.866211 1608.686523 1610.854614 1604.614136 1594.135376 1585.864868 1579.379395 1576.132324 1575.31311 1569.303589 1564.944214 1570.265747 1575.99939 1578.870361 1578.951904 1577.039551 1572.56604 1567.039551 1562.814697 1560.745483 1558.932617 1559.578003 1570.457153 1573.237915 1570.342407 1564.462524 1554.394775 1541.596558 1524.812866 1515.608765 1502.855469 1491.21875 1481.952393 1478.644043 1477.781372 1482.271362 1480.843384 1477.586548 1470.730469 1461.3396 1455.589844 1451.419922 1447.075195 1441.75 1440.344849 1439.470581 1437.86853 1433.163452 1427.313965 1422.456787 1417.791504 1414.082642 1412.431152 1410.018311 1407.061279 1406.192139 1406.25415 1406.281006 1406.65625 1408.741821 1411.047852 1413.533936 1419.393188 1425.484619 1433.581787 1447.18396 1459.677246 1467.038208 1473.877808 1472.013672 1472.419678 1482.882202 1500.703735 1512.174683 1523.487549 1529.17688 1529.904175 1529.128174 1525.410522 1521.81604 1530.267212 1538.827393 1542.901489 1535.603638 1520.107544 1502.958252 1485.627075 1456.591187 1425.22522 1400.659912 1387.282715 1375.999878 1359.760864 1346.927979 1327.317871 1314.07959 1318.90271 1327.529053 1339.546265 1348.898438 1356.084106 1361.653564 1371.848022 1379.559082 1386.934448 1401.823975 1412.212891 1429.03833 1450.384033 1466.80542 1453.751343 1436.742188 1427.865234 1419.333984 1412.851562 1406.211304 1400.021362 1395.300293 1388.394775 1387.699341 1391.355347 1409.705078 1423.918579 1427.74231 1427.432861 1429.895508 1436.432129 1452.455811 1469.079834 1475.456177 1473.790771 1470.59668 1475.478638 1484.795044 1499.708374 1523.989502 1543.492188 1549.501465 1543.068481 1538.453857 1531.606812 1524.098877 1515.065796 1502.272339 1498.415405 1496.801392 1505.227905 1507.549072 1503.21228 1491.088867 1475.729004 1465.931885 1460.965698 1463.989746 1480.989502 1490.141724 1489.406616 1479.519897 1468.939331 1460.258545 1453.338501 1452.372314 1458.843384 1476.85144 1477.030029 1461.492676 1452.710815 1448.399048 1441.686646 1433.696899 1423.398804 1413.276367 1404.136963 1398.849976 1395.193726 1399.411255 1393.751343 1388.246216 1400.680176 1418.34375 1428.892334 1432.374878 1436.475464 1436.568481 1438.733276 1450.428223 1458.844727 1469.55127 1469.576782 1457.372681 1446.437622 1437.171387 1430.57666 1425.361572 1422.942139 1419.747314 1416.487061 1414.490601 1412.683716 1410.188477 1407.694946 1404.600952 1400.290405 1394.749146 1389.874023 1386.18457 1382.025391 1377.155273 1366.936401 1363.050049 1369.515015 1374.817993 1377.729248 1376.201172 1372.846436 1366.807983 1363.327759 1357.058594 1352.934326 1350.034302 1345.434082 1340.896606 1336.722534 1332.96875 1328.543335 1321.39856 1312.968506 1315.697998 1324.674683 1332.597168 1339.328979 1342.550415 1346.713745 1346.997559 1345.136108 1338.105835 1329.184326 1340.954834 1350.902344 1355.406494 1357.524292 1360.766479 1365.012939 1368.200439 1369.946777 1368.406982 1362.811768 1360.72998 1361.520996 1360.195068 1357.425171 1354.420776 1352.38269 1350.577881 1348.862671 1347.454102 1345.879517 1344.16333 1341.835449 +1658.9375 1657.18103 1659.141235 1659.34082 1662.84082 1667.530151 1671.120972 1675.233398 1678.924561 1682.776245 1690.05127 1696.665771 1698.489868 1698.953125 1697.861572 1696.4729 1693.112671 1689.670898 1685.759155 1682.148438 1677.588745 1671.248779 1665.430176 1660.269287 1650.979614 1644.164673 1639.031128 1632.254028 1627.63147 1632.60144 1637.139404 1643.967163 1660.196533 1674.88501 1684.786743 1690.153564 1693.723389 1695.124512 1694.254883 1694.628296 1702.148682 1708.40271 1708.956909 1705.750977 1702.012939 1701.749878 1704.223633 1703.940674 1704.704102 1704.803711 1710.721313 1720.64624 1721.715942 1721.388428 1720.814453 1719.957275 1717.731812 1715.526611 1713.081299 1711.490601 1710.601685 1710.044189 1709.662476 1709.6698 1709.39502 1704.220947 1699.171021 1692.44165 1680.607544 1665.993286 1646.106079 1645.943481 1648.120728 1650.156006 1651.383179 1651.489746 1648.713501 1642.414673 1635.244141 1625.607544 1613.650879 1603.145874 1587.794556 1573.444092 1564.590454 1555.317383 1574.749268 1592.635254 1605.0448 1610.091309 1618.505615 1625.62085 1639.326416 1660.756226 1673.456299 1683.533569 1685.88208 1680.331299 1674.12207 1674.245972 1673.737671 1665.045776 1656.836304 1674.858398 1671.370728 1658.10022 1644.926392 1625.018555 1612.924805 1603.553345 1593.234009 1581.855835 1570.889526 1556.592041 1544.226929 1530.350098 1516.387329 1502.516235 1498.140015 1505.401367 1507.199829 1503.82959 1497.890991 1490.404907 1476.520508 1465.792236 1457.475586 1450.472168 1444.35144 1441.000854 1440.732544 1440.541626 1438.925171 1436.758667 1437.664185 1437.748413 1437.767212 1450.637207 1460.773315 1474.772461 1482.627319 1477.989868 1484.366699 1501.075439 1511.028809 1521.507568 1533.818115 1550.59436 1570.840454 1573.632935 1559.556396 1547.959961 1542.824585 1538.642822 1535.177246 1542.479858 1558.019165 1564.324829 1567.239014 1567.481323 1567.828247 1565.102417 1569.989624 1577.250977 1586.545532 1591.536377 1597.672729 1607.943726 1615.296509 1613.222412 1610.38208 1612.060425 1612.293091 1610.647949 1605.994385 1601.883423 1600.658447 1598.867798 1595.700928 1593.290039 1591.12793 1588.318115 1584.664795 1582.432861 1581.556519 1578.025757 1571.762939 1564.455811 1565.199097 1562.611816 1560.070923 1575.838257 1582.933716 1588.392944 1589.56897 1587.200073 1584.851196 1581.617798 1578.404175 1579.436401 1579.73291 1578.11145 1575.072632 1571.829712 1576.674316 1586.317993 1587.008057 1583.651855 1579.795044 1575.176758 1569.364868 1561.985718 1555.760986 1557.977661 1566.190308 1574.161255 1580.338867 1584.9729 1583.685913 1580.138428 1574.770386 1563.078369 1559.502563 1567.026611 1573.696045 1583.472778 1587.659424 1589.151611 1589.539551 1589.512573 1589.753296 1589.031494 1582.744873 1564.297729 1547.752319 1536.007324 1540.231567 1549.392334 1554.552612 1556.950195 1552.529419 1539.872803 1524.880615 1509.222412 1513.185669 1523.577881 1532.701416 1536.257812 1540.829712 1547.032959 1549.792236 1551.980225 1544.295532 1531.748047 1516.123779 1500.736816 1484.974731 1472.169067 1477.403687 1480.490112 1483.594849 1485.435913 1486.027832 1487.968384 1491.824707 1495.627441 1497.293823 1497.523804 1497.630737 1503.351929 1510.224243 1519.864868 1530.443848 1529.130371 1514.943848 1503.80249 1490.021851 1481.872803 1481.972168 1482.384277 1483.22522 1484.151123 1483.870728 1482.533813 1478.67981 1475.060181 1470.717407 1470.85376 1475.972534 1488.828247 1496.869873 1502.197876 1504.954834 1506.036255 1505.859985 1503.992432 1497.922119 1483.854858 1466.635254 1459.169922 1454.706665 1454.5271 1468.953247 1483.761475 1490.240234 1491.934692 1498.980835 1494.187988 1476.759766 1463.927124 1462.562134 1467.54541 1475.701294 1487.568604 1501.721558 1519.67041 1517.957275 1500.455688 1480.245361 1474.078857 1473.65625 1491.582764 1500.725342 1502.779785 1509.3573 1517.571411 1514.701904 1499.559814 1481.008667 1469.092773 1473.908081 1491.437988 1511.518555 1529.408203 1542.025757 1548.215454 1551.435669 1556.347168 1572.359619 1596.859253 1601.192383 1598.656616 1589.369751 1583.862671 1585.54126 1586.625732 1584.565674 1583.682373 1587.020996 1589.28772 1590.838257 1592.844116 1595.715454 1599.427368 1602.583374 1601.24231 1596.533813 1592.084351 1588.590332 1587.322998 1583.208984 1577.622192 1575.537842 1579.69873 1585.043945 1589.073486 1586.125732 1582.460449 1578.464722 1573.599609 1570.608154 1568.028442 1567.138062 1570.382568 1576.393188 1575.854004 1572.182495 1565.318726 1555.0625 1539.618774 1522.137451 1514.382568 1500.347168 1490.979126 1475.836426 1471.756348 1468.912354 1472.688599 1472.235352 1469.269775 1462.50293 1455.762695 1450.683472 1447.611572 1443.582886 1439.275146 1433.887451 1431.608521 1428.876465 1425.532959 1421.707764 1417.084961 1413.691406 1411.920166 1410.165771 1408.796143 1409.787842 1410.729858 1410.742432 1410.23645 1410.375 1412.242188 1414.894165 1417.668091 1424.922241 1430.024414 1435.851318 1447.849731 1459.932129 1470.778442 1478.677002 1482.489624 1481.603149 1487.713501 1504.853516 1515.086304 1525.062622 1536.741089 1538.661621 1538.336914 1535.467896 1531.473022 1537.328491 1544.45874 1543.214966 1527.308228 1506.332275 1487.62854 1469.873779 1450.325684 1424.674805 1400.647583 1388.500977 1373.481201 1352.134277 1333.033203 1318.166138 1315.9646 1325.19165 1335.473877 1347.84436 1357.801514 1365.907104 1374.310303 1385.025391 1392.175537 1398.004272 1411.223267 1427.122681 1449.885132 1466.887207 1480.167358 1466.678955 1446.905151 1436.989624 1429.877075 1421.803101 1415.89624 1408.980103 1412.211426 1403.771362 1396.661987 1390.458252 1393.925415 1404.168335 1412.329956 1419.347168 1429.786987 1442.809082 1453.24353 1459.244263 1458.028564 1455.352539 1458.308472 1473.29187 1482.501831 1494.709839 1522.769409 1539.299805 1551.249512 1547.219604 1542.328369 1537.269653 1526.762207 1518.994141 1512.761475 1511.201416 1509.701416 1513.71936 1510.779175 1499.620117 1485.947754 1481.499634 1480.209717 1470.360107 1462.540771 1478.814331 1490.74353 1488.557007 1479.597412 1470.974365 1463.421875 1468.702271 1471.547363 1478.532471 1484.36731 1477.008667 1467.595337 1462.481934 1457.125732 1449.521118 1439.402588 1426.813477 1417.367676 1407.869507 1400.858154 1405.484375 1407.354736 1400.482056 1394.505615 1401.106567 1412.832642 1426.221802 1435.002441 1441.311646 1444.001709 1447.418823 1453.031372 1461.477539 1475.566162 1472.71228 1459.121216 1446.97583 1436.673462 1430.307129 1425.206543 1421.084473 1418.071899 1414.856079 1409.017212 1402.698486 1404.464355 1402.973999 1399.557617 1394.161621 1389.366821 1385.720703 1382.955444 1379.963623 1373.014648 1363.109985 1366.632812 1374.03772 1379.23291 1380.019165 1377.716064 1371.213257 1365.176514 1362.407349 1354.967651 1351.687012 1346.141968 1340.703979 1338.033936 1331.453125 1328.890869 1324.374878 1317.481812 1312.608032 1324.074951 1334.105713 1341.156616 1349.921631 1354.157349 1352.209961 1350.833984 1349.392822 1345.382202 1339.413086 1341.875977 1353.628662 1357.819092 1361.100952 1364.264893 1368.563599 1372.814453 1375.616577 1373.891479 1367.86438 1367.541504 1366.804321 1363.57373 1358.69397 1354.687988 1352.783447 1352.14624 1352.199463 1353.340088 1350.536621 1347.520264 1344.510986 +1663.350464 1658.589233 1661.333862 1663.20813 1665.137085 1667.58606 1670.158203 1673.40625 1677.116577 1680.737671 1686.588989 1694.963989 1698.745605 1700.101318 1701.19104 1701.466309 1699.995605 1696.060791 1691.767944 1687.651733 1682.921997 1676.299194 1669.102783 1663.932129 1656.536133 1648.475098 1642.556396 1636.514771 1630.793335 1629.109253 1632.753174 1638.836182 1650.050659 1662.55127 1673.550781 1679.092651 1682.585449 1682.949463 1683.306763 1684.718018 1691.694458 1698.499634 1709.707275 1708.674194 1704.996216 1704.88501 1708.846436 1711.058838 1711.802856 1712.883423 1715.337036 1720.495483 1721.22229 1721.137939 1720.419434 1720.037598 1718.310913 1715.505981 1712.956299 1711.226807 1710.53772 1710.246216 1710.261475 1709.541992 1706.695679 1699.671265 1691.991333 1679.342896 1658.494507 1657.312256 1657.447754 1655.971802 1655.820068 1657.4823 1661.073975 1662.331543 1659.046509 1648.104492 1637.067261 1626.554443 1615.559204 1604.213013 1589.41394 1573.953491 1561.583862 1556.763794 1577.041992 1600.137695 1615.509399 1623.413574 1627.47522 1632.602295 1642.404907 1659.29895 1668.324219 1679.775879 1686.571655 1683.007812 1681.821899 1681.681152 1678.538696 1670.842163 1671.56604 1674.618286 1662.390991 1647.232422 1636.001953 1618.444824 1602.93335 1595.230713 1586.02478 1572.847534 1563.450439 1550.893433 1539.661987 1521.942505 1510.14502 1509.108643 1514.567383 1519.15271 1518.881836 1513.991943 1504.847778 1494.707764 1477.581787 1466.423706 1457.087891 1449.509644 1445.448486 1446.245728 1445.911865 1445.478149 1444.169922 1440.815674 1441.132812 1440.46814 1438.555176 1438.662476 1452.934692 1462.328613 1467.667358 1474.679565 1482.995483 1496.35498 1504.229858 1510.506104 1536.524414 1551.938354 1566.306152 1583.358521 1566.374878 1551.486938 1545.086548 1540.471313 1535.777222 1544.861206 1558.70459 1567.122559 1572.589966 1577.92749 1578.088623 1576.470337 1574.447876 1571.599609 1582.992554 1589.200806 1593.991577 1597.570679 1602.873413 1604.053101 1603.013184 1602.772461 1602.208862 1600.435791 1595.710815 1589.837524 1588.245605 1587.506714 1586.478271 1584.815918 1581.25415 1576.905029 1573.864258 1571.720825 1571.994751 1568.960327 1564.327759 1559.173828 1562.450684 1559.287231 1560.431152 1570.448242 1575.919678 1581.531006 1586.245972 1586.312744 1583.583984 1585.439331 1588.057007 1588.778076 1586.506958 1583.609375 1579.559814 1575.240234 1579.105835 1587.319214 1588.873291 1586.683105 1583.08252 1579.149414 1574.618652 1567.456909 1562.760864 1559.449463 1561.253052 1571.614136 1579.289062 1586.683594 1587.132568 1584.592285 1579.532227 1572.424683 1560.815186 1565.595459 1573.863281 1582.502563 1587.518921 1589.137207 1589.881592 1589.8302 1589.337402 1588.5979 1579.633423 1560.456909 1541.582397 1539.742188 1557.627808 1567.931274 1570.259644 1565.49939 1553.072998 1537.06543 1522.11377 1513.837524 1523.853516 1532.972046 1542.123413 1550.373413 1552.055542 1551.478027 1548.206177 1542.968872 1535.554932 1523.429443 1512.766846 1498.907471 1483.468506 1474.929565 1479.476929 1483.050171 1486.362183 1488.997192 1489.988159 1492.804321 1498.224854 1501.922729 1503.285767 1502.957275 1500.125244 1509.024414 1517.758301 1527.341431 1527.589844 1516.098633 1503.780029 1496.112671 1488.132202 1483.35144 1485.275757 1486.92981 1488.898804 1492.183105 1493.619263 1493.392456 1490.241211 1485.550781 1479.071777 1472.712891 1467.190796 1470.825806 1475.401978 1480.303223 1483.940796 1487.884399 1490.341187 1490.002319 1486.439697 1477.619751 1462.609985 1456.621704 1454.214111 1460.336792 1478.133545 1493.227905 1508.099487 1513.717041 1510.162354 1490.479614 1472.608643 1462.388916 1466.218994 1476.357666 1484.549316 1490.578857 1498.214722 1506.80127 1514.26709 1507.70813 1493.163086 1487.705688 1479.345825 1492.174316 1502.031006 1508.067749 1521.353271 1527.558472 1522.973145 1512.780151 1492.769531 1477.998169 1474.371948 1493.742798 1512.022461 1529.382324 1544.797852 1555.696899 1563.546631 1569.642944 1579.470825 1591.882568 1599.753418 1599.05896 1590.274292 1583.443848 1579.799805 1578.831177 1575.611938 1577.327759 1580.813599 1582.803589 1583.715088 1584.438721 1586.737915 1590.00354 1593.738647 1597.833008 1599.678467 1597.966431 1596.014526 1594.900513 1591.123901 1586.196045 1585.115356 1588.31311 1595.789551 1601.701172 1598.664185 1591.172241 1585.100098 1582.091064 1579.022217 1576.480103 1576.36438 1578.25354 1578.840454 1575.952148 1571.185669 1565.253052 1556.077759 1540.809937 1526.190796 1513.90271 1502.28894 1490.191162 1475.4729 1468.40686 1462.31543 1463.821899 1464.460571 1460.822388 1456.497192 1449.953247 1446.195801 1443.23291 1440.502197 1434.926147 1428.065063 1425.533325 1424.335205 1421.255127 1416.564697 1413.747192 1412.565674 1411.526855 1412.273438 1413.767334 1415.392212 1416.848267 1415.276978 1413.658813 1412.598145 1413.849487 1417.952148 1421.561157 1426.45166 1433.067749 1440.584839 1451.088501 1460.311646 1471.012573 1482.370239 1491.283203 1496.547363 1499.897461 1509.453857 1519.432129 1530.462524 1538.362305 1539.981201 1541.028931 1541.069214 1538.770996 1542.097412 1549.284668 1547.529053 1528.220337 1503.615234 1489.94519 1463.344727 1436.734497 1417.969116 1400.784302 1389.286499 1373.472534 1351.08606 1328.540649 1315.288452 1320.376831 1332.489868 1343.311768 1356.935303 1365.147583 1376.249023 1386.398193 1393.995483 1399.625122 1409.348999 1425.39624 1451.847412 1474.790405 1489.694458 1485.720825 1477.918091 1460.768188 1447.536133 1439.232178 1429.114624 1422.453857 1419.010498 1421.817749 1415.863159 1407.661987 1399.565552 1390.702637 1401.289062 1412.652222 1421.328247 1430.972168 1439.21814 1442.984985 1442.60376 1439.487427 1447.036255 1458.479248 1473.92334 1484.918701 1497.543091 1524.822632 1537.486694 1549.117798 1549.578247 1544.73877 1539.220337 1525.033447 1521.152588 1517.785767 1516.494995 1516.289917 1513.721191 1507.57666 1499.630981 1500.291626 1496.717896 1489.792236 1478.245239 1479.161255 1479.186768 1489.770996 1489.037109 1481.956909 1475.683472 1481.029297 1485.032227 1491.135132 1495.685425 1491.070801 1482.440308 1476.372314 1470.468628 1463.495117 1453.872192 1441.786987 1425.36792 1417.87561 1409.471436 1410.148682 1415.953491 1411.954346 1403.473877 1402.213501 1412.088867 1416.337402 1421.308472 1431.337769 1440.634155 1448.518433 1454.013672 1458.744751 1464.627808 1469.07312 1464.751221 1456.189331 1444.867432 1435.694458 1429.883423 1424.062866 1418.598999 1414.030151 1408.607544 1404.620239 1398.491333 1393.740479 1392.096191 1389.967163 1386.796387 1382.274536 1379.759766 1377.91687 1372.301514 1364.318726 1364.586548 1371.646851 1379.158691 1381.693115 1381.320679 1378.905884 1373.443848 1368.501709 1364.554688 1358.756226 1354.873291 1347.421265 1341.688232 1337.334961 1331.570679 1327.165405 1321.89502 1316.388184 1317.739502 1328.653564 1343.31897 1352.297241 1357.376709 1358.22998 1355.817017 1355.90332 1354.516602 1350.215576 1343.658691 1343.051392 1354.828979 1359.731079 1363.540527 1366.950073 1371.708496 1377.053711 1379.684937 1379.254639 1376.063721 1371.505859 1368.591064 1364.59082 1359.117554 1355.113525 1353.110962 1353.956177 1354.88562 1355.270142 1354.231689 1351.012451 1347.150635 +1669.380493 1660.299927 1663.978882 1667.116821 1669.164307 1670.219849 1671.064209 1671.920898 1677.569824 1680.412231 1684.035522 1693.138428 1697.797852 1700.644043 1703.395508 1705.951416 1707.003418 1705.26416 1698.05127 1692.768433 1688.797607 1683.54187 1675.204956 1668.483643 1660.496826 1653.166626 1646.039551 1640.748047 1636.761597 1633.359375 1630.662109 1632.897095 1643.161133 1652.229858 1658.431641 1665.582397 1667.733398 1667.809448 1669.568481 1674.836548 1680.744507 1683.510376 1699.978271 1709.137451 1705.274048 1700.619995 1707.829712 1713.1073 1717.31604 1720.817017 1720.547485 1720.571411 1720.837158 1720.596802 1719.859009 1719.22168 1717.349487 1714.27124 1710.668213 1709.101929 1709.142578 1709.134644 1708.93689 1705.234009 1698.526733 1690.890991 1681.71582 1667.745972 1671.381714 1672.270264 1670.835083 1669.137817 1670.081543 1676.049072 1679.422852 1672.642456 1661.27002 1651.106079 1638.852173 1626.575195 1615.598877 1605.34375 1593.84729 1579.246216 1558.385376 1558.86377 1572.70166 1601.50647 1616.719849 1625.593384 1632.548706 1637.665771 1645.930054 1652.376831 1660.845093 1674.368286 1685.094482 1693.966431 1695.301636 1689.881104 1684.651611 1679.4104 1680.153564 1673.075073 1656.634888 1638.658691 1627.247314 1610.613159 1596.322388 1583.179688 1573.687378 1561.259766 1550.883789 1539.970459 1529.049927 1520.29834 1522.690674 1526.622314 1531.106323 1530.341675 1522.336548 1513.490112 1504.551758 1494.112915 1477.171265 1465.982544 1455.075806 1449.755615 1452.548828 1453.478516 1451.211426 1450.639038 1450.030884 1448.947266 1447.12085 1444.412476 1441.545288 1438.512451 1443.591919 1450.637817 1464.006348 1478.795288 1484.877563 1490.610229 1500.848267 1515.022705 1541.023804 1553.605713 1566.160522 1585.858154 1570.005615 1554.197144 1546.052734 1543.079102 1542.699585 1547.221924 1560.141968 1568.130981 1575.102295 1584.447754 1584.859863 1582.465332 1579.762207 1576.562744 1580.778076 1587.219604 1591.664185 1594.78479 1595.821655 1596.59668 1596.613403 1596.492554 1594.456787 1591.057495 1586.536377 1579.943726 1577.507446 1577.321533 1576.075562 1573.684814 1570.765991 1568.589233 1566.691895 1564.177856 1563.39624 1562.023193 1557.075684 1553.442749 1556.776489 1553.308105 1557.076172 1564.375 1568.635986 1571.276123 1573.950317 1575.619385 1578.92688 1586.275269 1592.156006 1598.099365 1594.356812 1590.368286 1584.962524 1582.133057 1582.884644 1587.811768 1591.837036 1591.533691 1587.837769 1582.955688 1577.298096 1571.182007 1570.506836 1569.206299 1560.111572 1567.829346 1575.931885 1585.370728 1588.699463 1588.119629 1583.92334 1576.959961 1569.742188 1569.054199 1574.076782 1582.862671 1588.381836 1589.136475 1589.310913 1584.779907 1583.661743 1580.057495 1571.934082 1553.498901 1543.651489 1557.874634 1575.324951 1579.962402 1577.766235 1568.523071 1553.633911 1539.41626 1521.866333 1524.669067 1533.060913 1542.446899 1552.447632 1563.409058 1558.137817 1550.610962 1541.758545 1531.543701 1524.028931 1513.222168 1502.603027 1491.575928 1479.675537 1477.464966 1481.611694 1485.594727 1489.269531 1493.566162 1495.819336 1497.309937 1501.796997 1506.063965 1509.139648 1509.648804 1511.570312 1515.237671 1519.548706 1522.850342 1514.984863 1503.372559 1496.480835 1491.141479 1485.64624 1485.200562 1488.032715 1495.695679 1502.411011 1505.949463 1508.869629 1508.251221 1503.153687 1498.237061 1490.550537 1483.800781 1477.712769 1467.640259 1463.180298 1462.400269 1462.553833 1465.066406 1467.622803 1468.5896 1466.564697 1462.436279 1457.563965 1455.612061 1458.424683 1464.877808 1479.24292 1496.832642 1521.980225 1521.251831 1509.506104 1486.463867 1469.96228 1462.853516 1467.568115 1481.187012 1495.607178 1506.62439 1514.141968 1518.115967 1524.070312 1520.165283 1510.410767 1503.539429 1497.119995 1494.213989 1500.118042 1508.903198 1524.788452 1537.912842 1536.104004 1521.666504 1506.865723 1490.064697 1475.188354 1490.518555 1502.315918 1519.324585 1530.748047 1541.532104 1555.012451 1566.760864 1580.27832 1590.598389 1597.365356 1598.398193 1593.078735 1585.213745 1576.848267 1571.571899 1571.296753 1571.412598 1573.684082 1575.747314 1577.144653 1578.381958 1579.976074 1581.669312 1583.659058 1588.714966 1595.20752 1598.213013 1599.936279 1600.366455 1599.046631 1594.088257 1593.007446 1595.941772 1602.237305 1606.011353 1604.887085 1601.046143 1594.889038 1591.060669 1589.416138 1587.08374 1584.253784 1583.700195 1581.528564 1576.614136 1570.618408 1562.564819 1551.889648 1537.355347 1522.594971 1513.913452 1502.740479 1490.993164 1478.89917 1468.754639 1462.924072 1456.603149 1452.245361 1450.152832 1452.168213 1444.713745 1440.305908 1438.021729 1434.635132 1427.657837 1425.401733 1423.630981 1421.549438 1418.650269 1415.368042 1414.333618 1415.854004 1417.168213 1418.67749 1421.213135 1423.60022 1423.499756 1419.562134 1415.941772 1413.854126 1415.355103 1424.383667 1425.082275 1425.450562 1434.004395 1445.920898 1457.198364 1465.346436 1472.243408 1484.450317 1499.707886 1506.733154 1513.621338 1520.115845 1527.531982 1537.392212 1538.719849 1539.434082 1540.408691 1544.121094 1547.261963 1550.350586 1550.6604 1542.253174 1527.739136 1509.415039 1491.008911 1463.90625 1430.888672 1408.963013 1396.779907 1385.50647 1368.97876 1344.949707 1323.733154 1314.634521 1327.875366 1338.619141 1353.348389 1363.647827 1373.584229 1383.796265 1392.962402 1400.462769 1408.335205 1422.982178 1448.129517 1470.177002 1495.508057 1506.307373 1496.373291 1484.066772 1471.982666 1457.026855 1446.82373 1438.942505 1427.950562 1430.324463 1430.899658 1425.11792 1417.882812 1409.616455 1401.707642 1398.75708 1402.480103 1414.346802 1420.257935 1423.756836 1424.375122 1431.794922 1441.039185 1452.175537 1461.334961 1473.807495 1487.474121 1503.321411 1524.81897 1534.100586 1543.013794 1550.290894 1546.029175 1539.938232 1523.948608 1520.255127 1517.052856 1516.212646 1516.153931 1515.854858 1515.352905 1514.353638 1510.453247 1503.708862 1495.564087 1490.24585 1486.733398 1491.635986 1496.782471 1492.76416 1486.233276 1485.368286 1490.454468 1497.143921 1504.220093 1505.641968 1497.88916 1488.563354 1481.395142 1473.732788 1465.30957 1452.674805 1437.716919 1426.092896 1420.298218 1413.907837 1417.877319 1420.812622 1416.733398 1406.528076 1407.93335 1419.614624 1429.393799 1430.948853 1434.039185 1438.817261 1450.455566 1456.138672 1461.669067 1465.661255 1463.43042 1458.27356 1451.927856 1440.931885 1432.807983 1427.154663 1421.193604 1416.111206 1406.551636 1399.564331 1397.468018 1392.919922 1387.455933 1382.987427 1379.036743 1376.672607 1374.944824 1372.764282 1369.906372 1366.567383 1369.86377 1378.195435 1381.066284 1383.859619 1384.043945 1382.39856 1379.717163 1375.091309 1370.299438 1365.701904 1359.892334 1355.56897 1349.564453 1343.777588 1337.706421 1331.457764 1326.336548 1320.471802 1318.529419 1325.57312 1334.305908 1348.751831 1357.855347 1362.478882 1363.446899 1362.216797 1362.017334 1360.756226 1357.557495 1351.262939 1348.60791 1353.400635 1361.630127 1366.922729 1369.930054 1374.467041 1378.8573 1380.359741 1380.045288 1376.719238 1371.96521 1367.72229 1363.158081 1358.394775 1354.209717 1353.687256 1355.32251 1356.423706 1356.751587 1356.110229 1354.408203 1350.515625 +1674.288574 1667.632446 1668.369507 1671.42981 1673.132202 1674.952637 1676.935303 1678.840332 1681.297852 1682.46582 1682.861206 1691.018921 1696.862427 1700.42627 1703.975708 1707.291504 1709.588135 1709.736206 1706.08313 1699.502441 1695.208984 1692.16687 1686.62854 1679.374512 1668.709595 1659.782959 1650.214233 1644.293823 1641.706543 1638.674561 1635.363525 1632.47522 1633.336304 1644.463135 1649.255127 1652.585327 1654.4104 1655.633545 1658.891479 1664.459106 1671.155884 1692.024048 1701.97644 1707.007935 1696.545898 1695.342773 1705.155273 1713.019897 1720.18689 1722.315063 1721.721924 1720.707886 1720.096802 1719.089111 1718.746582 1717.737549 1715.940308 1712.880127 1708.314819 1706.756104 1706.177856 1704.697998 1700.917847 1695.52124 1691.494995 1684.36084 1683.835693 1687.530884 1688.030762 1686.355469 1683.492188 1683.552734 1689.162964 1691.736328 1686.887939 1673.791504 1660.299683 1649.810791 1639.043335 1624.967529 1614.308594 1602.304688 1590.212036 1577.650635 1561.046753 1559.086792 1569.5 1594.592163 1612.810059 1625.290649 1635.373779 1638.163452 1640.520386 1643.077637 1655.720703 1666.476685 1676.694092 1686.204346 1695.089355 1696.295288 1689.656006 1686.80481 1685.414185 1674.847168 1655.902832 1646.178345 1630.107788 1616.610596 1601.813354 1585.654175 1572.530029 1559.121338 1547.71814 1538.337891 1532.910889 1535.42749 1536.851807 1540.655273 1540.884644 1532.34082 1515.258423 1506.665161 1499.24231 1489.532837 1474.573853 1464.785889 1455.453003 1456.090942 1462.709229 1462.418335 1460.306152 1458.043701 1456.005127 1454.731812 1452.616211 1449.524414 1445.247437 1441.296753 1442.945068 1453.164429 1468.100342 1485.498901 1500.512085 1502.349731 1502.837646 1509.12561 1532.442749 1552.672607 1566.567383 1584.43689 1567.892212 1554.447266 1546.048828 1546.639282 1550.497314 1553.0177 1559.123657 1571.680542 1581.853516 1588.476562 1588.53064 1587.285889 1585.669312 1584.772827 1584.266113 1585.910645 1590.12854 1592.195312 1592.270996 1591.409424 1590.331787 1588.186523 1585.119751 1581.069336 1576.02124 1571.755249 1570.398682 1569.957031 1569.184326 1567.677734 1565.449463 1563.106689 1560.870361 1556.62915 1555.076416 1553.113647 1548.668579 1549.246948 1552.033691 1548.59021 1551.476929 1559.678101 1563.228149 1564.918579 1566.171875 1568.971191 1573.555054 1581.98584 1590.332031 1598.157715 1600.351196 1599.328247 1595.511963 1587.911743 1584.12915 1587.025024 1594.593262 1598.666992 1595.086914 1587.933228 1580.400513 1572.983276 1576.089966 1576.538452 1573.740479 1570.329956 1571.255371 1581.630737 1588.998413 1589.987793 1587.605469 1580.139038 1572.068848 1574.046631 1574.432007 1582.978516 1588.062134 1589.213501 1588.848877 1582.396484 1572.156494 1569.572998 1561.235962 1545.969604 1555.238281 1569.559692 1588.925659 1586.661133 1580.02417 1569.243042 1556.85376 1541.646484 1531.246582 1538.703125 1542.370972 1551.133301 1559.820923 1564.804932 1549.639282 1539.114502 1530.43396 1520.844238 1512.407959 1500.099487 1490.498901 1482.896484 1477.935303 1480.01416 1483.641846 1487.421387 1493.331421 1498.968262 1501.700928 1500.670654 1504.934204 1510.992432 1514.884277 1516.046387 1518.333618 1521.772095 1521.796509 1516.629883 1505.879272 1497.309082 1492.295776 1487.253174 1485.63562 1488.801636 1497.782959 1506.066284 1511.291748 1522.568726 1526.366577 1524.893311 1517.225098 1509.180298 1503.360474 1495.757324 1488.256348 1481.964966 1474.084229 1468.136719 1465.474243 1462.078735 1460.050049 1459.146851 1458.164917 1457.050049 1457.846191 1459.7677 1462.479248 1473.633667 1486.531738 1504.629272 1526.641968 1522.025146 1507.213257 1485.909912 1469.842407 1465.512939 1474.774414 1486.418335 1501.290527 1516.782837 1528.80542 1532.768066 1532.682129 1532.123657 1527.865601 1521.775879 1516.800659 1506.501953 1497.65918 1508.808228 1523.224854 1537.186279 1544.609863 1534.169434 1518.747314 1503.957397 1489.453369 1488.577393 1498.089111 1508.415894 1519.267578 1533.0271 1549.696899 1562.371582 1576.532715 1588.015137 1597.227539 1600.386841 1599.387329 1590.759033 1581.87854 1575.938477 1571.685181 1569.609253 1567.13562 1568.112427 1570.082031 1572.249146 1574.24646 1575.181763 1576.993652 1580.44751 1583.034546 1586.901123 1594.839844 1599.647949 1600.799194 1598.688477 1598.223022 1602.017334 1609.21167 1611.623901 1610.718262 1607.215454 1601.470215 1599.117554 1599.032593 1597.66394 1596.766968 1591.684814 1585.03064 1578.692383 1571.069946 1559.048584 1543.946289 1527.502075 1518.604126 1510.983398 1499.845337 1488.382935 1478.788574 1469.230957 1463.216675 1454.238159 1449.920166 1451.046997 1448.651123 1437.959717 1437.309204 1436.303467 1433.103516 1428.290283 1426.232056 1423.541992 1420.022949 1417.011108 1416.69165 1417.689453 1419.625122 1422.566895 1425.908081 1429.797119 1431.223633 1429.358032 1423.976318 1417.967651 1413.676758 1419.761719 1429.11377 1433.975464 1433.937622 1436.24231 1448.099854 1461.786499 1470.989746 1479.31665 1488.606689 1501.672485 1512.956055 1519.207031 1527.063477 1533.445679 1537.535522 1536.348267 1536.76062 1535.958252 1541.4375 1549.263184 1550.053101 1541.931641 1533.129517 1521.076782 1505.870972 1484.50354 1458.952881 1428.724731 1404.346191 1390.494507 1374.267944 1357.240723 1336.76062 1320.809204 1315.045776 1332.734375 1344.945679 1358.300049 1369.799927 1380.197876 1390.548096 1398.911743 1408.480591 1419.276855 1439.719849 1460.192993 1485.546021 1508.951904 1521.305298 1505.236572 1490.75415 1480.100586 1462.822754 1452.927856 1445.50708 1441.48584 1443.692261 1440.829346 1435.426025 1427.454102 1420.109497 1413.000732 1402.184204 1403.241821 1407.374268 1413.36145 1426.786377 1438.036865 1436.910645 1438.790771 1453.482178 1462.243286 1473.914917 1483.402954 1503.6875 1521.966553 1529.903076 1536.13623 1542.619141 1543.676147 1540.032227 1529.2677 1517.436279 1511.888916 1512.087524 1515.166626 1515.768799 1515.65271 1515.571533 1515.111084 1509.757568 1500.823975 1499.737305 1496.903931 1500.912231 1502.943604 1497.248535 1488.424194 1492.57251 1498.367432 1505.314087 1512.130493 1515.264771 1503.180542 1491.790894 1481.06311 1471.201904 1461.104858 1450.147217 1438.553223 1432.638306 1425.710938 1421.026978 1427.054688 1427.393677 1420.455566 1412.772095 1416.189331 1427.264404 1438.946411 1443.070923 1442.455566 1445.261963 1451.793823 1456.407104 1461.92395 1460.78064 1456.1698 1450.585449 1443.142944 1433.866577 1426.284058 1419.999878 1415.809204 1409.515381 1400.880981 1393.509766 1389.442749 1386.797241 1381.406494 1379.572754 1378.681641 1378.743286 1379.80896 1373.446533 1372.911499 1373.802246 1378.988647 1384.677002 1388.613647 1389.257446 1386.289062 1383.063843 1379.795288 1375.299316 1370.036133 1365.073242 1358.941772 1354.143799 1348.792725 1343.827515 1336.383545 1328.597412 1323.820435 1320.180298 1324.115845 1332.269043 1346.52356 1354.363647 1362.405762 1367.372192 1368.550171 1367.59375 1367.908203 1367.49292 1366.820435 1359.059326 1354.916992 1353.037231 1363.194458 1368.628784 1372.20166 1375.967163 1379.398682 1380.348267 1380.108032 1375.317993 1369.054443 1365.518188 1362.817749 1359.269287 1354.713867 1355.567749 1357.263916 1358.287231 1358.482666 1357.755981 1356.127441 1353.517944 +1678.297852 1669.676636 1671.226562 1674.77124 1677.664429 1680.57605 1683.010864 1684.911133 1687.017578 1688.519165 1689.002563 1691.619263 1695.318237 1699.777832 1703.640015 1707.089844 1710.393433 1711.015015 1708.853882 1706.539429 1703.779663 1700.577881 1698.045532 1692.351318 1678.621826 1667.845215 1657.914917 1651.682739 1647.790894 1644.103027 1640.561646 1637.251709 1634.63147 1635.792725 1641.367065 1644.789307 1646.09314 1650.540039 1660.990234 1673.231567 1682.131958 1694.876221 1697.656982 1691.231812 1681.911011 1691.723389 1703.077881 1712.995361 1721.2052 1722.602295 1722.557739 1720.122437 1717.851074 1716.905029 1716.880737 1716.197998 1714.726562 1712.664673 1709.989502 1707.799561 1703.950073 1695.710327 1692.933716 1691.65686 1691.345825 1695.389526 1699.025269 1700.812988 1700.980225 1699.518921 1697.736816 1698.586182 1699.258057 1695.65686 1684.957642 1668.685669 1655.758301 1645.306519 1636.501709 1620.618286 1608.660889 1597.404175 1586.367676 1580.595215 1574.093018 1561.324341 1562.190186 1588.589966 1603.925903 1619.497314 1628.468872 1632.911987 1633.237061 1631.252441 1646.934326 1655.510864 1662.287964 1672.218628 1682.237061 1687.741211 1690.742798 1694.108521 1690.300293 1680.858887 1667.199707 1654.491089 1638.915894 1622.762573 1608.79895 1591.903442 1579.669556 1566.322998 1547.942017 1546.620483 1545.70874 1547.447021 1553.273315 1550.170044 1541.297241 1530.468994 1518.144897 1504.573242 1493.197754 1483.63855 1473.340454 1461.947876 1456.419922 1464.161743 1474.141724 1474.285522 1471.039551 1465.68103 1461.982178 1459.796387 1457.128174 1453.830444 1449.585693 1444.198853 1442.319946 1449.519897 1464.688354 1482.723511 1503.483276 1516.283081 1519.516235 1524.962769 1541.04541 1556.757812 1571.979248 1581.387085 1565.886841 1554.185547 1547.265015 1551.031372 1555.414062 1559.668701 1565.932129 1576.999634 1583.792969 1589.456787 1589.371948 1589.125732 1588.287354 1587.836426 1587.09082 1587.671875 1589.18457 1590.012817 1589.188477 1587.023315 1584.300659 1580.411377 1576.262939 1572.098267 1569.402588 1567.420776 1565.717529 1564.878418 1564.192017 1563.133179 1560.371826 1556.669556 1552.490234 1547.532349 1547.143188 1546.002319 1545.088013 1547.891235 1549.472046 1547.481201 1549.329712 1553.804565 1557.302734 1558.612671 1559.386719 1563.90332 1568.979614 1574.366089 1581.613159 1588.618896 1597.044312 1599.838745 1600.949585 1596.668823 1587.123169 1589.150146 1597.532104 1600.503296 1599.720459 1594.032837 1585.058228 1580.583496 1581.774048 1581.2677 1577.604858 1573.665894 1571.240356 1579.766235 1588.382324 1592.744629 1591.410522 1584.556763 1577.133423 1576.141113 1580.145264 1584.021118 1588.828369 1589.457275 1587.022095 1577.747803 1568.002563 1560.316895 1556.538818 1568.064819 1572.729492 1586.371826 1601.312134 1602.932129 1586.085083 1572.359009 1559.552124 1544.490845 1537.680664 1545.660889 1550.58313 1557.363403 1563.484253 1564.414185 1550.018555 1536.146973 1518.740479 1508.488037 1503.5448 1493.910645 1482.748901 1480.091431 1481.090088 1482.786987 1485.016479 1489.035645 1496.951294 1501.968628 1504.447754 1505.799683 1508.778687 1512.322021 1519.412964 1523.393066 1524.320801 1526.298584 1524.827515 1515.032104 1502.852539 1495.572266 1489.468262 1486.573853 1488.896606 1497.825928 1511.335449 1521.063965 1526.737061 1531.299927 1532.941895 1531.276489 1527.666382 1519.625732 1510.505249 1504.891724 1498.849854 1492.50061 1485.875366 1474.234619 1472.98645 1471.341675 1467.849976 1464.120361 1462.42627 1461.329712 1462.882568 1467.487183 1472.009766 1483.3479 1501.719971 1516.062988 1533.068481 1526.626465 1510.199219 1487.700684 1471.284302 1468.818848 1479.890991 1493.832031 1515.829468 1532.098389 1541.448242 1543.170898 1541.739502 1541.671265 1540.890869 1537.743042 1530.571411 1523.236938 1511.619873 1507.984619 1520.594238 1535.051025 1551.73877 1547.738892 1534.180542 1518.616333 1504.551758 1495.262695 1510.151367 1521.194702 1523.537842 1530.394775 1540.309326 1555.478394 1569.373535 1581.676392 1594.704468 1600.987183 1600.58606 1595.238525 1585.510742 1583.413086 1577.184448 1570.922485 1562.475464 1559.703369 1561.183594 1563.015259 1566.298462 1567.798218 1570.334717 1574.111572 1575.35022 1578.339355 1583.169556 1587.820312 1591.314575 1593.92627 1597.881958 1602.245117 1607.999146 1611.875244 1611.988525 1609.947144 1602.008789 1599.38916 1600.673828 1601.255493 1601.184448 1598.979858 1587.721924 1580.300293 1572.691895 1557.9729 1541.957275 1522.748901 1514.462891 1505.389404 1494.438843 1484.151001 1474.478882 1464.865845 1461.384155 1454.293945 1450.216431 1451.074707 1449.138428 1441.634277 1437.886597 1438.688232 1439.670776 1438.648193 1431.289917 1425.964478 1420.483398 1417.482056 1418.805176 1420.515991 1423.252441 1426.570435 1433.634766 1439.307739 1437.942383 1431.448853 1424.858032 1418.326172 1414.094482 1422.215576 1433.317139 1441.88501 1448.061035 1449.050659 1449.099243 1462.026978 1473.539307 1484.104858 1495.025635 1504.483643 1513.060181 1518.899414 1523.437866 1528.157227 1532.85498 1532.359985 1531.316528 1534.373047 1540.785522 1547.252075 1544.319824 1534.073975 1516.912598 1503.478271 1493.190674 1474.761475 1445.834961 1421.006348 1402.609131 1389.574585 1372.241089 1349.913696 1327.576782 1318.539795 1316.338257 1333.497192 1348.760742 1360.947021 1374.094116 1385.777466 1396.09375 1405.158569 1416.046265 1430.556274 1453.537231 1470.652954 1495.351074 1515.369629 1529.042969 1510.578979 1500.767944 1488.781494 1476.376831 1462.377563 1454.984863 1455.348022 1458.513062 1450.00647 1445.33252 1437.831543 1427.885254 1421.248169 1414.3125 1404.769165 1408.921509 1414.8396 1429.322876 1442.118042 1453.027344 1454.675415 1450.010498 1460.620239 1470.285767 1482.649902 1495.189209 1511.395508 1524.476318 1529.917358 1534.947876 1539.115845 1540.153931 1533.855591 1522.064209 1510.255981 1505.270752 1510.862671 1513.392456 1513.673706 1514.132568 1514.431519 1512.661377 1507.179932 1505.841064 1506.65271 1509.023926 1505.393188 1500.258423 1497.49707 1500.665405 1506.446899 1513.120728 1522.095093 1516.189819 1503.870361 1493.719971 1483.855103 1472.788574 1462.578125 1455.89563 1447.381836 1441.492065 1429.414673 1426.716797 1430.490479 1430.704346 1426.282104 1418.125366 1418.953857 1432.913574 1443.906372 1451.504272 1452.620361 1450.270264 1452.991943 1453.354248 1453.363525 1453.186157 1448.290894 1440.985229 1434.26062 1425.171509 1416.333496 1410.165161 1404.15271 1400.848389 1396.060425 1391.022095 1385.643433 1382.199585 1386.59668 1391.815063 1389.699951 1384.116089 1381.195923 1379.210938 1380.156006 1380.100952 1381.59375 1389.477661 1392.147949 1390.77832 1386.908447 1383.030396 1379.302979 1374.209106 1368.519775 1362.228027 1354.549316 1350.184937 1345.174561 1340.415894 1333.097168 1327.055054 1322.399048 1326.106567 1332.558838 1341.141235 1355.447266 1364.86792 1367.783081 1370.585083 1373.810059 1374.187866 1373.476807 1372.087036 1369.611328 1367.774902 1363.665161 1357.838013 1363.144775 1369.268677 1373.19873 1376.914062 1380.023682 1380.552368 1379.545532 1373.368164 1366.55603 1364.289795 1363.147461 1361.906006 1360.496338 1359.968018 1360.828491 1360.974121 1360.6698 1359.46228 1357.54834 1355.170776 +1682.316284 1670.659302 1672.890503 1677.553711 1681.753418 1685.677124 1689.018188 1691.936157 1694.912476 1696.4823 1696.400879 1695.071167 1694.197144 1698.359985 1704.454834 1706.884033 1711.477417 1713.634399 1713.240967 1712.078369 1710.279419 1707.325195 1703.934692 1699.662964 1688.463989 1675.671631 1667.944336 1664.701904 1659.263794 1650.708984 1645.021118 1643.115479 1640.116211 1637.67981 1637.083496 1639.958618 1642.837891 1647.796387 1663.64917 1673.841675 1679.583374 1682.037842 1679.952026 1677.906616 1679.667114 1691.230713 1700.938232 1707.977295 1714.87146 1720.810791 1721.486084 1717.055908 1712.767822 1712.365723 1713.989868 1714.483765 1713.941772 1712.891968 1711.50415 1709.921387 1708.357788 1703.633057 1696.77771 1695.036621 1702.262939 1707.057007 1708.846313 1709.109741 1709.496826 1709.376587 1708.19165 1705.527588 1697.274414 1690.727783 1678.382202 1663.526245 1651.873413 1639.253296 1628.893799 1618.082275 1611.26001 1605.731567 1596.972168 1586.354736 1579.51123 1572.727173 1562.939697 1575.357544 1595.407593 1610.292236 1619.115967 1621.00708 1618.504028 1623.922729 1635.784912 1640.665649 1647.143555 1662.42627 1673.272339 1679.93103 1689.622437 1699.106812 1696.822144 1688.439575 1676.670166 1663.140747 1648.02063 1628.12793 1611.328979 1595.032471 1580.488647 1560.544556 1559.076904 1562.511597 1563.74707 1565.603149 1563.364502 1554.497437 1542.691162 1530.750122 1518.966064 1505.568115 1493.007324 1482.606079 1473.491577 1464.399292 1458.554932 1477.179077 1483.650024 1486.134033 1483.398804 1479.242432 1473.784912 1466.033936 1461.558105 1458.016724 1453.490845 1448.084351 1443.019165 1448.925537 1460.342529 1473.284912 1485.963257 1501.335571 1517.158081 1534.431885 1547.553467 1561.734863 1579.86731 1580.740234 1567.928833 1558.327881 1553.946533 1559.828003 1562.417358 1564.704102 1570.002075 1574.252808 1579.204224 1584.899536 1587.175537 1587.436279 1586.537231 1587.790161 1587.555054 1587.658936 1587.977661 1588.473145 1585.131104 1575.35498 1573.804443 1571.740967 1568.844238 1566.073608 1564.385498 1563.165405 1561.89917 1559.449829 1558.702148 1556.29126 1553.238281 1549.805786 1546.376465 1543.671997 1541.169189 1537.930786 1538.617554 1543.679443 1545.730103 1545.802246 1547.310181 1549.154053 1550.529175 1552.145142 1556.152466 1560.47229 1564.558472 1567.980713 1570.29834 1574.121582 1583.735474 1594.92041 1600.29834 1599.896362 1595.841431 1596.263428 1599.478394 1602.700195 1602.513184 1599.656372 1588.297974 1583.81958 1587.291382 1586.78894 1582.134521 1576.193237 1571.935303 1579.583862 1589.95105 1595.894165 1597.7146 1594.489014 1584.700684 1582.005737 1585.058594 1588.510742 1592.743408 1590.473755 1583.081177 1575.791992 1564.812988 1560.884766 1570.017212 1585.501831 1593.583252 1602.800781 1615.893921 1614.23291 1595.648193 1580.331543 1566.803467 1546.6073 1549.402222 1558.687988 1563.670288 1564.953247 1565.320679 1561.712769 1550.366089 1537.639404 1517.780884 1500.453613 1493.446777 1484.56189 1483.125732 1484.746948 1485.514648 1485.504028 1486.139771 1488.926025 1498.518311 1503.607666 1506.932861 1508.737671 1511.888428 1517.822876 1524.292603 1527.579346 1528.399414 1528.399048 1526.217896 1512.151489 1501.573975 1494.251953 1487.902832 1489.322388 1495.582642 1511.236084 1524.998779 1530.660645 1533.953369 1538.319458 1539.755127 1536.83728 1533.246094 1527.991821 1519.284912 1511.349731 1506.427124 1501.695435 1496.946655 1492.483765 1488.72876 1486.019897 1480.980957 1477.935303 1476.568848 1469.066284 1469.514404 1479.071533 1487.508545 1496.198975 1512.973877 1528.20874 1540.589111 1530.984009 1515.437378 1494.682983 1474.967163 1470.770996 1478.629761 1492.786377 1515.466064 1534.966553 1547.052124 1551.0271 1549.888672 1548.800537 1548.15332 1545.933594 1541.485107 1534.448853 1528.203979 1511.883179 1520.940308 1534.852173 1552.430542 1559.593262 1549.458252 1533.010132 1518.813843 1502.79248 1516.638306 1533.522095 1544.661377 1553.531982 1554.358276 1553.732056 1567.880371 1581.267822 1594.217285 1601.121338 1600.837524 1599.130981 1594.257812 1588.770508 1582.842773 1573.84436 1565.515625 1560.469727 1553.192993 1554.027832 1558.479736 1559.553223 1562.009277 1566.02124 1567.860107 1570.1604 1573.099487 1576.745972 1579.606567 1582.253052 1587.969604 1596.286011 1599.870239 1604.045898 1605.557983 1601.967407 1595.252075 1592.249023 1597.670654 1599.90271 1598.270508 1594.306641 1586.884155 1580.204224 1573.208496 1558.052246 1544.665039 1527.127808 1515.82373 1507.02478 1498.635986 1486.731812 1476.968506 1469.1604 1464.790771 1457.434692 1451.443115 1451.43457 1451.746704 1448.084473 1445.234985 1444.53479 1443.645752 1441.324707 1435.285156 1426.522705 1420.084839 1419.077637 1420.715454 1422.858276 1425.848999 1432.894897 1440.617188 1442.488037 1439.921509 1431.199219 1424.719482 1419.513428 1418.307373 1423.603882 1435.424072 1448.086914 1456.270874 1463.15686 1466.827148 1464.434204 1472.391113 1481.284668 1490.030396 1501.496582 1508.44043 1513.783203 1519.534546 1524.52771 1528.800415 1527.980713 1523.602173 1529.206421 1538.001221 1540.625244 1539.789795 1525.571045 1510.560425 1487.063354 1473.006958 1451.586914 1430.858398 1409.883911 1399.026001 1388.538574 1371.525269 1348.639526 1326.069458 1317.010742 1321.375488 1339.551514 1352.43103 1364.173584 1378.27124 1391.280029 1403.049683 1412.38269 1424.557129 1442.694336 1459.442017 1481.553467 1498.924072 1517.917847 1540.272217 1527.445557 1512.740845 1502.159912 1486.109863 1475.647949 1469.343872 1475.555176 1475.590332 1464.077881 1456.328735 1448.43457 1438.419067 1427.900024 1421.041992 1413.248291 1413.487305 1412.942993 1419.602417 1435.346313 1447.809204 1453.493286 1455.444092 1460.666138 1470.885498 1478.235962 1484.212646 1500.574951 1513.29248 1520.198486 1526.25354 1533.739868 1540.206543 1535.440796 1521.454712 1511.169067 1499.620117 1501.746216 1505.927734 1507.620483 1508.282349 1508.051147 1504.688721 1503.156006 1508.61377 1513.247192 1513.470337 1508.194702 1505.649414 1506.318726 1509.827759 1513.907593 1523.641479 1526.917114 1513.818115 1501.73291 1494.025513 1485.864014 1475.500854 1466.247925 1458.223267 1450.592163 1442.004639 1436.459106 1435.307739 1436.334229 1435.047119 1430.952271 1426.385864 1424.761353 1432.454834 1444.534058 1452.870483 1452.945435 1450.178711 1446.031738 1444.624756 1444.291138 1442.328491 1437.467285 1432.3573 1426.105103 1417.391602 1410.011841 1403.946411 1398.456543 1395.27356 1392.041382 1386.993896 1384.729492 1389.922607 1394.401855 1395.440796 1391.738159 1387.10498 1386.142334 1384.980835 1385.18103 1387.091064 1388.529419 1390.296265 1391.823608 1389.630371 1385.960815 1381.555542 1377.391602 1372.308105 1365.014893 1359.404785 1352.814209 1348.379028 1340.125977 1334.951782 1328.246582 1324.883545 1327.042725 1334.789307 1347.150879 1355.725708 1366.466431 1368.125244 1369.558838 1373.214478 1378.46521 1379.396484 1378.700073 1375.686768 1373.947754 1372.216919 1368.092773 1364.040161 1365.413086 1370.168091 1374.171265 1377.580933 1380.288574 1380.761108 1378.671509 1371.252319 1365.455566 1364.686768 1364.258911 1364.353027 1363.91394 1364.357788 1364.662598 1364.084473 1363.526855 1362.126221 1359.933228 1357.558105 +1688.039551 1679.685547 1677.091431 1681.137085 1686.070801 1691.211548 1695.113159 1698.127686 1700.1604 1701.754028 1701.938232 1699.956421 1697.076172 1701.218018 1707.156982 1710.719727 1714.935181 1717.093994 1717.646851 1717.106445 1715.929565 1713.342163 1709.180786 1703.266235 1694.299194 1686.651245 1683.105835 1675.644043 1665.977051 1657.486694 1654.83728 1650.118652 1645.723267 1642.18811 1640.047607 1639.438477 1641.062866 1644.609619 1655.224976 1667.540894 1672.162476 1672.601074 1670.555786 1669.253174 1673.363892 1689.305908 1697.819214 1698.213745 1704.061401 1712.293213 1715.925171 1709.882446 1706.224365 1707.065918 1711.535034 1712.911133 1713.327637 1712.965698 1712.209229 1711.458984 1710.448608 1708.694336 1706.85791 1710.120728 1711.721191 1712.545288 1712.265259 1712.143066 1711.978394 1711.246216 1709.811646 1702.950562 1693.968384 1688.060059 1677.292969 1663.066772 1646.877197 1637.182373 1631.971069 1626.213501 1620.632812 1610.487549 1601.738159 1591.441284 1583.229126 1575.671631 1567.815674 1566.707642 1583.362061 1600.442749 1610.54126 1612.976196 1609.764404 1618.203491 1622.89563 1629.164795 1645.272217 1659.981934 1669.341675 1676.463623 1686.60498 1699.600464 1709.852295 1696.354248 1682.829224 1669.086792 1652.317017 1631.096069 1610.128296 1591.696167 1575.149292 1571.315552 1574.485962 1573.365234 1579.470093 1577.49353 1568.943481 1555.375732 1540.946533 1526.249512 1515.111328 1500.187866 1489.94104 1479.619751 1469.768677 1461.99292 1468.427246 1482.081299 1491.072876 1494.876343 1493.576416 1488.338623 1485.157715 1479.331543 1470.701538 1462.598389 1457.855713 1452.126831 1445.463257 1448.927856 1462.927612 1477.682007 1488.646362 1498.123413 1512.186523 1531.205078 1549.353027 1564.311768 1585.060791 1585.629517 1572.419312 1562.296997 1561.87439 1563.074219 1564.527466 1565.913574 1566.297363 1564.942627 1566.435669 1572.193237 1575.418091 1573.787964 1574.990234 1581.709961 1585.038696 1585.956909 1585.750732 1583.988281 1576.152222 1569.264526 1565.934937 1563.654419 1561.454346 1560.04187 1558.860229 1557.450928 1555.427979 1552.182617 1547.935547 1547.736938 1546.130737 1543.23938 1540.492065 1539.43103 1537.383423 1535.428345 1538.00647 1540.383911 1541.773804 1542.645508 1544.011719 1545.417603 1546.263916 1548.21167 1552.211914 1556.302246 1560.217651 1562.369385 1563.299927 1568.610107 1576.401855 1588.131226 1595.486084 1598.918335 1601.268311 1599.775391 1603.91626 1606.309448 1605.875122 1602.703125 1595.297363 1588.651978 1593.676025 1592.622681 1586.567749 1579.195557 1572.059814 1579.901245 1592.803345 1599.227051 1600.926636 1600.557007 1593.898315 1585.227783 1588.724487 1594.65686 1597.585571 1593.30249 1581.882935 1572.19873 1570.65564 1576.004883 1579.784058 1593.986694 1605.808594 1615.09314 1625.604248 1621.049194 1598.797241 1583.067261 1568.979858 1559.362915 1560.516968 1571.409424 1576.215698 1572.872437 1561.695557 1553.941284 1546.166138 1532.657837 1519.147461 1502.58374 1486.115601 1485.401978 1488.226318 1490.347412 1491.070557 1489.809204 1487.97876 1493.468018 1500.180054 1505.592651 1510.465576 1512.211792 1514.973755 1524.013916 1527.859741 1530.601318 1531.576782 1530.570923 1523.681274 1508.178955 1499.355591 1492.83728 1489.445312 1494.86145 1502.602539 1520.329956 1531.214722 1537.540894 1544.226807 1547.558838 1548.136597 1546.055542 1540.621826 1533.855225 1526.395386 1519.184814 1513.631348 1511.265503 1510.610474 1510.472778 1509.688354 1506.690063 1500.528809 1494.000732 1489.137207 1483.117065 1477.756592 1484.819824 1496.360718 1508.445923 1526.70105 1543.562866 1551.598999 1537.178467 1522.013306 1503.852539 1484.744263 1473.039795 1476.208374 1489.56543 1501.759521 1523.541748 1535.888672 1546.003418 1551.337402 1553.085205 1555.80188 1555.458862 1551.373779 1544.711304 1535.556641 1522.363281 1526.122803 1539.087402 1556.260132 1569.729004 1562.969116 1549.373413 1534.932983 1519.046997 1513.587402 1532.131348 1552.161011 1564.60376 1567.693359 1566.965942 1572.388672 1582.386597 1596.350586 1600.231934 1599.03064 1598.358276 1592.760742 1586.848022 1580.443604 1572.698242 1565.043945 1559.256104 1552.040161 1547.15979 1549.779175 1552.081665 1555.556519 1559.01355 1560.616943 1561.844238 1564.818115 1567.67041 1570.657593 1573.838501 1578.53479 1584.607178 1590.877197 1595.27124 1598.892944 1594.776611 1587.859985 1582.487305 1584.972046 1584.340698 1586.970703 1585.057007 1577.783203 1573.296875 1567.50769 1558.09314 1544.228394 1530.813721 1521.716797 1514.972778 1507.314087 1495.710327 1484.44397 1476.241089 1466.824951 1462.651611 1463.162354 1460.310547 1456.946411 1453.586426 1452.284668 1448.880127 1444.88269 1440.331787 1434.822632 1427.04248 1419.807983 1420.913452 1422.986572 1425.401367 1430.037964 1440.617554 1443.334717 1442.128662 1437.710205 1429.437378 1424.113159 1422.002319 1421.200928 1424.006836 1436.312378 1450.773315 1457.738159 1464.168213 1467.702148 1470.783569 1474.96582 1480.562988 1488.12085 1494.689209 1498.732056 1511.098511 1517.769165 1524.782837 1526.961426 1525.341431 1521.693359 1520.93335 1526.346558 1529.652954 1532.38623 1520.558105 1506.170776 1484.699951 1459.41687 1432.119995 1414.265869 1404.753174 1395.488037 1384.443359 1364.75 1343.901978 1324.121094 1315.230713 1328.990479 1348.081421 1361.217407 1376.659302 1387.893555 1398.74707 1408.239624 1420.187012 1439.57019 1454.590088 1474.485107 1497.278931 1513.324097 1527.807129 1543.133057 1539.868164 1527.745728 1510.678955 1497.440186 1487.726318 1490.880859 1491.427979 1488.417603 1476.84436 1467.682861 1459.533569 1450.12854 1436.750854 1428.289429 1419.801147 1420.783203 1420.143921 1420.625977 1425.64856 1438.542969 1449.515503 1453.20459 1454.181519 1459.251587 1460.576782 1480.603271 1492.431396 1499.677856 1503.609985 1513.082642 1523.63562 1539.822144 1530.76123 1518.174072 1509.8396 1499.253174 1492.028687 1498.460693 1499.819214 1500.13501 1499.071045 1497.240967 1497.913208 1503.452148 1511.68457 1511.671631 1506.570312 1508.28064 1512.758057 1514.83667 1517.728027 1522.488525 1520.359009 1511.077026 1499.066162 1492.89502 1485.848755 1475.829468 1467.859009 1460.168701 1451.81604 1442.412476 1441.142212 1442.971924 1442.505493 1440.717041 1437.419067 1432.817505 1428.395996 1431.505737 1439.80957 1448.682251 1450.601685 1445.060791 1436.289185 1434.223999 1433.105469 1431.08252 1427.962524 1423.452637 1417.382812 1410.301025 1404.374756 1399.308472 1394.259277 1390.530029 1387.125366 1388.905884 1393.596924 1400.97644 1403.347046 1398.765381 1390.614136 1389.889038 1391.295166 1389.047729 1389.574341 1391.632446 1391.989258 1392.039307 1391.617554 1388.661133 1384.706543 1380.523315 1376.429321 1371.727661 1368.084229 1363.793701 1357.709351 1352.075806 1343.703491 1335.0271 1327.884033 1326.418579 1330.853394 1340.187378 1351.334961 1358.843872 1364.448364 1365.209961 1365.293213 1370.583374 1376.935913 1379.776001 1380.825684 1378.157349 1378.018555 1378.035889 1373.059326 1370.016846 1370.662598 1374.385742 1376.444824 1378.061768 1381.31897 1381.239624 1378.058716 1372.843994 1368.539062 1367.966675 1366.184082 1366.05835 1367.225586 1367.894775 1367.684082 1367.063721 1366.259399 1364.640991 1362.696289 1360.737671 +1694.913818 1683.393188 1680.949463 1684.689575 1691.835938 1696.900391 1700.39856 1703.637207 1705.630371 1707.493774 1708.244141 1707.483521 1703.940796 1706.665039 1712.088501 1716.561157 1719.393188 1720.636963 1721.40918 1721.550049 1721.162354 1719.473999 1714.841797 1707.849609 1703.217163 1701.189453 1698.109619 1686.918823 1671.841797 1668.445557 1665.008911 1659.463379 1651.316772 1646.021851 1643.373779 1642.065552 1641.395386 1643.096558 1646.370728 1653.682983 1659.351318 1661.70166 1661.694092 1662.201172 1668.259277 1679.048706 1688.4021 1688.79895 1697.59729 1705.061279 1708.584473 1704.852905 1702.164429 1706.195679 1710.002563 1711.78186 1712.609741 1712.741333 1712.453979 1711.903931 1711.55603 1711.1698 1711.385498 1712.446533 1712.817505 1712.759521 1712.746948 1712.541016 1711.952393 1710.672363 1706.992798 1699.147705 1691.154297 1685.09436 1674.195557 1663.057373 1653.159912 1647.731323 1643.613037 1634.317383 1621.885132 1615.233276 1608.591431 1600.634155 1589.475952 1577.403076 1568.394897 1566.357544 1572.593994 1590.838135 1600.92395 1601.655273 1606.464233 1613.644775 1619.624023 1633.618652 1647.168701 1657.881958 1665.060303 1672.349854 1681.237671 1690.188721 1700.226074 1700.592651 1688.03479 1671.766235 1653.375366 1631.49231 1608.578979 1598.016479 1595.245728 1591.652222 1591.681885 1592.166504 1593.012085 1583.178711 1568.897827 1551.003418 1535.157471 1525.453247 1518.378662 1508.724365 1496.980225 1482.278198 1469.224976 1467.518555 1474.841919 1485.807739 1497.017334 1503.715698 1505.310425 1501.633789 1494.95874 1487.998901 1481.245117 1472.353516 1462.651001 1455.401733 1448.955566 1446.577637 1457.064331 1479.369873 1494.875122 1507.470215 1520.69873 1540.998291 1554.37561 1566.479858 1584.346924 1590.422241 1576.941162 1568.36792 1562.400269 1558.34314 1562.18811 1561.715454 1556.546143 1549.873047 1553.622437 1558.879028 1563.040527 1563.069092 1561.745728 1567.87207 1573.695557 1576.196411 1573.376465 1570.809082 1568.033447 1563.968018 1559.96814 1556.986572 1555.181641 1554.026123 1552.890259 1551.182617 1548.944946 1546.074829 1541.927002 1540.760498 1539.661865 1537.621216 1534.847412 1535.123657 1533.819824 1536.026001 1538.209351 1538.996948 1538.347168 1539.280029 1541.203491 1542.637695 1543.657593 1545.813232 1548.801636 1551.947388 1554.85144 1556.650146 1559.322144 1563.98999 1569.619385 1574.760864 1589.323853 1596.940918 1608.883667 1609.703369 1609.453491 1610.078125 1609.674561 1607.404541 1598.426758 1598.386353 1601.066406 1599.350342 1592.80603 1582.566162 1572.745605 1580.790527 1594.071777 1600.798706 1603.270874 1602.995483 1599.888306 1594.296631 1593.851318 1598.872925 1599.882568 1594.460327 1576.559448 1575.348389 1582.077759 1586.177856 1588.270264 1596.060791 1609.893311 1618.083496 1624.266724 1623.961182 1607.598633 1584.275879 1571.75061 1571.882446 1575.736206 1577.956177 1575.78125 1568.039307 1555.963013 1544.319092 1536.348877 1525.162964 1515.948608 1500.866943 1485.803833 1489.691162 1493.019897 1497.426147 1500.908936 1501.637573 1497.630371 1498.694946 1504.685181 1509.978271 1514.348633 1516.978271 1521.244507 1526.755737 1531.185059 1534.427734 1535.165161 1532.234497 1521.328369 1506.298828 1497.859009 1492.46814 1491.793823 1497.465942 1512.993042 1525.807251 1541.379761 1553.57666 1560.680664 1564.390747 1564.039062 1558.349609 1553.124023 1542.279785 1533.055664 1527.175293 1523.413574 1523.66333 1524.61084 1526.740356 1527.773315 1526.876709 1524.25354 1517.107666 1506.875732 1498.95459 1488.270752 1486.744995 1497.163452 1510.403198 1529.631226 1546.477173 1559.543945 1543.880615 1526.819702 1509.497559 1497.79187 1482.726074 1475.782593 1479.703613 1491.274536 1504.063232 1518.290649 1527.027588 1536.209961 1545.309937 1555.747803 1563.637451 1560.754272 1555.02417 1546.373169 1535.476562 1529.886475 1542.782715 1559.666504 1578.934692 1575.230469 1564.117554 1546.416504 1534.62207 1522.025757 1536.220703 1550.292358 1567.34375 1576.082397 1578.771973 1585.776855 1591.940674 1597.584473 1598.859009 1589.444824 1586.537964 1583.773315 1580.183716 1574.29541 1566.456421 1560.251343 1555.755249 1548.292236 1546.226807 1543.286621 1542.174927 1549.745361 1551.208008 1551.911987 1554.148804 1556.592163 1559.201904 1561.657471 1564.816895 1569.109375 1574.55603 1580.730225 1586.337769 1588.187988 1586.651855 1581.584595 1573.699829 1575.164307 1575.561768 1576.916992 1577.016968 1567.802979 1557.444458 1557.173218 1554.195435 1549.485596 1539.757202 1529.461548 1520.923706 1513.68689 1501.060913 1487.79187 1476.13623 1475.206177 1477.077148 1471.688599 1464.248901 1459.560913 1456.02063 1453.905396 1450.339233 1442.605713 1437.545654 1432.791382 1426.856201 1420.821655 1423.139648 1425.966919 1431.03833 1441.039917 1450.302979 1445.253906 1438.92041 1432.838379 1426.362183 1424.849976 1423.321167 1422.454224 1422.932495 1434.836182 1450.465698 1457.178711 1463.056519 1466.577515 1471.141602 1476.698853 1480.063721 1483.054199 1488.107544 1497.972046 1511.192749 1516.911133 1523.341553 1526.306396 1525.449829 1519.941162 1512.717163 1512.447388 1516.922119 1517.269653 1510.738159 1495.960571 1477.953125 1454.324951 1424.324097 1408.129761 1397.685059 1388.245117 1372.712646 1358.384644 1337.157104 1321.388306 1316.104858 1337.204102 1354.006958 1366.078369 1382.550537 1395.770508 1405.924561 1412.635864 1424.858765 1444.862549 1460.753296 1488.890625 1507.799683 1522.774536 1542.744263 1552.323364 1549.928345 1538.780273 1522.164062 1509.944458 1503.164917 1503.240234 1503.648682 1500.614014 1490.553833 1481.883423 1471.31543 1460.705566 1445.316772 1433.650757 1429.630127 1429.711792 1427.489014 1429.5896 1431.561401 1433.227173 1436.218262 1441.276489 1446.864258 1452.521484 1460.948608 1476.254517 1483.311768 1486.044678 1489.002197 1505.123779 1520.93457 1534.150757 1528.241333 1516.341553 1505.960449 1496.185303 1487.232666 1489.040649 1492.700684 1493.487915 1491.347534 1488.053955 1493.244873 1498.357666 1501.543091 1504.793213 1499.842041 1504.368286 1511.089966 1514.830566 1515.956787 1514.328247 1512.808472 1506.610352 1497.812988 1490.509766 1483.365112 1474.872925 1467.61438 1460.920532 1453.099243 1450.024292 1449.55188 1450.291992 1449.95166 1447.786987 1444.175293 1439.637085 1435.034058 1436.719727 1436.866821 1441.531494 1446.078369 1443.175903 1432.876587 1425.241333 1419.984131 1417.486816 1415.926758 1413.045776 1409.013916 1403.70752 1399.019653 1394.753906 1389.805786 1389.429199 1393.099731 1397.610352 1402.975098 1405.408081 1404.974609 1401.561646 1393.96228 1395.064087 1395.918701 1392.113647 1392.73584 1393.567749 1393.253906 1392.492065 1390.483276 1387.069092 1382.958374 1379.539917 1375.625732 1371.322632 1368.877808 1365.334106 1358.121094 1353.588989 1345.101196 1332.339355 1329.283569 1330.120728 1332.151123 1340.316772 1345.405884 1349.072266 1354.096924 1361.55603 1368.267944 1375.97644 1380.048828 1382.070557 1383.018066 1382.03479 1381.503174 1381.193481 1378.347412 1376.285522 1377.888184 1379.319214 1380.602783 1382.045288 1384.123047 1383.034424 1377.909912 1375.597656 1373.933228 1372.120972 1370.727295 1370.292114 1371.036865 1371.347656 1371.035889 1370.291748 1369.162476 1367.476196 1365.418091 1364.723755 +1698.850098 1688.588867 1682.36438 1689.919678 1697.132812 1701.724487 1705.784058 1710.038086 1713.256104 1714.525269 1714.503296 1712.884644 1708.01001 1709.540161 1719.615845 1721.758789 1722.922852 1723.79895 1724.925781 1725.569702 1725.343506 1724.054443 1721.377686 1716.524658 1712.328735 1708.885498 1702.461426 1694.142212 1685.876099 1685.038086 1673.516602 1664.27063 1656.502197 1649.537109 1645.57959 1645.466309 1645.506104 1644.362183 1644.121094 1645.898804 1650.514893 1654.573364 1655.653076 1656.827515 1660.368774 1666.226929 1673.23938 1681.002197 1690.193115 1695.917725 1696.118286 1695.235107 1694.822998 1706.958984 1709.701904 1710.928589 1711.808472 1712.149658 1712.124878 1711.985962 1711.721191 1711.540039 1711.646362 1711.881592 1712.104614 1712.269531 1711.613647 1709.693359 1707.453247 1703.948608 1699.100342 1693.808105 1685.232544 1674.745117 1665.971802 1659.635132 1654.679321 1651.158447 1649.641968 1640.445557 1631.665649 1625.338745 1614.37439 1602.998291 1591.913696 1575.782471 1571.667725 1572.915771 1568.59082 1575.441528 1587.648682 1593.854492 1601.539062 1607.390137 1619.909424 1634.002808 1642.925415 1651.485352 1658.785767 1664.670288 1672.248047 1680.072876 1685.109741 1690.322266 1689.252319 1678.339844 1656.800659 1635.741333 1626.062256 1617.264038 1614.333252 1608.789062 1600.901611 1600.061646 1597.363525 1585.723877 1572.453979 1557.699951 1540.934692 1532.443848 1523.768555 1514.281006 1499.247803 1483.452148 1468.957642 1472.689209 1479.40332 1485.815186 1501.916504 1514.099976 1516.222412 1514.105591 1505.111206 1495.427368 1488.350586 1479.755493 1468.005005 1458.202271 1451.106079 1447.114624 1453.689941 1473.646118 1486.375488 1500.912354 1518.740479 1540.81665 1553.477905 1565.750732 1583.635864 1595.881226 1581.741699 1570.829834 1564.898071 1548.926025 1544.477661 1542.93811 1537.584229 1538.354004 1544.458618 1547.908813 1545.99353 1545.751099 1547.014771 1556.750977 1563.167236 1565.894897 1565.962158 1564.404419 1562.210815 1558.939819 1554.294189 1550.386841 1548.684204 1547.989502 1547.248291 1545.427856 1543.138428 1540.425537 1535.774292 1534.984863 1533.818848 1531.954834 1529.121094 1528.434326 1529.972168 1535.546997 1537.933716 1537.430542 1535.238647 1537.255127 1539.090088 1539.980713 1540.363159 1541.209961 1543.832764 1547.36438 1549.887085 1550.644897 1554.572266 1560.017212 1566.211426 1579.42749 1597.01355 1606.598511 1612.34668 1612.948364 1613.067993 1613.370605 1613.375854 1612.183228 1608.586548 1607.947388 1606.149902 1602.628052 1597.930176 1584.06311 1575.731567 1585.220947 1595.176392 1602.784424 1607.251221 1607.443604 1602.968628 1596.732544 1597.967773 1600.785889 1600.059204 1591.660645 1582.993774 1583.935791 1593.657959 1598.337402 1601.502319 1603.706421 1609.688599 1618.967896 1624.566895 1626.561523 1616.267456 1597.408813 1580.507446 1583.2323 1583.238403 1578.13916 1569.086182 1556.674316 1545.913818 1536.371704 1527.911499 1515.521118 1508.343506 1495.075806 1488.485474 1493.070068 1496.891479 1504.473511 1510.921509 1508.502808 1505.598389 1504.766113 1509.123779 1513.074219 1517.366211 1520.23584 1523.773804 1529.274292 1534.371094 1538.053955 1539.182739 1535.127563 1520.377197 1506.627075 1498.562012 1493.158936 1494.09436 1503.176147 1520.511963 1536.055542 1555.216309 1565.696411 1571.001343 1573.151245 1572.511963 1569.747559 1565.457764 1556.935913 1542.246582 1537.230469 1533.313354 1535.163696 1537.871582 1539.195557 1538.527588 1537.901855 1535.718994 1531.685181 1524.481812 1510.012329 1501.822266 1493.496704 1496.466064 1509.142334 1528.488525 1546.2771 1561.967651 1556.807861 1535.563965 1518.846069 1508.988281 1498.837402 1490.083496 1478.162598 1482.887817 1489.574585 1498.555786 1509.561768 1517.914429 1530.150513 1542.209351 1555.404175 1564.321655 1563.694824 1558.318359 1547.40918 1536.843506 1546.846313 1563.112183 1583.550293 1589.759888 1580.084229 1563.197998 1546.884888 1536.324707 1538.327271 1557.97583 1570.956055 1590.009155 1595.988281 1595.935181 1604.184082 1604.320312 1598.127441 1589.363647 1582.779907 1576.836914 1572.565186 1569.411255 1561.692383 1561.283691 1559.532349 1553.762451 1549.607178 1545.114746 1537.070923 1536.209229 1540.740845 1542.626709 1545.839844 1547.596069 1550.145142 1552.771362 1555.832275 1559.683594 1563.421265 1568.14978 1571.623047 1573.143188 1577.648438 1576.917725 1568.298096 1560.491211 1562.306152 1567.256592 1569.940308 1562.349854 1546.708252 1543.437378 1546.814819 1549.413452 1552.510132 1543.18811 1528.121338 1516.891235 1504.054321 1492.661987 1488.197632 1482.470825 1479.519409 1474.204102 1462.620239 1458.331177 1454.747681 1453.025391 1449.124512 1442.130737 1436.020874 1430.141113 1425.130493 1422.418213 1425.762695 1431.880249 1442.026733 1453.185059 1453.49707 1440.447021 1436.055054 1431.008179 1427.929321 1426.773071 1424.914551 1423.060059 1423.505371 1431.562622 1445.683594 1454.327026 1458.990967 1463.373413 1467.456177 1468.311646 1472.542114 1473.343872 1483.356812 1494.484741 1504.925659 1512.471802 1519.772339 1525.637695 1526.395142 1522.627808 1515.060425 1505.837891 1502.724121 1505.748291 1500.376709 1483.307861 1465.06958 1444.677856 1420.725464 1406.635376 1391.556641 1373.580933 1361.388306 1351.513916 1329.408325 1316.545532 1323.285889 1342.679077 1360.698242 1377.697388 1390.071045 1401.691406 1411.877319 1421.737793 1436.168579 1454.69873 1469.89917 1493.518188 1513.119263 1537.402344 1557.200684 1562.854614 1556.064819 1545.623535 1532.485962 1523.140259 1517.200806 1517.963135 1519.099365 1517.043213 1506.277466 1496.722534 1481.011108 1468.282593 1453.28418 1437.815918 1435.498047 1436.002441 1435.987061 1438.00708 1439.672607 1438.671265 1437.505859 1439.408569 1446.171997 1450.463379 1457.227051 1462.702637 1470.991821 1476.791992 1486.65564 1505.130737 1516.172852 1525.364014 1526.905884 1520.806396 1511.560059 1501.333984 1489.88916 1486.197388 1487.245605 1487.032227 1483.428223 1482.025024 1489.064697 1490.390869 1492.703003 1502.156372 1497.000122 1501.883789 1507.795288 1513.682861 1512.560303 1506.428467 1503.0 1500.730957 1493.659058 1486.21106 1479.801392 1472.398315 1465.273682 1460.976807 1456.30542 1453.782959 1453.660156 1453.86084 1453.966675 1453.642944 1452.134033 1446.465942 1439.81897 1440.061279 1440.328003 1442.314819 1443.658936 1442.634766 1439.577759 1428.170776 1418.817383 1412.409424 1404.317993 1402.483398 1401.397461 1398.184082 1394.197266 1391.800049 1394.365112 1395.962524 1399.898926 1404.776123 1407.393311 1408.404541 1405.973511 1401.133667 1401.180908 1403.036987 1401.749268 1398.648804 1396.381592 1394.711426 1393.867065 1392.589233 1389.704712 1384.983032 1381.003662 1376.472412 1371.736938 1368.947021 1367.210815 1361.365845 1354.429443 1348.139771 1340.14624 1332.236938 1340.793945 1342.450562 1340.992798 1339.46936 1340.835327 1346.809814 1352.997559 1361.678223 1369.115356 1377.663574 1381.703613 1384.536133 1386.03186 1385.640625 1385.150269 1383.970093 1381.673828 1382.161011 1383.814697 1385.563965 1387.038696 1387.558716 1388.095581 1386.485596 1381.521729 1378.861816 1378.452148 1377.546997 1376.007446 1375.083984 1375.542236 1375.673218 1374.970947 1373.938599 1372.496948 1370.690186 1368.781006 1368.108032 +1700.793579 1692.839111 1690.446655 1695.484253 1700.897827 1705.546143 1711.852783 1720.255249 1722.149536 1721.685059 1721.111206 1720.645508 1717.959839 1716.783203 1721.647461 1723.835083 1725.427734 1726.984863 1728.438354 1729.440552 1729.860718 1728.754639 1725.508789 1721.787231 1717.211792 1712.479492 1706.467285 1694.943359 1692.480713 1687.640137 1680.991577 1665.727539 1658.144775 1653.447754 1650.027954 1651.118042 1652.209961 1651.553345 1650.057007 1648.584106 1647.938232 1649.580444 1652.304199 1654.678101 1656.529175 1659.995361 1668.645386 1675.451172 1681.306152 1685.609741 1686.491089 1690.359985 1696.782104 1707.034546 1709.464111 1710.228027 1710.784302 1710.994629 1711.145752 1711.192505 1711.263794 1711.233032 1711.077393 1711.070679 1710.989746 1710.33728 1707.980957 1702.382324 1696.631958 1693.373169 1691.317871 1687.408691 1680.277222 1667.341553 1656.513672 1646.645386 1642.684448 1646.541748 1646.744995 1640.123047 1632.140137 1622.539429 1610.507202 1599.780151 1586.892334 1574.502808 1575.336182 1577.19458 1574.071045 1570.821655 1582.226196 1591.240356 1596.878296 1607.66687 1619.278564 1630.024658 1636.857666 1643.198242 1648.72998 1656.55542 1663.905396 1668.844238 1674.236938 1680.706177 1685.43811 1681.778076 1667.941895 1654.744385 1643.139648 1630.407837 1618.571533 1604.931396 1593.962769 1585.421631 1583.587769 1578.540527 1570.107178 1558.543213 1545.294312 1534.481201 1523.290527 1513.59436 1497.698975 1480.749268 1471.25293 1476.751953 1483.141846 1488.676025 1503.361572 1518.689697 1524.063354 1523.296021 1517.3479 1503.420776 1494.104004 1484.589478 1474.815552 1459.588379 1451.545166 1448.434448 1458.331909 1479.255859 1490.258667 1498.227417 1507.865112 1526.494995 1546.9823 1557.538208 1579.973877 1598.374756 1584.636108 1574.109009 1565.562988 1550.701294 1527.836792 1528.947144 1525.439331 1526.705688 1538.753052 1538.71228 1531.249756 1534.093994 1542.521973 1550.914917 1554.041748 1555.357788 1557.740967 1556.936401 1554.342896 1551.545654 1548.378906 1545.165771 1543.147461 1542.277466 1541.367065 1539.960205 1538.261719 1536.120483 1533.118896 1529.857666 1527.933594 1526.628418 1523.938599 1523.928955 1524.850464 1534.606812 1537.311035 1534.829834 1532.644165 1534.728394 1537.039185 1537.234253 1537.340088 1537.098267 1536.735352 1538.381592 1544.694702 1548.529297 1552.736206 1558.552368 1568.205933 1586.023315 1600.675293 1609.496826 1613.535767 1614.582764 1614.161865 1615.56897 1617.711914 1617.59021 1614.61084 1612.660034 1609.99353 1605.31604 1599.497681 1584.78772 1584.378052 1588.866455 1595.470093 1606.223511 1611.374756 1611.526855 1609.577881 1604.698975 1604.270508 1603.666138 1600.054688 1595.640137 1596.682617 1595.133179 1599.368408 1604.472778 1610.181641 1611.251831 1613.843262 1621.880371 1624.794922 1625.301514 1620.612183 1609.615845 1602.545166 1592.163452 1583.881348 1576.041138 1562.480591 1549.326904 1537.095825 1528.9104 1519.608765 1508.835693 1503.162964 1492.643433 1492.976562 1496.669067 1500.391602 1514.481201 1517.434082 1517.085571 1514.196411 1515.38916 1515.039185 1517.447388 1521.323608 1523.420288 1527.338867 1532.477051 1537.985229 1543.293091 1543.482544 1536.765015 1522.658813 1508.082642 1499.148438 1494.248657 1495.949585 1515.025146 1530.645386 1547.397583 1566.377197 1577.999512 1587.40564 1586.737915 1586.131592 1584.893311 1577.983032 1568.41333 1556.045898 1552.391113 1545.220581 1545.921509 1551.747314 1553.961426 1552.628906 1546.282227 1547.829468 1546.005615 1532.717163 1522.985962 1510.958252 1501.183228 1499.042114 1510.361572 1528.699097 1543.963501 1563.270874 1564.912598 1545.029419 1531.615967 1520.258179 1510.603638 1501.1604 1492.359131 1484.008545 1481.961914 1486.805542 1493.335693 1500.209839 1514.424805 1529.175171 1539.471924 1552.086548 1561.329346 1565.303589 1562.919312 1547.909302 1549.288818 1563.762817 1586.708618 1596.879517 1594.206299 1580.052368 1562.619507 1550.76355 1543.968628 1558.15979 1576.749146 1593.713013 1605.264893 1613.005249 1616.283813 1610.065674 1603.687622 1595.68457 1585.606567 1574.232788 1573.961304 1573.610229 1572.0 1569.14917 1566.100342 1562.828369 1557.595215 1552.557861 1545.627563 1535.522461 1533.625488 1533.705811 1533.97168 1536.777344 1539.165161 1541.912109 1545.556641 1549.416138 1552.227661 1554.899292 1557.972656 1562.396973 1570.167236 1571.620117 1565.404907 1553.325439 1551.73999 1556.997437 1559.236694 1555.408569 1539.144409 1526.92981 1523.541748 1536.133789 1543.92395 1546.621826 1535.621948 1523.177002 1515.382446 1503.355225 1492.399292 1483.890625 1477.383301 1465.525635 1459.721924 1454.132812 1451.022705 1449.680908 1445.37793 1439.966064 1432.141602 1426.255737 1424.10022 1423.755005 1430.180176 1439.208008 1449.526001 1453.660522 1448.191406 1438.150635 1436.742432 1436.477905 1436.456543 1435.486206 1428.797729 1424.925415 1423.603027 1425.556274 1436.755249 1447.579346 1452.979004 1455.978394 1456.576416 1458.306152 1461.284302 1468.790527 1478.069702 1486.595703 1499.162231 1510.152954 1516.45105 1522.983887 1526.317993 1525.724854 1518.124146 1507.511963 1491.354004 1488.349854 1479.246948 1465.90979 1449.738037 1431.539673 1413.727661 1403.7677 1389.555908 1370.319702 1354.717041 1335.436035 1321.220459 1316.10791 1328.392334 1343.895142 1362.335205 1379.043823 1394.547119 1407.649414 1418.661133 1433.290771 1451.944702 1465.329102 1487.790527 1501.934326 1516.378418 1534.763672 1556.863647 1570.180664 1563.560425 1553.105957 1543.572876 1542.373169 1546.351562 1548.51062 1545.903564 1538.807983 1517.483887 1505.013794 1484.231934 1471.821777 1456.436401 1443.355591 1443.054443 1444.988647 1444.717529 1447.120972 1448.839844 1447.560425 1446.24707 1449.401123 1451.136963 1451.470825 1455.779541 1461.250366 1468.978882 1478.463623 1489.807251 1504.81665 1514.311523 1517.790771 1524.252075 1524.387451 1513.699585 1502.753052 1491.381714 1485.291748 1483.278687 1475.351807 1473.802734 1474.880737 1479.67627 1481.010986 1483.571045 1490.514282 1489.02124 1491.236694 1500.30957 1512.800781 1508.477661 1499.805664 1496.10144 1494.396606 1489.656738 1482.879272 1475.903931 1467.855103 1462.281006 1459.142822 1455.99939 1454.123413 1453.69165 1453.688354 1453.746338 1453.775879 1453.383545 1451.560547 1446.913574 1443.956787 1442.766113 1442.833618 1443.075195 1442.017944 1440.403564 1434.66748 1428.302612 1418.31311 1408.592529 1401.186768 1398.21875 1394.444702 1397.406982 1402.057617 1403.028076 1400.69397 1405.758789 1411.89978 1413.55249 1412.451782 1406.387329 1402.559937 1407.303467 1407.750366 1405.00415 1401.113159 1397.428345 1394.409912 1392.818726 1391.711548 1387.859131 1382.748413 1379.711426 1373.147095 1366.217041 1365.3302 1362.769775 1353.444824 1351.72644 1343.616455 1337.013184 1346.03833 1352.115112 1351.997192 1345.500732 1344.51709 1342.477661 1346.116821 1352.764038 1361.891235 1368.934448 1376.550415 1379.918213 1387.281616 1389.141968 1389.065796 1388.191162 1387.315186 1387.489502 1388.479004 1390.850586 1392.375122 1393.289185 1393.324707 1392.748169 1391.249023 1388.688477 1385.899902 1384.394897 1382.855469 1380.759399 1379.562256 1380.157837 1380.069214 1378.831543 1377.590088 1376.289307 1374.679932 1372.503784 1370.707031 +1703.581665 1697.48938 1693.544922 1698.177979 1705.018188 1710.580933 1717.196655 1724.009155 1727.732788 1727.601562 1725.843628 1723.585938 1721.109253 1719.821289 1722.675171 1725.578491 1727.828735 1729.665161 1731.408447 1732.80603 1733.491211 1732.498657 1728.822021 1724.559692 1720.261353 1714.525757 1708.243774 1701.07666 1694.973511 1686.046997 1678.024292 1666.586426 1657.46936 1656.779907 1658.292969 1660.446289 1661.027588 1660.625122 1658.679077 1654.594849 1656.291992 1659.766113 1659.811279 1658.354858 1656.497192 1657.422607 1662.708374 1669.156494 1673.299561 1677.184448 1680.239502 1690.297607 1699.835938 1707.589478 1709.197632 1709.602295 1709.599976 1709.233398 1709.356689 1710.181519 1710.462158 1710.34729 1709.865967 1709.294434 1708.722412 1707.779419 1701.693848 1692.848877 1684.400879 1683.198242 1684.778931 1682.247437 1674.924561 1663.786865 1647.421875 1636.735107 1631.107788 1634.177612 1635.20105 1631.562866 1622.555664 1611.300659 1600.259155 1590.344604 1581.887329 1575.301636 1580.28125 1584.479858 1583.048462 1573.702759 1574.325684 1586.868652 1596.236694 1605.967651 1617.829712 1625.210327 1629.819092 1633.160034 1638.451172 1646.718506 1655.477051 1660.879761 1665.477783 1672.708618 1680.259277 1679.40625 1670.151855 1658.959229 1648.092285 1635.040405 1619.364746 1605.164917 1588.571289 1573.449463 1570.321167 1567.738525 1562.133911 1550.971558 1542.58313 1532.874512 1519.812256 1509.112427 1494.068115 1478.639893 1474.755737 1479.790894 1487.711548 1500.944336 1512.0802 1524.763794 1529.432861 1529.578247 1526.223755 1516.605713 1501.534546 1488.736816 1478.450562 1460.154785 1451.794434 1449.552979 1462.077148 1479.60376 1495.59436 1509.0625 1522.232788 1529.102905 1540.121704 1551.390503 1568.576416 1586.900635 1589.335449 1581.794434 1570.241821 1558.761719 1540.12854 1519.888306 1516.46814 1517.660278 1525.115112 1527.489258 1522.192261 1530.839478 1539.30957 1541.398804 1541.212646 1541.755005 1544.915283 1546.321289 1546.251709 1545.269409 1543.077271 1540.067993 1537.090698 1536.985474 1536.103638 1534.885986 1533.312256 1531.572998 1529.12793 1525.934937 1522.687256 1522.049683 1521.067627 1521.181519 1525.281982 1529.755371 1531.994019 1530.209961 1527.233276 1528.666626 1529.555664 1532.430298 1534.020996 1535.487793 1536.272095 1537.78833 1543.752563 1549.187134 1553.571289 1558.920044 1566.670532 1580.711426 1595.611084 1602.57312 1607.992432 1609.56604 1610.577026 1614.766113 1620.811768 1623.166382 1619.738647 1615.656494 1611.94751 1606.226318 1599.317627 1584.339478 1592.263794 1599.510742 1603.369995 1610.582397 1614.029907 1615.160645 1614.042236 1611.814941 1609.271973 1607.440308 1603.66333 1600.903076 1600.230957 1599.616699 1600.875244 1605.247559 1609.950317 1612.267212 1616.049683 1622.822876 1623.543091 1619.769531 1616.640869 1613.382812 1601.479004 1588.611938 1575.230347 1562.032593 1553.302612 1543.178589 1533.036255 1522.144287 1510.970459 1510.404419 1499.88916 1497.66394 1498.193726 1501.31543 1508.903931 1516.780029 1525.974487 1525.162964 1525.983643 1526.466187 1524.615112 1523.462402 1526.885376 1528.666626 1531.874146 1535.005615 1541.843994 1549.5 1548.37085 1536.433716 1521.446289 1509.028809 1498.566406 1495.159424 1501.656372 1522.468994 1537.190186 1557.098145 1577.366699 1590.672729 1603.134399 1604.25708 1601.298462 1600.070923 1591.522095 1579.95459 1574.312134 1570.543823 1561.895264 1560.588867 1565.411987 1566.904785 1566.451294 1563.101807 1564.215454 1559.027954 1541.751709 1530.392944 1517.222168 1507.297485 1500.705322 1510.840576 1529.761475 1543.745239 1563.86438 1573.357666 1558.006836 1543.145264 1532.053833 1522.926636 1513.358521 1501.16626 1492.05127 1490.469482 1488.747192 1487.718018 1493.562744 1500.216309 1514.32373 1525.785156 1536.869019 1543.07959 1554.059204 1564.858154 1563.259644 1554.828125 1562.368774 1584.395874 1598.501953 1601.915649 1593.495483 1575.457153 1566.248047 1558.251953 1556.893066 1570.375366 1590.498901 1603.314575 1617.88562 1626.617188 1617.679443 1604.299683 1593.786743 1584.609985 1581.42041 1581.19397 1580.062378 1578.454224 1576.079712 1572.259766 1568.140015 1563.822144 1558.661743 1552.812256 1543.290649 1534.359131 1531.759033 1524.370728 1522.635254 1525.250244 1528.430908 1531.698853 1535.198364 1538.265381 1541.275879 1543.411743 1551.982788 1557.445801 1560.491089 1559.438354 1551.272339 1542.984741 1546.763794 1549.846313 1548.227417 1531.890381 1520.141968 1512.299316 1516.027832 1526.748779 1535.193237 1537.874756 1524.499146 1512.089478 1505.378784 1495.943359 1484.946655 1475.166748 1464.517822 1458.502441 1452.661133 1447.933105 1444.55542 1440.882202 1435.716187 1428.063965 1425.438843 1424.315063 1427.70874 1435.945435 1444.417969 1451.605713 1453.267456 1448.408203 1441.967285 1441.074463 1442.728149 1443.994385 1443.714111 1438.025391 1429.247314 1424.515015 1424.719971 1426.113037 1436.603149 1443.738281 1446.20752 1445.157227 1449.082275 1455.36731 1463.532837 1472.884155 1487.637939 1496.192261 1502.456909 1510.46521 1516.628662 1523.533691 1526.780029 1519.609497 1509.081177 1490.101318 1464.974976 1454.297729 1444.796997 1431.66687 1418.787476 1408.047729 1399.054565 1385.76355 1368.030396 1350.770142 1328.519775 1316.577026 1323.512207 1341.108765 1360.959961 1374.143677 1383.781006 1396.470581 1412.386597 1424.143921 1442.578857 1458.705688 1481.513916 1498.900757 1513.856812 1526.168701 1542.009644 1562.135498 1576.233643 1569.637085 1562.972168 1555.086304 1551.970337 1551.299805 1550.400635 1547.10437 1540.527466 1524.081665 1505.844604 1487.549072 1471.854248 1460.050415 1454.014526 1456.777222 1456.721924 1455.935913 1457.753418 1457.876465 1456.363892 1455.596069 1457.828369 1459.810791 1461.53479 1460.854858 1460.738525 1473.223267 1484.750122 1501.07312 1513.219727 1510.951538 1508.146973 1512.384277 1518.561768 1511.127075 1498.589722 1493.845947 1489.778931 1489.244385 1487.219727 1482.977783 1475.991455 1473.589478 1473.286011 1476.438477 1479.894409 1480.56543 1485.799561 1500.773926 1505.367188 1502.783936 1497.737427 1491.019775 1489.691772 1486.043091 1480.069702 1472.970215 1463.561279 1459.626709 1456.321655 1453.234741 1451.400879 1452.623413 1453.200439 1453.086182 1452.919556 1452.003296 1450.536011 1447.920044 1444.911865 1443.2323 1441.991943 1441.319214 1440.703003 1439.564087 1435.506104 1429.975464 1422.06311 1412.356934 1403.400879 1397.471313 1395.861816 1405.174316 1411.77771 1412.189697 1409.347168 1413.6604 1418.295288 1417.86084 1415.85437 1407.952393 1407.690186 1415.584839 1413.014526 1406.047852 1400.499878 1392.754639 1390.135254 1389.516968 1385.957031 1380.370483 1378.610474 1375.055176 1366.56665 1365.196655 1365.494751 1364.240723 1359.933716 1356.281982 1347.497192 1344.017456 1357.841064 1360.227051 1360.09021 1353.180298 1353.510986 1356.219849 1352.629883 1352.172363 1367.393066 1376.464844 1382.463501 1389.0271 1390.162476 1391.989868 1392.293823 1391.757446 1390.977295 1391.24939 1393.0802 1396.785889 1398.965576 1399.98645 1400.437622 1400.321899 1398.853149 1396.313354 1393.397339 1390.85498 1388.885254 1387.489746 1386.322266 1385.571655 1384.631104 1382.954346 1381.024292 1379.736328 1378.194824 1375.680176 1373.084595 +1705.229004 1702.276245 1698.568848 1701.500122 1708.052246 1714.126709 1720.427002 1729.720581 1733.305786 1732.450195 1729.520386 1726.171997 1724.162354 1723.675415 1724.981445 1727.054321 1729.422852 1731.778442 1733.260742 1733.935303 1733.958984 1733.745972 1730.466187 1725.803101 1721.423462 1714.446655 1707.702026 1700.65271 1693.506958 1682.332153 1675.562988 1666.189697 1657.515259 1661.764038 1666.518433 1670.28479 1670.975464 1668.322632 1666.022339 1660.259155 1662.891479 1666.949341 1670.604492 1670.200195 1665.511597 1662.317261 1660.267212 1664.249512 1667.969482 1670.502808 1679.074463 1693.6698 1701.333618 1706.633301 1708.91333 1709.072144 1708.265503 1707.359375 1707.080933 1708.884399 1709.525513 1709.411011 1708.836426 1708.05603 1705.800171 1700.234253 1692.723755 1684.252319 1673.644043 1668.946045 1673.317017 1671.413086 1667.752075 1662.36853 1650.825562 1635.5 1623.106079 1623.013062 1623.511719 1620.062866 1613.623413 1602.027466 1590.849365 1582.848145 1578.111206 1581.10022 1587.767456 1592.789185 1592.739868 1588.312988 1576.434082 1578.568359 1588.85083 1601.366943 1610.140015 1616.774048 1620.286133 1624.343262 1635.672729 1641.03186 1644.388794 1648.617554 1657.136963 1668.203125 1674.883911 1674.150635 1665.7854 1653.688354 1643.333496 1631.055786 1617.401489 1606.056763 1588.718994 1573.820068 1561.764526 1554.869995 1548.756958 1542.447998 1536.865967 1522.494873 1512.3125 1502.688843 1492.557495 1479.558594 1478.275269 1483.396484 1489.69519 1507.425903 1518.945801 1527.074707 1534.760986 1535.063599 1531.955322 1522.464478 1508.42749 1494.776733 1477.108398 1460.536011 1452.930298 1450.978271 1463.516846 1476.764404 1495.580811 1512.726196 1534.751831 1535.855469 1535.845337 1544.893066 1554.768677 1570.011963 1588.388306 1588.820557 1570.181274 1558.392578 1547.068604 1525.762329 1508.907593 1509.023071 1513.225464 1511.909546 1515.706177 1526.763184 1531.269531 1528.832642 1528.407104 1532.080444 1533.890381 1535.317871 1538.743896 1539.260376 1539.102417 1536.448364 1534.981567 1534.891113 1532.418823 1529.210693 1528.172363 1527.571289 1526.232056 1523.910156 1518.659058 1517.226929 1516.924194 1518.21936 1522.422241 1525.31189 1526.529053 1525.155396 1523.128784 1523.486084 1524.760498 1530.809448 1535.974731 1538.092773 1538.404541 1540.070068 1544.508057 1548.891357 1552.78064 1558.179932 1564.515869 1571.924316 1584.126465 1589.981812 1591.777222 1595.49353 1599.11792 1608.85498 1619.295288 1624.388794 1622.134888 1617.361938 1612.341553 1605.397949 1597.434448 1592.4729 1600.135254 1606.814453 1610.583008 1614.266968 1616.906982 1620.164062 1622.006348 1618.450073 1613.096069 1610.337646 1605.835327 1602.121948 1598.94397 1598.17749 1598.963013 1599.703369 1601.46521 1606.568726 1610.332642 1615.14856 1613.796631 1609.467651 1609.687256 1611.029175 1601.223999 1583.260376 1571.102417 1558.692993 1546.871338 1536.847778 1530.875366 1525.147583 1514.759155 1507.303223 1503.029663 1506.032959 1509.210815 1512.003052 1518.207886 1521.695679 1528.19519 1532.569458 1536.107422 1537.950562 1535.081299 1531.531372 1533.672729 1536.53418 1537.237793 1539.910645 1547.440186 1551.264893 1549.600342 1535.739502 1519.643066 1505.896973 1497.898926 1496.296875 1510.027344 1526.388428 1542.029419 1563.704224 1579.85144 1592.876465 1609.918701 1616.860596 1618.771729 1616.219727 1603.384521 1593.034668 1594.319824 1584.300293 1574.39856 1572.069458 1577.608276 1579.796875 1579.68811 1578.625122 1580.24707 1573.38916 1557.543213 1538.519653 1523.041748 1516.35022 1514.540771 1511.439087 1531.206787 1546.02002 1563.437012 1574.834351 1567.659668 1553.289551 1543.537231 1534.1875 1525.385498 1510.771973 1499.19873 1498.578369 1497.706299 1495.322754 1494.848022 1495.37854 1497.042847 1507.299194 1516.908813 1524.590088 1533.444336 1555.235474 1570.449707 1568.987793 1562.234985 1575.545898 1591.079956 1599.930664 1601.047607 1591.64624 1577.846924 1572.312012 1565.842163 1565.87915 1581.617798 1597.980835 1611.985352 1625.973145 1621.305908 1601.755981 1594.358398 1587.666382 1589.728516 1589.874634 1587.702759 1585.03186 1581.789673 1577.616333 1572.867188 1568.338989 1563.165039 1556.700806 1549.63855 1541.012085 1537.838501 1534.169922 1526.393555 1521.591431 1519.909668 1520.766235 1523.502075 1526.530029 1528.100464 1530.226562 1537.12854 1542.634399 1547.141846 1551.111572 1547.921387 1538.285278 1528.937134 1535.736816 1533.437378 1524.437866 1510.259888 1498.876343 1504.786133 1513.069946 1516.819946 1523.951782 1519.894531 1507.049194 1497.075684 1492.250488 1488.19397 1479.388428 1464.815674 1457.80188 1452.549927 1445.212402 1440.037964 1436.943604 1431.477783 1426.404175 1426.536255 1432.644165 1439.513062 1444.983887 1451.588013 1454.701294 1454.979492 1453.01123 1449.585938 1451.167358 1450.170776 1452.215088 1451.742188 1444.679321 1435.175903 1427.116577 1429.234985 1428.487549 1426.308838 1435.200073 1438.131348 1437.419189 1443.232666 1451.787231 1461.16687 1470.036499 1478.922607 1486.029907 1497.410522 1505.010864 1510.205933 1515.314697 1520.901855 1515.283691 1504.551392 1486.758789 1462.150879 1431.782349 1424.411621 1418.396484 1409.136841 1401.706421 1391.030273 1379.894165 1361.338989 1341.175537 1323.664429 1314.895996 1331.149902 1354.346558 1371.873169 1384.358643 1393.416626 1402.897827 1415.245728 1427.779541 1447.133057 1466.205078 1489.789551 1505.19812 1521.943481 1545.960205 1564.333862 1576.427124 1574.824951 1569.179932 1562.397217 1556.90564 1550.854248 1548.681396 1546.17627 1541.848877 1537.118042 1519.737671 1500.961792 1485.243042 1472.637329 1466.801636 1471.159912 1471.259888 1469.078125 1469.054199 1472.459717 1469.891724 1464.290283 1466.402832 1471.878906 1475.943848 1477.084229 1475.440918 1471.726196 1474.418335 1484.209473 1495.068726 1499.116821 1498.582153 1500.369995 1510.584839 1515.112061 1513.043457 1505.971558 1499.479126 1500.064209 1499.574829 1496.841797 1491.818481 1486.325806 1477.390503 1470.247192 1469.63147 1472.501587 1473.294678 1491.155762 1503.185547 1501.494263 1496.216553 1490.022949 1485.711548 1483.623779 1479.065918 1475.334717 1468.788452 1462.072754 1456.362793 1452.685181 1450.299316 1449.324219 1450.418945 1451.138916 1451.540161 1451.179321 1450.077393 1448.146729 1446.026978 1443.842407 1441.632568 1439.216919 1437.854614 1437.012695 1435.461792 1432.808472 1429.224487 1422.539795 1412.862915 1404.496094 1398.389893 1398.098145 1409.84729 1418.408081 1419.621826 1417.616943 1420.547241 1424.803711 1421.374512 1415.982056 1412.618164 1413.92749 1415.807129 1414.057861 1407.33252 1402.828735 1392.598633 1391.342407 1390.611816 1387.516357 1379.442383 1378.097778 1375.210327 1371.428711 1375.143677 1376.917114 1371.032227 1365.429199 1358.333984 1348.797363 1358.026367 1363.637451 1367.549561 1368.078003 1360.681519 1363.342041 1364.60791 1362.097046 1358.886597 1366.936523 1380.608032 1389.110229 1392.07605 1393.094604 1394.284912 1395.155518 1395.533691 1394.980225 1395.869873 1398.601318 1403.471313 1407.760376 1413.888672 1413.410156 1411.914551 1409.357788 1406.575684 1403.984253 1400.839233 1397.809082 1394.896484 1392.852661 1391.268921 1389.448486 1387.220093 1384.449829 1382.376587 1380.298218 1377.757202 1374.682129 +1713.70752 1709.388794 1707.833496 1706.527222 1710.897095 1718.869873 1724.096436 1731.399536 1732.802856 1732.690186 1731.022339 1727.871826 1726.26123 1725.781616 1726.4552 1728.044922 1730.322632 1732.499634 1733.481323 1734.004272 1734.189697 1733.794312 1729.707397 1724.308716 1719.469604 1712.100464 1704.99231 1697.575317 1687.254272 1678.938232 1673.088745 1667.086792 1665.688477 1671.32373 1675.479736 1678.75061 1679.889526 1677.651001 1675.182495 1672.050781 1669.140015 1673.408813 1676.396362 1677.007202 1674.051636 1669.624634 1664.881836 1662.487183 1665.890625 1670.720581 1680.297852 1693.838745 1700.411133 1705.034912 1708.277466 1708.359619 1707.339233 1705.332886 1705.97168 1708.205566 1708.752563 1708.744995 1708.177734 1703.00769 1695.554077 1689.86145 1681.635376 1674.113525 1666.02417 1659.883179 1657.034302 1659.771729 1659.367798 1658.998779 1652.778198 1642.502563 1625.87207 1611.872803 1609.549805 1608.050293 1599.56958 1591.598511 1582.192383 1581.395508 1589.359619 1592.391724 1597.93457 1600.494629 1600.455444 1598.396606 1594.14917 1585.845581 1581.616943 1593.858032 1600.00354 1607.396851 1617.504639 1625.336914 1632.365967 1635.690796 1637.543335 1645.441284 1659.881836 1667.883423 1672.813232 1673.116333 1657.84021 1643.673462 1631.325195 1617.062378 1607.986816 1596.138184 1581.018188 1570.576416 1562.727173 1550.719727 1539.992798 1533.908813 1525.588623 1518.551636 1509.683716 1502.765869 1493.180176 1481.661011 1483.487305 1489.317871 1492.868652 1508.253662 1520.362915 1531.719604 1541.839844 1544.444336 1538.590332 1524.560547 1506.952881 1491.171387 1474.256958 1460.768433 1455.633423 1452.618164 1462.40979 1472.610474 1491.607788 1507.139038 1532.092163 1536.466919 1523.500366 1529.717773 1539.412598 1558.007324 1581.256592 1588.194214 1563.405884 1550.716064 1536.46106 1524.830444 1507.77356 1500.386475 1503.667969 1506.592041 1512.439453 1518.192505 1517.235718 1513.559082 1520.705566 1524.672485 1526.86731 1532.81311 1535.169678 1537.016846 1538.896118 1537.927124 1537.368164 1538.148804 1536.150879 1524.092041 1523.376831 1523.068237 1520.526978 1515.940552 1512.303589 1513.002319 1513.276367 1513.473022 1517.173218 1519.696411 1519.626099 1519.646606 1523.128662 1527.240723 1532.705322 1537.859497 1538.943848 1540.105835 1540.775391 1542.149414 1544.583618 1547.571655 1550.949463 1555.881592 1561.963623 1566.411499 1571.313965 1574.113647 1582.789917 1589.474243 1595.745117 1603.671143 1613.572754 1624.361328 1622.564331 1617.893921 1612.338257 1605.448364 1596.678223 1595.675415 1609.0896 1612.571167 1614.9729 1617.814941 1620.969604 1623.28772 1623.654419 1619.238159 1613.490601 1608.887695 1605.234253 1601.370605 1598.19104 1594.559937 1593.417114 1593.497681 1594.78064 1599.195801 1602.301758 1604.067139 1601.311035 1596.809204 1601.462769 1603.067993 1598.646729 1582.782227 1569.738037 1555.797852 1547.129517 1539.654175 1535.520386 1524.544556 1512.30249 1512.417603 1509.578247 1512.563354 1522.759277 1526.638184 1527.280029 1526.807129 1532.709106 1537.444092 1539.755737 1540.207397 1538.782471 1537.572632 1539.21167 1542.932007 1547.079102 1550.38562 1552.448486 1553.328857 1548.992676 1532.597046 1518.22644 1500.131958 1497.624023 1502.823364 1516.59668 1530.457275 1544.608032 1562.509521 1578.342896 1590.100708 1605.683838 1620.797485 1629.874146 1629.544556 1616.91272 1609.135498 1614.191528 1603.625732 1587.27417 1589.951538 1595.322998 1598.335449 1601.485352 1601.722046 1592.43103 1580.026367 1563.516602 1544.379028 1532.196289 1528.025391 1528.122437 1522.684326 1533.171265 1549.701538 1564.718872 1580.857056 1579.434692 1565.503418 1553.188599 1543.240723 1534.253662 1517.092651 1507.3479 1507.567505 1508.239868 1506.442505 1505.817139 1507.799194 1506.906738 1503.468506 1508.465576 1516.673584 1522.619629 1539.212524 1560.948608 1574.006226 1574.821533 1572.233032 1579.614258 1590.463379 1600.412231 1601.629272 1595.750854 1587.003296 1582.546021 1579.481201 1579.987793 1592.305664 1608.312866 1625.109131 1621.810425 1612.091919 1603.428345 1600.502686 1604.059204 1602.020996 1598.525269 1595.188721 1588.940796 1583.154907 1577.485474 1572.473999 1566.462158 1559.734497 1554.099854 1549.2229 1547.208862 1542.594238 1535.628662 1526.952393 1519.994507 1511.10022 1514.450684 1517.317505 1518.022217 1520.514893 1524.823242 1528.947876 1531.694214 1533.565063 1534.166748 1528.220947 1515.983032 1518.362183 1520.375122 1515.116089 1505.897095 1490.45166 1494.736206 1501.505249 1504.487793 1507.708008 1510.101196 1500.351562 1488.71814 1483.79541 1476.026489 1471.348999 1461.082886 1455.58313 1450.844604 1439.139771 1436.668091 1434.143921 1430.108887 1428.098267 1433.36853 1441.809448 1449.738159 1457.343628 1462.942993 1461.536987 1459.328979 1457.770386 1457.511719 1458.348145 1458.360107 1457.407227 1455.458252 1452.163208 1441.690552 1434.740845 1434.084106 1436.199463 1435.826172 1435.609863 1436.558716 1437.219482 1446.455444 1455.720947 1464.221069 1467.544556 1475.290649 1484.295044 1493.472656 1501.247681 1506.078979 1510.431274 1511.728149 1506.943237 1495.030762 1479.511353 1456.362915 1427.993896 1411.43103 1401.688599 1396.597534 1392.491699 1382.86853 1368.193237 1350.352051 1328.583618 1320.343506 1314.888062 1335.862427 1357.321777 1378.306274 1389.77478 1399.802124 1411.679077 1421.997925 1432.191528 1448.180664 1470.390015 1494.306152 1509.291016 1531.001465 1553.010986 1571.091187 1574.149048 1571.76355 1566.602173 1560.586914 1554.566772 1548.558472 1545.150757 1541.278809 1536.841919 1531.21814 1508.575073 1491.294922 1483.065063 1481.89856 1486.824951 1489.207764 1488.377686 1483.830688 1483.148438 1486.991943 1485.285156 1481.314697 1487.949585 1492.371582 1492.968262 1491.930176 1488.692749 1483.84314 1479.760742 1485.620361 1487.419434 1497.604736 1503.466797 1512.295898 1520.292969 1522.53186 1519.199463 1513.841919 1511.801636 1512.263062 1507.086792 1502.66626 1496.324829 1489.306519 1480.964966 1472.286865 1462.491455 1463.282959 1475.369385 1490.703003 1499.087891 1494.264526 1486.65332 1484.590454 1482.450928 1479.35791 1474.321411 1467.167969 1463.277466 1457.348267 1452.458008 1449.346924 1446.711426 1445.779297 1446.871704 1448.098267 1448.591553 1448.561279 1447.645752 1445.940552 1443.814697 1441.888184 1439.94397 1436.985474 1433.111816 1430.55481 1429.240112 1428.740601 1427.216064 1422.586548 1415.636475 1405.023682 1398.950439 1399.463745 1413.365356 1426.386108 1427.057617 1425.495972 1428.050171 1428.025513 1421.987305 1415.134521 1413.595093 1414.511353 1415.575684 1414.522583 1409.46936 1403.578491 1402.919312 1400.887817 1396.715576 1393.250488 1388.579468 1382.285156 1376.911865 1381.046387 1385.015137 1383.071045 1377.408203 1368.447754 1359.726196 1352.594971 1363.358887 1370.026489 1374.25647 1373.822144 1368.438232 1371.205444 1372.656982 1371.198608 1368.518921 1366.074219 1379.721924 1389.348877 1392.322876 1394.285156 1396.332397 1398.123047 1399.165649 1399.244263 1399.202515 1400.334229 1403.877319 1412.343384 1416.963379 1416.798218 1416.524292 1417.505859 1416.944824 1416.929688 1414.520386 1406.824463 1402.874023 1399.676025 1396.595337 1393.553589 1390.628052 1387.4104 1383.988525 1381.142334 1378.500854 1375.816528 +1720.273193 1715.220581 1711.876953 1711.192505 1716.200317 1721.817261 1724.947144 1728.546509 1731.012329 1731.143188 1730.258423 1728.157349 1726.825806 1726.373047 1726.677612 1727.897949 1730.31958 1731.565552 1733.150513 1733.701172 1733.534546 1731.508423 1726.946289 1721.539062 1714.632935 1706.725586 1700.13916 1693.103638 1683.989014 1676.921021 1671.053467 1669.669067 1674.281128 1679.825073 1684.505249 1689.005615 1691.405396 1689.185913 1683.684204 1679.035522 1676.679688 1679.485107 1682.668457 1683.978882 1682.686279 1676.275391 1671.267334 1666.696899 1664.806396 1670.618286 1678.714722 1691.555786 1697.648682 1700.435913 1704.783203 1703.157715 1700.953491 1701.679688 1704.414795 1707.640625 1708.209961 1708.18689 1706.116821 1693.809204 1684.546143 1677.337769 1669.616699 1664.224121 1658.768188 1653.390259 1650.392822 1645.615356 1648.212524 1652.522339 1649.815796 1642.716797 1628.890137 1613.764526 1599.578979 1593.95166 1590.140259 1584.925537 1585.015137 1592.82019 1596.929443 1598.377441 1602.854492 1605.814697 1607.213257 1605.960083 1603.151978 1598.223022 1580.663452 1587.663208 1596.920166 1610.860962 1617.862915 1623.938477 1626.027222 1630.276245 1635.450317 1650.481445 1661.974731 1666.681885 1669.90564 1666.699585 1653.081421 1630.87793 1615.211426 1597.40918 1588.016602 1580.329224 1573.207397 1564.105225 1559.124023 1553.427979 1549.506104 1537.575073 1529.313721 1520.002075 1509.793335 1502.080933 1491.503296 1482.371948 1489.707153 1497.872681 1506.581055 1511.403931 1520.953735 1532.677124 1549.850708 1552.427368 1545.049438 1526.256836 1511.899658 1492.485229 1476.927002 1462.719849 1456.500244 1453.403076 1460.057861 1468.565552 1481.775757 1500.790527 1520.721436 1530.310303 1518.450439 1513.616211 1528.421875 1550.038086 1568.27002 1568.189575 1548.908813 1533.255859 1527.494751 1516.829712 1505.711304 1497.967773 1498.336914 1501.104126 1504.862183 1507.82605 1509.740479 1513.488037 1519.165527 1523.025269 1527.889282 1534.150269 1537.974121 1541.820923 1544.400635 1545.087158 1546.680298 1548.774292 1546.285889 1527.451172 1519.758911 1515.628174 1511.811035 1507.977295 1510.204468 1510.858154 1512.828857 1514.668335 1518.299316 1519.354004 1518.959839 1522.497192 1527.561157 1534.152344 1537.982422 1539.533691 1540.697998 1541.85022 1542.786499 1543.75 1545.019043 1546.510498 1548.333008 1551.788086 1557.135132 1559.686523 1568.416016 1576.450195 1587.27478 1591.194336 1598.485596 1604.363281 1612.869751 1621.195068 1622.834717 1618.591553 1613.842163 1608.445923 1597.814453 1608.688721 1613.445801 1616.242188 1618.300415 1620.669189 1623.375854 1624.100098 1621.783447 1617.119629 1612.617065 1608.091431 1603.975342 1600.531372 1597.378174 1590.845215 1586.843262 1586.369141 1586.474609 1589.635132 1591.766602 1590.947754 1586.790649 1582.146973 1590.37439 1594.490967 1592.123779 1579.444946 1568.24646 1563.523193 1555.746948 1542.770874 1530.73584 1520.154663 1518.449463 1517.190308 1515.838745 1525.502075 1530.820068 1536.633423 1535.192505 1534.345703 1536.231689 1539.358032 1542.070435 1541.236572 1538.424072 1538.32019 1540.493164 1544.807373 1549.903076 1556.639404 1557.335205 1553.623047 1542.78772 1528.096924 1514.641357 1499.03833 1503.772949 1512.760986 1525.32312 1535.030762 1546.681885 1560.888672 1573.347168 1587.909912 1600.338867 1617.819092 1633.325928 1644.759277 1632.250977 1629.220703 1628.611084 1616.626587 1606.247681 1606.869019 1615.294434 1620.091187 1624.677002 1623.734741 1603.587524 1583.895264 1565.733643 1552.991455 1540.476318 1539.785522 1540.139404 1535.067017 1535.601318 1553.180176 1566.09021 1584.249023 1595.337769 1578.186035 1560.057007 1547.921021 1536.129272 1521.465698 1515.71106 1519.911377 1523.59436 1522.824951 1523.431152 1528.669312 1524.512695 1516.949341 1508.912476 1514.14856 1520.634155 1528.079346 1544.519409 1563.832886 1574.886353 1584.103149 1589.495728 1597.300293 1602.031006 1607.493896 1609.892944 1605.998413 1602.602173 1599.536987 1597.864502 1596.75415 1613.060181 1624.785767 1622.894775 1617.532349 1614.015259 1614.578369 1613.981445 1610.943237 1608.123535 1602.846924 1597.75647 1587.724731 1581.0 1575.770508 1570.200195 1563.942871 1561.232788 1558.835815 1555.366943 1550.655273 1543.471558 1534.781616 1528.124634 1517.761963 1509.69104 1509.938965 1509.997314 1509.644653 1514.500244 1517.244507 1519.513428 1519.549316 1516.028442 1511.0448 1505.334473 1506.545776 1509.296387 1507.765747 1503.060669 1493.095947 1483.734985 1489.409058 1492.850586 1497.147217 1500.930054 1498.591187 1490.123535 1480.873901 1471.248901 1462.610107 1454.865112 1451.096436 1440.206055 1436.938599 1435.021973 1432.427734 1430.55249 1432.704346 1438.298706 1447.804565 1456.417603 1468.824219 1477.505005 1465.704468 1461.577759 1462.827148 1465.493286 1465.966431 1464.963135 1461.74231 1458.632324 1454.737671 1444.261353 1437.169678 1438.463135 1442.365356 1442.998779 1441.880127 1440.08667 1437.401123 1447.619385 1456.797852 1464.884521 1470.08667 1477.178223 1484.095093 1491.834961 1498.1875 1504.146484 1506.998169 1502.839722 1494.817017 1479.827637 1462.645142 1439.220703 1422.817261 1411.890747 1399.893188 1383.058838 1371.583374 1366.497925 1354.099121 1332.028564 1324.61731 1318.5354 1321.748047 1351.825195 1369.23938 1380.036011 1391.412231 1402.957642 1415.005127 1424.778198 1444.069946 1459.669556 1474.161499 1495.684448 1513.396484 1536.218262 1558.641113 1569.418945 1571.246216 1568.354858 1563.524536 1558.831909 1552.640137 1547.355103 1542.826416 1537.826416 1532.653442 1524.565186 1499.34436 1498.467651 1503.912964 1505.189331 1506.854736 1509.442871 1510.079712 1505.787476 1502.989624 1506.811035 1506.061523 1501.054199 1503.628418 1505.317627 1504.253296 1502.806274 1501.031616 1494.753662 1487.378662 1492.254395 1496.816895 1505.804688 1514.260254 1523.839722 1527.597168 1526.311523 1523.80835 1518.898438 1515.788208 1511.813232 1503.462524 1498.50061 1492.917847 1486.182251 1481.012817 1472.363037 1463.396606 1460.730957 1471.749268 1483.188599 1489.032715 1484.997437 1477.679688 1478.926025 1479.188354 1478.223999 1474.893311 1464.535034 1457.433105 1450.758423 1448.903076 1445.362061 1440.18689 1440.52417 1443.505371 1444.942871 1445.636597 1445.54834 1444.911133 1443.930664 1442.17627 1439.570679 1437.104004 1432.840576 1428.030518 1424.668823 1423.294312 1422.976196 1420.557861 1417.778198 1413.736206 1406.317505 1399.340454 1401.059937 1414.942627 1429.866577 1435.708618 1433.881226 1430.407349 1427.093384 1421.982788 1415.56604 1414.387695 1414.84729 1415.971436 1414.935913 1413.028564 1410.175903 1407.041016 1404.276001 1402.002563 1396.419678 1391.54834 1386.467285 1385.521118 1391.16748 1392.075317 1386.579834 1378.546875 1369.598633 1359.889893 1359.90686 1371.234741 1379.246948 1384.506592 1382.302368 1377.168579 1379.980713 1381.078003 1379.460327 1377.659668 1375.089233 1376.838501 1386.388428 1391.978516 1395.077637 1398.100708 1400.699097 1402.718994 1402.846924 1401.912109 1401.619385 1401.966553 1406.234985 1410.23938 1411.405029 1412.681763 1414.057495 1414.325684 1414.562256 1413.943604 1410.571045 1406.482666 1404.465576 1401.536255 1396.928711 1392.844971 1388.69043 1384.651978 1381.160889 1378.216919 1376.026489 +1721.352783 1716.974365 1713.17041 1712.607544 1717.738281 1720.890259 1722.626709 1724.76416 1727.509766 1728.594482 1728.200073 1727.268433 1726.421021 1725.820923 1725.735596 1726.223999 1727.425415 1728.967407 1730.551758 1731.026978 1730.1427 1727.195312 1722.817505 1717.399902 1708.960815 1701.659424 1695.070068 1689.326904 1682.706421 1674.520264 1669.644409 1674.734009 1681.989502 1687.030884 1693.063721 1697.331909 1698.372314 1697.535767 1693.964111 1685.840698 1682.474854 1686.728638 1689.576294 1688.086304 1685.923584 1681.334229 1675.015625 1671.8396 1667.183594 1668.35376 1674.709473 1683.005249 1690.928467 1694.236938 1692.806885 1691.453125 1694.111816 1695.926758 1701.53833 1705.784058 1707.137085 1705.437988 1697.770508 1691.077637 1683.138916 1671.917847 1666.127197 1657.187866 1646.733398 1644.909302 1641.455566 1636.937134 1636.884155 1643.171875 1645.030396 1636.531738 1625.471802 1610.118286 1595.709595 1586.230469 1584.189331 1586.157715 1596.545166 1602.526001 1604.585938 1605.160034 1607.611938 1611.311646 1614.958862 1614.713989 1609.973511 1604.539185 1589.276978 1584.358521 1596.614136 1607.016113 1611.691528 1615.576172 1620.359375 1631.80957 1642.242798 1654.542236 1662.536377 1664.071777 1663.099487 1658.467285 1649.611572 1631.85083 1615.429565 1600.084106 1577.456177 1570.238281 1563.411743 1555.180298 1546.973999 1544.333618 1544.322632 1539.13623 1528.133545 1518.196655 1507.786499 1497.253418 1486.246826 1487.044067 1493.692993 1507.148682 1518.376343 1524.206055 1525.472534 1534.92395 1548.426025 1560.935303 1549.813965 1526.461304 1514.492798 1499.548584 1483.998657 1469.937744 1459.610107 1453.444458 1457.672974 1462.332397 1473.757446 1493.525513 1512.947144 1528.221191 1512.621704 1508.028198 1516.904541 1534.932373 1540.76709 1540.074463 1528.820923 1515.959473 1511.184326 1506.122803 1500.295776 1494.787842 1493.766724 1496.490234 1498.187988 1501.962158 1511.205566 1519.705322 1526.384766 1533.140625 1538.618286 1541.71582 1546.683105 1548.986328 1549.903564 1550.931885 1551.379883 1551.133423 1540.867065 1523.87854 1515.564087 1510.133423 1507.211426 1517.211914 1527.678467 1529.086548 1525.617554 1523.648438 1527.878296 1526.980347 1523.129517 1524.165039 1528.026123 1535.834595 1538.69397 1540.342651 1541.97229 1543.86438 1544.800903 1545.286255 1545.752441 1546.610718 1547.247803 1548.239136 1551.783325 1559.777954 1569.245972 1579.841919 1587.283325 1590.181396 1595.697754 1601.78186 1609.691772 1616.012573 1620.757568 1619.74353 1616.392334 1610.832886 1608.327393 1612.993042 1616.617798 1619.282593 1621.682617 1622.869873 1624.101318 1622.278687 1616.89978 1612.881104 1609.719849 1604.938232 1601.083252 1597.584473 1590.151367 1585.494751 1582.188599 1575.119995 1573.954712 1574.103394 1574.308594 1569.588623 1564.157471 1561.519653 1573.029541 1583.144775 1585.003296 1579.110229 1575.434082 1565.629883 1551.015625 1537.480347 1526.967163 1527.092896 1522.990112 1521.375122 1523.084961 1529.513672 1535.626099 1542.351318 1544.468262 1543.614014 1545.333496 1546.199829 1545.637207 1542.44873 1537.103638 1536.159302 1537.201172 1538.454468 1545.979004 1557.11853 1555.913818 1544.893555 1531.813477 1521.129639 1507.260376 1504.636475 1511.998047 1523.570557 1533.849609 1544.308716 1555.800171 1567.635254 1578.375366 1589.818848 1602.71582 1620.587646 1636.981445 1650.710815 1648.143799 1644.09314 1643.790894 1634.327026 1632.227173 1627.1427 1638.587891 1642.893921 1641.323608 1628.653809 1603.181641 1585.818359 1574.463989 1560.501221 1547.240356 1549.953491 1553.769409 1552.45459 1543.313599 1556.172974 1569.193848 1585.876953 1597.363892 1582.316162 1565.15918 1553.298096 1541.847168 1528.83313 1527.36792 1530.959473 1535.886719 1539.297852 1537.290283 1537.71936 1537.31897 1529.981079 1521.186768 1515.353394 1522.19812 1524.726318 1534.94812 1550.243286 1565.719849 1582.663452 1594.223877 1599.95874 1603.604492 1608.745728 1612.033813 1613.978149 1615.022339 1615.900146 1616.257935 1614.873901 1618.084717 1623.616333 1618.102051 1609.95813 1613.293091 1613.044067 1611.517578 1611.820923 1611.281494 1605.443726 1599.564819 1589.250244 1583.088989 1578.741699 1574.384277 1573.602783 1569.578003 1565.917603 1562.030396 1555.805298 1550.363403 1543.531738 1537.376343 1528.774292 1516.99353 1501.10022 1503.143799 1500.494019 1503.223267 1506.342041 1507.098022 1506.134277 1504.270386 1501.059814 1495.934326 1496.266968 1499.284912 1499.667847 1496.82312 1490.13623 1477.413818 1474.335693 1477.870117 1482.144409 1487.403809 1487.566895 1489.18689 1479.882812 1467.768188 1456.356323 1450.59729 1451.072998 1437.944946 1436.856201 1434.922852 1434.557373 1434.750244 1436.152222 1440.305054 1451.391968 1460.351196 1469.401245 1474.421387 1468.822021 1466.031006 1468.113892 1470.178101 1470.743896 1469.23999 1465.623657 1461.387573 1454.819702 1446.605713 1438.892456 1440.77771 1446.877808 1450.070435 1450.939941 1449.528687 1442.639282 1444.563354 1453.061768 1462.571289 1468.287109 1475.535278 1481.587402 1489.636963 1497.131592 1503.210815 1506.328125 1504.96228 1502.243896 1485.16687 1462.886597 1434.103271 1420.375977 1411.373047 1403.233032 1388.836548 1364.298828 1346.741211 1332.362671 1329.351196 1322.227905 1321.273804 1342.155762 1360.428467 1378.978638 1387.311646 1394.338135 1402.953247 1415.809814 1424.905029 1451.660522 1471.657837 1493.603394 1505.707642 1521.791382 1540.251099 1560.856812 1571.956055 1571.581787 1565.96106 1560.14209 1554.959473 1550.203979 1545.285278 1540.628418 1536.865967 1530.760254 1524.808472 1514.754028 1518.409668 1522.861694 1524.208862 1525.219238 1526.86731 1525.021973 1521.074951 1517.209717 1520.986938 1521.974487 1518.695557 1517.275879 1517.37085 1516.105835 1513.310547 1510.439697 1506.57373 1499.474854 1503.736328 1504.989136 1512.994141 1521.859253 1527.739624 1528.698853 1527.30603 1524.301147 1520.974365 1517.093994 1512.883545 1505.866211 1501.866333 1496.347778 1489.819214 1479.390991 1471.885986 1463.162842 1458.302368 1464.13501 1472.900879 1475.387817 1471.731201 1471.410156 1473.579956 1475.07666 1474.952148 1470.664917 1466.157104 1458.178589 1450.069214 1445.865356 1442.603149 1438.688965 1438.326172 1440.552734 1442.293823 1442.818237 1442.758179 1442.716919 1441.925293 1440.421997 1437.136963 1432.940308 1428.980347 1425.385498 1420.02002 1415.945068 1415.415405 1413.301758 1411.318604 1407.322021 1402.214478 1398.692261 1402.175415 1413.945801 1429.56897 1440.748657 1437.196411 1430.692871 1426.460938 1423.060181 1419.260986 1416.556152 1416.992676 1416.915039 1416.397217 1415.678101 1412.780029 1408.582031 1405.832886 1403.79248 1398.305054 1391.52417 1389.778198 1392.158936 1392.827637 1392.161133 1386.116089 1377.137451 1369.296021 1360.019043 1365.275879 1377.047852 1385.825317 1393.017822 1391.917725 1390.444092 1392.3125 1391.572021 1390.365601 1387.878784 1385.82666 1382.203125 1386.338745 1390.704224 1395.225586 1399.260376 1402.169922 1403.723389 1404.019287 1403.673828 1403.352905 1402.332275 1401.786499 1401.904053 1403.816895 1407.480957 1409.246948 1410.125 1410.265869 1409.728516 1408.099487 1406.327881 1405.362427 1403.775879 1399.133057 1393.769043 1389.047607 1385.162354 1380.939697 1377.718506 1376.109253 +1721.21582 1716.73584 1711.428101 1708.551514 1709.282593 1714.840698 1718.225342 1721.442505 1724.646484 1725.960938 1726.018921 1725.866699 1725.302856 1724.68811 1723.969971 1722.897217 1722.458862 1724.121704 1726.228882 1726.580444 1725.274292 1722.886719 1718.870605 1711.871094 1703.788818 1695.72229 1691.279907 1686.45874 1681.024902 1672.396606 1674.374023 1681.623779 1687.047729 1692.16272 1697.447144 1700.671387 1701.671753 1701.110229 1698.023193 1694.073242 1693.110596 1696.31665 1695.681152 1691.377319 1685.946655 1681.172974 1677.134155 1674.186646 1670.994507 1669.453857 1669.058472 1672.91748 1679.067871 1679.848755 1681.69104 1682.177734 1688.158691 1695.405396 1700.064331 1701.806519 1700.797119 1697.470093 1692.29834 1688.377197 1684.892456 1679.932861 1670.678711 1662.140869 1653.988037 1646.392578 1636.074707 1630.195557 1621.074707 1628.194092 1630.255249 1626.800537 1617.854858 1604.344482 1590.119751 1588.272827 1592.318115 1599.582764 1607.835938 1613.190674 1613.021118 1608.422852 1613.497559 1620.958008 1625.199585 1624.980469 1618.804077 1611.251587 1599.873535 1584.803589 1590.883911 1600.288818 1607.10376 1612.010986 1623.348999 1635.414062 1644.073486 1655.452759 1662.080078 1661.029419 1656.96814 1652.48938 1645.063354 1632.383545 1613.530029 1599.823486 1584.615967 1572.313477 1562.024658 1557.257812 1548.11084 1536.471313 1534.235352 1531.190918 1521.124512 1511.893433 1499.111938 1492.831543 1494.093262 1494.115967 1497.927979 1514.216675 1525.485474 1534.144043 1539.440918 1542.356567 1552.175415 1563.316284 1550.107666 1526.138916 1514.690796 1497.592163 1489.426514 1476.025635 1462.814819 1454.915405 1456.43103 1462.064331 1472.191895 1490.651489 1505.006592 1520.806641 1509.730103 1499.696899 1504.131836 1520.554688 1522.296753 1520.112305 1515.949829 1505.920654 1496.222412 1494.582764 1492.981323 1489.820557 1487.802124 1493.561157 1499.012329 1505.581909 1514.2677 1525.203613 1534.952759 1542.190063 1546.829224 1550.984619 1551.413208 1550.1698 1551.210327 1549.51062 1545.238281 1538.305054 1530.116089 1517.970947 1509.409302 1505.739746 1527.605469 1538.77417 1539.040039 1535.182983 1532.834229 1532.381348 1533.411133 1531.151733 1525.816895 1524.028687 1524.712646 1534.001953 1537.94873 1540.34082 1543.807739 1546.468506 1547.082642 1547.475708 1547.545044 1548.217041 1548.059082 1547.866455 1547.281128 1554.44165 1565.796387 1575.753296 1582.932373 1585.577026 1590.470093 1597.319092 1605.570557 1613.062134 1621.831177 1622.429077 1619.080566 1611.922852 1612.646484 1616.566528 1619.365601 1622.264282 1623.104614 1623.511108 1620.274048 1615.834473 1610.413818 1607.595459 1604.214233 1599.506226 1596.522827 1592.299805 1585.279785 1584.700439 1583.226318 1582.983765 1580.017944 1574.074097 1569.050415 1563.338623 1563.175537 1562.418701 1557.527344 1560.452515 1564.59436 1566.562622 1561.708252 1554.162476 1537.196289 1531.851685 1535.053589 1538.609009 1527.539062 1523.62854 1526.90979 1530.749634 1536.650879 1547.496582 1552.793579 1557.606445 1556.386963 1551.408447 1548.382446 1543.911621 1537.653809 1535.677979 1534.447876 1533.761963 1536.915283 1542.403809 1541.320679 1532.963989 1522.916382 1513.412964 1503.013306 1509.510864 1521.7854 1530.922607 1540.587524 1551.013672 1564.260742 1578.174683 1593.022949 1605.904175 1620.120728 1624.316284 1642.20166 1655.880249 1660.446045 1656.131836 1658.312378 1653.337646 1650.538452 1645.329956 1657.596558 1658.879028 1648.401489 1630.699585 1612.614502 1596.071655 1575.170776 1566.331543 1559.788452 1561.154175 1562.196411 1558.52417 1554.93689 1558.756592 1572.605347 1586.357422 1597.782837 1589.135742 1573.998291 1562.041382 1547.838745 1538.175049 1536.396973 1538.283325 1544.756348 1548.971558 1548.931885 1550.747192 1546.117188 1535.923218 1528.851685 1521.711426 1526.609009 1530.059937 1533.456421 1538.141357 1554.494507 1571.053467 1585.165527 1594.056152 1600.037476 1603.772827 1608.077759 1612.819092 1620.094604 1625.125122 1631.651611 1632.734009 1629.958252 1623.543213 1614.918457 1608.143921 1610.339722 1611.066528 1607.057007 1608.294922 1607.782715 1602.074219 1597.17749 1590.622925 1585.069946 1581.66333 1578.368652 1576.735107 1574.90564 1569.904541 1562.50354 1556.230225 1552.066895 1550.458374 1544.947998 1538.818726 1526.0625 1509.389648 1499.870728 1498.966675 1492.2771 1495.663452 1497.619263 1496.745728 1495.137207 1492.218872 1487.336914 1485.644165 1488.095825 1486.80603 1483.677734 1478.842773 1470.223511 1467.588989 1469.028931 1470.154419 1471.181152 1471.635986 1472.677002 1471.937988 1461.190918 1450.27478 1449.928833 1452.298706 1443.123169 1438.284546 1438.463135 1440.680542 1438.261963 1439.147705 1446.341919 1454.55542 1462.37854 1472.751465 1474.727661 1474.692627 1474.163208 1474.550537 1475.737427 1475.878906 1474.470703 1470.529663 1465.078003 1458.849121 1452.03418 1439.638428 1445.231567 1452.891113 1455.572876 1456.551514 1455.65625 1452.492554 1449.165039 1450.612671 1455.242432 1463.105103 1470.144409 1475.102539 1483.253418 1490.904663 1501.172363 1508.121216 1512.349243 1500.855225 1481.629883 1461.043213 1435.351196 1420.37085 1410.417603 1401.084229 1387.649048 1360.55127 1335.517944 1328.841064 1328.873901 1319.976074 1331.109741 1361.284912 1377.160767 1388.580322 1397.512329 1406.614014 1412.557007 1418.493164 1427.798462 1452.858154 1486.26709 1503.759277 1519.480225 1537.65625 1551.176514 1562.78125 1574.507812 1572.787109 1565.290894 1558.842529 1551.966187 1546.405396 1540.949829 1536.852539 1533.443848 1528.541016 1524.443237 1526.70813 1531.567383 1535.243652 1536.190796 1536.016724 1537.769287 1536.861938 1534.041748 1532.398682 1535.527222 1537.92041 1536.121582 1533.988159 1532.125977 1528.815796 1525.670898 1522.764282 1518.698364 1513.554199 1516.761597 1519.309326 1522.249023 1526.752441 1530.240234 1529.471191 1528.192139 1525.509033 1522.651001 1518.540771 1513.148438 1508.282349 1501.118286 1494.084717 1486.478027 1483.345459 1476.1698 1471.0979 1464.468872 1456.347778 1462.157471 1463.901978 1461.891479 1466.073853 1469.232544 1468.977417 1465.765869 1463.480347 1460.794312 1455.104736 1449.734253 1444.151001 1440.734375 1437.419312 1436.490601 1438.217285 1439.71228 1440.22583 1440.58252 1440.358643 1439.914062 1437.686279 1433.262329 1428.582886 1424.405762 1420.864502 1415.897949 1411.413696 1409.312012 1405.813599 1403.547729 1401.529907 1400.834961 1405.551147 1408.712524 1414.11084 1428.669067 1437.750732 1436.176758 1430.923584 1426.710938 1423.943237 1421.508545 1419.372437 1418.099731 1417.357422 1416.647461 1415.201904 1412.415771 1408.463623 1405.204102 1403.179932 1400.192261 1395.266357 1393.69751 1393.609375 1393.126953 1391.187012 1382.409058 1374.410889 1367.215088 1361.563477 1366.452148 1375.592041 1385.370239 1392.463257 1399.39624 1402.095215 1402.090332 1399.842041 1397.719604 1395.952637 1394.299194 1392.819946 1390.877563 1389.351807 1394.147827 1399.529419 1402.734253 1404.251465 1404.52002 1404.360596 1403.954102 1402.703369 1401.19873 1399.985962 1400.07666 1402.852295 1404.616455 1406.177612 1406.357544 1404.325562 1403.290649 1404.761963 1405.035889 1404.353638 1401.053711 1395.0 1389.621216 1386.661011 1382.477173 1378.615479 1377.444946 +1720.809692 1714.327515 1707.974365 1705.258545 1705.097412 1707.995361 1713.833008 1719.25 1722.461182 1723.862427 1724.15625 1724.172974 1723.891968 1723.414795 1722.325195 1719.855347 1718.916626 1720.115601 1722.069824 1722.661133 1721.088257 1718.221069 1713.435547 1706.589722 1696.3927 1691.776855 1687.937988 1684.047729 1680.713135 1680.946411 1684.259033 1687.799194 1691.126953 1694.83667 1701.693604 1705.028442 1705.762695 1704.472168 1701.868042 1698.912598 1698.10376 1698.479492 1697.161987 1691.948486 1685.048218 1681.05481 1678.794312 1677.629028 1677.878418 1677.449219 1672.296997 1672.165894 1675.950562 1678.835815 1681.397705 1686.279175 1695.584351 1698.454956 1699.717285 1698.569458 1696.555908 1689.231689 1684.468384 1684.422852 1683.112305 1675.622681 1667.91748 1662.280884 1658.008057 1651.415649 1650.139282 1645.630615 1629.358643 1619.612305 1615.801147 1612.918823 1608.335205 1599.570068 1589.252319 1593.815063 1601.996826 1615.692871 1623.356934 1626.14209 1623.683228 1616.490967 1621.242798 1629.196167 1632.441895 1631.055542 1624.59729 1616.166992 1604.040283 1589.189453 1593.755371 1603.950562 1612.532959 1621.434448 1634.885742 1643.079956 1650.193726 1656.723267 1661.234863 1658.267212 1650.627197 1646.114136 1637.890015 1627.75415 1614.041748 1599.106201 1583.096436 1571.306396 1572.724609 1570.697998 1555.050049 1540.388184 1531.23291 1521.74646 1511.343994 1504.071533 1504.206421 1506.269531 1503.185669 1498.171387 1504.92688 1516.610596 1526.720825 1543.092773 1552.19519 1553.922363 1559.283447 1564.360962 1547.627808 1525.741943 1514.944946 1499.708496 1492.364014 1478.719482 1464.154297 1456.215942 1456.121948 1460.570679 1469.752197 1483.247681 1495.933105 1507.898315 1504.634033 1497.923706 1494.224487 1503.02002 1500.693359 1501.588623 1501.401855 1495.805176 1485.901611 1484.749023 1485.594971 1485.020752 1487.126465 1493.745361 1501.518677 1508.217651 1519.687988 1532.078857 1542.897461 1551.295044 1560.264038 1561.567749 1555.080688 1548.261597 1540.945923 1534.228882 1527.716064 1522.876831 1518.263306 1509.405518 1504.385254 1520.433716 1538.755981 1541.662964 1541.375854 1539.063477 1538.744873 1538.077393 1539.028198 1539.15564 1537.665527 1531.155396 1533.375244 1534.979004 1536.420044 1540.870728 1546.053101 1548.998047 1549.974121 1550.553467 1552.890381 1557.859009 1562.406616 1564.167969 1560.35144 1556.687012 1559.581177 1566.295166 1570.708618 1578.223877 1587.352783 1598.000122 1604.52002 1612.278198 1619.098022 1623.835449 1621.927612 1622.24646 1621.593506 1620.248047 1622.336792 1623.422607 1622.411499 1617.87085 1612.192871 1609.19519 1608.506592 1608.529053 1602.742432 1597.423462 1597.530884 1598.476318 1600.020752 1600.928467 1599.708862 1596.719238 1593.713257 1590.214722 1586.77063 1576.466431 1577.749146 1572.567505 1567.82666 1560.347656 1549.994751 1547.377441 1545.776245 1540.257324 1537.925537 1541.811646 1548.029663 1545.20459 1530.819214 1526.747437 1530.43457 1532.526733 1535.567871 1546.952026 1556.930908 1563.522217 1565.052124 1560.379761 1553.258545 1547.592651 1541.133057 1536.517822 1534.358765 1532.641968 1531.400635 1532.242432 1531.499268 1525.775635 1515.334595 1504.882568 1509.536377 1517.744385 1528.068115 1534.904663 1544.088013 1555.166748 1570.223999 1583.673096 1603.394531 1618.055908 1634.205811 1642.85083 1646.249878 1659.646118 1669.877197 1673.309082 1670.994385 1668.67688 1665.293335 1662.072388 1669.718262 1671.075073 1654.685303 1637.81311 1618.673706 1597.883667 1584.189575 1576.06897 1568.985718 1573.511475 1573.327026 1567.064209 1564.198364 1562.63147 1571.905518 1585.973511 1597.406372 1596.062256 1581.811401 1568.403442 1552.293579 1548.083984 1547.054565 1546.193848 1553.592163 1559.748291 1561.594727 1558.85022 1551.965454 1541.878052 1534.083618 1527.030518 1529.401489 1534.379639 1537.770508 1535.704346 1542.515991 1560.333496 1572.399292 1581.680542 1587.407104 1594.10791 1599.593506 1608.717773 1618.666626 1627.077271 1635.984985 1635.752686 1630.706543 1622.378662 1613.428467 1605.915771 1605.229126 1606.064941 1597.929077 1601.284912 1601.063232 1596.682373 1593.572998 1590.650024 1586.70459 1582.468872 1578.977661 1577.376465 1576.202515 1572.774536 1561.443726 1548.877319 1545.977905 1550.934937 1550.273315 1543.369751 1533.920654 1521.325928 1513.268066 1500.03772 1490.107056 1485.971802 1486.312134 1487.035278 1486.843506 1483.858398 1478.739746 1474.735229 1475.102539 1474.431152 1471.76001 1466.63855 1462.325928 1462.726807 1463.388794 1463.606567 1463.324829 1462.613281 1462.064697 1457.297729 1451.348755 1448.363892 1449.394775 1450.942871 1451.901733 1448.468994 1444.693237 1443.818237 1441.321777 1441.593628 1454.439941 1464.317139 1475.872681 1479.147705 1479.980835 1480.192993 1480.2323 1480.451416 1481.262085 1481.187988 1479.663208 1475.98999 1469.62793 1461.670654 1453.816772 1445.247681 1452.292969 1459.093384 1461.577271 1462.109131 1460.784424 1457.707397 1452.249634 1455.816528 1463.857666 1466.033569 1469.215454 1473.075928 1475.642578 1484.908569 1495.672241 1505.479126 1514.41333 1500.506226 1473.937378 1448.155029 1429.020874 1418.075195 1408.245361 1390.571533 1367.897705 1344.956787 1324.740356 1319.924438 1320.035156 1328.541748 1344.68103 1365.86853 1384.967651 1396.110718 1406.205322 1414.515869 1419.252197 1424.515869 1443.096924 1458.273071 1486.445679 1509.372192 1529.535278 1550.219238 1558.497192 1568.527954 1575.660767 1572.332153 1564.657959 1558.088623 1550.978271 1544.758911 1538.579712 1533.366333 1529.326782 1525.258545 1522.217407 1527.849121 1533.730103 1539.371094 1541.516357 1545.926392 1551.627075 1554.53479 1553.383667 1550.060791 1550.807617 1550.89502 1550.520874 1548.305908 1543.649902 1539.779297 1535.360107 1530.258301 1526.980713 1526.373901 1528.685303 1532.629883 1538.666992 1535.836548 1532.217285 1530.052734 1528.585815 1527.219238 1525.581787 1521.193604 1515.745605 1512.444824 1501.428467 1500.493286 1500.499268 1495.841797 1489.712891 1480.941772 1472.138672 1460.227661 1453.543823 1455.430542 1458.992676 1463.370361 1466.112671 1465.527222 1461.165405 1456.734253 1454.211792 1450.389771 1445.387329 1441.45874 1438.265137 1435.59314 1434.530518 1434.973022 1435.807983 1436.574707 1437.075073 1436.613525 1434.880493 1432.110107 1428.804443 1425.00415 1421.253784 1417.640503 1413.223389 1407.199707 1404.842041 1402.805542 1402.554443 1404.668945 1407.663208 1412.333008 1418.025146 1423.019287 1427.973511 1432.973389 1432.476196 1430.546631 1427.675537 1424.861084 1422.30127 1419.892456 1418.2948 1417.032715 1415.491089 1413.60376 1410.967041 1407.620361 1404.178711 1401.698486 1399.867065 1397.420288 1395.4375 1394.106079 1392.240234 1388.335083 1377.692993 1371.755127 1365.009888 1366.822388 1365.79895 1377.875244 1386.516968 1395.121338 1402.485107 1406.297607 1407.907471 1407.067139 1404.384766 1401.821289 1399.960083 1398.410889 1396.641846 1396.033813 1398.001465 1400.650513 1403.196777 1404.789062 1404.919189 1404.801392 1404.24939 1403.284424 1401.499634 1397.877319 1396.460571 1397.743774 1400.438232 1402.404907 1402.794189 1401.319946 1400.957886 1402.898193 1404.734619 1404.844849 1403.170776 1398.256104 1392.628784 1389.052979 1385.945801 1382.371704 1379.500244 +1716.323975 1707.944702 1703.70166 1700.760132 1700.078857 1703.26001 1708.042114 1714.7771 1720.334229 1721.795288 1722.348877 1722.436401 1722.369629 1722.03186 1721.087769 1719.449463 1717.699219 1717.853271 1718.283813 1718.317993 1715.617188 1712.203735 1707.706421 1700.640381 1693.403809 1688.380127 1684.781006 1681.723877 1681.817139 1685.365356 1689.518311 1693.211792 1695.286377 1700.82666 1707.354004 1713.141235 1712.327271 1707.964111 1704.978882 1703.949951 1702.697998 1699.948364 1696.574951 1691.388306 1684.614868 1681.236206 1680.245972 1681.241333 1683.949951 1685.703003 1682.529053 1679.004028 1678.055664 1679.81604 1683.100586 1693.394409 1697.6427 1699.543457 1699.844849 1698.839722 1684.232056 1677.161743 1674.758545 1673.909546 1670.983521 1664.605591 1657.057983 1654.863281 1644.430664 1644.911865 1644.9021 1642.36084 1636.532471 1626.093384 1613.56543 1607.985596 1604.33667 1600.072632 1591.321167 1600.579346 1619.5177 1631.978027 1638.229126 1639.713989 1634.936523 1622.774658 1630.136353 1637.22876 1638.272583 1636.190186 1627.921509 1617.119141 1602.821533 1590.266724 1594.159912 1604.982544 1614.089478 1626.126709 1641.091553 1649.974243 1657.084839 1661.909302 1661.717529 1654.659302 1644.365723 1639.015381 1633.172607 1626.323486 1610.871826 1595.839111 1582.16626 1580.374878 1583.414307 1575.682373 1558.756226 1542.537231 1531.001465 1516.141479 1509.775146 1515.115356 1519.192505 1521.514038 1514.320801 1503.969604 1513.970825 1519.986816 1528.60083 1546.902222 1559.037842 1565.32251 1573.461304 1568.036011 1544.52417 1524.76062 1511.350586 1501.769653 1490.952026 1478.939941 1462.757935 1457.214966 1456.216675 1458.993408 1462.804321 1473.577759 1484.022949 1491.925903 1494.338867 1490.83728 1483.028442 1486.204468 1482.974487 1483.514893 1486.049194 1483.581787 1479.985352 1477.968262 1478.763184 1479.856201 1483.932251 1491.686768 1502.175659 1509.498901 1523.579224 1534.251099 1548.275513 1551.614746 1552.933838 1548.153931 1538.469604 1527.668823 1520.623535 1515.026855 1511.869873 1510.166382 1505.533081 1500.75 1510.296875 1523.988892 1540.178589 1544.390869 1545.182007 1544.65979 1544.543945 1544.10791 1543.596069 1542.838135 1540.891968 1537.501709 1538.093994 1539.028442 1538.243164 1542.32605 1547.727661 1550.90271 1553.088867 1556.084473 1561.03772 1568.509521 1575.563721 1577.753418 1575.960083 1570.742188 1564.367432 1560.039429 1565.913696 1573.591309 1585.739746 1593.317383 1600.001343 1608.002563 1613.307861 1621.288086 1623.68689 1623.968384 1623.981323 1624.16333 1624.558472 1622.821411 1620.016235 1615.034424 1609.58667 1610.952271 1612.081055 1611.81958 1610.600952 1605.748779 1604.581909 1605.452637 1606.949707 1607.064453 1605.730713 1603.573975 1600.366943 1596.189819 1593.358276 1590.938843 1590.284424 1585.652344 1574.049316 1566.7229 1558.626587 1547.46814 1548.199463 1548.192871 1548.632812 1559.748291 1561.008301 1549.58667 1539.170532 1535.630981 1536.012085 1535.291016 1537.761841 1547.179565 1557.898804 1567.935181 1570.526733 1563.552734 1556.330933 1549.849487 1545.486572 1540.7146 1537.786621 1533.06604 1527.62439 1523.2323 1521.294189 1515.639771 1507.329834 1508.478516 1518.009644 1527.092529 1532.87854 1540.723389 1549.969604 1559.006226 1570.908691 1584.377197 1606.568237 1619.755615 1639.054077 1652.521118 1659.735962 1670.250977 1679.9375 1682.067627 1683.085571 1684.011963 1682.040527 1681.582153 1680.060425 1675.293945 1660.946899 1642.421143 1624.373657 1608.49292 1595.880371 1582.315308 1577.52002 1588.578735 1582.067993 1573.547729 1572.699463 1571.542114 1577.625732 1590.062134 1604.526001 1596.200928 1585.378906 1571.636353 1563.260376 1561.896973 1558.494141 1557.672974 1565.513306 1571.15271 1569.822388 1562.766113 1551.289307 1542.687378 1535.516724 1529.032959 1535.13855 1538.913086 1544.17627 1547.906738 1546.289795 1546.948486 1562.24707 1572.571777 1578.42041 1582.899902 1593.685547 1606.539429 1614.280762 1620.130859 1626.087524 1629.11792 1627.596436 1622.709229 1610.130493 1599.099243 1597.296997 1597.816528 1596.019043 1599.138428 1599.398804 1593.790161 1588.939331 1588.529785 1585.653687 1579.366333 1575.045044 1575.22644 1575.178223 1571.988281 1564.267334 1551.447876 1534.150635 1539.098999 1544.278687 1542.299438 1537.782349 1529.52771 1521.765137 1511.821899 1501.449829 1489.505371 1481.314453 1477.370483 1476.491089 1475.494873 1474.234497 1473.975098 1478.374146 1479.417358 1478.006592 1476.406738 1475.018921 1472.690308 1469.352051 1467.276367 1465.207642 1462.127808 1456.346313 1449.975342 1450.168091 1451.848999 1454.780884 1455.676025 1456.76416 1455.901123 1452.751221 1447.80896 1447.361084 1450.78479 1459.313965 1472.253906 1479.940918 1484.365479 1486.074463 1485.696533 1486.016235 1486.903442 1487.352661 1487.055786 1485.102295 1481.171021 1474.836914 1465.556763 1454.404663 1448.88269 1458.21167 1466.736572 1469.317505 1469.171875 1467.213623 1463.413086 1459.587402 1462.168823 1467.005737 1472.235352 1474.703491 1474.989868 1476.300781 1487.044067 1492.675781 1498.34436 1501.578979 1496.93457 1480.416382 1450.904541 1426.369263 1416.140869 1407.146484 1388.936401 1361.04895 1325.883789 1321.255859 1322.336426 1326.936646 1336.088013 1362.466187 1378.923462 1391.648438 1403.198486 1414.556641 1419.360962 1424.170532 1437.03772 1455.598511 1470.646362 1496.688843 1509.125977 1530.255737 1550.30603 1561.969849 1573.899048 1574.665405 1569.02002 1561.56189 1554.53772 1548.493896 1542.383179 1537.147583 1530.571777 1525.647217 1521.783447 1518.439819 1525.463379 1530.824219 1536.46228 1538.788086 1544.638062 1550.575562 1553.089478 1553.575684 1554.174194 1554.18689 1554.312012 1553.613037 1552.46936 1549.22876 1543.295654 1538.616577 1532.584839 1529.378418 1534.798828 1537.544067 1538.28833 1537.410522 1533.94397 1530.474365 1528.453979 1527.861938 1526.890625 1524.208008 1519.024658 1514.180054 1512.332642 1506.782959 1502.367065 1502.773193 1500.478638 1491.979492 1483.526855 1474.828857 1466.656616 1455.180054 1450.824585 1454.554199 1458.680298 1462.109619 1461.506836 1454.626465 1448.862183 1446.247437 1443.694458 1440.622437 1437.760864 1434.928223 1432.080322 1430.292358 1430.06897 1430.780518 1430.587524 1430.009155 1428.784546 1427.523926 1426.133423 1423.699219 1420.487671 1417.744141 1414.322144 1408.825562 1412.23877 1415.710449 1415.893799 1411.735596 1409.428345 1412.04248 1419.622681 1429.240723 1430.21875 1430.131348 1430.70105 1430.339233 1429.110352 1427.810181 1424.816895 1421.717896 1418.945679 1417.050293 1415.400146 1413.870483 1411.640137 1409.150146 1406.449585 1403.471069 1401.042725 1399.331787 1397.547607 1395.7854 1394.036255 1391.682007 1385.874146 1377.051392 1370.128784 1375.353394 1377.651367 1377.328369 1376.373901 1385.453247 1395.408081 1403.796997 1409.123657 1413.577393 1414.057251 1411.994263 1409.090942 1406.262329 1404.219604 1402.990967 1402.606201 1402.71582 1403.185181 1404.756226 1405.200073 1405.16394 1404.74231 1403.385742 1402.546387 1399.925293 1395.081177 1390.351929 1392.505127 1395.652954 1398.243164 1398.855347 1398.532227 1399.348755 1402.220825 1404.480469 1405.19458 1404.937378 1402.577637 1397.408691 1392.595093 1389.199951 1386.114014 1383.360718 +1706.847412 1702.670654 1699.319336 1696.363159 1694.281738 1698.599487 1702.779175 1707.322388 1713.790283 1718.526489 1720.051392 1720.407593 1720.658203 1720.659912 1719.625977 1717.161499 1715.970581 1715.418945 1713.888794 1708.956055 1707.6073 1706.061401 1700.345825 1694.891235 1690.228027 1684.868774 1681.606323 1682.583252 1684.591919 1689.741089 1694.595581 1698.880127 1702.442627 1707.933105 1720.122925 1722.061523 1718.716187 1711.84375 1708.378784 1708.200317 1705.866943 1701.171021 1695.718018 1690.925415 1685.75769 1682.554199 1681.402954 1684.093262 1689.735107 1693.021362 1687.940674 1683.330933 1680.520508 1680.390137 1682.498535 1693.093384 1697.484619 1699.670654 1700.275879 1700.290527 1692.485107 1672.176392 1666.64502 1662.305176 1659.19165 1654.119873 1650.258423 1645.278076 1633.50293 1629.722778 1628.9552 1629.127319 1627.687988 1623.986206 1616.57605 1609.601562 1602.677979 1597.668701 1594.202881 1610.854492 1630.673706 1644.144287 1651.565674 1653.355591 1646.611572 1636.046875 1641.568115 1644.38562 1642.683594 1637.488037 1626.914307 1612.468262 1601.128052 1594.857056 1594.256104 1604.682251 1613.459961 1628.829224 1648.317261 1654.415649 1660.279053 1668.840454 1667.373779 1655.446655 1645.175415 1632.374512 1627.280762 1624.225952 1613.384644 1595.84729 1595.53186 1599.348877 1585.942749 1571.959839 1557.640137 1543.635132 1529.319336 1515.873657 1528.16394 1532.567505 1533.588623 1530.618164 1517.01001 1512.171265 1516.243164 1523.350952 1535.299927 1547.556885 1560.144165 1570.339966 1577.082153 1564.255615 1540.967285 1521.161011 1507.55481 1498.158081 1489.273926 1483.025024 1475.381348 1464.916382 1455.941528 1457.682983 1460.405396 1463.944946 1470.526611 1476.824829 1480.015991 1479.257812 1473.60498 1472.356567 1470.799683 1470.848755 1472.577637 1474.104248 1473.78894 1473.238037 1473.836548 1474.744019 1476.419434 1485.093506 1498.061035 1506.35144 1516.401489 1524.733276 1529.066284 1528.231201 1526.857666 1519.638672 1514.348022 1510.250122 1505.171631 1499.169434 1497.614746 1497.218018 1499.329834 1509.573853 1520.756714 1528.786621 1543.479736 1547.828613 1549.283325 1549.530151 1549.921875 1549.766602 1548.106079 1546.236206 1543.991577 1542.557739 1541.987915 1542.203857 1542.942627 1544.78479 1547.031616 1550.653564 1554.745483 1559.044922 1565.487183 1573.709351 1582.250732 1583.466431 1583.46521 1580.434448 1574.934448 1572.025757 1571.033813 1570.856812 1575.148804 1586.499878 1592.668091 1598.967773 1609.56543 1617.106689 1622.686035 1625.175171 1627.018921 1627.719482 1626.909668 1623.670654 1622.078003 1618.128052 1616.456055 1617.420776 1617.675049 1616.781982 1614.619751 1612.354858 1611.584106 1612.69519 1613.380127 1613.238403 1611.89624 1609.542847 1605.825317 1601.527954 1598.987671 1598.846313 1597.034424 1590.495728 1579.15271 1569.552124 1561.311646 1563.600342 1565.694824 1557.730713 1563.255981 1573.978027 1563.649292 1549.577881 1537.491211 1538.509644 1543.302856 1540.89978 1539.805664 1548.811279 1561.205933 1573.955811 1575.056152 1566.173584 1560.43396 1555.346802 1550.940552 1549.028198 1544.570679 1538.06665 1531.784424 1522.16272 1510.790039 1508.722046 1507.855713 1515.23938 1525.629395 1532.615234 1538.225708 1550.68396 1558.653198 1567.4646 1577.951538 1591.773193 1606.494995 1617.045166 1636.33374 1657.209595 1673.431763 1684.749023 1688.785278 1691.785767 1694.152466 1695.237427 1694.975586 1693.609985 1687.718872 1677.39502 1661.729126 1650.48938 1632.090088 1617.92041 1599.875 1585.328857 1590.801514 1595.030884 1586.494995 1584.205322 1582.857422 1580.997559 1591.367065 1604.521118 1611.70105 1601.192261 1586.062866 1574.416016 1572.786011 1572.365723 1570.505127 1569.866455 1577.435791 1578.39856 1574.696899 1561.460327 1547.389893 1541.063599 1534.706299 1534.560669 1541.393555 1545.224365 1550.840454 1554.541626 1553.905029 1551.242676 1551.06543 1562.940674 1574.511353 1580.21936 1587.781128 1598.405273 1608.059326 1612.853027 1616.639404 1620.464844 1622.39978 1620.6604 1611.106445 1598.971802 1593.951904 1589.712036 1591.366211 1596.751709 1598.067017 1589.185059 1583.414429 1584.049805 1580.200317 1574.440918 1562.848755 1563.10498 1565.779785 1563.83374 1559.143311 1551.98877 1535.766357 1529.233887 1533.538086 1534.913574 1528.477173 1523.567261 1516.534546 1508.867676 1500.623291 1487.733154 1475.858398 1475.839966 1476.261841 1480.758911 1485.110229 1486.16333 1489.470337 1489.224487 1487.613281 1485.540649 1483.736328 1482.237671 1480.182739 1477.597534 1472.851074 1467.952393 1461.00647 1458.014404 1459.634399 1462.684448 1466.370605 1466.955444 1464.064087 1460.198608 1456.029419 1451.049316 1452.822021 1451.061768 1460.949829 1473.552979 1481.920288 1488.928345 1489.562744 1489.996704 1491.036499 1492.19873 1492.979614 1492.389648 1490.533081 1487.368774 1480.386108 1470.77771 1456.056396 1456.094482 1466.955811 1475.954468 1477.676758 1477.067505 1474.878296 1469.562988 1464.158447 1463.819946 1471.663696 1477.422241 1479.106689 1480.260132 1481.365479 1483.184448 1486.869141 1487.842163 1486.187134 1485.359375 1470.997437 1452.592163 1430.608887 1417.809326 1406.255249 1394.442139 1372.134155 1329.12915 1321.447266 1325.302368 1332.614502 1343.46521 1363.486694 1380.27063 1394.908936 1408.160522 1417.670166 1422.871704 1431.613159 1453.445801 1465.117554 1486.940063 1511.628662 1526.958374 1544.213135 1561.166992 1573.4104 1574.505005 1571.235229 1566.030884 1559.157471 1550.454346 1544.016479 1537.707642 1532.838501 1525.457275 1521.413696 1517.085815 1514.217163 1519.320435 1523.580078 1527.41687 1532.005249 1538.905884 1544.847778 1547.688843 1548.176147 1552.246582 1554.588745 1554.818115 1554.233276 1553.162354 1549.787476 1542.21936 1536.2052 1530.819214 1524.52063 1530.790771 1534.63269 1533.931274 1534.2229 1529.914795 1524.852783 1524.008789 1523.378052 1522.216064 1517.449097 1510.581177 1507.822266 1504.8479 1499.172241 1496.784424 1495.502808 1492.80603 1488.396484 1482.777588 1475.742798 1467.490845 1457.355225 1448.950439 1449.119019 1452.485229 1453.92981 1454.322266 1448.234375 1440.517578 1437.579224 1437.13501 1435.371826 1433.260132 1430.856934 1428.056519 1426.742554 1425.864868 1425.966431 1425.1604 1424.134644 1422.510376 1421.279175 1419.980835 1418.786255 1415.4104 1413.512085 1411.416626 1416.167603 1419.912109 1421.632446 1420.725952 1416.897339 1412.604004 1414.486572 1423.762939 1430.63269 1430.911865 1430.188477 1429.393311 1427.891602 1427.354614 1425.924438 1423.083008 1419.991211 1417.167114 1415.234985 1413.521118 1411.790649 1409.470093 1407.334351 1404.787231 1402.304321 1400.316895 1398.60083 1396.988892 1395.403076 1393.68811 1391.548462 1384.903564 1375.722168 1375.75354 1383.66626 1389.886475 1390.90918 1388.109985 1387.946289 1391.030518 1403.672729 1410.324829 1416.01416 1416.645752 1416.152832 1415.629883 1413.562134 1410.475708 1408.1427 1406.935059 1405.983521 1405.950073 1405.950806 1405.418457 1404.855713 1403.315796 1399.690918 1398.141235 1395.831543 1393.970581 1391.165527 1389.405029 1391.502808 1394.399048 1395.418701 1394.603638 1395.14563 1400.500732 1404.205933 1405.271851 1405.343628 1404.825684 1402.707764 1397.082397 1391.966431 1388.840088 1385.595215 +1699.640137 1696.499023 1694.041748 1691.468506 1690.560547 1693.759277 1696.782593 1700.878784 1705.051392 1709.629395 1713.293091 1715.737793 1717.51709 1716.907837 1715.153198 1713.712036 1713.547607 1713.315796 1711.931152 1708.924927 1704.550415 1695.780396 1693.187012 1691.707764 1688.934814 1683.217163 1685.333374 1688.053467 1689.878052 1693.640259 1698.798218 1703.871704 1709.22168 1714.830933 1721.59729 1720.955811 1718.268555 1714.503296 1711.587769 1710.279175 1708.535645 1700.409302 1694.446533 1690.442139 1686.6427 1683.415771 1681.683594 1687.123779 1695.538086 1696.443115 1691.777344 1685.424194 1681.794312 1681.932373 1682.983643 1691.411621 1697.384644 1700.382812 1701.18103 1701.120605 1697.036499 1678.901611 1666.069824 1656.370239 1649.018066 1645.567871 1641.041016 1632.952759 1631.019653 1627.125244 1621.022217 1619.037476 1617.302856 1611.609253 1609.197266 1605.93457 1600.781494 1595.175903 1605.998779 1619.694336 1635.500366 1651.592896 1661.289795 1664.783813 1657.879639 1647.300537 1652.392212 1650.933472 1646.131714 1636.640015 1622.294678 1608.36499 1608.522095 1601.01001 1594.497314 1608.743042 1623.520996 1642.417603 1656.674072 1660.921265 1666.378662 1672.655884 1672.031982 1659.651367 1647.410522 1634.806152 1619.38562 1612.487915 1609.993774 1602.741333 1601.994629 1596.169922 1580.792236 1566.781616 1555.077515 1543.541748 1521.63501 1531.011597 1540.701782 1545.994629 1543.946045 1535.40979 1515.397095 1515.722534 1520.762085 1523.441162 1535.897827 1545.902832 1557.808472 1570.789551 1573.012817 1557.448608 1534.546143 1523.165161 1517.536133 1510.942505 1503.527588 1493.553711 1485.31311 1477.941895 1466.478394 1456.463989 1458.238403 1460.378296 1462.081909 1463.411865 1465.718628 1469.529419 1468.79248 1464.435913 1462.740112 1462.979858 1463.546387 1467.466187 1468.694458 1469.503296 1470.44104 1471.49646 1472.725708 1474.194214 1485.636963 1496.574585 1504.286377 1508.018799 1507.640625 1506.044678 1503.331055 1501.694336 1498.962402 1492.633057 1490.416748 1495.125488 1502.237305 1506.028564 1511.052856 1525.217651 1539.194824 1546.952271 1553.516479 1555.856812 1557.184082 1558.509766 1559.287354 1559.285645 1556.762329 1551.039917 1547.995117 1546.100098 1545.952515 1545.981201 1546.077271 1547.015747 1547.157593 1549.433716 1555.380127 1560.493286 1567.642212 1578.230713 1590.55603 1595.394165 1593.317383 1589.659302 1584.453491 1583.186279 1582.944336 1579.925659 1575.301025 1576.951904 1585.87561 1596.56189 1607.007568 1613.628662 1619.546265 1624.447144 1629.710083 1631.87793 1630.699951 1628.176147 1624.876343 1621.291504 1623.019653 1623.420776 1623.054443 1621.623901 1619.754883 1619.736572 1618.517334 1618.497803 1619.763428 1619.724609 1617.192993 1612.564087 1610.448242 1607.391235 1605.551025 1604.164917 1601.61145 1597.384399 1583.282471 1572.55896 1570.701416 1576.583862 1574.656006 1568.020874 1577.784912 1575.9729 1558.505981 1544.329346 1536.804199 1544.503296 1552.494629 1551.517456 1547.403809 1551.709595 1564.078125 1574.813477 1575.038208 1571.213013 1567.170044 1561.074341 1562.615601 1561.284302 1555.18042 1546.361206 1537.22937 1523.547974 1512.703125 1507.960327 1512.430908 1522.753662 1531.295898 1539.569702 1547.852905 1556.889038 1567.671143 1579.795776 1590.688232 1606.547729 1623.281006 1632.46106 1641.843506 1650.927734 1676.092773 1688.283569 1694.886841 1700.15979 1705.227905 1709.255615 1709.646118 1703.209595 1695.814941 1682.274902 1669.359863 1657.053345 1638.068481 1619.087402 1605.280029 1596.388306 1601.477295 1602.781982 1595.109863 1599.462646 1599.494263 1594.52002 1608.638794 1621.749146 1615.753784 1605.085693 1592.619141 1589.193848 1584.427734 1585.61731 1584.535522 1586.473999 1587.326172 1581.188232 1568.953491 1555.844971 1546.710205 1540.745239 1535.275879 1539.852539 1547.296021 1552.250488 1560.001343 1561.720093 1561.390137 1559.995117 1558.319458 1558.244263 1568.94043 1576.454346 1581.866943 1588.654297 1596.741333 1601.495117 1606.486084 1610.033569 1613.970581 1614.171631 1611.485474 1603.466553 1592.547974 1584.392334 1586.603394 1592.28894 1592.856567 1588.337769 1579.554199 1575.391846 1573.415894 1567.021362 1555.997681 1550.217163 1554.565308 1553.515869 1548.932495 1544.717285 1534.00415 1521.878052 1521.93042 1519.710693 1515.134399 1510.71167 1504.96228 1498.326782 1487.08667 1480.323608 1486.085938 1487.377563 1484.812744 1487.437134 1492.067871 1493.581787 1494.913574 1495.49646 1494.970337 1493.471069 1491.130737 1489.581665 1487.316772 1484.507446 1479.784546 1475.002441 1464.67981 1465.718994 1469.834106 1473.432251 1475.021484 1474.722534 1471.423828 1465.937256 1461.139893 1454.722168 1456.182373 1450.949463 1460.941162 1472.108398 1480.107178 1486.204712 1489.947144 1491.722656 1494.007812 1497.049072 1499.370972 1498.415649 1495.656616 1492.265991 1487.475464 1477.069092 1462.805786 1466.031128 1476.4823 1480.929565 1482.311646 1482.010864 1480.181396 1476.541748 1471.865601 1469.362061 1474.157227 1480.165527 1483.648682 1486.326416 1486.207886 1480.185425 1467.364868 1470.276367 1478.40564 1469.765869 1457.312622 1444.381958 1427.975952 1414.844116 1400.496582 1383.577271 1362.904419 1326.515503 1321.763428 1326.255005 1334.496704 1353.011963 1362.102661 1376.430298 1392.907227 1406.651001 1417.496826 1425.563232 1444.898438 1462.188354 1482.33313 1503.673828 1519.518066 1536.463623 1552.682129 1570.93457 1574.543457 1571.598633 1567.684692 1563.385742 1556.275757 1547.884644 1541.42041 1535.751831 1530.688599 1524.825439 1519.938965 1512.956421 1510.253906 1513.314941 1516.807983 1519.221436 1523.123901 1530.802612 1535.928711 1535.13562 1535.014038 1543.652466 1551.24585 1554.401245 1554.132446 1553.221069 1549.832031 1541.485229 1531.684692 1525.667847 1521.366333 1522.603638 1526.518555 1527.157227 1528.674194 1527.620483 1523.646973 1519.100586 1513.89209 1513.66748 1511.86792 1502.825684 1497.035645 1496.311401 1493.13855 1489.023926 1484.608521 1481.964355 1477.86792 1473.850952 1467.306519 1461.932373 1452.388672 1449.196411 1446.566162 1444.27478 1444.845825 1440.05481 1438.533203 1436.616943 1434.889893 1433.156372 1431.473755 1429.83252 1428.154175 1427.184204 1426.371216 1426.732666 1427.613037 1428.495483 1425.438477 1419.996216 1418.25647 1417.298462 1416.274414 1416.027222 1416.231323 1418.561035 1422.733032 1426.781006 1428.307007 1426.357422 1421.465088 1415.075439 1416.480835 1424.985962 1429.736816 1430.496582 1429.994629 1428.469971 1426.049072 1424.98938 1423.022339 1420.365601 1417.9198 1415.387329 1413.363647 1411.616699 1409.462646 1406.991699 1405.411377 1403.294312 1401.469727 1399.543213 1397.621094 1395.929321 1394.353149 1392.964478 1390.980225 1381.680786 1378.887451 1383.187988 1388.316895 1393.357544 1394.715942 1395.258301 1392.613892 1390.205811 1400.041382 1408.490234 1416.66687 1417.924561 1418.022461 1417.78186 1416.963135 1415.285034 1412.588745 1410.980713 1409.588379 1408.467285 1406.919922 1404.588135 1402.763916 1399.557617 1394.864624 1392.349854 1391.003174 1392.130127 1391.675415 1388.763672 1390.495117 1392.671997 1393.170288 1391.46228 1389.865356 1397.824219 1403.506592 1405.05957 1405.270752 1405.020142 1404.11731 1400.110474 1393.626465 1389.735718 1385.556274 +1692.250366 1688.877075 1686.893555 1685.024536 1683.812866 1687.968628 1691.283325 1694.472046 1698.07251 1701.581909 1705.33313 1708.406616 1710.62207 1711.033936 1709.80542 1709.646729 1711.526855 1711.994873 1711.342896 1710.016479 1708.153687 1697.197266 1693.624756 1692.154907 1691.317627 1691.729126 1693.65918 1694.25293 1694.333496 1697.027466 1702.841187 1708.195557 1711.648071 1716.143066 1720.115601 1720.074951 1716.884644 1713.744507 1711.601562 1709.866333 1705.514404 1697.148438 1693.029419 1689.299194 1685.849854 1682.741089 1682.576416 1689.733521 1696.592651 1696.411133 1692.477661 1686.416992 1681.963867 1684.602173 1689.988159 1695.996582 1699.375732 1702.00647 1702.776489 1701.767822 1698.453003 1680.132568 1665.783813 1655.636719 1646.849854 1645.366333 1644.333252 1642.168823 1642.084839 1640.123779 1633.984619 1626.530518 1619.886719 1610.360107 1607.192505 1602.553345 1598.593994 1599.742432 1616.314331 1627.953979 1643.190674 1655.484619 1669.758545 1673.672241 1668.620361 1664.179688 1661.193359 1656.312988 1648.287354 1639.573608 1625.734497 1615.919678 1618.702881 1606.689819 1595.482666 1610.973511 1626.713989 1647.680908 1659.663574 1666.588013 1670.717041 1673.74939 1671.405151 1661.215332 1648.433472 1638.196899 1624.930298 1608.486084 1594.956299 1588.350342 1587.818481 1583.362305 1575.938232 1563.732178 1551.991333 1539.372925 1527.322876 1543.511719 1552.227295 1555.274048 1551.589111 1540.061157 1521.049805 1524.778931 1526.889526 1524.760864 1533.891602 1546.161255 1557.576172 1568.215454 1567.108521 1549.977661 1536.578735 1538.376465 1534.41333 1522.898804 1514.088013 1502.723022 1492.556641 1483.906006 1474.458008 1462.039917 1457.638184 1458.501465 1459.307739 1459.832764 1461.434814 1463.852539 1463.413208 1462.849487 1468.302002 1472.820435 1475.065063 1473.600098 1471.140991 1467.092407 1467.561157 1468.413452 1470.15918 1472.150513 1478.678467 1484.794434 1489.899658 1493.734131 1493.618896 1487.370972 1485.552368 1487.081299 1485.386353 1487.210693 1495.067017 1505.810425 1513.923584 1524.873291 1531.61731 1541.351807 1550.514038 1562.38855 1565.337891 1564.459717 1563.615967 1563.03064 1562.920044 1563.114136 1563.507568 1557.223511 1550.564941 1548.814209 1548.973511 1549.4198 1549.341675 1548.937012 1548.946411 1550.522095 1557.204468 1562.387085 1570.233276 1583.416992 1594.952026 1600.653564 1601.25769 1598.928467 1597.122803 1595.792725 1594.957886 1593.362427 1589.507935 1584.76709 1582.725098 1590.101196 1600.548218 1608.675049 1615.071777 1622.250854 1631.562134 1635.155762 1634.694458 1632.335571 1628.754517 1627.297974 1626.555664 1625.974487 1625.061401 1623.908203 1623.727295 1623.628296 1623.347656 1623.169067 1623.744629 1623.374756 1620.977417 1615.559326 1613.166748 1611.680298 1610.750244 1609.072266 1605.496338 1600.698853 1587.838135 1574.84375 1576.337769 1585.600098 1581.353027 1581.783203 1575.897339 1563.743042 1552.701538 1544.627808 1542.001953 1548.45459 1558.577759 1560.140137 1558.295532 1557.303467 1565.495483 1575.63623 1575.756836 1575.140625 1573.836304 1570.63562 1569.885742 1568.228149 1564.777222 1552.160767 1536.972046 1520.596558 1509.710327 1511.066772 1523.571899 1529.141724 1535.359131 1546.151733 1556.007324 1564.865112 1578.134033 1593.351562 1605.144653 1613.126953 1632.47876 1647.140991 1656.688965 1665.532471 1678.864014 1691.867798 1701.009888 1707.440918 1713.517944 1715.160767 1713.470215 1709.323364 1701.861084 1692.545166 1677.645142 1663.346924 1643.757812 1626.421021 1611.529907 1610.299927 1613.539795 1611.933105 1608.584717 1614.497925 1616.688965 1613.332764 1626.710205 1629.29541 1618.985229 1606.255249 1607.001953 1606.994141 1602.607788 1603.97937 1603.863037 1600.641235 1591.012207 1573.170166 1558.799927 1551.417725 1545.777222 1541.215332 1538.19165 1547.578125 1556.580566 1565.03894 1570.11084 1572.06604 1571.413452 1568.538574 1565.386719 1561.1521 1563.126587 1573.234619 1579.675415 1585.313232 1590.233276 1593.327515 1596.581055 1601.508667 1604.597046 1606.79541 1606.188599 1601.37146 1593.949341 1582.418457 1584.374756 1589.087524 1589.195435 1585.294922 1574.979126 1568.348145 1565.355713 1560.483154 1552.899414 1546.638794 1541.397217 1543.248169 1540.355957 1534.292114 1529.171387 1519.893066 1509.294922 1504.086792 1502.474121 1497.599731 1491.028687 1484.163696 1483.428223 1491.111938 1498.201172 1499.310913 1492.735962 1494.729248 1498.248779 1498.257812 1500.349487 1501.688477 1501.747681 1501.377441 1500.012451 1497.348022 1494.103027 1491.124146 1486.613647 1480.930542 1474.46228 1474.256226 1479.630249 1482.267334 1482.222168 1480.959351 1478.906006 1475.276733 1467.859619 1461.881592 1464.559692 1462.320557 1461.133789 1468.05481 1475.331421 1480.238525 1487.540161 1491.579712 1494.854248 1498.69812 1501.62085 1502.080566 1500.520264 1496.83374 1492.174561 1483.965454 1472.136108 1474.566895 1481.601929 1485.649658 1487.470947 1486.944336 1485.559448 1482.302002 1478.668823 1476.602417 1478.747192 1484.998901 1487.988647 1490.205688 1489.562866 1480.763916 1467.396362 1450.324585 1454.382568 1450.032104 1439.41272 1428.085938 1418.059814 1409.134033 1398.209839 1379.891846 1356.206299 1334.291016 1323.505005 1325.811646 1334.155884 1351.969482 1367.634521 1382.455078 1391.50708 1401.956787 1414.119995 1426.622559 1449.64502 1469.87561 1491.610718 1505.171997 1527.755005 1542.482178 1559.671143 1574.791626 1572.460693 1568.509277 1563.687622 1559.182861 1552.087524 1544.704224 1537.213745 1534.065552 1530.618652 1527.442261 1522.270508 1513.642944 1509.386353 1507.531738 1509.541382 1510.803955 1515.664185 1521.551636 1524.146484 1522.325317 1522.429443 1526.278198 1541.303833 1551.084229 1553.565552 1552.548828 1550.414307 1542.634766 1528.809448 1518.671387 1512.91333 1515.606812 1518.394775 1520.241943 1524.60022 1526.890625 1525.513062 1521.51123 1514.627686 1512.896851 1506.216675 1499.571533 1496.683472 1486.680298 1486.744507 1481.00647 1474.302734 1472.549805 1465.185669 1461.621826 1462.199219 1459.379883 1452.04834 1450.994751 1449.728271 1446.744385 1444.261963 1442.866333 1441.993408 1440.35791 1438.817383 1436.484009 1434.327759 1433.38269 1432.69043 1432.193359 1431.81958 1431.675415 1430.752441 1429.174561 1427.57666 1421.593994 1418.755859 1418.459839 1419.261353 1421.309082 1423.680786 1425.328613 1430.66394 1438.403442 1440.336548 1437.042725 1428.308105 1421.193481 1420.862549 1424.91272 1428.994019 1429.993286 1429.734497 1428.881714 1427.106201 1424.689575 1420.616943 1416.387329 1415.147583 1413.685913 1411.952515 1409.784058 1406.877197 1404.359741 1402.849365 1401.536499 1400.261597 1398.610718 1396.689575 1394.539551 1392.625488 1391.131958 1387.310181 1381.827148 1388.998779 1391.760132 1392.037964 1395.605225 1399.191406 1402.276611 1402.836182 1403.642822 1402.086182 1401.835571 1416.584106 1418.403198 1419.403198 1419.591309 1418.845825 1417.34314 1415.404297 1413.540283 1411.923584 1410.336914 1407.94751 1404.405518 1400.392334 1394.209351 1389.369507 1387.58667 1385.05481 1389.04541 1391.176636 1385.637939 1383.212891 1390.849854 1390.961914 1387.792114 1390.079468 1396.231934 1401.158813 1404.126099 1404.655762 1404.131958 1402.528198 1398.164307 1392.807129 1388.890625 1384.11792 +1680.763428 1679.222412 1679.253784 1680.935547 1681.835083 1683.125 1686.284424 1689.939819 1692.382324 1693.964355 1698.499634 1703.110229 1705.806152 1706.462891 1706.508911 1708.427368 1710.494507 1711.582153 1711.406616 1710.215088 1708.141113 1701.121094 1697.245361 1693.336548 1695.672485 1698.604614 1701.260742 1703.052246 1703.854492 1704.768799 1706.031372 1709.399902 1712.391113 1714.990234 1716.960571 1715.908325 1713.137207 1710.892456 1708.802734 1705.965576 1699.706177 1693.748901 1690.447754 1687.507202 1683.903931 1682.031006 1684.565308 1691.592651 1696.312866 1696.169678 1691.654419 1686.703369 1682.785767 1687.780518 1694.662476 1698.686768 1702.310791 1704.919556 1705.093018 1702.988159 1696.759033 1678.519897 1667.433472 1665.479858 1664.458984 1657.369873 1654.358521 1655.041016 1655.119507 1651.420044 1645.094238 1636.666626 1626.689941 1616.283691 1608.422241 1600.993042 1597.049683 1607.512573 1620.223511 1630.067383 1643.181885 1654.419434 1669.708496 1676.17981 1680.109985 1671.881592 1666.568848 1660.805542 1652.957031 1641.846924 1626.399292 1623.658081 1625.688599 1609.047974 1595.776855 1610.652588 1623.4375 1646.797974 1661.844238 1671.104614 1673.881104 1673.810913 1668.162231 1658.955933 1647.011475 1638.768188 1627.936768 1613.464844 1596.140747 1585.891602 1572.478516 1569.648071 1562.185059 1555.277466 1545.614258 1534.878174 1541.989502 1554.631592 1561.172485 1562.507446 1555.305908 1539.403931 1526.414917 1532.486938 1533.008545 1533.372559 1540.316528 1549.542725 1559.524048 1575.203735 1572.280884 1556.503662 1550.735718 1546.601562 1542.656982 1534.806763 1521.53833 1509.38501 1497.286621 1486.599976 1476.132324 1470.817261 1470.756226 1464.975464 1461.86792 1463.509888 1464.214355 1466.562744 1471.27832 1477.470093 1481.494385 1483.456055 1484.008057 1483.648071 1482.065918 1479.156982 1476.987305 1476.956787 1475.939453 1473.316284 1473.76001 1476.652344 1478.143433 1479.766846 1480.672119 1481.302612 1481.654541 1481.908325 1483.890137 1489.335449 1497.672974 1512.37561 1524.063232 1538.887695 1548.42395 1558.930786 1568.08667 1576.747681 1573.89563 1566.506958 1561.535645 1560.113647 1559.133545 1559.192749 1557.712036 1552.683716 1548.842896 1549.10144 1549.950928 1550.335693 1550.243286 1550.156616 1551.553955 1555.327759 1560.608032 1565.058838 1571.600342 1579.588745 1587.110229 1596.137695 1602.336548 1608.952515 1610.921631 1606.546509 1604.19165 1603.203979 1601.110474 1597.532837 1589.9823 1583.555298 1592.884399 1602.550903 1611.599121 1622.848267 1631.488525 1636.240845 1635.737793 1634.86145 1632.562988 1630.662231 1628.781738 1627.51001 1626.551392 1625.775635 1625.296265 1624.812012 1624.460571 1623.998535 1622.744507 1620.188721 1616.452026 1614.203491 1612.550415 1610.699097 1612.170044 1611.802856 1608.759277 1602.068726 1591.404419 1581.979004 1584.586182 1588.13562 1587.406982 1586.731934 1574.666138 1561.891968 1557.656616 1551.634399 1546.874878 1556.038208 1563.797852 1566.302124 1566.113892 1564.244995 1570.045044 1575.427368 1574.565186 1574.736816 1573.609009 1574.875732 1575.215698 1573.80481 1565.389282 1550.549194 1531.070435 1516.940796 1511.143311 1523.55188 1530.15625 1534.446167 1540.80542 1552.421997 1564.328125 1577.745972 1592.611328 1607.803589 1618.847656 1630.900513 1636.206055 1652.978027 1669.319458 1679.609131 1689.394287 1699.134155 1710.162476 1717.757202 1723.212158 1721.385986 1717.313843 1713.35437 1707.322876 1698.703735 1680.697266 1662.434326 1644.109863 1629.244019 1620.279663 1623.876953 1624.958252 1623.195801 1619.641968 1625.364014 1630.540649 1633.099976 1639.826782 1632.826904 1620.914429 1616.998901 1622.173096 1622.564209 1623.881714 1614.938599 1604.924683 1593.921143 1576.714111 1561.768799 1555.525513 1548.613403 1546.168091 1545.763184 1546.283203 1554.753418 1567.291138 1578.417358 1583.732056 1586.069336 1585.272705 1580.479004 1573.710449 1568.131714 1567.529785 1573.901123 1578.060791 1582.404541 1585.88855 1588.150513 1589.748901 1592.463501 1594.118408 1596.48291 1596.86792 1596.234375 1590.030396 1577.017456 1578.041138 1587.427734 1588.404907 1585.029785 1573.816895 1564.505615 1558.546875 1549.677734 1546.087158 1540.666504 1535.654907 1533.775269 1532.239624 1522.043213 1520.324219 1513.984863 1504.169189 1493.91626 1487.251343 1486.241821 1486.043091 1486.069214 1491.145142 1500.859985 1505.527466 1506.224243 1500.940063 1502.631714 1504.444824 1504.930908 1506.55957 1508.053833 1508.136597 1507.525879 1506.32312 1503.932495 1499.866455 1496.120239 1492.175659 1486.969238 1483.113159 1485.956299 1489.21936 1490.042847 1488.882446 1486.613281 1484.296875 1481.421753 1477.224854 1471.244507 1469.290527 1468.293579 1465.021973 1465.463257 1470.995361 1474.403198 1484.639038 1490.077026 1493.622559 1497.3302 1500.737671 1502.437134 1502.635132 1501.248657 1496.966675 1491.062866 1480.682129 1481.200439 1487.544922 1490.44812 1491.338501 1490.82312 1489.835449 1488.084351 1485.371948 1485.720703 1487.521362 1489.557129 1491.946411 1494.492432 1492.040405 1481.543213 1468.287109 1452.544189 1429.242065 1425.46814 1422.496338 1410.526978 1405.17334 1400.075806 1394.047974 1382.206909 1359.929077 1335.996948 1325.557617 1324.267944 1331.070679 1344.322144 1367.590332 1386.14856 1398.670654 1409.194214 1417.646362 1424.080444 1440.406372 1466.10022 1491.979248 1512.11438 1528.494141 1543.693604 1560.401733 1574.809326 1571.029907 1566.074341 1560.55835 1555.594604 1549.551758 1543.658447 1537.545044 1534.929688 1533.605591 1531.395874 1524.710205 1519.307983 1514.749023 1503.018799 1499.56897 1501.425659 1507.444702 1513.367432 1513.700806 1512.053711 1511.87561 1525.564209 1541.680054 1551.739746 1552.588745 1551.370361 1548.65625 1542.043213 1529.281128 1515.36084 1506.865601 1507.660278 1509.517456 1512.88208 1523.090088 1527.094604 1527.147095 1526.135742 1522.146362 1517.117798 1514.310913 1508.41626 1503.367065 1499.303467 1489.50647 1484.206665 1485.474121 1486.692749 1482.786499 1478.528564 1475.033081 1468.029541 1462.709595 1457.537598 1454.774414 1452.135254 1450.155884 1448.038818 1445.353027 1443.335327 1441.533569 1439.56897 1437.775757 1437.883911 1438.388672 1438.353394 1436.472046 1433.926636 1430.908447 1427.8302 1424.794312 1420.220337 1419.069092 1420.011841 1422.252075 1425.330322 1428.928955 1433.318726 1440.121948 1446.51123 1452.695557 1445.148315 1433.723145 1425.373047 1423.113892 1423.960938 1426.393433 1429.087769 1429.31958 1428.78894 1427.761841 1424.75 1419.778931 1415.198853 1413.648438 1412.101318 1410.50415 1408.167603 1404.974365 1402.18335 1401.429077 1400.644775 1399.677612 1398.259644 1396.214722 1393.27478 1390.85376 1387.570435 1386.366333 1390.24939 1393.939331 1396.188354 1397.484741 1399.286865 1400.642944 1404.218994 1406.770508 1409.318604 1410.025269 1409.727783 1413.637207 1418.231567 1420.684814 1421.810791 1421.408447 1419.862671 1417.908691 1415.663086 1413.671021 1412.042969 1409.075195 1405.656494 1402.347656 1396.156738 1390.678955 1385.498413 1378.386963 1378.310669 1384.099487 1382.436523 1377.556641 1381.07312 1383.071533 1378.793091 1389.841675 1394.841431 1399.216064 1402.286621 1403.266846 1402.531494 1398.430298 1392.181519 1387.910522 1382.535034 1380.774414 +1670.116455 1669.109375 1672.978149 1679.903442 1681.580322 1682.628662 1683.859009 1688.217407 1690.67395 1692.208984 1695.291626 1699.036255 1702.759399 1704.79834 1707.080322 1709.040161 1710.714844 1711.880737 1712.392944 1711.66748 1708.409546 1704.754517 1701.780273 1697.39978 1702.072632 1706.244629 1709.484863 1711.35791 1711.304443 1710.226562 1710.324463 1711.522339 1712.757812 1713.441162 1713.73584 1711.769653 1708.464478 1706.452881 1703.528931 1699.538696 1694.696777 1691.847534 1688.749878 1685.137939 1682.179077 1683.452759 1688.292236 1694.372437 1696.066528 1695.503296 1691.695923 1688.511597 1687.114624 1689.97229 1695.907837 1700.61084 1704.953369 1707.8927 1708.38208 1704.610229 1697.881714 1690.96521 1687.084595 1679.29248 1677.582764 1676.417114 1671.55481 1670.979492 1666.981445 1659.454956 1650.480591 1640.978516 1630.699341 1618.257812 1606.740845 1601.068237 1600.168457 1609.201904 1618.617798 1626.5625 1637.231812 1650.728638 1666.3396 1676.374634 1683.224976 1681.967651 1670.672241 1663.754395 1655.0177 1642.997314 1633.92041 1635.483032 1627.388672 1607.66687 1596.685791 1610.552124 1625.349854 1647.273071 1660.306519 1670.97522 1674.236816 1673.041748 1663.755249 1655.174927 1645.938599 1638.173828 1627.953735 1611.794678 1603.279785 1600.214478 1584.172241 1571.462891 1567.512573 1559.634399 1548.179688 1535.401611 1554.206787 1564.571167 1571.567139 1567.650269 1556.839355 1538.083496 1536.425781 1541.328003 1539.976196 1535.128784 1545.212646 1556.79126 1571.033325 1581.654541 1585.865601 1576.256592 1563.417969 1556.197388 1548.588623 1540.895874 1526.546753 1511.142456 1500.68457 1488.342285 1484.492188 1482.922485 1482.257568 1478.504761 1476.882324 1479.432495 1483.199463 1486.444336 1486.701538 1487.262451 1489.920044 1491.083618 1491.384399 1491.119141 1489.310181 1486.047119 1483.464844 1482.281006 1481.401367 1479.925293 1477.275391 1473.594482 1473.98877 1474.646118 1475.903809 1477.623413 1478.809692 1480.030762 1483.43811 1488.230591 1499.171631 1511.69873 1525.667114 1544.618042 1562.05542 1571.841675 1579.56897 1577.909302 1572.658325 1562.928467 1555.586792 1552.731812 1552.427734 1551.900757 1549.96814 1546.794678 1544.705811 1545.319824 1547.716187 1548.736572 1547.897827 1548.584229 1551.52417 1555.83252 1560.872314 1565.155029 1570.286255 1575.808716 1581.28418 1586.999634 1596.016724 1601.473633 1608.503052 1612.078247 1611.505615 1610.203491 1609.048706 1606.669312 1603.175659 1600.334961 1596.121948 1599.759766 1612.343262 1621.096191 1629.998047 1636.094238 1635.997192 1635.402588 1633.720459 1631.819092 1629.684448 1628.220825 1627.021973 1626.446777 1625.683228 1625.096191 1623.88208 1620.689819 1616.103027 1612.468628 1610.509399 1609.208618 1606.552612 1601.960205 1610.4552 1612.324707 1610.440063 1603.024414 1593.734985 1584.737549 1586.724365 1587.837158 1586.840454 1582.779053 1574.062866 1572.17041 1566.339966 1559.868774 1555.66394 1562.833496 1569.175781 1572.095093 1572.154907 1572.747803 1574.63562 1574.808716 1569.260132 1566.982666 1565.820679 1567.658936 1575.557129 1575.023315 1560.813843 1546.331665 1524.578613 1514.095093 1517.284668 1528.714355 1535.435669 1542.441162 1554.228027 1564.324707 1573.046021 1584.514404 1603.04187 1616.162964 1633.449951 1648.66748 1655.825684 1659.585327 1674.548706 1688.135376 1698.154175 1708.694458 1718.5271 1731.298584 1733.827881 1730.938232 1723.004517 1718.946167 1712.364746 1702.221191 1684.675415 1665.756226 1649.532593 1637.248657 1636.178223 1640.690552 1640.472168 1636.80542 1631.514404 1641.242432 1646.171997 1649.571045 1648.718506 1642.218628 1636.359009 1633.490112 1628.450195 1625.622437 1619.398438 1607.29541 1593.981567 1580.116333 1566.150269 1558.393677 1554.550903 1557.886963 1558.745361 1555.289062 1552.930908 1562.324707 1579.855103 1600.603271 1608.302002 1609.25 1606.72522 1601.236328 1585.974731 1575.412231 1571.406494 1573.69751 1576.557861 1579.699463 1582.00415 1582.926514 1583.191162 1584.665039 1586.484131 1588.299316 1588.821533 1588.875732 1585.871094 1575.010376 1571.66333 1579.841919 1587.979004 1588.633057 1578.070557 1567.114868 1560.874268 1553.097534 1544.5 1532.779541 1525.909546 1522.807739 1525.214966 1517.833496 1506.851562 1499.33313 1494.211548 1491.089355 1491.76355 1491.469482 1494.38562 1496.109741 1500.031006 1508.111816 1512.357422 1513.530029 1513.49353 1509.588379 1509.789551 1512.434326 1516.515625 1519.779907 1518.455566 1515.572876 1513.013062 1510.455688 1507.062988 1502.471436 1498.480103 1492.803467 1489.995728 1493.642212 1495.238159 1495.56189 1494.669312 1492.745483 1490.364136 1487.575684 1483.706299 1478.941528 1475.9552 1473.913574 1471.261841 1471.080078 1472.238525 1475.376465 1482.470703 1487.976685 1491.186157 1494.58313 1498.13916 1501.518433 1502.690918 1502.811035 1501.662109 1496.95874 1491.447266 1490.28064 1492.824707 1494.544189 1494.67981 1493.836792 1492.471191 1490.922729 1489.638794 1489.536255 1489.85022 1491.258301 1493.730469 1498.493774 1501.043701 1486.299194 1473.840698 1457.65918 1437.485962 1419.533936 1403.701294 1396.595459 1386.442749 1384.026367 1383.138794 1375.612793 1358.21167 1336.44812 1327.427734 1323.657837 1327.636719 1335.917236 1358.444336 1381.944702 1399.186157 1411.831177 1426.814697 1441.071167 1458.641235 1474.090454 1488.480103 1503.220703 1522.276489 1542.04187 1559.081787 1569.930054 1570.313843 1565.338867 1559.943604 1554.8302 1549.93457 1545.900757 1543.814331 1542.818848 1541.959595 1539.389893 1535.498413 1528.188843 1521.990967 1508.750366 1499.634399 1496.719116 1499.866333 1504.119751 1505.317627 1506.339478 1513.050537 1527.847412 1544.434814 1552.246338 1550.956787 1548.793335 1545.656128 1539.657593 1527.50769 1514.891113 1503.108887 1498.187744 1500.933594 1510.292969 1518.817139 1525.69104 1527.604614 1526.648315 1524.039917 1518.317749 1514.156982 1511.032349 1504.165161 1500.543457 1493.563965 1490.889526 1491.116821 1489.861694 1488.736938 1483.700806 1479.00354 1476.552856 1468.581421 1463.215942 1459.231445 1455.730469 1453.738647 1451.785767 1449.052124 1446.220703 1443.797485 1442.083984 1440.784668 1440.687012 1441.04895 1440.903198 1439.518433 1434.840576 1429.634888 1425.776489 1421.235962 1416.811157 1417.82251 1420.775024 1424.434448 1426.704712 1431.404053 1436.422607 1441.056274 1446.269287 1449.804688 1445.493408 1436.248413 1426.588135 1422.132812 1419.348633 1421.126465 1426.168823 1428.185913 1427.781128 1426.692871 1423.7771 1420.001221 1416.921753 1414.265869 1411.522339 1409.11084 1407.260376 1405.477783 1403.460449 1401.841797 1400.717041 1399.754761 1398.423706 1396.719971 1393.714233 1390.978027 1392.785278 1393.818604 1395.111084 1397.844849 1400.206909 1402.153442 1403.004517 1403.708374 1405.950562 1410.148438 1413.767456 1416.304688 1416.513794 1415.052124 1419.16272 1422.542358 1424.51001 1424.706299 1423.281494 1420.967407 1418.400879 1415.83606 1413.230347 1410.646851 1405.960083 1401.334229 1397.580566 1393.025269 1389.23584 1382.125488 1376.907227 1377.931396 1379.688477 1378.848633 1376.557495 1376.115601 1376.687988 1388.234253 1394.193359 1397.505371 1399.793579 1400.034546 1398.445557 1394.192261 1387.689697 1379.087891 1375.221313 1374.346069 +1666.19519 1673.172974 1682.045532 1687.890625 1693.08374 1694.996094 1692.271118 1691.484131 1692.477905 1694.088013 1694.241821 1696.735229 1702.467896 1705.049805 1706.518799 1708.656128 1711.294678 1713.166504 1714.424683 1715.270142 1716.048706 1713.68042 1710.189087 1705.854736 1709.755737 1713.6427 1716.596802 1718.684692 1717.586182 1715.708496 1713.8573 1712.981201 1712.567261 1712.358032 1711.258545 1708.290161 1704.265503 1700.57605 1697.233521 1694.296265 1692.344116 1691.150391 1689.181763 1684.292725 1684.2771 1687.93042 1691.480957 1695.271484 1696.565552 1695.658691 1692.64856 1691.314941 1690.88208 1692.432129 1696.040283 1701.773682 1707.428833 1709.62085 1709.574097 1708.519165 1707.223145 1705.633179 1699.627686 1697.390137 1691.605957 1688.265381 1683.024658 1676.404053 1670.757812 1660.024902 1650.483765 1641.098389 1630.911865 1615.462891 1606.072266 1610.769653 1603.881836 1607.505249 1629.335327 1634.287842 1633.018799 1641.481201 1658.889526 1673.121948 1682.897095 1684.696777 1673.863525 1665.000732 1657.516113 1645.920166 1641.691528 1637.142944 1623.910156 1607.413086 1599.315552 1609.95166 1626.0271 1643.442383 1657.950806 1667.355225 1673.016113 1669.818115 1657.925537 1651.15686 1643.936523 1636.489502 1626.48645 1608.757446 1611.004517 1609.139648 1595.437256 1585.115845 1575.763672 1564.010498 1546.984619 1548.231812 1563.748169 1575.343994 1577.640503 1571.649902 1555.017822 1539.02356 1545.382935 1550.582275 1550.784546 1542.942139 1547.902954 1561.625854 1580.277344 1591.721436 1596.427856 1588.633667 1571.598633 1563.481812 1554.74231 1544.80249 1526.747681 1511.949829 1500.757935 1495.309204 1493.877075 1493.625 1491.203735 1486.086548 1486.194946 1491.072021 1495.515381 1498.053711 1497.769653 1496.877441 1498.226807 1499.213501 1499.950562 1499.325684 1498.106201 1493.52002 1487.861084 1487.089355 1486.317871 1485.296753 1483.486572 1481.769409 1483.446533 1487.938599 1488.277954 1487.384888 1484.090576 1481.475098 1482.243286 1485.353882 1491.567749 1507.019653 1519.802734 1540.595703 1556.750244 1577.464111 1586.090088 1576.602295 1568.861206 1561.001343 1550.843506 1546.53125 1545.950439 1545.580078 1544.139526 1541.19751 1536.849731 1540.407349 1542.988647 1542.254883 1541.880371 1545.795898 1549.80481 1553.924683 1559.139038 1563.789795 1567.733032 1572.250977 1576.879395 1581.094849 1586.265625 1593.871216 1602.291016 1610.002197 1613.873413 1617.722412 1617.993652 1615.716553 1611.48291 1610.706909 1608.782593 1604.781006 1609.217163 1618.24646 1627.682739 1634.984009 1635.925293 1635.427124 1633.635742 1631.301025 1629.095093 1627.502441 1626.688232 1626.20166 1625.689331 1624.810303 1622.472168 1615.039917 1608.588013 1605.774414 1603.791382 1601.455322 1597.590576 1595.378906 1604.052734 1612.883789 1611.367188 1604.899292 1596.170532 1591.206787 1588.987427 1585.975952 1583.528809 1577.737915 1575.534058 1573.450195 1569.789429 1563.267334 1562.97583 1566.552612 1572.111572 1575.042725 1575.533081 1575.739868 1574.859375 1570.119995 1563.160278 1558.279663 1557.981079 1557.942505 1564.427002 1567.253296 1558.63208 1545.432617 1522.325806 1514.19458 1521.210693 1533.440918 1541.035522 1549.365234 1568.141235 1580.314453 1588.158569 1595.074097 1606.896729 1622.705811 1643.24939 1657.856812 1667.082031 1677.98645 1680.776855 1694.026001 1707.170898 1714.495972 1725.457031 1734.433472 1733.46106 1731.442505 1726.993408 1723.006958 1718.081421 1708.151489 1696.078613 1683.174316 1663.374634 1644.784302 1650.998047 1654.935425 1653.371338 1648.706055 1645.212891 1655.611938 1660.680664 1661.970093 1659.0 1647.434204 1638.411377 1631.730469 1623.103027 1614.585327 1602.463257 1591.568237 1580.847656 1571.408081 1563.85498 1564.327393 1564.601318 1567.974243 1567.549194 1563.090576 1558.837402 1568.537354 1586.089111 1607.293335 1615.03064 1618.720215 1619.263184 1615.251709 1604.776245 1583.000977 1576.390991 1573.575928 1577.05127 1578.976929 1579.340942 1578.705444 1577.59668 1578.125732 1578.594238 1578.777954 1577.706909 1579.747437 1579.958496 1576.108154 1571.790161 1572.79248 1582.072632 1587.079712 1586.467285 1573.487183 1565.98999 1558.054443 1552.235962 1541.814331 1523.651489 1511.316528 1511.606323 1508.345459 1498.957153 1496.773071 1499.443115 1501.695801 1499.99939 1498.433716 1504.98291 1507.565063 1510.699463 1516.396851 1520.212402 1520.191772 1519.885254 1520.259888 1528.333252 1535.24353 1539.049805 1540.79834 1539.986816 1537.876953 1532.933838 1527.753662 1520.710693 1511.325928 1504.644165 1498.661133 1500.143921 1501.33606 1501.914185 1501.934692 1501.164307 1499.688843 1497.557129 1494.694458 1490.519287 1486.753052 1484.108643 1481.176392 1477.563354 1475.266602 1474.587769 1474.989868 1479.287109 1484.463501 1487.265015 1489.997925 1493.810059 1498.116455 1501.11792 1502.012207 1502.255493 1501.563477 1499.841675 1499.210449 1498.678833 1498.349976 1498.131714 1496.492188 1493.74939 1491.168579 1489.552124 1487.637451 1486.206787 1490.870361 1493.209839 1497.040161 1499.95874 1488.118286 1471.905518 1447.306519 1426.754272 1419.852783 1415.169067 1402.253906 1392.847656 1378.858765 1364.005737 1358.879395 1346.995972 1336.973633 1329.657715 1324.843994 1325.710815 1328.932739 1345.155884 1375.119629 1396.554321 1411.815552 1429.21106 1445.770508 1464.351807 1490.347778 1509.928101 1522.618042 1533.369019 1544.073975 1558.864014 1571.473511 1571.110962 1565.914795 1560.318848 1556.9375 1553.780762 1551.363647 1550.735107 1551.843018 1552.134888 1550.739624 1544.985352 1538.94519 1530.816406 1515.228394 1504.155884 1495.862305 1490.315186 1495.313477 1498.147217 1499.82019 1512.354248 1525.473389 1541.034424 1548.585205 1547.424438 1546.332886 1543.317993 1538.065063 1525.735229 1513.792603 1503.234009 1494.748901 1497.144043 1504.513672 1512.060913 1521.296875 1527.192627 1525.959839 1522.46814 1517.34729 1512.243164 1507.3125 1501.963013 1498.206421 1494.811157 1491.811523 1489.239014 1485.453491 1482.516846 1478.695068 1475.395386 1473.606323 1469.078735 1464.963867 1461.167725 1457.370239 1454.776733 1452.711182 1450.213257 1447.348755 1444.880005 1443.146851 1442.297607 1441.933594 1441.809082 1441.46814 1440.223145 1434.940796 1427.948364 1423.437378 1418.311157 1414.101318 1417.187988 1421.1875 1425.840332 1428.953613 1432.557129 1436.846313 1440.426514 1443.061646 1443.851196 1440.523315 1433.86438 1425.950195 1420.935059 1415.590698 1414.47583 1419.573242 1421.896606 1420.750854 1420.004883 1419.784424 1418.549072 1416.755249 1414.190308 1409.35144 1406.453247 1405.995605 1405.413818 1403.85498 1402.190552 1401.430786 1400.338623 1399.238037 1398.203613 1396.863525 1396.047729 1397.5354 1399.384399 1400.466309 1401.427124 1403.630859 1405.571167 1406.887207 1408.258057 1410.577148 1412.274658 1414.990356 1418.055176 1419.381226 1419.870605 1421.928223 1424.191162 1426.70105 1427.684448 1426.67981 1424.352051 1421.981445 1419.111572 1415.94397 1413.247314 1409.23877 1404.050537 1400.408325 1396.793945 1392.730957 1385.897949 1378.661499 1376.276001 1377.243652 1378.702026 1376.312744 1370.69165 1375.001953 1386.431763 1393.09668 1395.486694 1396.687622 1396.510254 1393.964844 1389.997803 1383.347778 1376.296143 1369.295288 1368.076782 +1668.419189 1677.309326 1686.916748 1696.391602 1704.334229 1710.827393 1711.248535 1706.09668 1702.828979 1702.4198 1702.532471 1702.361816 1704.378418 1706.895386 1707.280518 1708.745728 1712.21582 1715.046143 1717.533203 1719.802124 1721.228516 1721.926758 1720.546509 1716.331177 1716.719238 1720.439331 1721.530029 1721.328369 1720.267944 1718.330078 1715.396851 1713.199463 1712.115356 1711.06897 1708.779907 1705.289673 1699.658203 1694.752075 1693.209351 1692.476929 1692.201782 1691.871826 1691.860596 1695.200928 1694.459229 1692.498901 1695.661377 1696.828491 1696.684082 1694.926147 1693.723022 1693.501709 1693.148193 1693.47937 1695.066528 1701.392456 1707.526123 1709.87854 1710.290527 1710.369385 1709.904663 1709.557251 1705.554199 1700.157837 1697.065552 1683.379761 1676.531494 1670.468628 1663.063965 1654.932251 1646.666382 1636.771851 1626.991699 1609.44397 1614.922363 1613.951416 1605.782104 1622.993774 1639.113892 1645.287476 1651.367065 1653.043335 1656.745483 1671.736084 1683.432861 1687.38623 1676.719849 1667.327759 1658.456543 1652.100464 1645.391602 1637.732544 1622.704712 1606.84436 1600.974731 1607.692139 1620.352539 1639.122192 1654.750366 1664.244995 1666.893311 1659.848755 1653.160278 1647.324463 1640.70105 1633.208496 1622.178467 1613.554443 1618.428345 1611.907593 1601.113403 1588.423828 1575.396484 1558.096436 1549.490723 1558.305908 1573.616211 1583.837769 1581.514893 1568.450439 1550.849365 1545.860229 1553.376099 1558.447144 1557.784424 1549.604614 1551.340576 1564.65271 1585.082275 1599.505737 1603.165649 1594.33374 1580.022949 1569.252686 1559.150024 1548.270996 1526.883423 1520.917236 1508.518188 1503.567871 1505.210571 1504.79834 1501.916992 1495.631958 1499.346191 1504.112183 1507.318237 1508.885254 1508.189087 1507.594482 1511.359131 1513.876953 1514.145386 1512.572266 1508.917236 1503.584839 1497.067505 1494.869141 1493.74353 1491.887695 1489.714233 1489.224121 1490.945557 1492.250488 1492.045776 1491.380615 1489.788818 1487.376587 1482.225342 1483.91626 1488.428345 1500.223145 1510.437134 1525.555176 1541.072632 1551.973877 1568.876221 1568.313721 1563.274658 1558.095093 1551.757202 1546.085815 1538.055298 1539.244385 1539.439819 1536.61499 1535.41626 1537.020752 1539.016357 1537.439087 1536.214233 1540.265381 1545.802856 1549.244995 1554.41394 1560.360474 1564.213989 1567.608154 1571.810059 1574.613281 1581.91626 1589.319946 1600.177734 1608.40625 1614.362061 1619.0802 1624.379517 1624.399048 1622.390137 1621.276489 1621.183716 1617.532349 1608.262939 1619.614868 1627.474609 1634.267212 1635.813721 1635.121826 1632.907471 1629.93811 1626.852417 1625.166504 1624.932251 1624.434082 1624.783325 1624.494995 1622.826172 1613.872803 1605.730957 1598.366699 1597.151733 1595.709595 1592.747681 1588.398926 1595.282593 1607.832275 1612.458618 1610.555542 1599.43457 1594.347168 1589.519897 1584.302124 1577.991089 1572.58667 1570.537231 1568.612915 1566.800171 1564.431152 1564.290283 1566.206909 1568.818359 1571.28064 1573.19043 1572.747925 1569.156006 1564.032837 1557.761963 1550.206299 1550.660522 1551.80896 1555.011719 1558.007202 1551.314697 1539.581787 1525.960938 1516.4198 1522.268799 1537.621216 1545.311646 1555.778809 1575.281006 1588.412231 1602.944092 1613.181274 1617.42334 1625.980957 1646.785278 1665.077881 1680.700439 1690.312744 1697.418091 1705.933594 1712.835083 1719.251221 1729.571167 1733.359131 1732.08606 1729.949219 1726.890259 1723.15564 1718.292603 1710.140381 1701.902832 1691.231567 1669.050171 1666.054932 1669.704834 1667.566284 1664.428589 1658.12854 1657.661011 1662.050903 1663.406128 1662.756226 1660.123169 1643.447144 1629.526123 1619.75769 1609.647339 1600.168091 1593.138306 1582.983154 1573.615723 1572.934692 1573.638062 1572.935669 1575.604614 1577.710571 1576.088623 1570.84436 1564.879272 1573.342773 1587.914551 1606.775391 1617.258423 1623.930786 1624.396973 1620.305664 1613.996826 1598.087769 1582.400024 1579.84375 1579.564087 1579.746826 1578.572388 1575.654419 1572.555786 1572.0625 1571.396973 1570.410278 1569.058105 1570.191528 1574.080811 1573.326538 1566.140747 1566.075439 1575.040405 1579.507324 1580.262451 1577.530518 1571.194702 1558.40686 1551.448853 1541.571167 1528.934937 1512.847656 1504.056152 1499.697998 1505.751587 1508.311157 1507.73584 1506.379517 1506.476318 1511.084839 1516.617554 1518.278564 1519.304932 1524.265137 1528.937622 1527.096924 1526.764526 1533.390991 1543.546387 1552.972046 1557.085571 1558.196777 1557.673096 1555.761719 1551.268311 1541.424072 1532.905273 1524.561157 1513.231567 1508.710083 1509.448242 1513.441406 1514.510864 1514.733398 1513.437988 1509.939819 1505.892578 1502.504272 1497.594604 1492.526489 1490.580078 1489.099976 1486.915039 1481.926147 1479.044556 1478.504272 1480.296265 1482.970947 1484.828247 1486.397095 1488.582153 1492.687134 1495.805542 1497.763794 1500.068848 1502.226074 1502.662842 1502.706543 1502.159668 1501.812378 1501.057739 1498.607666 1493.658569 1488.11084 1485.765137 1481.353027 1476.672852 1484.19165 1488.987305 1491.9729 1492.718018 1485.09314 1476.648804 1465.336914 1452.281372 1441.669678 1433.426147 1419.341675 1409.385376 1397.115356 1381.076782 1364.075317 1349.645386 1339.479126 1332.223267 1326.93042 1324.982666 1327.062012 1337.460938 1366.201538 1393.548584 1411.168457 1425.641113 1441.383789 1458.045654 1483.213135 1507.059937 1524.567627 1540.178345 1552.767578 1564.628662 1575.985718 1574.150757 1568.372559 1563.266846 1560.496582 1559.677124 1559.343262 1559.591797 1560.138916 1559.713989 1557.692139 1552.337036 1545.783447 1539.754761 1522.254028 1511.067505 1497.942749 1489.312744 1486.797119 1491.103027 1497.911987 1508.511719 1518.930176 1532.73645 1539.856445 1540.615112 1542.394043 1541.741455 1537.9021 1524.66333 1511.996582 1503.57019 1491.682129 1485.559692 1497.520508 1505.873169 1514.264404 1523.768311 1523.878662 1519.257812 1513.921387 1509.922729 1504.093506 1499.02002 1495.610596 1491.599731 1489.67334 1486.106812 1478.327759 1475.805786 1473.32373 1470.518921 1468.20813 1466.003418 1463.028076 1460.034302 1456.526367 1454.110352 1452.179932 1449.515137 1446.418213 1444.220581 1443.171021 1442.59314 1442.278931 1442.050659 1441.116943 1438.692261 1433.359131 1427.58252 1422.121338 1416.093506 1413.591553 1416.808472 1421.123413 1426.366089 1429.27417 1432.275146 1435.46106 1438.001343 1439.760742 1439.282227 1436.274902 1430.296021 1424.71582 1420.08606 1416.153931 1413.19397 1412.487671 1413.707275 1411.588257 1412.583008 1416.224976 1416.243164 1415.520142 1411.681885 1405.206055 1402.416504 1404.51062 1405.343384 1404.92041 1403.110107 1401.964478 1401.085449 1400.345459 1399.794067 1399.939575 1400.230591 1402.595215 1403.733032 1404.304443 1404.98938 1406.595215 1408.560547 1410.403564 1412.303101 1414.355835 1416.003662 1418.085571 1420.432129 1422.05603 1423.281128 1424.949097 1425.720703 1428.1073 1429.722778 1429.296387 1427.753296 1426.307373 1423.02771 1419.426758 1416.821777 1414.120239 1409.471558 1404.599487 1399.983887 1394.846802 1388.818359 1380.954956 1376.511108 1372.42395 1373.032959 1370.892334 1365.630371 1370.762329 1382.512451 1391.188477 1393.177856 1394.167114 1393.784668 1391.289795 1386.057373 1379.604004 1371.720337 1365.120605 1361.932861 +1671.046265 1681.918945 1691.395996 1702.438721 1713.394653 1721.320068 1723.464844 1721.782227 1718.431641 1714.124512 1710.919922 1709.706543 1708.520752 1709.831909 1710.507324 1711.840332 1713.920044 1716.240356 1718.715332 1721.869263 1724.148438 1725.036743 1723.634521 1721.784302 1722.054932 1722.76416 1722.583496 1721.921143 1720.535156 1718.143677 1714.279175 1711.574097 1710.231934 1708.587891 1705.006226 1700.380005 1696.090454 1693.184082 1693.006592 1692.931519 1693.177856 1693.116821 1694.945923 1697.377441 1698.53833 1697.201538 1697.875977 1697.373291 1695.818237 1695.024048 1694.415894 1695.012207 1695.402344 1695.272339 1694.896606 1700.918213 1707.31604 1709.793091 1710.594971 1711.074463 1708.464233 1703.408325 1698.764282 1695.405884 1690.210571 1677.331665 1667.36853 1659.367432 1653.818237 1644.796509 1637.550415 1628.102295 1618.986206 1610.101807 1624.374756 1620.540039 1607.326782 1628.727295 1640.075195 1649.032959 1658.046753 1669.750244 1675.125854 1679.80127 1695.8479 1692.208008 1680.177612 1671.325317 1664.22168 1657.754272 1648.324951 1637.976807 1621.606079 1610.138794 1603.618042 1606.765747 1616.468994 1634.796997 1651.899658 1660.090454 1659.210938 1654.343506 1647.665527 1643.148682 1637.237427 1627.773071 1621.226074 1623.13916 1622.334595 1612.006226 1599.592285 1583.591187 1564.839111 1560.133423 1572.476929 1575.868408 1587.514771 1593.373535 1584.040405 1566.00415 1555.216675 1552.174927 1560.168945 1567.307495 1565.933228 1556.411621 1558.037964 1566.384521 1588.807739 1601.936523 1609.313721 1600.234497 1589.328003 1575.391968 1563.422607 1551.004517 1541.560303 1533.362427 1520.186646 1522.194214 1522.696045 1519.17749 1514.674072 1508.234375 1509.164795 1516.202026 1519.861694 1520.898193 1518.906494 1520.039551 1526.922241 1528.91626 1528.225342 1525.948486 1520.35791 1513.208496 1505.644409 1504.508911 1503.140503 1500.316162 1497.20874 1497.183105 1497.247559 1497.169312 1496.165161 1494.787231 1492.869141 1490.434204 1487.505615 1484.375244 1486.327637 1492.442139 1498.509277 1510.889771 1524.554321 1538.332397 1547.19751 1553.712891 1554.398682 1551.78418 1548.796997 1543.77063 1537.240112 1535.886353 1535.942261 1534.988403 1534.794189 1535.433472 1536.006836 1535.60022 1535.794556 1536.177979 1539.484009 1546.03772 1548.880371 1554.31958 1558.884155 1561.056641 1566.16272 1574.48999 1580.708618 1588.167725 1595.667603 1600.555664 1606.588989 1611.015991 1620.685669 1624.743896 1626.759766 1628.09729 1627.895386 1626.574219 1621.789551 1620.292114 1628.271973 1634.637207 1635.703491 1634.647217 1631.24585 1627.733887 1623.70459 1621.395386 1620.432861 1619.145386 1620.866577 1624.245361 1624.085571 1618.389526 1608.806885 1598.898926 1594.703613 1591.942383 1589.040649 1584.931274 1585.536621 1600.611694 1611.534058 1613.04187 1601.810547 1594.593994 1589.379395 1584.807007 1578.863159 1574.560059 1570.871826 1563.643677 1561.515015 1561.544312 1562.529053 1563.713745 1562.682861 1561.374756 1564.634399 1563.720825 1562.67981 1557.990601 1552.032593 1545.612183 1543.460571 1543.792847 1543.966675 1543.248901 1539.245239 1533.882446 1526.967407 1518.063965 1521.979614 1538.679199 1548.908081 1558.065186 1577.739746 1591.839966 1606.786011 1625.244385 1639.191406 1651.244263 1659.757935 1670.613647 1686.613159 1697.140015 1703.421387 1710.936157 1717.269043 1722.859741 1729.217407 1731.161011 1729.893555 1727.899292 1725.593872 1722.875854 1718.426636 1712.25061 1705.152954 1695.731079 1684.729736 1684.446411 1684.14856 1680.096436 1674.724854 1667.818848 1666.396118 1666.350098 1664.959595 1661.8479 1654.474731 1630.468994 1620.786743 1612.732056 1607.957642 1601.4375 1592.955811 1584.790894 1579.782593 1582.807617 1584.209106 1585.240234 1587.609985 1590.153564 1583.637207 1577.343628 1570.741577 1575.753174 1589.133911 1610.82605 1618.971924 1624.927612 1626.389038 1624.53479 1610.389648 1599.960449 1584.038574 1584.423828 1584.765137 1583.203003 1581.116699 1578.055298 1575.077271 1571.907349 1570.174561 1566.914917 1564.14624 1563.195679 1563.179321 1564.362305 1561.4729 1559.300415 1565.278931 1568.720825 1569.94043 1570.522217 1565.482178 1555.133179 1546.680786 1533.702271 1515.560669 1508.246338 1506.081665 1509.51355 1516.942627 1517.921997 1513.745361 1510.616455 1510.865234 1515.893433 1523.475098 1535.992676 1532.173828 1535.95459 1540.834351 1540.40332 1535.440063 1543.504883 1554.53186 1563.475708 1569.382812 1571.959351 1571.581421 1567.53186 1562.5271 1554.137939 1541.604736 1528.348877 1521.855591 1520.843628 1523.949463 1525.768799 1524.943481 1523.724731 1522.36499 1518.99231 1514.723755 1509.473999 1498.268921 1496.477295 1494.471313 1492.748901 1491.029663 1488.622192 1484.833252 1483.189697 1482.789307 1483.060303 1483.204712 1483.556763 1484.889282 1487.460205 1489.415771 1492.590088 1497.36377 1501.80481 1503.285522 1503.263672 1503.130615 1502.734985 1502.186768 1499.747192 1493.867676 1488.325439 1480.373901 1474.974976 1472.794678 1474.562256 1481.912476 1487.958252 1491.086304 1480.598755 1468.173706 1460.766724 1450.830444 1440.926514 1428.825439 1414.975952 1406.577148 1404.990723 1392.337891 1379.301392 1359.184326 1343.550049 1335.169556 1328.804688 1325.381958 1327.093628 1338.570068 1359.515503 1386.541748 1403.713501 1418.349487 1431.391357 1446.084351 1465.246826 1489.421387 1511.099731 1528.30481 1544.2771 1561.478882 1572.693604 1571.252686 1566.406616 1564.68042 1563.627808 1563.491821 1565.006836 1569.28418 1570.616455 1566.156128 1563.643799 1561.010254 1552.155396 1545.169434 1528.315186 1516.964722 1502.448608 1492.52124 1484.006592 1484.027466 1491.200928 1500.843018 1510.661865 1519.079102 1526.370361 1533.784668 1539.104614 1540.861816 1537.927734 1522.76123 1512.2771 1502.017944 1486.89502 1480.518921 1485.905518 1499.373047 1507.674194 1513.632446 1517.907471 1515.887451 1510.503174 1505.742432 1500.588257 1496.543945 1492.882568 1489.061646 1484.123047 1476.927979 1472.319458 1469.346802 1467.921143 1465.616089 1462.576416 1460.106812 1455.779785 1454.648926 1454.009521 1452.58728 1450.681396 1446.734253 1441.111816 1441.666504 1442.182495 1442.115112 1442.024658 1441.678955 1440.581665 1436.496216 1431.168213 1425.402344 1420.050903 1414.69873 1413.133789 1415.59375 1420.236328 1424.87146 1428.223511 1431.401001 1433.529419 1435.200195 1434.880981 1433.278931 1431.331665 1427.397339 1423.459595 1419.780884 1416.271851 1411.270386 1405.154541 1402.130615 1403.145386 1402.75708 1408.26001 1410.43335 1409.976685 1405.598511 1401.387573 1400.723022 1403.853149 1406.213745 1406.746582 1405.162109 1402.583496 1401.780396 1401.365967 1401.699707 1402.148071 1403.452026 1404.378784 1404.798828 1405.194092 1406.556519 1408.911133 1411.377319 1413.46582 1415.627441 1417.562988 1419.474487 1421.624146 1423.679565 1424.821777 1426.103027 1427.594727 1429.227783 1431.778442 1432.284058 1431.435547 1430.000488 1428.648193 1426.653442 1423.094971 1420.141602 1417.734985 1415.341309 1409.446533 1403.004883 1396.912964 1390.888062 1383.791016 1377.668823 1370.910522 1365.086426 1365.894653 1364.378052 1364.234619 1375.275269 1384.932617 1390.038696 1391.045166 1390.302734 1386.434082 1380.459473 1373.738647 1366.398682 1360.835571 1355.040894 +1674.456665 1686.523071 1695.711182 1706.939331 1720.062256 1726.670898 1729.569214 1728.634521 1725.973755 1722.961426 1717.833618 1715.35498 1713.526489 1713.670776 1714.497314 1715.553589 1716.664062 1717.746582 1719.001587 1723.511108 1727.942871 1729.624023 1727.931519 1726.241089 1724.928711 1724.057617 1723.012329 1722.134521 1720.698853 1716.99292 1710.38501 1706.866577 1705.371216 1702.901123 1698.778687 1695.018799 1693.880493 1693.61084 1693.431763 1694.008179 1695.855347 1697.106689 1698.623291 1704.955933 1705.737915 1702.341309 1699.729126 1697.525024 1695.108276 1695.200806 1696.936279 1698.533691 1699.395874 1698.919434 1698.237183 1702.962524 1707.435303 1709.83374 1710.597656 1710.043457 1704.006836 1693.812988 1690.138062 1687.765991 1683.548462 1670.871216 1661.845215 1653.928589 1647.886353 1636.317505 1626.303467 1618.116333 1617.40625 1624.45813 1633.450928 1626.639648 1610.565063 1622.159546 1637.493408 1646.792358 1656.105713 1670.57666 1675.244385 1681.852173 1691.340942 1692.654907 1682.635132 1675.769165 1668.554199 1661.213867 1648.986938 1631.782837 1622.093506 1619.193237 1609.652832 1606.703857 1614.894653 1633.542603 1648.147217 1653.450684 1653.394531 1649.48584 1643.792236 1638.757202 1633.810547 1624.762085 1625.346069 1625.484131 1620.953125 1606.658081 1593.35437 1575.739868 1571.568359 1582.902588 1594.928711 1598.14563 1604.362671 1600.905151 1582.53418 1570.03418 1563.942505 1558.619263 1569.170288 1576.487061 1575.103638 1559.941895 1564.080811 1574.816284 1590.368652 1605.026611 1615.293945 1608.483765 1595.374512 1584.927124 1576.602783 1565.249512 1551.142334 1542.702637 1537.011963 1540.071655 1539.30481 1534.657959 1525.708618 1520.458496 1526.700195 1534.322632 1536.602417 1535.805176 1530.586914 1536.456055 1538.150146 1538.525269 1537.786255 1534.399658 1528.96521 1521.617432 1515.865479 1515.848022 1513.171387 1508.789673 1504.454956 1503.362061 1502.663086 1501.833496 1500.405273 1498.420898 1496.127808 1493.142578 1490.374268 1488.919678 1488.117798 1486.783569 1493.025879 1499.635986 1511.087402 1521.456665 1533.928833 1540.617188 1543.440552 1542.481445 1541.626099 1541.821411 1539.147705 1535.846436 1534.612549 1534.035645 1533.809692 1534.09375 1534.67749 1535.328613 1536.345581 1537.844971 1540.110962 1544.132324 1546.805786 1548.263794 1549.353882 1555.682495 1562.448364 1571.692993 1577.169434 1583.586182 1588.503662 1592.89624 1596.428101 1606.721069 1616.003906 1622.391724 1629.361938 1633.546875 1633.63501 1631.52771 1628.689819 1624.459229 1631.575439 1635.154053 1635.933105 1633.660522 1630.802124 1625.539917 1621.42395 1616.561035 1611.930298 1610.431641 1612.321899 1620.935913 1624.757324 1620.289429 1611.823364 1601.613892 1595.317017 1589.202881 1587.494995 1579.700928 1576.532349 1598.372559 1610.164429 1613.446167 1605.019531 1594.705811 1588.843384 1583.87085 1580.089233 1576.66687 1572.350952 1564.979248 1562.19165 1559.587036 1558.851196 1559.054321 1557.918823 1555.377441 1556.991089 1555.869507 1549.890991 1549.105591 1544.848267 1537.84314 1535.769531 1535.906006 1533.109375 1531.396362 1529.908447 1528.066406 1525.285522 1519.090454 1523.410767 1539.557983 1551.49292 1561.382935 1577.30188 1590.538574 1604.618652 1626.770508 1644.210571 1655.083496 1668.273193 1682.353516 1691.062012 1698.784058 1705.645752 1713.431396 1721.015259 1724.348022 1726.923706 1728.26062 1727.343018 1725.758057 1723.935059 1721.713745 1717.862183 1712.155762 1707.833984 1700.977417 1698.718384 1695.807617 1690.997559 1686.848511 1683.660645 1676.335693 1672.277832 1668.994019 1667.336182 1662.989746 1656.416138 1643.168579 1632.644409 1625.122437 1618.807495 1610.318604 1595.384277 1585.641602 1587.210083 1593.697021 1596.083984 1598.189819 1604.361816 1604.388794 1594.971436 1583.083496 1574.220093 1578.874023 1597.880005 1614.160034 1620.896484 1627.672607 1628.510376 1623.47937 1610.395386 1596.339355 1593.088379 1595.927979 1596.980591 1592.207886 1586.588867 1582.171021 1579.850952 1576.118042 1572.921265 1566.760742 1560.307373 1559.574341 1559.616943 1559.672119 1558.463257 1556.211548 1556.515869 1558.822754 1559.953857 1559.467285 1554.662109 1545.194092 1531.240112 1518.86084 1516.797241 1517.210693 1511.839722 1517.655396 1525.682983 1526.278442 1521.785522 1518.812256 1516.426147 1519.677368 1529.544678 1550.407593 1553.65686 1553.539551 1556.513916 1557.599121 1556.917603 1563.355713 1567.799683 1573.433228 1579.469604 1582.250854 1582.188599 1577.109375 1569.890503 1561.789185 1546.244019 1535.983521 1530.990356 1533.112671 1539.231201 1540.301636 1538.241211 1535.53064 1532.269531 1528.358398 1523.644043 1519.326904 1511.013916 1499.390381 1497.530518 1495.873169 1493.831421 1491.191895 1488.590332 1486.6427 1485.302002 1483.430298 1481.956421 1480.945923 1480.998169 1482.65271 1484.341309 1487.699097 1493.657593 1499.857056 1502.884033 1503.675903 1503.427124 1502.892944 1501.42749 1498.097656 1493.712036 1490.532227 1484.030396 1474.498291 1468.987427 1467.406982 1476.146362 1484.488281 1490.236694 1487.187866 1465.557251 1441.980103 1425.500854 1414.200317 1406.699585 1393.587646 1387.873535 1382.841064 1382.488892 1379.933472 1363.446045 1348.307495 1337.532227 1330.366943 1326.329468 1327.320312 1335.812378 1352.710327 1375.206665 1393.108521 1407.539062 1422.418579 1439.558838 1460.091309 1499.555908 1511.309692 1525.892212 1548.560791 1560.533813 1559.300659 1557.409424 1560.865845 1564.236206 1563.153687 1562.559814 1564.654175 1570.217529 1572.04541 1567.322998 1564.604004 1563.59375 1562.281616 1550.111938 1533.884155 1522.094727 1508.222534 1495.69397 1482.275635 1476.973267 1485.276367 1493.189941 1501.047119 1509.266968 1521.467529 1532.330078 1538.936157 1539.804443 1537.244873 1522.099365 1511.767334 1499.475342 1486.261841 1475.7677 1476.271729 1488.380981 1500.921265 1506.744995 1513.744385 1512.660034 1508.068359 1503.100952 1498.076782 1491.759888 1489.593872 1488.84436 1483.440063 1474.209473 1465.036499 1462.831665 1461.55188 1460.05603 1456.736816 1453.651245 1448.377808 1447.55835 1448.533813 1448.77832 1446.629517 1442.679688 1438.628784 1438.416504 1440.594727 1441.005127 1440.718384 1440.02124 1439.07373 1434.404297 1429.759888 1424.31189 1418.045166 1413.118652 1411.836914 1413.816162 1418.380737 1423.429199 1427.706909 1430.445312 1431.430054 1431.195435 1428.999146 1427.043091 1426.033203 1423.697632 1420.782959 1418.046509 1415.143799 1411.158447 1406.785889 1402.911377 1400.487793 1399.373169 1400.090698 1402.046875 1401.961792 1400.498657 1396.704224 1396.886963 1403.683472 1409.006958 1410.572388 1408.134888 1405.2771 1404.521606 1403.944946 1403.4823 1402.909424 1404.083496 1404.863159 1402.723755 1402.334351 1405.104614 1409.534424 1413.36853 1416.023804 1418.356201 1420.583374 1422.792725 1424.960815 1426.701294 1428.324585 1431.502563 1434.143921 1436.415894 1436.884033 1435.328003 1433.381226 1431.639038 1430.076416 1428.042603 1425.091431 1423.401855 1421.597412 1418.810059 1414.551758 1406.022095 1398.86084 1392.103394 1385.911255 1380.095459 1373.749634 1366.928345 1364.241333 1362.913696 1362.161255 1366.463013 1376.067627 1380.976562 1381.905396 1380.608643 1377.565063 1372.118042 1366.123169 1361.346558 1356.64917 1351.42627 +1679.900879 1693.279663 1701.689087 1713.407227 1723.599609 1731.721558 1734.112915 1733.271606 1730.913086 1728.380981 1724.600342 1720.177612 1717.302124 1716.674438 1717.676147 1719.573853 1720.609375 1720.991089 1720.947388 1726.041626 1731.422485 1732.856079 1731.338867 1729.323975 1727.150513 1724.981812 1723.122559 1721.416504 1719.089966 1714.258911 1709.099121 1704.859619 1701.126587 1696.556152 1694.035645 1694.134766 1695.328369 1695.933838 1695.440063 1696.168091 1698.850708 1701.241333 1704.946411 1708.310669 1708.105957 1704.74939 1700.841675 1696.631104 1695.032715 1698.077637 1703.930542 1705.928711 1704.362793 1702.683228 1703.078979 1706.613159 1709.184692 1710.570923 1710.709595 1708.761353 1700.545532 1687.582397 1680.062744 1677.411865 1670.359009 1664.324341 1657.700562 1649.683472 1639.752563 1626.999268 1619.841797 1629.002197 1636.914551 1643.624756 1646.425659 1635.939453 1621.463501 1614.577881 1624.026123 1639.172241 1647.828247 1657.256104 1668.500854 1674.374512 1681.618042 1687.685913 1685.209229 1680.118286 1670.839355 1659.131104 1645.928833 1641.456177 1639.380737 1631.483276 1623.138428 1609.46167 1609.860474 1625.07251 1640.78894 1647.866577 1648.554077 1645.52478 1640.682495 1635.836548 1632.161621 1634.236816 1633.402588 1625.774658 1612.546143 1596.920776 1584.802979 1577.788574 1589.747192 1599.89209 1610.038574 1614.52124 1614.392822 1601.982544 1587.698242 1578.661133 1567.722778 1560.967041 1575.718994 1581.931641 1581.190796 1569.428467 1572.911011 1583.151123 1592.684082 1606.063477 1622.538696 1619.182251 1611.12085 1597.660156 1586.5354 1573.514038 1564.569458 1550.83606 1554.454346 1555.171143 1553.407715 1549.084229 1539.553101 1536.365234 1543.429932 1545.808472 1546.452515 1545.436401 1542.098511 1545.379761 1545.69104 1545.300781 1544.213257 1542.212646 1538.191162 1531.043335 1525.520508 1524.827393 1522.807373 1516.092773 1510.472046 1509.37561 1508.125977 1506.106689 1503.718018 1501.735962 1499.25708 1495.89917 1493.268921 1491.458008 1490.180908 1488.358887 1489.244629 1495.407593 1500.801636 1511.260376 1519.839355 1525.318848 1532.148804 1534.576538 1537.486938 1542.257935 1540.039429 1535.931763 1534.201172 1533.246094 1533.046997 1533.30603 1534.046997 1535.235718 1537.24231 1539.177856 1541.023682 1543.127075 1545.155762 1546.478516 1547.597778 1551.235596 1559.639526 1565.381226 1571.415405 1575.681885 1582.054443 1589.680908 1598.004028 1606.258301 1613.581177 1619.65918 1628.803589 1636.049194 1636.530518 1636.034302 1635.018188 1635.006104 1634.596191 1636.070312 1636.141602 1635.44873 1632.626343 1624.643555 1618.915894 1613.028931 1607.499512 1603.685791 1605.045532 1610.553589 1618.585327 1617.695923 1611.969116 1602.561157 1593.810181 1585.809937 1582.092285 1575.643311 1573.235718 1592.71875 1606.240601 1613.697266 1607.186523 1595.914307 1586.207031 1581.813965 1579.632324 1578.731445 1574.595703 1571.458862 1565.525269 1559.812256 1554.618286 1552.335938 1551.017822 1547.538574 1549.369995 1548.803589 1543.748535 1538.316895 1535.219116 1532.661499 1529.994751 1527.893677 1526.064331 1523.80603 1523.167969 1522.667603 1522.508423 1523.465698 1532.052124 1540.456055 1548.529541 1559.743164 1572.418701 1588.55603 1600.380005 1619.433105 1640.202881 1655.354614 1669.270752 1682.704712 1691.672607 1699.177734 1706.246826 1714.692627 1720.895752 1723.50647 1724.890137 1725.657471 1724.962036 1723.463989 1721.498657 1719.057129 1714.369263 1709.284424 1705.175293 1701.787598 1698.560181 1696.116333 1692.078857 1687.291382 1685.576782 1684.402832 1678.631226 1673.29126 1671.105957 1665.678711 1660.751099 1651.927979 1641.994507 1635.516479 1626.23645 1615.448242 1596.6875 1585.344849 1596.560059 1603.511719 1608.48291 1614.201416 1620.321533 1618.493774 1607.017334 1591.266357 1580.882935 1587.10498 1604.534424 1615.384766 1623.54541 1634.793457 1631.491455 1620.247803 1609.517822 1599.440674 1607.414185 1609.34082 1606.217529 1599.838501 1593.745361 1589.059326 1585.733765 1583.396606 1580.119629 1574.875366 1567.565063 1563.11499 1560.352051 1559.536621 1557.737427 1554.121704 1549.42395 1549.111328 1548.793335 1547.049927 1543.2854 1534.200806 1522.983521 1526.414673 1527.678589 1527.462036 1522.296021 1526.749146 1530.29248 1530.747803 1528.490845 1527.885986 1524.40686 1521.47522 1530.753662 1547.93689 1557.094604 1560.732056 1565.165039 1568.168091 1571.370239 1577.257202 1582.842041 1586.469971 1591.199829 1592.717285 1591.107544 1586.943604 1576.621948 1566.875366 1556.945435 1549.531738 1540.580322 1546.458252 1552.897339 1553.843018 1551.745239 1549.020264 1545.126099 1540.79541 1534.759521 1528.177734 1520.265991 1511.267334 1502.888062 1498.699463 1496.587646 1494.100708 1491.432251 1489.21167 1487.371216 1483.890747 1480.63855 1477.939453 1476.849121 1477.756714 1480.210938 1483.853882 1488.739136 1494.30481 1498.428711 1501.322876 1503.229004 1502.716797 1501.241699 1496.587769 1489.056641 1487.989868 1482.785278 1475.475586 1467.187744 1462.396362 1471.573975 1480.775757 1487.938965 1489.099487 1475.290527 1454.950195 1434.406982 1415.526123 1405.094238 1396.528198 1392.218262 1378.206299 1365.786987 1364.07666 1357.175293 1346.740479 1341.831909 1334.522705 1327.248657 1327.419556 1337.588013 1359.511353 1381.650757 1403.23645 1412.684448 1428.601685 1448.509521 1471.608276 1502.766357 1521.935303 1540.520752 1551.600586 1551.117676 1547.606079 1543.912964 1547.143677 1555.224854 1557.248169 1557.955566 1559.763428 1564.39563 1565.317993 1561.889526 1559.025391 1559.432739 1560.189941 1553.469727 1537.682739 1525.244019 1511.828003 1499.006836 1483.837524 1473.259399 1477.866455 1486.065063 1497.425903 1508.337036 1519.589478 1528.745605 1536.501099 1536.445679 1532.141968 1521.116699 1509.568481 1498.354492 1484.531982 1474.425049 1463.243896 1477.308105 1488.596069 1497.307129 1505.882324 1507.881714 1504.257324 1500.603516 1493.941528 1487.702881 1484.519897 1483.242676 1479.849487 1476.388916 1464.800415 1459.783447 1454.065796 1452.889648 1451.356445 1443.107788 1439.281372 1439.219849 1442.934448 1444.030273 1442.977661 1440.858032 1436.24353 1434.862793 1437.195801 1438.627319 1438.856323 1437.609497 1434.130371 1430.352539 1426.887085 1421.321411 1415.511475 1408.639771 1407.937012 1412.298462 1417.255127 1422.774048 1427.683716 1429.762695 1429.772461 1427.810059 1423.976196 1418.714355 1419.288208 1419.270386 1417.550049 1415.555664 1412.984619 1410.396362 1407.137085 1403.835693 1400.789917 1396.539551 1392.987915 1395.678955 1396.422729 1395.438232 1391.719116 1391.882812 1402.22937 1413.62915 1414.567749 1412.240234 1409.967651 1407.836304 1405.485474 1404.016113 1403.089478 1399.817627 1397.814575 1394.410034 1392.779541 1399.396851 1405.211304 1415.068115 1417.611694 1420.491699 1423.401489 1425.945435 1428.07019 1430.226929 1434.06958 1438.684204 1440.599365 1441.172607 1439.758423 1437.212158 1434.572388 1432.492798 1431.145142 1429.607056 1427.420166 1427.502075 1426.278931 1421.779785 1417.339722 1409.283325 1400.774414 1393.830078 1387.722656 1382.428223 1376.400391 1369.836304 1365.592163 1363.366333 1361.50647 1361.170288 1365.418823 1369.646729 1370.383301 1368.471436 1366.212891 1363.222778 1360.276245 1357.150391 1352.285767 1343.078247 +1686.10083 1699.026855 1708.73877 1721.402954 1725.277954 1732.38501 1734.893066 1735.172852 1734.777222 1733.850098 1732.646851 1727.040161 1719.160522 1718.773926 1720.779297 1722.339966 1723.409302 1724.757935 1726.231812 1728.865723 1732.411987 1733.28418 1732.689087 1730.397339 1728.003296 1724.828979 1721.769775 1719.172974 1715.429199 1710.985962 1706.855713 1703.487183 1699.822632 1695.685913 1694.222046 1695.621948 1698.519409 1699.855957 1700.380127 1700.893311 1702.225098 1703.82251 1706.979614 1708.829102 1708.163208 1705.055664 1701.784058 1698.923706 1698.014771 1701.100342 1707.859253 1709.206665 1708.514526 1706.63562 1705.236694 1707.655762 1710.702026 1711.32251 1710.922974 1707.214966 1697.904053 1685.175293 1669.213989 1665.585205 1662.337646 1657.899292 1650.278198 1641.076416 1631.284546 1624.084106 1632.101318 1640.931519 1648.563232 1656.927002 1653.475952 1641.615234 1629.77832 1619.576294 1617.392822 1622.040527 1634.71106 1642.135376 1646.23877 1656.266724 1668.853638 1683.555176 1687.167725 1684.014038 1673.070068 1665.039917 1661.65979 1656.152466 1650.98999 1640.052612 1628.472412 1618.474243 1611.442871 1615.678101 1628.093506 1636.038818 1638.772583 1638.497192 1637.399414 1636.413574 1636.328613 1637.333618 1635.800537 1627.373779 1614.011597 1594.793091 1581.327637 1593.571411 1604.319702 1613.131226 1623.339355 1626.114624 1618.731323 1604.42749 1599.157349 1589.417725 1576.96936 1570.665894 1584.549805 1592.582397 1590.625244 1578.655884 1580.845337 1589.499023 1596.853027 1612.215942 1625.333252 1635.57666 1625.222534 1613.157959 1598.851074 1585.100952 1572.716919 1567.314819 1571.236816 1571.214233 1566.822388 1560.584473 1550.257935 1549.558594 1557.978149 1562.065796 1561.724609 1558.300537 1554.996826 1555.786499 1555.092529 1553.379761 1551.437256 1550.238037 1546.372925 1541.575195 1538.946045 1536.3125 1531.259521 1524.830933 1517.476562 1516.621338 1513.857422 1510.796753 1507.311401 1504.185547 1501.331421 1497.932129 1495.377075 1493.615356 1491.944092 1490.074097 1488.634644 1492.707275 1497.11853 1501.551392 1514.559448 1522.399292 1533.708618 1542.407104 1548.093628 1547.376587 1540.350464 1535.824219 1533.377075 1532.358521 1532.114014 1532.486328 1533.50647 1534.969727 1536.973022 1539.061035 1541.033691 1543.246948 1545.544189 1547.65332 1549.182861 1550.489746 1556.95752 1559.748169 1563.052124 1569.532837 1577.023071 1587.587036 1595.248413 1603.227173 1611.327393 1617.455688 1625.881714 1635.708984 1637.064697 1637.085327 1636.589111 1636.094116 1635.474731 1634.572754 1635.524658 1635.886108 1632.477051 1623.599365 1618.160278 1612.070801 1606.041504 1598.063477 1598.386475 1603.484741 1610.881714 1613.124878 1611.533813 1600.629517 1593.751343 1588.398193 1579.518677 1571.958862 1570.847046 1587.812622 1601.031738 1613.187012 1604.641724 1590.591431 1581.56311 1574.03418 1578.179565 1583.817627 1581.26123 1575.715454 1568.818115 1558.901855 1551.326416 1547.371338 1546.353638 1543.925537 1541.652954 1538.851196 1536.789551 1534.380493 1531.182007 1528.522461 1528.375122 1528.376831 1526.816528 1529.255493 1530.839722 1537.20752 1539.525513 1544.878174 1550.304199 1554.751587 1559.251953 1568.124146 1573.016479 1585.268799 1599.519165 1610.037354 1625.316284 1651.667236 1665.875244 1674.484131 1686.060059 1696.37793 1705.817749 1712.855957 1718.271973 1721.500732 1723.059692 1723.723022 1722.622681 1720.729248 1717.130371 1713.12854 1708.989136 1705.458618 1701.925659 1698.657104 1695.831787 1692.423584 1687.751709 1683.08313 1683.010986 1683.088135 1679.130737 1673.880127 1669.918701 1664.82019 1659.199219 1650.88269 1642.337036 1635.578003 1623.680908 1610.338135 1596.917969 1594.432617 1603.508179 1610.579712 1619.558472 1632.435181 1639.334106 1632.802368 1620.770996 1599.118652 1584.458984 1588.776245 1605.461304 1616.49707 1629.291748 1637.316895 1633.967651 1623.554932 1609.75 1614.67627 1621.534302 1621.328613 1614.420044 1610.843018 1607.383667 1600.712524 1599.531494 1593.353638 1587.91748 1583.336914 1574.348999 1568.999512 1565.412109 1563.11438 1559.906128 1555.81897 1551.994751 1550.725586 1548.77356 1543.55603 1536.368652 1534.740601 1535.161255 1535.471436 1533.34021 1532.448853 1532.415039 1532.831299 1535.618652 1536.327881 1533.637939 1534.716309 1529.055176 1523.166626 1536.219604 1552.233643 1561.146729 1566.90271 1572.373413 1579.039429 1585.286377 1590.362915 1597.877441 1604.04834 1605.758423 1604.208496 1598.133179 1592.99707 1585.674072 1572.800781 1565.446289 1557.536255 1554.394409 1561.460815 1564.681396 1564.164062 1562.479004 1559.210938 1556.181396 1552.156616 1544.619141 1535.362793 1527.42749 1522.694336 1516.805542 1507.019897 1499.798096 1497.232422 1494.066284 1491.174805 1487.634033 1484.021973 1479.962036 1475.839355 1474.489136 1474.221924 1476.143433 1479.405273 1483.24231 1487.555542 1490.918091 1497.568359 1502.188965 1502.391968 1500.93042 1496.103516 1489.337769 1480.416016 1473.312744 1470.633301 1465.872925 1459.372437 1467.315552 1477.553467 1482.647705 1479.562744 1466.275391 1453.070435 1437.195557 1417.563354 1403.79248 1387.304565 1379.442505 1379.389404 1370.353027 1359.104614 1349.180176 1339.613525 1341.249268 1334.435669 1327.646606 1334.343872 1357.107056 1363.807861 1379.847046 1400.139282 1413.168823 1430.33606 1447.309082 1467.654541 1498.421143 1520.713867 1539.172119 1542.072876 1538.984497 1533.337524 1529.835693 1536.364502 1544.712769 1548.362549 1549.204712 1554.38916 1561.07605 1558.805542 1549.588379 1548.033691 1550.765503 1553.088867 1551.020264 1538.719727 1527.426025 1514.010498 1502.379272 1486.087402 1473.155273 1474.561646 1482.399536 1493.278564 1503.233521 1511.990479 1521.699829 1528.922119 1529.093018 1525.047729 1518.232666 1508.69812 1496.7854 1483.644165 1473.012573 1462.978516 1465.748779 1476.989868 1487.733887 1499.871216 1501.595337 1498.434937 1496.005859 1490.815063 1485.651123 1477.974121 1475.619995 1474.864502 1465.970459 1463.134521 1463.705811 1457.208252 1452.662476 1450.713745 1442.558594 1439.371216 1437.539551 1437.875732 1439.37915 1439.377563 1437.034912 1432.08667 1427.015015 1430.265503 1432.799438 1433.499268 1432.054077 1428.249023 1425.526245 1422.560547 1417.766846 1411.801025 1402.800903 1405.26416 1410.917114 1415.990479 1421.886108 1427.306763 1428.735229 1428.335571 1425.275391 1419.352539 1412.608765 1412.109253 1414.343872 1413.614624 1411.529419 1410.083984 1408.604736 1406.75415 1404.848022 1402.547485 1395.950317 1389.687622 1390.834961 1392.404785 1392.202881 1389.56958 1389.303589 1398.467651 1410.750854 1416.80127 1415.876587 1414.294434 1409.907593 1404.966064 1403.034302 1398.525757 1393.18335 1388.238647 1386.757935 1388.46936 1398.440552 1408.994629 1416.281372 1419.044434 1422.0625 1425.664062 1428.437378 1429.791382 1431.355103 1434.995972 1440.095581 1442.385986 1441.410034 1439.167725 1435.935669 1433.355103 1432.455688 1431.913452 1430.651733 1430.102783 1429.49707 1427.746826 1423.134766 1418.233765 1411.069092 1401.899658 1395.578735 1389.541504 1384.231201 1378.594849 1372.691284 1367.692627 1364.751099 1360.67627 1355.481934 1357.687012 1360.008911 1360.759888 1359.754395 1358.139648 1356.570801 1355.374634 1351.224121 1344.945923 1340.397095 +1688.478394 1699.06543 1707.628418 1713.257812 1720.056519 1727.357544 1734.133545 1736.149536 1736.483032 1736.395508 1735.44397 1733.48645 1725.457031 1722.602173 1723.800049 1725.171021 1726.473999 1728.324829 1730.022095 1731.181885 1732.966309 1733.66394 1733.105713 1731.573486 1728.126831 1723.170532 1718.968506 1716.380249 1711.512695 1707.175171 1705.960205 1704.051514 1700.637573 1697.063965 1694.734375 1698.070923 1702.427002 1705.36731 1705.956177 1705.220703 1705.927246 1705.806885 1708.091675 1709.591064 1707.991333 1704.997559 1703.486206 1702.700439 1702.593994 1703.781616 1706.382324 1709.417603 1710.249023 1709.125977 1706.872192 1708.918823 1712.284668 1712.614258 1710.824951 1702.74646 1692.765381 1678.994629 1665.393799 1656.663086 1653.997559 1648.036865 1637.555176 1630.452393 1630.637695 1639.89624 1646.084229 1653.751221 1663.730347 1667.020142 1658.967896 1650.203613 1638.883545 1629.871216 1616.62854 1618.905884 1624.23938 1636.08606 1648.743408 1660.942871 1676.77063 1685.599243 1691.026489 1690.638184 1682.907715 1676.766357 1672.358032 1666.522461 1659.57373 1649.362183 1637.51001 1629.390259 1623.002319 1613.570557 1617.572754 1620.913452 1627.938721 1632.904297 1636.254517 1639.325195 1641.043457 1641.520996 1638.950928 1632.978638 1617.419922 1594.05603 1588.529541 1611.540405 1622.107422 1627.485352 1637.239624 1635.378052 1624.250244 1611.701538 1605.772095 1595.655518 1578.772827 1578.430176 1597.808838 1602.201538 1600.661133 1588.057861 1586.83728 1595.083862 1597.303589 1615.069336 1629.340332 1637.404907 1636.654907 1621.852295 1606.755615 1592.84436 1584.356812 1584.564087 1588.782349 1586.894165 1583.027344 1577.02124 1567.223389 1566.148682 1574.876587 1578.285522 1579.042236 1576.481323 1572.205566 1567.939087 1566.739136 1564.966797 1562.759521 1560.344727 1556.262695 1548.915894 1545.288818 1542.459229 1538.623169 1534.375854 1528.939941 1526.891602 1521.843506 1514.743286 1510.343628 1505.524048 1502.217651 1499.248779 1497.148804 1495.885498 1494.188843 1491.466187 1489.524414 1491.412354 1495.01355 1498.084229 1504.171753 1521.994507 1533.809448 1545.806152 1552.380859 1550.081909 1540.461182 1534.570557 1532.299438 1531.348511 1531.266846 1531.755981 1532.85376 1534.426392 1536.103027 1537.978516 1540.213257 1543.888672 1547.49707 1550.603149 1554.24646 1557.335205 1559.631836 1563.997192 1567.480225 1572.062622 1571.900513 1578.780029 1589.025757 1598.182373 1607.80603 1615.626831 1624.666504 1631.368652 1636.026489 1637.256592 1636.972656 1634.594971 1631.694702 1628.579468 1630.622192 1631.900024 1628.349976 1623.824707 1618.639771 1613.726196 1607.808838 1599.516357 1596.568115 1597.456543 1604.683594 1609.208496 1607.679443 1597.439697 1592.435791 1588.021729 1581.342773 1574.675659 1570.140625 1578.799438 1592.776978 1599.932251 1594.671265 1584.670654 1577.300293 1571.192139 1575.71875 1585.094604 1584.823608 1577.102783 1569.965088 1558.365479 1550.212036 1545.828125 1542.786743 1540.064697 1537.500122 1535.255005 1534.186401 1532.103271 1530.024414 1530.19458 1530.034058 1531.434082 1535.678101 1539.777832 1542.957275 1546.914429 1552.481934 1557.327637 1564.823608 1575.309814 1580.606812 1587.547119 1592.320435 1590.980835 1607.526123 1624.837402 1630.599487 1642.022705 1659.122681 1670.452515 1683.118286 1693.837036 1704.123169 1710.48999 1715.014771 1718.502441 1720.184692 1720.928467 1719.121704 1713.682739 1708.186523 1705.898926 1704.169067 1701.243774 1697.928711 1694.589355 1690.990845 1687.062134 1682.969238 1681.212158 1680.526489 1679.921021 1677.098633 1672.797729 1668.539185 1662.689941 1653.296753 1644.106689 1636.18335 1626.2229 1616.165894 1606.255615 1602.198364 1598.62854 1610.860596 1618.933472 1634.593994 1645.002319 1655.263794 1639.34436 1622.974609 1604.891357 1595.421509 1597.746826 1608.052246 1617.735352 1634.244263 1638.010376 1635.217651 1630.770508 1632.2771 1630.677856 1631.127197 1627.610596 1620.435059 1613.999878 1607.709351 1599.557007 1596.091553 1592.501709 1589.410522 1588.943481 1584.724609 1574.421875 1570.789307 1565.868774 1561.650391 1561.00061 1559.926025 1555.879639 1549.654297 1547.158203 1543.202148 1539.748413 1538.948364 1538.660767 1537.060425 1537.566528 1540.826294 1543.352173 1547.831177 1544.859985 1541.756592 1547.546631 1544.247925 1536.725952 1537.649292 1555.745605 1565.304443 1572.251709 1581.916748 1590.830444 1597.673096 1605.840454 1612.677246 1615.053833 1616.397217 1615.294067 1610.367798 1599.861328 1592.116699 1582.613281 1571.212036 1569.58313 1574.217041 1576.606689 1575.762207 1574.924927 1572.996582 1570.465942 1566.025635 1559.527222 1551.474487 1544.315308 1537.179321 1531.451294 1524.655151 1515.553589 1506.604126 1500.184937 1496.212036 1491.941772 1487.503296 1484.446411 1480.780396 1477.291016 1474.388916 1473.603394 1473.566772 1474.655762 1475.045898 1480.790161 1486.174194 1494.058594 1500.586914 1500.045776 1497.529541 1494.707886 1491.745728 1487.163086 1476.845215 1466.143066 1458.109375 1452.353149 1462.615723 1473.400146 1476.399536 1460.532471 1445.850952 1441.360229 1439.018066 1423.104858 1408.424194 1397.650635 1377.186523 1359.795776 1347.059326 1345.909302 1338.411987 1332.693481 1331.346313 1329.755127 1327.592529 1340.888672 1365.577393 1381.338013 1387.72229 1396.7146 1410.192017 1426.465942 1446.453735 1475.289307 1500.289307 1518.635132 1527.420898 1525.745361 1521.067993 1517.72644 1516.513428 1524.774658 1533.967285 1535.93335 1537.298218 1547.505249 1552.070923 1547.892212 1539.824585 1534.855103 1539.864014 1545.08728 1545.893555 1537.908447 1527.605957 1515.063477 1503.320557 1490.832886 1471.354492 1467.126831 1475.999634 1484.292603 1494.65564 1504.062134 1513.279785 1519.957397 1518.937256 1517.219482 1513.500122 1505.27002 1493.679932 1480.8396 1470.187988 1459.608276 1455.218994 1469.622681 1482.439575 1491.66333 1493.790283 1489.71582 1488.849243 1489.946777 1489.030396 1479.139771 1474.160278 1473.530884 1473.805542 1472.251709 1472.005737 1469.266846 1464.401978 1459.152588 1454.860596 1448.114136 1439.674805 1433.340332 1428.716919 1430.32605 1430.779053 1428.395142 1422.202026 1424.041016 1428.571655 1428.568604 1426.98877 1423.30603 1420.434082 1418.100098 1414.295898 1407.920654 1401.454834 1404.358887 1409.450928 1414.282837 1420.040283 1424.3396 1425.675903 1425.174561 1421.93811 1418.045776 1410.572266 1401.106689 1403.304932 1406.410767 1403.920654 1405.619873 1405.984253 1405.62561 1404.793335 1403.889893 1399.581421 1391.476196 1388.76416 1388.93042 1388.0802 1386.977295 1386.710938 1391.862793 1401.776245 1415.296021 1417.240112 1415.950439 1407.862549 1402.08606 1397.277466 1392.052368 1387.803467 1382.641357 1377.949707 1390.174927 1398.227417 1410.022583 1417.174927 1419.304443 1422.052002 1425.643799 1428.846558 1429.50061 1429.283081 1427.676758 1428.056152 1433.815186 1436.276001 1433.99231 1431.242188 1428.470703 1426.612549 1425.071777 1428.159668 1429.373901 1426.359619 1421.824341 1421.363647 1417.697266 1412.026489 1402.931396 1397.287842 1391.773438 1386.491455 1380.857666 1375.419067 1370.152954 1365.724854 1360.499023 1354.718018 1352.603149 1352.93457 1353.650513 1353.014038 1350.824951 1346.31604 1339.769775 1338.634521 1338.917969 1338.72522 +1681.181885 1687.712769 1691.919312 1696.982056 1707.866211 1718.129761 1730.975098 1736.639893 1737.308838 1736.584229 1736.165771 1735.02002 1731.816528 1728.130005 1727.547241 1728.608521 1729.391235 1731.084839 1732.866821 1733.334229 1734.054321 1733.858643 1733.424683 1732.254639 1728.4729 1723.028442 1718.693115 1715.339355 1709.373901 1707.462769 1707.776733 1706.875 1702.975952 1699.367432 1698.209229 1701.706665 1706.924805 1709.639526 1710.777832 1709.355713 1709.786255 1709.904175 1711.095337 1710.423218 1707.693115 1705.440186 1705.236694 1705.76001 1705.793457 1706.446289 1706.575073 1708.75 1711.764893 1711.89917 1711.300659 1713.165527 1715.829468 1714.38562 1708.143799 1695.390503 1683.611572 1670.948853 1660.66394 1652.452393 1646.837158 1636.567261 1632.568604 1641.793701 1651.277954 1660.887451 1663.990234 1668.434448 1675.836914 1674.789307 1666.426147 1656.980957 1648.994629 1634.82251 1622.731934 1618.373657 1625.360107 1639.083618 1652.720093 1667.308716 1682.976196 1688.751221 1694.43689 1697.18457 1696.380981 1687.532959 1678.900513 1672.477051 1665.295166 1657.82605 1650.134766 1644.143677 1635.032593 1624.841431 1614.933594 1621.421997 1632.36853 1637.326294 1640.444336 1642.891357 1645.879761 1647.010986 1643.257202 1634.166016 1615.689331 1590.307373 1605.284424 1619.628052 1635.107788 1644.143066 1648.579834 1641.851807 1632.046387 1620.795288 1611.63269 1596.802368 1586.001709 1589.631592 1605.901733 1609.458008 1606.914062 1597.952881 1594.440186 1603.753296 1609.581665 1615.950317 1630.38501 1638.923828 1640.87085 1635.769409 1614.864258 1603.488281 1603.397583 1606.945923 1606.300781 1601.649048 1596.892212 1590.680298 1583.740723 1585.566895 1589.299561 1591.746216 1591.95752 1591.107422 1588.417358 1580.27124 1577.360352 1575.123657 1573.785522 1571.932861 1566.792236 1561.082031 1551.728882 1547.742188 1544.253174 1541.318115 1538.262451 1532.653564 1525.478638 1516.672729 1511.233398 1506.650146 1503.572754 1501.452759 1500.580444 1499.35022 1497.491577 1493.625977 1490.427612 1491.438477 1493.721924 1496.232056 1498.358032 1503.674438 1524.652344 1535.404663 1549.270386 1545.305908 1536.942017 1532.802979 1530.975708 1530.273804 1530.324219 1530.970703 1532.159546 1533.547607 1534.924927 1536.155273 1539.260254 1543.683594 1548.193481 1554.081909 1560.973389 1565.540405 1572.900024 1576.759399 1578.559448 1578.70166 1578.629639 1579.089966 1583.24939 1588.050415 1598.632202 1610.122681 1620.089722 1626.519531 1634.352173 1637.142578 1636.853149 1631.872437 1622.309814 1621.241577 1620.233643 1621.093262 1621.946777 1621.025513 1616.755249 1613.012329 1608.687866 1602.281494 1597.72876 1596.366089 1600.36731 1604.279175 1603.36853 1598.339233 1592.61499 1586.174561 1578.749023 1572.327393 1562.927979 1567.860596 1577.707275 1585.645996 1583.173828 1579.394897 1575.261475 1568.886719 1572.761108 1577.698975 1577.321533 1573.483276 1564.970459 1555.313354 1548.336792 1543.529419 1540.001709 1537.090332 1535.165894 1534.268066 1534.045044 1532.552856 1531.328003 1531.492676 1532.042725 1535.914062 1541.017456 1546.633789 1550.263184 1556.377808 1562.970093 1571.612061 1578.481812 1588.414062 1593.764648 1594.735596 1604.634766 1610.130005 1617.362793 1635.579956 1648.555664 1655.794678 1666.170776 1674.036743 1681.744751 1690.869385 1699.734497 1707.23291 1710.831177 1713.344482 1714.719727 1713.672363 1708.932495 1705.076294 1702.58667 1700.991699 1699.674683 1697.402222 1693.758057 1689.417236 1685.453369 1682.212036 1680.81604 1679.58667 1678.584717 1677.576782 1675.687378 1673.396484 1670.593018 1663.481812 1653.199097 1638.735474 1627.920166 1616.314331 1610.833496 1605.720703 1604.081909 1608.476807 1617.103271 1629.253052 1640.601929 1659.804199 1654.870361 1636.546265 1620.580688 1605.487061 1604.208252 1606.429688 1613.398438 1620.201416 1636.858765 1639.851807 1641.365234 1641.900146 1643.21875 1643.250366 1640.14856 1633.741699 1619.552979 1607.594604 1596.988525 1587.928345 1584.124268 1581.184326 1583.698364 1584.492432 1583.266724 1577.143921 1573.861206 1569.268677 1565.08606 1563.53772 1563.380249 1561.652832 1555.563965 1550.704102 1544.530396 1539.48291 1538.252686 1537.745117 1537.475464 1541.306152 1547.619995 1558.952881 1561.290527 1556.542847 1557.349976 1559.742188 1558.479858 1553.489014 1544.708984 1556.414185 1568.218384 1577.240845 1586.657349 1597.131714 1607.525269 1619.818726 1620.208374 1617.918579 1622.796997 1624.680054 1622.848145 1613.417969 1596.528809 1590.416748 1585.293335 1584.060303 1586.280884 1588.688965 1588.455078 1587.143188 1585.19519 1581.791992 1578.214478 1572.566528 1561.401733 1556.053467 1549.545166 1539.749268 1531.198975 1521.741943 1512.902588 1503.786133 1497.805664 1493.827515 1489.347534 1486.436523 1483.143799 1479.055542 1475.2677 1474.086182 1472.99707 1472.378418 1472.74646 1477.825073 1484.419434 1489.977417 1493.869751 1493.449707 1489.61731 1490.141235 1490.844604 1486.916016 1477.803589 1467.133179 1452.10376 1453.018555 1460.374512 1468.179199 1468.240723 1450.762695 1433.283569 1419.936279 1419.243408 1415.571411 1406.797485 1393.607056 1375.197021 1358.653809 1337.959473 1328.088135 1329.793213 1329.684814 1328.87207 1328.779175 1329.623657 1344.797119 1367.984619 1384.11499 1404.264771 1413.348755 1418.680908 1435.212036 1456.667603 1481.360718 1503.176147 1512.814941 1511.286499 1508.409302 1505.610718 1502.446411 1506.741455 1514.906372 1523.637695 1526.047119 1529.527466 1539.44458 1543.727905 1538.923584 1531.302368 1525.861816 1531.234863 1538.017822 1539.948975 1533.993286 1525.594238 1514.441772 1503.465942 1492.819946 1472.317627 1460.933228 1467.323242 1474.753784 1486.455322 1498.178223 1505.431152 1507.294312 1506.561279 1507.085449 1505.268066 1499.625366 1488.84082 1474.107056 1463.609253 1454.386597 1450.199951 1460.931763 1476.37085 1484.551758 1487.382324 1480.085693 1477.202515 1482.639526 1480.866943 1475.279785 1470.704956 1475.039185 1477.368774 1478.019287 1478.029785 1474.251099 1468.238892 1464.521118 1459.029907 1454.687134 1448.071045 1440.948242 1429.475098 1425.584839 1423.345581 1421.012207 1415.605225 1413.131958 1417.291748 1419.755615 1420.152344 1416.879028 1414.302246 1413.098633 1409.736938 1404.477295 1401.092407 1402.18103 1408.677612 1415.236938 1418.074097 1419.973389 1419.671753 1418.646973 1416.988647 1413.704834 1407.695557 1401.296753 1398.43335 1403.188232 1400.356079 1401.969604 1403.891968 1404.064819 1404.179443 1403.504761 1400.273315 1393.253906 1388.493408 1385.272583 1382.966064 1382.135742 1381.703735 1386.879272 1393.964966 1403.461914 1409.430176 1409.317749 1403.710327 1397.721069 1389.780151 1385.746582 1382.893066 1379.370117 1377.512695 1387.085205 1397.400879 1409.727417 1416.644165 1417.144043 1419.036011 1423.094482 1426.71936 1426.192749 1423.652222 1419.857666 1417.984131 1422.066406 1426.428589 1426.822266 1423.246582 1418.401245 1413.687378 1407.62793 1413.571289 1414.0625 1407.539429 1401.493896 1414.290649 1417.808472 1412.249756 1404.365479 1398.872681 1394.252319 1389.308228 1382.658081 1376.868042 1371.538696 1367.258667 1362.802856 1358.498779 1355.946289 1353.549805 1351.827637 1350.081787 1345.867676 1340.912476 1338.92627 1338.467529 1338.402832 1340.041626 +1671.738892 1673.919556 1673.79248 1683.793823 1696.687988 1711.720581 1727.717407 1735.023804 1737.058716 1736.881104 1736.207642 1734.759155 1732.589844 1730.129517 1731.027832 1732.210327 1732.335815 1732.93457 1734.10376 1734.484253 1734.471191 1734.267334 1733.171265 1732.046753 1728.579956 1723.678833 1719.987549 1716.682007 1713.307007 1711.37915 1710.416138 1708.699829 1704.786621 1702.556396 1702.178711 1705.087524 1709.57251 1712.826172 1715.217285 1716.530396 1717.275391 1716.469482 1714.531494 1711.438965 1707.390015 1706.34021 1706.835205 1708.289673 1709.786987 1710.279541 1709.179932 1710.282837 1714.093872 1715.65564 1716.519531 1718.696167 1719.69812 1717.57312 1704.780518 1688.668335 1675.091675 1664.131958 1653.7229 1645.331909 1637.687622 1640.579834 1650.325684 1656.699951 1664.542969 1673.832153 1678.369507 1681.787842 1685.435181 1678.982666 1669.22937 1658.235352 1649.517822 1635.362793 1625.257568 1620.739868 1622.231934 1630.544678 1644.985962 1665.275146 1683.539185 1688.988037 1694.147339 1697.645264 1698.349731 1693.067261 1682.071777 1674.944702 1667.750732 1659.08313 1653.778931 1649.340332 1642.266724 1629.11377 1618.713135 1624.30127 1638.122437 1644.30835 1647.250977 1649.064575 1652.37085 1651.760254 1646.561035 1635.067627 1617.339478 1593.273315 1609.729736 1626.389648 1643.383911 1655.182739 1656.83667 1648.563721 1638.349731 1623.248413 1611.932251 1599.885986 1591.555176 1606.090576 1614.318481 1616.520874 1612.764771 1601.515991 1599.113525 1608.328735 1618.35083 1624.182739 1632.85498 1640.681152 1645.543823 1644.198975 1626.915039 1623.434082 1623.493164 1622.894043 1619.329346 1615.16687 1611.546875 1605.356567 1598.291382 1599.867188 1605.632935 1607.907471 1608.369385 1603.477417 1600.326782 1589.434937 1586.728882 1582.394531 1578.368774 1576.480835 1570.849609 1564.655396 1558.570679 1552.191772 1548.127563 1543.859497 1540.386353 1533.740112 1523.48584 1515.251953 1511.025024 1508.376709 1507.768921 1506.910522 1504.924194 1502.973633 1501.011963 1496.428223 1491.446777 1491.94751 1493.383545 1495.01062 1496.608032 1498.825684 1509.017456 1524.949585 1533.808838 1535.80957 1533.737915 1530.770874 1529.502319 1529.029175 1529.299683 1530.040527 1531.377563 1532.898071 1534.412842 1536.051025 1539.043457 1543.768677 1548.589233 1555.572876 1563.334106 1569.505737 1576.218018 1582.187622 1584.817017 1586.521118 1588.259888 1589.117676 1588.706177 1591.367432 1598.090332 1606.179688 1614.817627 1624.942383 1635.730957 1637.031372 1634.102539 1627.277832 1620.941284 1612.34375 1613.769409 1615.091309 1615.779541 1615.075562 1613.105591 1611.506836 1607.830078 1602.861938 1598.977173 1595.222412 1597.1698 1600.465576 1601.070435 1599.138306 1591.805176 1582.746338 1573.824585 1567.417603 1561.204712 1559.858643 1565.469482 1570.93103 1572.503052 1573.084717 1570.561646 1559.856323 1565.972534 1570.751953 1570.538696 1565.22876 1558.151733 1550.25061 1545.631104 1540.959473 1536.907349 1535.303955 1537.354248 1537.752075 1535.852905 1534.631348 1533.515015 1532.420776 1534.147339 1538.657349 1548.295044 1552.354614 1556.824097 1562.996216 1570.263306 1578.5271 1588.067139 1597.418457 1602.098755 1607.562988 1616.868408 1625.670776 1633.609863 1640.361572 1649.597412 1659.348999 1669.168335 1674.702515 1679.5448 1686.478027 1693.570679 1700.276367 1704.944336 1707.206055 1707.381104 1705.8396 1701.795898 1698.678833 1696.974365 1696.262573 1695.330811 1691.695068 1687.118042 1683.283936 1679.973511 1677.719604 1677.037354 1677.253296 1677.08728 1676.193604 1674.529175 1673.150391 1671.291138 1662.994507 1652.690186 1640.187134 1627.723511 1615.237061 1613.387451 1610.518921 1609.651489 1615.388916 1623.549316 1637.805054 1646.693115 1659.378784 1648.170898 1630.371948 1616.994995 1609.571899 1611.559448 1614.003662 1617.762695 1625.362183 1637.710449 1641.268066 1645.938599 1648.343384 1648.184937 1647.474487 1642.305786 1636.046631 1627.232788 1616.201904 1603.859375 1592.720459 1578.533691 1571.230103 1573.000366 1573.097046 1571.847778 1571.822266 1569.689941 1567.092041 1564.124878 1562.864136 1562.318115 1560.400146 1553.859131 1547.651123 1540.214233 1536.447021 1535.513672 1534.99292 1534.891235 1541.543335 1554.640381 1565.63562 1570.951904 1568.448608 1566.948486 1568.133301 1567.924561 1564.943848 1559.218506 1558.109741 1570.181519 1579.366211 1589.359497 1602.825562 1617.674927 1624.715454 1618.207153 1614.364868 1617.346802 1619.721558 1622.105225 1616.947876 1607.9646 1597.155029 1596.362183 1598.507812 1601.786133 1603.391846 1601.272217 1597.084106 1593.219727 1590.084595 1586.517334 1581.593506 1576.347656 1566.459839 1557.571533 1548.559204 1539.124878 1529.299927 1520.093506 1508.985596 1499.534912 1497.665771 1494.034302 1490.243164 1486.544067 1482.473389 1479.099121 1476.793945 1474.067261 1470.570312 1469.79834 1475.362305 1479.861938 1484.811646 1487.466309 1486.7854 1484.72168 1488.154907 1488.9823 1480.65332 1468.845093 1458.61084 1449.60376 1450.682983 1458.590576 1465.804443 1451.218506 1437.674316 1425.447388 1409.022827 1397.168457 1397.136841 1395.033325 1385.136475 1363.070312 1341.530884 1331.23877 1332.046021 1338.30481 1341.621704 1336.192627 1339.851318 1347.846313 1349.106567 1367.714722 1382.009399 1404.853149 1425.464355 1441.263916 1454.680176 1472.243652 1486.837036 1498.18103 1497.515259 1493.347168 1493.023071 1491.918213 1489.387573 1499.784424 1507.836914 1514.090576 1517.096436 1524.383789 1535.472656 1537.938843 1530.889648 1523.400757 1515.45459 1522.192749 1529.185547 1532.109253 1527.078125 1520.118408 1511.229614 1502.31311 1492.899292 1475.887939 1460.27356 1460.483887 1469.35083 1480.879761 1489.004395 1496.521362 1497.333252 1494.377686 1497.141113 1494.767334 1490.006348 1482.063354 1471.348022 1458.766113 1449.371826 1446.546021 1454.259644 1462.801758 1472.161743 1475.499146 1471.119507 1464.071411 1468.849976 1468.48584 1462.044678 1463.948975 1471.055786 1477.312744 1478.708008 1476.489136 1471.040527 1465.400635 1462.099731 1458.704224 1455.00061 1450.851929 1445.20874 1440.058228 1431.405396 1424.549805 1413.062988 1411.699707 1409.780151 1409.310791 1411.237061 1413.141235 1411.317139 1409.061646 1407.589722 1405.578003 1401.716309 1395.66626 1401.520752 1406.444824 1411.96582 1415.363525 1415.47583 1413.67688 1412.978516 1411.939819 1408.609741 1404.091309 1399.103394 1390.958008 1393.259766 1390.205566 1394.799194 1400.136719 1401.052368 1401.498047 1400.873779 1397.300415 1393.283813 1388.614502 1383.379883 1377.996582 1378.796143 1377.22876 1382.353027 1386.976318 1394.164062 1400.086182 1401.528564 1399.331909 1393.702393 1386.208008 1378.152588 1378.172363 1372.780396 1375.596802 1387.841309 1399.535522 1406.810547 1409.209839 1410.054321 1414.252563 1418.410767 1418.257446 1418.727417 1417.326172 1411.644897 1408.393066 1412.136963 1415.025024 1415.025513 1412.0354 1407.561401 1404.009888 1396.944092 1397.507568 1397.706787 1391.707031 1390.017334 1398.34668 1415.572388 1411.494995 1405.762939 1400.440308 1395.317749 1391.127808 1383.125488 1377.148438 1372.644775 1368.441162 1364.608398 1361.644653 1360.612549 1358.759033 1355.604858 1352.430908 1350.678101 1349.264404 1348.626587 1347.877441 1347.4729 1348.654663 +1660.36145 1658.559692 1669.010132 1682.394409 1695.21521 1705.546631 1719.234375 1727.088379 1732.847778 1734.144409 1733.579468 1734.52124 1733.821167 1732.682739 1732.768433 1732.96167 1733.489624 1734.321411 1734.853027 1734.971558 1734.945312 1733.380737 1730.377197 1728.731812 1726.607422 1723.961914 1720.451782 1718.905518 1719.835571 1716.369141 1711.529297 1708.463501 1705.598022 1704.000244 1704.05835 1706.706665 1710.919556 1715.762817 1719.269897 1720.525879 1720.228516 1720.280884 1716.716919 1712.283569 1707.310547 1709.172974 1711.346069 1713.842041 1715.521606 1716.101929 1715.973267 1716.965698 1717.047363 1718.609009 1718.935669 1720.465576 1720.442139 1713.500366 1701.506226 1687.369019 1672.020752 1657.335449 1646.918335 1640.204102 1649.057007 1660.042725 1666.391357 1669.262329 1677.583618 1685.682739 1691.67749 1698.798706 1687.910034 1677.450073 1667.573608 1656.656982 1644.988525 1632.046875 1631.521484 1627.175049 1620.51416 1629.696777 1641.969604 1661.634521 1679.098511 1687.468506 1693.950928 1697.964233 1699.061279 1694.373779 1683.867432 1675.384033 1667.528076 1658.769287 1652.790039 1648.625732 1641.350708 1630.168945 1619.979004 1627.527466 1645.343628 1651.482544 1657.449951 1660.479126 1659.668091 1657.248413 1651.192017 1641.223633 1624.030762 1597.600098 1609.704712 1628.966553 1646.087158 1660.460938 1661.817139 1652.095825 1638.421387 1624.020508 1619.999268 1613.480347 1600.168091 1613.732178 1624.424316 1624.186768 1616.622192 1611.19873 1608.435059 1612.513794 1622.645874 1631.535034 1637.789917 1644.747314 1648.57312 1648.940308 1648.542725 1643.75 1638.642578 1634.838379 1631.046143 1624.65332 1620.052856 1616.619995 1609.911255 1610.757935 1622.093262 1624.80835 1608.62793 1593.914673 1587.056396 1587.36731 1584.126343 1578.745239 1574.731934 1568.655884 1562.858398 1558.566406 1555.101685 1551.474243 1546.836426 1543.016846 1540.116577 1532.203125 1523.815918 1514.72522 1514.250488 1515.31958 1514.668335 1513.151489 1509.793457 1506.547363 1503.233765 1498.358887 1493.205933 1492.260742 1493.526855 1494.577393 1495.806641 1497.239014 1499.364746 1517.568726 1525.349609 1527.912109 1528.701416 1528.145142 1527.705078 1527.736938 1528.133057 1529.052734 1530.378784 1532.174927 1533.983887 1535.942993 1538.818726 1542.847778 1547.937988 1554.953247 1560.696411 1568.843018 1577.31897 1586.548584 1590.515869 1596.892212 1600.242554 1599.962158 1599.255249 1603.069824 1608.275513 1615.41272 1618.828857 1624.532715 1637.022461 1638.156738 1632.595459 1626.138672 1619.175781 1610.88147 1608.309937 1609.675171 1609.552246 1608.5271 1608.999756 1607.423096 1602.80188 1600.436768 1598.977661 1592.853638 1585.89978 1598.477783 1600.169678 1598.497437 1591.047363 1579.990112 1570.384644 1562.858643 1559.554688 1559.450684 1559.21106 1561.23938 1563.564331 1564.437866 1562.77063 1556.849243 1557.677368 1559.505981 1558.814575 1553.797363 1548.630005 1545.977539 1543.897949 1541.457642 1540.806274 1545.716919 1548.662842 1548.57373 1540.591797 1536.14624 1534.205933 1533.772217 1535.551147 1542.533813 1550.557373 1554.593994 1558.884644 1564.949707 1572.9375 1579.914062 1588.443604 1597.700439 1603.182739 1609.970703 1619.408325 1626.600952 1634.431763 1641.154907 1648.341675 1656.742554 1665.495972 1672.500488 1676.821411 1682.719971 1687.793701 1692.914795 1696.355591 1698.065552 1698.10083 1697.007935 1694.526855 1691.824219 1689.875854 1688.46106 1685.676514 1682.321777 1679.619507 1676.924316 1673.828125 1670.944336 1671.775146 1675.017944 1675.464844 1674.885132 1673.408569 1671.751831 1667.750488 1658.993042 1644.344238 1636.044922 1623.889648 1621.609741 1619.873535 1616.110229 1614.431641 1622.364868 1631.445801 1643.559082 1650.023315 1650.563965 1638.941406 1624.606201 1620.445435 1621.866943 1618.066895 1623.576172 1627.672729 1634.31189 1638.561401 1639.290894 1639.58374 1635.733643 1638.976318 1638.752563 1637.175293 1632.006104 1625.651367 1616.59375 1605.619019 1596.587402 1581.269043 1571.009766 1565.09021 1565.862671 1564.959839 1561.255859 1562.168335 1562.440063 1560.911499 1559.779663 1558.547974 1553.907593 1545.941162 1534.873169 1532.800781 1531.725464 1531.65686 1532.272461 1534.090576 1541.141602 1555.104126 1565.76062 1573.783691 1575.684326 1574.139282 1574.838013 1575.817627 1574.849609 1573.379028 1568.247437 1573.093628 1581.196411 1592.430298 1608.092529 1623.966187 1617.569214 1608.484985 1606.492065 1606.685059 1607.703491 1609.859985 1611.087646 1608.873657 1601.816895 1600.498047 1600.208252 1605.797729 1612.035522 1611.378906 1603.285522 1599.268188 1595.853027 1592.240356 1587.796875 1582.787231 1576.013184 1565.658813 1555.820801 1545.396484 1536.089966 1527.835815 1513.959106 1506.58252 1502.65332 1499.088745 1494.442383 1488.787109 1485.812378 1483.4198 1479.639404 1475.813232 1469.642334 1463.557983 1469.806519 1475.671387 1478.718628 1478.900513 1477.470093 1475.844971 1481.40686 1483.159546 1476.57959 1465.652344 1450.036377 1443.558838 1446.35022 1456.830444 1467.21875 1451.369751 1426.037109 1417.681763 1409.074707 1394.020386 1377.875122 1367.938354 1366.068237 1349.362061 1335.4729 1331.282715 1334.908325 1339.177979 1341.49939 1347.135498 1361.471802 1372.256714 1363.838989 1363.849609 1379.239624 1401.273682 1421.971924 1437.934692 1459.675415 1473.027222 1485.455566 1487.590454 1481.841797 1478.736694 1478.959961 1480.019775 1482.634644 1486.120361 1494.920166 1504.148071 1512.046021 1520.512695 1526.862183 1525.779541 1521.776123 1511.455078 1506.290161 1511.675171 1519.107178 1521.730469 1517.46521 1511.632935 1504.440796 1498.154419 1491.555908 1477.012573 1461.424683 1457.984863 1461.959229 1472.126465 1478.414185 1483.06604 1484.062622 1478.682739 1482.163574 1482.337769 1480.036255 1474.839233 1467.689087 1458.382935 1448.211426 1438.535522 1450.367188 1457.014526 1460.960449 1465.312988 1463.572876 1456.93335 1458.249512 1458.273682 1451.727905 1457.400024 1462.511597 1467.950317 1469.200684 1466.752441 1462.74292 1459.871704 1457.192383 1454.965576 1452.108887 1448.091919 1443.932495 1440.815063 1436.296021 1431.75769 1428.090698 1416.315674 1409.608765 1403.072021 1403.557861 1403.009888 1405.267944 1404.508179 1402.72522 1401.589478 1396.982422 1390.320557 1393.569824 1402.373779 1406.565308 1410.148804 1410.011108 1407.690674 1405.269165 1407.00647 1404.829468 1400.318726 1395.184814 1390.487671 1388.29834 1388.203247 1389.551147 1394.342896 1395.558594 1395.669922 1394.830444 1393.432007 1391.443237 1387.548584 1382.973633 1378.481445 1375.304443 1373.992065 1377.464722 1380.284058 1388.322021 1393.876953 1394.8573 1394.111328 1390.10083 1381.427856 1374.178711 1369.784424 1364.471436 1378.550781 1389.926025 1395.760498 1400.362183 1398.771606 1400.650513 1407.463013 1409.61084 1409.375854 1410.691162 1407.94519 1400.526245 1400.062378 1403.289429 1403.375488 1405.50708 1404.854004 1399.706177 1395.157471 1388.127808 1388.416504 1389.462036 1383.397583 1375.885864 1394.983521 1408.036377 1407.398682 1404.782715 1399.470947 1393.672363 1389.520142 1381.40979 1376.484741 1372.808838 1368.920288 1365.571167 1365.14917 1366.412354 1365.230713 1362.739502 1359.229858 1358.612549 1359.177124 1359.530884 1359.46167 1358.794922 1357.696411 +1644.937988 1653.745605 1663.985474 1675.828369 1690.687378 1699.036987 1705.648193 1712.237793 1716.800659 1719.967896 1730.014771 1734.738525 1734.986938 1734.693481 1734.175293 1733.331543 1732.530396 1734.434937 1735.238403 1735.230713 1734.245117 1730.665527 1726.521484 1722.452026 1722.67627 1723.452515 1722.619507 1721.505005 1720.81543 1717.907959 1711.138062 1706.932739 1705.508057 1704.899414 1704.873901 1706.194336 1712.566162 1718.784546 1720.950806 1721.335938 1721.182129 1720.492676 1717.825806 1715.318848 1714.801025 1717.660522 1719.951538 1720.463501 1720.880615 1721.109131 1720.903198 1720.294434 1720.766113 1721.294067 1721.185913 1719.391357 1713.164673 1705.637329 1697.113159 1684.766846 1669.229126 1650.28479 1643.240723 1655.261475 1668.337158 1677.646484 1680.235229 1683.085205 1688.396851 1690.42981 1690.921143 1689.25415 1679.126221 1669.35437 1661.140869 1650.030029 1633.884521 1634.902832 1640.664795 1639.234863 1629.242554 1629.147583 1645.799072 1661.061157 1675.978271 1686.482788 1694.400879 1698.050049 1698.889893 1693.285645 1681.328613 1672.048706 1663.282227 1651.840454 1646.872681 1642.085449 1634.114136 1626.380005 1620.07605 1636.366333 1650.947998 1657.715454 1662.864258 1665.064209 1663.782349 1661.213257 1653.918579 1642.869019 1624.349121 1603.11731 1620.20166 1635.119873 1646.003784 1661.739746 1663.397217 1653.180054 1641.207642 1634.756836 1634.352905 1628.302734 1613.144775 1617.652588 1632.950562 1631.475342 1622.7052 1617.776489 1609.247925 1622.772095 1625.490234 1635.545654 1640.858154 1646.18396 1649.507324 1650.178833 1650.456665 1648.736572 1644.795654 1640.002563 1637.745361 1636.806763 1632.818726 1625.933716 1620.696167 1618.210815 1620.181396 1604.901978 1594.584106 1581.17749 1572.189331 1569.273926 1567.699951 1564.736694 1560.335815 1554.996948 1552.419067 1547.903809 1540.859863 1539.21228 1538.570435 1538.858154 1537.138428 1525.204712 1520.336914 1519.771851 1523.588745 1524.246338 1521.307007 1517.02063 1511.94104 1510.533447 1506.824219 1502.002197 1499.696167 1494.867065 1492.958496 1494.338745 1495.322021 1496.80957 1498.965088 1509.326782 1517.585938 1523.322754 1524.837769 1525.564453 1526.840698 1526.51709 1526.520386 1527.648193 1529.270142 1531.143555 1533.030151 1534.748535 1536.522583 1540.86731 1545.315063 1549.546753 1557.866455 1565.297119 1575.115845 1586.60376 1591.134033 1596.956787 1600.724731 1604.618042 1609.487671 1611.144897 1619.876343 1625.141846 1629.591431 1634.735596 1641.933228 1643.928711 1637.373413 1630.961914 1623.221436 1614.541626 1607.381714 1599.700073 1599.93103 1601.790771 1602.00708 1600.705811 1597.41626 1596.289062 1596.52002 1590.702759 1585.347534 1586.613892 1592.382446 1591.775513 1585.742188 1576.422852 1566.18396 1559.552002 1566.632935 1568.611816 1563.43396 1559.551514 1558.664551 1558.704346 1554.787354 1549.381348 1547.290527 1546.871216 1547.059082 1545.784302 1544.532227 1543.788452 1543.264893 1545.811768 1552.843018 1559.203369 1560.869385 1556.93689 1546.643066 1536.607666 1533.874878 1535.907837 1537.695801 1545.081055 1550.830444 1555.086548 1559.462402 1565.265869 1570.981079 1577.523193 1584.203857 1592.081177 1600.446533 1607.360107 1615.665283 1623.77124 1631.272949 1638.218628 1645.02417 1652.515991 1660.030762 1667.571045 1672.519897 1676.996582 1681.356812 1685.128174 1688.290894 1689.602661 1689.965088 1689.00415 1687.129639 1684.240479 1681.884766 1680.267944 1677.831177 1675.134521 1672.703125 1670.596313 1668.366943 1667.779663 1670.901123 1673.811523 1674.33252 1673.895264 1672.470825 1669.727661 1661.687256 1653.318848 1646.648315 1639.793945 1638.564453 1637.920166 1631.896118 1625.685303 1619.769165 1629.755005 1639.962524 1649.314697 1651.543579 1647.993652 1637.300903 1634.673462 1628.030273 1631.642212 1640.550049 1644.361572 1643.411133 1640.622192 1635.342651 1635.216919 1631.944946 1622.845947 1624.473511 1625.844116 1619.998779 1617.75293 1616.450073 1611.118408 1603.214355 1594.658936 1581.164917 1569.078491 1560.147339 1559.571533 1558.906494 1555.050781 1553.263916 1555.491577 1555.670898 1554.950439 1553.575439 1550.200195 1538.930786 1530.631836 1523.617554 1526.119141 1528.268188 1529.906128 1533.250122 1539.623657 1550.608765 1557.135986 1564.627686 1572.726196 1575.676392 1576.729248 1579.928345 1583.447998 1582.385254 1580.532593 1580.900513 1585.999512 1597.583862 1612.022705 1618.187866 1609.214722 1601.609009 1597.236938 1598.703857 1600.764282 1601.820923 1602.378296 1600.60083 1596.922241 1591.557007 1591.870239 1597.450562 1602.252686 1601.530029 1598.156738 1597.216919 1597.283569 1593.93396 1589.35437 1585.224121 1578.30835 1570.715942 1562.029785 1550.229004 1540.318604 1532.368408 1522.117798 1511.859863 1508.282471 1504.250244 1500.014404 1494.236816 1490.782837 1488.102417 1482.513306 1475.908691 1470.182739 1465.076172 1463.108887 1468.356079 1471.057739 1471.853271 1470.721558 1470.252563 1473.674805 1474.750122 1469.823364 1459.425415 1446.882568 1438.149902 1444.064209 1455.707886 1465.888794 1464.900635 1440.783813 1426.159668 1419.103516 1408.009888 1394.904785 1372.158936 1350.478271 1339.240234 1333.168945 1332.786377 1338.007812 1348.506226 1365.206543 1367.989624 1372.940063 1383.346924 1383.461182 1368.665161 1377.368042 1402.254761 1421.752075 1435.96167 1453.645142 1465.376709 1470.852051 1471.695801 1469.62793 1468.083496 1466.125488 1471.286621 1476.304321 1482.716553 1489.850952 1498.904053 1503.774536 1509.530396 1514.921021 1515.011841 1511.316284 1505.278809 1498.23938 1501.793457 1508.701416 1510.352539 1506.058472 1500.490601 1496.83374 1493.477173 1488.377441 1477.658203 1462.664917 1452.650391 1456.827759 1461.709595 1467.14856 1471.747925 1472.998657 1468.932983 1466.435669 1469.798584 1469.645996 1466.365234 1461.882812 1454.251831 1446.386841 1437.831421 1443.814087 1451.948486 1454.675293 1456.440674 1456.004639 1449.313721 1450.988892 1453.233276 1448.679321 1452.825928 1456.598511 1458.625122 1458.944092 1457.220703 1455.622925 1453.131714 1450.786743 1448.156982 1444.654297 1440.159058 1437.630127 1434.668701 1432.510376 1430.230469 1429.709595 1426.99585 1419.197876 1410.063354 1402.126099 1400.815063 1400.830688 1400.187622 1398.763428 1397.021362 1393.653076 1390.015625 1389.310303 1395.394653 1400.462891 1403.850952 1404.497559 1401.942383 1399.988892 1401.564819 1400.197632 1396.315918 1392.364868 1388.949463 1386.186279 1384.117065 1384.478027 1388.981079 1390.590942 1389.736572 1388.978271 1389.431885 1388.37085 1385.07605 1381.656982 1378.71936 1372.009644 1366.110352 1371.348389 1376.519897 1383.073242 1388.149658 1389.458862 1388.718506 1385.253296 1378.447876 1371.150879 1365.238159 1364.945801 1377.20459 1386.644531 1391.828857 1392.125 1388.210938 1389.985962 1399.216431 1400.058838 1399.390625 1400.796631 1398.816406 1394.640869 1388.766968 1393.037354 1393.075684 1397.160767 1396.708374 1390.435547 1387.872681 1381.907959 1376.005127 1376.625 1372.775879 1367.295898 1389.414307 1400.337402 1399.401245 1393.371704 1389.186279 1386.678833 1382.489502 1377.180176 1373.786743 1372.953857 1369.541992 1365.900635 1365.532959 1366.856445 1367.583008 1367.757812 1366.656616 1367.026001 1367.436279 1367.560547 1367.723999 1366.142456 1361.437134 +1631.434937 1647.178589 1657.085693 1669.046631 1680.883911 1689.032349 1695.656616 1697.791626 1704.640747 1713.801514 1728.231567 1735.219116 1736.090698 1735.646851 1734.194092 1727.876343 1720.132446 1725.312622 1730.782227 1732.598999 1730.478516 1725.098999 1720.82959 1717.365479 1720.217041 1723.288452 1723.130981 1722.493164 1720.925903 1717.805176 1710.595337 1706.513062 1705.667725 1705.703979 1706.960815 1709.229736 1714.291138 1720.159302 1721.915283 1722.30249 1721.603271 1720.228638 1717.766846 1718.557983 1720.346924 1721.880249 1722.986816 1723.518799 1723.885376 1724.002686 1723.577271 1723.162842 1722.954224 1722.529175 1722.505493 1717.830933 1706.171509 1698.484619 1689.504517 1678.755249 1664.676147 1645.495117 1653.449219 1670.393921 1680.16687 1689.481201 1695.948975 1699.186401 1697.64502 1693.503662 1685.189453 1678.039917 1669.62439 1661.719482 1651.932129 1643.272705 1640.943237 1650.460571 1652.213379 1648.667725 1639.774536 1626.726929 1639.224121 1655.818237 1671.819946 1684.416504 1692.618164 1697.8125 1698.176147 1690.930786 1679.803833 1668.944214 1660.124756 1648.154419 1643.260254 1635.205078 1629.071777 1623.425049 1632.313477 1644.152344 1655.451782 1663.368408 1668.44751 1669.980469 1667.755249 1662.688965 1654.094238 1640.881958 1619.44458 1611.290405 1637.866821 1650.970581 1660.141235 1666.615723 1667.287842 1661.228394 1654.313354 1654.422363 1648.641235 1640.539551 1628.47998 1620.894287 1637.641357 1637.613892 1635.496826 1627.020142 1620.930176 1633.735352 1635.519165 1638.119019 1643.364502 1647.329346 1649.980957 1650.763062 1651.098022 1649.712891 1643.792603 1635.073975 1635.659546 1633.196289 1628.906982 1622.979126 1617.967163 1613.516724 1606.46106 1597.86499 1583.291016 1572.970093 1564.082153 1558.985962 1555.733398 1549.30835 1546.967285 1545.143311 1542.473633 1539.527344 1537.494629 1535.150024 1531.947876 1529.850098 1527.398193 1525.456665 1526.384644 1527.876221 1529.105225 1528.727417 1526.478638 1523.015625 1519.426636 1514.944214 1511.571655 1510.866699 1507.353027 1504.022461 1500.449707 1493.874023 1495.234741 1496.745605 1498.896851 1503.872314 1511.052612 1513.100342 1515.224854 1524.281982 1525.674072 1525.062012 1524.557739 1526.527344 1528.133301 1529.900757 1531.832397 1533.77356 1536.073853 1539.662476 1544.943848 1550.81311 1559.002197 1565.246338 1572.248291 1581.526611 1587.610718 1592.156494 1597.837158 1603.830811 1610.457764 1614.488159 1621.113525 1625.661499 1631.356445 1638.496582 1646.599365 1646.790161 1640.124634 1634.185791 1625.037598 1616.139771 1608.155518 1599.700439 1596.373291 1596.499512 1596.502563 1595.387817 1593.807617 1592.512695 1591.180664 1588.587769 1585.636108 1580.040039 1580.203491 1580.630249 1578.283447 1572.911011 1561.611938 1575.403564 1582.372681 1578.989014 1571.687012 1562.37561 1558.531372 1557.820801 1553.605835 1550.203979 1549.471191 1549.90979 1549.292847 1547.173706 1545.25769 1545.001221 1550.173584 1559.680542 1564.797363 1567.12915 1566.694702 1559.494141 1546.161011 1536.805908 1534.880249 1536.639038 1539.890137 1545.687866 1550.673218 1554.925293 1559.232422 1565.089233 1571.503174 1576.505249 1581.695801 1588.249634 1598.676758 1604.545654 1610.816284 1618.820312 1626.352783 1634.567139 1640.77478 1647.551514 1654.478394 1660.899902 1666.226196 1670.82959 1675.453369 1678.686157 1681.053223 1681.742554 1682.292969 1681.654541 1679.852417 1677.328003 1675.047852 1672.773071 1670.406128 1668.309204 1666.289307 1664.714355 1663.704102 1664.358032 1669.823853 1672.411377 1673.561768 1673.358765 1672.449341 1670.116943 1661.833862 1657.546021 1648.915771 1648.234741 1645.22168 1641.595337 1637.590576 1632.974609 1633.278442 1639.099243 1646.307007 1652.187988 1655.496704 1652.267944 1650.282227 1647.455078 1639.212891 1650.5896 1652.626221 1649.656372 1649.004395 1643.090576 1634.856201 1627.943726 1623.047729 1614.751587 1607.762207 1609.587646 1603.785034 1603.306152 1603.689941 1601.798218 1596.819092 1587.909302 1577.159668 1567.445557 1559.984619 1551.894653 1550.251099 1548.528076 1546.733154 1548.844727 1549.762573 1549.883423 1549.465698 1544.44458 1534.52478 1527.6427 1523.933716 1523.215088 1525.445068 1527.105225 1529.802002 1535.403687 1541.591187 1544.915771 1554.23645 1561.578979 1566.622681 1573.312866 1580.090454 1586.434082 1590.091797 1590.512573 1590.512573 1593.43103 1603.269897 1613.303467 1612.879517 1606.188354 1596.719238 1589.195801 1586.444458 1589.806885 1592.161621 1592.162598 1589.498291 1584.784546 1580.411133 1581.758057 1586.754395 1589.663086 1590.352905 1589.017334 1586.741699 1585.963623 1586.78064 1585.807007 1582.903076 1577.71582 1572.0354 1562.075562 1553.254272 1548.317871 1540.608398 1533.343506 1525.438354 1515.035156 1509.832397 1505.118286 1498.499634 1495.150879 1491.95459 1486.614746 1475.957886 1471.81189 1467.705688 1463.22998 1462.673218 1463.668213 1464.455933 1464.405518 1463.321045 1465.885254 1465.754028 1462.067383 1450.406494 1443.279175 1436.394043 1441.318359 1452.727539 1459.343384 1461.825806 1450.138062 1430.196045 1417.771606 1400.330444 1393.005371 1373.853638 1355.248169 1339.503906 1332.958984 1334.081665 1339.679565 1367.484375 1374.16687 1375.714844 1376.544678 1390.782715 1396.377197 1391.864868 1377.752686 1393.72876 1413.721191 1430.690308 1443.972778 1455.098389 1459.7052 1462.075439 1460.638672 1455.304932 1454.953369 1465.03186 1472.097534 1479.788696 1487.057007 1488.474365 1489.729248 1496.646484 1502.666504 1503.858276 1501.932251 1499.071777 1490.977173 1491.205078 1497.744629 1498.614136 1495.09082 1492.386597 1490.242798 1488.466919 1483.720459 1475.457886 1461.987793 1450.684204 1452.052612 1455.647583 1458.453369 1461.167603 1462.883057 1460.634766 1457.172607 1458.563965 1459.156372 1457.457642 1453.898926 1448.713501 1442.319092 1435.531616 1439.309326 1444.644043 1446.561157 1450.57251 1449.562012 1439.604858 1444.718628 1447.47937 1441.552246 1444.129028 1450.327026 1452.144531 1450.847046 1448.891968 1446.955688 1443.823975 1439.765991 1437.783813 1435.593018 1432.248047 1428.631104 1425.126953 1424.13269 1424.385498 1424.297485 1423.364014 1419.009766 1414.724854 1403.743286 1399.866577 1397.353027 1395.924316 1395.098755 1394.161011 1391.967163 1389.197632 1388.671143 1389.987305 1394.342773 1397.679321 1398.444824 1396.951904 1393.426025 1393.652954 1393.952026 1392.460815 1389.717407 1387.194092 1384.003296 1380.121948 1377.885986 1381.801758 1383.457153 1382.903809 1382.598877 1384.88916 1384.814087 1382.660889 1380.839355 1377.79541 1371.068115 1365.184692 1368.240234 1373.187256 1377.229736 1379.56189 1381.29126 1382.511353 1381.00354 1375.422729 1369.262329 1363.752319 1364.513794 1372.135986 1378.974976 1382.150269 1378.769897 1377.107666 1388.46521 1393.28125 1392.918213 1389.7052 1391.628052 1392.27356 1388.835815 1379.190186 1382.741455 1384.193237 1390.145752 1390.280396 1384.627441 1379.050049 1374.651611 1367.090454 1364.752686 1363.930542 1366.314819 1380.095215 1389.90686 1386.986328 1383.468262 1379.012085 1376.276733 1369.314209 1364.28479 1371.107788 1375.340698 1372.775146 1366.702637 1364.265991 1364.259644 1366.671509 1368.49585 1368.234131 1365.937866 1366.932739 1368.095825 1368.177002 1366.597778 1361.374756 +1622.804077 1631.425415 1639.84668 1658.2854 1670.061523 1673.844116 1680.790161 1696.338867 1708.624146 1713.181641 1721.257324 1728.281372 1731.66333 1729.842529 1724.539062 1712.534546 1708.758789 1714.789062 1721.629517 1723.46582 1721.842285 1716.572144 1713.121094 1710.382568 1714.487793 1722.296387 1723.174561 1722.659912 1720.879272 1717.542969 1711.770264 1708.2146 1706.314209 1707.069458 1710.056152 1712.730713 1716.625854 1720.424561 1722.506836 1722.96936 1722.191406 1720.010864 1718.613037 1720.385498 1722.720703 1724.43396 1725.687744 1726.330322 1726.727051 1726.700073 1726.129883 1725.156738 1724.171631 1723.386108 1721.691895 1709.944458 1698.749512 1688.798584 1680.235718 1672.072876 1655.765869 1654.596191 1665.372437 1678.544189 1688.44458 1699.81958 1708.564941 1702.894775 1697.892212 1687.081543 1674.209961 1667.027344 1660.862671 1652.353027 1643.746582 1644.736938 1652.182739 1659.338501 1661.590454 1656.002441 1645.86853 1630.125854 1634.477905 1645.635986 1661.523315 1679.728027 1689.956299 1697.075928 1696.969971 1688.971191 1679.235352 1669.566406 1661.503296 1652.540894 1644.340088 1632.567261 1626.721436 1633.872803 1639.938721 1648.349121 1660.010864 1669.684937 1675.870728 1675.350464 1669.866943 1662.771606 1651.764038 1635.856201 1618.432861 1632.05957 1649.220581 1665.619995 1673.666748 1674.712646 1673.584229 1670.706909 1667.578125 1666.252319 1663.364136 1655.501587 1644.239258 1633.99939 1641.676514 1647.623291 1648.122681 1639.516357 1630.589111 1637.85437 1640.157837 1642.23877 1645.923096 1648.750366 1650.497192 1651.280884 1651.062256 1647.158569 1637.9823 1626.834595 1620.782959 1620.517334 1618.305054 1615.508179 1611.821167 1606.283813 1598.061279 1588.727783 1577.162109 1563.219971 1558.526001 1559.413818 1561.845947 1560.623291 1557.274658 1553.644775 1548.94104 1546.6604 1546.536377 1544.841064 1542.443604 1538.892456 1536.667603 1537.186401 1536.973755 1535.335205 1533.679077 1532.497192 1532.289551 1530.80481 1525.886353 1523.67981 1523.417725 1519.285278 1515.129639 1510.432861 1506.200562 1502.401489 1494.888916 1496.677734 1499.035767 1502.846924 1506.7771 1508.722168 1510.586914 1515.543945 1522.42627 1522.105957 1524.56897 1526.039795 1526.826782 1528.643799 1531.02771 1533.11084 1535.082397 1537.662109 1542.976318 1550.320679 1557.337402 1563.187988 1567.540283 1571.37915 1579.931885 1586.773438 1592.640015 1598.291382 1604.767456 1609.962891 1613.954834 1619.780518 1624.247559 1632.504761 1641.427979 1642.280273 1637.15332 1632.010376 1624.300049 1614.84021 1607.125366 1599.445679 1596.526855 1596.068481 1595.365479 1593.630127 1590.5448 1588.225708 1587.610474 1586.418213 1582.365601 1574.350708 1571.482422 1571.9646 1571.545532 1570.614746 1572.296509 1590.057251 1594.167969 1586.498535 1575.729858 1565.457886 1564.453125 1564.329834 1562.42749 1560.570801 1559.38623 1557.965576 1555.902344 1552.568726 1550.155884 1556.117798 1564.250244 1568.41333 1571.630859 1573.214478 1571.88269 1556.825562 1542.312012 1536.464722 1535.352417 1536.79834 1540.462769 1545.352417 1549.634155 1553.790527 1558.864014 1564.617432 1571.894409 1576.574097 1581.129639 1587.673706 1596.163208 1601.617065 1607.026855 1613.477173 1620.397583 1627.765625 1635.05603 1641.746094 1648.212891 1654.215088 1660.148438 1664.874634 1669.762329 1672.884644 1674.546753 1675.091309 1675.114624 1674.025391 1672.592896 1670.567383 1668.153809 1665.759521 1663.447266 1661.89856 1660.173706 1658.604004 1658.804443 1658.65271 1665.166138 1670.574707 1672.781982 1673.241699 1672.969116 1671.310669 1670.194458 1666.82373 1663.330322 1659.462158 1651.089111 1643.086548 1638.570801 1636.171387 1639.13147 1642.843506 1648.479248 1654.948364 1659.856201 1660.537109 1660.193848 1660.260742 1661.846924 1659.469971 1651.853149 1645.832031 1642.755249 1639.93689 1634.095947 1625.303101 1612.404785 1607.456055 1598.098755 1593.643677 1590.600098 1586.695557 1588.776855 1586.998291 1582.736816 1575.832031 1569.276978 1563.151367 1554.455688 1547.701294 1546.20813 1544.305542 1542.900024 1543.898804 1544.156494 1543.895142 1542.070068 1537.228882 1526.120361 1522.109131 1520.678589 1520.573608 1521.770996 1523.076294 1524.995972 1529.679688 1532.89917 1536.117676 1541.837036 1548.737427 1558.735718 1568.109253 1574.921875 1585.897339 1596.591309 1600.909912 1603.49353 1607.466187 1612.904541 1615.066528 1612.380615 1606.520386 1599.282715 1588.618652 1582.304565 1577.666992 1580.023438 1580.255737 1578.813354 1576.137573 1571.729614 1573.432251 1577.851562 1579.872559 1580.581299 1579.47583 1577.233643 1576.075073 1577.870972 1577.990967 1576.513916 1575.130859 1570.691772 1561.594604 1556.366821 1550.77063 1543.443481 1536.299072 1527.752319 1522.468018 1515.463379 1512.330444 1502.728638 1500.007202 1498.806396 1493.43103 1485.922852 1474.683105 1465.762085 1463.810547 1461.761963 1459.950195 1457.033447 1450.592041 1452.509644 1455.484497 1455.066528 1449.203369 1443.664307 1438.724365 1426.556396 1434.876953 1443.574219 1442.724121 1444.109009 1447.486938 1437.07373 1422.772339 1399.234619 1380.727539 1365.384766 1349.668091 1338.870117 1333.581543 1335.644043 1354.238403 1376.995483 1384.388794 1389.210083 1390.657715 1395.243896 1405.860352 1406.231812 1394.433838 1386.347778 1400.709961 1419.416992 1433.467651 1443.003174 1447.562866 1448.213379 1445.907104 1445.008179 1448.611572 1454.755249 1462.319458 1470.554565 1475.279541 1478.199829 1479.494995 1486.093018 1490.064331 1491.761597 1491.088501 1488.427979 1483.055176 1481.412842 1484.438232 1487.886841 1485.456299 1484.728516 1483.58667 1481.633667 1477.481323 1469.396118 1458.35376 1450.220703 1448.791382 1450.181519 1451.763428 1452.722412 1453.707642 1452.258179 1449.218994 1450.174927 1451.275146 1449.264404 1445.967529 1442.634277 1438.232788 1428.627563 1428.282959 1436.291016 1437.592163 1441.027954 1438.605225 1433.42627 1438.092896 1441.961914 1438.501221 1437.231567 1441.358154 1442.186646 1440.30188 1438.340698 1437.184692 1434.081177 1429.619629 1425.723755 1424.757935 1423.163574 1420.178955 1417.055176 1412.59021 1412.675781 1414.25354 1415.851929 1414.135986 1405.815552 1400.798828 1397.572388 1393.572021 1391.044189 1392.503052 1391.856934 1390.127563 1387.917603 1387.151855 1388.121216 1389.119507 1391.540527 1391.930176 1390.937134 1388.857178 1389.098022 1389.374023 1388.170044 1386.814453 1384.541748 1382.288208 1379.620728 1377.541138 1377.022705 1377.686157 1376.982178 1378.550537 1381.84436 1382.072998 1380.049438 1379.154175 1375.490479 1369.414429 1365.246948 1366.240967 1369.682251 1372.835938 1374.915771 1376.494751 1377.102905 1375.919434 1370.471558 1365.64502 1358.811523 1355.832275 1364.655762 1369.016968 1369.243164 1367.507202 1375.797119 1383.139648 1385.667969 1384.651489 1379.196045 1383.162231 1383.678345 1379.698975 1371.548584 1370.450073 1371.606567 1379.658569 1380.668335 1377.990601 1371.892944 1367.76355 1362.222656 1356.066895 1353.036011 1363.723999 1372.070923 1375.769287 1377.010254 1375.604492 1366.913696 1362.084595 1355.761963 1361.39502 1370.84082 1379.463989 1377.630005 1368.176514 1362.988281 1359.770264 1362.576294 1366.69043 1367.87854 1365.360718 1361.838135 1363.191528 1364.74353 1364.786743 1359.75 +1611.859375 1625.602539 1636.917725 1648.43103 1655.841919 1664.927734 1682.746216 1696.442261 1702.124756 1704.94812 1705.224609 1707.081055 1708.983154 1708.259033 1703.705078 1696.97583 1692.906128 1703.317017 1709.814575 1712.540527 1710.994019 1703.659424 1701.192993 1697.859863 1709.791382 1723.139282 1723.621338 1722.88208 1720.431396 1717.273804 1714.159668 1710.603149 1707.208008 1709.649902 1713.162354 1715.798462 1718.562988 1720.900635 1723.341064 1723.964478 1723.386841 1720.48999 1720.019409 1722.980713 1725.677612 1727.49646 1728.529541 1729.130615 1729.411987 1729.52771 1728.533936 1726.360596 1724.367188 1722.846313 1718.43103 1708.64856 1696.546875 1681.527954 1672.52124 1662.55481 1658.097412 1665.210571 1672.556274 1685.488892 1695.805176 1706.93335 1709.222046 1699.161377 1691.346191 1680.008179 1667.081421 1659.610107 1656.110229 1652.84021 1657.282959 1659.417114 1662.608032 1669.875854 1667.018921 1658.87915 1646.94104 1632.095703 1638.846313 1650.025513 1661.094116 1674.718384 1687.416016 1695.909546 1695.288574 1686.166992 1677.624756 1669.395142 1660.67041 1653.250366 1643.610962 1629.430176 1632.074829 1637.223755 1642.313843 1651.653198 1666.749878 1680.397583 1685.832764 1679.826904 1670.319336 1662.592773 1647.094116 1633.457886 1628.692139 1634.178589 1655.441895 1673.031738 1682.203491 1684.575439 1684.111328 1682.995728 1682.617676 1677.639404 1674.273193 1669.811035 1660.930176 1651.343994 1653.814941 1657.041626 1655.979248 1649.187134 1642.844849 1645.464478 1644.380737 1644.00708 1646.728394 1649.26416 1650.795288 1651.151123 1648.831909 1640.746216 1630.26416 1618.575684 1613.115356 1611.656128 1609.404053 1606.349731 1601.939819 1596.368164 1590.63501 1579.574219 1567.708374 1563.917236 1569.351685 1572.022583 1571.658447 1570.930054 1568.074341 1563.071289 1557.759644 1556.971436 1557.749023 1556.433472 1552.338257 1548.147095 1547.275513 1546.830444 1546.123779 1543.037231 1538.170776 1535.512085 1538.363159 1539.150024 1538.029175 1534.987915 1531.93396 1527.115479 1523.677734 1516.125488 1510.045532 1505.510132 1502.225342 1496.360962 1499.408569 1502.212402 1505.486206 1508.18457 1510.084839 1511.257202 1513.237915 1518.953247 1522.867554 1524.428467 1525.06543 1527.782227 1531.703735 1533.607666 1534.406982 1535.505615 1537.960938 1545.570679 1551.838135 1557.365112 1563.043335 1567.641724 1574.590332 1579.781006 1584.025635 1586.633423 1594.330688 1596.794556 1603.449951 1608.57959 1619.435303 1630.298706 1637.891724 1638.307251 1632.189331 1624.257812 1618.556396 1609.636719 1606.036743 1601.251099 1599.193848 1598.075317 1596.709351 1594.297852 1589.769287 1584.819092 1583.419922 1580.474976 1574.496338 1572.462891 1579.230713 1576.496216 1571.62793 1584.406128 1594.278076 1602.423584 1602.510254 1592.821045 1577.104248 1574.826416 1575.619141 1572.280884 1569.329834 1568.775024 1567.300659 1565.476929 1563.777222 1561.068848 1559.552979 1565.777832 1571.190918 1574.964111 1576.057739 1573.015259 1562.168701 1550.918701 1541.118164 1536.286011 1537.455566 1536.837402 1540.237305 1544.161865 1547.857056 1552.134033 1557.946777 1563.807251 1570.380371 1575.455933 1579.543213 1584.882568 1592.081421 1598.192505 1603.02771 1608.21106 1614.146973 1620.259888 1627.84375 1634.463257 1640.277466 1645.739746 1651.962646 1657.154297 1661.053589 1664.668213 1667.368286 1667.873047 1667.44873 1666.29248 1664.811157 1663.114624 1661.105591 1658.902588 1655.543457 1654.084229 1652.643799 1654.439209 1657.224854 1659.693115 1664.148926 1668.8927 1671.685059 1673.126343 1673.511475 1673.414673 1673.033936 1672.584961 1667.405273 1662.109131 1652.357666 1642.428345 1637.033691 1635.491333 1638.687256 1643.260742 1650.010986 1657.245483 1666.574707 1666.382568 1662.86377 1660.58252 1659.22168 1654.676025 1648.910034 1637.468994 1631.751587 1633.296143 1628.355347 1622.295776 1611.639282 1593.817383 1585.589966 1582.234497 1581.392212 1578.407349 1575.570923 1573.890625 1570.927734 1566.691528 1561.380127 1556.129517 1551.19104 1549.417847 1547.781372 1545.044312 1541.662109 1539.366821 1538.367065 1537.988647 1536.069092 1528.787354 1525.090332 1525.990845 1519.303345 1516.748413 1517.062744 1518.627075 1521.594604 1525.37439 1528.386719 1531.309814 1535.250366 1547.9198 1556.39917 1565.51001 1575.317627 1584.041748 1603.954224 1620.651245 1622.036743 1621.282471 1620.70166 1617.608887 1613.608154 1608.453979 1601.833496 1594.172241 1584.271362 1572.859375 1571.315552 1571.766357 1570.008423 1567.644531 1564.750488 1566.320435 1570.258179 1572.3479 1572.607056 1570.539307 1566.135986 1563.61853 1568.246948 1569.533691 1570.047729 1570.020874 1567.510986 1563.474365 1559.152222 1548.817871 1539.046509 1528.633545 1521.216431 1512.920898 1512.700439 1514.27002 1513.188721 1508.27124 1504.692383 1500.79834 1489.912598 1478.489624 1475.401489 1470.238037 1461.098511 1459.532349 1456.610229 1452.791626 1448.348267 1442.49585 1440.380859 1435.452148 1432.276367 1425.287598 1413.983765 1420.941895 1427.145264 1427.122803 1426.208252 1429.406616 1431.012207 1422.817139 1406.522583 1385.368164 1365.388306 1346.898682 1338.263428 1333.98877 1336.38855 1372.835449 1385.385986 1393.953003 1399.160278 1401.75 1408.18103 1415.029907 1414.533569 1406.483154 1401.016357 1393.473633 1408.205322 1422.928833 1430.215698 1435.030396 1435.406982 1435.332031 1438.343506 1441.881226 1444.441772 1447.686157 1454.315796 1461.046875 1462.759277 1464.603394 1476.625732 1479.344604 1480.185547 1480.027832 1477.837158 1474.781616 1473.391602 1474.975952 1477.57605 1478.707031 1478.437622 1477.60376 1475.817383 1472.332764 1463.538208 1453.058228 1448.98645 1447.584106 1446.104736 1445.389282 1446.075439 1446.415039 1445.127686 1443.601807 1443.690796 1443.14209 1441.371094 1438.183838 1435.772705 1432.361694 1427.347412 1425.536743 1429.105835 1429.263672 1429.571167 1430.755981 1425.275146 1431.501221 1435.966064 1433.259521 1427.553101 1432.453125 1432.679321 1429.479248 1429.237183 1429.180908 1425.932983 1422.838379 1420.184326 1417.295532 1414.026611 1412.24353 1408.131104 1401.694092 1402.066162 1401.805542 1401.447876 1400.798462 1399.842407 1397.352905 1394.187866 1391.695923 1389.334473 1389.817261 1389.279419 1388.136963 1386.500732 1385.477661 1385.342407 1385.969971 1387.210571 1387.583618 1387.681396 1386.863037 1385.855347 1384.61377 1383.75061 1383.124268 1382.34082 1381.103882 1379.976562 1377.958984 1375.754883 1375.077515 1375.547241 1378.12146 1380.335327 1379.663696 1377.5802 1376.119873 1372.703247 1367.499146 1363.927368 1363.609497 1366.462402 1369.452759 1371.30249 1372.335571 1372.856934 1371.690796 1365.992432 1362.364746 1356.319092 1353.211548 1356.775024 1359.445801 1361.091919 1363.794067 1371.494019 1377.160645 1377.162109 1375.832275 1374.499756 1376.226685 1376.298462 1373.118408 1366.272705 1363.313477 1363.657959 1369.065918 1373.355713 1372.141968 1365.560425 1361.180176 1356.506226 1352.556396 1351.440674 1358.922607 1365.743896 1368.799561 1369.132324 1366.171631 1358.655151 1352.66394 1349.132935 1356.752319 1363.942017 1375.707886 1378.348511 1369.514038 1361.588013 1353.163574 1355.177124 1359.186646 1361.851807 1360.549316 1354.961426 1353.532959 1358.063721 1359.280884 1357.344604 +1604.825317 1621.465088 1628.883545 1635.082031 1650.03833 1667.304321 1678.409058 1687.230591 1692.487915 1693.748779 1692.915527 1692.370239 1693.282593 1693.838623 1690.341309 1682.610718 1679.819702 1688.459229 1692.925049 1694.624634 1692.797607 1686.351562 1682.997925 1689.304688 1712.651123 1723.245972 1725.075684 1723.684448 1719.59375 1718.272583 1717.683105 1714.895142 1712.204224 1713.538818 1716.752319 1719.416626 1721.147095 1723.057739 1724.858521 1725.624634 1725.644897 1725.333862 1725.425415 1727.11145 1729.223633 1730.555054 1731.563354 1732.109009 1732.259888 1732.275269 1730.501343 1725.86438 1722.313354 1719.609619 1712.591675 1704.326416 1694.020508 1682.146362 1671.046753 1661.744019 1670.840454 1679.231567 1683.365845 1691.225342 1699.129761 1705.026611 1702.531006 1692.325928 1685.145508 1672.07666 1662.455444 1660.546143 1664.405273 1667.788086 1673.431274 1675.322632 1677.973267 1677.836548 1669.464844 1658.421753 1645.771851 1633.498291 1642.036743 1655.839233 1668.301147 1679.515503 1688.876953 1695.686523 1692.731079 1681.4198 1675.538574 1667.717529 1658.143921 1651.901123 1642.406372 1631.570923 1636.791504 1640.692139 1643.604736 1654.628784 1674.390625 1688.264404 1685.993164 1679.029419 1669.487671 1662.303711 1649.448364 1633.514893 1641.069458 1644.158691 1656.428101 1675.041748 1686.010864 1689.458862 1692.043335 1693.012817 1692.589233 1687.869507 1681.863892 1678.228149 1672.825928 1669.952271 1668.806396 1666.618164 1663.04126 1658.785767 1653.068604 1650.296875 1647.742065 1645.312866 1647.144409 1649.800903 1648.634155 1646.448975 1640.717651 1629.791138 1617.719482 1607.093018 1603.60144 1601.314209 1599.042236 1595.460815 1592.03186 1589.600098 1576.94519 1569.572144 1568.510376 1575.735474 1579.540283 1582.547485 1582.223022 1580.096069 1576.42627 1570.969116 1567.516968 1568.069824 1569.093994 1567.961304 1563.640259 1560.129028 1559.523804 1559.033691 1555.470093 1551.91272 1546.518799 1543.059692 1545.812378 1548.064941 1546.333496 1543.02063 1539.124268 1534.873901 1528.974365 1520.985718 1512.782349 1509.883545 1505.674561 1499.296875 1500.086792 1502.947266 1505.661011 1509.758911 1512.643677 1513.760864 1514.800049 1519.355713 1522.497925 1523.294678 1524.610229 1532.710083 1535.599976 1535.800903 1535.293823 1535.481567 1535.936646 1539.05481 1546.519531 1549.23291 1556.520752 1560.518921 1566.408203 1572.376587 1576.938232 1587.042603 1594.116333 1598.888672 1606.039429 1613.041138 1621.608154 1633.910889 1637.412476 1636.396484 1626.361328 1616.878662 1608.922119 1608.622681 1607.494385 1606.461548 1604.436401 1601.96106 1599.932495 1598.1698 1592.976074 1587.994873 1583.178833 1577.083862 1574.623413 1583.047852 1593.608643 1600.714478 1579.673462 1589.0802 1603.548218 1612.415161 1606.312744 1594.542969 1583.305298 1582.223389 1582.347046 1579.669434 1576.719482 1576.246826 1574.338501 1571.60498 1571.372314 1567.305298 1567.521118 1573.830688 1576.46167 1575.533081 1573.302856 1563.552368 1553.944092 1546.321533 1539.218018 1537.557739 1537.156616 1537.106567 1540.238159 1543.82251 1546.790283 1550.174561 1556.314453 1561.619507 1567.873779 1572.927979 1576.89917 1582.293457 1588.371094 1593.714355 1598.582031 1603.124146 1607.316528 1612.022949 1619.654175 1626.17334 1631.817871 1637.262451 1642.594727 1647.746582 1651.408325 1654.457031 1657.110352 1658.412109 1657.743042 1657.122803 1655.770386 1653.479858 1650.152222 1647.762085 1645.765381 1644.70874 1645.102173 1655.93103 1660.653198 1665.018066 1668.466553 1669.315552 1670.473145 1673.10022 1674.020996 1674.134766 1673.715454 1672.171753 1666.902222 1659.652954 1648.485107 1640.987549 1633.705688 1632.653931 1637.480103 1642.399292 1649.082031 1657.968018 1673.042114 1668.364746 1660.676758 1657.242554 1653.227905 1648.490601 1641.948486 1631.869263 1620.5354 1622.224365 1620.685791 1614.062378 1603.661377 1584.330811 1582.684082 1582.277588 1580.814209 1577.925781 1574.610962 1573.047363 1570.099854 1564.866699 1564.322998 1565.233765 1564.063354 1560.955566 1557.026123 1550.820679 1545.469727 1538.300903 1534.891235 1532.464111 1529.954712 1528.955444 1528.414307 1527.749878 1524.659302 1516.463623 1511.702148 1513.952881 1517.466675 1521.140137 1524.426758 1528.218384 1533.39563 1542.068848 1552.299438 1561.644531 1573.809814 1580.182495 1599.99292 1620.611694 1635.85022 1637.856567 1626.04895 1618.548828 1613.48291 1608.046143 1601.272949 1594.485229 1586.338623 1574.473511 1567.028687 1560.275269 1559.745605 1557.512207 1555.121704 1557.364014 1561.809326 1562.883057 1562.182861 1559.855225 1554.786499 1554.470093 1558.279663 1559.831909 1564.286255 1564.66394 1563.518188 1563.85083 1562.795044 1553.473755 1543.530518 1532.765503 1522.304077 1511.061646 1505.226074 1508.486572 1515.029785 1513.415161 1509.485596 1504.918579 1500.171875 1492.344604 1487.355957 1482.507935 1474.790283 1465.117554 1460.199219 1456.857056 1452.155884 1442.942749 1436.624878 1425.857544 1418.946167 1413.310913 1406.310181 1402.076782 1409.083008 1411.660889 1415.899658 1417.760498 1413.244873 1409.889771 1403.081055 1386.412231 1373.084595 1352.140381 1339.97583 1334.499023 1341.28894 1369.735474 1389.048462 1401.590088 1409.015991 1416.132446 1420.838623 1423.179443 1422.508545 1419.15918 1414.990967 1406.249756 1401.386475 1415.966309 1419.830688 1424.725098 1426.836426 1427.420288 1430.793945 1433.970825 1437.444214 1437.766357 1442.865479 1448.633667 1449.771729 1452.144287 1461.353149 1467.049805 1469.651123 1470.5448 1470.0177 1469.367188 1469.093994 1470.279419 1471.602417 1473.643921 1473.921631 1473.41394 1472.189453 1469.231934 1465.096436 1455.898682 1449.348267 1446.605835 1443.598999 1439.577148 1439.475098 1439.743652 1438.816528 1437.583252 1437.596313 1436.511719 1435.207031 1432.956787 1430.065308 1427.157593 1426.067505 1424.68811 1424.036865 1424.417847 1423.335938 1424.459473 1422.683228 1425.722534 1428.046631 1426.002441 1423.325684 1426.004395 1424.78125 1422.797974 1422.358154 1421.682495 1419.688965 1417.42334 1415.341675 1412.139038 1408.584595 1405.862549 1402.6427 1400.360107 1399.182251 1398.931152 1397.854858 1397.060059 1396.386597 1394.522339 1392.435059 1390.157837 1388.207642 1387.478271 1386.894775 1385.977905 1384.718384 1383.484741 1382.04895 1380.442505 1381.690552 1383.30127 1384.368896 1384.353271 1383.194946 1379.062012 1379.119385 1380.482178 1380.694824 1379.27417 1379.4646 1378.210693 1374.780151 1373.390747 1373.55481 1376.187256 1377.887939 1376.839722 1375.081909 1373.160645 1370.641968 1367.468018 1364.574341 1360.363159 1361.324707 1365.793823 1367.691162 1368.633179 1369.426147 1369.254761 1366.378174 1362.32959 1357.632812 1353.695801 1352.852539 1352.590698 1354.68689 1365.079712 1370.263916 1372.905518 1371.828735 1370.591919 1369.556885 1368.664917 1369.759888 1368.810913 1363.538208 1357.359497 1355.67688 1362.630127 1367.789185 1368.364502 1363.206787 1357.315063 1352.108154 1349.47168 1348.523804 1353.164673 1359.016602 1361.98645 1362.325439 1358.977051 1351.817993 1343.795898 1340.234985 1352.452759 1364.288696 1371.591431 1372.132568 1366.819092 1361.917603 1356.416382 1352.868652 1351.30481 1352.202637 1351.64209 1348.390259 1343.081665 1344.75708 1353.088135 1353.682251 +1599.046265 1614.623413 1621.444702 1633.169434 1649.125488 1661.389771 1670.787109 1676.045166 1677.942993 1677.85437 1677.276611 1677.825195 1680.346924 1679.825806 1675.43335 1669.07019 1667.999878 1675.922485 1680.755371 1682.401245 1678.216187 1673.086792 1681.43103 1691.749878 1715.288208 1724.741455 1727.868408 1727.02124 1722.805298 1721.965698 1721.600098 1720.255493 1717.555542 1717.172485 1720.209717 1722.763306 1724.230713 1726.133179 1726.976318 1727.432495 1728.222656 1729.241089 1729.915283 1731.779175 1732.904297 1733.879272 1734.575562 1734.231079 1733.884155 1733.619629 1729.919556 1721.874878 1718.147583 1712.19458 1706.247314 1700.223267 1691.537598 1679.634888 1669.815063 1669.699829 1683.956421 1691.166382 1697.200073 1701.748169 1707.921387 1707.407349 1698.422119 1688.070679 1675.09314 1668.047974 1673.032349 1676.529175 1678.292236 1681.603516 1683.849243 1686.232178 1687.646973 1679.335571 1668.02063 1656.517212 1644.496338 1636.977783 1643.645752 1660.4646 1669.972168 1683.80957 1692.2854 1697.526489 1693.052002 1680.274414 1672.61853 1663.415405 1656.112305 1650.066895 1640.13269 1634.539185 1647.957153 1646.47229 1644.330078 1655.241699 1674.650146 1687.221924 1685.345459 1677.833496 1668.905151 1661.925415 1651.697266 1640.638794 1653.479614 1657.110107 1656.819702 1671.733276 1687.140137 1693.488525 1698.395508 1700.601929 1700.073364 1697.165039 1691.888306 1687.451416 1682.317383 1678.504028 1676.002686 1673.10376 1668.653564 1663.125732 1658.449341 1653.917847 1650.07251 1647.832397 1648.538208 1642.349609 1634.651367 1631.646973 1620.946167 1614.38501 1606.920044 1599.052246 1590.105469 1586.589111 1586.385376 1584.707153 1582.176758 1573.963989 1571.311523 1571.687378 1581.952637 1586.730469 1588.664673 1590.655029 1590.158813 1588.022339 1583.956787 1579.164429 1578.67627 1579.566772 1579.042603 1577.366577 1575.221191 1576.348022 1574.953125 1569.524536 1563.572021 1557.492554 1551.919556 1547.727417 1553.86792 1559.791992 1556.28186 1550.082642 1544.492676 1539.046997 1532.368408 1526.266357 1521.189087 1515.605957 1510.45813 1503.745117 1498.487793 1502.121338 1505.383667 1510.37854 1513.759033 1516.288086 1519.082397 1522.442505 1525.498901 1528.403198 1534.633789 1537.629272 1538.278687 1538.891113 1538.852295 1538.967773 1540.187012 1541.802246 1546.795898 1548.687134 1553.867432 1562.094604 1569.108276 1575.09375 1580.479126 1587.770142 1597.105591 1607.425415 1614.536743 1621.997925 1627.61438 1634.313232 1636.094238 1630.484375 1621.244995 1619.521973 1619.039673 1618.382202 1615.327515 1612.601562 1609.931396 1606.26416 1602.753784 1600.058838 1595.769531 1589.319946 1585.049805 1581.015747 1581.128052 1585.904419 1594.549316 1600.230591 1586.686035 1587.801025 1601.130737 1612.838379 1608.772949 1597.790283 1587.515015 1594.070312 1595.111694 1588.990601 1583.82605 1583.475464 1582.934082 1582.873535 1581.327271 1577.671631 1579.112549 1583.534058 1578.947876 1574.035889 1567.732788 1558.476074 1547.243286 1543.620728 1538.004639 1537.880981 1536.827881 1537.719482 1541.161865 1543.741089 1546.185547 1549.37854 1555.223145 1560.697021 1565.405884 1569.955811 1573.352783 1577.605347 1583.827026 1588.77356 1593.333008 1597.633179 1601.407593 1605.202271 1610.154175 1617.512573 1623.552979 1627.873413 1632.372925 1636.706299 1640.440918 1642.030151 1642.957397 1644.042603 1645.079346 1644.256104 1643.222046 1641.571777 1640.528442 1640.176636 1641.472656 1643.726196 1649.015747 1660.638916 1664.723511 1670.921143 1672.379761 1673.332764 1673.391235 1674.604492 1674.332031 1673.95813 1673.447144 1671.43811 1662.605347 1653.052246 1643.542114 1637.359619 1631.064453 1628.456177 1634.943604 1640.854492 1648.285034 1657.370361 1670.379639 1666.632446 1658.44812 1653.565918 1646.685547 1638.113647 1631.499023 1624.361816 1614.168457 1608.275024 1604.866699 1596.621826 1592.865601 1589.790894 1591.662842 1592.604492 1589.802612 1586.053101 1583.087891 1581.055542 1580.413208 1576.719971 1575.016113 1576.558594 1573.938232 1570.205933 1566.621094 1561.667969 1553.926392 1547.259644 1544.075928 1541.370972 1538.063477 1535.140137 1532.758179 1530.290405 1527.167603 1522.314453 1513.773682 1509.276367 1513.052002 1516.949219 1520.968506 1525.190918 1529.474365 1533.961426 1544.973511 1556.150146 1569.799927 1577.849854 1585.537476 1608.265259 1621.403931 1629.548828 1625.08374 1617.551147 1610.503784 1602.550903 1596.904175 1588.612671 1581.708008 1573.857056 1568.764771 1563.243286 1558.985962 1551.905884 1547.325317 1547.289429 1549.874023 1550.977173 1550.354736 1546.998779 1543.269775 1546.868896 1549.507935 1550.386597 1557.302856 1558.230591 1556.37915 1556.156006 1558.383057 1553.899414 1546.677002 1534.246582 1523.437988 1512.468872 1501.822388 1497.2229 1506.705933 1514.26123 1513.325073 1509.358032 1505.954346 1503.500244 1499.593872 1492.133911 1483.078369 1472.899414 1467.373413 1461.908691 1457.611938 1453.223633 1448.315308 1439.1875 1431.654785 1425.489746 1418.869507 1407.907349 1400.428711 1387.670654 1391.220703 1396.443604 1394.18457 1387.314331 1384.781494 1380.987915 1368.229004 1351.497681 1340.641357 1334.199341 1345.129883 1370.790283 1392.154175 1401.884155 1415.758911 1426.840454 1429.504028 1429.721191 1429.47937 1427.717163 1421.415771 1413.022827 1406.642822 1405.936523 1412.869873 1416.291748 1418.407959 1422.733032 1425.607666 1434.063599 1441.965088 1443.353271 1438.557495 1441.72937 1447.209351 1449.626587 1451.987671 1456.892334 1460.237793 1462.868164 1463.722168 1463.930298 1464.829712 1466.260742 1466.863159 1471.023804 1471.516724 1470.891113 1469.475464 1467.790771 1465.890625 1458.640625 1449.987305 1446.265625 1443.301514 1440.521606 1437.906128 1436.509888 1435.926514 1434.918335 1432.803833 1430.672485 1429.601562 1428.701172 1426.82312 1425.344849 1424.28418 1423.016846 1421.58252 1419.458252 1417.681641 1418.04834 1417.511719 1418.62085 1419.331177 1419.731445 1417.46875 1417.843872 1418.560303 1418.072144 1415.940308 1415.248413 1414.121948 1412.780884 1410.742554 1407.181396 1403.256104 1401.58728 1400.333862 1398.826294 1397.306152 1395.852539 1394.778076 1394.234863 1393.71814 1392.625854 1390.938232 1388.718262 1386.861572 1385.442627 1384.624146 1383.699707 1382.730469 1381.770508 1380.137329 1377.630859 1378.243408 1380.381226 1381.668945 1382.083618 1381.609863 1380.115845 1378.047119 1377.743774 1379.056274 1377.676025 1377.149902 1375.552246 1372.973633 1371.003906 1368.274048 1371.012085 1373.195679 1372.948364 1371.102295 1369.971436 1369.331543 1368.071411 1366.73999 1357.852661 1353.663208 1358.715088 1363.118774 1365.713379 1366.201416 1367.12146 1367.329224 1363.973877 1358.382202 1356.115967 1353.523315 1351.806274 1356.709229 1364.248047 1368.056519 1369.486328 1368.242676 1365.082153 1365.212646 1363.566284 1365.598999 1364.910889 1360.352905 1354.551514 1352.427002 1356.782349 1364.849365 1365.47876 1360.162598 1354.204834 1349.898193 1344.17749 1342.90332 1348.704346 1352.884888 1355.930908 1355.751221 1352.587646 1345.827148 1339.236816 1340.657593 1352.872192 1364.133179 1368.330933 1367.168701 1364.505249 1362.9823 1360.5979 1356.478638 1350.823975 1340.773193 1339.424194 1338.152344 1334.301758 1332.223877 1337.908936 1340.912476 +1597.950439 1609.070801 1620.010254 1630.598877 1641.424805 1649.364258 1654.873901 1659.168579 1662.254639 1661.923218 1661.351929 1662.432251 1664.123657 1664.0979 1660.940063 1658.198853 1660.836914 1666.081299 1669.371704 1668.386841 1666.8396 1670.377075 1685.489868 1693.907837 1714.938477 1725.918823 1731.386963 1731.356079 1730.396851 1728.183105 1726.294556 1724.568726 1721.465332 1719.571655 1722.522583 1725.694458 1728.259155 1729.984741 1729.561035 1729.174072 1729.965454 1731.471924 1732.864136 1734.570679 1735.854492 1737.227051 1737.57959 1736.641113 1734.891235 1732.963989 1725.260132 1717.318848 1709.653442 1704.747437 1701.07251 1696.713501 1685.377686 1675.262817 1668.452026 1682.751099 1692.15271 1705.846924 1710.764404 1710.8573 1711.044922 1706.771973 1696.886597 1681.890625 1667.803589 1677.589478 1686.089233 1688.65564 1690.128662 1692.684937 1695.952148 1696.420288 1689.970337 1676.195312 1664.706421 1653.30957 1643.039551 1642.523193 1650.580688 1664.436523 1672.637939 1684.840332 1695.601196 1698.627563 1693.044922 1679.153442 1668.577515 1660.756348 1656.266479 1649.309326 1641.572144 1649.167725 1655.263672 1654.908569 1651.707397 1655.915039 1667.456299 1677.456421 1679.892212 1674.974609 1670.494019 1664.733765 1657.937866 1643.919556 1661.602905 1669.222534 1672.391235 1674.768311 1685.443481 1696.520752 1706.32312 1708.576538 1706.356934 1703.430786 1699.444092 1696.894409 1692.036987 1683.682983 1680.37085 1676.559692 1671.187744 1663.976929 1658.2146 1654.172363 1650.982788 1647.783081 1636.34436 1621.789307 1620.56897 1614.070923 1607.664185 1597.823486 1594.887207 1593.494629 1589.086548 1586.9823 1583.219971 1581.045898 1580.718384 1581.178101 1581.981689 1586.378418 1592.342041 1595.403931 1596.790283 1597.679688 1596.406006 1594.212524 1591.217896 1588.478638 1589.906494 1590.097168 1588.162109 1586.415039 1586.059204 1584.726929 1581.564331 1576.262329 1569.275146 1563.755615 1558.4729 1554.230835 1562.359253 1570.562866 1567.366089 1559.370728 1547.047241 1541.159912 1536.348145 1533.196899 1528.17627 1522.218506 1514.543457 1506.780884 1499.943359 1500.389771 1504.255737 1509.778687 1513.771973 1516.613647 1520.676636 1524.983032 1527.687134 1531.674316 1536.669189 1538.179443 1539.60498 1541.140259 1543.839722 1545.981445 1546.835449 1547.393188 1549.355103 1556.799194 1561.805054 1571.345703 1576.559326 1579.907104 1581.723022 1586.768311 1599.276001 1611.885986 1619.921509 1626.630737 1631.804688 1635.047607 1636.141235 1631.511108 1630.306274 1631.845947 1629.570801 1627.331543 1623.434326 1618.528931 1613.193848 1608.615234 1604.278198 1600.46228 1596.37146 1588.812012 1584.440674 1583.885254 1584.566528 1589.190308 1594.743042 1598.872925 1592.54895 1587.108887 1596.660645 1609.470825 1614.590332 1600.41272 1601.134644 1609.445312 1606.590942 1603.600586 1598.550903 1596.760742 1594.737793 1592.264893 1589.336182 1587.327637 1588.247437 1585.098022 1576.505127 1570.324463 1564.49939 1554.87561 1547.463013 1544.724609 1545.348389 1545.624634 1541.165527 1542.286011 1543.144775 1544.482178 1546.78479 1549.838013 1554.92749 1560.229858 1563.963501 1567.231079 1570.187744 1572.19458 1576.000122 1581.968018 1586.439697 1590.716553 1595.201294 1599.46875 1603.758545 1607.975342 1612.619507 1618.25061 1622.239258 1625.792603 1628.538818 1630.232788 1631.151123 1631.840698 1632.023926 1631.902222 1632.16394 1632.892944 1633.258911 1633.471802 1642.544067 1645.536743 1653.231934 1659.068848 1666.69751 1670.586548 1675.497437 1677.569092 1677.880127 1676.290161 1674.138306 1672.71875 1672.338623 1667.857178 1656.147217 1644.305664 1637.961426 1631.473633 1624.542114 1622.866699 1631.672363 1638.686401 1646.786255 1655.972046 1663.41626 1663.490112 1658.92041 1652.312256 1644.360107 1633.261475 1623.892456 1615.199097 1607.23645 1602.764526 1598.008057 1598.486572 1597.930664 1600.887329 1604.877075 1609.077881 1605.204224 1596.513428 1591.431274 1588.271851 1589.244019 1588.86084 1587.58728 1590.273071 1590.696045 1586.097534 1576.537109 1569.214355 1562.99231 1558.128784 1554.977661 1551.423584 1546.543091 1541.049805 1535.936768 1533.622803 1530.595581 1526.743774 1519.867432 1511.15564 1507.47937 1513.39209 1517.238892 1521.664429 1526.503174 1531.95752 1543.098145 1554.471191 1566.743164 1575.508179 1579.913574 1589.526123 1609.995483 1619.702881 1620.684448 1616.90625 1609.743774 1596.827515 1593.930054 1586.728516 1583.018921 1578.594116 1574.607422 1570.512329 1565.460205 1560.444702 1554.244507 1548.793335 1536.471191 1535.463989 1538.122681 1536.371338 1532.805054 1535.737915 1535.536499 1541.271606 1547.697144 1548.455444 1544.600098 1539.306885 1546.411621 1547.605469 1539.909912 1530.552368 1519.492188 1508.227295 1498.608398 1490.299805 1497.584717 1506.818604 1513.042725 1511.045898 1509.478638 1507.946289 1504.680786 1498.492798 1491.402222 1487.089722 1481.550781 1472.802368 1462.075684 1455.362549 1449.768188 1446.57666 1439.704224 1435.768311 1428.069824 1421.415283 1415.853394 1404.243042 1393.806641 1385.102051 1378.182129 1369.083496 1362.025513 1363.848999 1360.61438 1348.402344 1337.139282 1337.910645 1351.944946 1371.119873 1386.195312 1397.545532 1414.243164 1421.36377 1425.55603 1429.332153 1428.716309 1429.417603 1427.917603 1418.235596 1415.929932 1416.998047 1414.792847 1414.93335 1414.416748 1426.744263 1438.283081 1447.46228 1453.06897 1453.454102 1445.984985 1445.315308 1452.204224 1451.459839 1450.963013 1450.910767 1451.827759 1455.980835 1460.059204 1461.625977 1462.416748 1462.802856 1463.372437 1469.301392 1469.948364 1469.459839 1467.984497 1466.150635 1464.865234 1453.972534 1449.785889 1447.408325 1444.927246 1441.354004 1436.941895 1435.771973 1434.969482 1433.950684 1430.794922 1426.312988 1425.876587 1425.971069 1425.022217 1423.916138 1422.932495 1421.645874 1419.766357 1416.82959 1414.471191 1413.996582 1413.957031 1413.674805 1413.981934 1413.815674 1413.272461 1412.747192 1413.973999 1413.66748 1412.481079 1411.578003 1410.717651 1409.141235 1406.926025 1404.059937 1401.405518 1399.670776 1398.29541 1397.076904 1395.534302 1393.338257 1391.630615 1391.54834 1391.345581 1390.314331 1388.78894 1386.706909 1384.808105 1383.64624 1382.690918 1381.657349 1380.79834 1380.564697 1379.711182 1377.697144 1376.699097 1378.383911 1379.70459 1380.338257 1380.676025 1380.198975 1379.147583 1376.692505 1375.33252 1373.680298 1371.529297 1369.74292 1369.376831 1368.817505 1366.159912 1366.895142 1369.43042 1369.706421 1367.06311 1366.320801 1367.398926 1366.910034 1366.696899 1358.236938 1351.490112 1352.297241 1354.947998 1356.082153 1354.315674 1356.080933 1360.141968 1356.560791 1355.803955 1354.095093 1354.396606 1350.885864 1353.98291 1359.517456 1365.047974 1367.34375 1366.676514 1362.686768 1358.376221 1357.178345 1359.341064 1359.974365 1358.000977 1354.847046 1351.713135 1354.694092 1358.8479 1360.24231 1358.094116 1352.615967 1347.753296 1342.692871 1340.527588 1345.621216 1348.950317 1350.732666 1350.261475 1346.767334 1339.525024 1330.83606 1340.742188 1349.834351 1358.831421 1363.796509 1360.356812 1361.095947 1366.18396 1366.739624 1362.148926 1357.588623 1352.991699 1345.445068 1335.651978 1326.567017 1323.482788 1327.661255 1329.4646 +1592.570068 1607.71106 1618.879639 1625.523315 1631.988037 1636.136841 1637.914429 1642.039307 1643.177856 1643.894775 1645.950806 1648.25708 1649.015137 1649.038452 1647.99231 1647.030518 1650.588623 1656.453735 1658.004028 1657.787354 1662.73291 1676.128906 1687.473999 1698.666748 1714.349854 1729.548584 1733.230347 1733.90625 1733.838257 1733.171021 1732.133911 1730.940674 1727.967773 1725.934326 1726.486938 1728.787476 1731.768555 1732.838745 1731.529297 1730.359863 1731.542236 1733.71875 1735.857666 1737.899292 1739.609009 1741.043457 1741.481445 1738.84314 1733.685303 1727.101074 1717.994751 1712.73291 1705.94043 1699.997314 1696.750366 1686.122437 1679.270142 1673.661255 1677.824585 1690.477905 1705.676514 1714.216919 1718.160278 1717.226074 1710.614136 1703.195679 1691.657593 1679.039429 1684.420166 1695.812622 1698.917603 1701.05603 1705.468628 1707.555176 1704.718506 1699.873047 1688.647583 1672.323608 1661.677368 1649.879761 1643.441406 1656.603638 1665.045166 1673.398926 1678.184326 1685.840576 1696.912476 1697.902832 1690.013916 1678.477051 1670.174072 1665.271729 1660.669312 1653.497437 1643.945923 1656.328735 1663.406006 1664.129517 1662.38623 1659.931763 1663.817139 1668.32666 1669.833862 1672.056519 1672.571899 1672.026978 1667.581299 1654.28479 1662.809814 1676.816895 1684.589966 1686.853149 1689.972534 1697.360596 1710.766113 1709.944214 1709.933105 1708.747559 1705.663452 1702.010376 1698.329102 1691.741943 1685.252563 1679.774902 1671.697388 1660.996582 1655.963013 1652.028931 1647.776367 1640.383301 1627.997192 1614.871582 1608.189697 1605.373047 1602.741089 1602.851685 1604.831055 1606.088013 1606.541138 1604.11438 1601.083008 1594.946899 1593.980469 1595.531494 1594.478638 1596.233765 1602.811279 1606.580078 1609.602051 1609.74646 1607.174072 1602.397339 1598.683228 1598.573853 1601.148438 1599.588135 1597.889771 1596.823608 1595.538452 1592.802002 1588.576416 1582.299683 1575.677002 1574.841919 1565.434692 1558.688599 1567.846191 1577.698853 1575.254395 1561.76709 1549.272095 1545.316406 1541.203979 1538.780762 1533.527832 1527.006226 1516.128662 1509.346558 1504.359375 1499.988892 1501.975952 1507.678345 1512.630249 1515.74646 1520.204468 1524.558472 1527.177368 1531.07959 1535.327393 1537.951416 1539.771606 1542.151855 1546.155029 1549.931274 1552.016968 1555.011841 1560.212402 1564.550537 1568.86499 1574.751099 1581.929443 1586.332764 1584.662109 1584.639648 1595.190063 1611.7229 1620.713867 1631.315552 1639.997437 1645.696167 1643.300781 1640.963989 1640.791016 1638.7323 1636.082886 1633.820557 1626.575684 1620.697388 1614.174072 1609.051025 1604.182617 1599.87561 1594.429321 1585.768555 1585.894165 1587.047363 1587.892944 1592.302124 1596.452026 1599.411743 1598.899658 1594.983032 1595.252075 1608.615356 1620.628418 1608.355591 1614.811401 1618.05542 1617.147461 1614.805298 1610.498657 1606.562744 1601.180176 1597.76062 1591.366577 1588.518433 1585.579346 1577.35791 1570.617188 1565.080322 1559.445435 1551.903442 1546.598267 1547.703857 1552.557861 1553.799561 1550.141479 1546.024048 1543.705811 1544.92041 1546.999146 1550.313599 1554.520386 1559.644775 1562.97168 1565.196045 1567.277588 1569.050659 1570.994629 1573.564453 1578.714844 1583.337402 1588.620972 1593.744019 1598.607422 1602.389038 1605.679321 1610.10498 1613.849487 1614.741577 1616.234131 1619.553345 1621.113647 1620.509399 1621.05603 1621.94104 1622.768677 1625.635864 1633.89856 1642.713135 1650.693726 1656.886719 1660.641357 1664.900146 1670.662598 1673.170532 1678.126587 1682.505615 1681.484375 1677.296387 1670.237793 1668.744507 1667.678589 1661.647339 1648.92041 1636.833862 1630.943726 1624.344849 1619.071777 1620.088989 1628.075928 1636.649414 1645.093262 1654.223145 1660.304199 1661.210938 1658.324219 1651.633179 1644.397095 1634.67688 1625.571289 1617.150269 1609.914307 1604.578125 1604.673096 1608.233276 1608.428467 1611.531006 1620.827271 1625.230347 1621.699341 1609.880127 1599.494141 1598.009277 1600.051758 1602.230713 1602.174805 1603.270752 1603.69458 1598.892212 1588.369629 1576.229492 1570.900269 1568.460815 1565.854004 1562.435547 1556.026489 1549.016235 1541.994141 1537.569092 1534.222412 1529.919922 1525.666992 1516.233765 1506.213013 1508.123047 1513.120972 1516.958984 1522.795654 1529.157715 1539.818726 1551.193115 1558.939209 1568.571655 1575.414795 1580.093872 1588.840576 1605.989746 1612.759644 1614.590942 1613.611816 1607.27002 1599.126953 1593.704224 1588.995728 1584.889404 1580.671997 1576.817627 1572.090942 1566.689697 1560.521484 1555.634521 1551.047241 1540.384277 1527.171509 1522.91394 1523.33252 1523.480835 1524.077271 1531.117188 1536.565796 1534.608521 1529.873169 1528.421143 1533.455688 1532.678101 1529.431763 1523.412354 1512.890747 1505.722168 1496.157349 1486.038208 1490.817017 1498.169434 1503.147705 1509.955933 1513.190063 1512.766235 1510.64978 1505.944458 1503.091919 1498.113647 1490.127808 1483.280762 1478.379883 1472.227783 1466.120728 1455.429443 1448.765259 1445.304443 1442.171387 1432.231934 1427.912842 1420.203491 1410.73584 1407.50769 1400.992065 1387.343628 1367.120728 1351.921509 1343.89209 1339.238281 1335.456299 1340.66333 1354.196777 1362.753784 1372.539551 1391.929199 1405.459595 1412.714233 1417.317505 1420.009277 1421.728516 1423.449829 1422.926392 1418.242188 1420.987061 1424.915649 1415.417603 1415.871338 1418.516724 1424.96814 1431.865234 1436.630249 1440.442871 1441.222168 1442.500977 1444.368652 1449.691406 1452.180176 1453.45105 1453.987671 1453.747559 1457.731323 1461.939941 1463.531128 1464.615112 1465.283691 1465.375366 1469.084961 1469.519409 1468.974487 1467.510986 1464.667114 1461.245728 1458.063232 1454.036377 1451.245605 1449.939209 1447.394287 1443.272583 1439.916382 1437.724487 1437.574097 1436.536133 1433.276123 1428.884155 1426.248657 1424.900024 1423.750488 1422.575684 1421.228149 1419.386841 1417.180664 1415.652588 1414.603149 1413.897095 1413.438354 1412.628174 1411.823975 1411.044434 1410.539062 1410.478394 1410.32019 1409.590942 1408.660522 1407.725098 1406.498291 1404.671509 1402.190796 1400.024658 1398.028809 1396.563232 1395.380127 1394.175537 1392.348755 1390.25061 1389.465088 1388.479736 1387.423462 1385.931519 1383.851074 1382.401001 1381.508301 1380.858643 1379.994385 1378.561035 1378.688721 1378.641357 1377.085571 1375.32019 1375.980957 1377.818604 1378.906372 1379.257935 1379.224243 1378.572998 1374.383667 1367.022339 1366.796875 1367.739868 1365.402954 1366.513428 1367.221558 1365.967773 1364.481323 1367.762695 1367.973633 1366.694702 1363.220459 1362.941895 1360.366089 1359.8396 1353.666138 1347.97998 1345.828491 1347.664429 1349.00293 1347.630249 1346.211914 1345.682251 1342.39856 1344.575562 1347.320923 1348.606812 1343.452881 1349.355591 1354.141846 1359.9552 1362.971313 1362.280884 1358.699463 1353.577393 1352.296631 1355.134644 1356.970947 1356.570435 1353.675415 1348.302856 1351.521729 1355.373535 1356.928833 1355.754517 1353.263062 1347.245239 1342.90564 1338.773682 1342.759521 1345.231934 1345.272217 1344.370117 1341.116089 1332.466919 1329.764038 1338.109497 1347.386841 1355.466187 1357.363647 1351.255005 1354.635864 1360.224365 1365.003662 1363.077271 1355.908813 1356.946899 1356.623779 1348.869629 1335.548584 1322.322144 1314.67041 1314.994385 +1590.40625 1606.638306 1613.540161 1618.987671 1621.157227 1620.901367 1622.73584 1629.075195 1632.702271 1632.408325 1630.869629 1633.101196 1635.981689 1635.24231 1633.033203 1633.131592 1635.599365 1642.681763 1643.931885 1652.631104 1665.033325 1677.086426 1687.119751 1699.533813 1714.207764 1727.542114 1734.151855 1734.579346 1734.780029 1735.170654 1735.352295 1734.563354 1733.638428 1730.894531 1730.246216 1732.034058 1734.16272 1733.734131 1731.518555 1731.537598 1733.990112 1736.44812 1738.7229 1740.980347 1743.2052 1745.002563 1744.685669 1741.231323 1732.58606 1724.210938 1716.300537 1709.400146 1699.717529 1693.983643 1683.189697 1679.966187 1678.869873 1677.871704 1684.545776 1699.028198 1711.224487 1718.949097 1722.186279 1718.736816 1709.124756 1700.484253 1686.485229 1683.257202 1699.501587 1706.148193 1709.606934 1711.546997 1711.797241 1711.411865 1706.723145 1695.078003 1679.85437 1668.068604 1658.887817 1649.113403 1654.001465 1664.168945 1670.300415 1678.333374 1683.87439 1689.540161 1696.625 1698.172729 1691.962036 1680.46936 1674.286743 1668.720581 1663.53479 1657.560303 1648.890503 1662.439331 1671.557251 1673.666748 1669.739258 1667.282349 1669.073364 1668.701294 1669.774414 1672.269897 1675.311523 1676.857788 1677.11499 1670.623413 1664.508423 1680.72937 1691.478882 1696.259888 1696.743042 1700.837769 1707.356567 1709.805908 1710.230103 1710.329346 1709.431641 1706.188843 1700.003418 1693.807739 1688.003052 1681.669678 1672.595459 1662.770386 1656.000977 1649.135254 1640.69397 1630.046021 1618.346191 1619.291138 1618.705322 1616.274902 1615.310669 1617.096436 1618.868896 1619.730225 1620.121582 1617.689941 1613.442505 1607.96582 1608.738159 1608.420654 1605.105225 1604.158325 1611.976562 1617.894531 1621.705688 1623.904053 1621.683472 1614.963135 1610.358521 1611.234985 1611.716797 1608.912231 1607.940796 1606.861694 1604.843506 1601.667847 1595.980957 1586.928101 1583.725098 1582.405396 1576.36145 1562.432861 1571.156982 1579.876221 1577.029663 1566.974609 1557.441406 1548.937134 1544.71106 1540.784912 1535.518188 1527.148926 1520.368652 1512.660278 1508.037476 1502.749878 1499.802734 1505.484863 1510.682739 1514.121582 1518.098145 1522.325195 1524.454712 1526.892456 1531.780762 1535.698242 1537.761719 1540.061157 1543.935303 1548.268311 1551.799316 1557.271484 1562.908813 1566.784912 1571.932861 1577.838745 1585.049561 1590.222778 1594.275391 1596.93457 1595.604126 1607.794922 1621.742065 1636.437866 1647.834839 1649.816895 1649.103638 1648.71521 1647.795898 1642.461426 1636.704834 1630.943115 1624.933716 1619.368164 1613.00769 1608.036743 1602.891602 1598.398682 1593.187378 1587.110596 1588.175415 1590.0271 1591.61084 1594.961304 1599.000366 1601.52124 1600.436279 1597.179565 1600.081421 1614.317627 1624.318848 1625.13916 1626.525879 1630.539429 1630.052002 1621.535522 1611.764282 1606.011719 1599.619141 1593.311646 1586.330444 1581.33728 1573.756836 1568.56543 1564.04834 1557.613647 1551.345581 1547.482544 1547.04248 1555.69751 1562.53833 1562.627197 1557.260498 1550.363892 1546.147949 1545.046997 1546.593262 1549.157593 1553.034546 1557.242065 1560.838989 1562.586182 1564.677856 1566.77063 1568.632812 1570.35022 1572.470459 1576.444946 1582.261353 1587.985352 1593.105835 1597.383057 1600.447632 1603.398926 1606.410034 1605.883179 1606.020142 1608.486084 1609.075195 1609.312622 1612.605591 1619.434692 1623.298584 1627.130005 1634.603638 1646.411499 1655.873413 1661.151001 1664.012329 1669.677856 1673.920898 1676.962769 1681.004761 1684.253784 1684.917603 1677.002075 1663.179199 1658.380127 1658.776733 1649.612549 1639.646362 1630.678711 1623.76709 1616.832397 1611.509033 1617.70813 1624.994385 1635.638794 1644.237793 1653.23877 1659.829712 1660.755371 1657.88208 1651.153931 1643.745728 1634.605103 1627.922852 1620.854858 1612.585693 1609.464355 1611.094482 1616.906982 1618.518188 1623.776733 1634.037231 1636.130981 1631.038452 1621.063232 1610.372437 1609.345093 1614.861084 1616.974731 1616.967041 1615.842407 1610.654663 1602.793579 1590.750854 1581.64856 1575.467407 1575.133301 1574.587036 1569.90918 1564.039062 1555.494141 1547.939331 1542.698364 1537.412109 1532.57019 1527.824341 1520.640381 1510.242432 1501.957764 1506.235229 1511.73877 1518.138184 1524.19873 1533.130249 1542.319214 1548.673584 1558.050903 1568.790405 1575.164185 1578.903931 1585.039307 1598.237061 1608.663208 1612.525513 1612.468628 1607.803955 1600.383057 1595.683594 1592.125488 1586.947388 1582.517334 1578.268188 1572.97583 1566.619141 1560.287476 1556.000854 1550.609375 1539.315918 1525.48938 1518.734131 1511.03418 1511.341187 1517.760498 1520.124268 1518.309204 1514.664307 1515.347046 1518.957642 1519.661377 1517.382568 1513.294312 1507.119751 1502.534302 1495.777222 1480.204956 1480.068848 1485.854248 1494.166016 1505.772339 1515.159424 1514.925781 1514.656372 1512.704834 1509.016846 1505.306519 1500.593018 1497.456787 1489.496826 1480.811035 1472.546509 1468.331787 1458.430542 1452.824707 1451.462402 1440.940674 1435.392334 1431.941528 1424.828003 1417.123291 1409.550049 1393.897217 1372.876953 1357.861328 1344.928833 1335.904785 1338.040649 1340.815186 1351.036499 1353.464722 1365.201294 1381.616943 1393.159668 1398.275146 1402.208984 1408.846924 1411.54895 1415.473145 1414.232178 1409.594116 1412.533081 1414.084717 1410.150391 1412.03186 1412.943237 1414.847656 1425.564697 1427.972534 1428.864502 1431.235107 1437.521729 1438.362549 1441.204712 1447.784302 1451.897095 1457.620728 1461.57019 1465.055054 1468.151733 1470.253906 1471.071655 1469.535522 1469.01355 1469.853638 1469.862427 1469.235596 1467.830566 1465.389771 1464.541016 1463.996216 1462.483154 1459.950806 1457.647461 1455.518677 1454.602417 1453.245972 1451.091919 1449.553955 1447.037964 1443.381592 1438.632568 1431.411133 1426.810669 1424.731567 1422.901123 1421.270996 1419.461182 1418.031006 1416.760132 1415.472656 1414.629883 1413.816528 1412.701172 1411.364014 1409.931763 1408.660034 1407.827637 1407.240967 1406.847534 1406.326538 1405.678955 1404.561035 1402.74585 1400.568848 1398.476929 1396.428833 1394.868774 1393.976807 1393.389893 1392.613892 1391.264771 1389.647217 1387.350708 1385.144409 1383.042725 1381.078735 1379.988403 1379.289673 1378.866211 1378.144287 1377.44812 1377.203857 1376.651489 1375.128662 1373.337036 1371.307983 1371.217896 1373.291016 1374.38916 1373.393311 1371.083862 1368.412231 1366.035645 1364.698486 1364.819336 1364.15332 1363.897095 1364.212891 1362.647827 1360.407593 1363.382568 1364.990601 1362.438599 1358.508545 1353.914795 1353.232666 1351.347412 1348.613403 1347.454346 1346.788574 1345.056152 1344.78894 1343.416748 1343.31604 1342.635254 1341.615845 1340.350464 1340.11731 1342.036377 1340.744263 1345.508057 1350.187134 1354.018311 1355.365845 1355.403809 1353.683105 1348.367798 1346.650635 1352.062622 1355.503296 1354.816284 1350.745605 1343.884155 1341.877686 1351.790771 1354.893433 1353.99292 1350.451294 1345.962036 1343.562988 1329.807251 1337.353027 1341.827026 1341.758789 1340.017212 1335.102783 1328.61438 1328.675049 1338.215576 1344.289917 1350.407715 1349.251953 1343.313232 1342.039551 1352.721924 1353.705444 1349.216431 1347.474976 1350.052856 1352.606201 1352.344727 1343.570435 1331.374023 1319.151855 1309.634888 +1588.651489 1600.755371 1609.547852 1611.577637 1612.638794 1611.639282 1611.90564 1613.849976 1617.026489 1619.172974 1623.656006 1629.701172 1631.504639 1631.35376 1632.450562 1632.828735 1636.788208 1640.543091 1644.797729 1653.001221 1666.282471 1676.016968 1684.173584 1695.636353 1710.610962 1722.510498 1730.394287 1733.859375 1734.278687 1735.310791 1736.968262 1738.942749 1738.705688 1735.745117 1733.647827 1734.84021 1735.832764 1734.19812 1731.744385 1734.113281 1737.002197 1739.681519 1741.942749 1744.175049 1746.880127 1747.833374 1746.813843 1742.890381 1733.496826 1722.978027 1712.789307 1702.891235 1693.500244 1692.531128 1690.1604 1688.606445 1684.937378 1681.417358 1690.289062 1702.806885 1713.937866 1722.477295 1722.953247 1717.387939 1707.666504 1697.077026 1688.971558 1700.51355 1710.987671 1716.444336 1721.700928 1717.620239 1712.642944 1709.217163 1698.470581 1684.08667 1670.418945 1663.443481 1656.019287 1654.226318 1659.351562 1670.560913 1676.093628 1683.321411 1689.100098 1694.92395 1698.306152 1698.712769 1695.594116 1683.966919 1677.514404 1671.557373 1665.785522 1659.134155 1651.462036 1670.309937 1677.731934 1681.834961 1678.541626 1674.445312 1673.438965 1672.818237 1672.61438 1675.799805 1679.157104 1683.493042 1687.909912 1686.537842 1676.822388 1683.694458 1696.044312 1701.886108 1701.348022 1700.895996 1701.665771 1704.998047 1707.5177 1709.978149 1709.681885 1706.363525 1700.049316 1693.901001 1687.004395 1680.327271 1672.641724 1663.044922 1655.101685 1646.1521 1632.088013 1625.09082 1624.209106 1628.025391 1628.803223 1626.315918 1624.975952 1626.744629 1627.481812 1627.617798 1627.505371 1626.076172 1622.317139 1623.538208 1622.774048 1620.177734 1612.313599 1607.588623 1619.341675 1624.981323 1628.535034 1633.50061 1633.23877 1628.258545 1623.87561 1624.875244 1624.441406 1623.333374 1620.19165 1616.86084 1614.106567 1610.873047 1604.534302 1596.901855 1597.280762 1592.903687 1585.497925 1571.90686 1576.932251 1585.776245 1582.038086 1571.211426 1563.813843 1552.446411 1546.134888 1541.725098 1536.563232 1531.569946 1526.759155 1519.080933 1511.328369 1504.986328 1501.161499 1505.270874 1509.094727 1511.510864 1514.873779 1518.411743 1521.926147 1524.279053 1528.568359 1533.044922 1534.866577 1535.923584 1538.034424 1543.171631 1547.450928 1552.418457 1561.932983 1566.590698 1572.827515 1579.570312 1586.666626 1592.734131 1599.270264 1606.690796 1612.553101 1617.901245 1626.413574 1635.964233 1644.994995 1649.325439 1649.578857 1649.25061 1647.474487 1639.059692 1633.291138 1628.563843 1620.835938 1614.556885 1609.310303 1605.025513 1600.915649 1596.896606 1594.021606 1592.034668 1592.19165 1593.374878 1594.105347 1596.931885 1602.586182 1605.383911 1602.612427 1597.099365 1603.331543 1615.620605 1625.002686 1631.572876 1634.509521 1637.135254 1632.447998 1616.85083 1607.718872 1601.142456 1594.772705 1586.979736 1580.40271 1574.504395 1566.007202 1560.570801 1555.201172 1547.367432 1547.739502 1547.144409 1549.388672 1562.490112 1565.722046 1565.930664 1562.963257 1557.02124 1548.990967 1546.995605 1546.666016 1547.624512 1550.417969 1554.084595 1557.582275 1559.686401 1562.607056 1565.131592 1567.912598 1569.646973 1570.757935 1571.363647 1574.441284 1582.119629 1587.069092 1590.954102 1594.631226 1597.251343 1598.450684 1599.335571 1599.388428 1602.428223 1606.461182 1611.362915 1619.333618 1625.859131 1631.696899 1635.242188 1639.655762 1646.006592 1652.595337 1658.093262 1663.242432 1671.09668 1674.895752 1679.06189 1682.54895 1684.206665 1685.276611 1677.473022 1661.553345 1650.096191 1647.808472 1635.404419 1630.862183 1625.207275 1617.047241 1609.709229 1609.222168 1616.537842 1623.739624 1634.001831 1643.219482 1652.307495 1660.360596 1660.841064 1658.352295 1650.276978 1643.560791 1638.455933 1632.023438 1625.855591 1621.717651 1621.428467 1621.99292 1627.49939 1630.881348 1642.808228 1650.534668 1650.029175 1643.580322 1630.866821 1619.824829 1621.661621 1625.383789 1627.335205 1626.677856 1624.374023 1613.181641 1601.38147 1589.611938 1578.128296 1571.057251 1575.41394 1576.173584 1575.204346 1568.981323 1560.542236 1552.933228 1547.689575 1540.727051 1534.450562 1528.955444 1522.746094 1512.949463 1502.564819 1499.079346 1506.797119 1514.372925 1519.546997 1525.169556 1531.644897 1539.10022 1550.395508 1559.185059 1567.029419 1571.902222 1575.412598 1580.810059 1591.650024 1602.070068 1610.495117 1613.358887 1610.452148 1604.882568 1601.243896 1599.157837 1593.234497 1584.939087 1579.923462 1573.148682 1566.187134 1559.885498 1554.753662 1546.070557 1533.115356 1526.045166 1520.623535 1512.611084 1509.03418 1506.634521 1502.466797 1499.768921 1501.120361 1503.932739 1505.437622 1503.746094 1499.303467 1495.703979 1495.094849 1490.866211 1481.708618 1473.581055 1478.697021 1487.564819 1501.604736 1511.144531 1514.924683 1515.59436 1515.359985 1514.192261 1513.062134 1509.272583 1506.074951 1501.357788 1488.931519 1481.641724 1477.006958 1467.88147 1465.921997 1463.963867 1456.389648 1447.605469 1438.723633 1432.052002 1422.293701 1410.769897 1394.150391 1371.155273 1357.154297 1344.50415 1336.796387 1341.488647 1358.381104 1365.499756 1361.916992 1352.46936 1366.512695 1377.387573 1382.423462 1390.951416 1394.33252 1394.648071 1405.762817 1401.866943 1398.441895 1401.128296 1403.025024 1400.304443 1401.059692 1406.872192 1415.122314 1419.065796 1418.750732 1418.758423 1425.765991 1430.784058 1431.96814 1435.30896 1441.223633 1450.343628 1459.484375 1465.841919 1470.910889 1475.71936 1478.011475 1477.863525 1475.175903 1472.779297 1471.055054 1470.717773 1470.249634 1469.098633 1468.180298 1467.516235 1467.66333 1468.313477 1468.391968 1467.704224 1466.257568 1464.059937 1461.920898 1461.115356 1459.271973 1456.552246 1453.062134 1445.444824 1436.726196 1428.96814 1425.939697 1423.860107 1421.627441 1419.598022 1418.241455 1417.227783 1416.533447 1415.875122 1414.890503 1413.77478 1411.530029 1408.902344 1406.651978 1405.351562 1404.897949 1404.332275 1403.93811 1403.499512 1402.50061 1400.966797 1398.767944 1396.415771 1394.25 1392.935181 1392.320801 1392.302612 1391.811768 1390.949951 1388.904419 1386.0802 1383.333984 1380.080322 1378.26123 1377.648315 1377.205078 1377.187744 1376.88147 1376.634155 1376.279175 1375.794189 1374.603394 1372.144287 1367.778442 1365.127686 1364.915405 1364.506958 1364.05957 1363.954468 1364.03064 1363.571167 1362.629517 1362.545898 1362.64624 1362.601074 1361.53186 1359.204712 1354.050537 1353.829224 1354.073242 1354.34021 1353.456909 1351.643921 1350.578247 1349.024902 1348.786499 1348.740845 1348.022461 1346.855835 1345.837646 1345.328735 1344.991211 1344.119263 1343.579834 1342.6427 1339.996094 1338.364258 1338.680054 1341.376587 1343.390869 1345.71582 1346.80249 1345.950806 1343.824707 1340.960449 1340.16687 1345.28833 1349.961426 1349.969604 1346.32251 1341.614136 1336.596313 1341.991821 1345.841431 1346.310669 1342.630737 1341.373413 1338.008789 1328.522827 1331.071045 1334.893433 1334.532837 1332.735718 1328.581177 1325.345459 1325.81311 1330.06958 1334.527588 1337.542358 1337.239014 1331.273438 1334.311157 1339.456299 1341.010254 1336.775391 1334.421021 1337.109497 1341.215088 1344.638184 1345.260498 1336.672119 1325.893188 1315.074463 +1585.710205 1592.888062 1597.844482 1599.427856 1599.032837 1599.952026 1606.560791 1610.001221 1619.647949 1626.999756 1633.317505 1636.876953 1638.630737 1637.820312 1640.66626 1643.080688 1644.010254 1645.348511 1646.469849 1652.598022 1661.963989 1673.108276 1681.212646 1690.663086 1703.938354 1715.954468 1722.823242 1727.359619 1729.951782 1732.276245 1737.11084 1742.086548 1744.25354 1742.689087 1740.341553 1739.0448 1738.342896 1737.157715 1736.639893 1738.197388 1740.868652 1743.226562 1745.998779 1749.121338 1751.116577 1751.219849 1747.945312 1741.210205 1730.704346 1720.55896 1706.471558 1706.202148 1703.78772 1700.266724 1701.022095 1699.835083 1696.160278 1683.704834 1692.972168 1706.374023 1717.970215 1730.073364 1723.168945 1715.151123 1705.774658 1694.648193 1698.729492 1710.727295 1717.751221 1721.879272 1719.992188 1713.622437 1707.641602 1700.630127 1691.751465 1681.310913 1667.856812 1659.099365 1657.013672 1664.517456 1669.40332 1675.375122 1679.941772 1686.338379 1692.970459 1697.828491 1699.881348 1699.503906 1696.12854 1687.836426 1680.557495 1674.30835 1668.101318 1660.88855 1654.26001 1672.523682 1682.969727 1686.5802 1685.743896 1680.894775 1677.956299 1677.586914 1677.920166 1679.074707 1681.637817 1693.70105 1698.312134 1697.610718 1694.956177 1694.023804 1700.0979 1707.669556 1706.168091 1700.013672 1694.853394 1696.944702 1702.667603 1707.524902 1709.140625 1704.175415 1698.350952 1691.161011 1684.09375 1674.963989 1666.885376 1658.263916 1650.957886 1641.447754 1630.025391 1624.785522 1630.780273 1635.037476 1636.154053 1636.021851 1633.182739 1631.894653 1632.187744 1632.654541 1632.634521 1631.715332 1629.748779 1628.699585 1627.913696 1626.087646 1621.589966 1611.713379 1624.147095 1628.917847 1633.496338 1637.282959 1637.356323 1636.220337 1633.511841 1633.770996 1633.089844 1632.395264 1629.76416 1626.509521 1622.195679 1617.949707 1613.737793 1612.272705 1609.929932 1603.555054 1594.849976 1585.001953 1582.843506 1590.569458 1587.330933 1576.181152 1565.357788 1555.201904 1547.473633 1543.742432 1539.297852 1535.109009 1530.209106 1524.949463 1514.579956 1506.427368 1501.363403 1508.857056 1510.795776 1511.19165 1511.833374 1516.089722 1521.009155 1524.343872 1527.519653 1531.247803 1533.838623 1535.519897 1536.187988 1539.115845 1544.826416 1547.74939 1555.949341 1563.93811 1570.641602 1578.606079 1586.718262 1592.417969 1597.960083 1606.130249 1612.391724 1619.438599 1625.146729 1630.671875 1638.167114 1645.172119 1648.517212 1647.932861 1644.2677 1635.666504 1629.34668 1624.168579 1615.872559 1609.039551 1605.446655 1601.878784 1598.46228 1596.297974 1595.105713 1594.341797 1595.967163 1597.601196 1596.142334 1598.863525 1608.774658 1609.803101 1606.039551 1598.170898 1610.340332 1621.22937 1627.821167 1633.952393 1636.731934 1636.150269 1625.539551 1613.147095 1603.447754 1595.312012 1588.509399 1582.496704 1575.761719 1565.580933 1559.730225 1559.737305 1558.738892 1557.342896 1555.89563 1552.231323 1555.845459 1565.510742 1570.013306 1570.118774 1567.404907 1563.462524 1555.197266 1548.530396 1547.720947 1547.956299 1548.645264 1551.331177 1554.931885 1557.962036 1560.527466 1564.816528 1569.901611 1571.53125 1571.241699 1572.623169 1575.351807 1578.810547 1583.122192 1584.497559 1587.343018 1592.764526 1595.031006 1595.826294 1599.052124 1607.803955 1614.976318 1620.798096 1628.067017 1635.068726 1644.229004 1649.40686 1649.231323 1649.292847 1653.432617 1656.449097 1659.664307 1666.998047 1673.404785 1680.916504 1683.744751 1684.939087 1683.414917 1674.291992 1661.731079 1647.175781 1637.193481 1628.474731 1619.917725 1616.265991 1608.876709 1601.432617 1603.603271 1614.867188 1621.690552 1631.915161 1640.817993 1650.03125 1659.704346 1660.827271 1658.235596 1652.52002 1647.089844 1640.621826 1633.99353 1630.119385 1626.988892 1627.978149 1633.064819 1639.211914 1644.966309 1656.02417 1661.820435 1662.002686 1657.00293 1648.517578 1638.619385 1637.733032 1637.422119 1635.681396 1628.591431 1623.285278 1607.572632 1597.578735 1583.171753 1573.130249 1562.943481 1571.484253 1575.966675 1575.643311 1571.369019 1562.375732 1556.660889 1551.840942 1545.20166 1536.32373 1530.395508 1523.484985 1514.738525 1504.782959 1497.751343 1502.892578 1510.007446 1514.95166 1519.326904 1524.45874 1531.90625 1540.666016 1548.86731 1556.633545 1562.055298 1565.615601 1569.550049 1575.386963 1583.333496 1592.675781 1602.005249 1609.974854 1610.466064 1605.661621 1603.371948 1602.243774 1599.325439 1589.795288 1580.79834 1572.880737 1565.821655 1558.837891 1550.081055 1538.199219 1533.371704 1528.809448 1520.367065 1511.284546 1507.614258 1499.078491 1490.162964 1487.002197 1488.797974 1489.575562 1487.324219 1482.927612 1480.41333 1482.467407 1483.665161 1477.163574 1467.602173 1468.577515 1479.205811 1497.029663 1505.260498 1510.714233 1513.610474 1515.756958 1516.020386 1515.949951 1514.514404 1511.269653 1504.830078 1496.666382 1492.671265 1488.436279 1482.822266 1481.412354 1475.758057 1469.618042 1464.600342 1450.508057 1435.77832 1422.589355 1407.567627 1387.337891 1366.202759 1351.382812 1338.419189 1338.673706 1348.8479 1367.33313 1380.283325 1384.139771 1374.508667 1361.962769 1363.655029 1365.76416 1371.402588 1375.016968 1380.755127 1390.704346 1391.611572 1388.310181 1389.061157 1392.65918 1390.390259 1397.322388 1404.847168 1409.842407 1412.103271 1410.50293 1414.918213 1422.028076 1425.483643 1425.675781 1431.492798 1438.994019 1451.124146 1460.870483 1469.140991 1476.407593 1483.006958 1488.208984 1486.111694 1477.900024 1474.336426 1472.244995 1471.960327 1471.641113 1471.282227 1470.934326 1470.64856 1471.463867 1473.755737 1476.571899 1479.792847 1480.194214 1477.895752 1471.783325 1467.941895 1466.215576 1463.317749 1456.162476 1448.263306 1439.178467 1429.818481 1426.316162 1424.22937 1421.726807 1419.425659 1417.4021 1416.566162 1416.216797 1415.955566 1415.734863 1414.925293 1411.833374 1408.361694 1404.727173 1402.764893 1402.307495 1402.079102 1401.676514 1401.328247 1400.399536 1398.679565 1396.528076 1393.747314 1391.954834 1390.671143 1390.475342 1390.452637 1390.16626 1389.301147 1387.476929 1385.43335 1382.817993 1379.078125 1377.762573 1377.609863 1377.52124 1377.413818 1377.036255 1376.507935 1376.213379 1376.04834 1375.69397 1374.256348 1371.252441 1367.781372 1365.969727 1364.787842 1364.212646 1364.283447 1364.777466 1365.144165 1365.382324 1365.741333 1365.193848 1363.273193 1361.319824 1358.135986 1355.269775 1353.357178 1352.800903 1352.441162 1352.221436 1352.150024 1351.632446 1350.719604 1350.987671 1351.162598 1350.776489 1350.067993 1349.188843 1348.679932 1347.539551 1345.652588 1344.279663 1343.201172 1342.958496 1342.077759 1338.411621 1336.1427 1337.350098 1338.934692 1339.307983 1338.592407 1337.737061 1336.699463 1336.816772 1338.330078 1340.008423 1340.89209 1339.993164 1335.669312 1328.89563 1330.230957 1332.782349 1332.385376 1330.458618 1330.008423 1329.913452 1326.557129 1326.537109 1328.626587 1327.877441 1326.236816 1324.001587 1321.644165 1317.871704 1318.930908 1319.754272 1320.653809 1321.495972 1319.703979 1324.458618 1328.416504 1328.577881 1326.954834 1323.234375 1325.608643 1330.753662 1335.767334 1340.032715 1336.942871 1330.438477 1319.800659 +1571.456299 1573.528198 1578.635376 1593.359375 1603.260132 1611.438232 1618.772095 1624.415771 1630.440918 1638.70813 1644.969238 1648.447021 1649.356323 1650.062744 1652.11499 1654.071899 1653.374634 1654.210693 1656.864868 1658.393433 1665.800903 1672.73877 1681.093506 1689.216309 1697.930908 1706.226685 1715.692017 1719.635498 1724.872437 1729.876587 1735.694092 1741.917969 1745.642822 1746.614502 1744.229736 1742.366211 1741.054565 1741.317993 1740.987549 1742.746826 1745.045166 1748.453369 1752.40625 1755.452393 1756.463013 1754.786133 1748.55249 1739.533081 1729.913086 1720.299805 1718.687256 1719.538818 1712.594849 1708.507446 1709.791992 1708.064697 1702.898193 1693.682129 1694.550415 1710.917603 1720.994019 1733.23999 1721.747681 1711.183228 1704.315308 1701.191528 1706.079224 1714.456421 1721.239258 1720.383179 1714.59436 1707.699585 1701.440918 1694.130371 1686.904175 1674.645264 1666.574707 1661.918335 1665.36438 1672.640503 1678.11084 1681.661133 1684.016602 1689.238403 1695.031738 1699.635254 1701.961792 1701.157715 1697.000366 1690.67688 1682.943481 1676.550781 1670.357666 1662.974609 1657.264771 1670.399658 1683.486938 1690.29187 1691.606079 1685.046997 1681.98645 1682.128784 1682.087646 1682.067261 1684.758789 1696.670532 1702.139282 1705.756348 1705.019653 1703.723022 1704.018555 1706.321777 1704.587769 1698.074707 1694.080078 1692.318481 1698.809692 1703.30896 1704.216187 1698.384888 1693.420776 1683.475586 1674.959839 1666.904663 1658.601196 1651.83252 1644.397217 1632.254517 1627.312744 1632.132324 1637.750122 1642.117798 1645.751709 1646.663208 1643.976562 1640.662109 1640.73291 1641.803467 1642.376221 1640.70813 1635.521362 1632.921875 1632.813599 1631.229492 1628.033691 1621.356812 1624.052368 1631.174805 1635.635254 1638.5896 1638.8396 1639.155029 1638.762085 1638.800293 1638.62085 1638.334351 1637.375854 1635.830933 1632.247192 1625.720459 1623.004517 1621.666992 1618.690674 1613.334717 1605.342651 1593.014404 1588.458862 1598.601929 1591.281494 1577.702148 1569.047607 1559.606689 1551.501343 1546.442627 1542.063477 1537.64563 1531.797852 1526.049683 1516.379639 1506.909912 1504.637207 1513.425537 1513.952148 1513.788208 1513.712524 1516.231934 1520.89624 1523.640381 1526.203979 1530.900635 1535.117676 1537.900024 1540.819336 1543.206177 1545.986084 1547.552856 1547.379517 1554.060059 1563.240479 1573.540649 1584.526733 1589.790771 1593.723511 1599.947632 1610.102173 1614.408325 1617.926025 1620.385254 1628.03479 1638.713501 1644.477905 1644.865723 1641.032104 1635.196899 1625.721436 1619.260864 1609.176147 1606.545532 1602.845459 1598.866821 1596.615356 1596.480469 1596.70752 1597.55542 1598.686279 1601.312988 1598.633057 1603.263428 1612.580444 1613.207397 1610.631714 1606.33728 1610.587158 1621.567017 1628.519409 1635.124756 1635.284668 1629.774902 1623.714966 1610.253052 1600.220947 1592.356323 1584.677124 1578.901611 1571.875122 1559.710327 1561.965332 1563.547974 1564.360596 1564.604248 1563.564453 1559.279053 1559.964111 1568.309448 1574.526001 1574.497314 1571.027466 1566.984741 1562.197021 1551.900146 1548.375488 1548.493042 1549.167847 1551.434937 1552.596558 1556.598511 1560.78833 1569.370605 1575.514648 1578.839111 1584.445923 1588.539185 1588.015015 1586.009521 1586.315308 1588.133301 1589.137695 1592.64624 1595.258179 1598.634888 1608.5177 1623.429565 1629.521606 1634.363159 1642.490356 1647.964111 1655.755371 1658.255859 1655.12085 1654.667725 1656.837524 1660.171753 1663.703003 1667.421143 1672.553589 1682.942505 1686.026855 1686.185669 1684.331055 1671.967651 1659.723022 1646.677856 1634.088013 1623.188354 1611.790649 1607.279297 1603.208252 1599.139771 1601.337891 1610.599243 1619.200195 1628.940552 1637.510498 1646.24353 1655.776489 1658.567505 1656.105103 1652.352661 1648.807129 1643.875854 1639.352661 1633.48877 1631.293945 1633.786743 1643.26062 1653.182373 1659.454102 1662.884399 1662.42334 1660.812744 1654.352173 1649.590332 1648.240356 1639.261353 1633.698608 1626.812744 1620.308228 1612.586792 1602.582153 1591.264771 1573.707642 1565.794312 1558.676392 1562.968994 1570.98645 1573.466675 1570.53833 1563.976807 1558.576294 1553.985229 1548.897095 1538.972046 1532.040161 1525.030273 1517.482178 1508.206665 1499.426147 1497.948975 1504.567505 1509.643555 1513.657593 1517.959595 1523.208496 1529.249268 1535.893311 1541.173706 1547.584961 1553.475708 1559.554321 1564.847168 1570.638916 1577.427612 1583.322876 1591.972168 1596.843994 1602.200562 1604.178711 1604.037842 1603.77417 1601.19812 1591.83252 1581.474487 1572.64502 1565.036987 1557.133057 1549.305176 1541.560669 1534.673706 1527.712402 1522.949951 1518.282104 1510.473877 1500.235474 1486.01123 1480.320679 1474.198853 1473.58252 1470.878784 1466.31665 1471.688965 1475.060425 1473.135986 1467.169312 1462.270264 1468.635376 1485.025635 1498.012329 1502.905151 1506.433594 1513.182007 1516.420288 1516.658936 1516.48291 1515.107788 1512.110596 1505.585938 1503.737061 1502.096436 1500.701782 1493.439575 1485.494263 1475.532715 1465.141724 1448.255371 1434.978149 1423.200439 1402.994629 1382.03479 1359.80481 1343.268311 1337.426392 1339.601562 1356.477295 1374.856445 1391.489136 1398.43689 1389.569702 1379.41687 1379.298584 1380.77063 1380.766968 1377.268921 1375.314331 1377.736816 1379.541138 1378.62207 1380.118896 1380.462158 1385.458008 1393.200317 1399.00061 1402.733765 1402.915894 1402.622314 1413.834473 1417.907227 1420.083984 1423.607544 1428.877441 1438.978271 1452.116333 1461.521362 1471.493652 1481.787598 1489.627808 1490.887695 1489.275024 1481.137329 1475.253418 1473.89856 1473.850586 1473.858521 1473.956055 1473.80603 1473.98291 1476.55188 1485.449097 1489.519287 1486.786255 1482.429199 1478.303223 1474.456421 1469.509033 1466.811157 1462.565186 1453.855713 1445.908203 1437.048706 1429.954834 1425.835693 1423.886108 1421.654907 1418.812866 1415.594604 1414.904297 1414.743042 1414.724487 1415.099487 1414.870728 1411.679443 1408.435791 1404.501953 1402.63147 1401.919556 1401.014282 1401.031616 1400.393188 1399.425903 1397.897339 1395.21106 1391.755371 1389.711792 1389.595581 1389.503174 1389.40271 1389.101807 1388.423096 1387.270996 1385.880493 1384.219971 1382.791138 1382.55603 1382.625854 1382.320435 1381.858765 1381.518311 1380.473755 1378.964478 1379.286865 1379.244507 1379.214966 1378.414673 1376.198486 1373.827271 1372.505127 1371.087402 1370.855469 1370.989014 1371.043091 1370.237549 1369.260986 1367.900269 1366.059326 1363.081665 1359.141724 1355.205688 1354.887695 1355.92395 1356.491089 1357.056885 1357.217407 1354.099365 1353.890747 1354.093018 1354.159302 1353.638062 1353.250244 1352.891235 1352.529297 1351.324097 1347.216797 1345.044067 1345.493286 1345.576538 1344.297974 1342.144775 1338.711792 1335.296021 1335.169678 1334.97522 1334.147583 1333.703979 1332.888672 1332.219849 1332.601685 1332.682373 1331.197144 1330.447388 1330.210571 1327.997437 1326.171997 1325.708374 1324.878052 1324.122803 1323.347168 1321.511108 1320.785522 1320.696655 1318.227173 1319.25 1319.521484 1319.214478 1318.828369 1317.160034 1312.338623 1312.074097 1311.798462 1310.960449 1311.016846 1312.530518 1314.4021 1315.005249 1315.479126 1314.333008 1314.783813 1318.859619 1324.107056 1329.703735 1332.221558 1331.937134 1322.508423 +1559.775024 1574.921265 1589.934326 1610.829468 1618.833252 1626.951416 1632.175415 1636.460938 1643.527832 1649.888062 1653.688599 1656.227661 1658.855469 1661.283325 1664.473267 1665.802856 1664.901367 1664.814209 1666.850708 1672.651001 1679.569824 1686.503296 1691.603027 1698.262207 1707.528442 1711.754761 1718.051758 1721.904541 1727.293945 1730.918457 1732.544189 1742.077393 1746.029785 1748.915527 1748.230225 1746.095093 1744.201172 1743.751099 1745.078247 1747.985718 1751.107422 1755.038696 1757.708984 1759.051758 1759.002808 1757.24707 1749.639282 1741.702881 1735.109619 1732.261353 1732.916138 1729.637817 1721.475342 1716.865601 1718.25769 1717.405273 1712.428467 1700.362793 1696.481689 1713.106323 1721.474487 1723.111328 1717.415161 1707.988281 1707.30603 1708.798584 1710.17334 1716.234497 1720.079224 1715.824951 1708.996826 1702.928589 1696.442871 1688.034668 1680.357666 1669.913696 1667.067017 1666.911499 1670.616943 1680.651978 1686.724243 1690.906006 1692.970947 1693.366577 1696.722656 1702.546021 1704.786377 1704.262207 1700.442261 1694.543335 1684.769775 1677.997314 1672.002441 1665.980103 1661.498047 1672.75 1684.126709 1694.116333 1697.344238 1694.524048 1692.099487 1691.663696 1690.847534 1688.949951 1690.943359 1698.37915 1704.447998 1710.384888 1714.53772 1710.555786 1707.678589 1704.442871 1699.965332 1694.271851 1687.605591 1685.996948 1695.070679 1698.928101 1698.139526 1692.832153 1685.531128 1676.670044 1668.053833 1660.15625 1652.100342 1644.133667 1634.13501 1630.840088 1635.159302 1639.956177 1644.550659 1649.436768 1653.039429 1653.948486 1653.15564 1651.780029 1652.126099 1654.03772 1653.775269 1652.438477 1647.831177 1643.568848 1639.96875 1637.335327 1636.845703 1636.179077 1633.172119 1633.307251 1636.439209 1638.644165 1639.463867 1639.425781 1639.776123 1641.124023 1642.385498 1642.918701 1642.543823 1641.826416 1639.894409 1634.635376 1630.778809 1628.611328 1625.629761 1621.407959 1613.91687 1603.797852 1602.477295 1603.136597 1597.915649 1587.892334 1579.467041 1569.550781 1560.171387 1549.675903 1544.117188 1538.603516 1532.14917 1524.967285 1516.716431 1504.288208 1511.024658 1514.570679 1515.778198 1516.597656 1517.295044 1518.66394 1521.211426 1524.082153 1527.053833 1531.192139 1536.110474 1540.802979 1546.64917 1549.414917 1550.217407 1550.561279 1550.434082 1551.557495 1560.381104 1567.40918 1577.369507 1585.54248 1589.605591 1595.671875 1603.231934 1608.202759 1610.104126 1611.098877 1624.167847 1636.071289 1640.671509 1641.291626 1638.439819 1632.286743 1622.07605 1617.644775 1611.708984 1607.615112 1602.831665 1597.466064 1596.55249 1597.425659 1600.198364 1602.91333 1605.393066 1608.15332 1606.755859 1608.692749 1615.703369 1617.354126 1613.917114 1608.067261 1612.628296 1620.072998 1625.231445 1629.468628 1624.320435 1622.005859 1618.013306 1607.264282 1598.976196 1589.038574 1581.739258 1574.230103 1569.049561 1566.061646 1567.417603 1568.797852 1569.674805 1569.287354 1566.312866 1562.040649 1561.307007 1571.261108 1577.226074 1577.351074 1574.376587 1569.9729 1564.652588 1558.102051 1554.64856 1563.457397 1566.688843 1564.361938 1558.463989 1555.70752 1561.795898 1576.540894 1588.160889 1591.736206 1597.195679 1600.166626 1600.28186 1597.469971 1596.191406 1596.224731 1594.543945 1594.972534 1597.102295 1600.519165 1614.359009 1626.996582 1637.325317 1645.538696 1650.42981 1654.584106 1660.327393 1662.722412 1659.817993 1659.61145 1660.071655 1665.784302 1670.861938 1672.781372 1679.041016 1686.01709 1686.158081 1686.021362 1685.317017 1675.786011 1665.941528 1656.405762 1642.408813 1629.301514 1617.250122 1608.237915 1599.916992 1595.230347 1598.388184 1603.602539 1614.321655 1625.494873 1635.265991 1644.023071 1650.958496 1654.509399 1652.282837 1649.694214 1647.606079 1648.104492 1647.285645 1634.96875 1635.909546 1642.525635 1655.653076 1663.474365 1665.611572 1663.274658 1659.078125 1651.72522 1645.412476 1639.116455 1632.12146 1628.467651 1622.884033 1616.516235 1611.650391 1601.5979 1592.480103 1580.302979 1567.720459 1558.408691 1550.480957 1556.711914 1561.81665 1567.24231 1567.680298 1564.526733 1559.802246 1555.547852 1550.6427 1541.834839 1534.080811 1527.883667 1520.202515 1511.500244 1501.789917 1493.774414 1499.516479 1503.841431 1507.796875 1511.274658 1514.802246 1519.718506 1525.777466 1530.305298 1534.223999 1539.469482 1545.824951 1553.053223 1559.570312 1564.499023 1573.104492 1577.876465 1581.0354 1585.385254 1593.944702 1601.125122 1604.230103 1603.312866 1601.497192 1591.793579 1581.447021 1571.243042 1563.07605 1556.380371 1550.824463 1542.592041 1535.083984 1530.628052 1526.889282 1519.766602 1508.16748 1493.694702 1484.42395 1479.29541 1474.985474 1466.655518 1460.145508 1461.497925 1465.0448 1467.398315 1466.244019 1462.835205 1461.826416 1476.559204 1483.437866 1489.135986 1496.752441 1506.642456 1513.490479 1516.578003 1516.770874 1516.346802 1513.702393 1507.212524 1503.830688 1502.581055 1500.247559 1493.095825 1484.482666 1474.177246 1465.557251 1445.706299 1434.504639 1423.170898 1401.194824 1377.745483 1352.0448 1339.757446 1338.208374 1343.475342 1366.777222 1382.948608 1398.410767 1405.885132 1401.430542 1395.382568 1394.959717 1392.985962 1389.581543 1385.698242 1381.905029 1379.467651 1376.931396 1379.40625 1380.61438 1378.125732 1377.293457 1388.453491 1391.265503 1394.796021 1398.649902 1403.523193 1409.649536 1413.96582 1414.734985 1418.514648 1425.813232 1437.320923 1451.59314 1459.753784 1470.600464 1484.458862 1491.641357 1491.415649 1488.136719 1484.536499 1484.986206 1480.109863 1478.692993 1478.436157 1478.374146 1478.288086 1480.020386 1488.672241 1490.986572 1491.051758 1489.363403 1479.252441 1474.565308 1470.62793 1466.033325 1463.287842 1457.595093 1450.510254 1442.397339 1435.126465 1427.47644 1425.265259 1423.988159 1422.068604 1419.018311 1415.72229 1414.721802 1414.116455 1413.989502 1413.786255 1413.47998 1411.874878 1409.810547 1407.732666 1406.541992 1405.392334 1403.487305 1401.986084 1401.035156 1399.918945 1398.192749 1396.265137 1393.450684 1392.49939 1391.33728 1389.636108 1389.140991 1388.919189 1388.337036 1387.561157 1386.880615 1386.942993 1387.072632 1387.638916 1388.013672 1388.086304 1387.906494 1387.422729 1386.353027 1385.11145 1384.529907 1384.571655 1384.310547 1383.421387 1382.138428 1380.810181 1380.183594 1379.930542 1379.514038 1378.63208 1377.948608 1375.993042 1373.21106 1369.632812 1367.393921 1365.376099 1360.020386 1356.089478 1355.633789 1359.127563 1361.719604 1362.364136 1362.047607 1361.3927 1361.484009 1361.545532 1361.525635 1360.540283 1358.342285 1356.336182 1355.299072 1354.200806 1347.712524 1347.502563 1349.940918 1350.016235 1348.45813 1345.362427 1342.847534 1340.5354 1336.323486 1334.415161 1333.60498 1332.336548 1331.812134 1330.019775 1328.629883 1328.659302 1327.894165 1326.758057 1325.443237 1324.292358 1324.049683 1322.637329 1321.056274 1320.133911 1319.013306 1317.270142 1316.403076 1316.234253 1314.876953 1313.712769 1313.012451 1313.77771 1311.233032 1308.988525 1308.218994 1307.185547 1306.325195 1304.467041 1304.233032 1304.34082 1304.547607 1305.827271 1307.256836 1308.640137 1309.859985 1307.548828 1305.029175 1313.374634 1320.996948 1325.997925 1323.454834 +1566.281982 1580.209351 1597.019653 1614.839233 1622.827881 1630.416748 1639.222778 1647.951538 1654.185791 1659.235107 1663.724976 1670.700562 1673.660645 1677.738159 1679.605957 1678.36853 1677.271484 1677.118408 1679.662476 1686.189575 1694.198242 1703.668945 1710.085205 1715.756714 1722.710571 1725.154907 1725.177856 1729.613403 1734.477905 1737.182007 1740.77417 1744.697388 1749.735718 1752.894653 1754.125122 1752.774048 1751.020386 1752.144897 1755.297852 1756.425049 1757.30957 1759.379028 1760.967285 1761.95459 1761.432373 1758.372681 1752.770264 1745.431274 1745.155518 1744.069702 1740.945557 1736.442383 1728.609863 1721.089111 1723.641846 1723.590088 1722.382324 1711.526245 1705.662476 1714.356934 1720.904175 1722.031006 1718.548828 1718.527954 1716.51123 1715.505371 1714.677734 1715.065063 1713.915527 1710.171143 1704.261963 1698.386353 1691.045654 1681.475952 1675.204102 1671.853027 1670.942261 1671.334106 1680.856445 1689.137939 1695.729736 1699.353516 1700.364502 1700.855347 1703.766357 1706.681152 1708.298584 1707.790039 1703.44397 1695.525757 1684.038086 1678.870728 1673.53418 1669.269775 1668.325195 1677.123535 1685.011719 1695.072632 1698.935669 1701.532959 1703.314697 1703.291748 1700.820435 1697.95459 1697.343506 1701.367676 1705.928223 1712.557983 1721.088867 1719.768677 1711.134521 1705.412109 1699.448975 1692.360229 1683.925171 1679.878418 1685.189453 1691.497314 1691.484009 1686.741089 1679.371704 1670.578125 1660.495483 1653.485107 1645.93042 1636.061523 1633.539795 1638.14624 1642.322632 1646.86499 1652.893433 1658.546021 1660.669312 1661.49707 1661.412964 1660.853882 1661.457031 1662.462036 1662.322021 1661.571045 1659.714111 1654.136963 1647.90271 1644.143066 1644.091797 1641.747803 1638.21936 1637.338135 1636.880615 1636.991821 1638.514404 1638.798706 1639.601196 1641.358154 1645.075317 1646.658325 1647.675049 1647.480103 1647.539429 1644.949951 1639.255737 1634.810913 1630.812134 1625.714844 1619.528687 1612.627563 1610.576172 1608.231689 1604.01709 1600.161621 1589.684448 1575.26001 1565.831421 1554.296753 1545.541748 1538.455688 1531.001343 1522.571167 1513.789185 1505.417969 1513.003662 1515.539307 1517.509399 1519.458252 1520.722046 1521.157959 1521.983398 1523.551758 1526.279053 1530.634033 1536.634644 1542.450439 1549.357544 1552.764893 1554.827271 1555.687012 1556.372314 1558.600098 1564.009399 1572.665527 1576.861084 1581.487671 1584.353271 1592.779785 1599.337891 1601.791748 1601.293091 1609.298706 1620.199097 1631.680664 1637.20813 1638.995728 1637.096313 1632.078125 1626.425293 1621.046143 1615.37915 1610.819824 1604.517822 1597.884155 1597.415405 1599.112549 1605.206177 1609.326904 1611.823853 1615.318481 1613.182617 1612.520264 1621.161743 1622.789062 1620.756714 1613.243164 1613.769531 1616.259888 1619.146118 1617.590088 1613.866211 1608.625732 1606.858765 1603.405884 1600.112183 1588.437134 1580.062256 1573.828003 1570.233032 1572.998291 1572.437744 1575.279053 1576.974609 1575.143188 1571.514038 1565.78894 1565.870361 1574.453735 1581.102051 1582.435425 1577.915405 1572.787476 1566.946045 1560.857666 1562.080444 1572.249146 1576.133423 1573.405518 1565.382812 1558.425293 1560.481323 1577.697876 1590.345093 1600.781006 1604.999268 1606.634399 1607.560669 1608.326416 1606.003174 1602.910156 1599.525757 1597.504761 1600.722046 1603.541748 1611.101807 1619.31189 1632.300171 1643.557129 1650.046631 1655.728638 1660.826904 1667.872925 1668.156982 1667.148682 1666.870728 1671.156738 1675.481079 1679.268677 1684.314331 1685.682861 1684.367676 1680.559448 1679.28418 1673.250854 1666.338135 1659.084351 1648.488647 1637.418945 1629.306274 1614.140381 1600.036987 1589.349609 1592.607666 1601.42688 1610.834717 1619.731079 1631.342773 1641.832642 1648.849854 1650.879517 1648.603027 1646.853271 1644.234741 1648.980835 1649.798584 1644.489868 1643.959229 1649.675049 1662.332642 1670.171631 1668.922852 1662.189941 1654.541992 1644.986816 1639.664307 1631.930908 1624.715942 1619.039307 1612.297607 1605.149414 1594.562622 1587.143066 1580.766724 1572.054688 1564.271362 1552.937988 1546.999756 1552.099243 1557.446655 1562.534424 1564.791016 1564.202393 1560.977905 1556.601196 1551.864014 1544.986328 1537.095581 1530.847778 1523.210083 1514.746704 1503.917969 1493.806885 1494.456421 1498.62854 1502.653076 1505.522705 1508.46875 1512.284546 1517.062378 1521.251831 1524.188965 1528.005737 1532.610474 1537.702759 1544.797485 1550.682251 1555.178345 1561.664429 1569.983643 1573.394775 1575.450684 1578.97583 1586.769653 1593.790771 1596.354126 1594.861694 1588.052124 1578.159546 1569.303223 1561.134033 1555.595337 1549.500122 1541.706543 1535.271729 1531.106689 1526.377686 1513.782593 1501.353149 1488.129272 1482.713135 1477.224487 1468.766602 1460.850952 1453.279297 1453.119141 1460.213013 1461.850342 1457.57605 1456.620361 1465.629517 1467.440674 1476.775146 1486.751099 1498.043701 1505.582764 1512.296997 1514.647217 1514.223389 1506.110596 1498.927979 1494.518555 1489.634155 1486.335571 1481.979492 1474.623413 1468.146484 1459.725464 1444.745972 1432.475464 1417.654541 1399.157715 1372.556763 1343.436035 1339.541504 1339.082642 1351.521973 1374.430908 1391.057007 1409.061401 1413.17688 1408.457153 1407.604248 1407.077148 1406.604858 1401.322632 1395.38501 1390.291504 1385.726562 1385.810913 1392.937866 1394.835449 1390.72937 1383.793213 1385.323975 1388.039062 1391.271484 1396.4198 1402.436035 1405.87207 1409.459473 1414.627075 1419.243164 1427.548096 1436.046509 1447.993896 1456.495972 1464.971191 1477.134644 1485.300537 1483.253662 1481.736572 1482.661987 1487.561768 1490.270996 1489.370483 1488.427979 1487.972778 1487.4729 1485.936157 1488.669556 1488.700928 1487.302002 1482.78125 1474.019043 1469.403564 1465.541382 1461.758179 1457.675171 1452.421631 1447.88855 1441.543091 1435.478149 1428.261475 1426.461304 1425.619629 1423.489502 1420.686523 1418.57373 1416.796387 1414.584229 1413.781128 1413.527832 1413.240356 1412.764648 1411.779541 1411.254272 1411.192749 1410.644165 1409.123413 1407.199463 1405.404663 1402.638306 1399.971069 1397.928589 1397.152466 1396.868286 1396.007202 1393.808105 1390.555786 1389.723145 1389.642944 1388.13623 1390.413696 1392.252686 1393.292969 1394.281372 1395.097412 1395.034668 1394.530884 1393.851685 1392.532715 1390.736572 1390.32373 1390.394165 1389.793701 1388.816895 1387.279419 1386.21936 1385.059448 1383.373291 1381.787231 1380.804321 1380.310547 1379.293335 1375.111816 1370.504639 1367.995239 1365.065063 1360.584839 1357.220459 1356.954834 1364.46936 1367.263916 1368.183594 1368.613892 1369.246704 1369.907471 1370.153442 1369.152222 1367.656616 1364.965332 1359.621094 1356.193237 1352.298706 1349.315063 1354.028809 1355.489502 1354.475952 1352.941772 1350.42041 1347.277832 1344.598267 1341.94043 1339.285767 1338.166992 1338.23645 1339.405029 1338.268799 1332.749512 1328.30249 1329.035889 1329.65332 1328.527466 1327.852417 1327.204346 1329.974731 1330.574707 1328.07373 1327.93811 1324.636963 1322.80127 1321.749756 1319.059814 1317.348877 1315.342773 1313.27063 1314.130859 1314.662598 1314.260986 1313.441162 1311.758545 1309.821167 1307.150146 1304.342041 1303.888672 1302.607422 1301.695801 1302.811279 1305.349243 1304.472046 1300.739014 1300.878906 1301.951782 1309.90979 1320.058472 +1557.504883 1576.61145 1592.633179 1608.523315 1619.665161 1626.343628 1636.704712 1647.676636 1656.812256 1662.640015 1670.162109 1674.511475 1682.875366 1691.14856 1694.797241 1694.030029 1691.293823 1694.198853 1701.453369 1709.00769 1713.032227 1716.969604 1722.334106 1730.811279 1734.685425 1734.32019 1732.57373 1734.296875 1740.297607 1745.172241 1748.285278 1754.908203 1756.184692 1757.334473 1758.085327 1757.897949 1756.956421 1758.290283 1759.831543 1761.172974 1762.40625 1763.648315 1764.698853 1765.11853 1764.813721 1763.073608 1756.706421 1753.343994 1751.922485 1750.071899 1746.52063 1741.225342 1733.602539 1728.872681 1728.30127 1728.523071 1726.228149 1719.776611 1709.970459 1720.587402 1726.415894 1728.44458 1726.766846 1724.820557 1722.713989 1720.296753 1718.049683 1716.144653 1712.232788 1707.712036 1701.44104 1694.181885 1687.192993 1680.805786 1681.953125 1681.66748 1676.51416 1674.761475 1688.220459 1698.363892 1703.114014 1706.092529 1707.394897 1708.470947 1710.169922 1711.851074 1712.475464 1711.297974 1705.771606 1693.890869 1685.317627 1679.809082 1675.603271 1671.373169 1673.788208 1680.497681 1687.112671 1694.220581 1700.890747 1706.317627 1709.441162 1710.167603 1707.713623 1704.595947 1702.011963 1702.237305 1705.060669 1709.700073 1714.068481 1711.512329 1706.517456 1701.301025 1697.15918 1690.272827 1682.612671 1674.343628 1672.130371 1677.788696 1679.388184 1677.463013 1672.359375 1662.526001 1653.865234 1647.552368 1642.246826 1638.470703 1641.337524 1645.505005 1650.347168 1656.449219 1661.912842 1666.027954 1668.839722 1669.967651 1669.480713 1668.465942 1667.838867 1667.622314 1667.862549 1667.861938 1667.098145 1662.972168 1656.99231 1653.494385 1650.682495 1647.137085 1643.980591 1641.17395 1637.35022 1626.410767 1632.931885 1634.621094 1635.286133 1637.731079 1642.546753 1647.342773 1650.188232 1655.587646 1656.987549 1653.317749 1648.594482 1641.789795 1634.879272 1629.169556 1624.649292 1621.436035 1616.855469 1612.414429 1607.928223 1603.231934 1595.890381 1580.885254 1568.688477 1556.874512 1545.701416 1536.836304 1527.959717 1518.999756 1508.021851 1509.135376 1513.939697 1516.76062 1519.611694 1522.276733 1524.035156 1524.490845 1523.691895 1523.38147 1524.357178 1528.480225 1534.953613 1541.618408 1548.566406 1556.058594 1560.564209 1561.562256 1562.497192 1564.459473 1570.591797 1572.311279 1575.621338 1577.703979 1582.946167 1587.208374 1589.547729 1590.81311 1595.493896 1604.33252 1613.192627 1623.90564 1632.375977 1638.362183 1639.154053 1636.856567 1631.484619 1625.107544 1619.286987 1613.969727 1607.875 1597.124023 1601.326416 1604.621094 1608.016968 1614.71582 1620.98999 1624.601196 1624.280884 1624.96228 1626.263062 1625.524414 1623.335815 1617.758911 1610.584229 1609.584595 1609.628784 1605.127197 1599.143799 1594.566162 1597.195557 1597.724121 1594.021362 1585.987061 1576.49707 1571.370728 1576.249268 1584.973755 1587.240967 1587.828735 1586.811401 1583.288818 1574.938843 1570.291992 1571.577026 1577.778076 1585.677979 1586.690674 1579.98291 1573.753296 1568.131592 1564.166626 1567.601685 1573.970825 1579.196167 1578.31311 1573.369995 1563.48877 1559.752808 1576.752686 1587.479248 1603.338135 1611.42395 1616.69812 1620.264893 1618.895142 1614.221313 1609.538086 1605.614868 1602.826538 1603.876587 1608.527222 1611.178589 1617.964844 1626.12915 1638.259155 1647.825928 1655.201904 1662.711792 1671.062988 1673.020264 1672.966309 1672.4104 1675.682617 1680.279419 1683.040039 1684.908813 1683.371094 1678.761719 1671.019043 1668.725342 1663.671997 1657.10022 1650.390015 1643.311401 1637.60144 1632.78125 1618.834106 1600.075073 1588.280273 1590.016968 1597.963013 1605.238037 1616.001221 1627.207153 1638.793457 1647.830933 1648.429565 1641.352539 1636.467896 1636.255859 1649.082764 1648.935791 1645.736694 1648.924438 1655.519897 1664.105103 1671.448486 1666.558228 1660.553101 1654.318359 1647.288574 1642.221436 1636.625366 1631.086914 1623.858643 1611.647217 1598.935669 1586.514648 1578.870605 1572.192261 1565.959351 1559.335938 1549.491699 1545.740845 1548.561523 1553.770264 1558.77124 1562.977661 1563.771973 1562.022827 1557.799683 1553.013306 1547.332397 1540.947144 1534.634277 1526.159912 1517.974121 1508.312378 1496.430664 1490.346313 1491.572021 1496.662476 1500.83252 1502.943237 1505.400635 1507.99231 1510.629517 1513.098145 1517.190918 1522.783813 1526.739624 1531.043945 1536.008789 1541.56543 1546.672363 1551.062988 1555.88855 1560.564453 1564.062134 1566.605835 1569.411621 1575.839478 1582.005249 1584.421509 1582.167969 1575.458374 1567.287964 1560.05542 1554.75647 1548.388306 1539.814453 1533.920288 1528.246216 1518.953369 1506.095215 1494.062866 1486.516357 1481.889404 1474.741699 1464.950317 1455.716553 1449.160645 1448.759644 1449.311523 1449.245239 1448.057739 1450.926147 1458.197388 1468.363525 1476.026489 1484.08374 1494.125244 1501.866577 1503.783081 1498.945923 1492.819214 1487.096191 1482.690186 1478.445435 1473.68103 1469.36499 1465.348022 1459.443115 1450.408936 1436.02417 1421.86792 1411.040283 1390.703491 1368.687622 1347.361938 1339.427002 1339.753174 1352.029785 1377.255615 1397.651611 1418.900146 1414.119629 1410.686279 1411.633667 1414.554077 1415.233032 1407.646362 1400.779907 1394.918579 1391.473755 1388.681274 1397.247314 1402.919922 1396.993774 1390.3396 1387.037598 1387.518433 1390.048828 1392.838745 1397.32666 1400.700806 1405.506226 1414.947876 1420.343506 1427.173218 1434.458374 1443.098633 1451.516602 1457.627197 1465.00061 1469.192505 1470.501099 1472.573608 1475.599609 1479.296021 1486.272705 1489.744995 1490.869751 1490.710205 1490.324585 1485.827393 1481.415894 1480.668213 1480.814941 1476.404663 1469.062012 1463.494019 1459.894653 1456.69812 1452.96814 1449.357422 1446.224731 1442.234985 1438.07251 1432.542358 1429.142578 1427.307617 1424.724365 1423.347778 1422.74707 1419.395874 1415.003174 1414.279541 1413.810791 1414.38916 1414.629883 1414.5896 1414.873291 1415.467651 1415.671997 1415.020996 1414.156982 1412.636597 1405.34375 1401.251099 1400.718994 1401.695435 1401.998047 1402.387573 1401.413208 1397.92688 1396.986206 1393.691162 1393.014771 1397.922607 1400.673462 1402.260986 1403.524048 1404.161499 1403.455933 1402.057373 1400.7229 1399.666016 1398.656006 1397.694336 1396.838501 1395.353149 1393.672607 1391.702148 1391.096436 1388.934448 1384.945435 1382.205566 1381.012573 1379.654175 1377.155151 1372.518433 1368.466431 1365.997681 1363.709961 1360.420044 1357.857178 1360.015991 1368.851562 1374.259766 1376.931641 1378.26123 1378.90918 1379.184692 1378.935913 1373.651367 1369.388184 1365.335693 1358.774658 1353.563965 1351.355225 1356.927368 1360.105957 1360.95459 1359.789062 1357.191284 1354.651733 1351.578491 1348.331421 1345.314697 1343.213989 1343.32666 1344.189575 1345.919189 1345.868042 1343.895386 1341.650879 1342.270874 1338.99231 1338.810303 1339.24707 1338.073486 1339.121338 1338.439941 1337.800903 1335.388672 1333.806641 1332.763672 1331.759277 1330.085693 1327.007202 1323.399292 1321.932861 1323.927734 1325.262573 1325.256104 1323.892944 1321.333618 1317.100098 1312.714111 1310.833374 1311.392944 1309.524902 1306.466431 1308.476685 1307.41394 1302.685913 1301.561768 1299.699463 1298.02002 1300.188843 1303.183105 +1546.962158 1560.006836 1578.337891 1594.345581 1605.62561 1613.224121 1620.852051 1631.998291 1641.514893 1646.247314 1650.061768 1659.545898 1677.259644 1692.49585 1700.021606 1700.000122 1699.429321 1707.934814 1713.470703 1718.251709 1723.741089 1732.028198 1734.70813 1739.08252 1739.488647 1737.86731 1736.059448 1737.798584 1743.479004 1746.82959 1749.907104 1756.42041 1758.908569 1759.607178 1759.417603 1756.825562 1758.143433 1759.879395 1761.298218 1763.932373 1766.582397 1768.181274 1768.385986 1768.505737 1768.401367 1768.804932 1768.573975 1762.506836 1758.749756 1755.191772 1750.894287 1745.956787 1737.85144 1730.610596 1732.954712 1733.692627 1731.722778 1722.898193 1721.350342 1728.379883 1733.187622 1734.360107 1734.715576 1730.631104 1727.905273 1724.758667 1721.299683 1717.445557 1711.956787 1706.427856 1699.861572 1694.951416 1688.834595 1692.814453 1693.900391 1690.822998 1683.598633 1678.428833 1694.882935 1706.207764 1711.168823 1712.767822 1713.241699 1714.002319 1715.497559 1717.980347 1717.5979 1711.897583 1705.656738 1695.401978 1686.781616 1680.700073 1676.039429 1673.063599 1679.028442 1685.784058 1692.606812 1695.203125 1701.835083 1707.74939 1712.320068 1713.6521 1711.376465 1707.852295 1704.690063 1700.981567 1699.161499 1701.422607 1702.691895 1701.810303 1699.028442 1695.598633 1687.154175 1682.082886 1677.438232 1671.864868 1666.523071 1666.918579 1667.954224 1667.143921 1662.593994 1655.180176 1647.982666 1644.062012 1642.626465 1645.580811 1650.489868 1656.328613 1661.492065 1666.233521 1670.78479 1673.744263 1676.389771 1677.537231 1677.272217 1676.270874 1675.204834 1674.687012 1675.373169 1675.963623 1676.121826 1673.395386 1667.696655 1661.601929 1656.109497 1651.658936 1646.991821 1643.386841 1639.115723 1619.90564 1623.471069 1626.928955 1628.063721 1631.500366 1636.438477 1641.026367 1646.927734 1655.184448 1661.294434 1659.836426 1651.33606 1639.631226 1632.867554 1629.675171 1626.427612 1624.173218 1619.500977 1614.288696 1609.563843 1603.960205 1595.960327 1580.225098 1568.214355 1555.69104 1543.145142 1532.799561 1522.700073 1513.674438 1506.67395 1510.65686 1515.037476 1518.291626 1521.688965 1524.552979 1527.129395 1528.532959 1527.390869 1525.142212 1523.450562 1524.249878 1530.952271 1538.382812 1545.896484 1554.79126 1563.425049 1567.046753 1573.486206 1577.096802 1574.384155 1572.721436 1571.735474 1574.142334 1578.425537 1581.561279 1582.170288 1585.670532 1594.630005 1601.66394 1608.182495 1617.742798 1628.89978 1637.963013 1642.035522 1644.804688 1634.968628 1627.495728 1620.754517 1614.667358 1609.145874 1605.412354 1611.656006 1609.208252 1609.476685 1619.333252 1629.011353 1636.149902 1635.457764 1633.17395 1630.375854 1626.845459 1623.217163 1617.346313 1610.472168 1605.61145 1601.338867 1596.572021 1588.403687 1583.108032 1582.999878 1582.811279 1582.144043 1574.43457 1571.305664 1573.674561 1589.206787 1591.951416 1592.413818 1591.996094 1590.387817 1587.827026 1577.909058 1570.904419 1573.05188 1582.943237 1587.797363 1587.276733 1580.47522 1573.03894 1570.733032 1573.547241 1575.317993 1580.153564 1584.103516 1584.572021 1580.425171 1570.500122 1562.265625 1575.520386 1586.172607 1603.430786 1617.511719 1629.109009 1637.167236 1628.466797 1621.435059 1616.324219 1611.173096 1607.903687 1606.808594 1610.570923 1618.51001 1622.403564 1626.445068 1635.629761 1646.355591 1652.751099 1657.52356 1666.811646 1672.771362 1676.06604 1678.961426 1681.595459 1684.330078 1685.642212 1685.524292 1680.205811 1672.185181 1664.221558 1660.940186 1653.322998 1645.996582 1640.592773 1634.011475 1627.181885 1623.890503 1612.612305 1596.935181 1586.121216 1588.349121 1594.565674 1603.956299 1615.371216 1627.317749 1637.282104 1644.786499 1640.352539 1630.710571 1629.293335 1634.120361 1647.711182 1647.357178 1647.212524 1650.455811 1655.258789 1658.281738 1659.365234 1657.799927 1654.572998 1649.584839 1648.651855 1645.13147 1638.471802 1633.542358 1626.342041 1616.089233 1602.827515 1589.185059 1575.034424 1561.403442 1557.866089 1551.063965 1544.687378 1540.690063 1543.473145 1549.062988 1555.449585 1561.683472 1563.771729 1562.905396 1559.261597 1554.654541 1549.226929 1543.724976 1538.529785 1529.997192 1521.318604 1512.759521 1501.784302 1490.825684 1486.313721 1486.782959 1490.815918 1495.355835 1497.974854 1499.057007 1501.109741 1503.988892 1507.245728 1510.922119 1515.375854 1519.343262 1523.943359 1527.640015 1532.835693 1537.790161 1541.683716 1545.095703 1547.876953 1552.325439 1556.647461 1561.135254 1565.228882 1569.685547 1574.04834 1577.149048 1573.854126 1565.816162 1560.428345 1553.426147 1545.421387 1536.432861 1529.979736 1524.017944 1513.099976 1504.822021 1497.167725 1489.518799 1481.502075 1471.205322 1461.328979 1451.768066 1446.505005 1440.083496 1437.205811 1440.643433 1445.557617 1450.993774 1458.728882 1464.390137 1472.112061 1484.290771 1492.890869 1493.839966 1489.619751 1483.60022 1476.988159 1471.256104 1466.661377 1461.717896 1458.124878 1453.951538 1446.612305 1436.344238 1420.79834 1415.566406 1404.596191 1383.231445 1366.818481 1347.732056 1339.532593 1339.9552 1347.727539 1373.424561 1399.90686 1417.702026 1410.557373 1405.772705 1409.910034 1415.753418 1413.966187 1406.687378 1401.265259 1398.263428 1393.276123 1393.376831 1399.108032 1403.976196 1402.731445 1395.213013 1389.452271 1387.459717 1387.744507 1388.587524 1392.230713 1397.152344 1403.616821 1412.123047 1418.117676 1423.801392 1429.67041 1436.534424 1442.391113 1447.325928 1450.549194 1457.715576 1459.60498 1463.050171 1467.388306 1471.773682 1479.492676 1482.937378 1486.708618 1487.207153 1484.441895 1478.75769 1473.459595 1472.286987 1474.845093 1469.049438 1462.608521 1457.357666 1452.910522 1451.320557 1449.178345 1446.880493 1444.485718 1441.929199 1438.74939 1434.918091 1431.678833 1428.993286 1426.728516 1427.224121 1427.43042 1424.573364 1419.471558 1417.025391 1414.467285 1416.002319 1416.926392 1416.950684 1417.016724 1417.820435 1417.901001 1417.504395 1417.067139 1416.236938 1410.790894 1403.571533 1406.758667 1408.981201 1410.08313 1410.386841 1408.617188 1404.348267 1405.261963 1402.965576 1400.840698 1405.174561 1406.849854 1408.408447 1410.140137 1411.240356 1410.912476 1409.691772 1407.763672 1406.256592 1405.107178 1404.351318 1402.939087 1400.774902 1397.036133 1394.130371 1392.482544 1388.279907 1383.756348 1380.800659 1378.864502 1376.633179 1373.383423 1367.931519 1365.046509 1363.812256 1361.31189 1358.621094 1361.920166 1365.486694 1374.429199 1380.542603 1381.894897 1381.16272 1378.680176 1378.114624 1376.973511 1368.489746 1365.430298 1362.044189 1355.286865 1352.464478 1358.033569 1364.726807 1367.065552 1367.124756 1365.571777 1361.848511 1357.458252 1354.022217 1350.727295 1348.934937 1348.7677 1350.379395 1351.773926 1352.204956 1352.56311 1351.200317 1351.569702 1350.553101 1347.847046 1348.072876 1348.194458 1347.752441 1346.830322 1346.269165 1345.645508 1342.174194 1342.440918 1341.506226 1341.672852 1342.045288 1340.69751 1336.155518 1333.603516 1335.9104 1336.478882 1336.220093 1334.428711 1332.129883 1323.772461 1315.718994 1317.567993 1323.494751 1320.085327 1321.446411 1322.650024 1321.474731 1321.471313 1319.922729 1315.373901 1308.89978 1296.688965 1297.30188 +1534.364258 1543.753296 1555.759644 1572.172974 1581.661133 1591.925049 1609.588501 1618.741089 1621.572388 1621.511353 1632.199219 1652.114014 1664.11499 1674.59021 1681.293945 1687.048218 1692.577759 1699.594238 1711.044434 1721.876221 1731.817993 1739.80542 1745.107544 1747.035767 1744.044556 1738.97876 1734.437134 1733.140869 1735.323364 1738.911255 1738.985107 1741.221436 1749.846924 1755.568359 1749.783081 1743.973511 1750.957397 1758.824707 1760.014771 1762.837524 1768.639038 1770.546875 1770.70874 1770.287842 1769.827759 1769.950195 1771.070557 1769.846436 1765.432983 1760.325684 1754.816895 1749.394653 1743.685913 1737.44397 1738.122803 1738.627197 1735.6521 1730.520508 1728.77417 1734.782715 1739.386963 1742.159912 1741.293701 1736.518799 1733.506104 1730.133179 1723.421997 1717.997681 1712.306396 1706.732544 1699.003662 1694.803101 1700.561279 1703.234619 1701.623657 1697.783447 1687.746216 1682.664429 1700.594604 1712.890625 1720.541504 1719.647583 1718.396118 1718.633911 1720.401611 1722.482056 1718.874268 1709.983154 1702.494629 1694.524414 1686.379028 1680.789673 1676.799072 1677.181641 1685.180786 1694.583984 1698.955566 1701.017334 1704.414307 1709.38269 1715.989746 1718.955688 1716.354614 1710.03833 1704.674683 1698.980591 1694.503906 1693.435913 1693.364136 1693.0354 1689.854858 1684.251831 1678.141602 1672.101807 1669.266479 1665.106323 1659.763184 1659.704712 1659.871704 1658.297119 1654.44519 1647.216187 1643.818237 1643.025513 1648.34021 1654.781616 1660.947632 1666.698242 1670.993652 1675.001587 1678.110229 1681.183228 1684.293457 1685.48645 1685.460693 1685.064453 1684.952026 1685.511841 1686.833862 1687.841309 1687.859253 1684.5271 1675.853882 1668.559692 1662.475952 1657.881958 1652.139526 1646.06958 1640.584106 1618.860962 1615.547119 1618.997192 1619.303223 1623.953979 1628.166748 1632.063477 1638.62207 1647.259277 1657.886353 1661.86438 1643.236328 1632.129395 1628.738281 1626.662964 1624.701172 1622.186768 1617.46106 1613.198853 1607.73645 1599.442749 1588.49292 1575.21875 1565.386841 1550.949707 1537.290771 1526.851074 1517.588989 1510.267944 1506.327881 1512.380371 1515.996338 1519.040771 1522.405762 1525.770752 1530.763916 1534.067627 1534.09729 1532.052734 1529.241577 1525.735474 1527.895264 1534.436157 1540.093994 1549.011963 1559.900757 1564.755249 1570.273071 1573.982178 1575.22229 1573.417114 1569.17627 1572.737183 1575.811401 1577.587402 1580.449097 1584.79248 1592.145752 1599.611938 1605.659912 1613.448242 1626.200317 1636.296387 1642.384888 1647.981323 1639.483276 1629.554321 1622.297485 1615.402588 1609.4021 1611.218384 1620.731445 1617.122314 1610.181274 1621.721436 1633.690674 1638.170532 1638.901489 1637.609131 1632.487305 1627.178345 1622.045532 1617.493408 1612.605103 1605.351929 1596.660889 1594.801758 1592.391113 1594.829956 1595.109863 1588.91333 1584.660278 1575.57666 1577.536133 1586.106079 1594.866577 1599.557739 1595.854248 1595.769775 1593.416504 1588.100708 1579.189209 1571.653442 1577.207031 1587.224731 1588.259644 1586.944214 1578.880859 1572.239014 1572.303101 1577.536255 1582.718506 1587.63269 1589.969116 1590.504028 1587.731812 1576.436768 1566.701416 1574.858398 1585.278442 1602.311279 1620.96167 1632.577393 1637.841675 1636.840454 1629.964722 1622.940796 1616.804199 1611.980225 1608.150024 1611.991333 1626.306763 1635.855225 1637.929688 1635.198853 1643.121582 1649.800537 1656.130127 1657.568726 1668.360474 1675.466797 1683.166992 1685.114624 1686.04541 1686.128906 1686.022583 1680.12439 1669.023804 1660.539795 1651.481934 1643.612183 1637.931519 1631.59729 1623.234253 1612.749268 1610.319702 1604.399048 1593.292236 1584.806152 1587.269287 1591.801636 1601.687988 1613.945679 1625.985474 1636.35791 1638.291748 1632.3302 1623.441895 1624.578491 1634.140747 1641.386841 1643.56958 1644.25647 1647.683105 1650.053711 1652.273926 1651.495239 1650.847534 1647.002441 1643.215332 1642.31311 1638.470215 1636.197998 1630.808716 1624.878052 1614.926514 1603.478027 1587.195923 1573.391357 1560.126099 1549.333008 1543.568604 1537.633545 1535.036743 1536.314087 1544.651611 1551.285522 1558.266846 1563.073853 1563.603516 1561.183594 1556.944946 1551.323486 1545.942871 1540.950928 1534.623047 1525.529175 1516.593384 1507.096191 1497.961304 1487.510254 1482.889282 1483.911621 1486.234619 1488.55249 1489.836792 1492.457275 1495.613281 1499.560425 1502.835083 1505.37793 1507.494263 1510.418579 1515.934937 1519.843262 1523.122314 1527.15686 1531.234741 1534.696411 1535.578735 1538.919189 1544.785278 1549.294189 1553.132202 1556.366699 1559.026123 1563.010132 1564.820068 1562.942383 1556.166016 1549.741211 1537.137207 1529.946167 1524.730957 1518.643188 1515.880371 1514.507446 1504.597046 1491.970093 1479.104614 1467.328369 1456.684204 1448.58606 1443.048218 1437.846436 1435.467163 1440.40625 1443.649292 1448.791382 1454.790527 1465.952271 1478.609253 1487.956787 1487.612671 1480.820801 1475.991943 1467.656006 1459.466431 1452.326904 1449.452271 1445.352661 1439.430664 1432.556641 1423.637695 1411.619751 1405.710938 1395.069458 1377.757812 1364.127563 1347.748413 1340.644897 1340.281616 1342.511475 1362.370728 1385.155151 1405.616211 1402.606567 1398.739258 1404.31543 1409.20459 1410.194824 1406.900269 1404.165039 1402.018921 1400.032715 1399.888916 1402.553955 1404.107544 1404.569092 1399.661133 1392.957886 1387.743286 1387.453247 1388.128296 1389.27063 1393.053711 1398.915649 1405.028076 1413.622437 1418.749268 1424.37146 1429.293091 1433.156982 1436.224365 1441.682983 1448.165649 1449.611328 1452.072998 1457.28418 1463.094971 1470.541748 1473.368164 1475.798828 1476.868286 1475.351318 1471.166016 1464.685303 1462.09082 1463.921753 1460.87207 1456.496338 1451.736816 1448.213501 1446.939453 1445.365601 1443.851562 1442.555786 1441.320801 1439.174683 1436.484253 1433.255737 1430.617798 1428.621338 1428.385254 1428.251831 1427.19397 1423.464355 1419.953491 1418.054932 1418.565674 1419.1604 1419.297852 1419.444092 1419.926025 1419.92041 1419.383301 1418.372314 1416.561768 1412.640503 1411.328735 1414.720703 1416.692993 1417.150757 1417.267944 1414.981201 1412.342651 1412.5896 1409.118164 1405.63562 1408.71167 1411.442139 1413.500122 1415.836182 1416.910156 1416.977539 1416.471436 1414.178101 1411.083252 1407.77124 1405.887451 1404.638428 1401.84375 1396.932617 1392.984619 1388.218628 1382.953979 1378.871582 1377.322388 1375.601929 1373.196411 1370.365845 1367.490112 1364.091675 1361.626465 1360.791382 1368.594238 1374.747559 1376.029785 1377.158447 1383.090576 1384.915161 1382.661011 1379.070923 1376.860352 1373.952026 1367.931763 1364.917236 1359.613525 1354.22522 1358.74292 1367.287109 1371.992188 1373.560913 1371.679688 1368.834961 1365.157471 1359.171631 1354.514038 1351.974609 1351.493896 1352.214722 1355.139526 1359.098145 1359.858765 1359.970093 1358.615112 1359.046143 1358.164429 1353.929688 1356.729126 1356.092407 1356.513428 1352.972534 1353.252075 1354.328369 1352.203613 1352.783325 1352.113892 1351.676514 1352.226562 1352.5448 1349.799927 1347.174927 1346.624634 1345.758179 1344.505737 1341.850464 1333.665527 1319.41394 1317.438477 1328.312256 1334.903198 1334.143799 1333.167847 1333.328613 1332.390137 1332.229736 1330.947876 1324.189941 1314.067993 1307.265503 1301.97644 +1530.899536 1530.991211 1532.735596 1540.281128 1557.615845 1575.352905 1591.841919 1597.960449 1602.081665 1612.059082 1629.708984 1645.275146 1653.812256 1661.261841 1665.553833 1666.485474 1673.933838 1696.252686 1709.104004 1720.605713 1734.765503 1748.700439 1765.373901 1751.947876 1742.877319 1731.923218 1723.713623 1718.283447 1724.353638 1725.629395 1723.540649 1723.19397 1734.397095 1739.260132 1735.453857 1731.338135 1740.351196 1747.941772 1749.965942 1755.399658 1761.466431 1764.753174 1763.487427 1762.301514 1762.167114 1763.504272 1766.96167 1771.212646 1770.057861 1766.294922 1758.264893 1752.173584 1745.416504 1741.820312 1744.810791 1744.85083 1740.389648 1732.43457 1732.36438 1739.619141 1745.503784 1747.757568 1747.004517 1744.272827 1738.55249 1730.943481 1724.191284 1717.941162 1712.585205 1707.529785 1703.481689 1706.79541 1714.423828 1716.123901 1707.528687 1699.930054 1690.75 1688.403931 1704.832153 1721.066162 1728.671265 1730.104614 1728.936401 1728.640747 1729.675781 1725.578857 1718.098999 1708.914429 1700.071167 1692.711426 1685.779663 1680.883667 1677.765625 1682.850708 1691.622681 1699.482056 1705.815552 1707.131226 1707.219116 1712.653931 1719.120117 1721.221924 1720.439819 1714.623657 1708.764526 1703.94165 1698.241699 1694.1875 1688.889771 1682.409668 1680.204834 1676.7948 1672.423828 1668.494751 1667.391357 1660.684937 1657.529053 1657.073486 1656.737793 1654.469116 1647.266479 1644.692993 1645.21875 1653.910889 1661.603638 1666.221069 1671.885132 1675.896118 1679.494629 1683.307861 1685.18457 1687.759888 1691.179443 1695.52771 1695.647095 1693.62561 1694.072632 1695.911133 1699.410156 1701.051758 1699.834961 1694.666748 1682.853149 1676.21228 1671.27002 1665.385742 1657.416992 1649.346313 1640.18396 1615.878784 1608.858521 1611.257568 1612.78125 1616.082764 1618.37085 1622.148315 1631.349487 1639.898804 1647.499268 1645.633667 1633.856689 1627.482056 1623.517456 1620.962524 1618.529053 1615.103882 1611.620361 1607.02002 1599.135254 1589.972412 1578.254639 1567.655396 1557.811646 1541.299316 1529.938965 1520.761963 1512.006714 1509.303711 1507.13501 1513.522339 1516.461548 1519.564697 1522.575195 1527.200439 1535.464355 1539.68396 1541.070801 1539.889526 1537.379395 1533.93335 1532.182617 1533.442139 1534.790283 1542.848511 1553.036743 1558.447876 1560.942017 1561.89502 1571.121338 1568.730591 1563.836304 1568.979004 1572.937134 1573.23999 1579.324707 1583.166748 1588.840088 1595.717896 1602.04541 1608.772095 1623.41748 1633.901733 1640.083252 1644.245361 1636.994263 1630.142334 1624.795776 1615.333618 1608.671753 1621.484985 1623.77417 1623.136353 1615.525269 1621.047241 1633.04126 1639.117065 1642.814941 1645.149658 1633.384399 1627.026123 1621.574829 1617.337036 1613.129639 1606.944336 1598.221558 1595.384766 1597.858887 1600.697632 1600.494873 1597.624146 1589.639893 1583.155884 1588.205688 1596.582153 1604.636963 1608.148315 1602.954834 1601.357544 1596.98877 1586.197266 1578.651001 1572.900269 1583.810181 1588.001465 1587.80188 1584.572998 1574.18396 1575.121582 1578.55249 1583.851562 1588.336304 1593.417969 1597.377686 1596.929688 1592.37854 1583.308105 1570.443726 1574.572266 1587.898071 1600.244629 1619.178833 1632.760742 1639.699829 1640.643311 1634.914795 1627.605957 1621.799438 1616.85022 1611.339478 1612.187134 1628.621948 1640.321899 1648.216553 1649.434814 1653.11792 1659.581421 1663.687744 1671.176636 1673.076294 1678.638916 1684.007812 1685.298218 1685.85791 1686.507446 1685.568481 1681.668945 1675.529785 1669.728882 1659.044556 1645.747925 1638.38147 1631.071045 1617.100586 1607.101074 1603.455933 1598.299072 1589.462646 1582.081421 1582.477783 1585.967407 1597.504639 1609.585693 1622.022705 1633.57312 1635.890137 1625.573608 1619.980957 1622.32666 1631.24646 1637.235962 1639.510864 1640.791992 1643.280884 1645.156372 1645.579468 1645.06311 1643.12085 1638.272949 1634.039795 1632.593506 1630.376221 1625.453369 1621.270142 1617.261963 1607.87793 1598.513062 1582.019897 1569.854736 1557.646362 1545.410889 1536.817261 1533.304321 1528.574097 1530.99353 1537.99939 1544.105103 1548.473877 1554.299805 1560.309204 1562.753418 1560.623657 1555.075439 1547.852173 1543.224976 1538.13562 1529.628418 1520.649658 1511.436401 1503.446899 1494.19812 1483.777344 1478.304688 1477.644409 1480.258911 1481.592651 1483.981812 1487.553589 1490.451416 1493.261353 1495.991943 1498.264038 1501.745483 1506.078003 1510.50647 1512.367554 1514.79895 1518.7052 1520.682861 1521.586548 1524.439819 1529.693848 1534.157227 1538.130371 1540.934692 1543.00415 1544.405884 1546.918335 1549.267334 1548.39978 1542.809448 1532.623901 1524.053345 1518.960693 1515.858032 1509.996582 1510.735107 1514.184692 1503.796997 1492.286499 1475.504761 1462.685913 1451.718018 1446.271851 1440.699341 1427.523926 1432.63269 1435.789062 1440.6073 1447.340698 1459.451294 1475.830933 1480.562378 1477.65332 1470.067261 1464.104248 1458.5448 1450.458984 1440.307983 1436.620728 1431.272827 1427.501099 1421.376709 1412.460693 1405.990967 1398.777832 1387.121094 1374.311157 1361.717529 1347.773071 1341.421875 1340.794189 1340.951904 1348.195557 1370.820801 1387.530762 1390.289185 1388.383667 1397.876099 1404.207642 1406.932617 1406.386597 1405.344238 1404.100342 1403.691284 1402.328735 1404.674927 1406.735107 1406.384766 1403.526611 1395.784424 1388.974731 1389.746582 1390.354492 1389.664551 1389.159424 1392.383057 1398.909424 1405.700806 1413.201538 1418.271851 1421.968506 1424.818359 1427.677979 1433.557129 1437.602173 1436.903687 1440.639893 1446.550537 1452.220703 1458.543335 1460.213623 1462.099731 1465.482788 1464.332031 1462.758911 1458.221802 1452.506104 1454.216064 1454.05127 1451.101074 1447.328613 1444.448608 1442.984985 1441.383179 1440.31958 1439.834106 1439.519043 1438.574463 1436.425781 1433.782104 1431.515991 1429.935669 1429.185913 1428.664429 1427.608398 1425.080322 1423.534058 1422.120483 1422.067627 1421.880371 1421.781372 1421.859741 1422.238647 1422.075073 1421.426758 1419.851562 1416.306641 1413.963379 1415.023193 1417.932739 1420.333984 1421.726807 1421.389404 1419.370483 1418.241089 1417.388672 1415.674927 1412.238159 1413.288818 1415.564941 1416.970459 1417.890869 1418.394287 1418.626831 1417.80249 1416.349243 1411.080322 1407.040283 1404.265625 1400.247192 1396.112915 1392.004639 1386.153198 1380.310181 1377.287476 1375.593506 1373.744263 1371.972046 1369.412476 1366.788818 1364.933105 1361.958008 1363.177612 1373.865112 1381.988892 1384.054932 1383.804688 1383.69458 1387.106079 1388.429688 1387.405884 1383.026855 1378.857422 1374.666382 1370.580444 1367.157837 1358.972656 1358.580566 1367.118164 1373.966553 1379.312744 1378.952881 1374.470093 1369.792358 1365.503418 1357.197754 1353.529907 1354.094727 1355.198853 1352.829468 1359.976807 1367.018677 1367.813965 1367.763672 1366.353027 1367.42041 1366.142456 1363.438477 1365.44458 1364.465454 1362.888916 1360.234131 1360.707031 1361.543701 1360.817261 1360.911011 1361.028931 1360.961792 1361.183228 1360.836914 1358.069336 1355.276367 1355.449219 1353.365601 1347.51416 1340.962891 1326.280151 1316.257324 1326.488525 1337.261475 1343.427612 1344.005615 1340.887207 1339.816895 1339.425781 1337.787231 1333.559448 1327.316284 1322.27478 1320.202515 1313.163574 +1549.357178 1547.927002 1545.325317 1541.188721 1540.056396 1547.679443 1565.785522 1576.439697 1587.13208 1608.379883 1621.285156 1632.918823 1641.406616 1643.612915 1646.633789 1656.025513 1682.416016 1699.466064 1709.044922 1719.4646 1739.579102 1750.136719 1744.394775 1738.632568 1729.142578 1723.36792 1712.597534 1701.096313 1706.896729 1709.831909 1702.157227 1708.928223 1720.526978 1721.461182 1713.702271 1716.744263 1731.274658 1734.567871 1734.944336 1745.062744 1753.693604 1756.938477 1752.171631 1750.900269 1751.243652 1753.599609 1755.605469 1760.02002 1766.893677 1765.099731 1759.63855 1755.783081 1750.243896 1747.87915 1748.846436 1748.312866 1745.911621 1740.591064 1741.300781 1746.569214 1751.115112 1752.866211 1752.205444 1748.262451 1741.002441 1732.035156 1724.986328 1718.879028 1714.116943 1707.703125 1712.395996 1722.221802 1726.681885 1724.526123 1713.353394 1702.158691 1693.124634 1691.99231 1708.226685 1726.895874 1734.701416 1737.886597 1738.019531 1737.103882 1735.250977 1728.56604 1717.196045 1707.773315 1697.953125 1691.790039 1686.689087 1682.360718 1680.603149 1688.41272 1697.059937 1705.349976 1710.240845 1712.282104 1712.739502 1715.972046 1720.029297 1721.7854 1721.703491 1719.617798 1713.0448 1707.552612 1701.549805 1697.195923 1691.466919 1683.908447 1679.800293 1675.810303 1671.549194 1672.214355 1672.487549 1672.020752 1670.089722 1665.696411 1661.197632 1657.99353 1649.866577 1645.28064 1655.62085 1663.634888 1670.253906 1676.112549 1680.443359 1683.355103 1686.716064 1689.695435 1692.073364 1694.188843 1697.457764 1704.663086 1705.709106 1703.640137 1703.646362 1706.41687 1709.695435 1709.970337 1707.053955 1699.951294 1692.655884 1682.80542 1676.275146 1670.336426 1660.498047 1650.653931 1640.221191 1616.235229 1606.865845 1601.483154 1603.487671 1607.730469 1607.670044 1615.019531 1624.401978 1631.712524 1636.060791 1634.947021 1627.485107 1621.370361 1615.436646 1611.638062 1609.155884 1606.001709 1602.102417 1596.394287 1588.101929 1579.887939 1569.312378 1557.693848 1544.380371 1531.696655 1522.587891 1514.651855 1510.571655 1507.855713 1509.248291 1513.902344 1517.152954 1520.609497 1523.696777 1529.874634 1536.895386 1545.812256 1548.920776 1548.361206 1544.89624 1540.467529 1537.208984 1535.361694 1534.261841 1534.165161 1542.591309 1549.923828 1549.665894 1551.990356 1559.782471 1559.883667 1559.840088 1564.740845 1572.997803 1576.92749 1581.725464 1583.928711 1587.659546 1594.246826 1600.814819 1608.666504 1619.410156 1629.930054 1637.089844 1637.783936 1634.071533 1629.995605 1625.483154 1617.171143 1613.353516 1624.425049 1626.716064 1622.600586 1620.031128 1621.228394 1632.251343 1639.045898 1644.312012 1648.079712 1634.853149 1625.818359 1620.284546 1616.879883 1613.159912 1606.846313 1597.106812 1596.2854 1600.080688 1603.863647 1603.731812 1599.35791 1591.874146 1585.004761 1593.853149 1602.549561 1611.557373 1612.49707 1611.219971 1608.882935 1600.28894 1587.125366 1582.087036 1581.057739 1586.992676 1588.328247 1587.14917 1583.445068 1581.542236 1582.919556 1585.658447 1588.994507 1593.056641 1597.981934 1604.879028 1604.184814 1598.127197 1590.21228 1574.309937 1574.772339 1588.934814 1598.128906 1616.495728 1630.369629 1641.407959 1646.701904 1640.543945 1633.483887 1627.775879 1622.294922 1616.770874 1617.279663 1625.588745 1635.834595 1646.835571 1650.744019 1657.561279 1663.98645 1671.805786 1673.113892 1674.876587 1679.299561 1682.956543 1684.584351 1685.641479 1685.847412 1682.479858 1674.803467 1674.236816 1672.524048 1664.776367 1656.34021 1647.159912 1635.521606 1623.651611 1612.428101 1600.37207 1593.263916 1586.619263 1578.073608 1578.05481 1581.233154 1591.450562 1602.920654 1614.940674 1624.771118 1625.692017 1615.677979 1612.830566 1619.402588 1629.434448 1636.287231 1635.282471 1635.668091 1638.31543 1639.241699 1639.44812 1637.954346 1634.928955 1629.81311 1625.469238 1622.750977 1619.247803 1614.296631 1610.742432 1604.96875 1597.439453 1585.789673 1575.486938 1565.616455 1552.365845 1542.633179 1535.041504 1529.625732 1524.020508 1523.936646 1530.000122 1536.98291 1540.372925 1544.646118 1551.718018 1559.237549 1562.846924 1561.869873 1550.506836 1545.159668 1540.116577 1532.80896 1523.302856 1514.553711 1506.795532 1498.971436 1490.044922 1480.263306 1474.330444 1474.071655 1474.114136 1476.44519 1479.136353 1481.798706 1483.281494 1484.12561 1485.456055 1490.746582 1495.879395 1499.029053 1500.327393 1503.576172 1508.520752 1511.963989 1512.597778 1513.200928 1517.494141 1520.569824 1522.233398 1524.888184 1528.459839 1530.76416 1531.116821 1530.359985 1528.878906 1523.250244 1518.010132 1510.290649 1507.364136 1501.831055 1493.9375 1483.134155 1496.689209 1503.115479 1503.28772 1486.476929 1471.755005 1458.366699 1449.858032 1443.755493 1432.561523 1426.501221 1428.109375 1434.216187 1443.149902 1455.098999 1469.008667 1473.672119 1465.100708 1457.679565 1452.15564 1448.198486 1439.123413 1430.086426 1421.392944 1417.695312 1415.814087 1411.463867 1405.793701 1399.188721 1391.003784 1380.93811 1371.463257 1357.276611 1347.014282 1341.345093 1340.756836 1344.51062 1340.950562 1350.32312 1373.315796 1381.067871 1386.685181 1394.48291 1401.075806 1403.914429 1405.177368 1405.180542 1405.371704 1406.36792 1407.488159 1408.393677 1409.868042 1409.259644 1406.172241 1400.671143 1393.131348 1395.639771 1396.85144 1396.146973 1394.665405 1394.49585 1398.306519 1401.62793 1406.618896 1411.539062 1414.095459 1415.991333 1421.324951 1426.650513 1427.826904 1427.627319 1433.131958 1438.259644 1441.907104 1445.921021 1446.808838 1450.952515 1454.422852 1455.536743 1454.438965 1451.311646 1447.112549 1447.062988 1446.535156 1444.000977 1440.294312 1439.406494 1439.261841 1438.509399 1438.08606 1438.121704 1438.113037 1437.294434 1435.738892 1433.812378 1432.005737 1430.685181 1429.679688 1428.907349 1427.939941 1427.007812 1425.756592 1425.155396 1425.314575 1424.817749 1424.004639 1424.025635 1424.830688 1424.904419 1424.349243 1422.736084 1420.163086 1418.633911 1420.241577 1421.348511 1423.067627 1426.220215 1426.580933 1424.290161 1421.641724 1419.492188 1417.204468 1415.24231 1416.113159 1417.510132 1418.203735 1418.471069 1418.359497 1416.102173 1412.240479 1408.962524 1405.014404 1401.703003 1397.972046 1393.184937 1389.244141 1381.917358 1377.402344 1375.893433 1374.841797 1372.778198 1370.257812 1368.046875 1365.859009 1364.21106 1363.053223 1368.01001 1378.247437 1384.508423 1389.7771 1391.608032 1391.011597 1391.144287 1391.548828 1391.44458 1391.080811 1385.403442 1380.302002 1375.639648 1370.66394 1366.635864 1359.631836 1363.463257 1372.93103 1379.857178 1381.007935 1379.013794 1372.951538 1367.979004 1362.983521 1355.086182 1357.134766 1364.965088 1362.643433 1354.475952 1362.190552 1369.887085 1374.589111 1375.26001 1374.266113 1374.503418 1372.718384 1370.184448 1372.109619 1371.988159 1369.687988 1366.899536 1368.870972 1369.281738 1368.141357 1368.92041 1368.921997 1368.626709 1368.076416 1367.280396 1365.289429 1359.596558 1356.949097 1353.16394 1343.167114 1330.241089 1322.548706 1328.181763 1338.887695 1345.954102 1352.523804 1350.544312 1347.955566 1346.359497 1345.342285 1341.981445 1337.533081 1332.237427 1332.450684 1328.736328 1318.158936 +1569.166748 1564.858032 1559.283325 1555.518921 1552.524292 1550.244873 1547.880981 1560.450195 1582.597046 1599.166016 1612.75708 1619.311035 1622.78772 1625.244141 1640.907349 1663.356934 1683.618286 1698.383789 1708.064453 1718.733887 1738.045166 1737.139404 1727.702515 1724.625732 1719.359253 1712.778076 1700.917725 1686.967529 1689.362915 1692.031494 1685.752563 1690.896606 1707.376831 1707.282349 1701.249634 1707.9375 1720.353149 1720.0448 1722.740845 1732.19751 1746.796875 1744.692749 1739.543091 1738.937256 1738.070312 1742.322632 1744.640747 1750.74292 1756.870483 1760.394287 1759.964844 1757.978149 1755.201538 1753.745361 1753.944214 1752.704224 1750.134888 1745.465454 1746.818604 1751.62854 1756.599243 1757.862183 1757.047974 1751.107178 1742.573242 1734.663452 1727.728149 1721.737671 1716.848755 1718.689453 1725.255737 1732.446411 1735.128906 1729.135864 1716.790771 1704.774902 1696.453857 1694.853271 1712.425781 1731.325439 1738.380981 1743.75415 1745.016479 1743.1698 1737.361206 1727.595825 1716.022705 1705.891602 1697.152588 1691.563232 1687.17395 1682.92041 1684.690063 1693.799194 1703.546753 1710.823486 1716.837036 1717.57312 1716.624878 1717.952759 1720.681885 1722.337524 1722.275024 1720.830688 1714.521851 1708.67981 1702.664062 1698.359375 1692.74939 1684.371948 1681.319702 1679.955811 1679.716187 1680.250366 1679.72644 1678.348145 1676.495117 1673.650391 1669.415039 1662.5448 1653.123169 1649.572632 1661.167725 1669.144775 1678.550659 1684.751221 1687.04248 1689.791748 1692.894165 1696.640137 1699.764282 1701.989624 1703.893066 1707.932007 1708.729614 1709.447388 1709.34668 1709.200562 1706.249146 1700.114624 1695.518188 1694.915283 1691.695679 1681.572632 1671.061768 1667.472778 1661.039551 1650.721802 1640.456421 1618.952026 1608.001221 1595.268433 1593.119629 1594.63855 1600.324585 1609.021362 1616.668457 1623.261841 1626.033203 1625.368774 1619.574341 1612.768066 1605.708374 1602.673706 1600.544556 1596.651123 1590.938965 1583.979126 1577.266968 1569.682251 1557.373657 1544.842896 1534.288696 1524.436157 1519.046143 1512.424927 1510.329468 1508.48999 1509.23938 1514.130371 1517.714722 1521.875366 1525.756592 1531.014526 1537.641846 1549.281372 1553.122559 1553.689941 1551.209229 1546.433472 1542.109253 1538.960083 1535.804932 1534.926392 1539.686035 1547.568359 1549.926514 1555.152222 1558.755127 1559.743896 1563.862915 1570.111084 1577.223267 1583.655762 1588.644653 1590.502075 1591.752808 1594.398926 1599.009766 1607.755127 1616.707397 1625.805908 1633.844238 1637.333618 1636.918579 1632.620239 1625.58667 1620.436401 1622.832153 1629.938965 1631.262451 1626.177124 1622.882446 1625.154297 1632.023926 1638.804443 1645.037354 1648.252686 1637.085327 1626.340698 1620.357788 1616.477661 1612.253296 1606.029663 1598.612793 1600.435303 1604.418335 1609.348511 1607.666016 1602.004028 1597.007324 1592.47168 1595.418945 1603.582275 1610.598511 1612.986206 1612.923584 1609.591431 1598.727295 1588.234619 1584.914429 1586.514771 1588.422974 1589.400757 1587.252319 1584.506592 1586.349731 1589.015503 1591.40686 1594.154175 1595.380127 1602.05188 1612.18689 1611.279785 1604.544312 1595.840698 1581.220581 1575.435059 1588.423584 1598.261597 1613.074463 1626.766724 1637.864868 1649.03064 1648.263306 1641.361572 1633.676514 1626.396729 1620.850952 1619.161621 1622.467529 1629.950562 1639.572998 1647.987427 1654.638916 1659.53064 1665.759521 1669.077148 1671.351807 1675.905518 1680.029175 1683.061646 1684.644165 1683.519653 1675.060181 1667.622314 1668.392578 1672.885498 1666.78894 1658.89624 1645.90564 1634.467651 1622.122314 1612.481689 1600.438232 1590.990845 1583.518066 1576.356201 1575.373413 1579.354126 1587.617065 1597.899292 1606.190918 1613.345825 1614.097534 1607.707153 1611.660278 1620.223022 1626.903931 1632.990967 1632.501831 1632.358521 1633.685913 1634.074341 1633.843628 1632.214111 1628.337769 1622.223511 1616.382324 1609.84729 1607.572754 1603.125488 1597.585083 1590.379761 1584.155762 1575.499512 1568.509521 1560.58667 1548.21582 1540.105225 1533.386597 1527.915527 1521.724243 1516.78772 1520.176758 1523.772461 1529.69812 1535.34021 1543.977417 1551.817505 1557.773438 1562.041504 1555.923706 1547.306519 1542.054321 1535.320435 1525.637817 1517.486816 1509.557007 1501.703003 1493.723511 1486.13623 1480.070312 1472.573975 1470.904541 1471.274902 1472.385986 1473.950684 1474.619019 1474.55835 1475.408569 1480.933838 1486.698486 1488.547852 1488.801758 1489.557617 1495.347778 1500.992554 1503.342896 1504.094727 1506.78418 1509.733398 1511.518921 1512.843628 1514.365601 1516.854126 1518.591309 1518.885864 1516.787964 1510.805298 1503.12146 1498.580566 1489.727539 1487.436035 1482.199951 1463.779541 1475.124512 1487.720459 1493.048462 1493.60022 1481.97583 1465.515503 1454.871948 1447.446167 1438.393799 1423.930786 1421.848267 1428.461304 1439.429932 1448.69873 1458.447144 1459.180908 1455.378296 1448.778564 1439.569458 1435.914185 1428.709473 1417.615234 1409.086792 1408.374512 1406.296265 1404.153809 1398.049683 1391.506226 1384.428833 1375.628052 1366.491333 1352.88916 1345.70752 1341.286743 1341.045776 1358.906616 1356.364136 1346.781616 1351.634277 1368.443848 1382.314697 1390.900757 1395.621094 1399.289917 1401.866089 1403.595215 1404.986572 1408.314697 1411.471313 1413.371216 1413.525879 1412.580078 1409.21106 1403.960938 1399.697021 1403.558105 1404.341064 1403.163086 1401.224365 1400.350464 1399.937744 1400.442627 1400.910156 1403.531006 1405.876343 1410.237671 1415.641602 1418.898926 1420.368774 1422.396851 1426.906494 1430.826904 1433.558472 1436.427246 1436.957031 1440.948975 1444.441528 1446.551514 1446.037354 1442.713257 1438.948242 1439.717896 1439.726074 1438.152344 1437.2854 1437.532349 1437.253418 1436.963013 1437.106689 1437.165527 1436.936157 1436.394897 1435.208008 1433.676514 1432.219971 1430.964844 1430.043945 1429.157837 1428.496948 1427.855347 1427.459961 1427.390869 1427.362915 1427.049194 1425.820312 1426.315796 1427.116943 1427.381836 1426.743408 1425.479004 1425.379761 1424.651245 1425.024292 1424.946655 1425.018188 1428.069946 1428.471069 1425.880127 1422.904907 1420.735962 1419.269287 1418.487061 1418.120972 1418.300903 1418.234741 1415.881348 1412.796265 1406.779663 1400.641968 1398.745972 1397.414917 1394.636353 1390.186646 1386.564453 1378.805298 1376.354004 1374.939697 1373.837036 1372.443115 1370.505981 1368.062012 1365.502563 1365.046997 1367.713867 1376.297607 1383.025513 1388.182983 1393.187744 1396.377808 1396.879028 1394.435059 1392.38501 1391.630493 1390.576416 1388.397217 1384.416504 1379.912964 1375.321899 1369.94043 1365.323486 1360.239014 1368.730469 1378.655029 1380.70459 1380.106201 1374.306274 1368.118652 1364.954956 1363.560791 1363.607422 1367.589111 1369.400391 1365.751099 1360.859009 1363.746216 1370.38623 1378.07373 1379.62561 1379.190674 1380.532227 1380.552979 1379.115356 1379.387939 1379.544434 1377.090454 1375.626587 1376.758057 1377.594971 1377.091797 1377.328247 1376.475586 1371.167969 1369.622314 1365.794556 1360.288818 1355.302002 1350.978271 1343.522339 1332.827759 1326.591919 1327.621948 1334.243164 1345.463135 1354.368408 1357.536865 1356.914551 1354.68457 1352.985596 1350.64209 1345.643921 1340.506348 1339.021118 1336.423096 1331.953247 1324.353149 +1587.979614 1585.2052 1579.139893 1568.606812 1558.895142 1556.510254 1553.782959 1551.362061 1572.989746 1589.0354 1598.857178 1608.281494 1612.911255 1621.814331 1644.051636 1665.446533 1680.106812 1694.876831 1706.462524 1719.088867 1731.983032 1722.968384 1711.284912 1708.98938 1705.21521 1697.955078 1688.148315 1674.854248 1670.620972 1674.841797 1671.22937 1677.376221 1686.253296 1692.216919 1688.376343 1698.87793 1706.628052 1705.094238 1716.0354 1727.274902 1737.947998 1734.036987 1727.093384 1726.761963 1727.275879 1732.800049 1738.227905 1743.54541 1752.717651 1758.308594 1759.838379 1759.906494 1758.771362 1758.369751 1758.166504 1757.193848 1755.568481 1753.945557 1754.133667 1757.137085 1760.730347 1760.856567 1759.139893 1754.303711 1745.063965 1736.838501 1730.124268 1723.625366 1721.062744 1728.245972 1735.49939 1740.017334 1740.44104 1731.629028 1718.568237 1707.040649 1699.656616 1699.015381 1713.399536 1731.900513 1740.302124 1746.160278 1746.731812 1746.519043 1737.592407 1726.172852 1714.498535 1704.229736 1696.088989 1690.920044 1686.775146 1684.258667 1692.687256 1700.981079 1710.346191 1718.328857 1722.308228 1722.090942 1720.99646 1720.801636 1722.877197 1723.042847 1722.410889 1720.080933 1713.203491 1706.724854 1702.893188 1698.377441 1694.062256 1691.02063 1687.742065 1688.280396 1689.166138 1689.223755 1687.705444 1684.550049 1681.146729 1677.505737 1673.362793 1665.225708 1655.205322 1651.541138 1661.744751 1672.625854 1683.449097 1687.75415 1691.883545 1695.183472 1699.916504 1706.032471 1709.133545 1708.320923 1705.268311 1702.332031 1702.840942 1703.276245 1703.13623 1701.986328 1698.345703 1690.675903 1686.247803 1684.856201 1685.472656 1669.872192 1658.287354 1656.699341 1657.019165 1650.762207 1643.066528 1619.847412 1608.684692 1598.236816 1585.712036 1584.339722 1592.263062 1597.455811 1604.8125 1612.680054 1616.45813 1615.51709 1611.573242 1605.45166 1597.172607 1592.655029 1589.025269 1585.879028 1580.967529 1576.679932 1567.86853 1555.94104 1547.380615 1535.844604 1524.088623 1521.221436 1517.145264 1513.533691 1510.941772 1509.20105 1508.807251 1513.303467 1517.91333 1522.747314 1527.395142 1532.30542 1538.733887 1549.325684 1556.795776 1559.506958 1556.744019 1551.410767 1546.717773 1543.151367 1539.641846 1536.003418 1541.084106 1553.412476 1559.236206 1562.824219 1566.547607 1569.178223 1573.424805 1575.893799 1582.556396 1590.56958 1598.285156 1599.824707 1599.180786 1600.559937 1600.744141 1607.80249 1614.631714 1622.476196 1632.18042 1639.44873 1640.88147 1633.924561 1624.713867 1620.049561 1633.026733 1636.540283 1636.462402 1633.815796 1632.009521 1632.110229 1632.660522 1637.979858 1646.154907 1647.951294 1638.4646 1628.508545 1621.110596 1616.289673 1610.936157 1607.2948 1606.469604 1606.566162 1608.113525 1611.827393 1610.536865 1605.272583 1600.163696 1596.176025 1596.286621 1603.275269 1609.978516 1612.936646 1612.432373 1604.657959 1595.2052 1588.836792 1588.346558 1590.561646 1592.170898 1591.559692 1588.390869 1586.214844 1591.771484 1595.0354 1596.412842 1600.814575 1603.659058 1608.028931 1614.005005 1617.38855 1610.617432 1601.865479 1587.963257 1577.143433 1587.868164 1601.1875 1609.886719 1622.275513 1633.31543 1645.775635 1650.088501 1648.095337 1639.501343 1631.658325 1625.220459 1621.178467 1620.640259 1626.137085 1632.275146 1640.674561 1646.648804 1652.195801 1656.458618 1661.713135 1667.665771 1671.59082 1677.218018 1680.623047 1681.562988 1679.897949 1671.271118 1661.578003 1656.486572 1654.364624 1653.30249 1646.73584 1637.163696 1626.223511 1615.753662 1606.809448 1596.5177 1586.757935 1579.281128 1573.959229 1573.793945 1577.42334 1583.783569 1591.540771 1598.17395 1602.158447 1600.917236 1603.001709 1611.948364 1621.041748 1626.322998 1628.920654 1629.380249 1629.603027 1629.883545 1630.375244 1629.878052 1628.443726 1624.189087 1618.992432 1612.990845 1607.513672 1602.670776 1595.720703 1586.567993 1580.217407 1573.361938 1568.179443 1561.800171 1554.48291 1545.916748 1538.195923 1531.783936 1525.200317 1519.697632 1512.452759 1513.281738 1515.219482 1520.926147 1528.666626 1536.106201 1544.312988 1551.068726 1556.09021 1555.368408 1550.017334 1544.466064 1537.85376 1528.794189 1520.7146 1513.090698 1505.296143 1497.190674 1490.873047 1485.369263 1480.532349 1473.514648 1467.209717 1466.828491 1465.451904 1466.884521 1468.168091 1469.264893 1472.281006 1475.459595 1478.39978 1479.827881 1480.044434 1482.24353 1485.44043 1488.938232 1490.625732 1492.478394 1498.268921 1501.818481 1502.564209 1503.462769 1506.116333 1509.672241 1509.781738 1505.277466 1497.513184 1489.531982 1482.202637 1475.352051 1473.681641 1467.42041 1452.87146 1456.72998 1467.510376 1476.576782 1484.938599 1487.517456 1473.175293 1460.192993 1451.494751 1441.145386 1426.191284 1416.289307 1416.4729 1430.175903 1440.099976 1441.485596 1446.216309 1444.445435 1437.2323 1426.567749 1422.577637 1416.050171 1405.600952 1399.61792 1402.230225 1395.901855 1390.055054 1387.741821 1383.99707 1378.556519 1367.081421 1358.403564 1350.537476 1345.049438 1341.632324 1343.095215 1350.159058 1353.245605 1354.515503 1350.501587 1351.564575 1374.449951 1384.255737 1391.215454 1393.99585 1395.0979 1397.690063 1402.296509 1409.36731 1415.442505 1416.279541 1416.265869 1415.747681 1412.641846 1406.409546 1403.102905 1407.978271 1409.147095 1408.568237 1406.793701 1405.351685 1404.063843 1402.224487 1400.646851 1400.613159 1400.648804 1403.462524 1408.44458 1412.03125 1413.566528 1416.44751 1420.804443 1424.218628 1426.489502 1429.463867 1431.998291 1434.753174 1436.550537 1437.507935 1437.667969 1436.659058 1435.611328 1435.692017 1435.615112 1434.993896 1434.857422 1435.123413 1435.238647 1435.544312 1435.828857 1436.103394 1436.126099 1435.696411 1434.825073 1433.64917 1432.286377 1431.127808 1430.028564 1429.226562 1428.550415 1428.099121 1427.707886 1427.559692 1427.478882 1427.409424 1427.25769 1427.794922 1428.195923 1428.346802 1428.302124 1427.918823 1427.808472 1428.396729 1428.118042 1426.924927 1426.297241 1427.46106 1427.169434 1423.456177 1420.609009 1419.575439 1419.214722 1418.983521 1418.270996 1415.630127 1411.692749 1406.008667 1402.032593 1397.606934 1392.427734 1390.386108 1390.372803 1388.783569 1385.807129 1382.461426 1378.96228 1375.187988 1373.496338 1372.219604 1371.076416 1369.21875 1367.456177 1369.662109 1374.889404 1382.284912 1387.199829 1391.254028 1396.171021 1400.493408 1403.102539 1403.396729 1395.238403 1390.373413 1389.285522 1387.354126 1384.953613 1382.103394 1378.952637 1373.907349 1368.485596 1364.111206 1362.223145 1373.355835 1380.34436 1379.876953 1375.091064 1367.147705 1364.579834 1365.451172 1367.202026 1368.103149 1375.720459 1374.725586 1365.505249 1364.405029 1365.244263 1365.443115 1372.584595 1379.24353 1380.85083 1383.165039 1389.562866 1390.576172 1388.62854 1383.457886 1380.524292 1379.693604 1379.927856 1379.925049 1380.787842 1379.006958 1373.675293 1368.087524 1361.342407 1354.428223 1349.61499 1345.790161 1341.665527 1336.978882 1330.121338 1332.805176 1335.43689 1339.309937 1344.874268 1355.750977 1363.680908 1364.588989 1361.430054 1358.762451 1356.262939 1351.685791 1347.212158 1344.679077 1340.155762 1336.023926 1333.088989 +1611.366821 1607.436279 1597.569092 1586.437134 1573.556274 1564.635864 1560.921509 1556.579224 1558.247314 1576.18042 1588.319092 1594.359131 1609.411011 1622.731201 1640.434692 1661.140259 1677.176758 1692.190552 1702.560303 1716.296631 1719.014038 1707.958618 1698.333984 1694.352295 1688.890259 1681.658447 1672.286743 1661.672363 1654.350708 1657.614502 1655.61145 1663.283813 1671.865723 1676.020386 1678.479248 1689.632568 1692.767944 1695.12854 1711.220459 1722.877808 1729.36377 1721.119263 1717.322998 1717.480713 1720.236816 1728.153809 1734.980713 1741.08252 1750.799927 1757.652954 1760.744629 1761.983521 1762.244141 1762.397339 1762.011841 1761.522583 1760.948975 1761.040161 1761.873657 1763.631958 1765.079102 1763.591064 1760.721191 1756.222046 1746.77478 1738.648438 1731.55835 1728.579712 1731.442261 1738.605347 1745.100586 1747.038574 1744.766357 1734.191895 1721.505615 1708.600098 1701.578491 1701.796387 1712.248657 1727.868286 1739.738403 1746.877197 1747.069946 1745.495117 1736.935669 1724.429443 1713.083862 1702.990479 1694.493774 1690.092163 1686.270752 1690.278564 1699.009399 1705.666016 1715.04895 1722.907104 1726.362671 1726.469604 1725.685059 1725.036865 1724.863281 1724.012207 1722.417603 1717.924072 1709.967041 1706.053101 1705.394409 1704.18335 1701.059692 1699.055054 1697.235229 1698.706909 1700.178345 1699.46875 1696.285645 1690.968018 1685.183105 1679.347656 1673.770386 1666.252197 1657.546021 1652.771484 1658.983765 1670.821289 1681.200439 1688.856323 1695.200562 1700.55835 1707.142456 1710.983765 1711.351074 1711.389893 1701.550903 1694.623169 1694.581055 1695.634644 1694.836548 1695.450684 1692.788086 1682.580688 1675.019409 1673.592529 1673.396606 1663.843994 1646.213745 1638.979004 1645.317993 1650.434692 1647.704834 1622.730469 1612.101807 1602.145264 1588.26355 1574.95459 1582.872925 1586.117432 1595.581909 1603.55896 1606.501709 1606.112183 1603.582031 1598.671021 1589.495239 1582.373779 1579.285156 1575.662964 1571.593872 1566.962646 1559.937866 1545.17688 1534.68103 1526.601929 1522.31604 1519.021729 1516.292847 1514.0271 1511.228882 1509.201172 1510.396484 1512.964233 1517.766724 1522.956177 1527.988037 1533.366699 1540.444946 1549.639526 1561.16272 1565.335815 1563.040283 1557.779541 1552.172974 1548.177246 1545.651245 1541.676392 1539.854614 1555.308472 1564.88562 1570.871216 1576.235596 1582.365723 1583.937622 1583.760498 1587.009155 1597.316284 1604.260742 1608.766724 1607.840576 1609.786621 1609.436157 1608.253174 1614.121704 1622.468384 1634.405273 1644.172729 1647.113892 1633.635742 1626.749634 1630.065186 1638.162842 1641.180054 1642.079468 1639.669189 1639.208496 1638.963867 1635.640747 1639.848633 1646.644409 1647.461182 1638.219849 1628.948364 1622.120483 1618.441528 1612.570312 1611.328247 1612.206299 1611.373535 1610.513794 1613.482544 1612.070923 1607.182739 1602.035889 1597.050781 1598.751221 1605.550293 1611.241699 1613.675659 1611.8573 1603.088257 1594.94397 1593.671387 1594.624512 1595.907593 1596.462524 1594.338013 1593.154175 1594.177856 1598.868896 1601.960815 1603.831665 1608.945679 1612.966919 1616.247681 1621.546509 1624.023071 1618.739868 1607.990112 1594.051025 1578.067383 1585.879517 1600.43457 1608.139771 1618.006348 1628.688843 1640.898193 1650.033203 1650.132202 1645.795532 1635.195801 1629.682129 1626.642578 1623.835938 1625.785767 1631.484985 1637.057983 1642.440063 1646.83252 1654.036133 1658.253296 1665.270142 1670.404907 1674.933105 1677.15686 1677.434204 1675.63147 1672.834229 1663.522461 1651.250488 1643.937622 1641.743164 1636.635132 1626.734985 1616.46875 1607.577271 1600.864746 1591.157593 1582.53894 1576.166748 1571.872559 1570.373047 1574.38855 1579.363403 1584.740356 1588.797241 1591.261719 1594.325684 1601.03064 1610.454468 1621.150146 1624.807983 1626.357788 1626.50354 1626.060547 1626.161865 1626.448853 1626.520996 1625.301147 1622.537109 1618.050781 1613.16748 1609.180908 1603.07312 1597.27356 1586.034546 1576.496948 1569.862061 1563.354248 1557.518188 1550.685425 1543.81604 1536.578979 1530.897705 1524.547607 1519.572998 1514.432617 1506.361084 1506.740723 1512.41394 1519.832397 1526.093628 1533.00354 1543.00415 1551.31604 1553.160034 1551.720337 1547.10437 1540.035645 1532.453613 1524.617188 1518.379272 1512.120117 1502.048706 1496.050415 1491.202148 1486.966919 1481.57373 1475.080444 1468.233154 1462.986816 1461.538208 1462.352783 1462.388672 1465.561401 1467.952393 1470.251953 1471.595703 1471.773438 1473.185303 1476.695435 1478.89978 1480.060059 1481.493896 1486.210693 1490.035278 1490.079712 1489.699341 1492.563965 1494.283447 1493.27417 1490.659302 1486.18811 1476.890747 1466.936401 1462.277466 1460.946533 1453.89624 1442.286377 1445.104248 1454.233643 1464.201904 1470.632935 1475.635498 1478.29895 1466.148071 1456.408813 1444.353271 1427.559326 1412.123779 1404.824829 1414.573853 1420.856934 1425.232666 1431.627319 1427.831055 1423.319214 1417.163696 1408.352661 1400.449829 1396.684937 1391.991211 1390.267578 1385.491333 1381.572632 1382.167725 1372.101196 1363.616455 1355.614624 1351.976318 1346.616333 1342.667358 1341.346802 1347.629272 1352.582275 1354.907715 1354.417358 1353.983887 1353.445068 1353.930786 1373.366577 1382.430542 1386.864014 1387.422241 1388.155151 1399.884644 1408.807617 1416.911743 1417.670532 1417.552124 1417.172729 1415.418457 1411.810913 1411.756714 1414.164429 1414.976562 1414.245117 1412.597778 1411.140137 1408.761353 1406.234131 1403.512451 1402.274048 1400.950439 1400.844604 1401.887817 1405.003052 1407.941528 1412.168457 1415.109985 1417.6698 1419.40625 1423.670044 1427.384399 1430.196045 1431.832275 1432.620361 1432.774048 1432.640991 1432.252563 1432.123901 1432.164062 1432.004883 1432.253784 1432.933105 1433.481201 1434.030273 1434.577271 1435.128662 1435.390869 1435.123535 1434.547729 1433.659546 1432.330444 1430.895752 1429.637939 1428.822998 1428.370483 1427.986938 1427.765137 1427.469971 1427.370605 1427.301758 1427.584717 1428.168579 1428.589722 1428.652954 1428.742554 1428.863647 1428.885254 1428.855103 1428.641479 1426.422607 1423.810303 1422.503296 1421.111694 1418.00708 1414.754517 1413.966309 1414.179077 1413.245605 1408.672974 1404.678833 1400.535156 1396.375244 1392.718994 1389.713623 1387.929932 1386.672485 1385.723389 1384.324707 1381.898071 1379.057373 1376.652466 1373.535156 1372.453125 1371.249512 1369.668701 1370.802734 1377.294434 1378.397705 1382.87207 1389.768311 1394.91333 1399.208008 1403.364624 1404.311523 1404.161499 1398.953857 1389.58667 1389.22168 1388.018677 1385.106567 1379.246582 1378.523193 1376.339111 1371.201904 1366.274902 1363.834961 1370.418457 1378.137329 1379.558716 1377.626953 1372.972656 1367.353027 1368.450439 1372.709229 1376.806396 1376.947144 1381.401367 1377.685425 1369.6875 1370.739136 1373.27478 1372.286255 1372.792603 1376.910034 1378.903198 1382.648804 1387.270264 1389.879272 1389.503662 1385.546631 1380.92749 1378.629395 1378.002686 1375.436157 1372.301514 1369.347778 1366.075562 1358.081787 1350.358643 1342.26001 1340.650146 1339.743286 1338.589478 1338.391846 1339.012451 1340.216431 1345.283447 1347.339844 1348.962036 1354.078491 1364.159424 1368.292725 1367.2771 1364.087036 1360.995972 1357.045776 1354.683838 1349.520386 1342.672363 1341.842773 1340.104248 +1630.523438 1625.064941 1619.612549 1606.219727 1595.963501 1587.750977 1579.704346 1568.583252 1558.396851 1560.190552 1574.647095 1589.677246 1604.780273 1618.550659 1631.380615 1651.416016 1672.386719 1682.989868 1695.085205 1702.747925 1703.521606 1691.749146 1684.108032 1675.692749 1670.362549 1660.566528 1656.906128 1650.70752 1640.064209 1639.075439 1639.109863 1646.078491 1653.687012 1661.184692 1671.077637 1682.429932 1682.331543 1693.684082 1708.304443 1717.452881 1718.684937 1711.373901 1706.292847 1711.181274 1719.619507 1730.74231 1736.445801 1742.012329 1752.284546 1758.565796 1762.601318 1764.850708 1765.433594 1765.973511 1766.175659 1765.784668 1766.771362 1768.78772 1770.780273 1770.020264 1768.568726 1766.15686 1762.589966 1757.653198 1748.487427 1740.736816 1734.301514 1733.95813 1741.195068 1747.919067 1751.985474 1751.723511 1746.479736 1736.493286 1723.035767 1711.208984 1704.270752 1705.044556 1713.82373 1725.068848 1736.547974 1745.337769 1746.261963 1743.915283 1735.953491 1725.876831 1713.598877 1702.213257 1694.038208 1689.726807 1686.703735 1695.779663 1703.475952 1710.480225 1719.052979 1728.262939 1732.282349 1731.065552 1729.207886 1727.970703 1727.009766 1725.295654 1722.300659 1719.292236 1715.56543 1711.81897 1710.859741 1710.407593 1708.981323 1706.522583 1708.237915 1709.147583 1709.770874 1708.212891 1701.543213 1693.784302 1685.528076 1677.729736 1670.653564 1663.811401 1655.850342 1656.869385 1659.194092 1666.434082 1675.061157 1686.283081 1695.591187 1702.9823 1709.194458 1711.817017 1712.431274 1709.411621 1697.624512 1687.369141 1685.192139 1685.556763 1683.903442 1685.593384 1686.172852 1677.42334 1666.536255 1662.290894 1660.993286 1654.667847 1637.478638 1624.311646 1633.356689 1642.823242 1644.937622 1626.299805 1615.802124 1604.021362 1588.968018 1571.41748 1570.473511 1578.449341 1587.612305 1595.66394 1599.088501 1596.985718 1595.681641 1590.20813 1582.678833 1574.147461 1570.948853 1566.250366 1562.067017 1555.967407 1549.446777 1537.959717 1528.979248 1523.656738 1520.207153 1517.461304 1515.077148 1512.651733 1511.764526 1513.838135 1515.407959 1515.675415 1517.447021 1522.718872 1527.995117 1533.981934 1541.272949 1550.432861 1562.684937 1572.445557 1571.675171 1565.863403 1560.301025 1556.650269 1552.874878 1549.761108 1546.288696 1549.691528 1563.268433 1572.502686 1584.391846 1590.855347 1595.03772 1594.270142 1594.819336 1601.514282 1610.027832 1617.265259 1617.762573 1617.621338 1618.6698 1616.614014 1618.091431 1625.126953 1638.072144 1647.904541 1645.557617 1633.365967 1632.188599 1633.205811 1642.110229 1646.545532 1647.597656 1647.321899 1647.13269 1646.566895 1645.969482 1646.044922 1647.791138 1646.892822 1638.888672 1631.395996 1625.007935 1620.785889 1618.278809 1616.57666 1617.225464 1617.837646 1617.498535 1616.964966 1614.031982 1609.793091 1607.362427 1605.707642 1605.831421 1609.93335 1616.838623 1616.0177 1612.355957 1600.655518 1595.920898 1597.848389 1601.384644 1602.242554 1601.0896 1596.472046 1596.931763 1598.511353 1604.109497 1609.863281 1611.161377 1612.584229 1614.370728 1617.309692 1621.019653 1624.053101 1619.523926 1612.203491 1599.293335 1581.094116 1586.144897 1599.216309 1605.977051 1613.947388 1623.981689 1634.885254 1646.901611 1650.467285 1649.615601 1643.096436 1635.526611 1633.100708 1631.366943 1633.324585 1632.884521 1636.561768 1641.552612 1646.791016 1654.331055 1660.792847 1664.949341 1671.11377 1671.860962 1674.205811 1674.418579 1673.639282 1670.996338 1663.629028 1652.569336 1643.55481 1634.187622 1626.453125 1616.366333 1607.221191 1599.519409 1592.776611 1585.599731 1579.150635 1574.402954 1569.015991 1564.271362 1567.598755 1572.273926 1576.671753 1581.518677 1586.635986 1593.253662 1599.935547 1608.02356 1619.341553 1623.208618 1624.058472 1623.650513 1622.6698 1622.310425 1623.861084 1623.963867 1622.688232 1620.410522 1617.112793 1613.887817 1610.90271 1604.324463 1598.080322 1587.960327 1578.606812 1571.455078 1562.185913 1556.341675 1550.660767 1543.651855 1536.740112 1531.443604 1526.802612 1521.04248 1514.721558 1507.46167 1500.414062 1502.640137 1507.716064 1511.502075 1516.565674 1533.286255 1544.14563 1551.366577 1551.610962 1548.519653 1542.175537 1535.73877 1528.967285 1522.901245 1517.566406 1511.886841 1501.740845 1496.667236 1492.703125 1488.735718 1482.804199 1476.504395 1470.186035 1462.619873 1457.823975 1457.999756 1459.401978 1461.096924 1462.790894 1463.764282 1463.684937 1464.924316 1468.176514 1470.471191 1471.716309 1472.441162 1474.273926 1477.488159 1479.182251 1479.378662 1480.517944 1480.197388 1477.406982 1475.643677 1473.575806 1467.760254 1455.932373 1448.371582 1447.817139 1442.383545 1430.807251 1430.639404 1438.404663 1450.96814 1457.473755 1459.640137 1461.172119 1464.171875 1458.242188 1446.428345 1426.810303 1412.230957 1404.055664 1394.195679 1401.572266 1412.053345 1415.952759 1416.308228 1412.404297 1404.64856 1398.622437 1393.010254 1388.348389 1382.904785 1377.438354 1368.478149 1363.562622 1361.73645 1359.464844 1357.242554 1354.097778 1346.984985 1342.651733 1342.092407 1348.494385 1355.348999 1358.098022 1360.855957 1361.316772 1360.192749 1356.991821 1354.159424 1352.501099 1368.269531 1377.51709 1376.956909 1384.790894 1394.731812 1402.737061 1410.588623 1415.429077 1417.949341 1418.079346 1416.949463 1414.58606 1415.608521 1418.782104 1420.076538 1419.516235 1418.420654 1416.698853 1413.640137 1411.083374 1409.112793 1407.19458 1404.231201 1401.827026 1401.96521 1401.697388 1402.933472 1408.425415 1411.131226 1412.428467 1413.372681 1417.367798 1421.889771 1425.822144 1427.891602 1428.560425 1429.038208 1429.00708 1428.737183 1429.117676 1429.262817 1429.18103 1429.579956 1431.029785 1431.894897 1432.812256 1433.533081 1434.189331 1434.611938 1434.731812 1434.347168 1433.577148 1432.355103 1430.722168 1428.639404 1427.832764 1427.622559 1427.357178 1427.307007 1427.165161 1426.949951 1426.827026 1426.964111 1428.291748 1428.674805 1428.942627 1429.104004 1429.023926 1428.910767 1428.760986 1427.22937 1423.65332 1419.319336 1415.810791 1415.087402 1411.93689 1405.298584 1404.13147 1403.771973 1400.296387 1396.819336 1394.404419 1391.459229 1388.913452 1387.552734 1385.978271 1384.787109 1383.417725 1382.138672 1380.754639 1378.880005 1376.855469 1375.025146 1376.137939 1377.927002 1378.861084 1377.516968 1382.590454 1387.596558 1389.917236 1390.12561 1395.460327 1400.690918 1404.422363 1405.704102 1405.006104 1402.12793 1397.660156 1393.448975 1392.166138 1389.84668 1385.532715 1379.964233 1376.516235 1373.507324 1369.516602 1365.42688 1371.102417 1378.535889 1381.420654 1379.09436 1377.31311 1377.410278 1379.871216 1376.824585 1380.216431 1383.814941 1385.035767 1385.467163 1378.319092 1375.050171 1378.079346 1380.949707 1380.994263 1378.315674 1377.112305 1377.691406 1379.270752 1385.644165 1388.024536 1387.849243 1385.777222 1379.496826 1377.397583 1375.349731 1368.625366 1364.432861 1363.745972 1360.308716 1353.398438 1353.504028 1351.55127 1345.879639 1341.682129 1340.445557 1346.222412 1349.189819 1349.095703 1353.224365 1356.484741 1355.781982 1355.379883 1363.517578 1369.19104 1371.062256 1368.996094 1366.449585 1362.91333 1359.075073 1355.243896 1353.582764 1350.072144 1346.585327 +1654.644287 1650.379395 1642.281982 1629.519287 1613.008179 1605.687134 1601.868042 1593.838501 1583.663696 1564.816772 1560.989502 1583.96167 1597.079834 1613.985596 1624.495605 1640.442871 1658.545532 1672.706543 1679.690186 1683.992188 1682.990479 1676.299438 1666.921875 1658.984863 1654.33606 1640.542969 1635.672729 1630.563477 1629.078491 1629.890991 1633.457397 1637.147217 1640.636353 1644.531372 1656.929199 1666.403687 1681.536255 1694.202637 1703.187256 1706.126953 1703.728027 1695.132568 1700.581665 1710.2771 1718.451416 1730.185547 1739.580444 1746.626099 1754.876953 1761.640747 1766.462524 1767.97522 1769.577271 1770.844727 1771.012695 1771.037109 1772.505737 1774.383301 1775.122681 1773.703857 1771.550171 1768.987183 1764.916626 1760.151978 1753.596191 1743.581665 1739.336426 1741.56665 1749.323975 1756.023071 1757.887817 1755.70752 1747.036987 1737.526123 1723.841919 1713.662964 1706.364624 1709.200073 1719.63855 1728.754639 1735.307251 1742.092163 1743.141235 1740.44812 1734.619995 1726.000732 1713.990723 1702.353149 1694.529175 1689.877441 1689.312378 1699.367554 1707.948975 1714.161865 1722.455566 1732.994507 1733.988159 1732.902832 1731.170654 1729.883545 1729.054565 1726.954224 1724.442261 1722.293457 1720.746582 1720.912598 1720.555054 1719.522339 1716.97168 1716.020752 1716.796509 1717.937256 1715.576538 1710.748291 1700.517578 1691.135742 1683.363892 1674.009155 1666.830688 1659.786255 1658.026367 1665.700928 1673.308594 1671.091797 1675.851196 1685.447388 1695.237305 1703.9375 1709.783569 1711.476318 1711.972046 1708.960449 1694.749878 1683.455566 1675.478516 1671.581177 1671.80127 1676.549438 1678.206421 1670.947632 1660.152466 1652.591919 1649.095581 1644.270508 1629.450684 1611.901123 1619.789062 1630.335571 1630.572021 1620.326904 1612.236206 1603.504028 1586.019531 1569.453003 1562.159668 1570.341064 1577.130249 1582.893188 1589.16748 1586.886475 1585.548218 1581.796753 1576.57312 1566.850464 1559.238159 1554.867554 1550.830322 1545.994385 1540.248413 1531.773804 1523.906616 1521.113403 1518.361816 1515.771851 1513.335571 1511.230469 1519.582642 1523.907593 1522.710815 1519.292114 1519.472778 1524.654419 1528.738892 1534.013794 1541.435913 1551.614868 1563.48584 1577.365234 1580.047485 1577.021729 1570.946533 1566.218018 1561.908081 1556.892334 1551.384521 1547.198853 1557.382202 1571.195068 1582.817871 1596.290161 1603.092407 1607.066895 1607.76416 1610.605469 1620.063354 1625.788086 1625.971924 1625.497437 1625.783203 1623.946655 1620.901978 1628.044434 1641.009766 1649.696655 1647.450684 1639.358154 1633.88501 1638.207275 1646.605225 1649.453247 1649.475586 1649.12439 1648.401001 1648.505981 1648.599487 1648.545532 1648.383423 1647.212158 1641.280518 1634.259399 1628.388062 1622.878906 1622.178101 1622.060913 1622.208374 1623.389893 1623.069336 1621.589478 1618.863647 1614.618774 1612.767334 1613.179077 1614.271362 1620.070435 1622.504028 1617.279541 1611.886963 1597.580688 1600.221436 1605.565186 1610.825806 1610.952515 1607.493652 1598.85144 1604.043701 1607.929443 1610.135864 1611.794189 1612.557495 1612.924683 1613.43457 1614.234741 1614.66272 1614.224243 1611.231445 1608.978027 1600.794922 1585.163208 1585.027588 1598.547363 1604.598022 1610.827759 1620.046875 1630.089233 1643.322876 1649.915405 1650.945068 1649.549683 1645.984131 1640.858765 1637.638306 1637.396973 1637.283691 1639.232544 1642.818237 1646.838013 1653.065186 1658.091797 1662.912476 1667.4021 1670.033569 1672.12085 1670.608765 1670.897827 1668.136108 1662.545532 1656.112915 1649.546265 1638.846558 1626.296875 1614.567627 1605.055542 1595.587646 1586.365234 1580.86731 1573.030884 1570.649658 1566.502197 1562.572998 1563.380981 1568.631348 1575.920898 1583.294678 1589.88916 1596.706177 1604.060059 1610.127808 1616.939209 1621.213501 1621.585571 1621.288696 1621.096558 1621.385254 1621.70752 1621.693604 1620.828369 1618.699707 1616.025879 1613.342041 1610.367065 1603.056274 1595.498901 1587.327271 1579.354004 1571.845337 1562.725098 1556.245605 1551.026978 1544.293579 1538.105103 1532.206665 1527.292236 1521.383545 1514.582764 1507.439941 1500.357788 1491.577759 1494.770142 1496.918335 1505.501831 1517.453735 1530.781006 1539.924805 1548.326782 1548.447021 1543.754028 1538.374512 1532.9552 1527.258179 1521.90625 1517.341553 1511.563477 1502.503662 1497.456421 1493.595459 1489.57373 1484.15686 1477.468994 1468.80957 1461.719604 1456.615356 1453.545044 1451.988525 1454.512207 1456.344116 1456.850952 1458.063232 1460.368408 1462.469604 1464.309692 1465.185669 1466.449707 1467.774658 1468.727295 1468.70813 1470.55542 1469.248047 1462.230225 1464.324585 1463.879517 1459.673096 1451.151245 1437.649292 1437.886597 1430.978638 1422.51062 1414.260986 1423.409668 1437.916992 1441.928589 1444.366211 1449.443481 1451.73938 1450.216919 1443.897461 1424.648315 1411.830444 1404.111206 1389.091431 1390.751343 1396.321411 1398.447021 1396.126587 1392.495483 1391.106079 1390.81665 1384.816528 1379.414917 1374.018555 1369.641602 1362.630859 1357.66626 1355.856323 1354.004028 1350.051758 1345.51416 1342.504517 1350.982422 1351.975464 1356.631958 1359.65332 1363.155029 1367.877808 1371.206055 1367.109253 1359.087891 1353.80896 1354.505859 1357.475586 1363.313232 1366.710693 1379.346924 1388.60437 1393.791748 1398.217285 1401.403809 1413.893921 1418.409668 1417.875366 1418.200195 1421.170288 1423.778564 1425.609619 1425.715576 1424.542114 1421.928711 1418.581177 1416.115845 1415.053833 1413.380615 1409.624634 1407.210571 1406.7052 1406.379028 1406.594727 1408.618652 1410.500854 1411.510864 1411.766479 1413.093018 1415.499023 1418.366699 1421.334961 1423.402954 1424.577881 1425.454468 1425.917847 1426.353271 1426.566162 1426.752808 1427.029419 1429.547852 1430.89209 1431.923828 1432.748779 1433.50061 1434.134888 1434.42334 1434.355225 1433.754272 1432.550781 1430.799316 1427.338013 1426.971069 1426.929443 1426.658325 1426.408813 1426.214966 1425.533203 1424.775269 1424.540039 1425.398682 1427.071167 1427.844849 1427.756104 1427.074341 1425.841797 1424.921753 1422.364014 1418.6604 1415.074341 1408.372681 1403.053467 1401.971313 1400.079346 1398.865967 1397.866455 1394.730835 1390.891846 1388.698364 1387.363159 1385.986084 1384.56897 1383.10498 1381.601929 1380.78772 1378.663452 1377.970703 1377.636841 1376.843262 1380.501221 1381.49707 1384.552246 1386.673706 1386.579956 1389.397949 1395.294678 1399.785767 1399.935181 1400.549072 1404.618164 1406.544312 1406.602905 1405.757446 1404.227417 1403.622437 1403.982056 1399.099487 1392.748535 1387.664185 1381.366333 1376.71228 1371.160156 1367.629517 1370.915894 1378.704346 1385.826416 1386.769287 1377.903809 1378.420044 1382.043457 1384.154053 1383.169312 1386.844727 1391.184814 1391.892944 1391.419678 1382.521606 1378.733154 1382.653809 1385.347778 1385.616699 1383.359863 1381.791382 1378.648926 1380.310425 1387.224854 1388.828125 1388.667236 1387.186401 1384.143677 1381.200562 1378.802124 1372.929077 1367.321899 1366.541626 1367.126221 1366.439697 1363.974243 1357.416016 1350.707886 1350.462524 1349.282837 1355.899902 1361.002808 1359.508179 1358.010498 1361.52002 1365.860596 1367.422119 1365.465576 1368.329346 1375.953857 1375.740723 1372.559692 1367.858154 1364.313965 1362.260864 1359.580444 1356.377319 1352.683472 +1664.987061 1663.341553 1655.826416 1645.169189 1634.612793 1627.046265 1621.280151 1611.908569 1602.38855 1591.420532 1575.367676 1568.552734 1589.820557 1605.522705 1616.06897 1629.643433 1645.079468 1657.274658 1664.043701 1668.210938 1666.62793 1659.565796 1652.229492 1645.415894 1634.120728 1625.354126 1620.050415 1625.161377 1635.782837 1639.532471 1642.923462 1648.491821 1649.310425 1648.858032 1650.456665 1663.204834 1675.01001 1683.264771 1691.605591 1693.54895 1687.192627 1687.074951 1699.857544 1709.991943 1717.581421 1731.123657 1745.906006 1752.273071 1758.538818 1766.639771 1772.392578 1778.044922 1779.543091 1779.224121 1778.940796 1778.831787 1779.165283 1779.591064 1779.167236 1776.89624 1773.948853 1770.812744 1767.098389 1762.506836 1757.427856 1746.559326 1741.796143 1748.948975 1757.743652 1762.890259 1761.313843 1757.094849 1747.373535 1737.831909 1724.529053 1714.9646 1709.068481 1718.783447 1728.888916 1734.879761 1739.469727 1741.067139 1739.969238 1736.46875 1732.041138 1723.011353 1711.996948 1702.368164 1694.985107 1689.848999 1692.950195 1702.774414 1710.473877 1716.515991 1725.618042 1734.081299 1734.487549 1733.915405 1732.814453 1732.155762 1731.197021 1729.132324 1725.274658 1722.471924 1721.820557 1722.361084 1722.641968 1722.602539 1721.635132 1721.835815 1721.455444 1721.490601 1715.963623 1708.393677 1694.888672 1686.68396 1679.091553 1669.665771 1663.399414 1661.348633 1670.099609 1676.170166 1679.962646 1678.541992 1680.821167 1686.900024 1697.073975 1705.601074 1710.047119 1710.584717 1710.219849 1707.372803 1697.815674 1685.418701 1671.303223 1662.408081 1660.871582 1665.533447 1669.575684 1664.490356 1654.188965 1643.872314 1638.789307 1633.896851 1623.035645 1600.527832 1606.889038 1619.001099 1618.648071 1608.802368 1599.61792 1600.318848 1585.262085 1565.34314 1557.720947 1561.65564 1566.492432 1575.128418 1577.451782 1573.202026 1577.154663 1573.263794 1569.929688 1558.205811 1547.664185 1544.517212 1541.427124 1538.089966 1533.782349 1527.923096 1522.762573 1519.093384 1516.437256 1514.366211 1511.694214 1519.038452 1526.918823 1527.362305 1526.296387 1524.55835 1521.142822 1525.708374 1529.76355 1534.323486 1542.180054 1552.43457 1563.279907 1577.312988 1587.154785 1586.368164 1581.996582 1575.869141 1571.610474 1565.413696 1558.787598 1552.162109 1556.009521 1567.283447 1580.226196 1593.141602 1606.927246 1617.86084 1625.132324 1626.101318 1628.602539 1631.464233 1633.084106 1632.382935 1630.8302 1629.956177 1629.052856 1635.442627 1646.268311 1651.886475 1650.15918 1644.438965 1644.611694 1644.008179 1649.024048 1650.464233 1650.11084 1649.477295 1649.012939 1648.507202 1648.527344 1648.963745 1648.948242 1648.164307 1643.798706 1636.010498 1631.938721 1628.13623 1626.173706 1626.382202 1626.771973 1627.305908 1626.387817 1625.031372 1622.950806 1620.868042 1619.480347 1619.649048 1622.38208 1623.409058 1622.162598 1614.446777 1608.186523 1608.475464 1608.214233 1612.945068 1616.908447 1617.438721 1614.220093 1609.050293 1611.919312 1612.067139 1612.301514 1612.923584 1612.822998 1612.548096 1611.780396 1610.783081 1608.928467 1605.61792 1601.179443 1596.552979 1595.355957 1588.303223 1584.242798 1598.164307 1604.217529 1610.729248 1619.218018 1628.326782 1640.157104 1648.983154 1650.72168 1651.406006 1650.07373 1647.644043 1644.325562 1641.756714 1641.434204 1645.025513 1647.275635 1651.021851 1656.895874 1658.967041 1663.531128 1669.461182 1672.057983 1671.446533 1660.912109 1662.812866 1661.571045 1659.224121 1656.661621 1649.951294 1644.716553 1631.961548 1619.53125 1607.63623 1598.464478 1588.27478 1580.531738 1574.245117 1565.007446 1563.591797 1562.543213 1564.737793 1571.273071 1578.534912 1586.246094 1594.168213 1602.882446 1610.705811 1613.342773 1616.604858 1619.055908 1619.992432 1620.189819 1620.473755 1620.591919 1620.633545 1620.194092 1619.264526 1617.297729 1614.791504 1612.228638 1608.774902 1601.066772 1593.078613 1585.171997 1576.47229 1569.379639 1560.922241 1554.92981 1548.68396 1542.905396 1536.671875 1531.375244 1525.930298 1519.242798 1511.770264 1503.78894 1497.694702 1491.103882 1485.947144 1488.709717 1495.407593 1502.956787 1510.875 1520.569092 1535.082275 1542.404663 1542.928345 1540.494141 1537.198486 1531.702515 1526.202637 1521.091919 1516.431763 1510.524536 1502.548462 1497.802368 1493.853149 1489.973267 1485.027344 1479.003174 1471.936157 1465.673096 1458.977905 1452.012939 1448.946045 1449.987793 1450.300049 1450.789062 1453.302979 1455.317017 1456.534668 1457.401855 1458.938843 1459.81958 1459.666138 1459.36438 1460.339111 1458.07251 1451.630127 1452.764648 1454.83606 1452.857178 1444.67041 1428.860962 1418.692871 1411.954834 1412.192871 1402.620728 1409.450562 1421.532349 1424.97522 1421.670288 1429.531006 1439.688965 1441.472534 1435.503784 1422.692749 1409.483765 1397.013794 1388.865112 1387.42627 1387.519043 1386.719849 1385.919067 1384.486572 1381.107666 1378.191162 1373.574341 1368.636108 1364.097412 1359.544434 1353.378418 1350.270386 1346.471069 1344.114868 1345.461914 1349.647217 1349.596191 1356.054199 1358.351929 1361.167236 1364.376465 1371.884277 1386.489624 1385.900513 1376.012085 1362.41333 1354.378052 1353.874023 1355.516602 1360.04248 1364.12207 1370.029663 1378.809082 1384.011841 1386.67749 1393.673828 1404.186157 1411.322266 1415.597534 1419.913574 1425.042603 1428.589233 1428.929565 1429.068115 1429.011597 1427.235229 1423.962036 1421.896362 1420.082764 1417.814575 1414.526367 1412.165283 1412.67688 1412.098022 1411.505981 1410.97937 1411.319092 1411.902832 1412.370239 1412.449219 1412.84375 1412.970337 1413.726807 1416.430176 1419.653809 1422.489502 1424.188843 1425.282715 1425.896851 1426.627075 1427.277588 1428.962769 1430.464111 1431.500977 1432.450806 1433.39978 1434.050903 1434.459595 1434.571045 1434.18396 1433.214722 1431.503174 1429.220825 1427.409058 1426.776489 1426.245117 1425.872925 1425.380127 1424.351929 1422.859741 1421.219604 1420.743164 1422.159668 1423.012329 1423.062012 1421.794189 1419.30249 1418.556641 1417.366333 1414.028931 1409.380859 1404.751099 1400.360107 1398.545654 1397.096069 1395.6427 1394.024292 1391.904541 1388.924316 1387.032837 1385.376709 1384.302246 1383.675659 1383.546997 1383.025757 1381.627075 1379.469849 1379.141602 1382.412476 1385.830322 1387.593384 1388.137207 1392.135864 1394.581543 1393.864014 1395.825073 1402.242432 1405.389282 1404.146362 1404.509766 1407.499756 1408.101562 1407.585693 1406.564819 1405.211914 1404.481079 1403.789062 1401.157837 1392.53894 1387.849487 1381.605469 1376.483398 1369.234863 1371.494263 1377.776978 1386.879272 1391.72876 1387.988647 1378.783447 1384.201172 1390.249878 1390.784546 1388.331787 1391.282349 1395.817749 1397.839233 1395.623779 1387.533081 1386.267212 1388.325684 1391.071045 1391.436523 1388.932373 1388.343872 1385.647461 1388.8302 1391.480103 1391.708496 1391.343872 1390.214111 1389.527954 1385.672485 1380.161133 1376.283203 1373.332642 1373.075195 1372.552124 1370.150391 1367.054932 1360.108521 1358.005127 1358.283081 1356.226562 1360.565796 1367.924316 1368.978882 1365.821045 1365.830688 1365.459229 1369.09668 1371.810425 1375.872803 1379.530029 1380.370239 1378.542603 1373.220093 1368.925537 1367.77356 1363.561401 1359.205688 1356.475342 +1664.422974 1672.508301 1668.460938 1658.392456 1648.079712 1645.718994 1640.890137 1633.868774 1624.103516 1611.088379 1596.60144 1582.402588 1575.943604 1589.638794 1605.719482 1616.543335 1628.488159 1638.571289 1648.337036 1649.955566 1648.092529 1642.27478 1633.463867 1627.932373 1623.742676 1618.175659 1627.71167 1638.493042 1645.261597 1647.953125 1648.684082 1651.783325 1654.256226 1656.204346 1654.47168 1654.170288 1658.427002 1669.783936 1677.778442 1677.417603 1674.20105 1687.208374 1698.514771 1709.430908 1720.989258 1738.570068 1751.732422 1759.103394 1765.654785 1774.520264 1782.591553 1788.55249 1791.597046 1791.177124 1790.787109 1789.954834 1788.530396 1786.590576 1783.396729 1779.849731 1776.511841 1772.841431 1768.715576 1763.535156 1758.165405 1748.013916 1746.739014 1756.266357 1765.953369 1769.502197 1763.540161 1756.779175 1747.583618 1737.939209 1727.169189 1717.843994 1716.769897 1728.86377 1736.379517 1742.055176 1743.53125 1742.516113 1739.02063 1732.66272 1726.176758 1717.061157 1709.200073 1702.302612 1695.609375 1690.205078 1695.291504 1704.468018 1711.908813 1718.321045 1727.690918 1734.442749 1734.545044 1734.199219 1733.617554 1733.388794 1732.907593 1730.322266 1722.725342 1719.209106 1718.99707 1721.369141 1722.948608 1721.841431 1719.741333 1719.432983 1718.917847 1716.311401 1709.874512 1701.356079 1690.859497 1682.518555 1676.071655 1668.584106 1663.494019 1675.423462 1682.379883 1685.611816 1687.328857 1686.038696 1685.89563 1692.75061 1700.481323 1708.620239 1707.366821 1703.735352 1702.583374 1699.986572 1693.395874 1680.661255 1666.433228 1654.546875 1650.577759 1654.643921 1659.462036 1658.984863 1647.594604 1635.411499 1629.13208 1625.654785 1617.490356 1596.878296 1595.139526 1607.566162 1608.400879 1597.910278 1590.291748 1587.905884 1584.834839 1567.199829 1553.798462 1552.200073 1557.60083 1566.788574 1566.458984 1562.452026 1573.132324 1565.42395 1558.483032 1549.444946 1539.647827 1536.767456 1534.141968 1532.196777 1528.920898 1525.009521 1521.304077 1517.33728 1515.457031 1517.180176 1522.769287 1527.175659 1529.796387 1530.449829 1529.630127 1527.59082 1525.091064 1525.533691 1529.887329 1534.85791 1542.712036 1552.141113 1562.005371 1574.14209 1584.788086 1589.88562 1590.430298 1587.299805 1581.243652 1575.564941 1566.874146 1558.668701 1558.407349 1566.736084 1578.474243 1591.595825 1605.034302 1619.190552 1630.301758 1635.651123 1637.830688 1640.533325 1641.404663 1640.36438 1637.444946 1637.046997 1637.704224 1643.362183 1652.188599 1657.130371 1654.06958 1650.356934 1649.884399 1649.806274 1650.829956 1650.896484 1650.265381 1649.595581 1648.465088 1646.996216 1647.359619 1648.448242 1649.320679 1649.34375 1647.364502 1641.187744 1635.989624 1632.073975 1630.223145 1630.582275 1631.211792 1631.292603 1629.670044 1627.587036 1625.526367 1624.400513 1623.89209 1623.987793 1624.263428 1623.500122 1621.454834 1618.850342 1617.161011 1618.422729 1617.647217 1620.419678 1622.814087 1623.042725 1622.639404 1619.22876 1616.082397 1615.015259 1614.279663 1613.639648 1612.93689 1612.000854 1610.496948 1607.999878 1604.486328 1599.55481 1596.266357 1596.233521 1596.095825 1593.723389 1587.254761 1596.605957 1603.268311 1610.244019 1618.115601 1628.442871 1639.504883 1647.864502 1650.618774 1651.992432 1653.064331 1652.761841 1649.69104 1645.951416 1644.047852 1648.496826 1654.571655 1660.831909 1664.817993 1667.37207 1669.834106 1672.022339 1672.541382 1664.813965 1654.890137 1651.567017 1652.077148 1649.005981 1651.642578 1646.714966 1634.341187 1623.257568 1613.705688 1604.498169 1595.390015 1586.131104 1578.585571 1572.463135 1564.777344 1561.393921 1562.618164 1566.284912 1572.880371 1580.156494 1587.901855 1597.305908 1608.508667 1611.998413 1614.160522 1616.183594 1617.916382 1618.921509 1619.424683 1619.588379 1619.722168 1619.422363 1618.977173 1617.942871 1616.255859 1613.908081 1610.880493 1605.922241 1597.738037 1591.62085 1584.296753 1575.687378 1568.365234 1560.620728 1554.85791 1547.864136 1542.285889 1535.621094 1530.969971 1524.113525 1516.774292 1510.600464 1504.560913 1499.316772 1492.855713 1485.884399 1483.162598 1486.270996 1489.489258 1499.047974 1510.852905 1519.684082 1532.088257 1540.626099 1541.129517 1539.445557 1536.061279 1530.070679 1524.604492 1520.150269 1515.070435 1508.183472 1501.835449 1497.366211 1493.19165 1490.291016 1487.419434 1481.788696 1475.303589 1468.739014 1462.812134 1454.832031 1446.795532 1445.275513 1446.003296 1446.687988 1448.394653 1448.983521 1449.527588 1452.206787 1453.515137 1453.539917 1450.585693 1449.460938 1446.130493 1441.464233 1441.527222 1444.289307 1443.046509 1438.890625 1426.481201 1408.351074 1398.708374 1398.783203 1390.352051 1396.824951 1404.229858 1407.662842 1406.528076 1411.61731 1421.705566 1426.451904 1424.363525 1415.788696 1405.2677 1392.356201 1387.223267 1384.604004 1382.785767 1381.83728 1381.253418 1380.339111 1374.271606 1364.973877 1359.671265 1354.023926 1350.071655 1347.170776 1345.62793 1348.517212 1353.078369 1355.703735 1356.526855 1357.14563 1355.972046 1358.045776 1362.654541 1365.615112 1371.091797 1386.041748 1398.811157 1393.258789 1379.761719 1362.883789 1354.164307 1358.662964 1357.326294 1360.195801 1363.079224 1364.310181 1366.365601 1375.135254 1378.910034 1386.838867 1394.066406 1398.560669 1401.273926 1411.329224 1418.256836 1422.985352 1425.593384 1428.185303 1430.150513 1429.460327 1428.297974 1427.352051 1424.740234 1422.016846 1418.505493 1416.871094 1417.230347 1417.024658 1415.897095 1414.15332 1413.130981 1413.833984 1414.913208 1413.739136 1413.48999 1413.914551 1414.069458 1414.998901 1418.095337 1421.551147 1423.580688 1424.898682 1426.434692 1427.617676 1428.362305 1429.369629 1430.4823 1431.651978 1432.582886 1433.626953 1434.424194 1435.026245 1435.208862 1434.85376 1434.080322 1432.818848 1431.082275 1428.942017 1427.498779 1426.112793 1425.960083 1425.285645 1423.901367 1421.496338 1417.451416 1415.527466 1416.890137 1416.924805 1417.38855 1417.414551 1413.289185 1412.319824 1411.184326 1406.868896 1402.677368 1400.936157 1398.350952 1395.945557 1394.731323 1393.177368 1390.900024 1389.602051 1387.602051 1389.459717 1389.08728 1388.078125 1388.645874 1389.699463 1390.36853 1388.480225 1388.327637 1392.922119 1394.148438 1395.756348 1394.228394 1393.502563 1399.168457 1403.083618 1403.232056 1401.351318 1406.756958 1409.254272 1409.654419 1409.733887 1410.351196 1409.803833 1408.360352 1406.435059 1404.364014 1403.231934 1400.28479 1393.078369 1388.496582 1384.853638 1380.308105 1375.065186 1370.708984 1377.287598 1384.032593 1392.2771 1392.581055 1388.276855 1387.089722 1391.223511 1394.497314 1394.55249 1390.785034 1393.473877 1399.737061 1403.557373 1400.129028 1391.786133 1391.448242 1394.640503 1397.828369 1397.498657 1395.589844 1394.078979 1390.898071 1393.194702 1396.419678 1397.568604 1397.105103 1395.353271 1393.069458 1390.033447 1385.828369 1381.072388 1378.569458 1379.774048 1378.248047 1370.638672 1365.13269 1366.729614 1367.644897 1365.403076 1362.805298 1364.885254 1368.216064 1371.731689 1373.307007 1372.868408 1371.338867 1371.228882 1373.798096 1378.804199 1381.021118 1381.804565 1378.559692 1373.130493 1369.175049 1366.057007 1362.444214 1358.713013 1356.230835 +1652.505371 1662.328125 1668.634155 1673.794922 1668.407227 1666.780273 1663.768555 1654.486816 1645.251587 1631.786865 1614.040405 1601.367432 1595.001587 1580.4729 1586.74353 1601.959106 1613.747681 1621.775024 1627.082031 1630.468262 1627.530884 1618.297852 1614.348145 1615.940308 1615.218018 1624.838867 1638.076904 1647.770264 1652.921021 1655.538818 1656.232422 1655.898926 1657.626709 1662.841431 1663.888306 1664.393188 1661.296875 1660.870972 1666.185181 1666.339966 1667.654541 1678.213257 1695.964844 1706.163818 1721.043335 1739.545044 1754.594971 1765.651367 1776.158325 1786.208374 1794.852783 1804.535522 1805.284668 1803.97644 1802.247314 1800.156616 1797.050415 1793.320068 1788.161133 1782.770996 1778.554321 1774.598877 1770.252441 1764.914062 1758.755981 1753.638184 1752.901245 1759.302856 1767.028809 1769.624878 1762.863403 1755.838135 1747.765869 1738.763794 1729.032349 1719.768677 1723.807617 1734.460815 1742.065918 1746.248047 1746.051514 1744.466064 1739.165283 1731.839478 1723.174194 1715.736694 1708.081421 1702.73999 1697.969849 1691.538086 1696.057007 1705.213379 1712.965576 1720.583374 1729.114136 1734.404053 1734.470459 1733.956543 1733.105469 1732.802002 1733.251831 1728.164917 1719.522095 1714.969238 1712.597778 1716.584961 1721.716553 1719.793579 1715.653442 1712.551514 1711.344604 1709.490479 1704.262085 1695.639282 1687.26001 1680.255493 1674.557373 1666.462524 1672.15564 1684.218994 1690.657349 1694.371582 1694.79248 1694.206543 1695.095947 1697.084106 1702.829956 1707.030762 1698.490601 1692.263428 1691.687988 1690.72229 1684.661987 1676.397095 1662.383057 1646.74292 1640.587891 1643.034424 1648.847412 1649.486816 1643.119751 1631.055908 1619.769897 1617.723755 1611.635254 1594.654297 1582.075562 1596.395752 1601.466309 1582.659302 1579.754639 1576.286255 1575.989746 1566.555664 1553.862915 1547.462158 1550.57605 1555.890015 1553.878784 1554.485962 1563.411621 1555.440063 1544.869141 1539.341675 1534.409668 1531.527832 1528.866455 1527.342163 1524.928955 1522.210327 1519.518921 1517.353394 1523.792114 1526.814941 1529.054565 1532.136841 1534.394897 1534.771851 1533.26709 1530.109009 1527.341309 1525.911499 1529.731079 1534.661743 1541.818237 1550.766968 1560.662354 1570.616699 1581.045654 1589.850952 1596.644409 1595.812256 1589.617798 1582.530884 1575.412109 1565.089355 1558.48645 1566.101685 1577.921875 1587.933594 1599.853394 1613.399048 1627.357544 1640.976196 1647.938232 1649.754272 1649.924438 1649.883911 1647.180664 1647.564941 1652.352661 1656.483765 1660.859985 1661.972168 1657.969116 1655.064453 1654.387329 1653.025269 1652.030273 1651.10791 1650.182007 1648.756104 1646.800537 1644.394287 1642.885742 1645.497192 1648.741577 1649.341431 1648.807617 1646.208496 1639.995972 1634.36731 1633.611206 1634.397339 1635.172607 1634.815186 1632.415771 1629.515869 1627.246582 1626.129272 1625.565186 1625.279175 1625.086304 1623.770264 1621.554321 1622.603516 1623.207886 1623.339233 1623.276245 1623.956909 1624.323242 1624.22644 1623.632202 1622.19519 1619.644287 1617.158936 1615.382324 1613.990845 1612.71582 1610.754761 1608.983765 1606.6604 1603.055542 1598.379395 1598.053467 1597.998291 1599.46875 1599.134766 1595.316284 1592.178101 1600.444946 1605.976929 1612.553223 1625.498535 1635.52063 1643.13623 1647.772583 1649.460205 1655.094116 1657.990967 1657.045532 1653.203979 1648.451416 1653.526367 1662.23877 1669.94458 1677.414307 1683.944458 1683.944824 1675.31189 1663.08728 1651.711548 1645.457886 1641.324463 1639.520874 1642.222168 1648.888916 1647.189697 1635.733032 1622.576538 1612.255249 1603.06311 1592.831299 1583.165527 1575.002808 1567.933105 1562.463135 1559.435913 1560.943359 1565.668701 1572.796021 1580.740234 1589.803223 1599.519287 1610.19043 1612.674561 1614.412598 1615.999268 1617.310059 1618.278931 1618.718628 1618.87207 1618.86145 1618.631958 1618.186646 1617.276611 1615.772949 1613.406006 1610.636963 1605.009033 1597.299194 1591.496216 1585.008301 1577.801392 1571.02124 1564.113892 1557.911743 1551.727661 1545.758545 1538.901611 1532.801025 1526.904907 1520.551025 1513.049561 1507.947388 1500.876587 1495.509277 1490.007446 1482.579346 1479.897461 1483.64917 1490.07251 1495.989502 1505.493286 1516.590576 1529.888916 1539.485962 1540.090454 1538.59668 1533.939941 1528.376709 1523.557251 1518.171753 1511.803711 1505.631592 1499.864868 1494.976929 1488.366455 1488.803711 1488.748779 1485.758057 1478.917114 1472.686279 1467.636841 1460.974854 1450.877686 1441.741333 1439.300415 1440.871704 1441.472778 1440.979858 1443.643799 1445.376099 1445.286133 1442.645508 1436.144897 1429.86792 1429.448364 1427.125 1426.505127 1430.334595 1424.969971 1416.036377 1404.08667 1394.843872 1384.055908 1378.435791 1382.652466 1388.561768 1389.458374 1391.376465 1400.376709 1406.406128 1411.282837 1409.823486 1404.165649 1395.478027 1388.104614 1384.227661 1381.549438 1379.983521 1371.837524 1367.977539 1362.328857 1354.637451 1351.194458 1347.838623 1346.515259 1347.661377 1351.707397 1355.745972 1357.097656 1358.743896 1360.170044 1360.789551 1361.457764 1362.468506 1364.196045 1365.724854 1370.506592 1375.730347 1393.316284 1404.921021 1394.994995 1378.115601 1361.400269 1357.792114 1376.070801 1379.876831 1371.204956 1364.726318 1363.255981 1363.300171 1365.720947 1373.157593 1378.459839 1383.871094 1388.102295 1389.614258 1398.526123 1406.189575 1409.87561 1412.473755 1418.891846 1425.439819 1429.484985 1429.837402 1429.479858 1428.272461 1425.935791 1422.901001 1422.071289 1422.086792 1421.75769 1420.356567 1418.570312 1416.941895 1417.661865 1418.918945 1418.64624 1418.102295 1417.508423 1417.287964 1418.012817 1419.95813 1422.171265 1423.996826 1425.485596 1426.92981 1427.753784 1428.762451 1429.829102 1430.978638 1432.099487 1433.1698 1434.253662 1435.146484 1435.769287 1436.008545 1435.833618 1435.229492 1434.120117 1432.61499 1430.516357 1428.40625 1426.975952 1427.081055 1426.991455 1425.426758 1422.373535 1418.415771 1415.224243 1413.736206 1414.010864 1413.768677 1413.596924 1410.166626 1404.843628 1403.358643 1401.576416 1399.926514 1397.944214 1395.346924 1393.580444 1392.381836 1391.336792 1390.847534 1391.465332 1391.478638 1393.946777 1393.40918 1393.569702 1395.14917 1397.004028 1398.142334 1396.552612 1395.812012 1400.249634 1403.593872 1404.720825 1402.878662 1400.673218 1405.590698 1409.046509 1409.112061 1408.842529 1412.317871 1414.105713 1414.33313 1413.544922 1412.921021 1411.448364 1408.920654 1405.668823 1401.881714 1399.714966 1392.117554 1388.703613 1385.750854 1380.968872 1377.496216 1373.037354 1374.445557 1383.859497 1391.105103 1399.509766 1396.204468 1389.446289 1389.289673 1393.385986 1398.440308 1400.055908 1398.89209 1398.572266 1401.739014 1404.235962 1403.199951 1402.256226 1402.243042 1403.091919 1404.456055 1403.730591 1401.568481 1401.212769 1399.715576 1400.508667 1402.770508 1403.718872 1403.467041 1400.895752 1394.709106 1392.937622 1390.893311 1387.009033 1384.253906 1381.392212 1378.067505 1375.095215 1374.261475 1375.45166 1375.967041 1371.797607 1366.358398 1365.19519 1369.053223 1373.186157 1378.179321 1379.889526 1377.828003 1369.178711 1366.615479 1371.963501 1376.08728 1373.555542 1369.271118 1366.93335 1363.61499 1360.51355 1358.300049 1355.673828 1352.869873 +1639.049316 1644.306152 1653.654175 1665.765503 1677.349609 1686.245728 1684.486938 1679.210449 1667.290039 1651.578491 1632.730713 1619.805786 1615.680298 1605.732422 1588.571655 1584.961792 1592.992798 1599.85022 1601.543701 1600.325562 1605.25647 1605.219604 1609.702026 1616.306763 1622.474976 1632.475342 1644.494873 1654.887207 1661.258789 1665.73877 1665.463745 1660.098389 1663.020752 1672.805786 1677.419678 1677.12207 1673.318604 1667.917236 1667.780396 1671.692627 1671.760986 1668.658325 1686.906128 1701.385742 1716.255371 1733.962036 1748.712158 1762.152466 1773.408325 1784.840454 1793.344971 1803.775879 1808.130981 1809.102417 1808.383545 1807.14502 1803.462891 1797.77417 1791.864136 1785.580322 1780.332031 1775.992065 1771.328979 1765.736694 1759.250732 1755.413818 1756.67334 1760.171631 1764.821411 1766.410278 1761.549438 1754.561157 1748.602539 1740.880127 1732.099243 1724.689331 1727.593994 1737.461426 1746.019043 1749.253418 1748.89917 1746.023315 1739.361328 1731.794434 1721.566162 1715.482178 1709.720947 1704.690308 1699.681396 1693.371338 1696.477661 1705.175415 1713.955811 1722.156982 1729.838013 1733.930664 1733.418579 1732.006104 1729.784058 1728.131714 1730.263184 1726.299927 1718.570435 1710.665894 1705.909912 1709.13208 1716.977783 1717.767456 1710.618042 1705.243896 1703.931519 1702.267212 1697.771973 1690.78064 1683.501831 1677.907471 1672.836426 1667.095459 1679.002563 1693.263794 1702.096191 1707.813477 1708.102905 1703.915405 1699.745239 1696.993408 1697.841919 1698.212036 1691.972534 1682.067139 1680.041138 1679.154663 1673.842407 1669.658813 1661.168091 1643.577637 1632.588257 1628.858276 1631.640015 1635.02832 1635.523438 1626.314575 1611.615234 1608.216919 1605.144531 1592.832275 1576.312622 1583.630249 1594.27478 1578.848633 1567.939575 1563.318848 1564.517456 1555.656494 1549.094727 1545.662231 1545.628906 1546.759399 1545.821777 1546.3927 1549.937012 1541.585205 1534.930664 1532.240723 1529.973877 1527.248901 1524.074097 1523.220215 1521.694214 1520.241455 1520.509277 1525.207275 1528.240601 1530.858887 1533.448364 1536.4823 1538.535889 1538.506226 1536.850586 1533.470947 1530.041016 1528.136108 1529.47229 1533.876099 1539.951904 1549.093018 1559.513306 1567.832764 1577.180054 1588.405151 1600.671021 1606.066162 1600.325928 1588.617188 1580.298828 1571.548462 1562.086548 1564.06665 1576.66748 1586.652222 1599.345459 1611.291016 1622.752686 1637.678101 1648.612427 1651.310791 1656.675415 1657.987061 1657.797363 1659.344604 1665.366699 1669.27417 1671.428711 1667.03833 1660.370239 1659.204346 1657.108276 1654.782593 1652.82373 1651.33606 1649.610718 1647.581909 1644.818359 1639.702271 1635.623901 1640.065918 1645.474609 1647.637085 1648.432983 1648.358643 1646.171387 1640.665649 1637.522705 1636.389038 1635.998169 1635.119507 1632.655273 1629.345947 1627.271118 1626.113647 1625.708618 1625.790283 1625.244385 1624.584229 1623.775024 1623.51709 1623.987549 1624.734741 1625.571655 1625.678711 1625.50647 1624.950195 1624.120239 1622.413696 1620.351196 1617.922607 1615.861328 1613.97522 1611.688477 1609.803467 1608.61438 1606.625 1603.99939 1601.735474 1601.241089 1601.147339 1601.570435 1600.980591 1599.213867 1596.692627 1599.985962 1611.384155 1612.968262 1620.026733 1625.576538 1633.411621 1641.377319 1646.299805 1657.474976 1661.629639 1664.745361 1664.283691 1657.432373 1662.842896 1675.411621 1685.036499 1686.316895 1683.736572 1677.610474 1667.674438 1657.708496 1648.029907 1636.538452 1634.767944 1631.416382 1634.423828 1640.900757 1638.984863 1630.401733 1621.591675 1613.76709 1604.702026 1594.079834 1584.204224 1575.187988 1565.369141 1558.407471 1552.674683 1557.782349 1563.083862 1569.973022 1580.602295 1590.391724 1600.772949 1610.375 1613.011108 1614.550781 1615.828003 1616.973877 1617.851929 1618.282715 1618.467407 1618.391357 1618.303345 1617.98291 1617.397339 1616.371216 1614.386475 1611.235596 1605.930786 1598.507935 1594.647095 1589.95105 1584.006714 1576.362915 1569.400513 1562.85376 1555.991943 1549.678833 1542.286621 1536.129517 1530.268066 1525.280884 1517.552979 1511.887451 1504.949341 1499.423706 1493.623291 1487.875 1477.518555 1476.924072 1482.36853 1486.956543 1494.348022 1504.875122 1516.848999 1528.761963 1537.593018 1538.673218 1535.344971 1530.888062 1526.880859 1522.019409 1515.991699 1510.134888 1503.22876 1497.069336 1490.019165 1487.73938 1488.206543 1488.914917 1488.629517 1482.832764 1476.271606 1472.108398 1465.842407 1456.879272 1444.765747 1437.616699 1436.281006 1435.798218 1436.192139 1436.420654 1435.259399 1431.876099 1424.526245 1413.993652 1415.02832 1417.012695 1411.752197 1407.703491 1406.076538 1402.114868 1394.894287 1388.5271 1380.712402 1378.120239 1374.615356 1372.559082 1374.403442 1378.814453 1390.888672 1394.651611 1395.96106 1393.869263 1390.823242 1386.899658 1382.944458 1380.302002 1379.395508 1363.103882 1354.442383 1352.039429 1350.106079 1348.015381 1346.889282 1346.71875 1350.344727 1354.444702 1356.953125 1359.301025 1361.438477 1363.178955 1364.602661 1365.063843 1365.168579 1367.621948 1369.705444 1373.120239 1376.684937 1384.633179 1398.294556 1400.373291 1391.334351 1373.620361 1358.80542 1371.528564 1388.452881 1392.132324 1386.450317 1382.41394 1374.666992 1363.588135 1364.994019 1367.670898 1372.159424 1374.736572 1375.987427 1378.980957 1388.18396 1393.654419 1398.077271 1402.779785 1407.05127 1411.893066 1421.340088 1428.491455 1430.308716 1429.852417 1428.349365 1426.091187 1426.392456 1426.942017 1426.871094 1425.765259 1424.000488 1422.457153 1422.510254 1423.578125 1426.091431 1424.859375 1421.843506 1420.86792 1421.486084 1422.63855 1423.810547 1425.093262 1426.001709 1426.610718 1426.962402 1428.616577 1430.143311 1431.502563 1432.663208 1433.840698 1435.020264 1435.920288 1436.600952 1436.84668 1436.821777 1436.412964 1435.698975 1434.285645 1432.408936 1430.380493 1429.032227 1428.578003 1428.233398 1427.623535 1426.704834 1422.163086 1417.833984 1414.760498 1414.591187 1413.867798 1411.021484 1405.110107 1402.300415 1401.855957 1400.218994 1398.253174 1396.34021 1395.719971 1396.168335 1396.492554 1397.166138 1397.584106 1397.129883 1396.552246 1398.205322 1399.606445 1400.692871 1403.344727 1405.929932 1406.69397 1404.274292 1401.929565 1406.963623 1410.597778 1411.403931 1408.384766 1406.607544 1412.313599 1416.12085 1416.38501 1416.528442 1417.394165 1417.480225 1416.915894 1416.390869 1415.085938 1412.475586 1409.046509 1405.813477 1402.760986 1398.41272 1394.409912 1390.914917 1384.446655 1380.114746 1375.138184 1372.848022 1379.276855 1390.853271 1399.258911 1404.783569 1396.699585 1388.880493 1390.234985 1397.67749 1403.112671 1404.036255 1402.762573 1401.790894 1403.258789 1405.21167 1405.146851 1405.070679 1405.386963 1405.469116 1405.616577 1405.5625 1405.365112 1404.853516 1404.417969 1404.487305 1404.905273 1404.393433 1400.567261 1393.825806 1391.861694 1392.948853 1392.87915 1391.229614 1387.704346 1382.15918 1377.828857 1378.654785 1380.151367 1380.632202 1380.21228 1378.401978 1371.440552 1369.00647 1369.298706 1370.012817 1373.901367 1374.957153 1370.86145 1364.575806 1355.295898 1362.071167 1366.196289 1363.964233 1357.553101 1356.11792 1353.132568 1353.094971 1352.787109 1351.991333 1348.96582 +1619.849365 1637.101074 1654.677124 1668.496094 1677.90332 1685.2052 1692.607788 1694.485352 1684.497437 1671.904175 1651.796387 1639.510376 1636.413574 1628.604126 1615.517822 1595.433472 1590.325439 1589.860229 1598.449219 1603.692261 1607.981079 1616.033813 1624.383789 1632.852173 1638.977661 1640.975586 1649.02356 1663.769897 1673.620361 1679.387695 1679.713623 1673.599854 1669.748413 1684.78418 1692.287476 1693.785645 1690.901855 1684.539673 1681.377808 1680.393799 1676.935791 1673.121704 1678.860596 1695.045654 1711.95105 1727.664185 1739.03894 1750.455322 1762.258545 1771.841797 1781.924805 1787.829956 1795.464478 1804.985962 1807.703735 1806.877686 1806.346558 1799.968018 1793.605591 1787.568481 1782.433228 1777.165161 1771.754517 1767.304443 1762.405396 1759.30603 1761.029297 1763.311523 1765.143799 1763.935425 1759.845703 1754.977661 1749.324463 1742.748291 1734.369507 1728.552979 1729.575684 1740.379761 1749.336792 1753.788574 1753.207764 1747.075439 1739.916626 1731.718018 1723.803711 1719.581665 1719.025513 1712.118896 1704.706055 1693.950195 1696.549438 1705.283936 1714.94165 1722.353149 1728.168091 1731.590698 1730.899414 1728.473511 1724.409668 1721.307007 1723.436279 1722.28186 1718.10376 1709.091553 1703.994995 1702.922729 1707.073242 1709.329834 1706.933228 1700.312744 1696.235352 1695.170654 1691.937134 1685.675171 1680.095215 1675.192627 1670.219116 1671.784546 1687.765503 1700.075317 1710.167114 1711.56604 1710.197266 1707.476074 1700.821045 1694.469482 1690.197876 1688.217651 1684.313965 1673.955322 1668.091064 1669.145996 1666.775391 1659.369995 1660.723267 1648.151245 1629.181274 1617.760254 1616.204346 1621.483521 1623.331177 1618.463867 1606.36853 1598.595459 1598.874023 1588.807983 1572.970215 1574.687256 1580.300659 1573.973511 1560.288574 1553.754272 1551.156494 1545.573975 1543.317261 1541.331787 1541.228516 1541.056641 1540.558594 1539.795288 1534.756348 1532.576538 1530.590698 1527.616577 1526.436157 1526.465332 1527.464844 1527.552856 1528.725098 1531.019653 1532.124756 1532.608032 1533.196777 1533.810059 1535.788208 1539.800293 1541.663818 1541.620117 1539.302368 1535.62854 1532.889282 1531.096924 1529.450684 1534.980591 1540.53772 1547.349121 1556.132446 1564.605103 1573.240845 1583.979248 1598.072388 1606.232666 1611.161377 1594.779663 1585.398682 1576.949707 1567.849121 1563.244385 1574.254272 1582.205322 1593.379517 1603.775391 1616.581787 1626.868042 1631.372437 1643.003296 1653.429565 1661.553467 1665.148682 1670.106445 1674.264648 1674.222168 1672.400146 1666.788452 1662.09314 1659.846436 1657.393066 1655.211548 1653.123535 1651.290527 1649.435669 1647.393066 1642.76001 1636.871826 1632.285278 1634.611694 1638.508545 1641.511475 1644.872803 1647.141113 1645.697266 1641.902954 1638.659302 1636.814819 1635.25415 1633.94397 1630.703613 1627.652222 1625.555664 1623.710571 1624.180054 1625.429688 1625.316772 1624.063843 1622.76001 1623.312134 1623.96875 1625.594482 1626.851318 1627.075562 1626.618286 1625.760376 1624.311157 1622.272949 1620.026123 1618.040039 1616.113159 1613.654663 1610.358398 1609.62439 1608.820312 1607.206421 1606.157837 1605.402466 1604.843872 1604.067017 1603.65271 1603.083618 1602.094482 1600.426514 1600.852661 1609.23291 1613.572021 1617.83313 1622.729248 1635.942871 1644.502441 1653.696655 1661.448975 1666.040405 1670.785767 1674.168823 1672.574707 1676.731079 1685.494995 1684.416138 1682.80896 1675.126709 1666.310913 1657.823853 1649.567871 1642.352295 1634.829956 1624.458618 1624.675049 1624.492065 1625.826782 1625.29187 1620.283081 1613.393311 1609.447266 1602.701294 1593.800781 1583.319458 1572.360107 1563.075684 1555.896729 1549.835815 1555.939575 1562.363403 1571.318726 1579.478149 1590.255371 1602.386597 1610.604614 1613.038818 1614.574707 1615.920288 1616.862305 1617.635742 1618.193115 1618.435425 1618.506836 1618.436768 1618.332275 1618.18689 1618.069214 1617.540894 1615.492554 1609.528809 1604.427856 1599.795654 1594.483765 1588.352905 1581.178711 1573.907593 1566.337524 1559.095215 1551.712646 1544.536621 1537.775146 1531.929565 1526.218506 1520.251221 1514.481812 1508.234131 1501.969482 1495.860352 1489.611084 1480.973145 1473.707397 1475.563477 1479.585327 1485.132446 1494.319214 1505.848267 1518.189819 1528.198975 1534.089478 1534.421143 1531.586426 1528.457031 1525.099121 1519.307129 1513.678955 1506.179199 1499.226685 1491.58728 1487.366089 1487.093628 1488.05188 1488.814209 1489.699707 1485.425537 1480.066772 1473.30249 1465.259644 1455.98645 1445.693848 1436.501221 1432.581055 1430.88623 1427.697754 1424.879395 1422.211304 1414.772827 1414.243164 1404.719727 1400.118042 1397.756104 1393.987671 1388.800781 1387.960571 1386.354004 1388.235352 1390.075317 1390.550781 1383.782593 1376.033203 1367.712158 1365.419922 1373.152954 1379.463013 1381.937256 1381.818481 1381.900513 1380.746704 1375.579468 1361.141357 1354.199341 1351.355591 1350.118042 1348.943848 1347.788696 1347.626709 1347.456909 1347.545166 1355.569946 1358.093262 1360.775635 1363.091064 1365.318848 1367.666138 1369.487915 1370.295532 1370.72522 1373.795532 1378.629395 1383.120605 1388.26062 1395.63147 1405.588745 1404.550537 1392.025635 1371.896973 1362.597412 1381.442505 1396.839844 1402.675659 1399.956909 1393.904419 1391.125732 1386.131836 1374.606079 1367.806274 1368.124512 1370.187744 1371.887573 1374.092285 1377.762207 1381.944092 1385.375122 1388.580322 1391.523071 1398.889526 1412.241821 1422.620605 1429.882324 1430.138794 1429.662842 1428.873535 1429.129028 1429.218994 1429.233521 1428.848755 1427.901001 1425.468262 1427.028809 1427.779175 1429.033936 1427.993042 1425.051147 1423.958984 1425.066528 1426.213989 1426.549316 1426.42334 1426.654663 1426.767456 1427.300903 1428.266602 1430.593018 1432.108765 1433.380981 1434.615234 1435.742554 1436.678345 1437.346191 1437.675049 1437.829346 1437.682007 1437.405762 1436.379883 1434.524536 1432.778442 1431.32605 1430.192993 1429.37915 1428.636963 1427.428101 1424.363403 1420.467773 1418.053101 1416.485352 1416.261597 1414.612305 1409.531006 1405.16687 1403.748535 1400.893677 1398.170166 1397.27478 1399.320068 1401.581909 1403.503296 1405.220337 1405.051392 1402.018311 1400.191162 1402.638062 1407.283936 1414.249756 1416.091064 1416.884155 1415.631714 1410.100952 1408.750366 1413.503418 1416.952637 1417.33252 1415.337524 1412.997437 1417.475708 1420.949707 1422.073242 1421.871216 1420.433594 1418.73877 1417.774902 1416.855103 1415.17627 1411.66748 1408.188843 1405.384277 1401.895752 1396.544434 1392.148071 1387.234985 1381.285278 1377.108765 1374.605103 1377.244263 1384.830566 1395.897461 1404.943115 1404.34375 1397.24292 1390.846558 1392.394409 1401.340576 1404.872314 1405.47937 1404.899536 1404.707275 1405.076294 1405.987671 1405.606445 1404.006592 1404.183716 1405.328247 1405.16333 1405.143311 1405.124023 1405.26001 1405.206543 1405.279907 1403.854126 1395.812866 1387.740601 1387.160522 1388.382202 1391.271484 1392.280029 1392.071533 1388.702393 1383.932983 1380.945801 1380.334473 1380.999634 1380.650757 1377.392578 1371.142334 1370.877686 1369.685791 1369.211914 1365.206299 1359.055786 1360.976929 1360.377197 1355.290283 1345.71106 1349.821045 1351.661133 1355.436157 1355.694946 1347.598145 1341.18396 1344.244141 1347.970459 1348.296875 1346.22522 +1624.415405 1641.907227 1657.37207 1669.806519 1678.279663 1684.379272 1696.349976 1698.408936 1697.807617 1685.147949 1669.337524 1658.725342 1655.984253 1649.975708 1639.419678 1620.494507 1614.42749 1621.118652 1625.753906 1624.660278 1622.317017 1631.307617 1640.077148 1645.805908 1653.87085 1657.453369 1660.446899 1675.919922 1688.702271 1694.479614 1695.12915 1691.835205 1685.214233 1700.285645 1706.583374 1708.211426 1707.737915 1701.80127 1698.826538 1690.880371 1682.536865 1677.085693 1674.630371 1691.610596 1708.616699 1719.289185 1733.020264 1739.062256 1750.850586 1760.955444 1769.862427 1779.21936 1785.655273 1791.500854 1796.809082 1799.366943 1800.213135 1797.960083 1793.294678 1788.318726 1783.226074 1777.924805 1771.921509 1767.207153 1765.06958 1763.865967 1764.925781 1767.44519 1768.910645 1766.48645 1761.62146 1756.045288 1750.129639 1743.594849 1735.296021 1729.797729 1730.36438 1743.701904 1752.882812 1758.096802 1756.893066 1750.402222 1742.920654 1736.186523 1730.796875 1727.426514 1724.873291 1720.435303 1706.402344 1694.625122 1700.771606 1707.08728 1715.499023 1722.220337 1725.789917 1727.076416 1726.740234 1724.717163 1720.649292 1717.14502 1716.855225 1717.890015 1714.481689 1708.573608 1702.343628 1696.498413 1697.185059 1701.978149 1700.452759 1695.069946 1690.828125 1688.819946 1685.647583 1681.234131 1676.765381 1672.686401 1676.215454 1685.208984 1694.953369 1706.238037 1711.600952 1711.932373 1710.782471 1707.765381 1700.426025 1692.791138 1682.118896 1674.251343 1670.125244 1665.253418 1659.132324 1656.506348 1655.399658 1646.901855 1648.653442 1648.273926 1627.556152 1607.145996 1601.62793 1603.733032 1604.956177 1611.197754 1602.392334 1589.890747 1586.849976 1584.107788 1572.689209 1560.890259 1566.169312 1558.836792 1550.838257 1546.520752 1543.944946 1539.031616 1536.831299 1536.859619 1537.060303 1536.942505 1535.259399 1533.441895 1530.601807 1529.44397 1529.34436 1529.990601 1531.612427 1533.898804 1535.086548 1536.276733 1538.647095 1540.206909 1539.776001 1538.622192 1537.13623 1536.05896 1538.027466 1543.456299 1547.312988 1546.252075 1542.224487 1536.823364 1535.309814 1536.704346 1532.723267 1533.534424 1539.918091 1545.472046 1552.311035 1559.818359 1568.726562 1579.289307 1590.270264 1598.104614 1602.915039 1597.814941 1589.73938 1582.351074 1572.955933 1570.35437 1571.408569 1577.919434 1587.001343 1598.116821 1606.745483 1614.69165 1623.072876 1634.837891 1647.816162 1658.759888 1667.0625 1673.5271 1675.203125 1674.794067 1669.499268 1659.967163 1659.348145 1658.863647 1656.925171 1654.640503 1652.47583 1650.890137 1649.036865 1646.761841 1641.276367 1635.466797 1630.140991 1626.724243 1630.742432 1632.464722 1638.907959 1642.228394 1640.424561 1638.391113 1637.426758 1635.987915 1633.647827 1629.538208 1625.427979 1623.532715 1620.684937 1619.138916 1619.569824 1622.306641 1623.768066 1621.111572 1619.242554 1619.412598 1622.939575 1626.106934 1628.22876 1628.481812 1627.88208 1626.205444 1624.404907 1621.775635 1620.020386 1618.539307 1617.249146 1615.316162 1612.572632 1611.802246 1610.291016 1608.626099 1608.954224 1609.333862 1608.077026 1606.6427 1605.680176 1605.837036 1606.783813 1605.61499 1602.357666 1609.588501 1614.217651 1620.041382 1627.064209 1638.068115 1647.497803 1657.277588 1664.960205 1670.910156 1674.543823 1677.499634 1680.815063 1683.867188 1682.108398 1675.115112 1674.97583 1671.891113 1665.01062 1658.556519 1649.427002 1643.047974 1632.106812 1625.307251 1615.25708 1612.432739 1614.931396 1613.903564 1608.757568 1604.347046 1600.992676 1598.127686 1589.436157 1576.719604 1565.859619 1557.784668 1551.853149 1549.571045 1554.213745 1559.830566 1567.710327 1580.320068 1594.051392 1606.843872 1610.826538 1613.059448 1614.660767 1616.061157 1617.100586 1617.993896 1618.683472 1618.974121 1618.947144 1618.858887 1618.907593 1619.52063 1621.178467 1622.27063 1621.915039 1615.124634 1609.278687 1603.084595 1597.963257 1590.685303 1584.328857 1576.980835 1569.448242 1561.379517 1552.724243 1545.379272 1538.401245 1532.551636 1526.605835 1520.965698 1515.159668 1509.175659 1502.765625 1496.590942 1489.222412 1483.708618 1477.741699 1469.686523 1472.603882 1478.382324 1483.762085 1491.859985 1504.452148 1517.188477 1526.735352 1531.421021 1531.145752 1529.282593 1526.486572 1521.729126 1515.485596 1508.610352 1500.628052 1493.465698 1488.037109 1486.297119 1485.437744 1486.378418 1488.300537 1489.796021 1483.952515 1475.281372 1470.116821 1464.549927 1453.457764 1447.322632 1443.20459 1439.605347 1434.239624 1431.467163 1428.578613 1427.58606 1424.927734 1421.821533 1418.369141 1411.945557 1407.736816 1405.510864 1404.056152 1403.960815 1405.055908 1406.029541 1399.227783 1391.17627 1377.210938 1366.025757 1362.166992 1363.481445 1365.973511 1369.421265 1371.462646 1365.632812 1357.229126 1353.320923 1351.676636 1350.520142 1349.696655 1348.727539 1348.413818 1348.221191 1348.053589 1348.473511 1353.085205 1357.881348 1361.636475 1364.393066 1366.935425 1369.788696 1372.97522 1376.416504 1376.726074 1375.630005 1379.1604 1385.868408 1392.401733 1398.814331 1410.065552 1412.977051 1405.608765 1392.858765 1371.962036 1365.923462 1384.808228 1399.935791 1408.376709 1409.085449 1404.675049 1400.215332 1396.055298 1389.73938 1384.263794 1383.281494 1382.401123 1380.152222 1375.809326 1374.41748 1375.523682 1377.488037 1381.39917 1385.2323 1390.510376 1403.305664 1413.922119 1426.904419 1430.154907 1429.782349 1429.872681 1430.160522 1430.202393 1430.097168 1429.950806 1429.387329 1428.047485 1429.319092 1430.092163 1430.167969 1429.614502 1427.832642 1426.910034 1427.40979 1427.711182 1428.064087 1428.050415 1427.74939 1427.429932 1428.392212 1429.673096 1431.167236 1432.737915 1434.061768 1435.358643 1436.434204 1437.475708 1438.273193 1438.507202 1438.42688 1438.932373 1439.166504 1438.93103 1437.139282 1435.157349 1433.246826 1431.761475 1430.591064 1429.248535 1426.557251 1424.394409 1422.622803 1421.096924 1419.178711 1417.865479 1415.998169 1411.901123 1406.976562 1404.489868 1401.276245 1398.322998 1400.843018 1403.864258 1408.314575 1413.27002 1415.38147 1414.121826 1406.684937 1401.5896 1405.909302 1414.590454 1422.035156 1425.201538 1425.696289 1421.629028 1414.911255 1413.191895 1416.969849 1420.567871 1421.566406 1420.842285 1420.449829 1422.975342 1426.442261 1427.61438 1426.250977 1422.104248 1418.848633 1417.299561 1415.120117 1412.022461 1408.66748 1405.626465 1402.880371 1397.823975 1392.921265 1387.879883 1380.498901 1377.093018 1376.092773 1382.392944 1390.090698 1394.675293 1399.669556 1404.490479 1405.050171 1402.122559 1395.836304 1398.821045 1404.168213 1406.703369 1407.376831 1406.565308 1406.58313 1404.714722 1403.13501 1400.668335 1397.550903 1397.676392 1399.947266 1400.342529 1399.047852 1398.329102 1400.27771 1399.238525 1398.311157 1395.941772 1390.240723 1382.821777 1379.492188 1380.912476 1386.522583 1388.634277 1388.357422 1385.874023 1381.052124 1379.602539 1378.508911 1377.715576 1377.692017 1372.856445 1364.596069 1365.004272 1366.183228 1364.41394 1356.85022 1349.24353 1351.295166 1351.652344 1346.577393 1338.028931 1341.328003 1341.882812 1340.088745 1347.562256 1345.950684 1332.834106 1334.036377 1343.192139 1345.396851 1344.939087 +1632.888428 1652.934082 1664.563965 1674.256348 1682.225952 1689.578491 1696.36499 1698.646118 1699.404419 1694.324707 1683.202026 1676.362427 1676.095337 1671.373535 1660.503784 1644.003174 1640.214966 1649.691895 1652.026123 1645.352783 1640.485718 1643.789429 1652.680786 1659.808105 1667.338379 1668.846924 1671.115479 1690.383789 1701.611328 1706.161011 1708.27356 1707.11438 1702.000854 1708.74646 1717.46521 1720.886841 1719.561523 1714.844604 1708.599609 1700.140625 1688.984009 1681.305542 1677.327271 1688.25647 1703.622681 1713.353149 1722.324097 1732.2146 1742.398804 1751.967651 1760.661499 1768.939575 1776.740723 1780.503296 1783.171387 1788.383179 1791.674683 1793.09314 1790.241821 1786.508789 1782.486328 1777.539429 1772.036499 1767.797729 1766.863037 1766.527222 1768.447632 1770.731567 1771.24939 1769.026855 1763.872681 1757.235596 1750.944946 1744.337402 1738.649536 1734.624512 1738.089111 1746.074341 1757.364258 1759.110474 1758.128296 1756.299438 1749.452148 1744.565796 1738.361084 1733.486206 1726.658569 1719.189087 1703.782593 1699.285767 1705.209961 1711.067993 1717.047119 1722.124878 1723.982178 1724.523682 1723.434937 1721.315552 1718.609619 1714.658691 1709.898071 1710.554932 1710.398438 1707.06958 1699.71582 1694.901123 1693.081177 1693.557251 1693.437012 1689.85376 1685.915405 1683.901733 1680.523682 1677.135132 1676.238647 1684.719482 1691.544067 1697.218262 1704.133545 1710.376343 1712.393555 1711.860229 1709.945068 1705.282104 1698.284302 1689.72644 1678.082397 1667.75647 1661.53418 1657.29541 1653.298462 1647.943481 1641.436279 1636.317871 1632.321289 1634.018066 1627.025391 1608.817871 1594.543335 1587.548584 1587.397827 1593.774536 1593.771362 1582.58252 1575.488892 1576.021362 1568.987793 1559.485596 1554.346924 1546.629395 1545.491821 1542.918457 1539.592773 1538.726074 1539.703979 1539.824463 1538.437134 1537.694336 1537.166992 1535.37915 1533.528442 1533.285034 1534.069702 1534.937378 1536.69751 1541.206177 1544.091797 1545.885986 1546.569214 1546.354004 1545.268555 1543.599365 1541.836792 1541.263428 1543.245483 1547.381226 1550.641724 1549.91748 1545.703979 1539.868286 1537.922363 1539.503296 1537.80249 1533.205322 1537.997681 1545.337402 1550.556396 1557.214111 1564.111938 1573.248657 1583.027588 1590.855225 1595.106079 1594.468262 1591.693848 1588.45166 1581.94043 1577.146118 1573.296021 1575.522339 1581.547485 1588.175171 1598.469971 1606.578491 1616.897217 1629.980347 1642.64563 1653.844849 1663.240234 1673.048584 1675.442871 1674.066895 1665.163574 1656.52063 1655.960449 1655.687256 1653.995117 1652.690186 1651.532349 1649.990723 1648.128052 1645.937866 1640.95813 1635.4021 1628.49292 1621.73938 1620.955811 1626.5177 1637.266846 1638.471069 1635.832031 1632.025024 1635.487183 1635.217285 1631.612183 1625.235596 1620.124268 1615.71106 1611.788086 1610.825073 1612.872803 1616.607178 1615.901611 1614.071167 1613.188477 1613.966919 1621.874634 1626.090454 1630.610596 1630.990845 1629.311279 1626.953247 1623.82605 1621.698486 1620.475342 1619.287598 1618.515625 1618.386719 1618.227173 1616.984497 1614.621704 1611.709595 1613.168091 1613.290894 1610.608276 1608.245972 1607.505127 1607.643188 1610.279541 1611.24292 1608.037109 1609.688477 1615.147583 1620.530273 1628.099487 1637.190918 1648.978149 1658.556152 1665.956665 1672.843262 1675.168091 1680.586426 1683.991699 1682.2771 1674.751953 1667.752686 1665.609497 1665.823975 1663.610718 1660.991699 1655.358887 1648.922729 1639.161743 1629.661743 1618.7948 1608.064331 1603.46167 1604.410522 1599.150269 1593.418579 1589.268066 1588.260864 1581.37854 1570.651489 1561.0271 1554.535522 1549.652954 1548.470947 1550.995117 1560.950806 1571.225464 1584.705688 1597.302368 1608.292725 1612.089478 1614.323975 1615.45459 1616.450073 1617.528687 1618.993774 1619.787964 1620.027344 1619.865723 1619.496582 1619.383179 1620.185303 1621.885742 1622.571045 1623.302979 1618.44458 1611.505859 1604.551758 1598.421021 1591.743652 1585.321655 1578.540649 1571.185181 1561.440674 1553.365356 1545.864258 1538.28479 1532.777954 1526.789062 1521.826416 1516.075073 1510.557983 1504.710449 1499.306396 1492.918823 1487.05188 1479.857666 1472.981079 1466.192627 1470.720703 1476.398193 1481.307129 1488.37207 1501.036743 1514.413818 1526.886719 1530.635986 1529.424438 1527.28186 1523.366455 1517.093994 1510.422974 1503.090942 1496.372437 1490.666138 1487.018921 1483.216309 1478.957886 1482.347168 1488.052856 1488.403564 1481.226318 1475.802856 1469.207764 1462.619385 1458.478882 1454.51709 1449.14502 1443.211548 1437.968994 1437.680786 1438.465698 1436.393066 1433.04541 1431.158936 1427.639526 1422.370117 1415.859741 1413.138184 1410.407593 1403.55603 1396.464966 1387.672607 1375.084961 1365.312988 1361.973755 1359.44812 1357.373535 1358.780762 1358.650635 1356.415649 1352.919312 1351.362183 1350.632446 1350.333984 1349.756592 1349.310303 1349.077515 1348.914551 1348.786621 1348.749634 1350.504639 1353.300171 1359.777222 1364.732788 1368.164185 1371.327759 1374.539795 1378.157593 1381.822876 1382.542847 1380.777588 1385.897827 1393.185791 1401.220947 1413.917847 1417.047119 1413.048828 1403.593384 1389.83313 1372.805176 1368.286743 1383.540771 1399.047119 1411.763062 1416.728638 1412.56958 1407.988281 1403.555908 1397.759521 1391.509033 1390.542725 1390.05896 1388.477539 1386.01123 1385.077148 1384.36377 1380.763306 1378.31311 1382.152222 1386.797119 1393.974243 1406.71521 1418.689575 1427.519897 1427.961792 1427.98877 1430.36499 1430.888672 1430.677979 1430.432495 1430.509521 1430.439819 1430.768311 1431.049683 1431.139038 1430.803101 1430.0271 1429.137695 1428.780518 1428.914917 1429.066772 1429.296997 1429.474609 1429.712402 1430.05249 1431.0177 1432.143677 1433.450439 1434.880493 1436.075684 1437.151367 1438.054565 1438.851562 1439.100708 1439.404663 1439.977905 1440.198853 1439.975464 1438.778076 1436.953735 1435.15625 1433.339111 1431.616455 1429.870605 1428.092896 1425.83252 1424.963989 1424.970337 1422.169189 1418.738892 1415.68103 1412.276245 1407.492432 1404.164429 1400.905029 1400.875122 1406.243408 1411.155762 1416.420288 1420.239502 1420.030396 1417.172485 1410.428955 1402.415161 1406.254028 1414.321655 1427.209473 1428.654663 1428.735107 1427.277588 1421.970093 1420.723145 1421.549438 1424.482544 1426.52832 1427.453857 1427.31958 1428.171021 1428.318359 1428.021484 1425.491089 1420.342285 1416.292603 1413.641357 1410.323853 1406.883057 1404.096313 1400.975708 1396.920532 1391.503418 1387.837402 1379.609253 1377.355835 1377.463745 1380.869141 1391.5354 1397.736572 1403.502441 1403.923096 1406.785645 1407.560181 1404.894409 1401.224365 1403.417358 1406.572876 1409.462402 1409.811768 1408.024414 1404.587036 1397.219238 1390.278931 1389.657593 1388.760254 1389.051636 1391.69397 1391.963501 1390.240234 1388.423584 1390.42981 1388.240112 1387.602539 1387.684448 1383.989624 1378.131592 1374.633179 1377.486084 1382.106201 1382.673706 1382.312744 1381.646973 1378.891357 1376.295532 1372.966919 1364.542114 1366.862793 1367.574341 1361.303711 1352.950195 1355.14856 1353.053101 1347.405396 1339.195068 1340.755859 1339.283081 1338.154419 1327.041016 1328.279785 1328.935303 1326.544678 1333.8302 1336.586182 1324.907837 1318.22229 1330.84668 1340.422241 1344.018066 +1637.592651 1658.051636 1669.437134 1679.80957 1683.998291 1691.776855 1696.822998 1698.830688 1698.134766 1694.647705 1693.329224 1694.098022 1690.739014 1685.630493 1680.080322 1665.782593 1668.929443 1671.319458 1668.80957 1658.89563 1650.236206 1657.527832 1667.960938 1675.269409 1683.198486 1684.84668 1682.884399 1701.285034 1712.52832 1718.786865 1721.600098 1722.130371 1717.956543 1716.335083 1727.900024 1732.094116 1730.763916 1729.462769 1720.471191 1706.581055 1693.0271 1683.092651 1681.283936 1683.505981 1699.808838 1708.646729 1715.365723 1723.951538 1732.586792 1741.114746 1749.715698 1758.771484 1765.19873 1770.098145 1772.428589 1775.249878 1779.24646 1783.13147 1784.918823 1783.249023 1780.348999 1777.61145 1773.357544 1768.913818 1768.684692 1770.057373 1771.912842 1773.681641 1773.930786 1771.371094 1767.142822 1760.078369 1753.544312 1747.008911 1743.199463 1741.197998 1745.981934 1752.255249 1758.445679 1759.348633 1758.981689 1757.265503 1750.158813 1744.48877 1739.234741 1732.514526 1724.707153 1715.944702 1703.077271 1704.745239 1709.245728 1714.337036 1719.204834 1722.738892 1723.623047 1723.296997 1721.452026 1718.876587 1715.905762 1711.951904 1707.490967 1706.076782 1706.738525 1701.962036 1695.727417 1693.456421 1692.468506 1691.561279 1689.307129 1684.480591 1681.757568 1680.059082 1679.539185 1682.488892 1689.860718 1697.856567 1702.726807 1707.321045 1711.804321 1714.454224 1714.109741 1709.752075 1705.684937 1700.309692 1694.299316 1685.151001 1674.13269 1667.088623 1661.252197 1655.925415 1648.403564 1642.054321 1632.464478 1626.653687 1620.337402 1617.924561 1619.95874 1609.289917 1595.323853 1585.141357 1578.974365 1577.681519 1577.872437 1574.589844 1568.172363 1565.217773 1559.508789 1554.42041 1548.983032 1543.414673 1541.334961 1540.1698 1539.975342 1544.723145 1548.828003 1552.251587 1551.666016 1549.177979 1544.688843 1540.91626 1537.084351 1536.801758 1539.272095 1541.01001 1544.717163 1550.27124 1555.598999 1558.443115 1557.557007 1555.654175 1552.379883 1548.657593 1546.894897 1545.896484 1546.906494 1549.861938 1552.604736 1552.143799 1548.822388 1545.246338 1543.782349 1543.239258 1540.954834 1537.065796 1535.792847 1546.039307 1551.847778 1556.062134 1560.742188 1567.931274 1574.947754 1583.341675 1586.596802 1591.024414 1594.395386 1594.113525 1590.989868 1587.641479 1583.059814 1580.31189 1582.068115 1584.311646 1594.006714 1602.404663 1612.397827 1623.208618 1633.839478 1644.410645 1653.786743 1664.994629 1672.202881 1670.824463 1662.3125 1651.522217 1646.995605 1648.389648 1647.234985 1650.128052 1650.083374 1649.181641 1647.42334 1645.0896 1640.991699 1635.422363 1628.888428 1622.068726 1617.401245 1624.585938 1636.871338 1637.01416 1633.253662 1621.390625 1627.695679 1630.937622 1629.477783 1625.93689 1620.678223 1612.359741 1607.636353 1606.76709 1607.854858 1610.870239 1609.759277 1608.311646 1607.962891 1612.283325 1619.197021 1625.186768 1634.01123 1633.311035 1630.591797 1627.728516 1624.509033 1622.57251 1621.520142 1620.052246 1619.873535 1621.850586 1622.348145 1622.935303 1620.792847 1621.155151 1621.207275 1619.660645 1612.920654 1609.412842 1610.182739 1609.248291 1610.621948 1614.27417 1612.908813 1609.307251 1617.04834 1624.120117 1629.252563 1637.089478 1647.605103 1655.515259 1659.4823 1666.88916 1669.717163 1678.199219 1682.968628 1673.75 1668.210938 1662.438843 1656.504517 1657.473511 1661.045532 1660.173096 1655.884521 1649.870483 1641.859863 1631.217163 1619.94519 1609.504639 1594.886719 1593.64917 1591.092651 1585.093872 1579.249512 1577.932983 1572.643677 1565.013916 1557.79126 1550.442627 1546.435547 1546.957275 1554.050293 1563.355591 1573.430542 1584.151733 1596.563965 1608.923706 1615.732544 1616.83667 1616.645996 1616.718018 1617.772217 1620.212891 1622.02063 1621.883423 1621.171631 1620.033081 1619.525391 1619.842407 1621.058716 1622.277832 1622.766479 1618.918213 1611.266113 1603.962036 1596.427002 1591.474243 1584.816895 1579.619141 1572.706543 1564.123169 1556.648926 1549.383423 1541.05188 1534.583862 1529.457397 1524.102539 1518.479248 1513.53186 1507.81604 1502.456421 1496.531128 1490.526123 1483.679199 1477.157593 1468.491455 1462.466064 1466.30249 1472.646851 1479.310303 1487.69873 1502.339844 1514.979248 1527.707275 1529.198853 1527.412354 1524.374878 1518.812256 1513.031738 1505.735352 1499.12915 1493.618164 1489.26709 1483.015503 1476.824463 1475.5271 1482.18103 1486.69751 1483.872314 1479.463745 1475.555542 1471.310913 1466.699341 1462.278687 1456.559937 1450.850586 1448.582642 1449.228149 1451.080322 1449.150146 1445.284302 1442.115479 1440.689087 1432.821533 1425.25415 1414.2229 1389.292603 1377.140991 1373.453003 1368.286133 1364.248535 1360.307739 1357.572388 1355.421631 1353.920166 1353.230347 1352.235229 1352.116333 1352.970337 1354.263794 1354.61792 1354.47522 1352.261963 1350.301636 1349.790649 1349.526001 1350.037964 1351.260498 1353.588867 1357.222778 1363.687744 1367.032471 1371.546143 1375.268188 1378.853027 1383.535156 1388.050293 1390.65271 1387.971069 1392.631104 1403.318848 1416.685547 1422.149414 1416.105225 1410.116577 1400.442749 1390.186523 1380.89563 1369.743286 1378.002686 1395.153442 1409.383423 1419.066162 1419.494019 1415.076904 1411.239746 1405.669067 1400.664307 1398.437134 1396.597656 1395.199951 1393.44751 1393.542725 1394.011597 1393.005005 1388.783447 1381.717285 1383.790161 1387.605713 1395.77356 1408.361816 1416.393555 1419.60498 1423.236572 1428.459839 1430.677612 1430.670898 1430.636475 1430.778687 1430.892212 1431.095947 1431.407959 1431.766113 1431.491699 1431.038208 1430.613647 1430.227051 1430.186646 1430.255737 1430.464844 1430.755493 1431.106812 1431.68689 1432.215942 1433.186157 1434.314331 1435.442139 1436.828491 1438.007446 1438.815186 1439.551147 1440.062134 1440.374512 1440.734497 1440.734253 1440.498901 1439.721802 1438.405273 1436.517212 1434.653442 1432.685303 1430.549194 1428.028687 1426.672607 1427.694946 1427.718628 1424.537842 1419.012207 1415.238525 1411.666016 1407.478638 1403.759155 1400.689209 1405.615112 1412.536255 1418.489868 1424.9552 1426.845215 1423.495605 1419.40332 1415.020996 1405.928589 1411.901245 1417.938232 1425.260132 1428.008667 1428.859253 1428.853027 1427.688232 1426.305908 1426.78772 1428.404785 1428.879395 1428.789062 1428.443481 1427.798706 1426.619263 1424.591675 1421.115601 1416.556396 1412.703613 1408.893188 1404.333984 1400.451416 1396.23877 1392.447388 1389.410767 1388.162598 1387.291138 1384.832275 1384.11084 1384.484741 1386.264282 1394.467041 1401.594482 1406.458618 1409.295654 1411.190308 1411.143188 1408.030151 1402.435669 1406.900269 1410.941284 1413.102173 1412.807861 1408.894287 1403.173462 1392.765625 1390.237915 1389.141846 1387.366455 1383.990845 1382.082031 1382.747192 1382.234985 1381.917358 1382.688965 1381.848633 1379.91272 1381.035278 1380.32959 1375.613892 1368.747925 1372.220459 1379.713867 1379.89978 1376.355103 1376.328613 1373.536133 1368.370239 1367.788086 1356.282593 1355.265381 1356.911499 1353.132202 1345.622192 1345.519165 1344.80957 1340.138306 1329.212524 1324.785278 1323.061157 1321.828979 1316.463135 1314.165771 1314.115234 1314.132324 1315.289429 1316.085815 1314.675415 1310.264526 1312.86853 1321.074951 1332.507324 +1654.258667 1669.725098 1681.572144 1686.490967 1689.234863 1693.021729 1697.195312 1699.637207 1694.104492 1688.568604 1692.076904 1699.100342 1700.126587 1699.525146 1698.74231 1693.867676 1694.474854 1693.678467 1687.797241 1677.964111 1665.380127 1673.116333 1683.279663 1695.434692 1700.157837 1702.089844 1705.598877 1714.286621 1723.104248 1729.677612 1734.503052 1734.019043 1728.089966 1726.820068 1746.127686 1746.300171 1741.026001 1736.553833 1726.368408 1708.931152 1695.380859 1688.853027 1687.265259 1682.493652 1695.795166 1703.257324 1710.510132 1717.754395 1725.171631 1732.089844 1736.868408 1745.803589 1753.759399 1758.646118 1762.568359 1765.778931 1770.157349 1772.650269 1777.140259 1779.968994 1779.206665 1778.546753 1776.56311 1774.092407 1773.801514 1775.034912 1776.278198 1777.838745 1778.287842 1775.946899 1771.716553 1766.457275 1757.685669 1752.251343 1748.376709 1748.6427 1751.773315 1756.704712 1759.43335 1759.202026 1757.940674 1753.861328 1746.549194 1741.650879 1736.641968 1729.567505 1720.453979 1711.775024 1704.602295 1709.838013 1713.847778 1718.023071 1721.129395 1723.556519 1723.778076 1723.066895 1721.078003 1718.384888 1714.637085 1711.19043 1707.686401 1705.479614 1703.848755 1699.90918 1696.423096 1696.025757 1694.592163 1693.446289 1690.921753 1686.179321 1683.704834 1682.646606 1685.414673 1690.640137 1698.382324 1706.20752 1710.258057 1714.783203 1719.178833 1719.73291 1716.993408 1708.293945 1701.398682 1692.733887 1688.171265 1681.04248 1676.191284 1673.76355 1670.572754 1666.628052 1657.74707 1646.832397 1632.70166 1618.976807 1610.785522 1605.821289 1599.692383 1594.717773 1585.300537 1580.806274 1573.218628 1571.095093 1571.795532 1569.536377 1564.204712 1559.364624 1555.500122 1551.23584 1547.245239 1543.984497 1548.081421 1548.627319 1549.877808 1555.007935 1561.158325 1563.871094 1564.706787 1561.62793 1551.937744 1545.875732 1541.433594 1540.687866 1544.17749 1548.045776 1550.978394 1559.460938 1569.62439 1575.280029 1574.629883 1568.624268 1564.61084 1560.549194 1554.93457 1550.450073 1550.870117 1553.919312 1555.475464 1554.536133 1550.710083 1547.53418 1548.436401 1548.364502 1545.852783 1541.197266 1536.289429 1544.981812 1551.463501 1554.983643 1558.460327 1564.000854 1571.428345 1578.231323 1582.930298 1590.297974 1598.204834 1600.589478 1599.643799 1599.446899 1595.893921 1588.674316 1585.341187 1593.195435 1598.9198 1598.64978 1607.657104 1617.039185 1626.295288 1635.054321 1645.964478 1655.670776 1661.169556 1664.525879 1662.272461 1650.348145 1642.457886 1643.891846 1646.027832 1648.08313 1648.599487 1647.719482 1646.604248 1644.188721 1640.800537 1636.595337 1630.973267 1622.443604 1611.322876 1619.817871 1633.21167 1633.465576 1626.142944 1618.069092 1621.587036 1624.794434 1625.345581 1625.541748 1622.577393 1614.77063 1607.934937 1604.657837 1602.268433 1603.019165 1603.432251 1604.62439 1608.642456 1614.658325 1621.375488 1629.947144 1635.401001 1633.938232 1631.321899 1629.124268 1626.852661 1624.657227 1622.616821 1620.925537 1621.099365 1623.771973 1626.416016 1627.87915 1628.325562 1629.412109 1628.834106 1625.050781 1617.206909 1612.463257 1614.983032 1615.651733 1617.609253 1618.333984 1616.911377 1615.709595 1618.519653 1624.564697 1630.101318 1637.870361 1646.733032 1650.934692 1654.656006 1655.452637 1661.593384 1682.418213 1682.498535 1673.993042 1666.998047 1660.532349 1652.298096 1644.512817 1651.430542 1655.844116 1653.470825 1650.095703 1643.234253 1631.531494 1621.001709 1608.225586 1594.835938 1580.036865 1577.347412 1574.883911 1569.037354 1568.21167 1563.68042 1559.032227 1553.73584 1548.009033 1539.703613 1544.440552 1554.351685 1561.71936 1568.52417 1579.334595 1598.29248 1616.208984 1622.076782 1620.447388 1617.925659 1616.552002 1617.068726 1619.811401 1622.644165 1622.616211 1622.103271 1620.768311 1619.423706 1618.988525 1619.532349 1621.456909 1622.096436 1616.06189 1609.331177 1603.156006 1596.778687 1592.163086 1587.046509 1582.885986 1577.649536 1570.989258 1561.589844 1553.609131 1545.874634 1538.03125 1531.907349 1525.919189 1520.467041 1515.150024 1509.729858 1504.372559 1498.926025 1492.049927 1485.788818 1479.099731 1472.19397 1464.869019 1460.450195 1464.980103 1471.0896 1478.259277 1487.961426 1504.252319 1516.817139 1526.345093 1526.39209 1523.565552 1519.453735 1514.651733 1507.942261 1500.506226 1494.860474 1490.253662 1484.240723 1477.305298 1473.68396 1475.892212 1481.22937 1484.469971 1483.794922 1480.724243 1477.806396 1473.359863 1467.97937 1463.337402 1458.876587 1457.529907 1456.971436 1456.042358 1454.063843 1448.783569 1442.657959 1434.364868 1424.938354 1407.742798 1383.852905 1373.279053 1369.4375 1365.984253 1364.260254 1361.790283 1355.1073 1353.501343 1353.378418 1353.526855 1353.933472 1354.191895 1354.508789 1354.791382 1354.572388 1354.185425 1353.620117 1351.961914 1350.415161 1350.177734 1351.415283 1352.255127 1353.252075 1362.728149 1369.071167 1369.892212 1371.430176 1375.084106 1379.666382 1384.672241 1389.878906 1395.187256 1397.04248 1396.693359 1406.01416 1418.799805 1427.117798 1425.467163 1415.146851 1409.494751 1404.320923 1400.655884 1387.474609 1381.897095 1373.861938 1387.491211 1402.99646 1416.930786 1424.451538 1428.980591 1420.006226 1412.071289 1409.094727 1405.351685 1401.838135 1401.272095 1401.30603 1400.295654 1400.296021 1397.85376 1393.995239 1389.701904 1383.317627 1385.620239 1388.246826 1393.549561 1402.302612 1409.242798 1414.55542 1422.659668 1428.323242 1428.608032 1428.701904 1430.065186 1430.661377 1430.946777 1431.181641 1431.753174 1431.789673 1431.643921 1431.396851 1431.12915 1430.966309 1431.090576 1431.265137 1431.681641 1432.19043 1432.730103 1433.376099 1434.118164 1435.080322 1436.245728 1437.336792 1438.679321 1439.40625 1440.217896 1440.813599 1441.182617 1441.35791 1441.255493 1441.038574 1440.378784 1439.419067 1437.628296 1435.773071 1433.837402 1431.790283 1429.831787 1429.026978 1428.73291 1427.745605 1423.998657 1417.81897 1414.225098 1410.736572 1406.72644 1402.761597 1402.982178 1411.296509 1418.909546 1426.029053 1428.746338 1428.582764 1426.432861 1421.749756 1415.959106 1412.018799 1413.569336 1419.158936 1423.870972 1427.441772 1429.10791 1429.001587 1428.793335 1428.411377 1428.540649 1428.935059 1429.014526 1428.855957 1427.284424 1425.165039 1423.433838 1420.937866 1417.668579 1413.747803 1409.174927 1404.860352 1396.887451 1388.397461 1388.334961 1388.542114 1388.527344 1388.901245 1391.874634 1393.137939 1393.157349 1390.341919 1390.699707 1394.946167 1401.792969 1407.225342 1414.285645 1414.887451 1414.808472 1414.661865 1411.29834 1412.124268 1415.46875 1415.759033 1414.329468 1409.411255 1403.08374 1400.678955 1399.440918 1396.675415 1391.717163 1384.872559 1377.412109 1376.95874 1377.028076 1376.789551 1376.746094 1375.067383 1372.190186 1374.665405 1374.721436 1370.181519 1365.199463 1366.197632 1374.225952 1375.390137 1367.193604 1368.345337 1367.149414 1361.375244 1358.979614 1353.393677 1348.853271 1347.939575 1344.85791 1339.959351 1338.702148 1337.567505 1333.161743 1322.484497 1313.724243 1309.124268 1310.76416 1311.12085 1310.125977 1309.115479 1308.578125 1308.52124 1307.431519 1304.602539 1302.1073 1301.938965 1304.681274 1310.582031 +1671.340576 1684.939209 1687.692993 1688.327271 1689.376099 1691.319458 1691.611084 1683.439941 1679.213135 1676.112793 1678.268311 1691.046021 1699.136841 1705.79187 1712.6604 1717.92688 1716.804199 1712.695801 1704.396851 1693.30835 1685.485229 1688.04187 1700.370605 1711.030273 1715.484497 1719.823975 1721.392456 1727.064453 1734.520142 1743.786987 1747.103516 1746.2948 1736.852051 1736.854004 1751.627075 1756.176758 1747.958496 1739.167236 1724.255371 1707.232788 1696.849243 1694.130615 1695.956665 1695.846558 1690.283813 1697.038452 1705.220825 1711.547363 1717.724731 1722.787964 1728.588867 1737.573242 1744.894653 1748.694092 1753.125732 1756.447144 1756.035645 1763.498291 1768.692017 1776.493286 1780.270874 1780.45105 1780.617065 1779.621216 1779.037598 1779.437134 1780.626221 1782.230103 1782.707153 1780.622925 1776.604248 1772.417847 1768.349365 1758.808838 1754.700195 1755.640869 1758.389282 1760.076416 1759.67041 1758.562988 1755.192871 1749.196411 1741.873169 1735.400391 1730.187256 1724.255127 1716.476318 1709.396362 1709.406128 1713.974487 1718.199585 1721.390137 1723.603271 1724.809692 1724.554688 1723.64563 1721.784668 1719.891968 1714.548584 1709.834473 1706.946289 1705.271851 1704.181519 1703.719482 1706.405884 1706.69104 1701.682373 1698.594238 1696.664185 1693.682983 1688.592407 1686.557007 1688.866699 1694.417603 1702.549683 1709.663086 1714.488647 1719.575562 1721.382812 1721.435425 1718.615234 1711.321411 1702.76123 1695.301758 1694.282837 1693.036621 1688.088623 1684.90564 1686.026489 1683.888428 1674.106934 1663.428711 1648.677124 1637.801636 1624.818359 1614.054565 1601.647461 1592.952881 1583.530518 1580.974976 1580.66272 1578.01416 1578.250244 1573.5896 1563.088501 1557.960815 1551.872559 1547.716064 1546.671631 1554.420898 1558.86731 1560.465942 1562.179688 1568.989868 1576.899536 1578.82666 1576.75 1571.737915 1562.65918 1551.897461 1546.687866 1545.278931 1547.848755 1553.296387 1558.944946 1570.49292 1584.62854 1590.834106 1587.636108 1581.800171 1576.59668 1571.709717 1567.216919 1562.915039 1559.681885 1558.626587 1559.543579 1558.372314 1554.876099 1551.778931 1553.286499 1553.173584 1551.4729 1547.194824 1540.872803 1543.427368 1550.714478 1554.312256 1558.218018 1563.565918 1571.184937 1577.879517 1584.601929 1595.222412 1601.415894 1604.627075 1606.445068 1606.342773 1604.360596 1600.453857 1594.968018 1599.892944 1611.944336 1619.003662 1617.796143 1616.948608 1622.252075 1631.512085 1641.29541 1647.68811 1654.169312 1658.143799 1658.488281 1647.71814 1637.013428 1637.757446 1646.914062 1647.526245 1646.689941 1645.689453 1644.779785 1643.858643 1641.832275 1638.350708 1632.941895 1620.506836 1609.893188 1615.429077 1625.967285 1625.087769 1619.237671 1611.287842 1610.721313 1616.619019 1621.486328 1625.096558 1624.7677 1618.187256 1609.513794 1604.056885 1598.83728 1596.619263 1597.959351 1601.956909 1611.086914 1616.436646 1623.239746 1630.56189 1635.688354 1634.434692 1632.500732 1631.128662 1629.571777 1627.140259 1624.564331 1622.932495 1621.523193 1625.424927 1631.217773 1634.569336 1636.033203 1638.31189 1634.987183 1628.490723 1621.585693 1619.255127 1621.878906 1624.520386 1625.027588 1623.810425 1621.325806 1619.828247 1620.875 1623.307983 1629.194946 1635.714478 1643.635132 1649.081909 1649.710205 1645.799316 1662.780273 1681.291382 1681.539429 1674.033691 1667.32605 1661.223389 1652.7771 1637.288696 1637.713623 1648.814819 1650.126953 1649.46814 1644.58606 1634.147461 1623.288574 1610.869873 1598.3479 1583.321533 1568.910278 1562.217773 1559.12854 1557.90625 1555.677246 1552.766235 1549.099243 1542.655884 1537.459106 1543.311523 1551.838501 1560.77124 1568.375854 1582.499512 1602.49939 1621.840576 1623.416382 1621.763794 1618.276733 1615.09375 1614.88269 1617.803955 1622.276855 1623.036377 1622.818604 1621.405518 1619.147339 1617.84668 1617.923828 1618.766357 1617.765503 1613.039429 1608.019775 1603.551514 1598.39563 1594.577881 1590.834717 1587.044189 1581.71875 1574.94812 1565.438232 1556.867432 1549.036255 1540.834106 1534.113159 1527.650024 1522.014282 1516.594971 1511.157715 1505.472656 1499.656616 1492.499634 1485.946411 1479.878052 1474.067139 1467.855591 1461.958374 1458.871704 1462.884277 1469.523438 1477.75061 1486.624512 1503.273193 1514.387085 1520.379272 1520.992065 1518.813721 1515.187744 1508.937988 1501.140625 1494.15271 1488.482544 1481.006836 1474.608521 1467.689575 1472.775024 1479.383057 1486.178467 1488.203125 1484.663818 1481.141846 1477.009155 1472.582886 1467.685425 1465.264038 1464.429321 1461.007935 1456.151855 1450.253174 1441.737183 1431.272095 1419.253906 1406.292847 1388.991333 1372.543457 1366.878174 1365.371582 1364.583984 1363.071045 1360.37793 1356.605347 1354.626953 1354.461792 1354.338501 1354.629639 1354.735229 1354.765259 1354.73938 1354.094604 1353.332153 1352.122681 1351.255493 1352.301392 1354.876587 1357.823975 1360.937256 1366.839478 1372.524048 1377.55835 1378.77417 1376.489746 1376.297607 1381.970703 1389.934692 1399.315063 1405.200195 1406.248047 1409.065552 1419.621216 1427.81189 1426.646729 1422.981934 1416.12854 1414.432983 1409.997437 1403.862427 1392.407837 1394.616577 1386.990845 1377.906372 1394.114136 1410.577393 1422.02771 1429.931641 1429.449219 1422.055176 1418.525879 1415.390991 1410.932007 1409.542358 1408.857178 1407.198486 1404.984985 1402.734253 1397.753906 1391.940186 1386.139038 1386.449097 1387.929321 1388.627808 1394.009155 1399.930664 1404.328979 1411.255249 1416.217773 1420.116333 1423.578979 1426.597778 1428.287598 1429.627563 1430.358032 1431.302002 1431.520386 1431.616577 1431.580078 1431.427002 1431.285522 1431.335327 1431.622559 1432.096558 1432.74707 1433.315186 1434.023804 1434.730225 1435.66626 1436.780396 1438.059814 1439.119751 1440.022095 1440.811035 1441.450439 1441.868652 1442.105103 1441.97522 1441.571655 1440.853882 1439.725708 1438.240601 1436.612427 1434.768555 1432.816528 1431.049072 1429.534302 1428.327026 1426.922974 1422.700928 1416.930298 1412.999634 1409.78772 1406.005859 1403.486084 1408.9104 1417.282837 1425.330322 1429.514771 1429.887207 1429.31958 1428.143188 1422.707886 1415.952515 1412.77124 1413.950439 1421.512817 1427.519409 1428.760254 1429.327881 1428.981323 1428.736694 1428.595825 1428.516724 1428.778687 1428.552979 1427.21228 1424.84668 1422.681274 1420.330688 1417.80603 1414.747681 1410.294922 1405.848877 1400.45459 1390.308838 1390.120605 1392.547363 1394.119751 1395.039551 1397.352905 1401.889038 1402.476685 1400.872681 1398.209961 1398.450195 1400.476318 1400.857666 1403.383911 1413.455933 1416.068848 1416.220947 1416.237915 1414.336792 1415.093262 1416.441528 1416.282837 1415.282349 1411.998657 1408.540894 1406.157471 1405.938843 1404.844727 1403.268555 1395.1698 1387.709961 1382.050049 1378.378662 1375.417969 1369.764404 1365.828125 1364.940063 1364.931763 1366.553955 1365.09375 1358.805176 1354.883423 1365.311157 1367.601196 1364.359741 1360.346436 1359.69043 1355.400513 1350.59021 1346.684448 1341.702148 1341.495605 1339.84729 1336.488159 1333.212402 1331.51062 1328.174072 1317.329224 1308.608643 1306.653076 1304.970337 1307.181885 1307.071533 1305.438477 1303.697266 1302.678467 1300.817993 1299.399658 1299.275513 1298.795288 1296.968018 1300.500977 +1682.134399 1686.999146 1687.889038 1688.057129 1687.811523 1683.990845 1677.20166 1667.650391 1664.783325 1662.008545 1667.638062 1676.474365 1689.150879 1700.004395 1714.40332 1728.616943 1742.257568 1733.885132 1719.59436 1707.766602 1697.232544 1699.91687 1709.592407 1718.015259 1725.452393 1732.242188 1737.64563 1742.590942 1749.218872 1754.737915 1757.434448 1757.00647 1744.760864 1746.549927 1758.683716 1760.60144 1753.115356 1738.474121 1724.872314 1708.82312 1703.83374 1702.381836 1710.75647 1711.987183 1705.368774 1700.05603 1700.92334 1705.871216 1711.134277 1716.61853 1722.440308 1730.009888 1735.790527 1739.735596 1742.99646 1745.623779 1756.124146 1767.46228 1772.561157 1778.481323 1781.694214 1783.131836 1783.488403 1784.26123 1784.448364 1784.762451 1785.626953 1786.609741 1786.419434 1784.622925 1781.13916 1777.220825 1773.852295 1770.788086 1768.664062 1766.389648 1764.008789 1761.96582 1760.108765 1757.187622 1752.88269 1746.864746 1740.498169 1733.177979 1727.493896 1722.007324 1715.084717 1710.681274 1713.327515 1717.882202 1721.49707 1724.174927 1726.049561 1726.538696 1726.077759 1724.508301 1722.392334 1719.7146 1714.047852 1707.857422 1706.187744 1705.483887 1705.047485 1707.205566 1709.002319 1710.079712 1708.840454 1705.817627 1702.305298 1698.061279 1694.273071 1691.221802 1691.374512 1695.790039 1704.587036 1711.287109 1716.685547 1721.27124 1722.551147 1721.864136 1719.132568 1714.38269 1709.443604 1706.792114 1705.743774 1705.171143 1704.491211 1701.917358 1698.218506 1694.880859 1689.042358 1681.417603 1667.525757 1651.795654 1639.118164 1626.903076 1615.006348 1605.976929 1602.365723 1601.285522 1599.790039 1594.611206 1587.911499 1572.880249 1560.858765 1552.738647 1548.395264 1548.687012 1559.289062 1561.697998 1568.297729 1575.245728 1578.5448 1582.35083 1590.866577 1592.461304 1592.332642 1587.209961 1572.491089 1557.277588 1548.261353 1546.947144 1550.466309 1558.196899 1563.494385 1576.60498 1591.901489 1600.706421 1600.247803 1592.970093 1586.427368 1580.678345 1575.631714 1571.743652 1567.857422 1565.253052 1564.526367 1562.784668 1559.236694 1557.344849 1559.775635 1561.294434 1558.641235 1553.239014 1546.803833 1542.793701 1549.477783 1553.915405 1558.265015 1563.937134 1572.087646 1579.483154 1587.735718 1598.509277 1605.640503 1610.102661 1612.88501 1613.454956 1611.890869 1609.465088 1604.140991 1603.283936 1620.643555 1633.369873 1639.886353 1634.463745 1628.860352 1631.710083 1636.175171 1646.021729 1652.757324 1656.137573 1649.231934 1642.371216 1633.439209 1638.341919 1647.128052 1647.138062 1645.459351 1645.07373 1645.302368 1645.811523 1646.443481 1643.22229 1633.658081 1618.935791 1608.84729 1613.218994 1621.742188 1618.746094 1613.257202 1607.182983 1604.856445 1607.951416 1620.598389 1625.575562 1625.119629 1620.292847 1612.440796 1605.315552 1599.014038 1595.215088 1596.173828 1605.657227 1612.515625 1616.740723 1620.618774 1627.472656 1634.71814 1636.003296 1634.336182 1634.118164 1632.288696 1629.839233 1628.233521 1625.821289 1622.809082 1627.524292 1635.091187 1638.835083 1643.252563 1645.947998 1639.672119 1630.602051 1622.255981 1622.875122 1629.209473 1632.005371 1632.387573 1631.163086 1627.954346 1625.698853 1624.883911 1622.447266 1628.394287 1632.021484 1638.326904 1646.359985 1644.775391 1646.748413 1659.872192 1671.634766 1677.071533 1672.609619 1666.326416 1660.847046 1650.74353 1637.908813 1619.855835 1632.970825 1641.215088 1644.170654 1642.316284 1635.756348 1625.455444 1612.166992 1599.175781 1590.151978 1576.517456 1561.722168 1555.913818 1548.139282 1548.352417 1546.360962 1541.31311 1536.994507 1536.495361 1543.435059 1553.298462 1561.752563 1572.029785 1582.90271 1598.164062 1618.990479 1623.334106 1622.713989 1616.001343 1611.061768 1611.876099 1612.70813 1620.729858 1623.134155 1622.875488 1621.184692 1618.25354 1616.307861 1615.775879 1615.946655 1615.075073 1612.404053 1610.156738 1605.690308 1601.388794 1598.047729 1594.310547 1589.993042 1585.158813 1577.01001 1567.890991 1558.517456 1550.30542 1542.360474 1535.307495 1529.143555 1523.533569 1517.453735 1511.91394 1505.529297 1499.38855 1492.114746 1485.650635 1479.573364 1473.90625 1469.571533 1464.746826 1456.464355 1456.95105 1461.088623 1466.815186 1476.564453 1485.274536 1498.968384 1510.236328 1515.994263 1517.495605 1515.395142 1509.450439 1500.270996 1489.627441 1482.172363 1473.834717 1463.690308 1462.389771 1472.895752 1480.274414 1486.638916 1489.432007 1488.31958 1483.448242 1479.314087 1475.511108 1472.12793 1469.403564 1466.146973 1459.106445 1449.781738 1439.543457 1425.773682 1413.059204 1400.763794 1387.733032 1375.266235 1365.946899 1365.234009 1364.418823 1363.500122 1361.923096 1359.983765 1358.108154 1356.606567 1355.94104 1355.239868 1354.916016 1354.789551 1354.696777 1354.508911 1353.725708 1352.48291 1352.567993 1355.805054 1360.143555 1363.919067 1368.172485 1372.9729 1377.57251 1382.89917 1385.470093 1383.848267 1379.261475 1377.561035 1380.368164 1393.971191 1405.184448 1413.032349 1416.300781 1421.338013 1428.665527 1430.761597 1426.848999 1425.764893 1423.898315 1418.629272 1413.510498 1401.752197 1404.443726 1402.245972 1397.098389 1381.928467 1386.858521 1399.856201 1417.156738 1430.160034 1431.317871 1429.768799 1427.966187 1424.540649 1419.526001 1417.184692 1416.567383 1413.926636 1408.350708 1404.7948 1399.661499 1393.908813 1389.575684 1391.454468 1392.871094 1389.759155 1390.494019 1393.744141 1397.742798 1398.845337 1403.868408 1410.082764 1416.672485 1420.855713 1424.681274 1427.650391 1428.64502 1430.26001 1430.811035 1431.091431 1431.168823 1431.014893 1430.891113 1430.913208 1431.305908 1432.030762 1432.645386 1433.455322 1434.095337 1434.924438 1435.780762 1437.046265 1438.108765 1439.482788 1440.519775 1441.287476 1441.964233 1442.535278 1442.759888 1442.656616 1442.179077 1441.458374 1440.541504 1439.315308 1437.356812 1435.448975 1433.711304 1431.671509 1429.096191 1426.631348 1425.183472 1422.011719 1417.943115 1414.386353 1408.879028 1405.154053 1412.666626 1413.660767 1422.699951 1429.216064 1430.995972 1430.811523 1429.821533 1427.591064 1422.758667 1417.062866 1413.909668 1415.396973 1426.105103 1429.093628 1429.443604 1429.251587 1428.611206 1427.785889 1427.887451 1427.770752 1427.067993 1425.549194 1423.715088 1421.815552 1419.80835 1417.577637 1414.434814 1410.391602 1405.96814 1402.256104 1397.957153 1394.78479 1398.732788 1401.93103 1403.13147 1403.738892 1405.397827 1407.922607 1408.542847 1407.339722 1405.137817 1405.799683 1405.798706 1404.599487 1403.177979 1410.717773 1415.881714 1416.60144 1416.848755 1416.415527 1416.258423 1416.970093 1416.70105 1415.139404 1412.660889 1411.601562 1410.653931 1409.30542 1406.504272 1404.077271 1398.970703 1392.29895 1387.055786 1381.73877 1379.636108 1375.934937 1369.248779 1365.319824 1363.780762 1358.929443 1354.682495 1354.122681 1351.988892 1354.592773 1358.005737 1358.623779 1351.736084 1352.378174 1349.992188 1344.670776 1340.425659 1339.10022 1337.895874 1336.041748 1332.231567 1328.409424 1325.681396 1319.455322 1312.322876 1308.969238 1307.876709 1305.124023 1303.863403 1303.396362 1303.549438 1305.400146 1308.234741 1308.339966 1307.282593 1305.400879 1303.401978 1300.634277 1296.436157 +1678.776611 1683.523438 1684.255859 1682.418579 1677.513428 1669.990601 1664.098267 1658.259155 1650.716309 1649.015503 1656.546265 1664.092651 1677.899658 1692.791748 1705.055054 1723.007568 1738.859619 1739.059937 1728.080322 1719.956177 1710.595947 1711.012573 1716.95105 1725.549316 1736.142944 1748.087891 1753.283203 1757.780273 1761.658325 1764.305298 1766.36084 1766.606812 1758.792114 1756.436768 1765.557739 1765.529175 1755.170166 1742.17395 1732.204224 1717.227539 1712.50769 1709.60437 1722.130127 1722.810913 1718.815186 1713.709473 1712.11499 1710.685059 1708.054077 1713.209595 1717.371216 1721.248901 1728.685425 1731.222168 1735.024048 1743.862183 1755.311768 1765.576416 1771.238281 1777.623657 1782.905884 1784.270752 1786.627441 1789.370728 1790.990479 1791.745117 1791.608765 1791.206665 1790.708984 1789.014404 1785.647827 1781.18042 1777.755615 1774.809814 1771.573242 1769.23938 1765.95752 1762.586548 1759.309204 1755.672485 1750.848633 1745.976196 1739.232422 1732.696899 1726.548096 1721.052002 1714.3302 1714.406494 1716.993408 1720.939697 1724.870972 1727.548462 1728.905273 1729.078003 1727.669067 1725.39563 1722.648193 1718.927246 1714.294922 1708.479614 1707.574097 1707.043823 1706.258667 1707.384399 1709.224976 1710.365234 1710.547119 1709.675293 1707.416992 1700.850952 1695.608276 1692.796509 1692.734375 1696.866943 1705.614136 1712.120239 1718.369629 1722.126221 1723.593018 1723.625488 1720.093506 1718.908081 1718.345825 1718.561157 1716.713745 1715.4198 1714.199951 1713.102905 1710.236328 1704.460327 1698.184082 1689.448975 1680.952271 1671.810425 1660.526123 1643.839233 1628.963257 1621.659058 1617.704712 1612.439819 1603.382202 1589.611572 1577.206543 1566.654541 1556.441528 1548.088745 1549.517334 1557.123535 1566.326538 1571.917969 1576.11731 1587.230957 1594.802246 1601.314331 1610.685791 1611.440186 1605.445557 1594.747192 1578.619263 1560.131348 1548.521606 1547.643677 1556.863892 1565.16333 1571.646729 1582.520874 1595.119263 1606.887939 1610.263184 1601.15979 1594.251831 1589.63501 1585.631714 1581.737915 1577.422852 1573.911011 1571.678589 1568.238647 1561.738037 1559.300049 1562.495117 1566.836182 1565.855591 1560.808105 1553.050781 1545.921143 1548.140991 1553.892578 1560.481201 1565.716187 1573.27002 1580.761353 1590.219604 1600.868896 1609.352661 1615.95752 1619.681396 1621.172119 1621.048584 1619.19104 1612.860962 1607.608032 1624.82959 1639.154419 1649.348022 1649.822754 1648.343506 1643.929565 1644.49646 1651.347778 1658.125244 1658.529907 1651.245483 1644.466431 1633.768188 1635.048828 1645.608276 1647.293091 1643.633545 1645.490356 1646.943115 1649.50647 1649.973511 1647.696167 1637.376953 1619.540161 1608.454346 1610.953369 1614.622559 1610.666138 1606.248779 1601.165283 1597.017578 1606.73938 1619.872192 1625.804565 1625.293335 1622.806763 1613.415161 1605.824341 1598.867188 1593.390015 1596.718018 1602.9646 1608.74646 1620.341797 1626.865234 1634.114624 1635.240723 1638.837402 1638.004883 1636.659912 1634.300537 1632.636719 1632.649536 1631.376343 1629.639893 1631.545288 1636.888672 1641.974609 1647.21582 1648.705566 1640.025635 1631.472534 1627.372925 1633.441162 1638.737671 1640.240479 1640.102905 1638.831909 1635.650269 1632.236572 1630.382568 1629.529663 1630.853027 1632.452881 1636.724121 1640.712524 1639.745117 1646.194214 1660.654175 1672.104126 1674.748169 1671.613892 1664.562622 1656.967407 1646.711792 1635.578735 1618.448242 1616.991089 1624.612549 1632.869019 1635.817261 1633.272339 1624.321777 1616.814331 1613.335205 1601.0354 1586.417969 1572.187134 1559.807373 1554.021729 1549.722168 1545.700195 1537.138184 1533.402832 1532.447632 1541.881836 1552.278076 1559.979858 1568.930298 1579.009155 1590.722168 1602.974487 1616.644043 1618.469238 1611.227905 1607.233276 1607.593994 1608.245972 1618.735718 1623.019165 1621.307617 1618.184326 1615.83313 1613.883911 1613.363159 1613.810181 1613.63855 1612.632812 1611.045532 1607.925415 1603.550537 1600.687744 1597.334106 1590.811035 1586.358521 1577.913452 1568.854492 1558.621704 1549.534058 1542.744385 1535.425049 1529.638794 1523.449463 1518.112915 1511.247803 1505.5896 1498.252686 1491.476196 1485.589233 1479.791748 1474.696045 1471.188843 1466.405273 1459.490967 1452.806274 1454.304688 1458.368042 1462.527832 1472.756958 1481.402222 1492.002319 1505.315552 1512.728882 1515.198853 1509.92041 1498.71875 1484.273193 1472.583496 1462.529785 1455.793579 1462.332153 1473.844482 1479.734253 1484.347168 1487.370605 1486.546631 1483.453491 1480.103271 1477.80127 1475.062012 1470.102173 1463.646484 1448.527344 1436.269897 1421.694336 1409.347412 1393.354614 1381.11438 1376.353271 1367.504761 1365.341553 1364.559082 1363.710449 1362.543701 1361.352173 1360.021606 1358.776245 1357.923828 1357.159912 1356.298096 1355.231079 1354.620728 1354.133423 1353.946899 1353.200073 1351.849854 1361.732422 1366.146484 1368.569214 1371.730835 1376.24646 1383.04187 1391.108765 1393.177734 1392.788696 1390.386597 1386.001343 1381.987183 1381.146118 1393.21228 1404.721802 1420.297974 1429.61499 1434.591919 1437.934692 1435.313599 1431.944824 1430.156494 1428.174927 1418.97229 1412.347168 1410.134155 1415.616699 1414.032104 1406.848389 1391.47229 1386.702026 1399.363281 1419.46814 1431.273315 1434.2323 1434.200195 1432.35376 1429.755859 1426.633545 1421.892212 1416.697754 1413.911133 1409.694946 1405.414307 1401.112183 1395.906494 1390.017822 1394.466309 1401.9823 1398.079224 1394.315308 1392.256836 1397.323608 1398.503052 1398.588989 1399.432739 1401.818604 1411.977295 1416.349487 1423.178833 1425.535156 1428.654419 1429.684814 1430.322876 1430.35498 1430.100952 1429.861328 1429.914673 1430.46521 1431.343262 1432.226196 1432.970703 1433.661133 1434.501831 1435.488281 1436.954224 1438.120605 1439.561279 1440.692749 1441.621094 1442.53064 1443.272583 1443.548584 1443.417603 1442.941406 1442.072021 1441.094849 1440.007202 1438.57019 1436.536011 1434.372437 1432.139648 1429.592041 1428.112183 1426.638306 1422.404663 1418.680786 1414.500977 1407.988403 1411.741821 1418.366699 1420.932251 1426.749634 1431.055786 1433.050293 1432.461426 1430.439697 1426.343262 1423.423706 1418.956055 1414.353027 1415.68396 1427.885742 1429.585449 1429.664062 1429.270752 1427.593506 1426.646851 1426.224487 1425.178833 1422.97644 1421.124878 1419.130127 1417.621826 1416.789917 1415.367188 1410.367432 1404.389282 1401.617065 1400.132568 1399.491943 1401.27771 1405.718018 1409.218018 1411.095703 1411.971313 1411.537598 1412.91333 1414.529541 1414.22644 1412.510254 1412.934082 1414.015381 1413.195557 1410.588623 1412.032715 1415.303589 1416.79187 1416.679199 1415.591675 1415.133301 1416.586548 1412.145752 1411.271606 1409.741455 1412.043335 1415.303833 1412.599365 1401.50061 1394.744019 1389.172119 1386.256226 1381.348755 1379.738037 1380.345459 1380.243774 1378.902222 1370.561523 1367.410156 1364.300781 1355.362549 1353.584473 1352.21521 1348.942871 1350.255249 1352.851562 1348.734863 1343.887207 1342.186035 1340.334839 1338.381592 1336.702393 1335.54541 1333.785522 1331.215088 1326.62561 1321.889771 1315.529541 1310.582153 1312.167236 1314.655518 1313.075317 1313.222412 1314.533936 1317.119873 1319.881714 1321.122192 1320.556396 1319.971924 1316.775269 1312.856812 1308.147095 1303.796509 +1665.207397 1669.339111 1671.439941 1670.30188 1663.681519 1656.116943 1649.227783 1643.261353 1636.434326 1638.176758 1644.907227 1657.02063 1670.404541 1685.320312 1697.388428 1707.275269 1719.490112 1724.330566 1723.14624 1722.368164 1721.008301 1719.747559 1724.638062 1733.870728 1750.350952 1762.565674 1769.27771 1771.751831 1772.772095 1774.101807 1775.943359 1777.352905 1774.635254 1773.083008 1775.568359 1772.36084 1760.149048 1746.466431 1734.512939 1727.093506 1722.304932 1719.283081 1730.918823 1733.201416 1729.041382 1722.919434 1719.741577 1718.363647 1716.641968 1713.227661 1717.704224 1720.250977 1725.078247 1729.382935 1733.047852 1739.981567 1744.885986 1755.475098 1767.321777 1773.226685 1778.746338 1783.015991 1788.039185 1793.046021 1795.652344 1797.751587 1799.718628 1798.84668 1796.921997 1794.576416 1792.3125 1786.485718 1781.174072 1777.649902 1773.520264 1769.520874 1765.44751 1761.272583 1756.950073 1753.199219 1748.569458 1743.937378 1736.557861 1730.307739 1724.54541 1718.829102 1716.671265 1717.204956 1719.780396 1724.091675 1728.32019 1731.345581 1731.726074 1730.883423 1729.193848 1726.47876 1723.023682 1719.836426 1715.802979 1712.806396 1710.799072 1708.769165 1706.325928 1706.97583 1708.507568 1709.996216 1710.261475 1709.63623 1707.958374 1701.802612 1695.588013 1694.525635 1694.729126 1697.186523 1705.722412 1712.491089 1718.509277 1722.025391 1724.755859 1726.928833 1726.498535 1724.738159 1724.847656 1723.986816 1723.008545 1722.051025 1721.05835 1721.116333 1720.745728 1711.786499 1700.743774 1689.339966 1679.344116 1672.220581 1661.233276 1645.877441 1632.11084 1626.871826 1615.254028 1603.043701 1593.588623 1580.813599 1565.657715 1558.118652 1550.234375 1553.572144 1560.970337 1564.856079 1573.56897 1582.744751 1587.741577 1601.268066 1606.488281 1613.993408 1621.797485 1615.814575 1599.930054 1587.704468 1576.353149 1559.512451 1548.828003 1555.099976 1565.607178 1573.291504 1579.445068 1587.962036 1598.8125 1611.37854 1615.627563 1613.633301 1608.595459 1600.373901 1595.035889 1590.421387 1586.520386 1582.393311 1579.362549 1575.602783 1568.249512 1560.276978 1566.807861 1573.454102 1574.128052 1568.171143 1559.673218 1552.265259 1547.980347 1553.770264 1560.298096 1566.715576 1573.686035 1581.083862 1590.017334 1601.156982 1612.42041 1622.976074 1628.791138 1633.060913 1632.996704 1630.446899 1625.963379 1618.259766 1623.990601 1636.032837 1644.955444 1646.513062 1646.369385 1648.292114 1651.160278 1658.108521 1660.759766 1660.802734 1657.991089 1650.08313 1635.737183 1631.90918 1638.924438 1641.352539 1636.602173 1646.095703 1652.091309 1656.684326 1653.827637 1647.11438 1635.810059 1618.21582 1606.234009 1607.43042 1611.427734 1607.921997 1598.64563 1595.88208 1595.304077 1604.254761 1616.101562 1625.28418 1624.881226 1622.306274 1614.026855 1605.264282 1597.047974 1586.204468 1597.485474 1603.311035 1611.401611 1619.780762 1626.082275 1635.888306 1643.080322 1644.251953 1641.199829 1638.022705 1635.901855 1634.950439 1635.309204 1635.064087 1633.803223 1633.508301 1637.334961 1642.820068 1647.25 1648.557129 1643.157104 1634.806519 1633.677979 1640.241699 1647.147461 1648.681519 1648.236206 1646.266357 1643.255005 1639.703003 1637.059692 1636.072021 1634.370361 1635.293823 1636.685425 1636.628906 1633.500854 1646.349731 1661.208862 1672.619873 1674.42981 1671.956543 1663.233643 1650.204346 1638.200195 1629.043579 1617.23584 1607.174805 1610.414185 1615.927856 1620.281494 1619.883667 1616.85376 1612.530762 1619.600464 1608.410278 1591.420654 1576.714844 1569.44812 1563.836426 1556.255981 1548.014038 1541.977173 1536.012329 1525.621216 1538.058838 1548.281128 1555.793579 1563.870117 1572.497681 1580.89624 1589.85437 1606.473022 1608.925659 1601.410034 1597.891968 1596.040527 1608.075928 1614.952271 1615.392944 1610.261108 1613.663086 1613.12146 1611.307861 1610.621704 1611.863647 1612.574829 1612.154785 1611.345581 1608.506714 1604.369019 1600.016968 1597.077271 1589.284912 1583.457642 1576.019409 1566.370728 1557.53772 1548.937622 1543.86377 1536.520752 1531.901367 1525.524536 1521.544678 1514.337158 1508.928223 1501.290283 1495.358398 1489.059814 1484.573608 1478.765747 1473.822021 1468.713135 1462.386353 1455.846924 1449.806885 1452.608398 1456.141235 1460.962158 1468.214111 1476.539673 1488.705322 1501.248169 1508.022705 1508.078369 1497.82666 1481.251709 1467.917847 1458.360352 1450.777588 1457.099243 1471.768921 1478.177246 1481.425049 1483.439575 1482.650635 1480.882324 1479.173462 1477.365112 1475.405396 1466.395264 1450.654297 1435.699341 1405.691162 1396.175537 1385.956421 1377.276733 1374.46814 1371.515015 1366.85376 1365.324707 1364.178589 1363.025146 1362.00293 1361.004028 1360.1073 1359.362305 1358.65564 1357.954956 1357.088745 1356.102905 1355.828857 1364.461426 1368.417847 1369.890503 1371.723389 1373.852051 1375.265625 1376.680054 1377.652588 1386.651855 1392.970947 1396.373291 1397.693726 1397.325317 1394.611694 1392.117554 1387.269897 1386.282227 1388.611816 1402.561401 1419.286987 1434.019409 1442.002563 1441.596313 1438.981201 1437.21167 1433.532715 1427.985962 1420.429688 1413.619629 1418.449585 1422.076782 1422.247559 1416.841309 1400.747803 1385.796265 1396.507202 1417.581787 1430.567017 1437.728638 1438.310303 1435.866455 1432.514648 1428.849731 1423.529541 1416.228149 1413.225586 1410.4198 1406.407471 1402.383057 1397.755981 1390.098877 1400.006958 1405.636353 1405.620117 1404.433105 1403.69812 1401.692505 1400.237061 1399.887817 1399.513794 1399.506226 1400.781372 1409.173828 1416.642578 1420.111938 1427.890259 1427.326782 1428.998901 1429.268066 1428.962036 1427.763062 1427.940308 1429.194702 1430.410034 1431.260132 1432.005737 1432.731201 1433.566895 1434.752441 1436.385986 1437.93042 1439.463135 1440.630981 1442.030151 1443.188232 1443.960693 1444.323486 1444.168701 1443.630615 1442.767822 1441.588013 1440.605957 1439.185303 1437.134277 1434.877075 1432.450317 1430.325195 1428.92627 1426.90564 1422.367798 1418.127441 1413.361328 1409.141846 1418.228516 1426.236328 1424.858032 1428.678467 1434.264893 1437.0448 1434.934814 1431.680298 1428.503418 1426.877441 1420.692261 1413.639282 1420.522095 1428.435181 1430.251221 1429.821777 1429.357788 1428.18811 1427.443359 1425.31958 1422.999512 1419.499023 1415.908569 1414.305908 1414.029663 1412.806152 1409.120483 1404.207031 1401.046753 1400.283813 1401.299194 1404.611206 1408.00061 1412.442627 1415.858032 1416.858032 1417.124023 1416.178345 1416.744019 1417.162476 1416.956543 1416.651367 1416.078491 1415.602051 1415.630371 1415.862549 1414.674438 1416.256836 1416.782715 1416.611694 1415.055664 1408.668457 1404.211182 1401.20813 1402.362183 1403.960083 1406.44165 1408.90271 1404.624878 1395.22644 1385.80188 1378.35437 1375.698486 1371.618896 1369.802734 1369.598145 1368.283325 1366.37085 1366.296509 1365.724487 1362.358521 1357.689819 1355.286499 1354.592773 1348.118774 1339.962646 1343.184204 1343.758667 1343.433228 1338.349976 1336.12561 1335.184326 1334.57019 1333.848389 1332.630493 1330.942261 1327.398926 1321.152588 1315.904785 1312.664307 1316.519043 1321.84021 1325.745728 1326.49231 1331.252808 1331.185181 1335.330444 1336.185547 1334.510376 1332.484375 1329.783691 1325.098267 1320.342407 1313.239624 +1643.386353 1648.839722 1654.539062 1654.781372 1650.681274 1641.431885 1634.417725 1631.07373 1625.114014 1632.767822 1639.395752 1647.539673 1660.904541 1676.282471 1688.374634 1697.075439 1705.137573 1711.441772 1715.584961 1719.622681 1724.365967 1729.255493 1734.755005 1746.415527 1761.414917 1771.782837 1778.62439 1783.344849 1785.343262 1786.172119 1789.293823 1790.978271 1787.63501 1787.553345 1786.896973 1779.652832 1764.593506 1746.907104 1735.891846 1736.080933 1729.313354 1726.961548 1739.115723 1743.982788 1741.183716 1736.123413 1733.364014 1730.714844 1724.574341 1720.96521 1720.243042 1719.792847 1725.257812 1730.301514 1733.26355 1739.885742 1745.140869 1752.432617 1756.72876 1765.996704 1773.353394 1780.786499 1787.906982 1793.792236 1798.656616 1803.515381 1807.2771 1807.622803 1804.740845 1800.489136 1796.682007 1791.913208 1785.291382 1780.005005 1775.034424 1770.05896 1764.968262 1759.125244 1754.860107 1750.95105 1745.407959 1740.046753 1732.320923 1728.144531 1723.084595 1719.843628 1720.940674 1720.810303 1723.682129 1728.601807 1732.359009 1734.441895 1734.346558 1733.009277 1731.027344 1727.861572 1724.984131 1721.950806 1718.730347 1714.150879 1710.202515 1708.59082 1705.611328 1704.17981 1705.842163 1707.771118 1709.183716 1709.254639 1707.442749 1703.880249 1700.255615 1698.942261 1699.144897 1701.431763 1706.036743 1712.236572 1717.883789 1721.54248 1725.696411 1729.573242 1731.870972 1731.194336 1729.594238 1727.945312 1725.638062 1723.148438 1721.263916 1721.722534 1721.550537 1710.784424 1699.803589 1685.200073 1669.554565 1660.771973 1650.649292 1634.485229 1621.461548 1619.504517 1610.969604 1592.664307 1583.005615 1572.300171 1559.464478 1553.406372 1553.774292 1559.437378 1568.76001 1572.837524 1577.368408 1593.255737 1596.602295 1607.35083 1615.512695 1624.69397 1629.901245 1614.328857 1595.973999 1580.779297 1567.916748 1557.402954 1559.036011 1565.698364 1573.805542 1581.552002 1591.666382 1601.439819 1605.833618 1612.066528 1621.810303 1621.760132 1617.82959 1614.078857 1607.129761 1596.747314 1593.216431 1589.911255 1586.971191 1583.93689 1576.769409 1570.128296 1571.132812 1578.164185 1579.378662 1576.278198 1567.31311 1557.969727 1551.126465 1553.726074 1559.624878 1566.248535 1573.542725 1581.029663 1589.641846 1600.246704 1612.717407 1625.344971 1635.115723 1636.72168 1638.082764 1638.367798 1637.391235 1632.206665 1623.581299 1631.105835 1634.745239 1636.637695 1640.568237 1645.245361 1650.532104 1658.882935 1661.431519 1662.1875 1659.952881 1649.9104 1633.136475 1626.159668 1634.535645 1634.024048 1633.135498 1644.241943 1655.60791 1661.046509 1652.989746 1643.188721 1629.498413 1613.458252 1602.227783 1597.463623 1609.44043 1603.853638 1594.950073 1591.881348 1594.644653 1603.397461 1614.816284 1624.468872 1623.569458 1618.827271 1611.493164 1603.404053 1594.103516 1584.779663 1588.99707 1599.321167 1604.771851 1610.162842 1621.885864 1635.703857 1645.947388 1647.011597 1642.609497 1636.975464 1634.625732 1635.570557 1636.092041 1636.096069 1635.866699 1634.103027 1637.805786 1644.487915 1647.499023 1649.295532 1648.650757 1638.981689 1640.907104 1646.998047 1651.466797 1655.471924 1658.63269 1655.63855 1652.164185 1648.77002 1645.881592 1643.604492 1641.022461 1638.874756 1636.935181 1634.467896 1635.140869 1645.236084 1658.824829 1671.112549 1674.30249 1673.238892 1666.033936 1656.481323 1645.583618 1633.803345 1623.24353 1613.463501 1596.279785 1602.237061 1608.648193 1610.197876 1607.54895 1604.638672 1600.954468 1598.584473 1597.534424 1587.377563 1578.021484 1568.671021 1559.759277 1550.867676 1545.349854 1537.587402 1525.035156 1533.820801 1542.757446 1548.836304 1556.902832 1560.564819 1573.638794 1587.605835 1599.464478 1600.134521 1591.749878 1586.947266 1594.512695 1603.012085 1609.132812 1607.272949 1608.446777 1611.490967 1610.728027 1608.932739 1608.95459 1609.903564 1611.725464 1611.803223 1611.348267 1609.263428 1605.730713 1598.706421 1595.468994 1586.432861 1582.255127 1575.230225 1568.168091 1560.640869 1554.849365 1549.040527 1542.72168 1537.167725 1531.68335 1526.814453 1519.702393 1512.755859 1506.620972 1500.36853 1494.146362 1489.378662 1483.314209 1476.954102 1472.973145 1467.180054 1461.048218 1452.591797 1447.619873 1449.864136 1453.697754 1458.061401 1463.675903 1472.686523 1484.830078 1497.881226 1503.969238 1497.223999 1480.070312 1465.010986 1455.652832 1447.572998 1450.503906 1467.503906 1475.313965 1478.396729 1480.405273 1478.868408 1475.059082 1476.733276 1474.955566 1468.142944 1452.756104 1436.783813 1401.221924 1386.138184 1376.998535 1375.68689 1373.713867 1371.296021 1369.165161 1366.780396 1365.140503 1363.721802 1362.530884 1361.657471 1360.87207 1360.243408 1359.795532 1359.18396 1358.542603 1357.373413 1357.566406 1371.213867 1376.303955 1378.642822 1380.070801 1381.901855 1383.770264 1385.391113 1386.058594 1387.605957 1394.445068 1398.797729 1401.717407 1402.59375 1402.135254 1399.202026 1394.51416 1390.463745 1387.554932 1387.848511 1398.307617 1411.295166 1430.689575 1442.831543 1442.765747 1441.970581 1440.702759 1436.57666 1430.506958 1422.381958 1417.083984 1425.406494 1428.688965 1427.967041 1420.585449 1407.550537 1386.571167 1396.61853 1412.868286 1427.38623 1440.279907 1440.854248 1438.743042 1434.815552 1429.645508 1424.410767 1419.478027 1415.033447 1411.285278 1407.882446 1405.03894 1400.767212 1393.91748 1402.292847 1408.938721 1412.398804 1411.144287 1408.819702 1405.653442 1401.991943 1404.034424 1403.517334 1401.352417 1400.055298 1403.741577 1410.810669 1414.444336 1417.260132 1423.176147 1427.144653 1427.155151 1426.410767 1425.481445 1427.001221 1428.042603 1429.039307 1430.035767 1430.827759 1431.292969 1431.889404 1433.360596 1435.600708 1437.57959 1439.385376 1440.804321 1442.501953 1443.844238 1444.824341 1445.227417 1445.082275 1444.385254 1443.385498 1442.159424 1440.836182 1439.088623 1437.134277 1434.999878 1432.835449 1430.231567 1428.29541 1425.791626 1421.775024 1416.903198 1410.729248 1413.044556 1425.229492 1429.369507 1426.305786 1430.779175 1437.275757 1439.858521 1436.815552 1433.356567 1430.687256 1428.56543 1423.750488 1418.224243 1425.85376 1429.901978 1430.321289 1429.977905 1429.342773 1428.276489 1427.367432 1425.242554 1422.287598 1418.610962 1414.791016 1414.705444 1414.468628 1413.104004 1405.727783 1402.366577 1402.551514 1403.962891 1408.598999 1414.432739 1415.648804 1417.305786 1418.199097 1418.030273 1417.5 1417.054199 1417.035034 1417.091797 1416.774048 1415.546997 1414.434692 1415.184204 1415.318481 1416.004883 1416.428345 1417.17627 1417.171387 1416.734985 1415.2052 1407.528564 1401.315308 1398.500488 1392.249268 1393.065796 1396.793457 1396.872192 1393.35376 1386.322632 1377.97644 1369.457031 1364.348877 1360.925171 1357.664307 1358.161621 1357.094849 1355.265503 1354.361084 1354.895752 1353.297119 1350.786011 1351.465576 1350.629272 1344.544434 1337.457031 1333.941772 1334.48584 1333.950073 1330.423462 1330.881104 1332.062744 1332.505371 1332.275146 1331.154419 1329.536499 1324.364868 1319.991333 1313.708252 1316.538574 1326.240967 1334.667847 1340.720337 1342.584961 1345.846558 1344.645752 1346.717773 1346.42749 1344.650146 1342.046875 1338.566162 1335.365601 1332.197266 1325.022461 +1623.493774 1624.778809 1633.98877 1637.542603 1635.311523 1626.827393 1617.541382 1616.038696 1615.345337 1621.768677 1634.012695 1640.931641 1650.14978 1662.344849 1676.013062 1684.287964 1689.67688 1696.74585 1707.883911 1717.049438 1727.087036 1734.712036 1743.569946 1756.545166 1770.032593 1782.335938 1788.554199 1793.825684 1797.510132 1799.08252 1800.728149 1800.669922 1798.943726 1798.217163 1794.75061 1779.241089 1763.201294 1743.989136 1745.86377 1749.379761 1738.315186 1733.316406 1751.697754 1761.275146 1758.345703 1750.539429 1745.767822 1737.734863 1730.045898 1727.80603 1727.849121 1725.462646 1725.461182 1732.362183 1736.575928 1743.40979 1750.307495 1757.145264 1761.290527 1765.754272 1770.589233 1780.054199 1787.635498 1793.79187 1800.625488 1805.662354 1810.499023 1815.592163 1814.063477 1805.326172 1800.39917 1794.636475 1787.782959 1781.541748 1775.620117 1769.951294 1764.098389 1757.427979 1753.322754 1749.347046 1743.792969 1738.046387 1731.875732 1729.038696 1725.866821 1724.041992 1724.963501 1726.803589 1729.259766 1732.774536 1736.020508 1737.890259 1737.355347 1735.443481 1732.514771 1729.959717 1727.508911 1724.406982 1720.89624 1712.910645 1706.659424 1705.448975 1702.760864 1700.583252 1699.022583 1701.054565 1704.579468 1707.413086 1707.320923 1706.008789 1705.057983 1704.244507 1704.120361 1704.599854 1706.480591 1711.812866 1717.239014 1721.856567 1726.069214 1730.386719 1733.043457 1733.48938 1732.985596 1730.212891 1726.496338 1720.705688 1717.768433 1719.551758 1716.636963 1706.152222 1698.585815 1685.436279 1671.274536 1654.181396 1638.525146 1624.849609 1611.39978 1598.388672 1602.99646 1583.589111 1575.337646 1562.507324 1557.641724 1554.155762 1556.45166 1565.391479 1578.135132 1583.43689 1582.884033 1602.946411 1605.554443 1608.671387 1619.378296 1634.095337 1634.219482 1616.40686 1593.074951 1579.58728 1563.410034 1562.712524 1569.504395 1578.325562 1587.526367 1598.364624 1605.813843 1611.730713 1615.273804 1618.099609 1626.928955 1632.676147 1626.286255 1620.9021 1615.689819 1608.942017 1600.509277 1597.473511 1594.990723 1591.845337 1587.36145 1575.341797 1572.82019 1583.561157 1586.994019 1582.193604 1575.003296 1563.844482 1556.414795 1553.004395 1558.24585 1565.409546 1572.489136 1580.595703 1588.532349 1597.626343 1609.593872 1620.171997 1628.582397 1634.086304 1637.814575 1638.945801 1639.278687 1637.735229 1635.055542 1632.982544 1633.2854 1635.562134 1643.004395 1647.004883 1650.032471 1656.131104 1659.029541 1661.921387 1660.141113 1647.097168 1630.473511 1620.93103 1630.284912 1624.613647 1630.920654 1644.3479 1656.124023 1658.585571 1650.220581 1638.134155 1622.628662 1611.212769 1602.302734 1596.028076 1597.443726 1595.730835 1589.485474 1585.910522 1593.803223 1603.394531 1613.946045 1621.9104 1619.212646 1611.042847 1606.462891 1600.371094 1591.495728 1583.140869 1584.167114 1593.756348 1604.721802 1614.024414 1625.40918 1636.980835 1646.774292 1648.026367 1642.25647 1635.420532 1631.261353 1633.980835 1635.661011 1636.552368 1635.713989 1636.683716 1641.18335 1646.780884 1648.335815 1649.14502 1648.413208 1645.183472 1648.386719 1651.016113 1654.925659 1658.812866 1666.570801 1667.497559 1662.519653 1659.318481 1658.843384 1652.608887 1647.547607 1642.259033 1636.925415 1632.961548 1634.75293 1639.019653 1653.082153 1664.870361 1672.595215 1673.406372 1669.832275 1662.790771 1652.837036 1639.344849 1627.296387 1616.436768 1600.89917 1589.998169 1593.577759 1596.282715 1595.231445 1597.719727 1593.409302 1587.748169 1586.139893 1586.688477 1579.14917 1570.510742 1562.3573 1554.322754 1545.740112 1534.261108 1523.930908 1527.966064 1536.529297 1541.42981 1547.554443 1559.359741 1575.332153 1586.650024 1595.210449 1592.86792 1584.706665 1583.993774 1590.627563 1597.855225 1599.602539 1597.345825 1606.326172 1610.283691 1609.164429 1607.252563 1607.337402 1608.287842 1610.531616 1611.396851 1611.259644 1610.78772 1608.236084 1603.416016 1599.841309 1593.734253 1586.457642 1580.46106 1574.139648 1566.479492 1560.998291 1554.24585 1548.78064 1542.070435 1536.622925 1529.736938 1523.688354 1517.973022 1512.477417 1504.630981 1497.805664 1492.887939 1487.934937 1482.311646 1477.897583 1472.675537 1466.072266 1456.963501 1448.296143 1445.236816 1447.135498 1449.817139 1455.00293 1460.098145 1466.567383 1478.775024 1490.49231 1492.950317 1481.081299 1464.058594 1453.573975 1442.603271 1438.051514 1455.639648 1465.619019 1470.845947 1477.408569 1476.506958 1468.276001 1469.792725 1467.248047 1456.804443 1430.692993 1399.153076 1384.798218 1377.105835 1374.476807 1372.715454 1370.895752 1368.973877 1366.984497 1365.321167 1364.141602 1362.989258 1362.119507 1361.320312 1360.800659 1360.425415 1360.087524 1359.729248 1358.738403 1357.308594 1366.835327 1376.43811 1383.968262 1388.801147 1391.91394 1394.260742 1395.468994 1396.254272 1396.565063 1397.904419 1401.850586 1405.030151 1408.041016 1408.205444 1406.501953 1401.733887 1397.361328 1392.144531 1388.190552 1387.899658 1395.566162 1408.072388 1422.964478 1434.002686 1442.674927 1443.343384 1442.314575 1439.86084 1431.527222 1425.513672 1426.327881 1430.567139 1431.956055 1429.954712 1422.409912 1409.710449 1389.441406 1398.515381 1415.367554 1426.988403 1438.827881 1441.913696 1440.753296 1437.492676 1432.155762 1426.792847 1420.471069 1415.204834 1411.973877 1410.172607 1406.748657 1402.273926 1400.246826 1402.552856 1410.274414 1416.757935 1417.157349 1414.251465 1410.361694 1408.314087 1411.245728 1412.986572 1410.617798 1406.041748 1401.818481 1404.77832 1409.851929 1413.029297 1417.405396 1420.644165 1421.118896 1420.8479 1421.60144 1423.912598 1426.151733 1427.617798 1427.727173 1429.36731 1429.609619 1429.499268 1431.326782 1434.71106 1437.820801 1439.279175 1441.102783 1443.066772 1444.614014 1445.755249 1446.185425 1446.020264 1445.302612 1444.14624 1442.649902 1440.903076 1438.843872 1436.69104 1435.407959 1433.516846 1429.900879 1427.12207 1424.27356 1420.412476 1415.994751 1411.189575 1419.091064 1428.588867 1431.591553 1428.434814 1434.335815 1440.145142 1439.943237 1437.16333 1434.252075 1431.475464 1428.843262 1426.155518 1423.670044 1427.071777 1429.595337 1430.32959 1430.008423 1429.141602 1427.282471 1426.256836 1424.870605 1422.814087 1420.315186 1418.435913 1416.868286 1416.206421 1415.80127 1412.241211 1408.251343 1410.834717 1414.475464 1415.834717 1418.459106 1418.83728 1418.886719 1418.389282 1417.94104 1416.860229 1415.985596 1416.12085 1415.764404 1414.476685 1411.580078 1411.785522 1412.496216 1414.02771 1415.615601 1416.393066 1417.11377 1417.040161 1417.151489 1415.29187 1410.56897 1405.922852 1401.730347 1393.214233 1387.470215 1387.004517 1387.227783 1383.801025 1377.260254 1370.821289 1363.879517 1356.279419 1352.763184 1351.456055 1351.531738 1350.098389 1347.3927 1345.722656 1344.668335 1342.944092 1339.547363 1339.597168 1338.088013 1331.054199 1328.511719 1328.033691 1327.403076 1326.396729 1324.979858 1325.345337 1330.430176 1331.081665 1330.723267 1329.266602 1324.499634 1319.016113 1316.574951 1314.771484 1326.576416 1339.749756 1348.796631 1352.784424 1353.907471 1356.521484 1356.890625 1354.084473 1353.789062 1353.148315 1350.980103 1348.211426 1344.588623 1341.506958 1333.33374 +1603.014648 1604.640869 1612.444458 1618.72937 1618.442871 1609.365723 1602.526123 1602.519409 1605.977417 1614.089355 1622.780762 1634.306152 1641.257202 1648.956909 1660.332397 1669.213257 1678.204224 1689.724609 1708.296387 1716.870483 1730.360107 1740.168457 1753.635132 1764.670044 1777.088379 1788.095825 1796.282837 1802.357422 1807.221558 1809.164673 1810.341064 1810.720215 1809.963501 1805.408691 1794.441162 1776.907104 1761.876709 1753.417236 1767.019653 1767.963013 1753.119995 1739.503052 1761.974609 1776.054199 1774.916016 1765.7854 1754.737915 1742.844971 1730.4729 1734.355835 1739.199341 1737.870483 1731.517334 1731.084717 1737.871704 1744.822632 1754.191284 1762.321167 1768.865112 1772.253052 1776.334229 1781.608154 1789.216187 1796.861084 1804.690918 1808.473511 1813.223267 1817.781616 1818.179932 1810.40564 1803.631226 1795.217163 1788.638184 1781.998657 1776.089233 1769.342773 1763.703003 1756.9375 1752.942871 1748.812866 1744.772217 1739.296265 1734.940308 1731.416626 1728.378296 1727.76001 1728.866211 1731.066772 1734.753662 1738.126343 1741.669067 1742.509277 1740.826416 1737.990479 1735.353149 1733.144775 1729.94043 1725.647949 1721.744019 1712.751587 1704.300293 1697.238892 1698.416626 1697.744629 1694.315918 1694.234863 1698.364136 1703.546143 1707.598022 1710.36438 1710.728149 1709.920288 1709.217285 1708.098877 1708.307739 1712.676514 1717.599976 1721.438721 1725.809937 1729.703857 1732.581543 1733.431274 1733.554932 1732.282837 1726.421265 1720.202637 1708.770142 1705.689697 1702.155029 1694.69812 1688.989258 1681.430542 1666.503662 1649.192749 1633.536865 1620.245361 1600.456909 1585.192993 1586.905762 1575.649536 1568.591919 1561.049805 1556.668701 1555.075806 1561.741455 1574.20105 1589.434204 1592.598877 1589.967407 1613.184082 1612.832642 1611.564087 1620.627197 1630.088745 1628.868774 1612.011841 1591.20166 1577.976685 1568.978882 1570.004272 1578.584229 1591.143311 1602.348267 1611.030029 1619.595337 1625.244141 1626.083252 1623.872681 1632.065918 1638.940796 1636.663452 1628.925049 1621.507812 1615.932861 1610.889038 1606.338013 1602.975708 1599.528687 1594.070801 1586.897461 1579.536621 1587.807617 1591.075562 1587.789795 1580.99292 1571.877075 1563.499756 1557.567261 1555.343018 1563.703979 1575.491821 1580.8302 1587.825928 1594.680298 1604.924072 1613.932617 1620.088257 1625.372803 1630.840454 1634.950562 1636.61377 1635.836914 1634.633667 1634.746338 1639.195312 1644.437622 1649.187622 1652.253174 1654.547974 1656.682007 1659.790161 1661.714844 1657.098511 1641.383301 1627.026001 1616.230469 1619.689575 1617.248657 1626.001587 1638.491089 1647.441406 1650.241455 1647.158447 1635.220947 1621.636597 1612.307983 1603.34082 1596.032837 1588.55835 1584.887573 1584.085205 1583.810059 1591.164673 1599.878052 1609.812256 1616.266968 1614.661255 1608.213257 1598.965454 1594.753906 1587.031006 1580.470703 1582.336304 1591.769531 1606.774292 1617.212646 1628.34436 1638.673096 1648.945923 1648.852295 1640.650757 1631.806885 1623.31604 1626.842651 1629.756104 1631.196411 1632.506958 1635.00293 1643.114868 1647.426514 1648.530151 1649.434448 1649.647217 1650.011108 1652.428101 1655.198975 1657.894531 1663.01001 1670.947388 1672.605713 1672.273682 1668.391968 1662.859131 1658.532471 1650.291382 1642.849731 1634.935547 1624.988281 1626.278076 1631.79895 1644.045532 1654.589722 1662.761353 1672.310669 1671.262451 1664.216309 1655.099365 1641.954102 1629.302124 1618.110962 1606.622192 1586.700806 1582.498413 1584.580078 1584.592407 1587.061035 1587.007935 1581.602539 1576.272705 1574.422119 1573.723022 1569.02417 1563.057739 1553.702881 1543.901367 1531.003906 1522.132202 1523.574951 1531.118164 1540.096558 1550.003296 1561.519653 1574.172363 1586.067871 1589.69104 1586.399292 1580.983765 1582.643799 1588.244873 1590.88855 1591.710571 1596.00354 1601.38501 1604.762085 1605.282715 1604.58667 1605.232788 1606.920654 1609.222168 1610.574219 1610.578125 1610.830811 1610.22937 1605.828125 1601.663696 1597.273315 1590.059204 1583.868408 1576.889893 1570.551392 1564.312744 1558.127808 1551.474121 1545.167358 1539.372681 1533.89209 1528.576294 1522.762939 1515.921875 1508.138184 1501.254517 1496.610596 1491.417725 1486.262329 1481.624756 1477.192993 1469.740723 1460.862061 1451.69397 1446.147095 1441.961182 1443.440308 1447.442749 1453.171875 1457.11145 1460.973267 1470.137573 1481.496948 1481.556885 1465.12146 1451.93457 1440.844238 1431.864746 1435.924072 1443.662231 1455.869751 1464.47229 1463.972168 1455.408813 1465.347168 1459.599365 1429.922607 1404.901733 1389.019775 1377.550415 1374.390747 1371.750732 1370.442749 1368.794434 1367.03064 1365.35791 1364.387207 1363.359863 1362.470215 1361.614502 1361.115845 1360.766113 1360.749634 1360.636108 1360.398438 1359.265381 1361.062012 1371.563721 1381.530762 1392.356323 1397.41333 1401.552368 1405.239014 1406.981567 1407.364502 1407.664185 1408.145874 1412.482056 1416.387085 1416.026611 1413.911255 1410.435181 1404.970581 1401.252563 1394.116699 1388.730835 1388.911621 1389.607788 1401.388306 1412.102783 1422.2146 1433.177856 1443.482666 1442.541016 1440.291138 1434.708618 1428.481567 1431.251953 1435.116455 1436.337646 1431.512573 1425.334229 1413.197144 1396.634521 1398.794067 1413.862915 1426.364746 1438.118652 1442.362915 1441.814819 1439.682739 1433.577026 1427.587036 1420.119507 1413.919067 1413.736938 1413.556396 1410.133667 1405.171265 1402.193237 1402.337402 1411.088867 1418.411133 1425.39856 1421.413086 1414.776123 1412.979614 1417.254639 1419.377319 1418.875977 1416.772949 1411.773682 1409.021362 1410.027588 1412.125488 1413.533936 1414.827515 1414.805908 1414.176636 1416.36731 1419.055542 1421.716431 1424.521362 1427.19812 1427.687866 1427.51709 1427.209717 1428.584595 1433.786865 1437.073608 1439.168213 1441.521484 1443.872925 1445.655762 1446.876831 1447.324219 1447.019287 1446.178589 1444.888916 1443.168213 1441.076172 1438.720093 1436.924561 1436.691284 1435.851562 1431.333618 1426.878784 1423.225708 1419.098267 1414.87915 1412.550171 1425.044678 1434.719971 1437.188354 1435.4823 1438.65271 1440.433228 1440.078125 1437.631104 1434.71521 1431.414307 1427.856689 1426.53418 1427.480835 1428.405884 1429.818481 1430.466675 1430.110962 1428.549072 1426.604858 1425.979614 1425.150635 1423.960449 1422.637329 1421.522705 1419.551636 1417.598145 1415.920776 1414.630737 1413.327148 1416.744141 1418.846558 1419.960205 1420.19458 1419.667969 1419.026855 1417.929321 1416.628296 1414.18811 1412.415894 1411.673828 1410.535156 1408.289429 1406.216064 1408.650269 1412.286621 1412.893555 1413.519287 1415.386353 1416.571167 1417.180542 1417.390747 1417.369507 1415.548218 1410.19812 1405.613647 1398.446045 1389.766357 1376.745972 1378.572998 1375.535278 1368.259155 1363.922363 1357.332397 1352.801636 1350.114502 1348.781494 1347.212402 1344.681763 1340.463623 1336.523682 1336.290039 1336.464355 1335.095703 1332.953125 1330.114624 1329.819458 1329.97229 1330.08606 1330.346924 1330.526123 1329.198608 1323.348022 1326.933838 1328.511353 1327.276978 1323.023071 1318.204346 1317.768188 1316.324707 1320.749023 1336.245239 1353.376953 1358.580566 1362.362793 1364.275391 1367.148926 1366.050537 1362.766968 1362.020874 1362.489502 1360.673462 1358.213501 1355.07666 1349.202881 1339.392578 +1586.990601 1590.105469 1592.782349 1594.999146 1591.216797 1586.077759 1586.93103 1594.139038 1595.988403 1599.458984 1610.768188 1618.017578 1630.179077 1637.977539 1647.079346 1661.977905 1676.010498 1688.42627 1705.388306 1714.772827 1728.901978 1741.473999 1756.709229 1767.007568 1776.267578 1787.147705 1797.959717 1806.753418 1812.479126 1816.446411 1820.450073 1823.101685 1822.483276 1814.560913 1799.972046 1785.705811 1769.834717 1774.035645 1780.269653 1775.878906 1759.579468 1743.320312 1769.951294 1786.046387 1784.313599 1775.284302 1761.8396 1746.299072 1738.102051 1749.623047 1753.538818 1751.928589 1745.1604 1735.670166 1740.058105 1746.254761 1755.865601 1767.506836 1773.364014 1779.029785 1783.798462 1789.883179 1794.827759 1802.879395 1808.084229 1811.896362 1815.282837 1818.542969 1817.963989 1811.71814 1804.626831 1795.916138 1789.734863 1783.698608 1777.47522 1770.702881 1763.984253 1757.708984 1752.970215 1749.102661 1745.432739 1740.830078 1736.130859 1732.410278 1730.066284 1731.087891 1733.261475 1736.090088 1740.183838 1744.343262 1746.406616 1745.931885 1743.828369 1740.956543 1738.169922 1735.270874 1731.231323 1723.184204 1717.942139 1709.752197 1697.193115 1691.341431 1695.926514 1696.691406 1692.845459 1691.252075 1694.25647 1699.88147 1706.291382 1714.064453 1721.506836 1718.052246 1714.423096 1712.355103 1712.506592 1714.637329 1717.439819 1721.403076 1725.402466 1729.265869 1731.922485 1733.187866 1732.978638 1730.656616 1725.826782 1720.480713 1707.898438 1695.444458 1688.428589 1681.214844 1673.322144 1666.972656 1657.676025 1640.809326 1624.228149 1611.182617 1594.219727 1579.263916 1573.48999 1568.700317 1563.418579 1558.384155 1559.764771 1564.276611 1570.325562 1588.714111 1600.360596 1601.223877 1604.762817 1620.855835 1621.424561 1620.088501 1622.595581 1626.629761 1623.099487 1609.108887 1593.077393 1580.508667 1571.900269 1572.640625 1584.991455 1603.147827 1612.576904 1620.912354 1629.900635 1638.61792 1640.364258 1635.55603 1634.281494 1645.052856 1644.901733 1636.104126 1627.776123 1621.083496 1617.076538 1613.700439 1610.411743 1606.138672 1600.690063 1591.431885 1583.307373 1591.98584 1598.873413 1595.878418 1588.426025 1579.062622 1571.488281 1565.670776 1560.142334 1558.330811 1573.214478 1579.86731 1586.208374 1592.09082 1598.429932 1607.035034 1612.329956 1616.137207 1619.306396 1623.293945 1625.16394 1626.199951 1628.978027 1634.172485 1642.915894 1649.523804 1654.597534 1658.418579 1659.7146 1658.95105 1663.714844 1662.582764 1654.499146 1637.291138 1624.165039 1613.78064 1607.9104 1607.605713 1620.551636 1628.473267 1633.294189 1639.422729 1639.190674 1629.414062 1618.789673 1610.983765 1602.80835 1595.489624 1589.114014 1584.09436 1582.022461 1582.707275 1588.910156 1596.654297 1606.786011 1612.973755 1610.391357 1604.488403 1596.854004 1587.223633 1582.171631 1578.245605 1582.811523 1594.196655 1607.164551 1614.966309 1621.082275 1632.342773 1646.95874 1649.587524 1641.810181 1631.048828 1622.311279 1621.358643 1622.571655 1621.745117 1632.427002 1636.786377 1641.812988 1645.839355 1648.02063 1649.615967 1651.030273 1653.375732 1656.778687 1659.183838 1661.838013 1665.369141 1669.204956 1670.554565 1671.590942 1666.291504 1662.729004 1643.480591 1642.257568 1640.32373 1633.320435 1622.965698 1623.815186 1629.049194 1632.612427 1642.887451 1657.909668 1668.12146 1669.752686 1664.396118 1656.588135 1644.676636 1631.898193 1620.469971 1609.266846 1594.737305 1574.404663 1572.635132 1574.463013 1574.794434 1573.68811 1572.102661 1568.997192 1564.308228 1565.109985 1564.004883 1562.121216 1554.369995 1545.102173 1532.072876 1521.320068 1522.451416 1531.588867 1542.971558 1552.018311 1561.776733 1572.730591 1585.648682 1588.024414 1584.583862 1573.272217 1577.689941 1583.037598 1583.272827 1585.345215 1593.230103 1598.136108 1600.753174 1599.932861 1599.390869 1602.672485 1605.031616 1607.03418 1608.920654 1609.026611 1609.531982 1608.762939 1605.556519 1601.296997 1597.477783 1591.552124 1585.485596 1578.295776 1571.958008 1565.866821 1559.884644 1553.624756 1547.812866 1543.235596 1538.177368 1532.544678 1526.257812 1519.846924 1513.315186 1506.650146 1500.592773 1494.868164 1489.363647 1484.576294 1479.973633 1473.669556 1463.697021 1456.843628 1451.843872 1445.380005 1440.147949 1437.57605 1443.133179 1450.59436 1454.415649 1457.923706 1462.148682 1472.269287 1467.864868 1451.637329 1440.820068 1431.618774 1424.889771 1427.107544 1437.268433 1445.945312 1446.741089 1440.501221 1458.704956 1432.77063 1412.075439 1392.664185 1380.128296 1374.396362 1369.330933 1368.308472 1368.69397 1367.203247 1365.516968 1364.501343 1363.65564 1362.543945 1361.895508 1361.242188 1360.929932 1360.935669 1361.236816 1361.645142 1361.597168 1359.385132 1365.422974 1373.706543 1387.56665 1398.386841 1404.613525 1409.807129 1413.847656 1417.218018 1419.642578 1419.28064 1415.305054 1420.739502 1424.864136 1427.095825 1427.29834 1417.665283 1411.521729 1406.060181 1396.9104 1389.759033 1394.078491 1398.051758 1399.900391 1402.121948 1413.550781 1422.009033 1436.142212 1442.390381 1440.64978 1436.047974 1434.689331 1436.582275 1439.697021 1439.741699 1434.515259 1427.981934 1414.57605 1401.124634 1397.043457 1411.976807 1426.492798 1438.361206 1442.579224 1441.789673 1440.161621 1433.837646 1427.10791 1423.734131 1419.070801 1419.049805 1418.22229 1415.386719 1408.638672 1402.185669 1403.485352 1411.89502 1420.95874 1428.5979 1428.090454 1418.518188 1414.554077 1422.0896 1425.938232 1425.388672 1422.329712 1418.293579 1414.609131 1412.049683 1411.927979 1412.583374 1413.636475 1414.3927 1414.2323 1413.997681 1413.944458 1415.351685 1423.068115 1425.771118 1426.24939 1426.524658 1426.875122 1428.979492 1433.876343 1437.316895 1439.145874 1442.123901 1444.891357 1447.049438 1448.230713 1448.681763 1448.432861 1447.222168 1445.733398 1443.819824 1441.619385 1439.303711 1437.981567 1438.824341 1439.436646 1434.282959 1427.088989 1422.393555 1418.188477 1414.382812 1415.608887 1428.901367 1439.167114 1439.234619 1437.46167 1439.335693 1440.551392 1440.300537 1438.556274 1435.281128 1431.328979 1427.269043 1427.228638 1429.33374 1430.182129 1430.924805 1431.307983 1430.681763 1429.177856 1427.647339 1426.740356 1426.709717 1426.391479 1425.915161 1425.725586 1422.647339 1417.693481 1414.617432 1414.926392 1417.464844 1420.696289 1422.688354 1422.519165 1421.419556 1419.924561 1417.755249 1414.779663 1413.233398 1410.652222 1408.030029 1405.381958 1404.101807 1402.026001 1400.927124 1409.62561 1414.950073 1414.392334 1410.763672 1413.126099 1415.151001 1414.571289 1416.282349 1417.328125 1416.949951 1413.046875 1406.896851 1400.695679 1391.028809 1378.554688 1368.309326 1365.291382 1362.972168 1359.407837 1354.55542 1350.950562 1348.466431 1346.368042 1344.649536 1342.28418 1336.680908 1337.344727 1336.769165 1333.546143 1335.444214 1339.714844 1340.660278 1338.680176 1334.672729 1333.610718 1333.282104 1329.91687 1328.580688 1322.444092 1322.419312 1322.093262 1321.806274 1319.224609 1322.962036 1326.767578 1327.203979 1327.824951 1343.23999 1358.664429 1364.336426 1369.113403 1372.600342 1374.774658 1375.064819 1369.962036 1369.292969 1370.990601 1369.864258 1366.600342 1361.01062 1354.930664 1347.904419 +1561.207764 1566.922974 1567.685547 1570.276245 1580.811523 1594.697021 1600.945068 1602.130737 1604.177002 1606.863281 1609.072388 1610.578491 1616.41394 1622.838867 1639.821777 1656.208374 1673.759399 1683.892944 1700.892578 1711.44519 1721.682373 1736.641968 1751.476562 1762.096313 1771.165405 1782.474976 1794.622925 1806.479004 1816.593506 1823.850464 1831.005249 1835.029053 1832.651733 1822.364746 1810.175537 1797.279541 1784.517456 1792.78833 1793.948853 1781.019165 1757.721436 1760.630371 1783.372192 1792.080444 1788.738037 1779.806396 1766.306641 1748.083252 1751.848877 1766.969604 1770.729492 1768.306274 1760.371826 1747.635498 1742.35022 1749.359863 1756.950195 1768.780762 1776.095337 1783.98938 1792.256836 1801.516113 1806.089233 1807.505371 1811.394531 1815.011597 1817.863037 1819.072998 1818.098145 1812.177002 1805.283936 1798.352295 1791.710815 1785.436279 1779.248291 1771.058716 1764.400757 1758.005127 1753.029541 1748.479492 1744.652954 1740.396973 1736.490356 1733.22522 1732.220459 1736.12146 1739.730591 1742.36084 1745.392212 1748.901855 1749.739868 1748.640991 1746.568115 1743.710815 1740.192139 1735.950562 1730.530884 1720.489624 1711.239746 1701.848022 1691.838257 1682.632812 1691.436035 1696.049683 1689.48645 1686.498047 1690.692871 1696.924316 1702.380005 1707.420654 1717.121216 1721.065552 1718.764404 1716.715332 1716.119629 1716.777588 1718.0177 1721.607788 1725.410889 1728.464233 1730.653442 1731.373047 1729.450195 1726.303833 1722.810059 1718.76355 1707.169067 1693.204834 1679.089722 1671.75415 1664.369385 1654.754028 1644.150879 1631.955444 1616.69165 1602.706299 1588.242798 1574.672607 1568.379883 1563.331909 1559.357178 1563.582764 1568.46582 1573.780884 1589.601929 1601.130371 1608.710327 1607.713501 1610.986572 1626.961914 1627.673218 1627.154297 1628.398315 1629.656128 1624.710205 1614.986084 1596.614014 1586.260742 1575.157593 1571.747925 1590.731323 1605.851685 1617.383179 1628.122192 1640.292725 1650.863892 1653.885254 1650.072876 1644.78125 1651.547241 1652.924561 1642.989624 1634.805298 1628.63147 1622.562378 1619.721436 1616.873413 1612.165894 1605.331909 1596.453491 1588.428467 1597.729858 1607.259277 1603.712891 1595.087402 1586.135986 1578.89209 1572.163574 1565.482178 1559.60376 1567.419678 1577.457764 1583.525879 1589.146362 1594.011597 1598.935547 1604.300049 1608.296143 1609.171387 1609.811646 1617.246338 1621.857056 1627.974365 1636.398071 1647.432495 1654.185059 1659.817871 1664.508789 1668.281372 1668.679565 1668.703247 1664.945068 1652.720703 1636.478638 1624.072998 1615.192017 1607.500977 1604.778809 1609.956299 1618.551392 1622.859253 1627.789917 1628.646118 1624.471558 1617.351196 1610.027466 1602.668091 1596.421265 1589.126221 1583.184814 1580.067993 1580.662231 1586.754272 1595.23938 1604.42627 1610.401978 1605.905762 1599.741089 1592.770874 1584.949707 1577.781006 1578.689087 1584.508423 1594.601685 1605.463379 1612.938232 1620.291504 1630.602905 1645.188843 1649.886353 1644.213989 1631.588867 1621.305908 1615.088379 1616.421021 1625.019531 1634.824707 1635.990112 1640.53186 1644.950317 1647.683594 1649.249756 1650.516479 1653.467041 1657.527222 1660.860718 1664.258667 1668.545776 1670.13269 1669.920898 1665.982056 1658.017212 1643.729004 1634.858765 1632.637329 1634.626221 1629.972534 1621.706543 1623.077271 1627.178589 1631.844849 1644.64624 1658.389404 1663.015137 1664.079346 1662.811401 1656.839355 1646.314575 1634.131836 1622.099976 1610.855469 1594.899414 1579.915527 1570.337769 1563.547974 1565.417358 1564.291992 1558.989014 1560.074829 1557.095947 1556.062988 1556.234741 1555.951538 1550.603516 1541.880859 1527.731201 1517.838623 1519.891235 1530.449463 1542.214966 1552.493896 1562.113892 1573.357666 1585.165771 1587.872559 1584.846069 1571.149292 1572.03833 1573.371948 1574.777954 1583.843506 1588.640625 1593.900024 1596.049194 1595.398682 1597.578125 1600.653076 1602.923828 1604.942383 1606.641479 1607.373169 1607.428955 1606.562866 1604.081665 1600.835449 1596.764038 1591.250122 1585.58667 1578.753174 1572.021851 1567.219604 1561.461304 1556.671387 1551.584839 1546.637817 1541.491577 1535.667969 1530.564941 1525.249634 1517.773193 1510.587891 1503.794922 1497.85376 1492.432983 1487.581177 1482.868774 1477.362183 1467.931274 1460.733765 1455.782471 1450.394287 1444.146973 1438.342773 1435.753174 1440.339111 1446.879883 1451.070068 1454.971802 1459.927002 1465.026611 1453.129639 1442.011963 1432.472046 1425.745239 1423.060303 1423.419922 1427.626587 1427.8479 1431.929932 1429.279419 1415.170776 1395.282837 1385.51355 1377.725586 1371.294434 1365.755005 1365.682251 1366.95813 1365.593018 1364.576904 1363.64502 1362.744507 1362.165039 1361.559692 1360.989258 1360.923706 1361.16748 1361.958252 1363.185181 1365.062012 1361.512817 1363.927124 1372.521973 1389.173096 1403.410522 1410.688477 1417.857666 1425.977295 1429.107422 1430.003052 1429.340942 1426.194458 1428.684082 1433.586426 1435.639771 1432.712036 1429.355347 1417.668335 1407.670044 1399.183105 1396.525146 1403.419434 1408.628784 1409.531616 1404.985962 1405.679077 1413.557007 1425.289917 1436.797363 1439.451904 1438.242798 1439.475342 1440.21582 1441.067261 1440.471313 1435.802124 1428.849609 1415.467651 1404.818726 1397.497437 1410.185669 1425.537598 1438.881714 1442.292969 1441.353516 1439.350342 1434.640747 1428.837158 1428.672729 1428.674438 1426.531372 1422.947998 1418.117676 1411.202026 1403.251953 1404.443359 1416.772827 1424.221069 1428.689209 1429.017456 1424.251953 1421.778198 1427.062378 1428.261719 1428.330078 1427.334839 1423.675537 1418.886597 1415.139038 1412.000488 1412.577026 1414.033569 1415.783813 1417.723511 1419.26416 1420.334351 1424.18457 1426.800171 1427.148682 1427.30188 1427.872314 1428.979248 1431.344238 1434.784668 1437.876587 1439.376709 1442.796997 1446.288208 1448.665161 1449.848755 1450.153442 1449.840332 1448.450562 1446.662109 1444.589722 1442.429199 1440.573975 1438.872437 1438.568848 1439.171631 1430.605591 1425.039795 1421.197632 1417.119629 1415.202881 1422.230713 1432.356079 1439.773193 1439.213013 1438.232056 1439.810181 1440.669922 1440.466919 1439.185547 1436.413574 1433.603516 1431.373413 1429.917847 1431.563354 1432.550537 1432.698486 1432.509766 1431.706177 1430.595215 1429.285767 1428.744873 1428.696655 1428.231445 1427.846436 1427.490112 1425.240845 1419.445435 1415.595825 1418.270386 1422.876099 1425.44165 1426.210083 1424.240601 1420.785156 1418.315552 1414.340088 1410.283203 1407.676514 1405.910645 1403.800171 1399.802002 1397.838501 1396.300903 1398.204712 1403.957275 1409.977295 1411.548828 1406.718872 1406.327759 1405.102417 1409.335449 1414.540039 1417.149658 1417.106201 1412.835083 1405.578125 1399.072754 1389.82019 1378.840454 1368.167969 1362.688354 1358.973145 1356.98291 1355.178589 1350.654907 1346.44104 1344.364502 1342.338867 1338.211792 1340.129517 1343.13916 1343.593262 1343.41272 1344.023438 1344.362549 1343.756836 1341.910767 1338.47937 1336.942261 1336.339355 1335.049316 1333.578857 1331.314087 1330.456543 1327.445801 1323.388916 1324.497681 1331.013062 1336.14502 1341.4198 1336.403809 1347.07666 1360.517212 1367.862549 1374.449341 1379.621704 1384.602417 1384.760376 1379.599121 1376.450195 1379.545288 1378.285889 1372.763794 1364.574707 1360.08313 1357.814087 +1571.117676 1576.704224 1581.307373 1589.235229 1601.700439 1610.513428 1615.201538 1615.060059 1615.81189 1619.078979 1625.02356 1632.344482 1635.394775 1632.669189 1631.455322 1647.388428 1668.299561 1677.556519 1695.086548 1707.795898 1716.042969 1728.103882 1743.189331 1754.580322 1764.368896 1778.382324 1789.866699 1803.817749 1815.958008 1826.737671 1838.52417 1844.744873 1841.461914 1829.999878 1817.25708 1805.37854 1802.152222 1802.583862 1796.699829 1779.695923 1768.886841 1787.042603 1797.636963 1797.879761 1793.988892 1781.66687 1767.038574 1753.71582 1765.377441 1776.934082 1781.207031 1779.668701 1772.026489 1760.62146 1747.380127 1752.672363 1760.833008 1767.85022 1777.097168 1785.399902 1796.406128 1806.385864 1808.684937 1810.439575 1813.724487 1817.310547 1819.084473 1819.396118 1818.506958 1812.451538 1806.41626 1798.271851 1791.405884 1785.672485 1779.674561 1770.649414 1764.397705 1758.49353 1753.124756 1747.289185 1743.320679 1739.922607 1736.959106 1735.810181 1737.764771 1742.319092 1747.031494 1750.696777 1753.0 1753.743408 1753.592041 1751.319946 1748.488892 1745.447754 1740.728149 1735.280762 1729.014771 1720.339355 1707.589355 1695.856689 1686.004761 1680.798828 1682.77002 1688.849854 1686.613647 1681.758911 1685.984009 1692.023071 1697.011841 1701.788574 1708.126343 1718.946167 1721.47644 1721.592407 1719.471558 1718.587769 1719.164795 1722.268555 1725.084717 1727.234253 1728.625854 1728.285522 1725.523193 1721.404175 1716.650269 1710.062744 1699.451538 1686.322754 1670.806396 1662.955933 1656.65271 1645.541626 1633.112061 1620.006226 1608.657471 1594.846802 1578.544067 1570.776611 1565.692749 1560.771362 1564.781372 1570.182129 1578.057739 1592.86377 1602.333862 1609.068726 1617.956299 1613.554932 1616.584839 1632.693481 1634.698975 1633.378296 1634.811157 1636.182007 1634.347412 1623.685547 1604.990234 1592.105835 1579.934204 1571.077637 1590.918579 1607.40271 1620.991699 1632.734985 1649.176025 1659.931641 1664.763184 1661.609131 1656.310425 1658.406006 1662.893921 1656.34021 1643.120972 1637.877319 1633.213989 1627.955566 1623.371948 1617.392944 1609.922241 1598.915283 1595.232666 1603.246948 1613.040161 1611.708008 1602.389893 1593.554321 1585.794678 1578.52356 1571.672241 1562.89563 1564.151001 1575.393066 1581.242188 1586.573486 1592.288452 1595.85437 1598.465088 1606.541626 1609.799927 1616.397095 1624.82959 1631.622925 1634.90918 1640.488525 1649.793579 1658.294556 1664.154541 1669.558472 1673.677368 1676.484253 1679.056641 1670.901978 1657.357056 1641.637207 1632.862305 1624.980469 1612.963745 1602.134766 1598.053223 1607.2854 1611.640869 1613.901001 1616.537842 1618.927856 1615.967896 1611.71167 1605.143433 1598.647827 1588.838623 1582.245605 1577.031494 1575.276978 1584.016235 1594.385132 1602.030029 1604.172485 1599.746094 1594.001465 1586.913208 1578.522949 1573.016235 1587.16687 1593.076538 1596.987183 1604.588867 1611.423706 1620.127319 1632.404175 1645.247437 1648.56311 1637.967285 1625.497437 1616.048462 1609.341187 1615.78772 1624.457642 1625.847534 1633.210815 1640.024048 1646.454956 1648.098633 1648.348877 1646.266724 1649.581787 1654.039429 1657.416382 1663.847046 1672.002441 1672.775757 1671.644531 1664.946411 1653.142334 1639.674927 1632.23938 1626.384888 1626.630981 1625.299683 1618.718384 1619.021484 1625.53125 1632.155518 1643.328735 1651.264038 1655.878174 1659.57959 1661.394775 1656.97937 1645.626221 1634.13501 1621.635376 1611.12146 1596.460205 1582.749146 1576.356934 1559.310425 1556.568726 1556.041382 1553.425293 1552.75354 1550.092529 1546.746704 1547.343506 1549.073486 1545.771729 1535.58252 1521.72937 1515.68396 1517.803101 1527.521606 1542.010132 1552.86731 1562.173218 1573.825806 1583.876465 1588.073608 1585.10083 1571.174805 1561.604248 1565.695068 1572.234375 1579.297241 1585.814453 1585.804443 1587.625488 1586.272095 1592.573608 1598.294312 1601.52002 1603.175903 1604.436768 1605.080933 1605.187744 1604.251709 1602.326416 1599.495361 1595.587891 1590.39563 1584.526611 1578.916138 1573.22522 1569.643555 1564.703857 1559.8927 1555.220337 1550.412109 1545.22644 1539.854614 1534.431274 1528.34021 1521.157104 1512.669678 1506.163574 1500.292603 1495.203003 1490.479858 1485.533447 1479.980591 1473.060425 1464.643921 1458.911255 1452.867676 1447.264038 1442.560425 1438.405151 1433.231323 1438.093384 1442.550293 1448.168823 1453.748901 1459.065063 1454.913696 1442.803345 1433.451782 1426.020264 1421.658936 1417.486572 1413.759277 1414.419312 1415.532837 1411.75293 1396.821167 1387.654541 1381.915161 1376.576294 1370.796387 1366.776489 1365.988892 1365.546753 1364.538818 1363.311768 1363.045288 1362.816162 1362.081543 1361.449951 1361.063965 1361.132812 1361.524902 1362.481567 1365.151855 1367.846313 1367.466187 1361.716309 1365.839111 1387.415283 1406.950684 1416.809448 1426.606079 1430.855957 1435.002075 1436.806274 1435.505737 1434.780762 1436.04895 1441.092896 1440.353149 1436.012085 1429.060181 1419.072876 1408.163452 1401.990967 1403.657227 1408.777466 1416.161255 1418.565796 1417.569092 1414.778687 1412.062866 1413.561401 1424.505981 1431.016357 1439.855103 1441.994995 1442.088501 1441.67041 1441.028076 1436.720825 1429.750244 1417.022095 1408.137207 1399.919312 1410.363403 1424.547607 1438.110596 1441.398926 1440.257324 1438.2854 1435.569946 1433.478882 1432.588501 1432.182129 1429.908936 1426.185791 1419.554321 1412.555542 1404.600098 1403.314575 1417.263428 1425.528564 1429.331421 1429.148926 1427.327637 1425.531006 1428.008911 1428.991333 1429.175293 1428.717407 1427.450806 1423.696533 1418.819824 1412.465576 1412.486694 1413.366699 1415.852783 1418.760864 1423.04187 1426.878418 1428.21228 1428.794434 1428.938354 1428.976807 1429.624756 1431.069946 1433.359863 1435.802856 1437.864502 1440.271851 1444.068237 1447.859131 1450.290527 1451.377319 1451.505493 1451.05127 1449.633179 1447.689453 1445.345215 1443.304321 1441.432495 1439.356934 1435.358765 1429.463623 1425.786133 1422.360229 1419.040161 1416.819214 1420.333862 1427.759888 1437.639893 1439.780029 1439.117432 1438.663452 1440.252075 1440.828003 1440.570557 1439.053223 1437.325195 1436.544678 1435.562866 1434.681274 1434.982666 1435.090576 1434.704956 1434.084961 1433.412476 1432.5448 1431.64978 1430.534058 1429.706055 1428.571899 1427.446655 1426.695435 1424.25769 1420.354614 1417.527588 1418.789917 1426.86084 1428.899536 1427.207764 1421.091431 1416.928101 1412.060547 1406.568848 1403.729614 1401.339111 1400.299316 1397.56958 1392.285278 1391.041016 1389.923706 1390.370605 1395.256714 1399.234375 1401.545288 1400.853516 1396.262085 1399.562378 1407.372437 1413.767944 1416.488647 1416.094849 1409.484741 1400.552979 1390.82251 1383.009155 1374.013672 1365.092529 1359.520264 1355.567261 1352.609497 1350.992065 1345.67981 1343.486328 1341.837036 1338.717285 1342.965698 1344.57605 1345.912842 1346.422485 1346.54541 1346.733521 1346.379395 1344.936768 1342.104004 1339.983765 1338.985229 1339.935059 1340.448975 1339.789917 1339.71521 1338.844727 1336.956787 1332.574829 1330.771606 1338.599731 1344.776733 1353.184204 1346.7146 1349.861816 1361.246704 1369.240479 1376.147461 1385.202393 1392.689453 1393.667358 1388.917358 1384.210205 1385.69812 1386.68042 1379.210449 1373.533813 1368.084106 1367.954468 +1593.855225 1601.285156 1603.099487 1605.496582 1615.869873 1626.240723 1631.943115 1632.787476 1629.441528 1632.096924 1640.232422 1644.540771 1646.18457 1645.959473 1641.172729 1638.864014 1660.186523 1673.42981 1684.435059 1700.918701 1710.275879 1720.61792 1732.060791 1747.991699 1757.071045 1769.981445 1784.035645 1796.982056 1810.565918 1823.907593 1837.098267 1846.743408 1843.542114 1835.445435 1826.046387 1817.551392 1812.040649 1808.047974 1797.185059 1780.611694 1790.349365 1800.386719 1804.71521 1803.239136 1795.810425 1781.674805 1767.531616 1761.738525 1773.210693 1786.140747 1791.720703 1788.647583 1778.658447 1767.304199 1754.233887 1757.194946 1765.916992 1771.836426 1778.614014 1786.889771 1796.972534 1806.730713 1809.560303 1811.522461 1814.321411 1817.330078 1819.032104 1819.537354 1817.810425 1810.258423 1803.55188 1796.461792 1789.887085 1784.586304 1778.306519 1769.999634 1764.115723 1759.158447 1753.70874 1747.221558 1742.279663 1738.932983 1736.855591 1737.310303 1740.989746 1746.206299 1753.861084 1758.596191 1758.52002 1758.019043 1756.828369 1753.386475 1748.689209 1745.509766 1739.648071 1733.547485 1726.247681 1719.64624 1710.195679 1698.163452 1686.199341 1678.432739 1675.397583 1684.460205 1684.438599 1681.719849 1681.420166 1685.918823 1691.323975 1696.14978 1703.32373 1715.573364 1724.889282 1728.593262 1724.633057 1721.42041 1721.315186 1723.313354 1724.622803 1725.814697 1726.201294 1725.416626 1722.337769 1717.146729 1707.273315 1701.57251 1692.793701 1681.025635 1671.381226 1660.958008 1651.598999 1637.366333 1624.264404 1612.648926 1604.085449 1593.053345 1571.924194 1567.818115 1564.390137 1565.114502 1571.754272 1581.018677 1595.703735 1604.220093 1610.856445 1622.110962 1628.276978 1624.14563 1623.37146 1645.9646 1649.178955 1649.675049 1650.308838 1648.170776 1641.358032 1626.399292 1611.654419 1600.053345 1588.735962 1577.471069 1589.15979 1605.838623 1621.834229 1633.984741 1654.258545 1668.979614 1674.986572 1674.082031 1667.174194 1666.278687 1672.891357 1666.851807 1654.784546 1644.227783 1640.061157 1635.772583 1629.233643 1621.688477 1612.492065 1600.320801 1596.486938 1606.693848 1616.737549 1617.176636 1609.616821 1600.326294 1591.794189 1583.538208 1575.932373 1565.814941 1567.957153 1572.703247 1580.70166 1585.606323 1593.393677 1598.967407 1602.708374 1609.393066 1617.326172 1627.07312 1635.526855 1641.791016 1646.601807 1648.89563 1654.544189 1661.589478 1667.439087 1672.484131 1676.813232 1681.051025 1685.214966 1676.360107 1660.788086 1647.176392 1637.671509 1627.919434 1616.929077 1604.209351 1595.167969 1596.420532 1598.189453 1599.064331 1604.428955 1613.218872 1613.79541 1612.133545 1605.72583 1597.657959 1588.810913 1581.578125 1575.580566 1572.832031 1582.683472 1594.174316 1601.324951 1601.923584 1598.466187 1587.594604 1579.658447 1572.124634 1579.072388 1593.313354 1601.090454 1604.5 1610.234741 1615.488892 1620.911011 1636.53186 1645.85022 1644.098389 1633.08728 1620.113892 1609.870361 1607.278809 1609.948242 1617.304443 1626.238037 1636.736572 1642.725464 1647.516113 1648.229858 1647.739746 1642.830688 1643.333374 1647.283813 1651.230469 1662.417114 1673.393066 1674.070557 1673.648926 1665.773071 1651.880005 1641.472534 1632.823486 1626.808838 1620.579712 1619.440918 1612.916992 1610.10083 1621.882202 1626.224121 1635.074219 1641.358643 1649.363647 1658.504517 1658.294556 1655.717163 1644.941528 1634.118164 1623.417358 1612.952881 1600.991821 1585.11792 1578.463013 1568.763184 1553.138184 1547.501099 1543.842896 1544.64978 1543.374023 1540.489746 1541.988159 1543.542114 1540.815674 1533.486572 1525.895386 1513.771362 1511.040527 1527.056152 1541.125244 1551.692749 1559.946655 1571.695801 1580.940796 1586.984497 1583.422607 1571.720337 1559.538818 1559.759644 1567.959839 1575.056641 1577.089111 1576.651978 1579.666504 1579.29187 1585.640625 1599.250244 1600.598755 1600.964722 1602.245239 1603.084595 1603.188599 1602.477295 1600.802856 1597.839355 1594.489258 1589.871582 1584.87085 1581.170288 1576.966553 1573.333984 1568.664062 1563.727661 1559.045288 1554.224365 1549.041748 1543.3479 1537.777466 1530.843262 1523.514038 1514.438721 1508.043091 1502.471802 1497.2052 1492.609497 1487.825317 1482.248779 1476.423706 1468.91626 1462.707642 1455.308228 1449.36145 1445.839111 1441.950684 1434.055542 1430.426758 1433.472168 1440.160156 1447.124023 1452.607788 1452.428345 1443.015747 1433.844116 1426.157349 1421.14209 1416.93103 1412.56189 1408.634277 1401.509033 1396.073608 1388.074219 1383.053345 1378.660034 1375.33374 1371.311646 1368.722412 1367.04248 1364.481567 1364.078369 1364.242554 1363.674072 1362.86792 1362.178223 1361.725708 1361.454834 1361.550903 1362.324219 1364.392456 1368.324829 1376.317383 1370.58667 1366.308472 1362.479248 1378.815552 1402.355469 1416.546997 1427.706055 1432.096436 1438.122314 1441.55542 1440.594727 1440.015503 1441.271118 1448.669312 1443.768188 1438.385742 1425.635742 1416.304199 1411.755005 1409.264771 1415.112915 1416.508789 1422.881836 1425.309448 1425.494385 1423.27478 1418.769897 1413.905151 1417.040649 1429.497314 1442.133667 1443.06958 1442.417603 1442.14856 1439.894165 1435.29187 1429.604126 1417.187988 1409.485962 1401.730957 1410.352783 1423.649658 1436.859741 1440.670044 1439.525269 1437.568604 1437.161621 1437.207397 1437.660645 1435.929199 1431.306152 1426.714722 1419.222168 1413.263672 1406.774048 1404.21228 1413.098755 1419.918213 1426.876587 1428.645386 1428.474365 1428.811768 1429.635132 1429.928101 1429.893433 1429.682251 1428.908203 1427.496704 1422.455444 1413.233398 1412.621826 1412.560425 1413.507202 1416.177124 1421.246216 1427.324097 1428.552246 1429.217896 1429.657227 1430.362671 1431.269653 1432.915894 1435.11792 1437.179077 1439.410278 1442.845215 1446.507812 1450.238892 1452.100098 1452.690552 1452.588013 1452.214478 1450.751099 1448.384644 1445.938965 1443.556885 1441.165283 1438.241699 1435.018921 1430.814209 1426.447144 1420.651733 1418.244019 1419.945557 1423.419067 1430.75415 1440.154907 1440.569336 1439.041138 1439.099854 1440.896973 1441.366943 1440.55127 1438.677368 1438.393066 1438.46521 1438.450806 1438.178711 1438.081421 1437.33667 1436.544189 1435.78418 1435.466553 1434.833618 1433.682739 1431.966187 1429.891235 1427.266968 1426.361694 1425.170532 1423.555054 1420.844971 1417.639526 1415.735107 1418.037109 1416.741577 1413.990967 1411.45105 1405.288086 1401.205322 1400.234619 1398.262085 1396.381958 1394.252197 1392.673584 1391.326538 1389.462524 1386.301025 1384.725586 1386.456665 1388.517334 1389.284302 1388.408813 1387.773071 1397.956055 1404.674194 1410.008057 1412.932983 1410.726685 1403.573975 1393.789307 1384.960449 1376.273315 1366.319336 1360.090942 1354.501099 1351.932983 1348.257202 1342.553589 1341.113037 1340.140503 1341.525269 1345.348145 1347.906616 1348.739624 1348.97522 1349.298096 1349.4646 1349.177002 1348.067627 1346.231812 1343.471191 1340.483276 1341.828491 1345.073486 1347.283569 1348.011719 1350.122559 1351.488525 1347.897461 1343.917358 1340.303833 1346.103882 1356.198242 1357.525513 1353.740112 1355.394165 1365.276123 1371.340576 1376.145752 1386.729248 1395.228638 1400.906372 1394.710327 1388.621338 1392.023315 1392.346313 1388.170776 1387.055908 1380.430664 1379.560913 +1610.161377 1616.998169 1618.068115 1620.666626 1630.485596 1638.198364 1641.246704 1641.96582 1641.129395 1642.668335 1653.574341 1662.63855 1666.379517 1666.745483 1661.213135 1650.196167 1645.856567 1666.019165 1677.419922 1692.469604 1702.593872 1712.814209 1724.005249 1739.020508 1750.70813 1761.714355 1775.117798 1788.097168 1802.202881 1813.271606 1825.625244 1835.907837 1838.099487 1834.626343 1829.094482 1822.436401 1817.074829 1808.823975 1797.445801 1795.684082 1804.544922 1810.012817 1811.167969 1808.598755 1797.71167 1783.526611 1773.589478 1773.194702 1780.871948 1795.332642 1797.510986 1795.240356 1784.589844 1772.999023 1757.815918 1760.222778 1771.395386 1776.654419 1782.98291 1790.712891 1801.625732 1807.569214 1810.155518 1811.137695 1812.644653 1815.081177 1818.208862 1819.066162 1815.899902 1808.836182 1801.235474 1793.293457 1787.806763 1782.323242 1775.418335 1768.123291 1763.269653 1758.775391 1753.402588 1747.084961 1742.109619 1737.046997 1734.828857 1736.154663 1741.014648 1748.434937 1756.429199 1759.501587 1759.390259 1759.126953 1757.440552 1751.394531 1744.991577 1739.274536 1733.748413 1729.349365 1719.336182 1714.143311 1711.092773 1704.290161 1693.818359 1683.160767 1669.122803 1676.456055 1683.994019 1678.456909 1675.836792 1680.703979 1685.900024 1692.216187 1700.332153 1710.257446 1723.543213 1732.547607 1727.781006 1724.960083 1724.007202 1723.752808 1724.043579 1724.598877 1724.773315 1723.873291 1721.44519 1716.685913 1707.437012 1701.285522 1693.797363 1686.646851 1677.724854 1665.940918 1653.794678 1633.388428 1619.029907 1606.247437 1594.052368 1580.747314 1569.528076 1565.845093 1568.406982 1575.169556 1584.434204 1597.995605 1605.584717 1612.411499 1620.17041 1634.230347 1643.199463 1643.573853 1642.070435 1660.871948 1661.508911 1661.110352 1663.28125 1658.894043 1648.048828 1631.823975 1619.702881 1608.939819 1594.702393 1583.307495 1587.273438 1605.171509 1622.274048 1636.317627 1659.757812 1676.102905 1684.077515 1686.026611 1678.71875 1670.01123 1680.982788 1675.935913 1666.040894 1655.491821 1645.113281 1640.145386 1634.3125 1623.261719 1614.531494 1604.026489 1600.199829 1609.523071 1622.235596 1624.668701 1618.262817 1606.849487 1596.950073 1586.624512 1577.27478 1567.92688 1576.609863 1575.744019 1584.80127 1591.599243 1598.44104 1601.81958 1606.366577 1613.570068 1624.998169 1636.887329 1645.372437 1649.276855 1651.666016 1654.325806 1657.657349 1665.500122 1671.766602 1676.522095 1679.717651 1681.112061 1680.69104 1672.873047 1660.190918 1647.661133 1636.081909 1626.000977 1615.515137 1604.136108 1595.802124 1588.372925 1589.108887 1589.834961 1594.88147 1606.384155 1611.490356 1611.131714 1604.559204 1596.172852 1588.216064 1580.438721 1573.767944 1572.028076 1582.863281 1594.908325 1601.945801 1602.310181 1599.010254 1586.645874 1572.575684 1570.587769 1588.984741 1602.224121 1611.153564 1613.641602 1616.05603 1621.066284 1627.585693 1637.918945 1642.438354 1638.964966 1629.086914 1616.729004 1607.365356 1607.411987 1614.552246 1619.156372 1628.854492 1636.881592 1643.581909 1647.817139 1648.508545 1644.69873 1637.739136 1633.949097 1637.66626 1647.343262 1657.838867 1668.251831 1672.706665 1674.459595 1671.973145 1660.136841 1652.051636 1645.025269 1634.796021 1624.635742 1612.638062 1608.248657 1607.703735 1613.404419 1617.692017 1622.053589 1636.762939 1648.277344 1646.69458 1647.616577 1647.249146 1640.286499 1632.360352 1622.942749 1613.578735 1600.536865 1586.332764 1578.331909 1570.616089 1558.146118 1547.951416 1540.770508 1536.216064 1531.468506 1530.895996 1538.991943 1540.428955 1539.247314 1535.952881 1522.897583 1513.516724 1510.641846 1521.862061 1538.297485 1548.909546 1557.603516 1568.161987 1576.062988 1582.735962 1579.185181 1570.73584 1558.901489 1554.07373 1561.494385 1567.359863 1568.737671 1568.716431 1572.038696 1572.616211 1587.452759 1596.118652 1598.402588 1598.259155 1599.447266 1601.4104 1601.697998 1601.274658 1600.093872 1597.884888 1594.646484 1591.084839 1587.507812 1584.098999 1580.301636 1576.631958 1572.600952 1567.524292 1562.970337 1558.054688 1552.559082 1546.613892 1539.532715 1532.689331 1525.31958 1516.268311 1510.5896 1504.858887 1498.952515 1494.328979 1489.606323 1484.06543 1478.48291 1472.018799 1465.16748 1458.281006 1452.321411 1448.599731 1443.942993 1438.239746 1430.784912 1425.751709 1432.427246 1440.067993 1446.08313 1448.57373 1442.546265 1434.920044 1427.782471 1421.737305 1414.588867 1411.026855 1406.78894 1402.311279 1393.116455 1387.376099 1381.518555 1376.853149 1373.806396 1370.986694 1368.461182 1364.598267 1364.346558 1365.688965 1364.859741 1363.869141 1363.218384 1362.670654 1362.125732 1362.220581 1363.220703 1365.259521 1369.245117 1376.754517 1377.934204 1373.565063 1367.553833 1363.699951 1376.74939 1394.942505 1412.507568 1424.871826 1425.560303 1427.740967 1434.730835 1441.613037 1443.434814 1449.701416 1451.292603 1439.77063 1431.297974 1425.24231 1424.503784 1419.692017 1415.079224 1421.220825 1425.493042 1429.81958 1431.775391 1431.799194 1430.573242 1428.50708 1426.206543 1421.316284 1431.148071 1441.57605 1443.190796 1442.571289 1441.68689 1438.721436 1433.319092 1427.421875 1419.28894 1415.597046 1404.351807 1414.401733 1425.828735 1437.877319 1440.760376 1439.324341 1438.069824 1438.810791 1439.81189 1440.079102 1439.565552 1431.082642 1425.434204 1418.084717 1413.002075 1408.303467 1405.464233 1409.811279 1413.244385 1420.345215 1426.025146 1428.555054 1429.678955 1430.128906 1430.509155 1430.576782 1430.248291 1429.574097 1428.356323 1425.419067 1414.213135 1412.820923 1412.580811 1412.928711 1413.58313 1415.079712 1424.894531 1427.618164 1428.652832 1429.670776 1430.933105 1432.595703 1434.499146 1436.550293 1438.587036 1441.635986 1445.471924 1449.408325 1452.257324 1453.237183 1453.370972 1453.235718 1452.692017 1451.339478 1448.604248 1446.275269 1443.407471 1440.059204 1438.206299 1439.090576 1430.859009 1424.795898 1419.900269 1420.96936 1423.788574 1425.592041 1432.205688 1440.19519 1441.291992 1440.187256 1440.638428 1442.309937 1442.218262 1440.021362 1439.005981 1439.62207 1440.333618 1440.87207 1441.064209 1440.289795 1439.370483 1438.340942 1437.579102 1437.638428 1437.254395 1436.049805 1434.058716 1431.085571 1427.404175 1426.851685 1425.766968 1423.896484 1420.857056 1417.664795 1414.943848 1412.956787 1410.940674 1408.956421 1408.396851 1407.469849 1406.343994 1405.41333 1402.811279 1399.741943 1398.525513 1397.104126 1395.103027 1392.989746 1390.205933 1385.427612 1382.110962 1380.324097 1379.481079 1380.860352 1385.63855 1391.942871 1398.970947 1403.185913 1404.878418 1402.456787 1396.903442 1388.125244 1380.011475 1371.067505 1363.238647 1357.366333 1352.244507 1348.963257 1344.908936 1342.952515 1344.424438 1347.760986 1352.346802 1353.711426 1353.829102 1351.92627 1351.51062 1351.968018 1352.044434 1351.56189 1350.190918 1347.717773 1343.122681 1343.26709 1349.830444 1355.340942 1357.826904 1358.146362 1360.616333 1365.787354 1358.793457 1356.700195 1353.284668 1350.880737 1359.330933 1362.488525 1355.595337 1360.674194 1370.258423 1376.547852 1381.233032 1388.098877 1397.05188 1404.088745 1400.930908 1395.656372 1398.549316 1397.402588 1394.223267 1392.248291 1387.623535 1381.103027 +1623.500366 1631.454346 1637.376831 1638.895874 1648.080078 1650.978638 1655.655396 1657.296875 1657.932373 1654.418457 1666.344849 1678.644775 1685.871094 1687.584229 1684.548706 1670.621338 1656.137207 1657.81897 1673.559814 1682.707764 1694.665649 1705.280762 1717.876343 1729.841675 1744.724487 1755.589844 1765.71936 1778.354126 1791.385132 1804.288452 1814.135864 1822.853271 1827.587769 1827.83374 1823.797729 1821.332642 1817.303711 1809.008911 1804.203369 1808.115234 1813.697876 1818.43103 1818.30957 1812.09314 1802.211182 1794.059326 1789.728882 1789.773193 1793.397095 1799.771362 1801.292969 1797.551758 1789.643066 1777.102173 1762.952637 1768.445923 1776.263672 1780.95166 1788.218506 1799.546021 1807.801025 1811.321533 1811.276611 1810.116699 1809.162231 1810.364746 1814.053223 1815.704834 1812.685913 1807.664673 1800.676392 1792.73291 1786.035278 1779.521973 1773.129883 1766.472412 1761.303711 1756.658569 1751.106445 1745.965698 1740.606689 1735.016235 1731.614014 1731.893921 1739.578735 1747.092651 1754.699829 1759.02124 1760.00769 1759.115601 1755.677124 1748.158691 1739.880005 1730.943115 1725.066162 1720.698364 1715.039307 1707.387695 1705.63208 1702.082275 1695.393311 1684.358032 1671.588379 1668.919312 1674.518799 1670.322632 1671.239014 1676.402466 1681.891724 1689.071655 1696.783203 1705.546875 1715.2854 1724.084106 1725.347656 1726.330444 1724.879272 1723.44519 1723.023438 1723.149414 1723.325439 1722.554932 1719.093506 1712.746094 1710.014771 1705.953491 1699.681396 1692.816528 1683.973145 1672.020142 1660.390503 1639.739624 1621.799561 1608.777344 1592.394043 1574.990356 1567.046265 1574.519409 1585.636108 1596.745728 1602.769287 1609.758911 1615.930298 1623.849854 1635.242432 1651.856689 1659.470825 1662.257202 1663.591919 1674.052124 1675.148804 1675.51709 1677.953125 1670.199829 1655.083252 1639.811035 1624.497192 1614.008423 1603.061768 1589.910522 1588.549927 1605.551147 1623.779175 1642.777344 1665.496948 1687.841309 1695.57312 1699.42749 1694.011475 1684.119629 1688.791748 1687.023071 1675.610596 1664.358643 1652.362671 1643.494751 1635.730591 1626.942383 1618.942627 1610.639038 1605.567505 1614.98877 1629.048706 1632.015747 1624.143921 1612.268799 1600.500854 1588.091187 1577.583862 1571.821411 1588.387451 1583.086304 1589.1427 1598.493286 1601.57251 1604.901855 1608.211182 1617.808594 1629.908936 1640.34668 1648.37854 1656.734375 1654.474854 1658.794922 1662.984131 1670.002441 1676.027588 1681.400757 1683.287964 1679.804932 1673.550903 1664.624878 1652.425049 1642.69458 1633.307495 1623.096069 1612.617065 1603.862549 1597.153076 1588.481079 1584.121948 1583.935547 1587.674927 1595.807129 1601.029785 1606.127441 1602.277344 1595.118652 1587.435913 1578.082886 1571.316895 1571.682983 1583.31189 1596.774292 1603.472778 1603.862183 1598.776855 1584.94397 1568.849365 1578.491577 1592.970093 1604.556152 1615.878418 1624.643066 1624.301758 1627.921631 1635.774536 1644.510376 1641.178223 1633.692017 1621.605713 1610.477661 1597.954224 1609.766968 1622.99353 1626.633911 1631.114258 1636.355347 1641.854492 1645.968506 1647.911377 1644.629028 1634.929932 1627.737793 1632.497437 1640.806763 1649.46521 1654.994873 1658.873413 1672.943237 1674.103027 1667.120605 1656.60022 1648.693726 1637.958496 1627.627686 1615.739746 1607.945923 1605.217896 1607.719971 1611.94104 1619.409912 1632.519287 1639.160034 1635.78186 1635.040771 1635.368286 1632.668579 1626.812622 1620.305298 1611.646606 1597.438477 1583.690674 1577.213135 1570.473389 1563.309692 1557.716797 1551.661987 1544.48584 1535.299316 1522.461792 1527.546143 1533.612793 1533.822144 1526.352661 1517.954956 1510.525391 1508.995361 1515.110718 1530.952881 1542.765747 1552.563477 1562.042603 1570.538818 1576.179932 1574.659058 1568.113159 1557.335449 1547.315674 1554.003418 1559.115967 1558.449219 1560.955566 1563.012573 1573.912964 1583.126343 1588.505615 1588.880615 1595.542358 1599.115234 1600.513794 1600.478516 1600.186035 1599.593628 1598.777344 1596.149048 1593.603394 1591.445312 1587.474243 1583.586304 1579.805786 1575.628784 1571.036133 1566.30249 1561.698853 1555.48291 1549.194824 1540.781616 1533.686401 1526.619507 1520.916016 1515.283447 1508.446533 1500.934814 1495.913574 1490.716553 1485.355835 1480.127808 1474.272461 1467.471191 1461.516113 1456.323853 1451.828125 1446.447754 1440.101196 1433.980713 1428.085327 1425.898071 1434.682007 1441.502808 1443.882568 1442.055298 1437.08313 1430.320923 1423.474976 1417.16272 1410.640869 1404.469238 1399.663696 1394.748047 1390.142334 1381.327759 1376.77356 1373.173706 1370.225952 1367.086792 1363.942139 1367.121216 1367.023682 1365.489502 1364.31958 1363.707397 1363.420532 1363.423096 1365.02356 1368.10791 1372.886353 1378.342529 1383.636108 1381.202393 1379.661499 1370.865601 1365.67334 1376.886108 1390.561523 1402.268555 1409.326172 1414.866821 1416.80127 1423.695679 1433.351929 1444.070679 1446.611572 1443.512939 1438.720947 1437.442505 1433.477295 1431.620239 1429.790405 1425.694946 1426.559326 1431.130371 1435.344849 1439.990356 1437.309814 1434.965942 1433.879517 1432.117554 1428.999512 1432.021118 1439.824585 1442.839233 1442.652954 1441.327881 1438.232544 1431.257324 1425.250244 1422.659546 1417.754883 1407.12793 1418.269531 1430.474976 1440.647583 1441.364136 1439.415894 1439.015015 1439.564331 1439.556763 1439.615601 1436.009521 1429.036255 1424.604248 1419.295532 1416.620605 1412.065308 1406.794434 1409.752563 1413.942261 1418.864014 1423.667969 1427.417358 1429.560547 1430.282471 1430.855835 1430.94165 1430.523071 1429.6875 1428.478638 1426.370361 1416.561646 1414.979736 1413.328369 1413.320557 1413.737061 1415.262573 1420.852295 1425.237061 1426.927979 1428.498169 1431.092407 1433.396362 1435.576416 1437.70874 1440.169189 1443.649536 1447.780151 1451.427734 1453.362427 1454.014282 1453.970337 1453.69165 1452.964111 1451.513306 1449.282959 1446.793823 1444.157227 1441.247803 1440.490845 1439.911011 1430.316284 1422.815186 1422.86145 1424.166748 1427.889038 1431.71521 1434.809814 1438.846069 1442.135742 1443.282715 1443.824829 1444.638062 1444.216309 1442.157837 1441.297852 1442.296753 1443.146362 1443.685425 1443.817383 1443.356079 1442.250977 1440.812134 1439.786499 1439.707275 1439.321167 1438.387329 1436.518677 1433.480225 1431.009399 1429.373413 1427.691406 1424.384644 1420.799072 1418.836304 1418.347412 1417.577393 1416.852783 1416.479126 1415.886597 1414.567993 1411.264893 1408.992065 1406.396362 1404.494629 1404.133057 1402.419067 1399.099243 1395.57666 1391.437134 1387.470581 1384.236328 1381.529663 1379.001709 1376.014404 1379.908325 1384.577026 1389.869385 1395.173096 1396.240112 1394.695557 1389.121216 1380.797485 1372.226074 1363.941895 1358.096924 1353.454224 1349.907715 1347.262451 1344.825562 1344.563232 1352.301147 1354.938965 1357.492432 1358.173706 1357.07251 1353.952515 1354.927002 1355.436279 1355.305664 1354.258301 1352.831177 1349.834717 1348.688477 1352.02063 1357.006226 1363.356445 1369.027466 1370.597046 1370.915527 1372.397217 1370.98999 1371.751343 1369.2323 1361.954956 1364.585327 1368.410522 1363.084717 1366.428711 1374.783447 1381.804688 1388.705322 1395.426392 1402.219604 1405.602539 1404.070679 1401.307129 1404.558105 1402.178101 1394.405518 1389.314819 1385.664429 1377.641235 +1618.118408 1628.818848 1638.937256 1645.646851 1654.671631 1666.643555 1674.827637 1677.386841 1677.638916 1675.193237 1684.02417 1693.38855 1699.668823 1702.265625 1700.153809 1689.603149 1674.162231 1660.848267 1668.131226 1675.935425 1686.460693 1699.82373 1711.359009 1724.324097 1738.513306 1750.073242 1760.379639 1770.622681 1781.792969 1794.611816 1804.971558 1811.991577 1815.587891 1815.326294 1814.343994 1818.83606 1818.133057 1813.966553 1812.112671 1816.18811 1820.121338 1823.786377 1824.416016 1818.961426 1811.028809 1807.858032 1806.436401 1807.367554 1807.404297 1807.660156 1805.186523 1798.700439 1788.200317 1776.57251 1767.166382 1772.810547 1781.976318 1787.303101 1792.484985 1808.093994 1813.279419 1815.822266 1813.546875 1808.635132 1804.82373 1805.257935 1807.753296 1809.594727 1808.794189 1805.193359 1799.354614 1792.665894 1784.973633 1778.16687 1772.273193 1765.775879 1758.498291 1753.184204 1746.833984 1742.23584 1736.149414 1731.686035 1727.717773 1728.245972 1734.997192 1742.674561 1748.96106 1754.650513 1758.547729 1759.002319 1755.526855 1746.617432 1736.851807 1725.595947 1716.785034 1710.760376 1707.195923 1699.928833 1695.465088 1696.105103 1692.124023 1683.91333 1670.723145 1663.644043 1664.633423 1666.192871 1667.902344 1671.683228 1678.116211 1685.133789 1692.040771 1701.113525 1709.874023 1716.845215 1723.515625 1732.23291 1722.516602 1721.815063 1721.08313 1720.484253 1722.222778 1720.43042 1711.568359 1704.724609 1707.323608 1709.755371 1707.618896 1700.84668 1692.125244 1680.393677 1667.886597 1647.203369 1627.562378 1611.048584 1597.337891 1574.351929 1571.657349 1577.906616 1590.535156 1602.265869 1610.919556 1620.642456 1628.199097 1638.570435 1651.275024 1662.532959 1671.356934 1672.31543 1671.098389 1682.25415 1683.893555 1687.390869 1686.438965 1674.131592 1656.283813 1642.434326 1629.196289 1618.21875 1609.9646 1599.642578 1592.56665 1606.211182 1625.739746 1646.581909 1669.35376 1689.508423 1705.942749 1710.994629 1707.049927 1696.173462 1697.245728 1697.544189 1684.462769 1671.57666 1658.597534 1647.290649 1638.899414 1629.842896 1623.874268 1612.733765 1607.008423 1620.641846 1637.627319 1634.34668 1625.828735 1614.563354 1601.040649 1588.284546 1577.468018 1582.387451 1597.044067 1586.310547 1595.59021 1601.047363 1604.438721 1607.901367 1612.516602 1621.104736 1631.523926 1640.612793 1648.969849 1658.429565 1654.848755 1658.10437 1663.963989 1672.044678 1679.054443 1684.599731 1685.234497 1678.63208 1668.790405 1657.178467 1644.841431 1633.321655 1626.357788 1618.772705 1609.485718 1602.157837 1597.670166 1590.062378 1585.139526 1582.280884 1582.97229 1587.392456 1593.799072 1600.934082 1599.934814 1592.926758 1584.105713 1574.178955 1568.305908 1572.271973 1585.13147 1598.1521 1608.914185 1604.072388 1589.274292 1577.644531 1565.153076 1578.334106 1591.212891 1601.607178 1610.250977 1606.590454 1615.585449 1627.862061 1644.221924 1648.609863 1639.404907 1627.64978 1611.933105 1599.238525 1599.669556 1614.208374 1631.713501 1635.036987 1635.613647 1638.654907 1640.088867 1641.302734 1643.872681 1641.525513 1635.824341 1624.322144 1620.511597 1629.460693 1634.240967 1641.915161 1659.618286 1671.067383 1674.749268 1670.720703 1657.222412 1646.593384 1636.4823 1626.589722 1615.188599 1608.932129 1605.724243 1603.706055 1608.558105 1617.309937 1625.199097 1628.117065 1626.074341 1620.324097 1622.02356 1623.110352 1619.372559 1613.0802 1606.646973 1595.001343 1586.766357 1578.223999 1572.507324 1566.062744 1561.584839 1554.372437 1549.545288 1540.569458 1529.508789 1517.79834 1515.646606 1518.839844 1517.639771 1514.351685 1500.256104 1506.444458 1512.229614 1522.284058 1532.531616 1545.529785 1554.030396 1561.331421 1568.084961 1568.89209 1563.703979 1555.386353 1538.019409 1545.511597 1550.657593 1550.040161 1554.822021 1563.900024 1573.038696 1577.646606 1579.30896 1584.568481 1597.867798 1599.745483 1599.677856 1598.922363 1598.026123 1598.768311 1598.459229 1596.793457 1596.050903 1596.573486 1592.735962 1587.346191 1583.016846 1578.637939 1574.051514 1569.011597 1564.011841 1557.830688 1550.252686 1541.637573 1534.798584 1530.178955 1525.355225 1518.259644 1510.966919 1503.228638 1497.635742 1492.177002 1486.512207 1481.182617 1475.459839 1469.865967 1464.507202 1459.731201 1454.963379 1449.688599 1442.41748 1435.442383 1428.026001 1419.896851 1429.415039 1437.452515 1441.869873 1441.466431 1439.917603 1433.117188 1425.963989 1415.871216 1410.157227 1402.859131 1398.59021 1393.380005 1386.781982 1378.994263 1375.60144 1372.268677 1369.162354 1365.553467 1365.282593 1368.335815 1368.166626 1365.743042 1365.04248 1364.89563 1365.891846 1366.829102 1371.475098 1377.009155 1385.294434 1393.664185 1393.32666 1389.51416 1384.981567 1378.969971 1364.741089 1373.439087 1382.775391 1392.365845 1401.947632 1411.577881 1422.413452 1431.787598 1440.874268 1445.02063 1448.868408 1447.055786 1444.458862 1442.536865 1441.40918 1438.638794 1433.669556 1430.418335 1430.903931 1434.532715 1438.357788 1441.56604 1440.607422 1439.268066 1438.76062 1437.763916 1435.362793 1436.782104 1441.195068 1442.869141 1442.591553 1440.806519 1437.313232 1432.777222 1429.523315 1423.95459 1416.597778 1408.829224 1421.713013 1433.262695 1441.56604 1441.603149 1440.725708 1439.921265 1439.457764 1436.02124 1432.995728 1428.726807 1425.095215 1421.483765 1418.586182 1416.539673 1413.059692 1408.236328 1411.513794 1413.449097 1416.785889 1422.052856 1426.156738 1428.573364 1429.939819 1430.557617 1430.789429 1430.53479 1429.777954 1428.34082 1425.95459 1418.152466 1415.525513 1414.681274 1414.719116 1414.363159 1416.058838 1419.56189 1423.197388 1426.000977 1428.509766 1431.449951 1433.980469 1436.305054 1438.744019 1441.927612 1445.535522 1449.580933 1452.468994 1454.032593 1454.639771 1454.773804 1454.204468 1453.202637 1451.622803 1449.503662 1447.157104 1445.027222 1443.241333 1441.840576 1438.021729 1428.654419 1422.543823 1427.936035 1426.51416 1433.629395 1439.333984 1439.783936 1438.558594 1443.112305 1445.546753 1446.803223 1447.460083 1447.134766 1446.280396 1445.579468 1446.125488 1446.53064 1447.088135 1447.247925 1446.638428 1445.680054 1444.822388 1444.042603 1443.542358 1442.710327 1441.231323 1438.651855 1436.293579 1433.866821 1431.223999 1428.105225 1425.025391 1422.162598 1423.756226 1423.232544 1422.901611 1421.532104 1420.031006 1418.544678 1416.37561 1413.749146 1412.896973 1410.739014 1409.447632 1408.503662 1406.08313 1402.282227 1398.192505 1392.97876 1389.431763 1387.490234 1384.812866 1382.214355 1378.929443 1373.977295 1374.684448 1380.008667 1385.859863 1388.015015 1386.551392 1382.046875 1373.783569 1365.197144 1358.56543 1353.015869 1349.192261 1346.549072 1345.849487 1344.44751 1351.6875 1358.360718 1360.476074 1361.988037 1362.037964 1360.933594 1360.252563 1360.795654 1361.020508 1359.898926 1357.773193 1354.640015 1352.372437 1352.177002 1353.263184 1360.547852 1368.309082 1375.986206 1380.066895 1381.826294 1381.172119 1381.773438 1381.897461 1380.427246 1370.401001 1367.820801 1375.838867 1368.906982 1370.885254 1377.743652 1385.120605 1392.931885 1401.637329 1406.304199 1408.895752 1408.249756 1407.476318 1406.852905 1401.884399 1397.07666 1392.4021 1390.620239 1383.758545 +1592.022217 1608.310913 1628.741211 1642.535889 1655.016113 1669.890625 1681.436768 1687.736206 1693.520752 1696.829956 1699.599121 1705.681885 1718.138916 1722.415527 1717.72998 1706.218262 1691.050415 1679.024536 1672.378418 1669.612671 1681.186768 1697.332275 1707.260376 1719.545166 1732.501099 1743.840698 1755.557861 1765.019775 1775.190063 1784.931396 1794.327026 1799.793091 1802.500732 1802.017822 1804.942383 1815.365723 1819.207275 1818.597534 1819.591553 1821.315063 1824.967773 1828.863892 1830.82666 1828.973877 1820.010742 1816.513916 1815.926392 1815.517822 1815.134155 1812.788086 1807.376831 1796.599731 1784.924683 1778.704102 1775.674561 1777.399414 1787.597168 1796.151611 1805.309937 1813.828247 1819.179443 1819.205933 1815.385132 1808.147705 1803.302734 1800.789795 1800.696289 1803.347778 1804.368652 1801.885498 1796.958496 1791.752808 1785.145996 1778.748413 1772.118286 1765.270508 1756.764038 1749.842041 1744.390259 1737.097534 1730.560791 1727.207764 1721.786621 1720.400757 1728.993774 1735.895874 1741.818848 1747.523682 1754.884155 1758.45105 1755.687256 1747.856445 1737.726074 1725.431152 1714.446655 1704.797607 1697.379272 1693.42334 1689.381836 1686.249023 1684.827759 1678.84729 1668.138916 1658.912598 1658.015259 1659.053467 1663.699585 1667.357544 1672.46875 1679.686035 1686.573608 1696.405884 1703.627808 1710.694336 1718.188354 1723.621826 1717.162476 1717.986694 1715.373779 1713.357422 1720.83313 1717.981445 1706.157227 1697.141602 1694.819214 1704.559937 1709.04248 1708.283203 1699.213623 1688.755615 1675.742432 1657.096191 1635.115845 1614.93396 1598.834473 1583.843018 1571.142578 1577.077271 1583.367676 1597.342041 1610.056519 1622.547974 1633.692139 1643.504761 1654.651489 1669.130737 1679.268677 1682.061401 1682.302368 1695.18335 1698.183716 1698.145142 1691.420776 1680.528198 1662.821777 1650.372559 1638.424194 1626.198486 1618.065674 1609.854614 1595.406738 1606.000977 1624.326294 1643.911987 1665.61084 1681.711914 1692.879028 1703.865723 1707.935425 1702.463257 1699.945801 1699.018066 1690.158569 1675.952148 1663.616333 1651.481079 1641.257202 1632.580444 1625.485474 1620.258301 1617.61084 1638.273682 1647.332764 1637.616821 1626.248657 1615.099731 1598.853638 1587.723145 1577.810669 1592.570557 1598.677612 1595.396973 1599.776978 1603.80481 1607.084839 1611.401123 1617.983765 1624.979492 1631.955933 1639.595947 1645.803467 1648.649536 1647.671021 1653.342285 1660.598267 1669.707275 1678.65332 1684.608643 1685.771118 1677.475952 1666.820435 1655.787231 1642.218018 1629.121216 1617.526611 1607.67395 1600.318115 1596.102539 1594.333862 1589.540649 1585.727539 1578.512939 1577.043457 1580.609497 1586.859497 1597.756226 1598.99939 1589.939331 1580.748413 1571.217529 1560.762817 1573.344604 1590.161865 1605.423096 1616.280396 1606.432373 1585.731689 1571.086914 1561.569336 1573.365234 1585.163086 1593.048462 1597.182617 1599.602783 1614.858398 1636.437988 1647.265381 1645.385376 1632.74646 1619.16394 1605.054688 1593.807617 1604.359985 1619.203003 1636.802002 1640.06665 1639.479736 1639.109009 1638.156494 1634.334717 1635.6604 1635.543579 1636.778198 1627.330688 1614.72937 1617.35376 1627.546509 1643.669922 1657.138672 1666.010742 1673.032349 1672.591675 1655.615234 1647.287354 1635.481445 1624.334717 1622.174072 1618.254272 1610.289307 1601.228394 1605.472168 1612.254517 1618.083984 1619.30481 1616.603516 1609.65625 1606.377686 1606.182861 1606.184082 1601.924561 1596.915161 1590.546509 1584.803345 1571.974976 1566.935059 1562.462769 1557.427124 1551.684692 1546.44458 1539.739502 1532.294189 1522.94873 1512.858521 1508.818359 1503.384521 1503.909668 1500.584351 1502.241699 1508.396729 1514.14856 1522.157715 1535.729858 1543.093628 1552.380249 1557.436035 1560.740723 1557.288208 1549.654907 1531.865356 1531.811157 1540.124878 1539.975586 1555.103516 1563.115723 1567.675049 1570.814209 1573.098267 1587.542603 1598.374023 1598.411621 1597.711182 1597.283447 1595.359741 1595.997803 1596.377563 1595.368042 1597.330688 1598.933472 1598.623779 1592.552856 1586.601074 1581.812744 1576.688843 1571.441895 1565.820801 1559.659912 1551.39856 1544.3479 1538.144165 1533.070068 1528.14978 1520.945923 1511.006348 1506.006958 1500.609863 1494.744019 1488.297119 1482.758057 1476.611206 1471.957031 1467.566284 1462.966675 1457.78772 1452.213135 1444.595947 1436.943726 1427.342529 1418.620483 1422.484253 1431.125122 1437.15332 1439.726562 1439.583008 1434.713013 1428.733276 1416.636719 1410.906372 1405.612305 1400.550537 1393.396362 1385.478149 1377.501343 1374.174072 1371.437988 1368.440918 1364.89209 1366.999268 1369.300659 1369.727539 1367.860962 1367.454956 1368.219604 1370.965454 1374.861572 1380.27063 1387.465942 1393.754272 1397.196167 1396.7052 1393.400024 1389.572266 1382.758057 1369.924316 1372.511841 1382.262695 1395.734253 1408.224121 1419.58667 1430.75415 1440.826294 1444.45752 1448.852539 1451.974365 1452.119507 1449.344604 1446.677124 1444.586914 1441.308838 1438.024292 1436.322632 1436.489868 1437.791626 1441.762573 1444.41394 1444.465942 1443.941772 1442.968994 1441.71521 1439.782227 1438.44751 1441.998169 1443.215942 1442.867188 1440.44165 1437.239014 1432.368408 1428.502563 1420.571167 1413.21582 1413.654419 1424.634521 1433.032349 1439.81543 1441.019653 1439.714722 1437.869263 1436.303711 1432.679077 1428.017334 1424.126099 1420.674438 1416.940674 1414.490234 1413.519531 1411.887817 1411.281006 1415.994019 1416.306152 1416.553589 1421.375366 1424.799927 1426.889771 1428.407349 1429.950317 1430.608398 1430.514282 1429.886475 1428.415649 1426.227173 1417.434082 1414.657104 1415.664429 1416.473633 1415.324707 1414.398193 1417.932007 1423.253906 1427.278198 1429.228516 1431.895142 1434.922852 1437.05957 1439.378052 1443.174927 1447.06311 1450.961304 1453.379517 1454.763184 1455.414185 1455.466675 1454.920166 1453.813721 1451.762085 1449.717529 1447.555542 1445.437134 1443.345581 1440.912354 1435.176636 1426.661499 1424.870117 1430.251099 1434.577271 1439.956543 1443.500854 1444.5 1444.50415 1445.872925 1447.447754 1449.165771 1450.201172 1450.383789 1449.90271 1449.015503 1449.781372 1450.260986 1450.796997 1450.694946 1450.129028 1449.365967 1449.324951 1449.221191 1448.853638 1447.712524 1445.510376 1441.950439 1438.802124 1436.892212 1432.902588 1428.201904 1425.300171 1428.431396 1428.37793 1427.93335 1428.004395 1425.833984 1423.525269 1421.686646 1419.435181 1418.035522 1416.627686 1414.053711 1414.127441 1413.827881 1410.486328 1405.347412 1401.986694 1399.424438 1394.672607 1391.596313 1388.82251 1385.540649 1380.866699 1376.203369 1373.395508 1370.534546 1373.208984 1377.906738 1380.310669 1376.557007 1368.693115 1361.244629 1353.294678 1347.936035 1349.279663 1353.994995 1357.723755 1358.362793 1359.685791 1364.078003 1366.449219 1366.9375 1366.614746 1364.717896 1365.487671 1367.164917 1367.253296 1365.226929 1361.522095 1356.45874 1355.264526 1355.019043 1353.683594 1364.628662 1373.892822 1381.970825 1388.327271 1392.09021 1391.175293 1391.880737 1390.801392 1385.268799 1377.373779 1377.688477 1383.917969 1379.899292 1376.180542 1382.28125 1389.391724 1396.251343 1402.881836 1409.674316 1412.822388 1413.562256 1412.788696 1411.01355 1407.157837 1403.675781 1395.79187 1391.014526 1383.366455 +1577.093262 1595.087891 1611.578857 1628.630249 1649.371582 1669.570557 1686.790283 1697.353638 1707.383179 1715.283936 1721.166504 1728.141235 1736.238525 1736.675171 1731.539185 1722.074219 1708.304199 1692.139771 1687.952271 1681.503052 1678.004028 1693.99646 1703.693726 1716.491089 1727.077637 1737.10144 1747.808472 1759.201538 1769.203613 1776.428223 1782.221191 1786.920654 1788.17688 1791.570068 1799.201416 1809.743286 1818.511108 1821.416382 1824.555786 1826.144043 1828.131348 1831.040283 1831.878418 1831.95813 1829.386719 1824.553223 1823.602783 1824.34021 1822.686279 1818.154907 1809.968018 1799.599609 1793.289795 1794.919312 1790.128418 1785.587891 1792.600464 1810.516357 1817.966187 1822.715088 1825.958984 1822.440308 1817.153198 1809.59729 1802.733765 1795.51123 1791.970337 1793.776489 1795.477539 1795.784668 1795.486328 1791.429443 1785.91333 1780.078979 1772.547607 1765.258423 1757.413696 1748.952271 1740.724609 1732.578735 1726.953491 1722.048706 1718.843262 1716.398193 1721.963867 1726.747925 1732.956177 1739.892822 1748.854004 1754.849487 1754.119263 1748.02417 1740.069336 1729.376465 1714.251221 1704.052734 1694.72168 1690.459717 1686.056519 1680.141479 1674.332031 1669.413086 1660.147705 1656.945801 1655.87561 1656.885742 1660.043823 1663.219727 1667.479614 1672.921631 1680.126099 1689.591431 1696.593872 1702.632446 1708.364624 1711.414062 1707.596191 1705.92688 1705.519653 1701.354736 1709.82605 1711.539429 1703.380005 1693.570801 1688.338745 1695.759521 1699.607056 1700.371826 1696.130981 1691.176636 1681.564697 1664.688354 1646.777344 1626.491333 1610.670898 1598.93042 1577.13562 1572.489868 1578.996338 1587.34021 1596.278076 1612.876343 1628.137939 1641.353149 1654.337646 1673.376831 1686.281494 1694.455688 1697.086792 1710.629517 1719.785889 1718.896118 1699.285034 1688.988892 1676.454468 1660.254517 1649.992554 1636.211914 1623.905273 1616.197144 1607.980469 1605.97522 1620.155151 1638.075439 1659.366089 1672.639648 1684.386353 1698.217041 1691.769653 1691.689941 1697.21106 1699.083252 1692.939087 1678.598145 1666.434082 1655.598999 1644.640259 1637.10376 1632.150024 1626.246582 1629.150513 1645.445312 1649.968994 1642.770508 1627.535767 1614.965332 1595.947998 1586.20874 1582.597656 1598.889771 1599.716309 1597.19165 1602.599487 1607.109253 1609.814453 1617.091187 1623.838257 1630.286377 1635.569946 1639.437866 1642.544434 1643.657837 1643.719238 1646.707397 1655.296875 1664.344238 1672.077271 1675.086304 1684.316772 1675.217529 1664.96228 1654.581665 1639.159668 1626.026978 1615.105225 1605.415649 1597.335938 1594.115967 1590.223999 1587.99292 1586.209717 1577.939087 1572.297119 1575.058716 1579.502197 1587.811157 1594.613647 1587.123169 1577.496094 1566.853394 1559.818848 1576.753052 1594.651489 1612.053833 1624.578369 1612.268555 1590.506958 1573.084961 1560.675049 1563.608643 1574.151733 1580.50061 1591.117188 1604.123901 1625.533691 1639.810425 1642.52063 1633.809082 1620.360718 1606.936646 1590.590576 1593.195679 1609.056152 1625.482544 1639.869995 1646.917969 1642.638062 1638.651001 1632.127686 1623.386108 1622.105713 1628.253784 1632.858398 1626.092896 1615.891113 1609.244385 1626.311523 1638.619263 1647.824951 1655.791626 1666.630249 1668.564209 1654.56958 1645.05542 1633.843506 1634.192749 1630.684326 1625.160034 1615.468384 1604.231079 1598.947632 1606.922974 1612.443848 1613.146484 1611.520508 1601.547607 1598.455933 1599.082764 1599.720947 1596.405273 1588.545288 1581.199829 1569.06189 1562.668701 1558.71936 1553.847412 1548.724976 1543.598389 1538.215942 1531.105835 1524.439087 1516.069336 1509.44812 1504.846191 1503.199951 1500.184326 1499.159668 1500.791626 1503.129761 1507.160645 1512.838623 1522.169678 1531.535522 1538.42395 1546.423584 1549.238525 1546.485718 1538.94043 1525.671265 1518.878784 1523.189453 1536.269287 1552.001587 1558.354126 1560.166504 1559.534912 1573.202637 1584.885376 1596.50647 1594.373779 1592.785767 1592.075195 1589.801147 1589.402344 1591.379883 1592.550659 1596.032837 1599.4104 1599.585815 1596.194214 1590.133667 1584.845459 1578.965942 1573.446289 1567.765381 1561.609619 1553.540894 1546.666626 1540.763306 1534.756836 1529.971436 1523.204346 1514.825439 1508.77063 1503.502563 1498.028198 1490.835571 1484.934814 1479.069336 1474.589844 1470.478516 1465.890259 1460.200562 1453.803833 1446.757202 1439.171143 1429.265015 1420.406372 1413.311523 1423.337524 1430.208008 1433.176147 1433.403687 1431.415527 1429.547852 1422.6875 1413.47644 1407.027832 1401.805054 1393.248047 1383.476074 1376.510254 1373.547607 1370.232056 1366.797241 1365.08374 1368.667358 1371.4198 1372.415405 1372.258667 1372.762695 1373.859497 1376.657349 1382.431641 1389.91272 1395.034424 1399.593628 1401.522461 1400.399658 1396.779785 1392.932983 1384.651855 1374.084595 1374.076416 1386.541626 1399.46228 1413.357422 1423.98999 1432.317749 1438.497314 1446.51123 1451.763428 1454.042603 1454.353149 1452.806519 1450.36145 1448.017456 1445.120728 1442.057373 1439.676025 1441.052979 1441.177612 1445.431396 1448.232666 1449.083496 1448.518921 1446.735352 1445.227173 1443.749634 1442.788208 1444.428345 1444.172485 1443.158691 1441.40564 1436.137939 1428.868774 1423.500488 1414.136475 1417.919189 1424.48938 1426.521606 1432.119995 1437.147705 1440.334473 1438.743042 1435.463989 1432.82251 1430.062256 1426.524292 1423.141602 1418.885742 1414.530151 1415.461792 1414.419067 1411.942627 1417.173218 1419.38916 1420.375244 1420.979004 1422.610596 1424.711548 1426.000732 1426.70105 1428.37085 1430.50293 1430.728638 1430.24231 1429.004395 1427.867188 1417.317993 1414.664307 1416.883911 1418.379028 1417.576294 1415.575806 1417.998413 1423.775269 1427.479126 1429.11145 1432.169189 1436.103027 1438.671265 1440.290771 1444.359985 1448.414307 1451.969238 1454.105713 1455.396118 1456.276245 1456.426147 1455.803101 1454.644287 1452.866943 1450.948242 1448.465576 1445.206665 1442.166382 1439.182617 1432.18103 1425.205078 1426.817627 1432.581055 1438.004517 1442.558594 1447.615723 1451.232666 1451.336182 1448.554199 1448.994751 1451.321045 1452.879028 1453.209961 1452.783813 1452.836792 1453.807007 1454.834351 1455.654785 1455.77063 1455.150879 1454.108154 1454.368042 1454.621948 1454.188599 1453.251709 1450.427368 1446.784302 1443.447876 1440.628296 1435.970825 1429.509888 1427.867432 1429.90271 1430.962646 1431.255737 1430.399536 1427.750244 1426.723022 1424.749878 1423.169189 1421.976807 1420.625 1419.048828 1418.644409 1417.733276 1414.988037 1411.988281 1408.232666 1404.753174 1402.116943 1399.162476 1394.168823 1389.664062 1384.551514 1379.336182 1378.348511 1376.222168 1371.091064 1367.1427 1365.297363 1367.827271 1366.845337 1359.33606 1350.73938 1350.520752 1354.978027 1362.105347 1365.98999 1367.299194 1366.854492 1369.454224 1372.235229 1373.348145 1372.568848 1370.811035 1371.762085 1373.151489 1372.433838 1369.341309 1363.704956 1362.535156 1363.231201 1363.070068 1359.724731 1366.268555 1375.063232 1384.559692 1392.19458 1396.658081 1400.657349 1403.473022 1399.984863 1390.007202 1386.06958 1387.295532 1392.958618 1392.894775 1388.704224 1387.286743 1392.461548 1400.157593 1407.66626 1413.826416 1416.297852 1416.723999 1416.489502 1415.284912 1408.007202 1400.867554 1390.210815 1382.573975 1376.080444 +1564.114746 1583.718384 1604.981445 1629.681152 1650.192261 1669.919434 1686.519531 1699.215088 1710.46106 1722.755981 1733.405518 1743.29541 1751.939453 1750.710938 1740.695557 1731.942139 1724.815796 1717.443481 1704.049316 1694.921753 1683.716675 1683.06958 1700.436279 1711.985718 1723.137939 1732.818481 1741.775513 1752.630981 1761.503906 1768.897583 1773.165894 1776.448242 1779.313843 1785.948975 1793.761353 1807.307617 1816.641113 1824.783325 1829.449951 1830.404663 1831.128174 1831.849243 1831.901611 1830.435791 1828.418213 1827.78772 1829.344116 1831.449341 1830.116699 1824.532593 1815.141602 1807.730469 1807.152954 1805.718506 1803.300659 1796.998413 1800.524048 1818.216187 1826.100098 1831.884766 1832.806519 1826.609253 1818.692505 1811.025513 1804.124756 1796.388428 1791.174805 1785.365967 1787.130981 1789.567383 1792.855347 1790.540771 1786.730103 1781.702148 1774.710327 1767.217773 1760.834106 1753.217529 1744.200317 1733.387817 1725.589844 1718.295898 1715.372681 1710.422241 1707.597656 1713.81604 1721.434204 1731.6521 1740.987305 1745.379639 1749.189819 1745.812744 1738.295898 1730.658936 1717.188965 1707.361572 1697.44751 1691.098267 1684.01355 1678.443481 1671.038086 1667.877197 1661.635498 1658.039795 1655.67041 1655.101807 1655.880249 1658.203735 1660.791626 1668.029175 1676.497559 1684.75293 1689.598999 1692.662476 1695.651245 1700.22937 1695.588379 1693.676636 1695.593506 1690.720825 1700.238647 1703.530884 1698.74353 1687.302612 1680.051514 1681.828003 1688.291504 1690.46875 1688.114258 1685.508301 1685.716675 1670.815186 1655.028198 1637.384277 1615.65918 1602.84375 1588.984253 1579.040527 1576.09082 1581.730469 1588.890381 1602.24939 1622.550659 1638.341187 1654.284912 1674.655273 1687.255859 1697.560425 1700.133423 1718.289673 1724.481079 1721.682495 1706.373413 1693.821533 1679.848999 1666.586182 1656.304077 1643.424438 1630.949829 1622.349121 1614.689087 1607.524414 1616.75769 1635.603638 1653.529663 1664.753418 1677.221802 1689.385498 1680.836182 1680.768799 1690.989014 1697.583008 1693.734375 1680.345215 1667.993286 1657.614624 1647.769775 1643.349976 1639.991821 1635.437866 1634.674561 1645.99939 1649.614746 1642.996216 1628.884033 1614.105347 1596.408569 1584.68396 1593.744751 1604.548706 1603.926636 1600.471069 1608.025513 1612.549316 1615.544678 1623.08374 1628.271973 1632.541382 1638.030518 1642.141602 1642.678711 1642.636841 1642.174927 1643.016479 1647.166992 1656.625244 1661.103638 1669.706909 1672.833374 1668.081665 1660.658203 1651.035278 1635.663696 1624.49585 1612.958862 1604.461914 1597.389648 1592.907959 1587.602295 1584.703369 1585.008179 1578.161865 1573.310425 1570.772949 1572.327026 1581.980591 1587.165649 1583.415039 1573.300049 1563.291138 1559.741577 1574.837158 1590.922119 1606.43042 1617.077393 1615.649536 1605.738403 1586.566772 1566.987183 1557.072632 1565.666748 1578.112427 1591.81311 1606.74292 1628.245361 1640.91687 1637.572266 1627.029053 1611.956909 1591.627808 1584.381104 1596.509644 1610.473267 1629.285767 1644.2052 1649.160889 1646.19812 1643.873169 1635.620972 1621.5896 1609.574951 1614.819824 1620.033325 1618.670532 1612.243652 1603.967529 1617.84729 1629.264526 1636.174561 1647.650269 1658.611328 1660.140625 1652.152222 1646.276367 1644.48645 1640.4198 1636.80603 1629.105957 1618.411133 1607.18396 1595.890869 1598.02356 1602.643311 1603.149658 1595.76416 1591.652466 1587.313477 1583.192383 1580.068726 1574.713623 1569.075195 1562.947876 1557.272095 1552.446167 1548.43689 1542.328857 1537.169556 1533.807983 1524.635376 1521.028198 1519.909424 1520.022217 1518.652344 1515.447998 1511.142456 1509.325073 1504.715576 1499.539917 1499.435547 1501.002319 1504.839111 1512.627563 1522.521606 1527.146851 1533.345215 1533.048584 1526.741943 1529.822632 1522.822388 1510.598267 1513.101196 1530.890137 1546.203247 1550.52356 1550.250977 1556.355347 1568.443848 1585.72998 1587.098999 1585.955933 1587.262451 1586.61377 1584.038818 1584.17395 1586.998413 1587.432739 1592.426636 1598.884766 1600.145264 1598.104492 1592.512695 1586.674316 1580.887451 1574.99707 1569.509888 1563.873901 1557.323364 1550.694214 1544.636841 1538.518799 1533.446533 1527.600098 1519.430298 1510.490234 1505.966797 1501.345703 1494.467651 1487.795288 1482.856201 1478.184204 1473.848267 1468.543579 1463.155273 1455.268921 1448.246948 1441.328857 1432.956909 1423.790527 1413.633423 1412.096313 1418.393799 1423.868652 1424.672974 1422.604492 1419.248413 1414.977173 1410.912964 1405.257568 1399.833618 1391.295044 1380.392334 1376.852661 1372.872314 1369.426514 1365.256348 1366.290649 1372.000488 1375.055664 1376.124146 1376.171143 1376.713013 1378.939331 1383.926392 1391.044556 1396.514038 1401.195801 1406.542236 1408.491821 1404.453125 1399.720459 1393.927246 1385.916016 1375.514893 1377.592285 1388.123047 1400.848022 1416.372925 1425.355469 1433.141968 1439.370728 1451.263428 1454.453857 1456.441895 1456.828247 1455.836548 1453.886475 1451.389038 1448.853638 1447.602051 1447.598022 1448.080322 1447.739502 1449.258911 1452.204712 1453.604736 1452.787842 1450.061157 1449.088867 1448.794434 1448.063232 1448.21875 1445.272339 1442.069824 1438.878296 1428.292725 1423.570679 1423.852905 1427.209839 1429.862793 1430.977661 1431.559326 1434.96521 1437.770996 1439.419434 1436.871338 1433.27771 1429.981567 1427.049805 1425.200317 1423.45813 1420.732422 1418.749146 1417.452148 1414.95166 1415.88501 1421.214111 1425.640991 1425.672241 1423.99585 1424.766602 1426.661377 1427.557251 1427.740112 1429.242676 1431.142334 1431.557495 1430.928711 1429.65979 1428.045898 1418.684937 1416.590332 1420.039673 1423.007812 1422.225952 1420.033569 1420.893555 1423.503784 1426.170044 1428.415161 1432.324097 1436.723633 1440.384155 1442.130005 1445.169434 1449.413818 1452.477051 1454.767944 1456.296631 1457.267944 1457.377686 1456.731201 1455.5448 1454.051636 1451.973389 1448.744141 1444.497803 1441.131592 1436.878662 1429.356445 1425.444458 1429.095703 1434.985474 1440.594604 1445.274536 1451.111694 1451.53479 1450.619873 1449.92981 1450.818115 1453.927124 1455.683594 1456.822632 1457.995239 1459.272949 1460.223633 1461.123047 1461.652832 1462.107666 1462.182617 1461.838013 1461.554932 1461.312744 1460.657104 1459.276367 1455.643311 1451.545288 1449.182983 1444.677246 1439.121094 1432.490723 1430.870483 1433.320679 1434.919556 1435.031494 1433.800903 1431.940308 1430.143921 1426.934082 1426.078247 1426.365723 1425.140137 1424.25647 1423.669922 1421.376099 1419.075317 1417.149414 1413.579346 1410.544678 1408.733032 1405.913696 1401.278198 1393.929321 1388.221802 1386.408936 1385.503052 1383.117432 1379.115112 1373.067139 1367.355835 1362.013184 1359.357056 1356.468872 1351.865723 1351.015381 1357.815796 1367.895142 1371.055786 1373.428101 1373.72168 1375.07666 1378.245972 1379.938599 1379.655396 1377.101685 1379.062866 1379.997803 1377.9198 1371.516479 1365.244385 1365.807373 1370.22644 1370.857666 1366.169556 1364.52771 1372.342285 1381.635254 1391.318848 1398.756836 1404.390015 1407.438965 1406.086426 1399.256592 1397.331299 1398.010864 1401.590332 1401.681152 1400.268799 1396.287598 1399.011475 1402.226807 1411.034424 1416.741821 1418.327881 1418.629517 1417.879517 1412.697266 1403.444458 1390.96167 1376.031616 1366.111938 1355.027466 +1554.798218 1582.713745 1607.756836 1627.81604 1645.770264 1666.114868 1679.720337 1692.76355 1703.319336 1718.538452 1731.285034 1745.00647 1758.140015 1769.352661 1759.974243 1743.641479 1735.883911 1730.796265 1724.829834 1714.437378 1702.150635 1689.974731 1695.978394 1710.384033 1718.566406 1728.161865 1736.004028 1745.568237 1753.613159 1759.393921 1764.702637 1768.779419 1774.146973 1781.97168 1791.994629 1804.313477 1813.96582 1825.255249 1831.359131 1831.752441 1831.882202 1831.477783 1827.634766 1824.796875 1823.178223 1825.679932 1831.483887 1833.357544 1834.22168 1832.706055 1826.939575 1818.958618 1816.085938 1814.932983 1813.021362 1808.784058 1808.993042 1820.005493 1829.47644 1837.605713 1839.171997 1828.509033 1819.61377 1811.536377 1804.319214 1798.434204 1791.379272 1778.707764 1778.514526 1780.860352 1786.58313 1792.754639 1789.523315 1783.821655 1777.920166 1770.828613 1764.671875 1758.966553 1750.72583 1739.582886 1730.470093 1722.888184 1716.498169 1711.255493 1704.869873 1704.305176 1712.279297 1723.347778 1728.569336 1738.50061 1747.148804 1742.377197 1731.358887 1722.622559 1715.591431 1709.954834 1700.141968 1694.23877 1685.057251 1679.942871 1676.443726 1674.808716 1673.77356 1667.625244 1659.611572 1653.541748 1650.33313 1651.982788 1654.721436 1662.068481 1670.746216 1678.172241 1682.611694 1682.32251 1686.834351 1692.318604 1690.473633 1681.493774 1683.600708 1679.796997 1689.078613 1694.329102 1691.186279 1683.608887 1673.687256 1670.68335 1676.179565 1679.211914 1679.165405 1680.827148 1685.404541 1680.097778 1663.957886 1648.533325 1624.96936 1612.668213 1603.849243 1596.433105 1580.832153 1579.76416 1583.854248 1598.764893 1620.056763 1638.40625 1657.756836 1670.974365 1682.04187 1689.344849 1693.22937 1705.830322 1714.216797 1721.401855 1712.918945 1697.866089 1679.751953 1668.212646 1659.523193 1648.409546 1636.201904 1627.473389 1621.890991 1607.893555 1619.121704 1632.922363 1640.848633 1657.297974 1671.429321 1680.528564 1671.034668 1671.237183 1682.040161 1689.620483 1691.477905 1681.953491 1670.072266 1658.641357 1652.756104 1649.550903 1646.780273 1643.138062 1643.282837 1646.547241 1649.394287 1641.59729 1627.186279 1610.265747 1594.278198 1592.081055 1607.765991 1612.487671 1609.528687 1607.668457 1611.26001 1617.735229 1622.270508 1628.186768 1632.841431 1637.147705 1645.092407 1646.835083 1644.929199 1643.504517 1641.44165 1636.997681 1635.393555 1644.484497 1650.0896 1658.877563 1662.272217 1658.617188 1653.694824 1646.295044 1634.233032 1623.96936 1613.670776 1605.01355 1597.092041 1592.68396 1588.164429 1584.342896 1580.326538 1576.596558 1575.231812 1569.377197 1562.626587 1568.456421 1574.89917 1574.219971 1568.187012 1561.053833 1558.894897 1568.641968 1582.114258 1591.585449 1603.467407 1612.936035 1609.630859 1592.28064 1570.778687 1555.660889 1563.937134 1577.516968 1591.644653 1611.669312 1637.021729 1646.329468 1632.849243 1612.812012 1595.385132 1581.403809 1586.689453 1595.097412 1606.498169 1630.023071 1649.950195 1654.15979 1651.759644 1649.680786 1641.075195 1622.924316 1608.890503 1601.343994 1606.700195 1606.904419 1600.47229 1601.422974 1615.276245 1631.814819 1643.827393 1652.444336 1660.133911 1668.226196 1661.894043 1655.680176 1650.782104 1645.211304 1639.470581 1631.497192 1619.322266 1608.183105 1602.113159 1589.349121 1588.040161 1588.343994 1586.297241 1580.700684 1571.652954 1570.592163 1567.082153 1560.265259 1558.828491 1555.314087 1550.558838 1547.054443 1542.732178 1539.18042 1534.788574 1530.697021 1530.396973 1533.716309 1536.151978 1536.041016 1533.205078 1530.13147 1529.050293 1526.556885 1517.861328 1507.536621 1498.773804 1496.939087 1497.988647 1503.180908 1509.206177 1514.644043 1516.060791 1513.480469 1514.507202 1528.822632 1522.040771 1509.396362 1505.617798 1522.395874 1534.910645 1538.453491 1543.783813 1552.761719 1571.746094 1582.401123 1578.518677 1580.138916 1580.967041 1579.923706 1577.019043 1578.925659 1581.473633 1582.867554 1589.202637 1599.890625 1600.654541 1599.260254 1594.36792 1588.313843 1582.715088 1576.840576 1571.657593 1566.381348 1560.836792 1554.699463 1549.236328 1542.316406 1536.239014 1529.574585 1522.605469 1512.203003 1508.175659 1503.733276 1498.190796 1491.276611 1485.664795 1481.052979 1476.802734 1471.261597 1465.10437 1457.681641 1450.12854 1444.115601 1436.622925 1427.611938 1412.894409 1408.728882 1407.964111 1409.240967 1411.094849 1410.240601 1407.335938 1407.079346 1405.047485 1401.7052 1394.865356 1388.387329 1380.67688 1376.354004 1371.727539 1367.421021 1364.795044 1373.607544 1377.413696 1380.876953 1384.846313 1384.229614 1389.575195 1391.526489 1392.021362 1397.354248 1402.238647 1409.289917 1416.482544 1417.133545 1409.883057 1401.830078 1395.611938 1387.021973 1374.7323 1379.768677 1389.500366 1400.191528 1415.617065 1424.34436 1436.400513 1449.596802 1455.073364 1458.041504 1459.847656 1460.155884 1459.629517 1458.173462 1455.734009 1453.113525 1452.928589 1453.641235 1453.925415 1452.971436 1454.960815 1457.263794 1457.748657 1456.344238 1453.837891 1453.070312 1452.112183 1452.425049 1450.918823 1444.620972 1438.986206 1433.274658 1428.458374 1429.68042 1431.214478 1433.03064 1435.10022 1435.273926 1436.893555 1438.788696 1438.42334 1437.214478 1435.15271 1431.508911 1427.18689 1425.856689 1425.795044 1425.073242 1424.377319 1422.91626 1420.023804 1416.536499 1418.416748 1426.266724 1428.041992 1428.081177 1427.147217 1426.147949 1428.068237 1429.432983 1430.222412 1431.585449 1432.759399 1432.826294 1432.020264 1430.384644 1427.749878 1421.818115 1421.015259 1423.170898 1427.396362 1427.012695 1423.484741 1423.253784 1424.271851 1425.641357 1428.410522 1431.372681 1435.849731 1438.887939 1440.499146 1444.435669 1449.71936 1453.133667 1455.697021 1457.611694 1458.515991 1458.469727 1457.672729 1456.327881 1454.568848 1452.241943 1448.120361 1443.31543 1439.378662 1434.626953 1428.195312 1426.752075 1432.99707 1438.157959 1442.533325 1446.920288 1449.607666 1450.710327 1450.879272 1451.754272 1453.62854 1456.952026 1459.013672 1461.288818 1463.325684 1465.823486 1467.709229 1469.169678 1470.53064 1471.480103 1471.735718 1472.144775 1471.331665 1470.679565 1468.622559 1465.896484 1461.015259 1457.786987 1454.694702 1449.811035 1442.247437 1434.687256 1434.695557 1437.877441 1439.256348 1439.41333 1437.706665 1436.613403 1435.575439 1432.000366 1431.21106 1431.785156 1429.60498 1429.381104 1428.44397 1424.991699 1423.209961 1421.118408 1417.272461 1415.96167 1415.158447 1411.224487 1406.244629 1399.613159 1391.953125 1392.623901 1393.348022 1390.758057 1385.756104 1379.520508 1372.87146 1367.244629 1362.635864 1357.602539 1354.975708 1352.253174 1354.565063 1369.602173 1375.828125 1379.087524 1379.681396 1378.965698 1382.628906 1384.463257 1384.563232 1383.983276 1384.047852 1384.352295 1381.7323 1375.00647 1365.384033 1371.151611 1379.078491 1380.599976 1373.932251 1364.125854 1370.859253 1381.142334 1389.213867 1398.859375 1405.123413 1411.119019 1413.261475 1409.953125 1408.515259 1408.599243 1411.918579 1412.794067 1410.970703 1406.282715 1405.178223 1411.130981 1415.006958 1418.283081 1419.28833 1419.240112 1416.22168 1406.049072 1394.861084 1377.188599 1362.640381 1361.380859 1358.307495 +1554.620728 1577.62854 1604.265747 1619.937256 1639.701782 1655.578735 1671.953613 1679.522217 1693.149536 1703.550293 1720.130981 1735.324829 1750.910767 1765.862671 1773.500244 1762.895752 1751.288452 1743.577148 1738.249634 1729.432373 1713.820557 1701.273193 1695.567505 1710.354248 1718.753784 1724.568359 1730.05896 1739.401489 1746.872925 1752.185181 1757.722534 1762.928467 1769.489014 1779.143555 1791.915894 1802.519775 1812.584106 1823.78418 1832.140503 1832.549561 1831.358521 1826.780762 1819.107056 1816.361816 1816.066284 1820.721069 1829.717041 1834.53418 1837.675659 1837.744995 1834.224243 1831.510132 1827.726562 1824.053955 1821.130127 1817.033325 1815.574951 1820.531982 1828.045288 1832.591064 1834.34668 1830.096313 1819.487915 1811.245117 1803.748169 1798.211548 1792.630615 1779.785767 1771.992065 1774.680664 1780.306641 1789.860229 1792.560913 1785.521362 1780.338135 1773.411255 1767.257812 1761.854492 1756.565186 1745.433838 1740.015259 1735.825928 1733.086914 1718.636475 1705.752563 1699.030273 1700.708984 1712.733276 1715.558228 1732.778198 1743.400269 1739.171387 1725.930786 1715.781128 1708.368042 1704.515259 1699.760864 1697.729492 1694.499512 1685.463989 1683.043579 1683.177979 1680.425293 1673.266724 1664.053833 1655.78772 1645.61731 1647.349487 1647.137085 1649.527222 1660.7854 1670.823975 1673.669434 1672.289429 1677.235718 1684.134766 1686.026001 1678.0802 1672.357056 1668.629272 1674.360596 1683.652222 1677.816284 1674.922241 1667.617554 1662.245728 1665.741699 1668.36853 1669.079224 1676.443359 1685.606079 1681.048828 1670.707275 1657.151611 1641.719116 1628.598511 1617.236206 1605.818115 1595.954102 1581.12793 1582.498413 1599.471436 1615.484375 1637.338745 1654.125488 1664.24939 1671.866089 1677.459595 1682.856567 1698.822876 1707.010254 1719.16626 1717.517334 1699.132446 1684.153809 1672.042603 1660.501587 1651.412476 1641.162476 1632.120728 1625.703491 1609.378296 1613.776855 1623.620605 1631.926025 1644.442261 1660.542969 1664.686157 1659.221924 1664.651855 1673.623779 1680.601807 1686.365112 1684.589478 1674.99292 1661.17395 1656.524902 1654.745361 1652.205322 1648.92041 1648.560181 1648.957642 1649.021118 1633.477661 1622.937744 1601.927612 1599.77832 1608.300049 1616.65686 1619.648438 1612.799683 1609.251099 1616.575684 1623.342896 1629.450928 1635.453247 1641.977173 1648.942749 1650.749756 1650.893433 1648.755859 1646.88501 1643.075562 1638.372681 1633.506958 1633.516357 1639.616943 1647.788086 1651.808594 1647.024536 1643.235718 1638.099121 1630.673706 1621.311768 1613.45874 1605.761963 1598.264282 1591.782471 1587.336914 1583.709473 1577.313232 1572.894775 1572.6604 1566.556274 1561.012695 1558.897583 1558.595093 1560.719116 1560.371704 1557.875244 1556.707397 1559.698364 1570.994141 1580.177368 1588.620483 1597.976685 1596.754517 1584.813232 1568.949097 1554.222534 1564.298584 1578.422485 1594.154663 1611.325684 1638.317993 1649.700806 1628.864136 1608.982544 1590.344238 1573.225342 1579.677856 1581.676147 1599.675659 1627.50769 1654.379517 1659.170532 1656.589355 1647.338745 1630.142944 1613.753174 1604.135742 1594.911865 1593.812378 1592.056885 1589.443604 1608.206421 1622.392944 1636.498901 1645.980591 1655.525757 1665.688965 1673.481812 1674.863281 1663.653931 1654.58252 1647.650024 1641.663208 1634.543701 1625.71814 1616.137085 1606.697754 1595.428345 1590.19812 1585.706055 1582.522705 1582.142822 1583.632324 1583.735962 1581.153809 1576.475586 1569.592041 1563.463867 1557.261963 1556.154297 1552.572144 1547.374023 1541.650757 1537.139404 1539.436279 1544.735962 1546.064819 1545.71582 1544.099243 1542.215088 1540.914795 1539.134521 1532.20105 1516.695679 1500.889404 1494.121582 1492.9198 1494.317627 1496.823608 1500.651855 1503.030151 1501.016846 1513.292847 1514.291748 1507.592529 1502.112549 1498.89856 1510.384155 1523.024048 1531.947998 1535.771729 1553.217896 1563.881226 1564.825073 1569.115723 1574.759155 1574.958252 1573.36084 1570.430298 1574.050171 1576.257812 1580.045532 1588.463745 1598.679688 1600.775269 1599.769897 1595.446899 1589.523315 1584.158569 1579.0802 1574.283447 1568.769775 1563.432129 1557.665649 1551.570801 1544.471802 1537.173828 1529.428955 1522.037598 1515.487549 1510.312866 1506.000854 1500.946411 1494.118652 1487.68335 1483.255737 1478.775146 1473.403076 1466.95752 1460.638672 1454.184204 1448.445312 1440.991089 1434.871094 1430.817139 1418.47229 1409.682373 1401.786621 1400.525513 1400.307983 1398.701416 1397.035278 1396.61084 1392.612183 1388.494263 1381.897705 1376.800903 1373.5448 1370.121338 1365.738281 1365.456543 1381.502686 1388.51416 1392.765625 1394.134155 1393.9104 1395.574097 1397.108276 1399.424561 1403.91333 1411.219604 1419.467163 1427.303345 1425.143799 1414.052979 1403.880127 1396.773193 1387.796753 1374.850708 1381.103516 1392.389282 1401.485107 1416.671387 1426.870605 1442.867798 1453.983032 1458.755615 1461.521606 1463.390259 1464.318359 1463.294922 1462.444214 1461.456665 1459.370361 1458.610352 1458.931152 1460.569702 1461.271606 1463.375 1463.786255 1462.508667 1460.695923 1458.896118 1457.632568 1456.398193 1454.916626 1452.640015 1441.503296 1435.899658 1432.009521 1433.557861 1435.296021 1436.039673 1437.329224 1440.303223 1438.609375 1440.455078 1441.562134 1440.073364 1438.211426 1435.769287 1432.333252 1428.138672 1428.269409 1428.630615 1428.549927 1428.098511 1427.213257 1424.067505 1420.321411 1419.529175 1425.621094 1427.636108 1428.411255 1428.073608 1427.563232 1429.122437 1431.106567 1432.485107 1433.844116 1434.88562 1434.882812 1433.630005 1431.251099 1426.743042 1423.854736 1423.429565 1424.936035 1427.605103 1428.076172 1426.38147 1425.109131 1425.151245 1425.661987 1426.516602 1430.371338 1434.082153 1436.434692 1438.55896 1444.525146 1450.35437 1454.08313 1457.177002 1459.508057 1460.301758 1459.971924 1458.581299 1456.745361 1454.687256 1451.834473 1446.632202 1441.388306 1437.414307 1432.805786 1428.736328 1432.329956 1438.823486 1442.596924 1447.012207 1450.279419 1452.738037 1454.96814 1457.107056 1458.968506 1460.385986 1461.298462 1462.058594 1465.736816 1471.383789 1475.515381 1477.266113 1479.077637 1480.459839 1481.328125 1481.78125 1482.304565 1482.246338 1481.561768 1478.710693 1473.217041 1467.648804 1463.916016 1459.399292 1453.97522 1445.102661 1436.878174 1438.660645 1441.30542 1442.785767 1442.907349 1441.534912 1441.084473 1441.793091 1439.67627 1439.105347 1438.872803 1436.453247 1436.981079 1434.848877 1429.37915 1428.175171 1425.753296 1422.637451 1420.92688 1419.141113 1415.460449 1409.460449 1403.325562 1399.512207 1402.399292 1403.820068 1401.341187 1392.491577 1386.459106 1379.331177 1374.311035 1368.77832 1363.732178 1358.743652 1355.105347 1351.484253 1367.538086 1378.875366 1382.52478 1385.218628 1385.773315 1386.494385 1389.037109 1390.602051 1390.057251 1389.377075 1390.456177 1386.521484 1379.408936 1373.743774 1378.606689 1390.303101 1390.90625 1381.740356 1369.885254 1370.261719 1379.950684 1389.842773 1398.34436 1407.342529 1414.651978 1417.997681 1418.91394 1418.393677 1416.852783 1420.06958 1420.58606 1419.430542 1415.217407 1413.234497 1416.744873 1418.710449 1419.632324 1419.836182 1417.939209 1407.820557 1395.534058 1379.246338 1368.720825 1372.213623 1375.541016 1376.779175 +1545.305542 1566.826782 1594.354492 1612.735596 1629.47998 1641.934814 1655.838379 1669.033813 1683.667358 1690.310547 1702.598022 1721.115356 1738.960938 1755.92334 1769.384521 1780.175659 1771.543335 1762.18689 1754.151733 1744.30603 1727.938232 1712.1073 1703.84436 1708.308716 1717.942505 1723.438354 1728.542725 1734.829468 1741.003418 1745.893433 1751.613403 1757.310791 1766.780151 1779.411133 1794.19751 1803.5 1812.153198 1822.701172 1831.671265 1832.560303 1827.71106 1818.526123 1811.449951 1805.199951 1802.250732 1814.312744 1825.975098 1833.491699 1840.785645 1842.298828 1839.218384 1835.565063 1833.536621 1831.357056 1828.738159 1823.683594 1820.598511 1820.72583 1822.982544 1825.666504 1828.415527 1825.835693 1818.251831 1809.293457 1802.226562 1796.902222 1791.491333 1783.430054 1771.90332 1766.254272 1773.507935 1782.358643 1785.69751 1784.839966 1781.559814 1775.017822 1768.065674 1762.337769 1756.75061 1750.908813 1746.207031 1745.139526 1737.82959 1727.505493 1708.147461 1698.81958 1693.115723 1699.077026 1713.579102 1728.415649 1736.289917 1734.885254 1724.31543 1714.066406 1703.917603 1694.21106 1693.553101 1695.572632 1697.583496 1697.425049 1697.081177 1693.550659 1685.592529 1675.029785 1666.579346 1660.32605 1649.485352 1644.756958 1642.875122 1643.664673 1650.040527 1657.45874 1659.483643 1664.295166 1667.466309 1677.571045 1682.429565 1672.962769 1660.741699 1658.773682 1662.864014 1670.396851 1663.985596 1660.651001 1657.504761 1653.016846 1656.213623 1660.814331 1663.773682 1670.902588 1676.277588 1670.421631 1660.128052 1647.194824 1640.093628 1634.353516 1624.154785 1607.592896 1594.522461 1581.220947 1581.605713 1599.284912 1613.166626 1632.029419 1643.16687 1655.489502 1663.651611 1670.330688 1679.460327 1696.149414 1704.940552 1715.034302 1718.837891 1701.89624 1688.32251 1673.376099 1661.181274 1653.039795 1644.781738 1634.380249 1630.096313 1616.843506 1618.256836 1620.542236 1619.014526 1635.166626 1645.141479 1651.026611 1649.730347 1657.223267 1666.053833 1674.54541 1686.354736 1694.110474 1683.000854 1672.228516 1663.699097 1660.863281 1658.45105 1654.802856 1650.905884 1646.311523 1637.775757 1625.662231 1607.11499 1603.802246 1610.901001 1618.352905 1624.58667 1626.324707 1621.589722 1615.871094 1621.847534 1629.252075 1636.305176 1643.480835 1652.112183 1658.142944 1658.70166 1656.395142 1652.730347 1650.005249 1646.710205 1637.916138 1632.126221 1630.997803 1631.323486 1638.767822 1643.808594 1640.55481 1634.473145 1630.01123 1622.816895 1615.080688 1610.328125 1603.263672 1597.915283 1587.714722 1583.55188 1579.145874 1574.911743 1570.476929 1567.144409 1562.540771 1562.00647 1560.766479 1558.060181 1554.494873 1554.107544 1552.880005 1552.062378 1554.493774 1558.706177 1566.462402 1575.93042 1582.686646 1583.368774 1575.21936 1561.828247 1549.795166 1565.020508 1578.447998 1590.900635 1618.457153 1637.568848 1641.586792 1625.941406 1609.660034 1589.455933 1572.612305 1571.922852 1576.314453 1601.423096 1626.684204 1653.526978 1664.246338 1658.814209 1648.396362 1637.792358 1625.196899 1609.949463 1592.865967 1583.072266 1581.36084 1596.146851 1613.608521 1627.446899 1639.313354 1651.332397 1663.578003 1673.028931 1674.395386 1675.562866 1671.055176 1656.77417 1651.439087 1645.627319 1639.006104 1631.172241 1621.42041 1609.960693 1604.901001 1605.373535 1601.876465 1599.327759 1599.611694 1599.810669 1598.515015 1593.167236 1584.73938 1578.624512 1570.585327 1565.843384 1564.751221 1558.791748 1549.318848 1548.750854 1547.017578 1549.587891 1553.71228 1555.103638 1555.803345 1555.477661 1555.693359 1554.747192 1549.810181 1541.554443 1521.356567 1511.445801 1505.119141 1499.047241 1488.94873 1488.329102 1488.434814 1488.218872 1497.704834 1504.717773 1504.978027 1499.548584 1495.237305 1501.768921 1516.451416 1526.314453 1523.329834 1534.860962 1547.6875 1553.331665 1554.009155 1560.421387 1565.214355 1566.569702 1564.998413 1561.974854 1567.480103 1569.640869 1573.381958 1587.031372 1594.67627 1598.708984 1597.560669 1592.872803 1588.621826 1584.343872 1579.485229 1575.150024 1570.10144 1564.949341 1559.676758 1552.640381 1545.307251 1535.874023 1530.928101 1523.762451 1518.517578 1513.094238 1508.120972 1503.125977 1497.244507 1490.420166 1485.25708 1480.59082 1475.181763 1469.490356 1463.686279 1458.13269 1453.474365 1448.735596 1443.112305 1439.599121 1433.83667 1425.890259 1416.79895 1401.098633 1397.170654 1393.692627 1390.130737 1387.153442 1384.177124 1380.283569 1377.250977 1374.459106 1371.290161 1366.782471 1365.807251 1373.182983 1386.451782 1392.886475 1396.222046 1399.013184 1399.865234 1400.340088 1400.749634 1404.981567 1415.713745 1423.24646 1431.094238 1436.823364 1432.095947 1416.669556 1405.476318 1399.676636 1389.290527 1375.588623 1382.133423 1393.902344 1405.131226 1419.867188 1432.396851 1447.964722 1457.417114 1463.104248 1468.195435 1474.46814 1476.228149 1474.439941 1472.16394 1468.880249 1465.688232 1464.207642 1464.040771 1466.939941 1467.926147 1469.04248 1469.216919 1467.660278 1465.427246 1464.140381 1462.311157 1460.116333 1456.869629 1452.988647 1443.493408 1436.170532 1436.345215 1439.621338 1441.353882 1440.810547 1442.154175 1445.316895 1445.077393 1444.943359 1444.571899 1441.811401 1439.070435 1437.102173 1434.531616 1433.086304 1432.59375 1432.095703 1431.597534 1430.861206 1429.703247 1427.735718 1425.098389 1424.408325 1424.467407 1426.118286 1427.92334 1428.914795 1429.58667 1431.143555 1432.654175 1434.338623 1436.220215 1437.282593 1437.226807 1435.670654 1432.426514 1428.825439 1425.329468 1424.962646 1425.967163 1427.457397 1428.876831 1427.435913 1426.626099 1426.648071 1426.141846 1426.592651 1430.132568 1434.385132 1436.874268 1439.345215 1445.817261 1451.460938 1455.051147 1458.824707 1462.145142 1462.451782 1461.07373 1459.393433 1457.050171 1454.444092 1450.193481 1443.804321 1438.453735 1434.67334 1431.073975 1431.61792 1438.589233 1443.875122 1448.027954 1451.526733 1455.925537 1459.927612 1463.328491 1466.556519 1468.369385 1469.262817 1468.610596 1468.677612 1474.664185 1479.868164 1483.300049 1486.028198 1488.282471 1489.679565 1490.930054 1491.954956 1492.969849 1493.11853 1492.324219 1489.910645 1482.168335 1477.27002 1471.365234 1463.877563 1457.221313 1448.2854 1438.730835 1441.80481 1444.530273 1446.378906 1447.511108 1447.929932 1448.173218 1447.468018 1447.468872 1447.630371 1446.330566 1445.061279 1445.747681 1442.905762 1437.876465 1436.853271 1430.899902 1426.255859 1425.722534 1423.252441 1418.634033 1414.521118 1408.793823 1402.631104 1407.297852 1410.848022 1407.519043 1400.953735 1393.071411 1385.748901 1379.797974 1372.836548 1366.532227 1361.07312 1355.883667 1352.84436 1360.80957 1380.138184 1386.080078 1390.703735 1391.381714 1390.514771 1393.755127 1396.38562 1396.895142 1396.74292 1396.802734 1392.259644 1383.574829 1375.942505 1385.334717 1397.264282 1400.410278 1391.959717 1382.395386 1378.433594 1376.039917 1386.665894 1396.588135 1407.159912 1416.19165 1421.642212 1426.116699 1426.991333 1425.821289 1426.429565 1428.385742 1425.645752 1420.474854 1418.949097 1420.430664 1420.480347 1419.89978 1418.048096 1410.491089 1395.895508 1379.257812 1372.192871 1379.179932 1382.592529 1384.602539 1385.422241 +1529.619751 1555.961914 1574.905884 1601.04834 1615.508423 1628.50769 1642.403931 1658.339355 1667.44104 1678.446777 1693.014404 1716.149536 1734.191162 1747.73645 1761.512207 1779.465576 1782.953857 1770.573364 1762.824707 1754.590332 1742.794922 1731.969116 1718.708862 1704.260254 1716.012451 1721.740479 1726.878418 1730.583496 1736.041016 1742.285889 1748.672241 1755.386108 1765.674683 1779.96814 1793.045166 1804.244873 1812.575684 1822.32605 1831.562256 1829.706909 1820.594971 1812.01123 1804.966309 1793.947632 1793.387817 1810.198242 1822.373657 1830.820557 1838.974487 1839.948975 1837.826904 1835.486206 1834.192749 1833.499756 1831.978638 1827.460571 1819.390625 1816.25708 1816.394287 1818.419067 1820.276489 1819.322021 1814.226074 1806.473389 1799.430176 1793.747314 1788.187988 1783.746338 1774.588013 1761.412109 1764.888184 1772.9021 1777.973267 1782.761719 1782.863037 1776.755371 1768.572632 1762.314209 1756.040894 1748.765015 1742.585693 1740.711182 1737.410645 1731.588623 1711.278198 1700.489746 1693.499268 1694.578247 1711.220337 1723.075195 1728.691162 1730.964722 1724.245728 1712.928101 1702.1604 1691.759766 1682.196533 1688.704956 1696.923584 1696.824951 1696.723267 1691.771973 1684.018921 1674.383301 1665.493042 1658.866211 1652.092529 1647.711548 1641.259644 1638.984131 1637.678711 1641.633301 1650.321655 1654.182739 1660.623291 1666.064941 1670.112061 1665.661743 1655.651978 1647.693726 1654.189453 1660.404175 1653.456543 1645.631836 1645.492065 1643.802002 1646.240479 1652.236816 1655.445435 1661.199585 1664.911987 1660.181885 1649.010498 1636.92981 1623.741577 1616.46521 1610.911377 1598.62439 1580.74292 1581.686401 1590.245361 1605.587769 1620.605957 1631.477417 1645.238159 1651.632812 1659.519043 1669.572876 1678.18396 1694.645386 1702.944092 1713.599609 1718.968262 1701.676025 1686.592651 1672.740112 1661.688843 1654.598389 1647.751465 1637.847168 1633.284546 1629.101807 1635.389282 1639.579346 1633.175659 1630.104492 1636.650757 1641.682739 1646.840942 1656.360474 1663.907715 1673.046631 1688.639893 1702.758911 1692.598022 1680.016357 1674.531372 1670.605591 1664.603638 1658.165649 1649.75708 1641.225464 1628.557983 1612.078857 1607.652222 1612.867798 1623.9375 1628.207886 1633.632202 1634.142944 1626.194336 1621.092407 1623.562378 1633.317383 1641.390137 1651.085571 1661.503662 1665.108154 1664.783569 1660.408691 1656.131714 1653.366211 1649.760864 1643.175049 1634.268555 1631.509033 1630.386353 1631.622559 1634.397217 1633.893066 1628.75354 1624.584717 1614.839844 1606.962769 1602.197876 1597.221802 1589.055176 1582.990967 1579.506592 1574.436401 1572.544312 1573.932007 1575.108154 1570.978394 1568.682739 1568.93042 1567.6698 1565.882935 1560.454346 1551.932251 1547.841431 1549.842651 1547.686157 1552.466187 1560.759399 1568.032104 1572.644287 1565.502441 1554.452881 1548.221802 1567.117188 1582.602539 1597.633179 1620.696899 1633.393921 1631.780029 1620.181152 1607.037842 1587.297852 1574.820312 1569.445679 1576.468628 1599.843628 1627.550293 1653.873291 1672.609741 1660.487915 1650.858765 1637.102051 1619.916748 1600.190918 1581.295898 1575.265259 1581.099976 1599.989502 1618.007935 1631.99707 1642.731201 1656.531982 1661.627808 1661.860352 1667.234985 1668.53125 1666.531006 1663.205933 1656.0625 1648.971191 1641.619751 1634.025391 1622.059814 1610.185791 1617.931396 1621.425049 1622.086792 1621.749634 1621.243774 1619.20813 1613.016235 1604.815552 1594.82312 1588.005981 1578.162354 1575.852905 1571.040405 1562.26062 1555.579712 1554.870483 1550.436035 1556.959351 1561.037109 1563.856445 1567.25354 1569.654785 1571.06311 1564.154175 1556.266846 1543.792114 1527.97998 1527.128906 1518.156738 1509.825928 1497.541382 1486.22522 1483.048218 1484.015015 1488.337036 1494.605225 1497.558228 1493.526245 1487.790527 1504.000732 1513.230225 1515.915283 1514.594604 1531.018677 1540.059448 1544.354858 1545.861572 1551.0896 1553.760254 1557.051392 1554.556152 1554.922852 1560.411377 1560.494629 1571.08667 1583.866211 1588.803711 1587.55249 1584.193848 1583.615234 1583.302856 1580.990845 1577.667969 1574.128296 1569.711426 1564.614136 1560.102539 1552.904053 1546.772949 1541.546143 1537.169067 1529.377075 1522.079224 1515.798584 1510.382324 1505.561157 1501.023438 1494.174805 1488.1698 1482.998535 1477.635132 1472.201294 1465.463257 1460.667236 1456.755127 1453.781372 1450.605225 1445.486206 1441.026123 1433.688232 1426.76416 1420.981567 1414.23999 1403.167603 1399.36499 1392.9021 1387.9729 1378.776611 1376.164185 1373.296143 1368.594971 1366.227051 1366.342407 1381.545288 1389.578369 1395.860962 1400.28479 1404.423584 1408.856201 1410.659546 1413.185303 1420.226929 1428.929321 1437.547974 1442.40564 1446.241211 1438.641113 1419.37793 1408.879395 1400.501831 1392.745972 1376.521851 1383.447021 1395.547485 1408.233765 1421.963379 1435.55542 1450.674072 1460.337036 1469.876465 1477.998901 1483.168823 1484.861084 1484.949463 1482.956177 1479.863159 1477.050781 1474.176025 1472.905762 1472.934692 1473.87146 1475.257812 1475.025635 1473.846436 1471.821655 1469.717041 1466.718384 1463.231079 1459.095703 1453.052856 1444.563232 1437.651611 1440.416138 1444.536499 1447.412476 1449.573364 1452.042603 1452.456299 1451.16272 1450.941162 1449.241943 1445.432251 1441.093384 1437.878906 1437.126587 1437.210571 1436.949585 1436.142822 1434.946045 1434.024536 1432.663086 1430.84375 1429.240845 1429.53833 1429.268921 1428.284302 1428.313232 1429.913452 1431.370605 1433.028687 1434.732788 1436.062378 1438.104126 1439.248535 1439.154785 1437.290649 1434.231445 1430.818604 1426.389404 1427.797974 1427.401245 1427.475464 1429.580444 1429.363281 1428.743774 1428.886841 1427.313232 1426.286499 1429.346069 1436.887939 1439.89563 1441.520752 1447.538696 1452.406128 1456.168457 1460.106567 1463.85022 1463.314575 1461.465698 1460.517212 1457.223389 1453.147217 1446.927246 1439.675659 1435.942871 1432.494507 1434.553711 1439.193726 1443.575439 1448.702393 1453.82312 1459.012207 1464.184692 1469.747314 1475.299316 1478.854004 1481.541748 1482.851196 1481.509399 1477.598633 1481.426025 1486.640747 1491.721069 1496.097412 1499.39856 1502.11731 1503.738281 1505.051392 1505.89624 1505.155029 1503.262207 1497.437988 1491.622559 1489.225708 1480.776001 1470.921143 1460.618164 1450.571167 1442.094849 1444.717896 1448.117065 1450.35498 1452.041138 1453.901489 1455.436768 1455.390869 1456.274414 1457.2052 1456.099365 1455.677612 1456.430542 1452.549316 1450.968506 1447.06958 1439.229858 1435.566772 1433.512939 1427.893921 1424.53418 1419.384155 1414.512085 1410.913452 1413.666016 1416.781616 1412.171875 1404.288208 1396.602539 1388.649902 1382.531494 1375.87561 1368.5354 1362.963379 1356.471069 1353.564697 1361.173096 1379.185303 1388.376343 1393.335571 1395.960449 1396.878296 1398.909912 1402.376099 1404.506226 1403.796753 1404.662476 1399.510376 1391.052002 1383.641479 1392.808105 1404.073486 1410.749878 1403.200806 1399.074463 1389.499756 1380.22937 1382.26709 1390.80835 1403.16394 1416.137085 1424.151489 1429.489502 1431.426392 1432.680786 1433.634033 1434.130249 1430.568726 1426.027954 1424.415161 1424.126831 1421.67981 1418.263916 1412.445679 1399.350342 1381.908325 1375.802612 1385.336426 1389.950684 1391.586792 1393.202393 1393.675781 +1518.827148 1554.376587 1575.749512 1597.823608 1614.187988 1624.898682 1633.129883 1640.137573 1654.136475 1676.731567 1692.509766 1711.421509 1729.219116 1741.874146 1755.950439 1761.40332 1763.459961 1763.230103 1757.913574 1752.88208 1748.706787 1743.710693 1734.048096 1728.013062 1726.658203 1726.35376 1728.574707 1730.699463 1736.309082 1743.137695 1749.612427 1757.801636 1766.965576 1779.614746 1790.345459 1803.872803 1814.636108 1823.139404 1828.952881 1824.374268 1814.413574 1803.683716 1797.057617 1787.503418 1786.000732 1806.433472 1819.790649 1830.226562 1832.789185 1830.943237 1829.961182 1831.866455 1833.374512 1832.942383 1831.898193 1826.702026 1817.310059 1810.919067 1808.330811 1810.22937 1811.308472 1811.189331 1807.610107 1802.12146 1795.383423 1789.410645 1782.258301 1778.523926 1773.169189 1763.652832 1753.636353 1760.566284 1768.603394 1776.633545 1782.668945 1778.742432 1769.432495 1761.533081 1753.940796 1747.014526 1740.219849 1733.280029 1734.256104 1733.230469 1716.734497 1702.626465 1693.884766 1692.166626 1702.535645 1714.78186 1718.034668 1719.369019 1720.68042 1713.080566 1701.110596 1688.224609 1678.581055 1679.766968 1686.624634 1685.176636 1682.161377 1680.532227 1675.178955 1666.096069 1656.172974 1650.381958 1646.693359 1643.44873 1636.839844 1634.946533 1631.72168 1631.383301 1637.296631 1641.918091 1647.982422 1652.043579 1655.073486 1653.503052 1647.966553 1641.400757 1644.591919 1645.758667 1643.417358 1634.783203 1632.491455 1633.153076 1637.105591 1641.834351 1646.22644 1652.323364 1656.141235 1648.896729 1637.221069 1622.046631 1609.430176 1601.894653 1596.29126 1581.430908 1582.371826 1590.039551 1604.120239 1621.613525 1636.134155 1649.154663 1657.96875 1662.041626 1666.775513 1671.387817 1677.520752 1692.756104 1701.819824 1713.700439 1719.345337 1702.397095 1688.131348 1676.313232 1665.903442 1657.416138 1651.47937 1645.92749 1642.406372 1636.767944 1645.125977 1650.53833 1643.418213 1638.098633 1635.856689 1642.73291 1648.158936 1655.421753 1662.553223 1671.842896 1685.472046 1706.929321 1700.977417 1688.622681 1681.255005 1676.763062 1671.768677 1662.42041 1651.534058 1640.529419 1626.0271 1614.788086 1620.333374 1626.856201 1634.403809 1638.02002 1639.242676 1638.074463 1630.802734 1627.747803 1628.952271 1636.089233 1645.894653 1657.27771 1665.575562 1671.424927 1671.284302 1666.051758 1659.986938 1656.951904 1653.223389 1648.202881 1640.491577 1634.564697 1630.655029 1626.546631 1625.061523 1621.153442 1621.808838 1619.802124 1610.04187 1601.564575 1593.594971 1587.86145 1583.943481 1580.325928 1578.749512 1579.843506 1585.352295 1585.651489 1581.532471 1575.383545 1575.832764 1576.64917 1574.350342 1574.240356 1575.803711 1569.144287 1558.443359 1550.509521 1545.418823 1545.849609 1547.313965 1551.480347 1556.158447 1554.557495 1548.439453 1550.142822 1566.989868 1585.622925 1599.446289 1616.366821 1624.948975 1622.269653 1612.128662 1598.648438 1583.071777 1572.93689 1568.146362 1577.417847 1602.263794 1630.755005 1656.503662 1674.178345 1659.617798 1651.592041 1641.853271 1626.225464 1608.299316 1587.03772 1569.63147 1582.638062 1599.528564 1618.412964 1631.21106 1638.922852 1645.575684 1647.57605 1648.623047 1654.890381 1655.125488 1654.394165 1662.05835 1657.4552 1649.442505 1641.048828 1631.418579 1620.011719 1620.446167 1627.395874 1632.393188 1636.131958 1636.793091 1634.100586 1628.081055 1622.900269 1612.255371 1603.412354 1595.369141 1586.555054 1581.631226 1575.013794 1562.016968 1561.933105 1563.092163 1559.912598 1561.973755 1568.180664 1573.158325 1579.551392 1585.342773 1586.79541 1571.59314 1559.96106 1546.636841 1545.461304 1539.72876 1530.385742 1520.035889 1502.638794 1498.898438 1492.859619 1480.882568 1481.827759 1483.880859 1487.141846 1486.152588 1485.513428 1496.948853 1504.807251 1502.861328 1510.790649 1524.160034 1532.577881 1536.458008 1537.169312 1542.164307 1544.287842 1546.916626 1545.742676 1550.142944 1551.373413 1554.357422 1568.591797 1578.783325 1581.412476 1578.612549 1576.566284 1576.467529 1576.436523 1575.975952 1574.951172 1571.452026 1567.014771 1562.211792 1558.418335 1554.819092 1551.452026 1548.600708 1541.834473 1535.252319 1524.907837 1518.256348 1512.570068 1507.806274 1503.135498 1497.51062 1490.980957 1485.609863 1480.448608 1475.249023 1467.301758 1461.621338 1457.146851 1454.387573 1452.57019 1447.215332 1442.22229 1436.699341 1429.924072 1420.574585 1415.616943 1410.853271 1405.23291 1399.998535 1388.625488 1378.817749 1375.154541 1368.802979 1366.838745 1365.526245 1377.53125 1386.459961 1393.738525 1399.868164 1406.539429 1416.911133 1422.24707 1423.745361 1426.875488 1434.190308 1444.81897 1451.369019 1456.949219 1454.484863 1441.265137 1421.346802 1410.029175 1401.362305 1393.490845 1378.645508 1385.744263 1396.355713 1410.921021 1423.186646 1435.995239 1451.452271 1463.945068 1476.003418 1486.591064 1492.12854 1494.777954 1495.03894 1493.761597 1490.923096 1487.449097 1483.71582 1481.774292 1482.538818 1485.388916 1485.606567 1483.656982 1481.168945 1478.648438 1476.008423 1471.804321 1467.247681 1461.365234 1452.871704 1445.290283 1440.84021 1446.191406 1450.983643 1454.275269 1457.319824 1458.996704 1458.390747 1457.12085 1455.670654 1453.884644 1450.206055 1443.918335 1438.61499 1439.437012 1440.865723 1441.059326 1439.536621 1438.240601 1437.591064 1435.746582 1434.473389 1433.597534 1433.379272 1431.94873 1430.61145 1429.859985 1431.349487 1432.96875 1435.046021 1436.881104 1438.121582 1439.795898 1440.756958 1440.578857 1439.558838 1436.97998 1433.505859 1427.713989 1429.758423 1430.271484 1430.507324 1431.535278 1432.431152 1433.068237 1432.942383 1431.21936 1428.287598 1430.179199 1438.648682 1442.114868 1445.160278 1449.421631 1453.606445 1457.325317 1460.935059 1464.454224 1463.791382 1462.881958 1462.969116 1457.639038 1450.550781 1441.241943 1437.135986 1434.491821 1437.177612 1441.775024 1445.599854 1449.665771 1455.091797 1461.811401 1468.827271 1476.665405 1482.282715 1486.412109 1492.035645 1496.145874 1495.780273 1494.06189 1488.069214 1488.119019 1494.966309 1501.765625 1505.901978 1509.894653 1513.150146 1516.720947 1518.169189 1518.199341 1516.818604 1512.584717 1505.861938 1504.247192 1499.370972 1489.971191 1476.96936 1464.070557 1451.87439 1445.174194 1448.40625 1452.206177 1455.107666 1458.233765 1461.954834 1465.21167 1466.924561 1468.401001 1469.13623 1469.46875 1469.701538 1468.790649 1464.590454 1463.505127 1457.736328 1450.189087 1448.114624 1442.985718 1436.92688 1429.873169 1422.97583 1416.90686 1413.106812 1417.739624 1419.170288 1415.079712 1407.898193 1400.339722 1391.627808 1385.816772 1379.727783 1372.541138 1365.998901 1355.975464 1357.596191 1363.780029 1377.073608 1388.792114 1395.455566 1400.875 1402.919067 1404.14502 1406.955444 1409.039673 1409.397461 1408.759277 1405.045776 1398.613037 1390.485352 1397.536621 1414.046143 1419.961304 1416.647583 1412.473145 1403.136108 1391.111328 1386.978271 1388.384888 1401.438477 1414.782349 1424.635986 1430.65686 1434.765015 1438.49292 1439.849121 1440.31311 1435.343506 1429.684448 1428.684692 1426.77063 1421.38208 1415.093506 1404.060547 1389.339722 1383.176758 1393.923462 1398.514404 1399.62439 1400.616089 1402.065674 1403.798584 +1522.216675 1555.084351 1578.893066 1596.414917 1605.460938 1606.939575 1623.404663 1639.609497 1655.401978 1678.268311 1692.06189 1707.81311 1721.445557 1732.131958 1743.910645 1747.209961 1746.368774 1743.991455 1740.806885 1742.056641 1746.802002 1755.374268 1756.633667 1752.808105 1745.894287 1739.762817 1730.842651 1736.47168 1743.352661 1748.167236 1751.982788 1758.669556 1771.006958 1781.769165 1791.01123 1802.440308 1815.418457 1821.733276 1822.551514 1819.427246 1806.223877 1795.160767 1788.216553 1779.250122 1783.925049 1800.934692 1815.918213 1825.050171 1825.953003 1821.915283 1819.101807 1822.041016 1827.101318 1828.647827 1827.506836 1821.893921 1813.968506 1805.169434 1800.740356 1800.527466 1801.319214 1800.915771 1799.261108 1795.037842 1790.647705 1784.935303 1778.350708 1772.821655 1770.294067 1765.207397 1752.134033 1747.168335 1756.828735 1765.862305 1774.050171 1776.783203 1771.004272 1762.323975 1753.246826 1744.571411 1736.857056 1730.203247 1730.490112 1735.470581 1722.272705 1705.218628 1693.0625 1684.183105 1693.725708 1706.271362 1705.779419 1707.708252 1713.862549 1711.719238 1703.35791 1689.031494 1676.502075 1669.213867 1674.973145 1675.325195 1670.037109 1668.040771 1664.971924 1657.046509 1647.703857 1640.808838 1637.318359 1633.40686 1632.066772 1631.40686 1630.17334 1629.447021 1629.923218 1631.543945 1633.439819 1637.522461 1641.301392 1640.837891 1638.377563 1633.363525 1634.647461 1635.611572 1633.850098 1627.396362 1622.224609 1623.026855 1626.056641 1633.156738 1635.705322 1638.103394 1640.231934 1637.944336 1624.198486 1609.057007 1597.954468 1593.067139 1588.505493 1584.194092 1588.651367 1600.000854 1615.788086 1630.694214 1651.780029 1661.369141 1670.75061 1673.657104 1674.687988 1676.734741 1679.80896 1693.662598 1702.290039 1713.970947 1719.700562 1705.866821 1697.477295 1684.683716 1670.763306 1662.331055 1657.818237 1655.200928 1652.634766 1648.572876 1652.51062 1659.117554 1655.056641 1650.879272 1645.237793 1644.183838 1649.547729 1654.218018 1660.467773 1669.569702 1679.790527 1698.198608 1702.134888 1697.775269 1690.165405 1681.499634 1674.200806 1665.199829 1654.065552 1641.556519 1622.477661 1623.292603 1628.811157 1635.458252 1643.10437 1646.266602 1645.574219 1643.430786 1633.759766 1631.997559 1632.977417 1639.194336 1649.258545 1657.437378 1668.180786 1673.286255 1673.045654 1671.603149 1666.269287 1661.609131 1657.374512 1651.940796 1646.138062 1639.047974 1632.580933 1624.27417 1620.218262 1618.537231 1615.640137 1613.198608 1606.468994 1596.343628 1586.060059 1584.29895 1582.192139 1586.329834 1590.053223 1590.357788 1593.257568 1591.794312 1586.731323 1582.052979 1585.108154 1587.515503 1584.775024 1585.025757 1586.188721 1579.675537 1567.873169 1558.670288 1551.083618 1544.750977 1542.907104 1544.345459 1547.235596 1548.23584 1544.21521 1550.247681 1564.970825 1580.744141 1596.808228 1608.407715 1614.621094 1610.820923 1599.898682 1585.774658 1576.651123 1559.990967 1568.514038 1584.174316 1611.429443 1637.301025 1657.369507 1660.244507 1653.222046 1646.354004 1633.289551 1618.161987 1600.425293 1578.984497 1567.523682 1580.442993 1595.696777 1613.93335 1624.010132 1628.993652 1635.38269 1635.414551 1638.117798 1642.111084 1643.057007 1647.180542 1661.34729 1656.988037 1648.278564 1638.269165 1631.906494 1624.233398 1624.338257 1634.05835 1643.378906 1647.621216 1646.338745 1641.85083 1632.125732 1622.178467 1614.963989 1607.659668 1601.248901 1593.997559 1584.701416 1574.370605 1567.252808 1568.922607 1569.115234 1566.081665 1568.948486 1576.0 1582.400146 1591.449585 1597.5 1591.398193 1578.185669 1567.675903 1566.231567 1559.220703 1547.953369 1537.880127 1527.631348 1519.80603 1515.993652 1502.407593 1488.781128 1480.732544 1478.246948 1479.111084 1479.101074 1483.515747 1491.134644 1495.461182 1493.540405 1503.779541 1515.386353 1523.074585 1525.765991 1529.147461 1534.880371 1535.720215 1538.875122 1537.323242 1543.178345 1543.557495 1552.861816 1564.970337 1572.410767 1573.056519 1569.702637 1567.263428 1568.031982 1569.002319 1569.988647 1569.685791 1567.343872 1564.13623 1560.27063 1556.593262 1553.893066 1551.495972 1548.670532 1542.355713 1536.353394 1526.505127 1520.104004 1514.660156 1509.547119 1503.706177 1498.693359 1492.380737 1487.088989 1482.02124 1476.598877 1468.617798 1461.495728 1453.903076 1450.183594 1447.489868 1442.987305 1439.01416 1431.658081 1422.234131 1409.655884 1407.208374 1402.282349 1397.743408 1396.64856 1391.904053 1374.01123 1368.38916 1368.980591 1373.114258 1376.868164 1384.838379 1392.507812 1400.721802 1408.171387 1419.060303 1430.779053 1436.27124 1437.028809 1436.557007 1445.630249 1459.700073 1467.623291 1466.666748 1458.157227 1442.439331 1424.109497 1416.877441 1405.016724 1393.948242 1381.650146 1387.858765 1396.637695 1412.04187 1424.550415 1436.848633 1453.193848 1466.746948 1484.427612 1495.467896 1503.256592 1508.056519 1508.920288 1506.323975 1502.328369 1497.384155 1493.023438 1490.757935 1492.583984 1494.400391 1494.392822 1492.883545 1490.089722 1486.465454 1481.800415 1477.031372 1471.241211 1463.998169 1454.302368 1446.361572 1445.423096 1452.450928 1457.313721 1462.086792 1466.316772 1467.057983 1465.0625 1462.069092 1460.265259 1458.19397 1453.79834 1448.328247 1443.366089 1443.995239 1445.357422 1445.620483 1444.361206 1442.963013 1441.451294 1438.434448 1437.313354 1437.666748 1437.489014 1435.458008 1433.085327 1431.772461 1432.680908 1433.962158 1436.648315 1438.864624 1439.613647 1441.46936 1442.666626 1442.688477 1441.488647 1439.133301 1435.954468 1432.836426 1433.646118 1433.741089 1434.014893 1434.308105 1434.995972 1437.044189 1438.954346 1437.807251 1434.735352 1435.135498 1438.676025 1442.551025 1446.749634 1451.189331 1454.749023 1458.207642 1461.66687 1464.621094 1464.978394 1465.044922 1465.219238 1458.672974 1449.453247 1438.977173 1436.354492 1438.876099 1442.716919 1447.0354 1451.557983 1458.834961 1465.648071 1471.686523 1480.11499 1489.862549 1497.705688 1503.40332 1506.31897 1507.347534 1507.353516 1505.495239 1499.062866 1496.367554 1502.510986 1509.104004 1514.996704 1520.48645 1524.709595 1528.83667 1530.384521 1529.575073 1526.869385 1518.952637 1515.398438 1515.934814 1507.384644 1494.956299 1480.681763 1465.795166 1452.619263 1448.5448 1452.592529 1456.464722 1460.236816 1464.10437 1468.624146 1473.120605 1477.20813 1480.736572 1483.875122 1485.825317 1486.582642 1485.2854 1480.309326 1476.055664 1469.234497 1464.541504 1457.55249 1450.22998 1443.15918 1433.49353 1426.045288 1420.373169 1418.408081 1423.563965 1425.401001 1416.104858 1409.993164 1404.533813 1396.918091 1389.881836 1382.268066 1375.086914 1368.442383 1355.977173 1361.827393 1369.683105 1378.38208 1389.062134 1397.784058 1404.003296 1408.370483 1410.586426 1412.108887 1413.861084 1414.339478 1413.973999 1410.999268 1406.451782 1400.005859 1404.953125 1419.124634 1427.057983 1428.239502 1422.767944 1411.329346 1399.975708 1390.611816 1390.589722 1396.215454 1409.442749 1423.333618 1431.20166 1437.145142 1441.616089 1445.325928 1445.577393 1438.990234 1435.464478 1431.373169 1426.364624 1418.30542 1407.890503 1396.418701 1387.314331 1398.437622 1406.72937 1410.92627 1413.178711 1414.754395 1414.294189 1413.659058 +1527.519531 1548.295654 1568.085693 1579.55603 1587.698853 1603.894897 1622.687744 1638.420654 1650.629883 1669.672607 1687.131104 1699.55957 1712.563843 1720.665405 1724.207764 1726.446899 1726.385986 1724.769653 1724.0177 1729.828125 1743.879028 1754.631836 1763.568726 1768.410034 1759.467163 1751.382812 1743.835083 1746.508179 1752.246582 1756.540283 1760.108276 1765.692383 1773.64856 1783.024414 1794.768555 1805.012207 1812.580322 1816.949219 1816.414795 1811.265625 1801.020264 1789.268311 1778.786255 1768.988403 1782.477661 1793.497559 1807.700439 1816.69519 1816.307007 1811.715088 1807.129517 1811.17688 1816.50293 1819.749634 1820.394897 1816.070679 1809.791748 1801.547119 1792.753174 1790.62146 1790.628906 1790.917969 1790.203003 1788.380859 1785.470703 1782.922485 1775.265869 1766.302734 1765.152222 1761.550537 1754.455444 1741.920288 1744.173706 1754.496948 1763.311279 1768.425293 1768.594971 1762.519531 1753.786255 1741.250854 1732.622803 1726.058838 1719.683228 1730.409424 1724.866089 1709.025635 1692.661011 1681.393433 1684.769409 1695.952637 1693.312866 1698.914551 1708.457031 1709.447144 1701.418091 1687.883911 1673.030884 1665.728027 1664.932495 1665.000977 1660.233154 1657.27832 1653.738281 1645.61853 1635.606934 1633.979858 1633.942505 1633.266235 1631.729492 1630.774536 1629.959717 1629.673584 1629.149902 1628.44397 1624.948853 1625.419067 1629.155396 1631.003052 1630.577026 1629.456421 1629.137207 1627.439209 1624.446411 1620.788208 1617.521606 1616.854614 1619.169678 1625.312988 1623.051392 1625.078613 1627.724976 1625.229492 1614.286499 1601.003052 1593.725952 1589.146484 1584.97998 1588.653442 1596.080078 1610.400391 1624.099243 1639.602295 1658.150879 1675.948853 1684.113647 1685.929932 1681.705688 1681.550537 1684.789673 1695.515259 1704.526489 1714.827148 1720.115845 1710.467041 1700.610718 1686.885132 1674.275024 1667.730225 1666.462402 1667.643921 1661.780884 1657.833374 1660.927979 1674.081543 1670.548706 1661.585327 1652.019287 1645.549194 1650.741943 1655.908569 1661.537109 1667.495117 1675.60022 1687.24292 1699.485962 1699.792358 1697.369629 1685.834473 1675.310913 1665.362915 1653.792969 1639.255249 1626.223877 1633.996704 1634.331299 1643.741821 1650.428955 1652.895264 1653.119019 1651.088989 1642.858521 1635.643433 1638.204712 1645.098145 1652.557495 1659.680054 1668.844727 1673.394531 1674.007446 1673.50708 1671.182129 1666.167847 1661.417603 1655.679565 1648.843384 1642.949951 1638.20105 1635.721924 1624.157227 1614.911743 1610.899536 1608.454468 1598.474243 1595.390747 1594.987183 1590.35022 1592.560791 1600.730103 1600.115234 1598.258911 1600.744629 1596.874146 1588.920776 1584.243896 1591.687378 1596.26709 1593.874268 1593.724121 1590.489746 1582.603516 1569.694824 1560.020264 1561.380615 1555.888794 1550.57019 1540.487671 1541.545044 1541.934326 1541.137085 1548.449951 1559.766724 1570.962646 1584.259766 1594.843506 1598.778687 1592.74353 1582.923096 1575.654419 1564.143555 1561.251831 1568.749146 1586.812988 1617.714844 1644.955688 1652.177002 1653.193237 1647.146606 1637.042725 1623.654663 1606.903564 1585.669556 1571.2146 1566.51123 1585.046265 1598.290649 1609.21875 1614.419922 1618.42041 1624.913086 1624.775391 1629.09314 1631.994263 1635.747681 1645.974976 1656.290283 1654.056396 1648.983521 1642.791138 1637.555786 1635.069946 1632.640869 1646.669189 1652.605225 1656.213501 1656.844604 1649.910522 1635.448975 1622.853271 1617.567749 1612.468994 1606.359985 1598.133789 1585.443848 1577.075195 1572.797119 1576.829712 1575.914429 1574.803833 1574.365601 1582.234985 1593.24231 1605.46167 1607.741333 1597.766724 1590.735596 1581.33606 1580.454102 1570.691162 1555.484497 1542.439575 1533.053467 1533.272339 1526.004761 1515.551392 1507.292114 1493.99646 1479.089966 1474.004517 1473.415649 1476.251465 1482.488525 1483.579468 1482.599731 1494.188599 1502.694092 1508.465454 1509.815186 1517.682495 1519.12854 1521.856934 1526.731445 1528.044556 1537.40918 1532.547119 1550.556519 1560.400513 1565.227905 1564.920776 1560.536011 1556.347778 1557.515747 1561.351562 1563.104736 1564.008423 1562.853027 1560.183594 1556.208618 1553.514648 1550.314453 1546.373047 1543.221802 1539.656372 1534.196289 1527.031128 1520.481689 1515.128906 1509.690796 1502.748901 1497.434448 1491.880737 1488.913086 1482.654297 1476.83252 1468.227417 1458.929688 1449.977417 1442.265137 1436.471802 1432.113525 1426.236816 1417.247314 1406.186035 1399.224487 1396.690796 1385.999146 1386.026733 1383.721069 1372.915894 1368.452026 1371.962402 1375.36499 1377.167114 1383.382935 1391.389282 1401.321777 1413.46167 1422.936279 1431.022217 1441.636963 1453.143799 1453.424316 1451.595459 1462.206299 1473.983398 1477.685181 1471.142456 1458.658569 1443.026367 1426.015381 1417.893433 1407.832031 1395.882446 1384.768677 1387.911133 1396.352417 1412.541992 1424.618042 1438.068359 1453.567139 1470.300171 1490.980225 1503.264648 1517.039307 1526.658691 1525.781006 1519.59021 1514.977173 1508.35022 1502.062012 1499.876587 1501.669922 1503.561523 1503.861084 1503.097046 1500.53125 1495.502563 1488.098877 1482.209717 1475.284058 1465.852539 1455.935425 1447.507935 1450.493896 1457.764038 1463.571045 1469.409058 1475.538452 1476.762451 1475.377686 1470.752319 1466.340942 1464.599487 1458.024414 1450.542847 1449.227783 1450.489258 1451.081665 1451.213867 1450.684814 1449.218262 1446.382446 1442.352539 1440.837646 1441.780029 1441.221069 1438.560059 1436.602173 1435.47937 1434.905396 1435.289185 1437.039429 1439.484375 1441.064453 1442.671387 1444.720093 1446.352783 1446.52063 1443.155273 1439.373047 1436.476929 1437.746216 1437.863647 1437.066895 1436.291382 1437.208008 1439.549438 1441.016113 1440.77356 1439.470703 1438.397705 1438.40686 1441.487793 1446.397461 1451.775269 1454.513062 1458.038086 1461.991577 1464.882568 1465.638794 1466.158936 1465.502808 1457.919556 1447.04834 1438.051514 1439.599976 1443.09729 1447.427734 1452.129272 1459.29248 1467.339478 1473.882324 1483.227783 1493.332275 1501.954346 1508.971191 1512.879639 1516.15332 1517.798584 1518.125732 1516.848267 1511.468994 1503.760498 1509.676025 1517.55188 1525.30127 1531.683105 1536.472534 1539.071533 1539.842651 1538.789062 1532.733032 1524.775757 1525.782471 1524.498413 1512.459351 1497.622314 1483.556885 1466.968872 1454.607422 1452.699585 1456.89502 1460.93335 1465.436035 1470.284546 1475.017578 1481.939209 1487.631714 1492.11499 1495.544312 1497.229492 1496.984497 1494.581177 1488.698608 1482.554565 1477.727417 1470.827026 1462.63269 1454.098755 1444.886353 1436.510986 1429.113525 1424.341675 1424.519775 1428.022949 1423.741089 1412.703979 1405.168091 1404.306763 1399.336304 1393.128296 1384.24353 1375.58728 1368.529297 1356.993896 1364.968994 1375.559937 1385.581909 1393.796021 1400.491089 1407.893677 1414.496948 1416.990112 1418.412476 1420.554199 1421.924561 1421.127808 1418.085938 1414.449585 1405.849609 1408.747681 1422.935059 1434.498047 1437.64624 1428.323975 1417.896973 1405.632935 1394.506592 1400.717163 1406.136719 1409.540405 1421.633545 1431.151855 1438.11377 1443.783936 1450.055298 1452.305908 1443.68042 1439.008789 1431.803589 1423.947876 1414.085571 1401.428589 1393.949341 1399.852051 1410.69043 1418.159546 1422.873779 1426.203735 1427.612061 1426.87561 1424.758667 +1524.530273 1540.100586 1552.674438 1565.895142 1585.981689 1600.917969 1616.12207 1631.41394 1639.762573 1653.989624 1666.486938 1685.51001 1699.101196 1706.96875 1708.041992 1706.30127 1704.627319 1706.310791 1713.921753 1726.945557 1743.186279 1751.818115 1764.587891 1771.491211 1766.024536 1758.822998 1754.324097 1756.565186 1761.328491 1766.230835 1771.396851 1775.353638 1779.410278 1786.837769 1796.3573 1805.013428 1806.174561 1803.488892 1800.385376 1800.291992 1794.728271 1781.239258 1769.362427 1762.717773 1776.973633 1788.202271 1800.266724 1807.977295 1808.35376 1803.150879 1797.572144 1800.999268 1806.036987 1810.108643 1810.41626 1808.944336 1805.241333 1798.382324 1791.56897 1783.889038 1782.351685 1781.873169 1782.190674 1782.622314 1779.890503 1779.061279 1771.868042 1764.157715 1756.574951 1757.344604 1757.625366 1741.140747 1736.174194 1742.706421 1752.500244 1759.847534 1759.204712 1756.895996 1750.014526 1738.532349 1729.334717 1724.15686 1718.35791 1714.894653 1715.846191 1709.058472 1694.960693 1683.903809 1681.104736 1682.817017 1683.574463 1693.078491 1700.411987 1702.202759 1693.723511 1680.422485 1666.970947 1658.977905 1655.97583 1655.800293 1653.0448 1648.845093 1644.164551 1638.65686 1639.392212 1642.199707 1643.912231 1642.620605 1635.917969 1633.569824 1631.495972 1631.533325 1631.938843 1629.579956 1626.827515 1622.417847 1621.16626 1623.708496 1625.232544 1625.263062 1625.009644 1623.02356 1618.290527 1615.353882 1612.982422 1611.772705 1609.207397 1607.422241 1608.129883 1612.738647 1620.793701 1619.100708 1604.926392 1594.835205 1589.385864 1587.498413 1588.073853 1593.619995 1604.304443 1617.825439 1629.71521 1646.973999 1667.579224 1690.109741 1701.919434 1699.382202 1688.57666 1686.632812 1689.157593 1699.60791 1707.182617 1718.469482 1720.230591 1712.205444 1701.241821 1687.547974 1680.080444 1672.978394 1675.29187 1678.154541 1674.977051 1670.905396 1670.467773 1683.871094 1680.413452 1670.258301 1658.024902 1651.961182 1654.160034 1657.532104 1662.050659 1666.552246 1672.257324 1682.685547 1695.386963 1699.241699 1696.962402 1685.780884 1674.307983 1662.332642 1650.311157 1632.553955 1637.808228 1647.010376 1644.506226 1648.092773 1655.603149 1659.668213 1660.832397 1660.436646 1653.337769 1646.042358 1646.908569 1650.116211 1656.582764 1663.149536 1669.83252 1673.990356 1675.255493 1674.982544 1673.064941 1669.845215 1663.828857 1657.724976 1651.563599 1647.415283 1644.790527 1640.335083 1634.192505 1626.048584 1617.293457 1613.680298 1610.705566 1607.835815 1604.033325 1598.797852 1597.116211 1606.772461 1608.174316 1605.453247 1605.629395 1602.226318 1593.5 1588.220703 1598.761475 1605.442383 1605.550171 1600.703125 1593.499146 1580.795654 1570.46228 1572.628662 1572.81543 1565.489258 1557.743286 1550.625977 1538.980957 1538.780029 1539.03125 1545.022827 1553.502075 1560.553223 1569.459106 1575.712891 1576.719238 1575.464233 1571.248047 1563.348877 1548.581665 1562.227905 1572.335938 1597.296265 1627.50415 1641.266602 1646.136597 1649.991577 1641.685913 1626.928223 1609.015747 1591.812134 1576.193359 1562.553101 1566.479736 1584.949219 1598.762817 1603.238892 1606.638428 1611.526978 1614.774414 1618.200562 1623.377563 1631.296631 1641.917969 1649.002319 1651.0896 1649.209106 1646.230469 1640.520752 1637.056152 1635.535645 1639.927612 1653.580811 1661.106323 1667.754395 1661.893311 1652.609253 1641.127441 1628.792725 1620.732544 1614.120972 1608.488159 1597.873901 1584.070557 1585.040527 1583.498291 1587.319824 1584.4375 1583.910889 1583.567139 1589.633423 1603.655518 1613.78772 1612.056763 1607.018188 1599.451294 1597.526978 1593.101562 1582.082642 1561.983521 1547.481201 1541.227539 1538.665527 1531.184204 1525.50061 1515.09314 1496.727417 1485.606201 1475.953613 1469.652222 1470.48291 1472.957642 1473.90564 1473.346558 1482.301514 1488.244141 1495.016113 1495.81311 1504.08313 1502.885986 1507.475708 1508.453003 1525.548096 1526.151855 1518.128784 1542.502197 1554.369995 1558.489136 1555.623047 1547.145752 1544.46228 1540.176514 1546.508301 1545.526367 1553.587769 1554.149658 1551.577148 1550.158325 1547.504883 1540.857056 1536.698486 1534.903564 1533.398926 1530.432983 1526.033691 1516.826538 1509.858154 1502.127197 1496.014648 1487.859009 1483.801025 1481.824829 1480.399048 1475.891846 1462.142578 1451.429565 1443.162476 1435.472412 1428.396362 1414.742188 1413.122681 1410.383301 1396.741699 1392.350952 1384.612915 1374.013306 1374.272095 1373.292236 1371.54187 1373.674438 1376.058472 1377.688599 1383.694214 1391.578491 1401.294922 1412.027954 1423.551025 1434.465332 1443.05481 1456.078735 1466.383545 1470.910522 1470.748047 1472.755249 1481.370117 1482.516602 1473.14624 1458.78125 1443.334595 1426.78772 1419.064819 1410.854858 1399.579224 1392.753418 1387.460205 1395.349976 1413.306763 1424.788086 1439.025757 1453.824463 1472.105713 1494.328491 1515.873047 1539.693481 1538.725098 1534.306152 1528.361206 1522.305542 1517.368164 1512.927368 1511.466553 1514.109741 1516.412598 1516.688965 1515.577881 1512.012207 1505.298584 1496.457886 1487.484253 1478.703613 1468.286255 1457.810913 1449.296997 1454.181519 1463.44519 1470.320068 1476.902466 1481.964355 1484.167603 1482.69873 1479.319458 1475.681152 1469.671387 1462.291748 1456.292603 1456.451904 1457.456543 1458.205078 1458.295654 1457.226929 1455.227051 1452.288696 1449.270752 1448.266235 1446.977051 1443.943726 1439.690063 1438.948242 1440.251831 1439.560303 1440.616333 1440.228027 1439.366089 1441.825439 1444.211914 1447.034668 1449.696167 1452.116577 1450.730347 1444.502808 1438.790649 1440.446167 1440.689697 1439.330444 1437.407593 1438.679443 1441.175293 1442.463501 1442.616943 1441.825317 1439.70874 1438.579224 1438.960693 1443.984131 1448.704468 1452.126099 1456.710327 1462.136597 1465.220703 1466.151245 1466.607666 1464.271484 1455.438477 1444.267822 1440.104004 1443.19104 1447.034668 1451.739502 1459.167969 1466.99646 1475.849976 1485.945557 1495.036987 1503.960571 1513.467896 1518.725464 1522.753784 1527.480835 1529.975464 1529.236938 1527.046509 1520.86377 1511.122925 1517.58374 1527.460449 1535.38562 1541.426392 1544.751343 1546.104126 1545.386963 1542.31897 1536.557617 1535.403687 1532.747925 1523.804443 1512.906006 1497.346191 1482.485718 1466.30835 1456.790771 1457.802612 1461.525146 1466.322632 1471.969482 1477.40332 1485.672974 1492.934082 1498.897461 1502.28894 1504.883301 1505.69751 1503.859497 1501.359497 1493.032715 1486.049194 1480.220215 1472.920898 1464.825195 1453.917725 1444.325317 1435.965698 1428.638184 1423.721069 1420.880371 1422.353394 1413.402344 1402.16333 1394.312134 1395.072632 1395.301636 1392.596436 1383.70105 1373.602173 1365.948242 1358.724976 1364.711548 1380.369751 1391.975464 1398.415161 1405.925659 1414.073853 1418.631836 1422.48999 1425.935303 1428.65918 1430.499756 1429.873779 1428.0271 1423.074463 1414.887573 1413.591919 1426.96521 1440.378906 1441.308838 1431.356934 1422.159668 1409.842163 1398.75354 1411.346436 1420.763306 1420.831299 1424.36438 1431.742676 1438.542603 1443.910889 1448.301514 1449.026489 1444.527222 1439.113159 1429.981079 1420.012085 1407.17749 1398.859131 1399.724609 1413.999023 1421.053101 1428.208496 1432.908447 1435.623291 1436.874268 1436.745728 1435.744385 +1520.969482 1530.744629 1547.601562 1565.669922 1581.437012 1592.854126 1604.700439 1614.871216 1624.811768 1633.819336 1651.294556 1672.899292 1679.560913 1681.026611 1684.485596 1689.783569 1689.979492 1693.813477 1707.197021 1722.917969 1739.662354 1750.772583 1764.025879 1772.07959 1770.797607 1766.611084 1763.327393 1763.4021 1767.823975 1776.823975 1782.641602 1785.432129 1788.373657 1792.187134 1797.075684 1800.281616 1796.307617 1790.356445 1789.460693 1791.162964 1787.227783 1776.633545 1763.381714 1756.140381 1769.644897 1780.633179 1791.850708 1799.375854 1799.275391 1791.975464 1787.385742 1789.874512 1795.969238 1799.675293 1800.881592 1800.723511 1798.411377 1794.189697 1788.870117 1781.074341 1774.634033 1773.236816 1771.626099 1771.553711 1772.637939 1771.754517 1770.817627 1765.108154 1755.817139 1748.040405 1750.365723 1740.817627 1730.945068 1732.927979 1739.880371 1746.31543 1748.716919 1742.388794 1741.50354 1732.207642 1724.995605 1722.124023 1721.621948 1706.636597 1705.096191 1700.037842 1691.866455 1684.994263 1679.441406 1675.272705 1676.637573 1686.06189 1688.13855 1686.260742 1678.535767 1666.371582 1657.209229 1653.513184 1651.373047 1649.962158 1647.020386 1644.587891 1642.084229 1643.912964 1648.532104 1656.15686 1659.365723 1660.146362 1650.92041 1641.353638 1636.419922 1640.259399 1646.299683 1645.53479 1637.144531 1630.27356 1622.130005 1618.495361 1619.808716 1620.858887 1620.039429 1617.712524 1613.26062 1610.015869 1607.130981 1605.054565 1603.337036 1601.672485 1601.131226 1603.43457 1608.254761 1608.959595 1596.032593 1591.016113 1589.801392 1588.978271 1590.577026 1596.883423 1610.100464 1621.981323 1632.001953 1649.72522 1673.073486 1693.092529 1710.610474 1701.034302 1693.321411 1691.769531 1693.537231 1703.661499 1711.003906 1719.304321 1720.179443 1712.191895 1700.647217 1691.807983 1686.468994 1681.964111 1682.324219 1688.598022 1688.04126 1680.550171 1680.504395 1688.883423 1687.549072 1674.947021 1662.779053 1659.276123 1659.578491 1661.65686 1664.626709 1667.418945 1673.273804 1684.781494 1696.840332 1698.549316 1691.979492 1679.255127 1669.161377 1657.089722 1643.866943 1633.506714 1645.562256 1654.190308 1653.916504 1655.171753 1661.458008 1665.897461 1667.69165 1666.890747 1662.044312 1655.069946 1652.804199 1654.739868 1659.707764 1665.164062 1670.483032 1675.029419 1677.319946 1677.343872 1675.311523 1671.872925 1664.772705 1657.885132 1654.760864 1651.896606 1649.815308 1645.993774 1640.693237 1635.546509 1627.923218 1621.952637 1618.460449 1617.247192 1612.656616 1609.023926 1605.190674 1609.630615 1612.115112 1609.62854 1612.091187 1611.944946 1598.107422 1595.725098 1604.322144 1612.338135 1613.734985 1605.312866 1592.920044 1582.081177 1577.994263 1586.478027 1587.104004 1580.836914 1569.367432 1559.763428 1550.36731 1538.49353 1536.656494 1537.891235 1546.455688 1552.668579 1557.121582 1558.699585 1559.378906 1562.068115 1559.487671 1553.078735 1547.2323 1560.260254 1575.885254 1605.287842 1629.814331 1632.661743 1637.030518 1642.336182 1629.303467 1613.658081 1599.297119 1577.976929 1567.521484 1554.786133 1565.937134 1574.314697 1592.615112 1599.817627 1598.743042 1603.453735 1607.30188 1618.546875 1626.945068 1635.79834 1647.080688 1648.392822 1648.312134 1645.158447 1633.270508 1630.432251 1630.34375 1629.341187 1638.233887 1652.18811 1666.355225 1672.72937 1660.470581 1651.511353 1637.422241 1626.805542 1619.574341 1611.258057 1604.375854 1597.317139 1599.267822 1594.408325 1597.950684 1599.507324 1591.170044 1594.379883 1593.421387 1598.444702 1608.994629 1622.36499 1617.080444 1611.096069 1604.276367 1599.937012 1592.906982 1583.512451 1563.270508 1552.882202 1547.637329 1538.430908 1530.488159 1522.993774 1509.4021 1492.954346 1478.400391 1473.880737 1472.70874 1467.811035 1465.260132 1467.146973 1469.028931 1472.465454 1476.199097 1478.231445 1480.825562 1489.103638 1485.69104 1487.652222 1501.953735 1508.167969 1502.481323 1506.058228 1528.208496 1551.986084 1551.381836 1544.006714 1531.44519 1529.677612 1525.5625 1532.216675 1529.035034 1538.866089 1541.239746 1537.04187 1534.022095 1532.129639 1526.47522 1525.32959 1522.971436 1523.336182 1526.184082 1522.070679 1510.730835 1501.155151 1490.866577 1484.83252 1479.28418 1472.670288 1469.145264 1466.164551 1458.752319 1449.401001 1442.692261 1431.682983 1429.861816 1414.761108 1409.172974 1406.024902 1400.794556 1382.727783 1376.20166 1374.46167 1374.073364 1372.758423 1373.179565 1374.296143 1375.707275 1378.90271 1385.382446 1392.759399 1401.599487 1413.718628 1425.880371 1433.815674 1444.557983 1456.769043 1466.872314 1477.630127 1482.963257 1483.323486 1485.742432 1492.352783 1489.14917 1473.495361 1459.86084 1445.139038 1428.60144 1422.721069 1417.469482 1408.861206 1402.324219 1392.370361 1394.75293 1413.61499 1424.879761 1439.462158 1453.889526 1473.765381 1496.384888 1519.816406 1549.229736 1551.779541 1546.694336 1538.456421 1530.747681 1523.870605 1521.342407 1521.448242 1522.868286 1524.444092 1525.332397 1524.451172 1520.604858 1513.562988 1502.443604 1491.945435 1482.261353 1471.570557 1461.149414 1452.271484 1458.3302 1467.971924 1475.703491 1482.298218 1487.531738 1491.553467 1489.309692 1484.914185 1480.509399 1474.142334 1462.734741 1463.581421 1465.075928 1466.039062 1466.315063 1466.227661 1464.283447 1462.079956 1459.148682 1456.186279 1454.5896 1451.812378 1448.072754 1444.718872 1444.178101 1445.108765 1445.291138 1445.02002 1444.188232 1443.605469 1443.394287 1446.528809 1449.752075 1451.489136 1453.512695 1453.579224 1451.161377 1443.168823 1442.93103 1442.028442 1439.34436 1438.494751 1439.528442 1442.026001 1443.897095 1444.637329 1444.159912 1442.688232 1441.648315 1440.961548 1444.699585 1449.077026 1451.253662 1456.296387 1461.910034 1465.2677 1466.206543 1466.982788 1462.081421 1452.860596 1441.515503 1442.550781 1446.200562 1450.087524 1457.056519 1465.538208 1474.102661 1486.008179 1494.799683 1504.623535 1514.852173 1521.999512 1529.217407 1536.716064 1540.235474 1541.814941 1540.660156 1538.103394 1530.980347 1522.374878 1525.054077 1536.198975 1544.392212 1549.432007 1551.515259 1551.503418 1549.975342 1546.057495 1542.212402 1539.85083 1531.767944 1521.438599 1510.064819 1495.250122 1479.508301 1463.90625 1461.109985 1463.862793 1468.858276 1474.991333 1481.356079 1488.750366 1496.519287 1506.415527 1513.931519 1512.815674 1513.720459 1512.556152 1508.790161 1502.338013 1495.489258 1488.487549 1480.727661 1472.332397 1460.49292 1448.642212 1439.865356 1432.622437 1425.366089 1420.287598 1415.873901 1409.841919 1403.849854 1394.003906 1385.765015 1383.437256 1386.480225 1384.451294 1376.451904 1367.534546 1361.771606 1358.748779 1370.85022 1383.356323 1394.017944 1401.799072 1410.313232 1417.618774 1422.395874 1426.850586 1432.579102 1437.450928 1439.541504 1439.073975 1437.625732 1432.937988 1425.274414 1420.356445 1430.345947 1441.817261 1442.766846 1436.286743 1425.117798 1412.379517 1406.807617 1424.17334 1431.848511 1431.839233 1429.900879 1436.739014 1441.234497 1445.528931 1447.951904 1448.180176 1444.730469 1437.524414 1427.633545 1417.526611 1402.604248 1400.604858 1410.414795 1422.881836 1431.408081 1436.998779 1441.354004 1447.287231 1452.532959 1454.787354 1447.048462 +1531.502686 1522.963257 1540.727173 1554.915527 1572.33606 1580.685425 1588.014771 1596.959717 1607.614746 1623.44751 1637.300537 1650.919556 1652.836914 1656.845581 1657.760376 1670.827515 1682.2052 1690.947998 1702.989258 1716.387207 1732.071411 1749.720093 1764.351318 1773.432373 1777.849731 1775.248047 1770.945801 1770.970459 1778.198242 1783.800415 1787.995605 1792.456299 1795.342041 1796.376343 1797.311035 1795.770752 1786.512939 1779.126953 1779.92688 1782.854492 1782.301392 1771.369995 1757.386108 1750.98291 1761.088501 1772.973511 1781.271118 1789.019775 1788.051758 1782.162964 1776.863037 1782.209473 1786.660889 1790.522583 1792.809326 1794.871704 1791.297974 1788.845215 1785.10791 1780.449219 1769.45813 1765.017578 1763.21521 1763.09375 1764.93396 1766.765015 1770.423828 1768.419312 1758.087646 1746.602905 1743.582153 1736.078369 1729.101074 1726.88147 1729.318481 1732.519043 1734.964111 1728.587769 1728.601196 1723.405396 1717.813477 1716.872681 1719.453491 1722.171631 1707.969116 1695.260254 1692.874268 1682.378052 1681.036743 1677.027954 1669.669189 1673.444092 1673.152588 1671.072876 1666.329834 1657.4646 1657.647827 1657.462402 1659.441284 1658.767212 1655.888428 1656.315796 1661.550659 1668.488892 1672.837524 1673.141113 1671.137817 1665.980225 1660.013062 1645.327759 1643.739014 1651.203125 1659.995605 1660.219604 1653.92981 1643.806885 1634.615234 1626.185669 1618.880615 1615.01355 1613.546387 1612.438599 1609.637329 1609.221558 1610.913086 1612.174927 1610.729858 1608.11084 1602.380615 1598.690186 1596.22876 1597.601807 1594.650635 1591.614502 1591.394775 1590.711426 1593.060303 1599.745117 1612.718872 1622.322021 1632.630737 1649.976562 1670.296387 1690.106323 1706.152954 1700.446777 1697.138062 1695.83606 1698.076782 1708.61145 1716.809326 1722.112671 1721.427979 1712.32019 1703.437134 1696.399292 1693.9104 1687.926392 1688.331421 1696.651001 1698.296875 1692.25293 1688.324707 1695.103027 1697.453003 1679.549805 1669.000854 1672.13147 1668.005615 1668.581909 1669.94751 1668.900513 1674.171753 1687.335815 1697.943237 1697.432129 1687.48999 1674.718384 1667.503296 1660.93689 1645.163452 1642.255127 1655.004639 1661.879883 1659.937256 1657.842773 1667.768311 1673.286621 1674.195557 1673.739502 1670.166138 1660.249512 1657.684814 1659.210693 1662.771973 1667.22168 1671.542236 1676.636108 1679.940063 1680.80603 1679.048462 1673.748169 1667.02771 1659.994019 1657.694702 1656.494263 1653.946899 1650.343384 1646.174194 1641.159668 1636.074951 1628.373413 1624.528564 1626.48584 1624.080078 1615.388428 1608.255737 1611.75415 1618.197021 1619.471313 1620.021851 1617.827515 1603.720337 1605.803223 1613.004395 1618.182129 1614.761353 1605.005981 1593.875732 1585.520386 1587.480347 1589.233032 1589.261841 1588.863037 1580.445312 1571.221436 1560.801392 1549.1698 1537.260376 1534.23999 1534.750488 1541.838623 1547.88269 1547.339355 1546.700684 1551.54248 1551.787598 1545.633423 1548.499023 1558.291992 1576.967896 1602.054199 1614.78064 1610.922485 1631.561768 1633.892456 1620.434326 1603.389771 1584.641602 1569.355591 1555.525879 1551.499023 1558.569824 1579.530029 1597.297119 1593.424561 1589.442871 1594.17395 1605.646484 1618.78772 1628.157227 1636.15918 1639.786621 1638.6073 1637.223755 1636.179321 1625.854614 1618.018188 1616.216064 1623.277954 1634.550903 1647.94397 1662.410278 1672.263916 1662.221191 1655.216553 1644.541626 1633.519653 1622.362427 1614.020264 1607.998413 1610.08667 1611.79187 1606.348511 1609.61731 1604.943115 1600.145996 1600.243408 1601.1073 1604.087524 1612.650635 1621.151123 1616.286987 1610.908203 1600.204468 1592.925049 1585.103149 1572.413574 1561.99292 1553.251953 1546.058105 1534.803223 1524.564087 1511.805542 1496.958496 1485.765259 1486.325439 1484.358154 1488.385254 1487.207275 1475.278931 1462.748413 1463.405518 1464.85498 1465.748535 1463.714966 1467.759766 1472.924438 1473.131348 1487.146484 1492.276367 1490.626099 1489.466553 1506.375854 1530.799683 1544.102539 1539.230713 1529.428345 1515.358276 1513.274536 1518.842041 1522.424805 1517.717041 1522.48645 1524.21521 1521.620117 1518.718262 1518.927979 1514.081787 1505.786133 1505.897705 1514.976318 1516.450806 1511.937134 1503.434204 1493.533447 1481.253052 1472.616089 1466.058838 1461.373901 1453.704224 1451.50769 1443.743896 1436.712891 1427.119141 1417.693237 1410.137573 1404.523804 1403.827515 1394.835571 1381.610107 1373.96936 1373.916016 1373.834961 1374.068359 1374.806885 1376.028076 1377.88562 1381.276978 1387.179565 1394.495117 1402.194336 1413.270996 1427.645874 1439.788696 1447.311646 1454.981934 1469.492798 1479.173828 1487.707153 1493.800171 1496.595337 1499.32666 1502.202271 1494.911255 1478.198242 1463.557251 1449.331543 1434.672607 1425.354492 1420.71936 1415.529297 1409.027344 1402.540649 1394.484863 1412.623779 1424.458984 1438.957031 1453.874023 1473.597656 1494.837891 1520.648438 1545.52002 1556.078857 1557.185669 1550.904541 1542.272583 1535.608276 1532.892212 1535.353516 1539.226807 1541.460571 1540.413452 1537.263184 1529.696533 1519.7323 1508.239014 1496.304321 1485.944824 1475.018921 1467.102539 1455.621338 1462.014404 1472.487915 1480.873657 1488.067017 1495.048706 1499.272217 1496.795654 1490.049927 1483.190186 1476.128418 1466.460815 1469.986206 1472.223267 1473.099731 1474.369995 1474.090942 1473.166748 1470.593384 1466.768188 1463.706665 1460.817871 1456.671265 1451.27124 1449.165039 1449.59436 1451.357544 1451.27832 1449.778564 1448.040527 1448.467407 1446.748657 1449.635254 1452.937866 1454.757568 1456.876465 1457.281616 1454.543823 1448.560425 1445.980591 1443.0448 1439.339844 1440.456055 1442.04541 1444.278198 1446.157837 1447.329224 1447.856567 1447.301514 1446.638184 1446.637695 1447.698608 1449.475098 1453.360107 1457.085815 1461.833374 1464.849121 1466.284424 1466.335571 1459.512573 1448.836548 1441.471069 1445.348022 1449.629395 1454.0354 1462.481445 1471.021484 1481.588135 1493.07666 1502.42041 1514.412842 1522.287842 1532.831055 1541.455444 1547.466797 1551.297974 1552.066772 1550.959351 1548.459106 1542.289062 1537.187378 1538.553345 1546.030029 1552.714478 1555.600098 1556.488037 1555.485229 1553.067261 1550.039795 1545.682373 1537.618164 1526.44873 1513.910522 1503.499146 1489.231812 1477.221558 1466.983643 1469.749512 1473.672852 1479.915527 1489.993774 1490.874268 1497.651001 1507.209106 1513.616699 1519.444214 1520.861084 1519.935547 1516.454834 1510.743286 1504.678101 1498.409424 1489.315308 1479.671875 1469.883057 1460.065186 1448.549561 1437.680786 1430.402954 1418.98584 1411.534912 1406.345093 1395.821777 1392.366455 1386.182983 1378.197632 1373.849121 1374.988159 1372.754272 1366.815674 1361.196167 1361.828369 1363.58313 1373.888794 1385.223999 1394.110107 1403.021851 1411.457153 1419.141235 1425.08667 1432.087402 1439.357544 1444.687744 1447.873291 1449.189453 1446.793945 1442.121704 1434.305664 1425.778809 1432.508911 1443.008423 1445.735596 1440.59729 1429.487671 1413.02124 1416.69812 1434.364258 1440.947998 1441.042603 1438.703613 1441.603149 1445.474121 1448.705444 1450.922363 1451.723511 1447.268799 1439.108887 1429.130005 1417.068604 1403.463745 1415.915894 1423.425293 1427.329468 1438.764404 1443.901733 1449.923462 1458.704834 1466.761108 1463.940186 1450.438354 +1553.760376 1529.368774 1533.03772 1552.330322 1565.085449 1576.837036 1587.03418 1596.048828 1602.383545 1614.866089 1628.231445 1640.412964 1657.718994 1663.535522 1676.802856 1687.934448 1694.898071 1700.204834 1707.200073 1723.543457 1741.793701 1752.551514 1766.476196 1778.848511 1783.295776 1783.789795 1782.721069 1782.470581 1785.076782 1787.2229 1791.083862 1794.519287 1796.144287 1796.719116 1797.034546 1790.732666 1778.154053 1772.41272 1770.261353 1773.005127 1773.2677 1765.744507 1754.60498 1742.510498 1748.789307 1762.715942 1773.075562 1778.444336 1776.9104 1770.270996 1765.06604 1771.885498 1776.78418 1783.16626 1786.663452 1787.012207 1784.884888 1782.276245 1781.876221 1776.661133 1768.259033 1758.55835 1756.145996 1754.870728 1758.105225 1762.929932 1769.947632 1771.041504 1766.263794 1755.804565 1748.327026 1741.238525 1734.081177 1724.759277 1718.573242 1719.988525 1720.569702 1717.953003 1715.571533 1713.875366 1711.330444 1707.424072 1709.046997 1713.637939 1715.412476 1711.000122 1707.537354 1701.016235 1693.724487 1686.469727 1675.283569 1670.071411 1667.264648 1664.167847 1661.855103 1665.180664 1664.710571 1668.432983 1672.359497 1672.236084 1671.432617 1675.605591 1680.106567 1684.744873 1685.862793 1684.02063 1676.795532 1668.23999 1659.497192 1645.182007 1647.079224 1659.529175 1670.515747 1675.668335 1670.95752 1660.256348 1649.595947 1642.577148 1633.873657 1623.046509 1619.341187 1618.225098 1619.463013 1624.34082 1628.670776 1627.146729 1622.277344 1614.595581 1608.652222 1603.874756 1600.530151 1599.111816 1595.542969 1593.596802 1596.535156 1592.91748 1594.752563 1600.552002 1611.965576 1620.766479 1630.759155 1649.333008 1665.949341 1686.863403 1698.60791 1696.005371 1695.870605 1699.47937 1704.071045 1717.529175 1728.319092 1731.387451 1722.275513 1713.082886 1706.152954 1702.251831 1699.859985 1696.493774 1697.408691 1703.068604 1704.942261 1699.181519 1694.558594 1700.603882 1704.003662 1689.485107 1679.894165 1679.745605 1677.522217 1678.85022 1678.825317 1675.109497 1677.571655 1688.543335 1697.545166 1697.452026 1689.113281 1680.088379 1672.971924 1662.596924 1646.274414 1650.933838 1663.166748 1671.068848 1667.319214 1665.97229 1674.657959 1681.444702 1682.493408 1679.416016 1675.372559 1670.483032 1665.776001 1664.811035 1666.522095 1669.124512 1673.678833 1678.999634 1682.39917 1684.180786 1683.509399 1677.464111 1669.605591 1666.340576 1663.467041 1661.498779 1658.511353 1655.006592 1650.686523 1645.211182 1638.707153 1632.318726 1633.846558 1634.070312 1628.882935 1620.016724 1612.630737 1616.535645 1624.779541 1627.588745 1628.056763 1623.301147 1617.055908 1624.091064 1626.017212 1623.155884 1617.079346 1611.445435 1598.344849 1591.698364 1588.731445 1588.277588 1587.333374 1586.233154 1579.339844 1576.012695 1571.416992 1559.723511 1546.144043 1534.807861 1531.925415 1533.227173 1534.931519 1536.014526 1540.194702 1541.837769 1540.279541 1535.474243 1547.640991 1556.491699 1572.426514 1587.228638 1593.242432 1601.608643 1622.067139 1628.420532 1613.883911 1594.217041 1572.092041 1562.800659 1545.29126 1549.012817 1558.818604 1577.954346 1587.478882 1580.74585 1577.963013 1587.743774 1601.791626 1611.4375 1622.61084 1629.929932 1630.623779 1628.3302 1626.869873 1625.26062 1616.11792 1607.417236 1610.369385 1621.488037 1631.818481 1645.164795 1658.743652 1672.951782 1666.315308 1658.147339 1646.422485 1634.886719 1624.071655 1614.030762 1609.366699 1611.195068 1611.818604 1612.039795 1611.299072 1606.764526 1601.877319 1601.560059 1604.125244 1609.124268 1613.422485 1613.349854 1608.81897 1603.8125 1594.727295 1585.52356 1573.907593 1564.411743 1555.613037 1547.412842 1539.027222 1524.886597 1511.305054 1503.627319 1505.549438 1504.3927 1502.127319 1506.325317 1509.902954 1507.080322 1489.228394 1477.197754 1480.898804 1478.323975 1468.416504 1459.437134 1458.109619 1458.873901 1465.25354 1475.858032 1474.929077 1482.671509 1499.551514 1514.741699 1524.197998 1528.542358 1526.592773 1521.827759 1499.813965 1499.962036 1511.473145 1512.414062 1507.125122 1508.723145 1510.812012 1508.646729 1505.185913 1505.599976 1501.244629 1492.840088 1496.591919 1504.499878 1508.109863 1501.838989 1493.399414 1484.59729 1472.715332 1459.754028 1453.702026 1450.493286 1442.973022 1439.445679 1433.90332 1426.685303 1414.704956 1407.311523 1399.688232 1394.106934 1386.619263 1375.590698 1374.043457 1373.833618 1374.336182 1375.824463 1377.479736 1379.241333 1381.409912 1384.056152 1389.183228 1395.182007 1403.307495 1414.483276 1423.112305 1437.210571 1450.852417 1464.561279 1473.552124 1482.304199 1489.909912 1497.538452 1503.730225 1506.702515 1507.938843 1506.294678 1498.949341 1486.936157 1467.92749 1454.40271 1440.683228 1428.71814 1423.088257 1418.281006 1413.268311 1407.312012 1395.938843 1408.900513 1424.346313 1438.994873 1453.203613 1472.22998 1493.07666 1517.372559 1536.618408 1555.827515 1564.423584 1562.040649 1556.303101 1551.297363 1548.484375 1550.965454 1557.743164 1560.898071 1556.261597 1547.14209 1537.731323 1524.376953 1513.766479 1500.206055 1489.158203 1479.596191 1470.386841 1460.237061 1463.944458 1476.373291 1484.834106 1494.0177 1502.383911 1505.734131 1503.091431 1495.732666 1486.599976 1477.642822 1474.407837 1477.811768 1480.775879 1483.577515 1485.545166 1484.84436 1483.889038 1480.905884 1476.984131 1472.712036 1467.948242 1463.369995 1456.174805 1453.571167 1455.289917 1457.088135 1457.288696 1454.865601 1451.281006 1452.775269 1451.307739 1451.036743 1454.974487 1457.968506 1461.839722 1463.046265 1457.880493 1451.464844 1448.038086 1446.283813 1445.085083 1444.860107 1445.797852 1447.140503 1448.69104 1449.903564 1450.798706 1451.435425 1451.448608 1450.620605 1450.432495 1450.05249 1453.645752 1457.614624 1461.340576 1464.567383 1466.262573 1466.23645 1455.360718 1444.700562 1444.185669 1449.168091 1454.734863 1461.42749 1468.423462 1474.699219 1485.592651 1498.042725 1510.282959 1520.585205 1531.524292 1542.948853 1551.261597 1556.925049 1560.218994 1561.567505 1560.675781 1558.61377 1555.206543 1552.26709 1552.972534 1555.55957 1560.330322 1562.042969 1561.239258 1559.351685 1555.780518 1551.888306 1545.129272 1534.795044 1523.871704 1511.695435 1502.172974 1484.691528 1474.10498 1476.071777 1479.448364 1483.831665 1488.862183 1494.283203 1499.163574 1509.929321 1517.021484 1521.805786 1525.595093 1526.702637 1524.639893 1518.557739 1512.288086 1506.064819 1498.783569 1487.942627 1476.373535 1463.778442 1454.486206 1442.733521 1432.970947 1425.27356 1414.46167 1398.844849 1393.954712 1387.22522 1381.473755 1377.201538 1371.421875 1366.082764 1364.691772 1363.435913 1362.497925 1369.637817 1370.363403 1366.537842 1372.525757 1382.154541 1390.240601 1398.143066 1405.369507 1414.6427 1425.894165 1435.901367 1444.438721 1451.318726 1455.27417 1457.052734 1455.090698 1449.088623 1440.610474 1433.210571 1437.450073 1445.562622 1451.393555 1445.69104 1435.290771 1417.725342 1426.685547 1440.58606 1445.538696 1446.903809 1446.444214 1446.666748 1450.435547 1452.358521 1453.279419 1453.624146 1450.996216 1442.362793 1430.436401 1416.266235 1411.151123 1423.711792 1432.01355 1435.034912 1439.981201 1446.823486 1454.174805 1462.755371 1465.359253 1457.712158 1445.235718 +1563.505859 1539.562378 1535.950073 1558.366943 1572.37793 1583.897705 1592.350586 1600.325562 1610.661743 1628.210327 1648.796021 1669.216187 1674.571899 1683.675415 1689.554077 1699.170166 1704.591675 1713.301025 1719.304443 1732.278687 1748.545288 1759.273926 1772.847534 1783.228516 1788.233765 1791.523438 1792.252319 1790.940796 1785.716064 1785.748657 1790.324097 1793.950439 1795.718872 1796.251099 1793.641602 1781.497192 1770.450928 1761.62085 1760.229614 1762.859985 1763.452515 1758.990112 1750.454468 1736.987305 1738.839722 1752.602051 1764.667603 1768.100952 1764.082764 1758.327148 1754.062622 1760.498657 1770.151733 1776.397461 1778.814209 1779.40918 1778.665283 1775.683716 1775.847534 1773.030273 1767.3927 1757.375977 1750.129883 1748.502075 1751.526611 1758.271973 1768.231079 1770.329834 1770.62146 1765.160889 1757.437134 1752.325073 1747.015991 1737.22168 1726.083984 1717.848511 1713.132202 1710.258545 1706.120605 1705.708252 1702.513794 1697.631348 1696.769165 1698.91394 1705.058472 1708.797119 1708.482178 1702.302368 1692.861572 1681.399292 1673.827759 1669.386108 1665.398071 1669.987183 1673.906738 1674.343384 1669.245972 1678.004883 1683.712036 1684.386719 1685.153809 1688.229492 1693.463135 1697.99353 1697.933594 1689.484619 1675.841675 1665.342041 1655.818115 1649.81189 1654.174438 1664.343262 1676.567993 1687.216675 1684.529053 1675.990967 1668.708984 1664.452637 1657.897095 1647.421265 1639.019043 1634.612305 1641.974365 1646.345581 1639.987915 1633.68457 1624.129883 1618.99585 1612.875 1609.453735 1604.255005 1600.098389 1597.268066 1596.264648 1600.079468 1599.65979 1595.366577 1600.552246 1609.467285 1617.387085 1627.028442 1644.792603 1662.185791 1680.897095 1691.126953 1689.659424 1693.984863 1700.08606 1706.882935 1732.239258 1731.921753 1728.092529 1720.814331 1716.272217 1710.532349 1706.758911 1704.128906 1704.497803 1705.500366 1709.552979 1711.099854 1707.228516 1703.867554 1707.197388 1709.460205 1700.447266 1696.72522 1695.464966 1690.967285 1697.638794 1695.298096 1682.692993 1682.944946 1694.158203 1697.883789 1696.590088 1686.844482 1676.684326 1668.678223 1657.157837 1655.826904 1663.117676 1673.286011 1680.825684 1675.874146 1669.458008 1680.448242 1687.330444 1688.250244 1684.565308 1679.422974 1675.388916 1672.160645 1670.889404 1670.80542 1672.730347 1678.046021 1682.168457 1686.203247 1687.760742 1687.31604 1683.291504 1676.469849 1672.396973 1669.58313 1666.799805 1663.209961 1659.600952 1654.886475 1649.172363 1642.977539 1637.567383 1640.948486 1639.331055 1634.293091 1619.868896 1618.351196 1621.648804 1631.784302 1636.301636 1635.887695 1630.78418 1630.622192 1635.412231 1632.387085 1622.784668 1615.459351 1609.397949 1597.482056 1590.362549 1585.28125 1585.671143 1579.033813 1574.774292 1570.292236 1571.430786 1576.427979 1567.096191 1556.447388 1546.648315 1536.067749 1529.137207 1529.506348 1530.515625 1533.130981 1533.350098 1528.524292 1532.969116 1542.052002 1548.640991 1557.457886 1567.518677 1577.627075 1593.123413 1611.482666 1625.153564 1609.797241 1592.202148 1569.530518 1557.687744 1540.549927 1543.928833 1550.428833 1565.767822 1570.367188 1566.391602 1574.427979 1584.593628 1594.578247 1605.847412 1622.000977 1623.714111 1623.150024 1618.728271 1615.434937 1611.117188 1604.066895 1595.599365 1606.674805 1617.914307 1628.893555 1642.351318 1657.012207 1669.653687 1659.406006 1649.705322 1637.908325 1627.552979 1619.571289 1612.084229 1607.558838 1609.300903 1610.221436 1607.518799 1604.858032 1601.491333 1597.514038 1600.721558 1604.228271 1607.529785 1610.467407 1609.995239 1604.245117 1598.464478 1588.440308 1576.967651 1566.666992 1558.00293 1549.473511 1540.837524 1531.146606 1522.173462 1521.632935 1522.55481 1521.188599 1518.223755 1518.861206 1523.016479 1524.845093 1518.135376 1498.536865 1499.746704 1497.982666 1493.530396 1488.736938 1476.929688 1461.322998 1451.175781 1451.749512 1461.421997 1466.014282 1486.987305 1497.446045 1505.395996 1508.793213 1512.82373 1509.029907 1508.342651 1494.01001 1493.935181 1499.362549 1500.250244 1496.342407 1497.723877 1498.601074 1497.24939 1490.074829 1491.72876 1490.363525 1484.201294 1487.662231 1502.437134 1502.135376 1499.762085 1480.804565 1468.661987 1459.931641 1451.449829 1445.226196 1442.02063 1434.959839 1425.649658 1422.947998 1413.418091 1406.236938 1399.06311 1391.437378 1385.186279 1376.161743 1375.364624 1376.045654 1376.398071 1379.142578 1382.214722 1385.335083 1388.8927 1389.985229 1388.953857 1396.335815 1402.523926 1413.234741 1427.918091 1435.934937 1445.803955 1463.603271 1477.159424 1485.447388 1493.988159 1501.654907 1506.724609 1511.368286 1515.283081 1514.995239 1510.956299 1503.498535 1492.575195 1475.224609 1461.757568 1446.660278 1433.956665 1425.404053 1421.538452 1417.375 1411.306396 1399.000854 1407.965454 1424.847046 1439.562012 1453.454712 1469.932739 1491.070312 1511.416504 1535.011353 1557.050049 1568.607788 1574.246338 1569.780518 1565.644287 1563.797241 1565.498047 1569.675415 1571.324707 1563.254028 1553.250854 1541.741455 1527.27063 1517.145874 1503.090942 1491.447388 1481.974609 1473.150269 1464.224365 1465.625732 1479.272461 1489.015747 1499.922729 1509.275513 1512.511353 1507.253418 1500.236328 1489.693604 1482.296143 1481.176147 1484.636719 1489.674316 1493.585327 1495.666626 1496.300049 1494.927979 1491.964478 1488.698364 1482.251465 1474.960571 1467.940674 1461.242432 1461.951538 1462.515625 1464.092163 1464.636108 1463.012451 1458.762085 1455.107544 1453.180542 1452.993164 1457.06311 1460.020386 1463.540161 1464.578491 1460.269531 1451.914185 1449.555908 1450.174438 1449.840698 1449.546753 1449.421997 1449.911621 1451.492065 1453.09314 1454.20813 1454.922852 1455.084839 1454.400024 1452.975708 1450.669189 1453.079102 1457.848145 1461.56604 1464.696167 1465.959595 1463.905518 1451.008667 1443.395508 1446.989258 1452.829956 1460.019287 1467.626831 1475.325439 1484.060303 1492.719482 1502.915405 1514.026245 1527.14502 1539.834839 1550.97998 1559.876465 1564.82666 1567.927612 1569.051758 1568.737305 1567.193359 1564.608643 1563.372192 1563.325195 1565.380737 1568.760498 1569.796509 1566.197144 1561.98645 1556.842041 1551.480225 1542.567017 1531.450195 1520.013428 1508.416992 1497.011597 1484.416382 1480.500732 1484.632812 1488.774048 1493.043701 1497.553223 1502.292847 1511.923218 1518.887451 1523.903809 1527.508423 1529.160889 1528.737915 1525.815063 1520.208496 1513.940186 1505.426758 1496.42334 1484.132568 1470.375366 1458.630371 1448.320923 1436.070435 1426.824341 1414.630249 1403.008667 1392.187622 1384.942383 1382.01709 1376.573853 1367.619751 1365.076416 1363.351562 1364.133179 1368.942627 1376.760132 1380.936035 1379.305908 1371.992676 1370.532593 1379.358276 1386.5177 1391.900757 1405.285889 1417.979004 1428.597534 1439.230347 1448.515991 1455.659058 1461.170044 1464.687012 1464.13855 1454.43103 1445.717285 1438.598022 1440.7146 1449.124023 1453.472412 1450.692871 1441.200439 1425.027832 1431.157959 1444.084961 1450.942871 1452.886841 1452.787109 1450.471191 1453.876343 1455.116333 1455.32251 1454.56897 1452.056152 1441.947998 1429.541626 1416.866211 1418.450684 1429.242798 1438.472046 1442.600586 1443.858887 1448.515137 1453.55542 1458.491699 1456.742432 1448.716919 1437.495728 +1567.593262 1545.336304 1536.836304 1560.7854 1575.681519 1587.818237 1597.593018 1609.746216 1623.916992 1633.841187 1656.337646 1679.600464 1688.906982 1699.109497 1709.233887 1713.886475 1724.431641 1731.293701 1739.663818 1745.298096 1756.161621 1767.045166 1780.095459 1788.004028 1793.122314 1795.036621 1794.713013 1789.799316 1780.916626 1779.908569 1785.230591 1790.518677 1793.261353 1791.377075 1783.329712 1772.208252 1761.241943 1751.71228 1749.891968 1751.584473 1755.103271 1751.939209 1744.263916 1731.511963 1731.415771 1744.856567 1755.644165 1757.35083 1753.133301 1746.646606 1743.937988 1756.311035 1767.295044 1767.476562 1767.751953 1772.01062 1772.976562 1767.566528 1768.008179 1770.389404 1769.328003 1759.563354 1747.161377 1742.615356 1746.409302 1756.957031 1765.384521 1767.559814 1767.234253 1768.248901 1762.626709 1759.451294 1756.144531 1749.355835 1740.571533 1731.119019 1723.473267 1717.385132 1713.26123 1708.389282 1703.739624 1699.789673 1694.15686 1690.076172 1690.055664 1688.689697 1689.341309 1686.353516 1680.329346 1675.369385 1669.810913 1671.731201 1677.700928 1683.302124 1683.17395 1680.090088 1677.490479 1686.779175 1696.472168 1700.62854 1701.137573 1704.508301 1711.358887 1708.570312 1699.882202 1687.517822 1672.974731 1665.286621 1660.213013 1656.295532 1659.976562 1669.556763 1679.731567 1691.523804 1698.037354 1691.385376 1686.293091 1683.327637 1678.040283 1670.431763 1660.016724 1652.941772 1651.899902 1646.251587 1640.03894 1632.750366 1629.897827 1625.602661 1619.66272 1611.691772 1605.394287 1599.894287 1596.583252 1601.00061 1606.314453 1608.157349 1595.984009 1600.796387 1606.942993 1614.014526 1623.300293 1636.173096 1655.417236 1672.129272 1680.007324 1681.322998 1693.170776 1703.415405 1715.001587 1731.065918 1720.873047 1719.395386 1717.622192 1720.460571 1720.208252 1714.589478 1711.234253 1713.155396 1716.98999 1717.799683 1716.996704 1712.842285 1709.296753 1710.599121 1712.695435 1711.399292 1707.971436 1704.255493 1705.277588 1710.985107 1707.290405 1693.794312 1691.023438 1696.93103 1697.757202 1692.426025 1682.599609 1675.753418 1671.271851 1669.290771 1665.994019 1669.716675 1680.180908 1688.037109 1685.78833 1676.063477 1682.943237 1692.905884 1695.94873 1689.557495 1682.69812 1679.686157 1677.013306 1676.140137 1676.42688 1678.095947 1682.487671 1687.927002 1692.3479 1693.642456 1692.108765 1687.973022 1683.09729 1678.311157 1675.132812 1671.886841 1667.792603 1663.785889 1659.944946 1653.49231 1645.335571 1647.424438 1648.041504 1644.031494 1632.971802 1622.585815 1623.048462 1625.344727 1633.60144 1630.81604 1630.845947 1633.974121 1636.903442 1636.338257 1628.925903 1618.316528 1609.034058 1598.375366 1592.63147 1585.775513 1582.000488 1576.327515 1572.50647 1565.535767 1561.666504 1560.693481 1566.763062 1564.147339 1559.66687 1552.509644 1546.171021 1539.257812 1528.357422 1524.800781 1525.966187 1525.906128 1524.514038 1525.392212 1533.812256 1538.58728 1543.365723 1552.20166 1571.880249 1583.614136 1593.660645 1610.708252 1609.818604 1594.529541 1569.531738 1554.213867 1536.415894 1539.640625 1545.886841 1554.507446 1556.641479 1559.681396 1578.413452 1588.65979 1594.319946 1602.202759 1610.526855 1609.837402 1611.040527 1606.955078 1600.836914 1596.136841 1586.00769 1594.461792 1606.200317 1615.493286 1625.203613 1639.140137 1653.789673 1662.37793 1656.401978 1644.808472 1629.796143 1619.15625 1612.720337 1607.50354 1604.173096 1603.601685 1600.978149 1598.351807 1594.581055 1593.29834 1595.847046 1600.042725 1602.52063 1604.264282 1605.167725 1602.65625 1598.737305 1591.328003 1580.738892 1569.625488 1560.740967 1550.66687 1543.427612 1536.768188 1535.608154 1538.370972 1539.694458 1537.391846 1530.690186 1527.23877 1535.062988 1537.570923 1535.187866 1525.983032 1515.480713 1517.978638 1515.267944 1511.08374 1508.306396 1496.387817 1477.063232 1458.230225 1449.22522 1449.444702 1468.582031 1480.800049 1486.619385 1492.522095 1496.312134 1495.139771 1493.855347 1494.030762 1485.618164 1485.423462 1489.533447 1490.03186 1486.054321 1488.27832 1486.979736 1488.74353 1481.538818 1474.838013 1474.856079 1471.60437 1485.252197 1493.850708 1493.715942 1494.47644 1487.443481 1466.474365 1451.341187 1442.797607 1437.900024 1433.628418 1427.381104 1420.115356 1413.31189 1405.196655 1398.218018 1390.690674 1386.125732 1380.323853 1376.799072 1376.89624 1379.7146 1381.140869 1386.255493 1390.953857 1394.266724 1397.119751 1397.765015 1399.201538 1407.013672 1415.780029 1422.045532 1435.389771 1449.935913 1462.11731 1475.23938 1492.24292 1496.770996 1503.991333 1511.525024 1517.445312 1521.865723 1525.40271 1520.970581 1515.95166 1508.413696 1497.123779 1482.743774 1468.592529 1453.922485 1440.080444 1429.39856 1424.242798 1420.128784 1415.573608 1400.355103 1409.725342 1426.341797 1440.089722 1453.643799 1468.423828 1488.449097 1510.616943 1536.094482 1559.325439 1571.026978 1578.875488 1581.424927 1578.911865 1576.610596 1579.058105 1584.136963 1580.064453 1566.623901 1555.922607 1545.194336 1529.087158 1518.425415 1506.381348 1492.814087 1482.957764 1474.171631 1467.05896 1471.515015 1481.533691 1492.199951 1504.334839 1513.919556 1514.591919 1508.780884 1501.689697 1491.319824 1485.755249 1486.069702 1491.64856 1497.194092 1501.977905 1505.295166 1506.289673 1504.798584 1502.067139 1497.605835 1491.501831 1483.088379 1474.196289 1465.519165 1470.61084 1473.47937 1472.317139 1469.010376 1465.937744 1461.662842 1457.355713 1454.627563 1457.227783 1460.665039 1462.146362 1465.033447 1465.397217 1462.128174 1455.48938 1453.385864 1454.022339 1454.318481 1453.930298 1453.053711 1453.413696 1455.601196 1457.014648 1458.181641 1458.724854 1458.961914 1458.600708 1456.897339 1454.457642 1455.4552 1458.688965 1461.884644 1464.581543 1466.21582 1458.082764 1447.730591 1444.791016 1449.765259 1456.739136 1465.024902 1472.797729 1481.819214 1491.631958 1501.31543 1512.343628 1522.939453 1532.880615 1544.720337 1556.343384 1565.337402 1571.351074 1575.504517 1577.452759 1577.401611 1575.542236 1573.474731 1573.127197 1573.051636 1575.515869 1577.270752 1575.888306 1569.54126 1562.214355 1555.28418 1548.004761 1536.401855 1525.35022 1514.969238 1502.581421 1492.75061 1484.585083 1488.450317 1493.196533 1497.789062 1502.404053 1506.809448 1512.068359 1520.151001 1526.810303 1532.510498 1534.14856 1532.031372 1529.991821 1527.309326 1521.588989 1512.830322 1502.314209 1491.199829 1476.59314 1463.864136 1451.985962 1439.683838 1428.968628 1418.991455 1405.41272 1390.286987 1386.724365 1378.443726 1375.641479 1365.670898 1364.786011 1366.885132 1372.077515 1377.287842 1383.986816 1388.888916 1390.870117 1384.162354 1373.070312 1377.192383 1388.772583 1393.390747 1393.243896 1404.288696 1418.926636 1430.39978 1442.852661 1452.101562 1460.158325 1466.072266 1468.563965 1467.270142 1460.251709 1453.041626 1446.057739 1447.398804 1453.056396 1455.399292 1453.155273 1445.387451 1431.251343 1434.111572 1447.721802 1454.737427 1457.5802 1457.470703 1456.130615 1457.929443 1458.291138 1456.860718 1454.734985 1450.386475 1439.711548 1427.648438 1420.039795 1427.24707 1437.355591 1443.805664 1450.900757 1450.880615 1449.965576 1452.690308 1453.610352 1448.317261 1438.307251 1430.41626 +1568.973022 1545.591187 1536.706787 1560.943848 1577.909668 1589.326416 1600.379517 1615.503906 1629.300171 1647.810303 1663.134888 1683.565063 1696.123779 1710.44812 1718.70874 1732.251831 1739.962769 1747.532959 1757.13562 1761.425781 1765.705566 1774.877441 1785.913696 1793.482666 1795.487183 1793.209473 1785.892944 1778.676514 1770.630371 1771.934937 1777.266846 1780.199463 1784.160767 1783.602661 1774.851318 1762.870117 1752.079102 1744.063599 1737.279419 1739.793091 1743.929199 1741.883667 1736.253906 1726.001343 1725.283447 1735.815552 1743.059326 1744.657593 1742.200317 1737.441284 1742.854126 1755.478027 1757.790527 1757.12854 1762.502441 1768.352783 1770.140503 1766.577026 1760.925781 1764.295532 1764.780273 1757.615356 1744.479858 1740.109985 1744.091553 1757.782837 1760.671997 1761.518555 1758.639526 1763.217529 1762.637573 1760.582642 1758.828857 1757.177979 1752.695312 1745.185303 1737.109253 1729.916626 1723.196289 1718.849609 1714.186768 1708.463257 1703.234985 1696.138916 1690.126221 1685.928467 1681.377563 1678.616089 1676.251099 1674.887085 1678.369385 1684.359863 1696.436401 1702.535034 1699.959351 1685.777588 1680.890869 1689.616699 1705.557861 1715.994263 1717.660645 1720.267578 1721.42395 1706.248901 1693.336426 1681.659058 1669.827637 1672.112183 1669.243286 1658.118042 1664.114136 1675.220703 1684.192993 1696.321411 1706.752197 1705.781738 1700.56543 1692.26355 1684.153076 1676.235107 1667.645264 1659.657715 1656.40979 1650.143921 1647.401733 1644.961182 1636.36377 1625.981812 1617.271484 1608.953369 1604.165039 1599.449829 1599.954956 1611.524902 1611.799438 1615.894531 1612.324829 1598.376099 1604.324707 1609.156372 1620.428833 1631.774658 1648.435059 1656.90564 1667.850464 1680.670288 1694.659546 1705.950317 1718.414917 1717.448364 1708.068237 1707.929688 1712.465698 1721.660522 1722.516357 1721.729492 1720.680542 1721.608521 1722.192505 1721.898193 1721.889038 1719.484375 1716.242188 1715.730225 1717.73999 1720.752563 1721.773438 1716.695679 1717.720947 1719.113281 1712.085693 1702.943848 1697.700928 1700.033936 1698.482422 1694.658081 1693.417236 1690.5 1686.487427 1679.242676 1670.261108 1675.247437 1684.678589 1693.666016 1696.935425 1683.787354 1684.716675 1694.675659 1697.338257 1695.633545 1689.642578 1685.133789 1681.09729 1680.813721 1681.977173 1682.795532 1688.209595 1694.781982 1697.649902 1698.111084 1696.965088 1692.923096 1687.712891 1683.117554 1679.882446 1676.046143 1671.336426 1667.265503 1663.373901 1657.729126 1654.602905 1655.050659 1653.63562 1648.285767 1637.452515 1634.702148 1628.944824 1621.615234 1625.460693 1620.868896 1619.452881 1626.082275 1632.422607 1630.770264 1623.281128 1615.170166 1604.624023 1595.261963 1589.91626 1584.704346 1579.700439 1573.997681 1567.421875 1560.555176 1558.139771 1556.786133 1556.330688 1555.507568 1553.329346 1552.166748 1549.451904 1540.894897 1537.540405 1530.852295 1525.338989 1523.394043 1522.719482 1521.848755 1521.598755 1522.099365 1527.711548 1541.909424 1556.858521 1570.026611 1579.42627 1595.269409 1602.639404 1592.540894 1570.138794 1552.821899 1535.071045 1532.66333 1537.567871 1545.743652 1546.602539 1562.11084 1583.071899 1588.871704 1592.197266 1595.75708 1595.888184 1597.392334 1598.583374 1596.339111 1589.090942 1577.858276 1578.900391 1594.004517 1604.091919 1613.222656 1624.549805 1640.498657 1653.537842 1669.55481 1656.3125 1642.615845 1625.101807 1611.404663 1606.576416 1600.631592 1598.090576 1598.701294 1597.204224 1591.554443 1585.005859 1583.475952 1591.521973 1599.060791 1600.322144 1599.15564 1598.27771 1595.938965 1590.363647 1582.63269 1570.347656 1559.096069 1550.627319 1545.068237 1544.339722 1543.901367 1543.718018 1549.955811 1552.124756 1549.557495 1540.093872 1540.138672 1549.107788 1549.93689 1542.307861 1530.747559 1528.814209 1530.771118 1529.979248 1529.439575 1521.955322 1504.71106 1486.145996 1467.233154 1446.817383 1448.520752 1461.137695 1468.017334 1466.626465 1476.519409 1483.781738 1482.659546 1481.597412 1481.126099 1474.908081 1472.268677 1478.192505 1479.952148 1475.867554 1474.333862 1473.78064 1476.113525 1474.3573 1464.969482 1459.019409 1461.388672 1476.862061 1481.955322 1482.65625 1485.197754 1485.15686 1476.091431 1460.547119 1439.400391 1427.993652 1426.000732 1420.641602 1414.621826 1406.27356 1398.354858 1391.220947 1387.075562 1383.704102 1380.465332 1377.144653 1379.181641 1383.710815 1387.644531 1393.214233 1398.065186 1401.99707 1406.677979 1409.385742 1411.980347 1419.459106 1427.243286 1434.644897 1444.454712 1463.504639 1475.667847 1488.93335 1500.973145 1505.201782 1511.55603 1524.256348 1531.028076 1539.404541 1540.447388 1528.476807 1521.142578 1514.287231 1502.235229 1490.463501 1476.950195 1462.307007 1446.620605 1434.653564 1426.261353 1422.014282 1417.448364 1402.22998 1410.508057 1425.635742 1440.647705 1453.480225 1467.312988 1487.05835 1505.164917 1532.663086 1554.061768 1570.776733 1584.306152 1590.022949 1591.062866 1591.918457 1593.025146 1590.858398 1583.992676 1568.84436 1557.553833 1546.307007 1529.949829 1518.783569 1508.10437 1494.22876 1484.208862 1477.232056 1469.87439 1475.828369 1483.402588 1495.018555 1507.097412 1514.81189 1515.172363 1510.678223 1505.150635 1498.08313 1488.993652 1492.174927 1501.453125 1506.092163 1511.991455 1515.361084 1515.496216 1513.865479 1510.619873 1505.437134 1499.250122 1490.859985 1480.693237 1474.19043 1478.957031 1480.406006 1477.488892 1472.294922 1467.89563 1464.554077 1459.009766 1458.054688 1462.778198 1464.913696 1465.822266 1467.926025 1468.115479 1464.251709 1461.913696 1460.771362 1460.74707 1460.853149 1460.426392 1459.937988 1459.703247 1460.626831 1461.710083 1462.311401 1462.568726 1463.029907 1463.255981 1462.16272 1460.532959 1459.739014 1460.319824 1461.945312 1464.441528 1463.989136 1452.346558 1446.089233 1446.627808 1451.033569 1460.259644 1468.467407 1477.09668 1487.244873 1497.473755 1510.307007 1521.633545 1533.808594 1541.123657 1548.869751 1560.640137 1570.540771 1577.865601 1583.817017 1587.33374 1588.115723 1587.395508 1585.532715 1584.665283 1584.822266 1586.023438 1584.386353 1577.607544 1570.415771 1562.505493 1554.843506 1544.467163 1531.736816 1520.712158 1510.770752 1500.080688 1491.635254 1491.876465 1496.985107 1502.448364 1508.384521 1513.358032 1517.832397 1523.546143 1531.596313 1538.062622 1539.515869 1536.586548 1533.600708 1530.833374 1527.416626 1519.328613 1508.196167 1496.106567 1483.531372 1469.56543 1456.239136 1443.966919 1432.051636 1421.245483 1408.64563 1395.264648 1379.688721 1373.666016 1370.332031 1369.672729 1370.747192 1378.332397 1382.707886 1385.934448 1393.701172 1400.52771 1404.229004 1398.115356 1383.207642 1373.414185 1383.895752 1395.781616 1404.09436 1410.438721 1403.375366 1415.96936 1431.325195 1444.81897 1454.944824 1463.209595 1470.662476 1474.723145 1471.097656 1466.708618 1462.695068 1451.449097 1451.486572 1456.564819 1459.534424 1457.757324 1450.331787 1438.338623 1437.360962 1448.760376 1457.545776 1462.882324 1463.204102 1461.383545 1462.197144 1461.427612 1458.063477 1453.784424 1449.066162 1438.064209 1435.37793 1424.191162 1431.743408 1443.731812 1451.991211 1455.540894 1456.859863 1457.366699 1460.22876 1450.26123 1438.863525 1431.000244 1423.64624 +1565.619629 1545.873413 1534.655884 1559.02002 1578.794067 1590.100098 1601.090454 1616.752075 1633.890869 1660.238892 1676.725342 1688.189453 1700.300171 1714.591309 1732.863281 1745.975708 1756.614014 1761.752563 1766.575317 1770.739258 1775.302979 1784.033569 1793.06604 1795.920044 1794.141724 1786.793701 1777.336792 1768.923584 1760.512939 1761.625366 1765.360596 1771.086914 1776.12915 1776.070801 1768.000732 1752.86731 1742.448364 1733.254028 1726.450806 1727.81543 1731.588379 1732.539917 1727.837524 1717.662109 1719.324341 1725.855957 1730.450439 1731.713135 1729.676147 1728.936768 1736.996094 1743.788452 1748.071777 1750.302734 1756.532227 1764.668335 1766.556885 1762.764893 1756.049194 1754.725342 1757.839966 1753.440308 1742.799072 1736.369751 1740.905518 1750.469238 1756.890137 1758.256348 1751.473022 1758.377319 1760.980957 1760.112061 1758.578247 1757.380859 1756.620239 1749.813477 1745.179688 1737.64917 1732.734009 1732.495239 1732.009277 1726.155029 1720.074585 1708.343994 1699.034668 1693.356812 1685.814941 1682.058716 1681.499756 1686.984863 1697.435425 1705.034668 1714.127197 1722.210571 1707.643677 1689.132568 1680.686035 1689.441528 1706.338135 1723.062256 1732.231812 1728.006592 1718.369019 1700.659424 1688.171997 1681.331787 1685.123657 1686.137085 1675.903931 1664.915405 1667.057983 1678.082031 1688.927124 1701.601196 1710.555176 1710.055542 1703.606079 1692.592651 1683.389893 1677.190063 1671.493286 1671.463867 1664.430786 1649.596436 1646.179688 1644.261475 1634.709106 1626.736328 1614.317627 1606.898193 1602.057617 1599.617432 1610.206909 1614.521118 1617.417358 1620.358032 1625.365601 1620.018555 1608.310791 1610.193359 1616.201538 1624.087646 1635.613403 1647.456787 1662.380981 1680.358154 1690.996216 1699.683228 1705.950562 1701.375732 1698.619995 1696.87561 1704.189697 1714.428101 1721.422485 1722.853638 1722.29541 1720.928711 1718.699951 1720.211182 1722.459473 1721.395386 1719.477539 1719.001709 1720.675781 1722.598145 1723.113159 1722.536621 1722.187134 1722.163086 1719.041504 1710.891479 1706.889404 1704.746704 1703.391113 1701.684204 1703.773438 1707.165283 1703.139893 1693.283203 1684.244995 1681.265015 1690.266968 1697.232178 1699.153809 1696.266602 1691.37561 1694.401489 1698.25415 1698.224365 1696.389038 1692.339111 1685.652954 1684.758423 1687.406616 1690.409912 1695.099121 1699.773315 1702.229126 1702.598633 1700.980713 1697.606201 1693.086182 1688.616211 1685.077759 1680.739014 1675.695557 1671.167847 1667.399658 1664.212524 1664.108765 1662.969238 1659.948364 1654.039795 1647.074585 1638.774902 1628.935181 1620.82959 1623.318604 1616.230835 1610.958618 1616.978027 1623.081543 1623.638428 1616.676758 1608.798218 1600.282349 1594.207275 1588.688599 1584.94519 1578.46875 1576.245728 1571.463379 1564.529541 1558.629761 1552.366577 1548.417969 1547.446777 1547.529297 1547.179199 1542.84021 1538.071655 1536.651733 1534.362061 1527.489624 1525.301758 1525.563843 1525.422729 1520.875854 1518.174194 1519.61438 1529.486328 1542.890991 1554.64917 1569.063232 1587.306396 1589.360107 1583.345215 1567.507568 1551.190918 1533.297729 1523.359253 1535.47998 1537.356689 1542.267212 1557.436646 1578.233154 1587.493652 1587.700684 1586.802856 1584.941406 1587.367065 1589.088745 1586.010742 1577.060791 1566.052856 1577.185425 1589.644531 1600.623657 1611.60083 1627.341431 1644.694946 1656.560181 1674.340332 1654.815308 1641.024292 1625.599854 1611.373291 1600.988281 1595.117065 1588.779785 1590.64624 1590.842651 1587.366943 1581.661743 1581.220337 1587.948608 1593.759888 1595.327759 1595.194336 1594.849609 1593.255737 1584.793335 1582.73291 1577.999756 1571.541504 1562.979614 1554.02356 1557.680664 1557.731567 1556.007202 1562.644287 1564.77478 1561.655396 1552.371948 1556.211548 1562.028809 1558.236816 1546.543091 1537.317139 1541.969849 1540.859253 1540.891602 1539.430054 1521.227539 1504.848145 1488.408203 1468.867798 1448.356201 1441.852905 1446.289551 1449.375366 1449.60144 1459.015869 1464.193115 1467.964111 1468.299316 1465.245605 1457.96814 1454.567993 1461.388306 1466.647339 1466.776733 1464.034302 1461.784912 1463.11084 1465.630737 1456.757935 1447.454834 1455.491577 1465.339355 1466.447021 1465.940552 1464.709106 1470.774048 1468.544434 1461.034546 1446.126709 1421.841431 1412.822021 1413.6521 1404.934937 1401.112549 1393.883911 1388.550781 1385.45813 1382.089355 1378.701538 1378.143433 1382.583618 1387.678955 1393.613647 1400.314575 1408.107422 1415.56543 1419.799561 1420.858154 1422.061035 1428.286621 1443.899292 1452.898926 1460.562012 1472.81897 1488.260986 1499.799194 1508.040405 1511.746826 1518.999756 1530.405029 1539.683594 1549.094971 1552.098145 1544.168457 1530.509277 1518.790527 1507.422729 1496.681519 1484.937622 1471.113281 1454.249268 1439.608032 1428.984985 1423.281738 1417.62146 1405.76001 1410.909424 1424.917358 1440.332275 1452.679199 1466.370361 1486.072876 1502.310791 1530.450317 1553.915039 1569.541382 1585.852783 1596.564087 1599.599243 1600.710571 1599.954468 1592.87561 1582.00354 1569.969849 1559.099243 1545.378296 1530.85144 1518.98291 1507.78479 1494.932617 1485.986572 1479.216797 1473.477905 1478.30481 1485.817261 1497.182129 1510.369507 1517.363525 1518.936401 1515.848633 1512.02478 1504.328491 1497.255249 1500.35791 1508.539795 1515.141235 1521.185791 1524.664795 1524.061768 1521.666382 1518.006592 1512.138428 1505.69397 1497.315063 1486.484741 1487.681885 1487.037109 1485.985718 1480.844116 1473.797607 1468.996826 1463.9552 1459.928345 1462.235596 1466.166992 1468.621826 1470.501587 1472.451904 1472.668213 1471.383423 1469.71582 1469.280396 1469.119873 1469.13208 1468.364868 1466.929932 1466.571045 1468.236938 1470.643066 1472.681274 1473.351685 1472.357544 1470.49353 1468.139893 1465.629639 1462.906982 1462.039795 1462.761597 1464.720093 1456.08374 1448.889771 1445.99585 1448.940918 1451.833984 1461.579102 1470.554077 1479.872681 1490.343384 1503.138428 1515.958496 1528.459717 1540.365601 1548.01709 1559.607056 1567.597778 1575.621094 1584.033569 1590.441528 1594.715088 1596.293945 1595.630981 1594.645264 1594.345093 1594.630371 1592.655151 1588.51355 1581.230347 1572.487671 1565.270264 1556.333252 1545.170654 1531.524292 1519.850098 1509.118286 1498.08313 1496.843994 1500.262451 1506.302979 1512.901978 1518.740601 1524.178223 1531.203491 1538.958618 1542.36145 1543.585938 1541.396851 1536.645386 1533.829224 1529.821533 1525.060425 1511.796143 1499.463013 1488.274048 1473.860718 1462.16333 1446.505371 1434.140625 1421.953613 1410.516846 1397.81189 1379.636475 1372.362305 1380.38269 1381.998291 1383.082275 1381.891479 1389.042358 1394.864624 1403.996582 1410.448853 1416.225464 1409.52124 1396.05249 1379.768555 1374.958252 1387.546875 1399.563354 1418.452637 1423.516235 1418.550049 1417.212524 1432.857422 1445.608276 1455.612549 1465.103882 1474.94873 1478.37439 1474.400146 1471.410278 1466.672607 1457.849487 1458.466919 1461.901001 1464.347534 1464.1427 1455.2323 1442.720337 1436.85022 1449.746948 1460.937622 1466.442993 1466.865479 1465.554688 1465.799683 1463.522827 1458.507812 1452.538818 1448.344116 1445.427734 1441.088623 1429.054321 1436.30481 1449.415771 1455.270508 1459.214233 1462.027954 1464.2146 1463.099976 1451.321411 1439.864014 1430.118896 1421.264526 +1573.319824 1560.474609 1538.065796 1551.943237 1575.951782 1588.876099 1597.142456 1613.044312 1631.819702 1655.06604 1674.057373 1688.21582 1700.782593 1719.849243 1741.169556 1757.027466 1763.172119 1768.892578 1775.379639 1778.793945 1787.140381 1796.959717 1798.551392 1795.094727 1787.305786 1779.554321 1770.456665 1756.964722 1747.947754 1747.976685 1753.527954 1757.13916 1765.802124 1767.437866 1759.09668 1747.172363 1734.602417 1724.178223 1716.607544 1718.721802 1721.834229 1720.918701 1716.176025 1708.885132 1710.481812 1713.743896 1714.814697 1717.891113 1719.271606 1724.798828 1731.294189 1736.868286 1741.773804 1747.43103 1756.455933 1762.870361 1767.04248 1763.415283 1754.952637 1745.604614 1747.500366 1747.385986 1743.6521 1733.158325 1731.823486 1738.360962 1742.490479 1747.079224 1741.390991 1754.456177 1759.706177 1758.662964 1755.779541 1754.563477 1751.952637 1747.879028 1744.565552 1740.596191 1737.459595 1741.590942 1741.513794 1732.197021 1722.436401 1713.052368 1703.98938 1693.789917 1687.814575 1682.312988 1691.374268 1706.695801 1716.014893 1724.061401 1730.861938 1725.178955 1706.97583 1689.28772 1684.127563 1693.381836 1709.236572 1725.584961 1735.130615 1728.800171 1713.47644 1695.629883 1695.602539 1698.50708 1703.545288 1697.343018 1681.598022 1671.092041 1669.425537 1681.157349 1692.295288 1703.677734 1709.311401 1707.613403 1703.285767 1696.165161 1689.467529 1685.138672 1673.720337 1669.74707 1659.125 1640.654907 1632.12793 1630.671631 1623.670776 1618.630005 1608.331421 1603.571411 1600.938965 1605.138916 1612.588623 1617.741699 1620.859741 1629.356079 1638.650635 1633.51416 1619.426636 1606.391113 1613.46106 1619.845703 1629.106567 1640.914307 1656.198364 1670.258423 1680.786499 1682.317749 1681.221924 1689.675537 1685.937988 1687.925781 1695.270752 1703.135376 1712.408081 1719.945679 1719.550293 1715.63269 1708.110718 1710.029297 1717.216309 1721.016968 1721.76355 1721.289673 1721.736816 1723.074829 1723.317139 1723.011841 1722.691284 1722.444946 1721.092163 1717.882446 1713.349243 1709.625854 1707.716675 1706.325439 1708.98999 1711.91272 1712.205444 1708.182129 1699.427612 1691.690308 1693.318481 1702.256592 1704.095825 1701.285278 1696.751709 1696.248291 1699.796753 1700.576416 1699.558105 1697.064453 1693.244263 1691.765137 1694.270508 1697.692017 1700.830078 1704.782471 1707.424927 1707.380371 1705.344849 1702.279297 1697.88208 1693.403076 1689.574219 1685.060181 1680.391235 1676.537964 1672.462646 1672.311646 1672.991943 1670.828613 1665.686035 1659.093872 1647.528564 1639.295898 1628.57251 1620.961792 1619.05542 1613.783569 1607.29187 1609.15332 1620.896118 1622.298462 1614.260986 1601.760254 1594.516357 1588.863403 1584.295532 1577.951538 1573.467285 1571.04126 1564.613647 1560.794678 1554.469238 1549.606445 1546.240601 1543.703369 1541.936523 1539.067383 1537.604126 1537.895874 1538.744873 1538.877686 1534.249756 1531.428223 1530.999146 1529.742432 1525.356079 1520.185303 1516.28064 1519.919922 1528.677002 1545.047485 1563.228394 1577.382568 1575.03186 1570.920898 1560.005615 1545.92749 1528.735474 1519.430054 1528.733887 1532.340088 1539.976807 1552.815063 1575.269043 1585.832031 1583.62207 1581.291626 1580.156738 1580.279419 1579.215576 1575.403687 1566.985596 1558.881958 1573.725708 1588.669067 1601.635864 1613.584839 1627.50415 1645.398804 1661.917725 1670.779541 1650.82251 1637.532471 1625.903931 1614.172852 1602.020874 1587.220215 1580.800171 1584.244507 1585.807617 1582.942749 1573.842896 1575.987061 1581.02771 1583.832153 1587.446045 1590.575806 1594.734375 1595.5271 1596.494019 1595.303711 1593.083984 1586.81958 1576.431519 1574.749512 1577.559326 1575.449585 1572.168335 1575.460815 1574.648315 1573.346069 1566.817871 1573.742432 1571.062256 1564.644287 1550.449219 1553.763428 1555.634399 1552.641113 1551.217773 1534.536743 1512.463623 1501.516357 1489.710571 1477.960815 1463.699463 1444.818115 1441.09021 1435.046387 1439.679565 1444.092773 1446.968994 1447.947266 1447.511353 1445.391113 1439.907593 1437.95874 1444.013428 1450.125122 1452.78064 1450.448242 1451.55481 1448.28186 1452.128662 1445.885376 1437.294189 1446.454102 1453.620972 1450.317261 1448.077881 1446.856201 1450.660522 1456.268921 1454.274048 1445.162231 1423.769043 1413.651367 1406.59668 1400.551636 1395.439941 1390.308716 1387.262573 1383.858765 1381.099243 1378.284912 1379.846436 1385.724365 1392.751709 1402.296387 1413.922974 1422.693359 1430.306885 1435.020386 1434.892456 1428.30249 1437.235596 1453.095093 1467.046753 1472.955322 1487.06311 1499.637329 1512.153076 1516.976074 1522.305664 1529.705933 1538.049438 1550.192139 1559.393066 1558.542114 1555.062988 1539.678467 1523.502563 1512.700073 1507.216309 1493.742188 1478.47998 1461.909302 1445.368774 1432.396851 1424.463013 1418.802612 1408.753052 1410.993896 1424.243408 1439.438843 1452.33374 1464.825073 1484.322754 1497.887451 1521.37793 1544.845215 1566.69812 1582.667603 1595.388062 1601.018677 1601.096558 1600.358276 1591.484863 1581.121704 1570.834717 1558.461182 1545.305786 1532.161865 1519.909912 1508.905029 1498.064697 1489.951416 1482.457886 1477.005249 1482.549561 1489.973755 1500.318604 1513.693481 1520.963867 1523.752319 1521.376709 1516.797729 1509.827393 1502.744385 1507.322876 1515.708984 1522.760254 1529.630859 1534.581299 1535.551636 1531.769653 1525.511597 1518.416992 1510.674072 1502.309937 1496.799927 1495.938965 1493.921387 1491.274414 1487.972778 1477.175903 1469.329468 1463.265747 1465.495972 1465.062134 1469.359253 1472.607666 1475.175781 1476.917725 1477.901245 1479.150024 1480.327148 1480.344238 1479.768433 1479.115967 1478.507812 1477.034302 1477.933472 1479.349243 1480.866333 1481.985596 1482.182983 1481.30835 1479.253174 1475.858765 1470.487671 1464.684082 1463.279907 1464.515747 1464.041748 1451.69397 1447.84082 1448.407715 1454.004028 1459.806152 1463.231934 1471.019165 1479.652222 1491.112427 1505.549927 1517.86731 1531.930176 1542.509277 1553.526489 1565.297852 1573.752319 1582.990112 1589.49231 1596.217896 1602.105957 1605.629639 1606.373657 1605.409912 1602.950195 1600.74646 1596.034668 1588.598267 1581.914551 1574.169067 1565.427856 1556.086304 1544.625732 1531.246826 1518.600098 1505.884644 1498.647705 1503.473389 1510.172363 1516.19397 1521.786621 1528.799927 1536.843628 1542.688599 1546.927979 1549.092163 1547.572021 1543.293457 1538.822998 1532.356079 1525.139282 1513.567871 1501.622681 1490.730103 1479.672241 1464.578003 1450.940796 1438.601685 1422.654053 1409.764771 1400.090332 1389.592041 1380.595825 1375.368652 1382.822632 1387.161133 1388.640015 1391.408203 1400.210327 1409.341187 1418.212891 1423.048462 1418.177246 1404.868164 1389.782227 1378.141113 1377.671753 1390.236694 1407.010376 1428.666748 1434.095703 1431.526123 1425.595459 1430.87561 1444.337524 1455.712646 1466.194214 1477.168945 1479.614014 1477.936401 1477.157227 1470.30957 1462.470947 1464.745972 1468.44165 1470.359375 1466.969604 1459.249268 1449.782837 1438.831055 1450.187134 1463.315063 1469.522949 1471.225586 1470.130493 1468.344238 1463.659424 1460.737793 1455.575073 1453.166992 1450.286743 1445.294067 1435.622437 1438.747559 1451.780396 1458.446899 1463.234253 1465.969849 1466.211426 1462.785278 1450.442139 1439.056519 1430.01416 1419.744507 +1585.267822 1567.266968 1546.004028 1545.829346 1572.328491 1584.842773 1594.001465 1605.390259 1623.147095 1639.344482 1660.433716 1682.962158 1699.7948 1719.986694 1742.33728 1760.180786 1768.598877 1779.803833 1791.661621 1799.814087 1804.042969 1806.863281 1797.957153 1789.994629 1779.682617 1770.395508 1757.293213 1746.272339 1732.968262 1730.567505 1733.976562 1743.963867 1754.389893 1753.899658 1747.736694 1737.262329 1724.790527 1715.43396 1707.056152 1705.925659 1710.153564 1707.306396 1704.418335 1699.400757 1702.324829 1704.762451 1706.325439 1710.837036 1719.504395 1726.317871 1733.616211 1741.448486 1749.940918 1755.595581 1759.930786 1766.052979 1769.446777 1765.486328 1757.846558 1745.829834 1735.004517 1735.93335 1745.063232 1739.77832 1731.950317 1729.365845 1728.941528 1733.065308 1733.764038 1752.553711 1758.867188 1758.142578 1756.599487 1752.100586 1744.919678 1743.103027 1741.560303 1739.686523 1738.264893 1741.268921 1738.488037 1730.624512 1719.648315 1706.937744 1699.682495 1693.539917 1689.950806 1693.383057 1699.318481 1714.990234 1728.559692 1735.9552 1735.262817 1723.46814 1707.878784 1692.097656 1697.454468 1706.428833 1713.910522 1725.643921 1735.238647 1729.178223 1712.785889 1710.596436 1711.259888 1712.286255 1714.960327 1702.635498 1689.201904 1680.454712 1677.240356 1684.714478 1696.068848 1700.542236 1701.257935 1698.739136 1699.160767 1697.166748 1688.056885 1679.467041 1668.219971 1657.061523 1647.948975 1633.234253 1622.329834 1619.70459 1615.17395 1609.002441 1604.720947 1603.64502 1603.918701 1607.219116 1614.466553 1622.228271 1632.840088 1642.706665 1653.521484 1647.56543 1631.740356 1610.90332 1610.164795 1616.12561 1622.094604 1631.852905 1643.790405 1657.812012 1664.352295 1666.621948 1669.759888 1676.289917 1676.277832 1679.805542 1686.335693 1691.402954 1701.516846 1709.074463 1708.76001 1708.626953 1701.396118 1695.600952 1706.132446 1716.017456 1720.411255 1716.553101 1716.936157 1719.726318 1722.371948 1721.907349 1721.559814 1722.312378 1722.391235 1721.409058 1719.764404 1715.76416 1712.325317 1711.493408 1712.609253 1714.833252 1719.52063 1717.347778 1709.491333 1702.59314 1701.920166 1709.143311 1709.318481 1707.777466 1705.058105 1703.210938 1703.568604 1703.408569 1702.216431 1700.320557 1697.428467 1696.518311 1699.577271 1703.333008 1706.462158 1709.439453 1711.704102 1711.916138 1710.469482 1707.618408 1703.601318 1698.403931 1694.581787 1690.997192 1686.188477 1683.296997 1680.543701 1679.052612 1677.761963 1674.756592 1669.867432 1660.447754 1648.144531 1637.093384 1629.978027 1625.456177 1616.440674 1607.24707 1600.243774 1599.713257 1609.242432 1613.752075 1609.556396 1600.495972 1593.400024 1588.23645 1580.599243 1570.593872 1564.868896 1558.513672 1553.385254 1548.866089 1547.458008 1545.578125 1543.277222 1542.79541 1543.884399 1544.387817 1544.484253 1545.453125 1545.252808 1543.988525 1537.823242 1537.120728 1536.613159 1535.394165 1530.41626 1524.328613 1519.324951 1513.96228 1518.668701 1529.286743 1551.158447 1562.734741 1558.851929 1552.608032 1548.846802 1539.165405 1523.700806 1514.053467 1524.515869 1524.986328 1537.474609 1554.88916 1572.539673 1579.349609 1579.760742 1575.195801 1573.763062 1573.222412 1570.432007 1565.224121 1557.242188 1556.393799 1577.088501 1588.283936 1600.258179 1611.652344 1623.555054 1643.155518 1660.746826 1669.143677 1648.418823 1635.997925 1625.188843 1614.766724 1604.335693 1590.408813 1572.781738 1575.717651 1577.677124 1577.172363 1571.619873 1571.039307 1572.407959 1579.02832 1582.969116 1591.466309 1601.282593 1614.426147 1618.960815 1613.782349 1606.561157 1599.703369 1594.127808 1594.117554 1592.645508 1587.990234 1584.363281 1581.340088 1576.899292 1576.237915 1576.966675 1576.690308 1575.25708 1567.067261 1562.172974 1563.952271 1563.503906 1559.0979 1549.558472 1536.225952 1517.064453 1506.946167 1501.474121 1494.66272 1478.702515 1466.157349 1466.281494 1460.411377 1453.643555 1439.855347 1435.59668 1436.149536 1429.114136 1429.049072 1428.8927 1430.859009 1432.193604 1432.780884 1433.645752 1433.92334 1437.446167 1435.154907 1437.313354 1435.919678 1425.96936 1437.667358 1441.017944 1436.638184 1437.030762 1437.088745 1438.126953 1443.57959 1443.167725 1436.03064 1423.757202 1414.816406 1405.210083 1398.140137 1392.14978 1388.42749 1385.725708 1381.158447 1380.577271 1378.701172 1381.715698 1387.366577 1399.45166 1415.619873 1426.980835 1436.51123 1444.100586 1449.475708 1450.686401 1446.055054 1447.477051 1462.915527 1472.656128 1484.932129 1499.123413 1512.550171 1518.793945 1522.061646 1529.31897 1538.967896 1547.873169 1561.9729 1590.303345 1578.473633 1558.565063 1542.606323 1525.967773 1519.528687 1515.384766 1503.901978 1487.752197 1468.506958 1451.331299 1436.916382 1425.656006 1420.414551 1412.480713 1411.159912 1423.49939 1438.797974 1451.724854 1463.289795 1482.497437 1496.502808 1517.171143 1542.376343 1559.559082 1576.359253 1589.624268 1598.035522 1599.355835 1597.314941 1590.326416 1580.941162 1570.957642 1560.123291 1547.678711 1535.210693 1522.509277 1511.722656 1501.612915 1492.573242 1485.615845 1482.310425 1486.937256 1494.870728 1505.387695 1516.974976 1525.319092 1528.616577 1527.231323 1522.236938 1514.299072 1512.518311 1514.233032 1522.870972 1530.572632 1538.12793 1544.250854 1544.868164 1541.744385 1536.20459 1524.980713 1515.77063 1508.515747 1505.134521 1503.703369 1499.954102 1495.15332 1489.21167 1478.152222 1470.752075 1475.176392 1474.454834 1471.34082 1472.558838 1476.067261 1479.946411 1483.042725 1485.907349 1487.784546 1489.271973 1489.550537 1489.1427 1488.596436 1487.785522 1487.529297 1487.970337 1488.326782 1488.960693 1489.955566 1490.57312 1489.628784 1486.858643 1481.464722 1475.73938 1467.515625 1464.40332 1465.787354 1461.885376 1450.314453 1447.788818 1452.194092 1459.72998 1465.871216 1470.368774 1475.422363 1485.225098 1495.948486 1507.316528 1517.630615 1527.791626 1541.619507 1554.151733 1565.882812 1576.562012 1586.826538 1593.384399 1601.442139 1609.905518 1620.741699 1622.161377 1613.757446 1607.052246 1600.063721 1592.467285 1584.314697 1578.855957 1572.238647 1563.714722 1553.890503 1542.430298 1529.369873 1515.91333 1506.087769 1505.73999 1512.656494 1519.035889 1525.063721 1534.015625 1540.505981 1546.611328 1550.98645 1553.316895 1552.990601 1551.009644 1542.766479 1533.987183 1525.784546 1516.000854 1503.4823 1490.76123 1478.862549 1466.659546 1455.427612 1442.735474 1429.928955 1413.950439 1400.938477 1390.862671 1384.623657 1378.331543 1376.710571 1388.486084 1393.177856 1396.898315 1404.234497 1411.875977 1423.817993 1432.741821 1429.66748 1412.974121 1396.708618 1384.930542 1379.910889 1391.219971 1406.007812 1419.360474 1435.217773 1442.909302 1442.107788 1436.069092 1435.052368 1440.5 1454.172241 1465.866089 1478.461182 1481.792358 1482.069214 1479.956543 1474.238647 1468.507935 1471.67627 1476.448364 1476.243774 1472.700928 1464.082764 1453.625854 1446.415771 1450.46521 1464.272339 1474.27417 1475.87915 1473.339111 1471.589844 1467.868408 1464.113892 1462.24353 1459.462402 1455.474121 1451.298096 1439.448608 1439.83606 1453.173828 1462.036987 1466.534546 1468.244385 1467.566772 1461.366821 1449.615479 1437.276611 1427.517944 1415.152222 +1590.764282 1568.764038 1547.642578 1546.040649 1575.24585 1586.017822 1596.582031 1611.416748 1626.713379 1649.858154 1675.252319 1694.803833 1711.845337 1724.205688 1745.1698 1762.167969 1775.119507 1784.921631 1795.040527 1809.915771 1817.262695 1803.281128 1790.169434 1780.64978 1767.660278 1753.478271 1745.827515 1736.885254 1722.745728 1715.868896 1722.450684 1731.629395 1741.528076 1741.078491 1735.161987 1724.849609 1715.461426 1708.738525 1699.894287 1696.308472 1697.547241 1696.392578 1692.055298 1692.421875 1703.230103 1713.778076 1716.566284 1717.4646 1718.273071 1726.657837 1736.733887 1747.477417 1757.70813 1758.965576 1763.987183 1769.694458 1769.522827 1764.025879 1758.272339 1748.449463 1735.371582 1729.353271 1732.370605 1744.767944 1738.469727 1728.632324 1717.470215 1723.501343 1735.697266 1748.317383 1755.648682 1758.067139 1757.639038 1754.28772 1747.022583 1743.44165 1741.359497 1738.279907 1735.778442 1734.657349 1732.992432 1724.446777 1713.064575 1704.944458 1698.349731 1694.866821 1693.387695 1701.838135 1717.540039 1728.415894 1738.814819 1745.154175 1731.669556 1721.346558 1706.701294 1697.350952 1712.797119 1721.819946 1729.365845 1733.779297 1738.501831 1731.649658 1724.15979 1728.277832 1724.495483 1721.681885 1717.199707 1703.150757 1691.591675 1681.83606 1684.832275 1693.84314 1703.980103 1699.161987 1693.387329 1688.394409 1694.739258 1691.650146 1679.692993 1666.774414 1661.83313 1648.811646 1634.744385 1625.381958 1619.073242 1615.513184 1611.675781 1606.745117 1605.384033 1611.309692 1611.506226 1607.849609 1616.865601 1629.943726 1642.556641 1654.020996 1664.780762 1655.71875 1637.159424 1621.947754 1609.49585 1612.592041 1618.1604 1623.27417 1635.294556 1649.10498 1652.627319 1654.74585 1656.465332 1662.746582 1666.616821 1671.205444 1676.779419 1680.261475 1690.180908 1697.591064 1695.342407 1694.632446 1690.859009 1689.563232 1702.909302 1711.734863 1710.010864 1705.999146 1707.343262 1711.974609 1715.403564 1716.549805 1720.322144 1721.943115 1722.544922 1722.574707 1721.512817 1719.841187 1716.734009 1716.079956 1716.468628 1717.184204 1720.090332 1720.40625 1715.875977 1711.192505 1709.41626 1710.588989 1710.336426 1709.8479 1708.988647 1707.627563 1706.911621 1706.202637 1705.114868 1703.411377 1703.254272 1704.472778 1706.214966 1708.557007 1710.716309 1713.313599 1715.962769 1718.192627 1717.667725 1713.111816 1708.937378 1703.980103 1699.626099 1696.970581 1695.135132 1690.820312 1686.672485 1684.445557 1682.548218 1677.704834 1670.400635 1660.19043 1647.89502 1635.580322 1630.224121 1625.713989 1620.365356 1610.187256 1599.462158 1591.417847 1595.851074 1597.709473 1595.902588 1593.872314 1589.401978 1587.033447 1579.609619 1566.996948 1558.434204 1549.978394 1548.313477 1547.975708 1547.126099 1547.701782 1547.863892 1551.611084 1553.927002 1553.924438 1553.816528 1554.319702 1553.082275 1551.848877 1551.97876 1548.377441 1544.795044 1542.428711 1539.124023 1532.699463 1524.875 1517.292603 1511.455933 1519.555176 1531.584839 1542.684692 1541.698486 1536.250732 1537.055786 1528.783936 1519.103149 1511.474487 1515.394775 1523.969116 1537.277344 1550.79895 1564.875977 1575.796387 1581.942383 1577.414307 1572.432129 1562.924316 1559.605469 1555.060913 1547.22644 1560.826538 1575.040649 1583.426025 1592.99231 1605.942627 1619.454224 1637.667358 1655.295654 1662.881226 1648.007324 1635.416382 1624.456299 1613.991211 1602.66394 1590.3927 1575.19812 1564.558472 1570.471924 1570.617676 1566.996948 1562.557861 1571.398315 1577.423218 1583.204102 1592.807739 1608.813965 1625.462036 1629.311035 1625.690063 1621.024902 1613.049927 1610.657715 1605.447754 1599.58728 1591.853638 1586.038208 1578.244019 1573.4823 1574.642578 1576.846191 1576.714111 1575.453003 1571.968628 1571.595337 1569.906982 1566.400879 1560.77832 1552.396362 1537.027466 1526.346191 1519.59375 1512.816162 1502.995117 1491.747559 1493.401611 1485.022217 1474.729492 1464.553589 1457.558716 1450.779907 1442.476318 1429.466309 1425.499146 1422.940674 1420.35083 1422.238159 1419.90979 1420.626465 1422.348511 1423.691162 1424.974243 1425.576294 1423.131592 1413.340454 1424.875366 1427.446411 1425.344116 1427.829102 1425.108032 1426.398804 1429.381836 1428.785278 1424.766724 1418.890259 1411.854248 1401.622192 1394.690918 1389.400757 1386.771362 1384.860718 1381.114258 1380.823242 1381.120117 1383.096069 1387.772339 1408.921631 1427.952271 1442.123413 1448.747681 1452.680542 1459.314331 1462.197388 1460.806641 1458.837769 1467.057739 1477.505249 1490.667236 1506.040405 1516.558105 1523.831299 1529.151367 1534.132446 1542.725098 1557.347534 1571.644897 1603.214233 1579.553711 1556.897949 1543.085938 1527.757202 1522.232422 1519.244751 1510.460693 1494.925293 1475.386841 1456.262085 1442.000244 1427.301025 1421.78772 1416.033325 1411.382202 1422.089111 1437.829468 1450.763184 1461.862183 1480.079834 1495.114258 1513.019775 1537.165527 1556.390259 1572.240479 1584.444946 1591.257568 1593.453735 1593.133789 1589.604614 1582.236572 1571.669312 1563.517822 1550.83728 1536.851807 1523.952393 1513.941895 1503.559204 1494.73584 1487.428711 1485.220947 1490.375244 1499.731079 1510.510986 1520.812988 1528.54895 1534.3927 1535.198608 1530.633545 1522.085693 1521.918823 1523.724731 1530.495483 1538.744507 1548.913574 1552.606934 1552.241089 1548.492432 1542.036743 1533.229858 1521.979004 1513.969849 1513.881104 1510.449585 1504.216797 1497.014893 1488.938721 1478.411743 1479.944458 1482.358765 1477.430176 1474.415771 1476.032104 1480.646484 1485.520874 1489.512451 1492.541748 1494.63916 1496.831787 1497.649414 1498.355835 1498.689697 1499.091553 1499.517456 1499.762207 1499.3927 1500.051514 1501.311646 1501.161011 1498.847778 1492.72644 1485.45105 1479.079712 1473.497681 1469.250244 1465.329712 1455.937256 1449.011475 1449.728394 1456.973145 1464.842041 1469.437622 1474.558472 1483.800537 1495.599854 1507.007935 1517.828491 1527.754395 1534.012817 1543.096313 1553.546021 1564.691528 1576.416992 1587.226318 1595.167969 1605.225586 1616.939941 1624.402588 1619.841309 1612.539185 1604.222656 1596.07019 1587.720581 1581.051758 1575.663818 1568.546021 1560.793823 1550.71936 1537.972168 1526.495239 1513.028076 1509.429688 1511.860596 1520.376221 1528.718262 1537.970093 1544.954102 1551.171875 1555.383301 1558.662109 1559.297729 1553.864502 1547.881592 1537.690552 1527.94458 1518.700562 1507.363525 1494.445923 1480.559448 1466.415527 1457.322754 1447.657593 1434.669189 1421.580078 1408.585205 1396.771729 1386.96936 1380.656738 1376.564819 1383.966309 1395.180908 1399.818481 1405.781738 1413.869385 1424.429688 1438.458862 1440.432861 1425.218506 1406.35498 1389.564941 1382.551514 1386.519897 1396.228516 1414.517944 1431.26709 1441.144775 1448.68689 1451.130859 1447.199219 1446.522217 1444.334106 1450.86377 1464.296143 1478.790283 1485.598633 1486.649536 1483.302124 1479.133057 1474.283691 1477.118896 1479.269653 1478.998535 1477.307251 1467.793823 1456.027466 1449.032593 1451.101807 1466.556885 1478.193848 1479.432495 1476.796387 1476.293457 1474.748169 1469.67041 1466.996216 1464.914917 1458.4021 1451.174072 1442.302856 1444.473755 1455.401123 1464.346558 1469.658325 1471.157349 1468.174194 1459.717651 1447.289551 1435.443726 1423.713989 1409.904663 +1593.964355 1575.824951 1552.411133 1546.606934 1573.116455 1586.70105 1597.437256 1613.45813 1628.324829 1654.761963 1681.332886 1701.987671 1716.505615 1732.240723 1752.061523 1764.268677 1772.412476 1779.890259 1785.961548 1797.806152 1806.564331 1797.621948 1781.46814 1767.726074 1754.084961 1746.303467 1736.728027 1725.196289 1713.341675 1699.977661 1708.077881 1720.410156 1728.134888 1728.655396 1721.130371 1713.006958 1705.098145 1696.686768 1689.068237 1684.775757 1684.373291 1681.23999 1686.423096 1706.417358 1720.78186 1729.695923 1735.508057 1736.606445 1730.304932 1728.923828 1735.473511 1743.050781 1746.045044 1755.797974 1763.532227 1769.333862 1766.62854 1758.069214 1757.438965 1747.730835 1736.236328 1726.68335 1721.921631 1732.320068 1745.642456 1734.00769 1718.959595 1718.603027 1732.722778 1743.227905 1746.233521 1757.604004 1758.34729 1755.998657 1749.965942 1744.936768 1741.247192 1737.508057 1732.286377 1730.86377 1723.241089 1717.643188 1713.623901 1712.996704 1709.506104 1701.19165 1693.606934 1703.402222 1723.090088 1738.659058 1745.945557 1745.179321 1731.516235 1721.95166 1708.022339 1707.65271 1720.750244 1733.452759 1739.241821 1744.336914 1744.960327 1739.682251 1738.833008 1736.234131 1730.699219 1718.700928 1707.698364 1700.450195 1694.533569 1693.283813 1695.630249 1706.566406 1710.07312 1699.853516 1687.574585 1680.246826 1683.382446 1686.551758 1675.592773 1658.993164 1649.02832 1645.636353 1630.812988 1620.064575 1616.163696 1612.942993 1609.598022 1605.595581 1614.916016 1621.238281 1619.675293 1609.517822 1619.129028 1635.560425 1647.204834 1662.947754 1673.263306 1657.744629 1645.374756 1635.46936 1625.335449 1611.843994 1615.888916 1619.482178 1627.589111 1635.998169 1638.863892 1643.62915 1648.198608 1653.020874 1657.970947 1662.149414 1666.991333 1670.932983 1680.621704 1685.534058 1683.025635 1682.051514 1678.932617 1688.329224 1704.6427 1710.401978 1702.685181 1696.810791 1700.743652 1703.987305 1705.229248 1710.853149 1718.344482 1721.38147 1722.911743 1723.130737 1722.795044 1721.415039 1719.693481 1719.787354 1719.830444 1718.354736 1717.583984 1717.946899 1715.230347 1712.148071 1711.009521 1710.66333 1709.317139 1709.695068 1709.517334 1708.685181 1708.706177 1708.770874 1708.055786 1706.229004 1706.647095 1708.686523 1709.833496 1711.268555 1713.501587 1716.770996 1719.488525 1721.27478 1721.27124 1716.897095 1711.201172 1706.240967 1702.172485 1699.08606 1698.090454 1695.505981 1690.963501 1687.650879 1685.516846 1680.390137 1669.864624 1658.731934 1645.673584 1636.211792 1629.09668 1624.856567 1621.52832 1610.664429 1597.055176 1584.176392 1582.850952 1583.064575 1579.846802 1581.452515 1581.169312 1576.10376 1564.276367 1557.751709 1553.338379 1554.136108 1557.046387 1558.20166 1558.985718 1558.022461 1557.014038 1563.672729 1566.259277 1563.736572 1563.881348 1564.287354 1562.148804 1561.248535 1560.981079 1558.074707 1553.38623 1549.401367 1545.525391 1539.14502 1529.82312 1521.076538 1514.279663 1509.746338 1517.373657 1525.085083 1526.302124 1523.616577 1522.478516 1517.687012 1512.742188 1508.894897 1511.452881 1522.239624 1532.009277 1540.914795 1555.931519 1575.238403 1588.131958 1587.187988 1576.082397 1564.816895 1555.787109 1547.029907 1545.765869 1558.032227 1568.646362 1578.555298 1591.994141 1606.4729 1618.598511 1635.556519 1652.325562 1657.953979 1647.223633 1633.923706 1622.696533 1610.860352 1598.327148 1587.025879 1574.96228 1559.10437 1561.915894 1563.394531 1561.723267 1558.970459 1568.653809 1575.791748 1580.1073 1590.176147 1607.439819 1626.233032 1634.7229 1627.180908 1622.266235 1612.023071 1607.787964 1602.28125 1595.477539 1586.616943 1579.142578 1569.174927 1568.022949 1572.075439 1575.806274 1575.051758 1573.418457 1574.955811 1575.19043 1574.413086 1570.581055 1564.515869 1556.147949 1550.847534 1545.770752 1536.772949 1526.922729 1513.223267 1518.536865 1510.236816 1493.857178 1483.077271 1476.182373 1471.035156 1462.248535 1448.123291 1442.78894 1438.461548 1430.864502 1430.659424 1422.274414 1415.879028 1413.455322 1413.021484 1414.092041 1414.193604 1415.518066 1414.512939 1406.596802 1410.744385 1412.207275 1418.717896 1418.89978 1419.337646 1416.197021 1415.962769 1416.513062 1414.415649 1409.123169 1404.970825 1397.342285 1391.046631 1386.728271 1385.673218 1384.445923 1380.953613 1380.581787 1382.02124 1384.107056 1389.883667 1415.73584 1440.451904 1453.107178 1456.846436 1462.275635 1465.890259 1469.785889 1473.339355 1471.604248 1472.641968 1478.73877 1489.624756 1504.966797 1515.110474 1524.630615 1534.041626 1540.648804 1548.158569 1561.818359 1576.791382 1604.639771 1579.212646 1560.419312 1546.302856 1533.261719 1528.01416 1524.900024 1513.005859 1498.841553 1478.938843 1460.296265 1445.407837 1430.379639 1422.859619 1417.660278 1411.450317 1421.414307 1436.271851 1449.83667 1460.54895 1476.980957 1493.768188 1508.253174 1527.55603 1546.431641 1561.875488 1575.060303 1581.9021 1585.661377 1587.418945 1587.532349 1583.223145 1574.864624 1565.765259 1553.518188 1537.695801 1525.410767 1515.881836 1505.780884 1496.840698 1489.079956 1486.136963 1492.719482 1502.271729 1513.849121 1522.833008 1532.102783 1538.928955 1541.583862 1539.742188 1529.798828 1528.185913 1531.971069 1537.177124 1547.814575 1555.858398 1559.395386 1559.045898 1553.282104 1546.338745 1538.648071 1529.358765 1523.472412 1521.096069 1515.655151 1507.263794 1496.470337 1486.641968 1482.450684 1489.310547 1491.322144 1485.767456 1480.530273 1482.125122 1485.527466 1490.896729 1496.154663 1499.747559 1501.89209 1505.700439 1507.059814 1508.22998 1508.884521 1509.727905 1510.495239 1510.673706 1510.687866 1510.831665 1510.876343 1510.866455 1507.512451 1498.200073 1488.752808 1479.955933 1473.551514 1468.087646 1462.083984 1451.876709 1449.661255 1452.891724 1462.212769 1467.492676 1472.394287 1479.583984 1490.298218 1502.283569 1514.933594 1526.253906 1536.123901 1545.977173 1556.145752 1563.593506 1568.97937 1577.503662 1585.994751 1595.17041 1604.970947 1613.852051 1620.383423 1616.317261 1608.390747 1599.444458 1591.744141 1584.129883 1578.045776 1572.148071 1563.885376 1555.957397 1544.634155 1532.926636 1523.347534 1512.659058 1516.064453 1522.002441 1531.438965 1541.171143 1548.211304 1554.613403 1559.999878 1563.418213 1564.271362 1560.547729 1550.461304 1542.466675 1532.039795 1521.17334 1511.880737 1497.585205 1485.710327 1470.958618 1458.918701 1450.568726 1439.819092 1427.102539 1414.053711 1402.899414 1392.436401 1383.815063 1378.307373 1381.707153 1391.134033 1403.129272 1409.785645 1418.473999 1426.819092 1438.786133 1444.998779 1438.090088 1421.266602 1397.787964 1386.793579 1392.140137 1397.818726 1401.014282 1411.73645 1422.623535 1442.506836 1452.529541 1457.665039 1457.490479 1458.938843 1459.254028 1453.199219 1461.870117 1478.767578 1488.164062 1489.821411 1487.290039 1483.712036 1480.209351 1481.600098 1482.00354 1480.365234 1477.628662 1470.080444 1460.599976 1453.296997 1452.744751 1467.668335 1479.848022 1483.032104 1482.307007 1480.731323 1478.599976 1476.207397 1473.016235 1465.529785 1458.033691 1450.157227 1445.130737 1448.144165 1458.628906 1467.038818 1472.666382 1475.700317 1468.077026 1456.960815 1443.072998 1431.187378 1419.129395 1405.508667 +1604.155518 1584.924561 1560.772339 1544.230713 1565.018311 1582.950806 1594.46936 1611.5625 1624.815186 1649.881592 1680.040405 1703.897705 1718.821777 1734.640747 1749.270386 1754.84375 1756.770264 1759.332153 1768.68457 1783.323608 1797.709106 1793.935059 1773.588501 1759.167725 1744.608765 1735.665405 1728.574585 1717.513916 1704.374512 1692.33606 1694.130859 1707.978149 1713.644653 1713.585205 1708.113037 1701.502197 1693.328247 1685.457642 1678.722412 1674.098877 1675.090942 1686.834351 1703.937256 1720.247314 1731.376709 1743.472168 1749.243164 1750.077515 1743.317017 1735.387085 1738.363037 1743.553955 1746.975952 1756.466431 1761.49292 1767.973022 1763.297607 1753.817993 1747.05835 1745.129272 1736.12915 1725.871948 1717.482666 1723.178345 1740.295288 1734.23877 1717.111816 1713.500488 1724.314575 1731.608887 1742.993774 1754.255371 1759.236694 1756.965942 1751.172119 1745.347534 1741.384277 1737.770752 1733.734985 1730.504761 1727.1521 1726.49353 1726.613647 1726.298706 1718.105591 1706.029175 1695.648926 1702.814453 1720.652588 1739.758667 1747.146484 1746.561768 1738.375 1729.0802 1716.194946 1711.064087 1723.361084 1733.597412 1743.226318 1747.790771 1748.364746 1746.704956 1746.1073 1741.03418 1730.590942 1721.904419 1716.091187 1708.619629 1708.347534 1702.857544 1702.414795 1709.758179 1707.332153 1697.925903 1685.456543 1674.62085 1673.779297 1680.29187 1674.269043 1659.957764 1642.72522 1632.088501 1624.394531 1618.29541 1612.818726 1609.217529 1607.077271 1617.567993 1628.845825 1634.904541 1628.796143 1616.149414 1617.453369 1633.913574 1648.97876 1665.257202 1676.007568 1668.319702 1655.646362 1645.50647 1634.98999 1622.122681 1614.520508 1617.607666 1620.525757 1625.974609 1628.766235 1632.395996 1638.028687 1644.956543 1647.994019 1652.240723 1657.088989 1662.557495 1670.214111 1673.244751 1672.629517 1669.041748 1680.281372 1695.396973 1707.208008 1706.883667 1694.832275 1691.896118 1695.403809 1699.093506 1704.237915 1710.036255 1716.265259 1720.294678 1723.483765 1724.218018 1724.040894 1723.283447 1722.1427 1721.405884 1720.954346 1716.99939 1710.81897 1707.648682 1708.395996 1710.293091 1710.727661 1709.973633 1707.190186 1707.783325 1708.699097 1705.677979 1708.449951 1709.357422 1709.161621 1708.669434 1708.946655 1709.691895 1710.165527 1711.593994 1714.092896 1717.891235 1721.14978 1721.190308 1721.287476 1716.733154 1710.825195 1705.543335 1699.610229 1697.194336 1695.900391 1692.941284 1689.048584 1686.509277 1685.715332 1678.868652 1666.318481 1651.809692 1640.484741 1631.987183 1622.356201 1615.13208 1607.96106 1598.275635 1587.927002 1576.003418 1571.31311 1570.244995 1569.016479 1569.34021 1565.2052 1560.504883 1557.110474 1556.901978 1559.626587 1564.845459 1570.901367 1573.828979 1573.799805 1569.137329 1568.71582 1577.255371 1577.441772 1576.162109 1574.983154 1572.748657 1570.813721 1570.118774 1568.771118 1566.123901 1562.078613 1557.676025 1551.820312 1543.503906 1531.601196 1522.503784 1518.318848 1515.136841 1508.240112 1509.698608 1514.359741 1515.478394 1513.97168 1510.682739 1507.923828 1506.504395 1509.853271 1515.234375 1521.498291 1539.021973 1555.264282 1575.530884 1588.67041 1583.712158 1574.433594 1565.45105 1556.24292 1546.131226 1544.025879 1553.025146 1563.382568 1577.103271 1590.141602 1605.353027 1618.547607 1636.625977 1651.162964 1653.51123 1645.016479 1629.913452 1618.111572 1605.026123 1592.95105 1581.933716 1568.878418 1551.248535 1553.909668 1555.729858 1551.732422 1553.494507 1561.890747 1569.282227 1576.406738 1593.403809 1606.637451 1622.6698 1634.912231 1621.291626 1616.273071 1606.562622 1596.122803 1591.448242 1585.446045 1578.348022 1570.973267 1562.56958 1561.498535 1561.837646 1568.950684 1570.380981 1572.340332 1574.888916 1574.711792 1575.344849 1574.115967 1569.65332 1564.791626 1563.369385 1557.141479 1546.523682 1535.668823 1532.679321 1533.975708 1523.822021 1502.988647 1497.843018 1489.268677 1480.523315 1470.726929 1463.002563 1459.164062 1446.827759 1447.072632 1438.56189 1432.291504 1427.26709 1421.994263 1423.456299 1415.422974 1416.177612 1414.604736 1410.1521 1404.193604 1402.253174 1400.997925 1403.390625 1409.092285 1411.982422 1409.372192 1407.474609 1407.522705 1406.75 1401.12085 1398.159424 1392.973755 1387.712036 1385.731812 1385.069824 1384.13208 1380.839355 1380.574951 1382.977417 1383.982056 1393.634766 1422.252686 1449.722656 1454.62854 1458.516479 1463.299072 1467.884277 1472.750854 1477.031006 1479.858887 1482.779907 1488.677124 1497.377563 1504.918457 1514.103027 1521.724609 1532.721802 1541.359131 1552.226562 1569.852905 1592.088257 1600.096191 1579.841431 1560.5802 1547.364258 1536.272095 1530.994263 1525.976318 1512.749512 1500.615356 1480.437866 1463.307251 1446.11438 1433.712158 1423.606323 1415.951904 1412.817139 1420.783569 1433.545654 1448.623901 1459.149658 1474.537109 1491.392334 1505.168823 1519.067261 1534.270874 1545.540527 1556.77002 1567.977783 1577.095825 1580.718994 1582.421021 1580.305298 1575.080322 1566.403809 1554.814209 1537.526978 1526.047485 1516.611084 1507.534302 1499.26062 1491.126709 1487.642212 1493.917969 1503.068359 1514.173828 1523.229736 1532.839722 1541.187988 1547.97583 1548.174316 1540.485229 1535.779785 1540.622681 1544.086426 1551.061646 1562.691162 1565.906494 1565.040405 1560.114746 1552.503296 1546.017944 1540.280884 1533.866943 1526.042236 1518.898193 1508.90625 1495.139648 1486.171143 1491.176147 1498.864014 1499.515747 1491.456421 1486.731934 1489.667603 1492.070557 1498.550659 1503.47168 1507.615234 1511.486694 1517.0 1518.658447 1519.65686 1520.451172 1521.506836 1523.352661 1524.266724 1525.22229 1524.569946 1523.634033 1519.782837 1511.042358 1500.637329 1489.966797 1479.059082 1472.598145 1466.679077 1458.886475 1450.903931 1451.061279 1458.215454 1465.610718 1469.829102 1474.335815 1485.746094 1497.450195 1509.983032 1520.027954 1532.416016 1544.990112 1556.588623 1565.589111 1571.429443 1575.776855 1581.803833 1587.19397 1594.364746 1601.774414 1608.359131 1613.020874 1612.506592 1605.643311 1596.678833 1588.098999 1580.953613 1574.500488 1565.69519 1559.854004 1550.82019 1541.047485 1534.076782 1524.242676 1521.211304 1527.083374 1533.030273 1541.263794 1549.513794 1557.352783 1564.057983 1570.227661 1570.46167 1564.661499 1557.091919 1545.979736 1537.317261 1525.016235 1514.217285 1501.573486 1488.603516 1476.057129 1463.87561 1451.901123 1443.754395 1432.591187 1418.697876 1406.774536 1396.413696 1388.185425 1383.300049 1384.326782 1394.243408 1401.948975 1411.831055 1422.312744 1432.327271 1440.61084 1449.933716 1449.343262 1434.272217 1416.629639 1392.560303 1391.552246 1399.692383 1408.603271 1415.782227 1419.001221 1420.315186 1428.082031 1447.250732 1459.584106 1466.188599 1467.557007 1472.03064 1470.270386 1463.767334 1477.853149 1488.562012 1491.771729 1491.343994 1488.249268 1485.612061 1485.850586 1485.096924 1481.820923 1477.950806 1470.568115 1462.759766 1459.13916 1457.376953 1468.034912 1480.632568 1488.134155 1487.796875 1484.931641 1481.999146 1478.807129 1472.262573 1463.109009 1460.030273 1456.049561 1448.951538 1450.983643 1461.709229 1469.976196 1476.271606 1476.971558 1466.439941 1452.795654 1437.502808 1427.490845 1413.876587 1401.396362 diff --git a/extras/deploy/testdataset/elevation.prj b/extras/deploy/testdataset/elevation.prj index 77d7b63f3..7e4267361 100644 --- a/extras/deploy/testdataset/elevation.prj +++ b/extras/deploy/testdataset/elevation.prj @@ -1,21 +1,21 @@ -PROJCS["NAD27 / UTM zone 13N", - GEOGCS["NAD27", - DATUM["North American Datum 1927", - SPHEROID["Clarke 1866", 6378206.4, 294.9786982138982, AUTHORITY["EPSG","7008"]], - TOWGS84[-4.2, 135.4, 181.9, 0.0, 0.0, 0.0, 0.0], - AUTHORITY["EPSG","6267"]], - PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], - UNIT["degree", 0.017453292519943295], - AXIS["Geodetic longitude", EAST], - AXIS["Geodetic latitude", NORTH], - AUTHORITY["EPSG","4267"]], - PROJECTION["Transverse_Mercator"], - PARAMETER["central_meridian", -105.0], - PARAMETER["latitude_of_origin", 0.0], - PARAMETER["scale_factor", 0.9996], - PARAMETER["false_easting", 500000.0], - PARAMETER["false_northing", 0.0], - UNIT["m", 1.0], - AXIS["Easting", EAST], - AXIS["Northing", NORTH], +PROJCS["NAD27 / UTM zone 13N", + GEOGCS["NAD27", + DATUM["North American Datum 1927", + SPHEROID["Clarke 1866", 6378206.4, 294.9786982138982, AUTHORITY["EPSG","7008"]], + TOWGS84[-4.2, 135.4, 181.9, 0.0, 0.0, 0.0, 0.0], + AUTHORITY["EPSG","6267"]], + PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], + UNIT["degree", 0.017453292519943295], + AXIS["Geodetic longitude", EAST], + AXIS["Geodetic latitude", NORTH], + AUTHORITY["EPSG","4267"]], + PROJECTION["Transverse_Mercator"], + PARAMETER["central_meridian", -105.0], + PARAMETER["latitude_of_origin", 0.0], + PARAMETER["scale_factor", 0.9996], + PARAMETER["false_easting", 500000.0], + PARAMETER["false_northing", 0.0], + UNIT["m", 1.0], + AXIS["Easting", EAST], + AXIS["Northing", NORTH], AUTHORITY["EPSG","26713"]] \ No newline at end of file diff --git a/extras/deploy/testdataset/test_linux.oms b/extras/deploy/testdataset/test_linux.oms index 6bcb9402e..63fb5022f 100644 --- a/extras/deploy/testdataset/test_linux.oms +++ b/extras/deploy/testdataset/test_linux.oms @@ -1,22 +1,22 @@ -sim = new oms3.SimBuilder(logging:'ALL').sim(name:'pitfiller') { - model { - components { - 'pitfiller' 'pit' - 'reader' 'rasterreader' - 'writer' 'rasterwriter' - } - - parameter { - 'reader.file' './testdataset/elevation.asc' - 'writer.file' './testdataset/pit.asc' - } - - connect { - 'reader.outRaster' 'pitfiller.inElev' - 'pitfiller.outPit' 'writer.inRaster' - } - - } -} -sim.run(); - +sim = new oms3.SimBuilder(logging:'ALL').sim(name:'pitfiller') { + model { + components { + 'pitfiller' 'pit' + 'reader' 'rasterreader' + 'writer' 'rasterwriter' + } + + parameter { + 'reader.file' './testdataset/elevation.asc' + 'writer.file' './testdataset/pit.asc' + } + + connect { + 'reader.outRaster' 'pitfiller.inElev' + 'pitfiller.outPit' 'writer.inRaster' + } + + } +} +sim.run(); + diff --git a/extras/deploy/testdataset/test_win.oms b/extras/deploy/testdataset/test_win.oms index 392d9dbe0..c415e8eb7 100644 --- a/extras/deploy/testdataset/test_win.oms +++ b/extras/deploy/testdataset/test_win.oms @@ -1,22 +1,22 @@ -sim = new oms3.SimBuilder(logging:'ALL').sim(name:'pitfiller') { - model { - components { - 'pitfiller' 'pit' - 'reader' 'rasterreader' - 'writer' 'rasterwriter' - } - - parameter { - 'reader.file' '.\\testdataset\\elevation.asc' - 'writer.file' '.\\testdataset\\pit.asc' - } - - connect { - 'reader.outRaster' 'pitfiller.inElev' - 'pitfiller.outPit' 'writer.inRaster' - } - - } -} -sim.run(); - +sim = new oms3.SimBuilder(logging:'ALL').sim(name:'pitfiller') { + model { + components { + 'pitfiller' 'pit' + 'reader' 'rasterreader' + 'writer' 'rasterwriter' + } + + parameter { + 'reader.file' '.\\testdataset\\elevation.asc' + 'writer.file' '.\\testdataset\\pit.asc' + } + + connect { + 'reader.outRaster' 'pitfiller.inElev' + 'pitfiller.outPit' 'writer.inRaster' + } + + } +} +sim.run(); + diff --git a/extras/examples/jgt-dev-example/src/main/java/org/jgrasstools/examples/RasterReprojectionExample.java b/extras/examples/jgt-dev-example/src/main/java/org/jgrasstools/examples/RasterReprojectionExample.java index 7a9389ef6..5c17ba3c4 100644 --- a/extras/examples/jgt-dev-example/src/main/java/org/jgrasstools/examples/RasterReprojectionExample.java +++ b/extras/examples/jgt-dev-example/src/main/java/org/jgrasstools/examples/RasterReprojectionExample.java @@ -1,47 +1,47 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.examples; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.io.rasterreader.RasterReader; -import org.jgrasstools.gears.io.rasterwriter.RasterWriter; -import org.jgrasstools.gears.modules.r.rasterreprojector.RasterReprojector; - -public class RasterReprojectionExample { - - public static void main( String[] args ) throws Exception { - - String inputRaster = "your input path here"; - String outputRaster = "your output path here"; - - // read the raster - GridCoverage2D readCoverage = RasterReader.readRaster(inputRaster); - - // reproject - RasterReprojector rasterReprojector = new RasterReprojector(); - rasterReprojector.inRaster = readCoverage; - rasterReprojector.pCode = "EPSG:32632"; - rasterReprojector.process(); - GridCoverage2D outRaster = rasterReprojector.outRaster; - - // write the raster - RasterWriter.writeRaster(outputRaster, outRaster); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.examples; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.io.rasterreader.RasterReader; +import org.jgrasstools.gears.io.rasterwriter.RasterWriter; +import org.jgrasstools.gears.modules.r.rasterreprojector.RasterReprojector; + +public class RasterReprojectionExample { + + public static void main( String[] args ) throws Exception { + + String inputRaster = "your input path here"; + String outputRaster = "your output path here"; + + // read the raster + GridCoverage2D readCoverage = RasterReader.readRaster(inputRaster); + + // reproject + RasterReprojector rasterReprojector = new RasterReprojector(); + rasterReprojector.inRaster = readCoverage; + rasterReprojector.pCode = "EPSG:32632"; + rasterReprojector.process(); + GridCoverage2D outRaster = rasterReprojector.outRaster; + + // write the raster + RasterWriter.writeRaster(outputRaster, outRaster); + + } + +} diff --git a/extras/examples/jgt-dev-example/src/main/java/org/jgrasstools/examples/VectorReprojectionExample.java b/extras/examples/jgt-dev-example/src/main/java/org/jgrasstools/examples/VectorReprojectionExample.java index 5edd466c7..8023b9d9b 100644 --- a/extras/examples/jgt-dev-example/src/main/java/org/jgrasstools/examples/VectorReprojectionExample.java +++ b/extras/examples/jgt-dev-example/src/main/java/org/jgrasstools/examples/VectorReprojectionExample.java @@ -1,46 +1,46 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.examples; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.jgrasstools.gears.io.vectorreader.VectorReader; -import org.jgrasstools.gears.io.vectorwriter.VectorWriter; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.modules.v.vectorreprojector.VectorReprojector; - -public class VectorReprojectionExample extends JGTModel { - public static void main( String[] args ) throws Exception { - - String inputVector = "your input path here"; - String outputVector = "your output path here"; - - // read the vector - SimpleFeatureCollection readFeatureCollection = VectorReader.readVector(inputVector); - - // reproject - VectorReprojector vectorReprojector = new VectorReprojector(); - vectorReprojector.inVector = readFeatureCollection; - vectorReprojector.pCode = "EPSG:32632"; - vectorReprojector.process(); - SimpleFeatureCollection outVector = vectorReprojector.outVector; - - // write the vetor - VectorWriter.writeVector(outputVector, outVector); - - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.examples; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.jgrasstools.gears.io.vectorreader.VectorReader; +import org.jgrasstools.gears.io.vectorwriter.VectorWriter; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.modules.v.vectorreprojector.VectorReprojector; + +public class VectorReprojectionExample extends JGTModel { + public static void main( String[] args ) throws Exception { + + String inputVector = "your input path here"; + String outputVector = "your output path here"; + + // read the vector + SimpleFeatureCollection readFeatureCollection = VectorReader.readVector(inputVector); + + // reproject + VectorReprojector vectorReprojector = new VectorReprojector(); + vectorReprojector.inVector = readFeatureCollection; + vectorReprojector.pCode = "EPSG:32632"; + vectorReprojector.process(); + SimpleFeatureCollection outVector = vectorReprojector.outVector; + + // write the vetor + VectorWriter.writeVector(outputVector, outVector); + + } +} diff --git a/grass/pom.xml b/grass/pom.xml index b0a6e5476..cefe33f80 100644 --- a/grass/pom.xml +++ b/grass/pom.xml @@ -1,37 +1,37 @@ - - 4.0.0 - - - org.jgrasstools - jgrasstools - 0.7.7-SNAPSHOT - - - org.jgrasstools - jgt-grass - 0.7.7-SNAPSHOT - jar - GRASS bindings module - - - - - org.jgrasstools - jgt-oms3 - 0.7.7-SNAPSHOT - - - org.fusesource.jansi - jansi - - - jfree - jfreechart - - - - - - - - + + 4.0.0 + + + org.jgrasstools + jgrasstools + 0.7.7-SNAPSHOT + + + org.jgrasstools + jgt-grass + 0.7.7-SNAPSHOT + jar + GRASS bindings module + + + + + org.jgrasstools + jgt-oms3 + 0.7.7-SNAPSHOT + + + org.fusesource.jansi + jansi + + + jfree + jfreechart + + + + + + + + diff --git a/hortonmachine/pom.xml b/hortonmachine/pom.xml index 8371e6342..9b9af058f 100644 --- a/hortonmachine/pom.xml +++ b/hortonmachine/pom.xml @@ -1,91 +1,91 @@ - - 4.0.0 - - - org.jgrasstools - jgrasstools - 0.7.7-SNAPSHOT - - - org.jgrasstools - jgt-hortonmachine - 0.7.7-SNAPSHOT - jar - The Horton Machine - - - - - org.jgrasstools - jgt-oms3 - 0.7.7-SNAPSHOT - - - - org.jgrasstools - jgt-jgrassgears - 0.7.7-SNAPSHOT - - - - junit - junit - 4.5 - test - - - - - - - + + 4.0.0 + + + org.jgrasstools + jgrasstools + 0.7.7-SNAPSHOT + + + org.jgrasstools + jgt-hortonmachine + 0.7.7-SNAPSHOT + jar + The Horton Machine + + + + + org.jgrasstools + jgt-oms3 + 0.7.7-SNAPSHOT + + + + org.jgrasstools + jgt-jgrassgears + 0.7.7-SNAPSHOT + + + + junit + junit + 4.5 + test + + + + + + + diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/HortonMachine.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/HortonMachine.java index 13499d730..fca8fc3cb 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/HortonMachine.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/HortonMachine.java @@ -1,250 +1,250 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import oms3.Access; -import oms3.ComponentAccess; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Status; - -import org.jgrasstools.gears.libs.modules.ClassField; -import org.scannotation.AnnotationDB; -import org.scannotation.ClasspathUrlFinder; - -/** - * Class presenting modules names and classes. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class HortonMachine { - - private static HortonMachine hortonMachine = null; - - private URL baseclassUrl; - private HortonMachine( URL baseclassUrl ) { - this.baseclassUrl = baseclassUrl; - } - - /** - * Retrieves the {@link HortonMachine}. If it exists, that instance is returned. - * - * @return the horton machine annotations class. - */ - public synchronized static HortonMachine getInstance() { - if (hortonMachine == null) { - hortonMachine = new HortonMachine(null); - hortonMachine.gatherInformations(); - } - return hortonMachine; - } - - /** - * Retrieves the {@link HortonMachine} for a particular url path. - * - *

- * When this method is called, the {@link HortonMachine} instance is reset. - *

- *

- * Be careful when you use this. This is a workaround needed for eclipse - * systems, where the url returned by the urlfinder is a bundleresource that - * would need to be resolved first with rcp tools we do not want to depend on. - *

- * - * @return the horton machine annotations class. - */ - public static HortonMachine getInstance( URL baseclassUrl ) { - hortonMachine = new HortonMachine(baseclassUrl); - hortonMachine.gatherInformations(); - return hortonMachine; - } - - /** - * A {@link LinkedHashMap map} of all the class names and the class itself. - */ - public final LinkedHashMap> moduleName2Class = new LinkedHashMap>(); - - /** - * A {@link LinkedHashMap map} of all the class names and their fields. - */ - public final LinkedHashMap> moduleName2Fields = new LinkedHashMap>(); - - /** - * An array of all the fields used in the modules. - */ - public String[] allFields = null; - - /** - * An array of all the class names of the modules. - */ - public String[] allClasses = null; - - private void gatherInformations() { - - try { - if (baseclassUrl == null) { - baseclassUrl = ClasspathUrlFinder.findClassBase(HortonMachine.class); - } - AnnotationDB db = new AnnotationDB(); - db.scanArchives(baseclassUrl); - - Map> annotationIndex = db.getAnnotationIndex(); - Set simpleClasses = annotationIndex.get(Execute.class.getName()); - for( String className : simpleClasses ) { - if (!className.startsWith("org.jgrasstools.hortonmachine")) { - continue; - } - - int lastDot = className.lastIndexOf('.'); - String name = className.substring(lastDot + 1); - Class< ? > clazz = null; - try { - clazz = Class.forName(className); - moduleName2Class.put(name, clazz); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - /* - * extract all classes and fields - */ - List classNames = new ArrayList(); - List fieldNamesList = new ArrayList(); - - Set>> moduleName2ClassEntries = moduleName2Class.entrySet(); - for( Entry> moduleName2ClassEntry : moduleName2ClassEntries ) { - String moduleName = moduleName2ClassEntry.getKey(); - Class< ? > moduleClass = moduleName2ClassEntry.getValue(); - Status annotation = moduleClass.getAnnotation(Status.class); - if (annotation == null) { - System.out.println("Missing status: " + moduleClass.getCanonicalName()); - continue; - } - String statusString = null; - int status = annotation.value(); - switch( status ) { - case Status.CERTIFIED: - statusString = "CERTIFIED"; - break; - case Status.DRAFT: - statusString = "DRAFT"; - break; - case Status.TESTED: - statusString = "TESTED"; - break; - default: - statusString = "UNKNOWN"; - break; - } - - classNames.add(moduleName); - - List tmpfields = new ArrayList(); - Object annotatedObject = moduleClass.newInstance(); - ComponentAccess cA = new ComponentAccess(annotatedObject); - Collection inputs = cA.inputs(); - for( Access access : inputs ) { - Field field = access.getField(); - String name = field.getName(); - Description descriptionAnnot = field.getAnnotation(Description.class); - String description = name; - if (descriptionAnnot != null) { - description = descriptionAnnot.value(); - if (description == null) { - description = name; - } - } - Class< ? > fieldClass = field.getType(); - ClassField cf = new ClassField(); - cf.isIn = true; - cf.fieldName = name; - cf.fieldDescription = description; - cf.fieldClass = fieldClass; - cf.parentClass = moduleClass; - cf.parentClassStatus = statusString; - if (!fieldNamesList.contains(name)) { - fieldNamesList.add(name); - } - tmpfields.add(cf); - - } - Collection outputs = cA.outputs(); - for( Access access : outputs ) { - Field field = access.getField(); - String name = field.getName(); - Description descriptionAnnot = field.getAnnotation(Description.class); - String description = name; - if (descriptionAnnot != null) { - description = descriptionAnnot.value(); - if (description == null) { - description = name; - } - } - Class< ? > fieldClass = field.getType(); - ClassField cf = new ClassField(); - cf.isOut = true; - cf.fieldName = name; - cf.fieldDescription = description; - cf.fieldClass = fieldClass; - cf.parentClass = moduleClass; - cf.parentClassStatus = statusString; - if (!fieldNamesList.contains(name)) { - fieldNamesList.add(name); - } - tmpfields.add(cf); - } - moduleName2Fields.put(moduleName, tmpfields); - } - Collections.sort(fieldNamesList); - allFields = (String[]) fieldNamesList.toArray(new String[fieldNamesList.size()]); - Collections.sort(classNames); - allClasses = (String[]) classNames.toArray(new String[classNames.size()]); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - public static void main( String[] args ) throws IOException { - HortonMachine hm = HortonMachine.getInstance(); - - Set>> entrySet = hm.moduleName2Class.entrySet(); - for( Entry> entry : entrySet ) { - System.out.println(entry.getKey() + " - " + entry.getValue().getCanonicalName()); - } - - List list = hm.moduleName2Fields.get("Adige"); - for( ClassField classField : list ) { - System.out.println(classField); - } - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import oms3.Access; +import oms3.ComponentAccess; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Status; + +import org.jgrasstools.gears.libs.modules.ClassField; +import org.scannotation.AnnotationDB; +import org.scannotation.ClasspathUrlFinder; + +/** + * Class presenting modules names and classes. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class HortonMachine { + + private static HortonMachine hortonMachine = null; + + private URL baseclassUrl; + private HortonMachine( URL baseclassUrl ) { + this.baseclassUrl = baseclassUrl; + } + + /** + * Retrieves the {@link HortonMachine}. If it exists, that instance is returned. + * + * @return the horton machine annotations class. + */ + public synchronized static HortonMachine getInstance() { + if (hortonMachine == null) { + hortonMachine = new HortonMachine(null); + hortonMachine.gatherInformations(); + } + return hortonMachine; + } + + /** + * Retrieves the {@link HortonMachine} for a particular url path. + * + *

+ * When this method is called, the {@link HortonMachine} instance is reset. + *

+ *

+ * Be careful when you use this. This is a workaround needed for eclipse + * systems, where the url returned by the urlfinder is a bundleresource that + * would need to be resolved first with rcp tools we do not want to depend on. + *

+ * + * @return the horton machine annotations class. + */ + public static HortonMachine getInstance( URL baseclassUrl ) { + hortonMachine = new HortonMachine(baseclassUrl); + hortonMachine.gatherInformations(); + return hortonMachine; + } + + /** + * A {@link LinkedHashMap map} of all the class names and the class itself. + */ + public final LinkedHashMap> moduleName2Class = new LinkedHashMap>(); + + /** + * A {@link LinkedHashMap map} of all the class names and their fields. + */ + public final LinkedHashMap> moduleName2Fields = new LinkedHashMap>(); + + /** + * An array of all the fields used in the modules. + */ + public String[] allFields = null; + + /** + * An array of all the class names of the modules. + */ + public String[] allClasses = null; + + private void gatherInformations() { + + try { + if (baseclassUrl == null) { + baseclassUrl = ClasspathUrlFinder.findClassBase(HortonMachine.class); + } + AnnotationDB db = new AnnotationDB(); + db.scanArchives(baseclassUrl); + + Map> annotationIndex = db.getAnnotationIndex(); + Set simpleClasses = annotationIndex.get(Execute.class.getName()); + for( String className : simpleClasses ) { + if (!className.startsWith("org.jgrasstools.hortonmachine")) { + continue; + } + + int lastDot = className.lastIndexOf('.'); + String name = className.substring(lastDot + 1); + Class< ? > clazz = null; + try { + clazz = Class.forName(className); + moduleName2Class.put(name, clazz); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + /* + * extract all classes and fields + */ + List classNames = new ArrayList(); + List fieldNamesList = new ArrayList(); + + Set>> moduleName2ClassEntries = moduleName2Class.entrySet(); + for( Entry> moduleName2ClassEntry : moduleName2ClassEntries ) { + String moduleName = moduleName2ClassEntry.getKey(); + Class< ? > moduleClass = moduleName2ClassEntry.getValue(); + Status annotation = moduleClass.getAnnotation(Status.class); + if (annotation == null) { + System.out.println("Missing status: " + moduleClass.getCanonicalName()); + continue; + } + String statusString = null; + int status = annotation.value(); + switch( status ) { + case Status.CERTIFIED: + statusString = "CERTIFIED"; + break; + case Status.DRAFT: + statusString = "DRAFT"; + break; + case Status.TESTED: + statusString = "TESTED"; + break; + default: + statusString = "UNKNOWN"; + break; + } + + classNames.add(moduleName); + + List tmpfields = new ArrayList(); + Object annotatedObject = moduleClass.newInstance(); + ComponentAccess cA = new ComponentAccess(annotatedObject); + Collection inputs = cA.inputs(); + for( Access access : inputs ) { + Field field = access.getField(); + String name = field.getName(); + Description descriptionAnnot = field.getAnnotation(Description.class); + String description = name; + if (descriptionAnnot != null) { + description = descriptionAnnot.value(); + if (description == null) { + description = name; + } + } + Class< ? > fieldClass = field.getType(); + ClassField cf = new ClassField(); + cf.isIn = true; + cf.fieldName = name; + cf.fieldDescription = description; + cf.fieldClass = fieldClass; + cf.parentClass = moduleClass; + cf.parentClassStatus = statusString; + if (!fieldNamesList.contains(name)) { + fieldNamesList.add(name); + } + tmpfields.add(cf); + + } + Collection outputs = cA.outputs(); + for( Access access : outputs ) { + Field field = access.getField(); + String name = field.getName(); + Description descriptionAnnot = field.getAnnotation(Description.class); + String description = name; + if (descriptionAnnot != null) { + description = descriptionAnnot.value(); + if (description == null) { + description = name; + } + } + Class< ? > fieldClass = field.getType(); + ClassField cf = new ClassField(); + cf.isOut = true; + cf.fieldName = name; + cf.fieldDescription = description; + cf.fieldClass = fieldClass; + cf.parentClass = moduleClass; + cf.parentClassStatus = statusString; + if (!fieldNamesList.contains(name)) { + fieldNamesList.add(name); + } + tmpfields.add(cf); + } + moduleName2Fields.put(moduleName, tmpfields); + } + Collections.sort(fieldNamesList); + allFields = (String[]) fieldNamesList.toArray(new String[fieldNamesList.size()]); + Collections.sort(classNames); + allClasses = (String[]) classNames.toArray(new String[classNames.size()]); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + public static void main( String[] args ) throws IOException { + HortonMachine hm = HortonMachine.getInstance(); + + Set>> entrySet = hm.moduleName2Class.entrySet(); + for( Entry> entry : entrySet ) { + System.out.println(entry.getKey() + " - " + entry.getValue().getCanonicalName()); + } + + List list = hm.moduleName2Fields.get("Adige"); + for( ClassField classField : list ) { + System.out.println(classField); + } + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/basinshape/BasinShape.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/basinshape/BasinShape.java index f77d2780e..74c4a833a 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/basinshape/BasinShape.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/basinshape/BasinShape.java @@ -1,304 +1,304 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.basin.basinshape; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoordinates2D; -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.geotools.geometry.DirectPosition2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.modules.ModelsSupporter; -import org.jgrasstools.gears.modules.v.vectorize.Vectorizer; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.MultiPolygon; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.Polygon; - -@Description("Creates a Feature collection of the subbasins created with the netnumbering module.") -@Documentation("BasinShape.html") -@Author(name = "Erica Ghesla, Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Basin, Geomorphology") -@Label(JGTConstants.BASIN) -@Name("basinshape") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class BasinShape extends JGTModel { - - @Description("The elevation map.") - @In - public GridCoverage2D inElev = null; - - @Description("The map of the numbered basins.") - @In - public GridCoverage2D inBasins = null; - - @Description("The extracted basins vector map.") - @Out - public SimpleFeatureCollection outBasins = null; - - private int nCols; - private int nRows; - - private RandomIter pitRandomIter; - - @Execute - public void process() throws Exception { - if (!concatOr(outBasins == null, doReset)) { - return; - } - checkNull(inBasins); - - HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inBasins); - nCols = regionMap.get(CoverageUtilities.COLS).intValue(); - nRows = regionMap.get(CoverageUtilities.ROWS).intValue(); - // double xRes = regionMap.get(CoverageUtilities.XRES); - // double yRes = regionMap.get(CoverageUtilities.YRES); - - RenderedImage basinsRI = inBasins.getRenderedImage(); - RenderedImage pitRI = null; - if (inElev != null) - pitRI = inElev.getRenderedImage(); - - int[] nstream = new int[1]; - // nstream[0] = 1508; - WritableRaster basinsWR = CoverageUtilities.renderedImage2WritableRaster(basinsRI, true); - RandomIter basinsRandomIter = RandomIterFactory.create(basinsWR, null); - - for( int j = 0; j < nRows; j++ ) { - for( int i = 0; i < nCols; i++ ) { - if (!isNovalue(basinsRandomIter.getSampleDouble(i, j, 0)) - && basinsRandomIter.getSampleDouble(i, j, 0) > (double) nstream[0]) { - nstream[0] = (int) basinsRandomIter.getSampleDouble(i, j, 0); - } - - } - } - - WritableRaster subbasinsWR = CoverageUtilities.createDoubleWritableRaster(basinsRI.getWidth(), basinsRI.getHeight(), - null, basinsRI.getSampleModel(), doubleNovalue); - - // create the feature type - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - // set the name - b.setName("basinshape"); //$NON-NLS-1$ - // add a geometry property - String defaultGeometryName = "the_geom";//$NON-NLS-1$ - b.setCRS(inBasins.getCoordinateReferenceSystem()); - b.add(defaultGeometryName, MultiPolygon.class); - // add some properties - b.add("area", Float.class); //$NON-NLS-1$ - b.add("perimeter", Float.class); //$NON-NLS-1$ - b.add("netnum", Integer.class); //$NON-NLS-1$ - b.add("maxZ", Float.class); //$NON-NLS-1$ - b.add("minZ", Float.class); //$NON-NLS-1$ - b.add("avgZ", Float.class); //$NON-NLS-1$ - b.add("height", Float.class); //$NON-NLS-1$ - - // build the type - SimpleFeatureType type = b.buildFeatureType(); - outBasins = FeatureCollections.newCollection(); - - // for each stream correct problems with basins and create geometries - pm.beginTask("Extracting basins...", nstream[0]); - for( int num = 1; num <= nstream[0]; num++ ) { - Object[] values = new Object[8]; - - int nordRow = -1; - int southRow = 0; - int eastCol = -1; - int westCol = nCols; - int numPixel = 0; - - double minZ = Double.MAX_VALUE; - double maxZ = Double.MIN_VALUE; - double averageZ = 0.0; - if (pitRI != null) - pitRandomIter = RandomIterFactory.create(pitRI, null); - WritableRandomIter subbasinIter = RandomIterFactory.createWritable(subbasinsWR, null); - for( int i = 0; i < nCols; i++ ) { - for( int j = 0; j < nRows; j++ ) { - double basinId = basinsRandomIter.getSampleDouble(i, j, 0); - if (isNovalue(basinId)) { - continue; - } - int basinNum = (int) basinId; - if (basinNum == num) { - if (nordRow == -1) { - nordRow = i; - } - if (i > nordRow) { - southRow = i; - } - if (westCol > j) { - westCol = j; - } - if (eastCol < j) { - eastCol = j; - } - subbasinIter.setSample(i, j, 0, basinNum); - if (pitRI != null) { - double elevation = pitRandomIter.getSampleDouble(i, j, 0); - if (!isNovalue(elevation)) { - minZ = elevation < minZ ? elevation : minZ; - maxZ = elevation > maxZ ? elevation : maxZ; - averageZ = averageZ + elevation; - } else { - minZ = -1; - maxZ = -1; - averageZ = 0; - } - } - numPixel++; - } - } - } - - if (numPixel != 0) { - // min, max and average - values[3] = num; - values[4] = maxZ; - values[5] = maxZ; - values[6] = averageZ / numPixel; - - numPixel = 0; - for( int i = nordRow; i < southRow + 1; i++ ) { - for( int j = westCol; j < eastCol + 1; j++ ) { - if (isNovalue(subbasinIter.getSampleDouble(i, j, 0))) { - for( int k = 1; k <= 8; k++ ) { - // index.setFlow(k); - int indexI = i + ModelsSupporter.DIR[k][1]; // index.getParameters()[ - // 0]; - int indexJ = j + ModelsSupporter.DIR[k][0]; // index.getParameters()[ - // 1]; - if (!isNovalue(subbasinIter.getSampleDouble(indexI, indexJ, 0))) { - numPixel++; - } - k++; - } - if (numPixel == 4) { - subbasinIter.setSample(i, j, 0, num); - } - } - numPixel = 0; - } - } - - // extract the feature polygon of that basin number - Vectorizer vectorizer = new Vectorizer(); - try { - vectorizer.inRaster = inBasins; - vectorizer.pm = pm; - vectorizer.doReset = true; - vectorizer.pValue = (double) num; - vectorizer.process(); - } catch (Exception e) { - pm.errorMessage(e.getLocalizedMessage()); - continue; - } - - SimpleFeatureCollection outGeodata = vectorizer.outVector; - FeatureIterator outGeodataIterator = outGeodata.features(); - List polygons = new ArrayList(); - while( outGeodataIterator.hasNext() ) { - SimpleFeature feature = outGeodataIterator.next(); - polygons.add((Polygon) feature.getDefaultGeometry()); - } - outGeodataIterator.close(); - - MultiPolygon geometry = GeometryUtilities.gf().createMultiPolygon( - (Polygon[]) polygons.toArray(new Polygon[polygons.size()])); - values[0] = geometry; - values[1] = geometry.getArea(); - values[2] = geometry.getLength(); - - Point centroid = geometry.getCentroid(); - if (centroid == null) { - pm.errorMessage("Unable to extract basin: " + num); - continue; - } - Coordinate centroidCoords = centroid.getCoordinate(); - - GridGeometry2D gridGeometry = inBasins.getGridGeometry(); - GridCoordinates2D worldToGrid = gridGeometry - .worldToGrid(new DirectPosition2D(centroidCoords.x, centroidCoords.y)); - - int[] rowColPoint = new int[]{worldToGrid.y, worldToGrid.x}; - double centroidElevation = -1;; - if (pitRI != null) { - double elev = pitRandomIter.getSampleDouble(rowColPoint[1], rowColPoint[0], 0); - if (!isNovalue(elev)) { - centroidElevation = elev; - } - } - values[7] = centroidElevation; - subbasinIter.done(); - subbasinsWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); - - // create the feature - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - // add the values - builder.addAll(values); - // build the feature with provided ID - SimpleFeature feature = builder.buildFeature(type.getTypeName() + "." + num); - outBasins.add(feature); - } - pm.worked(1); - } - pm.done(); - - basinsRandomIter.done(); - basinsWR = null; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.basin.basinshape; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoordinates2D; +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.geotools.geometry.DirectPosition2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.modules.ModelsSupporter; +import org.jgrasstools.gears.modules.v.vectorize.Vectorizer; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.MultiPolygon; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; + +@Description("Creates a Feature collection of the subbasins created with the netnumbering module.") +@Documentation("BasinShape.html") +@Author(name = "Erica Ghesla, Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Basin, Geomorphology") +@Label(JGTConstants.BASIN) +@Name("basinshape") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class BasinShape extends JGTModel { + + @Description("The elevation map.") + @In + public GridCoverage2D inElev = null; + + @Description("The map of the numbered basins.") + @In + public GridCoverage2D inBasins = null; + + @Description("The extracted basins vector map.") + @Out + public SimpleFeatureCollection outBasins = null; + + private int nCols; + private int nRows; + + private RandomIter pitRandomIter; + + @Execute + public void process() throws Exception { + if (!concatOr(outBasins == null, doReset)) { + return; + } + checkNull(inBasins); + + HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inBasins); + nCols = regionMap.get(CoverageUtilities.COLS).intValue(); + nRows = regionMap.get(CoverageUtilities.ROWS).intValue(); + // double xRes = regionMap.get(CoverageUtilities.XRES); + // double yRes = regionMap.get(CoverageUtilities.YRES); + + RenderedImage basinsRI = inBasins.getRenderedImage(); + RenderedImage pitRI = null; + if (inElev != null) + pitRI = inElev.getRenderedImage(); + + int[] nstream = new int[1]; + // nstream[0] = 1508; + WritableRaster basinsWR = CoverageUtilities.renderedImage2WritableRaster(basinsRI, true); + RandomIter basinsRandomIter = RandomIterFactory.create(basinsWR, null); + + for( int j = 0; j < nRows; j++ ) { + for( int i = 0; i < nCols; i++ ) { + if (!isNovalue(basinsRandomIter.getSampleDouble(i, j, 0)) + && basinsRandomIter.getSampleDouble(i, j, 0) > (double) nstream[0]) { + nstream[0] = (int) basinsRandomIter.getSampleDouble(i, j, 0); + } + + } + } + + WritableRaster subbasinsWR = CoverageUtilities.createDoubleWritableRaster(basinsRI.getWidth(), basinsRI.getHeight(), + null, basinsRI.getSampleModel(), doubleNovalue); + + // create the feature type + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + // set the name + b.setName("basinshape"); //$NON-NLS-1$ + // add a geometry property + String defaultGeometryName = "the_geom";//$NON-NLS-1$ + b.setCRS(inBasins.getCoordinateReferenceSystem()); + b.add(defaultGeometryName, MultiPolygon.class); + // add some properties + b.add("area", Float.class); //$NON-NLS-1$ + b.add("perimeter", Float.class); //$NON-NLS-1$ + b.add("netnum", Integer.class); //$NON-NLS-1$ + b.add("maxZ", Float.class); //$NON-NLS-1$ + b.add("minZ", Float.class); //$NON-NLS-1$ + b.add("avgZ", Float.class); //$NON-NLS-1$ + b.add("height", Float.class); //$NON-NLS-1$ + + // build the type + SimpleFeatureType type = b.buildFeatureType(); + outBasins = FeatureCollections.newCollection(); + + // for each stream correct problems with basins and create geometries + pm.beginTask("Extracting basins...", nstream[0]); + for( int num = 1; num <= nstream[0]; num++ ) { + Object[] values = new Object[8]; + + int nordRow = -1; + int southRow = 0; + int eastCol = -1; + int westCol = nCols; + int numPixel = 0; + + double minZ = Double.MAX_VALUE; + double maxZ = Double.MIN_VALUE; + double averageZ = 0.0; + if (pitRI != null) + pitRandomIter = RandomIterFactory.create(pitRI, null); + WritableRandomIter subbasinIter = RandomIterFactory.createWritable(subbasinsWR, null); + for( int i = 0; i < nCols; i++ ) { + for( int j = 0; j < nRows; j++ ) { + double basinId = basinsRandomIter.getSampleDouble(i, j, 0); + if (isNovalue(basinId)) { + continue; + } + int basinNum = (int) basinId; + if (basinNum == num) { + if (nordRow == -1) { + nordRow = i; + } + if (i > nordRow) { + southRow = i; + } + if (westCol > j) { + westCol = j; + } + if (eastCol < j) { + eastCol = j; + } + subbasinIter.setSample(i, j, 0, basinNum); + if (pitRI != null) { + double elevation = pitRandomIter.getSampleDouble(i, j, 0); + if (!isNovalue(elevation)) { + minZ = elevation < minZ ? elevation : minZ; + maxZ = elevation > maxZ ? elevation : maxZ; + averageZ = averageZ + elevation; + } else { + minZ = -1; + maxZ = -1; + averageZ = 0; + } + } + numPixel++; + } + } + } + + if (numPixel != 0) { + // min, max and average + values[3] = num; + values[4] = maxZ; + values[5] = maxZ; + values[6] = averageZ / numPixel; + + numPixel = 0; + for( int i = nordRow; i < southRow + 1; i++ ) { + for( int j = westCol; j < eastCol + 1; j++ ) { + if (isNovalue(subbasinIter.getSampleDouble(i, j, 0))) { + for( int k = 1; k <= 8; k++ ) { + // index.setFlow(k); + int indexI = i + ModelsSupporter.DIR[k][1]; // index.getParameters()[ + // 0]; + int indexJ = j + ModelsSupporter.DIR[k][0]; // index.getParameters()[ + // 1]; + if (!isNovalue(subbasinIter.getSampleDouble(indexI, indexJ, 0))) { + numPixel++; + } + k++; + } + if (numPixel == 4) { + subbasinIter.setSample(i, j, 0, num); + } + } + numPixel = 0; + } + } + + // extract the feature polygon of that basin number + Vectorizer vectorizer = new Vectorizer(); + try { + vectorizer.inRaster = inBasins; + vectorizer.pm = pm; + vectorizer.doReset = true; + vectorizer.pValue = (double) num; + vectorizer.process(); + } catch (Exception e) { + pm.errorMessage(e.getLocalizedMessage()); + continue; + } + + SimpleFeatureCollection outGeodata = vectorizer.outVector; + FeatureIterator outGeodataIterator = outGeodata.features(); + List polygons = new ArrayList(); + while( outGeodataIterator.hasNext() ) { + SimpleFeature feature = outGeodataIterator.next(); + polygons.add((Polygon) feature.getDefaultGeometry()); + } + outGeodataIterator.close(); + + MultiPolygon geometry = GeometryUtilities.gf().createMultiPolygon( + (Polygon[]) polygons.toArray(new Polygon[polygons.size()])); + values[0] = geometry; + values[1] = geometry.getArea(); + values[2] = geometry.getLength(); + + Point centroid = geometry.getCentroid(); + if (centroid == null) { + pm.errorMessage("Unable to extract basin: " + num); + continue; + } + Coordinate centroidCoords = centroid.getCoordinate(); + + GridGeometry2D gridGeometry = inBasins.getGridGeometry(); + GridCoordinates2D worldToGrid = gridGeometry + .worldToGrid(new DirectPosition2D(centroidCoords.x, centroidCoords.y)); + + int[] rowColPoint = new int[]{worldToGrid.y, worldToGrid.x}; + double centroidElevation = -1;; + if (pitRI != null) { + double elev = pitRandomIter.getSampleDouble(rowColPoint[1], rowColPoint[0], 0); + if (!isNovalue(elev)) { + centroidElevation = elev; + } + } + values[7] = centroidElevation; + subbasinIter.done(); + subbasinsWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); + + // create the feature + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + // add the values + builder.addAll(values); + // build the feature with provided ID + SimpleFeature feature = builder.buildFeature(type.getTypeName() + "." + num); + outBasins.add(feature); + } + pm.worked(1); + } + pm.done(); + + basinsRandomIter.done(); + basinsWR = null; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/rescaleddistance/RescaledDistance.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/rescaleddistance/RescaledDistance.java index 883f256f4..83b21d14f 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/rescaleddistance/RescaledDistance.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/rescaleddistance/RescaledDistance.java @@ -1,173 +1,173 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.basin.rescaleddistance; - -import static java.lang.Math.abs; -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.ArrayList; -import java.util.List; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.Direction; -import org.jgrasstools.gears.libs.modules.FlowNode; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.math.NumericsUtilities; - -@Description("Calculates the rescaled distance of each pixel from the outlet.") -@Documentation("RescaledDistance.html") -@Author(name = "Antonello Andrea, Franceschi Silvia, Daniele Andreis, Erica Ghesla, Cozzini Andrea, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Basin, Geomorphology, D2O") -@Label(JGTConstants.BASIN) -@Name("rescdist") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class RescaledDistance extends JGTModel { - - @Description("The map of flowdirections.") - @In - public GridCoverage2D inFlow = null; - - @Description("The map of the network.") - @In - public GridCoverage2D inNet = null; - - @Description("The optional map of elevation for 3D.") - @In - public GridCoverage2D inElev = null; - - @Description("Ratio between the velocity in the channel and in the hillslope.") - @In - public double pRatio = 0; - - @Description("The map of the rescaled distances.") - @Out - public GridCoverage2D outRescaled = null; - - private WritableRandomIter rescaledIter; - - private double xRes; - - private double yRes; - - private RandomIter netIter; - - private RandomIter elevIter; - - @Execute - public void process() { - if (!concatOr(outRescaled == null, doReset)) { - return; - } - checkNull(inFlow, inNet); - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - xRes = regionMap.getXres(); - yRes = regionMap.getYres(); - - RenderedImage flowRI = inFlow.getRenderedImage(); - RandomIter flowIter = RandomIterFactory.create(flowRI, null); - - RenderedImage netRI = inNet.getRenderedImage(); - netIter = RandomIterFactory.create(netRI, null); - - if (inElev != null) { - RenderedImage elevRI = inElev.getRenderedImage(); - elevIter = RandomIterFactory.create(elevRI, null); - } - - WritableRaster rescaledWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, doubleNovalue); - rescaledIter = RandomIterFactory.createWritable(rescaledWR, null); - - pm.beginTask("Find outlets...", rows); //$NON-NLS-1$ - List exitsList = new ArrayList(); - for( int r = 0; r < rows; r++ ) { - for( int c = 0; c < cols; c++ ) { - double netValue = netIter.getSampleDouble(c, r, 0); - if (isNovalue(netValue)) { - // we make sure that we pick only outlets that are on the net - continue; - } - FlowNode flowNode = new FlowNode(flowIter, cols, rows, c, r); - if (flowNode.isHeadingOutside()) { - exitsList.add(flowNode); - } - } - pm.worked(1); - } - pm.done(); - - pm.beginTask("Calculate rescaled distance...", exitsList.size()); - for( FlowNode exitNode : exitsList ) { - calculateRescaledDistance(exitNode, xRes); - pm.worked(1); - } - pm.done(); - - outRescaled = CoverageUtilities.buildCoverage("RescaledDistance", rescaledWR, regionMap, - inFlow.getCoordinateReferenceSystem()); - } - - private void calculateRescaledDistance( FlowNode runningNode, double distance ) { - runningNode.setValueInMap(rescaledIter, distance); - if (runningNode.getEnteringNodes().size() > 0) { - List enteringNodes = runningNode.getEnteringNodes(); - for( FlowNode enteringNode : enteringNodes ) { - double tmpDistance = Direction.forFlow((int) enteringNode.flow).getDistance(xRes, yRes); - if (elevIter != null) { - double fromElev = enteringNode.getValueFromMap(elevIter); - double toElev = runningNode.getValueFromMap(elevIter); - tmpDistance = NumericsUtilities.pythagoras(tmpDistance, abs(toElev - fromElev)); - } - - double netValue = enteringNode.getValueFromMap(netIter); - double newDistance = 0.0; - if (isNovalue(netValue)) { - newDistance = distance + tmpDistance * pRatio; - } else { - newDistance = distance + tmpDistance; - } - calculateRescaledDistance(enteringNode, newDistance); - } - } - - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.basin.rescaleddistance; + +import static java.lang.Math.abs; +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.ArrayList; +import java.util.List; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.Direction; +import org.jgrasstools.gears.libs.modules.FlowNode; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.math.NumericsUtilities; + +@Description("Calculates the rescaled distance of each pixel from the outlet.") +@Documentation("RescaledDistance.html") +@Author(name = "Antonello Andrea, Franceschi Silvia, Daniele Andreis, Erica Ghesla, Cozzini Andrea, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Basin, Geomorphology, D2O") +@Label(JGTConstants.BASIN) +@Name("rescdist") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class RescaledDistance extends JGTModel { + + @Description("The map of flowdirections.") + @In + public GridCoverage2D inFlow = null; + + @Description("The map of the network.") + @In + public GridCoverage2D inNet = null; + + @Description("The optional map of elevation for 3D.") + @In + public GridCoverage2D inElev = null; + + @Description("Ratio between the velocity in the channel and in the hillslope.") + @In + public double pRatio = 0; + + @Description("The map of the rescaled distances.") + @Out + public GridCoverage2D outRescaled = null; + + private WritableRandomIter rescaledIter; + + private double xRes; + + private double yRes; + + private RandomIter netIter; + + private RandomIter elevIter; + + @Execute + public void process() { + if (!concatOr(outRescaled == null, doReset)) { + return; + } + checkNull(inFlow, inNet); + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + xRes = regionMap.getXres(); + yRes = regionMap.getYres(); + + RenderedImage flowRI = inFlow.getRenderedImage(); + RandomIter flowIter = RandomIterFactory.create(flowRI, null); + + RenderedImage netRI = inNet.getRenderedImage(); + netIter = RandomIterFactory.create(netRI, null); + + if (inElev != null) { + RenderedImage elevRI = inElev.getRenderedImage(); + elevIter = RandomIterFactory.create(elevRI, null); + } + + WritableRaster rescaledWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, doubleNovalue); + rescaledIter = RandomIterFactory.createWritable(rescaledWR, null); + + pm.beginTask("Find outlets...", rows); //$NON-NLS-1$ + List exitsList = new ArrayList(); + for( int r = 0; r < rows; r++ ) { + for( int c = 0; c < cols; c++ ) { + double netValue = netIter.getSampleDouble(c, r, 0); + if (isNovalue(netValue)) { + // we make sure that we pick only outlets that are on the net + continue; + } + FlowNode flowNode = new FlowNode(flowIter, cols, rows, c, r); + if (flowNode.isHeadingOutside()) { + exitsList.add(flowNode); + } + } + pm.worked(1); + } + pm.done(); + + pm.beginTask("Calculate rescaled distance...", exitsList.size()); + for( FlowNode exitNode : exitsList ) { + calculateRescaledDistance(exitNode, xRes); + pm.worked(1); + } + pm.done(); + + outRescaled = CoverageUtilities.buildCoverage("RescaledDistance", rescaledWR, regionMap, + inFlow.getCoordinateReferenceSystem()); + } + + private void calculateRescaledDistance( FlowNode runningNode, double distance ) { + runningNode.setValueInMap(rescaledIter, distance); + if (runningNode.getEnteringNodes().size() > 0) { + List enteringNodes = runningNode.getEnteringNodes(); + for( FlowNode enteringNode : enteringNodes ) { + double tmpDistance = Direction.forFlow((int) enteringNode.flow).getDistance(xRes, yRes); + if (elevIter != null) { + double fromElev = enteringNode.getValueFromMap(elevIter); + double toElev = runningNode.getValueFromMap(elevIter); + tmpDistance = NumericsUtilities.pythagoras(tmpDistance, abs(toElev - fromElev)); + } + + double netValue = enteringNode.getValueFromMap(netIter); + double newDistance = 0.0; + if (isNovalue(netValue)) { + newDistance = distance + tmpDistance * pRatio; + } else { + newDistance = distance + tmpDistance; + } + calculateRescaledDistance(enteringNode, newDistance); + } + } + + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/topindex/TopIndex.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/topindex/TopIndex.java index 4922aa425..04c67c20b 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/topindex/TopIndex.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/basin/topindex/TopIndex.java @@ -1,107 +1,107 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.basin.topindex; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.WritableRaster; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; - -@Description("Topographic index calculator.") -@Documentation("TopIndex.html") -@Author(name = "Daniele Andreis, Antonello Andrea, Erica Ghesla, Cozzini Andrea, Franceschi Silvia, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Hydrology") -@Label(JGTConstants.BASIN) -@Name("topindex") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class TopIndex extends JGTModel { - - @Description("The map of the contributing area.") - @In - public GridCoverage2D inTca = null; - - @Description("The map of slope.") - @In - public GridCoverage2D inSlope = null; - - @Description("The map of the topographic index.") - @Out - public GridCoverage2D outTopindex = null; - - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - @Execute - public void process() { - if (!concatOr(outTopindex == null, doReset)) { - return; - } - checkNull(inTca, inSlope); - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inTca); - int nCols = regionMap.getCols(); - int nRows = regionMap.getRows(); - - RandomIter tcaIter = CoverageUtilities.getRandomIterator(inTca); - RandomIter slopeIter = CoverageUtilities.getRandomIterator(inSlope); - - WritableRaster topindexWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); - WritableRandomIter topindexIter = RandomIterFactory.createWritable(topindexWR, null); - - pm.beginTask(msg.message("topindex.calculating"), nRows); - for( int r = 0; r < nRows; r++ ) { - if (isCanceled(pm)) { - return; - } - for( int c = 0; c < nCols; c++ ) { - double tcaValue = tcaIter.getSampleDouble(c, r, 0); - if (!isNovalue(tcaValue)) { - if (slopeIter.getSampleDouble(c, r, 0) != 0) { - topindexIter.setSample(c, r, 0, Math.log(tcaValue / slopeIter.getSampleDouble(c, r, 0))); - } - } - } - pm.worked(1); - } - pm.done(); - - outTopindex = CoverageUtilities.buildCoverage("topindex", topindexWR, regionMap, inTca.getCoordinateReferenceSystem()); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.basin.topindex; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.WritableRaster; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; + +@Description("Topographic index calculator.") +@Documentation("TopIndex.html") +@Author(name = "Daniele Andreis, Antonello Andrea, Erica Ghesla, Cozzini Andrea, Franceschi Silvia, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Hydrology") +@Label(JGTConstants.BASIN) +@Name("topindex") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class TopIndex extends JGTModel { + + @Description("The map of the contributing area.") + @In + public GridCoverage2D inTca = null; + + @Description("The map of slope.") + @In + public GridCoverage2D inSlope = null; + + @Description("The map of the topographic index.") + @Out + public GridCoverage2D outTopindex = null; + + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + @Execute + public void process() { + if (!concatOr(outTopindex == null, doReset)) { + return; + } + checkNull(inTca, inSlope); + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inTca); + int nCols = regionMap.getCols(); + int nRows = regionMap.getRows(); + + RandomIter tcaIter = CoverageUtilities.getRandomIterator(inTca); + RandomIter slopeIter = CoverageUtilities.getRandomIterator(inSlope); + + WritableRaster topindexWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); + WritableRandomIter topindexIter = RandomIterFactory.createWritable(topindexWR, null); + + pm.beginTask(msg.message("topindex.calculating"), nRows); + for( int r = 0; r < nRows; r++ ) { + if (isCanceled(pm)) { + return; + } + for( int c = 0; c < nCols; c++ ) { + double tcaValue = tcaIter.getSampleDouble(c, r, 0); + if (!isNovalue(tcaValue)) { + if (slopeIter.getSampleDouble(c, r, 0) != 0) { + topindexIter.setSample(c, r, 0, Math.log(tcaValue / slopeIter.getSampleDouble(c, r, 0))); + } + } + } + pm.worked(1); + } + pm.done(); + + outTopindex = CoverageUtilities.buildCoverage("topindex", topindexWR, regionMap, inTca.getCoordinateReferenceSystem()); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/demmanipulation/pitfiller/Pitfiller.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/demmanipulation/pitfiller/Pitfiller.java index 223397958..08210c3ca 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/demmanipulation/pitfiller/Pitfiller.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/demmanipulation/pitfiller/Pitfiller.java @@ -1,651 +1,651 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.demmanipulation.pitfiller; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.WritableRaster; -import java.util.HashMap; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.modules.ModelsSupporter; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; - -@Description("It fills the depression points present within a DEM.") -@Documentation("Pitfiller.html") -@Author(name = "David Tarboton, Andrea Antonello", contact = "http://www.neng.usu.edu/cee/faculty/dtarb/tardem.html#programs, http://www.hydrologis.com") -@Keywords("Dem manipulation, Geomorphology, DrainDir") -@Label(JGTConstants.DEMMANIPULATION) -@Name("pit") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class Pitfiller extends JGTModel { - @Description("The map of digital elevation model (DEM).") - @In - public GridCoverage2D inElev; - - @Description("The depitted elevation map.") - @Out - public GridCoverage2D outPit = null; - - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - /** - * The novalue needed by PitFiller. - */ - public static final double PITNOVALUE = -1.0; - private WritableRandomIter pitIter; - private RandomIter elevationIter = null; - - private int nCols; - private int nRows; - private double xRes; - private double yRes; - - // private final static String modelParameters = eu.hydrologis.libs.messages.help.Messages - // .getString("h_pitfiller.usage"); - /** - * i1, i2, n1, n2, are the minimum and maximum index for the activeRegion - * matrix (from 0 to nColumns or nRows). - */ - private int i1; - private int i2; - private int n1; - private int n2; - /** - * The number of unresolved pixel in dir matrix (which haven't a drainage direction). - */ - private int nis; - /** - * Dimension of the temporary vectors which allow to resolve the undrainage pixel. - */ - private int istack; - /** - * Dimension of the temporary vectors which allow to resolve the undrainage pixel. - */ - private int pstack; - private int nf; - private int pooln; - private int npool; - /** - * Used to memorise the index of the "pixel pool". - */ - private int[] ipool; - /** - * Used to memorise the index of the "pixel pool". - */ - private int[] jpool; - /** - * Vector where the program memorizes the index of the elevation matrix whose point doesn't drain - * in any D8 cells. - */ - private int[] is; - /** - * Vector where the program memorizes the index of the elevation matrix whose point doesn't drain - * in any D8 cells. - */ - private int[] js; - private int[] dn; - - private int[][] dir, apool; - private int[][] DIR_WITHFLOW_EXITING_INVERTED = ModelsSupporter.DIR_WITHFLOW_EXITING_INVERTED; - private double et, emin; - - /** - * The pitfiller algorithm. - * - * @throws Exception - **/ - @Execute - public void process() throws Exception { - if (!concatOr(outPit == null, doReset)) { - return; - } - checkNull(inElev); - HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); - nCols = regionMap.get(CoverageUtilities.COLS).intValue(); - nRows = regionMap.get(CoverageUtilities.ROWS).intValue(); - xRes = regionMap.get(CoverageUtilities.XRES); - yRes = regionMap.get(CoverageUtilities.YRES); - - elevationIter = CoverageUtilities.getRandomIterator(inElev); - - // output raster - WritableRaster pitRaster = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, null); - pitIter = CoverageUtilities.getWritableRandomIterator(pitRaster); - - for( int i = 0; i < nRows; i++ ) { - if (isCanceled(pm)) { - return; - } - for( int j = 0; j < nCols; j++ ) { - double value = elevationIter.getSampleDouble(j, i, 0); - if (!isNovalue(value)) { - pitIter.setSample(j, i, 0, value); - } else { - pitIter.setSample(j, i, 0, PITNOVALUE); - } - } - } - - flood(); - if (isCanceled(pm)) { - return; - } - - for( int i = 0; i < nRows; i++ ) { - if (isCanceled(pm)) { - return; - } - for( int j = 0; j < nCols; j++ ) { - if (dir[j][i] == 0) { - return; - } - double value = pitIter.getSampleDouble(j, i, 0); - if (value == PITNOVALUE || isNovalue(value)) { - pitIter.setSample(j, i, 0, doubleNovalue); - } - } - } - pitIter.done(); - - outPit = CoverageUtilities.buildCoverage("pitfiller", pitRaster, regionMap, inElev.getCoordinateReferenceSystem()); - } - - /** - * Takes the elevation matrix and calculate a matrix with pits filled, using the flooding - * algorithm. - * - * @throws Exception - */ - private void flood() throws Exception { - - /* define directions */ - // Initialise the vector to a supposed dimension, if the number of - // unresolved pixel overload the vector there are a method which resized - // the vectors. - istack = (int) (nCols * nRows * 0.1); - pstack = istack; - dn = new int[istack]; - is = new int[istack]; - js = new int[istack]; - ipool = new int[pstack]; - jpool = new int[pstack]; - i1 = 0; - i2 = 0; - n1 = nCols; - n2 = nRows; - - setdf(); - - } - - /** - * Initialise the dir matrix and then call the set method to obtain a D8 matrix - *

- * It's possible summarise the logical pitfiller stream like: - *

    - *
  1. Initialise DIR to 0 (no flood) if the elevation value is valid and isn't apixel on the - * edge
  2. - *
  3. If the pixel have as DIR[j][i] a valid value then check if the adjacent pixels are valid - * values: - *
    - *
    Yes, there are only valid value - *
    then set the DIR value to the drainage direction (if slope is greater than 0) or to 0 if - * there aren't. - *
    No, there are an invalid value - *
    set DIR to -1 (impossible value) - *
    - *
  4. - *
  5. If DIR=0 then keep in temporary vector the index of this pixel.
  6. - *
  7. Call vdn method, which assign the drainage value if the slope is greater or equal - * to 0. Notice that neighbour pixel are valid pixel if DIR=0. And then calculate the minimum - * elevation point (where there are a pool)
  8. - *
  9. Start a conditioning cycle (while there are a cell which have as a drainage direction 0 - * (is a pool);
      - *
    1. Find if there are a pool and check the pixels which belong to
    2. - *
    3. Check the lowest point of the edge
    4. - *
    5. Set the pixels pool elevation to the lowest point of the edge
    6. - *
    7. Call vdn to recalculate unresolved pixels - *
    8. - - *
    9. return to the begin
    10. - *
    - *
- * - * @param d1 the vector which contains all the possible first components drainage direction. - * @param d2 the vector which contains all the possible second components drainage direction. - * @throws Exception - */ - private void setdf() throws Exception { - - int nflat; - int ni; - int n; - int ip; - int imin; - int jn; - int in; - int np1; - int nt; - float per = 1; - // direction factor, where the components are 1/length - double[] fact = calculateDirectionFactor(xRes, yRes); - - dir = new int[nCols][nRows]; - apool = new int[nCols][nRows]; - - pm.message(msg.message("pitfiller.initbound")); - - /* Initialize boundaries */ - for( int i = i1; i < n1; i++ ) { - dir[i][i2] = -1; - dir[i][n2 - 1] = -1; - } - for( int i = i2; i < n2; i++ ) { - dir[i1][i] = -1; - dir[n1 - 1][i] = -1; - } - pm.message(msg.message("pitfiller.initpointers")); - - /* - * Initialise internal pointers, if the point is an invalid value then set the dir value to - * -1 else to 0 - */ - for( int i = (i2 + 1); i < (n2 - 1); i++ ) { - if (isCanceled(pm)) { - return; - } - for( int j = (i1 + 1); j < (n1 - 1); j++ ) { - if (isNovalue(pitIter.getSampleDouble(j, i, 0))) { - dir[j][i] = -1; - } else { - dir[j][i] = 0; - } - } - } - - pm.message(msg.message("pitfiller.setpos")); - - /* Set positive slope directions - store unresolved on stack */ - nis = 0; - for( int i = (i2 + 1); i < (n2 - 1); i++ ) { - if (isCanceled(pm)) { - return; - } - for( int j = (i1 + 1); j < (n1 - 1); j++ ) { - if (!isNovalue(pitIter.getSampleDouble(j, i, 0))) { - // set the value in the dir matrix (D8 matrix) - set(i, j, dir, fact); - } - /* - * Put unresolved pixels (which have, in the dir matrix, 0 as value) on stack - * addstack method increased nis by one unit - */ - if (dir[j][i] == 0) { - addstack(i, j); - } - } - } - - nflat = nis; - /* routine to drain flats to neighbors */ - imin = vdn(nflat); - n = nis; - pm.message(msg.message("pitfiller.numpit") + n); - np1 = n; - nt = (int) (np1 * 1 - per / 100); - - /* initialize apool to zero */ - for( int i = i2; i < n2; i++ ) { - if (isCanceled(pm)) { - return; - } - for( int j = i1; j < n1; j++ ) { - apool[j][i] = 0; - } - } - - pm.message(msg.message("pitfiller.main")); - pm.message(msg.message("pitfiller.perc")); - pm.message("0%"); - /* store unresolved stack location in apool for easy deletion */ - int i = 0, j = 0; - while( nis > 0 ) { - if (isCanceled(pm)) { - return; - } - // set the index to the lowest point in the map, during the - // iteration, which filled the elevation map, the lowest point will - // changed - i = is[imin]; - j = js[imin]; - pooln = 1; - npool = 0; - nf = 0;/* reset flag to that new min elev is found */ - // calculate recursively the pool - pool(i, j); /* - * Recursive call on unresolved point with lowest elevation - */ - - /* - * Find the pour point of the pool: the lowest point on the edge of the pool - */ - for( ip = 1; ip <= npool; ip++ ) { - if (isCanceled(pm)) { - return; - } - i = ipool[ip]; - j = jpool[ip]; - for( int k = 1; k <= 8; k++ ) { - jn = j + DIR_WITHFLOW_EXITING_INVERTED[k][0]; - in = i + DIR_WITHFLOW_EXITING_INVERTED[k][1]; - // if the point isn't in this pool but on the edge then - // check the minimun elevation edge - if (apool[jn][in] != pooln) { - et = max2(pitIter.getSampleDouble(j, i, 0), pitIter.getSampleDouble(jn, in, 0)); - if (nf == 0) { - emin = et; - nf = 1; - } else { - if (emin > et) { - emin = et; - } - } - } - } - } - - /* Fill the pool */ - for( int k = 1; k <= npool; k++ ) { - if (isCanceled(pm)) { - return; - } - i = ipool[k]; - j = jpool[k]; - if (pitIter.getSampleDouble(j, i, 0) <= emin) { - if (dir[j][i] > 0) { /* Can be in pool, but not flat */ - dir[j][i] = 0; - addstack(i, j); - } - - for( ip = 1; ip <= 8; ip++ ) { - jn = j + DIR_WITHFLOW_EXITING_INVERTED[ip][0]; - in = i + DIR_WITHFLOW_EXITING_INVERTED[ip][1]; - if ((pitIter.getSampleDouble(jn, in, 0) > pitIter.getSampleDouble(j, i, 0)) && (dir[jn][in] > 0)) { - /* - * Only zero direction of neighbors that are higher - because lower or - * equal may be a pour point in a pit that must not be disrupted - */ - dir[jn][in] = 0; - addstack(in, jn); - } - } - pitIter.setSample(j, i, 0, emin); - } - apool[j][i] = 0; - } - - /* reset unresolved stack */ - ni = 0; - for( ip = 1; ip <= nis; ip++ ) { - if (isCanceled(pm)) { - return; - } - set(is[ip], js[ip], dir, fact); - - if (dir[js[ip]][is[ip]] == 0) { - ni++; - is[ni] = is[ip]; - js[ni] = js[ip]; - } - } - - n = nis; - - imin = vdn(ni); - // System.out.println(nis); - if (nis < nt) { - if (per % 10 == 0) - pm.message((int) per + "%"); - per = per + 1; - nt = (int) (np1 * (1 - per / 100)); - } - } - pm.message("Pitfiller finished..."); - } - - /** - * Routine to add entry to is, js stack, enlarging if necessary - * @param i - * @param j - */ - private void addstack( int i, int j ) { - /* Routine to add entry to is, js stack, enlarging if necessary */ - nis = nis + 1; - if (nis >= istack) { - /* Try enlarging */ - istack = (int) (istack + nCols * nRows * .1) + 2; - - is = realloc(is, istack); - js = realloc(js, istack); - dn = realloc(dn, istack); - - } - - is[nis] = i; - js[nis] = j; - // out.println(" i = " + i + "nis = " + nis); - } - - private int[] realloc( int[] is2, int istack2 ) { - - int[] resized = new int[istack2]; - for( int i = 0; i < is2.length; i++ ) { - resized[i] = is2[i]; - } - - return resized; - } - - /** - * Try to find a drainage direction for undefinite cell. - * - *

If the drainage direction is found - * then put it in dir else kept its index in is and js. N.B. in the set method the drainage - * directions is set only if the slope between two pixel is positive. At this step the dir - * value is set also the slope is equal to zero.

- * - * @param n the number of indefinite cell in the dir matrix - * @return imin or the number of unresolved pixel after have run the method - */ - private int vdn( int n ) { - int imin; - double ed; - nis = n; - - do { - if (isCanceled(pm)) { - return -1; - } - n = nis; - nis = 0; - for( int ip = 1; ip <= n; ip++ ) { - dn[ip] = 0; - } - - for( int k = 1; k <= 8; k++ ) { - for( int ip = 1; ip <= n; ip++ ) { - - ed = pitIter.getSampleDouble(js[ip], is[ip], 0) - - pitIter.getSampleDouble(js[ip] + DIR_WITHFLOW_EXITING_INVERTED[k][0], is[ip] - + DIR_WITHFLOW_EXITING_INVERTED[k][1], 0); - if ((ed >= 0.) - && ((dir[js[ip] + DIR_WITHFLOW_EXITING_INVERTED[k][0]][is[ip] + DIR_WITHFLOW_EXITING_INVERTED[k][1]] != 0) && (dn[ip] == 0))) - dn[ip] = k; - - } - } - imin = 1; /* location of point on stack with lowest elevation */ - for( int ip = 1; ip <= n; ip++ ) { - if (dn[ip] > 0) { - dir[js[ip]][is[ip]] = dn[ip]; - } else { - nis++; - is[nis] = is[ip]; - js[nis] = js[ip]; - if (pitIter.getSampleDouble(js[nis], is[nis], 0) < pitIter.getSampleDouble(js[imin], is[imin], 0)) - imin = nis; - } - } - // out.println("vdn n = " + n + "nis = " + nis); - } while( nis < n ); - - return imin; - } - - /** - * function to compute pool recursively and at the same time determine the minimum elevation of - * the edge. - */ - private void pool( int i, int j ) { - int in; - int jn; - if (apool[j][i] <= 0) { /* not already part of a pool */ - if (dir[j][i] != -1) {/* check only dir since dir was initialized */ - /* not on boundary */ - apool[j][i] = pooln;/* apool assigned pool number */ - npool = npool + 1;// the number of pixel in the pool - if (npool >= pstack) { - if (pstack < nCols * nRows) { - pstack = (int) (pstack + nCols * nRows * .1); - if (pstack > nCols * nRows) { - /* Pool stack too large */ - } - - ipool = realloc(ipool, pstack); - jpool = realloc(jpool, pstack); - } - - } - - ipool[npool] = i; - jpool[npool] = j; - - for( int k = 1; k <= 8; k++ ) { - in = i + DIR_WITHFLOW_EXITING_INVERTED[k][1]; - jn = j + DIR_WITHFLOW_EXITING_INVERTED[k][0]; - /* test if neighbor drains towards cell excluding boundaries */ - if (((dir[jn][in] > 0) && ((dir[jn][in] - k == 4) || (dir[jn][in] - k == -4))) - || ((dir[jn][in] == 0) && (pitIter.getSampleDouble(jn, in, 0) >= pitIter.getSampleDouble(j, i, 0)))) { - /* so that adjacent flats get included */ - pool(in, jn); - } - } - - } - } - - } - - private double max2( double e1, double e2 ) { - double em; - em = e1; - if (e2 > em) - em = e2; - return em; - } - - /** - * Calculate the drainage direction with D8 method. Find the direction which have the maximum - * slope and set it as the drainage directionthe in the cell (i,j) in dir matrix. Is used in - * some horton like pitfiller, floe,... - * - * @param i j are the position index of the cell in the matrix. - * @param dir is the drainage direction matrix, a cell contains an int value in the range 0 to 8 - * (or 10 if it is an outlet point). - *@param elevation is the DEM. - *@param fact is the direction factor (1/lenght). - */ - private void set( int i, int j, int[][] dir, double[] fact ) { - double slope = 0; - double smax; - int in; - int jn; - dir[j][i] = 0; /* This necessary for repeat passes after level raised */ - smax = 0.0; - - for( int k = 1; k <= 8; k++ ) // examine adjacent cells first - { - jn = j + DIR_WITHFLOW_EXITING_INVERTED[k][0]; - in = i + DIR_WITHFLOW_EXITING_INVERTED[k][1]; - if (isNovalue(pitIter.getSampleDouble(jn, in, 0))) { - dir[j][i] = -1; - break; - } - - if (dir[j][i] != -1) { - slope = fact[k] * (pitIter.getSampleDouble(j, i, 0) - pitIter.getSampleDouble(jn, in, 0)); - - if (slope > smax) { - smax = slope; - dir[j][i] = k; - } - } - } - - } - - /** - * Calculate the drainage direction factor (is used in some horton machine like pitfiller, - * flow,...) - * - * @param dx is the resolution of a raster map in the x direction. - * @param dy is the resolution of the raster map in the y direction. - * @return fact the direction factor or 1/lenght where lenght is the distance of the - * pixel from the central poxel. - */ - private double[] calculateDirectionFactor( double dx, double dy ) { - // direction factor, where the components are 1/length - double[] fact = new double[9]; - for( int k = 1; k <= 8; k++ ) { - fact[k] = 1.0 / (Math.sqrt(DIR_WITHFLOW_EXITING_INVERTED[k][0] * dy * DIR_WITHFLOW_EXITING_INVERTED[k][0] * dy - + DIR_WITHFLOW_EXITING_INVERTED[k][1] * DIR_WITHFLOW_EXITING_INVERTED[k][1] * dx * dx)); - } - return fact; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.demmanipulation.pitfiller; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.WritableRaster; +import java.util.HashMap; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.modules.ModelsSupporter; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; + +@Description("It fills the depression points present within a DEM.") +@Documentation("Pitfiller.html") +@Author(name = "David Tarboton, Andrea Antonello", contact = "http://www.neng.usu.edu/cee/faculty/dtarb/tardem.html#programs, http://www.hydrologis.com") +@Keywords("Dem manipulation, Geomorphology, DrainDir") +@Label(JGTConstants.DEMMANIPULATION) +@Name("pit") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class Pitfiller extends JGTModel { + @Description("The map of digital elevation model (DEM).") + @In + public GridCoverage2D inElev; + + @Description("The depitted elevation map.") + @Out + public GridCoverage2D outPit = null; + + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + /** + * The novalue needed by PitFiller. + */ + public static final double PITNOVALUE = -1.0; + private WritableRandomIter pitIter; + private RandomIter elevationIter = null; + + private int nCols; + private int nRows; + private double xRes; + private double yRes; + + // private final static String modelParameters = eu.hydrologis.libs.messages.help.Messages + // .getString("h_pitfiller.usage"); + /** + * i1, i2, n1, n2, are the minimum and maximum index for the activeRegion + * matrix (from 0 to nColumns or nRows). + */ + private int i1; + private int i2; + private int n1; + private int n2; + /** + * The number of unresolved pixel in dir matrix (which haven't a drainage direction). + */ + private int nis; + /** + * Dimension of the temporary vectors which allow to resolve the undrainage pixel. + */ + private int istack; + /** + * Dimension of the temporary vectors which allow to resolve the undrainage pixel. + */ + private int pstack; + private int nf; + private int pooln; + private int npool; + /** + * Used to memorise the index of the "pixel pool". + */ + private int[] ipool; + /** + * Used to memorise the index of the "pixel pool". + */ + private int[] jpool; + /** + * Vector where the program memorizes the index of the elevation matrix whose point doesn't drain + * in any D8 cells. + */ + private int[] is; + /** + * Vector where the program memorizes the index of the elevation matrix whose point doesn't drain + * in any D8 cells. + */ + private int[] js; + private int[] dn; + + private int[][] dir, apool; + private int[][] DIR_WITHFLOW_EXITING_INVERTED = ModelsSupporter.DIR_WITHFLOW_EXITING_INVERTED; + private double et, emin; + + /** + * The pitfiller algorithm. + * + * @throws Exception + **/ + @Execute + public void process() throws Exception { + if (!concatOr(outPit == null, doReset)) { + return; + } + checkNull(inElev); + HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); + nCols = regionMap.get(CoverageUtilities.COLS).intValue(); + nRows = regionMap.get(CoverageUtilities.ROWS).intValue(); + xRes = regionMap.get(CoverageUtilities.XRES); + yRes = regionMap.get(CoverageUtilities.YRES); + + elevationIter = CoverageUtilities.getRandomIterator(inElev); + + // output raster + WritableRaster pitRaster = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, null); + pitIter = CoverageUtilities.getWritableRandomIterator(pitRaster); + + for( int i = 0; i < nRows; i++ ) { + if (isCanceled(pm)) { + return; + } + for( int j = 0; j < nCols; j++ ) { + double value = elevationIter.getSampleDouble(j, i, 0); + if (!isNovalue(value)) { + pitIter.setSample(j, i, 0, value); + } else { + pitIter.setSample(j, i, 0, PITNOVALUE); + } + } + } + + flood(); + if (isCanceled(pm)) { + return; + } + + for( int i = 0; i < nRows; i++ ) { + if (isCanceled(pm)) { + return; + } + for( int j = 0; j < nCols; j++ ) { + if (dir[j][i] == 0) { + return; + } + double value = pitIter.getSampleDouble(j, i, 0); + if (value == PITNOVALUE || isNovalue(value)) { + pitIter.setSample(j, i, 0, doubleNovalue); + } + } + } + pitIter.done(); + + outPit = CoverageUtilities.buildCoverage("pitfiller", pitRaster, regionMap, inElev.getCoordinateReferenceSystem()); + } + + /** + * Takes the elevation matrix and calculate a matrix with pits filled, using the flooding + * algorithm. + * + * @throws Exception + */ + private void flood() throws Exception { + + /* define directions */ + // Initialise the vector to a supposed dimension, if the number of + // unresolved pixel overload the vector there are a method which resized + // the vectors. + istack = (int) (nCols * nRows * 0.1); + pstack = istack; + dn = new int[istack]; + is = new int[istack]; + js = new int[istack]; + ipool = new int[pstack]; + jpool = new int[pstack]; + i1 = 0; + i2 = 0; + n1 = nCols; + n2 = nRows; + + setdf(); + + } + + /** + * Initialise the dir matrix and then call the set method to obtain a D8 matrix + *

+ * It's possible summarise the logical pitfiller stream like: + *

    + *
  1. Initialise DIR to 0 (no flood) if the elevation value is valid and isn't apixel on the + * edge
  2. + *
  3. If the pixel have as DIR[j][i] a valid value then check if the adjacent pixels are valid + * values: + *
    + *
    Yes, there are only valid value + *
    then set the DIR value to the drainage direction (if slope is greater than 0) or to 0 if + * there aren't. + *
    No, there are an invalid value + *
    set DIR to -1 (impossible value) + *
    + *
  4. + *
  5. If DIR=0 then keep in temporary vector the index of this pixel.
  6. + *
  7. Call vdn method, which assign the drainage value if the slope is greater or equal + * to 0. Notice that neighbour pixel are valid pixel if DIR=0. And then calculate the minimum + * elevation point (where there are a pool)
  8. + *
  9. Start a conditioning cycle (while there are a cell which have as a drainage direction 0 + * (is a pool);
      + *
    1. Find if there are a pool and check the pixels which belong to
    2. + *
    3. Check the lowest point of the edge
    4. + *
    5. Set the pixels pool elevation to the lowest point of the edge
    6. + *
    7. Call vdn to recalculate unresolved pixels + *
    8. - + *
    9. return to the begin
    10. + *
    + *
+ * + * @param d1 the vector which contains all the possible first components drainage direction. + * @param d2 the vector which contains all the possible second components drainage direction. + * @throws Exception + */ + private void setdf() throws Exception { + + int nflat; + int ni; + int n; + int ip; + int imin; + int jn; + int in; + int np1; + int nt; + float per = 1; + // direction factor, where the components are 1/length + double[] fact = calculateDirectionFactor(xRes, yRes); + + dir = new int[nCols][nRows]; + apool = new int[nCols][nRows]; + + pm.message(msg.message("pitfiller.initbound")); + + /* Initialize boundaries */ + for( int i = i1; i < n1; i++ ) { + dir[i][i2] = -1; + dir[i][n2 - 1] = -1; + } + for( int i = i2; i < n2; i++ ) { + dir[i1][i] = -1; + dir[n1 - 1][i] = -1; + } + pm.message(msg.message("pitfiller.initpointers")); + + /* + * Initialise internal pointers, if the point is an invalid value then set the dir value to + * -1 else to 0 + */ + for( int i = (i2 + 1); i < (n2 - 1); i++ ) { + if (isCanceled(pm)) { + return; + } + for( int j = (i1 + 1); j < (n1 - 1); j++ ) { + if (isNovalue(pitIter.getSampleDouble(j, i, 0))) { + dir[j][i] = -1; + } else { + dir[j][i] = 0; + } + } + } + + pm.message(msg.message("pitfiller.setpos")); + + /* Set positive slope directions - store unresolved on stack */ + nis = 0; + for( int i = (i2 + 1); i < (n2 - 1); i++ ) { + if (isCanceled(pm)) { + return; + } + for( int j = (i1 + 1); j < (n1 - 1); j++ ) { + if (!isNovalue(pitIter.getSampleDouble(j, i, 0))) { + // set the value in the dir matrix (D8 matrix) + set(i, j, dir, fact); + } + /* + * Put unresolved pixels (which have, in the dir matrix, 0 as value) on stack + * addstack method increased nis by one unit + */ + if (dir[j][i] == 0) { + addstack(i, j); + } + } + } + + nflat = nis; + /* routine to drain flats to neighbors */ + imin = vdn(nflat); + n = nis; + pm.message(msg.message("pitfiller.numpit") + n); + np1 = n; + nt = (int) (np1 * 1 - per / 100); + + /* initialize apool to zero */ + for( int i = i2; i < n2; i++ ) { + if (isCanceled(pm)) { + return; + } + for( int j = i1; j < n1; j++ ) { + apool[j][i] = 0; + } + } + + pm.message(msg.message("pitfiller.main")); + pm.message(msg.message("pitfiller.perc")); + pm.message("0%"); + /* store unresolved stack location in apool for easy deletion */ + int i = 0, j = 0; + while( nis > 0 ) { + if (isCanceled(pm)) { + return; + } + // set the index to the lowest point in the map, during the + // iteration, which filled the elevation map, the lowest point will + // changed + i = is[imin]; + j = js[imin]; + pooln = 1; + npool = 0; + nf = 0;/* reset flag to that new min elev is found */ + // calculate recursively the pool + pool(i, j); /* + * Recursive call on unresolved point with lowest elevation + */ + + /* + * Find the pour point of the pool: the lowest point on the edge of the pool + */ + for( ip = 1; ip <= npool; ip++ ) { + if (isCanceled(pm)) { + return; + } + i = ipool[ip]; + j = jpool[ip]; + for( int k = 1; k <= 8; k++ ) { + jn = j + DIR_WITHFLOW_EXITING_INVERTED[k][0]; + in = i + DIR_WITHFLOW_EXITING_INVERTED[k][1]; + // if the point isn't in this pool but on the edge then + // check the minimun elevation edge + if (apool[jn][in] != pooln) { + et = max2(pitIter.getSampleDouble(j, i, 0), pitIter.getSampleDouble(jn, in, 0)); + if (nf == 0) { + emin = et; + nf = 1; + } else { + if (emin > et) { + emin = et; + } + } + } + } + } + + /* Fill the pool */ + for( int k = 1; k <= npool; k++ ) { + if (isCanceled(pm)) { + return; + } + i = ipool[k]; + j = jpool[k]; + if (pitIter.getSampleDouble(j, i, 0) <= emin) { + if (dir[j][i] > 0) { /* Can be in pool, but not flat */ + dir[j][i] = 0; + addstack(i, j); + } + + for( ip = 1; ip <= 8; ip++ ) { + jn = j + DIR_WITHFLOW_EXITING_INVERTED[ip][0]; + in = i + DIR_WITHFLOW_EXITING_INVERTED[ip][1]; + if ((pitIter.getSampleDouble(jn, in, 0) > pitIter.getSampleDouble(j, i, 0)) && (dir[jn][in] > 0)) { + /* + * Only zero direction of neighbors that are higher - because lower or + * equal may be a pour point in a pit that must not be disrupted + */ + dir[jn][in] = 0; + addstack(in, jn); + } + } + pitIter.setSample(j, i, 0, emin); + } + apool[j][i] = 0; + } + + /* reset unresolved stack */ + ni = 0; + for( ip = 1; ip <= nis; ip++ ) { + if (isCanceled(pm)) { + return; + } + set(is[ip], js[ip], dir, fact); + + if (dir[js[ip]][is[ip]] == 0) { + ni++; + is[ni] = is[ip]; + js[ni] = js[ip]; + } + } + + n = nis; + + imin = vdn(ni); + // System.out.println(nis); + if (nis < nt) { + if (per % 10 == 0) + pm.message((int) per + "%"); + per = per + 1; + nt = (int) (np1 * (1 - per / 100)); + } + } + pm.message("Pitfiller finished..."); + } + + /** + * Routine to add entry to is, js stack, enlarging if necessary + * @param i + * @param j + */ + private void addstack( int i, int j ) { + /* Routine to add entry to is, js stack, enlarging if necessary */ + nis = nis + 1; + if (nis >= istack) { + /* Try enlarging */ + istack = (int) (istack + nCols * nRows * .1) + 2; + + is = realloc(is, istack); + js = realloc(js, istack); + dn = realloc(dn, istack); + + } + + is[nis] = i; + js[nis] = j; + // out.println(" i = " + i + "nis = " + nis); + } + + private int[] realloc( int[] is2, int istack2 ) { + + int[] resized = new int[istack2]; + for( int i = 0; i < is2.length; i++ ) { + resized[i] = is2[i]; + } + + return resized; + } + + /** + * Try to find a drainage direction for undefinite cell. + * + *

If the drainage direction is found + * then put it in dir else kept its index in is and js. N.B. in the set method the drainage + * directions is set only if the slope between two pixel is positive. At this step the dir + * value is set also the slope is equal to zero.

+ * + * @param n the number of indefinite cell in the dir matrix + * @return imin or the number of unresolved pixel after have run the method + */ + private int vdn( int n ) { + int imin; + double ed; + nis = n; + + do { + if (isCanceled(pm)) { + return -1; + } + n = nis; + nis = 0; + for( int ip = 1; ip <= n; ip++ ) { + dn[ip] = 0; + } + + for( int k = 1; k <= 8; k++ ) { + for( int ip = 1; ip <= n; ip++ ) { + + ed = pitIter.getSampleDouble(js[ip], is[ip], 0) + - pitIter.getSampleDouble(js[ip] + DIR_WITHFLOW_EXITING_INVERTED[k][0], is[ip] + + DIR_WITHFLOW_EXITING_INVERTED[k][1], 0); + if ((ed >= 0.) + && ((dir[js[ip] + DIR_WITHFLOW_EXITING_INVERTED[k][0]][is[ip] + DIR_WITHFLOW_EXITING_INVERTED[k][1]] != 0) && (dn[ip] == 0))) + dn[ip] = k; + + } + } + imin = 1; /* location of point on stack with lowest elevation */ + for( int ip = 1; ip <= n; ip++ ) { + if (dn[ip] > 0) { + dir[js[ip]][is[ip]] = dn[ip]; + } else { + nis++; + is[nis] = is[ip]; + js[nis] = js[ip]; + if (pitIter.getSampleDouble(js[nis], is[nis], 0) < pitIter.getSampleDouble(js[imin], is[imin], 0)) + imin = nis; + } + } + // out.println("vdn n = " + n + "nis = " + nis); + } while( nis < n ); + + return imin; + } + + /** + * function to compute pool recursively and at the same time determine the minimum elevation of + * the edge. + */ + private void pool( int i, int j ) { + int in; + int jn; + if (apool[j][i] <= 0) { /* not already part of a pool */ + if (dir[j][i] != -1) {/* check only dir since dir was initialized */ + /* not on boundary */ + apool[j][i] = pooln;/* apool assigned pool number */ + npool = npool + 1;// the number of pixel in the pool + if (npool >= pstack) { + if (pstack < nCols * nRows) { + pstack = (int) (pstack + nCols * nRows * .1); + if (pstack > nCols * nRows) { + /* Pool stack too large */ + } + + ipool = realloc(ipool, pstack); + jpool = realloc(jpool, pstack); + } + + } + + ipool[npool] = i; + jpool[npool] = j; + + for( int k = 1; k <= 8; k++ ) { + in = i + DIR_WITHFLOW_EXITING_INVERTED[k][1]; + jn = j + DIR_WITHFLOW_EXITING_INVERTED[k][0]; + /* test if neighbor drains towards cell excluding boundaries */ + if (((dir[jn][in] > 0) && ((dir[jn][in] - k == 4) || (dir[jn][in] - k == -4))) + || ((dir[jn][in] == 0) && (pitIter.getSampleDouble(jn, in, 0) >= pitIter.getSampleDouble(j, i, 0)))) { + /* so that adjacent flats get included */ + pool(in, jn); + } + } + + } + } + + } + + private double max2( double e1, double e2 ) { + double em; + em = e1; + if (e2 > em) + em = e2; + return em; + } + + /** + * Calculate the drainage direction with D8 method. Find the direction which have the maximum + * slope and set it as the drainage directionthe in the cell (i,j) in dir matrix. Is used in + * some horton like pitfiller, floe,... + * + * @param i j are the position index of the cell in the matrix. + * @param dir is the drainage direction matrix, a cell contains an int value in the range 0 to 8 + * (or 10 if it is an outlet point). + *@param elevation is the DEM. + *@param fact is the direction factor (1/lenght). + */ + private void set( int i, int j, int[][] dir, double[] fact ) { + double slope = 0; + double smax; + int in; + int jn; + dir[j][i] = 0; /* This necessary for repeat passes after level raised */ + smax = 0.0; + + for( int k = 1; k <= 8; k++ ) // examine adjacent cells first + { + jn = j + DIR_WITHFLOW_EXITING_INVERTED[k][0]; + in = i + DIR_WITHFLOW_EXITING_INVERTED[k][1]; + if (isNovalue(pitIter.getSampleDouble(jn, in, 0))) { + dir[j][i] = -1; + break; + } + + if (dir[j][i] != -1) { + slope = fact[k] * (pitIter.getSampleDouble(j, i, 0) - pitIter.getSampleDouble(jn, in, 0)); + + if (slope > smax) { + smax = slope; + dir[j][i] = k; + } + } + } + + } + + /** + * Calculate the drainage direction factor (is used in some horton machine like pitfiller, + * flow,...) + * + * @param dx is the resolution of a raster map in the x direction. + * @param dy is the resolution of the raster map in the y direction. + * @return fact the direction factor or 1/lenght where lenght is the distance of the + * pixel from the central poxel. + */ + private double[] calculateDirectionFactor( double dx, double dy ) { + // direction factor, where the components are 1/length + double[] fact = new double[9]; + for( int k = 1; k <= 8; k++ ) { + fact[k] = 1.0 / (Math.sqrt(DIR_WITHFLOW_EXITING_INVERTED[k][0] * dy * DIR_WITHFLOW_EXITING_INVERTED[k][0] * dy + + DIR_WITHFLOW_EXITING_INVERTED[k][1] * DIR_WITHFLOW_EXITING_INVERTED[k][1] * dx * dx)); + } + return fact; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/demmanipulation/wateroutlet/Wateroutlet.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/demmanipulation/wateroutlet/Wateroutlet.java index 692058f84..3bebc5085 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/demmanipulation/wateroutlet/Wateroutlet.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/demmanipulation/wateroutlet/Wateroutlet.java @@ -1,242 +1,242 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.demmanipulation.wateroutlet; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; - -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; - -@Description("Extract the watershed for a defined outlet (ported from GRASS r.wateroutlet).") -@Documentation("Wateroutlet.html") -@Author(name = "Charles Ehlschlaeger, Andrea Antonello", contact = "US Army Construction Engineering Research Laboratory, http://www.hydrologis.com") -@Keywords("Dem manipulation, Geomorphology, FlowDirections") -@Label(JGTConstants.DEMMANIPULATION) -@Name("wateroutlet") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class Wateroutlet extends JGTModel { - @Description("The northern coordinate of the watershed outlet.") - @UI(JGTConstants.NORTHING_UI_HINT) - @In - public double pNorth = -1.0; - - @Description("The eastern coordinate of the watershed outlet.") - @UI(JGTConstants.EASTING_UI_HINT) - @In - public double pEast = -1.0; - - @Description("The map of flowdirections.") - @In - public GridCoverage2D inFlow; - - @Description("The extracted basin mask.") - @Out - public GridCoverage2D outBasin = null; - - @Description("The area of the extracted basin.") - @Out - public double outArea = 0; - - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - private int[] pt_seg = new int[1]; - private int[] ba_seg = new int[1]; - private static final int RAMSEGBITS = 4; - private static final int DOUBLEBITS = 8; /* 2 * ramsegbits */ - private static final int SEGLENLESS = 15; /* 2 ^ ramsegbits - 1 */ - - private double[] drain_ptrs = null; - - private double[] bas_ptrs = null; - - private int ncols; - - private int nrows; - - @Execute - public void process() throws Exception { - if (!concatOr(outBasin == null, doReset)) { - return; - } - checkNull(inFlow); - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); - ncols = regionMap.getCols(); - nrows = regionMap.getRows(); - double xRes = regionMap.getXres(); - double yRes = regionMap.getYres(); - double north = regionMap.getNorth(); - double west = regionMap.getWest(); - double south = regionMap.getSouth(); - double east = regionMap.getEast(); - - if (pNorth == -1 || pEast == -1) { - throw new ModelsIllegalargumentException("No outlet coordinates were supplied.", this.getClass().getSimpleName()); - } - if (pNorth > north || pNorth < south || pEast > east || pEast < west) { - throw new ModelsIllegalargumentException("The outlet point lies outside the map region.", this.getClass() - .getSimpleName()); - } - RenderedImage flowRI = inFlow.getRenderedImage(); - WritableRaster flowWR = CoverageUtilities.renderedImage2WritableRaster(flowRI, false); - WritableRandomIter flowIter = RandomIterFactory.createWritable(flowWR, null); - - WritableRaster basinWR = CoverageUtilities.createDoubleWritableRaster(ncols, nrows, null, null, null); - WritableRandomIter basinIter = RandomIterFactory.createWritable(basinWR, null); - - drain_ptrs = new double[size_array(pt_seg, nrows, ncols)]; - // bas = (CELL *) G_calloc (size_array (&ba_seg, nrows, ncols), - // sizeof(CELL)); - bas_ptrs = new double[size_array(ba_seg, nrows, ncols)]; - - pm.beginTask(msg.message("wateroutlet.extracting"), 2 * nrows); - for( int r = 0; r < nrows; r++ ) { - if (pm.isCanceled()) { - return; - } - for( int c = 0; c < ncols; c++ ) { - // adapt to the grass drainagedirection format "grass - // flow=(fluidturtle flow-1)" - double flowValue = flowIter.getSampleDouble(c, r, 0); - if (isNovalue(flowValue) || flowValue == 0) { - flowIter.setSample(c, r, 0, -1.0); - } else if (flowValue == 1.0) { - flowIter.setSample(c, r, 0, 8.0); - } else if (!isNovalue(flowValue)) { - flowIter.setSample(c, r, 0, flowValue - 1); - } - drain_ptrs[seg_index(pt_seg, r, c)] = flowIter.getSample(c, r, 0); - } - pm.worked(1); - } - - int row = (int) ((north - pNorth) / yRes); - int col = (int) ((pEast - west) / xRes); - - if (row >= 0 && col >= 0 && row < nrows && col < ncols) - overland_cells(row, col); - - for( int r = 0; r < nrows; r++ ) { - for( int c = 0; c < ncols; c++ ) { - double basinValue = bas_ptrs[seg_index(ba_seg, r, c)]; - basinIter.setSample(c, r, 0, basinValue); - if (isNovalue(flowIter.getSampleDouble(c, r, 0)) || basinIter.getSampleDouble(c, r, 0) == 0.0) { - basinIter.setSample(c, r, 0, doubleNovalue); - } else { - outArea = outArea + 1; - } - } - pm.worked(1); - } - pm.done(); - - outArea = outArea * xRes * yRes; - outBasin = CoverageUtilities.buildCoverage("basin", basinWR, regionMap, inFlow.getCoordinateReferenceSystem()); - } - - private int size_array( int[] ram_seg, int nrows, int ncols ) { - int size, segs_in_col; - - segs_in_col = ((nrows - 1) >> RAMSEGBITS) + 1; - ram_seg[0] = ((ncols - 1) >> RAMSEGBITS) + 1; - size = ((((nrows - 1) >> RAMSEGBITS) + 1) << RAMSEGBITS) * ((((ncols - 1) >> RAMSEGBITS) + 1) << RAMSEGBITS); - size -= ((segs_in_col << RAMSEGBITS) - nrows) << RAMSEGBITS; - size -= (ram_seg[0] << RAMSEGBITS) - ncols; - return (size); - } - - private int seg_index( int[] s, int r, int c ) { - int value = ((((r) >> RAMSEGBITS) * (s[0]) + (((c) >> RAMSEGBITS)) << DOUBLEBITS) + (((r) & SEGLENLESS) << RAMSEGBITS) + ((c) & SEGLENLESS)); - - return value; - } - - private void overland_cells( int row, int col ) { - int r, rr, c, cc, num_cells, size_more; - double value; - double[][] draindir = {{7, 6, 5}, {8, -17, 4}, {1, 2, 3}}; - - if (nrows > ncols) { - size_more = nrows; - } else { - size_more = ncols; - } - - // OneCell[] Acells = new OneCell[size_more]; - int[] AcellsR = new int[nrows * ncols]; - int[] AcellsC = new int[nrows * ncols]; - // OneCell Acells = new OneCell(nrows * ncols); - - // Acells = (ONE_CELL *) G_malloc (size_more * sizeof(ONE_CELL)); - num_cells = 1; - AcellsR[0] = row; - AcellsC[0] = col; - while( num_cells != 0 ) { - num_cells--; - // out.println(" num_cell = " + num_cells); - row = AcellsR[num_cells]; - col = AcellsC[num_cells]; - bas_ptrs[seg_index(ba_seg, row, col)] = 1.0; - for( r = row - 1, rr = 0; r <= row + 1; r++, rr++ ) { - for( c = col - 1, cc = 0; c <= col + 1; c++, cc++ ) { - if (r >= 0 && c >= 0 && r < nrows && c < ncols) { - value = drain_ptrs[seg_index(pt_seg, r, c)]; - - /* - * out.println("value == drain -> " + value + " == " + draindir[rr][cc] + " && - * bas_ptrs == 0.0 -> " + bas_ptrs[seg_index(ba_seg, r, c)] + " == 0.0"); - */ - - if ((value == draindir[rr][cc]) && (bas_ptrs[seg_index(ba_seg, r, c)] == 0.0)) { - if (num_cells == size_more) { - System.out.println("AAAAAAAAAAAARRRRRRRRRRRGGGGGGGGGGGHHHHHHHH"); - } - AcellsR[num_cells] = r; - AcellsC[num_cells++] = c; - } - } - } - } - } - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.demmanipulation.wateroutlet; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; + +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; + +@Description("Extract the watershed for a defined outlet (ported from GRASS r.wateroutlet).") +@Documentation("Wateroutlet.html") +@Author(name = "Charles Ehlschlaeger, Andrea Antonello", contact = "US Army Construction Engineering Research Laboratory, http://www.hydrologis.com") +@Keywords("Dem manipulation, Geomorphology, FlowDirections") +@Label(JGTConstants.DEMMANIPULATION) +@Name("wateroutlet") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class Wateroutlet extends JGTModel { + @Description("The northern coordinate of the watershed outlet.") + @UI(JGTConstants.NORTHING_UI_HINT) + @In + public double pNorth = -1.0; + + @Description("The eastern coordinate of the watershed outlet.") + @UI(JGTConstants.EASTING_UI_HINT) + @In + public double pEast = -1.0; + + @Description("The map of flowdirections.") + @In + public GridCoverage2D inFlow; + + @Description("The extracted basin mask.") + @Out + public GridCoverage2D outBasin = null; + + @Description("The area of the extracted basin.") + @Out + public double outArea = 0; + + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + private int[] pt_seg = new int[1]; + private int[] ba_seg = new int[1]; + private static final int RAMSEGBITS = 4; + private static final int DOUBLEBITS = 8; /* 2 * ramsegbits */ + private static final int SEGLENLESS = 15; /* 2 ^ ramsegbits - 1 */ + + private double[] drain_ptrs = null; + + private double[] bas_ptrs = null; + + private int ncols; + + private int nrows; + + @Execute + public void process() throws Exception { + if (!concatOr(outBasin == null, doReset)) { + return; + } + checkNull(inFlow); + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); + ncols = regionMap.getCols(); + nrows = regionMap.getRows(); + double xRes = regionMap.getXres(); + double yRes = regionMap.getYres(); + double north = regionMap.getNorth(); + double west = regionMap.getWest(); + double south = regionMap.getSouth(); + double east = regionMap.getEast(); + + if (pNorth == -1 || pEast == -1) { + throw new ModelsIllegalargumentException("No outlet coordinates were supplied.", this.getClass().getSimpleName()); + } + if (pNorth > north || pNorth < south || pEast > east || pEast < west) { + throw new ModelsIllegalargumentException("The outlet point lies outside the map region.", this.getClass() + .getSimpleName()); + } + RenderedImage flowRI = inFlow.getRenderedImage(); + WritableRaster flowWR = CoverageUtilities.renderedImage2WritableRaster(flowRI, false); + WritableRandomIter flowIter = RandomIterFactory.createWritable(flowWR, null); + + WritableRaster basinWR = CoverageUtilities.createDoubleWritableRaster(ncols, nrows, null, null, null); + WritableRandomIter basinIter = RandomIterFactory.createWritable(basinWR, null); + + drain_ptrs = new double[size_array(pt_seg, nrows, ncols)]; + // bas = (CELL *) G_calloc (size_array (&ba_seg, nrows, ncols), + // sizeof(CELL)); + bas_ptrs = new double[size_array(ba_seg, nrows, ncols)]; + + pm.beginTask(msg.message("wateroutlet.extracting"), 2 * nrows); + for( int r = 0; r < nrows; r++ ) { + if (pm.isCanceled()) { + return; + } + for( int c = 0; c < ncols; c++ ) { + // adapt to the grass drainagedirection format "grass + // flow=(fluidturtle flow-1)" + double flowValue = flowIter.getSampleDouble(c, r, 0); + if (isNovalue(flowValue) || flowValue == 0) { + flowIter.setSample(c, r, 0, -1.0); + } else if (flowValue == 1.0) { + flowIter.setSample(c, r, 0, 8.0); + } else if (!isNovalue(flowValue)) { + flowIter.setSample(c, r, 0, flowValue - 1); + } + drain_ptrs[seg_index(pt_seg, r, c)] = flowIter.getSample(c, r, 0); + } + pm.worked(1); + } + + int row = (int) ((north - pNorth) / yRes); + int col = (int) ((pEast - west) / xRes); + + if (row >= 0 && col >= 0 && row < nrows && col < ncols) + overland_cells(row, col); + + for( int r = 0; r < nrows; r++ ) { + for( int c = 0; c < ncols; c++ ) { + double basinValue = bas_ptrs[seg_index(ba_seg, r, c)]; + basinIter.setSample(c, r, 0, basinValue); + if (isNovalue(flowIter.getSampleDouble(c, r, 0)) || basinIter.getSampleDouble(c, r, 0) == 0.0) { + basinIter.setSample(c, r, 0, doubleNovalue); + } else { + outArea = outArea + 1; + } + } + pm.worked(1); + } + pm.done(); + + outArea = outArea * xRes * yRes; + outBasin = CoverageUtilities.buildCoverage("basin", basinWR, regionMap, inFlow.getCoordinateReferenceSystem()); + } + + private int size_array( int[] ram_seg, int nrows, int ncols ) { + int size, segs_in_col; + + segs_in_col = ((nrows - 1) >> RAMSEGBITS) + 1; + ram_seg[0] = ((ncols - 1) >> RAMSEGBITS) + 1; + size = ((((nrows - 1) >> RAMSEGBITS) + 1) << RAMSEGBITS) * ((((ncols - 1) >> RAMSEGBITS) + 1) << RAMSEGBITS); + size -= ((segs_in_col << RAMSEGBITS) - nrows) << RAMSEGBITS; + size -= (ram_seg[0] << RAMSEGBITS) - ncols; + return (size); + } + + private int seg_index( int[] s, int r, int c ) { + int value = ((((r) >> RAMSEGBITS) * (s[0]) + (((c) >> RAMSEGBITS)) << DOUBLEBITS) + (((r) & SEGLENLESS) << RAMSEGBITS) + ((c) & SEGLENLESS)); + + return value; + } + + private void overland_cells( int row, int col ) { + int r, rr, c, cc, num_cells, size_more; + double value; + double[][] draindir = {{7, 6, 5}, {8, -17, 4}, {1, 2, 3}}; + + if (nrows > ncols) { + size_more = nrows; + } else { + size_more = ncols; + } + + // OneCell[] Acells = new OneCell[size_more]; + int[] AcellsR = new int[nrows * ncols]; + int[] AcellsC = new int[nrows * ncols]; + // OneCell Acells = new OneCell(nrows * ncols); + + // Acells = (ONE_CELL *) G_malloc (size_more * sizeof(ONE_CELL)); + num_cells = 1; + AcellsR[0] = row; + AcellsC[0] = col; + while( num_cells != 0 ) { + num_cells--; + // out.println(" num_cell = " + num_cells); + row = AcellsR[num_cells]; + col = AcellsC[num_cells]; + bas_ptrs[seg_index(ba_seg, row, col)] = 1.0; + for( r = row - 1, rr = 0; r <= row + 1; r++, rr++ ) { + for( c = col - 1, cc = 0; c <= col + 1; c++, cc++ ) { + if (r >= 0 && c >= 0 && r < nrows && c < ncols) { + value = drain_ptrs[seg_index(pt_seg, r, c)]; + + /* + * out.println("value == drain -> " + value + " == " + draindir[rr][cc] + " && + * bas_ptrs == 0.0 -> " + bas_ptrs[seg_index(ba_seg, r, c)] + " == 0.0"); + */ + + if ((value == draindir[rr][cc]) && (bas_ptrs[seg_index(ba_seg, r, c)] == 0.0)) { + if (num_cells == size_more) { + System.out.println("AAAAAAAAAAAARRRRRRRRRRRGGGGGGGGGGGHHHHHHHH"); + } + AcellsR[num_cells] = r; + AcellsC[num_cells++] = c; + } + } + } + } + } + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/ab/Ab.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/ab/Ab.java index f24985605..0b662a8b1 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/ab/Ab.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/ab/Ab.java @@ -1,132 +1,132 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.geomorphology.ab; -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.WritableRaster; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; - -@Description("Calculates the draining area per length unit.") -@Documentation("Ab.html") -@Author(name = "Andrea Antonello, Erica Ghesla, Rigon Riccardo, Andrea Cozzini, Silvano Pisoni", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Geomorphology, Tca, Curvatures, DrainDir, FlowDirections") -@Label(JGTConstants.GEOMORPHOLOGY) -@Name("ab") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class Ab extends JGTModel { - @Description("The map of the total contributing area.") - @In - public GridCoverage2D inTca = null; - - @Description("The map of the planar curvatures.") - @In - public GridCoverage2D inPlan = null; - - @Description("The map of area per length.") - @Out - public GridCoverage2D outAb = null; - - @Description("The map of contour line.") - @Out - public GridCoverage2D outB = null; - - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - @Execute - public void process() throws Exception { - if (!concatOr(outAb == null, doReset)) { - return; - } - checkNull(inTca, inPlan); - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inTca); - int nCols = regionMap.getCols(); - int nRows = regionMap.getRows(); - double xRes = regionMap.getXres(); - - RandomIter tcaIter = CoverageUtilities.getRandomIterator(inTca); - RandomIter planIter = CoverageUtilities.getRandomIterator(inPlan); - - WritableRaster alungWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, null); - WritableRandomIter alungIter = RandomIterFactory.createWritable(alungWR, null); - WritableRaster bWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, null); - WritableRandomIter bIter = RandomIterFactory.createWritable(bWR, null); - - pm.beginTask(msg.message("ab.calculating"), nRows); - for( int r = 0; r < nRows; r++ ) { - if (isCanceled(pm)) { - return; - } - for( int c = 0; c < nCols; c++ ) { - double planSample = planIter.getSampleDouble(c, r, 0); - if (!isNovalue(planSample) && planSample != 0.0) { - if (xRes > 1 / planSample && planSample >= 0.0) { - bIter.setSample(c, r, 0, 0.1 * xRes); - } else if (xRes > Math.abs(1 / planSample) && planSample < 0.0) { - bIter.setSample(c, r, 0, xRes + 0.9 * xRes); - } else { - double bSample = 2 * Math.asin(xRes / (2 * (1 / planSample))) * (1 / planSample - xRes); - bIter.setSample(c, r, 0, bSample); - if (planSample >= 0.0 && bSample < 0.1 * xRes) { - bIter.setSample(c, r, 0, 0.1 * xRes); - } - if (planSample < 0.0 && bSample > (xRes + 0.9 * xRes)) { - bIter.setSample(c, r, 0, xRes + 0.9 * xRes); - } - } - } - if (planSample == 0.0) { - bIter.setSample(c, r, 0, xRes); - } - alungIter.setSample(c, r, 0, tcaIter.getSampleDouble(c, r, 0) * xRes * xRes / bIter.getSampleDouble(c, r, 0)); - if (isNovalue(planSample)) { - alungIter.setSample(c, r, 0, doubleNovalue); - bIter.setSample(c, r, 0, doubleNovalue); - } - } - pm.worked(1); - } - pm.done(); - - outAb = CoverageUtilities.buildCoverage("alung", alungWR, regionMap, inTca.getCoordinateReferenceSystem()); - outB = CoverageUtilities.buildCoverage("b", bWR, regionMap, inTca.getCoordinateReferenceSystem()); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.geomorphology.ab; +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.WritableRaster; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; + +@Description("Calculates the draining area per length unit.") +@Documentation("Ab.html") +@Author(name = "Andrea Antonello, Erica Ghesla, Rigon Riccardo, Andrea Cozzini, Silvano Pisoni", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Geomorphology, Tca, Curvatures, DrainDir, FlowDirections") +@Label(JGTConstants.GEOMORPHOLOGY) +@Name("ab") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class Ab extends JGTModel { + @Description("The map of the total contributing area.") + @In + public GridCoverage2D inTca = null; + + @Description("The map of the planar curvatures.") + @In + public GridCoverage2D inPlan = null; + + @Description("The map of area per length.") + @Out + public GridCoverage2D outAb = null; + + @Description("The map of contour line.") + @Out + public GridCoverage2D outB = null; + + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + @Execute + public void process() throws Exception { + if (!concatOr(outAb == null, doReset)) { + return; + } + checkNull(inTca, inPlan); + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inTca); + int nCols = regionMap.getCols(); + int nRows = regionMap.getRows(); + double xRes = regionMap.getXres(); + + RandomIter tcaIter = CoverageUtilities.getRandomIterator(inTca); + RandomIter planIter = CoverageUtilities.getRandomIterator(inPlan); + + WritableRaster alungWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, null); + WritableRandomIter alungIter = RandomIterFactory.createWritable(alungWR, null); + WritableRaster bWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, null); + WritableRandomIter bIter = RandomIterFactory.createWritable(bWR, null); + + pm.beginTask(msg.message("ab.calculating"), nRows); + for( int r = 0; r < nRows; r++ ) { + if (isCanceled(pm)) { + return; + } + for( int c = 0; c < nCols; c++ ) { + double planSample = planIter.getSampleDouble(c, r, 0); + if (!isNovalue(planSample) && planSample != 0.0) { + if (xRes > 1 / planSample && planSample >= 0.0) { + bIter.setSample(c, r, 0, 0.1 * xRes); + } else if (xRes > Math.abs(1 / planSample) && planSample < 0.0) { + bIter.setSample(c, r, 0, xRes + 0.9 * xRes); + } else { + double bSample = 2 * Math.asin(xRes / (2 * (1 / planSample))) * (1 / planSample - xRes); + bIter.setSample(c, r, 0, bSample); + if (planSample >= 0.0 && bSample < 0.1 * xRes) { + bIter.setSample(c, r, 0, 0.1 * xRes); + } + if (planSample < 0.0 && bSample > (xRes + 0.9 * xRes)) { + bIter.setSample(c, r, 0, xRes + 0.9 * xRes); + } + } + } + if (planSample == 0.0) { + bIter.setSample(c, r, 0, xRes); + } + alungIter.setSample(c, r, 0, tcaIter.getSampleDouble(c, r, 0) * xRes * xRes / bIter.getSampleDouble(c, r, 0)); + if (isNovalue(planSample)) { + alungIter.setSample(c, r, 0, doubleNovalue); + bIter.setSample(c, r, 0, doubleNovalue); + } + } + pm.worked(1); + } + pm.done(); + + outAb = CoverageUtilities.buildCoverage("alung", alungWR, regionMap, inTca.getCoordinateReferenceSystem()); + outB = CoverageUtilities.buildCoverage("b", bWR, regionMap, inTca.getCoordinateReferenceSystem()); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/aspect/Aspect.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/aspect/Aspect.java index a5bcc76e3..ea24ab472 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/aspect/Aspect.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/aspect/Aspect.java @@ -1,217 +1,217 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.geomorphology.aspect; - -import static java.lang.Math.PI; -import static java.lang.Math.abs; -import static java.lang.Math.acos; -import static java.lang.Math.atan; -import static java.lang.Math.cos; -import static java.lang.Math.pow; -import static java.lang.Math.round; -import static java.lang.Math.sin; -import static java.lang.Math.sqrt; -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.HashMap; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.GridNode; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.math.NumericsUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; - -@Description("Calculates the aspect considering the zero toward the north and the rotation angle counterclockwise.") -@Documentation("Aspect.html") -@Author(name = "Andrea Antonello, Erica Ghesla, Rigon Riccardo, Pisoni Silvano, Andrea Cozzini", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Geomorphology, DrainDir, FlowDirections") -@Label(JGTConstants.GEOMORPHOLOGY) -@Name("aspect") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class Aspect extends JGTModel { - @Description("The map of the digital elevation model (DEM).") - @In - public GridCoverage2D inElev = null; - - @Description("Switch to define whether create the output map in degrees (default) or radiants.") - @In - public boolean doRadiants = false; - - @Description("Switch to define whether the output map values should be rounded (might make sense in the case of degree maps).") - @In - public boolean doRound = false; - - @Description("The map of aspect.") - @Out - public GridCoverage2D outAspect = null; - - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - @Execute - public void process() throws Exception { - if (!concatOr(outAspect == null, doReset)) { - return; - } - checkNull(inElev); - double radtodeg = NumericsUtilities.RADTODEG; - if (doRadiants) { - radtodeg = 1.0; - } - - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - double xRes = regionMap.getXres(); - double yRes = regionMap.getYres(); - - RandomIter elevationIter = CoverageUtilities.getRandomIterator(inElev); - - WritableRaster aspectWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); - WritableRandomIter aspectIter = RandomIterFactory.createWritable(aspectWR, null); - - pm.beginTask(msg.message("aspect.calculating"), rows); - - // Cycling into the valid region. - for( int r = 1; r < rows - 1; r++ ) { - for( int c = 1; c < cols - 1; c++ ) { - GridNode node = new GridNode(elevationIter, cols, rows, xRes, yRes, c, r); - double aspect = calculateAspect(node, radtodeg, doRound); - aspectIter.setSample(c, r, 0, aspect); - } - pm.worked(1); - } - pm.done(); - - CoverageUtilities.setNovalueBorder(aspectWR); - outAspect = CoverageUtilities.buildCoverage("aspect", aspectWR, regionMap, inElev.getCoordinateReferenceSystem()); - } - - /** - * Calculates the aspect in a given {@link GridNode}. - * - * @param node the current grid node. - * @param radtodeg radiants to degrees conversion factor. Use {@link NumericsUtilities#RADTODEG} if you - * want degrees, use 1 if you want radiants. - * @param doRound if true, values are round to integer. - * @return the value of aspect. - */ - public static double calculateAspect( GridNode node, double radtodeg, boolean doRound ) { - double aspect = doubleNovalue; - // the value of the x and y derivative - double aData = 0.0; - double bData = 0.0; - double xRes = node.xRes; - double yRes = node.yRes; - double centralValue = node.elevation; - double nValue = node.getNorthElev(); - double sValue = node.getSouthElev(); - double wValue = node.getWestElev(); - double eValue = node.getEastElev(); - - if (!isNovalue(centralValue)) { - boolean sIsNovalue = isNovalue(sValue); - boolean nIsNovalue = isNovalue(nValue); - boolean wIsNovalue = isNovalue(wValue); - boolean eIsNovalue = isNovalue(eValue); - - if (!sIsNovalue && !nIsNovalue) { - aData = atan((nValue - sValue) / (2 * yRes)); - } else if (nIsNovalue && !sIsNovalue) { - aData = atan((centralValue - sValue) / (yRes)); - } else if (!nIsNovalue && sIsNovalue) { - aData = atan((nValue - centralValue) / (yRes)); - } else if (nIsNovalue && sIsNovalue) { - aData = doubleNovalue; - } else { - // can't happen - throw new RuntimeException(); - } - if (!wIsNovalue && !eIsNovalue) { - bData = atan((wValue - eValue) / (2 * xRes)); - } else if (wIsNovalue && !eIsNovalue) { - bData = atan((centralValue - eValue) / (xRes)); - } else if (!wIsNovalue && eIsNovalue) { - bData = atan((wValue - centralValue) / (xRes)); - } else if (wIsNovalue && eIsNovalue) { - bData = doubleNovalue; - } else { - // can't happen - throw new RuntimeException(); - } - - double delta = 0.0; - // calculate the aspect value - if (aData < 0 && bData > 0) { - delta = acos(sin(abs(aData)) * cos(abs(bData)) / (sqrt(1 - pow(cos(aData), 2) * pow(cos(bData), 2)))); - aspect = delta * radtodeg; - } else if (aData > 0 && bData > 0) { - delta = acos(sin(abs(aData)) * cos(abs(bData)) / (sqrt(1 - pow(cos(aData), 2) * pow(cos(bData), 2)))); - aspect = (PI - delta) * radtodeg; - } else if (aData > 0 && bData < 0) { - delta = acos(sin(abs(aData)) * cos(abs(bData)) / (sqrt(1 - pow(cos(aData), 2) * pow(cos(bData), 2)))); - aspect = (PI + delta) * radtodeg; - } else if (aData < 0 && bData < 0) { - delta = acos(sin(abs(aData)) * cos(abs(bData)) / (sqrt(1 - pow(cos(aData), 2) * pow(cos(bData), 2)))); - aspect = (2 * PI - delta) * radtodeg; - } else if (aData == 0 && bData > 0) { - aspect = (PI / 2.) * radtodeg; - } else if (aData == 0 && bData < 0) { - aspect = (PI * 3. / 2.) * radtodeg; - } else if (aData > 0 && bData == 0) { - aspect = PI * radtodeg; - } else if (aData < 0 && bData == 0) { - aspect = 2.0 * PI * radtodeg; - } else if (aData == 0 && bData == 0) { - aspect = 0.0; - } else if (isNovalue(aData) || isNovalue(bData)) { - aspect = doubleNovalue; - } else { - // can't happen - throw new RuntimeException(); - } - if (doRound) { - aspect = round(aspect); - } - } - return aspect; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.geomorphology.aspect; + +import static java.lang.Math.PI; +import static java.lang.Math.abs; +import static java.lang.Math.acos; +import static java.lang.Math.atan; +import static java.lang.Math.cos; +import static java.lang.Math.pow; +import static java.lang.Math.round; +import static java.lang.Math.sin; +import static java.lang.Math.sqrt; +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.HashMap; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.GridNode; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.math.NumericsUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; + +@Description("Calculates the aspect considering the zero toward the north and the rotation angle counterclockwise.") +@Documentation("Aspect.html") +@Author(name = "Andrea Antonello, Erica Ghesla, Rigon Riccardo, Pisoni Silvano, Andrea Cozzini", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Geomorphology, DrainDir, FlowDirections") +@Label(JGTConstants.GEOMORPHOLOGY) +@Name("aspect") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class Aspect extends JGTModel { + @Description("The map of the digital elevation model (DEM).") + @In + public GridCoverage2D inElev = null; + + @Description("Switch to define whether create the output map in degrees (default) or radiants.") + @In + public boolean doRadiants = false; + + @Description("Switch to define whether the output map values should be rounded (might make sense in the case of degree maps).") + @In + public boolean doRound = false; + + @Description("The map of aspect.") + @Out + public GridCoverage2D outAspect = null; + + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + @Execute + public void process() throws Exception { + if (!concatOr(outAspect == null, doReset)) { + return; + } + checkNull(inElev); + double radtodeg = NumericsUtilities.RADTODEG; + if (doRadiants) { + radtodeg = 1.0; + } + + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + double xRes = regionMap.getXres(); + double yRes = regionMap.getYres(); + + RandomIter elevationIter = CoverageUtilities.getRandomIterator(inElev); + + WritableRaster aspectWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); + WritableRandomIter aspectIter = RandomIterFactory.createWritable(aspectWR, null); + + pm.beginTask(msg.message("aspect.calculating"), rows); + + // Cycling into the valid region. + for( int r = 1; r < rows - 1; r++ ) { + for( int c = 1; c < cols - 1; c++ ) { + GridNode node = new GridNode(elevationIter, cols, rows, xRes, yRes, c, r); + double aspect = calculateAspect(node, radtodeg, doRound); + aspectIter.setSample(c, r, 0, aspect); + } + pm.worked(1); + } + pm.done(); + + CoverageUtilities.setNovalueBorder(aspectWR); + outAspect = CoverageUtilities.buildCoverage("aspect", aspectWR, regionMap, inElev.getCoordinateReferenceSystem()); + } + + /** + * Calculates the aspect in a given {@link GridNode}. + * + * @param node the current grid node. + * @param radtodeg radiants to degrees conversion factor. Use {@link NumericsUtilities#RADTODEG} if you + * want degrees, use 1 if you want radiants. + * @param doRound if true, values are round to integer. + * @return the value of aspect. + */ + public static double calculateAspect( GridNode node, double radtodeg, boolean doRound ) { + double aspect = doubleNovalue; + // the value of the x and y derivative + double aData = 0.0; + double bData = 0.0; + double xRes = node.xRes; + double yRes = node.yRes; + double centralValue = node.elevation; + double nValue = node.getNorthElev(); + double sValue = node.getSouthElev(); + double wValue = node.getWestElev(); + double eValue = node.getEastElev(); + + if (!isNovalue(centralValue)) { + boolean sIsNovalue = isNovalue(sValue); + boolean nIsNovalue = isNovalue(nValue); + boolean wIsNovalue = isNovalue(wValue); + boolean eIsNovalue = isNovalue(eValue); + + if (!sIsNovalue && !nIsNovalue) { + aData = atan((nValue - sValue) / (2 * yRes)); + } else if (nIsNovalue && !sIsNovalue) { + aData = atan((centralValue - sValue) / (yRes)); + } else if (!nIsNovalue && sIsNovalue) { + aData = atan((nValue - centralValue) / (yRes)); + } else if (nIsNovalue && sIsNovalue) { + aData = doubleNovalue; + } else { + // can't happen + throw new RuntimeException(); + } + if (!wIsNovalue && !eIsNovalue) { + bData = atan((wValue - eValue) / (2 * xRes)); + } else if (wIsNovalue && !eIsNovalue) { + bData = atan((centralValue - eValue) / (xRes)); + } else if (!wIsNovalue && eIsNovalue) { + bData = atan((wValue - centralValue) / (xRes)); + } else if (wIsNovalue && eIsNovalue) { + bData = doubleNovalue; + } else { + // can't happen + throw new RuntimeException(); + } + + double delta = 0.0; + // calculate the aspect value + if (aData < 0 && bData > 0) { + delta = acos(sin(abs(aData)) * cos(abs(bData)) / (sqrt(1 - pow(cos(aData), 2) * pow(cos(bData), 2)))); + aspect = delta * radtodeg; + } else if (aData > 0 && bData > 0) { + delta = acos(sin(abs(aData)) * cos(abs(bData)) / (sqrt(1 - pow(cos(aData), 2) * pow(cos(bData), 2)))); + aspect = (PI - delta) * radtodeg; + } else if (aData > 0 && bData < 0) { + delta = acos(sin(abs(aData)) * cos(abs(bData)) / (sqrt(1 - pow(cos(aData), 2) * pow(cos(bData), 2)))); + aspect = (PI + delta) * radtodeg; + } else if (aData < 0 && bData < 0) { + delta = acos(sin(abs(aData)) * cos(abs(bData)) / (sqrt(1 - pow(cos(aData), 2) * pow(cos(bData), 2)))); + aspect = (2 * PI - delta) * radtodeg; + } else if (aData == 0 && bData > 0) { + aspect = (PI / 2.) * radtodeg; + } else if (aData == 0 && bData < 0) { + aspect = (PI * 3. / 2.) * radtodeg; + } else if (aData > 0 && bData == 0) { + aspect = PI * radtodeg; + } else if (aData < 0 && bData == 0) { + aspect = 2.0 * PI * radtodeg; + } else if (aData == 0 && bData == 0) { + aspect = 0.0; + } else if (isNovalue(aData) || isNovalue(bData)) { + aspect = doubleNovalue; + } else { + // can't happen + throw new RuntimeException(); + } + if (doRound) { + aspect = round(aspect); + } + } + return aspect; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/curvatures/Curvatures.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/curvatures/Curvatures.java index e74829fab..65686f347 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/curvatures/Curvatures.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/curvatures/Curvatures.java @@ -1,163 +1,163 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.geomorphology.curvatures; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.HashMap; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; - -@Description("It estimates the longitudinal, normal and planar curvatures.") -@Documentation("Curvatures.html") -@Author(name = "Daniele Andreis, Antonello Andrea, Erica Ghesla, Cozzini Andrea, Franceschi Silvia, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Geomorphology") -@Label(JGTConstants.GEOMORPHOLOGY) -@Name("curvatures") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class Curvatures extends JGTModel { - @Description("The map of the digital elevation model (DEM or pit).") - @In - public GridCoverage2D inElev = null; - - // output - @Description("The map of profile curvatures.") - @Out - public GridCoverage2D outProf = null; - - @Description("The map of planar curvatures.") - @Out - public GridCoverage2D outPlan = null; - - @Description("The map of tangential curvatures.") - @Out - public GridCoverage2D outTang = null; - - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - @Execute - public void process() { - if (!concatOr(outProf == null, doReset)) { - return; - } - checkNull(inElev); - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); - int nCols = regionMap.getCols(); - int nRows = regionMap.getRows(); - double xRes = regionMap.getXres(); - double yRes = regionMap.getYres(); - - RandomIter elevationIter = CoverageUtilities.getRandomIterator(inElev); - - WritableRaster profWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); - WritableRaster planWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); - WritableRaster tangWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); - - double plan = 0.0; - double tang = 0.0; - double prof = 0.0; - double disXX = Math.pow(xRes, 2.0); - double disYY = Math.pow(yRes, 2.0); - /* - * calculate curvatures - */ - pm.beginTask(msg.message("curvatures.calculating"), nRows - 2); - for( int r = 1; r < nRows - 1; r++ ) { - if (isCanceled(pm)) { - return; - } - for( int c = 1; c < nCols - 1; c++ ) { - double elevation = elevationIter.getSampleDouble(c, r, 0); - if (!isNovalue(elevation)) { - double elevRplus = elevationIter.getSampleDouble(c, r + 1, 0); - double elevRminus = elevationIter.getSampleDouble(c, r - 1, 0); - double elevCplus = elevationIter.getSampleDouble(c + 1, r, 0); - double elevCminus = elevationIter.getSampleDouble(c - 1, r, 0); - /* - * first derivate - */ - double sxValue = 0.5 * (elevRplus - elevRminus) / xRes; - double syValue = 0.5 * (elevCplus - elevCminus) / yRes; - double p = Math.pow(sxValue, 2.0) + Math.pow(syValue, 2.0); - double q = p + 1; - if (p == 0.0) { - plan = 0.0; - tang = 0.0; - prof = 0.0; - } else { - double elevCplusRplus = elevationIter.getSampleDouble(c + 1, r + 1, 0); - double elevCplusRminus = elevationIter.getSampleDouble(c + 1, r - 1, 0); - double elevCminusRplus = elevationIter.getSampleDouble(c - 1, r + 1, 0); - double elevCminusRminus = elevationIter.getSampleDouble(c - 1, r - 1, 0); - - double sxxValue = (elevRplus - 2 * elevation + elevRminus) / disXX; - double syyValue = (elevCplus - 2 * elevation + elevCminus) / disYY; - double sxyValue = 0.25 * ((elevCplusRplus - elevCplusRminus - elevCminusRplus + elevCminusRminus) / (xRes * yRes)); - - plan = (sxxValue * Math.pow(syValue, 2.0) - 2 * sxyValue * sxValue * syValue + syyValue - * Math.pow(sxValue, 2.0)) - / (Math.pow(p, 1.5)); - tang = (sxxValue * Math.pow(syValue, 2.0) - 2 * sxyValue * sxValue * syValue + syyValue - * Math.pow(sxValue, 2.0)) - / (p * Math.pow(q, 0.5)); - prof = (sxxValue * Math.pow(sxValue, 2.0) + 2 * sxyValue * sxValue * syValue + syyValue - * Math.pow(syValue, 2.0)) - / (p * Math.pow(q, 1.5)); - } - - profWR.setSample(c, r, 0, prof); - tangWR.setSample(c, r, 0, tang); - planWR.setSample(c, r, 0, plan); - } - } - pm.worked(1); - } - pm.done(); - - if (isCanceled(pm)) { - return; - } - outProf = CoverageUtilities.buildCoverage("prof_curvature", profWR, regionMap, inElev.getCoordinateReferenceSystem()); - outPlan = CoverageUtilities.buildCoverage("plan_curvature", planWR, regionMap, inElev.getCoordinateReferenceSystem()); - outTang = CoverageUtilities.buildCoverage("tang_curvature", tangWR, regionMap, inElev.getCoordinateReferenceSystem()); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.geomorphology.curvatures; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.HashMap; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; + +@Description("It estimates the longitudinal, normal and planar curvatures.") +@Documentation("Curvatures.html") +@Author(name = "Daniele Andreis, Antonello Andrea, Erica Ghesla, Cozzini Andrea, Franceschi Silvia, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Geomorphology") +@Label(JGTConstants.GEOMORPHOLOGY) +@Name("curvatures") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class Curvatures extends JGTModel { + @Description("The map of the digital elevation model (DEM or pit).") + @In + public GridCoverage2D inElev = null; + + // output + @Description("The map of profile curvatures.") + @Out + public GridCoverage2D outProf = null; + + @Description("The map of planar curvatures.") + @Out + public GridCoverage2D outPlan = null; + + @Description("The map of tangential curvatures.") + @Out + public GridCoverage2D outTang = null; + + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + @Execute + public void process() { + if (!concatOr(outProf == null, doReset)) { + return; + } + checkNull(inElev); + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); + int nCols = regionMap.getCols(); + int nRows = regionMap.getRows(); + double xRes = regionMap.getXres(); + double yRes = regionMap.getYres(); + + RandomIter elevationIter = CoverageUtilities.getRandomIterator(inElev); + + WritableRaster profWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); + WritableRaster planWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); + WritableRaster tangWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); + + double plan = 0.0; + double tang = 0.0; + double prof = 0.0; + double disXX = Math.pow(xRes, 2.0); + double disYY = Math.pow(yRes, 2.0); + /* + * calculate curvatures + */ + pm.beginTask(msg.message("curvatures.calculating"), nRows - 2); + for( int r = 1; r < nRows - 1; r++ ) { + if (isCanceled(pm)) { + return; + } + for( int c = 1; c < nCols - 1; c++ ) { + double elevation = elevationIter.getSampleDouble(c, r, 0); + if (!isNovalue(elevation)) { + double elevRplus = elevationIter.getSampleDouble(c, r + 1, 0); + double elevRminus = elevationIter.getSampleDouble(c, r - 1, 0); + double elevCplus = elevationIter.getSampleDouble(c + 1, r, 0); + double elevCminus = elevationIter.getSampleDouble(c - 1, r, 0); + /* + * first derivate + */ + double sxValue = 0.5 * (elevRplus - elevRminus) / xRes; + double syValue = 0.5 * (elevCplus - elevCminus) / yRes; + double p = Math.pow(sxValue, 2.0) + Math.pow(syValue, 2.0); + double q = p + 1; + if (p == 0.0) { + plan = 0.0; + tang = 0.0; + prof = 0.0; + } else { + double elevCplusRplus = elevationIter.getSampleDouble(c + 1, r + 1, 0); + double elevCplusRminus = elevationIter.getSampleDouble(c + 1, r - 1, 0); + double elevCminusRplus = elevationIter.getSampleDouble(c - 1, r + 1, 0); + double elevCminusRminus = elevationIter.getSampleDouble(c - 1, r - 1, 0); + + double sxxValue = (elevRplus - 2 * elevation + elevRminus) / disXX; + double syyValue = (elevCplus - 2 * elevation + elevCminus) / disYY; + double sxyValue = 0.25 * ((elevCplusRplus - elevCplusRminus - elevCminusRplus + elevCminusRminus) / (xRes * yRes)); + + plan = (sxxValue * Math.pow(syValue, 2.0) - 2 * sxyValue * sxValue * syValue + syyValue + * Math.pow(sxValue, 2.0)) + / (Math.pow(p, 1.5)); + tang = (sxxValue * Math.pow(syValue, 2.0) - 2 * sxyValue * sxValue * syValue + syyValue + * Math.pow(sxValue, 2.0)) + / (p * Math.pow(q, 0.5)); + prof = (sxxValue * Math.pow(sxValue, 2.0) + 2 * sxyValue * sxValue * syValue + syyValue + * Math.pow(syValue, 2.0)) + / (p * Math.pow(q, 1.5)); + } + + profWR.setSample(c, r, 0, prof); + tangWR.setSample(c, r, 0, tang); + planWR.setSample(c, r, 0, plan); + } + } + pm.worked(1); + } + pm.done(); + + if (isCanceled(pm)) { + return; + } + outProf = CoverageUtilities.buildCoverage("prof_curvature", profWR, regionMap, inElev.getCoordinateReferenceSystem()); + outPlan = CoverageUtilities.buildCoverage("plan_curvature", planWR, regionMap, inElev.getCoordinateReferenceSystem()); + outTang = CoverageUtilities.buildCoverage("tang_curvature", tangWR, regionMap, inElev.getCoordinateReferenceSystem()); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/gradient/Gradient.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/gradient/Gradient.java index 8ea84f890..f8bfe5540 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/gradient/Gradient.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/gradient/Gradient.java @@ -1,304 +1,304 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.geomorphology.gradient; - -import static java.lang.Math.atan; -import static java.lang.Math.pow; -import static java.lang.Math.sqrt; -import static java.lang.Math.toDegrees; -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.HashMap; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; - -@Description("Calculates the gradient in each point of the map.") -@Documentation("Gradient.html") -@Author(name = "Daniele Andreis, Antonello Andrea, Erica Ghesla, Cozzini Andrea, Franceschi Silvia, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Geomorphology, DrainDir, FlowDirections, Slope, Curvatures") -@Label(JGTConstants.GEOMORPHOLOGY) -@Name("gradient") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class Gradient extends JGTModel { - @Description("The map of the digital elevation model (DEM or pit).") - @In - public GridCoverage2D inElev = null; - - @Description("The gradient formula mode (0 = finite differences, 1 = horn, 2 = evans).") - @In - public int pMode = 0; - - @Description("The output type, if false = tan of the angle (default), if true = degrees") - @In - public boolean doDegrees = false; - - @Description("The map of gradient.") - @Out - public GridCoverage2D outSlope = null; - - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - private int nCols; - - private double xRes; - - private int nRows; - - private double yRes; - - @Execute - public void process() { - if (!concatOr(outSlope == null, doReset)) { - return; - } - checkNull(inElev); - HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); - nCols = regionMap.get(CoverageUtilities.COLS).intValue(); - nRows = regionMap.get(CoverageUtilities.ROWS).intValue(); - xRes = regionMap.get(CoverageUtilities.XRES); - yRes = regionMap.get(CoverageUtilities.YRES); - - RenderedImage elevationRI = inElev.getRenderedImage(); - RandomIter elevationIter = RandomIterFactory.create(elevationRI, null); - WritableRaster gradientWR = null; - if (pMode == 1) { - pm.message("Using Horn formula"); - gradientWR = gradientHorn(elevationIter); - } else if (pMode == 2) { - pm.message("Using Evans formula"); - gradientWR = gradientEvans(elevationIter); - } else { - pm.message("Using finite differences"); - gradientWR = gradientDiff(elevationIter); - } - outSlope = CoverageUtilities.buildCoverage("gradient", gradientWR, regionMap, inElev.getCoordinateReferenceSystem()); - } - - /** - * Computes the gradient algorithm. p=f_{x}^{2}+f_{y}^{2} - * - * The derivatives can be calculate with the the horn formula: - * - * fx=(2*f(x+1,y)+f(x+1,y-1)+f(x+1,y+1)-2*f(x-1,y)-f(x-1,y+1)-f(x-1,y-1))/(8 Δ x) - * fy=(2*f(x,y+1)+f(x+1,y+1)+f(x-1,y+1)-2*f(x,y-1)-f(x+1,y-1)+f(x-1,y-1))/(8 Δ y) - *

- * The kernel is compound of 9 cell (8 around the central pixel) and the numeration is: - * - * 1 2 3 - * 4 5 6 - * 7 8 9 - * - * This numeration is used to extract the appropriate elevation value (es elev1 an so on) - * - *

- */ - private WritableRaster gradientHorn( RandomIter elevationIter ) { - - WritableRaster gradientWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); - - pm.beginTask(msg.message("gradient.working"), nRows); - for( int y = 1; y < nRows - 1; y++ ) { - if (isCanceled(pm)) { - return null; - } - for( int x = 1; x < nCols - 1; x++ ) { - // extract the value to use for the algoritm. It is the finite difference approach. - double elev5 = elevationIter.getSampleDouble(x, y, 0); - double elev4 = elevationIter.getSampleDouble(x - 1, y, 0); - double elev6 = elevationIter.getSampleDouble(x + 1, y, 0); - double elev2 = elevationIter.getSampleDouble(x, y - 1, 0); - double elev8 = elevationIter.getSampleDouble(x, y + 1, 0); - double elev9 = elevationIter.getSampleDouble(x + 1, y + 1, 0); - double elev1 = elevationIter.getSampleDouble(x - 1, y - 1, 0); - double elev3 = elevationIter.getSampleDouble(x + 1, y - 1, 0); - double elev7 = elevationIter.getSampleDouble(x - 1, y + 1, 0); - - if (isNovalue(elev5) || isNovalue(elev1) || isNovalue(elev2) || isNovalue(elev3) || isNovalue(elev4) - || isNovalue(elev6) || isNovalue(elev7) || isNovalue(elev8) || isNovalue(elev9)) { - gradientWR.setSample(x, y, 0, doubleNovalue); - } else { - double fu = 2 * elev6 + elev9 + elev3; - double fd = 2 * elev4 + elev7 + elev1; - double xGrad = (fu - fd) / (8 * xRes); - fu = 2 * elev8 + elev7 + elev9; - fd = 2 * elev2 + elev1 + elev3; - double yGrad = (fu - fd) / (8 * yRes); - double grad = sqrt(pow(xGrad, 2) + pow(yGrad, 2)); - if (doDegrees) { - grad = transform(grad); - } - gradientWR.setSample(x, y, 0, grad); - } - } - pm.worked(1); - } - pm.done(); - - return gradientWR; - } - - /** - * Transform the gradient value into degrees. - * - * @param value the radiant based gradient. - * @return the degree gradient. - */ - private double transform( double value ) { - return toDegrees(atan(value)); - } - - /** - * Estimate the gradient (p=f_{x}^{2}+f_{y}^{2}) with a finite difference formula: - * - *
-     *  p=&radic{fx²+fy²}
-     * fx=(f(x+1,y)-f(x-1,y))/(2 Δ x) 
-     * fy=(f(x,y+1)-f(x,y-1))/(2 Δ y)
-     * 
- * - */ - private WritableRaster gradientDiff( RandomIter elevationIter ) { - - WritableRaster gradientWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); - - pm.beginTask(msg.message("gradient.working"), nRows); - for( int y = 1; y < nRows - 1; y++ ) { - - for( int x = 1; x < nCols - 1; x++ ) { - // extract the value to use for the algoritm. It is the finite difference approach. - double elevIJ = elevationIter.getSampleDouble(x, y, 0); - double elevIJipre = elevationIter.getSampleDouble(x - 1, y, 0); - double elevIJipost = elevationIter.getSampleDouble(x + 1, y, 0); - double elevIJjpre = elevationIter.getSampleDouble(x, y - 1, 0); - double elevIJjpost = elevationIter.getSampleDouble(x, y + 1, 0); - if (isNovalue(elevIJ) || isNovalue(elevIJipre) || isNovalue(elevIJipost) || isNovalue(elevIJjpre) - || isNovalue(elevIJjpost)) { - gradientWR.setSample(x, y, 0, doubleNovalue); - } else if (!isNovalue(elevIJ) && !isNovalue(elevIJipre) && !isNovalue(elevIJipost) && !isNovalue(elevIJjpre) - && !isNovalue(elevIJjpost)) { - double xGrad = 0.5 * (elevIJipost - elevIJipre) / xRes; - double yGrad = 0.5 * (elevIJjpre - elevIJjpost) / yRes; - double grad = sqrt(pow(xGrad, 2) + pow(yGrad, 2)); - if (doDegrees) { - grad = transform(grad); - } - gradientWR.setSample(x, y, 0, grad); - } else { - throw new ModelsIllegalargumentException("Error in gradient", this); - } - } - pm.worked(1); - } - pm.done(); - - return gradientWR; - } - - /** estimate the gradient using the Horn formula. - *

- * Where the gradient is: - *

- *
-     *  p=&radic{fx²+fy²}
-     *  
-     *  and the derivatives can be calculate with the  the Evans formula:
-     * fx=(f(x+1,y)+f(x+1,y-1)+f(x+1,y+1)-f(x-1,y)-f(x-1,y+1)-f(x-1,y-1))/(6 Δ x) 
-     * fy=(f(x,y+1)+f(x+1,y+1)+f(x-1,y+1)-f(x,y-1)-f(x+1,y-1)+f(x-1,y-1))/(6 Δ y)
-     * 

- * The kernel is compound of 9 cell (8 around the central pixel) and the numeration is: - * - * 1 2 3 - * 4 5 6 - * 7 8 9 - * - * This enumeration is used to extract the appropriate elevation value (es elev1 an so on) - * - *

- * - */ - private WritableRaster gradientEvans( RandomIter elevationIter ) { - - WritableRaster gradientWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); - - pm.beginTask(msg.message("gradient.working"), nRows); - for( int y = 1; y < nRows - 1; y++ ) { - - for( int x = 1; x < nCols - 1; x++ ) { - - // extract the value to use for the algoritm. It is the finite difference approach. - double elev5 = elevationIter.getSampleDouble(x, y, 0); - double elev4 = elevationIter.getSampleDouble(x - 1, y, 0); - double elev6 = elevationIter.getSampleDouble(x + 1, y, 0); - double elev2 = elevationIter.getSampleDouble(x, y - 1, 0); - double elev8 = elevationIter.getSampleDouble(x, y + 1, 0); - double elev9 = elevationIter.getSampleDouble(x + 1, y + 1, 0); - double elev1 = elevationIter.getSampleDouble(x - 1, y - 1, 0); - double elev3 = elevationIter.getSampleDouble(x + 1, y - 1, 0); - double elev7 = elevationIter.getSampleDouble(x - 1, y + 1, 0); - - if (isNovalue(elev5) || isNovalue(elev1) || isNovalue(elev2) || isNovalue(elev3) || isNovalue(elev4) - || isNovalue(elev6) || isNovalue(elev7) || isNovalue(elev8) || isNovalue(elev9)) { - gradientWR.setSample(x, y, 0, doubleNovalue); - } else { - double fu = elev6 + elev9 + elev3; - double fd = elev4 + elev7 + elev1; - double xGrad = (fu - fd) / (6 * xRes); - fu = elev8 + elev7 + elev9; - fd = elev2 + elev1 + elev3; - - double yGrad = (fu - fd) / (6 * yRes); - double grad = sqrt(pow(xGrad, 2) + pow(yGrad, 2)); - if (doDegrees) { - grad = transform(grad); - } - gradientWR.setSample(x, y, 0, grad); - } - } - - pm.worked(1); - } - pm.done(); - - return gradientWR; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.geomorphology.gradient; + +import static java.lang.Math.atan; +import static java.lang.Math.pow; +import static java.lang.Math.sqrt; +import static java.lang.Math.toDegrees; +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.HashMap; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; + +@Description("Calculates the gradient in each point of the map.") +@Documentation("Gradient.html") +@Author(name = "Daniele Andreis, Antonello Andrea, Erica Ghesla, Cozzini Andrea, Franceschi Silvia, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Geomorphology, DrainDir, FlowDirections, Slope, Curvatures") +@Label(JGTConstants.GEOMORPHOLOGY) +@Name("gradient") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class Gradient extends JGTModel { + @Description("The map of the digital elevation model (DEM or pit).") + @In + public GridCoverage2D inElev = null; + + @Description("The gradient formula mode (0 = finite differences, 1 = horn, 2 = evans).") + @In + public int pMode = 0; + + @Description("The output type, if false = tan of the angle (default), if true = degrees") + @In + public boolean doDegrees = false; + + @Description("The map of gradient.") + @Out + public GridCoverage2D outSlope = null; + + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + private int nCols; + + private double xRes; + + private int nRows; + + private double yRes; + + @Execute + public void process() { + if (!concatOr(outSlope == null, doReset)) { + return; + } + checkNull(inElev); + HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); + nCols = regionMap.get(CoverageUtilities.COLS).intValue(); + nRows = regionMap.get(CoverageUtilities.ROWS).intValue(); + xRes = regionMap.get(CoverageUtilities.XRES); + yRes = regionMap.get(CoverageUtilities.YRES); + + RenderedImage elevationRI = inElev.getRenderedImage(); + RandomIter elevationIter = RandomIterFactory.create(elevationRI, null); + WritableRaster gradientWR = null; + if (pMode == 1) { + pm.message("Using Horn formula"); + gradientWR = gradientHorn(elevationIter); + } else if (pMode == 2) { + pm.message("Using Evans formula"); + gradientWR = gradientEvans(elevationIter); + } else { + pm.message("Using finite differences"); + gradientWR = gradientDiff(elevationIter); + } + outSlope = CoverageUtilities.buildCoverage("gradient", gradientWR, regionMap, inElev.getCoordinateReferenceSystem()); + } + + /** + * Computes the gradient algorithm. p=f_{x}^{2}+f_{y}^{2} + * + * The derivatives can be calculate with the the horn formula: + * + * fx=(2*f(x+1,y)+f(x+1,y-1)+f(x+1,y+1)-2*f(x-1,y)-f(x-1,y+1)-f(x-1,y-1))/(8 Δ x) + * fy=(2*f(x,y+1)+f(x+1,y+1)+f(x-1,y+1)-2*f(x,y-1)-f(x+1,y-1)+f(x-1,y-1))/(8 Δ y) + *

+ * The kernel is compound of 9 cell (8 around the central pixel) and the numeration is: + * + * 1 2 3 + * 4 5 6 + * 7 8 9 + * + * This numeration is used to extract the appropriate elevation value (es elev1 an so on) + * + *

+ */ + private WritableRaster gradientHorn( RandomIter elevationIter ) { + + WritableRaster gradientWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); + + pm.beginTask(msg.message("gradient.working"), nRows); + for( int y = 1; y < nRows - 1; y++ ) { + if (isCanceled(pm)) { + return null; + } + for( int x = 1; x < nCols - 1; x++ ) { + // extract the value to use for the algoritm. It is the finite difference approach. + double elev5 = elevationIter.getSampleDouble(x, y, 0); + double elev4 = elevationIter.getSampleDouble(x - 1, y, 0); + double elev6 = elevationIter.getSampleDouble(x + 1, y, 0); + double elev2 = elevationIter.getSampleDouble(x, y - 1, 0); + double elev8 = elevationIter.getSampleDouble(x, y + 1, 0); + double elev9 = elevationIter.getSampleDouble(x + 1, y + 1, 0); + double elev1 = elevationIter.getSampleDouble(x - 1, y - 1, 0); + double elev3 = elevationIter.getSampleDouble(x + 1, y - 1, 0); + double elev7 = elevationIter.getSampleDouble(x - 1, y + 1, 0); + + if (isNovalue(elev5) || isNovalue(elev1) || isNovalue(elev2) || isNovalue(elev3) || isNovalue(elev4) + || isNovalue(elev6) || isNovalue(elev7) || isNovalue(elev8) || isNovalue(elev9)) { + gradientWR.setSample(x, y, 0, doubleNovalue); + } else { + double fu = 2 * elev6 + elev9 + elev3; + double fd = 2 * elev4 + elev7 + elev1; + double xGrad = (fu - fd) / (8 * xRes); + fu = 2 * elev8 + elev7 + elev9; + fd = 2 * elev2 + elev1 + elev3; + double yGrad = (fu - fd) / (8 * yRes); + double grad = sqrt(pow(xGrad, 2) + pow(yGrad, 2)); + if (doDegrees) { + grad = transform(grad); + } + gradientWR.setSample(x, y, 0, grad); + } + } + pm.worked(1); + } + pm.done(); + + return gradientWR; + } + + /** + * Transform the gradient value into degrees. + * + * @param value the radiant based gradient. + * @return the degree gradient. + */ + private double transform( double value ) { + return toDegrees(atan(value)); + } + + /** + * Estimate the gradient (p=f_{x}^{2}+f_{y}^{2}) with a finite difference formula: + * + *
+     *  p=&radic{fx²+fy²}
+     * fx=(f(x+1,y)-f(x-1,y))/(2 Δ x) 
+     * fy=(f(x,y+1)-f(x,y-1))/(2 Δ y)
+     * 
+ * + */ + private WritableRaster gradientDiff( RandomIter elevationIter ) { + + WritableRaster gradientWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); + + pm.beginTask(msg.message("gradient.working"), nRows); + for( int y = 1; y < nRows - 1; y++ ) { + + for( int x = 1; x < nCols - 1; x++ ) { + // extract the value to use for the algoritm. It is the finite difference approach. + double elevIJ = elevationIter.getSampleDouble(x, y, 0); + double elevIJipre = elevationIter.getSampleDouble(x - 1, y, 0); + double elevIJipost = elevationIter.getSampleDouble(x + 1, y, 0); + double elevIJjpre = elevationIter.getSampleDouble(x, y - 1, 0); + double elevIJjpost = elevationIter.getSampleDouble(x, y + 1, 0); + if (isNovalue(elevIJ) || isNovalue(elevIJipre) || isNovalue(elevIJipost) || isNovalue(elevIJjpre) + || isNovalue(elevIJjpost)) { + gradientWR.setSample(x, y, 0, doubleNovalue); + } else if (!isNovalue(elevIJ) && !isNovalue(elevIJipre) && !isNovalue(elevIJipost) && !isNovalue(elevIJjpre) + && !isNovalue(elevIJjpost)) { + double xGrad = 0.5 * (elevIJipost - elevIJipre) / xRes; + double yGrad = 0.5 * (elevIJjpre - elevIJjpost) / yRes; + double grad = sqrt(pow(xGrad, 2) + pow(yGrad, 2)); + if (doDegrees) { + grad = transform(grad); + } + gradientWR.setSample(x, y, 0, grad); + } else { + throw new ModelsIllegalargumentException("Error in gradient", this); + } + } + pm.worked(1); + } + pm.done(); + + return gradientWR; + } + + /** estimate the gradient using the Horn formula. + *

+ * Where the gradient is: + *

+ *
+     *  p=&radic{fx²+fy²}
+     *  
+     *  and the derivatives can be calculate with the  the Evans formula:
+     * fx=(f(x+1,y)+f(x+1,y-1)+f(x+1,y+1)-f(x-1,y)-f(x-1,y+1)-f(x-1,y-1))/(6 Δ x) 
+     * fy=(f(x,y+1)+f(x+1,y+1)+f(x-1,y+1)-f(x,y-1)-f(x+1,y-1)+f(x-1,y-1))/(6 Δ y)
+     * 

+ * The kernel is compound of 9 cell (8 around the central pixel) and the numeration is: + * + * 1 2 3 + * 4 5 6 + * 7 8 9 + * + * This enumeration is used to extract the appropriate elevation value (es elev1 an so on) + * + *

+ * + */ + private WritableRaster gradientEvans( RandomIter elevationIter ) { + + WritableRaster gradientWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); + + pm.beginTask(msg.message("gradient.working"), nRows); + for( int y = 1; y < nRows - 1; y++ ) { + + for( int x = 1; x < nCols - 1; x++ ) { + + // extract the value to use for the algoritm. It is the finite difference approach. + double elev5 = elevationIter.getSampleDouble(x, y, 0); + double elev4 = elevationIter.getSampleDouble(x - 1, y, 0); + double elev6 = elevationIter.getSampleDouble(x + 1, y, 0); + double elev2 = elevationIter.getSampleDouble(x, y - 1, 0); + double elev8 = elevationIter.getSampleDouble(x, y + 1, 0); + double elev9 = elevationIter.getSampleDouble(x + 1, y + 1, 0); + double elev1 = elevationIter.getSampleDouble(x - 1, y - 1, 0); + double elev3 = elevationIter.getSampleDouble(x + 1, y - 1, 0); + double elev7 = elevationIter.getSampleDouble(x - 1, y + 1, 0); + + if (isNovalue(elev5) || isNovalue(elev1) || isNovalue(elev2) || isNovalue(elev3) || isNovalue(elev4) + || isNovalue(elev6) || isNovalue(elev7) || isNovalue(elev8) || isNovalue(elev9)) { + gradientWR.setSample(x, y, 0, doubleNovalue); + } else { + double fu = elev6 + elev9 + elev3; + double fd = elev4 + elev7 + elev1; + double xGrad = (fu - fd) / (6 * xRes); + fu = elev8 + elev7 + elev9; + fd = elev2 + elev1 + elev3; + + double yGrad = (fu - fd) / (6 * yRes); + double grad = sqrt(pow(xGrad, 2) + pow(yGrad, 2)); + if (doDegrees) { + grad = transform(grad); + } + gradientWR.setSample(x, y, 0, grad); + } + } + + pm.worked(1); + } + pm.done(); + + return gradientWR; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/slope/Slope.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/slope/Slope.java index 46088885e..87b834383 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/slope/Slope.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/geomorphology/slope/Slope.java @@ -1,129 +1,129 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.geomorphology.slope; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.HashMap; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.Direction; -import org.jgrasstools.gears.libs.modules.GridNode; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; - -@Description("Calculates the slope in each point of the map.") -@Documentation("Slope.html") -@Author(name = "Antonello Andrea, Erica Ghesla, Cozzini Andrea, Franceschi Silvia, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Geomorphology, Gradient") -@Label(JGTConstants.GEOMORPHOLOGY) -@Name("slope") -@Status(Status.TESTED) -@License("General Public License Version 3 (GPLv3)") -public class Slope extends JGTModel { - @Description("The depitted elevation map.") - @In - public GridCoverage2D inPit = null; - - @Description("The map of flowdirection.") - @In - public GridCoverage2D inFlow = null; - - @Description("The map of gradient.") - @Out - public GridCoverage2D outSlope = null; - - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - @Execute - public void process() { - if (!concatOr(outSlope == null, doReset)) { - return; - } - checkNull(inPit, inFlow); - HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inPit); - int nCols = regionMap.get(CoverageUtilities.COLS).intValue(); - int nRows = regionMap.get(CoverageUtilities.ROWS).intValue(); - double xRes = regionMap.get(CoverageUtilities.XRES); - double yRes = regionMap.get(CoverageUtilities.YRES); - - RenderedImage elevationRI = inPit.getRenderedImage(); - RandomIter elevationIter = RandomIterFactory.create(elevationRI, null); - RenderedImage flowRI = inFlow.getRenderedImage(); - RandomIter flowIter = RandomIterFactory.create(flowRI, null); - - WritableRaster slopeWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); - - pm.beginTask(msg.message("slope.calculating"), nCols); - for( int c = 0; c < nCols; c++ ) { - for( int r = 0; r < nRows; r++ ) { - double flowValue = flowIter.getSampleDouble(c, r, 0); - GridNode node = new GridNode(elevationIter, nCols, nRows, xRes, yRes, c, r); - double value = calculateSlope(node, flowValue); - slopeWR.setSample(c, r, 0, value); - } - pm.worked(1); - } - pm.done(); - - outSlope = CoverageUtilities.buildCoverage("slope", slopeWR, regionMap, inPit.getCoordinateReferenceSystem()); - } - - /** - * Calculates the slope of a given flowdirection value in currentCol and currentRow. - * - * @param node the current {@link GridNode}. - * @param flowValue the value of the flowdirection. - * @return - */ - public static double calculateSlope( GridNode node, double flowValue ) { - double value = doubleNovalue; - if (!isNovalue(flowValue)) { - int flowDir = (int) flowValue; - if (flowDir != 10) { - Direction direction = Direction.forFlow(flowDir); - double distance = direction.getDistance(node.xRes, node.yRes); - double currentElevation = node.elevation; - double nextElevation = node.getElevationAt(direction); - value = (currentElevation - nextElevation) / distance; - } - } - return value; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.geomorphology.slope; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.HashMap; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.Direction; +import org.jgrasstools.gears.libs.modules.GridNode; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; + +@Description("Calculates the slope in each point of the map.") +@Documentation("Slope.html") +@Author(name = "Antonello Andrea, Erica Ghesla, Cozzini Andrea, Franceschi Silvia, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Geomorphology, Gradient") +@Label(JGTConstants.GEOMORPHOLOGY) +@Name("slope") +@Status(Status.TESTED) +@License("General Public License Version 3 (GPLv3)") +public class Slope extends JGTModel { + @Description("The depitted elevation map.") + @In + public GridCoverage2D inPit = null; + + @Description("The map of flowdirection.") + @In + public GridCoverage2D inFlow = null; + + @Description("The map of gradient.") + @Out + public GridCoverage2D outSlope = null; + + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + @Execute + public void process() { + if (!concatOr(outSlope == null, doReset)) { + return; + } + checkNull(inPit, inFlow); + HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inPit); + int nCols = regionMap.get(CoverageUtilities.COLS).intValue(); + int nRows = regionMap.get(CoverageUtilities.ROWS).intValue(); + double xRes = regionMap.get(CoverageUtilities.XRES); + double yRes = regionMap.get(CoverageUtilities.YRES); + + RenderedImage elevationRI = inPit.getRenderedImage(); + RandomIter elevationIter = RandomIterFactory.create(elevationRI, null); + RenderedImage flowRI = inFlow.getRenderedImage(); + RandomIter flowIter = RandomIterFactory.create(flowRI, null); + + WritableRaster slopeWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); + + pm.beginTask(msg.message("slope.calculating"), nCols); + for( int c = 0; c < nCols; c++ ) { + for( int r = 0; r < nRows; r++ ) { + double flowValue = flowIter.getSampleDouble(c, r, 0); + GridNode node = new GridNode(elevationIter, nCols, nRows, xRes, yRes, c, r); + double value = calculateSlope(node, flowValue); + slopeWR.setSample(c, r, 0, value); + } + pm.worked(1); + } + pm.done(); + + outSlope = CoverageUtilities.buildCoverage("slope", slopeWR, regionMap, inPit.getCoordinateReferenceSystem()); + } + + /** + * Calculates the slope of a given flowdirection value in currentCol and currentRow. + * + * @param node the current {@link GridNode}. + * @param flowValue the value of the flowdirection. + * @return + */ + public static double calculateSlope( GridNode node, double flowValue ) { + double value = doubleNovalue; + if (!isNovalue(flowValue)) { + int flowDir = (int) flowValue; + if (flowDir != 10) { + Direction direction = Direction.forFlow(flowDir); + double distance = direction.getDistance(node.xRes, node.yRes); + double currentElevation = node.elevation; + double nextElevation = node.getElevationAt(direction); + value = (currentElevation - nextElevation) / distance; + } + } + return value; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Dams.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Dams.java index 01bdd9721..e07d3ebf2 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Dams.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Dams.java @@ -1,64 +1,64 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; - -import java.util.HashMap; - -import org.jgrasstools.gears.libs.modules.JGTConstants; - -/** - * Utility class for handling of Dams mappings and data retrival. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class Dams implements IDischargeContributor { - - private final HashMap dams_pfaff2idMap; - private HashMap dams_id2valuesQMap; - - /** - * Constructor. - * - * @param dams_pfaff2idMap {@link HashMap map} of pfafstetter numbers versus - * dams points id. - */ - public Dams( HashMap dams_pfaff2idMap ) { - this.dams_pfaff2idMap = dams_pfaff2idMap; - } - - public Double getDischarge( String pNum ) { - Integer damId = dams_pfaff2idMap.get(pNum); - if (damId != null) { - double[] discharge = dams_id2valuesQMap.get(damId); - if (discharge != null) { - return discharge[0]; - } - } - return JGTConstants.doubleNovalue; - } - - public void setCurrentData( HashMap currentDataMap ) { - dams_id2valuesQMap = currentDataMap; - } - - public double mergeWithDischarge( double contributorDischarge, double inputDischarge ) { - return contributorDischarge; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; + +import java.util.HashMap; + +import org.jgrasstools.gears.libs.modules.JGTConstants; + +/** + * Utility class for handling of Dams mappings and data retrival. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class Dams implements IDischargeContributor { + + private final HashMap dams_pfaff2idMap; + private HashMap dams_id2valuesQMap; + + /** + * Constructor. + * + * @param dams_pfaff2idMap {@link HashMap map} of pfafstetter numbers versus + * dams points id. + */ + public Dams( HashMap dams_pfaff2idMap ) { + this.dams_pfaff2idMap = dams_pfaff2idMap; + } + + public Double getDischarge( String pNum ) { + Integer damId = dams_pfaff2idMap.get(pNum); + if (damId != null) { + double[] discharge = dams_id2valuesQMap.get(damId); + if (discharge != null) { + return discharge[0]; + } + } + return JGTConstants.doubleNovalue; + } + + public void setCurrentData( HashMap currentDataMap ) { + dams_id2valuesQMap = currentDataMap; + } + + public double mergeWithDischarge( double contributorDischarge, double inputDischarge ) { + return contributorDischarge; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/HillSlope.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/HillSlope.java index aabf87e80..34a10743e 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/HillSlope.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/HillSlope.java @@ -1,449 +1,449 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Random; - -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.opengis.feature.simple.SimpleFeature; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; - -/** - * The hillslope area, related to a particular network link. - * - * @author Andrea Antonello - www.hydrologis.com - */ -public class HillSlope implements IHillSlope { - private int hillslopeId = -1; - - private SimpleFeature hillslopeFeature = null; - private SimpleFeature linkFeature = null; - private PfafstetterNumber pfafstetterNumber = null; - - private final List upstreamElements = new ArrayList(); - private IHillSlope downstreamElement = null; - - private IHillSlope firstOfMaiorBasin = null; - private Geometry totalGeometryUpstream; - private Random rn; - private double hillslopeArea = -1; - private double hillslopeUpstreamArea = -1; - private double linkLength = -1; - private double linkSlope = -1; - - private double baricenterElevation = -1; - - private int baricenterElevationAttributeIndex = -1; - private int linkStartElevationAttributeIndex = -1; - private int linkEndElevationAttributeIndex = -1; - - public HillSlope( SimpleFeature netFeature, SimpleFeature basinFeature, PfafstetterNumber pfafNumber, int hillslopeId, - int baricenterElevationFieldIndex, int linkStartElevationFieldIndex, int linkEndElevationFieldIndex ) { - - this.hillslopeId = hillslopeId; - this.hillslopeFeature = basinFeature; - this.linkFeature = netFeature; - this.pfafstetterNumber = pfafNumber; - this.baricenterElevationAttributeIndex = baricenterElevationFieldIndex; - this.linkStartElevationAttributeIndex = linkStartElevationFieldIndex; - this.linkEndElevationAttributeIndex = linkEndElevationFieldIndex; - - if (baricenterElevationAttributeIndex == -1) { - throw new IllegalArgumentException("The baricenter field index can't be -1."); - } - // HashMap laiMap, - // HashMap displacementMap, - // HashMap roughnessMap, - // double RGL, double ra, double rs, double rarc - - rn = new Random(); - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getHillslopeId() - */ - public int getHillslopeId() { - return hillslopeId; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getLinkFeature() - */ - public SimpleFeature getLinkFeature() { - return linkFeature; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getLinkLength() - */ - public double getLinkLength() { - if (linkLength == -1) { - linkLength = ((Geometry) linkFeature.getDefaultGeometry()).getLength(); // [m] - } - return linkLength; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getLinkSlope() - */ - public double getLinkSlope() { - if ((int) linkSlope == -1) { - // hillslopeFeature.getAttribute(baricenterElevationAttribute); - double startElev = (Double) linkFeature.getAttribute(linkStartElevationAttributeIndex); - double endElev = (Double) linkFeature.getAttribute(linkEndElevationAttributeIndex); - linkSlope = (startElev - endElev) / getLinkLength(); - - if (linkSlope <= 0) { - /* - * if < 0 then probably it is very flat and the dem si not precise. The slope is - * set. - */ - linkSlope = 0.001; - } - } - return linkSlope; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getLinkWidth(double, double, double) - */ - public double getLinkWidth( double coefficient, double exponent, double sdResiduals ) { - // Returns a random value that follows a gaussian distribution - double sampleGaussian = rn.nextGaussian() * sdResiduals; - double upstreamArea = getUpstreamArea(null) / 1000000.0; - - double width = coefficient * Math.pow(upstreamArea, exponent) * Math.exp(sampleGaussian); - return width; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getLinkChezi(double, double) - */ - public double getLinkChezi( double coefficient, double exponent ) { - double chezi = coefficient * Math.pow(getLinkSlope(), exponent); - return chezi; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getHillslopeFeature() - */ - public SimpleFeature getHillslopeFeature() { - return hillslopeFeature; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getHillslopeArea() - */ - public double getHillslopeArea() { - if (hillslopeArea == -1) { - hillslopeArea = ((Geometry) hillslopeFeature.getDefaultGeometry()).getArea(); // m^2 - } - return hillslopeArea; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getBaricenterElevation() - */ - public double getBaricenterElevation() { - if (baricenterElevation == -1) { - baricenterElevation = (Double) hillslopeFeature.getAttribute(baricenterElevationAttributeIndex); - } - return baricenterElevation; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getHillslopeClosure() - */ - public Coordinate getHillslopeClosure() { - Coordinate[] coords = ((Geometry) linkFeature.getDefaultGeometry()).getCoordinates(); - return coords[coords.length - 1]; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getGeometry(java.util.List, org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor, boolean) - */ - public Geometry getGeometry( List limit, IJGTProgressMonitor pm, boolean doMonitor ) { - - if (limit == null && totalGeometryUpstream != null) { - return totalGeometryUpstream; - } - - List geometries = new ArrayList(); - geometries.add((Geometry) hillslopeFeature.getDefaultGeometry()); - getAllUpstreamElementsGeometries(geometries, limit, this); - GeometryFactory gFactory = new GeometryFactory(); - /* - * join the geoms to a single one - */ - Geometry runningGeometry = geometries.get(0); - if (doMonitor) - pm.beginTask("Estrazione geometrie dei bacini elementari a monte", geometries.size() - 1); - for( int i = 1; i < geometries.size(); i++ ) { - if (doMonitor) { - pm.worked(1); - } else { - pm.subTask("Unione geometrie " + i + "/" + (geometries.size() - 1)); - } - List tmp = new ArrayList(2); - tmp.add(runningGeometry); - tmp.add(geometries.get(i)); - Geometry gCollection = gFactory.buildGeometry(tmp); - runningGeometry = gCollection.buffer(0.0); - } - pm.subTask(""); - if (doMonitor) - pm.done(); - - // keep the total geometry, in case it is asked again - if (limit == null) { - totalGeometryUpstream = runningGeometry; - } - - return runningGeometry; - // return gCollection.buffer(0.0); - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getUpstreamArea(java.util.List) - */ - public double getUpstreamArea( List limit ) { - if (hillslopeUpstreamArea == -1) { - - List basins = new ArrayList(); - getAllUpstreamElements(basins, limit); - - hillslopeUpstreamArea = 0; - for( IHillSlope elementarBasin : basins ) { - hillslopeUpstreamArea = hillslopeUpstreamArea + elementarBasin.getHillslopeArea(); - } - } - return hillslopeUpstreamArea; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getPfafstetterNumber() - */ - public PfafstetterNumber getPfafstetterNumber() { - return pfafstetterNumber; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getFirstOfMaiorBasinElement() - */ - public IHillSlope getFirstOfMaiorBasinElement() { - return firstOfMaiorBasin; - } - - // public UpstreamElement[] getHeadElements() { - // - // return null; - // } - // - // public UpstreamElement getStartElement() { - // UpstreamElement ue = getConnectedDownstreamElement().getStartElement(); - // if (ue == null) { - // return this; - // } - // return ue; - // } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#addConnectedUpstreamElementWithCheck(org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlope) - */ - public boolean addConnectedUpstreamElementWithCheck( IHillSlope element ) { - if (PfafstetterNumber.areConnectedUpstream(this.getPfafstetterNumber(), element.getPfafstetterNumber())) { - if (!upstreamElements.contains(element)) { - upstreamElements.add(element); - element.addConnectedDownstreamElementWithCheck(this); - } - return true; - } - return false; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#addConnectedDownstreamElementWithChech(org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlope) - */ - public boolean addConnectedDownstreamElementWithCheck( IHillSlope element ) { - if (PfafstetterNumber.areConnectedDownstream(this.getPfafstetterNumber(), element.getPfafstetterNumber())) { - downstreamElement = element; - element.addConnectedUpstreamElementWithCheck(this); - return true; - } - return false; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getUpstreamElementAtPfafstetter(org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.PfafstetterNumber) - */ - public IHillSlope getUpstreamElementAtPfafstetter( PfafstetterNumber pNum ) { - // am I the one - if (pfafstetterNumber.compare(pfafstetterNumber, pNum) == 0) { - return this; - } - // // perhaps my upstream elements - // for( UpstreamElement upstreamElement : upstreamElements ) { - // if (upstreamElement.getPfafstetterNumber().compare( - // upstreamElement.getPfafstetterNumber(), pNum) == 0) { - // return upstreamElement; - // } - // } - // digg further - IHillSlope theChosen = null; - for( IHillSlope upstreamElement : upstreamElements ) { - theChosen = upstreamElement.getUpstreamElementAtPfafstetter(pNum); - if (theChosen != null) { - break; - } - } - return theChosen; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getConnectedDownstreamElement() - */ - public IHillSlope getConnectedDownstreamElement() { - if (downstreamElement == null) { - return null; - } - return downstreamElement; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getConnectedUpstreamElements() - */ - public List getConnectedUpstreamElements() { - if (upstreamElements.size() > 0) { - return upstreamElements; - } - return null; - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getAllUpstreamElements(java.util.List, java.util.List) - */ - public void getAllUpstreamElements( List elems, List limit ) { - // if the limit is the number of the actual element, return - if (limit != null && limit.size() > 0) { - for( PfafstetterNumber pfafs : limit ) { - if (pfafs.compare(pfafs, pfafstetterNumber) == 0) { - return; - } - } - } - elems.add(this); - for( IHillSlope upstreamElement : upstreamElements ) { - upstreamElement.getAllUpstreamElements(elems, limit); - } - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getAllUpstreamElementsGeometries(java.util.List, java.util.List, org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope) - */ - public void getAllUpstreamElementsGeometries( List elems, List limit, - IHillSlope firstOfMaiorBasin ) { - // if the limit is the number of the actual element, return - if (limit != null && limit.size() > 0) { - for( PfafstetterNumber pfafs : limit ) { - if (pfafs.compare(pfafs, pfafstetterNumber) == 0) { - return; - } - } - } - this.firstOfMaiorBasin = firstOfMaiorBasin; - elems.add((Geometry) hillslopeFeature.getDefaultGeometry()); - for( IHillSlope upstreamElement : upstreamElements ) { - upstreamElement.getAllUpstreamElementsGeometries(elems, limit, firstOfMaiorBasin); - } - - } - - /** - * Connect the various elements in a chain of tributary basins and nets - * - * @param elements - */ - public static void connectElements( List elements ) { - Collections.sort(elements, elements.get(0)); - - for( int i = 0; i < elements.size(); i++ ) { - IHillSlope elem = elements.get(i); - for( int j = i + 1; j < elements.size(); j++ ) { - IHillSlope tmp = elements.get(j); - elem.addConnectedDownstreamElementWithCheck(tmp); - } - } - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#toString() - */ - @SuppressWarnings("nls") - public String toString() { - StringBuilder b = new StringBuilder(); - b.append("=====================\n= PF: " + pfafstetterNumber).append("\n= ").append("DownElem: \n= "); - if (downstreamElement != null) { - b.append(downstreamElement.getPfafstetterNumber()).append("\n= "); - } - b.append("UpElem:\n= "); - for( int i = 0; i < upstreamElements.size(); i++ ) { - if (upstreamElements.get(i) != null) - b.append("\t" + upstreamElements.get(i).getPfafstetterNumber()).append("\n= "); - } - b.append("\n=====================\n"); - - return b.toString(); - } - - /* (non-Javadoc) - * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#compare(org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlope, org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlope) - */ - public int compare( IHillSlope ue1, IHillSlope ue2 ) { - PfafstetterNumber p1 = ue1.getPfafstetterNumber(); - PfafstetterNumber p2 = ue2.getPfafstetterNumber(); - return p1.compare(p1, p2); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + hillslopeId; - result = prime * result + ((pfafstetterNumber == null) ? 0 : pfafstetterNumber.hashCode()); - return result; - } - - @Override - public boolean equals( Object obj ) { - if (obj instanceof IHillSlope) { - IHillSlope other = (IHillSlope) obj; - PfafstetterNumber p1 = getPfafstetterNumber(); - PfafstetterNumber p2 = other.getPfafstetterNumber(); - return p1.compare(p1, p2) == 0; - } - return false; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; + +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; + +/** + * The hillslope area, related to a particular network link. + * + * @author Andrea Antonello - www.hydrologis.com + */ +public class HillSlope implements IHillSlope { + private int hillslopeId = -1; + + private SimpleFeature hillslopeFeature = null; + private SimpleFeature linkFeature = null; + private PfafstetterNumber pfafstetterNumber = null; + + private final List upstreamElements = new ArrayList(); + private IHillSlope downstreamElement = null; + + private IHillSlope firstOfMaiorBasin = null; + private Geometry totalGeometryUpstream; + private Random rn; + private double hillslopeArea = -1; + private double hillslopeUpstreamArea = -1; + private double linkLength = -1; + private double linkSlope = -1; + + private double baricenterElevation = -1; + + private int baricenterElevationAttributeIndex = -1; + private int linkStartElevationAttributeIndex = -1; + private int linkEndElevationAttributeIndex = -1; + + public HillSlope( SimpleFeature netFeature, SimpleFeature basinFeature, PfafstetterNumber pfafNumber, int hillslopeId, + int baricenterElevationFieldIndex, int linkStartElevationFieldIndex, int linkEndElevationFieldIndex ) { + + this.hillslopeId = hillslopeId; + this.hillslopeFeature = basinFeature; + this.linkFeature = netFeature; + this.pfafstetterNumber = pfafNumber; + this.baricenterElevationAttributeIndex = baricenterElevationFieldIndex; + this.linkStartElevationAttributeIndex = linkStartElevationFieldIndex; + this.linkEndElevationAttributeIndex = linkEndElevationFieldIndex; + + if (baricenterElevationAttributeIndex == -1) { + throw new IllegalArgumentException("The baricenter field index can't be -1."); + } + // HashMap laiMap, + // HashMap displacementMap, + // HashMap roughnessMap, + // double RGL, double ra, double rs, double rarc + + rn = new Random(); + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getHillslopeId() + */ + public int getHillslopeId() { + return hillslopeId; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getLinkFeature() + */ + public SimpleFeature getLinkFeature() { + return linkFeature; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getLinkLength() + */ + public double getLinkLength() { + if (linkLength == -1) { + linkLength = ((Geometry) linkFeature.getDefaultGeometry()).getLength(); // [m] + } + return linkLength; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getLinkSlope() + */ + public double getLinkSlope() { + if ((int) linkSlope == -1) { + // hillslopeFeature.getAttribute(baricenterElevationAttribute); + double startElev = (Double) linkFeature.getAttribute(linkStartElevationAttributeIndex); + double endElev = (Double) linkFeature.getAttribute(linkEndElevationAttributeIndex); + linkSlope = (startElev - endElev) / getLinkLength(); + + if (linkSlope <= 0) { + /* + * if < 0 then probably it is very flat and the dem si not precise. The slope is + * set. + */ + linkSlope = 0.001; + } + } + return linkSlope; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getLinkWidth(double, double, double) + */ + public double getLinkWidth( double coefficient, double exponent, double sdResiduals ) { + // Returns a random value that follows a gaussian distribution + double sampleGaussian = rn.nextGaussian() * sdResiduals; + double upstreamArea = getUpstreamArea(null) / 1000000.0; + + double width = coefficient * Math.pow(upstreamArea, exponent) * Math.exp(sampleGaussian); + return width; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getLinkChezi(double, double) + */ + public double getLinkChezi( double coefficient, double exponent ) { + double chezi = coefficient * Math.pow(getLinkSlope(), exponent); + return chezi; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getHillslopeFeature() + */ + public SimpleFeature getHillslopeFeature() { + return hillslopeFeature; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getHillslopeArea() + */ + public double getHillslopeArea() { + if (hillslopeArea == -1) { + hillslopeArea = ((Geometry) hillslopeFeature.getDefaultGeometry()).getArea(); // m^2 + } + return hillslopeArea; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getBaricenterElevation() + */ + public double getBaricenterElevation() { + if (baricenterElevation == -1) { + baricenterElevation = (Double) hillslopeFeature.getAttribute(baricenterElevationAttributeIndex); + } + return baricenterElevation; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getHillslopeClosure() + */ + public Coordinate getHillslopeClosure() { + Coordinate[] coords = ((Geometry) linkFeature.getDefaultGeometry()).getCoordinates(); + return coords[coords.length - 1]; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getGeometry(java.util.List, org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor, boolean) + */ + public Geometry getGeometry( List limit, IJGTProgressMonitor pm, boolean doMonitor ) { + + if (limit == null && totalGeometryUpstream != null) { + return totalGeometryUpstream; + } + + List geometries = new ArrayList(); + geometries.add((Geometry) hillslopeFeature.getDefaultGeometry()); + getAllUpstreamElementsGeometries(geometries, limit, this); + GeometryFactory gFactory = new GeometryFactory(); + /* + * join the geoms to a single one + */ + Geometry runningGeometry = geometries.get(0); + if (doMonitor) + pm.beginTask("Estrazione geometrie dei bacini elementari a monte", geometries.size() - 1); + for( int i = 1; i < geometries.size(); i++ ) { + if (doMonitor) { + pm.worked(1); + } else { + pm.subTask("Unione geometrie " + i + "/" + (geometries.size() - 1)); + } + List tmp = new ArrayList(2); + tmp.add(runningGeometry); + tmp.add(geometries.get(i)); + Geometry gCollection = gFactory.buildGeometry(tmp); + runningGeometry = gCollection.buffer(0.0); + } + pm.subTask(""); + if (doMonitor) + pm.done(); + + // keep the total geometry, in case it is asked again + if (limit == null) { + totalGeometryUpstream = runningGeometry; + } + + return runningGeometry; + // return gCollection.buffer(0.0); + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getUpstreamArea(java.util.List) + */ + public double getUpstreamArea( List limit ) { + if (hillslopeUpstreamArea == -1) { + + List basins = new ArrayList(); + getAllUpstreamElements(basins, limit); + + hillslopeUpstreamArea = 0; + for( IHillSlope elementarBasin : basins ) { + hillslopeUpstreamArea = hillslopeUpstreamArea + elementarBasin.getHillslopeArea(); + } + } + return hillslopeUpstreamArea; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getPfafstetterNumber() + */ + public PfafstetterNumber getPfafstetterNumber() { + return pfafstetterNumber; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getFirstOfMaiorBasinElement() + */ + public IHillSlope getFirstOfMaiorBasinElement() { + return firstOfMaiorBasin; + } + + // public UpstreamElement[] getHeadElements() { + // + // return null; + // } + // + // public UpstreamElement getStartElement() { + // UpstreamElement ue = getConnectedDownstreamElement().getStartElement(); + // if (ue == null) { + // return this; + // } + // return ue; + // } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#addConnectedUpstreamElementWithCheck(org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlope) + */ + public boolean addConnectedUpstreamElementWithCheck( IHillSlope element ) { + if (PfafstetterNumber.areConnectedUpstream(this.getPfafstetterNumber(), element.getPfafstetterNumber())) { + if (!upstreamElements.contains(element)) { + upstreamElements.add(element); + element.addConnectedDownstreamElementWithCheck(this); + } + return true; + } + return false; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#addConnectedDownstreamElementWithChech(org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlope) + */ + public boolean addConnectedDownstreamElementWithCheck( IHillSlope element ) { + if (PfafstetterNumber.areConnectedDownstream(this.getPfafstetterNumber(), element.getPfafstetterNumber())) { + downstreamElement = element; + element.addConnectedUpstreamElementWithCheck(this); + return true; + } + return false; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getUpstreamElementAtPfafstetter(org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.PfafstetterNumber) + */ + public IHillSlope getUpstreamElementAtPfafstetter( PfafstetterNumber pNum ) { + // am I the one + if (pfafstetterNumber.compare(pfafstetterNumber, pNum) == 0) { + return this; + } + // // perhaps my upstream elements + // for( UpstreamElement upstreamElement : upstreamElements ) { + // if (upstreamElement.getPfafstetterNumber().compare( + // upstreamElement.getPfafstetterNumber(), pNum) == 0) { + // return upstreamElement; + // } + // } + // digg further + IHillSlope theChosen = null; + for( IHillSlope upstreamElement : upstreamElements ) { + theChosen = upstreamElement.getUpstreamElementAtPfafstetter(pNum); + if (theChosen != null) { + break; + } + } + return theChosen; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getConnectedDownstreamElement() + */ + public IHillSlope getConnectedDownstreamElement() { + if (downstreamElement == null) { + return null; + } + return downstreamElement; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getConnectedUpstreamElements() + */ + public List getConnectedUpstreamElements() { + if (upstreamElements.size() > 0) { + return upstreamElements; + } + return null; + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getAllUpstreamElements(java.util.List, java.util.List) + */ + public void getAllUpstreamElements( List elems, List limit ) { + // if the limit is the number of the actual element, return + if (limit != null && limit.size() > 0) { + for( PfafstetterNumber pfafs : limit ) { + if (pfafs.compare(pfafs, pfafstetterNumber) == 0) { + return; + } + } + } + elems.add(this); + for( IHillSlope upstreamElement : upstreamElements ) { + upstreamElement.getAllUpstreamElements(elems, limit); + } + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#getAllUpstreamElementsGeometries(java.util.List, java.util.List, org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope) + */ + public void getAllUpstreamElementsGeometries( List elems, List limit, + IHillSlope firstOfMaiorBasin ) { + // if the limit is the number of the actual element, return + if (limit != null && limit.size() > 0) { + for( PfafstetterNumber pfafs : limit ) { + if (pfafs.compare(pfafs, pfafstetterNumber) == 0) { + return; + } + } + } + this.firstOfMaiorBasin = firstOfMaiorBasin; + elems.add((Geometry) hillslopeFeature.getDefaultGeometry()); + for( IHillSlope upstreamElement : upstreamElements ) { + upstreamElement.getAllUpstreamElementsGeometries(elems, limit, firstOfMaiorBasin); + } + + } + + /** + * Connect the various elements in a chain of tributary basins and nets + * + * @param elements + */ + public static void connectElements( List elements ) { + Collections.sort(elements, elements.get(0)); + + for( int i = 0; i < elements.size(); i++ ) { + IHillSlope elem = elements.get(i); + for( int j = i + 1; j < elements.size(); j++ ) { + IHillSlope tmp = elements.get(j); + elem.addConnectedDownstreamElementWithCheck(tmp); + } + } + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#toString() + */ + @SuppressWarnings("nls") + public String toString() { + StringBuilder b = new StringBuilder(); + b.append("=====================\n= PF: " + pfafstetterNumber).append("\n= ").append("DownElem: \n= "); + if (downstreamElement != null) { + b.append(downstreamElement.getPfafstetterNumber()).append("\n= "); + } + b.append("UpElem:\n= "); + for( int i = 0; i < upstreamElements.size(); i++ ) { + if (upstreamElements.get(i) != null) + b.append("\t" + upstreamElements.get(i).getPfafstetterNumber()).append("\n= "); + } + b.append("\n=====================\n"); + + return b.toString(); + } + + /* (non-Javadoc) + * @see org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope#compare(org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlope, org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlope) + */ + public int compare( IHillSlope ue1, IHillSlope ue2 ) { + PfafstetterNumber p1 = ue1.getPfafstetterNumber(); + PfafstetterNumber p2 = ue2.getPfafstetterNumber(); + return p1.compare(p1, p2); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + hillslopeId; + result = prime * result + ((pfafstetterNumber == null) ? 0 : pfafstetterNumber.hashCode()); + return result; + } + + @Override + public boolean equals( Object obj ) { + if (obj instanceof IHillSlope) { + IHillSlope other = (IHillSlope) obj; + PfafstetterNumber p1 = getPfafstetterNumber(); + PfafstetterNumber p2 = other.getPfafstetterNumber(); + return p1.compare(p1, p2) == 0; + } + return false; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Hydrometers.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Hydrometers.java index 424d63cb4..1360ae55f 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Hydrometers.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Hydrometers.java @@ -1,64 +1,64 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; - -import java.util.HashMap; - -import org.jgrasstools.gears.libs.modules.JGTConstants; - -/** - * Utility class for handling of Hydrometers mappings and data retrival. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class Hydrometers implements IDischargeContributor { - - private final HashMap hydrometer_pfaff2idMap; - private HashMap hydrometer_id2valuesMap; - - /** - * Constructor. - * - * @param hydrometer_pfaff2idMap {@link HashMap map} of pfafstetter numbers versus - * hydrometers points id. - */ - public Hydrometers( HashMap hydrometer_pfaff2idMap ) { - this.hydrometer_pfaff2idMap = hydrometer_pfaff2idMap; - } - - public Double getDischarge( String pfafstetterNumber ) { - Integer hydroId = hydrometer_pfaff2idMap.get(pfafstetterNumber); - if (hydroId != null) { - double[] value = hydrometer_id2valuesMap.get(hydroId); - if (value != null) { - return value[0]; - } - } - return JGTConstants.doubleNovalue; - } - - public void setCurrentData( HashMap currentDataMap ) { - hydrometer_id2valuesMap = currentDataMap; - } - - public double mergeWithDischarge( double contributorDischarge, double inputDischarge ) { - return contributorDischarge; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; + +import java.util.HashMap; + +import org.jgrasstools.gears.libs.modules.JGTConstants; + +/** + * Utility class for handling of Hydrometers mappings and data retrival. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class Hydrometers implements IDischargeContributor { + + private final HashMap hydrometer_pfaff2idMap; + private HashMap hydrometer_id2valuesMap; + + /** + * Constructor. + * + * @param hydrometer_pfaff2idMap {@link HashMap map} of pfafstetter numbers versus + * hydrometers points id. + */ + public Hydrometers( HashMap hydrometer_pfaff2idMap ) { + this.hydrometer_pfaff2idMap = hydrometer_pfaff2idMap; + } + + public Double getDischarge( String pfafstetterNumber ) { + Integer hydroId = hydrometer_pfaff2idMap.get(pfafstetterNumber); + if (hydroId != null) { + double[] value = hydrometer_id2valuesMap.get(hydroId); + if (value != null) { + return value[0]; + } + } + return JGTConstants.doubleNovalue; + } + + public void setCurrentData( HashMap currentDataMap ) { + hydrometer_id2valuesMap = currentDataMap; + } + + public double mergeWithDischarge( double contributorDischarge, double inputDischarge ) { + return contributorDischarge; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/IDischargeContributor.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/IDischargeContributor.java index 08f033120..4012e4746 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/IDischargeContributor.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/IDischargeContributor.java @@ -1,57 +1,57 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; - -import java.util.HashMap; - -/** - * Interface for all those objects that can supply a discharge in a given point of the network. - * - *

The point of the network is defined by its pfafstetter number.

- * - * @author Andrea Antonello (www.hydrologis.com) - */ -public interface IDischargeContributor { - - /** - * Returns the discharge for the given location of the network. - * - * @param pfafstetterNumber the number identifying the network position. - * @return the discharge for the given network point. Double.NaN has to be - * returned for invalid values. - */ - public abstract Double getDischarge( String pfafstetterNumber ); - - /** - * Returns the discarge of the contributor merged with the main discharge. - * - *

This is useful because the contributor knows if it has to - * sumor subtract. - * - * @param contributorDischarge the discharge provided by the contributor itself - * (taken from the result of {@link #getDischarge(String)}. - * @param inputDischarge the input discharge in the contributing point. May - * be useful to calculate the output discharge. - * @return the merged discharge. - */ - public abstract double mergeWithDischarge(double contributorDischarge, double inputDischarge ); - - public abstract void setCurrentData( HashMap currentDataMap ); - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; + +import java.util.HashMap; + +/** + * Interface for all those objects that can supply a discharge in a given point of the network. + * + *

The point of the network is defined by its pfafstetter number.

+ * + * @author Andrea Antonello (www.hydrologis.com) + */ +public interface IDischargeContributor { + + /** + * Returns the discharge for the given location of the network. + * + * @param pfafstetterNumber the number identifying the network position. + * @return the discharge for the given network point. Double.NaN has to be + * returned for invalid values. + */ + public abstract Double getDischarge( String pfafstetterNumber ); + + /** + * Returns the discarge of the contributor merged with the main discharge. + * + *

This is useful because the contributor knows if it has to + * sumor subtract. + * + * @param contributorDischarge the discharge provided by the contributor itself + * (taken from the result of {@link #getDischarge(String)}. + * @param inputDischarge the input discharge in the contributing point. May + * be useful to calculate the output discharge. + * @return the merged discharge. + */ + public abstract double mergeWithDischarge(double contributorDischarge, double inputDischarge ); + + public abstract void setCurrentData( HashMap currentDataMap ); + } \ No newline at end of file diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/MonitoringPoint.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/MonitoringPoint.java index f2f697f7d..b288a66e6 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/MonitoringPoint.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/MonitoringPoint.java @@ -1,279 +1,279 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; - -import java.util.Comparator; -import java.util.Date; -import java.util.Hashtable; -import java.util.List; -import java.util.Set; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.Point; - -/** - * @author Andrea Antonello (www.hydrologis.com) - */ -public abstract class MonitoringPoint - implements - Comparator, - MonitoringPointsConstants { - - public static final int TYPE_HYDROMETER_DISCHARGE = 0; - public static final int TYPE_DAM_SCARICO = 1; - public static final int TYPE_DAM_TURBINATA = 2; - - /** - * The identifier id of the data feed into the monitoring point. This identifier makes it - * possible to understand how to calculate the needed output. It is very different from the - * typeIdentifier parameter of the method - * {@link MonitoringPoint#getDataValueAt(Date, Double, int)}. - */ - protected int currentIdentifier = -1; - - protected Coordinate position = null; - protected int ID = -1; - - protected PfafstetterNumber pfafstetterNumber; - protected String name = " - "; //$NON-NLS-1$ - protected String description = " - "; //$NON-NLS-1$ - protected int type; - protected int relatedID; - protected Hashtable pfafRelatedMonitoringPointsTable = new Hashtable(); - protected boolean isActive = false; - protected double dataTimeInterval = -1; - protected String dataTimeIntervalUnit = ""; //$NON-NLS-1$ - protected String srsCode = ""; //$NON-NLS-1$ - protected String quantityName = ""; //$NON-NLS-1$ - protected String quantityUnit = ""; //$NON-NLS-1$ - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public PfafstetterNumber getPfatstetterNumber() { - return pfafstetterNumber; - } - - public int getID() { - return ID; - } - - public int getRelatedID() { - return relatedID; - } - - /** - * Tries to connect another monitoringpoint if that one has a related id equal to that of this - * object. That way it would be possible to add more than one point as related. - * - * @param monitoringPoint the point to connect - * @return true if the connection was successfull - */ - public boolean connectIfPossible( MonitoringPoint monitoringPoint ) { - // check if the other point has this as related id - if (ID == monitoringPoint.getRelatedID()) { - pfafRelatedMonitoringPointsTable.put(monitoringPoint.getPfatstetterNumber().toString(), - monitoringPoint); - return true; - } - return false; - - } - - /** - * Get the related monitoringpoint. If there are more than one, the pfafstetter number is used - * to chose. - * - * @param pfafStetter used to chose in the points table. Can be null, in which case the first - * found is taken (should be used only if there is only one point in the table) - * @return the related point - */ - public MonitoringPoint getRelatedMonitoringPoint( String pfafStetter ) { - if (pfafStetter != null) { - return pfafRelatedMonitoringPointsTable.get(pfafStetter); - } else { - Set keySet = pfafRelatedMonitoringPointsTable.keySet(); - for( String key : keySet ) { - return pfafRelatedMonitoringPointsTable.get(key); - } - return null; - } - } - - public int getType() { - return type; - } - - public Coordinate getPosition() { - return position; - } - - public boolean isActive() { - return isActive; - } - - public void setActive( boolean isActive ) { - this.isActive = isActive; - } - - /** - * Add a date/value data record to a particular series - * - * @param date date of the record - * @param value value of the record - * @param identifier identifier of the recorded series - */ - public abstract void addDateValueRecord( Date date, Double value, int identifier ); - - /** - * Add a value/value data record to a particular series (could be level/volume or - * level/discharge) - * - * @param xValue the domain value for the record - * @param yValue the range value for the record - * @param identifier and identifier for the series - */ - public abstract void addValueValueRecord( Double xValue, Double yValue, int identifier ); - - /** - * Get a data record from a particular serie - * - * @param date the date for which teh value is requested ({@link MonitoringPoint#geodataNovalue} is - * returned, if no value present) - * @param value a value if a value is needed to calculate a result (for example in the case of a - * dam, if the output discharge is based on the input discharge) - * @param tyepIdentifier identifier of the type of output requested. IMPORTANT: this is - * very different from the identifiers used to define the datattypes that are feed into - * the monitoringpoint, which use the {@link MonitoringPoint#currentIdentifier}.
- * The typeIdentifier can be of type:
- *

    - *
  • {@link MonitoringPoint#TYPE_HYDROMETER_DISCHARGE}
  • - *
  • {@link MonitoringPoint#TYPE_DAM_SCARICO}
  • - *
  • {@link MonitoringPoint#TYPE_DAM_TURBINATA}
  • - *
- * @return the value at the requested date - */ - public abstract Double getDataValueAt( Date date, Double value, int tyepIdentifier ); - - public int compare( MonitoringPoint o1, MonitoringPoint o2 ) { - - PfafstetterNumber p1 = o1.getPfatstetterNumber(); - PfafstetterNumber p2 = o2.getPfatstetterNumber(); - - if (p1 != null && p2 != null) { - - List p1OrdersList = o1.getPfatstetterNumber().getOrdersList(); - List p2OrdersList = o2.getPfatstetterNumber().getOrdersList(); - - int levels = p1OrdersList.size(); - if (p2OrdersList.size() < levels) { - levels = p2OrdersList.size(); - } - - /* - * check the numbers to the minor level of the two - */ - for( int i = 0; i < levels; i++ ) { - int thisone = p1OrdersList.get(i); - int otherone = p2OrdersList.get(i); - if (thisone > otherone) { - /* - * if this has major number of the other, then this has to be sorted as minor of - * the other, following the pfafstetter logic that has major numbers towards - * valley - */ - return -1; - } else if (thisone < otherone) { - return 1; - } else { - // if they are equal, go on to the next level - continue; - } - } - - return 0; - } else { - if (p1 == null) - System.out.println("Pstaett null for " + o1.getName()); - if (p2 == null) - System.out.println("Pstaett null for " + o2.getName()); - return -2; - } - } - - /** - * Create a featurecollection from a list of monitoringpoints. Based on the position of the - * points and some of their attributes. - * - * @param monitoringPointsList - * @return the featurecollection - */ - public SimpleFeatureCollection toFeatureCollection( - List monitoringPointsList ) { - - // create the feature type - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - // set the name - b.setName("monitoringpoints"); - // add a geometry property - b.add("the_geom", Point.class); - // add some properties - b.add("id", Integer.class); - b.add("relatedid", Integer.class); - b.add("pfaf", String.class); - // build the type - SimpleFeatureType type = b.buildFeatureType(); - // create the feature - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - - GeometryFactory gF = new GeometryFactory(); - /* - * insert them in inverse order to get them out of the collection in the same order as the - * list - */ - SimpleFeatureCollection newCollection = FeatureCollections - .newCollection(); - for( int i = 0; i < monitoringPointsList.size(); i++ ) { - MonitoringPoint mp = monitoringPointsList.get(monitoringPointsList.size() - i - 1); - - Object[] values = new Object[]{gF.createPoint(mp.getPosition()), mp.getID(), - mp.getRelatedID(), mp.getPfatstetterNumber().toString()}; - // add the values - builder.addAll(values); - // build the feature with provided ID - SimpleFeature feature = builder.buildFeature(type.getTypeName() + "." + i); - newCollection.add(feature); - } - - return newCollection; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; + +import java.util.Comparator; +import java.util.Date; +import java.util.Hashtable; +import java.util.List; +import java.util.Set; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.Point; + +/** + * @author Andrea Antonello (www.hydrologis.com) + */ +public abstract class MonitoringPoint + implements + Comparator, + MonitoringPointsConstants { + + public static final int TYPE_HYDROMETER_DISCHARGE = 0; + public static final int TYPE_DAM_SCARICO = 1; + public static final int TYPE_DAM_TURBINATA = 2; + + /** + * The identifier id of the data feed into the monitoring point. This identifier makes it + * possible to understand how to calculate the needed output. It is very different from the + * typeIdentifier parameter of the method + * {@link MonitoringPoint#getDataValueAt(Date, Double, int)}. + */ + protected int currentIdentifier = -1; + + protected Coordinate position = null; + protected int ID = -1; + + protected PfafstetterNumber pfafstetterNumber; + protected String name = " - "; //$NON-NLS-1$ + protected String description = " - "; //$NON-NLS-1$ + protected int type; + protected int relatedID; + protected Hashtable pfafRelatedMonitoringPointsTable = new Hashtable(); + protected boolean isActive = false; + protected double dataTimeInterval = -1; + protected String dataTimeIntervalUnit = ""; //$NON-NLS-1$ + protected String srsCode = ""; //$NON-NLS-1$ + protected String quantityName = ""; //$NON-NLS-1$ + protected String quantityUnit = ""; //$NON-NLS-1$ + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + + public PfafstetterNumber getPfatstetterNumber() { + return pfafstetterNumber; + } + + public int getID() { + return ID; + } + + public int getRelatedID() { + return relatedID; + } + + /** + * Tries to connect another monitoringpoint if that one has a related id equal to that of this + * object. That way it would be possible to add more than one point as related. + * + * @param monitoringPoint the point to connect + * @return true if the connection was successfull + */ + public boolean connectIfPossible( MonitoringPoint monitoringPoint ) { + // check if the other point has this as related id + if (ID == monitoringPoint.getRelatedID()) { + pfafRelatedMonitoringPointsTable.put(monitoringPoint.getPfatstetterNumber().toString(), + monitoringPoint); + return true; + } + return false; + + } + + /** + * Get the related monitoringpoint. If there are more than one, the pfafstetter number is used + * to chose. + * + * @param pfafStetter used to chose in the points table. Can be null, in which case the first + * found is taken (should be used only if there is only one point in the table) + * @return the related point + */ + public MonitoringPoint getRelatedMonitoringPoint( String pfafStetter ) { + if (pfafStetter != null) { + return pfafRelatedMonitoringPointsTable.get(pfafStetter); + } else { + Set keySet = pfafRelatedMonitoringPointsTable.keySet(); + for( String key : keySet ) { + return pfafRelatedMonitoringPointsTable.get(key); + } + return null; + } + } + + public int getType() { + return type; + } + + public Coordinate getPosition() { + return position; + } + + public boolean isActive() { + return isActive; + } + + public void setActive( boolean isActive ) { + this.isActive = isActive; + } + + /** + * Add a date/value data record to a particular series + * + * @param date date of the record + * @param value value of the record + * @param identifier identifier of the recorded series + */ + public abstract void addDateValueRecord( Date date, Double value, int identifier ); + + /** + * Add a value/value data record to a particular series (could be level/volume or + * level/discharge) + * + * @param xValue the domain value for the record + * @param yValue the range value for the record + * @param identifier and identifier for the series + */ + public abstract void addValueValueRecord( Double xValue, Double yValue, int identifier ); + + /** + * Get a data record from a particular serie + * + * @param date the date for which teh value is requested ({@link MonitoringPoint#geodataNovalue} is + * returned, if no value present) + * @param value a value if a value is needed to calculate a result (for example in the case of a + * dam, if the output discharge is based on the input discharge) + * @param tyepIdentifier identifier of the type of output requested. IMPORTANT: this is + * very different from the identifiers used to define the datattypes that are feed into + * the monitoringpoint, which use the {@link MonitoringPoint#currentIdentifier}.
+ * The typeIdentifier can be of type:
+ *
    + *
  • {@link MonitoringPoint#TYPE_HYDROMETER_DISCHARGE}
  • + *
  • {@link MonitoringPoint#TYPE_DAM_SCARICO}
  • + *
  • {@link MonitoringPoint#TYPE_DAM_TURBINATA}
  • + *
+ * @return the value at the requested date + */ + public abstract Double getDataValueAt( Date date, Double value, int tyepIdentifier ); + + public int compare( MonitoringPoint o1, MonitoringPoint o2 ) { + + PfafstetterNumber p1 = o1.getPfatstetterNumber(); + PfafstetterNumber p2 = o2.getPfatstetterNumber(); + + if (p1 != null && p2 != null) { + + List p1OrdersList = o1.getPfatstetterNumber().getOrdersList(); + List p2OrdersList = o2.getPfatstetterNumber().getOrdersList(); + + int levels = p1OrdersList.size(); + if (p2OrdersList.size() < levels) { + levels = p2OrdersList.size(); + } + + /* + * check the numbers to the minor level of the two + */ + for( int i = 0; i < levels; i++ ) { + int thisone = p1OrdersList.get(i); + int otherone = p2OrdersList.get(i); + if (thisone > otherone) { + /* + * if this has major number of the other, then this has to be sorted as minor of + * the other, following the pfafstetter logic that has major numbers towards + * valley + */ + return -1; + } else if (thisone < otherone) { + return 1; + } else { + // if they are equal, go on to the next level + continue; + } + } + + return 0; + } else { + if (p1 == null) + System.out.println("Pstaett null for " + o1.getName()); + if (p2 == null) + System.out.println("Pstaett null for " + o2.getName()); + return -2; + } + } + + /** + * Create a featurecollection from a list of monitoringpoints. Based on the position of the + * points and some of their attributes. + * + * @param monitoringPointsList + * @return the featurecollection + */ + public SimpleFeatureCollection toFeatureCollection( + List monitoringPointsList ) { + + // create the feature type + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + // set the name + b.setName("monitoringpoints"); + // add a geometry property + b.add("the_geom", Point.class); + // add some properties + b.add("id", Integer.class); + b.add("relatedid", Integer.class); + b.add("pfaf", String.class); + // build the type + SimpleFeatureType type = b.buildFeatureType(); + // create the feature + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + + GeometryFactory gF = new GeometryFactory(); + /* + * insert them in inverse order to get them out of the collection in the same order as the + * list + */ + SimpleFeatureCollection newCollection = FeatureCollections + .newCollection(); + for( int i = 0; i < monitoringPointsList.size(); i++ ) { + MonitoringPoint mp = monitoringPointsList.get(monitoringPointsList.size() - i - 1); + + Object[] values = new Object[]{gF.createPoint(mp.getPosition()), mp.getID(), + mp.getRelatedID(), mp.getPfatstetterNumber().toString()}; + // add the values + builder.addAll(values); + // build the feature with provided ID + SimpleFeature feature = builder.buildFeature(type.getTypeName() + "." + i); + newCollection.add(feature); + } + + return newCollection; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/MonitoringPointsConstants.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/MonitoringPointsConstants.java index 42108854f..6c2f86f7a 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/MonitoringPointsConstants.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/MonitoringPointsConstants.java @@ -1,79 +1,79 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; - -/** - * @author Andrea Antonello - www.hydrologis.com - */ -public interface MonitoringPointsConstants { - - /* - * tipi di sensori secondo la numerazione negli shapefile - */ - public static int BORINGCLOSURE_TYPE_ID = -666; - public static int HYDROMETER_TYPE_ID = 2; - public static int DAM_TYPE_ID = 6; - public static int DELIVERYPIPE_TYPE_ID = 9; - public static int OFFTAKE_TYPE_ID = 3; - - /* - * lakes - */ - public static final String LAKE_CLOSED = "Laminazione naturale"; - public static final String LAKE_TRANSPARENT = "Lago trasparente"; - public static final String LAKE_DEFAULT = LAKE_TRANSPARENT; - public static final String LAKE_DATELEVEL_CLOSED = "Data e livello per laminazione naturale"; - public static final String LAKE_DATELEVEL_TRANSPARENT = "Data e livello per lago trasparente"; - - /* - * barrage - */ - public static final String BARRAGE_QMAX = "Portata massima"; - public static final String BARRAGE_CLOSED = "Sbarramento chiuso"; - public static final String BARRAGE_DEFAULT = BARRAGE_QMAX; - - /* - * water pumps - */ - public static final String WATERPUMPS_QMAX = "Portata massima"; - public static final String WATERPUMPS_CLOSED = "Idrovora chiusa"; - public static final String WATERPUMPS_DEFAULT = WATERPUMPS_QMAX; - - /* - * dams - */ - public static final String DAM_TRANSPARENT = "Diga trasparente"; - public static final String DAM_CLOSED = "Diga completamente chiusa"; - public static final String DATELEVEL_DAM_TRANSPARENT = "Data e livello per diga trasparente"; - public static final String DATELEVEL_DAM_CLOSED = "Data e livello per diga chiusa"; - public static final String DAM_TURB_DOWNLOAD_OPEN = "Scarico completamente aperto"; - public static final String DAM_TURB_CLOSED = "Turbina chiusa"; - public static final String DAM_DEFAULT = "Manovra di default"; - - /* - * other data - */ - public static final String MOVES_DOWNLOADS = "Manovre degli scarichi"; - public static final String MOVES_TURBINATE = "Manovre delle turbinate"; - public static final String USERDATA = "Dati utente"; - public static final String LEVEL = "Livello"; - public static final String DISCHARGE = "Portata"; - public static final String DATE = "Data"; - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; + +/** + * @author Andrea Antonello - www.hydrologis.com + */ +public interface MonitoringPointsConstants { + + /* + * tipi di sensori secondo la numerazione negli shapefile + */ + public static int BORINGCLOSURE_TYPE_ID = -666; + public static int HYDROMETER_TYPE_ID = 2; + public static int DAM_TYPE_ID = 6; + public static int DELIVERYPIPE_TYPE_ID = 9; + public static int OFFTAKE_TYPE_ID = 3; + + /* + * lakes + */ + public static final String LAKE_CLOSED = "Laminazione naturale"; + public static final String LAKE_TRANSPARENT = "Lago trasparente"; + public static final String LAKE_DEFAULT = LAKE_TRANSPARENT; + public static final String LAKE_DATELEVEL_CLOSED = "Data e livello per laminazione naturale"; + public static final String LAKE_DATELEVEL_TRANSPARENT = "Data e livello per lago trasparente"; + + /* + * barrage + */ + public static final String BARRAGE_QMAX = "Portata massima"; + public static final String BARRAGE_CLOSED = "Sbarramento chiuso"; + public static final String BARRAGE_DEFAULT = BARRAGE_QMAX; + + /* + * water pumps + */ + public static final String WATERPUMPS_QMAX = "Portata massima"; + public static final String WATERPUMPS_CLOSED = "Idrovora chiusa"; + public static final String WATERPUMPS_DEFAULT = WATERPUMPS_QMAX; + + /* + * dams + */ + public static final String DAM_TRANSPARENT = "Diga trasparente"; + public static final String DAM_CLOSED = "Diga completamente chiusa"; + public static final String DATELEVEL_DAM_TRANSPARENT = "Data e livello per diga trasparente"; + public static final String DATELEVEL_DAM_CLOSED = "Data e livello per diga chiusa"; + public static final String DAM_TURB_DOWNLOAD_OPEN = "Scarico completamente aperto"; + public static final String DAM_TURB_CLOSED = "Turbina chiusa"; + public static final String DAM_DEFAULT = "Manovra di default"; + + /* + * other data + */ + public static final String MOVES_DOWNLOADS = "Manovre degli scarichi"; + public static final String MOVES_TURBINATE = "Manovre delle turbinate"; + public static final String USERDATA = "Dati utente"; + public static final String LEVEL = "Livello"; + public static final String DISCHARGE = "Portata"; + public static final String DATE = "Data"; + } \ No newline at end of file diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Offtakes.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Offtakes.java index fd4501309..faa08772b 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Offtakes.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Offtakes.java @@ -1,77 +1,77 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; - -import java.io.PrintStream; -import java.text.MessageFormat; -import java.util.HashMap; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; - -/** - * Utility class for handling of Offtakes mappings and data retrival. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class Offtakes implements IDischargeContributor { - - private final HashMap offtakes_pfaff2idMap; - private HashMap offtakes_id2valuesQMap; - private final IJGTProgressMonitor out; - private String pNum; - - /** - * Constructor. - * - * @param offtakes_pfaff2idMap {@link HashMap map} of pfafstetter numbers versus - * offtakes points id. - * @param out {@link PrintStream} for warning handling. - */ - public Offtakes( HashMap offtakes_pfaff2idMap, IJGTProgressMonitor out ) { - this.offtakes_pfaff2idMap = offtakes_pfaff2idMap; - this.out = out; - } - - public Double getDischarge( String pNum ) { - this.pNum = pNum; - Integer damId = offtakes_pfaff2idMap.get(pNum); - if (damId != null) { - double[] discharges = offtakes_id2valuesQMap.get(damId); - return discharges[0]; - } - return JGTConstants.doubleNovalue; - } - - public void setCurrentData( HashMap currentDataMap ) { - offtakes_id2valuesQMap = currentDataMap; - } - - public double mergeWithDischarge( double contributorDischarge, double inputDischarge ) { - if (inputDischarge >= contributorDischarge) { - return inputDischarge - contributorDischarge; - } else { - out.errorMessage(MessageFormat - .format("WARNING: offtake discharge at {0} is greater than the river discharge. Offtake discharge set to 0 to continue.", - pNum)); - return inputDischarge; - } - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; + +import java.io.PrintStream; +import java.text.MessageFormat; +import java.util.HashMap; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; + +/** + * Utility class for handling of Offtakes mappings and data retrival. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class Offtakes implements IDischargeContributor { + + private final HashMap offtakes_pfaff2idMap; + private HashMap offtakes_id2valuesQMap; + private final IJGTProgressMonitor out; + private String pNum; + + /** + * Constructor. + * + * @param offtakes_pfaff2idMap {@link HashMap map} of pfafstetter numbers versus + * offtakes points id. + * @param out {@link PrintStream} for warning handling. + */ + public Offtakes( HashMap offtakes_pfaff2idMap, IJGTProgressMonitor out ) { + this.offtakes_pfaff2idMap = offtakes_pfaff2idMap; + this.out = out; + } + + public Double getDischarge( String pNum ) { + this.pNum = pNum; + Integer damId = offtakes_pfaff2idMap.get(pNum); + if (damId != null) { + double[] discharges = offtakes_id2valuesQMap.get(damId); + return discharges[0]; + } + return JGTConstants.doubleNovalue; + } + + public void setCurrentData( HashMap currentDataMap ) { + offtakes_id2valuesQMap = currentDataMap; + } + + public double mergeWithDischarge( double contributorDischarge, double inputDischarge ) { + if (inputDischarge >= contributorDischarge) { + return inputDischarge - contributorDischarge; + } else { + out.errorMessage(MessageFormat + .format("WARNING: offtake discharge at {0} is greater than the river discharge. Offtake discharge set to 0 to continue.", + pNum)); + return inputDischarge; + } + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/PfafstetterNumber.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/PfafstetterNumber.java index 6a47de003..dfee2e098 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/PfafstetterNumber.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/PfafstetterNumber.java @@ -1,275 +1,275 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; - -/** - * The object for Pfafstetter numbers, supplying several methods to compare and analyse a - * hierarchial network numbered following a Pfafstetter modified network. - * - * @author Andrea Antonello - www.hydrologis.com - */ -public class PfafstetterNumber implements Comparator { - - private String pfafstetterNumberString = null; - private String pfafstetterUpToLastLeveL = null; - private int order = -1; - private List ordersList = null; - - public PfafstetterNumber( String pfafstetterNumberString ) { - this.pfafstetterNumberString = pfafstetterNumberString; - - ordersList = new ArrayList(); - int lastDot = pfafstetterNumberString.lastIndexOf('.'); - if (lastDot == -1) { - this.order = 1; - ordersList.add(Integer.parseInt(pfafstetterNumberString)); - pfafstetterUpToLastLeveL = ""; //$NON-NLS-1$ - } else { - String[] order = pfafstetterNumberString.split("\\."); //$NON-NLS-1$ - this.order = order.length; - for( String string : order ) { - ordersList.add(Integer.parseInt(string)); - } - pfafstetterUpToLastLeveL = pfafstetterNumberString.substring(0, lastDot + 1); - } - - } - - /** - * @return the hierarchic order of the channel defined by this pfafstetter number - */ - public int getOrder() { - return order; - } - - /** - * @return the list of all the numbers composing this pfafstetter number - */ - public List getOrdersList() { - return ordersList; - } - - public String toString() { - return pfafstetterNumberString; - } - - /** - * The pfaftetter string without the last level, usefull for comparison. The dot is added at the - * end in order have defined levels. * - * - * @return - */ - public String toStringUpToLastLevel() { - return pfafstetterUpToLastLeveL; - } - - /** - * Check if the number is of a certain order or minor to that order - * - * @return - */ - public boolean isOfOrderOrMinor( int order ) { - if (this.order >= order) { - return true; - } - return false; - } - - /** - * Checks if the actual pfafstetter object is downstream or not of the passed argument - * - * @param pfafstetterNumber - * @return true if the actual obj is downstream of the passed one - */ - public boolean isDownStreamOf( PfafstetterNumber pfafstetterNumber ) { - /* - * all the upstreams will have same numbers until the last dot - */ - int lastDot = pfafstetterNumberString.lastIndexOf('.'); - String pre = pfafstetterNumberString.substring(0, lastDot + 1); - String lastNum = pfafstetterNumberString.substring(lastDot + 1, pfafstetterNumberString - .length()); - int lastNumInt = Integer.parseInt(lastNum); - - if (lastNumInt % 2 == 0) { - // it has to be the last piece of a river, therefore no piece contained - return false; - } else { - /* - * check if the passed one is upstream - */ - String pfaff = pfafstetterNumber.toString(); - if (pfaff.startsWith(pre)) { - // search for all those with a higher next number - String lastPart = pfaff.substring(lastDot + 1, pfaff.length()); - if (Integer.parseInt(lastPart.split("\\.")[0]) >= lastNumInt) { //$NON-NLS-1$ - return true; - } - } - } - return false; - } - - /** - * @return true if the queried piece is end piece of a reach, i.e. pfafstetter is even - */ - public boolean isEndPiece() { - return ordersList.get(ordersList.size() - 1) % 2 == 0 ? true : false; - } - - public int compare( PfafstetterNumber p1, PfafstetterNumber p2 ) { - List p1OrdersList = p1.getOrdersList(); - List p2OrdersList = p2.getOrdersList(); - - int levels = p1OrdersList.size(); - if (p2OrdersList.size() < levels) { - levels = p2OrdersList.size(); - } - - /* - * check the numbers to the minor level of the two - */ - for( int i = 0; i < levels; i++ ) { - int thisone = p1OrdersList.get(i); - int otherone = p2OrdersList.get(i); - if (thisone > otherone) { - /* - * if this has major number of the other, then this has to be sorted as minor of the - * other, following the pfafstetter logic that has major numbers towards valley - */ - return -1; - } else if (thisone < otherone) { - return 1; - } else { - // if they are equal, go on to the next level - continue; - } - } - - return 0; - } - - /** - * Checks if two pfafstetter are connected upstream, i.e. p1 is more downstream than p2 - * - * @param p1 - * @param p2 - * @return - */ - public synchronized static boolean areConnectedUpstream( PfafstetterNumber p1, - PfafstetterNumber p2 ) { - - List p1OrdersList = p1.getOrdersList(); - List p2OrdersList = p2.getOrdersList(); - - int levelDiff = p1OrdersList.size() - p2OrdersList.size(); - if (levelDiff == 0) { - if (p1.toStringUpToLastLevel().equals(p2.toStringUpToLastLevel())) { - int p1Last = p1OrdersList.get(p1OrdersList.size() - 1); - int p2Last = p2OrdersList.get(p2OrdersList.size() - 1); - if (p2Last == p1Last + 1 || p2Last == p1Last + 2) { - if (p1Last % 2 == 0) { - return false; - } - return true; - } - } - } else if (levelDiff == -1) { - if (p2.toString().startsWith(p1.toStringUpToLastLevel())) { - int p2Last = p2OrdersList.get(p2OrdersList.size() - 1); - if (p2Last != 1) { - return false; - } - int p1Last = p1OrdersList.get(p1OrdersList.size() - 1); - int p2LastMinus1 = p2OrdersList.get(p2OrdersList.size() - 2); - if (p2LastMinus1 == p1Last + 1 || p2Last == p1Last + 2) { - if (p1Last % 2 == 0) { - return false; - } - return true; - } - } - } - return false; - } - - /** - * inverse of areConnectedUpstream - * - * @param p1 - * @param p2 - * @return - */ - public synchronized static boolean areConnectedDownstream( PfafstetterNumber p1, - PfafstetterNumber p2 ) { - return areConnectedUpstream(p2, p1); - } - - public static void main( String[] args ) { - PfafstetterNumber n1 = new PfafstetterNumber("2.5"); //$NON-NLS-1$ - PfafstetterNumber n2 = new PfafstetterNumber("2.6.4"); //$NON-NLS-1$ - PfafstetterNumber n3 = new PfafstetterNumber("2.4.3"); //$NON-NLS-1$ - PfafstetterNumber n4 = new PfafstetterNumber("2.7.1"); //$NON-NLS-1$ - PfafstetterNumber n5 = new PfafstetterNumber("2.4.16.45"); //$NON-NLS-1$ - PfafstetterNumber n6 = new PfafstetterNumber("2.6.2.1"); //$NON-NLS-1$ - PfafstetterNumber n7 = new PfafstetterNumber("2.7.6.5.2"); //$NON-NLS-1$ - PfafstetterNumber n8 = new PfafstetterNumber("2.7.6.2.1"); //$NON-NLS-1$ - PfafstetterNumber n9 = new PfafstetterNumber("2.6.2.7"); //$NON-NLS-1$ - List list = new ArrayList(); - list.add(n1); - list.add(n2); - list.add(n3); - list.add(n4); - list.add(n5); - list.add(n6); - list.add(n7); - list.add(n8); - - System.out.println(n1.isDownStreamOf(n2)); - System.out.println(n1.isDownStreamOf(n4)); - System.out.println(n3.isDownStreamOf(n2)); - System.out.println(n3.isDownStreamOf(n5)); - System.out.println(n4.isDownStreamOf(n1)); - System.out.println(n6.isDownStreamOf(n7)); - System.out.println(n8.isDownStreamOf(n7)); - System.out.println(); - System.out.println(PfafstetterNumber.areConnectedUpstream(n1, n2)); - System.out.println(PfafstetterNumber.areConnectedUpstream(n1, n4)); - System.out.println(PfafstetterNumber.areConnectedUpstream(n3, n2)); - System.out.println(PfafstetterNumber.areConnectedUpstream(n3, n5)); - System.out.println(PfafstetterNumber.areConnectedUpstream(n4, n1)); - System.out.println(PfafstetterNumber.areConnectedUpstream(n4, n6)); - System.out.println(PfafstetterNumber.areConnectedUpstream(n8, n7)); - System.out.println(PfafstetterNumber.areConnectedUpstream(n6, n9)); - System.out.println(); - - PfafstetterNumber[] array = list.toArray(new PfafstetterNumber[list.size()]); - Arrays.sort(array, n1); - for( PfafstetterNumber pfafstetterNumber : array ) { - System.out.println(pfafstetterNumber.toString()); - } - - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; + +/** + * The object for Pfafstetter numbers, supplying several methods to compare and analyse a + * hierarchial network numbered following a Pfafstetter modified network. + * + * @author Andrea Antonello - www.hydrologis.com + */ +public class PfafstetterNumber implements Comparator { + + private String pfafstetterNumberString = null; + private String pfafstetterUpToLastLeveL = null; + private int order = -1; + private List ordersList = null; + + public PfafstetterNumber( String pfafstetterNumberString ) { + this.pfafstetterNumberString = pfafstetterNumberString; + + ordersList = new ArrayList(); + int lastDot = pfafstetterNumberString.lastIndexOf('.'); + if (lastDot == -1) { + this.order = 1; + ordersList.add(Integer.parseInt(pfafstetterNumberString)); + pfafstetterUpToLastLeveL = ""; //$NON-NLS-1$ + } else { + String[] order = pfafstetterNumberString.split("\\."); //$NON-NLS-1$ + this.order = order.length; + for( String string : order ) { + ordersList.add(Integer.parseInt(string)); + } + pfafstetterUpToLastLeveL = pfafstetterNumberString.substring(0, lastDot + 1); + } + + } + + /** + * @return the hierarchic order of the channel defined by this pfafstetter number + */ + public int getOrder() { + return order; + } + + /** + * @return the list of all the numbers composing this pfafstetter number + */ + public List getOrdersList() { + return ordersList; + } + + public String toString() { + return pfafstetterNumberString; + } + + /** + * The pfaftetter string without the last level, usefull for comparison. The dot is added at the + * end in order have defined levels. * + * + * @return + */ + public String toStringUpToLastLevel() { + return pfafstetterUpToLastLeveL; + } + + /** + * Check if the number is of a certain order or minor to that order + * + * @return + */ + public boolean isOfOrderOrMinor( int order ) { + if (this.order >= order) { + return true; + } + return false; + } + + /** + * Checks if the actual pfafstetter object is downstream or not of the passed argument + * + * @param pfafstetterNumber + * @return true if the actual obj is downstream of the passed one + */ + public boolean isDownStreamOf( PfafstetterNumber pfafstetterNumber ) { + /* + * all the upstreams will have same numbers until the last dot + */ + int lastDot = pfafstetterNumberString.lastIndexOf('.'); + String pre = pfafstetterNumberString.substring(0, lastDot + 1); + String lastNum = pfafstetterNumberString.substring(lastDot + 1, pfafstetterNumberString + .length()); + int lastNumInt = Integer.parseInt(lastNum); + + if (lastNumInt % 2 == 0) { + // it has to be the last piece of a river, therefore no piece contained + return false; + } else { + /* + * check if the passed one is upstream + */ + String pfaff = pfafstetterNumber.toString(); + if (pfaff.startsWith(pre)) { + // search for all those with a higher next number + String lastPart = pfaff.substring(lastDot + 1, pfaff.length()); + if (Integer.parseInt(lastPart.split("\\.")[0]) >= lastNumInt) { //$NON-NLS-1$ + return true; + } + } + } + return false; + } + + /** + * @return true if the queried piece is end piece of a reach, i.e. pfafstetter is even + */ + public boolean isEndPiece() { + return ordersList.get(ordersList.size() - 1) % 2 == 0 ? true : false; + } + + public int compare( PfafstetterNumber p1, PfafstetterNumber p2 ) { + List p1OrdersList = p1.getOrdersList(); + List p2OrdersList = p2.getOrdersList(); + + int levels = p1OrdersList.size(); + if (p2OrdersList.size() < levels) { + levels = p2OrdersList.size(); + } + + /* + * check the numbers to the minor level of the two + */ + for( int i = 0; i < levels; i++ ) { + int thisone = p1OrdersList.get(i); + int otherone = p2OrdersList.get(i); + if (thisone > otherone) { + /* + * if this has major number of the other, then this has to be sorted as minor of the + * other, following the pfafstetter logic that has major numbers towards valley + */ + return -1; + } else if (thisone < otherone) { + return 1; + } else { + // if they are equal, go on to the next level + continue; + } + } + + return 0; + } + + /** + * Checks if two pfafstetter are connected upstream, i.e. p1 is more downstream than p2 + * + * @param p1 + * @param p2 + * @return + */ + public synchronized static boolean areConnectedUpstream( PfafstetterNumber p1, + PfafstetterNumber p2 ) { + + List p1OrdersList = p1.getOrdersList(); + List p2OrdersList = p2.getOrdersList(); + + int levelDiff = p1OrdersList.size() - p2OrdersList.size(); + if (levelDiff == 0) { + if (p1.toStringUpToLastLevel().equals(p2.toStringUpToLastLevel())) { + int p1Last = p1OrdersList.get(p1OrdersList.size() - 1); + int p2Last = p2OrdersList.get(p2OrdersList.size() - 1); + if (p2Last == p1Last + 1 || p2Last == p1Last + 2) { + if (p1Last % 2 == 0) { + return false; + } + return true; + } + } + } else if (levelDiff == -1) { + if (p2.toString().startsWith(p1.toStringUpToLastLevel())) { + int p2Last = p2OrdersList.get(p2OrdersList.size() - 1); + if (p2Last != 1) { + return false; + } + int p1Last = p1OrdersList.get(p1OrdersList.size() - 1); + int p2LastMinus1 = p2OrdersList.get(p2OrdersList.size() - 2); + if (p2LastMinus1 == p1Last + 1 || p2Last == p1Last + 2) { + if (p1Last % 2 == 0) { + return false; + } + return true; + } + } + } + return false; + } + + /** + * inverse of areConnectedUpstream + * + * @param p1 + * @param p2 + * @return + */ + public synchronized static boolean areConnectedDownstream( PfafstetterNumber p1, + PfafstetterNumber p2 ) { + return areConnectedUpstream(p2, p1); + } + + public static void main( String[] args ) { + PfafstetterNumber n1 = new PfafstetterNumber("2.5"); //$NON-NLS-1$ + PfafstetterNumber n2 = new PfafstetterNumber("2.6.4"); //$NON-NLS-1$ + PfafstetterNumber n3 = new PfafstetterNumber("2.4.3"); //$NON-NLS-1$ + PfafstetterNumber n4 = new PfafstetterNumber("2.7.1"); //$NON-NLS-1$ + PfafstetterNumber n5 = new PfafstetterNumber("2.4.16.45"); //$NON-NLS-1$ + PfafstetterNumber n6 = new PfafstetterNumber("2.6.2.1"); //$NON-NLS-1$ + PfafstetterNumber n7 = new PfafstetterNumber("2.7.6.5.2"); //$NON-NLS-1$ + PfafstetterNumber n8 = new PfafstetterNumber("2.7.6.2.1"); //$NON-NLS-1$ + PfafstetterNumber n9 = new PfafstetterNumber("2.6.2.7"); //$NON-NLS-1$ + List list = new ArrayList(); + list.add(n1); + list.add(n2); + list.add(n3); + list.add(n4); + list.add(n5); + list.add(n6); + list.add(n7); + list.add(n8); + + System.out.println(n1.isDownStreamOf(n2)); + System.out.println(n1.isDownStreamOf(n4)); + System.out.println(n3.isDownStreamOf(n2)); + System.out.println(n3.isDownStreamOf(n5)); + System.out.println(n4.isDownStreamOf(n1)); + System.out.println(n6.isDownStreamOf(n7)); + System.out.println(n8.isDownStreamOf(n7)); + System.out.println(); + System.out.println(PfafstetterNumber.areConnectedUpstream(n1, n2)); + System.out.println(PfafstetterNumber.areConnectedUpstream(n1, n4)); + System.out.println(PfafstetterNumber.areConnectedUpstream(n3, n2)); + System.out.println(PfafstetterNumber.areConnectedUpstream(n3, n5)); + System.out.println(PfafstetterNumber.areConnectedUpstream(n4, n1)); + System.out.println(PfafstetterNumber.areConnectedUpstream(n4, n6)); + System.out.println(PfafstetterNumber.areConnectedUpstream(n8, n7)); + System.out.println(PfafstetterNumber.areConnectedUpstream(n6, n9)); + System.out.println(); + + PfafstetterNumber[] array = list.toArray(new PfafstetterNumber[list.size()]); + Arrays.sort(array, n1); + for( PfafstetterNumber pfafstetterNumber : array ) { + System.out.println(pfafstetterNumber.toString()); + } + + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Tributaries.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Tributaries.java index 15f535432..36c5f4e0f 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Tributaries.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/core/Tributaries.java @@ -1,46 +1,46 @@ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; - -import java.text.MessageFormat; -import java.util.HashMap; - -import org.jgrasstools.gears.libs.modules.JGTConstants; - -/** - * Utility class for handling of tributary mappings and data retrieval. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class Tributaries implements IDischargeContributor { - - private final HashMap tributary_pfaff2idMap; - private HashMap tributary_id2valuesQMap; - - /** - * Constructor. - * - * @param tributary_pfaff2idMap {@link HashMap map} of pfafstetter numbers versus - * tributary points id. - * @param tributary_id2valuesQMap map of tributary points id versus discharge value. - */ - public Tributaries( HashMap tributary_pfaff2idMap ) { - this.tributary_pfaff2idMap = tributary_pfaff2idMap; - } - - public Double getDischarge( String pNum ) { - Integer damId = tributary_pfaff2idMap.get(pNum); - if (damId != null) { - double[] discharges = tributary_id2valuesQMap.get(damId); - return discharges[0]; - } - return JGTConstants.doubleNovalue; - } - - public void setCurrentData( HashMap currentDataMap ) { - tributary_id2valuesQMap = currentDataMap; - } - - public double mergeWithDischarge( double contributorDischarge, double inputDischarge ) { - return inputDischarge + contributorDischarge; - } - -} +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core; + +import java.text.MessageFormat; +import java.util.HashMap; + +import org.jgrasstools.gears.libs.modules.JGTConstants; + +/** + * Utility class for handling of tributary mappings and data retrieval. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class Tributaries implements IDischargeContributor { + + private final HashMap tributary_pfaff2idMap; + private HashMap tributary_id2valuesQMap; + + /** + * Constructor. + * + * @param tributary_pfaff2idMap {@link HashMap map} of pfafstetter numbers versus + * tributary points id. + * @param tributary_id2valuesQMap map of tributary points id versus discharge value. + */ + public Tributaries( HashMap tributary_pfaff2idMap ) { + this.tributary_pfaff2idMap = tributary_pfaff2idMap; + } + + public Double getDischarge( String pNum ) { + Integer damId = tributary_pfaff2idMap.get(pNum); + if (damId != null) { + double[] discharges = tributary_id2valuesQMap.get(damId); + return discharges[0]; + } + return JGTConstants.doubleNovalue; + } + + public void setCurrentData( HashMap currentDataMap ) { + tributary_id2valuesQMap = currentDataMap; + } + + public double mergeWithDischarge( double contributorDischarge, double inputDischarge ) { + return inputDischarge + contributorDischarge; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/ADischargeDistributor.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/ADischargeDistributor.java index 81e4e7128..62aabcdda 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/ADischargeDistributor.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/ADischargeDistributor.java @@ -1,204 +1,204 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; - -import java.util.HashMap; - -/** - * Class taking care of the distribution of discharge to gain delayed release. - * - * @author Andrea Antonello (www.hydrologis.com) - * @author Silvia Franceschi (www.hydrologis.com) - */ -public abstract class ADischargeDistributor { - /** - * Identifier for usage of Nash distribution. - */ - public static final int DISTRIBUTOR_TYPE_NASH = 0; - - /* - * Parameters of mean and variance considering saturation. - */ - public static final int PARAMS_AVG_SUP_10 = 0; - public static final int PARAMS_AVG_SUP_30 = 1; - public static final int PARAMS_AVG_SUP_60 = 2; - public static final int PARAMS_VAR_SUP_10 = 3; - public static final int PARAMS_VAR_SUP_30 = 4; - public static final int PARAMS_VAR_SUP_60 = 5; - public static final int PARAMS_AVG_SUB = 6; - public static final int PARAMS_VAR_SUB = 7; - public static final int PARAMS_V_SUP = 8; - public static final int PARAMS_V_SUB = 9; - - protected double[] subSuperficialDischargeArray; - protected double[] superficialDischargeArray; - protected final long startDateMillis; - protected final long timeStepMillis; - protected final HashMap parameters; - - /** - * Creates a discharge distributor called from the extending class. - * - * @param startDateMillis see {@link ADischargeDistributor#createDischargeDistributor(int, long, long, long)} doc. - * @param endDateMillis see {@link ADischargeDistributor#createDischargeDistributor(int, long, long, long)} doc. - * @param timeStepMillis see {@link ADischargeDistributor#createDischargeDistributor(int, long, long, long)} doc. - * @param parameters see {@link ADischargeDistributor#createDischargeDistributor(int, long, long, long)} doc. - */ - protected ADischargeDistributor( long startDateMillis, long endDateMillis, long timeStepMillis, - HashMap parameters ) { - this.startDateMillis = startDateMillis; - this.timeStepMillis = timeStepMillis; - this.parameters = parameters; - long intervals = (endDateMillis - startDateMillis) / timeStepMillis + 1; - subSuperficialDischargeArray = new double[(int) intervals]; - superficialDischargeArray = new double[(int) intervals]; - } - - /** - * Creates a {@link ADischargeDistributor discharge distributor}. - * - * @param distributorType defines the type to be used. Possible values are: - *
    - *
  • {@link ADischargeDistributor#DISTRIBUTOR_TYPE_NASH NASH: 0}
  • - *
- * @param startDateMillis the start time used to define the complete time horizont. - * @param endDateMillis the end time used to define the complete time horizont. - * @param timeStepMillis the time step used to define the complete time horizont. - * @param parameters a {@link HashMap map of parameters} to be used for the - * distribution model. Supported values are: - *
    - *
  • {@link ADischargeDistributor#PARAMS_AVG_SUP_10}: the mean - * of the width function for 10% of saturated areas - * for the superficial flow case.
  • - *
  • {@link ADischargeDistributor#PARAMS_AVG_SUP_30}: the mean - * of the width function for 30% of saturated areas - * for the superficial flow case.
  • - *
  • {@link ADischargeDistributor#PARAMS_AVG_SUP_60}: the mean - * of the width function for 60% of saturated areas - * for the superficial flow case.
  • - *
  • {@link ADischargeDistributor#PARAMS_VAR_SUP_10}: the variance - * of the width function for 10% of saturated areas - * for the superficial flow case.
  • - *
  • {@link ADischargeDistributor#PARAMS_VAR_SUP_30}: the variance - * of the width function for 30% of saturated areas - * for the superficial flow case.
  • - *
  • {@link ADischargeDistributor#PARAMS_VAR_SUP_60}: the variance - * of the width function for 60% of saturated areas - * for the superficial flow case.
  • - *
  • {@link ADischargeDistributor#PARAMS_AVG_SUB}: the mean - * of the width function for the subsuperficial flow case.
  • - *
  • {@link ADischargeDistributor#PARAMS_VAR_SUB}: the variance - * of the width function for the subsuperficial flow case.
  • - *
  • {@link ADischargeDistributor#PARAMS_V_SUP}: the - * speed of the superficial flow.
  • - *
  • {@link ADischargeDistributor#PARAMS_V_SUB}: the - * speed of the subsuperficial flow.
  • - *
- * - * @return the created discharge distributor. - */ - public static ADischargeDistributor createDischargeDistributor( int distributorType, - long startDateMillis, long endDateMillis, long timeStepMillis, - HashMap parameters ) { - if (distributorType == DISTRIBUTOR_TYPE_NASH) { - return new NashDischargeDistributor(startDateMillis, endDateMillis, timeStepMillis, - parameters); - } else { - throw new IllegalArgumentException("No such distribution model available."); - } - } - - /** - * Calculates the current superficial discharge. - * - *

- * The discharge takes into account the distribution - * of all the distributed discharge contributions - * in the prior timesteps. - *

- * - * @param superficialDischarge the non distributed discharge value. - * @param saturatedAreaPercentage the percentage of saturated area. - * @param timeInMillis the current timestep. - * @return the calculated discharge. - */ - public double calculateSuperficialDischarge( double superficialDischarge, - double saturatedAreaPercentage, long timeInMillis ) { - distributeIncomingSuperficialDischarge(superficialDischarge, saturatedAreaPercentage, - timeInMillis); - return superficialDischargeArray[indexFromTimeInMillis(timeInMillis)]; - } - - /** - * Calculates the current subsuperficial discharge. - * - *

- * The discharge takes into account the distribution - * of all the distributed discharge contributions - * in the prior timesteps. - *

- * - * @param subSuperficialDischarge the non distributed discharge value. - * @param saturatedAreaPercentage the percentage of saturated area. - * @param timeInMillis the current timestep. - * @return the calculated discharge. - */ - public double calculateSubsuperficialDischarge( double subSuperficialDischarge, - double saturatedAreaPercentage, long timeInMillis ) { - distributeIncomingSubSuperficialDischarge(subSuperficialDischarge, saturatedAreaPercentage, - timeInMillis); - return subSuperficialDischargeArray[indexFromTimeInMillis(timeInMillis)]; - } - - /** - * Get the discharge array index for the current time. - * - * @param currentTimeInMillis the current time in milliseconds. - * @return the index that can be used in the discharge arrays. - */ - protected int indexFromTimeInMillis( long currentTimeInMillis ) { - int index = (int) ((currentTimeInMillis - startDateMillis) / timeStepMillis); - return index; - } - - /** - * The method that applies the distribution method to the incoming discharge. - * - *

NOTE: this is for the superficial case.

- * - * @param ssuperficialDischarge the non distributed discharge value. - * @param saturatedAreaPercentage the percentage of saturated area. - * @param currentTimeInMillis the current timestep. - */ - protected abstract void distributeIncomingSuperficialDischarge( double superficialDischarge, - double saturatedAreaPercentage, long currentTimeInMillis ); - - /** - * The method that applies the distribution method to the incoming discharge. - * - *

NOTE: this is for the subsuperficial case.

- * - * @param subSuperficialDischarge the non distributed discharge value. - * @param saturatedAreaPercentage the percentage of saturated area. - * @param currentTimeInMillis the current timestep. - */ - protected abstract void distributeIncomingSubSuperficialDischarge( - double subSuperficialDischarge, double saturatedAreaPercentage, long currentTimeInMillis ); - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; + +import java.util.HashMap; + +/** + * Class taking care of the distribution of discharge to gain delayed release. + * + * @author Andrea Antonello (www.hydrologis.com) + * @author Silvia Franceschi (www.hydrologis.com) + */ +public abstract class ADischargeDistributor { + /** + * Identifier for usage of Nash distribution. + */ + public static final int DISTRIBUTOR_TYPE_NASH = 0; + + /* + * Parameters of mean and variance considering saturation. + */ + public static final int PARAMS_AVG_SUP_10 = 0; + public static final int PARAMS_AVG_SUP_30 = 1; + public static final int PARAMS_AVG_SUP_60 = 2; + public static final int PARAMS_VAR_SUP_10 = 3; + public static final int PARAMS_VAR_SUP_30 = 4; + public static final int PARAMS_VAR_SUP_60 = 5; + public static final int PARAMS_AVG_SUB = 6; + public static final int PARAMS_VAR_SUB = 7; + public static final int PARAMS_V_SUP = 8; + public static final int PARAMS_V_SUB = 9; + + protected double[] subSuperficialDischargeArray; + protected double[] superficialDischargeArray; + protected final long startDateMillis; + protected final long timeStepMillis; + protected final HashMap parameters; + + /** + * Creates a discharge distributor called from the extending class. + * + * @param startDateMillis see {@link ADischargeDistributor#createDischargeDistributor(int, long, long, long)} doc. + * @param endDateMillis see {@link ADischargeDistributor#createDischargeDistributor(int, long, long, long)} doc. + * @param timeStepMillis see {@link ADischargeDistributor#createDischargeDistributor(int, long, long, long)} doc. + * @param parameters see {@link ADischargeDistributor#createDischargeDistributor(int, long, long, long)} doc. + */ + protected ADischargeDistributor( long startDateMillis, long endDateMillis, long timeStepMillis, + HashMap parameters ) { + this.startDateMillis = startDateMillis; + this.timeStepMillis = timeStepMillis; + this.parameters = parameters; + long intervals = (endDateMillis - startDateMillis) / timeStepMillis + 1; + subSuperficialDischargeArray = new double[(int) intervals]; + superficialDischargeArray = new double[(int) intervals]; + } + + /** + * Creates a {@link ADischargeDistributor discharge distributor}. + * + * @param distributorType defines the type to be used. Possible values are: + *
    + *
  • {@link ADischargeDistributor#DISTRIBUTOR_TYPE_NASH NASH: 0}
  • + *
+ * @param startDateMillis the start time used to define the complete time horizont. + * @param endDateMillis the end time used to define the complete time horizont. + * @param timeStepMillis the time step used to define the complete time horizont. + * @param parameters a {@link HashMap map of parameters} to be used for the + * distribution model. Supported values are: + *
    + *
  • {@link ADischargeDistributor#PARAMS_AVG_SUP_10}: the mean + * of the width function for 10% of saturated areas + * for the superficial flow case.
  • + *
  • {@link ADischargeDistributor#PARAMS_AVG_SUP_30}: the mean + * of the width function for 30% of saturated areas + * for the superficial flow case.
  • + *
  • {@link ADischargeDistributor#PARAMS_AVG_SUP_60}: the mean + * of the width function for 60% of saturated areas + * for the superficial flow case.
  • + *
  • {@link ADischargeDistributor#PARAMS_VAR_SUP_10}: the variance + * of the width function for 10% of saturated areas + * for the superficial flow case.
  • + *
  • {@link ADischargeDistributor#PARAMS_VAR_SUP_30}: the variance + * of the width function for 30% of saturated areas + * for the superficial flow case.
  • + *
  • {@link ADischargeDistributor#PARAMS_VAR_SUP_60}: the variance + * of the width function for 60% of saturated areas + * for the superficial flow case.
  • + *
  • {@link ADischargeDistributor#PARAMS_AVG_SUB}: the mean + * of the width function for the subsuperficial flow case.
  • + *
  • {@link ADischargeDistributor#PARAMS_VAR_SUB}: the variance + * of the width function for the subsuperficial flow case.
  • + *
  • {@link ADischargeDistributor#PARAMS_V_SUP}: the + * speed of the superficial flow.
  • + *
  • {@link ADischargeDistributor#PARAMS_V_SUB}: the + * speed of the subsuperficial flow.
  • + *
+ * + * @return the created discharge distributor. + */ + public static ADischargeDistributor createDischargeDistributor( int distributorType, + long startDateMillis, long endDateMillis, long timeStepMillis, + HashMap parameters ) { + if (distributorType == DISTRIBUTOR_TYPE_NASH) { + return new NashDischargeDistributor(startDateMillis, endDateMillis, timeStepMillis, + parameters); + } else { + throw new IllegalArgumentException("No such distribution model available."); + } + } + + /** + * Calculates the current superficial discharge. + * + *

+ * The discharge takes into account the distribution + * of all the distributed discharge contributions + * in the prior timesteps. + *

+ * + * @param superficialDischarge the non distributed discharge value. + * @param saturatedAreaPercentage the percentage of saturated area. + * @param timeInMillis the current timestep. + * @return the calculated discharge. + */ + public double calculateSuperficialDischarge( double superficialDischarge, + double saturatedAreaPercentage, long timeInMillis ) { + distributeIncomingSuperficialDischarge(superficialDischarge, saturatedAreaPercentage, + timeInMillis); + return superficialDischargeArray[indexFromTimeInMillis(timeInMillis)]; + } + + /** + * Calculates the current subsuperficial discharge. + * + *

+ * The discharge takes into account the distribution + * of all the distributed discharge contributions + * in the prior timesteps. + *

+ * + * @param subSuperficialDischarge the non distributed discharge value. + * @param saturatedAreaPercentage the percentage of saturated area. + * @param timeInMillis the current timestep. + * @return the calculated discharge. + */ + public double calculateSubsuperficialDischarge( double subSuperficialDischarge, + double saturatedAreaPercentage, long timeInMillis ) { + distributeIncomingSubSuperficialDischarge(subSuperficialDischarge, saturatedAreaPercentage, + timeInMillis); + return subSuperficialDischargeArray[indexFromTimeInMillis(timeInMillis)]; + } + + /** + * Get the discharge array index for the current time. + * + * @param currentTimeInMillis the current time in milliseconds. + * @return the index that can be used in the discharge arrays. + */ + protected int indexFromTimeInMillis( long currentTimeInMillis ) { + int index = (int) ((currentTimeInMillis - startDateMillis) / timeStepMillis); + return index; + } + + /** + * The method that applies the distribution method to the incoming discharge. + * + *

NOTE: this is for the superficial case.

+ * + * @param ssuperficialDischarge the non distributed discharge value. + * @param saturatedAreaPercentage the percentage of saturated area. + * @param currentTimeInMillis the current timestep. + */ + protected abstract void distributeIncomingSuperficialDischarge( double superficialDischarge, + double saturatedAreaPercentage, long currentTimeInMillis ); + + /** + * The method that applies the distribution method to the incoming discharge. + * + *

NOTE: this is for the subsuperficial case.

+ * + * @param subSuperficialDischarge the non distributed discharge value. + * @param saturatedAreaPercentage the percentage of saturated area. + * @param currentTimeInMillis the current timestep. + */ + protected abstract void distributeIncomingSubSuperficialDischarge( + double subSuperficialDischarge, double saturatedAreaPercentage, long currentTimeInMillis ); + } \ No newline at end of file diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/CurrentTimestepSolution.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/CurrentTimestepSolution.java index 312bf02ae..c57474687 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/CurrentTimestepSolution.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/CurrentTimestepSolution.java @@ -1,24 +1,24 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; - -public class CurrentTimestepSolution { - public double newTimeStepInMinutes = -1; - public double[] solution = null; -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; + +public class CurrentTimestepSolution { + public double newTimeStepInMinutes = -1; + public double[] solution = null; +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/DuffyInputs.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/DuffyInputs.java index 2b6776419..e296a4f42 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/DuffyInputs.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/DuffyInputs.java @@ -1,154 +1,154 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; - -import java.util.HashMap; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.jgrasstools.gears.io.adige.AdigeBoundaryCondition; -import org.jgrasstools.gears.libs.modules.JGTModel; - -@Description("Inputs for the duffy model") -@Author(name = "Silvia Franceschi, Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("Hydrology") -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class DuffyInputs extends JGTModel { - - @Description("The a field name of the avg_sub attribute in the hillslope data.") - @In@Out - public String fAvg_sub = null; - - @Description("The a field name of the var_sub attribute in the hillslope data.") - @In@Out - public String fVar_sub = null; - - @Description("The a field name of the avg_sup_10 attribute in the hillslope data.") - @In@Out - public String fAvg_sup_10 = null; - - @Description("The a field name of the var_sup_10 attribute in the hillslope data.") - @In@Out - public String fVar_sup_10 = null; - - @Description("The a field name of the avg_sup_30 attribute in the hillslope data.") - @In@Out - public String fAvg_sup_30 = null; - - @Description("The a field name of the var_sup_30 attribute in the hillslope data.") - @In@Out - public String fVar_sup_30 = null; - - @Description("The a field name of the avg_sup_60 attribute in the hillslope data.") - @In@Out - public String fAvg_sup_60 = null; - - @Description("The a field name of the var_sup_60 attribute in the hillslope data.") - @In@Out - public String fVar_sup_60 = null; - - @Description("The average speed for superficial runoff.") - @In@Out - public double pV_sup = -1; - - @Description("The average speed for sub-superficial runoff.") - @In@Out - public double pV_sub = -1; - - @Description("Saturated hydraulic conductivity.") - @In@Out - public double pKs = 3.0; - - @Description("Mstexp") - @In@Out - public double pMstexp = 11.0; - - @Description("Mstexp") - @In@Out - public double pDepthmnsat = 2.0; - - @Description("Specyield") - @In@Out - public double pSpecyield = 0.01; - - @Description("Porosity") - @In@Out - public double pPorosity = 0.41; - - @Description("Etrate") - @In@Out - public Double pEtrate = null; - - @Description("Satconst") - @In@Out - public double pSatconst = 0.3; - - @Description("The routing model type to use.") - @In@Out - public int pRouting = 3; - - @Description("Switch to write final boundary conditions.") - @In@Out - public boolean doBoundary = false; - - @Description("The initial conditions of the model.") - @In@Out - public HashMap inInitialconditions = null; - - @Description("Start discharge per unit area") - @In@Out - public double pDischargePerUnitArea = 0.01; // m3/s per km2 of upstream drainage area - - @Description("Start superficial discharge fraction") - @In@Out - public double pStartSuperficialDischargeFraction = 0.3; - - @Description("Start saturated volume fraction") - @In@Out - public double pMaxSatVolumeS1 = 0.2; - - @Description("Start unsaturated volume fraction") - @In@Out - public double pMaxSatVolumeS2 = 0.25; - - @Description("The water content in non saturated soil for every basin id.") - @In@Out - public HashMap outS1; - - @Description("The water content in saturated soil for every basin id.") - @In@Out - public HashMap outS2; - - @Description("The final conditions of the model to persist.") - @In@Out - public HashMap outFinalconditions = null; - - @Execute - public void process() throws Exception { - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; + +import java.util.HashMap; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.jgrasstools.gears.io.adige.AdigeBoundaryCondition; +import org.jgrasstools.gears.libs.modules.JGTModel; + +@Description("Inputs for the duffy model") +@Author(name = "Silvia Franceschi, Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("Hydrology") +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class DuffyInputs extends JGTModel { + + @Description("The a field name of the avg_sub attribute in the hillslope data.") + @In@Out + public String fAvg_sub = null; + + @Description("The a field name of the var_sub attribute in the hillslope data.") + @In@Out + public String fVar_sub = null; + + @Description("The a field name of the avg_sup_10 attribute in the hillslope data.") + @In@Out + public String fAvg_sup_10 = null; + + @Description("The a field name of the var_sup_10 attribute in the hillslope data.") + @In@Out + public String fVar_sup_10 = null; + + @Description("The a field name of the avg_sup_30 attribute in the hillslope data.") + @In@Out + public String fAvg_sup_30 = null; + + @Description("The a field name of the var_sup_30 attribute in the hillslope data.") + @In@Out + public String fVar_sup_30 = null; + + @Description("The a field name of the avg_sup_60 attribute in the hillslope data.") + @In@Out + public String fAvg_sup_60 = null; + + @Description("The a field name of the var_sup_60 attribute in the hillslope data.") + @In@Out + public String fVar_sup_60 = null; + + @Description("The average speed for superficial runoff.") + @In@Out + public double pV_sup = -1; + + @Description("The average speed for sub-superficial runoff.") + @In@Out + public double pV_sub = -1; + + @Description("Saturated hydraulic conductivity.") + @In@Out + public double pKs = 3.0; + + @Description("Mstexp") + @In@Out + public double pMstexp = 11.0; + + @Description("Mstexp") + @In@Out + public double pDepthmnsat = 2.0; + + @Description("Specyield") + @In@Out + public double pSpecyield = 0.01; + + @Description("Porosity") + @In@Out + public double pPorosity = 0.41; + + @Description("Etrate") + @In@Out + public Double pEtrate = null; + + @Description("Satconst") + @In@Out + public double pSatconst = 0.3; + + @Description("The routing model type to use.") + @In@Out + public int pRouting = 3; + + @Description("Switch to write final boundary conditions.") + @In@Out + public boolean doBoundary = false; + + @Description("The initial conditions of the model.") + @In@Out + public HashMap inInitialconditions = null; + + @Description("Start discharge per unit area") + @In@Out + public double pDischargePerUnitArea = 0.01; // m3/s per km2 of upstream drainage area + + @Description("Start superficial discharge fraction") + @In@Out + public double pStartSuperficialDischargeFraction = 0.3; + + @Description("Start saturated volume fraction") + @In@Out + public double pMaxSatVolumeS1 = 0.2; + + @Description("Start unsaturated volume fraction") + @In@Out + public double pMaxSatVolumeS2 = 0.25; + + @Description("The water content in non saturated soil for every basin id.") + @In@Out + public HashMap outS1; + + @Description("The water content in saturated soil for every basin id.") + @In@Out + public HashMap outS2; + + @Description("The final conditions of the model to persist.") + @In@Out + public HashMap outFinalconditions = null; + + @Execute + public void process() throws Exception { + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/DuffyModel.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/DuffyModel.java index 71a38b71f..b82d8e3a6 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/DuffyModel.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/DuffyModel.java @@ -1,400 +1,400 @@ -/* -CUENCAS is a River Network Oriented GIS -Copyright (C) 2005 Ricardo Mantilla - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -/* - * NetworkEquations.java - * - * Created on November 11, 2001, 10:26 AM - */ - -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IDischargeContributor; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlopeDuffy; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlopeDuffy.Parameters; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.PfafstetterNumber; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.utils.AdigeUtilities; -/** - * The duffy model. - * - * This class implements the set of non-linear ordinary differential equations - * used to simulate flows along the river network. The function is writen as a - * {@link IBasicFunction.util.ordDiffEqSolver.BasicFunction} that is used by the - * {@link hydroScalingAPI.util.ordDiffEqSolver.RungeKuttaFelberg} - * - * @author Peter Furey - * @author Andrea Antonello (www.hydrologis.com) - * @author Silvia Franceschi (www.hydrologis.com) - */ -public class DuffyModel { - private double qd, qs, Q_trib, Qs_trib; - // public double pcoe; - - private double satsurf, mst, qdh, qds, inf, re, qe1, qe2; - - private double THRESHOLD_AREA = 500000; // 0.1Km2 - /* - * HydroloGIS addons - */ - public static final int ROUTING_CHEZY_NONEXPL = 2; - public static final int ROUTING_CHEZY = 3; - public static final int ROUTING_MANNING = 4; - private static final double MSTMAX = 1; - private int routingType = ROUTING_CHEZY; - private List orderedHillslopes = null; - private boolean doLog = false; - private final IJGTProgressMonitor pm; - - private boolean doPrint = false; - private List dischargeContributorList = new ArrayList(); - private HashMap hillslopeId2DischargeDistributor; - - /** - * Duffy model function. - * - * @param linksList - * the list of all the network links, expressed through their - * Pfafstetter numbers - * @param closureHillslope - * the most downstream hillslope in the analyzed basin - * @param routingType - * the type of routing to be used - * @param pm - * @param deltaTinMinutes - * @param doLog - */ - public DuffyModel( List orderedHillslopes, int routingType, IJGTProgressMonitor pm, boolean doLog ) { - this.orderedHillslopes = orderedHillslopes; - this.routingType = routingType; - this.pm = pm; - this.doLog = doLog; - - } - - /** - * Duffy function evaluation. - * @param input - * initial condition values for every link. The structure is: - *
- *
    - *
  • link1 initial discharge
  • - *
  • link2 initial discharge
  • - *
  • link3 initial discharge
  • - *
  • ...
  • - *
  • linkn initial discharge
  • - *
  • link1 subsurface and baseflow
  • - *
  • link2 subsurface and baseflow
  • - *
  • ...
  • - *
  • linkn subsurface and baseflow
  • - *
  • link1 water storage in non saturated zone of the hillslope
  • - *
  • link2 water storage in non saturated zone of the hillslope
  • - *
  • ...
  • - *
  • linkn water storage in non saturated zone of the hillslope
  • - *
  • link1 water storage in saturated zone of the hillslope
  • - *
  • link2 water storage in saturated zone of the hillslope
  • - *
  • ...
  • - *
  • linkn water storage in saturated zone of the hillslope
  • - *
- * @param rainArray - * the array of precipitation (in mm/h) for each hillslope - * centroid (to be ordered in a consistent way with the - * linksList) - * @param etpArray - * @param timeinMinutes - * the time - * - * @return - */ - public double[] eval( double currentTimeInMinutes, double[] input, double[] rainArray, double[] etpArray, - boolean isAtFinalSubtimestep ) { - // the input's length is twice the number of links... the first half - // corresponds to links - // discharge and the second to hillslopes storage - // System.out.println(input.length); - - // define the month - long currentTimeInMillis = (long) (currentTimeInMinutes * 60.0 * 1000.0); - int linksNum = orderedHillslopes.size(); // linksConectionStruct.headsArray.length; - // double mstold = 0.0; - - double[] output = new double[input.length]; - - for( int i = linksNum - 1; i >= 0; i-- ) { - // start from the last pieces - HillSlopeDuffy currentHillslope = (HillSlopeDuffy) orderedHillslopes.get(i); - Parameters parameters = currentHillslope.getParameters(); - /* - * NOTE: Initial conditions are ... input[i] for link discharge - * input[i+nLi] for link base flow input[i+2*nLi] for unsaturated - * hillslope S1 input[i+3*nLi] for saturated hillslope S2 . input[] - * is updated for each time step in DiffEqSolver.RKF . - */ - - double prec_mphr = rainArray[i] / 1000.0; // input precipitation is in mm/h - - double area_m2 = currentHillslope.getHillslopeArea(); - // automatically in m2 from the features - /* - * Added some check for phisic consistency of the parameters - */ - // if (input[i + 3 * linksNum] != input[i + 3 * linksNum]) { - // System.out.println(); - // } - double minsupdischarge = parameters.getqqsupmin() * currentHillslope.getUpstreamArea(null) / 1E6; - if (input[i] < minsupdischarge) { - input[i] = minsupdischarge; - // System.out - // .println( - // "Current superficial discharge is less than the minimum value, setted to it for the basin " - // + currentHillslope.getHillslopeId()); - } - double minsubdischarge = parameters.getqqsubmin() * currentHillslope.getUpstreamArea(null) / 1E6; - if (input[i + linksNum] < minsubdischarge) { - input[i + linksNum] = minsubdischarge; - // System.out - // .println( - // "Current subsuperficial discharge is less than the minimum value, setted to it for the basin " - // + currentHillslope.getHillslopeId()); - } - if (input[i + 2 * linksNum] < parameters.getS1residual()) { - input[i + 2 * linksNum] = parameters.getS1residual(); - // System.out - // .println( - // "Current S1 parameter is less than the minimum value, setted to it for the basin " - // + currentHillslope.getHillslopeId()); - } - if (input[i + 3 * linksNum] < parameters.getS2residual()) { - input[i + 3 * linksNum] = parameters.getS2residual(); - // System.out - // .println( - // "Current S2 parameter is less than the minimum value, setted to it for the basin " - // + currentHillslope.getHillslopeId()); - } - - /* HILLSLOPE FLUX CONDITIONS */ - satsurf = parameters.getS2Param() * (input[i + 3 * linksNum]); // dimless - // double areasat = satsurf * area_m2; - mst = (input[i + 2 * linksNum]) / (parameters.getS2max() - (input[i + 3 * linksNum])); // dimless - if (Double.isInfinite(mst)) { - mst = MSTMAX; - } - - // if ((mst - mstold) > 0.01) { - // System.out.println("mst " + mst + "mstold " + mstold); - // mstold = mst; - // } - // Ku = hillSlopesInfo.Ks(currentHillslope) - // * (Math.pow(mst, hillSlopesInfo.MstExp(currentHillslope))); // - // mphr - - /* HILLSLOPE S1-SURFACE FLUX VALUES */ - if (prec_mphr < parameters.getKs()) { - inf = (1.0 - satsurf) * area_m2 * prec_mphr; // m3phr - qdh = 0.0; // m3phr - } else { - inf = (1.0 - satsurf) * area_m2 * parameters.getKs(); // m3phr - qdh = (1.0 - satsurf) * area_m2 * (prec_mphr - parameters.getKs()); // m3phr - } - - Double eTrate = parameters.getETrate(); - if (etpArray != null) { - qe1 = etpArray[i]; - } else { - if (input[i + 2 * linksNum] > parameters.getS1residual()) { - qe1 = eTrate * area_m2 * (1.0 - satsurf) * mst; // m3phr - } else { - qe1 = 0.0; - } - } - - /* HILLSLOPE S1-S2 FLUX VALUE */ - // re = 1100.0 - // * (input[i + 2 * linksNum] / parameters.getS2max()) - // + 300.0 - // * ((input[i + 2 * linksNum] / parameters.getS2max()) + 5) - // * Math.pow((input[i + 3 * linksNum] / parameters.getS2max()), - // 2.0); - re = parameters.getKs() * area_m2 * (1.0 - satsurf) * (Math.pow(mst, parameters.getMstExp())); // m3phr - - /* HILLSLOPE S2-SURFACE FLUX VALUES */ - qds = satsurf * area_m2 * prec_mphr; // m3phr - - if (etpArray != null) { - qe2 = etpArray[i]; - } else { - qe2 = eTrate * area_m2 * satsurf; // m3phr, - } - - qs = parameters.getRecParam() * (input[i + 3 * linksNum]); // m3phr - - /* HILLSLOPE DIRECT RUNOFF (TOTAL) FLUXES */ - // System.out.println("qdh = " + qdh); - // System.out.println("qds = " + qds); - qd = qdh + qds; // m3phr - - if (Double.isNaN(qs) || Double.isNaN(qd)) { - if (Double.isNaN(qs)) { - throw new ModelsIllegalargumentException("Subsuperficial discharge for the hillslope " - + currentHillslope.getHillslopeId() + " " + i + " is NaN", this.getClass().getSimpleName()); - } else { - throw new ModelsIllegalargumentException("Timestep " + currentTimeInMinutes - + "Superficial discharge for the hillslope " + currentHillslope.getHillslopeId() + " " + i - + " is NaN" + "\nValue of qdh " + qdh + "\nValue of qds " + qds + "\nPrecipitation " + prec_mphr - + "\nSatsurf " + satsurf, this.getClass().getSimpleName()); - } - } - - if (isAtFinalSubtimestep) { - pm.message("timeinmin = " + currentTimeInMinutes + "\tbacino: " + i + "\tqdh = " + qdh + "\tqds = " + qds - + "\tre = " + re + "\tqs = " + qs + "\tmst = " + mst + "\tinf = " + inf + "\tqe1 = " + qe1 + "\tqe2 = " - + qe2); - } - /* - * if the area is > 0.1 km2, we consider the delay effect - * of the hillslope. - */ - if (area_m2 > THRESHOLD_AREA) { - // distribute the discharge - int hillslopeId = currentHillslope.getHillslopeId(); - ADischargeDistributor dischargeDistributor = hillslopeId2DischargeDistributor.get(hillslopeId); - qs = dischargeDistributor.calculateSubsuperficialDischarge(qs, satsurf, currentTimeInMillis); - qd = dischargeDistributor.calculateSuperficialDischarge(qd, satsurf, currentTimeInMillis); - } - - /* LINK FLUX ( Q ) */ - /* - * Below, i=link#, j=id of connecting links, Array[i][j]=link# for - * connecting link - */ - /* LINK FLUX ( Q SUBSURFACE, BASE FLOW ) */ - /* - * Below, i=link#, j=id of connecting links, Array[i][j]=link# for - * connecting link - */ - Q_trib = 0.0D; - Qs_trib = 0.0D; - - List connectedUpstreamHillSlopes = currentHillslope.getConnectedUpstreamElements(); - - if (connectedUpstreamHillSlopes != null) { - for( IHillSlope hillSlope : connectedUpstreamHillSlopes ) { - PfafstetterNumber pNum = hillSlope.getPfafstetterNumber(); - int index = orderedHillslopes.indexOf(hillSlope); - boolean doCalculate = true; - for( IDischargeContributor dContributor : dischargeContributorList ) { - Double contributedDischarge = dContributor.getDischarge(pNum.toString()); - contributedDischarge = dContributor.mergeWithDischarge(contributedDischarge, input[index]); - if (!isNovalue(contributedDischarge)) { - if (doLog && doPrint) { - pm.message("----> For hillslope " + currentHillslope.getPfafstetterNumber() - + " using hydrometer/dams data in pfafstetter: " + pNum.toString() + "(meaning added " - + contributedDischarge + " instead of " + input[index] + ")"); - } - double dischargeRatio = 0.3;// input[index] / (input[index] + - // input[index + linksNum]); - Q_trib = dischargeRatio * contributedDischarge; // units m^3/s - Qs_trib = contributedDischarge - Q_trib; // units m^3/s - doCalculate = false; - } - } - if (doCalculate) { - // at the same position we can query the input array - Q_trib += input[index]; // units m^3/s - Qs_trib += input[index + linksNum]; // units m^3/s - } - } - - } - - double K_Q = AdigeUtilities.doRouting(input[i], currentHillslope, routingType); - - /* - * if (i == 62) { System.out.println(" WD ratio ="+ - * linksHydraulicInfo.Width(i)/flowdepth); System.out.println(" - * Mannings v (m/s) =" + - * (Math.pow(hydrad,2./3.)*Math.pow(linksHydraulicInfo.Slope(i),1/2.)/mannings_n) ); - * System.out.println(" K_Q =" + - * (Math.pow(hydrad,2./3.)*Math.pow(linksHydraulicInfo.Slope(i),1/2.)/mannings_n) - * *Math.pow(linksHydraulicInfo.Length(i),-1) ); } - */ - if (input[i] == 0.0D) - K_Q = 1e-10; - - if (Double.isNaN(qs) || Double.isNaN(qd)) { - pm.errorMessage("Problems in basin: " + currentHillslope.getHillslopeId() + " " + i); //$NON-NLS-1$ //$NON-NLS-2$ - if (area_m2 < THRESHOLD_AREA) { - qd = 0.0; - qs = 0.0; - inf = 0.0; - qe1 = 0.0; - qe2 = 0.0; - re = 0.0; - System.out.println("All the contributes are set to zero."); - } - } - - /* OUTPUT */ - if (area_m2 > THRESHOLD_AREA) { - // LINK dQ/dt; big () term is m^3/s, 60*K_Q is 1/min - output[i] = 60.0D * K_Q * ((1.0D / 3600.) * qd + Q_trib - input[i]); - // 60.0 * K_Q * (Q_trib - input[i]) + (1.0 / 3600.0) * qd / deltaTinMinutes; - // LINK dQs/dt -> (m^3/s)/min - output[i + linksNum] = 60.0 * K_Q * (Qs_trib - input[i + linksNum]) + 60.0 * K_Q * (1.0 / 3600.) * (qs); - // HILLSLOPE dS1/dt -> m3/min - output[i + (2 * linksNum)] = (1.0 / 60.0) * (inf - re - qe1); - // HILLSLOPE dS2/dt -> m3/min - output[i + (3 * linksNum)] = (1.0 / 60.0) * (re - qs - qe2); - } else { - output[i] = 60.0D * K_Q * ((1.0D / 3600.) * qd + Q_trib - input[i]); - output[i + linksNum] = 60.0D * K_Q * ((1.0D / 3600.) * (qs) + Qs_trib - input[i + linksNum]); - output[i + (2 * linksNum)] = (1.0D / 60.0) * (inf - re - qe1); - if (output[i + (2 * linksNum)] != output[i + (2 * linksNum)] || output[i + (2 * linksNum)] == 0.0) { - throw new ModelsIllegalargumentException("Invalid value of S1, please check the parameters." - + output[i + (2 * linksNum)], this); - } - output[i + (3 * linksNum)] = (1.0D / 60.0) * (re - qs - qe2); - } - if (output[i + (3 * linksNum)] != output[i + (3 * linksNum)] || output[i + (2 * linksNum)] == 0.) { - throw new ModelsIllegalargumentException("Invalid value of S2, please check the parameters.", this.getClass() - .getSimpleName()); - } - - } - doPrint = false; - - return output; - } - - public void addDischargeContributor( IDischargeContributor dischargeContributor ) { - dischargeContributorList.add(dischargeContributor); - } - - public void addDischargeDistributor( HashMap hillslopeId2DischargeDistributor ) { - this.hillslopeId2DischargeDistributor = hillslopeId2DischargeDistributor; - } -} +/* +CUENCAS is a River Network Oriented GIS +Copyright (C) 2005 Ricardo Mantilla + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * NetworkEquations.java + * + * Created on November 11, 2001, 10:26 AM + */ + +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IDischargeContributor; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlopeDuffy; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlopeDuffy.Parameters; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.PfafstetterNumber; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.utils.AdigeUtilities; +/** + * The duffy model. + * + * This class implements the set of non-linear ordinary differential equations + * used to simulate flows along the river network. The function is writen as a + * {@link IBasicFunction.util.ordDiffEqSolver.BasicFunction} that is used by the + * {@link hydroScalingAPI.util.ordDiffEqSolver.RungeKuttaFelberg} + * + * @author Peter Furey + * @author Andrea Antonello (www.hydrologis.com) + * @author Silvia Franceschi (www.hydrologis.com) + */ +public class DuffyModel { + private double qd, qs, Q_trib, Qs_trib; + // public double pcoe; + + private double satsurf, mst, qdh, qds, inf, re, qe1, qe2; + + private double THRESHOLD_AREA = 500000; // 0.1Km2 + /* + * HydroloGIS addons + */ + public static final int ROUTING_CHEZY_NONEXPL = 2; + public static final int ROUTING_CHEZY = 3; + public static final int ROUTING_MANNING = 4; + private static final double MSTMAX = 1; + private int routingType = ROUTING_CHEZY; + private List orderedHillslopes = null; + private boolean doLog = false; + private final IJGTProgressMonitor pm; + + private boolean doPrint = false; + private List dischargeContributorList = new ArrayList(); + private HashMap hillslopeId2DischargeDistributor; + + /** + * Duffy model function. + * + * @param linksList + * the list of all the network links, expressed through their + * Pfafstetter numbers + * @param closureHillslope + * the most downstream hillslope in the analyzed basin + * @param routingType + * the type of routing to be used + * @param pm + * @param deltaTinMinutes + * @param doLog + */ + public DuffyModel( List orderedHillslopes, int routingType, IJGTProgressMonitor pm, boolean doLog ) { + this.orderedHillslopes = orderedHillslopes; + this.routingType = routingType; + this.pm = pm; + this.doLog = doLog; + + } + + /** + * Duffy function evaluation. + * @param input + * initial condition values for every link. The structure is: + *
+ *
    + *
  • link1 initial discharge
  • + *
  • link2 initial discharge
  • + *
  • link3 initial discharge
  • + *
  • ...
  • + *
  • linkn initial discharge
  • + *
  • link1 subsurface and baseflow
  • + *
  • link2 subsurface and baseflow
  • + *
  • ...
  • + *
  • linkn subsurface and baseflow
  • + *
  • link1 water storage in non saturated zone of the hillslope
  • + *
  • link2 water storage in non saturated zone of the hillslope
  • + *
  • ...
  • + *
  • linkn water storage in non saturated zone of the hillslope
  • + *
  • link1 water storage in saturated zone of the hillslope
  • + *
  • link2 water storage in saturated zone of the hillslope
  • + *
  • ...
  • + *
  • linkn water storage in saturated zone of the hillslope
  • + *
+ * @param rainArray + * the array of precipitation (in mm/h) for each hillslope + * centroid (to be ordered in a consistent way with the + * linksList) + * @param etpArray + * @param timeinMinutes + * the time + * + * @return + */ + public double[] eval( double currentTimeInMinutes, double[] input, double[] rainArray, double[] etpArray, + boolean isAtFinalSubtimestep ) { + // the input's length is twice the number of links... the first half + // corresponds to links + // discharge and the second to hillslopes storage + // System.out.println(input.length); + + // define the month + long currentTimeInMillis = (long) (currentTimeInMinutes * 60.0 * 1000.0); + int linksNum = orderedHillslopes.size(); // linksConectionStruct.headsArray.length; + // double mstold = 0.0; + + double[] output = new double[input.length]; + + for( int i = linksNum - 1; i >= 0; i-- ) { + // start from the last pieces + HillSlopeDuffy currentHillslope = (HillSlopeDuffy) orderedHillslopes.get(i); + Parameters parameters = currentHillslope.getParameters(); + /* + * NOTE: Initial conditions are ... input[i] for link discharge + * input[i+nLi] for link base flow input[i+2*nLi] for unsaturated + * hillslope S1 input[i+3*nLi] for saturated hillslope S2 . input[] + * is updated for each time step in DiffEqSolver.RKF . + */ + + double prec_mphr = rainArray[i] / 1000.0; // input precipitation is in mm/h + + double area_m2 = currentHillslope.getHillslopeArea(); + // automatically in m2 from the features + /* + * Added some check for phisic consistency of the parameters + */ + // if (input[i + 3 * linksNum] != input[i + 3 * linksNum]) { + // System.out.println(); + // } + double minsupdischarge = parameters.getqqsupmin() * currentHillslope.getUpstreamArea(null) / 1E6; + if (input[i] < minsupdischarge) { + input[i] = minsupdischarge; + // System.out + // .println( + // "Current superficial discharge is less than the minimum value, setted to it for the basin " + // + currentHillslope.getHillslopeId()); + } + double minsubdischarge = parameters.getqqsubmin() * currentHillslope.getUpstreamArea(null) / 1E6; + if (input[i + linksNum] < minsubdischarge) { + input[i + linksNum] = minsubdischarge; + // System.out + // .println( + // "Current subsuperficial discharge is less than the minimum value, setted to it for the basin " + // + currentHillslope.getHillslopeId()); + } + if (input[i + 2 * linksNum] < parameters.getS1residual()) { + input[i + 2 * linksNum] = parameters.getS1residual(); + // System.out + // .println( + // "Current S1 parameter is less than the minimum value, setted to it for the basin " + // + currentHillslope.getHillslopeId()); + } + if (input[i + 3 * linksNum] < parameters.getS2residual()) { + input[i + 3 * linksNum] = parameters.getS2residual(); + // System.out + // .println( + // "Current S2 parameter is less than the minimum value, setted to it for the basin " + // + currentHillslope.getHillslopeId()); + } + + /* HILLSLOPE FLUX CONDITIONS */ + satsurf = parameters.getS2Param() * (input[i + 3 * linksNum]); // dimless + // double areasat = satsurf * area_m2; + mst = (input[i + 2 * linksNum]) / (parameters.getS2max() - (input[i + 3 * linksNum])); // dimless + if (Double.isInfinite(mst)) { + mst = MSTMAX; + } + + // if ((mst - mstold) > 0.01) { + // System.out.println("mst " + mst + "mstold " + mstold); + // mstold = mst; + // } + // Ku = hillSlopesInfo.Ks(currentHillslope) + // * (Math.pow(mst, hillSlopesInfo.MstExp(currentHillslope))); // + // mphr + + /* HILLSLOPE S1-SURFACE FLUX VALUES */ + if (prec_mphr < parameters.getKs()) { + inf = (1.0 - satsurf) * area_m2 * prec_mphr; // m3phr + qdh = 0.0; // m3phr + } else { + inf = (1.0 - satsurf) * area_m2 * parameters.getKs(); // m3phr + qdh = (1.0 - satsurf) * area_m2 * (prec_mphr - parameters.getKs()); // m3phr + } + + Double eTrate = parameters.getETrate(); + if (etpArray != null) { + qe1 = etpArray[i]; + } else { + if (input[i + 2 * linksNum] > parameters.getS1residual()) { + qe1 = eTrate * area_m2 * (1.0 - satsurf) * mst; // m3phr + } else { + qe1 = 0.0; + } + } + + /* HILLSLOPE S1-S2 FLUX VALUE */ + // re = 1100.0 + // * (input[i + 2 * linksNum] / parameters.getS2max()) + // + 300.0 + // * ((input[i + 2 * linksNum] / parameters.getS2max()) + 5) + // * Math.pow((input[i + 3 * linksNum] / parameters.getS2max()), + // 2.0); + re = parameters.getKs() * area_m2 * (1.0 - satsurf) * (Math.pow(mst, parameters.getMstExp())); // m3phr + + /* HILLSLOPE S2-SURFACE FLUX VALUES */ + qds = satsurf * area_m2 * prec_mphr; // m3phr + + if (etpArray != null) { + qe2 = etpArray[i]; + } else { + qe2 = eTrate * area_m2 * satsurf; // m3phr, + } + + qs = parameters.getRecParam() * (input[i + 3 * linksNum]); // m3phr + + /* HILLSLOPE DIRECT RUNOFF (TOTAL) FLUXES */ + // System.out.println("qdh = " + qdh); + // System.out.println("qds = " + qds); + qd = qdh + qds; // m3phr + + if (Double.isNaN(qs) || Double.isNaN(qd)) { + if (Double.isNaN(qs)) { + throw new ModelsIllegalargumentException("Subsuperficial discharge for the hillslope " + + currentHillslope.getHillslopeId() + " " + i + " is NaN", this.getClass().getSimpleName()); + } else { + throw new ModelsIllegalargumentException("Timestep " + currentTimeInMinutes + + "Superficial discharge for the hillslope " + currentHillslope.getHillslopeId() + " " + i + + " is NaN" + "\nValue of qdh " + qdh + "\nValue of qds " + qds + "\nPrecipitation " + prec_mphr + + "\nSatsurf " + satsurf, this.getClass().getSimpleName()); + } + } + + if (isAtFinalSubtimestep) { + pm.message("timeinmin = " + currentTimeInMinutes + "\tbacino: " + i + "\tqdh = " + qdh + "\tqds = " + qds + + "\tre = " + re + "\tqs = " + qs + "\tmst = " + mst + "\tinf = " + inf + "\tqe1 = " + qe1 + "\tqe2 = " + + qe2); + } + /* + * if the area is > 0.1 km2, we consider the delay effect + * of the hillslope. + */ + if (area_m2 > THRESHOLD_AREA) { + // distribute the discharge + int hillslopeId = currentHillslope.getHillslopeId(); + ADischargeDistributor dischargeDistributor = hillslopeId2DischargeDistributor.get(hillslopeId); + qs = dischargeDistributor.calculateSubsuperficialDischarge(qs, satsurf, currentTimeInMillis); + qd = dischargeDistributor.calculateSuperficialDischarge(qd, satsurf, currentTimeInMillis); + } + + /* LINK FLUX ( Q ) */ + /* + * Below, i=link#, j=id of connecting links, Array[i][j]=link# for + * connecting link + */ + /* LINK FLUX ( Q SUBSURFACE, BASE FLOW ) */ + /* + * Below, i=link#, j=id of connecting links, Array[i][j]=link# for + * connecting link + */ + Q_trib = 0.0D; + Qs_trib = 0.0D; + + List connectedUpstreamHillSlopes = currentHillslope.getConnectedUpstreamElements(); + + if (connectedUpstreamHillSlopes != null) { + for( IHillSlope hillSlope : connectedUpstreamHillSlopes ) { + PfafstetterNumber pNum = hillSlope.getPfafstetterNumber(); + int index = orderedHillslopes.indexOf(hillSlope); + boolean doCalculate = true; + for( IDischargeContributor dContributor : dischargeContributorList ) { + Double contributedDischarge = dContributor.getDischarge(pNum.toString()); + contributedDischarge = dContributor.mergeWithDischarge(contributedDischarge, input[index]); + if (!isNovalue(contributedDischarge)) { + if (doLog && doPrint) { + pm.message("----> For hillslope " + currentHillslope.getPfafstetterNumber() + + " using hydrometer/dams data in pfafstetter: " + pNum.toString() + "(meaning added " + + contributedDischarge + " instead of " + input[index] + ")"); + } + double dischargeRatio = 0.3;// input[index] / (input[index] + + // input[index + linksNum]); + Q_trib = dischargeRatio * contributedDischarge; // units m^3/s + Qs_trib = contributedDischarge - Q_trib; // units m^3/s + doCalculate = false; + } + } + if (doCalculate) { + // at the same position we can query the input array + Q_trib += input[index]; // units m^3/s + Qs_trib += input[index + linksNum]; // units m^3/s + } + } + + } + + double K_Q = AdigeUtilities.doRouting(input[i], currentHillslope, routingType); + + /* + * if (i == 62) { System.out.println(" WD ratio ="+ + * linksHydraulicInfo.Width(i)/flowdepth); System.out.println(" + * Mannings v (m/s) =" + + * (Math.pow(hydrad,2./3.)*Math.pow(linksHydraulicInfo.Slope(i),1/2.)/mannings_n) ); + * System.out.println(" K_Q =" + + * (Math.pow(hydrad,2./3.)*Math.pow(linksHydraulicInfo.Slope(i),1/2.)/mannings_n) + * *Math.pow(linksHydraulicInfo.Length(i),-1) ); } + */ + if (input[i] == 0.0D) + K_Q = 1e-10; + + if (Double.isNaN(qs) || Double.isNaN(qd)) { + pm.errorMessage("Problems in basin: " + currentHillslope.getHillslopeId() + " " + i); //$NON-NLS-1$ //$NON-NLS-2$ + if (area_m2 < THRESHOLD_AREA) { + qd = 0.0; + qs = 0.0; + inf = 0.0; + qe1 = 0.0; + qe2 = 0.0; + re = 0.0; + System.out.println("All the contributes are set to zero."); + } + } + + /* OUTPUT */ + if (area_m2 > THRESHOLD_AREA) { + // LINK dQ/dt; big () term is m^3/s, 60*K_Q is 1/min + output[i] = 60.0D * K_Q * ((1.0D / 3600.) * qd + Q_trib - input[i]); + // 60.0 * K_Q * (Q_trib - input[i]) + (1.0 / 3600.0) * qd / deltaTinMinutes; + // LINK dQs/dt -> (m^3/s)/min + output[i + linksNum] = 60.0 * K_Q * (Qs_trib - input[i + linksNum]) + 60.0 * K_Q * (1.0 / 3600.) * (qs); + // HILLSLOPE dS1/dt -> m3/min + output[i + (2 * linksNum)] = (1.0 / 60.0) * (inf - re - qe1); + // HILLSLOPE dS2/dt -> m3/min + output[i + (3 * linksNum)] = (1.0 / 60.0) * (re - qs - qe2); + } else { + output[i] = 60.0D * K_Q * ((1.0D / 3600.) * qd + Q_trib - input[i]); + output[i + linksNum] = 60.0D * K_Q * ((1.0D / 3600.) * (qs) + Qs_trib - input[i + linksNum]); + output[i + (2 * linksNum)] = (1.0D / 60.0) * (inf - re - qe1); + if (output[i + (2 * linksNum)] != output[i + (2 * linksNum)] || output[i + (2 * linksNum)] == 0.0) { + throw new ModelsIllegalargumentException("Invalid value of S1, please check the parameters." + + output[i + (2 * linksNum)], this); + } + output[i + (3 * linksNum)] = (1.0D / 60.0) * (re - qs - qe2); + } + if (output[i + (3 * linksNum)] != output[i + (3 * linksNum)] || output[i + (2 * linksNum)] == 0.) { + throw new ModelsIllegalargumentException("Invalid value of S2, please check the parameters.", this.getClass() + .getSimpleName()); + } + + } + doPrint = false; + + return output; + } + + public void addDischargeContributor( IDischargeContributor dischargeContributor ) { + dischargeContributorList.add(dischargeContributor); + } + + public void addDischargeDistributor( HashMap hillslopeId2DischargeDistributor ) { + this.hillslopeId2DischargeDistributor = hillslopeId2DischargeDistributor; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/HillSlopesInfo.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/HillSlopesInfo.java index e8c84e7c8..a83e6d706 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/HillSlopesInfo.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/HillSlopesInfo.java @@ -1,100 +1,100 @@ -/* -CUENCAS is a River Network Oriented GIS -Copyright (C) 2005 Ricardo Mantilla - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -/* - * hillSlopesInfo.java - * - * Created on November 11, 2001, 10:34 AM - */ - -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; - -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope; - -/** - * The purpose of this class is to be a centralized database for all the - * information related to the system of hillslopes that compose the basin. In - * the current implementation this class produces aggregated output for the two - * hillslopes draining into a stream link. Future implementations will consider - * the variability of the two hillslopes. Information such as precipitation, - * evaporation, soil parameters can be requested to this class. Note: In order - * to implement new hillslope models this class must be updated to provide the - * information for the hillslopes - * - * @author Ricardo Mantilla - */ -public class HillSlopesInfo { - - public double So( IHillSlope hillSlope ) { - return 1.0; // So is max storage in the hillslope and i is the i-th link - } - - public double Ts( IHillSlope hillSlope ) { - return 10.0; - } - - public double Te( IHillSlope hillSlope ) { - return 1e20; - } - - /* PF ADDITION - START ... */ - /* Working units are m, hr, .... */ - public double depthMnSat( IHillSlope hillSlope ) { - double depth_m = 2.5; // meters - return depth_m; - } - - public double ks( IHillSlope hillSlope ) { - // double ks_mpd = 1.023 * 10000.0; - // double ks_mphr = ks_mpd * (1. / 24.); - double ks_mphr = 0.01; - return ks_mphr; - } - - public double mstExp( IHillSlope hillSlope ) { - return 11.0; // 11.0 this value dimensionless - } - - public double recParam( IHillSlope hillSlope ) { - double area_m2 = hillSlope.getHillslopeArea(); - double spec_yield = 0.01; // dimensionless - double d3_phr = (3.0 * ks(hillSlope) * depthMnSat(hillSlope)) / (spec_yield * area_m2); - return d3_phr; // [1/T] - } - - public double s2Param( IHillSlope hillSlope ) { - double area_m2 = hillSlope.getHillslopeArea(); - double porosity = 0.46; // 0.41; dimensionless - double d4_pm3 = 0.905 * (1. / (porosity * depthMnSat(hillSlope) * area_m2)); - return d4_pm3; // [1/L^3] - } - - public double s2max( IHillSlope hillSlope ) { - double s2max_m3 = (1.0 / s2Param(hillSlope)); - return s2max_m3; - } - - public double eTrate( IHillSlope hillSlope ) { - double etrate_mpd = 0.34; // 0.0034; - double etrate_mphr = etrate_mpd * (1. / 24.); - return etrate_mphr; - } - /* PF ADDITION - ... END */ - -} +/* +CUENCAS is a River Network Oriented GIS +Copyright (C) 2005 Ricardo Mantilla + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * hillSlopesInfo.java + * + * Created on November 11, 2001, 10:34 AM + */ + +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; + +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope; + +/** + * The purpose of this class is to be a centralized database for all the + * information related to the system of hillslopes that compose the basin. In + * the current implementation this class produces aggregated output for the two + * hillslopes draining into a stream link. Future implementations will consider + * the variability of the two hillslopes. Information such as precipitation, + * evaporation, soil parameters can be requested to this class. Note: In order + * to implement new hillslope models this class must be updated to provide the + * information for the hillslopes + * + * @author Ricardo Mantilla + */ +public class HillSlopesInfo { + + public double So( IHillSlope hillSlope ) { + return 1.0; // So is max storage in the hillslope and i is the i-th link + } + + public double Ts( IHillSlope hillSlope ) { + return 10.0; + } + + public double Te( IHillSlope hillSlope ) { + return 1e20; + } + + /* PF ADDITION - START ... */ + /* Working units are m, hr, .... */ + public double depthMnSat( IHillSlope hillSlope ) { + double depth_m = 2.5; // meters + return depth_m; + } + + public double ks( IHillSlope hillSlope ) { + // double ks_mpd = 1.023 * 10000.0; + // double ks_mphr = ks_mpd * (1. / 24.); + double ks_mphr = 0.01; + return ks_mphr; + } + + public double mstExp( IHillSlope hillSlope ) { + return 11.0; // 11.0 this value dimensionless + } + + public double recParam( IHillSlope hillSlope ) { + double area_m2 = hillSlope.getHillslopeArea(); + double spec_yield = 0.01; // dimensionless + double d3_phr = (3.0 * ks(hillSlope) * depthMnSat(hillSlope)) / (spec_yield * area_m2); + return d3_phr; // [1/T] + } + + public double s2Param( IHillSlope hillSlope ) { + double area_m2 = hillSlope.getHillslopeArea(); + double porosity = 0.46; // 0.41; dimensionless + double d4_pm3 = 0.905 * (1. / (porosity * depthMnSat(hillSlope) * area_m2)); + return d4_pm3; // [1/L^3] + } + + public double s2max( IHillSlope hillSlope ) { + double s2max_m3 = (1.0 / s2Param(hillSlope)); + return s2max_m3; + } + + public double eTrate( IHillSlope hillSlope ) { + double etrate_mpd = 0.34; // 0.0034; + double etrate_mphr = etrate_mpd * (1. / 24.); + return etrate_mphr; + } + /* PF ADDITION - ... END */ + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/NashDischargeDistributor.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/NashDischargeDistributor.java index 8eb4b61ab..728bfed55 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/NashDischargeDistributor.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/NashDischargeDistributor.java @@ -1,353 +1,353 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; - -import static java.lang.Math.exp; -import static java.lang.Math.pow; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.jgrasstools.gears.libs.modules.ModelsEngine; - -/** - * @author Silvia Franceschi (www.hydrologis.com) - * @author Andrea Antonello (www.hydrologis.com) - */ -public class NashDischargeDistributor extends ADischargeDistributor { - - private static final double N_THRESHOLD = 10.0; - private double avgSup10; - private double avgSup30; - private double avgSup60; - private double varSup10; - private double varSup30; - private double varSup60; - private double avgSub; - private double varSub; - private double vSup; - private double vSub; - private long startDateMillis; - private long endDateMillis; - private double[] nashArraySub; - private double[] nashArraySup10; - private double[] nashArraySup30; - private double[] nashArraySup60; - private double[] currentSup; - - private long previousSuperficialTimeInMillis = -1; - private long previousSubSuperficialTimeInMillis = -1; - private double[] previousSuperficialContribution = null; - private double[] previousSubSuperficialContribution = null; - private int superficialArrayIndex; - private int subSuperficialArrayIndex; - - public NashDischargeDistributor( long startDateMillis, long endDateMillis, long timeStepMillis, - HashMap parameters ) { - super(startDateMillis, endDateMillis, timeStepMillis, parameters); - this.startDateMillis = startDateMillis; - this.endDateMillis = endDateMillis; - - avgSup10 = parameters.get(ADischargeDistributor.PARAMS_AVG_SUP_10); - avgSup30 = parameters.get(ADischargeDistributor.PARAMS_AVG_SUP_30); - avgSup60 = parameters.get(ADischargeDistributor.PARAMS_AVG_SUP_60); - varSup10 = parameters.get(ADischargeDistributor.PARAMS_VAR_SUP_10); - varSup30 = parameters.get(ADischargeDistributor.PARAMS_VAR_SUP_30); - varSup60 = parameters.get(ADischargeDistributor.PARAMS_VAR_SUP_60); - avgSub = parameters.get(ADischargeDistributor.PARAMS_AVG_SUB); - varSub = parameters.get(ADischargeDistributor.PARAMS_VAR_SUB); - vSup = parameters.get(ADischargeDistributor.PARAMS_V_SUP); - vSub = parameters.get(ADischargeDistributor.PARAMS_V_SUB); - - /* - * valori fissi solo per test - */ - avgSup10 = 3304.0; - avgSup30 = 3603.0; - avgSup60 = 20981.0; - varSup10 = 2.41E6; - varSup30 = 2.45E6; - varSup60 = 2.26E8; - avgSub = 50555.0; - varSub = 1.47E9; - - double kSub = varSub / avgSub; - double nSub = avgSub / kSub - 1.0; - if (nSub < 0.0) { - varSub = avgSub * avgSub; - } - if (nSub < N_THRESHOLD) { - System.out.println("Nash subsuperficial..."); - nashArraySub = calculateNashDistribution(startDateMillis, endDateMillis, - timeStepMillis, avgSub, varSub, vSub); - } - double kSup = varSup10 / avgSup10; - double nSup = avgSup10 / kSup - 1.0; - if (nSup < 0.0) { - varSup10 = avgSup10 * avgSup10; - } - if (nSup < N_THRESHOLD) { - System.out.println("Nash superficial 10%..."); - nashArraySup10 = calculateNashDistribution(startDateMillis, endDateMillis, - timeStepMillis, avgSup10, varSup10, vSup); - } - kSup = varSup30 / avgSup30; - nSup = avgSup30 / kSup - 1.0; - if (nSup < 0.0) { - varSup30 = avgSup30 * avgSup30; - } - if (nSup < N_THRESHOLD) { - System.out.println("Nash superficial 30%..."); - nashArraySup30 = calculateNashDistribution(startDateMillis, endDateMillis, - timeStepMillis, avgSup30, varSup30, vSup); - } - kSup = varSup60 / avgSup60; - nSup = avgSup60 / kSup - 1.0; - if (nSup < 0.0) { - varSup60 = avgSup60 * avgSup60; - } - if (nSup < N_THRESHOLD) { - System.out.println("Nash superficial 60%..."); - nashArraySup60 = calculateNashDistribution(startDateMillis, endDateMillis, - timeStepMillis, avgSup60, varSup60, vSup); - } - - } - - private double[] calculateNashDistribution( long startDateMillis, long endDateMillis, - long timeStepMillis, double avg, double var, double v ) { - double k = var / avg; - double n = avg * avg / var; - double sum = 0.0; - double runningTime = 0.0; - double timeStepHours = ((double) timeStepMillis) / 1000.0 / 3600.0; - double endTime = ((double) (endDateMillis - startDateMillis - timeStepMillis)) / 1000.0 / 3600.0; - - double deltaD = timeStepHours * v * 3600.0; - List nashList = new ArrayList(); - while( sum < 0.96 && runningTime <= endTime ) { - // t is in hours - double t = runningTime; - // d is in meters, v is in meters/seconds - double d = t * v * 3600.0; - - double nash = (1.0 / (k * ModelsEngine.gamma(n))) * pow(d / k, n - 1.0) * exp(-(d / k)); - double nashy = nash * deltaD; - - nashList.add(nashy); - runningTime = runningTime + timeStepHours; - sum = sum + nashy; - } - double[] nashArray = new double[nashList.size()]; - for( int i = 0; i < nashArray.length; i++ ) { - nashArray[i] = nashList.get(i); - } - System.out.println("IUH calculated"); - return nashArray; - } - - protected void distributeIncomingSuperficialDischarge( double superficialDischarge, - double saturatedAreaPercentage, long currentTimeInMillis ) { - double kSup; - double nSup; - double avg; - if (saturatedAreaPercentage >= 0.0 && saturatedAreaPercentage <= 0.2) { - avg = avgSup10; - kSup = varSup10 / avgSup10; - nSup = avgSup10 / kSup - 1.0; - currentSup = nashArraySup10; - } else if (saturatedAreaPercentage > 0.2 && saturatedAreaPercentage <= 0.5) { - avg = avgSup30; - kSup = varSup30 / avgSup30; - nSup = avgSup30 / kSup - 1.0; - currentSup = nashArraySup30; - } else if (saturatedAreaPercentage > 0.5 && saturatedAreaPercentage <= 1.0) { - avg = avgSup60; - kSup = varSup60 / avgSup60; - nSup = avgSup60 / kSup - 1.0; - currentSup = nashArraySup60; - } else { - throw new IllegalArgumentException( - "The saturated area percentage has to be between 0 and 1. Current value is: " - + saturatedAreaPercentage); - } - - if (nSup > N_THRESHOLD) { - double t_seconds = avg / vSup; - currentTimeInMillis = currentTimeInMillis + (long) t_seconds * 1000; - if (currentTimeInMillis > endDateMillis - timeStepMillis) { - currentTimeInMillis = endDateMillis - timeStepMillis; - } - int qArrayIndex = indexFromTimeInMillis(currentTimeInMillis); - superficialDischargeArray[qArrayIndex] = superficialDischargeArray[qArrayIndex] - + superficialDischarge; - } else { - /* - * If the current time is one of the global model timesteps, - * we ADD the nash distributed discharge to the global - * discharge array (case A). In this case the index of the global array - * has to depend on the global time steps, which is why it is calculated - * only in this case. - * - * The case B occurs when the model iterates inside a global timestep - * to gain convergency on the discharge. In this case the discharge - * will be SUBSTITUTED, which means that it first the cintribution of - * the previous LOCAL timestep will be SUBTRACTED from the global array - * and then the current contribution will be ADDED at the same position - * as defined in the initial superficialArrayIndex (i.e. folloing the - * global timing mechanism). - */ - double[] currentContribution = new double[currentSup.length]; - for( int i = 0; i < currentSup.length; i++ ) { - currentContribution[i] = currentSup[i] * superficialDischarge; - } - int nashSize = currentSup.length; - if (currentTimeInMillis == previousSuperficialTimeInMillis + timeStepMillis - || previousSuperficialTimeInMillis == -1) { - // case A - superficialArrayIndex = indexFromTimeInMillis(currentTimeInMillis); - for( int i = 0; i < nashSize; i++ ) { - int j = superficialArrayIndex + i; - if (j > superficialDischargeArray.length - 1) { - break; - } - superficialDischargeArray[j] = superficialDischargeArray[j] - + currentContribution[i]; - } - previousSuperficialTimeInMillis = currentTimeInMillis; - } else { - // case B - for( int i = 0; i < nashSize; i++ ) { - int j = superficialArrayIndex + i; - if (j > superficialDischargeArray.length - 1) { - break; - } - if (i < previousSuperficialContribution.length) { - superficialDischargeArray[j] = superficialDischargeArray[j] - - previousSuperficialContribution[i]; - } - if (i < currentContribution.length) { - superficialDischargeArray[j] = superficialDischargeArray[j] - + currentContribution[i]; - } - } - } - previousSuperficialContribution = currentContribution; - } - } - - protected void distributeIncomingSubSuperficialDischarge( double subSuperficialDischarge, - double saturatedAreaPercentage, long currentTimeInMillis ) { - double kSub = varSub / avgSub; - double nSub = avgSub / kSub - 1.0; - if (nSub < 0.0) { - nSub = 0.0; - kSub = avgSub; - double var = avgSub * avgSub; - nashArraySub = calculateNashDistribution(startDateMillis, endDateMillis, - timeStepMillis, avgSub, var, vSub); - } - - if (nSub > N_THRESHOLD) { - double t_seconds = avgSub / vSub; - currentTimeInMillis = currentTimeInMillis + (long) t_seconds * 1000; - if (currentTimeInMillis > endDateMillis - timeStepMillis) { - currentTimeInMillis = endDateMillis - timeStepMillis; - } - int qArrayIndex = indexFromTimeInMillis(currentTimeInMillis); - subSuperficialDischargeArray[qArrayIndex] = subSuperficialDischargeArray[qArrayIndex] - + subSuperficialDischarge; - } else { - /* - * See comments about case A and B up in the superficial method. - */ - double[] currentContribution = new double[nashArraySub.length]; - for( int i = 0; i < nashArraySub.length; i++ ) { - currentContribution[i] = nashArraySub[i] * subSuperficialDischarge; - } - int nashSize = nashArraySub.length; - if (currentTimeInMillis == previousSubSuperficialTimeInMillis + timeStepMillis - || previousSubSuperficialTimeInMillis == -1) { - subSuperficialArrayIndex = indexFromTimeInMillis(currentTimeInMillis); - // case A - for( int i = 0; i < nashSize; i++ ) { - int j = subSuperficialArrayIndex + i; - if (j > subSuperficialDischargeArray.length - 1) { - break; - } - subSuperficialDischargeArray[j] = subSuperficialDischargeArray[j] - + currentContribution[i]; - } - previousSubSuperficialTimeInMillis = currentTimeInMillis; - } else { - // case B - for( int i = 0; i < nashSize; i++ ) { - int j = subSuperficialArrayIndex + i; - if (j > subSuperficialDischargeArray.length - 1) { - break; - } - if (i < previousSubSuperficialContribution.length) { - subSuperficialDischargeArray[j] = subSuperficialDischargeArray[j] - - previousSubSuperficialContribution[i]; - } - if (i < currentContribution.length) { - subSuperficialDischargeArray[j] = subSuperficialDischargeArray[j] - + currentContribution[i]; - } - } - } - previousSubSuperficialContribution = currentContribution; - } - } - - public static void main( String[] args ) throws Exception { - SimpleDateFormat dF = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - long startDate = dF.parse("2009-05-01 00:00").getTime(); - long endDate = dF.parse("2009-05-31 23:30").getTime(); - long timeStep = 1800000l; - - HashMap params = new HashMap(); - params.put(ADischargeDistributor.PARAMS_AVG_SUP_10, 14491.22); - params.put(ADischargeDistributor.PARAMS_AVG_SUP_30, 14491.22); - params.put(ADischargeDistributor.PARAMS_AVG_SUP_60, 14491.22); - params.put(ADischargeDistributor.PARAMS_VAR_SUP_10, 34367480.0); - params.put(ADischargeDistributor.PARAMS_VAR_SUP_30, 34367480.0); - params.put(ADischargeDistributor.PARAMS_VAR_SUP_60, 34367480.0); - params.put(ADischargeDistributor.PARAMS_AVG_SUB, 14491.22); - params.put(ADischargeDistributor.PARAMS_VAR_SUB, 34367480.0); - params.put(ADischargeDistributor.PARAMS_V_SUP, 2.0); - params.put(ADischargeDistributor.PARAMS_V_SUB, 0.1); - - ADischargeDistributor dDistr = ADischargeDistributor.createDischargeDistributor( - ADischargeDistributor.DISTRIBUTOR_TYPE_NASH, startDate, endDate, timeStep, params); - - double q = 100.0; - - long runningTime = startDate; - while( runningTime < endDate ) { - double newq = dDistr.calculateSuperficialDischarge(q, 0.15, runningTime); - runningTime = runningTime + timeStep; - System.out.println(newq); - } - - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; + +import static java.lang.Math.exp; +import static java.lang.Math.pow; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.jgrasstools.gears.libs.modules.ModelsEngine; + +/** + * @author Silvia Franceschi (www.hydrologis.com) + * @author Andrea Antonello (www.hydrologis.com) + */ +public class NashDischargeDistributor extends ADischargeDistributor { + + private static final double N_THRESHOLD = 10.0; + private double avgSup10; + private double avgSup30; + private double avgSup60; + private double varSup10; + private double varSup30; + private double varSup60; + private double avgSub; + private double varSub; + private double vSup; + private double vSub; + private long startDateMillis; + private long endDateMillis; + private double[] nashArraySub; + private double[] nashArraySup10; + private double[] nashArraySup30; + private double[] nashArraySup60; + private double[] currentSup; + + private long previousSuperficialTimeInMillis = -1; + private long previousSubSuperficialTimeInMillis = -1; + private double[] previousSuperficialContribution = null; + private double[] previousSubSuperficialContribution = null; + private int superficialArrayIndex; + private int subSuperficialArrayIndex; + + public NashDischargeDistributor( long startDateMillis, long endDateMillis, long timeStepMillis, + HashMap parameters ) { + super(startDateMillis, endDateMillis, timeStepMillis, parameters); + this.startDateMillis = startDateMillis; + this.endDateMillis = endDateMillis; + + avgSup10 = parameters.get(ADischargeDistributor.PARAMS_AVG_SUP_10); + avgSup30 = parameters.get(ADischargeDistributor.PARAMS_AVG_SUP_30); + avgSup60 = parameters.get(ADischargeDistributor.PARAMS_AVG_SUP_60); + varSup10 = parameters.get(ADischargeDistributor.PARAMS_VAR_SUP_10); + varSup30 = parameters.get(ADischargeDistributor.PARAMS_VAR_SUP_30); + varSup60 = parameters.get(ADischargeDistributor.PARAMS_VAR_SUP_60); + avgSub = parameters.get(ADischargeDistributor.PARAMS_AVG_SUB); + varSub = parameters.get(ADischargeDistributor.PARAMS_VAR_SUB); + vSup = parameters.get(ADischargeDistributor.PARAMS_V_SUP); + vSub = parameters.get(ADischargeDistributor.PARAMS_V_SUB); + + /* + * valori fissi solo per test + */ + avgSup10 = 3304.0; + avgSup30 = 3603.0; + avgSup60 = 20981.0; + varSup10 = 2.41E6; + varSup30 = 2.45E6; + varSup60 = 2.26E8; + avgSub = 50555.0; + varSub = 1.47E9; + + double kSub = varSub / avgSub; + double nSub = avgSub / kSub - 1.0; + if (nSub < 0.0) { + varSub = avgSub * avgSub; + } + if (nSub < N_THRESHOLD) { + System.out.println("Nash subsuperficial..."); + nashArraySub = calculateNashDistribution(startDateMillis, endDateMillis, + timeStepMillis, avgSub, varSub, vSub); + } + double kSup = varSup10 / avgSup10; + double nSup = avgSup10 / kSup - 1.0; + if (nSup < 0.0) { + varSup10 = avgSup10 * avgSup10; + } + if (nSup < N_THRESHOLD) { + System.out.println("Nash superficial 10%..."); + nashArraySup10 = calculateNashDistribution(startDateMillis, endDateMillis, + timeStepMillis, avgSup10, varSup10, vSup); + } + kSup = varSup30 / avgSup30; + nSup = avgSup30 / kSup - 1.0; + if (nSup < 0.0) { + varSup30 = avgSup30 * avgSup30; + } + if (nSup < N_THRESHOLD) { + System.out.println("Nash superficial 30%..."); + nashArraySup30 = calculateNashDistribution(startDateMillis, endDateMillis, + timeStepMillis, avgSup30, varSup30, vSup); + } + kSup = varSup60 / avgSup60; + nSup = avgSup60 / kSup - 1.0; + if (nSup < 0.0) { + varSup60 = avgSup60 * avgSup60; + } + if (nSup < N_THRESHOLD) { + System.out.println("Nash superficial 60%..."); + nashArraySup60 = calculateNashDistribution(startDateMillis, endDateMillis, + timeStepMillis, avgSup60, varSup60, vSup); + } + + } + + private double[] calculateNashDistribution( long startDateMillis, long endDateMillis, + long timeStepMillis, double avg, double var, double v ) { + double k = var / avg; + double n = avg * avg / var; + double sum = 0.0; + double runningTime = 0.0; + double timeStepHours = ((double) timeStepMillis) / 1000.0 / 3600.0; + double endTime = ((double) (endDateMillis - startDateMillis - timeStepMillis)) / 1000.0 / 3600.0; + + double deltaD = timeStepHours * v * 3600.0; + List nashList = new ArrayList(); + while( sum < 0.96 && runningTime <= endTime ) { + // t is in hours + double t = runningTime; + // d is in meters, v is in meters/seconds + double d = t * v * 3600.0; + + double nash = (1.0 / (k * ModelsEngine.gamma(n))) * pow(d / k, n - 1.0) * exp(-(d / k)); + double nashy = nash * deltaD; + + nashList.add(nashy); + runningTime = runningTime + timeStepHours; + sum = sum + nashy; + } + double[] nashArray = new double[nashList.size()]; + for( int i = 0; i < nashArray.length; i++ ) { + nashArray[i] = nashList.get(i); + } + System.out.println("IUH calculated"); + return nashArray; + } + + protected void distributeIncomingSuperficialDischarge( double superficialDischarge, + double saturatedAreaPercentage, long currentTimeInMillis ) { + double kSup; + double nSup; + double avg; + if (saturatedAreaPercentage >= 0.0 && saturatedAreaPercentage <= 0.2) { + avg = avgSup10; + kSup = varSup10 / avgSup10; + nSup = avgSup10 / kSup - 1.0; + currentSup = nashArraySup10; + } else if (saturatedAreaPercentage > 0.2 && saturatedAreaPercentage <= 0.5) { + avg = avgSup30; + kSup = varSup30 / avgSup30; + nSup = avgSup30 / kSup - 1.0; + currentSup = nashArraySup30; + } else if (saturatedAreaPercentage > 0.5 && saturatedAreaPercentage <= 1.0) { + avg = avgSup60; + kSup = varSup60 / avgSup60; + nSup = avgSup60 / kSup - 1.0; + currentSup = nashArraySup60; + } else { + throw new IllegalArgumentException( + "The saturated area percentage has to be between 0 and 1. Current value is: " + + saturatedAreaPercentage); + } + + if (nSup > N_THRESHOLD) { + double t_seconds = avg / vSup; + currentTimeInMillis = currentTimeInMillis + (long) t_seconds * 1000; + if (currentTimeInMillis > endDateMillis - timeStepMillis) { + currentTimeInMillis = endDateMillis - timeStepMillis; + } + int qArrayIndex = indexFromTimeInMillis(currentTimeInMillis); + superficialDischargeArray[qArrayIndex] = superficialDischargeArray[qArrayIndex] + + superficialDischarge; + } else { + /* + * If the current time is one of the global model timesteps, + * we ADD the nash distributed discharge to the global + * discharge array (case A). In this case the index of the global array + * has to depend on the global time steps, which is why it is calculated + * only in this case. + * + * The case B occurs when the model iterates inside a global timestep + * to gain convergency on the discharge. In this case the discharge + * will be SUBSTITUTED, which means that it first the cintribution of + * the previous LOCAL timestep will be SUBTRACTED from the global array + * and then the current contribution will be ADDED at the same position + * as defined in the initial superficialArrayIndex (i.e. folloing the + * global timing mechanism). + */ + double[] currentContribution = new double[currentSup.length]; + for( int i = 0; i < currentSup.length; i++ ) { + currentContribution[i] = currentSup[i] * superficialDischarge; + } + int nashSize = currentSup.length; + if (currentTimeInMillis == previousSuperficialTimeInMillis + timeStepMillis + || previousSuperficialTimeInMillis == -1) { + // case A + superficialArrayIndex = indexFromTimeInMillis(currentTimeInMillis); + for( int i = 0; i < nashSize; i++ ) { + int j = superficialArrayIndex + i; + if (j > superficialDischargeArray.length - 1) { + break; + } + superficialDischargeArray[j] = superficialDischargeArray[j] + + currentContribution[i]; + } + previousSuperficialTimeInMillis = currentTimeInMillis; + } else { + // case B + for( int i = 0; i < nashSize; i++ ) { + int j = superficialArrayIndex + i; + if (j > superficialDischargeArray.length - 1) { + break; + } + if (i < previousSuperficialContribution.length) { + superficialDischargeArray[j] = superficialDischargeArray[j] + - previousSuperficialContribution[i]; + } + if (i < currentContribution.length) { + superficialDischargeArray[j] = superficialDischargeArray[j] + + currentContribution[i]; + } + } + } + previousSuperficialContribution = currentContribution; + } + } + + protected void distributeIncomingSubSuperficialDischarge( double subSuperficialDischarge, + double saturatedAreaPercentage, long currentTimeInMillis ) { + double kSub = varSub / avgSub; + double nSub = avgSub / kSub - 1.0; + if (nSub < 0.0) { + nSub = 0.0; + kSub = avgSub; + double var = avgSub * avgSub; + nashArraySub = calculateNashDistribution(startDateMillis, endDateMillis, + timeStepMillis, avgSub, var, vSub); + } + + if (nSub > N_THRESHOLD) { + double t_seconds = avgSub / vSub; + currentTimeInMillis = currentTimeInMillis + (long) t_seconds * 1000; + if (currentTimeInMillis > endDateMillis - timeStepMillis) { + currentTimeInMillis = endDateMillis - timeStepMillis; + } + int qArrayIndex = indexFromTimeInMillis(currentTimeInMillis); + subSuperficialDischargeArray[qArrayIndex] = subSuperficialDischargeArray[qArrayIndex] + + subSuperficialDischarge; + } else { + /* + * See comments about case A and B up in the superficial method. + */ + double[] currentContribution = new double[nashArraySub.length]; + for( int i = 0; i < nashArraySub.length; i++ ) { + currentContribution[i] = nashArraySub[i] * subSuperficialDischarge; + } + int nashSize = nashArraySub.length; + if (currentTimeInMillis == previousSubSuperficialTimeInMillis + timeStepMillis + || previousSubSuperficialTimeInMillis == -1) { + subSuperficialArrayIndex = indexFromTimeInMillis(currentTimeInMillis); + // case A + for( int i = 0; i < nashSize; i++ ) { + int j = subSuperficialArrayIndex + i; + if (j > subSuperficialDischargeArray.length - 1) { + break; + } + subSuperficialDischargeArray[j] = subSuperficialDischargeArray[j] + + currentContribution[i]; + } + previousSubSuperficialTimeInMillis = currentTimeInMillis; + } else { + // case B + for( int i = 0; i < nashSize; i++ ) { + int j = subSuperficialArrayIndex + i; + if (j > subSuperficialDischargeArray.length - 1) { + break; + } + if (i < previousSubSuperficialContribution.length) { + subSuperficialDischargeArray[j] = subSuperficialDischargeArray[j] + - previousSubSuperficialContribution[i]; + } + if (i < currentContribution.length) { + subSuperficialDischargeArray[j] = subSuperficialDischargeArray[j] + + currentContribution[i]; + } + } + } + previousSubSuperficialContribution = currentContribution; + } + } + + public static void main( String[] args ) throws Exception { + SimpleDateFormat dF = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + long startDate = dF.parse("2009-05-01 00:00").getTime(); + long endDate = dF.parse("2009-05-31 23:30").getTime(); + long timeStep = 1800000l; + + HashMap params = new HashMap(); + params.put(ADischargeDistributor.PARAMS_AVG_SUP_10, 14491.22); + params.put(ADischargeDistributor.PARAMS_AVG_SUP_30, 14491.22); + params.put(ADischargeDistributor.PARAMS_AVG_SUP_60, 14491.22); + params.put(ADischargeDistributor.PARAMS_VAR_SUP_10, 34367480.0); + params.put(ADischargeDistributor.PARAMS_VAR_SUP_30, 34367480.0); + params.put(ADischargeDistributor.PARAMS_VAR_SUP_60, 34367480.0); + params.put(ADischargeDistributor.PARAMS_AVG_SUB, 14491.22); + params.put(ADischargeDistributor.PARAMS_VAR_SUB, 34367480.0); + params.put(ADischargeDistributor.PARAMS_V_SUP, 2.0); + params.put(ADischargeDistributor.PARAMS_V_SUB, 0.1); + + ADischargeDistributor dDistr = ADischargeDistributor.createDischargeDistributor( + ADischargeDistributor.DISTRIBUTOR_TYPE_NASH, startDate, endDate, timeStep, params); + + double q = 100.0; + + long runningTime = startDate; + while( runningTime < endDate ) { + double newq = dDistr.calculateSuperficialDischarge(q, 0.15, runningTime); + runningTime = runningTime + timeStep; + System.out.println(newq); + } + + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/RungeKuttaFelberg.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/RungeKuttaFelberg.java index 50c45b2ad..620d06c31 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/RungeKuttaFelberg.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/duffy/RungeKuttaFelberg.java @@ -1,332 +1,332 @@ -/* -CUENCAS is a River Network Oriented GIS -Copyright (C) 2005 Ricardo Mantilla - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -/* - * RKF.java - * - * Created on November 11, 2001, 10:23 AM - */ - -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; - -import java.io.IOException; - -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.math.NumericsUtilities; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.Adige; -import org.joda.time.DateTime; - -/** - * An implementation of the Runge-Kutta-Felberg algorithm for solving non-linear ordinary - * differential equations. It uses a time step control algorithm to avoid numerical errors while - * solving the equations - * - * @author Ricardo Mantilla - */ -public class RungeKuttaFelberg { - - private DuffyModel duffy; - /** - * An array containing the value of the function that was last calculated by the RKF algoritm - */ - private double[] finalCond; - private double epsilon; - private double basicTimeStepInMinutes = 10. / 60.; - // private double[] a = {0., 1. / 5., 3. / 10., 3. / 5., 1., 7. / 8.}; - private double[][] b = {{0.}, {1. / 5.}, {3. / 40., 9. / 40.}, {3. / 10., -9. / 10., 6. / 5.}, - {-11. / 54., 5. / 2., -70. / 27., 35. / 27.}, - {1631. / 55296., 175. / 512., 575. / 13824., 44275. / 110592., 253. / 4096.}}; - - private double[] c = {37. / 378., 0., 250. / 621., 125. / 594., 0., 512. / 1771.}; - private double[] cStar = {2825. / 27648., 0., 18575. / 48384., 13525. / 55296., 277. / 14336., 1. / 4.}; - - private final boolean doLog; - - private boolean isAtFinalSubtimestep = true; - private IJGTProgressMonitor outputStream; - - /** - * Creates new RKF - * - * @param fu The differential equation to solve described by a {@link IBasicFunction} - * @param eps The value error allowed by the step forward algorithm - * @param basTs The step size - * @param doLog - */ - public RungeKuttaFelberg( DuffyModel fu, double eps, double basTs, IJGTProgressMonitor out, boolean doLog ) { - duffy = fu; - epsilon = eps; - basicTimeStepInMinutes = basTs; - this.outputStream = out; - this.doLog = doLog; - } - - /** - * Returns the value of the function described by differential equations in the next time step - * - * @param currentTimeInMinutes The current time - * @param initialConditions The value of the initial condition - * @param timeStepInMinutes The desired step size - * @param finalize A boolean indicating in the timeStep provided is final or if it needs to be - * refined - * @param currentSolution - * @param rainArray - * @param etpArray - */ - private void step( double currentTimeInMinutes, double[] initialConditions, double timeStepInMinutes, boolean finalize, - CurrentTimestepSolution currentSolution, double[] rainArray, double[] etpArray ) { - - double[] carrier = new double[initialConditions.length]; - - double[] k0 = duffy.eval(currentTimeInMinutes, initialConditions, rainArray, etpArray, false); - for( int i = 0; i < initialConditions.length; i++ ) - carrier[i] = Math.max(0, initialConditions[i] + timeStepInMinutes * b[1][0] * k0[i]); - - double[] k1 = duffy.eval(currentTimeInMinutes, carrier, rainArray, etpArray, false); - for( int i = 0; i < initialConditions.length; i++ ) - carrier[i] = Math.max(0, initialConditions[i] + timeStepInMinutes * (b[2][0] * k0[i] + b[2][1] * k1[i])); - - double[] k2 = duffy.eval(currentTimeInMinutes, carrier, rainArray, etpArray, false); - for( int i = 0; i < initialConditions.length; i++ ) - carrier[i] = Math.max(0, initialConditions[i] + timeStepInMinutes - * (b[3][0] * k0[i] + b[3][1] * k1[i] + b[3][2] * k2[i])); - - double[] k3 = duffy.eval(currentTimeInMinutes, carrier, rainArray, etpArray, false); - for( int i = 0; i < initialConditions.length; i++ ) - carrier[i] = Math.max(0, initialConditions[i] + timeStepInMinutes - * (b[4][0] * k0[i] + b[4][1] * k1[i] + b[4][2] * k2[i] + b[4][3] * k3[i])); - - double[] k4 = duffy.eval(currentTimeInMinutes, carrier, rainArray, etpArray, false); - for( int i = 0; i < initialConditions.length; i++ ) - carrier[i] = Math.max(0, initialConditions[i] + timeStepInMinutes - * (b[5][0] * k0[i] + b[5][1] * k1[i] + b[5][2] * k2[i] + b[5][3] * k3[i] + b[5][4] * k4[i])); - - double[] k5 = duffy.eval(currentTimeInMinutes, carrier, rainArray, etpArray, isAtFinalSubtimestep); - - double[] newY = new double[initialConditions.length]; - for( int i = 0; i < initialConditions.length; i++ ) { - newY[i] = initialConditions[i] + timeStepInMinutes - * (c[0] * k0[i] + c[1] * k1[i] + c[2] * k2[i] + c[3] * k3[i] + c[4] * k4[i] + c[5] * k5[i]); - newY[i] = Math.max(0, newY[i]); - if (Double.isInfinite(newY[i]) || newY[i] != newY[i]) { - throw new ModelsIllegalargumentException("An error occurred during the integration procedure.", this); - } - } - - double[] newYstar = new double[initialConditions.length]; - for( int i = 0; i < initialConditions.length; i++ ) { - newYstar[i] = initialConditions[i] - + timeStepInMinutes - * (cStar[0] * k0[i] + cStar[1] * k1[i] + cStar[2] * k2[i] + cStar[3] * k3[i] + cStar[4] * k4[i] + cStar[5] - * k5[i]); - newYstar[i] = Math.max(0, newYstar[i]); - if (Double.isInfinite(newYstar[i]) || newYstar[i] != newYstar[i]) { - throw new ModelsIllegalargumentException("An error occurred during the integration procedure.", this); - } - } - - double delta = 0; - for( int i = 0; i < initialConditions.length; i++ ) { - if ((newY[i] + newYstar[i]) > 0) - delta = Math.max(delta, Math.abs(2 * (newY[i] - newYstar[i]) / (newY[i] + newYstar[i]))); - } - - double newTimeStepInMinutes = timeStepInMinutes; - - if (finalize) { - currentSolution.newTimeStepInMinutes = newTimeStepInMinutes; - currentSolution.solution = newY; - } else { - double factor; - if (delta != 0.0) { - factor = epsilon / delta; - - if (factor >= 1) - newTimeStepInMinutes = timeStepInMinutes * Math.pow(factor, 0.15); - else - newTimeStepInMinutes = timeStepInMinutes * Math.pow(factor, 0.25); - } else { - factor = 1e8; - newTimeStepInMinutes = timeStepInMinutes * Math.pow(factor, 0.15); - finalize = true; - } - - // System.out.println(" --> "+timeStep+" "+epsilon+" "+Delta+" "+factor+" - // "+newTimeStep+" ("+java.util.Calendar.getInstance().getTime()+")"); - - step(currentTimeInMinutes, initialConditions, newTimeStepInMinutes, true, currentSolution, rainArray, etpArray); - } - - } - - public void printDate( double minutes ) { - double millis = minutes * 1000d * 60d; - System.out.println(new DateTime((long) millis).toString(JGTConstants.utcDateFormatterYYYYMMDDHHMM)); - } - - /** - * Writes (in ascii format) to a specified file the values of the function described by - * differential equations in the the intermidia steps requested to go from the Initial to the - * Final time. This method is very specific for solving equations of flow in a network. It - * prints output for the flow component at all locations. - * - * @param intervalStartTimeInMinutes The initial time of the solution - * @param intervalEndTimeInMinutes The final time of the solution - * @param timeStepInMinutes How often the values are desired - * @param initialConditions The value of the initial condition - * @param etpArray - */ - @SuppressWarnings("nls") - public void solve( DateTime currentTimstamp, int modelTimestepInMinutes, double internalTimestepInMinutes, - double[] initialConditions, double[] rainArray, double[] etpArray ) throws IOException { - isAtFinalSubtimestep = false; - - double intervalStartTimeInMinutes = currentTimstamp.getMillis() / 1000d / 60d; - double intervalEndTimeInMinutes = intervalStartTimeInMinutes + modelTimestepInMinutes; - - // the running time inside the interval - double currentTimeInMinutes = intervalStartTimeInMinutes; - // the end time inside the interval - double targetTimeInMinutes = intervalStartTimeInMinutes; - - // the object holding the iterated solution and internal timestep - CurrentTimestepSolution currentSolution = new CurrentTimestepSolution(); - - while( currentTimeInMinutes < intervalEndTimeInMinutes ) { - /* - * split the user set time interval into smaller intervals of time timeStepInMinutes. - */ - targetTimeInMinutes = currentTimeInMinutes + internalTimestepInMinutes; - while( currentTimeInMinutes < targetTimeInMinutes ) { - /* - * inside step the intervals of time timeStepInMinutes are splitted again in - * intervals that begin with basicTimeStepInMinutes and are changed while iteration. - */ - step(currentTimeInMinutes, initialConditions, basicTimeStepInMinutes, false, currentSolution, rainArray, etpArray); - if (currentTimeInMinutes + currentSolution.newTimeStepInMinutes > targetTimeInMinutes) { - break; - } - basicTimeStepInMinutes = currentSolution.newTimeStepInMinutes; - currentTimeInMinutes += basicTimeStepInMinutes; - currentSolution.newTimeStepInMinutes = currentTimeInMinutes; - initialConditions = currentSolution.solution; - for( int i = 0; i < initialConditions.length; i++ ) { - if (initialConditions[i] != initialConditions[i]) { - throw new ModelsIllegalargumentException("Problems occure during the integration procedure.", this - .getClass().getSimpleName()); - } - } - } - - if (Math.abs(targetTimeInMinutes - intervalEndTimeInMinutes) < .0000001) { - break; - } - - step(currentTimeInMinutes, initialConditions, targetTimeInMinutes - currentTimeInMinutes, true, currentSolution, - rainArray, etpArray); - - if (currentTimeInMinutes + currentSolution.newTimeStepInMinutes >= intervalEndTimeInMinutes) { - break; - } - - if (initialConditions[0] < 1e-3) { - System.out.println("Discharge in outlet less than the threshold."); - break; - } - - basicTimeStepInMinutes = currentSolution.newTimeStepInMinutes; - currentTimeInMinutes += basicTimeStepInMinutes; - currentSolution.newTimeStepInMinutes = currentTimeInMinutes; - initialConditions = currentSolution.solution; - for( int i = 0; i < initialConditions.length; i++ ) { - if (initialConditions[i] != initialConditions[i]) { - throw new ModelsIllegalargumentException("Problems occure during the integration procedure.", this.getClass() - .getSimpleName()); - } - } - - if (doLog) { - outputStream.message("-> " - + new DateTime((long) (currentTimeInMinutes * 60.0 * 1000.0)).toString(Adige.adigeFormatter) + " / " - + new DateTime((long) (intervalEndTimeInMinutes * 60. * 1000.)).toString(Adige.adigeFormatter) - + " Outlet Duffy Discharge: " + initialConditions[0]); - } - // int hillslopeNum = rainArray.length; - // for( int i = 0; i < hillslopeNum; i++ ) { - // System.out.println(i + " Discharge " + initialConditions[i] + " qsub " - // + initialConditions[i + hillslopeNum] + " S1 " - // + initialConditions[i + 2 * hillslopeNum] + " S2 " - // + initialConditions[i + 3 * hillslopeNum] + " rain " + rainArray[i]); - // System.out.println("----------------------"); - // } - // double avg = 0.0; - // for( int i = 0; i < rainArray.length; i++ ) { - // avg = avg + rainArray[i]; - // } - // avg = avg / rainArray.length; - // System.out.println("Outlet Discharge " + initialConditions[0] + " qsub " - // + initialConditions[hillslopeNum] + " S1 " - // + initialConditions[2 * hillslopeNum] + " S2 " - // + initialConditions[3 * hillslopeNum] + " rain " + avg); - - } - - isAtFinalSubtimestep = true; - // - if (NumericsUtilities.dEq(currentTimeInMinutes, intervalEndTimeInMinutes) && initialConditions[0] > 1e-3) { - step(currentTimeInMinutes, initialConditions, intervalEndTimeInMinutes - currentTimeInMinutes - 1. / 60., true, - currentSolution, rainArray, etpArray); - basicTimeStepInMinutes = currentSolution.newTimeStepInMinutes; - currentTimeInMinutes += basicTimeStepInMinutes; - currentSolution.newTimeStepInMinutes = currentTimeInMinutes; - initialConditions = currentSolution.solution; - for( int i = 0; i < initialConditions.length; i++ ) { - if (initialConditions[i] != initialConditions[i]) { - throw new ModelsIllegalargumentException("Problems occure during the integration procedure.", this.getClass() - .getSimpleName()); - } - } - - double sum = 0; - for( double d : rainArray ) { - sum = sum + d; - } - sum = sum / rainArray.length; - int hillslopeNum = rainArray.length; - double currentDischarge = initialConditions[0] + initialConditions[hillslopeNum]; - - outputStream.message("-> " - + new DateTime((long) (currentTimeInMinutes * 60.0 * 1000.0)).toString(Adige.adigeFormatter) + " / " - + new DateTime((long) (intervalEndTimeInMinutes * 60. * 1000.)).toString(Adige.adigeFormatter) + " " - + currentDischarge + " with avg rain: " + sum); - } else { - outputStream.errorMessage("WARNING, UNEXPECTED"); - } - - finalCond = initialConditions; - - } - - public double[] getFinalCond() { - return finalCond; - } - -} +/* +CUENCAS is a River Network Oriented GIS +Copyright (C) 2005 Ricardo Mantilla + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * RKF.java + * + * Created on November 11, 2001, 10:23 AM + */ + +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.duffy; + +import java.io.IOException; + +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.math.NumericsUtilities; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.Adige; +import org.joda.time.DateTime; + +/** + * An implementation of the Runge-Kutta-Felberg algorithm for solving non-linear ordinary + * differential equations. It uses a time step control algorithm to avoid numerical errors while + * solving the equations + * + * @author Ricardo Mantilla + */ +public class RungeKuttaFelberg { + + private DuffyModel duffy; + /** + * An array containing the value of the function that was last calculated by the RKF algoritm + */ + private double[] finalCond; + private double epsilon; + private double basicTimeStepInMinutes = 10. / 60.; + // private double[] a = {0., 1. / 5., 3. / 10., 3. / 5., 1., 7. / 8.}; + private double[][] b = {{0.}, {1. / 5.}, {3. / 40., 9. / 40.}, {3. / 10., -9. / 10., 6. / 5.}, + {-11. / 54., 5. / 2., -70. / 27., 35. / 27.}, + {1631. / 55296., 175. / 512., 575. / 13824., 44275. / 110592., 253. / 4096.}}; + + private double[] c = {37. / 378., 0., 250. / 621., 125. / 594., 0., 512. / 1771.}; + private double[] cStar = {2825. / 27648., 0., 18575. / 48384., 13525. / 55296., 277. / 14336., 1. / 4.}; + + private final boolean doLog; + + private boolean isAtFinalSubtimestep = true; + private IJGTProgressMonitor outputStream; + + /** + * Creates new RKF + * + * @param fu The differential equation to solve described by a {@link IBasicFunction} + * @param eps The value error allowed by the step forward algorithm + * @param basTs The step size + * @param doLog + */ + public RungeKuttaFelberg( DuffyModel fu, double eps, double basTs, IJGTProgressMonitor out, boolean doLog ) { + duffy = fu; + epsilon = eps; + basicTimeStepInMinutes = basTs; + this.outputStream = out; + this.doLog = doLog; + } + + /** + * Returns the value of the function described by differential equations in the next time step + * + * @param currentTimeInMinutes The current time + * @param initialConditions The value of the initial condition + * @param timeStepInMinutes The desired step size + * @param finalize A boolean indicating in the timeStep provided is final or if it needs to be + * refined + * @param currentSolution + * @param rainArray + * @param etpArray + */ + private void step( double currentTimeInMinutes, double[] initialConditions, double timeStepInMinutes, boolean finalize, + CurrentTimestepSolution currentSolution, double[] rainArray, double[] etpArray ) { + + double[] carrier = new double[initialConditions.length]; + + double[] k0 = duffy.eval(currentTimeInMinutes, initialConditions, rainArray, etpArray, false); + for( int i = 0; i < initialConditions.length; i++ ) + carrier[i] = Math.max(0, initialConditions[i] + timeStepInMinutes * b[1][0] * k0[i]); + + double[] k1 = duffy.eval(currentTimeInMinutes, carrier, rainArray, etpArray, false); + for( int i = 0; i < initialConditions.length; i++ ) + carrier[i] = Math.max(0, initialConditions[i] + timeStepInMinutes * (b[2][0] * k0[i] + b[2][1] * k1[i])); + + double[] k2 = duffy.eval(currentTimeInMinutes, carrier, rainArray, etpArray, false); + for( int i = 0; i < initialConditions.length; i++ ) + carrier[i] = Math.max(0, initialConditions[i] + timeStepInMinutes + * (b[3][0] * k0[i] + b[3][1] * k1[i] + b[3][2] * k2[i])); + + double[] k3 = duffy.eval(currentTimeInMinutes, carrier, rainArray, etpArray, false); + for( int i = 0; i < initialConditions.length; i++ ) + carrier[i] = Math.max(0, initialConditions[i] + timeStepInMinutes + * (b[4][0] * k0[i] + b[4][1] * k1[i] + b[4][2] * k2[i] + b[4][3] * k3[i])); + + double[] k4 = duffy.eval(currentTimeInMinutes, carrier, rainArray, etpArray, false); + for( int i = 0; i < initialConditions.length; i++ ) + carrier[i] = Math.max(0, initialConditions[i] + timeStepInMinutes + * (b[5][0] * k0[i] + b[5][1] * k1[i] + b[5][2] * k2[i] + b[5][3] * k3[i] + b[5][4] * k4[i])); + + double[] k5 = duffy.eval(currentTimeInMinutes, carrier, rainArray, etpArray, isAtFinalSubtimestep); + + double[] newY = new double[initialConditions.length]; + for( int i = 0; i < initialConditions.length; i++ ) { + newY[i] = initialConditions[i] + timeStepInMinutes + * (c[0] * k0[i] + c[1] * k1[i] + c[2] * k2[i] + c[3] * k3[i] + c[4] * k4[i] + c[5] * k5[i]); + newY[i] = Math.max(0, newY[i]); + if (Double.isInfinite(newY[i]) || newY[i] != newY[i]) { + throw new ModelsIllegalargumentException("An error occurred during the integration procedure.", this); + } + } + + double[] newYstar = new double[initialConditions.length]; + for( int i = 0; i < initialConditions.length; i++ ) { + newYstar[i] = initialConditions[i] + + timeStepInMinutes + * (cStar[0] * k0[i] + cStar[1] * k1[i] + cStar[2] * k2[i] + cStar[3] * k3[i] + cStar[4] * k4[i] + cStar[5] + * k5[i]); + newYstar[i] = Math.max(0, newYstar[i]); + if (Double.isInfinite(newYstar[i]) || newYstar[i] != newYstar[i]) { + throw new ModelsIllegalargumentException("An error occurred during the integration procedure.", this); + } + } + + double delta = 0; + for( int i = 0; i < initialConditions.length; i++ ) { + if ((newY[i] + newYstar[i]) > 0) + delta = Math.max(delta, Math.abs(2 * (newY[i] - newYstar[i]) / (newY[i] + newYstar[i]))); + } + + double newTimeStepInMinutes = timeStepInMinutes; + + if (finalize) { + currentSolution.newTimeStepInMinutes = newTimeStepInMinutes; + currentSolution.solution = newY; + } else { + double factor; + if (delta != 0.0) { + factor = epsilon / delta; + + if (factor >= 1) + newTimeStepInMinutes = timeStepInMinutes * Math.pow(factor, 0.15); + else + newTimeStepInMinutes = timeStepInMinutes * Math.pow(factor, 0.25); + } else { + factor = 1e8; + newTimeStepInMinutes = timeStepInMinutes * Math.pow(factor, 0.15); + finalize = true; + } + + // System.out.println(" --> "+timeStep+" "+epsilon+" "+Delta+" "+factor+" + // "+newTimeStep+" ("+java.util.Calendar.getInstance().getTime()+")"); + + step(currentTimeInMinutes, initialConditions, newTimeStepInMinutes, true, currentSolution, rainArray, etpArray); + } + + } + + public void printDate( double minutes ) { + double millis = minutes * 1000d * 60d; + System.out.println(new DateTime((long) millis).toString(JGTConstants.utcDateFormatterYYYYMMDDHHMM)); + } + + /** + * Writes (in ascii format) to a specified file the values of the function described by + * differential equations in the the intermidia steps requested to go from the Initial to the + * Final time. This method is very specific for solving equations of flow in a network. It + * prints output for the flow component at all locations. + * + * @param intervalStartTimeInMinutes The initial time of the solution + * @param intervalEndTimeInMinutes The final time of the solution + * @param timeStepInMinutes How often the values are desired + * @param initialConditions The value of the initial condition + * @param etpArray + */ + @SuppressWarnings("nls") + public void solve( DateTime currentTimstamp, int modelTimestepInMinutes, double internalTimestepInMinutes, + double[] initialConditions, double[] rainArray, double[] etpArray ) throws IOException { + isAtFinalSubtimestep = false; + + double intervalStartTimeInMinutes = currentTimstamp.getMillis() / 1000d / 60d; + double intervalEndTimeInMinutes = intervalStartTimeInMinutes + modelTimestepInMinutes; + + // the running time inside the interval + double currentTimeInMinutes = intervalStartTimeInMinutes; + // the end time inside the interval + double targetTimeInMinutes = intervalStartTimeInMinutes; + + // the object holding the iterated solution and internal timestep + CurrentTimestepSolution currentSolution = new CurrentTimestepSolution(); + + while( currentTimeInMinutes < intervalEndTimeInMinutes ) { + /* + * split the user set time interval into smaller intervals of time timeStepInMinutes. + */ + targetTimeInMinutes = currentTimeInMinutes + internalTimestepInMinutes; + while( currentTimeInMinutes < targetTimeInMinutes ) { + /* + * inside step the intervals of time timeStepInMinutes are splitted again in + * intervals that begin with basicTimeStepInMinutes and are changed while iteration. + */ + step(currentTimeInMinutes, initialConditions, basicTimeStepInMinutes, false, currentSolution, rainArray, etpArray); + if (currentTimeInMinutes + currentSolution.newTimeStepInMinutes > targetTimeInMinutes) { + break; + } + basicTimeStepInMinutes = currentSolution.newTimeStepInMinutes; + currentTimeInMinutes += basicTimeStepInMinutes; + currentSolution.newTimeStepInMinutes = currentTimeInMinutes; + initialConditions = currentSolution.solution; + for( int i = 0; i < initialConditions.length; i++ ) { + if (initialConditions[i] != initialConditions[i]) { + throw new ModelsIllegalargumentException("Problems occure during the integration procedure.", this + .getClass().getSimpleName()); + } + } + } + + if (Math.abs(targetTimeInMinutes - intervalEndTimeInMinutes) < .0000001) { + break; + } + + step(currentTimeInMinutes, initialConditions, targetTimeInMinutes - currentTimeInMinutes, true, currentSolution, + rainArray, etpArray); + + if (currentTimeInMinutes + currentSolution.newTimeStepInMinutes >= intervalEndTimeInMinutes) { + break; + } + + if (initialConditions[0] < 1e-3) { + System.out.println("Discharge in outlet less than the threshold."); + break; + } + + basicTimeStepInMinutes = currentSolution.newTimeStepInMinutes; + currentTimeInMinutes += basicTimeStepInMinutes; + currentSolution.newTimeStepInMinutes = currentTimeInMinutes; + initialConditions = currentSolution.solution; + for( int i = 0; i < initialConditions.length; i++ ) { + if (initialConditions[i] != initialConditions[i]) { + throw new ModelsIllegalargumentException("Problems occure during the integration procedure.", this.getClass() + .getSimpleName()); + } + } + + if (doLog) { + outputStream.message("-> " + + new DateTime((long) (currentTimeInMinutes * 60.0 * 1000.0)).toString(Adige.adigeFormatter) + " / " + + new DateTime((long) (intervalEndTimeInMinutes * 60. * 1000.)).toString(Adige.adigeFormatter) + + " Outlet Duffy Discharge: " + initialConditions[0]); + } + // int hillslopeNum = rainArray.length; + // for( int i = 0; i < hillslopeNum; i++ ) { + // System.out.println(i + " Discharge " + initialConditions[i] + " qsub " + // + initialConditions[i + hillslopeNum] + " S1 " + // + initialConditions[i + 2 * hillslopeNum] + " S2 " + // + initialConditions[i + 3 * hillslopeNum] + " rain " + rainArray[i]); + // System.out.println("----------------------"); + // } + // double avg = 0.0; + // for( int i = 0; i < rainArray.length; i++ ) { + // avg = avg + rainArray[i]; + // } + // avg = avg / rainArray.length; + // System.out.println("Outlet Discharge " + initialConditions[0] + " qsub " + // + initialConditions[hillslopeNum] + " S1 " + // + initialConditions[2 * hillslopeNum] + " S2 " + // + initialConditions[3 * hillslopeNum] + " rain " + avg); + + } + + isAtFinalSubtimestep = true; + // + if (NumericsUtilities.dEq(currentTimeInMinutes, intervalEndTimeInMinutes) && initialConditions[0] > 1e-3) { + step(currentTimeInMinutes, initialConditions, intervalEndTimeInMinutes - currentTimeInMinutes - 1. / 60., true, + currentSolution, rainArray, etpArray); + basicTimeStepInMinutes = currentSolution.newTimeStepInMinutes; + currentTimeInMinutes += basicTimeStepInMinutes; + currentSolution.newTimeStepInMinutes = currentTimeInMinutes; + initialConditions = currentSolution.solution; + for( int i = 0; i < initialConditions.length; i++ ) { + if (initialConditions[i] != initialConditions[i]) { + throw new ModelsIllegalargumentException("Problems occure during the integration procedure.", this.getClass() + .getSimpleName()); + } + } + + double sum = 0; + for( double d : rainArray ) { + sum = sum + d; + } + sum = sum / rainArray.length; + int hillslopeNum = rainArray.length; + double currentDischarge = initialConditions[0] + initialConditions[hillslopeNum]; + + outputStream.message("-> " + + new DateTime((long) (currentTimeInMinutes * 60.0 * 1000.0)).toString(Adige.adigeFormatter) + " / " + + new DateTime((long) (intervalEndTimeInMinutes * 60. * 1000.)).toString(Adige.adigeFormatter) + " " + + currentDischarge + " with avg rain: " + sum); + } else { + outputStream.errorMessage("WARNING, UNEXPECTED"); + } + + finalCond = initialConditions; + + } + + public double[] getFinalCond() { + return finalCond; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/utils/AdigeUtilities.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/utils/AdigeUtilities.java index 414aa4426..433d34551 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/utils/AdigeUtilities.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/adige/utils/AdigeUtilities.java @@ -1,308 +1,308 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.utils; - -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.List; - -import org.geotools.feature.FeatureCollection; -import org.geotools.feature.FeatureIterator; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlope; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.PfafstetterNumber; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -/** - * @author Andrea Antonello (www.hydrologis.com) - */ -public class AdigeUtilities { - - /** - * Generates {@link HillSlope}s from the informations gathered in the provided feature layers. - * - * @param netFeatureCollection the network features - * @param hillslopeFeatureCollection the hillslope features - * @param netnumAttr the attribute name of the field connecting the two layers - * @param pfafAttr the net pfafstetter field name - * @param startelevAttr the field name of the start elevation of the net (can be null) - * @param endelevAttr the field name of the end elevation of the net (can be null) - * @param baricenterAttr the field holding the baricenter of the hasin elevation (can be null) - * @param out a printstream for logging - * @return the list of ordered hillslopes, starting from the most downstream one - * @throws Exception - */ - public static List generateHillSlopes( FeatureCollection netFeatureCollection, - FeatureCollection hillslopeFeatureCollection, String netnumAttr, String pfafAttr, - String startelevAttr, String endelevAttr, String baricenterAttr, IJGTProgressMonitor out ) throws Exception { - - SimpleFeatureType fT = netFeatureCollection.getSchema(); - // netnum attribute - int lAttrIndex = fT.indexOf(netnumAttr); - if (lAttrIndex == -1) { - String pattern = "Attribute {0} not found in layer {1}."; - Object[] args = new Object[]{netnumAttr, fT.getTypeName()}; - String newPattern = MessageFormat.format(pattern, args); - throw new IllegalArgumentException(newPattern); - } - // pfafstetter attribute - int pAttrIndex = fT.indexOf(pfafAttr); - if (pAttrIndex == -1) { - String pattern = "Attribute {0} not found in layer {1}."; - Object[] args = new Object[]{pfafAttr, fT.getTypeName()}; - String newPattern = MessageFormat.format(pattern, args); - throw new IllegalArgumentException(newPattern); - } - // net start elevation attribute - int startNetElevAttrIndex = -1; - if (startelevAttr != null) { - startNetElevAttrIndex = fT.indexOf(startelevAttr); - if (startNetElevAttrIndex == -1) { - String pattern = "Attribute {0} not found in layer {1}."; - Object[] args = new Object[]{startelevAttr, fT.getTypeName()}; - String newPattern = MessageFormat.format(pattern, args); - throw new IllegalArgumentException(newPattern.getClass().getSimpleName()); - } - } - // net end elevation attribute - int endNetElevAttrIndex = -1; - if (endelevAttr != null) { - endNetElevAttrIndex = fT.indexOf(endelevAttr); - if (endNetElevAttrIndex == -1) { - String pattern = "Attribute {0} not found in layer {1}."; - Object[] args = new Object[]{endelevAttr, fT.getTypeName()}; - String newPattern = MessageFormat.format(pattern, args); - throw new IllegalArgumentException(newPattern); - } - } - - out.message("Analizing the network layer..."); - List netFeaturesList = new ArrayList(); - List netIdsList = new ArrayList(); - ArrayList netPfaffsList = new ArrayList(); - FeatureIterator featureIterator = netFeatureCollection.features(); - PfafstetterNumber mostDownStreamPNumber = null; - SimpleFeature mostDownStreamNetFeature = null; - Integer mostDownStreamLinkId = -1; - while( featureIterator.hasNext() ) { - SimpleFeature f = (SimpleFeature) featureIterator.next(); - String attribute = (String) f.getAttribute(pAttrIndex); - PfafstetterNumber current = new PfafstetterNumber(attribute); - Integer tmpId = ((Number) f.getAttribute(lAttrIndex)).intValue(); - if (mostDownStreamPNumber == null) { - mostDownStreamPNumber = current; - } else { - if (current.isDownStreamOf(mostDownStreamPNumber)) { - mostDownStreamLinkId = tmpId; - mostDownStreamNetFeature = f; - mostDownStreamPNumber = current; - } - } - netFeaturesList.add(f); - netIdsList.add(tmpId); - netPfaffsList.add(current); - } - featureIterator.close(); - - /* - * search subbasins - */ - out.message("Analyzing the hillslopes layer..."); - SimpleFeatureType ft = hillslopeFeatureCollection.getSchema(); - // netnum attribute on basins - int linkAttrIndexInBasinLayerIndex = ft.indexOf(netnumAttr); - if (linkAttrIndexInBasinLayerIndex == -1) { - String pattern = "Attribute {0} not found in layer {1}."; - Object[] args = new Object[]{netnumAttr, ft.getTypeName()}; - pattern = MessageFormat.format(pattern, args); - throw new IllegalArgumentException(pattern); - } - - // baricenter attribute - int baricenterAttributeIndex = -1; - if (baricenterAttr != null) { - baricenterAttributeIndex = ft.indexOf(baricenterAttr); - if (baricenterAttributeIndex == -1) { - String pattern = "Attribute {0} not found in layer {1}."; - Object[] args = new Object[]{baricenterAttr, ft.getTypeName()}; - pattern = MessageFormat.format(pattern, args); - throw new IllegalArgumentException(pattern); - } - } - - List hillslopeFeaturesList = new ArrayList(); - List hillslopeIdsList = new ArrayList(); - FeatureIterator hillslopeIterator = hillslopeFeatureCollection.features(); - SimpleFeature mostDownstreamHillslopeFeature = null; - while( hillslopeIterator.hasNext() ) { - SimpleFeature f = hillslopeIterator.next(); - Integer linkAttribute = ((Number) f.getAttribute(linkAttrIndexInBasinLayerIndex)).intValue(); - if (mostDownStreamLinkId == linkAttribute) { - mostDownstreamHillslopeFeature = f; - } - hillslopeIdsList.add(linkAttribute); - hillslopeFeaturesList.add(f); - } - /* - * create all the hillslopes and connect them with their net feature and other hillslopes - */ - out.message("Linking together network and hillslopes layers..."); - ArrayList hillslopeElements = new ArrayList(); - IHillSlope mostDownstreamHillslope = null; - if (mostDownStreamPNumber.isEndPiece()) { - Integer basinId = hillslopeIdsList.get(0); - IHillSlope tmpHslp = new HillSlope(mostDownStreamNetFeature, mostDownstreamHillslopeFeature, mostDownStreamPNumber, - basinId.intValue(), baricenterAttributeIndex, startNetElevAttrIndex, endNetElevAttrIndex); - hillslopeElements.add(tmpHslp); - mostDownstreamHillslope = tmpHslp; - } else { - /* - * almost there, now get from the basins list the ones with that netNums - */ - ArrayList selectedNetFeatureList = new ArrayList(); - ArrayList selectedNetId = new ArrayList(); - for( int i = 0; i < hillslopeFeaturesList.size(); i++ ) { - SimpleFeature basinFeature = hillslopeFeaturesList.get(i); - Integer link = hillslopeIdsList.get(i); - for( int j = 0; j < netFeaturesList.size(); j++ ) { - Integer netNum = netIdsList.get(j); - if (netNum.equals(link)) { - SimpleFeature netFeature = netFeaturesList.get(j); - IHillSlope tmpHslp = new HillSlope(netFeature, basinFeature, netPfaffsList.get(j), netNum.intValue(), - baricenterAttributeIndex, startNetElevAttrIndex, endNetElevAttrIndex); - hillslopeElements.add(tmpHslp); - selectedNetFeatureList.add(netFeature); - selectedNetId.add(netNum); - break; - } - } - } - - mostDownStreamPNumber = null; - Integer mostDownStreamNetId = null; - for( SimpleFeature feature : selectedNetFeatureList ) { - String attribute = (String) feature.getAttribute(pAttrIndex); - PfafstetterNumber current = new PfafstetterNumber(attribute); - Integer tmpId = ((Number) feature.getAttribute(lAttrIndex)).intValue(); - if (mostDownStreamPNumber == null) { - mostDownStreamPNumber = current; - } else { - if (current.isDownStreamOf(mostDownStreamPNumber)) { - mostDownStreamNetId = tmpId; - mostDownStreamPNumber = current; - } - } - } - - for( int i = 0; i < hillslopeElements.size(); i++ ) { - Integer hId = hillslopeIdsList.get(i); - if (hId.equals(mostDownStreamNetId)) { - mostDownstreamHillslope = hillslopeElements.get(i); - break; - } - } - if (hillslopeElements.size() == 1) { - mostDownstreamHillslope = hillslopeElements.get(0); - } - - } - - if (mostDownstreamHillslope == null) - throw new RuntimeException(); - HillSlope.connectElements(hillslopeElements); - - List orderedHillslopes = new ArrayList(); - mostDownstreamHillslope.getAllUpstreamElements(orderedHillslopes, null); - - return orderedHillslopes; - - } - - /** - * Method to do the routing of a discharge along the link of {@link IHillSlope}. - * - * @param discharge the discharge to be transported. - * @param hillslope the current hillslope. - * @param routingType the routing type to use: - *
    - *
  • 2 = No Chezi explicitly
  • - *
  • 3 = Chezi explicitly
  • - *
  • 4 = Manning equation
  • - *
- * @return the routing cuencas coefficient. - */ - public static double doRouting( double discharge, IHillSlope hillslope, int routingType ) { - double linkWidth = hillslope.getLinkWidth(8.66, 0.6, 0.0); - double linkLength = hillslope.getLinkLength(); - double linkSlope = hillslope.getLinkSlope(); - double chezLawExpon = -1. / 3.; - double chezLawCoeff = 200. / Math.pow(0.000357911, chezLawExpon); - double linkChezy = hillslope.getLinkChezi(chezLawCoeff, chezLawExpon); - - double K_Q = 0; - - /* ROUTING RATE (K_Q) and CHANNEL VELOCITY (vc) */ - // System.out.println(routingtype); - switch( routingType ) { - case 2: /* No Chezi explicitly */ - K_Q = 8.796 * Math.pow(discharge, 1 / 3.) * Math.pow(linkWidth, -1 / 3.) * Math.pow(linkLength, -1) - * Math.pow(linkSlope, 2 / 9.); // units - // 1/s*/ - break; - - case 3: /* Chezi explicit */ - // System.out.println("Chezy"); - K_Q = 3 / 2. * Math.pow(discharge, 1. / 3.) * Math.pow(linkChezy, 2. / 3.) * Math.pow(linkWidth, -1. / 3.) - * Math.pow(linkLength, -1) * Math.pow(linkSlope, 1. / 3.); // units 1/s - break; - - case 4: /* Mannings equation */ - double flowdepth = (1. / 3.) * Math.pow(discharge, 1. / 3.); // depth - // m, - // input m^3/s; - // general - // observed - // relation for - // gc from - // molnar and - // ramirez 1998 - double hydrad = (flowdepth * linkWidth) / (2.f * flowdepth + linkWidth); // m - double mannings_n = 1; // 0.030f; // mannings n suggested by Jason via his - // observations at - // Whitewater for high flows. Low flows will have higher - // n ... up to 2x more. - K_Q = (Math.pow(hydrad, 2. / 3.) * Math.pow(linkSlope, 1 / 2.) / mannings_n) // m/s - // ; - // this - // term - // is v - // from - // mannings - // eqn - * Math.pow(linkLength, -1); // 1/s - break; - - } - - return K_Q; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.utils; + +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; + +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureIterator; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.HillSlope; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.IHillSlope; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.core.PfafstetterNumber; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +/** + * @author Andrea Antonello (www.hydrologis.com) + */ +public class AdigeUtilities { + + /** + * Generates {@link HillSlope}s from the informations gathered in the provided feature layers. + * + * @param netFeatureCollection the network features + * @param hillslopeFeatureCollection the hillslope features + * @param netnumAttr the attribute name of the field connecting the two layers + * @param pfafAttr the net pfafstetter field name + * @param startelevAttr the field name of the start elevation of the net (can be null) + * @param endelevAttr the field name of the end elevation of the net (can be null) + * @param baricenterAttr the field holding the baricenter of the hasin elevation (can be null) + * @param out a printstream for logging + * @return the list of ordered hillslopes, starting from the most downstream one + * @throws Exception + */ + public static List generateHillSlopes( FeatureCollection netFeatureCollection, + FeatureCollection hillslopeFeatureCollection, String netnumAttr, String pfafAttr, + String startelevAttr, String endelevAttr, String baricenterAttr, IJGTProgressMonitor out ) throws Exception { + + SimpleFeatureType fT = netFeatureCollection.getSchema(); + // netnum attribute + int lAttrIndex = fT.indexOf(netnumAttr); + if (lAttrIndex == -1) { + String pattern = "Attribute {0} not found in layer {1}."; + Object[] args = new Object[]{netnumAttr, fT.getTypeName()}; + String newPattern = MessageFormat.format(pattern, args); + throw new IllegalArgumentException(newPattern); + } + // pfafstetter attribute + int pAttrIndex = fT.indexOf(pfafAttr); + if (pAttrIndex == -1) { + String pattern = "Attribute {0} not found in layer {1}."; + Object[] args = new Object[]{pfafAttr, fT.getTypeName()}; + String newPattern = MessageFormat.format(pattern, args); + throw new IllegalArgumentException(newPattern); + } + // net start elevation attribute + int startNetElevAttrIndex = -1; + if (startelevAttr != null) { + startNetElevAttrIndex = fT.indexOf(startelevAttr); + if (startNetElevAttrIndex == -1) { + String pattern = "Attribute {0} not found in layer {1}."; + Object[] args = new Object[]{startelevAttr, fT.getTypeName()}; + String newPattern = MessageFormat.format(pattern, args); + throw new IllegalArgumentException(newPattern.getClass().getSimpleName()); + } + } + // net end elevation attribute + int endNetElevAttrIndex = -1; + if (endelevAttr != null) { + endNetElevAttrIndex = fT.indexOf(endelevAttr); + if (endNetElevAttrIndex == -1) { + String pattern = "Attribute {0} not found in layer {1}."; + Object[] args = new Object[]{endelevAttr, fT.getTypeName()}; + String newPattern = MessageFormat.format(pattern, args); + throw new IllegalArgumentException(newPattern); + } + } + + out.message("Analizing the network layer..."); + List netFeaturesList = new ArrayList(); + List netIdsList = new ArrayList(); + ArrayList netPfaffsList = new ArrayList(); + FeatureIterator featureIterator = netFeatureCollection.features(); + PfafstetterNumber mostDownStreamPNumber = null; + SimpleFeature mostDownStreamNetFeature = null; + Integer mostDownStreamLinkId = -1; + while( featureIterator.hasNext() ) { + SimpleFeature f = (SimpleFeature) featureIterator.next(); + String attribute = (String) f.getAttribute(pAttrIndex); + PfafstetterNumber current = new PfafstetterNumber(attribute); + Integer tmpId = ((Number) f.getAttribute(lAttrIndex)).intValue(); + if (mostDownStreamPNumber == null) { + mostDownStreamPNumber = current; + } else { + if (current.isDownStreamOf(mostDownStreamPNumber)) { + mostDownStreamLinkId = tmpId; + mostDownStreamNetFeature = f; + mostDownStreamPNumber = current; + } + } + netFeaturesList.add(f); + netIdsList.add(tmpId); + netPfaffsList.add(current); + } + featureIterator.close(); + + /* + * search subbasins + */ + out.message("Analyzing the hillslopes layer..."); + SimpleFeatureType ft = hillslopeFeatureCollection.getSchema(); + // netnum attribute on basins + int linkAttrIndexInBasinLayerIndex = ft.indexOf(netnumAttr); + if (linkAttrIndexInBasinLayerIndex == -1) { + String pattern = "Attribute {0} not found in layer {1}."; + Object[] args = new Object[]{netnumAttr, ft.getTypeName()}; + pattern = MessageFormat.format(pattern, args); + throw new IllegalArgumentException(pattern); + } + + // baricenter attribute + int baricenterAttributeIndex = -1; + if (baricenterAttr != null) { + baricenterAttributeIndex = ft.indexOf(baricenterAttr); + if (baricenterAttributeIndex == -1) { + String pattern = "Attribute {0} not found in layer {1}."; + Object[] args = new Object[]{baricenterAttr, ft.getTypeName()}; + pattern = MessageFormat.format(pattern, args); + throw new IllegalArgumentException(pattern); + } + } + + List hillslopeFeaturesList = new ArrayList(); + List hillslopeIdsList = new ArrayList(); + FeatureIterator hillslopeIterator = hillslopeFeatureCollection.features(); + SimpleFeature mostDownstreamHillslopeFeature = null; + while( hillslopeIterator.hasNext() ) { + SimpleFeature f = hillslopeIterator.next(); + Integer linkAttribute = ((Number) f.getAttribute(linkAttrIndexInBasinLayerIndex)).intValue(); + if (mostDownStreamLinkId == linkAttribute) { + mostDownstreamHillslopeFeature = f; + } + hillslopeIdsList.add(linkAttribute); + hillslopeFeaturesList.add(f); + } + /* + * create all the hillslopes and connect them with their net feature and other hillslopes + */ + out.message("Linking together network and hillslopes layers..."); + ArrayList hillslopeElements = new ArrayList(); + IHillSlope mostDownstreamHillslope = null; + if (mostDownStreamPNumber.isEndPiece()) { + Integer basinId = hillslopeIdsList.get(0); + IHillSlope tmpHslp = new HillSlope(mostDownStreamNetFeature, mostDownstreamHillslopeFeature, mostDownStreamPNumber, + basinId.intValue(), baricenterAttributeIndex, startNetElevAttrIndex, endNetElevAttrIndex); + hillslopeElements.add(tmpHslp); + mostDownstreamHillslope = tmpHslp; + } else { + /* + * almost there, now get from the basins list the ones with that netNums + */ + ArrayList selectedNetFeatureList = new ArrayList(); + ArrayList selectedNetId = new ArrayList(); + for( int i = 0; i < hillslopeFeaturesList.size(); i++ ) { + SimpleFeature basinFeature = hillslopeFeaturesList.get(i); + Integer link = hillslopeIdsList.get(i); + for( int j = 0; j < netFeaturesList.size(); j++ ) { + Integer netNum = netIdsList.get(j); + if (netNum.equals(link)) { + SimpleFeature netFeature = netFeaturesList.get(j); + IHillSlope tmpHslp = new HillSlope(netFeature, basinFeature, netPfaffsList.get(j), netNum.intValue(), + baricenterAttributeIndex, startNetElevAttrIndex, endNetElevAttrIndex); + hillslopeElements.add(tmpHslp); + selectedNetFeatureList.add(netFeature); + selectedNetId.add(netNum); + break; + } + } + } + + mostDownStreamPNumber = null; + Integer mostDownStreamNetId = null; + for( SimpleFeature feature : selectedNetFeatureList ) { + String attribute = (String) feature.getAttribute(pAttrIndex); + PfafstetterNumber current = new PfafstetterNumber(attribute); + Integer tmpId = ((Number) feature.getAttribute(lAttrIndex)).intValue(); + if (mostDownStreamPNumber == null) { + mostDownStreamPNumber = current; + } else { + if (current.isDownStreamOf(mostDownStreamPNumber)) { + mostDownStreamNetId = tmpId; + mostDownStreamPNumber = current; + } + } + } + + for( int i = 0; i < hillslopeElements.size(); i++ ) { + Integer hId = hillslopeIdsList.get(i); + if (hId.equals(mostDownStreamNetId)) { + mostDownstreamHillslope = hillslopeElements.get(i); + break; + } + } + if (hillslopeElements.size() == 1) { + mostDownstreamHillslope = hillslopeElements.get(0); + } + + } + + if (mostDownstreamHillslope == null) + throw new RuntimeException(); + HillSlope.connectElements(hillslopeElements); + + List orderedHillslopes = new ArrayList(); + mostDownstreamHillslope.getAllUpstreamElements(orderedHillslopes, null); + + return orderedHillslopes; + + } + + /** + * Method to do the routing of a discharge along the link of {@link IHillSlope}. + * + * @param discharge the discharge to be transported. + * @param hillslope the current hillslope. + * @param routingType the routing type to use: + *
    + *
  • 2 = No Chezi explicitly
  • + *
  • 3 = Chezi explicitly
  • + *
  • 4 = Manning equation
  • + *
+ * @return the routing cuencas coefficient. + */ + public static double doRouting( double discharge, IHillSlope hillslope, int routingType ) { + double linkWidth = hillslope.getLinkWidth(8.66, 0.6, 0.0); + double linkLength = hillslope.getLinkLength(); + double linkSlope = hillslope.getLinkSlope(); + double chezLawExpon = -1. / 3.; + double chezLawCoeff = 200. / Math.pow(0.000357911, chezLawExpon); + double linkChezy = hillslope.getLinkChezi(chezLawCoeff, chezLawExpon); + + double K_Q = 0; + + /* ROUTING RATE (K_Q) and CHANNEL VELOCITY (vc) */ + // System.out.println(routingtype); + switch( routingType ) { + case 2: /* No Chezi explicitly */ + K_Q = 8.796 * Math.pow(discharge, 1 / 3.) * Math.pow(linkWidth, -1 / 3.) * Math.pow(linkLength, -1) + * Math.pow(linkSlope, 2 / 9.); // units + // 1/s*/ + break; + + case 3: /* Chezi explicit */ + // System.out.println("Chezy"); + K_Q = 3 / 2. * Math.pow(discharge, 1. / 3.) * Math.pow(linkChezy, 2. / 3.) * Math.pow(linkWidth, -1. / 3.) + * Math.pow(linkLength, -1) * Math.pow(linkSlope, 1. / 3.); // units 1/s + break; + + case 4: /* Mannings equation */ + double flowdepth = (1. / 3.) * Math.pow(discharge, 1. / 3.); // depth + // m, + // input m^3/s; + // general + // observed + // relation for + // gc from + // molnar and + // ramirez 1998 + double hydrad = (flowdepth * linkWidth) / (2.f * flowdepth + linkWidth); // m + double mannings_n = 1; // 0.030f; // mannings n suggested by Jason via his + // observations at + // Whitewater for high flows. Low flows will have higher + // n ... up to 2x more. + K_Q = (Math.pow(hydrad, 2. / 3.) * Math.pow(linkSlope, 1 / 2.) / mannings_n) // m/s + // ; + // this + // term + // is v + // from + // mannings + // eqn + * Math.pow(linkLength, -1); // 1/s + break; + + } + + return K_Q; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debrisflow/DebrisFlow.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debrisflow/DebrisFlow.java index cf0b956eb..902fabd9d 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debrisflow/DebrisFlow.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debrisflow/DebrisFlow.java @@ -1,371 +1,371 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debrisflow; - -import static java.lang.Math.abs; -import static java.lang.Math.pow; -import static java.lang.Math.round; -import static java.lang.Math.sqrt; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; -import static org.jgrasstools.gears.utils.math.NumericsUtilities.dEq; -import static org.jgrasstools.gears.utils.math.NumericsUtilities.isBetween; -import static org.jgrasstools.gears.utils.math.NumericsUtilities.pythagoras; - -import java.awt.image.WritableRaster; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Random; -import java.util.TreeSet; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.Unit; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; - -import com.vividsolutions.jts.geom.Coordinate; - -@Description("Debris flow area and deposit calculator on fans.") -@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") -@Keywords("Debris, Raster") -@Name("debrisflow") -@Label(JGTConstants.HYDROGEOMORPHOLOGY) -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class DebrisFlow extends JGTModel { - - @Description("The map of elevation.") - @In - public GridCoverage2D inElev = null; - - @Description("The volume of the event to simulate.") - @Unit("m2") - @In - public double pVolume = 4000; - - @Description("The mobility coefficient") - @Unit("-") - @In - public double pMcoeff = 52; - - @Description("The deposit coefficient") - @Unit("-") - @In - public double pDcoeff = 0.06; - - @Description("The start position of the simulation (easting)") - @Unit("m") - @In - public double pEasting = 143; - - @Description("The start position of the simulation (northing)") - @Unit("m") - @In - public double pNorthing = 604; - - @Description("The Montecarlo number.") - @In - public int pMontecarlo = 50; - - @Description("The output inundation map.") - @Out - public GridCoverage2D outMcs = null; - - @Description("The output deposit map.") - @Out - public GridCoverage2D outDepo = null; - - @Execute - public void process() throws Exception { - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - double xRes = regionMap.getXres(); - double yRes = regionMap.getYres(); - double west = regionMap.getWest(); - double east = regionMap.getEast(); - double south = regionMap.getSouth(); - double north = regionMap.getNorth(); - if (!isBetween(pEasting, west, east) || !isBetween(pNorthing, south, north)) { - throw new ModelsIllegalargumentException("Input coordinates have to be within the map boundaries.", this); - } - - double thresArea = pMcoeff * pow(pVolume, (2.0 / 3.0)); - - GridGeometry2D gridGeometry = inElev.getGridGeometry(); - int[] colRow = CoverageUtilities.colRowFromCoordinate(new Coordinate(pEasting, pNorthing), gridGeometry, null); - - RandomIter elevIter = CoverageUtilities.getRandomIterator(inElev); - int startCol = colRow[0]; - int startRow = colRow[1]; - double startValue = elevIter.getSampleDouble(startCol, startRow, 0); - if (isNovalue(startValue)) { - throw new ModelsIllegalargumentException("Input coordinates are on a novalue elevation point.", this); - } - - WritableRaster mcsWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); - WritableRandomIter probIter = RandomIterFactory.createWritable(mcsWR, null); - - Random flatRnd = new Random(); - int processedMc = 0; - for( int mc = 0; mc < pMontecarlo; mc++ ) { - pm.message("Montecarlo n." + mc); - processedMc = mc; - /* - * for every Montecarlo loop, get a flow path - */ - int centerCol = startCol; - int centerRow = startRow; - - TreeSet touchedPoints = new TreeSet(); - touchedPoints.add(new Point(centerCol, centerRow)); - - boolean doStop = false; - // cicle over every cell neighbours along the way - Random randomGenerator = new Random();// -System.currentTimeMillis()); - do { - // System.out.println(centerCol + "/" + centerRow + " --- " + cols + "/" + rows); - double centerValue = elevIter.getSampleDouble(centerCol, centerRow, 0); - - List spList = new ArrayList(); - double slopeSum = 0; - for( int x = -1; x <= 1; x++ ) { - for( int y = -1; y <= 1; y++ ) { - if (x == 0 && y == 0) { - continue; - } - - int tmpCol = centerCol + x; - int tmpRow = centerRow + y; - - if (touchedPoints.contains(new Point(tmpCol, tmpRow))) { - continue; - } - - // if point is outside jump it - if (!isBetween(tmpCol, 0, cols - 1) || !isBetween(tmpRow, 0, rows - 1)) { - continue; - } - - // if point is novalue, jump it - double nextValue = elevIter.getSampleDouble(tmpCol, tmpRow, 0); - if (isNovalue(nextValue)) { - continue; - } - - double distance = pythagoras(abs((tmpCol - centerCol) * xRes), abs((tmpRow - centerRow) * yRes)); - double slope = (nextValue - centerValue) / distance; - - // System.out.println(sp); - - // we take only negative and 0 slope, downhill - if (slope > 0) { - continue; - } - - slope = abs(slope); - - SlopeProbability sp = new SlopeProbability(); - sp.fromCol = centerCol; - sp.fromRow = centerRow; - sp.fromElev = centerValue; - sp.toCol = tmpCol; - sp.toRow = tmpRow; - sp.toElev = nextValue; - sp.slope = slope; - slopeSum = slopeSum + slope; - spList.add(sp); - } - } - - if (spList.size() == 0) { - /* - * touched border or slope is not negative - */ - doStop = true; - } else { - - // get a random number between 0 and 1 - double random = randomGenerator.nextDouble(); - - if (spList.size() == 1) { - // direction is only one - SlopeProbability sp = spList.get(0); - centerCol = sp.toCol; - centerRow = sp.toRow; - } else { - Collections.sort(spList); - - /* - * case in which the slopes are all 0 - */ - if (dEq(slopeSum, 0.0)) { - // choose a random and go on - int size = spList.size(); - - double rnd = flatRnd.nextDouble(); - int index = (int) round(rnd * size) - 1; - if (index < 0) - index = 0; - SlopeProbability sp = spList.get(index); - centerCol = sp.toCol; - centerRow = sp.toRow; - } - /* - * normal case in which the slopes have a value - */ - else { - // cumulate the probability - for( int i = 0; i < spList.size(); i++ ) { - SlopeProbability sp = spList.get(i); - double p = sp.slope / slopeSum; - sp.probability = p; - - if (i != 0) { - SlopeProbability tmpSp = spList.get(i - 1); - sp.probability = sp.probability + tmpSp.probability; - } - } - - for( int i = 1; i < spList.size(); i++ ) { - SlopeProbability sp1 = spList.get(i - 1); - SlopeProbability sp2 = spList.get(i); - - // if (random < sp1.probability) { - if (random < sp1.probability) { - centerCol = sp1.toCol; - centerRow = sp1.toRow; - break; - // } else if (random >= sp1.probability && random < - // sp2.probability) - // { - } else if (random >= sp1.probability && random < sp2.probability) { - centerCol = sp2.toCol; - centerRow = sp2.toRow; - break; - } - } - } - } - touchedPoints.add(new Point(centerCol, centerRow)); - double outValue = probIter.getSampleDouble(centerCol, centerRow, 0); - if (isNovalue(outValue)) { - outValue = 0.0; - } - probIter.setSample(centerCol, centerRow, 0, outValue + 1.0); - } - } while( !doStop ); - - /* - * check if the max area is flooded - */ - int floodedCellNum = 0; - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double value = probIter.getSampleDouble(c, r, 0); - if (isNovalue(value)) { - continue; - } - floodedCellNum++; - } - } - - double floodedArea = floodedCellNum * xRes * yRes; - if (thresArea <= floodedArea) { - break; - } - - } - - double probSum = 0.0; - double validCells = 0.0; - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double prob = probIter.getSampleDouble(c, r, 0); - if (isNovalue(prob)) { - continue; - } - double newProb = prob / (processedMc - 1); - probIter.setSample(c, r, 0, newProb); - probSum = probSum + sqrt(newProb); - validCells++; - } - } - - /* - * calculate deposition - */ - double avgProb = probSum / validCells; - double avgHeight = pDcoeff * pow(pVolume, 1.0 / 3.0); - - WritableRaster depoWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); - WritableRandomIter depoIter = RandomIterFactory.createWritable(depoWR, null); - - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double probValue = probIter.getSampleDouble(c, r, 0); - if (isNovalue(probValue)) { - continue; - } - double depoValue = avgHeight * sqrt(probValue) / avgProb; - depoIter.setSample(c, r, 0, depoValue); - } - } - - outMcs = CoverageUtilities.buildCoverage("mcs", mcsWR, regionMap, inElev.getCoordinateReferenceSystem()); - outDepo = CoverageUtilities.buildCoverage("depo", depoWR, regionMap, inElev.getCoordinateReferenceSystem()); - - } - - public class Point implements Comparable { - public int col; - public int row; - - public Point( int col, int row ) { - this.col = col; - this.row = row; - } - - public int compareTo( Point o ) { - if (col == o.col && row == o.row) { - return 0; - } - return 1; - } - - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debrisflow; + +import static java.lang.Math.abs; +import static java.lang.Math.pow; +import static java.lang.Math.round; +import static java.lang.Math.sqrt; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; +import static org.jgrasstools.gears.utils.math.NumericsUtilities.dEq; +import static org.jgrasstools.gears.utils.math.NumericsUtilities.isBetween; +import static org.jgrasstools.gears.utils.math.NumericsUtilities.pythagoras; + +import java.awt.image.WritableRaster; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; +import java.util.TreeSet; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.Unit; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; + +import com.vividsolutions.jts.geom.Coordinate; + +@Description("Debris flow area and deposit calculator on fans.") +@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") +@Keywords("Debris, Raster") +@Name("debrisflow") +@Label(JGTConstants.HYDROGEOMORPHOLOGY) +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class DebrisFlow extends JGTModel { + + @Description("The map of elevation.") + @In + public GridCoverage2D inElev = null; + + @Description("The volume of the event to simulate.") + @Unit("m2") + @In + public double pVolume = 4000; + + @Description("The mobility coefficient") + @Unit("-") + @In + public double pMcoeff = 52; + + @Description("The deposit coefficient") + @Unit("-") + @In + public double pDcoeff = 0.06; + + @Description("The start position of the simulation (easting)") + @Unit("m") + @In + public double pEasting = 143; + + @Description("The start position of the simulation (northing)") + @Unit("m") + @In + public double pNorthing = 604; + + @Description("The Montecarlo number.") + @In + public int pMontecarlo = 50; + + @Description("The output inundation map.") + @Out + public GridCoverage2D outMcs = null; + + @Description("The output deposit map.") + @Out + public GridCoverage2D outDepo = null; + + @Execute + public void process() throws Exception { + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + double xRes = regionMap.getXres(); + double yRes = regionMap.getYres(); + double west = regionMap.getWest(); + double east = regionMap.getEast(); + double south = regionMap.getSouth(); + double north = regionMap.getNorth(); + if (!isBetween(pEasting, west, east) || !isBetween(pNorthing, south, north)) { + throw new ModelsIllegalargumentException("Input coordinates have to be within the map boundaries.", this); + } + + double thresArea = pMcoeff * pow(pVolume, (2.0 / 3.0)); + + GridGeometry2D gridGeometry = inElev.getGridGeometry(); + int[] colRow = CoverageUtilities.colRowFromCoordinate(new Coordinate(pEasting, pNorthing), gridGeometry, null); + + RandomIter elevIter = CoverageUtilities.getRandomIterator(inElev); + int startCol = colRow[0]; + int startRow = colRow[1]; + double startValue = elevIter.getSampleDouble(startCol, startRow, 0); + if (isNovalue(startValue)) { + throw new ModelsIllegalargumentException("Input coordinates are on a novalue elevation point.", this); + } + + WritableRaster mcsWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); + WritableRandomIter probIter = RandomIterFactory.createWritable(mcsWR, null); + + Random flatRnd = new Random(); + int processedMc = 0; + for( int mc = 0; mc < pMontecarlo; mc++ ) { + pm.message("Montecarlo n." + mc); + processedMc = mc; + /* + * for every Montecarlo loop, get a flow path + */ + int centerCol = startCol; + int centerRow = startRow; + + TreeSet touchedPoints = new TreeSet(); + touchedPoints.add(new Point(centerCol, centerRow)); + + boolean doStop = false; + // cicle over every cell neighbours along the way + Random randomGenerator = new Random();// -System.currentTimeMillis()); + do { + // System.out.println(centerCol + "/" + centerRow + " --- " + cols + "/" + rows); + double centerValue = elevIter.getSampleDouble(centerCol, centerRow, 0); + + List spList = new ArrayList(); + double slopeSum = 0; + for( int x = -1; x <= 1; x++ ) { + for( int y = -1; y <= 1; y++ ) { + if (x == 0 && y == 0) { + continue; + } + + int tmpCol = centerCol + x; + int tmpRow = centerRow + y; + + if (touchedPoints.contains(new Point(tmpCol, tmpRow))) { + continue; + } + + // if point is outside jump it + if (!isBetween(tmpCol, 0, cols - 1) || !isBetween(tmpRow, 0, rows - 1)) { + continue; + } + + // if point is novalue, jump it + double nextValue = elevIter.getSampleDouble(tmpCol, tmpRow, 0); + if (isNovalue(nextValue)) { + continue; + } + + double distance = pythagoras(abs((tmpCol - centerCol) * xRes), abs((tmpRow - centerRow) * yRes)); + double slope = (nextValue - centerValue) / distance; + + // System.out.println(sp); + + // we take only negative and 0 slope, downhill + if (slope > 0) { + continue; + } + + slope = abs(slope); + + SlopeProbability sp = new SlopeProbability(); + sp.fromCol = centerCol; + sp.fromRow = centerRow; + sp.fromElev = centerValue; + sp.toCol = tmpCol; + sp.toRow = tmpRow; + sp.toElev = nextValue; + sp.slope = slope; + slopeSum = slopeSum + slope; + spList.add(sp); + } + } + + if (spList.size() == 0) { + /* + * touched border or slope is not negative + */ + doStop = true; + } else { + + // get a random number between 0 and 1 + double random = randomGenerator.nextDouble(); + + if (spList.size() == 1) { + // direction is only one + SlopeProbability sp = spList.get(0); + centerCol = sp.toCol; + centerRow = sp.toRow; + } else { + Collections.sort(spList); + + /* + * case in which the slopes are all 0 + */ + if (dEq(slopeSum, 0.0)) { + // choose a random and go on + int size = spList.size(); + + double rnd = flatRnd.nextDouble(); + int index = (int) round(rnd * size) - 1; + if (index < 0) + index = 0; + SlopeProbability sp = spList.get(index); + centerCol = sp.toCol; + centerRow = sp.toRow; + } + /* + * normal case in which the slopes have a value + */ + else { + // cumulate the probability + for( int i = 0; i < spList.size(); i++ ) { + SlopeProbability sp = spList.get(i); + double p = sp.slope / slopeSum; + sp.probability = p; + + if (i != 0) { + SlopeProbability tmpSp = spList.get(i - 1); + sp.probability = sp.probability + tmpSp.probability; + } + } + + for( int i = 1; i < spList.size(); i++ ) { + SlopeProbability sp1 = spList.get(i - 1); + SlopeProbability sp2 = spList.get(i); + + // if (random < sp1.probability) { + if (random < sp1.probability) { + centerCol = sp1.toCol; + centerRow = sp1.toRow; + break; + // } else if (random >= sp1.probability && random < + // sp2.probability) + // { + } else if (random >= sp1.probability && random < sp2.probability) { + centerCol = sp2.toCol; + centerRow = sp2.toRow; + break; + } + } + } + } + touchedPoints.add(new Point(centerCol, centerRow)); + double outValue = probIter.getSampleDouble(centerCol, centerRow, 0); + if (isNovalue(outValue)) { + outValue = 0.0; + } + probIter.setSample(centerCol, centerRow, 0, outValue + 1.0); + } + } while( !doStop ); + + /* + * check if the max area is flooded + */ + int floodedCellNum = 0; + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double value = probIter.getSampleDouble(c, r, 0); + if (isNovalue(value)) { + continue; + } + floodedCellNum++; + } + } + + double floodedArea = floodedCellNum * xRes * yRes; + if (thresArea <= floodedArea) { + break; + } + + } + + double probSum = 0.0; + double validCells = 0.0; + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double prob = probIter.getSampleDouble(c, r, 0); + if (isNovalue(prob)) { + continue; + } + double newProb = prob / (processedMc - 1); + probIter.setSample(c, r, 0, newProb); + probSum = probSum + sqrt(newProb); + validCells++; + } + } + + /* + * calculate deposition + */ + double avgProb = probSum / validCells; + double avgHeight = pDcoeff * pow(pVolume, 1.0 / 3.0); + + WritableRaster depoWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); + WritableRandomIter depoIter = RandomIterFactory.createWritable(depoWR, null); + + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double probValue = probIter.getSampleDouble(c, r, 0); + if (isNovalue(probValue)) { + continue; + } + double depoValue = avgHeight * sqrt(probValue) / avgProb; + depoIter.setSample(c, r, 0, depoValue); + } + } + + outMcs = CoverageUtilities.buildCoverage("mcs", mcsWR, regionMap, inElev.getCoordinateReferenceSystem()); + outDepo = CoverageUtilities.buildCoverage("depo", depoWR, regionMap, inElev.getCoordinateReferenceSystem()); + + } + + public class Point implements Comparable { + public int col; + public int row; + + public Point( int col, int row ) { + this.col = col; + this.row = row; + } + + public int compareTo( Point o ) { + if (col == o.col && row == o.row) { + return 0; + } + return 1; + } + + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debristriggers/DebrisTriggerCnr.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debristriggers/DebrisTriggerCnr.java index c95e2fb40..77ac77465 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debristriggers/DebrisTriggerCnr.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debristriggers/DebrisTriggerCnr.java @@ -1,178 +1,178 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debristriggers; - -import static java.lang.Math.pow; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.Unit; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.geomorphology.gradient.Gradient; - -@Description("Module for extraction of debris trigger points along the network following the CNR methodology.") -@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") -@Keywords("Debris, Trigger, Raster") -@Name("debristrigger") -@Label(JGTConstants.HYDROGEOMORPHOLOGY) -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class DebrisTriggerCnr extends JGTModel { - - @Description("The map of elevation.") - @In - public GridCoverage2D inElev = null; - - @Description("The map of the network.") - @In - public GridCoverage2D inNet = null; - - @Description("The map of tca.") - @In - public GridCoverage2D inTca = null; - - @Description("The tca threshold to use (default = 10 km2).") - @Unit("km2") - @In - public double pTcathres = 10; - - @Description("The gradient threshold to use (default = 38 deg).") - @Unit("degree") - @In - public double pGradthres = 38; - - @Description("The trigger map.") - @Out - public GridCoverage2D outTriggers = null; - - @Execute - public void process() throws Exception { - checkNull(inElev, inNet, inTca); - - // calculate gradient map degrees - Gradient gradient = new Gradient(); - gradient.inElev = inElev; - gradient.pMode = 0; - gradient.doDegrees = true; - gradient.pm = pm; - gradient.process(); - GridCoverage2D gradientCoverageDeg = gradient.outSlope; - - // calculate gradient map % - gradient = new Gradient(); - gradient.inElev = inElev; - gradient.pMode = 0; - gradient.doDegrees = false; - gradient.pm = pm; - gradient.process(); - GridCoverage2D gradientCoverageTan = gradient.outSlope; - - // ritaglio della mappa di gradient lungo il reticolo - // idrografico ed estrazione delle sole celle con - // * pendenza minore di 38 gradi - // * area cumulata minore di 10 km2 - - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - double xres = regionMap.getXres(); - double yres = regionMap.getYres(); - - RenderedImage netRI = inNet.getRenderedImage(); - RandomIter netIter = RandomIterFactory.create(netRI, null); - - RenderedImage tcaRI = inTca.getRenderedImage(); - RandomIter tcaIter = RandomIterFactory.create(tcaRI, null); - - RenderedImage gradientDegRI = gradientCoverageDeg.getRenderedImage(); - RandomIter gradientDegIter = RandomIterFactory.create(gradientDegRI, null); - - RenderedImage gradientTanRI = gradientCoverageTan.getRenderedImage(); - RandomIter gradientTanIter = RandomIterFactory.create(gradientTanRI, null); - - WritableRaster outputWR = CoverageUtilities - .createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); - WritableRandomIter outputIter = RandomIterFactory.createWritable(outputWR, null); - - pm.beginTask("Extracting trigger points...", cols); - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double net = netIter.getSampleDouble(c, r, 0); - - // all only along the network - if (!isNovalue(net)) { - double tca = tcaIter.getSampleDouble(c, r, 0); - - // tca in km2 along the net - double tcaKm2 = tca * xres * yres / 1000000; - - // gradient in degrees along the net - double gradientDeg = gradientDegIter.getSampleDouble(c, r, 0); - - // gradient in tan along the net - double gradientTan = gradientTanIter.getSampleDouble(c, r, 0); - - /* - * calculate the trigger threshold: - * - * S = 0.32 * A^-0.2 - * where: - * S = gradient in m/m - * A = tca in km2 - */ - double triggerThreshold = 0.32 * pow(tcaKm2, -0.2); - - if (gradientTan > triggerThreshold // - && gradientDeg < pGradthres // - && tcaKm2 < pTcathres) { - // we have a trigger point - outputIter.setSample(c, r, 0, triggerThreshold); - } - - } - - } - pm.worked(1); - } - pm.done(); - - outTriggers = CoverageUtilities.buildCoverage("triggers", outputWR, regionMap, inElev.getCoordinateReferenceSystem()); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debristriggers; + +import static java.lang.Math.pow; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.Unit; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.geomorphology.gradient.Gradient; + +@Description("Module for extraction of debris trigger points along the network following the CNR methodology.") +@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") +@Keywords("Debris, Trigger, Raster") +@Name("debristrigger") +@Label(JGTConstants.HYDROGEOMORPHOLOGY) +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class DebrisTriggerCnr extends JGTModel { + + @Description("The map of elevation.") + @In + public GridCoverage2D inElev = null; + + @Description("The map of the network.") + @In + public GridCoverage2D inNet = null; + + @Description("The map of tca.") + @In + public GridCoverage2D inTca = null; + + @Description("The tca threshold to use (default = 10 km2).") + @Unit("km2") + @In + public double pTcathres = 10; + + @Description("The gradient threshold to use (default = 38 deg).") + @Unit("degree") + @In + public double pGradthres = 38; + + @Description("The trigger map.") + @Out + public GridCoverage2D outTriggers = null; + + @Execute + public void process() throws Exception { + checkNull(inElev, inNet, inTca); + + // calculate gradient map degrees + Gradient gradient = new Gradient(); + gradient.inElev = inElev; + gradient.pMode = 0; + gradient.doDegrees = true; + gradient.pm = pm; + gradient.process(); + GridCoverage2D gradientCoverageDeg = gradient.outSlope; + + // calculate gradient map % + gradient = new Gradient(); + gradient.inElev = inElev; + gradient.pMode = 0; + gradient.doDegrees = false; + gradient.pm = pm; + gradient.process(); + GridCoverage2D gradientCoverageTan = gradient.outSlope; + + // ritaglio della mappa di gradient lungo il reticolo + // idrografico ed estrazione delle sole celle con + // * pendenza minore di 38 gradi + // * area cumulata minore di 10 km2 + + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + double xres = regionMap.getXres(); + double yres = regionMap.getYres(); + + RenderedImage netRI = inNet.getRenderedImage(); + RandomIter netIter = RandomIterFactory.create(netRI, null); + + RenderedImage tcaRI = inTca.getRenderedImage(); + RandomIter tcaIter = RandomIterFactory.create(tcaRI, null); + + RenderedImage gradientDegRI = gradientCoverageDeg.getRenderedImage(); + RandomIter gradientDegIter = RandomIterFactory.create(gradientDegRI, null); + + RenderedImage gradientTanRI = gradientCoverageTan.getRenderedImage(); + RandomIter gradientTanIter = RandomIterFactory.create(gradientTanRI, null); + + WritableRaster outputWR = CoverageUtilities + .createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); + WritableRandomIter outputIter = RandomIterFactory.createWritable(outputWR, null); + + pm.beginTask("Extracting trigger points...", cols); + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double net = netIter.getSampleDouble(c, r, 0); + + // all only along the network + if (!isNovalue(net)) { + double tca = tcaIter.getSampleDouble(c, r, 0); + + // tca in km2 along the net + double tcaKm2 = tca * xres * yres / 1000000; + + // gradient in degrees along the net + double gradientDeg = gradientDegIter.getSampleDouble(c, r, 0); + + // gradient in tan along the net + double gradientTan = gradientTanIter.getSampleDouble(c, r, 0); + + /* + * calculate the trigger threshold: + * + * S = 0.32 * A^-0.2 + * where: + * S = gradient in m/m + * A = tca in km2 + */ + double triggerThreshold = 0.32 * pow(tcaKm2, -0.2); + + if (gradientTan > triggerThreshold // + && gradientDeg < pGradthres // + && tcaKm2 < pTcathres) { + // we have a trigger point + outputIter.setSample(c, r, 0, triggerThreshold); + } + + } + + } + pm.worked(1); + } + pm.done(); + + outTriggers = CoverageUtilities.buildCoverage("triggers", outputWR, regionMap, inElev.getCoordinateReferenceSystem()); + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debrisvandre/DebrisVandre.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debrisvandre/DebrisVandre.java index 42e85f8a8..ba61a77bd 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debrisvandre/DebrisVandre.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/debrisvandre/DebrisVandre.java @@ -1,661 +1,661 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debrisvandre; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; -import static org.jgrasstools.gears.utils.geometry.GeometryUtilities.distance3d; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.ArrayList; -import java.util.List; -import java.util.TreeSet; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.Unit; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.modules.ModelsEngine; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.StringUtilities; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.Point; - -@Description("Implementation of the Vandre methodology for Debris handling.") -@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") -@Keywords("Debris, Raster") -@Name("debrisvandre") -@Label(JGTConstants.HYDROGEOMORPHOLOGY) -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class DebrisVandre extends JGTModel { - - @Description("The map of elevation.") - @In - public GridCoverage2D inElev = null; - - @Description("The map of flow directions.") - @In - public GridCoverage2D inFlow = null; - - @Description("The map of slope.") - @Unit("degree") - @In - public GridCoverage2D inSlope = null; - - @Description("The map of debris triggering points.") - @In - public GridCoverage2D inTriggers = null; - - @Description("The optional map of soil height.") - @In - public GridCoverage2D inSoil = null; - - @Description("The optional map of the network (needed if the soil map is supplied).") - @In - public GridCoverage2D inNet = null; - - @Description("The flag that defines (in the case of supplied soil map0 if the cumulated should be propagated down the whole network channel.") - @In - public boolean doWholenet = false; - - @Description("The optional maximum distance (used if the soil map is supplied, defaults to 100 meters).") - @In - @Unit("[m]") - public double pDistance = 100.0; - - @Description("An optional point map of obstacles on the network, that can stop the debris path.") - @In - public SimpleFeatureCollection inObstacles = null; - - @Description("The criteria mode to use (0 = Burton/Bathurst = default, 1 = Tn modified Barton/Bathurst).") - @In - public int pMode = 0; - - @Description("The debris paths for every trigger point.") - @Out - public SimpleFeatureCollection outPaths = null; - - @Description("The trigger map, linked to the id of its path.") - @Out - public SimpleFeatureCollection outIndexedTriggers = null; - - @Description("The optional output map of cumulated soil.") - @Out - public GridCoverage2D outSoil = null; - - /** - * Alpha value of the Vandre equation: W = alpha*deltaElev. - */ - private double alphaVandre = 0.4; - - private double minDegreesBurton = 4.0; - private double toggleDegreesBurton = 10.0; - - private double minDegreesModifiedBurton = Double.NEGATIVE_INFINITY; - private double toggleDegreesModifiedBurton = 8.0; - - private double minDegrees = -1.0; - private double toggleDegrees = -1.0; - - private GeometryFactory gf = GeometryUtilities.gf(); - - private TreeSet processedtriggersMap = new TreeSet(); - - private List obstaclesSet = new ArrayList(); - private boolean useObstacles = false; - - /** - * Check if the processing passed through the condition to be between slopes. - * - * If after that condition, the slope gets greater than the angle again - * the delta elevation of the Vandre equation has to be reset to 0. - */ - private boolean wasBetweenSlopes = false; - - private int cols; - - private int rows; - - private WritableRaster outSoilWR; - - private WritableRandomIter outSoilIter; - - private RandomIter soilIter; - private RandomIter netIter; - - private double xRes; - - private double yRes; - - private WritableRandomIter flowIter; - - @Execute - public void process() throws Exception { - checkNull(inFlow, inTriggers, inSlope); - - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); - cols = regionMap.getCols(); - rows = regionMap.getRows(); - xRes = regionMap.getXres(); - yRes = regionMap.getYres(); - - if (inSoil != null) { - if (inNet == null) { - throw new ModelsIllegalargumentException("If the soil map is supplied also the network map is needed.", this); - } - outSoilWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, Double.NaN); - outSoilIter = RandomIterFactory.createWritable(outSoilWR, null); - - RenderedImage soilRI = inSoil.getRenderedImage(); - soilIter = RandomIterFactory.create(soilRI, null); - - RenderedImage netRI = inNet.getRenderedImage(); - netIter = RandomIterFactory.create(netRI, null); - } - switch( pMode ) { - case 1: - minDegrees = minDegreesModifiedBurton; - toggleDegrees = toggleDegreesModifiedBurton; - break; - case 0: - default: - minDegrees = minDegreesBurton; - toggleDegrees = toggleDegreesBurton; - break; - } - - GridGeometry2D gridGeometry = inFlow.getGridGeometry(); - - if (inObstacles != null) { - List obstacleGeometries = FeatureUtilities.featureCollectionToGeometriesList(inObstacles, false, null); - - for( Geometry geometry : obstacleGeometries ) { - java.awt.Point p = new java.awt.Point(); - CoverageUtilities.colRowFromCoordinate(geometry.getCoordinate(), gridGeometry, p); - obstaclesSet.add(p); - } - useObstacles = true; - } - - RenderedImage elevRI = inElev.getRenderedImage(); - RandomIter elevIter = RandomIterFactory.create(elevRI, null); - - RenderedImage flowRI = inFlow.getRenderedImage(); - WritableRaster flowWR = CoverageUtilities.renderedImage2WritableRaster(flowRI, false); - flowIter = RandomIterFactory.createWritable(flowWR, null); - - RenderedImage triggerRI = inTriggers.getRenderedImage(); - RandomIter triggerIter = RandomIterFactory.create(triggerRI, null); - - RenderedImage slopeRI = inSlope.getRenderedImage(); - RandomIter slopeIter = RandomIterFactory.create(slopeRI, null); - - outPaths = FeatureCollections.newCollection(); - outIndexedTriggers = FeatureCollections.newCollection(); - - SimpleFeatureType triggersType = createTriggersType(); - SimpleFeatureType pathsType = createPathType(); - - int featureIndex = 0; - - /* - * FIXME the common paths are extracted many times, not good - */ - pm.beginTask("Extracting paths...", cols); - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double netflowValue = flowIter.getSampleDouble(c, r, 0); - if (isNovalue(netflowValue)) { - continue; - } - if (ModelsEngine.isSourcePixel(flowIter, c, r)) { - // pm.message("NEW SOURCE: " + c + "/" + r); - // start navigating down until you find a debris trigger - int[] flowDirColRow = new int[]{c, r}; - if (!moveToNextTriggerpoint(triggerIter, flowIter, flowDirColRow)) { - // we reached the exit - continue; - } - - int triggerCol = flowDirColRow[0]; - int triggerRow = flowDirColRow[1]; - - /* - * analyze for this trigger, after that, continue with the next one down - */ - double flowValue = 0; - do { - /* - * check if this trigger was already processed, wich can happen if the same path is run - * after a confluence - */ - String triggerId = StringUtilities.joinStrings(null, String.valueOf(triggerCol), "_", - String.valueOf(triggerRow)); - if (processedtriggersMap.add(triggerId)) { - // trigger point has never been touched, process it - - // pm.message(StringUtilities.joinStrings(null, "TRIGGER: ", - // String.valueOf(triggerCol), "/", - // String.valueOf(triggerRow))); - List pathCoordinates = new ArrayList(); - /* - * the pathCondition defines if the current point (pathCoordinates) - * contributes mass to the defined path. - */ - List isBetweenSlopesCondition = new ArrayList(); - Coordinate triggerCoord = CoverageUtilities.coordinateFromColRow(flowDirColRow[0], flowDirColRow[1], - gridGeometry); - double elevationValue = elevIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - flowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - triggerCoord.z = elevationValue; - pathCoordinates.add(triggerCoord); - isBetweenSlopesCondition.add(false); - - /* - * found a trigger, start recording and analizing, once created - */ - double slopeValue; - double triggerValue; - - double lengthWithDegreeLessThanTogglePoint = 0; - double deltaElevWithDegreeLessThanTogglePoint = 0; - wasBetweenSlopes = false; - boolean isMoving = true; // in the triggerpoint we assume it is moving - while( isMoving ) { - // go one down - if (!ModelsEngine.go_downstream(flowDirColRow, flowValue)) - throw new ModelsIllegalargumentException( - "Unable to go downstream. There might be problems in the consistency of your data.", - this); - - if (useObstacles) { - /* - * if we land on a point in which an obstacle stops the path, - * add the point and stop the path geometry. - */ - java.awt.Point currentPoint = new java.awt.Point(flowDirColRow[0], flowDirColRow[1]); - if (obstaclesSet.contains(currentPoint)) { - pm.message("Found obstacle in " + currentPoint.x + "/" + currentPoint.y); - // we are passing an obstacle - break; - } - } - - elevationValue = elevIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - slopeValue = slopeIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - triggerValue = triggerIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - flowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - if (flowValue == 10) { - break; - } - - // pm.message("---> " + flowDirColRow[0] + "/" + flowDirColRow[1]); - - /* - * add the current coordinate to the path - */ - Coordinate tmpCoord = CoverageUtilities.coordinateFromColRow(flowDirColRow[0], flowDirColRow[1], - gridGeometry); - tmpCoord.z = elevationValue; - pathCoordinates.add(tmpCoord); - int size = pathCoordinates.size(); - Coordinate c1 = pathCoordinates.get(size - 1); - Coordinate c2 = pathCoordinates.get(size - 2); - - // length is calculated when slowing down starts (between slopes) - if (wasBetweenSlopes) { - lengthWithDegreeLessThanTogglePoint = lengthWithDegreeLessThanTogglePoint - + distance3d(c1, c2, null); - isBetweenSlopesCondition.add(true); - // when between slopes, delta elev is constant - } else { - deltaElevWithDegreeLessThanTogglePoint = deltaElevWithDegreeLessThanTogglePoint - + Math.abs(c1.z - c2.z); - isBetweenSlopesCondition.add(false); - } - - /* - * and check if we will move on - */ - if (!isNovalue(triggerValue) || slopeValue >= toggleDegrees) { - /* - * in the cases in which we: - * - have a trigger value - * - the slope is major than the toggleDegrees - * - * => we move - */ - isMoving = true; - if (wasBetweenSlopes) { - /* - * if we came into this condition from being between the slopes - * we have to reset the elevation delta used by Vandre, since - * the debris will get speed again. - */ - deltaElevWithDegreeLessThanTogglePoint = 0.0; - lengthWithDegreeLessThanTogglePoint = 0.0; - wasBetweenSlopes = false; - // pm.message("--> RE-ENTERING IN STEEP PART AFTER BETWEEN SLOPES CONDITION"); - } - } else if (slopeValue <= minDegrees) { - /* - * supposed to be stopped if below minDegrees. We add the coordinate - * which will be the last. - */ - isMoving = false; - } else if (slopeValue > minDegrees && slopeValue < toggleDegrees) { - /* - * in this case we need to check on the base of the Vandre equation - * with the chosen criterias - */ - double w = alphaVandre * deltaElevWithDegreeLessThanTogglePoint; - if (lengthWithDegreeLessThanTogglePoint > w) { - // debris stops - isMoving = false; - } else { - isMoving = true; - wasBetweenSlopes = true; - } - } else if (isNovalue(elevationValue) || isNovalue(slopeValue) || isNovalue(triggerValue) - || isNovalue(flowValue)) { - if (isNovalue(elevationValue)) { - pm.errorMessage("Found an elevation novalue along the way"); - } - if (isNovalue(slopeValue)) { - pm.errorMessage("Found a slope novalue along the way"); - } - if (isNovalue(triggerValue)) { - pm.errorMessage("Found a trigger novalue along the way"); - } - if (isNovalue(flowValue)) { - pm.errorMessage("Found a flow novalue along the way"); - } - isMoving = false; - } else { - throw new RuntimeException(); - } - } // while isMoving - - /* - * create the trigger and linked path geometry - */ - if (pathCoordinates.size() > 2) { - Point triggerPoint = gf.createPoint(pathCoordinates.get(0)); - LineString pathLine = gf.createLineString(pathCoordinates.toArray(new Coordinate[0])); - - if (inSoil != null) { - cumulateSoil(pathCoordinates, isBetweenSlopesCondition); - } - - int id = featureIndex; - - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(pathsType); - Object[] values = new Object[]{pathLine, id}; - builder.addAll(values); - SimpleFeature pathFeature = builder.buildFeature(null); - outPaths.add(pathFeature); - - builder = new SimpleFeatureBuilder(triggersType); - values = new Object[]{triggerPoint, id}; - builder.addAll(values); - SimpleFeature triggerFeature = builder.buildFeature(null); - outIndexedTriggers.add(triggerFeature); - - featureIndex++; - } - - } - - /* - * we have to go back and start again from after the trigger that - * created the previous calculus - */ - flowDirColRow[0] = triggerCol; - flowDirColRow[1] = triggerRow; - // search for the next trigger - if (!moveToNextTriggerpoint(triggerIter, flowIter, flowDirColRow)) { - // we reached the exit - break; - } - triggerCol = flowDirColRow[0]; - triggerRow = flowDirColRow[1]; - flowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - } while( flowValue != 10 ); - - } // isSource - - } - pm.worked(1); - } - pm.done(); - - if (inSoil != null) { - /* - * make volume - */ - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double value = outSoilIter.getSampleDouble(c, r, 0); - if (isNovalue(value)) { - continue; - } - value = value * xRes * yRes; - outSoilIter.setSample(c, r, 0, value); - } - } - outSoil = CoverageUtilities.buildCoverage("cumulatedsoil", outSoilWR, regionMap, - inSoil.getCoordinateReferenceSystem()); - } - } - - /** - * Calculate the soil cumulation map along the paths. - * - * @param pathCoordinates the coordinates of the path to be cumulated. - * @param isBetweenSlopesCondition conditions defining in which points the path does - * contribute mass. - */ - private void cumulateSoil( List pathCoordinates, List isBetweenSlopesCondition ) { - // pm.beginTask("Cumulate Soil...", pathCoordinates.size()); - - java.awt.Point point = new java.awt.Point(); - GridGeometry2D gridGeometry = inSoil.getGridGeometry(); - - /* - * check if the trigger is too far to reach the network. - */ - double distance = 0.0; - Coordinate previousCoordinate = null; - for( int i = 0; i < pathCoordinates.size(); i++ ) { - Coordinate coordinate = pathCoordinates.get(i); - CoverageUtilities.colRowFromCoordinate(coordinate, gridGeometry, point); - double net = netIter.getSampleDouble(point.x, point.y, 0); - - if (previousCoordinate != null) { - distance = distance + coordinate.distance(previousCoordinate); - } - previousCoordinate = coordinate; - - if (distance > pDistance) { - // if distance is too large, the path can be discarded - return; - } - - if (!isNovalue(net)) { - // if path gets into the network, it has to be considered - break; - } - } - - /* - * do the actual cumulation map - */ - double previousCumulated = 0.0; - for( int i = 0; i < pathCoordinates.size(); i++ ) { - Coordinate coordinate = pathCoordinates.get(i); - CoverageUtilities.colRowFromCoordinate(coordinate, gridGeometry, point); - - boolean isBetweenSlopes = isBetweenSlopesCondition.get(i); - - double soil = soilIter.getSampleDouble(point.x, point.y, 0); - if (isNovalue(soil)) { - throw new ModelsIllegalargumentException("The soil map needs to cover the whole paths.", this); - } - double net = netIter.getSampleDouble(point.x, point.y, 0); - if (!isNovalue(net)) { - isBetweenSlopes = true; - } - - double cumulated = outSoilIter.getSampleDouble(point.x, point.y, 0); - - if (isBetweenSlopes) { - if (isNovalue(cumulated)) { - outSoilIter.setSample(point.x, point.y, 0, previousCumulated); - } else { - double newCumulated = cumulated + previousCumulated; - outSoilIter.setSample(point.x, point.y, 0, newCumulated); - } - } else { - if (isNovalue(cumulated)) { - double newCumulated = soil + previousCumulated; - outSoilIter.setSample(point.x, point.y, 0, newCumulated); - previousCumulated = newCumulated; - } else { - double newCumulated = cumulated + previousCumulated; - outSoilIter.setSample(point.x, point.y, 0, newCumulated); - } - } - - } - - if (doWholenet) { - Coordinate lastCoordinate = pathCoordinates.get(pathCoordinates.size() - 1); - CoverageUtilities.colRowFromCoordinate(lastCoordinate, gridGeometry, point); - - int[] flowDirColRow = new int[]{point.x, point.y}; - - double net = netIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - double tmpFlowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - - // handle the last point of the path only if it was inside the net... - if (!isNovalue(net)) { - // first move to the next point - if (!ModelsEngine.go_downstream(flowDirColRow, tmpFlowValue)) - throw new ModelsIllegalargumentException("Unable to go downstream: " + flowDirColRow[0] + "/" - + flowDirColRow[1], this); - tmpFlowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - while( !isNovalue(tmpFlowValue) && tmpFlowValue != 10 ) { - double cumulated = outSoilIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - if (isNovalue(cumulated)) { - cumulated = 0.0; - } - double newCumulated = cumulated + previousCumulated; - outSoilIter.setSample(flowDirColRow[0], flowDirColRow[1], 0, newCumulated); - - if (!ModelsEngine.go_downstream(flowDirColRow, tmpFlowValue)) - throw new ModelsIllegalargumentException("Unable to go downstream: " + flowDirColRow[0] + "/" - + flowDirColRow[1], this); - tmpFlowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - } - - } - - } - - } - /** - * Moves the flowDirColRow variable to the next trigger point. - * - * @param triggerIter - * @param flowDirColRow - * @return true if a new trigger was found, false if the exit was reached. - */ - private boolean moveToNextTriggerpoint( RandomIter triggerIter, RandomIter flowIter, int[] flowDirColRow ) { - double tmpFlowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - if (tmpFlowValue == 10) { - return false; - } - if (!ModelsEngine.go_downstream(flowDirColRow, tmpFlowValue)) - throw new ModelsIllegalargumentException("Unable to go downstream: " + flowDirColRow[0] + "/" + flowDirColRow[1], - this); - while( isNovalue(triggerIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0)) ) { - tmpFlowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); - if (tmpFlowValue == 10) { - return false; - } - if (!ModelsEngine.go_downstream(flowDirColRow, tmpFlowValue)) - throw new ModelsIllegalargumentException("Unable to go downstream: " + flowDirColRow[0] + "/" + flowDirColRow[1], - this); - } - return true; - } - - @SuppressWarnings("nls") - private SimpleFeatureType createTriggersType() { - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("indexedtriggers"); - b.setCRS(inFlow.getCoordinateReferenceSystem()); - b.add("the_geom", Point.class); - b.add("PATHID", Integer.class); - SimpleFeatureType type = b.buildFeatureType(); - return type; - } - - @SuppressWarnings("nls") - private SimpleFeatureType createPathType() { - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("debrispaths"); - b.setCRS(inFlow.getCoordinateReferenceSystem()); - b.add("the_geom", LineString.class); - b.add("ID", Integer.class); - SimpleFeatureType type = b.buildFeatureType(); - return type; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debrisvandre; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; +import static org.jgrasstools.gears.utils.geometry.GeometryUtilities.distance3d; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.ArrayList; +import java.util.List; +import java.util.TreeSet; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.Unit; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.modules.ModelsEngine; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.StringUtilities; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.Point; + +@Description("Implementation of the Vandre methodology for Debris handling.") +@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") +@Keywords("Debris, Raster") +@Name("debrisvandre") +@Label(JGTConstants.HYDROGEOMORPHOLOGY) +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class DebrisVandre extends JGTModel { + + @Description("The map of elevation.") + @In + public GridCoverage2D inElev = null; + + @Description("The map of flow directions.") + @In + public GridCoverage2D inFlow = null; + + @Description("The map of slope.") + @Unit("degree") + @In + public GridCoverage2D inSlope = null; + + @Description("The map of debris triggering points.") + @In + public GridCoverage2D inTriggers = null; + + @Description("The optional map of soil height.") + @In + public GridCoverage2D inSoil = null; + + @Description("The optional map of the network (needed if the soil map is supplied).") + @In + public GridCoverage2D inNet = null; + + @Description("The flag that defines (in the case of supplied soil map0 if the cumulated should be propagated down the whole network channel.") + @In + public boolean doWholenet = false; + + @Description("The optional maximum distance (used if the soil map is supplied, defaults to 100 meters).") + @In + @Unit("[m]") + public double pDistance = 100.0; + + @Description("An optional point map of obstacles on the network, that can stop the debris path.") + @In + public SimpleFeatureCollection inObstacles = null; + + @Description("The criteria mode to use (0 = Burton/Bathurst = default, 1 = Tn modified Barton/Bathurst).") + @In + public int pMode = 0; + + @Description("The debris paths for every trigger point.") + @Out + public SimpleFeatureCollection outPaths = null; + + @Description("The trigger map, linked to the id of its path.") + @Out + public SimpleFeatureCollection outIndexedTriggers = null; + + @Description("The optional output map of cumulated soil.") + @Out + public GridCoverage2D outSoil = null; + + /** + * Alpha value of the Vandre equation: W = alpha*deltaElev. + */ + private double alphaVandre = 0.4; + + private double minDegreesBurton = 4.0; + private double toggleDegreesBurton = 10.0; + + private double minDegreesModifiedBurton = Double.NEGATIVE_INFINITY; + private double toggleDegreesModifiedBurton = 8.0; + + private double minDegrees = -1.0; + private double toggleDegrees = -1.0; + + private GeometryFactory gf = GeometryUtilities.gf(); + + private TreeSet processedtriggersMap = new TreeSet(); + + private List obstaclesSet = new ArrayList(); + private boolean useObstacles = false; + + /** + * Check if the processing passed through the condition to be between slopes. + * + * If after that condition, the slope gets greater than the angle again + * the delta elevation of the Vandre equation has to be reset to 0. + */ + private boolean wasBetweenSlopes = false; + + private int cols; + + private int rows; + + private WritableRaster outSoilWR; + + private WritableRandomIter outSoilIter; + + private RandomIter soilIter; + private RandomIter netIter; + + private double xRes; + + private double yRes; + + private WritableRandomIter flowIter; + + @Execute + public void process() throws Exception { + checkNull(inFlow, inTriggers, inSlope); + + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); + cols = regionMap.getCols(); + rows = regionMap.getRows(); + xRes = regionMap.getXres(); + yRes = regionMap.getYres(); + + if (inSoil != null) { + if (inNet == null) { + throw new ModelsIllegalargumentException("If the soil map is supplied also the network map is needed.", this); + } + outSoilWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, Double.NaN); + outSoilIter = RandomIterFactory.createWritable(outSoilWR, null); + + RenderedImage soilRI = inSoil.getRenderedImage(); + soilIter = RandomIterFactory.create(soilRI, null); + + RenderedImage netRI = inNet.getRenderedImage(); + netIter = RandomIterFactory.create(netRI, null); + } + switch( pMode ) { + case 1: + minDegrees = minDegreesModifiedBurton; + toggleDegrees = toggleDegreesModifiedBurton; + break; + case 0: + default: + minDegrees = minDegreesBurton; + toggleDegrees = toggleDegreesBurton; + break; + } + + GridGeometry2D gridGeometry = inFlow.getGridGeometry(); + + if (inObstacles != null) { + List obstacleGeometries = FeatureUtilities.featureCollectionToGeometriesList(inObstacles, false, null); + + for( Geometry geometry : obstacleGeometries ) { + java.awt.Point p = new java.awt.Point(); + CoverageUtilities.colRowFromCoordinate(geometry.getCoordinate(), gridGeometry, p); + obstaclesSet.add(p); + } + useObstacles = true; + } + + RenderedImage elevRI = inElev.getRenderedImage(); + RandomIter elevIter = RandomIterFactory.create(elevRI, null); + + RenderedImage flowRI = inFlow.getRenderedImage(); + WritableRaster flowWR = CoverageUtilities.renderedImage2WritableRaster(flowRI, false); + flowIter = RandomIterFactory.createWritable(flowWR, null); + + RenderedImage triggerRI = inTriggers.getRenderedImage(); + RandomIter triggerIter = RandomIterFactory.create(triggerRI, null); + + RenderedImage slopeRI = inSlope.getRenderedImage(); + RandomIter slopeIter = RandomIterFactory.create(slopeRI, null); + + outPaths = FeatureCollections.newCollection(); + outIndexedTriggers = FeatureCollections.newCollection(); + + SimpleFeatureType triggersType = createTriggersType(); + SimpleFeatureType pathsType = createPathType(); + + int featureIndex = 0; + + /* + * FIXME the common paths are extracted many times, not good + */ + pm.beginTask("Extracting paths...", cols); + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double netflowValue = flowIter.getSampleDouble(c, r, 0); + if (isNovalue(netflowValue)) { + continue; + } + if (ModelsEngine.isSourcePixel(flowIter, c, r)) { + // pm.message("NEW SOURCE: " + c + "/" + r); + // start navigating down until you find a debris trigger + int[] flowDirColRow = new int[]{c, r}; + if (!moveToNextTriggerpoint(triggerIter, flowIter, flowDirColRow)) { + // we reached the exit + continue; + } + + int triggerCol = flowDirColRow[0]; + int triggerRow = flowDirColRow[1]; + + /* + * analyze for this trigger, after that, continue with the next one down + */ + double flowValue = 0; + do { + /* + * check if this trigger was already processed, wich can happen if the same path is run + * after a confluence + */ + String triggerId = StringUtilities.joinStrings(null, String.valueOf(triggerCol), "_", + String.valueOf(triggerRow)); + if (processedtriggersMap.add(triggerId)) { + // trigger point has never been touched, process it + + // pm.message(StringUtilities.joinStrings(null, "TRIGGER: ", + // String.valueOf(triggerCol), "/", + // String.valueOf(triggerRow))); + List pathCoordinates = new ArrayList(); + /* + * the pathCondition defines if the current point (pathCoordinates) + * contributes mass to the defined path. + */ + List isBetweenSlopesCondition = new ArrayList(); + Coordinate triggerCoord = CoverageUtilities.coordinateFromColRow(flowDirColRow[0], flowDirColRow[1], + gridGeometry); + double elevationValue = elevIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + flowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + triggerCoord.z = elevationValue; + pathCoordinates.add(triggerCoord); + isBetweenSlopesCondition.add(false); + + /* + * found a trigger, start recording and analizing, once created + */ + double slopeValue; + double triggerValue; + + double lengthWithDegreeLessThanTogglePoint = 0; + double deltaElevWithDegreeLessThanTogglePoint = 0; + wasBetweenSlopes = false; + boolean isMoving = true; // in the triggerpoint we assume it is moving + while( isMoving ) { + // go one down + if (!ModelsEngine.go_downstream(flowDirColRow, flowValue)) + throw new ModelsIllegalargumentException( + "Unable to go downstream. There might be problems in the consistency of your data.", + this); + + if (useObstacles) { + /* + * if we land on a point in which an obstacle stops the path, + * add the point and stop the path geometry. + */ + java.awt.Point currentPoint = new java.awt.Point(flowDirColRow[0], flowDirColRow[1]); + if (obstaclesSet.contains(currentPoint)) { + pm.message("Found obstacle in " + currentPoint.x + "/" + currentPoint.y); + // we are passing an obstacle + break; + } + } + + elevationValue = elevIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + slopeValue = slopeIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + triggerValue = triggerIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + flowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + if (flowValue == 10) { + break; + } + + // pm.message("---> " + flowDirColRow[0] + "/" + flowDirColRow[1]); + + /* + * add the current coordinate to the path + */ + Coordinate tmpCoord = CoverageUtilities.coordinateFromColRow(flowDirColRow[0], flowDirColRow[1], + gridGeometry); + tmpCoord.z = elevationValue; + pathCoordinates.add(tmpCoord); + int size = pathCoordinates.size(); + Coordinate c1 = pathCoordinates.get(size - 1); + Coordinate c2 = pathCoordinates.get(size - 2); + + // length is calculated when slowing down starts (between slopes) + if (wasBetweenSlopes) { + lengthWithDegreeLessThanTogglePoint = lengthWithDegreeLessThanTogglePoint + + distance3d(c1, c2, null); + isBetweenSlopesCondition.add(true); + // when between slopes, delta elev is constant + } else { + deltaElevWithDegreeLessThanTogglePoint = deltaElevWithDegreeLessThanTogglePoint + + Math.abs(c1.z - c2.z); + isBetweenSlopesCondition.add(false); + } + + /* + * and check if we will move on + */ + if (!isNovalue(triggerValue) || slopeValue >= toggleDegrees) { + /* + * in the cases in which we: + * - have a trigger value + * - the slope is major than the toggleDegrees + * + * => we move + */ + isMoving = true; + if (wasBetweenSlopes) { + /* + * if we came into this condition from being between the slopes + * we have to reset the elevation delta used by Vandre, since + * the debris will get speed again. + */ + deltaElevWithDegreeLessThanTogglePoint = 0.0; + lengthWithDegreeLessThanTogglePoint = 0.0; + wasBetweenSlopes = false; + // pm.message("--> RE-ENTERING IN STEEP PART AFTER BETWEEN SLOPES CONDITION"); + } + } else if (slopeValue <= minDegrees) { + /* + * supposed to be stopped if below minDegrees. We add the coordinate + * which will be the last. + */ + isMoving = false; + } else if (slopeValue > minDegrees && slopeValue < toggleDegrees) { + /* + * in this case we need to check on the base of the Vandre equation + * with the chosen criterias + */ + double w = alphaVandre * deltaElevWithDegreeLessThanTogglePoint; + if (lengthWithDegreeLessThanTogglePoint > w) { + // debris stops + isMoving = false; + } else { + isMoving = true; + wasBetweenSlopes = true; + } + } else if (isNovalue(elevationValue) || isNovalue(slopeValue) || isNovalue(triggerValue) + || isNovalue(flowValue)) { + if (isNovalue(elevationValue)) { + pm.errorMessage("Found an elevation novalue along the way"); + } + if (isNovalue(slopeValue)) { + pm.errorMessage("Found a slope novalue along the way"); + } + if (isNovalue(triggerValue)) { + pm.errorMessage("Found a trigger novalue along the way"); + } + if (isNovalue(flowValue)) { + pm.errorMessage("Found a flow novalue along the way"); + } + isMoving = false; + } else { + throw new RuntimeException(); + } + } // while isMoving + + /* + * create the trigger and linked path geometry + */ + if (pathCoordinates.size() > 2) { + Point triggerPoint = gf.createPoint(pathCoordinates.get(0)); + LineString pathLine = gf.createLineString(pathCoordinates.toArray(new Coordinate[0])); + + if (inSoil != null) { + cumulateSoil(pathCoordinates, isBetweenSlopesCondition); + } + + int id = featureIndex; + + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(pathsType); + Object[] values = new Object[]{pathLine, id}; + builder.addAll(values); + SimpleFeature pathFeature = builder.buildFeature(null); + outPaths.add(pathFeature); + + builder = new SimpleFeatureBuilder(triggersType); + values = new Object[]{triggerPoint, id}; + builder.addAll(values); + SimpleFeature triggerFeature = builder.buildFeature(null); + outIndexedTriggers.add(triggerFeature); + + featureIndex++; + } + + } + + /* + * we have to go back and start again from after the trigger that + * created the previous calculus + */ + flowDirColRow[0] = triggerCol; + flowDirColRow[1] = triggerRow; + // search for the next trigger + if (!moveToNextTriggerpoint(triggerIter, flowIter, flowDirColRow)) { + // we reached the exit + break; + } + triggerCol = flowDirColRow[0]; + triggerRow = flowDirColRow[1]; + flowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + } while( flowValue != 10 ); + + } // isSource + + } + pm.worked(1); + } + pm.done(); + + if (inSoil != null) { + /* + * make volume + */ + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double value = outSoilIter.getSampleDouble(c, r, 0); + if (isNovalue(value)) { + continue; + } + value = value * xRes * yRes; + outSoilIter.setSample(c, r, 0, value); + } + } + outSoil = CoverageUtilities.buildCoverage("cumulatedsoil", outSoilWR, regionMap, + inSoil.getCoordinateReferenceSystem()); + } + } + + /** + * Calculate the soil cumulation map along the paths. + * + * @param pathCoordinates the coordinates of the path to be cumulated. + * @param isBetweenSlopesCondition conditions defining in which points the path does + * contribute mass. + */ + private void cumulateSoil( List pathCoordinates, List isBetweenSlopesCondition ) { + // pm.beginTask("Cumulate Soil...", pathCoordinates.size()); + + java.awt.Point point = new java.awt.Point(); + GridGeometry2D gridGeometry = inSoil.getGridGeometry(); + + /* + * check if the trigger is too far to reach the network. + */ + double distance = 0.0; + Coordinate previousCoordinate = null; + for( int i = 0; i < pathCoordinates.size(); i++ ) { + Coordinate coordinate = pathCoordinates.get(i); + CoverageUtilities.colRowFromCoordinate(coordinate, gridGeometry, point); + double net = netIter.getSampleDouble(point.x, point.y, 0); + + if (previousCoordinate != null) { + distance = distance + coordinate.distance(previousCoordinate); + } + previousCoordinate = coordinate; + + if (distance > pDistance) { + // if distance is too large, the path can be discarded + return; + } + + if (!isNovalue(net)) { + // if path gets into the network, it has to be considered + break; + } + } + + /* + * do the actual cumulation map + */ + double previousCumulated = 0.0; + for( int i = 0; i < pathCoordinates.size(); i++ ) { + Coordinate coordinate = pathCoordinates.get(i); + CoverageUtilities.colRowFromCoordinate(coordinate, gridGeometry, point); + + boolean isBetweenSlopes = isBetweenSlopesCondition.get(i); + + double soil = soilIter.getSampleDouble(point.x, point.y, 0); + if (isNovalue(soil)) { + throw new ModelsIllegalargumentException("The soil map needs to cover the whole paths.", this); + } + double net = netIter.getSampleDouble(point.x, point.y, 0); + if (!isNovalue(net)) { + isBetweenSlopes = true; + } + + double cumulated = outSoilIter.getSampleDouble(point.x, point.y, 0); + + if (isBetweenSlopes) { + if (isNovalue(cumulated)) { + outSoilIter.setSample(point.x, point.y, 0, previousCumulated); + } else { + double newCumulated = cumulated + previousCumulated; + outSoilIter.setSample(point.x, point.y, 0, newCumulated); + } + } else { + if (isNovalue(cumulated)) { + double newCumulated = soil + previousCumulated; + outSoilIter.setSample(point.x, point.y, 0, newCumulated); + previousCumulated = newCumulated; + } else { + double newCumulated = cumulated + previousCumulated; + outSoilIter.setSample(point.x, point.y, 0, newCumulated); + } + } + + } + + if (doWholenet) { + Coordinate lastCoordinate = pathCoordinates.get(pathCoordinates.size() - 1); + CoverageUtilities.colRowFromCoordinate(lastCoordinate, gridGeometry, point); + + int[] flowDirColRow = new int[]{point.x, point.y}; + + double net = netIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + double tmpFlowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + + // handle the last point of the path only if it was inside the net... + if (!isNovalue(net)) { + // first move to the next point + if (!ModelsEngine.go_downstream(flowDirColRow, tmpFlowValue)) + throw new ModelsIllegalargumentException("Unable to go downstream: " + flowDirColRow[0] + "/" + + flowDirColRow[1], this); + tmpFlowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + while( !isNovalue(tmpFlowValue) && tmpFlowValue != 10 ) { + double cumulated = outSoilIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + if (isNovalue(cumulated)) { + cumulated = 0.0; + } + double newCumulated = cumulated + previousCumulated; + outSoilIter.setSample(flowDirColRow[0], flowDirColRow[1], 0, newCumulated); + + if (!ModelsEngine.go_downstream(flowDirColRow, tmpFlowValue)) + throw new ModelsIllegalargumentException("Unable to go downstream: " + flowDirColRow[0] + "/" + + flowDirColRow[1], this); + tmpFlowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + } + + } + + } + + } + /** + * Moves the flowDirColRow variable to the next trigger point. + * + * @param triggerIter + * @param flowDirColRow + * @return true if a new trigger was found, false if the exit was reached. + */ + private boolean moveToNextTriggerpoint( RandomIter triggerIter, RandomIter flowIter, int[] flowDirColRow ) { + double tmpFlowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + if (tmpFlowValue == 10) { + return false; + } + if (!ModelsEngine.go_downstream(flowDirColRow, tmpFlowValue)) + throw new ModelsIllegalargumentException("Unable to go downstream: " + flowDirColRow[0] + "/" + flowDirColRow[1], + this); + while( isNovalue(triggerIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0)) ) { + tmpFlowValue = flowIter.getSampleDouble(flowDirColRow[0], flowDirColRow[1], 0); + if (tmpFlowValue == 10) { + return false; + } + if (!ModelsEngine.go_downstream(flowDirColRow, tmpFlowValue)) + throw new ModelsIllegalargumentException("Unable to go downstream: " + flowDirColRow[0] + "/" + flowDirColRow[1], + this); + } + return true; + } + + @SuppressWarnings("nls") + private SimpleFeatureType createTriggersType() { + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("indexedtriggers"); + b.setCRS(inFlow.getCoordinateReferenceSystem()); + b.add("the_geom", Point.class); + b.add("PATHID", Integer.class); + SimpleFeatureType type = b.buildFeatureType(); + return type; + } + + @SuppressWarnings("nls") + private SimpleFeatureType createPathType() { + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("debrispaths"); + b.setCRS(inFlow.getCoordinateReferenceSystem()); + b.add("the_geom", LineString.class); + b.add("ID", Integer.class); + SimpleFeatureType type = b.buildFeatureType(); + return type; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/etp/PenmanEtp.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/etp/PenmanEtp.java index 1c50b3e25..309cb1ea1 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/etp/PenmanEtp.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/etp/PenmanEtp.java @@ -1,340 +1,340 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.etp; - -import java.util.HashMap; -import java.util.Map.Entry; -import java.util.Set; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.annotations.Unit; - -import org.jgrasstools.gears.io.adige.VegetationLibraryRecord; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormatter; - -@Description("Calculates the daily evapotranspiration using the combination equation.") -@Author(name = "Silvia Franceschi, Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Evapotranspiration, Penman, Hydrologic") -@Label(JGTConstants.HYDROGEOMORPHOLOGY) -@Status(Status.EXPERIMENTAL) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -@UI(JGTConstants.HIDE_UI_HINT) -public class PenmanEtp extends JGTModel { - - // @Description("Baricenter elevation of the HillSlope for every basin on which to calculate.") - // @Unit("m") - // @In - // public HashMap inElevations; - - @Description("The vegetation library for every basin.") - @In - public HashMap inVegetation; - - @Description("Net radiation.") - @Unit("W/m2") - @In - public HashMap inNetradiation; - - @Description("Shortwave net radiation.") - @In - public HashMap inShortradiation; - - @Description("The air temperature data.") - @Unit("C") - @In - public HashMap inTemp; - - @Description("The humidity data.") - @In - public HashMap inRh; - - @Description("The windspeed data.") - @In - public HashMap inWind; - - @Description("The pressure data.") - @In - public HashMap inPressure; - - @Description("The snow water equivalent data.") - @In - public HashMap inSwe; - - @Description("The current timestamp (format: yyyy-MM-dd HH:mm ).") - @In - public String tCurrent; - - @Description("Daily evapotranspiration.") - @Unit("mm/day") - @Out - public HashMap outEtp; - - private DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; - - private static final double Z0_SNOW = 0.010; - private static final double CLOSURE = 4000.0; - private static final double RSMAX = 5000.0; // Pa - private static final double VPDMINFACTOR = 0.1; - private static final double A_SVP = 0.61078; - private static final double B_SVP = 17.269; - private static final double C_SVP = 237.3; - private static final double CP_PM = 1013.0; /* specific heat of moist air J/kg/C (Handbook of Hydrology) */ - // private static final double PS_PM = 101300.0; /* sea level air pressure in Pa */ - // private static final double LAPSE_PM = -0.006; /* environmental lapse rate in C/m */ - // private static final int SECPHOUR = 3600; /* seconds per hour */ - private static final int SEC_PER_DAY = 86400; /* seconds per day */ - private static final double HUGE_RESIST = 1.e20; /* largest allowable double number */ - private static final double VON_K = 0.41; /* Von Karman constant for evapotranspiration */ - private static final double ZREF = 2.0; // reference height for wind speed - - @Execute - public void penman() { - - checkNull(inPressure, inTemp, inRh, inWind, inSwe, inVegetation, inShortradiation, inNetradiation); - - outEtp = new HashMap(); - - DateTime currentTimestamp = formatter.parseDateTime(tCurrent); - int monthOfYear = currentTimestamp.getMonthOfYear(); - - Set> elevSet = inTemp.entrySet(); - for( Entry entry : elevSet ) { - Integer basinId = entry.getKey(); - // double elevation = inElevations.get(basinId)[0]; - double tair = entry.getValue()[0]; - double pressure = inPressure.get(basinId)[0]; - double relativeHumidity = inRh.get(basinId)[0]; - double wind = inWind.get(basinId)[0]; - double snowWaterEquivalent = inSwe.get(basinId)[0]; - double shortRadiation = inShortradiation.get(basinId)[0]; - double netRadiation = inNetradiation.get(basinId)[0]; - - VegetationLibraryRecord vegetation = inVegetation.get(basinId); - double displacement = vegetation.getDisplacement(monthOfYear); - double roughness = vegetation.getRoughness(monthOfYear); - double rs = vegetation.getMinStomatalResistance(); - double RGL = vegetation.getRgl(); - double lai = vegetation.getLai(monthOfYear); - double rarc = vegetation.getArchitecturalResistance(); - - /* - * set the pressure in Pascal instead of in hPa as the input link gives - */ - pressure = pressure / 100; - double vpd = svp(tair) - (relativeHumidity * 100 / svp(tair)); // vpd in KPa - double ra = calcAerodynamic(displacement, roughness, ZREF, wind, snowWaterEquivalent); - - // CONSIDER THE SOIL RESISTANCE NULL - // // calculate gsm_inv: soil moisture stress factor - // double criticalSoilMoisture = 0.33; // fraction of soil moisture content at the - // critical - // // point - // double wiltingPointSoilMoisture = 0.133; - // double waterContentCriticalPoint = criticalSoilMoisture * maxMoisture; - // double waterContentWiltingPoint = wiltingPointSoilMoisture * maxMoisture; - // double gsm_inv; // soil moisture stress factor - // if (soilMoisture >= waterContentCriticalPoint) { - // gsm_inv = 1.0; - // } else if (soilMoisture >= waterContentWiltingPoint) { - // gsm_inv = (soilMoisture - waterContentWiltingPoint) / (waterContentCriticalPoint - - // waterContentWiltingPoint); - // } else { - // gsm_inv = 0.0; - // } - /* calculate the slope of the saturated vapor pressure curve in Pa/K */ - double slope = svp_slope(tair) * 1000.0; - - /* factor for canopy resistance based on photosynthesis */ - double dayFactor; - /* calculate resistance factors (Wigmosta et al., 1994) */ - double f = 0.0; - if (rs > 0.) { - if (RGL < 0) { - throw new ModelsIllegalargumentException("Invalid value of RGL for the current class.", this); - } else if (RGL == 0) { - f = shortRadiation; - } else { - f = shortRadiation / RGL; - } - dayFactor = (1. + f) / (f + rs / RSMAX); - } else - dayFactor = 1.; - - /* factor for canopy resistance based on temperature */ - double tFactor = .08 * tair - 0.0016 * tair * tair; - tFactor = (tFactor <= 0.0) ? 1e-10 : tFactor; - - /* factor for canopy resistance based on vpd */ - double vpdFactor = 1 - vpd / CLOSURE; - vpdFactor = (vpdFactor < VPDMINFACTOR) ? VPDMINFACTOR : vpdFactor; - - /* calculate canopy resistance in s/m */ - // double rc = rs / (lai * gsm_inv * tFactor * vpdFactor) * dayFactor; - double rc = rs / (lai * tFactor * vpdFactor) * dayFactor; - rc = (rc > RSMAX) ? RSMAX : rc; - - // double h; /* scale height in the atmosphere (m) */ - // /* calculate scale height based on average temperature in the column */ - // h = 287 / 9.81 * ((tair + 273.15) + 0.5 * (double) elevation * LAPSE_PM); - // - // /* use hypsometric equation to calculate p_z, assume that virtual temperature is - // equal - // air_temp */ - // pz = PS_PM * Math.exp(-(double) elevation / h); - - // instead of calculating the pressure in h.adige it is possible to read the - // interpolated - // pressure from input link - // pz is the surface air pressure - - /* calculate latent heat of vaporization. Eq. 4.2.1 in Handbook of Hydrology, assume Ts is Tair */ - double lv = 2501000 - 2361 * tair; - - /* calculate the psychrometric constant gamma (Pa/C). Eq. 4.2.28. Handbook of Hydrology */ - double gamma = 1628.6 * pressure / lv; - - /* calculate factor to be applied to rc/ra */ - - /* calculate the air density (in kg/m3), using eq. 4.2.4 Handbook of Hydrology */ - double r_air = 0.003486 * pressure / (275 + tair); - - /* calculate the Penman-Monteith evaporation in mm/day (by not dividing by - * the density of water (~1000 kg/m3)), the result ends up being in mm instead of m */ - double evap = ((slope * netRadiation + r_air * CP_PM * vpd / ra) / (lv * (slope + gamma * (1 + (rc + rarc) / ra))) * SEC_PER_DAY) / 24.0; - - if (vpd >= 0.0 && evap < 0.0) - evap = 0.0; - - outEtp.put(basinId, new double[]{evap}); - } - } - - /** - * This routine computes the gradient of d(svp)/dT using Handbook of Hydrology eqn 4.2.3 - * @param tair - * @return saturated vapor pressure slope - */ - private double svp_slope( double temp ) { - double satVaporPressureSlope = (B_SVP * C_SVP) / ((C_SVP + temp) * (C_SVP + temp)) * svp(temp); - - return satVaporPressureSlope; - } - - /** - * This routine computes the saturated vapor pressure using Handbook of Hydrology eqn 4.2.2 (Pressure in kPa) - * - * @param temp temperature. - * @return saturated vapor pressure. - */ - private double svp( double temp ) { - double SVP; - - SVP = A_SVP * Math.exp((B_SVP * temp) / (C_SVP + temp)); - - if (temp < 0) - SVP *= 1.0 + .00972 * temp + .000042 * temp * temp; - - return (SVP); - } - - /** - * Calculates the aerodynamic resistance for the vegetation layer. - * - *

Calculates the aerodynamic resistance for the vegetation layer, and - * the wind 2m above the layer boundary.

- *

The values are normalized based on a reference height wind - * speed, Uref, of 1 m/s. To get wind speeds and aerodynamic resistances for - * other values of Uref, you need to multiply the here calculated wind - * speeds by Uref and divide the here calculated aerodynamic resistances - * by Uref

- * - * @param displacement - * @param roughness - * @param Zref reference height for windspeed. - * @param windSpeed - * @return the aerodynamic resistance for the vegetation layer. - */ - private double calcAerodynamic( double displacement, double roughness, double Zref, double windSpeed, - double snowWaterEquivalent ) { - - double ra = 0.0; - double d_Lower; - double K2; - double Z0_Lower; - double tmp_wind; - - // only a value of these quantities are input of the method: - // - wind speed - // - relative humidity - // - Zref - // - ra - tmp_wind = windSpeed; - - K2 = VON_K * VON_K; - - if (displacement > Zref) - Zref = displacement + Zref + roughness; - - /* No OverStory, thus maximum one soil layer */ - // for bare soil - // if (iveg == Nveg) { - // Z0_Lower = Z0_SOIL; //Z0_SOIL is the soil roughness - // d_Lower = 0; - // } else { //with vegetation - Z0_Lower = roughness; - d_Lower = displacement; - // } if cycle is deleted thinking that bare soil is a vegetation type with roughness and - // displacement - - /* With snow on the surface */ - if (snowWaterEquivalent > 0) { - windSpeed = Math.log((2. + Z0_SNOW) / Z0_SNOW) / Math.log(Zref / Z0_SNOW); - ra = Math.log((2. + Z0_SNOW) / Z0_SNOW) * Math.log(Zref / Z0_SNOW) / K2; - } else { - /* No snow on the surface*/ - windSpeed = Math.log((2. + Z0_Lower) / Z0_Lower) / Math.log((Zref - d_Lower) / Z0_Lower); - ra = Math.log((2. + (1.0 / 0.63 - 1.0) * d_Lower) / Z0_Lower) - * Math.log((2. + (1.0 / 0.63 - 1.0) * d_Lower) / (0.1 * Z0_Lower)) / K2; - } - - if (tmp_wind > 0.) { - windSpeed *= tmp_wind; - ra /= tmp_wind; - } else { - windSpeed *= tmp_wind; - ra = HUGE_RESIST; - pm.message("Aerodinamic resistance is set to the maximum value!"); - } - - return ra; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.etp; + +import java.util.HashMap; +import java.util.Map.Entry; +import java.util.Set; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.annotations.Unit; + +import org.jgrasstools.gears.io.adige.VegetationLibraryRecord; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormatter; + +@Description("Calculates the daily evapotranspiration using the combination equation.") +@Author(name = "Silvia Franceschi, Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Evapotranspiration, Penman, Hydrologic") +@Label(JGTConstants.HYDROGEOMORPHOLOGY) +@Status(Status.EXPERIMENTAL) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +@UI(JGTConstants.HIDE_UI_HINT) +public class PenmanEtp extends JGTModel { + + // @Description("Baricenter elevation of the HillSlope for every basin on which to calculate.") + // @Unit("m") + // @In + // public HashMap inElevations; + + @Description("The vegetation library for every basin.") + @In + public HashMap inVegetation; + + @Description("Net radiation.") + @Unit("W/m2") + @In + public HashMap inNetradiation; + + @Description("Shortwave net radiation.") + @In + public HashMap inShortradiation; + + @Description("The air temperature data.") + @Unit("C") + @In + public HashMap inTemp; + + @Description("The humidity data.") + @In + public HashMap inRh; + + @Description("The windspeed data.") + @In + public HashMap inWind; + + @Description("The pressure data.") + @In + public HashMap inPressure; + + @Description("The snow water equivalent data.") + @In + public HashMap inSwe; + + @Description("The current timestamp (format: yyyy-MM-dd HH:mm ).") + @In + public String tCurrent; + + @Description("Daily evapotranspiration.") + @Unit("mm/day") + @Out + public HashMap outEtp; + + private DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; + + private static final double Z0_SNOW = 0.010; + private static final double CLOSURE = 4000.0; + private static final double RSMAX = 5000.0; // Pa + private static final double VPDMINFACTOR = 0.1; + private static final double A_SVP = 0.61078; + private static final double B_SVP = 17.269; + private static final double C_SVP = 237.3; + private static final double CP_PM = 1013.0; /* specific heat of moist air J/kg/C (Handbook of Hydrology) */ + // private static final double PS_PM = 101300.0; /* sea level air pressure in Pa */ + // private static final double LAPSE_PM = -0.006; /* environmental lapse rate in C/m */ + // private static final int SECPHOUR = 3600; /* seconds per hour */ + private static final int SEC_PER_DAY = 86400; /* seconds per day */ + private static final double HUGE_RESIST = 1.e20; /* largest allowable double number */ + private static final double VON_K = 0.41; /* Von Karman constant for evapotranspiration */ + private static final double ZREF = 2.0; // reference height for wind speed + + @Execute + public void penman() { + + checkNull(inPressure, inTemp, inRh, inWind, inSwe, inVegetation, inShortradiation, inNetradiation); + + outEtp = new HashMap(); + + DateTime currentTimestamp = formatter.parseDateTime(tCurrent); + int monthOfYear = currentTimestamp.getMonthOfYear(); + + Set> elevSet = inTemp.entrySet(); + for( Entry entry : elevSet ) { + Integer basinId = entry.getKey(); + // double elevation = inElevations.get(basinId)[0]; + double tair = entry.getValue()[0]; + double pressure = inPressure.get(basinId)[0]; + double relativeHumidity = inRh.get(basinId)[0]; + double wind = inWind.get(basinId)[0]; + double snowWaterEquivalent = inSwe.get(basinId)[0]; + double shortRadiation = inShortradiation.get(basinId)[0]; + double netRadiation = inNetradiation.get(basinId)[0]; + + VegetationLibraryRecord vegetation = inVegetation.get(basinId); + double displacement = vegetation.getDisplacement(monthOfYear); + double roughness = vegetation.getRoughness(monthOfYear); + double rs = vegetation.getMinStomatalResistance(); + double RGL = vegetation.getRgl(); + double lai = vegetation.getLai(monthOfYear); + double rarc = vegetation.getArchitecturalResistance(); + + /* + * set the pressure in Pascal instead of in hPa as the input link gives + */ + pressure = pressure / 100; + double vpd = svp(tair) - (relativeHumidity * 100 / svp(tair)); // vpd in KPa + double ra = calcAerodynamic(displacement, roughness, ZREF, wind, snowWaterEquivalent); + + // CONSIDER THE SOIL RESISTANCE NULL + // // calculate gsm_inv: soil moisture stress factor + // double criticalSoilMoisture = 0.33; // fraction of soil moisture content at the + // critical + // // point + // double wiltingPointSoilMoisture = 0.133; + // double waterContentCriticalPoint = criticalSoilMoisture * maxMoisture; + // double waterContentWiltingPoint = wiltingPointSoilMoisture * maxMoisture; + // double gsm_inv; // soil moisture stress factor + // if (soilMoisture >= waterContentCriticalPoint) { + // gsm_inv = 1.0; + // } else if (soilMoisture >= waterContentWiltingPoint) { + // gsm_inv = (soilMoisture - waterContentWiltingPoint) / (waterContentCriticalPoint - + // waterContentWiltingPoint); + // } else { + // gsm_inv = 0.0; + // } + /* calculate the slope of the saturated vapor pressure curve in Pa/K */ + double slope = svp_slope(tair) * 1000.0; + + /* factor for canopy resistance based on photosynthesis */ + double dayFactor; + /* calculate resistance factors (Wigmosta et al., 1994) */ + double f = 0.0; + if (rs > 0.) { + if (RGL < 0) { + throw new ModelsIllegalargumentException("Invalid value of RGL for the current class.", this); + } else if (RGL == 0) { + f = shortRadiation; + } else { + f = shortRadiation / RGL; + } + dayFactor = (1. + f) / (f + rs / RSMAX); + } else + dayFactor = 1.; + + /* factor for canopy resistance based on temperature */ + double tFactor = .08 * tair - 0.0016 * tair * tair; + tFactor = (tFactor <= 0.0) ? 1e-10 : tFactor; + + /* factor for canopy resistance based on vpd */ + double vpdFactor = 1 - vpd / CLOSURE; + vpdFactor = (vpdFactor < VPDMINFACTOR) ? VPDMINFACTOR : vpdFactor; + + /* calculate canopy resistance in s/m */ + // double rc = rs / (lai * gsm_inv * tFactor * vpdFactor) * dayFactor; + double rc = rs / (lai * tFactor * vpdFactor) * dayFactor; + rc = (rc > RSMAX) ? RSMAX : rc; + + // double h; /* scale height in the atmosphere (m) */ + // /* calculate scale height based on average temperature in the column */ + // h = 287 / 9.81 * ((tair + 273.15) + 0.5 * (double) elevation * LAPSE_PM); + // + // /* use hypsometric equation to calculate p_z, assume that virtual temperature is + // equal + // air_temp */ + // pz = PS_PM * Math.exp(-(double) elevation / h); + + // instead of calculating the pressure in h.adige it is possible to read the + // interpolated + // pressure from input link + // pz is the surface air pressure + + /* calculate latent heat of vaporization. Eq. 4.2.1 in Handbook of Hydrology, assume Ts is Tair */ + double lv = 2501000 - 2361 * tair; + + /* calculate the psychrometric constant gamma (Pa/C). Eq. 4.2.28. Handbook of Hydrology */ + double gamma = 1628.6 * pressure / lv; + + /* calculate factor to be applied to rc/ra */ + + /* calculate the air density (in kg/m3), using eq. 4.2.4 Handbook of Hydrology */ + double r_air = 0.003486 * pressure / (275 + tair); + + /* calculate the Penman-Monteith evaporation in mm/day (by not dividing by + * the density of water (~1000 kg/m3)), the result ends up being in mm instead of m */ + double evap = ((slope * netRadiation + r_air * CP_PM * vpd / ra) / (lv * (slope + gamma * (1 + (rc + rarc) / ra))) * SEC_PER_DAY) / 24.0; + + if (vpd >= 0.0 && evap < 0.0) + evap = 0.0; + + outEtp.put(basinId, new double[]{evap}); + } + } + + /** + * This routine computes the gradient of d(svp)/dT using Handbook of Hydrology eqn 4.2.3 + * @param tair + * @return saturated vapor pressure slope + */ + private double svp_slope( double temp ) { + double satVaporPressureSlope = (B_SVP * C_SVP) / ((C_SVP + temp) * (C_SVP + temp)) * svp(temp); + + return satVaporPressureSlope; + } + + /** + * This routine computes the saturated vapor pressure using Handbook of Hydrology eqn 4.2.2 (Pressure in kPa) + * + * @param temp temperature. + * @return saturated vapor pressure. + */ + private double svp( double temp ) { + double SVP; + + SVP = A_SVP * Math.exp((B_SVP * temp) / (C_SVP + temp)); + + if (temp < 0) + SVP *= 1.0 + .00972 * temp + .000042 * temp * temp; + + return (SVP); + } + + /** + * Calculates the aerodynamic resistance for the vegetation layer. + * + *

Calculates the aerodynamic resistance for the vegetation layer, and + * the wind 2m above the layer boundary.

+ *

The values are normalized based on a reference height wind + * speed, Uref, of 1 m/s. To get wind speeds and aerodynamic resistances for + * other values of Uref, you need to multiply the here calculated wind + * speeds by Uref and divide the here calculated aerodynamic resistances + * by Uref

+ * + * @param displacement + * @param roughness + * @param Zref reference height for windspeed. + * @param windSpeed + * @return the aerodynamic resistance for the vegetation layer. + */ + private double calcAerodynamic( double displacement, double roughness, double Zref, double windSpeed, + double snowWaterEquivalent ) { + + double ra = 0.0; + double d_Lower; + double K2; + double Z0_Lower; + double tmp_wind; + + // only a value of these quantities are input of the method: + // - wind speed + // - relative humidity + // - Zref + // - ra + tmp_wind = windSpeed; + + K2 = VON_K * VON_K; + + if (displacement > Zref) + Zref = displacement + Zref + roughness; + + /* No OverStory, thus maximum one soil layer */ + // for bare soil + // if (iveg == Nveg) { + // Z0_Lower = Z0_SOIL; //Z0_SOIL is the soil roughness + // d_Lower = 0; + // } else { //with vegetation + Z0_Lower = roughness; + d_Lower = displacement; + // } if cycle is deleted thinking that bare soil is a vegetation type with roughness and + // displacement + + /* With snow on the surface */ + if (snowWaterEquivalent > 0) { + windSpeed = Math.log((2. + Z0_SNOW) / Z0_SNOW) / Math.log(Zref / Z0_SNOW); + ra = Math.log((2. + Z0_SNOW) / Z0_SNOW) * Math.log(Zref / Z0_SNOW) / K2; + } else { + /* No snow on the surface*/ + windSpeed = Math.log((2. + Z0_Lower) / Z0_Lower) / Math.log((Zref - d_Lower) / Z0_Lower); + ra = Math.log((2. + (1.0 / 0.63 - 1.0) * d_Lower) / Z0_Lower) + * Math.log((2. + (1.0 / 0.63 - 1.0) * d_Lower) / (0.1 * Z0_Lower)) / K2; + } + + if (tmp_wind > 0.) { + windSpeed *= tmp_wind; + ra /= tmp_wind; + } else { + windSpeed *= tmp_wind; + ra = HUGE_RESIST; + pm.message("Aerodinamic resistance is set to the maximum value!"); + } + + return ra; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/insolation/Insolation.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/insolation/Insolation.java index ee979c983..e26135a07 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/insolation/Insolation.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/insolation/Insolation.java @@ -1,323 +1,323 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.insolation; - -import static org.jgrasstools.gears.libs.modules.ModelsEngine.calcInverseSunVector; -import static org.jgrasstools.gears.libs.modules.ModelsEngine.calcNormalSunVector; -import static org.jgrasstools.gears.libs.modules.ModelsEngine.calculateFactor; -import static org.jgrasstools.gears.libs.modules.ModelsEngine.scalarProduct; - -import java.awt.image.RenderedImage; -import java.awt.image.SampleModel; -import java.awt.image.WritableRaster; -import java.util.HashMap; - -import javax.media.jai.RasterFactory; -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Bibliography; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.referencing.crs.DefaultGeographicCRS; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.CrsUtilities; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Point; - -@Description("Calculate the amount of power incident on a surface in a period of time.") -@Documentation("Insolation.html") -@Author(name = "Daniele Andreis and Riccardo Rigon", contact = "http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Hydrology, Radiation, SkyviewFactor, Hillshade") -@Bibliography("Corripio, J. G.: 2003," + " Vectorial algebra algorithms for calculating terrain parameters" - + "from DEMs and the position of the sun for solar radiation modelling in mountainous terrain" - + ", International Journal of Geographical Information Science 17(1), 1–23. and" - + "Iqbal, M., 1983. An Introduction to solar radiation. In: , Academic Press, New York") -@Label(JGTConstants.HYDROGEOMORPHOLOGY) -@Name("insolation") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class Insolation extends JGTModel { - @Description("The map of the elevation.") - @In - public GridCoverage2D inElev = null; - - @Description("The first day of the simulation.") - @In - public String tStartDate = null; - - @Description("The last day of the simulation.") - @In - public String tEndDate = null; - - @Description("The map of total insolation.") - @Out - public GridCoverage2D outIns; - - private static final double pCmO3 = 0.3; - - private static final double pRH = 0.4; - - private static final double pLapse = -.0065; - - private static final double pVisibility = 60; - - /** - * The solar constant. - */ - private static final double SOLARCTE = 1368.0; - - /** - * The atmosphere pressure. - */ - private static final double ATM = 1013.25; - - private double lambda; - - private double delta; - - private double omega; - - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - @Execute - public void process() throws Exception { // transform the - checkNull(inElev, tStartDate, tEndDate); - // extract some attributes of the map - HashMap attribute = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); - double dx = attribute.get(CoverageUtilities.XRES); - - /* - * The models use only one value of the latitude. So I have decided to - * set it to the center of the raster. Extract the CRS of the - * GridCoverage and transform the value of a WGS84 latitude. - */ - CoordinateReferenceSystem sourceCRS = inElev.getCoordinateReferenceSystem2D(); - CoordinateReferenceSystem targetCRS = DefaultGeographicCRS.WGS84; - - double srcPts[] = new double[]{attribute.get(CoverageUtilities.EAST), attribute.get(CoverageUtilities.SOUTH)}; - - Coordinate source = new Coordinate(srcPts[0], srcPts[1]); - Point[] so = new Point[]{GeometryUtilities.gf().createPoint(source)}; - CrsUtilities.reproject(sourceCRS, targetCRS, so); - // the latitude value - lambda = Math.toRadians(so[0].getY()); - - /* - * transform the start and end date in an int value (the day in the - * year, from 1 to 365) - */ - DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd").withZone(DateTimeZone.UTC); - DateTime currentDatetime = formatter.parseDateTime(tStartDate); - int startDay = currentDatetime.getDayOfYear(); - currentDatetime = formatter.parseDateTime(tEndDate); - int endDay = currentDatetime.getDayOfYear(); - CoverageUtilities.getRegionParamsFromGridCoverage(inElev); - RenderedImage pitTmpRI = inElev.getRenderedImage(); - int width = pitTmpRI.getWidth(); - int height = pitTmpRI.getHeight(); - WritableRaster pitWR = CoverageUtilities.replaceNovalue(pitTmpRI, -9999.0); - pitTmpRI = null; - - WritableRaster insolationWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), - 0.0); - WritableRandomIter insolationIterator = RandomIterFactory.createWritable(insolationWR, null); - - WritableRaster gradientWR = normalVector(pitWR, dx); - - pm.beginTask(msg.message("insolation.calculating"), endDay - startDay); - - for( int i = startDay; i <= endDay; i++ ) { - calcInsolation(lambda, pitWR, gradientWR, insolationWR, i, dx); - pm.worked(i - startDay); - } - pm.done(); - for( int y = 2; y < height - 2; y++ ) { - for( int x = 2; x < width - 2; x++ ) { - if (pitWR.getSampleDouble(x, y, 0) == -9999.0) { - insolationIterator.setSample(x, y, 0, Double.NaN); - - } - } - } - - outIns = CoverageUtilities.buildCoverage("insolation", insolationWR, attribute, inElev.getCoordinateReferenceSystem()); - } - - /** - * Evaluate the radiation. - * - * @param lambda - * the latitude. - * @param demWR - * the raster of elevation - * @param gradientWR - * the raster of the gradient value of the dem. - * @param insolationWR - * the wr where to store the result. - * @param the - * day in the year. - * @paradx the resolutiono of the dem. - */ - private void calcInsolation( double lambda, WritableRaster demWR, WritableRaster gradientWR, WritableRaster insolationWR, - int day, double dx ) { - // calculating the day angle - // double dayang = 2 * Math.PI * (day - 1) / 365.0; - double dayangb = (360 / 365.25) * (day - 79.436); - dayangb = Math.toRadians(dayangb); - // Evaluate the declination of the sun. - delta = getDeclination(dayangb); - // Evaluate the radiation in this day. - double ss = Math.acos(-Math.tan(delta) * Math.tan(lambda)); - double hour = -ss + (Math.PI / 48.0); - while( hour <= ss - (Math.PI / 48) ) { - omega = hour; - // calculating the vector related to the sun - double sunVector[] = calcSunVector(); - double zenith = calcZenith(sunVector[2]); - double[] inverseSunVector = calcInverseSunVector(sunVector); - double[] normalSunVector = calcNormalSunVector(sunVector); - - int height = demWR.getHeight(); - int width = demWR.getWidth(); - WritableRaster sOmbraWR = calculateFactor(height, width, sunVector, inverseSunVector, normalSunVector, demWR, dx); - double mr = 1 / (sunVector[2] + 0.15 * Math.pow((93.885 - zenith), (-1.253))); - for( int j = 0; j < height; j++ ) { - for( int i = 0; i < width; i++ ) { - // evaluate the radiation. - calcRadiation(i, j, demWR, sOmbraWR, insolationWR, sunVector, gradientWR, mr); - } - } - hour = hour + Math.PI / 24.0; - } - } - - /* - * Evaluate the declination. - */ - private double getDeclination( double dayangb ) { - double delta = .3723 + 23.2567 * Math.sin(dayangb) - .758 * Math.cos(dayangb) + .1149 * Math.sin(2 * dayangb) + .3656 - * Math.cos(2 * dayangb) - .1712 * Math.sin(3 * dayangb) + .0201 * Math.cos(3 * dayangb); - return Math.toRadians(delta); - } - - /* - * evaluate several component of the radiation and then multiply by the - * sOmbra factor. - */ - private void calcRadiation( int i, int j, WritableRaster demWR, WritableRaster sOmbraWR, WritableRaster insolationWR, - double[] sunVector, WritableRaster gradientWR, double mr ) { - double z = demWR.getSampleDouble(i, j, 0); - double pressure = ATM * Math.exp(-0.0001184 * z); - double ma = mr * pressure / ATM; - double temp = 273 + pLapse * (z - 4000); - double vap_psat = Math.exp(26.23 - 5416.0 / temp); - double wPrec = 0.493 * pRH * vap_psat / temp; - double taur = Math.exp((-.09030 * Math.pow(ma, 0.84)) * (1.0 + ma - Math.pow(ma, 1.01))); - double d = pCmO3 * mr; - double tauo = 1 - (0.1611 * d * Math.pow(1.0 + 139.48 * d, -0.3035) - 0.002715 * d) - / (1.0 + 0.044 * d + 0.0003 * Math.pow(d, 2)); - double taug = Math.exp(-0.0127 * Math.pow(ma, 0.26)); - double tauw = 1 - 2.4959 * (wPrec * mr) / (1.0 + 79.034 * (wPrec * mr) * 0.6828 + 6.385 * (wPrec * mr)); - double taua = Math.pow((0.97 - 1.265 * Math.pow(pVisibility, (-0.66))), Math.pow(ma, 0.9)); - - double In = 0.9751 * SOLARCTE * taur * tauo * taug * tauw * taua; - - double cosinc = scalarProduct(sunVector, gradientWR.getPixel(i, j, new double[3])); - - if (cosinc < 0) { - cosinc = 0; - } - double tmp = insolationWR.getSampleDouble(i, j, 0); - insolationWR.setSample(i, j, 0, In * cosinc * sOmbraWR.getSampleDouble(i, j, 0) / 1000 + tmp); - } - - protected double[] calcSunVector() { - double sunVector[] = new double[3]; - sunVector[0] = -Math.sin(omega) * Math.cos(delta); - sunVector[1] = Math.sin(lambda) * Math.cos(omega) * Math.cos(delta) - Math.cos(lambda) * Math.sin(delta); - sunVector[2] = Math.cos(lambda) * Math.cos(omega) * Math.cos(delta) + Math.sin(lambda) * Math.sin(delta); - - return sunVector; - - } - - protected WritableRaster normalVector( WritableRaster pitWR, double res ) { - - int minX = pitWR.getMinX(); - int minY = pitWR.getMinY(); - int rows = pitWR.getHeight(); - int cols = pitWR.getWidth(); - - RandomIter pitIter = RandomIterFactory.create(pitWR, null); - /* - * Initializa the Image of the normal vector in the central point of the - * cells, which have 3 components so the Image have 3 bands.. - */ - SampleModel sm = RasterFactory.createBandedSampleModel(5, cols, rows, 3); - WritableRaster tmpNormalVectorWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, sm, 0.0); - WritableRandomIter tmpNormalIter = RandomIterFactory.createWritable(tmpNormalVectorWR, null); - /* - * apply the corripio's formula (is the formula (3) in the article) - */ - for( int j = minY; j < minX + rows - 1; j++ ) { - for( int i = minX; i < minX + cols - 1; i++ ) { - double zij = pitIter.getSampleDouble(i, j, 0); - double zidxj = pitIter.getSampleDouble(i + 1, j, 0); - double zijdy = pitIter.getSampleDouble(i, j + 1, 0); - double zidxjdy = pitIter.getSampleDouble(i + 1, j + 1, 0); - double firstComponent = res * (zij - zidxj + zijdy - zidxjdy); - double secondComponent = res * (zij + zidxj - zijdy - zidxjdy); - double thirthComponent = 2 * (res * res); - double den = Math.sqrt(firstComponent * firstComponent + secondComponent * secondComponent + thirthComponent - * thirthComponent); - tmpNormalIter.setPixel(i, j, new double[]{firstComponent / den, secondComponent / den, thirthComponent / den}); - - } - } - pitIter.done(); - - return tmpNormalVectorWR; - - } - private double calcZenith( double sunVector2 ) { - return Math.acos(sunVector2); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.insolation; + +import static org.jgrasstools.gears.libs.modules.ModelsEngine.calcInverseSunVector; +import static org.jgrasstools.gears.libs.modules.ModelsEngine.calcNormalSunVector; +import static org.jgrasstools.gears.libs.modules.ModelsEngine.calculateFactor; +import static org.jgrasstools.gears.libs.modules.ModelsEngine.scalarProduct; + +import java.awt.image.RenderedImage; +import java.awt.image.SampleModel; +import java.awt.image.WritableRaster; +import java.util.HashMap; + +import javax.media.jai.RasterFactory; +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Bibliography; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.referencing.crs.DefaultGeographicCRS; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.CrsUtilities; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Point; + +@Description("Calculate the amount of power incident on a surface in a period of time.") +@Documentation("Insolation.html") +@Author(name = "Daniele Andreis and Riccardo Rigon", contact = "http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Hydrology, Radiation, SkyviewFactor, Hillshade") +@Bibliography("Corripio, J. G.: 2003," + " Vectorial algebra algorithms for calculating terrain parameters" + + "from DEMs and the position of the sun for solar radiation modelling in mountainous terrain" + + ", International Journal of Geographical Information Science 17(1), 1–23. and" + + "Iqbal, M., 1983. An Introduction to solar radiation. In: , Academic Press, New York") +@Label(JGTConstants.HYDROGEOMORPHOLOGY) +@Name("insolation") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class Insolation extends JGTModel { + @Description("The map of the elevation.") + @In + public GridCoverage2D inElev = null; + + @Description("The first day of the simulation.") + @In + public String tStartDate = null; + + @Description("The last day of the simulation.") + @In + public String tEndDate = null; + + @Description("The map of total insolation.") + @Out + public GridCoverage2D outIns; + + private static final double pCmO3 = 0.3; + + private static final double pRH = 0.4; + + private static final double pLapse = -.0065; + + private static final double pVisibility = 60; + + /** + * The solar constant. + */ + private static final double SOLARCTE = 1368.0; + + /** + * The atmosphere pressure. + */ + private static final double ATM = 1013.25; + + private double lambda; + + private double delta; + + private double omega; + + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + @Execute + public void process() throws Exception { // transform the + checkNull(inElev, tStartDate, tEndDate); + // extract some attributes of the map + HashMap attribute = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); + double dx = attribute.get(CoverageUtilities.XRES); + + /* + * The models use only one value of the latitude. So I have decided to + * set it to the center of the raster. Extract the CRS of the + * GridCoverage and transform the value of a WGS84 latitude. + */ + CoordinateReferenceSystem sourceCRS = inElev.getCoordinateReferenceSystem2D(); + CoordinateReferenceSystem targetCRS = DefaultGeographicCRS.WGS84; + + double srcPts[] = new double[]{attribute.get(CoverageUtilities.EAST), attribute.get(CoverageUtilities.SOUTH)}; + + Coordinate source = new Coordinate(srcPts[0], srcPts[1]); + Point[] so = new Point[]{GeometryUtilities.gf().createPoint(source)}; + CrsUtilities.reproject(sourceCRS, targetCRS, so); + // the latitude value + lambda = Math.toRadians(so[0].getY()); + + /* + * transform the start and end date in an int value (the day in the + * year, from 1 to 365) + */ + DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd").withZone(DateTimeZone.UTC); + DateTime currentDatetime = formatter.parseDateTime(tStartDate); + int startDay = currentDatetime.getDayOfYear(); + currentDatetime = formatter.parseDateTime(tEndDate); + int endDay = currentDatetime.getDayOfYear(); + CoverageUtilities.getRegionParamsFromGridCoverage(inElev); + RenderedImage pitTmpRI = inElev.getRenderedImage(); + int width = pitTmpRI.getWidth(); + int height = pitTmpRI.getHeight(); + WritableRaster pitWR = CoverageUtilities.replaceNovalue(pitTmpRI, -9999.0); + pitTmpRI = null; + + WritableRaster insolationWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), + 0.0); + WritableRandomIter insolationIterator = RandomIterFactory.createWritable(insolationWR, null); + + WritableRaster gradientWR = normalVector(pitWR, dx); + + pm.beginTask(msg.message("insolation.calculating"), endDay - startDay); + + for( int i = startDay; i <= endDay; i++ ) { + calcInsolation(lambda, pitWR, gradientWR, insolationWR, i, dx); + pm.worked(i - startDay); + } + pm.done(); + for( int y = 2; y < height - 2; y++ ) { + for( int x = 2; x < width - 2; x++ ) { + if (pitWR.getSampleDouble(x, y, 0) == -9999.0) { + insolationIterator.setSample(x, y, 0, Double.NaN); + + } + } + } + + outIns = CoverageUtilities.buildCoverage("insolation", insolationWR, attribute, inElev.getCoordinateReferenceSystem()); + } + + /** + * Evaluate the radiation. + * + * @param lambda + * the latitude. + * @param demWR + * the raster of elevation + * @param gradientWR + * the raster of the gradient value of the dem. + * @param insolationWR + * the wr where to store the result. + * @param the + * day in the year. + * @paradx the resolutiono of the dem. + */ + private void calcInsolation( double lambda, WritableRaster demWR, WritableRaster gradientWR, WritableRaster insolationWR, + int day, double dx ) { + // calculating the day angle + // double dayang = 2 * Math.PI * (day - 1) / 365.0; + double dayangb = (360 / 365.25) * (day - 79.436); + dayangb = Math.toRadians(dayangb); + // Evaluate the declination of the sun. + delta = getDeclination(dayangb); + // Evaluate the radiation in this day. + double ss = Math.acos(-Math.tan(delta) * Math.tan(lambda)); + double hour = -ss + (Math.PI / 48.0); + while( hour <= ss - (Math.PI / 48) ) { + omega = hour; + // calculating the vector related to the sun + double sunVector[] = calcSunVector(); + double zenith = calcZenith(sunVector[2]); + double[] inverseSunVector = calcInverseSunVector(sunVector); + double[] normalSunVector = calcNormalSunVector(sunVector); + + int height = demWR.getHeight(); + int width = demWR.getWidth(); + WritableRaster sOmbraWR = calculateFactor(height, width, sunVector, inverseSunVector, normalSunVector, demWR, dx); + double mr = 1 / (sunVector[2] + 0.15 * Math.pow((93.885 - zenith), (-1.253))); + for( int j = 0; j < height; j++ ) { + for( int i = 0; i < width; i++ ) { + // evaluate the radiation. + calcRadiation(i, j, demWR, sOmbraWR, insolationWR, sunVector, gradientWR, mr); + } + } + hour = hour + Math.PI / 24.0; + } + } + + /* + * Evaluate the declination. + */ + private double getDeclination( double dayangb ) { + double delta = .3723 + 23.2567 * Math.sin(dayangb) - .758 * Math.cos(dayangb) + .1149 * Math.sin(2 * dayangb) + .3656 + * Math.cos(2 * dayangb) - .1712 * Math.sin(3 * dayangb) + .0201 * Math.cos(3 * dayangb); + return Math.toRadians(delta); + } + + /* + * evaluate several component of the radiation and then multiply by the + * sOmbra factor. + */ + private void calcRadiation( int i, int j, WritableRaster demWR, WritableRaster sOmbraWR, WritableRaster insolationWR, + double[] sunVector, WritableRaster gradientWR, double mr ) { + double z = demWR.getSampleDouble(i, j, 0); + double pressure = ATM * Math.exp(-0.0001184 * z); + double ma = mr * pressure / ATM; + double temp = 273 + pLapse * (z - 4000); + double vap_psat = Math.exp(26.23 - 5416.0 / temp); + double wPrec = 0.493 * pRH * vap_psat / temp; + double taur = Math.exp((-.09030 * Math.pow(ma, 0.84)) * (1.0 + ma - Math.pow(ma, 1.01))); + double d = pCmO3 * mr; + double tauo = 1 - (0.1611 * d * Math.pow(1.0 + 139.48 * d, -0.3035) - 0.002715 * d) + / (1.0 + 0.044 * d + 0.0003 * Math.pow(d, 2)); + double taug = Math.exp(-0.0127 * Math.pow(ma, 0.26)); + double tauw = 1 - 2.4959 * (wPrec * mr) / (1.0 + 79.034 * (wPrec * mr) * 0.6828 + 6.385 * (wPrec * mr)); + double taua = Math.pow((0.97 - 1.265 * Math.pow(pVisibility, (-0.66))), Math.pow(ma, 0.9)); + + double In = 0.9751 * SOLARCTE * taur * tauo * taug * tauw * taua; + + double cosinc = scalarProduct(sunVector, gradientWR.getPixel(i, j, new double[3])); + + if (cosinc < 0) { + cosinc = 0; + } + double tmp = insolationWR.getSampleDouble(i, j, 0); + insolationWR.setSample(i, j, 0, In * cosinc * sOmbraWR.getSampleDouble(i, j, 0) / 1000 + tmp); + } + + protected double[] calcSunVector() { + double sunVector[] = new double[3]; + sunVector[0] = -Math.sin(omega) * Math.cos(delta); + sunVector[1] = Math.sin(lambda) * Math.cos(omega) * Math.cos(delta) - Math.cos(lambda) * Math.sin(delta); + sunVector[2] = Math.cos(lambda) * Math.cos(omega) * Math.cos(delta) + Math.sin(lambda) * Math.sin(delta); + + return sunVector; + + } + + protected WritableRaster normalVector( WritableRaster pitWR, double res ) { + + int minX = pitWR.getMinX(); + int minY = pitWR.getMinY(); + int rows = pitWR.getHeight(); + int cols = pitWR.getWidth(); + + RandomIter pitIter = RandomIterFactory.create(pitWR, null); + /* + * Initializa the Image of the normal vector in the central point of the + * cells, which have 3 components so the Image have 3 bands.. + */ + SampleModel sm = RasterFactory.createBandedSampleModel(5, cols, rows, 3); + WritableRaster tmpNormalVectorWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, sm, 0.0); + WritableRandomIter tmpNormalIter = RandomIterFactory.createWritable(tmpNormalVectorWR, null); + /* + * apply the corripio's formula (is the formula (3) in the article) + */ + for( int j = minY; j < minX + rows - 1; j++ ) { + for( int i = minX; i < minX + cols - 1; i++ ) { + double zij = pitIter.getSampleDouble(i, j, 0); + double zidxj = pitIter.getSampleDouble(i + 1, j, 0); + double zijdy = pitIter.getSampleDouble(i, j + 1, 0); + double zidxjdy = pitIter.getSampleDouble(i + 1, j + 1, 0); + double firstComponent = res * (zij - zidxj + zijdy - zidxjdy); + double secondComponent = res * (zij + zidxj - zijdy - zidxjdy); + double thirthComponent = 2 * (res * res); + double den = Math.sqrt(firstComponent * firstComponent + secondComponent * secondComponent + thirthComponent + * thirthComponent); + tmpNormalIter.setPixel(i, j, new double[]{firstComponent / den, secondComponent / den, thirthComponent / den}); + + } + } + pitIter.done(); + + return tmpNormalVectorWR; + + } + private double calcZenith( double sunVector2 ) { + return Math.acos(sunVector2); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/melton/MeltonNumber.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/melton/MeltonNumber.java index 9523a4392..1b882953f 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/melton/MeltonNumber.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/melton/MeltonNumber.java @@ -1,154 +1,154 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.melton; - -import static java.lang.Math.sqrt; - -import java.text.MessageFormat; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; -import org.jgrasstools.gears.modules.r.scanline.ScanLineRasterizer; -import org.jgrasstools.gears.modules.r.summary.RasterSummary; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.type.AttributeType; - -import com.vividsolutions.jts.geom.Geometry; - -@Description("Melton number calculator") -@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") -@Keywords("Melton, Raster, Vector") -@Name("meltonnum") -@Label(JGTConstants.HYDROGEOMORPHOLOGY) -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class MeltonNumber extends JGTModel { - - @Description("The map of elevation.") - @In - public GridCoverage2D inElev = null; - - @Description("The map of polygons of the fans.") - @In - public SimpleFeatureCollection inFans = null; - - @Description("The fields of the polygons containing the id of the polygon.") - @In - public String fId; - - @Description("The Melton numbers per id [id, num].") - @Out - public String[][] outMelton = null; - - @Execute - public void process() throws Exception { - checkNull(inElev, inFans); - - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - double west = regionMap.getWest(); - double east = regionMap.getEast(); - double south = regionMap.getSouth(); - double north = regionMap.getNorth(); - - AttributeType type = inFans.getSchema().getType(fId); - if (type == null) { - throw new ModelsIllegalargumentException(MessageFormat.format("The attribute {0} does not exist in the vector map.", - fId), this); - } - - List fansList = FeatureUtilities.featureCollectionToList(inFans); - - outMelton = new String[fansList.size()][2]; - - int index = 0; - pm.beginTask("Calculating Melton number for fans...", fansList.size()); - for( SimpleFeature fan : fansList ) { - Object attribute = fan.getAttribute(fId); - - // rasterize the fan - SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); - newCollection.add(fan); - - ScanLineRasterizer rasterizer = new ScanLineRasterizer(); - rasterizer.inVector = newCollection; - rasterizer.pCols = cols; - rasterizer.pRows = rows; - rasterizer.pNorth = north; - rasterizer.pSouth = south; - rasterizer.pEast = east; - rasterizer.pWest = west; - rasterizer.pValue = 1.0; - rasterizer.pm = new DummyProgressMonitor(); - rasterizer.process(); - - GridCoverage2D rasterizedFan = rasterizer.outRaster; - - GridCoverage2D fanElev = CoverageUtilities.coverageValuesMapper(inElev, rasterizedFan); - - // extract min and max - RasterSummary summary = new RasterSummary(); - summary.pm = new DummyProgressMonitor(); - summary.inRaster = fanElev; - summary.process(); - - double min = summary.outMin; - double max = summary.outMax; - - // get the suface of the fan - Geometry geometry = (Geometry) fan.getDefaultGeometry(); - double area = geometry.getArea(); - - // calculate Melton - double melton = (max - min) / sqrt(area); - - outMelton[index][0] = attribute.toString(); - outMelton[index][1] = String.valueOf(melton); - index++; - - pm.message(MessageFormat.format("id: {0} gave Melton number: {1}", attribute.toString(), melton)); - pm.message("Based on max: " + max + " min: " + min + " and area: " + area); - - pm.worked(1); - } - pm.done(); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.melton; + +import static java.lang.Math.sqrt; + +import java.text.MessageFormat; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; +import org.jgrasstools.gears.modules.r.scanline.ScanLineRasterizer; +import org.jgrasstools.gears.modules.r.summary.RasterSummary; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.type.AttributeType; + +import com.vividsolutions.jts.geom.Geometry; + +@Description("Melton number calculator") +@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") +@Keywords("Melton, Raster, Vector") +@Name("meltonnum") +@Label(JGTConstants.HYDROGEOMORPHOLOGY) +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class MeltonNumber extends JGTModel { + + @Description("The map of elevation.") + @In + public GridCoverage2D inElev = null; + + @Description("The map of polygons of the fans.") + @In + public SimpleFeatureCollection inFans = null; + + @Description("The fields of the polygons containing the id of the polygon.") + @In + public String fId; + + @Description("The Melton numbers per id [id, num].") + @Out + public String[][] outMelton = null; + + @Execute + public void process() throws Exception { + checkNull(inElev, inFans); + + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + double west = regionMap.getWest(); + double east = regionMap.getEast(); + double south = regionMap.getSouth(); + double north = regionMap.getNorth(); + + AttributeType type = inFans.getSchema().getType(fId); + if (type == null) { + throw new ModelsIllegalargumentException(MessageFormat.format("The attribute {0} does not exist in the vector map.", + fId), this); + } + + List fansList = FeatureUtilities.featureCollectionToList(inFans); + + outMelton = new String[fansList.size()][2]; + + int index = 0; + pm.beginTask("Calculating Melton number for fans...", fansList.size()); + for( SimpleFeature fan : fansList ) { + Object attribute = fan.getAttribute(fId); + + // rasterize the fan + SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); + newCollection.add(fan); + + ScanLineRasterizer rasterizer = new ScanLineRasterizer(); + rasterizer.inVector = newCollection; + rasterizer.pCols = cols; + rasterizer.pRows = rows; + rasterizer.pNorth = north; + rasterizer.pSouth = south; + rasterizer.pEast = east; + rasterizer.pWest = west; + rasterizer.pValue = 1.0; + rasterizer.pm = new DummyProgressMonitor(); + rasterizer.process(); + + GridCoverage2D rasterizedFan = rasterizer.outRaster; + + GridCoverage2D fanElev = CoverageUtilities.coverageValuesMapper(inElev, rasterizedFan); + + // extract min and max + RasterSummary summary = new RasterSummary(); + summary.pm = new DummyProgressMonitor(); + summary.inRaster = fanElev; + summary.process(); + + double min = summary.outMin; + double max = summary.outMax; + + // get the suface of the fan + Geometry geometry = (Geometry) fan.getDefaultGeometry(); + double area = geometry.getArea(); + + // calculate Melton + double melton = (max - min) / sqrt(area); + + outMelton[index][0] = attribute.toString(); + outMelton[index][1] = String.valueOf(melton); + index++; + + pm.message(MessageFormat.format("id: {0} gave Melton number: {1}", attribute.toString(), melton)); + pm.message("Based on max: " + max + " min: " + min + " and area: " + area); + + pm.worked(1); + } + pm.done(); + + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/EffectsBox.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/EffectsBox.java index d357fb7b6..298fb3879 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/EffectsBox.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/EffectsBox.java @@ -1,105 +1,105 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow; - -/** - * @author Andrea Antonello - www.hydrologis.com - */ -public class EffectsBox { - - private double[][] ampi = null; - private double[][] ampi_sub = null; - private double[][] ampi_help_sub = null; - - private boolean isSubsuperficial = false; - private boolean rainDataExists; - - /** - * empty constructor. This is just a box which holds some check on existend and default value - */ - public EffectsBox() { - } - - public boolean isSubsuperficial() { - return isSubsuperficial; - } - - public void setSubsuperficial( boolean isSubsuperficial ) { - this.isSubsuperficial = isSubsuperficial; - } - - /* - * SUPERFICIAL - */ - public boolean ampiExists() { - if (ampi != null) { - return true; - } - return false; - } - - public double[][] getAmpi() { - return ampi; - } - - public void setAmpi( double[][] ampi ) { - this.ampi = ampi; - } - - /* - * SUBSUPERFICIAL - */ - public boolean ampi_subExists() { - if (ampi_sub != null) { - return true; - } - return false; - } - - public double[][] getAmpi_sub() { - return ampi_sub; - } - - public void setAmpi_sub( double[][] ampi_sub ) { - this.ampi_sub = ampi_sub; - } - - public boolean ampi_help_subExists() { - if (ampi_help_sub != null) { - return true; - } - return false; - } - - public double[][] getAmpi_help_sub() { - return ampi_help_sub; - } - - public void setAmpi_help_sub( double[][] ampi_help_sub ) { - this.ampi_help_sub = ampi_help_sub; - } - - public void setRainDataExists( boolean rainDataExists ) { - this.rainDataExists = rainDataExists; - - } - public boolean rainDataExists() { - return rainDataExists; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow; + +/** + * @author Andrea Antonello - www.hydrologis.com + */ +public class EffectsBox { + + private double[][] ampi = null; + private double[][] ampi_sub = null; + private double[][] ampi_help_sub = null; + + private boolean isSubsuperficial = false; + private boolean rainDataExists; + + /** + * empty constructor. This is just a box which holds some check on existend and default value + */ + public EffectsBox() { + } + + public boolean isSubsuperficial() { + return isSubsuperficial; + } + + public void setSubsuperficial( boolean isSubsuperficial ) { + this.isSubsuperficial = isSubsuperficial; + } + + /* + * SUPERFICIAL + */ + public boolean ampiExists() { + if (ampi != null) { + return true; + } + return false; + } + + public double[][] getAmpi() { + return ampi; + } + + public void setAmpi( double[][] ampi ) { + this.ampi = ampi; + } + + /* + * SUBSUPERFICIAL + */ + public boolean ampi_subExists() { + if (ampi_sub != null) { + return true; + } + return false; + } + + public double[][] getAmpi_sub() { + return ampi_sub; + } + + public void setAmpi_sub( double[][] ampi_sub ) { + this.ampi_sub = ampi_sub; + } + + public boolean ampi_help_subExists() { + if (ampi_help_sub != null) { + return true; + } + return false; + } + + public double[][] getAmpi_help_sub() { + return ampi_help_sub; + } + + public void setAmpi_help_sub( double[][] ampi_help_sub ) { + this.ampi_help_sub = ampi_help_sub; + } + + public void setRainDataExists( boolean rainDataExists ) { + this.rainDataExists = rainDataExists; + + } + public boolean rainDataExists() { + return rainDataExists; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/ParameterBox.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/ParameterBox.java index 96f3b8f12..c0ce12a63 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/ParameterBox.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/ParameterBox.java @@ -1,424 +1,424 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow; - -/** - * @author Andrea Antonello - www.hydrologis.com - */ -public class ParameterBox { - - /* - * parameters needed in the general and superficial case - */ - private double n_idf = -9999.0f; - private double a_idf = -9999.0f; - private double area = -9999.0f; - private double timestep = -9999.0f; - private double diffusionparameter = -9999.0f; - private double vc = -9999.0f; - private double delta = -9999.0f; - private double xres = -9999.0f; - private double yres = -9999.0f; - private double npixel = -9999.0f; - private double size = -9999.0f; - private double[] time = null; - private double[] pxl = null; - - /* - * additional parameters needed in the subsuperficial case - */ - private boolean isSubsuperficial = false; - private double delta_sub = -9999.0f; - private double npixel_sub = -9999.0f; - private double area_sub = -9999.0f; - private double v_sub = -9999.0f; - private double resid_time = -9999.0f; - private double[] time_sub = null; - private double[] pxl_sub = null; - - /* - * scs - */ - private double vcvv = 0f; - private double phi = 0.0; - private int basinstate = -1; - private boolean isScs = false; - private String outputFile = null; - - /** - * empty constructor. This is just a parameter box which holds some check on existend and - * default values of certain parameters - */ - public ParameterBox() { - } - - public boolean isSubsuperficial() { - return isSubsuperficial; - } - - public void setSubsuperficial( boolean isSubsuperficial ) { - this.isSubsuperficial = isSubsuperficial; - } - - /* - * SUPERFICIAL - */ - public boolean a_idfExists() { - if (a_idf != -9999.0f) { - return true; - } - return false; - } - - public double getA_idf() { - return a_idf; - } - - public void setA_idf( double a_idf ) { - this.a_idf = a_idf; - } - - public boolean n_idfExists() { - if (n_idf != -9999.0f) { - return true; - } - return false; - } - - public double getN_idf() { - return n_idf; - } - - public void setN_idf( double n_idf ) { - this.n_idf = n_idf; - } - - public boolean areaExists() { - if (area != -9999.0f) { - return true; - } - return false; - } - - public double getArea() { - return area; - } - - public void setArea( double area ) { - this.area = area; - } - - public boolean area_subExists() { - if (area_sub != -9999.0f) { - return true; - } - return false; - } - - public boolean timestepExists() { - if (timestep != -9999.0f) { - return true; - } - return false; - } - - public double getTimestep() { - return timestep; - } - - public void setTimestep( double timestep ) { - this.timestep = timestep; - } - - public boolean diffusionparameterExists() { - if (diffusionparameter != -9999.0f) { - return true; - } - return false; - } - - public double getDiffusionparameter() { - return diffusionparameter; - } - - public void setDiffusionparameter( double diffusionparameter ) { - this.diffusionparameter = diffusionparameter; - } - - public boolean vcExists() { - if (vc != -9999.0f) { - return true; - } - return false; - } - - public double getVc() { - return vc; - } - - public void setVc( double vc ) { - this.vc = vc; - } - - public boolean deltaExists() { - if (delta != -9999.0f) { - return true; - } - return false; - } - - public double getDelta() { - return delta; - } - - public void setDelta( double delta ) { - this.delta = delta; - } - - public boolean xresExists() { - if (xres != -9999.0f) { - return true; - } - return false; - } - - public double getXres() { - return xres; - } - - public void setXres( double xres ) { - this.xres = xres; - } - - public boolean yresExists() { - if (yres != -9999.0f) { - return true; - } - return false; - } - - public double getYres() { - return yres; - } - - public void setYres( double yres ) { - this.yres = yres; - } - - public boolean npixelExists() { - if (npixel != -9999.0f) { - return true; - } - return false; - } - - public double getNpixel() { - return npixel; - } - - public void setNpixel( double npixel ) { - this.npixel = npixel; - } - - public boolean sizeExists() { - if (size != -9999.0f) { - return true; - } - return false; - } - - public double getSize() { - return size; - } - - public void setSize( double size ) { - this.size = size; - } - - public boolean timeExists() { - if (time != null) { - return true; - } - return false; - } - - public double[] getTime() { - return time; - } - - public void setTime( double[] time ) { - this.time = time; - } - - public boolean pxlExists() { - if (pxl != null) { - return true; - } - return false; - } - - public double[] getPxl() { - return pxl; - } - - public void setPxl( double[] pxl ) { - this.pxl = pxl; - } - - /* - * SUBSUPERFICIAL - */ - public double getArea_sub() { - return area_sub; - } - - public void setArea_sub( double area_sub ) { - this.area_sub = area_sub; - } - - public boolean delta_subExists() { - if (delta_sub != -9999.0f) { - return true; - } - return false; - } - - public double getDelta_sub() { - return delta_sub; - } - - public void setDelta_sub( double delta_sub ) { - this.delta_sub = delta_sub; - } - - public boolean npixel_subExists() { - if (npixel_sub != -9999.0f) { - return true; - } - return false; - } - - public double getNpixel_sub() { - return npixel_sub; - } - - public void setNpixel_sub( double npixel_sub ) { - this.npixel_sub = npixel_sub; - } - - public boolean pxl_subExists() { - if (pxl_sub != null) { - return true; - } - return false; - } - - public double[] getPxl_sub() { - return pxl_sub; - } - - public void setPxl_sub( double[] pxl_sub ) { - this.pxl_sub = pxl_sub; - } - - public boolean resid_timeExists() { - if (resid_time != -9999.0f) { - return true; - } - return false; - } - - public double getResid_time() { - return resid_time; - } - - public void setResid_time( double resid_time ) { - this.resid_time = resid_time; - } - - public boolean time_subExists() { - if (time_sub != null) { - return true; - } - return false; - } - - public double[] getTime_sub() { - return time_sub; - } - - public void setTime_sub( double[] time_sub ) { - this.time_sub = time_sub; - } - - public boolean v_subExists() { - if (v_sub != -9999.0f) { - return true; - } - return false; - } - - public double getV_sub() { - return v_sub; - } - - public void setV_sub( double v_sub ) { - this.v_sub = v_sub; - } - - public int getBasinstate() { - return basinstate; - } - - public void setBasinstate( int basinstate ) { - this.basinstate = basinstate; - } - - public double getVcvv() { - return vcvv; - } - - public void setVcvv( double vcvv ) { - this.vcvv = vcvv; - } - - public double getPhi() { - return phi; - } - - public void setPhi( double phi ) { - this.phi = phi; - } - - public boolean isScs() { - return isScs; - } - - public void setScs( boolean isScs ) { - this.isScs = isScs; - } - - public String getOutputFile() { - return outputFile; - } - - public void setOutputFile( String outputFile ) { - this.outputFile = outputFile; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow; + +/** + * @author Andrea Antonello - www.hydrologis.com + */ +public class ParameterBox { + + /* + * parameters needed in the general and superficial case + */ + private double n_idf = -9999.0f; + private double a_idf = -9999.0f; + private double area = -9999.0f; + private double timestep = -9999.0f; + private double diffusionparameter = -9999.0f; + private double vc = -9999.0f; + private double delta = -9999.0f; + private double xres = -9999.0f; + private double yres = -9999.0f; + private double npixel = -9999.0f; + private double size = -9999.0f; + private double[] time = null; + private double[] pxl = null; + + /* + * additional parameters needed in the subsuperficial case + */ + private boolean isSubsuperficial = false; + private double delta_sub = -9999.0f; + private double npixel_sub = -9999.0f; + private double area_sub = -9999.0f; + private double v_sub = -9999.0f; + private double resid_time = -9999.0f; + private double[] time_sub = null; + private double[] pxl_sub = null; + + /* + * scs + */ + private double vcvv = 0f; + private double phi = 0.0; + private int basinstate = -1; + private boolean isScs = false; + private String outputFile = null; + + /** + * empty constructor. This is just a parameter box which holds some check on existend and + * default values of certain parameters + */ + public ParameterBox() { + } + + public boolean isSubsuperficial() { + return isSubsuperficial; + } + + public void setSubsuperficial( boolean isSubsuperficial ) { + this.isSubsuperficial = isSubsuperficial; + } + + /* + * SUPERFICIAL + */ + public boolean a_idfExists() { + if (a_idf != -9999.0f) { + return true; + } + return false; + } + + public double getA_idf() { + return a_idf; + } + + public void setA_idf( double a_idf ) { + this.a_idf = a_idf; + } + + public boolean n_idfExists() { + if (n_idf != -9999.0f) { + return true; + } + return false; + } + + public double getN_idf() { + return n_idf; + } + + public void setN_idf( double n_idf ) { + this.n_idf = n_idf; + } + + public boolean areaExists() { + if (area != -9999.0f) { + return true; + } + return false; + } + + public double getArea() { + return area; + } + + public void setArea( double area ) { + this.area = area; + } + + public boolean area_subExists() { + if (area_sub != -9999.0f) { + return true; + } + return false; + } + + public boolean timestepExists() { + if (timestep != -9999.0f) { + return true; + } + return false; + } + + public double getTimestep() { + return timestep; + } + + public void setTimestep( double timestep ) { + this.timestep = timestep; + } + + public boolean diffusionparameterExists() { + if (diffusionparameter != -9999.0f) { + return true; + } + return false; + } + + public double getDiffusionparameter() { + return diffusionparameter; + } + + public void setDiffusionparameter( double diffusionparameter ) { + this.diffusionparameter = diffusionparameter; + } + + public boolean vcExists() { + if (vc != -9999.0f) { + return true; + } + return false; + } + + public double getVc() { + return vc; + } + + public void setVc( double vc ) { + this.vc = vc; + } + + public boolean deltaExists() { + if (delta != -9999.0f) { + return true; + } + return false; + } + + public double getDelta() { + return delta; + } + + public void setDelta( double delta ) { + this.delta = delta; + } + + public boolean xresExists() { + if (xres != -9999.0f) { + return true; + } + return false; + } + + public double getXres() { + return xres; + } + + public void setXres( double xres ) { + this.xres = xres; + } + + public boolean yresExists() { + if (yres != -9999.0f) { + return true; + } + return false; + } + + public double getYres() { + return yres; + } + + public void setYres( double yres ) { + this.yres = yres; + } + + public boolean npixelExists() { + if (npixel != -9999.0f) { + return true; + } + return false; + } + + public double getNpixel() { + return npixel; + } + + public void setNpixel( double npixel ) { + this.npixel = npixel; + } + + public boolean sizeExists() { + if (size != -9999.0f) { + return true; + } + return false; + } + + public double getSize() { + return size; + } + + public void setSize( double size ) { + this.size = size; + } + + public boolean timeExists() { + if (time != null) { + return true; + } + return false; + } + + public double[] getTime() { + return time; + } + + public void setTime( double[] time ) { + this.time = time; + } + + public boolean pxlExists() { + if (pxl != null) { + return true; + } + return false; + } + + public double[] getPxl() { + return pxl; + } + + public void setPxl( double[] pxl ) { + this.pxl = pxl; + } + + /* + * SUBSUPERFICIAL + */ + public double getArea_sub() { + return area_sub; + } + + public void setArea_sub( double area_sub ) { + this.area_sub = area_sub; + } + + public boolean delta_subExists() { + if (delta_sub != -9999.0f) { + return true; + } + return false; + } + + public double getDelta_sub() { + return delta_sub; + } + + public void setDelta_sub( double delta_sub ) { + this.delta_sub = delta_sub; + } + + public boolean npixel_subExists() { + if (npixel_sub != -9999.0f) { + return true; + } + return false; + } + + public double getNpixel_sub() { + return npixel_sub; + } + + public void setNpixel_sub( double npixel_sub ) { + this.npixel_sub = npixel_sub; + } + + public boolean pxl_subExists() { + if (pxl_sub != null) { + return true; + } + return false; + } + + public double[] getPxl_sub() { + return pxl_sub; + } + + public void setPxl_sub( double[] pxl_sub ) { + this.pxl_sub = pxl_sub; + } + + public boolean resid_timeExists() { + if (resid_time != -9999.0f) { + return true; + } + return false; + } + + public double getResid_time() { + return resid_time; + } + + public void setResid_time( double resid_time ) { + this.resid_time = resid_time; + } + + public boolean time_subExists() { + if (time_sub != null) { + return true; + } + return false; + } + + public double[] getTime_sub() { + return time_sub; + } + + public void setTime_sub( double[] time_sub ) { + this.time_sub = time_sub; + } + + public boolean v_subExists() { + if (v_sub != -9999.0f) { + return true; + } + return false; + } + + public double getV_sub() { + return v_sub; + } + + public void setV_sub( double v_sub ) { + this.v_sub = v_sub; + } + + public int getBasinstate() { + return basinstate; + } + + public void setBasinstate( int basinstate ) { + this.basinstate = basinstate; + } + + public double getVcvv() { + return vcvv; + } + + public void setVcvv( double vcvv ) { + this.vcvv = vcvv; + } + + public double getPhi() { + return phi; + } + + public void setPhi( double phi ) { + this.phi = phi; + } + + public boolean isScs() { + return isScs; + } + + public void setScs( boolean isScs ) { + this.isScs = isScs; + } + + public String getOutputFile() { + return outputFile; + } + + public void setOutputFile( String outputFile ) { + this.outputFile = outputFile; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/Peakflow.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/Peakflow.java index 41108f03e..0a50e9056 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/Peakflow.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/Peakflow.java @@ -1,483 +1,483 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.Unit; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.math.interpolation.LinearListInterpolator; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge.QReal; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge.QStatistic; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHCalculator; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHDiffusion; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHKinematic; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff.RealJeff; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff.StatisticJeff; -import org.jgrasstools.hortonmachine.modules.statistics.cb.Cb; -import org.joda.time.DateTime; - -@Description("The Peakflow semidistributed hydrologic model.") -@Documentation("Peakflow.html") -@Author(name = "Silvia Franceschi, Andrea Antonello, Riccardo Rigon", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Peakflow, Discharge, Hydrologic, Cb, RescaledDistance") -@Label(JGTConstants.HYDROGEOMORPHOLOGY) -@Name("peakflow") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class Peakflow extends JGTModel { - - @Description("The a parameter for statistic rain calculations.") - @Unit("mm/h^m") - @In - public double pA = -1f; - - @Description("The n parameter for statistic rain calculations.") - @In - public double pN = -1f; - - @Description("The channel celerity parameter.") - @Unit("m/s") - @In - public double pCelerity = -1f; - - @Description("The diffusion parameter.") - @Unit("m2/s") - @In - public double pDiffusion = -1f; - - @Description("The saturation percentage.") - @Unit("%") - @In - public double pSat = -1f; - - @Description("The map of Topindex.") - @In - public GridCoverage2D inTopindex = null; - - @Description("Optional map of saturation.") - @In - public GridCoverage2D inSat = null; - - @Description("The map of superficial rescaled distance.") - @In - public GridCoverage2D inRescaledsup = null; - - @Description("The map of sub-superficial rescaled distance.") - @In - public GridCoverage2D inRescaledsub = null; - - @Description("The sorted hasmap of rainfall data per timestep.") - @In - public HashMap inRainfall; - - @Description("The sorted hashmap of peakflow output per timestep.") - @Out - public HashMap outDischarge; - - public double oututstepArg = 100; - - // private int basinStatus = 0; // dry/normal/wet - // private double phi = -1d; - // private double celerityRatio = -1d; - - private double xRes; - private double yRes; - /* - * width functions - */ - private double[][] widthFunctionSuperficial; - private double[][] widthFunctionSubSuperficialHelper; - private double[][] widthFunctionSubSuperficial; - - private double residentTime = -1; - private double[] timeSubArray; - private double[] timeSupArray; - private double areaSup; - private double deltaSup; - private double pixelTotalSup; - private double[] pixelSupArray; - private double areaSub; - private double deltaSub; - private double[] pixelSubArray; - private double pixelTotalSub; - - private ParameterBox parameterBox = new ParameterBox(); - private EffectsBox effectsBox = new EffectsBox(); - - private boolean isReal = false; - private boolean isStatistics = false; - - private int cols; - - private int rows; - - @Execute - public void process() throws Exception { - checkNull(inRescaledsup); - - HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRescaledsup); - cols = regionMap.get(CoverageUtilities.COLS).intValue(); - rows = regionMap.get(CoverageUtilities.ROWS).intValue(); - xRes = regionMap.get(CoverageUtilities.XRES); - yRes = regionMap.get(CoverageUtilities.YRES); - - RenderedImage supRescaledRI = inRescaledsup.getRenderedImage(); - WritableRaster supRescaledWR = CoverageUtilities.renderedImage2WritableRaster(supRescaledRI, false); - - WritableRaster subRescaledWR = null; - if (inRescaledsub != null) { - RenderedImage subRescaledRI = inRescaledsub.getRenderedImage(); - subRescaledWR = CoverageUtilities.renderedImage2WritableRaster(subRescaledRI, false); - } - - if (inTopindex != null) { - processWithTopIndex(supRescaledWR, subRescaledWR); - } else if (inSat != null) { - processWithSaturation(inSat, supRescaledWR, subRescaledWR); - } else { - throw new ModelsIllegalargumentException( - "At least one of the topindex or the saturation map have to be available to proceed.", this); - } - - GridCoverage2D widthfunctionSupCoverage = CoverageUtilities.buildCoverage("sup", supRescaledWR, regionMap, - inRescaledsup.getCoordinateReferenceSystem()); - double[][] widthfunctionSupCb = doCb(widthfunctionSupCoverage); - - double[][] widthfunctionSubCb = null; - if (inRescaledsub != null) { - GridCoverage2D widthfunctionSubCoverage = CoverageUtilities.buildCoverage("sub", subRescaledWR, regionMap, - inRescaledsup.getCoordinateReferenceSystem()); - widthfunctionSubCb = doCb(widthfunctionSubCoverage); - } - - setSuperficialWidthFunction(widthfunctionSupCb); - if (inRescaledsub != null) { - setSubSuperficialAmplitude(widthfunctionSubCb); - } - - // check the case - if (pA != -1 && pN != -1 && widthfunctionSupCb != null && pCelerity != -1 && pDiffusion != -1) { - pm.message("Peakflow launched in statistic mode..."); - isStatistics = true; - isReal = false; - } else if (widthfunctionSupCb != null && pCelerity != -1 && pDiffusion != -1 && inRainfall != null) { - pm.message("Peakflow launched with real rain..."); - isStatistics = false; - isReal = true; - } else { - throw new ModelsIllegalargumentException( - "Problems occurred in parsing the command arguments. Please check your arguments.", this); - } - - // the internal timestep is always 1 second - double timestep = 1f; - - // /* - // * Calculate the tcorr as the one calculated for the superficial discharge if we have - // * only Superficial flow, an for the subsuperficial discharge otherwise - // */ - // double tcorr = 0f; - // if (timeSubArray != null) { - // tcorr = timeSubArray[timeSubArray.length - 1] / channelCelerity; - // } else { - // tcorr = timeSupArray[timeSupArray.length - 1] / channelCelerity; - // } - - /* - * prepare all the needed parameters by the core algorithms - */ - - /* - * this needs to be integrated into the interface - */ - parameterBox.setN_idf(pN); - parameterBox.setA_idf(pA); - parameterBox.setArea(areaSup); - parameterBox.setTimestep(timestep); - parameterBox.setDiffusionparameter(pDiffusion); - parameterBox.setVc(pCelerity); - parameterBox.setDelta(deltaSup); - parameterBox.setXres(xRes); - parameterBox.setYres(yRes); - parameterBox.setNpixel(pixelTotalSup); - parameterBox.setSize(widthfunctionSupCb.length); - parameterBox.setTime(timeSupArray); - parameterBox.setPxl(pixelSupArray); - - effectsBox.setAmpi(widthFunctionSuperficial); - - if (timeSubArray != null) { - parameterBox.setSubsuperficial(true); - parameterBox.setDelta_sub(deltaSub); - parameterBox.setNpixel_sub(pixelTotalSub); - parameterBox.setTime_sub(timeSubArray); - parameterBox.setArea_sub(areaSub); - parameterBox.setPxl_sub(pixelSubArray); - parameterBox.setResid_time(residentTime); - - effectsBox.setAmpi_sub(widthFunctionSubSuperficial); - effectsBox.setAmpi_help_sub(widthFunctionSubSuperficialHelper); - } - - // if (isScs) { - // parameterBox.setVcvv(celerityRatio); - // parameterBox.setBasinstate(basinStatus); - // parameterBox.setPhi(phi); - // parameterBox.setScs(true); - // } - - effectsBox.setRainDataExists(inRainfall != null ? true : false); - outDischarge = new LinkedHashMap(); - if (isStatistics) { - DateTime dummyDate = new DateTime(); - IUHCalculator iuhC = null; - - if (pDiffusion < 10) { - pm.message("IUH Kinematic..."); - iuhC = new IUHKinematic(effectsBox, parameterBox, pm); - } else { - pm.message("IUH Diffusion..."); - iuhC = new IUHDiffusion(effectsBox, parameterBox, pm); - } - pm.message("Statistic Jeff..."); - StatisticJeff jeffC = new StatisticJeff(parameterBox, iuhC.getTpMax(), pm); - pm.message("Q calculation..."); - QStatistic qtotal = new QStatistic(parameterBox, iuhC, jeffC, pm); - double[][] calculateQ = qtotal.calculateQ(); - - pm.message("Maximum rainfall duration: " + qtotal.getTpMax()); - pm.message("Maximum discharge value: " + qtotal.calculateQmax()); - - for( int i = 0; i < calculateQ.length; i++ ) { - if (i % oututstepArg != 0) - continue; - DateTime tmpDate = dummyDate.plusSeconds((int) calculateQ[i][0]); - double[] value = new double[1]; - value[0] = calculateQ[i][1]; - outDischarge.put(tmpDate, value); - } - } else if (isReal) { - IUHCalculator iuhC = null; - - if (pDiffusion < 10) { - pm.message("IUH Kinematic..."); - iuhC = new IUHKinematic(effectsBox, parameterBox, pm); - } else { - pm.message("IUH Diffusion..."); - iuhC = new IUHDiffusion(effectsBox, parameterBox, pm); - } - pm.message("Read rain data..."); - - pm.message("Real Jeff..."); - RealJeff jeffC = new RealJeff(inRainfall); - pm.message("Q calculation..."); - QReal qtotal = new QReal(parameterBox, iuhC, jeffC, pm); - double[][] calculateQ = qtotal.calculateQ(); - - // pm.message("Maximum rainfall duration: " + qtotal.getTpMax()); - // pm.message("Maximum discharge value: " + qtotal.calculateQmax()); - DateTime firstDate = jeffC.getFirstDate(); - for( int i = 0; i < calculateQ.length; i++ ) { - if (i % oututstepArg != 0) - continue; - DateTime tmpDate = firstDate.plusSeconds((int) calculateQ[i][0]); - double[] value = new double[1]; - value[0] = calculateQ[i][1]; - outDischarge.put(tmpDate, value); - } - } else { - throw new ModelsIllegalargumentException("Statistic and real rain are implemented only.", this.getClass() - .getSimpleName()); - } - - /* - * here two ways can be taken 1) standard peakflow theory 2) peakflow hybrid with SCS - */ - // if (isStatistics || isReal) { - // if (!peakflowStandard()) { - // // throw some - // } - // } else if (isScs) { - // if (!peakflowScs()) { - // // throw some - // } - // } - } - - private void processWithSaturation( GridCoverage2D sat, WritableRaster supRescaledWR, WritableRaster subRescaledWR ) { - RandomIter satIter = CoverageUtilities.getRandomIterator(sat); - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double saturation = satIter.getSampleDouble(c, r, 0); - if (!isNovalue(saturation)) { - if (subRescaledWR != null) { - subRescaledWR.setSample(c, r, 0, doubleNovalue); - } - } else { - supRescaledWR.setSample(c, r, 0, doubleNovalue); - } - } - } - } - - private void processWithTopIndex( WritableRaster supRescaledWR, WritableRaster subRescaledWR ) throws Exception { - double[][] topindexCb = doCb(inTopindex); - - // cumulate topindex - for( int i = 0; i < topindexCb.length; i++ ) { - if (i > 0) { - topindexCb[i][1] = topindexCb[i][1] + topindexCb[i - 1][1]; - } - } - double max = topindexCb[topindexCb.length - 1][1]; - // normalize - for( int i = 0; i < topindexCb.length; i++ ) { - topindexCb[i][1] = topindexCb[i][1] / max; - } - - List meanValueList = new ArrayList(); - List cumulatedValueList = new ArrayList(); - for( int i = 0; i < topindexCb.length; i++ ) { - meanValueList.add(topindexCb[i][0]); - cumulatedValueList.add(topindexCb[i][1]); - } - - LinearListInterpolator interpolator = new LinearListInterpolator(meanValueList, cumulatedValueList); - double topindexThreshold = interpolator.linearInterpolateX(1 - pSat / 100); - - RenderedImage topindexRI = inTopindex.getRenderedImage(); - RandomIter topindexIter = RandomIterFactory.create(topindexRI, null); - - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double topindex = topindexIter.getSampleDouble(c, r, 0); - if (topindex >= topindexThreshold) { - if (subRescaledWR != null) { - subRescaledWR.setSample(c, r, 0, doubleNovalue); - } - } else { - supRescaledWR.setSample(c, r, 0, doubleNovalue); - } - } - } - } - - private void setSuperficialWidthFunction( double[][] widthfunctionSupCb ) { - int widthFunctionLength = widthfunctionSupCb.length; - pixelTotalSup = 0.0; - double timeTotalNum = 0.0; - - timeSupArray = new double[widthFunctionLength]; - pixelSupArray = new double[widthFunctionLength]; - - for( int i = 0; i < widthfunctionSupCb.length; i++ ) { - timeSupArray[i] = widthfunctionSupCb[i][0]; - pixelSupArray[i] = widthfunctionSupCb[i][1]; - - pixelTotalSup = pixelTotalSup + pixelSupArray[i]; - timeTotalNum = timeTotalNum + timeSupArray[i]; - } - - areaSup = pixelTotalSup * xRes * yRes; - deltaSup = (timeSupArray[widthFunctionLength - 1] - timeSupArray[0]) / (widthFunctionLength - 1); - // double avgTime = timeTotalNum / amplitudeFunctionLength; - widthFunctionSuperficial = new double[widthFunctionLength][3]; - double cum = 0.0; - for( int i = 0; i < widthFunctionLength; i++ ) { - widthFunctionSuperficial[i][0] = timeSupArray[i] / pCelerity; - widthFunctionSuperficial[i][1] = pixelSupArray[i] * xRes * yRes / deltaSup * pCelerity; - double tmpSum = pixelSupArray[i] / pixelTotalSup; - cum = cum + tmpSum; - widthFunctionSuperficial[i][2] = cum; - } - } - - private void setSubSuperficialAmplitude( double[][] widthfunctionSubCb ) { - int widthFunctionLength = widthfunctionSubCb.length; - - pixelTotalSub = 0; - double timeTotalNum = 0; - timeSubArray = new double[widthFunctionLength]; - pixelSubArray = new double[widthFunctionLength]; - - for( int i = 0; i < widthfunctionSubCb.length; i++ ) { - timeSubArray[i] = widthfunctionSubCb[i][0]; - pixelSubArray[i] = widthfunctionSubCb[i][1]; - - pixelTotalSub = pixelTotalSub + pixelSubArray[i]; - timeTotalNum = timeTotalNum + timeSubArray[i]; - } - - areaSub = pixelTotalSub * xRes * yRes; - deltaSub = (timeSubArray[widthFunctionLength - 1] - timeSubArray[0]) / (widthFunctionLength - 1); - double avgTime = timeTotalNum / widthFunctionLength; - - residentTime = avgTime / pCelerity; - - widthFunctionSubSuperficial = new double[widthFunctionLength][3]; - widthFunctionSubSuperficialHelper = new double[widthFunctionLength][3]; - double cum = 0f; - for( int i = 0; i < widthFunctionLength; i++ ) { - widthFunctionSubSuperficialHelper[i][0] = timeSubArray[i] / pCelerity; - widthFunctionSubSuperficialHelper[i][1] = pixelSubArray[i] * xRes * yRes / deltaSub * pCelerity; - cum = cum + pixelSubArray[i] / pixelTotalSub; - widthFunctionSubSuperficialHelper[i][2] = cum; - } - } - - private double[][] doCb( GridCoverage2D coverage ) throws Exception { - Cb topindexCb = new Cb(); - topindexCb.inRaster1 = coverage; - topindexCb.pFirst = 1; - topindexCb.pLast = 2; - topindexCb.pBins = 100; - topindexCb.pm = pm; - topindexCb.process(); - double[][] moments = topindexCb.outCb; - return moments; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.Unit; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.math.interpolation.LinearListInterpolator; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge.QReal; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge.QStatistic; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHCalculator; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHDiffusion; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHKinematic; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff.RealJeff; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff.StatisticJeff; +import org.jgrasstools.hortonmachine.modules.statistics.cb.Cb; +import org.joda.time.DateTime; + +@Description("The Peakflow semidistributed hydrologic model.") +@Documentation("Peakflow.html") +@Author(name = "Silvia Franceschi, Andrea Antonello, Riccardo Rigon", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Peakflow, Discharge, Hydrologic, Cb, RescaledDistance") +@Label(JGTConstants.HYDROGEOMORPHOLOGY) +@Name("peakflow") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class Peakflow extends JGTModel { + + @Description("The a parameter for statistic rain calculations.") + @Unit("mm/h^m") + @In + public double pA = -1f; + + @Description("The n parameter for statistic rain calculations.") + @In + public double pN = -1f; + + @Description("The channel celerity parameter.") + @Unit("m/s") + @In + public double pCelerity = -1f; + + @Description("The diffusion parameter.") + @Unit("m2/s") + @In + public double pDiffusion = -1f; + + @Description("The saturation percentage.") + @Unit("%") + @In + public double pSat = -1f; + + @Description("The map of Topindex.") + @In + public GridCoverage2D inTopindex = null; + + @Description("Optional map of saturation.") + @In + public GridCoverage2D inSat = null; + + @Description("The map of superficial rescaled distance.") + @In + public GridCoverage2D inRescaledsup = null; + + @Description("The map of sub-superficial rescaled distance.") + @In + public GridCoverage2D inRescaledsub = null; + + @Description("The sorted hasmap of rainfall data per timestep.") + @In + public HashMap inRainfall; + + @Description("The sorted hashmap of peakflow output per timestep.") + @Out + public HashMap outDischarge; + + public double oututstepArg = 100; + + // private int basinStatus = 0; // dry/normal/wet + // private double phi = -1d; + // private double celerityRatio = -1d; + + private double xRes; + private double yRes; + /* + * width functions + */ + private double[][] widthFunctionSuperficial; + private double[][] widthFunctionSubSuperficialHelper; + private double[][] widthFunctionSubSuperficial; + + private double residentTime = -1; + private double[] timeSubArray; + private double[] timeSupArray; + private double areaSup; + private double deltaSup; + private double pixelTotalSup; + private double[] pixelSupArray; + private double areaSub; + private double deltaSub; + private double[] pixelSubArray; + private double pixelTotalSub; + + private ParameterBox parameterBox = new ParameterBox(); + private EffectsBox effectsBox = new EffectsBox(); + + private boolean isReal = false; + private boolean isStatistics = false; + + private int cols; + + private int rows; + + @Execute + public void process() throws Exception { + checkNull(inRescaledsup); + + HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRescaledsup); + cols = regionMap.get(CoverageUtilities.COLS).intValue(); + rows = regionMap.get(CoverageUtilities.ROWS).intValue(); + xRes = regionMap.get(CoverageUtilities.XRES); + yRes = regionMap.get(CoverageUtilities.YRES); + + RenderedImage supRescaledRI = inRescaledsup.getRenderedImage(); + WritableRaster supRescaledWR = CoverageUtilities.renderedImage2WritableRaster(supRescaledRI, false); + + WritableRaster subRescaledWR = null; + if (inRescaledsub != null) { + RenderedImage subRescaledRI = inRescaledsub.getRenderedImage(); + subRescaledWR = CoverageUtilities.renderedImage2WritableRaster(subRescaledRI, false); + } + + if (inTopindex != null) { + processWithTopIndex(supRescaledWR, subRescaledWR); + } else if (inSat != null) { + processWithSaturation(inSat, supRescaledWR, subRescaledWR); + } else { + throw new ModelsIllegalargumentException( + "At least one of the topindex or the saturation map have to be available to proceed.", this); + } + + GridCoverage2D widthfunctionSupCoverage = CoverageUtilities.buildCoverage("sup", supRescaledWR, regionMap, + inRescaledsup.getCoordinateReferenceSystem()); + double[][] widthfunctionSupCb = doCb(widthfunctionSupCoverage); + + double[][] widthfunctionSubCb = null; + if (inRescaledsub != null) { + GridCoverage2D widthfunctionSubCoverage = CoverageUtilities.buildCoverage("sub", subRescaledWR, regionMap, + inRescaledsup.getCoordinateReferenceSystem()); + widthfunctionSubCb = doCb(widthfunctionSubCoverage); + } + + setSuperficialWidthFunction(widthfunctionSupCb); + if (inRescaledsub != null) { + setSubSuperficialAmplitude(widthfunctionSubCb); + } + + // check the case + if (pA != -1 && pN != -1 && widthfunctionSupCb != null && pCelerity != -1 && pDiffusion != -1) { + pm.message("Peakflow launched in statistic mode..."); + isStatistics = true; + isReal = false; + } else if (widthfunctionSupCb != null && pCelerity != -1 && pDiffusion != -1 && inRainfall != null) { + pm.message("Peakflow launched with real rain..."); + isStatistics = false; + isReal = true; + } else { + throw new ModelsIllegalargumentException( + "Problems occurred in parsing the command arguments. Please check your arguments.", this); + } + + // the internal timestep is always 1 second + double timestep = 1f; + + // /* + // * Calculate the tcorr as the one calculated for the superficial discharge if we have + // * only Superficial flow, an for the subsuperficial discharge otherwise + // */ + // double tcorr = 0f; + // if (timeSubArray != null) { + // tcorr = timeSubArray[timeSubArray.length - 1] / channelCelerity; + // } else { + // tcorr = timeSupArray[timeSupArray.length - 1] / channelCelerity; + // } + + /* + * prepare all the needed parameters by the core algorithms + */ + + /* + * this needs to be integrated into the interface + */ + parameterBox.setN_idf(pN); + parameterBox.setA_idf(pA); + parameterBox.setArea(areaSup); + parameterBox.setTimestep(timestep); + parameterBox.setDiffusionparameter(pDiffusion); + parameterBox.setVc(pCelerity); + parameterBox.setDelta(deltaSup); + parameterBox.setXres(xRes); + parameterBox.setYres(yRes); + parameterBox.setNpixel(pixelTotalSup); + parameterBox.setSize(widthfunctionSupCb.length); + parameterBox.setTime(timeSupArray); + parameterBox.setPxl(pixelSupArray); + + effectsBox.setAmpi(widthFunctionSuperficial); + + if (timeSubArray != null) { + parameterBox.setSubsuperficial(true); + parameterBox.setDelta_sub(deltaSub); + parameterBox.setNpixel_sub(pixelTotalSub); + parameterBox.setTime_sub(timeSubArray); + parameterBox.setArea_sub(areaSub); + parameterBox.setPxl_sub(pixelSubArray); + parameterBox.setResid_time(residentTime); + + effectsBox.setAmpi_sub(widthFunctionSubSuperficial); + effectsBox.setAmpi_help_sub(widthFunctionSubSuperficialHelper); + } + + // if (isScs) { + // parameterBox.setVcvv(celerityRatio); + // parameterBox.setBasinstate(basinStatus); + // parameterBox.setPhi(phi); + // parameterBox.setScs(true); + // } + + effectsBox.setRainDataExists(inRainfall != null ? true : false); + outDischarge = new LinkedHashMap(); + if (isStatistics) { + DateTime dummyDate = new DateTime(); + IUHCalculator iuhC = null; + + if (pDiffusion < 10) { + pm.message("IUH Kinematic..."); + iuhC = new IUHKinematic(effectsBox, parameterBox, pm); + } else { + pm.message("IUH Diffusion..."); + iuhC = new IUHDiffusion(effectsBox, parameterBox, pm); + } + pm.message("Statistic Jeff..."); + StatisticJeff jeffC = new StatisticJeff(parameterBox, iuhC.getTpMax(), pm); + pm.message("Q calculation..."); + QStatistic qtotal = new QStatistic(parameterBox, iuhC, jeffC, pm); + double[][] calculateQ = qtotal.calculateQ(); + + pm.message("Maximum rainfall duration: " + qtotal.getTpMax()); + pm.message("Maximum discharge value: " + qtotal.calculateQmax()); + + for( int i = 0; i < calculateQ.length; i++ ) { + if (i % oututstepArg != 0) + continue; + DateTime tmpDate = dummyDate.plusSeconds((int) calculateQ[i][0]); + double[] value = new double[1]; + value[0] = calculateQ[i][1]; + outDischarge.put(tmpDate, value); + } + } else if (isReal) { + IUHCalculator iuhC = null; + + if (pDiffusion < 10) { + pm.message("IUH Kinematic..."); + iuhC = new IUHKinematic(effectsBox, parameterBox, pm); + } else { + pm.message("IUH Diffusion..."); + iuhC = new IUHDiffusion(effectsBox, parameterBox, pm); + } + pm.message("Read rain data..."); + + pm.message("Real Jeff..."); + RealJeff jeffC = new RealJeff(inRainfall); + pm.message("Q calculation..."); + QReal qtotal = new QReal(parameterBox, iuhC, jeffC, pm); + double[][] calculateQ = qtotal.calculateQ(); + + // pm.message("Maximum rainfall duration: " + qtotal.getTpMax()); + // pm.message("Maximum discharge value: " + qtotal.calculateQmax()); + DateTime firstDate = jeffC.getFirstDate(); + for( int i = 0; i < calculateQ.length; i++ ) { + if (i % oututstepArg != 0) + continue; + DateTime tmpDate = firstDate.plusSeconds((int) calculateQ[i][0]); + double[] value = new double[1]; + value[0] = calculateQ[i][1]; + outDischarge.put(tmpDate, value); + } + } else { + throw new ModelsIllegalargumentException("Statistic and real rain are implemented only.", this.getClass() + .getSimpleName()); + } + + /* + * here two ways can be taken 1) standard peakflow theory 2) peakflow hybrid with SCS + */ + // if (isStatistics || isReal) { + // if (!peakflowStandard()) { + // // throw some + // } + // } else if (isScs) { + // if (!peakflowScs()) { + // // throw some + // } + // } + } + + private void processWithSaturation( GridCoverage2D sat, WritableRaster supRescaledWR, WritableRaster subRescaledWR ) { + RandomIter satIter = CoverageUtilities.getRandomIterator(sat); + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double saturation = satIter.getSampleDouble(c, r, 0); + if (!isNovalue(saturation)) { + if (subRescaledWR != null) { + subRescaledWR.setSample(c, r, 0, doubleNovalue); + } + } else { + supRescaledWR.setSample(c, r, 0, doubleNovalue); + } + } + } + } + + private void processWithTopIndex( WritableRaster supRescaledWR, WritableRaster subRescaledWR ) throws Exception { + double[][] topindexCb = doCb(inTopindex); + + // cumulate topindex + for( int i = 0; i < topindexCb.length; i++ ) { + if (i > 0) { + topindexCb[i][1] = topindexCb[i][1] + topindexCb[i - 1][1]; + } + } + double max = topindexCb[topindexCb.length - 1][1]; + // normalize + for( int i = 0; i < topindexCb.length; i++ ) { + topindexCb[i][1] = topindexCb[i][1] / max; + } + + List meanValueList = new ArrayList(); + List cumulatedValueList = new ArrayList(); + for( int i = 0; i < topindexCb.length; i++ ) { + meanValueList.add(topindexCb[i][0]); + cumulatedValueList.add(topindexCb[i][1]); + } + + LinearListInterpolator interpolator = new LinearListInterpolator(meanValueList, cumulatedValueList); + double topindexThreshold = interpolator.linearInterpolateX(1 - pSat / 100); + + RenderedImage topindexRI = inTopindex.getRenderedImage(); + RandomIter topindexIter = RandomIterFactory.create(topindexRI, null); + + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double topindex = topindexIter.getSampleDouble(c, r, 0); + if (topindex >= topindexThreshold) { + if (subRescaledWR != null) { + subRescaledWR.setSample(c, r, 0, doubleNovalue); + } + } else { + supRescaledWR.setSample(c, r, 0, doubleNovalue); + } + } + } + } + + private void setSuperficialWidthFunction( double[][] widthfunctionSupCb ) { + int widthFunctionLength = widthfunctionSupCb.length; + pixelTotalSup = 0.0; + double timeTotalNum = 0.0; + + timeSupArray = new double[widthFunctionLength]; + pixelSupArray = new double[widthFunctionLength]; + + for( int i = 0; i < widthfunctionSupCb.length; i++ ) { + timeSupArray[i] = widthfunctionSupCb[i][0]; + pixelSupArray[i] = widthfunctionSupCb[i][1]; + + pixelTotalSup = pixelTotalSup + pixelSupArray[i]; + timeTotalNum = timeTotalNum + timeSupArray[i]; + } + + areaSup = pixelTotalSup * xRes * yRes; + deltaSup = (timeSupArray[widthFunctionLength - 1] - timeSupArray[0]) / (widthFunctionLength - 1); + // double avgTime = timeTotalNum / amplitudeFunctionLength; + widthFunctionSuperficial = new double[widthFunctionLength][3]; + double cum = 0.0; + for( int i = 0; i < widthFunctionLength; i++ ) { + widthFunctionSuperficial[i][0] = timeSupArray[i] / pCelerity; + widthFunctionSuperficial[i][1] = pixelSupArray[i] * xRes * yRes / deltaSup * pCelerity; + double tmpSum = pixelSupArray[i] / pixelTotalSup; + cum = cum + tmpSum; + widthFunctionSuperficial[i][2] = cum; + } + } + + private void setSubSuperficialAmplitude( double[][] widthfunctionSubCb ) { + int widthFunctionLength = widthfunctionSubCb.length; + + pixelTotalSub = 0; + double timeTotalNum = 0; + timeSubArray = new double[widthFunctionLength]; + pixelSubArray = new double[widthFunctionLength]; + + for( int i = 0; i < widthfunctionSubCb.length; i++ ) { + timeSubArray[i] = widthfunctionSubCb[i][0]; + pixelSubArray[i] = widthfunctionSubCb[i][1]; + + pixelTotalSub = pixelTotalSub + pixelSubArray[i]; + timeTotalNum = timeTotalNum + timeSubArray[i]; + } + + areaSub = pixelTotalSub * xRes * yRes; + deltaSub = (timeSubArray[widthFunctionLength - 1] - timeSubArray[0]) / (widthFunctionLength - 1); + double avgTime = timeTotalNum / widthFunctionLength; + + residentTime = avgTime / pCelerity; + + widthFunctionSubSuperficial = new double[widthFunctionLength][3]; + widthFunctionSubSuperficialHelper = new double[widthFunctionLength][3]; + double cum = 0f; + for( int i = 0; i < widthFunctionLength; i++ ) { + widthFunctionSubSuperficialHelper[i][0] = timeSubArray[i] / pCelerity; + widthFunctionSubSuperficialHelper[i][1] = pixelSubArray[i] * xRes * yRes / deltaSub * pCelerity; + cum = cum + pixelSubArray[i] / pixelTotalSub; + widthFunctionSubSuperficialHelper[i][2] = cum; + } + } + + private double[][] doCb( GridCoverage2D coverage ) throws Exception { + Cb topindexCb = new Cb(); + topindexCb.inRaster1 = coverage; + topindexCb.pFirst = 1; + topindexCb.pLast = 2; + topindexCb.pBins = 100; + topindexCb.pm = pm; + topindexCb.process(); + double[][] moments = topindexCb.outCb; + return moments; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/DischargeCalculator.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/DischargeCalculator.java index c2d3c955b..5f10d192f 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/DischargeCalculator.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/DischargeCalculator.java @@ -1,47 +1,47 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge; - -/** - * @author Andrea Antonello (www.hydrologis.com) - */ -public interface DischargeCalculator { - - /** - * Calculates the maximum discharge. - * - * @return the maximum discharge. - */ - public double calculateQmax(); - - /** - * Calculates the discharge hydrogram. - * - * @return the discharge hydrogram. - */ - public double[][] calculateQ(); - - /** - * Calculates the maximum rain time. - * - * @return the maximum rain time. - */ - public double getTpMax(); - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge; + +/** + * @author Andrea Antonello (www.hydrologis.com) + */ +public interface DischargeCalculator { + + /** + * Calculates the maximum discharge. + * + * @return the maximum discharge. + */ + public double calculateQmax(); + + /** + * Calculates the discharge hydrogram. + * + * @return the discharge hydrogram. + */ + public double[][] calculateQ(); + + /** + * Calculates the maximum rain time. + * + * @return the maximum rain time. + */ + public double getTpMax(); + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QReal.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QReal.java index 16831f877..578be1391 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QReal.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QReal.java @@ -1,235 +1,235 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge; - -import java.util.Map; -import java.util.Set; - -import org.jgrasstools.gears.libs.modules.ModelsEngine; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHCalculator; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff.RealJeff; -import org.joda.time.DateTime; -import org.joda.time.Duration; - -/** - * @author Silvia franceschi (www.hydrologis.com) - * @author Andrea Antonello (www.hydrologis.com) - */ -public class QReal implements DischargeCalculator { - - private RealJeff jeffC = null; - - private Map jeff = null; - - private double[][] ampi = null; - - private double tpmax = 0f; - - private ParameterBox fixedParams = null; - - private double[][] Qtot = null; - - private final IJGTProgressMonitor pm; - - /** - * Calculate the discharge with rainfall data - */ - public QReal( ParameterBox fixedParameters, IUHCalculator iuhC, RealJeff jeffC, IJGTProgressMonitor pm ) { - this.jeffC = jeffC; - - this.fixedParams = fixedParameters; - this.pm = pm; - - jeff = jeffC.calculateJeff(); - ampi = iuhC.calculateIUH(); - } - - /** - * Calculate the discharge with rainfall data. - */ - // public QReal( ParameterBox fixedParameters, double[][] iuhdata, double[][] jeffdata ) { - // fixedParams = fixedParameters; - // - // jeff = jeffdata; - // ampi = iuhdata; - // - // System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAA: ampilength " + ampi[ampi.length - 1][0]); - // } - - /* - * (non-Javadoc) - * @see bsh.commands.h.peakflow.core.discharge.DischargeCalculator#calculateQ() - */ - public double[][] calculateQ() { - double timestep = fixedParams.getTimestep(); - double area_super = fixedParams.getArea(); - double area_sub = fixedParams.getArea_sub(); - double area_tot = 0f; - - double raintimestep = jeffC.getRain_timestep(); - DateTime firstDate = jeffC.getFirstDate(); - - /* - * The maximum rain time has no sense with the real precipitations. In this case it will use - * the rain timestep for tp. - */ - double tcorr = ampi[ampi.length - 1][0]; - tpmax = (double) raintimestep; - int rainLength = jeff.size(); - double[][] totalQshiftMatrix = new double[rainLength][(int) (Math.floor((tcorr + tpmax) / timestep) + 1 + rainLength - * raintimestep / timestep)]; - double[][] Q = new double[(int) Math.floor((tcorr + tpmax) / timestep) + 1][3]; - - if (area_sub != -9999.0) { - area_tot = area_sub + area_super; - } else { - area_tot = area_super; - } - - Set dates = jeff.keySet(); - pm.beginTask("Calculating discharge...", dates.size()); - int i = 0; - for( DateTime dateTime : dates ) { - double J = jeff.get(dateTime); - /* - * calculate the discharge for t < tcorr - */ - int j = 0; - for( int t = 1; t < tcorr; t += timestep ) { - j = (int) Math.floor((t) / timestep); - - if (t <= tpmax) { - Q[j][0] = t; - double widthInterpolate = ModelsEngine.width_interpolate(ampi, t, 0, 2); - Q[j][1] = (double) (J * area_tot * widthInterpolate); - Q[j][2] = Q[j - 1][2] + Q[j][1]; - } else { - Q[j][0] = t; - Q[j][1] = (double) (J * area_tot * (ModelsEngine.width_interpolate(ampi, t, 0, 2) - ModelsEngine - .width_interpolate(ampi, t - tpmax, 0, 2))); - Q[j][2] = Q[j - 1][2] + Q[j][1]; - } - } - - /* - * calculate the discharge for t > tcorr - */ - - for( double t = tcorr; t < (tcorr + tpmax); t += timestep ) { - j = (int) Math.floor(((int) t) / timestep); - Q[j][0] = t; - Q[j][1] = (double) (J * area_tot * (ampi[ampi.length - 1][2] - ModelsEngine.width_interpolate(ampi, t - tpmax, 0, - 2))); - Q[j][2] = Q[j - 1][2] + Q[j][1]; - } - - /* - * calculate the volumes - */ - // double vol = Q[Q.length - 2][2] * timestep; - // double vol2 = (double) (area_tot * J * raintimestep); - - /* - * calculate zero padding before first value Note that jeff contains already the - * progressive time of the rainfile. - */ - int totalshiftmatrixindex = 0; - int initalshiftmatrixindex = 0; - // FIXME time in ??? - Duration duration = new Duration(firstDate, dateTime); - long intervalSeconds = duration.getStandardSeconds(); - - int paddingnumber = (int) (intervalSeconds / timestep); - for( int m = 0; m < paddingnumber; m++ ) { - totalQshiftMatrix[i][m] = 0; - totalshiftmatrixindex++; - } - initalshiftmatrixindex = totalshiftmatrixindex; - for( int k = initalshiftmatrixindex; k < Q.length + initalshiftmatrixindex; k++ ) { - totalQshiftMatrix[i][k] = Q[k - initalshiftmatrixindex][1]; - totalshiftmatrixindex++; - } - for( int k = Q.length + totalshiftmatrixindex; k < totalQshiftMatrix[0].length; k++ ) { - totalQshiftMatrix[i][k] = 0; - } - i++; - pm.worked(1); - } - pm.done(); - - /* - * sum the discharge contributes - */ - Qtot = new double[totalQshiftMatrix[0].length][2]; - double tottime = 0f; - for( int k = 0; k < Qtot.length; k++ ) { - double sum = 0f; - for( int j = 0; j < totalQshiftMatrix.length; j++ ) { - sum = sum + totalQshiftMatrix[j][k]; - } - - tottime = tottime + timestep; - - Qtot[k][1] = sum; - Qtot[k][0] = tottime; - } - - double total_vol = 0f; - for( int k = 0; k < Qtot.length; k++ ) { - total_vol = total_vol + Qtot[k][1]; - } - double total_rain = 0.0; - for( DateTime dateTime : dates ) { - double J = jeff.get(dateTime); - total_rain = total_rain + J; - } - total_rain = total_rain * area_tot * raintimestep; - - return Qtot; - } - - /* - * (non-Javadoc) - * @see bsh.commands.h.peakflow.core.discharge.DischargeCalculator#calculateQmax() - */ - public double calculateQmax() { - if (Qtot == null) { - calculateQ(); - } - - double qmax = 0f; - for( int i = 0; i < Qtot.length; i++ ) { - if (Qtot[i][1] > qmax) - qmax = Qtot[i][1]; - } - - return qmax; - } - - /* - * (non-Javadoc) - * @see bsh.commands.h.peakflow.core.discharge.DischargeCalculator#getTpMax() - */ - public double getTpMax() { - return tpmax; - } - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge; + +import java.util.Map; +import java.util.Set; + +import org.jgrasstools.gears.libs.modules.ModelsEngine; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHCalculator; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff.RealJeff; +import org.joda.time.DateTime; +import org.joda.time.Duration; + +/** + * @author Silvia franceschi (www.hydrologis.com) + * @author Andrea Antonello (www.hydrologis.com) + */ +public class QReal implements DischargeCalculator { + + private RealJeff jeffC = null; + + private Map jeff = null; + + private double[][] ampi = null; + + private double tpmax = 0f; + + private ParameterBox fixedParams = null; + + private double[][] Qtot = null; + + private final IJGTProgressMonitor pm; + + /** + * Calculate the discharge with rainfall data + */ + public QReal( ParameterBox fixedParameters, IUHCalculator iuhC, RealJeff jeffC, IJGTProgressMonitor pm ) { + this.jeffC = jeffC; + + this.fixedParams = fixedParameters; + this.pm = pm; + + jeff = jeffC.calculateJeff(); + ampi = iuhC.calculateIUH(); + } + + /** + * Calculate the discharge with rainfall data. + */ + // public QReal( ParameterBox fixedParameters, double[][] iuhdata, double[][] jeffdata ) { + // fixedParams = fixedParameters; + // + // jeff = jeffdata; + // ampi = iuhdata; + // + // System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAA: ampilength " + ampi[ampi.length - 1][0]); + // } + + /* + * (non-Javadoc) + * @see bsh.commands.h.peakflow.core.discharge.DischargeCalculator#calculateQ() + */ + public double[][] calculateQ() { + double timestep = fixedParams.getTimestep(); + double area_super = fixedParams.getArea(); + double area_sub = fixedParams.getArea_sub(); + double area_tot = 0f; + + double raintimestep = jeffC.getRain_timestep(); + DateTime firstDate = jeffC.getFirstDate(); + + /* + * The maximum rain time has no sense with the real precipitations. In this case it will use + * the rain timestep for tp. + */ + double tcorr = ampi[ampi.length - 1][0]; + tpmax = (double) raintimestep; + int rainLength = jeff.size(); + double[][] totalQshiftMatrix = new double[rainLength][(int) (Math.floor((tcorr + tpmax) / timestep) + 1 + rainLength + * raintimestep / timestep)]; + double[][] Q = new double[(int) Math.floor((tcorr + tpmax) / timestep) + 1][3]; + + if (area_sub != -9999.0) { + area_tot = area_sub + area_super; + } else { + area_tot = area_super; + } + + Set dates = jeff.keySet(); + pm.beginTask("Calculating discharge...", dates.size()); + int i = 0; + for( DateTime dateTime : dates ) { + double J = jeff.get(dateTime); + /* + * calculate the discharge for t < tcorr + */ + int j = 0; + for( int t = 1; t < tcorr; t += timestep ) { + j = (int) Math.floor((t) / timestep); + + if (t <= tpmax) { + Q[j][0] = t; + double widthInterpolate = ModelsEngine.width_interpolate(ampi, t, 0, 2); + Q[j][1] = (double) (J * area_tot * widthInterpolate); + Q[j][2] = Q[j - 1][2] + Q[j][1]; + } else { + Q[j][0] = t; + Q[j][1] = (double) (J * area_tot * (ModelsEngine.width_interpolate(ampi, t, 0, 2) - ModelsEngine + .width_interpolate(ampi, t - tpmax, 0, 2))); + Q[j][2] = Q[j - 1][2] + Q[j][1]; + } + } + + /* + * calculate the discharge for t > tcorr + */ + + for( double t = tcorr; t < (tcorr + tpmax); t += timestep ) { + j = (int) Math.floor(((int) t) / timestep); + Q[j][0] = t; + Q[j][1] = (double) (J * area_tot * (ampi[ampi.length - 1][2] - ModelsEngine.width_interpolate(ampi, t - tpmax, 0, + 2))); + Q[j][2] = Q[j - 1][2] + Q[j][1]; + } + + /* + * calculate the volumes + */ + // double vol = Q[Q.length - 2][2] * timestep; + // double vol2 = (double) (area_tot * J * raintimestep); + + /* + * calculate zero padding before first value Note that jeff contains already the + * progressive time of the rainfile. + */ + int totalshiftmatrixindex = 0; + int initalshiftmatrixindex = 0; + // FIXME time in ??? + Duration duration = new Duration(firstDate, dateTime); + long intervalSeconds = duration.getStandardSeconds(); + + int paddingnumber = (int) (intervalSeconds / timestep); + for( int m = 0; m < paddingnumber; m++ ) { + totalQshiftMatrix[i][m] = 0; + totalshiftmatrixindex++; + } + initalshiftmatrixindex = totalshiftmatrixindex; + for( int k = initalshiftmatrixindex; k < Q.length + initalshiftmatrixindex; k++ ) { + totalQshiftMatrix[i][k] = Q[k - initalshiftmatrixindex][1]; + totalshiftmatrixindex++; + } + for( int k = Q.length + totalshiftmatrixindex; k < totalQshiftMatrix[0].length; k++ ) { + totalQshiftMatrix[i][k] = 0; + } + i++; + pm.worked(1); + } + pm.done(); + + /* + * sum the discharge contributes + */ + Qtot = new double[totalQshiftMatrix[0].length][2]; + double tottime = 0f; + for( int k = 0; k < Qtot.length; k++ ) { + double sum = 0f; + for( int j = 0; j < totalQshiftMatrix.length; j++ ) { + sum = sum + totalQshiftMatrix[j][k]; + } + + tottime = tottime + timestep; + + Qtot[k][1] = sum; + Qtot[k][0] = tottime; + } + + double total_vol = 0f; + for( int k = 0; k < Qtot.length; k++ ) { + total_vol = total_vol + Qtot[k][1]; + } + double total_rain = 0.0; + for( DateTime dateTime : dates ) { + double J = jeff.get(dateTime); + total_rain = total_rain + J; + } + total_rain = total_rain * area_tot * raintimestep; + + return Qtot; + } + + /* + * (non-Javadoc) + * @see bsh.commands.h.peakflow.core.discharge.DischargeCalculator#calculateQmax() + */ + public double calculateQmax() { + if (Qtot == null) { + calculateQ(); + } + + double qmax = 0f; + for( int i = 0; i < Qtot.length; i++ ) { + if (Qtot[i][1] > qmax) + qmax = Qtot[i][1]; + } + + return qmax; + } + + /* + * (non-Javadoc) + * @see bsh.commands.h.peakflow.core.discharge.DischargeCalculator#getTpMax() + */ + public double getTpMax() { + return tpmax; + } + } \ No newline at end of file diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QScs.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QScs.java index 4d78c8418..72bf5a3d5 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QScs.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QScs.java @@ -1,127 +1,127 @@ -///* -// * JGrass - Free Open Source Java GIS http://www.jgrass.org -// * (C) HydroloGIS - www.hydrologis.com -// * -// * This library is free software; you can redistribute it and/or modify it under -// * the terms of the GNU Library General Public License as published by the Free -// * Software Foundation; either version 2 of the License, or (at your option) any -// * later version. -// * -// * This library is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more -// * details. -// * -// * You should have received a copy of the GNU Library General Public License -// * along with this library; if not, write to the Free Foundation, Inc., 59 -// * Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -//package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge; -// -//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; -//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHCalculator; -// -///** -// * @deprecated THIS IS NOT WORKING!!! It is here just for future reference. -// */ -//public class QScs implements DischargeCalculator { -// -// private double[][] jeffsup = null; -// private double[][] jeffsub = null; -// private double[][] qTot = null; -// private double tpmax = 0f; -// // private int timestep = 1; -// -// public QScs( double[][] jeff, ParameterBox _parambox, IUHCalculator iuhCalc ) { -// -// // create jsup, jsub -// jeffsup = new double[jeff.length][2]; -// jeffsub = new double[jeff.length][2]; -// for( int i = 0; i < jeffsub.length; i++ ) { -// jeffsup[i][0] = jeff[i][0]; -// jeffsup[i][1] = jeff[i][1]; -// jeffsub[i][0] = jeff[i][0]; -// jeffsub[i][1] = jeff[i][2]; -// } -// -// tpmax = (double) (jeffsup[1][0] - jeffsup[0][0]); -// -// } -// -// public double calculateQmax() { -// if (qTot == null) { -// calculateQ(); -// } -// -// double qmax = 0f; -// for( int i = 0; i < qTot.length; i++ ) { -// if (qTot[i][1] > qmax) -// qmax = qTot[i][1]; -// } -// -// return qmax; -// } -// -// public double[][] calculateQ() { -// if (true) -// throw new RuntimeException("SCS not implemented yet!!!"); -// -// QReal qSup = null; // new QReal(parambox, iuhCalculator.getIUHSuperficial(), jeffsup); -// QReal qSub = null; // new QReal(parambox, iuhCalculator.getIUHSubsuperficial(), jeffsub); -// -// double[][] qsup = qSup.calculateQ(); -// double[][] qsub = qSub.calculateQ(); -// -// // if (parambox.getFileToDump() != null) { -// // dump to file -// // DataSource outfile1 = new DataSource("file:" + parambox.getOutputFile() -// // + "_q_sup"); -// // DataSource outfile2 = new DataSource("file:" + parambox.getOutputFile() -// // + "_q_sub"); -// // OutputStreamWriter writeoutfile1 = outfile1.getOutputStreamWriter(); -// // OutputStreamWriter writeoutfile2 = outfile2.getOutputStreamWriter(); -// // try -// // { -// // writeoutfile1.write("time q_sup\n"); -// // writeoutfile2.write("time q_sub\n"); -// // for (int i = 0; i < qsup.length; i++) -// // { -// // writeoutfile1.write(qsup[i][0] + " " + qsup[i][1] + "\n"); -// // } -// // for (int i = 0; i < qsub.length; i++) -// // { -// // writeoutfile2.write(qsub[i][0] + " " + qsub[i][1] + "\n"); -// // } -// // writeoutfile1.close(); -// // writeoutfile2.close(); -// // } -// // catch (IOException e) -// // { -// // // TODO Auto-generated catch block -// // e.printStackTrace(); -// // } -// -// // } -// -// qTot = new double[qsub.length][2]; -// -// for( int i = 0; i < qsup.length; i++ ) { -// -// qTot[i][0] = qsup[i][0]; -// qTot[i][1] = qsub[i][1] + qsup[i][1]; -// // (double) FluidUtils.width_interpolate(qsub, (double) i, 0, 1) -// } -// for( int i = qsup.length; i < qsub.length; i++ ) { -// -// qTot[i][0] = qsub[i][0]; -// qTot[i][1] = qsub[i][1]; -// } -// -// return qTot; -// } -// -// public double getTpMax() { -// return tpmax; -// } -// -//} +///* +// * JGrass - Free Open Source Java GIS http://www.jgrass.org +// * (C) HydroloGIS - www.hydrologis.com +// * +// * This library is free software; you can redistribute it and/or modify it under +// * the terms of the GNU Library General Public License as published by the Free +// * Software Foundation; either version 2 of the License, or (at your option) any +// * later version. +// * +// * This library is distributed in the hope that it will be useful, but WITHOUT +// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +// * details. +// * +// * You should have received a copy of the GNU Library General Public License +// * along with this library; if not, write to the Free Foundation, Inc., 59 +// * Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +//package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge; +// +//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; +//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHCalculator; +// +///** +// * @deprecated THIS IS NOT WORKING!!! It is here just for future reference. +// */ +//public class QScs implements DischargeCalculator { +// +// private double[][] jeffsup = null; +// private double[][] jeffsub = null; +// private double[][] qTot = null; +// private double tpmax = 0f; +// // private int timestep = 1; +// +// public QScs( double[][] jeff, ParameterBox _parambox, IUHCalculator iuhCalc ) { +// +// // create jsup, jsub +// jeffsup = new double[jeff.length][2]; +// jeffsub = new double[jeff.length][2]; +// for( int i = 0; i < jeffsub.length; i++ ) { +// jeffsup[i][0] = jeff[i][0]; +// jeffsup[i][1] = jeff[i][1]; +// jeffsub[i][0] = jeff[i][0]; +// jeffsub[i][1] = jeff[i][2]; +// } +// +// tpmax = (double) (jeffsup[1][0] - jeffsup[0][0]); +// +// } +// +// public double calculateQmax() { +// if (qTot == null) { +// calculateQ(); +// } +// +// double qmax = 0f; +// for( int i = 0; i < qTot.length; i++ ) { +// if (qTot[i][1] > qmax) +// qmax = qTot[i][1]; +// } +// +// return qmax; +// } +// +// public double[][] calculateQ() { +// if (true) +// throw new RuntimeException("SCS not implemented yet!!!"); +// +// QReal qSup = null; // new QReal(parambox, iuhCalculator.getIUHSuperficial(), jeffsup); +// QReal qSub = null; // new QReal(parambox, iuhCalculator.getIUHSubsuperficial(), jeffsub); +// +// double[][] qsup = qSup.calculateQ(); +// double[][] qsub = qSub.calculateQ(); +// +// // if (parambox.getFileToDump() != null) { +// // dump to file +// // DataSource outfile1 = new DataSource("file:" + parambox.getOutputFile() +// // + "_q_sup"); +// // DataSource outfile2 = new DataSource("file:" + parambox.getOutputFile() +// // + "_q_sub"); +// // OutputStreamWriter writeoutfile1 = outfile1.getOutputStreamWriter(); +// // OutputStreamWriter writeoutfile2 = outfile2.getOutputStreamWriter(); +// // try +// // { +// // writeoutfile1.write("time q_sup\n"); +// // writeoutfile2.write("time q_sub\n"); +// // for (int i = 0; i < qsup.length; i++) +// // { +// // writeoutfile1.write(qsup[i][0] + " " + qsup[i][1] + "\n"); +// // } +// // for (int i = 0; i < qsub.length; i++) +// // { +// // writeoutfile2.write(qsub[i][0] + " " + qsub[i][1] + "\n"); +// // } +// // writeoutfile1.close(); +// // writeoutfile2.close(); +// // } +// // catch (IOException e) +// // { +// // // TODO Auto-generated catch block +// // e.printStackTrace(); +// // } +// +// // } +// +// qTot = new double[qsub.length][2]; +// +// for( int i = 0; i < qsup.length; i++ ) { +// +// qTot[i][0] = qsup[i][0]; +// qTot[i][1] = qsub[i][1] + qsup[i][1]; +// // (double) FluidUtils.width_interpolate(qsub, (double) i, 0, 1) +// } +// for( int i = qsup.length; i < qsub.length; i++ ) { +// +// qTot[i][0] = qsub[i][0]; +// qTot[i][1] = qsub[i][1]; +// } +// +// return qTot; +// } +// +// public double getTpMax() { +// return tpmax; +// } +// +//} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QStatistic.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QStatistic.java index 3c9fff03e..b33c03f74 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QStatistic.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/discharge/QStatistic.java @@ -1,160 +1,160 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge; - -import org.jgrasstools.gears.libs.modules.ModelsEngine; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHCalculator; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff.StatisticJeff; - -/** - * @author Silvia Franceschi (www.hydrologis.com) - * @author Andrea Antonello (www.hydrologis.com) - * @author Silvano Pisoni - */ -public class QStatistic implements DischargeCalculator { - - private ParameterBox fixedParams = null; - - private IUHCalculator iuhC = null; - - private double tpmax = 0f; - - private double J = 0f; - - private double h = 0f; - - private double[][] ampidiff = null; - - private final IJGTProgressMonitor pm; - - /** - * This class calculates maximum discharge and discharge. - * - * @param fixedParameters - set of initial parameters - * @param iuhC - abstraction of the iuh calculator - * @param jeffC - abstraction of the jeff calculator - * @param pm - */ - public QStatistic( ParameterBox fixedParameters, IUHCalculator iuhC, StatisticJeff jeffC, IJGTProgressMonitor pm ) { - this.fixedParams = fixedParameters; - - this.iuhC = iuhC; - this.pm = pm; - - double[][] jeff = jeffC.calculateJeff(); - J = jeff[0][0]; - h = jeff[0][1]; - tpmax = iuhC.getTpMax(); - - ampidiff = iuhC.calculateIUH(); - } - - public double calculateQmax() { - - double area_super = fixedParams.getArea(); - double area_sub = fixedParams.getArea_sub(); - double area_tot = 0f; - - /* if (effectsBox.containsKey("ampi_sub")) */ - if (area_sub != 0) { - area_tot = area_sub + area_super; - } else { - area_tot = area_super; - } - - double qmax = (double) (J * area_tot * (ModelsEngine.width_interpolate(ampidiff, iuhC.getTstarMax(), 0, 2) - ModelsEngine - .width_interpolate(ampidiff, iuhC.getTstarMax() - tpmax, 0, 2))); - - return qmax; - } - - public double[][] calculateQ() { - double timestep = fixedParams.getTimestep(); - double area_super = fixedParams.getArea(); - double area_sub = fixedParams.getArea_sub(); - double area_tot = 0f; - - double tcorr = ampidiff[ampidiff.length - 1][0]; - double[][] Q = new double[(int) Math.floor((tcorr + tpmax) / timestep) + 1][4]; - - if (area_sub != -9999.0) { - area_tot = area_sub + area_super; - } else { - area_tot = area_super; - } - - /* - * calculate the discharge for t < tcorr - */ - int j = 0; - pm.beginTask("Calculating discharge for t < tcorr...", (int) tcorr); - for( int t = 1; t < tcorr; t += timestep ) { - j = (int) Math.floor((t) / timestep); - - if (t <= tpmax) { - Q[j][0] = t; - Q[j][1] = (double) (J * area_tot * ModelsEngine.width_interpolate(ampidiff, t, 0, 2)); - Q[j][2] = Q[j - 1][2] + Q[j][1]; - Q[j][3] = h; - } else { - Q[j][0] = t; - Q[j][1] = (double) (J * area_tot * (ModelsEngine.width_interpolate(ampidiff, t, 0, 2) - ModelsEngine - .width_interpolate(ampidiff, t - tpmax, 0, 2))); - Q[j][2] = Q[j - 1][2] + Q[j][1]; - Q[j][3] = 0.0; - } - pm.worked((int) timestep); - } - pm.done(); - - /* - * calculate the discharge for t > tcorr - */ - pm.beginTask("Calculating discharge for t > tcorr...", (int) tpmax); - for( double t = tcorr; t < (tcorr + tpmax); t += timestep ) { - j = (int) Math.floor(((int) t) / timestep); - Q[j][0] = t; - Q[j][1] = (double) (J * area_tot * (ampidiff[ampidiff.length - 1][2] - ModelsEngine.width_interpolate(ampidiff, t - - tpmax, 0, 2))); - Q[j][2] = Q[j - 1][2] + Q[j][1]; - Q[j][3] = 0.0; - pm.worked((int) timestep); - } - pm.done(); - - /* - * calculate the volumes - */ - // double vol = Q[Q.length - 2][2] * timestep; - // double vol2 = (double) (area_tot * h / 1000); - - return Q; - } - - /* - * (non-Javadoc) - * @see bsh.commands.h.peakflow.discharge.DischargeCalculator#getTpMax() - */ - public double getTpMax() { - return tpmax; - } - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.discharge; + +import org.jgrasstools.gears.libs.modules.ModelsEngine; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh.IUHCalculator; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff.StatisticJeff; + +/** + * @author Silvia Franceschi (www.hydrologis.com) + * @author Andrea Antonello (www.hydrologis.com) + * @author Silvano Pisoni + */ +public class QStatistic implements DischargeCalculator { + + private ParameterBox fixedParams = null; + + private IUHCalculator iuhC = null; + + private double tpmax = 0f; + + private double J = 0f; + + private double h = 0f; + + private double[][] ampidiff = null; + + private final IJGTProgressMonitor pm; + + /** + * This class calculates maximum discharge and discharge. + * + * @param fixedParameters - set of initial parameters + * @param iuhC - abstraction of the iuh calculator + * @param jeffC - abstraction of the jeff calculator + * @param pm + */ + public QStatistic( ParameterBox fixedParameters, IUHCalculator iuhC, StatisticJeff jeffC, IJGTProgressMonitor pm ) { + this.fixedParams = fixedParameters; + + this.iuhC = iuhC; + this.pm = pm; + + double[][] jeff = jeffC.calculateJeff(); + J = jeff[0][0]; + h = jeff[0][1]; + tpmax = iuhC.getTpMax(); + + ampidiff = iuhC.calculateIUH(); + } + + public double calculateQmax() { + + double area_super = fixedParams.getArea(); + double area_sub = fixedParams.getArea_sub(); + double area_tot = 0f; + + /* if (effectsBox.containsKey("ampi_sub")) */ + if (area_sub != 0) { + area_tot = area_sub + area_super; + } else { + area_tot = area_super; + } + + double qmax = (double) (J * area_tot * (ModelsEngine.width_interpolate(ampidiff, iuhC.getTstarMax(), 0, 2) - ModelsEngine + .width_interpolate(ampidiff, iuhC.getTstarMax() - tpmax, 0, 2))); + + return qmax; + } + + public double[][] calculateQ() { + double timestep = fixedParams.getTimestep(); + double area_super = fixedParams.getArea(); + double area_sub = fixedParams.getArea_sub(); + double area_tot = 0f; + + double tcorr = ampidiff[ampidiff.length - 1][0]; + double[][] Q = new double[(int) Math.floor((tcorr + tpmax) / timestep) + 1][4]; + + if (area_sub != -9999.0) { + area_tot = area_sub + area_super; + } else { + area_tot = area_super; + } + + /* + * calculate the discharge for t < tcorr + */ + int j = 0; + pm.beginTask("Calculating discharge for t < tcorr...", (int) tcorr); + for( int t = 1; t < tcorr; t += timestep ) { + j = (int) Math.floor((t) / timestep); + + if (t <= tpmax) { + Q[j][0] = t; + Q[j][1] = (double) (J * area_tot * ModelsEngine.width_interpolate(ampidiff, t, 0, 2)); + Q[j][2] = Q[j - 1][2] + Q[j][1]; + Q[j][3] = h; + } else { + Q[j][0] = t; + Q[j][1] = (double) (J * area_tot * (ModelsEngine.width_interpolate(ampidiff, t, 0, 2) - ModelsEngine + .width_interpolate(ampidiff, t - tpmax, 0, 2))); + Q[j][2] = Q[j - 1][2] + Q[j][1]; + Q[j][3] = 0.0; + } + pm.worked((int) timestep); + } + pm.done(); + + /* + * calculate the discharge for t > tcorr + */ + pm.beginTask("Calculating discharge for t > tcorr...", (int) tpmax); + for( double t = tcorr; t < (tcorr + tpmax); t += timestep ) { + j = (int) Math.floor(((int) t) / timestep); + Q[j][0] = t; + Q[j][1] = (double) (J * area_tot * (ampidiff[ampidiff.length - 1][2] - ModelsEngine.width_interpolate(ampidiff, t + - tpmax, 0, 2))); + Q[j][2] = Q[j - 1][2] + Q[j][1]; + Q[j][3] = 0.0; + pm.worked((int) timestep); + } + pm.done(); + + /* + * calculate the volumes + */ + // double vol = Q[Q.length - 2][2] * timestep; + // double vol2 = (double) (area_tot * h / 1000); + + return Q; + } + + /* + * (non-Javadoc) + * @see bsh.commands.h.peakflow.discharge.DischargeCalculator#getTpMax() + */ + public double getTpMax() { + return tpmax; + } + } \ No newline at end of file diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHCalculator.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHCalculator.java index 164a043ca..4e4807080 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHCalculator.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHCalculator.java @@ -1,61 +1,61 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh; - -/** - * @author Andrea Antonello - www.hydrologis.com - * @author Silvia Franceschi - www.hydrologis.com - */ -public interface IUHCalculator { - - /** - * Calculate the Instantaneous Unit Hydrograph - * - * @return - */ - public double[][] calculateIUH(); - - /** - * Calculate the rain time at which corresponds the maximum discharge - * - * @return - */ - public double getTpMax(); - - /** - * Calculate the time corresponding to the maximum discharge - * - * @return - */ - public double getTstarMax(); - - /** - * retrieve iuh superficial - * - * @return - */ - public double[][] getIUHSuperficial(); - - /** - * retrieve iuh subsuperficial - * - * @return - */ - public double[][] getIUHSubsuperficial(); -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh; + +/** + * @author Andrea Antonello - www.hydrologis.com + * @author Silvia Franceschi - www.hydrologis.com + */ +public interface IUHCalculator { + + /** + * Calculate the Instantaneous Unit Hydrograph + * + * @return + */ + public double[][] calculateIUH(); + + /** + * Calculate the rain time at which corresponds the maximum discharge + * + * @return + */ + public double getTpMax(); + + /** + * Calculate the time corresponding to the maximum discharge + * + * @return + */ + public double getTstarMax(); + + /** + * retrieve iuh superficial + * + * @return + */ + public double[][] getIUHSuperficial(); + + /** + * retrieve iuh subsuperficial + * + * @return + */ + public double[][] getIUHSubsuperficial(); +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHDiffusion.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHDiffusion.java index 66523d386..1cf957182 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHDiffusion.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHDiffusion.java @@ -1,234 +1,234 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import org.jgrasstools.gears.libs.modules.ModelsEngine; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.EffectsBox; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; -/** - * @author Andrea Antonello - www.hydrologis.com - * @author Silvia Franceschi - www.hydrologis.com - */ -public class IUHDiffusion implements IUHCalculator { - - private double[][] totalampidiffusion = null; - - private double tpmax = 0f; - - private double tstarmax = 0f; - - private double[][] ampisubsurface = null; - private double[][] ampidiffsurface = null; - - private final IJGTProgressMonitor pm; - - /** - * @param effectsBox - * @param fixedParams - * @param pm - */ - public IUHDiffusion( EffectsBox effectsBox, ParameterBox fixedParams, IJGTProgressMonitor pm ) { - - this.pm = pm; - double n_idf = fixedParams.getN_idf(); - double area = fixedParams.getArea(); - double timestep = fixedParams.getTimestep(); - double delta_sup = fixedParams.getDelta(); - double delta_sub = fixedParams.getDelta_sub(); - double vc = fixedParams.getVc(); - double prov = 0f; - double dt = 0f; - double tstar = 0f; - double error = 100f; - double area_tot = 0f; - double area_sub = 0f; - - double[][] ampi_super = effectsBox.getAmpi(); - - IUHDiffusionSurface iuhDiffSurface = new IUHDiffusionSurface(ampi_super, fixedParams, pm); - ampidiffsurface = iuhDiffSurface.calculateIUH(); - - if (effectsBox.ampi_subExists()) { - area_sub = fixedParams.getArea_sub(); - double[][] ampi_help_sub = effectsBox.getAmpi_help_sub(); - - IUHSubSurface iuhSubSurface = new IUHSubSurface(ampi_help_sub, fixedParams, pm); - ampisubsurface = iuhSubSurface.calculateIUH(); - } - - double tcorr = ampidiffsurface[ampidiffsurface.length - 1][0]; - - totalampidiffusion = calculateTotalDiffusion(ampidiffsurface, ampisubsurface, delta_sup, delta_sub, vc, tcorr, area_sub, - area); - - /* - * next calculates the maximum rain time - */ - - if (effectsBox.ampi_subExists()) { - area_tot = area_sub + area; - } else { - area_tot = area; - } - - /* - * Skip the tpmax calculation if real rainfall data - */ - - if (effectsBox.rainDataExists()) { - tpmax = 0f; - return; - } - - int index = 0; - int threshold = (int) (tcorr / 100); - pm.beginTask("IUH Diffusion...", (int) tcorr); - for( int tp = 1; tp <= tcorr; tp += timestep ) { - if (index > threshold) { - index = 0; - } else { - index++; - } - - dt = ModelsEngine.henderson(totalampidiffusion, tp); - tstar = tp + dt; - if (tstar < tcorr) { - prov = n_idf - - 1 - + (tp * (double) ModelsEngine.width_interpolate(totalampidiffusion, tstar, 0, 1) / (area_tot * ((double) ModelsEngine - .width_interpolate(totalampidiffusion, tstar, 0, 2) - (double) ModelsEngine.width_interpolate( - totalampidiffusion, dt, 0, 2)))); - - if (Math.abs(prov) < error) { - tpmax = tp; - tstarmax = tpmax + dt; - error = Math.abs(prov); - } - } - pm.worked((int) timestep); - } - pm.done(); - - } - - /** - * Calculate the total IUH by summing the superficial and the subsuperficial IUH - * - * @param ampidiffsurface - * @param ampidiffsubsurface - * @return - */ - private double[][] calculateTotalDiffusion( double[][] ampidiffsurface, double[][] ampisubsurface, double delta_sup, - double delta_sub, double vc, double tcorr, double area_sub, double area_super ) { - - double[][] totaldiff = null; - - if (ampisubsurface == null) { - totaldiff = new double[ampidiffsurface.length][3]; - totaldiff = ampidiffsurface; - - } else { - /* - * calculate how many rows are in ampi_sub after ampi_sup has finished - */ - int rowinampisubwhereampisupfinishes = 0; - for( int i = 0; i < ampisubsurface.length; i++ ) { - if (ampisubsurface[i][0] >= ampidiffsurface[ampidiffsurface.length - 1][0]) { - rowinampisubwhereampisupfinishes = i; - break; - } - } - - int totallength = ampidiffsurface.length + ampisubsurface.length - rowinampisubwhereampisupfinishes; - - totaldiff = new double[totallength][3]; - - double intsub = 0f; - double intsup = 0f; - for( int i = 0; i < ampidiffsurface.length; i++ ) { - totaldiff[i][0] = ampidiffsurface[i][0]; - intsub = (double) ModelsEngine.width_interpolate(ampisubsurface, ampidiffsurface[i][0], 0, 1); - intsup = ampidiffsurface[i][1]; - if (isNovalue(intsub)) { - pm.errorMessage("Found undefined interpolated value for subsuperficial. Not summing it. Index: " + i); - totaldiff[i][1] = intsup; - } else { - totaldiff[i][1] = intsup + intsub; - - } - - } - for( int i = ampidiffsurface.length, j = rowinampisubwhereampisupfinishes; i < totallength; i++, j++ ) { - totaldiff[i][0] = ampisubsurface[j][0]; - totaldiff[i][1] = ampisubsurface[j][1]; - } - - /* - * calculation of the third column = cumulated The normalization occurs by means of the - * superficial delta in the first part of the hydrogram, i.e. until the superficial - * contributes, after that the delta is the one of the subsuperficial. - */ - double cum = 0f; - for( int i = 0; i < ampidiffsurface.length; i++ ) { - cum = cum + (totaldiff[i][1] * delta_sup) / ((area_super + area_sub) * vc); - totaldiff[i][2] = cum; - } - for( int i = ampidiffsurface.length, j = rowinampisubwhereampisupfinishes; i < totallength; i++, j++ ) { - cum = cum + (totaldiff[i][1] * delta_sub) / ((area_super + area_sub) * vc); - totaldiff[i][2] = cum; - } - } - - return totaldiff; - } - /* - * (non-Javadoc) - * @see bsh.commands.h.peakflow.iuh.IUHCalculator#calculateIUH() - */ - public double[][] calculateIUH() { - return totalampidiffusion; - } - - /* - * (non-Javadoc) - * @see bsh.commands.h.peakflow.iuh.IUHCalculator#getTpMax() - */ - public double getTpMax() { - return tpmax; - } - - /* - * (non-Javadoc) - * @see bsh.commands.h.peakflow.iuh.IUHCalculator#getTstarMax() - */ - public double getTstarMax() { - return tstarmax; - } - - public double[][] getIUHSuperficial() { - return ampidiffsurface; - } - - public double[][] getIUHSubsuperficial() { - return ampisubsurface; - } - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import org.jgrasstools.gears.libs.modules.ModelsEngine; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.EffectsBox; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; +/** + * @author Andrea Antonello - www.hydrologis.com + * @author Silvia Franceschi - www.hydrologis.com + */ +public class IUHDiffusion implements IUHCalculator { + + private double[][] totalampidiffusion = null; + + private double tpmax = 0f; + + private double tstarmax = 0f; + + private double[][] ampisubsurface = null; + private double[][] ampidiffsurface = null; + + private final IJGTProgressMonitor pm; + + /** + * @param effectsBox + * @param fixedParams + * @param pm + */ + public IUHDiffusion( EffectsBox effectsBox, ParameterBox fixedParams, IJGTProgressMonitor pm ) { + + this.pm = pm; + double n_idf = fixedParams.getN_idf(); + double area = fixedParams.getArea(); + double timestep = fixedParams.getTimestep(); + double delta_sup = fixedParams.getDelta(); + double delta_sub = fixedParams.getDelta_sub(); + double vc = fixedParams.getVc(); + double prov = 0f; + double dt = 0f; + double tstar = 0f; + double error = 100f; + double area_tot = 0f; + double area_sub = 0f; + + double[][] ampi_super = effectsBox.getAmpi(); + + IUHDiffusionSurface iuhDiffSurface = new IUHDiffusionSurface(ampi_super, fixedParams, pm); + ampidiffsurface = iuhDiffSurface.calculateIUH(); + + if (effectsBox.ampi_subExists()) { + area_sub = fixedParams.getArea_sub(); + double[][] ampi_help_sub = effectsBox.getAmpi_help_sub(); + + IUHSubSurface iuhSubSurface = new IUHSubSurface(ampi_help_sub, fixedParams, pm); + ampisubsurface = iuhSubSurface.calculateIUH(); + } + + double tcorr = ampidiffsurface[ampidiffsurface.length - 1][0]; + + totalampidiffusion = calculateTotalDiffusion(ampidiffsurface, ampisubsurface, delta_sup, delta_sub, vc, tcorr, area_sub, + area); + + /* + * next calculates the maximum rain time + */ + + if (effectsBox.ampi_subExists()) { + area_tot = area_sub + area; + } else { + area_tot = area; + } + + /* + * Skip the tpmax calculation if real rainfall data + */ + + if (effectsBox.rainDataExists()) { + tpmax = 0f; + return; + } + + int index = 0; + int threshold = (int) (tcorr / 100); + pm.beginTask("IUH Diffusion...", (int) tcorr); + for( int tp = 1; tp <= tcorr; tp += timestep ) { + if (index > threshold) { + index = 0; + } else { + index++; + } + + dt = ModelsEngine.henderson(totalampidiffusion, tp); + tstar = tp + dt; + if (tstar < tcorr) { + prov = n_idf + - 1 + + (tp * (double) ModelsEngine.width_interpolate(totalampidiffusion, tstar, 0, 1) / (area_tot * ((double) ModelsEngine + .width_interpolate(totalampidiffusion, tstar, 0, 2) - (double) ModelsEngine.width_interpolate( + totalampidiffusion, dt, 0, 2)))); + + if (Math.abs(prov) < error) { + tpmax = tp; + tstarmax = tpmax + dt; + error = Math.abs(prov); + } + } + pm.worked((int) timestep); + } + pm.done(); + + } + + /** + * Calculate the total IUH by summing the superficial and the subsuperficial IUH + * + * @param ampidiffsurface + * @param ampidiffsubsurface + * @return + */ + private double[][] calculateTotalDiffusion( double[][] ampidiffsurface, double[][] ampisubsurface, double delta_sup, + double delta_sub, double vc, double tcorr, double area_sub, double area_super ) { + + double[][] totaldiff = null; + + if (ampisubsurface == null) { + totaldiff = new double[ampidiffsurface.length][3]; + totaldiff = ampidiffsurface; + + } else { + /* + * calculate how many rows are in ampi_sub after ampi_sup has finished + */ + int rowinampisubwhereampisupfinishes = 0; + for( int i = 0; i < ampisubsurface.length; i++ ) { + if (ampisubsurface[i][0] >= ampidiffsurface[ampidiffsurface.length - 1][0]) { + rowinampisubwhereampisupfinishes = i; + break; + } + } + + int totallength = ampidiffsurface.length + ampisubsurface.length - rowinampisubwhereampisupfinishes; + + totaldiff = new double[totallength][3]; + + double intsub = 0f; + double intsup = 0f; + for( int i = 0; i < ampidiffsurface.length; i++ ) { + totaldiff[i][0] = ampidiffsurface[i][0]; + intsub = (double) ModelsEngine.width_interpolate(ampisubsurface, ampidiffsurface[i][0], 0, 1); + intsup = ampidiffsurface[i][1]; + if (isNovalue(intsub)) { + pm.errorMessage("Found undefined interpolated value for subsuperficial. Not summing it. Index: " + i); + totaldiff[i][1] = intsup; + } else { + totaldiff[i][1] = intsup + intsub; + + } + + } + for( int i = ampidiffsurface.length, j = rowinampisubwhereampisupfinishes; i < totallength; i++, j++ ) { + totaldiff[i][0] = ampisubsurface[j][0]; + totaldiff[i][1] = ampisubsurface[j][1]; + } + + /* + * calculation of the third column = cumulated The normalization occurs by means of the + * superficial delta in the first part of the hydrogram, i.e. until the superficial + * contributes, after that the delta is the one of the subsuperficial. + */ + double cum = 0f; + for( int i = 0; i < ampidiffsurface.length; i++ ) { + cum = cum + (totaldiff[i][1] * delta_sup) / ((area_super + area_sub) * vc); + totaldiff[i][2] = cum; + } + for( int i = ampidiffsurface.length, j = rowinampisubwhereampisupfinishes; i < totallength; i++, j++ ) { + cum = cum + (totaldiff[i][1] * delta_sub) / ((area_super + area_sub) * vc); + totaldiff[i][2] = cum; + } + } + + return totaldiff; + } + /* + * (non-Javadoc) + * @see bsh.commands.h.peakflow.iuh.IUHCalculator#calculateIUH() + */ + public double[][] calculateIUH() { + return totalampidiffusion; + } + + /* + * (non-Javadoc) + * @see bsh.commands.h.peakflow.iuh.IUHCalculator#getTpMax() + */ + public double getTpMax() { + return tpmax; + } + + /* + * (non-Javadoc) + * @see bsh.commands.h.peakflow.iuh.IUHCalculator#getTstarMax() + */ + public double getTstarMax() { + return tstarmax; + } + + public double[][] getIUHSuperficial() { + return ampidiffsurface; + } + + public double[][] getIUHSubsuperficial() { + return ampisubsurface; + } + } \ No newline at end of file diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHDiffusionSurface.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHDiffusionSurface.java index 4f6e62ab3..323eaaf5b 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHDiffusionSurface.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHDiffusionSurface.java @@ -1,101 +1,101 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh; - -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.math.integration.ConvolutionDiffusionWidth; -import org.jgrasstools.gears.utils.math.integration.IntegralConstants; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; - -/** - * @author Silvia Franceschi (www.hydrologis.com) - * @author Andrea Antonello (www.hydrologis.com) - */ -public class IUHDiffusionSurface { - - private double[][] ampi_diffusion = null; - private double[][] ampi = null; - private double diffusionparameter = 0f; - private double vc = 0f; - private double delta = 0f; - private double xres = 0f; - private double yres = 0f; - private double npixel = 0f; - private final IJGTProgressMonitor pm; - - /** - * @param out - * - */ - public IUHDiffusionSurface( double[][] _ampi, ParameterBox fixedParameters, - IJGTProgressMonitor pm ) { - ampi = _ampi; - this.pm = pm; - delta = fixedParameters.getDelta(); - - double threshold = 5000f; - ampi_diffusion = new double[(int) (ampi.length + threshold / delta)][ampi[0].length]; - - for( int i = 0; i < ampi.length; i++ ) { - ampi_diffusion[i][0] = ampi[i][0]; - } - for( int i = 1; i < threshold / delta; i++ ) { - ampi_diffusion[ampi.length - 1 + i][0] = ampi[ampi.length - 1][0] + i * delta; - } - - diffusionparameter = fixedParameters.getDiffusionparameter(); - vc = fixedParameters.getVc(); - xres = fixedParameters.getXres(); - yres = fixedParameters.getYres(); - npixel = fixedParameters.getNpixel(); - } - - public double[][] calculateIUH() { - double cum = 0f; - double t = 0; - double integral = 0; - - /* - * next part calculates the convolution between the aplitude function and the diffusion - * equation - */ - ConvolutionDiffusionWidth diffIntegral = new ConvolutionDiffusionWidth(0.0, - ampi_diffusion[ampi_diffusion.length - 1][0], IntegralConstants.diffusionmaxsteps, - IntegralConstants.diffusionaccurancy, ampi, diffusionparameter, t); - - pm.beginTask("Calculating diffusion...", ampi_diffusion.length - 1); - for( int i = 0; i < ampi_diffusion.length - 1; i++ ) { - - t = ampi_diffusion[i + 1][0]; - - diffIntegral.updateTime((int) t); - integral = diffIntegral.integrate(); - - ampi_diffusion[i + 1][1] = integral; - cum += integral * delta / (xres * yres * npixel * vc); - ampi_diffusion[i + 1][2] = cum; - - pm.worked(1); - } - pm.done(); - - return ampi_diffusion; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh; + +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.math.integration.ConvolutionDiffusionWidth; +import org.jgrasstools.gears.utils.math.integration.IntegralConstants; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; + +/** + * @author Silvia Franceschi (www.hydrologis.com) + * @author Andrea Antonello (www.hydrologis.com) + */ +public class IUHDiffusionSurface { + + private double[][] ampi_diffusion = null; + private double[][] ampi = null; + private double diffusionparameter = 0f; + private double vc = 0f; + private double delta = 0f; + private double xres = 0f; + private double yres = 0f; + private double npixel = 0f; + private final IJGTProgressMonitor pm; + + /** + * @param out + * + */ + public IUHDiffusionSurface( double[][] _ampi, ParameterBox fixedParameters, + IJGTProgressMonitor pm ) { + ampi = _ampi; + this.pm = pm; + delta = fixedParameters.getDelta(); + + double threshold = 5000f; + ampi_diffusion = new double[(int) (ampi.length + threshold / delta)][ampi[0].length]; + + for( int i = 0; i < ampi.length; i++ ) { + ampi_diffusion[i][0] = ampi[i][0]; + } + for( int i = 1; i < threshold / delta; i++ ) { + ampi_diffusion[ampi.length - 1 + i][0] = ampi[ampi.length - 1][0] + i * delta; + } + + diffusionparameter = fixedParameters.getDiffusionparameter(); + vc = fixedParameters.getVc(); + xres = fixedParameters.getXres(); + yres = fixedParameters.getYres(); + npixel = fixedParameters.getNpixel(); + } + + public double[][] calculateIUH() { + double cum = 0f; + double t = 0; + double integral = 0; + + /* + * next part calculates the convolution between the aplitude function and the diffusion + * equation + */ + ConvolutionDiffusionWidth diffIntegral = new ConvolutionDiffusionWidth(0.0, + ampi_diffusion[ampi_diffusion.length - 1][0], IntegralConstants.diffusionmaxsteps, + IntegralConstants.diffusionaccurancy, ampi, diffusionparameter, t); + + pm.beginTask("Calculating diffusion...", ampi_diffusion.length - 1); + for( int i = 0; i < ampi_diffusion.length - 1; i++ ) { + + t = ampi_diffusion[i + 1][0]; + + diffIntegral.updateTime((int) t); + integral = diffIntegral.integrate(); + + ampi_diffusion[i + 1][1] = integral; + cum += integral * delta / (xres * yres * npixel * vc); + ampi_diffusion[i + 1][2] = cum; + + pm.worked(1); + } + pm.done(); + + return ampi_diffusion; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHKinematic.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHKinematic.java index 936afe7f5..fca285f56 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHKinematic.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHKinematic.java @@ -1,243 +1,243 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh; - -import org.jgrasstools.gears.libs.modules.ModelsEngine; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.EffectsBox; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; - -/** - * @author Silvia Franceschi - www.hydrologis.com - * @author Andrea Antonello - www.hydrologis.com - */ -public class IUHKinematic implements IUHCalculator { - - private double[][] ampikinematic = null; - - private double[][] ampisubsurface = null; - - private double[][] totalampikinematic = null; - - private double tpmax = 0f; - - private double tstarmax = 0f; - - private double tstar = 0f; - - private double error = 100f; - - /** - * @param effectsBox - * @param fixedParams - * @param out printstream for info purposes - */ - public IUHKinematic( EffectsBox effectsBox, ParameterBox fixedParams, IJGTProgressMonitor pm ) { - - double area = fixedParams.getArea(); - double area_sub = fixedParams.getArea_sub(); - double delta_sup = fixedParams.getDelta(); - double delta_sub = fixedParams.getDelta_sub(); - double vc = fixedParams.getVc(); - double timestep = fixedParams.getTimestep(); - double n_idf = fixedParams.getN_idf(); - - double[][] ampi = effectsBox.getAmpi(); - double tcorr = ampi[ampi.length - 1][0]; - - /* - * Copy the ampi matrix in the ampikinematic because it represents the superficial - * contribute in the kinematic algorithm. - */ - ampikinematic = new double[ampi.length][ampi[0].length]; - for( int i = 0; i < ampi.length; i++ ) { - System.arraycopy(ampi[i], 0, ampikinematic[i], 0, ampi[0].length); - } - - if (effectsBox.ampi_subExists()) { - area_sub = fixedParams.getArea_sub(); - double[][] ampi_help_sub = effectsBox.getAmpi_help_sub(); - - IUHSubSurface iuhSubSurface = new IUHSubSurface(ampi_help_sub, fixedParams, pm); - ampisubsurface = iuhSubSurface.calculateIUH(); - } - - totalampikinematic = calculateTotalKinematic(ampikinematic, ampisubsurface, delta_sup, delta_sub, vc, tcorr, area_sub, - area); - - /* - * solve the equation of henderson W(dt)=W(dt+tp). Calculate tpmax e tstar max for the - * kinematic case. - */ - // double area_tot = 0f; - // if (effectsBox.ampi_subExists()) { - // area_tot = area_sub + area; - // } else { - // area_tot = area; - // } - - /* - * Skip the tpmax calculation if real rainfall data - */ - if (effectsBox.rainDataExists()) { - tpmax = 0f; - return; - } - - double dt = 0f; - double prov = 0f; - - int index = 0; - int threshold = (int) (tcorr / 100); - pm.beginTask("IUH kinematic...", (int) tcorr); - for( int tp = 1; tp <= tcorr; tp += timestep ) { - - if (index > threshold) { - index = 0; - } else { - index++; - } - dt = ModelsEngine.henderson(totalampikinematic, tp); - tstar = tp + dt; - if (tstar < tcorr) { - prov = n_idf - - 1 - + (tp * (double) ModelsEngine.width_interpolate(totalampikinematic, tstar, 0, 1) / (area * ((double) ModelsEngine - .width_interpolate(totalampikinematic, tstar, 0, 2) - (double) ModelsEngine.width_interpolate( - totalampikinematic, dt, 0, 2)))); - - if (Math.abs(prov) < error) { - tpmax = tp; - tstarmax = tpmax + dt; - error = Math.abs(prov); - - } - } - pm.worked((int) timestep); - } - pm.done(); - } - /** - * Calculate the total IUH by summing the superficial and the subsuperficial IUH - * - * @param ampikinesurface - * @param ampisubsurface - * @param delta_sup - * @param delta_sub - * @param vc - * @param tcorr - * @param area_sub - * @param area - * @return - */ - private double[][] calculateTotalKinematic( double[][] ampikinesurface, double[][] ampisubsurface, double delta_sup, - double delta_sub, double vc, double tcorr, double area_sub, double area_super ) { - - double[][] totalKinematic = null; - - if (ampisubsurface == null) { - totalKinematic = new double[ampikinesurface.length][3]; - totalKinematic = ampikinesurface; - - } else { - /* - * calculate how many rows are in ampi_sub after ampi_sup has finished - */ - int rowinampisubwhereampisupfinishes = 0; - for( int i = 0; i < ampisubsurface.length; i++ ) { - if (ampisubsurface[i][0] >= ampikinesurface[ampikinesurface.length - 1][0]) { - rowinampisubwhereampisupfinishes = i; - break; - } - } - - int totallength = ampikinesurface.length + ampisubsurface.length - rowinampisubwhereampisupfinishes; - - totalKinematic = new double[totallength][3]; - - double intsub = 0f; - double intsup = 0f; - for( int i = 0; i < ampikinesurface.length; i++ ) { - totalKinematic[i][0] = ampikinesurface[i][0]; - intsub = (double) ModelsEngine.width_interpolate(ampisubsurface, ampikinesurface[i][0], 0, 1); - intsup = ampikinesurface[i][1]; - - totalKinematic[i][1] = intsup + intsub; - } - for( int i = ampikinesurface.length, j = rowinampisubwhereampisupfinishes; i < totallength; i++, j++ ) { - totalKinematic[i][0] = ampisubsurface[j][0]; - totalKinematic[i][1] = ampisubsurface[j][1]; - } - - /* - * calculation of the third column = cumulated The normalization occurs by means of the - * superficial delta in the first part of the hydrogram, i.e. until the superficial - * contributes, after that the delta is the one of the subsuperficial. - */ - double cum = 0f; - for( int i = 0; i < ampikinesurface.length; i++ ) { - cum = cum + (totalKinematic[i][1] * delta_sup) / ((area_super + area_sub) * vc); - totalKinematic[i][2] = cum; - } - for( int i = ampikinesurface.length, j = rowinampisubwhereampisupfinishes; i < totallength; i++, j++ ) { - cum = cum + (totalKinematic[i][1] * delta_sub) / ((area_super + area_sub) * vc); - totalKinematic[i][2] = cum; - } - } - - return totalKinematic; - } - - public double[][] calculateIUH() { - return totalampikinematic; - } - - /* - * (non-Javadoc) - * @see bsh.commands.h.peakflow.iuh.IUHCalculator#getTpMax() - */ - public double getTpMax() { - return tpmax; - } - - /* - * (non-Javadoc) - * @see bsh.commands.h.peakflow.iuh.IUHCalculator#getTstarMax() - */ - public double getTstarMax() { - return tstarmax; - } - - /* - * (non-Javadoc) - * @see bsh.commands.h.hydropeak.core.iuh.IUHCalculator#getIUHSuperficial() - */ - public double[][] getIUHSuperficial() { - return ampikinematic; - } - - /* - * (non-Javadoc) - * @see bsh.commands.h.hydropeak.core.iuh.IUHCalculator#getIUHSubsuperficial() - */ - public double[][] getIUHSubsuperficial() { - return ampisubsurface; - } - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh; + +import org.jgrasstools.gears.libs.modules.ModelsEngine; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.EffectsBox; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; + +/** + * @author Silvia Franceschi - www.hydrologis.com + * @author Andrea Antonello - www.hydrologis.com + */ +public class IUHKinematic implements IUHCalculator { + + private double[][] ampikinematic = null; + + private double[][] ampisubsurface = null; + + private double[][] totalampikinematic = null; + + private double tpmax = 0f; + + private double tstarmax = 0f; + + private double tstar = 0f; + + private double error = 100f; + + /** + * @param effectsBox + * @param fixedParams + * @param out printstream for info purposes + */ + public IUHKinematic( EffectsBox effectsBox, ParameterBox fixedParams, IJGTProgressMonitor pm ) { + + double area = fixedParams.getArea(); + double area_sub = fixedParams.getArea_sub(); + double delta_sup = fixedParams.getDelta(); + double delta_sub = fixedParams.getDelta_sub(); + double vc = fixedParams.getVc(); + double timestep = fixedParams.getTimestep(); + double n_idf = fixedParams.getN_idf(); + + double[][] ampi = effectsBox.getAmpi(); + double tcorr = ampi[ampi.length - 1][0]; + + /* + * Copy the ampi matrix in the ampikinematic because it represents the superficial + * contribute in the kinematic algorithm. + */ + ampikinematic = new double[ampi.length][ampi[0].length]; + for( int i = 0; i < ampi.length; i++ ) { + System.arraycopy(ampi[i], 0, ampikinematic[i], 0, ampi[0].length); + } + + if (effectsBox.ampi_subExists()) { + area_sub = fixedParams.getArea_sub(); + double[][] ampi_help_sub = effectsBox.getAmpi_help_sub(); + + IUHSubSurface iuhSubSurface = new IUHSubSurface(ampi_help_sub, fixedParams, pm); + ampisubsurface = iuhSubSurface.calculateIUH(); + } + + totalampikinematic = calculateTotalKinematic(ampikinematic, ampisubsurface, delta_sup, delta_sub, vc, tcorr, area_sub, + area); + + /* + * solve the equation of henderson W(dt)=W(dt+tp). Calculate tpmax e tstar max for the + * kinematic case. + */ + // double area_tot = 0f; + // if (effectsBox.ampi_subExists()) { + // area_tot = area_sub + area; + // } else { + // area_tot = area; + // } + + /* + * Skip the tpmax calculation if real rainfall data + */ + if (effectsBox.rainDataExists()) { + tpmax = 0f; + return; + } + + double dt = 0f; + double prov = 0f; + + int index = 0; + int threshold = (int) (tcorr / 100); + pm.beginTask("IUH kinematic...", (int) tcorr); + for( int tp = 1; tp <= tcorr; tp += timestep ) { + + if (index > threshold) { + index = 0; + } else { + index++; + } + dt = ModelsEngine.henderson(totalampikinematic, tp); + tstar = tp + dt; + if (tstar < tcorr) { + prov = n_idf + - 1 + + (tp * (double) ModelsEngine.width_interpolate(totalampikinematic, tstar, 0, 1) / (area * ((double) ModelsEngine + .width_interpolate(totalampikinematic, tstar, 0, 2) - (double) ModelsEngine.width_interpolate( + totalampikinematic, dt, 0, 2)))); + + if (Math.abs(prov) < error) { + tpmax = tp; + tstarmax = tpmax + dt; + error = Math.abs(prov); + + } + } + pm.worked((int) timestep); + } + pm.done(); + } + /** + * Calculate the total IUH by summing the superficial and the subsuperficial IUH + * + * @param ampikinesurface + * @param ampisubsurface + * @param delta_sup + * @param delta_sub + * @param vc + * @param tcorr + * @param area_sub + * @param area + * @return + */ + private double[][] calculateTotalKinematic( double[][] ampikinesurface, double[][] ampisubsurface, double delta_sup, + double delta_sub, double vc, double tcorr, double area_sub, double area_super ) { + + double[][] totalKinematic = null; + + if (ampisubsurface == null) { + totalKinematic = new double[ampikinesurface.length][3]; + totalKinematic = ampikinesurface; + + } else { + /* + * calculate how many rows are in ampi_sub after ampi_sup has finished + */ + int rowinampisubwhereampisupfinishes = 0; + for( int i = 0; i < ampisubsurface.length; i++ ) { + if (ampisubsurface[i][0] >= ampikinesurface[ampikinesurface.length - 1][0]) { + rowinampisubwhereampisupfinishes = i; + break; + } + } + + int totallength = ampikinesurface.length + ampisubsurface.length - rowinampisubwhereampisupfinishes; + + totalKinematic = new double[totallength][3]; + + double intsub = 0f; + double intsup = 0f; + for( int i = 0; i < ampikinesurface.length; i++ ) { + totalKinematic[i][0] = ampikinesurface[i][0]; + intsub = (double) ModelsEngine.width_interpolate(ampisubsurface, ampikinesurface[i][0], 0, 1); + intsup = ampikinesurface[i][1]; + + totalKinematic[i][1] = intsup + intsub; + } + for( int i = ampikinesurface.length, j = rowinampisubwhereampisupfinishes; i < totallength; i++, j++ ) { + totalKinematic[i][0] = ampisubsurface[j][0]; + totalKinematic[i][1] = ampisubsurface[j][1]; + } + + /* + * calculation of the third column = cumulated The normalization occurs by means of the + * superficial delta in the first part of the hydrogram, i.e. until the superficial + * contributes, after that the delta is the one of the subsuperficial. + */ + double cum = 0f; + for( int i = 0; i < ampikinesurface.length; i++ ) { + cum = cum + (totalKinematic[i][1] * delta_sup) / ((area_super + area_sub) * vc); + totalKinematic[i][2] = cum; + } + for( int i = ampikinesurface.length, j = rowinampisubwhereampisupfinishes; i < totallength; i++, j++ ) { + cum = cum + (totalKinematic[i][1] * delta_sub) / ((area_super + area_sub) * vc); + totalKinematic[i][2] = cum; + } + } + + return totalKinematic; + } + + public double[][] calculateIUH() { + return totalampikinematic; + } + + /* + * (non-Javadoc) + * @see bsh.commands.h.peakflow.iuh.IUHCalculator#getTpMax() + */ + public double getTpMax() { + return tpmax; + } + + /* + * (non-Javadoc) + * @see bsh.commands.h.peakflow.iuh.IUHCalculator#getTstarMax() + */ + public double getTstarMax() { + return tstarmax; + } + + /* + * (non-Javadoc) + * @see bsh.commands.h.hydropeak.core.iuh.IUHCalculator#getIUHSuperficial() + */ + public double[][] getIUHSuperficial() { + return ampikinematic; + } + + /* + * (non-Javadoc) + * @see bsh.commands.h.hydropeak.core.iuh.IUHCalculator#getIUHSubsuperficial() + */ + public double[][] getIUHSubsuperficial() { + return ampisubsurface; + } + } \ No newline at end of file diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHSubSurface.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHSubSurface.java index 2122d3f3c..196c6eed2 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHSubSurface.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/iuh/IUHSubSurface.java @@ -1,91 +1,91 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh; - -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.math.integration.ConvolutionExponentialPeakflow; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; - -/** - * @author Silvia Franceschi (www.hydrologis.com) - * @author Andrea Antonello (www.hydrologis.com) - * @author Silvano Pisoni - */ -public class IUHSubSurface { - - private double[][] ampi_sub = null; - private double[][] ampi_help = null; - private double vc = 0f; - private double delta_sub = 0f; - private double xres = 0f; - private double yres = 0f; - private double npixel_sub = 0f; - private double resid_time = 0f; - private final IJGTProgressMonitor pm; - - public IUHSubSurface( double[][] _ampi, ParameterBox fixedParameters, IJGTProgressMonitor pm ) { - ampi_help = _ampi; - this.pm = pm; - ampi_sub = new double[ampi_help.length][ampi_help[0].length]; - - for( int i = 0; i < ampi_help.length; i++ ) { - ampi_sub[i][0] = ampi_help[i][0]; - } - - vc = fixedParameters.getVc(); - delta_sub = fixedParameters.getDelta_sub(); - xres = fixedParameters.getXres(); - yres = fixedParameters.getYres(); - npixel_sub = fixedParameters.getNpixel_sub(); - resid_time = fixedParameters.getResid_time(); - } - - public double[][] calculateIUH() { - double cum = 0f; - double t = 0; - double integral = 0; - - /* - * next part calculates the convolution between the aplitude function and the exponential - * equation - */ - pm.beginTask("Calculating subsurface IUH...", ampi_help.length - 1); - for( int i = 0; i < ampi_help.length - 1; i++ ) { - t = ampi_sub[i + 1][0]; - - double upperintegrationlimit = ampi_sub[ampi_sub.length - 1][0]; - ConvolutionExponentialPeakflow expIntegral = new ConvolutionExponentialPeakflow(0.0, - upperintegrationlimit, 20, 0.00001, ampi_help, resid_time, t); - - integral = expIntegral.integrate(); - ampi_sub[i + 1][1] = integral; - /* - * if (isScs) { cum += integral delta_sub / (xres yres npixel_sub vc / vcvv); } else { - */ - cum += integral * delta_sub / (xres * yres * npixel_sub * vc); - - ampi_sub[i + 1][2] = cum; - - pm.worked(1); - } - pm.done(); - - return ampi_sub; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.iuh; + +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.math.integration.ConvolutionExponentialPeakflow; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; + +/** + * @author Silvia Franceschi (www.hydrologis.com) + * @author Andrea Antonello (www.hydrologis.com) + * @author Silvano Pisoni + */ +public class IUHSubSurface { + + private double[][] ampi_sub = null; + private double[][] ampi_help = null; + private double vc = 0f; + private double delta_sub = 0f; + private double xres = 0f; + private double yres = 0f; + private double npixel_sub = 0f; + private double resid_time = 0f; + private final IJGTProgressMonitor pm; + + public IUHSubSurface( double[][] _ampi, ParameterBox fixedParameters, IJGTProgressMonitor pm ) { + ampi_help = _ampi; + this.pm = pm; + ampi_sub = new double[ampi_help.length][ampi_help[0].length]; + + for( int i = 0; i < ampi_help.length; i++ ) { + ampi_sub[i][0] = ampi_help[i][0]; + } + + vc = fixedParameters.getVc(); + delta_sub = fixedParameters.getDelta_sub(); + xres = fixedParameters.getXres(); + yres = fixedParameters.getYres(); + npixel_sub = fixedParameters.getNpixel_sub(); + resid_time = fixedParameters.getResid_time(); + } + + public double[][] calculateIUH() { + double cum = 0f; + double t = 0; + double integral = 0; + + /* + * next part calculates the convolution between the aplitude function and the exponential + * equation + */ + pm.beginTask("Calculating subsurface IUH...", ampi_help.length - 1); + for( int i = 0; i < ampi_help.length - 1; i++ ) { + t = ampi_sub[i + 1][0]; + + double upperintegrationlimit = ampi_sub[ampi_sub.length - 1][0]; + ConvolutionExponentialPeakflow expIntegral = new ConvolutionExponentialPeakflow(0.0, + upperintegrationlimit, 20, 0.00001, ampi_help, resid_time, t); + + integral = expIntegral.integrate(); + ampi_sub[i + 1][1] = integral; + /* + * if (isScs) { cum += integral delta_sub / (xres yres npixel_sub vc / vcvv); } else { + */ + cum += integral * delta_sub / (xres * yres * npixel_sub * vc); + + ampi_sub[i + 1][2] = cum; + + pm.worked(1); + } + pm.done(); + + return ampi_sub; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/RealJeff.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/RealJeff.java index 31a4f1851..8a634b530 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/RealJeff.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/RealJeff.java @@ -1,90 +1,90 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import org.joda.time.DateTime; -import org.joda.time.Interval; - -/** - * @author Andrea Antonello (www.hydrologis.com) - */ -public class RealJeff { - - private double rain_timestep = 0f; - private final HashMap rainfallMap; - - private DateTime first; - private DateTime second; - - /** - * @param rainfallMap the sorted map of rainfall values in time. This has to be a sorted map. - */ - public RealJeff( HashMap rainfallMap ) { - this.rainfallMap = rainfallMap; - - Set> entrySet = rainfallMap.entrySet(); - for( Entry entry : entrySet ) { - if (first == null) { - first = entry.getKey(); - } else if (second == null) { - second = entry.getKey(); - break; - } - } - - Interval interval = new Interval(first, second); - rain_timestep = interval.toDuration().getStandardSeconds(); - } - - public Map calculateJeff() { - Map jeffData = new LinkedHashMap(); - /* - * Jeff is returned in m/s instead of mm/h (which is the dimension - * of rain height over timestep. Therefore let's do some conversion. - */ - double converter = 1.0 / (1000.0 * 3600.0); - - Set> entrySet = rainfallMap.entrySet(); - for( Entry entry : entrySet ) { - DateTime dateTime = entry.getKey(); - // rainvalue is in mm/h - double rainValue = entry.getValue()[0]; - // need it in m/s - double jeff = converter * rainValue; - jeffData.put(dateTime, jeff); - } - - return jeffData; - } - - public double getRain_timestep() { - return rain_timestep; - } - - public DateTime getFirstDate() { - return first; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import org.joda.time.DateTime; +import org.joda.time.Interval; + +/** + * @author Andrea Antonello (www.hydrologis.com) + */ +public class RealJeff { + + private double rain_timestep = 0f; + private final HashMap rainfallMap; + + private DateTime first; + private DateTime second; + + /** + * @param rainfallMap the sorted map of rainfall values in time. This has to be a sorted map. + */ + public RealJeff( HashMap rainfallMap ) { + this.rainfallMap = rainfallMap; + + Set> entrySet = rainfallMap.entrySet(); + for( Entry entry : entrySet ) { + if (first == null) { + first = entry.getKey(); + } else if (second == null) { + second = entry.getKey(); + break; + } + } + + Interval interval = new Interval(first, second); + rain_timestep = interval.toDuration().getStandardSeconds(); + } + + public Map calculateJeff() { + Map jeffData = new LinkedHashMap(); + /* + * Jeff is returned in m/s instead of mm/h (which is the dimension + * of rain height over timestep. Therefore let's do some conversion. + */ + double converter = 1.0 / (1000.0 * 3600.0); + + Set> entrySet = rainfallMap.entrySet(); + for( Entry entry : entrySet ) { + DateTime dateTime = entry.getKey(); + // rainvalue is in mm/h + double rainValue = entry.getValue()[0]; + // need it in m/s + double jeff = converter * rainValue; + jeffData.put(dateTime, jeff); + } + + return jeffData; + } + + public double getRain_timestep() { + return rain_timestep; + } + + public DateTime getFirstDate() { + return first; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/SCSJeff.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/SCSJeff.java index 9ea26f111..c69921a72 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/SCSJeff.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/SCSJeff.java @@ -1,185 +1,185 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; -/** - * @author Silvia Franceschi (www.hydrologis.com) - * @author Andrea Antonello (www.hydrologis.com) - * - * @deprecated THIS IS NOT WORKING!!! It is here just for future reference. - */ -public class SCSJeff { - - private double[][] Jeff = null; - - /** - * - */ - public SCSJeff( double[][] cnMapData, float[][] raindata, float deltat, ParameterBox paramBox, - double nsres, double ewres ) { - double[][] cnMapnew = new double[cnMapData.length][cnMapData[0].length]; - double[][] Smap = new double[cnMapData.length][cnMapData[0].length]; - - double phi = paramBox.getPhi(); - - for( int i = 0; i < cnMapData.length; i++ ) { - for( int j = 0; j < cnMapData[0].length; j++ ) - - { - if (!isNovalue(cnMapData[i][j])) { - // in base alla scelta fatta dall'utente mi calcolo la nuova - // matrice dei CN,chiamata cnMapnew - switch( paramBox.getBasinstate() ) { - case 1: - cnMapnew[i][j] = ((4.2 * cnMapData[i][j]) / (10.0 - 0.058 * cnMapData[i][j])); - break; - case 2: - cnMapnew[i][j] = cnMapData[i][j]; - break; - case 3: - cnMapnew[i][j] = ((23.0 * cnMapData[i][j]) / (10.0 + 0.13 * cnMapData[i][j])); - break; - default: - break; - } - - Smap[i][j] = (1000.0 / cnMapnew[i][j] - 10.0) * 25.4; - } else { - cnMapnew[i][j] = doubleNovalue; - Smap[i][j] = doubleNovalue; - } - } - } - - // definisco i vettori dell'altezza di pioggia dell'intensità e - // dello scorrimento superficiale. - float[][] Jtot = new float[raindata.length][2]; - - /* - * Jtot[0][0] = 0f; Jtot[0][1] = 0f; - */ - - double[][] RsActual = new double[cnMapData.length][cnMapData[0].length]; - double[][] RsPrec = new double[cnMapData.length][cnMapData[0].length]; - double[][] JeffSup = new double[cnMapData.length][cnMapData[0].length]; - double[][] JeffSub = new double[cnMapData.length][cnMapData[0].length]; - double[][] Psup = new double[cnMapData.length][cnMapData[0].length]; - double[][] Psub = new double[cnMapData.length][cnMapData[0].length]; - Jeff = new double[raindata.length][3]; - - double converter = 1 / (1000.0 * 3600.0); - - float t = raindata[1][0]; - for( int k = 0; k < raindata.length; k++, t = t + deltat ) { - double j1 = 0.0; - double j2 = 0.0; - int activecells = 0; - - Jtot[k][0] = raindata[k][0]; - if (k == 0) { - Jtot[k][1] = raindata[k][1] / deltat; - } else { - Jtot[k][1] = Jtot[k - 1][1] + (raindata[k][1] / deltat); - } - - for( int i = 0; i < cnMapnew.length; i++ ) { - for( int j = 0; j < cnMapnew[0].length; j++ ) { - if (!isNovalue(cnMapnew[i][j])) { - // Impongo le condizioni affinchè il calcolo sia positivo. - if ((Jtot[k][1] * deltat) <= (0.2 * Smap[i][j])) { - RsActual[i][j] = 0.0; - } else { - RsActual[i][j] = (Math.pow((Jtot[k][1] * deltat - 0.2 * Smap[i][j]), - 2.0) / (Jtot[k][1] * deltat + 0.8 * Smap[i][j])); - } - - JeffSup[i][j] = (RsActual[i][j] - RsPrec[i][j]) / deltat; - JeffSub[i][j] = ((raindata[k][1] / deltat) - JeffSup[i][j]) * phi; - /* - * if (raindata[k][1] == 0 && JeffSup[i][j] != 0) { - * System.out.println("bau"); } - */ - - Psup[i][j] = JeffSup[i][j] * converter; - Psub[i][j] = JeffSub[i][j] * converter; - - j1 = j1 + Psup[i][j]; - j2 = j2 + Psub[i][j]; - // j3 = j3 + raindata[k][1] * converter; - activecells++; - } - } - } - - Jeff[k][0] = k * 3600; - - Jeff[k][1] = j1 / activecells; - Jeff[k][2] = j2 / activecells; - - /* - * if ((Jeff[k][1] + Jeff[k][2]) > 0.000009 || (Jeff[k][1] + Jeff[k][2]) > - * (raindata[k][1] / (deltat activecells))) { JOptionPane.showMessageDialog((JFrame) - * GrassEnvironmentManager .getInstance().getGuiParentFrame(), - * "Error in Jeff sum: Jeffsup + Jeffsub = Jefftot gives " + Jeff[k][1] + " + " + - * Jeff[k][2] + " > " + (raindata[k][1] / activecells) + "!", "Jeff Error", - * JOptionPane.ERROR_MESSAGE); } - */ - - for( int i = 0; i < RsActual.length; i++ ) { - for( int j = 0; j < RsActual[0].length; j++ ) { - RsPrec[i][j] = RsActual[i][j]; - } - } - } - - // if (paramBox.getFileToDump() != null) { - // TODO dump to file - // DataSource outfile1 = new DataSource("file:" + paramBox.getOutputFile() + - // "_Jeff_sup"); - // DataSource outfile2 = new DataSource("file:" + paramBox.getOutputFile() + - // "_Jeff_sub"); - // OutputStreamWriter writeoutfile1 = outfile1.getOutputStreamWriter(); - // OutputStreamWriter writeoutfile2 = outfile2.getOutputStreamWriter(); - // try { - // for( int m = 0; m < Jeff.length; m++ ) { - // writeoutfile1.write(Jeff[m][0] + " " + Jeff[m][1] + "\n"); - // writeoutfile2.write(Jeff[m][0] + " " + Jeff[m][2] + "\n"); - // } - // writeoutfile1.close(); - // writeoutfile2.close(); - // } catch (IOException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } - // } - } - - /* - * (non-Javadoc) - * @see bsh.commands.h.peakflow.jeff.JeffCalculator#calculateJeff() - */ - public double[][] calculateJeff() { - return Jeff; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; +/** + * @author Silvia Franceschi (www.hydrologis.com) + * @author Andrea Antonello (www.hydrologis.com) + * + * @deprecated THIS IS NOT WORKING!!! It is here just for future reference. + */ +public class SCSJeff { + + private double[][] Jeff = null; + + /** + * + */ + public SCSJeff( double[][] cnMapData, float[][] raindata, float deltat, ParameterBox paramBox, + double nsres, double ewres ) { + double[][] cnMapnew = new double[cnMapData.length][cnMapData[0].length]; + double[][] Smap = new double[cnMapData.length][cnMapData[0].length]; + + double phi = paramBox.getPhi(); + + for( int i = 0; i < cnMapData.length; i++ ) { + for( int j = 0; j < cnMapData[0].length; j++ ) + + { + if (!isNovalue(cnMapData[i][j])) { + // in base alla scelta fatta dall'utente mi calcolo la nuova + // matrice dei CN,chiamata cnMapnew + switch( paramBox.getBasinstate() ) { + case 1: + cnMapnew[i][j] = ((4.2 * cnMapData[i][j]) / (10.0 - 0.058 * cnMapData[i][j])); + break; + case 2: + cnMapnew[i][j] = cnMapData[i][j]; + break; + case 3: + cnMapnew[i][j] = ((23.0 * cnMapData[i][j]) / (10.0 + 0.13 * cnMapData[i][j])); + break; + default: + break; + } + + Smap[i][j] = (1000.0 / cnMapnew[i][j] - 10.0) * 25.4; + } else { + cnMapnew[i][j] = doubleNovalue; + Smap[i][j] = doubleNovalue; + } + } + } + + // definisco i vettori dell'altezza di pioggia dell'intensità e + // dello scorrimento superficiale. + float[][] Jtot = new float[raindata.length][2]; + + /* + * Jtot[0][0] = 0f; Jtot[0][1] = 0f; + */ + + double[][] RsActual = new double[cnMapData.length][cnMapData[0].length]; + double[][] RsPrec = new double[cnMapData.length][cnMapData[0].length]; + double[][] JeffSup = new double[cnMapData.length][cnMapData[0].length]; + double[][] JeffSub = new double[cnMapData.length][cnMapData[0].length]; + double[][] Psup = new double[cnMapData.length][cnMapData[0].length]; + double[][] Psub = new double[cnMapData.length][cnMapData[0].length]; + Jeff = new double[raindata.length][3]; + + double converter = 1 / (1000.0 * 3600.0); + + float t = raindata[1][0]; + for( int k = 0; k < raindata.length; k++, t = t + deltat ) { + double j1 = 0.0; + double j2 = 0.0; + int activecells = 0; + + Jtot[k][0] = raindata[k][0]; + if (k == 0) { + Jtot[k][1] = raindata[k][1] / deltat; + } else { + Jtot[k][1] = Jtot[k - 1][1] + (raindata[k][1] / deltat); + } + + for( int i = 0; i < cnMapnew.length; i++ ) { + for( int j = 0; j < cnMapnew[0].length; j++ ) { + if (!isNovalue(cnMapnew[i][j])) { + // Impongo le condizioni affinchè il calcolo sia positivo. + if ((Jtot[k][1] * deltat) <= (0.2 * Smap[i][j])) { + RsActual[i][j] = 0.0; + } else { + RsActual[i][j] = (Math.pow((Jtot[k][1] * deltat - 0.2 * Smap[i][j]), + 2.0) / (Jtot[k][1] * deltat + 0.8 * Smap[i][j])); + } + + JeffSup[i][j] = (RsActual[i][j] - RsPrec[i][j]) / deltat; + JeffSub[i][j] = ((raindata[k][1] / deltat) - JeffSup[i][j]) * phi; + /* + * if (raindata[k][1] == 0 && JeffSup[i][j] != 0) { + * System.out.println("bau"); } + */ + + Psup[i][j] = JeffSup[i][j] * converter; + Psub[i][j] = JeffSub[i][j] * converter; + + j1 = j1 + Psup[i][j]; + j2 = j2 + Psub[i][j]; + // j3 = j3 + raindata[k][1] * converter; + activecells++; + } + } + } + + Jeff[k][0] = k * 3600; + + Jeff[k][1] = j1 / activecells; + Jeff[k][2] = j2 / activecells; + + /* + * if ((Jeff[k][1] + Jeff[k][2]) > 0.000009 || (Jeff[k][1] + Jeff[k][2]) > + * (raindata[k][1] / (deltat activecells))) { JOptionPane.showMessageDialog((JFrame) + * GrassEnvironmentManager .getInstance().getGuiParentFrame(), + * "Error in Jeff sum: Jeffsup + Jeffsub = Jefftot gives " + Jeff[k][1] + " + " + + * Jeff[k][2] + " > " + (raindata[k][1] / activecells) + "!", "Jeff Error", + * JOptionPane.ERROR_MESSAGE); } + */ + + for( int i = 0; i < RsActual.length; i++ ) { + for( int j = 0; j < RsActual[0].length; j++ ) { + RsPrec[i][j] = RsActual[i][j]; + } + } + } + + // if (paramBox.getFileToDump() != null) { + // TODO dump to file + // DataSource outfile1 = new DataSource("file:" + paramBox.getOutputFile() + + // "_Jeff_sup"); + // DataSource outfile2 = new DataSource("file:" + paramBox.getOutputFile() + + // "_Jeff_sub"); + // OutputStreamWriter writeoutfile1 = outfile1.getOutputStreamWriter(); + // OutputStreamWriter writeoutfile2 = outfile2.getOutputStreamWriter(); + // try { + // for( int m = 0; m < Jeff.length; m++ ) { + // writeoutfile1.write(Jeff[m][0] + " " + Jeff[m][1] + "\n"); + // writeoutfile2.write(Jeff[m][0] + " " + Jeff[m][2] + "\n"); + // } + // writeoutfile1.close(); + // writeoutfile2.close(); + // } catch (IOException e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } + // } + } + + /* + * (non-Javadoc) + * @see bsh.commands.h.peakflow.jeff.JeffCalculator#calculateJeff() + */ + public double[][] calculateJeff() { + return Jeff; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/StatisticJeff.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/StatisticJeff.java index 46fa5311e..eba0bb698 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/StatisticJeff.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/core/jeff/StatisticJeff.java @@ -1,60 +1,60 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff; - -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; - -/** - * @author Andrea Antonello (www.hydrologis.com) - */ -public class StatisticJeff { - - private ParameterBox fixedParams = null; - private double tpmax = 0f; - private final IJGTProgressMonitor pm; - - /** - * @param fixedParameters - * @param tp_max - * @param pm - */ - public StatisticJeff( ParameterBox fixedParameters, double tp_max, IJGTProgressMonitor pm ) { - fixedParams = fixedParameters; - tpmax = tp_max; - this.pm = pm; - } - - public double[][] calculateJeff() { - pm.message("Calculating Jeff..."); - double n_idf = fixedParams.getN_idf(); - double a_idf = fixedParams.getA_idf(); - - /* - * multiplied by 1/3600 1/(1000*3600) gives us Jeff in m/s - */ - double J = a_idf * Math.pow(tpmax / 3600.0, n_idf - 1) / (1000.0 * 3600.0); - double h = a_idf * Math.pow(tpmax / 3600.0, n_idf) / 1000.0; - double[][] result = new double[1][2]; - result[0][0] = J; - result[0][1] = h; - - return result; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.core.jeff; + +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.ParameterBox; + +/** + * @author Andrea Antonello (www.hydrologis.com) + */ +public class StatisticJeff { + + private ParameterBox fixedParams = null; + private double tpmax = 0f; + private final IJGTProgressMonitor pm; + + /** + * @param fixedParameters + * @param tp_max + * @param pm + */ + public StatisticJeff( ParameterBox fixedParameters, double tp_max, IJGTProgressMonitor pm ) { + fixedParams = fixedParameters; + tpmax = tp_max; + this.pm = pm; + } + + public double[][] calculateJeff() { + pm.message("Calculating Jeff..."); + double n_idf = fixedParams.getN_idf(); + double a_idf = fixedParams.getA_idf(); + + /* + * multiplied by 1/3600 1/(1000*3600) gives us Jeff in m/s + */ + double J = a_idf * Math.pow(tpmax / 3600.0, n_idf - 1) / (1000.0 * 3600.0); + double h = a_idf * Math.pow(tpmax / 3600.0, n_idf) / 1000.0; + double[][] result = new double[1][2]; + result[0][0] = J; + result[0][1] = h; + + return result; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/extractnetwork/ExtractNetwork.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/extractnetwork/ExtractNetwork.java index f6f6468de..4d861396d 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/extractnetwork/ExtractNetwork.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/extractnetwork/ExtractNetwork.java @@ -1,288 +1,288 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.network.extractnetwork; - -import static java.lang.Math.pow; -import static org.jgrasstools.gears.libs.modules.FlowNode.NETVALUE; -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; -import static org.jgrasstools.gears.libs.modules.Variables.TCA; -import static org.jgrasstools.gears.libs.modules.Variables.TCA_CONVERGENT; -import static org.jgrasstools.gears.libs.modules.Variables.TCA_SLOPE; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.FlowNode; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; - -@Description("Extracts the raster network from an elevation model.") -@Documentation("ExtractNetwork.html") -@Author(name = "Erica Ghesla, Andrea Antonello, Franceschi Silvia, Andrea Cozzini, Silvano Pisoni", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Network, Vector, FlowDirectionsTC, GC, DrainDir, Gradient, Slope") -@Label(JGTConstants.NETWORK) -@Name("extractnet") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class ExtractNetwork extends JGTModel { - - @Description("The map of total contributing areas.") - @In - public GridCoverage2D inTca = null; - - @Description("The optional map of flowdirections (needed for case with slope or topographic classes).") - @In - public GridCoverage2D inFlow = null; - - @Description("The optional map of slope.") - @In - public GridCoverage2D inSlope = null; - - @Description("The optional map of aggregated topographic classes.") - @In - public GridCoverage2D inTc3 = null; - - @Description("The threshold on the map.") - @In - public double pThres = 0; - - @Description("The thresholding mode (default is on tca).") - @UI("combo:" + TCA + "," + TCA_SLOPE + "," + TCA_CONVERGENT) - @In - public String pMode = TCA; - - @Description("Tca exponent for the mode with slope or topographic classes (default = 0.5).") - @In - public double pExp = 0.5; - - @Description("The extracted network raster.") - @Out - public GridCoverage2D outNet = null; - - /* - * INTERNAL VARIABLES - */ - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - private int cols; - private int rows; - - @Execute - public void process() throws Exception { - checkNull(inFlow, inTca); - if (!concatOr(outNet == null, doReset)) { - return; - } - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); - cols = regionMap.getCols(); - rows = regionMap.getRows(); - - RenderedImage flowRI = inFlow.getRenderedImage(); - RenderedImage tcaRI = inTca.getRenderedImage(); - - WritableRaster networkWR = null; - if (pMode.equals(TCA)) { - checkNull(flowRI, tcaRI); - networkWR = extractNetTcaThreshold(flowRI, tcaRI); - } else if (pMode.equals(TCA_SLOPE)) { - checkNull(inSlope); - RenderedImage slopeRI = inSlope.getRenderedImage(); - networkWR = extractNetMode1(flowRI, tcaRI, slopeRI); - } else if (pMode.equals(TCA_CONVERGENT)) { - checkNull(inSlope, inTc3); - RenderedImage classRI = inTc3.getRenderedImage(); - RenderedImage slopeRI = inSlope.getRenderedImage(); - networkWR = extractNetMode2(flowRI, tcaRI, classRI, slopeRI); - } - if (isCanceled(pm)) { - return; - } - outNet = CoverageUtilities.buildCoverage("network", networkWR, regionMap, inFlow.getCoordinateReferenceSystem()); - - } - /** - * this method calculates the network using a threshold value on the - * contributing areas or on magnitudo - */ - private WritableRaster extractNetTcaThreshold( RenderedImage flowRI, RenderedImage tcaRI ) { - // create new RasterData for the network matrix - RandomIter tcaIter = RandomIterFactory.create(tcaRI, null); - WritableRaster netWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); - WritableRandomIter netIter = RandomIterFactory.createWritable(netWR, null); - - pm.beginTask(msg.message("extractnetwork.extracting"), rows); //$NON-NLS-1$ - for( int r = 0; r < rows; r++ ) { - if (isCanceled(pm)) { - return null; - } - for( int c = 0; c < cols; c++ ) { - double tcaValue = tcaIter.getSampleDouble(c, r, 0); - if (!isNovalue(tcaValue)) { - if (tcaValue >= pThres) { // FIXME needs power here? - netIter.setSample(c, r, 0, NETVALUE); - } - } - } - pm.worked(1); - } - pm.done(); - return netWR; - } - - /** - * this method calculates the network imposing a threshold value on the - * product of two quantities, for example the contributing area and the - * slope. - */ - private WritableRaster extractNetMode1( RenderedImage flowRI, RenderedImage tcaRI, RenderedImage slopeRI ) { - - RandomIter flowRandomIter = RandomIterFactory.create(flowRI, null); - RandomIter tcaRandomIter = RandomIterFactory.create(tcaRI, null); - RandomIter slopeRandomIter = RandomIterFactory.create(slopeRI, null); - - // create new RasterData for the network matrix - WritableRaster networkWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, - JGTConstants.doubleNovalue); - WritableRandomIter netRandomIter = RandomIterFactory.createWritable(networkWR, null); - - pm.beginTask(msg.message("extractnetwork.extracting"), rows); //$NON-NLS-1$ - for( int r = 0; r < rows; r++ ) { - if (isCanceled(pm)) { - return null; - } - for( int c = 0; c < cols; c++ ) { - double tcaValue = tcaRandomIter.getSampleDouble(c, r, 0); - double slopeValue = slopeRandomIter.getSampleDouble(c, r, 0); - if (!isNovalue(tcaValue) && !isNovalue(slopeValue)) { - tcaValue = pow(tcaValue, pExp); - - if (tcaValue * slopeValue >= pThres) { - netRandomIter.setSample(c, r, 0, NETVALUE); - FlowNode flowNode = new FlowNode(flowRandomIter, cols, rows, c, r); - FlowNode runningNode = flowNode; - while( (runningNode = runningNode.goDownstream()) != null ) { - int rCol = runningNode.col; - int rRow = runningNode.row; - double tmpNetValue = netRandomIter.getSampleDouble(rCol, rRow, 0); - if (!isNovalue(tmpNetValue)) { - break; - } - if (runningNode.isMarkedAsOutlet()) { - netRandomIter.setSample(rCol, rRow, 0, NETVALUE); - break; - } else if (runningNode.touchesBound()) { - FlowNode goDownstream = runningNode.goDownstream(); - if (goDownstream == null || !goDownstream.isValid()) { - netRandomIter.setSample(rCol, rRow, 0, NETVALUE); - break; - } - } - netRandomIter.setSample(rCol, rRow, 0, NETVALUE); - } - } - } else { - netRandomIter.setSample(c, r, 0, doubleNovalue); - } - } - pm.worked(1); - } - pm.done(); - return networkWR; - } - - /** - * this method the network is extracted by considering only concave points - * as being part of the channel network. - */ - private WritableRaster extractNetMode2( RenderedImage flowRI, RenderedImage tcaRI, RenderedImage classRI, - RenderedImage slopeRI ) { - RandomIter flowRandomIter = RandomIterFactory.create(flowRI, null); - RandomIter tcaRandomIter = RandomIterFactory.create(tcaRI, null); - RandomIter classRandomIter = RandomIterFactory.create(classRI, null); - RandomIter slopeRandomIter = RandomIterFactory.create(slopeRI, null); - WritableRaster netImage = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, doubleNovalue); - - // try the operation!! - - WritableRandomIter netRandomIter = RandomIterFactory.createWritable(netImage, null); - - pm.beginTask(msg.message("extractnetwork.extracting"), rows); //$NON-NLS-1$ - for( int r = 0; r < rows; r++ ) { - if (isCanceled(pm)) { - return null; - } - for( int c = 0; c < cols; c++ ) { - double tcaValue = tcaRandomIter.getSampleDouble(c, r, 0); - double slopeValue = slopeRandomIter.getSampleDouble(c, r, 0); - if (!isNovalue(tcaValue) && !isNovalue(slopeValue)) { - tcaValue = pow(tcaValue, pExp) * slopeValue; - if (tcaValue >= pThres && classRandomIter.getSample(c, r, 0) == 15.0) { - netRandomIter.setSample(c, r, 0, NETVALUE); - FlowNode flowNode = new FlowNode(flowRandomIter, cols, rows, c, r); - FlowNode runningNode = flowNode; - while( (runningNode = runningNode.goDownstream()) != null ) { - int rCol = runningNode.col; - int rRow = runningNode.row; - double tmpNetValue = netRandomIter.getSampleDouble(rCol, rRow, 0); - if (!isNovalue(tmpNetValue)) { - break; - } - if (runningNode.isMarkedAsOutlet()) { - netRandomIter.setSample(rCol, rRow, 0, NETVALUE); - break; - } else if (runningNode.touchesBound()) { - FlowNode goDownstream = runningNode.goDownstream(); - if (goDownstream == null || !goDownstream.isValid()) { - netRandomIter.setSample(rCol, rRow, 0, NETVALUE); - break; - } - } - netRandomIter.setSample(rCol, rRow, 0, NETVALUE); - } - } - } - } - pm.worked(1); - } - pm.done(); - return netImage; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.network.extractnetwork; + +import static java.lang.Math.pow; +import static org.jgrasstools.gears.libs.modules.FlowNode.NETVALUE; +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; +import static org.jgrasstools.gears.libs.modules.Variables.TCA; +import static org.jgrasstools.gears.libs.modules.Variables.TCA_CONVERGENT; +import static org.jgrasstools.gears.libs.modules.Variables.TCA_SLOPE; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.FlowNode; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; + +@Description("Extracts the raster network from an elevation model.") +@Documentation("ExtractNetwork.html") +@Author(name = "Erica Ghesla, Andrea Antonello, Franceschi Silvia, Andrea Cozzini, Silvano Pisoni", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Network, Vector, FlowDirectionsTC, GC, DrainDir, Gradient, Slope") +@Label(JGTConstants.NETWORK) +@Name("extractnet") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class ExtractNetwork extends JGTModel { + + @Description("The map of total contributing areas.") + @In + public GridCoverage2D inTca = null; + + @Description("The optional map of flowdirections (needed for case with slope or topographic classes).") + @In + public GridCoverage2D inFlow = null; + + @Description("The optional map of slope.") + @In + public GridCoverage2D inSlope = null; + + @Description("The optional map of aggregated topographic classes.") + @In + public GridCoverage2D inTc3 = null; + + @Description("The threshold on the map.") + @In + public double pThres = 0; + + @Description("The thresholding mode (default is on tca).") + @UI("combo:" + TCA + "," + TCA_SLOPE + "," + TCA_CONVERGENT) + @In + public String pMode = TCA; + + @Description("Tca exponent for the mode with slope or topographic classes (default = 0.5).") + @In + public double pExp = 0.5; + + @Description("The extracted network raster.") + @Out + public GridCoverage2D outNet = null; + + /* + * INTERNAL VARIABLES + */ + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + private int cols; + private int rows; + + @Execute + public void process() throws Exception { + checkNull(inFlow, inTca); + if (!concatOr(outNet == null, doReset)) { + return; + } + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); + cols = regionMap.getCols(); + rows = regionMap.getRows(); + + RenderedImage flowRI = inFlow.getRenderedImage(); + RenderedImage tcaRI = inTca.getRenderedImage(); + + WritableRaster networkWR = null; + if (pMode.equals(TCA)) { + checkNull(flowRI, tcaRI); + networkWR = extractNetTcaThreshold(flowRI, tcaRI); + } else if (pMode.equals(TCA_SLOPE)) { + checkNull(inSlope); + RenderedImage slopeRI = inSlope.getRenderedImage(); + networkWR = extractNetMode1(flowRI, tcaRI, slopeRI); + } else if (pMode.equals(TCA_CONVERGENT)) { + checkNull(inSlope, inTc3); + RenderedImage classRI = inTc3.getRenderedImage(); + RenderedImage slopeRI = inSlope.getRenderedImage(); + networkWR = extractNetMode2(flowRI, tcaRI, classRI, slopeRI); + } + if (isCanceled(pm)) { + return; + } + outNet = CoverageUtilities.buildCoverage("network", networkWR, regionMap, inFlow.getCoordinateReferenceSystem()); + + } + /** + * this method calculates the network using a threshold value on the + * contributing areas or on magnitudo + */ + private WritableRaster extractNetTcaThreshold( RenderedImage flowRI, RenderedImage tcaRI ) { + // create new RasterData for the network matrix + RandomIter tcaIter = RandomIterFactory.create(tcaRI, null); + WritableRaster netWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); + WritableRandomIter netIter = RandomIterFactory.createWritable(netWR, null); + + pm.beginTask(msg.message("extractnetwork.extracting"), rows); //$NON-NLS-1$ + for( int r = 0; r < rows; r++ ) { + if (isCanceled(pm)) { + return null; + } + for( int c = 0; c < cols; c++ ) { + double tcaValue = tcaIter.getSampleDouble(c, r, 0); + if (!isNovalue(tcaValue)) { + if (tcaValue >= pThres) { // FIXME needs power here? + netIter.setSample(c, r, 0, NETVALUE); + } + } + } + pm.worked(1); + } + pm.done(); + return netWR; + } + + /** + * this method calculates the network imposing a threshold value on the + * product of two quantities, for example the contributing area and the + * slope. + */ + private WritableRaster extractNetMode1( RenderedImage flowRI, RenderedImage tcaRI, RenderedImage slopeRI ) { + + RandomIter flowRandomIter = RandomIterFactory.create(flowRI, null); + RandomIter tcaRandomIter = RandomIterFactory.create(tcaRI, null); + RandomIter slopeRandomIter = RandomIterFactory.create(slopeRI, null); + + // create new RasterData for the network matrix + WritableRaster networkWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, + JGTConstants.doubleNovalue); + WritableRandomIter netRandomIter = RandomIterFactory.createWritable(networkWR, null); + + pm.beginTask(msg.message("extractnetwork.extracting"), rows); //$NON-NLS-1$ + for( int r = 0; r < rows; r++ ) { + if (isCanceled(pm)) { + return null; + } + for( int c = 0; c < cols; c++ ) { + double tcaValue = tcaRandomIter.getSampleDouble(c, r, 0); + double slopeValue = slopeRandomIter.getSampleDouble(c, r, 0); + if (!isNovalue(tcaValue) && !isNovalue(slopeValue)) { + tcaValue = pow(tcaValue, pExp); + + if (tcaValue * slopeValue >= pThres) { + netRandomIter.setSample(c, r, 0, NETVALUE); + FlowNode flowNode = new FlowNode(flowRandomIter, cols, rows, c, r); + FlowNode runningNode = flowNode; + while( (runningNode = runningNode.goDownstream()) != null ) { + int rCol = runningNode.col; + int rRow = runningNode.row; + double tmpNetValue = netRandomIter.getSampleDouble(rCol, rRow, 0); + if (!isNovalue(tmpNetValue)) { + break; + } + if (runningNode.isMarkedAsOutlet()) { + netRandomIter.setSample(rCol, rRow, 0, NETVALUE); + break; + } else if (runningNode.touchesBound()) { + FlowNode goDownstream = runningNode.goDownstream(); + if (goDownstream == null || !goDownstream.isValid()) { + netRandomIter.setSample(rCol, rRow, 0, NETVALUE); + break; + } + } + netRandomIter.setSample(rCol, rRow, 0, NETVALUE); + } + } + } else { + netRandomIter.setSample(c, r, 0, doubleNovalue); + } + } + pm.worked(1); + } + pm.done(); + return networkWR; + } + + /** + * this method the network is extracted by considering only concave points + * as being part of the channel network. + */ + private WritableRaster extractNetMode2( RenderedImage flowRI, RenderedImage tcaRI, RenderedImage classRI, + RenderedImage slopeRI ) { + RandomIter flowRandomIter = RandomIterFactory.create(flowRI, null); + RandomIter tcaRandomIter = RandomIterFactory.create(tcaRI, null); + RandomIter classRandomIter = RandomIterFactory.create(classRI, null); + RandomIter slopeRandomIter = RandomIterFactory.create(slopeRI, null); + WritableRaster netImage = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, doubleNovalue); + + // try the operation!! + + WritableRandomIter netRandomIter = RandomIterFactory.createWritable(netImage, null); + + pm.beginTask(msg.message("extractnetwork.extracting"), rows); //$NON-NLS-1$ + for( int r = 0; r < rows; r++ ) { + if (isCanceled(pm)) { + return null; + } + for( int c = 0; c < cols; c++ ) { + double tcaValue = tcaRandomIter.getSampleDouble(c, r, 0); + double slopeValue = slopeRandomIter.getSampleDouble(c, r, 0); + if (!isNovalue(tcaValue) && !isNovalue(slopeValue)) { + tcaValue = pow(tcaValue, pExp) * slopeValue; + if (tcaValue >= pThres && classRandomIter.getSample(c, r, 0) == 15.0) { + netRandomIter.setSample(c, r, 0, NETVALUE); + FlowNode flowNode = new FlowNode(flowRandomIter, cols, rows, c, r); + FlowNode runningNode = flowNode; + while( (runningNode = runningNode.goDownstream()) != null ) { + int rCol = runningNode.col; + int rRow = runningNode.row; + double tmpNetValue = netRandomIter.getSampleDouble(rCol, rRow, 0); + if (!isNovalue(tmpNetValue)) { + break; + } + if (runningNode.isMarkedAsOutlet()) { + netRandomIter.setSample(rCol, rRow, 0, NETVALUE); + break; + } else if (runningNode.touchesBound()) { + FlowNode goDownstream = runningNode.goDownstream(); + if (goDownstream == null || !goDownstream.isValid()) { + netRandomIter.setSample(rCol, rRow, 0, NETVALUE); + break; + } + } + netRandomIter.setSample(rCol, rRow, 0, NETVALUE); + } + } + } + } + pm.worked(1); + } + pm.done(); + return netImage; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/hacklength/HackLength.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/hacklength/HackLength.java index ee0a9d1e5..b04ac5240 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/hacklength/HackLength.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/hacklength/HackLength.java @@ -1,226 +1,226 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.network.hacklength; - -import static java.lang.Math.pow; -import static java.lang.Math.sqrt; -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.List; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.Direction; -import org.jgrasstools.gears.libs.modules.FlowNode; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.math.NumericsUtilities; -import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; - -@Description("Assigned a point in a basin calculates" - + " the distance from the watershed measured along the net (until it exists)" - + " and then, again from valley upriver, along the maximal slope.") -@Documentation("HackLength.html") -@Author(name = "Antonello Andrea, Franceschi Silvia, Daniele Andreis, Erica Ghesla, Cozzini Andrea, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com") -@Keywords("Network, HackLength3D, HackStream") -@Label(JGTConstants.NETWORK) -@Name("hacklength") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class HackLength extends JGTModel { - - @Description("The map of flowdirections.") - @In - public GridCoverage2D inFlow = null; - - @Description("The map of tca.") - @In - public GridCoverage2D inTca = null; - - @Description("The optional map of the elevation to work in 3D mode.") - @In - public GridCoverage2D inElevation = null; - - @Description("The map of hack lengths.") - @Out - public GridCoverage2D outHacklength = null; - - private HortonMessageHandler msg = HortonMessageHandler.getInstance(); - - private int nCols; - - private int nRows; - - private double xRes; - - private double yRes; - - private RegionMap regionMap; - - @Execute - public void process() { - if (!concatOr(outHacklength == null, doReset)) { - return; - } - checkNull(inFlow, inTca); - - regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); - nCols = regionMap.getCols(); - nRows = regionMap.getRows(); - xRes = regionMap.getXres(); - yRes = regionMap.getYres(); - - RandomIter tcaIter = CoverageUtilities.getRandomIterator(inTca); - - RenderedImage flowRI = inFlow.getRenderedImage(); - WritableRaster flowWR = CoverageUtilities.renderedImage2WritableRaster(flowRI, true); - WritableRandomIter flowIter = RandomIterFactory.createWritable(flowWR, null); - - // if inElevation isn't null then work in 3d. - RandomIter elevIter = null; - if (inElevation != null) { - elevIter = CoverageUtilities.getRandomIterator(inElevation); - } - - hacklength(flowIter, tcaIter, elevIter); - - tcaIter.done(); - flowIter.done(); - if (elevIter != null) { - elevIter.done(); - } - - } - - private void hacklength( RandomIter flowIter, RandomIter tcaIter, RandomIter elevIter ) { - - double runningDistance = 0.0; - double maxTca = 0.0; - - WritableRaster hacklengthWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); - WritableRandomIter hacklengthIter = RandomIterFactory.createWritable(hacklengthWR, null); - - pm.beginTask(msg.message("hacklength.calculating"), nRows); //$NON-NLS-1$ - for( int r = 0; r < nRows; r++ ) { - for( int c = 0; c < nCols; c++ ) { - FlowNode flowNode = new FlowNode(flowIter, nCols, nRows, c, r); - if (flowNode.isSource() && !flowNode.isHeadingOutside()) { - runningDistance = 0; - flowNode.setValueInMap(hacklengthIter, runningDistance); - - maxTca = 1; - - FlowNode oldNode = flowNode; - FlowNode runningNode = oldNode.goDownstream(); - while( runningNode != null && runningNode.isValid() && !runningNode.isMarkedAsOutlet() ) { - - boolean isMax = tcaMax(runningNode, tcaIter, hacklengthIter, maxTca, runningDistance); - if (isMax) { - double distance = Direction.forFlow((int) oldNode.flow).getDistance(xRes, yRes); - if (elevIter != null) { - double d1 = oldNode.getValueFromMap(elevIter); - double d2 = runningNode.getValueFromMap(elevIter); - double dz = d1 - d2; - runningDistance += sqrt(pow(distance, 2) + pow(dz, 2)); - } else { - runningDistance += distance; - } - runningNode.setValueInMap(hacklengthIter, runningDistance); - - maxTca = runningNode.getValueFromMap(tcaIter); - } - oldNode = runningNode; - runningNode = runningNode.goDownstream(); - } - - if (runningNode != null && runningNode.isMarkedAsOutlet()) { - if (tcaMax(runningNode, tcaIter, hacklengthIter, maxTca, runningDistance)) { - double distance = Direction.forFlow((int) oldNode.flow).getDistance(xRes, yRes); - if (elevIter != null) { - double d1 = oldNode.getValueFromMap(elevIter); - double d2 = runningNode.getValueFromMap(elevIter); - double dz = d1 - d2; - runningDistance += sqrt(pow(distance, 2) + pow(dz, 2)); - } else { - runningDistance += distance; - } - runningNode.setValueInMap(hacklengthIter, runningDistance); - } - } - - } - - } - pm.worked(1); - } - pm.done(); - hacklengthIter.done(); - outHacklength = CoverageUtilities.buildCoverage("Hacklength", hacklengthWR, regionMap, - inFlow.getCoordinateReferenceSystem()); - } - - /** - * Compare two value of tca and distance. - * - *

- * It's used to evaluate some special distance (as hacklength). - * In these case, the value of the distance is a property of - * the path, and so when two pixel drain in a same pixel the - * actual value is calculate from the pixel that have the - * maximum value. So this method evaluate if the distance is - * already evaluate, throghout another path, and - * if the value of the old path is greater than the next path. - *

- */ - public static boolean tcaMax( FlowNode flowNode, RandomIter tcaIter, RandomIter hacklengthIter, double maxTca, - double maxDistance ) { - - List enteringNodes = flowNode.getEnteringNodes(); - for( FlowNode node : enteringNodes ) { - double tca = node.getValueFromMap(tcaIter); - if (tca >= maxTca) { - if (NumericsUtilities.dEq(tca, maxTca)) { - if (node.getValueFromMap(hacklengthIter) > maxDistance) - return false; - } else - return false; - } - - } - return true; - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.network.hacklength; + +import static java.lang.Math.pow; +import static java.lang.Math.sqrt; +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.List; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.Direction; +import org.jgrasstools.gears.libs.modules.FlowNode; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.math.NumericsUtilities; +import org.jgrasstools.hortonmachine.i18n.HortonMessageHandler; + +@Description("Assigned a point in a basin calculates" + + " the distance from the watershed measured along the net (until it exists)" + + " and then, again from valley upriver, along the maximal slope.") +@Documentation("HackLength.html") +@Author(name = "Antonello Andrea, Franceschi Silvia, Daniele Andreis, Erica Ghesla, Cozzini Andrea, Pisoni Silvano, Rigon Riccardo", contact = "http://www.hydrologis.com") +@Keywords("Network, HackLength3D, HackStream") +@Label(JGTConstants.NETWORK) +@Name("hacklength") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class HackLength extends JGTModel { + + @Description("The map of flowdirections.") + @In + public GridCoverage2D inFlow = null; + + @Description("The map of tca.") + @In + public GridCoverage2D inTca = null; + + @Description("The optional map of the elevation to work in 3D mode.") + @In + public GridCoverage2D inElevation = null; + + @Description("The map of hack lengths.") + @Out + public GridCoverage2D outHacklength = null; + + private HortonMessageHandler msg = HortonMessageHandler.getInstance(); + + private int nCols; + + private int nRows; + + private double xRes; + + private double yRes; + + private RegionMap regionMap; + + @Execute + public void process() { + if (!concatOr(outHacklength == null, doReset)) { + return; + } + checkNull(inFlow, inTca); + + regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); + nCols = regionMap.getCols(); + nRows = regionMap.getRows(); + xRes = regionMap.getXres(); + yRes = regionMap.getYres(); + + RandomIter tcaIter = CoverageUtilities.getRandomIterator(inTca); + + RenderedImage flowRI = inFlow.getRenderedImage(); + WritableRaster flowWR = CoverageUtilities.renderedImage2WritableRaster(flowRI, true); + WritableRandomIter flowIter = RandomIterFactory.createWritable(flowWR, null); + + // if inElevation isn't null then work in 3d. + RandomIter elevIter = null; + if (inElevation != null) { + elevIter = CoverageUtilities.getRandomIterator(inElevation); + } + + hacklength(flowIter, tcaIter, elevIter); + + tcaIter.done(); + flowIter.done(); + if (elevIter != null) { + elevIter.done(); + } + + } + + private void hacklength( RandomIter flowIter, RandomIter tcaIter, RandomIter elevIter ) { + + double runningDistance = 0.0; + double maxTca = 0.0; + + WritableRaster hacklengthWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, doubleNovalue); + WritableRandomIter hacklengthIter = RandomIterFactory.createWritable(hacklengthWR, null); + + pm.beginTask(msg.message("hacklength.calculating"), nRows); //$NON-NLS-1$ + for( int r = 0; r < nRows; r++ ) { + for( int c = 0; c < nCols; c++ ) { + FlowNode flowNode = new FlowNode(flowIter, nCols, nRows, c, r); + if (flowNode.isSource() && !flowNode.isHeadingOutside()) { + runningDistance = 0; + flowNode.setValueInMap(hacklengthIter, runningDistance); + + maxTca = 1; + + FlowNode oldNode = flowNode; + FlowNode runningNode = oldNode.goDownstream(); + while( runningNode != null && runningNode.isValid() && !runningNode.isMarkedAsOutlet() ) { + + boolean isMax = tcaMax(runningNode, tcaIter, hacklengthIter, maxTca, runningDistance); + if (isMax) { + double distance = Direction.forFlow((int) oldNode.flow).getDistance(xRes, yRes); + if (elevIter != null) { + double d1 = oldNode.getValueFromMap(elevIter); + double d2 = runningNode.getValueFromMap(elevIter); + double dz = d1 - d2; + runningDistance += sqrt(pow(distance, 2) + pow(dz, 2)); + } else { + runningDistance += distance; + } + runningNode.setValueInMap(hacklengthIter, runningDistance); + + maxTca = runningNode.getValueFromMap(tcaIter); + } + oldNode = runningNode; + runningNode = runningNode.goDownstream(); + } + + if (runningNode != null && runningNode.isMarkedAsOutlet()) { + if (tcaMax(runningNode, tcaIter, hacklengthIter, maxTca, runningDistance)) { + double distance = Direction.forFlow((int) oldNode.flow).getDistance(xRes, yRes); + if (elevIter != null) { + double d1 = oldNode.getValueFromMap(elevIter); + double d2 = runningNode.getValueFromMap(elevIter); + double dz = d1 - d2; + runningDistance += sqrt(pow(distance, 2) + pow(dz, 2)); + } else { + runningDistance += distance; + } + runningNode.setValueInMap(hacklengthIter, runningDistance); + } + } + + } + + } + pm.worked(1); + } + pm.done(); + hacklengthIter.done(); + outHacklength = CoverageUtilities.buildCoverage("Hacklength", hacklengthWR, regionMap, + inFlow.getCoordinateReferenceSystem()); + } + + /** + * Compare two value of tca and distance. + * + *

+ * It's used to evaluate some special distance (as hacklength). + * In these case, the value of the distance is a property of + * the path, and so when two pixel drain in a same pixel the + * actual value is calculate from the pixel that have the + * maximum value. So this method evaluate if the distance is + * already evaluate, throghout another path, and + * if the value of the old path is greater than the next path. + *

+ */ + public static boolean tcaMax( FlowNode flowNode, RandomIter tcaIter, RandomIter hacklengthIter, double maxTca, + double maxDistance ) { + + List enteringNodes = flowNode.getEnteringNodes(); + for( FlowNode node : enteringNodes ) { + double tca = node.getValueFromMap(tcaIter); + if (tca >= maxTca) { + if (NumericsUtilities.dEq(tca, maxTca)) { + if (node.getValueFromMap(hacklengthIter) > maxDistance) + return false; + } else + return false; + } + + } + return true; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/strahler/Strahler.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/strahler/Strahler.java index 88ada57e1..2b89d5049 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/strahler/Strahler.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/strahler/Strahler.java @@ -1,283 +1,283 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.network.strahler; - -import static java.lang.Math.max; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.modules.ModelsEngine; -import org.jgrasstools.gears.libs.modules.ModelsSupporter; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; - -@Description("Calculates the Strahler order on a basin.") -@Author(name = "Erica Ghesla, Antonello Andrea, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") -@Keywords("Network, Strahler") -@Label(JGTConstants.NETWORK) -@Name("strahler") -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class Strahler extends JGTModel { - - @Description("The map of flowdirections.") - @In - public GridCoverage2D inFlow = null; - - @Description("The map of the network.") - @In - public GridCoverage2D inNet = null; - - @Description("The map of the strahler order.") - @Out - public GridCoverage2D outStrahler = null; - - @Execute - public void process() throws Exception { - if (!concatOr(outStrahler == null, doReset)) { - return; - } - - checkNull(inFlow); - - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); - int nCols = regionMap.getCols(); - int nRows = regionMap.getRows(); - - RenderedImage flowRI = inFlow.getRenderedImage(); - WritableRaster flowWR = CoverageUtilities.renderedImage2WritableRaster(flowRI, true); - RandomIter flowIter; - - int[] flow = new int[2]; - // it memorize the number of pixel which are draining into the pixel examine. - int contr = 0; - int counter = 0, io, jo, s = 0; - - int[][] dir = ModelsSupporter.DIR_WITHFLOW_ENTERING; - - int[] vett_contr; - double max; - if (inNet != null) { - WritableRandomIter tmpIter = RandomIterFactory.createWritable(flowWR, null); - RenderedImage netRI = inNet.getRenderedImage(); - RandomIter netRandomIter = RandomIterFactory.create(netRI, null); - for( int r = 0; r < nRows; r++ ) { - for( int c = 0; c < nCols; c++ ) { - if (isNovalue(netRandomIter.getSampleDouble(c, r, 0))) { - tmpIter.setSample(c, r, 0, JGTConstants.doubleNovalue); - } - } - } - netRandomIter.done(); - flowIter = tmpIter; - } else { - flowIter = RandomIterFactory.create(flowWR, null); - } - - /* - * initialize the iterator for the map and create the output image - */ - WritableRaster strahlerWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, - JGTConstants.doubleNovalue); - WritableRandomIter strahlerIter = RandomIterFactory.createWritable(strahlerWR, null); - // start to calculate the output map. - - pm.beginTask("Calculating Strahler order...", nRows * 2); - for( int r = 0; r < nRows; r++ ) { - for( int c = 0; c < nCols; c++ ) { - flow[0] = c; - flow[1] = r; - /* - * verify if the pixel is a source. If it is then set the value to 1. - */ - if (ModelsEngine.isSourcePixel(flowIter, flow[0], flow[1])) { - strahlerIter.setSample(flow[0], flow[1], 0, 1.0); - - /* - * start wandering downstream - */ - if (!ModelsEngine.go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) - throw new ModelsIllegalargumentException( - "Unable to go further downstream at: " + flow[0] + "/" + flow[1], this); - /* - * as long as it isn't an outlet point and both flow and net have valid value, - * loop downstream. - */ - while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) - && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10 ) { - contr = 0; - /* - * Verify if the pixel have a number of pixel which are drained into greater than 1. - */ - vett_contr = new int[10]; - for( int k = 1; k <= 8; k++ ) { - int col = flow[0] + dir[k][1]; - int row = flow[1] + dir[k][0]; - double direction = flowIter.getSampleDouble(col, row, 0); - if (isNovalue(direction)) - continue; - int tmpDir = dir[k][2]; - if (direction == tmpDir) { - contr += 1; - vett_contr[contr] = k; - } - } - - if (contr > 1) - /* - * If the number of pixel which are going in this pixel is major than 1 - * then verify which has the larger strahler number. - */ - { - max = 0; - for( int ii = 1; ii <= contr; ii++ ) { - s = vett_contr[ii]; - io = flow[0] + dir[s][1]; - jo = flow[1] + dir[s][0]; - double strahler = strahlerIter.getSampleDouble(io, jo, 0); - max = max(max, strahler); - } - counter = 0; - for( int ii = 1; ii <= contr; ii++ ) { - s = vett_contr[ii]; - io = flow[0] + dir[s][1]; - jo = flow[1] + dir[s][0]; - if (max == strahlerIter.getSampleDouble(io, jo, 0)) - counter += 1; - } - /* - * if counter is greater than 1 then the strahler order is - * equal to the previous plus 1, otherwise is equal to the previus. - */ - if (counter > 1) { - strahlerIter.setSample(flow[0], flow[1], 0, max + 1); - } - if (counter == 1) { - strahlerIter.setSample(flow[0], flow[1], 0, max); - } - } else - /* - * If there is only one drained pixel then the order is equal to this pixel. - */ - { - s = vett_contr[1]; - io = flow[0] + dir[s][1]; - jo = flow[1] + dir[s][0]; - max = strahlerIter.getSampleDouble(io, jo, 0); - strahlerIter.setSample(flow[0], flow[1], 0, max); - } - max = strahlerIter.getSampleDouble(flow[0], flow[1], 0); - - if (!ModelsEngine.go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) - throw new ModelsIllegalargumentException("Unable to go further downstream at: " + flow[0] + "/" - + flow[1], this); - /* - * Go to the next pixel, if the order of previuos pixel is lesser than the next value then break and keep the old value. - */ - if (strahlerIter.getSampleDouble(flow[0], flow[1], 0) > max) - break; - } - } - } - pm.worked(1); - } - - for( int j = 0; j < nRows; j++ ) { - for( int i = 0; i < nCols; i++ ) { - flow[0] = i; - flow[1] = j; - vett_contr = new int[10]; - contr = 0; - /* - * calcolo l'ordine anche per il pixel di uscita: primo passo calcolo il numero dei - * pixel drenenti - */ - if (flowIter.getSampleDouble(flow[0], flow[1], 0) == 10) { - for( int k = 1; k <= 8; k++ ) { - if (flowIter.getSampleDouble(flow[0] + dir[k][1], flow[1] + dir[k][0], 0) == dir[k][2]) { - contr += 1; - vett_contr[contr] = k; - } - } - /* calcolo il max valore di strahler */ - max = 0; - for( int ii = 1; ii <= contr; ii++ ) { - s = vett_contr[ii]; - io = flow[0] + dir[s][1]; - jo = flow[1] + dir[s][0]; - if (max < strahlerIter.getSampleDouble(io, jo, 0)) - max = strahlerIter.getSampleDouble(io, jo, 0); - } - /* - * calcolo quanti pixel (conta) presentano massimo valore di strahler - */ - counter = 0; - for( int ii = 1; ii <= contr; ii++ ) { - s = vett_contr[ii]; - io = flow[0] + dir[s][1]; - jo = flow[1] + dir[s][0]; - if (max == strahlerIter.getSampleDouble(io, jo, 0)) - counter += 1; - } - /* - * se conta e' maggiore di 1 si aumenta il numero di strahler di 1 - */ - if (counter > 1) - strahlerIter.setSample(flow[0], flow[1], 0, max + 1); - if (counter == 1) - strahlerIter.setSample(flow[0], flow[1], 0, max); - } - } - pm.worked(1); - } - pm.done(); - for( int j = 0; j < nRows; j++ ) { - for( int i = 0; i < nCols; i++ ) { - if (strahlerIter.getSampleDouble(i, j, 0) == 0.0) - strahlerIter.setSample(i, j, 0, JGTConstants.doubleNovalue); - } - } - strahlerIter.done(); - flowIter.done(); - - outStrahler = CoverageUtilities.buildCoverage("strahler", strahlerWR, regionMap, inFlow.getCoordinateReferenceSystem()); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.network.strahler; + +import static java.lang.Math.max; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.modules.ModelsEngine; +import org.jgrasstools.gears.libs.modules.ModelsSupporter; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; + +@Description("Calculates the Strahler order on a basin.") +@Author(name = "Erica Ghesla, Antonello Andrea, Rigon Riccardo", contact = "http://www.hydrologis.com, http://www.ing.unitn.it/dica/hp/?user=rigon") +@Keywords("Network, Strahler") +@Label(JGTConstants.NETWORK) +@Name("strahler") +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class Strahler extends JGTModel { + + @Description("The map of flowdirections.") + @In + public GridCoverage2D inFlow = null; + + @Description("The map of the network.") + @In + public GridCoverage2D inNet = null; + + @Description("The map of the strahler order.") + @Out + public GridCoverage2D outStrahler = null; + + @Execute + public void process() throws Exception { + if (!concatOr(outStrahler == null, doReset)) { + return; + } + + checkNull(inFlow); + + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inFlow); + int nCols = regionMap.getCols(); + int nRows = regionMap.getRows(); + + RenderedImage flowRI = inFlow.getRenderedImage(); + WritableRaster flowWR = CoverageUtilities.renderedImage2WritableRaster(flowRI, true); + RandomIter flowIter; + + int[] flow = new int[2]; + // it memorize the number of pixel which are draining into the pixel examine. + int contr = 0; + int counter = 0, io, jo, s = 0; + + int[][] dir = ModelsSupporter.DIR_WITHFLOW_ENTERING; + + int[] vett_contr; + double max; + if (inNet != null) { + WritableRandomIter tmpIter = RandomIterFactory.createWritable(flowWR, null); + RenderedImage netRI = inNet.getRenderedImage(); + RandomIter netRandomIter = RandomIterFactory.create(netRI, null); + for( int r = 0; r < nRows; r++ ) { + for( int c = 0; c < nCols; c++ ) { + if (isNovalue(netRandomIter.getSampleDouble(c, r, 0))) { + tmpIter.setSample(c, r, 0, JGTConstants.doubleNovalue); + } + } + } + netRandomIter.done(); + flowIter = tmpIter; + } else { + flowIter = RandomIterFactory.create(flowWR, null); + } + + /* + * initialize the iterator for the map and create the output image + */ + WritableRaster strahlerWR = CoverageUtilities.createDoubleWritableRaster(nCols, nRows, null, null, + JGTConstants.doubleNovalue); + WritableRandomIter strahlerIter = RandomIterFactory.createWritable(strahlerWR, null); + // start to calculate the output map. + + pm.beginTask("Calculating Strahler order...", nRows * 2); + for( int r = 0; r < nRows; r++ ) { + for( int c = 0; c < nCols; c++ ) { + flow[0] = c; + flow[1] = r; + /* + * verify if the pixel is a source. If it is then set the value to 1. + */ + if (ModelsEngine.isSourcePixel(flowIter, flow[0], flow[1])) { + strahlerIter.setSample(flow[0], flow[1], 0, 1.0); + + /* + * start wandering downstream + */ + if (!ModelsEngine.go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) + throw new ModelsIllegalargumentException( + "Unable to go further downstream at: " + flow[0] + "/" + flow[1], this); + /* + * as long as it isn't an outlet point and both flow and net have valid value, + * loop downstream. + */ + while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) + && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10 ) { + contr = 0; + /* + * Verify if the pixel have a number of pixel which are drained into greater than 1. + */ + vett_contr = new int[10]; + for( int k = 1; k <= 8; k++ ) { + int col = flow[0] + dir[k][1]; + int row = flow[1] + dir[k][0]; + double direction = flowIter.getSampleDouble(col, row, 0); + if (isNovalue(direction)) + continue; + int tmpDir = dir[k][2]; + if (direction == tmpDir) { + contr += 1; + vett_contr[contr] = k; + } + } + + if (contr > 1) + /* + * If the number of pixel which are going in this pixel is major than 1 + * then verify which has the larger strahler number. + */ + { + max = 0; + for( int ii = 1; ii <= contr; ii++ ) { + s = vett_contr[ii]; + io = flow[0] + dir[s][1]; + jo = flow[1] + dir[s][0]; + double strahler = strahlerIter.getSampleDouble(io, jo, 0); + max = max(max, strahler); + } + counter = 0; + for( int ii = 1; ii <= contr; ii++ ) { + s = vett_contr[ii]; + io = flow[0] + dir[s][1]; + jo = flow[1] + dir[s][0]; + if (max == strahlerIter.getSampleDouble(io, jo, 0)) + counter += 1; + } + /* + * if counter is greater than 1 then the strahler order is + * equal to the previous plus 1, otherwise is equal to the previus. + */ + if (counter > 1) { + strahlerIter.setSample(flow[0], flow[1], 0, max + 1); + } + if (counter == 1) { + strahlerIter.setSample(flow[0], flow[1], 0, max); + } + } else + /* + * If there is only one drained pixel then the order is equal to this pixel. + */ + { + s = vett_contr[1]; + io = flow[0] + dir[s][1]; + jo = flow[1] + dir[s][0]; + max = strahlerIter.getSampleDouble(io, jo, 0); + strahlerIter.setSample(flow[0], flow[1], 0, max); + } + max = strahlerIter.getSampleDouble(flow[0], flow[1], 0); + + if (!ModelsEngine.go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) + throw new ModelsIllegalargumentException("Unable to go further downstream at: " + flow[0] + "/" + + flow[1], this); + /* + * Go to the next pixel, if the order of previuos pixel is lesser than the next value then break and keep the old value. + */ + if (strahlerIter.getSampleDouble(flow[0], flow[1], 0) > max) + break; + } + } + } + pm.worked(1); + } + + for( int j = 0; j < nRows; j++ ) { + for( int i = 0; i < nCols; i++ ) { + flow[0] = i; + flow[1] = j; + vett_contr = new int[10]; + contr = 0; + /* + * calcolo l'ordine anche per il pixel di uscita: primo passo calcolo il numero dei + * pixel drenenti + */ + if (flowIter.getSampleDouble(flow[0], flow[1], 0) == 10) { + for( int k = 1; k <= 8; k++ ) { + if (flowIter.getSampleDouble(flow[0] + dir[k][1], flow[1] + dir[k][0], 0) == dir[k][2]) { + contr += 1; + vett_contr[contr] = k; + } + } + /* calcolo il max valore di strahler */ + max = 0; + for( int ii = 1; ii <= contr; ii++ ) { + s = vett_contr[ii]; + io = flow[0] + dir[s][1]; + jo = flow[1] + dir[s][0]; + if (max < strahlerIter.getSampleDouble(io, jo, 0)) + max = strahlerIter.getSampleDouble(io, jo, 0); + } + /* + * calcolo quanti pixel (conta) presentano massimo valore di strahler + */ + counter = 0; + for( int ii = 1; ii <= contr; ii++ ) { + s = vett_contr[ii]; + io = flow[0] + dir[s][1]; + jo = flow[1] + dir[s][0]; + if (max == strahlerIter.getSampleDouble(io, jo, 0)) + counter += 1; + } + /* + * se conta e' maggiore di 1 si aumenta il numero di strahler di 1 + */ + if (counter > 1) + strahlerIter.setSample(flow[0], flow[1], 0, max + 1); + if (counter == 1) + strahlerIter.setSample(flow[0], flow[1], 0, max); + } + } + pm.worked(1); + } + pm.done(); + for( int j = 0; j < nRows; j++ ) { + for( int i = 0; i < nCols; i++ ) { + if (strahlerIter.getSampleDouble(i, j, 0) == 0.0) + strahlerIter.setSample(i, j, 0, JGTConstants.doubleNovalue); + } + } + strahlerIter.done(); + flowIter.done(); + + outStrahler = CoverageUtilities.buildCoverage("strahler", strahlerWR, regionMap, inFlow.getCoordinateReferenceSystem()); + + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/strahler/StrahlerRatios.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/strahler/StrahlerRatios.java index dd65e66b1..6e0b345b9 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/strahler/StrahlerRatios.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/network/strahler/StrahlerRatios.java @@ -1,217 +1,217 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.network.strahler; - -import java.awt.geom.Point2D; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Set; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.jgrasstools.gears.io.rasterreader.RasterReader; -import org.jgrasstools.gears.io.vectorreader.VectorReader; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.gears.modules.r.summary.RasterSummary; -import org.jgrasstools.gears.utils.features.FeatureMate; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.hortonmachine.modules.demmanipulation.wateroutlet.Wateroutlet; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; - -@Description("Calculates the Strahler ratios.") -@Author(name = "Antonello Andrea, Silvia Francesci", contact = "http://www.hydrologis.com") -@Keywords("Network, Strahler") -@Label(JGTConstants.NETWORK) -@Name("strahlerratio") -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class StrahlerRatios extends JGTModel { - - @Description("The map of flowdirections.") - @In - public GridCoverage2D inFlow = null; - - @Description("The map of Strahler.") - @In - public GridCoverage2D inStrahler = null; - - @Description("The map of the network.") - @In - public SimpleFeatureCollection inNet = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The bifurcation ratio.") - @Out - public double outBisfurcation; - - @Description("The area ratio.") - @Out - public double outArea; - - @Description("The length ratio.") - @Out - public double outLength; - - @Execute - public void process() throws Exception { - checkNull(inFlow, inNet, inStrahler); - - List netList = FeatureUtilities.featureCollectionToMatesList(inNet); - - RasterSummary summary = new RasterSummary(); - summary.inRaster = inStrahler; - summary.pm = pm; - summary.process(); - int maxStrahler = summary.outMax.intValue(); - - LinkedHashMap> strahler2FeaturesMap = new LinkedHashMap>(); - for( int i = 1; i <= maxStrahler; i++ ) { - strahler2FeaturesMap.put(i, new ArrayList()); - } - - final double[] value = new double[1]; - for( FeatureMate featureMate : netList ) { - Geometry geometry = featureMate.getGeometry(); - Coordinate[] coordinates = geometry.getCoordinates(); - Coordinate coordinate = coordinates[0]; - - inStrahler.evaluate(new Point2D.Double(coordinate.x, coordinate.y), value); - - if (JGTConstants.isNovalue(value[0]) || value[0] < 1 || value[0] > maxStrahler) { - throw new ModelsIllegalargumentException("An incorrect value of Strahler was extracted from the map.", this); - } - - int strahler = (int) value[0]; - - List matesList = strahler2FeaturesMap.get(strahler); - matesList.add(featureMate); - } - - Set strahlerSet = strahler2FeaturesMap.keySet(); - Integer[] strahlerArray = strahlerSet.toArray(new Integer[0]); - double ratioSum = 0; - double ratioLengths = 0; - double ratioAreas = 0; - int num = strahlerArray.length - 1; - pm.beginTask("Calculating...", num); - for( int i = 0; i < strahlerArray.length - 1; i++ ) { - Integer strahler1 = strahlerArray[i]; - Integer strahler2 = strahlerArray[i + 1]; - - List mates1 = strahler2FeaturesMap.get(strahler1); - List mates2 = strahler2FeaturesMap.get(strahler2); - - // bifurcation - ratioSum = ratioSum + mates1.size() / (double) mates2.size(); - - // lengths - double lengthAvg1 = 0; - for( FeatureMate featureMate : mates1 ) { - lengthAvg1 = lengthAvg1 + featureMate.getGeometry().getLength(); - } - lengthAvg1 = lengthAvg1 / mates1.size(); - double lengthAvg2 = 0; - for( FeatureMate featureMate : mates2 ) { - lengthAvg2 = lengthAvg2 + featureMate.getGeometry().getLength(); - } - lengthAvg2 = lengthAvg2 / mates2.size(); - - ratioLengths = ratioLengths + lengthAvg2 / lengthAvg1; - - // areas - double areaAvg1 = 0; - for( FeatureMate featureMate : mates1 ) { - Coordinate[] coordinates = featureMate.getGeometry().getCoordinates(); - Coordinate c = coordinates[coordinates.length - 2]; - Wateroutlet wateroutlet = new Wateroutlet(); - wateroutlet.inFlow = inFlow; - wateroutlet.pEast = c.x; - wateroutlet.pNorth = c.y; - wateroutlet.pm = new DummyProgressMonitor(); - wateroutlet.process(); - double outArea = wateroutlet.outArea; - areaAvg1 = areaAvg1 + outArea; - } - areaAvg1 = areaAvg1 / mates1.size(); - double areaAvg2 = 0; - for( FeatureMate featureMate : mates2 ) { - Coordinate[] coordinates = featureMate.getGeometry().getCoordinates(); - Coordinate c = coordinates[coordinates.length - 2]; - Wateroutlet wateroutlet = new Wateroutlet(); - wateroutlet.inFlow = inFlow; - wateroutlet.pEast = c.x; - wateroutlet.pNorth = c.y; - wateroutlet.pm = new DummyProgressMonitor(); - wateroutlet.process(); - double outArea = wateroutlet.outArea; - areaAvg2 = areaAvg2 + outArea; - } - areaAvg2 = areaAvg2 / mates2.size(); - - ratioAreas = ratioAreas + areaAvg2 / areaAvg1; - pm.worked(1); - } - pm.done(); - - outBisfurcation = ratioSum / num; - outLength = ratioLengths / num; - outArea = ratioAreas / num; - - } - - public static void main( String[] args ) throws Exception { - - String flow = "C:/dati_gis/grassdata/liguria_gbovest/def10m/cell/a.cravinaie_drain"; - String strahler = - "C:/dati_gis/grassdata/liguria_gbovest/def10m/cell/a.cravinaie_strahler_50"; - // String strahler = "D:/TMP/TESTSTRAHLER/liguria_gbovest/def10m/cell/a.cravinaie_strahler"; - String net = "E:/lavori_tmp/2011_06_roggeri_cravinaie/shape/cravinaie_net_50_small.shp"; - - StrahlerRatios ratios = new StrahlerRatios(); - ratios.inFlow = RasterReader.readRaster(flow); - ratios.inStrahler = RasterReader.readRaster(strahler); - ratios.inNet = VectorReader.readVector(net); - ratios.process(); - System.out.println(ratios.outBisfurcation); - System.out.println(ratios.outLength); - System.out.println(ratios.outArea); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.network.strahler; + +import java.awt.geom.Point2D; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Set; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.jgrasstools.gears.io.rasterreader.RasterReader; +import org.jgrasstools.gears.io.vectorreader.VectorReader; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.gears.modules.r.summary.RasterSummary; +import org.jgrasstools.gears.utils.features.FeatureMate; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.hortonmachine.modules.demmanipulation.wateroutlet.Wateroutlet; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; + +@Description("Calculates the Strahler ratios.") +@Author(name = "Antonello Andrea, Silvia Francesci", contact = "http://www.hydrologis.com") +@Keywords("Network, Strahler") +@Label(JGTConstants.NETWORK) +@Name("strahlerratio") +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class StrahlerRatios extends JGTModel { + + @Description("The map of flowdirections.") + @In + public GridCoverage2D inFlow = null; + + @Description("The map of Strahler.") + @In + public GridCoverage2D inStrahler = null; + + @Description("The map of the network.") + @In + public SimpleFeatureCollection inNet = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The bifurcation ratio.") + @Out + public double outBisfurcation; + + @Description("The area ratio.") + @Out + public double outArea; + + @Description("The length ratio.") + @Out + public double outLength; + + @Execute + public void process() throws Exception { + checkNull(inFlow, inNet, inStrahler); + + List netList = FeatureUtilities.featureCollectionToMatesList(inNet); + + RasterSummary summary = new RasterSummary(); + summary.inRaster = inStrahler; + summary.pm = pm; + summary.process(); + int maxStrahler = summary.outMax.intValue(); + + LinkedHashMap> strahler2FeaturesMap = new LinkedHashMap>(); + for( int i = 1; i <= maxStrahler; i++ ) { + strahler2FeaturesMap.put(i, new ArrayList()); + } + + final double[] value = new double[1]; + for( FeatureMate featureMate : netList ) { + Geometry geometry = featureMate.getGeometry(); + Coordinate[] coordinates = geometry.getCoordinates(); + Coordinate coordinate = coordinates[0]; + + inStrahler.evaluate(new Point2D.Double(coordinate.x, coordinate.y), value); + + if (JGTConstants.isNovalue(value[0]) || value[0] < 1 || value[0] > maxStrahler) { + throw new ModelsIllegalargumentException("An incorrect value of Strahler was extracted from the map.", this); + } + + int strahler = (int) value[0]; + + List matesList = strahler2FeaturesMap.get(strahler); + matesList.add(featureMate); + } + + Set strahlerSet = strahler2FeaturesMap.keySet(); + Integer[] strahlerArray = strahlerSet.toArray(new Integer[0]); + double ratioSum = 0; + double ratioLengths = 0; + double ratioAreas = 0; + int num = strahlerArray.length - 1; + pm.beginTask("Calculating...", num); + for( int i = 0; i < strahlerArray.length - 1; i++ ) { + Integer strahler1 = strahlerArray[i]; + Integer strahler2 = strahlerArray[i + 1]; + + List mates1 = strahler2FeaturesMap.get(strahler1); + List mates2 = strahler2FeaturesMap.get(strahler2); + + // bifurcation + ratioSum = ratioSum + mates1.size() / (double) mates2.size(); + + // lengths + double lengthAvg1 = 0; + for( FeatureMate featureMate : mates1 ) { + lengthAvg1 = lengthAvg1 + featureMate.getGeometry().getLength(); + } + lengthAvg1 = lengthAvg1 / mates1.size(); + double lengthAvg2 = 0; + for( FeatureMate featureMate : mates2 ) { + lengthAvg2 = lengthAvg2 + featureMate.getGeometry().getLength(); + } + lengthAvg2 = lengthAvg2 / mates2.size(); + + ratioLengths = ratioLengths + lengthAvg2 / lengthAvg1; + + // areas + double areaAvg1 = 0; + for( FeatureMate featureMate : mates1 ) { + Coordinate[] coordinates = featureMate.getGeometry().getCoordinates(); + Coordinate c = coordinates[coordinates.length - 2]; + Wateroutlet wateroutlet = new Wateroutlet(); + wateroutlet.inFlow = inFlow; + wateroutlet.pEast = c.x; + wateroutlet.pNorth = c.y; + wateroutlet.pm = new DummyProgressMonitor(); + wateroutlet.process(); + double outArea = wateroutlet.outArea; + areaAvg1 = areaAvg1 + outArea; + } + areaAvg1 = areaAvg1 / mates1.size(); + double areaAvg2 = 0; + for( FeatureMate featureMate : mates2 ) { + Coordinate[] coordinates = featureMate.getGeometry().getCoordinates(); + Coordinate c = coordinates[coordinates.length - 2]; + Wateroutlet wateroutlet = new Wateroutlet(); + wateroutlet.inFlow = inFlow; + wateroutlet.pEast = c.x; + wateroutlet.pNorth = c.y; + wateroutlet.pm = new DummyProgressMonitor(); + wateroutlet.process(); + double outArea = wateroutlet.outArea; + areaAvg2 = areaAvg2 + outArea; + } + areaAvg2 = areaAvg2 / mates2.size(); + + ratioAreas = ratioAreas + areaAvg2 / areaAvg1; + pm.worked(1); + } + pm.done(); + + outBisfurcation = ratioSum / num; + outLength = ratioLengths / num; + outArea = ratioAreas / num; + + } + + public static void main( String[] args ) throws Exception { + + String flow = "C:/dati_gis/grassdata/liguria_gbovest/def10m/cell/a.cravinaie_drain"; + String strahler = + "C:/dati_gis/grassdata/liguria_gbovest/def10m/cell/a.cravinaie_strahler_50"; + // String strahler = "D:/TMP/TESTSTRAHLER/liguria_gbovest/def10m/cell/a.cravinaie_strahler"; + String net = "E:/lavori_tmp/2011_06_roggeri_cravinaie/shape/cravinaie_net_50_small.shp"; + + StrahlerRatios ratios = new StrahlerRatios(); + ratios.inFlow = RasterReader.readRaster(flow); + ratios.inStrahler = RasterReader.readRaster(strahler); + ratios.inNet = VectorReader.readVector(net); + ratios.process(); + System.out.println(ratios.outBisfurcation); + System.out.println(ratios.outLength); + System.out.println(ratios.outArea); + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/Epanet.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/Epanet.java index 59b5d1990..c89f6cdc1 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/Epanet.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/Epanet.java @@ -1,280 +1,280 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Initialize; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.files.FileUtilities; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.Components; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetException; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetWrapper; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.LinkParameters; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.LinkTypes; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.NodeParameters; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.NodeTypes; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Junction; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Pipe; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Pump; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Reservoir; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Tank; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Valve; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormatter; - -@Description("The main Epanet module") -@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") -@Keywords("Epanet") -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class Epanet extends JGTModel { - - @Description("The epanet dynamic lib file.") - @In - public String inDll = null; - - @Description("The inp file.") - @In - public String inInp = null; - - @Description("The start time.") - @In - public String tStart = "1970-01-01 00:00:00"; //$NON-NLS-1$ - - @Description("The current time.") - @Out - public String tCurrent = null; - - @Description("The pipes result data.") - @Out - public List pipesList = null; - - @Description("The junctions result data.") - @Out - public List junctionsList = null; - - @Description("The pumps result data.") - @Out - public List pumpsList = null; - - @Description("The valves result data.") - @Out - public List valvesList = null; - - @Description("The tanks result data.") - @Out - public List tanksList = null; - - @Description("The reservoirs result data.") - @Out - public List reservoirsList = null; - - @Description("Warning messages for the run.") - @Out - public String warnings = null; - - private EpanetWrapper ep; - - private long[] t = new long[1]; - private long[] tstep = new long[1]; - public static DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMMSS; - - private DateTime current = null; - - @Initialize - public void initProcess() { - // activate time - doProcess = true; - } - - @SuppressWarnings("nls") - @Execute - public void process() throws Exception { - StringBuilder sb = new StringBuilder(""); - if (ep == null) { - if (inDll == null) { - // I am feeling lucky - ep = new EpanetWrapper("epanet2", null); - } else { - File dllFile = new File(inDll); - String nameWithoutExtention = FileUtilities.getNameWithoutExtention(dllFile); - String path = dllFile.getParentFile().getAbsolutePath(); - ep = new EpanetWrapper(nameWithoutExtention, path); - } - -// int version = ep.ENgetversion(); - - current = formatter.parseDateTime(tStart); - tCurrent = tStart; - - ep.ENopen(inInp, inInp + ".rpt", ""); - String w = ep.getWarningMessage(); - if (w != null) - sb.append(w).append("\n"); - ep.ENopenH(); - w = ep.getWarningMessage(); - if (w != null) - sb.append(w).append("\n"); - ep.ENinitH(0); - w = ep.getWarningMessage(); - if (w != null) - sb.append(w).append("\n"); - } else { - current = current.plusSeconds((int) tstep[0]); - tCurrent = current.toString(formatter); - } - - pipesList = new ArrayList(); - junctionsList = new ArrayList(); - pumpsList = new ArrayList(); - valvesList = new ArrayList(); - tanksList = new ArrayList(); - reservoirsList = new ArrayList(); - - ep.ENrunH(t); - String w = ep.getWarningMessage(); - if (w != null) - sb.append(w).append("\n"); - - extractLinksData(ep); - extractNodesData(ep); - - ep.ENnextH(tstep); - w = ep.getWarningMessage(); - if (w != null) - sb.append(w).append("\n"); - - if (tstep[0] <= 0) { - doProcess = false; - } - - String warningsBuffer = sb.toString(); - if (warningsBuffer.length() > 0) { - warnings = warningsBuffer; - } - } - - public void finish() throws EpanetException { - ep.ENcloseH(); - ep.ENclose(); - } - - private void extractLinksData( EpanetWrapper ep ) throws EpanetException { - int linksNum = ep.ENgetcount(Components.EN_LINKCOUNT); - for( int i = 1; i <= linksNum; i++ ) { - LinkTypes type = ep.ENgetlinktype(i); - - switch( type ) { - case EN_GPV: - case EN_PRV: - case EN_PSV: - case EN_PBV: - case EN_FCV: - case EN_TCV: { - Valve v = new Valve(); - v.id = ep.ENgetlinkid(i); - v.time = current; - v.flow = ep.ENgetlinkvalue(i, LinkParameters.EN_FLOW)[0]; - v.velocity = ep.ENgetlinkvalue(i, LinkParameters.EN_VELOCITY)[0]; - v.headloss = ep.ENgetlinkvalue(i, LinkParameters.EN_HEADLOSS)[0]; - v.status = ep.ENgetlinkvalue(i, LinkParameters.EN_STATUS)[0]; - valvesList.add(v); - break; - } - case EN_CVPIPE: - case EN_PIPE: - Pipe p = new Pipe(); - p.id = ep.ENgetlinkid(i); - p.time = current; - p.flow = ep.ENgetlinkvalue(i, LinkParameters.EN_FLOW); - p.velocity = ep.ENgetlinkvalue(i, LinkParameters.EN_VELOCITY); - p.headloss = ep.ENgetlinkvalue(i, LinkParameters.EN_HEADLOSS)[0]; - p.status = ep.ENgetlinkvalue(i, LinkParameters.EN_STATUS)[0]; - pipesList.add(p); - break; - case EN_PUMP: - Pump pu = new Pump(); - pu.id = ep.ENgetlinkid(i); - pu.time = current; - pu.flow = ep.ENgetlinkvalue(i, LinkParameters.EN_FLOW)[0]; - pu.velocity = ep.ENgetlinkvalue(i, LinkParameters.EN_VELOCITY)[0]; - pu.headloss = ep.ENgetlinkvalue(i, LinkParameters.EN_HEADLOSS)[0]; - pu.status = ep.ENgetlinkvalue(i, LinkParameters.EN_STATUS)[0]; - pu.energy = ep.ENgetlinkvalue(i, LinkParameters.EN_ENERGY)[0]; - pumpsList.add(pu); - break; - default: - break; - } - } - } - - private void extractNodesData( EpanetWrapper ep ) throws EpanetException { - int nodesNum = ep.ENgetcount(Components.EN_NODECOUNT); - for( int i = 1; i <= nodesNum; i++ ) { - NodeTypes type = ep.ENgetnodetype(i); - - switch( type ) { - case EN_JUNCTION: - Junction j = new Junction(); - j.id = ep.ENgetnodeid(i); - j.time = current; - j.demand = ep.ENgetnodevalue(i, NodeParameters.EN_DEMAND); - j.head = ep.ENgetnodevalue(i, NodeParameters.EN_HEAD); - j.pressure = ep.ENgetnodevalue(i, NodeParameters.EN_PRESSURE); - junctionsList.add(j); - break; - case EN_RESERVOIR: - Reservoir r = new Reservoir(); - r.id = ep.ENgetnodeid(i); - r.time = current; - r.demand = ep.ENgetnodevalue(i, NodeParameters.EN_DEMAND); - r.head = ep.ENgetnodevalue(i, NodeParameters.EN_HEAD); - reservoirsList.add(r); - break; - case EN_TANK: - Tank t = new Tank(); - t.id = ep.ENgetnodeid(i); - t.time = current; - t.demand = ep.ENgetnodevalue(i, NodeParameters.EN_DEMAND); - t.head = ep.ENgetnodevalue(i, NodeParameters.EN_HEAD); - t.pressure = ep.ENgetnodevalue(i, NodeParameters.EN_PRESSURE); - tanksList.add(t); - break; - - default: - break; - } - } - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Initialize; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.files.FileUtilities; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.Components; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetException; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetWrapper; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.LinkParameters; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.LinkTypes; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.NodeParameters; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.NodeTypes; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Junction; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Pipe; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Pump; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Reservoir; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Tank; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types.Valve; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormatter; + +@Description("The main Epanet module") +@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") +@Keywords("Epanet") +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class Epanet extends JGTModel { + + @Description("The epanet dynamic lib file.") + @In + public String inDll = null; + + @Description("The inp file.") + @In + public String inInp = null; + + @Description("The start time.") + @In + public String tStart = "1970-01-01 00:00:00"; //$NON-NLS-1$ + + @Description("The current time.") + @Out + public String tCurrent = null; + + @Description("The pipes result data.") + @Out + public List pipesList = null; + + @Description("The junctions result data.") + @Out + public List junctionsList = null; + + @Description("The pumps result data.") + @Out + public List pumpsList = null; + + @Description("The valves result data.") + @Out + public List valvesList = null; + + @Description("The tanks result data.") + @Out + public List tanksList = null; + + @Description("The reservoirs result data.") + @Out + public List reservoirsList = null; + + @Description("Warning messages for the run.") + @Out + public String warnings = null; + + private EpanetWrapper ep; + + private long[] t = new long[1]; + private long[] tstep = new long[1]; + public static DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMMSS; + + private DateTime current = null; + + @Initialize + public void initProcess() { + // activate time + doProcess = true; + } + + @SuppressWarnings("nls") + @Execute + public void process() throws Exception { + StringBuilder sb = new StringBuilder(""); + if (ep == null) { + if (inDll == null) { + // I am feeling lucky + ep = new EpanetWrapper("epanet2", null); + } else { + File dllFile = new File(inDll); + String nameWithoutExtention = FileUtilities.getNameWithoutExtention(dllFile); + String path = dllFile.getParentFile().getAbsolutePath(); + ep = new EpanetWrapper(nameWithoutExtention, path); + } + +// int version = ep.ENgetversion(); + + current = formatter.parseDateTime(tStart); + tCurrent = tStart; + + ep.ENopen(inInp, inInp + ".rpt", ""); + String w = ep.getWarningMessage(); + if (w != null) + sb.append(w).append("\n"); + ep.ENopenH(); + w = ep.getWarningMessage(); + if (w != null) + sb.append(w).append("\n"); + ep.ENinitH(0); + w = ep.getWarningMessage(); + if (w != null) + sb.append(w).append("\n"); + } else { + current = current.plusSeconds((int) tstep[0]); + tCurrent = current.toString(formatter); + } + + pipesList = new ArrayList(); + junctionsList = new ArrayList(); + pumpsList = new ArrayList(); + valvesList = new ArrayList(); + tanksList = new ArrayList(); + reservoirsList = new ArrayList(); + + ep.ENrunH(t); + String w = ep.getWarningMessage(); + if (w != null) + sb.append(w).append("\n"); + + extractLinksData(ep); + extractNodesData(ep); + + ep.ENnextH(tstep); + w = ep.getWarningMessage(); + if (w != null) + sb.append(w).append("\n"); + + if (tstep[0] <= 0) { + doProcess = false; + } + + String warningsBuffer = sb.toString(); + if (warningsBuffer.length() > 0) { + warnings = warningsBuffer; + } + } + + public void finish() throws EpanetException { + ep.ENcloseH(); + ep.ENclose(); + } + + private void extractLinksData( EpanetWrapper ep ) throws EpanetException { + int linksNum = ep.ENgetcount(Components.EN_LINKCOUNT); + for( int i = 1; i <= linksNum; i++ ) { + LinkTypes type = ep.ENgetlinktype(i); + + switch( type ) { + case EN_GPV: + case EN_PRV: + case EN_PSV: + case EN_PBV: + case EN_FCV: + case EN_TCV: { + Valve v = new Valve(); + v.id = ep.ENgetlinkid(i); + v.time = current; + v.flow = ep.ENgetlinkvalue(i, LinkParameters.EN_FLOW)[0]; + v.velocity = ep.ENgetlinkvalue(i, LinkParameters.EN_VELOCITY)[0]; + v.headloss = ep.ENgetlinkvalue(i, LinkParameters.EN_HEADLOSS)[0]; + v.status = ep.ENgetlinkvalue(i, LinkParameters.EN_STATUS)[0]; + valvesList.add(v); + break; + } + case EN_CVPIPE: + case EN_PIPE: + Pipe p = new Pipe(); + p.id = ep.ENgetlinkid(i); + p.time = current; + p.flow = ep.ENgetlinkvalue(i, LinkParameters.EN_FLOW); + p.velocity = ep.ENgetlinkvalue(i, LinkParameters.EN_VELOCITY); + p.headloss = ep.ENgetlinkvalue(i, LinkParameters.EN_HEADLOSS)[0]; + p.status = ep.ENgetlinkvalue(i, LinkParameters.EN_STATUS)[0]; + pipesList.add(p); + break; + case EN_PUMP: + Pump pu = new Pump(); + pu.id = ep.ENgetlinkid(i); + pu.time = current; + pu.flow = ep.ENgetlinkvalue(i, LinkParameters.EN_FLOW)[0]; + pu.velocity = ep.ENgetlinkvalue(i, LinkParameters.EN_VELOCITY)[0]; + pu.headloss = ep.ENgetlinkvalue(i, LinkParameters.EN_HEADLOSS)[0]; + pu.status = ep.ENgetlinkvalue(i, LinkParameters.EN_STATUS)[0]; + pu.energy = ep.ENgetlinkvalue(i, LinkParameters.EN_ENERGY)[0]; + pumpsList.add(pu); + break; + default: + break; + } + } + } + + private void extractNodesData( EpanetWrapper ep ) throws EpanetException { + int nodesNum = ep.ENgetcount(Components.EN_NODECOUNT); + for( int i = 1; i <= nodesNum; i++ ) { + NodeTypes type = ep.ENgetnodetype(i); + + switch( type ) { + case EN_JUNCTION: + Junction j = new Junction(); + j.id = ep.ENgetnodeid(i); + j.time = current; + j.demand = ep.ENgetnodevalue(i, NodeParameters.EN_DEMAND); + j.head = ep.ENgetnodevalue(i, NodeParameters.EN_HEAD); + j.pressure = ep.ENgetnodevalue(i, NodeParameters.EN_PRESSURE); + junctionsList.add(j); + break; + case EN_RESERVOIR: + Reservoir r = new Reservoir(); + r.id = ep.ENgetnodeid(i); + r.time = current; + r.demand = ep.ENgetnodevalue(i, NodeParameters.EN_DEMAND); + r.head = ep.ENgetnodevalue(i, NodeParameters.EN_HEAD); + reservoirsList.add(r); + break; + case EN_TANK: + Tank t = new Tank(); + t.id = ep.ENgetnodeid(i); + t.time = current; + t.demand = ep.ENgetnodevalue(i, NodeParameters.EN_DEMAND); + t.head = ep.ENgetnodevalue(i, NodeParameters.EN_HEAD); + t.pressure = ep.ENgetnodevalue(i, NodeParameters.EN_PRESSURE); + tanksList.add(t); + break; + + default: + break; + } + } + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetFeaturesSynchronizer.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetFeaturesSynchronizer.java index 55d74a9dc..410a2aa1f 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetFeaturesSynchronizer.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetFeaturesSynchronizer.java @@ -1,436 +1,436 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet; - -import static java.lang.Math.abs; -import static java.lang.Math.pow; -import static java.lang.Math.sqrt; - -import java.awt.geom.Point2D; -import java.util.ArrayList; -import java.util.List; -import java.util.TreeSet; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetConstants; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Junctions; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pipes; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pumps; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Reservoirs; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Tanks; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Valves; -import org.opengis.feature.simple.SimpleFeature; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; - -@Description("Synchronizes the features of the different epanet layers.") -@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") -@Keywords("Epanet") -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -@SuppressWarnings("nls") -public class EpanetFeaturesSynchronizer extends JGTModel { - - @Description("The junctions features.") - @In - @Out - public SimpleFeatureCollection inJunctions = null; - - @Description("The junctions features.") - @In - @Out - public SimpleFeatureCollection inTanks = null; - - @Description("The tanks features.") - @In - @Out - public SimpleFeatureCollection inReservoirs = null; - - @Description("The pumps features.") - @In - @Out - public SimpleFeatureCollection inPumps = null; - - @Description("The valves features.") - @In - @Out - public SimpleFeatureCollection inValves = null; - - @Description("The pipes features.") - @In - @Out - public SimpleFeatureCollection inPipes = null; - - @Description("The elevation model to extract the elevations.") - @In - public GridCoverage2D inElev = null; - - @Description("The tolerance in meters for putting a node on a coordinate (default = 0.0001 meters).") - @In - public double pTol = 0.0001; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("Warning messages if something odd happened but is no error.") - @Out - public String outWarning = ""; - - private StringBuilder warningBuilder = new StringBuilder(); - - private String junctionElevatioAttributeName; - private String tanksElevationAttributeName; - private String reservoirHeadAttributeName; - private String pipesStartNodeAttributeName; - private String pipesEndNodeAttributeName; - private String pipesIdAttributeName; - private String lengthAttributeName; - private String pumpsStartNodeAttributeName; - private String pumpsEndNodeAttributeName; - private String pumpsIdAttributeName; - private String valvesStartNodeAttributeName; - private String valvesEndNodeAttributeName; - private String valvesIdAttributeName; - - @Execute - @SuppressWarnings("unchecked") - public void process() throws Exception { - checkNull(inJunctions, inPipes); - - List junctionsList = toList(inJunctions); - List pipesList = toList(inPipes); - - List tanksList = new ArrayList(); - if (inTanks != null) - tanksList = toList(inTanks); - List reservoirsList = new ArrayList(); - if (inReservoirs != null) - reservoirsList = toList(inReservoirs); - List pumpsList = new ArrayList(); - if (inPumps != null) - pumpsList = toList(inPumps); - List valvesList = new ArrayList(); - if (inValves != null) - valvesList = toList(inValves); - - /* - * check field names - */ - junctionElevatioAttributeName = FeatureUtilities.findAttributeName(inJunctions.getSchema(), - Junctions.ELEVATION.getAttributeName()); - String junctionIDAttributeName = FeatureUtilities.findAttributeName(inJunctions.getSchema(), - Junctions.ID.getAttributeName()); - pipesStartNodeAttributeName = FeatureUtilities - .findAttributeName(inPipes.getSchema(), Pipes.START_NODE.getAttributeName()); - pipesEndNodeAttributeName = FeatureUtilities.findAttributeName(inPipes.getSchema(), Pipes.END_NODE.getAttributeName()); - pipesIdAttributeName = FeatureUtilities.findAttributeName(inPipes.getSchema(), Pipes.ID.getAttributeName()); - lengthAttributeName = FeatureUtilities.findAttributeName(inPipes.getSchema(), Pipes.LENGTH.getAttributeName()); - - String tanksIDAttributeName = null; - if (inTanks != null) { - tanksElevationAttributeName = FeatureUtilities.findAttributeName(inTanks.getSchema(), - Tanks.BOTTOM_ELEVATION.getAttributeName()); - tanksIDAttributeName = FeatureUtilities.findAttributeName(inTanks.getSchema(), Tanks.ID.getAttributeName()); - } - String reservoirIDAttributeName = null; - if (inReservoirs != null) { - reservoirHeadAttributeName = FeatureUtilities.findAttributeName(inReservoirs.getSchema(), - Reservoirs.HEAD.getAttributeName()); - reservoirIDAttributeName = FeatureUtilities.findAttributeName(inReservoirs.getSchema(), - Reservoirs.ID.getAttributeName()); - } - if (inPumps != null) { - pumpsStartNodeAttributeName = FeatureUtilities.findAttributeName(inPumps.getSchema(), - Pumps.START_NODE.getAttributeName()); - pumpsEndNodeAttributeName = FeatureUtilities - .findAttributeName(inPumps.getSchema(), Pumps.END_NODE.getAttributeName()); - pumpsIdAttributeName = FeatureUtilities.findAttributeName(inPumps.getSchema(), Pumps.ID.getAttributeName()); - } - if (inValves != null) { - valvesStartNodeAttributeName = FeatureUtilities.findAttributeName(inValves.getSchema(), - Valves.START_NODE.getAttributeName()); - valvesEndNodeAttributeName = FeatureUtilities.findAttributeName(inValves.getSchema(), - Valves.END_NODE.getAttributeName()); - valvesIdAttributeName = FeatureUtilities.findAttributeName(inValves.getSchema(), Valves.ID.getAttributeName()); - } - - /* - * check that no ids are double - */ - checkIds(junctionsList, junctionIDAttributeName, "Found two junctions with the same ID. Check your data."); - checkIds(pipesList, pipesIdAttributeName, "Found two pipes with the same ID. Check your data."); - if (inPumps != null) - checkIds(pumpsList, pumpsIdAttributeName, "Found two pumpes with the same ID. Check your data."); - if (inTanks != null) - checkIds(tanksList, tanksIDAttributeName, "Found two tanks with the same ID. Check your data."); - if (inValves != null) - checkIds(valvesList, valvesIdAttributeName, "Found two valves with the same ID. Check your data."); - if (inReservoirs != null) - checkIds(reservoirsList, reservoirIDAttributeName, "Found two reservoirs with the same ID. Check your data."); - - /* - * elevations for junctions and tanks on dem - */ - if (inElev != null) { - pm.beginTask("Extracting elevations from dem...", junctionsList.size() + tanksList.size() + reservoirsList.size()); - - inJunctions = FeatureCollections.newCollection(); - for( SimpleFeature junction : junctionsList ) { - Geometry geometry = (Geometry) junction.getDefaultGeometry(); - Coordinate coordinate = geometry.getCoordinate(); - double[] dest = new double[]{-9999.0}; - try { - inElev.evaluate(new Point2D.Double(coordinate.x, coordinate.y), dest); - junction.setAttribute(junctionElevatioAttributeName, dest[0]); - } catch (Exception e) { - appendWarning("No elevation available for junction: ", - (String) junction.getAttribute(junctionElevatioAttributeName)); - } - inJunctions.add(junction); - pm.worked(1); - } - - inTanks = FeatureCollections.newCollection(); - for( SimpleFeature tank : tanksList ) { - Geometry geometry = (Geometry) tank.getDefaultGeometry(); - Coordinate coordinate = geometry.getCoordinate(); - double[] dest = new double[]{-9999.0}; - try { - inElev.evaluate(new Point2D.Double(coordinate.x, coordinate.y), dest); - tank.setAttribute(tanksElevationAttributeName, dest[0]); - } catch (Exception e) { - appendWarning("No elevation available for tank: ", (String) tank.getAttribute(tanksElevationAttributeName)); - } - inTanks.add(tank); - pm.worked(1); - } - - inReservoirs = FeatureCollections.newCollection(); - for( SimpleFeature reservoir : reservoirsList ) { - Geometry geometry = (Geometry) reservoir.getDefaultGeometry(); - Coordinate coordinate = geometry.getCoordinate(); - double[] dest = new double[]{-9999.0}; - try { - inElev.evaluate(new Point2D.Double(coordinate.x, coordinate.y), dest); - reservoir.setAttribute(reservoirHeadAttributeName, dest[0]); - } catch (Exception e) { - appendWarning("No elevation available for reservoir: ", - (String) reservoir.getAttribute(reservoirHeadAttributeName)); - } - inReservoirs.add(reservoir); - pm.worked(1); - } - pm.done(); - } - - /* - * handle pipes and links to the junctions-tanks-reservoirs - */ - pm.beginTask("Extracting pipe-nodes links...", pipesList.size()); - for( SimpleFeature pipe : pipesList ) { - Geometry geometry = (Geometry) pipe.getDefaultGeometry(); - Coordinate[] coordinates = geometry.getCoordinates(); - if (coordinates.length < 2) { - Object attribute = FeatureUtilities.getAttributeCaseChecked(pipe, Pipes.ID.getAttributeName()); - appendWarning("Found pipe with less than 2 coordinates: ", attribute.toString()); - continue; - } - Coordinate first = coordinates[0]; - Coordinate last = coordinates[coordinates.length - 1]; - - SimpleFeature nearestFirst = findWithinTolerance(first, junctionsList, tanksList, reservoirsList); - if (nearestFirst != null) { - Object attribute = FeatureUtilities.getAttributeCaseChecked(nearestFirst, Junctions.ID.getAttributeName()); - pipe.setAttribute(pipesStartNodeAttributeName, attribute); - } else { - Object attribute = pipe.getAttribute(pipesIdAttributeName); - appendWarning("No start node found for pipe: ", attribute.toString()); - } - SimpleFeature nearestLast = findWithinTolerance(last, junctionsList, tanksList, reservoirsList); - if (nearestLast != null) { - Object attribute = FeatureUtilities.getAttributeCaseChecked(nearestLast, Junctions.ID.getAttributeName()); - pipe.setAttribute(pipesEndNodeAttributeName, attribute); - } else { - Object attribute = pipe.getAttribute(pipesIdAttributeName); - appendWarning("No end node found for pipe: ", attribute.toString()); - } - - if (nearestFirst != null && nearestLast != null) { - Object elev1Obj = getElevation(nearestFirst); - Object elev2Obj = getElevation(nearestLast); - double length = geometry.getLength(); - if (elev1Obj != null && elev2Obj != null) { - if (elev1Obj instanceof Double) { - double elev1 = (Double) elev1Obj; - double elev2 = (Double) elev2Obj; - double length3d = sqrt(pow(abs(elev2 - elev1), 2.0) + pow(length, 2.0)); - pipe.setAttribute(lengthAttributeName, length3d); - } - } else { - // 2D - pipe.setAttribute(lengthAttributeName, length); - } - } - pm.worked(1); - } - pm.done(); - - int dummyIndex = 0; - - /* - * handle pumps - */ - pm.beginTask("Extracting pumps attributes...", pumpsList.size()); - inPumps = FeatureCollections.newCollection(); - for( SimpleFeature pump : pumpsList ) { - Geometry geometry = (Geometry) pump.getDefaultGeometry(); - Geometry buffer = geometry.buffer(pTol); - - boolean gotIt = false; - for( SimpleFeature pipe : pipesList ) { - Geometry pipeGeom = (Geometry) pipe.getDefaultGeometry(); - if (pipeGeom.intersects(buffer)) { - // pump is on pipe - Object startNode = pipe.getAttribute(pipesStartNodeAttributeName); - pump.setAttribute(pumpsStartNodeAttributeName, startNode); - Object endNode = pipe.getAttribute(pipesEndNodeAttributeName); - pump.setAttribute(pumpsEndNodeAttributeName, endNode); - - String dummy = EpanetConstants.DUMMYPIPE.toString() + dummyIndex++; - pipe.setAttribute(pipesIdAttributeName, dummy); - gotIt = true; - } - } - if (!gotIt) { - appendWarning("Pump ", (String) pump.getAttribute(pumpsIdAttributeName), " could not be placed on any pipe"); - } - inPumps.add(pump); - pm.worked(1); - } - pm.done(); - - /* - * handle valves - */ - pm.beginTask("Extracting valves attributes...", valvesList.size()); - inValves = FeatureCollections.newCollection(); - for( SimpleFeature valve : valvesList ) { - Geometry geometry = (Geometry) valve.getDefaultGeometry(); - Geometry buffer = geometry.buffer(pTol); - - boolean gotIt = false; - for( SimpleFeature pipe : pipesList ) { - Geometry pipeGeom = (Geometry) pipe.getDefaultGeometry(); - if (pipeGeom.intersects(buffer)) { - // pump is on pipe - Object startNode = pipe.getAttribute(pipesStartNodeAttributeName); - valve.setAttribute(valvesStartNodeAttributeName, startNode); - Object endNode = pipe.getAttribute(pipesEndNodeAttributeName); - valve.setAttribute(valvesEndNodeAttributeName, endNode); - // mark pipe as dummy - String dummy = EpanetConstants.DUMMYPIPE.toString() + dummyIndex++; - pipe.setAttribute(pipesIdAttributeName, dummy); - gotIt = true; - } - } - if (!gotIt) { - appendWarning("Valve ", (String) valve.getAttribute(valvesIdAttributeName), " could not be placed on any pipe"); - } - inValves.add(valve); - pm.worked(1); - } - pm.done(); - - inPipes = FeatureCollections.newCollection(); - for( SimpleFeature pipe : pipesList ) { - inPipes.add(pipe); - } - - outWarning = warningBuilder.toString(); - } - - private void checkIds( List featureList, String attributesName, String msg ) { - TreeSet checkTree = new TreeSet(); - for( SimpleFeature sF : featureList ) { - Object id = sF.getAttribute(attributesName); - if (!checkTree.add(id)) { - throw new ModelsIllegalargumentException(msg + "(" + id + ")", this); - } - } - } - - private Object getElevation( SimpleFeature nearestFirst ) { - Object elevObj = nearestFirst.getAttribute(junctionElevatioAttributeName); - if (elevObj == null) { - // try tank - elevObj = nearestFirst.getAttribute(tanksElevationAttributeName); - } - if (elevObj == null) { - // try - elevObj = nearestFirst.getAttribute(reservoirHeadAttributeName); - } - return elevObj; - } - - private List toList( SimpleFeatureCollection fc ) { - List list = new ArrayList(); - if (fc != null) - list = FeatureUtilities.featureCollectionToList(fc); - return list; - } - - private SimpleFeature findWithinTolerance( Coordinate c, List... nodesLists ) { - for( List nodeList : nodesLists ) { - for( SimpleFeature node : nodeList ) { - Geometry geometry = (Geometry) node.getDefaultGeometry(); - Coordinate coord = geometry.getCoordinate(); - if (coord.distance(c) <= pTol) { - return node; - } - } - } - return null; - } - - private void appendWarning( String... msgs ) { - for( String msg : msgs ) { - warningBuilder.append(msg); - } - warningBuilder.append("\n"); - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet; + +import static java.lang.Math.abs; +import static java.lang.Math.pow; +import static java.lang.Math.sqrt; + +import java.awt.geom.Point2D; +import java.util.ArrayList; +import java.util.List; +import java.util.TreeSet; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetConstants; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Junctions; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pipes; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pumps; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Reservoirs; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Tanks; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Valves; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; + +@Description("Synchronizes the features of the different epanet layers.") +@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") +@Keywords("Epanet") +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +@SuppressWarnings("nls") +public class EpanetFeaturesSynchronizer extends JGTModel { + + @Description("The junctions features.") + @In + @Out + public SimpleFeatureCollection inJunctions = null; + + @Description("The junctions features.") + @In + @Out + public SimpleFeatureCollection inTanks = null; + + @Description("The tanks features.") + @In + @Out + public SimpleFeatureCollection inReservoirs = null; + + @Description("The pumps features.") + @In + @Out + public SimpleFeatureCollection inPumps = null; + + @Description("The valves features.") + @In + @Out + public SimpleFeatureCollection inValves = null; + + @Description("The pipes features.") + @In + @Out + public SimpleFeatureCollection inPipes = null; + + @Description("The elevation model to extract the elevations.") + @In + public GridCoverage2D inElev = null; + + @Description("The tolerance in meters for putting a node on a coordinate (default = 0.0001 meters).") + @In + public double pTol = 0.0001; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("Warning messages if something odd happened but is no error.") + @Out + public String outWarning = ""; + + private StringBuilder warningBuilder = new StringBuilder(); + + private String junctionElevatioAttributeName; + private String tanksElevationAttributeName; + private String reservoirHeadAttributeName; + private String pipesStartNodeAttributeName; + private String pipesEndNodeAttributeName; + private String pipesIdAttributeName; + private String lengthAttributeName; + private String pumpsStartNodeAttributeName; + private String pumpsEndNodeAttributeName; + private String pumpsIdAttributeName; + private String valvesStartNodeAttributeName; + private String valvesEndNodeAttributeName; + private String valvesIdAttributeName; + + @Execute + @SuppressWarnings("unchecked") + public void process() throws Exception { + checkNull(inJunctions, inPipes); + + List junctionsList = toList(inJunctions); + List pipesList = toList(inPipes); + + List tanksList = new ArrayList(); + if (inTanks != null) + tanksList = toList(inTanks); + List reservoirsList = new ArrayList(); + if (inReservoirs != null) + reservoirsList = toList(inReservoirs); + List pumpsList = new ArrayList(); + if (inPumps != null) + pumpsList = toList(inPumps); + List valvesList = new ArrayList(); + if (inValves != null) + valvesList = toList(inValves); + + /* + * check field names + */ + junctionElevatioAttributeName = FeatureUtilities.findAttributeName(inJunctions.getSchema(), + Junctions.ELEVATION.getAttributeName()); + String junctionIDAttributeName = FeatureUtilities.findAttributeName(inJunctions.getSchema(), + Junctions.ID.getAttributeName()); + pipesStartNodeAttributeName = FeatureUtilities + .findAttributeName(inPipes.getSchema(), Pipes.START_NODE.getAttributeName()); + pipesEndNodeAttributeName = FeatureUtilities.findAttributeName(inPipes.getSchema(), Pipes.END_NODE.getAttributeName()); + pipesIdAttributeName = FeatureUtilities.findAttributeName(inPipes.getSchema(), Pipes.ID.getAttributeName()); + lengthAttributeName = FeatureUtilities.findAttributeName(inPipes.getSchema(), Pipes.LENGTH.getAttributeName()); + + String tanksIDAttributeName = null; + if (inTanks != null) { + tanksElevationAttributeName = FeatureUtilities.findAttributeName(inTanks.getSchema(), + Tanks.BOTTOM_ELEVATION.getAttributeName()); + tanksIDAttributeName = FeatureUtilities.findAttributeName(inTanks.getSchema(), Tanks.ID.getAttributeName()); + } + String reservoirIDAttributeName = null; + if (inReservoirs != null) { + reservoirHeadAttributeName = FeatureUtilities.findAttributeName(inReservoirs.getSchema(), + Reservoirs.HEAD.getAttributeName()); + reservoirIDAttributeName = FeatureUtilities.findAttributeName(inReservoirs.getSchema(), + Reservoirs.ID.getAttributeName()); + } + if (inPumps != null) { + pumpsStartNodeAttributeName = FeatureUtilities.findAttributeName(inPumps.getSchema(), + Pumps.START_NODE.getAttributeName()); + pumpsEndNodeAttributeName = FeatureUtilities + .findAttributeName(inPumps.getSchema(), Pumps.END_NODE.getAttributeName()); + pumpsIdAttributeName = FeatureUtilities.findAttributeName(inPumps.getSchema(), Pumps.ID.getAttributeName()); + } + if (inValves != null) { + valvesStartNodeAttributeName = FeatureUtilities.findAttributeName(inValves.getSchema(), + Valves.START_NODE.getAttributeName()); + valvesEndNodeAttributeName = FeatureUtilities.findAttributeName(inValves.getSchema(), + Valves.END_NODE.getAttributeName()); + valvesIdAttributeName = FeatureUtilities.findAttributeName(inValves.getSchema(), Valves.ID.getAttributeName()); + } + + /* + * check that no ids are double + */ + checkIds(junctionsList, junctionIDAttributeName, "Found two junctions with the same ID. Check your data."); + checkIds(pipesList, pipesIdAttributeName, "Found two pipes with the same ID. Check your data."); + if (inPumps != null) + checkIds(pumpsList, pumpsIdAttributeName, "Found two pumpes with the same ID. Check your data."); + if (inTanks != null) + checkIds(tanksList, tanksIDAttributeName, "Found two tanks with the same ID. Check your data."); + if (inValves != null) + checkIds(valvesList, valvesIdAttributeName, "Found two valves with the same ID. Check your data."); + if (inReservoirs != null) + checkIds(reservoirsList, reservoirIDAttributeName, "Found two reservoirs with the same ID. Check your data."); + + /* + * elevations for junctions and tanks on dem + */ + if (inElev != null) { + pm.beginTask("Extracting elevations from dem...", junctionsList.size() + tanksList.size() + reservoirsList.size()); + + inJunctions = FeatureCollections.newCollection(); + for( SimpleFeature junction : junctionsList ) { + Geometry geometry = (Geometry) junction.getDefaultGeometry(); + Coordinate coordinate = geometry.getCoordinate(); + double[] dest = new double[]{-9999.0}; + try { + inElev.evaluate(new Point2D.Double(coordinate.x, coordinate.y), dest); + junction.setAttribute(junctionElevatioAttributeName, dest[0]); + } catch (Exception e) { + appendWarning("No elevation available for junction: ", + (String) junction.getAttribute(junctionElevatioAttributeName)); + } + inJunctions.add(junction); + pm.worked(1); + } + + inTanks = FeatureCollections.newCollection(); + for( SimpleFeature tank : tanksList ) { + Geometry geometry = (Geometry) tank.getDefaultGeometry(); + Coordinate coordinate = geometry.getCoordinate(); + double[] dest = new double[]{-9999.0}; + try { + inElev.evaluate(new Point2D.Double(coordinate.x, coordinate.y), dest); + tank.setAttribute(tanksElevationAttributeName, dest[0]); + } catch (Exception e) { + appendWarning("No elevation available for tank: ", (String) tank.getAttribute(tanksElevationAttributeName)); + } + inTanks.add(tank); + pm.worked(1); + } + + inReservoirs = FeatureCollections.newCollection(); + for( SimpleFeature reservoir : reservoirsList ) { + Geometry geometry = (Geometry) reservoir.getDefaultGeometry(); + Coordinate coordinate = geometry.getCoordinate(); + double[] dest = new double[]{-9999.0}; + try { + inElev.evaluate(new Point2D.Double(coordinate.x, coordinate.y), dest); + reservoir.setAttribute(reservoirHeadAttributeName, dest[0]); + } catch (Exception e) { + appendWarning("No elevation available for reservoir: ", + (String) reservoir.getAttribute(reservoirHeadAttributeName)); + } + inReservoirs.add(reservoir); + pm.worked(1); + } + pm.done(); + } + + /* + * handle pipes and links to the junctions-tanks-reservoirs + */ + pm.beginTask("Extracting pipe-nodes links...", pipesList.size()); + for( SimpleFeature pipe : pipesList ) { + Geometry geometry = (Geometry) pipe.getDefaultGeometry(); + Coordinate[] coordinates = geometry.getCoordinates(); + if (coordinates.length < 2) { + Object attribute = FeatureUtilities.getAttributeCaseChecked(pipe, Pipes.ID.getAttributeName()); + appendWarning("Found pipe with less than 2 coordinates: ", attribute.toString()); + continue; + } + Coordinate first = coordinates[0]; + Coordinate last = coordinates[coordinates.length - 1]; + + SimpleFeature nearestFirst = findWithinTolerance(first, junctionsList, tanksList, reservoirsList); + if (nearestFirst != null) { + Object attribute = FeatureUtilities.getAttributeCaseChecked(nearestFirst, Junctions.ID.getAttributeName()); + pipe.setAttribute(pipesStartNodeAttributeName, attribute); + } else { + Object attribute = pipe.getAttribute(pipesIdAttributeName); + appendWarning("No start node found for pipe: ", attribute.toString()); + } + SimpleFeature nearestLast = findWithinTolerance(last, junctionsList, tanksList, reservoirsList); + if (nearestLast != null) { + Object attribute = FeatureUtilities.getAttributeCaseChecked(nearestLast, Junctions.ID.getAttributeName()); + pipe.setAttribute(pipesEndNodeAttributeName, attribute); + } else { + Object attribute = pipe.getAttribute(pipesIdAttributeName); + appendWarning("No end node found for pipe: ", attribute.toString()); + } + + if (nearestFirst != null && nearestLast != null) { + Object elev1Obj = getElevation(nearestFirst); + Object elev2Obj = getElevation(nearestLast); + double length = geometry.getLength(); + if (elev1Obj != null && elev2Obj != null) { + if (elev1Obj instanceof Double) { + double elev1 = (Double) elev1Obj; + double elev2 = (Double) elev2Obj; + double length3d = sqrt(pow(abs(elev2 - elev1), 2.0) + pow(length, 2.0)); + pipe.setAttribute(lengthAttributeName, length3d); + } + } else { + // 2D + pipe.setAttribute(lengthAttributeName, length); + } + } + pm.worked(1); + } + pm.done(); + + int dummyIndex = 0; + + /* + * handle pumps + */ + pm.beginTask("Extracting pumps attributes...", pumpsList.size()); + inPumps = FeatureCollections.newCollection(); + for( SimpleFeature pump : pumpsList ) { + Geometry geometry = (Geometry) pump.getDefaultGeometry(); + Geometry buffer = geometry.buffer(pTol); + + boolean gotIt = false; + for( SimpleFeature pipe : pipesList ) { + Geometry pipeGeom = (Geometry) pipe.getDefaultGeometry(); + if (pipeGeom.intersects(buffer)) { + // pump is on pipe + Object startNode = pipe.getAttribute(pipesStartNodeAttributeName); + pump.setAttribute(pumpsStartNodeAttributeName, startNode); + Object endNode = pipe.getAttribute(pipesEndNodeAttributeName); + pump.setAttribute(pumpsEndNodeAttributeName, endNode); + + String dummy = EpanetConstants.DUMMYPIPE.toString() + dummyIndex++; + pipe.setAttribute(pipesIdAttributeName, dummy); + gotIt = true; + } + } + if (!gotIt) { + appendWarning("Pump ", (String) pump.getAttribute(pumpsIdAttributeName), " could not be placed on any pipe"); + } + inPumps.add(pump); + pm.worked(1); + } + pm.done(); + + /* + * handle valves + */ + pm.beginTask("Extracting valves attributes...", valvesList.size()); + inValves = FeatureCollections.newCollection(); + for( SimpleFeature valve : valvesList ) { + Geometry geometry = (Geometry) valve.getDefaultGeometry(); + Geometry buffer = geometry.buffer(pTol); + + boolean gotIt = false; + for( SimpleFeature pipe : pipesList ) { + Geometry pipeGeom = (Geometry) pipe.getDefaultGeometry(); + if (pipeGeom.intersects(buffer)) { + // pump is on pipe + Object startNode = pipe.getAttribute(pipesStartNodeAttributeName); + valve.setAttribute(valvesStartNodeAttributeName, startNode); + Object endNode = pipe.getAttribute(pipesEndNodeAttributeName); + valve.setAttribute(valvesEndNodeAttributeName, endNode); + // mark pipe as dummy + String dummy = EpanetConstants.DUMMYPIPE.toString() + dummyIndex++; + pipe.setAttribute(pipesIdAttributeName, dummy); + gotIt = true; + } + } + if (!gotIt) { + appendWarning("Valve ", (String) valve.getAttribute(valvesIdAttributeName), " could not be placed on any pipe"); + } + inValves.add(valve); + pm.worked(1); + } + pm.done(); + + inPipes = FeatureCollections.newCollection(); + for( SimpleFeature pipe : pipesList ) { + inPipes.add(pipe); + } + + outWarning = warningBuilder.toString(); + } + + private void checkIds( List featureList, String attributesName, String msg ) { + TreeSet checkTree = new TreeSet(); + for( SimpleFeature sF : featureList ) { + Object id = sF.getAttribute(attributesName); + if (!checkTree.add(id)) { + throw new ModelsIllegalargumentException(msg + "(" + id + ")", this); + } + } + } + + private Object getElevation( SimpleFeature nearestFirst ) { + Object elevObj = nearestFirst.getAttribute(junctionElevatioAttributeName); + if (elevObj == null) { + // try tank + elevObj = nearestFirst.getAttribute(tanksElevationAttributeName); + } + if (elevObj == null) { + // try + elevObj = nearestFirst.getAttribute(reservoirHeadAttributeName); + } + return elevObj; + } + + private List toList( SimpleFeatureCollection fc ) { + List list = new ArrayList(); + if (fc != null) + list = FeatureUtilities.featureCollectionToList(fc); + return list; + } + + private SimpleFeature findWithinTolerance( Coordinate c, List... nodesLists ) { + for( List nodeList : nodesLists ) { + for( SimpleFeature node : nodeList ) { + Geometry geometry = (Geometry) node.getDefaultGeometry(); + Coordinate coord = geometry.getCoordinate(); + if (coord.distance(c) <= pTol) { + return node; + } + } + } + return null; + } + + private void appendWarning( String... msgs ) { + for( String msg : msgs ) { + warningBuilder.append(msg); + } + warningBuilder.append("\n"); + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetInpGenerator.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetInpGenerator.java index 798010a2f..d94a620f4 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetInpGenerator.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetInpGenerator.java @@ -1,988 +1,988 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.FilenameFilter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; -import java.util.Properties; -import java.util.Set; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.gears.utils.files.FileUtilities; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetConstants; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Junctions; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pipes; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pumps; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Reservoirs; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Tanks; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Valves; -import org.opengis.feature.simple.SimpleFeature; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; - -@Description("Generates the inp file for an epanet run.") -@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") -@Keywords("Epanet") -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -@SuppressWarnings("nls") -public class EpanetInpGenerator extends JGTModel { - - @Description("The options parameters.") - @In - public EpanetParametersOptions inOptions = null; - - @Description("The time parameters.") - @In - public EpanetParametersTime inTime = null; - - @Description("The junctions features.") - @In - public SimpleFeatureCollection inJunctions = null; - - @Description("The junctions features.") - @In - public SimpleFeatureCollection inTanks = null; - - @Description("The tanks features.") - @In - public SimpleFeatureCollection inReservoirs = null; - - @Description("The pumps features.") - @In - public SimpleFeatureCollection inPumps = null; - - @Description("The valves features.") - @In - public SimpleFeatureCollection inValves = null; - - @Description("The pipes features.") - @In - public SimpleFeatureCollection inPipes = null; - - @Description("The patterns, curves folder.") - @In - public String inExtras = null; - - @Description("The demands file.") - @In - public String inDemand = null; - - @Description("The controls file.") - @In - public String inControl = null; - - @Description("The rules file.") - @In - public String inRules = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The file into which to write the inp.") - @In - public String outFile = null; - - private static final String NL = "\n"; - private static final String SPACER = "\t\t"; - - private HashMap curveId2Path = new HashMap(); - private HashMap patternId2Path = new HashMap(); - private HashMap demandId2Path = new HashMap(); - - private List curvesFilesList = new ArrayList(); - private List patternsFilesList = new ArrayList(); - - private BufferedWriter bwInp = null; - private BufferedWriter bwEpanetInp = null; - - @Execute - public void process() throws Exception { - checkNull(inJunctions, inPipes, outFile); - - if (inReservoirs == null) { - inReservoirs = FeatureCollections.newCollection(); - } - if (inTanks == null) { - inTanks = FeatureCollections.newCollection(); - } - if (inPumps == null) { - inPumps = FeatureCollections.newCollection(); - } - if (inValves == null) { - inValves = FeatureCollections.newCollection(); - } - - int resSize = inReservoirs.size(); - int tanksSize = inTanks.size(); - if (resSize + tanksSize < 1) { - throw new ModelsIllegalargumentException("The model needs at least one tanks or reservoir to work.", this); - } - - if (inExtras != null) { - handleCurves(); - handlePatterns(); - handleDemands(); - } - - List junctionsList = FeatureUtilities.featureCollectionToList(inJunctions); - List tanksList = FeatureUtilities.featureCollectionToList(inTanks); - List reservoirsList = FeatureUtilities.featureCollectionToList(inReservoirs); - List pipesList = FeatureUtilities.featureCollectionToList(inPipes); - List pumpsList = FeatureUtilities.featureCollectionToList(inPumps); - List valvesList = FeatureUtilities.featureCollectionToList(inValves); - - File outputFile = new File(outFile); - String name = outputFile.getName(); - if (name.indexOf('.') != -1) { - name = FileUtilities.getNameWithoutExtention(outputFile); - } - File outputEpanetFile = new File(outputFile.getParentFile(), name + "_epanet.inp"); - - try { - pm.beginTask("Generating inp file...", 15); - bwInp = new BufferedWriter(new FileWriter(outputFile)); - bwEpanetInp = new BufferedWriter(new FileWriter(outputEpanetFile)); - - write("[TITLE]"); - pm.worked(1); - if (junctionsList.size() > 0) { - String junctionsText = handleJunctions(junctionsList); - write(junctionsText); - } - pm.worked(1); - if (reservoirsList.size() > 0) { - String reservoirsText = handleReservoirs(reservoirsList); - write(reservoirsText); - } - pm.worked(1); - if (tanksList.size() > 0) { - String tanksText = handleTanks(tanksList); - write(tanksText); - } - pm.worked(1); - if (pumpsList.size() > 0) { - String pumpsText = handlePumps(pumpsList); - write(pumpsText); - } - pm.worked(1); - if (valvesList.size() > 0) { - String valvesText = handleValves(valvesList); - write(valvesText); - } - pm.worked(2); - if (pipesList.size() > 0) { - String pipesText = handlePipes(pipesList); - write(pipesText); - String pipeDemandsText = handlePipedemands(pipesList, valvesList, pumpsList); - write(pipeDemandsText, true); - } - - /* - * the demands section - */ - pm.worked(1); - if (inDemand != null) { - write("\n\n[DEMANDS]\n"); - String demandSection = FileUtilities.readFile(new File(inDemand)); - write(demandSection); - } - - /* - * the controls section - */ - pm.worked(1); - if (inControl != null) { - write("\n\n[CONTROLS]\n"); - String demandSection = FileUtilities.readFile(new File(inControl)); - write(demandSection); - } - - /* - * the rules section - */ - pm.worked(1); - if (inRules != null) { - write("\n\n[RULES]\n"); - String demandSection = FileUtilities.readFile(new File(inRules)); - write(demandSection); - } - - /* - * the patterns section - */ - pm.worked(1); - write("\n\n[PATTERNS]\n"); - for( String patternsFilePath : patternsFilesList ) { - String patternString = FileUtilities.readFile(new File(patternsFilePath)); - write(patternString); - } - - /* - * the curves section - */ - pm.worked(1); - write("\n\n[CURVES]\n"); - for( String curveFilePath : curvesFilesList ) { - String curveString = FileUtilities.readFile(new File(curveFilePath)); - write(curveString); - } - - /* - * the time section - */ - pm.worked(1); - write("\n\n" + EpanetParametersTime.TIMESECTION + "\n"); - Properties timeParameters = inTime.outProperties; - Set> entrySet = timeParameters.entrySet(); - for( Entry entry : entrySet ) { - Object key = entry.getKey(); - Object value = entry.getValue(); - if (value.toString().length() > 0) { - write(key + "\t" + value + "\n"); - } - } - - /* - * the options section - */ - pm.worked(1); - write("\n\n" + EpanetParametersOptions.OPTIONSSECTION + "\n"); - Properties optionsParameters = inOptions.outProperties; - Set> optionsEntrySet = optionsParameters.entrySet(); - for( Entry entry : optionsEntrySet ) { - Object key = entry.getKey(); - Object value = entry.getValue(); - if (value.toString().length() > 0) { - write(key + "\t" + value + "\n"); - } - } - - /* - * coordinates and vertices - */ - pm.worked(1); - String coordsText = handleCoordinates(junctionsList, reservoirsList, tanksList); - write(coordsText); - pm.worked(1); - String vertexText = handleVertices(pipesList); - write(vertexText); - - } finally { - pm.done(); - if (bwInp != null) - bwInp.close(); - if (bwEpanetInp != null) - bwEpanetInp.close(); - } - } - - private void write( String string, boolean... onlyCustom ) throws IOException { - bwInp.write(string); - if (onlyCustom.length == 0 || !onlyCustom[0]) - bwEpanetInp.write(string); - } - - private void handleCurves() { - final String prefix = EpanetConstants.CURVES_FILE_PREFIX.toString(); - File folder = new File(inExtras); - File[] curvefiles = folder.listFiles(new FilenameFilter(){ - public boolean accept( File dir, String name ) { - if (name.toLowerCase().startsWith(prefix)) { - return true; - } - return false; - } - }); - - for( File curveFile : curvefiles ) { - String name = curveFile.getName(); - String id = name.replaceFirst(prefix + "_", ""); - curveId2Path.put(id, curveFile.getAbsolutePath()); - } - } - - private void handlePatterns() { - final String prefix = EpanetConstants.PATTERNS_FILE_PREFIX.toString(); - File folder = new File(inExtras); - File[] patternFiles = folder.listFiles(new FilenameFilter(){ - public boolean accept( File dir, String name ) { - if (name.toLowerCase().startsWith(prefix)) { - return true; - } - return false; - } - }); - - for( File patternFile : patternFiles ) { - String name = patternFile.getName(); - String id = name.replaceFirst(prefix + "_", ""); - patternId2Path.put(id, patternFile.getAbsolutePath()); - } - } - - private void handleDemands() { - final String prefix = EpanetConstants.DEMANDS_FILE_PREFIX.toString(); - File folder = new File(inExtras); - File[] demandsFiles = folder.listFiles(new FilenameFilter(){ - public boolean accept( File dir, String name ) { - if (name.toLowerCase().startsWith(prefix)) { - return true; - } - return false; - } - }); - - for( File demandsFile : demandsFiles ) { - String name = demandsFile.getName(); - String id = name.replaceFirst(prefix + "_", ""); - demandId2Path.put(id, demandsFile.getAbsolutePath()); - } - } - - private String handleJunctions( List junctionsList ) throws IOException { - StringBuilder sbJunctions = new StringBuilder(); - sbJunctions.append("\n\n[JUNCTIONS]\n"); - sbJunctions.append(";ID").append(SPACER); - sbJunctions.append("ELEV").append(SPACER); - sbJunctions.append("DEMAND").append(SPACER); - sbJunctions.append("PATTERN").append(NL); - - StringBuilder sbEmitters = new StringBuilder(); - sbEmitters.append("\n\n[EMITTERS]\n"); - sbEmitters.append(";JUNCTION").append(SPACER); - sbEmitters.append("COEFFICIENT").append(NL); - - for( SimpleFeature junction : junctionsList ) { - // [JUNCTIONS] - Object dc_id = getAttribute(junction, Junctions.ID.getAttributeName()); - if (dc_id == null) - throw new IOException("Found a junction without ID. Please check your data!"); - sbJunctions.append(dc_id.toString()); - sbJunctions.append(SPACER); - - Object elevation = getAttribute(junction, Junctions.ELEVATION.getAttributeName()); - if (elevation == null) { - elevation = new Double(0); - } - Object depth = getAttribute(junction, Junctions.DEPTH.getAttributeName()); - if (depth == null) { - depth = new Double(0); - } - double elev = ((Double) elevation) - ((Double) depth); - sbJunctions.append(elev); - sbJunctions.append(SPACER); - Object demand = getAttribute(junction, Junctions.DEMAND.getAttributeName()); - if (demand == null) { - demand = new Double(0); - } - sbJunctions.append(demand.toString()); - sbJunctions.append(SPACER); - Object pattern = getAttribute(junction, Junctions.PATTERN.getAttributeName()); - if (pattern == null) { - pattern = new Double(0); - } - String patternId = pattern.toString(); - sbJunctions.append(patternId); - sbJunctions.append(NL); - - String path = patternId2Path.get(patternId); - if (path != null) { - if (!patternsFilesList.contains(path)) - patternsFilesList.add(path); - } - - // emitters - Object emitterCoeff = getAttribute(junction, Junctions.EMITTER_COEFFICIENT.getAttributeName()); - if (emitterCoeff instanceof Double) { - double coeff = (Double) emitterCoeff; - sbEmitters.append(dc_id.toString()); - sbEmitters.append(SPACER); - sbEmitters.append(coeff); - sbEmitters.append(NL); - } - - } - - sbJunctions.append("\n\n"); - sbJunctions.append(sbEmitters.toString()); - sbJunctions.append("\n\n"); - return sbJunctions.toString(); - } - - private String handlePipes( List pipesList ) throws IOException { - StringBuilder sbPipes = new StringBuilder(); - sbPipes.append("\n\n[PIPES]\n"); - sbPipes.append(";ID").append(SPACER); - sbPipes.append("NODE1").append(SPACER); - sbPipes.append("NODE2").append(SPACER); - sbPipes.append("LENGTH").append(SPACER); - sbPipes.append("DIAMETER").append(SPACER); - sbPipes.append("ROUGHNESS").append(SPACER); - sbPipes.append("MINORLOSS").append(SPACER); - sbPipes.append("STATUS").append(NL); - - for( SimpleFeature pipe : pipesList ) { - // [PIPES] - Object id = getAttribute(pipe, Pipes.ID.getAttributeName()); - if (id == null) - throw new IOException("Found a pipe without ID. Please check your data!"); - String idString = id.toString(); - if (idString.toUpperCase().startsWith(EpanetConstants.DUMMYPIPE.toString())) { - continue; - } - sbPipes.append(idString); - sbPipes.append(SPACER); - - Object node1 = getAttribute(pipe, Pipes.START_NODE.getAttributeName()); - if (node1 == null) { - throwError(idString, "pipe", "startnode"); - } - sbPipes.append(node1.toString()); - sbPipes.append(SPACER); - Object node2 = getAttribute(pipe, Pipes.END_NODE.getAttributeName()); - if (node2 == null) - throwError(idString, "pipe", "endnode"); - sbPipes.append(node2.toString()); - sbPipes.append(SPACER); - Object length = getAttribute(pipe, Pipes.LENGTH.getAttributeName()); - if (length == null) - throwError(idString, "pipe", "length"); - sbPipes.append(length.toString()); - sbPipes.append(SPACER); - Object diameter = getAttribute(pipe, Pipes.DIAMETER.getAttributeName()); - if (diameter == null) - throwError(idString, "pipe", "diameter"); - sbPipes.append(diameter.toString()); - sbPipes.append(SPACER); - Object roughness = getAttribute(pipe, Pipes.ROUGHNESS.getAttributeName()); - if (roughness == null) - throwError(idString, "pipe", "roughness"); - sbPipes.append(roughness.toString()); - sbPipes.append(SPACER); - Object minorloss = getAttribute(pipe, Pipes.MINORLOSS.getAttributeName()); - if (minorloss == null) { - sbPipes.append("0"); - } else { - sbPipes.append(minorloss.toString()); - } - sbPipes.append(SPACER); - Object status = getAttribute(pipe, Pipes.STATUS.getAttributeName()); - if (status == null) { - sbPipes.append("open"); - } else { - sbPipes.append(status.toString()); - } - sbPipes.append(NL); - } - - sbPipes.append("\n\n"); - return sbPipes.toString(); - } - - private String handlePipedemands( List pipesList, List valvesList, List pumpsList ) - throws IOException { - StringBuilder sbPipesdemand = new StringBuilder(); - sbPipesdemand.append("\n\n[PDEMAND]\n"); - sbPipesdemand.append(";ID").append(SPACER); - sbPipesdemand.append("PDEMAND").append(SPACER); - sbPipesdemand.append("LEAKCOEFF").append(SPACER); - sbPipesdemand.append("PATTERN").append(NL); - - // valves and pumps (virtual pipes for epanet) need a placeholder - int dummyNum = valvesList.size() + pumpsList.size(); - for( int i = 0; i < dummyNum; i++ ) { - sbPipesdemand.append("DUMMY").append(i).append(SPACER); - sbPipesdemand.append("0"); - sbPipesdemand.append(SPACER); - sbPipesdemand.append("0"); - sbPipesdemand.append(SPACER); - sbPipesdemand.append("\t"); - sbPipesdemand.append(NL); - } - - // normal pipes now - for( SimpleFeature pipe : pipesList ) { - // [PIPES] - Object id = getAttribute(pipe, Pipes.ID.getAttributeName()); - if (id == null) - throw new IOException("Found a pipe without ID. Please check your data!"); - String idString = id.toString(); - if (idString.toUpperCase().startsWith(EpanetConstants.DUMMYPIPE.toString())) { - continue; - } - sbPipesdemand.append(idString); - sbPipesdemand.append(SPACER); - - Object demand = getAttribute(pipe, Pipes.DEMAND.getAttributeName()); - if (demand == null) { - sbPipesdemand.append("0"); - } else { - sbPipesdemand.append(demand.toString()); - } - sbPipesdemand.append(SPACER); - - Object leakCoeff = getAttribute(pipe, Pipes.LEAKCOEFF.getAttributeName()); - if (leakCoeff == null) { - sbPipesdemand.append("0"); - } else { - sbPipesdemand.append(leakCoeff.toString()); - } - sbPipesdemand.append(SPACER); - - Object pattern = getAttribute(pipe, Pipes.PATTERN.getAttributeName()); - if (pattern == null) { - sbPipesdemand.append("\t"); - } else { - String patternId = pattern.toString(); - sbPipesdemand.append(patternId); - String path = patternId2Path.get(patternId); - if (path != null) { - if (!patternsFilesList.contains(path)) - patternsFilesList.add(path); - } - } - sbPipesdemand.append(NL); - } - sbPipesdemand.append("\n\n"); - return sbPipesdemand.toString(); - } - - private void throwError( String idString, String who, String what ) throws IOException { - StringBuilder sb = new StringBuilder(); - sb.append("The "); - sb.append(who); - sb.append(" "); - sb.append(idString); - sb.append(" has no "); - sb.append(what); - sb.append(" defined. Please check your data."); - throw new IOException(sb.toString()); - } - - private String handleReservoirs( List reservoirsList ) throws IOException { - StringBuilder sbReservoirs = new StringBuilder(); - sbReservoirs.append("\n\n[RESERVOIRS]\n"); - sbReservoirs.append(";ID").append(SPACER); - sbReservoirs.append("HEAD").append(SPACER); - sbReservoirs.append("PATTERN").append(NL); - for( SimpleFeature reservoir : reservoirsList ) { - // [RESERVOIRS] - Object dc_id = getAttribute(reservoir, Reservoirs.ID.getAttributeName()); - if (dc_id == null) - throw new IOException("Found a reservoir without ID. Please check your data!"); - String idString = dc_id.toString(); - sbReservoirs.append(idString); - sbReservoirs.append(SPACER); - Object head = getAttribute(reservoir, Reservoirs.HEAD.getAttributeName()); - if (head == null) - throwError(idString, "reservoir", "head"); - sbReservoirs.append(head.toString()); - sbReservoirs.append(SPACER); - Object pattern = getAttribute(reservoir, Reservoirs.HEAD_PATTERN.getAttributeName()); - String patternId = "0"; - if (pattern != null) { - patternId = pattern.toString(); - sbReservoirs.append(patternId); - } - sbReservoirs.append(NL); - - String path = patternId2Path.get(patternId); - if (path != null) { - if (!patternsFilesList.contains(path)) - patternsFilesList.add(path); - } - } - - return sbReservoirs.toString(); - } - - private String handleTanks( List tanksList ) throws IOException { - StringBuilder sbTanks = new StringBuilder(); - sbTanks.append("\n\n[TANKS]\n"); - sbTanks.append(";ID").append(SPACER); - sbTanks.append("ELEV").append(SPACER); - sbTanks.append("INITLEVEL").append(SPACER); - sbTanks.append("MINLEVEL").append(SPACER); - sbTanks.append("MAXLEVEL").append(SPACER); - sbTanks.append("DIAMETER").append(SPACER); - sbTanks.append("MINVOL").append(SPACER); - sbTanks.append("VOLCURVE").append(NL); - - for( SimpleFeature tank : tanksList ) { - // [TANKS] - // ;ID Elevation InitLevel MinLevel MaxLevel Diameter MinVol VolCurve - Object dc_id = getAttribute(tank, Tanks.ID.getAttributeName()); - if (dc_id == null) - throw new IOException("Found a tank without ID. Please check your data!"); - sbTanks.append(dc_id.toString()); - sbTanks.append(SPACER); - Object elevation = getAttribute(tank, Tanks.BOTTOM_ELEVATION.getAttributeName()); - if (elevation != null) { - sbTanks.append(elevation.toString()); - } else { - sbTanks.append("0"); - } - sbTanks.append(SPACER); - Object initLevel = getAttribute(tank, Tanks.INITIAL_WATER_LEVEL.getAttributeName()); - if (initLevel != null) { - sbTanks.append(initLevel.toString()); - } else { - sbTanks.append("0"); - } - sbTanks.append(SPACER); - Object minLevel = getAttribute(tank, Tanks.MINIMUM_WATER_LEVEL.getAttributeName()); - if (minLevel != null) { - sbTanks.append(minLevel.toString()); - } else { - sbTanks.append("0"); - } - sbTanks.append(SPACER); - Object maxLevel = getAttribute(tank, Tanks.MAXIMUM_WATER_LEVEL.getAttributeName()); - if (maxLevel != null) { - sbTanks.append(maxLevel.toString()); - } else { - sbTanks.append("0"); - } - sbTanks.append(SPACER); - Object diameter = getAttribute(tank, Tanks.DIAMETER.getAttributeName()); - if (diameter != null) { - sbTanks.append(diameter.toString()); - } else { - sbTanks.append("0"); - } - sbTanks.append(SPACER); - Object minVol = getAttribute(tank, Tanks.MINIMUM_VOLUME.getAttributeName()); - if (minVol != null) { - sbTanks.append(minVol.toString()); - } else { - sbTanks.append("0"); - } - sbTanks.append(SPACER); - Object volCurve = getAttribute(tank, Tanks.VOLUME_CURVE_ID.getAttributeName()); - String volCurveId; - if (volCurve != null) { - volCurveId = volCurve.toString(); - } else { - volCurveId = "0"; - } - sbTanks.append(volCurveId); - sbTanks.append(NL); - - String path = curveId2Path.get(volCurveId); - if (path != null) { - if (!curvesFilesList.contains(path)) - curvesFilesList.add(path); - } - } - - return sbTanks.toString(); - } - - private String handlePumps( List pumpsList ) throws IOException { - StringBuilder sbPumps = new StringBuilder(); - StringBuilder sbEnergy = new StringBuilder(); - sbPumps.append("\n\n[PUMPS]\n"); - sbPumps.append(";ID").append(SPACER); - sbPumps.append("NODE1").append(SPACER); - sbPumps.append("NODE2").append(SPACER); - sbPumps.append("PARAMETERS").append(NL); - - sbEnergy.append("\n\n[ENERGY]\n"); - - for( SimpleFeature pump : pumpsList ) { - // [PUMPS] - // ;ID Node1 Node2 Parameters(key1 value1 key2 value2...) - Object dc_id = getAttribute(pump, Pumps.ID.getAttributeName()); - if (dc_id == null) - throw new IOException("Found a pump without ID. Please check your data!"); - String pumpId = dc_id.toString(); - sbPumps.append(pumpId); - sbPumps.append(SPACER); - Object node1 = getAttribute(pump, Pumps.START_NODE.getAttributeName()); - if (node1 == null) { - throwError(pumpId, "pump", "startnode"); - } - sbPumps.append(node1.toString()); - sbPumps.append(SPACER); - Object node2 = getAttribute(pump, Pumps.END_NODE.getAttributeName()); - if (node2 == null) { - throwError(pumpId, "pump", "endnode"); - } - sbPumps.append(node2.toString()); - sbPumps.append(SPACER); - - Object power = getAttribute(pump, Pumps.POWER.getAttributeName()); - if (power != null && !power.toString().equals("")) { - sbPumps.append("POWER " + power.toString()); - sbPumps.append(SPACER); - } - Object head = getAttribute(pump, Pumps.HEAD_ID.getAttributeName()); - if (head != null && !head.toString().equals("")) { - String headId = head.toString(); - sbPumps.append("HEAD " + headId); - sbPumps.append(SPACER); - - String path = curveId2Path.get(headId); - if (path != null) { - if (!curvesFilesList.contains(path)) - curvesFilesList.add(path); - } - } - Object speed = getAttribute(pump, Pumps.SPEED.getAttributeName()); - if (speed != null && !speed.toString().equals("")) { - sbPumps.append("SPEED " + speed.toString()); - sbPumps.append(SPACER); - } - Object speedPattern = getAttribute(pump, Pumps.SPEED_PATTERN.getAttributeName()); - if (speedPattern != null && !speedPattern.toString().equals("")) { - String patternId = speedPattern.toString(); - sbPumps.append("PATTERN " + patternId); - sbPumps.append(SPACER); - - String path = patternId2Path.get(patternId); - if (path != null) { - if (!patternsFilesList.contains(path)) - patternsFilesList.add(path); - } - } - sbPumps.append(NL); - - /* - * energy part - */ - Object price = getAttribute(pump, Pumps.PRICE.getAttributeName()); - if (price != null && !price.toString().equals("")) { - String priceStr = price.toString(); - sbEnergy.append("PUMP " + pumpId); - sbEnergy.append(SPACER); - sbEnergy.append("PRICE " + priceStr); - sbEnergy.append(NL); - } - Object pricePattern = getAttribute(pump, Pumps.PRICE_PATTERN.getAttributeName()); - if (pricePattern != null && !pricePattern.toString().equals("")) { - String pricePatternStr = pricePattern.toString(); - sbEnergy.append("PUMP " + pumpId); - sbEnergy.append(SPACER); - sbEnergy.append("PATTERN " + pricePatternStr); - sbEnergy.append(NL); - } - Object effic = getAttribute(pump, Pumps.EFFICIENCY.getAttributeName()); - if (effic != null && !effic.toString().equals("")) { - String effStr = effic.toString(); - sbEnergy.append("PUMP " + pumpId); - sbEnergy.append(SPACER); - sbEnergy.append("EFFIC " + effStr); - sbEnergy.append(NL); - - String path = curveId2Path.get(effStr); - if (path != null) { - if (!curvesFilesList.contains(path)) - curvesFilesList.add(path); - } - } - } - - sbPumps.append(NL).append(NL); - sbPumps.append(sbEnergy); - return sbPumps.toString(); - } - - private String handleValves( List valvesList ) throws IOException { - StringBuilder sbValves = new StringBuilder(); - sbValves.append("\n\n[VALVES]\n"); - sbValves.append(";ID").append(SPACER); - sbValves.append("NODE1").append(SPACER); - sbValves.append("NODE2").append(SPACER); - sbValves.append("DIAMETER").append(SPACER); - sbValves.append("TYPE").append(SPACER); - sbValves.append("SETTING").append(SPACER); - sbValves.append("MINORLOSS").append(NL); - - StringBuilder sbValvesStatus = new StringBuilder(); - sbValvesStatus.append("\n\n[STATUS]\n"); - sbValvesStatus.append(";ID").append(SPACER); - sbValvesStatus.append("Status/Setting").append(NL); - boolean hasStatus = false; - - for( SimpleFeature valve : valvesList ) { - // [VALVES] - // ;ID Node1 Node2 Diameter Type Setting MinorLoss - Object dc_id = getAttribute(valve, Valves.ID.getAttributeName()); - if (dc_id == null) - throw new IOException("Found a valve without ID. Please check your data!"); - String idString = dc_id.toString(); - sbValves.append(idString); - sbValves.append(SPACER); - - Object node1 = getAttribute(valve, Valves.START_NODE.getAttributeName()); - if (node1 == null) { - throwError(idString, "valve", "startnode"); - } - sbValves.append(node1.toString()); - sbValves.append(SPACER); - Object node2 = getAttribute(valve, Valves.END_NODE.getAttributeName()); - if (node2 == null) { - throwError(idString, "valve", "endnode"); - } - sbValves.append(node2.toString()); - sbValves.append(SPACER); - Object diameter = getAttribute(valve, Valves.DIAMETER.getAttributeName()); - if (diameter == null) { - throwError(idString, "valve", "diameter"); - } - sbValves.append(diameter.toString()); - sbValves.append(SPACER); - Object type = getAttribute(valve, Valves.TYPE.getAttributeName()); - if (type == null) { - throwError(idString, "valve", "type"); - } - sbValves.append(type.toString()); - sbValves.append(SPACER); - Object setting = getAttribute(valve, Valves.SETTING.getAttributeName()); - if (setting != null) { - sbValves.append(setting.toString()); - } else { - sbValves.append("0"); - } - sbValves.append(SPACER); - Object minorLoss = getAttribute(valve, Valves.MINORLOSS.getAttributeName()); - if (setting != null) { - sbValves.append(minorLoss.toString()); - } else { - sbValves.append("0"); - } - sbValves.append(NL); - - // STATUS PART - Object status = getAttribute(valve, Valves.STATUS.getAttributeName()); - if (status != null && status.toString().trim().length() != 0) { - sbValvesStatus.append(idString); - sbValvesStatus.append(SPACER); - sbValvesStatus.append(status.toString()); - sbValvesStatus.append(NL); - hasStatus = true; - } - } - - if (hasStatus) - sbValves.append(sbValvesStatus.toString()); - sbValves.append("\n\n"); - return sbValves.toString(); - } - - private String handleCoordinates( List junctionsList, List reservoirsList, - List tanksList ) throws IOException { - ArrayList nodesList = new ArrayList(); - nodesList.addAll(junctionsList); - nodesList.addAll(reservoirsList); - nodesList.addAll(tanksList); - - StringBuilder sbJunctionsCoords = new StringBuilder(); - sbJunctionsCoords.append("\n\n[COORDINATES]\n"); - sbJunctionsCoords.append(";NODE").append(SPACER); - sbJunctionsCoords.append("XCOORD").append(SPACER); - sbJunctionsCoords.append("YCOORD").append(NL); - - for( SimpleFeature node : nodesList ) { - Geometry geometry = (Geometry) node.getDefaultGeometry(); - Coordinate coordinate = geometry.getCoordinate(); - - // [COORDINATES] - Object attribute = getAttribute(node, Junctions.ID.getAttributeName()); - sbJunctionsCoords.append(attribute.toString()); - sbJunctionsCoords.append(SPACER); - sbJunctionsCoords.append(coordinate.x); - sbJunctionsCoords.append(SPACER); - sbJunctionsCoords.append(coordinate.y); - sbJunctionsCoords.append(NL); - } - - sbJunctionsCoords.append("\n\n"); - return sbJunctionsCoords.toString(); - } - - private String handleVertices( List pipesList ) throws IOException { - StringBuilder sbPipesVertices = new StringBuilder(); - sbPipesVertices.append("\n\n[VERTICES]\n"); - sbPipesVertices.append(";NODE").append(SPACER); - sbPipesVertices.append("XCOORD").append(SPACER); - sbPipesVertices.append("YCOORD").append(NL); - - for( SimpleFeature pipe : pipesList ) { - Geometry geometry = (Geometry) pipe.getDefaultGeometry(); - Coordinate[] coordinates = geometry.getCoordinates(); - - // [PIPES] - Object id = getAttribute(pipe, Pipes.ID.getAttributeName()); - String idString = id.toString(); - if (idString.toUpperCase().startsWith(EpanetConstants.DUMMYPIPE.toString())) { - continue; - } - - // [VERTICES] - for( Coordinate coordinate : coordinates ) { - sbPipesVertices.append(idString); - sbPipesVertices.append(SPACER); - sbPipesVertices.append(coordinate.x); - sbPipesVertices.append(SPACER); - sbPipesVertices.append(coordinate.y); - sbPipesVertices.append(NL); - } - } - - sbPipesVertices.append("\n\n"); - return sbPipesVertices.toString(); - } - - private Object getAttribute( SimpleFeature feature, String attributeName ) { - Object attribute = feature.getAttribute(attributeName); - if (attribute == null) { - attribute = feature.getAttribute(attributeName.toUpperCase()); - } - if (attribute == null) { - attribute = feature.getAttribute(attributeName.toLowerCase()); - } - return attribute; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.FilenameFilter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.Set; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.gears.utils.files.FileUtilities; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetConstants; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Junctions; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pipes; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pumps; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Reservoirs; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Tanks; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Valves; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; + +@Description("Generates the inp file for an epanet run.") +@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") +@Keywords("Epanet") +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +@SuppressWarnings("nls") +public class EpanetInpGenerator extends JGTModel { + + @Description("The options parameters.") + @In + public EpanetParametersOptions inOptions = null; + + @Description("The time parameters.") + @In + public EpanetParametersTime inTime = null; + + @Description("The junctions features.") + @In + public SimpleFeatureCollection inJunctions = null; + + @Description("The junctions features.") + @In + public SimpleFeatureCollection inTanks = null; + + @Description("The tanks features.") + @In + public SimpleFeatureCollection inReservoirs = null; + + @Description("The pumps features.") + @In + public SimpleFeatureCollection inPumps = null; + + @Description("The valves features.") + @In + public SimpleFeatureCollection inValves = null; + + @Description("The pipes features.") + @In + public SimpleFeatureCollection inPipes = null; + + @Description("The patterns, curves folder.") + @In + public String inExtras = null; + + @Description("The demands file.") + @In + public String inDemand = null; + + @Description("The controls file.") + @In + public String inControl = null; + + @Description("The rules file.") + @In + public String inRules = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The file into which to write the inp.") + @In + public String outFile = null; + + private static final String NL = "\n"; + private static final String SPACER = "\t\t"; + + private HashMap curveId2Path = new HashMap(); + private HashMap patternId2Path = new HashMap(); + private HashMap demandId2Path = new HashMap(); + + private List curvesFilesList = new ArrayList(); + private List patternsFilesList = new ArrayList(); + + private BufferedWriter bwInp = null; + private BufferedWriter bwEpanetInp = null; + + @Execute + public void process() throws Exception { + checkNull(inJunctions, inPipes, outFile); + + if (inReservoirs == null) { + inReservoirs = FeatureCollections.newCollection(); + } + if (inTanks == null) { + inTanks = FeatureCollections.newCollection(); + } + if (inPumps == null) { + inPumps = FeatureCollections.newCollection(); + } + if (inValves == null) { + inValves = FeatureCollections.newCollection(); + } + + int resSize = inReservoirs.size(); + int tanksSize = inTanks.size(); + if (resSize + tanksSize < 1) { + throw new ModelsIllegalargumentException("The model needs at least one tanks or reservoir to work.", this); + } + + if (inExtras != null) { + handleCurves(); + handlePatterns(); + handleDemands(); + } + + List junctionsList = FeatureUtilities.featureCollectionToList(inJunctions); + List tanksList = FeatureUtilities.featureCollectionToList(inTanks); + List reservoirsList = FeatureUtilities.featureCollectionToList(inReservoirs); + List pipesList = FeatureUtilities.featureCollectionToList(inPipes); + List pumpsList = FeatureUtilities.featureCollectionToList(inPumps); + List valvesList = FeatureUtilities.featureCollectionToList(inValves); + + File outputFile = new File(outFile); + String name = outputFile.getName(); + if (name.indexOf('.') != -1) { + name = FileUtilities.getNameWithoutExtention(outputFile); + } + File outputEpanetFile = new File(outputFile.getParentFile(), name + "_epanet.inp"); + + try { + pm.beginTask("Generating inp file...", 15); + bwInp = new BufferedWriter(new FileWriter(outputFile)); + bwEpanetInp = new BufferedWriter(new FileWriter(outputEpanetFile)); + + write("[TITLE]"); + pm.worked(1); + if (junctionsList.size() > 0) { + String junctionsText = handleJunctions(junctionsList); + write(junctionsText); + } + pm.worked(1); + if (reservoirsList.size() > 0) { + String reservoirsText = handleReservoirs(reservoirsList); + write(reservoirsText); + } + pm.worked(1); + if (tanksList.size() > 0) { + String tanksText = handleTanks(tanksList); + write(tanksText); + } + pm.worked(1); + if (pumpsList.size() > 0) { + String pumpsText = handlePumps(pumpsList); + write(pumpsText); + } + pm.worked(1); + if (valvesList.size() > 0) { + String valvesText = handleValves(valvesList); + write(valvesText); + } + pm.worked(2); + if (pipesList.size() > 0) { + String pipesText = handlePipes(pipesList); + write(pipesText); + String pipeDemandsText = handlePipedemands(pipesList, valvesList, pumpsList); + write(pipeDemandsText, true); + } + + /* + * the demands section + */ + pm.worked(1); + if (inDemand != null) { + write("\n\n[DEMANDS]\n"); + String demandSection = FileUtilities.readFile(new File(inDemand)); + write(demandSection); + } + + /* + * the controls section + */ + pm.worked(1); + if (inControl != null) { + write("\n\n[CONTROLS]\n"); + String demandSection = FileUtilities.readFile(new File(inControl)); + write(demandSection); + } + + /* + * the rules section + */ + pm.worked(1); + if (inRules != null) { + write("\n\n[RULES]\n"); + String demandSection = FileUtilities.readFile(new File(inRules)); + write(demandSection); + } + + /* + * the patterns section + */ + pm.worked(1); + write("\n\n[PATTERNS]\n"); + for( String patternsFilePath : patternsFilesList ) { + String patternString = FileUtilities.readFile(new File(patternsFilePath)); + write(patternString); + } + + /* + * the curves section + */ + pm.worked(1); + write("\n\n[CURVES]\n"); + for( String curveFilePath : curvesFilesList ) { + String curveString = FileUtilities.readFile(new File(curveFilePath)); + write(curveString); + } + + /* + * the time section + */ + pm.worked(1); + write("\n\n" + EpanetParametersTime.TIMESECTION + "\n"); + Properties timeParameters = inTime.outProperties; + Set> entrySet = timeParameters.entrySet(); + for( Entry entry : entrySet ) { + Object key = entry.getKey(); + Object value = entry.getValue(); + if (value.toString().length() > 0) { + write(key + "\t" + value + "\n"); + } + } + + /* + * the options section + */ + pm.worked(1); + write("\n\n" + EpanetParametersOptions.OPTIONSSECTION + "\n"); + Properties optionsParameters = inOptions.outProperties; + Set> optionsEntrySet = optionsParameters.entrySet(); + for( Entry entry : optionsEntrySet ) { + Object key = entry.getKey(); + Object value = entry.getValue(); + if (value.toString().length() > 0) { + write(key + "\t" + value + "\n"); + } + } + + /* + * coordinates and vertices + */ + pm.worked(1); + String coordsText = handleCoordinates(junctionsList, reservoirsList, tanksList); + write(coordsText); + pm.worked(1); + String vertexText = handleVertices(pipesList); + write(vertexText); + + } finally { + pm.done(); + if (bwInp != null) + bwInp.close(); + if (bwEpanetInp != null) + bwEpanetInp.close(); + } + } + + private void write( String string, boolean... onlyCustom ) throws IOException { + bwInp.write(string); + if (onlyCustom.length == 0 || !onlyCustom[0]) + bwEpanetInp.write(string); + } + + private void handleCurves() { + final String prefix = EpanetConstants.CURVES_FILE_PREFIX.toString(); + File folder = new File(inExtras); + File[] curvefiles = folder.listFiles(new FilenameFilter(){ + public boolean accept( File dir, String name ) { + if (name.toLowerCase().startsWith(prefix)) { + return true; + } + return false; + } + }); + + for( File curveFile : curvefiles ) { + String name = curveFile.getName(); + String id = name.replaceFirst(prefix + "_", ""); + curveId2Path.put(id, curveFile.getAbsolutePath()); + } + } + + private void handlePatterns() { + final String prefix = EpanetConstants.PATTERNS_FILE_PREFIX.toString(); + File folder = new File(inExtras); + File[] patternFiles = folder.listFiles(new FilenameFilter(){ + public boolean accept( File dir, String name ) { + if (name.toLowerCase().startsWith(prefix)) { + return true; + } + return false; + } + }); + + for( File patternFile : patternFiles ) { + String name = patternFile.getName(); + String id = name.replaceFirst(prefix + "_", ""); + patternId2Path.put(id, patternFile.getAbsolutePath()); + } + } + + private void handleDemands() { + final String prefix = EpanetConstants.DEMANDS_FILE_PREFIX.toString(); + File folder = new File(inExtras); + File[] demandsFiles = folder.listFiles(new FilenameFilter(){ + public boolean accept( File dir, String name ) { + if (name.toLowerCase().startsWith(prefix)) { + return true; + } + return false; + } + }); + + for( File demandsFile : demandsFiles ) { + String name = demandsFile.getName(); + String id = name.replaceFirst(prefix + "_", ""); + demandId2Path.put(id, demandsFile.getAbsolutePath()); + } + } + + private String handleJunctions( List junctionsList ) throws IOException { + StringBuilder sbJunctions = new StringBuilder(); + sbJunctions.append("\n\n[JUNCTIONS]\n"); + sbJunctions.append(";ID").append(SPACER); + sbJunctions.append("ELEV").append(SPACER); + sbJunctions.append("DEMAND").append(SPACER); + sbJunctions.append("PATTERN").append(NL); + + StringBuilder sbEmitters = new StringBuilder(); + sbEmitters.append("\n\n[EMITTERS]\n"); + sbEmitters.append(";JUNCTION").append(SPACER); + sbEmitters.append("COEFFICIENT").append(NL); + + for( SimpleFeature junction : junctionsList ) { + // [JUNCTIONS] + Object dc_id = getAttribute(junction, Junctions.ID.getAttributeName()); + if (dc_id == null) + throw new IOException("Found a junction without ID. Please check your data!"); + sbJunctions.append(dc_id.toString()); + sbJunctions.append(SPACER); + + Object elevation = getAttribute(junction, Junctions.ELEVATION.getAttributeName()); + if (elevation == null) { + elevation = new Double(0); + } + Object depth = getAttribute(junction, Junctions.DEPTH.getAttributeName()); + if (depth == null) { + depth = new Double(0); + } + double elev = ((Double) elevation) - ((Double) depth); + sbJunctions.append(elev); + sbJunctions.append(SPACER); + Object demand = getAttribute(junction, Junctions.DEMAND.getAttributeName()); + if (demand == null) { + demand = new Double(0); + } + sbJunctions.append(demand.toString()); + sbJunctions.append(SPACER); + Object pattern = getAttribute(junction, Junctions.PATTERN.getAttributeName()); + if (pattern == null) { + pattern = new Double(0); + } + String patternId = pattern.toString(); + sbJunctions.append(patternId); + sbJunctions.append(NL); + + String path = patternId2Path.get(patternId); + if (path != null) { + if (!patternsFilesList.contains(path)) + patternsFilesList.add(path); + } + + // emitters + Object emitterCoeff = getAttribute(junction, Junctions.EMITTER_COEFFICIENT.getAttributeName()); + if (emitterCoeff instanceof Double) { + double coeff = (Double) emitterCoeff; + sbEmitters.append(dc_id.toString()); + sbEmitters.append(SPACER); + sbEmitters.append(coeff); + sbEmitters.append(NL); + } + + } + + sbJunctions.append("\n\n"); + sbJunctions.append(sbEmitters.toString()); + sbJunctions.append("\n\n"); + return sbJunctions.toString(); + } + + private String handlePipes( List pipesList ) throws IOException { + StringBuilder sbPipes = new StringBuilder(); + sbPipes.append("\n\n[PIPES]\n"); + sbPipes.append(";ID").append(SPACER); + sbPipes.append("NODE1").append(SPACER); + sbPipes.append("NODE2").append(SPACER); + sbPipes.append("LENGTH").append(SPACER); + sbPipes.append("DIAMETER").append(SPACER); + sbPipes.append("ROUGHNESS").append(SPACER); + sbPipes.append("MINORLOSS").append(SPACER); + sbPipes.append("STATUS").append(NL); + + for( SimpleFeature pipe : pipesList ) { + // [PIPES] + Object id = getAttribute(pipe, Pipes.ID.getAttributeName()); + if (id == null) + throw new IOException("Found a pipe without ID. Please check your data!"); + String idString = id.toString(); + if (idString.toUpperCase().startsWith(EpanetConstants.DUMMYPIPE.toString())) { + continue; + } + sbPipes.append(idString); + sbPipes.append(SPACER); + + Object node1 = getAttribute(pipe, Pipes.START_NODE.getAttributeName()); + if (node1 == null) { + throwError(idString, "pipe", "startnode"); + } + sbPipes.append(node1.toString()); + sbPipes.append(SPACER); + Object node2 = getAttribute(pipe, Pipes.END_NODE.getAttributeName()); + if (node2 == null) + throwError(idString, "pipe", "endnode"); + sbPipes.append(node2.toString()); + sbPipes.append(SPACER); + Object length = getAttribute(pipe, Pipes.LENGTH.getAttributeName()); + if (length == null) + throwError(idString, "pipe", "length"); + sbPipes.append(length.toString()); + sbPipes.append(SPACER); + Object diameter = getAttribute(pipe, Pipes.DIAMETER.getAttributeName()); + if (diameter == null) + throwError(idString, "pipe", "diameter"); + sbPipes.append(diameter.toString()); + sbPipes.append(SPACER); + Object roughness = getAttribute(pipe, Pipes.ROUGHNESS.getAttributeName()); + if (roughness == null) + throwError(idString, "pipe", "roughness"); + sbPipes.append(roughness.toString()); + sbPipes.append(SPACER); + Object minorloss = getAttribute(pipe, Pipes.MINORLOSS.getAttributeName()); + if (minorloss == null) { + sbPipes.append("0"); + } else { + sbPipes.append(minorloss.toString()); + } + sbPipes.append(SPACER); + Object status = getAttribute(pipe, Pipes.STATUS.getAttributeName()); + if (status == null) { + sbPipes.append("open"); + } else { + sbPipes.append(status.toString()); + } + sbPipes.append(NL); + } + + sbPipes.append("\n\n"); + return sbPipes.toString(); + } + + private String handlePipedemands( List pipesList, List valvesList, List pumpsList ) + throws IOException { + StringBuilder sbPipesdemand = new StringBuilder(); + sbPipesdemand.append("\n\n[PDEMAND]\n"); + sbPipesdemand.append(";ID").append(SPACER); + sbPipesdemand.append("PDEMAND").append(SPACER); + sbPipesdemand.append("LEAKCOEFF").append(SPACER); + sbPipesdemand.append("PATTERN").append(NL); + + // valves and pumps (virtual pipes for epanet) need a placeholder + int dummyNum = valvesList.size() + pumpsList.size(); + for( int i = 0; i < dummyNum; i++ ) { + sbPipesdemand.append("DUMMY").append(i).append(SPACER); + sbPipesdemand.append("0"); + sbPipesdemand.append(SPACER); + sbPipesdemand.append("0"); + sbPipesdemand.append(SPACER); + sbPipesdemand.append("\t"); + sbPipesdemand.append(NL); + } + + // normal pipes now + for( SimpleFeature pipe : pipesList ) { + // [PIPES] + Object id = getAttribute(pipe, Pipes.ID.getAttributeName()); + if (id == null) + throw new IOException("Found a pipe without ID. Please check your data!"); + String idString = id.toString(); + if (idString.toUpperCase().startsWith(EpanetConstants.DUMMYPIPE.toString())) { + continue; + } + sbPipesdemand.append(idString); + sbPipesdemand.append(SPACER); + + Object demand = getAttribute(pipe, Pipes.DEMAND.getAttributeName()); + if (demand == null) { + sbPipesdemand.append("0"); + } else { + sbPipesdemand.append(demand.toString()); + } + sbPipesdemand.append(SPACER); + + Object leakCoeff = getAttribute(pipe, Pipes.LEAKCOEFF.getAttributeName()); + if (leakCoeff == null) { + sbPipesdemand.append("0"); + } else { + sbPipesdemand.append(leakCoeff.toString()); + } + sbPipesdemand.append(SPACER); + + Object pattern = getAttribute(pipe, Pipes.PATTERN.getAttributeName()); + if (pattern == null) { + sbPipesdemand.append("\t"); + } else { + String patternId = pattern.toString(); + sbPipesdemand.append(patternId); + String path = patternId2Path.get(patternId); + if (path != null) { + if (!patternsFilesList.contains(path)) + patternsFilesList.add(path); + } + } + sbPipesdemand.append(NL); + } + sbPipesdemand.append("\n\n"); + return sbPipesdemand.toString(); + } + + private void throwError( String idString, String who, String what ) throws IOException { + StringBuilder sb = new StringBuilder(); + sb.append("The "); + sb.append(who); + sb.append(" "); + sb.append(idString); + sb.append(" has no "); + sb.append(what); + sb.append(" defined. Please check your data."); + throw new IOException(sb.toString()); + } + + private String handleReservoirs( List reservoirsList ) throws IOException { + StringBuilder sbReservoirs = new StringBuilder(); + sbReservoirs.append("\n\n[RESERVOIRS]\n"); + sbReservoirs.append(";ID").append(SPACER); + sbReservoirs.append("HEAD").append(SPACER); + sbReservoirs.append("PATTERN").append(NL); + for( SimpleFeature reservoir : reservoirsList ) { + // [RESERVOIRS] + Object dc_id = getAttribute(reservoir, Reservoirs.ID.getAttributeName()); + if (dc_id == null) + throw new IOException("Found a reservoir without ID. Please check your data!"); + String idString = dc_id.toString(); + sbReservoirs.append(idString); + sbReservoirs.append(SPACER); + Object head = getAttribute(reservoir, Reservoirs.HEAD.getAttributeName()); + if (head == null) + throwError(idString, "reservoir", "head"); + sbReservoirs.append(head.toString()); + sbReservoirs.append(SPACER); + Object pattern = getAttribute(reservoir, Reservoirs.HEAD_PATTERN.getAttributeName()); + String patternId = "0"; + if (pattern != null) { + patternId = pattern.toString(); + sbReservoirs.append(patternId); + } + sbReservoirs.append(NL); + + String path = patternId2Path.get(patternId); + if (path != null) { + if (!patternsFilesList.contains(path)) + patternsFilesList.add(path); + } + } + + return sbReservoirs.toString(); + } + + private String handleTanks( List tanksList ) throws IOException { + StringBuilder sbTanks = new StringBuilder(); + sbTanks.append("\n\n[TANKS]\n"); + sbTanks.append(";ID").append(SPACER); + sbTanks.append("ELEV").append(SPACER); + sbTanks.append("INITLEVEL").append(SPACER); + sbTanks.append("MINLEVEL").append(SPACER); + sbTanks.append("MAXLEVEL").append(SPACER); + sbTanks.append("DIAMETER").append(SPACER); + sbTanks.append("MINVOL").append(SPACER); + sbTanks.append("VOLCURVE").append(NL); + + for( SimpleFeature tank : tanksList ) { + // [TANKS] + // ;ID Elevation InitLevel MinLevel MaxLevel Diameter MinVol VolCurve + Object dc_id = getAttribute(tank, Tanks.ID.getAttributeName()); + if (dc_id == null) + throw new IOException("Found a tank without ID. Please check your data!"); + sbTanks.append(dc_id.toString()); + sbTanks.append(SPACER); + Object elevation = getAttribute(tank, Tanks.BOTTOM_ELEVATION.getAttributeName()); + if (elevation != null) { + sbTanks.append(elevation.toString()); + } else { + sbTanks.append("0"); + } + sbTanks.append(SPACER); + Object initLevel = getAttribute(tank, Tanks.INITIAL_WATER_LEVEL.getAttributeName()); + if (initLevel != null) { + sbTanks.append(initLevel.toString()); + } else { + sbTanks.append("0"); + } + sbTanks.append(SPACER); + Object minLevel = getAttribute(tank, Tanks.MINIMUM_WATER_LEVEL.getAttributeName()); + if (minLevel != null) { + sbTanks.append(minLevel.toString()); + } else { + sbTanks.append("0"); + } + sbTanks.append(SPACER); + Object maxLevel = getAttribute(tank, Tanks.MAXIMUM_WATER_LEVEL.getAttributeName()); + if (maxLevel != null) { + sbTanks.append(maxLevel.toString()); + } else { + sbTanks.append("0"); + } + sbTanks.append(SPACER); + Object diameter = getAttribute(tank, Tanks.DIAMETER.getAttributeName()); + if (diameter != null) { + sbTanks.append(diameter.toString()); + } else { + sbTanks.append("0"); + } + sbTanks.append(SPACER); + Object minVol = getAttribute(tank, Tanks.MINIMUM_VOLUME.getAttributeName()); + if (minVol != null) { + sbTanks.append(minVol.toString()); + } else { + sbTanks.append("0"); + } + sbTanks.append(SPACER); + Object volCurve = getAttribute(tank, Tanks.VOLUME_CURVE_ID.getAttributeName()); + String volCurveId; + if (volCurve != null) { + volCurveId = volCurve.toString(); + } else { + volCurveId = "0"; + } + sbTanks.append(volCurveId); + sbTanks.append(NL); + + String path = curveId2Path.get(volCurveId); + if (path != null) { + if (!curvesFilesList.contains(path)) + curvesFilesList.add(path); + } + } + + return sbTanks.toString(); + } + + private String handlePumps( List pumpsList ) throws IOException { + StringBuilder sbPumps = new StringBuilder(); + StringBuilder sbEnergy = new StringBuilder(); + sbPumps.append("\n\n[PUMPS]\n"); + sbPumps.append(";ID").append(SPACER); + sbPumps.append("NODE1").append(SPACER); + sbPumps.append("NODE2").append(SPACER); + sbPumps.append("PARAMETERS").append(NL); + + sbEnergy.append("\n\n[ENERGY]\n"); + + for( SimpleFeature pump : pumpsList ) { + // [PUMPS] + // ;ID Node1 Node2 Parameters(key1 value1 key2 value2...) + Object dc_id = getAttribute(pump, Pumps.ID.getAttributeName()); + if (dc_id == null) + throw new IOException("Found a pump without ID. Please check your data!"); + String pumpId = dc_id.toString(); + sbPumps.append(pumpId); + sbPumps.append(SPACER); + Object node1 = getAttribute(pump, Pumps.START_NODE.getAttributeName()); + if (node1 == null) { + throwError(pumpId, "pump", "startnode"); + } + sbPumps.append(node1.toString()); + sbPumps.append(SPACER); + Object node2 = getAttribute(pump, Pumps.END_NODE.getAttributeName()); + if (node2 == null) { + throwError(pumpId, "pump", "endnode"); + } + sbPumps.append(node2.toString()); + sbPumps.append(SPACER); + + Object power = getAttribute(pump, Pumps.POWER.getAttributeName()); + if (power != null && !power.toString().equals("")) { + sbPumps.append("POWER " + power.toString()); + sbPumps.append(SPACER); + } + Object head = getAttribute(pump, Pumps.HEAD_ID.getAttributeName()); + if (head != null && !head.toString().equals("")) { + String headId = head.toString(); + sbPumps.append("HEAD " + headId); + sbPumps.append(SPACER); + + String path = curveId2Path.get(headId); + if (path != null) { + if (!curvesFilesList.contains(path)) + curvesFilesList.add(path); + } + } + Object speed = getAttribute(pump, Pumps.SPEED.getAttributeName()); + if (speed != null && !speed.toString().equals("")) { + sbPumps.append("SPEED " + speed.toString()); + sbPumps.append(SPACER); + } + Object speedPattern = getAttribute(pump, Pumps.SPEED_PATTERN.getAttributeName()); + if (speedPattern != null && !speedPattern.toString().equals("")) { + String patternId = speedPattern.toString(); + sbPumps.append("PATTERN " + patternId); + sbPumps.append(SPACER); + + String path = patternId2Path.get(patternId); + if (path != null) { + if (!patternsFilesList.contains(path)) + patternsFilesList.add(path); + } + } + sbPumps.append(NL); + + /* + * energy part + */ + Object price = getAttribute(pump, Pumps.PRICE.getAttributeName()); + if (price != null && !price.toString().equals("")) { + String priceStr = price.toString(); + sbEnergy.append("PUMP " + pumpId); + sbEnergy.append(SPACER); + sbEnergy.append("PRICE " + priceStr); + sbEnergy.append(NL); + } + Object pricePattern = getAttribute(pump, Pumps.PRICE_PATTERN.getAttributeName()); + if (pricePattern != null && !pricePattern.toString().equals("")) { + String pricePatternStr = pricePattern.toString(); + sbEnergy.append("PUMP " + pumpId); + sbEnergy.append(SPACER); + sbEnergy.append("PATTERN " + pricePatternStr); + sbEnergy.append(NL); + } + Object effic = getAttribute(pump, Pumps.EFFICIENCY.getAttributeName()); + if (effic != null && !effic.toString().equals("")) { + String effStr = effic.toString(); + sbEnergy.append("PUMP " + pumpId); + sbEnergy.append(SPACER); + sbEnergy.append("EFFIC " + effStr); + sbEnergy.append(NL); + + String path = curveId2Path.get(effStr); + if (path != null) { + if (!curvesFilesList.contains(path)) + curvesFilesList.add(path); + } + } + } + + sbPumps.append(NL).append(NL); + sbPumps.append(sbEnergy); + return sbPumps.toString(); + } + + private String handleValves( List valvesList ) throws IOException { + StringBuilder sbValves = new StringBuilder(); + sbValves.append("\n\n[VALVES]\n"); + sbValves.append(";ID").append(SPACER); + sbValves.append("NODE1").append(SPACER); + sbValves.append("NODE2").append(SPACER); + sbValves.append("DIAMETER").append(SPACER); + sbValves.append("TYPE").append(SPACER); + sbValves.append("SETTING").append(SPACER); + sbValves.append("MINORLOSS").append(NL); + + StringBuilder sbValvesStatus = new StringBuilder(); + sbValvesStatus.append("\n\n[STATUS]\n"); + sbValvesStatus.append(";ID").append(SPACER); + sbValvesStatus.append("Status/Setting").append(NL); + boolean hasStatus = false; + + for( SimpleFeature valve : valvesList ) { + // [VALVES] + // ;ID Node1 Node2 Diameter Type Setting MinorLoss + Object dc_id = getAttribute(valve, Valves.ID.getAttributeName()); + if (dc_id == null) + throw new IOException("Found a valve without ID. Please check your data!"); + String idString = dc_id.toString(); + sbValves.append(idString); + sbValves.append(SPACER); + + Object node1 = getAttribute(valve, Valves.START_NODE.getAttributeName()); + if (node1 == null) { + throwError(idString, "valve", "startnode"); + } + sbValves.append(node1.toString()); + sbValves.append(SPACER); + Object node2 = getAttribute(valve, Valves.END_NODE.getAttributeName()); + if (node2 == null) { + throwError(idString, "valve", "endnode"); + } + sbValves.append(node2.toString()); + sbValves.append(SPACER); + Object diameter = getAttribute(valve, Valves.DIAMETER.getAttributeName()); + if (diameter == null) { + throwError(idString, "valve", "diameter"); + } + sbValves.append(diameter.toString()); + sbValves.append(SPACER); + Object type = getAttribute(valve, Valves.TYPE.getAttributeName()); + if (type == null) { + throwError(idString, "valve", "type"); + } + sbValves.append(type.toString()); + sbValves.append(SPACER); + Object setting = getAttribute(valve, Valves.SETTING.getAttributeName()); + if (setting != null) { + sbValves.append(setting.toString()); + } else { + sbValves.append("0"); + } + sbValves.append(SPACER); + Object minorLoss = getAttribute(valve, Valves.MINORLOSS.getAttributeName()); + if (setting != null) { + sbValves.append(minorLoss.toString()); + } else { + sbValves.append("0"); + } + sbValves.append(NL); + + // STATUS PART + Object status = getAttribute(valve, Valves.STATUS.getAttributeName()); + if (status != null && status.toString().trim().length() != 0) { + sbValvesStatus.append(idString); + sbValvesStatus.append(SPACER); + sbValvesStatus.append(status.toString()); + sbValvesStatus.append(NL); + hasStatus = true; + } + } + + if (hasStatus) + sbValves.append(sbValvesStatus.toString()); + sbValves.append("\n\n"); + return sbValves.toString(); + } + + private String handleCoordinates( List junctionsList, List reservoirsList, + List tanksList ) throws IOException { + ArrayList nodesList = new ArrayList(); + nodesList.addAll(junctionsList); + nodesList.addAll(reservoirsList); + nodesList.addAll(tanksList); + + StringBuilder sbJunctionsCoords = new StringBuilder(); + sbJunctionsCoords.append("\n\n[COORDINATES]\n"); + sbJunctionsCoords.append(";NODE").append(SPACER); + sbJunctionsCoords.append("XCOORD").append(SPACER); + sbJunctionsCoords.append("YCOORD").append(NL); + + for( SimpleFeature node : nodesList ) { + Geometry geometry = (Geometry) node.getDefaultGeometry(); + Coordinate coordinate = geometry.getCoordinate(); + + // [COORDINATES] + Object attribute = getAttribute(node, Junctions.ID.getAttributeName()); + sbJunctionsCoords.append(attribute.toString()); + sbJunctionsCoords.append(SPACER); + sbJunctionsCoords.append(coordinate.x); + sbJunctionsCoords.append(SPACER); + sbJunctionsCoords.append(coordinate.y); + sbJunctionsCoords.append(NL); + } + + sbJunctionsCoords.append("\n\n"); + return sbJunctionsCoords.toString(); + } + + private String handleVertices( List pipesList ) throws IOException { + StringBuilder sbPipesVertices = new StringBuilder(); + sbPipesVertices.append("\n\n[VERTICES]\n"); + sbPipesVertices.append(";NODE").append(SPACER); + sbPipesVertices.append("XCOORD").append(SPACER); + sbPipesVertices.append("YCOORD").append(NL); + + for( SimpleFeature pipe : pipesList ) { + Geometry geometry = (Geometry) pipe.getDefaultGeometry(); + Coordinate[] coordinates = geometry.getCoordinates(); + + // [PIPES] + Object id = getAttribute(pipe, Pipes.ID.getAttributeName()); + String idString = id.toString(); + if (idString.toUpperCase().startsWith(EpanetConstants.DUMMYPIPE.toString())) { + continue; + } + + // [VERTICES] + for( Coordinate coordinate : coordinates ) { + sbPipesVertices.append(idString); + sbPipesVertices.append(SPACER); + sbPipesVertices.append(coordinate.x); + sbPipesVertices.append(SPACER); + sbPipesVertices.append(coordinate.y); + sbPipesVertices.append(NL); + } + } + + sbPipesVertices.append("\n\n"); + return sbPipesVertices.toString(); + } + + private Object getAttribute( SimpleFeature feature, String attributeName ) { + Object attribute = feature.getAttribute(attributeName); + if (attribute == null) { + attribute = feature.getAttribute(attributeName.toUpperCase()); + } + if (attribute == null) { + attribute = feature.getAttribute(attributeName.toLowerCase()); + } + return attribute; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetParametersOptions.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetParametersOptions.java index 600c06f14..cd2726bdd 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetParametersOptions.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetParametersOptions.java @@ -1,250 +1,250 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet; - -import java.io.File; -import java.io.FileReader; -import java.util.HashMap; -import java.util.Properties; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.math.NumericsUtilities; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.OptionParameterCodes; - -@Description("The options parameters of the epanet inp file") -@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") -@Keywords("Epanet") -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class EpanetParametersOptions extends JGTModel { - - @Description("Units.") - @In - public String units = null; - - @Description("Headloss.") - @In - public String headloss = null; - - @Description("Quality.") - @In - public String quality = null; - - @Description("Viscosity.") - @In - public Double viscosity = null; - - @Description("Diffusivity.") - @In - public Double diffusivity = null; - - @Description("Specific gravity.") - @In - public Double specificGravity = null; - - @Description("Trials.") - @In - public Integer trials = null; - - @Description("Accuracy.") - @In - public Double accuracy = null; - - @Description("Unbalanced.") - @In - public String unbalanced = null; - - @Description("Pattern.") - @In - public Integer pattern = null; - - @Description("Demand multiplier.") - @In - public Double demandMultiplier = null; - - @Description("Emitter exponent.") - @In - public Double emitterExponent = null; - - @Description("Tolerance.") - @In - public Double tolerance = null; - - @Description("Properties file containing the options.") - @In - public String inFile = null; - - @Description("The Properties needed for epanet.") - @Out - public Properties outProperties = new Properties(); - - /** - * The title of the options section in the inp file. - */ - public static final String OPTIONSSECTION = "[OPTIONS]"; //$NON-NLS-1$ - - @Execute - public void process() throws Exception { - if (inFile != null) { - File file = new File(inFile); - outProperties.load(new FileReader(file)); - } else { - if (units == null) { - units = OptionParameterCodes.UNITS.getDefault(); - } - outProperties.put(OptionParameterCodes.UNITS.getKey(), units); - - if (headloss == null) { - headloss = OptionParameterCodes.HEADLOSS.getDefault(); - } - outProperties.put(OptionParameterCodes.HEADLOSS.getKey(), headloss); - - if (quality == null) { - quality = OptionParameterCodes.QUALITY.getDefault(); - } - outProperties.put(OptionParameterCodes.QUALITY.getKey(), quality); - - if (unbalanced == null) { - unbalanced = OptionParameterCodes.UNBALANCED.getDefault(); - } - outProperties.put(OptionParameterCodes.UNBALANCED.getKey(), unbalanced); - - String vStr = ""; //$NON-NLS-1$ - if (viscosity == null) { - vStr = OptionParameterCodes.VISCOSITY.getDefault(); - } else { - vStr = String.valueOf(viscosity); - } - outProperties.put(OptionParameterCodes.VISCOSITY.getKey(), vStr); - - String dStr = ""; //$NON-NLS-1$ - if (diffusivity == null) { - dStr = OptionParameterCodes.DIFFUSIVITY.getDefault(); - } else { - dStr = String.valueOf(diffusivity); - } - outProperties.put(OptionParameterCodes.DIFFUSIVITY.getKey(), dStr); - - String sgStr = ""; //$NON-NLS-1$ - if (specificGravity == null) { - sgStr = OptionParameterCodes.SPECIFICGRAVITY.getDefault(); - } else { - sgStr = String.valueOf(specificGravity); - } - outProperties.put(OptionParameterCodes.SPECIFICGRAVITY.getKey(), sgStr); - - String tStr = ""; //$NON-NLS-1$ - if (trials == null) { - tStr = OptionParameterCodes.TRIALS.getDefault(); - } else { - tStr = String.valueOf(trials); - } - outProperties.put(OptionParameterCodes.TRIALS.getKey(), tStr); - - String aStr = ""; //$NON-NLS-1$ - if (accuracy == null) { - aStr = OptionParameterCodes.ACCURACY.getDefault(); - } else { - aStr = String.valueOf(accuracy); - } - outProperties.put(OptionParameterCodes.ACCURACY.getKey(), aStr); - - String pStr = ""; //$NON-NLS-1$ - if (pattern == null) { - pStr = OptionParameterCodes.PATTERN.getDefault(); - } else { - pStr = String.valueOf(pattern); - } - outProperties.put(OptionParameterCodes.PATTERN.getKey(), pStr); - - String dmStr = ""; //$NON-NLS-1$ - if (demandMultiplier == null) { - dmStr = OptionParameterCodes.DEMANDMULTIPLIER.getDefault(); - } else { - dmStr = String.valueOf(demandMultiplier); - } - outProperties.put(OptionParameterCodes.DEMANDMULTIPLIER.getKey(), dmStr); - - String eeStr = ""; //$NON-NLS-1$ - if (emitterExponent == null) { - eeStr = OptionParameterCodes.EMITEXPON.getDefault(); - } else { - eeStr = String.valueOf(emitterExponent); - } - outProperties.put(OptionParameterCodes.EMITEXPON.getKey(), eeStr); - - String toStr = ""; //$NON-NLS-1$ - if (tolerance == null) { - toStr = OptionParameterCodes.TOLERANCE.getDefault(); - } else { - toStr = String.valueOf(tolerance); - } - outProperties.put(OptionParameterCodes.TOLERANCE.getKey(), toStr); - } - } - - /** - * Create a {@link EpanetParametersOptions} from a {@link HashMap} of values. - * - * @param options the {@link HashMap} of values. The keys have to be from {@link OptionParameterCodes}. - * @return the created {@link EpanetParametersOptions}. - * @throws Exception - */ - public static EpanetParametersOptions createFromMap( HashMap options ) throws Exception { - EpanetParametersOptions epOptions = new EpanetParametersOptions(); - String units = options.get(OptionParameterCodes.UNITS); - epOptions.units = units; - String headloss = options.get(OptionParameterCodes.HEADLOSS); - epOptions.headloss = headloss; - String quality = options.get(OptionParameterCodes.QUALITY); - epOptions.quality = quality; - String viscosity = options.get(OptionParameterCodes.VISCOSITY); - epOptions.viscosity = NumericsUtilities.isNumber(viscosity, Double.class); - String diffusivity = options.get(OptionParameterCodes.DIFFUSIVITY); - epOptions.diffusivity = NumericsUtilities.isNumber(diffusivity, Double.class); - String specGravity = options.get(OptionParameterCodes.SPECIFICGRAVITY); - epOptions.specificGravity = NumericsUtilities.isNumber(specGravity, Double.class); - String trials = options.get(OptionParameterCodes.TRIALS); - epOptions.trials = NumericsUtilities.isNumber(trials, Integer.class); - String accuracy = options.get(OptionParameterCodes.ACCURACY); - epOptions.accuracy = NumericsUtilities.isNumber(accuracy, Double.class); - String unbalanced = options.get(OptionParameterCodes.UNBALANCED); - epOptions.unbalanced = unbalanced; - String pattern = options.get(OptionParameterCodes.PATTERN); - epOptions.pattern = NumericsUtilities.isNumber(pattern, Integer.class); - String demandMultiplier = options.get(OptionParameterCodes.DEMANDMULTIPLIER); - epOptions.demandMultiplier = NumericsUtilities.isNumber(demandMultiplier, Double.class); - String emitterExp = options.get(OptionParameterCodes.EMITEXPON); - epOptions.emitterExponent = NumericsUtilities.isNumber(emitterExp, Double.class); - String tolerance = options.get(OptionParameterCodes.TOLERANCE); - epOptions.tolerance = NumericsUtilities.isNumber(tolerance, Double.class); - epOptions.process(); - return epOptions; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet; + +import java.io.File; +import java.io.FileReader; +import java.util.HashMap; +import java.util.Properties; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.math.NumericsUtilities; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.OptionParameterCodes; + +@Description("The options parameters of the epanet inp file") +@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") +@Keywords("Epanet") +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class EpanetParametersOptions extends JGTModel { + + @Description("Units.") + @In + public String units = null; + + @Description("Headloss.") + @In + public String headloss = null; + + @Description("Quality.") + @In + public String quality = null; + + @Description("Viscosity.") + @In + public Double viscosity = null; + + @Description("Diffusivity.") + @In + public Double diffusivity = null; + + @Description("Specific gravity.") + @In + public Double specificGravity = null; + + @Description("Trials.") + @In + public Integer trials = null; + + @Description("Accuracy.") + @In + public Double accuracy = null; + + @Description("Unbalanced.") + @In + public String unbalanced = null; + + @Description("Pattern.") + @In + public Integer pattern = null; + + @Description("Demand multiplier.") + @In + public Double demandMultiplier = null; + + @Description("Emitter exponent.") + @In + public Double emitterExponent = null; + + @Description("Tolerance.") + @In + public Double tolerance = null; + + @Description("Properties file containing the options.") + @In + public String inFile = null; + + @Description("The Properties needed for epanet.") + @Out + public Properties outProperties = new Properties(); + + /** + * The title of the options section in the inp file. + */ + public static final String OPTIONSSECTION = "[OPTIONS]"; //$NON-NLS-1$ + + @Execute + public void process() throws Exception { + if (inFile != null) { + File file = new File(inFile); + outProperties.load(new FileReader(file)); + } else { + if (units == null) { + units = OptionParameterCodes.UNITS.getDefault(); + } + outProperties.put(OptionParameterCodes.UNITS.getKey(), units); + + if (headloss == null) { + headloss = OptionParameterCodes.HEADLOSS.getDefault(); + } + outProperties.put(OptionParameterCodes.HEADLOSS.getKey(), headloss); + + if (quality == null) { + quality = OptionParameterCodes.QUALITY.getDefault(); + } + outProperties.put(OptionParameterCodes.QUALITY.getKey(), quality); + + if (unbalanced == null) { + unbalanced = OptionParameterCodes.UNBALANCED.getDefault(); + } + outProperties.put(OptionParameterCodes.UNBALANCED.getKey(), unbalanced); + + String vStr = ""; //$NON-NLS-1$ + if (viscosity == null) { + vStr = OptionParameterCodes.VISCOSITY.getDefault(); + } else { + vStr = String.valueOf(viscosity); + } + outProperties.put(OptionParameterCodes.VISCOSITY.getKey(), vStr); + + String dStr = ""; //$NON-NLS-1$ + if (diffusivity == null) { + dStr = OptionParameterCodes.DIFFUSIVITY.getDefault(); + } else { + dStr = String.valueOf(diffusivity); + } + outProperties.put(OptionParameterCodes.DIFFUSIVITY.getKey(), dStr); + + String sgStr = ""; //$NON-NLS-1$ + if (specificGravity == null) { + sgStr = OptionParameterCodes.SPECIFICGRAVITY.getDefault(); + } else { + sgStr = String.valueOf(specificGravity); + } + outProperties.put(OptionParameterCodes.SPECIFICGRAVITY.getKey(), sgStr); + + String tStr = ""; //$NON-NLS-1$ + if (trials == null) { + tStr = OptionParameterCodes.TRIALS.getDefault(); + } else { + tStr = String.valueOf(trials); + } + outProperties.put(OptionParameterCodes.TRIALS.getKey(), tStr); + + String aStr = ""; //$NON-NLS-1$ + if (accuracy == null) { + aStr = OptionParameterCodes.ACCURACY.getDefault(); + } else { + aStr = String.valueOf(accuracy); + } + outProperties.put(OptionParameterCodes.ACCURACY.getKey(), aStr); + + String pStr = ""; //$NON-NLS-1$ + if (pattern == null) { + pStr = OptionParameterCodes.PATTERN.getDefault(); + } else { + pStr = String.valueOf(pattern); + } + outProperties.put(OptionParameterCodes.PATTERN.getKey(), pStr); + + String dmStr = ""; //$NON-NLS-1$ + if (demandMultiplier == null) { + dmStr = OptionParameterCodes.DEMANDMULTIPLIER.getDefault(); + } else { + dmStr = String.valueOf(demandMultiplier); + } + outProperties.put(OptionParameterCodes.DEMANDMULTIPLIER.getKey(), dmStr); + + String eeStr = ""; //$NON-NLS-1$ + if (emitterExponent == null) { + eeStr = OptionParameterCodes.EMITEXPON.getDefault(); + } else { + eeStr = String.valueOf(emitterExponent); + } + outProperties.put(OptionParameterCodes.EMITEXPON.getKey(), eeStr); + + String toStr = ""; //$NON-NLS-1$ + if (tolerance == null) { + toStr = OptionParameterCodes.TOLERANCE.getDefault(); + } else { + toStr = String.valueOf(tolerance); + } + outProperties.put(OptionParameterCodes.TOLERANCE.getKey(), toStr); + } + } + + /** + * Create a {@link EpanetParametersOptions} from a {@link HashMap} of values. + * + * @param options the {@link HashMap} of values. The keys have to be from {@link OptionParameterCodes}. + * @return the created {@link EpanetParametersOptions}. + * @throws Exception + */ + public static EpanetParametersOptions createFromMap( HashMap options ) throws Exception { + EpanetParametersOptions epOptions = new EpanetParametersOptions(); + String units = options.get(OptionParameterCodes.UNITS); + epOptions.units = units; + String headloss = options.get(OptionParameterCodes.HEADLOSS); + epOptions.headloss = headloss; + String quality = options.get(OptionParameterCodes.QUALITY); + epOptions.quality = quality; + String viscosity = options.get(OptionParameterCodes.VISCOSITY); + epOptions.viscosity = NumericsUtilities.isNumber(viscosity, Double.class); + String diffusivity = options.get(OptionParameterCodes.DIFFUSIVITY); + epOptions.diffusivity = NumericsUtilities.isNumber(diffusivity, Double.class); + String specGravity = options.get(OptionParameterCodes.SPECIFICGRAVITY); + epOptions.specificGravity = NumericsUtilities.isNumber(specGravity, Double.class); + String trials = options.get(OptionParameterCodes.TRIALS); + epOptions.trials = NumericsUtilities.isNumber(trials, Integer.class); + String accuracy = options.get(OptionParameterCodes.ACCURACY); + epOptions.accuracy = NumericsUtilities.isNumber(accuracy, Double.class); + String unbalanced = options.get(OptionParameterCodes.UNBALANCED); + epOptions.unbalanced = unbalanced; + String pattern = options.get(OptionParameterCodes.PATTERN); + epOptions.pattern = NumericsUtilities.isNumber(pattern, Integer.class); + String demandMultiplier = options.get(OptionParameterCodes.DEMANDMULTIPLIER); + epOptions.demandMultiplier = NumericsUtilities.isNumber(demandMultiplier, Double.class); + String emitterExp = options.get(OptionParameterCodes.EMITEXPON); + epOptions.emitterExponent = NumericsUtilities.isNumber(emitterExp, Double.class); + String tolerance = options.get(OptionParameterCodes.TOLERANCE); + epOptions.tolerance = NumericsUtilities.isNumber(tolerance, Double.class); + epOptions.process(); + return epOptions; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetParametersTime.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetParametersTime.java index 4c2e007d2..54faccb08 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetParametersTime.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetParametersTime.java @@ -1,163 +1,163 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet; - -import java.io.File; -import java.io.FileReader; -import java.util.HashMap; -import java.util.Properties; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.math.NumericsUtilities; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.TimeParameterCodes; - -@Description("The time related parameters of the epanet inp file") -@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") -@Keywords("Epanet") -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class EpanetParametersTime extends JGTModel { - - @Description("The duration of the simulation in minutes. Default is 0.") - @In - public Double duration = null; - - @Description("Defines how often a new hydraulic state of the network is computed. In minutes. Default is 60 minutes.") - @In - public Double hydraulicTimestep = null; - - @Description("The interval between time periods in all time patterns. Default is 60 minutes.") - @In - public Double patternTimestep = null; - - @Description("The time offset in minutes at which all patterns will start.") - @In - public Double patternStart = null; - - @Description("Sets the timestep interval of the report in minutes. Default is 60 minutes.") - @In - public Double reportTimestep = null; - - @Description("The time offset in minutes at which the report will start.") - @In - public Double reportStart = null; - - @Description("The time of the day at which the simulation begins. format is: [HH:MM AM/PM]") - @In - public String startClockTime = null; - - @Description("Kind of postprocessing that should be done on time series.") - @In - public String statistic = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("Properties file containing the time options.") - @In - public String inFile = null; - - @Description("The Properties needed for epanet.") - @Out - public Properties outProperties = new Properties(); - - private static final String MIN = " MIN"; //$NON-NLS-1$ - - /** - * The title of the time section in the inp file. - */ - public static final String TIMESECTION = "[TIMES]"; //$NON-NLS-1$ - - @Execute - public void process() throws Exception { - if (inFile != null) { - File file = new File(inFile); - outProperties.load(new FileReader(file)); - } else { - if (duration != null) { - outProperties.put(TimeParameterCodes.DURATION.getKey(), duration + MIN); - } else { - outProperties.put(TimeParameterCodes.DURATION.getKey(), 0 + MIN); - } - if (hydraulicTimestep != null) { - outProperties.put(TimeParameterCodes.HYDSTEP.getKey(), hydraulicTimestep + MIN); - } - if (patternTimestep != null) { - outProperties.put(TimeParameterCodes.PATTERNSTEP.getKey(), patternTimestep + MIN); - } - if (patternStart != null) { - outProperties.put(TimeParameterCodes.PATTERNSTART.getKey(), patternStart + MIN); - } - if (reportTimestep != null) { - outProperties.put(TimeParameterCodes.REPORTSTEP.getKey(), reportTimestep + MIN); - } - if (reportStart != null) { - outProperties.put(TimeParameterCodes.REPORTSTART.getKey(), reportStart + MIN); - } - if (startClockTime != null) { - outProperties.put(TimeParameterCodes.STARTCLOCKTIME.getKey(), startClockTime); - } - if (statistic != null) { - outProperties.put(TimeParameterCodes.STATISTIC.getKey(), statistic); - } - } - } - - /** - * Create a {@link EpanetParametersTime} from a {@link HashMap} of values. - * - * @param options the {@link HashMap} of values. The keys have to be from {@link TimeParameterCodes}. - * @return the created {@link EpanetParametersTime}. - * @throws Exception - */ - public static EpanetParametersTime createFromMap( HashMap options ) throws Exception { - EpanetParametersTime epTime = new EpanetParametersTime(); - String duration = options.get(TimeParameterCodes.DURATION); - epTime.duration = NumericsUtilities.isNumber(duration, Double.class); - String hydrTiStep = options.get(TimeParameterCodes.HYDSTEP); - epTime.hydraulicTimestep = NumericsUtilities.isNumber(hydrTiStep, Double.class); - String pattTimeStep = options.get(TimeParameterCodes.PATTERNSTEP); - epTime.patternTimestep = NumericsUtilities.isNumber(pattTimeStep, Double.class); - String patternStart = options.get(TimeParameterCodes.PATTERNSTART); - epTime.patternStart = NumericsUtilities.isNumber(patternStart, Double.class); - String reportTimeStep = options.get(TimeParameterCodes.REPORTSTEP); - epTime.reportTimestep = NumericsUtilities.isNumber(reportTimeStep, Double.class); - String reportStart = options.get(TimeParameterCodes.REPORTSTART); - epTime.reportStart = NumericsUtilities.isNumber(reportStart, Double.class); - String startClockTime = options.get(TimeParameterCodes.STARTCLOCKTIME); - epTime.startClockTime = startClockTime; - String statistic = options.get(TimeParameterCodes.STATISTIC); - epTime.statistic = statistic; - epTime.process(); - return epTime; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet; + +import java.io.File; +import java.io.FileReader; +import java.util.HashMap; +import java.util.Properties; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.math.NumericsUtilities; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.TimeParameterCodes; + +@Description("The time related parameters of the epanet inp file") +@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") +@Keywords("Epanet") +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class EpanetParametersTime extends JGTModel { + + @Description("The duration of the simulation in minutes. Default is 0.") + @In + public Double duration = null; + + @Description("Defines how often a new hydraulic state of the network is computed. In minutes. Default is 60 minutes.") + @In + public Double hydraulicTimestep = null; + + @Description("The interval between time periods in all time patterns. Default is 60 minutes.") + @In + public Double patternTimestep = null; + + @Description("The time offset in minutes at which all patterns will start.") + @In + public Double patternStart = null; + + @Description("Sets the timestep interval of the report in minutes. Default is 60 minutes.") + @In + public Double reportTimestep = null; + + @Description("The time offset in minutes at which the report will start.") + @In + public Double reportStart = null; + + @Description("The time of the day at which the simulation begins. format is: [HH:MM AM/PM]") + @In + public String startClockTime = null; + + @Description("Kind of postprocessing that should be done on time series.") + @In + public String statistic = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("Properties file containing the time options.") + @In + public String inFile = null; + + @Description("The Properties needed for epanet.") + @Out + public Properties outProperties = new Properties(); + + private static final String MIN = " MIN"; //$NON-NLS-1$ + + /** + * The title of the time section in the inp file. + */ + public static final String TIMESECTION = "[TIMES]"; //$NON-NLS-1$ + + @Execute + public void process() throws Exception { + if (inFile != null) { + File file = new File(inFile); + outProperties.load(new FileReader(file)); + } else { + if (duration != null) { + outProperties.put(TimeParameterCodes.DURATION.getKey(), duration + MIN); + } else { + outProperties.put(TimeParameterCodes.DURATION.getKey(), 0 + MIN); + } + if (hydraulicTimestep != null) { + outProperties.put(TimeParameterCodes.HYDSTEP.getKey(), hydraulicTimestep + MIN); + } + if (patternTimestep != null) { + outProperties.put(TimeParameterCodes.PATTERNSTEP.getKey(), patternTimestep + MIN); + } + if (patternStart != null) { + outProperties.put(TimeParameterCodes.PATTERNSTART.getKey(), patternStart + MIN); + } + if (reportTimestep != null) { + outProperties.put(TimeParameterCodes.REPORTSTEP.getKey(), reportTimestep + MIN); + } + if (reportStart != null) { + outProperties.put(TimeParameterCodes.REPORTSTART.getKey(), reportStart + MIN); + } + if (startClockTime != null) { + outProperties.put(TimeParameterCodes.STARTCLOCKTIME.getKey(), startClockTime); + } + if (statistic != null) { + outProperties.put(TimeParameterCodes.STATISTIC.getKey(), statistic); + } + } + } + + /** + * Create a {@link EpanetParametersTime} from a {@link HashMap} of values. + * + * @param options the {@link HashMap} of values. The keys have to be from {@link TimeParameterCodes}. + * @return the created {@link EpanetParametersTime}. + * @throws Exception + */ + public static EpanetParametersTime createFromMap( HashMap options ) throws Exception { + EpanetParametersTime epTime = new EpanetParametersTime(); + String duration = options.get(TimeParameterCodes.DURATION); + epTime.duration = NumericsUtilities.isNumber(duration, Double.class); + String hydrTiStep = options.get(TimeParameterCodes.HYDSTEP); + epTime.hydraulicTimestep = NumericsUtilities.isNumber(hydrTiStep, Double.class); + String pattTimeStep = options.get(TimeParameterCodes.PATTERNSTEP); + epTime.patternTimestep = NumericsUtilities.isNumber(pattTimeStep, Double.class); + String patternStart = options.get(TimeParameterCodes.PATTERNSTART); + epTime.patternStart = NumericsUtilities.isNumber(patternStart, Double.class); + String reportTimeStep = options.get(TimeParameterCodes.REPORTSTEP); + epTime.reportTimestep = NumericsUtilities.isNumber(reportTimeStep, Double.class); + String reportStart = options.get(TimeParameterCodes.REPORTSTART); + epTime.reportStart = NumericsUtilities.isNumber(reportStart, Double.class); + String startClockTime = options.get(TimeParameterCodes.STARTCLOCKTIME); + epTime.startClockTime = startClockTime; + String statistic = options.get(TimeParameterCodes.STATISTIC); + epTime.statistic = statistic; + epTime.process(); + return epTime; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetProjectFilesGenerator.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetProjectFilesGenerator.java index 8280a4919..916aa3d57 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetProjectFilesGenerator.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/EpanetProjectFilesGenerator.java @@ -1,176 +1,176 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet; - -import java.io.File; -import java.io.IOException; -import java.io.Serializable; -import java.net.MalformedURLException; -import java.util.HashMap; -import java.util.Map; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.DefaultTransaction; -import org.geotools.data.Transaction; -import org.geotools.data.shapefile.ShapefileDataStore; -import org.geotools.data.shapefile.ShapefileDataStoreFactory; -import org.geotools.data.simple.SimpleFeatureStore; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.geotools.referencing.CRS; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Junctions; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pipes; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pumps; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Reservoirs; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Tanks; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Valves; -import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.IEpanetType; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.Point; - -@Description("Generates the base shapefiles for an epanet run.") -@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") -@Keywords("Epanet") -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class EpanetProjectFilesGenerator extends JGTModel { - - @Description("The folder into which to create the base files.") - @In - public String inFolder = null; - - @Description("The code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328).") - @UI(JGTConstants.CRS_UI_HINT) - @In - public String pCode; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Execute - public void process() throws Exception { - checkNull(inFolder, pCode); - - CoordinateReferenceSystem crs = CRS.decode(pCode); - - File baseFolder = new File(inFolder); - - pm.beginTask("Create epanet project shapefiles...", 7); - pm.worked(1); - IEpanetType[] values = Junctions.values(); - makePointLayer(values, baseFolder, crs); - pm.worked(1); - values = Tanks.values(); - makePointLayer(values, baseFolder, crs); - pm.worked(1); - values = Reservoirs.values(); - makePointLayer(values, baseFolder, crs); - pm.worked(1); - values = Pumps.values(); - makePointLayer(values, baseFolder, crs); - pm.worked(1); - values = Valves.values(); - makePointLayer(values, baseFolder, crs); - pm.worked(1); - values = Pipes.values(); - makeLineLayer(values, baseFolder, crs); - pm.worked(1); - pm.done(); - } - - private void makePointLayer( IEpanetType[] types, File baseFolder, CoordinateReferenceSystem mapCrs ) - throws MalformedURLException, IOException { - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - String shapefileName = types[0].getShapefileName(); - String typeName = types[0].getName(); - b.setName(typeName); - b.setCRS(mapCrs); - b.add("the_geom", Point.class); - for( IEpanetType type : types ) { - b.add(type.getAttributeName(), type.getClazz()); - } - SimpleFeatureType tanksType = b.buildFeatureType(); - ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory(); - File file = new File(baseFolder, shapefileName); - Map create = new HashMap(); - create.put("url", file.toURI().toURL()); - ShapefileDataStore newDataStore = (ShapefileDataStore) factory.createNewDataStore(create); - newDataStore.createSchema(tanksType); - Transaction transaction = new DefaultTransaction(); - SimpleFeatureStore featureStore = (SimpleFeatureStore) newDataStore.getFeatureSource(); - featureStore.setTransaction(transaction); - try { - featureStore.addFeatures(FeatureCollections.newCollection()); - transaction.commit(); - } catch (Exception problem) { - problem.printStackTrace(); - transaction.rollback(); - } finally { - transaction.close(); - } - } - - private void makeLineLayer( IEpanetType[] types, File baseFolder, CoordinateReferenceSystem mapCrs ) - throws MalformedURLException, IOException { - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - String shapefileName = types[0].getShapefileName(); - String typeName = types[0].getName(); - b.setName(typeName); - b.setCRS(mapCrs); - b.add("the_geom", LineString.class); - for( IEpanetType type : types ) { - b.add(type.getAttributeName(), type.getClazz()); - } - SimpleFeatureType tanksType = b.buildFeatureType(); - ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory(); - File file = new File(baseFolder, shapefileName); - Map create = new HashMap(); - create.put("url", file.toURI().toURL()); - ShapefileDataStore newDataStore = (ShapefileDataStore) factory.createNewDataStore(create); - newDataStore.createSchema(tanksType); - Transaction transaction = new DefaultTransaction(); - SimpleFeatureStore featureStore = (SimpleFeatureStore) newDataStore.getFeatureSource(); - featureStore.setTransaction(transaction); - try { - featureStore.addFeatures(FeatureCollections.newCollection()); - transaction.commit(); - } catch (Exception problem) { - problem.printStackTrace(); - transaction.rollback(); - } finally { - transaction.close(); - } - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet; + +import java.io.File; +import java.io.IOException; +import java.io.Serializable; +import java.net.MalformedURLException; +import java.util.HashMap; +import java.util.Map; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.DefaultTransaction; +import org.geotools.data.Transaction; +import org.geotools.data.shapefile.ShapefileDataStore; +import org.geotools.data.shapefile.ShapefileDataStoreFactory; +import org.geotools.data.simple.SimpleFeatureStore; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.geotools.referencing.CRS; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Junctions; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pipes; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Pumps; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Reservoirs; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Tanks; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.EpanetFeatureTypes.Valves; +import org.jgrasstools.hortonmachine.modules.networktools.epanet.core.IEpanetType; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.Point; + +@Description("Generates the base shapefiles for an epanet run.") +@Author(name = "Andrea Antonello, Silvia Franceschi", contact = "www.hydrologis.com") +@Keywords("Epanet") +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class EpanetProjectFilesGenerator extends JGTModel { + + @Description("The folder into which to create the base files.") + @In + public String inFolder = null; + + @Description("The code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328).") + @UI(JGTConstants.CRS_UI_HINT) + @In + public String pCode; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Execute + public void process() throws Exception { + checkNull(inFolder, pCode); + + CoordinateReferenceSystem crs = CRS.decode(pCode); + + File baseFolder = new File(inFolder); + + pm.beginTask("Create epanet project shapefiles...", 7); + pm.worked(1); + IEpanetType[] values = Junctions.values(); + makePointLayer(values, baseFolder, crs); + pm.worked(1); + values = Tanks.values(); + makePointLayer(values, baseFolder, crs); + pm.worked(1); + values = Reservoirs.values(); + makePointLayer(values, baseFolder, crs); + pm.worked(1); + values = Pumps.values(); + makePointLayer(values, baseFolder, crs); + pm.worked(1); + values = Valves.values(); + makePointLayer(values, baseFolder, crs); + pm.worked(1); + values = Pipes.values(); + makeLineLayer(values, baseFolder, crs); + pm.worked(1); + pm.done(); + } + + private void makePointLayer( IEpanetType[] types, File baseFolder, CoordinateReferenceSystem mapCrs ) + throws MalformedURLException, IOException { + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + String shapefileName = types[0].getShapefileName(); + String typeName = types[0].getName(); + b.setName(typeName); + b.setCRS(mapCrs); + b.add("the_geom", Point.class); + for( IEpanetType type : types ) { + b.add(type.getAttributeName(), type.getClazz()); + } + SimpleFeatureType tanksType = b.buildFeatureType(); + ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory(); + File file = new File(baseFolder, shapefileName); + Map create = new HashMap(); + create.put("url", file.toURI().toURL()); + ShapefileDataStore newDataStore = (ShapefileDataStore) factory.createNewDataStore(create); + newDataStore.createSchema(tanksType); + Transaction transaction = new DefaultTransaction(); + SimpleFeatureStore featureStore = (SimpleFeatureStore) newDataStore.getFeatureSource(); + featureStore.setTransaction(transaction); + try { + featureStore.addFeatures(FeatureCollections.newCollection()); + transaction.commit(); + } catch (Exception problem) { + problem.printStackTrace(); + transaction.rollback(); + } finally { + transaction.close(); + } + } + + private void makeLineLayer( IEpanetType[] types, File baseFolder, CoordinateReferenceSystem mapCrs ) + throws MalformedURLException, IOException { + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + String shapefileName = types[0].getShapefileName(); + String typeName = types[0].getName(); + b.setName(typeName); + b.setCRS(mapCrs); + b.add("the_geom", LineString.class); + for( IEpanetType type : types ) { + b.add(type.getAttributeName(), type.getClazz()); + } + SimpleFeatureType tanksType = b.buildFeatureType(); + ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory(); + File file = new File(baseFolder, shapefileName); + Map create = new HashMap(); + create.put("url", file.toURI().toURL()); + ShapefileDataStore newDataStore = (ShapefileDataStore) factory.createNewDataStore(create); + newDataStore.createSchema(tanksType); + Transaction transaction = new DefaultTransaction(); + SimpleFeatureStore featureStore = (SimpleFeatureStore) newDataStore.getFeatureSource(); + featureStore.setTransaction(transaction); + try { + featureStore.addFeatures(FeatureCollections.newCollection()); + transaction.commit(); + } catch (Exception problem) { + problem.printStackTrace(); + transaction.rollback(); + } finally { + transaction.close(); + } + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Components.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Components.java index 82f15206c..b23f206de 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Components.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Components.java @@ -1,44 +1,44 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum Components { - EN_NODECOUNT(0, "Nodes"), // - EN_TANKCOUNT(1, "Reservoirs and tank nodes"), // - EN_LINKCOUNT(2, "Links"), // - EN_PATCOUNT(3, "Time patterns"), // - EN_CURVECOUNT(4, "Curves"), // - EN_CONTROLCOUNT(5, "Simple controls"); - - private int code; - private String type; - Components( int code, String type ) { - this.code = code; - this.type = type; - } - - public int getCode() { - return code; - } - - public String getType() { - return type; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum Components { + EN_NODECOUNT(0, "Nodes"), // + EN_TANKCOUNT(1, "Reservoirs and tank nodes"), // + EN_LINKCOUNT(2, "Links"), // + EN_PATCOUNT(3, "Time patterns"), // + EN_CURVECOUNT(4, "Curves"), // + EN_CONTROLCOUNT(5, "Simple controls"); + + private int code; + private String type; + Components( int code, String type ) { + this.code = code; + this.type = type; + } + + public int getCode() { + return code; + } + + public String getType() { + return type; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetConstants.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetConstants.java index 6ecff2bf9..91e17012f 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetConstants.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetConstants.java @@ -1,52 +1,52 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; -/** - * Interface for all epanet feature types. - */ -public enum EpanetConstants { - /** - * The tag for the pipes that are not used. - * - *

This can happen for pipes that have a pump or valve - * on it. - */ - DUMMYPIPE("DUMMY"), //$NON-NLS-1$ - /** - * The prefix of curves files. - */ - CURVES_FILE_PREFIX("curve"), //$NON-NLS-1$ - /** - * The prefix of pattern files. - */ - PATTERNS_FILE_PREFIX("pattern"), //$NON-NLS-1$ - /** - * The prefix of demands files. - */ - DEMANDS_FILE_PREFIX("demand"); //$NON-NLS-1$ - - private final String constant; - EpanetConstants( String constant ) { - this.constant = constant; - } - - public String toString() { - return constant; - } +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; +/** + * Interface for all epanet feature types. + */ +public enum EpanetConstants { + /** + * The tag for the pipes that are not used. + * + *

This can happen for pipes that have a pump or valve + * on it. + */ + DUMMYPIPE("DUMMY"), //$NON-NLS-1$ + /** + * The prefix of curves files. + */ + CURVES_FILE_PREFIX("curve"), //$NON-NLS-1$ + /** + * The prefix of pattern files. + */ + PATTERNS_FILE_PREFIX("pattern"), //$NON-NLS-1$ + /** + * The prefix of demands files. + */ + DEMANDS_FILE_PREFIX("demand"); //$NON-NLS-1$ + + private final String constant; + EpanetConstants( String constant ) { + this.constant = constant; + } + + public String toString() { + return constant; + } } \ No newline at end of file diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetErrors.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetErrors.java index eaad23a61..bf1039023 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetErrors.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetErrors.java @@ -1,88 +1,88 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -import java.util.HashMap; - -@SuppressWarnings("nls") -public class EpanetErrors { - private static HashMap errors = new HashMap(); - static { - errors.put(0, "No error "); - errors.put(101, "Insufficient memory "); - errors.put(102, "No network data to process "); - errors.put(103, "Hydraulics solver not initialized "); - errors.put(104, "No hydraulic results available "); - errors.put(105, "Water quality solver not initialized "); - errors.put(106, "No results to report on "); - errors.put(110, "Cannot solve hydraulic equations "); - errors.put(120, "Cannot solve WQ transport equations "); - errors.put(200, "One or more errors in input file "); - errors.put(202, "Illegal numeric value in function call "); - errors.put(203, "Undefined node in function call "); - errors.put(204, "Undefined link in function call "); - errors.put(205, "Undefined time pattern in function call "); - errors.put(207, "Attempt made to control a check valve "); - errors.put(223, "Not enough nodes in network "); - errors.put(224, "No tanks or reservoirs in network "); - errors.put(240, "Undefined source in function call "); - errors.put(241, "Undefined control statement in function call "); - errors.put(250, "Function argument has invalid format "); - errors.put(251, "Illegal parameter code in function call "); - errors.put(301, "Identical file names "); - errors.put(302, "Cannot open input file "); - errors.put(303, "Cannot open report file "); - errors.put(304, "Cannot open binary output file "); - errors.put(305, "Cannot open hydraulics file "); - errors.put(306, "Invalid hydraulics file "); - errors.put(307, "Cannot read hydraulics file "); - errors.put(308, "Cannot save results to file "); - errors.put(309, "Cannot write report to file "); - - errors.put(1, - "System hydraulically unbalanced - convergence to a hydraulic solution was not achieved in the allowed number of trials."); - errors.put(2, - "System may be hydraulically unstable - hydraulic convergence was only achieved after the status of all links was held fixed."); - errors.put(3, "System disconnected - one or more nodes with positive demands were disconnected from all supply sources"); - errors.put( - 4, - "Pumps cannot deliver enough flow or head - one or more pumps were forced to either shut down (due to insufficient head) or operate beyond the maximum rated flow."); - errors.put(5, - "Valves cannot deliver enough flow - one or more flow control valves could not deliver the required flow even when fully open."); - errors.put(6, - "System has negative pressures - negative pressures occurred at one or more junctions with positive demand."); - - } - - public static void checkError( int errcode ) throws EpanetException { - if (errcode > 100) { - String msg = errors.get(errcode); - throw new EpanetException(msg); - } - } - - public static String checkWarning( int errcode ) { - if (errcode > 0 && errcode < 7) { - String msg = errors.get(errcode); - return msg; - } - return null; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +import java.util.HashMap; + +@SuppressWarnings("nls") +public class EpanetErrors { + private static HashMap errors = new HashMap(); + static { + errors.put(0, "No error "); + errors.put(101, "Insufficient memory "); + errors.put(102, "No network data to process "); + errors.put(103, "Hydraulics solver not initialized "); + errors.put(104, "No hydraulic results available "); + errors.put(105, "Water quality solver not initialized "); + errors.put(106, "No results to report on "); + errors.put(110, "Cannot solve hydraulic equations "); + errors.put(120, "Cannot solve WQ transport equations "); + errors.put(200, "One or more errors in input file "); + errors.put(202, "Illegal numeric value in function call "); + errors.put(203, "Undefined node in function call "); + errors.put(204, "Undefined link in function call "); + errors.put(205, "Undefined time pattern in function call "); + errors.put(207, "Attempt made to control a check valve "); + errors.put(223, "Not enough nodes in network "); + errors.put(224, "No tanks or reservoirs in network "); + errors.put(240, "Undefined source in function call "); + errors.put(241, "Undefined control statement in function call "); + errors.put(250, "Function argument has invalid format "); + errors.put(251, "Illegal parameter code in function call "); + errors.put(301, "Identical file names "); + errors.put(302, "Cannot open input file "); + errors.put(303, "Cannot open report file "); + errors.put(304, "Cannot open binary output file "); + errors.put(305, "Cannot open hydraulics file "); + errors.put(306, "Invalid hydraulics file "); + errors.put(307, "Cannot read hydraulics file "); + errors.put(308, "Cannot save results to file "); + errors.put(309, "Cannot write report to file "); + + errors.put(1, + "System hydraulically unbalanced - convergence to a hydraulic solution was not achieved in the allowed number of trials."); + errors.put(2, + "System may be hydraulically unstable - hydraulic convergence was only achieved after the status of all links was held fixed."); + errors.put(3, "System disconnected - one or more nodes with positive demands were disconnected from all supply sources"); + errors.put( + 4, + "Pumps cannot deliver enough flow or head - one or more pumps were forced to either shut down (due to insufficient head) or operate beyond the maximum rated flow."); + errors.put(5, + "Valves cannot deliver enough flow - one or more flow control valves could not deliver the required flow even when fully open."); + errors.put(6, + "System has negative pressures - negative pressures occurred at one or more junctions with positive demand."); + + } + + public static void checkError( int errcode ) throws EpanetException { + if (errcode > 100) { + String msg = errors.get(errcode); + throw new EpanetException(msg); + } + } + + public static String checkWarning( int errcode ) { + if (errcode > 0 && errcode < 7) { + String msg = errors.get(errcode); + return msg; + } + return null; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetException.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetException.java index 17df55af6..c53245ea3 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetException.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetException.java @@ -1,36 +1,36 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -import java.io.IOException; - -public class EpanetException extends IOException{ - /** - * - */ - private static final long serialVersionUID = 1L; - - public EpanetException(String msg) { - super(msg); - } - - public EpanetException(Throwable th) { - super(th); - } +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +import java.io.IOException; + +public class EpanetException extends IOException{ + /** + * + */ + private static final long serialVersionUID = 1L; + + public EpanetException(String msg) { + super(msg); + } + + public EpanetException(Throwable th) { + super(th); + } } \ No newline at end of file diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetFeatureTypes.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetFeatureTypes.java index 8982e3a77..bad096b22 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetFeatureTypes.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetFeatureTypes.java @@ -1,509 +1,509 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -/** - * The attributes for the creation feature. - * - * @author Andrea Antonello (www.hydrologis.com) - * @author Silvia Franceschi (www.hydrologis.com) - */ -@SuppressWarnings("nls") -public class EpanetFeatureTypes { - private static final String PIPES = "pipes"; - private static final String PIPES_SHP = "pipes.shp"; - private static final String PIPES_PRE = "PI"; - private static final String VALVES = "valves"; - private static final String VALVES_SHP = "valves.shp"; - private static final String VALVES_PRE = "V"; - private static final String PUMPS = "pumps"; - private static final String PUMPS_SHP = "pumps.shp"; - private static final String PUMPS_PRE = "PU"; - private static final String RESERVOIRS = "reservoirs"; - private static final String RESERVOIRS_SHP = "reservoirs.shp"; - private static final String RESERVOIRS_PRE = "R"; - private static final String TANKS = "tanks"; - private static final String TANKS_SHP = "tanks.shp"; - private static final String TANKS_PRE = "T"; - private static final String JUNCTIONS = "junctions"; - private static final String JUNCTIONS_SHP = "junctions.shp"; - private static final String JUNCTIONS_PRE = "J"; - - private static final String ID_STR = "id"; - private static final String PATTERN_STR = "pattern_id"; - private static final String EMITTER_COEFFICIENT_STR = "emitt_coef"; - private static final String DEMAND_STR = "demand"; - private static final String ELEVATION_STR = "elev"; - private static final String VOLUME_CURVE_ID_STR = "vol_cur_id"; - private static final String MINIMUM_VOLUME_STR = "min_vol"; - private static final String DIAMETER_STR = "diam"; - private static final String LEAKCOEFF_STR = "leakcoeff"; - private static final String MAXIMUM_WATER_LEVEL_STR = "max_lev"; - private static final String MINIMUM_WATER_LEVEL_STR = "min_lev"; - private static final String INITIAL_WATER_LEVEL_STR = "init_lev"; - private static final String HEAD_ID_STR = "head_id"; - private static final String HEAD_STR = "head"; - private static final String POWER_STR = "power"; - private static final String MINORLOSS_STR = "min_loss"; - private static final String SETTING_STR = "setting"; - private static final String TYPE_STR = "type"; - private static final String LENGTH_STR = "length"; - private static final String STATUS_STR = "status"; - private static final String ROUGHNESS_STR = "rough"; - private static final String STARTNODE_STR = "startnode"; - private static final String ENDNODE_STR = "endnode"; - private static final String SPEED_STR = "speed"; - private static final String PRICE_STR = "price"; - private static final String PRICE_PATTERN_STR = "pri_pat_id"; - private static final String EFFICIENCY_ID_STR = "effic_id"; - private static final String DEPTH_STR = "DEPTH"; - - /** - * The {@link Junctions} attributes and classes. - */ - public static enum Junctions implements IEpanetType { - /** - * Unique id of the junction. - */ - ID(ID_STR, String.class), // - /** - * The elevation of the junction. - */ - ELEVATION(ELEVATION_STR, Double.class), // - /** - * The depth of the junction below the elev value. - */ - DEPTH(DEPTH_STR, Double.class), // - /** - * Base demand flow. - */ - DEMAND(DEMAND_STR, Double.class), // - /** - * Defines junction modeled as emitters (sprinklers or orificies). - */ - EMITTER_COEFFICIENT(EMITTER_COEFFICIENT_STR, Double.class), // - /** - * Demand pattern id. - */ - PATTERN(PATTERN_STR, String.class); - - private Class< ? > clazz; - private String attributeName; - - Junctions( String attributeName, Class< ? > clazz ) { - this.attributeName = attributeName; - this.clazz = clazz; - } - - public Class< ? > getClazz() { - return clazz; - } - - public String getAttributeName() { - return attributeName; - } - - public String getShapefileName() { - return JUNCTIONS_SHP; - } - - public String getName() { - return JUNCTIONS; - } - - public String getPrefix() { - return JUNCTIONS_PRE; - } - } - - /** - * The {@link Tanks} attributes and classes. - */ - public static enum Tanks implements IEpanetType { - /** - * Unique id of the junction. - */ - ID(ID_STR, String.class), // - /** - * The bottom elevation of the tank. - * - *

Water surface elevation = bottom elevation + water level. - */ - BOTTOM_ELEVATION(ELEVATION_STR, Double.class), // - /** - * Initial water level. - */ - INITIAL_WATER_LEVEL(INITIAL_WATER_LEVEL_STR, Double.class), // - /** - * Minimum water level. - */ - MINIMUM_WATER_LEVEL(MINIMUM_WATER_LEVEL_STR, Double.class), // - /** - * Maximum water level. - */ - MAXIMUM_WATER_LEVEL(MAXIMUM_WATER_LEVEL_STR, Double.class), // - /** - * Nominal diameter for cylindrical tanks. - * - *

If a volume curve is supplied, the diameter value - * can be any non zero number. - */ - DIAMETER(DIAMETER_STR, Double.class), // - /** - * Minimum volume. - * - *

Can be 0 for cylindrical tanks or if a - * volume curve is supplied. - */ - MINIMUM_VOLUME(MINIMUM_VOLUME_STR, Double.class), // - /** - * Volume curve id. - */ - VOLUME_CURVE_ID(VOLUME_CURVE_ID_STR, String.class); - - private Class< ? > clazz; - private String attributeName; - - Tanks( String attributeName, Class< ? > clazz ) { - this.attributeName = attributeName; - this.clazz = clazz; - } - - public Class< ? > getClazz() { - return clazz; - } - - public String getAttributeName() { - return attributeName; - } - - public String getShapefileName() { - return TANKS_SHP; - } - - public String getName() { - return TANKS; - } - - public String getPrefix() { - return TANKS_PRE; - } - } - - /** - * The {@link Reservoirs} attributes and classes. - */ - public static enum Reservoirs implements IEpanetType { - /** - * Unique id of the junction. - */ - ID(ID_STR, String.class), // - /** - * The hydraulic head. - * - *

Elevation + Pressure head of water in the reservoir. - */ - HEAD(HEAD_STR, Double.class), // - /** - * Head pattern - * - *

A head pattern can be used to make the reservoir - * head vary with time. - */ - HEAD_PATTERN(PATTERN_STR, String.class); - - private Class< ? > clazz; - private String attributeName; - - Reservoirs( String attributeName, Class< ? > clazz ) { - this.attributeName = attributeName; - this.clazz = clazz; - } - - public Class< ? > getClazz() { - return clazz; - } - - public String getAttributeName() { - return attributeName; - } - - public String getShapefileName() { - return RESERVOIRS_SHP; - } - - public String getName() { - return RESERVOIRS; - } - - public String getPrefix() { - return RESERVOIRS_PRE; - } - } - - /** - * The {@link Pumps} attributes and classes. - */ - public static enum Pumps implements IEpanetType { - /** - * Unique id of the junction. - */ - ID(ID_STR, String.class), // - /** - * Start node. - */ - START_NODE(STARTNODE_STR, String.class), // - /** - * End node. - */ - END_NODE(ENDNODE_STR, String.class), // - /** - * Power value for constant energy pump [KW]. - */ - POWER(POWER_STR, String.class), // - /** - * Id of curve that describes head vs. flow for the pump. - */ - HEAD_ID(HEAD_ID_STR, String.class), // - /** - * Relative speed. - * - *

Normal is 1, 0 means pump is off. - */ - SPEED(SPEED_STR, String.class), // - /** - * Id of time pattern that describes how speed varies with time. - */ - SPEED_PATTERN(PATTERN_STR, String.class), // - /** - * The average cost per KWh. - */ - PRICE(PRICE_STR, Double.class), // - /** - * The id of the time pattern for energy price. - */ - PRICE_PATTERN(PRICE_PATTERN_STR, String.class), // - /** - * The id of the efficiency curve. - */ - EFFICIENCY(EFFICIENCY_ID_STR, String.class); - - private Class< ? > clazz; - private String attributeName; - - Pumps( String attributeName, Class< ? > clazz ) { - this.attributeName = attributeName; - this.clazz = clazz; - } - - public Class< ? > getClazz() { - return clazz; - } - - public String getAttributeName() { - return attributeName; - } - - public String getShapefileName() { - return PUMPS_SHP; - } - - public String getName() { - return PUMPS; - } - - public String getPrefix() { - return PUMPS_PRE; - } - } - - /** - * The {@link Valves} attributes and classes. - */ - public static enum Valves implements IEpanetType { - /** - * Unique id of the junction. - */ - ID(ID_STR, String.class), // - /** - * Start node. - */ - START_NODE(STARTNODE_STR, String.class), // - /** - * End node. - */ - END_NODE(ENDNODE_STR, String.class), // - /** - * Diameter. - */ - DIAMETER(DIAMETER_STR, Double.class), // - /** - * The valve type. - * - *

Can be one of: - *

    - *
  • {@link LinkTypes#EN_PRV}
  • - *
  • {@link LinkTypes#EN_PSV}
  • - *
  • {@link LinkTypes#EN_PBV}
  • - *
  • {@link LinkTypes#EN_FCV}
  • - *
  • {@link LinkTypes#EN_TCV}
  • - *
  • {@link LinkTypes#EN_GPV}
  • - *
- */ - TYPE(TYPE_STR, String.class), // - /** - * The valve setting. - * - *

Can be one of: - *

    - *
  • {@link LinkTypes#EN_PRV#getSetting()}
  • - *
  • {@link LinkTypes#EN_PSV#getSetting()}
  • - *
  • {@link LinkTypes#EN_PBV#getSetting()}
  • - *
  • {@link LinkTypes#EN_FCV#getSetting()}
  • - *
  • {@link LinkTypes#EN_TCV#getSetting()}
  • - *
  • {@link LinkTypes#EN_GPV#getSetting()}
  • - *
- */ - SETTING(SETTING_STR, String.class), // - /** - * Minor loss coefficient. - */ - MINORLOSS(MINORLOSS_STR, Double.class), - /** - * Status. - * - *

Status can be: OPEN, CLOSED. - */ - STATUS(STATUS_STR, String.class); - - private Class< ? > clazz; - private String attributeName; - - Valves( String attributeName, Class< ? > clazz ) { - this.attributeName = attributeName; - this.clazz = clazz; - } - - public Class< ? > getClazz() { - return clazz; - } - - public String getAttributeName() { - return attributeName; - } - - public String getShapefileName() { - return VALVES_SHP; - } - - public String getName() { - return VALVES; - } - - public String getPrefix() { - return VALVES_PRE; - } - } - - /** - * The {@link Pipes} attributes and classes. - */ - public static enum Pipes implements IEpanetType { - /** - * Unique id of the junction. - */ - ID(ID_STR, String.class), // - /** - * Start node. - */ - START_NODE(STARTNODE_STR, String.class), // - /** - * End node. - */ - END_NODE(ENDNODE_STR, String.class), // - /** - * Length. - */ - LENGTH(LENGTH_STR, Double.class), // - /** - * Diameter. - */ - DIAMETER(DIAMETER_STR, Double.class), // - /** - * Roughness coefficient. - */ - ROUGHNESS(ROUGHNESS_STR, Double.class), // - - /** - * Demand. - */ - DEMAND(DEMAND_STR, Double.class), // - - /** - * Id of Pattern. - */ - PATTERN(PATTERN_STR, String.class), // - - /** - * Leak Coefficient. - */ - LEAKCOEFF(LEAKCOEFF_STR, Double.class), // - - /** - * Minor loss coefficient. - */ - MINORLOSS(MINORLOSS_STR, Double.class), // - /** - * Status. - * - *

Status can be: OPEN, CLOSED or CV. - *

Setting status to CV means that the pipe contains a - * check valve restricting flow to one direction. - */ - STATUS(STATUS_STR, String.class); - - private Class< ? > clazz; - private String attributeName; - - Pipes( String attributeName, Class< ? > clazz ) { - this.attributeName = attributeName; - this.clazz = clazz; - } - - public Class< ? > getClazz() { - return clazz; - } - - public String getAttributeName() { - return attributeName; - } - - public String getShapefileName() { - return PIPES_SHP; - } - - public String getName() { - return PIPES; - } - - public String getPrefix() { - return PIPES_PRE; - } - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +/** + * The attributes for the creation feature. + * + * @author Andrea Antonello (www.hydrologis.com) + * @author Silvia Franceschi (www.hydrologis.com) + */ +@SuppressWarnings("nls") +public class EpanetFeatureTypes { + private static final String PIPES = "pipes"; + private static final String PIPES_SHP = "pipes.shp"; + private static final String PIPES_PRE = "PI"; + private static final String VALVES = "valves"; + private static final String VALVES_SHP = "valves.shp"; + private static final String VALVES_PRE = "V"; + private static final String PUMPS = "pumps"; + private static final String PUMPS_SHP = "pumps.shp"; + private static final String PUMPS_PRE = "PU"; + private static final String RESERVOIRS = "reservoirs"; + private static final String RESERVOIRS_SHP = "reservoirs.shp"; + private static final String RESERVOIRS_PRE = "R"; + private static final String TANKS = "tanks"; + private static final String TANKS_SHP = "tanks.shp"; + private static final String TANKS_PRE = "T"; + private static final String JUNCTIONS = "junctions"; + private static final String JUNCTIONS_SHP = "junctions.shp"; + private static final String JUNCTIONS_PRE = "J"; + + private static final String ID_STR = "id"; + private static final String PATTERN_STR = "pattern_id"; + private static final String EMITTER_COEFFICIENT_STR = "emitt_coef"; + private static final String DEMAND_STR = "demand"; + private static final String ELEVATION_STR = "elev"; + private static final String VOLUME_CURVE_ID_STR = "vol_cur_id"; + private static final String MINIMUM_VOLUME_STR = "min_vol"; + private static final String DIAMETER_STR = "diam"; + private static final String LEAKCOEFF_STR = "leakcoeff"; + private static final String MAXIMUM_WATER_LEVEL_STR = "max_lev"; + private static final String MINIMUM_WATER_LEVEL_STR = "min_lev"; + private static final String INITIAL_WATER_LEVEL_STR = "init_lev"; + private static final String HEAD_ID_STR = "head_id"; + private static final String HEAD_STR = "head"; + private static final String POWER_STR = "power"; + private static final String MINORLOSS_STR = "min_loss"; + private static final String SETTING_STR = "setting"; + private static final String TYPE_STR = "type"; + private static final String LENGTH_STR = "length"; + private static final String STATUS_STR = "status"; + private static final String ROUGHNESS_STR = "rough"; + private static final String STARTNODE_STR = "startnode"; + private static final String ENDNODE_STR = "endnode"; + private static final String SPEED_STR = "speed"; + private static final String PRICE_STR = "price"; + private static final String PRICE_PATTERN_STR = "pri_pat_id"; + private static final String EFFICIENCY_ID_STR = "effic_id"; + private static final String DEPTH_STR = "DEPTH"; + + /** + * The {@link Junctions} attributes and classes. + */ + public static enum Junctions implements IEpanetType { + /** + * Unique id of the junction. + */ + ID(ID_STR, String.class), // + /** + * The elevation of the junction. + */ + ELEVATION(ELEVATION_STR, Double.class), // + /** + * The depth of the junction below the elev value. + */ + DEPTH(DEPTH_STR, Double.class), // + /** + * Base demand flow. + */ + DEMAND(DEMAND_STR, Double.class), // + /** + * Defines junction modeled as emitters (sprinklers or orificies). + */ + EMITTER_COEFFICIENT(EMITTER_COEFFICIENT_STR, Double.class), // + /** + * Demand pattern id. + */ + PATTERN(PATTERN_STR, String.class); + + private Class< ? > clazz; + private String attributeName; + + Junctions( String attributeName, Class< ? > clazz ) { + this.attributeName = attributeName; + this.clazz = clazz; + } + + public Class< ? > getClazz() { + return clazz; + } + + public String getAttributeName() { + return attributeName; + } + + public String getShapefileName() { + return JUNCTIONS_SHP; + } + + public String getName() { + return JUNCTIONS; + } + + public String getPrefix() { + return JUNCTIONS_PRE; + } + } + + /** + * The {@link Tanks} attributes and classes. + */ + public static enum Tanks implements IEpanetType { + /** + * Unique id of the junction. + */ + ID(ID_STR, String.class), // + /** + * The bottom elevation of the tank. + * + *

Water surface elevation = bottom elevation + water level. + */ + BOTTOM_ELEVATION(ELEVATION_STR, Double.class), // + /** + * Initial water level. + */ + INITIAL_WATER_LEVEL(INITIAL_WATER_LEVEL_STR, Double.class), // + /** + * Minimum water level. + */ + MINIMUM_WATER_LEVEL(MINIMUM_WATER_LEVEL_STR, Double.class), // + /** + * Maximum water level. + */ + MAXIMUM_WATER_LEVEL(MAXIMUM_WATER_LEVEL_STR, Double.class), // + /** + * Nominal diameter for cylindrical tanks. + * + *

If a volume curve is supplied, the diameter value + * can be any non zero number. + */ + DIAMETER(DIAMETER_STR, Double.class), // + /** + * Minimum volume. + * + *

Can be 0 for cylindrical tanks or if a + * volume curve is supplied. + */ + MINIMUM_VOLUME(MINIMUM_VOLUME_STR, Double.class), // + /** + * Volume curve id. + */ + VOLUME_CURVE_ID(VOLUME_CURVE_ID_STR, String.class); + + private Class< ? > clazz; + private String attributeName; + + Tanks( String attributeName, Class< ? > clazz ) { + this.attributeName = attributeName; + this.clazz = clazz; + } + + public Class< ? > getClazz() { + return clazz; + } + + public String getAttributeName() { + return attributeName; + } + + public String getShapefileName() { + return TANKS_SHP; + } + + public String getName() { + return TANKS; + } + + public String getPrefix() { + return TANKS_PRE; + } + } + + /** + * The {@link Reservoirs} attributes and classes. + */ + public static enum Reservoirs implements IEpanetType { + /** + * Unique id of the junction. + */ + ID(ID_STR, String.class), // + /** + * The hydraulic head. + * + *

Elevation + Pressure head of water in the reservoir. + */ + HEAD(HEAD_STR, Double.class), // + /** + * Head pattern + * + *

A head pattern can be used to make the reservoir + * head vary with time. + */ + HEAD_PATTERN(PATTERN_STR, String.class); + + private Class< ? > clazz; + private String attributeName; + + Reservoirs( String attributeName, Class< ? > clazz ) { + this.attributeName = attributeName; + this.clazz = clazz; + } + + public Class< ? > getClazz() { + return clazz; + } + + public String getAttributeName() { + return attributeName; + } + + public String getShapefileName() { + return RESERVOIRS_SHP; + } + + public String getName() { + return RESERVOIRS; + } + + public String getPrefix() { + return RESERVOIRS_PRE; + } + } + + /** + * The {@link Pumps} attributes and classes. + */ + public static enum Pumps implements IEpanetType { + /** + * Unique id of the junction. + */ + ID(ID_STR, String.class), // + /** + * Start node. + */ + START_NODE(STARTNODE_STR, String.class), // + /** + * End node. + */ + END_NODE(ENDNODE_STR, String.class), // + /** + * Power value for constant energy pump [KW]. + */ + POWER(POWER_STR, String.class), // + /** + * Id of curve that describes head vs. flow for the pump. + */ + HEAD_ID(HEAD_ID_STR, String.class), // + /** + * Relative speed. + * + *

Normal is 1, 0 means pump is off. + */ + SPEED(SPEED_STR, String.class), // + /** + * Id of time pattern that describes how speed varies with time. + */ + SPEED_PATTERN(PATTERN_STR, String.class), // + /** + * The average cost per KWh. + */ + PRICE(PRICE_STR, Double.class), // + /** + * The id of the time pattern for energy price. + */ + PRICE_PATTERN(PRICE_PATTERN_STR, String.class), // + /** + * The id of the efficiency curve. + */ + EFFICIENCY(EFFICIENCY_ID_STR, String.class); + + private Class< ? > clazz; + private String attributeName; + + Pumps( String attributeName, Class< ? > clazz ) { + this.attributeName = attributeName; + this.clazz = clazz; + } + + public Class< ? > getClazz() { + return clazz; + } + + public String getAttributeName() { + return attributeName; + } + + public String getShapefileName() { + return PUMPS_SHP; + } + + public String getName() { + return PUMPS; + } + + public String getPrefix() { + return PUMPS_PRE; + } + } + + /** + * The {@link Valves} attributes and classes. + */ + public static enum Valves implements IEpanetType { + /** + * Unique id of the junction. + */ + ID(ID_STR, String.class), // + /** + * Start node. + */ + START_NODE(STARTNODE_STR, String.class), // + /** + * End node. + */ + END_NODE(ENDNODE_STR, String.class), // + /** + * Diameter. + */ + DIAMETER(DIAMETER_STR, Double.class), // + /** + * The valve type. + * + *

Can be one of: + *

    + *
  • {@link LinkTypes#EN_PRV}
  • + *
  • {@link LinkTypes#EN_PSV}
  • + *
  • {@link LinkTypes#EN_PBV}
  • + *
  • {@link LinkTypes#EN_FCV}
  • + *
  • {@link LinkTypes#EN_TCV}
  • + *
  • {@link LinkTypes#EN_GPV}
  • + *
+ */ + TYPE(TYPE_STR, String.class), // + /** + * The valve setting. + * + *

Can be one of: + *

    + *
  • {@link LinkTypes#EN_PRV#getSetting()}
  • + *
  • {@link LinkTypes#EN_PSV#getSetting()}
  • + *
  • {@link LinkTypes#EN_PBV#getSetting()}
  • + *
  • {@link LinkTypes#EN_FCV#getSetting()}
  • + *
  • {@link LinkTypes#EN_TCV#getSetting()}
  • + *
  • {@link LinkTypes#EN_GPV#getSetting()}
  • + *
+ */ + SETTING(SETTING_STR, String.class), // + /** + * Minor loss coefficient. + */ + MINORLOSS(MINORLOSS_STR, Double.class), + /** + * Status. + * + *

Status can be: OPEN, CLOSED. + */ + STATUS(STATUS_STR, String.class); + + private Class< ? > clazz; + private String attributeName; + + Valves( String attributeName, Class< ? > clazz ) { + this.attributeName = attributeName; + this.clazz = clazz; + } + + public Class< ? > getClazz() { + return clazz; + } + + public String getAttributeName() { + return attributeName; + } + + public String getShapefileName() { + return VALVES_SHP; + } + + public String getName() { + return VALVES; + } + + public String getPrefix() { + return VALVES_PRE; + } + } + + /** + * The {@link Pipes} attributes and classes. + */ + public static enum Pipes implements IEpanetType { + /** + * Unique id of the junction. + */ + ID(ID_STR, String.class), // + /** + * Start node. + */ + START_NODE(STARTNODE_STR, String.class), // + /** + * End node. + */ + END_NODE(ENDNODE_STR, String.class), // + /** + * Length. + */ + LENGTH(LENGTH_STR, Double.class), // + /** + * Diameter. + */ + DIAMETER(DIAMETER_STR, Double.class), // + /** + * Roughness coefficient. + */ + ROUGHNESS(ROUGHNESS_STR, Double.class), // + + /** + * Demand. + */ + DEMAND(DEMAND_STR, Double.class), // + + /** + * Id of Pattern. + */ + PATTERN(PATTERN_STR, String.class), // + + /** + * Leak Coefficient. + */ + LEAKCOEFF(LEAKCOEFF_STR, Double.class), // + + /** + * Minor loss coefficient. + */ + MINORLOSS(MINORLOSS_STR, Double.class), // + /** + * Status. + * + *

Status can be: OPEN, CLOSED or CV. + *

Setting status to CV means that the pipe contains a + * check valve restricting flow to one direction. + */ + STATUS(STATUS_STR, String.class); + + private Class< ? > clazz; + private String attributeName; + + Pipes( String attributeName, Class< ? > clazz ) { + this.attributeName = attributeName; + this.clazz = clazz; + } + + public Class< ? > getClazz() { + return clazz; + } + + public String getAttributeName() { + return attributeName; + } + + public String getShapefileName() { + return PIPES_SHP; + } + + public String getName() { + return PIPES; + } + + public String getPrefix() { + return PIPES_PRE; + } + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetNativeFunctions.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetNativeFunctions.java index 25f55aabb..a4d4c870b 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetNativeFunctions.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetNativeFunctions.java @@ -1,188 +1,188 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; -import java.nio.ByteBuffer; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; - -import com.sun.jna.Library; - -public interface EpanetNativeFunctions extends Library { - public static final int EN_AVERAGE = 1; - public static final int EN_HEADLOSS = 10; - public static final int EN_TANK = 2; - public static final int EN_TRACE = 3; - public static final int EN_MINORLOSS = 3; - public static final int EN_CONCEN = 0; - public static final int EN_PBV = 5; - public static final int EN_SOURCEMASS = 13; - public static final int EN_PSV = 4; - public static final int EN_CURVECOUNT = 4; - public static final int EN_AFD = 4; - public static final int EN_TANKDIAM = 17; - public static final int EN_EMITTER = 3; - public static final int EN_INITQUAL = 4; - public static final int EN_KWALL = 7; - public static final int EN_DURATION = 0; - public static final int EN_CHEM = 1; - public static final int EN_TIMEOFDAY = 3; - public static final int EN_MGD = 2; - public static final int EN_CVPIPE = 0; - public static final int EN_IMGD = 3; - public static final int EN_PERIODS = 9; - public static final int EN_REPORTSTEP = 5; - public static final int EN_SETPOINT = 2; - public static final int EN_MIX2 = 1; - public static final int EN_FIFO = 2; - public static final int EN_AGE = 2; - public static final int EN_MIX1 = 0; - public static final int EN_SETTING = 12; - public static final int EN_PATTERNSTEP = 3; - public static final int EN_MINIMUM = 2; - public static final int EN_PATCOUNT = 3; - public static final int EN_TIMER = 2; - public static final int EN_MINLEVEL = 20; - public static final int EN_NONE = 0; - public static final int EN_LOWLEVEL = 0; - public static final int EN_PATTERN = 2; - public static final int EN_RULESTEP = 7; - public static final int EN_TANKCOUNT = 1; - public static final int EN_TOLERANCE = 2; - public static final int EN_LENGTH = 1; - public static final int EN_FCV = 6; - public static final int EN_RESERVOIR = 1; - public static final int EN_DEMAND = 9; - public static final int EN_MIXMODEL = 15; - public static final int EN_HEAD = 10; - public static final int EN_GPV = 8; - public static final int EN_DEMANDMULT = 4; - public static final int EN_TRIALS = 0; - public static final int EN_ACCURACY = 1; - public static final int EN_GPM = 1; - public static final int EN_NODECOUNT = 0; - public static final int EN_FLOWPACED = 3; - public static final int EN_MLD = 7; - public static final int EN_ELEVATION = 0; - public static final int EN_JUNCTION = 0; - public static final int EN_PUMP = 2; - public static final int EN_LIFO = 3; - public static final int EN_TANKLEVEL = 8; - public static final int EN_INITFLOW = 10; - public static final int EN_STATUS = 11; - public static final int EN_BASEDEMAND = 1; - public static final int EN_SAVE = 1; - public static final int EN_LPM = 6; - public static final int EN_MAXLEVEL = 21; - public static final int EN_PRESSURE = 11; - public static final int EN_SOURCETYPE = 7; - public static final int EN_SOURCEPAT = 6; - public static final int EN_LPS = 5; - public static final int EN_CONTROLCOUNT = 5; - public static final int EN_SOURCEQUAL = 5; - public static final int EN_INITVOLUME = 14; - public static final int EN_QUALITY = 12; - public static final int EN_MAXIMUM = 3; - public static final int EN_TANK_KBULK = 23; - public static final int EN_VELOCITY = 9; - public static final int EN_CFS = 0; - public static final int EN_LINKCOUNT = 2; - public static final int EN_NOSAVE = 0; - public static final int EN_EMITEXPON = 3; - public static final int EN_REPORTSTART = 6; - public static final int EN_TCV = 7; - public static final int EN_MASS = 1; - public static final int EN_MINVOLUME = 18; - public static final int EN_HILEVEL = 1; - public static final int EN_FLOW = 8; - public static final int EN_INITSETTING = 5; - public static final int EN_DIAMETER = 0; - public static final int EN_STATISTIC = 8; - public static final int EN_QUALSTEP = 2; - public static final int EN_ROUGHNESS = 2; - public static final int EN_VOLCURVE = 19; - public static final int EN_ENERGY = 13; - public static final int EN_INITSTATUS = 4; - public static final int EN_PATTERNSTART = 4; - public static final int EN_PIPE = 1; - public static final int EN_MIXFRACTION = 22; - public static final int EN_KBULK = 6; - public static final int EN_CMD = 9; - public static final int EN_CMH = 8; - public static final int EN_PRV = 3; - public static final int EN_HYDSTEP = 1; - public static final int EN_RANGE = 4; - public static final int EN_MIXZONEVOL = 16; - - int ENopen( String charPtr1, String charPtr2, String charPtr3 ); - int ENsaveinpfile( String charPtr1 ); - int ENclose(); - int ENsolveH(); - int ENsaveH(); - int ENopenH(); - int ENinitH( int int1 ); - int ENrunH( long[] lPtr1 ); - int ENnextH( long[] lPtr1 ); - int ENcloseH(); - int ENsavehydfile( String charPtr1 ); - int ENusehydfile( String charPtr1 ); - int ENsolveQ(); - int ENopenQ(); - int ENinitQ( int int1 ); - int ENrunQ( Long lPtr1 ); - int ENnextQ( Long lPtr1 ); - int ENstepQ( Long lPtr1 ); - int ENcloseQ(); - int ENwriteline( ByteBuffer charPtr1 ); - int ENreport(); - int ENresetreport(); - int ENsetreport( String charPtr1 ); - int ENgetcontrol( int int1, IntBuffer intPtr1, IntBuffer intPtr2, FloatBuffer floatPtr1, IntBuffer intPtr3, - FloatBuffer floatPtr2 ); - int ENgetcount( int countcode, int[] count ); - int ENgetoption( int int1, float[] floatPtr1 ); - int ENgettimeparam( int int1, long[] lPtr1 ); - int ENgetflowunits( IntBuffer intPtr1 ); - int ENgetpatternindex( String charPtr1, int[] intPtr1 ); - int ENgetpatternid( int int1, ByteBuffer charPtr1 ); - int ENgetpatternlen( int int1, int[] intPtr1 ); - int ENgetpatternvalue( int int1, int int2, float[] floatPtr1 ); - int ENgetqualtype( IntBuffer intPtr1, IntBuffer intPtr2 ); - int ENgeterror( int int1, ByteBuffer charPtr1, int int2 ); - int ENgetnodeindex( String charPtr1, int[] intPtr1 ); - int ENgetnodeid( int int1, ByteBuffer charPtr1 ); - int ENgetnodetype( int int1, int[] intPtr1 ); - int ENgetnodevalue( int int1, int int2, float[] floatPtr1 ); - int ENgetlinkindex( String charPtr1, int[] intPtr1 ); - int ENgetlinkid( int int1, ByteBuffer charPtr1 ); - int ENgetlinktype( int index, int[] typecode ); - int ENgetlinknodes( int int1, int[] intPtr1, int[] intPtr2 ); - // int ENgetlinknodes(int int1, IntBuffer intPtr1, IntBuffer intPtr2); - int ENgetlinkvalue( int index, int paramcode, float[] value ); - int ENgetversion( int[] version ); - int ENsetcontrol( int int1, int int2, int int3, float float1, int int4, float float2 ); - int ENsetnodevalue( int int1, int int2, float float1 ); - int ENsetlinkvalue( int int1, int int2, float float1 ); - int ENaddpattern( String charPtr1 ); - int ENsetpattern( int int1, FloatBuffer floatPtr1, int int2 ); - int ENsetpatternvalue( int int1, int int2, float float1 ); - int ENsettimeparam( int int1, Long l1 ); - int ENsetoption( int int1, float float1 ); - int ENsetstatusreport( int int1 ); - int ENsetqualtype( int int1, ByteBuffer charPtr1, ByteBuffer charPtr2, ByteBuffer charPtr3 ); -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; +import java.nio.ByteBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; + +import com.sun.jna.Library; + +public interface EpanetNativeFunctions extends Library { + public static final int EN_AVERAGE = 1; + public static final int EN_HEADLOSS = 10; + public static final int EN_TANK = 2; + public static final int EN_TRACE = 3; + public static final int EN_MINORLOSS = 3; + public static final int EN_CONCEN = 0; + public static final int EN_PBV = 5; + public static final int EN_SOURCEMASS = 13; + public static final int EN_PSV = 4; + public static final int EN_CURVECOUNT = 4; + public static final int EN_AFD = 4; + public static final int EN_TANKDIAM = 17; + public static final int EN_EMITTER = 3; + public static final int EN_INITQUAL = 4; + public static final int EN_KWALL = 7; + public static final int EN_DURATION = 0; + public static final int EN_CHEM = 1; + public static final int EN_TIMEOFDAY = 3; + public static final int EN_MGD = 2; + public static final int EN_CVPIPE = 0; + public static final int EN_IMGD = 3; + public static final int EN_PERIODS = 9; + public static final int EN_REPORTSTEP = 5; + public static final int EN_SETPOINT = 2; + public static final int EN_MIX2 = 1; + public static final int EN_FIFO = 2; + public static final int EN_AGE = 2; + public static final int EN_MIX1 = 0; + public static final int EN_SETTING = 12; + public static final int EN_PATTERNSTEP = 3; + public static final int EN_MINIMUM = 2; + public static final int EN_PATCOUNT = 3; + public static final int EN_TIMER = 2; + public static final int EN_MINLEVEL = 20; + public static final int EN_NONE = 0; + public static final int EN_LOWLEVEL = 0; + public static final int EN_PATTERN = 2; + public static final int EN_RULESTEP = 7; + public static final int EN_TANKCOUNT = 1; + public static final int EN_TOLERANCE = 2; + public static final int EN_LENGTH = 1; + public static final int EN_FCV = 6; + public static final int EN_RESERVOIR = 1; + public static final int EN_DEMAND = 9; + public static final int EN_MIXMODEL = 15; + public static final int EN_HEAD = 10; + public static final int EN_GPV = 8; + public static final int EN_DEMANDMULT = 4; + public static final int EN_TRIALS = 0; + public static final int EN_ACCURACY = 1; + public static final int EN_GPM = 1; + public static final int EN_NODECOUNT = 0; + public static final int EN_FLOWPACED = 3; + public static final int EN_MLD = 7; + public static final int EN_ELEVATION = 0; + public static final int EN_JUNCTION = 0; + public static final int EN_PUMP = 2; + public static final int EN_LIFO = 3; + public static final int EN_TANKLEVEL = 8; + public static final int EN_INITFLOW = 10; + public static final int EN_STATUS = 11; + public static final int EN_BASEDEMAND = 1; + public static final int EN_SAVE = 1; + public static final int EN_LPM = 6; + public static final int EN_MAXLEVEL = 21; + public static final int EN_PRESSURE = 11; + public static final int EN_SOURCETYPE = 7; + public static final int EN_SOURCEPAT = 6; + public static final int EN_LPS = 5; + public static final int EN_CONTROLCOUNT = 5; + public static final int EN_SOURCEQUAL = 5; + public static final int EN_INITVOLUME = 14; + public static final int EN_QUALITY = 12; + public static final int EN_MAXIMUM = 3; + public static final int EN_TANK_KBULK = 23; + public static final int EN_VELOCITY = 9; + public static final int EN_CFS = 0; + public static final int EN_LINKCOUNT = 2; + public static final int EN_NOSAVE = 0; + public static final int EN_EMITEXPON = 3; + public static final int EN_REPORTSTART = 6; + public static final int EN_TCV = 7; + public static final int EN_MASS = 1; + public static final int EN_MINVOLUME = 18; + public static final int EN_HILEVEL = 1; + public static final int EN_FLOW = 8; + public static final int EN_INITSETTING = 5; + public static final int EN_DIAMETER = 0; + public static final int EN_STATISTIC = 8; + public static final int EN_QUALSTEP = 2; + public static final int EN_ROUGHNESS = 2; + public static final int EN_VOLCURVE = 19; + public static final int EN_ENERGY = 13; + public static final int EN_INITSTATUS = 4; + public static final int EN_PATTERNSTART = 4; + public static final int EN_PIPE = 1; + public static final int EN_MIXFRACTION = 22; + public static final int EN_KBULK = 6; + public static final int EN_CMD = 9; + public static final int EN_CMH = 8; + public static final int EN_PRV = 3; + public static final int EN_HYDSTEP = 1; + public static final int EN_RANGE = 4; + public static final int EN_MIXZONEVOL = 16; + + int ENopen( String charPtr1, String charPtr2, String charPtr3 ); + int ENsaveinpfile( String charPtr1 ); + int ENclose(); + int ENsolveH(); + int ENsaveH(); + int ENopenH(); + int ENinitH( int int1 ); + int ENrunH( long[] lPtr1 ); + int ENnextH( long[] lPtr1 ); + int ENcloseH(); + int ENsavehydfile( String charPtr1 ); + int ENusehydfile( String charPtr1 ); + int ENsolveQ(); + int ENopenQ(); + int ENinitQ( int int1 ); + int ENrunQ( Long lPtr1 ); + int ENnextQ( Long lPtr1 ); + int ENstepQ( Long lPtr1 ); + int ENcloseQ(); + int ENwriteline( ByteBuffer charPtr1 ); + int ENreport(); + int ENresetreport(); + int ENsetreport( String charPtr1 ); + int ENgetcontrol( int int1, IntBuffer intPtr1, IntBuffer intPtr2, FloatBuffer floatPtr1, IntBuffer intPtr3, + FloatBuffer floatPtr2 ); + int ENgetcount( int countcode, int[] count ); + int ENgetoption( int int1, float[] floatPtr1 ); + int ENgettimeparam( int int1, long[] lPtr1 ); + int ENgetflowunits( IntBuffer intPtr1 ); + int ENgetpatternindex( String charPtr1, int[] intPtr1 ); + int ENgetpatternid( int int1, ByteBuffer charPtr1 ); + int ENgetpatternlen( int int1, int[] intPtr1 ); + int ENgetpatternvalue( int int1, int int2, float[] floatPtr1 ); + int ENgetqualtype( IntBuffer intPtr1, IntBuffer intPtr2 ); + int ENgeterror( int int1, ByteBuffer charPtr1, int int2 ); + int ENgetnodeindex( String charPtr1, int[] intPtr1 ); + int ENgetnodeid( int int1, ByteBuffer charPtr1 ); + int ENgetnodetype( int int1, int[] intPtr1 ); + int ENgetnodevalue( int int1, int int2, float[] floatPtr1 ); + int ENgetlinkindex( String charPtr1, int[] intPtr1 ); + int ENgetlinkid( int int1, ByteBuffer charPtr1 ); + int ENgetlinktype( int index, int[] typecode ); + int ENgetlinknodes( int int1, int[] intPtr1, int[] intPtr2 ); + // int ENgetlinknodes(int int1, IntBuffer intPtr1, IntBuffer intPtr2); + int ENgetlinkvalue( int index, int paramcode, float[] value ); + int ENgetversion( int[] version ); + int ENsetcontrol( int int1, int int2, int int3, float float1, int int4, float float2 ); + int ENsetnodevalue( int int1, int int2, float float1 ); + int ENsetlinkvalue( int int1, int int2, float float1 ); + int ENaddpattern( String charPtr1 ); + int ENsetpattern( int int1, FloatBuffer floatPtr1, int int2 ); + int ENsetpatternvalue( int int1, int int2, float float1 ); + int ENsettimeparam( int int1, Long l1 ); + int ENsetoption( int int1, float float1 ); + int ENsetstatusreport( int int1 ); + int ENsetqualtype( int int1, ByteBuffer charPtr1, ByteBuffer charPtr2, ByteBuffer charPtr3 ); +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetWrapper.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetWrapper.java index f87e18ab6..3c946b9e6 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetWrapper.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/EpanetWrapper.java @@ -1,716 +1,716 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; - -import com.sun.jna.Native; -import com.sun.jna.NativeLibrary; - -/** - * A wrapper for epanet functions. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class EpanetWrapper { - - private static EpanetNativeFunctions epanet; - - /** - * A warning message related to the last method called. - */ - private String warningMessage = null; - - /** - * Contructor for the {@link EpanetWrapper}. - * - *

This also takes care to load the native library, if needed. - * - * @param lib the name of the library (ex. "epanet2_64bit"). - * @param nativeLibPath the path in which to search the native library. - * If the native library is already in the java library path - * this is not needed and may be null - * @throws Exception if the library could not be loaded. - */ - public EpanetWrapper( String lib, String nativeLibPath ) throws Exception { - if (epanet == null) { - try { - if (nativeLibPath != null) - NativeLibrary.addSearchPath(lib, nativeLibPath); - epanet = (EpanetNativeFunctions) Native.loadLibrary(lib, EpanetNativeFunctions.class); - } catch (Exception e) { - throw new Exception("An error occurred while trying to load the epanet library.", e); - } - } - } - - /** - * Get the reference to the jna native epanet instance. - * - * @return the Epanet native reference. - */ - public static EpanetNativeFunctions getEpanet() { - return epanet; - } - - /** - * Opens the Toolkit to analyze a particular distribution system. - * - * @param input name of an EPANET Input file. - * @param report name of an output Report file. - * @param outputBin name of an optional binary Output file. - * @throws IOException - */ - public void ENopen( String input, String report, String outputBin ) throws EpanetException { - int errcode = epanet.ENopen(input, report, outputBin); - checkError(errcode); - } - - /** - * Closes down the Toolkit system (including all files being processed). - * - *

ENclose must be called when all processing has been completed, - * even if an error condition was encountered. - * @throws EpanetException - */ - public void ENclose() throws EpanetException { - int errcode = epanet.ENclose(); - checkError(errcode); - } - - /** - * Writes all current network input data to - * a file using the format of an EPANET input file. - * - * @param fileName name of the file where data is saved. - * @throws EpanetException - */ - public void ENsaveinpfile( String fileName ) throws EpanetException { - int err = epanet.ENsaveinpfile(fileName); - checkError(err); - } - - /** - * Runs a complete hydraulic simulation with results for all time periods written to the binary Hydraulics file. - * - * @throws EpanetException - */ - public void ENsolveH() throws EpanetException { - int err = epanet.ENsolveH(); - checkError(err); - } - - /** - * Transfers results of a hydraulic simulation from the binary Hydraulics file to the - * binary Output file, where results are only reported at uniform reporting intervals. - * - * @throws EpanetException - */ - public void ENsaveH() throws EpanetException { - int err = epanet.ENsaveH(); - checkError(err); - } - - /** - * Opens the hydraulics analysis system. - * - *

Call ENopenH prior to running the first hydraulic analysis - * using the ENinitH - ENrunH - ENnextH sequence. Multiple analyses - * can be made before calling ENcloseH to close the hydraulic - * analysis system. - * - *

Do not call this function if ENsolveH is being used to run a - * complete hydraulic analysis. - * - * @throws EpanetException - */ - public void ENopenH() throws EpanetException { - int err = epanet.ENopenH(); - checkError(err); - } - - /** - * Initializes storage tank levels, link status and settings, and - * the simulation clock time prior to running a hydraulic analysis. - * - * @param saveflag 0-1 flag indicating if hydraulic results will be - * saved to the hydraulics file. - * @throws EpanetException - */ - public void ENinitH( int saveflag ) throws EpanetException { - int err = epanet.ENinitH(saveflag); - checkError(err); - } - - /** - * Runs a single period hydraulic analysis, retrieving - * the current simulation clock time. - * - *

Use {@link #ENrunH(long[])} along with {@link #ENnextH(long[])} - * in a do..while loop to - * analyze hydraulics in each period of an extended period simulation. - * This process automatically updates the simulation clock time so - * treat t as a read-only variable. - * - *

{@link #ENinitH(int)} must have been called prior to running the - * ENrunH - ENnextH loop. - * - * @param time current simulation clock time in seconds. This value - * is updated by the method. - * @throws EpanetException - */ - public void ENrunH( long[] time ) throws EpanetException { - int err = epanet.ENrunH(time); - checkError(err); - } - - /** - * Determines the length of time until the next hydraulic event occurs in - * an extended period simulation. - * - * @param timeStep time (in seconds) until next hydraulic event occurs or 0 - * if at the end of the simulation period. - * @throws EpanetException - */ - public void ENnextH( long[] timeStep ) throws EpanetException { - int err = epanet.ENnextH(timeStep); - checkError(err); - } - - /** - * Closes the hydraulic analysis system, freeing all allocated memory. - * - *

Call {@link #ENcloseH()} after all hydraulics analyses have been made - * using {@link #ENinitH(int)} - {@link #ENrunH(long[])} - {@link #ENnextH(long[])}. - * Do not call this function if ENsolveH is being used. - * - * @throws EpanetException - */ - public void ENcloseH() throws EpanetException { - int err = epanet.ENcloseH(); - checkError(err); - } - - /** - * Saves the current contents of the binary hydraulics file to a file. - * - * @param filePath name of the file where the hydraulics results should be saved. - * @throws EpanetException - */ - public void ENsavehydfile( String filePath ) throws EpanetException { - int err = epanet.ENsavehydfile(filePath); - checkError(err); - } - - /** - * Uses the contents of the specified file as the current binary hydraulics file. - * - * @param filePath name of the file containing hydraulic analysis results for the current network. - * @throws EpanetException - */ - public void ENusehydfile( String filePath ) throws EpanetException { - int err = epanet.ENsavehydfile(filePath); - checkError(err); - } - - /** - * @deprecated not implemented yet. - */ - public int ENsolveQ() { - return -1; - } - /** - * @deprecated not implemented yet. - */ - public int ENopenQ() { - return -1; - } - /** - * @deprecated not implemented yet. - */ - public int ENinitQ( int int1 ) { - return -1; - } - /** - * @deprecated not implemented yet. - */ - public int ENrunQ( Long lPtr1 ) { - return -1; - } - /** - * @deprecated not implemented yet. - */ - public int ENnextQ( Long lPtr1 ) { - return -1; - } - /** - * @deprecated not implemented yet. - */ - public int ENstepQ( Long lPtr1 ) { - return -1; - } - /** - * @deprecated not implemented yet. - */ - public int ENcloseQ() { - return -1; - } - /** - * @deprecated not implemented yet. - */ - public int ENwriteline( ByteBuffer charPtr1 ) { - return -1; - } - - /** - * Writes a formatted text report on simulation results to the Report file. - * @throws EpanetException - */ - public void ENreport() throws EpanetException { - int err = epanet.ENreport(); - checkError(err); - } - - /** - * Clears any report formatting commands that either appeared in the - * [REPORT] section of the EPANET Input file or were issued with the - * ENsetreport function - * - * @throws EpanetException - */ - public void ENresetreport() throws EpanetException { - int err = epanet.ENresetreport(); - checkError(err); - } - - /** - * Issues a report formatting command. Formatting commands are the - * same as used in the [REPORT] section of the EPANET Input file. - * - * @param command text of a report formatting command. - * @throws EpanetException - */ - public void ENsetreport( String command ) throws EpanetException { - int err = epanet.ENsetreport(command); - checkError(err); - } - - /** - * @deprecated not implemented yet - */ - public int ENgetcontrol( int int1, IntBuffer intPtr1, IntBuffer intPtr2, FloatBuffer floatPtr1, IntBuffer intPtr3, - FloatBuffer floatPtr2 ) { - return -1; - } - - /** - * Retrieves the number of network components of a specified type. - * - * @param countcode {@link Components} code . - * @return number of countcode components in the network. - * @throws EpanetException - */ - public int ENgetcount( Components countcode ) throws EpanetException { - int[] count = new int[1]; - int error = epanet.ENgetcount(countcode.getCode(), count); - checkError(error); - return count[0]; - } - - /** - * Retrieves the value of a particular analysis option. - * - * @param optionCode The {@link OptionParameterCodes}. - * @throws EpanetException - */ - public float ENgetoption( OptionParameterCodes optionCode ) throws EpanetException { - float[] optionValue = new float[1]; - int error = epanet.ENgetoption(optionCode.getCode(), optionValue); - checkError(error); - return optionValue[0]; - } - - /** - * Retrieves the value of a specific analysis time parameter. - * - * @param timeParameterCode time parameter code. - * @return value of time parameter in seconds. - * @throws EpanetException - */ - public long ENgettimeparam( TimeParameterCodes timeParameterCode ) throws EpanetException { - long[] timeValue = new long[1]; - int error = epanet.ENgettimeparam(timeParameterCode.getCode(), timeValue); - checkError(error); - return timeValue[0]; - } - /** - * @deprecated not yet implemented. - */ - public int ENgetflowunits( IntBuffer intPtr1 ) { - return -1; - } - - /** - * Retrieves the index of a particular time pattern. - * - * @param id pattern ID label. - * @return the pattern index. - * @throws EpanetException - */ - public int ENgetpatternindex( String id ) throws EpanetException { - int[] index = new int[1]; - int error = epanet.ENgetpatternindex(id, index); - checkError(error); - return index[0]; - } - - /** - * Retrieves the ID label of a particular time pattern. - * - * @param index pattern index. - * @return the id label. - * @throws EpanetException - */ - public String ENgetpatternid( int index ) throws EpanetException { - ByteBuffer bb = ByteBuffer.allocate(64); - int errcode = epanet.ENgetpatternid(index, bb); - checkError(errcode); - - String label = byteBuffer2String(bb); - return label; - } - - /** - * @deprecated not yet implemented. - */ - public int ENgetpatternlen( int int1, IntBuffer intPtr1 ) { - return -1; - } - - /** - * Retrieves the multiplier factor for a specific time period in a time pattern. - * - * @param index time pattern index. - * @param period period within time pattern. - * @return multiplier factor for the period. - * @throws EpanetException - */ - public float ENgetpatternvalue( int index, int period ) throws EpanetException { - float[] value = new float[1]; - int errcode = epanet.ENgetpatternvalue(index, period, value); - checkError(errcode); - - return value[0]; - } - /** - * @deprecated not yet implemented. - */ - public int ENgetqualtype( IntBuffer intPtr1, IntBuffer intPtr2 ) { - return -1; - } - /** - * @deprecated not yet implemented. - */ - public int ENgeterror( int int1, ByteBuffer charPtr1, int int2 ) { - return -1; - } - - /** - * Retrieves the index of a node with a specified ID. - * - * @param id the node id. - * @return the node index. - * @throws EpanetException - */ - public int ENgetnodeindex( String id ) throws EpanetException { - int[] index = new int[1]; - int error = epanet.ENgetnodeindex(id, index); - checkError(error); - return index[0]; - } - - /** - * Retrieves the ID label of a node with a specified index. - * - * @param index the node index. - * @return the node id. - * @throws EpanetException - */ - public String ENgetnodeid( int index ) throws EpanetException { - ByteBuffer bb = ByteBuffer.allocate(64); - int errcode = epanet.ENgetnodeid(index, bb); - checkError(errcode); - - String label; - label = byteBuffer2String(bb); - return label; - } - - /** - * Retrieves the node-type code for a specific node. - * - * @param index the node index. - * @return the {@link NodeTypes}; - * @throws EpanetException - */ - public NodeTypes ENgetnodetype( int index ) throws EpanetException { - int[] typecode = new int[1]; - int error = epanet.ENgetnodetype(index, typecode); - checkError(error); - - NodeTypes type = NodeTypes.forCode(typecode[0]); - return type; - } - - /** - * Retrieves the value of a specific link (node?) parameter. - * - * @param index the node index. - * @param code the parameter code. - * @return the value at the node. - * @throws EpanetException - */ - public float ENgetnodevalue( int index, NodeParameters code ) throws EpanetException { - float[] nodeValue = new float[1]; - int error = epanet.ENgetnodevalue(index, code.getCode(), nodeValue); - checkError(error); - return nodeValue[0]; - } - - /** - * Retrieves the index of a link with a specified ID. - * - *

Link indexes are consecutive integers starting from 1. - * - * @param id link ID label. - * @return the link index. - * @throws EpanetException - */ - public int ENgetlinkindex( String id ) throws EpanetException { - int[] index = new int[1]; - int error = epanet.ENgetlinkindex(id, index); - checkError(error); - return index[0]; - } - - /** - * Retrieves the ID label of a link with a specified index. - * - * @param index link index. - * @return the link label. - * @throws EpanetException - */ - public String ENgetlinkid( int index ) throws EpanetException { - ByteBuffer bb = ByteBuffer.allocate(64); - int errcode = epanet.ENgetlinkid(index, bb); - checkError(errcode); - - String label; - label = byteBuffer2String(bb); - return label; - } - - /** - * Retrieves the link-type code for a specific link. - * - * @param index link index. - * @return the {@link LinkTypes}. - * @throws EpanetException - */ - public LinkTypes ENgetlinktype( int index ) throws EpanetException { - int[] typecode = new int[1]; - int error = epanet.ENgetlinktype(index, typecode); - checkError(error); - - LinkTypes type = LinkTypes.forCode(typecode[0]); - return type; - } - - /** - * Retrieves the indexes of the end nodes of a specified link. - * - *

Node and link indexes are consecutive integers starting from 1. - * - *

The From and To nodes are as defined for the link in the - * EPANET input file. The actual direction of flow in the link is - * not considered. - * - * @param index the link index. - * @return the from and to node indexes as a two items array. - * @throws EpanetException - */ - public int[] ENgetlinknodes( int index ) throws EpanetException { - int[] from = new int[1]; - int[] to = new int[1]; - int error = epanet.ENgetlinknodes(index, from, to); - checkError(error); - return new int[]{from[0], to[0]}; - } - - /** - * Retrieves the value of a specific link parameter. - * - * @param index link index. - * @param param {@link LinkParameters}. - * @return the value. - * @throws EpanetException - */ - public float[] ENgetlinkvalue( int index, LinkParameters param ) throws EpanetException { - float[] value = new float[2]; - int errcode = epanet.ENgetlinkvalue(index, param.getCode(), value); - checkError(errcode); - - return value; - } - - /** - * Get the version of Epanet. - * - * @return the version of epanet. - * @throws EpanetException - */ - public int ENgetversion() throws EpanetException { - int[] version = new int[0]; - int errcode = epanet.ENgetversion(version); - checkError(errcode); - return version[0]; - } - /** - * @deprecated not implemented yet - */ - public int ENsetcontrol( int int1, int int2, int int3, float float1, int int4, float float2 ) { - return -1; - } - /** - * Sets the value of a parameter for a specific node. - * - * @param index node index. - * @param paramcode parameter code. - * @param value parameter value. - * @throws EpanetException - */ - public void ENsetnodevalue( int index, NodeParameters nodeParameter, float value ) throws EpanetException { - int errcode = epanet.ENsetnodevalue(index, nodeParameter.getCode(), value); - checkError(errcode); - } - /** - * Sets the value of a parameter for a specific link. - * - * @param index node index. - * @param paramcode parameter code. - * @param value parameter value. - * @throws EpanetException - */ - public void ENsetlinkvalue( int index, LinkParameters linkParameter, float value ) throws EpanetException { - int errcode = epanet.ENsetnodevalue(index, linkParameter.getCode(), value); - checkError(errcode); - } - - /** - * Adds a new time pattern to the network. - * - * @param id ID label of pattern. - * @throws EpanetException - */ - public void ENaddpattern( String id ) throws EpanetException { - int errcode = epanet.ENaddpattern(id); - checkError(errcode); - } - /** - * @deprecated not implemented yet - */ - public int ENsetpattern( int int1, FloatBuffer floatPtr1, int int2 ) { - return -1; - } - /** - * @deprecated not implemented yet - */ - public int ENsetpatternvalue( int int1, int int2, float float1 ) { - return -1; - } - - /** - * Sets the value of a time parameter. - * - * @param paramcode the {@link TimeParameterCodes}. - * @param timevalue value of time parameter in seconds. - * @throws EpanetException - */ - public void ENsettimeparam( TimeParameterCodes code, Long timevalue ) throws EpanetException { - int errcode = epanet.ENsettimeparam(code.getCode(), timevalue); - checkError(errcode); - } - - /** - * Sets the value of a particular analysis option. - * - * @param optionCode the {@link OptionParameterCodes}. - * @param value the option value. - * @throws EpanetException - */ - public void ENsetoption( OptionParameterCodes optionCode, float value ) throws EpanetException { - int errcode = epanet.ENsetoption(optionCode.getCode(), value); - checkError(errcode); - } - - /** - * @deprecated not implemented yet - */ - public int ENsetstatusreport( int int1 ) { - return -1; - } - /** - * @deprecated not implemented yet - */ - public int ENsetqualtype( int int1, ByteBuffer charPtr1, ByteBuffer charPtr2, ByteBuffer charPtr3 ) { - return -1; - } - - public void checkError( int errcode ) throws EpanetException { - try { - EpanetErrors.checkError(errcode); - warningMessage = EpanetErrors.checkWarning(errcode); - } catch (EpanetException e) { - ENclose(); - throw e; - } - } - - public String getWarningMessage() { - return warningMessage; - } - - private String byteBuffer2String( ByteBuffer bb ) { - String label; - StringBuilder sb = new StringBuilder(); - byte[] array = bb.array(); - for( byte b : array ) { - if (b != 0) { - sb.append((char) b); - } else { - sb.append(' '); - } - } - label = sb.toString().trim(); - return label; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; + +import com.sun.jna.Native; +import com.sun.jna.NativeLibrary; + +/** + * A wrapper for epanet functions. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class EpanetWrapper { + + private static EpanetNativeFunctions epanet; + + /** + * A warning message related to the last method called. + */ + private String warningMessage = null; + + /** + * Contructor for the {@link EpanetWrapper}. + * + *

This also takes care to load the native library, if needed. + * + * @param lib the name of the library (ex. "epanet2_64bit"). + * @param nativeLibPath the path in which to search the native library. + * If the native library is already in the java library path + * this is not needed and may be null + * @throws Exception if the library could not be loaded. + */ + public EpanetWrapper( String lib, String nativeLibPath ) throws Exception { + if (epanet == null) { + try { + if (nativeLibPath != null) + NativeLibrary.addSearchPath(lib, nativeLibPath); + epanet = (EpanetNativeFunctions) Native.loadLibrary(lib, EpanetNativeFunctions.class); + } catch (Exception e) { + throw new Exception("An error occurred while trying to load the epanet library.", e); + } + } + } + + /** + * Get the reference to the jna native epanet instance. + * + * @return the Epanet native reference. + */ + public static EpanetNativeFunctions getEpanet() { + return epanet; + } + + /** + * Opens the Toolkit to analyze a particular distribution system. + * + * @param input name of an EPANET Input file. + * @param report name of an output Report file. + * @param outputBin name of an optional binary Output file. + * @throws IOException + */ + public void ENopen( String input, String report, String outputBin ) throws EpanetException { + int errcode = epanet.ENopen(input, report, outputBin); + checkError(errcode); + } + + /** + * Closes down the Toolkit system (including all files being processed). + * + *

ENclose must be called when all processing has been completed, + * even if an error condition was encountered. + * @throws EpanetException + */ + public void ENclose() throws EpanetException { + int errcode = epanet.ENclose(); + checkError(errcode); + } + + /** + * Writes all current network input data to + * a file using the format of an EPANET input file. + * + * @param fileName name of the file where data is saved. + * @throws EpanetException + */ + public void ENsaveinpfile( String fileName ) throws EpanetException { + int err = epanet.ENsaveinpfile(fileName); + checkError(err); + } + + /** + * Runs a complete hydraulic simulation with results for all time periods written to the binary Hydraulics file. + * + * @throws EpanetException + */ + public void ENsolveH() throws EpanetException { + int err = epanet.ENsolveH(); + checkError(err); + } + + /** + * Transfers results of a hydraulic simulation from the binary Hydraulics file to the + * binary Output file, where results are only reported at uniform reporting intervals. + * + * @throws EpanetException + */ + public void ENsaveH() throws EpanetException { + int err = epanet.ENsaveH(); + checkError(err); + } + + /** + * Opens the hydraulics analysis system. + * + *

Call ENopenH prior to running the first hydraulic analysis + * using the ENinitH - ENrunH - ENnextH sequence. Multiple analyses + * can be made before calling ENcloseH to close the hydraulic + * analysis system. + * + *

Do not call this function if ENsolveH is being used to run a + * complete hydraulic analysis. + * + * @throws EpanetException + */ + public void ENopenH() throws EpanetException { + int err = epanet.ENopenH(); + checkError(err); + } + + /** + * Initializes storage tank levels, link status and settings, and + * the simulation clock time prior to running a hydraulic analysis. + * + * @param saveflag 0-1 flag indicating if hydraulic results will be + * saved to the hydraulics file. + * @throws EpanetException + */ + public void ENinitH( int saveflag ) throws EpanetException { + int err = epanet.ENinitH(saveflag); + checkError(err); + } + + /** + * Runs a single period hydraulic analysis, retrieving + * the current simulation clock time. + * + *

Use {@link #ENrunH(long[])} along with {@link #ENnextH(long[])} + * in a do..while loop to + * analyze hydraulics in each period of an extended period simulation. + * This process automatically updates the simulation clock time so + * treat t as a read-only variable. + * + *

{@link #ENinitH(int)} must have been called prior to running the + * ENrunH - ENnextH loop. + * + * @param time current simulation clock time in seconds. This value + * is updated by the method. + * @throws EpanetException + */ + public void ENrunH( long[] time ) throws EpanetException { + int err = epanet.ENrunH(time); + checkError(err); + } + + /** + * Determines the length of time until the next hydraulic event occurs in + * an extended period simulation. + * + * @param timeStep time (in seconds) until next hydraulic event occurs or 0 + * if at the end of the simulation period. + * @throws EpanetException + */ + public void ENnextH( long[] timeStep ) throws EpanetException { + int err = epanet.ENnextH(timeStep); + checkError(err); + } + + /** + * Closes the hydraulic analysis system, freeing all allocated memory. + * + *

Call {@link #ENcloseH()} after all hydraulics analyses have been made + * using {@link #ENinitH(int)} - {@link #ENrunH(long[])} - {@link #ENnextH(long[])}. + * Do not call this function if ENsolveH is being used. + * + * @throws EpanetException + */ + public void ENcloseH() throws EpanetException { + int err = epanet.ENcloseH(); + checkError(err); + } + + /** + * Saves the current contents of the binary hydraulics file to a file. + * + * @param filePath name of the file where the hydraulics results should be saved. + * @throws EpanetException + */ + public void ENsavehydfile( String filePath ) throws EpanetException { + int err = epanet.ENsavehydfile(filePath); + checkError(err); + } + + /** + * Uses the contents of the specified file as the current binary hydraulics file. + * + * @param filePath name of the file containing hydraulic analysis results for the current network. + * @throws EpanetException + */ + public void ENusehydfile( String filePath ) throws EpanetException { + int err = epanet.ENsavehydfile(filePath); + checkError(err); + } + + /** + * @deprecated not implemented yet. + */ + public int ENsolveQ() { + return -1; + } + /** + * @deprecated not implemented yet. + */ + public int ENopenQ() { + return -1; + } + /** + * @deprecated not implemented yet. + */ + public int ENinitQ( int int1 ) { + return -1; + } + /** + * @deprecated not implemented yet. + */ + public int ENrunQ( Long lPtr1 ) { + return -1; + } + /** + * @deprecated not implemented yet. + */ + public int ENnextQ( Long lPtr1 ) { + return -1; + } + /** + * @deprecated not implemented yet. + */ + public int ENstepQ( Long lPtr1 ) { + return -1; + } + /** + * @deprecated not implemented yet. + */ + public int ENcloseQ() { + return -1; + } + /** + * @deprecated not implemented yet. + */ + public int ENwriteline( ByteBuffer charPtr1 ) { + return -1; + } + + /** + * Writes a formatted text report on simulation results to the Report file. + * @throws EpanetException + */ + public void ENreport() throws EpanetException { + int err = epanet.ENreport(); + checkError(err); + } + + /** + * Clears any report formatting commands that either appeared in the + * [REPORT] section of the EPANET Input file or were issued with the + * ENsetreport function + * + * @throws EpanetException + */ + public void ENresetreport() throws EpanetException { + int err = epanet.ENresetreport(); + checkError(err); + } + + /** + * Issues a report formatting command. Formatting commands are the + * same as used in the [REPORT] section of the EPANET Input file. + * + * @param command text of a report formatting command. + * @throws EpanetException + */ + public void ENsetreport( String command ) throws EpanetException { + int err = epanet.ENsetreport(command); + checkError(err); + } + + /** + * @deprecated not implemented yet + */ + public int ENgetcontrol( int int1, IntBuffer intPtr1, IntBuffer intPtr2, FloatBuffer floatPtr1, IntBuffer intPtr3, + FloatBuffer floatPtr2 ) { + return -1; + } + + /** + * Retrieves the number of network components of a specified type. + * + * @param countcode {@link Components} code . + * @return number of countcode components in the network. + * @throws EpanetException + */ + public int ENgetcount( Components countcode ) throws EpanetException { + int[] count = new int[1]; + int error = epanet.ENgetcount(countcode.getCode(), count); + checkError(error); + return count[0]; + } + + /** + * Retrieves the value of a particular analysis option. + * + * @param optionCode The {@link OptionParameterCodes}. + * @throws EpanetException + */ + public float ENgetoption( OptionParameterCodes optionCode ) throws EpanetException { + float[] optionValue = new float[1]; + int error = epanet.ENgetoption(optionCode.getCode(), optionValue); + checkError(error); + return optionValue[0]; + } + + /** + * Retrieves the value of a specific analysis time parameter. + * + * @param timeParameterCode time parameter code. + * @return value of time parameter in seconds. + * @throws EpanetException + */ + public long ENgettimeparam( TimeParameterCodes timeParameterCode ) throws EpanetException { + long[] timeValue = new long[1]; + int error = epanet.ENgettimeparam(timeParameterCode.getCode(), timeValue); + checkError(error); + return timeValue[0]; + } + /** + * @deprecated not yet implemented. + */ + public int ENgetflowunits( IntBuffer intPtr1 ) { + return -1; + } + + /** + * Retrieves the index of a particular time pattern. + * + * @param id pattern ID label. + * @return the pattern index. + * @throws EpanetException + */ + public int ENgetpatternindex( String id ) throws EpanetException { + int[] index = new int[1]; + int error = epanet.ENgetpatternindex(id, index); + checkError(error); + return index[0]; + } + + /** + * Retrieves the ID label of a particular time pattern. + * + * @param index pattern index. + * @return the id label. + * @throws EpanetException + */ + public String ENgetpatternid( int index ) throws EpanetException { + ByteBuffer bb = ByteBuffer.allocate(64); + int errcode = epanet.ENgetpatternid(index, bb); + checkError(errcode); + + String label = byteBuffer2String(bb); + return label; + } + + /** + * @deprecated not yet implemented. + */ + public int ENgetpatternlen( int int1, IntBuffer intPtr1 ) { + return -1; + } + + /** + * Retrieves the multiplier factor for a specific time period in a time pattern. + * + * @param index time pattern index. + * @param period period within time pattern. + * @return multiplier factor for the period. + * @throws EpanetException + */ + public float ENgetpatternvalue( int index, int period ) throws EpanetException { + float[] value = new float[1]; + int errcode = epanet.ENgetpatternvalue(index, period, value); + checkError(errcode); + + return value[0]; + } + /** + * @deprecated not yet implemented. + */ + public int ENgetqualtype( IntBuffer intPtr1, IntBuffer intPtr2 ) { + return -1; + } + /** + * @deprecated not yet implemented. + */ + public int ENgeterror( int int1, ByteBuffer charPtr1, int int2 ) { + return -1; + } + + /** + * Retrieves the index of a node with a specified ID. + * + * @param id the node id. + * @return the node index. + * @throws EpanetException + */ + public int ENgetnodeindex( String id ) throws EpanetException { + int[] index = new int[1]; + int error = epanet.ENgetnodeindex(id, index); + checkError(error); + return index[0]; + } + + /** + * Retrieves the ID label of a node with a specified index. + * + * @param index the node index. + * @return the node id. + * @throws EpanetException + */ + public String ENgetnodeid( int index ) throws EpanetException { + ByteBuffer bb = ByteBuffer.allocate(64); + int errcode = epanet.ENgetnodeid(index, bb); + checkError(errcode); + + String label; + label = byteBuffer2String(bb); + return label; + } + + /** + * Retrieves the node-type code for a specific node. + * + * @param index the node index. + * @return the {@link NodeTypes}; + * @throws EpanetException + */ + public NodeTypes ENgetnodetype( int index ) throws EpanetException { + int[] typecode = new int[1]; + int error = epanet.ENgetnodetype(index, typecode); + checkError(error); + + NodeTypes type = NodeTypes.forCode(typecode[0]); + return type; + } + + /** + * Retrieves the value of a specific link (node?) parameter. + * + * @param index the node index. + * @param code the parameter code. + * @return the value at the node. + * @throws EpanetException + */ + public float ENgetnodevalue( int index, NodeParameters code ) throws EpanetException { + float[] nodeValue = new float[1]; + int error = epanet.ENgetnodevalue(index, code.getCode(), nodeValue); + checkError(error); + return nodeValue[0]; + } + + /** + * Retrieves the index of a link with a specified ID. + * + *

Link indexes are consecutive integers starting from 1. + * + * @param id link ID label. + * @return the link index. + * @throws EpanetException + */ + public int ENgetlinkindex( String id ) throws EpanetException { + int[] index = new int[1]; + int error = epanet.ENgetlinkindex(id, index); + checkError(error); + return index[0]; + } + + /** + * Retrieves the ID label of a link with a specified index. + * + * @param index link index. + * @return the link label. + * @throws EpanetException + */ + public String ENgetlinkid( int index ) throws EpanetException { + ByteBuffer bb = ByteBuffer.allocate(64); + int errcode = epanet.ENgetlinkid(index, bb); + checkError(errcode); + + String label; + label = byteBuffer2String(bb); + return label; + } + + /** + * Retrieves the link-type code for a specific link. + * + * @param index link index. + * @return the {@link LinkTypes}. + * @throws EpanetException + */ + public LinkTypes ENgetlinktype( int index ) throws EpanetException { + int[] typecode = new int[1]; + int error = epanet.ENgetlinktype(index, typecode); + checkError(error); + + LinkTypes type = LinkTypes.forCode(typecode[0]); + return type; + } + + /** + * Retrieves the indexes of the end nodes of a specified link. + * + *

Node and link indexes are consecutive integers starting from 1. + * + *

The From and To nodes are as defined for the link in the + * EPANET input file. The actual direction of flow in the link is + * not considered. + * + * @param index the link index. + * @return the from and to node indexes as a two items array. + * @throws EpanetException + */ + public int[] ENgetlinknodes( int index ) throws EpanetException { + int[] from = new int[1]; + int[] to = new int[1]; + int error = epanet.ENgetlinknodes(index, from, to); + checkError(error); + return new int[]{from[0], to[0]}; + } + + /** + * Retrieves the value of a specific link parameter. + * + * @param index link index. + * @param param {@link LinkParameters}. + * @return the value. + * @throws EpanetException + */ + public float[] ENgetlinkvalue( int index, LinkParameters param ) throws EpanetException { + float[] value = new float[2]; + int errcode = epanet.ENgetlinkvalue(index, param.getCode(), value); + checkError(errcode); + + return value; + } + + /** + * Get the version of Epanet. + * + * @return the version of epanet. + * @throws EpanetException + */ + public int ENgetversion() throws EpanetException { + int[] version = new int[0]; + int errcode = epanet.ENgetversion(version); + checkError(errcode); + return version[0]; + } + /** + * @deprecated not implemented yet + */ + public int ENsetcontrol( int int1, int int2, int int3, float float1, int int4, float float2 ) { + return -1; + } + /** + * Sets the value of a parameter for a specific node. + * + * @param index node index. + * @param paramcode parameter code. + * @param value parameter value. + * @throws EpanetException + */ + public void ENsetnodevalue( int index, NodeParameters nodeParameter, float value ) throws EpanetException { + int errcode = epanet.ENsetnodevalue(index, nodeParameter.getCode(), value); + checkError(errcode); + } + /** + * Sets the value of a parameter for a specific link. + * + * @param index node index. + * @param paramcode parameter code. + * @param value parameter value. + * @throws EpanetException + */ + public void ENsetlinkvalue( int index, LinkParameters linkParameter, float value ) throws EpanetException { + int errcode = epanet.ENsetnodevalue(index, linkParameter.getCode(), value); + checkError(errcode); + } + + /** + * Adds a new time pattern to the network. + * + * @param id ID label of pattern. + * @throws EpanetException + */ + public void ENaddpattern( String id ) throws EpanetException { + int errcode = epanet.ENaddpattern(id); + checkError(errcode); + } + /** + * @deprecated not implemented yet + */ + public int ENsetpattern( int int1, FloatBuffer floatPtr1, int int2 ) { + return -1; + } + /** + * @deprecated not implemented yet + */ + public int ENsetpatternvalue( int int1, int int2, float float1 ) { + return -1; + } + + /** + * Sets the value of a time parameter. + * + * @param paramcode the {@link TimeParameterCodes}. + * @param timevalue value of time parameter in seconds. + * @throws EpanetException + */ + public void ENsettimeparam( TimeParameterCodes code, Long timevalue ) throws EpanetException { + int errcode = epanet.ENsettimeparam(code.getCode(), timevalue); + checkError(errcode); + } + + /** + * Sets the value of a particular analysis option. + * + * @param optionCode the {@link OptionParameterCodes}. + * @param value the option value. + * @throws EpanetException + */ + public void ENsetoption( OptionParameterCodes optionCode, float value ) throws EpanetException { + int errcode = epanet.ENsetoption(optionCode.getCode(), value); + checkError(errcode); + } + + /** + * @deprecated not implemented yet + */ + public int ENsetstatusreport( int int1 ) { + return -1; + } + /** + * @deprecated not implemented yet + */ + public int ENsetqualtype( int int1, ByteBuffer charPtr1, ByteBuffer charPtr2, ByteBuffer charPtr3 ) { + return -1; + } + + public void checkError( int errcode ) throws EpanetException { + try { + EpanetErrors.checkError(errcode); + warningMessage = EpanetErrors.checkWarning(errcode); + } catch (EpanetException e) { + ENclose(); + throw e; + } + } + + public String getWarningMessage() { + return warningMessage; + } + + private String byteBuffer2String( ByteBuffer bb ) { + String label; + StringBuilder sb = new StringBuilder(); + byte[] array = bb.array(); + for( byte b : array ) { + if (b != 0) { + sb.append((char) b); + } else { + sb.append(' '); + } + } + label = sb.toString().trim(); + return label; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Headloss.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Headloss.java index 6736fdcc2..67ab27e51 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Headloss.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Headloss.java @@ -1,41 +1,41 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum Headloss { - H_W("H-W", "The Hazen-Williams formula"), // - D_W("D-W", "The Darcy-Weissbach formula"), // - C_M("C-M", "The Chezy-Manning formula"); - - private String name; - private String description; - Headloss( String name, String description ) { - this.name = name; - this.description = description; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum Headloss { + H_W("H-W", "The Hazen-Williams formula"), // + D_W("D-W", "The Darcy-Weissbach formula"), // + C_M("C-M", "The Chezy-Manning formula"); + + private String name; + private String description; + Headloss( String name, String description ) { + this.name = name; + this.description = description; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/IEpanetType.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/IEpanetType.java index c105a3e92..05fbc37ad 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/IEpanetType.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/IEpanetType.java @@ -1,58 +1,58 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; -/** - * Interface for all epanet feature types. - */ -public interface IEpanetType { - /** - * Getter for the binding class. - * - * @return the binding class. - */ - public Class< ? > getClazz(); - - /** - * Getter for the attribute name. - * - * @return the attribute name. - */ - public String getAttributeName(); - - /** - * Getter for the file name. - * - * @return the file name. - */ - public String getShapefileName(); - - /** - * Getter for the name. - * - * @return the name of the type. - */ - public String getName(); - - /** - * Getter for the type prefix. - * - * @return the prefix. - */ - public String getPrefix(); +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; +/** + * Interface for all epanet feature types. + */ +public interface IEpanetType { + /** + * Getter for the binding class. + * + * @return the binding class. + */ + public Class< ? > getClazz(); + + /** + * Getter for the attribute name. + * + * @return the attribute name. + */ + public String getAttributeName(); + + /** + * Getter for the file name. + * + * @return the file name. + */ + public String getShapefileName(); + + /** + * Getter for the name. + * + * @return the name of the type. + */ + public String getName(); + + /** + * Getter for the type prefix. + * + * @return the prefix. + */ + public String getPrefix(); } \ No newline at end of file diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/LinkParameters.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/LinkParameters.java index 1302d5b7e..d58c0c8d4 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/LinkParameters.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/LinkParameters.java @@ -1,62 +1,62 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum LinkParameters { - EN_DIAMETER(0, "Diameter "), // - EN_LENGTH(1, "Length "), // - EN_ROUGHNESS(2, "Roughness coeff. "), // - EN_MINORLOSS(3, "Minor loss coeff. "), // - EN_INITSTATUS(4, "Initial link status (0 = closed, 1 = open) "), // - EN_INITSETTING(5, "Roughness for pipes, initial speed for pumps, initial setting for valves "), // - EN_KBULK(6, "Bulk reaction coeff. "), // - EN_KWALL(7, "Wall reaction coeff. "), // - EN_FLOW(8, "Flow rate "), // - EN_VELOCITY(9, "Flow velocity "), // - EN_HEADLOSS(10, "Head loss "), // - EN_STATUS(11, "Actual link status (0 = closed, 1 = open) "), // - EN_SETTING(12, "Roughness for pipes, actual speed for pumps, actual setting for valves "), // - EN_ENERGY(13, "Energy expended in kwatts "); - - private int code; - private String description; - LinkParameters( int code, String description ) { - this.code = code; - this.description = description; - } - - public int getCode() { - return code; - } - - public String getDescription() { - return description; - } - - public static LinkParameters forCode( int i ) { - LinkParameters[] values = values(); - for( LinkParameters type : values ) { - if (type.code == i) { - return type; - } - } - throw new IllegalArgumentException("No type for the given code: " + i); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum LinkParameters { + EN_DIAMETER(0, "Diameter "), // + EN_LENGTH(1, "Length "), // + EN_ROUGHNESS(2, "Roughness coeff. "), // + EN_MINORLOSS(3, "Minor loss coeff. "), // + EN_INITSTATUS(4, "Initial link status (0 = closed, 1 = open) "), // + EN_INITSETTING(5, "Roughness for pipes, initial speed for pumps, initial setting for valves "), // + EN_KBULK(6, "Bulk reaction coeff. "), // + EN_KWALL(7, "Wall reaction coeff. "), // + EN_FLOW(8, "Flow rate "), // + EN_VELOCITY(9, "Flow velocity "), // + EN_HEADLOSS(10, "Head loss "), // + EN_STATUS(11, "Actual link status (0 = closed, 1 = open) "), // + EN_SETTING(12, "Roughness for pipes, actual speed for pumps, actual setting for valves "), // + EN_ENERGY(13, "Energy expended in kwatts "); + + private int code; + private String description; + LinkParameters( int code, String description ) { + this.code = code; + this.description = description; + } + + public int getCode() { + return code; + } + + public String getDescription() { + return description; + } + + public static LinkParameters forCode( int i ) { + LinkParameters[] values = values(); + for( LinkParameters type : values ) { + if (type.code == i) { + return type; + } + } + throw new IllegalArgumentException("No type for the given code: " + i); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/LinkTypes.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/LinkTypes.java index fe41ae24d..682bb519a 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/LinkTypes.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/LinkTypes.java @@ -1,63 +1,63 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum LinkTypes { - EN_CVPIPE(0, "Pipe with Check Valve", ""), // - EN_PIPE(1, "Pipe", ""), // - EN_PUMP(2, "Pump", ""), // - EN_PRV(3, "Pressure Reducing Valve", "Pressure, psi (m)"), // - EN_PSV(4, "Pressure Sustaining Valve", "Pressure, psi (m)"), // - EN_PBV(5, "Pressure Breaker Valve", "Pressure, psi (m)"), // - EN_FCV(6, "Flow Control Valve", "Flow (flow unit)"), // - EN_TCV(7, "Throttle Control Valve", "Loss Coefficient"), // - EN_GPV(8, "General Purpose Valve", "ID of head loss curve"); - - private int code; - private String description; - private String setting; - LinkTypes( int code, String description , String setting) { - this.code = code; - this.description = description; - this.setting = setting; - } - - public int getCode() { - return code; - } - - public String getDescription() { - return description; - } - - public String getSetting() { - return setting; - } - - public static LinkTypes forCode( int i ) { - LinkTypes[] values = values(); - for( LinkTypes type : values ) { - if (type.code == i) { - return type; - } - } - throw new IllegalArgumentException("No type for the given code: " + i); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum LinkTypes { + EN_CVPIPE(0, "Pipe with Check Valve", ""), // + EN_PIPE(1, "Pipe", ""), // + EN_PUMP(2, "Pump", ""), // + EN_PRV(3, "Pressure Reducing Valve", "Pressure, psi (m)"), // + EN_PSV(4, "Pressure Sustaining Valve", "Pressure, psi (m)"), // + EN_PBV(5, "Pressure Breaker Valve", "Pressure, psi (m)"), // + EN_FCV(6, "Flow Control Valve", "Flow (flow unit)"), // + EN_TCV(7, "Throttle Control Valve", "Loss Coefficient"), // + EN_GPV(8, "General Purpose Valve", "ID of head loss curve"); + + private int code; + private String description; + private String setting; + LinkTypes( int code, String description , String setting) { + this.code = code; + this.description = description; + this.setting = setting; + } + + public int getCode() { + return code; + } + + public String getDescription() { + return description; + } + + public String getSetting() { + return setting; + } + + public static LinkTypes forCode( int i ) { + LinkTypes[] values = values(); + for( LinkTypes type : values ) { + if (type.code == i) { + return type; + } + } + throw new IllegalArgumentException("No type for the given code: " + i); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/NodeParameters.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/NodeParameters.java index 1231f97ae..9af5c2af8 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/NodeParameters.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/NodeParameters.java @@ -1,72 +1,72 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum NodeParameters { - EN_ELEVATION(0, "Elevation "), // - EN_BASEDEMAND(1, "Base demand "), // - EN_PATTERN(2, "Demand pattern index "), // - EN_EMITTER(3, "Emitter coeff. "), // - EN_INITQUAL(4, "Initial quality "), // - EN_SOURCEQUAL(5, "Source quality "), // - EN_SOURCEPAT(6, "Source pattern index "), // - EN_SOURCETYPE(7, "Source type (See note below) "), // - EN_TANKLEVEL(8, "Initial water level in tank "), // - EN_DEMAND(9, "Actual demand "), // - EN_HEAD(10, "Hydraulic head "), // - EN_PRESSURE(11, "Pressure "), // - EN_QUALITY(12, "Actual quality "), // - EN_SOURCEMASS(13, "Mass flow rate per minute of a chemical source "), // - EN_INITVOLUME_STORAGETANK(14, "Initial water volume "), // - EN_MIXMODEL_STORAGETANK(15, "Mixing model code (see below) "), // - EN_MIXZONEVOL_STORAGETANK(16, "Inlet/Outlet zone volume in a 2-compartment tank "), // - EN_TANKDIAM_STORAGETANK(17, "Tank diameter "), // - EN_MINVOLUME_STORAGETANK(18, "Minimum water volume "), // - EN_VOLCURVE_STORAGETANK(19, "Index of volume versus depth curve (0 if none assigned) "), // - EN_MINLEVEL_STORAGETANK(20, "Minimum water level "), // - EN_MAXLEVEL_STORAGETANK(21, "Maximum water level "), // - EN_MIXFRACTION_STORAGETANK(22, "Fraction of total volume occupied by the inlet/outlet zone in a 2-compartment tank "), // - EN_TANK_KBULK_STORAGETANK(23, "Bulk reaction rate coefficient "); - - private int code; - private String description; - NodeParameters( int code, String description ) { - this.code = code; - this.description = description; - } - - public int getCode() { - return code; - } - - public String getDescription() { - return description; - } - - public static NodeParameters forCode( int i ) { - NodeParameters[] values = values(); - for( NodeParameters type : values ) { - if (type.code == i) { - return type; - } - } - throw new IllegalArgumentException("No type for the given code: " + i); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum NodeParameters { + EN_ELEVATION(0, "Elevation "), // + EN_BASEDEMAND(1, "Base demand "), // + EN_PATTERN(2, "Demand pattern index "), // + EN_EMITTER(3, "Emitter coeff. "), // + EN_INITQUAL(4, "Initial quality "), // + EN_SOURCEQUAL(5, "Source quality "), // + EN_SOURCEPAT(6, "Source pattern index "), // + EN_SOURCETYPE(7, "Source type (See note below) "), // + EN_TANKLEVEL(8, "Initial water level in tank "), // + EN_DEMAND(9, "Actual demand "), // + EN_HEAD(10, "Hydraulic head "), // + EN_PRESSURE(11, "Pressure "), // + EN_QUALITY(12, "Actual quality "), // + EN_SOURCEMASS(13, "Mass flow rate per minute of a chemical source "), // + EN_INITVOLUME_STORAGETANK(14, "Initial water volume "), // + EN_MIXMODEL_STORAGETANK(15, "Mixing model code (see below) "), // + EN_MIXZONEVOL_STORAGETANK(16, "Inlet/Outlet zone volume in a 2-compartment tank "), // + EN_TANKDIAM_STORAGETANK(17, "Tank diameter "), // + EN_MINVOLUME_STORAGETANK(18, "Minimum water volume "), // + EN_VOLCURVE_STORAGETANK(19, "Index of volume versus depth curve (0 if none assigned) "), // + EN_MINLEVEL_STORAGETANK(20, "Minimum water level "), // + EN_MAXLEVEL_STORAGETANK(21, "Maximum water level "), // + EN_MIXFRACTION_STORAGETANK(22, "Fraction of total volume occupied by the inlet/outlet zone in a 2-compartment tank "), // + EN_TANK_KBULK_STORAGETANK(23, "Bulk reaction rate coefficient "); + + private int code; + private String description; + NodeParameters( int code, String description ) { + this.code = code; + this.description = description; + } + + public int getCode() { + return code; + } + + public String getDescription() { + return description; + } + + public static NodeParameters forCode( int i ) { + NodeParameters[] values = values(); + for( NodeParameters type : values ) { + if (type.code == i) { + return type; + } + } + throw new IllegalArgumentException("No type for the given code: " + i); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/NodeTypes.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/NodeTypes.java index b23311779..220c2d9f1 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/NodeTypes.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/NodeTypes.java @@ -1,51 +1,51 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum NodeTypes { - EN_JUNCTION (0, "Junction node"), // - EN_RESERVOIR (1, "Reservoir node"), // - EN_TANK (2, "Tank node"); - - private int code; - private String description; - NodeTypes( int code, String description ) { - this.code = code; - this.description = description; - } - - public int getCode() { - return code; - } - - public String getDescription() { - return description; - } - - public static NodeTypes forCode( int i ) { - NodeTypes[] values = values(); - for( NodeTypes type : values ) { - if (type.code == i) { - return type; - } - } - throw new IllegalArgumentException("No type for the given code: " + i); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum NodeTypes { + EN_JUNCTION (0, "Junction node"), // + EN_RESERVOIR (1, "Reservoir node"), // + EN_TANK (2, "Tank node"); + + private int code; + private String description; + NodeTypes( int code, String description ) { + this.code = code; + this.description = description; + } + + public int getCode() { + return code; + } + + public String getDescription() { + return description; + } + + public static NodeTypes forCode( int i ) { + NodeTypes[] values = values(); + for( NodeTypes type : values ) { + if (type.code == i) { + return type; + } + } + throw new IllegalArgumentException("No type for the given code: " + i); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/OptionParameterCodes.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/OptionParameterCodes.java index d086f729f..c2a6fe451 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/OptionParameterCodes.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/OptionParameterCodes.java @@ -1,83 +1,83 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum OptionParameterCodes { - UNITS(-1, "UNITS", "Units of flow rates", "LPS"), // - HEADLOSS(-1, "HEADLOSS", "Headloss formula for flow through pipe", "D-W"), // - QUALITY(-1, "QUALITY", "Type of water quality analysis", "NONE"), // - VISCOSITY(-1, "VISCOSITY", "Cinematic viscosity at 20 celcius degrees", "1.0"), // - DIFFUSIVITY(-1, "DIFFUSIVITY", "Molecular diffusivity in water", "1.0"), // - SPECIFICGRAVITY(-1, "SPECIFIC GRAVITY", "Ratio of density of the fluid to that of water at 4 degree", "1.0"), // - TRIALS(0, "TRIALS", "Maximum number of trials to solve hydraulics", "40"), // - ACCURACY(1, "ACCURACY", "Accuracy convergence for the solution", "0.001"), // - UNBALANCED(-1, "UNBALANCED", "Defines what happens if the hydraulics solution cannot be reached", "STOP"), // - PATTERN(-1, "PATTERN", "ID of the default demand pattern for junctions where no demand pattern was specified", "1"), // - TOLERANCE(2, "TOLERANCE", "Tolerance for water quality.", "0.01"), // - EMITEXPON(3, "EMITTER EXPONENT", "The power to which the pressure at a junction is raised.", "0.5"), // - DEMANDMULTIPLIER(4, "DEMAND MULTIPLIER", "Multiplier for the demand values.", "1"); - - private int code; - private String key; - private String description; - private String defaultValue; - OptionParameterCodes( int code, String key, String description, String defaultValue ) { - this.code = code; - this.key = key; - this.description = description; - this.defaultValue = defaultValue; - } - - public int getCode() { - return code; - } - - public String getKey() { - return key; - } - - public String getDescription() { - return description; - } - - public String getDefault() { - return this.defaultValue; - } - - public static OptionParameterCodes forCode( int i ) { - OptionParameterCodes[] values = values(); - for( OptionParameterCodes type : values ) { - if (type.code == i) { - return type; - } - } - throw new IllegalArgumentException("No type for the given code: " + i); - } - - public static OptionParameterCodes forKey( String key ) { - OptionParameterCodes[] values = values(); - for( OptionParameterCodes type : values ) { - if (type.key.equals(key)) { - return type; - } - } - throw new IllegalArgumentException("No type for the given key: " + key); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum OptionParameterCodes { + UNITS(-1, "UNITS", "Units of flow rates", "LPS"), // + HEADLOSS(-1, "HEADLOSS", "Headloss formula for flow through pipe", "D-W"), // + QUALITY(-1, "QUALITY", "Type of water quality analysis", "NONE"), // + VISCOSITY(-1, "VISCOSITY", "Cinematic viscosity at 20 celcius degrees", "1.0"), // + DIFFUSIVITY(-1, "DIFFUSIVITY", "Molecular diffusivity in water", "1.0"), // + SPECIFICGRAVITY(-1, "SPECIFIC GRAVITY", "Ratio of density of the fluid to that of water at 4 degree", "1.0"), // + TRIALS(0, "TRIALS", "Maximum number of trials to solve hydraulics", "40"), // + ACCURACY(1, "ACCURACY", "Accuracy convergence for the solution", "0.001"), // + UNBALANCED(-1, "UNBALANCED", "Defines what happens if the hydraulics solution cannot be reached", "STOP"), // + PATTERN(-1, "PATTERN", "ID of the default demand pattern for junctions where no demand pattern was specified", "1"), // + TOLERANCE(2, "TOLERANCE", "Tolerance for water quality.", "0.01"), // + EMITEXPON(3, "EMITTER EXPONENT", "The power to which the pressure at a junction is raised.", "0.5"), // + DEMANDMULTIPLIER(4, "DEMAND MULTIPLIER", "Multiplier for the demand values.", "1"); + + private int code; + private String key; + private String description; + private String defaultValue; + OptionParameterCodes( int code, String key, String description, String defaultValue ) { + this.code = code; + this.key = key; + this.description = description; + this.defaultValue = defaultValue; + } + + public int getCode() { + return code; + } + + public String getKey() { + return key; + } + + public String getDescription() { + return description; + } + + public String getDefault() { + return this.defaultValue; + } + + public static OptionParameterCodes forCode( int i ) { + OptionParameterCodes[] values = values(); + for( OptionParameterCodes type : values ) { + if (type.code == i) { + return type; + } + } + throw new IllegalArgumentException("No type for the given code: " + i); + } + + public static OptionParameterCodes forKey( String key ) { + OptionParameterCodes[] values = values(); + for( OptionParameterCodes type : values ) { + if (type.key.equals(key)) { + return type; + } + } + throw new IllegalArgumentException("No type for the given key: " + key); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/ResultsLinkParameters.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/ResultsLinkParameters.java index e0ae5cae8..3a16bde0a 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/ResultsLinkParameters.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/ResultsLinkParameters.java @@ -1,53 +1,53 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum ResultsLinkParameters { - FLOW("FLOW", "Flow rate"), // - VELOCITY("VELOCITY", "Flow velocity"), // - HEADLOSS("HEADLOSS", "Head loss "), // - STATUS("STATUS", "Actual link status (0 = closed, 1 = open) "), // - ENERGY("ENERGY", "Energy expended in kwatts "); - - private String key; - private String description; - ResultsLinkParameters( String key, String description ) { - this.key = key; - this.description = description; - } - - public String getKey() { - return key; - } - - public String getDescription() { - return description; - } - - public static ResultsLinkParameters forCode( String i ) { - ResultsLinkParameters[] values = values(); - for( ResultsLinkParameters type : values ) { - if (type.key.equals(i)) { - return type; - } - } - throw new IllegalArgumentException("No type for the given code: " + i); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum ResultsLinkParameters { + FLOW("FLOW", "Flow rate"), // + VELOCITY("VELOCITY", "Flow velocity"), // + HEADLOSS("HEADLOSS", "Head loss "), // + STATUS("STATUS", "Actual link status (0 = closed, 1 = open) "), // + ENERGY("ENERGY", "Energy expended in kwatts "); + + private String key; + private String description; + ResultsLinkParameters( String key, String description ) { + this.key = key; + this.description = description; + } + + public String getKey() { + return key; + } + + public String getDescription() { + return description; + } + + public static ResultsLinkParameters forCode( String i ) { + ResultsLinkParameters[] values = values(); + for( ResultsLinkParameters type : values ) { + if (type.key.equals(i)) { + return type; + } + } + throw new IllegalArgumentException("No type for the given code: " + i); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/ResultsNodeParameters.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/ResultsNodeParameters.java index 3416730ba..0cf1cf9ad 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/ResultsNodeParameters.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/ResultsNodeParameters.java @@ -1,51 +1,51 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum ResultsNodeParameters { - DEMAND("DEMAND", "Actual demand "), // - HEAD("HEAD", "Hydraulic head "), // - PRESSURE("PRESSURE", "Pressure "); - - private String key; - private String description; - ResultsNodeParameters( String key, String description ) { - this.key = key; - this.description = description; - } - - public String getKey() { - return key; - } - - public String getDescription() { - return description; - } - - public static ResultsNodeParameters forCode( String i ) { - ResultsNodeParameters[] values = values(); - for( ResultsNodeParameters type : values ) { - if (type.key.equals(i)) { - return type; - } - } - throw new IllegalArgumentException("No type for the given code: " + i); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum ResultsNodeParameters { + DEMAND("DEMAND", "Actual demand "), // + HEAD("HEAD", "Hydraulic head "), // + PRESSURE("PRESSURE", "Pressure "); + + private String key; + private String description; + ResultsNodeParameters( String key, String description ) { + this.key = key; + this.description = description; + } + + public String getKey() { + return key; + } + + public String getDescription() { + return description; + } + + public static ResultsNodeParameters forCode( String i ) { + ResultsNodeParameters[] values = values(); + for( ResultsNodeParameters type : values ) { + if (type.key.equals(i)) { + return type; + } + } + throw new IllegalArgumentException("No type for the given code: " + i); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/TimeParameterCodes.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/TimeParameterCodes.java index b662dd400..4f4954619 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/TimeParameterCodes.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/TimeParameterCodes.java @@ -1,81 +1,81 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum TimeParameterCodes { - DURATION(0, "DURATION", "Simulation duration [min]", "0"), // - HYDSTEP(1, "HYDRAULIC TIMESTEP", "Hydraulic time step [min]", "60"), // - QUALSTEP(2, "QUALITY TIMESTEP", "Water quality time step [min]", "6"), // - PATTERNSTEP(3, "PATTERN TIMESTEP", "Time pattern time step [min]", "60"), // - PATTERNSTART(4, "PATTERN START", "Time pattern start time [min]", "0"), // - REPORTSTEP(5, "REPORT TIMESTEP", "Reporting time step [min]", "60"), // - REPORTSTART(6, "REPORT START", "Report starting time [min]", "0"), // - RULESTEP(7, "RULE TIMESTEP", "Time step for evaluating rule-based controls [min]", "6"), // - STATISTIC(8, "STATISTIC", "Type of time series post-processing to use (can be AVERAGED, MINIMUM, MAXIMUM, NONE)", "NONE"), // - STARTCLOCKTIME(-1, "START CLOCKTIME", "The time of the day at which the simulation begins (format HH:MM AM/PM)", "12:00 AM"); - // PERIODS(9, "", "Number of reporting periods saved to binary output file"); - - private int code; - private String key; - private String description; - private final String defaultValue; - TimeParameterCodes( int code, String key, String description, String defaultValue ) { - this.code = code; - this.key = key; - this.description = description; - this.defaultValue = defaultValue; - } - - public int getCode() { - return code; - } - - public String getKey() { - return key; - } - - public String getDescription() { - return description; - } - - public String getDefaultValue() { - return defaultValue; - } - - public static TimeParameterCodes forCode( int i ) { - TimeParameterCodes[] values = values(); - for( TimeParameterCodes type : values ) { - if (type.code == i) { - return type; - } - } - throw new IllegalArgumentException("No type for the given code: " + i); - } - - public static TimeParameterCodes forKey( String key ) { - TimeParameterCodes[] values = values(); - for( TimeParameterCodes type : values ) { - if (type.key.equals(key)) { - return type; - } - } - throw new IllegalArgumentException("No type for the given key: " + key); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum TimeParameterCodes { + DURATION(0, "DURATION", "Simulation duration [min]", "0"), // + HYDSTEP(1, "HYDRAULIC TIMESTEP", "Hydraulic time step [min]", "60"), // + QUALSTEP(2, "QUALITY TIMESTEP", "Water quality time step [min]", "6"), // + PATTERNSTEP(3, "PATTERN TIMESTEP", "Time pattern time step [min]", "60"), // + PATTERNSTART(4, "PATTERN START", "Time pattern start time [min]", "0"), // + REPORTSTEP(5, "REPORT TIMESTEP", "Reporting time step [min]", "60"), // + REPORTSTART(6, "REPORT START", "Report starting time [min]", "0"), // + RULESTEP(7, "RULE TIMESTEP", "Time step for evaluating rule-based controls [min]", "6"), // + STATISTIC(8, "STATISTIC", "Type of time series post-processing to use (can be AVERAGED, MINIMUM, MAXIMUM, NONE)", "NONE"), // + STARTCLOCKTIME(-1, "START CLOCKTIME", "The time of the day at which the simulation begins (format HH:MM AM/PM)", "12:00 AM"); + // PERIODS(9, "", "Number of reporting periods saved to binary output file"); + + private int code; + private String key; + private String description; + private final String defaultValue; + TimeParameterCodes( int code, String key, String description, String defaultValue ) { + this.code = code; + this.key = key; + this.description = description; + this.defaultValue = defaultValue; + } + + public int getCode() { + return code; + } + + public String getKey() { + return key; + } + + public String getDescription() { + return description; + } + + public String getDefaultValue() { + return defaultValue; + } + + public static TimeParameterCodes forCode( int i ) { + TimeParameterCodes[] values = values(); + for( TimeParameterCodes type : values ) { + if (type.code == i) { + return type; + } + } + throw new IllegalArgumentException("No type for the given code: " + i); + } + + public static TimeParameterCodes forKey( String key ) { + TimeParameterCodes[] values = values(); + for( TimeParameterCodes type : values ) { + if (type.key.equals(key)) { + return type; + } + } + throw new IllegalArgumentException("No type for the given key: " + key); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/TimeParameterCodesStatistic.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/TimeParameterCodesStatistic.java index 5d11817cd..8ef84ef69 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/TimeParameterCodesStatistic.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/TimeParameterCodesStatistic.java @@ -1,69 +1,69 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum TimeParameterCodesStatistic { - STATISTIC_NONE(0, "NONE", ""), // - STATISTIC_AVERAGE(1, "AVERAGED", ""), // - STATISTIC_MINIMUM(2, "MINIMUMS", ""), // - STATISTIC_MAXIMUM(3, "MAXIMUMS", ""), // - STATISTIC_RANGE(4, "RANGES", ""); - - private int code; - private String key; - private String description; - TimeParameterCodesStatistic( int code, String key, String description ) { - this.code = code; - this.key = key; - this.description = description; - } - - public int getCode() { - return code; - } - - public String getKey() { - return key; - } - - public String getDescription() { - return description; - } - - public static TimeParameterCodesStatistic forCode( int i ) { - TimeParameterCodesStatistic[] values = values(); - for( TimeParameterCodesStatistic type : values ) { - if (type.code == i) { - return type; - } - } - throw new IllegalArgumentException("No type for the given code: " + i); - } - - public static TimeParameterCodesStatistic forKey( String key ) { - TimeParameterCodesStatistic[] values = values(); - for( TimeParameterCodesStatistic type : values ) { - if (type.key.equals(key)) { - return type; - } - } - throw new IllegalArgumentException("No type for the given key: " + key); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum TimeParameterCodesStatistic { + STATISTIC_NONE(0, "NONE", ""), // + STATISTIC_AVERAGE(1, "AVERAGED", ""), // + STATISTIC_MINIMUM(2, "MINIMUMS", ""), // + STATISTIC_MAXIMUM(3, "MAXIMUMS", ""), // + STATISTIC_RANGE(4, "RANGES", ""); + + private int code; + private String key; + private String description; + TimeParameterCodesStatistic( int code, String key, String description ) { + this.code = code; + this.key = key; + this.description = description; + } + + public int getCode() { + return code; + } + + public String getKey() { + return key; + } + + public String getDescription() { + return description; + } + + public static TimeParameterCodesStatistic forCode( int i ) { + TimeParameterCodesStatistic[] values = values(); + for( TimeParameterCodesStatistic type : values ) { + if (type.code == i) { + return type; + } + } + throw new IllegalArgumentException("No type for the given code: " + i); + } + + public static TimeParameterCodesStatistic forKey( String key ) { + TimeParameterCodesStatistic[] values = values(); + for( TimeParameterCodesStatistic type : values ) { + if (type.key.equals(key)) { + return type; + } + } + throw new IllegalArgumentException("No type for the given key: " + key); + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Units.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Units.java index fa230ab58..19dd1f4a1 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Units.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/Units.java @@ -1,48 +1,48 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; - -@SuppressWarnings("nls") -public enum Units { - CFS("CFS", "Cubic feet per second"), // - GPM("GPM", "Gallons per minute"), // - MGD("MGD", "Million gallons per day"), // - IMGD("IMGD", "Imperial Million gallons per day"), // - AFD("AFD", "Acre-feet per day"), // - LPS("LPS", "Liters per second"), // - LPM("LPM", "Liters per minute"), // - MLD("MLD", "Million liters per day"), // - CMH("CMH", "Cubic meters per hour"), // - CMD("CMD", "Cubic meters per day"); - - private String name; - private String description; - Units( String name, String description ) { - this.name = name; - this.description = description; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core; + +@SuppressWarnings("nls") +public enum Units { + CFS("CFS", "Cubic feet per second"), // + GPM("GPM", "Gallons per minute"), // + MGD("MGD", "Million gallons per day"), // + IMGD("IMGD", "Imperial Million gallons per day"), // + AFD("AFD", "Acre-feet per day"), // + LPS("LPS", "Liters per second"), // + LPM("LPM", "Liters per minute"), // + MLD("MLD", "Million liters per day"), // + CMH("CMH", "Cubic meters per hour"), // + CMD("CMD", "Cubic meters per day"); + + private String name; + private String description; + Units( String name, String description ) { + this.name = name; + this.description = description; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Junction.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Junction.java index c623dc0cc..a8940e19c 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Junction.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Junction.java @@ -1,49 +1,49 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; - -import org.joda.time.DateTime; - -/** - * A class representing Junction data for a given time instant. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class Junction { - /** - * Current time instant. - */ - public DateTime time; - - public String id; - - public float demand; - - public float head; - - public float pressure; - - public float quality; - - @SuppressWarnings("nls") - @Override - public String toString() { - return id + "\t" + demand + "\t" + head + "\t" + pressure + "\t" + quality; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; + +import org.joda.time.DateTime; + +/** + * A class representing Junction data for a given time instant. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class Junction { + /** + * Current time instant. + */ + public DateTime time; + + public String id; + + public float demand; + + public float head; + + public float pressure; + + public float quality; + + @SuppressWarnings("nls") + @Override + public String toString() { + return id + "\t" + demand + "\t" + head + "\t" + pressure + "\t" + quality; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Pipe.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Pipe.java index d70b1f11d..1fabd6a17 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Pipe.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Pipe.java @@ -1,50 +1,50 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; - -import org.joda.time.DateTime; - -/** - * A class representing pipes data for a given time instant. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class Pipe { - /** - * Current time instant. - */ - public DateTime time; - - public String id; - - public float[] flow = new float[2]; - - public float[] velocity = new float[2]; - - public float headloss; - - public float status; - - @SuppressWarnings("nls") - @Override - public String toString() { - return id + "\t" + flow[0] + "\t" + flow[1] + "\t" + velocity[0] + "\t" + velocity[1] + "\t" + headloss + "\t" + status; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; + +import org.joda.time.DateTime; + +/** + * A class representing pipes data for a given time instant. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class Pipe { + /** + * Current time instant. + */ + public DateTime time; + + public String id; + + public float[] flow = new float[2]; + + public float[] velocity = new float[2]; + + public float headloss; + + public float status; + + @SuppressWarnings("nls") + @Override + public String toString() { + return id + "\t" + flow[0] + "\t" + flow[1] + "\t" + velocity[0] + "\t" + velocity[1] + "\t" + headloss + "\t" + status; + } + +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Pump.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Pump.java index 254ce4e64..6499c744f 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Pump.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Pump.java @@ -1,51 +1,51 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; - -import org.joda.time.DateTime; - -/** - * A class representing pump data for a given time instant. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class Pump { - /** - * Current time instant. - */ - public DateTime time; - - public String id; - - public float flow; - - public float velocity; - - public float headloss; - - public float status; - - public float energy; - - @SuppressWarnings("nls") - @Override - public String toString() { - return id + "\t" + flow + "\t" + velocity + "\t" + headloss + "\t" + status + "\t" + energy; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; + +import org.joda.time.DateTime; + +/** + * A class representing pump data for a given time instant. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class Pump { + /** + * Current time instant. + */ + public DateTime time; + + public String id; + + public float flow; + + public float velocity; + + public float headloss; + + public float status; + + public float energy; + + @SuppressWarnings("nls") + @Override + public String toString() { + return id + "\t" + flow + "\t" + velocity + "\t" + headloss + "\t" + status + "\t" + energy; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Reservoir.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Reservoir.java index f8705b047..dcd576cef 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Reservoir.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Reservoir.java @@ -1,47 +1,47 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; - -import org.joda.time.DateTime; - -/** - * A class representing Reservoir data for a given time instant. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class Reservoir { - /** - * Current time instant. - */ - public DateTime time; - - public String id; - - public float demand; - - public float head; - - public float quality; - - @SuppressWarnings("nls") - @Override - public String toString() { - return id + "\t" + demand + "\t" + head + "\t" + quality; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; + +import org.joda.time.DateTime; + +/** + * A class representing Reservoir data for a given time instant. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class Reservoir { + /** + * Current time instant. + */ + public DateTime time; + + public String id; + + public float demand; + + public float head; + + public float quality; + + @SuppressWarnings("nls") + @Override + public String toString() { + return id + "\t" + demand + "\t" + head + "\t" + quality; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Tank.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Tank.java index 15db71177..6c4b0c1a9 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Tank.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Tank.java @@ -1,49 +1,49 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; - -import org.joda.time.DateTime; - -/** - * A class representing Tank data for a given time instant. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class Tank { - /** - * Current time instant. - */ - public DateTime time; - - public String id; - - public float demand; - - public float head; - - public float pressure; - - public float quality; - - @SuppressWarnings("nls") - @Override - public String toString() { - return id + "\t" + demand + "\t" + head + "\t" + pressure + "\t" + quality; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; + +import org.joda.time.DateTime; + +/** + * A class representing Tank data for a given time instant. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class Tank { + /** + * Current time instant. + */ + public DateTime time; + + public String id; + + public float demand; + + public float head; + + public float pressure; + + public float quality; + + @SuppressWarnings("nls") + @Override + public String toString() { + return id + "\t" + demand + "\t" + head + "\t" + pressure + "\t" + quality; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Valve.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Valve.java index bab8a7a31..f092d64ad 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Valve.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/networktools/epanet/core/types/Valve.java @@ -1,49 +1,49 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; - -import org.joda.time.DateTime; - -/** - * A class representing valve data for a given time instant. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class Valve { - /** - * Current time instant. - */ - public DateTime time; - - public String id; - - public float flow; - - public float velocity; - - public float headloss; - - public float status; - - @SuppressWarnings("nls") - @Override - public String toString() { - return id + "\t" + flow + "\t" + velocity + "\t" + headloss + "\t" + status; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.hortonmachine.modules.networktools.epanet.core.types; + +import org.joda.time.DateTime; + +/** + * A class representing valve data for a given time instant. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class Valve { + /** + * Current time instant. + */ + public DateTime time; + + public String id; + + public float flow; + + public float velocity; + + public float headloss; + + public float status; + + @SuppressWarnings("nls") + @Override + public String toString() { + return id + "\t" + flow + "\t" + velocity + "\t" + headloss + "\t" + status; + } +} diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/package-info.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/package-info.java index cebd807d9..3a318e1ec 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/package-info.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/package-info.java @@ -1,27 +1,27 @@ -/** - *

The Horton Machine modules

- * - *

- * In this package all the modules of the Horton Machine are held. - *

- * - *

- * The structure of the modules has two levels, the first by coarse - * classification of the modules and the second contains the names of the - * modules. - * - *

    - *
  • demmanipulation (first level)
  • - *
  • - *
      - *
    • pitfiller (module name containing the module's code)
    • - *
    • wateroutlet
    • - *
    - *
  • - *
  • geomorphology
  • - *
- *

- * - * - */ -package org.jgrasstools.hortonmachine.modules; +/** + *

The Horton Machine modules

+ * + *

+ * In this package all the modules of the Horton Machine are held. + *

+ * + *

+ * The structure of the modules has two levels, the first by coarse + * classification of the modules and the second contains the names of the + * modules. + * + *

    + *
  • demmanipulation (first level)
  • + *
  • + *
      + *
    • pitfiller (module name containing the module's code)
    • + *
    • wateroutlet
    • + *
    + *
  • + *
  • geomorphology
  • + *
+ *

+ * + * + */ +package org.jgrasstools.hortonmachine.modules; diff --git a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/statistics/kerneldensity/KernelDensity.java b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/statistics/kerneldensity/KernelDensity.java index ef5bb3a08..01a10d45b 100644 --- a/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/statistics/kerneldensity/KernelDensity.java +++ b/hortonmachine/src/main/java/org/jgrasstools/hortonmachine/modules/statistics/kerneldensity/KernelDensity.java @@ -1,168 +1,168 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.modules.statistics.kerneldensity; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; - -import javax.media.jai.KernelJAI; -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jaitools.media.jai.kernel.KernelFactory; -import org.jaitools.media.jai.kernel.KernelFactory.ValueType; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; - -@Description("Kernel Density Estimator (based on the Jaitools project).") -@Author(name = "Andrea Antonello", contact = "http://jaitools.org, www.hydrologis.com") -@Keywords("Kernel Density, Raster") -@Name("kerneldenisty") -@Label(JGTConstants.RASTERPROCESSING) -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class KernelDensity extends JGTModel { - - @Description("The input map.") - @In - public GridCoverage2D inMap = null; - - @Description("The kernel to use (binary=0, cosine=1, distance=2, epanechnikov=3 (default), gaussian=4, inverse_distance=5, quartic=6, triangular=7, triweight=8).") - @In - public int pKernel = 3; - - @Description("The kernel radius to use (default = 10).") - @In - public int pRadius = 10; - - @Description("Use a constant value for the existing input map values instead of the real map value (default = false).") - @In - public boolean doConstant = false; - - @Description("The kernel density estimation.") - @Out - public GridCoverage2D outDensity = null; - - @SuppressWarnings("nls") - @Execute - public void process() throws Exception { - checkNull(inMap); - - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inMap); - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - - ValueType type = KernelFactory.ValueType.EPANECHNIKOV; - switch( pKernel ) { - case 0: - type = KernelFactory.ValueType.BINARY; - break; - case 1: - type = KernelFactory.ValueType.COSINE; - break; - case 2: - type = KernelFactory.ValueType.DISTANCE; - break; - case 4: - type = KernelFactory.ValueType.GAUSSIAN; - break; - case 5: - type = KernelFactory.ValueType.INVERSE_DISTANCE; - break; - case 6: - type = KernelFactory.ValueType.QUARTIC; - break; - case 7: - type = KernelFactory.ValueType.TRIANGULAR; - break; - case 8: - type = KernelFactory.ValueType.TRIWEIGHT; - break; - } - - KernelJAI kernel = KernelFactory.createCircle(pRadius, type); - - RenderedImage inImg = inMap.getRenderedImage(); - RandomIter inIter = RandomIterFactory.create(inImg, null); - - WritableRaster outWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); - WritableRandomIter outIter = RandomIterFactory.createWritable(outWR, null); - - float[] kernelData = kernel.getKernelData(); - - pm.beginTask("Estimating kernel density...", cols - 2 * pRadius); - for( int c = pRadius; c < cols - pRadius; c++ ) { - for( int r = pRadius; r < rows - pRadius; r++ ) { - double inputValue = inIter.getSampleDouble(c, r, 0); - if (isNovalue(inputValue)) { - continue; - } - - if (doConstant) - inputValue = 1.0; - - int k = 0; - for( int kc = -pRadius; kc <= pRadius; kc++ ) { - for( int kr = -pRadius; kr <= pRadius; kr++, k++ ) { - // data[gridCoords.y + j][gridCoords.x + i] += cdata[k] * centreValue; - double outputValue = outIter.getSampleDouble(c + kc, r + kr, 0); - if (isNovalue(outputValue)) { - outputValue = 0; - } - outputValue = outputValue + kernelData[k] * inputValue; - outIter.setSample(c + kc, r + kr, 0, outputValue); - } - } - } - pm.worked(1); - } - pm.done(); - - pm.beginTask("Finalizing...", cols); - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double outputValue = outIter.getSampleDouble(c, r, 0); - if (isNovalue(outputValue)) { - outIter.setSample(c, r, 0, 0.0); - } - } - pm.worked(1); - } - pm.done(); - - outDensity = CoverageUtilities.buildCoverage("kerneldensity", outWR, regionMap, inMap.getCoordinateReferenceSystem()); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.modules.statistics.kerneldensity; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; + +import javax.media.jai.KernelJAI; +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jaitools.media.jai.kernel.KernelFactory; +import org.jaitools.media.jai.kernel.KernelFactory.ValueType; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; + +@Description("Kernel Density Estimator (based on the Jaitools project).") +@Author(name = "Andrea Antonello", contact = "http://jaitools.org, www.hydrologis.com") +@Keywords("Kernel Density, Raster") +@Name("kerneldenisty") +@Label(JGTConstants.RASTERPROCESSING) +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class KernelDensity extends JGTModel { + + @Description("The input map.") + @In + public GridCoverage2D inMap = null; + + @Description("The kernel to use (binary=0, cosine=1, distance=2, epanechnikov=3 (default), gaussian=4, inverse_distance=5, quartic=6, triangular=7, triweight=8).") + @In + public int pKernel = 3; + + @Description("The kernel radius to use (default = 10).") + @In + public int pRadius = 10; + + @Description("Use a constant value for the existing input map values instead of the real map value (default = false).") + @In + public boolean doConstant = false; + + @Description("The kernel density estimation.") + @Out + public GridCoverage2D outDensity = null; + + @SuppressWarnings("nls") + @Execute + public void process() throws Exception { + checkNull(inMap); + + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inMap); + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + + ValueType type = KernelFactory.ValueType.EPANECHNIKOV; + switch( pKernel ) { + case 0: + type = KernelFactory.ValueType.BINARY; + break; + case 1: + type = KernelFactory.ValueType.COSINE; + break; + case 2: + type = KernelFactory.ValueType.DISTANCE; + break; + case 4: + type = KernelFactory.ValueType.GAUSSIAN; + break; + case 5: + type = KernelFactory.ValueType.INVERSE_DISTANCE; + break; + case 6: + type = KernelFactory.ValueType.QUARTIC; + break; + case 7: + type = KernelFactory.ValueType.TRIANGULAR; + break; + case 8: + type = KernelFactory.ValueType.TRIWEIGHT; + break; + } + + KernelJAI kernel = KernelFactory.createCircle(pRadius, type); + + RenderedImage inImg = inMap.getRenderedImage(); + RandomIter inIter = RandomIterFactory.create(inImg, null); + + WritableRaster outWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); + WritableRandomIter outIter = RandomIterFactory.createWritable(outWR, null); + + float[] kernelData = kernel.getKernelData(); + + pm.beginTask("Estimating kernel density...", cols - 2 * pRadius); + for( int c = pRadius; c < cols - pRadius; c++ ) { + for( int r = pRadius; r < rows - pRadius; r++ ) { + double inputValue = inIter.getSampleDouble(c, r, 0); + if (isNovalue(inputValue)) { + continue; + } + + if (doConstant) + inputValue = 1.0; + + int k = 0; + for( int kc = -pRadius; kc <= pRadius; kc++ ) { + for( int kr = -pRadius; kr <= pRadius; kr++, k++ ) { + // data[gridCoords.y + j][gridCoords.x + i] += cdata[k] * centreValue; + double outputValue = outIter.getSampleDouble(c + kc, r + kr, 0); + if (isNovalue(outputValue)) { + outputValue = 0; + } + outputValue = outputValue + kernelData[k] * inputValue; + outIter.setSample(c + kc, r + kr, 0, outputValue); + } + } + } + pm.worked(1); + } + pm.done(); + + pm.beginTask("Finalizing...", cols); + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double outputValue = outIter.getSampleDouble(c, r, 0); + if (isNovalue(outputValue)) { + outIter.setSample(c, r, 0, 0.0); + } + } + pm.worked(1); + } + pm.done(); + + outDensity = CoverageUtilities.buildCoverage("kerneldensity", outWR, regionMap, inMap.getCoordinateReferenceSystem()); + } + +} diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/basinshape/BasinShape.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/basinshape/BasinShape.html index 06845b93c..e859914bf 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/basinshape/BasinShape.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/basinshape/BasinShape.html @@ -1,26 +1,26 @@ -Creates a vector map of the subbasins created with the Netnumbering module. -
-
-

Inputs

-
    -
  • the file containing the elevations (obtained with Pitfiller)
  • -
  • the file containing the extracted numbered subbasins for an area (obtained with Netnumbering)
  • -
-
-
-

Output

-
    -
  • the file containing the extracted basins vector map
  • -
-
-
-

Notes

-The program will add the number ID of each basin obtained in Netnumbering as an attribute in the vector map. Other calculated attributes are: -
    -
  • area in m2
  • -
  • perimeter in m
  • -
  • max elevation in m over the sea level
  • -
  • min elevation in m over the sea level
  • -
  • average elevation in m over the sea level
  • -
  • elevation of the centroid of the basin in m over the sea level
  • -
+Creates a vector map of the subbasins created with the Netnumbering module. +
+
+

Inputs

+
    +
  • the file containing the elevations (obtained with Pitfiller)
  • +
  • the file containing the extracted numbered subbasins for an area (obtained with Netnumbering)
  • +
+
+
+

Output

+
    +
  • the file containing the extracted basins vector map
  • +
+
+
+

Notes

+The program will add the number ID of each basin obtained in Netnumbering as an attribute in the vector map. Other calculated attributes are: +
    +
  • area in m2
  • +
  • perimeter in m
  • +
  • max elevation in m over the sea level
  • +
  • min elevation in m over the sea level
  • +
  • average elevation in m over the sea level
  • +
  • elevation of the centroid of the basin in m over the sea level
  • +
diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/rescaleddistance/RescaledDistance.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/rescaleddistance/RescaledDistance.html index 1cbf4faa6..41d88fc47 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/rescaleddistance/RescaledDistance.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/rescaleddistance/RescaledDistance.html @@ -1,31 +1,31 @@ -Calculates the rescaled distance of each pixel from the outlet. Such distance is so defined: - - - - -
- x' = xc + rxh -
-where: -
    -
  • xc is the distance along the channels
  • -
  • r=c/ch the ratio between the speed in the channel state -c and the speed in the hillslopes ch
  • -
  • xh the distance along the hillslopes
  • -
    -
    -

    Inputs

    -
      -
    • the file containing the matrix of the drainage directions (obtained with DrainDir)
    • -
    • the file containing the net (obtained with ExtractNetwork)
    • -
    -
    -
    -

    Output

    -
      -
    • the file containing the matrix of the rescaled distances
    • -
    -
    -
    -

    Notes

    -The program requests also the ratio r between speed in the channel and speed in hillslopes. The speed in channels is always greater than that in hillslopes. +Calculates the rescaled distance of each pixel from the outlet. Such distance is so defined: + + + + +
    + x' = xc + rxh +
    +where: +
      +
    • xc is the distance along the channels
    • +
    • r=c/ch the ratio between the speed in the channel state +c and the speed in the hillslopes ch
    • +
    • xh the distance along the hillslopes
    • +
      +
      +

      Inputs

      +
        +
      • the file containing the matrix of the drainage directions (obtained with DrainDir)
      • +
      • the file containing the net (obtained with ExtractNetwork)
      • +
      +
      +
      +

      Output

      +
        +
      • the file containing the matrix of the rescaled distances
      • +
      +
      +
      +

      Notes

      +The program requests also the ratio r between speed in the channel and speed in hillslopes. The speed in channels is always greater than that in hillslopes. diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/topindex/TopIndex.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/topindex/TopIndex.html index 07b895088..43cca5b3c 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/topindex/TopIndex.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/basin/topindex/TopIndex.html @@ -1,32 +1,32 @@ -Calculates the topographic index of a basin defined as: - - - - -
      - log (A/s) - mu -
      -where: -
        -
      • A is the contributing area in one point
      • -
      • s the slope
      • -
      • mu = 1/N sumi log(Ai/si) is the mean value of the logarithm over the whole basin (N is the number of pixels belonging to the basin)
      • -
      -
      -It is an index which is necessary to recognize the sites generating -dunnian surface flow in a similar way. Sites with higher topographic -index become saturated before than sites with lower topographic -index. -
      -
      -

      Inputs

      -
        -
      • the file containing the matrix of the contributing areas (obtained with DrainDir or Tca)
      • -
      • the file containing the matrix of the slope (obtained with Gradient or Slope)
      • -
      -
      -
      -

      Output

      -
        -
      • the file containing the matrix of the topographic indexes
      • -
      +Calculates the topographic index of a basin defined as: + + + + +
      + log (A/s) - mu +
      +where: +
        +
      • A is the contributing area in one point
      • +
      • s the slope
      • +
      • mu = 1/N sumi log(Ai/si) is the mean value of the logarithm over the whole basin (N is the number of pixels belonging to the basin)
      • +
      +
      +It is an index which is necessary to recognize the sites generating +dunnian surface flow in a similar way. Sites with higher topographic +index become saturated before than sites with lower topographic +index. +
      +
      +

      Inputs

      +
        +
      • the file containing the matrix of the contributing areas (obtained with DrainDir or Tca)
      • +
      • the file containing the matrix of the slope (obtained with Gradient or Slope)
      • +
      +
      +
      +

      Output

      +
        +
      • the file containing the matrix of the topographic indexes
      • +
      diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/demmanipulation/markoutlets/Markoutlets.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/demmanipulation/markoutlets/Markoutlets.html index 06451ce73..61c8bea90 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/demmanipulation/markoutlets/Markoutlets.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/demmanipulation/markoutlets/Markoutlets.html @@ -1,19 +1,19 @@ -Marks all the outlets of the considered region on the drainage directions map with the conventional value 10. In fact some applications in JGrassTools request that the outlets are specified explicitly. -
      -
      -

      Inputs

      -
        -
      • the file containing the matrix of the drainage directions to -modify (obtained with FlowDirections or DrainDir)
      • -
      -
      -
      -

      Output

      -
        -
      • the file containing the matrix of the flow data assigned in input -with the outlets set equal to 10
      • -
      -
      -
      -

      Notes

      -The program works following the drainage directions until it finds a value that is not a drainage direction. Then it marks the point directly upriver as outlet. +Marks all the outlets of the considered region on the drainage directions map with the conventional value 10. In fact some applications in JGrassTools request that the outlets are specified explicitly. +
      +
      +

      Inputs

      +
        +
      • the file containing the matrix of the drainage directions to +modify (obtained with FlowDirections or DrainDir)
      • +
      +
      +
      +

      Output

      +
        +
      • the file containing the matrix of the flow data assigned in input +with the outlets set equal to 10
      • +
      +
      +
      +

      Notes

      +The program works following the drainage directions until it finds a value that is not a drainage direction. Then it marks the point directly upriver as outlet. diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/demmanipulation/wateroutlet/Wateroutlet.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/demmanipulation/wateroutlet/Wateroutlet.html index 820461da0..c333ec7ed 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/demmanipulation/wateroutlet/Wateroutlet.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/demmanipulation/wateroutlet/Wateroutlet.html @@ -1,19 +1,19 @@ -Generates a watershed basin from a drainage direction map and a set of coordinates representing the outlet point of watershed. -
      -
      -

      Inputs

      -
        -
      • the map containing the drainage directions (obtained with Markoutlets, DrainDir, FlowDirections)
      • -
      • the coordinates of the water outlet (east and north)
      • -
      • the map containing the channel network (obtained with ExtractNetwork)
      • -
      -
      -
      -

      Output

      -
        -
      • the basin extracted mask (basin)
      • -
      -
      -
      -

      Notes

      -The most important thing in this module is to choose a good water outlet. If the coordinates are unknown click with the mouse on the network map ensuring to select a pixel on the extracted network (value 2 in the network map). +Generates a watershed basin from a drainage direction map and a set of coordinates representing the outlet point of watershed. +
      +
      +

      Inputs

      +
        +
      • the map containing the drainage directions (obtained with Markoutlets, DrainDir, FlowDirections)
      • +
      • the coordinates of the water outlet (east and north)
      • +
      • the map containing the channel network (obtained with ExtractNetwork)
      • +
      +
      +
      +

      Output

      +
        +
      • the basin extracted mask (basin)
      • +
      +
      +
      +

      Notes

      +The most important thing in this module is to choose a good water outlet. If the coordinates are unknown click with the mouse on the network map ensuring to select a pixel on the extracted network (value 2 in the network map). diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/geomorphology/tca/Tca.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/geomorphology/tca/Tca.html index 0e3fd7b34..18d49771c 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/geomorphology/tca/Tca.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/geomorphology/tca/Tca.html @@ -1,17 +1,17 @@ -The upslope catchment (or simply contributing) areas represent the planar projection of the areas afferent to a point in the basin. Once the drainage directions have been defined, it is possible to calculate, for each site, the total drainage area afferent to it, indicated as TCA (Total Contributing Area). -
      -
      -

      Inputs

      -
        -
      • the file containing the matrix of drainage directions (obtained with Markoutlets or DrainDir, mflow})
      • -
      -
      -
      -

      Output

      -
        -
      • the file containing the matrix of the contributing areas (tca)
      • -
      -
      -
      -

      Notes

      -The values in the TCA output map are in number of pixels upstream, so they should be multiplied by the area of the pixels to have the area in km2. +The upslope catchment (or simply contributing) areas represent the planar projection of the areas afferent to a point in the basin. Once the drainage directions have been defined, it is possible to calculate, for each site, the total drainage area afferent to it, indicated as TCA (Total Contributing Area). +
      +
      +

      Inputs

      +
        +
      • the file containing the matrix of drainage directions (obtained with Markoutlets or DrainDir, mflow})
      • +
      +
      +
      +

      Output

      +
        +
      • the file containing the matrix of the contributing areas (tca)
      • +
      +
      +
      +

      Notes

      +The values in the TCA output map are in number of pixels upstream, so they should be multiplied by the area of the pixels to have the area in km2. diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/geomorphology/tca3d/Tca3d.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/geomorphology/tca3d/Tca3d.html index 6655d37f5..bf26d98ba 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/geomorphology/tca3d/Tca3d.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/geomorphology/tca3d/Tca3d.html @@ -1,18 +1,18 @@ -The contributing areas 3d represent the real draining areas afferent to a point in the basin, not only its projection on the plane as the Tca do. -
      -
      -

      Inputs

      -
        -
      • the file containing the matrix of pitless elevations (obtained with pitfiller)
      • -
      • the file containing the matrix of drainage directions (obtained with Markoutlets or DrainDir)
      • -
      -
      -
      -

      Output

      -
        -
      • the file containing the matrix of the real areas
      • -
      -
      -
      -

      Notes

      +The contributing areas 3d represent the real draining areas afferent to a point in the basin, not only its projection on the plane as the Tca do. +
      +
      +

      Inputs

      +
        +
      • the file containing the matrix of pitless elevations (obtained with pitfiller)
      • +
      • the file containing the matrix of drainage directions (obtained with Markoutlets or DrainDir)
      • +
      +
      +
      +

      Output

      +
        +
      • the file containing the matrix of the real areas
      • +
      +
      +
      +

      Notes

      The way to calculate the 3D area is to approximate with triangles the DEM surface and then summing the triangles area going downstream from sources to outlet. \ No newline at end of file diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hillslopeanalyses/tc/Tc.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hillslopeanalyses/tc/Tc.html index 9bc9d282b..01aa26268 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hillslopeanalyses/tc/Tc.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hillslopeanalyses/tc/Tc.html @@ -1,41 +1,41 @@ -The Tc module subdivides the sites of a basin in the 9 topographic classes identified by the -longitudinal and transversal curvatures. -
      -
      -

      Inputs

      -
        -
      • The !GridCoverage containing with the longitudinal curvatures;
      • -
      • The !GridCoverage containing with the normal curvatures;
      • -
      • The threshold value for the longitudinal curvatures;
      • -
      • The threshold value for the normal curvatures;
      • -
      -
      -
      -

      Output

      -The program produces two different output matrixes, one with the 9 classes schematized conventionally in the following way: -
        -
      • 10 planar -planar sites
      • -
      • 20 convex-planar sites
      • -
      • 30 concave- planar sites
      • -
      • 40 planar- convex sites
      • -
      • 50 convex-convex sites
      • -
      • 60 concave-convex sites
      • -
      • 70 planar-concave sites
      • -
      • 80 convex-concave sites
      • -
      • 90 concave-concave sites.
      • -
      -The second output file contains an aggregation of these classes in the three fundamentals (concave, convex and planar sites), -indexed as follows: -
        -
      • 15 concave sites (classes 30,70, 90)
      • -
      • 25 planar sites (class 10)
      • -
      • 35 convex sites (classes 20, 40, 50, 60, 80).
      • -
      -
      -
      -

      References

      -
        -
      • [Bibliography#17, 17], A. Parsons, 1988
      • -
      -
      -
      +The Tc module subdivides the sites of a basin in the 9 topographic classes identified by the +longitudinal and transversal curvatures. +
      +
      +

      Inputs

      +
        +
      • The !GridCoverage containing with the longitudinal curvatures;
      • +
      • The !GridCoverage containing with the normal curvatures;
      • +
      • The threshold value for the longitudinal curvatures;
      • +
      • The threshold value for the normal curvatures;
      • +
      +
      +
      +

      Output

      +The program produces two different output matrixes, one with the 9 classes schematized conventionally in the following way: +
        +
      • 10 planar -planar sites
      • +
      • 20 convex-planar sites
      • +
      • 30 concave- planar sites
      • +
      • 40 planar- convex sites
      • +
      • 50 convex-convex sites
      • +
      • 60 concave-convex sites
      • +
      • 70 planar-concave sites
      • +
      • 80 convex-concave sites
      • +
      • 90 concave-concave sites.
      • +
      +The second output file contains an aggregation of these classes in the three fundamentals (concave, convex and planar sites), +indexed as follows: +
        +
      • 15 concave sites (classes 30,70, 90)
      • +
      • 25 planar sites (class 10)
      • +
      • 35 convex sites (classes 20, 40, 50, 60, 80).
      • +
      +
      +
      +

      References

      +
        +
      • [Bibliography#17, 17], A. Parsons, 1988
      • +
      +
      +
      diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/hillshade/Hillshade.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/hillshade/Hillshade.html index d2679923e..dd12967ca 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/hillshade/Hillshade.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/hillshade/Hillshade.html @@ -1,16 +1,16 @@ -Evaluates the hillshade, considering the sunlight and the shaded relief. -
      -
      -

      Inputs

      -
        -
      • the file containing the matrix of the elevations, usually the DEM or the output of pitfiller
      • -
      • the minimum diffuse insolation (which default value is set to 0)
      • -
      • the azimuth (which default value is setted to 360)
      • -
      • the elevation of the sun (which default value is set to 90)
      • -
      -
      -
      -

      Output

      -
        -
      • the matrix containing the hillshade values
      • +Evaluates the hillshade, considering the sunlight and the shaded relief. +
        +
        +

        Inputs

        +
          +
        • the file containing the matrix of the elevations, usually the DEM or the output of pitfiller
        • +
        • the minimum diffuse insolation (which default value is set to 0)
        • +
        • the azimuth (which default value is setted to 360)
        • +
        • the elevation of the sun (which default value is set to 90)
        • +
        +
        +
        +

        Output

        +
          +
        • the matrix containing the hillshade values
        \ No newline at end of file diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/insolation/Insolation.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/insolation/Insolation.html index 10a17e173..bc74a0450 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/insolation/Insolation.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/insolation/Insolation.html @@ -1,21 +1,21 @@ -Estimates the amount of power due to the incident radiation in a specific period. -
        -The output insolation is in Mega Joule (MJ) and the period of time is defined from the starting day (e.g. 2010-01-01) and the last day of the simulation (e.g. 2010-12-31). -
        -
        -

        Inputs

        -
          -
        • the file containing the matrix of the elevations, usually the DEM or the output of pitfiller
        • -
        • the first day of simulation
        • -
        • the last day of simulation
        • -
        -
        -
        -

        Output

        -
          -
        • the file containing the power matrix
        • -
        -
        -
        -

        Notes

        +Estimates the amount of power due to the incident radiation in a specific period. +
        +The output insolation is in Mega Joule (MJ) and the period of time is defined from the starting day (e.g. 2010-01-01) and the last day of the simulation (e.g. 2010-12-31). +
        +
        +

        Inputs

        +
          +
        • the file containing the matrix of the elevations, usually the DEM or the output of pitfiller
        • +
        • the first day of simulation
        • +
        • the last day of simulation
        • +
        +
        +
        +

        Output

        +
          +
        • the file containing the power matrix
        • +
        +
        +
        +

        Notes

        Please take care to insert the date in the format YYYY-MM-DD \ No newline at end of file diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/Peakflow.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/Peakflow.html index af493cd6c..3ee345ef5 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/Peakflow.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/peakflow/Peakflow.html @@ -1,37 +1,37 @@ -Calculates the maximum peak discharge using the approach of the width function. -The model can work in two different modes: -
          -
        • statistical mode: giving as input the IDF curves parameters for the estimation of the rainfall
        • -
        • real event mode: providing a file with a measured rainfall event
        • -
        -In the first case the model will estimate the maximum discharge and also the maximum duration of the statistical rainfall that produces the maximum discharge. The statistical rainfall is calculated considering the IDF curves parameters and a constant rainfall for the whole duration. -
        -In case of real rainfall event the input file with the measured rainfall should follow the format: -
        -
        -
        YYYY-MM-DD HH:MI rainvalue
        -
        -
        -
        -

        Inputs

        -
          -
        • the file containing the map of topindex (obtained with TopIndex)
        • -
        • the file containing the map of the rescaled distance for the saturated sites (obtained with RescaledDistance)
        • -
        • the file containing the map of the rescaled distance for the unsaturated sites (obtained with RescaledDistance)
        • -
        • if we choose to run the model with a real event,the file containing the measured rainfall event
        • -
        -
        -
        -

        Output

        -
          -
        • the file containing the calculated discharge at basin outlet
        • -
        -
        -
        -

        Notes

        -To run the model other parameters are required: -
          -
        • the average (time and space) velocity of the flow in the channels
        • -
        • the saturation percentage of the basin
        • -
        • the hydraulic diffusion parameter
        • +Calculates the maximum peak discharge using the approach of the width function. +The model can work in two different modes: +
            +
          • statistical mode: giving as input the IDF curves parameters for the estimation of the rainfall
          • +
          • real event mode: providing a file with a measured rainfall event
          • +
          +In the first case the model will estimate the maximum discharge and also the maximum duration of the statistical rainfall that produces the maximum discharge. The statistical rainfall is calculated considering the IDF curves parameters and a constant rainfall for the whole duration. +
          +In case of real rainfall event the input file with the measured rainfall should follow the format: +
          +
          +
          YYYY-MM-DD HH:MI rainvalue
          +
          +
          +
          +

          Inputs

          +
            +
          • the file containing the map of topindex (obtained with TopIndex)
          • +
          • the file containing the map of the rescaled distance for the saturated sites (obtained with RescaledDistance)
          • +
          • the file containing the map of the rescaled distance for the unsaturated sites (obtained with RescaledDistance)
          • +
          • if we choose to run the model with a real event,the file containing the measured rainfall event
          • +
          +
          +
          +

          Output

          +
            +
          • the file containing the calculated discharge at basin outlet
          • +
          +
          +
          +

          Notes

          +To run the model other parameters are required: +
            +
          • the average (time and space) velocity of the flow in the channels
          • +
          • the saturation percentage of the basin
          • +
          • the hydraulic diffusion parameter
          \ No newline at end of file diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/shalstab/Shalstab.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/shalstab/Shalstab.html index c0e4dafaa..47a2b6500 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/shalstab/Shalstab.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/shalstab/Shalstab.html @@ -1,56 +1,56 @@ -This is a version of the Shalstab stability model for the evaluation of the proneness to instability of each pixel based on an infinite slope model with steady hydrological conditions. -
          -The output is composed of two maps: the map of the potentially unstable pixels and the map of the minimum steady state rainfall to cause instability. -
          -The parameters used for the evaluation of the stability conditions are: -
            -
          • the contributing area draining across
          • -
          • the contour length of the lower bound
          • -
          • the soil transmissivity when saturated
          • -
          • the local slope
          • -
          • the ratio between soil bulk density and water density
          • -
          • the net rainfall rate
          • -
          • the gravitational acceleration
          • -
          • the soil thickness
          • -
          • the effective soil cohesion
          • -
          -For some of these parameters it is possible to insert as input either a map with the spatial distribution or a single constant value that will be used over all the basin (trasmissivity, tgphi, cohesion, hs, q, rho). There is the possibility to run a simulation where some parameters are maps and others are constant values. - -The output is a map of values with the following meaning: -
            -
          • 1 : unconditionally unstable
          • -
          • 2 : unconditionally stable
          • -
          • 3 : stable
          • -
          • 4 : unstable
          • -
          • 8888 : pixel characterized by rock (if soil thickness < 0.01)
          • -
          - -It will be evaluated also the minimum rainfall to instability, and the output is a map of values with the following meaning: -
            -
          • 0 : unconditionally stable
          • -
          • 1 : 0 <= qcrit < 50
          • -
          • 2 : 50 <= qcrit < 100
          • -
          • 3 : 100 <= qcrit < 200
          • -
          • 4 : qcrit >= 200
          • -
          • 5 : unconditionally unstable
          • -
          -
          -
          -

          Inputs

          -
            -
          • the map of slope
          • -
          • the map of a/b
          • -
          • a constant value or the map of trasmissivity
          • -
          • a constant value or the map of the tangent of the friction angle
          • -
          • a constant value or the map of cohesion
          • -
          • a constant value or the map of soil thickness
          • -
          • a constant value or the map of effective precipitations (net rainfall)
          • -
          • a constant value or the map of the ratio between soil bulk density and water density
          • -
          -
          -
          -

          Output

          -
            -
          • the map of the minimum rainfall to instability
          • -
          • the map of stability classes
          • +This is a version of the Shalstab stability model for the evaluation of the proneness to instability of each pixel based on an infinite slope model with steady hydrological conditions. +
            +The output is composed of two maps: the map of the potentially unstable pixels and the map of the minimum steady state rainfall to cause instability. +
            +The parameters used for the evaluation of the stability conditions are: +
              +
            • the contributing area draining across
            • +
            • the contour length of the lower bound
            • +
            • the soil transmissivity when saturated
            • +
            • the local slope
            • +
            • the ratio between soil bulk density and water density
            • +
            • the net rainfall rate
            • +
            • the gravitational acceleration
            • +
            • the soil thickness
            • +
            • the effective soil cohesion
            • +
            +For some of these parameters it is possible to insert as input either a map with the spatial distribution or a single constant value that will be used over all the basin (trasmissivity, tgphi, cohesion, hs, q, rho). There is the possibility to run a simulation where some parameters are maps and others are constant values. + +The output is a map of values with the following meaning: +
              +
            • 1 : unconditionally unstable
            • +
            • 2 : unconditionally stable
            • +
            • 3 : stable
            • +
            • 4 : unstable
            • +
            • 8888 : pixel characterized by rock (if soil thickness < 0.01)
            • +
            + +It will be evaluated also the minimum rainfall to instability, and the output is a map of values with the following meaning: +
              +
            • 0 : unconditionally stable
            • +
            • 1 : 0 <= qcrit < 50
            • +
            • 2 : 50 <= qcrit < 100
            • +
            • 3 : 100 <= qcrit < 200
            • +
            • 4 : qcrit >= 200
            • +
            • 5 : unconditionally unstable
            • +
            +
            +
            +

            Inputs

            +
              +
            • the map of slope
            • +
            • the map of a/b
            • +
            • a constant value or the map of trasmissivity
            • +
            • a constant value or the map of the tangent of the friction angle
            • +
            • a constant value or the map of cohesion
            • +
            • a constant value or the map of soil thickness
            • +
            • a constant value or the map of effective precipitations (net rainfall)
            • +
            • a constant value or the map of the ratio between soil bulk density and water density
            • +
            +
            +
            +

            Output

            +
              +
            • the map of the minimum rainfall to instability
            • +
            • the map of stability classes
            \ No newline at end of file diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/skyview/Skyview.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/skyview/Skyview.html index a5e5f48fa..e60c29554 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/skyview/Skyview.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/hydrogeomorphology/skyview/Skyview.html @@ -1,17 +1,17 @@ -It estimates the fraction of the sky which is visible from the point, a number between 0 and 1. -
            -The sky view factor is 1 in a flat area and it decreases in a valley, the more narrow the valley is, the smaller it is. -
            -The algorithm implemented is derived from Corripio:2003. -
            -
            -

            Inputs

            -
              -
            • the file containing the matrix of the elevations, usually the DEM or the output of pitfiller
            • -
            -
            -
            -

            Output

            -
              -
            • the file containing the sky view factor matrix (as numbers between 0 and 1)
            • +It estimates the fraction of the sky which is visible from the point, a number between 0 and 1. +
              +The sky view factor is 1 in a flat area and it decreases in a valley, the more narrow the valley is, the smaller it is. +
              +The algorithm implemented is derived from Corripio:2003. +
              +
              +

              Inputs

              +
                +
              • the file containing the matrix of the elevations, usually the DEM or the output of pitfiller
              • +
              +
              +
              +

              Output

              +
                +
              • the file containing the sky view factor matrix (as numbers between 0 and 1)
              \ No newline at end of file diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/network/netnumbering/NetNumbering.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/network/netnumbering/NetNumbering.html index 173513fc0..58ab95843 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/network/netnumbering/NetNumbering.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/network/netnumbering/NetNumbering.html @@ -1,30 +1,30 @@ -Assigns numbers to the network's links. -
              -It can be used by Hillslope2ChannelAttribute to label the hillslope flowing into the link with the same number. -This module can run in three different modes: -
                -
              • mode 0: normal way
              • -
              • mode 1: inserting a threshold on TCA to split the network
              • -
              • mode 2: splitting the network in a set of defined points
              • -
              -
              -
              -

              Inputs

              -
                -
              • the file containing the drainage directions (obtained with Markoutlets, DrainDir, FlowDirections)
              • -
              • the file containing the channel network (obtained with ExtractNetwork)
              • -
              • if we choose to define the maximum value of TCA of each subbasin,the file containing the total contributing areas (obtained -with DrainDir, Tca or Multitca)
              • -
              • if we choose to split the network in a set of defined positions, the vector point map containing the monitoring points
              • -
              -
              -
              -

              Output

              -
                -
              • the file containing the net with the streams numerated
              • -
              • the file containing the sub-basins
              • -
              -
              -
              -

              Notes

              +Assigns numbers to the network's links. +
              +It can be used by Hillslope2ChannelAttribute to label the hillslope flowing into the link with the same number. +This module can run in three different modes: +
                +
              • mode 0: normal way
              • +
              • mode 1: inserting a threshold on TCA to split the network
              • +
              • mode 2: splitting the network in a set of defined points
              • +
              +
              +
              +

              Inputs

              +
                +
              • the file containing the drainage directions (obtained with Markoutlets, DrainDir, FlowDirections)
              • +
              • the file containing the channel network (obtained with ExtractNetwork)
              • +
              • if we choose to define the maximum value of TCA of each subbasin,the file containing the total contributing areas (obtained +with DrainDir, Tca or Multitca)
              • +
              • if we choose to split the network in a set of defined positions, the vector point map containing the monitoring points
              • +
              +
              +
              +

              Output

              +
                +
              • the file containing the net with the streams numerated
              • +
              • the file containing the sub-basins
              • +
              +
              +
              +

              Notes

              The algorithm start from the channel heads which are numbered first. Then, starting again from each source, the drainage direction are followed till a junction is found. If the link downhill the junction was already numbered, a new source is chosen. Otherwise the network is scanned downstream ad a new number is attributed to the link's pixels. \ No newline at end of file diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/network/netshape2flow/Netshape2Flow.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/network/netshape2flow/Netshape2Flow.html index ae93d577c..8382741c4 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/network/netshape2flow/Netshape2Flow.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/network/netshape2flow/Netshape2Flow.html @@ -1,30 +1,30 @@ -Transforms the network shape to a raster net map and an additional raster flow map along the network. -
              -The input network vector should follow these guidelines: -
                -
              • links have to be drawn from upstream to downstream
              • -
              • confluence should be of maximum 2 elements
              • -
              • links between a junction and the next have to be a single geometry
              • -
              -
              -It can be used as an input for the drain map to force drainage directions, there is the possibility to create a shapefile of problem points to be used for -a revision of the original vector network. -
              -
              -

              Inputs

              -
                -
              • the network vector map
              • -
              • the field of the attribute table of the network vector that defines the ACTIVE links, non active links will be not considered for rasterization; -the attribute field has to have the type of a String with Yes or No as active or non active
              • -
              • the field of the attribute table of the network vector that defines the progressive ID for the features
              • -
              -
              -
              -

              Output

              -
                -
              • the file containing the flow map on the net
              • -
              • the file containing the raster network map
              • -
              • if requested, the problem point vector file
              • -
              -
              -
              +Transforms the network shape to a raster net map and an additional raster flow map along the network. +
              +The input network vector should follow these guidelines: +
                +
              • links have to be drawn from upstream to downstream
              • +
              • confluence should be of maximum 2 elements
              • +
              • links between a junction and the next have to be a single geometry
              • +
              +
              +It can be used as an input for the drain map to force drainage directions, there is the possibility to create a shapefile of problem points to be used for +a revision of the original vector network. +
              +
              +

              Inputs

              +
                +
              • the network vector map
              • +
              • the field of the attribute table of the network vector that defines the ACTIVE links, non active links will be not considered for rasterization; +the attribute field has to have the type of a String with Yes or No as active or non active
              • +
              • the field of the attribute table of the network vector that defines the progressive ID for the features
              • +
              +
              +
              +

              Output

              +
                +
              • the file containing the flow map on the net
              • +
              • the file containing the raster network map
              • +
              • if requested, the problem point vector file
              • +
              +
              +
              diff --git a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/statistics/kriging/Kriging.html b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/statistics/kriging/Kriging.html index 61ad3afea..084848701 100644 --- a/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/statistics/kriging/Kriging.html +++ b/hortonmachine/src/main/resources/org/jgrasstools/hortonmachine/modules/statistics/kriging/Kriging.html @@ -1,38 +1,38 @@ -An implementation of the ordinary kriging algorithm. This is a time dependent model, it runs over all the timesteps in the input data file. -
              -The Kriging is a group of geostatistical techniques to interpolate the value of a random field (e.g., the elevation, z, of the landscape as a function of the geographic location) at an unobserved location from observations of its value at nearby locations. (for more details see kriging. -
              -
              -The interpolation algorithm used for Kriging can be one of the following two: -
                -
              • integral scale
              • -
              • gaussian variogram model
              • -
              -When selecting the interpolation function the user should provide the specific requested data. -
              -
              -It is possible run the model in 4 modes: -
                -
              • mode = 0: output values on a non-regular grid, it should be provided the vector of points where to interpolate pointsToInterpolate. This is a 2-D interpolation, so the z coordinates are not considered.
              • -
              • mode = 1: output values on a non-regular grid, it should be provided the vector of points where to interpolate pointsToInterpolate. This is a 3-D interpolation.
              • -
              • mode = 2: output values on a regular grid, it should be provided the raster gridToInterpolate where to interpolate. This is a 2-D interpolation so the z coordinates are not considered. NOT YET IMPLEMENTED
              • -
              • mode = 3: output values on a regular grid, it should be provided the raster gridToInterpolate where to interpolate. This is a 3-D interpolation, so the provided raster data have to contain a elevations.NOT YET IMPLEMENTED
              • -
              -
              -
              -

              Inputs

              -
                -
              • the vector of the measurement point, containing the position of the stations where data are measured
              • -
              • the name of the attribute of the vector of the measurement points defining the STATION ID
              • -
              • the name of the attribute of the vector of the measurement points defining the STATION ELEVATION
              • -
              • the text file with the measured data in each station to be interpolated
              • -
              • the vector of the points in which the data have to be interpolated
              • -
              • the field of the interpolated vector points, defining the POINT ID
              • -
              • the field of the interpolated vector points, defining the POINT ELEVATION
              • -
              -
              -
              -

              Output

              -
                -
              • the file containing the interpolated data
              • +An implementation of the ordinary kriging algorithm. This is a time dependent model, it runs over all the timesteps in the input data file. +
                +The Kriging is a group of geostatistical techniques to interpolate the value of a random field (e.g., the elevation, z, of the landscape as a function of the geographic location) at an unobserved location from observations of its value at nearby locations. (for more details see kriging. +
                +
                +The interpolation algorithm used for Kriging can be one of the following two: +
                  +
                • integral scale
                • +
                • gaussian variogram model
                • +
                +When selecting the interpolation function the user should provide the specific requested data. +
                +
                +It is possible run the model in 4 modes: +
                  +
                • mode = 0: output values on a non-regular grid, it should be provided the vector of points where to interpolate pointsToInterpolate. This is a 2-D interpolation, so the z coordinates are not considered.
                • +
                • mode = 1: output values on a non-regular grid, it should be provided the vector of points where to interpolate pointsToInterpolate. This is a 3-D interpolation.
                • +
                • mode = 2: output values on a regular grid, it should be provided the raster gridToInterpolate where to interpolate. This is a 2-D interpolation so the z coordinates are not considered. NOT YET IMPLEMENTED
                • +
                • mode = 3: output values on a regular grid, it should be provided the raster gridToInterpolate where to interpolate. This is a 3-D interpolation, so the provided raster data have to contain a elevations.NOT YET IMPLEMENTED
                • +
                +
                +
                +

                Inputs

                +
                  +
                • the vector of the measurement point, containing the position of the stations where data are measured
                • +
                • the name of the attribute of the vector of the measurement points defining the STATION ID
                • +
                • the name of the attribute of the vector of the measurement points defining the STATION ELEVATION
                • +
                • the text file with the measured data in each station to be interpolated
                • +
                • the vector of the points in which the data have to be interpolated
                • +
                • the field of the interpolated vector points, defining the POINT ID
                • +
                • the field of the interpolated vector points, defining the POINT ELEVATION
                • +
                +
                +
                +

                Output

                +
                  +
                • the file containing the interpolated data
                \ No newline at end of file diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestAspect.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestAspect.java index fe158a1c9..cdfe6864e 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestAspect.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestAspect.java @@ -1,71 +1,71 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.geomorphology.aspect.Aspect; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link Aspect} module. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestAspect extends HMTestCase { - public void testAspectDegrees() throws Exception { - double[][] pitData = HMTestMaps.pitData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D pitCoverage = CoverageUtilities.buildCoverage("pit", pitData, envelopeParams, crs, true); - - Aspect aspect = new Aspect(); - aspect.inElev = pitCoverage; - aspect.doRound = true; - aspect.pm = pm; - - aspect.process(); - - GridCoverage2D aspectCoverage = aspect.outAspect; - - checkMatrixEqual(aspectCoverage.getRenderedImage(), HMTestMaps.aspectDataDegrees, 0.01); - } - - public void testAspectRadiants() throws Exception { - double[][] pitData = HMTestMaps.pitData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D pitCoverage = CoverageUtilities.buildCoverage("pit", pitData, envelopeParams, crs, true); - - Aspect aspect = new Aspect(); - aspect.inElev = pitCoverage; - aspect.doRadiants = true; - aspect.pm = pm; - - aspect.process(); - - GridCoverage2D aspectCoverage = aspect.outAspect; - - checkMatrixEqual(aspectCoverage.getRenderedImage(), HMTestMaps.aspectDataRadiants, 0.01); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.geomorphology.aspect.Aspect; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link Aspect} module. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestAspect extends HMTestCase { + public void testAspectDegrees() throws Exception { + double[][] pitData = HMTestMaps.pitData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D pitCoverage = CoverageUtilities.buildCoverage("pit", pitData, envelopeParams, crs, true); + + Aspect aspect = new Aspect(); + aspect.inElev = pitCoverage; + aspect.doRound = true; + aspect.pm = pm; + + aspect.process(); + + GridCoverage2D aspectCoverage = aspect.outAspect; + + checkMatrixEqual(aspectCoverage.getRenderedImage(), HMTestMaps.aspectDataDegrees, 0.01); + } + + public void testAspectRadiants() throws Exception { + double[][] pitData = HMTestMaps.pitData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D pitCoverage = CoverageUtilities.buildCoverage("pit", pitData, envelopeParams, crs, true); + + Aspect aspect = new Aspect(); + aspect.inElev = pitCoverage; + aspect.doRadiants = true; + aspect.pm = pm; + + aspect.process(); + + GridCoverage2D aspectCoverage = aspect.outAspect; + + checkMatrixEqual(aspectCoverage.getRenderedImage(), HMTestMaps.aspectDataRadiants, 0.01); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestCb.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestCb.java index 4a1a32a6e..580573bdb 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestCb.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestCb.java @@ -1,97 +1,97 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.statistics.cb.Cb; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test for the {@link Cb} module. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestCb extends HMTestCase { - - private double[][] expected = new double[][]{ // - {405.0, 2.0, 405.0}, // - {430.0, 1.0, 430.0}, // - {450.0, 3.0, 450.0}, // - {490.0, 1.0, 490.0}, // - {500.0, 4.0, 500.0}, // - {550.0, 2.0, 550.0}, // - {600.0, 4.0, 600.0}, // - {650.0, 1.0, 650.0}, // - {700.0, 5.0, 700.0}, // - {750.0, 5.0, 750.0}, // - {760.0, 1.0, 760.0}, // - {770.0, 1.0, 770.0}, // - {780.0, 1.0, 780.0}, // - {790.0, 1.0, 790.0}, // - {800.0, 6.0, 800.0}, // - {850.0, 4.0, 850.0}, // - {860.0, 1.0, 860.0}, // - {902.5, 4.0, 902.5}, // - {980.0, 1.0, 980.0}, // - {1000.1428571428571, 7.0, 1000.1428571428571}, // - {1100.0, 2.0, 1100.0}, // - {1150.0, 2.0, 1150.0}, // - {1200.0, 3.0, 1200.0}, // - {1250.0, 4.0, 1250.0}, // - {1300.0, 2.0, 1300.0}, // - {1350.0, 1.0, 1350.0}, // - {1450.0, 2.0, 1450.0}, // - {1500.0, 8.0, 1500.0} // - }; - - public void testCb() throws Exception { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - - GridCoverage2D map1 = CoverageUtilities.buildCoverage("map1", HMTestMaps.mapData, envelopeParams, crs, true); - GridCoverage2D map2 = map1; - - PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.out); - - Cb cb = new Cb(); - cb.pBins = 100; - cb.pFirst = 1; - cb.pLast = 1; - cb.inRaster1 = map1; - cb.inRaster2 = map2; - cb.pm = pm; - - cb.process(); - - double[][] moments = cb.outCb; - - for( int i = 0; i < moments.length; i++ ) { - for( int j = 0; j < moments[0].length; j++ ) { - double value = moments[i][j]; - assertEquals(value, expected[i][j], 0.01); - } - } - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.statistics.cb.Cb; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test for the {@link Cb} module. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestCb extends HMTestCase { + + private double[][] expected = new double[][]{ // + {405.0, 2.0, 405.0}, // + {430.0, 1.0, 430.0}, // + {450.0, 3.0, 450.0}, // + {490.0, 1.0, 490.0}, // + {500.0, 4.0, 500.0}, // + {550.0, 2.0, 550.0}, // + {600.0, 4.0, 600.0}, // + {650.0, 1.0, 650.0}, // + {700.0, 5.0, 700.0}, // + {750.0, 5.0, 750.0}, // + {760.0, 1.0, 760.0}, // + {770.0, 1.0, 770.0}, // + {780.0, 1.0, 780.0}, // + {790.0, 1.0, 790.0}, // + {800.0, 6.0, 800.0}, // + {850.0, 4.0, 850.0}, // + {860.0, 1.0, 860.0}, // + {902.5, 4.0, 902.5}, // + {980.0, 1.0, 980.0}, // + {1000.1428571428571, 7.0, 1000.1428571428571}, // + {1100.0, 2.0, 1100.0}, // + {1150.0, 2.0, 1150.0}, // + {1200.0, 3.0, 1200.0}, // + {1250.0, 4.0, 1250.0}, // + {1300.0, 2.0, 1300.0}, // + {1350.0, 1.0, 1350.0}, // + {1450.0, 2.0, 1450.0}, // + {1500.0, 8.0, 1500.0} // + }; + + public void testCb() throws Exception { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + + GridCoverage2D map1 = CoverageUtilities.buildCoverage("map1", HMTestMaps.mapData, envelopeParams, crs, true); + GridCoverage2D map2 = map1; + + PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.out); + + Cb cb = new Cb(); + cb.pBins = 100; + cb.pFirst = 1; + cb.pLast = 1; + cb.inRaster1 = map1; + cb.inRaster2 = map2; + cb.pm = pm; + + cb.process(); + + double[][] moments = cb.outCb; + + for( int i = 0; i < moments.length; i++ ) { + for( int j = 0; j < moments[0].length; j++ ) { + double value = moments[i][j]; + assertEquals(value, expected[i][j], 0.01); + } + } + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisFlow.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisFlow.java index 50f3c7469..d7adcf0be 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisFlow.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisFlow.java @@ -1,56 +1,56 @@ -///* -// * JGrass - Free Open Source Java GIS http://www.jgrass.org -// * (C) HydroloGIS - www.hydrologis.com -// * -// * This library is free software; you can redistribute it and/or modify it under -// * the terms of the GNU Library General Public License as published by the Free -// * Software Foundation; either version 2 of the License, or (at your option) any -// * later version. -// * -// * This library is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more -// * details. -// * -// * You should have received a copy of the GNU Library General Public License -// * along with this library; if not, write to the Free Foundation, Inc., 59 -// * Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -//package org.jgrasstools.hortonmachine.models.hm; -// -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.jgrasstools.gears.io.rasterreader.RasterReader; -//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; -//import org.jgrasstools.gears.utils.HMTestCase; -//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debrisflow.DebrisFlow; -///** -// * Test for the {@link DebrisFlow} module. -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestDebrisFlow extends HMTestCase { -// public void testDebrisTrigger() throws Exception { -// -// int m = 200; -// int c = 50; -// for( int i = 0; i < 10; i++ ) { -// String inRasterPath = ""; -// String flowPath = ""; -// String depoPath = ""; -// GridCoverage2D elev = RasterReader.readRaster(inRasterPath); -// DebrisFlow dt = new DebrisFlow(); -// dt.inElev = elev; -// dt.pMontecarlo = m; -// dt.pMcoeff = c; -// dt.pVolume = 25000; -// dt.pEasting = 624826.2537; -// dt.pNorthing = 5133433.7523; -// dt.pm = pm; -// dt.process(); -// GridCoverage2D outMcs = dt.outMcs; -// GridCoverage2D outDepo = dt.outDepo; -// RasterWriter.writeRaster(flowPath, outMcs); -// RasterWriter.writeRaster(depoPath, outDepo); -// } -// } -//} +///* +// * JGrass - Free Open Source Java GIS http://www.jgrass.org +// * (C) HydroloGIS - www.hydrologis.com +// * +// * This library is free software; you can redistribute it and/or modify it under +// * the terms of the GNU Library General Public License as published by the Free +// * Software Foundation; either version 2 of the License, or (at your option) any +// * later version. +// * +// * This library is distributed in the hope that it will be useful, but WITHOUT +// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +// * details. +// * +// * You should have received a copy of the GNU Library General Public License +// * along with this library; if not, write to the Free Foundation, Inc., 59 +// * Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +//package org.jgrasstools.hortonmachine.models.hm; +// +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.jgrasstools.gears.io.rasterreader.RasterReader; +//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; +//import org.jgrasstools.gears.utils.HMTestCase; +//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debrisflow.DebrisFlow; +///** +// * Test for the {@link DebrisFlow} module. +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestDebrisFlow extends HMTestCase { +// public void testDebrisTrigger() throws Exception { +// +// int m = 200; +// int c = 50; +// for( int i = 0; i < 10; i++ ) { +// String inRasterPath = ""; +// String flowPath = ""; +// String depoPath = ""; +// GridCoverage2D elev = RasterReader.readRaster(inRasterPath); +// DebrisFlow dt = new DebrisFlow(); +// dt.inElev = elev; +// dt.pMontecarlo = m; +// dt.pMcoeff = c; +// dt.pVolume = 25000; +// dt.pEasting = 624826.2537; +// dt.pNorthing = 5133433.7523; +// dt.pm = pm; +// dt.process(); +// GridCoverage2D outMcs = dt.outMcs; +// GridCoverage2D outDepo = dt.outDepo; +// RasterWriter.writeRaster(flowPath, outMcs); +// RasterWriter.writeRaster(depoPath, outDepo); +// } +// } +//} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisTriggerCnr.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisTriggerCnr.java index 8b5e0371f..c47e66fb0 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisTriggerCnr.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisTriggerCnr.java @@ -1,59 +1,59 @@ -///* -// * JGrass - Free Open Source Java GIS http://www.jgrass.org -// * (C) HydroloGIS - www.hydrologis.com -// * -// * This library is free software; you can redistribute it and/or modify it under -// * the terms of the GNU Library General Public License as published by the Free -// * Software Foundation; either version 2 of the License, or (at your option) any -// * later version. -// * -// * This library is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more -// * details. -// * -// * You should have received a copy of the GNU Library General Public License -// * along with this library; if not, write to the Free Foundation, Inc., 59 -// * Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -//package org.jgrasstools.hortonmachine.models.hm; -// -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.jgrasstools.gears.io.rasterreader.RasterReader; -//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; -//import org.jgrasstools.gears.utils.HMTestCase; -//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debristriggers.DebrisTriggerCnr; -///** -// * Test for the {@link DebrisTriggerCnr} module. -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestDebrisTriggerCnr extends HMTestCase { -// public void testDebrisTrigger() throws Exception { -// -// String baseFolder = ""; -// String baseFolder1 = ""; -// String inRasterPath1 = baseFolder + "pit"; -// String inRasterPath2 = baseFolder1 + "netspi100"; -// String inRasterPath3 = baseFolder + "netshp2fl"; -// String outRasterPath = baseFolder + "triggers100"; -// -// GridCoverage2D elev = RasterReader.readRaster(inRasterPath1); -// GridCoverage2D net = RasterReader.readRaster(inRasterPath2); -// GridCoverage2D tca = RasterReader.readRaster(inRasterPath3); -// -// DebrisTriggerCnr dt = new DebrisTriggerCnr(); -// dt.inElev = elev; -// dt.inNet = net; -// dt.inTca = tca; -// // dt.pGradthres = 38; -// // dt.pTcathres = 10; -// dt.pm = pm; -// dt.process(); -// -// GridCoverage2D triggers = dt.outTriggers; -// -// RasterWriter.writeRaster(outRasterPath, triggers); -// -// } -//} +///* +// * JGrass - Free Open Source Java GIS http://www.jgrass.org +// * (C) HydroloGIS - www.hydrologis.com +// * +// * This library is free software; you can redistribute it and/or modify it under +// * the terms of the GNU Library General Public License as published by the Free +// * Software Foundation; either version 2 of the License, or (at your option) any +// * later version. +// * +// * This library is distributed in the hope that it will be useful, but WITHOUT +// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +// * details. +// * +// * You should have received a copy of the GNU Library General Public License +// * along with this library; if not, write to the Free Foundation, Inc., 59 +// * Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +//package org.jgrasstools.hortonmachine.models.hm; +// +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.jgrasstools.gears.io.rasterreader.RasterReader; +//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; +//import org.jgrasstools.gears.utils.HMTestCase; +//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debristriggers.DebrisTriggerCnr; +///** +// * Test for the {@link DebrisTriggerCnr} module. +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestDebrisTriggerCnr extends HMTestCase { +// public void testDebrisTrigger() throws Exception { +// +// String baseFolder = ""; +// String baseFolder1 = ""; +// String inRasterPath1 = baseFolder + "pit"; +// String inRasterPath2 = baseFolder1 + "netspi100"; +// String inRasterPath3 = baseFolder + "netshp2fl"; +// String outRasterPath = baseFolder + "triggers100"; +// +// GridCoverage2D elev = RasterReader.readRaster(inRasterPath1); +// GridCoverage2D net = RasterReader.readRaster(inRasterPath2); +// GridCoverage2D tca = RasterReader.readRaster(inRasterPath3); +// +// DebrisTriggerCnr dt = new DebrisTriggerCnr(); +// dt.inElev = elev; +// dt.inNet = net; +// dt.inTca = tca; +// // dt.pGradthres = 38; +// // dt.pTcathres = 10; +// dt.pm = pm; +// dt.process(); +// +// GridCoverage2D triggers = dt.outTriggers; +// +// RasterWriter.writeRaster(outRasterPath, triggers); +// +// } +//} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisVandre.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisVandre.java index 17363c33e..3909694b6 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisVandre.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDebrisVandre.java @@ -1,57 +1,57 @@ -///* -// * JGrass - Free Open Source Java GIS http://www.jgrass.org -// * (C) HydroloGIS - www.hydrologis.com -// * -// * This library is free software; you can redistribute it and/or modify it under -// * the terms of the GNU Library General Public License as published by the Free -// * Software Foundation; either version 2 of the License, or (at your option) any -// * later version. -// * -// * This library is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more -// * details. -// * -// * You should have received a copy of the GNU Library General Public License -// * along with this library; if not, write to the Free Foundation, Inc., 59 -// * Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -//package org.jgrasstools.hortonmachine.models.hm; -// -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.geotools.data.simple.SimpleFeatureCollection; -//import org.jgrasstools.gears.io.rasterreader.RasterReader; -//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; -//import org.jgrasstools.gears.io.vectorwriter.VectorWriter; -//import org.jgrasstools.gears.utils.HMTestCase; -//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debrisvandre.DebrisVandre; -//@SuppressWarnings("nls") -//public class TestDebrisVandre extends HMTestCase { -// public void testVandre() throws Exception { -// -// -// GridCoverage2D pit = RasterReader.readRaster("pit"); -// GridCoverage2D netflow = RasterReader.readRaster("mflow"); -// GridCoverage2D slope = RasterReader.readRaster("slope_grad"); -// GridCoverage2D triggers = RasterReader.readRaster("triggers"); -// GridCoverage2D soil = RasterReader.readRaster("soilthick"); -//// SimpleFeatureCollection obstacles = VectorReader.readVector(""); -// -// DebrisVandre v = new DebrisVandre(); -// v.inElev = pit; -// v.inFlow = netflow; -// v.inSlope = slope; -// v.inTriggers = triggers; -// v.inSoil = soil; -//// v.inObstacles = obstacles; -//// v.pMode= 1; -// v.process(); -// SimpleFeatureCollection outPaths = v.outPaths; -// SimpleFeatureCollection outIndexedTriggers = v.outIndexedTriggers; -// GridCoverage2D outSoil = v.outSoil; -// -// VectorWriter.writeVector("triggers.shp", outIndexedTriggers); -// VectorWriter.writeVector("paths.shp", outPaths); -// RasterWriter.writeRaster("basin_tr30_cumulated", outSoil); -// } -//} +///* +// * JGrass - Free Open Source Java GIS http://www.jgrass.org +// * (C) HydroloGIS - www.hydrologis.com +// * +// * This library is free software; you can redistribute it and/or modify it under +// * the terms of the GNU Library General Public License as published by the Free +// * Software Foundation; either version 2 of the License, or (at your option) any +// * later version. +// * +// * This library is distributed in the hope that it will be useful, but WITHOUT +// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +// * details. +// * +// * You should have received a copy of the GNU Library General Public License +// * along with this library; if not, write to the Free Foundation, Inc., 59 +// * Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +//package org.jgrasstools.hortonmachine.models.hm; +// +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.geotools.data.simple.SimpleFeatureCollection; +//import org.jgrasstools.gears.io.rasterreader.RasterReader; +//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; +//import org.jgrasstools.gears.io.vectorwriter.VectorWriter; +//import org.jgrasstools.gears.utils.HMTestCase; +//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.debrisvandre.DebrisVandre; +//@SuppressWarnings("nls") +//public class TestDebrisVandre extends HMTestCase { +// public void testVandre() throws Exception { +// +// +// GridCoverage2D pit = RasterReader.readRaster("pit"); +// GridCoverage2D netflow = RasterReader.readRaster("mflow"); +// GridCoverage2D slope = RasterReader.readRaster("slope_grad"); +// GridCoverage2D triggers = RasterReader.readRaster("triggers"); +// GridCoverage2D soil = RasterReader.readRaster("soilthick"); +//// SimpleFeatureCollection obstacles = VectorReader.readVector(""); +// +// DebrisVandre v = new DebrisVandre(); +// v.inElev = pit; +// v.inFlow = netflow; +// v.inSlope = slope; +// v.inTriggers = triggers; +// v.inSoil = soil; +//// v.inObstacles = obstacles; +//// v.pMode= 1; +// v.process(); +// SimpleFeatureCollection outPaths = v.outPaths; +// SimpleFeatureCollection outIndexedTriggers = v.outIndexedTriggers; +// GridCoverage2D outSoil = v.outSoil; +// +// VectorWriter.writeVector("triggers.shp", outIndexedTriggers); +// VectorWriter.writeVector("paths.shp", outPaths); +// RasterWriter.writeRaster("basin_tr30_cumulated", outSoil); +// } +//} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDrainDir.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDrainDir.java index be7530bbf..4edca62b2 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDrainDir.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestDrainDir.java @@ -1,86 +1,86 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.geomorphology.draindir.DrainDir; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link DrainDir} module. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestDrainDir extends HMTestCase { - - public void testDrain() throws Exception { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - - double[][] pitfillerData = HMTestMaps.pitData; - GridCoverage2D pitfillerCoverage = CoverageUtilities.buildCoverage("pitfiller", pitfillerData, envelopeParams, crs, true); - double[][] flowData = HMTestMaps.flowData; - GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); - - DrainDir drainDir = new DrainDir(); - // drainDir.doLad = false; - drainDir.pLambda = 1; - drainDir.inPit = pitfillerCoverage; - drainDir.inFlow = flowCoverage; - drainDir.pm = pm; - - drainDir.process(); - - GridCoverage2D draindirCoverage = drainDir.outFlow; - GridCoverage2D tcaCoverage = drainDir.outTca; - - checkMatrixEqual(draindirCoverage.getRenderedImage(), HMTestMaps.drainData1); - checkMatrixEqual(tcaCoverage.getRenderedImage(), HMTestMaps.mtcaData); - } - - public void testDrainLtd() throws Exception { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - - double[][] pitfillerData = HMTestMaps.pitData; - GridCoverage2D pitfillerCoverage = CoverageUtilities.buildCoverage("pitfiller", pitfillerData, envelopeParams, crs, true); - double[][] flowData = HMTestMaps.flowData; - GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); - - DrainDir drainDir = new DrainDir(); - drainDir.doLad = false; - drainDir.pLambda = 1; - drainDir.inPit = pitfillerCoverage; - drainDir.inFlow = flowCoverage; - drainDir.pm = pm; - - drainDir.process(); - - GridCoverage2D draindirCoverage = drainDir.outFlow; - GridCoverage2D tcaCoverage = drainDir.outTca; - - checkMatrixEqual(draindirCoverage.getRenderedImage(), HMTestMaps.drainData0); - checkMatrixEqual(tcaCoverage.getRenderedImage(), HMTestMaps.mtcaData0); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.geomorphology.draindir.DrainDir; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link DrainDir} module. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestDrainDir extends HMTestCase { + + public void testDrain() throws Exception { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + + double[][] pitfillerData = HMTestMaps.pitData; + GridCoverage2D pitfillerCoverage = CoverageUtilities.buildCoverage("pitfiller", pitfillerData, envelopeParams, crs, true); + double[][] flowData = HMTestMaps.flowData; + GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); + + DrainDir drainDir = new DrainDir(); + // drainDir.doLad = false; + drainDir.pLambda = 1; + drainDir.inPit = pitfillerCoverage; + drainDir.inFlow = flowCoverage; + drainDir.pm = pm; + + drainDir.process(); + + GridCoverage2D draindirCoverage = drainDir.outFlow; + GridCoverage2D tcaCoverage = drainDir.outTca; + + checkMatrixEqual(draindirCoverage.getRenderedImage(), HMTestMaps.drainData1); + checkMatrixEqual(tcaCoverage.getRenderedImage(), HMTestMaps.mtcaData); + } + + public void testDrainLtd() throws Exception { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + + double[][] pitfillerData = HMTestMaps.pitData; + GridCoverage2D pitfillerCoverage = CoverageUtilities.buildCoverage("pitfiller", pitfillerData, envelopeParams, crs, true); + double[][] flowData = HMTestMaps.flowData; + GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); + + DrainDir drainDir = new DrainDir(); + drainDir.doLad = false; + drainDir.pLambda = 1; + drainDir.inPit = pitfillerCoverage; + drainDir.inFlow = flowCoverage; + drainDir.pm = pm; + + drainDir.process(); + + GridCoverage2D draindirCoverage = drainDir.outFlow; + GridCoverage2D tcaCoverage = drainDir.outTca; + + checkMatrixEqual(draindirCoverage.getRenderedImage(), HMTestMaps.drainData0); + checkMatrixEqual(tcaCoverage.getRenderedImage(), HMTestMaps.mtcaData0); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestFlowDirections.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestFlowDirections.java index e258a32f1..62883fbd0 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestFlowDirections.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestFlowDirections.java @@ -1,53 +1,53 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.geomorphology.flow.FlowDirections; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link FlowDirections} module. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestFlowDirections extends HMTestCase { - - public void testFlow() throws Exception { - double[][] pitfillerData = HMTestMaps.pitData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D pitfillerCoverage = CoverageUtilities.buildCoverage("flow", pitfillerData, envelopeParams, crs, true); - - FlowDirections flowDirections = new FlowDirections(); - flowDirections.inPit = pitfillerCoverage; - flowDirections.pm = pm; - - flowDirections.process(); - - GridCoverage2D flowCoverage = flowDirections.outFlow; - - checkMatrixEqual(flowCoverage.getRenderedImage(), HMTestMaps.newFlowData, 0); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.geomorphology.flow.FlowDirections; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link FlowDirections} module. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestFlowDirections extends HMTestCase { + + public void testFlow() throws Exception { + double[][] pitfillerData = HMTestMaps.pitData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D pitfillerCoverage = CoverageUtilities.buildCoverage("flow", pitfillerData, envelopeParams, crs, true); + + FlowDirections flowDirections = new FlowDirections(); + flowDirections.inPit = pitfillerCoverage; + flowDirections.pm = pm; + + flowDirections.process(); + + GridCoverage2D flowCoverage = flowDirections.outFlow; + + checkMatrixEqual(flowCoverage.getRenderedImage(), HMTestMaps.newFlowData, 0); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestH2cd.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestH2cd.java index a6a918e05..a0ac31838 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestH2cd.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestH2cd.java @@ -1,79 +1,79 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.hillslopeanalyses.h2cd.H2cd; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; -/** - * Tests the {@link H2cd} module. - * - * @author Andrea Antonello (www.hydrologis.com) - * @author Daniele Andreis - */ -public class TestH2cd extends HMTestCase { - - @SuppressWarnings("nls") - public void testH2cd() throws Exception { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - - double[][] flowData = HMTestMaps.flowData; - double[][] netData = HMTestMaps.extractNet1Data; - - GridCoverage2D flowRaster = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); - GridCoverage2D netRaster = CoverageUtilities.buildCoverage("net", netData, envelopeParams, crs, true); - - H2cd h2cd = new H2cd(); - h2cd.inFlow = flowRaster; - h2cd.inNet = netRaster; - h2cd.pMode = 0; - h2cd.process(); - GridCoverage2D outH2cd = h2cd.outH2cd; - - checkMatrixEqual(outH2cd.getRenderedImage(), HMTestMaps.h2cdData); - - h2cd = new H2cd(); - h2cd.inFlow = flowRaster; - h2cd.inNet = netRaster; - h2cd.pMode = 1; - h2cd.process(); - outH2cd = h2cd.outH2cd; - - checkMatrixEqual(outH2cd.getRenderedImage(), HMTestMaps.h2cdTopoData, 0.05); - - // 3d mode - double[][] elevData = HMTestMaps.pitData; - GridCoverage2D elevRaster = CoverageUtilities.buildCoverage("pit", elevData, envelopeParams, crs, true); - h2cd = new H2cd(); - h2cd.inFlow = flowRaster; - h2cd.inNet = netRaster; - h2cd.inElev = elevRaster; - h2cd.pMode = 1; - h2cd.process(); - outH2cd = h2cd.outH2cd; - - checkMatrixEqual(outH2cd.getRenderedImage(), HMTestMaps.h2cd3dData, 0.05); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.hillslopeanalyses.h2cd.H2cd; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +/** + * Tests the {@link H2cd} module. + * + * @author Andrea Antonello (www.hydrologis.com) + * @author Daniele Andreis + */ +public class TestH2cd extends HMTestCase { + + @SuppressWarnings("nls") + public void testH2cd() throws Exception { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + + double[][] flowData = HMTestMaps.flowData; + double[][] netData = HMTestMaps.extractNet1Data; + + GridCoverage2D flowRaster = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); + GridCoverage2D netRaster = CoverageUtilities.buildCoverage("net", netData, envelopeParams, crs, true); + + H2cd h2cd = new H2cd(); + h2cd.inFlow = flowRaster; + h2cd.inNet = netRaster; + h2cd.pMode = 0; + h2cd.process(); + GridCoverage2D outH2cd = h2cd.outH2cd; + + checkMatrixEqual(outH2cd.getRenderedImage(), HMTestMaps.h2cdData); + + h2cd = new H2cd(); + h2cd.inFlow = flowRaster; + h2cd.inNet = netRaster; + h2cd.pMode = 1; + h2cd.process(); + outH2cd = h2cd.outH2cd; + + checkMatrixEqual(outH2cd.getRenderedImage(), HMTestMaps.h2cdTopoData, 0.05); + + // 3d mode + double[][] elevData = HMTestMaps.pitData; + GridCoverage2D elevRaster = CoverageUtilities.buildCoverage("pit", elevData, envelopeParams, crs, true); + h2cd = new H2cd(); + h2cd.inFlow = flowRaster; + h2cd.inNet = netRaster; + h2cd.inElev = elevRaster; + h2cd.pMode = 1; + h2cd.process(); + outH2cd = h2cd.outH2cd; + + checkMatrixEqual(outH2cd.getRenderedImage(), HMTestMaps.h2cd3dData, 0.05); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestHackLength.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestHackLength.java index 3ddbd8efb..46791f2cd 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestHackLength.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestHackLength.java @@ -1,80 +1,80 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.io.IOException; -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.network.hacklength.HackLength; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test {@link HackLength}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestHackLength extends HMTestCase { - - public void testHacklength() throws IOException { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - - double[][] flowData = HMTestMaps.mflowData; - GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); - double[][] tcaData = HMTestMaps.tcaData; - GridCoverage2D tcaCoverage = CoverageUtilities.buildCoverage("tca", tcaData, envelopeParams, crs, true); - - HackLength hackLength = new HackLength(); - hackLength.inFlow = flowCoverage; - hackLength.inTca = tcaCoverage; - hackLength.pm = pm; - - hackLength.process(); - - GridCoverage2D hackLengthCoverage = hackLength.outHacklength; - checkMatrixEqual(hackLengthCoverage.getRenderedImage(), HMTestMaps.hacklengthData, 0.01); - } - - public void testHacklength3d() throws IOException { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - - double[][] pitData = HMTestMaps.pitData; - GridCoverage2D pitCoverage = CoverageUtilities.buildCoverage("pit", pitData, envelopeParams, crs, true); - double[][] flowData = HMTestMaps.mflowDataBorder; - GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); - double[][] tcaData = HMTestMaps.tcaData; - GridCoverage2D tcaCoverage = CoverageUtilities.buildCoverage("tca", tcaData, envelopeParams, crs, true); - - HackLength hackLength = new HackLength(); - hackLength.inFlow = flowCoverage; - hackLength.inTca = tcaCoverage; - hackLength.inElevation = pitCoverage; - hackLength.pm = pm; - - hackLength.process(); - - GridCoverage2D hackLengthCoverage = hackLength.outHacklength; - checkMatrixEqual(hackLengthCoverage.getRenderedImage(), HMTestMaps.hacklength3DData, 2); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.io.IOException; +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.network.hacklength.HackLength; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test {@link HackLength}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestHackLength extends HMTestCase { + + public void testHacklength() throws IOException { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + + double[][] flowData = HMTestMaps.mflowData; + GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); + double[][] tcaData = HMTestMaps.tcaData; + GridCoverage2D tcaCoverage = CoverageUtilities.buildCoverage("tca", tcaData, envelopeParams, crs, true); + + HackLength hackLength = new HackLength(); + hackLength.inFlow = flowCoverage; + hackLength.inTca = tcaCoverage; + hackLength.pm = pm; + + hackLength.process(); + + GridCoverage2D hackLengthCoverage = hackLength.outHacklength; + checkMatrixEqual(hackLengthCoverage.getRenderedImage(), HMTestMaps.hacklengthData, 0.01); + } + + public void testHacklength3d() throws IOException { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + + double[][] pitData = HMTestMaps.pitData; + GridCoverage2D pitCoverage = CoverageUtilities.buildCoverage("pit", pitData, envelopeParams, crs, true); + double[][] flowData = HMTestMaps.mflowDataBorder; + GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); + double[][] tcaData = HMTestMaps.tcaData; + GridCoverage2D tcaCoverage = CoverageUtilities.buildCoverage("tca", tcaData, envelopeParams, crs, true); + + HackLength hackLength = new HackLength(); + hackLength.inFlow = flowCoverage; + hackLength.inTca = tcaCoverage; + hackLength.inElevation = pitCoverage; + hackLength.pm = pm; + + hackLength.process(); + + GridCoverage2D hackLengthCoverage = hackLength.outHacklength; + checkMatrixEqual(hackLengthCoverage.getRenderedImage(), HMTestMaps.hacklength3DData, 2); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestHillshade.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestHillshade.java index 4cf991e67..4b07bd310 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestHillshade.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestHillshade.java @@ -1,57 +1,57 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.hillshade.Hillshade; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link Hillshade} module. - * - * @author Daniele Andreis - */ -public class TestHillshade extends HMTestCase { - - public void testHillshade() throws Exception { - - double[][] elevationData = HMTestMaps.mapData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs3004; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); - - Hillshade hillshade = new Hillshade(); - hillshade.inElev = elevationCoverage; - hillshade.pElev = 45.0; - hillshade.pAzimuth = 315; - - hillshade.pm = pm; - - hillshade.process(); - - GridCoverage2D hillshadeCoverage = hillshade.outHill; - - checkMatrixEqual(hillshadeCoverage.getRenderedImage(), HMTestMaps.outHillshade, 0.1); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.hillshade.Hillshade; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link Hillshade} module. + * + * @author Daniele Andreis + */ +public class TestHillshade extends HMTestCase { + + public void testHillshade() throws Exception { + + double[][] elevationData = HMTestMaps.mapData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs3004; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); + + Hillshade hillshade = new Hillshade(); + hillshade.inElev = elevationCoverage; + hillshade.pElev = 45.0; + hillshade.pAzimuth = 315; + + hillshade.pm = pm; + + hillshade.process(); + + GridCoverage2D hillshadeCoverage = hillshade.outHill; + + checkMatrixEqual(hillshadeCoverage.getRenderedImage(), HMTestMaps.outHillshade, 0.1); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestInsolation.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestInsolation.java index 0e09cf03a..2504e3b2c 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestInsolation.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestInsolation.java @@ -1,63 +1,63 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.insolation.Insolation; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link Insolation} module. - * - * @author Daniele Andreis - */ -public class TestInsolation extends HMTestCase { - - private final static String START_DATE = "2010-01-01"; - private final static String END_DATE = "2010-01-02"; - - public void testInsolation() throws Exception { - - double[][] elevationData = HMTestMaps.mapData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs3004; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); - - Insolation insolation = new Insolation(); - insolation.inElev = elevationCoverage; - insolation.tStartDate = START_DATE; - insolation.tEndDate = END_DATE; - // insolation.defaultLapse=-.0065; - // insolation.defaultRH=0.4; - // insolation.defaultVisibility=60; - - insolation.pm = pm; - - insolation.process(); - - GridCoverage2D insolationCoverage = insolation.outIns; - - checkMatrixEqual(insolationCoverage.getRenderedImage(), HMTestMaps.outInsolation, 0.1); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.insolation.Insolation; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link Insolation} module. + * + * @author Daniele Andreis + */ +public class TestInsolation extends HMTestCase { + + private final static String START_DATE = "2010-01-01"; + private final static String END_DATE = "2010-01-02"; + + public void testInsolation() throws Exception { + + double[][] elevationData = HMTestMaps.mapData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs3004; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); + + Insolation insolation = new Insolation(); + insolation.inElev = elevationCoverage; + insolation.tStartDate = START_DATE; + insolation.tEndDate = END_DATE; + // insolation.defaultLapse=-.0065; + // insolation.defaultRH=0.4; + // insolation.defaultVisibility=60; + + insolation.pm = pm; + + insolation.process(); + + GridCoverage2D insolationCoverage = insolation.outIns; + + checkMatrixEqual(insolationCoverage.getRenderedImage(), HMTestMaps.outInsolation, 0.1); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestKernelDensity.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestKernelDensity.java index 6045a232a..0d76f2349 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestKernelDensity.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestKernelDensity.java @@ -1,53 +1,53 @@ -///* -// * JGrass - Free Open Source Java GIS http://www.jgrass.org -// * (C) HydroloGIS - www.hydrologis.com -// * -// * This library is free software; you can redistribute it and/or modify it under -// * the terms of the GNU Library General Public License as published by the Free -// * Software Foundation; either version 2 of the License, or (at your option) any -// * later version. -// * -// * This library is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more -// * details. -// * -// * You should have received a copy of the GNU Library General Public License -// * along with this library; if not, write to the Free Foundation, Inc., 59 -// * Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -//package org.jgrasstools.hortonmachine.models.hm; -// -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.jgrasstools.gears.io.rasterreader.RasterReader; -//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; -//import org.jgrasstools.hortonmachine.modules.statistics.kerneldensity.KernelDensity; -//import org.jgrasstools.hortonmachine.utils.HMTestCase; -///** -// * Test for the {@link KernelDensity} module. -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestKernelDensity extends HMTestCase { -// public void testDebrisTrigger() throws Exception { -// -// String baseFolder = ""; -// String inRasterPath1 = baseFolder + "net_triggers"; -// String outRasterPath = baseFolder + "triggers_density_triang"; -// -// GridCoverage2D elev = RasterReader.readRaster(inRasterPath1); -// -// KernelDensity dt = new KernelDensity(); -// dt.inMap = elev; -// dt.pKernel = 7; -// dt.pRadius = 10; -// dt.doConstant = true; -// dt.pm = pm; -// dt.process(); -// -// GridCoverage2D density = dt.outDensity; -// -// RasterWriter.writeRaster(outRasterPath, density); -// -// } -//} +///* +// * JGrass - Free Open Source Java GIS http://www.jgrass.org +// * (C) HydroloGIS - www.hydrologis.com +// * +// * This library is free software; you can redistribute it and/or modify it under +// * the terms of the GNU Library General Public License as published by the Free +// * Software Foundation; either version 2 of the License, or (at your option) any +// * later version. +// * +// * This library is distributed in the hope that it will be useful, but WITHOUT +// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +// * details. +// * +// * You should have received a copy of the GNU Library General Public License +// * along with this library; if not, write to the Free Foundation, Inc., 59 +// * Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +//package org.jgrasstools.hortonmachine.models.hm; +// +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.jgrasstools.gears.io.rasterreader.RasterReader; +//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; +//import org.jgrasstools.hortonmachine.modules.statistics.kerneldensity.KernelDensity; +//import org.jgrasstools.hortonmachine.utils.HMTestCase; +///** +// * Test for the {@link KernelDensity} module. +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestKernelDensity extends HMTestCase { +// public void testDebrisTrigger() throws Exception { +// +// String baseFolder = ""; +// String inRasterPath1 = baseFolder + "net_triggers"; +// String outRasterPath = baseFolder + "triggers_density_triang"; +// +// GridCoverage2D elev = RasterReader.readRaster(inRasterPath1); +// +// KernelDensity dt = new KernelDensity(); +// dt.inMap = elev; +// dt.pKernel = 7; +// dt.pRadius = 10; +// dt.doConstant = true; +// dt.pm = pm; +// dt.process(); +// +// GridCoverage2D density = dt.outDensity; +// +// RasterWriter.writeRaster(outRasterPath, density); +// +// } +//} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestPeakflow.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestPeakflow.java index 6a289376a..d3d85a206 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestPeakflow.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestPeakflow.java @@ -1,131 +1,131 @@ -//package org.jgrasstools.hortonmachine.models.hm; -// -//import java.io.File; -//import java.io.IOException; -//import java.util.List; -// -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.jgrasstools.gears.io.arcgrid.ArcgridCoverageReader; -//import org.jgrasstools.gears.io.timeseries.TimeseriesReaderArray; -//import org.jgrasstools.gears.io.timeseries.TimeseriesWriterArray; -//import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; -//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.Peakflow; -//import org.jgrasstools.hortonmachine.utils.HMTestCase; -//import org.joda.time.DateTime; -// -///** -// * Test the {@link Peakflow} module. -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestPeakflow extends HMTestCase { -// public void testStatisticPeakflow() throws Exception { -// -// File folder = new File("C:\\TMP\\peakflow\\"); -// -// File topFile = new File(folder, "mycismon_topindex.asc"); -// GridCoverage2D topindexCoverage = getCoverage(topFile); -// -// File supFile = new File(folder, "mycismon_resc10.asc"); -// GridCoverage2D supRescaledCoverage = getCoverage(supFile); -// -// File subFile = new File(folder, "mycismon_resc100.asc"); -// GridCoverage2D subRescaledCoverage = getCoverage(subFile); -// -// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); -// -// Peakflow peakflow = new Peakflow(); -// peakflow.pm = pm; -// peakflow.inTopindex = topindexCoverage; -// peakflow.inRescaledsup = supRescaledCoverage; -// peakflow.inRescaledsub = subRescaledCoverage; -// peakflow.pA = 43.91; -// peakflow.pN = 0.48; -// peakflow.inRainfall = null; -// peakflow.rainfallTimestampList = null; -// peakflow.saturationThreshold = 30; -// peakflow.diffusion = 1000; -// peakflow.channelCelerity = 2; -// -// peakflow.executePeakflow(); -// -// List peakflowTimestampList = peakflow.peakflowTimestampList; -// List peakflowOutputList = peakflow.peakflowOutputList; -// -// File outFile = new File(folder, "peakflow_discharge.csv"); -// TimeseriesWriterArray writer = new TimeseriesWriterArray(); -// writer.csvfilePath = outFile.getAbsolutePath(); -// writer.doWriteDates = false; -// writer.tableName = "discharge"; -// writer.timestampList = peakflowTimestampList; -// writer.valuesArrayList = peakflowOutputList; -// -// writer.open(); -// writer.write(); -// writer.close(); -// } -// -// public void testRealRainPeakflow() throws Exception { -// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); -// -// File folder = new File("C:\\TMP\\peakflow\\"); -// -// File topFile = new File(folder, "mycismon_topindex.asc"); -// GridCoverage2D topindexCoverage = getCoverage(topFile); -// -// File supFile = new File(folder, "mycismon_resc10.asc"); -// GridCoverage2D supRescaledCoverage = getCoverage(supFile); -// -// File subFile = new File(folder, "mycismon_resc100.asc"); -// GridCoverage2D subRescaledCoverage = getCoverage(subFile); -// -// File rainFile = new File(folder, "rain_peak.csv"); -// TimeseriesReaderArray rainReader = new TimeseriesReaderArray(); -// rainReader.fileNovalue = "-9999"; -// rainReader.csvfilePath = rainFile.getAbsolutePath(); -// rainReader.open(); -// rainReader.read(); -// rainReader.close(); -// -// List timestampsList = rainReader.timestampsList; -// List recordsList = rainReader.recordsList; -// -// Peakflow peakflow = new Peakflow(); -// peakflow.pm = pm; -// peakflow.topindexCoverage = topindexCoverage; -// peakflow.supRescaledCoverage = supRescaledCoverage; -// peakflow.subRescaledCoverage = subRescaledCoverage; -// peakflow.rainfallList = recordsList; -// peakflow.rainfallTimestampList = timestampsList; -// peakflow.saturationThreshold = 30; -// peakflow.diffusion = 1000; -// peakflow.oututstepArg = 300; -// peakflow.channelCelerity = 2; -// -// peakflow.executePeakflow(); -// -// List peakflowTimestampList = peakflow.peakflowTimestampList; -// List peakflowOutputList = peakflow.peakflowOutputList; -// -// File outFile = new File(folder, "peakflow_discharge_real.csv"); -// TimeseriesWriterArray writer = new TimeseriesWriterArray(); -// writer.csvfilePath = outFile.getAbsolutePath(); -// // writer.doWriteDates = false; -// writer.tableName = "discharge"; -// writer.timestampList = peakflowTimestampList; -// writer.valuesArrayList = peakflowOutputList; -// -// writer.open(); -// writer.write(); -// writer.close(); -// } -// -// private GridCoverage2D getCoverage( File file ) throws IOException { -// ArcgridCoverageReader reader = new ArcgridCoverageReader(); -// reader.arcgridCoveragePath = file.getAbsolutePath(); -// reader.fileNovalue = -9999.0; -// reader.readCoverage(); -// return reader.coverage; -// } -// -//} +//package org.jgrasstools.hortonmachine.models.hm; +// +//import java.io.File; +//import java.io.IOException; +//import java.util.List; +// +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.jgrasstools.gears.io.arcgrid.ArcgridCoverageReader; +//import org.jgrasstools.gears.io.timeseries.TimeseriesReaderArray; +//import org.jgrasstools.gears.io.timeseries.TimeseriesWriterArray; +//import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; +//import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.peakflow.Peakflow; +//import org.jgrasstools.hortonmachine.utils.HMTestCase; +//import org.joda.time.DateTime; +// +///** +// * Test the {@link Peakflow} module. +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestPeakflow extends HMTestCase { +// public void testStatisticPeakflow() throws Exception { +// +// File folder = new File("C:\\TMP\\peakflow\\"); +// +// File topFile = new File(folder, "mycismon_topindex.asc"); +// GridCoverage2D topindexCoverage = getCoverage(topFile); +// +// File supFile = new File(folder, "mycismon_resc10.asc"); +// GridCoverage2D supRescaledCoverage = getCoverage(supFile); +// +// File subFile = new File(folder, "mycismon_resc100.asc"); +// GridCoverage2D subRescaledCoverage = getCoverage(subFile); +// +// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); +// +// Peakflow peakflow = new Peakflow(); +// peakflow.pm = pm; +// peakflow.inTopindex = topindexCoverage; +// peakflow.inRescaledsup = supRescaledCoverage; +// peakflow.inRescaledsub = subRescaledCoverage; +// peakflow.pA = 43.91; +// peakflow.pN = 0.48; +// peakflow.inRainfall = null; +// peakflow.rainfallTimestampList = null; +// peakflow.saturationThreshold = 30; +// peakflow.diffusion = 1000; +// peakflow.channelCelerity = 2; +// +// peakflow.executePeakflow(); +// +// List peakflowTimestampList = peakflow.peakflowTimestampList; +// List peakflowOutputList = peakflow.peakflowOutputList; +// +// File outFile = new File(folder, "peakflow_discharge.csv"); +// TimeseriesWriterArray writer = new TimeseriesWriterArray(); +// writer.csvfilePath = outFile.getAbsolutePath(); +// writer.doWriteDates = false; +// writer.tableName = "discharge"; +// writer.timestampList = peakflowTimestampList; +// writer.valuesArrayList = peakflowOutputList; +// +// writer.open(); +// writer.write(); +// writer.close(); +// } +// +// public void testRealRainPeakflow() throws Exception { +// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); +// +// File folder = new File("C:\\TMP\\peakflow\\"); +// +// File topFile = new File(folder, "mycismon_topindex.asc"); +// GridCoverage2D topindexCoverage = getCoverage(topFile); +// +// File supFile = new File(folder, "mycismon_resc10.asc"); +// GridCoverage2D supRescaledCoverage = getCoverage(supFile); +// +// File subFile = new File(folder, "mycismon_resc100.asc"); +// GridCoverage2D subRescaledCoverage = getCoverage(subFile); +// +// File rainFile = new File(folder, "rain_peak.csv"); +// TimeseriesReaderArray rainReader = new TimeseriesReaderArray(); +// rainReader.fileNovalue = "-9999"; +// rainReader.csvfilePath = rainFile.getAbsolutePath(); +// rainReader.open(); +// rainReader.read(); +// rainReader.close(); +// +// List timestampsList = rainReader.timestampsList; +// List recordsList = rainReader.recordsList; +// +// Peakflow peakflow = new Peakflow(); +// peakflow.pm = pm; +// peakflow.topindexCoverage = topindexCoverage; +// peakflow.supRescaledCoverage = supRescaledCoverage; +// peakflow.subRescaledCoverage = subRescaledCoverage; +// peakflow.rainfallList = recordsList; +// peakflow.rainfallTimestampList = timestampsList; +// peakflow.saturationThreshold = 30; +// peakflow.diffusion = 1000; +// peakflow.oututstepArg = 300; +// peakflow.channelCelerity = 2; +// +// peakflow.executePeakflow(); +// +// List peakflowTimestampList = peakflow.peakflowTimestampList; +// List peakflowOutputList = peakflow.peakflowOutputList; +// +// File outFile = new File(folder, "peakflow_discharge_real.csv"); +// TimeseriesWriterArray writer = new TimeseriesWriterArray(); +// writer.csvfilePath = outFile.getAbsolutePath(); +// // writer.doWriteDates = false; +// writer.tableName = "discharge"; +// writer.timestampList = peakflowTimestampList; +// writer.valuesArrayList = peakflowOutputList; +// +// writer.open(); +// writer.write(); +// writer.close(); +// } +// +// private GridCoverage2D getCoverage( File file ) throws IOException { +// ArcgridCoverageReader reader = new ArcgridCoverageReader(); +// reader.arcgridCoveragePath = file.getAbsolutePath(); +// reader.fileNovalue = -9999.0; +// reader.readCoverage(); +// return reader.coverage; +// } +// +//} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestPitfiller.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestPitfiller.java index 54af99ec2..1401a66eb 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestPitfiller.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestPitfiller.java @@ -1,52 +1,52 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.demmanipulation.pitfiller.Pitfiller; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link Pitfiller} module. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestPitfiller extends HMTestCase { - public void testPitfiller() throws Exception { - - double[][] elevationData = HMTestMaps.mapData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); - - Pitfiller pitfiller = new Pitfiller(); - pitfiller.inElev = elevationCoverage; - pitfiller.pm = pm; - pitfiller.process(); - - GridCoverage2D pitfillerCoverage = pitfiller.outPit; - - checkMatrixEqual(pitfillerCoverage.getRenderedImage(), HMTestMaps.outPitData, 0); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.demmanipulation.pitfiller.Pitfiller; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link Pitfiller} module. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestPitfiller extends HMTestCase { + public void testPitfiller() throws Exception { + + double[][] elevationData = HMTestMaps.mapData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); + + Pitfiller pitfiller = new Pitfiller(); + pitfiller.inElev = elevationCoverage; + pitfiller.pm = pm; + pitfiller.process(); + + GridCoverage2D pitfillerCoverage = pitfiller.outPit; + + checkMatrixEqual(pitfillerCoverage.getRenderedImage(), HMTestMaps.outPitData, 0); + } +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestRescaledDistance.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestRescaledDistance.java index 75f44b035..230473804 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestRescaledDistance.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestRescaledDistance.java @@ -1,84 +1,84 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.io.IOException; -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.basin.rescaleddistance.RescaledDistance; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test {@link RescaledDistance}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestRescaledDistance extends HMTestCase { - - public void testRescaledDistance() throws IOException { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - - double[][] flowData = HMTestMaps.flowData; - GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); - double[][] netData = HMTestMaps.extractNet0Data; - GridCoverage2D netCoverage = CoverageUtilities.buildCoverage("net", netData, envelopeParams, crs, true); - - RescaledDistance rescaledDistance = new RescaledDistance(); - rescaledDistance.inFlow = flowCoverage; - rescaledDistance.inNet = netCoverage; - rescaledDistance.pRatio = 0.3; - rescaledDistance.pm = pm; - - rescaledDistance.process(); - - GridCoverage2D rescaledDistanceCoverage = rescaledDistance.outRescaled; - checkMatrixEqual(rescaledDistanceCoverage.getRenderedImage(), HMTestMaps.rescaledDistanceData, 0.1); - } - - public void testRescaledDistance3D() throws IOException { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - - double[][] flowData = HMTestMaps.flowData; - GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); - double[][] netData = HMTestMaps.extractNet0Data; - GridCoverage2D netCoverage = CoverageUtilities.buildCoverage("net", netData, envelopeParams, crs, true); - double[][] elevData = HMTestMaps.mapData; - GridCoverage2D elevCoverage = CoverageUtilities.buildCoverage("elev", elevData, envelopeParams, crs, true); - - RescaledDistance rescaledDistance = new RescaledDistance(); - rescaledDistance.inFlow = flowCoverage; - rescaledDistance.inNet = netCoverage; - rescaledDistance.inElev = elevCoverage; - rescaledDistance.pRatio = 0.3; - rescaledDistance.pm = pm; - - rescaledDistance.process(); - - // GridCoverage2D rescaledDistanceCoverage = rescaledDistance.outRescaled; - // PrintUtilities.printCoverageData(rescaledDistanceCoverage); - // checkMatrixEqual(rescaledDistanceCoverage.getRenderedImage(), - // HMTestMaps.rescaledDistanceData, 0.1); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.io.IOException; +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.basin.rescaleddistance.RescaledDistance; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test {@link RescaledDistance}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestRescaledDistance extends HMTestCase { + + public void testRescaledDistance() throws IOException { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + + double[][] flowData = HMTestMaps.flowData; + GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); + double[][] netData = HMTestMaps.extractNet0Data; + GridCoverage2D netCoverage = CoverageUtilities.buildCoverage("net", netData, envelopeParams, crs, true); + + RescaledDistance rescaledDistance = new RescaledDistance(); + rescaledDistance.inFlow = flowCoverage; + rescaledDistance.inNet = netCoverage; + rescaledDistance.pRatio = 0.3; + rescaledDistance.pm = pm; + + rescaledDistance.process(); + + GridCoverage2D rescaledDistanceCoverage = rescaledDistance.outRescaled; + checkMatrixEqual(rescaledDistanceCoverage.getRenderedImage(), HMTestMaps.rescaledDistanceData, 0.1); + } + + public void testRescaledDistance3D() throws IOException { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + + double[][] flowData = HMTestMaps.flowData; + GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); + double[][] netData = HMTestMaps.extractNet0Data; + GridCoverage2D netCoverage = CoverageUtilities.buildCoverage("net", netData, envelopeParams, crs, true); + double[][] elevData = HMTestMaps.mapData; + GridCoverage2D elevCoverage = CoverageUtilities.buildCoverage("elev", elevData, envelopeParams, crs, true); + + RescaledDistance rescaledDistance = new RescaledDistance(); + rescaledDistance.inFlow = flowCoverage; + rescaledDistance.inNet = netCoverage; + rescaledDistance.inElev = elevCoverage; + rescaledDistance.pRatio = 0.3; + rescaledDistance.pm = pm; + + rescaledDistance.process(); + + // GridCoverage2D rescaledDistanceCoverage = rescaledDistance.outRescaled; + // PrintUtilities.printCoverageData(rescaledDistanceCoverage); + // checkMatrixEqual(rescaledDistanceCoverage.getRenderedImage(), + // HMTestMaps.rescaledDistanceData, 0.1); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestShalstab.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestShalstab.java index ce6673131..9480eb4cc 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestShalstab.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestShalstab.java @@ -1,64 +1,64 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.shalstab.Shalstab; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link Shalstab} module. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestShalstab extends HMTestCase { - public void testShalstab() throws Exception { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - - double[][] slopeData = HMTestMaps.slopeData; - GridCoverage2D slopeCoverage = CoverageUtilities.buildCoverage("slope", slopeData, envelopeParams, crs, true); - double[][] abData = HMTestMaps.abData; - GridCoverage2D abCoverage = CoverageUtilities.buildCoverage("ab", abData, envelopeParams, crs, true); - - Shalstab shalstab = new Shalstab(); - shalstab.inSlope = slopeCoverage; - shalstab.inTca = abCoverage; - shalstab.pTrasmissivity = 0.001; - shalstab.pCohesion = 0.0; - shalstab.pSdepth = 2.0; - shalstab.pRho = 1.6; - shalstab.pTgphi = 0.7; - shalstab.pQ = 0.05; - shalstab.pm = pm; - - shalstab.process(); - - GridCoverage2D qcritCoverage = shalstab.outQcrit; - GridCoverage2D classiCoverage = shalstab.outShalstab; - - checkMatrixEqual(qcritCoverage.getRenderedImage(), HMTestMaps.qcritmapData, 0); - checkMatrixEqual(classiCoverage.getRenderedImage(), HMTestMaps.classimapData, 0); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.shalstab.Shalstab; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link Shalstab} module. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestShalstab extends HMTestCase { + public void testShalstab() throws Exception { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + + double[][] slopeData = HMTestMaps.slopeData; + GridCoverage2D slopeCoverage = CoverageUtilities.buildCoverage("slope", slopeData, envelopeParams, crs, true); + double[][] abData = HMTestMaps.abData; + GridCoverage2D abCoverage = CoverageUtilities.buildCoverage("ab", abData, envelopeParams, crs, true); + + Shalstab shalstab = new Shalstab(); + shalstab.inSlope = slopeCoverage; + shalstab.inTca = abCoverage; + shalstab.pTrasmissivity = 0.001; + shalstab.pCohesion = 0.0; + shalstab.pSdepth = 2.0; + shalstab.pRho = 1.6; + shalstab.pTgphi = 0.7; + shalstab.pQ = 0.05; + shalstab.pm = pm; + + shalstab.process(); + + GridCoverage2D qcritCoverage = shalstab.outQcrit; + GridCoverage2D classiCoverage = shalstab.outShalstab; + + checkMatrixEqual(qcritCoverage.getRenderedImage(), HMTestMaps.qcritmapData, 0); + checkMatrixEqual(classiCoverage.getRenderedImage(), HMTestMaps.classimapData, 0); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSkyview.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSkyview.java index 2fa0e040f..f9db46a8a 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSkyview.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSkyview.java @@ -1,52 +1,52 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.skyview.Skyview; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link Skyview} module. - * - * @author Daniele Andreis - */ -public class TestSkyview extends HMTestCase { - - public void testSkyview() throws Exception { - double[][] elevationData = HMTestMaps.mapData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs3004; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); - - Skyview skyview = new Skyview(); - skyview.inElev = elevationCoverage; - skyview.pm = pm; - skyview.process(); - - GridCoverage2D hillshadeCoverage = skyview.outSky; - - checkMatrixEqual(hillshadeCoverage.getRenderedImage(), HMTestMaps.outSkyview, 0.03); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.skyview.Skyview; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link Skyview} module. + * + * @author Daniele Andreis + */ +public class TestSkyview extends HMTestCase { + + public void testSkyview() throws Exception { + double[][] elevationData = HMTestMaps.mapData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs3004; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); + + Skyview skyview = new Skyview(); + skyview.inElev = elevationCoverage; + skyview.pm = pm; + skyview.process(); + + GridCoverage2D hillshadeCoverage = skyview.outSky; + + checkMatrixEqual(hillshadeCoverage.getRenderedImage(), HMTestMaps.outSkyview, 0.03); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSplitsubbasins.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSplitsubbasins.java index 031608b78..0a656829d 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSplitsubbasins.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSplitsubbasins.java @@ -1,58 +1,58 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.demmanipulation.splitsubbasin.SplitSubbasins; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link SplitSubbasins} module. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestSplitsubbasins extends HMTestCase { - @SuppressWarnings("nls") - public void testSplitsubbasins() throws Exception { - - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - double[][] drainData = HMTestMaps.drainData1; - GridCoverage2D drainCoverage = CoverageUtilities.buildCoverage("drain", drainData, envelopeParams, crs, true); - double[][] hackstreamData = HMTestMaps.hackstream; - GridCoverage2D hackstreamCoverage = CoverageUtilities.buildCoverage("drain", hackstreamData, envelopeParams, crs, true); - - SplitSubbasins pitfiller = new SplitSubbasins(); - pitfiller.inFlow = drainCoverage; - pitfiller.inHack = hackstreamCoverage; - pitfiller.pHackorder = 3.0; - pitfiller.pm = pm; - pitfiller.process(); - - GridCoverage2D splitBasins = pitfiller.outSubbasins; - // GridCoverage2D splitNet = pitfiller.outNetnum; - - checkMatrixEqual(splitBasins.getRenderedImage(), HMTestMaps.splitSubBasinData_withHackOrder3, 0.00001); - - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.demmanipulation.splitsubbasin.SplitSubbasins; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link SplitSubbasins} module. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestSplitsubbasins extends HMTestCase { + @SuppressWarnings("nls") + public void testSplitsubbasins() throws Exception { + + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + double[][] drainData = HMTestMaps.drainData1; + GridCoverage2D drainCoverage = CoverageUtilities.buildCoverage("drain", drainData, envelopeParams, crs, true); + double[][] hackstreamData = HMTestMaps.hackstream; + GridCoverage2D hackstreamCoverage = CoverageUtilities.buildCoverage("drain", hackstreamData, envelopeParams, crs, true); + + SplitSubbasins pitfiller = new SplitSubbasins(); + pitfiller.inFlow = drainCoverage; + pitfiller.inHack = hackstreamCoverage; + pitfiller.pHackorder = 3.0; + pitfiller.pm = pm; + pitfiller.process(); + + GridCoverage2D splitBasins = pitfiller.outSubbasins; + // GridCoverage2D splitNet = pitfiller.outNetnum; + + checkMatrixEqual(splitBasins.getRenderedImage(), HMTestMaps.splitSubBasinData_withHackOrder3, 0.00001); + + } +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestStrahler.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestStrahler.java index ff3c126ac..6347a1bf6 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestStrahler.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestStrahler.java @@ -1,57 +1,57 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.awt.image.RenderedImage; -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.network.strahler.Strahler; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link Strahler} module. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestStrahler extends HMTestCase { - - public void testStrahler() throws Exception { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - double[][] flowData = HMTestMaps.mflowDataBorder; - GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); - double[][] netData = HMTestMaps.extractNet1Data; - GridCoverage2D netCoverage = CoverageUtilities.buildCoverage("net", netData, envelopeParams, crs, true); - - Strahler strahler = new Strahler(); - strahler.inFlow = flowCoverage; - strahler.inNet = netCoverage; - strahler.pm = pm; - strahler.process(); - GridCoverage2D outStrahler = strahler.outStrahler; - - RenderedImage renderedImage = outStrahler.getRenderedImage(); - // printImage(renderedImage); - checkMatrixEqual(renderedImage, HMTestMaps.strahlerData, 0.000001); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.awt.image.RenderedImage; +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.network.strahler.Strahler; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link Strahler} module. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestStrahler extends HMTestCase { + + public void testStrahler() throws Exception { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + double[][] flowData = HMTestMaps.mflowDataBorder; + GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); + double[][] netData = HMTestMaps.extractNet1Data; + GridCoverage2D netCoverage = CoverageUtilities.buildCoverage("net", netData, envelopeParams, crs, true); + + Strahler strahler = new Strahler(); + strahler.inFlow = flowCoverage; + strahler.inNet = netCoverage; + strahler.pm = pm; + strahler.process(); + GridCoverage2D outStrahler = strahler.outStrahler; + + RenderedImage renderedImage = outStrahler.getRenderedImage(); + // printImage(renderedImage); + checkMatrixEqual(renderedImage, HMTestMaps.strahlerData, 0.000001); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSurfaceInterpolator.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSurfaceInterpolator.java index 37f7b9540..cec41ca49 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSurfaceInterpolator.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestSurfaceInterpolator.java @@ -1,130 +1,130 @@ -///* -// * JGrass - Free Open Source Java GIS http://www.jgrass.org -// * (C) HydroloGIS - www.hydrologis.com -// * -// * This library is free software; you can redistribute it and/or modify it under -// * the terms of the GNU Library General Public License as published by the Free -// * Software Foundation; either version 2 of the License, or (at your option) any -// * later version. -// * -// * This library is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more -// * details. -// * -// * You should have received a copy of the GNU Library General Public License -// * along with this library; if not, write to the Free Foundation, Inc., 59 -// * Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -//package org.jgrasstools.hortonmachine.models.hm; -// -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.geotools.coverage.grid.GridGeometry2D; -//import org.geotools.data.simple.SimpleFeatureCollection; -//import org.jgrasstools.gears.io.gridgeometryreader.GridGeometryReader; -//import org.jgrasstools.gears.io.rasterreader.RasterReader; -//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; -//import org.jgrasstools.gears.io.vectorreader.VectorReader; -//import org.jgrasstools.gears.modules.r.interpolation2d.SurfaceInterpolator; -//import org.jgrasstools.gears.utils.HMTestCase; -// -///** -// * Test for the {@link SurfaceInterpolator} module. -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//@SuppressWarnings("nls") -//public class TestSurfaceInterpolator extends HMTestCase { -// public void testThinPlateSplineInterpolator() throws Exception { -// -// String baseFolder = ""; -// -// String inVector = baseFolder + "points_001059_1.shp"; -// String inMask = baseFolder + "mask"; -// String outRaster = baseFolder + "geo_interp_intens01"; -// -// GridGeometryReader ggR = new GridGeometryReader(); -// ggR.pNorth = 5105696.0; -// ggR.pSouth = 5105560.0; -// ggR.pWest = 675240.0; -// ggR.pEast = 675438.0; -// ggR.pXres = 0.1; -// ggR.pYres = 0.1; -// // ggR.pNorth = 5106011.0; -// // ggR.pSouth = 5105440.0; -// // ggR.pWest = 674979.0; -// // ggR.pEast = 675938.0; -// // ggR.pXres = 0.5; -// // ggR.pYres = 0.5; -// ggR.pCode = "EPSG:32632"; -// ggR.process(); -// -// GridGeometry2D gridGeometry2D = ggR.outGridgeom; -// -// SimpleFeatureCollection readVector = VectorReader.readVector(inVector); -// GridCoverage2D mask = RasterReader.readRaster(inMask); -// -// SurfaceInterpolator spliner = new SurfaceInterpolator(); -// spliner.inVector = readVector; -// spliner.inGrid = gridGeometry2D; -// spliner.inMask = mask; -// // spliner.fCat = "elev"; -// spliner.fCat = "intensity"; -// spliner.pMode = 1; -// spliner.pMaxThreads = 7; -// spliner.pBuffer = 6.0; -// spliner.pm = pm; -// spliner.process(); -// -// GridCoverage2D interpolated = spliner.outRaster; -// -// RasterWriter.writeRaster(outRaster, interpolated); -// } -// -// // public void testIDWInterpolator() throws Exception { -// // -// // String baseFolder = ""; -// // -// // // String inVector = baseFolder + "points_001059_1.shp"; -// // String inVector = baseFolder + "points_001059_1_groundy.shp"; -// // String inMask = baseFolder + "mask"; -// // String outRaster = baseFolder + -// // "interpolation_idw_elev_ground"; -// // -// // GridGeometryReader ggR = new GridGeometryReader(); -// // ggR.pNorth = 5105696.0; -// // ggR.pSouth = 5105560.0; -// // ggR.pWest = 675240.0; -// // ggR.pEast = 675438.0; -// // ggR.pXres = 0.5; -// // ggR.pYres = 0.5; -// // // ggR.pNorth = 5106011.0; -// // // ggR.pSouth = 5105440.0; -// // // ggR.pWest = 674979.0; -// // // ggR.pEast = 675938.0; -// // // ggR.pXres = 0.5; -// // // ggR.pYres = 0.5; -// // ggR.pCode = "EPSG:32632"; -// // ggR.process(); -// // -// // GridGeometry2D gridGeometry2D = ggR.outGridgeom; -// // -// // SimpleFeatureCollection readVector = VectorReader.readVector(inVector); -// // GridCoverage2D mask = RasterReader.readRaster(inMask); -// // -// // SurfaceInterpolator spliner = new SurfaceInterpolator(); -// // spliner.inVector = readVector; -// // spliner.inGrid = gridGeometry2D; -// // spliner.inMask = mask; -// // spliner.fCat = "elev"; -// // spliner.pMode = 1; -// // spliner.pMaxThreads = 7; -// // spliner.pBuffer = 15.0; -// // spliner.pm = pm; -// // spliner.process(); -// // -// // GridCoverage2D interpolated = spliner.outRaster; -// // -// // RasterWriter.writeRaster(outRaster, interpolated); -// // } -//} +///* +// * JGrass - Free Open Source Java GIS http://www.jgrass.org +// * (C) HydroloGIS - www.hydrologis.com +// * +// * This library is free software; you can redistribute it and/or modify it under +// * the terms of the GNU Library General Public License as published by the Free +// * Software Foundation; either version 2 of the License, or (at your option) any +// * later version. +// * +// * This library is distributed in the hope that it will be useful, but WITHOUT +// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +// * details. +// * +// * You should have received a copy of the GNU Library General Public License +// * along with this library; if not, write to the Free Foundation, Inc., 59 +// * Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +//package org.jgrasstools.hortonmachine.models.hm; +// +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.geotools.coverage.grid.GridGeometry2D; +//import org.geotools.data.simple.SimpleFeatureCollection; +//import org.jgrasstools.gears.io.gridgeometryreader.GridGeometryReader; +//import org.jgrasstools.gears.io.rasterreader.RasterReader; +//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; +//import org.jgrasstools.gears.io.vectorreader.VectorReader; +//import org.jgrasstools.gears.modules.r.interpolation2d.SurfaceInterpolator; +//import org.jgrasstools.gears.utils.HMTestCase; +// +///** +// * Test for the {@link SurfaceInterpolator} module. +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//@SuppressWarnings("nls") +//public class TestSurfaceInterpolator extends HMTestCase { +// public void testThinPlateSplineInterpolator() throws Exception { +// +// String baseFolder = ""; +// +// String inVector = baseFolder + "points_001059_1.shp"; +// String inMask = baseFolder + "mask"; +// String outRaster = baseFolder + "geo_interp_intens01"; +// +// GridGeometryReader ggR = new GridGeometryReader(); +// ggR.pNorth = 5105696.0; +// ggR.pSouth = 5105560.0; +// ggR.pWest = 675240.0; +// ggR.pEast = 675438.0; +// ggR.pXres = 0.1; +// ggR.pYres = 0.1; +// // ggR.pNorth = 5106011.0; +// // ggR.pSouth = 5105440.0; +// // ggR.pWest = 674979.0; +// // ggR.pEast = 675938.0; +// // ggR.pXres = 0.5; +// // ggR.pYres = 0.5; +// ggR.pCode = "EPSG:32632"; +// ggR.process(); +// +// GridGeometry2D gridGeometry2D = ggR.outGridgeom; +// +// SimpleFeatureCollection readVector = VectorReader.readVector(inVector); +// GridCoverage2D mask = RasterReader.readRaster(inMask); +// +// SurfaceInterpolator spliner = new SurfaceInterpolator(); +// spliner.inVector = readVector; +// spliner.inGrid = gridGeometry2D; +// spliner.inMask = mask; +// // spliner.fCat = "elev"; +// spliner.fCat = "intensity"; +// spliner.pMode = 1; +// spliner.pMaxThreads = 7; +// spliner.pBuffer = 6.0; +// spliner.pm = pm; +// spliner.process(); +// +// GridCoverage2D interpolated = spliner.outRaster; +// +// RasterWriter.writeRaster(outRaster, interpolated); +// } +// +// // public void testIDWInterpolator() throws Exception { +// // +// // String baseFolder = ""; +// // +// // // String inVector = baseFolder + "points_001059_1.shp"; +// // String inVector = baseFolder + "points_001059_1_groundy.shp"; +// // String inMask = baseFolder + "mask"; +// // String outRaster = baseFolder + +// // "interpolation_idw_elev_ground"; +// // +// // GridGeometryReader ggR = new GridGeometryReader(); +// // ggR.pNorth = 5105696.0; +// // ggR.pSouth = 5105560.0; +// // ggR.pWest = 675240.0; +// // ggR.pEast = 675438.0; +// // ggR.pXres = 0.5; +// // ggR.pYres = 0.5; +// // // ggR.pNorth = 5106011.0; +// // // ggR.pSouth = 5105440.0; +// // // ggR.pWest = 674979.0; +// // // ggR.pEast = 675938.0; +// // // ggR.pXres = 0.5; +// // // ggR.pYres = 0.5; +// // ggR.pCode = "EPSG:32632"; +// // ggR.process(); +// // +// // GridGeometry2D gridGeometry2D = ggR.outGridgeom; +// // +// // SimpleFeatureCollection readVector = VectorReader.readVector(inVector); +// // GridCoverage2D mask = RasterReader.readRaster(inMask); +// // +// // SurfaceInterpolator spliner = new SurfaceInterpolator(); +// // spliner.inVector = readVector; +// // spliner.inGrid = gridGeometry2D; +// // spliner.inMask = mask; +// // spliner.fCat = "elev"; +// // spliner.pMode = 1; +// // spliner.pMaxThreads = 7; +// // spliner.pBuffer = 15.0; +// // spliner.pm = pm; +// // spliner.process(); +// // +// // GridCoverage2D interpolated = spliner.outRaster; +// // +// // RasterWriter.writeRaster(outRaster, interpolated); +// // } +//} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestTc.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestTc.java index da4395b35..c834d6875 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestTc.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestTc.java @@ -1,61 +1,61 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.hillslopeanalyses.tc.Tc; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; -/** - * Tests the {@link Tc} module. - * - * @author Andrea Antonello (www.hydrologis.com) - * @author Daniele Andreis - */ -public class TestTc extends HMTestCase { - - @SuppressWarnings("nls") - public void testTc() throws Exception { - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - - double[][] tanData = HMTestMaps.tanData; - double[][] profData = HMTestMaps.profData; - - GridCoverage2D tanRaster = CoverageUtilities.buildCoverage("tan", tanData, envelopeParams, crs, true); - GridCoverage2D profRaster = CoverageUtilities.buildCoverage("prof", profData, envelopeParams, crs, true); - - Tc tc = new Tc(); - tc.pTanthres = 0.02; - tc.pProfthres = 0.0017; - tc.inProf = profRaster; - tc.inTan = tanRaster; - tc.process(); - GridCoverage2D outTc3 = tc.outTc3; - GridCoverage2D outTc9 = tc.outTc9; - - checkMatrixEqual(outTc3.getRenderedImage(), HMTestMaps.cp3Data); - checkMatrixEqual(outTc9.getRenderedImage(), HMTestMaps.cp9Data); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.hillslopeanalyses.tc.Tc; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +/** + * Tests the {@link Tc} module. + * + * @author Andrea Antonello (www.hydrologis.com) + * @author Daniele Andreis + */ +public class TestTc extends HMTestCase { + + @SuppressWarnings("nls") + public void testTc() throws Exception { + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + + double[][] tanData = HMTestMaps.tanData; + double[][] profData = HMTestMaps.profData; + + GridCoverage2D tanRaster = CoverageUtilities.buildCoverage("tan", tanData, envelopeParams, crs, true); + GridCoverage2D profRaster = CoverageUtilities.buildCoverage("prof", profData, envelopeParams, crs, true); + + Tc tc = new Tc(); + tc.pTanthres = 0.02; + tc.pProfthres = 0.0017; + tc.inProf = profRaster; + tc.inTan = tanRaster; + tc.process(); + GridCoverage2D outTc3 = tc.outTc3; + GridCoverage2D outTc9 = tc.outTc9; + + checkMatrixEqual(outTc3.getRenderedImage(), HMTestMaps.cp3Data); + checkMatrixEqual(outTc9.getRenderedImage(), HMTestMaps.cp9Data); + + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestValidationDoubleStation.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestValidationDoubleStation.java index b6efccf05..3cea952cb 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestValidationDoubleStation.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestValidationDoubleStation.java @@ -1,92 +1,92 @@ -package org.jgrasstools.hortonmachine.models.hm; - -import java.io.File; -import java.net.URL; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Set; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.jgrasstools.gears.io.shapefile.ShapefileFeatureReader; -import org.jgrasstools.gears.io.timedependent.TimeSeriesIteratorReader; -import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; -import org.jgrasstools.hortonmachine.modules.statistics.kriging.ValidateDoubleStation; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -/** - * Test the ValidationDoubleStation model. - * - * @author daniele andreis - * - */ -public class TestValidationDoubleStation extends HMTestCase { - - public void testValidationDoubleStation() throws Exception { - PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); - - URL stazioniUrl = this.getClass().getClassLoader().getResource("rainstations.shp"); - File stazioniFile = new File(stazioniUrl.toURI()); - - URL krigingRainUrl = this.getClass().getClassLoader().getResource("rain_test1.csv"); - File krigingRainFile = new File(krigingRainUrl.toURI()); - - ShapefileFeatureReader stationsReader = new ShapefileFeatureReader(); - stationsReader.file = stazioniFile.getAbsolutePath(); - stationsReader.readFeatureCollection(); - SimpleFeatureCollection stationsFC = stationsReader.geodata; - - TimeSeriesIteratorReader reader = new TimeSeriesIteratorReader(); - reader.file = krigingRainFile.getAbsolutePath(); - reader.idfield = "ID"; - reader.tStart = "2000-01-01 00:00"; - reader.tTimestep = 60; - // reader.tEnd = "2000-01-01 00:00"; - reader.fileNovalue = "-9999"; - - reader.initProcess(); - - ValidateDoubleStation validatStation = new ValidateDoubleStation(); - validatStation.pm = pm; - - validatStation.inStations = stationsFC; - validatStation.fStationsid = "ID_PUNTI_M"; - validatStation.doMean = true; - - while( reader.doProcess ) { - reader.nextRecord(); - HashMap id2ValueMap = reader.outData; - validatStation.inData = id2ValueMap; - validatStation.verifyDoubleStation(); - /* - * Extract the result. - */ - HashMap result = validatStation.outData; - double[][] test = HMTestMaps.outValidation; - - Set resultSet = result.keySet(); - Iterator idIterator = resultSet.iterator(); - int j = 1; - while( idIterator.hasNext() ) { - int id = idIterator.next(); - double actual = result.get(id)[0]; - boolean done = false; - for( int i = 0; i < test.length; i++ ) { - if (test[i][0] == id) { - assertEquals(" " + i + " " + j, test[i][j], actual, 0.01); - done=true; - } - } - if(!done){ - fail(); - } - - - } - j++; - } - - reader.close(); - - } - -} +package org.jgrasstools.hortonmachine.models.hm; + +import java.io.File; +import java.net.URL; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Set; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.jgrasstools.gears.io.shapefile.ShapefileFeatureReader; +import org.jgrasstools.gears.io.timedependent.TimeSeriesIteratorReader; +import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; +import org.jgrasstools.hortonmachine.modules.statistics.kriging.ValidateDoubleStation; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +/** + * Test the ValidationDoubleStation model. + * + * @author daniele andreis + * + */ +public class TestValidationDoubleStation extends HMTestCase { + + public void testValidationDoubleStation() throws Exception { + PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); + + URL stazioniUrl = this.getClass().getClassLoader().getResource("rainstations.shp"); + File stazioniFile = new File(stazioniUrl.toURI()); + + URL krigingRainUrl = this.getClass().getClassLoader().getResource("rain_test1.csv"); + File krigingRainFile = new File(krigingRainUrl.toURI()); + + ShapefileFeatureReader stationsReader = new ShapefileFeatureReader(); + stationsReader.file = stazioniFile.getAbsolutePath(); + stationsReader.readFeatureCollection(); + SimpleFeatureCollection stationsFC = stationsReader.geodata; + + TimeSeriesIteratorReader reader = new TimeSeriesIteratorReader(); + reader.file = krigingRainFile.getAbsolutePath(); + reader.idfield = "ID"; + reader.tStart = "2000-01-01 00:00"; + reader.tTimestep = 60; + // reader.tEnd = "2000-01-01 00:00"; + reader.fileNovalue = "-9999"; + + reader.initProcess(); + + ValidateDoubleStation validatStation = new ValidateDoubleStation(); + validatStation.pm = pm; + + validatStation.inStations = stationsFC; + validatStation.fStationsid = "ID_PUNTI_M"; + validatStation.doMean = true; + + while( reader.doProcess ) { + reader.nextRecord(); + HashMap id2ValueMap = reader.outData; + validatStation.inData = id2ValueMap; + validatStation.verifyDoubleStation(); + /* + * Extract the result. + */ + HashMap result = validatStation.outData; + double[][] test = HMTestMaps.outValidation; + + Set resultSet = result.keySet(); + Iterator idIterator = resultSet.iterator(); + int j = 1; + while( idIterator.hasNext() ) { + int id = idIterator.next(); + double actual = result.get(id)[0]; + boolean done = false; + for( int i = 0; i < test.length; i++ ) { + if (test[i][0] == id) { + assertEquals(" " + i + " " + j, test[i][j], actual, 0.01); + done=true; + } + } + if(!done){ + fail(); + } + + + } + j++; + } + + reader.close(); + + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestWateroutlet.java b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestWateroutlet.java index cf50c2951..ab0519f0e 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestWateroutlet.java +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/models/hm/TestWateroutlet.java @@ -1,83 +1,83 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.hortonmachine.models.hm; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.utils.PrintUtilities; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.hortonmachine.modules.demmanipulation.wateroutlet.ExtractBasin; -import org.jgrasstools.hortonmachine.modules.demmanipulation.wateroutlet.Wateroutlet; -import org.jgrasstools.hortonmachine.utils.HMTestCase; -import org.jgrasstools.hortonmachine.utils.HMTestMaps; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test the {@link Wateroutlet} module. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestWateroutlet extends HMTestCase { - public void testWateroutlet() throws Exception { - - double[][] flowData = HMTestMaps.flowData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); - - Wateroutlet wateroutlet = new Wateroutlet(); - wateroutlet.pm = pm; - wateroutlet.inFlow = flowCoverage; - wateroutlet.pNorth = 5139885.0; - wateroutlet.pEast = 1640724.0; - - wateroutlet.process(); - - GridCoverage2D basinCoverage = wateroutlet.outBasin; - - // System.out.println(wateroutlet.outArea); - // PrintUtilities.printCoverageData(basinCoverage); - - checkMatrixEqual(basinCoverage.getRenderedImage(), HMTestMaps.basinWateroutletData, 0); - } - - public void testExtractBasin() throws Exception { - - double[][] flowData = HMTestMaps.flowData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); - - ExtractBasin extractBasin = new ExtractBasin(); - extractBasin.pm = pm; - extractBasin.inFlow = flowCoverage; - extractBasin.pNorth = 5139885.0; - extractBasin.pEast = 1640724.0; - - extractBasin.process(); - - GridCoverage2D basinCoverage = extractBasin.outBasin; - - // System.out.println(extractBasin.outArea); - // PrintUtilities.printCoverageData(basinCoverage); - - checkMatrixEqual(basinCoverage.getRenderedImage(), HMTestMaps.basinWateroutletData, 0); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.hortonmachine.models.hm; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.utils.PrintUtilities; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.hortonmachine.modules.demmanipulation.wateroutlet.ExtractBasin; +import org.jgrasstools.hortonmachine.modules.demmanipulation.wateroutlet.Wateroutlet; +import org.jgrasstools.hortonmachine.utils.HMTestCase; +import org.jgrasstools.hortonmachine.utils.HMTestMaps; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test the {@link Wateroutlet} module. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestWateroutlet extends HMTestCase { + public void testWateroutlet() throws Exception { + + double[][] flowData = HMTestMaps.flowData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); + + Wateroutlet wateroutlet = new Wateroutlet(); + wateroutlet.pm = pm; + wateroutlet.inFlow = flowCoverage; + wateroutlet.pNorth = 5139885.0; + wateroutlet.pEast = 1640724.0; + + wateroutlet.process(); + + GridCoverage2D basinCoverage = wateroutlet.outBasin; + + // System.out.println(wateroutlet.outArea); + // PrintUtilities.printCoverageData(basinCoverage); + + checkMatrixEqual(basinCoverage.getRenderedImage(), HMTestMaps.basinWateroutletData, 0); + } + + public void testExtractBasin() throws Exception { + + double[][] flowData = HMTestMaps.flowData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D flowCoverage = CoverageUtilities.buildCoverage("flow", flowData, envelopeParams, crs, true); + + ExtractBasin extractBasin = new ExtractBasin(); + extractBasin.pm = pm; + extractBasin.inFlow = flowCoverage; + extractBasin.pNorth = 5139885.0; + extractBasin.pEast = 1640724.0; + + extractBasin.process(); + + GridCoverage2D basinCoverage = extractBasin.outBasin; + + // System.out.println(extractBasin.outArea); + // PrintUtilities.printCoverageData(basinCoverage); + + checkMatrixEqual(basinCoverage.getRenderedImage(), HMTestMaps.basinWateroutletData, 0); + } + +} diff --git a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/oms/scripts/Adige.jgrass b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/oms/scripts/Adige.jgrass index b4b75e47d..a02de217b 100644 --- a/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/oms/scripts/Adige.jgrass +++ b/hortonmachine/src/test/java/org/jgrasstools/hortonmachine/oms/scripts/Adige.jgrass @@ -1,54 +1,54 @@ -sim(name:"Adige") { - - // your folder here - def folder = "/home/moovida/TMP/review/"; - - def hillslope = folder + "hillslope.shp"; - - model { - components { - inHillslopeReader 'ShapefileFeatureReader' - rainReader 'TimeseriesByStepReaderId2Value' - netradiatonReader 'TimeseriesByStepReaderId2Value' - shortradiatonReader 'TimeseriesByStepReaderId2Value' - temperatureReader 'TimeseriesByStepReaderId2Value' - humidityReader 'TimeseriesByStepReaderId2Value' - windspeedReader 'TimeseriesByStepReaderId2Value' - pressureReader 'TimeseriesByStepReaderId2Value' - sweReader 'TimeseriesByStepReaderId2Value' - hydrometersReader 'ShapefileFeatureReader' - hydrometersDataReader 'TimeseriesByStepReaderId2Value' - damsReader 'ShapefileFeatureReader' - damsDataReader 'TimeseriesByStepReaderId2Value' - tribuReader 'ShapefileFeatureReader' - damsDataReader 'TimeseriesByStepReaderId2Value' - adige 'Adige' - } - - parameter { - 'inHillslopeReader.file' "$hillslope" - 'adige.fNetnum' "netnum" - 'adige.fBaricenter' "baric" - 'adige.fVegetation' "vegetation" - 'adige.fAvg_sub' "avg_sub" - 'adige.fVar_sub' "var_sub" - 'adige.fAvg_sup_10' "avg_sup_10" - 'adige.fVar_sup_10' "var_sup_10" - 'adige.fAvg_sup_30' "avg_sup_30" - 'adige.fVar_sup_30' "var_sup_30" - 'adige.fAvg_sup_60' "fAvg_sup_60" - 'adige.fVar_sup_60' "fVar_sup_60" - 'adige.pV_sup' 0.5 - 'adige.pV_sub' 0.005 - - 'writer.file' "$folder/sorgenti_azim_minus90.shp" - 'featureReshaper.pCql' "azimuth90=azimuth - 90" - } - - connect { - 'reader.geodata' 'featureReshaper.inFeatures' - 'featureReshaper.outFeatures' 'writer.geodata' - } - - } -} +sim(name:"Adige") { + + // your folder here + def folder = "/home/moovida/TMP/review/"; + + def hillslope = folder + "hillslope.shp"; + + model { + components { + inHillslopeReader 'ShapefileFeatureReader' + rainReader 'TimeseriesByStepReaderId2Value' + netradiatonReader 'TimeseriesByStepReaderId2Value' + shortradiatonReader 'TimeseriesByStepReaderId2Value' + temperatureReader 'TimeseriesByStepReaderId2Value' + humidityReader 'TimeseriesByStepReaderId2Value' + windspeedReader 'TimeseriesByStepReaderId2Value' + pressureReader 'TimeseriesByStepReaderId2Value' + sweReader 'TimeseriesByStepReaderId2Value' + hydrometersReader 'ShapefileFeatureReader' + hydrometersDataReader 'TimeseriesByStepReaderId2Value' + damsReader 'ShapefileFeatureReader' + damsDataReader 'TimeseriesByStepReaderId2Value' + tribuReader 'ShapefileFeatureReader' + damsDataReader 'TimeseriesByStepReaderId2Value' + adige 'Adige' + } + + parameter { + 'inHillslopeReader.file' "$hillslope" + 'adige.fNetnum' "netnum" + 'adige.fBaricenter' "baric" + 'adige.fVegetation' "vegetation" + 'adige.fAvg_sub' "avg_sub" + 'adige.fVar_sub' "var_sub" + 'adige.fAvg_sup_10' "avg_sup_10" + 'adige.fVar_sup_10' "var_sup_10" + 'adige.fAvg_sup_30' "avg_sup_30" + 'adige.fVar_sup_30' "var_sup_30" + 'adige.fAvg_sup_60' "fAvg_sup_60" + 'adige.fVar_sup_60' "fVar_sup_60" + 'adige.pV_sup' 0.5 + 'adige.pV_sub' 0.005 + + 'writer.file' "$folder/sorgenti_azim_minus90.shp" + 'featureReshaper.pCql' "azimuth90=azimuth - 90" + } + + connect { + 'reader.geodata' 'featureReshaper.inFeatures' + 'featureReshaper.outFeatures' 'writer.geodata' + } + + } +} diff --git a/hortonmachine/src/test/resources/dtm_test.asc b/hortonmachine/src/test/resources/dtm_test.asc index e927d25eb..c8bdcffe1 100644 --- a/hortonmachine/src/test/resources/dtm_test.asc +++ b/hortonmachine/src/test/resources/dtm_test.asc @@ -1,14 +1,14 @@ -ncols 10 -nrows 8 -xllcorner 1640650.0 -yllcorner 5139780.0 -cellsize 30 -NODATA_value -9999.0 -800 900 1000 1000 1200 1250 1300 1350 1450 1500 -600 -9999.0 750 850 860 900 1000 1200 1250 1500 -500 550 700 750 800 850 900 1000 1100 1500 -400 410 650 700 750 800 850 490 450 1500 -450 550 430 500 600 700 800 500 450 1500 -500 600 700 750 760 770 850 1000 1150 1500 -600 700 750 800 780 790 1000 1100 1250 1500 -800 910 980 1001 1150 1200 1250 1300 1450 1500 +ncols 10 +nrows 8 +xllcorner 1640650.0 +yllcorner 5139780.0 +cellsize 30 +NODATA_value -9999.0 +800 900 1000 1000 1200 1250 1300 1350 1450 1500 +600 -9999.0 750 850 860 900 1000 1200 1250 1500 +500 550 700 750 800 850 900 1000 1100 1500 +400 410 650 700 750 800 850 490 450 1500 +450 550 430 500 600 700 800 500 450 1500 +500 600 700 750 760 770 850 1000 1150 1500 +600 700 750 800 780 790 1000 1100 1250 1500 +800 910 980 1001 1150 1200 1250 1300 1450 1500 diff --git a/hortonmachine/src/test/resources/dtm_test.prj b/hortonmachine/src/test/resources/dtm_test.prj index ded43d128..095d52524 100644 --- a/hortonmachine/src/test/resources/dtm_test.prj +++ b/hortonmachine/src/test/resources/dtm_test.prj @@ -1,21 +1,21 @@ -PROJCS["WGS 84 / UTM zone 32N", - GEOGCS["WGS 84", - DATUM["World Geodetic System 1984", - SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], - AUTHORITY["EPSG","6326"]], - PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], - UNIT["degree", 0.017453292519943295], - AXIS["Geodetic longitude", EAST], - AXIS["Geodetic latitude", NORTH], - AUTHORITY["EPSG","4326"]], - PROJECTION["Transverse_Mercator"], - PARAMETER["central_meridian", 9.0], - PARAMETER["latitude_of_origin", 0.0], - PARAMETER["scale_factor", 0.9996], - PARAMETER["false_easting", 500000.0], - PARAMETER["false_northing", 0.0], - UNIT["m", 1.0], - AXIS["Easting", EAST], - AXIS["Northing", NORTH], - AUTHORITY["EPSG","32632"]] - +PROJCS["WGS 84 / UTM zone 32N", + GEOGCS["WGS 84", + DATUM["World Geodetic System 1984", + SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], + AUTHORITY["EPSG","6326"]], + PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], + UNIT["degree", 0.017453292519943295], + AXIS["Geodetic longitude", EAST], + AXIS["Geodetic latitude", NORTH], + AUTHORITY["EPSG","4326"]], + PROJECTION["Transverse_Mercator"], + PARAMETER["central_meridian", 9.0], + PARAMETER["latitude_of_origin", 0.0], + PARAMETER["scale_factor", 0.9996], + PARAMETER["false_easting", 500000.0], + PARAMETER["false_northing", 0.0], + UNIT["m", 1.0], + AXIS["Easting", EAST], + AXIS["Northing", NORTH], + AUTHORITY["EPSG","32632"]] + diff --git a/hortonmachine/src/test/resources/kriging_expectedresult b/hortonmachine/src/test/resources/kriging_expectedresult index aa2a1dadb..16ea866b1 100644 --- a/hortonmachine/src/test/resources/kriging_expectedresult +++ b/hortonmachine/src/test/resources/kriging_expectedresult @@ -1,1951 +1,1951 @@ -ID,data -113,1.08 -114,1.04 -115,1.1 -116,1.5 -117,2.01 -118,2.58 -119,2.98 -120,2.83 -200,1.24 -201,1.38 -202,1.34 -203,1.2 -204,1.08 -205,1.03 -206,1.11 -207,1.45 -208,1.97 -209,2.62 -210,3.2 -211,2.92 -212,2.36 -213,1.85 -214,1.43 -215,1.06 -216,0.72 -217,0.42 -218,0.33 -219,0.44 -220,0.57 -221,0.73 -290,1.22 -291,1.46 -292,1.57 -293,1.47 -294,1.25 -295,1.09 -296,1.02 -297,1.08 -298,1.37 -299,1.87 -300,2.55 -301,3.4 -302,2.89 -303,2.26 -304,1.76 -305,1.34 -306,0.99 -307,0.68 -308,0.42 -309,0.33 -310,0.41 -311,0.53 -312,0.69 -313,0.93 -314,1.23 -315,1.52 -316,1.73 -317,1.75 -318,1.58 -319,1.31 -320,1.32 -321,1.41 -380,1.36 -381,1.53 -382,1.75 -383,1.82 -384,1.63 -385,1.3 -386,1.1 -387,1 -388,1.03 -389,1.25 -390,1.69 -391,2.33 -392,2.99 -393,2.65 -394,2.08 -395,1.61 -396,1.23 -397,0.91 -398,0.64 -399,0.43 -400,0.35 -401,0.4 -402,0.5 -403,0.65 -404,0.91 -405,1.24 -406,1.59 -407,1.87 -408,1.9 -409,1.69 -410,1.43 -411,1.36 -412,1.42 -413,1.55 -414,1.74 -415,1.94 -416,2.02 -417,1.97 -418,1.88 -419,1.8 -420,1.74 -421,1.68 -471,1.56 -472,1.83 -473,2.09 -474,2.11 -475,1.82 -476,1.38 -477,1.12 -478,0.98 -479,0.95 -480,1.08 -481,1.44 -482,1.97 -483,2.41 -484,2.24 -485,1.81 -486,1.43 -487,1.11 -488,0.84 -489,0.6 -490,0.43 -491,0.36 -492,0.39 -493,0.48 -494,0.62 -495,0.88 -496,1.24 -497,1.66 -498,2.03 -499,2.07 -500,1.81 -501,1.54 -502,1.42 -503,1.43 -504,1.56 -505,1.79 -506,2.05 -507,2.12 -508,2.02 -509,1.9 -510,1.81 -511,1.75 -512,1.69 -513,1.63 -514,1.56 -515,1.48 -516,1.39 -517,1.3 -518,1.21 -519,1.12 -520,1.03 -521,0.93 -561,1.44 -562,1.74 -563,2.11 -564,2.45 -565,2.44 -566,2.03 -567,1.51 -568,1.15 -569,0.95 -570,0.85 -571,0.88 -572,1.14 -573,1.56 -574,1.85 -575,1.78 -576,1.5 -577,1.21 -578,0.97 -579,0.75 -580,0.56 -581,0.43 -582,0.37 -583,0.38 -584,0.45 -585,0.6 -586,0.85 -587,1.22 -588,1.69 -589,2.19 -590,2.25 -591,1.92 -592,1.63 -593,1.46 -594,1.42 -595,1.54 -596,1.88 -597,2.23 -598,2.23 -599,2.06 -600,1.91 -601,1.81 -602,1.75 -603,1.7 -604,1.64 -605,1.57 -606,1.49 -607,1.39 -608,1.3 -609,1.21 -610,1.12 -611,1.02 -612,0.92 -613,0.81 -614,0.71 -615,0.63 -616,0.57 -617,0.54 -618,0.53 -619,0.59 -620,0.7 -621,0.83 -651,1.26 -652,1.52 -653,1.88 -654,2.35 -655,2.83 -656,2.8 -657,2.22 -658,1.61 -659,1.18 -660,0.91 -661,0.76 -662,0.68 -663,0.85 -664,1.15 -665,1.34 -666,1.32 -667,1.15 -668,0.98 -669,0.82 -670,0.67 -671,0.52 -672,0.42 -673,0.37 -674,0.37 -675,0.43 -676,0.56 -677,0.8 -678,1.17 -679,1.67 -680,2.28 -681,2.35 -682,1.97 -683,1.68 -684,1.49 -685,1.39 -686,1.47 -687,2 -688,2.48 -689,2.33 -690,2.06 -691,1.89 -692,1.79 -693,1.74 -694,1.7 -695,1.65 -696,1.59 -697,1.49 -698,1.39 -699,1.3 -700,1.21 -701,1.12 -702,1.02 -703,0.91 -704,0.8 -705,0.69 -706,0.61 -707,0.55 -708,0.52 -709,0.51 -710,0.57 -711,0.72 -712,0.86 -713,0.98 -714,1.05 -715,1.04 -716,0.95 -717,0.87 -742,1.27 -743,1.56 -744,1.97 -745,2.52 -746,3.17 -747,3.13 -748,2.35 -749,1.66 -750,1.17 -751,0.85 -752,0.67 -753,0.55 -754,0.63 -755,0.79 -756,0.88 -757,0.89 -758,0.81 -759,0.76 -760,0.69 -761,0.59 -762,0.48 -763,0.4 -764,0.36 -765,0.36 -766,0.4 -767,0.51 -768,0.73 -769,1.08 -770,1.59 -771,2.15 -772,2.26 -773,1.97 -774,1.71 -775,1.51 -776,1.35 -777,1.32 -778,2.07 -779,2.79 -780,2.38 -781,2.01 -782,1.84 -783,1.76 -784,1.73 -785,1.7 -786,1.67 -787,1.6 -788,1.5 -789,1.39 -790,1.29 -791,1.21 -792,1.11 -793,1.02 -794,0.91 -795,0.79 -796,0.68 -797,0.59 -798,0.53 -799,0.51 -800,0.51 -801,0.57 -802,0.75 -803,0.91 -804,1.05 -805,1.14 -806,1.15 -807,1.08 -808,0.97 -809,0.89 -832,1.05 -833,1.26 -834,1.56 -835,1.99 -836,2.57 -837,3.32 -838,3.27 -839,2.37 -840,1.65 -841,1.13 -842,0.79 -843,0.61 -844,0.51 -845,0.5 -846,0.49 -847,0.49 -848,0.53 -849,0.5 -850,0.56 -851,0.56 -852,0.52 -853,0.45 -854,0.38 -855,0.35 -856,0.34 -857,0.37 -858,0.46 -859,0.63 -860,0.96 -861,1.45 -862,1.93 -863,2.07 -864,1.91 -865,1.71 -866,1.53 -867,1.33 -868,1.1 -869,1.93 -870,3.07 -871,2.29 -872,1.89 -873,1.75 -874,1.72 -875,1.71 -876,1.7 -877,1.68 -878,1.61 -879,1.49 -880,1.38 -881,1.29 -882,1.2 -883,1.11 -884,1.01 -885,0.91 -886,0.78 -887,0.66 -888,0.57 -889,0.52 -890,0.52 -891,0.54 -892,0.63 -893,0.79 -894,0.96 -895,1.12 -896,1.24 -897,1.27 -898,1.23 -899,1.08 -900,0.94 -901,0.86 -902,0.86 -922,0.88 -923,1.01 -924,1.22 -925,1.53 -926,1.95 -927,2.5 -928,3.1 -929,3.03 -930,2.25 -931,1.57 -932,1.05 -933,0.71 -934,0.56 -935,0.49 -936,0.44 -937,0.31 -938,0.25 -939,0.28 -940,0.25 -941,0.41 -942,0.46 -943,0.46 -944,0.42 -945,0.36 -946,0.33 -947,0.32 -948,0.34 -949,0.41 -950,0.54 -951,0.81 -952,1.3 -953,1.73 -954,1.89 -955,1.82 -956,1.7 -957,1.57 -958,1.36 -959,0.99 -960,1.19 -961,2.77 -962,1.99 -963,1.69 -964,1.64 -965,1.67 -966,1.69 -967,1.7 -968,1.68 -969,1.62 -970,1.48 -971,1.36 -972,1.27 -973,1.2 -974,1.1 -975,1.01 -976,0.9 -977,0.77 -978,0.66 -979,0.56 -980,0.51 -981,0.54 -982,0.6 -983,0.7 -984,0.84 -985,1.01 -986,1.19 -987,1.35 -988,1.39 -989,1.4 -990,1.19 -991,0.96 -992,0.87 -993,0.86 -994,0.84 -995,0.78 -1013,0.84 -1014,0.96 -1015,1.17 -1016,1.46 -1017,1.85 -1018,2.33 -1019,2.74 -1020,2.64 -1021,2.04 -1022,1.43 -1023,0.95 -1024,0.63 -1025,0.53 -1026,0.5 -1027,0.44 -1028,0.29 -1029,0.23 -1030,0.19 -1031,0.16 -1032,0.31 -1033,0.39 -1034,0.41 -1035,0.4 -1036,0.35 -1037,0.31 -1038,0.29 -1039,0.31 -1040,0.38 -1041,0.46 -1042,0.66 -1043,1.17 -1044,1.55 -1045,1.72 -1046,1.72 -1047,1.69 -1048,1.63 -1049,1.47 -1050,1.12 -1051,1.04 -1052,1.87 -1053,1.5 -1054,1.43 -1055,1.52 -1056,1.61 -1057,1.68 -1058,1.69 -1059,1.67 -1060,1.62 -1061,1.44 -1062,1.32 -1063,1.25 -1064,1.19 -1065,1.1 -1066,0.99 -1067,0.88 -1068,0.76 -1069,0.66 -1070,0.56 -1071,0.5 -1072,0.59 -1073,0.68 -1074,0.78 -1075,0.9 -1076,1.06 -1077,1.25 -1078,1.44 -1079,1.5 -1080,1.59 -1081,1.27 -1082,0.97 -1083,0.86 -1084,0.85 -1085,0.83 -1086,0.78 -1087,0.71 -1103,0.75 -1104,0.79 -1105,0.9 -1106,1.1 -1107,1.36 -1108,1.7 -1109,2.12 -1110,2.38 -1111,2.24 -1112,1.76 -1113,1.26 -1114,0.86 -1115,0.58 -1116,0.52 -1117,0.54 -1118,0.5 -1119,0.36 -1120,0.3 -1121,0.2 -1122,0.16 -1123,0.27 -1124,0.35 -1125,0.38 -1126,0.39 -1127,0.33 -1128,0.29 -1129,0.27 -1130,0.28 -1131,0.36 -1132,0.46 -1133,0.65 -1134,1.09 -1135,1.42 -1136,1.58 -1137,1.63 -1138,1.68 -1139,1.72 -1140,1.65 -1141,1.38 -1142,1.11 -1143,1.19 -1144,0.92 -1145,1.17 -1146,1.41 -1147,1.58 -1148,1.67 -1149,1.69 -1150,1.65 -1151,1.55 -1152,1.39 -1153,1.27 -1154,1.22 -1155,1.19 -1156,1.09 -1157,0.97 -1158,0.86 -1159,0.75 -1160,0.67 -1161,0.59 -1162,0.51 -1163,0.66 -1164,0.77 -1165,0.86 -1166,0.96 -1167,1.1 -1168,1.28 -1169,1.48 -1170,1.59 -1171,1.67 -1172,1.32 -1173,0.95 -1174,0.86 -1175,0.86 -1176,0.83 -1177,0.78 -1178,0.71 -1179,0.63 -1193,0.71 -1194,0.72 -1195,0.74 -1196,0.83 -1197,1.02 -1198,1.27 -1199,1.55 -1200,1.9 -1201,2.06 -1202,1.88 -1203,1.46 -1204,1.08 -1205,0.78 -1206,0.59 -1207,0.53 -1208,0.63 -1209,0.58 -1210,0.44 -1211,0.4 -1212,0.21 -1213,0.2 -1214,0.27 -1215,0.33 -1216,0.37 -1217,0.38 -1218,0.32 -1219,0.28 -1220,0.25 -1221,0.27 -1222,0.38 -1223,0.51 -1224,0.72 -1225,1.06 -1226,1.33 -1227,1.47 -1228,1.53 -1229,1.68 -1230,1.82 -1231,1.89 -1232,1.72 -1233,1.15 -1234,0.79 -1235,0.57 -1236,0.98 -1237,1.33 -1238,1.56 -1239,1.68 -1240,1.69 -1241,1.61 -1242,1.48 -1243,1.31 -1244,1.21 -1245,1.18 -1246,1.19 -1247,1.07 -1248,0.95 -1249,0.84 -1250,0.75 -1251,0.69 -1252,0.65 -1253,0.64 -1254,0.77 -1255,0.88 -1256,0.95 -1257,1.02 -1258,1.12 -1259,1.29 -1260,1.51 -1261,1.68 -1262,1.69 -1263,1.38 -1264,0.9 -1265,0.89 -1266,0.88 -1267,0.84 -1268,0.79 -1269,0.72 -1270,0.65 -1271,0.6 -1284,0.71 -1285,0.7 -1286,0.69 -1287,0.75 -1288,0.95 -1289,1.2 -1290,1.46 -1291,1.72 -1292,1.78 -1293,1.55 -1294,1.15 -1295,0.9 -1296,0.73 -1297,0.6 -1298,0.53 -1299,0.6 -1300,0.64 -1301,0.52 -1302,0.46 -1303,0.22 -1304,0.26 -1305,0.31 -1306,0.34 -1307,0.36 -1308,0.35 -1309,0.31 -1310,0.28 -1311,0.25 -1312,0.27 -1313,0.42 -1314,0.61 -1315,0.81 -1316,1.07 -1317,1.29 -1318,1.41 -1319,1.44 -1320,1.7 -1321,1.92 -1322,2.13 -1323,2.21 -1324,1.16 -1325,0.6 -1326,0.44 -1327,0.91 -1328,1.31 -1329,1.58 -1330,1.71 -1331,1.7 -1332,1.58 -1333,1.41 -1334,1.22 -1335,1.13 -1336,1.13 -1337,1.16 -1338,1.04 -1339,0.92 -1340,0.82 -1341,0.75 -1342,0.73 -1343,0.74 -1344,0.8 -1345,0.92 -1346,1.01 -1347,1.04 -1348,1.06 -1349,1.14 -1350,1.28 -1351,1.52 -1352,1.78 -1353,1.81 -1354,1.5 -1355,1.05 -1356,0.97 -1357,0.92 -1358,0.86 -1359,0.81 -1360,0.74 -1361,0.67 -1362,0.64 -1374,0.71 -1375,0.71 -1376,0.69 -1377,0.65 -1378,0.67 -1379,0.88 -1380,1.16 -1381,1.4 -1382,1.57 -1383,1.58 -1384,1.31 -1385,0.84 -1386,0.76 -1387,0.69 -1388,0.63 -1389,0.59 -1390,0.65 -1391,0.7 -1392,0.63 -1393,0.55 -1394,0.38 -1395,0.37 -1396,0.37 -1397,0.36 -1398,0.35 -1399,0.34 -1400,0.31 -1401,0.29 -1402,0.28 -1403,0.27 -1404,0.51 -1405,0.73 -1406,0.92 -1407,1.11 -1408,1.27 -1409,1.39 -1410,1.49 -1411,1.73 -1412,1.99 -1413,2.3 -1414,3.48 -1415,1.12 -1416,0.67 -1417,0.59 -1418,0.97 -1419,1.36 -1420,1.62 -1421,1.77 -1422,1.72 -1423,1.57 -1424,1.34 -1425,1.12 -1426,1.03 -1427,1.06 -1428,1.08 -1429,1 -1430,0.9 -1431,0.81 -1432,0.75 -1433,0.77 -1434,0.85 -1435,0.96 -1436,1.08 -1437,1.16 -1438,1.15 -1439,1.11 -1440,1.14 -1441,1.24 -1442,1.5 -1443,1.89 -1444,1.98 -1445,1.66 -1446,1.29 -1447,1.11 -1448,0.97 -1449,0.87 -1450,0.83 -1451,0.76 -1452,0.7 -1453,0.67 -1465,0.73 -1466,0.73 -1467,0.7 -1468,0.63 -1469,0.59 -1470,0.85 -1471,1.15 -1472,1.36 -1473,1.48 -1474,1.44 -1475,1.17 -1476,0.64 -1477,0.7 -1478,0.69 -1479,0.67 -1480,0.67 -1481,0.73 -1482,0.78 -1483,0.76 -1484,0.71 -1485,0.59 -1486,0.51 -1487,0.45 -1488,0.4 -1489,0.36 -1490,0.33 -1491,0.31 -1492,0.32 -1493,0.35 -1494,0.38 -1495,0.65 -1496,0.88 -1497,1.04 -1498,1.16 -1499,1.29 -1500,1.4 -1501,1.54 -1502,1.77 -1503,2.02 -1504,2.29 -1505,2.16 -1506,1.17 -1507,0.83 -1508,0.81 -1509,1.11 -1510,1.46 -1511,1.7 -1512,1.82 -1513,1.76 -1514,1.57 -1515,1.3 -1516,1.01 -1517,0.94 -1518,1 -1519,1.02 -1520,0.96 -1521,0.87 -1522,0.8 -1523,0.75 -1524,0.83 -1525,0.97 -1526,1.12 -1527,1.27 -1528,1.32 -1529,1.26 -1530,1.17 -1531,1.13 -1532,1.16 -1533,1.41 -1534,2.01 -1535,2.17 -1536,1.82 -1537,1.5 -1538,1.27 -1539,1.01 -1540,0.88 -1541,0.85 -1542,0.77 -1543,0.73 -1544,0.69 -1555,0.7 -1556,0.75 -1557,0.77 -1558,0.74 -1559,0.66 -1560,0.51 -1561,0.89 -1562,1.19 -1563,1.36 -1564,1.42 -1565,1.37 -1566,1.15 -1567,0.81 -1568,0.73 -1569,0.72 -1570,0.72 -1571,0.76 -1572,0.81 -1573,0.87 -1574,0.91 -1575,0.9 -1576,0.81 -1577,0.67 -1578,0.54 -1579,0.44 -1580,0.37 -1581,0.33 -1582,0.32 -1583,0.36 -1584,0.45 -1585,0.59 -1586,0.85 -1587,1.06 -1588,1.18 -1589,1.23 -1590,1.31 -1591,1.43 -1592,1.58 -1593,1.8 -1594,2.02 -1595,2.17 -1596,1.91 -1597,1.3 -1598,1.03 -1599,1.04 -1600,1.3 -1601,1.6 -1602,1.8 -1603,1.89 -1604,1.82 -1605,1.61 -1606,1.28 -1607,0.9 -1608,0.86 -1609,0.97 -1610,0.99 -1611,0.93 -1612,0.85 -1613,0.81 -1614,0.79 -1615,0.91 -1616,1.08 -1617,1.28 -1618,1.46 -1619,1.49 -1620,1.37 -1621,1.22 -1622,1.11 -1623,1.06 -1624,1.21 -1625,2.09 -1626,2.31 -1627,1.93 -1628,1.67 -1629,1.45 -1630,1.02 -1631,0.89 -1632,0.86 -1633,0.76 -1634,0.77 -1635,0.71 -1636,0.7 -1645,0.64 -1646,0.72 -1647,0.79 -1648,0.83 -1649,0.8 -1650,0.75 -1651,0.72 -1652,1.03 -1653,1.28 -1654,1.4 -1655,1.41 -1656,1.35 -1657,1.22 -1658,0.99 -1659,0.83 -1660,0.77 -1661,0.77 -1662,0.85 -1663,0.89 -1664,0.96 -1665,1.06 -1666,1.12 -1667,1.04 -1668,0.84 -1669,0.64 -1670,0.49 -1671,0.39 -1672,0.34 -1673,0.33 -1674,0.41 -1675,0.57 -1676,0.8 -1677,1.08 -1678,1.28 -1679,1.33 -1680,1.31 -1681,1.35 -1682,1.45 -1683,1.61 -1684,1.82 -1685,2 -1686,2.05 -1687,1.82 -1688,1.42 -1689,1.21 -1690,1.26 -1691,1.51 -1692,1.76 -1693,1.93 -1694,1.99 -1695,1.9 -1696,1.67 -1697,1.32 -1698,0.87 -1699,0.87 -1700,0.98 -1701,0.98 -1702,0.91 -1703,0.84 -1704,0.82 -1705,0.86 -1706,1 -1707,1.2 -1708,1.42 -1709,1.66 -1710,1.66 -1711,1.47 -1712,1.27 -1713,1.09 -1714,0.95 -1715,0.89 -1716,1.8 -1717,2.23 -1718,1.95 -1719,1.77 -1720,1.66 -1721,0.95 -1722,0.89 -1723,0.87 -1724,0.84 -1725,0.79 -1726,0.73 -1727,0.71 -1736,0.65 -1737,0.74 -1738,0.83 -1739,0.9 -1740,0.88 -1741,0.87 -1742,1.09 -1743,1.25 -1744,1.41 -1745,1.47 -1746,1.41 -1747,1.37 -1748,1.33 -1749,1.17 -1750,0.94 -1751,0.82 -1752,0.82 -1753,0.9 -1754,0.95 -1755,1.04 -1756,1.2 -1757,1.34 -1758,1.27 -1759,1.01 -1760,0.74 -1761,0.54 -1762,0.41 -1763,0.35 -1764,0.35 -1765,0.47 -1766,0.7 -1767,1 -1768,1.33 -1769,1.52 -1770,1.51 -1771,1.41 -1772,1.39 -1773,1.46 -1774,1.61 -1775,1.83 -1776,1.97 -1777,1.96 -1778,1.78 -1779,1.51 -1780,1.37 -1781,1.44 -1782,1.7 -1783,1.93 -1784,2.06 -1785,2.11 -1786,2.01 -1787,1.77 -1788,1.42 -1789,1.05 -1790,0.98 -1791,1.04 -1792,1.01 -1793,0.9 -1794,0.82 -1795,0.84 -1796,0.92 -1797,1.08 -1798,1.3 -1799,1.54 -1800,1.81 -1801,1.8 -1802,1.56 -1803,1.32 -1804,1.09 -1805,0.88 -1806,0.68 -1807,1.3 -1808,1.95 -1809,1.88 -1810,1.77 -1811,1.64 -1812,1.04 -1813,0.92 -1814,0.88 -1815,0.84 -1816,0.78 -1817,0.74 -1818,0.72 -1826,0.57 -1827,0.65 -1828,0.76 -1829,0.88 -1830,1 -1831,0.97 -1832,0.92 -1833,1.49 -1834,1.45 -1835,1.57 -1836,1.57 -1837,1.45 -1838,1.41 -1839,1.45 -1840,1.37 -1841,1.02 -1842,0.85 -1843,0.84 -1844,0.91 -1845,0.98 -1846,1.1 -1847,1.31 -1848,1.57 -1849,1.5 -1850,1.15 -1851,0.82 -1852,0.58 -1853,0.43 -1854,0.37 -1855,0.38 -1856,0.53 -1857,0.81 -1858,1.19 -1859,1.6 -1860,1.79 -1861,1.68 -1862,1.52 -1863,1.43 -1864,1.45 -1865,1.6 -1866,1.82 -1867,1.94 -1868,1.89 -1869,1.75 -1870,1.57 -1871,1.5 -1872,1.6 -1873,1.84 -1874,2.06 -1875,2.21 -1876,2.26 -1877,2.15 -1878,1.9 -1879,1.56 -1880,1.26 -1881,1.16 -1882,1.15 -1883,1.07 -1884,0.9 -1885,0.82 -1886,0.86 -1887,0.98 -1888,1.16 -1889,1.39 -1890,1.62 -1891,1.85 -1892,1.84 -1893,1.62 -1894,1.37 -1895,1.11 -1896,0.88 -1897,0.74 -1898,1.13 -1899,1.69 -1900,1.76 -1901,1.7 -1902,1.53 -1903,1.14 -1904,0.95 -1905,0.88 -1906,0.83 -1907,0.77 -1908,0.74 -1909,0.73 -1916,0.5 -1917,0.57 -1918,0.66 -1919,0.78 -1920,0.93 -1921,1.1 -1922,1.05 -1923,0.89 -1924,1.31 -1925,1.58 -1926,1.74 -1927,1.69 -1928,1.53 -1929,1.46 -1930,1.51 -1931,1.51 -1932,1.05 -1933,0.85 -1934,0.86 -1935,0.92 -1936,0.99 -1937,1.11 -1938,1.36 -1939,1.74 -1940,1.68 -1941,1.24 -1942,0.88 -1943,0.6 -1944,0.44 -1945,0.39 -1946,0.43 -1947,0.6 -1948,0.9 -1949,1.34 -1950,1.86 -1951,2.07 -1952,1.84 -1953,1.59 -1954,1.44 -1955,1.42 -1956,1.55 -1957,1.78 -1958,1.89 -1959,1.83 -1960,1.72 -1961,1.62 -1962,1.6 -1963,1.71 -1964,1.91 -1965,2.15 -1966,2.36 -1967,2.42 -1968,2.3 -1969,2.04 -1970,1.7 -1971,1.45 -1972,1.35 -1973,1.3 -1974,1.16 -1975,0.94 -1976,0.83 -1977,0.89 -1978,1.02 -1979,1.23 -1980,1.46 -1981,1.67 -1982,1.84 -1983,1.84 -1984,1.66 -1985,1.43 -1986,1.15 -1987,0.93 -1988,0.88 -1989,1.14 -1990,1.52 -1991,1.64 -1992,1.6 -1993,1.44 -1994,1.17 -1995,0.99 -1996,0.89 -1997,0.81 -1998,0.76 -1999,0.74 -2000,0.74 -2007,0.51 -2008,0.6 -2009,0.68 -2010,0.8 -2011,0.96 -2012,1.14 -2013,1.11 -2014,0.93 -2015,1.2 -2016,1.72 -2017,1.95 -2018,1.83 -2019,1.62 -2020,1.49 -2021,1.47 -2022,1.38 -2023,1.02 -2024,0.83 -2025,0.88 -2026,0.94 -2027,0.98 -2028,1.09 -2029,1.35 -2030,1.71 -2031,1.68 -2032,1.29 -2033,0.93 -2034,0.62 -2035,0.44 -2036,0.42 -2037,0.49 -2038,0.65 -2039,0.96 -2040,1.44 -2041,2.07 -2042,2.31 -2043,1.95 -2044,1.64 -2045,1.43 -2046,1.36 -2047,1.48 -2048,1.68 -2049,1.79 -2050,1.76 -2051,1.7 -2052,1.64 -2053,1.67 -2054,1.8 -2055,1.95 -2056,2.22 -2057,2.54 -2058,2.59 -2059,2.44 -2060,2.16 -2061,1.83 -2062,1.62 -2063,1.54 -2064,1.47 -2065,1.26 -2066,1.01 -2067,0.88 -2068,0.9 -2069,1.05 -2070,1.28 -2071,1.52 -2072,1.69 -2073,1.82 -2074,1.83 -2075,1.71 -2076,1.49 -2077,1.24 -2078,1.04 -2079,1.04 -2080,1.21 -2081,1.43 -2082,1.52 -2083,1.5 -2084,1.38 -2085,1.17 -2086,1.01 -2087,0.89 -2088,0.8 -2089,0.74 -2090,0.74 -2091,0.75 -2097,0.45 -2098,0.56 -2099,0.64 -2100,0.71 -2101,0.82 -2102,0.98 -2103,1.14 -2104,1.14 -2105,1.08 -2106,1.35 -2107,1.91 -2108,2.18 -2109,1.95 -2110,1.68 -2111,1.48 -2112,1.39 -2113,1.26 -2114,0.97 -2115,0.82 -2116,0.9 -2117,0.96 -2118,0.96 -2119,1.03 -2120,1.28 -2121,1.57 -2122,1.57 -2123,1.29 -2124,0.96 -2125,0.63 -2126,0.44 -2127,0.47 -2128,0.54 -2129,0.68 -2130,0.98 -2131,1.47 -2132,2.1 -2133,2.33 -2134,1.98 -2135,1.66 -2136,1.39 -2137,1.27 -2138,1.38 -2139,1.56 -2140,1.67 -2141,1.68 -2142,1.66 -2143,1.65 -2144,1.7 -2145,1.86 -2146,1.95 -2147,2.28 -2148,2.75 -2149,2.78 -2150,2.55 -2151,2.23 -2152,1.92 -2153,1.74 -2154,1.72 -2155,1.66 -2156,1.37 -2157,1.08 -2158,0.91 -2159,0.91 -2160,1.06 -2161,1.31 -2162,1.56 -2163,1.69 -2164,1.8 -2165,1.83 -2166,1.75 -2167,1.57 -2168,1.36 -2169,1.21 -2170,1.2 -2171,1.29 -2172,1.39 -2173,1.42 -2174,1.41 -2175,1.32 -2176,1.16 -2177,1.02 -2178,0.9 -2179,0.8 -2180,0.73 -2181,0.75 -2187,0.82 -2188,0.6 -2189,0.65 -2190,0.71 -2191,0.74 -2192,0.83 -2193,1 -2194,1.14 -2195,1.17 -2196,1.2 -2197,1.48 -2198,2.06 -2199,2.38 -2200,2.03 -2201,1.71 -2202,1.44 -2203,1.3 -2204,1.16 -2205,0.95 -2206,0.86 -2207,0.94 -2208,1.01 -2209,0.93 -2210,0.92 -2211,1.17 -2212,1.43 -2213,1.47 -2214,1.27 -2215,0.99 -2216,0.67 -2217,0.47 -2218,0.54 -2219,0.59 -2220,0.7 -2221,0.95 -2222,1.42 -2223,1.97 -2224,2.18 -2225,1.96 -2226,1.65 -2227,1.34 -2228,1.16 -2229,1.28 -2230,1.44 -2231,1.56 -2232,1.61 -2233,1.63 -2234,1.65 -2235,1.72 -2236,1.88 -2237,1.87 -2238,2.4 -2239,3.02 -2240,2.96 -2241,2.62 -2242,2.25 -2243,1.95 -2244,1.81 -2245,1.85 -2246,1.85 -2247,1.46 -2248,1.12 -2249,0.92 -2250,0.9 -2251,1.05 -2252,1.3 -2253,1.55 -2254,1.67 -2255,1.78 -2256,1.84 -2257,1.8 -2258,1.66 -2259,1.49 -2260,1.39 -2261,1.37 -2262,1.39 -2263,1.39 -2264,1.34 -2265,1.34 -2266,1.27 -2267,1.15 -2268,1.02 -2269,0.91 -2270,0.82 -2271,0.76 -2272,0.76 -2278,1.04 -2279,0.81 -2280,0.79 -2281,0.8 -2282,0.8 -2283,0.86 -2284,1.04 -2285,1.16 -2286,1.2 -2287,1.27 -2288,1.55 -2289,2.06 -2290,2.33 -2291,2.06 -2292,1.72 -2293,1.38 -2294,1.2 -2295,1.08 -2296,0.95 -2297,0.89 -2298,0.98 -2299,1.1 -2300,0.91 -2301,0.79 -2302,1.07 -2303,1.31 -2304,1.37 -2305,1.25 -2306,1.03 -2307,0.77 -2308,0.61 -2309,0.63 -2310,0.66 -2311,0.7 -2312,0.88 -2313,1.33 -2314,1.81 -2315,2.02 -2316,1.89 -2317,1.63 -2318,1.31 -2319,1.05 -2320,1.21 -2321,1.34 -2322,1.45 -2323,1.53 -2324,1.59 -2325,1.64 -2326,1.73 -2327,1.87 -2328,1.97 -2329,2.63 -2330,3.37 -2331,3.11 -2332,2.64 -2333,2.23 -2334,1.94 -2335,1.82 -2336,1.89 -2337,1.95 -2338,1.48 -2339,1.13 -2340,0.91 -2341,0.86 -2342,1.02 -2343,1.27 -2344,1.5 -2345,1.64 -2346,1.76 -2347,1.85 -2348,1.86 -2349,1.75 -2350,1.62 -2351,1.56 -2352,1.54 -2353,1.5 -2354,1.42 -2355,1.32 -2356,1.3 -2357,1.23 -2358,1.13 -2359,1.02 -2360,0.93 -2361,0.84 -2362,0.79 -2363,0.79 -2368,1.66 -2369,1.26 -2370,1.02 -2371,0.95 -2372,0.93 -2373,0.9 -2374,0.93 -2375,1.11 -2376,1.21 -2377,1.24 -2378,1.3 -2379,1.54 -2380,1.93 -2381,2.14 -2382,2.03 -2383,1.74 -2384,1.27 -2385,1.11 -2386,1.03 -2387,0.94 -2388,0.91 -2389,1.01 -2390,1.23 -2391,0.95 -2392,0.71 -2393,0.99 -2394,1.22 -2395,1.31 -2396,1.25 -2397,1.09 -2398,0.9 -2399,0.78 -2400,0.76 -2401,0.74 -2402,0.71 -2403,0.78 -2404,1.23 -2405,1.66 -2406,1.87 -2407,1.83 -2408,1.62 -2409,1.36 -2410,1.12 -2411,1.16 -2412,1.25 -2413,1.36 -2414,1.46 -2415,1.55 -2416,1.62 -2417,1.72 -2418,1.86 -2419,2.1 -2420,2.82 -2421,3.79 -2422,3.16 -2423,2.6 -2424,2.16 -2425,1.86 -2426,1.77 -2427,1.82 -2428,1.8 -2429,1.44 -2430,1.11 -2431,0.89 -2432,0.81 -2433,0.99 -2434,1.25 -2435,1.46 -2436,1.6 -2437,1.73 -2438,1.85 -2439,1.93 -2440,1.82 -2441,1.74 -2442,1.71 -2443,1.71 -2444,1.61 -2445,1.46 -2446,1.34 -2447,1.28 -2448,1.21 -2449,1.12 -2450,1.03 -2451,0.94 -2452,0.87 -2453,0.82 -2454,0.82 -2458,2.3 -2459,1.84 -2460,1.46 -2461,1.22 -2462,1.12 -2463,1.08 -2464,1.05 -2465,1.09 -2466,1.22 -2467,1.28 -2468,1.27 -2469,1.3 -2470,1.49 -2471,1.76 -2472,1.93 -2473,1.99 -2474,1.84 -2475,1.11 -2476,1.02 -2477,1 -2478,0.94 -2479,0.9 -2480,1.01 -2481,1.35 -2482,1.34 -2483,0.75 -2484,0.96 -2485,1.16 -2486,1.27 -2487,1.26 -2488,1.16 -2489,1.03 -2490,0.95 -2491,0.91 -2492,0.85 -2493,0.76 -2494,0.75 -2495,1.15 -2496,1.53 -2497,1.76 -2498,1.77 -2499,1.61 -2500,1.47 -2501,1.24 -2502,1.14 -2503,1.16 -2504,1.27 -2505,1.4 -2506,1.51 -2507,1.6 -2508,1.7 -2509,1.84 -2510,2.12 -2511,2.79 -2512,3.53 -2513,3.03 -2514,2.48 -2515,2.04 -2516,1.74 -2517,1.66 -2518,1.7 -2519,1.63 -2520,1.36 -2521,1.07 -2522,0.86 -2523,0.73 -2524,0.98 -2525,1.25 -2526,1.43 -2527,1.56 -2528,1.7 -2529,1.84 -2530,1.92 -2531,1.87 -2532,1.82 -2533,1.84 -2534,1.88 -2535,1.72 -2536,1.51 -2537,1.35 -2538,1.26 -2539,1.19 -2540,1.11 -2541,1.03 -2542,0.95 -2543,0.89 -2544,0.86 -2545,0.84 -2550,1.95 -2551,1.62 -2552,1.39 -2553,1.28 -2554,1.23 -2555,1.22 -2556,1.27 -2557,1.36 -2558,1.38 -2559,1.32 -2560,1.26 -2561,1.41 -2562,1.58 -2563,1.71 -2564,1.93 -2565,2.14 -2566,0.86 -2567,0.91 -2568,1.01 -2569,0.96 -2570,0.89 -2571,0.94 -2572,1.3 -2573,1.37 -2574,0.89 -2575,0.97 -2576,1.13 -2577,1.25 -2578,1.3 -2579,1.24 -2580,1.16 -2581,1.11 -2582,1.07 -2583,0.98 -2584,0.86 -2585,0.85 -2586,1.11 -2587,1.42 -2588,1.67 -2589,1.74 -2590,1.59 -2591,1.61 -2592,1.35 -2593,1.11 -2594,1.07 -2595,1.19 -2596,1.35 -2597,1.48 -2598,1.58 +ID,data +113,1.08 +114,1.04 +115,1.1 +116,1.5 +117,2.01 +118,2.58 +119,2.98 +120,2.83 +200,1.24 +201,1.38 +202,1.34 +203,1.2 +204,1.08 +205,1.03 +206,1.11 +207,1.45 +208,1.97 +209,2.62 +210,3.2 +211,2.92 +212,2.36 +213,1.85 +214,1.43 +215,1.06 +216,0.72 +217,0.42 +218,0.33 +219,0.44 +220,0.57 +221,0.73 +290,1.22 +291,1.46 +292,1.57 +293,1.47 +294,1.25 +295,1.09 +296,1.02 +297,1.08 +298,1.37 +299,1.87 +300,2.55 +301,3.4 +302,2.89 +303,2.26 +304,1.76 +305,1.34 +306,0.99 +307,0.68 +308,0.42 +309,0.33 +310,0.41 +311,0.53 +312,0.69 +313,0.93 +314,1.23 +315,1.52 +316,1.73 +317,1.75 +318,1.58 +319,1.31 +320,1.32 +321,1.41 +380,1.36 +381,1.53 +382,1.75 +383,1.82 +384,1.63 +385,1.3 +386,1.1 +387,1 +388,1.03 +389,1.25 +390,1.69 +391,2.33 +392,2.99 +393,2.65 +394,2.08 +395,1.61 +396,1.23 +397,0.91 +398,0.64 +399,0.43 +400,0.35 +401,0.4 +402,0.5 +403,0.65 +404,0.91 +405,1.24 +406,1.59 +407,1.87 +408,1.9 +409,1.69 +410,1.43 +411,1.36 +412,1.42 +413,1.55 +414,1.74 +415,1.94 +416,2.02 +417,1.97 +418,1.88 +419,1.8 +420,1.74 +421,1.68 +471,1.56 +472,1.83 +473,2.09 +474,2.11 +475,1.82 +476,1.38 +477,1.12 +478,0.98 +479,0.95 +480,1.08 +481,1.44 +482,1.97 +483,2.41 +484,2.24 +485,1.81 +486,1.43 +487,1.11 +488,0.84 +489,0.6 +490,0.43 +491,0.36 +492,0.39 +493,0.48 +494,0.62 +495,0.88 +496,1.24 +497,1.66 +498,2.03 +499,2.07 +500,1.81 +501,1.54 +502,1.42 +503,1.43 +504,1.56 +505,1.79 +506,2.05 +507,2.12 +508,2.02 +509,1.9 +510,1.81 +511,1.75 +512,1.69 +513,1.63 +514,1.56 +515,1.48 +516,1.39 +517,1.3 +518,1.21 +519,1.12 +520,1.03 +521,0.93 +561,1.44 +562,1.74 +563,2.11 +564,2.45 +565,2.44 +566,2.03 +567,1.51 +568,1.15 +569,0.95 +570,0.85 +571,0.88 +572,1.14 +573,1.56 +574,1.85 +575,1.78 +576,1.5 +577,1.21 +578,0.97 +579,0.75 +580,0.56 +581,0.43 +582,0.37 +583,0.38 +584,0.45 +585,0.6 +586,0.85 +587,1.22 +588,1.69 +589,2.19 +590,2.25 +591,1.92 +592,1.63 +593,1.46 +594,1.42 +595,1.54 +596,1.88 +597,2.23 +598,2.23 +599,2.06 +600,1.91 +601,1.81 +602,1.75 +603,1.7 +604,1.64 +605,1.57 +606,1.49 +607,1.39 +608,1.3 +609,1.21 +610,1.12 +611,1.02 +612,0.92 +613,0.81 +614,0.71 +615,0.63 +616,0.57 +617,0.54 +618,0.53 +619,0.59 +620,0.7 +621,0.83 +651,1.26 +652,1.52 +653,1.88 +654,2.35 +655,2.83 +656,2.8 +657,2.22 +658,1.61 +659,1.18 +660,0.91 +661,0.76 +662,0.68 +663,0.85 +664,1.15 +665,1.34 +666,1.32 +667,1.15 +668,0.98 +669,0.82 +670,0.67 +671,0.52 +672,0.42 +673,0.37 +674,0.37 +675,0.43 +676,0.56 +677,0.8 +678,1.17 +679,1.67 +680,2.28 +681,2.35 +682,1.97 +683,1.68 +684,1.49 +685,1.39 +686,1.47 +687,2 +688,2.48 +689,2.33 +690,2.06 +691,1.89 +692,1.79 +693,1.74 +694,1.7 +695,1.65 +696,1.59 +697,1.49 +698,1.39 +699,1.3 +700,1.21 +701,1.12 +702,1.02 +703,0.91 +704,0.8 +705,0.69 +706,0.61 +707,0.55 +708,0.52 +709,0.51 +710,0.57 +711,0.72 +712,0.86 +713,0.98 +714,1.05 +715,1.04 +716,0.95 +717,0.87 +742,1.27 +743,1.56 +744,1.97 +745,2.52 +746,3.17 +747,3.13 +748,2.35 +749,1.66 +750,1.17 +751,0.85 +752,0.67 +753,0.55 +754,0.63 +755,0.79 +756,0.88 +757,0.89 +758,0.81 +759,0.76 +760,0.69 +761,0.59 +762,0.48 +763,0.4 +764,0.36 +765,0.36 +766,0.4 +767,0.51 +768,0.73 +769,1.08 +770,1.59 +771,2.15 +772,2.26 +773,1.97 +774,1.71 +775,1.51 +776,1.35 +777,1.32 +778,2.07 +779,2.79 +780,2.38 +781,2.01 +782,1.84 +783,1.76 +784,1.73 +785,1.7 +786,1.67 +787,1.6 +788,1.5 +789,1.39 +790,1.29 +791,1.21 +792,1.11 +793,1.02 +794,0.91 +795,0.79 +796,0.68 +797,0.59 +798,0.53 +799,0.51 +800,0.51 +801,0.57 +802,0.75 +803,0.91 +804,1.05 +805,1.14 +806,1.15 +807,1.08 +808,0.97 +809,0.89 +832,1.05 +833,1.26 +834,1.56 +835,1.99 +836,2.57 +837,3.32 +838,3.27 +839,2.37 +840,1.65 +841,1.13 +842,0.79 +843,0.61 +844,0.51 +845,0.5 +846,0.49 +847,0.49 +848,0.53 +849,0.5 +850,0.56 +851,0.56 +852,0.52 +853,0.45 +854,0.38 +855,0.35 +856,0.34 +857,0.37 +858,0.46 +859,0.63 +860,0.96 +861,1.45 +862,1.93 +863,2.07 +864,1.91 +865,1.71 +866,1.53 +867,1.33 +868,1.1 +869,1.93 +870,3.07 +871,2.29 +872,1.89 +873,1.75 +874,1.72 +875,1.71 +876,1.7 +877,1.68 +878,1.61 +879,1.49 +880,1.38 +881,1.29 +882,1.2 +883,1.11 +884,1.01 +885,0.91 +886,0.78 +887,0.66 +888,0.57 +889,0.52 +890,0.52 +891,0.54 +892,0.63 +893,0.79 +894,0.96 +895,1.12 +896,1.24 +897,1.27 +898,1.23 +899,1.08 +900,0.94 +901,0.86 +902,0.86 +922,0.88 +923,1.01 +924,1.22 +925,1.53 +926,1.95 +927,2.5 +928,3.1 +929,3.03 +930,2.25 +931,1.57 +932,1.05 +933,0.71 +934,0.56 +935,0.49 +936,0.44 +937,0.31 +938,0.25 +939,0.28 +940,0.25 +941,0.41 +942,0.46 +943,0.46 +944,0.42 +945,0.36 +946,0.33 +947,0.32 +948,0.34 +949,0.41 +950,0.54 +951,0.81 +952,1.3 +953,1.73 +954,1.89 +955,1.82 +956,1.7 +957,1.57 +958,1.36 +959,0.99 +960,1.19 +961,2.77 +962,1.99 +963,1.69 +964,1.64 +965,1.67 +966,1.69 +967,1.7 +968,1.68 +969,1.62 +970,1.48 +971,1.36 +972,1.27 +973,1.2 +974,1.1 +975,1.01 +976,0.9 +977,0.77 +978,0.66 +979,0.56 +980,0.51 +981,0.54 +982,0.6 +983,0.7 +984,0.84 +985,1.01 +986,1.19 +987,1.35 +988,1.39 +989,1.4 +990,1.19 +991,0.96 +992,0.87 +993,0.86 +994,0.84 +995,0.78 +1013,0.84 +1014,0.96 +1015,1.17 +1016,1.46 +1017,1.85 +1018,2.33 +1019,2.74 +1020,2.64 +1021,2.04 +1022,1.43 +1023,0.95 +1024,0.63 +1025,0.53 +1026,0.5 +1027,0.44 +1028,0.29 +1029,0.23 +1030,0.19 +1031,0.16 +1032,0.31 +1033,0.39 +1034,0.41 +1035,0.4 +1036,0.35 +1037,0.31 +1038,0.29 +1039,0.31 +1040,0.38 +1041,0.46 +1042,0.66 +1043,1.17 +1044,1.55 +1045,1.72 +1046,1.72 +1047,1.69 +1048,1.63 +1049,1.47 +1050,1.12 +1051,1.04 +1052,1.87 +1053,1.5 +1054,1.43 +1055,1.52 +1056,1.61 +1057,1.68 +1058,1.69 +1059,1.67 +1060,1.62 +1061,1.44 +1062,1.32 +1063,1.25 +1064,1.19 +1065,1.1 +1066,0.99 +1067,0.88 +1068,0.76 +1069,0.66 +1070,0.56 +1071,0.5 +1072,0.59 +1073,0.68 +1074,0.78 +1075,0.9 +1076,1.06 +1077,1.25 +1078,1.44 +1079,1.5 +1080,1.59 +1081,1.27 +1082,0.97 +1083,0.86 +1084,0.85 +1085,0.83 +1086,0.78 +1087,0.71 +1103,0.75 +1104,0.79 +1105,0.9 +1106,1.1 +1107,1.36 +1108,1.7 +1109,2.12 +1110,2.38 +1111,2.24 +1112,1.76 +1113,1.26 +1114,0.86 +1115,0.58 +1116,0.52 +1117,0.54 +1118,0.5 +1119,0.36 +1120,0.3 +1121,0.2 +1122,0.16 +1123,0.27 +1124,0.35 +1125,0.38 +1126,0.39 +1127,0.33 +1128,0.29 +1129,0.27 +1130,0.28 +1131,0.36 +1132,0.46 +1133,0.65 +1134,1.09 +1135,1.42 +1136,1.58 +1137,1.63 +1138,1.68 +1139,1.72 +1140,1.65 +1141,1.38 +1142,1.11 +1143,1.19 +1144,0.92 +1145,1.17 +1146,1.41 +1147,1.58 +1148,1.67 +1149,1.69 +1150,1.65 +1151,1.55 +1152,1.39 +1153,1.27 +1154,1.22 +1155,1.19 +1156,1.09 +1157,0.97 +1158,0.86 +1159,0.75 +1160,0.67 +1161,0.59 +1162,0.51 +1163,0.66 +1164,0.77 +1165,0.86 +1166,0.96 +1167,1.1 +1168,1.28 +1169,1.48 +1170,1.59 +1171,1.67 +1172,1.32 +1173,0.95 +1174,0.86 +1175,0.86 +1176,0.83 +1177,0.78 +1178,0.71 +1179,0.63 +1193,0.71 +1194,0.72 +1195,0.74 +1196,0.83 +1197,1.02 +1198,1.27 +1199,1.55 +1200,1.9 +1201,2.06 +1202,1.88 +1203,1.46 +1204,1.08 +1205,0.78 +1206,0.59 +1207,0.53 +1208,0.63 +1209,0.58 +1210,0.44 +1211,0.4 +1212,0.21 +1213,0.2 +1214,0.27 +1215,0.33 +1216,0.37 +1217,0.38 +1218,0.32 +1219,0.28 +1220,0.25 +1221,0.27 +1222,0.38 +1223,0.51 +1224,0.72 +1225,1.06 +1226,1.33 +1227,1.47 +1228,1.53 +1229,1.68 +1230,1.82 +1231,1.89 +1232,1.72 +1233,1.15 +1234,0.79 +1235,0.57 +1236,0.98 +1237,1.33 +1238,1.56 +1239,1.68 +1240,1.69 +1241,1.61 +1242,1.48 +1243,1.31 +1244,1.21 +1245,1.18 +1246,1.19 +1247,1.07 +1248,0.95 +1249,0.84 +1250,0.75 +1251,0.69 +1252,0.65 +1253,0.64 +1254,0.77 +1255,0.88 +1256,0.95 +1257,1.02 +1258,1.12 +1259,1.29 +1260,1.51 +1261,1.68 +1262,1.69 +1263,1.38 +1264,0.9 +1265,0.89 +1266,0.88 +1267,0.84 +1268,0.79 +1269,0.72 +1270,0.65 +1271,0.6 +1284,0.71 +1285,0.7 +1286,0.69 +1287,0.75 +1288,0.95 +1289,1.2 +1290,1.46 +1291,1.72 +1292,1.78 +1293,1.55 +1294,1.15 +1295,0.9 +1296,0.73 +1297,0.6 +1298,0.53 +1299,0.6 +1300,0.64 +1301,0.52 +1302,0.46 +1303,0.22 +1304,0.26 +1305,0.31 +1306,0.34 +1307,0.36 +1308,0.35 +1309,0.31 +1310,0.28 +1311,0.25 +1312,0.27 +1313,0.42 +1314,0.61 +1315,0.81 +1316,1.07 +1317,1.29 +1318,1.41 +1319,1.44 +1320,1.7 +1321,1.92 +1322,2.13 +1323,2.21 +1324,1.16 +1325,0.6 +1326,0.44 +1327,0.91 +1328,1.31 +1329,1.58 +1330,1.71 +1331,1.7 +1332,1.58 +1333,1.41 +1334,1.22 +1335,1.13 +1336,1.13 +1337,1.16 +1338,1.04 +1339,0.92 +1340,0.82 +1341,0.75 +1342,0.73 +1343,0.74 +1344,0.8 +1345,0.92 +1346,1.01 +1347,1.04 +1348,1.06 +1349,1.14 +1350,1.28 +1351,1.52 +1352,1.78 +1353,1.81 +1354,1.5 +1355,1.05 +1356,0.97 +1357,0.92 +1358,0.86 +1359,0.81 +1360,0.74 +1361,0.67 +1362,0.64 +1374,0.71 +1375,0.71 +1376,0.69 +1377,0.65 +1378,0.67 +1379,0.88 +1380,1.16 +1381,1.4 +1382,1.57 +1383,1.58 +1384,1.31 +1385,0.84 +1386,0.76 +1387,0.69 +1388,0.63 +1389,0.59 +1390,0.65 +1391,0.7 +1392,0.63 +1393,0.55 +1394,0.38 +1395,0.37 +1396,0.37 +1397,0.36 +1398,0.35 +1399,0.34 +1400,0.31 +1401,0.29 +1402,0.28 +1403,0.27 +1404,0.51 +1405,0.73 +1406,0.92 +1407,1.11 +1408,1.27 +1409,1.39 +1410,1.49 +1411,1.73 +1412,1.99 +1413,2.3 +1414,3.48 +1415,1.12 +1416,0.67 +1417,0.59 +1418,0.97 +1419,1.36 +1420,1.62 +1421,1.77 +1422,1.72 +1423,1.57 +1424,1.34 +1425,1.12 +1426,1.03 +1427,1.06 +1428,1.08 +1429,1 +1430,0.9 +1431,0.81 +1432,0.75 +1433,0.77 +1434,0.85 +1435,0.96 +1436,1.08 +1437,1.16 +1438,1.15 +1439,1.11 +1440,1.14 +1441,1.24 +1442,1.5 +1443,1.89 +1444,1.98 +1445,1.66 +1446,1.29 +1447,1.11 +1448,0.97 +1449,0.87 +1450,0.83 +1451,0.76 +1452,0.7 +1453,0.67 +1465,0.73 +1466,0.73 +1467,0.7 +1468,0.63 +1469,0.59 +1470,0.85 +1471,1.15 +1472,1.36 +1473,1.48 +1474,1.44 +1475,1.17 +1476,0.64 +1477,0.7 +1478,0.69 +1479,0.67 +1480,0.67 +1481,0.73 +1482,0.78 +1483,0.76 +1484,0.71 +1485,0.59 +1486,0.51 +1487,0.45 +1488,0.4 +1489,0.36 +1490,0.33 +1491,0.31 +1492,0.32 +1493,0.35 +1494,0.38 +1495,0.65 +1496,0.88 +1497,1.04 +1498,1.16 +1499,1.29 +1500,1.4 +1501,1.54 +1502,1.77 +1503,2.02 +1504,2.29 +1505,2.16 +1506,1.17 +1507,0.83 +1508,0.81 +1509,1.11 +1510,1.46 +1511,1.7 +1512,1.82 +1513,1.76 +1514,1.57 +1515,1.3 +1516,1.01 +1517,0.94 +1518,1 +1519,1.02 +1520,0.96 +1521,0.87 +1522,0.8 +1523,0.75 +1524,0.83 +1525,0.97 +1526,1.12 +1527,1.27 +1528,1.32 +1529,1.26 +1530,1.17 +1531,1.13 +1532,1.16 +1533,1.41 +1534,2.01 +1535,2.17 +1536,1.82 +1537,1.5 +1538,1.27 +1539,1.01 +1540,0.88 +1541,0.85 +1542,0.77 +1543,0.73 +1544,0.69 +1555,0.7 +1556,0.75 +1557,0.77 +1558,0.74 +1559,0.66 +1560,0.51 +1561,0.89 +1562,1.19 +1563,1.36 +1564,1.42 +1565,1.37 +1566,1.15 +1567,0.81 +1568,0.73 +1569,0.72 +1570,0.72 +1571,0.76 +1572,0.81 +1573,0.87 +1574,0.91 +1575,0.9 +1576,0.81 +1577,0.67 +1578,0.54 +1579,0.44 +1580,0.37 +1581,0.33 +1582,0.32 +1583,0.36 +1584,0.45 +1585,0.59 +1586,0.85 +1587,1.06 +1588,1.18 +1589,1.23 +1590,1.31 +1591,1.43 +1592,1.58 +1593,1.8 +1594,2.02 +1595,2.17 +1596,1.91 +1597,1.3 +1598,1.03 +1599,1.04 +1600,1.3 +1601,1.6 +1602,1.8 +1603,1.89 +1604,1.82 +1605,1.61 +1606,1.28 +1607,0.9 +1608,0.86 +1609,0.97 +1610,0.99 +1611,0.93 +1612,0.85 +1613,0.81 +1614,0.79 +1615,0.91 +1616,1.08 +1617,1.28 +1618,1.46 +1619,1.49 +1620,1.37 +1621,1.22 +1622,1.11 +1623,1.06 +1624,1.21 +1625,2.09 +1626,2.31 +1627,1.93 +1628,1.67 +1629,1.45 +1630,1.02 +1631,0.89 +1632,0.86 +1633,0.76 +1634,0.77 +1635,0.71 +1636,0.7 +1645,0.64 +1646,0.72 +1647,0.79 +1648,0.83 +1649,0.8 +1650,0.75 +1651,0.72 +1652,1.03 +1653,1.28 +1654,1.4 +1655,1.41 +1656,1.35 +1657,1.22 +1658,0.99 +1659,0.83 +1660,0.77 +1661,0.77 +1662,0.85 +1663,0.89 +1664,0.96 +1665,1.06 +1666,1.12 +1667,1.04 +1668,0.84 +1669,0.64 +1670,0.49 +1671,0.39 +1672,0.34 +1673,0.33 +1674,0.41 +1675,0.57 +1676,0.8 +1677,1.08 +1678,1.28 +1679,1.33 +1680,1.31 +1681,1.35 +1682,1.45 +1683,1.61 +1684,1.82 +1685,2 +1686,2.05 +1687,1.82 +1688,1.42 +1689,1.21 +1690,1.26 +1691,1.51 +1692,1.76 +1693,1.93 +1694,1.99 +1695,1.9 +1696,1.67 +1697,1.32 +1698,0.87 +1699,0.87 +1700,0.98 +1701,0.98 +1702,0.91 +1703,0.84 +1704,0.82 +1705,0.86 +1706,1 +1707,1.2 +1708,1.42 +1709,1.66 +1710,1.66 +1711,1.47 +1712,1.27 +1713,1.09 +1714,0.95 +1715,0.89 +1716,1.8 +1717,2.23 +1718,1.95 +1719,1.77 +1720,1.66 +1721,0.95 +1722,0.89 +1723,0.87 +1724,0.84 +1725,0.79 +1726,0.73 +1727,0.71 +1736,0.65 +1737,0.74 +1738,0.83 +1739,0.9 +1740,0.88 +1741,0.87 +1742,1.09 +1743,1.25 +1744,1.41 +1745,1.47 +1746,1.41 +1747,1.37 +1748,1.33 +1749,1.17 +1750,0.94 +1751,0.82 +1752,0.82 +1753,0.9 +1754,0.95 +1755,1.04 +1756,1.2 +1757,1.34 +1758,1.27 +1759,1.01 +1760,0.74 +1761,0.54 +1762,0.41 +1763,0.35 +1764,0.35 +1765,0.47 +1766,0.7 +1767,1 +1768,1.33 +1769,1.52 +1770,1.51 +1771,1.41 +1772,1.39 +1773,1.46 +1774,1.61 +1775,1.83 +1776,1.97 +1777,1.96 +1778,1.78 +1779,1.51 +1780,1.37 +1781,1.44 +1782,1.7 +1783,1.93 +1784,2.06 +1785,2.11 +1786,2.01 +1787,1.77 +1788,1.42 +1789,1.05 +1790,0.98 +1791,1.04 +1792,1.01 +1793,0.9 +1794,0.82 +1795,0.84 +1796,0.92 +1797,1.08 +1798,1.3 +1799,1.54 +1800,1.81 +1801,1.8 +1802,1.56 +1803,1.32 +1804,1.09 +1805,0.88 +1806,0.68 +1807,1.3 +1808,1.95 +1809,1.88 +1810,1.77 +1811,1.64 +1812,1.04 +1813,0.92 +1814,0.88 +1815,0.84 +1816,0.78 +1817,0.74 +1818,0.72 +1826,0.57 +1827,0.65 +1828,0.76 +1829,0.88 +1830,1 +1831,0.97 +1832,0.92 +1833,1.49 +1834,1.45 +1835,1.57 +1836,1.57 +1837,1.45 +1838,1.41 +1839,1.45 +1840,1.37 +1841,1.02 +1842,0.85 +1843,0.84 +1844,0.91 +1845,0.98 +1846,1.1 +1847,1.31 +1848,1.57 +1849,1.5 +1850,1.15 +1851,0.82 +1852,0.58 +1853,0.43 +1854,0.37 +1855,0.38 +1856,0.53 +1857,0.81 +1858,1.19 +1859,1.6 +1860,1.79 +1861,1.68 +1862,1.52 +1863,1.43 +1864,1.45 +1865,1.6 +1866,1.82 +1867,1.94 +1868,1.89 +1869,1.75 +1870,1.57 +1871,1.5 +1872,1.6 +1873,1.84 +1874,2.06 +1875,2.21 +1876,2.26 +1877,2.15 +1878,1.9 +1879,1.56 +1880,1.26 +1881,1.16 +1882,1.15 +1883,1.07 +1884,0.9 +1885,0.82 +1886,0.86 +1887,0.98 +1888,1.16 +1889,1.39 +1890,1.62 +1891,1.85 +1892,1.84 +1893,1.62 +1894,1.37 +1895,1.11 +1896,0.88 +1897,0.74 +1898,1.13 +1899,1.69 +1900,1.76 +1901,1.7 +1902,1.53 +1903,1.14 +1904,0.95 +1905,0.88 +1906,0.83 +1907,0.77 +1908,0.74 +1909,0.73 +1916,0.5 +1917,0.57 +1918,0.66 +1919,0.78 +1920,0.93 +1921,1.1 +1922,1.05 +1923,0.89 +1924,1.31 +1925,1.58 +1926,1.74 +1927,1.69 +1928,1.53 +1929,1.46 +1930,1.51 +1931,1.51 +1932,1.05 +1933,0.85 +1934,0.86 +1935,0.92 +1936,0.99 +1937,1.11 +1938,1.36 +1939,1.74 +1940,1.68 +1941,1.24 +1942,0.88 +1943,0.6 +1944,0.44 +1945,0.39 +1946,0.43 +1947,0.6 +1948,0.9 +1949,1.34 +1950,1.86 +1951,2.07 +1952,1.84 +1953,1.59 +1954,1.44 +1955,1.42 +1956,1.55 +1957,1.78 +1958,1.89 +1959,1.83 +1960,1.72 +1961,1.62 +1962,1.6 +1963,1.71 +1964,1.91 +1965,2.15 +1966,2.36 +1967,2.42 +1968,2.3 +1969,2.04 +1970,1.7 +1971,1.45 +1972,1.35 +1973,1.3 +1974,1.16 +1975,0.94 +1976,0.83 +1977,0.89 +1978,1.02 +1979,1.23 +1980,1.46 +1981,1.67 +1982,1.84 +1983,1.84 +1984,1.66 +1985,1.43 +1986,1.15 +1987,0.93 +1988,0.88 +1989,1.14 +1990,1.52 +1991,1.64 +1992,1.6 +1993,1.44 +1994,1.17 +1995,0.99 +1996,0.89 +1997,0.81 +1998,0.76 +1999,0.74 +2000,0.74 +2007,0.51 +2008,0.6 +2009,0.68 +2010,0.8 +2011,0.96 +2012,1.14 +2013,1.11 +2014,0.93 +2015,1.2 +2016,1.72 +2017,1.95 +2018,1.83 +2019,1.62 +2020,1.49 +2021,1.47 +2022,1.38 +2023,1.02 +2024,0.83 +2025,0.88 +2026,0.94 +2027,0.98 +2028,1.09 +2029,1.35 +2030,1.71 +2031,1.68 +2032,1.29 +2033,0.93 +2034,0.62 +2035,0.44 +2036,0.42 +2037,0.49 +2038,0.65 +2039,0.96 +2040,1.44 +2041,2.07 +2042,2.31 +2043,1.95 +2044,1.64 +2045,1.43 +2046,1.36 +2047,1.48 +2048,1.68 +2049,1.79 +2050,1.76 +2051,1.7 +2052,1.64 +2053,1.67 +2054,1.8 +2055,1.95 +2056,2.22 +2057,2.54 +2058,2.59 +2059,2.44 +2060,2.16 +2061,1.83 +2062,1.62 +2063,1.54 +2064,1.47 +2065,1.26 +2066,1.01 +2067,0.88 +2068,0.9 +2069,1.05 +2070,1.28 +2071,1.52 +2072,1.69 +2073,1.82 +2074,1.83 +2075,1.71 +2076,1.49 +2077,1.24 +2078,1.04 +2079,1.04 +2080,1.21 +2081,1.43 +2082,1.52 +2083,1.5 +2084,1.38 +2085,1.17 +2086,1.01 +2087,0.89 +2088,0.8 +2089,0.74 +2090,0.74 +2091,0.75 +2097,0.45 +2098,0.56 +2099,0.64 +2100,0.71 +2101,0.82 +2102,0.98 +2103,1.14 +2104,1.14 +2105,1.08 +2106,1.35 +2107,1.91 +2108,2.18 +2109,1.95 +2110,1.68 +2111,1.48 +2112,1.39 +2113,1.26 +2114,0.97 +2115,0.82 +2116,0.9 +2117,0.96 +2118,0.96 +2119,1.03 +2120,1.28 +2121,1.57 +2122,1.57 +2123,1.29 +2124,0.96 +2125,0.63 +2126,0.44 +2127,0.47 +2128,0.54 +2129,0.68 +2130,0.98 +2131,1.47 +2132,2.1 +2133,2.33 +2134,1.98 +2135,1.66 +2136,1.39 +2137,1.27 +2138,1.38 +2139,1.56 +2140,1.67 +2141,1.68 +2142,1.66 +2143,1.65 +2144,1.7 +2145,1.86 +2146,1.95 +2147,2.28 +2148,2.75 +2149,2.78 +2150,2.55 +2151,2.23 +2152,1.92 +2153,1.74 +2154,1.72 +2155,1.66 +2156,1.37 +2157,1.08 +2158,0.91 +2159,0.91 +2160,1.06 +2161,1.31 +2162,1.56 +2163,1.69 +2164,1.8 +2165,1.83 +2166,1.75 +2167,1.57 +2168,1.36 +2169,1.21 +2170,1.2 +2171,1.29 +2172,1.39 +2173,1.42 +2174,1.41 +2175,1.32 +2176,1.16 +2177,1.02 +2178,0.9 +2179,0.8 +2180,0.73 +2181,0.75 +2187,0.82 +2188,0.6 +2189,0.65 +2190,0.71 +2191,0.74 +2192,0.83 +2193,1 +2194,1.14 +2195,1.17 +2196,1.2 +2197,1.48 +2198,2.06 +2199,2.38 +2200,2.03 +2201,1.71 +2202,1.44 +2203,1.3 +2204,1.16 +2205,0.95 +2206,0.86 +2207,0.94 +2208,1.01 +2209,0.93 +2210,0.92 +2211,1.17 +2212,1.43 +2213,1.47 +2214,1.27 +2215,0.99 +2216,0.67 +2217,0.47 +2218,0.54 +2219,0.59 +2220,0.7 +2221,0.95 +2222,1.42 +2223,1.97 +2224,2.18 +2225,1.96 +2226,1.65 +2227,1.34 +2228,1.16 +2229,1.28 +2230,1.44 +2231,1.56 +2232,1.61 +2233,1.63 +2234,1.65 +2235,1.72 +2236,1.88 +2237,1.87 +2238,2.4 +2239,3.02 +2240,2.96 +2241,2.62 +2242,2.25 +2243,1.95 +2244,1.81 +2245,1.85 +2246,1.85 +2247,1.46 +2248,1.12 +2249,0.92 +2250,0.9 +2251,1.05 +2252,1.3 +2253,1.55 +2254,1.67 +2255,1.78 +2256,1.84 +2257,1.8 +2258,1.66 +2259,1.49 +2260,1.39 +2261,1.37 +2262,1.39 +2263,1.39 +2264,1.34 +2265,1.34 +2266,1.27 +2267,1.15 +2268,1.02 +2269,0.91 +2270,0.82 +2271,0.76 +2272,0.76 +2278,1.04 +2279,0.81 +2280,0.79 +2281,0.8 +2282,0.8 +2283,0.86 +2284,1.04 +2285,1.16 +2286,1.2 +2287,1.27 +2288,1.55 +2289,2.06 +2290,2.33 +2291,2.06 +2292,1.72 +2293,1.38 +2294,1.2 +2295,1.08 +2296,0.95 +2297,0.89 +2298,0.98 +2299,1.1 +2300,0.91 +2301,0.79 +2302,1.07 +2303,1.31 +2304,1.37 +2305,1.25 +2306,1.03 +2307,0.77 +2308,0.61 +2309,0.63 +2310,0.66 +2311,0.7 +2312,0.88 +2313,1.33 +2314,1.81 +2315,2.02 +2316,1.89 +2317,1.63 +2318,1.31 +2319,1.05 +2320,1.21 +2321,1.34 +2322,1.45 +2323,1.53 +2324,1.59 +2325,1.64 +2326,1.73 +2327,1.87 +2328,1.97 +2329,2.63 +2330,3.37 +2331,3.11 +2332,2.64 +2333,2.23 +2334,1.94 +2335,1.82 +2336,1.89 +2337,1.95 +2338,1.48 +2339,1.13 +2340,0.91 +2341,0.86 +2342,1.02 +2343,1.27 +2344,1.5 +2345,1.64 +2346,1.76 +2347,1.85 +2348,1.86 +2349,1.75 +2350,1.62 +2351,1.56 +2352,1.54 +2353,1.5 +2354,1.42 +2355,1.32 +2356,1.3 +2357,1.23 +2358,1.13 +2359,1.02 +2360,0.93 +2361,0.84 +2362,0.79 +2363,0.79 +2368,1.66 +2369,1.26 +2370,1.02 +2371,0.95 +2372,0.93 +2373,0.9 +2374,0.93 +2375,1.11 +2376,1.21 +2377,1.24 +2378,1.3 +2379,1.54 +2380,1.93 +2381,2.14 +2382,2.03 +2383,1.74 +2384,1.27 +2385,1.11 +2386,1.03 +2387,0.94 +2388,0.91 +2389,1.01 +2390,1.23 +2391,0.95 +2392,0.71 +2393,0.99 +2394,1.22 +2395,1.31 +2396,1.25 +2397,1.09 +2398,0.9 +2399,0.78 +2400,0.76 +2401,0.74 +2402,0.71 +2403,0.78 +2404,1.23 +2405,1.66 +2406,1.87 +2407,1.83 +2408,1.62 +2409,1.36 +2410,1.12 +2411,1.16 +2412,1.25 +2413,1.36 +2414,1.46 +2415,1.55 +2416,1.62 +2417,1.72 +2418,1.86 +2419,2.1 +2420,2.82 +2421,3.79 +2422,3.16 +2423,2.6 +2424,2.16 +2425,1.86 +2426,1.77 +2427,1.82 +2428,1.8 +2429,1.44 +2430,1.11 +2431,0.89 +2432,0.81 +2433,0.99 +2434,1.25 +2435,1.46 +2436,1.6 +2437,1.73 +2438,1.85 +2439,1.93 +2440,1.82 +2441,1.74 +2442,1.71 +2443,1.71 +2444,1.61 +2445,1.46 +2446,1.34 +2447,1.28 +2448,1.21 +2449,1.12 +2450,1.03 +2451,0.94 +2452,0.87 +2453,0.82 +2454,0.82 +2458,2.3 +2459,1.84 +2460,1.46 +2461,1.22 +2462,1.12 +2463,1.08 +2464,1.05 +2465,1.09 +2466,1.22 +2467,1.28 +2468,1.27 +2469,1.3 +2470,1.49 +2471,1.76 +2472,1.93 +2473,1.99 +2474,1.84 +2475,1.11 +2476,1.02 +2477,1 +2478,0.94 +2479,0.9 +2480,1.01 +2481,1.35 +2482,1.34 +2483,0.75 +2484,0.96 +2485,1.16 +2486,1.27 +2487,1.26 +2488,1.16 +2489,1.03 +2490,0.95 +2491,0.91 +2492,0.85 +2493,0.76 +2494,0.75 +2495,1.15 +2496,1.53 +2497,1.76 +2498,1.77 +2499,1.61 +2500,1.47 +2501,1.24 +2502,1.14 +2503,1.16 +2504,1.27 +2505,1.4 +2506,1.51 +2507,1.6 +2508,1.7 +2509,1.84 +2510,2.12 +2511,2.79 +2512,3.53 +2513,3.03 +2514,2.48 +2515,2.04 +2516,1.74 +2517,1.66 +2518,1.7 +2519,1.63 +2520,1.36 +2521,1.07 +2522,0.86 +2523,0.73 +2524,0.98 +2525,1.25 +2526,1.43 +2527,1.56 +2528,1.7 +2529,1.84 +2530,1.92 +2531,1.87 +2532,1.82 +2533,1.84 +2534,1.88 +2535,1.72 +2536,1.51 +2537,1.35 +2538,1.26 +2539,1.19 +2540,1.11 +2541,1.03 +2542,0.95 +2543,0.89 +2544,0.86 +2545,0.84 +2550,1.95 +2551,1.62 +2552,1.39 +2553,1.28 +2554,1.23 +2555,1.22 +2556,1.27 +2557,1.36 +2558,1.38 +2559,1.32 +2560,1.26 +2561,1.41 +2562,1.58 +2563,1.71 +2564,1.93 +2565,2.14 +2566,0.86 +2567,0.91 +2568,1.01 +2569,0.96 +2570,0.89 +2571,0.94 +2572,1.3 +2573,1.37 +2574,0.89 +2575,0.97 +2576,1.13 +2577,1.25 +2578,1.3 +2579,1.24 +2580,1.16 +2581,1.11 +2582,1.07 +2583,0.98 +2584,0.86 +2585,0.85 +2586,1.11 +2587,1.42 +2588,1.67 +2589,1.74 +2590,1.59 +2591,1.61 +2592,1.35 +2593,1.11 +2594,1.07 +2595,1.19 +2596,1.35 +2597,1.48 +2598,1.58 2599,1.67 \ No newline at end of file diff --git a/hortonmachine/src/test/resources/kriging_interpolationpoints b/hortonmachine/src/test/resources/kriging_interpolationpoints index 5c0469705..e7b39e4ba 100644 --- a/hortonmachine/src/test/resources/kriging_interpolationpoints +++ b/hortonmachine/src/test/resources/kriging_interpolationpoints @@ -1,108 +1,108 @@ -113,1.55,0.55 -114,1.60,0.55 -115,1.65,0.55 -116,1.70,0.55 -117,1.75,0.55 -118,1.80,0.55 -119,1.85,0.55 -120,1.90,0.55 -200,1.35,0.60 -201,1.40,0.60 -202,1.45,0.60 -203,1.50,0.60 -204,1.55,0.60 -205,1.60,0.60 -206,1.65,0.60 -207,1.70,0.60 -208,1.75,0.60 -209,1.80,0.60 -210,1.85,0.60 -211,1.90,0.60 -212,1.95,0.60 -213,2.00,0.60 -214,2.05,0.60 -215,2.10,0.60 -216,2.15,0.60 -217,2.20,0.60 -218,2.25,0.60 -219,2.30,0.60 -220,2.35,0.60 -221,2.40,0.60 -290,1.30,0.65 -291,1.35,0.65 -292,1.40,0.65 -293,1.45,0.65 -294,1.50,0.65 -295,1.55,0.65 -296,1.60,0.65 -297,1.65,0.65 -298,1.70,0.65 -299,1.75,0.65 -300,1.80,0.65 -301,1.85,0.65 -302,1.90,0.65 -303,1.95,0.65 -304,2.00,0.65 -305,2.05,0.65 -306,2.10,0.65 -307,2.15,0.65 -308,2.20,0.65 -309,2.25,0.65 -310,2.30,0.65 -311,2.35,0.65 -312,2.40,0.65 -313,2.45,0.65 -314,2.50,0.65 -315,2.55,0.65 -316,2.60,0.65 -317,2.65,0.65 -318,2.70,0.65 -319,2.75,0.65 -320,2.80,0.65 -321,2.85,0.65 -380,1.25,0.70 -381,1.30,0.70 -382,1.35,0.70 -383,1.40,0.70 -384,1.45,0.70 -385,1.50,0.70 -386,1.55,0.70 -387,1.60,0.70 -388,1.65,0.70 -389,1.70,0.70 -390,1.75,0.70 -391,1.80,0.70 -392,1.85,0.70 -393,1.90,0.70 -394,1.95,0.70 -395,2.00,0.70 -396,2.05,0.70 -397,2.10,0.70 -398,2.15,0.70 -399,2.20,0.70 -400,2.25,0.70 -401,2.30,0.70 -402,2.35,0.70 -403,2.40,0.70 -404,2.45,0.70 -405,2.50,0.70 -406,2.55,0.70 -407,2.60,0.70 -408,2.65,0.70 -409,2.70,0.70 -410,2.75,0.70 -411,2.80,0.70 -412,2.85,0.70 -413,2.90,0.70 -414,2.95,0.70 -415,3.00,0.70 -416,3.05,0.70 -417,3.10,0.70 -418,3.15,0.70 -419,3.20,0.70 -420,3.25,0.70 -421,3.30,0.70 -471,1.25,0.75 -472,1.30,0.75 -473,1.35,0.75 +113,1.55,0.55 +114,1.60,0.55 +115,1.65,0.55 +116,1.70,0.55 +117,1.75,0.55 +118,1.80,0.55 +119,1.85,0.55 +120,1.90,0.55 +200,1.35,0.60 +201,1.40,0.60 +202,1.45,0.60 +203,1.50,0.60 +204,1.55,0.60 +205,1.60,0.60 +206,1.65,0.60 +207,1.70,0.60 +208,1.75,0.60 +209,1.80,0.60 +210,1.85,0.60 +211,1.90,0.60 +212,1.95,0.60 +213,2.00,0.60 +214,2.05,0.60 +215,2.10,0.60 +216,2.15,0.60 +217,2.20,0.60 +218,2.25,0.60 +219,2.30,0.60 +220,2.35,0.60 +221,2.40,0.60 +290,1.30,0.65 +291,1.35,0.65 +292,1.40,0.65 +293,1.45,0.65 +294,1.50,0.65 +295,1.55,0.65 +296,1.60,0.65 +297,1.65,0.65 +298,1.70,0.65 +299,1.75,0.65 +300,1.80,0.65 +301,1.85,0.65 +302,1.90,0.65 +303,1.95,0.65 +304,2.00,0.65 +305,2.05,0.65 +306,2.10,0.65 +307,2.15,0.65 +308,2.20,0.65 +309,2.25,0.65 +310,2.30,0.65 +311,2.35,0.65 +312,2.40,0.65 +313,2.45,0.65 +314,2.50,0.65 +315,2.55,0.65 +316,2.60,0.65 +317,2.65,0.65 +318,2.70,0.65 +319,2.75,0.65 +320,2.80,0.65 +321,2.85,0.65 +380,1.25,0.70 +381,1.30,0.70 +382,1.35,0.70 +383,1.40,0.70 +384,1.45,0.70 +385,1.50,0.70 +386,1.55,0.70 +387,1.60,0.70 +388,1.65,0.70 +389,1.70,0.70 +390,1.75,0.70 +391,1.80,0.70 +392,1.85,0.70 +393,1.90,0.70 +394,1.95,0.70 +395,2.00,0.70 +396,2.05,0.70 +397,2.10,0.70 +398,2.15,0.70 +399,2.20,0.70 +400,2.25,0.70 +401,2.30,0.70 +402,2.35,0.70 +403,2.40,0.70 +404,2.45,0.70 +405,2.50,0.70 +406,2.55,0.70 +407,2.60,0.70 +408,2.65,0.70 +409,2.70,0.70 +410,2.75,0.70 +411,2.80,0.70 +412,2.85,0.70 +413,2.90,0.70 +414,2.95,0.70 +415,3.00,0.70 +416,3.05,0.70 +417,3.10,0.70 +418,3.15,0.70 +419,3.20,0.70 +420,3.25,0.70 +421,3.30,0.70 +471,1.25,0.75 +472,1.30,0.75 +473,1.35,0.75 474,1.40,0.75 \ No newline at end of file diff --git a/jgrassgears/pom.xml b/jgrassgears/pom.xml index d1eb428bc..17383f2d5 100644 --- a/jgrassgears/pom.xml +++ b/jgrassgears/pom.xml @@ -1,182 +1,182 @@ - - 4.0.0 - - - org.jgrasstools - jgrasstools - 0.7.7-SNAPSHOT - - - - org.jgrasstools - jgt-jgrassgears - 0.7.7-SNAPSHOT - jar - JGrass Gears - - - - - org.jgrasstools - jgt-oms3 - 0.7.7-SNAPSHOT - - - - - javax.media - jai_core - 1.1.3 - - - javax.media - jai_codec - 1.1.3 - - - javax.media - jai_imageio - 1.1 - - - - - - net.sf.scannotation - scannotation - 1.0.2 - - - - - - junit - junit - 4.5 - test - - - - - org.geotools - gt-data - ${gt.version} - - - org.geotools - gt-shapefile - ${gt.version} - - - org.geotools - gt-property - ${gt.version} - - - org.geotools - gt-coverage - ${gt.version} - - - org.jaitools - jt-utils - - - org.jaitools - jt-zonalstats - - - - - org.geotools - gt-geotiff - ${gt.version} - - - org.geotools - gt-arcgrid - ${gt.version} - - - org.geotools - gt-imagemosaic - ${gt.version} - - - org.geotools - gt-process - ${gt.version} - - - org.geotools - gt-graph - ${gt.version} - - - joda-time - joda-time - 1.6 - - - com.vividsolutions - jts - 1.12 - - - - org.geotools - gt-swing - ${gt.version} - - - - org.geotools - gt-imageio-ext-gdal - ${gt.version} - - - org.geotools - gt-grassraster - ${gt.version} - - - org.geotools - gt-grid - ${gt.version} - - - org.geotools - gt-imagemosaic - ${gt.version} - - - org.geotools - gt-wms - ${gt.version} - - - org.jaitools - jt-all - ${jaitools.version} - - - org.jaitools - jt-jiffle-language - ${jiffle.version} - - - org.jaitools - jt-utils - - - - - - - + + 4.0.0 + + + org.jgrasstools + jgrasstools + 0.7.7-SNAPSHOT + + + + org.jgrasstools + jgt-jgrassgears + 0.7.7-SNAPSHOT + jar + JGrass Gears + + + + + org.jgrasstools + jgt-oms3 + 0.7.7-SNAPSHOT + + + + + javax.media + jai_core + 1.1.3 + + + javax.media + jai_codec + 1.1.3 + + + javax.media + jai_imageio + 1.1 + + + + + + net.sf.scannotation + scannotation + 1.0.2 + + + + + + junit + junit + 4.5 + test + + + + + org.geotools + gt-data + ${gt.version} + + + org.geotools + gt-shapefile + ${gt.version} + + + org.geotools + gt-property + ${gt.version} + + + org.geotools + gt-coverage + ${gt.version} + + + org.jaitools + jt-utils + + + org.jaitools + jt-zonalstats + + + + + org.geotools + gt-geotiff + ${gt.version} + + + org.geotools + gt-arcgrid + ${gt.version} + + + org.geotools + gt-imagemosaic + ${gt.version} + + + org.geotools + gt-process + ${gt.version} + + + org.geotools + gt-graph + ${gt.version} + + + joda-time + joda-time + 1.6 + + + com.vividsolutions + jts + 1.12 + + + + org.geotools + gt-swing + ${gt.version} + + + + org.geotools + gt-imageio-ext-gdal + ${gt.version} + + + org.geotools + gt-grassraster + ${gt.version} + + + org.geotools + gt-grid + ${gt.version} + + + org.geotools + gt-imagemosaic + ${gt.version} + + + org.geotools + gt-wms + ${gt.version} + + + org.jaitools + jt-all + ${jaitools.version} + + + org.jaitools + jt-jiffle-language + ${jiffle.version} + + + org.jaitools + jt-utils + + + + + + + diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/JGrassGears.java b/jgrassgears/src/main/java/org/jgrasstools/gears/JGrassGears.java index 4f8fa0009..6a17fed37 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/JGrassGears.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/JGrassGears.java @@ -1,253 +1,253 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import oms3.Access; -import oms3.ComponentAccess; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Status; - -import org.jgrasstools.gears.libs.modules.ClassField; -import org.scannotation.AnnotationDB; -import org.scannotation.ClasspathUrlFinder; - -/** - * Class presenting modules names and classes. - * - * @author Andrea Antonello (www.hydrologis.com) - * @since 0.7.0 - */ -@SuppressWarnings("nls") -public class JGrassGears { - - private static JGrassGears jgrassGears = null; - - private URL baseclassUrl; - private JGrassGears( URL baseclassUrl ) { - this.baseclassUrl = baseclassUrl; - } - - /** - * Retrieves the {@link JGrassGears}. If it exists, that instance is returned. - * - * @return the JGrassGears annotations class. - */ - public synchronized static JGrassGears getInstance() { - if (jgrassGears == null) { - jgrassGears = new JGrassGears(null); - jgrassGears.gatherInformations(); - } - return jgrassGears; - } - - /** - * Retrieves the {@link JGrassGears} for a particular url path. - * - *

                - * When this method is called, the {@link JGrassGears} instance is reset. - *

                - *

                - * Be careful when you use this. This is a workaround needed for eclipse - * systems, where the url returned by the urlfinder is a bundleresource that - * would need to be resolved first with rcp tools we do not want to depend on. - *

                - * - * @return the JGrassGears annotations class. - */ - public static JGrassGears getInstance( URL baseclassUrl ) { - jgrassGears = new JGrassGears(baseclassUrl); - jgrassGears.gatherInformations(); - return jgrassGears; - } - - /** - * A {@link LinkedHashMap map} of all the class names and the class itself. - */ - public final LinkedHashMap> moduleName2Class = new LinkedHashMap>(); - - /** - * A {@link LinkedHashMap map} of all the class names and their fields. - */ - public final LinkedHashMap> moduleName2Fields = new LinkedHashMap>(); - - /** - * An array of all the fields used in the modules. - */ - public String[] allFields = null; - - /** - * An array of all the class names of the modules. - */ - public String[] allClasses = null; - - private void gatherInformations() { - - try { - if (baseclassUrl == null) { - baseclassUrl = ClasspathUrlFinder.findClassBase(JGrassGears.class); - } - AnnotationDB db = new AnnotationDB(); - db.scanArchives(baseclassUrl); - - Map> annotationIndex = db.getAnnotationIndex(); - Set simpleClasses = annotationIndex.get(Execute.class.getName()); - for( String className : simpleClasses ) { - if (!className.startsWith("org.jgrasstools.gears")) { - continue; - } - int lastDot = className.lastIndexOf('.'); - String name = className.substring(lastDot + 1); - Class< ? > clazz = null; - try { - clazz = Class.forName(className); - moduleName2Class.put(name, clazz); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - /* - * extract all classes and fields - */ - List classNames = new ArrayList(); - List fieldNamesList = new ArrayList(); - - Set>> moduleName2ClassEntries = moduleName2Class.entrySet(); - for( Entry> moduleName2ClassEntry : moduleName2ClassEntries ) { - String moduleName = moduleName2ClassEntry.getKey(); - Class< ? > moduleClass = moduleName2ClassEntry.getValue(); - Status annotation = moduleClass.getAnnotation(Status.class); - if (annotation == null) { - System.out.println("Missing status: " + moduleClass.getCanonicalName()); - continue; - } - String statusString = null; - int status = annotation.value(); - switch( status ) { - case Status.CERTIFIED: - statusString = "CERTIFIED"; - break; - case Status.DRAFT: - statusString = "DRAFT"; - break; - case Status.TESTED: - statusString = "TESTED"; - break; - default: - statusString = "UNKNOWN"; - break; - } - - classNames.add(moduleName); - - List tmpfields = new ArrayList(); - Object annotatedObject = moduleClass.newInstance(); - ComponentAccess cA = new ComponentAccess(annotatedObject); - Collection inputs = cA.inputs(); - for( Access access : inputs ) { - Field field = access.getField(); - String name = field.getName(); - Description descriptionAnnot = field.getAnnotation(Description.class); - String description = name; - if (descriptionAnnot != null) { - description = descriptionAnnot.value(); - if (description == null) { - description = name; - } - } - Class< ? > fieldClass = field.getType(); - ClassField cf = new ClassField(); - cf.isIn = true; - cf.fieldName = name; - cf.fieldDescription = description; - cf.fieldClass = fieldClass; - cf.parentClass = moduleClass; - cf.parentClassStatus = statusString; - if (!fieldNamesList.contains(name)) { - fieldNamesList.add(name); - } - tmpfields.add(cf); - - } - Collection outputs = cA.outputs(); - for( Access access : outputs ) { - Field field = access.getField(); - String name = field.getName(); - Description descriptionAnnot = field.getAnnotation(Description.class); - String description = name; - if (descriptionAnnot != null) { - description = descriptionAnnot.value(); - if (description == null) { - description = name; - } - } - Class< ? > fieldClass = field.getType(); - ClassField cf = new ClassField(); - cf.isOut = true; - cf.fieldName = name; - cf.fieldDescription = description; - cf.fieldClass = fieldClass; - cf.parentClass = moduleClass; - cf.parentClassStatus = statusString; - if (!fieldNamesList.contains(name)) { - fieldNamesList.add(name); - } - tmpfields.add(cf); - } - moduleName2Fields.put(moduleName, tmpfields); - } - Collections.sort(fieldNamesList); - allFields = (String[]) fieldNamesList.toArray(new String[fieldNamesList.size()]); - Collections.sort(classNames); - allClasses = (String[]) classNames.toArray(new String[classNames.size()]); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void main( String[] args ) throws IOException { - Set>> entrySet = getInstance().moduleName2Class.entrySet(); - for( Entry> entry : entrySet ) { - System.out.println(entry.getKey() + " - " + entry.getValue().getCanonicalName()); - } - - List list = getInstance().moduleName2Fields.get("LineSmoother"); - for( ClassField classField : list ) { - System.out.println(classField); - } - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import oms3.Access; +import oms3.ComponentAccess; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Status; + +import org.jgrasstools.gears.libs.modules.ClassField; +import org.scannotation.AnnotationDB; +import org.scannotation.ClasspathUrlFinder; + +/** + * Class presenting modules names and classes. + * + * @author Andrea Antonello (www.hydrologis.com) + * @since 0.7.0 + */ +@SuppressWarnings("nls") +public class JGrassGears { + + private static JGrassGears jgrassGears = null; + + private URL baseclassUrl; + private JGrassGears( URL baseclassUrl ) { + this.baseclassUrl = baseclassUrl; + } + + /** + * Retrieves the {@link JGrassGears}. If it exists, that instance is returned. + * + * @return the JGrassGears annotations class. + */ + public synchronized static JGrassGears getInstance() { + if (jgrassGears == null) { + jgrassGears = new JGrassGears(null); + jgrassGears.gatherInformations(); + } + return jgrassGears; + } + + /** + * Retrieves the {@link JGrassGears} for a particular url path. + * + *

                + * When this method is called, the {@link JGrassGears} instance is reset. + *

                + *

                + * Be careful when you use this. This is a workaround needed for eclipse + * systems, where the url returned by the urlfinder is a bundleresource that + * would need to be resolved first with rcp tools we do not want to depend on. + *

                + * + * @return the JGrassGears annotations class. + */ + public static JGrassGears getInstance( URL baseclassUrl ) { + jgrassGears = new JGrassGears(baseclassUrl); + jgrassGears.gatherInformations(); + return jgrassGears; + } + + /** + * A {@link LinkedHashMap map} of all the class names and the class itself. + */ + public final LinkedHashMap> moduleName2Class = new LinkedHashMap>(); + + /** + * A {@link LinkedHashMap map} of all the class names and their fields. + */ + public final LinkedHashMap> moduleName2Fields = new LinkedHashMap>(); + + /** + * An array of all the fields used in the modules. + */ + public String[] allFields = null; + + /** + * An array of all the class names of the modules. + */ + public String[] allClasses = null; + + private void gatherInformations() { + + try { + if (baseclassUrl == null) { + baseclassUrl = ClasspathUrlFinder.findClassBase(JGrassGears.class); + } + AnnotationDB db = new AnnotationDB(); + db.scanArchives(baseclassUrl); + + Map> annotationIndex = db.getAnnotationIndex(); + Set simpleClasses = annotationIndex.get(Execute.class.getName()); + for( String className : simpleClasses ) { + if (!className.startsWith("org.jgrasstools.gears")) { + continue; + } + int lastDot = className.lastIndexOf('.'); + String name = className.substring(lastDot + 1); + Class< ? > clazz = null; + try { + clazz = Class.forName(className); + moduleName2Class.put(name, clazz); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + /* + * extract all classes and fields + */ + List classNames = new ArrayList(); + List fieldNamesList = new ArrayList(); + + Set>> moduleName2ClassEntries = moduleName2Class.entrySet(); + for( Entry> moduleName2ClassEntry : moduleName2ClassEntries ) { + String moduleName = moduleName2ClassEntry.getKey(); + Class< ? > moduleClass = moduleName2ClassEntry.getValue(); + Status annotation = moduleClass.getAnnotation(Status.class); + if (annotation == null) { + System.out.println("Missing status: " + moduleClass.getCanonicalName()); + continue; + } + String statusString = null; + int status = annotation.value(); + switch( status ) { + case Status.CERTIFIED: + statusString = "CERTIFIED"; + break; + case Status.DRAFT: + statusString = "DRAFT"; + break; + case Status.TESTED: + statusString = "TESTED"; + break; + default: + statusString = "UNKNOWN"; + break; + } + + classNames.add(moduleName); + + List tmpfields = new ArrayList(); + Object annotatedObject = moduleClass.newInstance(); + ComponentAccess cA = new ComponentAccess(annotatedObject); + Collection inputs = cA.inputs(); + for( Access access : inputs ) { + Field field = access.getField(); + String name = field.getName(); + Description descriptionAnnot = field.getAnnotation(Description.class); + String description = name; + if (descriptionAnnot != null) { + description = descriptionAnnot.value(); + if (description == null) { + description = name; + } + } + Class< ? > fieldClass = field.getType(); + ClassField cf = new ClassField(); + cf.isIn = true; + cf.fieldName = name; + cf.fieldDescription = description; + cf.fieldClass = fieldClass; + cf.parentClass = moduleClass; + cf.parentClassStatus = statusString; + if (!fieldNamesList.contains(name)) { + fieldNamesList.add(name); + } + tmpfields.add(cf); + + } + Collection outputs = cA.outputs(); + for( Access access : outputs ) { + Field field = access.getField(); + String name = field.getName(); + Description descriptionAnnot = field.getAnnotation(Description.class); + String description = name; + if (descriptionAnnot != null) { + description = descriptionAnnot.value(); + if (description == null) { + description = name; + } + } + Class< ? > fieldClass = field.getType(); + ClassField cf = new ClassField(); + cf.isOut = true; + cf.fieldName = name; + cf.fieldDescription = description; + cf.fieldClass = fieldClass; + cf.parentClass = moduleClass; + cf.parentClassStatus = statusString; + if (!fieldNamesList.contains(name)) { + fieldNamesList.add(name); + } + tmpfields.add(cf); + } + moduleName2Fields.put(moduleName, tmpfields); + } + Collections.sort(fieldNamesList); + allFields = (String[]) fieldNamesList.toArray(new String[fieldNamesList.size()]); + Collections.sort(classNames); + allClasses = (String[]) classNames.toArray(new String[classNames.size()]); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void main( String[] args ) throws IOException { + Set>> entrySet = getInstance().moduleName2Class.entrySet(); + for( Entry> entry : entrySet ) { + System.out.println(entry.getKey() + " - " + entry.getValue().getCanonicalName()); + } + + List list = getInstance().moduleName2Fields.get("LineSmoother"); + for( ClassField classField : list ) { + System.out.println(classField); + } + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/AdigeBoundaryConditionReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/AdigeBoundaryConditionReader.java index bf7f5a6dc..28f7fd20a 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/AdigeBoundaryConditionReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/AdigeBoundaryConditionReader.java @@ -1,95 +1,95 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.adige; - -import java.io.File; -import java.io.IOException; -import java.util.HashMap; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.io.CSTable; -import oms3.io.DataIO; -import oms3.io.TableIterator; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; - -@Description("Utility class for reading the initial boundary conditions of the model adige from an OMS formatted csv file.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Reading") -@Label(JGTConstants.GENERICREADER) -@Status(Status.CERTIFIED) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class AdigeBoundaryConditionReader extends JGTModel { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The list initial boundary conditions.") - @Out - public HashMap data; - - private TableIterator rowsIterator; - private CSTable table; - - private void ensureOpen() throws IOException { - if (table == null) { - table = DataIO.table(new File(file), null); - rowsIterator = (TableIterator) table.rows().iterator(); - } - } - - @Execute - public void read() throws IOException { - if (!concatOr(data == null, doReset)) { - return; - } - ensureOpen(); - data = new HashMap(); - while( rowsIterator.hasNext() ) { - String[] row = rowsIterator.next(); - - AdigeBoundaryCondition condition = new AdigeBoundaryCondition(); - int i = 1; - condition.basinId = (int) Double.parseDouble(row[i++]); - condition.discharge = Double.parseDouble(row[i++]); - condition.dischargeSub = Double.parseDouble(row[i++]); - condition.S1 = Double.parseDouble(row[i++]); - condition.S2 = Double.parseDouble(row[i]); - - data.put(condition.basinId, condition); - } - } - - @Finalize - public void close() throws IOException { - rowsIterator.close(); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.adige; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.io.CSTable; +import oms3.io.DataIO; +import oms3.io.TableIterator; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; + +@Description("Utility class for reading the initial boundary conditions of the model adige from an OMS formatted csv file.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Reading") +@Label(JGTConstants.GENERICREADER) +@Status(Status.CERTIFIED) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class AdigeBoundaryConditionReader extends JGTModel { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The list initial boundary conditions.") + @Out + public HashMap data; + + private TableIterator rowsIterator; + private CSTable table; + + private void ensureOpen() throws IOException { + if (table == null) { + table = DataIO.table(new File(file), null); + rowsIterator = (TableIterator) table.rows().iterator(); + } + } + + @Execute + public void read() throws IOException { + if (!concatOr(data == null, doReset)) { + return; + } + ensureOpen(); + data = new HashMap(); + while( rowsIterator.hasNext() ) { + String[] row = rowsIterator.next(); + + AdigeBoundaryCondition condition = new AdigeBoundaryCondition(); + int i = 1; + condition.basinId = (int) Double.parseDouble(row[i++]); + condition.discharge = Double.parseDouble(row[i++]); + condition.dischargeSub = Double.parseDouble(row[i++]); + condition.S1 = Double.parseDouble(row[i++]); + condition.S2 = Double.parseDouble(row[i]); + + data.put(condition.basinId, condition); + } + } + + @Finalize + public void close() throws IOException { + rowsIterator.close(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/AdigeBoundaryConditionWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/AdigeBoundaryConditionWriter.java index e9a03938a..b8d422072 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/AdigeBoundaryConditionWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/AdigeBoundaryConditionWriter.java @@ -1,101 +1,101 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.adige; - -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.HashMap; -import java.util.Map.Entry; -import java.util.Set; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.io.DataIO; -import oms3.io.MemoryTable; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormatter; - -@Description("Utility class for writing the final boundary conditions of the model adige to an OMS formatted csv file.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Writing") -@Status(Status.CERTIFIED) -@Label(JGTConstants.GENERICWRITER) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class AdigeBoundaryConditionWriter { - @Description("The csv file to write to.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The table name.") - @In - public String tablename = "table"; - - @Description("The list of boundary conditions to write.") - @In - public HashMap data; - - private MemoryTable memoryTable; - - private DateTimeFormatter formatter = JGTConstants.dateTimeFormatterYYYYMMDDHHMM; - - private void ensureOpen() throws IOException { - if (memoryTable == null) { - memoryTable = new MemoryTable(); - memoryTable.setName(tablename); - memoryTable.getInfo().put("Created", new DateTime().toString(formatter)); - } - } - - @Execute - public void write() throws IOException { - ensureOpen(); - - String[] colNames = new String[]{"basinid", "discharge", "sub-discharge", "S1", "S2"}; - memoryTable.setColumns(colNames); - - Set> entrySet = data.entrySet(); - for( Entry entry : entrySet ) { - AdigeBoundaryCondition condition = entry.getValue(); - Object[] valuesRow = new Object[colNames.length]; - valuesRow[0] = condition.basinId; - valuesRow[1] = condition.discharge; - valuesRow[2] = condition.dischargeSub; - valuesRow[3] = condition.S1; - valuesRow[4] = condition.S2; - memoryTable.addRow(valuesRow); - } - } - - @Finalize - public void close() throws IOException { - DataIO.print(memoryTable, new PrintWriter(new File(file))); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.adige; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Map.Entry; +import java.util.Set; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.io.DataIO; +import oms3.io.MemoryTable; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormatter; + +@Description("Utility class for writing the final boundary conditions of the model adige to an OMS formatted csv file.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Writing") +@Status(Status.CERTIFIED) +@Label(JGTConstants.GENERICWRITER) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class AdigeBoundaryConditionWriter { + @Description("The csv file to write to.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The table name.") + @In + public String tablename = "table"; + + @Description("The list of boundary conditions to write.") + @In + public HashMap data; + + private MemoryTable memoryTable; + + private DateTimeFormatter formatter = JGTConstants.dateTimeFormatterYYYYMMDDHHMM; + + private void ensureOpen() throws IOException { + if (memoryTable == null) { + memoryTable = new MemoryTable(); + memoryTable.setName(tablename); + memoryTable.getInfo().put("Created", new DateTime().toString(formatter)); + } + } + + @Execute + public void write() throws IOException { + ensureOpen(); + + String[] colNames = new String[]{"basinid", "discharge", "sub-discharge", "S1", "S2"}; + memoryTable.setColumns(colNames); + + Set> entrySet = data.entrySet(); + for( Entry entry : entrySet ) { + AdigeBoundaryCondition condition = entry.getValue(); + Object[] valuesRow = new Object[colNames.length]; + valuesRow[0] = condition.basinId; + valuesRow[1] = condition.discharge; + valuesRow[2] = condition.dischargeSub; + valuesRow[3] = condition.S1; + valuesRow[4] = condition.S2; + memoryTable.addRow(valuesRow); + } + } + + @Finalize + public void close() throws IOException { + DataIO.print(memoryTable, new PrintWriter(new File(file))); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/VegetationLibraryReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/VegetationLibraryReader.java index 2a349509e..3b5e92c62 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/VegetationLibraryReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/VegetationLibraryReader.java @@ -1,120 +1,120 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.adige; - -import java.io.File; -import java.io.IOException; -import java.util.HashMap; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.io.CSTable; -import oms3.io.DataIO; -import oms3.io.TableIterator; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; - -@Description("Utility class for reading data from a OMS formatted csv file assumed to be containing the Vegetation library data.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Reading") -@Label(JGTConstants.GENERICREADER) -@Status(Status.CERTIFIED) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class VegetationLibraryReader extends JGTModel { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The list of arrays representing the values in the rows.") - @Out - public HashMap data; - - private TableIterator rowsIterator; - - private CSTable table; - - private void ensureOpen() throws IOException { - if (table == null) { - table = DataIO.table(new File(file), null); - rowsIterator = (TableIterator) table.rows().iterator(); - } - } - - @Execute - public void read() throws IOException { - if (!concatOr(data == null, doReset)) { - return; - } - ensureOpen(); - data = new HashMap(); - while( rowsIterator.hasNext() ) { - String[] row = rowsIterator.next(); - - int i = 1; - int vegetationIndex = (int) Double.parseDouble(row[i++]); - double architectural_resistance = Double.parseDouble(row[i++]); - double min_stomatal_resistanc = Double.parseDouble(row[i++]); - - double[] laiMonths = new double[12]; - for( int j = 0; j < laiMonths.length; j++ ) { - laiMonths[j] = Double.parseDouble(row[i++]); - } - double[] albedoMonths = new double[12]; - for( int j = 0; j < albedoMonths.length; j++ ) { - albedoMonths[j] = Double.parseDouble(row[i++]); - } - double[] roughMonths = new double[12]; - for( int j = 0; j < roughMonths.length; j++ ) { - roughMonths[j] = Double.parseDouble(row[i++]); - } - double[] displMonths = new double[12]; - for( int j = 0; j < displMonths.length; j++ ) { - displMonths[j] = Double.parseDouble(row[i++]); - } - - double wind_height = Double.parseDouble(row[i++]); - double rgl = Double.parseDouble(row[i++]); - double rad_atten = Double.parseDouble(row[i++]); - double wind_atten = Double.parseDouble(row[i++]); - double trunk_ratio = Double.parseDouble(row[i]); - - VegetationLibraryRecord vegetation = new VegetationLibraryRecord(vegetationIndex, - architectural_resistance, min_stomatal_resistanc, laiMonths, albedoMonths, - roughMonths, displMonths, wind_height, wind_atten, rgl, rad_atten, trunk_ratio); - - data.put(vegetationIndex, vegetation); - } - } - - @Finalize - public void close() throws IOException { - rowsIterator.close(); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.adige; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.io.CSTable; +import oms3.io.DataIO; +import oms3.io.TableIterator; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; + +@Description("Utility class for reading data from a OMS formatted csv file assumed to be containing the Vegetation library data.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Reading") +@Label(JGTConstants.GENERICREADER) +@Status(Status.CERTIFIED) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class VegetationLibraryReader extends JGTModel { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The list of arrays representing the values in the rows.") + @Out + public HashMap data; + + private TableIterator rowsIterator; + + private CSTable table; + + private void ensureOpen() throws IOException { + if (table == null) { + table = DataIO.table(new File(file), null); + rowsIterator = (TableIterator) table.rows().iterator(); + } + } + + @Execute + public void read() throws IOException { + if (!concatOr(data == null, doReset)) { + return; + } + ensureOpen(); + data = new HashMap(); + while( rowsIterator.hasNext() ) { + String[] row = rowsIterator.next(); + + int i = 1; + int vegetationIndex = (int) Double.parseDouble(row[i++]); + double architectural_resistance = Double.parseDouble(row[i++]); + double min_stomatal_resistanc = Double.parseDouble(row[i++]); + + double[] laiMonths = new double[12]; + for( int j = 0; j < laiMonths.length; j++ ) { + laiMonths[j] = Double.parseDouble(row[i++]); + } + double[] albedoMonths = new double[12]; + for( int j = 0; j < albedoMonths.length; j++ ) { + albedoMonths[j] = Double.parseDouble(row[i++]); + } + double[] roughMonths = new double[12]; + for( int j = 0; j < roughMonths.length; j++ ) { + roughMonths[j] = Double.parseDouble(row[i++]); + } + double[] displMonths = new double[12]; + for( int j = 0; j < displMonths.length; j++ ) { + displMonths[j] = Double.parseDouble(row[i++]); + } + + double wind_height = Double.parseDouble(row[i++]); + double rgl = Double.parseDouble(row[i++]); + double rad_atten = Double.parseDouble(row[i++]); + double wind_atten = Double.parseDouble(row[i++]); + double trunk_ratio = Double.parseDouble(row[i]); + + VegetationLibraryRecord vegetation = new VegetationLibraryRecord(vegetationIndex, + architectural_resistance, min_stomatal_resistanc, laiMonths, albedoMonths, + roughMonths, displMonths, wind_height, wind_atten, rgl, rad_atten, trunk_ratio); + + data.put(vegetationIndex, vegetation); + } + } + + @Finalize + public void close() throws IOException { + rowsIterator.close(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/VegetationLibraryRecord.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/VegetationLibraryRecord.java index 713f39a66..d8cc5aeb3 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/VegetationLibraryRecord.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/adige/VegetationLibraryRecord.java @@ -1,165 +1,165 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.adige; - -import java.util.Arrays; - -/** - * Container for vegetation library data. - * - *

                Note that months start from 1 (jan=1, dec=12).

                - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class VegetationLibraryRecord { - private final int id; - private final double architecturalResistance; - private final double minStomatalResistanc; - private final double[] laiMonths; - private final double[] albedoMonths; - private final double[] roughMonths; - private final double[] displMonths; - private final double windHeight; - private final double windAtten; - private final double rgl; - private final double radAtten; - private final double trunkRatio; - - public VegetationLibraryRecord( int id, double architecturalResistance, - double minStomatalResistanc, double[] laiMonths, double[] albedoMonths, - double[] roughMonths, double[] displMonths, double windHeight, double windAtten, - double rgl, double radAtten, double trunkRatio ) { - this.id = id; - this.architecturalResistance = architecturalResistance; - this.minStomatalResistanc = minStomatalResistanc; - this.laiMonths = laiMonths; - this.albedoMonths = albedoMonths; - this.roughMonths = roughMonths; - this.displMonths = displMonths; - this.windHeight = windHeight; - this.windAtten = windAtten; - this.rgl = rgl; - this.radAtten = radAtten; - this.trunkRatio = trunkRatio; - } - - public int getId() { - return id; - } - - public double getArchitecturalResistance() { - return architecturalResistance; - } - - public double getMinStomatalResistance() { - return minStomatalResistanc; - } - - /** - * Getter. - * - * @param month the month (jan = 1, dec = 12) - * @return lai for the given month. - */ - public double getLai( int month ) { - return laiMonths[month - 1]; - } - - /** - * Getter. - * - * @param month the month (jan = 1, dec = 12) - * @return albedo for the given month. - */ - public double getAlbedo( int month ) { - return albedoMonths[month - 1]; - } - - /** - * Getter. - * - * @param month the month (jan = 1, dec = 12) - * @return roughness for the given month. - */ - public double getRoughness( int month ) { - return roughMonths[month - 1]; - } - - /** - * Getter. - * - * @param month the month (jan = 1, dec = 12) - * @return displ for the given month. - */ - public double getDisplacement( int month ) { - return displMonths[month - 1]; - } - - public double getWindHeight() { - return windHeight; - } - - public double getWindAtten() { - return windAtten; - } - - public double getRgl() { - return rgl; - } - - public double getRadAtten() { - return radAtten; - } - - public double getTrunkRatio() { - return trunkRatio; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("VegetationLibraryRecord [\n\talbedoMonths="); - builder.append(Arrays.toString(albedoMonths)); - builder.append(", \n\tarchitecturalResistance="); - builder.append(architecturalResistance); - builder.append(", \n\tdisplMonths="); - builder.append(Arrays.toString(displMonths)); - builder.append(", \n\tid="); - builder.append(id); - builder.append(", \n\tlaiMonths="); - builder.append(Arrays.toString(laiMonths)); - builder.append(", \n\tminStomatalResistanc="); - builder.append(minStomatalResistanc); - builder.append(", \n\tradAtten="); - builder.append(radAtten); - builder.append(", \n\trgl="); - builder.append(rgl); - builder.append(", \n\troughMonths="); - builder.append(Arrays.toString(roughMonths)); - builder.append(", \n\ttrunkRatio="); - builder.append(trunkRatio); - builder.append(", \n\twindAtten="); - builder.append(windAtten); - builder.append(", \n\twindHeight="); - builder.append(windHeight); - builder.append("\n]"); - return builder.toString(); - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.adige; + +import java.util.Arrays; + +/** + * Container for vegetation library data. + * + *

                Note that months start from 1 (jan=1, dec=12).

                + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class VegetationLibraryRecord { + private final int id; + private final double architecturalResistance; + private final double minStomatalResistanc; + private final double[] laiMonths; + private final double[] albedoMonths; + private final double[] roughMonths; + private final double[] displMonths; + private final double windHeight; + private final double windAtten; + private final double rgl; + private final double radAtten; + private final double trunkRatio; + + public VegetationLibraryRecord( int id, double architecturalResistance, + double minStomatalResistanc, double[] laiMonths, double[] albedoMonths, + double[] roughMonths, double[] displMonths, double windHeight, double windAtten, + double rgl, double radAtten, double trunkRatio ) { + this.id = id; + this.architecturalResistance = architecturalResistance; + this.minStomatalResistanc = minStomatalResistanc; + this.laiMonths = laiMonths; + this.albedoMonths = albedoMonths; + this.roughMonths = roughMonths; + this.displMonths = displMonths; + this.windHeight = windHeight; + this.windAtten = windAtten; + this.rgl = rgl; + this.radAtten = radAtten; + this.trunkRatio = trunkRatio; + } + + public int getId() { + return id; + } + + public double getArchitecturalResistance() { + return architecturalResistance; + } + + public double getMinStomatalResistance() { + return minStomatalResistanc; + } + + /** + * Getter. + * + * @param month the month (jan = 1, dec = 12) + * @return lai for the given month. + */ + public double getLai( int month ) { + return laiMonths[month - 1]; + } + + /** + * Getter. + * + * @param month the month (jan = 1, dec = 12) + * @return albedo for the given month. + */ + public double getAlbedo( int month ) { + return albedoMonths[month - 1]; + } + + /** + * Getter. + * + * @param month the month (jan = 1, dec = 12) + * @return roughness for the given month. + */ + public double getRoughness( int month ) { + return roughMonths[month - 1]; + } + + /** + * Getter. + * + * @param month the month (jan = 1, dec = 12) + * @return displ for the given month. + */ + public double getDisplacement( int month ) { + return displMonths[month - 1]; + } + + public double getWindHeight() { + return windHeight; + } + + public double getWindAtten() { + return windAtten; + } + + public double getRgl() { + return rgl; + } + + public double getRadAtten() { + return radAtten; + } + + public double getTrunkRatio() { + return trunkRatio; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("VegetationLibraryRecord [\n\talbedoMonths="); + builder.append(Arrays.toString(albedoMonths)); + builder.append(", \n\tarchitecturalResistance="); + builder.append(architecturalResistance); + builder.append(", \n\tdisplMonths="); + builder.append(Arrays.toString(displMonths)); + builder.append(", \n\tid="); + builder.append(id); + builder.append(", \n\tlaiMonths="); + builder.append(Arrays.toString(laiMonths)); + builder.append(", \n\tminStomatalResistanc="); + builder.append(minStomatalResistanc); + builder.append(", \n\tradAtten="); + builder.append(radAtten); + builder.append(", \n\trgl="); + builder.append(rgl); + builder.append(", \n\troughMonths="); + builder.append(Arrays.toString(roughMonths)); + builder.append(", \n\ttrunkRatio="); + builder.append(trunkRatio); + builder.append(", \n\twindAtten="); + builder.append(windAtten); + builder.append(", \n\twindHeight="); + builder.append(windHeight); + builder.append("\n]"); + return builder.toString(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/converters/IdValuesArray2IdValuesConverter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/converters/IdValuesArray2IdValuesConverter.java index ab91ef18e..c49964410 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/converters/IdValuesArray2IdValuesConverter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/converters/IdValuesArray2IdValuesConverter.java @@ -1,74 +1,74 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.converters; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Set; -import java.util.Map.Entry; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; -@Description("Utility class for converting from 'id1 value1[]' to 'id1 value1' by averaging.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Reading") -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class IdValuesArray2IdValuesConverter { - @Description("Input data.") - @In - public HashMap inData; - - @Description("Output data.") - @Out - public HashMap outData; - - @Execute - public void convert() throws IOException { - if (outData==null) { - outData = new HashMap(); - } - Set> entries = inData.entrySet(); - for( Entry entry : entries ) { - Integer id = entry.getKey(); - double[] value = entry.getValue(); - - double avg = 0; - int num = 0; - for( double d : value ) { - if (!isNovalue(d)) { - avg = avg + d; - num++; - } - } - avg = avg / num; - - outData.put(id, avg); - } - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.converters; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Set; +import java.util.Map.Entry; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; +@Description("Utility class for converting from 'id1 value1[]' to 'id1 value1' by averaging.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Reading") +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class IdValuesArray2IdValuesConverter { + @Description("Input data.") + @In + public HashMap inData; + + @Description("Output data.") + @Out + public HashMap outData; + + @Execute + public void convert() throws IOException { + if (outData==null) { + outData = new HashMap(); + } + Set> entries = inData.entrySet(); + for( Entry entry : entries ) { + Integer id = entry.getKey(); + double[] value = entry.getValue(); + + double avg = 0; + int num = 0; + for( double d : value ) { + if (!isNovalue(d)) { + avg = avg + d; + num++; + } + } + avg = avg / num; + + outData.put(id, avg); + } + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/csv/CsvMatrixReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/csv/CsvMatrixReader.java index 3c1543717..709739ce0 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/csv/CsvMatrixReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/csv/CsvMatrixReader.java @@ -1,212 +1,212 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.csv; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.io.CSTable; -import oms3.io.DataIO; -import oms3.io.TableIterator; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; - -@Description("Utility class for reading data from a OMS formatted csv file to a double matrix (dates are saved as longs).") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Reading, csv") -@Label(JGTConstants.MATRIXREADER) -@Name("csvmatrixreader") -@UI(JGTConstants.HIDE_UI_HINT) -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class CsvMatrixReader extends JGTModel { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The file novalue to be translated into the internal novalue (defaults to -9999.0). Can be also a string.") - @In - public String fileNovalue = "-9999.0"; - - @Description("The internal novalue to use (defaults to NaN).") - @In - public double novalue = JGTConstants.doubleNovalue; - - @Description("The matrix of read data.") - @Out - public double[][] outData; - - @Description("The data title.") - @Out - public String outTitle; - - @Description("The data subtitle.") - @Out - public String outSubTitle; - - @Description("The data series names.") - @Out - public String[] outIds; - - @Description("The data labels or null.") - @Out - public String[] outLabels; - - @Description("The data formats (dates and numeric formatting patterns) or null.") - @Out - public String[] outFormats; - - @Description("The data types (dates or numerics like double, int) or null.") - @Out - public String[] outTypes; - - private TableIterator rowsIterator; - - private CSTable table; - - private int columnCount; - - private List outIdsList = new ArrayList(); - private List outLabelsList = new ArrayList(); - private List outFormatsList = new ArrayList(); - private List outTypesList = new ArrayList(); - - private List outDataList = new ArrayList(); - - private DateTimeFormatter dateFormatter; - - private void ensureOpen() throws IOException { - if (table == null) { - table = DataIO.table(new File(file), null); - - outTitle = table.getName(); - Map info = table.getInfo(); - Set> entrySet = info.entrySet(); - for( Entry entry : entrySet ) { - String key = entry.getKey(); - String value = entry.getValue(); - if (key.toLowerCase().equals("subtitle")) { - outSubTitle = value; - } - } - - columnCount = table.getColumnCount(); - - for( int i = 1; i <= columnCount; i++ ) { - String columnName = table.getColumnName(i); - if (i > 1) - outIdsList.add(columnName); - - Map columnInfo = table.getColumnInfo(i); - Set> entrySet1 = columnInfo.entrySet(); - for( Entry entry : entrySet1 ) { - String key = entry.getKey(); - String value = entry.getValue(); - - if (key.toLowerCase().equals("label")) { - outLabelsList.add(value); - } - if (key.toLowerCase().equals("format")) { - outFormatsList.add(value); - } - if (key.toLowerCase().equals("type")) { - value = value.toLowerCase().trim(); - if (value.length() == 0) { - value = "double"; - } - outTypesList.add(value); - } - } - } - - if (outIdsList.size() > 0) { - outIds = outIdsList.toArray(new String[0]); - } - if (outLabelsList.size() > 0) { - outLabels = outLabelsList.toArray(new String[0]); - } - if (outFormatsList.size() > 0) { - outFormats = outFormatsList.toArray(new String[0]); - } - - if (outTypesList.size() == 0) { - for( int i = 1; i <= columnCount; i++ ) { - outTypesList.add("double"); - } - } - outTypes = outTypesList.toArray(new String[0]); - - rowsIterator = (TableIterator) table.rows().iterator(); - } - } - - @Execute - public void read() throws IOException { - ensureOpen(); - while( rowsIterator.hasNext() ) { - String[] row = rowsIterator.next(); - double[] record = new double[columnCount]; - for( int i = 1; i <= columnCount; i++ ) { - if (i == 0 && outTypes[i].equals("date") && outFormats.length > i) { - if (dateFormatter == null) - dateFormatter = DateTimeFormat.forPattern(outFormats[i]); - - DateTime dateTime = dateFormatter.parseDateTime(row[i]); - record[i - 1] = dateTime.getMillis(); - } else { - double value = Double.parseDouble(row[i]); - record[i - 1] = value; - } - } - outDataList.add(record); - } - - outData = new double[outDataList.size()][]; - int index = 0; - for( double[] record : outDataList ) { - outData[index++] = record; - } - } - @Finalize - public void close() throws IOException { - rowsIterator.close(); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.csv; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.io.CSTable; +import oms3.io.DataIO; +import oms3.io.TableIterator; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; + +@Description("Utility class for reading data from a OMS formatted csv file to a double matrix (dates are saved as longs).") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Reading, csv") +@Label(JGTConstants.MATRIXREADER) +@Name("csvmatrixreader") +@UI(JGTConstants.HIDE_UI_HINT) +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class CsvMatrixReader extends JGTModel { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The file novalue to be translated into the internal novalue (defaults to -9999.0). Can be also a string.") + @In + public String fileNovalue = "-9999.0"; + + @Description("The internal novalue to use (defaults to NaN).") + @In + public double novalue = JGTConstants.doubleNovalue; + + @Description("The matrix of read data.") + @Out + public double[][] outData; + + @Description("The data title.") + @Out + public String outTitle; + + @Description("The data subtitle.") + @Out + public String outSubTitle; + + @Description("The data series names.") + @Out + public String[] outIds; + + @Description("The data labels or null.") + @Out + public String[] outLabels; + + @Description("The data formats (dates and numeric formatting patterns) or null.") + @Out + public String[] outFormats; + + @Description("The data types (dates or numerics like double, int) or null.") + @Out + public String[] outTypes; + + private TableIterator rowsIterator; + + private CSTable table; + + private int columnCount; + + private List outIdsList = new ArrayList(); + private List outLabelsList = new ArrayList(); + private List outFormatsList = new ArrayList(); + private List outTypesList = new ArrayList(); + + private List outDataList = new ArrayList(); + + private DateTimeFormatter dateFormatter; + + private void ensureOpen() throws IOException { + if (table == null) { + table = DataIO.table(new File(file), null); + + outTitle = table.getName(); + Map info = table.getInfo(); + Set> entrySet = info.entrySet(); + for( Entry entry : entrySet ) { + String key = entry.getKey(); + String value = entry.getValue(); + if (key.toLowerCase().equals("subtitle")) { + outSubTitle = value; + } + } + + columnCount = table.getColumnCount(); + + for( int i = 1; i <= columnCount; i++ ) { + String columnName = table.getColumnName(i); + if (i > 1) + outIdsList.add(columnName); + + Map columnInfo = table.getColumnInfo(i); + Set> entrySet1 = columnInfo.entrySet(); + for( Entry entry : entrySet1 ) { + String key = entry.getKey(); + String value = entry.getValue(); + + if (key.toLowerCase().equals("label")) { + outLabelsList.add(value); + } + if (key.toLowerCase().equals("format")) { + outFormatsList.add(value); + } + if (key.toLowerCase().equals("type")) { + value = value.toLowerCase().trim(); + if (value.length() == 0) { + value = "double"; + } + outTypesList.add(value); + } + } + } + + if (outIdsList.size() > 0) { + outIds = outIdsList.toArray(new String[0]); + } + if (outLabelsList.size() > 0) { + outLabels = outLabelsList.toArray(new String[0]); + } + if (outFormatsList.size() > 0) { + outFormats = outFormatsList.toArray(new String[0]); + } + + if (outTypesList.size() == 0) { + for( int i = 1; i <= columnCount; i++ ) { + outTypesList.add("double"); + } + } + outTypes = outTypesList.toArray(new String[0]); + + rowsIterator = (TableIterator) table.rows().iterator(); + } + } + + @Execute + public void read() throws IOException { + ensureOpen(); + while( rowsIterator.hasNext() ) { + String[] row = rowsIterator.next(); + double[] record = new double[columnCount]; + for( int i = 1; i <= columnCount; i++ ) { + if (i == 0 && outTypes[i].equals("date") && outFormats.length > i) { + if (dateFormatter == null) + dateFormatter = DateTimeFormat.forPattern(outFormats[i]); + + DateTime dateTime = dateFormatter.parseDateTime(row[i]); + record[i - 1] = dateTime.getMillis(); + } else { + double value = Double.parseDouble(row[i]); + record[i - 1] = value; + } + } + outDataList.add(record); + } + + outData = new double[outDataList.size()][]; + int index = 0; + for( double[] record : outDataList ) { + outData[index++] = record; + } + } + @Finalize + public void close() throws IOException { + rowsIterator.close(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dbf/DbfTableReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dbf/DbfTableReader.java index a43723190..fe7398d8c 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dbf/DbfTableReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dbf/DbfTableReader.java @@ -1,116 +1,116 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.dbf; - -import java.io.FileInputStream; -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.shapefile.dbf.DbaseFileHeader; -import org.geotools.data.shapefile.dbf.DbaseFileReader; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; - -@Description("Utility class for reading dbf tables.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Shapefile, Feature, Vector, Reading") -@Label(JGTConstants.HASHMAP_READER) -@Status(Status.DRAFT) -@Name("dbfreader") -@License("General Public License Version 3 (GPLv3)") -public class DbfTableReader extends JGTModel { - @Description("The dbf file.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The read dbf table.") - @Out - public HashMap> outTabledata = null; - - @Execute - public void readTable() throws IOException { - if (!concatOr(outTabledata == null, doReset)) { - return; - } - - FileInputStream fis = null; - DbaseFileReader dbfReader = null; - try { - - fis = new FileInputStream(file); - dbfReader = new DbaseFileReader(fis.getChannel(), false, Charset.defaultCharset()); - final DbaseFileHeader header = dbfReader.getHeader(); - int numFields = header.getNumFields(); - outTabledata = new HashMap>(); - for( int i = 0; i < numFields; i++ ) { - String fieldName = header.getFieldName(i); - outTabledata.put(fieldName, new ArrayList()); - } - - while( dbfReader.hasNext() ) { - dbfReader.read(); - for( int i = 0; i < numFields; i++ ) { - Object field = dbfReader.readField(i); - String fieldName = header.getFieldName(i); - List list = outTabledata.get(fieldName); - list.add(field); - } - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - if (dbfReader != null) - dbfReader.close(); - if (fis != null) - fis.close(); - } - } - - /** - * Fast read access mode. - * - * @param path the dbf path. - * @return the read table. - * @throws IOException - */ - public static HashMap> readDbf( String path ) throws IOException { - - DbfTableReader reader = new DbfTableReader(); - reader.file = path; - reader.readTable(); - - return reader.outTabledata; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.dbf; + +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.shapefile.dbf.DbaseFileHeader; +import org.geotools.data.shapefile.dbf.DbaseFileReader; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; + +@Description("Utility class for reading dbf tables.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Shapefile, Feature, Vector, Reading") +@Label(JGTConstants.HASHMAP_READER) +@Status(Status.DRAFT) +@Name("dbfreader") +@License("General Public License Version 3 (GPLv3)") +public class DbfTableReader extends JGTModel { + @Description("The dbf file.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The read dbf table.") + @Out + public HashMap> outTabledata = null; + + @Execute + public void readTable() throws IOException { + if (!concatOr(outTabledata == null, doReset)) { + return; + } + + FileInputStream fis = null; + DbaseFileReader dbfReader = null; + try { + + fis = new FileInputStream(file); + dbfReader = new DbaseFileReader(fis.getChannel(), false, Charset.defaultCharset()); + final DbaseFileHeader header = dbfReader.getHeader(); + int numFields = header.getNumFields(); + outTabledata = new HashMap>(); + for( int i = 0; i < numFields; i++ ) { + String fieldName = header.getFieldName(i); + outTabledata.put(fieldName, new ArrayList()); + } + + while( dbfReader.hasNext() ) { + dbfReader.read(); + for( int i = 0; i < numFields; i++ ) { + Object field = dbfReader.readField(i); + String fieldName = header.getFieldName(i); + List list = outTabledata.get(fieldName); + list.add(field); + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (dbfReader != null) + dbfReader.close(); + if (fis != null) + fis.close(); + } + } + + /** + * Fast read access mode. + * + * @param path the dbf path. + * @return the read table. + * @throws IOException + */ + public static HashMap> readDbf( String path ) throws IOException { + + DbfTableReader reader = new DbfTableReader(); + reader.file = path; + reader.readTable(); + + return reader.outTabledata; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/DoubleBits.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/DoubleBits.java index 442db999b..303c205e8 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/DoubleBits.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/DoubleBits.java @@ -1,131 +1,131 @@ -package org.jgrasstools.gears.io.disktree.jtstmp; - -import java.io.Serializable; - -/** - * DoubleBits manipulates Double numbers - * by using bit manipulation and bit-field extraction. - * For some operations (such as determining the exponent) - * this is more accurate than using mathematical operations - * (which suffer from round-off error). - *

                - * The algorithms and constants in this class - * apply only to IEEE-754 double-precision floating point format. - * - * @version 1.7 - */ -public class DoubleBits implements Serializable { - - private static final long serialVersionUID = 7426674216965508156L; - - public static final int EXPONENT_BIAS = 1023; - - public static double powerOf2( int exp ) { - if (exp > 1023 || exp < -1022) - throw new IllegalArgumentException("Exponent out of bounds"); - long expBias = exp + EXPONENT_BIAS; - long bits = (long) expBias << 52; - return Double.longBitsToDouble(bits); - } - - public static int exponent( double d ) { - DoubleBits db = new DoubleBits(d); - return db.getExponent(); - } - - public static double truncateToPowerOfTwo( double d ) { - DoubleBits db = new DoubleBits(d); - db.zeroLowerBits(52); - return db.getDouble(); - } - - public static String toBinaryString( double d ) { - DoubleBits db = new DoubleBits(d); - return db.toString(); - } - - public static double maximumCommonMantissa( double d1, double d2 ) { - if (d1 == 0.0 || d2 == 0.0) - return 0.0; - - DoubleBits db1 = new DoubleBits(d1); - DoubleBits db2 = new DoubleBits(d2); - - if (db1.getExponent() != db2.getExponent()) - return 0.0; - - int maxCommon = db1.numCommonMantissaBits(db2); - db1.zeroLowerBits(64 - (12 + maxCommon)); - return db1.getDouble(); - } - - private double x; - private long xBits; - - public DoubleBits( double x ) { - this.x = x; - xBits = Double.doubleToLongBits(x); - } - - public double getDouble() { - return Double.longBitsToDouble(xBits); - } - - /** - * Determines the exponent for the number - */ - public int biasedExponent() { - int signExp = (int) (xBits >> 52); - int exp = signExp & 0x07ff; - return exp; - } - - /** - * Determines the exponent for the number - */ - public int getExponent() { - return biasedExponent() - EXPONENT_BIAS; - } - - public void zeroLowerBits( int nBits ) { - long invMask = (1L << nBits) - 1L; - long mask = ~invMask; - xBits &= mask; - } - - public int getBit( int i ) { - long mask = (1L << i); - return (xBits & mask) != 0 ? 1 : 0; - } - - /** - * This computes the number of common most-significant bits in the mantissa. - * It does not count the hidden bit, which is always 1. - * It does not determine whether the numbers have the same exponent - if they do - * not, the value computed by this function is meaningless. - * @param db - * @return the number of common most-significant mantissa bits - */ - public int numCommonMantissaBits( DoubleBits db ) { - for( int i = 0; i < 52; i++ ) { - int bitIndex = i + 12; - if (getBit(i) != db.getBit(i)) - return i; - } - return 52; - } - - /** - * A representation of the Double bits formatted for easy readability - */ - public String toString() { - String numStr = Long.toBinaryString(xBits); - // 64 zeroes! - String zero64 = "0000000000000000000000000000000000000000000000000000000000000000"; - String padStr = zero64 + numStr; - String bitStr = padStr.substring(padStr.length() - 64); - String str = bitStr.substring(0, 1) + " " + bitStr.substring(1, 12) + "(" + getExponent() + ") " + bitStr.substring(12) - + " [ " + x + " ]"; - return str; - } -} +package org.jgrasstools.gears.io.disktree.jtstmp; + +import java.io.Serializable; + +/** + * DoubleBits manipulates Double numbers + * by using bit manipulation and bit-field extraction. + * For some operations (such as determining the exponent) + * this is more accurate than using mathematical operations + * (which suffer from round-off error). + *

                + * The algorithms and constants in this class + * apply only to IEEE-754 double-precision floating point format. + * + * @version 1.7 + */ +public class DoubleBits implements Serializable { + + private static final long serialVersionUID = 7426674216965508156L; + + public static final int EXPONENT_BIAS = 1023; + + public static double powerOf2( int exp ) { + if (exp > 1023 || exp < -1022) + throw new IllegalArgumentException("Exponent out of bounds"); + long expBias = exp + EXPONENT_BIAS; + long bits = (long) expBias << 52; + return Double.longBitsToDouble(bits); + } + + public static int exponent( double d ) { + DoubleBits db = new DoubleBits(d); + return db.getExponent(); + } + + public static double truncateToPowerOfTwo( double d ) { + DoubleBits db = new DoubleBits(d); + db.zeroLowerBits(52); + return db.getDouble(); + } + + public static String toBinaryString( double d ) { + DoubleBits db = new DoubleBits(d); + return db.toString(); + } + + public static double maximumCommonMantissa( double d1, double d2 ) { + if (d1 == 0.0 || d2 == 0.0) + return 0.0; + + DoubleBits db1 = new DoubleBits(d1); + DoubleBits db2 = new DoubleBits(d2); + + if (db1.getExponent() != db2.getExponent()) + return 0.0; + + int maxCommon = db1.numCommonMantissaBits(db2); + db1.zeroLowerBits(64 - (12 + maxCommon)); + return db1.getDouble(); + } + + private double x; + private long xBits; + + public DoubleBits( double x ) { + this.x = x; + xBits = Double.doubleToLongBits(x); + } + + public double getDouble() { + return Double.longBitsToDouble(xBits); + } + + /** + * Determines the exponent for the number + */ + public int biasedExponent() { + int signExp = (int) (xBits >> 52); + int exp = signExp & 0x07ff; + return exp; + } + + /** + * Determines the exponent for the number + */ + public int getExponent() { + return biasedExponent() - EXPONENT_BIAS; + } + + public void zeroLowerBits( int nBits ) { + long invMask = (1L << nBits) - 1L; + long mask = ~invMask; + xBits &= mask; + } + + public int getBit( int i ) { + long mask = (1L << i); + return (xBits & mask) != 0 ? 1 : 0; + } + + /** + * This computes the number of common most-significant bits in the mantissa. + * It does not count the hidden bit, which is always 1. + * It does not determine whether the numbers have the same exponent - if they do + * not, the value computed by this function is meaningless. + * @param db + * @return the number of common most-significant mantissa bits + */ + public int numCommonMantissaBits( DoubleBits db ) { + for( int i = 0; i < 52; i++ ) { + int bitIndex = i + 12; + if (getBit(i) != db.getBit(i)) + return i; + } + return 52; + } + + /** + * A representation of the Double bits formatted for easy readability + */ + public String toString() { + String numStr = Long.toBinaryString(xBits); + // 64 zeroes! + String zero64 = "0000000000000000000000000000000000000000000000000000000000000000"; + String padStr = zero64 + numStr; + String bitStr = padStr.substring(padStr.length() - 64); + String str = bitStr.substring(0, 1) + " " + bitStr.substring(1, 12) + "(" + getExponent() + ") " + bitStr.substring(12) + + " [ " + x + " ]"; + return str; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/IntervalSize.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/IntervalSize.java index 63dd9a504..7cd8b21f5 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/IntervalSize.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/IntervalSize.java @@ -1,43 +1,43 @@ -package org.jgrasstools.gears.io.disktree.jtstmp; - -import java.io.Serializable; - -/** - * Provides a test for whether an interval is - * so small it should be considered as zero for the purposes of - * inserting it into a binary tree. - * The reason this check is necessary is that round-off error can - * cause the algorithm used to subdivide an interval to fail, by - * computing a midpoint value which does not lie strictly between the - * endpoints. - * - * @version 1.7 - */ -public class IntervalSize implements Serializable { - - private static final long serialVersionUID = 2027763845052457104L; - /** - * This value is chosen to be a few powers of 2 less than the - * number of bits available in the double representation (i.e. 53). - * This should allow enough extra precision for simple computations to be correct, - * at least for comparison purposes. - */ - public static final int MIN_BINARY_EXPONENT = -50; - - /** - * Computes whether the interval [min, max] is effectively zero width. - * I.e. the width of the interval is so much less than the - * location of the interval that the midpoint of the interval cannot be - * represented precisely. - */ - public static boolean isZeroWidth( double min, double max ) { - double width = max - min; - if (width == 0.0) - return true; - - double maxAbs = Math.max(Math.abs(min), Math.abs(max)); - double scaledInterval = width / maxAbs; - int level = DoubleBits.exponent(scaledInterval); - return level <= MIN_BINARY_EXPONENT; - } -} +package org.jgrasstools.gears.io.disktree.jtstmp; + +import java.io.Serializable; + +/** + * Provides a test for whether an interval is + * so small it should be considered as zero for the purposes of + * inserting it into a binary tree. + * The reason this check is necessary is that round-off error can + * cause the algorithm used to subdivide an interval to fail, by + * computing a midpoint value which does not lie strictly between the + * endpoints. + * + * @version 1.7 + */ +public class IntervalSize implements Serializable { + + private static final long serialVersionUID = 2027763845052457104L; + /** + * This value is chosen to be a few powers of 2 less than the + * number of bits available in the double representation (i.e. 53). + * This should allow enough extra precision for simple computations to be correct, + * at least for comparison purposes. + */ + public static final int MIN_BINARY_EXPONENT = -50; + + /** + * Computes whether the interval [min, max] is effectively zero width. + * I.e. the width of the interval is so much less than the + * location of the interval that the midpoint of the interval cannot be + * represented precisely. + */ + public static boolean isZeroWidth( double min, double max ) { + double width = max - min; + if (width == 0.0) + return true; + + double maxAbs = Math.max(Math.abs(min), Math.abs(max)); + double scaledInterval = width / maxAbs; + int level = DoubleBits.exponent(scaledInterval); + return level <= MIN_BINARY_EXPONENT; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Key.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Key.java index c73294eae..5ec9d1459 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Key.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Key.java @@ -1,71 +1,71 @@ -package org.jgrasstools.gears.io.disktree.jtstmp; - -import java.io.Serializable; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; - -/** - * A Key is a unique identifier for a node in a quadtree. - * It contains a lower-left point and a level number. The level number - * is the power of two for the size of the node envelope - * - * @version 1.7 - */ -public class Key implements Serializable { - - private static final long serialVersionUID = -6333591104807918622L; - - public static int computeQuadLevel( Envelope env ) { - double dx = env.getWidth(); - double dy = env.getHeight(); - double dMax = dx > dy ? dx : dy; - int level = DoubleBits.exponent(dMax) + 1; - return level; - } - - // the fields which make up the key - private Coordinate pt = new Coordinate(); - private int level = 0; - // auxiliary data which is derived from the key for use in computation - private Envelope env = null; - - public Key( Envelope itemEnv ) { - computeKey(itemEnv); - } - - public Coordinate getPoint() { - return pt; - } - public int getLevel() { - return level; - } - public Envelope getEnvelope() { - return env; - } - - public Coordinate getCentre() { - return new Coordinate((env.getMinX() + env.getMaxX()) / 2, (env.getMinY() + env.getMaxY()) / 2); - } - /** - * return a square envelope containing the argument envelope, - * whose extent is a power of two and which is based at a power of 2 - */ - public void computeKey( Envelope itemEnv ) { - level = computeQuadLevel(itemEnv); - env = new Envelope(); - computeKey(level, itemEnv); - // MD - would be nice to have a non-iterative form of this algorithm - while( !env.contains(itemEnv) ) { - level += 1; - computeKey(level, itemEnv); - } - } - - private void computeKey( int level, Envelope itemEnv ) { - double quadSize = DoubleBits.powerOf2(level); - pt.x = Math.floor(itemEnv.getMinX() / quadSize) * quadSize; - pt.y = Math.floor(itemEnv.getMinY() / quadSize) * quadSize; - env.init(pt.x, pt.x + quadSize, pt.y, pt.y + quadSize); - } -} +package org.jgrasstools.gears.io.disktree.jtstmp; + +import java.io.Serializable; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; + +/** + * A Key is a unique identifier for a node in a quadtree. + * It contains a lower-left point and a level number. The level number + * is the power of two for the size of the node envelope + * + * @version 1.7 + */ +public class Key implements Serializable { + + private static final long serialVersionUID = -6333591104807918622L; + + public static int computeQuadLevel( Envelope env ) { + double dx = env.getWidth(); + double dy = env.getHeight(); + double dMax = dx > dy ? dx : dy; + int level = DoubleBits.exponent(dMax) + 1; + return level; + } + + // the fields which make up the key + private Coordinate pt = new Coordinate(); + private int level = 0; + // auxiliary data which is derived from the key for use in computation + private Envelope env = null; + + public Key( Envelope itemEnv ) { + computeKey(itemEnv); + } + + public Coordinate getPoint() { + return pt; + } + public int getLevel() { + return level; + } + public Envelope getEnvelope() { + return env; + } + + public Coordinate getCentre() { + return new Coordinate((env.getMinX() + env.getMaxX()) / 2, (env.getMinY() + env.getMaxY()) / 2); + } + /** + * return a square envelope containing the argument envelope, + * whose extent is a power of two and which is based at a power of 2 + */ + public void computeKey( Envelope itemEnv ) { + level = computeQuadLevel(itemEnv); + env = new Envelope(); + computeKey(level, itemEnv); + // MD - would be nice to have a non-iterative form of this algorithm + while( !env.contains(itemEnv) ) { + level += 1; + computeKey(level, itemEnv); + } + } + + private void computeKey( int level, Envelope itemEnv ) { + double quadSize = DoubleBits.powerOf2(level); + pt.x = Math.floor(itemEnv.getMinX() / quadSize) * quadSize; + pt.y = Math.floor(itemEnv.getMinY() / quadSize) * quadSize; + env.init(pt.x, pt.x + quadSize, pt.y, pt.y + quadSize); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Node.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Node.java index 84930f870..d2191ee34 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Node.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Node.java @@ -1,161 +1,161 @@ -package org.jgrasstools.gears.io.disktree.jtstmp; - -import java.io.Serializable; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.util.Assert; - -/** - * Represents a node of a {@link Quadtree}. Nodes contain - * items which have a spatial extent corresponding to the node's position - * in the quadtree. - * - * @version 1.7 - */ -public class Node extends NodeBase implements Serializable { - - private static final long serialVersionUID = 6549373230015282305L; - - public static Node createNode( Envelope env ) { - Key key = new Key(env); - Node node = new Node(key.getEnvelope(), key.getLevel()); - return node; - } - - public static Node createExpanded( Node node, Envelope addEnv ) { - Envelope expandEnv = new Envelope(addEnv); - if (node != null) - expandEnv.expandToInclude(node.env); - - Node largerNode = createNode(expandEnv); - if (node != null) - largerNode.insertNode(node); - return largerNode; - } - - private Envelope env; - private Coordinate centre; - private int level; - - public Node( Envelope env, int level ) { - // this.parent = parent; - this.env = env; - this.level = level; - centre = new Coordinate(); - centre.x = (env.getMinX() + env.getMaxX()) / 2; - centre.y = (env.getMinY() + env.getMaxY()) / 2; - } - - public Envelope getEnvelope() { - return env; - } - - protected boolean isSearchMatch( Envelope searchEnv ) { - return env.intersects(searchEnv); - } - - /** - * Returns the subquad containing the envelope. - * Creates the subquad if - * it does not already exist. - */ - public Node getNode( Envelope searchEnv ) { - int subnodeIndex = getSubnodeIndex(searchEnv, centre); - // if subquadIndex is -1 searchEnv is not contained in a subquad - if (subnodeIndex != -1) { - // create the quad if it does not exist - Node node = getSubnode(subnodeIndex); - // recursively search the found/created quad - return node.getNode(searchEnv); - } else { - return this; - } - } - - /** - * Returns the smallest existing - * node containing the envelope. - */ - public NodeBase find( Envelope searchEnv ) { - int subnodeIndex = getSubnodeIndex(searchEnv, centre); - if (subnodeIndex == -1) - return this; - if (subnode[subnodeIndex] != null) { - // query lies in subquad, so search it - Node node = subnode[subnodeIndex]; - return node.find(searchEnv); - } - // no existing subquad, so return this one anyway - return this; - } - - void insertNode( Node node ) { - Assert.isTrue(env == null || env.contains(node.env)); - // System.out.println(env); - // System.out.println(quad.env); - int index = getSubnodeIndex(node.env, centre); - // System.out.println(index); - if (node.level == level - 1) { - subnode[index] = node; - // System.out.println("inserted"); - } else { - // the quad is not a direct child, so make a new child quad to contain it - // and recursively insert the quad - Node childNode = createSubnode(index); - childNode.insertNode(node); - subnode[index] = childNode; - } - } - - /** - * get the subquad for the index. - * If it doesn't exist, create it - */ - private Node getSubnode( int index ) { - if (subnode[index] == null) { - subnode[index] = createSubnode(index); - } - return subnode[index]; - } - - private Node createSubnode( int index ) { - // create a new subquad in the appropriate quadrant - - double minx = 0.0; - double maxx = 0.0; - double miny = 0.0; - double maxy = 0.0; - - switch( index ) { - case 0: - minx = env.getMinX(); - maxx = centre.x; - miny = env.getMinY(); - maxy = centre.y; - break; - case 1: - minx = centre.x; - maxx = env.getMaxX(); - miny = env.getMinY(); - maxy = centre.y; - break; - case 2: - minx = env.getMinX(); - maxx = centre.x; - miny = centre.y; - maxy = env.getMaxY(); - break; - case 3: - minx = centre.x; - maxx = env.getMaxX(); - miny = centre.y; - maxy = env.getMaxY(); - break; - } - Envelope sqEnv = new Envelope(minx, maxx, miny, maxy); - Node node = new Node(sqEnv, level - 1); - return node; - } - -} +package org.jgrasstools.gears.io.disktree.jtstmp; + +import java.io.Serializable; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.util.Assert; + +/** + * Represents a node of a {@link Quadtree}. Nodes contain + * items which have a spatial extent corresponding to the node's position + * in the quadtree. + * + * @version 1.7 + */ +public class Node extends NodeBase implements Serializable { + + private static final long serialVersionUID = 6549373230015282305L; + + public static Node createNode( Envelope env ) { + Key key = new Key(env); + Node node = new Node(key.getEnvelope(), key.getLevel()); + return node; + } + + public static Node createExpanded( Node node, Envelope addEnv ) { + Envelope expandEnv = new Envelope(addEnv); + if (node != null) + expandEnv.expandToInclude(node.env); + + Node largerNode = createNode(expandEnv); + if (node != null) + largerNode.insertNode(node); + return largerNode; + } + + private Envelope env; + private Coordinate centre; + private int level; + + public Node( Envelope env, int level ) { + // this.parent = parent; + this.env = env; + this.level = level; + centre = new Coordinate(); + centre.x = (env.getMinX() + env.getMaxX()) / 2; + centre.y = (env.getMinY() + env.getMaxY()) / 2; + } + + public Envelope getEnvelope() { + return env; + } + + protected boolean isSearchMatch( Envelope searchEnv ) { + return env.intersects(searchEnv); + } + + /** + * Returns the subquad containing the envelope. + * Creates the subquad if + * it does not already exist. + */ + public Node getNode( Envelope searchEnv ) { + int subnodeIndex = getSubnodeIndex(searchEnv, centre); + // if subquadIndex is -1 searchEnv is not contained in a subquad + if (subnodeIndex != -1) { + // create the quad if it does not exist + Node node = getSubnode(subnodeIndex); + // recursively search the found/created quad + return node.getNode(searchEnv); + } else { + return this; + } + } + + /** + * Returns the smallest existing + * node containing the envelope. + */ + public NodeBase find( Envelope searchEnv ) { + int subnodeIndex = getSubnodeIndex(searchEnv, centre); + if (subnodeIndex == -1) + return this; + if (subnode[subnodeIndex] != null) { + // query lies in subquad, so search it + Node node = subnode[subnodeIndex]; + return node.find(searchEnv); + } + // no existing subquad, so return this one anyway + return this; + } + + void insertNode( Node node ) { + Assert.isTrue(env == null || env.contains(node.env)); + // System.out.println(env); + // System.out.println(quad.env); + int index = getSubnodeIndex(node.env, centre); + // System.out.println(index); + if (node.level == level - 1) { + subnode[index] = node; + // System.out.println("inserted"); + } else { + // the quad is not a direct child, so make a new child quad to contain it + // and recursively insert the quad + Node childNode = createSubnode(index); + childNode.insertNode(node); + subnode[index] = childNode; + } + } + + /** + * get the subquad for the index. + * If it doesn't exist, create it + */ + private Node getSubnode( int index ) { + if (subnode[index] == null) { + subnode[index] = createSubnode(index); + } + return subnode[index]; + } + + private Node createSubnode( int index ) { + // create a new subquad in the appropriate quadrant + + double minx = 0.0; + double maxx = 0.0; + double miny = 0.0; + double maxy = 0.0; + + switch( index ) { + case 0: + minx = env.getMinX(); + maxx = centre.x; + miny = env.getMinY(); + maxy = centre.y; + break; + case 1: + minx = centre.x; + maxx = env.getMaxX(); + miny = env.getMinY(); + maxy = centre.y; + break; + case 2: + minx = env.getMinX(); + maxx = centre.x; + miny = centre.y; + maxy = env.getMaxY(); + break; + case 3: + minx = centre.x; + maxx = env.getMaxX(); + miny = centre.y; + maxy = env.getMaxY(); + break; + } + Envelope sqEnv = new Envelope(minx, maxx, miny, maxy); + Node node = new Node(sqEnv, level - 1); + return node; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/NodeBase.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/NodeBase.java index 33a954271..d9de9e5e0 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/NodeBase.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/NodeBase.java @@ -1,224 +1,224 @@ -package org.jgrasstools.gears.io.disktree.jtstmp; - -import java.io.Serializable; -import java.util.*; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.index.*; - -/** - * The base class for nodes in a {@link Quadtree}. - * - * @version 1.7 - */ -public abstract class NodeBase implements Serializable { - - // <> Several classes in the various tree packages have the - // same name and duplicate code. This suggests that there should be a generic - // tree package containing the code that is duplicated, perhaps in abstract - // base classes. [Jon Aquino] - - // <> This little class hierarchy has some naming/conceptual - // problems. A root node is conceptually a kind of node, yet a Root is not a Node. - // NodeBase begs to be called BaseNode, but not all BaseNodes would be Nodes - // (for example, Root). [Jon Aquino] - - private static final long serialVersionUID = -5033486556084549819L; - - // DEBUG private static int itemCount = 0; // debugging - /** - * Returns the index of the subquad that wholly contains the given envelope. - * If none does, returns -1. - */ - public static int getSubnodeIndex( Envelope env, Coordinate centre ) { - int subnodeIndex = -1; - if (env.getMinX() >= centre.x) { - if (env.getMinY() >= centre.y) - subnodeIndex = 3; - if (env.getMaxY() <= centre.y) - subnodeIndex = 1; - } - if (env.getMaxX() <= centre.x) { - if (env.getMinY() >= centre.y) - subnodeIndex = 2; - if (env.getMaxY() <= centre.y) - subnodeIndex = 0; - } - return subnodeIndex; - } - - protected List items = new ArrayList(); - - /** - * subquads are numbered as follows: - *

                -     *  2 | 3
                -     *  --+--
                -     *  0 | 1
                -     * 
                - */ - protected Node[] subnode = new Node[4]; - - public NodeBase() { - } - - public List getItems() { - return items; - } - - public boolean hasItems() { - return !items.isEmpty(); - } - - public void add( Object item ) { - items.add(item); - // DEBUG itemCount++; - // DEBUG System.out.print(itemCount); - } - - /** - * Removes a single item from this subtree. - * - * @param itemEnv the envelope containing the item - * @param item the item to remove - * @return true if the item was found and removed - */ - public boolean remove( Envelope itemEnv, Object item ) { - // use envelope to restrict nodes scanned - if (!isSearchMatch(itemEnv)) - return false; - - boolean found = false; - for( int i = 0; i < 4; i++ ) { - if (subnode[i] != null) { - found = subnode[i].remove(itemEnv, item); - if (found) { - // trim subtree if empty - if (subnode[i].isPrunable()) - subnode[i] = null; - break; - } - } - } - // if item was found lower down, don't need to search for it here - if (found) - return found; - // otherwise, try and remove the item from the list of items in this node - found = items.remove(item); - return found; - } - - public boolean isPrunable() { - return !(hasChildren() || hasItems()); - } - - public boolean hasChildren() { - for( int i = 0; i < 4; i++ ) { - if (subnode[i] != null) - return true; - } - return false; - } - - public boolean isEmpty() { - boolean isEmpty = true; - if (!items.isEmpty()) - isEmpty = false; - for( int i = 0; i < 4; i++ ) { - if (subnode[i] != null) { - if (!subnode[i].isEmpty()) - isEmpty = false; - } - } - return isEmpty; - } - - // <> Sounds like this method adds resultItems to items - // (like List#addAll). Perhaps it should be renamed to "addAllItemsTo" [Jon Aquino] - public List addAllItems( List resultItems ) { - // this node may have items as well as subnodes (since items may not - // be wholely contained in any single subnode - resultItems.addAll(this.items); - for( int i = 0; i < 4; i++ ) { - if (subnode[i] != null) { - subnode[i].addAllItems(resultItems); - } - } - return resultItems; - } - protected abstract boolean isSearchMatch( Envelope searchEnv ); - - public void addAllItemsFromOverlapping( Envelope searchEnv, List resultItems ) { - if (!isSearchMatch(searchEnv)) - return; - - // this node may have items as well as subnodes (since items may not - // be wholely contained in any single subnode - resultItems.addAll(items); - - for( int i = 0; i < 4; i++ ) { - if (subnode[i] != null) { - subnode[i].addAllItemsFromOverlapping(searchEnv, resultItems); - } - } - } - - public void visit( Envelope searchEnv, ItemVisitor visitor ) { - if (!isSearchMatch(searchEnv)) - return; - - // this node may have items as well as subnodes (since items may not - // be wholely contained in any single subnode - visitItems(searchEnv, visitor); - - for( int i = 0; i < 4; i++ ) { - if (subnode[i] != null) { - subnode[i].visit(searchEnv, visitor); - } - } - } - - private void visitItems( Envelope searchEnv, ItemVisitor visitor ) { - // would be nice to filter items based on search envelope, but can't until they contain an - // envelope - for( Iterator i = items.iterator(); i.hasNext(); ) { - visitor.visitItem(i.next()); - } - } - - // <> In Samet's terminology, I think what we're returning here is - // actually level+1 rather than depth. (See p. 4 of his book) [Jon Aquino] - int depth() { - int maxSubDepth = 0; - for( int i = 0; i < 4; i++ ) { - if (subnode[i] != null) { - int sqd = subnode[i].depth(); - if (sqd > maxSubDepth) - maxSubDepth = sqd; - } - } - return maxSubDepth + 1; - } - - int size() { - int subSize = 0; - for( int i = 0; i < 4; i++ ) { - if (subnode[i] != null) { - subSize += subnode[i].size(); - } - } - return subSize + items.size(); - } - - int getNodeCount() { - int subSize = 0; - for( int i = 0; i < 4; i++ ) { - if (subnode[i] != null) { - subSize += subnode[i].size(); - } - } - return subSize + 1; - } - -} +package org.jgrasstools.gears.io.disktree.jtstmp; + +import java.io.Serializable; +import java.util.*; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.index.*; + +/** + * The base class for nodes in a {@link Quadtree}. + * + * @version 1.7 + */ +public abstract class NodeBase implements Serializable { + + // <> Several classes in the various tree packages have the + // same name and duplicate code. This suggests that there should be a generic + // tree package containing the code that is duplicated, perhaps in abstract + // base classes. [Jon Aquino] + + // <> This little class hierarchy has some naming/conceptual + // problems. A root node is conceptually a kind of node, yet a Root is not a Node. + // NodeBase begs to be called BaseNode, but not all BaseNodes would be Nodes + // (for example, Root). [Jon Aquino] + + private static final long serialVersionUID = -5033486556084549819L; + + // DEBUG private static int itemCount = 0; // debugging + /** + * Returns the index of the subquad that wholly contains the given envelope. + * If none does, returns -1. + */ + public static int getSubnodeIndex( Envelope env, Coordinate centre ) { + int subnodeIndex = -1; + if (env.getMinX() >= centre.x) { + if (env.getMinY() >= centre.y) + subnodeIndex = 3; + if (env.getMaxY() <= centre.y) + subnodeIndex = 1; + } + if (env.getMaxX() <= centre.x) { + if (env.getMinY() >= centre.y) + subnodeIndex = 2; + if (env.getMaxY() <= centre.y) + subnodeIndex = 0; + } + return subnodeIndex; + } + + protected List items = new ArrayList(); + + /** + * subquads are numbered as follows: + *
                +     *  2 | 3
                +     *  --+--
                +     *  0 | 1
                +     * 
                + */ + protected Node[] subnode = new Node[4]; + + public NodeBase() { + } + + public List getItems() { + return items; + } + + public boolean hasItems() { + return !items.isEmpty(); + } + + public void add( Object item ) { + items.add(item); + // DEBUG itemCount++; + // DEBUG System.out.print(itemCount); + } + + /** + * Removes a single item from this subtree. + * + * @param itemEnv the envelope containing the item + * @param item the item to remove + * @return true if the item was found and removed + */ + public boolean remove( Envelope itemEnv, Object item ) { + // use envelope to restrict nodes scanned + if (!isSearchMatch(itemEnv)) + return false; + + boolean found = false; + for( int i = 0; i < 4; i++ ) { + if (subnode[i] != null) { + found = subnode[i].remove(itemEnv, item); + if (found) { + // trim subtree if empty + if (subnode[i].isPrunable()) + subnode[i] = null; + break; + } + } + } + // if item was found lower down, don't need to search for it here + if (found) + return found; + // otherwise, try and remove the item from the list of items in this node + found = items.remove(item); + return found; + } + + public boolean isPrunable() { + return !(hasChildren() || hasItems()); + } + + public boolean hasChildren() { + for( int i = 0; i < 4; i++ ) { + if (subnode[i] != null) + return true; + } + return false; + } + + public boolean isEmpty() { + boolean isEmpty = true; + if (!items.isEmpty()) + isEmpty = false; + for( int i = 0; i < 4; i++ ) { + if (subnode[i] != null) { + if (!subnode[i].isEmpty()) + isEmpty = false; + } + } + return isEmpty; + } + + // <> Sounds like this method adds resultItems to items + // (like List#addAll). Perhaps it should be renamed to "addAllItemsTo" [Jon Aquino] + public List addAllItems( List resultItems ) { + // this node may have items as well as subnodes (since items may not + // be wholely contained in any single subnode + resultItems.addAll(this.items); + for( int i = 0; i < 4; i++ ) { + if (subnode[i] != null) { + subnode[i].addAllItems(resultItems); + } + } + return resultItems; + } + protected abstract boolean isSearchMatch( Envelope searchEnv ); + + public void addAllItemsFromOverlapping( Envelope searchEnv, List resultItems ) { + if (!isSearchMatch(searchEnv)) + return; + + // this node may have items as well as subnodes (since items may not + // be wholely contained in any single subnode + resultItems.addAll(items); + + for( int i = 0; i < 4; i++ ) { + if (subnode[i] != null) { + subnode[i].addAllItemsFromOverlapping(searchEnv, resultItems); + } + } + } + + public void visit( Envelope searchEnv, ItemVisitor visitor ) { + if (!isSearchMatch(searchEnv)) + return; + + // this node may have items as well as subnodes (since items may not + // be wholely contained in any single subnode + visitItems(searchEnv, visitor); + + for( int i = 0; i < 4; i++ ) { + if (subnode[i] != null) { + subnode[i].visit(searchEnv, visitor); + } + } + } + + private void visitItems( Envelope searchEnv, ItemVisitor visitor ) { + // would be nice to filter items based on search envelope, but can't until they contain an + // envelope + for( Iterator i = items.iterator(); i.hasNext(); ) { + visitor.visitItem(i.next()); + } + } + + // <> In Samet's terminology, I think what we're returning here is + // actually level+1 rather than depth. (See p. 4 of his book) [Jon Aquino] + int depth() { + int maxSubDepth = 0; + for( int i = 0; i < 4; i++ ) { + if (subnode[i] != null) { + int sqd = subnode[i].depth(); + if (sqd > maxSubDepth) + maxSubDepth = sqd; + } + } + return maxSubDepth + 1; + } + + int size() { + int subSize = 0; + for( int i = 0; i < 4; i++ ) { + if (subnode[i] != null) { + subSize += subnode[i].size(); + } + } + return subSize + items.size(); + } + + int getNodeCount() { + int subSize = 0; + for( int i = 0; i < 4; i++ ) { + if (subnode[i] != null) { + subSize += subnode[i].size(); + } + } + return subSize + 1; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Quadtree.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Quadtree.java index c843c791f..30f6c385d 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Quadtree.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Quadtree.java @@ -1,204 +1,204 @@ -package org.jgrasstools.gears.io.disktree.jtstmp; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.index.ArrayListVisitor; -import com.vividsolutions.jts.index.ItemVisitor; -import com.vividsolutions.jts.index.SpatialIndex; -/** - * A Quadtree is a spatial index structure for efficient querying - * of 2D rectangles. If other kinds of spatial objects - * need to be indexed they can be represented by their - * envelopes - *

                - * The quadtree structure is used to provide a primary filter - * for range rectangle queries. The query() method returns a list of - * all objects which may intersect the query rectangle. Note that - * it may return objects which do not in fact intersect. - * A secondary filter is required to test for exact intersection. - * Of course, this secondary filter may consist of other tests besides - * intersection, such as testing other kinds of spatial relationships. - * - *

                - * This implementation does not require specifying the extent of the inserted - * items beforehand. It will automatically expand to accomodate any extent - * of dataset. - *

                - * This data structure is also known as an MX-CIF quadtree - * following the usage of Samet and others. - * - * @version 1.7 - */ -public class Quadtree implements SpatialIndex, Serializable { - private static final long serialVersionUID = 5470179859418967262L; - - /** - * Ensure that the envelope for the inserted item has non-zero extents. - * Use the current minExtent to pad the envelope, if necessary - */ - public static Envelope ensureExtent( Envelope itemEnv, double minExtent ) { - // The names "ensureExtent" and "minExtent" are misleading -- sounds like - // this method ensures that the extents are greater than minExtent. - // Perhaps we should rename them to "ensurePositiveExtent" and "defaultExtent". - // [Jon Aquino] - double minx = itemEnv.getMinX(); - double maxx = itemEnv.getMaxX(); - double miny = itemEnv.getMinY(); - double maxy = itemEnv.getMaxY(); - // has a non-zero extent - if (minx != maxx && miny != maxy) - return itemEnv; - - // pad one or both extents - if (minx == maxx) { - minx = minx - minExtent / 2.0; - maxx = minx + minExtent / 2.0; - } - if (miny == maxy) { - miny = miny - minExtent / 2.0; - maxy = miny + minExtent / 2.0; - } - return new Envelope(minx, maxx, miny, maxy); - } - - private Root root; - /** - - * minExtent is the minimum envelope extent of all items - * inserted into the tree so far. It is used as a heuristic value - * to construct non-zero envelopes for features with zero X and/or Y extent. - * Start with a non-zero extent, in case the first feature inserted has - * a zero extent in both directions. This value may be non-optimal, but - * only one feature will be inserted with this value. - **/ - private double minExtent = 1.0; - - /** - * Constructs a Quadtree with zero items. - */ - public Quadtree() { - root = new Root(); - } - - /** - * Returns the number of levels in the tree. - */ - public int depth() { - // I don't think it's possible for root to be null. Perhaps we should - // remove the check. [Jon Aquino] - // Or make an assertion [Jon Aquino 10/29/2003] - if (root != null) - return root.depth(); - return 0; - } - - /** - * Returns the number of items in the tree. - * - * @return the number of items in the tree - */ - public int size() { - if (root != null) - return root.size(); - return 0; - } - - public void insert( Envelope itemEnv, Object item ) { - collectStats(itemEnv); - Envelope insertEnv = ensureExtent(itemEnv, minExtent); - root.insert(insertEnv, item); - } - - /** - * Removes a single item from the tree. - * - * @param itemEnv the Envelope of the item to be removed - * @param item the item to remove - * @return true if the item was found (and thus removed) - */ - public boolean remove( Envelope itemEnv, Object item ) { - Envelope posEnv = ensureExtent(itemEnv, minExtent); - return root.remove(posEnv, item); - } - - /* - public List OLDquery(Envelope searchEnv) - { - /** - * the items that are matched are the items in quads which - * overlap the search envelope - */ - /* - List foundItems = new ArrayList(); - root.addAllItemsFromOverlapping(searchEnv, foundItems); - return foundItems; - } - */ - - /** - * Queries the tree and returns items which may lie in the given search envelope. - * Precisely, the items that are returned are all items in the tree - * whose envelope may intersect the search Envelope. - * Note that some items with non-intersecting envelopes may be returned as well; - * the client is responsible for filtering these out. - * In most situations there will be many items in the tree which do not - * intersect the search envelope and which are not returned - thus - * providing improved performance over a simple linear scan. - * - * @param searchEnv the envelope of the desired query area. - * @return a List of items which may intersect the search envelope - */ - public List query( Envelope searchEnv ) { - /** - * the items that are matched are the items in quads which - * overlap the search envelope - */ - ArrayListVisitor visitor = new ArrayListVisitor(); - query(searchEnv, visitor); - return visitor.getItems(); - } - - /** - * Queries the tree and visits items which may lie in the given search envelope. - * Precisely, the items that are visited are all items in the tree - * whose envelope may intersect the search Envelope. - * Note that some items with non-intersecting envelopes may be visited as well; - * the client is responsible for filtering these out. - * In most situations there will be many items in the tree which do not - * intersect the search envelope and which are not visited - thus - * providing improved performance over a simple linear scan. - * - * @param searchEnv the envelope of the desired query area. - * @param visitor a visitor object which is passed the visited items - */ - public void query( Envelope searchEnv, ItemVisitor visitor ) { - /** - * the items that are matched are the items in quads which - * overlap the search envelope - */ - root.visit(searchEnv, visitor); - } - - /** - * Return a list of all items in the Quadtree - */ - public List queryAll() { - List foundItems = new ArrayList(); - root.addAllItems(foundItems); - return foundItems; - } - - private void collectStats( Envelope itemEnv ) { - double delX = itemEnv.getWidth(); - if (delX < minExtent && delX > 0.0) - minExtent = delX; - - double delY = itemEnv.getHeight(); - if (delY < minExtent && delY > 0.0) - minExtent = delY; - } - -} +package org.jgrasstools.gears.io.disktree.jtstmp; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.index.ArrayListVisitor; +import com.vividsolutions.jts.index.ItemVisitor; +import com.vividsolutions.jts.index.SpatialIndex; +/** + * A Quadtree is a spatial index structure for efficient querying + * of 2D rectangles. If other kinds of spatial objects + * need to be indexed they can be represented by their + * envelopes + *

                + * The quadtree structure is used to provide a primary filter + * for range rectangle queries. The query() method returns a list of + * all objects which may intersect the query rectangle. Note that + * it may return objects which do not in fact intersect. + * A secondary filter is required to test for exact intersection. + * Of course, this secondary filter may consist of other tests besides + * intersection, such as testing other kinds of spatial relationships. + * + *

                + * This implementation does not require specifying the extent of the inserted + * items beforehand. It will automatically expand to accomodate any extent + * of dataset. + *

                + * This data structure is also known as an MX-CIF quadtree + * following the usage of Samet and others. + * + * @version 1.7 + */ +public class Quadtree implements SpatialIndex, Serializable { + private static final long serialVersionUID = 5470179859418967262L; + + /** + * Ensure that the envelope for the inserted item has non-zero extents. + * Use the current minExtent to pad the envelope, if necessary + */ + public static Envelope ensureExtent( Envelope itemEnv, double minExtent ) { + // The names "ensureExtent" and "minExtent" are misleading -- sounds like + // this method ensures that the extents are greater than minExtent. + // Perhaps we should rename them to "ensurePositiveExtent" and "defaultExtent". + // [Jon Aquino] + double minx = itemEnv.getMinX(); + double maxx = itemEnv.getMaxX(); + double miny = itemEnv.getMinY(); + double maxy = itemEnv.getMaxY(); + // has a non-zero extent + if (minx != maxx && miny != maxy) + return itemEnv; + + // pad one or both extents + if (minx == maxx) { + minx = minx - minExtent / 2.0; + maxx = minx + minExtent / 2.0; + } + if (miny == maxy) { + miny = miny - minExtent / 2.0; + maxy = miny + minExtent / 2.0; + } + return new Envelope(minx, maxx, miny, maxy); + } + + private Root root; + /** + + * minExtent is the minimum envelope extent of all items + * inserted into the tree so far. It is used as a heuristic value + * to construct non-zero envelopes for features with zero X and/or Y extent. + * Start with a non-zero extent, in case the first feature inserted has + * a zero extent in both directions. This value may be non-optimal, but + * only one feature will be inserted with this value. + **/ + private double minExtent = 1.0; + + /** + * Constructs a Quadtree with zero items. + */ + public Quadtree() { + root = new Root(); + } + + /** + * Returns the number of levels in the tree. + */ + public int depth() { + // I don't think it's possible for root to be null. Perhaps we should + // remove the check. [Jon Aquino] + // Or make an assertion [Jon Aquino 10/29/2003] + if (root != null) + return root.depth(); + return 0; + } + + /** + * Returns the number of items in the tree. + * + * @return the number of items in the tree + */ + public int size() { + if (root != null) + return root.size(); + return 0; + } + + public void insert( Envelope itemEnv, Object item ) { + collectStats(itemEnv); + Envelope insertEnv = ensureExtent(itemEnv, minExtent); + root.insert(insertEnv, item); + } + + /** + * Removes a single item from the tree. + * + * @param itemEnv the Envelope of the item to be removed + * @param item the item to remove + * @return true if the item was found (and thus removed) + */ + public boolean remove( Envelope itemEnv, Object item ) { + Envelope posEnv = ensureExtent(itemEnv, minExtent); + return root.remove(posEnv, item); + } + + /* + public List OLDquery(Envelope searchEnv) + { + /** + * the items that are matched are the items in quads which + * overlap the search envelope + */ + /* + List foundItems = new ArrayList(); + root.addAllItemsFromOverlapping(searchEnv, foundItems); + return foundItems; + } + */ + + /** + * Queries the tree and returns items which may lie in the given search envelope. + * Precisely, the items that are returned are all items in the tree + * whose envelope may intersect the search Envelope. + * Note that some items with non-intersecting envelopes may be returned as well; + * the client is responsible for filtering these out. + * In most situations there will be many items in the tree which do not + * intersect the search envelope and which are not returned - thus + * providing improved performance over a simple linear scan. + * + * @param searchEnv the envelope of the desired query area. + * @return a List of items which may intersect the search envelope + */ + public List query( Envelope searchEnv ) { + /** + * the items that are matched are the items in quads which + * overlap the search envelope + */ + ArrayListVisitor visitor = new ArrayListVisitor(); + query(searchEnv, visitor); + return visitor.getItems(); + } + + /** + * Queries the tree and visits items which may lie in the given search envelope. + * Precisely, the items that are visited are all items in the tree + * whose envelope may intersect the search Envelope. + * Note that some items with non-intersecting envelopes may be visited as well; + * the client is responsible for filtering these out. + * In most situations there will be many items in the tree which do not + * intersect the search envelope and which are not visited - thus + * providing improved performance over a simple linear scan. + * + * @param searchEnv the envelope of the desired query area. + * @param visitor a visitor object which is passed the visited items + */ + public void query( Envelope searchEnv, ItemVisitor visitor ) { + /** + * the items that are matched are the items in quads which + * overlap the search envelope + */ + root.visit(searchEnv, visitor); + } + + /** + * Return a list of all items in the Quadtree + */ + public List queryAll() { + List foundItems = new ArrayList(); + root.addAllItems(foundItems); + return foundItems; + } + + private void collectStats( Envelope itemEnv ) { + double delX = itemEnv.getWidth(); + if (delX < minExtent && delX > 0.0) + minExtent = delX; + + double delY = itemEnv.getHeight(); + if (delY < minExtent && delY > 0.0) + minExtent = delY; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Root.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Root.java index 8762a9ff4..282b1a50b 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Root.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/disktree/jtstmp/Root.java @@ -1,88 +1,88 @@ - -package org.jgrasstools.gears.io.disktree.jtstmp; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.util.Assert; - -/** - * QuadRoot is the root of a single Quadtree. It is centred at the origin, - * and does not have a defined extent. - * - * @version 1.7 - */ -public class Root - extends NodeBase -{ - - // the singleton root quad is centred at the origin. - private static final Coordinate origin = new Coordinate(0.0, 0.0); - - public Root() - { - } - - /** - * Insert an item into the quadtree this is the root of. - */ - public void insert(Envelope itemEnv, Object item) - { - int index = getSubnodeIndex(itemEnv, origin); - // if index is -1, itemEnv must cross the X or Y axis. - if (index == -1) { - add(item); - return; - } - /** - * the item must be contained in one quadrant, so insert it into the - * tree for that quadrant (which may not yet exist) - */ - Node node = subnode[index]; - /** - * If the subquad doesn't exist or this item is not contained in it, - * have to expand the tree upward to contain the item. - */ - - if (node == null || ! node.getEnvelope().contains(itemEnv)) { - Node largerNode = Node.createExpanded(node, itemEnv); - subnode[index] = largerNode; - } - /** - * At this point we have a subquad which exists and must contain - * contains the env for the item. Insert the item into the tree. - */ - insertContained(subnode[index], itemEnv, item); - //System.out.println("depth = " + root.depth() + " size = " + root.size()); - //System.out.println(" size = " + size()); - } - - /** - * insert an item which is known to be contained in the tree rooted at - * the given QuadNode root. Lower levels of the tree will be created - * if necessary to hold the item. - */ - private void insertContained(Node tree, Envelope itemEnv, Object item) - { - Assert.isTrue(tree.getEnvelope().contains(itemEnv)); - /** - * Do NOT create a new quad for zero-area envelopes - this would lead - * to infinite recursion. Instead, use a heuristic of simply returning - * the smallest existing quad containing the query - */ - boolean isZeroX = IntervalSize.isZeroWidth(itemEnv.getMinX(), itemEnv.getMaxX()); - boolean isZeroY = IntervalSize.isZeroWidth(itemEnv.getMinY(), itemEnv.getMaxY()); - NodeBase node; - if (isZeroX || isZeroY) - node = tree.find(itemEnv); - else - node = tree.getNode(itemEnv); - node.add(item); - } - - protected boolean isSearchMatch(Envelope searchEnv) - { - return true; - } - - -} + +package org.jgrasstools.gears.io.disktree.jtstmp; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.util.Assert; + +/** + * QuadRoot is the root of a single Quadtree. It is centred at the origin, + * and does not have a defined extent. + * + * @version 1.7 + */ +public class Root + extends NodeBase +{ + + // the singleton root quad is centred at the origin. + private static final Coordinate origin = new Coordinate(0.0, 0.0); + + public Root() + { + } + + /** + * Insert an item into the quadtree this is the root of. + */ + public void insert(Envelope itemEnv, Object item) + { + int index = getSubnodeIndex(itemEnv, origin); + // if index is -1, itemEnv must cross the X or Y axis. + if (index == -1) { + add(item); + return; + } + /** + * the item must be contained in one quadrant, so insert it into the + * tree for that quadrant (which may not yet exist) + */ + Node node = subnode[index]; + /** + * If the subquad doesn't exist or this item is not contained in it, + * have to expand the tree upward to contain the item. + */ + + if (node == null || ! node.getEnvelope().contains(itemEnv)) { + Node largerNode = Node.createExpanded(node, itemEnv); + subnode[index] = largerNode; + } + /** + * At this point we have a subquad which exists and must contain + * contains the env for the item. Insert the item into the tree. + */ + insertContained(subnode[index], itemEnv, item); + //System.out.println("depth = " + root.depth() + " size = " + root.size()); + //System.out.println(" size = " + size()); + } + + /** + * insert an item which is known to be contained in the tree rooted at + * the given QuadNode root. Lower levels of the tree will be created + * if necessary to hold the item. + */ + private void insertContained(Node tree, Envelope itemEnv, Object item) + { + Assert.isTrue(tree.getEnvelope().contains(itemEnv)); + /** + * Do NOT create a new quad for zero-area envelopes - this would lead + * to infinite recursion. Instead, use a heuristic of simply returning + * the smallest existing quad containing the query + */ + boolean isZeroX = IntervalSize.isZeroWidth(itemEnv.getMinX(), itemEnv.getMaxX()); + boolean isZeroY = IntervalSize.isZeroWidth(itemEnv.getMinY(), itemEnv.getMaxY()); + NodeBase node; + if (isZeroX || isZeroY) + node = tree.find(itemEnv); + else + node = tree.getNode(itemEnv); + node.add(item); + } + + protected boolean isSearchMatch(Envelope searchEnv) + { + return true; + } + + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/DwgHandler.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/DwgHandler.java index 03e86ff20..8a1df8816 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/DwgHandler.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/DwgHandler.java @@ -1,59 +1,59 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.dxfdwg.libs; - -import java.io.File; -import java.io.IOException; -import java.util.List; - -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.DwgFile; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -public class DwgHandler { - - private final DwgFile dwgFile; - private GeometryTranslator gTranslator; - - public DwgHandler( File dxfFile, CoordinateReferenceSystem crs ) { - this.dwgFile = new DwgFile(dxfFile.getAbsolutePath()); - gTranslator = new GeometryTranslator(crs); - } - - public DwgReader getDwgReader() throws Exception { - DwgReader dwgReader = new DwgReader(dwgFile, gTranslator); - return dwgReader; - } - - public List getLayerTypes() throws Exception { - dwgFile.read(); - dwgFile.initializeLayerTable(); - dwgFile.calculateGisModelDwgPolylines(); - dwgFile.applyExtrusions(); - dwgFile.testDwg3D(); - dwgFile.blockManagement(); - - List layerNames = dwgFile.getLayerNames(); - if (layerNames.size() < 1) { - throw new IOException("No layer found in the file."); - } - - return layerNames; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.dxfdwg.libs; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.DwgFile; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +public class DwgHandler { + + private final DwgFile dwgFile; + private GeometryTranslator gTranslator; + + public DwgHandler( File dxfFile, CoordinateReferenceSystem crs ) { + this.dwgFile = new DwgFile(dxfFile.getAbsolutePath()); + gTranslator = new GeometryTranslator(crs); + } + + public DwgReader getDwgReader() throws Exception { + DwgReader dwgReader = new DwgReader(dwgFile, gTranslator); + return dwgReader; + } + + public List getLayerTypes() throws Exception { + dwgFile.read(); + dwgFile.initializeLayerTable(); + dwgFile.calculateGisModelDwgPolylines(); + dwgFile.applyExtrusions(); + dwgFile.testDwg3D(); + dwgFile.blockManagement(); + + List layerNames = dwgFile.getLayerNames(); + if (layerNames.size() < 1) { + throw new IOException("No layer found in the file."); + } + + return layerNames; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/GeometryTranslator.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/GeometryTranslator.java index e9a687d06..706d03238 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/GeometryTranslator.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/GeometryTranslator.java @@ -1,359 +1,359 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.dxfdwg.libs; - -import java.awt.geom.Point2D; - -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgArc; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgAttrib; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgCircle; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgLine; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgLwPolyline; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgMText; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgPoint; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgPolyline2D; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgPolyline3D; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgSolid; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgText; -import org.jgrasstools.gears.io.dxfdwg.libs.dwg.utils.GisModelCurveCalculator; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateList; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.LinearRing; -import com.vividsolutions.jts.geom.MultiPoint; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.Polygon; - -public class GeometryTranslator { - private static GeometryFactory gF = new GeometryFactory(); - private final CoordinateReferenceSystem crs; - public GeometryTranslator( CoordinateReferenceSystem crs ) { - this.crs = crs; - } - - /** - * Builds a point feature from a dwg text. - */ - public SimpleFeature convertDwgMText( String typeName, String layerName, DwgMText text, int id ) { - double[] p = text.getInsertionPoint(); - Point2D pto = new Point2D.Double(p[0], p[1]); - Coordinate coord = new Coordinate(pto.getX(), pto.getY(), 0.0); - String textString = text.getText(); - - return createPointTextFeature(typeName, layerName, id, coord, textString); - } - - /** - * Builds a point feature from a dwg text. - * - */ - public SimpleFeature convertDwgText( String typeName, String layerName, DwgText text, int id ) { - Point2D pto = text.getInsertionPoint(); - Coordinate coord = new Coordinate(pto.getX(), pto.getY(), 0.0); - String textString = text.getText(); - - return createPointTextFeature(typeName, layerName, id, coord, textString); - } - - /** - * Builds a point feature from a dwg attribute. - */ - public SimpleFeature convertDwgAttribute( String typeName, String layerName, - DwgAttrib attribute, int id ) { - - Point2D pto = attribute.getInsertionPoint(); - Coordinate coord = new Coordinate(pto.getX(), pto.getY(), attribute.getElevation()); - String textString = attribute.getText(); - - return createPointTextFeature(typeName, layerName, id, coord, textString); - } - - private SimpleFeature createPointTextFeature( String typeName, String layerName, int id, - Coordinate coord, String textString ) { - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName(typeName); - b.setCRS(crs); - b.add("the_geom", Point.class); - b.add("text", String.class); - b.add("layer", String.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - Geometry point = gF.createPoint(coord); - Object[] values = new Object[]{point, textString, layerName}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(typeName + "." + id); - return feature; - } - - /** - * Builds a line feature from a dwg polyline 3D. - * - * TODO handle these as contourlines - * - */ - public SimpleFeature convertDwgPolyline3D( String typeName, String layerName, - DwgPolyline3D polyline3d, int id ) { - double[][] ptos = polyline3d.getPts(); - CoordinateList coordList = new CoordinateList(); - if (ptos != null) { - for( int j = 0; j < ptos.length; j++ ) { - Coordinate coord = new Coordinate(ptos[j][0], ptos[j][1], ptos[j][2]); - coordList.add(coord); - } - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName(typeName); - b.setCRS(crs); - b.add("the_geom", LineString.class); - b.add("layer", String.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - Geometry lineString = gF.createLineString(coordList.toCoordinateArray()); - Object[] values = new Object[]{lineString, layerName}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(typeName + "." + id); - return feature; - } - return null; - } - - /** - * Builds a line feature from a dwg polyline 2D. - * - */ - public SimpleFeature convertDwgPolyline2D( String typeName, String layerName, - DwgPolyline2D polyline2d, int id ) { - Point2D[] ptos = polyline2d.getPts(); - CoordinateList coordList = new CoordinateList(); - if (ptos != null) { - for( int j = 0; j < ptos.length; j++ ) { - Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY(), 0.0); - coordList.add(coord); - } - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName(typeName); - b.setCRS(crs); - b.add("the_geom", LineString.class); - b.add("layer", String.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - Geometry lineString = gF.createLineString(coordList.toCoordinateArray()); - Object[] values = new Object[]{lineString, layerName}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(typeName + "." + id); - return feature; - } - return null; - } - - /** - * Builds a line feature from a dwg polyline 2D. - * - */ - public SimpleFeature convertDwgLwPolyline( String typeName, String layerName, - DwgLwPolyline lwPolyline, int id ) { - Point2D[] ptos = lwPolyline.getVertices(); - if (ptos != null) { - CoordinateList coordList = new CoordinateList(); - for( int j = 0; j < ptos.length; j++ ) { - Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY(), 0.0); - coordList.add(coord); - } - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName(typeName); - b.setCRS(crs); - b.add("the_geom", LineString.class); - b.add("layer", String.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - Geometry lineString = gF.createLineString(coordList.toCoordinateArray()); - Object[] values = new Object[]{lineString, layerName}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(typeName + "." + id); - return feature; - } - return null; - } - - /** - * Builds a point feature from a dwg point. - */ - public SimpleFeature convertDwgPoint( String typeName, String layerName, DwgPoint point, int id ) { - double[] p = point.getPoint(); - Point2D pto = new Point2D.Double(p[0], p[1]); - - CoordinateList coordList = new CoordinateList(); - Coordinate coord = new Coordinate(pto.getX(), pto.getY(), 0.0); - coordList.add(coord); - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName(typeName); - b.setCRS(crs); - b.add("the_geom", MultiPoint.class); - b.add("layer", String.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - Geometry points = gF.createMultiPoint(coordList.toCoordinateArray()); - Object[] values = new Object[]{points, layerName}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(typeName + "." + id); - return feature; - } - - /** - * Builds a line feature from a dwg line. - * - */ - public SimpleFeature convertDwgLine( String typeName, String layerName, DwgLine line, int id ) { - double[] p1 = line.getP1(); - double[] p2 = line.getP2(); - Point2D[] ptos = new Point2D[]{new Point2D.Double(p1[0], p1[1]), - new Point2D.Double(p2[0], p2[1])}; - CoordinateList coordList = new CoordinateList(); - for( int j = 0; j < ptos.length; j++ ) { - Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY(), 0.0); - coordList.add(coord); - } - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName(typeName); - b.setCRS(crs); - b.add("the_geom", LineString.class); - b.add("layer", String.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - Geometry lineString = gF.createLineString(coordList.toCoordinateArray()); - Object[] values = new Object[]{lineString, layerName}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(typeName + "." + id); - return feature; - } - - /** - * Builds a polygon feature from a dwg circle. - * - */ - public SimpleFeature convertDwgCircle( String typeName, String layerName, DwgCircle circle, - int id ) { - double[] center = circle.getCenter(); - double radius = circle.getRadius(); - Point2D[] ptos = GisModelCurveCalculator.calculateGisModelCircle(new Point2D.Double( - center[0], center[1]), radius); - CoordinateList coordList = new CoordinateList(); - for( int j = 0; j < ptos.length; j++ ) { - Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY(), 0.0); - coordList.add(coord); - } - // close to create a polygon - if ((ptos[ptos.length - 1].getX() != ptos[0].getX()) - || (ptos[ptos.length - 1].getY() != ptos[0].getY())) { - Coordinate coord = new Coordinate(ptos[0].getX(), ptos[0].getY(), 0.0); - coordList.add(coord); - } - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName(typeName); - b.setCRS(crs); - b.add("the_geom", Polygon.class); - b.add("layer", String.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - LinearRing linearRing = gF.createLinearRing(coordList.toCoordinateArray()); - Geometry polygon = gF.createPolygon(linearRing, null); - Object[] values = new Object[]{polygon, layerName}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(typeName + "." + id); - return feature; - } - - /** - * Builds a polygon feature from a dwg solid. - * - */ - public SimpleFeature convertDwgSolid( String typeName, String layerName, DwgSolid solid, int id ) { - double[] p1 = solid.getCorner1(); - double[] p2 = solid.getCorner2(); - double[] p3 = solid.getCorner3(); - double[] p4 = solid.getCorner4(); - Point2D[] ptos = new Point2D[]{new Point2D.Double(p1[0], p1[1]), - new Point2D.Double(p2[0], p2[1]), new Point2D.Double(p3[0], p3[1]), - new Point2D.Double(p4[0], p4[1])}; - CoordinateList coordList = new CoordinateList(); - for( int j = 0; j < ptos.length; j++ ) { - Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY()); - coordList.add(coord); - } - coordList.closeRing(); - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName(typeName); - b.setCRS(crs); - b.add("the_geom", Polygon.class); - b.add("layer", String.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - LinearRing linearRing = gF.createLinearRing(coordList.toCoordinateArray()); - Geometry polygon = gF.createPolygon(linearRing, null); - Object[] values = new Object[]{polygon, layerName}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(typeName + "." + id); - return feature; - } - - /** - * Builds a line feature from a dwg arc. - */ - public SimpleFeature convertDwgArc( String typeName, String layerName, DwgArc arc, int id ) { - double[] c = arc.getCenter(); - Point2D center = new Point2D.Double(c[0], c[1]); - double radius = (arc).getRadius(); - double initAngle = Math.toDegrees((arc).getInitAngle()); - double endAngle = Math.toDegrees((arc).getEndAngle()); - Point2D[] ptos = GisModelCurveCalculator.calculateGisModelArc(center, radius, initAngle, - endAngle); - CoordinateList coordList = new CoordinateList(); - for( int j = 0; j < ptos.length; j++ ) { - Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY(), 0.0); - coordList.add(coord); - } - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName(typeName); - b.setCRS(crs); - b.add("the_geom", LineString.class); - b.add("layer", String.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - Geometry lineString = gF.createLineString(coordList.toCoordinateArray()); - Object[] values = new Object[]{lineString, layerName}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(typeName + "." + id); - return feature; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.dxfdwg.libs; + +import java.awt.geom.Point2D; + +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgArc; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgAttrib; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgCircle; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgLine; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgLwPolyline; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgMText; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgPoint; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgPolyline2D; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgPolyline3D; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgSolid; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.objects.DwgText; +import org.jgrasstools.gears.io.dxfdwg.libs.dwg.utils.GisModelCurveCalculator; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateList; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.MultiPoint; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; + +public class GeometryTranslator { + private static GeometryFactory gF = new GeometryFactory(); + private final CoordinateReferenceSystem crs; + public GeometryTranslator( CoordinateReferenceSystem crs ) { + this.crs = crs; + } + + /** + * Builds a point feature from a dwg text. + */ + public SimpleFeature convertDwgMText( String typeName, String layerName, DwgMText text, int id ) { + double[] p = text.getInsertionPoint(); + Point2D pto = new Point2D.Double(p[0], p[1]); + Coordinate coord = new Coordinate(pto.getX(), pto.getY(), 0.0); + String textString = text.getText(); + + return createPointTextFeature(typeName, layerName, id, coord, textString); + } + + /** + * Builds a point feature from a dwg text. + * + */ + public SimpleFeature convertDwgText( String typeName, String layerName, DwgText text, int id ) { + Point2D pto = text.getInsertionPoint(); + Coordinate coord = new Coordinate(pto.getX(), pto.getY(), 0.0); + String textString = text.getText(); + + return createPointTextFeature(typeName, layerName, id, coord, textString); + } + + /** + * Builds a point feature from a dwg attribute. + */ + public SimpleFeature convertDwgAttribute( String typeName, String layerName, + DwgAttrib attribute, int id ) { + + Point2D pto = attribute.getInsertionPoint(); + Coordinate coord = new Coordinate(pto.getX(), pto.getY(), attribute.getElevation()); + String textString = attribute.getText(); + + return createPointTextFeature(typeName, layerName, id, coord, textString); + } + + private SimpleFeature createPointTextFeature( String typeName, String layerName, int id, + Coordinate coord, String textString ) { + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName(typeName); + b.setCRS(crs); + b.add("the_geom", Point.class); + b.add("text", String.class); + b.add("layer", String.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + Geometry point = gF.createPoint(coord); + Object[] values = new Object[]{point, textString, layerName}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(typeName + "." + id); + return feature; + } + + /** + * Builds a line feature from a dwg polyline 3D. + * + * TODO handle these as contourlines + * + */ + public SimpleFeature convertDwgPolyline3D( String typeName, String layerName, + DwgPolyline3D polyline3d, int id ) { + double[][] ptos = polyline3d.getPts(); + CoordinateList coordList = new CoordinateList(); + if (ptos != null) { + for( int j = 0; j < ptos.length; j++ ) { + Coordinate coord = new Coordinate(ptos[j][0], ptos[j][1], ptos[j][2]); + coordList.add(coord); + } + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName(typeName); + b.setCRS(crs); + b.add("the_geom", LineString.class); + b.add("layer", String.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + Geometry lineString = gF.createLineString(coordList.toCoordinateArray()); + Object[] values = new Object[]{lineString, layerName}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(typeName + "." + id); + return feature; + } + return null; + } + + /** + * Builds a line feature from a dwg polyline 2D. + * + */ + public SimpleFeature convertDwgPolyline2D( String typeName, String layerName, + DwgPolyline2D polyline2d, int id ) { + Point2D[] ptos = polyline2d.getPts(); + CoordinateList coordList = new CoordinateList(); + if (ptos != null) { + for( int j = 0; j < ptos.length; j++ ) { + Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY(), 0.0); + coordList.add(coord); + } + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName(typeName); + b.setCRS(crs); + b.add("the_geom", LineString.class); + b.add("layer", String.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + Geometry lineString = gF.createLineString(coordList.toCoordinateArray()); + Object[] values = new Object[]{lineString, layerName}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(typeName + "." + id); + return feature; + } + return null; + } + + /** + * Builds a line feature from a dwg polyline 2D. + * + */ + public SimpleFeature convertDwgLwPolyline( String typeName, String layerName, + DwgLwPolyline lwPolyline, int id ) { + Point2D[] ptos = lwPolyline.getVertices(); + if (ptos != null) { + CoordinateList coordList = new CoordinateList(); + for( int j = 0; j < ptos.length; j++ ) { + Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY(), 0.0); + coordList.add(coord); + } + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName(typeName); + b.setCRS(crs); + b.add("the_geom", LineString.class); + b.add("layer", String.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + Geometry lineString = gF.createLineString(coordList.toCoordinateArray()); + Object[] values = new Object[]{lineString, layerName}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(typeName + "." + id); + return feature; + } + return null; + } + + /** + * Builds a point feature from a dwg point. + */ + public SimpleFeature convertDwgPoint( String typeName, String layerName, DwgPoint point, int id ) { + double[] p = point.getPoint(); + Point2D pto = new Point2D.Double(p[0], p[1]); + + CoordinateList coordList = new CoordinateList(); + Coordinate coord = new Coordinate(pto.getX(), pto.getY(), 0.0); + coordList.add(coord); + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName(typeName); + b.setCRS(crs); + b.add("the_geom", MultiPoint.class); + b.add("layer", String.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + Geometry points = gF.createMultiPoint(coordList.toCoordinateArray()); + Object[] values = new Object[]{points, layerName}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(typeName + "." + id); + return feature; + } + + /** + * Builds a line feature from a dwg line. + * + */ + public SimpleFeature convertDwgLine( String typeName, String layerName, DwgLine line, int id ) { + double[] p1 = line.getP1(); + double[] p2 = line.getP2(); + Point2D[] ptos = new Point2D[]{new Point2D.Double(p1[0], p1[1]), + new Point2D.Double(p2[0], p2[1])}; + CoordinateList coordList = new CoordinateList(); + for( int j = 0; j < ptos.length; j++ ) { + Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY(), 0.0); + coordList.add(coord); + } + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName(typeName); + b.setCRS(crs); + b.add("the_geom", LineString.class); + b.add("layer", String.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + Geometry lineString = gF.createLineString(coordList.toCoordinateArray()); + Object[] values = new Object[]{lineString, layerName}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(typeName + "." + id); + return feature; + } + + /** + * Builds a polygon feature from a dwg circle. + * + */ + public SimpleFeature convertDwgCircle( String typeName, String layerName, DwgCircle circle, + int id ) { + double[] center = circle.getCenter(); + double radius = circle.getRadius(); + Point2D[] ptos = GisModelCurveCalculator.calculateGisModelCircle(new Point2D.Double( + center[0], center[1]), radius); + CoordinateList coordList = new CoordinateList(); + for( int j = 0; j < ptos.length; j++ ) { + Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY(), 0.0); + coordList.add(coord); + } + // close to create a polygon + if ((ptos[ptos.length - 1].getX() != ptos[0].getX()) + || (ptos[ptos.length - 1].getY() != ptos[0].getY())) { + Coordinate coord = new Coordinate(ptos[0].getX(), ptos[0].getY(), 0.0); + coordList.add(coord); + } + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName(typeName); + b.setCRS(crs); + b.add("the_geom", Polygon.class); + b.add("layer", String.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + LinearRing linearRing = gF.createLinearRing(coordList.toCoordinateArray()); + Geometry polygon = gF.createPolygon(linearRing, null); + Object[] values = new Object[]{polygon, layerName}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(typeName + "." + id); + return feature; + } + + /** + * Builds a polygon feature from a dwg solid. + * + */ + public SimpleFeature convertDwgSolid( String typeName, String layerName, DwgSolid solid, int id ) { + double[] p1 = solid.getCorner1(); + double[] p2 = solid.getCorner2(); + double[] p3 = solid.getCorner3(); + double[] p4 = solid.getCorner4(); + Point2D[] ptos = new Point2D[]{new Point2D.Double(p1[0], p1[1]), + new Point2D.Double(p2[0], p2[1]), new Point2D.Double(p3[0], p3[1]), + new Point2D.Double(p4[0], p4[1])}; + CoordinateList coordList = new CoordinateList(); + for( int j = 0; j < ptos.length; j++ ) { + Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY()); + coordList.add(coord); + } + coordList.closeRing(); + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName(typeName); + b.setCRS(crs); + b.add("the_geom", Polygon.class); + b.add("layer", String.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + LinearRing linearRing = gF.createLinearRing(coordList.toCoordinateArray()); + Geometry polygon = gF.createPolygon(linearRing, null); + Object[] values = new Object[]{polygon, layerName}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(typeName + "." + id); + return feature; + } + + /** + * Builds a line feature from a dwg arc. + */ + public SimpleFeature convertDwgArc( String typeName, String layerName, DwgArc arc, int id ) { + double[] c = arc.getCenter(); + Point2D center = new Point2D.Double(c[0], c[1]); + double radius = (arc).getRadius(); + double initAngle = Math.toDegrees((arc).getInitAngle()); + double endAngle = Math.toDegrees((arc).getEndAngle()); + Point2D[] ptos = GisModelCurveCalculator.calculateGisModelArc(center, radius, initAngle, + endAngle); + CoordinateList coordList = new CoordinateList(); + for( int j = 0; j < ptos.length; j++ ) { + Coordinate coord = new Coordinate(ptos[j].getX(), ptos[j].getY(), 0.0); + coordList.add(coord); + } + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName(typeName); + b.setCRS(crs); + b.add("the_geom", LineString.class); + b.add("layer", String.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + Geometry lineString = gF.createLineString(coordList.toCoordinateArray()); + Object[] values = new Object[]{lineString, layerName}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(typeName + "." + id); + return feature; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DXFDriverConfiguration.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DXFDriverConfiguration.java index 123f9d075..e885f0741 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DXFDriverConfiguration.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DXFDriverConfiguration.java @@ -1,51 +1,51 @@ -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; -///* -// * Library name : dxf -// * (C) 2006 Micha�l Michaud -// * -// * This program is free software; you can redistribute it and/or -// * modify it under the terms of the GNU General Public License -// * as published by the Free Software Foundation; either version 2 -// * of the License, or (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// * -// * For more information, contact: -// * -// * michael.michaud@free.fr -// * -// */ -// -//package fr.michaelm.jump.drivers.dxf; -// -//import com.vividsolutions.jump.workbench.plugin.Extension; -//import com.vividsolutions.jump.workbench.plugin.PlugInContext; -// -///** -// * This is the entry class to declare the dxf driver to JUMP. -// * You can put the <extension>drivers.dxf.DXFDriverConfiguration</extension> -// * element in the workbench-properties.xml file or put the .jar file containing -// * the driver in the ext directory of your installation. -// * @author Micha�l Michaud -// * @version 0.5 -// */ -//// History -//// 0.4 (2006-10-15) : makes it possible to export any JUMP layer (in 0.3, -//// layers which were not issued from a dxf file could not be -//// exported because it misses some attributes). -//// 0.3 (2003-12-10) -//// 0.2 -//public class DXFDriverConfiguration extends Extension { -// public void configure(PlugInContext context) throws Exception { -// new InstallDXFDataSourceQueryChooserPlugIn().initialize(context); -// } -// public String getName() {return "DXF driver";} -// public String getVersion() {return "0.6";} -// } +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; +///* +// * Library name : dxf +// * (C) 2006 Micha�l Michaud +// * +// * This program is free software; you can redistribute it and/or +// * modify it under the terms of the GNU General Public License +// * as published by the Free Software Foundation; either version 2 +// * of the License, or (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// * +// * For more information, contact: +// * +// * michael.michaud@free.fr +// * +// */ +// +//package fr.michaelm.jump.drivers.dxf; +// +//import com.vividsolutions.jump.workbench.plugin.Extension; +//import com.vividsolutions.jump.workbench.plugin.PlugInContext; +// +///** +// * This is the entry class to declare the dxf driver to JUMP. +// * You can put the <extension>drivers.dxf.DXFDriverConfiguration</extension> +// * element in the workbench-properties.xml file or put the .jar file containing +// * the driver in the ext directory of your installation. +// * @author Micha�l Michaud +// * @version 0.5 +// */ +//// History +//// 0.4 (2006-10-15) : makes it possible to export any JUMP layer (in 0.3, +//// layers which were not issued from a dxf file could not be +//// exported because it misses some attributes). +//// 0.3 (2003-12-10) +//// 0.2 +//public class DXFDriverConfiguration extends Extension { +// public void configure(PlugInContext context) throws Exception { +// new InstallDXFDataSourceQueryChooserPlugIn().initialize(context); +// } +// public String getName() {return "DXF driver";} +// public String getVersion() {return "0.6";} +// } diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DXFFileReaderWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DXFFileReaderWriter.java index e020ee491..3241b48a2 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DXFFileReaderWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DXFFileReaderWriter.java @@ -1,50 +1,50 @@ -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; -///* -// * Library name : dxf -// * (C) 2006 Micha�l Michaud -// * -// * This program is free software; you can redistribute it and/or -// * modify it under the terms of the GNU General Public License -// * as published by the Free Software Foundation; either version 2 -// * of the License, or (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// * -// * For more information, contact: -// * -// * michael.michaud@free.fr -// * -// */ -// -//package fr.michaelm.jump.drivers.dxf; -// -//import java.util.Arrays; -//import java.util.Collection; -// -//import com.vividsolutions.jump.feature.FeatureCollection; -//import com.vividsolutions.jump.io.DriverProperties; -//import com.vividsolutions.jump.io.datasource.StandardReaderWriterFileDataSource; -//import com.vividsolutions.jump.util.Block; -//import com.vividsolutions.jump.util.CollectionUtil; -//import com.vividsolutions.jump.util.LangUtil; -//import com.vividsolutions.jump.workbench.datasource.GMLDataSourceQueryChooserInstaller; -//import com.vividsolutions.jump.workbench.datasource.InstallStandardDataSourceQueryChoosersPlugIn; -// -///** -// * DXF driver containg a DXFReader and a DXFWriter. -// * @author Micha�l Michaud -// * @version 0.5 -// */ -//public class DXFFileReaderWriter extends StandardReaderWriterFileDataSource { -// public DXFFileReaderWriter() { -// super(new DxfReader(), new DxfWriter(), new String[] { "DXF" }); -// } -//} - +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; +///* +// * Library name : dxf +// * (C) 2006 Micha�l Michaud +// * +// * This program is free software; you can redistribute it and/or +// * modify it under the terms of the GNU General Public License +// * as published by the Free Software Foundation; either version 2 +// * of the License, or (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// * +// * For more information, contact: +// * +// * michael.michaud@free.fr +// * +// */ +// +//package fr.michaelm.jump.drivers.dxf; +// +//import java.util.Arrays; +//import java.util.Collection; +// +//import com.vividsolutions.jump.feature.FeatureCollection; +//import com.vividsolutions.jump.io.DriverProperties; +//import com.vividsolutions.jump.io.datasource.StandardReaderWriterFileDataSource; +//import com.vividsolutions.jump.util.Block; +//import com.vividsolutions.jump.util.CollectionUtil; +//import com.vividsolutions.jump.util.LangUtil; +//import com.vividsolutions.jump.workbench.datasource.GMLDataSourceQueryChooserInstaller; +//import com.vividsolutions.jump.workbench.datasource.InstallStandardDataSourceQueryChoosersPlugIn; +// +///** +// * DXF driver containg a DXFReader and a DXFWriter. +// * @author Micha�l Michaud +// * @version 0.5 +// */ +//public class DXFFileReaderWriter extends StandardReaderWriterFileDataSource { +// public DXFFileReaderWriter() { +// super(new DxfReader(), new DxfWriter(), new String[] { "DXF" }); +// } +//} + diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfBLOCKS.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfBLOCKS.java index 145a71d95..10b045053 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfBLOCKS.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfBLOCKS.java @@ -1,106 +1,106 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.IOException; -import java.io.RandomAccessFile; - -import org.geotools.feature.FeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -/** - * A DXF block contains a block of geometries. The dxf driver can read entities - * inside a block, but it will not remember that the entities are in a same - * block. - * @author Micha�l Michaud - * @version 0.5.0 - */ -@SuppressWarnings("nls") -public class DxfBLOCKS { - // final static FeatureSchema DXF_SCHEMA = new FeatureSchema(); - FeatureCollection pointEntities; - FeatureCollection lineEntities; - FeatureCollection polygonEntities; - - public DxfBLOCKS() { - /* - DXF_SCHEMA.addAttribute("GEOMETRY", AttributeType.GEOMETRY); - DXF_SCHEMA.addAttribute("LAYER", AttributeType.STRING); - DXF_SCHEMA.addAttribute("LTYPE", AttributeType.STRING); - DXF_SCHEMA.addAttribute("THICKNESS", AttributeType.DOUBLE); - DXF_SCHEMA.addAttribute("COLOR", AttributeType.INTEGER); - DXF_SCHEMA.addAttribute("TEXT", AttributeType.STRING); - */ - pointEntities = FeatureCollections.newCollection(); - lineEntities = FeatureCollections.newCollection(); - polygonEntities = FeatureCollections.newCollection(); - } - - public static DxfBLOCKS readBlocks( RandomAccessFile raf ) throws IOException { - DxfBLOCKS blocks = new DxfBLOCKS(); - try { - DxfGroup group = null; - while( null != (group = DxfGroup.readGroup(raf)) && !group.equals(DxfFile.ENDSEC) ) { - } - } catch (IOException ioe) { - throw ioe; - } - return blocks; - } - - public static DxfBLOCKS readEntities( RandomAccessFile raf ) throws IOException { - DxfBLOCKS dxfEntities = new DxfBLOCKS(); - try { - DxfGroup group = new DxfGroup(2, "BLOCKS"); - while( !group.equals(DxfFile.ENDSEC) ) { - // System.out.println("Group " + group.getCode() + " " + group.getValue()); - if (group.getCode() == 0) { - if (group.getValue().equals("POINT")) { - group = DxfPOINT.readEntity(raf, dxfEntities.pointEntities); - } else if (group.getValue().equals("TEXT")) { - group = DxfTEXT.readEntity(raf, dxfEntities.pointEntities); - } else if (group.getValue().equals("LINE")) { - group = DxfLINE.readEntity(raf, dxfEntities.lineEntities); - } else if (group.getValue().equals("POLYLINE")) { - group = DxfPOLYLINE.readEntity(raf, dxfEntities.lineEntities); - } else if (group.getValue().equals("TEXT")) { - group = DxfTEXT.readEntity(raf, dxfEntities.pointEntities); - } else { - group = DxfGroup.readGroup(raf); - } - } else { - System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); - group = DxfGroup.readGroup(raf); - } - } - } catch (IOException ioe) { - throw ioe; - } - return dxfEntities; - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.IOException; +import java.io.RandomAccessFile; + +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +/** + * A DXF block contains a block of geometries. The dxf driver can read entities + * inside a block, but it will not remember that the entities are in a same + * block. + * @author Micha�l Michaud + * @version 0.5.0 + */ +@SuppressWarnings("nls") +public class DxfBLOCKS { + // final static FeatureSchema DXF_SCHEMA = new FeatureSchema(); + FeatureCollection pointEntities; + FeatureCollection lineEntities; + FeatureCollection polygonEntities; + + public DxfBLOCKS() { + /* + DXF_SCHEMA.addAttribute("GEOMETRY", AttributeType.GEOMETRY); + DXF_SCHEMA.addAttribute("LAYER", AttributeType.STRING); + DXF_SCHEMA.addAttribute("LTYPE", AttributeType.STRING); + DXF_SCHEMA.addAttribute("THICKNESS", AttributeType.DOUBLE); + DXF_SCHEMA.addAttribute("COLOR", AttributeType.INTEGER); + DXF_SCHEMA.addAttribute("TEXT", AttributeType.STRING); + */ + pointEntities = FeatureCollections.newCollection(); + lineEntities = FeatureCollections.newCollection(); + polygonEntities = FeatureCollections.newCollection(); + } + + public static DxfBLOCKS readBlocks( RandomAccessFile raf ) throws IOException { + DxfBLOCKS blocks = new DxfBLOCKS(); + try { + DxfGroup group = null; + while( null != (group = DxfGroup.readGroup(raf)) && !group.equals(DxfFile.ENDSEC) ) { + } + } catch (IOException ioe) { + throw ioe; + } + return blocks; + } + + public static DxfBLOCKS readEntities( RandomAccessFile raf ) throws IOException { + DxfBLOCKS dxfEntities = new DxfBLOCKS(); + try { + DxfGroup group = new DxfGroup(2, "BLOCKS"); + while( !group.equals(DxfFile.ENDSEC) ) { + // System.out.println("Group " + group.getCode() + " " + group.getValue()); + if (group.getCode() == 0) { + if (group.getValue().equals("POINT")) { + group = DxfPOINT.readEntity(raf, dxfEntities.pointEntities); + } else if (group.getValue().equals("TEXT")) { + group = DxfTEXT.readEntity(raf, dxfEntities.pointEntities); + } else if (group.getValue().equals("LINE")) { + group = DxfLINE.readEntity(raf, dxfEntities.lineEntities); + } else if (group.getValue().equals("POLYLINE")) { + group = DxfPOLYLINE.readEntity(raf, dxfEntities.lineEntities); + } else if (group.getValue().equals("TEXT")) { + group = DxfTEXT.readEntity(raf, dxfEntities.pointEntities); + } else { + group = DxfGroup.readGroup(raf); + } + } else { + System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); + group = DxfGroup.readGroup(raf); + } + } + } catch (IOException ioe) { + throw ioe; + } + return dxfEntities; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfCLASSES.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfCLASSES.java index 5dd57a893..984ebc19b 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfCLASSES.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfCLASSES.java @@ -1,60 +1,60 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.InputStreamReader; -import java.io.IOException; -import java.util.Map; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.ArrayList; -import java.util.Iterator; - -/** - * Dxf section between the HEADER and the TABLES sections. - * Not mandatory for DXF 12, don't use it. - */ -public class DxfCLASSES { - - public DxfCLASSES() {} - - public static DxfCLASSES readClasses(RandomAccessFile raf) throws IOException { - DxfCLASSES classes = new DxfCLASSES(); - try { - DxfGroup group = null; - while (null != (group = DxfGroup.readGroup(raf)) && - !group.equals(DxfFile.ENDSEC)) {} - } catch(IOException ioe) {throw ioe;} - return classes; - } - - public String toString() { - StringBuffer sb = new StringBuffer(DxfFile.SECTION.toString()); - sb.append(DxfFile.CLASSES.toString()); - sb.append(DxfFile.ENDSEC.toString()); - return sb.toString(); - } -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.InputStreamReader; +import java.io.IOException; +import java.util.Map; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.ArrayList; +import java.util.Iterator; + +/** + * Dxf section between the HEADER and the TABLES sections. + * Not mandatory for DXF 12, don't use it. + */ +public class DxfCLASSES { + + public DxfCLASSES() {} + + public static DxfCLASSES readClasses(RandomAccessFile raf) throws IOException { + DxfCLASSES classes = new DxfCLASSES(); + try { + DxfGroup group = null; + while (null != (group = DxfGroup.readGroup(raf)) && + !group.equals(DxfFile.ENDSEC)) {} + } catch(IOException ioe) {throw ioe;} + return classes; + } + + public String toString() { + StringBuffer sb = new StringBuffer(DxfFile.SECTION.toString()); + sb.append(DxfFile.CLASSES.toString()); + sb.append(DxfFile.ENDSEC.toString()); + return sb.toString(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfENTITIES.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfENTITIES.java index 0ab91096a..3e22acfe6 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfENTITIES.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfENTITIES.java @@ -1,121 +1,121 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.BufferedWriter; -import java.io.IOException; -import java.util.Map; -import java.util.List; -import java.util.ArrayList; -import java.util.Iterator; - -import org.geotools.feature.FeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -/** - * The ENTITIES section of a DXF file containing all data itself - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -@SuppressWarnings("nls") -public class DxfENTITIES { - FeatureCollection pointEntities; - FeatureCollection lineEntities; - FeatureCollection polygonEntities; - - public DxfENTITIES() { - pointEntities = FeatureCollections.newCollection(); - lineEntities = FeatureCollections.newCollection(); - polygonEntities = FeatureCollections.newCollection(); - } - - public static DxfENTITIES readEntities( RandomAccessFile raf ) throws IOException { - DxfENTITIES dxfEntities = new DxfENTITIES(); - try { - DxfGroup group = new DxfGroup(2, "ENTITIES"); - String nomVariable; - while( !group.equals(DxfFile.ENDSEC) ) { - // System.out.println("Group " + group.getCode() + " " + group.getValue()); - if (group.getCode() == 0) { - if (group.getValue().equals("POINT")) { - group = DxfPOINT.readEntity(raf, dxfEntities.pointEntities); - } else if (group.getValue().equals("TEXT")) { - group = DxfTEXT.readEntity(raf, dxfEntities.pointEntities); - } else if (group.getValue().equals("LINE")) { - group = DxfLINE.readEntity(raf, dxfEntities.lineEntities); - } else if (group.getValue().equals("POLYLINE")) { - group = DxfPOLYLINE.readEntity(raf, dxfEntities.lineEntities); - } else if (group.getValue().equals("LWPOLYLINE")) { - group = DxfLWPOLYLINE.readEntity(raf, dxfEntities.lineEntities); - } else { - group = DxfGroup.readGroup(raf); - } - } else { - System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); - group = DxfGroup.readGroup(raf); - } - } - } catch (IOException ioe) { - throw ioe; - } - return dxfEntities; - } - - // public String toString() { - // Iterator it = entities.iterator(); - // Feature feature; - // StringBuffer sb = new StringBuffer(DxfFile.SECTION.toString()); - // sb.append(DxfFile.ENTITIES.toString()); - // while( it.hasNext() ) { - // feature = (Feature) it.next(); - // sb.append(DxfENTITY.feature2Dxf(feature, "LAYER0", true)); - // } - // sb.append(DxfFile.ENDSEC.toString()); - // return sb.toString(); - // } - // - // public void write( BufferedWriter bw, String defaultLayer ) throws IOException { - // Iterator it = entities.iterator(); - // Feature feature; - // StringBuffer sb = new StringBuffer(DxfFile.SECTION.toString()); - // sb.append(DxfFile.ENTITIES.toString()); - // try { - // bw.write(sb.toString()); - // while( it.hasNext() ) { - // feature = (Feature) it.next(); - // bw.write(DxfENTITY.feature2Dxf(feature, defaultLayer, true)); - // } - // sb.append(DxfFile.ENDSEC.toString()); - // bw.write(DxfFile.ENDSEC.toString()); - // } catch (IOException ioe) { - // throw ioe; - // } - // } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.BufferedWriter; +import java.io.IOException; +import java.util.Map; +import java.util.List; +import java.util.ArrayList; +import java.util.Iterator; + +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +/** + * The ENTITIES section of a DXF file containing all data itself + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +@SuppressWarnings("nls") +public class DxfENTITIES { + FeatureCollection pointEntities; + FeatureCollection lineEntities; + FeatureCollection polygonEntities; + + public DxfENTITIES() { + pointEntities = FeatureCollections.newCollection(); + lineEntities = FeatureCollections.newCollection(); + polygonEntities = FeatureCollections.newCollection(); + } + + public static DxfENTITIES readEntities( RandomAccessFile raf ) throws IOException { + DxfENTITIES dxfEntities = new DxfENTITIES(); + try { + DxfGroup group = new DxfGroup(2, "ENTITIES"); + String nomVariable; + while( !group.equals(DxfFile.ENDSEC) ) { + // System.out.println("Group " + group.getCode() + " " + group.getValue()); + if (group.getCode() == 0) { + if (group.getValue().equals("POINT")) { + group = DxfPOINT.readEntity(raf, dxfEntities.pointEntities); + } else if (group.getValue().equals("TEXT")) { + group = DxfTEXT.readEntity(raf, dxfEntities.pointEntities); + } else if (group.getValue().equals("LINE")) { + group = DxfLINE.readEntity(raf, dxfEntities.lineEntities); + } else if (group.getValue().equals("POLYLINE")) { + group = DxfPOLYLINE.readEntity(raf, dxfEntities.lineEntities); + } else if (group.getValue().equals("LWPOLYLINE")) { + group = DxfLWPOLYLINE.readEntity(raf, dxfEntities.lineEntities); + } else { + group = DxfGroup.readGroup(raf); + } + } else { + System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); + group = DxfGroup.readGroup(raf); + } + } + } catch (IOException ioe) { + throw ioe; + } + return dxfEntities; + } + + // public String toString() { + // Iterator it = entities.iterator(); + // Feature feature; + // StringBuffer sb = new StringBuffer(DxfFile.SECTION.toString()); + // sb.append(DxfFile.ENTITIES.toString()); + // while( it.hasNext() ) { + // feature = (Feature) it.next(); + // sb.append(DxfENTITY.feature2Dxf(feature, "LAYER0", true)); + // } + // sb.append(DxfFile.ENDSEC.toString()); + // return sb.toString(); + // } + // + // public void write( BufferedWriter bw, String defaultLayer ) throws IOException { + // Iterator it = entities.iterator(); + // Feature feature; + // StringBuffer sb = new StringBuffer(DxfFile.SECTION.toString()); + // sb.append(DxfFile.ENTITIES.toString()); + // try { + // bw.write(sb.toString()); + // while( it.hasNext() ) { + // feature = (Feature) it.next(); + // bw.write(DxfENTITY.feature2Dxf(feature, defaultLayer, true)); + // } + // sb.append(DxfFile.ENDSEC.toString()); + // bw.write(DxfFile.ENDSEC.toString()); + // } catch (IOException ioe) { + // throw ioe; + // } + // } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfENTITY.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfENTITY.java index d2e3c9e5b..86174860f 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfENTITY.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfENTITY.java @@ -1,314 +1,314 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.PrecisionModel; - -/** - * A DXF ENTITY is equivalent to a JUMP feature. This class is the parent class - * for POLYLINE, POINT, LINE and every kind of geometric entity present in a - * DXF file. - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -// 2006-10-19 : add multi-geometry export -// add attribute tests an ability to export ANY jump layer -// add ability to export holes in a separate layer or not -@SuppressWarnings("nls") -public class DxfENTITY { - protected static GeometryFactory gF = new GeometryFactory(); - - public final static DxfGroup LINE = new DxfGroup(0, "LINE"); - public final static DxfGroup POINT = new DxfGroup(0, "POINT"); - public final static DxfGroup CIRCLE = new DxfGroup(0, "CIRCLE"); - public final static DxfGroup ARC = new DxfGroup(0, "ARC"); - public final static DxfGroup TRACE = new DxfGroup(0, "TRACE"); - public final static DxfGroup SOLID = new DxfGroup(0, "SOLID"); - public final static DxfGroup TEXT = new DxfGroup(0, "TEXT"); - public final static DxfGroup SHAPE = new DxfGroup(0, "SHAPE"); - public final static DxfGroup BLOCK = new DxfGroup(0, "BLOCK"); - public final static DxfGroup ENDBLK = new DxfGroup(0, "ENDBLK"); - public final static DxfGroup INSERT = new DxfGroup(0, "INSERT"); - public final static DxfGroup ATTDEF = new DxfGroup(0, "ATTDEF"); - public final static DxfGroup ATTRIB = new DxfGroup(0, "ATTRIB"); - public final static DxfGroup POLYLINE = new DxfGroup(0, "POLYLINE"); - public final static DxfGroup LWPOLYLINE = new DxfGroup(0, "LWPOLYLINE"); - public final static DxfGroup VERTEX = new DxfGroup(0, "VERTEX"); - public final static DxfGroup SEQEND = new DxfGroup(0, "SEQEND"); - public final static DxfGroup _3DFACE = new DxfGroup(0, "3DFACE"); - public final static DxfGroup VIEWPORT = new DxfGroup(0, "VIEWPORT"); - public final static DxfGroup DIMENSION = new DxfGroup(0, "DIMENSION"); - public final static PrecisionModel DPM = new PrecisionModel(); - public static int precision = 3; - - private String layerName = "DEFAULT"; - private String lineType = null; - private float elevation = 0f; - private float thickness = 0f; - private int colorNumber = 256; - private int space = 0; - private double[] extrusionDirection = null; - private int flags = 0; - - public String getLayerName() { - return layerName; - } - - public void setLayerName( String layerName ) { - this.layerName = layerName; - } - - public DxfENTITY( String layerName ) { - this.layerName = layerName; - } - -// public static String feature2Dxf( SimpleFeature feature, String layerName, boolean suffix ) { -// Geometry g = (Geometry) feature.getDefaultGeometry(); -// if (g.getGeometryType().equals("Point")) { -// return point2Dxf(feature, layerName); -// } else if (g.getGeometryType().equals("LineString")) { -// return lineString2Dxf(feature, layerName); -// } else if (g.getGeometryType().equals("Polygon")) { -// return polygon2Dxf(feature, layerName, suffix); -// } else if (g instanceof GeometryCollection) { -// StringBuffer sb = new StringBuffer(); -// for( int i = 0; i < g.getNumGeometries(); i++ ) { -// SimpleFeature ff = SimpleFeatureBuilder.copy(feature); -// ff.setDefaultGeometry(g.getGeometryN(i)); -// sb.append(feature2Dxf(ff, layerName, suffix)); -// } -// return sb.toString(); -// } else { -// return null; -// } -// } -// -// public static String point2Dxf( SimpleFeature feature, String layerName ) { -// StringBuffer sb = null; -// boolean hasText = (feature.getSchema().hasAttribute("TEXT") && !feature -// .getAttribute("TEXT").equals("")); -// if (hasText) { -// sb = new StringBuffer(DxfGroup.toString(0, "TEXT")); -// } else { -// sb = new StringBuffer(DxfGroup.toString(0, "POINT")); -// } -// if (feature.getSchema().hasAttribute("LAYER") -// && !feature.getString("LAYER").trim().equals("")) { -// sb.append(DxfGroup.toString(8, feature.getAttribute("LAYER"))); -// } else { -// sb.append(DxfGroup.toString(8, layerName)); -// } -// if (feature.getSchema().hasAttribute("LTYPE") -// && !feature.getAttribute("LTYPE").equals("BYLAYER")) { -// sb.append(DxfGroup.toString(6, feature.getAttribute("LTYPE"))); -// } -// if (feature.getSchema().hasAttribute("ELEVATION") -// && !feature.getAttribute("ELEVATION").equals(new Float(0f))) { -// sb.append(DxfGroup.toString(38, feature.getAttribute("ELEVATION"))); -// } -// if (feature.getSchema().hasAttribute("THICKNESS") -// && !feature.getAttribute("THICKNESS").equals(new Float(0f))) { -// sb.append(DxfGroup.toString(39, feature.getAttribute("THICKNESS"))); -// } -// if (feature.getSchema().hasAttribute("COLOR") -// && !(((Integer) feature.getAttribute("COLOR")).intValue() == 256)) { -// sb.append(DxfGroup.toString(62, feature.getAttribute("COLOR").toString())); -// } -// Coordinate coord = ((Point) feature.getGeometry()).getCoordinate(); -// sb.append(DxfGroup.toString(10, coord.x, precision)); -// sb.append(DxfGroup.toString(20, coord.y, precision)); -// if (!Double.isNaN(coord.z)) -// sb.append(DxfGroup.toString(30, coord.z, precision)); -// if (feature.getSchema().hasAttribute("TEXT_HEIGHT") -// && !feature.getAttribute("TEXT_HEIGHT").equals(new Float(0f))) { -// sb.append(DxfGroup.toString(40, feature.getAttribute("TEXT_HEIGHT"))); -// } -// if (hasText && feature.getSchema().hasAttribute("TEXT_HEIGHT")) { -// sb.append(DxfGroup.toString(1, feature.getAttribute("TEXT"))); -// } -// if (hasText && feature.getSchema().hasAttribute("TEXT_HEIGHT")) { -// sb.append(DxfGroup.toString(7, feature.getAttribute("TEXT_STYLE"))); -// } -// return sb.toString(); -// } -// -// public static String lineString2Dxf( Feature feature, String layerName ) { -// LineString geom = (LineString) feature.getGeometry(); -// Coordinate[] coords = geom.getCoordinates(); -// // Correction added by L. Becker and R Littlefield on 2006-11-08 -// // It writes 2 points-only polylines in a line instead of a polyline -// // to make it possible to incorporate big dataset in View32 -// boolean isLine = (coords.length == 2); -// StringBuffer sb; -// if (!isLine) { -// sb = new StringBuffer(DxfGroup.toString(0, "POLYLINE")); -// } else { -// sb = new StringBuffer(DxfGroup.toString(0, "LINE")); -// } -// // StringBuffer sb = new StringBuffer(DxfGroup.toString(0, "POLYLINE")); -// if (feature.getSchema().hasAttribute("LAYER") -// && !feature.getString("LAYER").trim().equals("")) { -// sb.append(DxfGroup.toString(8, feature.getAttribute("LAYER"))); -// } else { -// sb.append(DxfGroup.toString(8, layerName)); -// } -// if (feature.getSchema().hasAttribute("LTYPE") -// && !feature.getAttribute("LTYPE").equals("BYLAYER")) { -// sb.append(DxfGroup.toString(6, feature.getAttribute("LTYPE"))); -// } -// if (feature.getSchema().hasAttribute("ELEVATION") -// && !feature.getAttribute("ELEVATION").equals(new Float(0f))) { -// sb.append(DxfGroup.toString(38, feature.getAttribute("ELEVATION"))); -// } -// if (feature.getSchema().hasAttribute("THICKNESS") -// && !feature.getAttribute("THICKNESS").equals(new Float(0f))) { -// sb.append(DxfGroup.toString(39, feature.getAttribute("THICKNESS"))); -// } -// if (feature.getSchema().hasAttribute("COLOR") -// && !(((Integer) feature.getAttribute("COLOR")).intValue() == 256)) { -// sb.append(DxfGroup.toString(62, feature.getAttribute("COLOR").toString())); -// } -// // modified by L. Becker and R. Littlefield (add the Line case) -// if (isLine) { -// sb.append(DxfGroup.toString(10, coords[0].x, precision)); -// sb.append(DxfGroup.toString(20, coords[0].y, precision)); -// if (!Double.isNaN(coords[0].z)) -// sb.append(DxfGroup.toString(30, "0.0")); -// sb.append(DxfGroup.toString(11, coords[1].x, precision)); -// sb.append(DxfGroup.toString(21, coords[1].y, precision)); -// if (!Double.isNaN(coords[1].z)) -// sb.append(DxfGroup.toString(31, "0.0")); -// } else { -// sb.append(DxfGroup.toString(66, 1)); -// sb.append(DxfGroup.toString(10, "0.0")); -// sb.append(DxfGroup.toString(20, "0.0")); -// if (!Double.isNaN(coords[0].z)) -// sb.append(DxfGroup.toString(30, "0.0")); -// sb.append(DxfGroup.toString(70, 8)); -// -// for( int i = 0; i < coords.length; i++ ) { -// sb.append(DxfGroup.toString(0, "VERTEX")); -// if (feature.getSchema().hasAttribute("LAYER") -// && !feature.getString("LAYER").trim().equals("")) { -// sb.append(DxfGroup.toString(8, feature.getAttribute("LAYER"))); -// } else { -// sb.append(DxfGroup.toString(8, layerName)); -// } -// sb.append(DxfGroup.toString(10, coords[i].x, precision)); -// sb.append(DxfGroup.toString(20, coords[i].y, precision)); -// if (!Double.isNaN(coords[i].z)) -// sb.append(DxfGroup.toString(30, coords[i].z, precision)); -// sb.append(DxfGroup.toString(70, 32)); -// } -// sb.append(DxfGroup.toString(0, "SEQEND")); -// } -// return sb.toString(); -// } -// -// public static String polygon2Dxf( Feature feature, String layerName, boolean suffix ) { -// // System.out.println("polygon2Dxf " + suffix); -// Polygon geom = (Polygon) feature.getGeometry(); -// Coordinate[] coords = geom.getExteriorRing().getCoordinates(); -// StringBuffer sb = new StringBuffer(DxfGroup.toString(0, "POLYLINE")); -// sb.append(DxfGroup.toString(8, layerName)); -// if (feature.getSchema().hasAttribute("LTYPE") -// && !feature.getAttribute("LTYPE").equals("BYLAYER")) { -// sb.append(DxfGroup.toString(6, feature.getAttribute("LTYPE"))); -// } -// if (feature.getSchema().hasAttribute("ELEVATION") -// && !feature.getAttribute("ELEVATION").equals(new Float(0f))) { -// sb.append(DxfGroup.toString(38, feature.getAttribute("ELEVATION"))); -// } -// if (feature.getSchema().hasAttribute("THICKNESS") -// && !feature.getAttribute("THICKNESS").equals(new Float(0f))) { -// sb.append(DxfGroup.toString(39, feature.getAttribute("THICKNESS"))); -// } -// if (feature.getSchema().hasAttribute("COLOR") -// && !(((Integer) feature.getAttribute("COLOR")).intValue() == 256)) { -// sb.append(DxfGroup.toString(62, feature.getAttribute("COLOR").toString())); -// } -// sb.append(DxfGroup.toString(66, 1)); -// sb.append(DxfGroup.toString(10, "0.0")); -// sb.append(DxfGroup.toString(20, "0.0")); -// if (!Double.isNaN(coords[0].z)) -// sb.append(DxfGroup.toString(30, "0.0")); -// sb.append(DxfGroup.toString(70, 9)); -// for( int i = 0; i < coords.length; i++ ) { -// sb.append(DxfGroup.toString(0, "VERTEX")); -// sb.append(DxfGroup.toString(8, layerName)); -// sb.append(DxfGroup.toString(10, coords[i].x, precision)); -// sb.append(DxfGroup.toString(20, coords[i].y, precision)); -// if (!Double.isNaN(coords[i].z)) -// sb.append(DxfGroup.toString(30, coords[i].z, precision)); -// sb.append(DxfGroup.toString(70, 32)); -// } -// sb.append(DxfGroup.toString(0, "SEQEND")); -// for( int h = 0; h < geom.getNumInteriorRing(); h++ ) { -// // System.out.println("polygon2Dxf (hole)" + suffix); -// sb.append(DxfGroup.toString(0, "POLYLINE")); -// if (suffix) -// sb.append(DxfGroup.toString(8, layerName + "_")); -// else -// sb.append(DxfGroup.toString(8, layerName)); -// if (feature.getSchema().hasAttribute("LTYPE") -// && !feature.getAttribute("LTYPE").equals("BYLAYER")) { -// sb.append(DxfGroup.toString(6, feature.getAttribute("LTYPE"))); -// } -// if (feature.getSchema().hasAttribute("THICKNESS") -// && !feature.getAttribute("THICKNESS").equals(new Float(0f))) { -// sb.append(DxfGroup.toString(39, feature.getAttribute("THICKNESS"))); -// } -// if (feature.getSchema().hasAttribute("COLOR") -// && !(((Integer) feature.getAttribute("COLOR")).intValue() == 256)) { -// sb.append(DxfGroup.toString(62, feature.getAttribute("COLOR"))); -// } -// sb.append(DxfGroup.toString(66, 1)); -// sb.append(DxfGroup.toString(10, "0.0")); -// sb.append(DxfGroup.toString(20, "0.0")); -// if (!Double.isNaN(coords[0].z)) -// sb.append(DxfGroup.toString(30, "0.0")); -// sb.append(DxfGroup.toString(70, 9)); -// coords = geom.getInteriorRingN(h).getCoordinates(); -// for( int i = 0; i < coords.length; i++ ) { -// sb.append(DxfGroup.toString(0, "VERTEX")); -// if (suffix) -// sb.append(DxfGroup.toString(8, layerName + "_")); -// else -// sb.append(DxfGroup.toString(8, layerName)); -// sb.append(DxfGroup.toString(10, coords[i].x, precision)); -// sb.append(DxfGroup.toString(20, coords[i].y, precision)); -// if (!Double.isNaN(coords[i].z)) -// sb.append(DxfGroup.toString(30, coords[i].z, precision)); -// sb.append(DxfGroup.toString(70, 32)); -// } -// sb.append(DxfGroup.toString(0, "SEQEND")); -// } -// -// return sb.toString(); -// } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.PrecisionModel; + +/** + * A DXF ENTITY is equivalent to a JUMP feature. This class is the parent class + * for POLYLINE, POINT, LINE and every kind of geometric entity present in a + * DXF file. + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +// 2006-10-19 : add multi-geometry export +// add attribute tests an ability to export ANY jump layer +// add ability to export holes in a separate layer or not +@SuppressWarnings("nls") +public class DxfENTITY { + protected static GeometryFactory gF = new GeometryFactory(); + + public final static DxfGroup LINE = new DxfGroup(0, "LINE"); + public final static DxfGroup POINT = new DxfGroup(0, "POINT"); + public final static DxfGroup CIRCLE = new DxfGroup(0, "CIRCLE"); + public final static DxfGroup ARC = new DxfGroup(0, "ARC"); + public final static DxfGroup TRACE = new DxfGroup(0, "TRACE"); + public final static DxfGroup SOLID = new DxfGroup(0, "SOLID"); + public final static DxfGroup TEXT = new DxfGroup(0, "TEXT"); + public final static DxfGroup SHAPE = new DxfGroup(0, "SHAPE"); + public final static DxfGroup BLOCK = new DxfGroup(0, "BLOCK"); + public final static DxfGroup ENDBLK = new DxfGroup(0, "ENDBLK"); + public final static DxfGroup INSERT = new DxfGroup(0, "INSERT"); + public final static DxfGroup ATTDEF = new DxfGroup(0, "ATTDEF"); + public final static DxfGroup ATTRIB = new DxfGroup(0, "ATTRIB"); + public final static DxfGroup POLYLINE = new DxfGroup(0, "POLYLINE"); + public final static DxfGroup LWPOLYLINE = new DxfGroup(0, "LWPOLYLINE"); + public final static DxfGroup VERTEX = new DxfGroup(0, "VERTEX"); + public final static DxfGroup SEQEND = new DxfGroup(0, "SEQEND"); + public final static DxfGroup _3DFACE = new DxfGroup(0, "3DFACE"); + public final static DxfGroup VIEWPORT = new DxfGroup(0, "VIEWPORT"); + public final static DxfGroup DIMENSION = new DxfGroup(0, "DIMENSION"); + public final static PrecisionModel DPM = new PrecisionModel(); + public static int precision = 3; + + private String layerName = "DEFAULT"; + private String lineType = null; + private float elevation = 0f; + private float thickness = 0f; + private int colorNumber = 256; + private int space = 0; + private double[] extrusionDirection = null; + private int flags = 0; + + public String getLayerName() { + return layerName; + } + + public void setLayerName( String layerName ) { + this.layerName = layerName; + } + + public DxfENTITY( String layerName ) { + this.layerName = layerName; + } + +// public static String feature2Dxf( SimpleFeature feature, String layerName, boolean suffix ) { +// Geometry g = (Geometry) feature.getDefaultGeometry(); +// if (g.getGeometryType().equals("Point")) { +// return point2Dxf(feature, layerName); +// } else if (g.getGeometryType().equals("LineString")) { +// return lineString2Dxf(feature, layerName); +// } else if (g.getGeometryType().equals("Polygon")) { +// return polygon2Dxf(feature, layerName, suffix); +// } else if (g instanceof GeometryCollection) { +// StringBuffer sb = new StringBuffer(); +// for( int i = 0; i < g.getNumGeometries(); i++ ) { +// SimpleFeature ff = SimpleFeatureBuilder.copy(feature); +// ff.setDefaultGeometry(g.getGeometryN(i)); +// sb.append(feature2Dxf(ff, layerName, suffix)); +// } +// return sb.toString(); +// } else { +// return null; +// } +// } +// +// public static String point2Dxf( SimpleFeature feature, String layerName ) { +// StringBuffer sb = null; +// boolean hasText = (feature.getSchema().hasAttribute("TEXT") && !feature +// .getAttribute("TEXT").equals("")); +// if (hasText) { +// sb = new StringBuffer(DxfGroup.toString(0, "TEXT")); +// } else { +// sb = new StringBuffer(DxfGroup.toString(0, "POINT")); +// } +// if (feature.getSchema().hasAttribute("LAYER") +// && !feature.getString("LAYER").trim().equals("")) { +// sb.append(DxfGroup.toString(8, feature.getAttribute("LAYER"))); +// } else { +// sb.append(DxfGroup.toString(8, layerName)); +// } +// if (feature.getSchema().hasAttribute("LTYPE") +// && !feature.getAttribute("LTYPE").equals("BYLAYER")) { +// sb.append(DxfGroup.toString(6, feature.getAttribute("LTYPE"))); +// } +// if (feature.getSchema().hasAttribute("ELEVATION") +// && !feature.getAttribute("ELEVATION").equals(new Float(0f))) { +// sb.append(DxfGroup.toString(38, feature.getAttribute("ELEVATION"))); +// } +// if (feature.getSchema().hasAttribute("THICKNESS") +// && !feature.getAttribute("THICKNESS").equals(new Float(0f))) { +// sb.append(DxfGroup.toString(39, feature.getAttribute("THICKNESS"))); +// } +// if (feature.getSchema().hasAttribute("COLOR") +// && !(((Integer) feature.getAttribute("COLOR")).intValue() == 256)) { +// sb.append(DxfGroup.toString(62, feature.getAttribute("COLOR").toString())); +// } +// Coordinate coord = ((Point) feature.getGeometry()).getCoordinate(); +// sb.append(DxfGroup.toString(10, coord.x, precision)); +// sb.append(DxfGroup.toString(20, coord.y, precision)); +// if (!Double.isNaN(coord.z)) +// sb.append(DxfGroup.toString(30, coord.z, precision)); +// if (feature.getSchema().hasAttribute("TEXT_HEIGHT") +// && !feature.getAttribute("TEXT_HEIGHT").equals(new Float(0f))) { +// sb.append(DxfGroup.toString(40, feature.getAttribute("TEXT_HEIGHT"))); +// } +// if (hasText && feature.getSchema().hasAttribute("TEXT_HEIGHT")) { +// sb.append(DxfGroup.toString(1, feature.getAttribute("TEXT"))); +// } +// if (hasText && feature.getSchema().hasAttribute("TEXT_HEIGHT")) { +// sb.append(DxfGroup.toString(7, feature.getAttribute("TEXT_STYLE"))); +// } +// return sb.toString(); +// } +// +// public static String lineString2Dxf( Feature feature, String layerName ) { +// LineString geom = (LineString) feature.getGeometry(); +// Coordinate[] coords = geom.getCoordinates(); +// // Correction added by L. Becker and R Littlefield on 2006-11-08 +// // It writes 2 points-only polylines in a line instead of a polyline +// // to make it possible to incorporate big dataset in View32 +// boolean isLine = (coords.length == 2); +// StringBuffer sb; +// if (!isLine) { +// sb = new StringBuffer(DxfGroup.toString(0, "POLYLINE")); +// } else { +// sb = new StringBuffer(DxfGroup.toString(0, "LINE")); +// } +// // StringBuffer sb = new StringBuffer(DxfGroup.toString(0, "POLYLINE")); +// if (feature.getSchema().hasAttribute("LAYER") +// && !feature.getString("LAYER").trim().equals("")) { +// sb.append(DxfGroup.toString(8, feature.getAttribute("LAYER"))); +// } else { +// sb.append(DxfGroup.toString(8, layerName)); +// } +// if (feature.getSchema().hasAttribute("LTYPE") +// && !feature.getAttribute("LTYPE").equals("BYLAYER")) { +// sb.append(DxfGroup.toString(6, feature.getAttribute("LTYPE"))); +// } +// if (feature.getSchema().hasAttribute("ELEVATION") +// && !feature.getAttribute("ELEVATION").equals(new Float(0f))) { +// sb.append(DxfGroup.toString(38, feature.getAttribute("ELEVATION"))); +// } +// if (feature.getSchema().hasAttribute("THICKNESS") +// && !feature.getAttribute("THICKNESS").equals(new Float(0f))) { +// sb.append(DxfGroup.toString(39, feature.getAttribute("THICKNESS"))); +// } +// if (feature.getSchema().hasAttribute("COLOR") +// && !(((Integer) feature.getAttribute("COLOR")).intValue() == 256)) { +// sb.append(DxfGroup.toString(62, feature.getAttribute("COLOR").toString())); +// } +// // modified by L. Becker and R. Littlefield (add the Line case) +// if (isLine) { +// sb.append(DxfGroup.toString(10, coords[0].x, precision)); +// sb.append(DxfGroup.toString(20, coords[0].y, precision)); +// if (!Double.isNaN(coords[0].z)) +// sb.append(DxfGroup.toString(30, "0.0")); +// sb.append(DxfGroup.toString(11, coords[1].x, precision)); +// sb.append(DxfGroup.toString(21, coords[1].y, precision)); +// if (!Double.isNaN(coords[1].z)) +// sb.append(DxfGroup.toString(31, "0.0")); +// } else { +// sb.append(DxfGroup.toString(66, 1)); +// sb.append(DxfGroup.toString(10, "0.0")); +// sb.append(DxfGroup.toString(20, "0.0")); +// if (!Double.isNaN(coords[0].z)) +// sb.append(DxfGroup.toString(30, "0.0")); +// sb.append(DxfGroup.toString(70, 8)); +// +// for( int i = 0; i < coords.length; i++ ) { +// sb.append(DxfGroup.toString(0, "VERTEX")); +// if (feature.getSchema().hasAttribute("LAYER") +// && !feature.getString("LAYER").trim().equals("")) { +// sb.append(DxfGroup.toString(8, feature.getAttribute("LAYER"))); +// } else { +// sb.append(DxfGroup.toString(8, layerName)); +// } +// sb.append(DxfGroup.toString(10, coords[i].x, precision)); +// sb.append(DxfGroup.toString(20, coords[i].y, precision)); +// if (!Double.isNaN(coords[i].z)) +// sb.append(DxfGroup.toString(30, coords[i].z, precision)); +// sb.append(DxfGroup.toString(70, 32)); +// } +// sb.append(DxfGroup.toString(0, "SEQEND")); +// } +// return sb.toString(); +// } +// +// public static String polygon2Dxf( Feature feature, String layerName, boolean suffix ) { +// // System.out.println("polygon2Dxf " + suffix); +// Polygon geom = (Polygon) feature.getGeometry(); +// Coordinate[] coords = geom.getExteriorRing().getCoordinates(); +// StringBuffer sb = new StringBuffer(DxfGroup.toString(0, "POLYLINE")); +// sb.append(DxfGroup.toString(8, layerName)); +// if (feature.getSchema().hasAttribute("LTYPE") +// && !feature.getAttribute("LTYPE").equals("BYLAYER")) { +// sb.append(DxfGroup.toString(6, feature.getAttribute("LTYPE"))); +// } +// if (feature.getSchema().hasAttribute("ELEVATION") +// && !feature.getAttribute("ELEVATION").equals(new Float(0f))) { +// sb.append(DxfGroup.toString(38, feature.getAttribute("ELEVATION"))); +// } +// if (feature.getSchema().hasAttribute("THICKNESS") +// && !feature.getAttribute("THICKNESS").equals(new Float(0f))) { +// sb.append(DxfGroup.toString(39, feature.getAttribute("THICKNESS"))); +// } +// if (feature.getSchema().hasAttribute("COLOR") +// && !(((Integer) feature.getAttribute("COLOR")).intValue() == 256)) { +// sb.append(DxfGroup.toString(62, feature.getAttribute("COLOR").toString())); +// } +// sb.append(DxfGroup.toString(66, 1)); +// sb.append(DxfGroup.toString(10, "0.0")); +// sb.append(DxfGroup.toString(20, "0.0")); +// if (!Double.isNaN(coords[0].z)) +// sb.append(DxfGroup.toString(30, "0.0")); +// sb.append(DxfGroup.toString(70, 9)); +// for( int i = 0; i < coords.length; i++ ) { +// sb.append(DxfGroup.toString(0, "VERTEX")); +// sb.append(DxfGroup.toString(8, layerName)); +// sb.append(DxfGroup.toString(10, coords[i].x, precision)); +// sb.append(DxfGroup.toString(20, coords[i].y, precision)); +// if (!Double.isNaN(coords[i].z)) +// sb.append(DxfGroup.toString(30, coords[i].z, precision)); +// sb.append(DxfGroup.toString(70, 32)); +// } +// sb.append(DxfGroup.toString(0, "SEQEND")); +// for( int h = 0; h < geom.getNumInteriorRing(); h++ ) { +// // System.out.println("polygon2Dxf (hole)" + suffix); +// sb.append(DxfGroup.toString(0, "POLYLINE")); +// if (suffix) +// sb.append(DxfGroup.toString(8, layerName + "_")); +// else +// sb.append(DxfGroup.toString(8, layerName)); +// if (feature.getSchema().hasAttribute("LTYPE") +// && !feature.getAttribute("LTYPE").equals("BYLAYER")) { +// sb.append(DxfGroup.toString(6, feature.getAttribute("LTYPE"))); +// } +// if (feature.getSchema().hasAttribute("THICKNESS") +// && !feature.getAttribute("THICKNESS").equals(new Float(0f))) { +// sb.append(DxfGroup.toString(39, feature.getAttribute("THICKNESS"))); +// } +// if (feature.getSchema().hasAttribute("COLOR") +// && !(((Integer) feature.getAttribute("COLOR")).intValue() == 256)) { +// sb.append(DxfGroup.toString(62, feature.getAttribute("COLOR"))); +// } +// sb.append(DxfGroup.toString(66, 1)); +// sb.append(DxfGroup.toString(10, "0.0")); +// sb.append(DxfGroup.toString(20, "0.0")); +// if (!Double.isNaN(coords[0].z)) +// sb.append(DxfGroup.toString(30, "0.0")); +// sb.append(DxfGroup.toString(70, 9)); +// coords = geom.getInteriorRingN(h).getCoordinates(); +// for( int i = 0; i < coords.length; i++ ) { +// sb.append(DxfGroup.toString(0, "VERTEX")); +// if (suffix) +// sb.append(DxfGroup.toString(8, layerName + "_")); +// else +// sb.append(DxfGroup.toString(8, layerName)); +// sb.append(DxfGroup.toString(10, coords[i].x, precision)); +// sb.append(DxfGroup.toString(20, coords[i].y, precision)); +// if (!Double.isNaN(coords[i].z)) +// sb.append(DxfGroup.toString(30, coords[i].z, precision)); +// sb.append(DxfGroup.toString(70, 32)); +// } +// sb.append(DxfGroup.toString(0, "SEQEND")); +// } +// +// return sb.toString(); +// } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfFile.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfFile.java index 5d9494c8c..460cc64c7 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfFile.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfFile.java @@ -1,363 +1,363 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.File; -import java.io.IOException; -import java.io.RandomAccessFile; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.Polygon; - -/** - * A whole dataset contained in a DXF file, and main methods to read from and - * to write to the file. - * - * The DxfFile class is one of the main class of the dxf library. - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -// 2006-11-12 : remove the header writing option -// 2006-10-19 : add optional '_' suffix -// add optional header writer -// DXF layer name is taken from layer attribute if it exists or -// from layer name else if -@SuppressWarnings("nls") -public class DxfFile { - public final static DxfGroup SECTION = new DxfGroup(0, "SECTION"); - public final static DxfGroup ENDSEC = new DxfGroup(0, "ENDSEC"); - public final static DxfGroup EOF = new DxfGroup(0, "EOF"); - public final static DxfGroup HEADER = new DxfGroup(2, "HEADER"); - // La section CLASSES suivante est posterieure � la version 12 de DXF - public final static DxfGroup CLASSES = new DxfGroup(2, "CLASSES"); - public final static DxfGroup TABLES = new DxfGroup(2, "TABLES"); - public final static DxfGroup BLOCKS = new DxfGroup(2, "BLOCKS"); - public final static DxfGroup ENTITIES = new DxfGroup(2, "ENTITIES"); - // La section OBJECTS suivante est posterieure � la version 12 de DXF - public final static DxfGroup OBJECTS = new DxfGroup(2, "OBJECTS"); - // Schema de donn�es g�n�ral pour les ENTITIES - public static SimpleFeatureType DXF_POINTSCHEMA = null; - public static SimpleFeatureType DXF_LINESCHEMA = null; - public static SimpleFeatureType DXF_POLYGONSCHEMA = null; - - public static boolean DXF_SCHEMA_INITIALIZED = false; - static int iterator = 0; - private DxfHEADER header = null; - private DxfCLASSES classes = null; - private DxfTABLES tables = null; - private DxfBLOCKS blocks = null; - private DxfENTITIES entities = null; - private int coordinatePrecision = 2; - Map featureSchemas = new HashMap(); - Map datasets = new HashMap(); - - SimpleFeatureCollection pointFeatures; - SimpleFeatureCollection lineFeatures; - SimpleFeatureCollection polygonFeatures; - - private final CoordinateReferenceSystem crs; - private static int fid = 0; - - public static synchronized int getNextFid() { - fid = fid + 1; - return fid; - } - - public static synchronized void resetFid() { - fid = 0; - } - - public DxfFile( CoordinateReferenceSystem crs ) { - this.crs = crs; - resetFid(); - initializeDXF_SCHEMA(crs); - } - - /** - * Initialize a JUMP FeatureSchema to load dxf data keeping some graphic - * attributes. - */ - - public static synchronized void initializeDXF_SCHEMA( CoordinateReferenceSystem crs ) { - if (DXF_POINTSCHEMA != null && DXF_POINTSCHEMA.getAttributeCount() != 0) - return; - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("dxfpointfile"); - b.setCRS(crs); - b.add("the_geom", Point.class); - b.add("LAYER", String.class); - b.add("LTYPE", String.class); - b.add("ELEVATION", Double.class); - b.add("THICKNESS", Double.class); - b.add("COLOR", Integer.class); - b.add("TEXT", String.class); - b.add("TEXT_HEIGHT", Double.class); - b.add("TEXT_STYLE", String.class); - DXF_POINTSCHEMA = b.buildFeatureType(); - - b = new SimpleFeatureTypeBuilder(); - b.setName("dxflinefile"); - b.setCRS(crs); - b.add("the_geom", LineString.class); - b.add("LAYER", String.class); - b.add("LTYPE", String.class); - b.add("ELEVATION", Double.class); - b.add("THICKNESS", Double.class); - b.add("COLOR", Integer.class); - b.add("TEXT", String.class); - b.add("TEXT_HEIGHT", Double.class); - b.add("TEXT_STYLE", String.class); - DXF_LINESCHEMA = b.buildFeatureType(); - - b = new SimpleFeatureTypeBuilder(); - b.setName("dxfpolygonfile"); - b.setCRS(crs); - b.add("the_geom", Polygon.class); - b.add("LAYER", String.class); - b.add("LTYPE", String.class); - b.add("ELEVATION", Double.class); - b.add("THICKNESS", Double.class); - b.add("COLOR", Integer.class); - b.add("TEXT", String.class); - b.add("TEXT_HEIGHT", Double.class); - b.add("TEXT_STYLE", String.class); - DXF_POLYGONSCHEMA = b.buildFeatureType(); - - } - - public int getCoordinatePrecision() { - return coordinatePrecision; - } - public void setCoordinatePrecision( int coordinatePrecision ) { - this.coordinatePrecision = coordinatePrecision; - } - - public static DxfFile createFromFile( File file, CoordinateReferenceSystem crs ) throws IOException { - RandomAccessFile raf = new RandomAccessFile(file, "r"); - return createFromFile(raf, crs); - } - - public static DxfFile createFromFile( RandomAccessFile raf, CoordinateReferenceSystem crs ) throws IOException { - DxfFile dxfFile = new DxfFile(crs); - initializeDXF_SCHEMA(crs); - - dxfFile.pointFeatures = FeatureCollections.newCollection(); - dxfFile.lineFeatures = FeatureCollections.newCollection(); - dxfFile.polygonFeatures = FeatureCollections.newCollection(); - - DxfGroup group = null; - while( null != (group = DxfGroup.readGroup(raf)) ) { - if (group.equals(SECTION)) { - group = DxfGroup.readGroup(raf); - System.out.println("SECTION " + group.getValue()); - if (group.equals(HEADER)) { - dxfFile.header = DxfHEADER.readHeader(raf); - } else if (group.equals(CLASSES)) { - dxfFile.classes = DxfCLASSES.readClasses(raf); - } else if (group.equals(TABLES)) { - dxfFile.tables = DxfTABLES.readTables(raf); - } else if (group.equals(BLOCKS)) { - dxfFile.blocks = DxfBLOCKS.readEntities(raf); - // dxfFile.datasets.put("BLOCKS", dxfFile.blocks.entities); - dxfFile.pointFeatures.addAll(dxfFile.blocks.pointEntities); - dxfFile.lineFeatures.addAll(dxfFile.blocks.lineEntities); - dxfFile.polygonFeatures.addAll(dxfFile.blocks.polygonEntities); - } else if (group.equals(ENTITIES)) { - dxfFile.entities = DxfENTITIES.readEntities(raf); - // dxfFile.datasets.put("ENTITIES", dxfFile.entities.entities); - dxfFile.pointFeatures.addAll(dxfFile.entities.pointEntities); - dxfFile.lineFeatures.addAll(dxfFile.entities.lineEntities); - dxfFile.polygonFeatures.addAll(dxfFile.entities.polygonEntities); - } else if (group.equals(OBJECTS)) { - // objects = DxfOBJECTS.readObjects(br); - System.out.println("Jump objects: " + group.getValue()); - } else if (group.getCode() == 999) { - System.out.println("Jump 999: " + group.getValue()); - } else { - System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); - } - } else if (group.getCode() == 999) { - // System.out.println("Commentaire : " + group.getValue()); - } else if (group.equals(EOF)) { - break; - } else { - // System.out.println("Group " + group.getCode() + " " + group.getValue() + - // " UNKNOWN"); - } - } - raf.close(); - return dxfFile; - } - - public SimpleFeatureCollection getPoints() { - return pointFeatures; - } - public SimpleFeatureCollection getLines() { - return lineFeatures; - } - public SimpleFeatureCollection getPolygons() { - return polygonFeatures; - } - - public static Set getLayers( File file ) throws IOException { - Set datasets = new HashSet(); - datasets.add("BLOCKS"); - datasets.add("ENTITIES"); - return datasets; - } - - // public static void write( FeatureCollection features, String[] layerNames, FileWriter fw, - // int precision, boolean suffix ) { - // FeatureSchema schema = features.getFeatureSchema(); - // Envelope envelope = features.getEnvelope(); - // // System.out.println("layerNames : " + layerNames + " (" + layerNames.length + ")"); - // // System.out.println("header : " + header); - // // System.out.println("suffix : " + suffix); - // Date date = new Date(System.currentTimeMillis()); - // try { - // // if (header) { - // // COMMENTAIRES DU TRADUCTEUR - // fw.write(DxfGroup.toString(999, Integer.toString(features.size()) + " features")); - // fw.write(DxfGroup.toString(999, - // "TRANSLATION BY fr.michaelm.jump.drivers.dxf.DxfFile (v 0.4)")); - // fw.write(DxfGroup.toString(999, "DATE : " + date.toString())); - // - // // ECRITURE DU HEADER - // fw.write(DxfGroup.toString(0, "SECTION")); - // fw.write(DxfGroup.toString(2, "HEADER")); - // fw.write(DxfGroup.toString(9, "$ACADVER")); - // fw.write(DxfGroup.toString(1, "AC1009")); - // fw.write(DxfGroup.toString(9, "$CECOLOR")); - // fw.write(DxfGroup.toString(62, 256)); - // fw.write(DxfGroup.toString(9, "$CELTYPE")); - // fw.write(DxfGroup.toString(6, "DUPLAN")); - // fw.write(DxfGroup.toString(9, "$CLAYER")); - // fw.write(DxfGroup.toString(8, "0")); // corrected by L. Becker on 2006-11-08 - // fw.write(DxfGroup.toString(9, "$ELEVATION")); - // fw.write(DxfGroup.toString(40, 0.0, 3)); - // fw.write(DxfGroup.toString(9, "$EXTMAX")); - // fw.write(DxfGroup.toString(10, envelope.getMaxX(), 6)); - // fw.write(DxfGroup.toString(20, envelope.getMaxY(), 6)); - // // fw.write(DxfGroup.toString(30, envelope.getMaxX(), 6)); - // fw.write(DxfGroup.toString(9, "$EXTMIN")); - // fw.write(DxfGroup.toString(10, envelope.getMinX(), 6)); - // fw.write(DxfGroup.toString(20, envelope.getMinY(), 6)); - // // fw.write(DxfGroup.toString(30, envelope.getMaxX(), 6)); - // fw.write(DxfGroup.toString(9, "$INSBASE")); - // fw.write(DxfGroup.toString(10, 0.0, 1)); - // fw.write(DxfGroup.toString(20, 0.0, 1)); - // fw.write(DxfGroup.toString(30, 0.0, 1)); - // fw.write(DxfGroup.toString(9, "$LIMCHECK")); - // fw.write(DxfGroup.toString(70, 1)); - // fw.write(DxfGroup.toString(9, "$LIMMAX")); - // fw.write(DxfGroup.toString(10, envelope.getMaxX(), 6)); - // fw.write(DxfGroup.toString(20, envelope.getMaxY(), 6)); - // fw.write(DxfGroup.toString(9, "$LIMMIN")); - // fw.write(DxfGroup.toString(10, envelope.getMinX(), 6)); - // fw.write(DxfGroup.toString(20, envelope.getMinY(), 6)); - // fw.write(DxfGroup.toString(9, "$LUNITS")); - // fw.write(DxfGroup.toString(70, 2)); - // fw.write(DxfGroup.toString(9, "$LUPREC")); - // fw.write(DxfGroup.toString(70, 2)); - // fw.write(DxfGroup.toString(0, "ENDSEC")); - // // } - // // ECRITURE DES TABLES - // fw.write(DxfGroup.toString(0, "SECTION")); - // fw.write(DxfGroup.toString(2, "TABLES")); - // fw.write(DxfGroup.toString(0, "TABLE")); - // fw.write(DxfGroup.toString(2, "STYLE")); - // fw.write(DxfGroup.toString(70, 1)); - // fw.write(DxfGroup.toString(0, "STYLE")); // added by L. Becker on 2006-11-08 - // DxfTABLE_STYLE_ITEM style = new DxfTABLE_STYLE_ITEM("STANDARD", 0, 0f, 1f, 0f, 0, 1.0f, - // "xxx.txt", "yyy.txt"); - // fw.write(style.toString()); - // fw.write(DxfGroup.toString(0, "ENDTAB")); - // fw.write(DxfGroup.toString(0, "TABLE")); - // fw.write(DxfGroup.toString(2, "LTYPE")); - // fw.write(DxfGroup.toString(70, 1)); - // fw.write(DxfGroup.toString(0, "LTYPE")); // added by L. Becker on 2006-11-08 - // DxfTABLE_LTYPE_ITEM ltype = new DxfTABLE_LTYPE_ITEM("CONTINUE", 0, "", 65, 0f, - // new float[0]); - // fw.write(ltype.toString()); - // fw.write(DxfGroup.toString(0, "ENDTAB")); - // fw.write(DxfGroup.toString(0, "TABLE")); - // fw.write(DxfGroup.toString(2, "LAYER")); - // fw.write(DxfGroup.toString(70, 2)); - // for( int i = 0; i < layerNames.length; i++ ) { - // DxfTABLE_LAYER_ITEM layer = new DxfTABLE_LAYER_ITEM(layerNames[i], 0, 131, - // "CONTINUE"); - // fw.write(DxfGroup.toString(0, "LAYER")); // added by L. Becker on 2006-11-08 - // fw.write(layer.toString()); - // if (suffix) { - // layer = new DxfTABLE_LAYER_ITEM(layerNames[i] + "_", 0, 131, "CONTINUE"); - // fw.write(DxfGroup.toString(0, "LAYER")); // added by L. Becker on 2006-11-08 - // fw.write(layer.toString()); - // } - // } - // fw.write(DxfGroup.toString(0, "ENDTAB")); - // fw.write(DxfGroup.toString(0, "ENDSEC")); - // - // // ECRITURE DES FEATURES - // fw.write(DxfGroup.toString(0, "SECTION")); - // fw.write(DxfGroup.toString(2, "ENTITIES")); - // Iterator it = features.iterator(); - // while( it.hasNext() ) { - // Feature feature = (Feature) it.next(); - // // use the layer attribute for layer name - // if (feature.getSchema().hasAttribute("LAYER")) { - // fw.write(DxfENTITY.feature2Dxf(feature, feature.getString("LAYER"), suffix)); - // } - // // use the JUMP layer name for DXF layer name - // else if (layerNames.length > 0) { - // fw.write(DxfENTITY.feature2Dxf(feature, layerNames[0], suffix)); - // } else { - // fw.write(DxfENTITY.feature2Dxf(feature, "0", false)); - // } - // } - // fw.write(DxfGroup.toString(0, "ENDSEC")); - // - // // FIN DE FICHIER - // fw.write(DxfGroup.toString(0, "EOF")); - // fw.flush(); - // } catch (IOException ioe) { - // ioe.printStackTrace(); - // } - // return; - // } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.File; +import java.io.IOException; +import java.io.RandomAccessFile; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; + +/** + * A whole dataset contained in a DXF file, and main methods to read from and + * to write to the file. + * + * The DxfFile class is one of the main class of the dxf library. + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +// 2006-11-12 : remove the header writing option +// 2006-10-19 : add optional '_' suffix +// add optional header writer +// DXF layer name is taken from layer attribute if it exists or +// from layer name else if +@SuppressWarnings("nls") +public class DxfFile { + public final static DxfGroup SECTION = new DxfGroup(0, "SECTION"); + public final static DxfGroup ENDSEC = new DxfGroup(0, "ENDSEC"); + public final static DxfGroup EOF = new DxfGroup(0, "EOF"); + public final static DxfGroup HEADER = new DxfGroup(2, "HEADER"); + // La section CLASSES suivante est posterieure � la version 12 de DXF + public final static DxfGroup CLASSES = new DxfGroup(2, "CLASSES"); + public final static DxfGroup TABLES = new DxfGroup(2, "TABLES"); + public final static DxfGroup BLOCKS = new DxfGroup(2, "BLOCKS"); + public final static DxfGroup ENTITIES = new DxfGroup(2, "ENTITIES"); + // La section OBJECTS suivante est posterieure � la version 12 de DXF + public final static DxfGroup OBJECTS = new DxfGroup(2, "OBJECTS"); + // Schema de donn�es g�n�ral pour les ENTITIES + public static SimpleFeatureType DXF_POINTSCHEMA = null; + public static SimpleFeatureType DXF_LINESCHEMA = null; + public static SimpleFeatureType DXF_POLYGONSCHEMA = null; + + public static boolean DXF_SCHEMA_INITIALIZED = false; + static int iterator = 0; + private DxfHEADER header = null; + private DxfCLASSES classes = null; + private DxfTABLES tables = null; + private DxfBLOCKS blocks = null; + private DxfENTITIES entities = null; + private int coordinatePrecision = 2; + Map featureSchemas = new HashMap(); + Map datasets = new HashMap(); + + SimpleFeatureCollection pointFeatures; + SimpleFeatureCollection lineFeatures; + SimpleFeatureCollection polygonFeatures; + + private final CoordinateReferenceSystem crs; + private static int fid = 0; + + public static synchronized int getNextFid() { + fid = fid + 1; + return fid; + } + + public static synchronized void resetFid() { + fid = 0; + } + + public DxfFile( CoordinateReferenceSystem crs ) { + this.crs = crs; + resetFid(); + initializeDXF_SCHEMA(crs); + } + + /** + * Initialize a JUMP FeatureSchema to load dxf data keeping some graphic + * attributes. + */ + + public static synchronized void initializeDXF_SCHEMA( CoordinateReferenceSystem crs ) { + if (DXF_POINTSCHEMA != null && DXF_POINTSCHEMA.getAttributeCount() != 0) + return; + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("dxfpointfile"); + b.setCRS(crs); + b.add("the_geom", Point.class); + b.add("LAYER", String.class); + b.add("LTYPE", String.class); + b.add("ELEVATION", Double.class); + b.add("THICKNESS", Double.class); + b.add("COLOR", Integer.class); + b.add("TEXT", String.class); + b.add("TEXT_HEIGHT", Double.class); + b.add("TEXT_STYLE", String.class); + DXF_POINTSCHEMA = b.buildFeatureType(); + + b = new SimpleFeatureTypeBuilder(); + b.setName("dxflinefile"); + b.setCRS(crs); + b.add("the_geom", LineString.class); + b.add("LAYER", String.class); + b.add("LTYPE", String.class); + b.add("ELEVATION", Double.class); + b.add("THICKNESS", Double.class); + b.add("COLOR", Integer.class); + b.add("TEXT", String.class); + b.add("TEXT_HEIGHT", Double.class); + b.add("TEXT_STYLE", String.class); + DXF_LINESCHEMA = b.buildFeatureType(); + + b = new SimpleFeatureTypeBuilder(); + b.setName("dxfpolygonfile"); + b.setCRS(crs); + b.add("the_geom", Polygon.class); + b.add("LAYER", String.class); + b.add("LTYPE", String.class); + b.add("ELEVATION", Double.class); + b.add("THICKNESS", Double.class); + b.add("COLOR", Integer.class); + b.add("TEXT", String.class); + b.add("TEXT_HEIGHT", Double.class); + b.add("TEXT_STYLE", String.class); + DXF_POLYGONSCHEMA = b.buildFeatureType(); + + } + + public int getCoordinatePrecision() { + return coordinatePrecision; + } + public void setCoordinatePrecision( int coordinatePrecision ) { + this.coordinatePrecision = coordinatePrecision; + } + + public static DxfFile createFromFile( File file, CoordinateReferenceSystem crs ) throws IOException { + RandomAccessFile raf = new RandomAccessFile(file, "r"); + return createFromFile(raf, crs); + } + + public static DxfFile createFromFile( RandomAccessFile raf, CoordinateReferenceSystem crs ) throws IOException { + DxfFile dxfFile = new DxfFile(crs); + initializeDXF_SCHEMA(crs); + + dxfFile.pointFeatures = FeatureCollections.newCollection(); + dxfFile.lineFeatures = FeatureCollections.newCollection(); + dxfFile.polygonFeatures = FeatureCollections.newCollection(); + + DxfGroup group = null; + while( null != (group = DxfGroup.readGroup(raf)) ) { + if (group.equals(SECTION)) { + group = DxfGroup.readGroup(raf); + System.out.println("SECTION " + group.getValue()); + if (group.equals(HEADER)) { + dxfFile.header = DxfHEADER.readHeader(raf); + } else if (group.equals(CLASSES)) { + dxfFile.classes = DxfCLASSES.readClasses(raf); + } else if (group.equals(TABLES)) { + dxfFile.tables = DxfTABLES.readTables(raf); + } else if (group.equals(BLOCKS)) { + dxfFile.blocks = DxfBLOCKS.readEntities(raf); + // dxfFile.datasets.put("BLOCKS", dxfFile.blocks.entities); + dxfFile.pointFeatures.addAll(dxfFile.blocks.pointEntities); + dxfFile.lineFeatures.addAll(dxfFile.blocks.lineEntities); + dxfFile.polygonFeatures.addAll(dxfFile.blocks.polygonEntities); + } else if (group.equals(ENTITIES)) { + dxfFile.entities = DxfENTITIES.readEntities(raf); + // dxfFile.datasets.put("ENTITIES", dxfFile.entities.entities); + dxfFile.pointFeatures.addAll(dxfFile.entities.pointEntities); + dxfFile.lineFeatures.addAll(dxfFile.entities.lineEntities); + dxfFile.polygonFeatures.addAll(dxfFile.entities.polygonEntities); + } else if (group.equals(OBJECTS)) { + // objects = DxfOBJECTS.readObjects(br); + System.out.println("Jump objects: " + group.getValue()); + } else if (group.getCode() == 999) { + System.out.println("Jump 999: " + group.getValue()); + } else { + System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); + } + } else if (group.getCode() == 999) { + // System.out.println("Commentaire : " + group.getValue()); + } else if (group.equals(EOF)) { + break; + } else { + // System.out.println("Group " + group.getCode() + " " + group.getValue() + + // " UNKNOWN"); + } + } + raf.close(); + return dxfFile; + } + + public SimpleFeatureCollection getPoints() { + return pointFeatures; + } + public SimpleFeatureCollection getLines() { + return lineFeatures; + } + public SimpleFeatureCollection getPolygons() { + return polygonFeatures; + } + + public static Set getLayers( File file ) throws IOException { + Set datasets = new HashSet(); + datasets.add("BLOCKS"); + datasets.add("ENTITIES"); + return datasets; + } + + // public static void write( FeatureCollection features, String[] layerNames, FileWriter fw, + // int precision, boolean suffix ) { + // FeatureSchema schema = features.getFeatureSchema(); + // Envelope envelope = features.getEnvelope(); + // // System.out.println("layerNames : " + layerNames + " (" + layerNames.length + ")"); + // // System.out.println("header : " + header); + // // System.out.println("suffix : " + suffix); + // Date date = new Date(System.currentTimeMillis()); + // try { + // // if (header) { + // // COMMENTAIRES DU TRADUCTEUR + // fw.write(DxfGroup.toString(999, Integer.toString(features.size()) + " features")); + // fw.write(DxfGroup.toString(999, + // "TRANSLATION BY fr.michaelm.jump.drivers.dxf.DxfFile (v 0.4)")); + // fw.write(DxfGroup.toString(999, "DATE : " + date.toString())); + // + // // ECRITURE DU HEADER + // fw.write(DxfGroup.toString(0, "SECTION")); + // fw.write(DxfGroup.toString(2, "HEADER")); + // fw.write(DxfGroup.toString(9, "$ACADVER")); + // fw.write(DxfGroup.toString(1, "AC1009")); + // fw.write(DxfGroup.toString(9, "$CECOLOR")); + // fw.write(DxfGroup.toString(62, 256)); + // fw.write(DxfGroup.toString(9, "$CELTYPE")); + // fw.write(DxfGroup.toString(6, "DUPLAN")); + // fw.write(DxfGroup.toString(9, "$CLAYER")); + // fw.write(DxfGroup.toString(8, "0")); // corrected by L. Becker on 2006-11-08 + // fw.write(DxfGroup.toString(9, "$ELEVATION")); + // fw.write(DxfGroup.toString(40, 0.0, 3)); + // fw.write(DxfGroup.toString(9, "$EXTMAX")); + // fw.write(DxfGroup.toString(10, envelope.getMaxX(), 6)); + // fw.write(DxfGroup.toString(20, envelope.getMaxY(), 6)); + // // fw.write(DxfGroup.toString(30, envelope.getMaxX(), 6)); + // fw.write(DxfGroup.toString(9, "$EXTMIN")); + // fw.write(DxfGroup.toString(10, envelope.getMinX(), 6)); + // fw.write(DxfGroup.toString(20, envelope.getMinY(), 6)); + // // fw.write(DxfGroup.toString(30, envelope.getMaxX(), 6)); + // fw.write(DxfGroup.toString(9, "$INSBASE")); + // fw.write(DxfGroup.toString(10, 0.0, 1)); + // fw.write(DxfGroup.toString(20, 0.0, 1)); + // fw.write(DxfGroup.toString(30, 0.0, 1)); + // fw.write(DxfGroup.toString(9, "$LIMCHECK")); + // fw.write(DxfGroup.toString(70, 1)); + // fw.write(DxfGroup.toString(9, "$LIMMAX")); + // fw.write(DxfGroup.toString(10, envelope.getMaxX(), 6)); + // fw.write(DxfGroup.toString(20, envelope.getMaxY(), 6)); + // fw.write(DxfGroup.toString(9, "$LIMMIN")); + // fw.write(DxfGroup.toString(10, envelope.getMinX(), 6)); + // fw.write(DxfGroup.toString(20, envelope.getMinY(), 6)); + // fw.write(DxfGroup.toString(9, "$LUNITS")); + // fw.write(DxfGroup.toString(70, 2)); + // fw.write(DxfGroup.toString(9, "$LUPREC")); + // fw.write(DxfGroup.toString(70, 2)); + // fw.write(DxfGroup.toString(0, "ENDSEC")); + // // } + // // ECRITURE DES TABLES + // fw.write(DxfGroup.toString(0, "SECTION")); + // fw.write(DxfGroup.toString(2, "TABLES")); + // fw.write(DxfGroup.toString(0, "TABLE")); + // fw.write(DxfGroup.toString(2, "STYLE")); + // fw.write(DxfGroup.toString(70, 1)); + // fw.write(DxfGroup.toString(0, "STYLE")); // added by L. Becker on 2006-11-08 + // DxfTABLE_STYLE_ITEM style = new DxfTABLE_STYLE_ITEM("STANDARD", 0, 0f, 1f, 0f, 0, 1.0f, + // "xxx.txt", "yyy.txt"); + // fw.write(style.toString()); + // fw.write(DxfGroup.toString(0, "ENDTAB")); + // fw.write(DxfGroup.toString(0, "TABLE")); + // fw.write(DxfGroup.toString(2, "LTYPE")); + // fw.write(DxfGroup.toString(70, 1)); + // fw.write(DxfGroup.toString(0, "LTYPE")); // added by L. Becker on 2006-11-08 + // DxfTABLE_LTYPE_ITEM ltype = new DxfTABLE_LTYPE_ITEM("CONTINUE", 0, "", 65, 0f, + // new float[0]); + // fw.write(ltype.toString()); + // fw.write(DxfGroup.toString(0, "ENDTAB")); + // fw.write(DxfGroup.toString(0, "TABLE")); + // fw.write(DxfGroup.toString(2, "LAYER")); + // fw.write(DxfGroup.toString(70, 2)); + // for( int i = 0; i < layerNames.length; i++ ) { + // DxfTABLE_LAYER_ITEM layer = new DxfTABLE_LAYER_ITEM(layerNames[i], 0, 131, + // "CONTINUE"); + // fw.write(DxfGroup.toString(0, "LAYER")); // added by L. Becker on 2006-11-08 + // fw.write(layer.toString()); + // if (suffix) { + // layer = new DxfTABLE_LAYER_ITEM(layerNames[i] + "_", 0, 131, "CONTINUE"); + // fw.write(DxfGroup.toString(0, "LAYER")); // added by L. Becker on 2006-11-08 + // fw.write(layer.toString()); + // } + // } + // fw.write(DxfGroup.toString(0, "ENDTAB")); + // fw.write(DxfGroup.toString(0, "ENDSEC")); + // + // // ECRITURE DES FEATURES + // fw.write(DxfGroup.toString(0, "SECTION")); + // fw.write(DxfGroup.toString(2, "ENTITIES")); + // Iterator it = features.iterator(); + // while( it.hasNext() ) { + // Feature feature = (Feature) it.next(); + // // use the layer attribute for layer name + // if (feature.getSchema().hasAttribute("LAYER")) { + // fw.write(DxfENTITY.feature2Dxf(feature, feature.getString("LAYER"), suffix)); + // } + // // use the JUMP layer name for DXF layer name + // else if (layerNames.length > 0) { + // fw.write(DxfENTITY.feature2Dxf(feature, layerNames[0], suffix)); + // } else { + // fw.write(DxfENTITY.feature2Dxf(feature, "0", false)); + // } + // } + // fw.write(DxfGroup.toString(0, "ENDSEC")); + // + // // FIN DE FICHIER + // fw.write(DxfGroup.toString(0, "EOF")); + // fw.flush(); + // } catch (IOException ioe) { + // ioe.printStackTrace(); + // } + // return; + // } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfGroup.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfGroup.java index a68fc0b0c..78d961dfe 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfGroup.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfGroup.java @@ -1,178 +1,178 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; -import java.util.Locale; - -/** - * DxfGroup is a group containing a dxf code and a dxf value. - * The class contains several utils to read and write groups an to format data. - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfGroup { - // Pour �crire le symbole d�cimal anglophone (.) plut�t que fran�ais (,) - private static final DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US); - private static final DecimalFormat[] decimalFormats = new DecimalFormat[]{new DecimalFormat("#0", dfs), - new DecimalFormat("#0.0", dfs), new DecimalFormat("#0.00", dfs), new DecimalFormat("#0.000", dfs), - new DecimalFormat("#0.0000", dfs), new DecimalFormat("#0.00000", dfs), new DecimalFormat("#0.000000", dfs), - new DecimalFormat("#0.0000000", dfs), new DecimalFormat("#0.00000000", dfs), new DecimalFormat("#0.000000000", dfs), - new DecimalFormat("#0.0000000000", dfs), new DecimalFormat("#0.00000000000", dfs), - new DecimalFormat("#0.000000000000", dfs)}; - - private int code; - private String value; - private long address; - - public DxfGroup( int code, String value ) { - this.code = code; - this.value = value; - } - - public DxfGroup( String code, String value ) throws NumberFormatException { - try { - this.code = Integer.parseInt(code); - this.value = value; - } catch (NumberFormatException nfe) { - throw nfe; - } - } - - public int getCode() { - return code; - } - public void setCode( int code ) { - this.code = code; - } - public String getValue() { - return value; - } - public int getIntValue() { - return Integer.parseInt(value.trim()); - } - public float getFloatValue() { - return Float.parseFloat(value.trim()); - } - public double getDoubleValue() { - return Double.parseDouble(value.trim()); - } - // public void setValue() {this.value = value;} - public long getAddress() { - return address; - } - private void setAddress( long address ) { - this.address = address; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (int) (address ^ (address >>> 32)); - result = prime * result + code; - result = prime * result + ((value == null) ? 0 : value.hashCode()); - return result; - } - - public boolean equals( Object other ) { - if (!(other instanceof DxfGroup)) { - return false; - } - if (code == ((DxfGroup) other).getCode() && value.equals(((DxfGroup) other).getValue())) { - return true; - } else - return false; - } - - public String toString() { - String codeString = " " + Integer.toString(code); - int stringLength = codeString.length(); - codeString = codeString.substring(stringLength - (code < 1000 ? 3 : 4), stringLength); - return codeString + "\r\n" + value + "\r\n"; - } - - public static String int34car( int code ) { - if (code < 10) - return " " + Integer.toString(code); - else if (code < 100) - return " " + Integer.toString(code); - else - return Integer.toString(code); - } - - public static String int6car( int value ) { - String s = " " + Integer.toString(value); - return s.substring(s.length() - 6, s.length()); - } - - public static String toString( int code, String value ) { - return int34car(code) + "\r\n" + value + "\r\n"; - } - - public static String toString( int code, int value ) { - return int34car(code) + "\r\n" + int6car(value) + "\r\n"; - } - - public static String toString( int code, float value, int decimalPartLength ) { - return int34car(code) + "\r\n" + decimalFormats[decimalPartLength].format((double) value) + "\r\n"; - } - - public static String toString( int code, double value, int decimalPartLength ) { - return int34car(code) + "\r\n" + decimalFormats[decimalPartLength].format(value) + "\r\n"; - } - - public static String toString( int code, Object value ) { - if (value instanceof String) { - return toString(code, (String) value); - } else if (value instanceof Integer) { - return toString(code, ((Integer) value).intValue()); - } else if (value instanceof Float) { - return toString(code, ((Float) value).floatValue(), 3); - } else if (value instanceof Double) { - return toString(code, ((Double) value).doubleValue(), 6); - } else - return toString(code, value.toString()); - } - - public static DxfGroup readGroup( RandomAccessFile raf ) throws IOException { - try { - long pos = raf.getFilePointer(); - String line1 = raf.readLine(); - String line2 = raf.readLine(); - DxfGroup dxfGroup = new DxfGroup(Integer.parseInt(line1.trim()), line2); - dxfGroup.setAddress(pos); - return dxfGroup; - } catch (IOException ioe) { - raf.close(); - throw ioe; - } - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.Locale; + +/** + * DxfGroup is a group containing a dxf code and a dxf value. + * The class contains several utils to read and write groups an to format data. + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfGroup { + // Pour �crire le symbole d�cimal anglophone (.) plut�t que fran�ais (,) + private static final DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US); + private static final DecimalFormat[] decimalFormats = new DecimalFormat[]{new DecimalFormat("#0", dfs), + new DecimalFormat("#0.0", dfs), new DecimalFormat("#0.00", dfs), new DecimalFormat("#0.000", dfs), + new DecimalFormat("#0.0000", dfs), new DecimalFormat("#0.00000", dfs), new DecimalFormat("#0.000000", dfs), + new DecimalFormat("#0.0000000", dfs), new DecimalFormat("#0.00000000", dfs), new DecimalFormat("#0.000000000", dfs), + new DecimalFormat("#0.0000000000", dfs), new DecimalFormat("#0.00000000000", dfs), + new DecimalFormat("#0.000000000000", dfs)}; + + private int code; + private String value; + private long address; + + public DxfGroup( int code, String value ) { + this.code = code; + this.value = value; + } + + public DxfGroup( String code, String value ) throws NumberFormatException { + try { + this.code = Integer.parseInt(code); + this.value = value; + } catch (NumberFormatException nfe) { + throw nfe; + } + } + + public int getCode() { + return code; + } + public void setCode( int code ) { + this.code = code; + } + public String getValue() { + return value; + } + public int getIntValue() { + return Integer.parseInt(value.trim()); + } + public float getFloatValue() { + return Float.parseFloat(value.trim()); + } + public double getDoubleValue() { + return Double.parseDouble(value.trim()); + } + // public void setValue() {this.value = value;} + public long getAddress() { + return address; + } + private void setAddress( long address ) { + this.address = address; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (int) (address ^ (address >>> 32)); + result = prime * result + code; + result = prime * result + ((value == null) ? 0 : value.hashCode()); + return result; + } + + public boolean equals( Object other ) { + if (!(other instanceof DxfGroup)) { + return false; + } + if (code == ((DxfGroup) other).getCode() && value.equals(((DxfGroup) other).getValue())) { + return true; + } else + return false; + } + + public String toString() { + String codeString = " " + Integer.toString(code); + int stringLength = codeString.length(); + codeString = codeString.substring(stringLength - (code < 1000 ? 3 : 4), stringLength); + return codeString + "\r\n" + value + "\r\n"; + } + + public static String int34car( int code ) { + if (code < 10) + return " " + Integer.toString(code); + else if (code < 100) + return " " + Integer.toString(code); + else + return Integer.toString(code); + } + + public static String int6car( int value ) { + String s = " " + Integer.toString(value); + return s.substring(s.length() - 6, s.length()); + } + + public static String toString( int code, String value ) { + return int34car(code) + "\r\n" + value + "\r\n"; + } + + public static String toString( int code, int value ) { + return int34car(code) + "\r\n" + int6car(value) + "\r\n"; + } + + public static String toString( int code, float value, int decimalPartLength ) { + return int34car(code) + "\r\n" + decimalFormats[decimalPartLength].format((double) value) + "\r\n"; + } + + public static String toString( int code, double value, int decimalPartLength ) { + return int34car(code) + "\r\n" + decimalFormats[decimalPartLength].format(value) + "\r\n"; + } + + public static String toString( int code, Object value ) { + if (value instanceof String) { + return toString(code, (String) value); + } else if (value instanceof Integer) { + return toString(code, ((Integer) value).intValue()); + } else if (value instanceof Float) { + return toString(code, ((Float) value).floatValue(), 3); + } else if (value instanceof Double) { + return toString(code, ((Double) value).doubleValue(), 6); + } else + return toString(code, value.toString()); + } + + public static DxfGroup readGroup( RandomAccessFile raf ) throws IOException { + try { + long pos = raf.getFilePointer(); + String line1 = raf.readLine(); + String line2 = raf.readLine(); + DxfGroup dxfGroup = new DxfGroup(Integer.parseInt(line1.trim()), line2); + dxfGroup.setAddress(pos); + return dxfGroup; + } catch (IOException ioe) { + raf.close(); + throw ioe; + } + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfHEADER.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfHEADER.java index 53cfc7fbf..744c26634 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfHEADER.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfHEADER.java @@ -1,247 +1,247 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import java.util.Map; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.ArrayList; -import java.util.Iterator; - -/** - * A DXF HEADER section. - * This class has a static method to read the header section of a DXF file - * and a toString method to format the header section into DXF format - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfHEADER { - public static final String ACADVER = "ACADVER"; - public static final String ANGBASE = "ANGBASE"; - public static final String ANGDIR = "ANGDIR"; - public static final String ATTDIA = "ATTDIA"; - public static final String ATTMODE = "ATTMODE"; - public static final String ATTREQ = "ATTREQ"; - public static final String AUNITS = "AUNITS"; - public static final String AUPREC = "AUPREC"; - public static final String AXISMODE = "AXISMODE"; - public static final String AXISUNIT = "AXISUNIT"; - public static final String BLIPMODE = "BLIPMODE"; - public static final String CECOLOR = "CECOLOR"; - public static final String CELTYPE = "CELTYPE"; - public static final String CHAMFERA = "CHAMFERA"; - public static final String CHAMFERB = "CHAMFERB"; - public static final String CLAYER = "CLAYER"; - public static final String COORDS = "COORDS"; - public static final String DIMALT = "DIMALT"; - public static final String DIMALTD = "DIMALTD"; - public static final String DIMALTF = "DIMALTF"; - public static final String DIMAPOST = "DIMAPOST"; - public static final String DIMASO = "DIMASO"; - public static final String DIMASZ = "DIMASZ"; - public static final String DIMBLK = "DIMBLK"; - public static final String DIMBLK1 = "DIMBLK1"; - public static final String DIMBLK2 = "DIMBLK2"; - public static final String DIMCEN = "DIMCEN"; - public static final String DIMCLRD = "DIMCLRD"; - public static final String DIMCLRE = "DIMCLRE"; - public static final String DIMCLRT = "DIMCLRT"; - public static final String DIMDLE = "DIMDLE"; - public static final String DIMDLI = "DIMDLI"; - public static final String DIMEXE = "DIMEXE"; - public static final String DIMEXO = "DIMEXO"; - public static final String DIMGAP = "DIMGAP"; - public static final String DIMLFAC = "DIMLFAC"; - public static final String DIMLIM = "DIMLIM"; - public static final String DIMPOST = "DIMPOST"; - public static final String DIMRND = "DIMRND"; - public static final String DIMSAH = "DIMSAH"; - public static final String DIMSCALE = "DIMSCALE"; - public static final String DIMSE1 = "DIMSE1"; - public static final String DIMSE2 = "DIMSE2"; - public static final String DIMSHO = "DIMSHO"; - public static final String DIMSOXD = "DIMSOXD"; - public static final String DIMSTYLE = "DIMSTYLE"; - public static final String DIMTAD = "DIMTAD"; - public static final String DIMTFAC = "DIMTFAC"; - public static final String DIMTIH = "DIMTIH"; - public static final String DIMTIX = "DIMTIX"; - public static final String DIMTM = "DIMTM"; - public static final String DIMTOFL = "DIMTOFL"; - public static final String DIMTOH = "DIMTOH"; - public static final String DIMTOL = "DIMTOL"; - public static final String DIMTP = "DIMTP"; - public static final String DIMTSZ = "DIMTSZ"; - public static final String DIMTVP = "DIMTVP"; - public static final String DIMTXT = "DIMTXT"; - public static final String DIMZIN = "DIMZIN"; - public static final String DRAGMODE = "DRAGMODE"; - public static final String DWGCODEPAGE = "DWGCODEPAGE"; - public static final String ELEVATION = "ELEVATION"; - public static final String EXTMAX = "EXTMAX"; - public static final String EXTMIN = "EXTMIN"; - public static final String FASTZOOM = "FASTZOOM"; - public static final String FILLETRAD = "FILLETRAD"; - public static final String FILLMODE = "FILLMODE"; - public static final String GRIDMODE = "GRIDMODE"; - public static final String GRIDUNIT = "GRIDUNIT"; - public static final String HANDLING = "HANDLING"; - public static final String HANDSEED = "HANDSEED"; - public static final String INSBASE = "INSBASE"; - public static final String LIMCHECK = "LIMCHECK"; - public static final String LIMMAX = "LIMMAX"; - public static final String LIMMIN = "LIMMIN"; - public static final String LTSCALE = "LTSCALE"; - public static final String LUNITS = "LUNITS"; - public static final String LUPREC = "LUPREC"; - public static final String MAXACTVP = "MAXACTVP"; - public static final String MENU = "MENU"; - public static final String MIRRTEXT = "MIRRTEXT"; - public static final String ORTHOMODE = "ORTHOMODE"; - public static final String OSMODE = "OSMODE"; - public static final String PDMODE = "PDMODE"; - public static final String PDSIZE = "PDSIZE"; - public static final String PELEVATION = "PELEVATION"; - public static final String PEXTMAX = "PEXTMAX"; - public static final String PEXTMIN = "PEXTMIN"; - public static final String PLIMCHECK = "PLIMCHECK"; - public static final String PLIMMAX = "PLIMMAX"; - public static final String PLIMMIN = "PLIMMIN"; - public static final String PLINEGEN = "PLINEGEN"; - public static final String PLINEWID = "PLINEWID"; - public static final String PSLTSCALE = "PSLTSCALE"; - public static final String PUCSNAME = "PUCSNAME"; - public static final String PUCSORG = "PUCSORG"; - public static final String PUCSXDIR = "PUCSXDIR"; - public static final String PUCSYDIR = "PUCSYDIR"; - public static final String QTEXTMODE = "QTEXTMODE"; - public static final String REGENMODE = "REGENMODE"; - public static final String SHADEDGE = "SHADEDGE"; - public static final String SHADEDIF = "SHADEDIF"; - public static final String SKETCHINC = "SKETCHINC"; - public static final String SKPOLY = "SKPOLY"; - public static final String SNAPANG = "SNAPANG"; - public static final String SNAPBASE = "SNAPBASE"; - public static final String SNAPISOPAIR = "SNAPISOPAIR"; - public static final String SNAPMODE = "SNAPMODE"; - public static final String SNAPSTYLE = "SNAPSTYLE"; - public static final String SNAPUNIT = "SNAPUNIT"; - public static final String SPLFRAME = "SPLFRAME"; - public static final String SPLINESEGS = "SPLINESEGS"; - public static final String SPLINETYPE = "SPLINETYPE"; - public static final String SURFTAB1 = "SURFTAB1"; - public static final String SURFTAB2 = "SURFTAB2"; - public static final String SURFTYPE = "SURFTYPE"; - public static final String SURFU = "SURFU"; - public static final String SURFV = "SURFV"; - public static final String TDCREATE = "TDCREATE"; - public static final String TDINDWG = "TDINDWG"; - public static final String TDUPDATE = "TDUPDATE"; - public static final String TDUSRTIMER = "TDUSRTIMER"; - public static final String TEXTSIZE = "TEXTSIZE"; - public static final String TEXTSTYLE = "TEXTSTYLE"; - public static final String THICKNESS = "THICKNESS"; - public static final String TILEMODE = "TILEMODE"; - public static final String TRACEWID = "TRACEWID"; - public static final String UCSNAME = "UCSNAME"; - public static final String UCSORG = "UCSORG"; - public static final String UCSXDIR = "UCSXDIR"; - public static final String UCSYDIR = "UCSYDIR"; - public static final String UNITMODE = "UNITMODE"; - public static final String USERI1 = "USERI1"; - public static final String USERI2 = "USERI2"; - public static final String USERI3 = "USERI3"; - public static final String USERI4 = "USERI4"; - public static final String USERI5 = "USERI5"; - public static final String USERR1 = "USERR1"; - public static final String USERR2 = "USERR2"; - public static final String USERR3 = "USERR3"; - public static final String USERR4 = "USERR4"; - public static final String USERR5 = "USERR5"; - public static final String USRTIMER = "USRTIMER"; - public static final String VIEWCTR = "VIEWCTR"; - public static final String VIEWDIR = "VIEWDIR"; - public static final String VIEWSIZE = "VIEWSIZE"; - public static final String VISRETAIN = "VISRETAIN"; - public static final String WORLDVIEW = "WORLDVIEW"; - - Map headerTable = null; - - public DxfHEADER() { - headerTable = new LinkedHashMap(); - } - - public List getVariable(String nomVariable) { - return (List)headerTable.get(nomVariable); - } - - public void setVariable(String nomVariable, List groups) { - headerTable.put(nomVariable, groups); - } - - public static DxfHEADER readHeader(RandomAccessFile raf) throws IOException { - DxfHEADER header = new DxfHEADER(); - try { - DxfGroup group = null; - String nomVariable = null; - while (null != (group = DxfGroup.readGroup(raf)) && - !group.equals(DxfFile.ENDSEC)) { - if (group.getCode()==9) { - nomVariable = group.getValue(); - nomVariable = nomVariable.substring(1,nomVariable.length()); - header.headerTable.put(nomVariable, new ArrayList(1)); - } - else if (group.getCode() == 999) {} - else if (nomVariable != null) { - List groups = (List)header.headerTable.get(nomVariable); - groups.add(group); - } - else { - //System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); - } - } - } catch(IOException ioe) {throw ioe;} - return header; - } - - public String toString() { - Iterator it = headerTable.keySet().iterator(); - StringBuffer sb = new StringBuffer(DxfFile.SECTION.toString()); - sb.append(DxfFile.HEADER.toString()); - while (it.hasNext()) { - String var = (String)it.next(); - sb.append(DxfGroup.toString(9, "$"+var)); - List liste = (List)headerTable.get(var); - for (int i = 0 ; i < liste.size() ; i++) { - sb.append(((DxfGroup)liste.get(i)).toString()); - } - } - sb.append(DxfFile.ENDSEC.toString()); - return sb.toString(); - } -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import java.util.Map; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.ArrayList; +import java.util.Iterator; + +/** + * A DXF HEADER section. + * This class has a static method to read the header section of a DXF file + * and a toString method to format the header section into DXF format + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfHEADER { + public static final String ACADVER = "ACADVER"; + public static final String ANGBASE = "ANGBASE"; + public static final String ANGDIR = "ANGDIR"; + public static final String ATTDIA = "ATTDIA"; + public static final String ATTMODE = "ATTMODE"; + public static final String ATTREQ = "ATTREQ"; + public static final String AUNITS = "AUNITS"; + public static final String AUPREC = "AUPREC"; + public static final String AXISMODE = "AXISMODE"; + public static final String AXISUNIT = "AXISUNIT"; + public static final String BLIPMODE = "BLIPMODE"; + public static final String CECOLOR = "CECOLOR"; + public static final String CELTYPE = "CELTYPE"; + public static final String CHAMFERA = "CHAMFERA"; + public static final String CHAMFERB = "CHAMFERB"; + public static final String CLAYER = "CLAYER"; + public static final String COORDS = "COORDS"; + public static final String DIMALT = "DIMALT"; + public static final String DIMALTD = "DIMALTD"; + public static final String DIMALTF = "DIMALTF"; + public static final String DIMAPOST = "DIMAPOST"; + public static final String DIMASO = "DIMASO"; + public static final String DIMASZ = "DIMASZ"; + public static final String DIMBLK = "DIMBLK"; + public static final String DIMBLK1 = "DIMBLK1"; + public static final String DIMBLK2 = "DIMBLK2"; + public static final String DIMCEN = "DIMCEN"; + public static final String DIMCLRD = "DIMCLRD"; + public static final String DIMCLRE = "DIMCLRE"; + public static final String DIMCLRT = "DIMCLRT"; + public static final String DIMDLE = "DIMDLE"; + public static final String DIMDLI = "DIMDLI"; + public static final String DIMEXE = "DIMEXE"; + public static final String DIMEXO = "DIMEXO"; + public static final String DIMGAP = "DIMGAP"; + public static final String DIMLFAC = "DIMLFAC"; + public static final String DIMLIM = "DIMLIM"; + public static final String DIMPOST = "DIMPOST"; + public static final String DIMRND = "DIMRND"; + public static final String DIMSAH = "DIMSAH"; + public static final String DIMSCALE = "DIMSCALE"; + public static final String DIMSE1 = "DIMSE1"; + public static final String DIMSE2 = "DIMSE2"; + public static final String DIMSHO = "DIMSHO"; + public static final String DIMSOXD = "DIMSOXD"; + public static final String DIMSTYLE = "DIMSTYLE"; + public static final String DIMTAD = "DIMTAD"; + public static final String DIMTFAC = "DIMTFAC"; + public static final String DIMTIH = "DIMTIH"; + public static final String DIMTIX = "DIMTIX"; + public static final String DIMTM = "DIMTM"; + public static final String DIMTOFL = "DIMTOFL"; + public static final String DIMTOH = "DIMTOH"; + public static final String DIMTOL = "DIMTOL"; + public static final String DIMTP = "DIMTP"; + public static final String DIMTSZ = "DIMTSZ"; + public static final String DIMTVP = "DIMTVP"; + public static final String DIMTXT = "DIMTXT"; + public static final String DIMZIN = "DIMZIN"; + public static final String DRAGMODE = "DRAGMODE"; + public static final String DWGCODEPAGE = "DWGCODEPAGE"; + public static final String ELEVATION = "ELEVATION"; + public static final String EXTMAX = "EXTMAX"; + public static final String EXTMIN = "EXTMIN"; + public static final String FASTZOOM = "FASTZOOM"; + public static final String FILLETRAD = "FILLETRAD"; + public static final String FILLMODE = "FILLMODE"; + public static final String GRIDMODE = "GRIDMODE"; + public static final String GRIDUNIT = "GRIDUNIT"; + public static final String HANDLING = "HANDLING"; + public static final String HANDSEED = "HANDSEED"; + public static final String INSBASE = "INSBASE"; + public static final String LIMCHECK = "LIMCHECK"; + public static final String LIMMAX = "LIMMAX"; + public static final String LIMMIN = "LIMMIN"; + public static final String LTSCALE = "LTSCALE"; + public static final String LUNITS = "LUNITS"; + public static final String LUPREC = "LUPREC"; + public static final String MAXACTVP = "MAXACTVP"; + public static final String MENU = "MENU"; + public static final String MIRRTEXT = "MIRRTEXT"; + public static final String ORTHOMODE = "ORTHOMODE"; + public static final String OSMODE = "OSMODE"; + public static final String PDMODE = "PDMODE"; + public static final String PDSIZE = "PDSIZE"; + public static final String PELEVATION = "PELEVATION"; + public static final String PEXTMAX = "PEXTMAX"; + public static final String PEXTMIN = "PEXTMIN"; + public static final String PLIMCHECK = "PLIMCHECK"; + public static final String PLIMMAX = "PLIMMAX"; + public static final String PLIMMIN = "PLIMMIN"; + public static final String PLINEGEN = "PLINEGEN"; + public static final String PLINEWID = "PLINEWID"; + public static final String PSLTSCALE = "PSLTSCALE"; + public static final String PUCSNAME = "PUCSNAME"; + public static final String PUCSORG = "PUCSORG"; + public static final String PUCSXDIR = "PUCSXDIR"; + public static final String PUCSYDIR = "PUCSYDIR"; + public static final String QTEXTMODE = "QTEXTMODE"; + public static final String REGENMODE = "REGENMODE"; + public static final String SHADEDGE = "SHADEDGE"; + public static final String SHADEDIF = "SHADEDIF"; + public static final String SKETCHINC = "SKETCHINC"; + public static final String SKPOLY = "SKPOLY"; + public static final String SNAPANG = "SNAPANG"; + public static final String SNAPBASE = "SNAPBASE"; + public static final String SNAPISOPAIR = "SNAPISOPAIR"; + public static final String SNAPMODE = "SNAPMODE"; + public static final String SNAPSTYLE = "SNAPSTYLE"; + public static final String SNAPUNIT = "SNAPUNIT"; + public static final String SPLFRAME = "SPLFRAME"; + public static final String SPLINESEGS = "SPLINESEGS"; + public static final String SPLINETYPE = "SPLINETYPE"; + public static final String SURFTAB1 = "SURFTAB1"; + public static final String SURFTAB2 = "SURFTAB2"; + public static final String SURFTYPE = "SURFTYPE"; + public static final String SURFU = "SURFU"; + public static final String SURFV = "SURFV"; + public static final String TDCREATE = "TDCREATE"; + public static final String TDINDWG = "TDINDWG"; + public static final String TDUPDATE = "TDUPDATE"; + public static final String TDUSRTIMER = "TDUSRTIMER"; + public static final String TEXTSIZE = "TEXTSIZE"; + public static final String TEXTSTYLE = "TEXTSTYLE"; + public static final String THICKNESS = "THICKNESS"; + public static final String TILEMODE = "TILEMODE"; + public static final String TRACEWID = "TRACEWID"; + public static final String UCSNAME = "UCSNAME"; + public static final String UCSORG = "UCSORG"; + public static final String UCSXDIR = "UCSXDIR"; + public static final String UCSYDIR = "UCSYDIR"; + public static final String UNITMODE = "UNITMODE"; + public static final String USERI1 = "USERI1"; + public static final String USERI2 = "USERI2"; + public static final String USERI3 = "USERI3"; + public static final String USERI4 = "USERI4"; + public static final String USERI5 = "USERI5"; + public static final String USERR1 = "USERR1"; + public static final String USERR2 = "USERR2"; + public static final String USERR3 = "USERR3"; + public static final String USERR4 = "USERR4"; + public static final String USERR5 = "USERR5"; + public static final String USRTIMER = "USRTIMER"; + public static final String VIEWCTR = "VIEWCTR"; + public static final String VIEWDIR = "VIEWDIR"; + public static final String VIEWSIZE = "VIEWSIZE"; + public static final String VISRETAIN = "VISRETAIN"; + public static final String WORLDVIEW = "WORLDVIEW"; + + Map headerTable = null; + + public DxfHEADER() { + headerTable = new LinkedHashMap(); + } + + public List getVariable(String nomVariable) { + return (List)headerTable.get(nomVariable); + } + + public void setVariable(String nomVariable, List groups) { + headerTable.put(nomVariable, groups); + } + + public static DxfHEADER readHeader(RandomAccessFile raf) throws IOException { + DxfHEADER header = new DxfHEADER(); + try { + DxfGroup group = null; + String nomVariable = null; + while (null != (group = DxfGroup.readGroup(raf)) && + !group.equals(DxfFile.ENDSEC)) { + if (group.getCode()==9) { + nomVariable = group.getValue(); + nomVariable = nomVariable.substring(1,nomVariable.length()); + header.headerTable.put(nomVariable, new ArrayList(1)); + } + else if (group.getCode() == 999) {} + else if (nomVariable != null) { + List groups = (List)header.headerTable.get(nomVariable); + groups.add(group); + } + else { + //System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); + } + } + } catch(IOException ioe) {throw ioe;} + return header; + } + + public String toString() { + Iterator it = headerTable.keySet().iterator(); + StringBuffer sb = new StringBuffer(DxfFile.SECTION.toString()); + sb.append(DxfFile.HEADER.toString()); + while (it.hasNext()) { + String var = (String)it.next(); + sb.append(DxfGroup.toString(9, "$"+var)); + List liste = (List)headerTable.get(var); + for (int i = 0 ; i < liste.size() ; i++) { + sb.append(((DxfGroup)liste.get(i)).toString()); + } + } + sb.append(DxfFile.ENDSEC.toString()); + return sb.toString(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfLINE.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfLINE.java index 7c2584309..6d854df41 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfLINE.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfLINE.java @@ -1,109 +1,109 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.IOException; -import java.io.RandomAccessFile; - -import org.geotools.feature.FeatureCollection; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.Coordinate; - -/** - * LINE DXF entity. - * This class has a static method reading a DXF LINE and adding the new - * feature to a FeatureCollection - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -@SuppressWarnings("nls") -public class DxfLINE extends DxfENTITY { - - public DxfLINE() { - super("DEFAULT"); - } - - public static DxfGroup readEntity( RandomAccessFile raf, - FeatureCollection entities ) throws IOException { - - double x1 = Double.NaN, y1 = Double.NaN, z1 = Double.NaN; - double x2 = Double.NaN, y2 = Double.NaN, z2 = Double.NaN; - DxfGroup group; - - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(DxfFile.DXF_LINESCHEMA); - String layer = ""; - String ltype = ""; - Double elevation = new Double(0.0); - Double thickness = new Double(0.0); - Integer color = new Integer(256); - String text = ""; - Double text_height = new Double(0.0); - String text_style = ""; - - while( null != (group = DxfGroup.readGroup(raf)) && group.getCode() != 0 ) { - if (group.getCode() == 8) - layer = group.getValue(); - else if (group.getCode() == 6) - ltype = group.getValue(); - else if (group.getCode() == 39) - thickness = new Double(group.getDoubleValue()); - else if (group.getCode() == 62) - color = new Integer(group.getIntValue()); - else if (group.getCode() == 10) - x1 = group.getDoubleValue(); - else if (group.getCode() == 20) - y1 = group.getDoubleValue(); - else if (group.getCode() == 30) - z1 = group.getDoubleValue(); - else if (group.getCode() == 11) - x2 = group.getDoubleValue(); - else if (group.getCode() == 21) - y2 = group.getDoubleValue(); - else if (group.getCode() == 31) - z2 = group.getDoubleValue(); - else { - } - } - if (!Double.isNaN(x1) && !Double.isNaN(y1) && !Double.isNaN(x2) && !Double.isNaN(y2)) { - Object[] values = new Object[]{ - gF.createLineString(new Coordinate[]{new Coordinate(x1, y1, z1), - new Coordinate(x2, y2, z2)}), layer, ltype, elevation, thickness, - color, text, text_height, text_style}; - builder.addAll(values); - StringBuilder featureId = new StringBuilder(); - featureId.append(DxfFile.DXF_LINESCHEMA.getTypeName()); - featureId.append("."); - featureId.append(DxfFile.getNextFid()); - SimpleFeature feature = builder.buildFeature(featureId.toString()); - entities.add(feature); - } - return group; - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.IOException; +import java.io.RandomAccessFile; + +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.Coordinate; + +/** + * LINE DXF entity. + * This class has a static method reading a DXF LINE and adding the new + * feature to a FeatureCollection + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +@SuppressWarnings("nls") +public class DxfLINE extends DxfENTITY { + + public DxfLINE() { + super("DEFAULT"); + } + + public static DxfGroup readEntity( RandomAccessFile raf, + FeatureCollection entities ) throws IOException { + + double x1 = Double.NaN, y1 = Double.NaN, z1 = Double.NaN; + double x2 = Double.NaN, y2 = Double.NaN, z2 = Double.NaN; + DxfGroup group; + + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(DxfFile.DXF_LINESCHEMA); + String layer = ""; + String ltype = ""; + Double elevation = new Double(0.0); + Double thickness = new Double(0.0); + Integer color = new Integer(256); + String text = ""; + Double text_height = new Double(0.0); + String text_style = ""; + + while( null != (group = DxfGroup.readGroup(raf)) && group.getCode() != 0 ) { + if (group.getCode() == 8) + layer = group.getValue(); + else if (group.getCode() == 6) + ltype = group.getValue(); + else if (group.getCode() == 39) + thickness = new Double(group.getDoubleValue()); + else if (group.getCode() == 62) + color = new Integer(group.getIntValue()); + else if (group.getCode() == 10) + x1 = group.getDoubleValue(); + else if (group.getCode() == 20) + y1 = group.getDoubleValue(); + else if (group.getCode() == 30) + z1 = group.getDoubleValue(); + else if (group.getCode() == 11) + x2 = group.getDoubleValue(); + else if (group.getCode() == 21) + y2 = group.getDoubleValue(); + else if (group.getCode() == 31) + z2 = group.getDoubleValue(); + else { + } + } + if (!Double.isNaN(x1) && !Double.isNaN(y1) && !Double.isNaN(x2) && !Double.isNaN(y2)) { + Object[] values = new Object[]{ + gF.createLineString(new Coordinate[]{new Coordinate(x1, y1, z1), + new Coordinate(x2, y2, z2)}), layer, ltype, elevation, thickness, + color, text, text_height, text_style}; + builder.addAll(values); + StringBuilder featureId = new StringBuilder(); + featureId.append(DxfFile.DXF_LINESCHEMA.getTypeName()); + featureId.append("."); + featureId.append(DxfFile.getNextFid()); + SimpleFeature feature = builder.buildFeature(featureId.toString()); + entities.add(feature); + } + return group; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfLWPOLYLINE.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfLWPOLYLINE.java index de0258040..24f1a5538 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfLWPOLYLINE.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfLWPOLYLINE.java @@ -1,145 +1,145 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.IOException; -import java.io.RandomAccessFile; - -import org.geotools.feature.FeatureCollection; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateList; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.Polygon; - -/** - * LWPOLYLINE DXF entity. - * This class has a static method reading a DXF LWPOLYLINE and adding the new - * feature to a FeatureCollection - * @author Micha�l Michaud - * @version 0.6.0 - */ -// History -@SuppressWarnings("nls") -public class DxfLWPOLYLINE extends DxfENTITY { - - public DxfLWPOLYLINE() { - super("DEFAULT"); - } - - public static DxfGroup readEntity( RandomAccessFile raf, - FeatureCollection entities ) throws IOException { - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(DxfFile.DXF_LINESCHEMA); - String layer = ""; - String ltype = ""; - Double elevation = new Double(0.0); - Double thickness = new Double(0.0); - Integer color = new Integer(256); - String text = ""; - Double text_height = new Double(0.0); - String text_style = ""; - - String geomType = "LineString"; - CoordinateList coordList = new CoordinateList(); - double x = Double.NaN, y = Double.NaN, z = Double.NaN; - DxfGroup group = DxfFile.ENTITIES; - try { - while( /*!group.equals(DxfFile.ENDSEC)*/group.getCode() != 0 ) { - if (group.getCode() == 8) { - layer = group.getValue(); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 6) { - ltype = group.getValue(); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 38) { - elevation = new Double(group.getDoubleValue()); - z = group.getDoubleValue(); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 39) { - thickness = new Double(group.getDoubleValue()); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 62) { - color = new Integer(group.getIntValue()); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 70) { - if ((group.getIntValue() & 1) == 1) - geomType = "Polygon"; - group = DxfGroup.readGroup(raf); - } - /*else if (group.equals(VERTEX)) { - group = DxfVERTEX.readEntity(raf, coordList); - }*/ - else if (group.getCode() == 10) { - x = group.getDoubleValue(); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 20) { - y = group.getDoubleValue(); - coordList.add(new Coordinate(x, y, z)); - group = DxfGroup.readGroup(raf); - } else if (group.equals(SEQEND)) { - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 0) { - // 0 group different from VERTEX and different from SEQEND - break; - } else { - group = DxfGroup.readGroup(raf); - } - } - if (geomType.equals("LineString")) { - LineString lineString = gF.createLineString(coordList.toCoordinateArray()); - Object[] values = new Object[]{lineString, layer, ltype, elevation, thickness, - color, text, text_height, text_style}; - builder.addAll(values); - StringBuilder featureId = new StringBuilder(); - featureId.append(DxfFile.DXF_LINESCHEMA.getTypeName()); - featureId.append("."); - featureId.append(DxfFile.getNextFid()); - SimpleFeature feature = builder.buildFeature(featureId.toString()); - entities.add(feature); - } else if (geomType.equals("Polygon")) { - coordList.closeRing(); - Polygon polygon = gF.createPolygon(gF.createLinearRing(coordList - .toCoordinateArray()), null); - Object[] values = new Object[]{polygon, layer, ltype, elevation, thickness, color, - text, text_height, text_style}; - builder.addAll(values); - StringBuilder featureId = new StringBuilder(); - featureId.append(DxfFile.DXF_LINESCHEMA.getTypeName()); - featureId.append("."); - featureId.append(DxfFile.getNextFid()); - SimpleFeature feature = builder.buildFeature(featureId.toString()); - entities.add(feature); - } else { - } - } catch (IOException ioe) { - throw ioe; - } - return group; - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.IOException; +import java.io.RandomAccessFile; + +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateList; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.Polygon; + +/** + * LWPOLYLINE DXF entity. + * This class has a static method reading a DXF LWPOLYLINE and adding the new + * feature to a FeatureCollection + * @author Micha�l Michaud + * @version 0.6.0 + */ +// History +@SuppressWarnings("nls") +public class DxfLWPOLYLINE extends DxfENTITY { + + public DxfLWPOLYLINE() { + super("DEFAULT"); + } + + public static DxfGroup readEntity( RandomAccessFile raf, + FeatureCollection entities ) throws IOException { + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(DxfFile.DXF_LINESCHEMA); + String layer = ""; + String ltype = ""; + Double elevation = new Double(0.0); + Double thickness = new Double(0.0); + Integer color = new Integer(256); + String text = ""; + Double text_height = new Double(0.0); + String text_style = ""; + + String geomType = "LineString"; + CoordinateList coordList = new CoordinateList(); + double x = Double.NaN, y = Double.NaN, z = Double.NaN; + DxfGroup group = DxfFile.ENTITIES; + try { + while( /*!group.equals(DxfFile.ENDSEC)*/group.getCode() != 0 ) { + if (group.getCode() == 8) { + layer = group.getValue(); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 6) { + ltype = group.getValue(); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 38) { + elevation = new Double(group.getDoubleValue()); + z = group.getDoubleValue(); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 39) { + thickness = new Double(group.getDoubleValue()); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 62) { + color = new Integer(group.getIntValue()); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 70) { + if ((group.getIntValue() & 1) == 1) + geomType = "Polygon"; + group = DxfGroup.readGroup(raf); + } + /*else if (group.equals(VERTEX)) { + group = DxfVERTEX.readEntity(raf, coordList); + }*/ + else if (group.getCode() == 10) { + x = group.getDoubleValue(); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 20) { + y = group.getDoubleValue(); + coordList.add(new Coordinate(x, y, z)); + group = DxfGroup.readGroup(raf); + } else if (group.equals(SEQEND)) { + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 0) { + // 0 group different from VERTEX and different from SEQEND + break; + } else { + group = DxfGroup.readGroup(raf); + } + } + if (geomType.equals("LineString")) { + LineString lineString = gF.createLineString(coordList.toCoordinateArray()); + Object[] values = new Object[]{lineString, layer, ltype, elevation, thickness, + color, text, text_height, text_style}; + builder.addAll(values); + StringBuilder featureId = new StringBuilder(); + featureId.append(DxfFile.DXF_LINESCHEMA.getTypeName()); + featureId.append("."); + featureId.append(DxfFile.getNextFid()); + SimpleFeature feature = builder.buildFeature(featureId.toString()); + entities.add(feature); + } else if (geomType.equals("Polygon")) { + coordList.closeRing(); + Polygon polygon = gF.createPolygon(gF.createLinearRing(coordList + .toCoordinateArray()), null); + Object[] values = new Object[]{polygon, layer, ltype, elevation, thickness, color, + text, text_height, text_style}; + builder.addAll(values); + StringBuilder featureId = new StringBuilder(); + featureId.append(DxfFile.DXF_LINESCHEMA.getTypeName()); + featureId.append("."); + featureId.append(DxfFile.getNextFid()); + SimpleFeature feature = builder.buildFeature(featureId.toString()); + entities.add(feature); + } else { + } + } catch (IOException ioe) { + throw ioe; + } + return group; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfPOINT.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfPOINT.java index c015232a7..b98fd1b7e 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfPOINT.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfPOINT.java @@ -1,104 +1,104 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.IOException; -import java.io.RandomAccessFile; - -import org.geotools.feature.FeatureCollection; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.GeometryFactory; - -/** - * POINT DXF entity. - * This class has a static method reading a DXF POINT and adding the new - * feature to a FeatureCollection - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -@SuppressWarnings("nls") -public class DxfPOINT extends DxfENTITY { - - public DxfPOINT() { - super("DEFAULT"); - } - - public static DxfGroup readEntity( RandomAccessFile raf, - FeatureCollection entities ) - throws IOException { - - double x = Double.NaN, y = Double.NaN, z = Double.NaN; - DxfGroup group; - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(DxfFile.DXF_POINTSCHEMA); - String layer = ""; - String ltype = ""; - Double elevation = new Double(0.0); - Double thickness = new Double(0.0); - Integer color = new Integer(256); - String text = ""; - Double text_height = new Double(0.0); - String text_style = ""; - - while( null != (group = DxfGroup.readGroup(raf)) && group.getCode() != 0 ) { - if (group.getCode() == 8) - layer = group.getValue(); - else if (group.getCode() == 6) - ltype = group.getValue(); - else if (group.getCode() == 38) - elevation = new Double(group.getDoubleValue()); - else if (group.getCode() == 39) - thickness = new Double(group.getDoubleValue()); - else if (group.getCode() == 62) - color = new Integer(group.getIntValue()); - else if (group.getCode() == 10) - x = group.getDoubleValue(); - else if (group.getCode() == 20) - y = group.getDoubleValue(); - else if (group.getCode() == 30) - z = group.getDoubleValue(); - else { - } - } - - if (!Double.isNaN(x) && !Double.isNaN(y)) { - Object[] values = new Object[]{gF.createPoint(new Coordinate(x, y, z)), layer, ltype, - elevation, thickness, color, text, text_height, text_style}; - builder.addAll(values); - StringBuilder featureId = new StringBuilder(); - featureId.append(DxfFile.DXF_POINTSCHEMA.getTypeName()); - featureId.append("."); - featureId.append(DxfFile.getNextFid()); - SimpleFeature feature = builder.buildFeature(featureId.toString()); - entities.add(feature); - } - return group; - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.IOException; +import java.io.RandomAccessFile; + +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.GeometryFactory; + +/** + * POINT DXF entity. + * This class has a static method reading a DXF POINT and adding the new + * feature to a FeatureCollection + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +@SuppressWarnings("nls") +public class DxfPOINT extends DxfENTITY { + + public DxfPOINT() { + super("DEFAULT"); + } + + public static DxfGroup readEntity( RandomAccessFile raf, + FeatureCollection entities ) + throws IOException { + + double x = Double.NaN, y = Double.NaN, z = Double.NaN; + DxfGroup group; + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(DxfFile.DXF_POINTSCHEMA); + String layer = ""; + String ltype = ""; + Double elevation = new Double(0.0); + Double thickness = new Double(0.0); + Integer color = new Integer(256); + String text = ""; + Double text_height = new Double(0.0); + String text_style = ""; + + while( null != (group = DxfGroup.readGroup(raf)) && group.getCode() != 0 ) { + if (group.getCode() == 8) + layer = group.getValue(); + else if (group.getCode() == 6) + ltype = group.getValue(); + else if (group.getCode() == 38) + elevation = new Double(group.getDoubleValue()); + else if (group.getCode() == 39) + thickness = new Double(group.getDoubleValue()); + else if (group.getCode() == 62) + color = new Integer(group.getIntValue()); + else if (group.getCode() == 10) + x = group.getDoubleValue(); + else if (group.getCode() == 20) + y = group.getDoubleValue(); + else if (group.getCode() == 30) + z = group.getDoubleValue(); + else { + } + } + + if (!Double.isNaN(x) && !Double.isNaN(y)) { + Object[] values = new Object[]{gF.createPoint(new Coordinate(x, y, z)), layer, ltype, + elevation, thickness, color, text, text_height, text_style}; + builder.addAll(values); + StringBuilder featureId = new StringBuilder(); + featureId.append(DxfFile.DXF_POINTSCHEMA.getTypeName()); + featureId.append("."); + featureId.append(DxfFile.getNextFid()); + SimpleFeature feature = builder.buildFeature(featureId.toString()); + entities.add(feature); + } + return group; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfPOLYLINE.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfPOLYLINE.java index ded64c63f..fbb796259 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfPOLYLINE.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfPOLYLINE.java @@ -1,131 +1,131 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.IOException; -import java.io.RandomAccessFile; - -import org.geotools.feature.FeatureCollection; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.CoordinateList; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.Polygon; - -/** - * POLYLINE DXF entity. - * This class has a static method reading a DXF POLYLINE and adding the new - * feature to a FeatureCollection - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -@SuppressWarnings("nls") -public class DxfPOLYLINE extends DxfENTITY { - - public DxfPOLYLINE() { - super("DEFAULT"); - } - - public static DxfGroup readEntity( RandomAccessFile raf, - FeatureCollection entities ) throws IOException { - - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(DxfFile.DXF_LINESCHEMA); - String layer = ""; - String ltype = ""; - Double elevation = new Double(0.0); - Double thickness = new Double(0.0); - Integer color = new Integer(256); - String text = ""; - Double text_height = new Double(0.0); - String text_style = ""; - - String geomType = "LineString"; - CoordinateList coordList = new CoordinateList(); - double x = Double.NaN, y = Double.NaN, z = Double.NaN; - DxfGroup group = DxfFile.ENTITIES; - while( !group.equals(DxfFile.ENDSEC) ) { - if (group.getCode() == 8) { - layer = group.getValue(); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 6) { - ltype = group.getValue(); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 38) { - elevation = new Double(group.getDoubleValue()); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 39) { - thickness = new Double(group.getDoubleValue()); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 62) { - color = new Integer(group.getIntValue()); - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 70) { - if ((group.getIntValue() & 1) == 1) - geomType = "Polygon"; - group = DxfGroup.readGroup(raf); - } else if (group.equals(VERTEX)) { - group = DxfVERTEX.readEntity(raf, coordList); - } else if (group.equals(SEQEND)) { - group = DxfGroup.readGroup(raf); - } else if (group.getCode() == 0) { - // 0 group different from VERTEX and different from SEQEND - break; - } else { - group = DxfGroup.readGroup(raf); - } - } - if (geomType.equals("LineString")) { - LineString lineString = gF.createLineString(coordList.toCoordinateArray()); - Object[] values = new Object[]{lineString, layer, ltype, elevation, thickness, color, - text, text_height, text_style}; - builder.addAll(values); - StringBuilder featureId = new StringBuilder(); - featureId.append(DxfFile.DXF_LINESCHEMA.getTypeName()); - featureId.append("."); - featureId.append(DxfFile.getNextFid()); - SimpleFeature feature = builder.buildFeature(featureId.toString()); - entities.add(feature); - } else if (geomType.equals("Polygon")) { - coordList.closeRing(); - Polygon polygon = gF.createPolygon(gF.createLinearRing(coordList.toCoordinateArray()), - null); - Object[] values = new Object[]{polygon, layer, ltype, elevation, thickness, color, - text, text_height, text_style}; - builder.addAll(values); - StringBuilder featureId = new StringBuilder(); - featureId.append(DxfFile.DXF_POLYGONSCHEMA.getTypeName()); - featureId.append("."); - featureId.append(DxfFile.getNextFid()); - SimpleFeature feature = builder.buildFeature(featureId.toString()); - entities.add(feature); - } else { - } - return group; - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.IOException; +import java.io.RandomAccessFile; + +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.CoordinateList; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.Polygon; + +/** + * POLYLINE DXF entity. + * This class has a static method reading a DXF POLYLINE and adding the new + * feature to a FeatureCollection + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +@SuppressWarnings("nls") +public class DxfPOLYLINE extends DxfENTITY { + + public DxfPOLYLINE() { + super("DEFAULT"); + } + + public static DxfGroup readEntity( RandomAccessFile raf, + FeatureCollection entities ) throws IOException { + + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(DxfFile.DXF_LINESCHEMA); + String layer = ""; + String ltype = ""; + Double elevation = new Double(0.0); + Double thickness = new Double(0.0); + Integer color = new Integer(256); + String text = ""; + Double text_height = new Double(0.0); + String text_style = ""; + + String geomType = "LineString"; + CoordinateList coordList = new CoordinateList(); + double x = Double.NaN, y = Double.NaN, z = Double.NaN; + DxfGroup group = DxfFile.ENTITIES; + while( !group.equals(DxfFile.ENDSEC) ) { + if (group.getCode() == 8) { + layer = group.getValue(); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 6) { + ltype = group.getValue(); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 38) { + elevation = new Double(group.getDoubleValue()); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 39) { + thickness = new Double(group.getDoubleValue()); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 62) { + color = new Integer(group.getIntValue()); + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 70) { + if ((group.getIntValue() & 1) == 1) + geomType = "Polygon"; + group = DxfGroup.readGroup(raf); + } else if (group.equals(VERTEX)) { + group = DxfVERTEX.readEntity(raf, coordList); + } else if (group.equals(SEQEND)) { + group = DxfGroup.readGroup(raf); + } else if (group.getCode() == 0) { + // 0 group different from VERTEX and different from SEQEND + break; + } else { + group = DxfGroup.readGroup(raf); + } + } + if (geomType.equals("LineString")) { + LineString lineString = gF.createLineString(coordList.toCoordinateArray()); + Object[] values = new Object[]{lineString, layer, ltype, elevation, thickness, color, + text, text_height, text_style}; + builder.addAll(values); + StringBuilder featureId = new StringBuilder(); + featureId.append(DxfFile.DXF_LINESCHEMA.getTypeName()); + featureId.append("."); + featureId.append(DxfFile.getNextFid()); + SimpleFeature feature = builder.buildFeature(featureId.toString()); + entities.add(feature); + } else if (geomType.equals("Polygon")) { + coordList.closeRing(); + Polygon polygon = gF.createPolygon(gF.createLinearRing(coordList.toCoordinateArray()), + null); + Object[] values = new Object[]{polygon, layer, ltype, elevation, thickness, color, + text, text_height, text_style}; + builder.addAll(values); + StringBuilder featureId = new StringBuilder(); + featureId.append(DxfFile.DXF_POLYGONSCHEMA.getTypeName()); + featureId.append("."); + featureId.append(DxfFile.getNextFid()); + SimpleFeature feature = builder.buildFeature(featureId.toString()); + entities.add(feature); + } else { + } + return group; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfReader.java index 5be0be7ce..6c2b5a915 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfReader.java @@ -1,78 +1,78 @@ -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; -///* -// * Library name : dxf -// * (C) 2006 Micha�l Michaud -// * -// * This program is free software; you can redistribute it and/or -// * modify it under the terms of the GNU General Public License -// * as published by the Free Software Foundation; either version 2 -// * of the License, or (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// * -// * For more information, contact: -// * -// * michael.michaud@free.fr -// * -// */ -// -//package fr.michaelm.jump.drivers.dxf; -// -//import com.vividsolutions.jts.geom.*; -// -//import java.io.File; -//import java.io.FileOutputStream; -// -//import org.geotools.feature.FeatureCollection; -//import org.opengis.feature.simple.SimpleFeature; -//import org.opengis.feature.simple.SimpleFeatureType; -//import org.opengis.referencing.crs.CoordinateReferenceSystem; -// -///** -// *DataProperties for the JCSReader load(DataProperties) interface:

                -// * -// * -// *
                ParameterMeaning
                InputFile or DefaultValueFile name for the input .shp file

                -// *NOTE: The input .dbf is assumed to be 'beside' (in the same directory) as the .shp file. -// *CompressedFileTemplateFile name (.zip NOT a .gz) with a .shp and .dbf file inside -// * -// * Uses a modified version of geotools to do the .dbf and .shp file reading. -// * If you are reading from a .zip file, the dbf file will be copied to your temp directory and deleted after being read. -// */ -///** -// * DXF reader. -// * Use the file name to read in the DriverProperties parameter, read the file -// * and return a FeatureCollection. -// * @author Micha�l Michaud -// * @version 0.5.0 -// */ -//// History -//public class DxfReader { -// DxfFile dxfFile = null; -// -// /** Creates new DxfReader */ -// public DxfReader() { -// } -// -// /** -// * Main method to read a DXF file. -// * @param dp 'InputFile' or 'DefaultValue' to specify input .dxf file. -// * -// */ -// public FeatureCollection read( File file, -// CoordinateReferenceSystem crs ) throws Exception { -// FeatureCollection result; -// GeometryFactory factory = new GeometryFactory(); -// dxfFile = DxfFile.createFromFile(file, crs); -// result = dxfFile.read(factory); -// System.gc(); -// return result; -// } -//} +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; +///* +// * Library name : dxf +// * (C) 2006 Micha�l Michaud +// * +// * This program is free software; you can redistribute it and/or +// * modify it under the terms of the GNU General Public License +// * as published by the Free Software Foundation; either version 2 +// * of the License, or (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// * +// * For more information, contact: +// * +// * michael.michaud@free.fr +// * +// */ +// +//package fr.michaelm.jump.drivers.dxf; +// +//import com.vividsolutions.jts.geom.*; +// +//import java.io.File; +//import java.io.FileOutputStream; +// +//import org.geotools.feature.FeatureCollection; +//import org.opengis.feature.simple.SimpleFeature; +//import org.opengis.feature.simple.SimpleFeatureType; +//import org.opengis.referencing.crs.CoordinateReferenceSystem; +// +///** +// *DataProperties for the JCSReader load(DataProperties) interface:

                +// * +// * +// *
                ParameterMeaning
                InputFile or DefaultValueFile name for the input .shp file

                +// *NOTE: The input .dbf is assumed to be 'beside' (in the same directory) as the .shp file. +// *CompressedFileTemplateFile name (.zip NOT a .gz) with a .shp and .dbf file inside +// * +// * Uses a modified version of geotools to do the .dbf and .shp file reading. +// * If you are reading from a .zip file, the dbf file will be copied to your temp directory and deleted after being read. +// */ +///** +// * DXF reader. +// * Use the file name to read in the DriverProperties parameter, read the file +// * and return a FeatureCollection. +// * @author Micha�l Michaud +// * @version 0.5.0 +// */ +//// History +//public class DxfReader { +// DxfFile dxfFile = null; +// +// /** Creates new DxfReader */ +// public DxfReader() { +// } +// +// /** +// * Main method to read a DXF file. +// * @param dp 'InputFile' or 'DefaultValue' to specify input .dxf file. +// * +// */ +// public FeatureCollection read( File file, +// CoordinateReferenceSystem crs ) throws Exception { +// FeatureCollection result; +// GeometryFactory factory = new GeometryFactory(); +// dxfFile = DxfFile.createFromFile(file, crs); +// result = dxfFile.read(factory); +// System.gc(); +// return result; +// } +//} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLES.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLES.java index cddb2b0d5..b428167b8 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLES.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLES.java @@ -1,231 +1,231 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import java.util.Map; -import java.util.HashMap; -import java.util.List; -import java.util.ArrayList; -import java.util.Iterator; - -/** - * The TABLES section of a DXF file. It contains LAYERs, LTYPEs... - * There is a static reader to read the TABLES section in a DXF file - * and a toString method able to write the section in a DXF form - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -// 2006-11-12 : Bug fixed x==Double.NaN --> Double.isNaN(x) -public class DxfTABLES { - public final static DxfGroup TABLE = new DxfGroup(0, "TABLE"); - public final static DxfGroup ENDTAB = new DxfGroup(0, "ENDTAB"); - public final static DxfGroup NBMAX = new DxfGroup(70, "NBMAX"); - public final static DxfGroup APPID = new DxfGroup(2, "APPID"); - public final static DxfGroup DIMSTYLE = new DxfGroup(2, "DIMSTYLE"); - public final static DxfGroup LTYPE = new DxfGroup(2, "LTYPE"); - public final static DxfGroup LAYER = new DxfGroup(2, "LAYER"); - public final static DxfGroup STYLE = new DxfGroup(2, "STYLE"); - public final static DxfGroup UCS = new DxfGroup(2, "UCS"); - public final static DxfGroup VIEW = new DxfGroup(2, "VIEW"); - public final static DxfGroup VPORT = new DxfGroup(2, "VPORT"); - - Map appId; - Map dimStyle; - Map lType; - Map layer; - Map style; - Map ucs; - Map view; - Map vPort; - - public DxfTABLES() { - appId = new HashMap(); - dimStyle = new HashMap(); - lType = new HashMap(); - layer = new HashMap(); - style = new HashMap(); - ucs = new HashMap(); // - view = new HashMap(); - vPort = new HashMap(); - } - - public static DxfTABLES readTables(RandomAccessFile raf) throws IOException { - DxfTABLES tables = new DxfTABLES(); - DxfGroup group = null; - String nomVariable = null; - // It�ration sur chaque table - while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(DxfFile.ENDSEC)) { - Map map = null; - if (group.equals(TABLE)) { - // Lecture du groupe portant le nom de la table - group = DxfGroup.readGroup(raf); - if (group.equals(APPID)) { - //System.out.println("\tTABLE APPID"); - tables.appId = DxfTABLE_APPID_ITEM.readTable(raf); - } - else if (group.equals(DIMSTYLE)) { - //System.out.println("\tTABLE DIMSTYLE"); - tables.dimStyle = DxfTABLE_DIMSTYLE_ITEM.readTable(raf); - } - else if (group.equals(LTYPE)) { - //System.out.println("\tTABLE LTYPE"); - tables.lType = DxfTABLE_LTYPE_ITEM.readTable(raf); - } - else if (group.equals(LAYER)) { - //System.out.println("\tTABLE LAYER"); - tables.layer = DxfTABLE_LAYER_ITEM.readTable(raf); - } - else if (group.equals(STYLE)) { - //System.out.println("\tTABLE STYLE"); - tables.style = DxfTABLE_STYLE_ITEM.readTable(raf); - } - else if (group.equals(UCS)) { - //System.out.println("\tTABLE UCS"); - tables.ucs = DxfTABLE_UCS_ITEM.readTable(raf); - } - else if (group.equals(VIEW)) { - //System.out.println("\tTABLE VIEW"); - tables.view= DxfTABLE_VIEW_ITEM.readTable(raf); - } - else if (group.equals(VPORT)) { - //System.out.println("\tTABLE VPORT"); - tables.vPort= DxfTABLE_VPORT_ITEM.readTable(raf); - } - else if (group.getCode() == 999) { - //System.out.println("Commentaire : " + group.getValue()); - } - else { - //System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); - } - } - else if (group.getCode() == 999) { - //System.out.println("Commentaire : " + group.getValue()); - } - else { - //System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); - } - } - return tables; - } - - public String toString() { - StringBuffer sb = new StringBuffer(DxfFile.SECTION.toString()); - sb.append(DxfFile.TABLES.toString()); - if (vPort.size() >0) { - sb.append(DxfTABLES.TABLE.toString()); - sb.append(DxfTABLES.VPORT.toString()); - sb.append(DxfGroup.toString(70, Integer.toString(vPort.size()))); - Iterator it = vPort.keySet().iterator(); - while (it.hasNext()) { - sb.append(DxfGroup.toString(0, "VPORT")); - sb.append(((DxfTABLE_VPORT_ITEM)vPort.get(it.next())).toString()); - } - sb.append(DxfTABLES.ENDTAB.toString()); - } - if (appId.size() > 0) { - sb.append(DxfTABLES.TABLE.toString()); - sb.append(DxfTABLES.APPID.toString()); - sb.append(DxfGroup.toString(70, Integer.toString(appId.size()))); - Iterator it = appId.keySet().iterator(); - while (it.hasNext()) { - sb.append(DxfGroup.toString(0, "APPID")); - sb.append(((DxfTABLE_APPID_ITEM)appId.get(it.next())).toString()); - } - sb.append(DxfTABLES.ENDTAB.toString()); - } - if (dimStyle.size() >0) { - sb.append(DxfTABLES.TABLE.toString()); - sb.append(DxfTABLES.DIMSTYLE.toString()); - sb.append(DxfGroup.toString(70, Integer.toString(dimStyle.size()))); - Iterator it = dimStyle.keySet().iterator(); - while (it.hasNext()) { - sb.append(DxfGroup.toString(0, "DIMSTYLE")); - sb.append(((DxfTABLE_DIMSTYLE_ITEM)dimStyle.get(it.next())).toString()); - } - sb.append(DxfTABLES.ENDTAB.toString()); - } - if (lType.size() >0) { - sb.append(DxfTABLES.TABLE.toString()); - sb.append(DxfTABLES.LTYPE.toString()); - sb.append(DxfGroup.toString(70, Integer.toString(lType.size()))); - Iterator it = lType.keySet().iterator(); - while (it.hasNext()) { - sb.append(DxfGroup.toString(0, "LTYPE")); - sb.append(((DxfTABLE_LTYPE_ITEM)lType.get(it.next())).toString()); - } - sb.append(DxfTABLES.ENDTAB.toString()); - } - if (layer.size() >0) { - sb.append(DxfTABLES.TABLE.toString()); - sb.append(DxfTABLES.LAYER.toString()); - sb.append(DxfGroup.toString(70, Integer.toString(layer.size()))); - Iterator it = layer.keySet().iterator(); - while (it.hasNext()) { - sb.append(DxfGroup.toString(0, "LAYER")); - sb.append(((DxfTABLE_LAYER_ITEM)layer.get(it.next())).toString()); - } - sb.append(DxfTABLES.ENDTAB.toString()); - } - if (style.size() >0) { - sb.append(DxfTABLES.TABLE.toString()); - sb.append(DxfTABLES.STYLE.toString()); - sb.append(DxfGroup.toString(70, Integer.toString(style.size()))); - Iterator it = style.keySet().iterator(); - while (it.hasNext()) { - sb.append(DxfGroup.toString(0, "STYLE")); - sb.append(((DxfTABLE_STYLE_ITEM)style.get(it.next())).toString()); - } - sb.append(DxfTABLES.ENDTAB.toString()); - } - if (ucs.size() >0) { - sb.append(DxfTABLES.TABLE.toString()); - sb.append(DxfTABLES.UCS.toString()); - sb.append(DxfGroup.toString(70, Integer.toString(ucs.size()))); - Iterator it = ucs.keySet().iterator(); - while (it.hasNext()) { - sb.append(DxfGroup.toString(0, "UCS")); - sb.append(((DxfTABLE_UCS_ITEM)ucs.get(it.next())).toString()); - } - sb.append(DxfTABLES.ENDTAB.toString()); - } - if (view.size() >0) { - sb.append(DxfTABLES.TABLE.toString()); - sb.append(DxfTABLES.VIEW.toString()); - sb.append(DxfGroup.toString(70, Integer.toString(view.size()))); - Iterator it = view.keySet().iterator(); - while (it.hasNext()) { - sb.append(DxfGroup.toString(0, "VIEW")); - sb.append(((DxfTABLE_VIEW_ITEM)view.get(it.next())).toString()); - } - sb.append(DxfTABLES.ENDTAB.toString()); - } - sb.append(DxfFile.ENDSEC.toString()); - return sb.toString(); - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import java.util.Map; +import java.util.HashMap; +import java.util.List; +import java.util.ArrayList; +import java.util.Iterator; + +/** + * The TABLES section of a DXF file. It contains LAYERs, LTYPEs... + * There is a static reader to read the TABLES section in a DXF file + * and a toString method able to write the section in a DXF form + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +// 2006-11-12 : Bug fixed x==Double.NaN --> Double.isNaN(x) +public class DxfTABLES { + public final static DxfGroup TABLE = new DxfGroup(0, "TABLE"); + public final static DxfGroup ENDTAB = new DxfGroup(0, "ENDTAB"); + public final static DxfGroup NBMAX = new DxfGroup(70, "NBMAX"); + public final static DxfGroup APPID = new DxfGroup(2, "APPID"); + public final static DxfGroup DIMSTYLE = new DxfGroup(2, "DIMSTYLE"); + public final static DxfGroup LTYPE = new DxfGroup(2, "LTYPE"); + public final static DxfGroup LAYER = new DxfGroup(2, "LAYER"); + public final static DxfGroup STYLE = new DxfGroup(2, "STYLE"); + public final static DxfGroup UCS = new DxfGroup(2, "UCS"); + public final static DxfGroup VIEW = new DxfGroup(2, "VIEW"); + public final static DxfGroup VPORT = new DxfGroup(2, "VPORT"); + + Map appId; + Map dimStyle; + Map lType; + Map layer; + Map style; + Map ucs; + Map view; + Map vPort; + + public DxfTABLES() { + appId = new HashMap(); + dimStyle = new HashMap(); + lType = new HashMap(); + layer = new HashMap(); + style = new HashMap(); + ucs = new HashMap(); // + view = new HashMap(); + vPort = new HashMap(); + } + + public static DxfTABLES readTables(RandomAccessFile raf) throws IOException { + DxfTABLES tables = new DxfTABLES(); + DxfGroup group = null; + String nomVariable = null; + // It�ration sur chaque table + while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(DxfFile.ENDSEC)) { + Map map = null; + if (group.equals(TABLE)) { + // Lecture du groupe portant le nom de la table + group = DxfGroup.readGroup(raf); + if (group.equals(APPID)) { + //System.out.println("\tTABLE APPID"); + tables.appId = DxfTABLE_APPID_ITEM.readTable(raf); + } + else if (group.equals(DIMSTYLE)) { + //System.out.println("\tTABLE DIMSTYLE"); + tables.dimStyle = DxfTABLE_DIMSTYLE_ITEM.readTable(raf); + } + else if (group.equals(LTYPE)) { + //System.out.println("\tTABLE LTYPE"); + tables.lType = DxfTABLE_LTYPE_ITEM.readTable(raf); + } + else if (group.equals(LAYER)) { + //System.out.println("\tTABLE LAYER"); + tables.layer = DxfTABLE_LAYER_ITEM.readTable(raf); + } + else if (group.equals(STYLE)) { + //System.out.println("\tTABLE STYLE"); + tables.style = DxfTABLE_STYLE_ITEM.readTable(raf); + } + else if (group.equals(UCS)) { + //System.out.println("\tTABLE UCS"); + tables.ucs = DxfTABLE_UCS_ITEM.readTable(raf); + } + else if (group.equals(VIEW)) { + //System.out.println("\tTABLE VIEW"); + tables.view= DxfTABLE_VIEW_ITEM.readTable(raf); + } + else if (group.equals(VPORT)) { + //System.out.println("\tTABLE VPORT"); + tables.vPort= DxfTABLE_VPORT_ITEM.readTable(raf); + } + else if (group.getCode() == 999) { + //System.out.println("Commentaire : " + group.getValue()); + } + else { + //System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); + } + } + else if (group.getCode() == 999) { + //System.out.println("Commentaire : " + group.getValue()); + } + else { + //System.out.println("Group " + group.getCode() + " " + group.getValue() + " UNKNOWN"); + } + } + return tables; + } + + public String toString() { + StringBuffer sb = new StringBuffer(DxfFile.SECTION.toString()); + sb.append(DxfFile.TABLES.toString()); + if (vPort.size() >0) { + sb.append(DxfTABLES.TABLE.toString()); + sb.append(DxfTABLES.VPORT.toString()); + sb.append(DxfGroup.toString(70, Integer.toString(vPort.size()))); + Iterator it = vPort.keySet().iterator(); + while (it.hasNext()) { + sb.append(DxfGroup.toString(0, "VPORT")); + sb.append(((DxfTABLE_VPORT_ITEM)vPort.get(it.next())).toString()); + } + sb.append(DxfTABLES.ENDTAB.toString()); + } + if (appId.size() > 0) { + sb.append(DxfTABLES.TABLE.toString()); + sb.append(DxfTABLES.APPID.toString()); + sb.append(DxfGroup.toString(70, Integer.toString(appId.size()))); + Iterator it = appId.keySet().iterator(); + while (it.hasNext()) { + sb.append(DxfGroup.toString(0, "APPID")); + sb.append(((DxfTABLE_APPID_ITEM)appId.get(it.next())).toString()); + } + sb.append(DxfTABLES.ENDTAB.toString()); + } + if (dimStyle.size() >0) { + sb.append(DxfTABLES.TABLE.toString()); + sb.append(DxfTABLES.DIMSTYLE.toString()); + sb.append(DxfGroup.toString(70, Integer.toString(dimStyle.size()))); + Iterator it = dimStyle.keySet().iterator(); + while (it.hasNext()) { + sb.append(DxfGroup.toString(0, "DIMSTYLE")); + sb.append(((DxfTABLE_DIMSTYLE_ITEM)dimStyle.get(it.next())).toString()); + } + sb.append(DxfTABLES.ENDTAB.toString()); + } + if (lType.size() >0) { + sb.append(DxfTABLES.TABLE.toString()); + sb.append(DxfTABLES.LTYPE.toString()); + sb.append(DxfGroup.toString(70, Integer.toString(lType.size()))); + Iterator it = lType.keySet().iterator(); + while (it.hasNext()) { + sb.append(DxfGroup.toString(0, "LTYPE")); + sb.append(((DxfTABLE_LTYPE_ITEM)lType.get(it.next())).toString()); + } + sb.append(DxfTABLES.ENDTAB.toString()); + } + if (layer.size() >0) { + sb.append(DxfTABLES.TABLE.toString()); + sb.append(DxfTABLES.LAYER.toString()); + sb.append(DxfGroup.toString(70, Integer.toString(layer.size()))); + Iterator it = layer.keySet().iterator(); + while (it.hasNext()) { + sb.append(DxfGroup.toString(0, "LAYER")); + sb.append(((DxfTABLE_LAYER_ITEM)layer.get(it.next())).toString()); + } + sb.append(DxfTABLES.ENDTAB.toString()); + } + if (style.size() >0) { + sb.append(DxfTABLES.TABLE.toString()); + sb.append(DxfTABLES.STYLE.toString()); + sb.append(DxfGroup.toString(70, Integer.toString(style.size()))); + Iterator it = style.keySet().iterator(); + while (it.hasNext()) { + sb.append(DxfGroup.toString(0, "STYLE")); + sb.append(((DxfTABLE_STYLE_ITEM)style.get(it.next())).toString()); + } + sb.append(DxfTABLES.ENDTAB.toString()); + } + if (ucs.size() >0) { + sb.append(DxfTABLES.TABLE.toString()); + sb.append(DxfTABLES.UCS.toString()); + sb.append(DxfGroup.toString(70, Integer.toString(ucs.size()))); + Iterator it = ucs.keySet().iterator(); + while (it.hasNext()) { + sb.append(DxfGroup.toString(0, "UCS")); + sb.append(((DxfTABLE_UCS_ITEM)ucs.get(it.next())).toString()); + } + sb.append(DxfTABLES.ENDTAB.toString()); + } + if (view.size() >0) { + sb.append(DxfTABLES.TABLE.toString()); + sb.append(DxfTABLES.VIEW.toString()); + sb.append(DxfGroup.toString(70, Integer.toString(view.size()))); + Iterator it = view.keySet().iterator(); + while (it.hasNext()) { + sb.append(DxfGroup.toString(0, "VIEW")); + sb.append(((DxfTABLE_VIEW_ITEM)view.get(it.next())).toString()); + } + sb.append(DxfTABLES.ENDTAB.toString()); + } + sb.append(DxfFile.ENDSEC.toString()); + return sb.toString(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_APPID_ITEM.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_APPID_ITEM.java index 6e6e70bc0..09db1d452 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_APPID_ITEM.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_APPID_ITEM.java @@ -1,68 +1,68 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import java.util.Map; -import java.util.LinkedHashMap; - -/** - * The APPID item in the TABLES section - * There is a static reader to read the item in a DXF file - * and a toString method able to write it in a DXF form - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfTABLE_APPID_ITEM extends DxfTABLE_ITEM { - - public DxfTABLE_APPID_ITEM(String name, int flags) { - super(name, flags); - } - - public static Map readTable(RandomAccessFile raf) throws IOException { - DxfTABLE_APPID_ITEM item = new DxfTABLE_APPID_ITEM("DEFAULT", 0); - Map table = new LinkedHashMap(); - try { - DxfGroup group; - while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { - if (group.equals(APPID)) { - item = new DxfTABLE_APPID_ITEM("DEFAULT", 0); - } - else if (group.getCode()==2) { - item.setName(group.getValue()); - table.put(item.getName(), item); - } - else if (group.getCode()==5) {} // tag appeared in version 13 of DXF - else if (group.getCode()==100) {} // tag appeared in version 13 of DXF - else if (group.getCode()==70) {item.setFlags(group.getIntValue());} - else {} - } - } catch(IOException ioe) {throw ioe;} - return table; - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import java.util.Map; +import java.util.LinkedHashMap; + +/** + * The APPID item in the TABLES section + * There is a static reader to read the item in a DXF file + * and a toString method able to write it in a DXF form + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfTABLE_APPID_ITEM extends DxfTABLE_ITEM { + + public DxfTABLE_APPID_ITEM(String name, int flags) { + super(name, flags); + } + + public static Map readTable(RandomAccessFile raf) throws IOException { + DxfTABLE_APPID_ITEM item = new DxfTABLE_APPID_ITEM("DEFAULT", 0); + Map table = new LinkedHashMap(); + try { + DxfGroup group; + while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { + if (group.equals(APPID)) { + item = new DxfTABLE_APPID_ITEM("DEFAULT", 0); + } + else if (group.getCode()==2) { + item.setName(group.getValue()); + table.put(item.getName(), item); + } + else if (group.getCode()==5) {} // tag appeared in version 13 of DXF + else if (group.getCode()==100) {} // tag appeared in version 13 of DXF + else if (group.getCode()==70) {item.setFlags(group.getIntValue());} + else {} + } + } catch(IOException ioe) {throw ioe;} + return table; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_DIMSTYLE_ITEM.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_DIMSTYLE_ITEM.java index 6a02105ff..7b543917f 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_DIMSTYLE_ITEM.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_DIMSTYLE_ITEM.java @@ -1,70 +1,70 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import java.util.Map; -import java.util.LinkedHashMap; - -/** - * The DIMSTYLE item in the TABLES section - * There is a static reader to read the item in a DXF file - * and a toString method able to write it in a DXF form - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfTABLE_DIMSTYLE_ITEM extends DxfTABLE_ITEM { - - public DxfTABLE_DIMSTYLE_ITEM(String name, int flags) { - super(name, flags); - } - - public static Map readTable(RandomAccessFile raf) throws IOException { - DxfTABLE_DIMSTYLE_ITEM item = new DxfTABLE_DIMSTYLE_ITEM("DEFAULT", 0); - Map table = new LinkedHashMap(); - try { - DxfGroup group; - while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { - if (group.equals(DIMSTYLE)) { - item = new DxfTABLE_DIMSTYLE_ITEM("DEFAULT", 0); - } - else if (group.getCode()==2) { - item.setName(group.getValue()); - table.put(item.getName(), item); - } - else if (group.getCode()==5) {} // tag appeared in version 13 of DXF - else if (group.getCode()==100) {} // tag appeared in version 13 of DXF - else if (group.getCode()==70) { - item.setFlags(group.getIntValue()); - } - else {} - } - } catch(IOException ioe) {throw ioe;} - return table; - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import java.util.Map; +import java.util.LinkedHashMap; + +/** + * The DIMSTYLE item in the TABLES section + * There is a static reader to read the item in a DXF file + * and a toString method able to write it in a DXF form + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfTABLE_DIMSTYLE_ITEM extends DxfTABLE_ITEM { + + public DxfTABLE_DIMSTYLE_ITEM(String name, int flags) { + super(name, flags); + } + + public static Map readTable(RandomAccessFile raf) throws IOException { + DxfTABLE_DIMSTYLE_ITEM item = new DxfTABLE_DIMSTYLE_ITEM("DEFAULT", 0); + Map table = new LinkedHashMap(); + try { + DxfGroup group; + while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { + if (group.equals(DIMSTYLE)) { + item = new DxfTABLE_DIMSTYLE_ITEM("DEFAULT", 0); + } + else if (group.getCode()==2) { + item.setName(group.getValue()); + table.put(item.getName(), item); + } + else if (group.getCode()==5) {} // tag appeared in version 13 of DXF + else if (group.getCode()==100) {} // tag appeared in version 13 of DXF + else if (group.getCode()==70) { + item.setFlags(group.getIntValue()); + } + else {} + } + } catch(IOException ioe) {throw ioe;} + return table; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_ITEM.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_ITEM.java index e3ddb097c..dd3a517de 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_ITEM.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_ITEM.java @@ -1,72 +1,72 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - - -/** - * This class represent one of the TABLE of the TABLES section. - * It has as many subclasses as the number of table types - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfTABLE_ITEM { - public final static DxfGroup ENDTAB = new DxfGroup(0, "ENDTAB"); - public final static DxfGroup APPID = new DxfGroup(0, "APPID"); - public final static DxfGroup DIMSTYLE = new DxfGroup(0, "DIMSTYLE"); - public final static DxfGroup LAYER = new DxfGroup(0, "LAYER"); - public final static DxfGroup LTYPE = new DxfGroup(0, "LTYPE"); - public final static DxfGroup STYLE = new DxfGroup(0, "STYLE"); - public final static DxfGroup UCS = new DxfGroup(0, "UCS"); - public final static DxfGroup VIEW = new DxfGroup(0, "VIEW"); - public final static DxfGroup VPORT = new DxfGroup(0, "VPORT"); - - private String name; - private int flags = 0; - - public DxfTABLE_ITEM(String name, int flags) { - this.name = name; - this.flags = flags; - } - - public String getName(){return name;} - public void setName(String name) {this.name = name;} - public int getFlags(){return flags;} - public void setFlags(int flags) {this.flags = flags;} - - public boolean getFlag1(){return ((flags&1)==1);} - public boolean getFlag2(){return ((flags&2)==2);} - public boolean getFlag4(){return ((flags&4)==4);} - public boolean getFlag8(){return ((flags&8)==8);} - public boolean getFlag16(){return ((flags&16)==16);} - public boolean getFlag32(){return ((flags&32)==32);} - public boolean getFlag64(){return ((flags&64)==64);} - public boolean getFlag128(){return ((flags&128)==128);} - - public String toString() { - return DxfGroup.toString(2, name) + DxfGroup.toString(70, flags); - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + + +/** + * This class represent one of the TABLE of the TABLES section. + * It has as many subclasses as the number of table types + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfTABLE_ITEM { + public final static DxfGroup ENDTAB = new DxfGroup(0, "ENDTAB"); + public final static DxfGroup APPID = new DxfGroup(0, "APPID"); + public final static DxfGroup DIMSTYLE = new DxfGroup(0, "DIMSTYLE"); + public final static DxfGroup LAYER = new DxfGroup(0, "LAYER"); + public final static DxfGroup LTYPE = new DxfGroup(0, "LTYPE"); + public final static DxfGroup STYLE = new DxfGroup(0, "STYLE"); + public final static DxfGroup UCS = new DxfGroup(0, "UCS"); + public final static DxfGroup VIEW = new DxfGroup(0, "VIEW"); + public final static DxfGroup VPORT = new DxfGroup(0, "VPORT"); + + private String name; + private int flags = 0; + + public DxfTABLE_ITEM(String name, int flags) { + this.name = name; + this.flags = flags; + } + + public String getName(){return name;} + public void setName(String name) {this.name = name;} + public int getFlags(){return flags;} + public void setFlags(int flags) {this.flags = flags;} + + public boolean getFlag1(){return ((flags&1)==1);} + public boolean getFlag2(){return ((flags&2)==2);} + public boolean getFlag4(){return ((flags&4)==4);} + public boolean getFlag8(){return ((flags&8)==8);} + public boolean getFlag16(){return ((flags&16)==16);} + public boolean getFlag32(){return ((flags&32)==32);} + public boolean getFlag64(){return ((flags&64)==64);} + public boolean getFlag128(){return ((flags&128)==128);} + + public String toString() { + return DxfGroup.toString(2, name) + DxfGroup.toString(70, flags); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_LAYER_ITEM.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_LAYER_ITEM.java index 06cb80742..1dbcf3582 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_LAYER_ITEM.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_LAYER_ITEM.java @@ -1,94 +1,94 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.InputStreamReader; -import java.io.IOException; -import java.util.Map; -import java.util.LinkedHashMap; - -/** - * The LAYER item in the TABLES section - * There is a static reader to read the item in a DXF file - * and a toString method able to write it in a DXF form - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfTABLE_LAYER_ITEM extends DxfTABLE_ITEM { - private int colorNumber; - private String lineType; - - public DxfTABLE_LAYER_ITEM(String name, int flags) { - super(name, flags); - this.colorNumber = 0; - this.lineType = "DEFAULT"; - } - - public DxfTABLE_LAYER_ITEM(String name, int flags, int colorNumber, String lineType) { - super(name, flags); - this.colorNumber = colorNumber; - this.lineType = lineType; - } - - public String getLineType() {return lineType;} - public void setLineType(String lineType) {this.lineType = lineType;} - public int getcolorNumber() {return colorNumber;} - public void setColorNumber(int colorNumber) {this.colorNumber = colorNumber;} - - public static Map readTable(RandomAccessFile raf) throws IOException { - DxfTABLE_LAYER_ITEM item = new DxfTABLE_LAYER_ITEM("DEFAULT", 0); - Map table = new LinkedHashMap(); - try { - DxfGroup group; - while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { - if (group.equals(LAYER)) { - item = new DxfTABLE_LAYER_ITEM("DEFAULT", 0); - } - else if (group.getCode()==2) { - //System.out.println("\t\t" + group.getValue()); - item.setName(group.getValue()); - table.put(item.getName(), item); - } - else if (group.getCode()==5) {} // tag appeared in version 13 of DXF - else if (group.getCode()==100) {} // tag appeared in version 13 of DXF - else if (group.getCode()==70) {item.setFlags(group.getIntValue());} - else if (group.getCode()==62) {item.setColorNumber(group.getIntValue());} - else if (group.getCode()==6) {item.setLineType(group.getValue());} - else {} - } - } catch(IOException ioe) {throw ioe;} - return table; - } - - public String toString() { - StringBuffer sb = new StringBuffer(super.toString()); - sb.append(DxfGroup.toString(62, colorNumber)); - sb.append(DxfGroup.toString(6, lineType)); - return sb.toString(); - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.InputStreamReader; +import java.io.IOException; +import java.util.Map; +import java.util.LinkedHashMap; + +/** + * The LAYER item in the TABLES section + * There is a static reader to read the item in a DXF file + * and a toString method able to write it in a DXF form + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfTABLE_LAYER_ITEM extends DxfTABLE_ITEM { + private int colorNumber; + private String lineType; + + public DxfTABLE_LAYER_ITEM(String name, int flags) { + super(name, flags); + this.colorNumber = 0; + this.lineType = "DEFAULT"; + } + + public DxfTABLE_LAYER_ITEM(String name, int flags, int colorNumber, String lineType) { + super(name, flags); + this.colorNumber = colorNumber; + this.lineType = lineType; + } + + public String getLineType() {return lineType;} + public void setLineType(String lineType) {this.lineType = lineType;} + public int getcolorNumber() {return colorNumber;} + public void setColorNumber(int colorNumber) {this.colorNumber = colorNumber;} + + public static Map readTable(RandomAccessFile raf) throws IOException { + DxfTABLE_LAYER_ITEM item = new DxfTABLE_LAYER_ITEM("DEFAULT", 0); + Map table = new LinkedHashMap(); + try { + DxfGroup group; + while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { + if (group.equals(LAYER)) { + item = new DxfTABLE_LAYER_ITEM("DEFAULT", 0); + } + else if (group.getCode()==2) { + //System.out.println("\t\t" + group.getValue()); + item.setName(group.getValue()); + table.put(item.getName(), item); + } + else if (group.getCode()==5) {} // tag appeared in version 13 of DXF + else if (group.getCode()==100) {} // tag appeared in version 13 of DXF + else if (group.getCode()==70) {item.setFlags(group.getIntValue());} + else if (group.getCode()==62) {item.setColorNumber(group.getIntValue());} + else if (group.getCode()==6) {item.setLineType(group.getValue());} + else {} + } + } catch(IOException ioe) {throw ioe;} + return table; + } + + public String toString() { + StringBuffer sb = new StringBuffer(super.toString()); + sb.append(DxfGroup.toString(62, colorNumber)); + sb.append(DxfGroup.toString(6, lineType)); + return sb.toString(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_LTYPE_ITEM.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_LTYPE_ITEM.java index 35a808d61..58ec40ed0 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_LTYPE_ITEM.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_LTYPE_ITEM.java @@ -1,113 +1,113 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import java.util.Map; -import java.util.LinkedHashMap; - -/** - * The LTYPE item in the TABLES section - * There is a static reader to read the item in a DXF file - * and a toString method able to write it in a DXF form - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfTABLE_LTYPE_ITEM extends DxfTABLE_ITEM { - private String description; - private int alignment; - private float patternLength; - private float[] pattern; - - public DxfTABLE_LTYPE_ITEM(String name, int flags) { - super(name, flags); - this.description = ""; - this.alignment = 0; - this.patternLength = 1f; - this.pattern = new float[]{1f}; - } - - public DxfTABLE_LTYPE_ITEM(String name, int flags, String description, int alignment, float patternLength, float[] pattern) { - super(name, flags); - this.description = description; - this.alignment = alignment; - this.patternLength = patternLength; - this.pattern = pattern; - } - - public String getDescription() {return description;} - public void setDescription(String description) {this.description = description;} - public int getAlignment() {return alignment;} - public void setAlignment(int alignment) {this.alignment = alignment;} - public float getPatternLength() {return patternLength;} - public void setPatternLength(float patternLength) {this.patternLength = patternLength;} - public float[] getPattern() {return pattern;} - public void setPattern(float[] pattern) {this.pattern = pattern;} - - public static Map readTable(RandomAccessFile raf) throws IOException { - DxfTABLE_LTYPE_ITEM item = new DxfTABLE_LTYPE_ITEM("DEFAULT", 0); - Map table = new LinkedHashMap(); - try { - DxfGroup group; - int patternDashCount = 0; - while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { - if (group.equals(LTYPE)) { - item = new DxfTABLE_LTYPE_ITEM("DEFAULT", 0); - } - else if (group.getCode()==2) { - item.setName(group.getValue()); - table.put(item.getName(), item); - } - else if (group.getCode()==5) {} // tag appeared in version 13 of DXF - else if (group.getCode()==100) {} // tag appeared in version 13 of DXF - else if (group.getCode()==70) {item.setFlags(group.getIntValue());} - else if (group.getCode()==3) {item.setDescription(group.getValue());} - else if (group.getCode()==72) {item.setAlignment(group.getIntValue());} - else if (group.getCode()==73) {item.setPattern(new float[group.getIntValue()]);} - else if (group.getCode()==40) {item.setPatternLength(group.getFloatValue());} - else if (group.getCode()==49 && patternDashCount < item.getPattern().length) { - item.getPattern()[patternDashCount++] = group.getFloatValue(); - } - else {} - } - } catch(IOException ioe) {throw ioe;} - return table; - } - - public String toString() { - StringBuffer sb = new StringBuffer(super.toString()); - sb.append(DxfGroup.toString(3, description)); - sb.append(DxfGroup.toString(72, alignment)); - sb.append(DxfGroup.toString(73, pattern.length)); - sb.append(DxfGroup.toString(40, patternLength, 3)); - for (int i = 0 ; i < pattern.length ; i++) { - sb.append(DxfGroup.toString(49, pattern[i], 3)); - } - return sb.toString(); - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import java.util.Map; +import java.util.LinkedHashMap; + +/** + * The LTYPE item in the TABLES section + * There is a static reader to read the item in a DXF file + * and a toString method able to write it in a DXF form + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfTABLE_LTYPE_ITEM extends DxfTABLE_ITEM { + private String description; + private int alignment; + private float patternLength; + private float[] pattern; + + public DxfTABLE_LTYPE_ITEM(String name, int flags) { + super(name, flags); + this.description = ""; + this.alignment = 0; + this.patternLength = 1f; + this.pattern = new float[]{1f}; + } + + public DxfTABLE_LTYPE_ITEM(String name, int flags, String description, int alignment, float patternLength, float[] pattern) { + super(name, flags); + this.description = description; + this.alignment = alignment; + this.patternLength = patternLength; + this.pattern = pattern; + } + + public String getDescription() {return description;} + public void setDescription(String description) {this.description = description;} + public int getAlignment() {return alignment;} + public void setAlignment(int alignment) {this.alignment = alignment;} + public float getPatternLength() {return patternLength;} + public void setPatternLength(float patternLength) {this.patternLength = patternLength;} + public float[] getPattern() {return pattern;} + public void setPattern(float[] pattern) {this.pattern = pattern;} + + public static Map readTable(RandomAccessFile raf) throws IOException { + DxfTABLE_LTYPE_ITEM item = new DxfTABLE_LTYPE_ITEM("DEFAULT", 0); + Map table = new LinkedHashMap(); + try { + DxfGroup group; + int patternDashCount = 0; + while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { + if (group.equals(LTYPE)) { + item = new DxfTABLE_LTYPE_ITEM("DEFAULT", 0); + } + else if (group.getCode()==2) { + item.setName(group.getValue()); + table.put(item.getName(), item); + } + else if (group.getCode()==5) {} // tag appeared in version 13 of DXF + else if (group.getCode()==100) {} // tag appeared in version 13 of DXF + else if (group.getCode()==70) {item.setFlags(group.getIntValue());} + else if (group.getCode()==3) {item.setDescription(group.getValue());} + else if (group.getCode()==72) {item.setAlignment(group.getIntValue());} + else if (group.getCode()==73) {item.setPattern(new float[group.getIntValue()]);} + else if (group.getCode()==40) {item.setPatternLength(group.getFloatValue());} + else if (group.getCode()==49 && patternDashCount < item.getPattern().length) { + item.getPattern()[patternDashCount++] = group.getFloatValue(); + } + else {} + } + } catch(IOException ioe) {throw ioe;} + return table; + } + + public String toString() { + StringBuffer sb = new StringBuffer(super.toString()); + sb.append(DxfGroup.toString(3, description)); + sb.append(DxfGroup.toString(72, alignment)); + sb.append(DxfGroup.toString(73, pattern.length)); + sb.append(DxfGroup.toString(40, patternLength, 3)); + for (int i = 0 ; i < pattern.length ; i++) { + sb.append(DxfGroup.toString(49, pattern[i], 3)); + } + return sb.toString(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_STYLE_ITEM.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_STYLE_ITEM.java index 8e7ccb25f..850a18da7 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_STYLE_ITEM.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_STYLE_ITEM.java @@ -1,149 +1,149 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import java.util.Map; -import java.util.LinkedHashMap; - -/** - * The STYLE item in the TABLES section - * There is a static reader to read the item in a DXF file - * and a toString method able to write it in a DXF form - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfTABLE_STYLE_ITEM extends DxfTABLE_ITEM { - private float textHeight; - private float widthFactor; - private float obliquingAngle; - private int textGenerationFlags; - private float lastHeightUsed; - private String primaryFontFileName; - private String bigFontFileName; - - public DxfTABLE_STYLE_ITEM(String name, int flags) { - super(name, flags); - this.textHeight = 0f; - this.widthFactor = 0f; - this.obliquingAngle = 0f; - this.textGenerationFlags = 0; - this.lastHeightUsed = 0f; - this.primaryFontFileName = ""; - this.bigFontFileName = ""; - } - - public DxfTABLE_STYLE_ITEM(String name, int flags, - float textHeight, - float widthFactor, - float obliqingAngle, - int textGenerationFlags, - float lastHeightUsed, - String primaryFontFileName, - String bigFontFileName) { - super(name, flags); - this.textHeight = textHeight; - this.widthFactor = widthFactor; - this.obliquingAngle = obliqingAngle; - this.textGenerationFlags = textGenerationFlags; - this.lastHeightUsed = lastHeightUsed; - this.primaryFontFileName = primaryFontFileName; - this.bigFontFileName = bigFontFileName; - } - - public float getTextHeight() {return textHeight;} - public float getWidthFactor() {return widthFactor;} - public float getObliquingAngle() {return obliquingAngle;} - public int getTextGenerationFlags() {return textGenerationFlags;} - public float getLastHeightUsed() {return lastHeightUsed;} - public String getPrimaryFontFileName() {return primaryFontFileName;} - public String getBigFontFileName() {return bigFontFileName;} - - public void setTextHeight(float textHeight) { - this.textHeight = textHeight; - } - public void setWidthFactor(float widthFactor) { - this.widthFactor = widthFactor; - } - public void setObliquingAngle(float obliquingAngle) { - this.obliquingAngle = obliquingAngle; - } - public void setTextGenerationFlags(int textGenerationFlags) { - this.textGenerationFlags = textGenerationFlags; - } - public void setLastHeightUsed(float lastHeightUsed) { - this.lastHeightUsed = lastHeightUsed; - } - public void setPrimaryFontFileName(String primaryFontFileName) { - this.primaryFontFileName = primaryFontFileName; - } - public void setBigFontFileName(String bigFontFileName) { - this.bigFontFileName = bigFontFileName; - } - - public static Map readTable(RandomAccessFile raf) throws IOException { - DxfTABLE_STYLE_ITEM item = new DxfTABLE_STYLE_ITEM("DEFAULT", 0); - Map table = new LinkedHashMap(); - try { - DxfGroup group; - while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { - if (group.equals(STYLE)) { - item = new DxfTABLE_STYLE_ITEM("DEFAULT", 0); - } - else if (group.getCode()==2) { - item.setName(group.getValue()); - table.put(item.getName(), item); - } - else if (group.getCode()==5) {} // tag appeared in version 13 of DXF - else if (group.getCode()==100) {} // tag appeared in version 13 of DXF - else if (group.getCode()==70) {item.setFlags(group.getIntValue());} - else if (group.getCode()==40) {item.setTextHeight(group.getFloatValue());} - else if (group.getCode()==41) {item.setWidthFactor(group.getFloatValue());} - else if (group.getCode()==50) {item.setObliquingAngle(group.getFloatValue());} - else if (group.getCode()==71) {item.setTextGenerationFlags(group.getIntValue());} - else if (group.getCode()==42) {item.setLastHeightUsed(group.getFloatValue());} - else if (group.getCode()==3) {item.setPrimaryFontFileName(group.getValue());} - else if (group.getCode()==4) {item.setBigFontFileName(group.getValue());} - else {} - } - } catch(IOException ioe) {throw ioe;} - return table; - } - - public String toString() { - StringBuffer sb = new StringBuffer(super.toString()); - sb.append(DxfGroup.toString(40, textHeight, 3)); - sb.append(DxfGroup.toString(41, widthFactor, 3)); - sb.append(DxfGroup.toString(50, obliquingAngle, 3)); - sb.append(DxfGroup.toString(71, textGenerationFlags)); - sb.append(DxfGroup.toString(42, lastHeightUsed, 3)); - sb.append(DxfGroup.toString(3, primaryFontFileName)); - sb.append(DxfGroup.toString(4, bigFontFileName)); - return sb.toString(); - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import java.util.Map; +import java.util.LinkedHashMap; + +/** + * The STYLE item in the TABLES section + * There is a static reader to read the item in a DXF file + * and a toString method able to write it in a DXF form + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfTABLE_STYLE_ITEM extends DxfTABLE_ITEM { + private float textHeight; + private float widthFactor; + private float obliquingAngle; + private int textGenerationFlags; + private float lastHeightUsed; + private String primaryFontFileName; + private String bigFontFileName; + + public DxfTABLE_STYLE_ITEM(String name, int flags) { + super(name, flags); + this.textHeight = 0f; + this.widthFactor = 0f; + this.obliquingAngle = 0f; + this.textGenerationFlags = 0; + this.lastHeightUsed = 0f; + this.primaryFontFileName = ""; + this.bigFontFileName = ""; + } + + public DxfTABLE_STYLE_ITEM(String name, int flags, + float textHeight, + float widthFactor, + float obliqingAngle, + int textGenerationFlags, + float lastHeightUsed, + String primaryFontFileName, + String bigFontFileName) { + super(name, flags); + this.textHeight = textHeight; + this.widthFactor = widthFactor; + this.obliquingAngle = obliqingAngle; + this.textGenerationFlags = textGenerationFlags; + this.lastHeightUsed = lastHeightUsed; + this.primaryFontFileName = primaryFontFileName; + this.bigFontFileName = bigFontFileName; + } + + public float getTextHeight() {return textHeight;} + public float getWidthFactor() {return widthFactor;} + public float getObliquingAngle() {return obliquingAngle;} + public int getTextGenerationFlags() {return textGenerationFlags;} + public float getLastHeightUsed() {return lastHeightUsed;} + public String getPrimaryFontFileName() {return primaryFontFileName;} + public String getBigFontFileName() {return bigFontFileName;} + + public void setTextHeight(float textHeight) { + this.textHeight = textHeight; + } + public void setWidthFactor(float widthFactor) { + this.widthFactor = widthFactor; + } + public void setObliquingAngle(float obliquingAngle) { + this.obliquingAngle = obliquingAngle; + } + public void setTextGenerationFlags(int textGenerationFlags) { + this.textGenerationFlags = textGenerationFlags; + } + public void setLastHeightUsed(float lastHeightUsed) { + this.lastHeightUsed = lastHeightUsed; + } + public void setPrimaryFontFileName(String primaryFontFileName) { + this.primaryFontFileName = primaryFontFileName; + } + public void setBigFontFileName(String bigFontFileName) { + this.bigFontFileName = bigFontFileName; + } + + public static Map readTable(RandomAccessFile raf) throws IOException { + DxfTABLE_STYLE_ITEM item = new DxfTABLE_STYLE_ITEM("DEFAULT", 0); + Map table = new LinkedHashMap(); + try { + DxfGroup group; + while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { + if (group.equals(STYLE)) { + item = new DxfTABLE_STYLE_ITEM("DEFAULT", 0); + } + else if (group.getCode()==2) { + item.setName(group.getValue()); + table.put(item.getName(), item); + } + else if (group.getCode()==5) {} // tag appeared in version 13 of DXF + else if (group.getCode()==100) {} // tag appeared in version 13 of DXF + else if (group.getCode()==70) {item.setFlags(group.getIntValue());} + else if (group.getCode()==40) {item.setTextHeight(group.getFloatValue());} + else if (group.getCode()==41) {item.setWidthFactor(group.getFloatValue());} + else if (group.getCode()==50) {item.setObliquingAngle(group.getFloatValue());} + else if (group.getCode()==71) {item.setTextGenerationFlags(group.getIntValue());} + else if (group.getCode()==42) {item.setLastHeightUsed(group.getFloatValue());} + else if (group.getCode()==3) {item.setPrimaryFontFileName(group.getValue());} + else if (group.getCode()==4) {item.setBigFontFileName(group.getValue());} + else {} + } + } catch(IOException ioe) {throw ioe;} + return table; + } + + public String toString() { + StringBuffer sb = new StringBuffer(super.toString()); + sb.append(DxfGroup.toString(40, textHeight, 3)); + sb.append(DxfGroup.toString(41, widthFactor, 3)); + sb.append(DxfGroup.toString(50, obliquingAngle, 3)); + sb.append(DxfGroup.toString(71, textGenerationFlags)); + sb.append(DxfGroup.toString(42, lastHeightUsed, 3)); + sb.append(DxfGroup.toString(3, primaryFontFileName)); + sb.append(DxfGroup.toString(4, bigFontFileName)); + return sb.toString(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_UCS_ITEM.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_UCS_ITEM.java index d880c8e27..0fcd9816c 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_UCS_ITEM.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_UCS_ITEM.java @@ -1,138 +1,138 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import java.util.Map; -import java.util.LinkedHashMap; - -/** - * The UCS item in the TABLES section - * There is a static reader to read the item in a DXF file - * and a toString method able to write it in a DXF form - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfTABLE_UCS_ITEM extends DxfTABLE_ITEM { - private double[] origin = new double[3]; - private double[] xAxisDirection = new double[3]; - private double[] yAxisDirection = new double[3]; - - public DxfTABLE_UCS_ITEM(String name, int flags) { - super(name, flags); - this.origin = new double[3]; - this.xAxisDirection = new double[3]; - this.yAxisDirection = new double[3]; - } - - public DxfTABLE_UCS_ITEM(String name, int flags, - double[] origin, - double[] xAxisDirection, - double[] yAxisDirection ) { - super(name, flags); - this.origin = origin; - this.xAxisDirection = xAxisDirection; - this.yAxisDirection = yAxisDirection; - } - - public double[] getOrigin() {return origin;} - public double getOriginX() {return origin[0];} - public double getOriginY() {return origin[1];} - public double getOriginZ() {return origin[2];} - - public double[] getXAxisDirection() {return xAxisDirection;} - public double getXAxisDirectionX() {return xAxisDirection[0];} - public double getXAxisDirectionY() {return xAxisDirection[1];} - public double getXAxisDirectionZ() {return xAxisDirection[2];} - - public double[] getYAxisDirection() {return yAxisDirection;} - public double getYAxisDirectionX() {return yAxisDirection[0];} - public double getYAxisDirectionY() {return yAxisDirection[1];} - public double getYAxisDirectionZ() {return yAxisDirection[2];} - - public void setOrigin(double[] origin) {this.origin = origin;} - public void setOriginX(double originX) {this.origin[0] = originX;} - public void setOriginY(double originY) {this.origin[1] = originY;} - public void setOriginZ(double originZ) {this.origin[2] = originZ;} - - public void setXAxisDirection(double[] xAxisDirection) {this.xAxisDirection = xAxisDirection;} - public void setXAxisDirectionX(double xAxisDirectionX) {this.xAxisDirection[0] = xAxisDirectionX;} - public void setXAxisDirectionY(double xAxisDirectionY) {this.xAxisDirection[1] = xAxisDirectionY;} - public void setXAxisDirectionZ(double xAxisDirectionZ) {this.xAxisDirection[2] = xAxisDirectionZ;} - - - public void setYAxisDirection(double[] yAxisDirection) {this.yAxisDirection = yAxisDirection;} - public void setYAxisDirectionX(double yAxisDirectionX) {this.yAxisDirection[0] = yAxisDirectionX;} - public void setYAxisDirectionY(double yAxisDirectionY) {this.yAxisDirection[1] = yAxisDirectionY;} - public void setYAxisDirectionZ(double yAxisDirectionZ) {this.yAxisDirection[2] = yAxisDirectionZ;} - - public static Map readTable(RandomAccessFile raf) throws IOException { - DxfTABLE_UCS_ITEM item = new DxfTABLE_UCS_ITEM("DEFAULT", 0); - Map table = new LinkedHashMap(); - try { - DxfGroup group; - while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { - if (group.equals(UCS)) { - item = new DxfTABLE_UCS_ITEM("DEFAULT", 0); - } - else if (group.getCode()==2) { - item.setName(group.getValue()); - table.put(item.getName(), item); - } - else if (group.getCode()==5) {} // tag appeared in version 13 of DXF - else if (group.getCode()==100) {} // tag appeared in version 13 of DXF - else if (group.getCode()==70) {item.setFlags(group.getIntValue());} - else if (group.getCode()==10) {item.setOriginX(group.getDoubleValue());} - else if (group.getCode()==20) {item.setOriginY(group.getDoubleValue());} - else if (group.getCode()==30) {item.setOriginZ(group.getDoubleValue());} - else if (group.getCode()==11) {item.setXAxisDirectionX(group.getDoubleValue());} - else if (group.getCode()==21) {item.setXAxisDirectionY(group.getDoubleValue());} - else if (group.getCode()==31) {item.setXAxisDirectionZ(group.getDoubleValue());} - else if (group.getCode()==12) {item.setYAxisDirectionX(group.getDoubleValue());} - else if (group.getCode()==22) {item.setYAxisDirectionY(group.getDoubleValue());} - else if (group.getCode()==32) {item.setYAxisDirectionZ(group.getDoubleValue());} - else {} - } - } catch(IOException ioe) {throw ioe;} - return table; - } - - public String toString() { - StringBuffer sb = new StringBuffer(super.toString()); - sb.append(DxfGroup.toString(10, origin[0], 6)); - sb.append(DxfGroup.toString(20, origin[1], 6)); - sb.append(DxfGroup.toString(30, origin[2], 6)); - sb.append(DxfGroup.toString(11, xAxisDirection[0], 6)); - sb.append(DxfGroup.toString(21, xAxisDirection[1], 6)); - sb.append(DxfGroup.toString(31, xAxisDirection[2], 6)); - sb.append(DxfGroup.toString(12, yAxisDirection[0], 6)); - sb.append(DxfGroup.toString(22, yAxisDirection[1], 6)); - sb.append(DxfGroup.toString(32, yAxisDirection[2], 6)); - return sb.toString(); - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import java.util.Map; +import java.util.LinkedHashMap; + +/** + * The UCS item in the TABLES section + * There is a static reader to read the item in a DXF file + * and a toString method able to write it in a DXF form + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfTABLE_UCS_ITEM extends DxfTABLE_ITEM { + private double[] origin = new double[3]; + private double[] xAxisDirection = new double[3]; + private double[] yAxisDirection = new double[3]; + + public DxfTABLE_UCS_ITEM(String name, int flags) { + super(name, flags); + this.origin = new double[3]; + this.xAxisDirection = new double[3]; + this.yAxisDirection = new double[3]; + } + + public DxfTABLE_UCS_ITEM(String name, int flags, + double[] origin, + double[] xAxisDirection, + double[] yAxisDirection ) { + super(name, flags); + this.origin = origin; + this.xAxisDirection = xAxisDirection; + this.yAxisDirection = yAxisDirection; + } + + public double[] getOrigin() {return origin;} + public double getOriginX() {return origin[0];} + public double getOriginY() {return origin[1];} + public double getOriginZ() {return origin[2];} + + public double[] getXAxisDirection() {return xAxisDirection;} + public double getXAxisDirectionX() {return xAxisDirection[0];} + public double getXAxisDirectionY() {return xAxisDirection[1];} + public double getXAxisDirectionZ() {return xAxisDirection[2];} + + public double[] getYAxisDirection() {return yAxisDirection;} + public double getYAxisDirectionX() {return yAxisDirection[0];} + public double getYAxisDirectionY() {return yAxisDirection[1];} + public double getYAxisDirectionZ() {return yAxisDirection[2];} + + public void setOrigin(double[] origin) {this.origin = origin;} + public void setOriginX(double originX) {this.origin[0] = originX;} + public void setOriginY(double originY) {this.origin[1] = originY;} + public void setOriginZ(double originZ) {this.origin[2] = originZ;} + + public void setXAxisDirection(double[] xAxisDirection) {this.xAxisDirection = xAxisDirection;} + public void setXAxisDirectionX(double xAxisDirectionX) {this.xAxisDirection[0] = xAxisDirectionX;} + public void setXAxisDirectionY(double xAxisDirectionY) {this.xAxisDirection[1] = xAxisDirectionY;} + public void setXAxisDirectionZ(double xAxisDirectionZ) {this.xAxisDirection[2] = xAxisDirectionZ;} + + + public void setYAxisDirection(double[] yAxisDirection) {this.yAxisDirection = yAxisDirection;} + public void setYAxisDirectionX(double yAxisDirectionX) {this.yAxisDirection[0] = yAxisDirectionX;} + public void setYAxisDirectionY(double yAxisDirectionY) {this.yAxisDirection[1] = yAxisDirectionY;} + public void setYAxisDirectionZ(double yAxisDirectionZ) {this.yAxisDirection[2] = yAxisDirectionZ;} + + public static Map readTable(RandomAccessFile raf) throws IOException { + DxfTABLE_UCS_ITEM item = new DxfTABLE_UCS_ITEM("DEFAULT", 0); + Map table = new LinkedHashMap(); + try { + DxfGroup group; + while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { + if (group.equals(UCS)) { + item = new DxfTABLE_UCS_ITEM("DEFAULT", 0); + } + else if (group.getCode()==2) { + item.setName(group.getValue()); + table.put(item.getName(), item); + } + else if (group.getCode()==5) {} // tag appeared in version 13 of DXF + else if (group.getCode()==100) {} // tag appeared in version 13 of DXF + else if (group.getCode()==70) {item.setFlags(group.getIntValue());} + else if (group.getCode()==10) {item.setOriginX(group.getDoubleValue());} + else if (group.getCode()==20) {item.setOriginY(group.getDoubleValue());} + else if (group.getCode()==30) {item.setOriginZ(group.getDoubleValue());} + else if (group.getCode()==11) {item.setXAxisDirectionX(group.getDoubleValue());} + else if (group.getCode()==21) {item.setXAxisDirectionY(group.getDoubleValue());} + else if (group.getCode()==31) {item.setXAxisDirectionZ(group.getDoubleValue());} + else if (group.getCode()==12) {item.setYAxisDirectionX(group.getDoubleValue());} + else if (group.getCode()==22) {item.setYAxisDirectionY(group.getDoubleValue());} + else if (group.getCode()==32) {item.setYAxisDirectionZ(group.getDoubleValue());} + else {} + } + } catch(IOException ioe) {throw ioe;} + return table; + } + + public String toString() { + StringBuffer sb = new StringBuffer(super.toString()); + sb.append(DxfGroup.toString(10, origin[0], 6)); + sb.append(DxfGroup.toString(20, origin[1], 6)); + sb.append(DxfGroup.toString(30, origin[2], 6)); + sb.append(DxfGroup.toString(11, xAxisDirection[0], 6)); + sb.append(DxfGroup.toString(21, xAxisDirection[1], 6)); + sb.append(DxfGroup.toString(31, xAxisDirection[2], 6)); + sb.append(DxfGroup.toString(12, yAxisDirection[0], 6)); + sb.append(DxfGroup.toString(22, yAxisDirection[1], 6)); + sb.append(DxfGroup.toString(32, yAxisDirection[2], 6)); + return sb.toString(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_VIEW_ITEM.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_VIEW_ITEM.java index 65c629f1f..9dfa2278a 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_VIEW_ITEM.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_VIEW_ITEM.java @@ -1,197 +1,197 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import java.util.Map; -import java.util.LinkedHashMap; - -/** - * The VIEW item in the TABLES section - * There is a static reader to read the item in a DXF file - * and a toString method able to write it in a DXF form - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfTABLE_VIEW_ITEM extends DxfTABLE_ITEM { - private float viewHeight; - private float viewWidth; - private double viewCenterPointX; - private double viewCenterPointY; - private double[] viewDirectionFromTarget; - private double[] targetPoint; - private float lensLength; - private double frontClippingPlaneOffset; - private double backClippingPlaneOffset; - private float twistAngle; - private int viewMode; - - public DxfTABLE_VIEW_ITEM(String name, int flags) { - super(name, flags); - this.viewHeight = 0f; - this.viewWidth = 0f; - this.viewCenterPointX = 0.0; - this.viewCenterPointY = 0; - this.viewDirectionFromTarget = new double[3]; - this.targetPoint = new double[3]; - this.lensLength = 0f; - this.frontClippingPlaneOffset = 0.0; - this.backClippingPlaneOffset = 0.0; - this.twistAngle = 0f; - this.viewMode = 0; - } - - public DxfTABLE_VIEW_ITEM(String name, int flags, - float viewHeight, - float viewWidth, - double viewCenterPointX, - double viewCenterPointY, - double[] viewDirectionFromTarget, - double[] targetPoint, - float lensLength, - double frontClippingPlaneOffset, - double backClippingPlaneOffset, - float twistAngle, - int viewMode) { - super(name, flags); - this.viewHeight = viewHeight; - this.viewWidth = viewWidth; - this.viewCenterPointX = viewCenterPointX; - this.viewCenterPointY = viewCenterPointY; - this.viewDirectionFromTarget = viewDirectionFromTarget; - this.targetPoint = targetPoint; - this.lensLength = lensLength; - this.frontClippingPlaneOffset = frontClippingPlaneOffset; - this.backClippingPlaneOffset = backClippingPlaneOffset; - this.twistAngle = twistAngle; - this.viewMode = viewMode; - } - - public float getViewHeight() {return viewHeight;} - public float getViewWidth() {return viewWidth;} - public double getViewCenterPointX() {return viewCenterPointX;} - public double getViewCenterPointY() {return viewCenterPointY;} - public double[] getViewDirectionFromTarget() {return viewDirectionFromTarget;} - public double[] getTargetPoint() {return targetPoint;} - public float getLensLength() {return lensLength;} - public double getFrontClippingPlaneOffset() {return frontClippingPlaneOffset;} - public double getBackClippingPlaneOffset() {return backClippingPlaneOffset;} - public float getTwistAngle() {return twistAngle;} - public int getViewMode() {return viewMode;} - - public void setViewHeight(float viewHeight) {this.viewHeight = viewHeight;} - public void setViewWidth(float viewWidth) {this.viewWidth = viewWidth;} - public void setViewCenterPointX(double viewCenterPointX) {this.viewCenterPointX = viewCenterPointX;} - public void setViewCenterPointY(double viewCenterPointY) {this.viewCenterPointY = viewCenterPointY;} - public void setViewDirectionFromTarget(double[] viewDirectionFromTarget) {this.viewDirectionFromTarget = viewDirectionFromTarget;} - public void setTargetPoint(double[] targetPoint) {this.targetPoint = targetPoint;} - public void setLensLength(float lensLength) {this.lensLength = lensLength;} - public void setFrontClippingPlaneOffset(double frontClippingPlaneOffset) {this.frontClippingPlaneOffset = frontClippingPlaneOffset;} - public void setBackClippingPlaneOffset(double backClippingPlaneOffset) {this.backClippingPlaneOffset = backClippingPlaneOffset;} - public void setTwistAngle(float twistAngle) {this.twistAngle = twistAngle;} - public void setViewMode(int viewMode) {this.viewMode = viewMode;} - - public static Map readTable(RandomAccessFile raf) throws IOException { - DxfTABLE_VIEW_ITEM item = new DxfTABLE_VIEW_ITEM("DEFAULT", 0); - Map table = new LinkedHashMap(); - try { - DxfGroup group; - while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { - if (group.equals(VIEW)) { - item = new DxfTABLE_VIEW_ITEM("DEFAULT", 0); - } - else if (group.getCode()==2) { - item.setName(group.getValue()); - table.put(item.getName(), item); - } - else if (group.getCode()==5) {} // tag appeared in version 13 of DXF - else if (group.getCode()==100) {} // tag appeared in version 13 of DXF - else if (group.getCode()==70) {item.setFlags(group.getIntValue());} - else if (group.getCode()==40) {item.setViewHeight(group.getFloatValue());} - else if (group.getCode()==41) {item.setViewWidth(group.getFloatValue());} - else if (group.getCode()==10) {item.setViewCenterPointX(group.getDoubleValue());} - else if (group.getCode()==20) {item.setViewCenterPointY(group.getDoubleValue());} - else if (group.getCode()==11) { - item.getViewDirectionFromTarget()[0] = group.getDoubleValue(); - } - else if (group.getCode()==21) { - item.getViewDirectionFromTarget()[1] = group.getDoubleValue(); - } - else if (group.getCode()==31) { - item.getViewDirectionFromTarget()[2] = group.getDoubleValue(); - } - else if (group.getCode()==12) { - item.getTargetPoint()[0] = group.getDoubleValue(); - } - else if (group.getCode()==22) { - item.getTargetPoint()[1] = group.getDoubleValue(); - } - else if (group.getCode()==32) { - item.getTargetPoint()[2] = group.getDoubleValue(); - } - else if (group.getCode()==42) { - item.setLensLength(group.getFloatValue()); - } - else if (group.getCode()==43) { - item.setFrontClippingPlaneOffset(group.getDoubleValue()); - } - else if (group.getCode()==44) { - item.setBackClippingPlaneOffset(group.getDoubleValue()); - } - else if (group.getCode()==50) { - item.setTwistAngle(group.getFloatValue()); - } - else if (group.getCode()==71) { - item.setViewMode(group.getIntValue()); - } - else {} - } - } catch(IOException ioe) {throw ioe;} - return table; - } - - public String toString() { - StringBuffer sb = new StringBuffer(super.toString()); - sb.append(DxfGroup.toString(40, viewHeight, 6)); - sb.append(DxfGroup.toString(41, viewWidth, 6)); - sb.append(DxfGroup.toString(10, viewCenterPointX, 6)); - sb.append(DxfGroup.toString(20, viewCenterPointY, 6)); - sb.append(DxfGroup.toString(11, viewDirectionFromTarget[0], 6)); - sb.append(DxfGroup.toString(21, viewDirectionFromTarget[1], 6)); - sb.append(DxfGroup.toString(31, viewDirectionFromTarget[2], 6)); - sb.append(DxfGroup.toString(12, targetPoint[0], 6)); - sb.append(DxfGroup.toString(22, targetPoint[1], 6)); - sb.append(DxfGroup.toString(32, targetPoint[2], 6)); - sb.append(DxfGroup.toString(42, lensLength, 6)); - sb.append(DxfGroup.toString(43, frontClippingPlaneOffset, 6)); - sb.append(DxfGroup.toString(44, backClippingPlaneOffset, 6)); - sb.append(DxfGroup.toString(50, twistAngle, 6)); - sb.append(DxfGroup.toString(71, viewMode)); - return sb.toString(); - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import java.util.Map; +import java.util.LinkedHashMap; + +/** + * The VIEW item in the TABLES section + * There is a static reader to read the item in a DXF file + * and a toString method able to write it in a DXF form + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfTABLE_VIEW_ITEM extends DxfTABLE_ITEM { + private float viewHeight; + private float viewWidth; + private double viewCenterPointX; + private double viewCenterPointY; + private double[] viewDirectionFromTarget; + private double[] targetPoint; + private float lensLength; + private double frontClippingPlaneOffset; + private double backClippingPlaneOffset; + private float twistAngle; + private int viewMode; + + public DxfTABLE_VIEW_ITEM(String name, int flags) { + super(name, flags); + this.viewHeight = 0f; + this.viewWidth = 0f; + this.viewCenterPointX = 0.0; + this.viewCenterPointY = 0; + this.viewDirectionFromTarget = new double[3]; + this.targetPoint = new double[3]; + this.lensLength = 0f; + this.frontClippingPlaneOffset = 0.0; + this.backClippingPlaneOffset = 0.0; + this.twistAngle = 0f; + this.viewMode = 0; + } + + public DxfTABLE_VIEW_ITEM(String name, int flags, + float viewHeight, + float viewWidth, + double viewCenterPointX, + double viewCenterPointY, + double[] viewDirectionFromTarget, + double[] targetPoint, + float lensLength, + double frontClippingPlaneOffset, + double backClippingPlaneOffset, + float twistAngle, + int viewMode) { + super(name, flags); + this.viewHeight = viewHeight; + this.viewWidth = viewWidth; + this.viewCenterPointX = viewCenterPointX; + this.viewCenterPointY = viewCenterPointY; + this.viewDirectionFromTarget = viewDirectionFromTarget; + this.targetPoint = targetPoint; + this.lensLength = lensLength; + this.frontClippingPlaneOffset = frontClippingPlaneOffset; + this.backClippingPlaneOffset = backClippingPlaneOffset; + this.twistAngle = twistAngle; + this.viewMode = viewMode; + } + + public float getViewHeight() {return viewHeight;} + public float getViewWidth() {return viewWidth;} + public double getViewCenterPointX() {return viewCenterPointX;} + public double getViewCenterPointY() {return viewCenterPointY;} + public double[] getViewDirectionFromTarget() {return viewDirectionFromTarget;} + public double[] getTargetPoint() {return targetPoint;} + public float getLensLength() {return lensLength;} + public double getFrontClippingPlaneOffset() {return frontClippingPlaneOffset;} + public double getBackClippingPlaneOffset() {return backClippingPlaneOffset;} + public float getTwistAngle() {return twistAngle;} + public int getViewMode() {return viewMode;} + + public void setViewHeight(float viewHeight) {this.viewHeight = viewHeight;} + public void setViewWidth(float viewWidth) {this.viewWidth = viewWidth;} + public void setViewCenterPointX(double viewCenterPointX) {this.viewCenterPointX = viewCenterPointX;} + public void setViewCenterPointY(double viewCenterPointY) {this.viewCenterPointY = viewCenterPointY;} + public void setViewDirectionFromTarget(double[] viewDirectionFromTarget) {this.viewDirectionFromTarget = viewDirectionFromTarget;} + public void setTargetPoint(double[] targetPoint) {this.targetPoint = targetPoint;} + public void setLensLength(float lensLength) {this.lensLength = lensLength;} + public void setFrontClippingPlaneOffset(double frontClippingPlaneOffset) {this.frontClippingPlaneOffset = frontClippingPlaneOffset;} + public void setBackClippingPlaneOffset(double backClippingPlaneOffset) {this.backClippingPlaneOffset = backClippingPlaneOffset;} + public void setTwistAngle(float twistAngle) {this.twistAngle = twistAngle;} + public void setViewMode(int viewMode) {this.viewMode = viewMode;} + + public static Map readTable(RandomAccessFile raf) throws IOException { + DxfTABLE_VIEW_ITEM item = new DxfTABLE_VIEW_ITEM("DEFAULT", 0); + Map table = new LinkedHashMap(); + try { + DxfGroup group; + while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { + if (group.equals(VIEW)) { + item = new DxfTABLE_VIEW_ITEM("DEFAULT", 0); + } + else if (group.getCode()==2) { + item.setName(group.getValue()); + table.put(item.getName(), item); + } + else if (group.getCode()==5) {} // tag appeared in version 13 of DXF + else if (group.getCode()==100) {} // tag appeared in version 13 of DXF + else if (group.getCode()==70) {item.setFlags(group.getIntValue());} + else if (group.getCode()==40) {item.setViewHeight(group.getFloatValue());} + else if (group.getCode()==41) {item.setViewWidth(group.getFloatValue());} + else if (group.getCode()==10) {item.setViewCenterPointX(group.getDoubleValue());} + else if (group.getCode()==20) {item.setViewCenterPointY(group.getDoubleValue());} + else if (group.getCode()==11) { + item.getViewDirectionFromTarget()[0] = group.getDoubleValue(); + } + else if (group.getCode()==21) { + item.getViewDirectionFromTarget()[1] = group.getDoubleValue(); + } + else if (group.getCode()==31) { + item.getViewDirectionFromTarget()[2] = group.getDoubleValue(); + } + else if (group.getCode()==12) { + item.getTargetPoint()[0] = group.getDoubleValue(); + } + else if (group.getCode()==22) { + item.getTargetPoint()[1] = group.getDoubleValue(); + } + else if (group.getCode()==32) { + item.getTargetPoint()[2] = group.getDoubleValue(); + } + else if (group.getCode()==42) { + item.setLensLength(group.getFloatValue()); + } + else if (group.getCode()==43) { + item.setFrontClippingPlaneOffset(group.getDoubleValue()); + } + else if (group.getCode()==44) { + item.setBackClippingPlaneOffset(group.getDoubleValue()); + } + else if (group.getCode()==50) { + item.setTwistAngle(group.getFloatValue()); + } + else if (group.getCode()==71) { + item.setViewMode(group.getIntValue()); + } + else {} + } + } catch(IOException ioe) {throw ioe;} + return table; + } + + public String toString() { + StringBuffer sb = new StringBuffer(super.toString()); + sb.append(DxfGroup.toString(40, viewHeight, 6)); + sb.append(DxfGroup.toString(41, viewWidth, 6)); + sb.append(DxfGroup.toString(10, viewCenterPointX, 6)); + sb.append(DxfGroup.toString(20, viewCenterPointY, 6)); + sb.append(DxfGroup.toString(11, viewDirectionFromTarget[0], 6)); + sb.append(DxfGroup.toString(21, viewDirectionFromTarget[1], 6)); + sb.append(DxfGroup.toString(31, viewDirectionFromTarget[2], 6)); + sb.append(DxfGroup.toString(12, targetPoint[0], 6)); + sb.append(DxfGroup.toString(22, targetPoint[1], 6)); + sb.append(DxfGroup.toString(32, targetPoint[2], 6)); + sb.append(DxfGroup.toString(42, lensLength, 6)); + sb.append(DxfGroup.toString(43, frontClippingPlaneOffset, 6)); + sb.append(DxfGroup.toString(44, backClippingPlaneOffset, 6)); + sb.append(DxfGroup.toString(50, twistAngle, 6)); + sb.append(DxfGroup.toString(71, viewMode)); + return sb.toString(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_VPORT_ITEM.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_VPORT_ITEM.java index 62640b765..224283769 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_VPORT_ITEM.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTABLE_VPORT_ITEM.java @@ -1,398 +1,398 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import java.util.Map; -import java.util.LinkedHashMap; - -/** - * The VPORT item in the TABLES section - * There is a static reader to read the item in a DXF file - * and a toString method able to write it in a DXF form - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -public class DxfTABLE_VPORT_ITEM extends DxfTABLE_ITEM { - private double[] lowerLeftCorner; // XY 0.0 to 1.0 - private double[] upperRightCorner; // XY 0.0 to 1.0 - private double[] centerPoint; // XY - private double[] snapBasePoint; // XY - private double[] snapSpacing; // X and Y - private double[] gridSpacing; // X and Y - private double[] viewDirection; // XYZ - private double[] viewTargetPoint; // XYZ - private double viewHeight; - private float aspectRatio; - private float lensLength; - private double frontClippingPlaneOffset; - private double backClippingPlaneOffset; - private float snapRotationAngle; - private float twistAngle; - private int viewMode; - private int circleZoomPercent; - private int fastZoomSetting; - private int ucsIconSetting; - private int snapOnOff; - private int gridOnOff; - private int snapStyle; - private int snapIsoPair; - - - public DxfTABLE_VPORT_ITEM(String name, int flags) { - super(name, flags); - this.lowerLeftCorner = new double[2]; - this.upperRightCorner = new double[2]; - this.centerPoint = new double[2]; - this.snapBasePoint = new double[2]; - this.snapSpacing = new double[2]; - this.gridSpacing = new double[2]; - this.viewDirection = new double[3]; - this.viewTargetPoint = new double[3]; - this.viewHeight = 0; - this.aspectRatio = 0; - this.lensLength = 0; - this.frontClippingPlaneOffset = 0; - this.backClippingPlaneOffset = 0; - this.snapRotationAngle = 0; - this.twistAngle = 0; - this.viewMode = 0; - this.circleZoomPercent = 0; - this.fastZoomSetting = 0; - this.ucsIconSetting = 0; - this.snapOnOff = 0; - this.gridOnOff = 0; - this.snapStyle = 0; - this.snapIsoPair = 0; - } - - public DxfTABLE_VPORT_ITEM(String name, int flags, - double[] lowerLeftCorner, - double[] upperRightCorner, - double[] centerPoint, - double[] snapBasePoint, - double[] snapSpacing, - double[] gridSpacing, - double[] viewDirection, - double[] viewTargetPoint, - double viewHeight, - float aspectRatio, - float lensLength, - double frontClippingPlaneOffset, - double backClippingPlaneOffset, - float snapRotationAngle, - float twistAngle, - int viewMode, - int circleZoomPercent, - int fastZoomSetting, - int ucsIconSetting, - int snapOnOff, - int gridOnOff, - int snapStyle, - int snapIsoPair ) { - super(name, flags); - this.lowerLeftCorner = lowerLeftCorner; - this.upperRightCorner = upperRightCorner; - this.centerPoint = centerPoint; - this.snapBasePoint = snapBasePoint; - this.snapSpacing = snapSpacing; - this.gridSpacing = gridSpacing; - this.viewDirection = viewDirection; - this.viewTargetPoint = viewTargetPoint; - this.viewHeight = viewHeight; - this.aspectRatio = aspectRatio; - this.lensLength = lensLength; - this.frontClippingPlaneOffset = frontClippingPlaneOffset; - this.backClippingPlaneOffset = backClippingPlaneOffset; - this.snapRotationAngle = snapRotationAngle; - this.twistAngle = twistAngle; - this.viewMode = viewMode; - this.circleZoomPercent = circleZoomPercent; - this.fastZoomSetting = fastZoomSetting; - this.ucsIconSetting = ucsIconSetting; - this.snapOnOff = snapOnOff; - this.gridOnOff = gridOnOff; - this.snapStyle = snapStyle; - this.snapIsoPair = snapIsoPair; - } - - public double[] getLowerLeftCorner() {return lowerLeftCorner;} - public double[] getUpperRightCorner() {return upperRightCorner;} - public double[] getCenterPoint() {return centerPoint;} - public double[] getSnapBasePoint() {return snapBasePoint;} - public double[] getSnapSpacing() {return snapSpacing;} - public double[] getGridSpacing() {return gridSpacing;} - public double[] getViewDirection() {return viewDirection;} - public double[] getViewTargetPoint() {return viewTargetPoint;} - public double getViewHeight() {return viewHeight;} - public float getAspectRatio() {return aspectRatio;} - public float getLensLength() {return lensLength;} - public double getFrontClippingPlaneOffset() {return frontClippingPlaneOffset;} - public double getBackClippingPlaneOffset() {return backClippingPlaneOffset;} - public float getSnapRotationAngle() {return snapRotationAngle;} - public float getTwistAngle() {return twistAngle;} - public int getViewMode() {return viewMode;} - public int getCircleZoomPercent() {return circleZoomPercent;} - public int getFastZoomSetting() {return fastZoomSetting;} - public int getUcsIconSetting() {return ucsIconSetting;} - public int getSnapOnOff() {return snapOnOff;} - public int getGridOnOff() {return gridOnOff;} - public int getSnapStyle() {return snapStyle;} - public int getSnapIsoPair() {return snapIsoPair;} - - public void setLowerLeftCorner(double[] lowerLeftCorner) { - this.lowerLeftCorner = lowerLeftCorner; - } - public void setUpperRightCorner(double[] upperRightCorner) { - this.upperRightCorner = upperRightCorner; - } - public void setCenterPoint(double[] centerPoint) { - this.centerPoint = centerPoint; - } - public void setSnapBasePoint(double[] snapBasePoint) { - this.snapBasePoint = snapBasePoint; - } - public void setSnapSpacing(double[] snapSpacing) { - this.snapSpacing = snapSpacing; - } - public void setGridSpacing(double[] gridSpacing) { - this.gridSpacing = gridSpacing; - } - public void setViewDirection(double[] viewDirection) { - this.viewDirection = viewDirection; - } - public void setViewTargetPoint(double[] viewTargetPoint) { - this.viewTargetPoint = viewTargetPoint; - } - public void setViewHeight(double viewHeight) { - this.viewHeight = viewHeight; - } - public void setAspectRatio(float aspectRatio) { - this.aspectRatio = aspectRatio; - } - public void setLensLength(float lensLength) { - this.lensLength = lensLength; - } - public void setFrontClippingPlaneOffset(double frontClippingPlaneOffset) { - this.frontClippingPlaneOffset = frontClippingPlaneOffset; - } - public void setBackClippingPlaneOffset(double backClippingPlaneOffset) { - this.backClippingPlaneOffset = backClippingPlaneOffset; - } - public void setSnapRotationAngle(float snapRotationAngle) { - this.snapRotationAngle = snapRotationAngle; - } - public void setTwistAngle(float twistAngle) { - this.twistAngle = twistAngle; - } - public void setViewMode(int viewMode) { - this.viewMode = viewMode; - } - public void setCircleZoomPercent(int circleZoomPercent) { - this.circleZoomPercent = circleZoomPercent; - } - public void setFastZoomSetting(int fastZoomSetting) { - this.fastZoomSetting = fastZoomSetting; - } - public void setUcsIconSetting(int ucsIconSetting) { - this.ucsIconSetting = ucsIconSetting; - } - public void setSnapOnOff(int snapOnOff) { - this.snapOnOff = snapOnOff; - } - public void setGridOnOff(int gridOnOff) { - this.gridOnOff = gridOnOff; - } - public void setSnapStyle(int snapStyle) { - this.snapStyle = snapStyle; - } - public void setSnapIsoPair(int snapIsoPair) { - this.snapIsoPair = snapIsoPair; - } - - public static Map readTable(RandomAccessFile raf) throws IOException { - DxfTABLE_VPORT_ITEM item = new DxfTABLE_VPORT_ITEM("DEFAULT", 0); - Map table = new LinkedHashMap(); - try { - DxfGroup group; - while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { - if (group.equals(VPORT)) { - item = new DxfTABLE_VPORT_ITEM("DEFAULT", 0); - } - else if (group.getCode()==2) { - item.setName(group.getValue()); - table.put(item.getName(), item); - } - else if (group.getCode()==5) {} // tag appeared in version 13 of DXF - else if (group.getCode()==100) {} // tag appeared in version 13 of DXF - else if (group.getCode()==70) { - item.setFlags(group.getIntValue()); - } - else if (group.getCode()==10) { - item.getLowerLeftCorner()[0] = group.getDoubleValue(); - } - else if (group.getCode()==20) { - item.getLowerLeftCorner()[1] = group.getDoubleValue(); - } - else if (group.getCode()==11) { - item.getUpperRightCorner()[0] = group.getDoubleValue(); - } - else if (group.getCode()==21) { - item.getUpperRightCorner()[1] = group.getDoubleValue(); - } - else if (group.getCode()==12) { - item.getCenterPoint()[0] = group.getDoubleValue(); - } - else if (group.getCode()==22) { - item.getCenterPoint()[1] = group.getDoubleValue(); - } - else if (group.getCode()==13) { - item.getSnapBasePoint()[0] = group.getDoubleValue(); - } - else if (group.getCode()==23) { - item.getSnapBasePoint()[1] = group.getDoubleValue(); - } - else if (group.getCode()==14) { - item.getSnapSpacing()[0] = group.getDoubleValue(); - } - else if (group.getCode()==24) { - item.getSnapSpacing()[1] = group.getDoubleValue(); - } - else if (group.getCode()==15) { - item.getGridSpacing()[0] = group.getDoubleValue(); - } - else if (group.getCode()==25) { - item.getGridSpacing()[1] = group.getDoubleValue(); - } - else if (group.getCode()==16) { - item.getViewDirection()[1] = group.getDoubleValue(); - } - else if (group.getCode()==26) { - item.getViewDirection()[1] = group.getDoubleValue(); - } - else if (group.getCode()==36) { - item.getViewDirection()[2] = group.getDoubleValue(); - } - else if (group.getCode()==17) { - item.getViewTargetPoint()[1] = group.getDoubleValue(); - } - else if (group.getCode()==27) { - item.getViewTargetPoint()[1] = group.getDoubleValue(); - } - else if (group.getCode()==37) { - item.getViewTargetPoint()[2] = group.getDoubleValue(); - } - else if (group.getCode()==40) { - item.setViewHeight(group.getDoubleValue()); - } - else if (group.getCode()==41) { - item.setAspectRatio(group.getFloatValue()); - } - else if (group.getCode()==42) { - item.setLensLength(group.getFloatValue()); - } - else if (group.getCode()==43) { - item.setFrontClippingPlaneOffset(group.getDoubleValue()); - } - else if (group.getCode()==44) { - item.setBackClippingPlaneOffset(group.getDoubleValue()); - } - else if (group.getCode()==50) { - item.setSnapRotationAngle(group.getFloatValue()); - } - else if (group.getCode()==51) { - item.setTwistAngle(group.getFloatValue()); - } - else if (group.getCode()==71) { - item.setViewMode(group.getIntValue()); - } - else if (group.getCode()==72) { - item.setCircleZoomPercent(group.getIntValue()); - } - else if (group.getCode()==73) { - item.setFastZoomSetting(group.getIntValue()); - } - else if (group.getCode()==74) { - item.setUcsIconSetting(group.getIntValue()); - } - else if (group.getCode()==75) { - item.setSnapOnOff(group.getIntValue()); - } - else if (group.getCode()==76) { - item.setGridOnOff(group.getIntValue()); - } - else if (group.getCode()==77) { - item.setSnapStyle(group.getIntValue()); - } - else if (group.getCode()==78) { - item.setSnapIsoPair(group.getIntValue()); - } - else {} - } - } catch(IOException ioe) {throw ioe;} - return table; - } - - public String toString() { - StringBuffer sb = new StringBuffer(super.toString()); - sb.append(DxfGroup.toString(10, lowerLeftCorner[0], 6)); - sb.append(DxfGroup.toString(20, lowerLeftCorner[1], 6)); - sb.append(DxfGroup.toString(11, upperRightCorner[0], 6)); - sb.append(DxfGroup.toString(21, upperRightCorner[1], 6)); - sb.append(DxfGroup.toString(12, centerPoint[0], 6)); - sb.append(DxfGroup.toString(22, centerPoint[1], 6)); - sb.append(DxfGroup.toString(13, snapBasePoint[0], 6)); - sb.append(DxfGroup.toString(23, snapBasePoint[1], 6)); - sb.append(DxfGroup.toString(14, snapSpacing[0], 6)); - sb.append(DxfGroup.toString(24, snapSpacing[1], 6)); - sb.append(DxfGroup.toString(15, gridSpacing[0], 6)); - sb.append(DxfGroup.toString(25, gridSpacing[1], 6)); - sb.append(DxfGroup.toString(16, viewDirection[0], 6)); - sb.append(DxfGroup.toString(26, viewDirection[1], 6)); - sb.append(DxfGroup.toString(36, viewDirection[2], 6)); - sb.append(DxfGroup.toString(17, viewTargetPoint[0], 6)); - sb.append(DxfGroup.toString(27, viewTargetPoint[1], 6)); - sb.append(DxfGroup.toString(37, viewTargetPoint[2], 6)); - sb.append(DxfGroup.toString(40, viewHeight, 6)); - sb.append(DxfGroup.toString(41, aspectRatio, 6)); - sb.append(DxfGroup.toString(42, lensLength, 6)); - sb.append(DxfGroup.toString(43, frontClippingPlaneOffset, 6)); - sb.append(DxfGroup.toString(44, backClippingPlaneOffset, 6)); - sb.append(DxfGroup.toString(50, snapRotationAngle, 6)); - sb.append(DxfGroup.toString(51, twistAngle, 6)); - sb.append(DxfGroup.toString(71, viewMode)); - sb.append(DxfGroup.toString(72, circleZoomPercent)); - sb.append(DxfGroup.toString(73, fastZoomSetting)); - sb.append(DxfGroup.toString(74, ucsIconSetting)); - sb.append(DxfGroup.toString(75, snapOnOff)); - sb.append(DxfGroup.toString(76, gridOnOff)); - sb.append(DxfGroup.toString(77, snapStyle)); - sb.append(DxfGroup.toString(78, snapIsoPair)); - return sb.toString(); - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import java.util.Map; +import java.util.LinkedHashMap; + +/** + * The VPORT item in the TABLES section + * There is a static reader to read the item in a DXF file + * and a toString method able to write it in a DXF form + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +public class DxfTABLE_VPORT_ITEM extends DxfTABLE_ITEM { + private double[] lowerLeftCorner; // XY 0.0 to 1.0 + private double[] upperRightCorner; // XY 0.0 to 1.0 + private double[] centerPoint; // XY + private double[] snapBasePoint; // XY + private double[] snapSpacing; // X and Y + private double[] gridSpacing; // X and Y + private double[] viewDirection; // XYZ + private double[] viewTargetPoint; // XYZ + private double viewHeight; + private float aspectRatio; + private float lensLength; + private double frontClippingPlaneOffset; + private double backClippingPlaneOffset; + private float snapRotationAngle; + private float twistAngle; + private int viewMode; + private int circleZoomPercent; + private int fastZoomSetting; + private int ucsIconSetting; + private int snapOnOff; + private int gridOnOff; + private int snapStyle; + private int snapIsoPair; + + + public DxfTABLE_VPORT_ITEM(String name, int flags) { + super(name, flags); + this.lowerLeftCorner = new double[2]; + this.upperRightCorner = new double[2]; + this.centerPoint = new double[2]; + this.snapBasePoint = new double[2]; + this.snapSpacing = new double[2]; + this.gridSpacing = new double[2]; + this.viewDirection = new double[3]; + this.viewTargetPoint = new double[3]; + this.viewHeight = 0; + this.aspectRatio = 0; + this.lensLength = 0; + this.frontClippingPlaneOffset = 0; + this.backClippingPlaneOffset = 0; + this.snapRotationAngle = 0; + this.twistAngle = 0; + this.viewMode = 0; + this.circleZoomPercent = 0; + this.fastZoomSetting = 0; + this.ucsIconSetting = 0; + this.snapOnOff = 0; + this.gridOnOff = 0; + this.snapStyle = 0; + this.snapIsoPair = 0; + } + + public DxfTABLE_VPORT_ITEM(String name, int flags, + double[] lowerLeftCorner, + double[] upperRightCorner, + double[] centerPoint, + double[] snapBasePoint, + double[] snapSpacing, + double[] gridSpacing, + double[] viewDirection, + double[] viewTargetPoint, + double viewHeight, + float aspectRatio, + float lensLength, + double frontClippingPlaneOffset, + double backClippingPlaneOffset, + float snapRotationAngle, + float twistAngle, + int viewMode, + int circleZoomPercent, + int fastZoomSetting, + int ucsIconSetting, + int snapOnOff, + int gridOnOff, + int snapStyle, + int snapIsoPair ) { + super(name, flags); + this.lowerLeftCorner = lowerLeftCorner; + this.upperRightCorner = upperRightCorner; + this.centerPoint = centerPoint; + this.snapBasePoint = snapBasePoint; + this.snapSpacing = snapSpacing; + this.gridSpacing = gridSpacing; + this.viewDirection = viewDirection; + this.viewTargetPoint = viewTargetPoint; + this.viewHeight = viewHeight; + this.aspectRatio = aspectRatio; + this.lensLength = lensLength; + this.frontClippingPlaneOffset = frontClippingPlaneOffset; + this.backClippingPlaneOffset = backClippingPlaneOffset; + this.snapRotationAngle = snapRotationAngle; + this.twistAngle = twistAngle; + this.viewMode = viewMode; + this.circleZoomPercent = circleZoomPercent; + this.fastZoomSetting = fastZoomSetting; + this.ucsIconSetting = ucsIconSetting; + this.snapOnOff = snapOnOff; + this.gridOnOff = gridOnOff; + this.snapStyle = snapStyle; + this.snapIsoPair = snapIsoPair; + } + + public double[] getLowerLeftCorner() {return lowerLeftCorner;} + public double[] getUpperRightCorner() {return upperRightCorner;} + public double[] getCenterPoint() {return centerPoint;} + public double[] getSnapBasePoint() {return snapBasePoint;} + public double[] getSnapSpacing() {return snapSpacing;} + public double[] getGridSpacing() {return gridSpacing;} + public double[] getViewDirection() {return viewDirection;} + public double[] getViewTargetPoint() {return viewTargetPoint;} + public double getViewHeight() {return viewHeight;} + public float getAspectRatio() {return aspectRatio;} + public float getLensLength() {return lensLength;} + public double getFrontClippingPlaneOffset() {return frontClippingPlaneOffset;} + public double getBackClippingPlaneOffset() {return backClippingPlaneOffset;} + public float getSnapRotationAngle() {return snapRotationAngle;} + public float getTwistAngle() {return twistAngle;} + public int getViewMode() {return viewMode;} + public int getCircleZoomPercent() {return circleZoomPercent;} + public int getFastZoomSetting() {return fastZoomSetting;} + public int getUcsIconSetting() {return ucsIconSetting;} + public int getSnapOnOff() {return snapOnOff;} + public int getGridOnOff() {return gridOnOff;} + public int getSnapStyle() {return snapStyle;} + public int getSnapIsoPair() {return snapIsoPair;} + + public void setLowerLeftCorner(double[] lowerLeftCorner) { + this.lowerLeftCorner = lowerLeftCorner; + } + public void setUpperRightCorner(double[] upperRightCorner) { + this.upperRightCorner = upperRightCorner; + } + public void setCenterPoint(double[] centerPoint) { + this.centerPoint = centerPoint; + } + public void setSnapBasePoint(double[] snapBasePoint) { + this.snapBasePoint = snapBasePoint; + } + public void setSnapSpacing(double[] snapSpacing) { + this.snapSpacing = snapSpacing; + } + public void setGridSpacing(double[] gridSpacing) { + this.gridSpacing = gridSpacing; + } + public void setViewDirection(double[] viewDirection) { + this.viewDirection = viewDirection; + } + public void setViewTargetPoint(double[] viewTargetPoint) { + this.viewTargetPoint = viewTargetPoint; + } + public void setViewHeight(double viewHeight) { + this.viewHeight = viewHeight; + } + public void setAspectRatio(float aspectRatio) { + this.aspectRatio = aspectRatio; + } + public void setLensLength(float lensLength) { + this.lensLength = lensLength; + } + public void setFrontClippingPlaneOffset(double frontClippingPlaneOffset) { + this.frontClippingPlaneOffset = frontClippingPlaneOffset; + } + public void setBackClippingPlaneOffset(double backClippingPlaneOffset) { + this.backClippingPlaneOffset = backClippingPlaneOffset; + } + public void setSnapRotationAngle(float snapRotationAngle) { + this.snapRotationAngle = snapRotationAngle; + } + public void setTwistAngle(float twistAngle) { + this.twistAngle = twistAngle; + } + public void setViewMode(int viewMode) { + this.viewMode = viewMode; + } + public void setCircleZoomPercent(int circleZoomPercent) { + this.circleZoomPercent = circleZoomPercent; + } + public void setFastZoomSetting(int fastZoomSetting) { + this.fastZoomSetting = fastZoomSetting; + } + public void setUcsIconSetting(int ucsIconSetting) { + this.ucsIconSetting = ucsIconSetting; + } + public void setSnapOnOff(int snapOnOff) { + this.snapOnOff = snapOnOff; + } + public void setGridOnOff(int gridOnOff) { + this.gridOnOff = gridOnOff; + } + public void setSnapStyle(int snapStyle) { + this.snapStyle = snapStyle; + } + public void setSnapIsoPair(int snapIsoPair) { + this.snapIsoPair = snapIsoPair; + } + + public static Map readTable(RandomAccessFile raf) throws IOException { + DxfTABLE_VPORT_ITEM item = new DxfTABLE_VPORT_ITEM("DEFAULT", 0); + Map table = new LinkedHashMap(); + try { + DxfGroup group; + while (null != (group = DxfGroup.readGroup(raf)) && !group.equals(ENDTAB)) { + if (group.equals(VPORT)) { + item = new DxfTABLE_VPORT_ITEM("DEFAULT", 0); + } + else if (group.getCode()==2) { + item.setName(group.getValue()); + table.put(item.getName(), item); + } + else if (group.getCode()==5) {} // tag appeared in version 13 of DXF + else if (group.getCode()==100) {} // tag appeared in version 13 of DXF + else if (group.getCode()==70) { + item.setFlags(group.getIntValue()); + } + else if (group.getCode()==10) { + item.getLowerLeftCorner()[0] = group.getDoubleValue(); + } + else if (group.getCode()==20) { + item.getLowerLeftCorner()[1] = group.getDoubleValue(); + } + else if (group.getCode()==11) { + item.getUpperRightCorner()[0] = group.getDoubleValue(); + } + else if (group.getCode()==21) { + item.getUpperRightCorner()[1] = group.getDoubleValue(); + } + else if (group.getCode()==12) { + item.getCenterPoint()[0] = group.getDoubleValue(); + } + else if (group.getCode()==22) { + item.getCenterPoint()[1] = group.getDoubleValue(); + } + else if (group.getCode()==13) { + item.getSnapBasePoint()[0] = group.getDoubleValue(); + } + else if (group.getCode()==23) { + item.getSnapBasePoint()[1] = group.getDoubleValue(); + } + else if (group.getCode()==14) { + item.getSnapSpacing()[0] = group.getDoubleValue(); + } + else if (group.getCode()==24) { + item.getSnapSpacing()[1] = group.getDoubleValue(); + } + else if (group.getCode()==15) { + item.getGridSpacing()[0] = group.getDoubleValue(); + } + else if (group.getCode()==25) { + item.getGridSpacing()[1] = group.getDoubleValue(); + } + else if (group.getCode()==16) { + item.getViewDirection()[1] = group.getDoubleValue(); + } + else if (group.getCode()==26) { + item.getViewDirection()[1] = group.getDoubleValue(); + } + else if (group.getCode()==36) { + item.getViewDirection()[2] = group.getDoubleValue(); + } + else if (group.getCode()==17) { + item.getViewTargetPoint()[1] = group.getDoubleValue(); + } + else if (group.getCode()==27) { + item.getViewTargetPoint()[1] = group.getDoubleValue(); + } + else if (group.getCode()==37) { + item.getViewTargetPoint()[2] = group.getDoubleValue(); + } + else if (group.getCode()==40) { + item.setViewHeight(group.getDoubleValue()); + } + else if (group.getCode()==41) { + item.setAspectRatio(group.getFloatValue()); + } + else if (group.getCode()==42) { + item.setLensLength(group.getFloatValue()); + } + else if (group.getCode()==43) { + item.setFrontClippingPlaneOffset(group.getDoubleValue()); + } + else if (group.getCode()==44) { + item.setBackClippingPlaneOffset(group.getDoubleValue()); + } + else if (group.getCode()==50) { + item.setSnapRotationAngle(group.getFloatValue()); + } + else if (group.getCode()==51) { + item.setTwistAngle(group.getFloatValue()); + } + else if (group.getCode()==71) { + item.setViewMode(group.getIntValue()); + } + else if (group.getCode()==72) { + item.setCircleZoomPercent(group.getIntValue()); + } + else if (group.getCode()==73) { + item.setFastZoomSetting(group.getIntValue()); + } + else if (group.getCode()==74) { + item.setUcsIconSetting(group.getIntValue()); + } + else if (group.getCode()==75) { + item.setSnapOnOff(group.getIntValue()); + } + else if (group.getCode()==76) { + item.setGridOnOff(group.getIntValue()); + } + else if (group.getCode()==77) { + item.setSnapStyle(group.getIntValue()); + } + else if (group.getCode()==78) { + item.setSnapIsoPair(group.getIntValue()); + } + else {} + } + } catch(IOException ioe) {throw ioe;} + return table; + } + + public String toString() { + StringBuffer sb = new StringBuffer(super.toString()); + sb.append(DxfGroup.toString(10, lowerLeftCorner[0], 6)); + sb.append(DxfGroup.toString(20, lowerLeftCorner[1], 6)); + sb.append(DxfGroup.toString(11, upperRightCorner[0], 6)); + sb.append(DxfGroup.toString(21, upperRightCorner[1], 6)); + sb.append(DxfGroup.toString(12, centerPoint[0], 6)); + sb.append(DxfGroup.toString(22, centerPoint[1], 6)); + sb.append(DxfGroup.toString(13, snapBasePoint[0], 6)); + sb.append(DxfGroup.toString(23, snapBasePoint[1], 6)); + sb.append(DxfGroup.toString(14, snapSpacing[0], 6)); + sb.append(DxfGroup.toString(24, snapSpacing[1], 6)); + sb.append(DxfGroup.toString(15, gridSpacing[0], 6)); + sb.append(DxfGroup.toString(25, gridSpacing[1], 6)); + sb.append(DxfGroup.toString(16, viewDirection[0], 6)); + sb.append(DxfGroup.toString(26, viewDirection[1], 6)); + sb.append(DxfGroup.toString(36, viewDirection[2], 6)); + sb.append(DxfGroup.toString(17, viewTargetPoint[0], 6)); + sb.append(DxfGroup.toString(27, viewTargetPoint[1], 6)); + sb.append(DxfGroup.toString(37, viewTargetPoint[2], 6)); + sb.append(DxfGroup.toString(40, viewHeight, 6)); + sb.append(DxfGroup.toString(41, aspectRatio, 6)); + sb.append(DxfGroup.toString(42, lensLength, 6)); + sb.append(DxfGroup.toString(43, frontClippingPlaneOffset, 6)); + sb.append(DxfGroup.toString(44, backClippingPlaneOffset, 6)); + sb.append(DxfGroup.toString(50, snapRotationAngle, 6)); + sb.append(DxfGroup.toString(51, twistAngle, 6)); + sb.append(DxfGroup.toString(71, viewMode)); + sb.append(DxfGroup.toString(72, circleZoomPercent)); + sb.append(DxfGroup.toString(73, fastZoomSetting)); + sb.append(DxfGroup.toString(74, ucsIconSetting)); + sb.append(DxfGroup.toString(75, snapOnOff)); + sb.append(DxfGroup.toString(76, gridOnOff)); + sb.append(DxfGroup.toString(77, snapStyle)); + sb.append(DxfGroup.toString(78, snapIsoPair)); + return sb.toString(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTEXT.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTEXT.java index 9133f708a..a9756c006 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTEXT.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfTEXT.java @@ -1,106 +1,106 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.IOException; -import java.io.RandomAccessFile; - -import org.geotools.feature.FeatureCollection; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Point; - -/** - * A TEXT and its static readEntity method to read a TEXT in a DXF file. - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -// 2006-11-12 : Bug fixed x==Double.NaN --> Double.isNaN(x) -@SuppressWarnings("nls") -public class DxfTEXT extends DxfENTITY { - - public DxfTEXT() { - super("DEFAULT"); - } - - public static DxfGroup readEntity( RandomAccessFile raf, - FeatureCollection entities ) throws IOException { - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(DxfFile.DXF_POINTSCHEMA); - String layer = ""; - String ltype = ""; - Double elevation = new Double(0.0); - Double thickness = new Double(0.0); - Integer color = new Integer(256); - String text = ""; - Double text_height = new Double(0.0); - String text_style = ""; - - double x = Double.NaN, y = Double.NaN, z = Double.NaN; - DxfGroup group; - while( null != (group = DxfGroup.readGroup(raf)) && group.getCode() != 0 ) { - if (group.getCode() == 8) - layer = group.getValue(); - else if (group.getCode() == 6) - ltype = group.getValue(); - else if (group.getCode() == 38) - elevation = new Double(group.getDoubleValue()); - else if (group.getCode() == 39) - thickness = new Double(group.getDoubleValue()); - else if (group.getCode() == 62) - color = new Integer(group.getIntValue()); - else if (group.getCode() == 10) - x = group.getDoubleValue(); - else if (group.getCode() == 20) - y = group.getDoubleValue(); - else if (group.getCode() == 30) - z = group.getDoubleValue(); - else if (group.getCode() == 1) - text = group.getValue(); - else if (group.getCode() == 40) - text_height = new Double(group.getDoubleValue()); - else if (group.getCode() == 7) - text_style = group.getValue(); - else { - } - } - if (!Double.isNaN(x) && !Double.isNaN(y)) { - Object[] values = new Object[]{gF.createPoint(new Coordinate(x, y, z)), layer, ltype, - elevation, thickness, color, text, text_height, text_style}; - builder.addAll(values); - StringBuilder featureId = new StringBuilder(); - featureId.append(DxfFile.DXF_POINTSCHEMA.getTypeName()); - featureId.append("."); - featureId.append(DxfFile.getNextFid()); - SimpleFeature feature = builder.buildFeature(featureId.toString()); - entities.add(feature); - } - return group; - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.IOException; +import java.io.RandomAccessFile; + +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Point; + +/** + * A TEXT and its static readEntity method to read a TEXT in a DXF file. + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +// 2006-11-12 : Bug fixed x==Double.NaN --> Double.isNaN(x) +@SuppressWarnings("nls") +public class DxfTEXT extends DxfENTITY { + + public DxfTEXT() { + super("DEFAULT"); + } + + public static DxfGroup readEntity( RandomAccessFile raf, + FeatureCollection entities ) throws IOException { + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(DxfFile.DXF_POINTSCHEMA); + String layer = ""; + String ltype = ""; + Double elevation = new Double(0.0); + Double thickness = new Double(0.0); + Integer color = new Integer(256); + String text = ""; + Double text_height = new Double(0.0); + String text_style = ""; + + double x = Double.NaN, y = Double.NaN, z = Double.NaN; + DxfGroup group; + while( null != (group = DxfGroup.readGroup(raf)) && group.getCode() != 0 ) { + if (group.getCode() == 8) + layer = group.getValue(); + else if (group.getCode() == 6) + ltype = group.getValue(); + else if (group.getCode() == 38) + elevation = new Double(group.getDoubleValue()); + else if (group.getCode() == 39) + thickness = new Double(group.getDoubleValue()); + else if (group.getCode() == 62) + color = new Integer(group.getIntValue()); + else if (group.getCode() == 10) + x = group.getDoubleValue(); + else if (group.getCode() == 20) + y = group.getDoubleValue(); + else if (group.getCode() == 30) + z = group.getDoubleValue(); + else if (group.getCode() == 1) + text = group.getValue(); + else if (group.getCode() == 40) + text_height = new Double(group.getDoubleValue()); + else if (group.getCode() == 7) + text_style = group.getValue(); + else { + } + } + if (!Double.isNaN(x) && !Double.isNaN(y)) { + Object[] values = new Object[]{gF.createPoint(new Coordinate(x, y, z)), layer, ltype, + elevation, thickness, color, text, text_height, text_style}; + builder.addAll(values); + StringBuilder featureId = new StringBuilder(); + featureId.append(DxfFile.DXF_POINTSCHEMA.getTypeName()); + featureId.append("."); + featureId.append(DxfFile.getNextFid()); + SimpleFeature feature = builder.buildFeature(featureId.toString()); + entities.add(feature); + } + return group; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfVERTEX.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfVERTEX.java index bd815445d..165acbea7 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfVERTEX.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfVERTEX.java @@ -1,63 +1,63 @@ -/* - * Library name : dxf - * (C) 2006 Micha�l Michaud - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For more information, contact: - * - * michael.michaud@free.fr - * - */ - -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; - -import java.io.RandomAccessFile; -import java.io.IOException; -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateList; - - -/** - * A VERTEX and a static readEntity method to read a VERTEX in a DXF file. - * @author Micha�l Michaud - * @version 0.5.0 - */ -// History -// 2006-11-12 : Bug fixed x==Double.NaN --> Double.isNaN(x) -public class DxfVERTEX extends DxfENTITY { - - public DxfVERTEX() {super("DEFAULT");} - - public static DxfGroup readEntity(RandomAccessFile raf, CoordinateList coordList) - throws IOException { - Coordinate coord; - double x=Double.NaN, y=Double.NaN, z=Double.NaN; - DxfGroup group; - try { - while (null != (group = DxfGroup.readGroup(raf)) && group.getCode()!=0) { - if (group.getCode()==10) x = group.getDoubleValue(); - else if (group.getCode()==20) y = group.getDoubleValue(); - else if (group.getCode()==30) z = group.getDoubleValue(); - else {} - } - if (!Double.isNaN(x) && !Double.isNaN(y)) { - coordList.add(new Coordinate(x,y,z)); - } - } catch (IOException ioe) {throw ioe;} - return group; - } - -} +/* + * Library name : dxf + * (C) 2006 Micha�l Michaud + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For more information, contact: + * + * michael.michaud@free.fr + * + */ + +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; + +import java.io.RandomAccessFile; +import java.io.IOException; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateList; + + +/** + * A VERTEX and a static readEntity method to read a VERTEX in a DXF file. + * @author Micha�l Michaud + * @version 0.5.0 + */ +// History +// 2006-11-12 : Bug fixed x==Double.NaN --> Double.isNaN(x) +public class DxfVERTEX extends DxfENTITY { + + public DxfVERTEX() {super("DEFAULT");} + + public static DxfGroup readEntity(RandomAccessFile raf, CoordinateList coordList) + throws IOException { + Coordinate coord; + double x=Double.NaN, y=Double.NaN, z=Double.NaN; + DxfGroup group; + try { + while (null != (group = DxfGroup.readGroup(raf)) && group.getCode()!=0) { + if (group.getCode()==10) x = group.getDoubleValue(); + else if (group.getCode()==20) y = group.getDoubleValue(); + else if (group.getCode()==30) z = group.getDoubleValue(); + else {} + } + if (!Double.isNaN(x) && !Double.isNaN(y)) { + coordList.add(new Coordinate(x,y,z)); + } + } catch (IOException ioe) {throw ioe;} + return group; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfWriter.java index ef7bb80ea..710c8c40b 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/DxfWriter.java @@ -1,122 +1,122 @@ -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; -///* -// * Library name : dxf -// * (C) 2006 Micha�l Michaud -// * -// * This program is free software; you can redistribute it and/or -// * modify it under the terms of the GNU General Public License -// * as published by the Free Software Foundation; either version 2 -// * of the License, or (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// * -// * For more information, contact: -// * -// * michael.michaud@free.fr -// * -// */ -// -//package fr.michaelm.jump.drivers.dxf; -// -//import com.vividsolutions.jts.geom.*; -// -//import com.vividsolutions.jump.feature.*; -//import com.vividsolutions.jump.io.JUMPWriter; -//import com.vividsolutions.jump.io.DriverProperties; -//import com.vividsolutions.jump.io.IllegalParametersException; -//import com.vividsolutions.jump.io.CompressedFile; -//import com.vividsolutions.jts.algorithm.CGAlgorithms; -//import com.vividsolutions.jts.algorithm.RobustCGAlgorithms; -// -//import java.io.*; -//import java.net.URL; -//import java.util.Iterator; -// -// -///** -// * DXF writer -// * @author Micha�l Michaud -// * @version 0.5.0 -// */ -//// History -//// 2006-11-12 : Much clean-up made on 2006-11-12 for version 0.5 -//public class DxfWriter implements JUMPWriter { -// protected static CGAlgorithms cga = new RobustCGAlgorithms(); -// DxfFile dxfFile = null; -// -// /** Creates new DxfWriter */ -// public DxfWriter() {} -// -// /** -// * Main method - write the featurecollection to a DXF file. -// * -// * @param featureCollection collection to write -// * @param dp 'OutputFile' or 'DefaultValue' to specify where to write. -// */ -// public void write(FeatureCollection featureCollection, DriverProperties dp) -// throws IllegalParametersException, Exception { -// String dxfFileName; -// String fname; -// int loc; -// dxfFileName = dp.getProperty("File"); -// -// if (dxfFileName == null) { -// dxfFileName = dp.getProperty("DefaultValue"); -// } -// if (dxfFileName == null) { -// throw new IllegalParametersException("no File property specified"); -// } -// -// String[] layerNameProp = (String[])dp.get("LAYER_NAME"); -// String[] layerNames = layerNameProp==null?new String[]{}:layerNameProp; -// -// // Check if header has to be written -// // Warning : using getProperty instead of get return null -// // because HEADER is not a String -// // This option has been moved on 2006-11-12 after the header-bug has -// // fixed (comments will be removed in version 0.6) -// /*boolean header = true; -// if (dp.get("HEADER") != null) { -// header = ((Boolean)dp.get("HEADER")).booleanValue(); -// }*/ -// -// // Check if the writer has to create layers with "_" suffix for layers with holes -// // Warning : using getProperty instead of get return null -// // because SUFFIX is not a String -// boolean suffix = true; -// if (dp.get("SUFFIX") != null) { -// suffix = ((Boolean)dp.get("SUFFIX")).booleanValue(); -// } -// -// loc = dxfFileName.lastIndexOf(File.separatorChar); -// fname = dxfFileName.substring(loc + 1); // ie. "/data1/hills.dxf" -> "hills.dxf" -// loc = fname.lastIndexOf("."); -// if (loc == -1) { -// throw new IllegalParametersException("Filename must end in '.dxf'"); -// } -// -// URL url = new URL("file", "localhost", dxfFileName); -// DxfFile dxfFile = new DxfFile(); -// FileWriter fw = new FileWriter(dxfFileName); -// DxfFile.write(featureCollection, layerNames, fw, 2, suffix); -// fw.close(); -// } -// -// /* -// protected DxfFile getDxfFile(String dxfFileName, String compressedFname) -// throws Exception { -// java.io.InputStream in = CompressedFile.openFile(dxfFileName, -// compressedFname); -// DxfFile dxfFile = new DxfFile(in); -// return dxfFile; -// } -// */ -// -//} +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; +///* +// * Library name : dxf +// * (C) 2006 Micha�l Michaud +// * +// * This program is free software; you can redistribute it and/or +// * modify it under the terms of the GNU General Public License +// * as published by the Free Software Foundation; either version 2 +// * of the License, or (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// * +// * For more information, contact: +// * +// * michael.michaud@free.fr +// * +// */ +// +//package fr.michaelm.jump.drivers.dxf; +// +//import com.vividsolutions.jts.geom.*; +// +//import com.vividsolutions.jump.feature.*; +//import com.vividsolutions.jump.io.JUMPWriter; +//import com.vividsolutions.jump.io.DriverProperties; +//import com.vividsolutions.jump.io.IllegalParametersException; +//import com.vividsolutions.jump.io.CompressedFile; +//import com.vividsolutions.jts.algorithm.CGAlgorithms; +//import com.vividsolutions.jts.algorithm.RobustCGAlgorithms; +// +//import java.io.*; +//import java.net.URL; +//import java.util.Iterator; +// +// +///** +// * DXF writer +// * @author Micha�l Michaud +// * @version 0.5.0 +// */ +//// History +//// 2006-11-12 : Much clean-up made on 2006-11-12 for version 0.5 +//public class DxfWriter implements JUMPWriter { +// protected static CGAlgorithms cga = new RobustCGAlgorithms(); +// DxfFile dxfFile = null; +// +// /** Creates new DxfWriter */ +// public DxfWriter() {} +// +// /** +// * Main method - write the featurecollection to a DXF file. +// * +// * @param featureCollection collection to write +// * @param dp 'OutputFile' or 'DefaultValue' to specify where to write. +// */ +// public void write(FeatureCollection featureCollection, DriverProperties dp) +// throws IllegalParametersException, Exception { +// String dxfFileName; +// String fname; +// int loc; +// dxfFileName = dp.getProperty("File"); +// +// if (dxfFileName == null) { +// dxfFileName = dp.getProperty("DefaultValue"); +// } +// if (dxfFileName == null) { +// throw new IllegalParametersException("no File property specified"); +// } +// +// String[] layerNameProp = (String[])dp.get("LAYER_NAME"); +// String[] layerNames = layerNameProp==null?new String[]{}:layerNameProp; +// +// // Check if header has to be written +// // Warning : using getProperty instead of get return null +// // because HEADER is not a String +// // This option has been moved on 2006-11-12 after the header-bug has +// // fixed (comments will be removed in version 0.6) +// /*boolean header = true; +// if (dp.get("HEADER") != null) { +// header = ((Boolean)dp.get("HEADER")).booleanValue(); +// }*/ +// +// // Check if the writer has to create layers with "_" suffix for layers with holes +// // Warning : using getProperty instead of get return null +// // because SUFFIX is not a String +// boolean suffix = true; +// if (dp.get("SUFFIX") != null) { +// suffix = ((Boolean)dp.get("SUFFIX")).booleanValue(); +// } +// +// loc = dxfFileName.lastIndexOf(File.separatorChar); +// fname = dxfFileName.substring(loc + 1); // ie. "/data1/hills.dxf" -> "hills.dxf" +// loc = fname.lastIndexOf("."); +// if (loc == -1) { +// throw new IllegalParametersException("Filename must end in '.dxf'"); +// } +// +// URL url = new URL("file", "localhost", dxfFileName); +// DxfFile dxfFile = new DxfFile(); +// FileWriter fw = new FileWriter(dxfFileName); +// DxfFile.write(featureCollection, layerNames, fw, 2, suffix); +// fw.close(); +// } +// +// /* +// protected DxfFile getDxfFile(String dxfFileName, String compressedFname) +// throws Exception { +// java.io.InputStream in = CompressedFile.openFile(dxfFileName, +// compressedFname); +// DxfFile dxfFile = new DxfFile(in); +// return dxfFile; +// } +// */ +// +//} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/InstallDXFDataSourceQueryChooserPlugIn.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/InstallDXFDataSourceQueryChooserPlugIn.java index 2bcff5691..3959d840d 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/InstallDXFDataSourceQueryChooserPlugIn.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/InstallDXFDataSourceQueryChooserPlugIn.java @@ -1,95 +1,95 @@ -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; -///* -// * Library name : dxf -// * (C) 2006 Micha�l Michaud -// * -// * This program is free software; you can redistribute it and/or -// * modify it under the terms of the GNU General Public License -// * as published by the Free Software Foundation; either version 2 -// * of the License, or (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// * -// * For more information, contact: -// * -// * michael.michaud@free.fr -// * -// */ -// -//package fr.michaelm.jump.drivers.dxf; -// -//import javax.swing.JFileChooser; -// -//import com.vividsolutions.jts.util.Assert; -//import com.vividsolutions.jump.workbench.datasource.InstallStandardDataSourceQueryChoosersPlugIn; -//import com.vividsolutions.jump.util.Blackboard; -//import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn; -//import com.vividsolutions.jump.workbench.plugin.PlugInContext; -//import com.vividsolutions.jump.workbench.ui.GUIUtil; -//import com.vividsolutions.jump.io.JUMPWriter; -//import com.vividsolutions.jump.io.JUMPReader; -//import com.vividsolutions.jump.workbench.datasource.LoadFileDataSourceQueryChooser; -//import com.vividsolutions.jump.workbench.datasource.SaveFileDataSourceQueryChooser; -//import com.vividsolutions.jump.workbench.datasource.DataSourceQueryChooserManager; -//import com.vividsolutions.jump.workbench.WorkbenchContext; -// -// -///** -// * Install the DXF driver. -// * Extends the InstallStandardDataSourceQueryChoosersPlugIn class, overloading -// * initialize() to initialize DxfReader, DxfWriter. -// * @author Micha�l Michaud -// * @version 0.5.0 -// */ -//// History -//// 2006-10-18 : replace standard SaveFileDataSourceQueryChooser by a -//// SaveDxfFileDataSourceQueryChooser with options for header for entity -//// handles and for layer name. -//public class InstallDXFDataSourceQueryChooserPlugIn extends InstallStandardDataSourceQueryChoosersPlugIn { -// -// private void addFileDataSourceQueryChoosers( -// JUMPReader reader, -// JUMPWriter writer, -// final String description, -// WorkbenchContext workbenchContext, -// Class readerWriterDataSourceClass) { -// DataSourceQueryChooserManager.get( -// workbenchContext.getBlackboard()) -// .addLoadDataSourceQueryChooser(new LoadFileDataSourceQueryChooser( -// readerWriterDataSourceClass, -// description, -// extensions(readerWriterDataSourceClass), -// workbenchContext) { -// protected void addFileFilters(JFileChooser chooser) { -// super.addFileFilters(chooser); -// InstallStandardDataSourceQueryChoosersPlugIn.addCompressedFileFilter( -// description, -// chooser); -// } -// }).addSaveDataSourceQueryChooser( -// new SaveDxfFileDataSourceQueryChooser( -// readerWriterDataSourceClass, -// description, -// extensions(readerWriterDataSourceClass), -// workbenchContext)); -// } -// -// public void initialize(final PlugInContext context) throws Exception { -// Blackboard blackboard = -// context.getWorkbenchContext().getWorkbench().getBlackboard(); -// addFileDataSourceQueryChoosers( -// new DxfReader(), -// new DxfWriter(), -// "DXF", -// context.getWorkbenchContext(), -// DXFFileReaderWriter.class); -// } -// -//} +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; +///* +// * Library name : dxf +// * (C) 2006 Micha�l Michaud +// * +// * This program is free software; you can redistribute it and/or +// * modify it under the terms of the GNU General Public License +// * as published by the Free Software Foundation; either version 2 +// * of the License, or (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// * +// * For more information, contact: +// * +// * michael.michaud@free.fr +// * +// */ +// +//package fr.michaelm.jump.drivers.dxf; +// +//import javax.swing.JFileChooser; +// +//import com.vividsolutions.jts.util.Assert; +//import com.vividsolutions.jump.workbench.datasource.InstallStandardDataSourceQueryChoosersPlugIn; +//import com.vividsolutions.jump.util.Blackboard; +//import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn; +//import com.vividsolutions.jump.workbench.plugin.PlugInContext; +//import com.vividsolutions.jump.workbench.ui.GUIUtil; +//import com.vividsolutions.jump.io.JUMPWriter; +//import com.vividsolutions.jump.io.JUMPReader; +//import com.vividsolutions.jump.workbench.datasource.LoadFileDataSourceQueryChooser; +//import com.vividsolutions.jump.workbench.datasource.SaveFileDataSourceQueryChooser; +//import com.vividsolutions.jump.workbench.datasource.DataSourceQueryChooserManager; +//import com.vividsolutions.jump.workbench.WorkbenchContext; +// +// +///** +// * Install the DXF driver. +// * Extends the InstallStandardDataSourceQueryChoosersPlugIn class, overloading +// * initialize() to initialize DxfReader, DxfWriter. +// * @author Micha�l Michaud +// * @version 0.5.0 +// */ +//// History +//// 2006-10-18 : replace standard SaveFileDataSourceQueryChooser by a +//// SaveDxfFileDataSourceQueryChooser with options for header for entity +//// handles and for layer name. +//public class InstallDXFDataSourceQueryChooserPlugIn extends InstallStandardDataSourceQueryChoosersPlugIn { +// +// private void addFileDataSourceQueryChoosers( +// JUMPReader reader, +// JUMPWriter writer, +// final String description, +// WorkbenchContext workbenchContext, +// Class readerWriterDataSourceClass) { +// DataSourceQueryChooserManager.get( +// workbenchContext.getBlackboard()) +// .addLoadDataSourceQueryChooser(new LoadFileDataSourceQueryChooser( +// readerWriterDataSourceClass, +// description, +// extensions(readerWriterDataSourceClass), +// workbenchContext) { +// protected void addFileFilters(JFileChooser chooser) { +// super.addFileFilters(chooser); +// InstallStandardDataSourceQueryChoosersPlugIn.addCompressedFileFilter( +// description, +// chooser); +// } +// }).addSaveDataSourceQueryChooser( +// new SaveDxfFileDataSourceQueryChooser( +// readerWriterDataSourceClass, +// description, +// extensions(readerWriterDataSourceClass), +// workbenchContext)); +// } +// +// public void initialize(final PlugInContext context) throws Exception { +// Blackboard blackboard = +// context.getWorkbenchContext().getWorkbench().getBlackboard(); +// addFileDataSourceQueryChoosers( +// new DxfReader(), +// new DxfWriter(), +// "DXF", +// context.getWorkbenchContext(), +// DXFFileReaderWriter.class); +// } +// +//} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/SaveDxfFileDataSourceQueryChooser.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/SaveDxfFileDataSourceQueryChooser.java index 02fe36ab1..34477b3dd 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/SaveDxfFileDataSourceQueryChooser.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/dxfdwg/libs/dxf/SaveDxfFileDataSourceQueryChooser.java @@ -1,173 +1,173 @@ -package org.jgrasstools.gears.io.dxfdwg.libs.dxf; -///* -// * Library name : dxf -// * (C) 2006 Micha�l Michaud -// * -// * This program is free software; you can redistribute it and/or -// * modify it under the terms of the GNU General Public License -// * as published by the Free Software Foundation; either version 2 -// * of the License, or (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program; if not, write to the Free Software -// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// * -// * For more information, contact: -// * -// * michael.michaud@free.fr -// * -// */ -// -//package fr.michaelm.jump.drivers.dxf; -// -//import java.awt.event.ActionEvent; -//import java.awt.event.ActionListener; -//import java.awt.Component; -//import java.awt.GridLayout; -//import java.io.File; -//import java.util.Collection; -//import java.util.HashMap; -//import java.util.HashSet; -//import java.util.List; -//import java.util.Map; -//import java.util.Set; -//import javax.swing.Box; -//import javax.swing.BoxLayout; -//import javax.swing.JButton; -//import javax.swing.JCheckBox; -//import javax.swing.JFileChooser; -//import javax.swing.JLabel; -//import javax.swing.JPanel; -//import javax.swing.JTextField; -//import javax.swing.SwingConstants; -// -//import com.vividsolutions.jts.util.Assert; -//import com.vividsolutions.jump.feature.Feature; -//import com.vividsolutions.jump.feature.FeatureSchema; -//import com.vividsolutions.jump.workbench.datasource.InstallStandardDataSourceQueryChoosersPlugIn; -//import com.vividsolutions.jump.util.Blackboard; -//import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn; -//import com.vividsolutions.jump.workbench.plugin.PlugInContext; -//import com.vividsolutions.jump.workbench.ui.GUIUtil; -//import com.vividsolutions.jump.io.JUMPWriter; -//import com.vividsolutions.jump.io.JUMPReader; -//import com.vividsolutions.jump.workbench.datasource.LoadFileDataSourceQueryChooser; -//import com.vividsolutions.jump.workbench.datasource.SaveFileDataSourceQueryChooser; -//import com.vividsolutions.jump.workbench.datasource.DataSourceQueryChooserManager; -//import com.vividsolutions.jump.workbench.model.*; -//import com.vividsolutions.jump.workbench.ui.MultiInputDialog; -//import com.vividsolutions.jump.workbench.WorkbenchContext; -// -// -///** -// * User interface to save a JUMP layer into a DXF file -// * Add an option to the standard panel -// * - option to create "_" suffixed layers for holes in polygon -// * @author Micha�l Michaud -// * @version 0.5.0 (2006-11-12) -// */ -//// History -//// 2006-11-12 : remove the header option after L. Becker and R. Littlefield -//// have fix the bug in the header writing -//// 2006-10-18 : add two options (one for header writing and the other to suffix -//// layers containing holes) and a function to create valid DXF -//// layer names from JUMP layer names -//public class SaveDxfFileDataSourceQueryChooser extends SaveFileDataSourceQueryChooser { -// -// // Array making it possible to replace any of the 383 first unicode -// // characters by a valid character for DXF layer name or file name -// // (removes accents, escape characters and most of special symbols) -// private static String[] asciiChar = new String[] { -// "","","","","","","","","","","","","","","","", //00-0F -// "","","","","","","","","","","","","","","","", //10-1F -// "_","_","_","_","_","_","_","_","_","_","_","_","_","-",".","_", //20-2F -// "0","1","2","3","4","5","6","7","8","9","_","_","_","_","_","_", //30-3F -// "_","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O", //40-4F -// "P","Q","R","S","T","U","V","W","X","Y","Z","_","_","_","_","_", //50-5F -// "_","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o", //60-6F -// "p","q","r","s","t","u","v","w","x","y","z","_","_","_","_","", //70-7F -// "","","","","","","","","","","","","","","","", //80-8F -// "","","","","","","","","","","","","","","","", //90-9F -// "_","_","c","L","_","Y","_","_","","c","a","","_","-","r","", //A0-AF -// "o","_","2","3","","u","_",".","","1","o","","_","_","_","_", //B0-BF -// "A","A","A","A","A","A","AE","C","E","E","E","E","I","I","I","I",//C0-CF -// "E","N","O","O","O","O","O","x","O","U","U","U","U","Y","T","SS",//D0-DF -// "a","a","a","a","a","a","ae","c","e","e","e","e","i","i","i","i",//E0-EF -// "e","n","o","o","o","o","o","_","0","u","u","u","u","y","t","y", //F0-FF -// "A","a","A","a","A","a","C","c","C","c","C","c","C","c","D","d", //100-10F -// "D","d","E","e","E","e","E","e","E","e","E","e","G","g","G","g", //110-11F -// "G","g","G","g","H","h","H","h","I","i","I","i","I","i","I","i", //120-12F -// "I","i","IJ","ij","J","j","K","k","k","L","l","L","l","L","l","L", //130-13F -// "l","L","l","N","n","N","n","N","n","n","N","n","O","o","O","o", //140-14F -// "O","o","OE","oe","R","r","R","r","R","r","S","s","S","s","S","s", //150-15F -// "S","s","T","t","T","t","T","t","U","u","U","u","U","u","U","u", //160-16F -// "U","u","U","u","W","w","Y","y","Y","Z","z","Z","z","Z","z","_" //170-17F -// }; -// -// WorkbenchContext context; -// JPanel optionPanel = new JPanel(); -// //JCheckBox headerCB = new JCheckBox("Export dxf header", true); -// JCheckBox suffixCB = new JCheckBox("Put polygon holes in layers with a '_' suffix", true); -// -// SaveDxfFileDataSourceQueryChooser(Class readerWriterDataSourceClass, String description, -// String[] extensions, WorkbenchContext workbenchContext) { -// super(readerWriterDataSourceClass, description, extensions, workbenchContext); -// this.context = workbenchContext; -// Box box = new Box(BoxLayout.Y_AXIS); -// optionPanel.add(box); -// //box.add(headerCB); -// box.add(suffixCB); -// } -// -// protected Map toProperties(File file) { -// HashMap properties = new HashMap(super.toProperties(file)); -// Layerable selectedLayer = context.getLayerNamePanel().getSelectedLayers()[0]; -// String layerName = toAscii(selectedLayer.getName()).substring(0, Math.min(selectedLayer.getName().length(), 31)); -// properties.put("LAYER_NAME", new String[]{layerName}); -// // If the layer schema has an attribute "LAYER" the value of this -// // attribute is used for the DXF layer name -// if (selectedLayer instanceof Layer) { -// FeatureSchema fs = ((Layer)selectedLayer).getFeatureCollectionWrapper().getFeatureSchema(); -// if (fs.hasAttribute("LAYER")) { -// Set layerSet = new HashSet(); -// List features = ((Layer)selectedLayer).getFeatureCollectionWrapper().getFeatures(); -// for (int i = 0 ; i < features.size() ; i++) { -// if (((Feature)features.get(i)).getString("LAYER") != null && -// ((Feature)features.get(i)).getString("LAYER").trim().length()>0 && -// !((Feature)features.get(i)).getString("LAYER").endsWith("_")) { -// layerSet.add(((Feature)features.get(i)).getString("LAYER")); -// } -// } -// String[] set = (String[])layerSet.toArray(new String[layerSet.size()]); -// properties.put("LAYER_NAME", set); -// } -// } -// //properties.put("HEADER", new Boolean(headerCB.isSelected())); -// properties.put("SUFFIX", new Boolean(suffixCB.isSelected())); -// return properties; -// } -// -// protected Component getSouthComponent1() { -// return optionPanel; -// } -// -// /** -// * Remove accents using the asciiChar array. -// */ -// public static String toAscii(String in) { -// String input = in.trim(); -// StringBuffer output = new StringBuffer(""); -// for(int i = 0 ; i < input.length() ; i++) { -// int carVal = input.charAt(i); -// if (carVal < 384) {output.append(asciiChar[carVal]);} -// else {output.append("_");} -// } -// return output.toString(); -// } -// -//} +package org.jgrasstools.gears.io.dxfdwg.libs.dxf; +///* +// * Library name : dxf +// * (C) 2006 Micha�l Michaud +// * +// * This program is free software; you can redistribute it and/or +// * modify it under the terms of the GNU General Public License +// * as published by the Free Software Foundation; either version 2 +// * of the License, or (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// * +// * For more information, contact: +// * +// * michael.michaud@free.fr +// * +// */ +// +//package fr.michaelm.jump.drivers.dxf; +// +//import java.awt.event.ActionEvent; +//import java.awt.event.ActionListener; +//import java.awt.Component; +//import java.awt.GridLayout; +//import java.io.File; +//import java.util.Collection; +//import java.util.HashMap; +//import java.util.HashSet; +//import java.util.List; +//import java.util.Map; +//import java.util.Set; +//import javax.swing.Box; +//import javax.swing.BoxLayout; +//import javax.swing.JButton; +//import javax.swing.JCheckBox; +//import javax.swing.JFileChooser; +//import javax.swing.JLabel; +//import javax.swing.JPanel; +//import javax.swing.JTextField; +//import javax.swing.SwingConstants; +// +//import com.vividsolutions.jts.util.Assert; +//import com.vividsolutions.jump.feature.Feature; +//import com.vividsolutions.jump.feature.FeatureSchema; +//import com.vividsolutions.jump.workbench.datasource.InstallStandardDataSourceQueryChoosersPlugIn; +//import com.vividsolutions.jump.util.Blackboard; +//import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn; +//import com.vividsolutions.jump.workbench.plugin.PlugInContext; +//import com.vividsolutions.jump.workbench.ui.GUIUtil; +//import com.vividsolutions.jump.io.JUMPWriter; +//import com.vividsolutions.jump.io.JUMPReader; +//import com.vividsolutions.jump.workbench.datasource.LoadFileDataSourceQueryChooser; +//import com.vividsolutions.jump.workbench.datasource.SaveFileDataSourceQueryChooser; +//import com.vividsolutions.jump.workbench.datasource.DataSourceQueryChooserManager; +//import com.vividsolutions.jump.workbench.model.*; +//import com.vividsolutions.jump.workbench.ui.MultiInputDialog; +//import com.vividsolutions.jump.workbench.WorkbenchContext; +// +// +///** +// * User interface to save a JUMP layer into a DXF file +// * Add an option to the standard panel +// * - option to create "_" suffixed layers for holes in polygon +// * @author Micha�l Michaud +// * @version 0.5.0 (2006-11-12) +// */ +//// History +//// 2006-11-12 : remove the header option after L. Becker and R. Littlefield +//// have fix the bug in the header writing +//// 2006-10-18 : add two options (one for header writing and the other to suffix +//// layers containing holes) and a function to create valid DXF +//// layer names from JUMP layer names +//public class SaveDxfFileDataSourceQueryChooser extends SaveFileDataSourceQueryChooser { +// +// // Array making it possible to replace any of the 383 first unicode +// // characters by a valid character for DXF layer name or file name +// // (removes accents, escape characters and most of special symbols) +// private static String[] asciiChar = new String[] { +// "","","","","","","","","","","","","","","","", //00-0F +// "","","","","","","","","","","","","","","","", //10-1F +// "_","_","_","_","_","_","_","_","_","_","_","_","_","-",".","_", //20-2F +// "0","1","2","3","4","5","6","7","8","9","_","_","_","_","_","_", //30-3F +// "_","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O", //40-4F +// "P","Q","R","S","T","U","V","W","X","Y","Z","_","_","_","_","_", //50-5F +// "_","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o", //60-6F +// "p","q","r","s","t","u","v","w","x","y","z","_","_","_","_","", //70-7F +// "","","","","","","","","","","","","","","","", //80-8F +// "","","","","","","","","","","","","","","","", //90-9F +// "_","_","c","L","_","Y","_","_","","c","a","","_","-","r","", //A0-AF +// "o","_","2","3","","u","_",".","","1","o","","_","_","_","_", //B0-BF +// "A","A","A","A","A","A","AE","C","E","E","E","E","I","I","I","I",//C0-CF +// "E","N","O","O","O","O","O","x","O","U","U","U","U","Y","T","SS",//D0-DF +// "a","a","a","a","a","a","ae","c","e","e","e","e","i","i","i","i",//E0-EF +// "e","n","o","o","o","o","o","_","0","u","u","u","u","y","t","y", //F0-FF +// "A","a","A","a","A","a","C","c","C","c","C","c","C","c","D","d", //100-10F +// "D","d","E","e","E","e","E","e","E","e","E","e","G","g","G","g", //110-11F +// "G","g","G","g","H","h","H","h","I","i","I","i","I","i","I","i", //120-12F +// "I","i","IJ","ij","J","j","K","k","k","L","l","L","l","L","l","L", //130-13F +// "l","L","l","N","n","N","n","N","n","n","N","n","O","o","O","o", //140-14F +// "O","o","OE","oe","R","r","R","r","R","r","S","s","S","s","S","s", //150-15F +// "S","s","T","t","T","t","T","t","U","u","U","u","U","u","U","u", //160-16F +// "U","u","U","u","W","w","Y","y","Y","Z","z","Z","z","Z","z","_" //170-17F +// }; +// +// WorkbenchContext context; +// JPanel optionPanel = new JPanel(); +// //JCheckBox headerCB = new JCheckBox("Export dxf header", true); +// JCheckBox suffixCB = new JCheckBox("Put polygon holes in layers with a '_' suffix", true); +// +// SaveDxfFileDataSourceQueryChooser(Class readerWriterDataSourceClass, String description, +// String[] extensions, WorkbenchContext workbenchContext) { +// super(readerWriterDataSourceClass, description, extensions, workbenchContext); +// this.context = workbenchContext; +// Box box = new Box(BoxLayout.Y_AXIS); +// optionPanel.add(box); +// //box.add(headerCB); +// box.add(suffixCB); +// } +// +// protected Map toProperties(File file) { +// HashMap properties = new HashMap(super.toProperties(file)); +// Layerable selectedLayer = context.getLayerNamePanel().getSelectedLayers()[0]; +// String layerName = toAscii(selectedLayer.getName()).substring(0, Math.min(selectedLayer.getName().length(), 31)); +// properties.put("LAYER_NAME", new String[]{layerName}); +// // If the layer schema has an attribute "LAYER" the value of this +// // attribute is used for the DXF layer name +// if (selectedLayer instanceof Layer) { +// FeatureSchema fs = ((Layer)selectedLayer).getFeatureCollectionWrapper().getFeatureSchema(); +// if (fs.hasAttribute("LAYER")) { +// Set layerSet = new HashSet(); +// List features = ((Layer)selectedLayer).getFeatureCollectionWrapper().getFeatures(); +// for (int i = 0 ; i < features.size() ; i++) { +// if (((Feature)features.get(i)).getString("LAYER") != null && +// ((Feature)features.get(i)).getString("LAYER").trim().length()>0 && +// !((Feature)features.get(i)).getString("LAYER").endsWith("_")) { +// layerSet.add(((Feature)features.get(i)).getString("LAYER")); +// } +// } +// String[] set = (String[])layerSet.toArray(new String[layerSet.size()]); +// properties.put("LAYER_NAME", set); +// } +// } +// //properties.put("HEADER", new Boolean(headerCB.isSelected())); +// properties.put("SUFFIX", new Boolean(suffixCB.isSelected())); +// return properties; +// } +// +// protected Component getSouthComponent1() { +// return optionPanel; +// } +// +// /** +// * Remove accents using the asciiChar array. +// */ +// public static String toAscii(String in) { +// String input = in.trim(); +// StringBuffer output = new StringBuffer(""); +// for(int i = 0 ; i < input.length() ; i++) { +// int carVal = input.charAt(i); +// if (carVal < 384) {output.append(asciiChar[carVal]);} +// else {output.append("_");} +// } +// return output.toString(); +// } +// +//} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetry.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetry.java index d739d347b..bca2a9baf 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetry.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetry.java @@ -1,45 +1,45 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.eicalculator; - -/** - * Container for Altimetric information. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class EIAltimetry { - /** - * The basin id. - */ - public int basinId; - /** - * The id of the altimetric band. - */ - public int altimetricBandId; - - /** - * The elevation of the center of the altimetric band. - */ - public double elevationValue; - - /** - * The range of the altimetric band. - */ - public double bandRange; -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.eicalculator; + +/** + * Container for Altimetric information. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class EIAltimetry { + /** + * The basin id. + */ + public int basinId; + /** + * The id of the altimetric band. + */ + public int altimetricBandId; + + /** + * The elevation of the center of the altimetric band. + */ + public double elevationValue; + + /** + * The range of the altimetric band. + */ + public double bandRange; +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetryReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetryReader.java index 4dc16b93d..fbc03eaa1 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetryReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetryReader.java @@ -1,111 +1,111 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.eicalculator; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Role; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Utility class for reading altimetry data from csv files.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Reading") -@Label(JGTConstants.LIST_READER) -@Status(Status.CERTIFIED) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class EIAltimetryReader extends JGTModel { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Role(Role.PARAMETER) - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The read data.") - @Out - public List outAltimetry; - - private BufferedReader csvReader; - - private void ensureOpen() throws IOException { - if (csvReader == null) - csvReader = new BufferedReader(new FileReader(file)); - } - - @Finalize - public void close() throws IOException { - csvReader.close(); - } - - @Execute - public void read() throws IOException { - if (!concatOr(outAltimetry == null, doReset)) { - return; - } - ensureOpen(); - - outAltimetry = new ArrayList(); - String line = null; - while( (line = csvReader.readLine()) != null ) { - if (line.trim().length() == 0 || line.trim().startsWith("#")) { - // jump empty lines and lines that start as comment - continue; - } - String[] lineSplit = line.split(pSeparator); - if (lineSplit.length > 4) { - throw new IOException("Altimetry values are defined in 4 columns."); - } - - EIAltimetry eiAltimetry = new EIAltimetry(); - eiAltimetry.basinId = Integer.parseInt(lineSplit[0].trim()); - eiAltimetry.altimetricBandId = Integer.parseInt(lineSplit[1].trim()); - eiAltimetry.elevationValue = Double.parseDouble(lineSplit[2].trim()); - eiAltimetry.bandRange = Double.parseDouble(lineSplit[3].trim()); - outAltimetry.add(eiAltimetry); - } - - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.eicalculator; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Role; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Utility class for reading altimetry data from csv files.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Reading") +@Label(JGTConstants.LIST_READER) +@Status(Status.CERTIFIED) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class EIAltimetryReader extends JGTModel { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Role(Role.PARAMETER) + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The read data.") + @Out + public List outAltimetry; + + private BufferedReader csvReader; + + private void ensureOpen() throws IOException { + if (csvReader == null) + csvReader = new BufferedReader(new FileReader(file)); + } + + @Finalize + public void close() throws IOException { + csvReader.close(); + } + + @Execute + public void read() throws IOException { + if (!concatOr(outAltimetry == null, doReset)) { + return; + } + ensureOpen(); + + outAltimetry = new ArrayList(); + String line = null; + while( (line = csvReader.readLine()) != null ) { + if (line.trim().length() == 0 || line.trim().startsWith("#")) { + // jump empty lines and lines that start as comment + continue; + } + String[] lineSplit = line.split(pSeparator); + if (lineSplit.length > 4) { + throw new IOException("Altimetry values are defined in 4 columns."); + } + + EIAltimetry eiAltimetry = new EIAltimetry(); + eiAltimetry.basinId = Integer.parseInt(lineSplit[0].trim()); + eiAltimetry.altimetricBandId = Integer.parseInt(lineSplit[1].trim()); + eiAltimetry.elevationValue = Double.parseDouble(lineSplit[2].trim()); + eiAltimetry.bandRange = Double.parseDouble(lineSplit[3].trim()); + outAltimetry.add(eiAltimetry); + } + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetryWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetryWriter.java index d20003cfb..939135643 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetryWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAltimetryWriter.java @@ -1,98 +1,98 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.eicalculator; - -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Role; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Utility class for writing altimetry data to csv files.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Writing") -@Label(JGTConstants.LIST_WRITER) -@Status(Status.CERTIFIED) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class EIAltimetryWriter extends JGTModel { - @Description("The data to write.") - @In - public List inAltimetry; - - @Description("The csv file to write to.") - @UI(JGTConstants.FILEOUT_UI_HINT) - @In - public String file = null; - - @Role(Role.PARAMETER) - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - private BufferedWriter csvWriter; - - private void ensureOpen() throws IOException { - if (csvWriter == null) - csvWriter = new BufferedWriter(new FileWriter(file)); - } - - @Finalize - public void close() throws IOException { - csvWriter.close(); - } - - @Execute - public void write() throws IOException { - ensureOpen(); - - csvWriter.write("# EIAltimetry writer output\n"); - for( EIAltimetry altimetry : inAltimetry ) { - StringBuilder sb = new StringBuilder(); - sb.append(altimetry.basinId); - sb.append(pSeparator); - sb.append(altimetry.altimetricBandId); - sb.append(pSeparator); - sb.append(altimetry.elevationValue); - sb.append(pSeparator); - sb.append(altimetry.bandRange); - sb.append("\n"); - csvWriter.write(sb.toString()); - } - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.eicalculator; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Role; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Utility class for writing altimetry data to csv files.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Writing") +@Label(JGTConstants.LIST_WRITER) +@Status(Status.CERTIFIED) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class EIAltimetryWriter extends JGTModel { + @Description("The data to write.") + @In + public List inAltimetry; + + @Description("The csv file to write to.") + @UI(JGTConstants.FILEOUT_UI_HINT) + @In + public String file = null; + + @Role(Role.PARAMETER) + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + private BufferedWriter csvWriter; + + private void ensureOpen() throws IOException { + if (csvWriter == null) + csvWriter = new BufferedWriter(new FileWriter(file)); + } + + @Finalize + public void close() throws IOException { + csvWriter.close(); + } + + @Execute + public void write() throws IOException { + ensureOpen(); + + csvWriter.write("# EIAltimetry writer output\n"); + for( EIAltimetry altimetry : inAltimetry ) { + StringBuilder sb = new StringBuilder(); + sb.append(altimetry.basinId); + sb.append(pSeparator); + sb.append(altimetry.altimetricBandId); + sb.append(pSeparator); + sb.append(altimetry.elevationValue); + sb.append(pSeparator); + sb.append(altimetry.bandRange); + sb.append("\n"); + csvWriter.write(sb.toString()); + } + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreas.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreas.java index c363a51a2..08d5a7058 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreas.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreas.java @@ -1,45 +1,45 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.eicalculator; - -/** - * Container for area information. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class EIAreas { - /** - * The basin id. - */ - public int basinId; - /** - * The id of the altimetric band. - */ - public int altimetricBandId; - - /** - * The id of the energetic index in {@link EIEnergy}. - */ - public int energyBandId; - - /** - * value of the current area. - */ - public double areaValue; -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.eicalculator; + +/** + * Container for area information. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class EIAreas { + /** + * The basin id. + */ + public int basinId; + /** + * The id of the altimetric band. + */ + public int altimetricBandId; + + /** + * The id of the energetic index in {@link EIEnergy}. + */ + public int energyBandId; + + /** + * value of the current area. + */ + public double areaValue; +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreasReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreasReader.java index 632a12b53..a8454bc36 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreasReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreasReader.java @@ -1,109 +1,109 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.eicalculator; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Role; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Utility class for reading area data (for EICalculator) from csv files.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Reading") -@Label(JGTConstants.LIST_READER) -@Status(Status.CERTIFIED) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class EIAreasReader extends JGTModel { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Role(Role.PARAMETER) - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The read data.") - @Out - public List outAreas; - - private BufferedReader csvReader; - - private void ensureOpen() throws IOException { - if (csvReader == null) - csvReader = new BufferedReader(new FileReader(file)); - } - - @Finalize - public void close() throws IOException { - csvReader.close(); - } - - @Execute - public void read() throws IOException { - if (!concatOr(outAreas == null, doReset)) { - return; - } - ensureOpen(); - outAreas = new ArrayList(); - String line = null; - while( (line = csvReader.readLine()) != null ) { - if (line.trim().length() == 0 || line.trim().startsWith("#")) { - // jump empty lines and lines that start as comment - continue; - } - String[] lineSplit = line.split(pSeparator); - if (lineSplit.length > 4) { - throw new IOException("Area values are defined in 4 columns."); - } - - EIAreas eiAreas = new EIAreas(); - eiAreas.basinId = Integer.parseInt(lineSplit[0].trim()); - eiAreas.altimetricBandId = Integer.parseInt(lineSplit[1].trim()); - eiAreas.energyBandId = Integer.parseInt(lineSplit[2].trim()); - eiAreas.areaValue = Double.parseDouble(lineSplit[3].trim()); - outAreas.add(eiAreas); - } - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.eicalculator; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Role; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Utility class for reading area data (for EICalculator) from csv files.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Reading") +@Label(JGTConstants.LIST_READER) +@Status(Status.CERTIFIED) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class EIAreasReader extends JGTModel { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Role(Role.PARAMETER) + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The read data.") + @Out + public List outAreas; + + private BufferedReader csvReader; + + private void ensureOpen() throws IOException { + if (csvReader == null) + csvReader = new BufferedReader(new FileReader(file)); + } + + @Finalize + public void close() throws IOException { + csvReader.close(); + } + + @Execute + public void read() throws IOException { + if (!concatOr(outAreas == null, doReset)) { + return; + } + ensureOpen(); + outAreas = new ArrayList(); + String line = null; + while( (line = csvReader.readLine()) != null ) { + if (line.trim().length() == 0 || line.trim().startsWith("#")) { + // jump empty lines and lines that start as comment + continue; + } + String[] lineSplit = line.split(pSeparator); + if (lineSplit.length > 4) { + throw new IOException("Area values are defined in 4 columns."); + } + + EIAreas eiAreas = new EIAreas(); + eiAreas.basinId = Integer.parseInt(lineSplit[0].trim()); + eiAreas.altimetricBandId = Integer.parseInt(lineSplit[1].trim()); + eiAreas.energyBandId = Integer.parseInt(lineSplit[2].trim()); + eiAreas.areaValue = Double.parseDouble(lineSplit[3].trim()); + outAreas.add(eiAreas); + } + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreasWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreasWriter.java index 67476fbc9..ccf11366a 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreasWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIAreasWriter.java @@ -1,98 +1,98 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.eicalculator; - -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Role; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Utility class for writing area data (for EICalculator) to csv files.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Writing") -@Label(JGTConstants.LIST_WRITER) -@Status(Status.CERTIFIED) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class EIAreasWriter extends JGTModel { - @Description("The data to write.") - @In - public List inAreas; - - @Description("The csv file to write to.") - @UI(JGTConstants.FILEOUT_UI_HINT) - @In - public String file = null; - - @Role(Role.PARAMETER) - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - private BufferedWriter csvWriter; - - private void ensureOpen() throws IOException { - if (csvWriter == null) - csvWriter = new BufferedWriter(new FileWriter(file)); - } - - @Finalize - public void close() throws IOException { - csvWriter.close(); - } - - @Execute - public void write() throws IOException { - ensureOpen(); - - csvWriter.write("# EIAreas writer output\n"); - for( EIAreas areas : inAreas ) { - StringBuilder sb = new StringBuilder(); - sb.append(areas.basinId); - sb.append(pSeparator); - sb.append(areas.altimetricBandId); - sb.append(pSeparator); - sb.append(areas.energyBandId); - sb.append(pSeparator); - sb.append(areas.areaValue); - sb.append("\n"); - csvWriter.write(sb.toString()); - } - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.eicalculator; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Role; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Utility class for writing area data (for EICalculator) to csv files.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Writing") +@Label(JGTConstants.LIST_WRITER) +@Status(Status.CERTIFIED) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class EIAreasWriter extends JGTModel { + @Description("The data to write.") + @In + public List inAreas; + + @Description("The csv file to write to.") + @UI(JGTConstants.FILEOUT_UI_HINT) + @In + public String file = null; + + @Role(Role.PARAMETER) + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + private BufferedWriter csvWriter; + + private void ensureOpen() throws IOException { + if (csvWriter == null) + csvWriter = new BufferedWriter(new FileWriter(file)); + } + + @Finalize + public void close() throws IOException { + csvWriter.close(); + } + + @Execute + public void write() throws IOException { + ensureOpen(); + + csvWriter.write("# EIAreas writer output\n"); + for( EIAreas areas : inAreas ) { + StringBuilder sb = new StringBuilder(); + sb.append(areas.basinId); + sb.append(pSeparator); + sb.append(areas.altimetricBandId); + sb.append(pSeparator); + sb.append(areas.energyBandId); + sb.append(pSeparator); + sb.append(areas.areaValue); + sb.append("\n"); + csvWriter.write(sb.toString()); + } + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergy.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergy.java index a22a93f8d..e2dfae3cb 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergy.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergy.java @@ -1,53 +1,53 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.eicalculator; - - -/** - * Container for Energy data in the {@link EnergyIndexCalculator}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class EIEnergy { - - /** - * The basin id. - */ - public int basinId; - /** - * The id of the energetic band. - */ - public int energeticBandId; - /** - * The virtual month. - * - * The virtual months are divided as follows:
                - * 0: 22 DICEMBRE - 20 GENNAIO
                - * 1: 21 GENNAIO - 20 FEBBRAIO
                - * 2: 21 FEBBRAIO - 22 MARZO
                - * 3: 23 MARZO - 22 APRILE
                - * 4: 23 APRILE - 22 MAGGIO
                - * 5: 23 MAGGIO - 22 GIUGNO - */ - public int virtualMonth; - /** - * The value of energy. - */ - public double energyValue; -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.eicalculator; + + +/** + * Container for Energy data in the {@link EnergyIndexCalculator}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class EIEnergy { + + /** + * The basin id. + */ + public int basinId; + /** + * The id of the energetic band. + */ + public int energeticBandId; + /** + * The virtual month. + * + * The virtual months are divided as follows:
                + * 0: 22 DICEMBRE - 20 GENNAIO
                + * 1: 21 GENNAIO - 20 FEBBRAIO
                + * 2: 21 FEBBRAIO - 22 MARZO
                + * 3: 23 MARZO - 22 APRILE
                + * 4: 23 APRILE - 22 MAGGIO
                + * 5: 23 MAGGIO - 22 GIUGNO + */ + public int virtualMonth; + /** + * The value of energy. + */ + public double energyValue; +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergyReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergyReader.java index 8e97c39dc..38d35a552 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergyReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergyReader.java @@ -1,110 +1,110 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.eicalculator; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Role; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Utility class for reading energy data from csv files.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Reading") -@Label(JGTConstants.LIST_READER) -@Status(Status.CERTIFIED) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class EIEnergyReader extends JGTModel { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Role(Role.PARAMETER) - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The read data.") - @Out - public List outEnergy; - - private BufferedReader csvReader; - - private void ensureOpen() throws IOException { - if (csvReader == null) - csvReader = new BufferedReader(new FileReader(file)); - } - - @Finalize - public void close() throws IOException { - csvReader.close(); - } - - @Execute - public void read() throws IOException { - if (!concatOr(outEnergy == null, doReset)) { - return; - } - ensureOpen(); - outEnergy = new ArrayList(); - String line = null; - while( (line = csvReader.readLine()) != null ) { - if (line.trim().length() == 0 || line.trim().startsWith("#")) { - // jump empty lines and lines that start as comment - continue; - } - String[] lineSplit = line.split(pSeparator); - if (lineSplit.length > 4) { - throw new IOException("Energy values are defined in 4 columns."); - } - - EIEnergy eiEnergy = new EIEnergy(); - eiEnergy.basinId = Integer.parseInt(lineSplit[0].trim()); - eiEnergy.energeticBandId = Integer.parseInt(lineSplit[1].trim()); - eiEnergy.virtualMonth = Integer.parseInt(lineSplit[2].trim()); - eiEnergy.energyValue = Double.parseDouble(lineSplit[3].trim()); - outEnergy.add(eiEnergy); - } - - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.eicalculator; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Role; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Utility class for reading energy data from csv files.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Reading") +@Label(JGTConstants.LIST_READER) +@Status(Status.CERTIFIED) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class EIEnergyReader extends JGTModel { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Role(Role.PARAMETER) + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The read data.") + @Out + public List outEnergy; + + private BufferedReader csvReader; + + private void ensureOpen() throws IOException { + if (csvReader == null) + csvReader = new BufferedReader(new FileReader(file)); + } + + @Finalize + public void close() throws IOException { + csvReader.close(); + } + + @Execute + public void read() throws IOException { + if (!concatOr(outEnergy == null, doReset)) { + return; + } + ensureOpen(); + outEnergy = new ArrayList(); + String line = null; + while( (line = csvReader.readLine()) != null ) { + if (line.trim().length() == 0 || line.trim().startsWith("#")) { + // jump empty lines and lines that start as comment + continue; + } + String[] lineSplit = line.split(pSeparator); + if (lineSplit.length > 4) { + throw new IOException("Energy values are defined in 4 columns."); + } + + EIEnergy eiEnergy = new EIEnergy(); + eiEnergy.basinId = Integer.parseInt(lineSplit[0].trim()); + eiEnergy.energeticBandId = Integer.parseInt(lineSplit[1].trim()); + eiEnergy.virtualMonth = Integer.parseInt(lineSplit[2].trim()); + eiEnergy.energyValue = Double.parseDouble(lineSplit[3].trim()); + outEnergy.add(eiEnergy); + } + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergyWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergyWriter.java index fb8003554..9560aae61 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergyWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/eicalculator/EIEnergyWriter.java @@ -1,98 +1,98 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.eicalculator; - -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Role; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Utility class for writing energy data to csv files.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Writing") -@Label(JGTConstants.LIST_WRITER) -@Status(Status.CERTIFIED) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class EIEnergyWriter extends JGTModel { - @Description("The data to write.") - @In - public List inEnergy; - - @Description("The csv file to write to.") - @UI(JGTConstants.FILEOUT_UI_HINT) - @In - public String file = null; - - @Role(Role.PARAMETER) - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - private BufferedWriter csvWriter; - - private void ensureOpen() throws IOException { - if (csvWriter == null) - csvWriter = new BufferedWriter(new FileWriter(file)); - } - - @Finalize - public void close() throws IOException { - csvWriter.close(); - } - - @Execute - public void write() throws IOException { - ensureOpen(); - - csvWriter.write("# EIEnergy writer output\n"); - for( EIEnergy energy : inEnergy ) { - StringBuilder sb = new StringBuilder(); - sb.append(energy.basinId); - sb.append(pSeparator); - sb.append(energy.energeticBandId); - sb.append(pSeparator); - sb.append(energy.virtualMonth); - sb.append(pSeparator); - sb.append(energy.energyValue); - sb.append("\n"); - csvWriter.write(sb.toString()); - } - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.eicalculator; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Role; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Utility class for writing energy data to csv files.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Writing") +@Label(JGTConstants.LIST_WRITER) +@Status(Status.CERTIFIED) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class EIEnergyWriter extends JGTModel { + @Description("The data to write.") + @In + public List inEnergy; + + @Description("The csv file to write to.") + @UI(JGTConstants.FILEOUT_UI_HINT) + @In + public String file = null; + + @Role(Role.PARAMETER) + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + private BufferedWriter csvWriter; + + private void ensureOpen() throws IOException { + if (csvWriter == null) + csvWriter = new BufferedWriter(new FileWriter(file)); + } + + @Finalize + public void close() throws IOException { + csvWriter.close(); + } + + @Execute + public void write() throws IOException { + ensureOpen(); + + csvWriter.write("# EIEnergy writer output\n"); + for( EIEnergy energy : inEnergy ) { + StringBuilder sb = new StringBuilder(); + sb.append(energy.basinId); + sb.append(pSeparator); + sb.append(energy.energeticBandId); + sb.append(pSeparator); + sb.append(energy.virtualMonth); + sb.append(pSeparator); + sb.append(energy.energyValue); + sb.append("\n"); + csvWriter.write(sb.toString()); + } + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/exif/ExifGpsWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/exif/ExifGpsWriter.java index e4171f751..98d882bd2 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/exif/ExifGpsWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/exif/ExifGpsWriter.java @@ -1,491 +1,491 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.exif; - -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.Iterator; - -import javax.imageio.IIOImage; -import javax.imageio.ImageIO; -import javax.imageio.ImageReader; -import javax.imageio.ImageTypeSpecifier; -import javax.imageio.ImageWriteParam; -import javax.imageio.ImageWriter; -import javax.imageio.metadata.IIOInvalidTreeException; -import javax.imageio.metadata.IIOMetadata; -import javax.imageio.metadata.IIOMetadataNode; -import javax.imageio.stream.FileImageOutputStream; -import javax.imageio.stream.ImageInputStream; -import javax.imageio.stream.MemoryCacheImageInputStream; -import javax.imageio.stream.MemoryCacheImageOutputStream; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.jgrasstools.gears.libs.exceptions.ModelsIOException; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.w3c.dom.NodeList; - -import com.sun.media.imageio.plugins.tiff.EXIFGPSTagSet; -import com.sun.media.imageio.plugins.tiff.EXIFParentTIFFTagSet; -import com.sun.media.imageio.plugins.tiff.TIFFDirectory; -import com.sun.media.imageio.plugins.tiff.TIFFField; -import com.sun.media.imageio.plugins.tiff.TIFFImageReadParam; -import com.sun.media.imageio.plugins.tiff.TIFFTag; -import com.sun.media.imageioimpl.plugins.tiff.TIFFIFD; - -/** - * Adapted code from http://code.google.com/p/gmoting/ - */ -@Description("Utility class for writing exif tags in jpegs.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Jpeg, Exif, Reading") -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -@SuppressWarnings("nls") -public class ExifGpsWriter extends JGTModel { - @Description("The jpeg file.") - @In - public String file = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The latitude to add to the exif tags.") - @Out - public Double pLat = null; - - @Description("The longitude to add to the exif tags.") - @Out - public Double pLon = null; - - @Description("The timestamp to add to the exif tags (format yyyy-MM-dd HH:mm:ss).") - @Out - public String tTimestamp = null; - - @Description("The altidude in meters to add to the exif tags.") - @Out - public Double pAltitude = null; - - @Description("Switch to define if latitude is northern or southern hemisphere (default is true, i.e northern).") - @Out - public boolean doNorth = true; - - @Description("Switch to define if longitude is eastern or western part (default is true, i.e eastern).") - @Out - public boolean doEast = true; - - private ImageReader jpegReader; - - private ImageWriter jpegWriter; - - private BufferedImage image; - - private File imageFile; - - private String[] latRef = {"", ""}; - private String[] longRef = {"", ""}; - private byte[] altRef = new byte[1]; - private long[][] latitude; - private long[][] longitude; - private long[][] altitude; - private String[] imgDirectionRef = {"", ""}; - private long[][] imgDirection; - private String[] datum = {"W", "G", "S", "-", "8", "4", ""}; - private String[] status = {"", ""}; - private long[][] timeStamp; - private String[] dateStamp = new String[11]; - - private DecimalFormat latFormatter = new DecimalFormat("0000.0000"); - private DecimalFormat lonFormatter = new DecimalFormat("00000.0000"); - - @Execute - public void writeGpsExif() throws IOException { - - checkNull(pLat, pLon, tTimestamp); - - String latStr = latFormatter.format(pLat * 100); - latitude = getLatitude(latStr); - String lonStr = lonFormatter.format(pLon * 100); - longitude = getLongitude(lonStr); - - latRef[0] = doNorth ? EXIFGPSTagSet.LATITUDE_REF_NORTH : EXIFGPSTagSet.LATITUDE_REF_SOUTH; - longRef[0] = doEast ? EXIFGPSTagSet.LONGITUDE_REF_EAST : EXIFGPSTagSet.LONGITUDE_REF_WEST; - - if (pAltitude != null) { - double alt = pAltitude * 10; - altitude = new long[][]{{(long) alt, 10}}; - altRef[0] = EXIFGPSTagSet.ALTITUDE_REF_SEA_LEVEL; - } - - String[] timeStampSplit = tTimestamp.trim().split("\\s+"); // yyyy-MM-dd HH:mm:ss - String date = timeStampSplit[0].replaceAll("-", ":"); - dateStamp = getDate(date); - String time = timeStampSplit[1].replaceAll(":", ""); - timeStamp = getTime(time); - - imageFile = new File(file); - ImageInputStream is = ImageIO.createImageInputStream(imageFile); - - // Get core JPEG reader. - jpegReader = ExifUtil.findReader(); - if (jpegReader == null) { - throw new ModelsIOException("Cannot find JPEG reader.", this); - } - - // Get core JPEG writer. - jpegWriter = ExifUtil.findWriter(); - if (jpegWriter == null) { - throw new ModelsIOException("Cannot find JPEG writer.", this); - } - - jpegReader.setInput(is); - image = jpegReader.read(0); - - writeExif(); - - } - - /** - * Main method to write the gps data to the exif - * @param gps - gps position to be added - * @throws IOException - */ - private void writeExif() throws IOException { - - IIOMetadata metadata = jpegReader.getImageMetadata(0); - - // names says which exif tree to get - 0 for jpeg 1 for the default - String[] names = metadata.getMetadataFormatNames(); - IIOMetadataNode root = (IIOMetadataNode) metadata.getAsTree(names[0]); - - // exif is on the app1 node called unknown - NodeList nList = root.getElementsByTagName("unknown"); - IIOMetadataNode app1EXIFNode = (IIOMetadataNode) nList.item(0); - ArrayList md = readExif(app1EXIFNode); - IIOMetadata exifMetadata = md.get(0); - - // insert the gps data into the exif - exifMetadata = insertGPSCoords(exifMetadata); - - // create a new exif node - IIOMetadataNode app1NodeNew = createNewExifNode(exifMetadata, null, null); - - // copy the user data accross - app1EXIFNode.setUserObject(app1NodeNew.getUserObject()); - - // write to a new image file - FileImageOutputStream out1 = new FileImageOutputStream(new File("GPS_" + imageFile.getName())); - jpegWriter.setOutput(out1); - metadata.setFromTree(names[0], root); - - IIOImage image = new IIOImage(jpegReader.readAsRenderedImage(0, jpegReader.getDefaultReadParam()), null, metadata); - - // write out the new image - jpegWriter.write(jpegReader.getStreamMetadata(), image, jpegWriter.getDefaultWriteParam()); - - } - - /** - * Private method - Reads the exif metadata for an image - * @param app1EXIFNode app1 Node of the image (where the exif data is stored) - * @return the exif metadata - */ - private ArrayList readExif( IIOMetadataNode app1EXIFNode ) { - // Set up input skipping EXIF ID 6-byte sequence. - byte[] app1Params = (byte[]) app1EXIFNode.getUserObject(); - - MemoryCacheImageInputStream app1EXIFInput = new MemoryCacheImageInputStream(new ByteArrayInputStream(app1Params, 6, - app1Params.length - 6)); - - // only the tiff reader knows how to interpret the exif metadata - ImageReader tiffReader = null; - Iterator readers = ImageIO.getImageReadersByFormatName("tiff"); - - while( readers.hasNext() ) { - tiffReader = (ImageReader) readers.next(); - if (tiffReader.getClass().getName().startsWith("com.sun.media")) { - // Break on finding the core provider. - break; - } - } - if (tiffReader == null) { - throw new RuntimeException("Cannot find core TIFF reader!"); - } - - ArrayList out = new ArrayList(1); - - tiffReader.setInput(app1EXIFInput); - - IIOMetadata tiffMetadata = null; - - try { - tiffMetadata = tiffReader.getImageMetadata(0); - // IIOMetadata meta = tiffReader.getImageMetadata(0); - TIFFImageReadParam rParam = (TIFFImageReadParam) tiffReader.getDefaultReadParam(); - rParam.setTIFFDecompressor(null); - } catch (IOException e) { - e.printStackTrace(); - }; - - tiffReader.dispose(); - - out.add(0, tiffMetadata); - - return out; - } - - /** - * Private method - creates a copy of the metadata that can be written to - * @param tiffMetadata - in metadata - * @return new metadata node that can be written to - */ - private IIOMetadataNode createNewExifNode( IIOMetadata tiffMetadata, IIOMetadata thumbMeta, BufferedImage thumbnail ) { - - IIOMetadataNode app1Node = null; - ImageWriter tiffWriter = null; - try { - Iterator writers = ImageIO.getImageWritersByFormatName("tiff"); - while( writers.hasNext() ) { - tiffWriter = writers.next(); - if (tiffWriter.getClass().getName().startsWith("com.sun.media")) { - // Break on finding the core provider. - break; - } - } - if (tiffWriter == null) { - System.out.println("Cannot find core TIFF writer!"); - System.exit(0); - } - - ImageWriteParam writeParam = tiffWriter.getDefaultWriteParam(); - writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); - writeParam.setCompressionType("EXIF JPEG"); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - MemoryCacheImageOutputStream app1EXIFOutput = new MemoryCacheImageOutputStream(baos); - tiffWriter.setOutput(app1EXIFOutput); - - // escribir - tiffWriter.prepareWriteEmpty(jpegReader.getStreamMetadata(), new ImageTypeSpecifier(image), image.getWidth(), - image.getHeight(), tiffMetadata, null, writeParam); - - tiffWriter.endWriteEmpty(); - - // Flush data into byte stream. - app1EXIFOutput.flush(); - - // Create APP1 parameter array. - byte[] app1Parameters = new byte[6 + baos.size()]; - - // Add EXIF APP1 ID bytes. - app1Parameters[0] = (byte) 'E'; - app1Parameters[1] = (byte) 'x'; - app1Parameters[2] = (byte) 'i'; - app1Parameters[3] = (byte) 'f'; - app1Parameters[4] = app1Parameters[5] = (byte) 0; - - // Append TIFF stream to APP1 parameters. - System.arraycopy(baos.toByteArray(), 0, app1Parameters, 6, baos.size()); - - // Create the APP1 EXIF node to be added to native JPEG image metadata. - app1Node = new IIOMetadataNode("unknown"); - app1Node.setAttribute("MarkerTag", (new Integer(0xE1)).toString()); - app1Node.setUserObject(app1Parameters); - } catch (IOException e) { - e.printStackTrace(); - } finally { - if (tiffWriter != null) - tiffWriter.dispose(); - } - - return app1Node; - - } - - /** - * Private method - adds gps information to the exif data - * @param pos a GPSPosition object containing the information to encode - * @param exif the exif metadata to add the position to - * - */ - private IIOMetadata insertGPSCoords( IIOMetadata exif ) { - - IIOMetadata outExif = null; - try { - TIFFDirectory ifd = TIFFDirectory.createFromMetadata(exif); - TIFFField gpsInfoPointer = null; - - // first get the pointer from the directory if it's not there create a new one - if (ifd.containsTIFFField(EXIFParentTIFFTagSet.TAG_GPS_INFO_IFD_POINTER)) { - gpsInfoPointer = ifd.getTIFFField(EXIFParentTIFFTagSet.TAG_GPS_INFO_IFD_POINTER); - System.out.println("Already has GPS Metadata"); - return exif; - } else { - // this assumes that the EXIFParentTIFFTagSet is allowed on the tiff image reader - - // first construct the directory to hold the GPS data - TIFFDirectory gpsData = createDirectory(); - - // Create the pointer with the data - EXIFParentTIFFTagSet parentSet = EXIFParentTIFFTagSet.getInstance(); - gpsInfoPointer = new TIFFField(parentSet.getTag(EXIFParentTIFFTagSet.TAG_GPS_INFO_IFD_POINTER), - TIFFTag.TIFF_LONG, 1, gpsData); - System.out.println("is pointer =" + gpsInfoPointer.getTag().isIFDPointer() + " data type is ok=" - + gpsInfoPointer.getTag().isDataTypeOK(TIFFTag.TIFF_LONG)); - } - ifd.addTIFFField(gpsInfoPointer); - outExif = ifd.getAsMetadata(); - - } catch (IIOInvalidTreeException e) { - e.printStackTrace(); - } - - return outExif; - - } - - private TIFFDirectory createDirectory() { - - EXIFGPSTagSet gpsTags = EXIFGPSTagSet.getInstance(); - - ArrayList tags = new ArrayList(); - tags.add(gpsTags); - TIFFDirectory directory = new TIFFIFD(tags, EXIFParentTIFFTagSet.getInstance().getTag( - EXIFParentTIFFTagSet.TAG_GPS_INFO_IFD_POINTER)); - // TIFFDirectory directory = new TIFFDirectory(new - // TIFFTagSet[]{gpsTags},EXIFParentTIFFTagSet.getInstance().getTag(EXIFParentTIFFTagSet.TAG_GPS_INFO_IFD_POINTER)); - - // create the new fields - - // version field - TIFFField field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_VERSION_ID), TIFFTag.TIFF_BYTE, 4, - EXIFGPSTagSet.GPS_VERSION_2_2); - directory.addTIFFField(field); - // lat reference - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_LATITUDE_REF), TIFFTag.TIFF_ASCII, 2, latRef); - directory.addTIFFField(field); - // latitude - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_LATITUDE), TIFFTag.TIFF_RATIONAL, 3, latitude); - directory.addTIFFField(field); - // long reference - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_LONGITUDE_REF), TIFFTag.TIFF_ASCII, 2, longRef); - directory.addTIFFField(field); - // longitude - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_LONGITUDE), TIFFTag.TIFF_RATIONAL, 3, longitude); - directory.addTIFFField(field); - // time stamp - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_TIME_STAMP), TIFFTag.TIFF_RATIONAL, 3, timeStamp); - directory.addTIFFField(field); - // status - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_STATUS), TIFFTag.TIFF_ASCII, 2, status); - directory.addTIFFField(field); - // date stamp - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_DATE_STAMP), TIFFTag.TIFF_ASCII, 11, dateStamp); - directory.addTIFFField(field); - // datum - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_MAP_DATUM), TIFFTag.TIFF_ASCII, 6, datum); - directory.addTIFFField(field); - // altitude reference - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_ALTITUDE_REF), TIFFTag.TIFF_BYTE, 1, altRef); - directory.addTIFFField(field); - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_ALTITUDE), TIFFTag.TIFF_RATIONAL, 1, altitude); - directory.addTIFFField(field); - // add the direction - imgDirectionRef[0] = EXIFGPSTagSet.DIRECTION_REF_TRUE; - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_IMG_DIRECTION_REF), TIFFTag.TIFF_ASCII, 2, imgDirectionRef); - directory.addTIFFField(field); - if (imgDirection == null) - imgDirection = new long[][]{{0, 100}}; - field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_IMG_DIRECTION), TIFFTag.TIFF_RATIONAL, 1, imgDirection); - directory.addTIFFField(field); - - return directory; - } - - // assumes the the format is HHMM.MMMM - private long[][] getLatitude( String lat ) { - - float secs = Float.parseFloat("0" + lat.substring(4)) * 60.f; - long nom = (long) (secs * 1000); - - long[][] latl = new long[][]{{Long.parseLong(lat.substring(0, 2)), 1}, {Long.parseLong(lat.substring(2, 4)), 1}, - {nom, 1000}}; - - return latl; - } - - // assumes the the format is HHHMM.MMMM - private long[][] getLongitude( String longi ) { - - float secs = Float.parseFloat("0" + longi.substring(5)) * 60.f; - long nom = (long) (secs * 1000); - - long[][] longl = new long[][]{{Long.parseLong(longi.substring(0, 3)), 1}, {Long.parseLong(longi.substring(3, 5)), 1}, - {nom, 1000}}; - - return longl; - } - - /** - * Convert a time to exif format. - * - * @param time the time in format HHMMSS. - * @return the exif time object. - */ - private long[][] getTime( String time ) { - long[][] timel = new long[][]{{Long.parseLong(time.substring(0, 2)), 1}, {Long.parseLong(time.substring(2, 4)), 1}, - {Long.parseLong(time.substring(4)), 1}}; - return timel; - } - - /** - * Convert a date to exif date. - * - * @param date the date in format YYYY:MM:DD - * @return the exif date object. - */ - private String[] getDate( String date ) { - - String dateStr = "20" + date.substring(4) + ":" + date.substring(2, 4) + ":" + date.substring(0, 2); - - String[] dateArray = new String[11]; - - for( int i = 0; i < dateStr.length(); i++ ) - dateArray[i] = dateStr.substring(i, i + 1); - dateArray[10] = ""; - - return dateArray; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.exif; + +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Iterator; + +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import javax.imageio.ImageTypeSpecifier; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.metadata.IIOInvalidTreeException; +import javax.imageio.metadata.IIOMetadata; +import javax.imageio.metadata.IIOMetadataNode; +import javax.imageio.stream.FileImageOutputStream; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.MemoryCacheImageInputStream; +import javax.imageio.stream.MemoryCacheImageOutputStream; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.jgrasstools.gears.libs.exceptions.ModelsIOException; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.w3c.dom.NodeList; + +import com.sun.media.imageio.plugins.tiff.EXIFGPSTagSet; +import com.sun.media.imageio.plugins.tiff.EXIFParentTIFFTagSet; +import com.sun.media.imageio.plugins.tiff.TIFFDirectory; +import com.sun.media.imageio.plugins.tiff.TIFFField; +import com.sun.media.imageio.plugins.tiff.TIFFImageReadParam; +import com.sun.media.imageio.plugins.tiff.TIFFTag; +import com.sun.media.imageioimpl.plugins.tiff.TIFFIFD; + +/** + * Adapted code from http://code.google.com/p/gmoting/ + */ +@Description("Utility class for writing exif tags in jpegs.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Jpeg, Exif, Reading") +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +@SuppressWarnings("nls") +public class ExifGpsWriter extends JGTModel { + @Description("The jpeg file.") + @In + public String file = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The latitude to add to the exif tags.") + @Out + public Double pLat = null; + + @Description("The longitude to add to the exif tags.") + @Out + public Double pLon = null; + + @Description("The timestamp to add to the exif tags (format yyyy-MM-dd HH:mm:ss).") + @Out + public String tTimestamp = null; + + @Description("The altidude in meters to add to the exif tags.") + @Out + public Double pAltitude = null; + + @Description("Switch to define if latitude is northern or southern hemisphere (default is true, i.e northern).") + @Out + public boolean doNorth = true; + + @Description("Switch to define if longitude is eastern or western part (default is true, i.e eastern).") + @Out + public boolean doEast = true; + + private ImageReader jpegReader; + + private ImageWriter jpegWriter; + + private BufferedImage image; + + private File imageFile; + + private String[] latRef = {"", ""}; + private String[] longRef = {"", ""}; + private byte[] altRef = new byte[1]; + private long[][] latitude; + private long[][] longitude; + private long[][] altitude; + private String[] imgDirectionRef = {"", ""}; + private long[][] imgDirection; + private String[] datum = {"W", "G", "S", "-", "8", "4", ""}; + private String[] status = {"", ""}; + private long[][] timeStamp; + private String[] dateStamp = new String[11]; + + private DecimalFormat latFormatter = new DecimalFormat("0000.0000"); + private DecimalFormat lonFormatter = new DecimalFormat("00000.0000"); + + @Execute + public void writeGpsExif() throws IOException { + + checkNull(pLat, pLon, tTimestamp); + + String latStr = latFormatter.format(pLat * 100); + latitude = getLatitude(latStr); + String lonStr = lonFormatter.format(pLon * 100); + longitude = getLongitude(lonStr); + + latRef[0] = doNorth ? EXIFGPSTagSet.LATITUDE_REF_NORTH : EXIFGPSTagSet.LATITUDE_REF_SOUTH; + longRef[0] = doEast ? EXIFGPSTagSet.LONGITUDE_REF_EAST : EXIFGPSTagSet.LONGITUDE_REF_WEST; + + if (pAltitude != null) { + double alt = pAltitude * 10; + altitude = new long[][]{{(long) alt, 10}}; + altRef[0] = EXIFGPSTagSet.ALTITUDE_REF_SEA_LEVEL; + } + + String[] timeStampSplit = tTimestamp.trim().split("\\s+"); // yyyy-MM-dd HH:mm:ss + String date = timeStampSplit[0].replaceAll("-", ":"); + dateStamp = getDate(date); + String time = timeStampSplit[1].replaceAll(":", ""); + timeStamp = getTime(time); + + imageFile = new File(file); + ImageInputStream is = ImageIO.createImageInputStream(imageFile); + + // Get core JPEG reader. + jpegReader = ExifUtil.findReader(); + if (jpegReader == null) { + throw new ModelsIOException("Cannot find JPEG reader.", this); + } + + // Get core JPEG writer. + jpegWriter = ExifUtil.findWriter(); + if (jpegWriter == null) { + throw new ModelsIOException("Cannot find JPEG writer.", this); + } + + jpegReader.setInput(is); + image = jpegReader.read(0); + + writeExif(); + + } + + /** + * Main method to write the gps data to the exif + * @param gps - gps position to be added + * @throws IOException + */ + private void writeExif() throws IOException { + + IIOMetadata metadata = jpegReader.getImageMetadata(0); + + // names says which exif tree to get - 0 for jpeg 1 for the default + String[] names = metadata.getMetadataFormatNames(); + IIOMetadataNode root = (IIOMetadataNode) metadata.getAsTree(names[0]); + + // exif is on the app1 node called unknown + NodeList nList = root.getElementsByTagName("unknown"); + IIOMetadataNode app1EXIFNode = (IIOMetadataNode) nList.item(0); + ArrayList md = readExif(app1EXIFNode); + IIOMetadata exifMetadata = md.get(0); + + // insert the gps data into the exif + exifMetadata = insertGPSCoords(exifMetadata); + + // create a new exif node + IIOMetadataNode app1NodeNew = createNewExifNode(exifMetadata, null, null); + + // copy the user data accross + app1EXIFNode.setUserObject(app1NodeNew.getUserObject()); + + // write to a new image file + FileImageOutputStream out1 = new FileImageOutputStream(new File("GPS_" + imageFile.getName())); + jpegWriter.setOutput(out1); + metadata.setFromTree(names[0], root); + + IIOImage image = new IIOImage(jpegReader.readAsRenderedImage(0, jpegReader.getDefaultReadParam()), null, metadata); + + // write out the new image + jpegWriter.write(jpegReader.getStreamMetadata(), image, jpegWriter.getDefaultWriteParam()); + + } + + /** + * Private method - Reads the exif metadata for an image + * @param app1EXIFNode app1 Node of the image (where the exif data is stored) + * @return the exif metadata + */ + private ArrayList readExif( IIOMetadataNode app1EXIFNode ) { + // Set up input skipping EXIF ID 6-byte sequence. + byte[] app1Params = (byte[]) app1EXIFNode.getUserObject(); + + MemoryCacheImageInputStream app1EXIFInput = new MemoryCacheImageInputStream(new ByteArrayInputStream(app1Params, 6, + app1Params.length - 6)); + + // only the tiff reader knows how to interpret the exif metadata + ImageReader tiffReader = null; + Iterator readers = ImageIO.getImageReadersByFormatName("tiff"); + + while( readers.hasNext() ) { + tiffReader = (ImageReader) readers.next(); + if (tiffReader.getClass().getName().startsWith("com.sun.media")) { + // Break on finding the core provider. + break; + } + } + if (tiffReader == null) { + throw new RuntimeException("Cannot find core TIFF reader!"); + } + + ArrayList out = new ArrayList(1); + + tiffReader.setInput(app1EXIFInput); + + IIOMetadata tiffMetadata = null; + + try { + tiffMetadata = tiffReader.getImageMetadata(0); + // IIOMetadata meta = tiffReader.getImageMetadata(0); + TIFFImageReadParam rParam = (TIFFImageReadParam) tiffReader.getDefaultReadParam(); + rParam.setTIFFDecompressor(null); + } catch (IOException e) { + e.printStackTrace(); + }; + + tiffReader.dispose(); + + out.add(0, tiffMetadata); + + return out; + } + + /** + * Private method - creates a copy of the metadata that can be written to + * @param tiffMetadata - in metadata + * @return new metadata node that can be written to + */ + private IIOMetadataNode createNewExifNode( IIOMetadata tiffMetadata, IIOMetadata thumbMeta, BufferedImage thumbnail ) { + + IIOMetadataNode app1Node = null; + ImageWriter tiffWriter = null; + try { + Iterator writers = ImageIO.getImageWritersByFormatName("tiff"); + while( writers.hasNext() ) { + tiffWriter = writers.next(); + if (tiffWriter.getClass().getName().startsWith("com.sun.media")) { + // Break on finding the core provider. + break; + } + } + if (tiffWriter == null) { + System.out.println("Cannot find core TIFF writer!"); + System.exit(0); + } + + ImageWriteParam writeParam = tiffWriter.getDefaultWriteParam(); + writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); + writeParam.setCompressionType("EXIF JPEG"); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + MemoryCacheImageOutputStream app1EXIFOutput = new MemoryCacheImageOutputStream(baos); + tiffWriter.setOutput(app1EXIFOutput); + + // escribir + tiffWriter.prepareWriteEmpty(jpegReader.getStreamMetadata(), new ImageTypeSpecifier(image), image.getWidth(), + image.getHeight(), tiffMetadata, null, writeParam); + + tiffWriter.endWriteEmpty(); + + // Flush data into byte stream. + app1EXIFOutput.flush(); + + // Create APP1 parameter array. + byte[] app1Parameters = new byte[6 + baos.size()]; + + // Add EXIF APP1 ID bytes. + app1Parameters[0] = (byte) 'E'; + app1Parameters[1] = (byte) 'x'; + app1Parameters[2] = (byte) 'i'; + app1Parameters[3] = (byte) 'f'; + app1Parameters[4] = app1Parameters[5] = (byte) 0; + + // Append TIFF stream to APP1 parameters. + System.arraycopy(baos.toByteArray(), 0, app1Parameters, 6, baos.size()); + + // Create the APP1 EXIF node to be added to native JPEG image metadata. + app1Node = new IIOMetadataNode("unknown"); + app1Node.setAttribute("MarkerTag", (new Integer(0xE1)).toString()); + app1Node.setUserObject(app1Parameters); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (tiffWriter != null) + tiffWriter.dispose(); + } + + return app1Node; + + } + + /** + * Private method - adds gps information to the exif data + * @param pos a GPSPosition object containing the information to encode + * @param exif the exif metadata to add the position to + * + */ + private IIOMetadata insertGPSCoords( IIOMetadata exif ) { + + IIOMetadata outExif = null; + try { + TIFFDirectory ifd = TIFFDirectory.createFromMetadata(exif); + TIFFField gpsInfoPointer = null; + + // first get the pointer from the directory if it's not there create a new one + if (ifd.containsTIFFField(EXIFParentTIFFTagSet.TAG_GPS_INFO_IFD_POINTER)) { + gpsInfoPointer = ifd.getTIFFField(EXIFParentTIFFTagSet.TAG_GPS_INFO_IFD_POINTER); + System.out.println("Already has GPS Metadata"); + return exif; + } else { + // this assumes that the EXIFParentTIFFTagSet is allowed on the tiff image reader + + // first construct the directory to hold the GPS data + TIFFDirectory gpsData = createDirectory(); + + // Create the pointer with the data + EXIFParentTIFFTagSet parentSet = EXIFParentTIFFTagSet.getInstance(); + gpsInfoPointer = new TIFFField(parentSet.getTag(EXIFParentTIFFTagSet.TAG_GPS_INFO_IFD_POINTER), + TIFFTag.TIFF_LONG, 1, gpsData); + System.out.println("is pointer =" + gpsInfoPointer.getTag().isIFDPointer() + " data type is ok=" + + gpsInfoPointer.getTag().isDataTypeOK(TIFFTag.TIFF_LONG)); + } + ifd.addTIFFField(gpsInfoPointer); + outExif = ifd.getAsMetadata(); + + } catch (IIOInvalidTreeException e) { + e.printStackTrace(); + } + + return outExif; + + } + + private TIFFDirectory createDirectory() { + + EXIFGPSTagSet gpsTags = EXIFGPSTagSet.getInstance(); + + ArrayList tags = new ArrayList(); + tags.add(gpsTags); + TIFFDirectory directory = new TIFFIFD(tags, EXIFParentTIFFTagSet.getInstance().getTag( + EXIFParentTIFFTagSet.TAG_GPS_INFO_IFD_POINTER)); + // TIFFDirectory directory = new TIFFDirectory(new + // TIFFTagSet[]{gpsTags},EXIFParentTIFFTagSet.getInstance().getTag(EXIFParentTIFFTagSet.TAG_GPS_INFO_IFD_POINTER)); + + // create the new fields + + // version field + TIFFField field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_VERSION_ID), TIFFTag.TIFF_BYTE, 4, + EXIFGPSTagSet.GPS_VERSION_2_2); + directory.addTIFFField(field); + // lat reference + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_LATITUDE_REF), TIFFTag.TIFF_ASCII, 2, latRef); + directory.addTIFFField(field); + // latitude + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_LATITUDE), TIFFTag.TIFF_RATIONAL, 3, latitude); + directory.addTIFFField(field); + // long reference + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_LONGITUDE_REF), TIFFTag.TIFF_ASCII, 2, longRef); + directory.addTIFFField(field); + // longitude + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_LONGITUDE), TIFFTag.TIFF_RATIONAL, 3, longitude); + directory.addTIFFField(field); + // time stamp + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_TIME_STAMP), TIFFTag.TIFF_RATIONAL, 3, timeStamp); + directory.addTIFFField(field); + // status + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_STATUS), TIFFTag.TIFF_ASCII, 2, status); + directory.addTIFFField(field); + // date stamp + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_DATE_STAMP), TIFFTag.TIFF_ASCII, 11, dateStamp); + directory.addTIFFField(field); + // datum + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_MAP_DATUM), TIFFTag.TIFF_ASCII, 6, datum); + directory.addTIFFField(field); + // altitude reference + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_ALTITUDE_REF), TIFFTag.TIFF_BYTE, 1, altRef); + directory.addTIFFField(field); + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_ALTITUDE), TIFFTag.TIFF_RATIONAL, 1, altitude); + directory.addTIFFField(field); + // add the direction + imgDirectionRef[0] = EXIFGPSTagSet.DIRECTION_REF_TRUE; + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_IMG_DIRECTION_REF), TIFFTag.TIFF_ASCII, 2, imgDirectionRef); + directory.addTIFFField(field); + if (imgDirection == null) + imgDirection = new long[][]{{0, 100}}; + field = new TIFFField(gpsTags.getTag(EXIFGPSTagSet.TAG_GPS_IMG_DIRECTION), TIFFTag.TIFF_RATIONAL, 1, imgDirection); + directory.addTIFFField(field); + + return directory; + } + + // assumes the the format is HHMM.MMMM + private long[][] getLatitude( String lat ) { + + float secs = Float.parseFloat("0" + lat.substring(4)) * 60.f; + long nom = (long) (secs * 1000); + + long[][] latl = new long[][]{{Long.parseLong(lat.substring(0, 2)), 1}, {Long.parseLong(lat.substring(2, 4)), 1}, + {nom, 1000}}; + + return latl; + } + + // assumes the the format is HHHMM.MMMM + private long[][] getLongitude( String longi ) { + + float secs = Float.parseFloat("0" + longi.substring(5)) * 60.f; + long nom = (long) (secs * 1000); + + long[][] longl = new long[][]{{Long.parseLong(longi.substring(0, 3)), 1}, {Long.parseLong(longi.substring(3, 5)), 1}, + {nom, 1000}}; + + return longl; + } + + /** + * Convert a time to exif format. + * + * @param time the time in format HHMMSS. + * @return the exif time object. + */ + private long[][] getTime( String time ) { + long[][] timel = new long[][]{{Long.parseLong(time.substring(0, 2)), 1}, {Long.parseLong(time.substring(2, 4)), 1}, + {Long.parseLong(time.substring(4)), 1}}; + return timel; + } + + /** + * Convert a date to exif date. + * + * @param date the date in format YYYY:MM:DD + * @return the exif date object. + */ + private String[] getDate( String date ) { + + String dateStr = "20" + date.substring(4) + ":" + date.substring(2, 4) + ":" + date.substring(0, 2); + + String[] dateArray = new String[11]; + + for( int i = 0; i < dateStr.length(); i++ ) + dateArray[i] = dateStr.substring(i, i + 1); + dateArray[10] = ""; + + return dateArray; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/exif/ExifReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/exif/ExifReader.java index 5dd77f56e..75dc38f58 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/exif/ExifReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/exif/ExifReader.java @@ -1,119 +1,119 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.exif; - -import java.io.File; -import java.io.IOException; -import java.util.HashMap; - -import javax.imageio.ImageReader; -import javax.imageio.metadata.IIOMetadata; -import javax.imageio.metadata.IIOMetadataNode; -import javax.imageio.stream.FileImageInputStream; - -import oms3.annotations.Author; -import oms3.annotations.Label; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Role; -import oms3.annotations.Status; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.w3c.dom.NodeList; - -@Description("Utility class for reading exif tags in jpegs.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Jpeg, Exif, Reading") -@Label(JGTConstants.GENERICREADER) -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class ExifReader extends JGTModel { - @Role(Role.PARAMETER) - @Description("The jpeg file.") - @In - public String file = null; - - @Role(Role.PARAMETER) - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Role(Role.PARAMETER) - @Description("The read exif tags.") - @Out - public HashMap outTags = null; - - @Execute - public void readExif() throws IOException { - ImageReader reader = ExifUtil.findReader(); - reader.setInput(new FileImageInputStream(new File(file))); - IIOMetadata imageMetadata = reader.getImageMetadata(0); - - parseExifMeta(imageMetadata); - - } - - @SuppressWarnings("nls") - private void parseExifMeta( IIOMetadata exifMeta ) { - outTags = new HashMap(); - - IIOMetadataNode root = (IIOMetadataNode) exifMeta.getAsTree("com_sun_media_imageio_plugins_tiff_image_1.0"); - - NodeList imageDirectories = root.getElementsByTagName("TIFFIFD"); - for( int i = 0; i < imageDirectories.getLength(); i++ ) { - IIOMetadataNode directory = (IIOMetadataNode) imageDirectories.item(i); - - NodeList tiffTags = directory.getElementsByTagName("TIFFField"); - for( int j = 0; j < tiffTags.getLength(); j++ ) { - IIOMetadataNode tag = (IIOMetadataNode) tiffTags.item(j); - - String tagNumber = tag.getAttribute("number"); - String tagName = tag.getAttribute("name"); - String tagValue; - - StringBuilder tmp = new StringBuilder(); - IIOMetadataNode values = (IIOMetadataNode) tag.getFirstChild(); - - if ("TIFFUndefined".equals(values.getNodeName())) { - tmp.append(values.getAttribute("value")); - } else { - NodeList tiffNumbers = values.getChildNodes(); - for( int k = 0; k < tiffNumbers.getLength(); k++ ) { - tmp.append(((IIOMetadataNode) tiffNumbers.item(k)).getAttribute("value")); - tmp.append(","); - } - tmp.deleteCharAt(tmp.length() - 1); - } - - tagValue = tmp.toString(); - - ExifTag exifTag = new ExifTag(tagName, tagNumber, tagValue); - outTags.put(tagName, exifTag); - } - } - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.exif; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; + +import javax.imageio.ImageReader; +import javax.imageio.metadata.IIOMetadata; +import javax.imageio.metadata.IIOMetadataNode; +import javax.imageio.stream.FileImageInputStream; + +import oms3.annotations.Author; +import oms3.annotations.Label; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Role; +import oms3.annotations.Status; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.w3c.dom.NodeList; + +@Description("Utility class for reading exif tags in jpegs.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Jpeg, Exif, Reading") +@Label(JGTConstants.GENERICREADER) +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class ExifReader extends JGTModel { + @Role(Role.PARAMETER) + @Description("The jpeg file.") + @In + public String file = null; + + @Role(Role.PARAMETER) + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Role(Role.PARAMETER) + @Description("The read exif tags.") + @Out + public HashMap outTags = null; + + @Execute + public void readExif() throws IOException { + ImageReader reader = ExifUtil.findReader(); + reader.setInput(new FileImageInputStream(new File(file))); + IIOMetadata imageMetadata = reader.getImageMetadata(0); + + parseExifMeta(imageMetadata); + + } + + @SuppressWarnings("nls") + private void parseExifMeta( IIOMetadata exifMeta ) { + outTags = new HashMap(); + + IIOMetadataNode root = (IIOMetadataNode) exifMeta.getAsTree("com_sun_media_imageio_plugins_tiff_image_1.0"); + + NodeList imageDirectories = root.getElementsByTagName("TIFFIFD"); + for( int i = 0; i < imageDirectories.getLength(); i++ ) { + IIOMetadataNode directory = (IIOMetadataNode) imageDirectories.item(i); + + NodeList tiffTags = directory.getElementsByTagName("TIFFField"); + for( int j = 0; j < tiffTags.getLength(); j++ ) { + IIOMetadataNode tag = (IIOMetadataNode) tiffTags.item(j); + + String tagNumber = tag.getAttribute("number"); + String tagName = tag.getAttribute("name"); + String tagValue; + + StringBuilder tmp = new StringBuilder(); + IIOMetadataNode values = (IIOMetadataNode) tag.getFirstChild(); + + if ("TIFFUndefined".equals(values.getNodeName())) { + tmp.append(values.getAttribute("value")); + } else { + NodeList tiffNumbers = values.getChildNodes(); + for( int k = 0; k < tiffNumbers.getLength(); k++ ) { + tmp.append(((IIOMetadataNode) tiffNumbers.item(k)).getAttribute("value")); + tmp.append(","); + } + tmp.deleteCharAt(tmp.length() - 1); + } + + tagValue = tmp.toString(); + + ExifTag exifTag = new ExifTag(tagName, tagNumber, tagValue); + outTags.put(tagName, exifTag); + } + } + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/DateTime2ValueMapReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/DateTime2ValueMapReader.java index 6871d6abe..699545530 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/DateTime2ValueMapReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/DateTime2ValueMapReader.java @@ -1,115 +1,115 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.generic; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.LinkedHashMap; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.joda.time.DateTime; -@Description("Utility class for reading data from csv file that have the form: time1 value1[] time2 value2[] ... timen valuen[].") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Reading") -@Label(JGTConstants.HASHMAP_READER) -@UI(JGTConstants.HIDE_UI_HINT) -@Status(Status.EXPERIMENTAL) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class DateTime2ValueMapReader { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The number of columns of the array.") - @In - public int pCols = 1; - - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Description("The file novalue.") - @In - public String fileNovalue = "-9999.0"; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The read map of ids and values arrays.") - @Out - public LinkedHashMap data; - - private BufferedReader csvReader; - - private void ensureOpen() throws IOException { - if (csvReader == null) - csvReader = new BufferedReader(new FileReader(file)); - } - - @Execute - public void readNextLine() throws IOException { - ensureOpen(); - data = new LinkedHashMap(); - String line = null; - if ((line = csvReader.readLine()) != null) { - String[] lineSplit = line.trim().split(pSeparator); - for( int i = 0; i < lineSplit.length; i++ ) { - DateTime dateTime = JGTConstants.dateTimeFormatterYYYYMMDDHHMMSS.parseDateTime(lineSplit[i].trim()); - - double[] values = new double[pCols]; - for( int j = i + 1, k = 0; j < i + pCols + 1; j++, k++ ) { - double value = Double.parseDouble(lineSplit[j].trim()); - if (fileNovalue != null) { - if (lineSplit[j].trim().equals(fileNovalue)) { - // set to internal novalue - value = doubleNovalue; - } - } - values[k] = value; - } - data.put(dateTime, values); - i = i + pCols; - } - } - } - - @Finalize - public void close() throws IOException { - csvReader.close(); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.generic; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.LinkedHashMap; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.joda.time.DateTime; +@Description("Utility class for reading data from csv file that have the form: time1 value1[] time2 value2[] ... timen valuen[].") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Reading") +@Label(JGTConstants.HASHMAP_READER) +@UI(JGTConstants.HIDE_UI_HINT) +@Status(Status.EXPERIMENTAL) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class DateTime2ValueMapReader { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The number of columns of the array.") + @In + public int pCols = 1; + + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Description("The file novalue.") + @In + public String fileNovalue = "-9999.0"; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The read map of ids and values arrays.") + @Out + public LinkedHashMap data; + + private BufferedReader csvReader; + + private void ensureOpen() throws IOException { + if (csvReader == null) + csvReader = new BufferedReader(new FileReader(file)); + } + + @Execute + public void readNextLine() throws IOException { + ensureOpen(); + data = new LinkedHashMap(); + String line = null; + if ((line = csvReader.readLine()) != null) { + String[] lineSplit = line.trim().split(pSeparator); + for( int i = 0; i < lineSplit.length; i++ ) { + DateTime dateTime = JGTConstants.dateTimeFormatterYYYYMMDDHHMMSS.parseDateTime(lineSplit[i].trim()); + + double[] values = new double[pCols]; + for( int j = i + 1, k = 0; j < i + pCols + 1; j++, k++ ) { + double value = Double.parseDouble(lineSplit[j].trim()); + if (fileNovalue != null) { + if (lineSplit[j].trim().equals(fileNovalue)) { + // set to internal novalue + value = doubleNovalue; + } + } + values[k] = value; + } + data.put(dateTime, values); + i = i + pCols; + } + } + } + + @Finalize + public void close() throws IOException { + csvReader.close(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/DateTime2ValueMapWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/DateTime2ValueMapWriter.java index b44dd2828..8f763677b 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/DateTime2ValueMapWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/DateTime2ValueMapWriter.java @@ -1,112 +1,112 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.generic; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map.Entry; -import java.util.Set; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.joda.time.DateTime; - -@Description("Utility class for writing data to csv file that have the form: time1 value1[] time2 value2[] ... timen valuen[].") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Writing") -@Label(JGTConstants.HASHMAP_WRITER) -@UI(JGTConstants.HIDE_UI_HINT) -@Status(Status.EXPERIMENTAL) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class DateTime2ValueMapWriter { - @Description("The csv file to write to.") - @UI(JGTConstants.FILEOUT_UI_HINT) - @In - public String file = null; - - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Description("The file novalue.") - @In - public String fileNovalue = "-9999.0"; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The map of ids and values arrays to write.") - @In - public HashMap data; - - private BufferedWriter csvWriter; - - private void ensureOpen() throws IOException { - if (csvWriter == null) - csvWriter = new BufferedWriter(new FileWriter(file)); - } - - private double novalue = -9999.0; - - @Execute - public void writeNextLine() throws IOException { - ensureOpen(); - - novalue = Double.parseDouble(fileNovalue); - - Set> entrySet = data.entrySet(); - for( Entry entry : entrySet ) { - DateTime id = entry.getKey(); - double[] values = entry.getValue(); - - csvWriter.write(id.toString(JGTConstants.dateTimeFormatterYYYYMMDDHHMMSS)); - for( int i = 0; i < values.length; i++ ) { - csvWriter.write(pSeparator); - double value = values[i]; - if (isNovalue(value)) { - value = novalue; - } - csvWriter.write(String.valueOf(value)); - } - csvWriter.write("\n"); - } - } - - @Finalize - public void close() throws IOException { - csvWriter.close(); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.generic; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; +import java.util.Set; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.joda.time.DateTime; + +@Description("Utility class for writing data to csv file that have the form: time1 value1[] time2 value2[] ... timen valuen[].") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Writing") +@Label(JGTConstants.HASHMAP_WRITER) +@UI(JGTConstants.HIDE_UI_HINT) +@Status(Status.EXPERIMENTAL) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class DateTime2ValueMapWriter { + @Description("The csv file to write to.") + @UI(JGTConstants.FILEOUT_UI_HINT) + @In + public String file = null; + + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Description("The file novalue.") + @In + public String fileNovalue = "-9999.0"; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The map of ids and values arrays to write.") + @In + public HashMap data; + + private BufferedWriter csvWriter; + + private void ensureOpen() throws IOException { + if (csvWriter == null) + csvWriter = new BufferedWriter(new FileWriter(file)); + } + + private double novalue = -9999.0; + + @Execute + public void writeNextLine() throws IOException { + ensureOpen(); + + novalue = Double.parseDouble(fileNovalue); + + Set> entrySet = data.entrySet(); + for( Entry entry : entrySet ) { + DateTime id = entry.getKey(); + double[] values = entry.getValue(); + + csvWriter.write(id.toString(JGTConstants.dateTimeFormatterYYYYMMDDHHMMSS)); + for( int i = 0; i < values.length; i++ ) { + csvWriter.write(pSeparator); + double value = values[i]; + if (isNovalue(value)) { + value = novalue; + } + csvWriter.write(String.valueOf(value)); + } + csvWriter.write("\n"); + } + } + + @Finalize + public void close() throws IOException { + csvWriter.close(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/Id2ValueArrayReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/Id2ValueArrayReader.java index 3b32e70e3..1d3b30ac3 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/Id2ValueArrayReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/Id2ValueArrayReader.java @@ -1,118 +1,118 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.generic; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.HashMap; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Role; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -@Description("Utility class for reading data from csv file that have the form: id1 value1[] id2 value2[] ... idn valuen[].") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Reading") -@Label(JGTConstants.HASHMAP_READER) -@UI(JGTConstants.HIDE_UI_HINT) -@Status(Status.EXPERIMENTAL) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class Id2ValueArrayReader { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Role(Role.PARAMETER) - @Description("The number of columns of the array.") - @In - public int pCols = -1; - - @Role(Role.PARAMETER) - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Role(Role.PARAMETER) - @Description("The file novalue.") - @In - public String fileNovalue = "-9999.0"; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The read map of ids and values arrays.") - @Out - public HashMap data; - - private BufferedReader csvReader; - - private void ensureOpen() throws IOException { - if (csvReader == null) - csvReader = new BufferedReader(new FileReader(file)); - } - - @Execute - public void readNextLine() throws IOException { - ensureOpen(); - data = new HashMap(); - String line = null; - if ((line = csvReader.readLine()) != null) { - String[] lineSplit = line.trim().split(pSeparator); - for( int i = 0; i < lineSplit.length; i++ ) { - int id = (int) Double.parseDouble(lineSplit[i].trim()); - - double[] values = new double[pCols]; - for( int j = i + 1, k = 0; j < i + pCols + 1; j++,k++ ) { - double value = Double.parseDouble(lineSplit[j].trim()); - if (fileNovalue != null) { - if (lineSplit[j].trim().equals(fileNovalue)) { - // set to internal novalue - value = doubleNovalue; - } - } - values[k] = value; - } - data.put(id, values); - i = i + pCols; - } - } - } - - @Finalize - public void close() throws IOException { - csvReader.close(); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.generic; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.HashMap; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Role; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +@Description("Utility class for reading data from csv file that have the form: id1 value1[] id2 value2[] ... idn valuen[].") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Reading") +@Label(JGTConstants.HASHMAP_READER) +@UI(JGTConstants.HIDE_UI_HINT) +@Status(Status.EXPERIMENTAL) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class Id2ValueArrayReader { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Role(Role.PARAMETER) + @Description("The number of columns of the array.") + @In + public int pCols = -1; + + @Role(Role.PARAMETER) + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Role(Role.PARAMETER) + @Description("The file novalue.") + @In + public String fileNovalue = "-9999.0"; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The read map of ids and values arrays.") + @Out + public HashMap data; + + private BufferedReader csvReader; + + private void ensureOpen() throws IOException { + if (csvReader == null) + csvReader = new BufferedReader(new FileReader(file)); + } + + @Execute + public void readNextLine() throws IOException { + ensureOpen(); + data = new HashMap(); + String line = null; + if ((line = csvReader.readLine()) != null) { + String[] lineSplit = line.trim().split(pSeparator); + for( int i = 0; i < lineSplit.length; i++ ) { + int id = (int) Double.parseDouble(lineSplit[i].trim()); + + double[] values = new double[pCols]; + for( int j = i + 1, k = 0; j < i + pCols + 1; j++,k++ ) { + double value = Double.parseDouble(lineSplit[j].trim()); + if (fileNovalue != null) { + if (lineSplit[j].trim().equals(fileNovalue)) { + // set to internal novalue + value = doubleNovalue; + } + } + values[k] = value; + } + data.put(id, values); + i = i + pCols; + } + } + } + + @Finalize + public void close() throws IOException { + csvReader.close(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/Id2ValueArrayWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/Id2ValueArrayWriter.java index 00c0eda87..fed369f93 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/Id2ValueArrayWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/Id2ValueArrayWriter.java @@ -1,115 +1,115 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.generic; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map.Entry; -import java.util.Set; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Role; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Utility class for writing data to csv file that have the form: id1 value1[] id2 value2[] ... idn valuen[].") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Writing") -@Label(JGTConstants.HASHMAP_WRITER) -@UI(JGTConstants.HIDE_UI_HINT) -@Status(Status.CERTIFIED) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class Id2ValueArrayWriter { - @Description("The csv file to write to.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Role(Role.PARAMETER) - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Role(Role.PARAMETER) - @Description("The file novalue.") - @In - public String fileNovalue = "-9999.0"; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The map of ids and values arrays to write.") - @In - public HashMap data; - - private BufferedWriter csvWriter; - - private void ensureOpen() throws IOException { - if (csvWriter == null) - csvWriter = new BufferedWriter(new FileWriter(file)); - } - - private double novalue = -9999.0; - - @Execute - public void writeNextLine() throws IOException { - ensureOpen(); - - novalue = Double.parseDouble(fileNovalue); - - Set> entrySet = data.entrySet(); - for( Entry entry : entrySet ) { - Integer id = entry.getKey(); - double[] values = entry.getValue(); - - csvWriter.write(id.toString()); - csvWriter.write(pSeparator); - for( int i = 0; i < values.length; i++ ) { - double value = values[i]; - if (isNovalue(value)) { - value = novalue; - } - csvWriter.write(String.valueOf(value)); - csvWriter.write(pSeparator); - } - } - csvWriter.write("\n"); - } - - @Finalize - public void close() throws IOException { - csvWriter.close(); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.generic; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; +import java.util.Set; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Role; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Utility class for writing data to csv file that have the form: id1 value1[] id2 value2[] ... idn valuen[].") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Writing") +@Label(JGTConstants.HASHMAP_WRITER) +@UI(JGTConstants.HIDE_UI_HINT) +@Status(Status.CERTIFIED) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class Id2ValueArrayWriter { + @Description("The csv file to write to.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Role(Role.PARAMETER) + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Role(Role.PARAMETER) + @Description("The file novalue.") + @In + public String fileNovalue = "-9999.0"; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The map of ids and values arrays to write.") + @In + public HashMap data; + + private BufferedWriter csvWriter; + + private void ensureOpen() throws IOException { + if (csvWriter == null) + csvWriter = new BufferedWriter(new FileWriter(file)); + } + + private double novalue = -9999.0; + + @Execute + public void writeNextLine() throws IOException { + ensureOpen(); + + novalue = Double.parseDouble(fileNovalue); + + Set> entrySet = data.entrySet(); + for( Entry entry : entrySet ) { + Integer id = entry.getKey(); + double[] values = entry.getValue(); + + csvWriter.write(id.toString()); + csvWriter.write(pSeparator); + for( int i = 0; i < values.length; i++ ) { + double value = values[i]; + if (isNovalue(value)) { + value = novalue; + } + csvWriter.write(String.valueOf(value)); + csvWriter.write(pSeparator); + } + } + csvWriter.write("\n"); + } + + @Finalize + public void close() throws IOException { + csvWriter.close(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/PlainId2ValueReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/PlainId2ValueReader.java index decf1a5b1..521b9a3bb 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/PlainId2ValueReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/generic/PlainId2ValueReader.java @@ -1,112 +1,112 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.generic; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.HashMap; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Role; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -@Description("Utility class for reading data from csv file that have the form: id1 value1 id2 value2 ... idn valuen.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Reading") -@Label(JGTConstants.HASHMAP_READER) -@UI(JGTConstants.HIDE_UI_HINT) -@Status(Status.EXPERIMENTAL) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class PlainId2ValueReader { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Role(Role.PARAMETER) - @Description("The csv separator.") - @In - public String pSeparator = ","; - - @Role(Role.PARAMETER) - @Description("The file novalue.") - @In - public String fileNovalue = "-9999.0"; - - @Role(Role.PARAMETER) - @Description("The novalue wanted in the coverage.") - @In - public double novalue = doubleNovalue; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The read map of ids and values.") - @Out - public HashMap data; - - protected BufferedReader csvReader; - - private void ensureOpen() throws IOException { - if (csvReader == null) - csvReader = new BufferedReader(new FileReader(file)); - } - - @Execute - public void readNextLine() throws IOException { - ensureOpen(); - data = new HashMap(); - String line = null; - if ((line = csvReader.readLine()) != null) { - String[] lineSplit = line.split(pSeparator); - for( int i = 0; i < lineSplit.length; i = i + 2 ) { - int id = (int) Double.parseDouble(lineSplit[i].trim()); - double value = Double.parseDouble(lineSplit[i + 1].trim()); - if (fileNovalue != null) { - if (lineSplit[i + 1].trim().equals(fileNovalue)) { - // set to internal novalue - value = novalue; - } - } - data.put(id, new double[]{value}); - } - } - } - - @Finalize - public void close() throws IOException { - csvReader.close(); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.generic; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.HashMap; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Role; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +@Description("Utility class for reading data from csv file that have the form: id1 value1 id2 value2 ... idn valuen.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Reading") +@Label(JGTConstants.HASHMAP_READER) +@UI(JGTConstants.HIDE_UI_HINT) +@Status(Status.EXPERIMENTAL) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class PlainId2ValueReader { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Role(Role.PARAMETER) + @Description("The csv separator.") + @In + public String pSeparator = ","; + + @Role(Role.PARAMETER) + @Description("The file novalue.") + @In + public String fileNovalue = "-9999.0"; + + @Role(Role.PARAMETER) + @Description("The novalue wanted in the coverage.") + @In + public double novalue = doubleNovalue; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The read map of ids and values.") + @Out + public HashMap data; + + protected BufferedReader csvReader; + + private void ensureOpen() throws IOException { + if (csvReader == null) + csvReader = new BufferedReader(new FileReader(file)); + } + + @Execute + public void readNextLine() throws IOException { + ensureOpen(); + data = new HashMap(); + String line = null; + if ((line = csvReader.readLine()) != null) { + String[] lineSplit = line.split(pSeparator); + for( int i = 0; i < lineSplit.length; i = i + 2 ) { + int id = (int) Double.parseDouble(lineSplit[i].trim()); + double value = Double.parseDouble(lineSplit[i + 1].trim()); + if (fileNovalue != null) { + if (lineSplit[i + 1].trim().equals(fileNovalue)) { + // set to internal novalue + value = novalue; + } + } + data.put(id, new double[]{value}); + } + } + } + + @Finalize + public void close() throws IOException { + csvReader.close(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyGridCoverage2D.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyGridCoverage2D.java index 950273655..4ce2cf673 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyGridCoverage2D.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyGridCoverage2D.java @@ -1,288 +1,288 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.io.grasslegacy; - -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.awt.image.RenderedImage; -import java.awt.image.renderable.RenderableImage; -import java.util.HashMap; -import java.util.Set; - -import javax.media.jai.Interpolation; - -import org.geotools.coverage.GridSampleDimension; -import org.geotools.coverage.grid.GridCoordinates2D; -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.coverage.grid.ViewType; -import org.geotools.geometry.Envelope2D; -import org.geotools.geometry.jts.ReferencedEnvelope; -import org.jgrasstools.gears.io.grasslegacy.utils.GrassLegacyUtilities; -import org.jgrasstools.gears.io.grasslegacy.utils.Window; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.coverage.CannotEvaluateException; -import org.opengis.geometry.DirectPosition; -import org.opengis.geometry.Envelope; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Coordinate; - -/** - * This is a brute force hack to get at least for GRASS rasters the - * coverage work even for rasters of size > {@link Integer#MAX_VALUE}. - * - *

                Since this backs on a double matrix, many of the methods are - * not supported. It is an ugly hack, but since the code would anyways - * break because of integer overflow, this is the last try to get it - * working anyways. So the data read are grass rasters and the size - * would overflow, this {@link GridCoverage2D} will be presented. If the client - * uses it properly, it will be able to do its work. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class GrassLegacyGridCoverage2D extends GridCoverage2D { - - private static final long serialVersionUID = 1L; - - private Window window; - private double[][] data; - private CoordinateReferenceSystem jgCrs; - private HashMap regionParamsMap; - private GridGeometry2D jgGridGeometry; - - public GrassLegacyGridCoverage2D( CharSequence name, GridCoverage2D coverage ) { - super(name, coverage); - } - - public GrassLegacyGridCoverage2D( Window window, double[][] data, CoordinateReferenceSystem crs ) { - super("dummy", CoverageUtilities.buildDummyCoverage()); - this.window = window; - this.data = data; - jgCrs = crs; - - regionParamsMap = CoverageUtilities.makeRegionParamsMap(window.getNorth(), window.getSouth(), window.getWest(), - window.getEast(), window.getWEResolution(), window.getNSResolution(), window.getCols(), window.getRows()); - jgGridGeometry = CoverageUtilities.gridGeometryFromRegionParams(regionParamsMap, jgCrs); - } - - public boolean isDataEditable() { - return true; - } - - public GridGeometry2D getGridGeometry() { - return jgGridGeometry; - } - - public Envelope getEnvelope() { - com.vividsolutions.jts.geom.Envelope envelope = window.getEnvelope(); - Envelope env = new ReferencedEnvelope(envelope, jgCrs); - return env; - } - - public Envelope2D getEnvelope2D() { - return jgGridGeometry.getEnvelope2D(); - } - - public CoordinateReferenceSystem getCoordinateReferenceSystem2D() { - return jgGridGeometry.getCoordinateReferenceSystem2D(); - } - - public int getNumSampleDimensions() { - return 1; - } - - public GridSampleDimension getSampleDimension( final int index ) { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public GridSampleDimension[] getSampleDimensions() { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public Interpolation getInterpolation() { - return Interpolation.getInstance(Interpolation.INTERP_NEAREST); - } - - private double getValue( Coordinate coordinate ) { - int[] rowCol = GrassLegacyUtilities.coordinateToNearestRowCol(window, coordinate); - return getValue(rowCol[0], rowCol[1]); - } - private double getValue( int x, int y ) { - if (y < 0 || y >= data.length) { - return Double.NaN; - } - if (x < 0 || x >= data[0].length) { - return Double.NaN; - } - return data[y][x]; - } - private double getValue( final DirectPosition point ) { - double[] coordinateArray = point.getCoordinate(); - Coordinate coordinate = new Coordinate(coordinateArray[0], coordinateArray[1]); - return getValue(coordinate); - } - private double getValue( final Point2D coord ) { - Coordinate coordinate = new Coordinate(coord.getX(), coord.getY()); - return getValue(coordinate); - } - - private double getValue( final GridCoordinates2D coord ) { - return getValue(coord.x, coord.y); - } - - public Object evaluate( final DirectPosition point ) throws CannotEvaluateException { - return getValue(point); - } - - public byte[] evaluate( final DirectPosition coord, byte[] dest ) throws CannotEvaluateException { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public int[] evaluate( final DirectPosition coord, int[] dest ) throws CannotEvaluateException { - if (dest == null) { - dest = new int[0]; - } - dest[0] = (int) getValue(coord); - return dest; - } - - public float[] evaluate( final DirectPosition coord, float[] dest ) throws CannotEvaluateException { - if (dest == null) { - dest = new float[0]; - } - dest[0] = (float) getValue(coord); - return dest; - } - - public double[] evaluate( final DirectPosition coord, double[] dest ) throws CannotEvaluateException { - if (dest == null) { - dest = new double[0]; - } - dest[0] = getValue(coord); - return dest; - } - - public int[] evaluate( final Point2D coord, int[] dest ) throws CannotEvaluateException { - if (dest == null) { - dest = new int[0]; - } - dest[0] = (int) getValue(coord); - return dest; - } - - public float[] evaluate( final Point2D coord, float[] dest ) throws CannotEvaluateException { - if (dest == null) { - dest = new float[0]; - } - dest[0] = (float) getValue(coord); - return dest; - } - - public double[] evaluate( final Point2D coord, double[] dest ) throws CannotEvaluateException { - if (dest == null) { - dest = new double[0]; - } - dest[0] = getValue(coord); - return dest; - } - - public int[] evaluate( final GridCoordinates2D coord, int[] dest ) { - if (dest == null) { - dest = new int[0]; - } - dest[0] = (int) getValue(coord); - return dest; - } - - public float[] evaluate( final GridCoordinates2D coord, float[] dest ) { - if (dest == null) { - dest = new float[0]; - } - dest[0] = (float) getValue(coord); - return dest; - } - - public double[] evaluate( final GridCoordinates2D coord, double[] dest ) { - if (dest == null) { - dest = new double[0]; - } - dest[0] = getValue(coord); - return dest; - } - - public synchronized String getDebugString( final DirectPosition coord ) { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public int[] getOptimalDataBlockSizes() { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public RenderedImage getRenderedImage() { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public RenderableImage getRenderableImage( final int xAxis, final int yAxis ) { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public void show( String title, final int xAxis, final int yAxis ) { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public void show( final String title ) { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public void prefetch( final Rectangle2D area ) { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public GridCoverage2D geophysics( final boolean geo ) { - return this; - } - - public GridCoverage2D view( final ViewType type ) { - return this; - } - - public synchronized Set getViewTypes() { - throw new UnsupportedOperationException("Not yet implemented"); - } - - public synchronized boolean dispose( final boolean force ) { - data = null; - return true; - } - - public String toString() { - return window.toString(); - } - - /** - * Getter for the data matrix that is backed by this {@link GridCoverage2D}. - * - * @return the data matrix. - */ - public double[][] getData() { - return data; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.io.grasslegacy; + +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.awt.image.RenderedImage; +import java.awt.image.renderable.RenderableImage; +import java.util.HashMap; +import java.util.Set; + +import javax.media.jai.Interpolation; + +import org.geotools.coverage.GridSampleDimension; +import org.geotools.coverage.grid.GridCoordinates2D; +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.coverage.grid.ViewType; +import org.geotools.geometry.Envelope2D; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.jgrasstools.gears.io.grasslegacy.utils.GrassLegacyUtilities; +import org.jgrasstools.gears.io.grasslegacy.utils.Window; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.coverage.CannotEvaluateException; +import org.opengis.geometry.DirectPosition; +import org.opengis.geometry.Envelope; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Coordinate; + +/** + * This is a brute force hack to get at least for GRASS rasters the + * coverage work even for rasters of size > {@link Integer#MAX_VALUE}. + * + *

                Since this backs on a double matrix, many of the methods are + * not supported. It is an ugly hack, but since the code would anyways + * break because of integer overflow, this is the last try to get it + * working anyways. So the data read are grass rasters and the size + * would overflow, this {@link GridCoverage2D} will be presented. If the client + * uses it properly, it will be able to do its work. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class GrassLegacyGridCoverage2D extends GridCoverage2D { + + private static final long serialVersionUID = 1L; + + private Window window; + private double[][] data; + private CoordinateReferenceSystem jgCrs; + private HashMap regionParamsMap; + private GridGeometry2D jgGridGeometry; + + public GrassLegacyGridCoverage2D( CharSequence name, GridCoverage2D coverage ) { + super(name, coverage); + } + + public GrassLegacyGridCoverage2D( Window window, double[][] data, CoordinateReferenceSystem crs ) { + super("dummy", CoverageUtilities.buildDummyCoverage()); + this.window = window; + this.data = data; + jgCrs = crs; + + regionParamsMap = CoverageUtilities.makeRegionParamsMap(window.getNorth(), window.getSouth(), window.getWest(), + window.getEast(), window.getWEResolution(), window.getNSResolution(), window.getCols(), window.getRows()); + jgGridGeometry = CoverageUtilities.gridGeometryFromRegionParams(regionParamsMap, jgCrs); + } + + public boolean isDataEditable() { + return true; + } + + public GridGeometry2D getGridGeometry() { + return jgGridGeometry; + } + + public Envelope getEnvelope() { + com.vividsolutions.jts.geom.Envelope envelope = window.getEnvelope(); + Envelope env = new ReferencedEnvelope(envelope, jgCrs); + return env; + } + + public Envelope2D getEnvelope2D() { + return jgGridGeometry.getEnvelope2D(); + } + + public CoordinateReferenceSystem getCoordinateReferenceSystem2D() { + return jgGridGeometry.getCoordinateReferenceSystem2D(); + } + + public int getNumSampleDimensions() { + return 1; + } + + public GridSampleDimension getSampleDimension( final int index ) { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public GridSampleDimension[] getSampleDimensions() { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public Interpolation getInterpolation() { + return Interpolation.getInstance(Interpolation.INTERP_NEAREST); + } + + private double getValue( Coordinate coordinate ) { + int[] rowCol = GrassLegacyUtilities.coordinateToNearestRowCol(window, coordinate); + return getValue(rowCol[0], rowCol[1]); + } + private double getValue( int x, int y ) { + if (y < 0 || y >= data.length) { + return Double.NaN; + } + if (x < 0 || x >= data[0].length) { + return Double.NaN; + } + return data[y][x]; + } + private double getValue( final DirectPosition point ) { + double[] coordinateArray = point.getCoordinate(); + Coordinate coordinate = new Coordinate(coordinateArray[0], coordinateArray[1]); + return getValue(coordinate); + } + private double getValue( final Point2D coord ) { + Coordinate coordinate = new Coordinate(coord.getX(), coord.getY()); + return getValue(coordinate); + } + + private double getValue( final GridCoordinates2D coord ) { + return getValue(coord.x, coord.y); + } + + public Object evaluate( final DirectPosition point ) throws CannotEvaluateException { + return getValue(point); + } + + public byte[] evaluate( final DirectPosition coord, byte[] dest ) throws CannotEvaluateException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public int[] evaluate( final DirectPosition coord, int[] dest ) throws CannotEvaluateException { + if (dest == null) { + dest = new int[0]; + } + dest[0] = (int) getValue(coord); + return dest; + } + + public float[] evaluate( final DirectPosition coord, float[] dest ) throws CannotEvaluateException { + if (dest == null) { + dest = new float[0]; + } + dest[0] = (float) getValue(coord); + return dest; + } + + public double[] evaluate( final DirectPosition coord, double[] dest ) throws CannotEvaluateException { + if (dest == null) { + dest = new double[0]; + } + dest[0] = getValue(coord); + return dest; + } + + public int[] evaluate( final Point2D coord, int[] dest ) throws CannotEvaluateException { + if (dest == null) { + dest = new int[0]; + } + dest[0] = (int) getValue(coord); + return dest; + } + + public float[] evaluate( final Point2D coord, float[] dest ) throws CannotEvaluateException { + if (dest == null) { + dest = new float[0]; + } + dest[0] = (float) getValue(coord); + return dest; + } + + public double[] evaluate( final Point2D coord, double[] dest ) throws CannotEvaluateException { + if (dest == null) { + dest = new double[0]; + } + dest[0] = getValue(coord); + return dest; + } + + public int[] evaluate( final GridCoordinates2D coord, int[] dest ) { + if (dest == null) { + dest = new int[0]; + } + dest[0] = (int) getValue(coord); + return dest; + } + + public float[] evaluate( final GridCoordinates2D coord, float[] dest ) { + if (dest == null) { + dest = new float[0]; + } + dest[0] = (float) getValue(coord); + return dest; + } + + public double[] evaluate( final GridCoordinates2D coord, double[] dest ) { + if (dest == null) { + dest = new double[0]; + } + dest[0] = getValue(coord); + return dest; + } + + public synchronized String getDebugString( final DirectPosition coord ) { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public int[] getOptimalDataBlockSizes() { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public RenderedImage getRenderedImage() { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public RenderableImage getRenderableImage( final int xAxis, final int yAxis ) { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public void show( String title, final int xAxis, final int yAxis ) { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public void show( final String title ) { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public void prefetch( final Rectangle2D area ) { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public GridCoverage2D geophysics( final boolean geo ) { + return this; + } + + public GridCoverage2D view( final ViewType type ) { + return this; + } + + public synchronized Set getViewTypes() { + throw new UnsupportedOperationException("Not yet implemented"); + } + + public synchronized boolean dispose( final boolean force ) { + data = null; + return true; + } + + public String toString() { + return window.toString(); + } + + /** + * Getter for the data matrix that is backed by this {@link GridCoverage2D}. + * + * @return the data matrix. + */ + public double[][] getData() { + return data; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyRandomIter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyRandomIter.java index b25aecbc5..09e9c0a2a 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyRandomIter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyRandomIter.java @@ -1,86 +1,86 @@ -package org.jgrasstools.gears.io.grasslegacy; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.WritableRandomIter; - -/** - * This iterator is part of the large GRASS raster support. - * - *

                For better understanding of resaons for this hack, please see - * the {@link GrassLegacyGridCoverage2D} documentation. - * - * @author Andrea Antonello (www.hydrologis.com) - * @see GrassLegacyGridCoverage2D - */ -public class GrassLegacyRandomIter implements RandomIter, WritableRandomIter { - - private final double[][] data; - - public GrassLegacyRandomIter( double[][] data ) { - this.data = data; - } - - public void done() { - } - - public int[] getPixel( int x, int y, int[] iArray ) { - if (iArray == null) { - iArray = new int[0]; - } - iArray[0] = (int) Math.round(data[y][x]); - return iArray; - } - - public float[] getPixel( int x, int y, float[] fArray ) { - if (fArray == null) { - fArray = new float[0]; - } - fArray[0] = (float) data[y][x]; - return fArray; - } - - public double[] getPixel( int x, int y, double[] dArray ) { - if (dArray == null) { - dArray = new double[0]; - } - dArray[0] = data[y][x]; - return dArray; - } - - public int getSample( int x, int y, int b ) { - return (int) Math.round(data[y][x]); - } - - public double getSampleDouble( int x, int y, int b ) { - return data[y][x]; - } - - public float getSampleFloat( int x, int y, int b ) { - return (float) data[y][x]; - } - - public void setPixel( int x, int y, int[] iArray ) { - data[y][x] = iArray[0]; - } - - public void setPixel( int x, int y, float[] fArray ) { - data[y][x] = fArray[0]; - } - - public void setPixel( int x, int y, double[] dArray ) { - data[y][x] = dArray[0]; - } - - public void setSample( int x, int y, int b, int s ) { - data[y][x] = s; - } - - public void setSample( int x, int y, int b, float s ) { - data[y][x] = s; - } - - public void setSample( int x, int y, int b, double s ) { - data[y][x] = s; - } - +package org.jgrasstools.gears.io.grasslegacy; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.WritableRandomIter; + +/** + * This iterator is part of the large GRASS raster support. + * + *

                For better understanding of resaons for this hack, please see + * the {@link GrassLegacyGridCoverage2D} documentation. + * + * @author Andrea Antonello (www.hydrologis.com) + * @see GrassLegacyGridCoverage2D + */ +public class GrassLegacyRandomIter implements RandomIter, WritableRandomIter { + + private final double[][] data; + + public GrassLegacyRandomIter( double[][] data ) { + this.data = data; + } + + public void done() { + } + + public int[] getPixel( int x, int y, int[] iArray ) { + if (iArray == null) { + iArray = new int[0]; + } + iArray[0] = (int) Math.round(data[y][x]); + return iArray; + } + + public float[] getPixel( int x, int y, float[] fArray ) { + if (fArray == null) { + fArray = new float[0]; + } + fArray[0] = (float) data[y][x]; + return fArray; + } + + public double[] getPixel( int x, int y, double[] dArray ) { + if (dArray == null) { + dArray = new double[0]; + } + dArray[0] = data[y][x]; + return dArray; + } + + public int getSample( int x, int y, int b ) { + return (int) Math.round(data[y][x]); + } + + public double getSampleDouble( int x, int y, int b ) { + return data[y][x]; + } + + public float getSampleFloat( int x, int y, int b ) { + return (float) data[y][x]; + } + + public void setPixel( int x, int y, int[] iArray ) { + data[y][x] = iArray[0]; + } + + public void setPixel( int x, int y, float[] fArray ) { + data[y][x] = fArray[0]; + } + + public void setPixel( int x, int y, double[] dArray ) { + data[y][x] = dArray[0]; + } + + public void setSample( int x, int y, int b, int s ) { + data[y][x] = s; + } + + public void setSample( int x, int y, int b, float s ) { + data[y][x] = s; + } + + public void setSample( int x, int y, int b, double s ) { + data[y][x] = s; + } + } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyReader.java index 733f52d8f..4cc4abd09 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyReader.java @@ -1,186 +1,186 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.grasslegacy; - -import java.io.File; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.gce.grassraster.JGrassMapEnvironment; -import org.geotools.gce.grassraster.JGrassRegion; -import org.jgrasstools.gears.io.grasslegacy.io.GrassRasterReader; -import org.jgrasstools.gears.io.grasslegacy.io.MapReader; -import org.jgrasstools.gears.io.grasslegacy.utils.GrassLegacyUtilities; -import org.jgrasstools.gears.io.grasslegacy.utils.Window; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Coordinate; - -@Description("Legacy class for reading grass data the old way.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Grass, Raster, Reading") -@Label(JGTConstants.RASTERREADER) -@UI(JGTConstants.HIDE_UI_HINT) -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class GrassLegacyReader extends JGTModel { - @Description("The file to the map to be read (the cell file).") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("Flag that defines if the map should be read as a whole (false) or" - + " on the active region (true and default).") - @In - public boolean doActive = true; - - @Description("The region to read.") - @In - public Window inWindow = null; - - @Description("The read output map as limited coverage version.") - @Out - public GridCoverage2D outGC = null; - - @Description("The read output map data.") - @Out - public double[][] geodata = null; - - @Execute - public void readCoverage() throws Exception { - if (!concatOr(geodata == null, doReset)) { - return; - } - JGrassMapEnvironment mapEnvironment = new JGrassMapEnvironment(new File(file)); - JGrassRegion jGrassRegion = null; - if (inWindow == null) { - if (doActive) { - jGrassRegion = mapEnvironment.getActiveRegion(); - } else { - jGrassRegion = mapEnvironment.getFileRegion(); - } - inWindow = new Window(jGrassRegion.getWest(), jGrassRegion.getEast(), jGrassRegion.getSouth(), - jGrassRegion.getNorth(), jGrassRegion.getWEResolution(), jGrassRegion.getNSResolution()); - } - - GrassRasterReader reader = new GrassRasterReader(); - try { - reader.setReaderType(MapReader.RASTER_READER); - reader.setOutputDataObject(new double[0][0]); - reader.setDataWindow(inWindow); - - reader.open(mapEnvironment.getCELL().getAbsolutePath()); - if (reader.hasMoreData(pm)) { - geodata = (double[][]) reader.getNextData(); - } - } finally { - reader.close(); - } - - CoordinateReferenceSystem crs = mapEnvironment.getCoordinateReferenceSystem(); - outGC = new GrassLegacyGridCoverage2D(inWindow, geodata, crs); - } - - /** - * Get a single value in a position of the raster. - * - * @param coordinate the coordinate in which the value is read. - * @return the value read in the given coordinate. - */ - public double getValueAt( Coordinate coordinate ) { - if (geodata == null) { - throw new IllegalArgumentException("The data have first to be read!"); - } - int[] coordinateToNearestRowCol = GrassLegacyUtilities.coordinateToNearestRowCol(inWindow, coordinate); - if (coordinateToNearestRowCol != null) { - int row = coordinateToNearestRowCol[0]; - int col = coordinateToNearestRowCol[1]; - if (row > 0 && row < geodata.length) { - if (col > 0 && col < geodata[0].length) { - return geodata[row][col]; - } - } - } - return JGTConstants.doubleNovalue; - } - - /** - * Get a single value in a position of the raster. - * - *

                This opens and closes the raster every time it is called. Bad performance on many calls. - * - * @param window the grid on which to base on (if null, the active region is picked). - * @param coordinate the coordinate in which the value is read. - * @param filePath the path to the map. - * @param pm the progress monitor or null. - * @return the value read in the given coordinate. - * @throws Exception - */ - public static double getValueAt( Window window, Coordinate coordinate, String filePath, IJGTProgressMonitor pm ) - throws Exception { - JGrassMapEnvironment mapEnvironment = new JGrassMapEnvironment(new File(filePath)); - if (window == null) { - JGrassRegion jgr = mapEnvironment.getActiveRegion(); - window = new Window(jgr.getWest(), jgr.getEast(), jgr.getSouth(), jgr.getNorth(), jgr.getWEResolution(), - jgr.getNSResolution()); - } - Window rectangleAroundPoint = GrassLegacyUtilities.getRectangleAroundPoint(window, coordinate.x, coordinate.y); - - GrassLegacyReader reader = new GrassLegacyReader(); - reader.file = filePath; - reader.inWindow = rectangleAroundPoint; - if (pm != null) - reader.pm = pm; - reader.readCoverage(); - double[][] data = reader.geodata; - - if (data.length != 1 || data[0].length != 1) { - throw new IllegalAccessException("Wrong region extracted for picking a single point."); - } - - return data[0][0]; - } - - // public static void main( String[] args ) throws Exception { - // // 660205.062241|5116931.07884||932.92| - // PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); - // double value = getValueAt(null, new Coordinate(660205.062241, 5116931.07884), - // "/home/moovida/DTM_TRENTINO/grassdb/trentino/solo/cell/dtm_all_wgs", pm); - // System.out.println(value); - // - // } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.grasslegacy; + +import java.io.File; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.gce.grassraster.JGrassMapEnvironment; +import org.geotools.gce.grassraster.JGrassRegion; +import org.jgrasstools.gears.io.grasslegacy.io.GrassRasterReader; +import org.jgrasstools.gears.io.grasslegacy.io.MapReader; +import org.jgrasstools.gears.io.grasslegacy.utils.GrassLegacyUtilities; +import org.jgrasstools.gears.io.grasslegacy.utils.Window; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Coordinate; + +@Description("Legacy class for reading grass data the old way.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Grass, Raster, Reading") +@Label(JGTConstants.RASTERREADER) +@UI(JGTConstants.HIDE_UI_HINT) +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class GrassLegacyReader extends JGTModel { + @Description("The file to the map to be read (the cell file).") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("Flag that defines if the map should be read as a whole (false) or" + + " on the active region (true and default).") + @In + public boolean doActive = true; + + @Description("The region to read.") + @In + public Window inWindow = null; + + @Description("The read output map as limited coverage version.") + @Out + public GridCoverage2D outGC = null; + + @Description("The read output map data.") + @Out + public double[][] geodata = null; + + @Execute + public void readCoverage() throws Exception { + if (!concatOr(geodata == null, doReset)) { + return; + } + JGrassMapEnvironment mapEnvironment = new JGrassMapEnvironment(new File(file)); + JGrassRegion jGrassRegion = null; + if (inWindow == null) { + if (doActive) { + jGrassRegion = mapEnvironment.getActiveRegion(); + } else { + jGrassRegion = mapEnvironment.getFileRegion(); + } + inWindow = new Window(jGrassRegion.getWest(), jGrassRegion.getEast(), jGrassRegion.getSouth(), + jGrassRegion.getNorth(), jGrassRegion.getWEResolution(), jGrassRegion.getNSResolution()); + } + + GrassRasterReader reader = new GrassRasterReader(); + try { + reader.setReaderType(MapReader.RASTER_READER); + reader.setOutputDataObject(new double[0][0]); + reader.setDataWindow(inWindow); + + reader.open(mapEnvironment.getCELL().getAbsolutePath()); + if (reader.hasMoreData(pm)) { + geodata = (double[][]) reader.getNextData(); + } + } finally { + reader.close(); + } + + CoordinateReferenceSystem crs = mapEnvironment.getCoordinateReferenceSystem(); + outGC = new GrassLegacyGridCoverage2D(inWindow, geodata, crs); + } + + /** + * Get a single value in a position of the raster. + * + * @param coordinate the coordinate in which the value is read. + * @return the value read in the given coordinate. + */ + public double getValueAt( Coordinate coordinate ) { + if (geodata == null) { + throw new IllegalArgumentException("The data have first to be read!"); + } + int[] coordinateToNearestRowCol = GrassLegacyUtilities.coordinateToNearestRowCol(inWindow, coordinate); + if (coordinateToNearestRowCol != null) { + int row = coordinateToNearestRowCol[0]; + int col = coordinateToNearestRowCol[1]; + if (row > 0 && row < geodata.length) { + if (col > 0 && col < geodata[0].length) { + return geodata[row][col]; + } + } + } + return JGTConstants.doubleNovalue; + } + + /** + * Get a single value in a position of the raster. + * + *

                This opens and closes the raster every time it is called. Bad performance on many calls. + * + * @param window the grid on which to base on (if null, the active region is picked). + * @param coordinate the coordinate in which the value is read. + * @param filePath the path to the map. + * @param pm the progress monitor or null. + * @return the value read in the given coordinate. + * @throws Exception + */ + public static double getValueAt( Window window, Coordinate coordinate, String filePath, IJGTProgressMonitor pm ) + throws Exception { + JGrassMapEnvironment mapEnvironment = new JGrassMapEnvironment(new File(filePath)); + if (window == null) { + JGrassRegion jgr = mapEnvironment.getActiveRegion(); + window = new Window(jgr.getWest(), jgr.getEast(), jgr.getSouth(), jgr.getNorth(), jgr.getWEResolution(), + jgr.getNSResolution()); + } + Window rectangleAroundPoint = GrassLegacyUtilities.getRectangleAroundPoint(window, coordinate.x, coordinate.y); + + GrassLegacyReader reader = new GrassLegacyReader(); + reader.file = filePath; + reader.inWindow = rectangleAroundPoint; + if (pm != null) + reader.pm = pm; + reader.readCoverage(); + double[][] data = reader.geodata; + + if (data.length != 1 || data[0].length != 1) { + throw new IllegalAccessException("Wrong region extracted for picking a single point."); + } + + return data[0][0]; + } + + // public static void main( String[] args ) throws Exception { + // // 660205.062241|5116931.07884||932.92| + // PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); + // double value = getValueAt(null, new Coordinate(660205.062241, 5116931.07884), + // "/home/moovida/DTM_TRENTINO/grassdb/trentino/solo/cell/dtm_all_wgs", pm); + // System.out.println(value); + // + // } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyWritableRaster.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyWritableRaster.java index 44e11e4ed..8e29fcbd5 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyWritableRaster.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyWritableRaster.java @@ -1,87 +1,87 @@ -package org.jgrasstools.gears.io.grasslegacy; - -import java.awt.image.WritableRaster; - -/** - * This iterator is part of the large GRASS raster support. - * - *

                For better understanding of resaons for this hack, please see - * the {@link GrassLegacyGridCoverage2D} documentation. - * - * @author Andrea Antonello (www.hydrologis.com) - * @see GrassLegacyGridCoverage2D - */ -public class GrassLegacyWritableRaster extends WritableRaster { - - private final double[][] data; - - public GrassLegacyWritableRaster( double[][] data ) { - super(null, null); - this.data = data; - } - - public double[][] getData() { - return data; - } - - public int[] getPixel( int x, int y, int[] iArray ) { - if (iArray == null) { - iArray = new int[0]; - } - iArray[0] = (int) Math.round(data[y][x]); - return iArray; - } - - public float[] getPixel( int x, int y, float[] fArray ) { - if (fArray == null) { - fArray = new float[0]; - } - fArray[0] = (float) data[y][x]; - return fArray; - } - - public double[] getPixel( int x, int y, double[] dArray ) { - if (dArray == null) { - dArray = new double[0]; - } - dArray[0] = data[y][x]; - return dArray; - } - - public int getSample( int x, int y, int b ) { - return (int) Math.round(data[y][x]); - } - - public double getSampleDouble( int x, int y, int b ) { - return data[y][x]; - } - - public float getSampleFloat( int x, int y, int b ) { - return (float) data[y][x]; - } - - public void setPixel( int x, int y, int[] iArray ) { - data[y][x] = iArray[0]; - } - - public void setPixel( int x, int y, float[] fArray ) { - data[y][x] = fArray[0]; - } - - public void setPixel( int x, int y, double[] dArray ) { - data[y][x] = dArray[0]; - } - - public void setSample( int x, int y, int b, int s ) { - data[y][x] = s; - } - - public void setSample( int x, int y, int b, float s ) { - data[y][x] = s; - } - - public void setSample( int x, int y, int b, double s ) { - data[y][x] = s; - } - +package org.jgrasstools.gears.io.grasslegacy; + +import java.awt.image.WritableRaster; + +/** + * This iterator is part of the large GRASS raster support. + * + *

                For better understanding of resaons for this hack, please see + * the {@link GrassLegacyGridCoverage2D} documentation. + * + * @author Andrea Antonello (www.hydrologis.com) + * @see GrassLegacyGridCoverage2D + */ +public class GrassLegacyWritableRaster extends WritableRaster { + + private final double[][] data; + + public GrassLegacyWritableRaster( double[][] data ) { + super(null, null); + this.data = data; + } + + public double[][] getData() { + return data; + } + + public int[] getPixel( int x, int y, int[] iArray ) { + if (iArray == null) { + iArray = new int[0]; + } + iArray[0] = (int) Math.round(data[y][x]); + return iArray; + } + + public float[] getPixel( int x, int y, float[] fArray ) { + if (fArray == null) { + fArray = new float[0]; + } + fArray[0] = (float) data[y][x]; + return fArray; + } + + public double[] getPixel( int x, int y, double[] dArray ) { + if (dArray == null) { + dArray = new double[0]; + } + dArray[0] = data[y][x]; + return dArray; + } + + public int getSample( int x, int y, int b ) { + return (int) Math.round(data[y][x]); + } + + public double getSampleDouble( int x, int y, int b ) { + return data[y][x]; + } + + public float getSampleFloat( int x, int y, int b ) { + return (float) data[y][x]; + } + + public void setPixel( int x, int y, int[] iArray ) { + data[y][x] = iArray[0]; + } + + public void setPixel( int x, int y, float[] fArray ) { + data[y][x] = fArray[0]; + } + + public void setPixel( int x, int y, double[] dArray ) { + data[y][x] = dArray[0]; + } + + public void setSample( int x, int y, int b, int s ) { + data[y][x] = s; + } + + public void setSample( int x, int y, int b, float s ) { + data[y][x] = s; + } + + public void setSample( int x, int y, int b, double s ) { + data[y][x] = s; + } + } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyWriter.java index 4dc2c1d32..e321332ab 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/GrassLegacyWriter.java @@ -1,87 +1,87 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.grasslegacy; - -import java.io.File; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.gce.grassraster.JGrassMapEnvironment; -import org.jgrasstools.gears.io.grasslegacy.io.GrassRasterWriter; -import org.jgrasstools.gears.io.grasslegacy.utils.Window; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Legacy class for writing grass rasters.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Grass, Raster, Writing") -@Label(JGTConstants.RASTERWRITER) -@UI(JGTConstants.HIDE_UI_HINT) -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class GrassLegacyWriter extends JGTModel { - @Description("The map that needs to be written.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public double[][] geodata = null; - - @Description("The region for the map to be written.") - @In - public Window inWindow = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The file to the map to be written (the cell file).") - @In - public String file = null; - - private boolean hasWritten = false; - - @Execute - public void writeRaster() throws Exception { - if (!concatOr(!hasWritten, doReset)) { - return; - } - JGrassMapEnvironment mapEnvironment = new JGrassMapEnvironment(new File(file)); - - GrassRasterWriter writer = new GrassRasterWriter(); - try { - writer.setOutputDataObject(new double[0][0]); - writer.setDataWindow(inWindow); - writer.open(mapEnvironment.getCELL().getAbsolutePath()); - writer.write(geodata); - } finally { - writer.close(); - } - - hasWritten = true; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.grasslegacy; + +import java.io.File; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.gce.grassraster.JGrassMapEnvironment; +import org.jgrasstools.gears.io.grasslegacy.io.GrassRasterWriter; +import org.jgrasstools.gears.io.grasslegacy.utils.Window; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Legacy class for writing grass rasters.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Grass, Raster, Writing") +@Label(JGTConstants.RASTERWRITER) +@UI(JGTConstants.HIDE_UI_HINT) +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class GrassLegacyWriter extends JGTModel { + @Description("The map that needs to be written.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public double[][] geodata = null; + + @Description("The region for the map to be written.") + @In + public Window inWindow = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The file to the map to be written (the cell file).") + @In + public String file = null; + + private boolean hasWritten = false; + + @Execute + public void writeRaster() throws Exception { + if (!concatOr(!hasWritten, doReset)) { + return; + } + JGrassMapEnvironment mapEnvironment = new JGrassMapEnvironment(new File(file)); + + GrassRasterWriter writer = new GrassRasterWriter(); + try { + writer.setOutputDataObject(new double[0][0]); + writer.setDataWindow(inWindow); + writer.open(mapEnvironment.getCELL().getAbsolutePath()); + writer.write(geodata); + } finally { + writer.close(); + } + + hasWritten = true; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/map/color/PredefinedColorRules.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/map/color/PredefinedColorRules.java index 74fd89330..574e519cd 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/map/color/PredefinedColorRules.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/map/color/PredefinedColorRules.java @@ -1,94 +1,94 @@ -package org.jgrasstools.gears.io.grasslegacy.map.color; - -import java.util.HashMap; - -public class PredefinedColorRules { - public static HashMap colorRules = new HashMap(); - public static int[][] rainbow; - public static int[][] flow; - public static int[][] aspect; - public static int[][] elevation; - public static int[][] greyscale; - public static int[][] btyc; - - static { - rainbow = new int[][]{{255, 255, 0}, /* yellow */ - {0, 255, 0}, /* green */ - {0, 255, 255}, /* cyan */ - {0, 0, 255}, /* blue */ - {255, 0, 255}, /* magenta */ - {255, 0, 0} /* red */ - }; - colorRules.put("rainbow", rainbow); - - flow = new int[][]{{255, 255, 0}, {0, 255, 0}, {0, 255, 255}, {255, 0, 255}, {0, 0, 255}, - {160, 32, 240}, {255, 165, 0}, {30, 144, 255}, {255, 0, 0}}; - colorRules.put("flowdirections", flow); - - aspect = new int[][]{{0, 0, 0}, {255, 255, 255}, {0, 0, 0}}; - colorRules.put("aspect", aspect); - - elevation = new int[][]{{0, 191, 191}, {0, 255, 0}, {255, 255, 0}, {255, 127, 0}, - {191, 127, 63}, {20, 21, 20}}; - colorRules.put("elevation", elevation); - - greyscale = new int[][]{{0, 0, 0}, {255, 255, 255}}; - colorRules.put("greyscale", greyscale); - - btyc = new int[][]{{0, 0, 255}, {255, 255, 0}, {0, 255, 0}}; - colorRules.put("blue through yellow to green colors", btyc); - - - // corine - // 111 230:000:077 - // 112 255:000:000 - // 121 204:077:242 - // 122 204:000:000 - // 123 230:204:204 - // 124 230:204:230 - // 131 166:000:204 - // 132 166:077:000 - // 133 255:077:255 - // 141 255:166:255 - // 142 255:230:255 - // 211 255:255:168 - // 212 255:255:000 - // 213 230:230:000 - // 221 230:128:000 - // 222 242:166:077 - // 223 230:166:000 - // 231 230:230:077 - // 241 255:230:166 - // 242 255:230:077 - // 243 230:204:077 - // 244 242:204:166 - // 311 128:255:000 - // 312 000:166:000 - // 313 077:255:000 - // 321 204:242:077 - // 322 166:255:128 - // 323 166:230:077 - // 324 166:242:000 - // 331 230:230:230 - // 332 204:204:204 - // 333 204:255:204 - // 334 000:000:000 - // 335 166:230:204 - // 411 166:166:255 - // 412 077:077:255 - // 421 204:204:255 - // 422 230:230:255 - // 423 166:166:230 - // 511 000:204:242 - // 512 128:242:230 - // 521 000:255:166 - // 522 166:255:230 - // 523 230:242:255 - // 995 230:242:255 - - - - - } - -} +package org.jgrasstools.gears.io.grasslegacy.map.color; + +import java.util.HashMap; + +public class PredefinedColorRules { + public static HashMap colorRules = new HashMap(); + public static int[][] rainbow; + public static int[][] flow; + public static int[][] aspect; + public static int[][] elevation; + public static int[][] greyscale; + public static int[][] btyc; + + static { + rainbow = new int[][]{{255, 255, 0}, /* yellow */ + {0, 255, 0}, /* green */ + {0, 255, 255}, /* cyan */ + {0, 0, 255}, /* blue */ + {255, 0, 255}, /* magenta */ + {255, 0, 0} /* red */ + }; + colorRules.put("rainbow", rainbow); + + flow = new int[][]{{255, 255, 0}, {0, 255, 0}, {0, 255, 255}, {255, 0, 255}, {0, 0, 255}, + {160, 32, 240}, {255, 165, 0}, {30, 144, 255}, {255, 0, 0}}; + colorRules.put("flowdirections", flow); + + aspect = new int[][]{{0, 0, 0}, {255, 255, 255}, {0, 0, 0}}; + colorRules.put("aspect", aspect); + + elevation = new int[][]{{0, 191, 191}, {0, 255, 0}, {255, 255, 0}, {255, 127, 0}, + {191, 127, 63}, {20, 21, 20}}; + colorRules.put("elevation", elevation); + + greyscale = new int[][]{{0, 0, 0}, {255, 255, 255}}; + colorRules.put("greyscale", greyscale); + + btyc = new int[][]{{0, 0, 255}, {255, 255, 0}, {0, 255, 0}}; + colorRules.put("blue through yellow to green colors", btyc); + + + // corine + // 111 230:000:077 + // 112 255:000:000 + // 121 204:077:242 + // 122 204:000:000 + // 123 230:204:204 + // 124 230:204:230 + // 131 166:000:204 + // 132 166:077:000 + // 133 255:077:255 + // 141 255:166:255 + // 142 255:230:255 + // 211 255:255:168 + // 212 255:255:000 + // 213 230:230:000 + // 221 230:128:000 + // 222 242:166:077 + // 223 230:166:000 + // 231 230:230:077 + // 241 255:230:166 + // 242 255:230:077 + // 243 230:204:077 + // 244 242:204:166 + // 311 128:255:000 + // 312 000:166:000 + // 313 077:255:000 + // 321 204:242:077 + // 322 166:255:128 + // 323 166:230:077 + // 324 166:242:000 + // 331 230:230:230 + // 332 204:204:204 + // 333 204:255:204 + // 334 000:000:000 + // 335 166:230:204 + // 411 166:166:255 + // 412 077:077:255 + // 421 204:204:255 + // 422 230:230:255 + // 423 166:166:230 + // 511 000:204:242 + // 512 128:242:230 + // 521 000:255:166 + // 522 166:255:230 + // 523 230:242:255 + // 995 230:242:255 + + + + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/modules/GrassMosaicLegacy.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/modules/GrassMosaicLegacy.java index 989daa00c..de6ea165e 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/modules/GrassMosaicLegacy.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/grasslegacy/modules/GrassMosaicLegacy.java @@ -1,217 +1,217 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.grasslegacy.modules; - -import java.awt.geom.RectangularShape; -import java.io.File; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoordinates2D; -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridEnvelope2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.geometry.DirectPosition2D; -import org.geotools.geometry.Envelope2D; -import org.geotools.geometry.GeneralEnvelope; -import org.geotools.geometry.jts.ReferencedEnvelope; -import org.jgrasstools.gears.io.grasslegacy.GrassLegacyWriter; -import org.jgrasstools.gears.io.grasslegacy.utils.Window; -import org.jgrasstools.gears.io.rasterreader.RasterReader; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.geometry.DirectPosition; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -@Description("Module for GRASS raster patching.") -@Documentation("GrassMosaicLegacy.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Mosaic, Raster") -@Name("grassmosaic") -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class GrassMosaicLegacy extends JGTModel { - - @Description("The list of files that have to be patched (used if inGeodata is null).") - @In - public List inFiles; - - @Description("The output file resolution in meters.") - @In - public Double pRes = null; - - @Description("The optional requested boundary coordinates as array of [n, s, w, e].") - @In - public double[] pBounds = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The GRASS file path to which to write to.") - @UI(JGTConstants.FILEOUT_UI_HINT) - @In - public String outGrassFile = null; - - private Envelope2D requestedEnvelope; - - @Execute - public void process() throws Exception { - - if (inFiles == null) { - throw new ModelsIllegalargumentException("No input data have been provided.", this); - } - - if (pRes == null) { - throw new ModelsIllegalargumentException("The definition of the output resolution is mandatory.", this); - } - - if (inFiles != null && inFiles.size() < 2) { - throw new ModelsIllegalargumentException("The patching module needs at least two maps to be patched.", this); - } - - if (pBounds != null) { - DirectPosition2D first = new DirectPosition2D(pBounds[2], pBounds[1]); - DirectPosition2D second = new DirectPosition2D(pBounds[3], pBounds[0]); - requestedEnvelope = new Envelope2D(first, second); - } - - double n = Double.MIN_VALUE; - double s = Double.MAX_VALUE; - double e = Double.MIN_VALUE; - double w = Double.MAX_VALUE; - - CoordinateReferenceSystem crs = null; - pm.beginTask("Calculating final bounds...", inFiles.size()); - for( File coverageFile : inFiles ) { - RasterReader reader = new RasterReader(); - reader.file = coverageFile.getAbsolutePath(); - reader.doEnvelope = true; - reader.process(); - GeneralEnvelope gEnv = reader.originalEnvelope; - ReferencedEnvelope worldEnv = new ReferencedEnvelope(gEnv); - if (crs == null) { - crs = gEnv.getCoordinateReferenceSystem(); - } - if (requestedEnvelope != null) { - if (!requestedEnvelope.intersects(gEnv.toRectangle2D())) { - // if a constraint envelope was supplied, only handle what is inside - pm.worked(1); - continue; - } - } - - double minWX = worldEnv.getMinX(); - double minWY = worldEnv.getMinY(); - double maxWX = worldEnv.getMaxX(); - double maxWY = worldEnv.getMaxY(); - if (minWX < w) - w = minWX; - if (minWY < s) - s = minWY; - if (maxWX > e) - e = maxWX; - if (maxWY > n) - n = maxWY; - pm.worked(1); - } - pm.done(); - - Window writeWindow = new Window(w, e, s, n, pRes, pRes); - - GridGeometry2D writeGridGeometry = CoverageUtilities.gridGeometryFromRegionValues(n, s, e, w, writeWindow.getCols(), - writeWindow.getRows(), crs); - - int rows = writeWindow.getRows(); - int cols = writeWindow.getCols(); - - long megabytes = (rows * (long) cols) * 8 / 1024l / 1024l; - - pm.message("Will allocate " + (rows * (long) cols) + " cells, equal to about " + megabytes); - - double[][] outputData = new double[rows][cols]; - for( int i = 0; i < outputData.length; i++ ) { - for( int j = 0; j < outputData[0].length; j++ ) { - outputData[i][j] = JGTConstants.doubleNovalue; - } - } - pm.message("Memory allocated."); - - int index = 1; - for( File coverageFile : inFiles ) { - GridCoverage2D coverage = RasterReader.readRaster(coverageFile.getAbsolutePath()); - Envelope2D env = coverage.getEnvelope2D(); - GridGeometry2D gridGeometry = coverage.getGridGeometry(); - if (requestedEnvelope != null) { - if (!((RectangularShape) requestedEnvelope).intersects(env)) { - // if a constraint envelope was supplied, only handle what is inside - continue; - } - } - - double[] value = new double[1]; - GridEnvelope2D gridRange2D = gridGeometry.getGridRange2D(); - int grX = gridRange2D.x; - int grY = gridRange2D.y; - int grW = gridRange2D.width; - int grH = gridRange2D.height; - int grXEnd = grX + grW; - int grYEnd = grY + grH; - pm.beginTask("Patch map " + index++, grW); //$NON-NLS-1$ - for( int i = grX; i < grXEnd; i++ ) { - for( int j = grY; j < grYEnd; j++ ) { - GridCoordinates2D gCoord = new GridCoordinates2D(i, j); - coverage.evaluate(gCoord, value); - DirectPosition directPosition = gridGeometry.gridToWorld(gCoord); - GridCoordinates2D gridCoord = writeGridGeometry.worldToGrid(directPosition); - - if (!Double.isNaN(value[0])) { - if (Double.isNaN(outputData[gridCoord.y][gridCoord.x])) { - outputData[gridCoord.y][gridCoord.x] = value[0]; - } - } - } - pm.worked(1); - } - pm.done(); - } - - pm.message("Writing mosaic map."); - GrassLegacyWriter writer = new GrassLegacyWriter(); - writer.geodata = outputData; - writer.file = outGrassFile; - writer.inWindow = writeWindow; - writer.pm = pm; - writer.writeRaster(); - - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.grasslegacy.modules; + +import java.awt.geom.RectangularShape; +import java.io.File; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoordinates2D; +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridEnvelope2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.geometry.DirectPosition2D; +import org.geotools.geometry.Envelope2D; +import org.geotools.geometry.GeneralEnvelope; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.jgrasstools.gears.io.grasslegacy.GrassLegacyWriter; +import org.jgrasstools.gears.io.grasslegacy.utils.Window; +import org.jgrasstools.gears.io.rasterreader.RasterReader; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.geometry.DirectPosition; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +@Description("Module for GRASS raster patching.") +@Documentation("GrassMosaicLegacy.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Mosaic, Raster") +@Name("grassmosaic") +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class GrassMosaicLegacy extends JGTModel { + + @Description("The list of files that have to be patched (used if inGeodata is null).") + @In + public List inFiles; + + @Description("The output file resolution in meters.") + @In + public Double pRes = null; + + @Description("The optional requested boundary coordinates as array of [n, s, w, e].") + @In + public double[] pBounds = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The GRASS file path to which to write to.") + @UI(JGTConstants.FILEOUT_UI_HINT) + @In + public String outGrassFile = null; + + private Envelope2D requestedEnvelope; + + @Execute + public void process() throws Exception { + + if (inFiles == null) { + throw new ModelsIllegalargumentException("No input data have been provided.", this); + } + + if (pRes == null) { + throw new ModelsIllegalargumentException("The definition of the output resolution is mandatory.", this); + } + + if (inFiles != null && inFiles.size() < 2) { + throw new ModelsIllegalargumentException("The patching module needs at least two maps to be patched.", this); + } + + if (pBounds != null) { + DirectPosition2D first = new DirectPosition2D(pBounds[2], pBounds[1]); + DirectPosition2D second = new DirectPosition2D(pBounds[3], pBounds[0]); + requestedEnvelope = new Envelope2D(first, second); + } + + double n = Double.MIN_VALUE; + double s = Double.MAX_VALUE; + double e = Double.MIN_VALUE; + double w = Double.MAX_VALUE; + + CoordinateReferenceSystem crs = null; + pm.beginTask("Calculating final bounds...", inFiles.size()); + for( File coverageFile : inFiles ) { + RasterReader reader = new RasterReader(); + reader.file = coverageFile.getAbsolutePath(); + reader.doEnvelope = true; + reader.process(); + GeneralEnvelope gEnv = reader.originalEnvelope; + ReferencedEnvelope worldEnv = new ReferencedEnvelope(gEnv); + if (crs == null) { + crs = gEnv.getCoordinateReferenceSystem(); + } + if (requestedEnvelope != null) { + if (!requestedEnvelope.intersects(gEnv.toRectangle2D())) { + // if a constraint envelope was supplied, only handle what is inside + pm.worked(1); + continue; + } + } + + double minWX = worldEnv.getMinX(); + double minWY = worldEnv.getMinY(); + double maxWX = worldEnv.getMaxX(); + double maxWY = worldEnv.getMaxY(); + if (minWX < w) + w = minWX; + if (minWY < s) + s = minWY; + if (maxWX > e) + e = maxWX; + if (maxWY > n) + n = maxWY; + pm.worked(1); + } + pm.done(); + + Window writeWindow = new Window(w, e, s, n, pRes, pRes); + + GridGeometry2D writeGridGeometry = CoverageUtilities.gridGeometryFromRegionValues(n, s, e, w, writeWindow.getCols(), + writeWindow.getRows(), crs); + + int rows = writeWindow.getRows(); + int cols = writeWindow.getCols(); + + long megabytes = (rows * (long) cols) * 8 / 1024l / 1024l; + + pm.message("Will allocate " + (rows * (long) cols) + " cells, equal to about " + megabytes); + + double[][] outputData = new double[rows][cols]; + for( int i = 0; i < outputData.length; i++ ) { + for( int j = 0; j < outputData[0].length; j++ ) { + outputData[i][j] = JGTConstants.doubleNovalue; + } + } + pm.message("Memory allocated."); + + int index = 1; + for( File coverageFile : inFiles ) { + GridCoverage2D coverage = RasterReader.readRaster(coverageFile.getAbsolutePath()); + Envelope2D env = coverage.getEnvelope2D(); + GridGeometry2D gridGeometry = coverage.getGridGeometry(); + if (requestedEnvelope != null) { + if (!((RectangularShape) requestedEnvelope).intersects(env)) { + // if a constraint envelope was supplied, only handle what is inside + continue; + } + } + + double[] value = new double[1]; + GridEnvelope2D gridRange2D = gridGeometry.getGridRange2D(); + int grX = gridRange2D.x; + int grY = gridRange2D.y; + int grW = gridRange2D.width; + int grH = gridRange2D.height; + int grXEnd = grX + grW; + int grYEnd = grY + grH; + pm.beginTask("Patch map " + index++, grW); //$NON-NLS-1$ + for( int i = grX; i < grXEnd; i++ ) { + for( int j = grY; j < grYEnd; j++ ) { + GridCoordinates2D gCoord = new GridCoordinates2D(i, j); + coverage.evaluate(gCoord, value); + DirectPosition directPosition = gridGeometry.gridToWorld(gCoord); + GridCoordinates2D gridCoord = writeGridGeometry.worldToGrid(directPosition); + + if (!Double.isNaN(value[0])) { + if (Double.isNaN(outputData[gridCoord.y][gridCoord.x])) { + outputData[gridCoord.y][gridCoord.x] = value[0]; + } + } + } + pm.worked(1); + } + pm.done(); + } + + pm.message("Writing mosaic map."); + GrassLegacyWriter writer = new GrassLegacyWriter(); + writer.geodata = outputData; + writer.file = outGrassFile; + writer.inWindow = writeWindow; + writer.pm = pm; + writer.writeRaster(); + + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/gridgeometryreader/GridGeometryReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/gridgeometryreader/GridGeometryReader.java index ee375735a..668f9fcd5 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/gridgeometryreader/GridGeometryReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/gridgeometryreader/GridGeometryReader.java @@ -1,97 +1,97 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.gridgeometryreader; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.referencing.CRS; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.modules.JGTProcessingRegion; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -@Description("GridGeometry reader module.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, GridGeometry, Raster, Reading") -@Label(JGTConstants.GRIDGEOMETRYREADER) -@Status(Status.CERTIFIED) -@Name("gridgeomreader") -@License("General Public License Version 3 (GPLv3)") -public class GridGeometryReader extends JGTModel { - @Description("The boundary north coordinate.") - @UI(JGTConstants.PROCESS_NORTH_UI_HINT) - @In - public Double pNorth = null; - - @Description("The boundary south coordinate.") - @UI(JGTConstants.PROCESS_SOUTH_UI_HINT) - @In - public Double pSouth = null; - - @Description("The boundary west coordinate.") - @UI(JGTConstants.PROCESS_WEST_UI_HINT) - @In - public Double pWest = null; - - @Description("The boundary east coordinate.") - @UI(JGTConstants.PROCESS_EAST_UI_HINT) - @In - public Double pEast = null; - - @Description("The resolution in x.") - @UI(JGTConstants.PROCESS_XRES_UI_HINT) - @In - public Double pXres = null; - - @Description("The resolution in y.") - @UI(JGTConstants.PROCESS_YRES_UI_HINT) - @In - public Double pYres = null; - - @Description("The code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328).") - @UI(JGTConstants.CRS_UI_HINT) - @In - public String pCode; - - @Description("The output GridGeometry.") - @Out - public GridGeometry2D outGridgeom = null; - - @Execute - public void process() throws Exception { - checkNull(pNorth, pSouth, pWest, pEast, pXres, pYres, pCode); - - JGTProcessingRegion region = new JGTProcessingRegion(pWest, pEast, pSouth, pNorth, pXres, pYres); - CoordinateReferenceSystem crs = CRS.decode(pCode); - outGridgeom = CoverageUtilities.gridGeometryFromRegionValues(pNorth, pSouth, pEast, pWest, region.getCols(), - region.getRows(), crs); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.gridgeometryreader; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.referencing.CRS; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.modules.JGTProcessingRegion; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +@Description("GridGeometry reader module.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, GridGeometry, Raster, Reading") +@Label(JGTConstants.GRIDGEOMETRYREADER) +@Status(Status.CERTIFIED) +@Name("gridgeomreader") +@License("General Public License Version 3 (GPLv3)") +public class GridGeometryReader extends JGTModel { + @Description("The boundary north coordinate.") + @UI(JGTConstants.PROCESS_NORTH_UI_HINT) + @In + public Double pNorth = null; + + @Description("The boundary south coordinate.") + @UI(JGTConstants.PROCESS_SOUTH_UI_HINT) + @In + public Double pSouth = null; + + @Description("The boundary west coordinate.") + @UI(JGTConstants.PROCESS_WEST_UI_HINT) + @In + public Double pWest = null; + + @Description("The boundary east coordinate.") + @UI(JGTConstants.PROCESS_EAST_UI_HINT) + @In + public Double pEast = null; + + @Description("The resolution in x.") + @UI(JGTConstants.PROCESS_XRES_UI_HINT) + @In + public Double pXres = null; + + @Description("The resolution in y.") + @UI(JGTConstants.PROCESS_YRES_UI_HINT) + @In + public Double pYres = null; + + @Description("The code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328).") + @UI(JGTConstants.CRS_UI_HINT) + @In + public String pCode; + + @Description("The output GridGeometry.") + @Out + public GridGeometry2D outGridgeom = null; + + @Execute + public void process() throws Exception { + checkNull(pNorth, pSouth, pWest, pEast, pXres, pYres, pCode); + + JGTProcessingRegion region = new JGTProcessingRegion(pWest, pEast, pSouth, pNorth, pXres, pYres); + CoordinateReferenceSystem crs = CRS.decode(pCode); + outGridgeom = CoverageUtilities.gridGeometryFromRegionValues(pNorth, pSouth, pEast, pWest, region.getCols(), + region.getRows(), crs); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/properties/PropertiesFeatureReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/properties/PropertiesFeatureReader.java index f5d64e50e..b0a521687 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/properties/PropertiesFeatureReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/properties/PropertiesFeatureReader.java @@ -1,124 +1,124 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.properties; - -import java.io.File; -import java.io.IOException; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.FeatureReader; -import org.geotools.data.Query; -import org.geotools.data.Transaction; -import org.geotools.data.property.PropertyDataStore; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.gears.utils.files.FileUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -@Description("Utility class for reading properties files to geotools featurecollections.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Properties, Feature, Vector, Reading") -@Label(JGTConstants.FEATUREREADER) -@Status(Status.CERTIFIED) -@UI(JGTConstants.HIDE_UI_HINT) -@License("General Public License Version 3 (GPLv3)") -public class PropertiesFeatureReader extends JGTModel { - @Description("The properties file.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The read feature collection.") - @Out - public SimpleFeatureCollection geodata = null; - - @Execute - public void readFeatureCollection() throws IOException { - if (!concatOr(geodata == null, doReset)) { - return; - } - - /* - * Works on types: - * - * _=id:Integer,name:String,geom:Point - * fid1=1|jody garnett|POINT(0 0) - * fid2=2|brent|POINT(10 10) - * fid3=3|dave|POINT(20 20) - * fid4=4|justin deolivera|POINT(30 30) - */ - - FeatureReader reader = null; - try { - File propertiesFile = new File(file); - pm.beginTask("Reading features from properties file: " + propertiesFile.getName(), -1); - PropertyDataStore store = new PropertyDataStore(propertiesFile.getParentFile()); - - String name = FileUtilities.getNameWithoutExtention(propertiesFile); - - geodata = FeatureCollections.newCollection(); - Query query = new Query(name); - reader = store.getFeatureReader(query, Transaction.AUTO_COMMIT); - while( reader.hasNext() ) { - SimpleFeature feature = reader.next(); - geodata.add(feature); - } - } finally { - pm.done(); - if (reader != null) - reader.close(); - } - } - - /** - * Fast read access mode. - * - * @param path the properties file path. - * @return the read {@link FeatureCollection}. - * @throws IOException - */ - public static SimpleFeatureCollection readPropertiesfile( String path ) throws IOException { - - PropertiesFeatureReader reader = new PropertiesFeatureReader(); - reader.file = path; - reader.readFeatureCollection(); - - return reader.geodata; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.properties; + +import java.io.File; +import java.io.IOException; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.FeatureReader; +import org.geotools.data.Query; +import org.geotools.data.Transaction; +import org.geotools.data.property.PropertyDataStore; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.gears.utils.files.FileUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +@Description("Utility class for reading properties files to geotools featurecollections.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Properties, Feature, Vector, Reading") +@Label(JGTConstants.FEATUREREADER) +@Status(Status.CERTIFIED) +@UI(JGTConstants.HIDE_UI_HINT) +@License("General Public License Version 3 (GPLv3)") +public class PropertiesFeatureReader extends JGTModel { + @Description("The properties file.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The read feature collection.") + @Out + public SimpleFeatureCollection geodata = null; + + @Execute + public void readFeatureCollection() throws IOException { + if (!concatOr(geodata == null, doReset)) { + return; + } + + /* + * Works on types: + * + * _=id:Integer,name:String,geom:Point + * fid1=1|jody garnett|POINT(0 0) + * fid2=2|brent|POINT(10 10) + * fid3=3|dave|POINT(20 20) + * fid4=4|justin deolivera|POINT(30 30) + */ + + FeatureReader reader = null; + try { + File propertiesFile = new File(file); + pm.beginTask("Reading features from properties file: " + propertiesFile.getName(), -1); + PropertyDataStore store = new PropertyDataStore(propertiesFile.getParentFile()); + + String name = FileUtilities.getNameWithoutExtention(propertiesFile); + + geodata = FeatureCollections.newCollection(); + Query query = new Query(name); + reader = store.getFeatureReader(query, Transaction.AUTO_COMMIT); + while( reader.hasNext() ) { + SimpleFeature feature = reader.next(); + geodata.add(feature); + } + } finally { + pm.done(); + if (reader != null) + reader.close(); + } + } + + /** + * Fast read access mode. + * + * @param path the properties file path. + * @return the read {@link FeatureCollection}. + * @throws IOException + */ + public static SimpleFeatureCollection readPropertiesfile( String path ) throws IOException { + + PropertiesFeatureReader reader = new PropertiesFeatureReader(); + reader.file = path; + reader.readFeatureCollection(); + + return reader.geodata; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/rasterreader/RasterReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/rasterreader/RasterReader.java index 1add1dc65..7a9ad8634 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/rasterreader/RasterReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/rasterreader/RasterReader.java @@ -1,481 +1,481 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.rasterreader; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.AIG; -import static org.jgrasstools.gears.libs.modules.JGTConstants.ESRIGRID; -import static org.jgrasstools.gears.libs.modules.JGTConstants.GEOTIF; -import static org.jgrasstools.gears.libs.modules.JGTConstants.*; -import static org.jgrasstools.gears.libs.modules.JGTConstants.GRASS; -import static org.jgrasstools.gears.libs.modules.JGTConstants.JPEG; -import static org.jgrasstools.gears.libs.modules.JGTConstants.JPG; -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.COLS; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.EAST; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.NORTH; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.ROWS; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.SOUTH; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.WEST; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.XRES; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.YRES; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.buildCoverage; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.createDoubleWritableRaster; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.createGridGeometryGeneralParameter; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.getRegionParamsFromGridCoverage; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.gridGeometryFromRegionParams; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.makeRegionParamsMap; - -import java.awt.RenderingHints; -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.util.HashMap; - -import javax.media.jai.ImageLayout; -import javax.media.jai.JAI; -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.coverage.grid.ViewType; -import org.geotools.coverage.grid.io.AbstractGridCoverage2DReader; -import org.geotools.coverage.processing.Operations; -import org.geotools.coverageio.gdal.BaseGDALGridCoverage2DReader; -import org.geotools.coverageio.gdal.aig.AIGReader; -import org.geotools.factory.Hints; -import org.geotools.gce.arcgrid.ArcGridReader; -import org.geotools.gce.geotiff.GeoTiffReader; -import org.geotools.gce.grassraster.GrassCoverageReader; -import org.geotools.gce.grassraster.JGrassMapEnvironment; -import org.geotools.gce.grassraster.JGrassRegion; -import org.geotools.gce.grassraster.format.GrassCoverageFormat; -import org.geotools.gce.grassraster.format.GrassCoverageFormatFactory; -import org.geotools.gce.image.WorldImageReader; -import org.geotools.geometry.GeneralEnvelope; -import org.geotools.geometry.jts.ReferencedEnvelope; -import org.jgrasstools.gears.io.grasslegacy.GrassLegacyReader; -import org.jgrasstools.gears.io.grasslegacy.utils.GrassLegacyUtilities; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.files.FileUtilities; -import org.jgrasstools.gears.utils.math.NumericsUtilities; -import org.opengis.parameter.GeneralParameterValue; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Envelope; - -@Description("Raster reader module.") -@Documentation("RasterReader.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Coverage, Raster, Reading") -@Label(JGTConstants.RASTERREADER) -@Status(Status.CERTIFIED) -@Name("rasterreader") -@License("General Public License Version 3 (GPLv3)") -public class RasterReader extends JGTModel { - @UI(JGTConstants.FILEIN_UI_HINT) - @Description("The raster file to read with extension (supported are: asc, tiff, grass).") - @In - public String file = null; - - @Description("The file novalue.") - @In - public Double fileNovalue = -9999.0; - - @Description("The novalue wanted in the raster.") - @In - public Double geodataNovalue = doubleNovalue; - - @Description("The optional requested boundary north coordinate.") - @UI(JGTConstants.PROCESS_NORTH_UI_HINT) - @In - public Double pNorth = null; - - @Description("The optional requested boundary south coordinate.") - @UI(JGTConstants.PROCESS_SOUTH_UI_HINT) - @In - public Double pSouth = null; - - @Description("The optional requested boundary west coordinate.") - @UI(JGTConstants.PROCESS_WEST_UI_HINT) - @In - public Double pWest = null; - - @Description("The optional requested boundary east coordinate.") - @UI(JGTConstants.PROCESS_EAST_UI_HINT) - @In - public Double pEast = null; - - @Description("The optional requested resolution in x.") - @UI(JGTConstants.PROCESS_XRES_UI_HINT) - @In - public Double pXres = null; - - @Description("The optional requested resolution in y.") - @UI(JGTConstants.PROCESS_YRES_UI_HINT) - @In - public Double pYres = null; - - @Description("The optional requested numer of rows.") - @UI(JGTConstants.PROCESS_ROWS_UI_HINT) - @In - public Integer pRows = null; - - @Description("The optional requested numer of cols.") - @UI(JGTConstants.PROCESS_COLS_UI_HINT) - @In - public Integer pCols = null; - - @Description("Optional flag to force a legacy GRASS driver usage.") - @In - public Boolean doLegacyGrass = false; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The read output raster map.") - @Out - public GridCoverage2D outRaster = null; - - /** - * Flag to read only envelope (if true, the output geodata is null). - */ - public boolean doEnvelope = false; - - /** - * The original envelope of the coverage. - */ - public GeneralEnvelope originalEnvelope; - - private GeneralParameterValue[] generalParameter = null; - - private double[] pBounds; - - private double[] pRes; - private int[] pRowcol; - - @Execute - public void process() throws Exception { - if (!concatOr(outRaster == null, doReset)) { - return; - } - - if (hasBoundsRequest() && (!hasResolutionRequest() && !hasRowColsRequest())) { - throw new RuntimeException("If bounds are requested, also a resolution or number of rows/cols has to be supplied."); - } - if (hasBoundsRequest()) { - pBounds = new double[]{pNorth, pSouth, pWest, pEast}; - } - if (hasResolutionRequest()) { - pRes = new double[]{pXres, pYres}; - } - if (hasRowColsRequest()) { - pRowcol = new int[]{pRows, pCols}; - } - - String pType = null; - // try to guess from the extension - if (file.toLowerCase().endsWith(ESRIGRID)) { - pType = ESRIGRID; - } else if (file.toLowerCase().endsWith(AIG)) { - pType = AIG; - } else if (file.toLowerCase().endsWith(GEOTIFF) || file.toLowerCase().endsWith(GEOTIF)) { - pType = GEOTIFF; - } else if (file.toLowerCase().endsWith(JPEG) || file.toLowerCase().endsWith(JPG)) { - pType = JPG; - } else if (file.toLowerCase().endsWith(PNG)) { - pType = PNG; - } else if (CoverageUtilities.isGrass(file)) { - pType = GRASS; - } else - throw new ModelsIllegalargumentException( - "Can't recognize the data format. Supported are: asc, tiff, jpg, png, grass.", this.getClass() - .getSimpleName()); - - File mapFile = new File(file); - try { - pm.beginTask("Reading coverage: " + mapFile.getName(), IJGTProgressMonitor.UNKNOWN); - - if (pType.equals(ESRIGRID)) { - readArcGrid(mapFile); - } else if (pType.equals(GEOTIFF)) { - readGeotiff(mapFile); - } else if (pType.equals(JPG)) { - readWorldImage(mapFile); - } else if (pType.equals(PNG)) { - readWorldImage(mapFile); - } else if (pType.equals(AIG) || pType.endsWith("w001001x.adf")) { - readAig(mapFile); - } else if (pType.equals(GRASS)) { - readGrass(mapFile); - } else { - throw new ModelsIllegalargumentException("Data type not supported: " + pType, this.getClass().getSimpleName()); - } - } finally { - pm.done(); - } - - } - - private void readGrass( File mapFile ) throws Exception { - JGrassMapEnvironment mapEnvironment = new JGrassMapEnvironment(new File(file)); - CoordinateReferenceSystem crs = mapEnvironment.getCoordinateReferenceSystem(); - JGrassRegion readRegion = mapEnvironment.getFileRegion(); - double n = readRegion.getNorth(); - double s = readRegion.getSouth(); - double w = readRegion.getWest(); - double e = readRegion.getEast(); - - Envelope env = readRegion.getEnvelope(); - originalEnvelope = new GeneralEnvelope(new ReferencedEnvelope(env.getMinX(), env.getMaxX(), env.getMinY(), env.getMaxY(), - crs)); - - // if bounds supplied, use them as region - if (pBounds != null) { - // n, s, w, e - n = pBounds[0]; - s = pBounds[1]; - w = pBounds[2]; - e = pBounds[3]; - } - if (pRes != null) { - readRegion = new JGrassRegion(w, e, s, n, pRes[0], pRes[1]); - } - if (pRowcol != null) { - readRegion = new JGrassRegion(w, e, s, n, pRowcol[0], pRowcol[1]); - } - - if (!doEnvelope) { - int r = readRegion.getRows(); - int c = readRegion.getCols(); - if (!JGTConstants.doesOverFlow(r, c) && !doLegacyGrass) { - if (generalParameter == null) { - generalParameter = createGridGeometryGeneralParameter(readRegion.getCols(), readRegion.getRows(), - readRegion.getNorth(), readRegion.getSouth(), readRegion.getEast(), readRegion.getWest(), crs); - } - GrassCoverageFormat format = new GrassCoverageFormatFactory().createFormat(); - GrassCoverageReader reader = format.getReader(mapEnvironment.getCELL()); - outRaster = (GridCoverage2D) reader.read(generalParameter); - } else { - GrassLegacyReader reader = new GrassLegacyReader(); - reader.file = file; - reader.pm = pm; - reader.inWindow = GrassLegacyUtilities.jgrassRegion2legacyWindow(readRegion); - reader.readCoverage(); - outRaster = reader.outGC; - } - checkNovalues(); - } - } - - private void readAig( File mapFile ) throws IllegalArgumentException, IOException { - final ImageLayout l = new ImageLayout(); - l.setTileGridXOffset(0).setTileGridYOffset(0).setTileHeight(512).setTileWidth(512); - - Hints hints = new Hints(); - hints.add(new RenderingHints(JAI.KEY_IMAGE_LAYOUT, l)); - - final URL url = mapFile.toURI().toURL(); - final Object source = url; - final BaseGDALGridCoverage2DReader reader = new AIGReader(source, hints); - originalEnvelope = reader.getOriginalEnvelope(); - if (!doEnvelope) { - GridCoverage2D coverage = (GridCoverage2D) reader.read(generalParameter); - outRaster = coverage.view(ViewType.GEOPHYSICS); - - resample(); - checkNovalues(); - } - } - - private void readGeotiff( File mapFile ) throws IOException { - String nameWithoutExtention = FileUtilities.getNameWithoutExtention(mapFile); - File twfFile = new File(mapFile.getParentFile(), nameWithoutExtention + ".tfw"); - AbstractGridCoverage2DReader geoTiffReader; - if (twfFile.exists()) { - geoTiffReader = new WorldImageReader(mapFile); - } else { - geoTiffReader = new GeoTiffReader(mapFile); - } - originalEnvelope = geoTiffReader.getOriginalEnvelope(); - if (!doEnvelope) { - GridCoverage2D coverage = geoTiffReader.read(generalParameter); - outRaster = coverage.view(ViewType.GEOPHYSICS); - - resample(); - checkNovalues(); - } - } - - private void readArcGrid( File mapFile ) throws IllegalArgumentException, IOException { - ArcGridReader arcGridReader = new ArcGridReader(mapFile); - originalEnvelope = arcGridReader.getOriginalEnvelope(); - if (!doEnvelope) { - GridCoverage2D coverage = arcGridReader.read(generalParameter); - outRaster = coverage.view(ViewType.GEOPHYSICS); - - resample(); - checkNovalues(); - } - } - - private void readWorldImage( File mapFile ) throws IllegalArgumentException, IOException { - WorldImageReader worldImageReader = new WorldImageReader(mapFile); - originalEnvelope = worldImageReader.getOriginalEnvelope(); - if (!doEnvelope) { - GridCoverage2D coverage = worldImageReader.read(generalParameter); - outRaster = coverage.view(ViewType.RENDERED); - - resample(); - // checkNovalues(); - } - } - - private void resample() { - if (!hasBoundsRequest() && !hasResolutionRequest() && !hasRowColsRequest()) { - // no resample required - return; - } - - HashMap envelopeParams = getRegionParamsFromGridCoverage(outRaster); - double west = envelopeParams.get(WEST); - double south = envelopeParams.get(SOUTH); - double east = envelopeParams.get(EAST); - double north = envelopeParams.get(NORTH); - double xres = envelopeParams.get(XRES); - double yres = envelopeParams.get(YRES); - - if (pBounds == null) { - pBounds = new double[]{north, south, west, east}; - } - if (pRes == null) { - pRes = new double[]{xres, yres}; - } - - double n = pBounds[0]; - double s = pBounds[1]; - double w = pBounds[2]; - double e = pBounds[3]; - if (pRes != null || pRowcol != null) { - int newRows = 0; - int newCols = 0; - if (pRowcol != null) { - newRows = (int) pRowcol[0]; - newCols = (int) pRowcol[1]; - if (pRes == null) { - pRes = new double[2]; - } - pRes[0] = (e - w) / (double) newCols; - pRes[1] = (n - s) / (double) newRows; - } else if (pRes != null) { - pRowcol = new int[2]; - newRows = (int) Math.round((n - s) / pRes[1]); - newCols = (int) Math.round((e - w) / pRes[0]); - } - pRowcol[0] = newRows; - pRowcol[1] = newCols; - } - - HashMap newParams = makeRegionParamsMap(n, s, w, e, pRes[0], pRes[1], (int) pRowcol[1], (int) pRowcol[0]); - CoordinateReferenceSystem crs = outRaster.getCoordinateReferenceSystem(); - GridGeometry2D gg = gridGeometryFromRegionParams(newParams, crs); - outRaster = (GridCoverage2D) Operations.DEFAULT.resample(outRaster, crs, gg, null); - } - - private void checkNovalues() { - // TODO make this nice, this can't be the way - if (fileNovalue == null || geodataNovalue == null) { - return; - } - if (isNovalue(fileNovalue) && isNovalue(geodataNovalue)) { - return; - } - if (!NumericsUtilities.dEq(fileNovalue, geodataNovalue)) { - HashMap params = getRegionParamsFromGridCoverage(outRaster); - int height = params.get(ROWS).intValue(); - int width = params.get(COLS).intValue(); - WritableRaster tmpWR = createDoubleWritableRaster(width, height, null, null, null); - WritableRandomIter tmpIter = RandomIterFactory.createWritable(tmpWR, null); - RenderedImage readRI = outRaster.getRenderedImage(); - RandomIter readIter = RandomIterFactory.create(readRI, null); - int minX = readRI.getMinX(); - int minY = readRI.getMinY(); - for( int r = 0; r < height; r++ ) { - for( int c = 0; c < width; c++ ) { - double value = readIter.getSampleDouble(c + minX, r + minY, 0); - if (isNovalue(value) || value == fileNovalue || value == -Float.MAX_VALUE || value == Float.MAX_VALUE) { - tmpIter.setSample(c, r, 0, geodataNovalue); - } else { - tmpIter.setSample(c, r, 0, value); - } - } - } - outRaster = buildCoverage(new File(file).getName(), tmpWR, params, outRaster.getCoordinateReferenceSystem()); - } - } - - private boolean hasBoundsRequest() { - return pNorth != null && pSouth != null && pWest != null && pEast != null; - } - - private boolean hasRowColsRequest() { - return pRows != null && pCols != null; - } - - private boolean hasResolutionRequest() { - return pXres != null && pYres != null; - } - - /** - * Utility method to quickly read a grid in default mode. - * - * @param path the path to the file. - * @return the read coverage. - * @throws Exception - */ - public static GridCoverage2D readRaster( String path ) throws Exception { - RasterReader reader = new RasterReader(); - reader.file = path; - reader.process(); - GridCoverage2D geodata = reader.outRaster; - return geodata; - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.rasterreader; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.AIG; +import static org.jgrasstools.gears.libs.modules.JGTConstants.ESRIGRID; +import static org.jgrasstools.gears.libs.modules.JGTConstants.GEOTIF; +import static org.jgrasstools.gears.libs.modules.JGTConstants.*; +import static org.jgrasstools.gears.libs.modules.JGTConstants.GRASS; +import static org.jgrasstools.gears.libs.modules.JGTConstants.JPEG; +import static org.jgrasstools.gears.libs.modules.JGTConstants.JPG; +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.COLS; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.EAST; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.NORTH; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.ROWS; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.SOUTH; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.WEST; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.XRES; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.YRES; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.buildCoverage; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.createDoubleWritableRaster; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.createGridGeometryGeneralParameter; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.getRegionParamsFromGridCoverage; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.gridGeometryFromRegionParams; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.makeRegionParamsMap; + +import java.awt.RenderingHints; +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.HashMap; + +import javax.media.jai.ImageLayout; +import javax.media.jai.JAI; +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.coverage.grid.ViewType; +import org.geotools.coverage.grid.io.AbstractGridCoverage2DReader; +import org.geotools.coverage.processing.Operations; +import org.geotools.coverageio.gdal.BaseGDALGridCoverage2DReader; +import org.geotools.coverageio.gdal.aig.AIGReader; +import org.geotools.factory.Hints; +import org.geotools.gce.arcgrid.ArcGridReader; +import org.geotools.gce.geotiff.GeoTiffReader; +import org.geotools.gce.grassraster.GrassCoverageReader; +import org.geotools.gce.grassraster.JGrassMapEnvironment; +import org.geotools.gce.grassraster.JGrassRegion; +import org.geotools.gce.grassraster.format.GrassCoverageFormat; +import org.geotools.gce.grassraster.format.GrassCoverageFormatFactory; +import org.geotools.gce.image.WorldImageReader; +import org.geotools.geometry.GeneralEnvelope; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.jgrasstools.gears.io.grasslegacy.GrassLegacyReader; +import org.jgrasstools.gears.io.grasslegacy.utils.GrassLegacyUtilities; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.files.FileUtilities; +import org.jgrasstools.gears.utils.math.NumericsUtilities; +import org.opengis.parameter.GeneralParameterValue; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Envelope; + +@Description("Raster reader module.") +@Documentation("RasterReader.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Coverage, Raster, Reading") +@Label(JGTConstants.RASTERREADER) +@Status(Status.CERTIFIED) +@Name("rasterreader") +@License("General Public License Version 3 (GPLv3)") +public class RasterReader extends JGTModel { + @UI(JGTConstants.FILEIN_UI_HINT) + @Description("The raster file to read with extension (supported are: asc, tiff, grass).") + @In + public String file = null; + + @Description("The file novalue.") + @In + public Double fileNovalue = -9999.0; + + @Description("The novalue wanted in the raster.") + @In + public Double geodataNovalue = doubleNovalue; + + @Description("The optional requested boundary north coordinate.") + @UI(JGTConstants.PROCESS_NORTH_UI_HINT) + @In + public Double pNorth = null; + + @Description("The optional requested boundary south coordinate.") + @UI(JGTConstants.PROCESS_SOUTH_UI_HINT) + @In + public Double pSouth = null; + + @Description("The optional requested boundary west coordinate.") + @UI(JGTConstants.PROCESS_WEST_UI_HINT) + @In + public Double pWest = null; + + @Description("The optional requested boundary east coordinate.") + @UI(JGTConstants.PROCESS_EAST_UI_HINT) + @In + public Double pEast = null; + + @Description("The optional requested resolution in x.") + @UI(JGTConstants.PROCESS_XRES_UI_HINT) + @In + public Double pXres = null; + + @Description("The optional requested resolution in y.") + @UI(JGTConstants.PROCESS_YRES_UI_HINT) + @In + public Double pYres = null; + + @Description("The optional requested numer of rows.") + @UI(JGTConstants.PROCESS_ROWS_UI_HINT) + @In + public Integer pRows = null; + + @Description("The optional requested numer of cols.") + @UI(JGTConstants.PROCESS_COLS_UI_HINT) + @In + public Integer pCols = null; + + @Description("Optional flag to force a legacy GRASS driver usage.") + @In + public Boolean doLegacyGrass = false; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The read output raster map.") + @Out + public GridCoverage2D outRaster = null; + + /** + * Flag to read only envelope (if true, the output geodata is null). + */ + public boolean doEnvelope = false; + + /** + * The original envelope of the coverage. + */ + public GeneralEnvelope originalEnvelope; + + private GeneralParameterValue[] generalParameter = null; + + private double[] pBounds; + + private double[] pRes; + private int[] pRowcol; + + @Execute + public void process() throws Exception { + if (!concatOr(outRaster == null, doReset)) { + return; + } + + if (hasBoundsRequest() && (!hasResolutionRequest() && !hasRowColsRequest())) { + throw new RuntimeException("If bounds are requested, also a resolution or number of rows/cols has to be supplied."); + } + if (hasBoundsRequest()) { + pBounds = new double[]{pNorth, pSouth, pWest, pEast}; + } + if (hasResolutionRequest()) { + pRes = new double[]{pXres, pYres}; + } + if (hasRowColsRequest()) { + pRowcol = new int[]{pRows, pCols}; + } + + String pType = null; + // try to guess from the extension + if (file.toLowerCase().endsWith(ESRIGRID)) { + pType = ESRIGRID; + } else if (file.toLowerCase().endsWith(AIG)) { + pType = AIG; + } else if (file.toLowerCase().endsWith(GEOTIFF) || file.toLowerCase().endsWith(GEOTIF)) { + pType = GEOTIFF; + } else if (file.toLowerCase().endsWith(JPEG) || file.toLowerCase().endsWith(JPG)) { + pType = JPG; + } else if (file.toLowerCase().endsWith(PNG)) { + pType = PNG; + } else if (CoverageUtilities.isGrass(file)) { + pType = GRASS; + } else + throw new ModelsIllegalargumentException( + "Can't recognize the data format. Supported are: asc, tiff, jpg, png, grass.", this.getClass() + .getSimpleName()); + + File mapFile = new File(file); + try { + pm.beginTask("Reading coverage: " + mapFile.getName(), IJGTProgressMonitor.UNKNOWN); + + if (pType.equals(ESRIGRID)) { + readArcGrid(mapFile); + } else if (pType.equals(GEOTIFF)) { + readGeotiff(mapFile); + } else if (pType.equals(JPG)) { + readWorldImage(mapFile); + } else if (pType.equals(PNG)) { + readWorldImage(mapFile); + } else if (pType.equals(AIG) || pType.endsWith("w001001x.adf")) { + readAig(mapFile); + } else if (pType.equals(GRASS)) { + readGrass(mapFile); + } else { + throw new ModelsIllegalargumentException("Data type not supported: " + pType, this.getClass().getSimpleName()); + } + } finally { + pm.done(); + } + + } + + private void readGrass( File mapFile ) throws Exception { + JGrassMapEnvironment mapEnvironment = new JGrassMapEnvironment(new File(file)); + CoordinateReferenceSystem crs = mapEnvironment.getCoordinateReferenceSystem(); + JGrassRegion readRegion = mapEnvironment.getFileRegion(); + double n = readRegion.getNorth(); + double s = readRegion.getSouth(); + double w = readRegion.getWest(); + double e = readRegion.getEast(); + + Envelope env = readRegion.getEnvelope(); + originalEnvelope = new GeneralEnvelope(new ReferencedEnvelope(env.getMinX(), env.getMaxX(), env.getMinY(), env.getMaxY(), + crs)); + + // if bounds supplied, use them as region + if (pBounds != null) { + // n, s, w, e + n = pBounds[0]; + s = pBounds[1]; + w = pBounds[2]; + e = pBounds[3]; + } + if (pRes != null) { + readRegion = new JGrassRegion(w, e, s, n, pRes[0], pRes[1]); + } + if (pRowcol != null) { + readRegion = new JGrassRegion(w, e, s, n, pRowcol[0], pRowcol[1]); + } + + if (!doEnvelope) { + int r = readRegion.getRows(); + int c = readRegion.getCols(); + if (!JGTConstants.doesOverFlow(r, c) && !doLegacyGrass) { + if (generalParameter == null) { + generalParameter = createGridGeometryGeneralParameter(readRegion.getCols(), readRegion.getRows(), + readRegion.getNorth(), readRegion.getSouth(), readRegion.getEast(), readRegion.getWest(), crs); + } + GrassCoverageFormat format = new GrassCoverageFormatFactory().createFormat(); + GrassCoverageReader reader = format.getReader(mapEnvironment.getCELL()); + outRaster = (GridCoverage2D) reader.read(generalParameter); + } else { + GrassLegacyReader reader = new GrassLegacyReader(); + reader.file = file; + reader.pm = pm; + reader.inWindow = GrassLegacyUtilities.jgrassRegion2legacyWindow(readRegion); + reader.readCoverage(); + outRaster = reader.outGC; + } + checkNovalues(); + } + } + + private void readAig( File mapFile ) throws IllegalArgumentException, IOException { + final ImageLayout l = new ImageLayout(); + l.setTileGridXOffset(0).setTileGridYOffset(0).setTileHeight(512).setTileWidth(512); + + Hints hints = new Hints(); + hints.add(new RenderingHints(JAI.KEY_IMAGE_LAYOUT, l)); + + final URL url = mapFile.toURI().toURL(); + final Object source = url; + final BaseGDALGridCoverage2DReader reader = new AIGReader(source, hints); + originalEnvelope = reader.getOriginalEnvelope(); + if (!doEnvelope) { + GridCoverage2D coverage = (GridCoverage2D) reader.read(generalParameter); + outRaster = coverage.view(ViewType.GEOPHYSICS); + + resample(); + checkNovalues(); + } + } + + private void readGeotiff( File mapFile ) throws IOException { + String nameWithoutExtention = FileUtilities.getNameWithoutExtention(mapFile); + File twfFile = new File(mapFile.getParentFile(), nameWithoutExtention + ".tfw"); + AbstractGridCoverage2DReader geoTiffReader; + if (twfFile.exists()) { + geoTiffReader = new WorldImageReader(mapFile); + } else { + geoTiffReader = new GeoTiffReader(mapFile); + } + originalEnvelope = geoTiffReader.getOriginalEnvelope(); + if (!doEnvelope) { + GridCoverage2D coverage = geoTiffReader.read(generalParameter); + outRaster = coverage.view(ViewType.GEOPHYSICS); + + resample(); + checkNovalues(); + } + } + + private void readArcGrid( File mapFile ) throws IllegalArgumentException, IOException { + ArcGridReader arcGridReader = new ArcGridReader(mapFile); + originalEnvelope = arcGridReader.getOriginalEnvelope(); + if (!doEnvelope) { + GridCoverage2D coverage = arcGridReader.read(generalParameter); + outRaster = coverage.view(ViewType.GEOPHYSICS); + + resample(); + checkNovalues(); + } + } + + private void readWorldImage( File mapFile ) throws IllegalArgumentException, IOException { + WorldImageReader worldImageReader = new WorldImageReader(mapFile); + originalEnvelope = worldImageReader.getOriginalEnvelope(); + if (!doEnvelope) { + GridCoverage2D coverage = worldImageReader.read(generalParameter); + outRaster = coverage.view(ViewType.RENDERED); + + resample(); + // checkNovalues(); + } + } + + private void resample() { + if (!hasBoundsRequest() && !hasResolutionRequest() && !hasRowColsRequest()) { + // no resample required + return; + } + + HashMap envelopeParams = getRegionParamsFromGridCoverage(outRaster); + double west = envelopeParams.get(WEST); + double south = envelopeParams.get(SOUTH); + double east = envelopeParams.get(EAST); + double north = envelopeParams.get(NORTH); + double xres = envelopeParams.get(XRES); + double yres = envelopeParams.get(YRES); + + if (pBounds == null) { + pBounds = new double[]{north, south, west, east}; + } + if (pRes == null) { + pRes = new double[]{xres, yres}; + } + + double n = pBounds[0]; + double s = pBounds[1]; + double w = pBounds[2]; + double e = pBounds[3]; + if (pRes != null || pRowcol != null) { + int newRows = 0; + int newCols = 0; + if (pRowcol != null) { + newRows = (int) pRowcol[0]; + newCols = (int) pRowcol[1]; + if (pRes == null) { + pRes = new double[2]; + } + pRes[0] = (e - w) / (double) newCols; + pRes[1] = (n - s) / (double) newRows; + } else if (pRes != null) { + pRowcol = new int[2]; + newRows = (int) Math.round((n - s) / pRes[1]); + newCols = (int) Math.round((e - w) / pRes[0]); + } + pRowcol[0] = newRows; + pRowcol[1] = newCols; + } + + HashMap newParams = makeRegionParamsMap(n, s, w, e, pRes[0], pRes[1], (int) pRowcol[1], (int) pRowcol[0]); + CoordinateReferenceSystem crs = outRaster.getCoordinateReferenceSystem(); + GridGeometry2D gg = gridGeometryFromRegionParams(newParams, crs); + outRaster = (GridCoverage2D) Operations.DEFAULT.resample(outRaster, crs, gg, null); + } + + private void checkNovalues() { + // TODO make this nice, this can't be the way + if (fileNovalue == null || geodataNovalue == null) { + return; + } + if (isNovalue(fileNovalue) && isNovalue(geodataNovalue)) { + return; + } + if (!NumericsUtilities.dEq(fileNovalue, geodataNovalue)) { + HashMap params = getRegionParamsFromGridCoverage(outRaster); + int height = params.get(ROWS).intValue(); + int width = params.get(COLS).intValue(); + WritableRaster tmpWR = createDoubleWritableRaster(width, height, null, null, null); + WritableRandomIter tmpIter = RandomIterFactory.createWritable(tmpWR, null); + RenderedImage readRI = outRaster.getRenderedImage(); + RandomIter readIter = RandomIterFactory.create(readRI, null); + int minX = readRI.getMinX(); + int minY = readRI.getMinY(); + for( int r = 0; r < height; r++ ) { + for( int c = 0; c < width; c++ ) { + double value = readIter.getSampleDouble(c + minX, r + minY, 0); + if (isNovalue(value) || value == fileNovalue || value == -Float.MAX_VALUE || value == Float.MAX_VALUE) { + tmpIter.setSample(c, r, 0, geodataNovalue); + } else { + tmpIter.setSample(c, r, 0, value); + } + } + } + outRaster = buildCoverage(new File(file).getName(), tmpWR, params, outRaster.getCoordinateReferenceSystem()); + } + } + + private boolean hasBoundsRequest() { + return pNorth != null && pSouth != null && pWest != null && pEast != null; + } + + private boolean hasRowColsRequest() { + return pRows != null && pCols != null; + } + + private boolean hasResolutionRequest() { + return pXres != null && pYres != null; + } + + /** + * Utility method to quickly read a grid in default mode. + * + * @param path the path to the file. + * @return the read coverage. + * @throws Exception + */ + public static GridCoverage2D readRaster( String path ) throws Exception { + RasterReader reader = new RasterReader(); + reader.file = path; + reader.process(); + GridCoverage2D geodata = reader.outRaster; + return geodata; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/rasterwriter/RasterWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/rasterwriter/RasterWriter.java index 2f61d3501..9838b37ba 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/rasterwriter/RasterWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/rasterwriter/RasterWriter.java @@ -1,198 +1,198 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.rasterwriter; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.ESRIGRID; -import static org.jgrasstools.gears.libs.modules.JGTConstants.GEOTIF; -import static org.jgrasstools.gears.libs.modules.JGTConstants.GEOTIFF; -import static org.jgrasstools.gears.libs.modules.JGTConstants.GRASS; - -import java.io.File; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.io.AbstractGridFormat; -import org.geotools.coverage.grid.io.imageio.GeoToolsWriteParams; -import org.geotools.gce.arcgrid.ArcGridFormat; -import org.geotools.gce.arcgrid.ArcGridWriteParams; -import org.geotools.gce.arcgrid.ArcGridWriter; -import org.geotools.gce.geotiff.GeoTiffFormat; -import org.geotools.gce.geotiff.GeoTiffWriteParams; -import org.geotools.gce.geotiff.GeoTiffWriter; -import org.geotools.gce.grassraster.GrassCoverageWriter; -import org.geotools.gce.grassraster.JGrassMapEnvironment; -import org.geotools.gce.grassraster.JGrassRegion; -import org.geotools.gce.grassraster.format.GrassCoverageFormat; -import org.geotools.gce.grassraster.format.GrassCoverageFormatFactory; -import org.jgrasstools.gears.io.grasslegacy.GrassLegacyGridCoverage2D; -import org.jgrasstools.gears.io.grasslegacy.GrassLegacyWriter; -import org.jgrasstools.gears.io.grasslegacy.utils.GrassLegacyUtilities; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.parameter.GeneralParameterValue; -import org.opengis.parameter.ParameterValueGroup; - -@Description("Raster writer module.") -@Documentation("RasterWriter.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Grass, Coverage, Raster, Writing") -@Label(JGTConstants.RASTERWRITER) -@Status(Status.CERTIFIED) -@Name("rasterwriter") -@License("General Public License Version 3 (GPLv3)") -public class RasterWriter extends JGTModel { - @Description("The raster map to write.") - @In - public GridCoverage2D inRaster = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new DummyProgressMonitor(); - - @Description("The file to write the raster to with extension (supported are: asc, tiff, grass).") - @UI(JGTConstants.FILEOUT_UI_HINT) - @In - public String file = null; - - private boolean hasWritten = false; - - @Execute - public void process() throws Exception { - if (!concatOr(!hasWritten, doReset)) { - return; - } - checkNull(inRaster); - - if (inRaster.getName().toString().equals("dummy")) { - pm.message("WARNING: Not writing dummy raster to file."); - return; - } - - String pType = null; - // guess from the extension - if (file.toLowerCase().endsWith(ESRIGRID)) { - pType = ESRIGRID; - } else if (file.toLowerCase().endsWith(GEOTIFF) || file.toLowerCase().endsWith(GEOTIF)) { - pType = GEOTIFF; - } else if (CoverageUtilities.isGrass(file)) { - pType = GRASS; - } else - throw new ModelsIllegalargumentException("Can't recognize the data format. Supported are: asc, tiff, grass.", this - .getClass().getSimpleName()); - - File mapFile = new File(file); - try { - pm.beginTask("Writing coverage: " + mapFile.getName(), IJGTProgressMonitor.UNKNOWN); - - if (pType.equals(ESRIGRID)) { - writeArcGrid(mapFile); - } else if (pType.equals(GEOTIFF)) { - writeGeotiff(mapFile); - } else if (pType.equals(GRASS)) { - writeGrass(mapFile); - } else { - throw new ModelsIllegalargumentException("Data type not supported: " + pType, this.getClass().getSimpleName()); - } - hasWritten = true; - } finally { - pm.done(); - } - - } - - private void writeArcGrid( File mapFile ) throws Exception { - final ArcGridFormat format = new ArcGridFormat(); - final ArcGridWriteParams wp = new ArcGridWriteParams(); - final ParameterValueGroup paramWrite = format.getWriteParameters(); - paramWrite.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); - ArcGridWriter gtw = (ArcGridWriter) format.getWriter(new File(file)); - gtw.write(inRaster, (GeneralParameterValue[]) paramWrite.values().toArray(new GeneralParameterValue[1])); - gtw.dispose(); - } - - private void writeGeotiff( File mapFile ) throws Exception { - final GeoTiffFormat format = new GeoTiffFormat(); - final GeoTiffWriteParams wp = new GeoTiffWriteParams(); - wp.setCompressionMode(GeoTiffWriteParams.MODE_DEFAULT); - wp.setTilingMode(GeoToolsWriteParams.MODE_DEFAULT); - final ParameterValueGroup paramWrite = format.getWriteParameters(); - paramWrite.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); - GeoTiffWriter gtw = (GeoTiffWriter) format.getWriter(mapFile); - gtw.write(inRaster, (GeneralParameterValue[]) paramWrite.values().toArray(new GeneralParameterValue[1])); - } - - private void writeGrass( File mapFile ) throws Exception { - File cellFile = mapFile; - JGrassMapEnvironment mapEnvironment = new JGrassMapEnvironment(cellFile); - GeneralParameterValue[] readParams = null; - JGrassRegion jGrassRegion = null; - boolean doLarge = false; - if (inRaster instanceof GrassLegacyGridCoverage2D) { - doLarge = true; - } - // if (doActive) { - // jGrassRegion = mapEnvironment.getActiveRegion(); - // if (!doLarge) { - // readParams = - // CoverageUtilities.createGridGeometryGeneralParameter(jGrassRegion.getCols(), - // jGrassRegion.getRows(), jGrassRegion.getNorth(), jGrassRegion.getSouth(), - // jGrassRegion.getEast(), - // jGrassRegion.getWest(), mapEnvironment.getCoordinateReferenceSystem()); - // } - // } - - if (!doLarge) { - GrassCoverageFormat format = new GrassCoverageFormatFactory().createFormat(); - GrassCoverageWriter writer = format.getWriter(mapEnvironment.getCELL(), null); - writer.write(inRaster, readParams); - writer.dispose(); - } else { - GrassLegacyGridCoverage2D gd2 = (GrassLegacyGridCoverage2D) inRaster; - GrassLegacyWriter writer = new GrassLegacyWriter(); - writer.geodata = gd2.getData(); - writer.file = file; - if (jGrassRegion == null) - jGrassRegion = mapEnvironment.getActiveRegion(); - writer.inWindow = GrassLegacyUtilities.jgrassRegion2legacyWindow(jGrassRegion); - writer.writeRaster(); - } - - } - - public static void writeRaster( String path, GridCoverage2D coverage ) throws Exception { - RasterWriter writer = new RasterWriter(); - writer.inRaster = coverage; - writer.file = path; - writer.process(); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.rasterwriter; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.ESRIGRID; +import static org.jgrasstools.gears.libs.modules.JGTConstants.GEOTIF; +import static org.jgrasstools.gears.libs.modules.JGTConstants.GEOTIFF; +import static org.jgrasstools.gears.libs.modules.JGTConstants.GRASS; + +import java.io.File; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.io.AbstractGridFormat; +import org.geotools.coverage.grid.io.imageio.GeoToolsWriteParams; +import org.geotools.gce.arcgrid.ArcGridFormat; +import org.geotools.gce.arcgrid.ArcGridWriteParams; +import org.geotools.gce.arcgrid.ArcGridWriter; +import org.geotools.gce.geotiff.GeoTiffFormat; +import org.geotools.gce.geotiff.GeoTiffWriteParams; +import org.geotools.gce.geotiff.GeoTiffWriter; +import org.geotools.gce.grassraster.GrassCoverageWriter; +import org.geotools.gce.grassraster.JGrassMapEnvironment; +import org.geotools.gce.grassraster.JGrassRegion; +import org.geotools.gce.grassraster.format.GrassCoverageFormat; +import org.geotools.gce.grassraster.format.GrassCoverageFormatFactory; +import org.jgrasstools.gears.io.grasslegacy.GrassLegacyGridCoverage2D; +import org.jgrasstools.gears.io.grasslegacy.GrassLegacyWriter; +import org.jgrasstools.gears.io.grasslegacy.utils.GrassLegacyUtilities; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.parameter.GeneralParameterValue; +import org.opengis.parameter.ParameterValueGroup; + +@Description("Raster writer module.") +@Documentation("RasterWriter.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Grass, Coverage, Raster, Writing") +@Label(JGTConstants.RASTERWRITER) +@Status(Status.CERTIFIED) +@Name("rasterwriter") +@License("General Public License Version 3 (GPLv3)") +public class RasterWriter extends JGTModel { + @Description("The raster map to write.") + @In + public GridCoverage2D inRaster = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new DummyProgressMonitor(); + + @Description("The file to write the raster to with extension (supported are: asc, tiff, grass).") + @UI(JGTConstants.FILEOUT_UI_HINT) + @In + public String file = null; + + private boolean hasWritten = false; + + @Execute + public void process() throws Exception { + if (!concatOr(!hasWritten, doReset)) { + return; + } + checkNull(inRaster); + + if (inRaster.getName().toString().equals("dummy")) { + pm.message("WARNING: Not writing dummy raster to file."); + return; + } + + String pType = null; + // guess from the extension + if (file.toLowerCase().endsWith(ESRIGRID)) { + pType = ESRIGRID; + } else if (file.toLowerCase().endsWith(GEOTIFF) || file.toLowerCase().endsWith(GEOTIF)) { + pType = GEOTIFF; + } else if (CoverageUtilities.isGrass(file)) { + pType = GRASS; + } else + throw new ModelsIllegalargumentException("Can't recognize the data format. Supported are: asc, tiff, grass.", this + .getClass().getSimpleName()); + + File mapFile = new File(file); + try { + pm.beginTask("Writing coverage: " + mapFile.getName(), IJGTProgressMonitor.UNKNOWN); + + if (pType.equals(ESRIGRID)) { + writeArcGrid(mapFile); + } else if (pType.equals(GEOTIFF)) { + writeGeotiff(mapFile); + } else if (pType.equals(GRASS)) { + writeGrass(mapFile); + } else { + throw new ModelsIllegalargumentException("Data type not supported: " + pType, this.getClass().getSimpleName()); + } + hasWritten = true; + } finally { + pm.done(); + } + + } + + private void writeArcGrid( File mapFile ) throws Exception { + final ArcGridFormat format = new ArcGridFormat(); + final ArcGridWriteParams wp = new ArcGridWriteParams(); + final ParameterValueGroup paramWrite = format.getWriteParameters(); + paramWrite.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); + ArcGridWriter gtw = (ArcGridWriter) format.getWriter(new File(file)); + gtw.write(inRaster, (GeneralParameterValue[]) paramWrite.values().toArray(new GeneralParameterValue[1])); + gtw.dispose(); + } + + private void writeGeotiff( File mapFile ) throws Exception { + final GeoTiffFormat format = new GeoTiffFormat(); + final GeoTiffWriteParams wp = new GeoTiffWriteParams(); + wp.setCompressionMode(GeoTiffWriteParams.MODE_DEFAULT); + wp.setTilingMode(GeoToolsWriteParams.MODE_DEFAULT); + final ParameterValueGroup paramWrite = format.getWriteParameters(); + paramWrite.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); + GeoTiffWriter gtw = (GeoTiffWriter) format.getWriter(mapFile); + gtw.write(inRaster, (GeneralParameterValue[]) paramWrite.values().toArray(new GeneralParameterValue[1])); + } + + private void writeGrass( File mapFile ) throws Exception { + File cellFile = mapFile; + JGrassMapEnvironment mapEnvironment = new JGrassMapEnvironment(cellFile); + GeneralParameterValue[] readParams = null; + JGrassRegion jGrassRegion = null; + boolean doLarge = false; + if (inRaster instanceof GrassLegacyGridCoverage2D) { + doLarge = true; + } + // if (doActive) { + // jGrassRegion = mapEnvironment.getActiveRegion(); + // if (!doLarge) { + // readParams = + // CoverageUtilities.createGridGeometryGeneralParameter(jGrassRegion.getCols(), + // jGrassRegion.getRows(), jGrassRegion.getNorth(), jGrassRegion.getSouth(), + // jGrassRegion.getEast(), + // jGrassRegion.getWest(), mapEnvironment.getCoordinateReferenceSystem()); + // } + // } + + if (!doLarge) { + GrassCoverageFormat format = new GrassCoverageFormatFactory().createFormat(); + GrassCoverageWriter writer = format.getWriter(mapEnvironment.getCELL(), null); + writer.write(inRaster, readParams); + writer.dispose(); + } else { + GrassLegacyGridCoverage2D gd2 = (GrassLegacyGridCoverage2D) inRaster; + GrassLegacyWriter writer = new GrassLegacyWriter(); + writer.geodata = gd2.getData(); + writer.file = file; + if (jGrassRegion == null) + jGrassRegion = mapEnvironment.getActiveRegion(); + writer.inWindow = GrassLegacyUtilities.jgrassRegion2legacyWindow(jGrassRegion); + writer.writeRaster(); + } + + } + + public static void writeRaster( String path, GridCoverage2D coverage ) throws Exception { + RasterWriter writer = new RasterWriter(); + writer.inRaster = coverage; + writer.file = path; + writer.process(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/shapefile/ShapefileFeatureReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/shapefile/ShapefileFeatureReader.java index d0f149507..9f7563dc8 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/shapefile/ShapefileFeatureReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/shapefile/ShapefileFeatureReader.java @@ -1,101 +1,101 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.shapefile; - -import java.io.File; -import java.io.IOException; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.shapefile.indexed.IndexedShapefileDataStore; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureSource; -import org.geotools.feature.FeatureCollection; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Utility class for reading shapefiles to geotools featurecollections.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Shapefile, Feature, Vector, Reading") -@Label(JGTConstants.FEATUREREADER) -@Status(Status.CERTIFIED) -@UI(JGTConstants.HIDE_UI_HINT) -@License("General Public License Version 3 (GPLv3)") -public class ShapefileFeatureReader extends JGTModel { - @Description("The shapefile.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The read feature collection.") - @Out - public SimpleFeatureCollection geodata = null; - - @Execute - public void readFeatureCollection() throws IOException { - if (!concatOr(geodata == null, doReset)) { - return; - } - - try { - File shapeFile = new File(file); - pm.beginTask("Reading features from shapefile: " + shapeFile.getName(), -1); - IndexedShapefileDataStore store = new IndexedShapefileDataStore(shapeFile.toURI().toURL()); - SimpleFeatureSource featureSource = store.getFeatureSource(); - geodata = featureSource.getFeatures(); - } finally { - pm.done(); - } - } - - /** - * Fast read access mode. - * - * @param path the shapefile path. - * @return the read {@link FeatureCollection}. - * @throws IOException - */ - public static SimpleFeatureCollection readShapefile( String path ) throws IOException { - - ShapefileFeatureReader reader = new ShapefileFeatureReader(); - reader.file = path; - reader.readFeatureCollection(); - - return reader.geodata; - } - - - - - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.shapefile; + +import java.io.File; +import java.io.IOException; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.shapefile.indexed.IndexedShapefileDataStore; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.feature.FeatureCollection; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Utility class for reading shapefiles to geotools featurecollections.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Shapefile, Feature, Vector, Reading") +@Label(JGTConstants.FEATUREREADER) +@Status(Status.CERTIFIED) +@UI(JGTConstants.HIDE_UI_HINT) +@License("General Public License Version 3 (GPLv3)") +public class ShapefileFeatureReader extends JGTModel { + @Description("The shapefile.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The read feature collection.") + @Out + public SimpleFeatureCollection geodata = null; + + @Execute + public void readFeatureCollection() throws IOException { + if (!concatOr(geodata == null, doReset)) { + return; + } + + try { + File shapeFile = new File(file); + pm.beginTask("Reading features from shapefile: " + shapeFile.getName(), -1); + IndexedShapefileDataStore store = new IndexedShapefileDataStore(shapeFile.toURI().toURL()); + SimpleFeatureSource featureSource = store.getFeatureSource(); + geodata = featureSource.getFeatures(); + } finally { + pm.done(); + } + } + + /** + * Fast read access mode. + * + * @param path the shapefile path. + * @return the read {@link FeatureCollection}. + * @throws IOException + */ + public static SimpleFeatureCollection readShapefile( String path ) throws IOException { + + ShapefileFeatureReader reader = new ShapefileFeatureReader(); + reader.file = path; + reader.readFeatureCollection(); + + return reader.geodata; + } + + + + + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/shapefile/ShapefileFeatureWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/shapefile/ShapefileFeatureWriter.java index d4ae0f77c..ca8b8ee18 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/shapefile/ShapefileFeatureWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/shapefile/ShapefileFeatureWriter.java @@ -1,147 +1,147 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.shapefile; - -import java.io.File; -import java.io.IOException; -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.DataStoreFactorySpi; -import org.geotools.data.DefaultTransaction; -import org.geotools.data.Transaction; -import org.geotools.data.shapefile.ShapefileDataStore; -import org.geotools.data.shapefile.ShapefileDataStoreFactory; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureStore; -import org.geotools.feature.FeatureCollections; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.opengis.feature.simple.SimpleFeatureType; - -@Description("Utility class for writing geotools featurecollections to shapefile.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Shapefile, Feature, Vector, Writing") -@Label(JGTConstants.FEATUREWRITER) -@Status(Status.CERTIFIED) -@UI(JGTConstants.HIDE_UI_HINT) -@License("General Public License Version 3 (GPLv3)") -public class ShapefileFeatureWriter extends JGTModel { - - @Description("The feature collection to write.") - @In - public SimpleFeatureCollection geodata = null; - - @Description("The shapefile to which to write to.") - @UI(JGTConstants.FILEOUT_UI_HINT) - @In - public String file = null; - - @Description("Create also the spatial index for the file.") - @In - public boolean doIndex = true; - - @Description("The feature type. It's mandatory only if you want to write down an empty FeatureCollection") - @In - public SimpleFeatureType pType = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - private boolean hasWritten = false; - - @Execute - public void writeFeatureCollection() throws IOException { - if (!concatOr(!hasWritten, doReset)) { - return; - } - - pm.beginTask("Writing features to shapefile...", -1); - - if (!file.endsWith(".shp")) { - file = file + ".shp"; - } - File shapeFile = new File(file); - DataStoreFactorySpi dataStoreFactory = new ShapefileDataStoreFactory(); - Map params = new HashMap(); - params.put("url", shapeFile.toURI().toURL()); - String key = "create spatial index"; - if (doIndex) { - params.put(key, Boolean.TRUE); - }else{ - params.put(key, Boolean.FALSE); - } - if (geodata != null && geodata.size() != 0) { - pType = geodata.getSchema(); - } - ShapefileDataStore newDataStore = (ShapefileDataStore) dataStoreFactory.createNewDataStore(params); - newDataStore.createSchema(pType); - newDataStore.forceSchemaCRS(pType.getCoordinateReferenceSystem()); - - Transaction transaction = new DefaultTransaction("create"); - String typeName = newDataStore.getTypeNames()[0]; - SimpleFeatureStore featureStore = (SimpleFeatureStore) newDataStore.getFeatureSource(typeName); - - featureStore.setTransaction(transaction); - try { - if (geodata == null) { - featureStore.addFeatures(FeatureCollections.newCollection()); - } else { - featureStore.addFeatures(geodata); - } - transaction.commit(); - } catch (Exception problem) { - transaction.rollback(); - throw new IOException(problem.getLocalizedMessage()); - } finally { - transaction.close(); - pm.done(); - } - - hasWritten = true; - } - - public static void writeShapefile( String path, SimpleFeatureCollection featureCollection ) throws IOException { - ShapefileFeatureWriter writer = new ShapefileFeatureWriter(); - writer.file = path; - writer.geodata = featureCollection; - writer.writeFeatureCollection(); - } - - public static void writeEmptyShapefile( String path, SimpleFeatureType schema ) throws IOException { - ShapefileFeatureWriter writer = new ShapefileFeatureWriter(); - writer.file = path; - writer.pType = schema; - writer.writeFeatureCollection(); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.shapefile; + +import java.io.File; +import java.io.IOException; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.DataStoreFactorySpi; +import org.geotools.data.DefaultTransaction; +import org.geotools.data.Transaction; +import org.geotools.data.shapefile.ShapefileDataStore; +import org.geotools.data.shapefile.ShapefileDataStoreFactory; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureStore; +import org.geotools.feature.FeatureCollections; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.opengis.feature.simple.SimpleFeatureType; + +@Description("Utility class for writing geotools featurecollections to shapefile.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Shapefile, Feature, Vector, Writing") +@Label(JGTConstants.FEATUREWRITER) +@Status(Status.CERTIFIED) +@UI(JGTConstants.HIDE_UI_HINT) +@License("General Public License Version 3 (GPLv3)") +public class ShapefileFeatureWriter extends JGTModel { + + @Description("The feature collection to write.") + @In + public SimpleFeatureCollection geodata = null; + + @Description("The shapefile to which to write to.") + @UI(JGTConstants.FILEOUT_UI_HINT) + @In + public String file = null; + + @Description("Create also the spatial index for the file.") + @In + public boolean doIndex = true; + + @Description("The feature type. It's mandatory only if you want to write down an empty FeatureCollection") + @In + public SimpleFeatureType pType = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + private boolean hasWritten = false; + + @Execute + public void writeFeatureCollection() throws IOException { + if (!concatOr(!hasWritten, doReset)) { + return; + } + + pm.beginTask("Writing features to shapefile...", -1); + + if (!file.endsWith(".shp")) { + file = file + ".shp"; + } + File shapeFile = new File(file); + DataStoreFactorySpi dataStoreFactory = new ShapefileDataStoreFactory(); + Map params = new HashMap(); + params.put("url", shapeFile.toURI().toURL()); + String key = "create spatial index"; + if (doIndex) { + params.put(key, Boolean.TRUE); + }else{ + params.put(key, Boolean.FALSE); + } + if (geodata != null && geodata.size() != 0) { + pType = geodata.getSchema(); + } + ShapefileDataStore newDataStore = (ShapefileDataStore) dataStoreFactory.createNewDataStore(params); + newDataStore.createSchema(pType); + newDataStore.forceSchemaCRS(pType.getCoordinateReferenceSystem()); + + Transaction transaction = new DefaultTransaction("create"); + String typeName = newDataStore.getTypeNames()[0]; + SimpleFeatureStore featureStore = (SimpleFeatureStore) newDataStore.getFeatureSource(typeName); + + featureStore.setTransaction(transaction); + try { + if (geodata == null) { + featureStore.addFeatures(FeatureCollections.newCollection()); + } else { + featureStore.addFeatures(geodata); + } + transaction.commit(); + } catch (Exception problem) { + transaction.rollback(); + throw new IOException(problem.getLocalizedMessage()); + } finally { + transaction.close(); + pm.done(); + } + + hasWritten = true; + } + + public static void writeShapefile( String path, SimpleFeatureCollection featureCollection ) throws IOException { + ShapefileFeatureWriter writer = new ShapefileFeatureWriter(); + writer.file = path; + writer.geodata = featureCollection; + writer.writeFeatureCollection(); + } + + public static void writeEmptyShapefile( String path, SimpleFeatureType schema ) throws IOException { + ShapefileFeatureWriter writer = new ShapefileFeatureWriter(); + writer.file = path; + writer.pType = schema; + writer.writeFeatureCollection(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorReader.java index e200d53ce..318ebfc9e 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorReader.java @@ -1,338 +1,338 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.timedependent; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Initialize; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.io.CSTable; -import oms3.io.DataIO; -import oms3.io.TableIterator; - -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormatter; - -@Description("Utility class for reading data from a OMS formatted csv file. The file needs a metadata line containing the id of the station. The table is supposed to have a first column of timestamp and all olther columns of data related to the ids defined.") -@Documentation("TimeSeriesIteratorReader.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Reading") -@Label(JGTConstants.HASHMAP_READER) -@Name("tsitreader") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class TimeSeriesIteratorReader extends JGTModel { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The id metadata field.") - @In - public String idfield = "ID"; - - @Description("The file novalue to be translated into the internal novalue. Can be a string also") - @In - public String fileNovalue = "-9999.0"; - - @Description("The internal novalue to use (usually not changed).") - @In - public double novalue = JGTConstants.doubleNovalue; - - @Description("The number of rows to aggregate (default is 1, i.e. no aggregation).") - @In - public int pNum = 1; - - @Description("The aggregation type to use (0 = sum, 1 = avg).") - @In - public int pAggregation = 0; - - @Description("The time at which start to read (format: yyyy-MM-dd HH:mm ).") - @In - @Out - public String tStart; - - @Description("The time at which end to read (format: yyyy-MM-dd HH:mm ).") - @In - @Out - public String tEnd; - - @Description("The reading timestep in minutes.") - @In - @Out - public int tTimestep; - - @Description("The current time read (format: yyyy-MM-dd HH:mm ).") - @Out - public String tCurrent; - - @Description("The previous time read (format: yyyy-MM-dd HH:mm ).") - @Out - public String tPrevious; - - @Description("The read map of ids and values.") - @Out - public HashMap outData; - - private TableIterator rowsIterator; - - private CSTable table; - - private DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; - - private DateTime expectedTimestamp = null; - - @Initialize - public void initProcess() { - // activate time - doProcess = true; - - } - private void ensureOpen() throws IOException { - if (table == null) { - table = DataIO.table(new File(file), null); - rowsIterator = (TableIterator) table.rows().iterator(); - /* - * If tStart is null then the reader try to read all the value in the file, nb time step constant. - */ - if (tStart == null) { - String secondTime = null; - // get the first time in the file. - if (rowsIterator.hasNext()) { - String[] row = rowsIterator.next(); - tStart = row[1]; - } - // get the time of the second row in the file. - if (rowsIterator.hasNext()) { - String[] row = rowsIterator.next(); - secondTime = row[1]; - } - // the dt is equal to the fifference of the time of 2 rows. - tTimestep = formatter.parseDateTime(secondTime).getMinuteOfDay() - - formatter.parseDateTime(tStart).getMinuteOfDay(); - // close and reopen to read the row. - rowsIterator.close(); - rowsIterator = (TableIterator) table.rows().iterator(); - } - - } - } - - @Execute - public void nextRecord() throws IOException { - ensureOpen(); - if (tCurrent == null) { - tPrevious = null; - tCurrent = tStart.trim(); - expectedTimestamp = formatter.parseDateTime(tCurrent); - } else { - - tPrevious = tCurrent; - expectedTimestamp = expectedTimestamp.plusMinutes(tTimestep); - tCurrent = expectedTimestamp.toString(formatter); - } - outData = new HashMap(); - - int columnCount = table.getColumnCount(); - List idList = new ArrayList(); - List idCountList = new ArrayList(); - int count = 0; - Integer previousIdInteger = null; - for( int i = 2; i <= columnCount; i++ ) { - String id = table.getColumnInfo(i).get(idfield); - try { - Integer idInteger = Integer.valueOf(id); - idList.add(idInteger); - if (previousIdInteger == null) { - count++; - } else { - if (idInteger.intValue() == previousIdInteger.intValue()) { - count++; - } else { - idCountList.add(count); - count = 1; - } - } - if (i == columnCount) { - idCountList.add(count); - } - previousIdInteger = idInteger; - } catch (Exception e) { - throw new ModelsIllegalargumentException("The id value doesn't seem to be an integer.", this.getClass() - .getSimpleName()); - } - } - - if (rowsIterator.hasNext()) { - String[] row = getExpectedRow(rowsIterator, expectedTimestamp); - - int idCountIndex = 0; - for( int i = 2; i < row.length; i++ ) { - Integer id = idList.get(i - 2); - Integer idCount = idCountList.get(idCountIndex); - double[] values = outData.get(id); - if (values == null) { - values = new double[idCount]; - outData.put(id, values); - } - for( int j = 0; j < idCount; j++, i++ ) { - if (row[i] == null || row[i].length() == 0) { - values[j] = novalue; - } else { - String valueStr = row[i].trim(); - if (valueStr.equals(fileNovalue)) { - values[j] = novalue; - } else { - values[j] = Double.parseDouble(valueStr); - } - } - } - idCountIndex++; - i--; - } - } else { - outData = null; - } - - // time ran out - if (tEnd != null && tCurrent.equals(tEnd)) { - doProcess = false; - } - // data ran out - if (!rowsIterator.hasNext()) { - doProcess = false; - } - } - - /** - * Get the needed datarow from the table. - * - * @param tableRowIterator - * @return the row that is aligned with the expected timestep. - * @throws IOException if the expected timestep is < than the current. - */ - private String[] getExpectedRow( TableIterator tableRowIterator, DateTime expectedDT ) throws IOException { - while( tableRowIterator.hasNext() ) { - String[] row = tableRowIterator.next(); - DateTime currentTimestamp = formatter.parseDateTime(row[1]); - if (currentTimestamp.equals(expectedDT)) { - if (pNum == 1) { - return row; - } else { - String[][] allRows = new String[pNum][]; - allRows[0] = row; - int rowNum = 1; - for( int i = 1; i < pNum; i++ ) { - if (tableRowIterator.hasNext()) { - String[] nextRow = tableRowIterator.next(); - allRows[i] = nextRow; - rowNum++; - } - } - // now aggregate - String[] aggregatedRow = new String[row.length]; - // date is the one of the first instant - aggregatedRow[0] = allRows[0][0]; - aggregatedRow[1] = allRows[0][1]; - for( int col = 2; col < allRows[0].length; col++ ) { - - boolean hasOne = false; - switch( pAggregation ) { - case 0: - double sum = 0; - for( int j = 0; j < rowNum; j++ ) { - String valueStr = allRows[j][col]; - if (!valueStr.equals(fileNovalue)) { - double value = Double.parseDouble(valueStr); - sum = sum + value; - hasOne = true; - } - } - if (!hasOne) { - sum = doubleNovalue; - } - aggregatedRow[col] = String.valueOf(sum); - break; - case 1: - double avg = 0; - for( int j = 0; j < rowNum; j++ ) { - String valueStr = allRows[j][col]; - if (!valueStr.equals(fileNovalue)) { - double value = Double.parseDouble(valueStr); - avg = avg + value; - hasOne = true; - } - } - if (!hasOne) { - avg = doubleNovalue; - } else { - avg = avg / pNum; - } - aggregatedRow[col] = String.valueOf(avg); - break; - - default: - break; - } - - } - return aggregatedRow; - } - } else if (currentTimestamp.isBefore(expectedDT)) { - // browse until the instant is found - continue; - } else if (currentTimestamp.isAfter(expectedDT)) { - /* - * lost the moment, for now throw exception. - * Could be enhanced in future. - */ - String message = "The data are not aligned with the simulation interval (" + currentTimestamp + "/" + expectedDT - + "). Check your data file: " + file; - throw new IOException(message); - } - - } - return null; - } - - @Finalize - public void close() throws IOException { - rowsIterator.close(); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.timedependent; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Initialize; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.io.CSTable; +import oms3.io.DataIO; +import oms3.io.TableIterator; + +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormatter; + +@Description("Utility class for reading data from a OMS formatted csv file. The file needs a metadata line containing the id of the station. The table is supposed to have a first column of timestamp and all olther columns of data related to the ids defined.") +@Documentation("TimeSeriesIteratorReader.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Reading") +@Label(JGTConstants.HASHMAP_READER) +@Name("tsitreader") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class TimeSeriesIteratorReader extends JGTModel { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The id metadata field.") + @In + public String idfield = "ID"; + + @Description("The file novalue to be translated into the internal novalue. Can be a string also") + @In + public String fileNovalue = "-9999.0"; + + @Description("The internal novalue to use (usually not changed).") + @In + public double novalue = JGTConstants.doubleNovalue; + + @Description("The number of rows to aggregate (default is 1, i.e. no aggregation).") + @In + public int pNum = 1; + + @Description("The aggregation type to use (0 = sum, 1 = avg).") + @In + public int pAggregation = 0; + + @Description("The time at which start to read (format: yyyy-MM-dd HH:mm ).") + @In + @Out + public String tStart; + + @Description("The time at which end to read (format: yyyy-MM-dd HH:mm ).") + @In + @Out + public String tEnd; + + @Description("The reading timestep in minutes.") + @In + @Out + public int tTimestep; + + @Description("The current time read (format: yyyy-MM-dd HH:mm ).") + @Out + public String tCurrent; + + @Description("The previous time read (format: yyyy-MM-dd HH:mm ).") + @Out + public String tPrevious; + + @Description("The read map of ids and values.") + @Out + public HashMap outData; + + private TableIterator rowsIterator; + + private CSTable table; + + private DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; + + private DateTime expectedTimestamp = null; + + @Initialize + public void initProcess() { + // activate time + doProcess = true; + + } + private void ensureOpen() throws IOException { + if (table == null) { + table = DataIO.table(new File(file), null); + rowsIterator = (TableIterator) table.rows().iterator(); + /* + * If tStart is null then the reader try to read all the value in the file, nb time step constant. + */ + if (tStart == null) { + String secondTime = null; + // get the first time in the file. + if (rowsIterator.hasNext()) { + String[] row = rowsIterator.next(); + tStart = row[1]; + } + // get the time of the second row in the file. + if (rowsIterator.hasNext()) { + String[] row = rowsIterator.next(); + secondTime = row[1]; + } + // the dt is equal to the fifference of the time of 2 rows. + tTimestep = formatter.parseDateTime(secondTime).getMinuteOfDay() + - formatter.parseDateTime(tStart).getMinuteOfDay(); + // close and reopen to read the row. + rowsIterator.close(); + rowsIterator = (TableIterator) table.rows().iterator(); + } + + } + } + + @Execute + public void nextRecord() throws IOException { + ensureOpen(); + if (tCurrent == null) { + tPrevious = null; + tCurrent = tStart.trim(); + expectedTimestamp = formatter.parseDateTime(tCurrent); + } else { + + tPrevious = tCurrent; + expectedTimestamp = expectedTimestamp.plusMinutes(tTimestep); + tCurrent = expectedTimestamp.toString(formatter); + } + outData = new HashMap(); + + int columnCount = table.getColumnCount(); + List idList = new ArrayList(); + List idCountList = new ArrayList(); + int count = 0; + Integer previousIdInteger = null; + for( int i = 2; i <= columnCount; i++ ) { + String id = table.getColumnInfo(i).get(idfield); + try { + Integer idInteger = Integer.valueOf(id); + idList.add(idInteger); + if (previousIdInteger == null) { + count++; + } else { + if (idInteger.intValue() == previousIdInteger.intValue()) { + count++; + } else { + idCountList.add(count); + count = 1; + } + } + if (i == columnCount) { + idCountList.add(count); + } + previousIdInteger = idInteger; + } catch (Exception e) { + throw new ModelsIllegalargumentException("The id value doesn't seem to be an integer.", this.getClass() + .getSimpleName()); + } + } + + if (rowsIterator.hasNext()) { + String[] row = getExpectedRow(rowsIterator, expectedTimestamp); + + int idCountIndex = 0; + for( int i = 2; i < row.length; i++ ) { + Integer id = idList.get(i - 2); + Integer idCount = idCountList.get(idCountIndex); + double[] values = outData.get(id); + if (values == null) { + values = new double[idCount]; + outData.put(id, values); + } + for( int j = 0; j < idCount; j++, i++ ) { + if (row[i] == null || row[i].length() == 0) { + values[j] = novalue; + } else { + String valueStr = row[i].trim(); + if (valueStr.equals(fileNovalue)) { + values[j] = novalue; + } else { + values[j] = Double.parseDouble(valueStr); + } + } + } + idCountIndex++; + i--; + } + } else { + outData = null; + } + + // time ran out + if (tEnd != null && tCurrent.equals(tEnd)) { + doProcess = false; + } + // data ran out + if (!rowsIterator.hasNext()) { + doProcess = false; + } + } + + /** + * Get the needed datarow from the table. + * + * @param tableRowIterator + * @return the row that is aligned with the expected timestep. + * @throws IOException if the expected timestep is < than the current. + */ + private String[] getExpectedRow( TableIterator tableRowIterator, DateTime expectedDT ) throws IOException { + while( tableRowIterator.hasNext() ) { + String[] row = tableRowIterator.next(); + DateTime currentTimestamp = formatter.parseDateTime(row[1]); + if (currentTimestamp.equals(expectedDT)) { + if (pNum == 1) { + return row; + } else { + String[][] allRows = new String[pNum][]; + allRows[0] = row; + int rowNum = 1; + for( int i = 1; i < pNum; i++ ) { + if (tableRowIterator.hasNext()) { + String[] nextRow = tableRowIterator.next(); + allRows[i] = nextRow; + rowNum++; + } + } + // now aggregate + String[] aggregatedRow = new String[row.length]; + // date is the one of the first instant + aggregatedRow[0] = allRows[0][0]; + aggregatedRow[1] = allRows[0][1]; + for( int col = 2; col < allRows[0].length; col++ ) { + + boolean hasOne = false; + switch( pAggregation ) { + case 0: + double sum = 0; + for( int j = 0; j < rowNum; j++ ) { + String valueStr = allRows[j][col]; + if (!valueStr.equals(fileNovalue)) { + double value = Double.parseDouble(valueStr); + sum = sum + value; + hasOne = true; + } + } + if (!hasOne) { + sum = doubleNovalue; + } + aggregatedRow[col] = String.valueOf(sum); + break; + case 1: + double avg = 0; + for( int j = 0; j < rowNum; j++ ) { + String valueStr = allRows[j][col]; + if (!valueStr.equals(fileNovalue)) { + double value = Double.parseDouble(valueStr); + avg = avg + value; + hasOne = true; + } + } + if (!hasOne) { + avg = doubleNovalue; + } else { + avg = avg / pNum; + } + aggregatedRow[col] = String.valueOf(avg); + break; + + default: + break; + } + + } + return aggregatedRow; + } + } else if (currentTimestamp.isBefore(expectedDT)) { + // browse until the instant is found + continue; + } else if (currentTimestamp.isAfter(expectedDT)) { + /* + * lost the moment, for now throw exception. + * Could be enhanced in future. + */ + String message = "The data are not aligned with the simulation interval (" + currentTimestamp + "/" + expectedDT + + "). Check your data file: " + file; + throw new IOException(message); + } + + } + return null; + } + + @Finalize + public void close() throws IOException { + rowsIterator.close(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorWriter.java index 0ea1f4567..30119e0ee 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorWriter.java @@ -1,216 +1,216 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.timedependent; - -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; -import java.util.Set; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.io.DataIO; -import oms3.io.MemoryTable; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormatter; - -@Description("Utility class for writing a id2values map to a OMS formatted csv file.") -@Documentation("TimeSeriesIteratorWriter.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Writing") -@Label(JGTConstants.HASHMAP_WRITER) -@Name("tsitwriter") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class TimeSeriesIteratorWriter { - @Description("The csv file to write to.") - @UI(JGTConstants.FILEOUT_UI_HINT) - @In - public String file = null; - - @Description("The table name.") - @In - public String inTablename = "table"; - - @Description("The hashmap of ids and values to write.") - @In - public HashMap inData; - - @Description("The start date. If available time is added as first column.") - @In - public String tStart; - - @Description("The timestep. If available time is added as first column.") - @In - public int tTimestep = -1; - - @Description("The novalue to use in the file (default is -9999.0).") - @In - public String fileNovalue = "-9999.0"; - - private MemoryTable memoryTable; - - private DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; - private String formatterPattern = JGTConstants.utcDateFormatterYYYYMMDDHHMM_string; - - private DateTime runningDateTime; - - private boolean columnNamesAreSet = false; - - private void ensureOpen() throws IOException { - if (memoryTable == null) { - memoryTable = new MemoryTable(); - memoryTable.setName(inTablename); - memoryTable.getInfo().put("Created", new DateTime().toString(formatter)); - memoryTable.getInfo().put("Author", "HortonMachine library"); - - if (tStart != null && tTimestep != -1) { - // add time column - runningDateTime = formatter.parseDateTime(tStart); - } - } - } - - @Execute - public void writeNextLine() throws IOException { - ensureOpen(); - List idsList = new ArrayList(); - List columnNamesList = new ArrayList(); - List uniqueIdsList = new ArrayList(); - if (!columnNamesAreSet) { - Set> inDataSet = inData.entrySet(); - for( Entry inDataEntry : inDataSet ) { - Integer id = inDataEntry.getKey(); - double[] values = inDataEntry.getValue(); - - if (values.length == 1) { - StringBuilder sb = new StringBuilder(); - sb.append("value_"); - sb.append(id); - columnNamesList.add(sb.toString()); - idsList.add(id); - } else { - for( int i = 0; i < values.length; i++ ) { - StringBuilder sb = new StringBuilder(); - sb.append("value_"); - sb.append(id); - sb.append("_"); - sb.append(i); - columnNamesList.add(sb.toString()); - idsList.add(id); - } - } - } - - for( Integer tmpId : idsList ) { - if (!uniqueIdsList.contains(tmpId)) { - uniqueIdsList.add(tmpId); - } - } - - // column names - int index = 0; - if (runningDateTime != null) { - columnNamesList.add(0, "timestamp"); - index = 1; - } - - String[] columnNames = columnNamesList.toArray(new String[0]); - memoryTable.setColumns(columnNames); - - // ids - index = 0; - if (runningDateTime != null) { - memoryTable.getColumnInfo(1).put("ID", ""); - index = 1; - } - int k = 0; - for( Integer id : idsList ) { - memoryTable.getColumnInfo(k + 1 + index).put("ID", String.valueOf(id)); - k++; - } - - // data types - index = 0; - if (runningDateTime != null) { - memoryTable.getColumnInfo(1).put("Type", "Date"); - index = 1; - } - for( int j = 0; j < idsList.size(); j++ ) { - memoryTable.getColumnInfo(j + 1 + index).put("Type", "Double"); - } - - // data formats - index = 0; - if (runningDateTime != null) { - memoryTable.getColumnInfo(1).put("Format", formatterPattern); - index = 1; - } - for( int j = 0; j < idsList.size(); j++ ) { - memoryTable.getColumnInfo(j + 1 + index).put("Format", ""); - } - - } - - Object[] valuesRow = null; - int index = 0; - if (runningDateTime != null) { - valuesRow = new Object[columnNamesList.size()]; - valuesRow[0] = runningDateTime.toString(formatter); - index = 1; - } else { - valuesRow = new Object[columnNamesList.size() - 1]; - } - for( Integer id : uniqueIdsList ) { - double[] dataArray = inData.get(id); - for( double value : dataArray ) { - if (JGTConstants.isNovalue(value)) { - valuesRow[index++] = fileNovalue; - } else { - valuesRow[index++] = String.valueOf(value); - } - } - } - memoryTable.addRow(valuesRow); - - if (runningDateTime != null) { - runningDateTime = runningDateTime.plusMinutes(tTimestep); - } - } - - @Finalize - public void close() throws IOException { - DataIO.print(memoryTable, new PrintWriter(new File(file))); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.timedependent; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.io.DataIO; +import oms3.io.MemoryTable; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormatter; + +@Description("Utility class for writing a id2values map to a OMS formatted csv file.") +@Documentation("TimeSeriesIteratorWriter.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Writing") +@Label(JGTConstants.HASHMAP_WRITER) +@Name("tsitwriter") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class TimeSeriesIteratorWriter { + @Description("The csv file to write to.") + @UI(JGTConstants.FILEOUT_UI_HINT) + @In + public String file = null; + + @Description("The table name.") + @In + public String inTablename = "table"; + + @Description("The hashmap of ids and values to write.") + @In + public HashMap inData; + + @Description("The start date. If available time is added as first column.") + @In + public String tStart; + + @Description("The timestep. If available time is added as first column.") + @In + public int tTimestep = -1; + + @Description("The novalue to use in the file (default is -9999.0).") + @In + public String fileNovalue = "-9999.0"; + + private MemoryTable memoryTable; + + private DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; + private String formatterPattern = JGTConstants.utcDateFormatterYYYYMMDDHHMM_string; + + private DateTime runningDateTime; + + private boolean columnNamesAreSet = false; + + private void ensureOpen() throws IOException { + if (memoryTable == null) { + memoryTable = new MemoryTable(); + memoryTable.setName(inTablename); + memoryTable.getInfo().put("Created", new DateTime().toString(formatter)); + memoryTable.getInfo().put("Author", "HortonMachine library"); + + if (tStart != null && tTimestep != -1) { + // add time column + runningDateTime = formatter.parseDateTime(tStart); + } + } + } + + @Execute + public void writeNextLine() throws IOException { + ensureOpen(); + List idsList = new ArrayList(); + List columnNamesList = new ArrayList(); + List uniqueIdsList = new ArrayList(); + if (!columnNamesAreSet) { + Set> inDataSet = inData.entrySet(); + for( Entry inDataEntry : inDataSet ) { + Integer id = inDataEntry.getKey(); + double[] values = inDataEntry.getValue(); + + if (values.length == 1) { + StringBuilder sb = new StringBuilder(); + sb.append("value_"); + sb.append(id); + columnNamesList.add(sb.toString()); + idsList.add(id); + } else { + for( int i = 0; i < values.length; i++ ) { + StringBuilder sb = new StringBuilder(); + sb.append("value_"); + sb.append(id); + sb.append("_"); + sb.append(i); + columnNamesList.add(sb.toString()); + idsList.add(id); + } + } + } + + for( Integer tmpId : idsList ) { + if (!uniqueIdsList.contains(tmpId)) { + uniqueIdsList.add(tmpId); + } + } + + // column names + int index = 0; + if (runningDateTime != null) { + columnNamesList.add(0, "timestamp"); + index = 1; + } + + String[] columnNames = columnNamesList.toArray(new String[0]); + memoryTable.setColumns(columnNames); + + // ids + index = 0; + if (runningDateTime != null) { + memoryTable.getColumnInfo(1).put("ID", ""); + index = 1; + } + int k = 0; + for( Integer id : idsList ) { + memoryTable.getColumnInfo(k + 1 + index).put("ID", String.valueOf(id)); + k++; + } + + // data types + index = 0; + if (runningDateTime != null) { + memoryTable.getColumnInfo(1).put("Type", "Date"); + index = 1; + } + for( int j = 0; j < idsList.size(); j++ ) { + memoryTable.getColumnInfo(j + 1 + index).put("Type", "Double"); + } + + // data formats + index = 0; + if (runningDateTime != null) { + memoryTable.getColumnInfo(1).put("Format", formatterPattern); + index = 1; + } + for( int j = 0; j < idsList.size(); j++ ) { + memoryTable.getColumnInfo(j + 1 + index).put("Format", ""); + } + + } + + Object[] valuesRow = null; + int index = 0; + if (runningDateTime != null) { + valuesRow = new Object[columnNamesList.size()]; + valuesRow[0] = runningDateTime.toString(formatter); + index = 1; + } else { + valuesRow = new Object[columnNamesList.size() - 1]; + } + for( Integer id : uniqueIdsList ) { + double[] dataArray = inData.get(id); + for( double value : dataArray ) { + if (JGTConstants.isNovalue(value)) { + valuesRow[index++] = fileNovalue; + } else { + valuesRow[index++] = String.valueOf(value); + } + } + } + memoryTable.addRow(valuesRow); + + if (runningDateTime != null) { + runningDateTime = runningDateTime.plusMinutes(tTimestep); + } + } + + @Finalize + public void close() throws IOException { + DataIO.print(memoryTable, new PrintWriter(new File(file))); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/timeseries/TimeSeriesReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/timeseries/TimeSeriesReader.java index 63b0a93cc..57d06b9c5 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/timeseries/TimeSeriesReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/timeseries/TimeSeriesReader.java @@ -1,116 +1,116 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.timeseries; - -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.LinkedHashMap; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.io.CSTable; -import oms3.io.DataIO; -import oms3.io.TableIterator; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormatter; - -@Description("Utility class for reading data from a OMS formatted csv file. The data is assumed to be first col a date and then al numbers.") -@Documentation("TimeSeriesReader.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Reading") -@Label(JGTConstants.HASHMAP_READER) -@Name("tsreader") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class TimeSeriesReader extends JGTModel { - @Description("The csv file to read from.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The file novalue to be translated into the internal novalue (defaults to -9999.0). Can be also a string.") - @In - public String fileNovalue = "-9999.0"; - - @Description("The internal novalue to use (defaults to NaN).") - @In - public double novalue = JGTConstants.doubleNovalue; - - @Description("The sorted hashmap of read data.") - @Out - public HashMap outData; - - private TableIterator rowsIterator; - - private CSTable table; - - private DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; - - private void ensureOpen() throws IOException { - if (table == null) { - table = DataIO.table(new File(file), null); - rowsIterator = (TableIterator) table.rows().iterator(); - outData = new LinkedHashMap(); - } - } - - @Execute - public void read() throws IOException { - ensureOpen(); - while( rowsIterator.hasNext() ) { - String[] row = rowsIterator.next(); - double[] record = new double[row.length - 2]; - for( int i = 2; i < row.length; i++ ) { - double value = -1; - if (row[i] == null || row[i].length() == 0) { - value = novalue; - } else { - String valueStr = row[i]; - if (valueStr.trim().equals(fileNovalue)) { - value = novalue; - } else { - value = Double.parseDouble(valueStr); - } - } - record[i - 2] = value; - } - - outData.put(formatter.parseDateTime(row[1]), record); - } - } - - @Finalize - public void close() throws IOException { - rowsIterator.close(); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.timeseries; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.LinkedHashMap; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.io.CSTable; +import oms3.io.DataIO; +import oms3.io.TableIterator; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormatter; + +@Description("Utility class for reading data from a OMS formatted csv file. The data is assumed to be first col a date and then al numbers.") +@Documentation("TimeSeriesReader.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Reading") +@Label(JGTConstants.HASHMAP_READER) +@Name("tsreader") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class TimeSeriesReader extends JGTModel { + @Description("The csv file to read from.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The file novalue to be translated into the internal novalue (defaults to -9999.0). Can be also a string.") + @In + public String fileNovalue = "-9999.0"; + + @Description("The internal novalue to use (defaults to NaN).") + @In + public double novalue = JGTConstants.doubleNovalue; + + @Description("The sorted hashmap of read data.") + @Out + public HashMap outData; + + private TableIterator rowsIterator; + + private CSTable table; + + private DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; + + private void ensureOpen() throws IOException { + if (table == null) { + table = DataIO.table(new File(file), null); + rowsIterator = (TableIterator) table.rows().iterator(); + outData = new LinkedHashMap(); + } + } + + @Execute + public void read() throws IOException { + ensureOpen(); + while( rowsIterator.hasNext() ) { + String[] row = rowsIterator.next(); + double[] record = new double[row.length - 2]; + for( int i = 2; i < row.length; i++ ) { + double value = -1; + if (row[i] == null || row[i].length() == 0) { + value = novalue; + } else { + String valueStr = row[i]; + if (valueStr.trim().equals(fileNovalue)) { + value = novalue; + } else { + value = Double.parseDouble(valueStr); + } + } + record[i - 2] = value; + } + + outData.put(formatter.parseDateTime(row[1]), record); + } + } + + @Finalize + public void close() throws IOException { + rowsIterator.close(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/timeseries/TimeSeriesWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/timeseries/TimeSeriesWriter.java index 24d1ea1b2..35deed708 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/timeseries/TimeSeriesWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/timeseries/TimeSeriesWriter.java @@ -1,188 +1,188 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.timeseries; - -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; -import java.util.Set; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.Finalize; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.io.DataIO; -import oms3.io.MemoryTable; - -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.joda.time.DateTime; -import org.joda.time.Interval; -import org.joda.time.format.DateTimeFormatter; - -@Description("Utility class for writing a set of timestamps and an array of values to an OMS formatted csv file.") -@Documentation("TimeSeriesWriter.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Writing") -@Label(JGTConstants.HASHMAP_WRITER) -@Name("tswriter") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class TimeSeriesWriter { - @Description("The csv file to write to.") - @UI(JGTConstants.FILEOUT_UI_HINT) - @In - public String file = null; - - @Description("The table name.") - @In - public String tablename = "table"; - - @Description("The hashmap of data to write. IMPORTANT: The hashmap is assumed to be sorted.") - @In - public HashMap inData; - - @Description("A switch that defines whether to write the timestamps as dates or as intervals of seconds if a date doesn't make sense.") - @In - public boolean doDates = true; - - @Description("The comma separated list of column names.") - @In - public String columns = null; - - @Description("A list of lists of metadata that can be attached to the column of the csv file.") - @In - public List> inMetadata = null; - - private MemoryTable memoryTable; - - private DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; - private String formatterPattern = JGTConstants.utcDateFormatterYYYYMMDDHHMM_string; - - private void ensureOpen() throws IOException { - if (memoryTable == null) { - memoryTable = new MemoryTable(); - memoryTable.setName(tablename); - memoryTable.getInfo().put("Created", new DateTime().toString(formatter)); - memoryTable.getInfo().put("Author", "JGrasstools"); - } - } - - @Execute - public void write() throws IOException { - ensureOpen(); - - Set> entrySet = inData.entrySet(); - if (entrySet.isEmpty()) { - throw new ModelsIllegalargumentException("The data to write are empty.", this); - } - Entry firstItem = entrySet.iterator().next(); - - int cols = firstItem.getValue().length + 1; - if (columns != null) { - String[] colNames = columns.split(","); - for( int i = 0; i < colNames.length; i++ ) { - colNames[i] = colNames[i].trim(); - } - memoryTable.setColumns(colNames); - } else { - String[] colNames = new String[cols]; - colNames[0] = "date"; - for( int i = 1; i < colNames.length; i++ ) { - colNames[i] = "value_" + i; - } - memoryTable.setColumns(colNames); - } - - if (inMetadata != null && inMetadata.size() > 0) { - for( List metadataRecord : inMetadata ) { - String metadataName = metadataRecord.get(0); - for( int i = 1; i < metadataRecord.size(); i++ ) { - memoryTable.getColumnInfo(i).put(metadataName, metadataRecord.get(i - 1)); - } - } - } - if (doDates) { - // add date metadata if they are not already provided - boolean hasFormat = false; - boolean hasType = false; - if (inMetadata != null && inMetadata.size() > 0) { - hasFormat = false; - for( List metadataRecord : inMetadata ) { - if (metadataRecord.contains("Format")) { - hasFormat = true; - break; - } - } - hasType = false; - for( List metadataRecord : inMetadata ) { - if (metadataRecord.contains("Type")) { - hasType = true; - break; - } - } - } - if (!hasFormat) { - memoryTable.getColumnInfo(1).put("Format", formatterPattern); - for( int i = 2; i <= cols; i++ ) { - memoryTable.getColumnInfo(i).put("Format", ""); - } - } - if (!hasType) { - memoryTable.getColumnInfo(1).put("Type", "Date"); - for( int i = 2; i <= cols; i++ ) { - memoryTable.getColumnInfo(i).put("Type", ""); - } - } - } - - for( Entry entry : entrySet ) { - Object[] valuesRow = new Object[cols]; - - DateTime dateTime = entry.getKey(); - if (doDates) { - valuesRow[0] = dateTime.toString(formatter); - } else { - Interval interval = new Interval(firstItem.getKey(), dateTime); - long dt = interval.toDuration().getStandardSeconds(); - valuesRow[0] = dt; - } - - double[] valuesArray = entry.getValue(); - for( int j = 0; j < valuesArray.length; j++ ) { - valuesRow[j + 1] = valuesArray[j]; - } - memoryTable.addRow(valuesRow); - } - } - @Finalize - public void close() throws IOException { - DataIO.print(memoryTable, new PrintWriter(new File(file))); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.timeseries; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.Finalize; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.io.DataIO; +import oms3.io.MemoryTable; + +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.joda.time.DateTime; +import org.joda.time.Interval; +import org.joda.time.format.DateTimeFormatter; + +@Description("Utility class for writing a set of timestamps and an array of values to an OMS formatted csv file.") +@Documentation("TimeSeriesWriter.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Writing") +@Label(JGTConstants.HASHMAP_WRITER) +@Name("tswriter") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class TimeSeriesWriter { + @Description("The csv file to write to.") + @UI(JGTConstants.FILEOUT_UI_HINT) + @In + public String file = null; + + @Description("The table name.") + @In + public String tablename = "table"; + + @Description("The hashmap of data to write. IMPORTANT: The hashmap is assumed to be sorted.") + @In + public HashMap inData; + + @Description("A switch that defines whether to write the timestamps as dates or as intervals of seconds if a date doesn't make sense.") + @In + public boolean doDates = true; + + @Description("The comma separated list of column names.") + @In + public String columns = null; + + @Description("A list of lists of metadata that can be attached to the column of the csv file.") + @In + public List> inMetadata = null; + + private MemoryTable memoryTable; + + private DateTimeFormatter formatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; + private String formatterPattern = JGTConstants.utcDateFormatterYYYYMMDDHHMM_string; + + private void ensureOpen() throws IOException { + if (memoryTable == null) { + memoryTable = new MemoryTable(); + memoryTable.setName(tablename); + memoryTable.getInfo().put("Created", new DateTime().toString(formatter)); + memoryTable.getInfo().put("Author", "JGrasstools"); + } + } + + @Execute + public void write() throws IOException { + ensureOpen(); + + Set> entrySet = inData.entrySet(); + if (entrySet.isEmpty()) { + throw new ModelsIllegalargumentException("The data to write are empty.", this); + } + Entry firstItem = entrySet.iterator().next(); + + int cols = firstItem.getValue().length + 1; + if (columns != null) { + String[] colNames = columns.split(","); + for( int i = 0; i < colNames.length; i++ ) { + colNames[i] = colNames[i].trim(); + } + memoryTable.setColumns(colNames); + } else { + String[] colNames = new String[cols]; + colNames[0] = "date"; + for( int i = 1; i < colNames.length; i++ ) { + colNames[i] = "value_" + i; + } + memoryTable.setColumns(colNames); + } + + if (inMetadata != null && inMetadata.size() > 0) { + for( List metadataRecord : inMetadata ) { + String metadataName = metadataRecord.get(0); + for( int i = 1; i < metadataRecord.size(); i++ ) { + memoryTable.getColumnInfo(i).put(metadataName, metadataRecord.get(i - 1)); + } + } + } + if (doDates) { + // add date metadata if they are not already provided + boolean hasFormat = false; + boolean hasType = false; + if (inMetadata != null && inMetadata.size() > 0) { + hasFormat = false; + for( List metadataRecord : inMetadata ) { + if (metadataRecord.contains("Format")) { + hasFormat = true; + break; + } + } + hasType = false; + for( List metadataRecord : inMetadata ) { + if (metadataRecord.contains("Type")) { + hasType = true; + break; + } + } + } + if (!hasFormat) { + memoryTable.getColumnInfo(1).put("Format", formatterPattern); + for( int i = 2; i <= cols; i++ ) { + memoryTable.getColumnInfo(i).put("Format", ""); + } + } + if (!hasType) { + memoryTable.getColumnInfo(1).put("Type", "Date"); + for( int i = 2; i <= cols; i++ ) { + memoryTable.getColumnInfo(i).put("Type", ""); + } + } + } + + for( Entry entry : entrySet ) { + Object[] valuesRow = new Object[cols]; + + DateTime dateTime = entry.getKey(); + if (doDates) { + valuesRow[0] = dateTime.toString(formatter); + } else { + Interval interval = new Interval(firstItem.getKey(), dateTime); + long dt = interval.toDuration().getStandardSeconds(); + valuesRow[0] = dt; + } + + double[] valuesArray = entry.getValue(); + for( int j = 0; j < valuesArray.length; j++ ) { + valuesRow[j + 1] = valuesArray[j]; + } + memoryTable.addRow(valuesRow); + } + } + @Finalize + public void close() throws IOException { + DataIO.print(memoryTable, new PrintWriter(new File(file))); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/vectorreader/VectorReader.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/vectorreader/VectorReader.java index 23c4a988c..d645cd2bc 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/vectorreader/VectorReader.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/vectorreader/VectorReader.java @@ -1,136 +1,136 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.vectorreader; - -import java.io.File; -import java.io.IOException; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollection; -import org.geotools.geometry.jts.ReferencedEnvelope; -import org.jgrasstools.gears.io.properties.PropertiesFeatureReader; -import org.jgrasstools.gears.io.shapefile.ShapefileFeatureReader; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Vectors features reader module.") -@Documentation("VectorReader.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Shapefile, Feature, Vector, Reading") -@Label(JGTConstants.FEATUREREADER) -@Name("vectorreader") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class VectorReader extends JGTModel { - @Description("The vector type to read (Supported is: shp, properties).") - @In - // currently not used, for future compatibility - public String pType = null; - - @Description("The vector file to read.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The read feature collection.") - @Out - public SimpleFeatureCollection outVector = null; - - @Execute - public void process() throws IOException { - if (!concatOr(outVector == null, doReset)) { - return; - } - - checkNull(file); - - File vectorFile = new File(file); - String name = vectorFile.getName(); - if (name.toLowerCase().endsWith("shp")) { - ShapefileFeatureReader reader = new ShapefileFeatureReader(); - reader.file = vectorFile.getAbsolutePath(); - reader.pm = pm; - reader.readFeatureCollection(); - outVector = reader.geodata; - } else if (name.toLowerCase().endsWith("properties")) { - outVector = PropertiesFeatureReader.readPropertiesfile(vectorFile.getAbsolutePath()); - } else { - throw new IOException("Format is currently not supported for file: " + name); - } - } - - /** - * Fast read access mode. - * - * @param path the vector file path. - * @return the read {@link FeatureCollection}. - * @throws IOException - */ - public static SimpleFeatureCollection readVector( String path ) throws IOException { - SimpleFeatureCollection fc = getFC(path); - return fc; - } - - private static SimpleFeatureCollection getFC( String path ) throws IOException { - VectorReader reader = new VectorReader(); - reader.file = path; - reader.process(); - SimpleFeatureCollection fc = reader.outVector; - return fc; - } - - /** - * Fast reading of the bounds of a vector dataset. - * - * @param path the vector file path. - * @return the array containing the bounds as [n, s, e, w]. - * @throws IOException - */ - public static double[] readBounds( String path ) throws IOException { - SimpleFeatureCollection fc = getFC(path); - ReferencedEnvelope bounds = fc.getBounds(); - - double[] nsew = {// - bounds.getMaxY(), // - bounds.getMinY(), // - bounds.getMaxX(), // - bounds.getMinX() // - }; - return nsew; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.vectorreader; + +import java.io.File; +import java.io.IOException; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollection; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.jgrasstools.gears.io.properties.PropertiesFeatureReader; +import org.jgrasstools.gears.io.shapefile.ShapefileFeatureReader; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Vectors features reader module.") +@Documentation("VectorReader.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Shapefile, Feature, Vector, Reading") +@Label(JGTConstants.FEATUREREADER) +@Name("vectorreader") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class VectorReader extends JGTModel { + @Description("The vector type to read (Supported is: shp, properties).") + @In + // currently not used, for future compatibility + public String pType = null; + + @Description("The vector file to read.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The read feature collection.") + @Out + public SimpleFeatureCollection outVector = null; + + @Execute + public void process() throws IOException { + if (!concatOr(outVector == null, doReset)) { + return; + } + + checkNull(file); + + File vectorFile = new File(file); + String name = vectorFile.getName(); + if (name.toLowerCase().endsWith("shp")) { + ShapefileFeatureReader reader = new ShapefileFeatureReader(); + reader.file = vectorFile.getAbsolutePath(); + reader.pm = pm; + reader.readFeatureCollection(); + outVector = reader.geodata; + } else if (name.toLowerCase().endsWith("properties")) { + outVector = PropertiesFeatureReader.readPropertiesfile(vectorFile.getAbsolutePath()); + } else { + throw new IOException("Format is currently not supported for file: " + name); + } + } + + /** + * Fast read access mode. + * + * @param path the vector file path. + * @return the read {@link FeatureCollection}. + * @throws IOException + */ + public static SimpleFeatureCollection readVector( String path ) throws IOException { + SimpleFeatureCollection fc = getFC(path); + return fc; + } + + private static SimpleFeatureCollection getFC( String path ) throws IOException { + VectorReader reader = new VectorReader(); + reader.file = path; + reader.process(); + SimpleFeatureCollection fc = reader.outVector; + return fc; + } + + /** + * Fast reading of the bounds of a vector dataset. + * + * @param path the vector file path. + * @return the array containing the bounds as [n, s, e, w]. + * @throws IOException + */ + public static double[] readBounds( String path ) throws IOException { + SimpleFeatureCollection fc = getFC(path); + ReferencedEnvelope bounds = fc.getBounds(); + + double[] nsew = {// + bounds.getMaxY(), // + bounds.getMinY(), // + bounds.getMaxX(), // + bounds.getMinX() // + }; + return nsew; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/io/vectorwriter/VectorWriter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/io/vectorwriter/VectorWriter.java index 14451785e..35f1c5873 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/io/vectorwriter/VectorWriter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/io/vectorwriter/VectorWriter.java @@ -1,101 +1,101 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.io.vectorwriter; - -import java.io.File; -import java.io.IOException; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollection; -import org.jgrasstools.gears.io.shapefile.ShapefileFeatureWriter; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; - -@Description("Vectors features writer to file module.") -@Documentation("VectorWriter.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Shapefile, Feature, Vector, Writing") -@Label(JGTConstants.FEATUREWRITER) -@Name("vectorwriter") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class VectorWriter extends JGTModel { - @Description("The read feature collection.") - @In - public SimpleFeatureCollection inVector = null; - - @Description("The vector type to write (Supported is: shp).") - @In - // currently not used, for future compatibility - public String pType = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The vector file to write.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Execute - public void process() throws IOException { - checkNull(file); - - File vectorFile = new File(file); - if (inVector.size() == 0) { - pm.message("Warning, not writing an empty vector to file: " + vectorFile.getName()); - return; - } - String name = vectorFile.getName(); - if (name.toLowerCase().endsWith("shp") || (pType != null && pType.equals(JGTConstants.SHP))) { - ShapefileFeatureWriter.writeShapefile(vectorFile.getAbsolutePath(), inVector); - } else { - throw new IOException("Format is currently not supported for file: " + name); - } - } - - /** - * Fast write access mode. - * - * @param path the vector file path. - * @param featureCollection the {@link FeatureCollection} to write. - * @throws IOException - */ - public static void writeVector( String path, SimpleFeatureCollection featureCollection ) throws IOException { - VectorWriter writer = new VectorWriter(); - writer.file = path; - writer.inVector = featureCollection; - writer.process(); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.io.vectorwriter; + +import java.io.File; +import java.io.IOException; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollection; +import org.jgrasstools.gears.io.shapefile.ShapefileFeatureWriter; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; + +@Description("Vectors features writer to file module.") +@Documentation("VectorWriter.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Shapefile, Feature, Vector, Writing") +@Label(JGTConstants.FEATUREWRITER) +@Name("vectorwriter") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class VectorWriter extends JGTModel { + @Description("The read feature collection.") + @In + public SimpleFeatureCollection inVector = null; + + @Description("The vector type to write (Supported is: shp).") + @In + // currently not used, for future compatibility + public String pType = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The vector file to write.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Execute + public void process() throws IOException { + checkNull(file); + + File vectorFile = new File(file); + if (inVector.size() == 0) { + pm.message("Warning, not writing an empty vector to file: " + vectorFile.getName()); + return; + } + String name = vectorFile.getName(); + if (name.toLowerCase().endsWith("shp") || (pType != null && pType.equals(JGTConstants.SHP))) { + ShapefileFeatureWriter.writeShapefile(vectorFile.getAbsolutePath(), inVector); + } else { + throw new IOException("Format is currently not supported for file: " + name); + } + } + + /** + * Fast write access mode. + * + * @param path the vector file path. + * @param featureCollection the {@link FeatureCollection} to write. + * @throws IOException + */ + public static void writeVector( String path, SimpleFeatureCollection featureCollection ) throws IOException { + VectorWriter writer = new VectorWriter(); + writer.file = path; + writer.inVector = featureCollection; + writer.process(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/JGTProcessingRegion.java b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/JGTProcessingRegion.java index ea5ced5c2..7cf042cb0 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/JGTProcessingRegion.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/JGTProcessingRegion.java @@ -1,770 +1,770 @@ -/* - * GeoTools - The Open Source Java GIS Toolkit - * http://geotools.org - * - * (C) 2006-2010, Open Source Geospatial Foundation (OSGeo) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - */ -package org.jgrasstools.gears.libs.modules; - -import java.awt.geom.Rectangle2D; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.geometry.Envelope2D; -import org.geotools.geometry.jts.JTS; -import org.geotools.referencing.CRS; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; -import org.opengis.referencing.operation.MathTransform; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; - -/** - * Represents the processing region. - * - *

                - * Calculations always work against a particular geographic region, which - * contains the boundaries of the region as well as the information of the - * region's resolution and the number of rows and cols of the region. - *

                - *

                - * Warning: since the rows and cols have to be integers, the resolution - * is may be recalculated to fulfill this constraint. Users should not wonder if - * the asked resolution is not available in the supplied boundaries. - *

                - * - * @author Andrea Antonello - www.hydrologis.com - * @since 1.2.1 - * - */ -public class JGTProcessingRegion { - - /** - * The northern boundary of the region. - */ - private double north = Double.NaN; - - /** - * The southern boundary of the region. - */ - private double south = Double.NaN; - - /** - * The western boundary of the region. - */ - private double west = Double.NaN; - - /** - * The eastern boundary of the region. - */ - private double east = Double.NaN; - - /** - * The north-south resolution of the region. - */ - private double ns_res = Double.NaN; - - /** - * The east-west resolution of the region. - */ - private double we_res = Double.NaN; - - /** - * The number of rows of the region. - */ - private int rows = 0; - - /** - * The number of columns of the region. - */ - private int cols = 0; - - /** - * Creates a new instance of {@link JGTProcessingRegion}. - * - *

                - * This constructor may be used when boundaries and number of rows and - * columns are available. - *

                - * - * @param west - * the western boundary. - * @param east - * the eastern boundary. - * @param south - * the southern boundary. - * @param north - * the nothern boundary. - * @param rows - * the number of rows. - * @param cols - * the number of cols. - */ - public JGTProcessingRegion( double west, double east, double south, double north, int rows, int cols ) { - this.west = west; - this.east = east; - this.south = south; - this.north = north; - this.rows = rows; - this.cols = cols; - fixResolution(); - } - - /** - * Creates a new instance of {@link JGTProcessingRegion}. - * - *

                - * This constructor may be used when boundaries and the resolution is - * available. - *

                - * - * @param west - * the western boundary. - * @param east - * the eastern boundary. - * @param south - * the southern boundary. - * @param north - * the northern boundary. - * @param weres - * the east-west resolution. - * @param nsres - * the north -south resolution. - */ - public JGTProcessingRegion( double west, double east, double south, double north, double weres, double nsres ) { - this.west = west; - this.east = east; - this.south = south; - this.north = north; - we_res = weres; - ns_res = nsres; - - fixRowsAndCols(); - fixResolution(); - } - - /** - * Creates a new instance of {@link JGTProcessingRegion} by duplicating an existing - * region. - * - * @param region - * a region from which to take the setting from. - */ - public JGTProcessingRegion( JGTProcessingRegion region ) { - west = region.getWest(); - east = region.getEast(); - south = region.getSouth(); - north = region.getNorth(); - rows = region.getRows(); - cols = region.getCols(); - fixResolution(); - } - - /** - * Creates a new instance of {@link JGTProcessingRegion} from an {@link Envelope2D} - * . - * - * @param envelope2D - * the envelope2D from which to take the setting from. - */ - public JGTProcessingRegion( Envelope2D envelope2D ) { - west = envelope2D.getMinX(); - east = envelope2D.getMaxX(); - south = envelope2D.getMinY(); - north = envelope2D.getMaxY(); - we_res = envelope2D.getHeight(); - ns_res = envelope2D.getWidth(); - - fixRowsAndCols(); - fixResolution(); - } - - /** - * Creates a new instance of {@link JGTProcessingRegion} from a {@link GridCoverage2D coverage}. - * - * @param gridCoverage the gridcoverage from which to take the region. - */ - public JGTProcessingRegion( GridCoverage2D gridCoverage ) { - - HashMap regionParams = CoverageUtilities.getRegionParamsFromGridCoverage(gridCoverage); - - west = regionParams.get(CoverageUtilities.WEST); - east = regionParams.get(CoverageUtilities.EAST); - south = regionParams.get(CoverageUtilities.SOUTH); - north = regionParams.get(CoverageUtilities.NORTH); - we_res = regionParams.get(CoverageUtilities.XRES); - ns_res = regionParams.get(CoverageUtilities.YRES); - - fixRowsAndCols(); - fixResolution(); - } - - /** - * Creates a new instance of {@link JGTProcessingRegion} from given strings. - * - * @param west - * the western boundary string. - * @param east - * the eastern boundary string. - * @param south - * the southern boundary string. - * @param north - * the nothern boundary string. - * @param ewres the x resolution string. - * @param nsres the y resolution string. - */ - public JGTProcessingRegion( String west, String east, String south, String north, String ewres, String nsres ) { - - double[] nsew = nsewStringsToNumbers(north, south, east, west); - double[] xyRes = xyResStringToNumbers(ewres, nsres); - double no = nsew[0]; - double so = nsew[1]; - double ea = nsew[2]; - double we = nsew[3]; - double xres = xyRes[0]; - double yres = xyRes[1]; - - JGTProcessingRegion tmp = new JGTProcessingRegion(we, ea, so, no, xres, yres); - setExtent(tmp); - - } - - /** - * Creates a new instance of {@link JGTProcessingRegion} from given strings. - * - * @param west - * the western boundary string. - * @param east - * the eastern boundary string. - * @param south - * the southern boundary string. - * @param north - * the nothern boundary string. - * @param rows - * the string of rows. - * @param cols - * the string of cols. - */ - public JGTProcessingRegion( String west, String east, String south, String north, int rows, int cols ) { - double[] nsew = nsewStringsToNumbers(north, south, east, west); - double no = nsew[0]; - double so = nsew[1]; - double ea = nsew[2]; - double we = nsew[3]; - JGTProcessingRegion tmp = new JGTProcessingRegion(we, ea, so, no, rows, cols); - setExtent(tmp); - } - - /** - * Sets the extent of this window using another window. - * - * @param win another window object - */ - public void setExtent( JGTProcessingRegion region ) { - west = region.getWest(); - east = region.getEast(); - south = region.getSouth(); - north = region.getNorth(); - rows = region.getRows(); - cols = region.getCols(); - fixResolution(); - fixRowsAndCols(); - } - - /** - * Creates JTS envelope from the current region. - * - * @return the JTS envelope wrapping the current region. - */ - public Envelope getEnvelope() { - return new Envelope(new Coordinate(west, north), new Coordinate(east, south)); - } - - /** - * Creates a {@linkplain Rectangle2D.Double rectangle} from the current - * region. - * - *

                - * Note that the rectangle width and height are world coordinates. - *

                - * - * @return the rectangle wrapping the current region. - */ - public Rectangle2D.Double getRectangle() { - return new Rectangle2D.Double(west, south, east - west, north - south); - } - - @SuppressWarnings("nls") - public String toString() { - return ("region:\nwest=" + west + "\neast=" + east + "\nsouth=" + south + "\nnorth=" + north + "\nwe_res=" + we_res - + "\nns_res=" + ns_res + "\nrows=" + rows + "\ncols=" + cols); - } - - /** - * Reprojects a {@link JGTProcessingRegion region}. - * - * @param sourceCRS - * the original {@link CoordinateReferenceSystem crs} of the - * region. - * @param targetCRS - * the target {@link CoordinateReferenceSystem crs} of the - * region. - * @param lenient - * defines whether to apply a lenient transformation or not. - * @return a new {@link JGTProcessingRegion region}. - * @throws Exception - * exception that may be thrown when applying the - * transformation. - */ - public JGTProcessingRegion reproject( CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS, - boolean lenient ) throws Exception { - - MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, lenient); - Envelope envelope = getEnvelope(); - Envelope targetEnvelope = JTS.transform(envelope, transform); - - return new JGTProcessingRegion(targetEnvelope.getMinX(), targetEnvelope.getMaxX(), targetEnvelope.getMinY(), - targetEnvelope.getMaxY(), getRows(), getCols()); - - } - - /** - * calculates the resolution from the boundaries of the region and the rows - * and cols. - */ - private void fixResolution() { - we_res = (east - west) / cols; - ns_res = (north - south) / rows; - } - - /** - * calculates rows and cols from the region and its resolution. - * - *

                - * Rows and cols have to be integers, rounding is applied if required. - *

                - */ - private void fixRowsAndCols() { - rows = (int) Math.round((north - south) / ns_res); - if (rows < 1) - rows = 1; - cols = (int) Math.round((east - west) / we_res); - if (cols < 1) - cols = 1; - } - - /** - * Snaps a geographic point to be on the region grid. - * - *

                - * Moves the point given by X and Y to be on the grid of the supplied - * region. - *

                - * - * @param x - * the easting of the arbitrary point. - * @param y - * the northing of the arbitrary point. - * @param region - * the active window from which to take the grid. - * @return the snapped coordinate. - */ - public static Coordinate snapToNextHigherInRegionResolution( double x, double y, JGTProcessingRegion region ) { - - double minx = region.getRectangle().getBounds2D().getMinX(); - double ewres = region.getWEResolution(); - double xsnap = minx + (Math.ceil((x - minx) / ewres) * ewres); - - double miny = region.getRectangle().getBounds2D().getMinY(); - double nsres = region.getNSResolution(); - double ysnap = miny + (Math.ceil((y - miny) / nsres) * nsres); - - return new Coordinate(xsnap, ysnap); - - } - - /** - * Creates a region from envelope bounds snapped to a region grid. - * - *

                - * This takes an envelope and a JGrass region and creates a new region to - * match the bounds of the envelope, but the grid of the region. This is - * important if the region has to match some feature layer. - *

                - *

                - * The bounds of the new region contain completely the envelope. - *

                - * - * @param sourceEnvelope - * the envelope to adapt. - * @param sourceRegion - * the region from which to take the grid to be snapped. - * @return a new region, created from the envelope bounds snapped to the - * region grid. - */ - public static JGTProcessingRegion adaptActiveRegionToEnvelope( Envelope sourceEnvelope, JGTProcessingRegion sourceRegion ) { - JGTProcessingRegion newRegion = new JGTProcessingRegion(sourceEnvelope.getMinX(), sourceEnvelope.getMaxX(), - sourceEnvelope.getMinY(), sourceEnvelope.getMaxY(), sourceRegion.getRows(), sourceRegion.getCols()); - return newRegion; - } - - /** - * @param subregionsNum - * @return - */ - public List toSubRegions( int subregionsNum ) { - int tmpR = getRows(); - int tmpC = getCols(); - - double tmpWest = getWest(); - double tmpSouth = getSouth(); - double tmpWERes = getWEResolution(); - double tmpNSRes = getNSResolution(); - - if (subregionsNum > tmpR || subregionsNum > tmpC) { - throw new IllegalArgumentException("The number of subregions has to be smaller than the number of rows and columns."); - } - - int subregRows = (int) Math.floor(tmpR / (double) subregionsNum); - int subregCols = (int) Math.floor(tmpC / (double) subregionsNum); - - List regions = new ArrayList(); - - double runningEasting = tmpWest; - double runningNorthing = tmpSouth; - for( int i = 0; i < subregionsNum; i++ ) { - double n = runningNorthing + subregRows * tmpNSRes; - double s = runningNorthing; - for( int j = 0; j < subregionsNum; j++ ) { - double w = runningEasting; - double e = runningEasting + subregCols * tmpWERes; - - if (e > getEast()) { - e = getEast(); - } - if (n > getNorth()) { - n = getNorth(); - } - - JGTProcessingRegion r = new JGTProcessingRegion(w, e, s, n, tmpWERes, tmpNSRes); - if (r.getWEResolution() == 0 || r.getNSResolution() == 0) { - continue; - } - regions.add(r); - - runningEasting = e; - } - runningEasting = tmpWest; - runningNorthing = n; - } - - return regions; - } - /** - * Reads a region file and sets a given region to the supplied region file. - * - * @param filePath - * the path to the region file. - * @param region - * the region to be set to the region file informations. - */ - @SuppressWarnings("nls") - /** - * Transforms degree string into the decimal value. - * - * @param value the string in degrees. - * @return the translated value. - */ - private double degreeToNumber( String value ) { - double number = -1; - - String[] valueSplit = value.trim().split(":"); //$NON-NLS-1$ - if (valueSplit.length == 3) { - // deg:min:sec.ss - double deg = Double.parseDouble(valueSplit[0]); - double min = Double.parseDouble(valueSplit[1]); - double sec = Double.parseDouble(valueSplit[2]); - number = deg + min / 60.0 + sec / 60.0 / 60.0; - } else if (valueSplit.length == 2) { - // deg:min - double deg = Double.parseDouble(valueSplit[0]); - double min = Double.parseDouble(valueSplit[1]); - number = deg + min / 60.0; - } else if (valueSplit.length == 1) { - // deg - number = Double.parseDouble(valueSplit[0]); - } - return number; - } - - /** - * Transforms a GRASS resolution string in metric or degree to decimal. - * - * @param ewres the x resolution string. - * @param nsres the y resolution string. - * @return the array of x and y resolution doubles. - */ - private double[] xyResStringToNumbers( String ewres, String nsres ) { - double xres = -1.0; - double yres = -1.0; - if (ewres.indexOf(':') != -1) { - xres = degreeToNumber(ewres); - } else { - xres = Double.parseDouble(ewres); - } - if (nsres.indexOf(':') != -1) { - yres = degreeToNumber(nsres); - } else { - yres = Double.parseDouble(nsres); - } - - return new double[]{xres, yres}; - } - - /** - * Transforms the GRASS bounds strings in metric or degree to decimal. - * - * @param north the north string. - * @param south the south string. - * @param east the east string. - * @param west the west string. - * @return the array of the bounds in doubles. - */ - @SuppressWarnings("nls") - private double[] nsewStringsToNumbers( String north, String south, String east, String west ) { - - double no = -1.0; - double so = -1.0; - double ea = -1.0; - double we = -1.0; - - if (north.indexOf("N") != -1 || north.indexOf("n") != -1) { - north = north.substring(0, north.length() - 1); - no = degreeToNumber(north); - } else if (north.indexOf("S") != -1 || north.indexOf("s") != -1) { - north = north.substring(0, north.length() - 1); - no = -degreeToNumber(north); - } else { - no = Double.parseDouble(north); - } - if (south.indexOf("N") != -1 || south.indexOf("n") != -1) { - south = south.substring(0, south.length() - 1); - so = degreeToNumber(south); - } else if (south.indexOf("S") != -1 || south.indexOf("s") != -1) { - south = south.substring(0, south.length() - 1); - so = -degreeToNumber(south); - } else { - so = Double.parseDouble(south); - } - if (west.indexOf("E") != -1 || west.indexOf("e") != -1) { - west = west.substring(0, west.length() - 1); - we = degreeToNumber(west); - } else if (west.indexOf("W") != -1 || west.indexOf("w") != -1) { - west = west.substring(0, west.length() - 1); - we = -degreeToNumber(west); - } else { - we = Double.parseDouble(west); - } - if (east.indexOf("E") != -1 || east.indexOf("e") != -1) { - east = east.substring(0, east.length() - 1); - ea = degreeToNumber(east); - } else if (east.indexOf("W") != -1 || east.indexOf("w") != -1) { - east = east.substring(0, east.length() - 1); - ea = -degreeToNumber(east); - } else { - ea = Double.parseDouble(east); - } - - return new double[]{no, so, ea, we}; - } - - /** - * Getter for north - * - * @return the north - */ - public double getNorth() { - return north; - } - - /** - * Setter for north - * - * @param north - * the north to set - */ - public void setNorth( double north ) { - this.north = north; - } - - /** - * Getter for south - * - * @return the south - */ - public double getSouth() { - return south; - } - - /** - * Setter for south - * - * @param south - * the south to set - */ - public void setSouth( double south ) { - this.south = south; - } - - /** - * Getter for west - * - * @return the west - */ - public double getWest() { - return west; - } - - /** - * Setter for west - * - * @param west - * the west to set - */ - public void setWest( double west ) { - this.west = west; - } - - /** - * Getter for east - * - * @return the east - */ - public double getEast() { - return east; - } - - /** - * Setter for east - * - * @param east - * the east to set - */ - public void setEast( double east ) { - this.east = east; - } - - /** - * Getter for ns_res - * - * @return the ns_res - */ - public double getNSResolution() { - return ns_res; - } - - /** - * Setter for ns_res - * - * @param ns_res - * the ns_res to set - */ - public void setNSResolution( double ns_res ) { - this.ns_res = ns_res; - fixRowsAndCols(); - fixResolution(); - } - - /** - * Getter for we_res - * - * @return the we_res - */ - public double getWEResolution() { - return we_res; - } - - /** - * Setter for we_res - * - * @param we_res - * the we_res to set - */ - public void setWEResolution( double we_res ) { - this.we_res = we_res; - fixRowsAndCols(); - fixResolution(); - } - - /** - * Getter for rows - * - * @return the rows - */ - public int getRows() { - return rows; - } - - /** - * Setter for rows - * - * @param rows - * the rows to set - */ - public void setRows( int rows ) { - this.rows = rows; - fixResolution(); - } - - /** - * Getter for cols. - * - * @return the cols. - */ - public int getCols() { - return cols; - } - - /** - * Setter for cols. - * - * @param cols - * the cols to set. - */ - public void setCols( int cols ) { - this.cols = cols; - fixResolution(); - } - - /** - * Transform the current region into a {@link GridGeometry2D}. - * - * @param crs the {@link CoordinateReferenceSystem} to apply. - * @return the gridgeometry. - */ - public GridGeometry2D getGridGeometry( CoordinateReferenceSystem crs ) { - GridGeometry2D gridGeometry = CoverageUtilities.gridGeometryFromRegionParams(getRegionParams(), crs); - return gridGeometry; - } - - public HashMap getRegionParams() { - HashMap paramsMap = CoverageUtilities.makeRegionParamsMap(north, south, west, east, we_res, ns_res, cols, - rows); - return paramsMap; - } - -} +/* + * GeoTools - The Open Source Java GIS Toolkit + * http://geotools.org + * + * (C) 2006-2010, Open Source Geospatial Foundation (OSGeo) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + */ +package org.jgrasstools.gears.libs.modules; + +import java.awt.geom.Rectangle2D; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.geometry.Envelope2D; +import org.geotools.geometry.jts.JTS; +import org.geotools.referencing.CRS; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.opengis.referencing.operation.MathTransform; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; + +/** + * Represents the processing region. + * + *

                + * Calculations always work against a particular geographic region, which + * contains the boundaries of the region as well as the information of the + * region's resolution and the number of rows and cols of the region. + *

                + *

                + * Warning: since the rows and cols have to be integers, the resolution + * is may be recalculated to fulfill this constraint. Users should not wonder if + * the asked resolution is not available in the supplied boundaries. + *

                + * + * @author Andrea Antonello - www.hydrologis.com + * @since 1.2.1 + * + */ +public class JGTProcessingRegion { + + /** + * The northern boundary of the region. + */ + private double north = Double.NaN; + + /** + * The southern boundary of the region. + */ + private double south = Double.NaN; + + /** + * The western boundary of the region. + */ + private double west = Double.NaN; + + /** + * The eastern boundary of the region. + */ + private double east = Double.NaN; + + /** + * The north-south resolution of the region. + */ + private double ns_res = Double.NaN; + + /** + * The east-west resolution of the region. + */ + private double we_res = Double.NaN; + + /** + * The number of rows of the region. + */ + private int rows = 0; + + /** + * The number of columns of the region. + */ + private int cols = 0; + + /** + * Creates a new instance of {@link JGTProcessingRegion}. + * + *

                + * This constructor may be used when boundaries and number of rows and + * columns are available. + *

                + * + * @param west + * the western boundary. + * @param east + * the eastern boundary. + * @param south + * the southern boundary. + * @param north + * the nothern boundary. + * @param rows + * the number of rows. + * @param cols + * the number of cols. + */ + public JGTProcessingRegion( double west, double east, double south, double north, int rows, int cols ) { + this.west = west; + this.east = east; + this.south = south; + this.north = north; + this.rows = rows; + this.cols = cols; + fixResolution(); + } + + /** + * Creates a new instance of {@link JGTProcessingRegion}. + * + *

                + * This constructor may be used when boundaries and the resolution is + * available. + *

                + * + * @param west + * the western boundary. + * @param east + * the eastern boundary. + * @param south + * the southern boundary. + * @param north + * the northern boundary. + * @param weres + * the east-west resolution. + * @param nsres + * the north -south resolution. + */ + public JGTProcessingRegion( double west, double east, double south, double north, double weres, double nsres ) { + this.west = west; + this.east = east; + this.south = south; + this.north = north; + we_res = weres; + ns_res = nsres; + + fixRowsAndCols(); + fixResolution(); + } + + /** + * Creates a new instance of {@link JGTProcessingRegion} by duplicating an existing + * region. + * + * @param region + * a region from which to take the setting from. + */ + public JGTProcessingRegion( JGTProcessingRegion region ) { + west = region.getWest(); + east = region.getEast(); + south = region.getSouth(); + north = region.getNorth(); + rows = region.getRows(); + cols = region.getCols(); + fixResolution(); + } + + /** + * Creates a new instance of {@link JGTProcessingRegion} from an {@link Envelope2D} + * . + * + * @param envelope2D + * the envelope2D from which to take the setting from. + */ + public JGTProcessingRegion( Envelope2D envelope2D ) { + west = envelope2D.getMinX(); + east = envelope2D.getMaxX(); + south = envelope2D.getMinY(); + north = envelope2D.getMaxY(); + we_res = envelope2D.getHeight(); + ns_res = envelope2D.getWidth(); + + fixRowsAndCols(); + fixResolution(); + } + + /** + * Creates a new instance of {@link JGTProcessingRegion} from a {@link GridCoverage2D coverage}. + * + * @param gridCoverage the gridcoverage from which to take the region. + */ + public JGTProcessingRegion( GridCoverage2D gridCoverage ) { + + HashMap regionParams = CoverageUtilities.getRegionParamsFromGridCoverage(gridCoverage); + + west = regionParams.get(CoverageUtilities.WEST); + east = regionParams.get(CoverageUtilities.EAST); + south = regionParams.get(CoverageUtilities.SOUTH); + north = regionParams.get(CoverageUtilities.NORTH); + we_res = regionParams.get(CoverageUtilities.XRES); + ns_res = regionParams.get(CoverageUtilities.YRES); + + fixRowsAndCols(); + fixResolution(); + } + + /** + * Creates a new instance of {@link JGTProcessingRegion} from given strings. + * + * @param west + * the western boundary string. + * @param east + * the eastern boundary string. + * @param south + * the southern boundary string. + * @param north + * the nothern boundary string. + * @param ewres the x resolution string. + * @param nsres the y resolution string. + */ + public JGTProcessingRegion( String west, String east, String south, String north, String ewres, String nsres ) { + + double[] nsew = nsewStringsToNumbers(north, south, east, west); + double[] xyRes = xyResStringToNumbers(ewres, nsres); + double no = nsew[0]; + double so = nsew[1]; + double ea = nsew[2]; + double we = nsew[3]; + double xres = xyRes[0]; + double yres = xyRes[1]; + + JGTProcessingRegion tmp = new JGTProcessingRegion(we, ea, so, no, xres, yres); + setExtent(tmp); + + } + + /** + * Creates a new instance of {@link JGTProcessingRegion} from given strings. + * + * @param west + * the western boundary string. + * @param east + * the eastern boundary string. + * @param south + * the southern boundary string. + * @param north + * the nothern boundary string. + * @param rows + * the string of rows. + * @param cols + * the string of cols. + */ + public JGTProcessingRegion( String west, String east, String south, String north, int rows, int cols ) { + double[] nsew = nsewStringsToNumbers(north, south, east, west); + double no = nsew[0]; + double so = nsew[1]; + double ea = nsew[2]; + double we = nsew[3]; + JGTProcessingRegion tmp = new JGTProcessingRegion(we, ea, so, no, rows, cols); + setExtent(tmp); + } + + /** + * Sets the extent of this window using another window. + * + * @param win another window object + */ + public void setExtent( JGTProcessingRegion region ) { + west = region.getWest(); + east = region.getEast(); + south = region.getSouth(); + north = region.getNorth(); + rows = region.getRows(); + cols = region.getCols(); + fixResolution(); + fixRowsAndCols(); + } + + /** + * Creates JTS envelope from the current region. + * + * @return the JTS envelope wrapping the current region. + */ + public Envelope getEnvelope() { + return new Envelope(new Coordinate(west, north), new Coordinate(east, south)); + } + + /** + * Creates a {@linkplain Rectangle2D.Double rectangle} from the current + * region. + * + *

                + * Note that the rectangle width and height are world coordinates. + *

                + * + * @return the rectangle wrapping the current region. + */ + public Rectangle2D.Double getRectangle() { + return new Rectangle2D.Double(west, south, east - west, north - south); + } + + @SuppressWarnings("nls") + public String toString() { + return ("region:\nwest=" + west + "\neast=" + east + "\nsouth=" + south + "\nnorth=" + north + "\nwe_res=" + we_res + + "\nns_res=" + ns_res + "\nrows=" + rows + "\ncols=" + cols); + } + + /** + * Reprojects a {@link JGTProcessingRegion region}. + * + * @param sourceCRS + * the original {@link CoordinateReferenceSystem crs} of the + * region. + * @param targetCRS + * the target {@link CoordinateReferenceSystem crs} of the + * region. + * @param lenient + * defines whether to apply a lenient transformation or not. + * @return a new {@link JGTProcessingRegion region}. + * @throws Exception + * exception that may be thrown when applying the + * transformation. + */ + public JGTProcessingRegion reproject( CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS, + boolean lenient ) throws Exception { + + MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, lenient); + Envelope envelope = getEnvelope(); + Envelope targetEnvelope = JTS.transform(envelope, transform); + + return new JGTProcessingRegion(targetEnvelope.getMinX(), targetEnvelope.getMaxX(), targetEnvelope.getMinY(), + targetEnvelope.getMaxY(), getRows(), getCols()); + + } + + /** + * calculates the resolution from the boundaries of the region and the rows + * and cols. + */ + private void fixResolution() { + we_res = (east - west) / cols; + ns_res = (north - south) / rows; + } + + /** + * calculates rows and cols from the region and its resolution. + * + *

                + * Rows and cols have to be integers, rounding is applied if required. + *

                + */ + private void fixRowsAndCols() { + rows = (int) Math.round((north - south) / ns_res); + if (rows < 1) + rows = 1; + cols = (int) Math.round((east - west) / we_res); + if (cols < 1) + cols = 1; + } + + /** + * Snaps a geographic point to be on the region grid. + * + *

                + * Moves the point given by X and Y to be on the grid of the supplied + * region. + *

                + * + * @param x + * the easting of the arbitrary point. + * @param y + * the northing of the arbitrary point. + * @param region + * the active window from which to take the grid. + * @return the snapped coordinate. + */ + public static Coordinate snapToNextHigherInRegionResolution( double x, double y, JGTProcessingRegion region ) { + + double minx = region.getRectangle().getBounds2D().getMinX(); + double ewres = region.getWEResolution(); + double xsnap = minx + (Math.ceil((x - minx) / ewres) * ewres); + + double miny = region.getRectangle().getBounds2D().getMinY(); + double nsres = region.getNSResolution(); + double ysnap = miny + (Math.ceil((y - miny) / nsres) * nsres); + + return new Coordinate(xsnap, ysnap); + + } + + /** + * Creates a region from envelope bounds snapped to a region grid. + * + *

                + * This takes an envelope and a JGrass region and creates a new region to + * match the bounds of the envelope, but the grid of the region. This is + * important if the region has to match some feature layer. + *

                + *

                + * The bounds of the new region contain completely the envelope. + *

                + * + * @param sourceEnvelope + * the envelope to adapt. + * @param sourceRegion + * the region from which to take the grid to be snapped. + * @return a new region, created from the envelope bounds snapped to the + * region grid. + */ + public static JGTProcessingRegion adaptActiveRegionToEnvelope( Envelope sourceEnvelope, JGTProcessingRegion sourceRegion ) { + JGTProcessingRegion newRegion = new JGTProcessingRegion(sourceEnvelope.getMinX(), sourceEnvelope.getMaxX(), + sourceEnvelope.getMinY(), sourceEnvelope.getMaxY(), sourceRegion.getRows(), sourceRegion.getCols()); + return newRegion; + } + + /** + * @param subregionsNum + * @return + */ + public List toSubRegions( int subregionsNum ) { + int tmpR = getRows(); + int tmpC = getCols(); + + double tmpWest = getWest(); + double tmpSouth = getSouth(); + double tmpWERes = getWEResolution(); + double tmpNSRes = getNSResolution(); + + if (subregionsNum > tmpR || subregionsNum > tmpC) { + throw new IllegalArgumentException("The number of subregions has to be smaller than the number of rows and columns."); + } + + int subregRows = (int) Math.floor(tmpR / (double) subregionsNum); + int subregCols = (int) Math.floor(tmpC / (double) subregionsNum); + + List regions = new ArrayList(); + + double runningEasting = tmpWest; + double runningNorthing = tmpSouth; + for( int i = 0; i < subregionsNum; i++ ) { + double n = runningNorthing + subregRows * tmpNSRes; + double s = runningNorthing; + for( int j = 0; j < subregionsNum; j++ ) { + double w = runningEasting; + double e = runningEasting + subregCols * tmpWERes; + + if (e > getEast()) { + e = getEast(); + } + if (n > getNorth()) { + n = getNorth(); + } + + JGTProcessingRegion r = new JGTProcessingRegion(w, e, s, n, tmpWERes, tmpNSRes); + if (r.getWEResolution() == 0 || r.getNSResolution() == 0) { + continue; + } + regions.add(r); + + runningEasting = e; + } + runningEasting = tmpWest; + runningNorthing = n; + } + + return regions; + } + /** + * Reads a region file and sets a given region to the supplied region file. + * + * @param filePath + * the path to the region file. + * @param region + * the region to be set to the region file informations. + */ + @SuppressWarnings("nls") + /** + * Transforms degree string into the decimal value. + * + * @param value the string in degrees. + * @return the translated value. + */ + private double degreeToNumber( String value ) { + double number = -1; + + String[] valueSplit = value.trim().split(":"); //$NON-NLS-1$ + if (valueSplit.length == 3) { + // deg:min:sec.ss + double deg = Double.parseDouble(valueSplit[0]); + double min = Double.parseDouble(valueSplit[1]); + double sec = Double.parseDouble(valueSplit[2]); + number = deg + min / 60.0 + sec / 60.0 / 60.0; + } else if (valueSplit.length == 2) { + // deg:min + double deg = Double.parseDouble(valueSplit[0]); + double min = Double.parseDouble(valueSplit[1]); + number = deg + min / 60.0; + } else if (valueSplit.length == 1) { + // deg + number = Double.parseDouble(valueSplit[0]); + } + return number; + } + + /** + * Transforms a GRASS resolution string in metric or degree to decimal. + * + * @param ewres the x resolution string. + * @param nsres the y resolution string. + * @return the array of x and y resolution doubles. + */ + private double[] xyResStringToNumbers( String ewres, String nsres ) { + double xres = -1.0; + double yres = -1.0; + if (ewres.indexOf(':') != -1) { + xres = degreeToNumber(ewres); + } else { + xres = Double.parseDouble(ewres); + } + if (nsres.indexOf(':') != -1) { + yres = degreeToNumber(nsres); + } else { + yres = Double.parseDouble(nsres); + } + + return new double[]{xres, yres}; + } + + /** + * Transforms the GRASS bounds strings in metric or degree to decimal. + * + * @param north the north string. + * @param south the south string. + * @param east the east string. + * @param west the west string. + * @return the array of the bounds in doubles. + */ + @SuppressWarnings("nls") + private double[] nsewStringsToNumbers( String north, String south, String east, String west ) { + + double no = -1.0; + double so = -1.0; + double ea = -1.0; + double we = -1.0; + + if (north.indexOf("N") != -1 || north.indexOf("n") != -1) { + north = north.substring(0, north.length() - 1); + no = degreeToNumber(north); + } else if (north.indexOf("S") != -1 || north.indexOf("s") != -1) { + north = north.substring(0, north.length() - 1); + no = -degreeToNumber(north); + } else { + no = Double.parseDouble(north); + } + if (south.indexOf("N") != -1 || south.indexOf("n") != -1) { + south = south.substring(0, south.length() - 1); + so = degreeToNumber(south); + } else if (south.indexOf("S") != -1 || south.indexOf("s") != -1) { + south = south.substring(0, south.length() - 1); + so = -degreeToNumber(south); + } else { + so = Double.parseDouble(south); + } + if (west.indexOf("E") != -1 || west.indexOf("e") != -1) { + west = west.substring(0, west.length() - 1); + we = degreeToNumber(west); + } else if (west.indexOf("W") != -1 || west.indexOf("w") != -1) { + west = west.substring(0, west.length() - 1); + we = -degreeToNumber(west); + } else { + we = Double.parseDouble(west); + } + if (east.indexOf("E") != -1 || east.indexOf("e") != -1) { + east = east.substring(0, east.length() - 1); + ea = degreeToNumber(east); + } else if (east.indexOf("W") != -1 || east.indexOf("w") != -1) { + east = east.substring(0, east.length() - 1); + ea = -degreeToNumber(east); + } else { + ea = Double.parseDouble(east); + } + + return new double[]{no, so, ea, we}; + } + + /** + * Getter for north + * + * @return the north + */ + public double getNorth() { + return north; + } + + /** + * Setter for north + * + * @param north + * the north to set + */ + public void setNorth( double north ) { + this.north = north; + } + + /** + * Getter for south + * + * @return the south + */ + public double getSouth() { + return south; + } + + /** + * Setter for south + * + * @param south + * the south to set + */ + public void setSouth( double south ) { + this.south = south; + } + + /** + * Getter for west + * + * @return the west + */ + public double getWest() { + return west; + } + + /** + * Setter for west + * + * @param west + * the west to set + */ + public void setWest( double west ) { + this.west = west; + } + + /** + * Getter for east + * + * @return the east + */ + public double getEast() { + return east; + } + + /** + * Setter for east + * + * @param east + * the east to set + */ + public void setEast( double east ) { + this.east = east; + } + + /** + * Getter for ns_res + * + * @return the ns_res + */ + public double getNSResolution() { + return ns_res; + } + + /** + * Setter for ns_res + * + * @param ns_res + * the ns_res to set + */ + public void setNSResolution( double ns_res ) { + this.ns_res = ns_res; + fixRowsAndCols(); + fixResolution(); + } + + /** + * Getter for we_res + * + * @return the we_res + */ + public double getWEResolution() { + return we_res; + } + + /** + * Setter for we_res + * + * @param we_res + * the we_res to set + */ + public void setWEResolution( double we_res ) { + this.we_res = we_res; + fixRowsAndCols(); + fixResolution(); + } + + /** + * Getter for rows + * + * @return the rows + */ + public int getRows() { + return rows; + } + + /** + * Setter for rows + * + * @param rows + * the rows to set + */ + public void setRows( int rows ) { + this.rows = rows; + fixResolution(); + } + + /** + * Getter for cols. + * + * @return the cols. + */ + public int getCols() { + return cols; + } + + /** + * Setter for cols. + * + * @param cols + * the cols to set. + */ + public void setCols( int cols ) { + this.cols = cols; + fixResolution(); + } + + /** + * Transform the current region into a {@link GridGeometry2D}. + * + * @param crs the {@link CoordinateReferenceSystem} to apply. + * @return the gridgeometry. + */ + public GridGeometry2D getGridGeometry( CoordinateReferenceSystem crs ) { + GridGeometry2D gridGeometry = CoverageUtilities.gridGeometryFromRegionParams(getRegionParams(), crs); + return gridGeometry; + } + + public HashMap getRegionParams() { + HashMap paramsMap = CoverageUtilities.makeRegionParamsMap(north, south, west, east, we_res, ns_res, cols, + rows); + return paramsMap; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/ModelsEngine.java b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/ModelsEngine.java index 8190d16c4..a42304df3 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/ModelsEngine.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/ModelsEngine.java @@ -1,1934 +1,1934 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.libs.modules; -import static java.lang.Math.PI; -import static java.lang.Math.abs; -import static java.lang.Math.exp; -import static java.lang.Math.log; -import static java.lang.Math.pow; -import static java.lang.Math.sqrt; -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; -import static org.jgrasstools.gears.utils.math.NumericsUtilities.dEq; - -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.io.IOException; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; -import javax.vecmath.Point4d; - -import org.geotools.coverage.grid.GridCoordinates2D; -import org.geotools.coverage.grid.GridEnvelope2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.coverage.grid.InvalidGridGeometryException; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.geotools.geometry.DirectPosition2D; -import org.jgrasstools.gears.i18n.GearsMessageHandler; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.math.NumericsUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.referencing.datum.PixelInCell; -import org.opengis.referencing.operation.MathTransform2D; -import org.opengis.referencing.operation.TransformException; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateList; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.MultiLineString; - -/** - * A class containing several methods used by the modules. - * - *

                The methods are not static for usage in multithreading environment.

                - * - * @author Andrea Antonello (www.hydrologis.com) - * @author Silvia Franceschi (www.hydrologis.com) - * @author Erica Ghesla - * @author Daniele Andreis - */ -@SuppressWarnings("unchecked") -public class ModelsEngine { - private static int[][] DIR = ModelsSupporter.DIR; - - private static int[][] dirIn = ModelsSupporter.DIR_WITHFLOW_ENTERING; - - private static GearsMessageHandler msg = GearsMessageHandler.getInstance(); - - public static PixelInCell DEFAULTPIXELANCHOR = PixelInCell.CELL_CENTER; - - /** - * Moves one pixel downstream. - * - * @param colRow - * the array containing the column and row of the current pixel. - * It will be modified here to represent the next downstream - * pixel. - * @param flowdirection - * the current flowdirection number. - * @return true if everything went well. - */ - public static boolean go_downstream( int[] colRow, double flowdirection ) { - - int n = (int) flowdirection; - if (n == 10) { - return true; - } else if (n < 1 || n > 9) { - return false; - } else { - colRow[1] += DIR[n][0]; - colRow[0] += DIR[n][1]; - return true; - } - } - - /** - * Moves one pixel upstream. - * - * @param p - * @param flowRandomIter - * @param tcaRandomIter - * @param lRandomIter - * @param param - */ - public static void go_upstream_a( int[] p, RandomIter flowRandomIter, RandomIter tcaRandomIter, RandomIter lRandomIter, - int[] param ) { - double area = 0, lenght = 0; - int[] point = new int[2]; - int kk = 0, count = 0; - - point[0] = p[0]; - point[1] = p[1]; - // check how many pixels are draining in the considered pixel and select - // the pixel with maximun tca - for( int k = 1; k <= 8; k++ ) { - if (flowRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0) == dirIn[k][2]) { - // counts how many pixels are draining in the considere - count++; - if (tcaRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0) >= area) { - // if two pixels has the same tca select the pixel with the - // maximum vale of hacklength - if (tcaRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0) == area) { - if (lRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0) > lenght) { - kk = k; - area = tcaRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0); - lenght = lRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0); - point[0] = p[0] + dirIn[k][1]; - point[1] = p[1] + dirIn[k][0]; - } - } else { - kk = k; - area = tcaRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0); - lenght = lRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0); - point[0] = p[0] + dirIn[k][1]; - point[1] = p[1] + dirIn[k][0]; - } - } - } - - } - p[0] = point[0]; - p[1] = point[1]; - param[0] = kk; - param[1] = count; - } - - /** - * Moves one pixel upstream following the supplied network. TODO Daniele doc - * - * @param colRow - * @param flowIterator - * @param netnumIterator - * @param param - */ - public static void goUpStreamOnNetFixed( int[] colRow, RandomIter flowIterator, RandomIter netnumIterator, int[] param ) { - - int kk = 0, count = 0; - int[] point = new int[2]; - - for( int k = 1; k <= 8; k++ ) { - if (flowIterator.getSampleDouble(colRow[0] + dirIn[k][1], colRow[1] + dirIn[k][0], 0) == dirIn[k][2]) { - count++; - if (netnumIterator.getSampleDouble(colRow[0] + dirIn[k][1], colRow[1] + dirIn[k][0], 0) == netnumIterator - .getSampleDouble(colRow[0], colRow[1], 0)) { - kk = k; - point[0] = colRow[0] + dirIn[k][1]; - point[1] = colRow[1] + dirIn[k][0]; - } - } - } - if (kk == 0) { - for( int k = 1; k <= 8; k++ ) { - if (flowIterator.getSampleDouble(colRow[0] + dirIn[k][1], colRow[1] + dirIn[k][0], 0) == dirIn[k][2]) { - kk = k; - point[0] = colRow[0] + dirIn[k][1]; - point[1] = colRow[1] + dirIn[k][0]; - } - } - } - colRow[0] = point[0]; - colRow[1] = point[1]; - param[0] = kk; - param[1] = count; - } - - /** - * It create the shape-file of channel network - * - * @param flowImage the map of flow direction. - * @param netNumImage the map of netnumbering. - * @param gridGeometry the {@link GridGeometry2D} of the flow coverage. - * @param nstream - * @param pm the progress monitor. - * @return the extracted features. - * @throws IOException - * @throws TransformException - */ - public static SimpleFeatureCollection net2ShapeOnly( RenderedImage flowImage, WritableRaster netNumImage, - GridGeometry2D gridGeometry, List nstream, IJGTProgressMonitor pm ) throws IOException, TransformException { - - int activecols = flowImage.getWidth(); - int activerows = flowImage.getHeight(); - - int[] flow = new int[2]; - int[] flow_p = new int[2]; - - CoordinateList coordlist = new CoordinateList(); - RandomIter m1RandomIter = RandomIterFactory.create(flowImage, null); - RandomIter netNumRandomIter = RandomIterFactory.create(netNumImage, null); - // GEOMETRY - // creates new LineSting array - LineString[] newGeometry = new LineString[nstream.size()]; - // creates a vector of geometry - List newGeometryVectorLine = new ArrayList(); - GeometryFactory newfactory = new GeometryFactory(); - - pm.beginTask(msg.message("utils.extracting_network_geometries"), nstream.size()); - for( int num = 1; num <= nstream.size(); num++ ) { - for( int y = 0; y < activerows; y++ ) { - for( int x = 0; x < activecols; x++ ) { - if (!isNovalue(m1RandomIter.getSampleDouble(x, y, 0))) { - flow[0] = x; - flow[1] = y; - // looks for the source - if (netNumRandomIter.getSampleDouble(x, y, 0) == num) { - // if the point is a source it starts to extract the - // channel... - if (sourcesNet(m1RandomIter, flow, num, netNumRandomIter)) { - flow_p[0] = flow[0]; - flow_p[1] = flow[1]; - double[] worldPosition = gridGeometry.gridToWorld(new GridCoordinates2D(flow[0], flow[1])) - .getCoordinate(); - Coordinate coordSource = new Coordinate(worldPosition[0], worldPosition[1]); - // creates new Object Coordinate... SOURCE - // POINT... - // adds the points to the CoordinateList - coordlist.add(coordSource); - if (!go_downstream(flow, m1RandomIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - // it extracts the other points of the - // channel... it - // continues until the next node... - while( !isNovalue(m1RandomIter.getSampleDouble(flow[0], flow[1], 0)) - && m1RandomIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 - && netNumRandomIter.getSampleDouble(flow[0], flow[1], 0) == num - && !isNovalue(netNumRandomIter.getSampleDouble(flow[0], flow[1], 0)) ) { - worldPosition = gridGeometry.gridToWorld(new GridCoordinates2D(flow[0], flow[1])) - .getCoordinate(); - Coordinate coordPoint = new Coordinate(worldPosition[0], worldPosition[1]); - // creates new Object Coordinate... CHANNEL - // POINT... - // adds new points to CoordinateList - coordlist.add(coordPoint); - flow_p[0] = flow[0]; - flow_p[1] = flow[1]; - if (!go_downstream(flow, m1RandomIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - } - worldPosition = gridGeometry.gridToWorld(new GridCoordinates2D(flow[0], flow[1])).getCoordinate(); - Coordinate coordNode = new Coordinate(worldPosition[0], worldPosition[1]); - // creates new Object Coordinate... NODE - // POINT... - // adds new points to CoordinateList - coordlist.add(coordNode); - } - } - } - } - } - // when the channel is complete creates one new geometry (new - // channel of the network) - newGeometry[num - 1] = newfactory.createLineString(coordlist.toCoordinateArray()); - // adds the new geometry to the vector of geometry - newGeometryVectorLine.add(newGeometry[num - 1]); - // it removes every element of coordlist - coordlist.clear(); - pm.worked(1); - } - pm.done(); - - // create the feature type - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("network"); //$NON-NLS-1$ - b.setCRS(gridGeometry.getCoordinateReferenceSystem()); - b.add("the_geom", LineString.class); //$NON-NLS-1$ - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - - SimpleFeatureCollection featureCollection = FeatureCollections.newCollection(); - int index = 0; - for( LineString lineString : newGeometryVectorLine ) { - Object[] values = new Object[]{lineString}; - // add the values - builder.addAll(values); - // build the feature with provided ID - SimpleFeature feature = builder.buildFeature(type.getTypeName() + "." + index); //$NON-NLS-1$ - index++; - featureCollection.add(feature); - } - return featureCollection; - } - - /** - * Create the {@link MultiLineString line} geometries of channel network - * - * @param flowIter the flow map. - * @param netNumIter the netnumbering map. - * @param nstream - * @param pm the progress monitor. - * @param gridGeometry the gridgeometry. - * @return the geometries of the network. - * @throws IOException - * @throws TransformException - */ - public static List net2ShapeGeometries( WritableRandomIter flowIter, RandomIter netNumIter, int[] nstream, - GridGeometry2D gridGeometry, IJGTProgressMonitor pm ) throws IOException, TransformException { - - GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); - int rows = gridRange.height; - int cols = gridRange.width; - - // screen2world - MathTransform2D gridToCRS2D = gridGeometry.getGridToCRS2D(); - - // get rows and cols from the active region - int[] flow = new int[2]; - int[] flow_p = new int[2]; - - CoordinateList coordlist = new CoordinateList(); - - // creates a vector of geometry - List newGeometryVectorLine = new ArrayList(); - GeometryFactory newfactory = new GeometryFactory(); - - /* name of new geometry (polyline) */ - pm.beginTask("Extracting the network geometries...", nstream[0]); - for( int num = 1; num <= nstream[0]; num++ ) { - for( int y = 0; y < rows; y++ ) { - for( int x = 0; x < cols; x++ ) { - flow[0] = x; - flow[1] = y; - // looks for the source - if (netNumIter.getSampleDouble(x, y, 0) == num) { - // if the point is a source it starts to extract the - // channel... - if (sourcesNet(flowIter, flow, num, netNumIter)) { - flow_p[0] = flow[0]; - flow_p[1] = flow[1]; - - Point2D worldPosition = new Point2D.Double(flow[0], flow[1]); - gridToCRS2D.transform(worldPosition, worldPosition); - Coordinate coordSource = new Coordinate(worldPosition.getX(), worldPosition.getY()); - - // creates new Object Coordinate... SOURCE POINT... - // adds the points to the CoordinateList - coordlist.add(coordSource); - if (!go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - // it extracts the other points of the channel... it - // continues until the next node... - while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) - && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 - && netNumIter.getSampleDouble(flow[0], flow[1], 0) == num - && !isNovalue(netNumIter.getSampleDouble(flow[0], flow[1], 0)) ) { - - worldPosition = new Point2D.Double(flow[0], flow[1]); - gridToCRS2D.transform(worldPosition, worldPosition); - Coordinate coordPoint = new Coordinate(worldPosition.getX(), worldPosition.getY()); - - // creates new Object Coordinate... CHANNEL - // POINT... - // adds new points to CoordinateList - coordlist.add(coordPoint); - flow_p[0] = flow[0]; - flow_p[1] = flow[1]; - if (!go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - } - worldPosition = new Point2D.Double(flow[0], flow[1]); - gridToCRS2D.transform(worldPosition, worldPosition); - Coordinate coordNode = new Coordinate(worldPosition.getX(), worldPosition.getY()); - // creates new Object Coordinate... NODE POINT... - // adds new points to CoordinateList - coordlist.add(coordNode); - } - } - } - } - // when the channel is complete creates one new geometry (new - // channel of the network) - // adds the new geometry to the vector of geometry - // if (!coordlist.isEmpty()) { - newGeometryVectorLine.add(newfactory.createMultiLineString(new LineString[]{newfactory.createLineString(coordlist - .toCoordinateArray())})); - // } else { - // if (out != null) - // out.println("Found an empty geometry at " + num); - // } - // it removes every element of coordlist - coordlist.clear(); - pm.worked(1); - } - pm.done(); - return newGeometryVectorLine; - } - - /** - * Controls if the considered point is a source in the network map. - * - * @param flowIterator - * {@link RandomIter iterator} of flowdirections map - * @param colRow the col and row of the point to check. - * @param num - * channel number - * @param netNum - * {@link RandomIter iterator} of the netnumbering map. - * @return - */ - public static boolean sourcesNet( RandomIter flowIterator, int[] colRow, int num, RandomIter netNum ) { - int[][] dir = {{0, 0, 0}, {1, 0, 5}, {1, -1, 6}, {0, -1, 7}, {-1, -1, 8}, {-1, 0, 1}, {-1, 1, 2}, {0, 1, 3}, {1, 1, 4}}; - - if (flowIterator.getSampleDouble(colRow[0], colRow[1], 0) <= 10.0 - && flowIterator.getSampleDouble(colRow[0], colRow[1], 0) > 0.0) { - for( int k = 1; k <= 8; k++ ) { - if (flowIterator.getSampleDouble(colRow[0] + dir[k][0], colRow[1] + dir[k][1], 0) == dir[k][2] - && netNum.getSampleDouble(colRow[0] + dir[k][0], colRow[1] + dir[k][1], 0) == num) { - return false; - } - } - return true; - } else { - return false; - } - - } - - /** - * Takes a input raster and vectorializes it. - * - * @param input - * @return - */ - public static double[] vectorizeDoubleMatrix( RenderedImage input ) { - double[] U = new double[input.getWidth() * input.getHeight()]; - RandomIter inputRandomIter = RandomIterFactory.create(input, null); - - int j = 0; - for( int i = 0; i < input.getHeight() * input.getWidth(); i = i + input.getWidth() ) { - double tmp[] = new double[input.getWidth()]; - for( int k = 0; k < input.getWidth(); k++ ) { - tmp[k] = inputRandomIter.getSampleDouble(k, j, 0); - } - - System.arraycopy(tmp, 0, U, i, input.getWidth()); - j++; - } - - return U; - } - - /** - * TODO Daniele doc - * - * @param U - * @param T - * @param theSplit - * @param binNum - * @param num_max - * @param out - * @return - */ - public static double split2realvectors( double[] U, double[] T, SplitVectors theSplit, int binNum, int num_max, - IJGTProgressMonitor pm ) { - - double binStep = 0, minValue = 0, maxValue; - int i, count = 0, previousCount, minPosition = 0, maxPosition = 0, emptyBins; - int[] bins; - int head = 0; - - bins = new int[U.length]; - - if (binNum <= 1) { - previousCount = 1; - count = 1; - - int index = 0; - while( count < U.length ) { - - // was while( count <= U.length && U[count] == U[count - 1] ) { - while( count < U.length && U[count] == U[count - 1] ) { - count++; - } - - index++; - bins[index] = count - previousCount; - head++; - previousCount = count; - count++; - if (head > num_max) - throw new ModelsIllegalargumentException("The number of bin eccedes the maximum number allowed.", "MODEL"); - } - - } else if (binNum > 1) { - - minPosition = 0; - maxValue = U[U.length - 1]; - while( minPosition < U.length && isNovalue(U[minPosition]) ) { - minPosition++; - } - if (minPosition == U.length) { - // force the situation of non calculation - binStep = 0; - } else { - minValue = U[minPosition]; - maxPosition = U.length - 1; - - binStep = (maxValue - minValue) / (binNum - 1); - } - - if (binStep != 0) { - int binIndex = 0; - - previousCount = minPosition; // the novalues are already left aside - count = minPosition; - emptyBins = 0; - - double runningCenter = minValue + binStep / 2.0; - - for( int n = 0; n < binNum - 1; n++ ) { - double upperLimitOfBin; - if (n == binNum - 2) { - upperLimitOfBin = maxValue; - } else { - upperLimitOfBin = runningCenter + binStep / 2.0; - } - if (U[count] <= upperLimitOfBin) { - double value = U[count]; - while( value <= upperLimitOfBin ) { - count++; - if (count > maxPosition) { - break; - } - value = U[count]; - } - - bins[binIndex] = count - previousCount; - // contained in the bin - binIndex++; - - head++; - previousCount = count; - // count++; - - } else { - emptyBins++; - } - runningCenter += binStep; - } - - if (emptyBins != 0) { - pm.message(emptyBins + " empty bins where found"); - } - } else { - for( double tmpValue : U ) { - if (!isNovalue(tmpValue)) { - count++; - } - } - bins[0] = count; - head = count; - } - - } - - if (head < 1) { - throw new ModelsIllegalargumentException("Something wrong happened in binning", "MODEL"); - } else { - theSplit.initIndex(head); - - int maxnumberinbin = 0; - for( i = 0; i < head; i++ ) { - theSplit.splitIndex[i] = bins[i]; - if (bins[i] > maxnumberinbin) - maxnumberinbin = bins[i]; - } - - /* - * now a list of the values inside the bins are put into the - * matrixes, therefore we need as many rows as bins and a column - * number high enough to hold the major number of values hold inside - * a bin. - */ - theSplit.initValues(head, maxnumberinbin); - - int index = minPosition; - for( int j = 0; j < head; j++ ) { - for( int k = 0; k < theSplit.splitIndex[j]; k++ ) { - theSplit.splitValues1[j][k] = U[index]; - theSplit.splitValues2[j][k] = T[index]; - index++; - } - } - } - - if (binNum < 2) - binStep = 0; - - return binStep; - } - - public static double doubleNMoment( double[] m, int nh, double mean, double NN, IJGTProgressMonitor pm ) { - double moment = 0.0, n; - - n = 0; - - if (NN == 1.0) { - - for( int i = 0; i < nh; i++ ) { - - if (!isNovalue(m[i])) { - moment += m[i]; - n++; - } - - } - - if (n >= 1) { - moment /= n; - } else { - pm.errorMessage("No valid data were processed, setting moment value to zero."); - moment = 0.0; - } - - } else if (NN == 2.0) { - for( int i = 0; i < nh; i++ ) { - if (!isNovalue(m[i])) { - moment += (m[i]) * (m[i]); - n++; - } - - } - if (n >= 1) { - moment = (moment / n - mean * mean); - } else { - pm.errorMessage("No valid data were processed, setting moment value to zero."); - moment = 0.0; - } - - } else { - for( int i = 0; i < nh; i++ ) { - if (!isNovalue(m[i])) { - moment += pow((m[i] - mean), NN); - n++; - } - - } - if (n >= 1) { - moment /= n; - - } else { - pm.errorMessage("No valid data were processed, setting moment value to zero."); - moment = 0.0; - } - - } - - return moment; - } - - /** - * this method numerating every stream - */ - public static WritableRaster netNumbering( List nstream, RandomIter flowIter, RandomIter networkIter, int width, - int height, IJGTProgressMonitor pm ) { - int[] flow = new int[2]; - int gg = 0, n = 0, f; - WritableRaster netnumWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, null, null); - WritableRandomIter netnumIter = RandomIterFactory.createWritable(netnumWR, null); - - /* numerating every stream */ - GearsMessageHandler msg = GearsMessageHandler.getInstance(); - pm.beginTask(msg.message("utils.numbering_stream"), height); - for( int j = 0; j < height; j++ ) { - for( int i = 0; i < width; i++ ) { - flow[0] = i; - flow[1] = j; - if (!isNovalue(networkIter.getSampleDouble(i, j, 0)) && flowIter.getSampleDouble(i, j, 0) != 10.0 - && netnumIter.getSampleDouble(i, j, 0) == 0.0) { - f = 0; - for( int k = 1; k <= 8; k++ ) { - if (flowIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2] - && !isNovalue(networkIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0))) { - break; - } else - f++; - } - // if the pixel is a source... - if (f == 8) { - n++; - nstream.add(n); - netnumIter.setSample(i, j, 0, n); - if (!go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) - && netnumIter.getSampleDouble(flow[0], flow[1], 0) == 0 ) { - gg = 0; - for( int k = 1; k <= 8; k++ ) { - if (!isNovalue(networkIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0)) - && flowIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2]) { - gg++; - } - } - if (gg >= 2) { - n++; - nstream.add(n); - netnumIter.setSample(flow[0], flow[1], 0, n); - } else { - netnumIter.setSample(flow[0], flow[1], 0, n); - } - if (!go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - } - } - } - } - pm.worked(1); - } - pm.done(); - return netnumWR; - } - - /** - * this method numerating every stream and subdivide the stream when tca is - * greater than a threshold - */ - public static WritableRaster netNumberingWithTca( List nstream, RandomIter mRandomIter, RandomIter netRandomIter, - RandomIter tcaRandomIter, int cols, int rows, double tcaTh, IJGTProgressMonitor pm ) { - int[] flow = new int[2]; - int gg = 0, n = 0, f; - - WritableRaster outImage = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); - WritableRandomIter oMatrixRandomIter = RandomIterFactory.createWritable(outImage, null); - - double tcaValue = 0; - - pm.beginTask(msg.message("utils.numbering_stream"), rows); - /* numerating every stream */ - for( int j = 0; j < rows; j++ ) { - // ShowPercent.getPercent(copt, i, rows - 1, 1); - for( int i = 0; i < cols; i++ ) { - flow[0] = i; - flow[1] = j; - if (!isNovalue(netRandomIter.getSampleDouble(i, j, 0)) && mRandomIter.getSampleDouble(i, j, 0) != 10.0 - && oMatrixRandomIter.getSampleDouble(i, j, 0) == 0.0) { - f = 0; - for( int k = 1; k <= 8; k++ ) { - if (mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2] - && !isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0))) { - break; - } else - f++; - } - // if the pixel is a source... - if (f == 8) { - n++; - nstream.add(n); - tcaValue = tcaRandomIter.getSampleDouble(i, j, 0); - oMatrixRandomIter.setSample(i, j, 0, n); - if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - while( !isNovalue(mRandomIter.getSampleDouble(flow[0], flow[1], 0)) - && oMatrixRandomIter.getSampleDouble(flow[0], flow[1], 0) == 0 ) { - gg = 0; - for( int k = 1; k <= 8; k++ ) { - if (!isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0)) - && mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2]) { - gg++; - } - } - if (gg >= 2) { - // it is a node - n++; - nstream.add(n); - oMatrixRandomIter.setSample(flow[0], flow[1], 0, n); - tcaValue = tcaRandomIter.getSampleDouble(flow[0], flow[1], 0); - } else if (tcaRandomIter.getSampleDouble(flow[0], flow[1], 0) - tcaValue > tcaTh) { - // tca greater than threshold - n++; - nstream.add(n); - oMatrixRandomIter.setSample(flow[0], flow[1], 0, n); - tcaValue = tcaRandomIter.getSampleDouble(flow[0], flow[1], 0); - } else { - // normal point - oMatrixRandomIter.setSample(flow[0], flow[1], 0, n); - } - if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - } - } - } - } - pm.worked(1); - } - pm.done(); - return outImage; - } - - /** - * this method numerating every stream dividing the channels in fixed points - * @throws TransformException - * @throws InvalidGridGeometryException - */ - public static WritableRaster netNumberingWithPoints( List nstream, RandomIter mRandomIter, RandomIter netRandomIter, - int rows, int cols, List> attributePoints, List geomVect, GridGeometry2D gridGeometry, - String reteId, IJGTProgressMonitor pm ) throws InvalidGridGeometryException, TransformException { - int[] flow = new int[2]; - int gg = 0, n = 0, f; - WritableRaster outImage = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); - WritableRandomIter oMatrixRandomIter = RandomIterFactory.createWritable(outImage, null); - - Rectangle2D regionBox = gridGeometry.getEnvelope2D().getBounds2D(); - - List points = new ArrayList(); - // new rectangle for active region - Number nodoId; - int l = 0; - int numGeometry = 0; - // insert the points in a Vector of points - for( Geometry pointV : geomVect ) { - for( int i = 0; i < pointV.getNumGeometries(); i++ ) { - GridCoordinates2D gridCoordinate = gridGeometry.worldToGrid(new DirectPosition2D(pointV.getCoordinates()[0].x, - pointV.getCoordinates()[0].y)); - nodoId = (Number) attributePoints.get(numGeometry).get(reteId); - if (nodoId == null) { - throw new ModelsIllegalargumentException("Field " + reteId + " not found", ""); - } - if (nodoId.intValue() != -1 - && regionBox.contains(new Point2D.Double(pointV.getCoordinates()[0].x, pointV.getCoordinates()[0].y))) { - points.add(new Point4d(gridCoordinate.x, gridCoordinate.y, nodoId.doubleValue(), 0)); - l++; - } - } - numGeometry++; - } - // if the points isn't on the channel net, move the point - int p = 0; - for( Point4d point4d : points ) { - if (netRandomIter.getSampleDouble((int) point4d.x, (int) point4d.y, 0) != point4d.z) { - for( int i = 1; i < 9; i++ ) { - int indexI = (int) point4d.x + dirIn[i][1]; - int indexJ = (int) point4d.y + dirIn[i][0]; - if (netRandomIter.getSampleDouble(indexI, indexJ, 0) == point4d.z) { - point4d.x = indexI; - point4d.y = indexJ; - } - } - } - } - for( Point4d point4d : points ) { - if (netRandomIter.getSampleDouble((int) point4d.x, (int) point4d.y, 0) == point4d.z) { - p++; - } - } - - pm.beginTask(msg.message("utils.numbering_stream"), rows); - /* Selects every node and go downstream */ - for( int j = 0; j < rows; j++ ) { - // ShowPercent.getPercent(copt, i, rows - 1, 1); - for( int i = 0; i < cols; i++ ) { - flow[0] = i; - flow[1] = j; - if (!isNovalue(netRandomIter.getSampleDouble(i, j, 0)) && mRandomIter.getSampleDouble(i, j, 0) != 10.0 - && oMatrixRandomIter.getSampleDouble(i, j, 0) == 0.0) { - f = 0; - // look for the source... - for( int k = 1; k <= 8; k++ ) { - if (mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2] - && !isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0))) { - break; - } else - f++; - } - // if the pixel is a source...starts to assign a number to - // every stream - if (f == 8) { - n++; - nstream.add(n); - oMatrixRandomIter.setSample(i, j, 0, n); - if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - for( Point4d point4d : points ) { - if (point4d.x == flow[0] && point4d.y == flow[1]) { - n++; - nstream.add(n); - point4d.w = n - 1; - /* - * omatrix.getSampleDouble(i,j) = n; if - * (!FluidUtils.go_downstream(flow, - * m.getSampleDouble(flow[0],flow[1]), copt)) ; - */ - } - } - while( !isNovalue(mRandomIter.getSampleDouble(flow[0], flow[1], 0)) - && oMatrixRandomIter.getSampleDouble(flow[0], flow[1], 0) == 0 - && mRandomIter.getSampleDouble(flow[0], flow[1], 0) != 10 ) { - gg = 0; - for( int k = 1; k <= 8; k++ ) { - if (!isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0)) - && mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2]) { - gg++; - } - } - if (gg >= 2) { - n++; - nstream.add(n); - oMatrixRandomIter.setSample(flow[0], flow[1], 0, n); - } else { - oMatrixRandomIter.setSample(flow[0], flow[1], 0, n); - } - if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - for( Point4d point4d : points ) { - if (point4d.x == flow[0] && point4d.y == flow[1]) { - n++; - nstream.add(n); - point4d.w = n - 1; - } - } - } - } - } - } - pm.worked(1); - } - pm.done(); - return outImage; - } - - /** - * this method numerating every stream dividing the channels in fixed points - * @param out - * @throws TransformException - * @throws InvalidGridGeometryException - */ - public static WritableRaster netNumberingWithPointsAndTca( List nstream, RandomIter mRandomIter, - RandomIter netRandomIter, RandomIter tcaRandomIter, double tcaTh, int rows, int cols, - List> attributePoints, List geomVect, GridGeometry2D gridGeometry, - IJGTProgressMonitor pm ) throws InvalidGridGeometryException, TransformException { - int[] flow = new int[2]; - int gg = 0, n = 0, f; - - double tcaValue = 0; - - List points = new ArrayList(); - // new rectangle for active region - Rectangle2D regionBox = gridGeometry.getEnvelope2D().getBounds2D(); - Number nodoId; - int l = 0; - int numGeometry = 0; - // insert the points in a Vector of points - for( Geometry pointV : geomVect ) { - for( int i = 0; i < pointV.getNumGeometries(); i++ ) { - GridCoordinates2D gridCoordinate = gridGeometry.worldToGrid(new DirectPosition2D(pointV.getCoordinates()[0].x, - pointV.getCoordinates()[0].y)); - nodoId = (Number) attributePoints.get(numGeometry).get("RETE_ID"); - if (nodoId == null) { - throw new ModelsIllegalargumentException("Field RETE_ID not found", ""); - } - if (nodoId.intValue() != -1 - && regionBox.contains(new Point2D.Double(pointV.getCoordinates()[0].x, pointV.getCoordinates()[0].y))) { - points.add(new Point4d(gridCoordinate.x, gridCoordinate.y, nodoId.doubleValue(), 0)); - l++; - } - } - numGeometry++; - } - // if the points isn't on the channel net, move the point - int p = 0; - - WritableRaster outImage = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); - WritableRandomIter oRandomIter = RandomIterFactory.createWritable(outImage, null); - - for( Point4d point4d : points ) { - if (netRandomIter.getSampleDouble((int) point4d.x, (int) point4d.y, 0) != point4d.z) { - for( int i = 1; i < 9; i++ ) { - int indexI = (int) point4d.x + dirIn[i][1]; - int indexJ = (int) point4d.y + dirIn[i][0]; - if (netRandomIter.getSampleDouble(indexI, indexJ, 0) == point4d.z) { - point4d.x = indexI; - point4d.y = indexJ; - } - } - } - } - for( Point4d point4d : points ) { - if (netRandomIter.getSampleDouble((int) point4d.x, (int) point4d.y, 0) == point4d.z) { - p++; - } - } - - pm.beginTask(msg.message("utils.numbering_stream"), rows); - /* Selects every node and go downstream */ - for( int j = 0; j < rows; j++ ) { - // ShowPercent.getPercent(copt, i, rows - 1, 1); - for( int i = 0; i < cols; i++ ) { - flow[0] = i; - flow[1] = j; - if (!isNovalue(netRandomIter.getSampleDouble(i, j, 0)) && mRandomIter.getSampleDouble(i, j, 0) != 10.0 - && oRandomIter.getSampleDouble(i, j, 0) == 0.0) { - f = 0; - // look for the source... - for( int k = 1; k <= 8; k++ ) { - if (mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2] - && !isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0))) { - break; - } else - f++; - } - // if the pixel is a source...starts to assigne a number to - // every stream - if (f == 8) { - n++; - nstream.add(n); - oRandomIter.setSample(i, j, 0, n); - if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - for( Point4d point4d : points ) { - if (point4d.y == flow[1] && point4d.x == flow[0]) { - n++; - nstream.add(n); - point4d.w = n - 1; - /* - * omatrix.getValueAt(i,j) = n; if - * (!FluidUtils.go_downstream(flow, - * m.getValueAt(flow[0],flow[1]), copt)) ; - */ - } - } - while( !isNovalue(mRandomIter.getSampleDouble(flow[0], flow[1], 0)) - && oRandomIter.getSampleDouble(flow[0], flow[1], 0) == 0 - && mRandomIter.getSampleDouble(flow[0], flow[1], 0) != 10 ) { - gg = 0; - for( int k = 1; k <= 8; k++ ) { - if (!isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0)) - && mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2]) { - gg++; - } - } - if (gg >= 2) { - // it is a node - n++; - oRandomIter.setSample(flow[0], flow[1], 0, n); - tcaValue = tcaRandomIter.getSampleDouble(flow[0], flow[1], 0); - } else if (tcaRandomIter.getSampleDouble(flow[0], flow[1], 0) - tcaValue > tcaTh) { - // tca greater than threshold - n++; - nstream.add(n); - oRandomIter.setSample(flow[0], flow[1], 0, n); - tcaValue = tcaRandomIter.getSampleDouble(flow[0], flow[1], 0); - } else { - // normal point - oRandomIter.setSample(flow[0], flow[1], 0, n); - } - if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) - return null; - for( Point4d point4d : points ) { - if (point4d.y == flow[1] && point4d.x == flow[0]) { - n++; - nstream.add(n); - point4d.w = n - 1; - } - } - } - } - } - } - pm.worked(1); - } - pm.done(); - - oRandomIter.done(); - tcaRandomIter.done(); - // mRandomIter.done(); - // netRandomIter.done(); - return outImage; - } - - /** - * Extract the subbasins of a raster map. - * - * @param flowIter the map of flowdirections. - * @param netRandomIter the network map. - * @param netNumberIter the netnumber map. - * @param rows rows of the region. - * @param cols columns of the region. - * @param pm - * @return the map of extracted subbasins. - */ - public static WritableRaster extractSubbasins( WritableRandomIter flowIter, RandomIter netRandomIter, - WritableRandomIter netNumberIter, int rows, int cols, IJGTProgressMonitor pm ) { - - for( int r = 0; r < rows; r++ ) { - for( int c = 0; c < cols; c++ ) { - if (!isNovalue(netRandomIter.getSampleDouble(c, r, 0))) - flowIter.setSample(c, r, 0, 10); - } - } - - WritableRaster subbasinWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); - WritableRandomIter subbasinIter = RandomIterFactory.createWritable(subbasinWR, null); - - markHillSlopeWithLinkValue(flowIter, netNumberIter, subbasinIter, cols, rows, pm); - - for( int r = 0; r < rows; r++ ) { - for( int c = 0; c < cols; c++ ) { - double netValue = netRandomIter.getSampleDouble(c, r, 0); - double netNumberValue = netNumberIter.getSampleDouble(c, r, 0); - if (!isNovalue(netValue)) { - subbasinIter.setSample(c, r, 0, netNumberValue); - } - if (NumericsUtilities.dEq(netNumberValue, 0)) { - netNumberIter.setSample(c, r, 0, JGTConstants.doubleNovalue); - } - double subbValue = subbasinIter.getSampleDouble(c, r, 0); - if (NumericsUtilities.dEq(subbValue, 0)) - subbasinIter.setSample(c, r, 0, JGTConstants.doubleNovalue); - } - } - - return subbasinWR; - } - - /** - * Marks a map on the hillslope with the values on the channel of an attribute map. - * - * @param flowIter map of flow direction with the network cells - * all marked as {@link FlowNode#NETVALUE}. This is very important! - * @param attributeIter map of attributes. - * @param markedIter the map to be marked. - * @param cols region cols. - * @param rows region rows. - * @param pm monitor. - */ - public static void markHillSlopeWithLinkValue( RandomIter flowIter, RandomIter attributeIter, WritableRandomIter markedIter, - int cols, int rows, IJGTProgressMonitor pm ) { - pm.beginTask("Marking the hillslopes with the channel value...", rows); - for( int r = 0; r < rows; r++ ) { - for( int c = 0; c < cols; c++ ) { - FlowNode flowNode = new FlowNode(flowIter, cols, rows, c, r); - if (flowNode.isHeadingOutside()) { - // ignore single cells on borders that exit anyway - continue; - } - - if (flowNode.isMarkedAsOutlet()) { - double attributeValue = flowNode.getValueFromMap(attributeIter); - flowNode.setValueInMap(markedIter, attributeValue); - continue; - } - if (flowNode.isValid() && flowNode.isSource()) { - /* - * run down to the net to find the - * attribute map content on the net - */ - double attributeValue = doubleNovalue; - FlowNode runningNode = flowNode.goDownstream(); - while( runningNode != null && runningNode.isValid() ) { - if (runningNode.isMarkedAsOutlet()) { - attributeValue = runningNode.getValueFromMap(attributeIter); - break; - } - runningNode = runningNode.goDownstream(); - } - if (!isNovalue(attributeValue)) { - // run down marking the hills - runningNode = flowNode; - while( runningNode != null && runningNode.isValid() ) { - runningNode.setValueInMap(markedIter, attributeValue); - if (runningNode.isMarkedAsOutlet()) { - break; - } - runningNode = runningNode.goDownstream(); - } - } else { - throw new ModelsIllegalargumentException("Could not find a value of the attributes map in the channel.", - "MODELSENGINE"); - } - } - } - pm.worked(1); - } - pm.done(); - } - - /** - * Verifies if the point is a source pixel in the supplied flow raster. - * - * @param flowIter the {@link RandomIter iterator} of the flowdirections. - * @param col the col of the point to check. - * @param row the row of the point to check. - * @return true if the point identified by col and row is a source pixel. - */ - public static boolean isSourcePixel( RandomIter flowIter, int col, int row ) { - double flowDirection = flowIter.getSampleDouble(col, row, 0); - if (flowDirection < 9.0 && flowDirection > 0.0) { - for( int k = 1; k <= 8; k++ ) { - if (flowIter.getSampleDouble(col + dirIn[k][1], row + dirIn[k][0], 0) == dirIn[k][2]) { - return false; - } - } - return true; - } else { - return false; - } - } - - /** - * Returns the flow direction value for a given point as indexes (i, j) of the dir matrix. - * - * @param i - * @param j - * @return - */ - public static int getFlowDirection( int i, int j ) { - int flow = -1; - for( int k = 1; k < 9; k++ ) { - if (ModelsSupporter.DIR[k][0] == i && ModelsSupporter.DIR[k][1] == j) { - flow = k; - } - } - return flow; - } - - /** - * Linear interpolation between two values - * - * @param data - * - matrix of values to interpolate - * @param x - * - value to interpolate - * @param nx - * - column of data in which you find the x values - * @param ny - * - column of data in which you find the y values - * @return - */ - public static double width_interpolate( double[][] data, double x, int nx, int ny ) { - - int rows = data.length; - double xuno = 0, xdue = 0, yuno = 0, ydue = 0, y = 0; - - // if 0, interpolate between 0 and the first value of data - if (x >= 0 && x < data[0][nx]) { - xuno = 0; - xdue = data[0][nx]; - yuno = 0; - ydue = data[0][ny]; - y = ((ydue - yuno) / (xdue - xuno)) * (x - xuno) + yuno; - } - - // if it is less than 0 and bigger than the maximum, throw error - if (x > data[(rows - 1)][nx] || x < 0) { - throw new RuntimeException(MessageFormat.format( - "Error in the interpolation algorithm: entering with x = {0} (min = 0.0 max = {1}", x, data[(rows - 1)][nx])); - } - - /* trovo i valori limite entro i quali effettuo l'interpolazione lineare */ - for( int i = 0; i < rows - 1; i++ ) { - - if (x > data[i][nx] && x <= data[(i + 1)][nx]) { - xuno = data[i][nx]; - xdue = data[(i + 1)][nx]; - yuno = data[i][ny]; - ydue = data[(i + 1)][ny]; - y = ((ydue - yuno) / (xdue - xuno)) * (x - xuno) + yuno; - - } - } - - return y; - } - - /** - * Interpolates the width function in a given tp. - * - * @param data - * @param tp - * @return - */ - public static double henderson( double[][] data, int tp ) { - - int rows = data.length; - - int j = 1, n = 0; - double dt = 0, muno, mdue, a, b, x, y, ydue, s_uno, s_due, smax = 0, tstar; - - for( int i = 1; i < rows; i++ ) { - - if (data[i][0] + tp <= data[(rows - 1)][0]) { - /** - * ***trovo parametri geometrici del segmento di retta y=muno - * x+a****** - */ - - muno = (data[i][1] - data[(i - 1)][1]) / (data[i][0] - data[(i - 1)][0]); - a = data[i][1] - (data[i][0] + tp) * muno; - - /** - * ***trovo i valori di x per l'intersezione tra y=(muno x+tp)+a - * e y=mdue x+b ****** - */ - for( j = 1; j <= (rows - 1); j++ ) { - mdue = (data[j][1] - data[(j - 1)][1]) / (data[j][0] - data[(j - 1)][0]); - - b = data[j][1] - data[j][0] * mdue; - x = (a - b) / (mdue - muno); - y = muno * x + a; - if (x >= data[(j - 1)][0] && x <= data[j][0] && x - tp >= data[(i - 1)][0] && x - tp <= data[i][0]) { - - ydue = width_interpolate(data, x - tp, 0, 1); - n++; - - s_uno = width_interpolate(data, x - tp, 0, 2); - - s_due = width_interpolate(data, x, 0, 2); - - if (s_due - s_uno > smax) { - smax = s_due - s_uno; - dt = x - tp; - tstar = x; - - } - } - } - - } - } - return dt; - - } - - /** - * The Gamma function. - * - * @param x - * @return the calculated gamma function. - */ - public static double gamma( double x ) { - double tmp = (x - 0.5) * log(x + 4.5) - (x + 4.5); - double ser = 1.0 + 76.18009173 / (x + 0) - 86.50532033 / (x + 1) + 24.01409822 / (x + 2) - 1.231739516 / (x + 3) - + 0.00120858003 / (x + 4) - 0.00000536382 / (x + 5); - double gamma = exp(tmp + log(ser * sqrt(2 * PI))); - return gamma; - } - - /** - * Calculates the sum of the values of a specified quantity from every point to the outlet. - * - *

                During the calculation the drainage directions are followed.

                - * - * @param flowIter the map of flowdirections. - * @param mapToSumIter the map for which to sum downstream. - * @param width the width of the resulting map. - * @param height the height of the resulting map. - * @param upperThreshold the upper threshold, values above that are excluded. - * @param lowerThreshold the lower threshold, values below that are excluded. - * @param pm the monitor. - * @return The map of downstream summed values. - */ - public static WritableRaster sumDownstream( RandomIter flowIter, RandomIter mapToSumIter, int width, int height, - Double upperThreshold, Double lowerThreshold, IJGTProgressMonitor pm ) { - final int[] point = new int[2]; - WritableRaster summedMapWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, null, null); - WritableRandomIter summedMapIter = RandomIterFactory.createWritable(summedMapWR, null); - - double uThres = Double.POSITIVE_INFINITY; - if (upperThreshold != null) { - uThres = upperThreshold; - } - double lThres = Double.NEGATIVE_INFINITY; - if (lowerThreshold != null) { - lThres = lowerThreshold; - } - - pm.beginTask("Calculating downstream sum...", height); - for( int r = 0; r < height; r++ ) { - for( int c = 0; c < width; c++ ) { - double mapToSumValue = mapToSumIter.getSampleDouble(c, r, 0); - if (!isNovalue(flowIter.getSampleDouble(c, r, 0)) && // - mapToSumValue < uThres && // - mapToSumValue > lThres // - ) { - point[0] = c; - point[1] = r; - while( flowIter.getSampleDouble(point[0], point[1], 0) < 9 - && // - !isNovalue(flowIter.getSampleDouble(point[0], point[1], 0)) - && (checkRange(mapToSumIter.getSampleDouble(point[0], point[1], 0), uThres, lThres)) ) { - - double sumValue = summedMapIter.getSampleDouble(point[0], point[1], 0) - + mapToSumIter.getSampleDouble(c, r, 0); - - summedMapIter.setSample(point[0], point[1], 0, sumValue); - - if (!go_downstream(point, flowIter.getSampleDouble(point[0], point[1], 0))) - return null; - } - - double sumValue = summedMapIter.getSampleDouble(point[0], point[1], 0) - + mapToSumIter.getSampleDouble(c, r, 0); - summedMapIter.setSample(point[0], point[1], 0, sumValue); - } else { - summedMapIter.setSample(c, r, 0, doubleNovalue); - } - } - pm.worked(1); - } - pm.done(); - - return summedMapWR; - } - - private static boolean checkRange( double value, double upper, double lower ) { - if (value < upper && value > lower) { - return true; - } - return false; - } - - /** - * Calculating the inverse of the sun vector. - * - * @param sunVector - * @return - */ - public static double[] calcInverseSunVector( double[] sunVector ) { - double m = Math.max(Math.abs(sunVector[0]), Math.abs(sunVector[1])); - return new double[]{-sunVector[0] / m, -sunVector[1] / m, -sunVector[2] / m}; - } - - /** - * Calculating the normal to the sun vector. - * - * @param sunVector - * @return - */ - public static double[] calcNormalSunVector( double[] sunVector ) { - double[] normalSunVector = new double[3]; - normalSunVector[2] = Math.sqrt(Math.pow(sunVector[0], 2) + Math.pow(sunVector[1], 2)); - normalSunVector[0] = -sunVector[0] * sunVector[2] / normalSunVector[2]; - normalSunVector[1] = -sunVector[1] * sunVector[2] / normalSunVector[2]; - return normalSunVector; - } - - /** - * Compute the dot product. - * - * @param a - * is a vector. - * @param b - * is a vector. - * @return the dot product of a and b. - */ - public static double scalarProduct( double[] a, double[] b ) { - double c = 0; - for( int i = 0; i < a.length; i++ ) { - c = c + a[i] * b[i]; - } - return c; - } - /** - * Evaluate the shadow map calling the shadow method. - * - * @param h - * the height of the raster. - * @param w - * the width of the raster. - * @param sunVector - * @param inverseSunVector - * @param normalSunVector - * @param demWR - * the elevation map. - * @param dx - * the resolution of the elevation map. - * @return the shadow map. - */ - public static WritableRaster calculateFactor( int h, int w, double[] sunVector, double[] inverseSunVector, - double[] normalSunVector, WritableRaster demWR, double dx ) { - - double casx = 1e6 * sunVector[0]; - double casy = 1e6 * sunVector[1]; - int f_i = 0; - int f_j = 0; - - if (casx <= 0) { - f_i = 0; - } else { - f_i = w - 1; - } - - if (casy <= 0) { - f_j = 0; - } else { - f_j = h - 1; - } - - WritableRaster sOmbraWR = CoverageUtilities.createDoubleWritableRaster(w, h, null, null, 1.0); - int j = f_j; - for( int i = 0; i < sOmbraWR.getWidth(); i++ ) { - shadow(i, j, sOmbraWR, demWR, dx, normalSunVector, inverseSunVector); - } - int i = f_i; - for( int k = 0; k < sOmbraWR.getHeight(); k++ ) { - shadow(i, k, sOmbraWR, demWR, dx, normalSunVector, inverseSunVector); - } - return sOmbraWR; - } - - /** - * Evaluate the shadow map. - * - * @param i - * the x axis index. - * @param j - * the y axis index. - * @param tmpWR - * the output shadow map. - * @param demWR - * the elevation map. - * @param res - * the resolution of the elevation map. - * @param normalSunVector - * @param inverseSunVector - * @return - */ - private static WritableRaster shadow( int i, int j, WritableRaster tmpWR, WritableRaster demWR, double res, - double[] normalSunVector, double[] inverseSunVector ) { - int n = 0; - double zcompare = -Double.MAX_VALUE; - double dx = (inverseSunVector[0] * n); - double dy = (inverseSunVector[1] * n); - int nCols = tmpWR.getWidth(); - int nRows = tmpWR.getHeight(); - int idx = (int) Math.round(i + dx); - int jdy = (int) Math.round(j + dy); - double vectorToOrigin[] = new double[3]; - while( idx >= 0 && idx <= nCols - 1 && jdy >= 0 && jdy <= nRows - 1 ) { - vectorToOrigin[0] = dx * res; - vectorToOrigin[1] = dy * res; - - int tmpY = (int) (j + dy); - if (tmpY < 0) { - tmpY = 0; - } else if (tmpY > nRows) { - tmpY = nRows - 1; - } - int tmpX = (int) (i + dx); - if (tmpX < 0) { - tmpX = 0; - } else if (tmpY > nCols) { - tmpX = nCols - 1; - } - vectorToOrigin[2] = demWR.getSampleDouble(idx, jdy, 0); - // vectorToOrigin[2] = (pitRandomIter.getSampleDouble(idx, jdy, 0) + - // pitRandomIter - // .getSampleDouble(tmpX, tmpY, 0)) / 2; - double zprojection = scalarProduct(vectorToOrigin, normalSunVector); - if ((zprojection < zcompare)) { - tmpWR.setSample(idx, jdy, 0, 0); - } else { - zcompare = zprojection; - } - n = n + 1; - dy = (inverseSunVector[1] * n); - dx = (inverseSunVector[0] * n); - idx = (int) Math.round(i + dx); - jdy = (int) Math.round(j + dy); - } - return tmpWR; - } - - /** - * Verify if the current station (i) is already into the arrays. - * - * @param xStation the x coordinate of the stations - * @param yStation the y coordinate of the stations - * @param zStation the z coordinate of the stations - * @param hStation the h value of the stations - * @param xTmp - * @param yTmp - * @param zTmp - * @param hTmp - * @param i the current index - * @param doMean if the h value of a double station have different value then do the mean. - * @param pm - * @return true if there is already this station. - * @throws Exception - */ - public static boolean verifyDoubleStation( double[] xStation, double[] yStation, double[] zStation, double[] hStation, - double xTmp, double yTmp, double zTmp, double hTmp, int i, boolean doMean, IJGTProgressMonitor pm ) throws Exception { - - for( int j = 0; j < i - 1; j++ ) { - - if (dEq(xTmp, xStation[j]) && dEq(yTmp, yStation[j]) && dEq(zTmp, zStation[j]) && dEq(hTmp, hStation[j])) { - if (!doMean) { - throw new IllegalArgumentException(msg.message("verifyStation.equalsStation1") + xTmp + "/" + yTmp); - } - return true; - } else if (dEq(xTmp, xStation[j]) && dEq(yTmp, yStation[j]) && dEq(zTmp, zStation[j])) { - if (!doMean) { - throw new IllegalArgumentException(msg.message("verifyStation.equalsStation2") + xTmp + "/" + yTmp); - } - if (!isNovalue(hStation[j]) && !isNovalue(hTmp)) { - hStation[j] = (hStation[j] + hTmp) / 2; - } else { - hStation[j] = doubleNovalue; - } - return true; - } - } - return false; - } - - /** - * Return the mean of a column of a matrix. - * - * @param matrix matrix of the value to calculate. - * @param column index of the column to calculate the variance. - * @return mean. - */ - public static double meanDoublematrixColumn( double[][] matrix, int column ) { - - double mean; - - mean = 0; - - int length = matrix.length; - for( int i = 0; i < length; i++ ) { - mean += matrix[i][column]; - } - - return mean / length; - - } - - /** - * Return the variance of a column of a matrix. - * - * @param matrix matrix of the value to calculate. - * @param column index of the column to calculate the variance. - * @param mean the mean value of the column. - * @return variance. - */ - public static double varianceDoublematrixColumn( double[][] matrix, int column, double mean ) - - { - - double variance; - - variance = 0; - - for( int i = 0; i < matrix.length; i++ ) { - variance += (matrix[i][column] - mean) * (matrix[i][column] - mean); - } - - return variance / matrix.length; - - } - - /** - * Sum columns. - * - *

                - * Store in a matrix (at index coulumn), the sum of the column of another - * matrix. It's necessary to specify the initial and final index of the - * coluns to sum. - *

                - * - * - * @param coolIndex index of the matrix2 where to put the result. - * @param matrixToSum contains the value to sum. - * @param resultMatrix where to put the result. - * @param firstRowIndex initial index of the colum to sum. - * @param lastRowIndex final index of the colum to sum. - * @return maximum value of the colum index of the matrix2. - */ - public static double sumDoublematrixColumns( int coolIndex, double[][] matrixToSum, double[][] resultMatrix, - int firstRowIndex, int lastRowIndex, IJGTProgressMonitor pm ) { - - double maximum; - - maximum = 0; - - if (matrixToSum.length != resultMatrix.length) { - pm.errorMessage(msg.message("trentoP.error.matrix")); //$NON-NLS-1$ - throw new ArithmeticException(msg.message("trentoP.error.matrix")); //$NON-NLS-1$ - } - if (firstRowIndex < 0 || lastRowIndex < firstRowIndex) { - pm.errorMessage(msg.message("trentoP.error.nCol")); //$NON-NLS-1$ - throw new ArithmeticException(msg.message("trentoP.error.nCol")); //$NON-NLS-1$ - } - for( int i = 0; i < matrixToSum.length; ++i ) { - resultMatrix[i][coolIndex] = 0; /* Initializes element */ - - for( int j = firstRowIndex; j <= lastRowIndex; ++j ) { - resultMatrix[i][coolIndex] += matrixToSum[i][j]; - } - - if (resultMatrix[i][coolIndex] >= maximum) /* Saves maximum value */ - { - maximum = resultMatrix[i][coolIndex]; - } - } - - return maximum; - - } - - /** - * Calculates the distance of every pixel of the basin from the outlet (in meter), - * calculated along the drainage directions - * - * @param flowIter the flow map. - * @param pitIter the pit map (if available distance is calculated in 3d). - * @param distanceToOutIter the resulting outlet distance map. - * @param region the region parameters. - * @param pm the monitor. - */ - public static void topologicalOutletdistance( RandomIter flowIter, RandomIter pitIter, WritableRandomIter distanceToOutIter, - RegionMap region, IJGTProgressMonitor pm ) { - int activeCols = region.getCols(); - int activeRows = region.getRows(); - double dx = region.getXres(); - double dy = region.getYres(); - int[] flow = new int[2]; - int[] flow_p = new int[2]; - double oldir = 0.0; - double[] grid = new double[11]; - double count = 0.0; - - grid[0] = grid[9] = grid[10] = 0; - grid[1] = grid[5] = abs(dx); - grid[3] = grid[7] = abs(dy); - grid[2] = grid[4] = grid[6] = grid[8] = sqrt(dx * dx + dy * dy); - - pm.beginTask("Calculating topological outlet distance...", activeRows); - for( int r = 0; r < activeRows; r++ ) { - for( int c = 0; c < activeCols; c++ ) { - flow[0] = c; - flow[1] = r; - if (isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0))) { - distanceToOutIter.setSample(flow[0], flow[1], 0, doubleNovalue); - } else { - if (isSourcePixel(flowIter, flow[0], flow[1])) { - count = 0; - oldir = flowIter.getSampleDouble(flow[0], flow[1], 0); - flow_p[0] = flow[0]; - flow_p[1] = flow[1]; - go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); - while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) - && !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) - && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 - && distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) <= 0 ) { - - if (pitIter != null) { - double dz = pitIter.getSampleDouble(flow_p[0], flow_p[1], 0) - - pitIter.getSampleDouble(flow[0], flow[1], 0); - count += sqrt(pow(grid[(int) oldir], 2) + pow(dz, 2)); - } else { - count += grid[(int) oldir]; - } - oldir = flowIter.getSampleDouble(flow[0], flow[1], 0); - flow_p[0] = flow[0]; - flow_p[1] = flow[1]; - go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); - } - if (distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) > 0) { - if (pitIter != null) { - double dz = pitIter.getSampleDouble(flow_p[0], flow_p[1], 0) - - pitIter.getSampleDouble(flow[0], flow[1], 0); - count += sqrt(pow(grid[(int) oldir], 2) + pow(dz, 2)) - + distanceToOutIter.getSampleDouble(flow[0], flow[1], 0); - } else { - count += grid[(int) oldir] + distanceToOutIter.getSampleDouble(flow[0], flow[1], 0); - } - distanceToOutIter.setSample(c, r, 0, count); - } else if (flowIter.getSampleDouble(flow[0], flow[1], 0) > 9) { - distanceToOutIter.setSample(flow[0], flow[1], 0, 0); - - if (pitIter != null) { - double dz = pitIter.getSampleDouble(flow_p[0], flow_p[1], 0) - - pitIter.getSampleDouble(flow[0], flow[1], 0); - count += sqrt(pow(grid[(int) oldir], 2) + pow(dz, 2)); - } else { - count += grid[(int) oldir]; - } - distanceToOutIter.setSample(c, r, 0, count); - } - - flow[0] = c; - flow[1] = r; - oldir = flowIter.getSampleDouble(flow[0], flow[1], 0); - flow_p[0] = flow[0]; - flow_p[1] = flow[1]; - go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); - while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) - && !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) - && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 - && distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) <= 0 ) { - if (pitIter != null) { - double dz = pitIter.getSampleDouble(flow_p[0], flow_p[1], 0) - - pitIter.getSampleDouble(flow[0], flow[1], 0); - count -= sqrt(pow(grid[(int) oldir], 2) + pow(dz, 2)); - } else { - count -= grid[(int) oldir]; - } - if (count < 0) { - distanceToOutIter.setSample(flow[0], flow[1], 0, 0); - } else { - distanceToOutIter.setSample(flow[0], flow[1], 0, count); - } - oldir = flowIter.getSampleDouble(flow[0], flow[1], 0); - flow_p[0] = flow[0]; - flow_p[1] = flow[1]; - - go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); - } - } - } - } - pm.worked(1); - } - pm.done(); - } - - /** - * Calculates the distance of every pixel of the basin from the outlet (in map units), - * calculated along the drainage directions - * - * @param flowIter the flow map. - * @param distanceToOutIter the resulting outlet distance map. - * @param region the region parameters. - * @param pm the monitor. - */ - public static void outletdistance( RandomIter flowIter, WritableRandomIter distanceToOutIter, RegionMap region, - IJGTProgressMonitor pm ) { - int cols = region.getCols(); - int rows = region.getRows(); - int[] flow = new int[2]; - double count = 0.0; - - pm.beginTask("Calculating outlet distance...", rows); - for( int r = 0; r < rows; r++ ) { - for( int c = 0; c < cols; c++ ) { - flow[0] = c; - flow[1] = r; - if (isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0))) { - distanceToOutIter.setSample(flow[0], flow[1], 0, doubleNovalue); - } else { - flow[0] = c; - flow[1] = r; - if (isSourcePixel(flowIter, flow[0], flow[1])) { - count = 0; - go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); - while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) - && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 - && distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) <= 0 ) { - count += 1; - go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); - } - if (distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) > 0) { - count += 1 + distanceToOutIter.getSampleDouble(flow[0], flow[1], 0); - distanceToOutIter.setSample(c, r, 0, count); - } else if (flowIter.getSampleDouble(flow[0], flow[1], 0) > 9) { - distanceToOutIter.setSample(flow[0], flow[1], 0, 0); - count += 1; - distanceToOutIter.setSample(c, r, 0, count); - } - - flow[0] = c; - flow[1] = r; - go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); - while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) - && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 - && distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) <= 0 ) { - count -= 1; - distanceToOutIter.setSample(flow[0], flow[1], 0, count); - go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); - } - } - } - } - pm.worked(1); - } - pm.done(); - } - - /** - * Approximate a value to a multiple of a divisor value. - * - *

                - * It evaluates a multiple of the divisor (which is the nearest number to valueToApproximate). - *

                - * - * @param valueToApproximate value to approximate - * @param divisor the unit value, it's the divisor number. - * @return the largest value less than or equal to valueToApproximate and divisible to divisor. - */ - public static double approximate2Multiple( double valueToApproximate, double divisor ) { - return valueToApproximate - abs(valueToApproximate % divisor); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.libs.modules; +import static java.lang.Math.PI; +import static java.lang.Math.abs; +import static java.lang.Math.exp; +import static java.lang.Math.log; +import static java.lang.Math.pow; +import static java.lang.Math.sqrt; +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; +import static org.jgrasstools.gears.utils.math.NumericsUtilities.dEq; + +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.io.IOException; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; +import javax.vecmath.Point4d; + +import org.geotools.coverage.grid.GridCoordinates2D; +import org.geotools.coverage.grid.GridEnvelope2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.coverage.grid.InvalidGridGeometryException; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.geotools.geometry.DirectPosition2D; +import org.jgrasstools.gears.i18n.GearsMessageHandler; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.math.NumericsUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.referencing.datum.PixelInCell; +import org.opengis.referencing.operation.MathTransform2D; +import org.opengis.referencing.operation.TransformException; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateList; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiLineString; + +/** + * A class containing several methods used by the modules. + * + *

                The methods are not static for usage in multithreading environment.

                + * + * @author Andrea Antonello (www.hydrologis.com) + * @author Silvia Franceschi (www.hydrologis.com) + * @author Erica Ghesla + * @author Daniele Andreis + */ +@SuppressWarnings("unchecked") +public class ModelsEngine { + private static int[][] DIR = ModelsSupporter.DIR; + + private static int[][] dirIn = ModelsSupporter.DIR_WITHFLOW_ENTERING; + + private static GearsMessageHandler msg = GearsMessageHandler.getInstance(); + + public static PixelInCell DEFAULTPIXELANCHOR = PixelInCell.CELL_CENTER; + + /** + * Moves one pixel downstream. + * + * @param colRow + * the array containing the column and row of the current pixel. + * It will be modified here to represent the next downstream + * pixel. + * @param flowdirection + * the current flowdirection number. + * @return true if everything went well. + */ + public static boolean go_downstream( int[] colRow, double flowdirection ) { + + int n = (int) flowdirection; + if (n == 10) { + return true; + } else if (n < 1 || n > 9) { + return false; + } else { + colRow[1] += DIR[n][0]; + colRow[0] += DIR[n][1]; + return true; + } + } + + /** + * Moves one pixel upstream. + * + * @param p + * @param flowRandomIter + * @param tcaRandomIter + * @param lRandomIter + * @param param + */ + public static void go_upstream_a( int[] p, RandomIter flowRandomIter, RandomIter tcaRandomIter, RandomIter lRandomIter, + int[] param ) { + double area = 0, lenght = 0; + int[] point = new int[2]; + int kk = 0, count = 0; + + point[0] = p[0]; + point[1] = p[1]; + // check how many pixels are draining in the considered pixel and select + // the pixel with maximun tca + for( int k = 1; k <= 8; k++ ) { + if (flowRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0) == dirIn[k][2]) { + // counts how many pixels are draining in the considere + count++; + if (tcaRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0) >= area) { + // if two pixels has the same tca select the pixel with the + // maximum vale of hacklength + if (tcaRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0) == area) { + if (lRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0) > lenght) { + kk = k; + area = tcaRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0); + lenght = lRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0); + point[0] = p[0] + dirIn[k][1]; + point[1] = p[1] + dirIn[k][0]; + } + } else { + kk = k; + area = tcaRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0); + lenght = lRandomIter.getSampleDouble(p[0] + dirIn[k][1], p[1] + dirIn[k][0], 0); + point[0] = p[0] + dirIn[k][1]; + point[1] = p[1] + dirIn[k][0]; + } + } + } + + } + p[0] = point[0]; + p[1] = point[1]; + param[0] = kk; + param[1] = count; + } + + /** + * Moves one pixel upstream following the supplied network. TODO Daniele doc + * + * @param colRow + * @param flowIterator + * @param netnumIterator + * @param param + */ + public static void goUpStreamOnNetFixed( int[] colRow, RandomIter flowIterator, RandomIter netnumIterator, int[] param ) { + + int kk = 0, count = 0; + int[] point = new int[2]; + + for( int k = 1; k <= 8; k++ ) { + if (flowIterator.getSampleDouble(colRow[0] + dirIn[k][1], colRow[1] + dirIn[k][0], 0) == dirIn[k][2]) { + count++; + if (netnumIterator.getSampleDouble(colRow[0] + dirIn[k][1], colRow[1] + dirIn[k][0], 0) == netnumIterator + .getSampleDouble(colRow[0], colRow[1], 0)) { + kk = k; + point[0] = colRow[0] + dirIn[k][1]; + point[1] = colRow[1] + dirIn[k][0]; + } + } + } + if (kk == 0) { + for( int k = 1; k <= 8; k++ ) { + if (flowIterator.getSampleDouble(colRow[0] + dirIn[k][1], colRow[1] + dirIn[k][0], 0) == dirIn[k][2]) { + kk = k; + point[0] = colRow[0] + dirIn[k][1]; + point[1] = colRow[1] + dirIn[k][0]; + } + } + } + colRow[0] = point[0]; + colRow[1] = point[1]; + param[0] = kk; + param[1] = count; + } + + /** + * It create the shape-file of channel network + * + * @param flowImage the map of flow direction. + * @param netNumImage the map of netnumbering. + * @param gridGeometry the {@link GridGeometry2D} of the flow coverage. + * @param nstream + * @param pm the progress monitor. + * @return the extracted features. + * @throws IOException + * @throws TransformException + */ + public static SimpleFeatureCollection net2ShapeOnly( RenderedImage flowImage, WritableRaster netNumImage, + GridGeometry2D gridGeometry, List nstream, IJGTProgressMonitor pm ) throws IOException, TransformException { + + int activecols = flowImage.getWidth(); + int activerows = flowImage.getHeight(); + + int[] flow = new int[2]; + int[] flow_p = new int[2]; + + CoordinateList coordlist = new CoordinateList(); + RandomIter m1RandomIter = RandomIterFactory.create(flowImage, null); + RandomIter netNumRandomIter = RandomIterFactory.create(netNumImage, null); + // GEOMETRY + // creates new LineSting array + LineString[] newGeometry = new LineString[nstream.size()]; + // creates a vector of geometry + List newGeometryVectorLine = new ArrayList(); + GeometryFactory newfactory = new GeometryFactory(); + + pm.beginTask(msg.message("utils.extracting_network_geometries"), nstream.size()); + for( int num = 1; num <= nstream.size(); num++ ) { + for( int y = 0; y < activerows; y++ ) { + for( int x = 0; x < activecols; x++ ) { + if (!isNovalue(m1RandomIter.getSampleDouble(x, y, 0))) { + flow[0] = x; + flow[1] = y; + // looks for the source + if (netNumRandomIter.getSampleDouble(x, y, 0) == num) { + // if the point is a source it starts to extract the + // channel... + if (sourcesNet(m1RandomIter, flow, num, netNumRandomIter)) { + flow_p[0] = flow[0]; + flow_p[1] = flow[1]; + double[] worldPosition = gridGeometry.gridToWorld(new GridCoordinates2D(flow[0], flow[1])) + .getCoordinate(); + Coordinate coordSource = new Coordinate(worldPosition[0], worldPosition[1]); + // creates new Object Coordinate... SOURCE + // POINT... + // adds the points to the CoordinateList + coordlist.add(coordSource); + if (!go_downstream(flow, m1RandomIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + // it extracts the other points of the + // channel... it + // continues until the next node... + while( !isNovalue(m1RandomIter.getSampleDouble(flow[0], flow[1], 0)) + && m1RandomIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 + && netNumRandomIter.getSampleDouble(flow[0], flow[1], 0) == num + && !isNovalue(netNumRandomIter.getSampleDouble(flow[0], flow[1], 0)) ) { + worldPosition = gridGeometry.gridToWorld(new GridCoordinates2D(flow[0], flow[1])) + .getCoordinate(); + Coordinate coordPoint = new Coordinate(worldPosition[0], worldPosition[1]); + // creates new Object Coordinate... CHANNEL + // POINT... + // adds new points to CoordinateList + coordlist.add(coordPoint); + flow_p[0] = flow[0]; + flow_p[1] = flow[1]; + if (!go_downstream(flow, m1RandomIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + } + worldPosition = gridGeometry.gridToWorld(new GridCoordinates2D(flow[0], flow[1])).getCoordinate(); + Coordinate coordNode = new Coordinate(worldPosition[0], worldPosition[1]); + // creates new Object Coordinate... NODE + // POINT... + // adds new points to CoordinateList + coordlist.add(coordNode); + } + } + } + } + } + // when the channel is complete creates one new geometry (new + // channel of the network) + newGeometry[num - 1] = newfactory.createLineString(coordlist.toCoordinateArray()); + // adds the new geometry to the vector of geometry + newGeometryVectorLine.add(newGeometry[num - 1]); + // it removes every element of coordlist + coordlist.clear(); + pm.worked(1); + } + pm.done(); + + // create the feature type + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("network"); //$NON-NLS-1$ + b.setCRS(gridGeometry.getCoordinateReferenceSystem()); + b.add("the_geom", LineString.class); //$NON-NLS-1$ + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + + SimpleFeatureCollection featureCollection = FeatureCollections.newCollection(); + int index = 0; + for( LineString lineString : newGeometryVectorLine ) { + Object[] values = new Object[]{lineString}; + // add the values + builder.addAll(values); + // build the feature with provided ID + SimpleFeature feature = builder.buildFeature(type.getTypeName() + "." + index); //$NON-NLS-1$ + index++; + featureCollection.add(feature); + } + return featureCollection; + } + + /** + * Create the {@link MultiLineString line} geometries of channel network + * + * @param flowIter the flow map. + * @param netNumIter the netnumbering map. + * @param nstream + * @param pm the progress monitor. + * @param gridGeometry the gridgeometry. + * @return the geometries of the network. + * @throws IOException + * @throws TransformException + */ + public static List net2ShapeGeometries( WritableRandomIter flowIter, RandomIter netNumIter, int[] nstream, + GridGeometry2D gridGeometry, IJGTProgressMonitor pm ) throws IOException, TransformException { + + GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); + int rows = gridRange.height; + int cols = gridRange.width; + + // screen2world + MathTransform2D gridToCRS2D = gridGeometry.getGridToCRS2D(); + + // get rows and cols from the active region + int[] flow = new int[2]; + int[] flow_p = new int[2]; + + CoordinateList coordlist = new CoordinateList(); + + // creates a vector of geometry + List newGeometryVectorLine = new ArrayList(); + GeometryFactory newfactory = new GeometryFactory(); + + /* name of new geometry (polyline) */ + pm.beginTask("Extracting the network geometries...", nstream[0]); + for( int num = 1; num <= nstream[0]; num++ ) { + for( int y = 0; y < rows; y++ ) { + for( int x = 0; x < cols; x++ ) { + flow[0] = x; + flow[1] = y; + // looks for the source + if (netNumIter.getSampleDouble(x, y, 0) == num) { + // if the point is a source it starts to extract the + // channel... + if (sourcesNet(flowIter, flow, num, netNumIter)) { + flow_p[0] = flow[0]; + flow_p[1] = flow[1]; + + Point2D worldPosition = new Point2D.Double(flow[0], flow[1]); + gridToCRS2D.transform(worldPosition, worldPosition); + Coordinate coordSource = new Coordinate(worldPosition.getX(), worldPosition.getY()); + + // creates new Object Coordinate... SOURCE POINT... + // adds the points to the CoordinateList + coordlist.add(coordSource); + if (!go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + // it extracts the other points of the channel... it + // continues until the next node... + while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) + && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 + && netNumIter.getSampleDouble(flow[0], flow[1], 0) == num + && !isNovalue(netNumIter.getSampleDouble(flow[0], flow[1], 0)) ) { + + worldPosition = new Point2D.Double(flow[0], flow[1]); + gridToCRS2D.transform(worldPosition, worldPosition); + Coordinate coordPoint = new Coordinate(worldPosition.getX(), worldPosition.getY()); + + // creates new Object Coordinate... CHANNEL + // POINT... + // adds new points to CoordinateList + coordlist.add(coordPoint); + flow_p[0] = flow[0]; + flow_p[1] = flow[1]; + if (!go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + } + worldPosition = new Point2D.Double(flow[0], flow[1]); + gridToCRS2D.transform(worldPosition, worldPosition); + Coordinate coordNode = new Coordinate(worldPosition.getX(), worldPosition.getY()); + // creates new Object Coordinate... NODE POINT... + // adds new points to CoordinateList + coordlist.add(coordNode); + } + } + } + } + // when the channel is complete creates one new geometry (new + // channel of the network) + // adds the new geometry to the vector of geometry + // if (!coordlist.isEmpty()) { + newGeometryVectorLine.add(newfactory.createMultiLineString(new LineString[]{newfactory.createLineString(coordlist + .toCoordinateArray())})); + // } else { + // if (out != null) + // out.println("Found an empty geometry at " + num); + // } + // it removes every element of coordlist + coordlist.clear(); + pm.worked(1); + } + pm.done(); + return newGeometryVectorLine; + } + + /** + * Controls if the considered point is a source in the network map. + * + * @param flowIterator + * {@link RandomIter iterator} of flowdirections map + * @param colRow the col and row of the point to check. + * @param num + * channel number + * @param netNum + * {@link RandomIter iterator} of the netnumbering map. + * @return + */ + public static boolean sourcesNet( RandomIter flowIterator, int[] colRow, int num, RandomIter netNum ) { + int[][] dir = {{0, 0, 0}, {1, 0, 5}, {1, -1, 6}, {0, -1, 7}, {-1, -1, 8}, {-1, 0, 1}, {-1, 1, 2}, {0, 1, 3}, {1, 1, 4}}; + + if (flowIterator.getSampleDouble(colRow[0], colRow[1], 0) <= 10.0 + && flowIterator.getSampleDouble(colRow[0], colRow[1], 0) > 0.0) { + for( int k = 1; k <= 8; k++ ) { + if (flowIterator.getSampleDouble(colRow[0] + dir[k][0], colRow[1] + dir[k][1], 0) == dir[k][2] + && netNum.getSampleDouble(colRow[0] + dir[k][0], colRow[1] + dir[k][1], 0) == num) { + return false; + } + } + return true; + } else { + return false; + } + + } + + /** + * Takes a input raster and vectorializes it. + * + * @param input + * @return + */ + public static double[] vectorizeDoubleMatrix( RenderedImage input ) { + double[] U = new double[input.getWidth() * input.getHeight()]; + RandomIter inputRandomIter = RandomIterFactory.create(input, null); + + int j = 0; + for( int i = 0; i < input.getHeight() * input.getWidth(); i = i + input.getWidth() ) { + double tmp[] = new double[input.getWidth()]; + for( int k = 0; k < input.getWidth(); k++ ) { + tmp[k] = inputRandomIter.getSampleDouble(k, j, 0); + } + + System.arraycopy(tmp, 0, U, i, input.getWidth()); + j++; + } + + return U; + } + + /** + * TODO Daniele doc + * + * @param U + * @param T + * @param theSplit + * @param binNum + * @param num_max + * @param out + * @return + */ + public static double split2realvectors( double[] U, double[] T, SplitVectors theSplit, int binNum, int num_max, + IJGTProgressMonitor pm ) { + + double binStep = 0, minValue = 0, maxValue; + int i, count = 0, previousCount, minPosition = 0, maxPosition = 0, emptyBins; + int[] bins; + int head = 0; + + bins = new int[U.length]; + + if (binNum <= 1) { + previousCount = 1; + count = 1; + + int index = 0; + while( count < U.length ) { + + // was while( count <= U.length && U[count] == U[count - 1] ) { + while( count < U.length && U[count] == U[count - 1] ) { + count++; + } + + index++; + bins[index] = count - previousCount; + head++; + previousCount = count; + count++; + if (head > num_max) + throw new ModelsIllegalargumentException("The number of bin eccedes the maximum number allowed.", "MODEL"); + } + + } else if (binNum > 1) { + + minPosition = 0; + maxValue = U[U.length - 1]; + while( minPosition < U.length && isNovalue(U[minPosition]) ) { + minPosition++; + } + if (minPosition == U.length) { + // force the situation of non calculation + binStep = 0; + } else { + minValue = U[minPosition]; + maxPosition = U.length - 1; + + binStep = (maxValue - minValue) / (binNum - 1); + } + + if (binStep != 0) { + int binIndex = 0; + + previousCount = minPosition; // the novalues are already left aside + count = minPosition; + emptyBins = 0; + + double runningCenter = minValue + binStep / 2.0; + + for( int n = 0; n < binNum - 1; n++ ) { + double upperLimitOfBin; + if (n == binNum - 2) { + upperLimitOfBin = maxValue; + } else { + upperLimitOfBin = runningCenter + binStep / 2.0; + } + if (U[count] <= upperLimitOfBin) { + double value = U[count]; + while( value <= upperLimitOfBin ) { + count++; + if (count > maxPosition) { + break; + } + value = U[count]; + } + + bins[binIndex] = count - previousCount; + // contained in the bin + binIndex++; + + head++; + previousCount = count; + // count++; + + } else { + emptyBins++; + } + runningCenter += binStep; + } + + if (emptyBins != 0) { + pm.message(emptyBins + " empty bins where found"); + } + } else { + for( double tmpValue : U ) { + if (!isNovalue(tmpValue)) { + count++; + } + } + bins[0] = count; + head = count; + } + + } + + if (head < 1) { + throw new ModelsIllegalargumentException("Something wrong happened in binning", "MODEL"); + } else { + theSplit.initIndex(head); + + int maxnumberinbin = 0; + for( i = 0; i < head; i++ ) { + theSplit.splitIndex[i] = bins[i]; + if (bins[i] > maxnumberinbin) + maxnumberinbin = bins[i]; + } + + /* + * now a list of the values inside the bins are put into the + * matrixes, therefore we need as many rows as bins and a column + * number high enough to hold the major number of values hold inside + * a bin. + */ + theSplit.initValues(head, maxnumberinbin); + + int index = minPosition; + for( int j = 0; j < head; j++ ) { + for( int k = 0; k < theSplit.splitIndex[j]; k++ ) { + theSplit.splitValues1[j][k] = U[index]; + theSplit.splitValues2[j][k] = T[index]; + index++; + } + } + } + + if (binNum < 2) + binStep = 0; + + return binStep; + } + + public static double doubleNMoment( double[] m, int nh, double mean, double NN, IJGTProgressMonitor pm ) { + double moment = 0.0, n; + + n = 0; + + if (NN == 1.0) { + + for( int i = 0; i < nh; i++ ) { + + if (!isNovalue(m[i])) { + moment += m[i]; + n++; + } + + } + + if (n >= 1) { + moment /= n; + } else { + pm.errorMessage("No valid data were processed, setting moment value to zero."); + moment = 0.0; + } + + } else if (NN == 2.0) { + for( int i = 0; i < nh; i++ ) { + if (!isNovalue(m[i])) { + moment += (m[i]) * (m[i]); + n++; + } + + } + if (n >= 1) { + moment = (moment / n - mean * mean); + } else { + pm.errorMessage("No valid data were processed, setting moment value to zero."); + moment = 0.0; + } + + } else { + for( int i = 0; i < nh; i++ ) { + if (!isNovalue(m[i])) { + moment += pow((m[i] - mean), NN); + n++; + } + + } + if (n >= 1) { + moment /= n; + + } else { + pm.errorMessage("No valid data were processed, setting moment value to zero."); + moment = 0.0; + } + + } + + return moment; + } + + /** + * this method numerating every stream + */ + public static WritableRaster netNumbering( List nstream, RandomIter flowIter, RandomIter networkIter, int width, + int height, IJGTProgressMonitor pm ) { + int[] flow = new int[2]; + int gg = 0, n = 0, f; + WritableRaster netnumWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, null, null); + WritableRandomIter netnumIter = RandomIterFactory.createWritable(netnumWR, null); + + /* numerating every stream */ + GearsMessageHandler msg = GearsMessageHandler.getInstance(); + pm.beginTask(msg.message("utils.numbering_stream"), height); + for( int j = 0; j < height; j++ ) { + for( int i = 0; i < width; i++ ) { + flow[0] = i; + flow[1] = j; + if (!isNovalue(networkIter.getSampleDouble(i, j, 0)) && flowIter.getSampleDouble(i, j, 0) != 10.0 + && netnumIter.getSampleDouble(i, j, 0) == 0.0) { + f = 0; + for( int k = 1; k <= 8; k++ ) { + if (flowIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2] + && !isNovalue(networkIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0))) { + break; + } else + f++; + } + // if the pixel is a source... + if (f == 8) { + n++; + nstream.add(n); + netnumIter.setSample(i, j, 0, n); + if (!go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) + && netnumIter.getSampleDouble(flow[0], flow[1], 0) == 0 ) { + gg = 0; + for( int k = 1; k <= 8; k++ ) { + if (!isNovalue(networkIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0)) + && flowIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2]) { + gg++; + } + } + if (gg >= 2) { + n++; + nstream.add(n); + netnumIter.setSample(flow[0], flow[1], 0, n); + } else { + netnumIter.setSample(flow[0], flow[1], 0, n); + } + if (!go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + } + } + } + } + pm.worked(1); + } + pm.done(); + return netnumWR; + } + + /** + * this method numerating every stream and subdivide the stream when tca is + * greater than a threshold + */ + public static WritableRaster netNumberingWithTca( List nstream, RandomIter mRandomIter, RandomIter netRandomIter, + RandomIter tcaRandomIter, int cols, int rows, double tcaTh, IJGTProgressMonitor pm ) { + int[] flow = new int[2]; + int gg = 0, n = 0, f; + + WritableRaster outImage = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); + WritableRandomIter oMatrixRandomIter = RandomIterFactory.createWritable(outImage, null); + + double tcaValue = 0; + + pm.beginTask(msg.message("utils.numbering_stream"), rows); + /* numerating every stream */ + for( int j = 0; j < rows; j++ ) { + // ShowPercent.getPercent(copt, i, rows - 1, 1); + for( int i = 0; i < cols; i++ ) { + flow[0] = i; + flow[1] = j; + if (!isNovalue(netRandomIter.getSampleDouble(i, j, 0)) && mRandomIter.getSampleDouble(i, j, 0) != 10.0 + && oMatrixRandomIter.getSampleDouble(i, j, 0) == 0.0) { + f = 0; + for( int k = 1; k <= 8; k++ ) { + if (mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2] + && !isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0))) { + break; + } else + f++; + } + // if the pixel is a source... + if (f == 8) { + n++; + nstream.add(n); + tcaValue = tcaRandomIter.getSampleDouble(i, j, 0); + oMatrixRandomIter.setSample(i, j, 0, n); + if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + while( !isNovalue(mRandomIter.getSampleDouble(flow[0], flow[1], 0)) + && oMatrixRandomIter.getSampleDouble(flow[0], flow[1], 0) == 0 ) { + gg = 0; + for( int k = 1; k <= 8; k++ ) { + if (!isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0)) + && mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2]) { + gg++; + } + } + if (gg >= 2) { + // it is a node + n++; + nstream.add(n); + oMatrixRandomIter.setSample(flow[0], flow[1], 0, n); + tcaValue = tcaRandomIter.getSampleDouble(flow[0], flow[1], 0); + } else if (tcaRandomIter.getSampleDouble(flow[0], flow[1], 0) - tcaValue > tcaTh) { + // tca greater than threshold + n++; + nstream.add(n); + oMatrixRandomIter.setSample(flow[0], flow[1], 0, n); + tcaValue = tcaRandomIter.getSampleDouble(flow[0], flow[1], 0); + } else { + // normal point + oMatrixRandomIter.setSample(flow[0], flow[1], 0, n); + } + if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + } + } + } + } + pm.worked(1); + } + pm.done(); + return outImage; + } + + /** + * this method numerating every stream dividing the channels in fixed points + * @throws TransformException + * @throws InvalidGridGeometryException + */ + public static WritableRaster netNumberingWithPoints( List nstream, RandomIter mRandomIter, RandomIter netRandomIter, + int rows, int cols, List> attributePoints, List geomVect, GridGeometry2D gridGeometry, + String reteId, IJGTProgressMonitor pm ) throws InvalidGridGeometryException, TransformException { + int[] flow = new int[2]; + int gg = 0, n = 0, f; + WritableRaster outImage = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); + WritableRandomIter oMatrixRandomIter = RandomIterFactory.createWritable(outImage, null); + + Rectangle2D regionBox = gridGeometry.getEnvelope2D().getBounds2D(); + + List points = new ArrayList(); + // new rectangle for active region + Number nodoId; + int l = 0; + int numGeometry = 0; + // insert the points in a Vector of points + for( Geometry pointV : geomVect ) { + for( int i = 0; i < pointV.getNumGeometries(); i++ ) { + GridCoordinates2D gridCoordinate = gridGeometry.worldToGrid(new DirectPosition2D(pointV.getCoordinates()[0].x, + pointV.getCoordinates()[0].y)); + nodoId = (Number) attributePoints.get(numGeometry).get(reteId); + if (nodoId == null) { + throw new ModelsIllegalargumentException("Field " + reteId + " not found", ""); + } + if (nodoId.intValue() != -1 + && regionBox.contains(new Point2D.Double(pointV.getCoordinates()[0].x, pointV.getCoordinates()[0].y))) { + points.add(new Point4d(gridCoordinate.x, gridCoordinate.y, nodoId.doubleValue(), 0)); + l++; + } + } + numGeometry++; + } + // if the points isn't on the channel net, move the point + int p = 0; + for( Point4d point4d : points ) { + if (netRandomIter.getSampleDouble((int) point4d.x, (int) point4d.y, 0) != point4d.z) { + for( int i = 1; i < 9; i++ ) { + int indexI = (int) point4d.x + dirIn[i][1]; + int indexJ = (int) point4d.y + dirIn[i][0]; + if (netRandomIter.getSampleDouble(indexI, indexJ, 0) == point4d.z) { + point4d.x = indexI; + point4d.y = indexJ; + } + } + } + } + for( Point4d point4d : points ) { + if (netRandomIter.getSampleDouble((int) point4d.x, (int) point4d.y, 0) == point4d.z) { + p++; + } + } + + pm.beginTask(msg.message("utils.numbering_stream"), rows); + /* Selects every node and go downstream */ + for( int j = 0; j < rows; j++ ) { + // ShowPercent.getPercent(copt, i, rows - 1, 1); + for( int i = 0; i < cols; i++ ) { + flow[0] = i; + flow[1] = j; + if (!isNovalue(netRandomIter.getSampleDouble(i, j, 0)) && mRandomIter.getSampleDouble(i, j, 0) != 10.0 + && oMatrixRandomIter.getSampleDouble(i, j, 0) == 0.0) { + f = 0; + // look for the source... + for( int k = 1; k <= 8; k++ ) { + if (mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2] + && !isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0))) { + break; + } else + f++; + } + // if the pixel is a source...starts to assign a number to + // every stream + if (f == 8) { + n++; + nstream.add(n); + oMatrixRandomIter.setSample(i, j, 0, n); + if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + for( Point4d point4d : points ) { + if (point4d.x == flow[0] && point4d.y == flow[1]) { + n++; + nstream.add(n); + point4d.w = n - 1; + /* + * omatrix.getSampleDouble(i,j) = n; if + * (!FluidUtils.go_downstream(flow, + * m.getSampleDouble(flow[0],flow[1]), copt)) ; + */ + } + } + while( !isNovalue(mRandomIter.getSampleDouble(flow[0], flow[1], 0)) + && oMatrixRandomIter.getSampleDouble(flow[0], flow[1], 0) == 0 + && mRandomIter.getSampleDouble(flow[0], flow[1], 0) != 10 ) { + gg = 0; + for( int k = 1; k <= 8; k++ ) { + if (!isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0)) + && mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2]) { + gg++; + } + } + if (gg >= 2) { + n++; + nstream.add(n); + oMatrixRandomIter.setSample(flow[0], flow[1], 0, n); + } else { + oMatrixRandomIter.setSample(flow[0], flow[1], 0, n); + } + if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + for( Point4d point4d : points ) { + if (point4d.x == flow[0] && point4d.y == flow[1]) { + n++; + nstream.add(n); + point4d.w = n - 1; + } + } + } + } + } + } + pm.worked(1); + } + pm.done(); + return outImage; + } + + /** + * this method numerating every stream dividing the channels in fixed points + * @param out + * @throws TransformException + * @throws InvalidGridGeometryException + */ + public static WritableRaster netNumberingWithPointsAndTca( List nstream, RandomIter mRandomIter, + RandomIter netRandomIter, RandomIter tcaRandomIter, double tcaTh, int rows, int cols, + List> attributePoints, List geomVect, GridGeometry2D gridGeometry, + IJGTProgressMonitor pm ) throws InvalidGridGeometryException, TransformException { + int[] flow = new int[2]; + int gg = 0, n = 0, f; + + double tcaValue = 0; + + List points = new ArrayList(); + // new rectangle for active region + Rectangle2D regionBox = gridGeometry.getEnvelope2D().getBounds2D(); + Number nodoId; + int l = 0; + int numGeometry = 0; + // insert the points in a Vector of points + for( Geometry pointV : geomVect ) { + for( int i = 0; i < pointV.getNumGeometries(); i++ ) { + GridCoordinates2D gridCoordinate = gridGeometry.worldToGrid(new DirectPosition2D(pointV.getCoordinates()[0].x, + pointV.getCoordinates()[0].y)); + nodoId = (Number) attributePoints.get(numGeometry).get("RETE_ID"); + if (nodoId == null) { + throw new ModelsIllegalargumentException("Field RETE_ID not found", ""); + } + if (nodoId.intValue() != -1 + && regionBox.contains(new Point2D.Double(pointV.getCoordinates()[0].x, pointV.getCoordinates()[0].y))) { + points.add(new Point4d(gridCoordinate.x, gridCoordinate.y, nodoId.doubleValue(), 0)); + l++; + } + } + numGeometry++; + } + // if the points isn't on the channel net, move the point + int p = 0; + + WritableRaster outImage = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); + WritableRandomIter oRandomIter = RandomIterFactory.createWritable(outImage, null); + + for( Point4d point4d : points ) { + if (netRandomIter.getSampleDouble((int) point4d.x, (int) point4d.y, 0) != point4d.z) { + for( int i = 1; i < 9; i++ ) { + int indexI = (int) point4d.x + dirIn[i][1]; + int indexJ = (int) point4d.y + dirIn[i][0]; + if (netRandomIter.getSampleDouble(indexI, indexJ, 0) == point4d.z) { + point4d.x = indexI; + point4d.y = indexJ; + } + } + } + } + for( Point4d point4d : points ) { + if (netRandomIter.getSampleDouble((int) point4d.x, (int) point4d.y, 0) == point4d.z) { + p++; + } + } + + pm.beginTask(msg.message("utils.numbering_stream"), rows); + /* Selects every node and go downstream */ + for( int j = 0; j < rows; j++ ) { + // ShowPercent.getPercent(copt, i, rows - 1, 1); + for( int i = 0; i < cols; i++ ) { + flow[0] = i; + flow[1] = j; + if (!isNovalue(netRandomIter.getSampleDouble(i, j, 0)) && mRandomIter.getSampleDouble(i, j, 0) != 10.0 + && oRandomIter.getSampleDouble(i, j, 0) == 0.0) { + f = 0; + // look for the source... + for( int k = 1; k <= 8; k++ ) { + if (mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2] + && !isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0))) { + break; + } else + f++; + } + // if the pixel is a source...starts to assigne a number to + // every stream + if (f == 8) { + n++; + nstream.add(n); + oRandomIter.setSample(i, j, 0, n); + if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + for( Point4d point4d : points ) { + if (point4d.y == flow[1] && point4d.x == flow[0]) { + n++; + nstream.add(n); + point4d.w = n - 1; + /* + * omatrix.getValueAt(i,j) = n; if + * (!FluidUtils.go_downstream(flow, + * m.getValueAt(flow[0],flow[1]), copt)) ; + */ + } + } + while( !isNovalue(mRandomIter.getSampleDouble(flow[0], flow[1], 0)) + && oRandomIter.getSampleDouble(flow[0], flow[1], 0) == 0 + && mRandomIter.getSampleDouble(flow[0], flow[1], 0) != 10 ) { + gg = 0; + for( int k = 1; k <= 8; k++ ) { + if (!isNovalue(netRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0)) + && mRandomIter.getSampleDouble(flow[0] + dirIn[k][1], flow[1] + dirIn[k][0], 0) == dirIn[k][2]) { + gg++; + } + } + if (gg >= 2) { + // it is a node + n++; + oRandomIter.setSample(flow[0], flow[1], 0, n); + tcaValue = tcaRandomIter.getSampleDouble(flow[0], flow[1], 0); + } else if (tcaRandomIter.getSampleDouble(flow[0], flow[1], 0) - tcaValue > tcaTh) { + // tca greater than threshold + n++; + nstream.add(n); + oRandomIter.setSample(flow[0], flow[1], 0, n); + tcaValue = tcaRandomIter.getSampleDouble(flow[0], flow[1], 0); + } else { + // normal point + oRandomIter.setSample(flow[0], flow[1], 0, n); + } + if (!go_downstream(flow, mRandomIter.getSampleDouble(flow[0], flow[1], 0))) + return null; + for( Point4d point4d : points ) { + if (point4d.y == flow[1] && point4d.x == flow[0]) { + n++; + nstream.add(n); + point4d.w = n - 1; + } + } + } + } + } + } + pm.worked(1); + } + pm.done(); + + oRandomIter.done(); + tcaRandomIter.done(); + // mRandomIter.done(); + // netRandomIter.done(); + return outImage; + } + + /** + * Extract the subbasins of a raster map. + * + * @param flowIter the map of flowdirections. + * @param netRandomIter the network map. + * @param netNumberIter the netnumber map. + * @param rows rows of the region. + * @param cols columns of the region. + * @param pm + * @return the map of extracted subbasins. + */ + public static WritableRaster extractSubbasins( WritableRandomIter flowIter, RandomIter netRandomIter, + WritableRandomIter netNumberIter, int rows, int cols, IJGTProgressMonitor pm ) { + + for( int r = 0; r < rows; r++ ) { + for( int c = 0; c < cols; c++ ) { + if (!isNovalue(netRandomIter.getSampleDouble(c, r, 0))) + flowIter.setSample(c, r, 0, 10); + } + } + + WritableRaster subbasinWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); + WritableRandomIter subbasinIter = RandomIterFactory.createWritable(subbasinWR, null); + + markHillSlopeWithLinkValue(flowIter, netNumberIter, subbasinIter, cols, rows, pm); + + for( int r = 0; r < rows; r++ ) { + for( int c = 0; c < cols; c++ ) { + double netValue = netRandomIter.getSampleDouble(c, r, 0); + double netNumberValue = netNumberIter.getSampleDouble(c, r, 0); + if (!isNovalue(netValue)) { + subbasinIter.setSample(c, r, 0, netNumberValue); + } + if (NumericsUtilities.dEq(netNumberValue, 0)) { + netNumberIter.setSample(c, r, 0, JGTConstants.doubleNovalue); + } + double subbValue = subbasinIter.getSampleDouble(c, r, 0); + if (NumericsUtilities.dEq(subbValue, 0)) + subbasinIter.setSample(c, r, 0, JGTConstants.doubleNovalue); + } + } + + return subbasinWR; + } + + /** + * Marks a map on the hillslope with the values on the channel of an attribute map. + * + * @param flowIter map of flow direction with the network cells + * all marked as {@link FlowNode#NETVALUE}. This is very important! + * @param attributeIter map of attributes. + * @param markedIter the map to be marked. + * @param cols region cols. + * @param rows region rows. + * @param pm monitor. + */ + public static void markHillSlopeWithLinkValue( RandomIter flowIter, RandomIter attributeIter, WritableRandomIter markedIter, + int cols, int rows, IJGTProgressMonitor pm ) { + pm.beginTask("Marking the hillslopes with the channel value...", rows); + for( int r = 0; r < rows; r++ ) { + for( int c = 0; c < cols; c++ ) { + FlowNode flowNode = new FlowNode(flowIter, cols, rows, c, r); + if (flowNode.isHeadingOutside()) { + // ignore single cells on borders that exit anyway + continue; + } + + if (flowNode.isMarkedAsOutlet()) { + double attributeValue = flowNode.getValueFromMap(attributeIter); + flowNode.setValueInMap(markedIter, attributeValue); + continue; + } + if (flowNode.isValid() && flowNode.isSource()) { + /* + * run down to the net to find the + * attribute map content on the net + */ + double attributeValue = doubleNovalue; + FlowNode runningNode = flowNode.goDownstream(); + while( runningNode != null && runningNode.isValid() ) { + if (runningNode.isMarkedAsOutlet()) { + attributeValue = runningNode.getValueFromMap(attributeIter); + break; + } + runningNode = runningNode.goDownstream(); + } + if (!isNovalue(attributeValue)) { + // run down marking the hills + runningNode = flowNode; + while( runningNode != null && runningNode.isValid() ) { + runningNode.setValueInMap(markedIter, attributeValue); + if (runningNode.isMarkedAsOutlet()) { + break; + } + runningNode = runningNode.goDownstream(); + } + } else { + throw new ModelsIllegalargumentException("Could not find a value of the attributes map in the channel.", + "MODELSENGINE"); + } + } + } + pm.worked(1); + } + pm.done(); + } + + /** + * Verifies if the point is a source pixel in the supplied flow raster. + * + * @param flowIter the {@link RandomIter iterator} of the flowdirections. + * @param col the col of the point to check. + * @param row the row of the point to check. + * @return true if the point identified by col and row is a source pixel. + */ + public static boolean isSourcePixel( RandomIter flowIter, int col, int row ) { + double flowDirection = flowIter.getSampleDouble(col, row, 0); + if (flowDirection < 9.0 && flowDirection > 0.0) { + for( int k = 1; k <= 8; k++ ) { + if (flowIter.getSampleDouble(col + dirIn[k][1], row + dirIn[k][0], 0) == dirIn[k][2]) { + return false; + } + } + return true; + } else { + return false; + } + } + + /** + * Returns the flow direction value for a given point as indexes (i, j) of the dir matrix. + * + * @param i + * @param j + * @return + */ + public static int getFlowDirection( int i, int j ) { + int flow = -1; + for( int k = 1; k < 9; k++ ) { + if (ModelsSupporter.DIR[k][0] == i && ModelsSupporter.DIR[k][1] == j) { + flow = k; + } + } + return flow; + } + + /** + * Linear interpolation between two values + * + * @param data + * - matrix of values to interpolate + * @param x + * - value to interpolate + * @param nx + * - column of data in which you find the x values + * @param ny + * - column of data in which you find the y values + * @return + */ + public static double width_interpolate( double[][] data, double x, int nx, int ny ) { + + int rows = data.length; + double xuno = 0, xdue = 0, yuno = 0, ydue = 0, y = 0; + + // if 0, interpolate between 0 and the first value of data + if (x >= 0 && x < data[0][nx]) { + xuno = 0; + xdue = data[0][nx]; + yuno = 0; + ydue = data[0][ny]; + y = ((ydue - yuno) / (xdue - xuno)) * (x - xuno) + yuno; + } + + // if it is less than 0 and bigger than the maximum, throw error + if (x > data[(rows - 1)][nx] || x < 0) { + throw new RuntimeException(MessageFormat.format( + "Error in the interpolation algorithm: entering with x = {0} (min = 0.0 max = {1}", x, data[(rows - 1)][nx])); + } + + /* trovo i valori limite entro i quali effettuo l'interpolazione lineare */ + for( int i = 0; i < rows - 1; i++ ) { + + if (x > data[i][nx] && x <= data[(i + 1)][nx]) { + xuno = data[i][nx]; + xdue = data[(i + 1)][nx]; + yuno = data[i][ny]; + ydue = data[(i + 1)][ny]; + y = ((ydue - yuno) / (xdue - xuno)) * (x - xuno) + yuno; + + } + } + + return y; + } + + /** + * Interpolates the width function in a given tp. + * + * @param data + * @param tp + * @return + */ + public static double henderson( double[][] data, int tp ) { + + int rows = data.length; + + int j = 1, n = 0; + double dt = 0, muno, mdue, a, b, x, y, ydue, s_uno, s_due, smax = 0, tstar; + + for( int i = 1; i < rows; i++ ) { + + if (data[i][0] + tp <= data[(rows - 1)][0]) { + /** + * ***trovo parametri geometrici del segmento di retta y=muno + * x+a****** + */ + + muno = (data[i][1] - data[(i - 1)][1]) / (data[i][0] - data[(i - 1)][0]); + a = data[i][1] - (data[i][0] + tp) * muno; + + /** + * ***trovo i valori di x per l'intersezione tra y=(muno x+tp)+a + * e y=mdue x+b ****** + */ + for( j = 1; j <= (rows - 1); j++ ) { + mdue = (data[j][1] - data[(j - 1)][1]) / (data[j][0] - data[(j - 1)][0]); + + b = data[j][1] - data[j][0] * mdue; + x = (a - b) / (mdue - muno); + y = muno * x + a; + if (x >= data[(j - 1)][0] && x <= data[j][0] && x - tp >= data[(i - 1)][0] && x - tp <= data[i][0]) { + + ydue = width_interpolate(data, x - tp, 0, 1); + n++; + + s_uno = width_interpolate(data, x - tp, 0, 2); + + s_due = width_interpolate(data, x, 0, 2); + + if (s_due - s_uno > smax) { + smax = s_due - s_uno; + dt = x - tp; + tstar = x; + + } + } + } + + } + } + return dt; + + } + + /** + * The Gamma function. + * + * @param x + * @return the calculated gamma function. + */ + public static double gamma( double x ) { + double tmp = (x - 0.5) * log(x + 4.5) - (x + 4.5); + double ser = 1.0 + 76.18009173 / (x + 0) - 86.50532033 / (x + 1) + 24.01409822 / (x + 2) - 1.231739516 / (x + 3) + + 0.00120858003 / (x + 4) - 0.00000536382 / (x + 5); + double gamma = exp(tmp + log(ser * sqrt(2 * PI))); + return gamma; + } + + /** + * Calculates the sum of the values of a specified quantity from every point to the outlet. + * + *

                During the calculation the drainage directions are followed.

                + * + * @param flowIter the map of flowdirections. + * @param mapToSumIter the map for which to sum downstream. + * @param width the width of the resulting map. + * @param height the height of the resulting map. + * @param upperThreshold the upper threshold, values above that are excluded. + * @param lowerThreshold the lower threshold, values below that are excluded. + * @param pm the monitor. + * @return The map of downstream summed values. + */ + public static WritableRaster sumDownstream( RandomIter flowIter, RandomIter mapToSumIter, int width, int height, + Double upperThreshold, Double lowerThreshold, IJGTProgressMonitor pm ) { + final int[] point = new int[2]; + WritableRaster summedMapWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, null, null); + WritableRandomIter summedMapIter = RandomIterFactory.createWritable(summedMapWR, null); + + double uThres = Double.POSITIVE_INFINITY; + if (upperThreshold != null) { + uThres = upperThreshold; + } + double lThres = Double.NEGATIVE_INFINITY; + if (lowerThreshold != null) { + lThres = lowerThreshold; + } + + pm.beginTask("Calculating downstream sum...", height); + for( int r = 0; r < height; r++ ) { + for( int c = 0; c < width; c++ ) { + double mapToSumValue = mapToSumIter.getSampleDouble(c, r, 0); + if (!isNovalue(flowIter.getSampleDouble(c, r, 0)) && // + mapToSumValue < uThres && // + mapToSumValue > lThres // + ) { + point[0] = c; + point[1] = r; + while( flowIter.getSampleDouble(point[0], point[1], 0) < 9 + && // + !isNovalue(flowIter.getSampleDouble(point[0], point[1], 0)) + && (checkRange(mapToSumIter.getSampleDouble(point[0], point[1], 0), uThres, lThres)) ) { + + double sumValue = summedMapIter.getSampleDouble(point[0], point[1], 0) + + mapToSumIter.getSampleDouble(c, r, 0); + + summedMapIter.setSample(point[0], point[1], 0, sumValue); + + if (!go_downstream(point, flowIter.getSampleDouble(point[0], point[1], 0))) + return null; + } + + double sumValue = summedMapIter.getSampleDouble(point[0], point[1], 0) + + mapToSumIter.getSampleDouble(c, r, 0); + summedMapIter.setSample(point[0], point[1], 0, sumValue); + } else { + summedMapIter.setSample(c, r, 0, doubleNovalue); + } + } + pm.worked(1); + } + pm.done(); + + return summedMapWR; + } + + private static boolean checkRange( double value, double upper, double lower ) { + if (value < upper && value > lower) { + return true; + } + return false; + } + + /** + * Calculating the inverse of the sun vector. + * + * @param sunVector + * @return + */ + public static double[] calcInverseSunVector( double[] sunVector ) { + double m = Math.max(Math.abs(sunVector[0]), Math.abs(sunVector[1])); + return new double[]{-sunVector[0] / m, -sunVector[1] / m, -sunVector[2] / m}; + } + + /** + * Calculating the normal to the sun vector. + * + * @param sunVector + * @return + */ + public static double[] calcNormalSunVector( double[] sunVector ) { + double[] normalSunVector = new double[3]; + normalSunVector[2] = Math.sqrt(Math.pow(sunVector[0], 2) + Math.pow(sunVector[1], 2)); + normalSunVector[0] = -sunVector[0] * sunVector[2] / normalSunVector[2]; + normalSunVector[1] = -sunVector[1] * sunVector[2] / normalSunVector[2]; + return normalSunVector; + } + + /** + * Compute the dot product. + * + * @param a + * is a vector. + * @param b + * is a vector. + * @return the dot product of a and b. + */ + public static double scalarProduct( double[] a, double[] b ) { + double c = 0; + for( int i = 0; i < a.length; i++ ) { + c = c + a[i] * b[i]; + } + return c; + } + /** + * Evaluate the shadow map calling the shadow method. + * + * @param h + * the height of the raster. + * @param w + * the width of the raster. + * @param sunVector + * @param inverseSunVector + * @param normalSunVector + * @param demWR + * the elevation map. + * @param dx + * the resolution of the elevation map. + * @return the shadow map. + */ + public static WritableRaster calculateFactor( int h, int w, double[] sunVector, double[] inverseSunVector, + double[] normalSunVector, WritableRaster demWR, double dx ) { + + double casx = 1e6 * sunVector[0]; + double casy = 1e6 * sunVector[1]; + int f_i = 0; + int f_j = 0; + + if (casx <= 0) { + f_i = 0; + } else { + f_i = w - 1; + } + + if (casy <= 0) { + f_j = 0; + } else { + f_j = h - 1; + } + + WritableRaster sOmbraWR = CoverageUtilities.createDoubleWritableRaster(w, h, null, null, 1.0); + int j = f_j; + for( int i = 0; i < sOmbraWR.getWidth(); i++ ) { + shadow(i, j, sOmbraWR, demWR, dx, normalSunVector, inverseSunVector); + } + int i = f_i; + for( int k = 0; k < sOmbraWR.getHeight(); k++ ) { + shadow(i, k, sOmbraWR, demWR, dx, normalSunVector, inverseSunVector); + } + return sOmbraWR; + } + + /** + * Evaluate the shadow map. + * + * @param i + * the x axis index. + * @param j + * the y axis index. + * @param tmpWR + * the output shadow map. + * @param demWR + * the elevation map. + * @param res + * the resolution of the elevation map. + * @param normalSunVector + * @param inverseSunVector + * @return + */ + private static WritableRaster shadow( int i, int j, WritableRaster tmpWR, WritableRaster demWR, double res, + double[] normalSunVector, double[] inverseSunVector ) { + int n = 0; + double zcompare = -Double.MAX_VALUE; + double dx = (inverseSunVector[0] * n); + double dy = (inverseSunVector[1] * n); + int nCols = tmpWR.getWidth(); + int nRows = tmpWR.getHeight(); + int idx = (int) Math.round(i + dx); + int jdy = (int) Math.round(j + dy); + double vectorToOrigin[] = new double[3]; + while( idx >= 0 && idx <= nCols - 1 && jdy >= 0 && jdy <= nRows - 1 ) { + vectorToOrigin[0] = dx * res; + vectorToOrigin[1] = dy * res; + + int tmpY = (int) (j + dy); + if (tmpY < 0) { + tmpY = 0; + } else if (tmpY > nRows) { + tmpY = nRows - 1; + } + int tmpX = (int) (i + dx); + if (tmpX < 0) { + tmpX = 0; + } else if (tmpY > nCols) { + tmpX = nCols - 1; + } + vectorToOrigin[2] = demWR.getSampleDouble(idx, jdy, 0); + // vectorToOrigin[2] = (pitRandomIter.getSampleDouble(idx, jdy, 0) + + // pitRandomIter + // .getSampleDouble(tmpX, tmpY, 0)) / 2; + double zprojection = scalarProduct(vectorToOrigin, normalSunVector); + if ((zprojection < zcompare)) { + tmpWR.setSample(idx, jdy, 0, 0); + } else { + zcompare = zprojection; + } + n = n + 1; + dy = (inverseSunVector[1] * n); + dx = (inverseSunVector[0] * n); + idx = (int) Math.round(i + dx); + jdy = (int) Math.round(j + dy); + } + return tmpWR; + } + + /** + * Verify if the current station (i) is already into the arrays. + * + * @param xStation the x coordinate of the stations + * @param yStation the y coordinate of the stations + * @param zStation the z coordinate of the stations + * @param hStation the h value of the stations + * @param xTmp + * @param yTmp + * @param zTmp + * @param hTmp + * @param i the current index + * @param doMean if the h value of a double station have different value then do the mean. + * @param pm + * @return true if there is already this station. + * @throws Exception + */ + public static boolean verifyDoubleStation( double[] xStation, double[] yStation, double[] zStation, double[] hStation, + double xTmp, double yTmp, double zTmp, double hTmp, int i, boolean doMean, IJGTProgressMonitor pm ) throws Exception { + + for( int j = 0; j < i - 1; j++ ) { + + if (dEq(xTmp, xStation[j]) && dEq(yTmp, yStation[j]) && dEq(zTmp, zStation[j]) && dEq(hTmp, hStation[j])) { + if (!doMean) { + throw new IllegalArgumentException(msg.message("verifyStation.equalsStation1") + xTmp + "/" + yTmp); + } + return true; + } else if (dEq(xTmp, xStation[j]) && dEq(yTmp, yStation[j]) && dEq(zTmp, zStation[j])) { + if (!doMean) { + throw new IllegalArgumentException(msg.message("verifyStation.equalsStation2") + xTmp + "/" + yTmp); + } + if (!isNovalue(hStation[j]) && !isNovalue(hTmp)) { + hStation[j] = (hStation[j] + hTmp) / 2; + } else { + hStation[j] = doubleNovalue; + } + return true; + } + } + return false; + } + + /** + * Return the mean of a column of a matrix. + * + * @param matrix matrix of the value to calculate. + * @param column index of the column to calculate the variance. + * @return mean. + */ + public static double meanDoublematrixColumn( double[][] matrix, int column ) { + + double mean; + + mean = 0; + + int length = matrix.length; + for( int i = 0; i < length; i++ ) { + mean += matrix[i][column]; + } + + return mean / length; + + } + + /** + * Return the variance of a column of a matrix. + * + * @param matrix matrix of the value to calculate. + * @param column index of the column to calculate the variance. + * @param mean the mean value of the column. + * @return variance. + */ + public static double varianceDoublematrixColumn( double[][] matrix, int column, double mean ) + + { + + double variance; + + variance = 0; + + for( int i = 0; i < matrix.length; i++ ) { + variance += (matrix[i][column] - mean) * (matrix[i][column] - mean); + } + + return variance / matrix.length; + + } + + /** + * Sum columns. + * + *

                + * Store in a matrix (at index coulumn), the sum of the column of another + * matrix. It's necessary to specify the initial and final index of the + * coluns to sum. + *

                + * + * + * @param coolIndex index of the matrix2 where to put the result. + * @param matrixToSum contains the value to sum. + * @param resultMatrix where to put the result. + * @param firstRowIndex initial index of the colum to sum. + * @param lastRowIndex final index of the colum to sum. + * @return maximum value of the colum index of the matrix2. + */ + public static double sumDoublematrixColumns( int coolIndex, double[][] matrixToSum, double[][] resultMatrix, + int firstRowIndex, int lastRowIndex, IJGTProgressMonitor pm ) { + + double maximum; + + maximum = 0; + + if (matrixToSum.length != resultMatrix.length) { + pm.errorMessage(msg.message("trentoP.error.matrix")); //$NON-NLS-1$ + throw new ArithmeticException(msg.message("trentoP.error.matrix")); //$NON-NLS-1$ + } + if (firstRowIndex < 0 || lastRowIndex < firstRowIndex) { + pm.errorMessage(msg.message("trentoP.error.nCol")); //$NON-NLS-1$ + throw new ArithmeticException(msg.message("trentoP.error.nCol")); //$NON-NLS-1$ + } + for( int i = 0; i < matrixToSum.length; ++i ) { + resultMatrix[i][coolIndex] = 0; /* Initializes element */ + + for( int j = firstRowIndex; j <= lastRowIndex; ++j ) { + resultMatrix[i][coolIndex] += matrixToSum[i][j]; + } + + if (resultMatrix[i][coolIndex] >= maximum) /* Saves maximum value */ + { + maximum = resultMatrix[i][coolIndex]; + } + } + + return maximum; + + } + + /** + * Calculates the distance of every pixel of the basin from the outlet (in meter), + * calculated along the drainage directions + * + * @param flowIter the flow map. + * @param pitIter the pit map (if available distance is calculated in 3d). + * @param distanceToOutIter the resulting outlet distance map. + * @param region the region parameters. + * @param pm the monitor. + */ + public static void topologicalOutletdistance( RandomIter flowIter, RandomIter pitIter, WritableRandomIter distanceToOutIter, + RegionMap region, IJGTProgressMonitor pm ) { + int activeCols = region.getCols(); + int activeRows = region.getRows(); + double dx = region.getXres(); + double dy = region.getYres(); + int[] flow = new int[2]; + int[] flow_p = new int[2]; + double oldir = 0.0; + double[] grid = new double[11]; + double count = 0.0; + + grid[0] = grid[9] = grid[10] = 0; + grid[1] = grid[5] = abs(dx); + grid[3] = grid[7] = abs(dy); + grid[2] = grid[4] = grid[6] = grid[8] = sqrt(dx * dx + dy * dy); + + pm.beginTask("Calculating topological outlet distance...", activeRows); + for( int r = 0; r < activeRows; r++ ) { + for( int c = 0; c < activeCols; c++ ) { + flow[0] = c; + flow[1] = r; + if (isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0))) { + distanceToOutIter.setSample(flow[0], flow[1], 0, doubleNovalue); + } else { + if (isSourcePixel(flowIter, flow[0], flow[1])) { + count = 0; + oldir = flowIter.getSampleDouble(flow[0], flow[1], 0); + flow_p[0] = flow[0]; + flow_p[1] = flow[1]; + go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); + while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) + && !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) + && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 + && distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) <= 0 ) { + + if (pitIter != null) { + double dz = pitIter.getSampleDouble(flow_p[0], flow_p[1], 0) + - pitIter.getSampleDouble(flow[0], flow[1], 0); + count += sqrt(pow(grid[(int) oldir], 2) + pow(dz, 2)); + } else { + count += grid[(int) oldir]; + } + oldir = flowIter.getSampleDouble(flow[0], flow[1], 0); + flow_p[0] = flow[0]; + flow_p[1] = flow[1]; + go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); + } + if (distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) > 0) { + if (pitIter != null) { + double dz = pitIter.getSampleDouble(flow_p[0], flow_p[1], 0) + - pitIter.getSampleDouble(flow[0], flow[1], 0); + count += sqrt(pow(grid[(int) oldir], 2) + pow(dz, 2)) + + distanceToOutIter.getSampleDouble(flow[0], flow[1], 0); + } else { + count += grid[(int) oldir] + distanceToOutIter.getSampleDouble(flow[0], flow[1], 0); + } + distanceToOutIter.setSample(c, r, 0, count); + } else if (flowIter.getSampleDouble(flow[0], flow[1], 0) > 9) { + distanceToOutIter.setSample(flow[0], flow[1], 0, 0); + + if (pitIter != null) { + double dz = pitIter.getSampleDouble(flow_p[0], flow_p[1], 0) + - pitIter.getSampleDouble(flow[0], flow[1], 0); + count += sqrt(pow(grid[(int) oldir], 2) + pow(dz, 2)); + } else { + count += grid[(int) oldir]; + } + distanceToOutIter.setSample(c, r, 0, count); + } + + flow[0] = c; + flow[1] = r; + oldir = flowIter.getSampleDouble(flow[0], flow[1], 0); + flow_p[0] = flow[0]; + flow_p[1] = flow[1]; + go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); + while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) + && !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) + && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 + && distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) <= 0 ) { + if (pitIter != null) { + double dz = pitIter.getSampleDouble(flow_p[0], flow_p[1], 0) + - pitIter.getSampleDouble(flow[0], flow[1], 0); + count -= sqrt(pow(grid[(int) oldir], 2) + pow(dz, 2)); + } else { + count -= grid[(int) oldir]; + } + if (count < 0) { + distanceToOutIter.setSample(flow[0], flow[1], 0, 0); + } else { + distanceToOutIter.setSample(flow[0], flow[1], 0, count); + } + oldir = flowIter.getSampleDouble(flow[0], flow[1], 0); + flow_p[0] = flow[0]; + flow_p[1] = flow[1]; + + go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); + } + } + } + } + pm.worked(1); + } + pm.done(); + } + + /** + * Calculates the distance of every pixel of the basin from the outlet (in map units), + * calculated along the drainage directions + * + * @param flowIter the flow map. + * @param distanceToOutIter the resulting outlet distance map. + * @param region the region parameters. + * @param pm the monitor. + */ + public static void outletdistance( RandomIter flowIter, WritableRandomIter distanceToOutIter, RegionMap region, + IJGTProgressMonitor pm ) { + int cols = region.getCols(); + int rows = region.getRows(); + int[] flow = new int[2]; + double count = 0.0; + + pm.beginTask("Calculating outlet distance...", rows); + for( int r = 0; r < rows; r++ ) { + for( int c = 0; c < cols; c++ ) { + flow[0] = c; + flow[1] = r; + if (isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0))) { + distanceToOutIter.setSample(flow[0], flow[1], 0, doubleNovalue); + } else { + flow[0] = c; + flow[1] = r; + if (isSourcePixel(flowIter, flow[0], flow[1])) { + count = 0; + go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); + while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) + && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 + && distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) <= 0 ) { + count += 1; + go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); + } + if (distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) > 0) { + count += 1 + distanceToOutIter.getSampleDouble(flow[0], flow[1], 0); + distanceToOutIter.setSample(c, r, 0, count); + } else if (flowIter.getSampleDouble(flow[0], flow[1], 0) > 9) { + distanceToOutIter.setSample(flow[0], flow[1], 0, 0); + count += 1; + distanceToOutIter.setSample(c, r, 0, count); + } + + flow[0] = c; + flow[1] = r; + go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); + while( !isNovalue(flowIter.getSampleDouble(flow[0], flow[1], 0)) + && flowIter.getSampleDouble(flow[0], flow[1], 0) != 10.0 + && distanceToOutIter.getSampleDouble(flow[0], flow[1], 0) <= 0 ) { + count -= 1; + distanceToOutIter.setSample(flow[0], flow[1], 0, count); + go_downstream(flow, flowIter.getSampleDouble(flow[0], flow[1], 0)); + } + } + } + } + pm.worked(1); + } + pm.done(); + } + + /** + * Approximate a value to a multiple of a divisor value. + * + *

                + * It evaluates a multiple of the divisor (which is the nearest number to valueToApproximate). + *

                + * + * @param valueToApproximate value to approximate + * @param divisor the unit value, it's the divisor number. + * @return the largest value less than or equal to valueToApproximate and divisible to divisor. + */ + public static double approximate2Multiple( double valueToApproximate, double divisor ) { + return valueToApproximate - abs(valueToApproximate % divisor); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/ModelsSupporter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/ModelsSupporter.java index d3137b9b1..aec11cd54 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/ModelsSupporter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/ModelsSupporter.java @@ -1,214 +1,214 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.libs.modules; - -/** - *

                - * Facility methods and constants used by the console engine - *

                - * - * @author Andrea Antonello - www.hydrologis.com - */ -public class ModelsSupporter { - /** name for the JGrass database constant */ - public final static String GRASSDB = "grassdb"; //$NON-NLS-1$ - - /** name for the JGrass location constant */ - public final static String LOCATION = "location"; //$NON-NLS-1$ - - /** name for the JGrass mapset constant */ - public final static String MAPSET = "mapset"; //$NON-NLS-1$ - - /** name for the startdate constant */ - public final static String STARTDATE = "time_start_up"; //$NON-NLS-1$ - - /** name for the enddate constant */ - public final static String ENDDATE = "time_ending_up"; //$NON-NLS-1$ - - /** name for the deltat constant */ - public final static String DELTAT = "time_delta"; //$NON-NLS-1$ - - /** name for the remotedb constant */ - public final static String REMOTEDBURL = "remotedburl"; //$NON-NLS-1$ - - /** name for the JGrass active region constant */ - public final static String ACTIVEREGIONWINDOW = "active region window"; //$NON-NLS-1$ - - /** name for the JGrass featurecollection */ - public final static String FEATURECOLLECTION = "featurecollection"; //$NON-NLS-1$ - - /** name for the JGrass unknown elements */ - public final static String UNKNOWN = "unknown"; //$NON-NLS-1$ - - /** name for the raster unit id */ - public final static String UNITID_RASTER = "raster unit id"; //$NON-NLS-1$ - - /** name for the color map unit id */ - public final static String UNITID_COLORMAP = "colormap unit id"; //$NON-NLS-1$ - - /** name for the text unit id */ - public final static String UNITID_TEXTFILE = "text file unit id"; //$NON-NLS-1$ - - /** name for the categories unit id */ - public final static String UNITID_CATS = "categories unit id"; //$NON-NLS-1$ - - /** name for the scalar unit id */ - public final static String UNITID_SCALAR = "scalar unit id"; //$NON-NLS-1$ - - /** name for the vector unit id */ - public final static String UNITID_FEATURE = "feature unit id"; //$NON-NLS-1$ - - /** name for the generic unit id */ - public final static String UNITID_UNKNOWN = "unknown unit id"; //$NON-NLS-1$ - - /** variable telling that the output should be redirected to console */ - public final static String CONSOLE = "CONSOLE"; //$NON-NLS-1$ - - /** variable telling that the output should be redirected to gui table */ - public final static String UITABLE = "UITABLE"; //$NON-NLS-1$ - - /** - * The 9 directions around a pixel as ROW/COL of the flowdirections grid. - *

                - * Also containing the central position 0,0 - *

                - *

                - * FIXME Erica used to add several {0,0} at the end, in order to catch certain values. Those - * have to be tracked down. - *

                - */ - public final static int[][] DIR = {{0, 0}, {0, 1}, {-1, 1}, {-1, 0}, {-1, -1}, {0, -1}, {1, -1}, {1, 0}, {1, 1}}; - - /** - * The 8 flowdirections, defined as entering towards the center cell. - * - *

                Each array contains [row, col, flowvalue]. - * - *

                NOTE that these work in ROW/COL order, not COL/ROW! - * - *

                -     *        -1     0     1 
                -     *      +-----+-----+-----+
                -     * -1   |  8  |  7  |  6  |
                -     *      +-----+-----+-----+
                -     *  0   |  1  |  0  |  5  |
                -     *      +-----+-----+-----+
                -     *  1   |  2  |  3  |  4  |
                -     *      +-----+-----+-----+
                -     *      
                -     * 
                - */ - public final static int[][] DIR_WITHFLOW_ENTERING = {// - {0, 0, 0}, // - {0, 1, 5}, // - {-1, 1, 6},// - {-1, 0, 7},// - {-1, -1, 8}, // - {0, -1, 1},// - {1, -1, 2}, // - {1, 0, 3}, // - {1, 1, 4}// - }; - - /** - * The 8 flowdirections, defined as exiting from the center cell. - * - *

                Each array contains [col, row, flowvalue]. - * - *

                -     *        -1     0     1 
                -     *      +-----+-----+-----+
                -     * -1   |  4  |  3  |  2  |
                -     *      +-----+-----+-----+
                -     *  0   |  5  |  0  |  1  |
                -     *      +-----+-----+-----+
                -     *  1   |  6  |  7  |  8  |
                -     *      +-----+-----+-----+
                -     *      
                -     * 
                - */ - public static final int[][] DIR_WITHFLOW_EXITING = {// - {0, 0, 0},// - {1, 0, 1}, // - {1, -1, 2},// - {0, -1, 3}, // - {-1, -1, 4}, // - {-1, 0, 5},// - {-1, 1, 6},// - {0, 1, 7},// - {1, 1, 8}, // - {0, 0, 9}, // - {0, 0, 10}// - }; - - /* - * This is similar to exiting inverted, but is in cols and rows and have a particular order to work (in tca3d) with triangle. - */ - public static final int[][] DIR_WITHFLOW_EXITING_INVERTED = {{0, 0, 0}, {0, 1, 1}, {-1, 1, 2}, {-1, 0, 3}, {-1, -1, 4}, - {0, -1, 5}, {1, -1, 6}, {1, 0, 7}, {1, 1, 8}, {0, 0, 9}, {0, 0, 10}}; - - /** - * Calculate the drainage direction factor (is used in some horton machine like pitfiller, - * flow,...) - *

                - * Is the distance betwen the central pixel, in a 3x3 kernel, and the neighboured pixels. - * - * @param dx is the resolution of a raster map in the x direction. - * @param dy is the resolution of the raster map in the y direction. - * @return fact the direction factor or 1/lenght where lenght is the distance of the - * pixel from the central poxel. - */ - public static double[] calculateDirectionFactor( double dx, double dy ) { - // direction factor, where the components are 1/length - double[] fact = new double[9]; - for( int k = 1; k <= 8; k++ ) { - fact[k] = 1.0 / (Math.sqrt(DIR[k][0] * dy * DIR[k][0] * dy + DIR[k][1] * DIR[k][1] * dx * dx)); - } - return fact; - } - - // /////////////////////////////////////////////////// - // MAP TYPES - // /////////////////////////////////////////////////// - - /** - * color map type identificator - */ - final public static String COLORMAP = "colormap"; //$NON-NLS-1$ - - /** - * text file type identificator - */ - final public static String TEXTFILE = "textfile"; //$NON-NLS-1$ - - /** - * color map type identificator - */ - final public static String CATSMAP = "catsmap"; //$NON-NLS-1$ - - /** - * raster map type identificator - */ - final public static String GRASSRASTERMAP = "grassrastermap"; //$NON-NLS-1$ - - final public static String DEFAULTKEY = "defaultkey"; //$NON-NLS-1$ - - public static final String RESOLUTION = "resolution"; - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.libs.modules; + +/** + *

                + * Facility methods and constants used by the console engine + *

                + * + * @author Andrea Antonello - www.hydrologis.com + */ +public class ModelsSupporter { + /** name for the JGrass database constant */ + public final static String GRASSDB = "grassdb"; //$NON-NLS-1$ + + /** name for the JGrass location constant */ + public final static String LOCATION = "location"; //$NON-NLS-1$ + + /** name for the JGrass mapset constant */ + public final static String MAPSET = "mapset"; //$NON-NLS-1$ + + /** name for the startdate constant */ + public final static String STARTDATE = "time_start_up"; //$NON-NLS-1$ + + /** name for the enddate constant */ + public final static String ENDDATE = "time_ending_up"; //$NON-NLS-1$ + + /** name for the deltat constant */ + public final static String DELTAT = "time_delta"; //$NON-NLS-1$ + + /** name for the remotedb constant */ + public final static String REMOTEDBURL = "remotedburl"; //$NON-NLS-1$ + + /** name for the JGrass active region constant */ + public final static String ACTIVEREGIONWINDOW = "active region window"; //$NON-NLS-1$ + + /** name for the JGrass featurecollection */ + public final static String FEATURECOLLECTION = "featurecollection"; //$NON-NLS-1$ + + /** name for the JGrass unknown elements */ + public final static String UNKNOWN = "unknown"; //$NON-NLS-1$ + + /** name for the raster unit id */ + public final static String UNITID_RASTER = "raster unit id"; //$NON-NLS-1$ + + /** name for the color map unit id */ + public final static String UNITID_COLORMAP = "colormap unit id"; //$NON-NLS-1$ + + /** name for the text unit id */ + public final static String UNITID_TEXTFILE = "text file unit id"; //$NON-NLS-1$ + + /** name for the categories unit id */ + public final static String UNITID_CATS = "categories unit id"; //$NON-NLS-1$ + + /** name for the scalar unit id */ + public final static String UNITID_SCALAR = "scalar unit id"; //$NON-NLS-1$ + + /** name for the vector unit id */ + public final static String UNITID_FEATURE = "feature unit id"; //$NON-NLS-1$ + + /** name for the generic unit id */ + public final static String UNITID_UNKNOWN = "unknown unit id"; //$NON-NLS-1$ + + /** variable telling that the output should be redirected to console */ + public final static String CONSOLE = "CONSOLE"; //$NON-NLS-1$ + + /** variable telling that the output should be redirected to gui table */ + public final static String UITABLE = "UITABLE"; //$NON-NLS-1$ + + /** + * The 9 directions around a pixel as ROW/COL of the flowdirections grid. + *

                + * Also containing the central position 0,0 + *

                + *

                + * FIXME Erica used to add several {0,0} at the end, in order to catch certain values. Those + * have to be tracked down. + *

                + */ + public final static int[][] DIR = {{0, 0}, {0, 1}, {-1, 1}, {-1, 0}, {-1, -1}, {0, -1}, {1, -1}, {1, 0}, {1, 1}}; + + /** + * The 8 flowdirections, defined as entering towards the center cell. + * + *

                Each array contains [row, col, flowvalue]. + * + *

                NOTE that these work in ROW/COL order, not COL/ROW! + * + *

                +     *        -1     0     1 
                +     *      +-----+-----+-----+
                +     * -1   |  8  |  7  |  6  |
                +     *      +-----+-----+-----+
                +     *  0   |  1  |  0  |  5  |
                +     *      +-----+-----+-----+
                +     *  1   |  2  |  3  |  4  |
                +     *      +-----+-----+-----+
                +     *      
                +     * 
                + */ + public final static int[][] DIR_WITHFLOW_ENTERING = {// + {0, 0, 0}, // + {0, 1, 5}, // + {-1, 1, 6},// + {-1, 0, 7},// + {-1, -1, 8}, // + {0, -1, 1},// + {1, -1, 2}, // + {1, 0, 3}, // + {1, 1, 4}// + }; + + /** + * The 8 flowdirections, defined as exiting from the center cell. + * + *

                Each array contains [col, row, flowvalue]. + * + *

                +     *        -1     0     1 
                +     *      +-----+-----+-----+
                +     * -1   |  4  |  3  |  2  |
                +     *      +-----+-----+-----+
                +     *  0   |  5  |  0  |  1  |
                +     *      +-----+-----+-----+
                +     *  1   |  6  |  7  |  8  |
                +     *      +-----+-----+-----+
                +     *      
                +     * 
                + */ + public static final int[][] DIR_WITHFLOW_EXITING = {// + {0, 0, 0},// + {1, 0, 1}, // + {1, -1, 2},// + {0, -1, 3}, // + {-1, -1, 4}, // + {-1, 0, 5},// + {-1, 1, 6},// + {0, 1, 7},// + {1, 1, 8}, // + {0, 0, 9}, // + {0, 0, 10}// + }; + + /* + * This is similar to exiting inverted, but is in cols and rows and have a particular order to work (in tca3d) with triangle. + */ + public static final int[][] DIR_WITHFLOW_EXITING_INVERTED = {{0, 0, 0}, {0, 1, 1}, {-1, 1, 2}, {-1, 0, 3}, {-1, -1, 4}, + {0, -1, 5}, {1, -1, 6}, {1, 0, 7}, {1, 1, 8}, {0, 0, 9}, {0, 0, 10}}; + + /** + * Calculate the drainage direction factor (is used in some horton machine like pitfiller, + * flow,...) + *

                + * Is the distance betwen the central pixel, in a 3x3 kernel, and the neighboured pixels. + * + * @param dx is the resolution of a raster map in the x direction. + * @param dy is the resolution of the raster map in the y direction. + * @return fact the direction factor or 1/lenght where lenght is the distance of the + * pixel from the central poxel. + */ + public static double[] calculateDirectionFactor( double dx, double dy ) { + // direction factor, where the components are 1/length + double[] fact = new double[9]; + for( int k = 1; k <= 8; k++ ) { + fact[k] = 1.0 / (Math.sqrt(DIR[k][0] * dy * DIR[k][0] * dy + DIR[k][1] * DIR[k][1] * dx * dx)); + } + return fact; + } + + // /////////////////////////////////////////////////// + // MAP TYPES + // /////////////////////////////////////////////////// + + /** + * color map type identificator + */ + final public static String COLORMAP = "colormap"; //$NON-NLS-1$ + + /** + * text file type identificator + */ + final public static String TEXTFILE = "textfile"; //$NON-NLS-1$ + + /** + * color map type identificator + */ + final public static String CATSMAP = "catsmap"; //$NON-NLS-1$ + + /** + * raster map type identificator + */ + final public static String GRASSRASTERMAP = "grassrastermap"; //$NON-NLS-1$ + + final public static String DEFAULTKEY = "defaultkey"; //$NON-NLS-1$ + + public static final String RESOLUTION = "resolution"; + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/Variables.java b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/Variables.java index 1c893c204..d2a06d69c 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/Variables.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/modules/Variables.java @@ -1,56 +1,56 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.libs.modules; - -import com.vividsolutions.jts.operation.buffer.BufferParameters; - -/** - * Variable names that also need translations and used in the modules. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public interface Variables { - public String DEFAULT = "default"; - - public String PROGRESS_MONITOR_EN = "The progress monitor."; - public String TPS = "TPS"; - public String IDW = "IDW"; - - public String NEAREST_NEIGHTBOUR = "nearest neightbour"; - public String BILINEAR = "bilinear"; - public String BICUBIC = "bicubic"; - - public String INTERSECTION = "intersection"; - public String UNION = "union"; - public String DIFFERENCE = "difference"; - public String SYMDIFFERENCE = "symdifference"; - - public String TCA = "tca"; - public String TCA_SLOPE = "tca and slope"; - public String TCA_CONVERGENT = "tca in convergent sites"; - - public String FIXED_NETWORK = "with fixed network"; - - public String CAP_ROUND = "round"; - public String CAP_FLAT = "flat"; - public String CAP_SQUARE = "square"; - public String JOIN_ROUND = "round"; - public String JOIN_MITRE = "mitre"; - public String JOIN_BEVEL = "bevel"; - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.libs.modules; + +import com.vividsolutions.jts.operation.buffer.BufferParameters; + +/** + * Variable names that also need translations and used in the modules. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public interface Variables { + public String DEFAULT = "default"; + + public String PROGRESS_MONITOR_EN = "The progress monitor."; + public String TPS = "TPS"; + public String IDW = "IDW"; + + public String NEAREST_NEIGHTBOUR = "nearest neightbour"; + public String BILINEAR = "bilinear"; + public String BICUBIC = "bicubic"; + + public String INTERSECTION = "intersection"; + public String UNION = "union"; + public String DIFFERENCE = "difference"; + public String SYMDIFFERENCE = "symdifference"; + + public String TCA = "tca"; + public String TCA_SLOPE = "tca and slope"; + public String TCA_CONVERGENT = "tca in convergent sites"; + + public String FIXED_NETWORK = "with fixed network"; + + public String CAP_ROUND = "round"; + public String CAP_FLAT = "flat"; + public String CAP_SQUARE = "square"; + public String JOIN_ROUND = "round"; + public String JOIN_MITRE = "mitre"; + public String JOIN_BEVEL = "bevel"; + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/DummyProgressMonitor.java b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/DummyProgressMonitor.java index dc38a33c4..198c5e52e 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/DummyProgressMonitor.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/DummyProgressMonitor.java @@ -1,66 +1,66 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.libs.monitor; - -/** - * As the name says. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class DummyProgressMonitor implements IJGTProgressMonitor { - - public void beginTask( String name, int totalWork ) { - } - - public void beginTask( String name ) { - } - - public void done() { - } - - public void internalWorked( double work ) { - } - - public boolean isCanceled() { - return false; - } - - public void setCanceled( boolean value ) { - } - - public void setTaskName( String name ) { - } - - public void subTask( String name ) { - } - - public void worked( int work ) { - } - - public T adapt( Class adaptee ) { - return null; - } - - public void errorMessage( String message ) { - } - - public void message( String message ) { - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.libs.monitor; + +/** + * As the name says. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class DummyProgressMonitor implements IJGTProgressMonitor { + + public void beginTask( String name, int totalWork ) { + } + + public void beginTask( String name ) { + } + + public void done() { + } + + public void internalWorked( double work ) { + } + + public boolean isCanceled() { + return false; + } + + public void setCanceled( boolean value ) { + } + + public void setTaskName( String name ) { + } + + public void subTask( String name ) { + } + + public void worked( int work ) { + } + + public T adapt( Class adaptee ) { + return null; + } + + public void errorMessage( String message ) { + } + + public void message( String message ) { + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/IJGTProgressMonitor.java b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/IJGTProgressMonitor.java index 1f6349188..1b2c253e0 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/IJGTProgressMonitor.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/IJGTProgressMonitor.java @@ -1,115 +1,115 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.libs.monitor; - -/** - * The Main Progress Monitor. - * - *

                - * This is done in order to be able to use the monitor outside of the - * eclipse environment. - *

                - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public interface IJGTProgressMonitor { - /** - * Constant indicating an unknown amount of work. - */ - public final static int UNKNOWN = -1; - - - /** - * Notifies that the main task is beginning. - * - * @param name - * @param totalWork - */ - public void beginTask( String name, int totalWork ); - - - /** - * Sends out a message. - * - * @param message the message to send out. - */ - public void message( String message ); - - /** - * Sends out an error message. - * - * @param message the error message to send out. - */ - public void errorMessage( String message ); - - /** - * Notifies that the work is done; that is, either the main task is completed or the user canceled it. - */ - public void done(); - - /** - * Internal method to handle scaling correctly. - * - * @param work - */ - public void internalWorked( double work ); - - /** - * Returns whether cancelation of current operation has been requested. - * - * @return - */ - public boolean isCanceled(); - - /** - * Sets the cancel state to the given value. - * - * @param value - */ - public void setCanceled( boolean value ); - - /** - * Sets the task name to the given value. - * - * @param name - */ - public void setTaskName( String name ); - - /** - * Notifies that a subtask of the main task is beginning. - * - * @param name - */ - public void subTask( String name ); - - /** - * Notifies that a given number of work unit of the main task has been completed. - * - * @param work - */ - public void worked( int work ); - - /** - * Adapts the monitor to a given class. - * - * @param adaptee the class to which to adapt to. - * @return the adapted object or null, if it is not assignable. - */ - public T adapt( Class adaptee ); -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.libs.monitor; + +/** + * The Main Progress Monitor. + * + *

                + * This is done in order to be able to use the monitor outside of the + * eclipse environment. + *

                + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public interface IJGTProgressMonitor { + /** + * Constant indicating an unknown amount of work. + */ + public final static int UNKNOWN = -1; + + + /** + * Notifies that the main task is beginning. + * + * @param name + * @param totalWork + */ + public void beginTask( String name, int totalWork ); + + + /** + * Sends out a message. + * + * @param message the message to send out. + */ + public void message( String message ); + + /** + * Sends out an error message. + * + * @param message the error message to send out. + */ + public void errorMessage( String message ); + + /** + * Notifies that the work is done; that is, either the main task is completed or the user canceled it. + */ + public void done(); + + /** + * Internal method to handle scaling correctly. + * + * @param work + */ + public void internalWorked( double work ); + + /** + * Returns whether cancelation of current operation has been requested. + * + * @return + */ + public boolean isCanceled(); + + /** + * Sets the cancel state to the given value. + * + * @param value + */ + public void setCanceled( boolean value ); + + /** + * Sets the task name to the given value. + * + * @param name + */ + public void setTaskName( String name ); + + /** + * Notifies that a subtask of the main task is beginning. + * + * @param name + */ + public void subTask( String name ); + + /** + * Notifies that a given number of work unit of the main task has been completed. + * + * @param work + */ + public void worked( int work ); + + /** + * Adapts the monitor to a given class. + * + * @param adaptee the class to which to adapt to. + * @return the adapted object or null, if it is not assignable. + */ + public T adapt( Class adaptee ); +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/LogProgressMonitor.java b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/LogProgressMonitor.java index a067a9373..e897151b5 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/LogProgressMonitor.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/LogProgressMonitor.java @@ -1,132 +1,132 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.libs.monitor; - -import java.util.logging.Logger; - -/** - * A progress monitor that sends progress to log. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class LogProgressMonitor implements IJGTProgressMonitor { - private static final Logger log = Logger.getLogger("org.jgrasstools"); - - protected boolean cancelled = false; - protected String taskName; - protected int totalWork; - protected int runningWork; - protected int lastPercentage = -1; - private String prefix = null; - - public LogProgressMonitor() { - this.prefix = ""; - } - public LogProgressMonitor( String prefix ) { - this.prefix = prefix; - } - - public void beginTask( String name, int totalWork ) { - this.taskName = name; - this.totalWork = totalWork; - runningWork = 0; - if (prefix != null) { - taskName = prefix + taskName; - } - System.out.println(taskName); - // log.info(taskName); - } - - public void beginTask( String name ) { - this.taskName = name; - this.totalWork = -1; - runningWork = 0; - if (prefix != null) { - taskName = prefix + taskName; - } - System.out.println(taskName); - // log.info(taskName); - } - - public void done() { - String msg = "Finished."; - if (prefix != null) { - msg = prefix + msg; - } - - System.out.println(msg); - // log.info(msg); - } - - public void internalWorked( double work ) { - } - - public boolean isCanceled() { - return cancelled; - } - - public void setCanceled( boolean cancelled ) { - this.cancelled = cancelled; - } - - public void setTaskName( String name ) { - taskName = name; - } - - public void subTask( String name ) { - } - - public void worked( int work ) { - if (totalWork == -1) { - String msg = "..."; - if (prefix != null) { - msg = prefix + msg; - } - System.out.println(msg); - // log.info(msg); - } else { - runningWork = runningWork + work; - // calculate % - int percentage = 100 * runningWork / totalWork; - if (percentage % 10 == 0 && percentage != lastPercentage) { - String msg = percentage + "%..."; - if (prefix != null) { - msg = prefix + msg; - } - System.out.println(msg); - // log.info(msg); - lastPercentage = percentage; - } - } - } - - public T adapt( Class adaptee ) { - return null; - } - - public void errorMessage( String message ) { - System.err.println(message); - // log.severe(message); - } - - public void message( String message ) { - System.out.println(message); - // log.info(message); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.libs.monitor; + +import java.util.logging.Logger; + +/** + * A progress monitor that sends progress to log. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class LogProgressMonitor implements IJGTProgressMonitor { + private static final Logger log = Logger.getLogger("org.jgrasstools"); + + protected boolean cancelled = false; + protected String taskName; + protected int totalWork; + protected int runningWork; + protected int lastPercentage = -1; + private String prefix = null; + + public LogProgressMonitor() { + this.prefix = ""; + } + public LogProgressMonitor( String prefix ) { + this.prefix = prefix; + } + + public void beginTask( String name, int totalWork ) { + this.taskName = name; + this.totalWork = totalWork; + runningWork = 0; + if (prefix != null) { + taskName = prefix + taskName; + } + System.out.println(taskName); + // log.info(taskName); + } + + public void beginTask( String name ) { + this.taskName = name; + this.totalWork = -1; + runningWork = 0; + if (prefix != null) { + taskName = prefix + taskName; + } + System.out.println(taskName); + // log.info(taskName); + } + + public void done() { + String msg = "Finished."; + if (prefix != null) { + msg = prefix + msg; + } + + System.out.println(msg); + // log.info(msg); + } + + public void internalWorked( double work ) { + } + + public boolean isCanceled() { + return cancelled; + } + + public void setCanceled( boolean cancelled ) { + this.cancelled = cancelled; + } + + public void setTaskName( String name ) { + taskName = name; + } + + public void subTask( String name ) { + } + + public void worked( int work ) { + if (totalWork == -1) { + String msg = "..."; + if (prefix != null) { + msg = prefix + msg; + } + System.out.println(msg); + // log.info(msg); + } else { + runningWork = runningWork + work; + // calculate % + int percentage = 100 * runningWork / totalWork; + if (percentage % 10 == 0 && percentage != lastPercentage) { + String msg = percentage + "%..."; + if (prefix != null) { + msg = prefix + msg; + } + System.out.println(msg); + // log.info(msg); + lastPercentage = percentage; + } + } + } + + public T adapt( Class adaptee ) { + return null; + } + + public void errorMessage( String message ) { + System.err.println(message); + // log.severe(message); + } + + public void message( String message ) { + System.out.println(message); + // log.info(message); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/PrintStreamProgressMonitor.java b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/PrintStreamProgressMonitor.java index d445ff0e5..61f04e02c 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/PrintStreamProgressMonitor.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/libs/monitor/PrintStreamProgressMonitor.java @@ -1,144 +1,144 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.libs.monitor; - -import java.io.PrintStream; - -/** - * A progress monitor for printstream based applications, i.e. console or commandline. - * - *

                This implements both {@link IJGTProgressMonitor} and - * {@link IProgressMonitor} in order to be used also in the part of - * the code that needs to stay clean of rcp code.

                - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class PrintStreamProgressMonitor implements IJGTProgressMonitor { - - protected boolean cancelled = false; - protected final PrintStream outStream; - protected final PrintStream errStream; - protected String taskName; - protected int totalWork; - protected int runningWork; - protected int lastPercentage = -1; - private String prefix = null; - - public PrintStreamProgressMonitor() { - this(System.out, System.err); - } - - public PrintStreamProgressMonitor( PrintStream outStream, PrintStream errorStream ) { - this.outStream = outStream; - this.errStream = errorStream; - } - - public PrintStreamProgressMonitor( String prefix, PrintStream outStream, PrintStream errorStream ) { - this.prefix = prefix; - this.outStream = outStream; - this.errStream = errorStream; - } - - public void beginTask( String name, int totalWork ) { - this.taskName = name; - this.totalWork = totalWork; - runningWork = 0; - if (prefix != null) { - outStream.print(prefix); - } - outStream.println(taskName); - } - - public void beginTask( String name ) { - this.taskName = name; - this.totalWork = -1; - runningWork = 0; - if (prefix != null) { - outStream.print(prefix); - } - outStream.println(taskName); - } - - public void done() { - if (prefix != null) { - outStream.print(prefix); - } - outStream.println("Finished."); - } - - public void internalWorked( double work ) { - } - - public boolean isCanceled() { - return cancelled; - } - - public void setCanceled( boolean cancelled ) { - this.cancelled = cancelled; - } - - public void setTaskName( String name ) { - taskName = name; - } - - public void subTask( String name ) { - } - - public void worked( int work ) { - if (totalWork == -1) { - if (prefix != null) { - outStream.print(prefix); - } - outStream.print("..."); //$NON-NLS-1$ - } else { - runningWork = runningWork + work; - // calculate % - int percentage = 100 * runningWork / totalWork; - if (percentage % 10 == 0 && percentage != lastPercentage) { - if (prefix != null) { - outStream.print(prefix); - } - outStream.print(percentage + "%... "); //$NON-NLS-1$ - if (prefix != null) { - outStream.println(); - } - lastPercentage = percentage; - } - } - } - - public PrintStream getPrintStream() { - return outStream; - } - - public T adapt( Class adaptee ) { - if (adaptee.isAssignableFrom(PrintStream.class)) { - return adaptee.cast(outStream); - } - return null; - } - - public void errorMessage( String message ) { - errStream.println(message); - } - - public void message( String message ) { - outStream.println(message); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.libs.monitor; + +import java.io.PrintStream; + +/** + * A progress monitor for printstream based applications, i.e. console or commandline. + * + *

                This implements both {@link IJGTProgressMonitor} and + * {@link IProgressMonitor} in order to be used also in the part of + * the code that needs to stay clean of rcp code.

                + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class PrintStreamProgressMonitor implements IJGTProgressMonitor { + + protected boolean cancelled = false; + protected final PrintStream outStream; + protected final PrintStream errStream; + protected String taskName; + protected int totalWork; + protected int runningWork; + protected int lastPercentage = -1; + private String prefix = null; + + public PrintStreamProgressMonitor() { + this(System.out, System.err); + } + + public PrintStreamProgressMonitor( PrintStream outStream, PrintStream errorStream ) { + this.outStream = outStream; + this.errStream = errorStream; + } + + public PrintStreamProgressMonitor( String prefix, PrintStream outStream, PrintStream errorStream ) { + this.prefix = prefix; + this.outStream = outStream; + this.errStream = errorStream; + } + + public void beginTask( String name, int totalWork ) { + this.taskName = name; + this.totalWork = totalWork; + runningWork = 0; + if (prefix != null) { + outStream.print(prefix); + } + outStream.println(taskName); + } + + public void beginTask( String name ) { + this.taskName = name; + this.totalWork = -1; + runningWork = 0; + if (prefix != null) { + outStream.print(prefix); + } + outStream.println(taskName); + } + + public void done() { + if (prefix != null) { + outStream.print(prefix); + } + outStream.println("Finished."); + } + + public void internalWorked( double work ) { + } + + public boolean isCanceled() { + return cancelled; + } + + public void setCanceled( boolean cancelled ) { + this.cancelled = cancelled; + } + + public void setTaskName( String name ) { + taskName = name; + } + + public void subTask( String name ) { + } + + public void worked( int work ) { + if (totalWork == -1) { + if (prefix != null) { + outStream.print(prefix); + } + outStream.print("..."); //$NON-NLS-1$ + } else { + runningWork = runningWork + work; + // calculate % + int percentage = 100 * runningWork / totalWork; + if (percentage % 10 == 0 && percentage != lastPercentage) { + if (prefix != null) { + outStream.print(prefix); + } + outStream.print(percentage + "%... "); //$NON-NLS-1$ + if (prefix != null) { + outStream.println(); + } + lastPercentage = percentage; + } + } + } + + public PrintStream getPrintStream() { + return outStream; + } + + public T adapt( Class adaptee ) { + if (adaptee.isAssignableFrom(PrintStream.class)) { + return adaptee.cast(outStream); + } + return null; + } + + public void errorMessage( String message ) { + errStream.println(message); + } + + public void message( String message ) { + outStream.println(message); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/bobthebuilder/BobTheBuilder.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/bobthebuilder/BobTheBuilder.java index b65247246..286bc79e9 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/bobthebuilder/BobTheBuilder.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/bobthebuilder/BobTheBuilder.java @@ -1,264 +1,264 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.bobthebuilder; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; -import static org.jgrasstools.gears.utils.math.NumericsUtilities.isBetween; - -import java.awt.image.WritableRaster; -import java.util.ArrayList; -import java.util.List; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoordinates2D; -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.geometry.jts.ReferencedEnvelope; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.modules.r.interpolation2d.core.IDWInterpolator; -import org.jgrasstools.gears.modules.r.scanline.ScanLineRasterizer; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.coverage.ProfilePoint; -import org.jgrasstools.gears.utils.features.FeatureMate; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.opengis.geometry.DirectPosition; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.MultiPolygon; -import com.vividsolutions.jts.geom.Polygon; -import com.vividsolutions.jts.geom.prep.PreparedGeometry; -import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory; - -@Description("Builds rasterized artifacts on a raster.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("Build, Raster") -@Name("bobbuilder") -@Label(JGTConstants.RASTERPROCESSING) -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class BobTheBuilder extends JGTModel { - - @Description("The input raster.") - @In - public GridCoverage2D inRaster = null; - - @Description("The vector map containing the polygonal area to modify.") - @In - public SimpleFeatureCollection inArea = null; - - @Description("The vector map containing the points that provide the new elevations.") - @In - public SimpleFeatureCollection inElevations = null; - - @Description("The maximum radius to use for interpolation.") - @In - public double pMaxbuffer = -1; - - @Description("The field of the elevations map that contain the elevation of the point.") - @In - public String fElevation = null; - - @Description("Switch that defines if the module should erode in places the actual raster is higher (default is false).") - @In - public boolean doErode = false; - - @Description("Switch that defines if the module should use only points contained in the polygon for the interpolation (default is false. i.e. use all).") - @In - public boolean doUseOnlyInternal = false; - - @Description("Switch that defines if the module should add the border of the polygon as elevation point to aid connection between new and old (default is false).") - @In - public boolean doPolygonborder = false; - - @Description("The modified raster map.") - @Out - public GridCoverage2D outRaster = null; - - @Execute - public void process() throws Exception { - checkNull(inRaster, inArea, inElevations, fElevation); - - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - double west = regionMap.getWest(); - double east = regionMap.getEast(); - double south = regionMap.getSouth(); - double north = regionMap.getNorth(); - - ReferencedEnvelope vectorBounds = inArea.getBounds(); - if (!isBetween(vectorBounds.getMaxX(), west, east) || !isBetween(vectorBounds.getMinX(), west, east) - || !isBetween(vectorBounds.getMaxY(), south, north) || !isBetween(vectorBounds.getMinY(), south, north)) { - throw new ModelsIllegalargumentException("The vector map has to be within the raster map boundaries.", this); - } - - List polygonMates = FeatureUtilities.featureCollectionToMatesList(inArea); - String polygonMessage = "This operation can be applied only to a single polygon."; - if (polygonMates.size() != 1) { - throw new ModelsIllegalargumentException(polygonMessage, this); - } - FeatureMate polygonMate = polygonMates.get(0); - Geometry polygon = polygonMate.getGeometry(); - if (polygon instanceof MultiPolygon) { - polygon = polygon.getGeometryN(0); - } - if (!(polygon instanceof Polygon)) { - throw new ModelsIllegalargumentException(polygonMessage, this); - } - - List pointsMates = FeatureUtilities.featureCollectionToMatesList(inElevations); - if (doUseOnlyInternal) { - PreparedGeometry preparedPolygon = PreparedGeometryFactory.prepare(polygon); - List tmpPointsMates = new ArrayList(); - for( FeatureMate pointMate : pointsMates ) { - Geometry geometry = pointMate.getGeometry(); - if (preparedPolygon.covers(geometry)) { - tmpPointsMates.add(pointMate); - } - } - pointsMates = tmpPointsMates; - } - if (pointsMates.size() < 4) { - throw new ModelsIllegalargumentException( - "You need at least 4 elevation points (the more, the better) to gain a decent interpolation.", this); - } - - List controlPointsList = new ArrayList(); - if (doPolygonborder) { - pm.beginTask("Extract polygon border...", IJGTProgressMonitor.UNKNOWN); - Coordinate[] polygonCoordinates = polygon.getCoordinates(); - List profile = CoverageUtilities.doProfile(inRaster, polygonCoordinates); - for( ProfilePoint profilePoint : profile ) { - Coordinate position = profilePoint.getPosition(); - double elevation = profilePoint.getElevation(); - Coordinate coord = new Coordinate(position.x, position.y, elevation); - controlPointsList.add(coord); - } - pm.done(); - } - - for( FeatureMate pointsMate : pointsMates ) { - Coordinate coordinate = pointsMate.getGeometry().getCoordinate(); - double elev = pointsMate.getAttribute(fElevation, Double.class); - Coordinate coord = new Coordinate(coordinate.x, coordinate.y, elev); - controlPointsList.add(coord); - } - - Coordinate[] controlPoints = controlPointsList.toArray(new Coordinate[0]); - - GridGeometry2D gridGeometry = inRaster.getGridGeometry(); - RandomIter elevIter = CoverageUtilities.getRandomIterator(inRaster); - - WritableRaster outputWR = CoverageUtilities - .createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); - WritableRandomIter outputIter = RandomIterFactory.createWritable(outputWR, null); - - SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); - newCollection.add(polygonMate.getFeature()); - ScanLineRasterizer slRasterizer = new ScanLineRasterizer(); - slRasterizer.pm = pm; - slRasterizer.inVector = newCollection; - slRasterizer.pCols = cols; - slRasterizer.pRows = rows; - slRasterizer.pNorth = north; - slRasterizer.pSouth = south; - slRasterizer.pEast = east; - slRasterizer.pWest = west; - slRasterizer.pValue = 1.0; - slRasterizer.process(); - GridCoverage2D outRasterized = slRasterizer.outRaster; - - if (pMaxbuffer < 0) - pMaxbuffer = Math.max(vectorBounds.getWidth(), vectorBounds.getHeight()); - - IDWInterpolator interpolator = new IDWInterpolator(pMaxbuffer); - final GridCoordinates2D gridCoord = new GridCoordinates2D(); - RandomIter rasterizedIter = CoverageUtilities.getRandomIterator(outRasterized); - pm.beginTask("Interpolating...", cols); - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double probValue = rasterizedIter.getSampleDouble(c, r, 0); - if (isNovalue(probValue)) { - continue; - } - gridCoord.setLocation(c, r); - DirectPosition world = gridGeometry.gridToWorld(gridCoord); - double[] coordinate = world.getCoordinate(); - double interpolated = interpolator.getValue(controlPoints, new Coordinate(coordinate[0], coordinate[1])); - outputIter.setSample(c, r, 0, interpolated); - } - pm.worked(1); - } - pm.done(); - - pm.beginTask("Merging with original raster...", cols); - for( int c = 0; c < cols; c++ ) { - for( int r = 0; r < rows; r++ ) { - double interpolatedValue = outputIter.getSampleDouble(c, r, 0); - double rasterValue = elevIter.getSampleDouble(c, r, 0); - if (isNovalue(interpolatedValue)) { - if (!isNovalue(rasterValue)) - outputIter.setSample(c, r, 0, rasterValue); - } else { - if (doErode) { - // any value generated is ok - outputIter.setSample(c, r, 0, interpolatedValue); - } else { - // only values higher than the raster are ok - if (!isNovalue(rasterValue)) { - if (rasterValue < interpolatedValue) { - outputIter.setSample(c, r, 0, interpolatedValue); - } else { - outputIter.setSample(c, r, 0, rasterValue); - } - } else { - outputIter.setSample(c, r, 0, interpolatedValue); - } - - } - } - } - pm.worked(1); - } - pm.done(); - - outRaster = CoverageUtilities.buildCoverage("raster", outputWR, regionMap, inRaster.getCoordinateReferenceSystem()); - - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.bobthebuilder; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; +import static org.jgrasstools.gears.utils.math.NumericsUtilities.isBetween; + +import java.awt.image.WritableRaster; +import java.util.ArrayList; +import java.util.List; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoordinates2D; +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.modules.r.interpolation2d.core.IDWInterpolator; +import org.jgrasstools.gears.modules.r.scanline.ScanLineRasterizer; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.coverage.ProfilePoint; +import org.jgrasstools.gears.utils.features.FeatureMate; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.opengis.geometry.DirectPosition; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.MultiPolygon; +import com.vividsolutions.jts.geom.Polygon; +import com.vividsolutions.jts.geom.prep.PreparedGeometry; +import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory; + +@Description("Builds rasterized artifacts on a raster.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("Build, Raster") +@Name("bobbuilder") +@Label(JGTConstants.RASTERPROCESSING) +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class BobTheBuilder extends JGTModel { + + @Description("The input raster.") + @In + public GridCoverage2D inRaster = null; + + @Description("The vector map containing the polygonal area to modify.") + @In + public SimpleFeatureCollection inArea = null; + + @Description("The vector map containing the points that provide the new elevations.") + @In + public SimpleFeatureCollection inElevations = null; + + @Description("The maximum radius to use for interpolation.") + @In + public double pMaxbuffer = -1; + + @Description("The field of the elevations map that contain the elevation of the point.") + @In + public String fElevation = null; + + @Description("Switch that defines if the module should erode in places the actual raster is higher (default is false).") + @In + public boolean doErode = false; + + @Description("Switch that defines if the module should use only points contained in the polygon for the interpolation (default is false. i.e. use all).") + @In + public boolean doUseOnlyInternal = false; + + @Description("Switch that defines if the module should add the border of the polygon as elevation point to aid connection between new and old (default is false).") + @In + public boolean doPolygonborder = false; + + @Description("The modified raster map.") + @Out + public GridCoverage2D outRaster = null; + + @Execute + public void process() throws Exception { + checkNull(inRaster, inArea, inElevations, fElevation); + + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + double west = regionMap.getWest(); + double east = regionMap.getEast(); + double south = regionMap.getSouth(); + double north = regionMap.getNorth(); + + ReferencedEnvelope vectorBounds = inArea.getBounds(); + if (!isBetween(vectorBounds.getMaxX(), west, east) || !isBetween(vectorBounds.getMinX(), west, east) + || !isBetween(vectorBounds.getMaxY(), south, north) || !isBetween(vectorBounds.getMinY(), south, north)) { + throw new ModelsIllegalargumentException("The vector map has to be within the raster map boundaries.", this); + } + + List polygonMates = FeatureUtilities.featureCollectionToMatesList(inArea); + String polygonMessage = "This operation can be applied only to a single polygon."; + if (polygonMates.size() != 1) { + throw new ModelsIllegalargumentException(polygonMessage, this); + } + FeatureMate polygonMate = polygonMates.get(0); + Geometry polygon = polygonMate.getGeometry(); + if (polygon instanceof MultiPolygon) { + polygon = polygon.getGeometryN(0); + } + if (!(polygon instanceof Polygon)) { + throw new ModelsIllegalargumentException(polygonMessage, this); + } + + List pointsMates = FeatureUtilities.featureCollectionToMatesList(inElevations); + if (doUseOnlyInternal) { + PreparedGeometry preparedPolygon = PreparedGeometryFactory.prepare(polygon); + List tmpPointsMates = new ArrayList(); + for( FeatureMate pointMate : pointsMates ) { + Geometry geometry = pointMate.getGeometry(); + if (preparedPolygon.covers(geometry)) { + tmpPointsMates.add(pointMate); + } + } + pointsMates = tmpPointsMates; + } + if (pointsMates.size() < 4) { + throw new ModelsIllegalargumentException( + "You need at least 4 elevation points (the more, the better) to gain a decent interpolation.", this); + } + + List controlPointsList = new ArrayList(); + if (doPolygonborder) { + pm.beginTask("Extract polygon border...", IJGTProgressMonitor.UNKNOWN); + Coordinate[] polygonCoordinates = polygon.getCoordinates(); + List profile = CoverageUtilities.doProfile(inRaster, polygonCoordinates); + for( ProfilePoint profilePoint : profile ) { + Coordinate position = profilePoint.getPosition(); + double elevation = profilePoint.getElevation(); + Coordinate coord = new Coordinate(position.x, position.y, elevation); + controlPointsList.add(coord); + } + pm.done(); + } + + for( FeatureMate pointsMate : pointsMates ) { + Coordinate coordinate = pointsMate.getGeometry().getCoordinate(); + double elev = pointsMate.getAttribute(fElevation, Double.class); + Coordinate coord = new Coordinate(coordinate.x, coordinate.y, elev); + controlPointsList.add(coord); + } + + Coordinate[] controlPoints = controlPointsList.toArray(new Coordinate[0]); + + GridGeometry2D gridGeometry = inRaster.getGridGeometry(); + RandomIter elevIter = CoverageUtilities.getRandomIterator(inRaster); + + WritableRaster outputWR = CoverageUtilities + .createDoubleWritableRaster(cols, rows, null, null, JGTConstants.doubleNovalue); + WritableRandomIter outputIter = RandomIterFactory.createWritable(outputWR, null); + + SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); + newCollection.add(polygonMate.getFeature()); + ScanLineRasterizer slRasterizer = new ScanLineRasterizer(); + slRasterizer.pm = pm; + slRasterizer.inVector = newCollection; + slRasterizer.pCols = cols; + slRasterizer.pRows = rows; + slRasterizer.pNorth = north; + slRasterizer.pSouth = south; + slRasterizer.pEast = east; + slRasterizer.pWest = west; + slRasterizer.pValue = 1.0; + slRasterizer.process(); + GridCoverage2D outRasterized = slRasterizer.outRaster; + + if (pMaxbuffer < 0) + pMaxbuffer = Math.max(vectorBounds.getWidth(), vectorBounds.getHeight()); + + IDWInterpolator interpolator = new IDWInterpolator(pMaxbuffer); + final GridCoordinates2D gridCoord = new GridCoordinates2D(); + RandomIter rasterizedIter = CoverageUtilities.getRandomIterator(outRasterized); + pm.beginTask("Interpolating...", cols); + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double probValue = rasterizedIter.getSampleDouble(c, r, 0); + if (isNovalue(probValue)) { + continue; + } + gridCoord.setLocation(c, r); + DirectPosition world = gridGeometry.gridToWorld(gridCoord); + double[] coordinate = world.getCoordinate(); + double interpolated = interpolator.getValue(controlPoints, new Coordinate(coordinate[0], coordinate[1])); + outputIter.setSample(c, r, 0, interpolated); + } + pm.worked(1); + } + pm.done(); + + pm.beginTask("Merging with original raster...", cols); + for( int c = 0; c < cols; c++ ) { + for( int r = 0; r < rows; r++ ) { + double interpolatedValue = outputIter.getSampleDouble(c, r, 0); + double rasterValue = elevIter.getSampleDouble(c, r, 0); + if (isNovalue(interpolatedValue)) { + if (!isNovalue(rasterValue)) + outputIter.setSample(c, r, 0, rasterValue); + } else { + if (doErode) { + // any value generated is ok + outputIter.setSample(c, r, 0, interpolatedValue); + } else { + // only values higher than the raster are ok + if (!isNovalue(rasterValue)) { + if (rasterValue < interpolatedValue) { + outputIter.setSample(c, r, 0, interpolatedValue); + } else { + outputIter.setSample(c, r, 0, rasterValue); + } + } else { + outputIter.setSample(c, r, 0, interpolatedValue); + } + + } + } + } + pm.worked(1); + } + pm.done(); + + outRaster = CoverageUtilities.buildCoverage("raster", outputWR, regionMap, inRaster.getCoordinateReferenceSystem()); + + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/cutout/CutOut.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/cutout/CutOut.java index 5d7e12395..9c46868ee 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/cutout/CutOut.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/cutout/CutOut.java @@ -1,155 +1,155 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.cutout; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.HashMap; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; - -@Description("Module for raster thresholding and masking.") -@Documentation("CutOut.html") -@Author(name = "Silvia Franceschi, Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Raster, Threshold, Mapcalc") -@Label(JGTConstants.RASTERPROCESSING) -@Name("cutout") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class CutOut extends JGTModel { - - @Description("The map that has to be processed.") - @In - public GridCoverage2D inRaster; - - @Description("The map to use as mask.") - @In - public GridCoverage2D inMask; - - @Description("The upper threshold value.") - @In - public Double pMax; - - @Description("The lower threshold value.") - @In - public Double pMin; - - @Description("Switch for doing extraction of the mask area or the inverse (negative). Default is false and extract the mask area.") - @In - public boolean doInverse = false; - - @Description("The processed map.") - @Out - public GridCoverage2D outRaster = null; - - private RandomIter maskIter; - private boolean doMax = false; - private boolean doMin = false; - - @Execute - public void process() throws Exception { - if (!concatOr(outRaster == null, doReset)) { - return; - } - - double max = -1; - double min = -1; - // do autoboxing only once - if (pMax != null) { - max = pMax; - doMax = true; - } - if (pMin != null) { - min = pMin; - doMin = true; - } - - HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); - int nCols = regionMap.get(CoverageUtilities.COLS).intValue(); - int nRows = regionMap.get(CoverageUtilities.ROWS).intValue(); - - RenderedImage geodataRI = inRaster.getRenderedImage(); - RandomIter geodataIter = RandomIterFactory.create(geodataRI, null); - - if (inMask != null) { - RenderedImage maskRI = inMask.getRenderedImage(); - maskIter = RandomIterFactory.create(maskRI, null); - } - - WritableRaster outWR = CoverageUtilities.renderedImage2WritableRaster(geodataRI, false); - WritableRandomIter outIter = RandomIterFactory.createWritable(outWR, null); - - pm.beginTask("Processing map...", nRows); - for( int i = 0; i < nRows; i++ ) { - if (isCanceled(pm)) { - return; - } - for( int j = 0; j < nCols; j++ ) { - if (maskIter != null) { - double maskValue = maskIter.getSampleDouble(j, i, 0); - if (!doInverse) { - if (isNovalue(maskValue)) { - outIter.setSample(j, i, 0, JGTConstants.doubleNovalue); - continue; - } - } else { - if (!isNovalue(maskValue)) { - outIter.setSample(j, i, 0, JGTConstants.doubleNovalue); - continue; - } - } - } - double value = geodataIter.getSampleDouble(j, i, 0); - if (doMax && value > max) { - outIter.setSample(j, i, 0, JGTConstants.doubleNovalue); - continue; - } - if (doMin && value < min) { - outIter.setSample(j, i, 0, JGTConstants.doubleNovalue); - continue; - } - } - pm.worked(1); - } - pm.done(); - - outRaster = CoverageUtilities.buildCoverage("pitfiller", outWR, regionMap, inRaster.getCoordinateReferenceSystem()); - - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.cutout; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.HashMap; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; + +@Description("Module for raster thresholding and masking.") +@Documentation("CutOut.html") +@Author(name = "Silvia Franceschi, Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Raster, Threshold, Mapcalc") +@Label(JGTConstants.RASTERPROCESSING) +@Name("cutout") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class CutOut extends JGTModel { + + @Description("The map that has to be processed.") + @In + public GridCoverage2D inRaster; + + @Description("The map to use as mask.") + @In + public GridCoverage2D inMask; + + @Description("The upper threshold value.") + @In + public Double pMax; + + @Description("The lower threshold value.") + @In + public Double pMin; + + @Description("Switch for doing extraction of the mask area or the inverse (negative). Default is false and extract the mask area.") + @In + public boolean doInverse = false; + + @Description("The processed map.") + @Out + public GridCoverage2D outRaster = null; + + private RandomIter maskIter; + private boolean doMax = false; + private boolean doMin = false; + + @Execute + public void process() throws Exception { + if (!concatOr(outRaster == null, doReset)) { + return; + } + + double max = -1; + double min = -1; + // do autoboxing only once + if (pMax != null) { + max = pMax; + doMax = true; + } + if (pMin != null) { + min = pMin; + doMin = true; + } + + HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); + int nCols = regionMap.get(CoverageUtilities.COLS).intValue(); + int nRows = regionMap.get(CoverageUtilities.ROWS).intValue(); + + RenderedImage geodataRI = inRaster.getRenderedImage(); + RandomIter geodataIter = RandomIterFactory.create(geodataRI, null); + + if (inMask != null) { + RenderedImage maskRI = inMask.getRenderedImage(); + maskIter = RandomIterFactory.create(maskRI, null); + } + + WritableRaster outWR = CoverageUtilities.renderedImage2WritableRaster(geodataRI, false); + WritableRandomIter outIter = RandomIterFactory.createWritable(outWR, null); + + pm.beginTask("Processing map...", nRows); + for( int i = 0; i < nRows; i++ ) { + if (isCanceled(pm)) { + return; + } + for( int j = 0; j < nCols; j++ ) { + if (maskIter != null) { + double maskValue = maskIter.getSampleDouble(j, i, 0); + if (!doInverse) { + if (isNovalue(maskValue)) { + outIter.setSample(j, i, 0, JGTConstants.doubleNovalue); + continue; + } + } else { + if (!isNovalue(maskValue)) { + outIter.setSample(j, i, 0, JGTConstants.doubleNovalue); + continue; + } + } + } + double value = geodataIter.getSampleDouble(j, i, 0); + if (doMax && value > max) { + outIter.setSample(j, i, 0, JGTConstants.doubleNovalue); + continue; + } + if (doMin && value < min) { + outIter.setSample(j, i, 0, JGTConstants.doubleNovalue); + continue; + } + } + pm.worked(1); + } + pm.done(); + + outRaster = CoverageUtilities.buildCoverage("pitfiller", outWR, regionMap, inRaster.getCoordinateReferenceSystem()); + + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/SurfaceInterpolator.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/SurfaceInterpolator.java index 35d6d7797..b780e10f5 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/SurfaceInterpolator.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/SurfaceInterpolator.java @@ -1,261 +1,261 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.interpolation2d; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; -import static org.jgrasstools.gears.libs.modules.Variables.IDW; -import static org.jgrasstools.gears.libs.modules.Variables.TPS; - -import java.awt.image.WritableRaster; -import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.annotations.Unit; - -import org.geotools.coverage.grid.GridCoordinates2D; -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureIterator; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.modules.r.interpolation2d.core.IDWInterpolator; -import org.jgrasstools.gears.modules.r.interpolation2d.core.ISurfaceInterpolator; -import org.jgrasstools.gears.modules.r.interpolation2d.core.TPSInterpolator; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.geometry.DirectPosition; -import org.opengis.referencing.operation.TransformException; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.index.strtree.STRtree; - -@Description(// -en = "Surface Interpolator module",// -it = "Interpolazione di superfici"// -) -@Author(name = "Jan Jezek, Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("Interpolation, Raster, Spline") -@Status(Status.DRAFT) -@Name("surfaceinterpolator") -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class SurfaceInterpolator extends JGTModel { - - @Description(// - en = "The input vector map of points.",// - it = "La mappa vettoriale di punti."// - ) - @In - public SimpleFeatureCollection inVector; - - @Description(// - en = "The grid on which to interpolate.",// - it = "La griglia sulla quale interpolare."// - ) - @In - public GridGeometry2D inGrid = null; - - @Description(// - en = "An optional mask raster map. Values will be computed only where the mask has values.",// - it = "Una mappa raster opzionale da usare come maschera per il calcolo."// - ) - @In - public GridCoverage2D inMask = null; - - @Description(// - en = "Field from which to take the category value.",// - it = "Campo dal quale prendere il valore della categoria."// - ) - @In - public String fCat; - - @Description(// - en = "Interpolation mode (default is TPS).",// - it = "Metodo di interpolazione (default e' TPS)."// - ) - @UI("combo:" + TPS + "," + IDW) - @In - public String pMode = "TPS"; - - @Description(// - en = "The buffer to use for interpolation (default is 4).",// - it = "Il buffer da usare per l'interpolazione (default e' 4)."// - ) - @Unit("m") - @In - public double pBuffer = 4.0; - - @Description(// - en = "Max threads to use (default 1).",// - it = "Numero massimo di thread da usare (default 1)."// - ) - @In - public int pMaxThreads = 1; - - @Description(// - en = "The interpolated raster.",// - it = "Il raster interpolato."// - ) - @Out - public GridCoverage2D outRaster = null; - - private ISurfaceInterpolator interpolator; - - @Execute - public void process() throws Exception { - checkNull(inVector, inGrid, fCat); - - RegionMap regionMap = CoverageUtilities.gridGeometry2RegionParamsMap(inGrid); - final int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - - SimpleFeatureIterator featureIterator = inVector.features(); - Coordinate[] coordinates = new Coordinate[inVector.size()]; - final STRtree tree = new STRtree(coordinates.length); - - int index = 0; - pm.beginTask("Indexing control points...", coordinates.length); - while( featureIterator.hasNext() ) { - SimpleFeature feature = featureIterator.next(); - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - coordinates[index] = geometry.getCoordinate(); - double value = ((Number) feature.getAttribute(fCat)).doubleValue(); - coordinates[index].z = value; - - Envelope env = new Envelope(coordinates[index]); - tree.insert(env, coordinates[index]); - - pm.worked(1); - } - tree.build(); - pm.done(); - - pm.message("Indexed control points: " + coordinates.length); - - if (pMode.equals(IDW)) { - interpolator = new IDWInterpolator(pBuffer); - } else { - interpolator = new TPSInterpolator(pBuffer); - } - - WritableRaster interpolatedWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, - JGTConstants.doubleNovalue); - final WritableRandomIter interpolatedIter = RandomIterFactory.createWritable(interpolatedWR, null); - - boolean doMultiThread = pMaxThreads > 1; - - ExecutorService fixedThreadPool = null; - if (doMultiThread) - fixedThreadPool = Executors.newFixedThreadPool(pMaxThreads); - - pm.beginTask("Performing interpolation...", rows); - - final double[] eval = new double[1]; - for( int r = 0; r < rows; r++ ) { - final int row = r; - if (doMultiThread) { - Runnable runner = new Runnable(){ - public void run() { - processing(cols, tree, interpolatedIter, eval, row); - } - }; - fixedThreadPool.execute(runner); - } else { - processing(cols, tree, interpolatedIter, eval, row); - } - } - - if (doMultiThread) { - try { - fixedThreadPool.shutdown(); - fixedThreadPool.awaitTermination(30, TimeUnit.DAYS); - fixedThreadPool.shutdownNow(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - pm.done(); - - outRaster = CoverageUtilities.buildCoverage("interpolatedraster", interpolatedWR, regionMap, inVector.getSchema() - .getCoordinateReferenceSystem()); - - } - - private void processing( final int cols, final STRtree tree, final WritableRandomIter interpolatedIter, final double[] eval, - final int row ) { - try { - for( int c = 0; c < cols; c++ ) { - final DirectPosition gridToWorld = inGrid.gridToWorld(new GridCoordinates2D(c, row)); - // System.out.println(row + "/" + c); - boolean doProcess = true; - if (inMask != null) { - inMask.evaluate(gridToWorld, eval); - if (isNovalue(eval[0])) { - doProcess = false; - } - } - - if (doProcess) { - final Coordinate currentCoord = new Coordinate(); - final double[] coord = gridToWorld.getCoordinate(); - currentCoord.x = coord[0]; - currentCoord.y = coord[1]; - - final Envelope env = new Envelope(currentCoord.x - pBuffer, currentCoord.x + pBuffer, currentCoord.y - - pBuffer, currentCoord.y + pBuffer); - - @SuppressWarnings("unchecked") - final List result = tree.query(env); - // System.out.println(row + "/" + c + " = " + result.size()); - - // we need at least 3 points - if (result.size() < 4) { - continue; - } - - final double value = interpolator.getValue(result.toArray(new Coordinate[0]), currentCoord); - synchronized (interpolatedIter) { - interpolatedIter.setSample(c, row, 0, value); - } - } - - } - pm.worked(1); - } catch (TransformException e) { - e.printStackTrace(); - } - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.interpolation2d; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; +import static org.jgrasstools.gears.libs.modules.Variables.IDW; +import static org.jgrasstools.gears.libs.modules.Variables.TPS; + +import java.awt.image.WritableRaster; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.annotations.Unit; + +import org.geotools.coverage.grid.GridCoordinates2D; +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.modules.r.interpolation2d.core.IDWInterpolator; +import org.jgrasstools.gears.modules.r.interpolation2d.core.ISurfaceInterpolator; +import org.jgrasstools.gears.modules.r.interpolation2d.core.TPSInterpolator; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.geometry.DirectPosition; +import org.opengis.referencing.operation.TransformException; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.index.strtree.STRtree; + +@Description(// +en = "Surface Interpolator module",// +it = "Interpolazione di superfici"// +) +@Author(name = "Jan Jezek, Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("Interpolation, Raster, Spline") +@Status(Status.DRAFT) +@Name("surfaceinterpolator") +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class SurfaceInterpolator extends JGTModel { + + @Description(// + en = "The input vector map of points.",// + it = "La mappa vettoriale di punti."// + ) + @In + public SimpleFeatureCollection inVector; + + @Description(// + en = "The grid on which to interpolate.",// + it = "La griglia sulla quale interpolare."// + ) + @In + public GridGeometry2D inGrid = null; + + @Description(// + en = "An optional mask raster map. Values will be computed only where the mask has values.",// + it = "Una mappa raster opzionale da usare come maschera per il calcolo."// + ) + @In + public GridCoverage2D inMask = null; + + @Description(// + en = "Field from which to take the category value.",// + it = "Campo dal quale prendere il valore della categoria."// + ) + @In + public String fCat; + + @Description(// + en = "Interpolation mode (default is TPS).",// + it = "Metodo di interpolazione (default e' TPS)."// + ) + @UI("combo:" + TPS + "," + IDW) + @In + public String pMode = "TPS"; + + @Description(// + en = "The buffer to use for interpolation (default is 4).",// + it = "Il buffer da usare per l'interpolazione (default e' 4)."// + ) + @Unit("m") + @In + public double pBuffer = 4.0; + + @Description(// + en = "Max threads to use (default 1).",// + it = "Numero massimo di thread da usare (default 1)."// + ) + @In + public int pMaxThreads = 1; + + @Description(// + en = "The interpolated raster.",// + it = "Il raster interpolato."// + ) + @Out + public GridCoverage2D outRaster = null; + + private ISurfaceInterpolator interpolator; + + @Execute + public void process() throws Exception { + checkNull(inVector, inGrid, fCat); + + RegionMap regionMap = CoverageUtilities.gridGeometry2RegionParamsMap(inGrid); + final int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + + SimpleFeatureIterator featureIterator = inVector.features(); + Coordinate[] coordinates = new Coordinate[inVector.size()]; + final STRtree tree = new STRtree(coordinates.length); + + int index = 0; + pm.beginTask("Indexing control points...", coordinates.length); + while( featureIterator.hasNext() ) { + SimpleFeature feature = featureIterator.next(); + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + coordinates[index] = geometry.getCoordinate(); + double value = ((Number) feature.getAttribute(fCat)).doubleValue(); + coordinates[index].z = value; + + Envelope env = new Envelope(coordinates[index]); + tree.insert(env, coordinates[index]); + + pm.worked(1); + } + tree.build(); + pm.done(); + + pm.message("Indexed control points: " + coordinates.length); + + if (pMode.equals(IDW)) { + interpolator = new IDWInterpolator(pBuffer); + } else { + interpolator = new TPSInterpolator(pBuffer); + } + + WritableRaster interpolatedWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, + JGTConstants.doubleNovalue); + final WritableRandomIter interpolatedIter = RandomIterFactory.createWritable(interpolatedWR, null); + + boolean doMultiThread = pMaxThreads > 1; + + ExecutorService fixedThreadPool = null; + if (doMultiThread) + fixedThreadPool = Executors.newFixedThreadPool(pMaxThreads); + + pm.beginTask("Performing interpolation...", rows); + + final double[] eval = new double[1]; + for( int r = 0; r < rows; r++ ) { + final int row = r; + if (doMultiThread) { + Runnable runner = new Runnable(){ + public void run() { + processing(cols, tree, interpolatedIter, eval, row); + } + }; + fixedThreadPool.execute(runner); + } else { + processing(cols, tree, interpolatedIter, eval, row); + } + } + + if (doMultiThread) { + try { + fixedThreadPool.shutdown(); + fixedThreadPool.awaitTermination(30, TimeUnit.DAYS); + fixedThreadPool.shutdownNow(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + pm.done(); + + outRaster = CoverageUtilities.buildCoverage("interpolatedraster", interpolatedWR, regionMap, inVector.getSchema() + .getCoordinateReferenceSystem()); + + } + + private void processing( final int cols, final STRtree tree, final WritableRandomIter interpolatedIter, final double[] eval, + final int row ) { + try { + for( int c = 0; c < cols; c++ ) { + final DirectPosition gridToWorld = inGrid.gridToWorld(new GridCoordinates2D(c, row)); + // System.out.println(row + "/" + c); + boolean doProcess = true; + if (inMask != null) { + inMask.evaluate(gridToWorld, eval); + if (isNovalue(eval[0])) { + doProcess = false; + } + } + + if (doProcess) { + final Coordinate currentCoord = new Coordinate(); + final double[] coord = gridToWorld.getCoordinate(); + currentCoord.x = coord[0]; + currentCoord.y = coord[1]; + + final Envelope env = new Envelope(currentCoord.x - pBuffer, currentCoord.x + pBuffer, currentCoord.y + - pBuffer, currentCoord.y + pBuffer); + + @SuppressWarnings("unchecked") + final List result = tree.query(env); + // System.out.println(row + "/" + c + " = " + result.size()); + + // we need at least 3 points + if (result.size() < 4) { + continue; + } + + final double value = interpolator.getValue(result.toArray(new Coordinate[0]), currentCoord); + synchronized (interpolatedIter) { + interpolatedIter.setSample(c, row, 0, value); + } + } + + } + pm.worked(1); + } catch (TransformException e) { + e.printStackTrace(); + } + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/IDWInterpolator.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/IDWInterpolator.java index ae1ed71c8..455968072 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/IDWInterpolator.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/IDWInterpolator.java @@ -1,75 +1,75 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.interpolation2d.core; - -import org.jgrasstools.gears.libs.modules.JGTConstants; - -import com.vividsolutions.jts.geom.Coordinate; - -/** - * Implementation of IDW Interpolation. - * - * @author jezekjan - * @author Andrea Antonello (www.hydrologis.com) - */ -public class IDWInterpolator implements ISurfaceInterpolator { - - private final double buffer; - - public IDWInterpolator( double buffer ) { - this.buffer = buffer; - } - - public double getValue( Coordinate[] controlPoints, Coordinate interpolated ) { - if (controlPoints.length == 0) { - return JGTConstants.doubleNovalue; - } - - double sumdValue = 0; - double sumweight = 0; - - for( Coordinate coordinate : controlPoints ) { - double distance = coordinate.distance(interpolated); - /* - * the index if built on envelope, we need a radius check. - * If not near, do not consider it. - */ - if (distance > buffer) { - continue; - } - if (distance < 0.00001) { - distance = 0.00001; - } - double weight = (1 / Math.pow(distance, 2)); - - sumdValue = sumdValue + coordinate.z * weight; - - sumweight = sumweight + weight; - } - - double value = sumdValue / sumweight; - return value; - - } - - @Override - public double getBuffer() { - return buffer; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.interpolation2d.core; + +import org.jgrasstools.gears.libs.modules.JGTConstants; + +import com.vividsolutions.jts.geom.Coordinate; + +/** + * Implementation of IDW Interpolation. + * + * @author jezekjan + * @author Andrea Antonello (www.hydrologis.com) + */ +public class IDWInterpolator implements ISurfaceInterpolator { + + private final double buffer; + + public IDWInterpolator( double buffer ) { + this.buffer = buffer; + } + + public double getValue( Coordinate[] controlPoints, Coordinate interpolated ) { + if (controlPoints.length == 0) { + return JGTConstants.doubleNovalue; + } + + double sumdValue = 0; + double sumweight = 0; + + for( Coordinate coordinate : controlPoints ) { + double distance = coordinate.distance(interpolated); + /* + * the index if built on envelope, we need a radius check. + * If not near, do not consider it. + */ + if (distance > buffer) { + continue; + } + if (distance < 0.00001) { + distance = 0.00001; + } + double weight = (1 / Math.pow(distance, 2)); + + sumdValue = sumdValue + coordinate.z * weight; + + sumweight = sumweight + weight; + } + + double value = sumdValue / sumweight; + return value; + + } + + @Override + public double getBuffer() { + return buffer; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/ISurfaceInterpolator.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/ISurfaceInterpolator.java index cc0bf69de..da1100b8b 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/ISurfaceInterpolator.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/ISurfaceInterpolator.java @@ -1,39 +1,39 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.interpolation2d.core; - -import com.vividsolutions.jts.geom.Coordinate; - -/** - * Simple interface for surface interpolation. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public interface ISurfaceInterpolator { - /** - * Gets an interpolated value in a agiven position, from a set of control values. - * - * @param controlPoints all the controlpoints to consider to evaluate the interpolated point. - * @param interpolated the coordinate in which to interpolate. - * @return the interpolated z value. - */ - public double getValue( Coordinate[] controlPoints, Coordinate interpolated ); - - - public double getBuffer(); +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.interpolation2d.core; + +import com.vividsolutions.jts.geom.Coordinate; + +/** + * Simple interface for surface interpolation. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public interface ISurfaceInterpolator { + /** + * Gets an interpolated value in a agiven position, from a set of control values. + * + * @param controlPoints all the controlpoints to consider to evaluate the interpolated point. + * @param interpolated the coordinate in which to interpolate. + * @return the interpolated z value. + */ + public double getValue( Coordinate[] controlPoints, Coordinate interpolated ); + + + public double getBuffer(); } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/TPSInterpolator.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/TPSInterpolator.java index 05c16bf32..329b45f1c 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/TPSInterpolator.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/interpolation2d/core/TPSInterpolator.java @@ -1,184 +1,184 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.interpolation2d.core; - -import org.geotools.referencing.operation.matrix.GeneralMatrix; -import org.jgrasstools.gears.libs.modules.JGTConstants; - -import com.vividsolutions.jts.geom.Coordinate; - -/** - * Implementation of TPS Interpolation based on thin plate spline (TPS) algorithm - * - *

                TPS developed following: http://elonen.iki.fi/code/tpsdemo/index.html - * - *

                The implementation is meant to be threadsafe. - * - *

                Note that this implementation works only with metric data. - * - * @author jezekjan - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TPSInterpolator implements ISurfaceInterpolator { - - private final double buffer; - - public TPSInterpolator( double buffer ) { - this.buffer = buffer; - } - - @Override - public double getBuffer() { - return buffer; - } - - public double getValue( Coordinate[] controlPoints, Coordinate interpolated ) { - int controlPointsNum = controlPoints.length; - GeneralMatrix v = null; - try { - v = makeMatrix(controlPoints); - } catch (Exception e) { - return JGTConstants.doubleNovalue; - } - double a1 = v.getElement(v.getNumRow() - 3, 0); - double a2 = v.getElement(v.getNumRow() - 2, 0); - double a3 = v.getElement(v.getNumRow() - 1, 0); - - double sum = 0; - for( int i = 0; i < controlPointsNum; i++ ) { - double dist = interpolated.distance(controlPoints[i]); - sum = sum + (v.getElement(i, 0) * functionU(dist)); - } - - double value = (a1 + (a2 * interpolated.x) + (a3 * interpolated.y) + sum); - interpolated.z = value; - return value; - } - - private GeneralMatrix makeMatrix( Coordinate[] controlPoints ) { - int pointsNum = controlPoints.length; - GeneralMatrix L = new GeneralMatrix(pointsNum + 3, pointsNum + 3); - - fillKsubMatrix(controlPoints, L); - fillPsubMatrix(controlPoints, L); - fillOsubMatrix(controlPoints, L); - L.invert(); - GeneralMatrix V = fillVMatrix(0, controlPoints); - GeneralMatrix result = new GeneralMatrix(pointsNum + 3, 1); - result.mul(L, V); - return result; - } - - /** - * Calculates U function for distance. - * - * @param distance distance - * @return log(distance)*distance2 or 0 if distance = 0 - */ - private double functionU( double distance ) { - if (distance == 0) { - return 0; - } - - return distance * distance * Math.log(distance); - } - - /** - * Calculates U function where distance = ||pi, pj|| (from source points) - * - * @param p_i p_i - * @param p_j p_j - * @return log(distance)*distance2 or 0 if distance = 0 - */ - private double calculateFunctionU( Coordinate p_i, Coordinate p_j ) { - double distance = p_i.distance(p_j); - return functionU(distance); - } - - /** - * Fill K submatrix ( see more here) - * - * @param controlPoints - * @param L - */ - private void fillKsubMatrix( Coordinate[] controlPoints, GeneralMatrix L ) { - double alfa = 0; - int controlPointsNum = controlPoints.length; - for( int i = 0; i < controlPointsNum; i++ ) { - for( int j = i + 1; j < controlPointsNum; j++ ) { - double u = calculateFunctionU(controlPoints[i], controlPoints[j]); - L.setElement(i, j, u); - L.setElement(j, i, u); - alfa = alfa + (u * 2); // same for upper and lower part - } - } - - alfa = alfa / (controlPointsNum * controlPointsNum); - } - - /** - * Fill L submatrix ( see more here) - */ - private void fillPsubMatrix( Coordinate[] controlPoints, GeneralMatrix L ) { - int controlPointsNum = controlPoints.length; - for( int i = 0; i < controlPointsNum; i++ ) { - L.setElement(i, i, 0); - - L.setElement(i, controlPointsNum + 0, 1); - L.setElement(i, controlPointsNum + 1, controlPoints[i].x); - L.setElement(i, controlPointsNum + 2, controlPoints[i].y); - - L.setElement(controlPointsNum + 0, i, 1); - L.setElement(controlPointsNum + 1, i, controlPoints[i].x); - L.setElement(controlPointsNum + 2, i, controlPoints[i].y); - } - } - - /** - * Fill O submatrix ( see more here) - */ - private void fillOsubMatrix( Coordinate[] controlPoints, GeneralMatrix L ) { - int controlPointsNum = controlPoints.length; - for( int i = controlPointsNum; i < (controlPointsNum + 3); i++ ) { - for( int j = controlPointsNum; j < (controlPointsNum + 3); j++ ) { - L.setElement(i, j, 0); - } - } - } - - /** - * Fill V matrix (matrix of target values). - * - * @param dim 0 for dx, 1 for dy. - * @return V Matrix - */ - private GeneralMatrix fillVMatrix( int dim, Coordinate[] controlPoints ) { - int controlPointsNum = controlPoints.length; - GeneralMatrix V = new GeneralMatrix(controlPointsNum + 3, 1); - - for( int i = 0; i < controlPointsNum; i++ ) { - V.setElement(i, 0, controlPoints[i].z); - } - - V.setElement(V.getNumRow() - 3, 0, 0); - V.setElement(V.getNumRow() - 2, 0, 0); - V.setElement(V.getNumRow() - 1, 0, 0); - - return V; - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.interpolation2d.core; + +import org.geotools.referencing.operation.matrix.GeneralMatrix; +import org.jgrasstools.gears.libs.modules.JGTConstants; + +import com.vividsolutions.jts.geom.Coordinate; + +/** + * Implementation of TPS Interpolation based on thin plate spline (TPS) algorithm + * + *

                TPS developed following: http://elonen.iki.fi/code/tpsdemo/index.html + * + *

                The implementation is meant to be threadsafe. + * + *

                Note that this implementation works only with metric data. + * + * @author jezekjan + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TPSInterpolator implements ISurfaceInterpolator { + + private final double buffer; + + public TPSInterpolator( double buffer ) { + this.buffer = buffer; + } + + @Override + public double getBuffer() { + return buffer; + } + + public double getValue( Coordinate[] controlPoints, Coordinate interpolated ) { + int controlPointsNum = controlPoints.length; + GeneralMatrix v = null; + try { + v = makeMatrix(controlPoints); + } catch (Exception e) { + return JGTConstants.doubleNovalue; + } + double a1 = v.getElement(v.getNumRow() - 3, 0); + double a2 = v.getElement(v.getNumRow() - 2, 0); + double a3 = v.getElement(v.getNumRow() - 1, 0); + + double sum = 0; + for( int i = 0; i < controlPointsNum; i++ ) { + double dist = interpolated.distance(controlPoints[i]); + sum = sum + (v.getElement(i, 0) * functionU(dist)); + } + + double value = (a1 + (a2 * interpolated.x) + (a3 * interpolated.y) + sum); + interpolated.z = value; + return value; + } + + private GeneralMatrix makeMatrix( Coordinate[] controlPoints ) { + int pointsNum = controlPoints.length; + GeneralMatrix L = new GeneralMatrix(pointsNum + 3, pointsNum + 3); + + fillKsubMatrix(controlPoints, L); + fillPsubMatrix(controlPoints, L); + fillOsubMatrix(controlPoints, L); + L.invert(); + GeneralMatrix V = fillVMatrix(0, controlPoints); + GeneralMatrix result = new GeneralMatrix(pointsNum + 3, 1); + result.mul(L, V); + return result; + } + + /** + * Calculates U function for distance. + * + * @param distance distance + * @return log(distance)*distance2 or 0 if distance = 0 + */ + private double functionU( double distance ) { + if (distance == 0) { + return 0; + } + + return distance * distance * Math.log(distance); + } + + /** + * Calculates U function where distance = ||pi, pj|| (from source points) + * + * @param p_i p_i + * @param p_j p_j + * @return log(distance)*distance2 or 0 if distance = 0 + */ + private double calculateFunctionU( Coordinate p_i, Coordinate p_j ) { + double distance = p_i.distance(p_j); + return functionU(distance); + } + + /** + * Fill K submatrix ( see more here) + * + * @param controlPoints + * @param L + */ + private void fillKsubMatrix( Coordinate[] controlPoints, GeneralMatrix L ) { + double alfa = 0; + int controlPointsNum = controlPoints.length; + for( int i = 0; i < controlPointsNum; i++ ) { + for( int j = i + 1; j < controlPointsNum; j++ ) { + double u = calculateFunctionU(controlPoints[i], controlPoints[j]); + L.setElement(i, j, u); + L.setElement(j, i, u); + alfa = alfa + (u * 2); // same for upper and lower part + } + } + + alfa = alfa / (controlPointsNum * controlPointsNum); + } + + /** + * Fill L submatrix ( see more here) + */ + private void fillPsubMatrix( Coordinate[] controlPoints, GeneralMatrix L ) { + int controlPointsNum = controlPoints.length; + for( int i = 0; i < controlPointsNum; i++ ) { + L.setElement(i, i, 0); + + L.setElement(i, controlPointsNum + 0, 1); + L.setElement(i, controlPointsNum + 1, controlPoints[i].x); + L.setElement(i, controlPointsNum + 2, controlPoints[i].y); + + L.setElement(controlPointsNum + 0, i, 1); + L.setElement(controlPointsNum + 1, i, controlPoints[i].x); + L.setElement(controlPointsNum + 2, i, controlPoints[i].y); + } + } + + /** + * Fill O submatrix ( see more here) + */ + private void fillOsubMatrix( Coordinate[] controlPoints, GeneralMatrix L ) { + int controlPointsNum = controlPoints.length; + for( int i = controlPointsNum; i < (controlPointsNum + 3); i++ ) { + for( int j = controlPointsNum; j < (controlPointsNum + 3); j++ ) { + L.setElement(i, j, 0); + } + } + } + + /** + * Fill V matrix (matrix of target values). + * + * @param dim 0 for dx, 1 for dy. + * @return V Matrix + */ + private GeneralMatrix fillVMatrix( int dim, Coordinate[] controlPoints ) { + int controlPointsNum = controlPoints.length; + GeneralMatrix V = new GeneralMatrix(controlPointsNum + 3, 1); + + for( int i = 0; i < controlPointsNum; i++ ) { + V.setElement(i, 0, controlPoints[i].z); + } + + V.setElement(V.getNumRow() - 3, 0, 0); + V.setElement(V.getNumRow() - 2, 0, 0); + V.setElement(V.getNumRow() - 1, 0, 0); + + return V; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/mapcalc/Mapcalc.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/mapcalc/Mapcalc.java index c0ddc7dda..7565a7992 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/mapcalc/Mapcalc.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/mapcalc/Mapcalc.java @@ -1,210 +1,210 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.mapcalc; - -import java.awt.Rectangle; -import java.awt.geom.AffineTransform; -import java.awt.geom.Rectangle2D; -import java.awt.image.RenderedImage; -import java.awt.image.WritableRenderedImage; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jaitools.imageutils.ImageUtils; -import org.jaitools.jiffle.Jiffle; -import org.jaitools.jiffle.runtime.AffineCoordinateTransform; -import org.jaitools.jiffle.runtime.CoordinateTransform; -import org.jaitools.jiffle.runtime.JiffleDirectRuntime; -import org.jaitools.jiffle.runtime.JiffleExecutor; -import org.jaitools.jiffle.runtime.JiffleExecutorResult; -import org.jaitools.jiffle.runtime.JiffleProgressListener; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -@Description("Module for doing raster map algebra.") -@Documentation("Mapcalc.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Mapcalc, Raster, CutOut") -@Label(JGTConstants.RASTERPROCESSING) -@Name("mapcalc") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class Mapcalc extends JGTModel { - - @Description("The maps that are used in the calculation.") - @In - public List inRasters; - - @Description("The function to process.") - @UI(JGTConstants.MULTILINE_UI_HINT + "10," + JGTConstants.MAPCALC_UI_HINT) - @In - public String pFunction; - - @Description("The resulting map picked from the inserted function.") - @Out - public GridCoverage2D outRaster = null; - - private HashMap regionParameters = null; - - private CoordinateReferenceSystem crs; - - private Rectangle2D worldBounds; - - private long updateInterval; - private long totalCount = 100; - - @SuppressWarnings("nls") - @Execute - public void process() throws Exception { - if (!concatOr(outRaster == null, doReset)) { - return; - } - - String script = pFunction; - script = script.trim(); - - Jiffle jiffle = new Jiffle(); - jiffle.setScript(script); - jiffle.compile(); - JiffleDirectRuntime jiffleRuntime = jiffle.getRuntimeInstance(); - - CoordinateTransform jiffleCRS = null; - - // gather maps - for( GridCoverage2D mapGC : inRasters ) { - if (regionParameters == null) { - regionParameters = CoverageUtilities.getRegionParamsFromGridCoverage(mapGC); - crs = mapGC.getCoordinateReferenceSystem(); - - worldBounds = mapGC.getEnvelope2D().getBounds2D(); - Rectangle gridBounds = mapGC.getGridGeometry().getGridRange2D().getBounds(); - - jiffleCRS = getTransform(worldBounds, gridBounds); - - double xRes = regionParameters.get(CoverageUtilities.XRES).doubleValue(); - double yRes = regionParameters.get(CoverageUtilities.YRES).doubleValue(); - jiffleRuntime.setWorldByResolution(worldBounds, xRes, yRes); - } - RenderedImage renderedImage = mapGC.getRenderedImage(); - // add map - String name = mapGC.getName().toString(); - jiffleRuntime.setSourceImage(name, renderedImage, jiffleCRS); - } - if (regionParameters == null) { - throw new ModelsIllegalargumentException("No map has been supplied.", this.getClass().getSimpleName()); - } - int nCols = regionParameters.get(CoverageUtilities.COLS).intValue(); - int nRows = regionParameters.get(CoverageUtilities.ROWS).intValue(); - long pixelsNum = (long) nCols * nRows; - - if (pixelsNum < totalCount) { - totalCount = pixelsNum; - } - updateInterval = pixelsNum / totalCount; - - String destName = jiffleRuntime.getDestinationVarNames()[0]; - WritableRenderedImage destImg = ImageUtils.createConstantImage(nCols, nRows, 0d); - jiffleRuntime.setDestinationImage(destName, destImg, jiffleCRS); - - // create the executor - JiffleExecutor executor = new JiffleExecutor(); - WaitingListener listener = new WaitingListener(); - executor.addEventListener(listener); - listener.setNumTasks(1); - - executor.submit(jiffleRuntime, new JiffleProgressListener(){ - private long count = 0; - public void update( long done ) { - if (count == done) { - pm.worked(1); - count = count + updateInterval; - } - } - - public void start() { - pm.beginTask("Processing maps...", (int) totalCount); - } - - public void setUpdateInterval( double propPixels ) { - } - - public void setUpdateInterval( long numPixels ) { - } - - public void setTaskSize( long numPixels ) { - count = updateInterval; - } - - public long getUpdateInterval() { - if (updateInterval == 0) { - return 1; - } - return updateInterval; - } - - public void finish() { - pm.done(); - } - }); - listener.await(); - - JiffleExecutorResult result = listener.getResults().get(0); - Map imgMap = result.getImages(); - RenderedImage destImage = imgMap.get(destName); - outRaster = CoverageUtilities.buildCoverage(destName, destImage, regionParameters, crs); - executor.shutdown(); - } - - private static CoordinateTransform getTransform( Rectangle2D worldBounds, Rectangle imageBounds ) { - if (worldBounds == null || worldBounds.isEmpty()) { - throw new IllegalArgumentException("worldBounds must not be null or empty"); - } - if (imageBounds == null || imageBounds.isEmpty()) { - throw new IllegalArgumentException("imageBounds must not be null or empty"); - } - - double xscale = (imageBounds.getMaxX() - imageBounds.getMinX()) / (worldBounds.getMaxX() - worldBounds.getMinX()); - - double xoff = imageBounds.getMinX() - xscale * worldBounds.getMinX(); - - double yscale = (imageBounds.getMaxY() - imageBounds.getMinY()) / (worldBounds.getMaxY() - worldBounds.getMinY()); - - double yoff = imageBounds.getMinY() - yscale * worldBounds.getMinY(); - - return new AffineCoordinateTransform(new AffineTransform(xscale, 0, 0, yscale, xoff, yoff)); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.mapcalc; + +import java.awt.Rectangle; +import java.awt.geom.AffineTransform; +import java.awt.geom.Rectangle2D; +import java.awt.image.RenderedImage; +import java.awt.image.WritableRenderedImage; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jaitools.imageutils.ImageUtils; +import org.jaitools.jiffle.Jiffle; +import org.jaitools.jiffle.runtime.AffineCoordinateTransform; +import org.jaitools.jiffle.runtime.CoordinateTransform; +import org.jaitools.jiffle.runtime.JiffleDirectRuntime; +import org.jaitools.jiffle.runtime.JiffleExecutor; +import org.jaitools.jiffle.runtime.JiffleExecutorResult; +import org.jaitools.jiffle.runtime.JiffleProgressListener; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +@Description("Module for doing raster map algebra.") +@Documentation("Mapcalc.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Mapcalc, Raster, CutOut") +@Label(JGTConstants.RASTERPROCESSING) +@Name("mapcalc") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class Mapcalc extends JGTModel { + + @Description("The maps that are used in the calculation.") + @In + public List inRasters; + + @Description("The function to process.") + @UI(JGTConstants.MULTILINE_UI_HINT + "10," + JGTConstants.MAPCALC_UI_HINT) + @In + public String pFunction; + + @Description("The resulting map picked from the inserted function.") + @Out + public GridCoverage2D outRaster = null; + + private HashMap regionParameters = null; + + private CoordinateReferenceSystem crs; + + private Rectangle2D worldBounds; + + private long updateInterval; + private long totalCount = 100; + + @SuppressWarnings("nls") + @Execute + public void process() throws Exception { + if (!concatOr(outRaster == null, doReset)) { + return; + } + + String script = pFunction; + script = script.trim(); + + Jiffle jiffle = new Jiffle(); + jiffle.setScript(script); + jiffle.compile(); + JiffleDirectRuntime jiffleRuntime = jiffle.getRuntimeInstance(); + + CoordinateTransform jiffleCRS = null; + + // gather maps + for( GridCoverage2D mapGC : inRasters ) { + if (regionParameters == null) { + regionParameters = CoverageUtilities.getRegionParamsFromGridCoverage(mapGC); + crs = mapGC.getCoordinateReferenceSystem(); + + worldBounds = mapGC.getEnvelope2D().getBounds2D(); + Rectangle gridBounds = mapGC.getGridGeometry().getGridRange2D().getBounds(); + + jiffleCRS = getTransform(worldBounds, gridBounds); + + double xRes = regionParameters.get(CoverageUtilities.XRES).doubleValue(); + double yRes = regionParameters.get(CoverageUtilities.YRES).doubleValue(); + jiffleRuntime.setWorldByResolution(worldBounds, xRes, yRes); + } + RenderedImage renderedImage = mapGC.getRenderedImage(); + // add map + String name = mapGC.getName().toString(); + jiffleRuntime.setSourceImage(name, renderedImage, jiffleCRS); + } + if (regionParameters == null) { + throw new ModelsIllegalargumentException("No map has been supplied.", this.getClass().getSimpleName()); + } + int nCols = regionParameters.get(CoverageUtilities.COLS).intValue(); + int nRows = regionParameters.get(CoverageUtilities.ROWS).intValue(); + long pixelsNum = (long) nCols * nRows; + + if (pixelsNum < totalCount) { + totalCount = pixelsNum; + } + updateInterval = pixelsNum / totalCount; + + String destName = jiffleRuntime.getDestinationVarNames()[0]; + WritableRenderedImage destImg = ImageUtils.createConstantImage(nCols, nRows, 0d); + jiffleRuntime.setDestinationImage(destName, destImg, jiffleCRS); + + // create the executor + JiffleExecutor executor = new JiffleExecutor(); + WaitingListener listener = new WaitingListener(); + executor.addEventListener(listener); + listener.setNumTasks(1); + + executor.submit(jiffleRuntime, new JiffleProgressListener(){ + private long count = 0; + public void update( long done ) { + if (count == done) { + pm.worked(1); + count = count + updateInterval; + } + } + + public void start() { + pm.beginTask("Processing maps...", (int) totalCount); + } + + public void setUpdateInterval( double propPixels ) { + } + + public void setUpdateInterval( long numPixels ) { + } + + public void setTaskSize( long numPixels ) { + count = updateInterval; + } + + public long getUpdateInterval() { + if (updateInterval == 0) { + return 1; + } + return updateInterval; + } + + public void finish() { + pm.done(); + } + }); + listener.await(); + + JiffleExecutorResult result = listener.getResults().get(0); + Map imgMap = result.getImages(); + RenderedImage destImage = imgMap.get(destName); + outRaster = CoverageUtilities.buildCoverage(destName, destImage, regionParameters, crs); + executor.shutdown(); + } + + private static CoordinateTransform getTransform( Rectangle2D worldBounds, Rectangle imageBounds ) { + if (worldBounds == null || worldBounds.isEmpty()) { + throw new IllegalArgumentException("worldBounds must not be null or empty"); + } + if (imageBounds == null || imageBounds.isEmpty()) { + throw new IllegalArgumentException("imageBounds must not be null or empty"); + } + + double xscale = (imageBounds.getMaxX() - imageBounds.getMinX()) / (worldBounds.getMaxX() - worldBounds.getMinX()); + + double xoff = imageBounds.getMinX() - xscale * worldBounds.getMinX(); + + double yscale = (imageBounds.getMaxY() - imageBounds.getMinY()) / (worldBounds.getMaxY() - worldBounds.getMinY()); + + double yoff = imageBounds.getMinY() - yscale * worldBounds.getMinY(); + + return new AffineCoordinateTransform(new AffineTransform(xscale, 0, 0, yscale, xoff, yoff)); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/mosaic/Mosaic.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/mosaic/Mosaic.java index 23cbaedb4..928c5aa5d 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/mosaic/Mosaic.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/mosaic/Mosaic.java @@ -1,208 +1,208 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.mosaic; - -import static org.jgrasstools.gears.libs.modules.Variables.BICUBIC; -import static org.jgrasstools.gears.libs.modules.Variables.BILINEAR; -import static org.jgrasstools.gears.libs.modules.Variables.NEAREST_NEIGHTBOUR; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.EAST; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.NORTH; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.SOUTH; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.WEST; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.io.File; -import java.util.HashMap; -import java.util.List; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridEnvelope2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.geometry.Envelope2D; -import org.jgrasstools.gears.io.rasterreader.RasterReader; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.CrsUtilities; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -@Description("Module for raster patching.") -@Documentation("Mosaic.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Mosaic, Raster") -@Label(JGTConstants.RASTERPROCESSING) -@Name("mosaic") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class Mosaic extends JGTModel { - - @Description("The list of maps that have to be patched.") - @In - public List inFiles; - - @Description("The interpolation type to use") - @UI("combo:" + NEAREST_NEIGHTBOUR + "," + BILINEAR + "," + BICUBIC) - @In - public String pInterpolation = NEAREST_NEIGHTBOUR; - - @Description("The patched map.") - @Out - public GridCoverage2D outRaster = null; - - private CoordinateReferenceSystem crs; - - @Execute - public void process() throws Exception { - if (!concatOr(outRaster == null, doReset)) { - return; - } - - if (inFiles == null) { - throw new ModelsIllegalargumentException("No input data have been provided.", this); - } - - if (inFiles != null && inFiles.size() < 2) { - throw new ModelsIllegalargumentException("The patching module needs at least two maps to be patched.", this); - } - - GridGeometry2D referenceGridGeometry = null; - - double n = Double.MIN_VALUE; - double s = Double.MAX_VALUE; - double e = Double.MIN_VALUE; - double w = Double.MAX_VALUE; - int np = Integer.MIN_VALUE; - int sp = Integer.MAX_VALUE; - int ep = Integer.MIN_VALUE; - int wp = Integer.MAX_VALUE; - - pm.beginTask("Calculating final bounds...", inFiles.size()); - for( File coverageFile : inFiles ) { - GridCoverage2D coverage = RasterReader.readRaster(coverageFile.getAbsolutePath()); - // pm.message(MessageFormat.format("Reading map: {0} with crs: {1}", - // coverageFile.getAbsolutePath(), - // CrsUtilities.getCodeFromCrs(crs))); - - if (referenceGridGeometry == null) { - // take the first as reference - crs = coverage.getCoordinateReferenceSystem(); - referenceGridGeometry = coverage.getGridGeometry(); - - pm.message("Using crs: " + CrsUtilities.getCodeFromCrs(crs)); - } - - Envelope2D worldEnv = coverage.getEnvelope2D(); - GridEnvelope2D pixelEnv = referenceGridGeometry.worldToGrid(worldEnv); - - int minPX = (int) pixelEnv.getMinX(); - int minPY = (int) pixelEnv.getMinY(); - int maxPX = (int) pixelEnv.getMaxX(); - int maxPY = (int) pixelEnv.getMaxY(); - if (minPX < wp) - wp = minPX; - if (minPY < sp) - sp = minPY; - if (maxPX > ep) - ep = maxPX; - if (maxPY > np) - np = maxPY; - - double minWX = worldEnv.getMinX(); - double minWY = worldEnv.getMinY(); - double maxWX = worldEnv.getMaxX(); - double maxWY = worldEnv.getMaxY(); - if (minWX < w) - w = minWX; - if (minWY < s) - s = minWY; - if (maxWX > e) - e = maxWX; - if (maxWY > n) - n = maxWY; - pm.worked(1); - } - pm.done(); - - int endWidth = ep - wp; - int endHeight = np - sp; - WritableRaster outputWR = CoverageUtilities.createDoubleWritableRaster(endWidth, endHeight, null, null, - JGTConstants.doubleNovalue); - WritableRandomIter outputIter = RandomIterFactory.createWritable(outputWR, null); - - int offestX = Math.abs(wp); - int offestY = Math.abs(sp); - int index = 1; - for( File coverageFile : inFiles ) { - GridCoverage2D coverage = RasterReader.readRaster(coverageFile.getAbsolutePath()); - - RenderedImage renderedImage = coverage.getRenderedImage(); - RandomIter randomIter = RandomIterFactory.create(renderedImage, null); - - Envelope2D env = coverage.getEnvelope2D(); - - GridEnvelope2D repEnv = referenceGridGeometry.worldToGrid(env); - - GridGeometry2D tmpGG = coverage.getGridGeometry(); - GridEnvelope2D tmpEnv = tmpGG.worldToGrid(env); - - int startX = (int) (repEnv.getMinX() + offestX); - int startY = (int) (repEnv.getMinY() + offestY); - - double tmpW = tmpEnv.getWidth(); - pm.beginTask("Patch map " + index++, (int) tmpW); //$NON-NLS-1$ - for( int x = 0; x < tmpW; x++ ) { - for( int y = 0; y < tmpEnv.getHeight(); y++ ) { - double value = randomIter.getSampleDouble(x, y, 0); - outputIter.setSample(x + startX, y + startY, 0, value); - } - pm.worked(1); - } - pm.done(); - randomIter.done(); - } - - HashMap envelopeParams = new HashMap(); - envelopeParams.put(NORTH, n); - envelopeParams.put(SOUTH, s); - envelopeParams.put(WEST, w); - envelopeParams.put(EAST, e); - - outRaster = CoverageUtilities.buildCoverage("patch", outputWR, envelopeParams, crs); //$NON-NLS-1$ - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.mosaic; + +import static org.jgrasstools.gears.libs.modules.Variables.BICUBIC; +import static org.jgrasstools.gears.libs.modules.Variables.BILINEAR; +import static org.jgrasstools.gears.libs.modules.Variables.NEAREST_NEIGHTBOUR; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.EAST; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.NORTH; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.SOUTH; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.WEST; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.io.File; +import java.util.HashMap; +import java.util.List; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridEnvelope2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.geometry.Envelope2D; +import org.jgrasstools.gears.io.rasterreader.RasterReader; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.CrsUtilities; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +@Description("Module for raster patching.") +@Documentation("Mosaic.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Mosaic, Raster") +@Label(JGTConstants.RASTERPROCESSING) +@Name("mosaic") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class Mosaic extends JGTModel { + + @Description("The list of maps that have to be patched.") + @In + public List inFiles; + + @Description("The interpolation type to use") + @UI("combo:" + NEAREST_NEIGHTBOUR + "," + BILINEAR + "," + BICUBIC) + @In + public String pInterpolation = NEAREST_NEIGHTBOUR; + + @Description("The patched map.") + @Out + public GridCoverage2D outRaster = null; + + private CoordinateReferenceSystem crs; + + @Execute + public void process() throws Exception { + if (!concatOr(outRaster == null, doReset)) { + return; + } + + if (inFiles == null) { + throw new ModelsIllegalargumentException("No input data have been provided.", this); + } + + if (inFiles != null && inFiles.size() < 2) { + throw new ModelsIllegalargumentException("The patching module needs at least two maps to be patched.", this); + } + + GridGeometry2D referenceGridGeometry = null; + + double n = Double.MIN_VALUE; + double s = Double.MAX_VALUE; + double e = Double.MIN_VALUE; + double w = Double.MAX_VALUE; + int np = Integer.MIN_VALUE; + int sp = Integer.MAX_VALUE; + int ep = Integer.MIN_VALUE; + int wp = Integer.MAX_VALUE; + + pm.beginTask("Calculating final bounds...", inFiles.size()); + for( File coverageFile : inFiles ) { + GridCoverage2D coverage = RasterReader.readRaster(coverageFile.getAbsolutePath()); + // pm.message(MessageFormat.format("Reading map: {0} with crs: {1}", + // coverageFile.getAbsolutePath(), + // CrsUtilities.getCodeFromCrs(crs))); + + if (referenceGridGeometry == null) { + // take the first as reference + crs = coverage.getCoordinateReferenceSystem(); + referenceGridGeometry = coverage.getGridGeometry(); + + pm.message("Using crs: " + CrsUtilities.getCodeFromCrs(crs)); + } + + Envelope2D worldEnv = coverage.getEnvelope2D(); + GridEnvelope2D pixelEnv = referenceGridGeometry.worldToGrid(worldEnv); + + int minPX = (int) pixelEnv.getMinX(); + int minPY = (int) pixelEnv.getMinY(); + int maxPX = (int) pixelEnv.getMaxX(); + int maxPY = (int) pixelEnv.getMaxY(); + if (minPX < wp) + wp = minPX; + if (minPY < sp) + sp = minPY; + if (maxPX > ep) + ep = maxPX; + if (maxPY > np) + np = maxPY; + + double minWX = worldEnv.getMinX(); + double minWY = worldEnv.getMinY(); + double maxWX = worldEnv.getMaxX(); + double maxWY = worldEnv.getMaxY(); + if (minWX < w) + w = minWX; + if (minWY < s) + s = minWY; + if (maxWX > e) + e = maxWX; + if (maxWY > n) + n = maxWY; + pm.worked(1); + } + pm.done(); + + int endWidth = ep - wp; + int endHeight = np - sp; + WritableRaster outputWR = CoverageUtilities.createDoubleWritableRaster(endWidth, endHeight, null, null, + JGTConstants.doubleNovalue); + WritableRandomIter outputIter = RandomIterFactory.createWritable(outputWR, null); + + int offestX = Math.abs(wp); + int offestY = Math.abs(sp); + int index = 1; + for( File coverageFile : inFiles ) { + GridCoverage2D coverage = RasterReader.readRaster(coverageFile.getAbsolutePath()); + + RenderedImage renderedImage = coverage.getRenderedImage(); + RandomIter randomIter = RandomIterFactory.create(renderedImage, null); + + Envelope2D env = coverage.getEnvelope2D(); + + GridEnvelope2D repEnv = referenceGridGeometry.worldToGrid(env); + + GridGeometry2D tmpGG = coverage.getGridGeometry(); + GridEnvelope2D tmpEnv = tmpGG.worldToGrid(env); + + int startX = (int) (repEnv.getMinX() + offestX); + int startY = (int) (repEnv.getMinY() + offestY); + + double tmpW = tmpEnv.getWidth(); + pm.beginTask("Patch map " + index++, (int) tmpW); //$NON-NLS-1$ + for( int x = 0; x < tmpW; x++ ) { + for( int y = 0; y < tmpEnv.getHeight(); y++ ) { + double value = randomIter.getSampleDouble(x, y, 0); + outputIter.setSample(x + startX, y + startY, 0, value); + } + pm.worked(1); + } + pm.done(); + randomIter.done(); + } + + HashMap envelopeParams = new HashMap(); + envelopeParams.put(NORTH, n); + envelopeParams.put(SOUTH, s); + envelopeParams.put(WEST, w); + envelopeParams.put(EAST, e); + + outRaster = CoverageUtilities.buildCoverage("patch", outputWR, envelopeParams, crs); //$NON-NLS-1$ + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/profile/Profile.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/profile/Profile.java index 8e1883791..0d6778dd7 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/profile/Profile.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/profile/Profile.java @@ -1,196 +1,196 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.profile; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.coverage.ProfilePoint; -import org.jgrasstools.gears.utils.features.FeatureMate; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.gears.utils.files.FileUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; - -@Description("Module creating profiles over rasters.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Profile, Raster") -@Label(JGTConstants.RASTERPROCESSING) -@Name("profile") -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class Profile extends JGTModel { - - @Description("The raster map to use for the profile") - @In - public GridCoverage2D inRaster; - - @Description("Comma separated list of easting,northing coordinates to trace the profile on (optional).") - @In - public String inCoordinates; - - @Description("Line vector map to use to trace the profile on (optional).") - @In - public SimpleFeatureCollection inVector; - - @Description("The id of the line to use for the name of the profile output file name (used in case of inVector use).") - @In - public String fLineid; - - @Description("The folder in which to place the output profiles if multiple (used in case of inVector use).") - @In - public String outFolder; - - @Description("The output profile for the last line read (contains progressive, elevation, x, y).") - @Out - public double[][] outProfile; - - @Execute - public void process() throws Exception { - checkNull(inRaster); - - if (inCoordinates == null && inVector == null) { - throw new ModelsIllegalargumentException( - "Either the coordinates or a vector map to trace the profile on have to be supplied.", this); - } - - if (inCoordinates != null && inCoordinates.length() > 0) { - profileFromManualCoordinates(); - } else if (inVector != null) { - if (inVector != null && inVector.size() != 1) - checkNull(outFolder, fLineid); - profileFromFeatureCollection(); - } - - } - - private void profileFromFeatureCollection() throws Exception { - - pm.message("Using supplied vector map to trace the profile..."); - List linesList = FeatureUtilities.featureCollectionToMatesList(inVector); - for( FeatureMate lineFeature : linesList ) { - Geometry geom = lineFeature.getGeometry(); - List profileNodesList = new ArrayList(); - if (GeometryUtilities.isLine(geom)) { - Coordinate[] coordinates = geom.getCoordinates(); - for( Coordinate coordinate : coordinates ) { - profileNodesList.add(coordinate); - } - } else { - throw new ModelsIllegalargumentException("The module works only for lines.", this); - } - // dump the profile - List profilePoints = CoverageUtilities.doProfile(inRaster, profileNodesList.toArray(new Coordinate[0])); - - outProfile = new double[profilePoints.size()][4]; - for( int i = 0; i < profilePoints.size(); i++ ) { - ProfilePoint profilePoint = profilePoints.get(i); - double progressive = profilePoint.getProgressive(); - double elev = profilePoint.getElevation(); - Coordinate coord = profilePoint.getPosition(); - outProfile[i][0] = progressive; - outProfile[i][1] = elev; - outProfile[i][2] = coord.x; - outProfile[i][3] = coord.y; - } - - if (outFolder != null && fLineid != null) { - String id = lineFeature.getAttribute(fLineid, String.class); - File outFolderFile = new File(outFolder); - File profileFile = new File(outFolderFile, id + ".csv"); - StringBuilder sb = new StringBuilder(); - for( int i = 0; i < profilePoints.size(); i++ ) { - ProfilePoint profilePoint = profilePoints.get(i); - double progressive = profilePoint.getProgressive(); - double elev = profilePoint.getElevation(); - // Coordinate coord = profilePoint.getPosition(); - sb.append(progressive).append(", ").append(elev).append("\n"); - } - FileUtilities.writeFile(sb.toString(), profileFile); - - double meanSlope = ProfilePoint.getMeanSlope(profilePoints); - StringBuilder sbSlope = new StringBuilder(); - sbSlope.append("Mean slope for id = "); - sbSlope.append(id); - sbSlope.append(" is "); - sbSlope.append(meanSlope); - pm.message(sbSlope.toString()); - } else { - pm.errorMessage("Evaluating only first feature when writing to console. If you need the profile of all features, define an output folder."); - break; - } - } - } - - private void profileFromManualCoordinates() throws Exception { - List profileNodesList = new ArrayList(); - pm.message("Using supplied coordinates to trace the profile..."); - String[] split = inCoordinates.split(","); - for( int i = 0; i < split.length; i++ ) { - double east = Double.parseDouble(split[i].trim()); - i++; - double north = Double.parseDouble(split[i].trim()); - Coordinate tmp = new Coordinate(east, north); - profileNodesList.add(tmp); - } - - if (profileNodesList.size() < 2) { - throw new ModelsIllegalargumentException("We need at least two coordinates to create a profile. Check your syntax.", - this); - } - - List profilePoints = CoverageUtilities.doProfile(inRaster, profileNodesList.toArray(new Coordinate[0])); - outProfile = new double[profilePoints.size()][4]; - for( int i = 0; i < profilePoints.size(); i++ ) { - ProfilePoint profilePoint = profilePoints.get(i); - double progressive = profilePoint.getProgressive(); - double elev = profilePoint.getElevation(); - Coordinate coord = profilePoint.getPosition(); - outProfile[i][0] = progressive; - outProfile[i][1] = elev; - outProfile[i][2] = coord.x; - outProfile[i][3] = coord.y; - } - - double meanSlope = ProfilePoint.getMeanSlope(profilePoints); - StringBuilder sbSlope = new StringBuilder(); - sbSlope.append("Mean slope profile is "); - sbSlope.append(meanSlope); - pm.message(sbSlope.toString()); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.profile; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.coverage.ProfilePoint; +import org.jgrasstools.gears.utils.features.FeatureMate; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.gears.utils.files.FileUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; + +@Description("Module creating profiles over rasters.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Profile, Raster") +@Label(JGTConstants.RASTERPROCESSING) +@Name("profile") +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class Profile extends JGTModel { + + @Description("The raster map to use for the profile") + @In + public GridCoverage2D inRaster; + + @Description("Comma separated list of easting,northing coordinates to trace the profile on (optional).") + @In + public String inCoordinates; + + @Description("Line vector map to use to trace the profile on (optional).") + @In + public SimpleFeatureCollection inVector; + + @Description("The id of the line to use for the name of the profile output file name (used in case of inVector use).") + @In + public String fLineid; + + @Description("The folder in which to place the output profiles if multiple (used in case of inVector use).") + @In + public String outFolder; + + @Description("The output profile for the last line read (contains progressive, elevation, x, y).") + @Out + public double[][] outProfile; + + @Execute + public void process() throws Exception { + checkNull(inRaster); + + if (inCoordinates == null && inVector == null) { + throw new ModelsIllegalargumentException( + "Either the coordinates or a vector map to trace the profile on have to be supplied.", this); + } + + if (inCoordinates != null && inCoordinates.length() > 0) { + profileFromManualCoordinates(); + } else if (inVector != null) { + if (inVector != null && inVector.size() != 1) + checkNull(outFolder, fLineid); + profileFromFeatureCollection(); + } + + } + + private void profileFromFeatureCollection() throws Exception { + + pm.message("Using supplied vector map to trace the profile..."); + List linesList = FeatureUtilities.featureCollectionToMatesList(inVector); + for( FeatureMate lineFeature : linesList ) { + Geometry geom = lineFeature.getGeometry(); + List profileNodesList = new ArrayList(); + if (GeometryUtilities.isLine(geom)) { + Coordinate[] coordinates = geom.getCoordinates(); + for( Coordinate coordinate : coordinates ) { + profileNodesList.add(coordinate); + } + } else { + throw new ModelsIllegalargumentException("The module works only for lines.", this); + } + // dump the profile + List profilePoints = CoverageUtilities.doProfile(inRaster, profileNodesList.toArray(new Coordinate[0])); + + outProfile = new double[profilePoints.size()][4]; + for( int i = 0; i < profilePoints.size(); i++ ) { + ProfilePoint profilePoint = profilePoints.get(i); + double progressive = profilePoint.getProgressive(); + double elev = profilePoint.getElevation(); + Coordinate coord = profilePoint.getPosition(); + outProfile[i][0] = progressive; + outProfile[i][1] = elev; + outProfile[i][2] = coord.x; + outProfile[i][3] = coord.y; + } + + if (outFolder != null && fLineid != null) { + String id = lineFeature.getAttribute(fLineid, String.class); + File outFolderFile = new File(outFolder); + File profileFile = new File(outFolderFile, id + ".csv"); + StringBuilder sb = new StringBuilder(); + for( int i = 0; i < profilePoints.size(); i++ ) { + ProfilePoint profilePoint = profilePoints.get(i); + double progressive = profilePoint.getProgressive(); + double elev = profilePoint.getElevation(); + // Coordinate coord = profilePoint.getPosition(); + sb.append(progressive).append(", ").append(elev).append("\n"); + } + FileUtilities.writeFile(sb.toString(), profileFile); + + double meanSlope = ProfilePoint.getMeanSlope(profilePoints); + StringBuilder sbSlope = new StringBuilder(); + sbSlope.append("Mean slope for id = "); + sbSlope.append(id); + sbSlope.append(" is "); + sbSlope.append(meanSlope); + pm.message(sbSlope.toString()); + } else { + pm.errorMessage("Evaluating only first feature when writing to console. If you need the profile of all features, define an output folder."); + break; + } + } + } + + private void profileFromManualCoordinates() throws Exception { + List profileNodesList = new ArrayList(); + pm.message("Using supplied coordinates to trace the profile..."); + String[] split = inCoordinates.split(","); + for( int i = 0; i < split.length; i++ ) { + double east = Double.parseDouble(split[i].trim()); + i++; + double north = Double.parseDouble(split[i].trim()); + Coordinate tmp = new Coordinate(east, north); + profileNodesList.add(tmp); + } + + if (profileNodesList.size() < 2) { + throw new ModelsIllegalargumentException("We need at least two coordinates to create a profile. Check your syntax.", + this); + } + + List profilePoints = CoverageUtilities.doProfile(inRaster, profileNodesList.toArray(new Coordinate[0])); + outProfile = new double[profilePoints.size()][4]; + for( int i = 0; i < profilePoints.size(); i++ ) { + ProfilePoint profilePoint = profilePoints.get(i); + double progressive = profilePoint.getProgressive(); + double elev = profilePoint.getElevation(); + Coordinate coord = profilePoint.getPosition(); + outProfile[i][0] = progressive; + outProfile[i][1] = elev; + outProfile[i][2] = coord.x; + outProfile[i][3] = coord.y; + } + + double meanSlope = ProfilePoint.getMeanSlope(profilePoints); + StringBuilder sbSlope = new StringBuilder(); + sbSlope.append("Mean slope profile is "); + sbSlope.append(meanSlope); + pm.message(sbSlope.toString()); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rangelookup/RangeLookup.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rangelookup/RangeLookup.java index 0d87483b8..4bee175f7 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rangelookup/RangeLookup.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rangelookup/RangeLookup.java @@ -1,132 +1,132 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.rangelookup; - -import java.awt.image.RenderedImage; -import java.util.HashMap; - -import javax.media.jai.JAI; -import javax.media.jai.ParameterBlockJAI; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jaitools.media.jai.rangelookup.RangeLookupTable; -import org.jaitools.numeric.Range; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; - -@Description("Module for raster rangelookup.") -@Documentation("RangeLookup.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Raster, Rangelookup") -@Label(JGTConstants.RASTERPROCESSING) -@Status(Status.CERTIFIED) -@Name("rrangelookup") -@License("General Public License Version 3 (GPLv3)") -public class RangeLookup extends JGTModel { - - @Description("The raster that has to be processed.") - @In - public GridCoverage2D inRaster; - - @Description("The ranges in the form [r1l r1h),[r2l r2h]") - @In - public String pRanges; - - @Description("The classes to substitute in the same order of the ranges (in the form 1,2)") - @In - public String pClasses; - - @Description("The processed raster.") - @Out - public GridCoverage2D outRaster = null; - - @SuppressWarnings("nls") - @Execute - public void process() throws Exception { - if (!concatOr(outRaster == null, doReset)) { - return; - } - - checkNull(inRaster, pRanges, pClasses); - - RenderedImage inRI = inRaster.getRenderedImage(); - - RangeLookupTable table = new RangeLookupTable(JGTConstants.doubleNovalue); - - String[] rangesSplit = pRanges.trim().split(","); - String[] classesSplit = pClasses.trim().split(","); - if (rangesSplit.length != classesSplit.length) { - throw new ModelsIllegalargumentException("Ranges and classes must be in pairs!", this); - } - for( int i = 0; i < rangesSplit.length; i++ ) { - String classStr = classesSplit[i].trim(); - double classNum = Double.parseDouble(classStr); - - String range = rangesSplit[i].trim(); - boolean minIncluded = false; - boolean maxIncluded = false; - if (range.startsWith("[")) { - minIncluded = true; - } - if (range.endsWith("]")) { - maxIncluded = true; - } - String rangeNoBrac = range.replaceAll("\\[|\\]|\\(|\\)", ""); - String[] split = rangeNoBrac.trim().split("\\s+"); - - Double min = null; - try { - min = Double.parseDouble(split[0]); - } catch (Exception e) { - // can be null - } - Double max = null; - try { - max = Double.parseDouble(split[1]); - } catch (Exception e) { - // can be null - } - - Range r = new Range(min, minIncluded, max, maxIncluded); - table.add(r, classNum); - } - - ParameterBlockJAI pb = new ParameterBlockJAI("RangeLookup"); - pb.setSource("source0", inRI); - pb.setParameter("table", table); - RenderedImage lookupImg = JAI.create("RangeLookup", pb); - - HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); - outRaster = CoverageUtilities.buildCoverage("rangelookup", lookupImg, regionMap, - inRaster.getCoordinateReferenceSystem()); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.rangelookup; + +import java.awt.image.RenderedImage; +import java.util.HashMap; + +import javax.media.jai.JAI; +import javax.media.jai.ParameterBlockJAI; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jaitools.media.jai.rangelookup.RangeLookupTable; +import org.jaitools.numeric.Range; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; + +@Description("Module for raster rangelookup.") +@Documentation("RangeLookup.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Raster, Rangelookup") +@Label(JGTConstants.RASTERPROCESSING) +@Status(Status.CERTIFIED) +@Name("rrangelookup") +@License("General Public License Version 3 (GPLv3)") +public class RangeLookup extends JGTModel { + + @Description("The raster that has to be processed.") + @In + public GridCoverage2D inRaster; + + @Description("The ranges in the form [r1l r1h),[r2l r2h]") + @In + public String pRanges; + + @Description("The classes to substitute in the same order of the ranges (in the form 1,2)") + @In + public String pClasses; + + @Description("The processed raster.") + @Out + public GridCoverage2D outRaster = null; + + @SuppressWarnings("nls") + @Execute + public void process() throws Exception { + if (!concatOr(outRaster == null, doReset)) { + return; + } + + checkNull(inRaster, pRanges, pClasses); + + RenderedImage inRI = inRaster.getRenderedImage(); + + RangeLookupTable table = new RangeLookupTable(JGTConstants.doubleNovalue); + + String[] rangesSplit = pRanges.trim().split(","); + String[] classesSplit = pClasses.trim().split(","); + if (rangesSplit.length != classesSplit.length) { + throw new ModelsIllegalargumentException("Ranges and classes must be in pairs!", this); + } + for( int i = 0; i < rangesSplit.length; i++ ) { + String classStr = classesSplit[i].trim(); + double classNum = Double.parseDouble(classStr); + + String range = rangesSplit[i].trim(); + boolean minIncluded = false; + boolean maxIncluded = false; + if (range.startsWith("[")) { + minIncluded = true; + } + if (range.endsWith("]")) { + maxIncluded = true; + } + String rangeNoBrac = range.replaceAll("\\[|\\]|\\(|\\)", ""); + String[] split = rangeNoBrac.trim().split("\\s+"); + + Double min = null; + try { + min = Double.parseDouble(split[0]); + } catch (Exception e) { + // can be null + } + Double max = null; + try { + max = Double.parseDouble(split[1]); + } catch (Exception e) { + // can be null + } + + Range r = new Range(min, minIncluded, max, maxIncluded); + table.add(r, classNum); + } + + ParameterBlockJAI pb = new ParameterBlockJAI("RangeLookup"); + pb.setSource("source0", inRI); + pb.setParameter("table", table); + RenderedImage lookupImg = JAI.create("RangeLookup", pb); + + HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); + outRaster = CoverageUtilities.buildCoverage("rangelookup", lookupImg, regionMap, + inRaster.getCoordinateReferenceSystem()); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/raster2xyz/Raster2Xyz.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/raster2xyz/Raster2Xyz.java index 949eea099..0f9e442bf 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/raster2xyz/Raster2Xyz.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/raster2xyz/Raster2Xyz.java @@ -1,106 +1,106 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.raster2xyz; - -import java.io.BufferedWriter; -import java.io.FileWriter; - -import javax.media.jai.iterator.RandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoordinates2D; -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.geometry.DirectPosition; - -@Description("Convert a raster to XYZ triplets.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Raster, Conversion") -@Label(JGTConstants.RASTERPROCESSING) -@Name("raster2xyz") -@Status(Status.EXPERIMENTAL) -@License("General Public License Version 3 (GPLv3)") -public class Raster2Xyz extends JGTModel { - - @Description("The map to convert.") - @In - public GridCoverage2D inRaster; - - @Description("The file into which to save the result.") - @In - public String inFile; - - @Description("Flag to remove novalues.") - @In - public boolean doRemovenv = true; - - @SuppressWarnings("nls") - @Execute - public void process() throws Exception { - checkNull(inRaster); - - RandomIter rasterIter = CoverageUtilities.getRandomIterator(inRaster); - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); - GridGeometry2D gridGeometry = inRaster.getGridGeometry(); - - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - - BufferedWriter writer = null; - try { - writer = new BufferedWriter(new FileWriter(inFile)); - for( int r = 0; r < rows; r++ ) { - for( int c = 0; c < cols; c++ ) { - double elevation = rasterIter.getSampleDouble(c, r, 0); - if (doRemovenv && JGTConstants.isNovalue(elevation)) { - continue; - } - DirectPosition position = gridGeometry.gridToWorld(new GridCoordinates2D(c, r)); - double[] coordinate = position.getCoordinate(); - - StringBuilder sb = new StringBuilder(); - sb.append(coordinate[0]); - sb.append("\t"); - sb.append(coordinate[1]); - sb.append("\t"); - sb.append(elevation); - sb.append("\n"); - writer.write(sb.toString()); - } - } - } finally { - if (writer != null) - writer.close(); - } - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.raster2xyz; + +import java.io.BufferedWriter; +import java.io.FileWriter; + +import javax.media.jai.iterator.RandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoordinates2D; +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.geometry.DirectPosition; + +@Description("Convert a raster to XYZ triplets.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Raster, Conversion") +@Label(JGTConstants.RASTERPROCESSING) +@Name("raster2xyz") +@Status(Status.EXPERIMENTAL) +@License("General Public License Version 3 (GPLv3)") +public class Raster2Xyz extends JGTModel { + + @Description("The map to convert.") + @In + public GridCoverage2D inRaster; + + @Description("The file into which to save the result.") + @In + public String inFile; + + @Description("Flag to remove novalues.") + @In + public boolean doRemovenv = true; + + @SuppressWarnings("nls") + @Execute + public void process() throws Exception { + checkNull(inRaster); + + RandomIter rasterIter = CoverageUtilities.getRandomIterator(inRaster); + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); + GridGeometry2D gridGeometry = inRaster.getGridGeometry(); + + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + + BufferedWriter writer = null; + try { + writer = new BufferedWriter(new FileWriter(inFile)); + for( int r = 0; r < rows; r++ ) { + for( int c = 0; c < cols; c++ ) { + double elevation = rasterIter.getSampleDouble(c, r, 0); + if (doRemovenv && JGTConstants.isNovalue(elevation)) { + continue; + } + DirectPosition position = gridGeometry.gridToWorld(new GridCoordinates2D(c, r)); + double[] coordinate = position.getCoordinate(); + + StringBuilder sb = new StringBuilder(); + sb.append(coordinate[0]); + sb.append("\t"); + sb.append(coordinate[1]); + sb.append("\t"); + sb.append(elevation); + sb.append("\n"); + writer.write(sb.toString()); + } + } + } finally { + if (writer != null) + writer.close(); + } + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rasterconverter/RasterConverter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rasterconverter/RasterConverter.java index 35c1054c0..9e64c80c0 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rasterconverter/RasterConverter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rasterconverter/RasterConverter.java @@ -1,59 +1,59 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.rasterconverter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; - -@Description("Raster conversion module.") -@Documentation("RasterConverter.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Coverage, Raster, Convert, RasterReader") -@Label(JGTConstants.RASTERPROCESSING) -@Status(Status.CERTIFIED) -@Name("rconvert") -@License("General Public License Version 3 (GPLv3)") -public class RasterConverter extends JGTModel { - @Description("The input raster.") - @In - public GridCoverage2D inRaster; - - @Description("The output raster.") - @Out - public GridCoverage2D outRaster; - - @Execute - public void process() throws Exception { - checkNull(inRaster); - outRaster = inRaster; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.rasterconverter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; + +@Description("Raster conversion module.") +@Documentation("RasterConverter.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Coverage, Raster, Convert, RasterReader") +@Label(JGTConstants.RASTERPROCESSING) +@Status(Status.CERTIFIED) +@Name("rconvert") +@License("General Public License Version 3 (GPLv3)") +public class RasterConverter extends JGTModel { + @Description("The input raster.") + @In + public GridCoverage2D inRaster; + + @Description("The output raster.") + @Out + public GridCoverage2D outRaster; + + @Execute + public void process() throws Exception { + checkNull(inRaster); + outRaster = inRaster; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rastercorrector/RasterCorrector.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rastercorrector/RasterCorrector.java index b39dac759..1dc3d71a3 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rastercorrector/RasterCorrector.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rastercorrector/RasterCorrector.java @@ -1,88 +1,88 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.rastercorrector; - -import java.awt.image.RenderedImage; -import java.awt.image.WritableRaster; -import java.util.HashMap; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; - -@Description("Raster corrector module.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Coverage, Raster, Correct, RasterReader") -@Label(JGTConstants.RASTERPROCESSING) -@Status(Status.EXPERIMENTAL) -@Name("rcorrect") -@License("General Public License Version 3 (GPLv3)") -public class RasterCorrector extends JGTModel { - @Description("The input raster.") - @In - public GridCoverage2D inRaster; - - @Description("The values to correct as a CSV list of triplets (format is col1,row1,value1,col2,row2,value2...).") - @UI(JGTConstants.EASTINGNORTHING_UI_HINT) - @In - public String pCorrections; - - @Description("The output raster.") - @Out - public GridCoverage2D outRaster; - - @Execute - public void process() throws Exception { - checkNull(inRaster, pCorrections); - - String[] correctionSplit = pCorrections.split(","); //$NON-NLS-1$ - if (correctionSplit.length % 3 != 0) { - throw new ModelsIllegalargumentException( - "the format of the correction values is: col1,row1,value1,col2,row2,value2...", this); - } - - RenderedImage inRI = inRaster.getRenderedImage(); - WritableRaster outWR = CoverageUtilities.renderedImage2WritableRaster(inRI, false); - - for( int i = 0; i < correctionSplit.length; i = i + 3 ) { - int col = Integer.parseInt(correctionSplit[i].trim()); - int row = Integer.parseInt(correctionSplit[i + 1].trim()); - double value = Double.parseDouble(correctionSplit[i + 2].trim()); - - outWR.setSample(col, row, 0, value); - } - - HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); - outRaster = CoverageUtilities.buildCoverage("corrected", outWR, regionMap, inRaster.getCoordinateReferenceSystem()); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.rastercorrector; + +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.util.HashMap; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; + +@Description("Raster corrector module.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Coverage, Raster, Correct, RasterReader") +@Label(JGTConstants.RASTERPROCESSING) +@Status(Status.EXPERIMENTAL) +@Name("rcorrect") +@License("General Public License Version 3 (GPLv3)") +public class RasterCorrector extends JGTModel { + @Description("The input raster.") + @In + public GridCoverage2D inRaster; + + @Description("The values to correct as a CSV list of triplets (format is col1,row1,value1,col2,row2,value2...).") + @UI(JGTConstants.EASTINGNORTHING_UI_HINT) + @In + public String pCorrections; + + @Description("The output raster.") + @Out + public GridCoverage2D outRaster; + + @Execute + public void process() throws Exception { + checkNull(inRaster, pCorrections); + + String[] correctionSplit = pCorrections.split(","); //$NON-NLS-1$ + if (correctionSplit.length % 3 != 0) { + throw new ModelsIllegalargumentException( + "the format of the correction values is: col1,row1,value1,col2,row2,value2...", this); + } + + RenderedImage inRI = inRaster.getRenderedImage(); + WritableRaster outWR = CoverageUtilities.renderedImage2WritableRaster(inRI, false); + + for( int i = 0; i < correctionSplit.length; i = i + 3 ) { + int col = Integer.parseInt(correctionSplit[i].trim()); + int row = Integer.parseInt(correctionSplit[i + 1].trim()); + double value = Double.parseDouble(correctionSplit[i + 2].trim()); + + outWR.setSample(col, row, 0, value); + } + + HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); + outRaster = CoverageUtilities.buildCoverage("corrected", outWR, regionMap, inRaster.getCoordinateReferenceSystem()); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rasterreprojector/RasterReprojector.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rasterreprojector/RasterReprojector.java index 8d76f4da8..5698e09ae 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rasterreprojector/RasterReprojector.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rasterreprojector/RasterReprojector.java @@ -1,136 +1,136 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.rasterreprojector; - -import static org.jgrasstools.gears.libs.modules.Variables.BICUBIC; -import static org.jgrasstools.gears.libs.modules.Variables.BILINEAR; -import static org.jgrasstools.gears.libs.modules.Variables.NEAREST_NEIGHTBOUR; - -import javax.media.jai.Interpolation; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.coverage.processing.Operations; -import org.geotools.referencing.CRS; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; -@Description("Module for raster reprojection.") -@Documentation("RasterConverter.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Crs, Reprojection, Raster, RasterConverter, RasterReader") -@Label(JGTConstants.RASTERPROCESSING) -@Status(Status.CERTIFIED) -@Name("rreproject") -@License("General Public License Version 3 (GPLv3)") -public class RasterReprojector extends JGTModel { - - @Description("The raster that has to be reprojected.") - @In - public GridCoverage2D inRaster; - - @Description("The north bound of the region to consider") - @UI(JGTConstants.PROCESS_NORTH_UI_HINT) - @In - public Double pNorth = null; - - @Description("The south bound of the region to consider") - @UI(JGTConstants.PROCESS_SOUTH_UI_HINT) - @In - public Double pSouth = null; - - @Description("The west bound of the region to consider") - @UI(JGTConstants.PROCESS_WEST_UI_HINT) - @In - public Double pWest = null; - - @Description("The east bound of the region to consider") - @UI(JGTConstants.PROCESS_EAST_UI_HINT) - @In - public Double pEast = null; - - @Description("The rows of the region to consider") - @UI(JGTConstants.PROCESS_ROWS_UI_HINT) - @In - public Integer pRows = null; - - @Description("The cols of the region to consider") - @UI(JGTConstants.PROCESS_COLS_UI_HINT) - @In - public Integer pCols = null; - - @Description("The code defining the target coordinate reference system, composed by authority and code number (ex. EPSG:4328).") - @UI(JGTConstants.CRS_UI_HINT) - @In - public String pCode; - - @Description("The interpolation type to use") - @UI("combo:" + NEAREST_NEIGHTBOUR + "," + BILINEAR + "," + BICUBIC) - @In - public String pInterpolation = NEAREST_NEIGHTBOUR; - - @Description("The reprojected output raster.") - @Out - public GridCoverage2D outRaster = null; - - @Execute - public void process() throws Exception { - if (!concatOr(outRaster == null, doReset)) { - return; - } - - CoordinateReferenceSystem targetCrs = CRS.decode(pCode); - - Interpolation interpolation = Interpolation.getInstance(Interpolation.INTERP_NEAREST); - if (pInterpolation.equals(BILINEAR)) { - interpolation = Interpolation.getInstance(Interpolation.INTERP_BILINEAR); - } else if (pInterpolation.equals(BICUBIC)) { - interpolation = Interpolation.getInstance(Interpolation.INTERP_BICUBIC); - } - - GridGeometry2D gridGeometry = null; - if (pNorth != null && pSouth != null && pWest != null && pEast != null && pRows != null && pCols != null) { - gridGeometry = CoverageUtilities.gridGeometryFromRegionValues(pNorth, pSouth, pEast, pWest, pCols, pRows, targetCrs); - pm.message("Using supplied gridgeometry: " + gridGeometry); - } - pm.beginTask("Reprojecting...", IJGTProgressMonitor.UNKNOWN); - if (gridGeometry == null) { - outRaster = (GridCoverage2D) Operations.DEFAULT.resample(inRaster, targetCrs, null, interpolation); - } else { - outRaster = (GridCoverage2D) Operations.DEFAULT.resample(inRaster, targetCrs, gridGeometry, interpolation); - } - pm.done(); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.rasterreprojector; + +import static org.jgrasstools.gears.libs.modules.Variables.BICUBIC; +import static org.jgrasstools.gears.libs.modules.Variables.BILINEAR; +import static org.jgrasstools.gears.libs.modules.Variables.NEAREST_NEIGHTBOUR; + +import javax.media.jai.Interpolation; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.coverage.processing.Operations; +import org.geotools.referencing.CRS; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +@Description("Module for raster reprojection.") +@Documentation("RasterConverter.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Crs, Reprojection, Raster, RasterConverter, RasterReader") +@Label(JGTConstants.RASTERPROCESSING) +@Status(Status.CERTIFIED) +@Name("rreproject") +@License("General Public License Version 3 (GPLv3)") +public class RasterReprojector extends JGTModel { + + @Description("The raster that has to be reprojected.") + @In + public GridCoverage2D inRaster; + + @Description("The north bound of the region to consider") + @UI(JGTConstants.PROCESS_NORTH_UI_HINT) + @In + public Double pNorth = null; + + @Description("The south bound of the region to consider") + @UI(JGTConstants.PROCESS_SOUTH_UI_HINT) + @In + public Double pSouth = null; + + @Description("The west bound of the region to consider") + @UI(JGTConstants.PROCESS_WEST_UI_HINT) + @In + public Double pWest = null; + + @Description("The east bound of the region to consider") + @UI(JGTConstants.PROCESS_EAST_UI_HINT) + @In + public Double pEast = null; + + @Description("The rows of the region to consider") + @UI(JGTConstants.PROCESS_ROWS_UI_HINT) + @In + public Integer pRows = null; + + @Description("The cols of the region to consider") + @UI(JGTConstants.PROCESS_COLS_UI_HINT) + @In + public Integer pCols = null; + + @Description("The code defining the target coordinate reference system, composed by authority and code number (ex. EPSG:4328).") + @UI(JGTConstants.CRS_UI_HINT) + @In + public String pCode; + + @Description("The interpolation type to use") + @UI("combo:" + NEAREST_NEIGHTBOUR + "," + BILINEAR + "," + BICUBIC) + @In + public String pInterpolation = NEAREST_NEIGHTBOUR; + + @Description("The reprojected output raster.") + @Out + public GridCoverage2D outRaster = null; + + @Execute + public void process() throws Exception { + if (!concatOr(outRaster == null, doReset)) { + return; + } + + CoordinateReferenceSystem targetCrs = CRS.decode(pCode); + + Interpolation interpolation = Interpolation.getInstance(Interpolation.INTERP_NEAREST); + if (pInterpolation.equals(BILINEAR)) { + interpolation = Interpolation.getInstance(Interpolation.INTERP_BILINEAR); + } else if (pInterpolation.equals(BICUBIC)) { + interpolation = Interpolation.getInstance(Interpolation.INTERP_BICUBIC); + } + + GridGeometry2D gridGeometry = null; + if (pNorth != null && pSouth != null && pWest != null && pEast != null && pRows != null && pCols != null) { + gridGeometry = CoverageUtilities.gridGeometryFromRegionValues(pNorth, pSouth, pEast, pWest, pCols, pRows, targetCrs); + pm.message("Using supplied gridgeometry: " + gridGeometry); + } + pm.beginTask("Reprojecting...", IJGTProgressMonitor.UNKNOWN); + if (gridGeometry == null) { + outRaster = (GridCoverage2D) Operations.DEFAULT.resample(inRaster, targetCrs, null, interpolation); + } else { + outRaster = (GridCoverage2D) Operations.DEFAULT.resample(inRaster, targetCrs, gridGeometry, interpolation); + } + pm.done(); + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rastervaluerounder/RasterValueRounder.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rastervaluerounder/RasterValueRounder.java index 47e49d43f..973900f7b 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rastervaluerounder/RasterValueRounder.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/rastervaluerounder/RasterValueRounder.java @@ -1,111 +1,111 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.rastervaluerounder; - -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.image.WritableRaster; -import java.text.DecimalFormat; - -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.WritableRandomIter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; - -@Description("Module that rounds the values of a raster map.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Round, Raster") -@Label(JGTConstants.RASTERPROCESSING) -@Status(Status.CERTIFIED) -@Name("rround") -@License("General Public License Version 3 (GPLv3)") -public class RasterValueRounder extends JGTModel { - - @Description("The raster of which to round the values.") - @In - public GridCoverage2D inRaster; - - @Description("The rounding pattern.") - @In - public String pPattern = null; - - @Description("The rounded raster.") - @Out - public GridCoverage2D outRaster; - - private DecimalFormat formatter = null; - - @Execute - public void process() throws Exception { - if (!concatOr(outRaster == null, doReset)) { - return; - } - - checkNull(inRaster, pPattern); - - formatter = new DecimalFormat(pPattern); - - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); - int rows = regionMap.getRows(); - int cols = regionMap.getCols(); - - WritableRaster outWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); - RandomIter inRasterIter = CoverageUtilities.getRandomIterator(inRaster); - WritableRandomIter outIter = CoverageUtilities.getWritableRandomIterator(outWR); - - pm.beginTask("Rounding data...", cols); - for( int c = 0; c < cols; c++ ) { - if (isCanceled(pm)) { - return; - } - for( int r = 0; r < rows; r++ ) { - double value = inRasterIter.getSampleDouble(c, r, 0); - if (!isNovalue(value)) { - String formatted = formatter.format(value); - value = Double.parseDouble(formatted); - outIter.setSample(c, r, 0, value); - } else { - outIter.setSample(c, r, 0, doubleNovalue); - } - } - pm.worked(1); - } - pm.done(); - - outIter.done(); - - outRaster = CoverageUtilities.buildCoverage("rounded", outWR, regionMap, inRaster.getCoordinateReferenceSystem()); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.rastervaluerounder; + +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.image.WritableRaster; +import java.text.DecimalFormat; + +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.WritableRandomIter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; + +@Description("Module that rounds the values of a raster map.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Round, Raster") +@Label(JGTConstants.RASTERPROCESSING) +@Status(Status.CERTIFIED) +@Name("rround") +@License("General Public License Version 3 (GPLv3)") +public class RasterValueRounder extends JGTModel { + + @Description("The raster of which to round the values.") + @In + public GridCoverage2D inRaster; + + @Description("The rounding pattern.") + @In + public String pPattern = null; + + @Description("The rounded raster.") + @Out + public GridCoverage2D outRaster; + + private DecimalFormat formatter = null; + + @Execute + public void process() throws Exception { + if (!concatOr(outRaster == null, doReset)) { + return; + } + + checkNull(inRaster, pPattern); + + formatter = new DecimalFormat(pPattern); + + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inRaster); + int rows = regionMap.getRows(); + int cols = regionMap.getCols(); + + WritableRaster outWR = CoverageUtilities.createDoubleWritableRaster(cols, rows, null, null, null); + RandomIter inRasterIter = CoverageUtilities.getRandomIterator(inRaster); + WritableRandomIter outIter = CoverageUtilities.getWritableRandomIterator(outWR); + + pm.beginTask("Rounding data...", cols); + for( int c = 0; c < cols; c++ ) { + if (isCanceled(pm)) { + return; + } + for( int r = 0; r < rows; r++ ) { + double value = inRasterIter.getSampleDouble(c, r, 0); + if (!isNovalue(value)) { + String formatted = formatter.format(value); + value = Double.parseDouble(formatted); + outIter.setSample(c, r, 0, value); + } else { + outIter.setSample(c, r, 0, doubleNovalue); + } + } + pm.worked(1); + } + pm.done(); + + outIter.done(); + + outRaster = CoverageUtilities.buildCoverage("rounded", outWR, regionMap, inRaster.getCoordinateReferenceSystem()); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/summary/RasterSummary.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/summary/RasterSummary.java index 4b253d8f4..3af692589 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/summary/RasterSummary.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/summary/RasterSummary.java @@ -1,175 +1,175 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.summary; - -import java.awt.image.RenderedImage; -import java.util.List; - -import javax.media.jai.JAI; -import javax.media.jai.ParameterBlockJAI; -import javax.media.jai.RenderedOp; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jaitools.media.jai.zonalstats.Result; -import org.jaitools.media.jai.zonalstats.ZonalStats; -import org.jaitools.media.jai.zonalstats.ZonalStatsDescriptor; -import org.jaitools.numeric.Statistic; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.math.CoupledFieldsMoments; - -@Description("Calculate a summary of the map with base statistics.") -@Documentation("RasterSummary.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Statistics, Raster, Mapcalc") -@Label(JGTConstants.RASTERPROCESSING) -@Name("rsummary") -@Status(Status.CERTIFIED) -@License("General Public License Version 3 (GPLv3)") -public class RasterSummary extends JGTModel { - - @Description("The map to analize.") - @In - public GridCoverage2D inRaster; - - @Description("The number of bins for the histogram (default = 100).") - @In - public int pBins = 100; - - @Description("Flag that defines if the histogram should be done also (default = false).") - @In - public boolean doHistogram = false; - - @Description("The min value.") - @Out - public Double outMin = null; - - @Description("The max value.") - @Out - public Double outMax = null; - - @Description("The mean value.") - @Out - public Double outMean = null; - - @Description("The standard deviation value.") - @Out - public Double outSdev = null; - - @Description("The range value.") - @Out - public Double outRange = null; - - @Description("The sum value.") - @Out - public Double outSum = null; - - @Description("The histogram.") - @Out - public double[][] outCb = null; - - @Execute - public void process() throws Exception { - if (!concatOr(outMin == null, doReset)) { - return; - } - - // TODO use the geotools bridge instead of jaitools: - // http://svn.osgeo.org/geotools/trunk/modules/library/coverage/src/test/java/org/geotools/coverage/processing/operation/ZonalStasTest.java - - RenderedImage inRI = inRaster.getRenderedImage(); - ParameterBlockJAI pb = new ParameterBlockJAI("ZonalStats"); - pb.setSource("dataImage", inRI); - // pb.setSource("zoneImage", null); - - Statistic[] stats = {Statistic.MIN, Statistic.MAX, Statistic.MEAN, Statistic.SDEV, Statistic.RANGE, Statistic.SUM}; - pb.setParameter("stats", stats); - - RenderedOp op = JAI.create("ZonalStats", pb); - - ZonalStats zonalStats = (ZonalStats) op.getProperty(ZonalStatsDescriptor.ZONAL_STATS_PROPERTY); - List results = zonalStats.results(); - for( Result result : results ) { - Statistic statistic = result.getStatistic(); - Double value = result.getValue(); - - switch( statistic ) { - case MIN: - outMin = value; - break; - case MAX: - outMax = value; - break; - case MEAN: - outMean = value; - break; - case SDEV: - outSdev = value; - break; - case RANGE: - outRange = value; - break; - case SUM: - outSum = value; - break; - default: - break; - } - } - - if (!doHistogram) - return; - - double[][] cb = new CoupledFieldsMoments().process(inRI, null, pBins, 1, 2, pm, 1); - - int width = inRI.getWidth(); - int height = inRI.getHeight(); - int pixelsNum = width * height; - outCb = new double[cb.length + 1][3]; - - double sum = 0; - for( int i = 0; i < outCb.length; i++ ) { - if (i < outCb.length - 1) { - outCb[i][0] = cb[i][0]; - outCb[i][1] = cb[i][1]; - sum = sum + cb[i][1]; - outCb[i][2] = cb[i][1] * 100.0 / pixelsNum; - } else { - outCb[i][0] = JGTConstants.doubleNovalue; - double nans = pixelsNum - sum; - outCb[i][1] = nans; - outCb[i][2] = nans * 100.0 / pixelsNum; - } - - } - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.summary; + +import java.awt.image.RenderedImage; +import java.util.List; + +import javax.media.jai.JAI; +import javax.media.jai.ParameterBlockJAI; +import javax.media.jai.RenderedOp; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jaitools.media.jai.zonalstats.Result; +import org.jaitools.media.jai.zonalstats.ZonalStats; +import org.jaitools.media.jai.zonalstats.ZonalStatsDescriptor; +import org.jaitools.numeric.Statistic; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.math.CoupledFieldsMoments; + +@Description("Calculate a summary of the map with base statistics.") +@Documentation("RasterSummary.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Statistics, Raster, Mapcalc") +@Label(JGTConstants.RASTERPROCESSING) +@Name("rsummary") +@Status(Status.CERTIFIED) +@License("General Public License Version 3 (GPLv3)") +public class RasterSummary extends JGTModel { + + @Description("The map to analize.") + @In + public GridCoverage2D inRaster; + + @Description("The number of bins for the histogram (default = 100).") + @In + public int pBins = 100; + + @Description("Flag that defines if the histogram should be done also (default = false).") + @In + public boolean doHistogram = false; + + @Description("The min value.") + @Out + public Double outMin = null; + + @Description("The max value.") + @Out + public Double outMax = null; + + @Description("The mean value.") + @Out + public Double outMean = null; + + @Description("The standard deviation value.") + @Out + public Double outSdev = null; + + @Description("The range value.") + @Out + public Double outRange = null; + + @Description("The sum value.") + @Out + public Double outSum = null; + + @Description("The histogram.") + @Out + public double[][] outCb = null; + + @Execute + public void process() throws Exception { + if (!concatOr(outMin == null, doReset)) { + return; + } + + // TODO use the geotools bridge instead of jaitools: + // http://svn.osgeo.org/geotools/trunk/modules/library/coverage/src/test/java/org/geotools/coverage/processing/operation/ZonalStasTest.java + + RenderedImage inRI = inRaster.getRenderedImage(); + ParameterBlockJAI pb = new ParameterBlockJAI("ZonalStats"); + pb.setSource("dataImage", inRI); + // pb.setSource("zoneImage", null); + + Statistic[] stats = {Statistic.MIN, Statistic.MAX, Statistic.MEAN, Statistic.SDEV, Statistic.RANGE, Statistic.SUM}; + pb.setParameter("stats", stats); + + RenderedOp op = JAI.create("ZonalStats", pb); + + ZonalStats zonalStats = (ZonalStats) op.getProperty(ZonalStatsDescriptor.ZONAL_STATS_PROPERTY); + List results = zonalStats.results(); + for( Result result : results ) { + Statistic statistic = result.getStatistic(); + Double value = result.getValue(); + + switch( statistic ) { + case MIN: + outMin = value; + break; + case MAX: + outMax = value; + break; + case MEAN: + outMean = value; + break; + case SDEV: + outSdev = value; + break; + case RANGE: + outRange = value; + break; + case SUM: + outSum = value; + break; + default: + break; + } + } + + if (!doHistogram) + return; + + double[][] cb = new CoupledFieldsMoments().process(inRI, null, pBins, 1, 2, pm, 1); + + int width = inRI.getWidth(); + int height = inRI.getHeight(); + int pixelsNum = width * height; + outCb = new double[cb.length + 1][3]; + + double sum = 0; + for( int i = 0; i < outCb.length; i++ ) { + if (i < outCb.length - 1) { + outCb[i][0] = cb[i][0]; + outCb[i][1] = cb[i][1]; + sum = sum + cb[i][1]; + outCb[i][2] = cb[i][1] * 100.0 / pixelsNum; + } else { + outCb[i][0] = JGTConstants.doubleNovalue; + double nans = pixelsNum - sum; + outCb[i][1] = nans; + outCb[i][2] = nans * 100.0 / pixelsNum; + } + + } + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/tmsgenerator/GlobalMercator.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/tmsgenerator/GlobalMercator.java index 6d740c609..29c923810 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/tmsgenerator/GlobalMercator.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/tmsgenerator/GlobalMercator.java @@ -1,385 +1,385 @@ -package org.jgrasstools.gears.modules.r.tmsgenerator; -import java.util.Arrays; - -/** - * Copyright (C) 2009, 2010 - * State of California, - * Department of Water Resources. - * This file is part of DSM2 Grid Map - * The DSM2 Grid Map is free software: - * you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * DSM2 Grid Map is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. [http://www.gnu.org/licenses] - * - * @author Nicky Sandhu - * - */ - -/** - * TMS Global Mercator Profile --------------------------- - * - * Functions necessary for generation of tiles in Spherical Mercator projection, - * EPSG:900913 (EPSG:gOOglE, Google Maps Global Mercator), EPSG:3785, - * OSGEO:41001. - * - * Such tiles are compatible with Google Maps, Microsoft Virtual Earth, Yahoo - * Maps, UK Ordnance Survey OpenSpace API, ... and you can overlay them on top - * of base maps of those web mapping applications. - * - * Pixel and tile coordinates are in TMS notation (origin [0,0] in bottom-left). - * - * What coordinate conversions do we need for TMS Global Mercator tiles:: - * - * LatLon <-> Meters <-> Pixels <-> Tile - * - * WGS84 coordinates Spherical Mercator Pixels in pyramid Tiles in pyramid - * lat/lon XY in metres XY pixels Z zoom XYZ from TMS EPSG:4326 EPSG:900913 - * .----. --------- -- TMS / \ <-> | | <-> /----/ <-> Google \ / | | /--------/ - * QuadTree ----- --------- /------------/ KML, public WebMapService Web Clients - * TileMapService - * - * What is the coordinate extent of Earth in EPSG:900913? - * - * [-20037508.342789244, -20037508.342789244, 20037508.342789244, - * 20037508.342789244] Constant 20037508.342789244 comes from the circumference - * of the Earth in meters, which is 40 thousand kilometers, the coordinate - * origin is in the middle of extent. In fact you can calculate the constant as: - * 2 * Math.PI * 6378137 / 2.0 $ echo 180 85 | gdaltransform -s_srs EPSG:4326 - * -t_srs EPSG:900913 Polar areas with abs(latitude) bigger then 85.05112878 are - * clipped off. - * - * What are zoom level constants (pixels/meter) for pyramid with EPSG:900913? - * - * whole region is on top of pyramid (zoom=0) covered by 256x256 pixels tile, - * every lower zoom level resolution is always divided by two initialResolution - * = 20037508.342789244 * 2 / 256 = 156543.03392804062 - * - * What is the difference between TMS and Google Maps/QuadTree tile name - * convention? - * - * The tile raster itself is the same (equal extent, projection, pixel size), - * there is just different identification of the same raster tile. Tiles in TMS - * are counted from [0,0] in the bottom-left corner, id is XYZ. Google placed - * the origin [0,0] to the top-left corner, reference is XYZ. Microsoft is - * referencing tiles by a QuadTree name, defined on the website: - * http://msdn2.microsoft.com/en-us/library/bb259689.aspx - * - * The lat/lon coordinates are using WGS84 datum, yeh? - * - * Yes, all lat/lon we are mentioning should use WGS84 Geodetic Datum. Well, the - * web clients like Google Maps are projecting those coordinates by Spherical - * Mercator, so in fact lat/lon coordinates on sphere are treated as if the were - * on the WGS84 ellipsoid. - * - * From MSDN documentation: To simplify the calculations, we use the spherical - * form of projection, not the ellipsoidal form. Since the projection is used - * only for map display, and not for displaying numeric coordinates, we don't - * need the extra precision of an ellipsoidal projection. The spherical - * projection causes approximately 0.33 percent scale distortion in the Y - * direction, which is not visually noticable. - * - * How do I create a raster in EPSG:900913 and convert coordinates with PROJ.4? - * - * You can use standard GIS tools like gdalwarp, cs2cs or gdaltransform. All of - * the tools supports -t_srs 'epsg:900913'. - * - * For other GIS programs check the exact definition of the projection: More - * info at http://spatialreference.org/ref/user/google-projection/ The same - * projection is degined as EPSG:3785. WKT definition is in the official EPSG - * database. - * - * Proj4 Text: +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 - * +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs - * - * Human readable WKT format of EPGS:900913: - * PROJCS["Google Maps Global Mercator", GEOGCS["WGS 84", DATUM["WGS_1984", - * SPHEROID["WGS 84",6378137,298.2572235630016, AUTHORITY["EPSG","7030"]], - * AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], - * UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]], - * PROJECTION["Mercator_1SP"], PARAMETER["central_meridian",0], - * PARAMETER["scale_factor",1], PARAMETER["false_easting",0], - * PARAMETER["false_northing",0], UNIT["metre",1, AUTHORITY["EPSG","9001"]]] - * - * - */ -public class GlobalMercator { - public static final int TILE_SIZE = 256; - private final int tileSize; - private final double initialResolution; - private final double originShift; - - public GlobalMercator() { - tileSize = TILE_SIZE; - initialResolution = 2 * Math.PI * 6378137 / tileSize; - // 156543.03392804062 for tileSize 256 pixels - originShift = 2 * Math.PI * 6378137 / 2.0; - // 20037508.342789244 - } - - /** - * Converts given lat/lon in WGS84 Datum to XY in Spherical Mercator - * EPSG:900913 - * - * @param lat - * @param lon - * @return - */ - public double[] LatLonToMeters( double lat, double lon ) { - - double mx = lon * originShift / 180.0; - double my = Math.log(Math.tan((90 + lat) * Math.PI / 360.0)) / (Math.PI / 180.0); - my = my * originShift / 180.0; - return new double[]{mx, my}; - } - - /** - * Converts XY point from Spherical Mercator EPSG:900913 to lat/lon in WGS84 - * Datum - * - * @return - */ - public double[] MetersToLatLon( double mx, double my ) { - - double lon = (mx / originShift) * 180.0; - double lat = (my / originShift) * 180.0; - - lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180.0)) - Math.PI / 2.0); - return new double[]{lat, lon}; - } - - /** - * Converts pixel coordinates in given zoom level of pyramid to EPSG:900913 - * - * @return - */ - public double[] PixelsToMeters( double px, double py, int zoom ) { - double res = Resolution(zoom); - double mx = px * res - originShift; - double my = py * res - originShift; - return new double[]{mx, my}; - } - - /** - * Converts EPSG:900913 to pyramid pixel coordinates in given zoom level - * - * @param mx - * @param my - * @param zoom - * @return - */ - public int[] MetersToPixels( double mx, double my, int zoom ) { - double res = Resolution(zoom); - int px = (int) Math.round((mx + originShift) / res); - int py = (int) Math.round((my + originShift) / res); - return new int[]{px, py}; - } - - /** - * Returns a tile covering region in given pixel coordinates - * - * @param px - * @param py - * @return - */ - public int[] PixelsToTile( int px, int py ) { - int tx = (int) Math.ceil(px / ((double) tileSize) - 1); - int ty = (int) Math.ceil(py / ((double) tileSize) - 1); - return new int[]{tx, ty}; - } - - /** - * Move the origin of pixel coordinates to top-left corner - * - * @param px - * @param py - * @param zoom - * @return - */ - public int[] PixelsToRaster( int px, int py, int zoom ) { - int mapSize = tileSize << zoom; - return new int[]{px, mapSize - py}; - } - - /** - * Returns tile for given mercator coordinates - * - * @return - */ - public int[] MetersToTile( double mx, double my, int zoom ) { - int[] p = MetersToPixels(mx, my, zoom); - return PixelsToTile(p[0], p[1]); - } - - public int[] metersToTileUp( double mx, double my, int zoom ) { - int[] p = metersToPixelsUp(mx, my, zoom); - return pixelsToTileUp(p[0], p[1]); - } - - public int[] metersToPixelsUp( double mx, double my, int zoom ) { - double res = Resolution(zoom); - int px = (int) Math.ceil((mx + originShift) / res); - int py = (int) Math.ceil((my + originShift) / res); - return new int[]{px, py}; - } - - public int[] pixelsToTileUp( int px, int py ) { - int tx = (int) Math.ceil(px / ((double) tileSize) - 1); - int ty = (int) Math.ceil(py / ((double) tileSize) - 1); - return new int[]{tx, ty}; - } - - public int[] metersToTileDown( double mx, double my, int zoom ) { - int[] p = metersToPixelsDown(mx, my, zoom); - return pixelsToTileDown(p[0], p[1]); - } - - public int[] metersToPixelsDown( double mx, double my, int zoom ) { - double res = Resolution(zoom); - int px = (int) Math.floor((mx + originShift) / res); - int py = (int) Math.floor((my + originShift) / res); - return new int[]{px, py}; - } - - public int[] pixelsToTileDown( int px, int py ) { - int tx = (int) Math.floor(px / ((double) tileSize) - 1); - int ty = (int) Math.floor(py / ((double) tileSize) - 1); - return new int[]{tx, ty}; - } - - /** - * Returns bounds of the given tile in EPSG:900913 coordinates - * - * @param tx - * @param ty - * @param zoom - * @return - */ - public double[] TileBounds( int tx, int ty, int zoom ) { - double[] min = PixelsToMeters(tx * tileSize, ty * tileSize, zoom); - double minx = min[0], miny = min[1]; - double[] max = PixelsToMeters((tx + 1) * tileSize, (ty + 1) * tileSize, zoom); - double maxx = max[0], maxy = max[1]; - return new double[]{minx, miny, maxx, maxy}; - } - - /** - * Returns bounds of the given tile in latitude/longitude using WGS84 datum - * - */ - public double[] TileLatLonBounds( int tx, int ty, int zoom ) { - double[] bounds = TileBounds(tx, ty, zoom); - double[] mins = MetersToLatLon(bounds[0], bounds[1]); - double[] maxs = MetersToLatLon(bounds[2], bounds[3]); - return new double[]{mins[0], mins[1], maxs[0], maxs[1]}; - } - - /** - * Resolution (meters/pixel) for given zoom level (measured at Equator) - * - * @return - */ - public double Resolution( int zoom ) { - // return (2 * Math.PI * 6378137) / (this.tileSize * 2**zoom) - return initialResolution / Math.pow(2, zoom); - } - - /** - * Maximal scaledown zoom of the pyramid closest to the pixelSize - * - * @param pixelSize - * @return - */ - public int ZoomForPixelSize( int pixelSize ) { - for( int i = 0; i < 30; i++ ) { - if (pixelSize > Resolution(i)) { - if (i != 0) { - return i - 1; - } else { - return 0; // We don't want to scale up - } - } - } - return 0; - } - - /** - * Converts TMS tile coordinates to Google Tile coordinates - * - * @param tx - * @param ty - * @param zoom - * @return - */ - public int[] GoogleTile( int tx, int ty, int zoom ) { - // coordinate origin is moved from bottom-left to top-left corner of the - // extent - return new int[]{tx, (int) ((Math.pow(2, zoom) - 1) - ty)}; - } - - public int[] TMSTileFromGoogleTile( int tx, int ty, int zoom ) { - // coordinate origin is moved from bottom-left to top-left corner of the - // extent - return new int[]{tx, (int) ((Math.pow(2, zoom) - 1) - ty)}; - } - - /** - * Converts a lat long coordinates to Google Tile Coordinates - * - * @param lat - * @param lon - * @param zoom - * @return - */ - public int[] GoogleTile( double lat, double lon, int zoom ) { - double[] meters = LatLonToMeters(lat, lon); - int[] tile = MetersToTile(meters[0], meters[1], zoom); - return this.GoogleTile(tile[0], tile[1], zoom); - } - - /** - * Converts TMS tile coordinates to Microsoft QuadTree - * - * @return - */ - public String QuadTree( int tx, int ty, int zoom ) { - String quadKey = ""; - ty = (int) ((Math.pow(2, zoom) - 1) - ty); - for( int i = zoom; i < 0; i-- ) { - int digit = 0; - int mask = 1 << (i - 1); - if ((tx & mask) != 0) { - digit += 1; - } - if ((ty & mask) != 0) { - digit += 2; - } - quadKey += (digit + ""); - } - return quadKey; - } - - public static void main( String[] args ) { - int[][] TMS = {// - {0, 1, 1},// - {16, 20, 5},// - {8930, 10684, 14},// - }; - int[][] GOOGLE = {// - {0, 0, 1}, // - {16, 11, 5}, // - {8930, 5699, 14},// - }; - - GlobalMercator gm = new GlobalMercator(); - for( int i = 0; i < GOOGLE.length; i++ ) { - int[] googleTile = gm.TMSTileFromGoogleTile(GOOGLE[i][0], GOOGLE[i][1], GOOGLE[i][2]); - System.out.println(Arrays.toString(googleTile)); - } - } - +package org.jgrasstools.gears.modules.r.tmsgenerator; +import java.util.Arrays; + +/** + * Copyright (C) 2009, 2010 + * State of California, + * Department of Water Resources. + * This file is part of DSM2 Grid Map + * The DSM2 Grid Map is free software: + * you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * DSM2 Grid Map is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. [http://www.gnu.org/licenses] + * + * @author Nicky Sandhu + * + */ + +/** + * TMS Global Mercator Profile --------------------------- + * + * Functions necessary for generation of tiles in Spherical Mercator projection, + * EPSG:900913 (EPSG:gOOglE, Google Maps Global Mercator), EPSG:3785, + * OSGEO:41001. + * + * Such tiles are compatible with Google Maps, Microsoft Virtual Earth, Yahoo + * Maps, UK Ordnance Survey OpenSpace API, ... and you can overlay them on top + * of base maps of those web mapping applications. + * + * Pixel and tile coordinates are in TMS notation (origin [0,0] in bottom-left). + * + * What coordinate conversions do we need for TMS Global Mercator tiles:: + * + * LatLon <-> Meters <-> Pixels <-> Tile + * + * WGS84 coordinates Spherical Mercator Pixels in pyramid Tiles in pyramid + * lat/lon XY in metres XY pixels Z zoom XYZ from TMS EPSG:4326 EPSG:900913 + * .----. --------- -- TMS / \ <-> | | <-> /----/ <-> Google \ / | | /--------/ + * QuadTree ----- --------- /------------/ KML, public WebMapService Web Clients + * TileMapService + * + * What is the coordinate extent of Earth in EPSG:900913? + * + * [-20037508.342789244, -20037508.342789244, 20037508.342789244, + * 20037508.342789244] Constant 20037508.342789244 comes from the circumference + * of the Earth in meters, which is 40 thousand kilometers, the coordinate + * origin is in the middle of extent. In fact you can calculate the constant as: + * 2 * Math.PI * 6378137 / 2.0 $ echo 180 85 | gdaltransform -s_srs EPSG:4326 + * -t_srs EPSG:900913 Polar areas with abs(latitude) bigger then 85.05112878 are + * clipped off. + * + * What are zoom level constants (pixels/meter) for pyramid with EPSG:900913? + * + * whole region is on top of pyramid (zoom=0) covered by 256x256 pixels tile, + * every lower zoom level resolution is always divided by two initialResolution + * = 20037508.342789244 * 2 / 256 = 156543.03392804062 + * + * What is the difference between TMS and Google Maps/QuadTree tile name + * convention? + * + * The tile raster itself is the same (equal extent, projection, pixel size), + * there is just different identification of the same raster tile. Tiles in TMS + * are counted from [0,0] in the bottom-left corner, id is XYZ. Google placed + * the origin [0,0] to the top-left corner, reference is XYZ. Microsoft is + * referencing tiles by a QuadTree name, defined on the website: + * http://msdn2.microsoft.com/en-us/library/bb259689.aspx + * + * The lat/lon coordinates are using WGS84 datum, yeh? + * + * Yes, all lat/lon we are mentioning should use WGS84 Geodetic Datum. Well, the + * web clients like Google Maps are projecting those coordinates by Spherical + * Mercator, so in fact lat/lon coordinates on sphere are treated as if the were + * on the WGS84 ellipsoid. + * + * From MSDN documentation: To simplify the calculations, we use the spherical + * form of projection, not the ellipsoidal form. Since the projection is used + * only for map display, and not for displaying numeric coordinates, we don't + * need the extra precision of an ellipsoidal projection. The spherical + * projection causes approximately 0.33 percent scale distortion in the Y + * direction, which is not visually noticable. + * + * How do I create a raster in EPSG:900913 and convert coordinates with PROJ.4? + * + * You can use standard GIS tools like gdalwarp, cs2cs or gdaltransform. All of + * the tools supports -t_srs 'epsg:900913'. + * + * For other GIS programs check the exact definition of the projection: More + * info at http://spatialreference.org/ref/user/google-projection/ The same + * projection is degined as EPSG:3785. WKT definition is in the official EPSG + * database. + * + * Proj4 Text: +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 + * +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs + * + * Human readable WKT format of EPGS:900913: + * PROJCS["Google Maps Global Mercator", GEOGCS["WGS 84", DATUM["WGS_1984", + * SPHEROID["WGS 84",6378137,298.2572235630016, AUTHORITY["EPSG","7030"]], + * AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], + * UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]], + * PROJECTION["Mercator_1SP"], PARAMETER["central_meridian",0], + * PARAMETER["scale_factor",1], PARAMETER["false_easting",0], + * PARAMETER["false_northing",0], UNIT["metre",1, AUTHORITY["EPSG","9001"]]] + * + * + */ +public class GlobalMercator { + public static final int TILE_SIZE = 256; + private final int tileSize; + private final double initialResolution; + private final double originShift; + + public GlobalMercator() { + tileSize = TILE_SIZE; + initialResolution = 2 * Math.PI * 6378137 / tileSize; + // 156543.03392804062 for tileSize 256 pixels + originShift = 2 * Math.PI * 6378137 / 2.0; + // 20037508.342789244 + } + + /** + * Converts given lat/lon in WGS84 Datum to XY in Spherical Mercator + * EPSG:900913 + * + * @param lat + * @param lon + * @return + */ + public double[] LatLonToMeters( double lat, double lon ) { + + double mx = lon * originShift / 180.0; + double my = Math.log(Math.tan((90 + lat) * Math.PI / 360.0)) / (Math.PI / 180.0); + my = my * originShift / 180.0; + return new double[]{mx, my}; + } + + /** + * Converts XY point from Spherical Mercator EPSG:900913 to lat/lon in WGS84 + * Datum + * + * @return + */ + public double[] MetersToLatLon( double mx, double my ) { + + double lon = (mx / originShift) * 180.0; + double lat = (my / originShift) * 180.0; + + lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180.0)) - Math.PI / 2.0); + return new double[]{lat, lon}; + } + + /** + * Converts pixel coordinates in given zoom level of pyramid to EPSG:900913 + * + * @return + */ + public double[] PixelsToMeters( double px, double py, int zoom ) { + double res = Resolution(zoom); + double mx = px * res - originShift; + double my = py * res - originShift; + return new double[]{mx, my}; + } + + /** + * Converts EPSG:900913 to pyramid pixel coordinates in given zoom level + * + * @param mx + * @param my + * @param zoom + * @return + */ + public int[] MetersToPixels( double mx, double my, int zoom ) { + double res = Resolution(zoom); + int px = (int) Math.round((mx + originShift) / res); + int py = (int) Math.round((my + originShift) / res); + return new int[]{px, py}; + } + + /** + * Returns a tile covering region in given pixel coordinates + * + * @param px + * @param py + * @return + */ + public int[] PixelsToTile( int px, int py ) { + int tx = (int) Math.ceil(px / ((double) tileSize) - 1); + int ty = (int) Math.ceil(py / ((double) tileSize) - 1); + return new int[]{tx, ty}; + } + + /** + * Move the origin of pixel coordinates to top-left corner + * + * @param px + * @param py + * @param zoom + * @return + */ + public int[] PixelsToRaster( int px, int py, int zoom ) { + int mapSize = tileSize << zoom; + return new int[]{px, mapSize - py}; + } + + /** + * Returns tile for given mercator coordinates + * + * @return + */ + public int[] MetersToTile( double mx, double my, int zoom ) { + int[] p = MetersToPixels(mx, my, zoom); + return PixelsToTile(p[0], p[1]); + } + + public int[] metersToTileUp( double mx, double my, int zoom ) { + int[] p = metersToPixelsUp(mx, my, zoom); + return pixelsToTileUp(p[0], p[1]); + } + + public int[] metersToPixelsUp( double mx, double my, int zoom ) { + double res = Resolution(zoom); + int px = (int) Math.ceil((mx + originShift) / res); + int py = (int) Math.ceil((my + originShift) / res); + return new int[]{px, py}; + } + + public int[] pixelsToTileUp( int px, int py ) { + int tx = (int) Math.ceil(px / ((double) tileSize) - 1); + int ty = (int) Math.ceil(py / ((double) tileSize) - 1); + return new int[]{tx, ty}; + } + + public int[] metersToTileDown( double mx, double my, int zoom ) { + int[] p = metersToPixelsDown(mx, my, zoom); + return pixelsToTileDown(p[0], p[1]); + } + + public int[] metersToPixelsDown( double mx, double my, int zoom ) { + double res = Resolution(zoom); + int px = (int) Math.floor((mx + originShift) / res); + int py = (int) Math.floor((my + originShift) / res); + return new int[]{px, py}; + } + + public int[] pixelsToTileDown( int px, int py ) { + int tx = (int) Math.floor(px / ((double) tileSize) - 1); + int ty = (int) Math.floor(py / ((double) tileSize) - 1); + return new int[]{tx, ty}; + } + + /** + * Returns bounds of the given tile in EPSG:900913 coordinates + * + * @param tx + * @param ty + * @param zoom + * @return + */ + public double[] TileBounds( int tx, int ty, int zoom ) { + double[] min = PixelsToMeters(tx * tileSize, ty * tileSize, zoom); + double minx = min[0], miny = min[1]; + double[] max = PixelsToMeters((tx + 1) * tileSize, (ty + 1) * tileSize, zoom); + double maxx = max[0], maxy = max[1]; + return new double[]{minx, miny, maxx, maxy}; + } + + /** + * Returns bounds of the given tile in latitude/longitude using WGS84 datum + * + */ + public double[] TileLatLonBounds( int tx, int ty, int zoom ) { + double[] bounds = TileBounds(tx, ty, zoom); + double[] mins = MetersToLatLon(bounds[0], bounds[1]); + double[] maxs = MetersToLatLon(bounds[2], bounds[3]); + return new double[]{mins[0], mins[1], maxs[0], maxs[1]}; + } + + /** + * Resolution (meters/pixel) for given zoom level (measured at Equator) + * + * @return + */ + public double Resolution( int zoom ) { + // return (2 * Math.PI * 6378137) / (this.tileSize * 2**zoom) + return initialResolution / Math.pow(2, zoom); + } + + /** + * Maximal scaledown zoom of the pyramid closest to the pixelSize + * + * @param pixelSize + * @return + */ + public int ZoomForPixelSize( int pixelSize ) { + for( int i = 0; i < 30; i++ ) { + if (pixelSize > Resolution(i)) { + if (i != 0) { + return i - 1; + } else { + return 0; // We don't want to scale up + } + } + } + return 0; + } + + /** + * Converts TMS tile coordinates to Google Tile coordinates + * + * @param tx + * @param ty + * @param zoom + * @return + */ + public int[] GoogleTile( int tx, int ty, int zoom ) { + // coordinate origin is moved from bottom-left to top-left corner of the + // extent + return new int[]{tx, (int) ((Math.pow(2, zoom) - 1) - ty)}; + } + + public int[] TMSTileFromGoogleTile( int tx, int ty, int zoom ) { + // coordinate origin is moved from bottom-left to top-left corner of the + // extent + return new int[]{tx, (int) ((Math.pow(2, zoom) - 1) - ty)}; + } + + /** + * Converts a lat long coordinates to Google Tile Coordinates + * + * @param lat + * @param lon + * @param zoom + * @return + */ + public int[] GoogleTile( double lat, double lon, int zoom ) { + double[] meters = LatLonToMeters(lat, lon); + int[] tile = MetersToTile(meters[0], meters[1], zoom); + return this.GoogleTile(tile[0], tile[1], zoom); + } + + /** + * Converts TMS tile coordinates to Microsoft QuadTree + * + * @return + */ + public String QuadTree( int tx, int ty, int zoom ) { + String quadKey = ""; + ty = (int) ((Math.pow(2, zoom) - 1) - ty); + for( int i = zoom; i < 0; i-- ) { + int digit = 0; + int mask = 1 << (i - 1); + if ((tx & mask) != 0) { + digit += 1; + } + if ((ty & mask) != 0) { + digit += 2; + } + quadKey += (digit + ""); + } + return quadKey; + } + + public static void main( String[] args ) { + int[][] TMS = {// + {0, 1, 1},// + {16, 20, 5},// + {8930, 10684, 14},// + }; + int[][] GOOGLE = {// + {0, 0, 1}, // + {16, 11, 5}, // + {8930, 5699, 14},// + }; + + GlobalMercator gm = new GlobalMercator(); + for( int i = 0; i < GOOGLE.length; i++ ) { + int[] googleTile = gm.TMSTileFromGoogleTile(GOOGLE[i][0], GOOGLE[i][1], GOOGLE[i][2]); + System.out.println(Arrays.toString(googleTile)); + } + } + } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/transformer/RasterResolutionResampler.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/transformer/RasterResolutionResampler.java index f5fa5501a..246a25326 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/transformer/RasterResolutionResampler.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/transformer/RasterResolutionResampler.java @@ -1,101 +1,101 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.r.transformer; - -import static org.jgrasstools.gears.libs.modules.Variables.BICUBIC; -import static org.jgrasstools.gears.libs.modules.Variables.BILINEAR; -import static org.jgrasstools.gears.libs.modules.Variables.NEAREST_NEIGHTBOUR; - -import javax.media.jai.Interpolation; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.coverage.processing.Operations; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.modules.JGTProcessingRegion; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; - -@Description("Module to do coverage resolution resampling.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Coverage, Raster, Convert") -@Label(JGTConstants.RASTERPROCESSING) -@Name("rresolresampler") -@Status(Status.EXPERIMENTAL) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class RasterResolutionResampler extends JGTModel { - @Description("The input coverage.") - @In - public GridCoverage2D inGeodata; - - @Description("The interpolation type to use") - @UI("combo:" + NEAREST_NEIGHTBOUR + "," + BILINEAR + "," + BICUBIC) - @In - public String pInterpolation = NEAREST_NEIGHTBOUR; - - @Description("The new resolution in X") - @In - public Double pXres; - - @Description("The new resolution in Y (if null taken same as pXres)") - @In - public Double pYres; - - @Description("The output coverage.") - @Out - public GridCoverage2D outGeodata; - - @SuppressWarnings("nls") - @Execute - public void process() throws Exception { - checkNull(inGeodata, pXres); - if (pYres == null) { - pYres = pXres; - } - JGTProcessingRegion region = new JGTProcessingRegion(inGeodata); - region.setWEResolution(pXres); - region.setNSResolution(pYres); - - GridGeometry2D newGridGeometry = region.getGridGeometry(inGeodata.getCoordinateReferenceSystem()); - - Interpolation interpolation = Interpolation.getInstance(Interpolation.INTERP_NEAREST); - if (pInterpolation.equals(BILINEAR)) { - interpolation = Interpolation.getInstance(Interpolation.INTERP_BILINEAR); - } else if (pInterpolation.equals(BICUBIC)) { - interpolation = Interpolation.getInstance(Interpolation.INTERP_BICUBIC); - } - - pm.beginTask("Resampling...", IJGTProgressMonitor.UNKNOWN); - outGeodata = (GridCoverage2D) Operations.DEFAULT.resample(inGeodata, inGeodata.getCoordinateReferenceSystem(), - newGridGeometry, interpolation); - pm.done(); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.r.transformer; + +import static org.jgrasstools.gears.libs.modules.Variables.BICUBIC; +import static org.jgrasstools.gears.libs.modules.Variables.BILINEAR; +import static org.jgrasstools.gears.libs.modules.Variables.NEAREST_NEIGHTBOUR; + +import javax.media.jai.Interpolation; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.coverage.processing.Operations; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.modules.JGTProcessingRegion; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; + +@Description("Module to do coverage resolution resampling.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Coverage, Raster, Convert") +@Label(JGTConstants.RASTERPROCESSING) +@Name("rresolresampler") +@Status(Status.EXPERIMENTAL) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class RasterResolutionResampler extends JGTModel { + @Description("The input coverage.") + @In + public GridCoverage2D inGeodata; + + @Description("The interpolation type to use") + @UI("combo:" + NEAREST_NEIGHTBOUR + "," + BILINEAR + "," + BICUBIC) + @In + public String pInterpolation = NEAREST_NEIGHTBOUR; + + @Description("The new resolution in X") + @In + public Double pXres; + + @Description("The new resolution in Y (if null taken same as pXres)") + @In + public Double pYres; + + @Description("The output coverage.") + @Out + public GridCoverage2D outGeodata; + + @SuppressWarnings("nls") + @Execute + public void process() throws Exception { + checkNull(inGeodata, pXres); + if (pYres == null) { + pYres = pXres; + } + JGTProcessingRegion region = new JGTProcessingRegion(inGeodata); + region.setWEResolution(pXres); + region.setNSResolution(pYres); + + GridGeometry2D newGridGeometry = region.getGridGeometry(inGeodata.getCoordinateReferenceSystem()); + + Interpolation interpolation = Interpolation.getInstance(Interpolation.INTERP_NEAREST); + if (pInterpolation.equals(BILINEAR)) { + interpolation = Interpolation.getInstance(Interpolation.INTERP_BILINEAR); + } else if (pInterpolation.equals(BICUBIC)) { + interpolation = Interpolation.getInstance(Interpolation.INTERP_BICUBIC); + } + + pm.beginTask("Resampling...", IJGTProgressMonitor.UNKNOWN); + outGeodata = (GridCoverage2D) Operations.DEFAULT.resample(inGeodata, inGeodata.getCoordinateReferenceSystem(), + newGridGeometry, interpolation); + pm.done(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/transformer/RasterTransformer.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/transformer/RasterTransformer.java index a99a6aae8..ab235a783 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/transformer/RasterTransformer.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/transformer/RasterTransformer.java @@ -1,321 +1,321 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.modules.r.transformer; - -import static org.jgrasstools.gears.libs.modules.Variables.BICUBIC; -import static org.jgrasstools.gears.libs.modules.Variables.BILINEAR; -import static org.jgrasstools.gears.libs.modules.Variables.NEAREST_NEIGHTBOUR; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.EAST; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.NORTH; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.SOUTH; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.WEST; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.XRES; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.YRES; - -import java.awt.geom.AffineTransform; -import java.awt.image.RenderedImage; - -import javax.media.jai.Interpolation; -import javax.media.jai.RenderedOp; -import javax.media.jai.operator.RotateDescriptor; -import javax.media.jai.operator.ScaleDescriptor; -import javax.media.jai.operator.TranslateDescriptor; -import javax.media.jai.operator.TransposeDescriptor; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; -import oms3.annotations.Unit; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.geometry.Envelope2D; -import org.geotools.geometry.jts.JTS; -import org.geotools.referencing.operation.transform.AffineTransform2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; -import org.opengis.referencing.operation.MathTransform; - -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; - -@Description("Module for raster tranforms.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("Transform, Raster") -@Label(JGTConstants.RASTERPROCESSING) -@Status(Status.DRAFT) -@Name("rtrans") -@License("General Public License Version 3 (GPLv3)") -public class RasterTransformer extends JGTModel { - - @Description("The raster that has to be transformed.") - @In - public GridCoverage2D inRaster; - - @Description("The interpolation type to use") - @UI("combo:" + NEAREST_NEIGHTBOUR + "," + BILINEAR + "," + BICUBIC) - @In - public String pInterpolation = NEAREST_NEIGHTBOUR; - - @Description("The translation along the X axis.") - @Unit("m") - @In - public Double pTransX; - - @Description("The translation along the Y axis.") - @Unit("m") - @In - public Double pTransY; - - @Description("The scale factor along X axis.") - @In - public Double pScaleX; - - @Description("The scale factor along the Y axis.") - @In - public Double pScaleY; - - @Description("Flip horizontally.") - @In - public boolean doFlipHorizontal; - - @Description("Flip vertically.") - @In - public boolean doFlipVertical; - - @Description("The northern coordinate of the rotation point.") - @UI(JGTConstants.NORTHING_UI_HINT) - @In - public Double pNorth; - - @Description("The eastern coordinate of the rotation point.") - @UI(JGTConstants.EASTING_UI_HINT) - @In - public Double pEast; - - @Description("The rotation angle in degree (rotation is performed before translation).") - @Unit("degrees") - @In - public Double pAngle; - - @Description("The transformed raster.") - @Out - public GridCoverage2D outRaster = null; - - @Description("The new raster geometry.") - @Out - public SimpleFeatureCollection outBounds = null; - - @Execute - public void process() throws Exception { - if (!concatOr(outRaster == null, doReset)) { - return; - } - - Interpolation interpolation = Interpolation.getInstance(Interpolation.INTERP_NEAREST); - if (pInterpolation.equals(BILINEAR)) { - interpolation = Interpolation.getInstance(Interpolation.INTERP_BILINEAR); - } else if (pInterpolation.equals(BICUBIC)) { - interpolation = Interpolation.getInstance(Interpolation.INTERP_BICUBIC); - } - - RenderedImage inRasterRI = inRaster.getRenderedImage(); - RegionMap sourceRegion = CoverageUtilities.gridGeometry2RegionParamsMap(inRaster.getGridGeometry()); - Envelope2D envelope2d = inRaster.getEnvelope2D(); - Envelope targetEnvelope = new Envelope(envelope2d.getMinX(), envelope2d.getMaxX(), envelope2d.getMinY(), - envelope2d.getMaxY()); - Geometry targetGeometry = null; - GeometryFactory gf = GeometryUtilities.gf(); - - RenderedOp finalImg = null; - if (pAngle != null) { - pm.beginTask("Rotate raster by angle: " + pAngle, IJGTProgressMonitor.UNKNOWN); - - float centerX = 0f; - float centerY = 0f; - if (pEast == null) { - centerX = (float) envelope2d.getCenterX(); - } else { - centerX = pEast.floatValue(); - } - if (pNorth == null) { - centerY = (float) envelope2d.getCenterY(); - } else { - centerY = pNorth.floatValue(); - } - finalImg = RotateDescriptor.create(inRasterRI, centerX, centerY, (float) Math.toRadians(pAngle), interpolation, null, - null); - - // also keep track of the transforming envelope - AffineTransform rotationAT = new AffineTransform(); - rotationAT.translate(centerX, centerY); - rotationAT.rotate(Math.toRadians(-pAngle)); - rotationAT.translate(-centerX, -centerY); - MathTransform rotationTransform = new AffineTransform2D(rotationAT); - - Envelope jtsEnv = new Envelope(targetEnvelope.getMinX(), targetEnvelope.getMaxX(), targetEnvelope.getMinY(), - targetEnvelope.getMaxY()); - targetEnvelope = JTS.transform(jtsEnv, rotationTransform); - - Geometry rotGeometry = gf.toGeometry(jtsEnv); - targetGeometry = JTS.transform(rotGeometry, rotationTransform); - - pm.done(); - } - - if (doFlipHorizontal) { - pm.beginTask("Flip horizontally...", IJGTProgressMonitor.UNKNOWN); - - if (finalImg != null) { - finalImg = TransposeDescriptor.create(finalImg, TransposeDescriptor.FLIP_HORIZONTAL, null); - } else { - finalImg = TransposeDescriptor.create(inRasterRI, TransposeDescriptor.FLIP_HORIZONTAL, null); - } - - Envelope jtsEnv = new Envelope(targetEnvelope.getMinX(), targetEnvelope.getMaxX(), targetEnvelope.getMinY(), - targetEnvelope.getMaxY()); - targetGeometry = gf.toGeometry(jtsEnv); - pm.done(); - } - if (doFlipVertical) { - pm.beginTask("Flip vertically...", IJGTProgressMonitor.UNKNOWN); - - if (finalImg != null) { - finalImg = TransposeDescriptor.create(finalImg, TransposeDescriptor.FLIP_VERTICAL, null); - } else { - finalImg = TransposeDescriptor.create(inRasterRI, TransposeDescriptor.FLIP_VERTICAL, null); - } - - Envelope jtsEnv = new Envelope(targetEnvelope.getMinX(), targetEnvelope.getMaxX(), targetEnvelope.getMinY(), - targetEnvelope.getMaxY()); - targetGeometry = gf.toGeometry(jtsEnv); - pm.done(); - } - - if (pScaleX != null || pScaleY != null) { - float scaleX = 1f; - float scaleY = 1f; - if (pScaleX == null) { - scaleX = 1f; - } else { - scaleX = pScaleX.floatValue(); - } - if (pScaleY == null) { - scaleY = 1f; - } else { - scaleY = pScaleY.floatValue(); - } - pm.beginTask("Scale raster by: " + scaleX + " and " + scaleY, IJGTProgressMonitor.UNKNOWN); - - // float centerX = (float) envelope2d.getCenterX(); - // float centerY = (float) envelope2d.getCenterY(); - if (finalImg != null) { - finalImg = ScaleDescriptor.create(finalImg, new Float(scaleX), new Float(scaleY), new Float(0.0f), - new Float(0.0f), interpolation, null); - } else { - finalImg = ScaleDescriptor.create(inRasterRI, new Float(scaleX), new Float(scaleY), new Float(0.0f), new Float( - 0.0f), interpolation, null); - } - // also keep track of the transforming envelope - AffineTransform scaleAT = new AffineTransform(); - // scaleAT.translate(centerX, centerY); - scaleAT.scale(scaleX, scaleY); - // scaleAT.translate(-centerX, -centerY); - MathTransform scaleTransform = new AffineTransform2D(scaleAT); - - Envelope jtsEnv = new Envelope(targetEnvelope.getMinX(), targetEnvelope.getMaxX(), targetEnvelope.getMinY(), - targetEnvelope.getMaxY()); - targetEnvelope = JTS.transform(jtsEnv, scaleTransform); - - Geometry scaledGeometry = gf.toGeometry(jtsEnv); - targetGeometry = JTS.transform(scaledGeometry, scaleTransform); - pm.done(); - } - - if (pTransX != null || pTransY != null) { - float transX = 1f; - float transY = 1f; - if (pTransX == null) { - transX = 1f; - } else { - transX = pTransX.floatValue(); - } - if (pTransY == null) { - transY = 1f; - } else { - transY = pTransY.floatValue(); - } - pm.beginTask("Translate raster by: " + transX + " and " + transY, IJGTProgressMonitor.UNKNOWN); - - if (finalImg != null) { - finalImg = TranslateDescriptor.create(finalImg, transX, transY, interpolation, null); - } else { - finalImg = TranslateDescriptor.create(inRasterRI, transX, transY, interpolation, null); - } - - // also keep track of the transforming envelope - AffineTransform translationAT = new AffineTransform(); - translationAT.translate(transX, transY); - MathTransform translateTransform = new AffineTransform2D(translationAT); - - if (targetGeometry == null) { - targetGeometry = gf.toGeometry(targetEnvelope); - } - - targetEnvelope = JTS.transform(targetEnvelope, translateTransform); - targetGeometry = JTS.transform(targetGeometry, translateTransform); - - pm.done(); - } - - if (finalImg != null) { - RegionMap targetRegion = new RegionMap(); - targetRegion.put(NORTH, targetEnvelope.getMaxY()); - targetRegion.put(SOUTH, targetEnvelope.getMinY()); - targetRegion.put(WEST, targetEnvelope.getMinX()); - targetRegion.put(EAST, targetEnvelope.getMaxX()); - targetRegion.put(XRES, sourceRegion.getXres()); - targetRegion.put(YRES, sourceRegion.getYres()); - // targetRegion.put(ROWS, (double) height); - // targetRegion.put(COLS, (double) width); - - CoordinateReferenceSystem crs = inRaster.getCoordinateReferenceSystem(); - outRaster = CoverageUtilities.buildCoverage("out", finalImg, targetRegion, crs); - - outBounds = FeatureUtilities.featureCollectionFromGeometry(crs, targetGeometry); - } - - pm.done(); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.modules.r.transformer; + +import static org.jgrasstools.gears.libs.modules.Variables.BICUBIC; +import static org.jgrasstools.gears.libs.modules.Variables.BILINEAR; +import static org.jgrasstools.gears.libs.modules.Variables.NEAREST_NEIGHTBOUR; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.EAST; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.NORTH; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.SOUTH; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.WEST; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.XRES; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.YRES; + +import java.awt.geom.AffineTransform; +import java.awt.image.RenderedImage; + +import javax.media.jai.Interpolation; +import javax.media.jai.RenderedOp; +import javax.media.jai.operator.RotateDescriptor; +import javax.media.jai.operator.ScaleDescriptor; +import javax.media.jai.operator.TranslateDescriptor; +import javax.media.jai.operator.TransposeDescriptor; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; +import oms3.annotations.Unit; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.geometry.Envelope2D; +import org.geotools.geometry.jts.JTS; +import org.geotools.referencing.operation.transform.AffineTransform2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.opengis.referencing.operation.MathTransform; + +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; + +@Description("Module for raster tranforms.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("Transform, Raster") +@Label(JGTConstants.RASTERPROCESSING) +@Status(Status.DRAFT) +@Name("rtrans") +@License("General Public License Version 3 (GPLv3)") +public class RasterTransformer extends JGTModel { + + @Description("The raster that has to be transformed.") + @In + public GridCoverage2D inRaster; + + @Description("The interpolation type to use") + @UI("combo:" + NEAREST_NEIGHTBOUR + "," + BILINEAR + "," + BICUBIC) + @In + public String pInterpolation = NEAREST_NEIGHTBOUR; + + @Description("The translation along the X axis.") + @Unit("m") + @In + public Double pTransX; + + @Description("The translation along the Y axis.") + @Unit("m") + @In + public Double pTransY; + + @Description("The scale factor along X axis.") + @In + public Double pScaleX; + + @Description("The scale factor along the Y axis.") + @In + public Double pScaleY; + + @Description("Flip horizontally.") + @In + public boolean doFlipHorizontal; + + @Description("Flip vertically.") + @In + public boolean doFlipVertical; + + @Description("The northern coordinate of the rotation point.") + @UI(JGTConstants.NORTHING_UI_HINT) + @In + public Double pNorth; + + @Description("The eastern coordinate of the rotation point.") + @UI(JGTConstants.EASTING_UI_HINT) + @In + public Double pEast; + + @Description("The rotation angle in degree (rotation is performed before translation).") + @Unit("degrees") + @In + public Double pAngle; + + @Description("The transformed raster.") + @Out + public GridCoverage2D outRaster = null; + + @Description("The new raster geometry.") + @Out + public SimpleFeatureCollection outBounds = null; + + @Execute + public void process() throws Exception { + if (!concatOr(outRaster == null, doReset)) { + return; + } + + Interpolation interpolation = Interpolation.getInstance(Interpolation.INTERP_NEAREST); + if (pInterpolation.equals(BILINEAR)) { + interpolation = Interpolation.getInstance(Interpolation.INTERP_BILINEAR); + } else if (pInterpolation.equals(BICUBIC)) { + interpolation = Interpolation.getInstance(Interpolation.INTERP_BICUBIC); + } + + RenderedImage inRasterRI = inRaster.getRenderedImage(); + RegionMap sourceRegion = CoverageUtilities.gridGeometry2RegionParamsMap(inRaster.getGridGeometry()); + Envelope2D envelope2d = inRaster.getEnvelope2D(); + Envelope targetEnvelope = new Envelope(envelope2d.getMinX(), envelope2d.getMaxX(), envelope2d.getMinY(), + envelope2d.getMaxY()); + Geometry targetGeometry = null; + GeometryFactory gf = GeometryUtilities.gf(); + + RenderedOp finalImg = null; + if (pAngle != null) { + pm.beginTask("Rotate raster by angle: " + pAngle, IJGTProgressMonitor.UNKNOWN); + + float centerX = 0f; + float centerY = 0f; + if (pEast == null) { + centerX = (float) envelope2d.getCenterX(); + } else { + centerX = pEast.floatValue(); + } + if (pNorth == null) { + centerY = (float) envelope2d.getCenterY(); + } else { + centerY = pNorth.floatValue(); + } + finalImg = RotateDescriptor.create(inRasterRI, centerX, centerY, (float) Math.toRadians(pAngle), interpolation, null, + null); + + // also keep track of the transforming envelope + AffineTransform rotationAT = new AffineTransform(); + rotationAT.translate(centerX, centerY); + rotationAT.rotate(Math.toRadians(-pAngle)); + rotationAT.translate(-centerX, -centerY); + MathTransform rotationTransform = new AffineTransform2D(rotationAT); + + Envelope jtsEnv = new Envelope(targetEnvelope.getMinX(), targetEnvelope.getMaxX(), targetEnvelope.getMinY(), + targetEnvelope.getMaxY()); + targetEnvelope = JTS.transform(jtsEnv, rotationTransform); + + Geometry rotGeometry = gf.toGeometry(jtsEnv); + targetGeometry = JTS.transform(rotGeometry, rotationTransform); + + pm.done(); + } + + if (doFlipHorizontal) { + pm.beginTask("Flip horizontally...", IJGTProgressMonitor.UNKNOWN); + + if (finalImg != null) { + finalImg = TransposeDescriptor.create(finalImg, TransposeDescriptor.FLIP_HORIZONTAL, null); + } else { + finalImg = TransposeDescriptor.create(inRasterRI, TransposeDescriptor.FLIP_HORIZONTAL, null); + } + + Envelope jtsEnv = new Envelope(targetEnvelope.getMinX(), targetEnvelope.getMaxX(), targetEnvelope.getMinY(), + targetEnvelope.getMaxY()); + targetGeometry = gf.toGeometry(jtsEnv); + pm.done(); + } + if (doFlipVertical) { + pm.beginTask("Flip vertically...", IJGTProgressMonitor.UNKNOWN); + + if (finalImg != null) { + finalImg = TransposeDescriptor.create(finalImg, TransposeDescriptor.FLIP_VERTICAL, null); + } else { + finalImg = TransposeDescriptor.create(inRasterRI, TransposeDescriptor.FLIP_VERTICAL, null); + } + + Envelope jtsEnv = new Envelope(targetEnvelope.getMinX(), targetEnvelope.getMaxX(), targetEnvelope.getMinY(), + targetEnvelope.getMaxY()); + targetGeometry = gf.toGeometry(jtsEnv); + pm.done(); + } + + if (pScaleX != null || pScaleY != null) { + float scaleX = 1f; + float scaleY = 1f; + if (pScaleX == null) { + scaleX = 1f; + } else { + scaleX = pScaleX.floatValue(); + } + if (pScaleY == null) { + scaleY = 1f; + } else { + scaleY = pScaleY.floatValue(); + } + pm.beginTask("Scale raster by: " + scaleX + " and " + scaleY, IJGTProgressMonitor.UNKNOWN); + + // float centerX = (float) envelope2d.getCenterX(); + // float centerY = (float) envelope2d.getCenterY(); + if (finalImg != null) { + finalImg = ScaleDescriptor.create(finalImg, new Float(scaleX), new Float(scaleY), new Float(0.0f), + new Float(0.0f), interpolation, null); + } else { + finalImg = ScaleDescriptor.create(inRasterRI, new Float(scaleX), new Float(scaleY), new Float(0.0f), new Float( + 0.0f), interpolation, null); + } + // also keep track of the transforming envelope + AffineTransform scaleAT = new AffineTransform(); + // scaleAT.translate(centerX, centerY); + scaleAT.scale(scaleX, scaleY); + // scaleAT.translate(-centerX, -centerY); + MathTransform scaleTransform = new AffineTransform2D(scaleAT); + + Envelope jtsEnv = new Envelope(targetEnvelope.getMinX(), targetEnvelope.getMaxX(), targetEnvelope.getMinY(), + targetEnvelope.getMaxY()); + targetEnvelope = JTS.transform(jtsEnv, scaleTransform); + + Geometry scaledGeometry = gf.toGeometry(jtsEnv); + targetGeometry = JTS.transform(scaledGeometry, scaleTransform); + pm.done(); + } + + if (pTransX != null || pTransY != null) { + float transX = 1f; + float transY = 1f; + if (pTransX == null) { + transX = 1f; + } else { + transX = pTransX.floatValue(); + } + if (pTransY == null) { + transY = 1f; + } else { + transY = pTransY.floatValue(); + } + pm.beginTask("Translate raster by: " + transX + " and " + transY, IJGTProgressMonitor.UNKNOWN); + + if (finalImg != null) { + finalImg = TranslateDescriptor.create(finalImg, transX, transY, interpolation, null); + } else { + finalImg = TranslateDescriptor.create(inRasterRI, transX, transY, interpolation, null); + } + + // also keep track of the transforming envelope + AffineTransform translationAT = new AffineTransform(); + translationAT.translate(transX, transY); + MathTransform translateTransform = new AffineTransform2D(translationAT); + + if (targetGeometry == null) { + targetGeometry = gf.toGeometry(targetEnvelope); + } + + targetEnvelope = JTS.transform(targetEnvelope, translateTransform); + targetGeometry = JTS.transform(targetGeometry, translateTransform); + + pm.done(); + } + + if (finalImg != null) { + RegionMap targetRegion = new RegionMap(); + targetRegion.put(NORTH, targetEnvelope.getMaxY()); + targetRegion.put(SOUTH, targetEnvelope.getMinY()); + targetRegion.put(WEST, targetEnvelope.getMinX()); + targetRegion.put(EAST, targetEnvelope.getMaxX()); + targetRegion.put(XRES, sourceRegion.getXres()); + targetRegion.put(YRES, sourceRegion.getYres()); + // targetRegion.put(ROWS, (double) height); + // targetRegion.put(COLS, (double) width); + + CoordinateReferenceSystem crs = inRaster.getCoordinateReferenceSystem(); + outRaster = CoverageUtilities.buildCoverage("out", finalImg, targetRegion, crs); + + outBounds = FeatureUtilities.featureCollectionFromGeometry(crs, targetGeometry); + } + + pm.done(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/windowsampler/WindowSampler.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/windowsampler/WindowSampler.java index 4f6b1557c..1065dc3ef 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/windowsampler/WindowSampler.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/r/windowsampler/WindowSampler.java @@ -1,178 +1,178 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.modules.r.windowsampler; - -import static java.lang.Math.ceil; -import static java.lang.Math.max; -import static java.lang.Math.min; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.Dimension; -import java.awt.Point; -import java.awt.image.WritableRaster; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jaitools.imageutils.iterator.WindowIterator; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; - -@Description("Module to do coverage downsampling on defined windows.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Coverage, Raster, Downsampling, Interpolation") -@Label(JGTConstants.RASTERPROCESSING) -@Status(Status.EXPERIMENTAL) -@Name("winsampler") -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class WindowSampler extends JGTModel { - @Description("The input coverage.") - @In - public GridCoverage2D inGeodata; - - @Description("The mode to use: average (0 = default), sum (1), max (2), min (3).") - @In - public int pMode = 0; - - @Description("The windows rows to use (default is 3).") - @In - public int pRows = 3; - - @Description("The window cols to use (default is 3).") - @In - public int pCols = 3; - - @Description("The cols to move the window forward (default is = pCols).") - @In - public Integer pXstep; - - @Description("The rows to move the window forward (default is = pRows).") - @In - public Integer pYstep; - - @Description("The output coverage.") - @Out - public GridCoverage2D outGeodata; - - @Execute - public void process() throws Exception { - checkNull(inGeodata); - - - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inGeodata); - - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - - int xstep = pCols; - int ystep = pRows; - if (pXstep!=null) { - xstep = pXstep; - } - if (pYstep!=null) { - ystep = pYstep; - } - - // new rows and cols are all that have space rounding down - int newRows = (int) ceil((double) rows / (double) ystep); - int newCols = (int) ceil((double) cols / (double) xstep); - WritableRaster outputWR = CoverageUtilities.createDoubleWritableRaster(newCols, newRows, null, null, - JGTConstants.doubleNovalue); - - WindowIterator iter = new WindowIterator(inGeodata.getRenderedImage(), null, new Dimension(pCols, pRows), - new Point(0, 0), xstep, ystep, JGTConstants.doubleNovalue); - - for( int r = 0; r < newRows; r++ ) { - for( int c = 0; c < newCols; c++ ) { - double[][] window = iter.getWindowDouble(null); - double newValue = calculateValue(window); - iter.next(); - - outputWR.setSample(c, r, 0, newValue); - } - } - - outGeodata = CoverageUtilities - .buildCoverage("downsampled", outputWR, regionMap, inGeodata.getCoordinateReferenceSystem()); - - } - - private double calculateValue( double[][] window ) { - switch( pMode ) { - case 0: - double avg = 0; - int num = 0; - for( int i = 0; i < window.length; i++ ) { - for( int j = 0; j < window[0].length; j++ ) { - if (!isNovalue(window[i][j])) { - avg = avg + window[i][j]; - num++; - } - } - } - avg = avg / num; - return avg; - case 1: - double sum = 0; - for( int i = 0; i < window.length; i++ ) { - for( int j = 0; j < window[0].length; j++ ) { - if (!isNovalue(window[i][j])) { - sum = sum + window[i][j]; - } - } - } - return sum; - case 2: - double max = Double.NEGATIVE_INFINITY; - for( int i = 0; i < window.length; i++ ) { - for( int j = 0; j < window[0].length; j++ ) { - if (!isNovalue(window[i][j])) { - max = max(window[i][j], max); - } - } - } - return max; - case 3: - double min = Double.POSITIVE_INFINITY; - for( int i = 0; i < window.length; i++ ) { - for( int j = 0; j < window[0].length; j++ ) { - if (!isNovalue(window[i][j])) { - min = min(window[i][j], min); - } - } - } - return min; - default: - throw new ModelsIllegalargumentException("Mode not recognized: " + pMode, this); - } - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.modules.r.windowsampler; + +import static java.lang.Math.ceil; +import static java.lang.Math.max; +import static java.lang.Math.min; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.Dimension; +import java.awt.Point; +import java.awt.image.WritableRaster; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jaitools.imageutils.iterator.WindowIterator; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; + +@Description("Module to do coverage downsampling on defined windows.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Coverage, Raster, Downsampling, Interpolation") +@Label(JGTConstants.RASTERPROCESSING) +@Status(Status.EXPERIMENTAL) +@Name("winsampler") +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class WindowSampler extends JGTModel { + @Description("The input coverage.") + @In + public GridCoverage2D inGeodata; + + @Description("The mode to use: average (0 = default), sum (1), max (2), min (3).") + @In + public int pMode = 0; + + @Description("The windows rows to use (default is 3).") + @In + public int pRows = 3; + + @Description("The window cols to use (default is 3).") + @In + public int pCols = 3; + + @Description("The cols to move the window forward (default is = pCols).") + @In + public Integer pXstep; + + @Description("The rows to move the window forward (default is = pRows).") + @In + public Integer pYstep; + + @Description("The output coverage.") + @Out + public GridCoverage2D outGeodata; + + @Execute + public void process() throws Exception { + checkNull(inGeodata); + + + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(inGeodata); + + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + + int xstep = pCols; + int ystep = pRows; + if (pXstep!=null) { + xstep = pXstep; + } + if (pYstep!=null) { + ystep = pYstep; + } + + // new rows and cols are all that have space rounding down + int newRows = (int) ceil((double) rows / (double) ystep); + int newCols = (int) ceil((double) cols / (double) xstep); + WritableRaster outputWR = CoverageUtilities.createDoubleWritableRaster(newCols, newRows, null, null, + JGTConstants.doubleNovalue); + + WindowIterator iter = new WindowIterator(inGeodata.getRenderedImage(), null, new Dimension(pCols, pRows), + new Point(0, 0), xstep, ystep, JGTConstants.doubleNovalue); + + for( int r = 0; r < newRows; r++ ) { + for( int c = 0; c < newCols; c++ ) { + double[][] window = iter.getWindowDouble(null); + double newValue = calculateValue(window); + iter.next(); + + outputWR.setSample(c, r, 0, newValue); + } + } + + outGeodata = CoverageUtilities + .buildCoverage("downsampled", outputWR, regionMap, inGeodata.getCoordinateReferenceSystem()); + + } + + private double calculateValue( double[][] window ) { + switch( pMode ) { + case 0: + double avg = 0; + int num = 0; + for( int i = 0; i < window.length; i++ ) { + for( int j = 0; j < window[0].length; j++ ) { + if (!isNovalue(window[i][j])) { + avg = avg + window[i][j]; + num++; + } + } + } + avg = avg / num; + return avg; + case 1: + double sum = 0; + for( int i = 0; i < window.length; i++ ) { + for( int j = 0; j < window[0].length; j++ ) { + if (!isNovalue(window[i][j])) { + sum = sum + window[i][j]; + } + } + } + return sum; + case 2: + double max = Double.NEGATIVE_INFINITY; + for( int i = 0; i < window.length; i++ ) { + for( int j = 0; j < window[0].length; j++ ) { + if (!isNovalue(window[i][j])) { + max = max(window[i][j], max); + } + } + } + return max; + case 3: + double min = Double.POSITIVE_INFINITY; + for( int i = 0; i < window.length; i++ ) { + for( int j = 0; j < window[0].length; j++ ) { + if (!isNovalue(window[i][j])) { + min = min(window[i][j], min); + } + } + } + return min; + default: + throw new ModelsIllegalargumentException("Mode not recognized: " + pMode, this); + } + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/contourlabels/ContourLinesLabeler.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/contourlabels/ContourLinesLabeler.java index 723eac260..a7ac8d2a9 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/contourlabels/ContourLinesLabeler.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/contourlabels/ContourLinesLabeler.java @@ -1,150 +1,150 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.modules.v.contourlabels; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.memory.MemoryDataStore; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureSource; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.features.FilterUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.filter.Filter; -import org.opengis.geometry.BoundingBox; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.Point; - -@Description("Generates a layer of point features with a given label text and angle, following " - + "reference lines intersecting them with a layer of countourlines.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("Contourlines, Vector") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.EXPERIMENTAL) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class ContourLinesLabeler extends JGTModel { - - @Description("The contour lines.") - @In - public SimpleFeatureCollection inContour; - - @Description("Field name of the contour elevation") - @In - public String fElevation; - - @Description("The lines to intersect with the contours to generate label points.") - @In - public SimpleFeatureCollection inLines; - - @Description("The buffer to consider for every line.") - @In - public double buffer; - - @Description("The labeled point layer.") - @Out - public SimpleFeatureCollection outPoints = null; - - @SuppressWarnings("nls") - @Execute - public void process() throws Exception { - if (!concatOr(outPoints == null, doReset)) { - return; - } - SimpleFeatureType inSchema = inContour.getSchema(); - MemoryDataStore memDatastore = new MemoryDataStore(inContour); - SimpleFeatureSource contourSource = memDatastore - .getFeatureSource(memDatastore.getTypeNames()[0]); - - CoordinateReferenceSystem crs = inSchema.getCoordinateReferenceSystem(); - - outPoints = FeatureCollections.newCollection(); - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("labelpoints"); - b.setCRS(crs); - b.add("the_geom", Point.class); - b.add("elevation", Double.class); - b.add("azimuth", Double.class); - b.add("minus90", Double.class); - SimpleFeatureType outType = b.buildFeatureType(); - int count = 0; - - FeatureIterator lineFeatureIterator = inLines.features(); - while( lineFeatureIterator.hasNext() ) { - SimpleFeature line = lineFeatureIterator.next(); - Geometry lineGeom = (Geometry) line.getDefaultGeometry(); - Geometry lineBuffer = lineGeom.buffer(buffer); - BoundingBox lineBounds = line.getBounds(); - - Filter bboxFilter = FilterUtilities.getBboxFilter("the_geom", lineBounds); - SimpleFeatureCollection filteredContours = contourSource - .getFeatures(bboxFilter); - - FeatureIterator contourIterator = filteredContours.features(); - while( contourIterator.hasNext() ) { - SimpleFeature contour = contourIterator.next(); - Geometry contourGeom = (Geometry) contour.getDefaultGeometry(); - - if (lineBuffer.intersects(contourGeom)) { - Geometry intersection = lineBuffer.intersection(contourGeom); - - Coordinate[] coordinates = intersection.getCoordinates(); - Coordinate first = coordinates[0]; - Coordinate second = coordinates[1]; - - double azimuth = GeometryUtilities.azimuth(first, second); - double azimuthFrom90 = azimuth - 90.0; - if (azimuthFrom90 < 0) { - azimuthFrom90 = 360.0 + azimuthFrom90; - } - double elevation = ((Number) contour.getAttribute(fElevation)).doubleValue(); - Point labelPoint = GeometryUtilities.gf().createPoint(first); - - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(outType); - Object[] values = new Object[]{labelPoint, elevation, azimuth, azimuthFrom90}; - builder.addAll(values); - SimpleFeature pointFeature = builder.buildFeature(outType.getTypeName() + "." - + count++); - outPoints.add(pointFeature); - } - - } - - } - - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.modules.v.contourlabels; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.memory.MemoryDataStore; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.features.FilterUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.filter.Filter; +import org.opengis.geometry.BoundingBox; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.Point; + +@Description("Generates a layer of point features with a given label text and angle, following " + + "reference lines intersecting them with a layer of countourlines.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("Contourlines, Vector") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.EXPERIMENTAL) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class ContourLinesLabeler extends JGTModel { + + @Description("The contour lines.") + @In + public SimpleFeatureCollection inContour; + + @Description("Field name of the contour elevation") + @In + public String fElevation; + + @Description("The lines to intersect with the contours to generate label points.") + @In + public SimpleFeatureCollection inLines; + + @Description("The buffer to consider for every line.") + @In + public double buffer; + + @Description("The labeled point layer.") + @Out + public SimpleFeatureCollection outPoints = null; + + @SuppressWarnings("nls") + @Execute + public void process() throws Exception { + if (!concatOr(outPoints == null, doReset)) { + return; + } + SimpleFeatureType inSchema = inContour.getSchema(); + MemoryDataStore memDatastore = new MemoryDataStore(inContour); + SimpleFeatureSource contourSource = memDatastore + .getFeatureSource(memDatastore.getTypeNames()[0]); + + CoordinateReferenceSystem crs = inSchema.getCoordinateReferenceSystem(); + + outPoints = FeatureCollections.newCollection(); + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("labelpoints"); + b.setCRS(crs); + b.add("the_geom", Point.class); + b.add("elevation", Double.class); + b.add("azimuth", Double.class); + b.add("minus90", Double.class); + SimpleFeatureType outType = b.buildFeatureType(); + int count = 0; + + FeatureIterator lineFeatureIterator = inLines.features(); + while( lineFeatureIterator.hasNext() ) { + SimpleFeature line = lineFeatureIterator.next(); + Geometry lineGeom = (Geometry) line.getDefaultGeometry(); + Geometry lineBuffer = lineGeom.buffer(buffer); + BoundingBox lineBounds = line.getBounds(); + + Filter bboxFilter = FilterUtilities.getBboxFilter("the_geom", lineBounds); + SimpleFeatureCollection filteredContours = contourSource + .getFeatures(bboxFilter); + + FeatureIterator contourIterator = filteredContours.features(); + while( contourIterator.hasNext() ) { + SimpleFeature contour = contourIterator.next(); + Geometry contourGeom = (Geometry) contour.getDefaultGeometry(); + + if (lineBuffer.intersects(contourGeom)) { + Geometry intersection = lineBuffer.intersection(contourGeom); + + Coordinate[] coordinates = intersection.getCoordinates(); + Coordinate first = coordinates[0]; + Coordinate second = coordinates[1]; + + double azimuth = GeometryUtilities.azimuth(first, second); + double azimuthFrom90 = azimuth - 90.0; + if (azimuthFrom90 < 0) { + azimuthFrom90 = 360.0 + azimuthFrom90; + } + double elevation = ((Number) contour.getAttribute(fElevation)).doubleValue(); + Point labelPoint = GeometryUtilities.gf().createPoint(first); + + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(outType); + Object[] values = new Object[]{labelPoint, elevation, azimuth, azimuthFrom90}; + builder.addAll(values); + SimpleFeature pointFeature = builder.buildFeature(outType.getTypeName() + "." + + count++); + outPoints.add(pointFeature); + } + + } + + } + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/grids/GridsGenerator.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/grids/GridsGenerator.java index 59ed286f5..a7c13bceb 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/grids/GridsGenerator.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/grids/GridsGenerator.java @@ -1,284 +1,284 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.grids; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureSource; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.geotools.geometry.Envelope2D; -import org.geotools.geometry.jts.ReferencedEnvelope; -import org.geotools.grid.DefaultGridFeatureBuilder; -import org.geotools.grid.GridFeatureBuilder; -import org.geotools.grid.Grids; -import org.geotools.grid.Lines; -import org.geotools.grid.oblong.Oblongs; -import org.geotools.grid.ortholine.LineOrientation; -import org.geotools.grid.ortholine.OrthoLineDef; -import org.geotools.referencing.CRS; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.jgrasstools.gears.utils.math.NumericsUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.MultiLineString; -import com.vividsolutions.jts.geom.Point; - -@Description("Generates grid of lines or polygons.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Vector, Grid") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.CERTIFIED) -@Name("gridgenerator") -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class GridsGenerator extends JGTModel { - - @Description("Optional vector map from which to take the bounds (if supplied, all other bounds related parameter are ignored). This needs pRows and pCols to be defined.") - @In - public SimpleFeatureCollection inVector = null; - - @Description("Optional raster map from which to take the bounds (if supplied, all other bounds related parameter are ignored. This needs pRows and pCols to be defined.") - @In - public GridCoverage2D inRaster = null; - - @Description("The lower left longitude.") - @In - public double pLon = 0.0; - - @Description("The lower left latitude.") - @In - public double pLat = 0.0; - - @Description("The grid cell width.") - @In - public double pWidth = 1.0; - - @Description("The grid cell height.") - @In - public double pHeight = 1.0; - - @Description("The number of rows.") - @In - public int pRows = 10; - - @Description("The number of cols.") - @In - public int pCols = 10; - - @Description("The vertex spacing to use.") - @In - public Double pSpacing = null; - - @Description("Output type: 0 = polygons, 1 = lines, 2 = points (default = 0).") - @In - public int pType = 0; - - @Description("The code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328). Applied in the case the file is missing.") - @UI(JGTConstants.CRS_UI_HINT) - @In - public String pCode; - - @Description("The grid.") - @Out - public SimpleFeatureCollection outMap = null; - - @Execute - public void process() throws Exception { - - boolean isSquare; - double s; - double n; - double w; - double e; - CoordinateReferenceSystem crs; - if (inVector != null) { - ReferencedEnvelope bounds = inVector.getBounds(); - crs = inVector.getSchema().getCoordinateReferenceSystem(); - s = bounds.getMinY(); - n = bounds.getMaxY(); - w = bounds.getMinX(); - e = bounds.getMaxX(); - pWidth = bounds.getWidth() / pCols; - pHeight = bounds.getHeight() / pRows; - } else if (inRaster != null) { - Envelope2D bounds = inRaster.getGridGeometry().getEnvelope2D(); - crs = inRaster.getCoordinateReferenceSystem(); - s = bounds.getMinY(); - n = bounds.getMaxY(); - w = bounds.getMinX(); - e = bounds.getMaxX(); - pWidth = bounds.getWidth() / pCols; - pHeight = bounds.getHeight() / pRows; - } else { - checkNull(pCode); - s = pLat; - n = pLat + pRows * pHeight; - w = pLon; - e = pLon + pCols * pWidth; - crs = CRS.decode(pCode); - } - isSquare = NumericsUtilities.dEq(pWidth, pHeight) ? true : false; - - outMap = FeatureCollections.newCollection(); - - ReferencedEnvelope env = new ReferencedEnvelope(w, e, s, n, crs); - - pm.beginTask("Generating grid...", IJGTProgressMonitor.UNKNOWN); - - GridFeatureBuilder builder = new DefaultGridFeatureBuilder(crs); - SimpleFeatureSource grid; - switch( pType ) { - case 0: - if (isSquare) { - if (pSpacing != null) { - grid = Grids.createSquareGrid(env, pWidth, pSpacing); - } else { - grid = Grids.createSquareGrid(env, pWidth); - } - } else { - if (pSpacing != null) { - grid = Oblongs.createGrid(env, pWidth, pHeight, pSpacing, builder); - } else { - grid = Oblongs.createGrid(env, pWidth, pHeight, builder); - } - } - outMap = grid.getFeatures(); - break; - case 1: - case 2: - List lineDefs = Arrays.asList(// - new OrthoLineDef(LineOrientation.VERTICAL, 1, pHeight), // - new OrthoLineDef(LineOrientation.HORIZONTAL, 1, pWidth) // - ); - if (pSpacing != null) { - grid = Lines.createOrthoLines(env, lineDefs, pSpacing, builder); - } else { - grid = Lines.createOrthoLines(env, lineDefs); - } - outMap = grid.getFeatures(); - GeometryFactory gf = GeometryUtilities.gf(); - List geoms = FeatureUtilities.featureCollectionToGeometriesList(outMap, true, null); - List verticals = new ArrayList(); - List horizontals = new ArrayList(); - for( Geometry geometry : geoms ) { - Envelope envelope = geometry.getEnvelopeInternal(); - Coordinate first = new Coordinate(envelope.getMinX(), envelope.getMinY()); - Coordinate last = new Coordinate(envelope.getMaxX(), envelope.getMaxY()); - LineString lineString = gf.createLineString(new Coordinate[]{first, last}); - if (envelope.getWidth() > envelope.getHeight()) { - horizontals.add(lineString); - } else { - verticals.add(lineString); - } - } - - if (pType == 1) { - createLines(crs, verticals, horizontals); - } else { - createPoints(crs, gf, verticals, horizontals); - } - - break; - default: - throw new ModelsIllegalargumentException("The supplied pType is not supported.", this); - } - - pm.done(); - } - - private void createPoints( CoordinateReferenceSystem crs, GeometryFactory gf, List verticals, - List horizontals ) { - outMap = FeatureCollections.newCollection(); - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("points"); - b.setCRS(crs); - b.add("the_geom", Point.class); - b.add("id", Long.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder fbuilder = new SimpleFeatureBuilder(type); - - Geometry gVer = gf.createMultiLineString(verticals.toArray(new LineString[0])); - Geometry gHor = gf.createMultiLineString(horizontals.toArray(new LineString[0])); - - Geometry intersection = gHor.intersection(gVer); - - long index = 0; - int numGeometries = intersection.getNumGeometries(); - for( int i = 0; i < numGeometries; i++ ) { - Geometry geometry = intersection.getGeometryN(i); - Object[] values = new Object[]{geometry, index++}; - fbuilder.addAll(values); - SimpleFeature feature = fbuilder.buildFeature(null); - outMap.add(feature); - } - } - - private void createLines( CoordinateReferenceSystem crs, List verticals, List horizontals ) { - outMap = FeatureCollections.newCollection(); - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("lines"); - b.setCRS(crs); - b.add("the_geom", MultiLineString.class); - b.add("id", Long.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder fbuilder = new SimpleFeatureBuilder(type); - - long index = 0; - for( LineString lineString : horizontals ) { - Object[] values = new Object[]{lineString, index++}; - fbuilder.addAll(values); - SimpleFeature feature = fbuilder.buildFeature(null); - outMap.add(feature); - } - for( LineString lineString : verticals ) { - Object[] values = new Object[]{lineString, index++}; - fbuilder.addAll(values); - SimpleFeature feature = fbuilder.buildFeature(null); - outMap.add(feature); - } - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.grids; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.geotools.geometry.Envelope2D; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.geotools.grid.DefaultGridFeatureBuilder; +import org.geotools.grid.GridFeatureBuilder; +import org.geotools.grid.Grids; +import org.geotools.grid.Lines; +import org.geotools.grid.oblong.Oblongs; +import org.geotools.grid.ortholine.LineOrientation; +import org.geotools.grid.ortholine.OrthoLineDef; +import org.geotools.referencing.CRS; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.jgrasstools.gears.utils.math.NumericsUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiLineString; +import com.vividsolutions.jts.geom.Point; + +@Description("Generates grid of lines or polygons.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Vector, Grid") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.CERTIFIED) +@Name("gridgenerator") +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class GridsGenerator extends JGTModel { + + @Description("Optional vector map from which to take the bounds (if supplied, all other bounds related parameter are ignored). This needs pRows and pCols to be defined.") + @In + public SimpleFeatureCollection inVector = null; + + @Description("Optional raster map from which to take the bounds (if supplied, all other bounds related parameter are ignored. This needs pRows and pCols to be defined.") + @In + public GridCoverage2D inRaster = null; + + @Description("The lower left longitude.") + @In + public double pLon = 0.0; + + @Description("The lower left latitude.") + @In + public double pLat = 0.0; + + @Description("The grid cell width.") + @In + public double pWidth = 1.0; + + @Description("The grid cell height.") + @In + public double pHeight = 1.0; + + @Description("The number of rows.") + @In + public int pRows = 10; + + @Description("The number of cols.") + @In + public int pCols = 10; + + @Description("The vertex spacing to use.") + @In + public Double pSpacing = null; + + @Description("Output type: 0 = polygons, 1 = lines, 2 = points (default = 0).") + @In + public int pType = 0; + + @Description("The code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328). Applied in the case the file is missing.") + @UI(JGTConstants.CRS_UI_HINT) + @In + public String pCode; + + @Description("The grid.") + @Out + public SimpleFeatureCollection outMap = null; + + @Execute + public void process() throws Exception { + + boolean isSquare; + double s; + double n; + double w; + double e; + CoordinateReferenceSystem crs; + if (inVector != null) { + ReferencedEnvelope bounds = inVector.getBounds(); + crs = inVector.getSchema().getCoordinateReferenceSystem(); + s = bounds.getMinY(); + n = bounds.getMaxY(); + w = bounds.getMinX(); + e = bounds.getMaxX(); + pWidth = bounds.getWidth() / pCols; + pHeight = bounds.getHeight() / pRows; + } else if (inRaster != null) { + Envelope2D bounds = inRaster.getGridGeometry().getEnvelope2D(); + crs = inRaster.getCoordinateReferenceSystem(); + s = bounds.getMinY(); + n = bounds.getMaxY(); + w = bounds.getMinX(); + e = bounds.getMaxX(); + pWidth = bounds.getWidth() / pCols; + pHeight = bounds.getHeight() / pRows; + } else { + checkNull(pCode); + s = pLat; + n = pLat + pRows * pHeight; + w = pLon; + e = pLon + pCols * pWidth; + crs = CRS.decode(pCode); + } + isSquare = NumericsUtilities.dEq(pWidth, pHeight) ? true : false; + + outMap = FeatureCollections.newCollection(); + + ReferencedEnvelope env = new ReferencedEnvelope(w, e, s, n, crs); + + pm.beginTask("Generating grid...", IJGTProgressMonitor.UNKNOWN); + + GridFeatureBuilder builder = new DefaultGridFeatureBuilder(crs); + SimpleFeatureSource grid; + switch( pType ) { + case 0: + if (isSquare) { + if (pSpacing != null) { + grid = Grids.createSquareGrid(env, pWidth, pSpacing); + } else { + grid = Grids.createSquareGrid(env, pWidth); + } + } else { + if (pSpacing != null) { + grid = Oblongs.createGrid(env, pWidth, pHeight, pSpacing, builder); + } else { + grid = Oblongs.createGrid(env, pWidth, pHeight, builder); + } + } + outMap = grid.getFeatures(); + break; + case 1: + case 2: + List lineDefs = Arrays.asList(// + new OrthoLineDef(LineOrientation.VERTICAL, 1, pHeight), // + new OrthoLineDef(LineOrientation.HORIZONTAL, 1, pWidth) // + ); + if (pSpacing != null) { + grid = Lines.createOrthoLines(env, lineDefs, pSpacing, builder); + } else { + grid = Lines.createOrthoLines(env, lineDefs); + } + outMap = grid.getFeatures(); + GeometryFactory gf = GeometryUtilities.gf(); + List geoms = FeatureUtilities.featureCollectionToGeometriesList(outMap, true, null); + List verticals = new ArrayList(); + List horizontals = new ArrayList(); + for( Geometry geometry : geoms ) { + Envelope envelope = geometry.getEnvelopeInternal(); + Coordinate first = new Coordinate(envelope.getMinX(), envelope.getMinY()); + Coordinate last = new Coordinate(envelope.getMaxX(), envelope.getMaxY()); + LineString lineString = gf.createLineString(new Coordinate[]{first, last}); + if (envelope.getWidth() > envelope.getHeight()) { + horizontals.add(lineString); + } else { + verticals.add(lineString); + } + } + + if (pType == 1) { + createLines(crs, verticals, horizontals); + } else { + createPoints(crs, gf, verticals, horizontals); + } + + break; + default: + throw new ModelsIllegalargumentException("The supplied pType is not supported.", this); + } + + pm.done(); + } + + private void createPoints( CoordinateReferenceSystem crs, GeometryFactory gf, List verticals, + List horizontals ) { + outMap = FeatureCollections.newCollection(); + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("points"); + b.setCRS(crs); + b.add("the_geom", Point.class); + b.add("id", Long.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder fbuilder = new SimpleFeatureBuilder(type); + + Geometry gVer = gf.createMultiLineString(verticals.toArray(new LineString[0])); + Geometry gHor = gf.createMultiLineString(horizontals.toArray(new LineString[0])); + + Geometry intersection = gHor.intersection(gVer); + + long index = 0; + int numGeometries = intersection.getNumGeometries(); + for( int i = 0; i < numGeometries; i++ ) { + Geometry geometry = intersection.getGeometryN(i); + Object[] values = new Object[]{geometry, index++}; + fbuilder.addAll(values); + SimpleFeature feature = fbuilder.buildFeature(null); + outMap.add(feature); + } + } + + private void createLines( CoordinateReferenceSystem crs, List verticals, List horizontals ) { + outMap = FeatureCollections.newCollection(); + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("lines"); + b.setCRS(crs); + b.add("the_geom", MultiLineString.class); + b.add("id", Long.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder fbuilder = new SimpleFeatureBuilder(type); + + long index = 0; + for( LineString lineString : horizontals ) { + Object[] values = new Object[]{lineString, index++}; + fbuilder.addAll(values); + SimpleFeature feature = fbuilder.buildFeature(null); + outMap.add(feature); + } + for( LineString lineString : verticals ) { + Object[] values = new Object[]{lineString, index++}; + fbuilder.addAll(values); + SimpleFeature feature = fbuilder.buildFeature(null); + outMap.add(feature); + } + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/intersections/IntersectionFinder.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/intersections/IntersectionFinder.java index 11c61d6e9..9df5f506b 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/intersections/IntersectionFinder.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/intersections/IntersectionFinder.java @@ -1,171 +1,171 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.modules.v.intersections; - -import java.util.ArrayList; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Label; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities.GEOMETRYTYPE; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.prep.PreparedGeometry; -import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory; - -@Description("Finds intersection geometries in feature collections") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("Vector") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class IntersectionFinder extends JGTModel { - - @Description("The map to test for intersections.") - @In - public SimpleFeatureCollection inMap = null; - - @Description("The progress monitor.") - @In - public IJGTProgressMonitor pm = new LogProgressMonitor(); - - @Description("The intersections points map.") - @Out - public SimpleFeatureCollection outPointsMap = null; - - @Description("The intersections lines map.") - @Out - public SimpleFeatureCollection outLinesMap = null; - - @Execute - public void process() throws Exception { - if (!concatOr(outPointsMap == null && outLinesMap == null, doReset)) { - return; - } - - outPointsMap = FeatureCollections.newCollection(); - outLinesMap = FeatureCollections.newCollection(); - - GEOMETRYTYPE geometryType = GeometryUtilities.getGeometryType(inMap.getSchema() - .getGeometryDescriptor().getType()); - switch( geometryType ) { - case LINE: - case MULTILINE: - intersectLines(); - break; - case POLYGON: - case MULTIPOLYGON: - throw new ModelsIllegalargumentException("The module doesn't work for polygons yet.", - this); - default: - throw new ModelsIllegalargumentException("The module doesn't work for points.", this - .getClass().getSimpleName()); - } - - } - - private void intersectLines() { - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("pointintersections"); - b.setCRS(inMap.getSchema().getCoordinateReferenceSystem()); - b.add("the_geom", Point.class); - SimpleFeatureType pointType = b.buildFeatureType(); - - b = new SimpleFeatureTypeBuilder(); - b.setName("lineintersections"); - b.setCRS(inMap.getSchema().getCoordinateReferenceSystem()); - b.add("the_geom", LineString.class); - SimpleFeatureType linesType = b.buildFeatureType(); - - int size = inMap.size(); - List geometriesList = new ArrayList(); - FeatureIterator linesIterator = inMap.features(); - pm.beginTask("Collecting geometries...", size); - while( linesIterator.hasNext() ) { - SimpleFeature feature = linesIterator.next(); - Geometry line = (Geometry) feature.getDefaultGeometry(); - geometriesList.add(line); - pm.worked(1); - } - pm.done(); - linesIterator.close(); - - int id = 0; - pm.beginTask("Checking intersections...", size); - for( int i = 0; i < size; i++ ) { - Geometry line = geometriesList.get(i); - PreparedGeometry preparedLine = PreparedGeometryFactory.prepare(line); - for( int j = i + 1; j < size; j++ ) { - Geometry otherGeometry = geometriesList.get(j); - - if (preparedLine.intersects(otherGeometry)) { - Geometry intersection = line.intersection(otherGeometry); - int numGeometries = intersection.getNumGeometries(); - for( int k = 0; k < numGeometries; k++ ) { - Geometry geometryN = intersection.getGeometryN(k); - - if (geometryN instanceof Point) { - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(pointType); - Point p = (Point) geometryN; - Object[] values = new Object[]{p}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(pointType.getTypeName() - + "." + id++); - outPointsMap.add(feature); - } else if (geometryN instanceof LineString) { - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(linesType); - LineString l = (LineString) geometryN; - Object[] values = new Object[]{l}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(linesType.getTypeName() - + "." + id++); - outLinesMap.add(feature); - } - - } - } - } - pm.worked(1); - } - pm.done(); - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.modules.v.intersections; + +import java.util.ArrayList; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Label; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.LogProgressMonitor; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities.GEOMETRYTYPE; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.prep.PreparedGeometry; +import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory; + +@Description("Finds intersection geometries in feature collections") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("Vector") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class IntersectionFinder extends JGTModel { + + @Description("The map to test for intersections.") + @In + public SimpleFeatureCollection inMap = null; + + @Description("The progress monitor.") + @In + public IJGTProgressMonitor pm = new LogProgressMonitor(); + + @Description("The intersections points map.") + @Out + public SimpleFeatureCollection outPointsMap = null; + + @Description("The intersections lines map.") + @Out + public SimpleFeatureCollection outLinesMap = null; + + @Execute + public void process() throws Exception { + if (!concatOr(outPointsMap == null && outLinesMap == null, doReset)) { + return; + } + + outPointsMap = FeatureCollections.newCollection(); + outLinesMap = FeatureCollections.newCollection(); + + GEOMETRYTYPE geometryType = GeometryUtilities.getGeometryType(inMap.getSchema() + .getGeometryDescriptor().getType()); + switch( geometryType ) { + case LINE: + case MULTILINE: + intersectLines(); + break; + case POLYGON: + case MULTIPOLYGON: + throw new ModelsIllegalargumentException("The module doesn't work for polygons yet.", + this); + default: + throw new ModelsIllegalargumentException("The module doesn't work for points.", this + .getClass().getSimpleName()); + } + + } + + private void intersectLines() { + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("pointintersections"); + b.setCRS(inMap.getSchema().getCoordinateReferenceSystem()); + b.add("the_geom", Point.class); + SimpleFeatureType pointType = b.buildFeatureType(); + + b = new SimpleFeatureTypeBuilder(); + b.setName("lineintersections"); + b.setCRS(inMap.getSchema().getCoordinateReferenceSystem()); + b.add("the_geom", LineString.class); + SimpleFeatureType linesType = b.buildFeatureType(); + + int size = inMap.size(); + List geometriesList = new ArrayList(); + FeatureIterator linesIterator = inMap.features(); + pm.beginTask("Collecting geometries...", size); + while( linesIterator.hasNext() ) { + SimpleFeature feature = linesIterator.next(); + Geometry line = (Geometry) feature.getDefaultGeometry(); + geometriesList.add(line); + pm.worked(1); + } + pm.done(); + linesIterator.close(); + + int id = 0; + pm.beginTask("Checking intersections...", size); + for( int i = 0; i < size; i++ ) { + Geometry line = geometriesList.get(i); + PreparedGeometry preparedLine = PreparedGeometryFactory.prepare(line); + for( int j = i + 1; j < size; j++ ) { + Geometry otherGeometry = geometriesList.get(j); + + if (preparedLine.intersects(otherGeometry)) { + Geometry intersection = line.intersection(otherGeometry); + int numGeometries = intersection.getNumGeometries(); + for( int k = 0; k < numGeometries; k++ ) { + Geometry geometryN = intersection.getGeometryN(k); + + if (geometryN instanceof Point) { + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(pointType); + Point p = (Point) geometryN; + Object[] values = new Object[]{p}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(pointType.getTypeName() + + "." + id++); + outPointsMap.add(feature); + } else if (geometryN instanceof LineString) { + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(linesType); + LineString l = (LineString) geometryN; + Object[] values = new Object[]{l}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(linesType.getTypeName() + + "." + id++); + outLinesMap.add(feature); + } + + } + } + } + pm.worked(1); + } + pm.done(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/intersections/LineIntersectionCorrector.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/intersections/LineIntersectionCorrector.java index 7b753dfd0..aee2eb603 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/intersections/LineIntersectionCorrector.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/intersections/LineIntersectionCorrector.java @@ -1,497 +1,497 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.modules.v.intersections; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.geotools.graph.build.line.BasicLineGraphGenerator; -import org.geotools.graph.path.DijkstraShortestPathFinder; -import org.geotools.graph.path.Path; -import org.geotools.graph.structure.Edge; -import org.geotools.graph.structure.Graph; -import org.geotools.graph.structure.Node; -import org.geotools.graph.traverse.standard.DijkstraIterator; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.feature.simple.SimpleFeature; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryCollection; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.LineSegment; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.MultiLineString; -import com.vividsolutions.jts.geom.Polygon; -import com.vividsolutions.jts.geom.prep.PreparedGeometry; -import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory; -import com.vividsolutions.jts.operation.linemerge.LineSequencer; -import com.vividsolutions.jts.operation.overlay.snap.GeometrySnapper; -import com.vividsolutions.jts.operation.union.CascadedPolygonUnion; - -@Description("Collection of Smoothing Algorithms. Type 0: McMasters Sliding Averaging " - + "Algorithm. The new position of each point " - + "is the average of the pLookahead points around. Parameter pSlide is used for " - + "linear interpolation between old and new position.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("Smoothing, Vector") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class LineIntersectionCorrector extends JGTModel { - - @Description("The features to be corrected.") - @In - public SimpleFeatureCollection linesFeatures; - - @Description("The point features that define intersections.") - @In - public SimpleFeatureCollection pointFeatures; - - @Description("Protection buffer.") - @In - public double pBuffer = 0.05; - - @Description("Field name of sorting attribute.") - @In - public String fSort = null; - - @Description("Sorting order (default is true).") - @In - public boolean doReverse = true; - - @Description("The untouched features.") - @Out - public SimpleFeatureCollection untouchedFeatures; - - @Description("The corrected features.") - @Out - public SimpleFeatureCollection correctedFeatures; - - @Description("The non corrected features.") - @Out - public SimpleFeatureCollection errorFeatures; - - private static final double DELTA5 = 0.00001; - private static final double DELTA6 = 0.000001; - - private GeometryFactory gF = GeometryUtilities.gf(); - - @Execute - public void process() throws Exception { - if (!concatOr(correctedFeatures == null, doReset)) { - return; - } - - untouchedFeatures = FeatureCollections.newCollection(); - correctedFeatures = FeatureCollections.newCollection(); - errorFeatures = FeatureCollections.newCollection(); - - // extract points - int pSize = pointFeatures.size(); - pm.message("Intersection points to handle: " + pSize); - List pointsEnvelopes = new ArrayList(pSize); - FeatureIterator pointsIterator = pointFeatures.features(); - pm.beginTask("Create point bounds...", pSize); - while( pointsIterator.hasNext() ) { - SimpleFeature feature = pointsIterator.next(); - Geometry point = (Geometry) feature.getDefaultGeometry(); - Coordinate[] coordinates = point.getCoordinates(); - for( Coordinate c : coordinates ) { - double pbuff = 0.05; - Coordinate ll = new Coordinate(c.x - pbuff, c.y - pbuff); - Coordinate ul = new Coordinate(c.x - pbuff, c.y + pbuff); - Coordinate ur = new Coordinate(c.x + pbuff, c.y + pbuff); - Coordinate lr = new Coordinate(c.x + pbuff, c.y - pbuff); - Coordinate end = new Coordinate(c.x - pbuff, c.y - pbuff); - LineString envelopeLine = gF - .createLineString(new Coordinate[]{ll, ul, ur, lr, end}); - pointsEnvelopes.add(envelopeLine); - } - pm.worked(1); - } - pm.done(); - pointsIterator.close(); - - FeatureIterator inFeatureIterator = linesFeatures.features(); - int size = linesFeatures.size(); - - // Geometry first = null; - List badFeatures = new ArrayList(pSize); - pm.beginTask("Extract intersecting lines...", size); - while( inFeatureIterator.hasNext() ) { - SimpleFeature feature = inFeatureIterator.next(); - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - PreparedGeometry preparedGeometry = PreparedGeometryFactory.prepare(geometry); - - boolean touched = false; - for( LineString envelope : pointsEnvelopes ) { - if (preparedGeometry.intersects(envelope)) { - badFeatures.add(new FeatureElevationComparer(feature, fSort, pBuffer, 0.0)); - touched = true; - break; - } - } - if (!touched) { - untouchedFeatures.add(feature); - } - pm.worked(1); - } - pm.done(); - inFeatureIterator.close(); - - Collections.sort(badFeatures); - if (doReverse) { - Collections.reverse(badFeatures); - } - - int id = 0; - size = badFeatures.size(); - pm.message("Found intersecting lines: " + size); - pm.beginTask("Correcting intersections...", size); - for( FeatureElevationComparer featureElevationComparer : badFeatures ) { - if (featureElevationComparer.toRemove()) { - continue; - } - - SimpleFeature feature = featureElevationComparer.getFeature(); - - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - int numGeometries = geometry.getNumGeometries(); - - List geomList = new ArrayList(numGeometries); - for( int i = 0; i < numGeometries; i++ ) { - geomList.add((LineString) geometry.getGeometryN(i)); - } - LineString[] lsArray = (LineString[]) geomList.toArray(new LineString[numGeometries]); - - try { - boolean splitCoordinates = correctLineIntersections(featureElevationComparer, - badFeatures, lsArray, id); - if (splitCoordinates) { - geomList.clear(); - for( LineString lineString : lsArray ) { - Coordinate[] coordinates = lineString.getCoordinates(); - int n = coordinates.length; - if (coordinates[0].distance(coordinates[n - 1]) < DELTA5) { - // we have a ring, rotate it by a quarter - int length = coordinates.length; - int quarter = length / 4; - List tmpList = new ArrayList(coordinates.length); - for( int i = quarter; i < coordinates.length - 1; i++ ) { - tmpList.add(coordinates[i]); - } - for( int i = 0; i <= quarter; i++ ) { - tmpList.add(coordinates[i]); - } - Coordinate[] tmpArray = (Coordinate[]) tmpList - .toArray(new Coordinate[tmpList.size()]); - geomList.add(gF.createLineString(tmpArray)); - } else { - // TODO improve this part - throw new RuntimeException("Not implemented yet."); //$NON-NLS-1$ - // int length = coordinates.length; - // int half = length / 2; - // Coordinate[] first = new Coordinate[half]; - // Coordinate[] second = new Coordinate[length - half + 1]; - // System.arraycopy(coordinates, 0, first, 0, first.length); - // System.arraycopy(coordinates, first.length - 1, second, 0, - // second.length); - // geomList.add(gF.createLineString(first)); - // geomList.add(gF.createLineString(second)); - } - - } - lsArray = (LineString[]) geomList.toArray(new LineString[numGeometries]); - correctLineIntersections(featureElevationComparer, badFeatures, lsArray, id); - } - id++; - } catch (Exception e) { - e.printStackTrace(); - featureElevationComparer.setDirty(true); - continue; - } - - pm.worked(1); - } - pm.done(); - - for( FeatureElevationComparer featureElevationComparer : badFeatures ) { - if (featureElevationComparer.toRemove()) { - continue; - } - SimpleFeature feature = featureElevationComparer.getFeature(); - if (!featureElevationComparer.isDirty()) { - correctedFeatures.add(feature); - } else { - errorFeatures.add(feature); - } - } - - } - - private DijkstraIterator.EdgeWeighter costFunction() { - return (new DijkstraIterator.EdgeWeighter(){ - public double getWeight( Edge e ) { - int id = e.getID(); - if (id % 2 == 0) { - return 1; - } else { - return 10000; - } - } - }); - } - - /** - * Method to correct line intersections. - * - * @param currentFeatureElevationComparer the current checked line wrapper. - * @param comparerList the list of lines that may intersect with the current checked line. - * @param lsArray the geometries of the current checked line. - * @param id the index of the current checked line in the compareList. Used - * to avoid the intersection of the line with itself. - * @return false if correction went smooth, true if there were problems and - * the rotation of the geometry's first point is requested for a second try. - * @throws Exception - */ - private boolean correctLineIntersections( - FeatureElevationComparer currentFeatureElevationComparer, - List comparerList, LineString[] lsArray, int currentLineIndex ) - throws Exception { - - ArrayList newLines = new ArrayList(lsArray.length); - for( final LineString line : lsArray ) { - Coordinate[] lineCoords = line.getCoordinates(); - boolean hadEqualBounds = false; - if (lineCoords[0].distance(lineCoords[lineCoords.length - 1]) < DELTA6) { - hadEqualBounds = true; - Coordinate coordinate = new Coordinate(); - coordinate.x = lineCoords[lineCoords.length - 1].x + DELTA6; - coordinate.y = lineCoords[lineCoords.length - 1].y + DELTA6; - lineCoords[lineCoords.length - 1] = coordinate; - } - - List intersectingPolygons = new ArrayList(); - - PreparedGeometry preparedLine = PreparedGeometryFactory.prepare(line); - - int index = 0; - for( FeatureElevationComparer featureComparer : comparerList ) { - if (featureComparer.toRemove()) { - continue; - } - if (index == currentLineIndex) { - index++; - continue; - } - index++; - - Geometry geom = featureComparer.getGeometry(); - if (preparedLine.intersects(geom)) { - Geometry bufferPolygon = featureComparer.getBufferPolygon(); - int numGeometries = bufferPolygon.getNumGeometries(); - for( int i = 0; i < numGeometries; i++ ) { - Geometry geometryN = bufferPolygon.getGeometryN(i); - intersectingPolygons.add((Polygon) geometryN); - } - } - } - - if (intersectingPolygons.size() > 0) { - final Geometry union = CascadedPolygonUnion.union(intersectingPolygons); - if (union.covers(gF.createPoint(lineCoords[0]))) { - // request the rotation of the geometry's first point - return true; - } - - final Geometry[] collection = new Geometry[1]; - long time1 = System.currentTimeMillis(); - try { - collection[0] = union.symDifference(line); - } catch (Exception e) { - Thread t = new Thread(new Runnable(){ - - public void run() { - double snapTol = GeometrySnapper.computeOverlaySnapTolerance(union, - line); - Geometry aFix = selfSnap(union, snapTol); - collection[0] = aFix.symDifference(line); - } - }); - - t.start(); - - long time2 = System.currentTimeMillis(); - long sec = (time2 - time1) / 1000l; - while( sec < 60 && collection[0] == null ) { - Thread.sleep(300); - time2 = System.currentTimeMillis(); - sec = (time2 - time1) / 1000l; - } - - if (t.isAlive()) { - t.interrupt(); - } - - if (collection[0] == null) { - throw new RuntimeException("Didn't make it to create the snap."); - } - - } - - BasicLineGraphGenerator lineStringGen = new BasicLineGraphGenerator(); - if (collection[0] instanceof GeometryCollection) { - GeometryCollection geomCollection = (GeometryCollection) collection[0]; - int numGeometries = geomCollection.getNumGeometries(); - List linesS = new ArrayList(numGeometries); - List otherLinesS = new ArrayList(numGeometries); - - for( int i = 0; i < numGeometries; i++ ) { - Geometry geometryN = geomCollection.getGeometryN(i); - Coordinate[] coordinates = geometryN.getCoordinates(); - - if (geometryN instanceof LineString) { - for( int j = 0; j < coordinates.length - 1; j = j + 1 ) { - Coordinate first = coordinates[j]; - Coordinate sec = coordinates[j + 1]; - LineSegment seg = new LineSegment(first, sec); - linesS.add(seg); - } - } else { - for( int j = 0; j < coordinates.length - 1; j = j + 1 ) { - Coordinate first = coordinates[j]; - Coordinate sec = coordinates[j + 1]; - LineSegment seg = new LineSegment(first, sec); - otherLinesS.add(seg); - } - } - } - - int id = 0; - for( LineSegment l : linesS ) { - lineStringGen.add(l); - Edge edge = lineStringGen.getEdge(l.p0, l.p1); - edge.setID(id); - id = id + 2; - } - id = 1; - for( LineSegment l : otherLinesS ) { - lineStringGen.add(l); - Edge edge = lineStringGen.getEdge(l.p0, l.p1); - edge.setID(id); - id = id + 2; - } - - Graph graph = lineStringGen.getGraph(); - - Node startNode = lineStringGen.getNode(lineCoords[0]); - Node endNode = lineStringGen.getNode(lineCoords[lineCoords.length - 1]); - - DijkstraShortestPathFinder pfinder = new DijkstraShortestPathFinder(graph, - startNode, costFunction()); - pfinder.calculate(); - Path path = null; - try { - path = pfinder.getPath(endNode); - } catch (Exception e) { - return true; - } - - LineSequencer ls = new LineSequencer(); - for( Iterator e = path.getEdges().iterator(); e.hasNext(); ) { - Edge edge = (Edge) e.next(); - Object object = edge.getObject(); - if (object instanceof LineSegment) { - LineSegment seg = (LineSegment) object; - ls.add(gF.createLineString(new Coordinate[]{seg.p0, seg.p1})); - } - } - Geometry sequencedLineStrings = ls.getSequencedLineStrings(); - Coordinate[] coordinates = sequencedLineStrings.getCoordinates(); - if (coordinates.length != 0) { - if (hadEqualBounds) { - coordinates[coordinates.length - 1] = new Coordinate(coordinates[0]); - } - - List tmp = new ArrayList(coordinates.length); - for( int i = 0; i < coordinates.length; i++ ) { - if (i % 2 == 0 || i == coordinates.length - 1) { - tmp.add(coordinates[i]); - } - } - coordinates = (Coordinate[]) tmp.toArray(new Coordinate[tmp.size()]); - - Geometry resultGeometry = gF.createLineString(coordinates); - double newLength = resultGeometry.getLength(); - double length = line.getLength(); - - if (Math.abs(length - newLength) > 0.5 * length) { - return true; - } else { - newLines.add((LineString) resultGeometry); - } - } else { - // request the rotation of the geometry's first point - return true; - } - - } - - } else { - newLines.add(line); - } - } - - LineString[] linesArray; - if (newLines.size() == 0) { - linesArray = lsArray; - } else { - linesArray = (LineString[]) newLines.toArray(new LineString[newLines.size()]); - } - MultiLineString multiLineString = gF.createMultiLineString(linesArray); - currentFeatureElevationComparer.substituteGeometry(multiLineString); - return false; - } - - private Geometry selfSnap( Geometry g, double snapTolerance ) { - GeometrySnapper snapper = new GeometrySnapper(g); - Geometry snapped = snapper.snapTo(g, snapTolerance); - // need to "clean" snapped geometry - use buffer(0) as a simple way to do this - Geometry fix = snapped.buffer(0); - return fix; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.modules.v.intersections; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.geotools.graph.build.line.BasicLineGraphGenerator; +import org.geotools.graph.path.DijkstraShortestPathFinder; +import org.geotools.graph.path.Path; +import org.geotools.graph.structure.Edge; +import org.geotools.graph.structure.Graph; +import org.geotools.graph.structure.Node; +import org.geotools.graph.traverse.standard.DijkstraIterator; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryCollection; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineSegment; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiLineString; +import com.vividsolutions.jts.geom.Polygon; +import com.vividsolutions.jts.geom.prep.PreparedGeometry; +import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory; +import com.vividsolutions.jts.operation.linemerge.LineSequencer; +import com.vividsolutions.jts.operation.overlay.snap.GeometrySnapper; +import com.vividsolutions.jts.operation.union.CascadedPolygonUnion; + +@Description("Collection of Smoothing Algorithms. Type 0: McMasters Sliding Averaging " + + "Algorithm. The new position of each point " + + "is the average of the pLookahead points around. Parameter pSlide is used for " + + "linear interpolation between old and new position.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("Smoothing, Vector") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class LineIntersectionCorrector extends JGTModel { + + @Description("The features to be corrected.") + @In + public SimpleFeatureCollection linesFeatures; + + @Description("The point features that define intersections.") + @In + public SimpleFeatureCollection pointFeatures; + + @Description("Protection buffer.") + @In + public double pBuffer = 0.05; + + @Description("Field name of sorting attribute.") + @In + public String fSort = null; + + @Description("Sorting order (default is true).") + @In + public boolean doReverse = true; + + @Description("The untouched features.") + @Out + public SimpleFeatureCollection untouchedFeatures; + + @Description("The corrected features.") + @Out + public SimpleFeatureCollection correctedFeatures; + + @Description("The non corrected features.") + @Out + public SimpleFeatureCollection errorFeatures; + + private static final double DELTA5 = 0.00001; + private static final double DELTA6 = 0.000001; + + private GeometryFactory gF = GeometryUtilities.gf(); + + @Execute + public void process() throws Exception { + if (!concatOr(correctedFeatures == null, doReset)) { + return; + } + + untouchedFeatures = FeatureCollections.newCollection(); + correctedFeatures = FeatureCollections.newCollection(); + errorFeatures = FeatureCollections.newCollection(); + + // extract points + int pSize = pointFeatures.size(); + pm.message("Intersection points to handle: " + pSize); + List pointsEnvelopes = new ArrayList(pSize); + FeatureIterator pointsIterator = pointFeatures.features(); + pm.beginTask("Create point bounds...", pSize); + while( pointsIterator.hasNext() ) { + SimpleFeature feature = pointsIterator.next(); + Geometry point = (Geometry) feature.getDefaultGeometry(); + Coordinate[] coordinates = point.getCoordinates(); + for( Coordinate c : coordinates ) { + double pbuff = 0.05; + Coordinate ll = new Coordinate(c.x - pbuff, c.y - pbuff); + Coordinate ul = new Coordinate(c.x - pbuff, c.y + pbuff); + Coordinate ur = new Coordinate(c.x + pbuff, c.y + pbuff); + Coordinate lr = new Coordinate(c.x + pbuff, c.y - pbuff); + Coordinate end = new Coordinate(c.x - pbuff, c.y - pbuff); + LineString envelopeLine = gF + .createLineString(new Coordinate[]{ll, ul, ur, lr, end}); + pointsEnvelopes.add(envelopeLine); + } + pm.worked(1); + } + pm.done(); + pointsIterator.close(); + + FeatureIterator inFeatureIterator = linesFeatures.features(); + int size = linesFeatures.size(); + + // Geometry first = null; + List badFeatures = new ArrayList(pSize); + pm.beginTask("Extract intersecting lines...", size); + while( inFeatureIterator.hasNext() ) { + SimpleFeature feature = inFeatureIterator.next(); + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + PreparedGeometry preparedGeometry = PreparedGeometryFactory.prepare(geometry); + + boolean touched = false; + for( LineString envelope : pointsEnvelopes ) { + if (preparedGeometry.intersects(envelope)) { + badFeatures.add(new FeatureElevationComparer(feature, fSort, pBuffer, 0.0)); + touched = true; + break; + } + } + if (!touched) { + untouchedFeatures.add(feature); + } + pm.worked(1); + } + pm.done(); + inFeatureIterator.close(); + + Collections.sort(badFeatures); + if (doReverse) { + Collections.reverse(badFeatures); + } + + int id = 0; + size = badFeatures.size(); + pm.message("Found intersecting lines: " + size); + pm.beginTask("Correcting intersections...", size); + for( FeatureElevationComparer featureElevationComparer : badFeatures ) { + if (featureElevationComparer.toRemove()) { + continue; + } + + SimpleFeature feature = featureElevationComparer.getFeature(); + + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + int numGeometries = geometry.getNumGeometries(); + + List geomList = new ArrayList(numGeometries); + for( int i = 0; i < numGeometries; i++ ) { + geomList.add((LineString) geometry.getGeometryN(i)); + } + LineString[] lsArray = (LineString[]) geomList.toArray(new LineString[numGeometries]); + + try { + boolean splitCoordinates = correctLineIntersections(featureElevationComparer, + badFeatures, lsArray, id); + if (splitCoordinates) { + geomList.clear(); + for( LineString lineString : lsArray ) { + Coordinate[] coordinates = lineString.getCoordinates(); + int n = coordinates.length; + if (coordinates[0].distance(coordinates[n - 1]) < DELTA5) { + // we have a ring, rotate it by a quarter + int length = coordinates.length; + int quarter = length / 4; + List tmpList = new ArrayList(coordinates.length); + for( int i = quarter; i < coordinates.length - 1; i++ ) { + tmpList.add(coordinates[i]); + } + for( int i = 0; i <= quarter; i++ ) { + tmpList.add(coordinates[i]); + } + Coordinate[] tmpArray = (Coordinate[]) tmpList + .toArray(new Coordinate[tmpList.size()]); + geomList.add(gF.createLineString(tmpArray)); + } else { + // TODO improve this part + throw new RuntimeException("Not implemented yet."); //$NON-NLS-1$ + // int length = coordinates.length; + // int half = length / 2; + // Coordinate[] first = new Coordinate[half]; + // Coordinate[] second = new Coordinate[length - half + 1]; + // System.arraycopy(coordinates, 0, first, 0, first.length); + // System.arraycopy(coordinates, first.length - 1, second, 0, + // second.length); + // geomList.add(gF.createLineString(first)); + // geomList.add(gF.createLineString(second)); + } + + } + lsArray = (LineString[]) geomList.toArray(new LineString[numGeometries]); + correctLineIntersections(featureElevationComparer, badFeatures, lsArray, id); + } + id++; + } catch (Exception e) { + e.printStackTrace(); + featureElevationComparer.setDirty(true); + continue; + } + + pm.worked(1); + } + pm.done(); + + for( FeatureElevationComparer featureElevationComparer : badFeatures ) { + if (featureElevationComparer.toRemove()) { + continue; + } + SimpleFeature feature = featureElevationComparer.getFeature(); + if (!featureElevationComparer.isDirty()) { + correctedFeatures.add(feature); + } else { + errorFeatures.add(feature); + } + } + + } + + private DijkstraIterator.EdgeWeighter costFunction() { + return (new DijkstraIterator.EdgeWeighter(){ + public double getWeight( Edge e ) { + int id = e.getID(); + if (id % 2 == 0) { + return 1; + } else { + return 10000; + } + } + }); + } + + /** + * Method to correct line intersections. + * + * @param currentFeatureElevationComparer the current checked line wrapper. + * @param comparerList the list of lines that may intersect with the current checked line. + * @param lsArray the geometries of the current checked line. + * @param id the index of the current checked line in the compareList. Used + * to avoid the intersection of the line with itself. + * @return false if correction went smooth, true if there were problems and + * the rotation of the geometry's first point is requested for a second try. + * @throws Exception + */ + private boolean correctLineIntersections( + FeatureElevationComparer currentFeatureElevationComparer, + List comparerList, LineString[] lsArray, int currentLineIndex ) + throws Exception { + + ArrayList newLines = new ArrayList(lsArray.length); + for( final LineString line : lsArray ) { + Coordinate[] lineCoords = line.getCoordinates(); + boolean hadEqualBounds = false; + if (lineCoords[0].distance(lineCoords[lineCoords.length - 1]) < DELTA6) { + hadEqualBounds = true; + Coordinate coordinate = new Coordinate(); + coordinate.x = lineCoords[lineCoords.length - 1].x + DELTA6; + coordinate.y = lineCoords[lineCoords.length - 1].y + DELTA6; + lineCoords[lineCoords.length - 1] = coordinate; + } + + List intersectingPolygons = new ArrayList(); + + PreparedGeometry preparedLine = PreparedGeometryFactory.prepare(line); + + int index = 0; + for( FeatureElevationComparer featureComparer : comparerList ) { + if (featureComparer.toRemove()) { + continue; + } + if (index == currentLineIndex) { + index++; + continue; + } + index++; + + Geometry geom = featureComparer.getGeometry(); + if (preparedLine.intersects(geom)) { + Geometry bufferPolygon = featureComparer.getBufferPolygon(); + int numGeometries = bufferPolygon.getNumGeometries(); + for( int i = 0; i < numGeometries; i++ ) { + Geometry geometryN = bufferPolygon.getGeometryN(i); + intersectingPolygons.add((Polygon) geometryN); + } + } + } + + if (intersectingPolygons.size() > 0) { + final Geometry union = CascadedPolygonUnion.union(intersectingPolygons); + if (union.covers(gF.createPoint(lineCoords[0]))) { + // request the rotation of the geometry's first point + return true; + } + + final Geometry[] collection = new Geometry[1]; + long time1 = System.currentTimeMillis(); + try { + collection[0] = union.symDifference(line); + } catch (Exception e) { + Thread t = new Thread(new Runnable(){ + + public void run() { + double snapTol = GeometrySnapper.computeOverlaySnapTolerance(union, + line); + Geometry aFix = selfSnap(union, snapTol); + collection[0] = aFix.symDifference(line); + } + }); + + t.start(); + + long time2 = System.currentTimeMillis(); + long sec = (time2 - time1) / 1000l; + while( sec < 60 && collection[0] == null ) { + Thread.sleep(300); + time2 = System.currentTimeMillis(); + sec = (time2 - time1) / 1000l; + } + + if (t.isAlive()) { + t.interrupt(); + } + + if (collection[0] == null) { + throw new RuntimeException("Didn't make it to create the snap."); + } + + } + + BasicLineGraphGenerator lineStringGen = new BasicLineGraphGenerator(); + if (collection[0] instanceof GeometryCollection) { + GeometryCollection geomCollection = (GeometryCollection) collection[0]; + int numGeometries = geomCollection.getNumGeometries(); + List linesS = new ArrayList(numGeometries); + List otherLinesS = new ArrayList(numGeometries); + + for( int i = 0; i < numGeometries; i++ ) { + Geometry geometryN = geomCollection.getGeometryN(i); + Coordinate[] coordinates = geometryN.getCoordinates(); + + if (geometryN instanceof LineString) { + for( int j = 0; j < coordinates.length - 1; j = j + 1 ) { + Coordinate first = coordinates[j]; + Coordinate sec = coordinates[j + 1]; + LineSegment seg = new LineSegment(first, sec); + linesS.add(seg); + } + } else { + for( int j = 0; j < coordinates.length - 1; j = j + 1 ) { + Coordinate first = coordinates[j]; + Coordinate sec = coordinates[j + 1]; + LineSegment seg = new LineSegment(first, sec); + otherLinesS.add(seg); + } + } + } + + int id = 0; + for( LineSegment l : linesS ) { + lineStringGen.add(l); + Edge edge = lineStringGen.getEdge(l.p0, l.p1); + edge.setID(id); + id = id + 2; + } + id = 1; + for( LineSegment l : otherLinesS ) { + lineStringGen.add(l); + Edge edge = lineStringGen.getEdge(l.p0, l.p1); + edge.setID(id); + id = id + 2; + } + + Graph graph = lineStringGen.getGraph(); + + Node startNode = lineStringGen.getNode(lineCoords[0]); + Node endNode = lineStringGen.getNode(lineCoords[lineCoords.length - 1]); + + DijkstraShortestPathFinder pfinder = new DijkstraShortestPathFinder(graph, + startNode, costFunction()); + pfinder.calculate(); + Path path = null; + try { + path = pfinder.getPath(endNode); + } catch (Exception e) { + return true; + } + + LineSequencer ls = new LineSequencer(); + for( Iterator e = path.getEdges().iterator(); e.hasNext(); ) { + Edge edge = (Edge) e.next(); + Object object = edge.getObject(); + if (object instanceof LineSegment) { + LineSegment seg = (LineSegment) object; + ls.add(gF.createLineString(new Coordinate[]{seg.p0, seg.p1})); + } + } + Geometry sequencedLineStrings = ls.getSequencedLineStrings(); + Coordinate[] coordinates = sequencedLineStrings.getCoordinates(); + if (coordinates.length != 0) { + if (hadEqualBounds) { + coordinates[coordinates.length - 1] = new Coordinate(coordinates[0]); + } + + List tmp = new ArrayList(coordinates.length); + for( int i = 0; i < coordinates.length; i++ ) { + if (i % 2 == 0 || i == coordinates.length - 1) { + tmp.add(coordinates[i]); + } + } + coordinates = (Coordinate[]) tmp.toArray(new Coordinate[tmp.size()]); + + Geometry resultGeometry = gF.createLineString(coordinates); + double newLength = resultGeometry.getLength(); + double length = line.getLength(); + + if (Math.abs(length - newLength) > 0.5 * length) { + return true; + } else { + newLines.add((LineString) resultGeometry); + } + } else { + // request the rotation of the geometry's first point + return true; + } + + } + + } else { + newLines.add(line); + } + } + + LineString[] linesArray; + if (newLines.size() == 0) { + linesArray = lsArray; + } else { + linesArray = (LineString[]) newLines.toArray(new LineString[newLines.size()]); + } + MultiLineString multiLineString = gF.createMultiLineString(linesArray); + currentFeatureElevationComparer.substituteGeometry(multiLineString); + return false; + } + + private Geometry selfSnap( Geometry g, double snapTolerance ) { + GeometrySnapper snapper = new GeometrySnapper(g); + Geometry snapped = snapper.snapTo(g, snapTolerance); + // need to "clean" snapped geometry - use buffer(0) as a simple way to do this + Geometry fix = snapped.buffer(0); + return fix; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/polygonize/LinesPolygonizer.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/polygonize/LinesPolygonizer.java index 669bfcd7d..32a376f85 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/polygonize/LinesPolygonizer.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/polygonize/LinesPolygonizer.java @@ -1,139 +1,139 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.polygonize; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities.GEOMETRYTYPE; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.Polygon; -import com.vividsolutions.jts.operation.polygonize.Polygonizer; - -@Description("Polygonizes a layer of lines.") -@Author(name = "Antonio Falciano, Andrea Antonello", contact = "afalciano@yahoo.it, http://blog.spaziogis.it/, http://www.hydrologis.com") -@Keywords("Vector, Polygonize") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.DRAFT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class LinesPolygonizer extends JGTModel { - - @Description("The map of lines to polygonize.") - @In - public SimpleFeatureCollection inMap = null; - - @Description("The map of points containing the id to put in the polygons attributes (optional).") - @In - public SimpleFeatureCollection inPoints = null; - - @Description("The field of the points layer containing the id for the polygons (necessary if inPoints is defined).") - @In - public String fId = null; - - @Description("The field of the polygonized layer containing the id (default is 'id').") - @In - public String fNewId = "id"; - - @Description("The map of polygons.") - @Out - public SimpleFeatureCollection outMap = null; - - @Execute - public void process() throws Exception { - checkNull(inMap); - - outMap = FeatureCollections.newCollection(); - - GEOMETRYTYPE geometryType = GeometryUtilities.getGeometryType(inMap.getSchema().getGeometryDescriptor().getType()); - switch( geometryType ) { - case LINE: - case MULTILINE: - break; - default: - throw new ModelsIllegalargumentException("The module only works with line layers.", this); - } - - List linesList = FeatureUtilities.featureCollectionToGeometriesList(inMap, true, null); - - // Polygonization - final Polygonizer polygonizer = new Polygonizer(); - polygonizer.add(linesList); - @SuppressWarnings("unchecked") - final Collection polygonizedLines = polygonizer.getPolygons(); - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("polygonized"); - b.setCRS(inMap.getSchema().getCoordinateReferenceSystem()); - b.add("the_geom", Polygon.class); - b.add(fNewId, String.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - - List pointGeometries = new ArrayList(); - if (inPoints != null) { - fId = FeatureUtilities.findAttributeName(inPoints.getSchema(), fId); - pointGeometries = FeatureUtilities.featureCollectionToGeometriesList(inPoints, false, fId); - } - - pm.beginTask("Generating polygon features...", polygonizedLines.size()); - int index = 0; - for( Polygon polygon : polygonizedLines ) { - String attribute = String.valueOf(index++); - if (inPoints != null) { - attribute = "-"; - for( Geometry point : pointGeometries ) { - if (polygon.contains(point)) { - attribute = point.getUserData().toString(); - break; - } - } - } - - Object[] values = new Object[]{polygon, attribute}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(null); - outMap.add(feature); - - pm.worked(1); - } - pm.done(); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.polygonize; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities.GEOMETRYTYPE; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.Polygon; +import com.vividsolutions.jts.operation.polygonize.Polygonizer; + +@Description("Polygonizes a layer of lines.") +@Author(name = "Antonio Falciano, Andrea Antonello", contact = "afalciano@yahoo.it, http://blog.spaziogis.it/, http://www.hydrologis.com") +@Keywords("Vector, Polygonize") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.DRAFT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class LinesPolygonizer extends JGTModel { + + @Description("The map of lines to polygonize.") + @In + public SimpleFeatureCollection inMap = null; + + @Description("The map of points containing the id to put in the polygons attributes (optional).") + @In + public SimpleFeatureCollection inPoints = null; + + @Description("The field of the points layer containing the id for the polygons (necessary if inPoints is defined).") + @In + public String fId = null; + + @Description("The field of the polygonized layer containing the id (default is 'id').") + @In + public String fNewId = "id"; + + @Description("The map of polygons.") + @Out + public SimpleFeatureCollection outMap = null; + + @Execute + public void process() throws Exception { + checkNull(inMap); + + outMap = FeatureCollections.newCollection(); + + GEOMETRYTYPE geometryType = GeometryUtilities.getGeometryType(inMap.getSchema().getGeometryDescriptor().getType()); + switch( geometryType ) { + case LINE: + case MULTILINE: + break; + default: + throw new ModelsIllegalargumentException("The module only works with line layers.", this); + } + + List linesList = FeatureUtilities.featureCollectionToGeometriesList(inMap, true, null); + + // Polygonization + final Polygonizer polygonizer = new Polygonizer(); + polygonizer.add(linesList); + @SuppressWarnings("unchecked") + final Collection polygonizedLines = polygonizer.getPolygons(); + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("polygonized"); + b.setCRS(inMap.getSchema().getCoordinateReferenceSystem()); + b.add("the_geom", Polygon.class); + b.add(fNewId, String.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + + List pointGeometries = new ArrayList(); + if (inPoints != null) { + fId = FeatureUtilities.findAttributeName(inPoints.getSchema(), fId); + pointGeometries = FeatureUtilities.featureCollectionToGeometriesList(inPoints, false, fId); + } + + pm.beginTask("Generating polygon features...", polygonizedLines.size()); + int index = 0; + for( Polygon polygon : polygonizedLines ) { + String attribute = String.valueOf(index++); + if (inPoints != null) { + attribute = "-"; + for( Geometry point : pointGeometries ) { + if (polygon.contains(point)) { + attribute = point.getUserData().toString(); + break; + } + } + } + + Object[] values = new Object[]{polygon, attribute}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(null); + outMap.add(feature); + + pm.worked(1); + } + pm.done(); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/FeatureSlidingAverage.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/FeatureSlidingAverage.java index bbadba7af..3bb7eef62 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/FeatureSlidingAverage.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/FeatureSlidingAverage.java @@ -1,230 +1,230 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.smoothing; - -import java.util.ArrayList; -import java.util.List; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; - -/** - * Applies a sliding average on linear geometries for smoothing. - * - *

                - * See: http://grass.osgeo.org/wiki/V.generalize_tutorial - *

                - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class FeatureSlidingAverage { - - private static final double DELTA = 0.00001; - private final Geometry geometry; - - public FeatureSlidingAverage( Geometry geometry ) { - this.geometry = geometry; - } - - public List smooth( int lookAhead, boolean considerZ, double slide ) { - - double sc; - List res = new ArrayList(); - - Coordinate[] coordinates = geometry.getCoordinates(); - int n = coordinates.length; - - if (n < 4 * lookAhead) { - /* - * if lookahead is too large, lets put it as the - * 20% of the number of coordinates - */ - lookAhead = (int) Math.floor(n * 0.2d); - } - - if (lookAhead % 2 == 0) { - lookAhead++; - } - if (lookAhead < 3) - return null; - - int halfLookAhead = lookAhead / 2; - if (halfLookAhead > coordinates.length) { - throw new RuntimeException(); - } - - int padding = 0; - if (coordinates[0].distance(coordinates[n - 1]) < DELTA) { - // we have a ring, extend it for smoothing - int tmpN = lookAhead / 2; - if (tmpN > n / 2) { - tmpN = n / 2; - } - padding = tmpN; - Coordinate[] ringCoordinates = new Coordinate[n + 2 * tmpN]; - for( int i = 0; i < tmpN; i++ ) { - ringCoordinates[i] = coordinates[n - (tmpN - i) - 1]; - } - System.arraycopy(coordinates, 0, ringCoordinates, tmpN, n); - int index = 1; - for( int i = ringCoordinates.length - padding; i < ringCoordinates.length; i++ ) { - ringCoordinates[i] = coordinates[index++]; - } - coordinates = ringCoordinates; - } - n = n + 2 * padding; - - for( int j = 0; j < n; j++ ) { - Coordinate tmp = new Coordinate(); - res.add(tmp); - } - - sc = (double) 1.0 / (double) lookAhead; - - Coordinate pCoord = new Coordinate(); - Coordinate sCoord = new Coordinate(); - pointAssign(coordinates, 0, considerZ, pCoord); - for( int i = 1; i < lookAhead; i++ ) { - Coordinate tmpCoord = new Coordinate(); - pointAssign(coordinates, i, considerZ, tmpCoord); - pointAdd(pCoord, tmpCoord, pCoord); - } - - // progressive smooth the first part - // int tmpHalf = 0; - // for( int i = 0; i < halfLookAhead; i++ ) { - // if (i < 1) { - // continue; - // } - // - // tmpHalf = i - 1; - // - // Coordinate tmpCoord = new Coordinate(); - // pointAssign(coordinates, i, considerZ, sCoord); - // pointScalar(sCoord, 1.0 - slide, sCoord); - // pointScalar(pCoord, sc * slide, tmpCoord); - // pointAdd(tmpCoord, sCoord, res.get(i)); - // if (i + tmpHalf + 1 < n) { - // pointAssign(coordinates, i - tmpHalf, considerZ, tmpCoord); - // pointSubtract(pCoord, tmpCoord, pCoord); - // pointAssign(coordinates, i + tmpHalf + 1, considerZ, tmpCoord); - // pointAdd(pCoord, tmpCoord, pCoord); - // } - // } - - /* and calculate the average of remaining points */ - for( int i = halfLookAhead; i + halfLookAhead < n; i++ ) { - Coordinate tmpCoord = new Coordinate(); - pointAssign(coordinates, i, considerZ, sCoord); - pointScalar(sCoord, 1.0 - slide, sCoord); - pointScalar(pCoord, sc * slide, tmpCoord); - pointAdd(tmpCoord, sCoord, res.get(i)); - if (i + halfLookAhead + 1 < n) { - pointAssign(coordinates, i - halfLookAhead, considerZ, tmpCoord); - pointSubtract(pCoord, tmpCoord, pCoord); - pointAssign(coordinates, i + halfLookAhead + 1, considerZ, tmpCoord); - pointAdd(pCoord, tmpCoord, pCoord); - } - } - - // progressive smooth the last part - // tmpHalf = 0; - // for( int i = n - halfLookAhead; i < n - 1; i++ ) { - // - // tmpHalf = n - 1 - i; - // - // Coordinate tmpCoord = new Coordinate(); - // pointAssign(coordinates, i, considerZ, sCoord); - // pointScalar(sCoord, 1.0 - slide, sCoord); - // pointScalar(pCoord, sc * slide, tmpCoord); - // pointAdd(tmpCoord, sCoord, res.get(i)); - // if (i + tmpHalf <= n) { - // pointAssign(coordinates, i - tmpHalf, considerZ, tmpCoord); - // pointSubtract(pCoord, tmpCoord, pCoord); - // pointAssign(coordinates, i + tmpHalf, considerZ, tmpCoord); - // pointAdd(pCoord, tmpCoord, pCoord); - // } - // } - // - // Coordinate c = res.get(0); - // c.x = coordinates[0].x; - // c.y = coordinates[0].y; - // c.z = coordinates[0].z; - // c = res.get(res.size() - 1); - // c.x = coordinates[n - 1].x; - // c.y = coordinates[n - 1].y; - // c.z = coordinates[n - 1].z; - for( int i = 0; i < halfLookAhead; i++ ) { - Coordinate coordinate = res.get(i); - coordinate.x = coordinates[i].x; - coordinate.y = coordinates[i].y; - coordinate.z = coordinates[i].z; - } - for( int i = n - halfLookAhead - 1; i < n; i++ ) { - Coordinate coordinate = res.get(i); - coordinate.x = coordinates[i].x; - coordinate.y = coordinates[i].y; - coordinate.z = coordinates[i].z; - } - // for( i = half; i + half < n; i++ ) { - // coordinates[i].x = res.get(i).x; - // coordinates[i].y = res.get(i).y; - // coordinates[i].z = res.get(i).z; - // } - - // return Points->n_points; - - if (padding != 0) { - res = res.subList(padding, n - padding - 1); - res.add(res.get(0)); - } - - return res; - } - private void pointAssign( Coordinate[] coordinates, int index, boolean considerZ, - Coordinate newAssignedCoordinate ) { - Coordinate coordinate = coordinates[index]; - newAssignedCoordinate.x = coordinate.x; - newAssignedCoordinate.y = coordinate.y; - if (considerZ) { - newAssignedCoordinate.z = coordinate.z; - } else { - newAssignedCoordinate.z = 0; - } - return; - } - - private void pointAdd( Coordinate a, Coordinate b, Coordinate res ) { - res.x = a.x + b.x; - res.y = a.y + b.y; - res.z = a.z + b.z; - } - - private void pointSubtract( Coordinate a, Coordinate b, Coordinate res ) { - res.x = a.x - b.x; - res.y = a.y - b.y; - res.z = a.z - b.z; - } - - private void pointScalar( Coordinate a, double k, Coordinate res ) { - res.x = a.x * k; - res.y = a.y * k; - res.z = a.z * k; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.smoothing; + +import java.util.ArrayList; +import java.util.List; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Applies a sliding average on linear geometries for smoothing. + * + *

                + * See: http://grass.osgeo.org/wiki/V.generalize_tutorial + *

                + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class FeatureSlidingAverage { + + private static final double DELTA = 0.00001; + private final Geometry geometry; + + public FeatureSlidingAverage( Geometry geometry ) { + this.geometry = geometry; + } + + public List smooth( int lookAhead, boolean considerZ, double slide ) { + + double sc; + List res = new ArrayList(); + + Coordinate[] coordinates = geometry.getCoordinates(); + int n = coordinates.length; + + if (n < 4 * lookAhead) { + /* + * if lookahead is too large, lets put it as the + * 20% of the number of coordinates + */ + lookAhead = (int) Math.floor(n * 0.2d); + } + + if (lookAhead % 2 == 0) { + lookAhead++; + } + if (lookAhead < 3) + return null; + + int halfLookAhead = lookAhead / 2; + if (halfLookAhead > coordinates.length) { + throw new RuntimeException(); + } + + int padding = 0; + if (coordinates[0].distance(coordinates[n - 1]) < DELTA) { + // we have a ring, extend it for smoothing + int tmpN = lookAhead / 2; + if (tmpN > n / 2) { + tmpN = n / 2; + } + padding = tmpN; + Coordinate[] ringCoordinates = new Coordinate[n + 2 * tmpN]; + for( int i = 0; i < tmpN; i++ ) { + ringCoordinates[i] = coordinates[n - (tmpN - i) - 1]; + } + System.arraycopy(coordinates, 0, ringCoordinates, tmpN, n); + int index = 1; + for( int i = ringCoordinates.length - padding; i < ringCoordinates.length; i++ ) { + ringCoordinates[i] = coordinates[index++]; + } + coordinates = ringCoordinates; + } + n = n + 2 * padding; + + for( int j = 0; j < n; j++ ) { + Coordinate tmp = new Coordinate(); + res.add(tmp); + } + + sc = (double) 1.0 / (double) lookAhead; + + Coordinate pCoord = new Coordinate(); + Coordinate sCoord = new Coordinate(); + pointAssign(coordinates, 0, considerZ, pCoord); + for( int i = 1; i < lookAhead; i++ ) { + Coordinate tmpCoord = new Coordinate(); + pointAssign(coordinates, i, considerZ, tmpCoord); + pointAdd(pCoord, tmpCoord, pCoord); + } + + // progressive smooth the first part + // int tmpHalf = 0; + // for( int i = 0; i < halfLookAhead; i++ ) { + // if (i < 1) { + // continue; + // } + // + // tmpHalf = i - 1; + // + // Coordinate tmpCoord = new Coordinate(); + // pointAssign(coordinates, i, considerZ, sCoord); + // pointScalar(sCoord, 1.0 - slide, sCoord); + // pointScalar(pCoord, sc * slide, tmpCoord); + // pointAdd(tmpCoord, sCoord, res.get(i)); + // if (i + tmpHalf + 1 < n) { + // pointAssign(coordinates, i - tmpHalf, considerZ, tmpCoord); + // pointSubtract(pCoord, tmpCoord, pCoord); + // pointAssign(coordinates, i + tmpHalf + 1, considerZ, tmpCoord); + // pointAdd(pCoord, tmpCoord, pCoord); + // } + // } + + /* and calculate the average of remaining points */ + for( int i = halfLookAhead; i + halfLookAhead < n; i++ ) { + Coordinate tmpCoord = new Coordinate(); + pointAssign(coordinates, i, considerZ, sCoord); + pointScalar(sCoord, 1.0 - slide, sCoord); + pointScalar(pCoord, sc * slide, tmpCoord); + pointAdd(tmpCoord, sCoord, res.get(i)); + if (i + halfLookAhead + 1 < n) { + pointAssign(coordinates, i - halfLookAhead, considerZ, tmpCoord); + pointSubtract(pCoord, tmpCoord, pCoord); + pointAssign(coordinates, i + halfLookAhead + 1, considerZ, tmpCoord); + pointAdd(pCoord, tmpCoord, pCoord); + } + } + + // progressive smooth the last part + // tmpHalf = 0; + // for( int i = n - halfLookAhead; i < n - 1; i++ ) { + // + // tmpHalf = n - 1 - i; + // + // Coordinate tmpCoord = new Coordinate(); + // pointAssign(coordinates, i, considerZ, sCoord); + // pointScalar(sCoord, 1.0 - slide, sCoord); + // pointScalar(pCoord, sc * slide, tmpCoord); + // pointAdd(tmpCoord, sCoord, res.get(i)); + // if (i + tmpHalf <= n) { + // pointAssign(coordinates, i - tmpHalf, considerZ, tmpCoord); + // pointSubtract(pCoord, tmpCoord, pCoord); + // pointAssign(coordinates, i + tmpHalf, considerZ, tmpCoord); + // pointAdd(pCoord, tmpCoord, pCoord); + // } + // } + // + // Coordinate c = res.get(0); + // c.x = coordinates[0].x; + // c.y = coordinates[0].y; + // c.z = coordinates[0].z; + // c = res.get(res.size() - 1); + // c.x = coordinates[n - 1].x; + // c.y = coordinates[n - 1].y; + // c.z = coordinates[n - 1].z; + for( int i = 0; i < halfLookAhead; i++ ) { + Coordinate coordinate = res.get(i); + coordinate.x = coordinates[i].x; + coordinate.y = coordinates[i].y; + coordinate.z = coordinates[i].z; + } + for( int i = n - halfLookAhead - 1; i < n; i++ ) { + Coordinate coordinate = res.get(i); + coordinate.x = coordinates[i].x; + coordinate.y = coordinates[i].y; + coordinate.z = coordinates[i].z; + } + // for( i = half; i + half < n; i++ ) { + // coordinates[i].x = res.get(i).x; + // coordinates[i].y = res.get(i).y; + // coordinates[i].z = res.get(i).z; + // } + + // return Points->n_points; + + if (padding != 0) { + res = res.subList(padding, n - padding - 1); + res.add(res.get(0)); + } + + return res; + } + private void pointAssign( Coordinate[] coordinates, int index, boolean considerZ, + Coordinate newAssignedCoordinate ) { + Coordinate coordinate = coordinates[index]; + newAssignedCoordinate.x = coordinate.x; + newAssignedCoordinate.y = coordinate.y; + if (considerZ) { + newAssignedCoordinate.z = coordinate.z; + } else { + newAssignedCoordinate.z = 0; + } + return; + } + + private void pointAdd( Coordinate a, Coordinate b, Coordinate res ) { + res.x = a.x + b.x; + res.y = a.y + b.y; + res.z = a.z + b.z; + } + + private void pointSubtract( Coordinate a, Coordinate b, Coordinate res ) { + res.x = a.x - b.x; + res.y = a.y - b.y; + res.z = a.z - b.z; + } + + private void pointScalar( Coordinate a, double k, Coordinate res ) { + res.x = a.x * k; + res.y = a.y * k; + res.z = a.z * k; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/LineSmootherJaitools.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/LineSmootherJaitools.java index dc4d5de36..71ef2a792 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/LineSmootherJaitools.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/LineSmootherJaitools.java @@ -1,112 +1,112 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.smoothing; - -import java.util.ArrayList; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.jaitools.jts.LineSmoother; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.features.FeatureGeometrySubstitutor; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.feature.simple.SimpleFeature; - -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.MultiLineString; - -@Description("The line smoother from the jaitools project.") -@Documentation("LineSmootherJaitools.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Smoothing, Vector") -@Status(Status.CERTIFIED) -@Label(JGTConstants.VECTORPROCESSING) -@Name("linesmootherjai") -@License("General Public License Version 3 (GPLv3)") -public class LineSmootherJaitools extends JGTModel { - - @Description("The vector containing the lines to be smoothed.") - @In - public SimpleFeatureCollection inVector; - - @Description("A value between 0 and 1 (inclusive) specifying the tightness of fit of the smoothed boundary (0 is loose).") - @In - public double pAlpha = 0; - - @Description("The smoothed features.") - @Out - public SimpleFeatureCollection outVector; - - private GeometryFactory gF = GeometryUtilities.gf(); - - @Execute - public void process() throws Exception { - if (!concatOr(outVector == null, doReset)) { - return; - } - outVector = FeatureCollections.newCollection(); - - int id = 0; - pm.message("Collecting geometries..."); - List linesList = FeatureUtilities.featureCollectionToList(inVector); - int size = inVector.size(); - FeatureGeometrySubstitutor fGS = new FeatureGeometrySubstitutor(inVector.getSchema()); - pm.beginTask("Smoothing features...", size); - LineSmoother smoother = new LineSmoother(gF); - for( SimpleFeature line : linesList ) { - Geometry geometry = (Geometry) line.getDefaultGeometry(); - int numGeometries = geometry.getNumGeometries(); - List smoothedList = new ArrayList(); - for( int i = 0; i < numGeometries; i++ ) { - Geometry geometryN = geometry.getGeometryN(i); - if (geometryN instanceof LineString) { - LineString lineString = (LineString) geometryN; - LineString smoothed = smoother.smooth(lineString, pAlpha); - smoothedList.add(smoothed); - } - } - if (smoothedList.size() != 0) { - LineString[] lsArray = (LineString[]) smoothedList.toArray(new LineString[smoothedList.size()]); - MultiLineString multiLineString = gF.createMultiLineString(lsArray); - SimpleFeature newFeature = fGS.substituteGeometry(line, multiLineString); - outVector.add(newFeature); - id++; - } - pm.worked(1); - } - pm.done(); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.smoothing; + +import java.util.ArrayList; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.jaitools.jts.LineSmoother; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.features.FeatureGeometrySubstitutor; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiLineString; + +@Description("The line smoother from the jaitools project.") +@Documentation("LineSmootherJaitools.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Smoothing, Vector") +@Status(Status.CERTIFIED) +@Label(JGTConstants.VECTORPROCESSING) +@Name("linesmootherjai") +@License("General Public License Version 3 (GPLv3)") +public class LineSmootherJaitools extends JGTModel { + + @Description("The vector containing the lines to be smoothed.") + @In + public SimpleFeatureCollection inVector; + + @Description("A value between 0 and 1 (inclusive) specifying the tightness of fit of the smoothed boundary (0 is loose).") + @In + public double pAlpha = 0; + + @Description("The smoothed features.") + @Out + public SimpleFeatureCollection outVector; + + private GeometryFactory gF = GeometryUtilities.gf(); + + @Execute + public void process() throws Exception { + if (!concatOr(outVector == null, doReset)) { + return; + } + outVector = FeatureCollections.newCollection(); + + int id = 0; + pm.message("Collecting geometries..."); + List linesList = FeatureUtilities.featureCollectionToList(inVector); + int size = inVector.size(); + FeatureGeometrySubstitutor fGS = new FeatureGeometrySubstitutor(inVector.getSchema()); + pm.beginTask("Smoothing features...", size); + LineSmoother smoother = new LineSmoother(gF); + for( SimpleFeature line : linesList ) { + Geometry geometry = (Geometry) line.getDefaultGeometry(); + int numGeometries = geometry.getNumGeometries(); + List smoothedList = new ArrayList(); + for( int i = 0; i < numGeometries; i++ ) { + Geometry geometryN = geometry.getGeometryN(i); + if (geometryN instanceof LineString) { + LineString lineString = (LineString) geometryN; + LineString smoothed = smoother.smooth(lineString, pAlpha); + smoothedList.add(smoothed); + } + } + if (smoothedList.size() != 0) { + LineString[] lsArray = (LineString[]) smoothedList.toArray(new LineString[smoothedList.size()]); + MultiLineString multiLineString = gF.createMultiLineString(lsArray); + SimpleFeature newFeature = fGS.substituteGeometry(line, multiLineString); + outVector.add(newFeature); + id++; + } + pm.worked(1); + } + pm.done(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/LineSmootherMcMaster.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/LineSmootherMcMaster.java index ed8bb535f..39162095a 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/LineSmootherMcMaster.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/smoothing/LineSmootherMcMaster.java @@ -1,250 +1,250 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.smoothing; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.jgrasstools.gears.io.shapefile.ShapefileFeatureReader; -import org.jgrasstools.gears.io.shapefile.ShapefileFeatureWriter; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; -import org.jgrasstools.gears.utils.features.FeatureGeometrySubstitutor; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.feature.simple.SimpleFeature; - -import com.vividsolutions.jts.densify.Densifier; -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.MultiLineString; -import com.vividsolutions.jts.simplify.TopologyPreservingSimplifier; - -@Description("The McMasters Sliding Averaging smoothing algorithm.") -@Documentation("LineSmootherMcMaster.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Smoothing, Vector, LineSmootherJaitools") -@Status(Status.CERTIFIED) -@Label(JGTConstants.VECTORPROCESSING) -@Name("linesmoother") -@License("General Public License Version 3 (GPLv3)") -public class LineSmootherMcMaster extends JGTModel { - - @Description("The vector containing the lines to be smoothed.") - @In - public SimpleFeatureCollection inVector; - - @Description("The number of points to consider in every smoothing step (default = 7).") - @In - public int pLookahead = 7; - - @Description("Minimum length for a line to be smoothed.") - @In - public int pLimit = 0; - - @Description("Slide parameter.") - @In - public double pSlide = 0.9; - - @Description("Densifier interval.") - @In - public Double pDensify = null; - - @Description("Simplifier tollerance.") - @In - public Double pSimplify = null; - - @Description("The vector with smoothed features.") - @Out - public SimpleFeatureCollection outVector; - - private static final double SAMEPOINTTHRESHOLD = 0.1; - private GeometryFactory gF = GeometryUtilities.gf(); - - private double densify = -1; - private double simplify = -1; - - private List linesList; - - @Execute - public void process() throws Exception { - if (!concatOr(outVector == null, doReset)) { - return; - } - - if (pDensify != null) { - densify = pDensify; - } - if (pSimplify != null) { - simplify = pSimplify; - } - - outVector = FeatureCollections.newCollection(); - - int id = 0; - pm.message("Collecting geometries..."); - linesList = FeatureUtilities.featureCollectionToList(inVector); - int size = inVector.size(); - FeatureGeometrySubstitutor fGS = new FeatureGeometrySubstitutor(inVector.getSchema()); - pm.beginTask("Smoothing features...", size); - for( SimpleFeature line : linesList ) { - Geometry geometry = (Geometry) line.getDefaultGeometry(); - List lsList = smoothGeometries(geometry); - if (lsList.size() != 0) { - LineString[] lsArray = (LineString[]) lsList.toArray(new LineString[lsList.size()]); - MultiLineString multiLineString = gF.createMultiLineString(lsArray); - SimpleFeature newFeature = fGS.substituteGeometry(line, multiLineString); - outVector.add(newFeature); - id++; - } - pm.worked(1); - } - pm.done(); - } - - private List smoothGeometries( Geometry geometry ) { - List lsList = new ArrayList(); - int numGeometries = geometry.getNumGeometries(); - for( int i = 0; i < numGeometries; i++ ) { - Geometry geometryN = geometry.getGeometryN(i); - double length = geometryN.getLength(); - Coordinate[] smoothedArray = geometryN.getCoordinates(); - Coordinate first = smoothedArray[0]; - Coordinate last = smoothedArray[smoothedArray.length - 1]; - if (length <= pLimit) { - // if it is circle remove it, else just do not smooth it - if (first.distance(last) < SAMEPOINTTHRESHOLD) { - continue; - } - // check if the line is an error lying around somewhere - if (isAlone(geometryN)) { - continue; - } - } else { - if (densify != -1) { - geometryN = Densifier.densify(geometryN, pDensify); - } - List smoothedCoords = Collections.emptyList();; - FeatureSlidingAverage fSA = new FeatureSlidingAverage(geometryN); - smoothedCoords = fSA.smooth(pLookahead, false, pSlide); - - if (smoothedCoords != null) { - smoothedArray = (Coordinate[]) smoothedCoords.toArray(new Coordinate[smoothedCoords.size()]); - } else { - smoothedArray = geometryN.getCoordinates(); - } - } - - LineString lineString = gF.createLineString(smoothedArray); - - if (simplify != -1) { - TopologyPreservingSimplifier tpSimplifier = new TopologyPreservingSimplifier(lineString); - tpSimplifier.setDistanceTolerance(pSimplify); - lineString = (LineString) tpSimplifier.getResultGeometry(); - } - - lsList.add(lineString); - } - return lsList; - } - - /** - * Checks if the given geometry is connected to any other line. - * - * @param geometryN the geometry to test. - * @return true if the geometry is alone in the space, i.e. not connected at - * one of the ends to any other geometry. - */ - private boolean isAlone( Geometry geometryN ) { - Coordinate[] coordinates = geometryN.getCoordinates(); - if (coordinates.length > 1) { - Coordinate first = coordinates[0]; - Coordinate last = coordinates[coordinates.length - 1]; - for( SimpleFeature line : linesList ) { - Geometry lineGeom = (Geometry) line.getDefaultGeometry(); - int numGeometries = lineGeom.getNumGeometries(); - for( int i = 0; i < numGeometries; i++ ) { - Geometry subGeom = lineGeom.getGeometryN(i); - Coordinate[] lineCoordinates = subGeom.getCoordinates(); - if (lineCoordinates.length < 2) { - continue; - } else { - Coordinate tmpFirst = lineCoordinates[0]; - Coordinate tmpLast = lineCoordinates[lineCoordinates.length - 1]; - if (tmpFirst.distance(first) < SAMEPOINTTHRESHOLD || tmpFirst.distance(last) < SAMEPOINTTHRESHOLD - || tmpLast.distance(first) < SAMEPOINTTHRESHOLD || tmpLast.distance(last) < SAMEPOINTTHRESHOLD) { - return false; - } - } - } - } - } - // 1 point line or no connection, mark it as alone for removal - return true; - } - - /** - * An utility method to use the module with default values and shapefiles. - * - *

                - * This will use the windowed average and a density of 0.2, simplification threshold of 0.1 - * and a lookahead of 13, as well as a length filter of 10. - *

                - * - * @param shapePath the input file. - * @param outPath the output smoothed path. - * @throws Exception - */ - public static void defaultSmoothShapefile( String shapePath, String outPath ) throws Exception { - PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); - SimpleFeatureCollection initialFC = ShapefileFeatureReader.readShapefile(shapePath); - - LineSmootherMcMaster smoother = new LineSmootherMcMaster(); - smoother.pm = pm; - smoother.pLimit = 10; - smoother.inVector = initialFC; - smoother.pLookahead = 13; - // smoother.pSlide = 1; - smoother.pDensify = 0.2; - smoother.pSimplify = 0.01; - smoother.process(); - - SimpleFeatureCollection smoothedFeatures = smoother.outVector; - - ShapefileFeatureWriter.writeShapefile(outPath, smoothedFeatures); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.smoothing; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.jgrasstools.gears.io.shapefile.ShapefileFeatureReader; +import org.jgrasstools.gears.io.shapefile.ShapefileFeatureWriter; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; +import org.jgrasstools.gears.utils.features.FeatureGeometrySubstitutor; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.densify.Densifier; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiLineString; +import com.vividsolutions.jts.simplify.TopologyPreservingSimplifier; + +@Description("The McMasters Sliding Averaging smoothing algorithm.") +@Documentation("LineSmootherMcMaster.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Smoothing, Vector, LineSmootherJaitools") +@Status(Status.CERTIFIED) +@Label(JGTConstants.VECTORPROCESSING) +@Name("linesmoother") +@License("General Public License Version 3 (GPLv3)") +public class LineSmootherMcMaster extends JGTModel { + + @Description("The vector containing the lines to be smoothed.") + @In + public SimpleFeatureCollection inVector; + + @Description("The number of points to consider in every smoothing step (default = 7).") + @In + public int pLookahead = 7; + + @Description("Minimum length for a line to be smoothed.") + @In + public int pLimit = 0; + + @Description("Slide parameter.") + @In + public double pSlide = 0.9; + + @Description("Densifier interval.") + @In + public Double pDensify = null; + + @Description("Simplifier tollerance.") + @In + public Double pSimplify = null; + + @Description("The vector with smoothed features.") + @Out + public SimpleFeatureCollection outVector; + + private static final double SAMEPOINTTHRESHOLD = 0.1; + private GeometryFactory gF = GeometryUtilities.gf(); + + private double densify = -1; + private double simplify = -1; + + private List linesList; + + @Execute + public void process() throws Exception { + if (!concatOr(outVector == null, doReset)) { + return; + } + + if (pDensify != null) { + densify = pDensify; + } + if (pSimplify != null) { + simplify = pSimplify; + } + + outVector = FeatureCollections.newCollection(); + + int id = 0; + pm.message("Collecting geometries..."); + linesList = FeatureUtilities.featureCollectionToList(inVector); + int size = inVector.size(); + FeatureGeometrySubstitutor fGS = new FeatureGeometrySubstitutor(inVector.getSchema()); + pm.beginTask("Smoothing features...", size); + for( SimpleFeature line : linesList ) { + Geometry geometry = (Geometry) line.getDefaultGeometry(); + List lsList = smoothGeometries(geometry); + if (lsList.size() != 0) { + LineString[] lsArray = (LineString[]) lsList.toArray(new LineString[lsList.size()]); + MultiLineString multiLineString = gF.createMultiLineString(lsArray); + SimpleFeature newFeature = fGS.substituteGeometry(line, multiLineString); + outVector.add(newFeature); + id++; + } + pm.worked(1); + } + pm.done(); + } + + private List smoothGeometries( Geometry geometry ) { + List lsList = new ArrayList(); + int numGeometries = geometry.getNumGeometries(); + for( int i = 0; i < numGeometries; i++ ) { + Geometry geometryN = geometry.getGeometryN(i); + double length = geometryN.getLength(); + Coordinate[] smoothedArray = geometryN.getCoordinates(); + Coordinate first = smoothedArray[0]; + Coordinate last = smoothedArray[smoothedArray.length - 1]; + if (length <= pLimit) { + // if it is circle remove it, else just do not smooth it + if (first.distance(last) < SAMEPOINTTHRESHOLD) { + continue; + } + // check if the line is an error lying around somewhere + if (isAlone(geometryN)) { + continue; + } + } else { + if (densify != -1) { + geometryN = Densifier.densify(geometryN, pDensify); + } + List smoothedCoords = Collections.emptyList();; + FeatureSlidingAverage fSA = new FeatureSlidingAverage(geometryN); + smoothedCoords = fSA.smooth(pLookahead, false, pSlide); + + if (smoothedCoords != null) { + smoothedArray = (Coordinate[]) smoothedCoords.toArray(new Coordinate[smoothedCoords.size()]); + } else { + smoothedArray = geometryN.getCoordinates(); + } + } + + LineString lineString = gF.createLineString(smoothedArray); + + if (simplify != -1) { + TopologyPreservingSimplifier tpSimplifier = new TopologyPreservingSimplifier(lineString); + tpSimplifier.setDistanceTolerance(pSimplify); + lineString = (LineString) tpSimplifier.getResultGeometry(); + } + + lsList.add(lineString); + } + return lsList; + } + + /** + * Checks if the given geometry is connected to any other line. + * + * @param geometryN the geometry to test. + * @return true if the geometry is alone in the space, i.e. not connected at + * one of the ends to any other geometry. + */ + private boolean isAlone( Geometry geometryN ) { + Coordinate[] coordinates = geometryN.getCoordinates(); + if (coordinates.length > 1) { + Coordinate first = coordinates[0]; + Coordinate last = coordinates[coordinates.length - 1]; + for( SimpleFeature line : linesList ) { + Geometry lineGeom = (Geometry) line.getDefaultGeometry(); + int numGeometries = lineGeom.getNumGeometries(); + for( int i = 0; i < numGeometries; i++ ) { + Geometry subGeom = lineGeom.getGeometryN(i); + Coordinate[] lineCoordinates = subGeom.getCoordinates(); + if (lineCoordinates.length < 2) { + continue; + } else { + Coordinate tmpFirst = lineCoordinates[0]; + Coordinate tmpLast = lineCoordinates[lineCoordinates.length - 1]; + if (tmpFirst.distance(first) < SAMEPOINTTHRESHOLD || tmpFirst.distance(last) < SAMEPOINTTHRESHOLD + || tmpLast.distance(first) < SAMEPOINTTHRESHOLD || tmpLast.distance(last) < SAMEPOINTTHRESHOLD) { + return false; + } + } + } + } + } + // 1 point line or no connection, mark it as alone for removal + return true; + } + + /** + * An utility method to use the module with default values and shapefiles. + * + *

                + * This will use the windowed average and a density of 0.2, simplification threshold of 0.1 + * and a lookahead of 13, as well as a length filter of 10. + *

                + * + * @param shapePath the input file. + * @param outPath the output smoothed path. + * @throws Exception + */ + public static void defaultSmoothShapefile( String shapePath, String outPath ) throws Exception { + PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); + SimpleFeatureCollection initialFC = ShapefileFeatureReader.readShapefile(shapePath); + + LineSmootherMcMaster smoother = new LineSmootherMcMaster(); + smoother.pm = pm; + smoother.pLimit = 10; + smoother.inVector = initialFC; + smoother.pLookahead = 13; + // smoother.pSlide = 1; + smoother.pDensify = 0.2; + smoother.pSimplify = 0.01; + smoother.process(); + + SimpleFeatureCollection smoothedFeatures = smoother.outVector; + + ShapefileFeatureWriter.writeShapefile(outPath, smoothedFeatures); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/sourcesdirection/SourcesDirectionCalculator.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/sourcesdirection/SourcesDirectionCalculator.java index 74d141bf7..d5358f091 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/sourcesdirection/SourcesDirectionCalculator.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/sourcesdirection/SourcesDirectionCalculator.java @@ -1,270 +1,270 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.sourcesdirection; - -import static java.lang.Double.NaN; -import static java.lang.Math.sqrt; -import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.gridToWorld; - -import java.awt.geom.AffineTransform; -import java.awt.geom.Point2D; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoordinates2D; -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridEnvelope2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.coverage.processing.Operations; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.geotools.geometry.DirectPosition2D; -import org.geotools.geometry.Envelope2D; -import org.geotools.referencing.operation.matrix.XAffineTransform; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.features.FeatureExtender; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.jgrasstools.gears.utils.sorting.QuickSortAlgorithmObjects; -import org.opengis.feature.simple.SimpleFeature; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; - -@Description("Calculates the direction of maximum slope for a source point on a dem.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("Raster, Vector") -@Status(Status.DRAFT) -@Label(JGTConstants.VECTORPROCESSING) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class SourcesDirectionCalculator extends JGTModel { - - @Description("The source point features.") - @In - public SimpleFeatureCollection inSources; - - @Description("Resolution to use.") - @In - public double pRes = NaN; - - @Description("The input coverage.") - @In - public GridCoverage2D inCoverage = null; - - @Description("The source point features with the added azimuth angle.") - @Out - public SimpleFeatureCollection outSources; - - @Execute - public void process() throws Exception { - if (!concatOr(outSources == null, doReset)) { - return; - } - - FeatureIterator inFeatureIterator = inSources.features(); - - outSources = FeatureCollections.newCollection(); - - FeatureExtender fExt = new FeatureExtender(inSources.getSchema(), new String[]{"azimuth", - "availpixels", "c11", "c12", "c13", "c21", "c22", "c23", "c31", "c32", "c33"}, - new Class< ? >[]{Double.class, Integer.class, Double.class, Double.class, - Double.class, Double.class, Double.class, Double.class, Double.class, - Double.class, Double.class}); - - // resample dem to required resolution - double[] res = resFromCoverage(inCoverage); - if (res[0] != pRes) { - double scaleX = res[0] / pRes; - double scaleY = res[1] / pRes; - System.out.println(res[0] + "/" + res[1] + "/" + scaleX + "/" + scaleY); - inCoverage = (GridCoverage2D) Operations.DEFAULT.subsampleAverage(inCoverage, - scaleX, scaleY); - } - Envelope2D env = inCoverage.getEnvelope2D(); - GridGeometry2D gridGeometry = inCoverage.getGridGeometry(); - - int size = inSources.size(); - pm.beginTask("Extracting azimuth...", size); - while( inFeatureIterator.hasNext() ) { - pm.worked(1); - SimpleFeature feature = inFeatureIterator.next(); - - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - Coordinate coordinate = geometry.getCoordinate(); - - if (!env.contains(coordinate.x, coordinate.y)) { - continue; - } - // source is in this dem, process it - - GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); - int cols = gridRange.width; - int rows = gridRange.height; - - GridCoordinates2D centerGC = gridGeometry.worldToGrid(new DirectPosition2D( - coordinate.x, coordinate.y)); - - /* - * c11 | c12 | c13 - * --------------- - * c21 | cen | c23 - * --------------- - * c31 | c32 | c33 - * - * where c23 = row 2, col 3 - */ - GridCoordinates2D c11 = new GridCoordinates2D(centerGC.x - 1, centerGC.y - 1); - GridCoordinates2D c12 = new GridCoordinates2D(centerGC.x, centerGC.y - 1); - GridCoordinates2D c13 = new GridCoordinates2D(centerGC.x + 1, centerGC.y - 1); - - GridCoordinates2D c21 = new GridCoordinates2D(centerGC.x - 1, centerGC.y); - GridCoordinates2D c23 = new GridCoordinates2D(centerGC.x + 1, centerGC.y); - - GridCoordinates2D c31 = new GridCoordinates2D(centerGC.x - 1, centerGC.y + 1); - GridCoordinates2D c32 = new GridCoordinates2D(centerGC.x, centerGC.y + 1); - GridCoordinates2D c33 = new GridCoordinates2D(centerGC.x + 1, centerGC.y + 1); - - double[] center = inCoverage.evaluate((GridCoordinates2D) centerGC, (double[]) null); - double dz11 = -10000; - double dz12 = -10000; - double dz13 = -10000; - double dz21 = -10000; - double dz23 = -10000; - double dz31 = -10000; - double dz32 = -10000; - double dz33 = -10000; - - int pixelNum = 0; - boolean oneIsNull = false; - double[] v11 = getPixelValue(inCoverage, cols, rows, c11); - if (v11 != null) { - pixelNum++; - dz11 = (center[0] - v11[0]) / sqrt(2); - } else { - oneIsNull = true; - } - double[] v12 = getPixelValue(inCoverage, cols, rows, c12); - if (v12 != null) { - pixelNum++; - dz12 = (center[0] - v12[0]); - } else { - oneIsNull = true; - } - double[] v13 = getPixelValue(inCoverage, cols, rows, c13); - if (v13 != null) { - pixelNum++; - dz13 = (center[0] - v13[0]) / sqrt(2); - } else { - oneIsNull = true; - } - double[] v21 = getPixelValue(inCoverage, cols, rows, c21); - if (v21 != null) { - pixelNum++; - dz21 = (center[0] - v21[0]); - } else { - oneIsNull = true; - } - double[] v23 = getPixelValue(inCoverage, cols, rows, c23); - if (v23 != null) { - pixelNum++; - dz23 = (center[0] - v23[0]); - } else { - oneIsNull = true; - } - double[] v31 = getPixelValue(inCoverage, cols, rows, c31); - if (v31 != null) { - pixelNum++; - dz31 = (center[0] - v31[0]) / sqrt(2); - } else { - oneIsNull = true; - } - double[] v32 = getPixelValue(inCoverage, cols, rows, c32); - if (v32 != null) { - pixelNum++; - dz32 = (center[0] - v32[0]); - } else { - oneIsNull = true; - } - double[] v33 = getPixelValue(inCoverage, cols, rows, c33); - if (v33 != null) { - pixelNum++; - dz33 = (center[0] - v33[0]) / sqrt(2); - } else { - oneIsNull = true; - } - - GridCoordinates2D[] cArray = new GridCoordinates2D[]{c31, c32, c33, c21, c23, c11, c12, - c13}; - double[] tArray = new double[]{dz31, dz32, dz33, dz21, dz23, dz11, dz12, dz13}; - - QuickSortAlgorithmObjects qSobj = new QuickSortAlgorithmObjects(null); - qSobj.sort(tArray, cArray); - - GridCoordinates2D steepestCoord = cArray[cArray.length - 1]; - - Point2D steepestWorldCoord = gridToWorld(gridGeometry, steepestCoord.x, steepestCoord.y); - double[] c = new double[]{steepestWorldCoord.getX(), steepestWorldCoord.getY()}; - Point2D centerCoordOnGrid = gridToWorld(gridGeometry, centerGC.x, centerGC.y); - double[] cent = new double[]{centerCoordOnGrid.getX(), centerCoordOnGrid.getY()}; - - double azimuth = -9999.0; - if (!oneIsNull) { - azimuth = GeometryUtilities.azimuth(new Coordinate(cent[0], cent[1]), - new Coordinate(c[0], c[1])); - } - - SimpleFeature azimuthFeature = fExt.extendFeature(feature, new Object[]{azimuth, - pixelNum, getValue(v11), getValue(v12), getValue(v13), getValue(v21), - getValue(center), getValue(v23), getValue(v31), getValue(v32), getValue(v33)}); - outSources.add(azimuthFeature); - - } - pm.done(); - } - - private double getValue( double[] array ) { - return array != null ? array[0] : -9999.0; - } - - private double[] getPixelValue( GridCoverage2D dem, int cols, int rows, - GridCoordinates2D gridCoordinate ) { - if (gridCoordinate.x >= 0 && gridCoordinate.x < cols && gridCoordinate.y >= 0 - && gridCoordinate.y < rows) { - double[] value = dem.evaluate((GridCoordinates2D) gridCoordinate, (double[]) null); - return value; - } - return null; - } - - private double[] resFromCoverage( GridCoverage2D dem ) { - GridGeometry2D gridGeometry = dem.getGridGeometry(); - AffineTransform gridToCRS = (AffineTransform) gridGeometry.getGridToCRS(); - double[] res = new double[]{XAffineTransform.getScaleX0(gridToCRS), - XAffineTransform.getScaleY0(gridToCRS)}; - return res; - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.sourcesdirection; + +import static java.lang.Double.NaN; +import static java.lang.Math.sqrt; +import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.gridToWorld; + +import java.awt.geom.AffineTransform; +import java.awt.geom.Point2D; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoordinates2D; +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridEnvelope2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.coverage.processing.Operations; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.geotools.geometry.DirectPosition2D; +import org.geotools.geometry.Envelope2D; +import org.geotools.referencing.operation.matrix.XAffineTransform; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.features.FeatureExtender; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.jgrasstools.gears.utils.sorting.QuickSortAlgorithmObjects; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; + +@Description("Calculates the direction of maximum slope for a source point on a dem.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("Raster, Vector") +@Status(Status.DRAFT) +@Label(JGTConstants.VECTORPROCESSING) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class SourcesDirectionCalculator extends JGTModel { + + @Description("The source point features.") + @In + public SimpleFeatureCollection inSources; + + @Description("Resolution to use.") + @In + public double pRes = NaN; + + @Description("The input coverage.") + @In + public GridCoverage2D inCoverage = null; + + @Description("The source point features with the added azimuth angle.") + @Out + public SimpleFeatureCollection outSources; + + @Execute + public void process() throws Exception { + if (!concatOr(outSources == null, doReset)) { + return; + } + + FeatureIterator inFeatureIterator = inSources.features(); + + outSources = FeatureCollections.newCollection(); + + FeatureExtender fExt = new FeatureExtender(inSources.getSchema(), new String[]{"azimuth", + "availpixels", "c11", "c12", "c13", "c21", "c22", "c23", "c31", "c32", "c33"}, + new Class< ? >[]{Double.class, Integer.class, Double.class, Double.class, + Double.class, Double.class, Double.class, Double.class, Double.class, + Double.class, Double.class}); + + // resample dem to required resolution + double[] res = resFromCoverage(inCoverage); + if (res[0] != pRes) { + double scaleX = res[0] / pRes; + double scaleY = res[1] / pRes; + System.out.println(res[0] + "/" + res[1] + "/" + scaleX + "/" + scaleY); + inCoverage = (GridCoverage2D) Operations.DEFAULT.subsampleAverage(inCoverage, + scaleX, scaleY); + } + Envelope2D env = inCoverage.getEnvelope2D(); + GridGeometry2D gridGeometry = inCoverage.getGridGeometry(); + + int size = inSources.size(); + pm.beginTask("Extracting azimuth...", size); + while( inFeatureIterator.hasNext() ) { + pm.worked(1); + SimpleFeature feature = inFeatureIterator.next(); + + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + Coordinate coordinate = geometry.getCoordinate(); + + if (!env.contains(coordinate.x, coordinate.y)) { + continue; + } + // source is in this dem, process it + + GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); + int cols = gridRange.width; + int rows = gridRange.height; + + GridCoordinates2D centerGC = gridGeometry.worldToGrid(new DirectPosition2D( + coordinate.x, coordinate.y)); + + /* + * c11 | c12 | c13 + * --------------- + * c21 | cen | c23 + * --------------- + * c31 | c32 | c33 + * + * where c23 = row 2, col 3 + */ + GridCoordinates2D c11 = new GridCoordinates2D(centerGC.x - 1, centerGC.y - 1); + GridCoordinates2D c12 = new GridCoordinates2D(centerGC.x, centerGC.y - 1); + GridCoordinates2D c13 = new GridCoordinates2D(centerGC.x + 1, centerGC.y - 1); + + GridCoordinates2D c21 = new GridCoordinates2D(centerGC.x - 1, centerGC.y); + GridCoordinates2D c23 = new GridCoordinates2D(centerGC.x + 1, centerGC.y); + + GridCoordinates2D c31 = new GridCoordinates2D(centerGC.x - 1, centerGC.y + 1); + GridCoordinates2D c32 = new GridCoordinates2D(centerGC.x, centerGC.y + 1); + GridCoordinates2D c33 = new GridCoordinates2D(centerGC.x + 1, centerGC.y + 1); + + double[] center = inCoverage.evaluate((GridCoordinates2D) centerGC, (double[]) null); + double dz11 = -10000; + double dz12 = -10000; + double dz13 = -10000; + double dz21 = -10000; + double dz23 = -10000; + double dz31 = -10000; + double dz32 = -10000; + double dz33 = -10000; + + int pixelNum = 0; + boolean oneIsNull = false; + double[] v11 = getPixelValue(inCoverage, cols, rows, c11); + if (v11 != null) { + pixelNum++; + dz11 = (center[0] - v11[0]) / sqrt(2); + } else { + oneIsNull = true; + } + double[] v12 = getPixelValue(inCoverage, cols, rows, c12); + if (v12 != null) { + pixelNum++; + dz12 = (center[0] - v12[0]); + } else { + oneIsNull = true; + } + double[] v13 = getPixelValue(inCoverage, cols, rows, c13); + if (v13 != null) { + pixelNum++; + dz13 = (center[0] - v13[0]) / sqrt(2); + } else { + oneIsNull = true; + } + double[] v21 = getPixelValue(inCoverage, cols, rows, c21); + if (v21 != null) { + pixelNum++; + dz21 = (center[0] - v21[0]); + } else { + oneIsNull = true; + } + double[] v23 = getPixelValue(inCoverage, cols, rows, c23); + if (v23 != null) { + pixelNum++; + dz23 = (center[0] - v23[0]); + } else { + oneIsNull = true; + } + double[] v31 = getPixelValue(inCoverage, cols, rows, c31); + if (v31 != null) { + pixelNum++; + dz31 = (center[0] - v31[0]) / sqrt(2); + } else { + oneIsNull = true; + } + double[] v32 = getPixelValue(inCoverage, cols, rows, c32); + if (v32 != null) { + pixelNum++; + dz32 = (center[0] - v32[0]); + } else { + oneIsNull = true; + } + double[] v33 = getPixelValue(inCoverage, cols, rows, c33); + if (v33 != null) { + pixelNum++; + dz33 = (center[0] - v33[0]) / sqrt(2); + } else { + oneIsNull = true; + } + + GridCoordinates2D[] cArray = new GridCoordinates2D[]{c31, c32, c33, c21, c23, c11, c12, + c13}; + double[] tArray = new double[]{dz31, dz32, dz33, dz21, dz23, dz11, dz12, dz13}; + + QuickSortAlgorithmObjects qSobj = new QuickSortAlgorithmObjects(null); + qSobj.sort(tArray, cArray); + + GridCoordinates2D steepestCoord = cArray[cArray.length - 1]; + + Point2D steepestWorldCoord = gridToWorld(gridGeometry, steepestCoord.x, steepestCoord.y); + double[] c = new double[]{steepestWorldCoord.getX(), steepestWorldCoord.getY()}; + Point2D centerCoordOnGrid = gridToWorld(gridGeometry, centerGC.x, centerGC.y); + double[] cent = new double[]{centerCoordOnGrid.getX(), centerCoordOnGrid.getY()}; + + double azimuth = -9999.0; + if (!oneIsNull) { + azimuth = GeometryUtilities.azimuth(new Coordinate(cent[0], cent[1]), + new Coordinate(c[0], c[1])); + } + + SimpleFeature azimuthFeature = fExt.extendFeature(feature, new Object[]{azimuth, + pixelNum, getValue(v11), getValue(v12), getValue(v13), getValue(v21), + getValue(center), getValue(v23), getValue(v31), getValue(v32), getValue(v33)}); + outSources.add(azimuthFeature); + + } + pm.done(); + } + + private double getValue( double[] array ) { + return array != null ? array[0] : -9999.0; + } + + private double[] getPixelValue( GridCoverage2D dem, int cols, int rows, + GridCoordinates2D gridCoordinate ) { + if (gridCoordinate.x >= 0 && gridCoordinate.x < cols && gridCoordinate.y >= 0 + && gridCoordinate.y < rows) { + double[] value = dem.evaluate((GridCoordinates2D) gridCoordinate, (double[]) null); + return value; + } + return null; + } + + private double[] resFromCoverage( GridCoverage2D dem ) { + GridGeometry2D gridGeometry = dem.getGridGeometry(); + AffineTransform gridToCRS = (AffineTransform) gridGeometry.getGridToCRS(); + double[] res = new double[]{XAffineTransform.getScaleX0(gridToCRS), + XAffineTransform.getScaleY0(gridToCRS)}; + return res; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/DwgConverter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/DwgConverter.java index 179c57ac8..9cce5208f 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/DwgConverter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/DwgConverter.java @@ -1,130 +1,130 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.vectorconverter; - -import java.io.File; -import java.io.FileInputStream; -import java.nio.channels.FileChannel; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.PrjFileReader; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.referencing.CRS; -import org.jgrasstools.gears.io.dxfdwg.libs.DwgHandler; -import org.jgrasstools.gears.io.dxfdwg.libs.DwgReader; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.files.FileUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -@Description("Module to convert dxf files to geotools vecotors.") -@Documentation("DwgConverter.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, DxfConverter, Feature, Vector, Reading") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.EXPERIMENTAL) -@Name("dwgimport") -@License("General Public License Version 3 (GPLv3)") -public class DwgConverter extends JGTModel { - @Description("The dwg input file.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328). Applied in the case the file is missing.") - @UI(JGTConstants.CRS_UI_HINT) - @In - public String pCode; - - @Description("The output point vector.") - @Out - public SimpleFeatureCollection pointsVector = null; - - @Description("The output line vector.") - @Out - public SimpleFeatureCollection lineVector = null; - - @Description("The output polygon vector.") - @Out - public SimpleFeatureCollection polygonVector = null; - - @Description("The output text vector.") - @Out - public SimpleFeatureCollection textVector; - - @Description("The output attributes vector.") - @Out - public SimpleFeatureCollection attributesVector; - - @Description("The output contour vector.") - @Out - public SimpleFeatureCollection contourVector; - - private CoordinateReferenceSystem crs; - - @Execute - public void readFeatureCollection() throws Exception { - if (!concatOr(pointsVector == null, lineVector == null, polygonVector == null, doReset)) { - return; - } - - File dwgFile = new File(file); - File parentFolder = dwgFile.getParentFile(); - String nameWithoutExtention = FileUtilities.getNameWithoutExtention(dwgFile); - File prjFile = new File(parentFolder, nameWithoutExtention + ".prj"); - if (prjFile.exists()) { - FileInputStream instream = new FileInputStream(prjFile); - final FileChannel channel = instream.getChannel(); - PrjFileReader reader = new PrjFileReader(channel); - crs = reader.getCoordinateReferenceSystem(); - } - if (crs == null) { - if (pCode != null) { - crs = CRS.decode(pCode); - } else { - throw new ModelsIllegalargumentException("Please specify the CRS for the imported DWG file.", this); - } - } - - DwgHandler dataHandler = new DwgHandler(dwgFile, crs); - dataHandler.getLayerTypes(); - DwgReader dwgReader = dataHandler.getDwgReader(); - - textVector = dwgReader.getTextFeatures(); - attributesVector = dwgReader.getAttributesFeatures(); - contourVector = dwgReader.getContourFeatures(); - pointsVector = dwgReader.getMultiPointFeatures(); - lineVector = dwgReader.getMultiLineFeatures(); - polygonVector = dwgReader.getMultiPolygonFeatures(); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.vectorconverter; + +import java.io.File; +import java.io.FileInputStream; +import java.nio.channels.FileChannel; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.PrjFileReader; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.referencing.CRS; +import org.jgrasstools.gears.io.dxfdwg.libs.DwgHandler; +import org.jgrasstools.gears.io.dxfdwg.libs.DwgReader; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.files.FileUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +@Description("Module to convert dxf files to geotools vecotors.") +@Documentation("DwgConverter.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, DxfConverter, Feature, Vector, Reading") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.EXPERIMENTAL) +@Name("dwgimport") +@License("General Public License Version 3 (GPLv3)") +public class DwgConverter extends JGTModel { + @Description("The dwg input file.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328). Applied in the case the file is missing.") + @UI(JGTConstants.CRS_UI_HINT) + @In + public String pCode; + + @Description("The output point vector.") + @Out + public SimpleFeatureCollection pointsVector = null; + + @Description("The output line vector.") + @Out + public SimpleFeatureCollection lineVector = null; + + @Description("The output polygon vector.") + @Out + public SimpleFeatureCollection polygonVector = null; + + @Description("The output text vector.") + @Out + public SimpleFeatureCollection textVector; + + @Description("The output attributes vector.") + @Out + public SimpleFeatureCollection attributesVector; + + @Description("The output contour vector.") + @Out + public SimpleFeatureCollection contourVector; + + private CoordinateReferenceSystem crs; + + @Execute + public void readFeatureCollection() throws Exception { + if (!concatOr(pointsVector == null, lineVector == null, polygonVector == null, doReset)) { + return; + } + + File dwgFile = new File(file); + File parentFolder = dwgFile.getParentFile(); + String nameWithoutExtention = FileUtilities.getNameWithoutExtention(dwgFile); + File prjFile = new File(parentFolder, nameWithoutExtention + ".prj"); + if (prjFile.exists()) { + FileInputStream instream = new FileInputStream(prjFile); + final FileChannel channel = instream.getChannel(); + PrjFileReader reader = new PrjFileReader(channel); + crs = reader.getCoordinateReferenceSystem(); + } + if (crs == null) { + if (pCode != null) { + crs = CRS.decode(pCode); + } else { + throw new ModelsIllegalargumentException("Please specify the CRS for the imported DWG file.", this); + } + } + + DwgHandler dataHandler = new DwgHandler(dwgFile, crs); + dataHandler.getLayerTypes(); + DwgReader dwgReader = dataHandler.getDwgReader(); + + textVector = dwgReader.getTextFeatures(); + attributesVector = dwgReader.getAttributesFeatures(); + contourVector = dwgReader.getContourFeatures(); + pointsVector = dwgReader.getMultiPointFeatures(); + lineVector = dwgReader.getMultiLineFeatures(); + polygonVector = dwgReader.getMultiPolygonFeatures(); + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/DxfConverter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/DxfConverter.java index d61bb83b9..03187ef60 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/DxfConverter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/DxfConverter.java @@ -1,118 +1,118 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.vectorconverter; - -import java.io.File; -import java.io.FileInputStream; -import java.nio.channels.FileChannel; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.PrjFileReader; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.referencing.CRS; -import org.jgrasstools.gears.io.dxfdwg.libs.dxf.DxfFile; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.files.FileUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -@Description("Module to convert dxf files to geotools vecotors.") -@Documentation("DxfConverter.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, DwgConverter, Feature, Vector, Reading") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.CERTIFIED) -@Name("dxfimport") -@License("General Public License Version 3 (GPLv3)") -public class DxfConverter extends JGTModel { - @Description("The dxf file.") - @UI(JGTConstants.FILEIN_UI_HINT) - @In - public String file = null; - - @Description("The code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328). Applied in the case the file is missing.") - @UI(JGTConstants.CRS_UI_HINT) - @In - public String pCode; - - @Description("The output point vector.") - @Out - public SimpleFeatureCollection pointsVector = null; - - @Description("The output lines vector.") - @Out - public SimpleFeatureCollection lineVector = null; - - @Description("The output polygons vector.") - @Out - public SimpleFeatureCollection polygonVector = null; - - private CoordinateReferenceSystem crs; - - @Execute - public void readFeatureCollection() throws Exception { - if (!concatOr(pointsVector == null, lineVector == null, polygonVector == null, doReset)) { - return; - } - - File dxfFile = new File(file); - File parentFolder = dxfFile.getParentFile(); - String nameWithoutExtention = FileUtilities.getNameWithoutExtention(dxfFile); - File prjFile = new File(parentFolder, nameWithoutExtention + ".prj"); - if (prjFile.exists()) { - FileInputStream instream = null; - try { - instream = new FileInputStream(prjFile); - final FileChannel channel = instream.getChannel(); - PrjFileReader reader = new PrjFileReader(channel); - crs = reader.getCoordinateReferenceSystem(); - } finally { - if (instream != null) - instream.close(); - } - } - if (crs == null) { - if (pCode != null) { - crs = CRS.decode(pCode); - } else { - throw new ModelsIllegalargumentException("Please specify the CRS for the imported DXF file.", this); - } - } - - DxfFile dxf = DxfFile.createFromFile(dxfFile, crs); - - pointsVector = dxf.getPoints(); - lineVector = dxf.getLines(); - polygonVector = dxf.getPolygons(); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.vectorconverter; + +import java.io.File; +import java.io.FileInputStream; +import java.nio.channels.FileChannel; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.PrjFileReader; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.referencing.CRS; +import org.jgrasstools.gears.io.dxfdwg.libs.dxf.DxfFile; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.files.FileUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +@Description("Module to convert dxf files to geotools vecotors.") +@Documentation("DxfConverter.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, DwgConverter, Feature, Vector, Reading") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.CERTIFIED) +@Name("dxfimport") +@License("General Public License Version 3 (GPLv3)") +public class DxfConverter extends JGTModel { + @Description("The dxf file.") + @UI(JGTConstants.FILEIN_UI_HINT) + @In + public String file = null; + + @Description("The code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328). Applied in the case the file is missing.") + @UI(JGTConstants.CRS_UI_HINT) + @In + public String pCode; + + @Description("The output point vector.") + @Out + public SimpleFeatureCollection pointsVector = null; + + @Description("The output lines vector.") + @Out + public SimpleFeatureCollection lineVector = null; + + @Description("The output polygons vector.") + @Out + public SimpleFeatureCollection polygonVector = null; + + private CoordinateReferenceSystem crs; + + @Execute + public void readFeatureCollection() throws Exception { + if (!concatOr(pointsVector == null, lineVector == null, polygonVector == null, doReset)) { + return; + } + + File dxfFile = new File(file); + File parentFolder = dxfFile.getParentFile(); + String nameWithoutExtention = FileUtilities.getNameWithoutExtention(dxfFile); + File prjFile = new File(parentFolder, nameWithoutExtention + ".prj"); + if (prjFile.exists()) { + FileInputStream instream = null; + try { + instream = new FileInputStream(prjFile); + final FileChannel channel = instream.getChannel(); + PrjFileReader reader = new PrjFileReader(channel); + crs = reader.getCoordinateReferenceSystem(); + } finally { + if (instream != null) + instream.close(); + } + } + if (crs == null) { + if (pCode != null) { + crs = CRS.decode(pCode); + } else { + throw new ModelsIllegalargumentException("Please specify the CRS for the imported DXF file.", this); + } + } + + DxfFile dxf = DxfFile.createFromFile(dxfFile, crs); + + pointsVector = dxf.getPoints(); + lineVector = dxf.getLines(); + polygonVector = dxf.getPolygons(); + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/VectorConverter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/VectorConverter.java index d5c591a24..67bd5f142 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/VectorConverter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorconverter/VectorConverter.java @@ -1,58 +1,58 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.modules.v.vectorconverter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; - -@Description("A simple middleman module to do feature conversion.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("IO, Feature, Vector, Convert") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.EXPERIMENTAL) -@UI(JGTConstants.HIDE_UI_HINT) -@License("http://www.gnu.org/licenses/gpl-3.0.html") -public class VectorConverter extends JGTModel { - @Description("The input features.") - @In - public SimpleFeatureCollection inGeodata; - - @Description("The output features.") - @Out - public SimpleFeatureCollection outGeodata; - - @Execute - public void process() throws Exception { - checkNull(inGeodata); - outGeodata = inGeodata; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.modules.v.vectorconverter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; + +@Description("A simple middleman module to do feature conversion.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("IO, Feature, Vector, Convert") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.EXPERIMENTAL) +@UI(JGTConstants.HIDE_UI_HINT) +@License("http://www.gnu.org/licenses/gpl-3.0.html") +public class VectorConverter extends JGTModel { + @Description("The input features.") + @In + public SimpleFeatureCollection inGeodata; + + @Description("The output features.") + @Out + public SimpleFeatureCollection outGeodata; + + @Execute + public void process() throws Exception { + checkNull(inGeodata); + outGeodata = inGeodata; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorfieldrounder/VectorFieldRounder.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorfieldrounder/VectorFieldRounder.java index 8e76b29d0..4a3abb711 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorfieldrounder/VectorFieldRounder.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorfieldrounder/VectorFieldRounder.java @@ -1,105 +1,105 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.vectorfieldrounder; - -import java.text.DecimalFormat; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.opengis.feature.simple.SimpleFeature; - -@Description("Module that rounds a defined field attribute.") -@Documentation("VectorFieldRounder.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Round, VectorFieldJoiner") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.CERTIFIED) -@Name("vround") -@License("General Public License Version 3 (GPLv3)") -public class VectorFieldRounder extends JGTModel { - - @Description("The vector of which to round a numeric value.") - @In - public SimpleFeatureCollection inVector; - - @Description("The double field of the number to round.") - @In - public String fRound = null; - - @Description("The rounding pattern.") - @In - public String pPattern = null; - - @Description("The modified vector.") - @Out - public SimpleFeatureCollection outVector; - - private DecimalFormat formatter = null; - - @Execute - public void process() throws Exception { - if (!concatOr(outVector == null, doReset)) { - return; - } - - checkNull(pPattern, fRound); - - formatter = new DecimalFormat(pPattern); - - outVector = FeatureCollections.newCollection(); - - int size = inVector.size(); - pm.beginTask("Rounding data...", size); - FeatureIterator inFeatureIterator = inVector.features(); - while( inFeatureIterator.hasNext() ) { - SimpleFeature feature = inFeatureIterator.next(); - - Object attribute = feature.getAttribute(fRound); - if (attribute instanceof Number) { - double num = ((Number) attribute).doubleValue(); - String numStr = formatter.format(num); - numStr = numStr.replaceFirst(",", "."); - num = Double.parseDouble(numStr); - feature.setAttribute(fRound, num); - } - - outVector.add(feature); - pm.worked(1); - } - pm.done(); - - inFeatureIterator.close(); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.vectorfieldrounder; + +import java.text.DecimalFormat; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.opengis.feature.simple.SimpleFeature; + +@Description("Module that rounds a defined field attribute.") +@Documentation("VectorFieldRounder.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Round, VectorFieldJoiner") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.CERTIFIED) +@Name("vround") +@License("General Public License Version 3 (GPLv3)") +public class VectorFieldRounder extends JGTModel { + + @Description("The vector of which to round a numeric value.") + @In + public SimpleFeatureCollection inVector; + + @Description("The double field of the number to round.") + @In + public String fRound = null; + + @Description("The rounding pattern.") + @In + public String pPattern = null; + + @Description("The modified vector.") + @Out + public SimpleFeatureCollection outVector; + + private DecimalFormat formatter = null; + + @Execute + public void process() throws Exception { + if (!concatOr(outVector == null, doReset)) { + return; + } + + checkNull(pPattern, fRound); + + formatter = new DecimalFormat(pPattern); + + outVector = FeatureCollections.newCollection(); + + int size = inVector.size(); + pm.beginTask("Rounding data...", size); + FeatureIterator inFeatureIterator = inVector.features(); + while( inFeatureIterator.hasNext() ) { + SimpleFeature feature = inFeatureIterator.next(); + + Object attribute = feature.getAttribute(fRound); + if (attribute instanceof Number) { + double num = ((Number) attribute).doubleValue(); + String numStr = formatter.format(num); + numStr = numStr.replaceFirst(",", "."); + num = Double.parseDouble(numStr); + feature.setAttribute(fRound, num); + } + + outVector.add(feature); + pm.worked(1); + } + pm.done(); + + inFeatureIterator.close(); + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorfilter/VectorFilter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorfilter/VectorFilter.java index 22842713b..71a97e97b 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorfilter/VectorFilter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorfilter/VectorFilter.java @@ -1,85 +1,85 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.vectorfilter; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureIterator; -import org.geotools.feature.FeatureCollections; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.features.FilterUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.filter.Filter; - -@Description("Module that creates a subset of a vector based on a filtered vector.") -@Documentation("VectorFilter.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Filter, Vector, VectorReshaper") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.CERTIFIED) -@Name("vfilter") -@License("General Public License Version 3 (GPLv3)") -public class VectorFilter extends JGTModel { - - @Description("The vector to filter.") - @In - public SimpleFeatureCollection inVector; - - @Description("The ECQL filter function.") - @In - public String pCql = null; - - @Description("The filtered vector.") - @Out - public SimpleFeatureCollection outVector; - - @Execute - public void process() throws Exception { - if (!concatOr(outVector == null, doReset)) { - return; - } - checkNull(inVector, pCql); - - Filter cqlFilter = FilterUtilities.getCQLFilter(pCql); - SimpleFeatureCollection subCollection = inVector.subCollection(cqlFilter); - - outVector = FeatureCollections.newCollection(); - SimpleFeatureIterator iterator = subCollection.features(); - try { - while( iterator.hasNext() ) { - SimpleFeature feature = iterator.next(); - outVector.add(feature); - } - } finally { - iterator.close(); - } - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.vectorfilter; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.feature.FeatureCollections; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.features.FilterUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.filter.Filter; + +@Description("Module that creates a subset of a vector based on a filtered vector.") +@Documentation("VectorFilter.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Filter, Vector, VectorReshaper") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.CERTIFIED) +@Name("vfilter") +@License("General Public License Version 3 (GPLv3)") +public class VectorFilter extends JGTModel { + + @Description("The vector to filter.") + @In + public SimpleFeatureCollection inVector; + + @Description("The ECQL filter function.") + @In + public String pCql = null; + + @Description("The filtered vector.") + @Out + public SimpleFeatureCollection outVector; + + @Execute + public void process() throws Exception { + if (!concatOr(outVector == null, doReset)) { + return; + } + checkNull(inVector, pCql); + + Filter cqlFilter = FilterUtilities.getCQLFilter(pCql); + SimpleFeatureCollection subCollection = inVector.subCollection(cqlFilter); + + outVector = FeatureCollections.newCollection(); + SimpleFeatureIterator iterator = subCollection.features(); + try { + while( iterator.hasNext() ) { + SimpleFeature feature = iterator.next(); + outVector.add(feature); + } + } finally { + iterator.close(); + } + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectormerger/VectorMerger.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectormerger/VectorMerger.java index d92540745..30bcf4f67 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectormerger/VectorMerger.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectormerger/VectorMerger.java @@ -1,98 +1,98 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.vectormerger; - -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.DataUtilities; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureIterator; -import org.geotools.feature.FeatureCollections; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.features.FeatureExtender; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -@Description("Module for merging vecotrs into one single.") -@Documentation("VectorMerger.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("IO, Feature, Vector, Merge") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.CERTIFIED) -@Name("vmerge") -@License("General Public License Version 3 (GPLv3)") -public class VectorMerger extends JGTModel { - @Description("The input vectors to be merged.") - @In - public List inVectors; - - @Description("The output vector.") - @Out - public SimpleFeatureCollection outVector; - - @Execute - public void process() throws Exception { - checkNull(inVectors); - - SimpleFeatureType firstType = null; - - FeatureExtender fEx = null; - - pm.beginTask("Merging features...", inVectors.size()); - try { - outVector = FeatureCollections.newCollection(); - for( SimpleFeatureCollection featureCollection : inVectors ) { - if (firstType == null) { - firstType = featureCollection.getSchema(); - fEx = new FeatureExtender(firstType, new String[0], new Class< ? >[0]); - } else { - SimpleFeatureType schema = featureCollection.getSchema(); - int compare = DataUtilities.compare(firstType, schema); - if (compare != 0) { - throw new ModelsIllegalargumentException("Merging is done only on same feature types.", this); - } - } - SimpleFeatureIterator featureIterator = featureCollection.features(); - while( featureIterator.hasNext() ) { - SimpleFeature f = featureIterator.next(); - - SimpleFeature extendFeature = fEx.extendFeature(f, new Object[0]); - - outVector.add(extendFeature); - } - pm.worked(1); - } - } finally { - pm.done(); - } - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.vectormerger; + +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.DataUtilities; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.feature.FeatureCollections; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.features.FeatureExtender; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +@Description("Module for merging vecotrs into one single.") +@Documentation("VectorMerger.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("IO, Feature, Vector, Merge") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.CERTIFIED) +@Name("vmerge") +@License("General Public License Version 3 (GPLv3)") +public class VectorMerger extends JGTModel { + @Description("The input vectors to be merged.") + @In + public List inVectors; + + @Description("The output vector.") + @Out + public SimpleFeatureCollection outVector; + + @Execute + public void process() throws Exception { + checkNull(inVectors); + + SimpleFeatureType firstType = null; + + FeatureExtender fEx = null; + + pm.beginTask("Merging features...", inVectors.size()); + try { + outVector = FeatureCollections.newCollection(); + for( SimpleFeatureCollection featureCollection : inVectors ) { + if (firstType == null) { + firstType = featureCollection.getSchema(); + fEx = new FeatureExtender(firstType, new String[0], new Class< ? >[0]); + } else { + SimpleFeatureType schema = featureCollection.getSchema(); + int compare = DataUtilities.compare(firstType, schema); + if (compare != 0) { + throw new ModelsIllegalargumentException("Merging is done only on same feature types.", this); + } + } + SimpleFeatureIterator featureIterator = featureCollection.features(); + while( featureIterator.hasNext() ) { + SimpleFeature f = featureIterator.next(); + + SimpleFeature extendFeature = fEx.extendFeature(f, new Object[0]); + + outVector.add(extendFeature); + } + pm.worked(1); + } + } finally { + pm.done(); + } + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorreprojector/VectorReprojector.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorreprojector/VectorReprojector.java index 4b62d8745..e65814434 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorreprojector/VectorReprojector.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorreprojector/VectorReprojector.java @@ -1,107 +1,107 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.vectorreprojector; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.crs.ForceCoordinateSystemFeatureResults; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.store.ReprojectingFeatureCollection; -import org.geotools.referencing.CRS; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -@Description("Module for vector reprojection.") -@Documentation("VectorReprojector.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("CRS, Reprojection, Vector") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.CERTIFIED) -@Name("vreproject") -@License("General Public License Version 3 (GPLv3)") -public class VectorReprojector extends JGTModel { - - @Description("The vector that has to be reprojected.") - @In - public SimpleFeatureCollection inVector; - - @Description("The code defining the target coordinate reference system, composed by authority and code number (ex. EPSG:4328).") - @UI(JGTConstants.CRS_UI_HINT) - @In - public String pCode; - - @Description("A flag to modify the axes order.") - @In - public Boolean doLongitudeFirst = null; - - @Description("A coordinate reference system on which to force the input, composed by authority and code number (ex. EPSG:4328).") - @UI(JGTConstants.CRS_UI_HINT) - @In - public String pForceCode; - - @Description("Switch that set to true allows for some error due to different datums. If set to false, it won't reproject without Bursa Wolf parameters.") - @In - public boolean doLenient = true; - - @Description("The output reprojected vector.") - @Out - public SimpleFeatureCollection outVector = null; - - @Execute - public void process() throws Exception { - if (!concatOr(outVector == null, doReset)) { - return; - } - - CoordinateReferenceSystem targetCrs = null; - if (doLongitudeFirst != null) { - targetCrs = CRS.decode(pCode, doLongitudeFirst); - }else{ - targetCrs = CRS.decode(pCode); - } - if (pForceCode != null) { - pm.beginTask("Forcing input crs...", IJGTProgressMonitor.UNKNOWN); - CoordinateReferenceSystem forcedCrs = CRS.decode(pForceCode); - inVector = new ForceCoordinateSystemFeatureResults(inVector, forcedCrs); - pm.done(); - } - - pm.beginTask("Reprojecting features...", IJGTProgressMonitor.UNKNOWN); - try { - outVector = new ReprojectingFeatureCollection(inVector, targetCrs); - } finally { - - pm.done(); - } - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.vectorreprojector; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.crs.ForceCoordinateSystemFeatureResults; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.store.ReprojectingFeatureCollection; +import org.geotools.referencing.CRS; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +@Description("Module for vector reprojection.") +@Documentation("VectorReprojector.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("CRS, Reprojection, Vector") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.CERTIFIED) +@Name("vreproject") +@License("General Public License Version 3 (GPLv3)") +public class VectorReprojector extends JGTModel { + + @Description("The vector that has to be reprojected.") + @In + public SimpleFeatureCollection inVector; + + @Description("The code defining the target coordinate reference system, composed by authority and code number (ex. EPSG:4328).") + @UI(JGTConstants.CRS_UI_HINT) + @In + public String pCode; + + @Description("A flag to modify the axes order.") + @In + public Boolean doLongitudeFirst = null; + + @Description("A coordinate reference system on which to force the input, composed by authority and code number (ex. EPSG:4328).") + @UI(JGTConstants.CRS_UI_HINT) + @In + public String pForceCode; + + @Description("Switch that set to true allows for some error due to different datums. If set to false, it won't reproject without Bursa Wolf parameters.") + @In + public boolean doLenient = true; + + @Description("The output reprojected vector.") + @Out + public SimpleFeatureCollection outVector = null; + + @Execute + public void process() throws Exception { + if (!concatOr(outVector == null, doReset)) { + return; + } + + CoordinateReferenceSystem targetCrs = null; + if (doLongitudeFirst != null) { + targetCrs = CRS.decode(pCode, doLongitudeFirst); + }else{ + targetCrs = CRS.decode(pCode); + } + if (pForceCode != null) { + pm.beginTask("Forcing input crs...", IJGTProgressMonitor.UNKNOWN); + CoordinateReferenceSystem forcedCrs = CRS.decode(pForceCode); + inVector = new ForceCoordinateSystemFeatureResults(inVector, forcedCrs); + pm.done(); + } + + pm.beginTask("Reprojecting features...", IJGTProgressMonitor.UNKNOWN); + try { + outVector = new ReprojectingFeatureCollection(inVector, targetCrs); + } finally { + + pm.done(); + } + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorreshaper/VectorReshaper.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorreshaper/VectorReshaper.java index 10f64f8be..ac2105c6c 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorreshaper/VectorReshaper.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorreshaper/VectorReshaper.java @@ -1,289 +1,289 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.vectorreshaper; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map.Entry; -import java.util.Set; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.geotools.feature.SchemaException; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.geotools.filter.text.cql2.CQL; -import org.geotools.filter.text.cql2.CQLException; -import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; -import org.jgrasstools.gears.libs.exceptions.ModelsRuntimeException; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.opengis.feature.Feature; -import org.opengis.feature.FeatureVisitor; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.feature.type.AttributeDescriptor; -import org.opengis.feature.type.AttributeType; -import org.opengis.feature.type.GeometryType; -import org.opengis.filter.expression.Expression; -import org.opengis.filter.expression.PropertyName; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Geometry; - -@Description("Module to reshape a vector.") -@Documentation("VectorReshaper.html") -@Author(name = "Andrea Antonello, Jody Garnett", contact = "http://www.hydrologis.com") -@Keywords("Reshape, Vector, VectorFilter") -@Status(Status.CERTIFIED) -@Label(JGTConstants.VECTORPROCESSING) -@Name("reshape") -@License("General Public License Version 3 (GPLv3)") -@SuppressWarnings("nls") -public class VectorReshaper extends JGTModel { - - @Description("The vector to reshape.") - @In - public SimpleFeatureCollection inVector; - - @Description("The ECQL reshape function.") - @UI(JGTConstants.MULTILINE_UI_HINT + "5") - @In - public String pCql = null; - - @Description("The list of fields to remove, comma separated.") - @In - public String pRemove = null; - - @Description("The new reshaped vector.") - @Out - public SimpleFeatureCollection outVector; - - private SimpleFeature sample = null; - - @Execute - public void process() throws Exception { - if (!concatOr(outVector == null, doReset)) { - return; - } - checkNull(inVector, pCql); - - List removeNames = new ArrayList(); - if (pRemove != null) { - String[] split = pRemove.split(","); - for( String string : split ) { - removeNames.add(string.trim()); - } - } - - final SimpleFeatureType originalFeatureType = inVector.getSchema(); - List attributeDescriptors = originalFeatureType.getAttributeDescriptors(); - - LinkedHashMap functionMap = new LinkedHashMap(); - for( AttributeDescriptor attributeDescriptor : attributeDescriptors ) { - String name = attributeDescriptor.getLocalName(); - if (removeNames.contains(name.trim())) { - continue; - } - functionMap.put(name, name); - } - if (pCql != null && pCql.length() > 0) { - String[] split = pCql.trim().split("\n"); - if (split != null && split.length > 0) { - for( String line : split ) { - int indexOfEquals = line.indexOf('='); - if (indexOfEquals != -1) { - String key = line.substring(0, indexOfEquals); - String value = line.substring(indexOfEquals + 1); - - functionMap.put(key.trim(), value.trim()); - } else { - pm.errorMessage("Ignoring expression: " + line); - } - } - } - } else { - throw new ModelsIllegalargumentException("No CQL function has been provided.", this); - } - StringBuilder sB = new StringBuilder(); - Set> entrySet = functionMap.entrySet(); - for( Entry entry : entrySet ) { - sB.append("\n").append(entry.getKey()).append("=").append(entry.getValue()); - } - - String expressionString = sB.substring(1); - - sample = getSample(); - - List names = createNameList(expressionString); - final List expressions = createExpressionList(expressionString); - SimpleFeatureType newFeatureType = createFeatureType(expressionString, originalFeatureType, names, expressions); - - outVector = FeatureCollections.newCollection(); - - final SimpleFeatureBuilder build = new SimpleFeatureBuilder(newFeatureType); - inVector.accepts(new FeatureVisitor(){ - public void visit( Feature rawFeature ) { - SimpleFeature feature = (SimpleFeature) rawFeature; - for( int i = 0; i < expressions.size(); i++ ) { - build.add(expressions.get(i).evaluate(feature)); - } - SimpleFeature created = build.buildFeature(feature.getID()); - outVector.add(created); - } - }, null); - - } - - private SimpleFeature getSample() { - FeatureIterator iterator = inVector.features(); - try { - if (!iterator.hasNext()) { - throw new ModelsRuntimeException("Input featurecollection is empty.", this.getClass().getSimpleName()); - } - return iterator.next(); - } finally { - iterator.close(); - } - } - - /** - * You cannot call this once the dialog is closed, see the okPressed method. - * @param originalFeatureType - * @param expressions - * @param names - * @return a SimpleFeatureType created based on the contents of Text - */ - private SimpleFeatureType createFeatureType( String expressionString, SimpleFeatureType originalFeatureType, - List names, List expressions ) throws SchemaException { - - SimpleFeatureTypeBuilder build = new SimpleFeatureTypeBuilder(); - - for( int i = 0; i < names.size(); i++ ) { - String name = names.get(i); - - Expression expression = expressions.get(i); - - Object value = expression.evaluate(sample); - - // hack because sometimes expression returns null. I think the real bug is with - // AttributeExpression - Class< ? > binding = null; - if (value == null) { - if (expression instanceof PropertyName) { - String path = ((PropertyName) expression).getPropertyName(); - AttributeType attributeType = sample.getFeatureType().getType(path); - if (attributeType == null) { - throw new ModelsIllegalargumentException("Attribute type is null", this.getClass().getSimpleName()); - } - binding = attributeType.getClass(); - } - } else { - binding = value.getClass(); - } - - if (binding == null) { - throw new ModelsIllegalargumentException("Binding is null", this.getClass().getSimpleName()); - } - - if (Geometry.class.isAssignableFrom(binding)) { - CoordinateReferenceSystem crs; - AttributeType originalAttributeType = originalFeatureType.getType(name); - if (originalAttributeType instanceof GeometryType) { - crs = ((GeometryType) originalAttributeType).getCoordinateReferenceSystem(); - } else { - crs = originalFeatureType.getCoordinateReferenceSystem(); - } - build.crs(crs); - - build.add(name, binding); - } else { - build.add(name, binding); - } - } - build.setName(getNewTypeName(originalFeatureType.getTypeName())); - - return build.buildFeatureType(); - } - - /** - * You cannot call this once the dialog is closed, see the okPressed method. - * @param expressionString - * - * @return a SimpleFeatureType created based on the contents of Text - */ - private List createNameList( String expressionString ) { - List list = new ArrayList(); - - String definition = expressionString.replaceAll("\r", "\n").replaceAll("[\n\r][\n\r]", "\n"); - for( String line : definition.split("\n") ) { - int mark = line.indexOf("="); - if (mark != -1) { - String name = line.substring(0, mark).trim(); - if (list.contains(name)) { - System.out.println("Name already existing"); - continue; - } - list.add(name); - } - } - return list; - } - - private List createExpressionList( String expressionString ) { - List list = new ArrayList(); - - String definition = expressionString.replaceAll("\r", "\n").replaceAll("[\n\r][\n\r]", "\n"); - for( String line : definition.split("\n") ) { - int mark = line.indexOf("="); - if (mark != -1) { - String expressionDefinition = line.substring(mark + 1).trim(); - - Expression expression; - try { - expression = CQL.toExpression(expressionDefinition); - } catch (CQLException e) { - throw new ModelsRuntimeException(e.toString(), this); - } - list.add(expression); - } - } - return list; - } - - static int count = 0; - public String getNewTypeName( String typeName ) { - return typeName + (count++); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.vectorreshaper; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.geotools.feature.SchemaException; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.geotools.filter.text.cql2.CQL; +import org.geotools.filter.text.cql2.CQLException; +import org.jgrasstools.gears.libs.exceptions.ModelsIllegalargumentException; +import org.jgrasstools.gears.libs.exceptions.ModelsRuntimeException; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.opengis.feature.Feature; +import org.opengis.feature.FeatureVisitor; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.feature.type.AttributeDescriptor; +import org.opengis.feature.type.AttributeType; +import org.opengis.feature.type.GeometryType; +import org.opengis.filter.expression.Expression; +import org.opengis.filter.expression.PropertyName; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Geometry; + +@Description("Module to reshape a vector.") +@Documentation("VectorReshaper.html") +@Author(name = "Andrea Antonello, Jody Garnett", contact = "http://www.hydrologis.com") +@Keywords("Reshape, Vector, VectorFilter") +@Status(Status.CERTIFIED) +@Label(JGTConstants.VECTORPROCESSING) +@Name("reshape") +@License("General Public License Version 3 (GPLv3)") +@SuppressWarnings("nls") +public class VectorReshaper extends JGTModel { + + @Description("The vector to reshape.") + @In + public SimpleFeatureCollection inVector; + + @Description("The ECQL reshape function.") + @UI(JGTConstants.MULTILINE_UI_HINT + "5") + @In + public String pCql = null; + + @Description("The list of fields to remove, comma separated.") + @In + public String pRemove = null; + + @Description("The new reshaped vector.") + @Out + public SimpleFeatureCollection outVector; + + private SimpleFeature sample = null; + + @Execute + public void process() throws Exception { + if (!concatOr(outVector == null, doReset)) { + return; + } + checkNull(inVector, pCql); + + List removeNames = new ArrayList(); + if (pRemove != null) { + String[] split = pRemove.split(","); + for( String string : split ) { + removeNames.add(string.trim()); + } + } + + final SimpleFeatureType originalFeatureType = inVector.getSchema(); + List attributeDescriptors = originalFeatureType.getAttributeDescriptors(); + + LinkedHashMap functionMap = new LinkedHashMap(); + for( AttributeDescriptor attributeDescriptor : attributeDescriptors ) { + String name = attributeDescriptor.getLocalName(); + if (removeNames.contains(name.trim())) { + continue; + } + functionMap.put(name, name); + } + if (pCql != null && pCql.length() > 0) { + String[] split = pCql.trim().split("\n"); + if (split != null && split.length > 0) { + for( String line : split ) { + int indexOfEquals = line.indexOf('='); + if (indexOfEquals != -1) { + String key = line.substring(0, indexOfEquals); + String value = line.substring(indexOfEquals + 1); + + functionMap.put(key.trim(), value.trim()); + } else { + pm.errorMessage("Ignoring expression: " + line); + } + } + } + } else { + throw new ModelsIllegalargumentException("No CQL function has been provided.", this); + } + StringBuilder sB = new StringBuilder(); + Set> entrySet = functionMap.entrySet(); + for( Entry entry : entrySet ) { + sB.append("\n").append(entry.getKey()).append("=").append(entry.getValue()); + } + + String expressionString = sB.substring(1); + + sample = getSample(); + + List names = createNameList(expressionString); + final List expressions = createExpressionList(expressionString); + SimpleFeatureType newFeatureType = createFeatureType(expressionString, originalFeatureType, names, expressions); + + outVector = FeatureCollections.newCollection(); + + final SimpleFeatureBuilder build = new SimpleFeatureBuilder(newFeatureType); + inVector.accepts(new FeatureVisitor(){ + public void visit( Feature rawFeature ) { + SimpleFeature feature = (SimpleFeature) rawFeature; + for( int i = 0; i < expressions.size(); i++ ) { + build.add(expressions.get(i).evaluate(feature)); + } + SimpleFeature created = build.buildFeature(feature.getID()); + outVector.add(created); + } + }, null); + + } + + private SimpleFeature getSample() { + FeatureIterator iterator = inVector.features(); + try { + if (!iterator.hasNext()) { + throw new ModelsRuntimeException("Input featurecollection is empty.", this.getClass().getSimpleName()); + } + return iterator.next(); + } finally { + iterator.close(); + } + } + + /** + * You cannot call this once the dialog is closed, see the okPressed method. + * @param originalFeatureType + * @param expressions + * @param names + * @return a SimpleFeatureType created based on the contents of Text + */ + private SimpleFeatureType createFeatureType( String expressionString, SimpleFeatureType originalFeatureType, + List names, List expressions ) throws SchemaException { + + SimpleFeatureTypeBuilder build = new SimpleFeatureTypeBuilder(); + + for( int i = 0; i < names.size(); i++ ) { + String name = names.get(i); + + Expression expression = expressions.get(i); + + Object value = expression.evaluate(sample); + + // hack because sometimes expression returns null. I think the real bug is with + // AttributeExpression + Class< ? > binding = null; + if (value == null) { + if (expression instanceof PropertyName) { + String path = ((PropertyName) expression).getPropertyName(); + AttributeType attributeType = sample.getFeatureType().getType(path); + if (attributeType == null) { + throw new ModelsIllegalargumentException("Attribute type is null", this.getClass().getSimpleName()); + } + binding = attributeType.getClass(); + } + } else { + binding = value.getClass(); + } + + if (binding == null) { + throw new ModelsIllegalargumentException("Binding is null", this.getClass().getSimpleName()); + } + + if (Geometry.class.isAssignableFrom(binding)) { + CoordinateReferenceSystem crs; + AttributeType originalAttributeType = originalFeatureType.getType(name); + if (originalAttributeType instanceof GeometryType) { + crs = ((GeometryType) originalAttributeType).getCoordinateReferenceSystem(); + } else { + crs = originalFeatureType.getCoordinateReferenceSystem(); + } + build.crs(crs); + + build.add(name, binding); + } else { + build.add(name, binding); + } + } + build.setName(getNewTypeName(originalFeatureType.getTypeName())); + + return build.buildFeatureType(); + } + + /** + * You cannot call this once the dialog is closed, see the okPressed method. + * @param expressionString + * + * @return a SimpleFeatureType created based on the contents of Text + */ + private List createNameList( String expressionString ) { + List list = new ArrayList(); + + String definition = expressionString.replaceAll("\r", "\n").replaceAll("[\n\r][\n\r]", "\n"); + for( String line : definition.split("\n") ) { + int mark = line.indexOf("="); + if (mark != -1) { + String name = line.substring(0, mark).trim(); + if (list.contains(name)) { + System.out.println("Name already existing"); + continue; + } + list.add(name); + } + } + return list; + } + + private List createExpressionList( String expressionString ) { + List list = new ArrayList(); + + String definition = expressionString.replaceAll("\r", "\n").replaceAll("[\n\r][\n\r]", "\n"); + for( String line : definition.split("\n") ) { + int mark = line.indexOf("="); + if (mark != -1) { + String expressionDefinition = line.substring(mark + 1).trim(); + + Expression expression; + try { + expression = CQL.toExpression(expressionDefinition); + } catch (CQLException e) { + throw new ModelsRuntimeException(e.toString(), this); + } + list.add(expression); + } + } + return list; + } + + static int count = 0; + public String getNewTypeName( String typeName ) { + return typeName + (count++); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorsimplifier/VectorSimplifier.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorsimplifier/VectorSimplifier.java index 835b207e3..722f593ae 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorsimplifier/VectorSimplifier.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectorsimplifier/VectorSimplifier.java @@ -1,141 +1,141 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.vectorsimplifier; - -import java.util.ArrayList; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.features.FeatureGeometrySubstitutor; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.feature.simple.SimpleFeature; - -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryCollection; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.simplify.DouglasPeuckerSimplifier; -import com.vividsolutions.jts.simplify.TopologyPreservingSimplifier; - -@Description("Collection of vector simplification algorithms.") -@Documentation("VectorSimplifier.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Simplify, LineSmootherMcMaster, LineSmootherJaitools") -@Status(Status.CERTIFIED) -@Label(JGTConstants.VECTORPROCESSING) -@Name("vsimplify") -@License("General Public License Version 3 (GPLv3)") -public class VectorSimplifier extends JGTModel { - - @Description("The vector to be simplified.") - @In - public SimpleFeatureCollection inVector; - - @Description("The simplification type: TopologyPreservingSimplifier = 0, Douglas Peucker = 1 (default = 0).") - @In - public int pType = 0; - - @Description("The distance tolerance for the simplification.") - @In - public double pTolerance = 0.2; - - @Description("The simplified vector.") - @Out - public SimpleFeatureCollection outVector; - - private GeometryFactory gF = GeometryUtilities.gf(); - - @Execute - public void process() throws Exception { - if (!concatOr(outVector == null, doReset)) { - return; - } - FeatureIterator inFeatureIterator = inVector.features(); - - outVector = FeatureCollections.newCollection(); - - FeatureGeometrySubstitutor fGS = new FeatureGeometrySubstitutor(inVector.getSchema()); - - int id = 0; - int size = inVector.size(); - pm.beginTask("Simplifing features...", size); - while( inFeatureIterator.hasNext() ) { - SimpleFeature feature = inFeatureIterator.next(); - - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - - List geomList = new ArrayList(); - - int numGeometries = geometry.getNumGeometries(); - for( int i = 0; i < numGeometries; i++ ) { - Geometry geometryN = geometry.getGeometryN(i); - switch( pType ) { - case 0: - TopologyPreservingSimplifier tpSimplifier = new TopologyPreservingSimplifier( - geometryN); - tpSimplifier.setDistanceTolerance(pTolerance); - Geometry tpsGeometry = tpSimplifier.getResultGeometry(); - geomList.add(tpsGeometry); - break; - case 1: - DouglasPeuckerSimplifier dpSimplifier = new DouglasPeuckerSimplifier(geometryN); - dpSimplifier.setDistanceTolerance(pTolerance); - Geometry dpsGeometry = dpSimplifier.getResultGeometry(); - geomList.add(dpsGeometry); - break; - default: - } - - } - - Geometry newGeometry = null; - if (geomList.size() == 1) { - newGeometry = geomList.get(0); - } else { - Geometry[] geomArray = (Geometry[]) geomList.toArray(new Geometry[geomList.size()]); - newGeometry = new GeometryCollection(geomArray, gF); - } - - SimpleFeature newFeature = fGS.substituteGeometry(feature, newGeometry); - id++; - - outVector.add(newFeature); - pm.worked(1); - } - pm.done(); - - inFeatureIterator.close(); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.vectorsimplifier; + +import java.util.ArrayList; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.features.FeatureGeometrySubstitutor; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryCollection; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.simplify.DouglasPeuckerSimplifier; +import com.vividsolutions.jts.simplify.TopologyPreservingSimplifier; + +@Description("Collection of vector simplification algorithms.") +@Documentation("VectorSimplifier.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Simplify, LineSmootherMcMaster, LineSmootherJaitools") +@Status(Status.CERTIFIED) +@Label(JGTConstants.VECTORPROCESSING) +@Name("vsimplify") +@License("General Public License Version 3 (GPLv3)") +public class VectorSimplifier extends JGTModel { + + @Description("The vector to be simplified.") + @In + public SimpleFeatureCollection inVector; + + @Description("The simplification type: TopologyPreservingSimplifier = 0, Douglas Peucker = 1 (default = 0).") + @In + public int pType = 0; + + @Description("The distance tolerance for the simplification.") + @In + public double pTolerance = 0.2; + + @Description("The simplified vector.") + @Out + public SimpleFeatureCollection outVector; + + private GeometryFactory gF = GeometryUtilities.gf(); + + @Execute + public void process() throws Exception { + if (!concatOr(outVector == null, doReset)) { + return; + } + FeatureIterator inFeatureIterator = inVector.features(); + + outVector = FeatureCollections.newCollection(); + + FeatureGeometrySubstitutor fGS = new FeatureGeometrySubstitutor(inVector.getSchema()); + + int id = 0; + int size = inVector.size(); + pm.beginTask("Simplifing features...", size); + while( inFeatureIterator.hasNext() ) { + SimpleFeature feature = inFeatureIterator.next(); + + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + + List geomList = new ArrayList(); + + int numGeometries = geometry.getNumGeometries(); + for( int i = 0; i < numGeometries; i++ ) { + Geometry geometryN = geometry.getGeometryN(i); + switch( pType ) { + case 0: + TopologyPreservingSimplifier tpSimplifier = new TopologyPreservingSimplifier( + geometryN); + tpSimplifier.setDistanceTolerance(pTolerance); + Geometry tpsGeometry = tpSimplifier.getResultGeometry(); + geomList.add(tpsGeometry); + break; + case 1: + DouglasPeuckerSimplifier dpSimplifier = new DouglasPeuckerSimplifier(geometryN); + dpSimplifier.setDistanceTolerance(pTolerance); + Geometry dpsGeometry = dpSimplifier.getResultGeometry(); + geomList.add(dpsGeometry); + break; + default: + } + + } + + Geometry newGeometry = null; + if (geomList.size() == 1) { + newGeometry = geomList.get(0); + } else { + Geometry[] geomArray = (Geometry[]) geomList.toArray(new Geometry[geomList.size()]); + newGeometry = new GeometryCollection(geomArray, gF); + } + + SimpleFeature newFeature = fGS.substituteGeometry(feature, newGeometry); + id++; + + outVector.add(newFeature); + pm.worked(1); + } + pm.done(); + + inFeatureIterator.close(); + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectortablejoiner/VectorTableJoiner.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectortablejoiner/VectorTableJoiner.java index f5eba2fc5..11f221ae4 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectortablejoiner/VectorTableJoiner.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectortablejoiner/VectorTableJoiner.java @@ -1,138 +1,138 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules.v.vectortablejoiner; - -import java.util.HashMap; -import java.util.List; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.features.FeatureExtender; -import org.opengis.feature.simple.SimpleFeature; - -@Description("Module that joins attributes from one vector into another based on a common field.") -@Documentation("VectorTableJoiner.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Join, VectorFieldRounder") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.CERTIFIED) -@Name("vjoin") -@License("General Public License Version 3 (GPLv3)") -public class VectorTableJoiner extends JGTModel { - - @Description("The vector to extend.") - @In - public SimpleFeatureCollection inVector; - - @Description("The dbf tabledata to merge in.") - @In - public HashMap> tabledata = null; - - @Description("The common field (if different in the two sources, commaseparated, first shapefile, then dbf.") - @In - public String fCommon = null; - - @Description("The commaseparated list of fields to merge in.") - @In - public String pFields = null; - - @Description("The joined vector.") - @Out - public SimpleFeatureCollection outVector; - - @Execute - public void process() throws Exception { - if (!concatOr(outVector == null, doReset)) { - return; - } - - String[] fields = pFields.split(","); //$NON-NLS-1$ - Class< ? >[] classes = new Class< ? >[fields.length]; - for( int i = 0; i < fields.length; i++ ) { - List list = tabledata.get(fields[i].trim()); - classes[i] = list.get(0).getClass(); - } - - String shapeField = fCommon; - String tableField = fCommon; - int comma = fCommon.indexOf(","); //$NON-NLS-1$ - if (comma != -1) { - String[] split = fCommon.split(","); //$NON-NLS-1$ - shapeField = split[0].trim(); - tableField = split[1].trim(); - } - - List commonAttributeList = tabledata.get(tableField); - - FeatureExtender fExt = new FeatureExtender(inVector.getSchema(), fields, classes); - - outVector = FeatureCollections.newCollection(); - - int size = inVector.size(); - pm.beginTask("Merging data...", size); - FeatureIterator inFeatureIterator = inVector.features(); - while( inFeatureIterator.hasNext() ) { - SimpleFeature feature = inFeatureIterator.next(); - - Object attribute = feature.getAttribute(shapeField); - int index = commonAttributeList.indexOf(attribute); - if (index == -1) { - // try something if it is number - if (attribute instanceof Number) { - Double doubleAttribute = ((Number) attribute).doubleValue(); - index = commonAttributeList.indexOf(doubleAttribute); - } - if (index == -1) { - System.out.println("Jumped feature: " + feature.getID()); - continue; - } - } - Object[] newAttributes = new Object[fields.length]; - for( int i = 0; i < fields.length; i++ ) { - List list = tabledata.get(fields[i]); - Object object = list.get(index); - newAttributes[i] = object; - } - - SimpleFeature newFeature = fExt.extendFeature(feature, newAttributes); - - outVector.add(newFeature); - pm.worked(1); - } - pm.done(); - - inFeatureIterator.close(); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules.v.vectortablejoiner; + +import java.util.HashMap; +import java.util.List; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.features.FeatureExtender; +import org.opengis.feature.simple.SimpleFeature; + +@Description("Module that joins attributes from one vector into another based on a common field.") +@Documentation("VectorTableJoiner.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Join, VectorFieldRounder") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.CERTIFIED) +@Name("vjoin") +@License("General Public License Version 3 (GPLv3)") +public class VectorTableJoiner extends JGTModel { + + @Description("The vector to extend.") + @In + public SimpleFeatureCollection inVector; + + @Description("The dbf tabledata to merge in.") + @In + public HashMap> tabledata = null; + + @Description("The common field (if different in the two sources, commaseparated, first shapefile, then dbf.") + @In + public String fCommon = null; + + @Description("The commaseparated list of fields to merge in.") + @In + public String pFields = null; + + @Description("The joined vector.") + @Out + public SimpleFeatureCollection outVector; + + @Execute + public void process() throws Exception { + if (!concatOr(outVector == null, doReset)) { + return; + } + + String[] fields = pFields.split(","); //$NON-NLS-1$ + Class< ? >[] classes = new Class< ? >[fields.length]; + for( int i = 0; i < fields.length; i++ ) { + List list = tabledata.get(fields[i].trim()); + classes[i] = list.get(0).getClass(); + } + + String shapeField = fCommon; + String tableField = fCommon; + int comma = fCommon.indexOf(","); //$NON-NLS-1$ + if (comma != -1) { + String[] split = fCommon.split(","); //$NON-NLS-1$ + shapeField = split[0].trim(); + tableField = split[1].trim(); + } + + List commonAttributeList = tabledata.get(tableField); + + FeatureExtender fExt = new FeatureExtender(inVector.getSchema(), fields, classes); + + outVector = FeatureCollections.newCollection(); + + int size = inVector.size(); + pm.beginTask("Merging data...", size); + FeatureIterator inFeatureIterator = inVector.features(); + while( inFeatureIterator.hasNext() ) { + SimpleFeature feature = inFeatureIterator.next(); + + Object attribute = feature.getAttribute(shapeField); + int index = commonAttributeList.indexOf(attribute); + if (index == -1) { + // try something if it is number + if (attribute instanceof Number) { + Double doubleAttribute = ((Number) attribute).doubleValue(); + index = commonAttributeList.indexOf(doubleAttribute); + } + if (index == -1) { + System.out.println("Jumped feature: " + feature.getID()); + continue; + } + } + Object[] newAttributes = new Object[fields.length]; + for( int i = 0; i < fields.length; i++ ) { + List list = tabledata.get(fields[i]); + Object object = list.get(index); + newAttributes[i] = object; + } + + SimpleFeature newFeature = fExt.extendFeature(feature, newAttributes); + + outVector.add(newFeature); + pm.worked(1); + } + pm.done(); + + inFeatureIterator.close(); + + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectortransformer/VectorTransformer.java b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectortransformer/VectorTransformer.java index 545749baa..6d3a0047c 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectortransformer/VectorTransformer.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/modules/v/vectortransformer/VectorTransformer.java @@ -1,108 +1,108 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.modules.v.vectortransformer; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.Label; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Out; -import oms3.annotations.Status; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.geotools.geometry.jts.JTS; -import org.geotools.referencing.operation.transform.AffineTransform2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.features.FeatureGeometrySubstitutor; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.referencing.operation.MathTransform; - -import com.vividsolutions.jts.geom.Geometry; - -@Description("Module for vector tranforms. Currently only translation is supported.") -@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") -@Keywords("Transform, Vector") -@Label(JGTConstants.VECTORPROCESSING) -@Status(Status.CERTIFIED) -@Name("vtrans") -@License("General Public License Version 3 (GPLv3)") -public class VectorTransformer extends JGTModel { - - @Description("The feature collection that has to be transformed.") - @In - public SimpleFeatureCollection inVector; - - @Description("The translation along the X axis.") - @In - public double pTransX; - - @Description("The translation along the Y axis.") - @In - public double pTransY; - - @Description("The transformed feature collection.") - @Out - public SimpleFeatureCollection outVector = null; - - @Execute - public void process() throws Exception { - if (!concatOr(outVector == null, doReset)) { - return; - } - - outVector = FeatureCollections.newCollection(); - SimpleFeatureType featureType = inVector.getSchema(); - - FeatureGeometrySubstitutor substitutor = new FeatureGeometrySubstitutor(featureType); - - FeatureIterator inFeatureIterator = inVector.features(); - int id = 0; - pm.beginTask("Transforming geometries...", inVector.size()); - while( inFeatureIterator.hasNext() ) { - // copy the contents of each feature and transform the geometry - SimpleFeature feature = inFeatureIterator.next(); - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - - // m00 the X coordinate scaling element of the 3x3 matrix - // m10 the Y coordinate shearing element of the 3x3 matrix - // m01 the X coordinate shearing element of the 3x3 matrix - // m11 the Y coordinate scaling element of the 3x3 matrix - // m02 the X coordinate translation element of the 3x3 matrix - // m12 the Y coordinate translation element of the 3x3 matrix - // m00, m10, m01, m11, m02, m12 - MathTransform transform = new AffineTransform2D(1.0, 0.0, 0.0, 1.0, pTransX, pTransY); - Geometry transformedGeometry = JTS.transform(geometry, transform); - - SimpleFeature newFeature = substitutor.substituteGeometry(feature, transformedGeometry); - outVector.add(newFeature); - pm.worked(1); - } - inFeatureIterator.close(); - pm.done(); - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.modules.v.vectortransformer; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.Label; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Out; +import oms3.annotations.Status; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.geotools.geometry.jts.JTS; +import org.geotools.referencing.operation.transform.AffineTransform2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.features.FeatureGeometrySubstitutor; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.referencing.operation.MathTransform; + +import com.vividsolutions.jts.geom.Geometry; + +@Description("Module for vector tranforms. Currently only translation is supported.") +@Author(name = "Andrea Antonello", contact = "www.hydrologis.com") +@Keywords("Transform, Vector") +@Label(JGTConstants.VECTORPROCESSING) +@Status(Status.CERTIFIED) +@Name("vtrans") +@License("General Public License Version 3 (GPLv3)") +public class VectorTransformer extends JGTModel { + + @Description("The feature collection that has to be transformed.") + @In + public SimpleFeatureCollection inVector; + + @Description("The translation along the X axis.") + @In + public double pTransX; + + @Description("The translation along the Y axis.") + @In + public double pTransY; + + @Description("The transformed feature collection.") + @Out + public SimpleFeatureCollection outVector = null; + + @Execute + public void process() throws Exception { + if (!concatOr(outVector == null, doReset)) { + return; + } + + outVector = FeatureCollections.newCollection(); + SimpleFeatureType featureType = inVector.getSchema(); + + FeatureGeometrySubstitutor substitutor = new FeatureGeometrySubstitutor(featureType); + + FeatureIterator inFeatureIterator = inVector.features(); + int id = 0; + pm.beginTask("Transforming geometries...", inVector.size()); + while( inFeatureIterator.hasNext() ) { + // copy the contents of each feature and transform the geometry + SimpleFeature feature = inFeatureIterator.next(); + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + + // m00 the X coordinate scaling element of the 3x3 matrix + // m10 the Y coordinate shearing element of the 3x3 matrix + // m01 the X coordinate shearing element of the 3x3 matrix + // m11 the Y coordinate scaling element of the 3x3 matrix + // m02 the X coordinate translation element of the 3x3 matrix + // m12 the Y coordinate translation element of the 3x3 matrix + // m00, m10, m01, m11, m02, m12 + MathTransform transform = new AffineTransform2D(1.0, 0.0, 0.0, 1.0, pTransX, pTransY); + Geometry transformedGeometry = JTS.transform(geometry, transform); + + SimpleFeature newFeature = substitutor.substituteGeometry(feature, transformedGeometry); + outVector.add(newFeature); + pm.worked(1); + } + inFeatureIterator.close(); + pm.done(); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/ui/CoverageViewer.java b/jgrassgears/src/main/java/org/jgrasstools/gears/ui/CoverageViewer.java index 5145cb4ef..749e20de2 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/ui/CoverageViewer.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/ui/CoverageViewer.java @@ -1,139 +1,139 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.ui; - -import java.awt.Color; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.awt.image.RenderedImage; - -import javax.media.jai.iterator.RectIter; -import javax.media.jai.iterator.RectIterFactory; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.factory.CommonFactoryFinder; -import org.geotools.map.DefaultMapContext; -import org.geotools.map.MapContext; -import org.geotools.styling.ColorMap; -import org.geotools.styling.ColorMapEntry; -import org.geotools.styling.RasterSymbolizer; -import org.geotools.styling.SLD; -import org.geotools.styling.Style; -import org.geotools.styling.StyleBuilder; -import org.geotools.styling.StyleFactory; -import org.geotools.swing.JMapFrame; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.opengis.filter.expression.Expression; - -@Description("Utility class for viewing coverages.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Coverage, Raster, Viewer, UI") -@Status(Status.CERTIFIED) -@UI(JGTConstants.HIDE_UI_HINT) -@License("General Public License Version 3 (GPLv3)") -public class CoverageViewer { - @Description("The coverage to visualize.") - @In - public GridCoverage2D raster = null; - - private StyleFactory sf = CommonFactoryFinder.getStyleFactory(null); - - @Execute - public void viewCoverage() throws Exception { - // RasterSymbolizer sym = sf.getDefaultRasterSymbolizer(); - // Style rasterStyle = SLD.wrapSymbolizers(sym); - - StyleBuilder sB = new StyleBuilder(sf); - RasterSymbolizer rasterSym = sf.createRasterSymbolizer(); - - ColorMap colorMap = sf.createColorMap(); - - RenderedImage renderedImage = raster.getRenderedImage(); - double max = Double.NEGATIVE_INFINITY; - double min = Double.POSITIVE_INFINITY; - RectIter iter = RectIterFactory.create(renderedImage, null); - do { - do { - double value = iter.getSampleDouble(); - if (value > max) { - max = value; - } - if (value < min) { - min = value; - } - } while( !iter.nextPixelDone() ); - iter.startPixels(); - } while( !iter.nextLineDone() ); - - // red to blue - Color fromColor = Color.blue; - Color toColor = Color.red; - Expression fromColorExpr = sB.colorExpression(new java.awt.Color(fromColor.getRed(), fromColor.getGreen(), fromColor - .getBlue(), 255)); - Expression toColorExpr = sB.colorExpression(new java.awt.Color(toColor.getRed(), toColor.getGreen(), toColor.getBlue(), - 255)); - Expression fromExpr = sB.literalExpression(min); - Expression toExpr = sB.literalExpression(max); - - ColorMapEntry entry = sf.createColorMapEntry(); - entry.setQuantity(fromExpr); - entry.setColor(fromColorExpr); - colorMap.addColorMapEntry(entry); - - entry = sf.createColorMapEntry(); - entry.setQuantity(toExpr); - entry.setColor(toColorExpr); - colorMap.addColorMapEntry(entry); - - rasterSym.setColorMap(colorMap); - - Style rasterStyle = SLD.wrapSymbolizers(rasterSym); - - // Set up a MapContext with the two layers - final MapContext map = new DefaultMapContext(); - map.setTitle("Coverage Viewer"); - map.addLayer(raster, rasterStyle); - - // Create a JMapFrame with a menu to choose the display style for the - final JMapFrame frame = new JMapFrame(map); - frame.setSize(800, 600); - frame.enableStatusBar(true); - frame.enableTool(JMapFrame.Tool.ZOOM, JMapFrame.Tool.PAN, JMapFrame.Tool.RESET); - frame.enableToolBar(true); - frame.setVisible(true); - frame.addWindowListener(new WindowAdapter(){ - public void windowClosing( WindowEvent e ) { - frame.setVisible(false); - } - }); - - while( frame.isVisible() ) { - Thread.sleep(300); - } - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.ui; + +import java.awt.Color; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.RenderedImage; + +import javax.media.jai.iterator.RectIter; +import javax.media.jai.iterator.RectIterFactory; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.factory.CommonFactoryFinder; +import org.geotools.map.DefaultMapContext; +import org.geotools.map.MapContext; +import org.geotools.styling.ColorMap; +import org.geotools.styling.ColorMapEntry; +import org.geotools.styling.RasterSymbolizer; +import org.geotools.styling.SLD; +import org.geotools.styling.Style; +import org.geotools.styling.StyleBuilder; +import org.geotools.styling.StyleFactory; +import org.geotools.swing.JMapFrame; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.opengis.filter.expression.Expression; + +@Description("Utility class for viewing coverages.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Coverage, Raster, Viewer, UI") +@Status(Status.CERTIFIED) +@UI(JGTConstants.HIDE_UI_HINT) +@License("General Public License Version 3 (GPLv3)") +public class CoverageViewer { + @Description("The coverage to visualize.") + @In + public GridCoverage2D raster = null; + + private StyleFactory sf = CommonFactoryFinder.getStyleFactory(null); + + @Execute + public void viewCoverage() throws Exception { + // RasterSymbolizer sym = sf.getDefaultRasterSymbolizer(); + // Style rasterStyle = SLD.wrapSymbolizers(sym); + + StyleBuilder sB = new StyleBuilder(sf); + RasterSymbolizer rasterSym = sf.createRasterSymbolizer(); + + ColorMap colorMap = sf.createColorMap(); + + RenderedImage renderedImage = raster.getRenderedImage(); + double max = Double.NEGATIVE_INFINITY; + double min = Double.POSITIVE_INFINITY; + RectIter iter = RectIterFactory.create(renderedImage, null); + do { + do { + double value = iter.getSampleDouble(); + if (value > max) { + max = value; + } + if (value < min) { + min = value; + } + } while( !iter.nextPixelDone() ); + iter.startPixels(); + } while( !iter.nextLineDone() ); + + // red to blue + Color fromColor = Color.blue; + Color toColor = Color.red; + Expression fromColorExpr = sB.colorExpression(new java.awt.Color(fromColor.getRed(), fromColor.getGreen(), fromColor + .getBlue(), 255)); + Expression toColorExpr = sB.colorExpression(new java.awt.Color(toColor.getRed(), toColor.getGreen(), toColor.getBlue(), + 255)); + Expression fromExpr = sB.literalExpression(min); + Expression toExpr = sB.literalExpression(max); + + ColorMapEntry entry = sf.createColorMapEntry(); + entry.setQuantity(fromExpr); + entry.setColor(fromColorExpr); + colorMap.addColorMapEntry(entry); + + entry = sf.createColorMapEntry(); + entry.setQuantity(toExpr); + entry.setColor(toColorExpr); + colorMap.addColorMapEntry(entry); + + rasterSym.setColorMap(colorMap); + + Style rasterStyle = SLD.wrapSymbolizers(rasterSym); + + // Set up a MapContext with the two layers + final MapContext map = new DefaultMapContext(); + map.setTitle("Coverage Viewer"); + map.addLayer(raster, rasterStyle); + + // Create a JMapFrame with a menu to choose the display style for the + final JMapFrame frame = new JMapFrame(map); + frame.setSize(800, 600); + frame.enableStatusBar(true); + frame.enableTool(JMapFrame.Tool.ZOOM, JMapFrame.Tool.PAN, JMapFrame.Tool.RESET); + frame.enableToolBar(true); + frame.setVisible(true); + frame.addWindowListener(new WindowAdapter(){ + public void windowClosing( WindowEvent e ) { + frame.setVisible(false); + } + }); + + while( frame.isVisible() ) { + Thread.sleep(300); + } + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/ui/MapsViewer.java b/jgrassgears/src/main/java/org/jgrasstools/gears/ui/MapsViewer.java index 37470ffdf..da31bdb4f 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/ui/MapsViewer.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/ui/MapsViewer.java @@ -1,311 +1,311 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.ui; - -import java.awt.Color; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.awt.image.RenderedImage; -import java.io.File; - -import javax.media.jai.iterator.RectIter; -import javax.media.jai.iterator.RectIterFactory; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Documentation; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Status; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.factory.CommonFactoryFinder; -import org.geotools.factory.GeoTools; -import org.geotools.map.DefaultMapContext; -import org.geotools.map.MapContext; -import org.geotools.styling.ColorMap; -import org.geotools.styling.ColorMapEntry; -import org.geotools.styling.FeatureTypeStyle; -import org.geotools.styling.Fill; -import org.geotools.styling.Graphic; -import org.geotools.styling.Mark; -import org.geotools.styling.PointSymbolizer; -import org.geotools.styling.PolygonSymbolizer; -import org.geotools.styling.RasterSymbolizer; -import org.geotools.styling.Rule; -import org.geotools.styling.SLD; -import org.geotools.styling.SLDParser; -import org.geotools.styling.SLDTransformer; -import org.geotools.styling.Stroke; -import org.geotools.styling.Style; -import org.geotools.styling.StyleBuilder; -import org.geotools.styling.StyleFactory; -import org.geotools.styling.StyledLayerDescriptor; -import org.geotools.swing.JMapFrame; -import org.jgrasstools.gears.io.rasterreader.RasterReader; -import org.jgrasstools.gears.io.shapefile.ShapefileFeatureReader; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities.GEOMETRYTYPE; -import org.opengis.feature.type.GeometryDescriptor; -import org.opengis.filter.FilterFactory; -import org.opengis.filter.expression.Expression; - -@Description("A simple geodata viewer.") -@Documentation("MapsViewer.html") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Coverage, Raster, Viewer, UI") -@Status(Status.CERTIFIED) -@Name("mapsviewer") -@License("General Public License Version 3 (GPLv3)") -public class MapsViewer { - @Description("The rasters to visualize.") - @In - public GridCoverage2D[] inRasters = new GridCoverage2D[0]; - - @Description("The raster to visualize.") - @In - public GridCoverage2D inRaster = null; - - @Description("The feature collections to visualize.") - @In - public SimpleFeatureCollection[] inVectors = new SimpleFeatureCollection[0]; - - @Description("The feature collection to visualize.") - @In - public SimpleFeatureCollection inVector = null; - - @Description("The feature collections style layer.") - @In - public String inSld = null; - - private StyleFactory sf = CommonFactoryFinder.getStyleFactory(GeoTools.getDefaultHints()); - private FilterFactory ff = CommonFactoryFinder.getFilterFactory(GeoTools.getDefaultHints()); - private StyleBuilder sb = new StyleBuilder(sf, ff); - - private Style namedStyle; - - @Execute - public void displayMaps() throws Exception { - final MapContext map = new DefaultMapContext(); - map.setTitle("Maps Viewer"); - - RasterSymbolizer rasterSym = sf.createRasterSymbolizer(); - - if (inRaster != null) { - inRasters = new GridCoverage2D[]{inRaster}; - } - addCoverages(map, sb, rasterSym); - - if (inVector != null) { - inVectors = new SimpleFeatureCollection[]{inVector}; - // does it have style - if (inSld != null) { - File sldFile = new File(inSld); - if (sldFile.exists()) { - SLDParser stylereader = new SLDParser(sf, sldFile); - StyledLayerDescriptor sld = stylereader.parseSLD(); - - namedStyle = SLD.defaultStyle(sld); - SLDTransformer aTransformer = new SLDTransformer(); - aTransformer.setIndentation(4); - String xml = ""; //$NON-NLS-1$ - xml = aTransformer.transform(sld); - System.out.println(xml); - } - } - - } - addFeatureCollections(map); - - // Create a JMapFrame with a menu to choose the display style for the - final JMapFrame frame = new JMapFrame(map); - frame.setSize(800, 600); - frame.enableStatusBar(true); - frame.enableTool(JMapFrame.Tool.ZOOM, JMapFrame.Tool.PAN, JMapFrame.Tool.RESET); - frame.enableToolBar(true); - frame.setVisible(true); - frame.addWindowListener(new WindowAdapter(){ - public void windowClosing( WindowEvent e ) { - frame.setVisible(false); - } - }); - - while( frame.isVisible() ) { - Thread.sleep(300); - } - } - - private void addFeatureCollections( MapContext map ) { - for( SimpleFeatureCollection fc : inVectors ) { - GeometryDescriptor geometryDescriptor = fc.getSchema().getGeometryDescriptor(); - GEOMETRYTYPE type = GeometryUtilities.getGeometryType(geometryDescriptor.getType()); - - switch( type ) { - case MULTIPOLYGON: - case POLYGON: - - Stroke polygonStroke = sf.createStroke(ff.literal(Color.BLACK), ff.literal(1)); - Fill polygonFill = sf.createFill(ff.literal(Color.RED), ff.literal(0.5)); - - Rule polygonRule = sf.createRule(); - PolygonSymbolizer polygonSymbolizer = sf.createPolygonSymbolizer(polygonStroke, polygonFill, null); - polygonRule.symbolizers().add(polygonSymbolizer); - - FeatureTypeStyle polygonFeatureTypeStyle = sf.createFeatureTypeStyle(); - polygonFeatureTypeStyle.rules().add(polygonRule); - - namedStyle = sf.createStyle(); - namedStyle.featureTypeStyles().add(polygonFeatureTypeStyle); - namedStyle.setName("polygons"); - - break; - case MULTIPOINT: - case POINT: - if (namedStyle == null) { - Mark circleMark = sf.getCircleMark(); - Fill fill = sf.createFill(ff.literal(Color.RED)); - circleMark.setFill(fill); - // circleMark.setStroke(null); - - Graphic gr = sf.createDefaultGraphic(); - gr.graphicalSymbols().clear(); - gr.graphicalSymbols().add(circleMark); - Expression size = ff.literal(6); - gr.setSize(size); - - Rule pointRule = sf.createRule(); - PointSymbolizer pointSymbolizer = sf.createPointSymbolizer(gr, null); - pointRule.symbolizers().add(pointSymbolizer); - - FeatureTypeStyle pointsFeatureTypeStyle = sf.createFeatureTypeStyle(); - pointsFeatureTypeStyle.rules().add(pointRule); - - namedStyle = sf.createStyle(); - namedStyle.featureTypeStyles().add(pointsFeatureTypeStyle); - namedStyle.setName("points"); - } - break; - case MULTILINE: - case LINE: - - break; - - default: - break; - } - - map.addLayer(fc, namedStyle); - - } - - } - - private void addCoverages( final MapContext map, StyleBuilder sB, RasterSymbolizer rasterSym ) { - ColorMap colorMap = sf.createColorMap(); - - for( GridCoverage2D coverage : inRasters ) { - RenderedImage renderedImage = coverage.getRenderedImage(); - double max = Double.NEGATIVE_INFINITY; - double min = Double.POSITIVE_INFINITY; - RectIter iter = RectIterFactory.create(renderedImage, null); - do { - do { - double value = iter.getSampleDouble(); - if (value > max) { - max = value; - } - if (value < min) { - min = value; - } - } while( !iter.nextPixelDone() ); - iter.startPixels(); - } while( !iter.nextLineDone() ); - - // red to blue - Color fromColor = Color.blue; - Color midColor = Color.green; - Color toColor = Color.red; - Expression fromColorExpr = sB.colorExpression(new java.awt.Color(fromColor.getRed(), fromColor.getGreen(), fromColor - .getBlue(), 255)); - Expression midColorExpr = sB.colorExpression(new java.awt.Color(midColor.getRed(), midColor.getGreen(), midColor - .getBlue(), 255)); - Expression toColorExpr = sB.colorExpression(new java.awt.Color(toColor.getRed(), toColor.getGreen(), toColor - .getBlue(), 255)); - Expression fromExpr = sB.literalExpression(min); - Expression midExpr = sB.literalExpression(min + (max - min) / 2); - Expression toExpr = sB.literalExpression(max); - - ColorMapEntry entry = sf.createColorMapEntry(); - entry.setQuantity(fromExpr); - entry.setColor(fromColorExpr); - colorMap.addColorMapEntry(entry); - - entry = sf.createColorMapEntry(); - entry.setQuantity(midExpr); - entry.setColor(midColorExpr); - colorMap.addColorMapEntry(entry); - - entry = sf.createColorMapEntry(); - entry.setQuantity(toExpr); - entry.setColor(toColorExpr); - colorMap.addColorMapEntry(entry); - - rasterSym.setColorMap(colorMap); - - Style rasterStyle = SLD.wrapSymbolizers(rasterSym); - - map.addLayer(coverage, rasterStyle); - } - } - - public static synchronized void displayRasterAndFeatures( final GridCoverage2D raster, - final SimpleFeatureCollection... vectors ) throws Exception { - - new Thread(){ - @Override - public void run() { - MapsViewer viewer = new MapsViewer(); - if (raster != null) { - viewer.inRasters = new GridCoverage2D[]{raster}; - } - if (vectors != null) { - viewer.inVectors = vectors; - } - try { - viewer.displayMaps(); - } catch (Exception e) { - e.printStackTrace(); - } - } - }.start(); - - } - - @SuppressWarnings("nls") - public static void main( String[] args ) throws Exception { - GridCoverage2D coverage = RasterReader.readRaster("/home/moovida/TMP/byumba_basins.asc"); - SimpleFeatureCollection shapefile = ShapefileFeatureReader - .readShapefile("/home/moovida/TMP/byumba_extrbasins.shp"); - displayRasterAndFeatures(coverage, shapefile); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.ui; + +import java.awt.Color; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.RenderedImage; +import java.io.File; + +import javax.media.jai.iterator.RectIter; +import javax.media.jai.iterator.RectIterFactory; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Documentation; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Status; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.factory.CommonFactoryFinder; +import org.geotools.factory.GeoTools; +import org.geotools.map.DefaultMapContext; +import org.geotools.map.MapContext; +import org.geotools.styling.ColorMap; +import org.geotools.styling.ColorMapEntry; +import org.geotools.styling.FeatureTypeStyle; +import org.geotools.styling.Fill; +import org.geotools.styling.Graphic; +import org.geotools.styling.Mark; +import org.geotools.styling.PointSymbolizer; +import org.geotools.styling.PolygonSymbolizer; +import org.geotools.styling.RasterSymbolizer; +import org.geotools.styling.Rule; +import org.geotools.styling.SLD; +import org.geotools.styling.SLDParser; +import org.geotools.styling.SLDTransformer; +import org.geotools.styling.Stroke; +import org.geotools.styling.Style; +import org.geotools.styling.StyleBuilder; +import org.geotools.styling.StyleFactory; +import org.geotools.styling.StyledLayerDescriptor; +import org.geotools.swing.JMapFrame; +import org.jgrasstools.gears.io.rasterreader.RasterReader; +import org.jgrasstools.gears.io.shapefile.ShapefileFeatureReader; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities.GEOMETRYTYPE; +import org.opengis.feature.type.GeometryDescriptor; +import org.opengis.filter.FilterFactory; +import org.opengis.filter.expression.Expression; + +@Description("A simple geodata viewer.") +@Documentation("MapsViewer.html") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Coverage, Raster, Viewer, UI") +@Status(Status.CERTIFIED) +@Name("mapsviewer") +@License("General Public License Version 3 (GPLv3)") +public class MapsViewer { + @Description("The rasters to visualize.") + @In + public GridCoverage2D[] inRasters = new GridCoverage2D[0]; + + @Description("The raster to visualize.") + @In + public GridCoverage2D inRaster = null; + + @Description("The feature collections to visualize.") + @In + public SimpleFeatureCollection[] inVectors = new SimpleFeatureCollection[0]; + + @Description("The feature collection to visualize.") + @In + public SimpleFeatureCollection inVector = null; + + @Description("The feature collections style layer.") + @In + public String inSld = null; + + private StyleFactory sf = CommonFactoryFinder.getStyleFactory(GeoTools.getDefaultHints()); + private FilterFactory ff = CommonFactoryFinder.getFilterFactory(GeoTools.getDefaultHints()); + private StyleBuilder sb = new StyleBuilder(sf, ff); + + private Style namedStyle; + + @Execute + public void displayMaps() throws Exception { + final MapContext map = new DefaultMapContext(); + map.setTitle("Maps Viewer"); + + RasterSymbolizer rasterSym = sf.createRasterSymbolizer(); + + if (inRaster != null) { + inRasters = new GridCoverage2D[]{inRaster}; + } + addCoverages(map, sb, rasterSym); + + if (inVector != null) { + inVectors = new SimpleFeatureCollection[]{inVector}; + // does it have style + if (inSld != null) { + File sldFile = new File(inSld); + if (sldFile.exists()) { + SLDParser stylereader = new SLDParser(sf, sldFile); + StyledLayerDescriptor sld = stylereader.parseSLD(); + + namedStyle = SLD.defaultStyle(sld); + SLDTransformer aTransformer = new SLDTransformer(); + aTransformer.setIndentation(4); + String xml = ""; //$NON-NLS-1$ + xml = aTransformer.transform(sld); + System.out.println(xml); + } + } + + } + addFeatureCollections(map); + + // Create a JMapFrame with a menu to choose the display style for the + final JMapFrame frame = new JMapFrame(map); + frame.setSize(800, 600); + frame.enableStatusBar(true); + frame.enableTool(JMapFrame.Tool.ZOOM, JMapFrame.Tool.PAN, JMapFrame.Tool.RESET); + frame.enableToolBar(true); + frame.setVisible(true); + frame.addWindowListener(new WindowAdapter(){ + public void windowClosing( WindowEvent e ) { + frame.setVisible(false); + } + }); + + while( frame.isVisible() ) { + Thread.sleep(300); + } + } + + private void addFeatureCollections( MapContext map ) { + for( SimpleFeatureCollection fc : inVectors ) { + GeometryDescriptor geometryDescriptor = fc.getSchema().getGeometryDescriptor(); + GEOMETRYTYPE type = GeometryUtilities.getGeometryType(geometryDescriptor.getType()); + + switch( type ) { + case MULTIPOLYGON: + case POLYGON: + + Stroke polygonStroke = sf.createStroke(ff.literal(Color.BLACK), ff.literal(1)); + Fill polygonFill = sf.createFill(ff.literal(Color.RED), ff.literal(0.5)); + + Rule polygonRule = sf.createRule(); + PolygonSymbolizer polygonSymbolizer = sf.createPolygonSymbolizer(polygonStroke, polygonFill, null); + polygonRule.symbolizers().add(polygonSymbolizer); + + FeatureTypeStyle polygonFeatureTypeStyle = sf.createFeatureTypeStyle(); + polygonFeatureTypeStyle.rules().add(polygonRule); + + namedStyle = sf.createStyle(); + namedStyle.featureTypeStyles().add(polygonFeatureTypeStyle); + namedStyle.setName("polygons"); + + break; + case MULTIPOINT: + case POINT: + if (namedStyle == null) { + Mark circleMark = sf.getCircleMark(); + Fill fill = sf.createFill(ff.literal(Color.RED)); + circleMark.setFill(fill); + // circleMark.setStroke(null); + + Graphic gr = sf.createDefaultGraphic(); + gr.graphicalSymbols().clear(); + gr.graphicalSymbols().add(circleMark); + Expression size = ff.literal(6); + gr.setSize(size); + + Rule pointRule = sf.createRule(); + PointSymbolizer pointSymbolizer = sf.createPointSymbolizer(gr, null); + pointRule.symbolizers().add(pointSymbolizer); + + FeatureTypeStyle pointsFeatureTypeStyle = sf.createFeatureTypeStyle(); + pointsFeatureTypeStyle.rules().add(pointRule); + + namedStyle = sf.createStyle(); + namedStyle.featureTypeStyles().add(pointsFeatureTypeStyle); + namedStyle.setName("points"); + } + break; + case MULTILINE: + case LINE: + + break; + + default: + break; + } + + map.addLayer(fc, namedStyle); + + } + + } + + private void addCoverages( final MapContext map, StyleBuilder sB, RasterSymbolizer rasterSym ) { + ColorMap colorMap = sf.createColorMap(); + + for( GridCoverage2D coverage : inRasters ) { + RenderedImage renderedImage = coverage.getRenderedImage(); + double max = Double.NEGATIVE_INFINITY; + double min = Double.POSITIVE_INFINITY; + RectIter iter = RectIterFactory.create(renderedImage, null); + do { + do { + double value = iter.getSampleDouble(); + if (value > max) { + max = value; + } + if (value < min) { + min = value; + } + } while( !iter.nextPixelDone() ); + iter.startPixels(); + } while( !iter.nextLineDone() ); + + // red to blue + Color fromColor = Color.blue; + Color midColor = Color.green; + Color toColor = Color.red; + Expression fromColorExpr = sB.colorExpression(new java.awt.Color(fromColor.getRed(), fromColor.getGreen(), fromColor + .getBlue(), 255)); + Expression midColorExpr = sB.colorExpression(new java.awt.Color(midColor.getRed(), midColor.getGreen(), midColor + .getBlue(), 255)); + Expression toColorExpr = sB.colorExpression(new java.awt.Color(toColor.getRed(), toColor.getGreen(), toColor + .getBlue(), 255)); + Expression fromExpr = sB.literalExpression(min); + Expression midExpr = sB.literalExpression(min + (max - min) / 2); + Expression toExpr = sB.literalExpression(max); + + ColorMapEntry entry = sf.createColorMapEntry(); + entry.setQuantity(fromExpr); + entry.setColor(fromColorExpr); + colorMap.addColorMapEntry(entry); + + entry = sf.createColorMapEntry(); + entry.setQuantity(midExpr); + entry.setColor(midColorExpr); + colorMap.addColorMapEntry(entry); + + entry = sf.createColorMapEntry(); + entry.setQuantity(toExpr); + entry.setColor(toColorExpr); + colorMap.addColorMapEntry(entry); + + rasterSym.setColorMap(colorMap); + + Style rasterStyle = SLD.wrapSymbolizers(rasterSym); + + map.addLayer(coverage, rasterStyle); + } + } + + public static synchronized void displayRasterAndFeatures( final GridCoverage2D raster, + final SimpleFeatureCollection... vectors ) throws Exception { + + new Thread(){ + @Override + public void run() { + MapsViewer viewer = new MapsViewer(); + if (raster != null) { + viewer.inRasters = new GridCoverage2D[]{raster}; + } + if (vectors != null) { + viewer.inVectors = vectors; + } + try { + viewer.displayMaps(); + } catch (Exception e) { + e.printStackTrace(); + } + } + }.start(); + + } + + @SuppressWarnings("nls") + public static void main( String[] args ) throws Exception { + GridCoverage2D coverage = RasterReader.readRaster("/home/moovida/TMP/byumba_basins.asc"); + SimpleFeatureCollection shapefile = ShapefileFeatureReader + .readShapefile("/home/moovida/TMP/byumba_extrbasins.shp"); + displayRasterAndFeatures(coverage, shapefile); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/ui/MatrixCharter.java b/jgrassgears/src/main/java/org/jgrasstools/gears/ui/MatrixCharter.java index 29ee6c06d..778d6f50b 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/ui/MatrixCharter.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/ui/MatrixCharter.java @@ -1,315 +1,315 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.ui; - -import java.awt.Color; -import java.awt.image.BufferedImage; -import java.io.File; -import java.text.DecimalFormat; - -import javax.imageio.ImageIO; - -import oms3.annotations.Author; -import oms3.annotations.Description; -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Keywords; -import oms3.annotations.License; -import oms3.annotations.Name; -import oms3.annotations.Status; -import oms3.annotations.UI; - -import org.jfree.chart.ChartFactory; -import org.jfree.chart.ChartPanel; -import org.jfree.chart.JFreeChart; -import org.jfree.chart.axis.NumberAxis; -import org.jfree.chart.axis.ValueAxis; -import org.jfree.chart.plot.PlotOrientation; -import org.jfree.chart.plot.XYPlot; -import org.jfree.chart.renderer.xy.StandardXYBarPainter; -import org.jfree.chart.renderer.xy.XYBarRenderer; -import org.jfree.chart.renderer.xy.XYItemRenderer; -import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; -import org.jfree.chart.title.TextTitle; -import org.jfree.data.xy.XYBarDataset; -import org.jfree.data.xy.XYSeries; -import org.jfree.data.xy.XYSeriesCollection; -import org.jfree.ui.ApplicationFrame; -import org.jfree.ui.RefineryUtilities; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.modules.JGTModel; -import org.jgrasstools.gears.utils.files.FileUtilities; - -@Description("Utility class for charting matrix data.") -@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") -@Keywords("Viewer, UI, Chart") -@Status(Status.EXPERIMENTAL) -@UI(JGTConstants.HIDE_UI_HINT) -@Name("matrixcharter") -@License("General Public License Version 3 (GPLv3)") -public class MatrixCharter extends JGTModel { - @Description("The matrix to chart.") - @In - public double[][] inData; - - @Description("The data title.") - @In - public String inTitle; - - @Description("The subtitle.") - @In - public String inSubTitle; - - @Description("The data series names.") - @In - public String[] inSeries; - - @Description("The optional data series colors. Format is rbg triplets delimited by semicolon: ex. 0,0,255;0,255,0;255,0,0. The colors have to be the same number as the series.") - @In - public String inColors; - - @Description("The axis labels (x, y1, y2, ...).") - @In - public String[] inLabels; - - @Description("The data formats (dates and numeric formatting patterns).") - @In - public String[] inFormats; - - @Description("The data types (dates or numerics like double, int).") - @In - public String[] inTypes; - - @Description("Chart type: 0 = line, 1 = histogram (default is 0).") - @In - public int pType = 0;; - - @Description("Chart the data.") - @In - public boolean doChart; - - @Description("Dump the chart to disk.") - @In - public boolean doDump; - - @Description("Show the legend.") - @In - public boolean doLegend; - - @Description("Show shapes in line charts.") - @In - public boolean doPoints; - - @Description("Cumulate data.") - @In - public boolean doCumulate; - - @Description("Normalize data.") - @In - public boolean doNormalize; - - @Description("Chart image width (in case of doDump=true, defaults to 800 px).") - @In - public int pWidth = 800; - - @Description("Chart image height (in case of doDump=true, defaults to 600 px).") - @In - public int pHeight = 600; - - @Description("Chart dump path (in case of doDump=true).") - @In - public String inChartPath; - - private double max = Double.NEGATIVE_INFINITY; - private double min = Double.POSITIVE_INFINITY; - private double minInterval = 1000; - - @Execute - public void chart() throws Exception { - checkNull((Object) inData); - - if (doDump) { - checkNull(inChartPath); - } - - JFreeChart chart = null; - if (pType == 0) { - chart = doLineChart(); - } else { - chart = doBarChart(); - } - if (inSubTitle != null) { - TextTitle subTitle = new TextTitle(inSubTitle); - chart.addSubtitle(subTitle); - } - chart.setTextAntiAlias(true); - - if (doDump) { - File chartFile = new File(inChartPath); - if (!chartFile.getName().endsWith(".png")) { - chartFile = FileUtilities.substituteExtention(chartFile, "png"); - } - BufferedImage bufferedImage = chart.createBufferedImage(pWidth, pHeight); - ImageIO.write(bufferedImage, "png", chartFile); - } - - if (doChart) { - ChartPanel cp = new ChartPanel(chart); - cp.setDomainZoomable(true); - cp.setRangeZoomable(true); - - ApplicationFrame af = new ApplicationFrame(""); - af.setContentPane(cp); - af.pack(); - af.setVisible(true); - RefineryUtilities.centerFrameOnScreen(af); - } - } - - private XYSeriesCollection getSeriesCollection() { - XYSeriesCollection collection = new XYSeriesCollection(); - for( int i = 0; i < inSeries.length; i++ ) { - String seriesName = inSeries[i]; - XYSeries series = new XYSeries(seriesName); - - double previous = 0; - double[] x = new double[inData.length]; - double[] y = new double[inData.length]; - for( int j = 0; j < inData.length; j++ ) { - double value; - if (!doCumulate) { - value = inData[j][i + 1]; - } else { - value = previous + inData[j][i + 1]; - } - x[j] = inData[j][0]; - y[j] = value; - max = Math.max(max, value); - min = Math.min(min, value); - previous = value; - if (j > 1) { - minInterval = Math.min(minInterval, inData[j - 1][0] - inData[j][0]); - } - } - if (doNormalize) { - for( int k = 0; k < y.length; k++ ) { - y[k] = y[k] / max; - } - max = 1.0; - min = 0.0; - } - for( int k = 0; k < y.length; k++ ) { - series.add(x[k], y[k]); - } - collection.addSeries(series); - } - return collection; - } - - private JFreeChart doBarChart() { - XYSeriesCollection collection = getSeriesCollection(); - XYBarDataset xyBarDataset = new XYBarDataset(collection, minInterval); - JFreeChart chart = ChartFactory.createHistogram(inTitle, inLabels[0], inLabels[1], xyBarDataset, - PlotOrientation.VERTICAL, doLegend, true, false); - XYPlot plot = (XYPlot) chart.getPlot(); - plot.setForegroundAlpha(0.85f); - NumberAxis yAxis = (NumberAxis) plot.getRangeAxis(); - yAxis.setStandardTickUnits(NumberAxis.createStandardTickUnits()); - double delta = (max - min) * 0.1; - yAxis.setRange(min, max + delta); - yAxis.setMinorTickCount(4); - yAxis.setMinorTickMarksVisible(true); - if (inFormats != null && inFormats.length > 0 && inFormats[1].trim().length() > 0) { - yAxis.setNumberFormatOverride(new DecimalFormat(inFormats[1])); - } - - if (inFormats != null && inFormats.length > 0 && inFormats[0].trim().length() > 0) { - ValueAxis domainAxis = plot.getDomainAxis(); - if (domainAxis instanceof NumberAxis) { - NumberAxis xAxis = (NumberAxis) domainAxis; - xAxis.setNumberFormatOverride(new DecimalFormat(inFormats[0])); - } - } - - XYBarRenderer renderer = (XYBarRenderer) plot.getRenderer(); - renderer.setDrawBarOutline(false); - renderer.setBarPainter(new StandardXYBarPainter()); - renderer.setShadowVisible(false); - - if (inColors != null) { - String[] colorSplit = inColors.split(";"); - for( int i = 0; i < colorSplit.length; i++ ) { - String[] split = colorSplit[i].split(","); - int r = (int) Double.parseDouble(split[0]); - int g = (int) Double.parseDouble(split[1]); - int b = (int) Double.parseDouble(split[2]); - renderer.setSeriesPaint(i, new Color(r, g, b)); - } - } - - return chart; - } - - @SuppressWarnings("deprecation") - private JFreeChart doLineChart() { - XYSeriesCollection collection = getSeriesCollection(); - JFreeChart chart = ChartFactory.createXYLineChart(inTitle, inLabels[0], inLabels[1], collection, - PlotOrientation.VERTICAL, doLegend, true, false); - XYPlot plot = (XYPlot) chart.getPlot(); - - XYItemRenderer plotRenderer = plot.getRenderer(); - if (plotRenderer instanceof XYLineAndShapeRenderer) { - XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plotRenderer; - if (doPoints) { - renderer.setShapesVisible(true); - renderer.setShapesFilled(true); - } - - if (inColors != null) { - String[] colorSplit = inColors.split(";"); - for( int i = 0; i < colorSplit.length; i++ ) { - String[] split = colorSplit[i].split(","); - int r = (int) Double.parseDouble(split[0]); - int g = (int) Double.parseDouble(split[1]); - int b = (int) Double.parseDouble(split[2]); - renderer.setSeriesPaint(i, new Color(r, g, b)); - } - } - } - - NumberAxis yAxis = (NumberAxis) plot.getRangeAxis(); - yAxis.setStandardTickUnits(NumberAxis.createStandardTickUnits()); - double delta = (max - min) * 0.1; - yAxis.setRange(min, max + delta); - yAxis.setMinorTickCount(4); - yAxis.setMinorTickMarksVisible(true); - if (inFormats != null && inFormats.length > 1 && inFormats[1].trim().length() > 0) { - yAxis.setNumberFormatOverride(new DecimalFormat(inFormats[1])); - } - - if (inFormats != null && inFormats.length > 0 && inFormats[0].trim().length() > 0) { - ValueAxis domainAxis = plot.getDomainAxis(); - if (domainAxis instanceof NumberAxis) { - NumberAxis xAxis = (NumberAxis) domainAxis; - xAxis.setNumberFormatOverride(new DecimalFormat(inFormats[0])); - } - } - return chart; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.ui; + +import java.awt.Color; +import java.awt.image.BufferedImage; +import java.io.File; +import java.text.DecimalFormat; + +import javax.imageio.ImageIO; + +import oms3.annotations.Author; +import oms3.annotations.Description; +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Keywords; +import oms3.annotations.License; +import oms3.annotations.Name; +import oms3.annotations.Status; +import oms3.annotations.UI; + +import org.jfree.chart.ChartFactory; +import org.jfree.chart.ChartPanel; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.axis.ValueAxis; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.chart.plot.XYPlot; +import org.jfree.chart.renderer.xy.StandardXYBarPainter; +import org.jfree.chart.renderer.xy.XYBarRenderer; +import org.jfree.chart.renderer.xy.XYItemRenderer; +import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; +import org.jfree.chart.title.TextTitle; +import org.jfree.data.xy.XYBarDataset; +import org.jfree.data.xy.XYSeries; +import org.jfree.data.xy.XYSeriesCollection; +import org.jfree.ui.ApplicationFrame; +import org.jfree.ui.RefineryUtilities; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.modules.JGTModel; +import org.jgrasstools.gears.utils.files.FileUtilities; + +@Description("Utility class for charting matrix data.") +@Author(name = "Andrea Antonello", contact = "http://www.hydrologis.com") +@Keywords("Viewer, UI, Chart") +@Status(Status.EXPERIMENTAL) +@UI(JGTConstants.HIDE_UI_HINT) +@Name("matrixcharter") +@License("General Public License Version 3 (GPLv3)") +public class MatrixCharter extends JGTModel { + @Description("The matrix to chart.") + @In + public double[][] inData; + + @Description("The data title.") + @In + public String inTitle; + + @Description("The subtitle.") + @In + public String inSubTitle; + + @Description("The data series names.") + @In + public String[] inSeries; + + @Description("The optional data series colors. Format is rbg triplets delimited by semicolon: ex. 0,0,255;0,255,0;255,0,0. The colors have to be the same number as the series.") + @In + public String inColors; + + @Description("The axis labels (x, y1, y2, ...).") + @In + public String[] inLabels; + + @Description("The data formats (dates and numeric formatting patterns).") + @In + public String[] inFormats; + + @Description("The data types (dates or numerics like double, int).") + @In + public String[] inTypes; + + @Description("Chart type: 0 = line, 1 = histogram (default is 0).") + @In + public int pType = 0;; + + @Description("Chart the data.") + @In + public boolean doChart; + + @Description("Dump the chart to disk.") + @In + public boolean doDump; + + @Description("Show the legend.") + @In + public boolean doLegend; + + @Description("Show shapes in line charts.") + @In + public boolean doPoints; + + @Description("Cumulate data.") + @In + public boolean doCumulate; + + @Description("Normalize data.") + @In + public boolean doNormalize; + + @Description("Chart image width (in case of doDump=true, defaults to 800 px).") + @In + public int pWidth = 800; + + @Description("Chart image height (in case of doDump=true, defaults to 600 px).") + @In + public int pHeight = 600; + + @Description("Chart dump path (in case of doDump=true).") + @In + public String inChartPath; + + private double max = Double.NEGATIVE_INFINITY; + private double min = Double.POSITIVE_INFINITY; + private double minInterval = 1000; + + @Execute + public void chart() throws Exception { + checkNull((Object) inData); + + if (doDump) { + checkNull(inChartPath); + } + + JFreeChart chart = null; + if (pType == 0) { + chart = doLineChart(); + } else { + chart = doBarChart(); + } + if (inSubTitle != null) { + TextTitle subTitle = new TextTitle(inSubTitle); + chart.addSubtitle(subTitle); + } + chart.setTextAntiAlias(true); + + if (doDump) { + File chartFile = new File(inChartPath); + if (!chartFile.getName().endsWith(".png")) { + chartFile = FileUtilities.substituteExtention(chartFile, "png"); + } + BufferedImage bufferedImage = chart.createBufferedImage(pWidth, pHeight); + ImageIO.write(bufferedImage, "png", chartFile); + } + + if (doChart) { + ChartPanel cp = new ChartPanel(chart); + cp.setDomainZoomable(true); + cp.setRangeZoomable(true); + + ApplicationFrame af = new ApplicationFrame(""); + af.setContentPane(cp); + af.pack(); + af.setVisible(true); + RefineryUtilities.centerFrameOnScreen(af); + } + } + + private XYSeriesCollection getSeriesCollection() { + XYSeriesCollection collection = new XYSeriesCollection(); + for( int i = 0; i < inSeries.length; i++ ) { + String seriesName = inSeries[i]; + XYSeries series = new XYSeries(seriesName); + + double previous = 0; + double[] x = new double[inData.length]; + double[] y = new double[inData.length]; + for( int j = 0; j < inData.length; j++ ) { + double value; + if (!doCumulate) { + value = inData[j][i + 1]; + } else { + value = previous + inData[j][i + 1]; + } + x[j] = inData[j][0]; + y[j] = value; + max = Math.max(max, value); + min = Math.min(min, value); + previous = value; + if (j > 1) { + minInterval = Math.min(minInterval, inData[j - 1][0] - inData[j][0]); + } + } + if (doNormalize) { + for( int k = 0; k < y.length; k++ ) { + y[k] = y[k] / max; + } + max = 1.0; + min = 0.0; + } + for( int k = 0; k < y.length; k++ ) { + series.add(x[k], y[k]); + } + collection.addSeries(series); + } + return collection; + } + + private JFreeChart doBarChart() { + XYSeriesCollection collection = getSeriesCollection(); + XYBarDataset xyBarDataset = new XYBarDataset(collection, minInterval); + JFreeChart chart = ChartFactory.createHistogram(inTitle, inLabels[0], inLabels[1], xyBarDataset, + PlotOrientation.VERTICAL, doLegend, true, false); + XYPlot plot = (XYPlot) chart.getPlot(); + plot.setForegroundAlpha(0.85f); + NumberAxis yAxis = (NumberAxis) plot.getRangeAxis(); + yAxis.setStandardTickUnits(NumberAxis.createStandardTickUnits()); + double delta = (max - min) * 0.1; + yAxis.setRange(min, max + delta); + yAxis.setMinorTickCount(4); + yAxis.setMinorTickMarksVisible(true); + if (inFormats != null && inFormats.length > 0 && inFormats[1].trim().length() > 0) { + yAxis.setNumberFormatOverride(new DecimalFormat(inFormats[1])); + } + + if (inFormats != null && inFormats.length > 0 && inFormats[0].trim().length() > 0) { + ValueAxis domainAxis = plot.getDomainAxis(); + if (domainAxis instanceof NumberAxis) { + NumberAxis xAxis = (NumberAxis) domainAxis; + xAxis.setNumberFormatOverride(new DecimalFormat(inFormats[0])); + } + } + + XYBarRenderer renderer = (XYBarRenderer) plot.getRenderer(); + renderer.setDrawBarOutline(false); + renderer.setBarPainter(new StandardXYBarPainter()); + renderer.setShadowVisible(false); + + if (inColors != null) { + String[] colorSplit = inColors.split(";"); + for( int i = 0; i < colorSplit.length; i++ ) { + String[] split = colorSplit[i].split(","); + int r = (int) Double.parseDouble(split[0]); + int g = (int) Double.parseDouble(split[1]); + int b = (int) Double.parseDouble(split[2]); + renderer.setSeriesPaint(i, new Color(r, g, b)); + } + } + + return chart; + } + + @SuppressWarnings("deprecation") + private JFreeChart doLineChart() { + XYSeriesCollection collection = getSeriesCollection(); + JFreeChart chart = ChartFactory.createXYLineChart(inTitle, inLabels[0], inLabels[1], collection, + PlotOrientation.VERTICAL, doLegend, true, false); + XYPlot plot = (XYPlot) chart.getPlot(); + + XYItemRenderer plotRenderer = plot.getRenderer(); + if (plotRenderer instanceof XYLineAndShapeRenderer) { + XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plotRenderer; + if (doPoints) { + renderer.setShapesVisible(true); + renderer.setShapesFilled(true); + } + + if (inColors != null) { + String[] colorSplit = inColors.split(";"); + for( int i = 0; i < colorSplit.length; i++ ) { + String[] split = colorSplit[i].split(","); + int r = (int) Double.parseDouble(split[0]); + int g = (int) Double.parseDouble(split[1]); + int b = (int) Double.parseDouble(split[2]); + renderer.setSeriesPaint(i, new Color(r, g, b)); + } + } + } + + NumberAxis yAxis = (NumberAxis) plot.getRangeAxis(); + yAxis.setStandardTickUnits(NumberAxis.createStandardTickUnits()); + double delta = (max - min) * 0.1; + yAxis.setRange(min, max + delta); + yAxis.setMinorTickCount(4); + yAxis.setMinorTickMarksVisible(true); + if (inFormats != null && inFormats.length > 1 && inFormats[1].trim().length() > 0) { + yAxis.setNumberFormatOverride(new DecimalFormat(inFormats[1])); + } + + if (inFormats != null && inFormats.length > 0 && inFormats[0].trim().length() > 0) { + ValueAxis domainAxis = plot.getDomainAxis(); + if (domainAxis instanceof NumberAxis) { + NumberAxis xAxis = (NumberAxis) domainAxis; + xAxis.setNumberFormatOverride(new DecimalFormat(inFormats[0])); + } + } + return chart; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/ByteUtilities.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/ByteUtilities.java index 8e49ac0bb..35247c527 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/ByteUtilities.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/ByteUtilities.java @@ -1,410 +1,410 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.utils; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.util.BitSet; - -/** - * Utilities to handle bytes and conversions. - * - *

                Note that Java uses Big Endian by default. - * - * @author Andrea Antonello (www.hydrologis.com) - * @since 0.7.0 - */ -public class ByteUtilities { - - /** - * Convert a short to a byte array (big endian). - * - * @param data the short to convert. - * @return the byte array. - */ - public static byte[] shortToByteArrayBE( short data ) { - return new byte[]{(byte) ((data >> 8) & 0xff), (byte) ((data >> 0) & 0xff),}; - } - - /** - * Convert a char to a byte array (big endian). - * - * @param data the char to convert. - * @return the byte array. - */ - public static byte[] charToByteArrayBE( char data ) { - return new byte[]{(byte) ((data >> 8) & 0xff), (byte) ((data >> 0) & 0xff),}; - } - - /** - * Convert an integer to a byte array (big endian). - * - * @param data the int to convert. - * @return the byte array. - */ - public static byte[] intToByteArrayBE( int data ) { - return new byte[]{(byte) ((data >> 24) & 0xff), (byte) ((data >> 16) & 0xff), (byte) ((data >> 8) & 0xff), - (byte) ((data >> 0) & 0xff),}; - } - - /** - * Convert an long to a byte array (big endian). - * - * @param data the long to convert. - * @return the byte array. - */ - public static byte[] longToByteArrayBE( long data ) { - return new byte[]{(byte) ((data >> 56) & 0xff), (byte) ((data >> 48) & 0xff), (byte) ((data >> 40) & 0xff), - (byte) ((data >> 32) & 0xff), (byte) ((data >> 24) & 0xff), (byte) ((data >> 16) & 0xff), - (byte) ((data >> 8) & 0xff), (byte) ((data >> 0) & 0xff),}; - } - - /** - * Convert a float to a byte array (big endian). - * - * @param data the float to convert. - * @return the byte array. - */ - public static byte[] floatToByteArrayBE( float data ) { - return intToByteArrayBE(Float.floatToRawIntBits(data)); - } - - /** - * Convert a double to a byte array (big endian). - * - * @param data the double to convert. - * @return the byte array. - */ - public static byte[] doubleToByteArrayBE( double data ) { - return longToByteArrayBE(Double.doubleToRawLongBits(data)); - } - - /** - * Convert a boolean to a byte array (big endian). - * - * @param data the boolean to convert. - * @return the byte array. - */ - public static byte[] booleanToByteArrayBE( boolean data ) { - return new byte[]{(byte) (data ? 0x01 : 0x00)}; // bool -> {1 byte} - } - - /** - * Convert a byte array to a short (big endian). - * - * @param data the byte array to convert. - * @return the short. - */ - public static short byteArrayToShortBE( byte[] data ) { - if (data == null || data.length != 2) - return 0x0; - // ---------- - return (short) ((0xff & data[0]) << 8 | (0xff & data[1]) << 0); - } - - /** - * Convert a byte array to an short (little endian). - * - * @param data the byte array to convert. - * @return the integer. - */ - public static short byteArrayToShortLE( byte[] data ) { - ByteBuffer buffer = ByteBuffer.wrap(data); - buffer.order(ByteOrder.LITTLE_ENDIAN); - return buffer.getShort(); - } - - /** - * Convert a byte array to a char (big endian). - * - * @param data the byte array to convert. - * @return the char. - */ - public static char byteArrayToCharBE( byte[] data ) { - if (data == null || data.length != 2) - return 0x0; - // ---------- - return (char) ((0xff & data[0]) << 8 | (0xff & data[1]) << 0); - } - - /** - * Convert a byte array to an integer (big endian). - * - * @param data the byte array to convert. - * @return the integer. - */ - public static int byteArrayToIntBE( byte[] data ) { - if (data == null || data.length != 4) - return 0x0; - // ---------- - return (int) ( // NOTE: type cast not necessary for int - (0xff & data[0]) << 24 | (0xff & data[1]) << 16 | (0xff & data[2]) << 8 | (0xff & data[3]) << 0); - } - - /** - * Convert a byte array to an integer (little endian). - * - * @param data the byte array to convert. - * @return the integer. - */ - public static int byteArrayToIntLE( byte[] data ) { - ByteBuffer buffer = ByteBuffer.wrap(data); - buffer.order(ByteOrder.LITTLE_ENDIAN); - return buffer.getInt(); - } - - /** - * Convert a byte array to an integer (big endian). - * - * @param data the byte array to convert. - * @return the integer. - */ - public static long byteArrayToLongBE( byte[] data ) { - if (data == null) - return 0x0; - long accum = 0; - int shiftBy = 8 * data.length - 8; - for( byte b : data ) { - accum |= (long) (0xff & b) << shiftBy; - shiftBy -= 8; - } - return accum; - } - - /** - * Convert a byte array to an long (little endian). - * - * @param data the byte array to convert. - * @return the long. - */ - public static long byteArrayToLongLE( byte[] data ) { - if (data == null) - return 0x0; - long accum = 0; - int shiftBy = 0; - for( byte b : data ) { - accum |= (long) (b & 0xff) << shiftBy; - shiftBy += 8; - } - return accum; - } - - public static float byteArrayToFloatBE( byte[] data ) { - if (data == null || data.length != 4) - return 0x0; - // ---------- simple: - return Float.intBitsToFloat(byteArrayToIntBE(data)); - } - - /** - * Convert a byte array to an float (little endian). - * - * @param data the byte array to convert. - * @return the float. - */ - public static float byteArrayToFloatLE( byte[] data ) { - ByteBuffer buffer = ByteBuffer.wrap(data); - buffer.order(ByteOrder.LITTLE_ENDIAN); - return buffer.getFloat(); - } - - public static double byteArrayToDoubleBE( byte[] data ) { - if (data == null || data.length != 8) - return 0x0; - // ---------- simple: - return Double.longBitsToDouble(byteArrayToLongBE(data)); - } - - /** - * Convert a byte array to an double (little endian). - * - * @param data the byte array to convert. - * @return the double. - */ - public static double byteArrayToDoubleLE( byte[] data ) { - ByteBuffer buffer = ByteBuffer.wrap(data); - buffer.order(ByteOrder.LITTLE_ENDIAN); - return buffer.getDouble(); - } - - public static boolean byteArrayToBoolean( byte[] data ) { - return (data == null || data.length == 0) ? false : data[0] != 0x00; - } - - public static String byteArrayToString( byte[] data ) { - return (data == null) ? null : new String(data); - } - - public static BitSet bitsetFromByteArray( byte[] bytes ) { - BitSet bits = new BitSet(); - for( int i = 0; i < bytes.length * 8; i++ ) { - if ((bytes[bytes.length - i / 8 - 1] & (1 << (i % 8))) > 0) { - bits.set(i); - } - } - return bits; - } - - public static BitSet bitsetFromByte( byte thebyte ) { - BitSet bits = new BitSet(); - for( int i = 0; i < 8; i++ ) { - if ((thebyte & (1 << (i % 8))) > 0) { - bits.set(i); - } - } - return bits; - } - - public static byte[] bitSetToByteArray( BitSet bs ) { - byte[] bytes = new byte[bs.size() / 8 + 1]; - - for( int i = 0; i < bs.size(); i++ ) - if (bs.get(i)) - bytes[i / 8] |= 1 << (i % 8); - - return bytes; - } - - // public static byte[] toByteArray( BitSet bits ) { - // byte[] bytes = new byte[bits.length() / 8 + 1]; - // for( int i = 0; i < bits.length(); i++ ) { - // if (bits.get(i)) { - // bytes[bytes.length - i / 8 - 1] |= 1 << (i % 8); - // } - // } - // return bytes; - // } - - // ///////////////////////////////////////////// - // ///////////////////////////////////////////// - // ///////////////////////////////////////////// - // ///////////////////////////////////////////// - // ///////////////////////////////////////////// - - /** - * @param doubleValue - * @return - * @deprecated use {@link #doubleToByteArrayBE(double)}. - */ - public static byte[] double2bytearray( double doubleValue ) { - long l = Double.doubleToLongBits(doubleValue); - byte[] b = new byte[8]; - int shift = 64 - 8; - for( int k = 0; k < 8; k++, shift -= 8 ) { - b[k] = (byte) (l >>> shift); - } - return b; - } - - /** - * @param arr - * @param start - * @return - * @deprecated - */ - public static float arr2float( byte[] arr, int start ) { - int i = 0; - int len = 4; - int cnt = 0; - byte[] tmp = new byte[len]; - for( i = start; i < (start + len); i++ ) { - tmp[cnt] = arr[i]; - cnt++; - } - int accum = 0; - i = 0; - for( int shiftBy = 0; shiftBy < 32; shiftBy += 8 ) { - accum |= ((long) (tmp[i] & 0xff)) << shiftBy; - i++; - } - return Float.intBitsToFloat(accum); - } - - /** - * @param arr - * @param start - * @return - * @deprecated use {@link #byteArrayToLongBE(byte[])} - */ - public static long arr2long( byte[] arr, int start ) { - int i = 0; - int len = 4; - int cnt = 0; - byte[] tmp = new byte[len]; - for( i = start; i < (start + len); i++ ) { - tmp[cnt] = arr[i]; - cnt++; - } - long accum = 0; - i = 0; - for( int shiftBy = 0; shiftBy < 32; shiftBy += 8 ) { - accum |= ((long) (tmp[i] & 0xff)) << shiftBy; - i++; - } - return accum; - } - - /** - * @param arr - * @param start - * @return - * @deprecated - */ - public static int arr2int( byte[] arr, int start ) { - int low = arr[start] & 0xff; - int high = arr[start + 1] & 0xff; - return (int) (high << 8 | low); - } - - /** - * @param arr - * @param start - * @return - * @deprecated - */ - public static double arr2double( byte[] arr, int start ) { - int i = 0; - int len = 8; - int cnt = 0; - byte[] tmp = new byte[len]; - for( i = start; i < (start + len); i++ ) { - tmp[cnt] = arr[i]; - cnt++; - } - long accum = 0; - i = 0; - for( int shiftBy = 0; shiftBy < 64; shiftBy += 8 ) { - accum |= ((long) (tmp[i] & 0xff)) << shiftBy; - i++; - } - return Double.longBitsToDouble(accum); - } - - /** - * @param arr - * @return - * @deprecated - */ - public static short arr2short( byte[] arr ) { - int i = 0; - i |= arr[0] & 0xFF; - i <<= 8; - i |= arr[1] & 0xFF; - return (short) i; - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.utils; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.BitSet; + +/** + * Utilities to handle bytes and conversions. + * + *

                Note that Java uses Big Endian by default. + * + * @author Andrea Antonello (www.hydrologis.com) + * @since 0.7.0 + */ +public class ByteUtilities { + + /** + * Convert a short to a byte array (big endian). + * + * @param data the short to convert. + * @return the byte array. + */ + public static byte[] shortToByteArrayBE( short data ) { + return new byte[]{(byte) ((data >> 8) & 0xff), (byte) ((data >> 0) & 0xff),}; + } + + /** + * Convert a char to a byte array (big endian). + * + * @param data the char to convert. + * @return the byte array. + */ + public static byte[] charToByteArrayBE( char data ) { + return new byte[]{(byte) ((data >> 8) & 0xff), (byte) ((data >> 0) & 0xff),}; + } + + /** + * Convert an integer to a byte array (big endian). + * + * @param data the int to convert. + * @return the byte array. + */ + public static byte[] intToByteArrayBE( int data ) { + return new byte[]{(byte) ((data >> 24) & 0xff), (byte) ((data >> 16) & 0xff), (byte) ((data >> 8) & 0xff), + (byte) ((data >> 0) & 0xff),}; + } + + /** + * Convert an long to a byte array (big endian). + * + * @param data the long to convert. + * @return the byte array. + */ + public static byte[] longToByteArrayBE( long data ) { + return new byte[]{(byte) ((data >> 56) & 0xff), (byte) ((data >> 48) & 0xff), (byte) ((data >> 40) & 0xff), + (byte) ((data >> 32) & 0xff), (byte) ((data >> 24) & 0xff), (byte) ((data >> 16) & 0xff), + (byte) ((data >> 8) & 0xff), (byte) ((data >> 0) & 0xff),}; + } + + /** + * Convert a float to a byte array (big endian). + * + * @param data the float to convert. + * @return the byte array. + */ + public static byte[] floatToByteArrayBE( float data ) { + return intToByteArrayBE(Float.floatToRawIntBits(data)); + } + + /** + * Convert a double to a byte array (big endian). + * + * @param data the double to convert. + * @return the byte array. + */ + public static byte[] doubleToByteArrayBE( double data ) { + return longToByteArrayBE(Double.doubleToRawLongBits(data)); + } + + /** + * Convert a boolean to a byte array (big endian). + * + * @param data the boolean to convert. + * @return the byte array. + */ + public static byte[] booleanToByteArrayBE( boolean data ) { + return new byte[]{(byte) (data ? 0x01 : 0x00)}; // bool -> {1 byte} + } + + /** + * Convert a byte array to a short (big endian). + * + * @param data the byte array to convert. + * @return the short. + */ + public static short byteArrayToShortBE( byte[] data ) { + if (data == null || data.length != 2) + return 0x0; + // ---------- + return (short) ((0xff & data[0]) << 8 | (0xff & data[1]) << 0); + } + + /** + * Convert a byte array to an short (little endian). + * + * @param data the byte array to convert. + * @return the integer. + */ + public static short byteArrayToShortLE( byte[] data ) { + ByteBuffer buffer = ByteBuffer.wrap(data); + buffer.order(ByteOrder.LITTLE_ENDIAN); + return buffer.getShort(); + } + + /** + * Convert a byte array to a char (big endian). + * + * @param data the byte array to convert. + * @return the char. + */ + public static char byteArrayToCharBE( byte[] data ) { + if (data == null || data.length != 2) + return 0x0; + // ---------- + return (char) ((0xff & data[0]) << 8 | (0xff & data[1]) << 0); + } + + /** + * Convert a byte array to an integer (big endian). + * + * @param data the byte array to convert. + * @return the integer. + */ + public static int byteArrayToIntBE( byte[] data ) { + if (data == null || data.length != 4) + return 0x0; + // ---------- + return (int) ( // NOTE: type cast not necessary for int + (0xff & data[0]) << 24 | (0xff & data[1]) << 16 | (0xff & data[2]) << 8 | (0xff & data[3]) << 0); + } + + /** + * Convert a byte array to an integer (little endian). + * + * @param data the byte array to convert. + * @return the integer. + */ + public static int byteArrayToIntLE( byte[] data ) { + ByteBuffer buffer = ByteBuffer.wrap(data); + buffer.order(ByteOrder.LITTLE_ENDIAN); + return buffer.getInt(); + } + + /** + * Convert a byte array to an integer (big endian). + * + * @param data the byte array to convert. + * @return the integer. + */ + public static long byteArrayToLongBE( byte[] data ) { + if (data == null) + return 0x0; + long accum = 0; + int shiftBy = 8 * data.length - 8; + for( byte b : data ) { + accum |= (long) (0xff & b) << shiftBy; + shiftBy -= 8; + } + return accum; + } + + /** + * Convert a byte array to an long (little endian). + * + * @param data the byte array to convert. + * @return the long. + */ + public static long byteArrayToLongLE( byte[] data ) { + if (data == null) + return 0x0; + long accum = 0; + int shiftBy = 0; + for( byte b : data ) { + accum |= (long) (b & 0xff) << shiftBy; + shiftBy += 8; + } + return accum; + } + + public static float byteArrayToFloatBE( byte[] data ) { + if (data == null || data.length != 4) + return 0x0; + // ---------- simple: + return Float.intBitsToFloat(byteArrayToIntBE(data)); + } + + /** + * Convert a byte array to an float (little endian). + * + * @param data the byte array to convert. + * @return the float. + */ + public static float byteArrayToFloatLE( byte[] data ) { + ByteBuffer buffer = ByteBuffer.wrap(data); + buffer.order(ByteOrder.LITTLE_ENDIAN); + return buffer.getFloat(); + } + + public static double byteArrayToDoubleBE( byte[] data ) { + if (data == null || data.length != 8) + return 0x0; + // ---------- simple: + return Double.longBitsToDouble(byteArrayToLongBE(data)); + } + + /** + * Convert a byte array to an double (little endian). + * + * @param data the byte array to convert. + * @return the double. + */ + public static double byteArrayToDoubleLE( byte[] data ) { + ByteBuffer buffer = ByteBuffer.wrap(data); + buffer.order(ByteOrder.LITTLE_ENDIAN); + return buffer.getDouble(); + } + + public static boolean byteArrayToBoolean( byte[] data ) { + return (data == null || data.length == 0) ? false : data[0] != 0x00; + } + + public static String byteArrayToString( byte[] data ) { + return (data == null) ? null : new String(data); + } + + public static BitSet bitsetFromByteArray( byte[] bytes ) { + BitSet bits = new BitSet(); + for( int i = 0; i < bytes.length * 8; i++ ) { + if ((bytes[bytes.length - i / 8 - 1] & (1 << (i % 8))) > 0) { + bits.set(i); + } + } + return bits; + } + + public static BitSet bitsetFromByte( byte thebyte ) { + BitSet bits = new BitSet(); + for( int i = 0; i < 8; i++ ) { + if ((thebyte & (1 << (i % 8))) > 0) { + bits.set(i); + } + } + return bits; + } + + public static byte[] bitSetToByteArray( BitSet bs ) { + byte[] bytes = new byte[bs.size() / 8 + 1]; + + for( int i = 0; i < bs.size(); i++ ) + if (bs.get(i)) + bytes[i / 8] |= 1 << (i % 8); + + return bytes; + } + + // public static byte[] toByteArray( BitSet bits ) { + // byte[] bytes = new byte[bits.length() / 8 + 1]; + // for( int i = 0; i < bits.length(); i++ ) { + // if (bits.get(i)) { + // bytes[bytes.length - i / 8 - 1] |= 1 << (i % 8); + // } + // } + // return bytes; + // } + + // ///////////////////////////////////////////// + // ///////////////////////////////////////////// + // ///////////////////////////////////////////// + // ///////////////////////////////////////////// + // ///////////////////////////////////////////// + + /** + * @param doubleValue + * @return + * @deprecated use {@link #doubleToByteArrayBE(double)}. + */ + public static byte[] double2bytearray( double doubleValue ) { + long l = Double.doubleToLongBits(doubleValue); + byte[] b = new byte[8]; + int shift = 64 - 8; + for( int k = 0; k < 8; k++, shift -= 8 ) { + b[k] = (byte) (l >>> shift); + } + return b; + } + + /** + * @param arr + * @param start + * @return + * @deprecated + */ + public static float arr2float( byte[] arr, int start ) { + int i = 0; + int len = 4; + int cnt = 0; + byte[] tmp = new byte[len]; + for( i = start; i < (start + len); i++ ) { + tmp[cnt] = arr[i]; + cnt++; + } + int accum = 0; + i = 0; + for( int shiftBy = 0; shiftBy < 32; shiftBy += 8 ) { + accum |= ((long) (tmp[i] & 0xff)) << shiftBy; + i++; + } + return Float.intBitsToFloat(accum); + } + + /** + * @param arr + * @param start + * @return + * @deprecated use {@link #byteArrayToLongBE(byte[])} + */ + public static long arr2long( byte[] arr, int start ) { + int i = 0; + int len = 4; + int cnt = 0; + byte[] tmp = new byte[len]; + for( i = start; i < (start + len); i++ ) { + tmp[cnt] = arr[i]; + cnt++; + } + long accum = 0; + i = 0; + for( int shiftBy = 0; shiftBy < 32; shiftBy += 8 ) { + accum |= ((long) (tmp[i] & 0xff)) << shiftBy; + i++; + } + return accum; + } + + /** + * @param arr + * @param start + * @return + * @deprecated + */ + public static int arr2int( byte[] arr, int start ) { + int low = arr[start] & 0xff; + int high = arr[start + 1] & 0xff; + return (int) (high << 8 | low); + } + + /** + * @param arr + * @param start + * @return + * @deprecated + */ + public static double arr2double( byte[] arr, int start ) { + int i = 0; + int len = 8; + int cnt = 0; + byte[] tmp = new byte[len]; + for( i = start; i < (start + len); i++ ) { + tmp[cnt] = arr[i]; + cnt++; + } + long accum = 0; + i = 0; + for( int shiftBy = 0; shiftBy < 64; shiftBy += 8 ) { + accum |= ((long) (tmp[i] & 0xff)) << shiftBy; + i++; + } + return Double.longBitsToDouble(accum); + } + + /** + * @param arr + * @return + * @deprecated + */ + public static short arr2short( byte[] arr ) { + int i = 0; + i |= arr[0] & 0xFF; + i <<= 8; + i |= arr[1] & 0xFF; + return (short) i; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/CheckPoint.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/CheckPoint.java index aa8d045fe..ebd7145bf 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/CheckPoint.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/CheckPoint.java @@ -1,58 +1,58 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.utils; - -/** - * A point that can checked by comparison. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class CheckPoint implements Comparable { - public int col; - public int row; - public int index; - - public CheckPoint( int col, int row, int index ) { - this.col = col; - this.row = row; - this.index = index; - } - - public int compareTo( CheckPoint o ) { - /* - * if row and col are equal, return 0, which will - * anyways trigger and exception - */ - if (col == o.col && row == o.row) { - return 0; - } - - /* - * in the case of non equal row/col, we need to make the normal sort - */ - if (index < o.index) { - return -1; - } else if (index > o.index) { - return 1; - } else { - return 0; - } - - } - +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.utils; + +/** + * A point that can checked by comparison. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class CheckPoint implements Comparable { + public int col; + public int row; + public int index; + + public CheckPoint( int col, int row, int index ) { + this.col = col; + this.row = row; + this.index = index; + } + + public int compareTo( CheckPoint o ) { + /* + * if row and col are equal, return 0, which will + * anyways trigger and exception + */ + if (col == o.col && row == o.row) { + return 0; + } + + /* + * in the case of non equal row/col, we need to make the normal sort + */ + if (index < o.index) { + return -1; + } else if (index > o.index) { + return 1; + } else { + return 0; + } + + } + } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/ColorUtilities.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/ColorUtilities.java index 00663ed79..e0ff911dd 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/ColorUtilities.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/ColorUtilities.java @@ -1,57 +1,57 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils; - -import java.awt.Color; - -/** - * An utilities class for handling colors. - * - * @author Andrea Antonello (www.hydrologis.com) - * @since 0.7.4 - */ -public class ColorUtilities { - - /** - * Converts a color string. - * - * @param rbgString the string in the form "r,g,b,a" as integer values between 0 and 255. - * @return the {@link Color}. - */ - public static Color colorFromRbgString( String rbgString ) { - String[] split = rbgString.split(","); - if (split.length < 3 || split.length > 4) { - throw new IllegalArgumentException("Color string has to be of type r,g,b."); - } - int r = (int) Double.parseDouble(split[0].trim()); - int g = (int) Double.parseDouble(split[1].trim()); - int b = (int) Double.parseDouble(split[2].trim()); - Color c = null; - if (split.length == 4) { - // alpha - int a = (int) Double.parseDouble(split[3].trim()); - c = new Color(r, g, b, a); - } else { - c = new Color(r, g, b); - } - - return c; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils; + +import java.awt.Color; + +/** + * An utilities class for handling colors. + * + * @author Andrea Antonello (www.hydrologis.com) + * @since 0.7.4 + */ +public class ColorUtilities { + + /** + * Converts a color string. + * + * @param rbgString the string in the form "r,g,b,a" as integer values between 0 and 255. + * @return the {@link Color}. + */ + public static Color colorFromRbgString( String rbgString ) { + String[] split = rbgString.split(","); + if (split.length < 3 || split.length > 4) { + throw new IllegalArgumentException("Color string has to be of type r,g,b."); + } + int r = (int) Double.parseDouble(split[0].trim()); + int g = (int) Double.parseDouble(split[1].trim()); + int b = (int) Double.parseDouble(split[2].trim()); + Color c = null; + if (split.length == 4) { + // alpha + int a = (int) Double.parseDouble(split[3].trim()); + c = new Color(r, g, b, a); + } else { + c = new Color(r, g, b); + } + + return c; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/CrsUtilities.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/CrsUtilities.java index a9d5c8e53..a7c9a28b2 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/CrsUtilities.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/CrsUtilities.java @@ -1,164 +1,164 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.utils; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import org.geotools.geometry.jts.JTS; -import org.geotools.referencing.CRS; -import org.jgrasstools.gears.libs.exceptions.ModelsIOException; -import org.jgrasstools.gears.utils.files.FileUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; -import org.opengis.referencing.operation.MathTransform; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; - -/** - * Utilities for CRS. - * - * @author Andrea Antonello (www.hydrologis.com) - * @since 0.7.0 - */ -public class CrsUtilities { - /** - * Fill the prj file with the actual map projection. - * - * @param filePath the path to the regarding data or prj file. - * @param extention the extention of the data file. If null, the crs is written to filePath directly. - * @param crs the {@link CoordinateReferenceSystem} to write. - * @throws IOException - */ - @SuppressWarnings("nls") - public static void writeProjectionFile( String filePath, String extention, CoordinateReferenceSystem crs ) throws IOException { - /* - * fill a prj file - */ - String prjPath = null; - if (extention != null && filePath.toLowerCase().endsWith("." + extention)) { - int dotLoc = filePath.lastIndexOf("."); - prjPath = filePath.substring(0, dotLoc); - prjPath = prjPath + ".prj"; - } else { - prjPath = filePath + ".prj"; - } - - BufferedWriter bufferedWriter = null; - try { - bufferedWriter = new BufferedWriter(new FileWriter(prjPath)); - bufferedWriter.write(crs.toWKT()); - } finally { - if (bufferedWriter != null) - bufferedWriter.close(); - } - } - - /** - * Reads a {@link CoordinateReferenceSystem} from a prj file. - * - * @param filePath the path to the regarding data or prj file. - * @param extention the extention of the data file. If null, the crs is written to filePath directly. - * @return the read {@link CoordinateReferenceSystem}. - * @throws Exception - */ - @SuppressWarnings("nls") - public static CoordinateReferenceSystem readProjectionFile( String filePath, String extention ) throws Exception { - CoordinateReferenceSystem crs = null; - /* - * fill a prj file - */ - String prjPath = null; - if (extention != null && filePath.toLowerCase().endsWith("." + extention)) { - int dotLoc = filePath.lastIndexOf("."); - prjPath = filePath.substring(0, dotLoc); - prjPath = prjPath + ".prj"; - } else { - prjPath = filePath + ".prj"; - } - - File prjFile = new File(prjPath); - if (!prjFile.exists()) { - throw new ModelsIOException("The prj file doesn't exist: " + prjPath, "CRSUTILITIES"); - } - try { - String wkt = FileUtilities.readFile(prjFile); - crs = CRS.parseWKT(wkt); - } catch (Exception e) { - e.printStackTrace(); - } - return crs; - } - - /** - * Reproject a set of geometries - * - * @param from the starting crs - * @param to the destination crs - * @param geometries the array of geometries, wrapped into an Object array - * @throws Exception - */ - public static void reproject( CoordinateReferenceSystem from, CoordinateReferenceSystem to, Object[] geometries ) - throws Exception { - MathTransform mathTransform = CRS.findMathTransform(from, to); - - for( int i = 0; i < geometries.length; i++ ) { - geometries[i] = JTS.transform((Geometry) geometries[i], mathTransform); - } - } - - /** - * Reproject a set of coordinates. - * - * @param from the starting crs - * @param to the destination crs - * @param coordinates the array of coordinates, wrapped into an Object array - * @throws Exception - */ - public static void reproject( CoordinateReferenceSystem from, CoordinateReferenceSystem to, Coordinate[] coordinates ) - throws Exception { - MathTransform mathTransform = CRS.findMathTransform(from, to); - - for( int i = 0; i < coordinates.length; i++ ) { - coordinates[i] = JTS.transform(coordinates[i], coordinates[i], mathTransform); - } - } - - /** - * Get the code from a {@link CoordinateReferenceSystem}. - * - * @param crs the crs to get the code from. - * @return the code, that can be used with {@link CRS#decode(String)} - * to recreate the crs. - * @throws Exception - */ - public static String getCodeFromCrs( CoordinateReferenceSystem crs ) throws Exception { - String code = null; - try { - Integer epsg = CRS.lookupEpsgCode(crs, true); - code = "EPSG:" + epsg; //$NON-NLS-1$ - } catch (Exception e) { - // try non epsg - code = CRS.lookupIdentifier(crs, true); - } - return code; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.utils; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +import org.geotools.geometry.jts.JTS; +import org.geotools.referencing.CRS; +import org.jgrasstools.gears.libs.exceptions.ModelsIOException; +import org.jgrasstools.gears.utils.files.FileUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.opengis.referencing.operation.MathTransform; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Utilities for CRS. + * + * @author Andrea Antonello (www.hydrologis.com) + * @since 0.7.0 + */ +public class CrsUtilities { + /** + * Fill the prj file with the actual map projection. + * + * @param filePath the path to the regarding data or prj file. + * @param extention the extention of the data file. If null, the crs is written to filePath directly. + * @param crs the {@link CoordinateReferenceSystem} to write. + * @throws IOException + */ + @SuppressWarnings("nls") + public static void writeProjectionFile( String filePath, String extention, CoordinateReferenceSystem crs ) throws IOException { + /* + * fill a prj file + */ + String prjPath = null; + if (extention != null && filePath.toLowerCase().endsWith("." + extention)) { + int dotLoc = filePath.lastIndexOf("."); + prjPath = filePath.substring(0, dotLoc); + prjPath = prjPath + ".prj"; + } else { + prjPath = filePath + ".prj"; + } + + BufferedWriter bufferedWriter = null; + try { + bufferedWriter = new BufferedWriter(new FileWriter(prjPath)); + bufferedWriter.write(crs.toWKT()); + } finally { + if (bufferedWriter != null) + bufferedWriter.close(); + } + } + + /** + * Reads a {@link CoordinateReferenceSystem} from a prj file. + * + * @param filePath the path to the regarding data or prj file. + * @param extention the extention of the data file. If null, the crs is written to filePath directly. + * @return the read {@link CoordinateReferenceSystem}. + * @throws Exception + */ + @SuppressWarnings("nls") + public static CoordinateReferenceSystem readProjectionFile( String filePath, String extention ) throws Exception { + CoordinateReferenceSystem crs = null; + /* + * fill a prj file + */ + String prjPath = null; + if (extention != null && filePath.toLowerCase().endsWith("." + extention)) { + int dotLoc = filePath.lastIndexOf("."); + prjPath = filePath.substring(0, dotLoc); + prjPath = prjPath + ".prj"; + } else { + prjPath = filePath + ".prj"; + } + + File prjFile = new File(prjPath); + if (!prjFile.exists()) { + throw new ModelsIOException("The prj file doesn't exist: " + prjPath, "CRSUTILITIES"); + } + try { + String wkt = FileUtilities.readFile(prjFile); + crs = CRS.parseWKT(wkt); + } catch (Exception e) { + e.printStackTrace(); + } + return crs; + } + + /** + * Reproject a set of geometries + * + * @param from the starting crs + * @param to the destination crs + * @param geometries the array of geometries, wrapped into an Object array + * @throws Exception + */ + public static void reproject( CoordinateReferenceSystem from, CoordinateReferenceSystem to, Object[] geometries ) + throws Exception { + MathTransform mathTransform = CRS.findMathTransform(from, to); + + for( int i = 0; i < geometries.length; i++ ) { + geometries[i] = JTS.transform((Geometry) geometries[i], mathTransform); + } + } + + /** + * Reproject a set of coordinates. + * + * @param from the starting crs + * @param to the destination crs + * @param coordinates the array of coordinates, wrapped into an Object array + * @throws Exception + */ + public static void reproject( CoordinateReferenceSystem from, CoordinateReferenceSystem to, Coordinate[] coordinates ) + throws Exception { + MathTransform mathTransform = CRS.findMathTransform(from, to); + + for( int i = 0; i < coordinates.length; i++ ) { + coordinates[i] = JTS.transform(coordinates[i], coordinates[i], mathTransform); + } + } + + /** + * Get the code from a {@link CoordinateReferenceSystem}. + * + * @param crs the crs to get the code from. + * @return the code, that can be used with {@link CRS#decode(String)} + * to recreate the crs. + * @throws Exception + */ + public static String getCodeFromCrs( CoordinateReferenceSystem crs ) throws Exception { + String code = null; + try { + Integer epsg = CRS.lookupEpsgCode(crs, true); + code = "EPSG:" + epsg; //$NON-NLS-1$ + } catch (Exception e) { + // try non epsg + code = CRS.lookupIdentifier(crs, true); + } + return code; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/SldUtilities.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/SldUtilities.java index d3594a6fd..679f29e03 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/SldUtilities.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/SldUtilities.java @@ -1,148 +1,148 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.utils; - -import java.awt.Color; -import java.io.File; -import java.io.IOException; -import java.util.List; - -import org.geotools.factory.CommonFactoryFinder; -import org.geotools.factory.GeoTools; -import org.geotools.feature.NameImpl; -import org.geotools.styling.FeatureTypeConstraint; -import org.geotools.styling.FeatureTypeStyle; -import org.geotools.styling.SLD; -import org.geotools.styling.SLDParser; -import org.geotools.styling.SLDTransformer; -import org.geotools.styling.Style; -import org.geotools.styling.StyleBuilder; -import org.geotools.styling.StyleFactory; -import org.geotools.styling.StyledLayerDescriptor; -import org.geotools.styling.UserLayer; -import org.opengis.filter.FilterFactory; - -/** - * Utilities to handle style. - * - * @author Andrea Antonello (www.hydrologis.com) - * @since 0.7.0 - */ -public class SldUtilities { - /** - * The default {@link StyleFactory} to use. - */ - public static StyleFactory sf = CommonFactoryFinder.getStyleFactory(GeoTools.getDefaultHints()); - - /** - * The default {@link FilterFactory} to use. - */ - public static FilterFactory ff = CommonFactoryFinder.getFilterFactory(GeoTools.getDefaultHints()); - - /** - * The default {@link StyleBuilder} to use. - */ - public static StyleBuilder sb = new StyleBuilder(sf, ff); - - /** - * The type name that can be used in an SLD in the featuretypestyle that matches all feature types. - */ - public static final String GENERIC_FEATURE_TYPENAME = "Feature"; - - /** - * Get the style from an sld file. - * - * @param file the SLD file. - * @return the {@link Style} object. - * @throws IOException - */ - public static Style getStyleFromFile( File file ) throws IOException { - SLDParser stylereader = new SLDParser(sf, file); - StyledLayerDescriptor sld = stylereader.parseSLD(); - Style style = getDefaultStyle(sld); - return style; - } - - /** - * Converts a style to its string representation to be written to file. - * - * @param style the style to convert. - * @return the style string. - * @throws Exception - */ - public static String styleToString( Style style ) throws Exception { - StyledLayerDescriptor sld = sf.createStyledLayerDescriptor(); - UserLayer layer = sf.createUserLayer(); - layer.setLayerFeatureConstraints(new FeatureTypeConstraint[]{null}); - sld.addStyledLayer(layer); - layer.addUserStyle(style); - - SLDTransformer aTransformer = new SLDTransformer(); - aTransformer.setIndentation(4); - String xml = aTransformer.transform(sld); - return xml; - } - - public static Style getDefaultStyle( StyledLayerDescriptor sld ) { - Style[] styles = SLD.styles(sld); - for( int i = 0; i < styles.length; i++ ) { - Style style = styles[i]; - List ftStyles = style.featureTypeStyles(); - genericizeftStyles(ftStyles); - if (style.isDefault()) { - return style; - } - } - // no default, so just grab the first one - return styles[0]; - } - - /** - * Converts the type name of all FeatureTypeStyles to Feature so that the all apply to any feature type. This is admittedly dangerous - * but is extremely useful because it means that the style can be used with any feature type. - * - * @param ftStyles - */ - private static void genericizeftStyles( List ftStyles ) { - for( FeatureTypeStyle featureTypeStyle : ftStyles ) { - featureTypeStyle.featureTypeNames().clear(); - featureTypeStyle.featureTypeNames().add(new NameImpl(GENERIC_FEATURE_TYPENAME)); - } - } - - /** - * REmoves the alpha channel from a color. - * - * @param color the color. - * @return the color without alpha. - */ - public static Color colorWithoutAlpha( Color color ) { - return new Color(color.getRed(), color.getGreen(), color.getBlue()); - } - - /** - * Creates a color with the given alpha. - * - * @param color the color to use. - * @param alpha an alpha value between 0 and 255. - * @return the color with alpha. - */ - public static Color colorWithAlpha( Color color, int alpha ) { - return new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.utils; + +import java.awt.Color; +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.geotools.factory.CommonFactoryFinder; +import org.geotools.factory.GeoTools; +import org.geotools.feature.NameImpl; +import org.geotools.styling.FeatureTypeConstraint; +import org.geotools.styling.FeatureTypeStyle; +import org.geotools.styling.SLD; +import org.geotools.styling.SLDParser; +import org.geotools.styling.SLDTransformer; +import org.geotools.styling.Style; +import org.geotools.styling.StyleBuilder; +import org.geotools.styling.StyleFactory; +import org.geotools.styling.StyledLayerDescriptor; +import org.geotools.styling.UserLayer; +import org.opengis.filter.FilterFactory; + +/** + * Utilities to handle style. + * + * @author Andrea Antonello (www.hydrologis.com) + * @since 0.7.0 + */ +public class SldUtilities { + /** + * The default {@link StyleFactory} to use. + */ + public static StyleFactory sf = CommonFactoryFinder.getStyleFactory(GeoTools.getDefaultHints()); + + /** + * The default {@link FilterFactory} to use. + */ + public static FilterFactory ff = CommonFactoryFinder.getFilterFactory(GeoTools.getDefaultHints()); + + /** + * The default {@link StyleBuilder} to use. + */ + public static StyleBuilder sb = new StyleBuilder(sf, ff); + + /** + * The type name that can be used in an SLD in the featuretypestyle that matches all feature types. + */ + public static final String GENERIC_FEATURE_TYPENAME = "Feature"; + + /** + * Get the style from an sld file. + * + * @param file the SLD file. + * @return the {@link Style} object. + * @throws IOException + */ + public static Style getStyleFromFile( File file ) throws IOException { + SLDParser stylereader = new SLDParser(sf, file); + StyledLayerDescriptor sld = stylereader.parseSLD(); + Style style = getDefaultStyle(sld); + return style; + } + + /** + * Converts a style to its string representation to be written to file. + * + * @param style the style to convert. + * @return the style string. + * @throws Exception + */ + public static String styleToString( Style style ) throws Exception { + StyledLayerDescriptor sld = sf.createStyledLayerDescriptor(); + UserLayer layer = sf.createUserLayer(); + layer.setLayerFeatureConstraints(new FeatureTypeConstraint[]{null}); + sld.addStyledLayer(layer); + layer.addUserStyle(style); + + SLDTransformer aTransformer = new SLDTransformer(); + aTransformer.setIndentation(4); + String xml = aTransformer.transform(sld); + return xml; + } + + public static Style getDefaultStyle( StyledLayerDescriptor sld ) { + Style[] styles = SLD.styles(sld); + for( int i = 0; i < styles.length; i++ ) { + Style style = styles[i]; + List ftStyles = style.featureTypeStyles(); + genericizeftStyles(ftStyles); + if (style.isDefault()) { + return style; + } + } + // no default, so just grab the first one + return styles[0]; + } + + /** + * Converts the type name of all FeatureTypeStyles to Feature so that the all apply to any feature type. This is admittedly dangerous + * but is extremely useful because it means that the style can be used with any feature type. + * + * @param ftStyles + */ + private static void genericizeftStyles( List ftStyles ) { + for( FeatureTypeStyle featureTypeStyle : ftStyles ) { + featureTypeStyle.featureTypeNames().clear(); + featureTypeStyle.featureTypeNames().add(new NameImpl(GENERIC_FEATURE_TYPENAME)); + } + } + + /** + * REmoves the alpha channel from a color. + * + * @param color the color. + * @return the color without alpha. + */ + public static Color colorWithoutAlpha( Color color ) { + return new Color(color.getRed(), color.getGreen(), color.getBlue()); + } + + /** + * Creates a color with the given alpha. + * + * @param color the color to use. + * @param alpha an alpha value between 0 and 255. + * @return the color with alpha. + */ + public static Color colorWithAlpha( Color color, int alpha ) { + return new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/StringUtilities.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/StringUtilities.java index ee695f847..6b7a16c55 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/StringUtilities.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/StringUtilities.java @@ -1,128 +1,128 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; - -/** - * An utilities class for handling strings and similar. - * - * @author Andrea Antonello (www.hydrologis.com) - * @since 0.7.0 - */ -public class StringUtilities { - - /** - * Checks if the list of strings supplied contains the supplied string. - * - *

                If the string is contained it changes the name by adding a number. - *

                The spaces are trimmed away before performing name equality. - * - * @param strings the list of existing strings. - * @param string the proposed new string, to be changed if colliding. - * @return the new non-colliding name for the string. - */ - @SuppressWarnings("nls") - public static String checkSameName( List strings, String string ) { - int index = 1; - for( int i = 0; i < strings.size(); i++ ) { - if (index == 10000) { - // something odd is going on - throw new RuntimeException(); - } - String existingString = strings.get(i); - existingString = existingString.trim(); - if (existingString.trim().equals(string.trim())) { - // name exists, change the name of the entering - if (string.endsWith(")")) { - string = string.trim().replaceFirst("\\([0-9]+\\)$", "(" + (index++) + ")"); - } else { - string = string + " (" + (index++) + ")"; - } - // start again - i = 0; - } - } - return string; - } - - /** - * Join strings through {@link StringBuilder}. - * - * @param separator separator to use or null. - * @param strings strings to join. - * @return the joined string. - */ - public static String joinStrings( String separator, String... strings ) { - if (separator == null) { - separator = ""; - } - StringBuilder sb = new StringBuilder(); - for( int i = 0; i < strings.length; i++ ) { - sb.append(strings[i]); - if (i < strings.length - 1) { - sb.append(separator); - } - } - return sb.toString(); - } - - /** - * Splits a string by char limit, not breaking works. - * - * @param string the string to split. - * @param limit the char limit. - * @return the list of split words. - */ - public static List splitString( String string, int limit ) { - List list = new ArrayList(); - - char[] chars = string.toCharArray(); - boolean endOfString = false; - int start = 0; - int end = start; - while( start < chars.length - 1 ) { - int charCount = 0; - int lastSpace = 0; - while( charCount < limit ) { - if (chars[charCount + start] == ' ') { - lastSpace = charCount; - } - charCount++; - if (charCount + start == string.length()) { - endOfString = true; - break; - } - } - end = endOfString ? string.length() : (lastSpace > 0) ? lastSpace + start : charCount + start; - list.add(string.substring(start, end)); - start = end + 1; - } - return list; - } - - public static Scanner streamToString( InputStream stream, String delimiter ) { - java.util.Scanner s = new java.util.Scanner(stream).useDelimiter(delimiter); - return s; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +/** + * An utilities class for handling strings and similar. + * + * @author Andrea Antonello (www.hydrologis.com) + * @since 0.7.0 + */ +public class StringUtilities { + + /** + * Checks if the list of strings supplied contains the supplied string. + * + *

                If the string is contained it changes the name by adding a number. + *

                The spaces are trimmed away before performing name equality. + * + * @param strings the list of existing strings. + * @param string the proposed new string, to be changed if colliding. + * @return the new non-colliding name for the string. + */ + @SuppressWarnings("nls") + public static String checkSameName( List strings, String string ) { + int index = 1; + for( int i = 0; i < strings.size(); i++ ) { + if (index == 10000) { + // something odd is going on + throw new RuntimeException(); + } + String existingString = strings.get(i); + existingString = existingString.trim(); + if (existingString.trim().equals(string.trim())) { + // name exists, change the name of the entering + if (string.endsWith(")")) { + string = string.trim().replaceFirst("\\([0-9]+\\)$", "(" + (index++) + ")"); + } else { + string = string + " (" + (index++) + ")"; + } + // start again + i = 0; + } + } + return string; + } + + /** + * Join strings through {@link StringBuilder}. + * + * @param separator separator to use or null. + * @param strings strings to join. + * @return the joined string. + */ + public static String joinStrings( String separator, String... strings ) { + if (separator == null) { + separator = ""; + } + StringBuilder sb = new StringBuilder(); + for( int i = 0; i < strings.length; i++ ) { + sb.append(strings[i]); + if (i < strings.length - 1) { + sb.append(separator); + } + } + return sb.toString(); + } + + /** + * Splits a string by char limit, not breaking works. + * + * @param string the string to split. + * @param limit the char limit. + * @return the list of split words. + */ + public static List splitString( String string, int limit ) { + List list = new ArrayList(); + + char[] chars = string.toCharArray(); + boolean endOfString = false; + int start = 0; + int end = start; + while( start < chars.length - 1 ) { + int charCount = 0; + int lastSpace = 0; + while( charCount < limit ) { + if (chars[charCount + start] == ' ') { + lastSpace = charCount; + } + charCount++; + if (charCount + start == string.length()) { + endOfString = true; + break; + } + } + end = endOfString ? string.length() : (lastSpace > 0) ? lastSpace + start : charCount + start; + list.add(string.substring(start, end)); + start = end + 1; + } + return list; + } + + public static Scanner streamToString( InputStream stream, String delimiter ) { + java.util.Scanner s = new java.util.Scanner(stream).useDelimiter(delimiter); + return s; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/coverage/CoverageUtilities.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/coverage/CoverageUtilities.java index a6e9c1457..dc248808d 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/coverage/CoverageUtilities.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/coverage/CoverageUtilities.java @@ -1,1182 +1,1182 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.utils.coverage; - -import static java.lang.Math.max; -import static java.lang.Math.min; -import static org.jgrasstools.gears.libs.modules.JGTConstants.doesOverFlow; -import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; -import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; - -import java.awt.Point; -import java.awt.geom.AffineTransform; -import java.awt.geom.Point2D; -import java.awt.image.ComponentSampleModel; -import java.awt.image.DataBuffer; -import java.awt.image.Raster; -import java.awt.image.RenderedImage; -import java.awt.image.SampleModel; -import java.awt.image.WritableRaster; -import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.media.jai.ROI; -import javax.media.jai.ROIShape; -import javax.media.jai.RasterFactory; -import javax.media.jai.iterator.RandomIter; -import javax.media.jai.iterator.RandomIterFactory; -import javax.media.jai.iterator.WritableRandomIter; - -import org.geotools.coverage.CoverageFactoryFinder; -import org.geotools.coverage.grid.GridCoordinates2D; -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.coverage.grid.GridCoverageFactory; -import org.geotools.coverage.grid.GridEnvelope2D; -import org.geotools.coverage.grid.GridGeometry2D; -import org.geotools.coverage.grid.InvalidGridGeometryException; -import org.geotools.coverage.grid.io.AbstractGridFormat; -import org.geotools.geometry.DirectPosition2D; -import org.geotools.geometry.Envelope2D; -import org.geotools.geometry.jts.JTS; -import org.geotools.geometry.jts.ReferencedEnvelope; -import org.geotools.parameter.Parameter; -import org.geotools.process.ProcessException; -import org.geotools.referencing.crs.DefaultGeographicCRS; -import org.geotools.referencing.operation.matrix.XAffineTransform; -import org.geotools.referencing.operation.transform.AffineTransform2D; -import org.jgrasstools.gears.io.grasslegacy.GrassLegacyGridCoverage2D; -import org.jgrasstools.gears.io.grasslegacy.GrassLegacyRandomIter; -import org.jgrasstools.gears.io.grasslegacy.GrassLegacyWritableRaster; -import org.jgrasstools.gears.io.grasslegacy.utils.Window; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.features.FastLiteShape; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.coverage.grid.GridCoverageReader; -import org.opengis.geometry.DirectPosition; -import org.opengis.geometry.Envelope; -import org.opengis.parameter.GeneralParameterValue; -import org.opengis.parameter.ParameterValue; -import org.opengis.referencing.crs.CoordinateReferenceSystem; -import org.opengis.referencing.operation.TransformException; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.linearref.LengthIndexedLine; -import com.vividsolutions.jts.simplify.DouglasPeuckerSimplifier; - -/** - *

                - * A class of utilities bound to raster analysis - *

                - * - * @author Andrea Antonello - www.hydrologis.com - * @since 0.1 - */ -public class CoverageUtilities { - public static final String NORTH = "NORTH"; //$NON-NLS-1$ - public static final String SOUTH = "SOUTH"; //$NON-NLS-1$ - public static final String WEST = "WEST"; //$NON-NLS-1$ - public static final String EAST = "EAST"; //$NON-NLS-1$ - public static final String XRES = "XRES"; //$NON-NLS-1$ - public static final String YRES = "YRES"; //$NON-NLS-1$ - public static final String ROWS = "ROWS"; //$NON-NLS-1$ - public static final String COLS = "COLS"; //$NON-NLS-1$ - - /** - * Creates a {@link RandomIter} for the given {@link GridCoverage2D}. - * - *

                It is important to use this method since it supports also - * large GRASS rasters. - * - * @param coverage the coverage on which to wrap a {@link RandomIter}. - * @return the iterator. - */ - public static RandomIter getRandomIterator( GridCoverage2D coverage ) { - if (coverage instanceof GrassLegacyGridCoverage2D) { - GrassLegacyGridCoverage2D grassGC = (GrassLegacyGridCoverage2D) coverage; - GrassLegacyRandomIter iter = new GrassLegacyRandomIter(grassGC.getData()); - return iter; - } - RenderedImage renderedImage = coverage.getRenderedImage(); - RandomIter iter = RandomIterFactory.create(renderedImage, null); - return iter; - } - - /** - * Creates a {@link WritableRandomIter}. - * - *

                It is important to use this method since it supports also - * large GRASS rasters. - * - *

                If the size would throw an integer overflow, a {@link GrassLegacyRandomIter} - * will be proposed to try to save the saveable. - * - * @param raster the coverage on which to wrap a {@link WritableRandomIter}. - * @return the iterator. - */ - public static WritableRandomIter getWritableRandomIterator( int width, int height ) { - if (doesOverFlow(width, height)) { - GrassLegacyRandomIter iter = new GrassLegacyRandomIter(new double[height][width]); - return iter; - } - WritableRaster pitRaster = CoverageUtilities.createDoubleWritableRaster(width, height, null, null, null); - WritableRandomIter iter = RandomIterFactory.createWritable(pitRaster, null); - return iter; - } - - /** - * Creates a {@link WritableRandomIter}. - * - *

                It is important to use this method since it supports also - * large GRASS rasters. - * - *

                If the size would throw an integer overflow, a {@link GrassLegacyRandomIter} - * will be proposed to try to save the saveable. - * - * @param raster the coverage on which to wrap a {@link WritableRandomIter}. - * @return the iterator. - */ - public static WritableRandomIter getWritableRandomIterator( WritableRaster raster ) { - if (raster instanceof GrassLegacyWritableRaster) { - GrassLegacyWritableRaster wRaster = (GrassLegacyWritableRaster) raster; - double[][] data = wRaster.getData(); - getWritableRandomIterator(data[0].length, data.length); - } - WritableRandomIter iter = RandomIterFactory.createWritable(raster, null); - return iter; - } - - /** - * Creates a {@link WritableRaster writable raster}. - * - * @param width width of the raster to create. - * @param height height of the raster to create. - * @param dataClass data type for the raster. If null, defaults to double. - * @param sampleModel the samplemodel to use. If null, defaults to - * new ComponentSampleModel(dataType, width, height, 1, width, new int[]{0});. - * @param value value to which to set the raster to. If null, the default of the raster creation is - * used, which is 0. - * @return a {@link WritableRaster writable raster}. - */ - public static WritableRaster createDoubleWritableRaster( int width, int height, Class< ? > dataClass, - SampleModel sampleModel, Double value ) { - int dataType = DataBuffer.TYPE_DOUBLE; - if (dataClass != null) { - if (dataClass.isAssignableFrom(Integer.class)) { - dataType = DataBuffer.TYPE_INT; - } else if (dataClass.isAssignableFrom(Float.class)) { - dataType = DataBuffer.TYPE_FLOAT; - } else if (dataClass.isAssignableFrom(Byte.class)) { - dataType = DataBuffer.TYPE_BYTE; - } - } - - if (!doesOverFlow(width, height)) { - if (sampleModel == null) { - sampleModel = new ComponentSampleModel(dataType, width, height, 1, width, new int[]{0}); - } - - WritableRaster raster = RasterFactory.createWritableRaster(sampleModel, null); - if (value != null) { - // autobox only once - double v = value; - - for( int y = 0; y < height; y++ ) { - for( int x = 0; x < width; x++ ) { - raster.setSample(x, y, 0, v); - } - } - } - return raster; - } else { - WritableRaster raster = new GrassLegacyWritableRaster(new double[height][width]); - return raster; - } - } - - /** - * Get the parameters of the region covered by the {@link GridCoverage2D coverage}. - * - * @param gridCoverage the coverage. - * @return the {@link HashMap map} of parameters. ( {@link #NORTH} and the - * other static vars can be used to retrieve them. - */ - public static RegionMap getRegionParamsFromGridCoverage( GridCoverage2D gridCoverage ) { - RegionMap envelopeParams = new RegionMap(); - - Envelope envelope = gridCoverage.getEnvelope(); - - DirectPosition lowerCorner = envelope.getLowerCorner(); - double[] westSouth = lowerCorner.getCoordinate(); - DirectPosition upperCorner = envelope.getUpperCorner(); - double[] eastNorth = upperCorner.getCoordinate(); - - GridGeometry2D gridGeometry = gridCoverage.getGridGeometry(); - GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); - int height = gridRange.height; - int width = gridRange.width; - - AffineTransform gridToCRS = (AffineTransform) gridGeometry.getGridToCRS(); - double xRes = XAffineTransform.getScaleX0(gridToCRS); - double yRes = XAffineTransform.getScaleY0(gridToCRS); - - envelopeParams.put(NORTH, eastNorth[1]); - envelopeParams.put(SOUTH, westSouth[1]); - envelopeParams.put(WEST, westSouth[0]); - envelopeParams.put(EAST, eastNorth[0]); - envelopeParams.put(XRES, xRes); - envelopeParams.put(YRES, yRes); - envelopeParams.put(ROWS, (double) height); - envelopeParams.put(COLS, (double) width); - - return envelopeParams; - } - - /** - * Get the array of region parameters covered by the {@link GridCoverage2D coverage}. - * - * @param gridCoverage the coverage. - * @return the array of region parameters as [n, s, w, e, xres, yres, cols, rows] - */ - public static double[] getRegionArrayFromGridCoverage( GridCoverage2D gridCoverage ) { - Envelope envelope = gridCoverage.getEnvelope(); - DirectPosition lowerCorner = envelope.getLowerCorner(); - double[] westSouth = lowerCorner.getCoordinate(); - DirectPosition upperCorner = envelope.getUpperCorner(); - double[] eastNorth = upperCorner.getCoordinate(); - - GridGeometry2D gridGeometry = gridCoverage.getGridGeometry(); - GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); - int height = gridRange.height; - int width = gridRange.width; - - AffineTransform gridToCRS = (AffineTransform) gridGeometry.getGridToCRS(); - double xRes = XAffineTransform.getScaleX0(gridToCRS); - double yRes = XAffineTransform.getScaleY0(gridToCRS); - - double[] params = new double[]{eastNorth[1], westSouth[1], westSouth[0], eastNorth[0], xRes, yRes, width, height}; - - return params; - } - - /** - * Get the array of rows and cols. - * - * @param gridCoverage the coverage. - * @return the array as [cols, rows] - */ - public static int[] getRegionColsRows( GridCoverage2D gridCoverage ) { - GridGeometry2D gridGeometry = gridCoverage.getGridGeometry(); - GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); - int height = gridRange.height; - int width = gridRange.width; - int[] params = new int[]{width, height}; - return params; - } - - public static HashMap generalParameterValues2RegionParamsMap( GeneralParameterValue[] params ) { - GridGeometry2D gg = null; - if (params != null) { - for( int i = 0; i < params.length; i++ ) { - final ParameterValue< ? > param = (ParameterValue< ? >) params[i]; - final String name = param.getDescriptor().getName().getCode(); - if (name.equals(AbstractGridFormat.READ_GRIDGEOMETRY2D.getName().toString())) { - gg = (GridGeometry2D) param.getValue(); - break; - } - } - } - if (gg == null) { - throw new IllegalArgumentException("No gridgeometry present"); //$NON-NLS-1$ - } - HashMap regionParams = gridGeometry2RegionParamsMap(gg); - return regionParams; - } - - public static RegionMap gridGeometry2RegionParamsMap( GridGeometry2D gridGeometry ) { - RegionMap envelopeParams = new RegionMap(); - - Envelope envelope = gridGeometry.getEnvelope2D(); - DirectPosition lowerCorner = envelope.getLowerCorner(); - double[] westSouth = lowerCorner.getCoordinate(); - DirectPosition upperCorner = envelope.getUpperCorner(); - double[] eastNorth = upperCorner.getCoordinate(); - - GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); - int height = gridRange.height; - int width = gridRange.width; - - AffineTransform gridToCRS = (AffineTransform) gridGeometry.getGridToCRS(); - double xRes = XAffineTransform.getScaleX0(gridToCRS); - double yRes = XAffineTransform.getScaleY0(gridToCRS); - - envelopeParams.put(NORTH, eastNorth[1]); - envelopeParams.put(SOUTH, westSouth[1]); - envelopeParams.put(WEST, westSouth[0]); - envelopeParams.put(EAST, eastNorth[0]); - envelopeParams.put(XRES, xRes); - envelopeParams.put(YRES, yRes); - envelopeParams.put(ROWS, (double) height); - envelopeParams.put(COLS, (double) width); - - return envelopeParams; - } - - public static RegionMap makeRegionParamsMap( double north, double south, double west, double east, double xRes, double yRes, - int width, int height ) { - RegionMap envelopeParams = new RegionMap(); - envelopeParams.put(NORTH, north); - envelopeParams.put(SOUTH, south); - envelopeParams.put(WEST, west); - envelopeParams.put(EAST, east); - envelopeParams.put(XRES, xRes); - envelopeParams.put(YRES, yRes); - envelopeParams.put(ROWS, (double) height); - envelopeParams.put(COLS, (double) width); - return envelopeParams; - } - - public static GridGeometry2D gridGeometryFromRegionParams( HashMap envelopeParams, - CoordinateReferenceSystem crs ) { - double west = envelopeParams.get(WEST); - double south = envelopeParams.get(SOUTH); - double east = envelopeParams.get(EAST); - double north = envelopeParams.get(NORTH); - int rows = envelopeParams.get(ROWS).intValue(); - int cols = envelopeParams.get(COLS).intValue(); - - return gridGeometryFromRegionValues(north, south, east, west, cols, rows, crs); - } - - public static GridGeometry2D gridGeometryFromRegionValues( double north, double south, double east, double west, int cols, - int rows, CoordinateReferenceSystem crs ) { - Envelope envelope = new Envelope2D(crs, west, south, east - west, north - south); - GridEnvelope2D gridRange = new GridEnvelope2D(0, 0, cols, rows); - GridGeometry2D gridGeometry2D = new GridGeometry2D(gridRange, envelope); - return gridGeometry2D; - } - - /** - * Utility method to create read parameters for {@link GridCoverageReader} - * - * @param width the needed number of columns. - * @param height the needed number of columns. - * @param north the northern boundary. - * @param south the southern boundary. - * @param east the eastern boundary. - * @param west the western boundary. - * @param crs the {@link CoordinateReferenceSystem}. Can be null, even if it should not. - * @return the {@link GeneralParameterValue array of parameters}. - */ - public static GeneralParameterValue[] createGridGeometryGeneralParameter( int width, int height, double north, double south, - double east, double west, CoordinateReferenceSystem crs ) { - GeneralParameterValue[] readParams = new GeneralParameterValue[1]; - Parameter readGG = new Parameter(AbstractGridFormat.READ_GRIDGEOMETRY2D); - GridEnvelope2D gridEnvelope = new GridEnvelope2D(0, 0, width, height); - Envelope env; - if (crs != null) { - env = new ReferencedEnvelope(west, east, south, north, crs); - } else { - DirectPosition2D minDp = new DirectPosition2D(west, south); - DirectPosition2D maxDp = new DirectPosition2D(east, north); - env = new Envelope2D(minDp, maxDp); - } - readGG.setValue(new GridGeometry2D(gridEnvelope, env)); - readParams[0] = readGG; - - return readParams; - } - - /** - * Utility method to create read parameters for {@link GridCoverageReader} - * - * @param xres the X resolution. - * @param yres the Y resolution. - * @param north the northern boundary. - * @param south the southern boundary. - * @param east the eastern boundary. - * @param west the western boundary. - * @param crs the {@link CoordinateReferenceSystem}. Can be null, even if it should not. - * @return the {@link GeneralParameterValue array of parameters}. - */ - public static GeneralParameterValue[] createGridGeometryGeneralParameter( double xres, double yres, double north, - double south, double east, double west, CoordinateReferenceSystem crs ) { - // make sure the resolution gives integer rows and cols - int height = (int) Math.round((north - south) / yres); - if (height < 1) - height = 1; - int width = (int) Math.round((east - west) / xres); - if (width < 1) - width = 1; - - GeneralParameterValue[] generalParameter = createGridGeometryGeneralParameter(width, height, north, south, east, west, - crs); - - return generalParameter; - } - - /** - * Create a {@link WritableRaster} from a double matrix. - * - * @param matrix the matrix to take the data from. - * @param matrixIsRowCol a flag to tell if the matrix has rowCol or colRow order. - * @return the produced raster. - */ - public static WritableRaster createWritableRasterFromMatrix( double[][] matrix, boolean matrixIsRowCol ) { - int height = matrix.length; - int width = matrix[0].length; - if (!matrixIsRowCol) { - int tmp = height; - height = width; - width = tmp; - } - WritableRaster writableRaster = createDoubleWritableRaster(width, height, null, null, null); - - WritableRandomIter rasterIter = RandomIterFactory.createWritable(writableRaster, null); - for( int x = 0; x < width; x++ ) { - for( int y = 0; y < height; y++ ) { - if (matrixIsRowCol) { - rasterIter.setSample(x, y, 0, matrix[y][x]); - } else { - rasterIter.setSample(x, y, 0, matrix[x][y]); - } - } - } - rasterIter.done(); - - return writableRaster; - } - - /** - * Create a {@link WritableRaster} from a float matrix. - * - * @param matrix the matrix to take the data from. - * @param matrixIsRowCol a flag to tell if the matrix has rowCol or colRow order. - * @return the produced raster. - */ - public static WritableRaster createWritableRasterFromMatrix( float[][] matrix, boolean matrixIsRowCol ) { - int height = matrix.length; - int width = matrix[0].length; - if (!matrixIsRowCol) { - int tmp = height; - height = width; - width = tmp; - } - WritableRaster writableRaster = createDoubleWritableRaster(width, height, null, null, null); - - WritableRandomIter disckRandomIter = RandomIterFactory.createWritable(writableRaster, null); - for( int x = 0; x < width; x++ ) { - for( int y = 0; y < height; y++ ) { - if (matrixIsRowCol) { - disckRandomIter.setSample(x, y, 0, matrix[y][x]); - } else { - disckRandomIter.setSample(x, y, 0, matrix[x][y]); - } - } - } - disckRandomIter.done(); - - return writableRaster; - } - - /** - * Create a {@link WritableRaster} from a int array. - * - * @param width the width of the raster to create. - * @param height the height of the raster to create. - * @param pixels the array of data. - * @return the produced raster. - */ - public static WritableRaster createWritableRasterFromArray( int width, int height, int[] pixels ) { - WritableRaster writableRaster = createDoubleWritableRaster(width, height, null, null, null); - int index = 0; - for( int y = 0; y < height; y++ ) { - for( int x = 0; x < width; x++ ) { - double value = (double) pixels[index]; - if (value == 0) { - value = doubleNovalue; - } - writableRaster.setSample(x, y, 0, value); - index++; - } - } - return writableRaster; - } - - /** - * Creates a {@link GridCoverage2D coverage} from a double[][] matrix and the necessary geographic Information. - * - * @param name the name of the coverage. - * @param dataMatrix the matrix containing the data. - * @param envelopeParams the map of boundary parameters. - * @param crs the {@link CoordinateReferenceSystem}. - * @param matrixIsRowCol a flag to tell if the matrix has rowCol or colRow order. - * @return the {@link GridCoverage2D coverage}. - */ - public static GridCoverage2D buildCoverage( String name, double[][] dataMatrix, HashMap envelopeParams, - CoordinateReferenceSystem crs, boolean matrixIsRowCol ) { - WritableRaster writableRaster = createWritableRasterFromMatrix(dataMatrix, matrixIsRowCol); - return buildCoverage(name, writableRaster, envelopeParams, crs); - } - - /** - * Creates a {@link GridCoverage2D coverage} from a float[][] matrix and the necessary geographic Information. - * - * @param name the name of the coverage. - * @param dataMatrix the matrix containing the data. - * @param envelopeParams the map of boundary parameters. - * @param crs the {@link CoordinateReferenceSystem}. - * @param matrixIsRowCol a flag to tell if the matrix has rowCol or colRow order. - * @return the {@link GridCoverage2D coverage}. - */ - public static GridCoverage2D buildCoverage( String name, float[][] dataMatrix, HashMap envelopeParams, - CoordinateReferenceSystem crs, boolean matrixIsRowCol ) { - WritableRaster writableRaster = createWritableRasterFromMatrix(dataMatrix, matrixIsRowCol); - return buildCoverage(name, writableRaster, envelopeParams, crs); - } - - /** - * Creates a {@link GridCoverage2D coverage} from the {@link RenderedImage image} and the necessary geographic Information. - * - * @param name the name of the coverage. - * @param renderedImage the image containing the data. - * @param envelopeParams the map of boundary parameters. - * @param crs the {@link CoordinateReferenceSystem}. - * @return the {@link GridCoverage2D coverage}. - */ - public static GridCoverage2D buildCoverage( String name, RenderedImage renderedImage, HashMap envelopeParams, - CoordinateReferenceSystem crs ) { - - double west = envelopeParams.get(WEST); - double south = envelopeParams.get(SOUTH); - double east = envelopeParams.get(EAST); - double north = envelopeParams.get(NORTH); - Envelope2D writeEnvelope = new Envelope2D(crs, west, south, east - west, north - south); - GridCoverageFactory factory = CoverageFactoryFinder.getGridCoverageFactory(null); - - GridCoverage2D coverage2D = factory.create(name, renderedImage, writeEnvelope); - return coverage2D; - } - - /** - * Creates a {@link GridCoverage2D coverage} from the {@link WritableRaster writable raster} and the necessary geographic Information. - * - * @param name the name of the coverage. - * @param writableRaster the raster containing the data. - * @param envelopeParams the map of boundary parameters. - * @param crs the {@link CoordinateReferenceSystem}. - * @return the {@link GridCoverage2D coverage}. - */ - public static GridCoverage2D buildCoverage( String name, WritableRaster writableRaster, - HashMap envelopeParams, CoordinateReferenceSystem crs ) { - if (writableRaster instanceof GrassLegacyWritableRaster) { - GrassLegacyWritableRaster wRaster = (GrassLegacyWritableRaster) writableRaster; - double west = envelopeParams.get(WEST); - double south = envelopeParams.get(SOUTH); - double east = envelopeParams.get(EAST); - double north = envelopeParams.get(NORTH); - int rows = envelopeParams.get(ROWS).intValue(); - int cols = envelopeParams.get(COLS).intValue(); - Window window = new Window(west, east, south, north, rows, cols); - GrassLegacyGridCoverage2D coverage2D = new GrassLegacyGridCoverage2D(window, wRaster.getData(), crs); - return coverage2D; - } else { - double west = envelopeParams.get(WEST); - double south = envelopeParams.get(SOUTH); - double east = envelopeParams.get(EAST); - double north = envelopeParams.get(NORTH); - Envelope2D writeEnvelope = new Envelope2D(crs, west, south, east - west, north - south); - GridCoverageFactory factory = CoverageFactoryFinder.getGridCoverageFactory(null); - - GridCoverage2D coverage2D = factory.create(name, writableRaster, writeEnvelope); - return coverage2D; - } - } - - /** - * Creates a useless {@link GridCoverage2D} that might be usefull as placeholder. - * - * @return the dummy grod coverage. - */ - public static GridCoverage2D buildDummyCoverage() { - HashMap envelopeParams = new HashMap(); - envelopeParams.put(NORTH, 1.0); - envelopeParams.put(SOUTH, 0.0); - envelopeParams.put(WEST, 0.0); - envelopeParams.put(EAST, 1.0); - envelopeParams.put(XRES, 1.0); - envelopeParams.put(YRES, 1.0); - envelopeParams.put(ROWS, 1.0); - envelopeParams.put(COLS, 1.0); - double[][] dataMatrix = new double[1][1]; - dataMatrix[0][0] = 0; - WritableRaster writableRaster = createWritableRasterFromMatrix(dataMatrix, true); - return buildCoverage("dummy", writableRaster, envelopeParams, DefaultGeographicCRS.WGS84); //$NON-NLS-1$ - } - - /** - * Creates a compatible {@link WritableRaster} from a {@link RenderedImage}. - * - * @param renderedImage the image to convert. - * @param nullBorders a flag that indicates if the borders should be set to null. - * @return the converted writable raster. - */ - public static WritableRaster renderedImage2WritableRaster( RenderedImage renderedImage, boolean nullBorders ) { - int width = renderedImage.getWidth(); - int height = renderedImage.getHeight(); - - Raster data = renderedImage.getData(); - WritableRaster writableRaster = data.createCompatibleWritableRaster(); - writableRaster.setDataElements(0, 0, data); - if (nullBorders) { - for( int c = 0; c < width; c++ ) { - writableRaster.setSample(c, 0, 0, doubleNovalue); - writableRaster.setSample(c, height - 1, 0, doubleNovalue); - } - for( int r = 0; r < height; r++ ) { - writableRaster.setSample(0, r, 0, doubleNovalue); - writableRaster.setSample(width - 1, r, 0, doubleNovalue); - } - } - - return writableRaster; - } - - /** - * Transform a rendered image in its array representation. - * - * @param renderedImage the rendered image to transform. - * @return the array holding the data. - */ - public static double[] renderedImage2DoubleArray( RenderedImage renderedImage ) { - int width = renderedImage.getWidth(); - int height = renderedImage.getHeight(); - - double[] values = new double[width * height]; - RandomIter imageIter = RandomIterFactory.create(renderedImage, null); - int index = 0;; - for( int x = 0; x < width; x++ ) { - for( int y = 0; y < height; y++ ) { - double sample = imageIter.getSampleDouble(x, y, 0); - values[index++] = sample; - } - } - imageIter.done(); - return values; - } - - /** - * Transform a double values rendered image in its integer array representation by scaling the values. - * - * @param renderedImage the rendered image to transform. - * @param multiply value by which to multiply the values before casting to integer. - * @return the array holding the data. - */ - public static int[] renderedImage2IntegerArray( RenderedImage renderedImage, double multiply ) { - int width = renderedImage.getWidth(); - int height = renderedImage.getHeight(); - - int[] values = new int[width * height]; - RandomIter imageIter = RandomIterFactory.create(renderedImage, null); - int index = 0;; - for( int x = 0; x < width; x++ ) { - for( int y = 0; y < height; y++ ) { - double sample = imageIter.getSampleDouble(x, y, 0); - sample = sample * multiply; - values[index++] = (int) sample; - } - } - imageIter.done(); - return values; - } - - /** - * Transforms an array of integer values into a {@link WritableRaster}. - * - * @param array the values to transform. - * @param divide the factor by which to divide the values. - * @param width the width of the resulting image. - * @param height the height of the resulting image. - * @return the raster. - */ - public static WritableRaster integerArray2WritableRaster( int[] array, double divide, int width, int height ) { - WritableRaster writableRaster = createDoubleWritableRaster(width, height, null, null, null); - int index = 0;; - for( int x = 0; x < width; x++ ) { - for( int y = 0; y < height; y++ ) { - double value = (double) array[index++] / divide; - writableRaster.setSample(x, y, 0, value); - } - } - return writableRaster; - } - - /** - * Transforms an array of values into a {@link WritableRaster}. - * - * @param array the values to transform. - * @param divide the factor by which to divide the values. - * @param width the width of the resulting image. - * @param height the height of the resulting image. - * @return the raster. - */ - public static WritableRaster doubleArray2WritableRaster( double[] array, int width, int height ) { - WritableRaster writableRaster = createDoubleWritableRaster(width, height, null, null, null); - int index = 0;; - for( int x = 0; x < width; x++ ) { - for( int y = 0; y < height; y++ ) { - writableRaster.setSample(x, y, 0, array[index++]); - } - } - return writableRaster; - } - - /** - * Creates a border of novalues. - * - * @param raster the raster to process. - */ - public static void setNovalueBorder( WritableRaster raster ) { - int width = raster.getWidth(); - int height = raster.getHeight(); - - for( int c = 0; c < width; c++ ) { - raster.setSample(c, 0, 0, doubleNovalue); - raster.setSample(c, height - 1, 0, doubleNovalue); - } - for( int r = 0; r < height; r++ ) { - raster.setSample(0, r, 0, doubleNovalue); - raster.setSample(width - 1, r, 0, doubleNovalue); - } - } - - /** - * Calculates the profile of a raster map between given {@link Coordinate coordinates}. - * - * @param coverage the coverage from which to extract the profile. - * @param coordinates the coordinates to use to trace the profile. - * @return the list of {@link ProfilePoint}s. - * @throws Exception - */ - public static List doProfile( GridCoverage2D coverage, Coordinate... coordinates ) throws Exception { - RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(coverage); - - GridGeometry2D gridGeometry = coverage.getGridGeometry(); - RenderedImage renderedImage = coverage.getRenderedImage(); - RandomIter iter = RandomIterFactory.create(renderedImage, null); - - List profilePointsList = doProfile(iter, regionMap, gridGeometry, coordinates); - - iter.done(); - return profilePointsList; - } - - /** - * Calculates the profile of a raster map between given {@link Coordinate coordinates}. - * - * @param mapIter the {@link RandomIter map iterator}. - * @param regionMap the region map. - * @param gridGeometry the gridgeometry of the map. - * @param coordinates the {@link Coordinate}s to create the profile on. - * @return the list of {@link ProfilePoint}s. - * @throws TransformException - */ - public static List doProfile( RandomIter mapIter, RegionMap regionMap, GridGeometry2D gridGeometry, - Coordinate... coordinates ) throws TransformException { - List profilePointsList = new ArrayList(); - Envelope2D envelope2d = gridGeometry.getEnvelope2D(); - double xres = regionMap.getXres(); - double yres = regionMap.getYres(); - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - double step = Math.min(xres, yres); - - LineString line = GeometryUtilities.gf().createLineString(coordinates); - double lineLength = line.getLength(); - LengthIndexedLine indexedLine = new LengthIndexedLine(line); - - double progressive = 0.0; - GridCoordinates2D gridCoords; - while( progressive < lineLength + step ) { // run over by a step to make sure we get the - // last coord back from the extractor - Coordinate c = indexedLine.extractPoint(progressive); - gridCoords = gridGeometry.worldToGrid(new DirectPosition2D(c.x, c.y)); - double value = JGTConstants.doubleNovalue; - if (envelope2d.contains(c.x, c.y) && isInside(cols, rows, gridCoords)) { - value = mapIter.getSampleDouble(gridCoords.x, gridCoords.y, 0); - } - ProfilePoint profilePoint = new ProfilePoint(progressive, value, c.x, c.y); - profilePointsList.add(profilePoint); - progressive = progressive + step; - } - return profilePointsList; - } - - private static boolean isInside( int cols, int rows, GridCoordinates2D gridCoords ) { - return gridCoords.x >= 0 && gridCoords.x <= cols && gridCoords.y >= 0 && gridCoords.y <= rows; - } - /** - * Utility to tranform row/col to easting/westing. - * - * @param gridGeometry - * @param x - * @param y - * @return the world easting and northing. - * @throws InvalidGridGeometryException - * @throws TransformException - */ - public static Point2D gridToWorld( GridGeometry2D gridGeometry, int x, int y ) throws InvalidGridGeometryException, - TransformException { - final Point2D worldPosition = new Point2D.Double(x, y); - gridGeometry.getGridToCRS2D().transform(worldPosition, worldPosition); - return worldPosition; - } - - /** - * Replace the current internal novalue with a given value. - * - * @param renderedImage a {@link RenderedImage}. - * @param newValue the value to put in instead of the novalue. - * @return the rendered image with the substituted novalue. - */ - public static WritableRaster replaceNovalue( RenderedImage renderedImage, double newValue ) { - WritableRaster tmpWR = (WritableRaster) renderedImage.getData(); - RandomIter pitTmpIterator = RandomIterFactory.create(renderedImage, null); - - int height = renderedImage.getHeight(); - int width = renderedImage.getWidth(); - for( int y = 0; y < height; y++ ) { - for( int x = 0; x < width; x++ ) { - if (isNovalue(pitTmpIterator.getSampleDouble(x, y, 0))) { - tmpWR.setSample(x, y, 0, newValue); - } - } - } - pitTmpIterator.done(); - return tmpWR; - } - - /** - * Utility method for transforming a geometry ROI into the raster space, using the provided affine transformation. - * - * @param roi a {@link Geometry} in model space. - * @param mt2d an {@link AffineTransform} that maps from raster to model space. This is already referred to the pixel corner. - * @return a {@link ROI} suitable for using with JAI. - * @throws ProcessException in case there are problems with ivnerting the provided {@link AffineTransform}. Very unlikely to happen. - */ - public static ROI prepareROI( Geometry roi, AffineTransform mt2d ) throws Exception { - // transform the geometry to raster space so that we can use it as a ROI source - Geometry rasterSpaceGeometry = JTS.transform(roi, new AffineTransform2D(mt2d.createInverse())); - - // simplify the geometry so that it's as precise as the coverage, excess coordinates - // just make it slower to determine the point in polygon relationship - Geometry simplifiedGeometry = DouglasPeuckerSimplifier.simplify(rasterSpaceGeometry, 1); - - // build a shape using a fast point in polygon wrapper - return new ROIShape(new FastLiteShape(simplifiedGeometry)); - } - - /** - * Read the min, max, mean, sdev, valid cells count from a coverage. - * - * @param coverage the coverage to browse. - * @param mask an optional mask to apply. - * @return the min, max, mean, sdev, count. - */ - public static double[] getMinMaxMeanSdevCount( GridCoverage2D coverage, GridCoverage2D mask ) { - double[] minMaxMeanSdevCount = {Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, 0.0, 0.0, 0.0}; - RandomIter coverageIter = getRandomIterator(coverage); - RenderedImage coverageRI = coverage.getRenderedImage(); - RandomIter maskIter = null; - if (mask != null) - maskIter = getRandomIterator(mask); - int cellCount = 0; - double sum = 0; - double sumSquare = 0; - for( int i = 0; i < coverageRI.getWidth(); i++ ) { - for( int j = 0; j < coverageRI.getHeight(); j++ ) { - double value = coverageIter.getSampleDouble(i, j, 0); - if (isNovalue(value)) { - continue; - } - if (maskIter != null) { - double maskValue = maskIter.getSampleDouble(i, j, 0); - if (isNovalue(maskValue)) { - continue; - } - } - if (value < minMaxMeanSdevCount[0]) { - minMaxMeanSdevCount[0] = value; - } - if (value > minMaxMeanSdevCount[1]) { - minMaxMeanSdevCount[1] = value; - } - cellCount++; - sum = sum + value; - sumSquare = sum + value * value; - } - } - minMaxMeanSdevCount[2] = sum / cellCount; - minMaxMeanSdevCount[3] = Math.sqrt(sumSquare / cellCount - minMaxMeanSdevCount[2] * minMaxMeanSdevCount[2]); - minMaxMeanSdevCount[4] = cellCount; - - return minMaxMeanSdevCount; - } - - /** - * Checks if the given path is a GRASS raster file. - * - *

                Note that there is no check on the existence of the file. - * - * @param path the path to check. - * @return true if the file is a grass raster. - */ - public static boolean isGrass( String path ) { - File file = new File(path); - File cellFolderFile = file.getParentFile(); - File mapsetFile = cellFolderFile.getParentFile(); - File windFile = new File(mapsetFile, "WIND"); - return cellFolderFile.getName().toLowerCase().equals("cell") && windFile.exists(); - } - - /** - * Utility method to get col and row of a coordinate from a {@link GridGeometry2D}. - * - * @param coordinate the coordinate to transform. - * @param gridGeometry the gridgeometry to use. - * @param point if not null, the row col values are put inside the supplied point's x and y. - * @return the array with [col, row] or null if something went wrong. - */ - public static int[] colRowFromCoordinate( Coordinate coordinate, GridGeometry2D gridGeometry, Point point ) { - try { - DirectPosition pos = new DirectPosition2D(coordinate.x, coordinate.y); - GridCoordinates2D worldToGrid = gridGeometry.worldToGrid(pos); - if (point != null) { - point.x = worldToGrid.x; - point.y = worldToGrid.y; - } - return new int[]{worldToGrid.x, worldToGrid.y}; - } catch (InvalidGridGeometryException e) { - e.printStackTrace(); - } catch (TransformException e) { - e.printStackTrace(); - } - - point.x = Integer.MAX_VALUE; - point.y = Integer.MAX_VALUE; - return null; - } - - /** - * Utility method to get the coordinate of a col and row from a {@link GridGeometry2D}. - * - * @param col the col to transform. - * @param row the row to transform. - * @param gridGeometry the gridgeometry to use. - * @return the coordinate or null if something went wrong. - */ - public static Coordinate coordinateFromColRow( int col, int row, GridGeometry2D gridGeometry ) { - try { - GridCoordinates2D pos = new GridCoordinates2D(col, row); - DirectPosition gridToWorld = gridGeometry.gridToWorld(pos); - double[] coord = gridToWorld.getCoordinate(); - return new Coordinate(coord[0], coord[1]); - } catch (InvalidGridGeometryException e) { - e.printStackTrace(); - } catch (TransformException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Mappes the values of a map (valuesMap) into the valid pixels of the second map (maskMap). - * - * @param valuesMap the map holding the values that are needed in the resulting map. - * @param maskMap the map to use as mask for the values. - * @return the map containing the values of the valuesMap, but only in the places in which the maskMap is valid. - */ - public static GridCoverage2D coverageValuesMapper( GridCoverage2D valuesMap, GridCoverage2D maskMap ) { - RegionMap valuesRegionMap = getRegionParamsFromGridCoverage(valuesMap); - int cs = valuesRegionMap.getCols(); - int rs = valuesRegionMap.getRows(); - RegionMap maskRegionMap = getRegionParamsFromGridCoverage(maskMap); - int tmpcs = maskRegionMap.getCols(); - int tmprs = maskRegionMap.getRows(); - - if (cs != tmpcs || rs != tmprs) { - throw new IllegalArgumentException("The raster maps have to be of equal size to be mapped."); - } - - RandomIter valuesIter = RandomIterFactory.create(valuesMap.getRenderedImage(), null); - RandomIter maskIter = RandomIterFactory.create(maskMap.getRenderedImage(), null); - WritableRaster writableRaster = createDoubleWritableRaster(cs, rs, null, null, JGTConstants.doubleNovalue); - WritableRandomIter outIter = RandomIterFactory.createWritable(writableRaster, null); - - for( int c = 0; c < cs; c++ ) { - for( int r = 0; r < rs; r++ ) { - if (!isNovalue(maskIter.getSampleDouble(c, r, 0))) { - // if not nv, put the value from the valueMap in the new map - double value = valuesIter.getSampleDouble(c, r, 0); - if (!isNovalue(value)) - outIter.setSample(c, r, 0, value); - } - } - } - - GridCoverage2D outCoverage = buildCoverage( - "mapped", writableRaster, maskRegionMap, valuesMap.getCoordinateReferenceSystem()); //$NON-NLS-1$ - return outCoverage; - } - - /** - * Coverage merger. - * - *

                Values from valuesMap are placed into the onMap coverage, if they are valid.

                - * - * @param valuesMap the map from which to take teh valid values to place in the output map. - * @param onMap the base map on which to place the valuesMap values. - * @return the merged map of valuesMap over onMap. - */ - public static GridCoverage2D mergeCoverages( GridCoverage2D valuesMap, GridCoverage2D onMap ) { - RegionMap valuesRegionMap = getRegionParamsFromGridCoverage(valuesMap); - int cs = valuesRegionMap.getCols(); - int rs = valuesRegionMap.getRows(); - RegionMap onRegionMap = getRegionParamsFromGridCoverage(onMap); - int tmpcs = onRegionMap.getCols(); - int tmprs = onRegionMap.getRows(); - - if (cs != tmpcs || rs != tmprs) { - throw new IllegalArgumentException("The raster maps have to be of equal size to be mapped."); - } - - RandomIter valuesIter = RandomIterFactory.create(valuesMap.getRenderedImage(), null); - WritableRaster outWR = renderedImage2WritableRaster(onMap.getRenderedImage(), false); - WritableRandomIter outIter = RandomIterFactory.createWritable(outWR, null); - - for( int c = 0; c < cs; c++ ) { - for( int r = 0; r < rs; r++ ) { - double value = valuesIter.getSampleDouble(c, r, 0); - if (!isNovalue(value)) - outIter.setSample(c, r, 0, value); - } - } - - GridCoverage2D outCoverage = buildCoverage("merged", outWR, onRegionMap, valuesMap.getCoordinateReferenceSystem()); //$NON-NLS-1$ - return outCoverage; - } - - /** - * Calculates the hypsographic curve for the given raster, using the supplied bins. - * - * @param elevationCoverage the elevation raster. - * @param bins the bins to use. - * @param pm the monitor. - * @return the matrix containing the hypsographic curve in [elev, area] pairs per row. - */ - public static double[][] calculateHypsographic( GridCoverage2D elevationCoverage, int bins, IJGTProgressMonitor pm ) { - if (pm == null) { - pm = new DummyProgressMonitor(); - } - RegionMap regionMap = getRegionParamsFromGridCoverage(elevationCoverage); - int cols = regionMap.getCols(); - int rows = regionMap.getRows(); - double xres = regionMap.getXres(); - double yres = regionMap.getYres(); - - /* - * calculate the maximum and minimum value of the raster data - */ - RandomIter elevIter = getRandomIterator(elevationCoverage); - double maxRasterValue = Double.NEGATIVE_INFINITY; - double minRasterValue = Double.POSITIVE_INFINITY; - for( int r = 0; r < rows; r++ ) { - for( int c = 0; c < cols; c++ ) { - double value = elevIter.getSampleDouble(c, r, 0); - if (isNovalue(value)) { - continue; - } - maxRasterValue = max(maxRasterValue, value); - minRasterValue = min(minRasterValue, value); - } - } - - /* - * subdivide the whole value range in bins and count the number of pixels in each bin - */ - double binWidth = (maxRasterValue - minRasterValue) / (bins); - double[] pixelPerBinCount = new double[bins]; - double[] areaAtGreaterElevation = new double[bins]; - - pm.beginTask("Performing calculation of hypsographic curve...", rows); - for( int r = 0; r < rows; r++ ) { - for( int c = 0; c < cols; c++ ) { - double value = elevIter.getSampleDouble(c, r, 0); - if (isNovalue(value)) { - continue; - } - for( int k = 0; k < pixelPerBinCount.length; k++ ) { - double thres = minRasterValue + k * binWidth; - if (value >= thres) { - pixelPerBinCount[k] = pixelPerBinCount[k] + 1; - areaAtGreaterElevation[k] = areaAtGreaterElevation[k] + (yres * xres); - } - } - } - pm.worked(1); - } - pm.done(); - - double[][] hypso = new double[pixelPerBinCount.length][3]; - for( int j = 0; j < hypso.length; j++ ) { - hypso[j][0] = minRasterValue + (j * binWidth) + (binWidth / 2.0); - hypso[j][1] = areaAtGreaterElevation[j] / 1000000.0; - } - - return hypso; - } - - /** - * Simple method to get a value from a single band raster. - * - * @param raster the single band raster. - * @param col the column. - * @param row the row. - * @return the value in the [col, row] of the first band. - */ - public static double getValue( GridCoverage2D raster, int col, int row ) { - double[] values = raster.evaluate(new GridCoordinates2D(col, row), (double[]) null); - return values[0]; - } - - public static double getValue( GridCoverage2D raster, double easting, double northing ) { - double[] values = raster.evaluate(new Point2D.Double(easting, northing), (double[]) null); - return values[0]; - } - - public static double getValue( GridCoverage2D raster, Coordinate coordinate ) { - return getValue(raster, coordinate.x, coordinate.y); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.utils.coverage; + +import static java.lang.Math.max; +import static java.lang.Math.min; +import static org.jgrasstools.gears.libs.modules.JGTConstants.doesOverFlow; +import static org.jgrasstools.gears.libs.modules.JGTConstants.doubleNovalue; +import static org.jgrasstools.gears.libs.modules.JGTConstants.isNovalue; + +import java.awt.Point; +import java.awt.geom.AffineTransform; +import java.awt.geom.Point2D; +import java.awt.image.ComponentSampleModel; +import java.awt.image.DataBuffer; +import java.awt.image.Raster; +import java.awt.image.RenderedImage; +import java.awt.image.SampleModel; +import java.awt.image.WritableRaster; +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import javax.media.jai.ROI; +import javax.media.jai.ROIShape; +import javax.media.jai.RasterFactory; +import javax.media.jai.iterator.RandomIter; +import javax.media.jai.iterator.RandomIterFactory; +import javax.media.jai.iterator.WritableRandomIter; + +import org.geotools.coverage.CoverageFactoryFinder; +import org.geotools.coverage.grid.GridCoordinates2D; +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.coverage.grid.GridCoverageFactory; +import org.geotools.coverage.grid.GridEnvelope2D; +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.coverage.grid.InvalidGridGeometryException; +import org.geotools.coverage.grid.io.AbstractGridFormat; +import org.geotools.geometry.DirectPosition2D; +import org.geotools.geometry.Envelope2D; +import org.geotools.geometry.jts.JTS; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.geotools.parameter.Parameter; +import org.geotools.process.ProcessException; +import org.geotools.referencing.crs.DefaultGeographicCRS; +import org.geotools.referencing.operation.matrix.XAffineTransform; +import org.geotools.referencing.operation.transform.AffineTransform2D; +import org.jgrasstools.gears.io.grasslegacy.GrassLegacyGridCoverage2D; +import org.jgrasstools.gears.io.grasslegacy.GrassLegacyRandomIter; +import org.jgrasstools.gears.io.grasslegacy.GrassLegacyWritableRaster; +import org.jgrasstools.gears.io.grasslegacy.utils.Window; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.features.FastLiteShape; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.coverage.grid.GridCoverageReader; +import org.opengis.geometry.DirectPosition; +import org.opengis.geometry.Envelope; +import org.opengis.parameter.GeneralParameterValue; +import org.opengis.parameter.ParameterValue; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.opengis.referencing.operation.TransformException; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.linearref.LengthIndexedLine; +import com.vividsolutions.jts.simplify.DouglasPeuckerSimplifier; + +/** + *

                + * A class of utilities bound to raster analysis + *

                + * + * @author Andrea Antonello - www.hydrologis.com + * @since 0.1 + */ +public class CoverageUtilities { + public static final String NORTH = "NORTH"; //$NON-NLS-1$ + public static final String SOUTH = "SOUTH"; //$NON-NLS-1$ + public static final String WEST = "WEST"; //$NON-NLS-1$ + public static final String EAST = "EAST"; //$NON-NLS-1$ + public static final String XRES = "XRES"; //$NON-NLS-1$ + public static final String YRES = "YRES"; //$NON-NLS-1$ + public static final String ROWS = "ROWS"; //$NON-NLS-1$ + public static final String COLS = "COLS"; //$NON-NLS-1$ + + /** + * Creates a {@link RandomIter} for the given {@link GridCoverage2D}. + * + *

                It is important to use this method since it supports also + * large GRASS rasters. + * + * @param coverage the coverage on which to wrap a {@link RandomIter}. + * @return the iterator. + */ + public static RandomIter getRandomIterator( GridCoverage2D coverage ) { + if (coverage instanceof GrassLegacyGridCoverage2D) { + GrassLegacyGridCoverage2D grassGC = (GrassLegacyGridCoverage2D) coverage; + GrassLegacyRandomIter iter = new GrassLegacyRandomIter(grassGC.getData()); + return iter; + } + RenderedImage renderedImage = coverage.getRenderedImage(); + RandomIter iter = RandomIterFactory.create(renderedImage, null); + return iter; + } + + /** + * Creates a {@link WritableRandomIter}. + * + *

                It is important to use this method since it supports also + * large GRASS rasters. + * + *

                If the size would throw an integer overflow, a {@link GrassLegacyRandomIter} + * will be proposed to try to save the saveable. + * + * @param raster the coverage on which to wrap a {@link WritableRandomIter}. + * @return the iterator. + */ + public static WritableRandomIter getWritableRandomIterator( int width, int height ) { + if (doesOverFlow(width, height)) { + GrassLegacyRandomIter iter = new GrassLegacyRandomIter(new double[height][width]); + return iter; + } + WritableRaster pitRaster = CoverageUtilities.createDoubleWritableRaster(width, height, null, null, null); + WritableRandomIter iter = RandomIterFactory.createWritable(pitRaster, null); + return iter; + } + + /** + * Creates a {@link WritableRandomIter}. + * + *

                It is important to use this method since it supports also + * large GRASS rasters. + * + *

                If the size would throw an integer overflow, a {@link GrassLegacyRandomIter} + * will be proposed to try to save the saveable. + * + * @param raster the coverage on which to wrap a {@link WritableRandomIter}. + * @return the iterator. + */ + public static WritableRandomIter getWritableRandomIterator( WritableRaster raster ) { + if (raster instanceof GrassLegacyWritableRaster) { + GrassLegacyWritableRaster wRaster = (GrassLegacyWritableRaster) raster; + double[][] data = wRaster.getData(); + getWritableRandomIterator(data[0].length, data.length); + } + WritableRandomIter iter = RandomIterFactory.createWritable(raster, null); + return iter; + } + + /** + * Creates a {@link WritableRaster writable raster}. + * + * @param width width of the raster to create. + * @param height height of the raster to create. + * @param dataClass data type for the raster. If null, defaults to double. + * @param sampleModel the samplemodel to use. If null, defaults to + * new ComponentSampleModel(dataType, width, height, 1, width, new int[]{0});. + * @param value value to which to set the raster to. If null, the default of the raster creation is + * used, which is 0. + * @return a {@link WritableRaster writable raster}. + */ + public static WritableRaster createDoubleWritableRaster( int width, int height, Class< ? > dataClass, + SampleModel sampleModel, Double value ) { + int dataType = DataBuffer.TYPE_DOUBLE; + if (dataClass != null) { + if (dataClass.isAssignableFrom(Integer.class)) { + dataType = DataBuffer.TYPE_INT; + } else if (dataClass.isAssignableFrom(Float.class)) { + dataType = DataBuffer.TYPE_FLOAT; + } else if (dataClass.isAssignableFrom(Byte.class)) { + dataType = DataBuffer.TYPE_BYTE; + } + } + + if (!doesOverFlow(width, height)) { + if (sampleModel == null) { + sampleModel = new ComponentSampleModel(dataType, width, height, 1, width, new int[]{0}); + } + + WritableRaster raster = RasterFactory.createWritableRaster(sampleModel, null); + if (value != null) { + // autobox only once + double v = value; + + for( int y = 0; y < height; y++ ) { + for( int x = 0; x < width; x++ ) { + raster.setSample(x, y, 0, v); + } + } + } + return raster; + } else { + WritableRaster raster = new GrassLegacyWritableRaster(new double[height][width]); + return raster; + } + } + + /** + * Get the parameters of the region covered by the {@link GridCoverage2D coverage}. + * + * @param gridCoverage the coverage. + * @return the {@link HashMap map} of parameters. ( {@link #NORTH} and the + * other static vars can be used to retrieve them. + */ + public static RegionMap getRegionParamsFromGridCoverage( GridCoverage2D gridCoverage ) { + RegionMap envelopeParams = new RegionMap(); + + Envelope envelope = gridCoverage.getEnvelope(); + + DirectPosition lowerCorner = envelope.getLowerCorner(); + double[] westSouth = lowerCorner.getCoordinate(); + DirectPosition upperCorner = envelope.getUpperCorner(); + double[] eastNorth = upperCorner.getCoordinate(); + + GridGeometry2D gridGeometry = gridCoverage.getGridGeometry(); + GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); + int height = gridRange.height; + int width = gridRange.width; + + AffineTransform gridToCRS = (AffineTransform) gridGeometry.getGridToCRS(); + double xRes = XAffineTransform.getScaleX0(gridToCRS); + double yRes = XAffineTransform.getScaleY0(gridToCRS); + + envelopeParams.put(NORTH, eastNorth[1]); + envelopeParams.put(SOUTH, westSouth[1]); + envelopeParams.put(WEST, westSouth[0]); + envelopeParams.put(EAST, eastNorth[0]); + envelopeParams.put(XRES, xRes); + envelopeParams.put(YRES, yRes); + envelopeParams.put(ROWS, (double) height); + envelopeParams.put(COLS, (double) width); + + return envelopeParams; + } + + /** + * Get the array of region parameters covered by the {@link GridCoverage2D coverage}. + * + * @param gridCoverage the coverage. + * @return the array of region parameters as [n, s, w, e, xres, yres, cols, rows] + */ + public static double[] getRegionArrayFromGridCoverage( GridCoverage2D gridCoverage ) { + Envelope envelope = gridCoverage.getEnvelope(); + DirectPosition lowerCorner = envelope.getLowerCorner(); + double[] westSouth = lowerCorner.getCoordinate(); + DirectPosition upperCorner = envelope.getUpperCorner(); + double[] eastNorth = upperCorner.getCoordinate(); + + GridGeometry2D gridGeometry = gridCoverage.getGridGeometry(); + GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); + int height = gridRange.height; + int width = gridRange.width; + + AffineTransform gridToCRS = (AffineTransform) gridGeometry.getGridToCRS(); + double xRes = XAffineTransform.getScaleX0(gridToCRS); + double yRes = XAffineTransform.getScaleY0(gridToCRS); + + double[] params = new double[]{eastNorth[1], westSouth[1], westSouth[0], eastNorth[0], xRes, yRes, width, height}; + + return params; + } + + /** + * Get the array of rows and cols. + * + * @param gridCoverage the coverage. + * @return the array as [cols, rows] + */ + public static int[] getRegionColsRows( GridCoverage2D gridCoverage ) { + GridGeometry2D gridGeometry = gridCoverage.getGridGeometry(); + GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); + int height = gridRange.height; + int width = gridRange.width; + int[] params = new int[]{width, height}; + return params; + } + + public static HashMap generalParameterValues2RegionParamsMap( GeneralParameterValue[] params ) { + GridGeometry2D gg = null; + if (params != null) { + for( int i = 0; i < params.length; i++ ) { + final ParameterValue< ? > param = (ParameterValue< ? >) params[i]; + final String name = param.getDescriptor().getName().getCode(); + if (name.equals(AbstractGridFormat.READ_GRIDGEOMETRY2D.getName().toString())) { + gg = (GridGeometry2D) param.getValue(); + break; + } + } + } + if (gg == null) { + throw new IllegalArgumentException("No gridgeometry present"); //$NON-NLS-1$ + } + HashMap regionParams = gridGeometry2RegionParamsMap(gg); + return regionParams; + } + + public static RegionMap gridGeometry2RegionParamsMap( GridGeometry2D gridGeometry ) { + RegionMap envelopeParams = new RegionMap(); + + Envelope envelope = gridGeometry.getEnvelope2D(); + DirectPosition lowerCorner = envelope.getLowerCorner(); + double[] westSouth = lowerCorner.getCoordinate(); + DirectPosition upperCorner = envelope.getUpperCorner(); + double[] eastNorth = upperCorner.getCoordinate(); + + GridEnvelope2D gridRange = gridGeometry.getGridRange2D(); + int height = gridRange.height; + int width = gridRange.width; + + AffineTransform gridToCRS = (AffineTransform) gridGeometry.getGridToCRS(); + double xRes = XAffineTransform.getScaleX0(gridToCRS); + double yRes = XAffineTransform.getScaleY0(gridToCRS); + + envelopeParams.put(NORTH, eastNorth[1]); + envelopeParams.put(SOUTH, westSouth[1]); + envelopeParams.put(WEST, westSouth[0]); + envelopeParams.put(EAST, eastNorth[0]); + envelopeParams.put(XRES, xRes); + envelopeParams.put(YRES, yRes); + envelopeParams.put(ROWS, (double) height); + envelopeParams.put(COLS, (double) width); + + return envelopeParams; + } + + public static RegionMap makeRegionParamsMap( double north, double south, double west, double east, double xRes, double yRes, + int width, int height ) { + RegionMap envelopeParams = new RegionMap(); + envelopeParams.put(NORTH, north); + envelopeParams.put(SOUTH, south); + envelopeParams.put(WEST, west); + envelopeParams.put(EAST, east); + envelopeParams.put(XRES, xRes); + envelopeParams.put(YRES, yRes); + envelopeParams.put(ROWS, (double) height); + envelopeParams.put(COLS, (double) width); + return envelopeParams; + } + + public static GridGeometry2D gridGeometryFromRegionParams( HashMap envelopeParams, + CoordinateReferenceSystem crs ) { + double west = envelopeParams.get(WEST); + double south = envelopeParams.get(SOUTH); + double east = envelopeParams.get(EAST); + double north = envelopeParams.get(NORTH); + int rows = envelopeParams.get(ROWS).intValue(); + int cols = envelopeParams.get(COLS).intValue(); + + return gridGeometryFromRegionValues(north, south, east, west, cols, rows, crs); + } + + public static GridGeometry2D gridGeometryFromRegionValues( double north, double south, double east, double west, int cols, + int rows, CoordinateReferenceSystem crs ) { + Envelope envelope = new Envelope2D(crs, west, south, east - west, north - south); + GridEnvelope2D gridRange = new GridEnvelope2D(0, 0, cols, rows); + GridGeometry2D gridGeometry2D = new GridGeometry2D(gridRange, envelope); + return gridGeometry2D; + } + + /** + * Utility method to create read parameters for {@link GridCoverageReader} + * + * @param width the needed number of columns. + * @param height the needed number of columns. + * @param north the northern boundary. + * @param south the southern boundary. + * @param east the eastern boundary. + * @param west the western boundary. + * @param crs the {@link CoordinateReferenceSystem}. Can be null, even if it should not. + * @return the {@link GeneralParameterValue array of parameters}. + */ + public static GeneralParameterValue[] createGridGeometryGeneralParameter( int width, int height, double north, double south, + double east, double west, CoordinateReferenceSystem crs ) { + GeneralParameterValue[] readParams = new GeneralParameterValue[1]; + Parameter readGG = new Parameter(AbstractGridFormat.READ_GRIDGEOMETRY2D); + GridEnvelope2D gridEnvelope = new GridEnvelope2D(0, 0, width, height); + Envelope env; + if (crs != null) { + env = new ReferencedEnvelope(west, east, south, north, crs); + } else { + DirectPosition2D minDp = new DirectPosition2D(west, south); + DirectPosition2D maxDp = new DirectPosition2D(east, north); + env = new Envelope2D(minDp, maxDp); + } + readGG.setValue(new GridGeometry2D(gridEnvelope, env)); + readParams[0] = readGG; + + return readParams; + } + + /** + * Utility method to create read parameters for {@link GridCoverageReader} + * + * @param xres the X resolution. + * @param yres the Y resolution. + * @param north the northern boundary. + * @param south the southern boundary. + * @param east the eastern boundary. + * @param west the western boundary. + * @param crs the {@link CoordinateReferenceSystem}. Can be null, even if it should not. + * @return the {@link GeneralParameterValue array of parameters}. + */ + public static GeneralParameterValue[] createGridGeometryGeneralParameter( double xres, double yres, double north, + double south, double east, double west, CoordinateReferenceSystem crs ) { + // make sure the resolution gives integer rows and cols + int height = (int) Math.round((north - south) / yres); + if (height < 1) + height = 1; + int width = (int) Math.round((east - west) / xres); + if (width < 1) + width = 1; + + GeneralParameterValue[] generalParameter = createGridGeometryGeneralParameter(width, height, north, south, east, west, + crs); + + return generalParameter; + } + + /** + * Create a {@link WritableRaster} from a double matrix. + * + * @param matrix the matrix to take the data from. + * @param matrixIsRowCol a flag to tell if the matrix has rowCol or colRow order. + * @return the produced raster. + */ + public static WritableRaster createWritableRasterFromMatrix( double[][] matrix, boolean matrixIsRowCol ) { + int height = matrix.length; + int width = matrix[0].length; + if (!matrixIsRowCol) { + int tmp = height; + height = width; + width = tmp; + } + WritableRaster writableRaster = createDoubleWritableRaster(width, height, null, null, null); + + WritableRandomIter rasterIter = RandomIterFactory.createWritable(writableRaster, null); + for( int x = 0; x < width; x++ ) { + for( int y = 0; y < height; y++ ) { + if (matrixIsRowCol) { + rasterIter.setSample(x, y, 0, matrix[y][x]); + } else { + rasterIter.setSample(x, y, 0, matrix[x][y]); + } + } + } + rasterIter.done(); + + return writableRaster; + } + + /** + * Create a {@link WritableRaster} from a float matrix. + * + * @param matrix the matrix to take the data from. + * @param matrixIsRowCol a flag to tell if the matrix has rowCol or colRow order. + * @return the produced raster. + */ + public static WritableRaster createWritableRasterFromMatrix( float[][] matrix, boolean matrixIsRowCol ) { + int height = matrix.length; + int width = matrix[0].length; + if (!matrixIsRowCol) { + int tmp = height; + height = width; + width = tmp; + } + WritableRaster writableRaster = createDoubleWritableRaster(width, height, null, null, null); + + WritableRandomIter disckRandomIter = RandomIterFactory.createWritable(writableRaster, null); + for( int x = 0; x < width; x++ ) { + for( int y = 0; y < height; y++ ) { + if (matrixIsRowCol) { + disckRandomIter.setSample(x, y, 0, matrix[y][x]); + } else { + disckRandomIter.setSample(x, y, 0, matrix[x][y]); + } + } + } + disckRandomIter.done(); + + return writableRaster; + } + + /** + * Create a {@link WritableRaster} from a int array. + * + * @param width the width of the raster to create. + * @param height the height of the raster to create. + * @param pixels the array of data. + * @return the produced raster. + */ + public static WritableRaster createWritableRasterFromArray( int width, int height, int[] pixels ) { + WritableRaster writableRaster = createDoubleWritableRaster(width, height, null, null, null); + int index = 0; + for( int y = 0; y < height; y++ ) { + for( int x = 0; x < width; x++ ) { + double value = (double) pixels[index]; + if (value == 0) { + value = doubleNovalue; + } + writableRaster.setSample(x, y, 0, value); + index++; + } + } + return writableRaster; + } + + /** + * Creates a {@link GridCoverage2D coverage} from a double[][] matrix and the necessary geographic Information. + * + * @param name the name of the coverage. + * @param dataMatrix the matrix containing the data. + * @param envelopeParams the map of boundary parameters. + * @param crs the {@link CoordinateReferenceSystem}. + * @param matrixIsRowCol a flag to tell if the matrix has rowCol or colRow order. + * @return the {@link GridCoverage2D coverage}. + */ + public static GridCoverage2D buildCoverage( String name, double[][] dataMatrix, HashMap envelopeParams, + CoordinateReferenceSystem crs, boolean matrixIsRowCol ) { + WritableRaster writableRaster = createWritableRasterFromMatrix(dataMatrix, matrixIsRowCol); + return buildCoverage(name, writableRaster, envelopeParams, crs); + } + + /** + * Creates a {@link GridCoverage2D coverage} from a float[][] matrix and the necessary geographic Information. + * + * @param name the name of the coverage. + * @param dataMatrix the matrix containing the data. + * @param envelopeParams the map of boundary parameters. + * @param crs the {@link CoordinateReferenceSystem}. + * @param matrixIsRowCol a flag to tell if the matrix has rowCol or colRow order. + * @return the {@link GridCoverage2D coverage}. + */ + public static GridCoverage2D buildCoverage( String name, float[][] dataMatrix, HashMap envelopeParams, + CoordinateReferenceSystem crs, boolean matrixIsRowCol ) { + WritableRaster writableRaster = createWritableRasterFromMatrix(dataMatrix, matrixIsRowCol); + return buildCoverage(name, writableRaster, envelopeParams, crs); + } + + /** + * Creates a {@link GridCoverage2D coverage} from the {@link RenderedImage image} and the necessary geographic Information. + * + * @param name the name of the coverage. + * @param renderedImage the image containing the data. + * @param envelopeParams the map of boundary parameters. + * @param crs the {@link CoordinateReferenceSystem}. + * @return the {@link GridCoverage2D coverage}. + */ + public static GridCoverage2D buildCoverage( String name, RenderedImage renderedImage, HashMap envelopeParams, + CoordinateReferenceSystem crs ) { + + double west = envelopeParams.get(WEST); + double south = envelopeParams.get(SOUTH); + double east = envelopeParams.get(EAST); + double north = envelopeParams.get(NORTH); + Envelope2D writeEnvelope = new Envelope2D(crs, west, south, east - west, north - south); + GridCoverageFactory factory = CoverageFactoryFinder.getGridCoverageFactory(null); + + GridCoverage2D coverage2D = factory.create(name, renderedImage, writeEnvelope); + return coverage2D; + } + + /** + * Creates a {@link GridCoverage2D coverage} from the {@link WritableRaster writable raster} and the necessary geographic Information. + * + * @param name the name of the coverage. + * @param writableRaster the raster containing the data. + * @param envelopeParams the map of boundary parameters. + * @param crs the {@link CoordinateReferenceSystem}. + * @return the {@link GridCoverage2D coverage}. + */ + public static GridCoverage2D buildCoverage( String name, WritableRaster writableRaster, + HashMap envelopeParams, CoordinateReferenceSystem crs ) { + if (writableRaster instanceof GrassLegacyWritableRaster) { + GrassLegacyWritableRaster wRaster = (GrassLegacyWritableRaster) writableRaster; + double west = envelopeParams.get(WEST); + double south = envelopeParams.get(SOUTH); + double east = envelopeParams.get(EAST); + double north = envelopeParams.get(NORTH); + int rows = envelopeParams.get(ROWS).intValue(); + int cols = envelopeParams.get(COLS).intValue(); + Window window = new Window(west, east, south, north, rows, cols); + GrassLegacyGridCoverage2D coverage2D = new GrassLegacyGridCoverage2D(window, wRaster.getData(), crs); + return coverage2D; + } else { + double west = envelopeParams.get(WEST); + double south = envelopeParams.get(SOUTH); + double east = envelopeParams.get(EAST); + double north = envelopeParams.get(NORTH); + Envelope2D writeEnvelope = new Envelope2D(crs, west, south, east - west, north - south); + GridCoverageFactory factory = CoverageFactoryFinder.getGridCoverageFactory(null); + + GridCoverage2D coverage2D = factory.create(name, writableRaster, writeEnvelope); + return coverage2D; + } + } + + /** + * Creates a useless {@link GridCoverage2D} that might be usefull as placeholder. + * + * @return the dummy grod coverage. + */ + public static GridCoverage2D buildDummyCoverage() { + HashMap envelopeParams = new HashMap(); + envelopeParams.put(NORTH, 1.0); + envelopeParams.put(SOUTH, 0.0); + envelopeParams.put(WEST, 0.0); + envelopeParams.put(EAST, 1.0); + envelopeParams.put(XRES, 1.0); + envelopeParams.put(YRES, 1.0); + envelopeParams.put(ROWS, 1.0); + envelopeParams.put(COLS, 1.0); + double[][] dataMatrix = new double[1][1]; + dataMatrix[0][0] = 0; + WritableRaster writableRaster = createWritableRasterFromMatrix(dataMatrix, true); + return buildCoverage("dummy", writableRaster, envelopeParams, DefaultGeographicCRS.WGS84); //$NON-NLS-1$ + } + + /** + * Creates a compatible {@link WritableRaster} from a {@link RenderedImage}. + * + * @param renderedImage the image to convert. + * @param nullBorders a flag that indicates if the borders should be set to null. + * @return the converted writable raster. + */ + public static WritableRaster renderedImage2WritableRaster( RenderedImage renderedImage, boolean nullBorders ) { + int width = renderedImage.getWidth(); + int height = renderedImage.getHeight(); + + Raster data = renderedImage.getData(); + WritableRaster writableRaster = data.createCompatibleWritableRaster(); + writableRaster.setDataElements(0, 0, data); + if (nullBorders) { + for( int c = 0; c < width; c++ ) { + writableRaster.setSample(c, 0, 0, doubleNovalue); + writableRaster.setSample(c, height - 1, 0, doubleNovalue); + } + for( int r = 0; r < height; r++ ) { + writableRaster.setSample(0, r, 0, doubleNovalue); + writableRaster.setSample(width - 1, r, 0, doubleNovalue); + } + } + + return writableRaster; + } + + /** + * Transform a rendered image in its array representation. + * + * @param renderedImage the rendered image to transform. + * @return the array holding the data. + */ + public static double[] renderedImage2DoubleArray( RenderedImage renderedImage ) { + int width = renderedImage.getWidth(); + int height = renderedImage.getHeight(); + + double[] values = new double[width * height]; + RandomIter imageIter = RandomIterFactory.create(renderedImage, null); + int index = 0;; + for( int x = 0; x < width; x++ ) { + for( int y = 0; y < height; y++ ) { + double sample = imageIter.getSampleDouble(x, y, 0); + values[index++] = sample; + } + } + imageIter.done(); + return values; + } + + /** + * Transform a double values rendered image in its integer array representation by scaling the values. + * + * @param renderedImage the rendered image to transform. + * @param multiply value by which to multiply the values before casting to integer. + * @return the array holding the data. + */ + public static int[] renderedImage2IntegerArray( RenderedImage renderedImage, double multiply ) { + int width = renderedImage.getWidth(); + int height = renderedImage.getHeight(); + + int[] values = new int[width * height]; + RandomIter imageIter = RandomIterFactory.create(renderedImage, null); + int index = 0;; + for( int x = 0; x < width; x++ ) { + for( int y = 0; y < height; y++ ) { + double sample = imageIter.getSampleDouble(x, y, 0); + sample = sample * multiply; + values[index++] = (int) sample; + } + } + imageIter.done(); + return values; + } + + /** + * Transforms an array of integer values into a {@link WritableRaster}. + * + * @param array the values to transform. + * @param divide the factor by which to divide the values. + * @param width the width of the resulting image. + * @param height the height of the resulting image. + * @return the raster. + */ + public static WritableRaster integerArray2WritableRaster( int[] array, double divide, int width, int height ) { + WritableRaster writableRaster = createDoubleWritableRaster(width, height, null, null, null); + int index = 0;; + for( int x = 0; x < width; x++ ) { + for( int y = 0; y < height; y++ ) { + double value = (double) array[index++] / divide; + writableRaster.setSample(x, y, 0, value); + } + } + return writableRaster; + } + + /** + * Transforms an array of values into a {@link WritableRaster}. + * + * @param array the values to transform. + * @param divide the factor by which to divide the values. + * @param width the width of the resulting image. + * @param height the height of the resulting image. + * @return the raster. + */ + public static WritableRaster doubleArray2WritableRaster( double[] array, int width, int height ) { + WritableRaster writableRaster = createDoubleWritableRaster(width, height, null, null, null); + int index = 0;; + for( int x = 0; x < width; x++ ) { + for( int y = 0; y < height; y++ ) { + writableRaster.setSample(x, y, 0, array[index++]); + } + } + return writableRaster; + } + + /** + * Creates a border of novalues. + * + * @param raster the raster to process. + */ + public static void setNovalueBorder( WritableRaster raster ) { + int width = raster.getWidth(); + int height = raster.getHeight(); + + for( int c = 0; c < width; c++ ) { + raster.setSample(c, 0, 0, doubleNovalue); + raster.setSample(c, height - 1, 0, doubleNovalue); + } + for( int r = 0; r < height; r++ ) { + raster.setSample(0, r, 0, doubleNovalue); + raster.setSample(width - 1, r, 0, doubleNovalue); + } + } + + /** + * Calculates the profile of a raster map between given {@link Coordinate coordinates}. + * + * @param coverage the coverage from which to extract the profile. + * @param coordinates the coordinates to use to trace the profile. + * @return the list of {@link ProfilePoint}s. + * @throws Exception + */ + public static List doProfile( GridCoverage2D coverage, Coordinate... coordinates ) throws Exception { + RegionMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(coverage); + + GridGeometry2D gridGeometry = coverage.getGridGeometry(); + RenderedImage renderedImage = coverage.getRenderedImage(); + RandomIter iter = RandomIterFactory.create(renderedImage, null); + + List profilePointsList = doProfile(iter, regionMap, gridGeometry, coordinates); + + iter.done(); + return profilePointsList; + } + + /** + * Calculates the profile of a raster map between given {@link Coordinate coordinates}. + * + * @param mapIter the {@link RandomIter map iterator}. + * @param regionMap the region map. + * @param gridGeometry the gridgeometry of the map. + * @param coordinates the {@link Coordinate}s to create the profile on. + * @return the list of {@link ProfilePoint}s. + * @throws TransformException + */ + public static List doProfile( RandomIter mapIter, RegionMap regionMap, GridGeometry2D gridGeometry, + Coordinate... coordinates ) throws TransformException { + List profilePointsList = new ArrayList(); + Envelope2D envelope2d = gridGeometry.getEnvelope2D(); + double xres = regionMap.getXres(); + double yres = regionMap.getYres(); + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + double step = Math.min(xres, yres); + + LineString line = GeometryUtilities.gf().createLineString(coordinates); + double lineLength = line.getLength(); + LengthIndexedLine indexedLine = new LengthIndexedLine(line); + + double progressive = 0.0; + GridCoordinates2D gridCoords; + while( progressive < lineLength + step ) { // run over by a step to make sure we get the + // last coord back from the extractor + Coordinate c = indexedLine.extractPoint(progressive); + gridCoords = gridGeometry.worldToGrid(new DirectPosition2D(c.x, c.y)); + double value = JGTConstants.doubleNovalue; + if (envelope2d.contains(c.x, c.y) && isInside(cols, rows, gridCoords)) { + value = mapIter.getSampleDouble(gridCoords.x, gridCoords.y, 0); + } + ProfilePoint profilePoint = new ProfilePoint(progressive, value, c.x, c.y); + profilePointsList.add(profilePoint); + progressive = progressive + step; + } + return profilePointsList; + } + + private static boolean isInside( int cols, int rows, GridCoordinates2D gridCoords ) { + return gridCoords.x >= 0 && gridCoords.x <= cols && gridCoords.y >= 0 && gridCoords.y <= rows; + } + /** + * Utility to tranform row/col to easting/westing. + * + * @param gridGeometry + * @param x + * @param y + * @return the world easting and northing. + * @throws InvalidGridGeometryException + * @throws TransformException + */ + public static Point2D gridToWorld( GridGeometry2D gridGeometry, int x, int y ) throws InvalidGridGeometryException, + TransformException { + final Point2D worldPosition = new Point2D.Double(x, y); + gridGeometry.getGridToCRS2D().transform(worldPosition, worldPosition); + return worldPosition; + } + + /** + * Replace the current internal novalue with a given value. + * + * @param renderedImage a {@link RenderedImage}. + * @param newValue the value to put in instead of the novalue. + * @return the rendered image with the substituted novalue. + */ + public static WritableRaster replaceNovalue( RenderedImage renderedImage, double newValue ) { + WritableRaster tmpWR = (WritableRaster) renderedImage.getData(); + RandomIter pitTmpIterator = RandomIterFactory.create(renderedImage, null); + + int height = renderedImage.getHeight(); + int width = renderedImage.getWidth(); + for( int y = 0; y < height; y++ ) { + for( int x = 0; x < width; x++ ) { + if (isNovalue(pitTmpIterator.getSampleDouble(x, y, 0))) { + tmpWR.setSample(x, y, 0, newValue); + } + } + } + pitTmpIterator.done(); + return tmpWR; + } + + /** + * Utility method for transforming a geometry ROI into the raster space, using the provided affine transformation. + * + * @param roi a {@link Geometry} in model space. + * @param mt2d an {@link AffineTransform} that maps from raster to model space. This is already referred to the pixel corner. + * @return a {@link ROI} suitable for using with JAI. + * @throws ProcessException in case there are problems with ivnerting the provided {@link AffineTransform}. Very unlikely to happen. + */ + public static ROI prepareROI( Geometry roi, AffineTransform mt2d ) throws Exception { + // transform the geometry to raster space so that we can use it as a ROI source + Geometry rasterSpaceGeometry = JTS.transform(roi, new AffineTransform2D(mt2d.createInverse())); + + // simplify the geometry so that it's as precise as the coverage, excess coordinates + // just make it slower to determine the point in polygon relationship + Geometry simplifiedGeometry = DouglasPeuckerSimplifier.simplify(rasterSpaceGeometry, 1); + + // build a shape using a fast point in polygon wrapper + return new ROIShape(new FastLiteShape(simplifiedGeometry)); + } + + /** + * Read the min, max, mean, sdev, valid cells count from a coverage. + * + * @param coverage the coverage to browse. + * @param mask an optional mask to apply. + * @return the min, max, mean, sdev, count. + */ + public static double[] getMinMaxMeanSdevCount( GridCoverage2D coverage, GridCoverage2D mask ) { + double[] minMaxMeanSdevCount = {Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, 0.0, 0.0, 0.0}; + RandomIter coverageIter = getRandomIterator(coverage); + RenderedImage coverageRI = coverage.getRenderedImage(); + RandomIter maskIter = null; + if (mask != null) + maskIter = getRandomIterator(mask); + int cellCount = 0; + double sum = 0; + double sumSquare = 0; + for( int i = 0; i < coverageRI.getWidth(); i++ ) { + for( int j = 0; j < coverageRI.getHeight(); j++ ) { + double value = coverageIter.getSampleDouble(i, j, 0); + if (isNovalue(value)) { + continue; + } + if (maskIter != null) { + double maskValue = maskIter.getSampleDouble(i, j, 0); + if (isNovalue(maskValue)) { + continue; + } + } + if (value < minMaxMeanSdevCount[0]) { + minMaxMeanSdevCount[0] = value; + } + if (value > minMaxMeanSdevCount[1]) { + minMaxMeanSdevCount[1] = value; + } + cellCount++; + sum = sum + value; + sumSquare = sum + value * value; + } + } + minMaxMeanSdevCount[2] = sum / cellCount; + minMaxMeanSdevCount[3] = Math.sqrt(sumSquare / cellCount - minMaxMeanSdevCount[2] * minMaxMeanSdevCount[2]); + minMaxMeanSdevCount[4] = cellCount; + + return minMaxMeanSdevCount; + } + + /** + * Checks if the given path is a GRASS raster file. + * + *

                Note that there is no check on the existence of the file. + * + * @param path the path to check. + * @return true if the file is a grass raster. + */ + public static boolean isGrass( String path ) { + File file = new File(path); + File cellFolderFile = file.getParentFile(); + File mapsetFile = cellFolderFile.getParentFile(); + File windFile = new File(mapsetFile, "WIND"); + return cellFolderFile.getName().toLowerCase().equals("cell") && windFile.exists(); + } + + /** + * Utility method to get col and row of a coordinate from a {@link GridGeometry2D}. + * + * @param coordinate the coordinate to transform. + * @param gridGeometry the gridgeometry to use. + * @param point if not null, the row col values are put inside the supplied point's x and y. + * @return the array with [col, row] or null if something went wrong. + */ + public static int[] colRowFromCoordinate( Coordinate coordinate, GridGeometry2D gridGeometry, Point point ) { + try { + DirectPosition pos = new DirectPosition2D(coordinate.x, coordinate.y); + GridCoordinates2D worldToGrid = gridGeometry.worldToGrid(pos); + if (point != null) { + point.x = worldToGrid.x; + point.y = worldToGrid.y; + } + return new int[]{worldToGrid.x, worldToGrid.y}; + } catch (InvalidGridGeometryException e) { + e.printStackTrace(); + } catch (TransformException e) { + e.printStackTrace(); + } + + point.x = Integer.MAX_VALUE; + point.y = Integer.MAX_VALUE; + return null; + } + + /** + * Utility method to get the coordinate of a col and row from a {@link GridGeometry2D}. + * + * @param col the col to transform. + * @param row the row to transform. + * @param gridGeometry the gridgeometry to use. + * @return the coordinate or null if something went wrong. + */ + public static Coordinate coordinateFromColRow( int col, int row, GridGeometry2D gridGeometry ) { + try { + GridCoordinates2D pos = new GridCoordinates2D(col, row); + DirectPosition gridToWorld = gridGeometry.gridToWorld(pos); + double[] coord = gridToWorld.getCoordinate(); + return new Coordinate(coord[0], coord[1]); + } catch (InvalidGridGeometryException e) { + e.printStackTrace(); + } catch (TransformException e) { + e.printStackTrace(); + } + return null; + } + + /** + * Mappes the values of a map (valuesMap) into the valid pixels of the second map (maskMap). + * + * @param valuesMap the map holding the values that are needed in the resulting map. + * @param maskMap the map to use as mask for the values. + * @return the map containing the values of the valuesMap, but only in the places in which the maskMap is valid. + */ + public static GridCoverage2D coverageValuesMapper( GridCoverage2D valuesMap, GridCoverage2D maskMap ) { + RegionMap valuesRegionMap = getRegionParamsFromGridCoverage(valuesMap); + int cs = valuesRegionMap.getCols(); + int rs = valuesRegionMap.getRows(); + RegionMap maskRegionMap = getRegionParamsFromGridCoverage(maskMap); + int tmpcs = maskRegionMap.getCols(); + int tmprs = maskRegionMap.getRows(); + + if (cs != tmpcs || rs != tmprs) { + throw new IllegalArgumentException("The raster maps have to be of equal size to be mapped."); + } + + RandomIter valuesIter = RandomIterFactory.create(valuesMap.getRenderedImage(), null); + RandomIter maskIter = RandomIterFactory.create(maskMap.getRenderedImage(), null); + WritableRaster writableRaster = createDoubleWritableRaster(cs, rs, null, null, JGTConstants.doubleNovalue); + WritableRandomIter outIter = RandomIterFactory.createWritable(writableRaster, null); + + for( int c = 0; c < cs; c++ ) { + for( int r = 0; r < rs; r++ ) { + if (!isNovalue(maskIter.getSampleDouble(c, r, 0))) { + // if not nv, put the value from the valueMap in the new map + double value = valuesIter.getSampleDouble(c, r, 0); + if (!isNovalue(value)) + outIter.setSample(c, r, 0, value); + } + } + } + + GridCoverage2D outCoverage = buildCoverage( + "mapped", writableRaster, maskRegionMap, valuesMap.getCoordinateReferenceSystem()); //$NON-NLS-1$ + return outCoverage; + } + + /** + * Coverage merger. + * + *

                Values from valuesMap are placed into the onMap coverage, if they are valid.

                + * + * @param valuesMap the map from which to take teh valid values to place in the output map. + * @param onMap the base map on which to place the valuesMap values. + * @return the merged map of valuesMap over onMap. + */ + public static GridCoverage2D mergeCoverages( GridCoverage2D valuesMap, GridCoverage2D onMap ) { + RegionMap valuesRegionMap = getRegionParamsFromGridCoverage(valuesMap); + int cs = valuesRegionMap.getCols(); + int rs = valuesRegionMap.getRows(); + RegionMap onRegionMap = getRegionParamsFromGridCoverage(onMap); + int tmpcs = onRegionMap.getCols(); + int tmprs = onRegionMap.getRows(); + + if (cs != tmpcs || rs != tmprs) { + throw new IllegalArgumentException("The raster maps have to be of equal size to be mapped."); + } + + RandomIter valuesIter = RandomIterFactory.create(valuesMap.getRenderedImage(), null); + WritableRaster outWR = renderedImage2WritableRaster(onMap.getRenderedImage(), false); + WritableRandomIter outIter = RandomIterFactory.createWritable(outWR, null); + + for( int c = 0; c < cs; c++ ) { + for( int r = 0; r < rs; r++ ) { + double value = valuesIter.getSampleDouble(c, r, 0); + if (!isNovalue(value)) + outIter.setSample(c, r, 0, value); + } + } + + GridCoverage2D outCoverage = buildCoverage("merged", outWR, onRegionMap, valuesMap.getCoordinateReferenceSystem()); //$NON-NLS-1$ + return outCoverage; + } + + /** + * Calculates the hypsographic curve for the given raster, using the supplied bins. + * + * @param elevationCoverage the elevation raster. + * @param bins the bins to use. + * @param pm the monitor. + * @return the matrix containing the hypsographic curve in [elev, area] pairs per row. + */ + public static double[][] calculateHypsographic( GridCoverage2D elevationCoverage, int bins, IJGTProgressMonitor pm ) { + if (pm == null) { + pm = new DummyProgressMonitor(); + } + RegionMap regionMap = getRegionParamsFromGridCoverage(elevationCoverage); + int cols = regionMap.getCols(); + int rows = regionMap.getRows(); + double xres = regionMap.getXres(); + double yres = regionMap.getYres(); + + /* + * calculate the maximum and minimum value of the raster data + */ + RandomIter elevIter = getRandomIterator(elevationCoverage); + double maxRasterValue = Double.NEGATIVE_INFINITY; + double minRasterValue = Double.POSITIVE_INFINITY; + for( int r = 0; r < rows; r++ ) { + for( int c = 0; c < cols; c++ ) { + double value = elevIter.getSampleDouble(c, r, 0); + if (isNovalue(value)) { + continue; + } + maxRasterValue = max(maxRasterValue, value); + minRasterValue = min(minRasterValue, value); + } + } + + /* + * subdivide the whole value range in bins and count the number of pixels in each bin + */ + double binWidth = (maxRasterValue - minRasterValue) / (bins); + double[] pixelPerBinCount = new double[bins]; + double[] areaAtGreaterElevation = new double[bins]; + + pm.beginTask("Performing calculation of hypsographic curve...", rows); + for( int r = 0; r < rows; r++ ) { + for( int c = 0; c < cols; c++ ) { + double value = elevIter.getSampleDouble(c, r, 0); + if (isNovalue(value)) { + continue; + } + for( int k = 0; k < pixelPerBinCount.length; k++ ) { + double thres = minRasterValue + k * binWidth; + if (value >= thres) { + pixelPerBinCount[k] = pixelPerBinCount[k] + 1; + areaAtGreaterElevation[k] = areaAtGreaterElevation[k] + (yres * xres); + } + } + } + pm.worked(1); + } + pm.done(); + + double[][] hypso = new double[pixelPerBinCount.length][3]; + for( int j = 0; j < hypso.length; j++ ) { + hypso[j][0] = minRasterValue + (j * binWidth) + (binWidth / 2.0); + hypso[j][1] = areaAtGreaterElevation[j] / 1000000.0; + } + + return hypso; + } + + /** + * Simple method to get a value from a single band raster. + * + * @param raster the single band raster. + * @param col the column. + * @param row the row. + * @return the value in the [col, row] of the first band. + */ + public static double getValue( GridCoverage2D raster, int col, int row ) { + double[] values = raster.evaluate(new GridCoordinates2D(col, row), (double[]) null); + return values[0]; + } + + public static double getValue( GridCoverage2D raster, double easting, double northing ) { + double[] values = raster.evaluate(new Point2D.Double(easting, northing), (double[]) null); + return values[0]; + } + + public static double getValue( GridCoverage2D raster, Coordinate coordinate ) { + return getValue(raster, coordinate.x, coordinate.y); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureExtender.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureExtender.java index 78013ba84..c8fad7806 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureExtender.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureExtender.java @@ -1,96 +1,96 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.features; - -import java.util.ArrayList; -import java.util.List; - -import org.geotools.factory.FactoryRegistryException; -import org.geotools.feature.AttributeTypeBuilder; -import org.geotools.feature.SchemaException; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.feature.type.AttributeDescriptor; -import org.opengis.feature.type.FeatureType; - -/** - * Utility to add attributes to existing features. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class FeatureExtender { - private SimpleFeatureType newFeatureType; - - /** - * @param oldFeatureType the {@link FeatureType} of the existing features. - * @param fieldArray the list of the names of new fields. - * @param classesArray the list of classes of the new fields. - * @throws FactoryRegistryException - * @throws SchemaException - */ - public FeatureExtender( SimpleFeatureType oldFeatureType, String[] fieldArray, - Class[] classesArray ) throws FactoryRegistryException, SchemaException { - - List oldAttributeDescriptors = oldFeatureType - .getAttributeDescriptors(); - List addedAttributeDescriptors = new ArrayList(); - for( int i = 0; i < fieldArray.length; i++ ) { - AttributeTypeBuilder build = new AttributeTypeBuilder(); - build.setNillable(true); - build.setBinding(classesArray[i]); - AttributeDescriptor descriptor = build.buildDescriptor(fieldArray[i]); - addedAttributeDescriptors.add(descriptor); - } - - List newAttributesTypesList = new ArrayList(); - for( AttributeDescriptor attributeDescriptor : oldAttributeDescriptors ) { - newAttributesTypesList.add(attributeDescriptor); - } - newAttributesTypesList.addAll(addedAttributeDescriptors); - - // create the feature type - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName(oldFeatureType.getName()); - b.setCRS(oldFeatureType.getCoordinateReferenceSystem()); - b.addAll(newAttributesTypesList); - newFeatureType = b.buildFeatureType(); - } - - /** - * @param oldFeature the feature from which to clone the existing attributes from. - * @param additionalAttributes the array of attributes to add. - * @return the new created feature, as merged from the old feature plus the new attributes. - */ - public SimpleFeature extendFeature( SimpleFeature oldFeature, Object[] additionalAttributes ) { - Object[] attributes = oldFeature.getAttributes().toArray(); - Object[] newAttributes = new Object[attributes.length + additionalAttributes.length]; - System.arraycopy(attributes, 0, newAttributes, 0, attributes.length); - for( int i = 0; i < additionalAttributes.length; i++ ) { - newAttributes[attributes.length + i] = additionalAttributes[i]; - } - // create the feature - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(newFeatureType); - builder.addAll(newAttributes); - SimpleFeature f = builder.buildFeature(null); - return f; - } - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.features; + +import java.util.ArrayList; +import java.util.List; + +import org.geotools.factory.FactoryRegistryException; +import org.geotools.feature.AttributeTypeBuilder; +import org.geotools.feature.SchemaException; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.feature.type.AttributeDescriptor; +import org.opengis.feature.type.FeatureType; + +/** + * Utility to add attributes to existing features. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class FeatureExtender { + private SimpleFeatureType newFeatureType; + + /** + * @param oldFeatureType the {@link FeatureType} of the existing features. + * @param fieldArray the list of the names of new fields. + * @param classesArray the list of classes of the new fields. + * @throws FactoryRegistryException + * @throws SchemaException + */ + public FeatureExtender( SimpleFeatureType oldFeatureType, String[] fieldArray, + Class[] classesArray ) throws FactoryRegistryException, SchemaException { + + List oldAttributeDescriptors = oldFeatureType + .getAttributeDescriptors(); + List addedAttributeDescriptors = new ArrayList(); + for( int i = 0; i < fieldArray.length; i++ ) { + AttributeTypeBuilder build = new AttributeTypeBuilder(); + build.setNillable(true); + build.setBinding(classesArray[i]); + AttributeDescriptor descriptor = build.buildDescriptor(fieldArray[i]); + addedAttributeDescriptors.add(descriptor); + } + + List newAttributesTypesList = new ArrayList(); + for( AttributeDescriptor attributeDescriptor : oldAttributeDescriptors ) { + newAttributesTypesList.add(attributeDescriptor); + } + newAttributesTypesList.addAll(addedAttributeDescriptors); + + // create the feature type + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName(oldFeatureType.getName()); + b.setCRS(oldFeatureType.getCoordinateReferenceSystem()); + b.addAll(newAttributesTypesList); + newFeatureType = b.buildFeatureType(); + } + + /** + * @param oldFeature the feature from which to clone the existing attributes from. + * @param additionalAttributes the array of attributes to add. + * @return the new created feature, as merged from the old feature plus the new attributes. + */ + public SimpleFeature extendFeature( SimpleFeature oldFeature, Object[] additionalAttributes ) { + Object[] attributes = oldFeature.getAttributes().toArray(); + Object[] newAttributes = new Object[attributes.length + additionalAttributes.length]; + System.arraycopy(attributes, 0, newAttributes, 0, attributes.length); + for( int i = 0; i < additionalAttributes.length; i++ ) { + newAttributes[attributes.length + i] = additionalAttributes[i]; + } + // create the feature + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(newFeatureType); + builder.addAll(newAttributes); + SimpleFeature f = builder.buildFeature(null); + return f; + } + } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureMate.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureMate.java index 79c5e3c8b..008fc1b00 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureMate.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureMate.java @@ -1,311 +1,311 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.features; - -import java.util.ArrayList; -import java.util.List; - -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities.GEOMETRYTYPE; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.feature.type.AttributeDescriptor; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.prep.PreparedGeometry; -import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory; - -/** - * A wrapper for features that helps out with lots of stuff. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class FeatureMate { - - private final SimpleFeature feature; - private Geometry geometry; - private PreparedGeometry preparedGeometry; - private Envelope envelope; - - /** - * Constructor. - * - * @param feature the feature to wrap. - */ - public FeatureMate( SimpleFeature feature ) { - this.feature = feature; - } - - public SimpleFeature getFeature() { - return feature; - } - - /** - * Apply a buffer to the geometry and use that as new {@link Geometry}. - * - * @param buffer the buffer to apply. - */ - public void useBuffer( double buffer ) { - Geometry tmpGeometry = getGeometry(); - geometry = tmpGeometry.buffer(buffer); - } - - /** - * Getter for the geometry. - * - * @return the geometry of the feature. - */ - public Geometry getGeometry() { - if (geometry == null) - geometry = (Geometry) feature.getDefaultGeometry(); - return geometry; - } - - /** - * Getter for the {@link Envelope}. - * - * @return the envelope. - */ - public Envelope getEnvelope() { - if (envelope == null) - envelope = getGeometry().getEnvelopeInternal(); - return envelope; - } - - /** - * Getter for the list of attribute names. - * - * @return the list of attribute names. - */ - public List getAttributesNames() { - SimpleFeatureType featureType = feature.getFeatureType(); - List attributeDescriptors = featureType.getAttributeDescriptors(); - - List attributeNames = new ArrayList(); - for( AttributeDescriptor attributeDescriptor : attributeDescriptors ) { - String name = attributeDescriptor.getLocalName(); - attributeNames.add(name); - } - return attributeNames; - } - - /** - * Gets an attribute from the feature table, adapting to the supplied class. - * - * @param attrName the attribute name to pick. - * @param adaptee the class to adapt to. - * @return the adapted value if possible. - */ - @SuppressWarnings("unchecked") - public T getAttribute( String attrName, Class adaptee ) { - if (attrName == null) { - return null; - } - if (adaptee == null) { - adaptee = (Class) String.class; - } - - Object attribute = feature.getAttribute(attrName); - if (attribute == null) { - return null; - } - if (attribute instanceof Number) { - Number num = (Number) attribute; - if (adaptee.isAssignableFrom(Double.class)) { - return adaptee.cast(num.doubleValue()); - } else if (adaptee.isAssignableFrom(Float.class)) { - return adaptee.cast(num.floatValue()); - } else if (adaptee.isAssignableFrom(Integer.class)) { - return adaptee.cast(num.intValue()); - } else if (adaptee.isAssignableFrom(Long.class)) { - return adaptee.cast(num.longValue()); - } else if (adaptee.isAssignableFrom(String.class)) { - return adaptee.cast(num.toString()); - } else { - throw new IllegalArgumentException(); - } - } else if (attribute instanceof String) { - if (adaptee.isAssignableFrom(Double.class)) { - try { - Double parsed = Double.parseDouble((String) attribute); - return adaptee.cast(parsed); - } catch (Exception e) { - return null; - } - } else if (adaptee.isAssignableFrom(Float.class)) { - try { - Float parsed = Float.parseFloat((String) attribute); - return adaptee.cast(parsed); - } catch (Exception e) { - return null; - } - } else if (adaptee.isAssignableFrom(Integer.class)) { - try { - Integer parsed = Integer.parseInt((String) attribute); - return adaptee.cast(parsed); - } catch (Exception e) { - return null; - } - } else if (adaptee.isAssignableFrom(String.class)) { - return adaptee.cast(attribute); - } else { - throw new IllegalArgumentException(); - } - } else if (attribute instanceof Geometry) { - return null; - } else { - throw new IllegalArgumentException("Can't adapt attribute of type: " + attribute.getClass().getCanonicalName()); - } - } - - /** - * Check for intersection. - * - * @param geometry the geometry to check against. - * @param usePrepared use prepared geometry. - * @return true if the geometries intersect. - */ - public boolean intersects( Geometry geometry, boolean usePrepared ) { - if (!getEnvelope().intersects(geometry.getEnvelopeInternal())) { - return false; - } - if (usePrepared) { - if (preparedGeometry == null) { - preparedGeometry = PreparedGeometryFactory.prepare(getGeometry()); - } - return preparedGeometry.intersects(geometry); - } else { - return getGeometry().intersects(geometry); - } - } - - /** - * Check for cover. - * - * @param geometry the geometry to check against. - * @param usePrepared use prepared geometry. - * @return true if the current geometries covers the supplied one. - */ - public boolean covers( Geometry geometry, boolean usePrepared ) { - if (!getEnvelope().covers(geometry.getEnvelopeInternal())) { - return false; - } - if (usePrepared) { - if (preparedGeometry == null) { - preparedGeometry = PreparedGeometryFactory.prepare(getGeometry()); - } - return preparedGeometry.covers(geometry); - } else { - return getGeometry().covers(geometry); - } - } - - /** - * Proxy for the intersection method. - * - * @param geometry the geometry to intersect. - * @return the intersection geometry. - */ - public Geometry intersection( Geometry geometry ) { - return getGeometry().intersection(geometry); - } - - /** - * Tries to convert the internal geometry to a {@link LineString}. - * - *

                This works only for Polygon and Lines features. - *

                From this moment on the internal geometry (as got by the {@link #getGeometry()}) - * will be the line type. - *

                To get the original geometry one can simply call {@link #resetGeometry()}. - * - * @throws IllegalArgumentException in the case the geometry is a point. - */ - public void convertToLine() throws IllegalArgumentException { - GEOMETRYTYPE geometryType = GeometryUtilities.getGeometryType(getGeometry()); - switch( geometryType ) { - case MULTIPOLYGON: - case POLYGON: - // convert to line - Coordinate[] tmpCoords = geometry.getCoordinates(); - geometry = GeometryUtilities.gf().createLineString(tmpCoords); - // reset prepared geometry - preparedGeometry = null; - break; - case LINE: - case MULTILINE: - // do nothing, is already line - break; - default: - throw new IllegalArgumentException("Points not supported"); - } - } - - /** - * Tries to convert the internal geometry to a {@link Point}. - * - *

                From this moment on the internal geometry (as got by the {@link #getGeometry()}) - * will be the point type. - *

                To get the original geometry one can simply call {@link #resetGeometry()}. - */ - public void convertToPoint() { - GEOMETRYTYPE geometryType = GeometryUtilities.getGeometryType(getGeometry()); - switch( geometryType ) { - case MULTIPOLYGON: - case POLYGON: - case LINE: - case MULTILINE: - // convert to line - Coordinate[] tmpCoords = geometry.getCoordinates(); - geometry = GeometryUtilities.gf().createMultiPoint(tmpCoords); - // reset prepared geometry - preparedGeometry = null; - break; - default: - break; - } - } - - /** - * Resets the geometry, so that at the next call of {@link #getGeometry()} the original geometry is reread. - */ - public void resetGeometry() { - geometry = null; - preparedGeometry = null; - } - - public String toString() { - List attributesNames = getAttributesNames(); - StringBuilder sb = new StringBuilder(); - sb.append("FeatureMate: [\n"); - sb.append("\t").append("the_geom").append(" = ").append(getGeometry()).append("\n"); - for( String name : attributesNames ) { - if (name.equals("the_geom")) { - continue; - } - String attribute = getAttribute(name, String.class); - sb.append("\t").append(name).append(" = ").append(attribute).append("\n"); - } - sb.append("]\n"); - return sb.toString(); - } - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.features; + +import java.util.ArrayList; +import java.util.List; + +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities.GEOMETRYTYPE; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.feature.type.AttributeDescriptor; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.prep.PreparedGeometry; +import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory; + +/** + * A wrapper for features that helps out with lots of stuff. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class FeatureMate { + + private final SimpleFeature feature; + private Geometry geometry; + private PreparedGeometry preparedGeometry; + private Envelope envelope; + + /** + * Constructor. + * + * @param feature the feature to wrap. + */ + public FeatureMate( SimpleFeature feature ) { + this.feature = feature; + } + + public SimpleFeature getFeature() { + return feature; + } + + /** + * Apply a buffer to the geometry and use that as new {@link Geometry}. + * + * @param buffer the buffer to apply. + */ + public void useBuffer( double buffer ) { + Geometry tmpGeometry = getGeometry(); + geometry = tmpGeometry.buffer(buffer); + } + + /** + * Getter for the geometry. + * + * @return the geometry of the feature. + */ + public Geometry getGeometry() { + if (geometry == null) + geometry = (Geometry) feature.getDefaultGeometry(); + return geometry; + } + + /** + * Getter for the {@link Envelope}. + * + * @return the envelope. + */ + public Envelope getEnvelope() { + if (envelope == null) + envelope = getGeometry().getEnvelopeInternal(); + return envelope; + } + + /** + * Getter for the list of attribute names. + * + * @return the list of attribute names. + */ + public List getAttributesNames() { + SimpleFeatureType featureType = feature.getFeatureType(); + List attributeDescriptors = featureType.getAttributeDescriptors(); + + List attributeNames = new ArrayList(); + for( AttributeDescriptor attributeDescriptor : attributeDescriptors ) { + String name = attributeDescriptor.getLocalName(); + attributeNames.add(name); + } + return attributeNames; + } + + /** + * Gets an attribute from the feature table, adapting to the supplied class. + * + * @param attrName the attribute name to pick. + * @param adaptee the class to adapt to. + * @return the adapted value if possible. + */ + @SuppressWarnings("unchecked") + public T getAttribute( String attrName, Class adaptee ) { + if (attrName == null) { + return null; + } + if (adaptee == null) { + adaptee = (Class) String.class; + } + + Object attribute = feature.getAttribute(attrName); + if (attribute == null) { + return null; + } + if (attribute instanceof Number) { + Number num = (Number) attribute; + if (adaptee.isAssignableFrom(Double.class)) { + return adaptee.cast(num.doubleValue()); + } else if (adaptee.isAssignableFrom(Float.class)) { + return adaptee.cast(num.floatValue()); + } else if (adaptee.isAssignableFrom(Integer.class)) { + return adaptee.cast(num.intValue()); + } else if (adaptee.isAssignableFrom(Long.class)) { + return adaptee.cast(num.longValue()); + } else if (adaptee.isAssignableFrom(String.class)) { + return adaptee.cast(num.toString()); + } else { + throw new IllegalArgumentException(); + } + } else if (attribute instanceof String) { + if (adaptee.isAssignableFrom(Double.class)) { + try { + Double parsed = Double.parseDouble((String) attribute); + return adaptee.cast(parsed); + } catch (Exception e) { + return null; + } + } else if (adaptee.isAssignableFrom(Float.class)) { + try { + Float parsed = Float.parseFloat((String) attribute); + return adaptee.cast(parsed); + } catch (Exception e) { + return null; + } + } else if (adaptee.isAssignableFrom(Integer.class)) { + try { + Integer parsed = Integer.parseInt((String) attribute); + return adaptee.cast(parsed); + } catch (Exception e) { + return null; + } + } else if (adaptee.isAssignableFrom(String.class)) { + return adaptee.cast(attribute); + } else { + throw new IllegalArgumentException(); + } + } else if (attribute instanceof Geometry) { + return null; + } else { + throw new IllegalArgumentException("Can't adapt attribute of type: " + attribute.getClass().getCanonicalName()); + } + } + + /** + * Check for intersection. + * + * @param geometry the geometry to check against. + * @param usePrepared use prepared geometry. + * @return true if the geometries intersect. + */ + public boolean intersects( Geometry geometry, boolean usePrepared ) { + if (!getEnvelope().intersects(geometry.getEnvelopeInternal())) { + return false; + } + if (usePrepared) { + if (preparedGeometry == null) { + preparedGeometry = PreparedGeometryFactory.prepare(getGeometry()); + } + return preparedGeometry.intersects(geometry); + } else { + return getGeometry().intersects(geometry); + } + } + + /** + * Check for cover. + * + * @param geometry the geometry to check against. + * @param usePrepared use prepared geometry. + * @return true if the current geometries covers the supplied one. + */ + public boolean covers( Geometry geometry, boolean usePrepared ) { + if (!getEnvelope().covers(geometry.getEnvelopeInternal())) { + return false; + } + if (usePrepared) { + if (preparedGeometry == null) { + preparedGeometry = PreparedGeometryFactory.prepare(getGeometry()); + } + return preparedGeometry.covers(geometry); + } else { + return getGeometry().covers(geometry); + } + } + + /** + * Proxy for the intersection method. + * + * @param geometry the geometry to intersect. + * @return the intersection geometry. + */ + public Geometry intersection( Geometry geometry ) { + return getGeometry().intersection(geometry); + } + + /** + * Tries to convert the internal geometry to a {@link LineString}. + * + *

                This works only for Polygon and Lines features. + *

                From this moment on the internal geometry (as got by the {@link #getGeometry()}) + * will be the line type. + *

                To get the original geometry one can simply call {@link #resetGeometry()}. + * + * @throws IllegalArgumentException in the case the geometry is a point. + */ + public void convertToLine() throws IllegalArgumentException { + GEOMETRYTYPE geometryType = GeometryUtilities.getGeometryType(getGeometry()); + switch( geometryType ) { + case MULTIPOLYGON: + case POLYGON: + // convert to line + Coordinate[] tmpCoords = geometry.getCoordinates(); + geometry = GeometryUtilities.gf().createLineString(tmpCoords); + // reset prepared geometry + preparedGeometry = null; + break; + case LINE: + case MULTILINE: + // do nothing, is already line + break; + default: + throw new IllegalArgumentException("Points not supported"); + } + } + + /** + * Tries to convert the internal geometry to a {@link Point}. + * + *

                From this moment on the internal geometry (as got by the {@link #getGeometry()}) + * will be the point type. + *

                To get the original geometry one can simply call {@link #resetGeometry()}. + */ + public void convertToPoint() { + GEOMETRYTYPE geometryType = GeometryUtilities.getGeometryType(getGeometry()); + switch( geometryType ) { + case MULTIPOLYGON: + case POLYGON: + case LINE: + case MULTILINE: + // convert to line + Coordinate[] tmpCoords = geometry.getCoordinates(); + geometry = GeometryUtilities.gf().createMultiPoint(tmpCoords); + // reset prepared geometry + preparedGeometry = null; + break; + default: + break; + } + } + + /** + * Resets the geometry, so that at the next call of {@link #getGeometry()} the original geometry is reread. + */ + public void resetGeometry() { + geometry = null; + preparedGeometry = null; + } + + public String toString() { + List attributesNames = getAttributesNames(); + StringBuilder sb = new StringBuilder(); + sb.append("FeatureMate: [\n"); + sb.append("\t").append("the_geom").append(" = ").append(getGeometry()).append("\n"); + for( String name : attributesNames ) { + if (name.equals("the_geom")) { + continue; + } + String attribute = getAttribute(name, String.class); + sb.append("\t").append(name).append(" = ").append(attribute).append("\n"); + } + sb.append("]\n"); + return sb.toString(); + } + } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureUtilities.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureUtilities.java index 5038ac3e8..7b8e27339 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureUtilities.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/features/FeatureUtilities.java @@ -1,711 +1,711 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.features; - -import java.awt.geom.AffineTransform; -import java.awt.image.RenderedImage; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Map.Entry; - -import javax.media.jai.JAI; -import javax.media.jai.ParameterBlockJAI; -import javax.media.jai.RenderedOp; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.DataUtilities; -import org.geotools.data.DefaultTransaction; -import org.geotools.data.FeatureStore; -import org.geotools.data.Transaction; -import org.geotools.data.shapefile.ShapefileDataStore; -import org.geotools.data.shapefile.ShapefileDataStoreFactory; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureIterator; -import org.geotools.data.simple.SimpleFeatureSource; -import org.geotools.feature.FeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.geotools.gce.grassraster.JGrassConstants; -import org.geotools.geometry.Envelope2D; -import org.jaitools.media.jai.vectorize.VectorizeDescriptor; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities.GEOMETRYTYPE; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.feature.type.AttributeDescriptor; -import org.opengis.metadata.spatial.PixelOrientation; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateList; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.LinearRing; -import com.vividsolutions.jts.geom.MultiLineString; -import com.vividsolutions.jts.geom.MultiPoint; -import com.vividsolutions.jts.geom.MultiPolygon; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.Polygon; -import com.vividsolutions.jts.geom.util.AffineTransformation; - -public class FeatureUtilities { - - /** - * Order the geometries of a list to be all directed in the same direction - * - * @param geometryList the list of geometries to be ordered - * @param thresHold a scalar value that defines the max distance between two points to be the - * same - * @return a list of ordered coordinates - */ - @SuppressWarnings("unchecked") - public static CoordinateList orderLineGeometries( List geometryList, double thresHold ) { - /* - * first search the feature that is one of the two external points - */ - Geometry firstFeature = null; - boolean foundFirst = true; - boolean foundSecond = true; - for( Geometry feature : geometryList ) { - foundFirst = true; - foundSecond = true; - - Coordinate[] coords = feature.getCoordinates(); - - Coordinate first = coords[0]; - Coordinate last = coords[coords.length - 1]; - - for( Geometry compareFeature : geometryList ) { - if (compareFeature.equals(feature)) - continue; - Coordinate[] compareCoords = compareFeature.getCoordinates(); - - Coordinate comparefirst = compareCoords[0]; - Coordinate comparelast = compareCoords[compareCoords.length - 1]; - - /* - * check if the next point is far away - */ - if (first.distance(comparefirst) < thresHold || first.distance(comparelast) < thresHold) { - foundFirst = false; - } - if (last.distance(comparefirst) < thresHold || last.distance(comparelast) < thresHold) { - foundSecond = false; - } - - } - if (foundFirst || foundSecond) { - firstFeature = feature; - break; - } - - } - if (firstFeature == null) { - throw new RuntimeException(); - } - CoordinateList coordinateList = new CoordinateList(); - Coordinate[] coords = firstFeature.getCoordinates(); - if (foundSecond) { - for( int i = 0; i < coords.length; i++ ) { - coordinateList.add(coords[coords.length - i - 1]); - } - } else { - for( int i = 0; i < coords.length; i++ ) { - coordinateList.add(coords[i]); - } - } - - // if (foundFirst) { - // addCoordsInProperDirection(foundFirst, coordinateList, coords, true, - // 0); - // }else{ - // addCoordsInProperDirection(foundSecond, coordinateList, coords, true, - // 0); - // } - - geometryList.remove(firstFeature); - - Coordinate currentCoordinate = coordinateList.getCoordinate(coordinateList.size() - 1); - while( geometryList.size() != 0 ) { - - for( int j = 0; j < geometryList.size(); j++ ) { - System.out.println(j); - Geometry compareGeom = geometryList.get(j); - Coordinate[] compareCoords = compareGeom.getCoordinates(); - - Coordinate comparefirst = compareCoords[0]; - Coordinate comparelast = compareCoords[compareCoords.length - 1]; - - // System.out.println(j + " " - // + currentCoordinate.distance(comparefirst) + " " - // + currentCoordinate.distance(comparelast)); - - /* - * check if the next point is far away - */ - if (currentCoordinate.distance(comparefirst) < thresHold) { - for( int i = 0; i < compareCoords.length; i++ ) { - coordinateList.add(compareCoords[i]); - } - currentCoordinate = new Coordinate(comparelast); - geometryList.remove(compareGeom); - break; - } else if (currentCoordinate.distance(comparelast) < thresHold) { - for( int i = 0; i < compareCoords.length; i++ ) { - coordinateList.add(compareCoords[compareCoords.length - i - 1]); - } - currentCoordinate = new Coordinate(comparefirst); - geometryList.remove(compareGeom); - break; - } - - } - - } - - return coordinateList; - } - - /** - * Create a featurecollection from a vector of features - * - * @param features - the vectore of features - * @return the created featurecollection - */ - public static SimpleFeatureCollection createFeatureCollection( SimpleFeature... features ) { - SimpleFeatureCollection fcollection = FeatureCollections.newCollection(); - - for( SimpleFeature feature : features ) { - fcollection.add(feature); - } - return fcollection; - } - - /** - *

                - * Convert a csv file to a FeatureCollection. - * This for now supports only point geometries.
                - * For different crs it also performs coor transformation. - *

                - *

                - * NOTE: this doesn't support date attributes - *

                - * - * @param csvFile the csv file. - * @param crs the crs to use. - * @param fieldsAndTypes the {@link Map} of filed names and {@link JGrassConstants#CSVTYPESARRAY types}. - * @param pm progress monitor. - * @param separatorthe separator to use, if null, comma is used. - * @return the created {@link FeatureCollection} - * @throws Exception - */ - @SuppressWarnings("nls") - public static SimpleFeatureCollection csvFileToFeatureCollection( File csvFile, CoordinateReferenceSystem crs, - LinkedHashMap fieldsAndTypesIndex, String separator, IJGTProgressMonitor pm ) throws Exception { - GeometryFactory gf = new GeometryFactory(); - Map> typesMap = JGrassConstants.CSVTYPESCLASSESMAP; - String[] typesArray = JGrassConstants.CSVTYPESARRAY; - - if (separator == null) { - separator = ","; - } - - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("csvimport"); - b.setCRS(crs); - b.add("the_geom", Point.class); - - int xIndex = -1; - int yIndex = -1; - Set fieldNames = fieldsAndTypesIndex.keySet(); - String[] fieldNamesArray = (String[]) fieldNames.toArray(new String[fieldNames.size()]); - for( int i = 0; i < fieldNamesArray.length; i++ ) { - String fieldName = fieldNamesArray[i]; - Integer typeIndex = fieldsAndTypesIndex.get(fieldName); - - if (typeIndex == 0) { - xIndex = i; - } else if (typeIndex == 1) { - yIndex = i; - } else { - Class class1 = typesMap.get(typesArray[typeIndex]); - b.add(fieldName, class1); - } - } - SimpleFeatureType featureType = b.buildFeatureType(); - - SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); - Collection orderedTypeIndexes = fieldsAndTypesIndex.values(); - Integer[] orderedTypeIndexesArray = (Integer[]) orderedTypeIndexes.toArray(new Integer[orderedTypeIndexes.size()]); - - BufferedReader bR = new BufferedReader(new FileReader(csvFile)); - String line = null; - int featureId = 0; - pm.beginTask("Importing raw data", -1); - while( (line = bR.readLine()) != null ) { - pm.worked(1); - if (line.startsWith("#")) { - continue; - } - - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(featureType); - Object[] values = new Object[fieldNames.size() - 1]; - - String[] lineSplit = line.split(separator); - double x = Double.parseDouble(lineSplit[xIndex]); - double y = Double.parseDouble(lineSplit[yIndex]); - Point point = gf.createPoint(new Coordinate(x, y)); - values[0] = point; - - int objIndex = 1; - for( int i = 0; i < lineSplit.length; i++ ) { - if (i == xIndex || i == yIndex) { - continue; - } - - String value = lineSplit[i]; - int typeIndex = orderedTypeIndexesArray[i]; - String typeName = typesArray[typeIndex]; - if (typeName.equals(typesArray[3])) { - values[objIndex] = value; - } else if (typeName.equals(typesArray[4])) { - values[objIndex] = new Double(value); - } else if (typeName.equals(typesArray[5])) { - values[objIndex] = new Integer(value); - } else { - throw new IllegalArgumentException("An undefined value type was found"); - } - objIndex++; - } - builder.addAll(values); - - SimpleFeature feature = builder.buildFeature(featureType.getTypeName() + "." + featureId); - featureId++; - newCollection.add(feature); - } - bR.close(); - pm.done(); - - return newCollection; - } - - /** - *

                - * The easy way to create a shapefile from attributes and geometries - *

                - *

                - * NOTE: this doesn't support date attributes - *

                - * - * @param shapeFilePath the shapefile name - * @param crs the destination crs - * @param fet the featurecollection - * @throws IOException - */ - public static synchronized boolean collectionToShapeFile( String shapeFilePath, CoordinateReferenceSystem crs, - SimpleFeatureCollection fet ) throws IOException { - - // Create the file you want to write to - File file = null; - if (shapeFilePath.toLowerCase().endsWith(".shp")) { //$NON-NLS-1$ - file = new File(shapeFilePath); - } else { - file = new File(shapeFilePath + ".shp"); //$NON-NLS-1$ - } - - ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory(); - - Map create = new HashMap(); - create.put("url", file.toURI().toURL()); - ShapefileDataStore newDataStore = (ShapefileDataStore) factory.createNewDataStore(create); - - newDataStore.createSchema(fet.getSchema()); - if (crs != null) - newDataStore.forceSchemaCRS(crs); - Transaction transaction = new DefaultTransaction(); - FeatureStore featureStore = (FeatureStore) newDataStore - .getFeatureSource(); - featureStore.setTransaction(transaction); - try { - featureStore.addFeatures(fet); - transaction.commit(); - } catch (Exception problem) { - problem.printStackTrace(); - transaction.rollback(); - } finally { - transaction.close(); - } - return true; - } - /** - * @param name the shapefile name - * @param fieldsSpec to create other fields you can use a string like :
                - * "geom:MultiLineString,FieldName:java.lang.Integer"
                - * field name can not be over 10 characters use a ',' between each field
                - * field types can be : java.lang.Integer, java.lang.Long, // java.lang.Double, - * java.lang.String or java.util.Date - * @return - * @throws Exception - */ - @SuppressWarnings("nls") - public static synchronized ShapefileDataStore createShapeFileDatastore( String name, String fieldsSpec, - CoordinateReferenceSystem crs ) throws Exception { - // Create the file you want to write to - File file = null; - if (name.toLowerCase().endsWith(".shp")) { - file = new File(name); - } else { - file = new File(name + ".shp"); - } - - ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory(); - Map create = new HashMap(); - create.put("url", file.toURI().toURL()); - ShapefileDataStore myData = (ShapefileDataStore) factory.createNewDataStore(create); - - // Tell this shapefile what type of data it will store - // Shapefile handle only : Point, MultiPoint, MultiLineString, - // MultiPolygon - SimpleFeatureType featureType = DataUtilities.createType(name, fieldsSpec); - - // Create the Shapefile (empty at this point) - myData.createSchema(featureType); - - // Tell the DataStore what type of Coordinate Reference System (CRS) - // to use - myData.forceSchemaCRS(crs); - - return myData; - - } - - /** - * Writes a featurecollection to a shapefile - * - * @param data the datastore - * @param collection the featurecollection - * @throws IOException - */ - private static synchronized boolean writeToShapefile( ShapefileDataStore data, SimpleFeatureCollection collection ) - throws IOException { - String featureName = data.getTypeNames()[0]; // there is only one in - // a shapefile - FeatureStore store = null; - - Transaction transaction = null; - try { - - // Create the DefaultTransaction Object - transaction = Transaction.AUTO_COMMIT; - - // Tell it the name of the shapefile it should look for in our - // DataStore - SimpleFeatureSource source = data.getFeatureSource(featureName); - store = (FeatureStore) source; - store.addFeatures(collection); - data.getFeatureWriter(transaction); - - // TODO is this needed transaction.commit(); - return true; - } catch (Exception eek) { - eek.printStackTrace(); - transaction.rollback(); - return false; - } finally { - transaction.close(); - } - } - - /** - * Extracts features from a {@link FeatureCollection} into an {@link ArrayList}. - * - * @param collection the feature collection. - * @return the list with the features or an empty list if no features present. - */ - public static List featureCollectionToList( SimpleFeatureCollection collection ) { - List featuresList = new ArrayList(); - if (collection == null) { - return featuresList; - } - SimpleFeatureIterator featureIterator = collection.features(); - while( featureIterator.hasNext() ) { - SimpleFeature feature = featureIterator.next(); - featuresList.add(feature); - } - featureIterator.close(); - return featuresList; - } - - /** - * Extracts features from a {@link FeatureCollection} into an {@link ArrayList} of {@link FeatureMate}s. - * - * @param collection the feature collection. - * @return the list with the features or an empty list if no features present. - */ - public static List featureCollectionToMatesList( SimpleFeatureCollection collection ) { - List featuresList = new ArrayList(); - if (collection == null) { - return featuresList; - } - SimpleFeatureIterator featureIterator = collection.features(); - while( featureIterator.hasNext() ) { - SimpleFeature feature = featureIterator.next(); - featuresList.add(new FeatureMate(feature)); - } - featureIterator.close(); - return featuresList; - } - - /** - * Extracts features from a {@link FeatureCollection} into an {@link ArrayList} of its geometries. - * - * @param collection the feature collection. - * @param doSubGeoms split the geometries in single geometries (ex. MultiLines in Lines). - * @param userDataField if not null, the data in the field are put in the userData - * field of the geometry. - * @return the list with the geometries or an empty list if no features present. - */ - public static List featureCollectionToGeometriesList( SimpleFeatureCollection collection, boolean doSubGeoms, - String userDataField ) { - List geometriesList = new ArrayList(); - if (collection == null) { - return geometriesList; - } - SimpleFeatureIterator featureIterator = collection.features(); - while( featureIterator.hasNext() ) { - SimpleFeature feature = featureIterator.next(); - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - if (geometry != null) - if (doSubGeoms) { - int numGeometries = geometry.getNumGeometries(); - for( int i = 0; i < numGeometries; i++ ) { - Geometry geometryN = geometry.getGeometryN(i); - geometriesList.add(geometryN); - if (userDataField != null) { - Object attribute = feature.getAttribute(userDataField); - geometryN.setUserData(attribute); - } - } - } else { - geometriesList.add(geometry); - if (userDataField != null) { - Object attribute = feature.getAttribute(userDataField); - geometry.setUserData(attribute); - } - } - } - featureIterator.close(); - return geometriesList; - } - - /** - * Make a {@link SimpleFeatureCollection} from a set of {@link Geometry}. - * - *

                This is a fast utility and adds no attributes.

                - * - * @param crs The {@link CoordinateReferenceSystem}. - * @param geometries the set of {@link Geometry} to add. - * @return the features wrapping the geoms. - */ - public static SimpleFeatureCollection featureCollectionFromGeometry( CoordinateReferenceSystem crs, Geometry... geometries ) { - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("simplegeom"); - b.setCRS(crs); - - SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); - - GEOMETRYTYPE geometryType = GeometryUtilities.getGeometryType(geometries[0]); - switch( geometryType ) { - case LINE: - b.add("the_geom", LineString.class); - break; - case MULTILINE: - b.add("the_geom", MultiLineString.class); - break; - case POINT: - b.add("the_geom", Point.class); - break; - case MULTIPOINT: - b.add("the_geom", MultiPoint.class); - break; - case POLYGON: - b.add("the_geom", Polygon.class); - break; - case MULTIPOLYGON: - b.add("the_geom", MultiPolygon.class); - break; - default: - break; - } - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - for( Geometry g : geometries ) { - Object[] values = new Object[]{g}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(null); - newCollection.add(feature); - } - return newCollection; - } - - /** - * Getter for attributes of a feature. - * - *

                If the attribute is not found, checks are done in non - * case sensitive mode. - * - * @param feature the feature from which to get the attribute. - * @param field the name of the field. - * @return the attribute or null if none found. - */ - public static Object getAttributeCaseChecked( SimpleFeature feature, String field ) { - Object attribute = feature.getAttribute(field); - if (attribute == null) { - attribute = feature.getAttribute(field.toLowerCase()); - if (attribute != null) - return attribute; - attribute = feature.getAttribute(field.toUpperCase()); - if (attribute != null) - return attribute; - - // alright, last try, search for it - SimpleFeatureType featureType = feature.getFeatureType(); - field = findAttributeName(featureType, field); - if (field != null) { - return feature.getAttribute(field); - } - } - return attribute; - } - - /** - * Find the name of an attribute, case insensitive. - * - * @param featureType te feature type to check. - * @param field the case insensitive field name. - * @return the real name of the field, or null, if none found. - */ - public static String findAttributeName( SimpleFeatureType featureType, String field ) { - List attributeDescriptors = featureType.getAttributeDescriptors(); - for( AttributeDescriptor attributeDescriptor : attributeDescriptors ) { - String name = attributeDescriptor.getLocalName(); - if (name.toLowerCase().equals(field.toLowerCase())) { - return name; - } - } - return null; - } - - /** - * Create a {@link Polygon} from an {@link Envelope}. - * - * @param envelope the envelope to convert. - * @return the created polygon. - */ - public static Polygon envelopeToPolygon( Envelope2D envelope ) { - double w = envelope.getMinX(); - double e = envelope.getMaxX(); - double s = envelope.getMinY(); - double n = envelope.getMaxY(); - - Coordinate[] coords = new Coordinate[5]; - coords[0] = new Coordinate(w, n); - coords[1] = new Coordinate(e, n); - coords[2] = new Coordinate(e, s); - coords[3] = new Coordinate(w, s); - coords[4] = new Coordinate(w, n); - - GeometryFactory gf = GeometryUtilities.gf(); - LinearRing linearRing = gf.createLinearRing(coords); - Polygon polygon = gf.createPolygon(linearRing, null); - return polygon; - } - - /** - * Helper function to run the Vectorize operation with given parameters and - * retrieve the vectors. - * - * @param src the source {@link GridCoverage2D}. - * @param args a {@code Map} of parameter names and values or null. - * - * @return the generated vectors as JTS Polygons - */ - @SuppressWarnings("unchecked") - public static Collection doVectorize( GridCoverage2D src, Map args ) { - if (args == null) { - args = new HashMap(); - } - - ParameterBlockJAI pb = new ParameterBlockJAI("Vectorize"); - pb.setSource("source0", src.getRenderedImage()); - - // Set any parameters that were passed in - for( Entry e : args.entrySet() ) { - pb.setParameter(e.getKey(), e.getValue()); - } - - // Get the desintation image: this is the unmodified source image data - // plus a property for the generated vectors - RenderedOp dest = JAI.create("Vectorize", pb); - - // Get the vectors - Collection polygons = (Collection) dest.getProperty(VectorizeDescriptor.VECTOR_PROPERTY_NAME); - - RegionMap regionParams = CoverageUtilities.getRegionParamsFromGridCoverage(src); - double xRes = regionParams.getXres(); - double yRes = regionParams.getYres(); - final AffineTransform mt2D = (AffineTransform) src.getGridGeometry().getGridToCRS2D(PixelOrientation.CENTER); - final AffineTransformation jtsTransformation = new AffineTransformation(mt2D.getScaleX(), mt2D.getShearX(), - mt2D.getTranslateX() - xRes / 2.0, mt2D.getShearY(), mt2D.getScaleY(), mt2D.getTranslateY() + yRes / 2.0); - for( Polygon polygon : polygons ) { - polygon.apply(jtsTransformation); - } - return polygons; - } - - public static SimpleFeature toDummyFeature( Geometry geom ) { - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("dummy"); - // b.setCRS(crs); - b.add("the_geom", Geometry.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - Object[] values = new Object[]{geom}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(null); - return feature; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.features; + +import java.awt.geom.AffineTransform; +import java.awt.image.RenderedImage; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; + +import javax.media.jai.JAI; +import javax.media.jai.ParameterBlockJAI; +import javax.media.jai.RenderedOp; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.DataUtilities; +import org.geotools.data.DefaultTransaction; +import org.geotools.data.FeatureStore; +import org.geotools.data.Transaction; +import org.geotools.data.shapefile.ShapefileDataStore; +import org.geotools.data.shapefile.ShapefileDataStoreFactory; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.geotools.gce.grassraster.JGrassConstants; +import org.geotools.geometry.Envelope2D; +import org.jaitools.media.jai.vectorize.VectorizeDescriptor; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities.GEOMETRYTYPE; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.feature.type.AttributeDescriptor; +import org.opengis.metadata.spatial.PixelOrientation; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateList; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.MultiLineString; +import com.vividsolutions.jts.geom.MultiPoint; +import com.vividsolutions.jts.geom.MultiPolygon; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; +import com.vividsolutions.jts.geom.util.AffineTransformation; + +public class FeatureUtilities { + + /** + * Order the geometries of a list to be all directed in the same direction + * + * @param geometryList the list of geometries to be ordered + * @param thresHold a scalar value that defines the max distance between two points to be the + * same + * @return a list of ordered coordinates + */ + @SuppressWarnings("unchecked") + public static CoordinateList orderLineGeometries( List geometryList, double thresHold ) { + /* + * first search the feature that is one of the two external points + */ + Geometry firstFeature = null; + boolean foundFirst = true; + boolean foundSecond = true; + for( Geometry feature : geometryList ) { + foundFirst = true; + foundSecond = true; + + Coordinate[] coords = feature.getCoordinates(); + + Coordinate first = coords[0]; + Coordinate last = coords[coords.length - 1]; + + for( Geometry compareFeature : geometryList ) { + if (compareFeature.equals(feature)) + continue; + Coordinate[] compareCoords = compareFeature.getCoordinates(); + + Coordinate comparefirst = compareCoords[0]; + Coordinate comparelast = compareCoords[compareCoords.length - 1]; + + /* + * check if the next point is far away + */ + if (first.distance(comparefirst) < thresHold || first.distance(comparelast) < thresHold) { + foundFirst = false; + } + if (last.distance(comparefirst) < thresHold || last.distance(comparelast) < thresHold) { + foundSecond = false; + } + + } + if (foundFirst || foundSecond) { + firstFeature = feature; + break; + } + + } + if (firstFeature == null) { + throw new RuntimeException(); + } + CoordinateList coordinateList = new CoordinateList(); + Coordinate[] coords = firstFeature.getCoordinates(); + if (foundSecond) { + for( int i = 0; i < coords.length; i++ ) { + coordinateList.add(coords[coords.length - i - 1]); + } + } else { + for( int i = 0; i < coords.length; i++ ) { + coordinateList.add(coords[i]); + } + } + + // if (foundFirst) { + // addCoordsInProperDirection(foundFirst, coordinateList, coords, true, + // 0); + // }else{ + // addCoordsInProperDirection(foundSecond, coordinateList, coords, true, + // 0); + // } + + geometryList.remove(firstFeature); + + Coordinate currentCoordinate = coordinateList.getCoordinate(coordinateList.size() - 1); + while( geometryList.size() != 0 ) { + + for( int j = 0; j < geometryList.size(); j++ ) { + System.out.println(j); + Geometry compareGeom = geometryList.get(j); + Coordinate[] compareCoords = compareGeom.getCoordinates(); + + Coordinate comparefirst = compareCoords[0]; + Coordinate comparelast = compareCoords[compareCoords.length - 1]; + + // System.out.println(j + " " + // + currentCoordinate.distance(comparefirst) + " " + // + currentCoordinate.distance(comparelast)); + + /* + * check if the next point is far away + */ + if (currentCoordinate.distance(comparefirst) < thresHold) { + for( int i = 0; i < compareCoords.length; i++ ) { + coordinateList.add(compareCoords[i]); + } + currentCoordinate = new Coordinate(comparelast); + geometryList.remove(compareGeom); + break; + } else if (currentCoordinate.distance(comparelast) < thresHold) { + for( int i = 0; i < compareCoords.length; i++ ) { + coordinateList.add(compareCoords[compareCoords.length - i - 1]); + } + currentCoordinate = new Coordinate(comparefirst); + geometryList.remove(compareGeom); + break; + } + + } + + } + + return coordinateList; + } + + /** + * Create a featurecollection from a vector of features + * + * @param features - the vectore of features + * @return the created featurecollection + */ + public static SimpleFeatureCollection createFeatureCollection( SimpleFeature... features ) { + SimpleFeatureCollection fcollection = FeatureCollections.newCollection(); + + for( SimpleFeature feature : features ) { + fcollection.add(feature); + } + return fcollection; + } + + /** + *

                + * Convert a csv file to a FeatureCollection. + * This for now supports only point geometries.
                + * For different crs it also performs coor transformation. + *

                + *

                + * NOTE: this doesn't support date attributes + *

                + * + * @param csvFile the csv file. + * @param crs the crs to use. + * @param fieldsAndTypes the {@link Map} of filed names and {@link JGrassConstants#CSVTYPESARRAY types}. + * @param pm progress monitor. + * @param separatorthe separator to use, if null, comma is used. + * @return the created {@link FeatureCollection} + * @throws Exception + */ + @SuppressWarnings("nls") + public static SimpleFeatureCollection csvFileToFeatureCollection( File csvFile, CoordinateReferenceSystem crs, + LinkedHashMap fieldsAndTypesIndex, String separator, IJGTProgressMonitor pm ) throws Exception { + GeometryFactory gf = new GeometryFactory(); + Map> typesMap = JGrassConstants.CSVTYPESCLASSESMAP; + String[] typesArray = JGrassConstants.CSVTYPESARRAY; + + if (separator == null) { + separator = ","; + } + + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("csvimport"); + b.setCRS(crs); + b.add("the_geom", Point.class); + + int xIndex = -1; + int yIndex = -1; + Set fieldNames = fieldsAndTypesIndex.keySet(); + String[] fieldNamesArray = (String[]) fieldNames.toArray(new String[fieldNames.size()]); + for( int i = 0; i < fieldNamesArray.length; i++ ) { + String fieldName = fieldNamesArray[i]; + Integer typeIndex = fieldsAndTypesIndex.get(fieldName); + + if (typeIndex == 0) { + xIndex = i; + } else if (typeIndex == 1) { + yIndex = i; + } else { + Class class1 = typesMap.get(typesArray[typeIndex]); + b.add(fieldName, class1); + } + } + SimpleFeatureType featureType = b.buildFeatureType(); + + SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); + Collection orderedTypeIndexes = fieldsAndTypesIndex.values(); + Integer[] orderedTypeIndexesArray = (Integer[]) orderedTypeIndexes.toArray(new Integer[orderedTypeIndexes.size()]); + + BufferedReader bR = new BufferedReader(new FileReader(csvFile)); + String line = null; + int featureId = 0; + pm.beginTask("Importing raw data", -1); + while( (line = bR.readLine()) != null ) { + pm.worked(1); + if (line.startsWith("#")) { + continue; + } + + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(featureType); + Object[] values = new Object[fieldNames.size() - 1]; + + String[] lineSplit = line.split(separator); + double x = Double.parseDouble(lineSplit[xIndex]); + double y = Double.parseDouble(lineSplit[yIndex]); + Point point = gf.createPoint(new Coordinate(x, y)); + values[0] = point; + + int objIndex = 1; + for( int i = 0; i < lineSplit.length; i++ ) { + if (i == xIndex || i == yIndex) { + continue; + } + + String value = lineSplit[i]; + int typeIndex = orderedTypeIndexesArray[i]; + String typeName = typesArray[typeIndex]; + if (typeName.equals(typesArray[3])) { + values[objIndex] = value; + } else if (typeName.equals(typesArray[4])) { + values[objIndex] = new Double(value); + } else if (typeName.equals(typesArray[5])) { + values[objIndex] = new Integer(value); + } else { + throw new IllegalArgumentException("An undefined value type was found"); + } + objIndex++; + } + builder.addAll(values); + + SimpleFeature feature = builder.buildFeature(featureType.getTypeName() + "." + featureId); + featureId++; + newCollection.add(feature); + } + bR.close(); + pm.done(); + + return newCollection; + } + + /** + *

                + * The easy way to create a shapefile from attributes and geometries + *

                + *

                + * NOTE: this doesn't support date attributes + *

                + * + * @param shapeFilePath the shapefile name + * @param crs the destination crs + * @param fet the featurecollection + * @throws IOException + */ + public static synchronized boolean collectionToShapeFile( String shapeFilePath, CoordinateReferenceSystem crs, + SimpleFeatureCollection fet ) throws IOException { + + // Create the file you want to write to + File file = null; + if (shapeFilePath.toLowerCase().endsWith(".shp")) { //$NON-NLS-1$ + file = new File(shapeFilePath); + } else { + file = new File(shapeFilePath + ".shp"); //$NON-NLS-1$ + } + + ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory(); + + Map create = new HashMap(); + create.put("url", file.toURI().toURL()); + ShapefileDataStore newDataStore = (ShapefileDataStore) factory.createNewDataStore(create); + + newDataStore.createSchema(fet.getSchema()); + if (crs != null) + newDataStore.forceSchemaCRS(crs); + Transaction transaction = new DefaultTransaction(); + FeatureStore featureStore = (FeatureStore) newDataStore + .getFeatureSource(); + featureStore.setTransaction(transaction); + try { + featureStore.addFeatures(fet); + transaction.commit(); + } catch (Exception problem) { + problem.printStackTrace(); + transaction.rollback(); + } finally { + transaction.close(); + } + return true; + } + /** + * @param name the shapefile name + * @param fieldsSpec to create other fields you can use a string like :
                + * "geom:MultiLineString,FieldName:java.lang.Integer"
                + * field name can not be over 10 characters use a ',' between each field
                + * field types can be : java.lang.Integer, java.lang.Long, // java.lang.Double, + * java.lang.String or java.util.Date + * @return + * @throws Exception + */ + @SuppressWarnings("nls") + public static synchronized ShapefileDataStore createShapeFileDatastore( String name, String fieldsSpec, + CoordinateReferenceSystem crs ) throws Exception { + // Create the file you want to write to + File file = null; + if (name.toLowerCase().endsWith(".shp")) { + file = new File(name); + } else { + file = new File(name + ".shp"); + } + + ShapefileDataStoreFactory factory = new ShapefileDataStoreFactory(); + Map create = new HashMap(); + create.put("url", file.toURI().toURL()); + ShapefileDataStore myData = (ShapefileDataStore) factory.createNewDataStore(create); + + // Tell this shapefile what type of data it will store + // Shapefile handle only : Point, MultiPoint, MultiLineString, + // MultiPolygon + SimpleFeatureType featureType = DataUtilities.createType(name, fieldsSpec); + + // Create the Shapefile (empty at this point) + myData.createSchema(featureType); + + // Tell the DataStore what type of Coordinate Reference System (CRS) + // to use + myData.forceSchemaCRS(crs); + + return myData; + + } + + /** + * Writes a featurecollection to a shapefile + * + * @param data the datastore + * @param collection the featurecollection + * @throws IOException + */ + private static synchronized boolean writeToShapefile( ShapefileDataStore data, SimpleFeatureCollection collection ) + throws IOException { + String featureName = data.getTypeNames()[0]; // there is only one in + // a shapefile + FeatureStore store = null; + + Transaction transaction = null; + try { + + // Create the DefaultTransaction Object + transaction = Transaction.AUTO_COMMIT; + + // Tell it the name of the shapefile it should look for in our + // DataStore + SimpleFeatureSource source = data.getFeatureSource(featureName); + store = (FeatureStore) source; + store.addFeatures(collection); + data.getFeatureWriter(transaction); + + // TODO is this needed transaction.commit(); + return true; + } catch (Exception eek) { + eek.printStackTrace(); + transaction.rollback(); + return false; + } finally { + transaction.close(); + } + } + + /** + * Extracts features from a {@link FeatureCollection} into an {@link ArrayList}. + * + * @param collection the feature collection. + * @return the list with the features or an empty list if no features present. + */ + public static List featureCollectionToList( SimpleFeatureCollection collection ) { + List featuresList = new ArrayList(); + if (collection == null) { + return featuresList; + } + SimpleFeatureIterator featureIterator = collection.features(); + while( featureIterator.hasNext() ) { + SimpleFeature feature = featureIterator.next(); + featuresList.add(feature); + } + featureIterator.close(); + return featuresList; + } + + /** + * Extracts features from a {@link FeatureCollection} into an {@link ArrayList} of {@link FeatureMate}s. + * + * @param collection the feature collection. + * @return the list with the features or an empty list if no features present. + */ + public static List featureCollectionToMatesList( SimpleFeatureCollection collection ) { + List featuresList = new ArrayList(); + if (collection == null) { + return featuresList; + } + SimpleFeatureIterator featureIterator = collection.features(); + while( featureIterator.hasNext() ) { + SimpleFeature feature = featureIterator.next(); + featuresList.add(new FeatureMate(feature)); + } + featureIterator.close(); + return featuresList; + } + + /** + * Extracts features from a {@link FeatureCollection} into an {@link ArrayList} of its geometries. + * + * @param collection the feature collection. + * @param doSubGeoms split the geometries in single geometries (ex. MultiLines in Lines). + * @param userDataField if not null, the data in the field are put in the userData + * field of the geometry. + * @return the list with the geometries or an empty list if no features present. + */ + public static List featureCollectionToGeometriesList( SimpleFeatureCollection collection, boolean doSubGeoms, + String userDataField ) { + List geometriesList = new ArrayList(); + if (collection == null) { + return geometriesList; + } + SimpleFeatureIterator featureIterator = collection.features(); + while( featureIterator.hasNext() ) { + SimpleFeature feature = featureIterator.next(); + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + if (geometry != null) + if (doSubGeoms) { + int numGeometries = geometry.getNumGeometries(); + for( int i = 0; i < numGeometries; i++ ) { + Geometry geometryN = geometry.getGeometryN(i); + geometriesList.add(geometryN); + if (userDataField != null) { + Object attribute = feature.getAttribute(userDataField); + geometryN.setUserData(attribute); + } + } + } else { + geometriesList.add(geometry); + if (userDataField != null) { + Object attribute = feature.getAttribute(userDataField); + geometry.setUserData(attribute); + } + } + } + featureIterator.close(); + return geometriesList; + } + + /** + * Make a {@link SimpleFeatureCollection} from a set of {@link Geometry}. + * + *

                This is a fast utility and adds no attributes.

                + * + * @param crs The {@link CoordinateReferenceSystem}. + * @param geometries the set of {@link Geometry} to add. + * @return the features wrapping the geoms. + */ + public static SimpleFeatureCollection featureCollectionFromGeometry( CoordinateReferenceSystem crs, Geometry... geometries ) { + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("simplegeom"); + b.setCRS(crs); + + SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); + + GEOMETRYTYPE geometryType = GeometryUtilities.getGeometryType(geometries[0]); + switch( geometryType ) { + case LINE: + b.add("the_geom", LineString.class); + break; + case MULTILINE: + b.add("the_geom", MultiLineString.class); + break; + case POINT: + b.add("the_geom", Point.class); + break; + case MULTIPOINT: + b.add("the_geom", MultiPoint.class); + break; + case POLYGON: + b.add("the_geom", Polygon.class); + break; + case MULTIPOLYGON: + b.add("the_geom", MultiPolygon.class); + break; + default: + break; + } + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + for( Geometry g : geometries ) { + Object[] values = new Object[]{g}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(null); + newCollection.add(feature); + } + return newCollection; + } + + /** + * Getter for attributes of a feature. + * + *

                If the attribute is not found, checks are done in non + * case sensitive mode. + * + * @param feature the feature from which to get the attribute. + * @param field the name of the field. + * @return the attribute or null if none found. + */ + public static Object getAttributeCaseChecked( SimpleFeature feature, String field ) { + Object attribute = feature.getAttribute(field); + if (attribute == null) { + attribute = feature.getAttribute(field.toLowerCase()); + if (attribute != null) + return attribute; + attribute = feature.getAttribute(field.toUpperCase()); + if (attribute != null) + return attribute; + + // alright, last try, search for it + SimpleFeatureType featureType = feature.getFeatureType(); + field = findAttributeName(featureType, field); + if (field != null) { + return feature.getAttribute(field); + } + } + return attribute; + } + + /** + * Find the name of an attribute, case insensitive. + * + * @param featureType te feature type to check. + * @param field the case insensitive field name. + * @return the real name of the field, or null, if none found. + */ + public static String findAttributeName( SimpleFeatureType featureType, String field ) { + List attributeDescriptors = featureType.getAttributeDescriptors(); + for( AttributeDescriptor attributeDescriptor : attributeDescriptors ) { + String name = attributeDescriptor.getLocalName(); + if (name.toLowerCase().equals(field.toLowerCase())) { + return name; + } + } + return null; + } + + /** + * Create a {@link Polygon} from an {@link Envelope}. + * + * @param envelope the envelope to convert. + * @return the created polygon. + */ + public static Polygon envelopeToPolygon( Envelope2D envelope ) { + double w = envelope.getMinX(); + double e = envelope.getMaxX(); + double s = envelope.getMinY(); + double n = envelope.getMaxY(); + + Coordinate[] coords = new Coordinate[5]; + coords[0] = new Coordinate(w, n); + coords[1] = new Coordinate(e, n); + coords[2] = new Coordinate(e, s); + coords[3] = new Coordinate(w, s); + coords[4] = new Coordinate(w, n); + + GeometryFactory gf = GeometryUtilities.gf(); + LinearRing linearRing = gf.createLinearRing(coords); + Polygon polygon = gf.createPolygon(linearRing, null); + return polygon; + } + + /** + * Helper function to run the Vectorize operation with given parameters and + * retrieve the vectors. + * + * @param src the source {@link GridCoverage2D}. + * @param args a {@code Map} of parameter names and values or null. + * + * @return the generated vectors as JTS Polygons + */ + @SuppressWarnings("unchecked") + public static Collection doVectorize( GridCoverage2D src, Map args ) { + if (args == null) { + args = new HashMap(); + } + + ParameterBlockJAI pb = new ParameterBlockJAI("Vectorize"); + pb.setSource("source0", src.getRenderedImage()); + + // Set any parameters that were passed in + for( Entry e : args.entrySet() ) { + pb.setParameter(e.getKey(), e.getValue()); + } + + // Get the desintation image: this is the unmodified source image data + // plus a property for the generated vectors + RenderedOp dest = JAI.create("Vectorize", pb); + + // Get the vectors + Collection polygons = (Collection) dest.getProperty(VectorizeDescriptor.VECTOR_PROPERTY_NAME); + + RegionMap regionParams = CoverageUtilities.getRegionParamsFromGridCoverage(src); + double xRes = regionParams.getXres(); + double yRes = regionParams.getYres(); + final AffineTransform mt2D = (AffineTransform) src.getGridGeometry().getGridToCRS2D(PixelOrientation.CENTER); + final AffineTransformation jtsTransformation = new AffineTransformation(mt2D.getScaleX(), mt2D.getShearX(), + mt2D.getTranslateX() - xRes / 2.0, mt2D.getShearY(), mt2D.getScaleY(), mt2D.getTranslateY() + yRes / 2.0); + for( Polygon polygon : polygons ) { + polygon.apply(jtsTransformation); + } + return polygons; + } + + public static SimpleFeature toDummyFeature( Geometry geom ) { + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("dummy"); + // b.setCRS(crs); + b.add("the_geom", Geometry.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + Object[] values = new Object[]{geom}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(null); + return feature; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/files/FileUtilities.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/files/FileUtilities.java index 551729140..8c7380ba3 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/files/FileUtilities.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/files/FileUtilities.java @@ -1,399 +1,399 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.files; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - *

                - * Various file utilities useful when dealing with bytes, bits and numbers - *

                - * - * @author Andrea Antonello - www.hydrologis.com - * @since 1.1.0 - */ -public class FileUtilities { - - public static void copyFile( String fromFile, String toFile ) throws IOException { - File in = new File(fromFile); - File out = new File(toFile); - copyFile(in, out); - } - - public static void copyFile( File in, File out ) throws IOException { - FileInputStream fis = new FileInputStream(in); - FileOutputStream fos = new FileOutputStream(out); - byte[] buf = new byte[1024]; - int i = 0; - while( (i = fis.read(buf)) != -1 ) { - fos.write(buf, 0, i); - } - fis.close(); - fos.close(); - } - - /** - * Returns true if all deletions were successful. If a deletion fails, the method stops - * attempting to delete and returns false. - * - * @param filehandle - * @return true if all deletions were successful - */ - public static boolean deleteFileOrDir( File filehandle ) { - - if (filehandle.isDirectory()) { - String[] children = filehandle.list(); - for( int i = 0; i < children.length; i++ ) { - boolean success = deleteFileOrDir(new File(filehandle, children[i])); - if (!success) { - return false; - } - } - } - - // The directory is now empty so delete it - boolean isdel = filehandle.delete(); - if (!isdel) { - // if it didn't work, which often happens on windows systems, - // remove on exit - filehandle.deleteOnExit(); - } - - return isdel; - } - - /** - * Delete file or folder recursively on exit of the program - * - * @param filehandle - * @return true if all went well - */ - public static boolean deleteFileOrDirOnExit( File filehandle ) { - if (filehandle.isDirectory()) { - String[] children = filehandle.list(); - for( int i = 0; i < children.length; i++ ) { - boolean success = deleteFileOrDir(new File(filehandle, children[i])); - if (!success) { - return false; - } - } - } - filehandle.deleteOnExit(); - return true; - } - - /** - * Read from an inoutstream and convert the readed stuff to a String. Usefull for text files - * that are available as streams. - * - * @param inputStream - * @return the read string - * @throws IOException - */ - public static String readInputStreamToString( InputStream inputStream ) throws IOException { - // Create the byte list to hold the data - List bytesList = new ArrayList(); - - byte b = 0; - while( (b = (byte) inputStream.read()) != -1 ) { - bytesList.add(b); - } - // Close the input stream and return bytes - inputStream.close(); - - byte[] bArray = new byte[bytesList.size()]; - for( int i = 0; i < bArray.length; i++ ) { - bArray[i] = bytesList.get(i); - } - - String file = new String(bArray); - return file; - } - - /** - * Read text from a file in one line. - * - * @param filePath the path to the file to read. - * @return the read string. - * @throws IOException - */ - public static String readFile( String filePath ) throws IOException { - return readFile(new File(filePath)); - } - - /** - * Read text from a file in one line. - * - * @param file the file to read. - * @return the read string. - * @throws IOException - */ - public static String readFile( File file ) throws IOException { - BufferedReader br = null; - try { - br = new BufferedReader(new FileReader(file)); - StringBuilder sb = new StringBuilder(200); - String line = null; - while( (line = br.readLine()) != null ) { - sb.append(line); - sb.append("\n"); //$NON-NLS-1$ - } - return sb.toString(); - } finally { - if (br != null) - br.close(); - } - } - - /** - * Read text from a file to a list of lines. - * - * @param outFile the path to the file to read. - * @return the list of lines. - * @throws IOException - */ - public static List readFileToLinesList( String filePath ) throws IOException { - return readFileToLinesList(new File(filePath)); - } - - /** - * Read text from a file to a list of lines. - * - * @param file the file to read. - * @return the list of lines. - * @throws IOException - */ - public static List readFileToLinesList( File file ) throws IOException { - BufferedReader br = null; - List lines = new ArrayList(); - try { - br = new BufferedReader(new FileReader(file)); - String line = null; - while( (line = br.readLine()) != null ) { - lines.add(line); - } - return lines; - } finally { - if (br != null) - br.close(); - } - } - - /** - * Write text to a file in one line. - * - * @param text the text to write. - * @param file the file to write to. - * @throws IOException - */ - public static void writeFile( String text, File file ) throws IOException { - BufferedWriter bw = null; - try { - bw = new BufferedWriter(new FileWriter(file)); - bw.write(text); - } finally { - if (bw != null) - bw.close(); - } - } - - /** - * Write a list of lines to a file. - * - * @param lines the list of lines to write. - * @param outFile the path to the file to write to. - * @throws IOException - */ - public static void writeFile( List lines, String filePath ) throws IOException { - writeFile(lines, new File(filePath)); - } - - /** - * Write a list of lines to a file. - * - * @param lines the list of lines to write. - * @param file the file to write to. - * @throws IOException - */ - public static void writeFile( List lines, File file ) throws IOException { - BufferedWriter bw = null; - try { - bw = new BufferedWriter(new FileWriter(file)); - for( String line : lines ) { - bw.write(line); - bw.write("\n"); //$NON-NLS-1$ - } - } finally { - if (bw != null) - bw.close(); - } - } - - public static String replaceBackSlashes( String path ) { - return path.replaceAll("\\\\", "\\\\\\\\"); //$NON-NLS-1$ //$NON-NLS-2$ - } - - /** - * Returns the name of the file without the extention. - * - * @param file the file to trim. - * @return the name without extention. - */ - public static String getNameWithoutExtention( File file ) { - String name = file.getName(); - int lastDot = name.lastIndexOf("."); //$NON-NLS-1$ - name = name.substring(0, lastDot); - return name; - } - - /** - * Substitute the extention of a file. - * - * @param file the file. - * @param newExtention the new extention (without the dot). - * @return the file with the new extention. - */ - public static File substituteExtention( File file, String newExtention ) { - String path = file.getAbsolutePath(); - int lastDot = path.lastIndexOf("."); //$NON-NLS-1$ - if (lastDot == -1) { - path = path + "." + newExtention; //$NON-NLS-1$ - } else { - path = path.substring(0, lastDot) + "." + newExtention; //$NON-NLS-1$ - } - return new File(path); - } - - /** - * Makes a file name safe to be used. - * - *

                Taken from http://stackoverflow.com/questions/1184176/how-can-i-safely-encode-a-string-in-java-to-use-as-a-filename - * - * @param fileName the file name to "encode". - * @return the safe filename. - */ - public static String getSafeFileName( String fileName ) { - char fileSep = '/'; // ... or do this portably. - char escape = '%'; // ... or some other legal char. - int len = fileName.length(); - StringBuilder sb = new StringBuilder(len); - for( int i = 0; i < len; i++ ) { - char ch = fileName.charAt(i); - if (ch < ' ' || ch >= 0x7F || ch == fileSep // add other illegal chars - || (ch == '.' && i == 0) // we don't want to collide with "." or ".."! - || ch == escape) { - sb.append(escape); - if (ch < 0x10) { - sb.append('0'); - } - sb.append(Integer.toHexString(ch)); - } else { - sb.append(ch); - } - } - return sb.toString(); - } - - /** - * Method to read a properties file into a {@link HashMap}. - * - *

                Empty lines are ignored, as well as lines that do not contain the - * separator.

                - * - * @param filePath the path to the file to read. - * @param separator the separator or null. Defaults to '='. - * @param valueFirst if true, the second part of the string is used as key. - * @return the read map. - * @throws IOException - */ - public static HashMap readFileToHasMap( String filePath, String separator, boolean valueFirst ) - throws IOException { - if (separator == null) { - separator = "="; - } - List lines = readFileToLinesList(filePath); - HashMap propertiesMap = new HashMap(); - for( String line : lines ) { - line = line.trim(); - if (line.length() == 0) { - continue; - } - if (!line.contains(separator)) { - continue; - } - String[] lineSplit = line.split(separator); - if (!valueFirst) { - String key = lineSplit[0].trim(); - String value = ""; - if (lineSplit.length > 1) { - value = lineSplit[1].trim(); - } - propertiesMap.put(key, value); - } else { - if (lineSplit.length > 1) { - String key = lineSplit[0].trim(); - String value = lineSplit[1].trim(); - propertiesMap.put(value, key); - } - } - } - return propertiesMap; - } - - /** - * "Converts" a string to a temporary file. - * - *

                Useful for those modules that want a file in input and one wants to use the parameters.

                - * - * @param string the string to write to the file. - * @return the created file. - * @throws Exception - */ - public static File stringAsTmpFile( String string ) throws Exception { - File tempFile = File.createTempFile("jgt-", "txt"); - writeFile(string, tempFile); - return tempFile; - } - - /** - * "Converts" a List of strings to a temporary file. - * - *

                Useful for those modules that want a file in input and one wants to use the parameters.

                - * - * @param list the list of strings to write to the file (one per row). - * @return the created file. - * @throws Exception - */ - public static File stringListAsTmpFile( List list ) throws Exception { - File tempFile = File.createTempFile("jgt-", "txt"); - writeFile(list, tempFile); - return tempFile; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.files; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + *

                + * Various file utilities useful when dealing with bytes, bits and numbers + *

                + * + * @author Andrea Antonello - www.hydrologis.com + * @since 1.1.0 + */ +public class FileUtilities { + + public static void copyFile( String fromFile, String toFile ) throws IOException { + File in = new File(fromFile); + File out = new File(toFile); + copyFile(in, out); + } + + public static void copyFile( File in, File out ) throws IOException { + FileInputStream fis = new FileInputStream(in); + FileOutputStream fos = new FileOutputStream(out); + byte[] buf = new byte[1024]; + int i = 0; + while( (i = fis.read(buf)) != -1 ) { + fos.write(buf, 0, i); + } + fis.close(); + fos.close(); + } + + /** + * Returns true if all deletions were successful. If a deletion fails, the method stops + * attempting to delete and returns false. + * + * @param filehandle + * @return true if all deletions were successful + */ + public static boolean deleteFileOrDir( File filehandle ) { + + if (filehandle.isDirectory()) { + String[] children = filehandle.list(); + for( int i = 0; i < children.length; i++ ) { + boolean success = deleteFileOrDir(new File(filehandle, children[i])); + if (!success) { + return false; + } + } + } + + // The directory is now empty so delete it + boolean isdel = filehandle.delete(); + if (!isdel) { + // if it didn't work, which often happens on windows systems, + // remove on exit + filehandle.deleteOnExit(); + } + + return isdel; + } + + /** + * Delete file or folder recursively on exit of the program + * + * @param filehandle + * @return true if all went well + */ + public static boolean deleteFileOrDirOnExit( File filehandle ) { + if (filehandle.isDirectory()) { + String[] children = filehandle.list(); + for( int i = 0; i < children.length; i++ ) { + boolean success = deleteFileOrDir(new File(filehandle, children[i])); + if (!success) { + return false; + } + } + } + filehandle.deleteOnExit(); + return true; + } + + /** + * Read from an inoutstream and convert the readed stuff to a String. Usefull for text files + * that are available as streams. + * + * @param inputStream + * @return the read string + * @throws IOException + */ + public static String readInputStreamToString( InputStream inputStream ) throws IOException { + // Create the byte list to hold the data + List bytesList = new ArrayList(); + + byte b = 0; + while( (b = (byte) inputStream.read()) != -1 ) { + bytesList.add(b); + } + // Close the input stream and return bytes + inputStream.close(); + + byte[] bArray = new byte[bytesList.size()]; + for( int i = 0; i < bArray.length; i++ ) { + bArray[i] = bytesList.get(i); + } + + String file = new String(bArray); + return file; + } + + /** + * Read text from a file in one line. + * + * @param filePath the path to the file to read. + * @return the read string. + * @throws IOException + */ + public static String readFile( String filePath ) throws IOException { + return readFile(new File(filePath)); + } + + /** + * Read text from a file in one line. + * + * @param file the file to read. + * @return the read string. + * @throws IOException + */ + public static String readFile( File file ) throws IOException { + BufferedReader br = null; + try { + br = new BufferedReader(new FileReader(file)); + StringBuilder sb = new StringBuilder(200); + String line = null; + while( (line = br.readLine()) != null ) { + sb.append(line); + sb.append("\n"); //$NON-NLS-1$ + } + return sb.toString(); + } finally { + if (br != null) + br.close(); + } + } + + /** + * Read text from a file to a list of lines. + * + * @param outFile the path to the file to read. + * @return the list of lines. + * @throws IOException + */ + public static List readFileToLinesList( String filePath ) throws IOException { + return readFileToLinesList(new File(filePath)); + } + + /** + * Read text from a file to a list of lines. + * + * @param file the file to read. + * @return the list of lines. + * @throws IOException + */ + public static List readFileToLinesList( File file ) throws IOException { + BufferedReader br = null; + List lines = new ArrayList(); + try { + br = new BufferedReader(new FileReader(file)); + String line = null; + while( (line = br.readLine()) != null ) { + lines.add(line); + } + return lines; + } finally { + if (br != null) + br.close(); + } + } + + /** + * Write text to a file in one line. + * + * @param text the text to write. + * @param file the file to write to. + * @throws IOException + */ + public static void writeFile( String text, File file ) throws IOException { + BufferedWriter bw = null; + try { + bw = new BufferedWriter(new FileWriter(file)); + bw.write(text); + } finally { + if (bw != null) + bw.close(); + } + } + + /** + * Write a list of lines to a file. + * + * @param lines the list of lines to write. + * @param outFile the path to the file to write to. + * @throws IOException + */ + public static void writeFile( List lines, String filePath ) throws IOException { + writeFile(lines, new File(filePath)); + } + + /** + * Write a list of lines to a file. + * + * @param lines the list of lines to write. + * @param file the file to write to. + * @throws IOException + */ + public static void writeFile( List lines, File file ) throws IOException { + BufferedWriter bw = null; + try { + bw = new BufferedWriter(new FileWriter(file)); + for( String line : lines ) { + bw.write(line); + bw.write("\n"); //$NON-NLS-1$ + } + } finally { + if (bw != null) + bw.close(); + } + } + + public static String replaceBackSlashes( String path ) { + return path.replaceAll("\\\\", "\\\\\\\\"); //$NON-NLS-1$ //$NON-NLS-2$ + } + + /** + * Returns the name of the file without the extention. + * + * @param file the file to trim. + * @return the name without extention. + */ + public static String getNameWithoutExtention( File file ) { + String name = file.getName(); + int lastDot = name.lastIndexOf("."); //$NON-NLS-1$ + name = name.substring(0, lastDot); + return name; + } + + /** + * Substitute the extention of a file. + * + * @param file the file. + * @param newExtention the new extention (without the dot). + * @return the file with the new extention. + */ + public static File substituteExtention( File file, String newExtention ) { + String path = file.getAbsolutePath(); + int lastDot = path.lastIndexOf("."); //$NON-NLS-1$ + if (lastDot == -1) { + path = path + "." + newExtention; //$NON-NLS-1$ + } else { + path = path.substring(0, lastDot) + "." + newExtention; //$NON-NLS-1$ + } + return new File(path); + } + + /** + * Makes a file name safe to be used. + * + *

                Taken from http://stackoverflow.com/questions/1184176/how-can-i-safely-encode-a-string-in-java-to-use-as-a-filename + * + * @param fileName the file name to "encode". + * @return the safe filename. + */ + public static String getSafeFileName( String fileName ) { + char fileSep = '/'; // ... or do this portably. + char escape = '%'; // ... or some other legal char. + int len = fileName.length(); + StringBuilder sb = new StringBuilder(len); + for( int i = 0; i < len; i++ ) { + char ch = fileName.charAt(i); + if (ch < ' ' || ch >= 0x7F || ch == fileSep // add other illegal chars + || (ch == '.' && i == 0) // we don't want to collide with "." or ".."! + || ch == escape) { + sb.append(escape); + if (ch < 0x10) { + sb.append('0'); + } + sb.append(Integer.toHexString(ch)); + } else { + sb.append(ch); + } + } + return sb.toString(); + } + + /** + * Method to read a properties file into a {@link HashMap}. + * + *

                Empty lines are ignored, as well as lines that do not contain the + * separator.

                + * + * @param filePath the path to the file to read. + * @param separator the separator or null. Defaults to '='. + * @param valueFirst if true, the second part of the string is used as key. + * @return the read map. + * @throws IOException + */ + public static HashMap readFileToHasMap( String filePath, String separator, boolean valueFirst ) + throws IOException { + if (separator == null) { + separator = "="; + } + List lines = readFileToLinesList(filePath); + HashMap propertiesMap = new HashMap(); + for( String line : lines ) { + line = line.trim(); + if (line.length() == 0) { + continue; + } + if (!line.contains(separator)) { + continue; + } + String[] lineSplit = line.split(separator); + if (!valueFirst) { + String key = lineSplit[0].trim(); + String value = ""; + if (lineSplit.length > 1) { + value = lineSplit[1].trim(); + } + propertiesMap.put(key, value); + } else { + if (lineSplit.length > 1) { + String key = lineSplit[0].trim(); + String value = lineSplit[1].trim(); + propertiesMap.put(value, key); + } + } + } + return propertiesMap; + } + + /** + * "Converts" a string to a temporary file. + * + *

                Useful for those modules that want a file in input and one wants to use the parameters.

                + * + * @param string the string to write to the file. + * @return the created file. + * @throws Exception + */ + public static File stringAsTmpFile( String string ) throws Exception { + File tempFile = File.createTempFile("jgt-", "txt"); + writeFile(string, tempFile); + return tempFile; + } + + /** + * "Converts" a List of strings to a temporary file. + * + *

                Useful for those modules that want a file in input and one wants to use the parameters.

                + * + * @param list the list of strings to write to the file (one per row). + * @return the created file. + * @throws Exception + */ + public static File stringListAsTmpFile( List list ) throws Exception { + File tempFile = File.createTempFile("jgt-", "txt"); + writeFile(list, tempFile); + return tempFile; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/geometry/FeatureSlidingAverage.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/geometry/FeatureSlidingAverage.java index 317b62b81..0f2b55edf 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/geometry/FeatureSlidingAverage.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/geometry/FeatureSlidingAverage.java @@ -1,144 +1,144 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.geometry; - -import java.util.ArrayList; -import java.util.List; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; - -/** - * Applies a sliding average on linear geometries for smoothing. - * - * @author Andrea Antonello (www.hydrologis.com) - * - */ -public class FeatureSlidingAverage { - - private final Geometry geometry; - - public FeatureSlidingAverage( Geometry geometry ) { - this.geometry = geometry; - } - - public List smooth( int lookAhead, boolean considerZ, double slide ) { - - double sc; - List res = new ArrayList(); - - Coordinate[] coordinates = geometry.getCoordinates(); - int n = coordinates.length; // Points->n_points; - int half = lookAhead / 2; - - for( int j = 0; j < n; j++ ) { - Coordinate tmp = new Coordinate(); - res.add(tmp); - } - - if (lookAhead % 2 == 0) { - throw new IllegalArgumentException("Look ahead parameter must be odd, but you supplied: " + lookAhead); - } - - if (lookAhead >= n || lookAhead == 1) - return null; - - sc = (double) 1.0 / (double) lookAhead; - - Coordinate pCoord = new Coordinate(); - Coordinate sCoord = new Coordinate(); - pointAssign(coordinates, 0, considerZ, pCoord); - for(int i = 1; i < lookAhead; i++ ) { - Coordinate tmpCoord = new Coordinate(); - pointAssign(coordinates, i, considerZ, tmpCoord); - pointAdd(pCoord, tmpCoord, pCoord); - } - - /* and calculate the average of remaining points */ - for(int i = half; i + half < n; i++ ) { - Coordinate tmpCoord = new Coordinate(); - pointAssign(coordinates, i, considerZ, sCoord); - pointScalar(sCoord, 1.0 - slide, sCoord); - pointScalar(pCoord, sc * slide, tmpCoord); - pointAdd(tmpCoord, sCoord, res.get(i)); - if (i + half + 1 < n) { - pointAssign(coordinates, i - half, considerZ, tmpCoord); - pointSubtract(pCoord, tmpCoord, pCoord); - pointAssign(coordinates, i + half + 1, considerZ, tmpCoord); - pointAdd(pCoord, tmpCoord, pCoord); - } - } - - for(int i = 0; i < half; i++ ) { - res.get(i).x = coordinates[i].x; - res.get(i).y = coordinates[i].y; - res.get(i).z = coordinates[i].z; - } - for(int i = n - half - 1; i < n; i++ ) { - res.get(i).x = coordinates[i].x; - res.get(i).y = coordinates[i].y; - res.get(i).z = coordinates[i].z; - } - for( Coordinate coordinate : res ) { - if (coordinate.x == 0) { - System.out.println(); - } - } - // for( i = half; i + half < n; i++ ) { - // coordinates[i].x = res.get(i).x; - // coordinates[i].y = res.get(i).y; - // coordinates[i].z = res.get(i).z; - // } - - // return Points->n_points; - - return res; - } - - private void pointAssign( Coordinate[] coordinates, int index, boolean considerZ, Coordinate newAssignedCoordinate ) { - Coordinate coordinate = coordinates[index]; - newAssignedCoordinate.x = coordinate.x; - newAssignedCoordinate.y = coordinate.y; - if (considerZ) { - newAssignedCoordinate.z = coordinate.z; - } else { - newAssignedCoordinate.z = 0; - } - return; - } - - private void pointAdd( Coordinate a, Coordinate b, Coordinate res ) { - res.x = a.x + b.x; - res.y = a.y + b.y; - res.z = a.z + b.z; - } - - private void pointSubtract( Coordinate a, Coordinate b, Coordinate res ) { - res.x = a.x - b.x; - res.y = a.y - b.y; - res.z = a.z - b.z; - } - - private void pointScalar( Coordinate a, double k, Coordinate res ) { - res.x = a.x * k; - res.y = a.y * k; - res.z = a.z * k; - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.geometry; + +import java.util.ArrayList; +import java.util.List; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Applies a sliding average on linear geometries for smoothing. + * + * @author Andrea Antonello (www.hydrologis.com) + * + */ +public class FeatureSlidingAverage { + + private final Geometry geometry; + + public FeatureSlidingAverage( Geometry geometry ) { + this.geometry = geometry; + } + + public List smooth( int lookAhead, boolean considerZ, double slide ) { + + double sc; + List res = new ArrayList(); + + Coordinate[] coordinates = geometry.getCoordinates(); + int n = coordinates.length; // Points->n_points; + int half = lookAhead / 2; + + for( int j = 0; j < n; j++ ) { + Coordinate tmp = new Coordinate(); + res.add(tmp); + } + + if (lookAhead % 2 == 0) { + throw new IllegalArgumentException("Look ahead parameter must be odd, but you supplied: " + lookAhead); + } + + if (lookAhead >= n || lookAhead == 1) + return null; + + sc = (double) 1.0 / (double) lookAhead; + + Coordinate pCoord = new Coordinate(); + Coordinate sCoord = new Coordinate(); + pointAssign(coordinates, 0, considerZ, pCoord); + for(int i = 1; i < lookAhead; i++ ) { + Coordinate tmpCoord = new Coordinate(); + pointAssign(coordinates, i, considerZ, tmpCoord); + pointAdd(pCoord, tmpCoord, pCoord); + } + + /* and calculate the average of remaining points */ + for(int i = half; i + half < n; i++ ) { + Coordinate tmpCoord = new Coordinate(); + pointAssign(coordinates, i, considerZ, sCoord); + pointScalar(sCoord, 1.0 - slide, sCoord); + pointScalar(pCoord, sc * slide, tmpCoord); + pointAdd(tmpCoord, sCoord, res.get(i)); + if (i + half + 1 < n) { + pointAssign(coordinates, i - half, considerZ, tmpCoord); + pointSubtract(pCoord, tmpCoord, pCoord); + pointAssign(coordinates, i + half + 1, considerZ, tmpCoord); + pointAdd(pCoord, tmpCoord, pCoord); + } + } + + for(int i = 0; i < half; i++ ) { + res.get(i).x = coordinates[i].x; + res.get(i).y = coordinates[i].y; + res.get(i).z = coordinates[i].z; + } + for(int i = n - half - 1; i < n; i++ ) { + res.get(i).x = coordinates[i].x; + res.get(i).y = coordinates[i].y; + res.get(i).z = coordinates[i].z; + } + for( Coordinate coordinate : res ) { + if (coordinate.x == 0) { + System.out.println(); + } + } + // for( i = half; i + half < n; i++ ) { + // coordinates[i].x = res.get(i).x; + // coordinates[i].y = res.get(i).y; + // coordinates[i].z = res.get(i).z; + // } + + // return Points->n_points; + + return res; + } + + private void pointAssign( Coordinate[] coordinates, int index, boolean considerZ, Coordinate newAssignedCoordinate ) { + Coordinate coordinate = coordinates[index]; + newAssignedCoordinate.x = coordinate.x; + newAssignedCoordinate.y = coordinate.y; + if (considerZ) { + newAssignedCoordinate.z = coordinate.z; + } else { + newAssignedCoordinate.z = 0; + } + return; + } + + private void pointAdd( Coordinate a, Coordinate b, Coordinate res ) { + res.x = a.x + b.x; + res.y = a.y + b.y; + res.z = a.z + b.z; + } + + private void pointSubtract( Coordinate a, Coordinate b, Coordinate res ) { + res.x = a.x - b.x; + res.y = a.y - b.y; + res.z = a.z - b.z; + } + + private void pointScalar( Coordinate a, double k, Coordinate res ) { + res.x = a.x * k; + res.y = a.y * k; + res.z = a.z * k; + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/geometry/GeometryUtilities.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/geometry/GeometryUtilities.java index 8d3819027..82499225a 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/geometry/GeometryUtilities.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/geometry/GeometryUtilities.java @@ -1,763 +1,763 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.geometry; - -import static java.lang.Math.atan; -import static java.lang.Math.max; -import static java.lang.Math.min; -import static java.lang.Math.toDegrees; -import static java.lang.Math.toRadians; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import org.geotools.referencing.GeodeticCalculator; -import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; -import org.jgrasstools.gears.utils.math.NumericsUtilities; -import org.jgrasstools.gears.utils.sorting.QuickSortAlgorithm; -import org.opengis.feature.type.GeometryDescriptor; -import org.opengis.feature.type.GeometryType; - -import com.vividsolutions.jts.algorithm.PointLocator; -import com.vividsolutions.jts.algorithm.RobustLineIntersector; -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.LineSegment; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.LinearRing; -import com.vividsolutions.jts.geom.Location; -import com.vividsolutions.jts.geom.MultiLineString; -import com.vividsolutions.jts.geom.MultiPoint; -import com.vividsolutions.jts.geom.MultiPolygon; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.Polygon; -import com.vividsolutions.jts.geom.PrecisionModel; -import com.vividsolutions.jts.geom.util.AffineTransformation; -import com.vividsolutions.jts.index.chain.MonotoneChain; -import com.vividsolutions.jts.index.strtree.STRtree; -import com.vividsolutions.jts.linearref.LengthIndexedLine; -import com.vividsolutions.jts.noding.IntersectionAdder; -import com.vividsolutions.jts.noding.MCIndexNoder; -import com.vividsolutions.jts.noding.NodedSegmentString; -import com.vividsolutions.jts.operation.polygonize.Polygonizer; - -/** - * Utilities related to {@link Geometry}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class GeometryUtilities { - - public static Geometry[] TYPE_GEOMETRY = new Geometry[0]; - public static Polygon[] TYPE_POLYGON = new Polygon[0]; - public static MultiPolygon[] TYPE_MULTIPOLYGON = new MultiPolygon[0]; - public static LineString[] TYPE_LINESTRING = new LineString[0]; - public static MultiLineString[] TYPE_MULTILINESTRING = new MultiLineString[0]; - public static Point[] TYPE_POINT = new Point[0]; - public static MultiPoint[] TYPE_MULTIPOINT = new MultiPoint[0]; - - /** - * Geometry types used by the utility. - */ - public static enum GEOMETRYTYPE { - POINT, MULTIPOINT, LINE, MULTILINE, POLYGON, MULTIPOLYGON, UNKNOWN - } - - private static GeometryFactory geomFactory; - private static PrecisionModel precModel; - - public static PrecisionModel basicPrecisionModel() { - return (pm()); - } - - public static GeometryFactory gf() { - if (geomFactory == null) { - geomFactory = new GeometryFactory(pm()); - } - return (geomFactory); - } - - public static PrecisionModel pm() { - if (precModel == null) { - precModel = new PrecisionModel(PrecisionModel.FLOATING); - } - return (precModel); - } - - /** - * Create a simple polygon (no holes). - * - * @param coords the coords of the polygon. - * @return the {@link Polygon}. - */ - public static Polygon createSimplePolygon( Coordinate[] coords ) { - LinearRing linearRing = gf().createLinearRing(coords); - return gf().createPolygon(linearRing, null); - } - - /** - * Creates a polygon that may help out as placeholder. - * - * @return a dummy {@link Polygon}. - */ - public static Polygon createDummyPolygon() { - Coordinate[] c = new Coordinate[]{new Coordinate(0.0, 0.0), new Coordinate(1.0, 1.0), new Coordinate(1.0, 0.0), - new Coordinate(0.0, 0.0)}; - LinearRing linearRing = gf().createLinearRing(c); - return gf().createPolygon(linearRing, null); - } - - /** - * Creates a line that may help out as placeholder. - * - * @return a dummy {@link LineString}. - */ - public static LineString createDummyLine() { - Coordinate[] c = new Coordinate[]{new Coordinate(0.0, 0.0), new Coordinate(1.0, 1.0), new Coordinate(1.0, 0.0)}; - LineString lineString = gf().createLineString(c); - return lineString; - } - - /** - * Creates a point that may help out as placeholder. - * - * @return a dummy {@link Point}. - */ - public static Point createDummyPoint() { - Point point = gf().createPoint(new Coordinate(0.0, 0.0)); - return point; - } - - public static Polygon createPolygonFromEnvelope( Envelope env ) { - Coordinate[] c = new Coordinate[]{new Coordinate(env.getMinX(), env.getMinY()), - new Coordinate(env.getMinX(), env.getMaxY()), new Coordinate(env.getMaxX(), env.getMaxY()), - new Coordinate(env.getMaxX(), env.getMinY()), new Coordinate(env.getMinX(), env.getMinY())}; - LinearRing linearRing = gf().createLinearRing(c); - return gf().createPolygon(linearRing, null); - } - - public static List extractSubGeometries( Geometry geometry ) { - List geometriesList = new ArrayList(); - int numGeometries = geometry.getNumGeometries(); - for( int i = 0; i < numGeometries; i++ ) { - Geometry geometryN = geometry.getGeometryN(i); - geometriesList.add(geometryN); - } - return geometriesList; - } - - /** - * Calculates the angle between two {@link LineSegment}s. - * - * @param l1 the first segment. - * @param l2 the second segment. - * @return the angle between the two segments, starting from the first segment - * moving clockwise. - */ - public static double angleBetween( LineSegment l1, LineSegment l2 ) { - double azimuth1 = azimuth(l1.p0, l1.p1); - double azimuth2 = azimuth(l2.p0, l2.p1); - - if (azimuth1 < azimuth2) { - return azimuth2 - azimuth1; - } else { - return 360 - azimuth1 + azimuth2; - } - } - - /** - * Calculates the azimuth in degrees given two {@link Coordinate} composing a line. - * - * Note that the coords order is important and will differ of 180. - * - * @param c1 first coordinate (used as origin). - * @param c2 second coordinate. - * @return the azimuth angle. - */ - public static double azimuth( Coordinate c1, Coordinate c2 ) { - // vertical - if (c1.x == c2.x) { - if (c1.y == c2.y) { - // same point - return Double.NaN; - } else if (c1.y < c2.y) { - return 0.0; - } else if (c1.y > c2.y) { - return 180.0; - } - } - // horiz - if (c1.y == c2.y) { - if (c1.x < c2.x) { - return 90.0; - } else if (c1.x > c2.x) { - return 270.0; - } - } - // -> / - if (c1.x < c2.x && c1.y < c2.y) { - double tanA = (c2.x - c1.x) / (c2.y - c1.y); - double atan = atan(tanA); - return toDegrees(atan); - } - // -> \ - if (c1.x < c2.x && c1.y > c2.y) { - double tanA = (c1.y - c2.y) / (c2.x - c1.x); - double atan = atan(tanA); - return toDegrees(atan) + 90.0; - } - // <- / - if (c1.x > c2.x && c1.y > c2.y) { - double tanA = (c1.x - c2.x) / (c1.y - c2.y); - double atan = atan(tanA); - return toDegrees(atan) + 180; - } - // <- \ - if (c1.x > c2.x && c1.y < c2.y) { - double tanA = (c2.y - c1.y) / (c1.x - c2.x); - double atan = atan(tanA); - return toDegrees(atan) + 270; - } - - return Double.NaN; - } - - /** - * Returns the {@link GEOMETRYTYPE} for a given {@link Geometry}. - * - * @param geometry the geometry to check. - * @return the type. - */ - public static GEOMETRYTYPE getGeometryType( Geometry geometry ) { - if (geometry instanceof LineString) { - return GEOMETRYTYPE.LINE; - } else if (geometry instanceof MultiLineString) { - return GEOMETRYTYPE.MULTILINE; - } else if (geometry instanceof Point) { - return GEOMETRYTYPE.POINT; - } else if (geometry instanceof MultiPoint) { - return GEOMETRYTYPE.MULTIPOINT; - } else if (geometry instanceof Polygon) { - return GEOMETRYTYPE.POLYGON; - } else if (geometry instanceof MultiPolygon) { - return GEOMETRYTYPE.MULTIPOLYGON; - } else { - return null; - } - } - - /** - * Returns the {@link GEOMETRYTYPE} for a given {@link GeometryType}. - * - * @param geometryType the geometry type to check. - * @return the type. - */ - public static GEOMETRYTYPE getGeometryType( GeometryType geometryType ) { - Class< ? > binding = geometryType.getBinding(); - - if (binding == LineString.class) { - return GEOMETRYTYPE.LINE; - } else if (binding == MultiLineString.class) { - return GEOMETRYTYPE.MULTILINE; - } else if (binding == Point.class) { - return GEOMETRYTYPE.POINT; - } else if (binding == MultiPoint.class) { - return GEOMETRYTYPE.MULTIPOINT; - } else if (binding == Polygon.class) { - return GEOMETRYTYPE.POLYGON; - } else if (binding == MultiPolygon.class) { - return GEOMETRYTYPE.MULTIPOLYGON; - } else { - return null; - } - } - - /** - * Checks if the given geometry is a {@link LineString} (or {@link MultiLineString}) geometry. - * - * @param geometry the geometry to check. - * @return true if there are lines in there. - */ - public static boolean isLine( Geometry geometry ) { - if (geometry instanceof LineString || geometry instanceof MultiLineString) { - return true; - } - return false; - } - - /** - * Checks if the given {@link GeometryDescriptor} is for {@link LineString} (or {@link MultiLineString}) geometry. - * - * @param geometryDescriptor the descriptor. - * @return true if there are points in there. - */ - public static boolean isLine( GeometryDescriptor geometryDescriptor ) { - GeometryType type = geometryDescriptor.getType(); - Class< ? > binding = type.getBinding(); - if (binding == MultiLineString.class || binding == LineString.class) { - return true; - } - return false; - } - - /** - * Checks if the given geometry is a {@link Polygon} (or {@link MultiPolygon}) geometry. - * - * @param geometry the geometry to check. - * @return true if there are polygons in there. - */ - public static boolean isPolygon( Geometry geometry ) { - if (geometry instanceof Polygon || geometry instanceof MultiPolygon) { - return true; - } - return false; - } - - /** - * Checks if the given {@link GeometryDescriptor} is for {@link Polygon} (or {@link MultiPolygon}) geometry. - * - * @param geometryDescriptor the descriptor. - * @return true if there are polygons in there. - */ - public static boolean isPolygon( GeometryDescriptor geometryDescriptor ) { - GeometryType type = geometryDescriptor.getType(); - Class< ? > binding = type.getBinding(); - if (binding == MultiPolygon.class || binding == Polygon.class) { - return true; - } - return false; - } - - /** - * Checks if the given geometry is a {@link Point} (or {@link MultiPoint}) geometry. - * - * @param geometry the geometry to check. - * @return true if there are points in there. - */ - public static boolean isPoint( Geometry geometry ) { - if (geometry instanceof Point || geometry instanceof MultiPoint) { - return true; - } - return false; - } - - /** - * Checks if the given {@link GeometryDescriptor} is for {@link Point} (or {@link MultiPoint}) geometry. - * - * @param geometryDescriptor the descriptor. - * @return true if there are points in there. - */ - public static boolean isPoint( GeometryDescriptor geometryDescriptor ) { - GeometryType type = geometryDescriptor.getType(); - Class< ? > binding = type.getBinding(); - if (binding == MultiPoint.class || binding == Point.class) { - return true; - } - return false; - } - - /** - * Calculates the area of a polygon from its vertices. - * - * @param x the array of x coordinates. - * @param y the array of y coordinates. - * @param N the number of sides of the polygon. - * @return the area of the polygon. - */ - public static double getPolygonArea( int[] x, int[] y, int N ) { - int i, j; - double area = 0; - - for( i = 0; i < N; i++ ) { - j = (i + 1) % N; - area += x[i] * y[j]; - area -= y[i] * x[j]; - } - - area /= 2; - return (area < 0 ? -area : area); - } - - /** - * Calculates the 3d distance between two coordinates that have an elevation information. - * - *

                Note that the {@link Coordinate#distance(Coordinate)} method does only 2d. - * - * @param c1 coordinate 1. - * @param c2 coordinate 2. - * @param geodeticCalculator If supplied it will be used for planar distance calculation. - * @return the distance considering also elevation. - */ - public static double distance3d( Coordinate c1, Coordinate c2, GeodeticCalculator geodeticCalculator ) { - if (Double.isNaN(c1.z) || Double.isNaN(c2.z)) { - throw new IllegalArgumentException("Missing elevation information in the supplied coordinates."); - } - double deltaElev = Math.abs(c1.z - c2.z); - double projectedDistance; - if (geodeticCalculator != null) { - geodeticCalculator.setStartingGeographicPoint(c1.x, c1.y); - geodeticCalculator.setDestinationGeographicPoint(c2.x, c2.y); - projectedDistance = geodeticCalculator.getOrthodromicDistance(); - } else { - projectedDistance = c1.distance(c2); - } - - double distance = NumericsUtilities.pythagoras(projectedDistance, deltaElev); - return distance; - } - - public static void sortHorizontal( Coordinate[] coordinates ) { - QuickSortAlgorithm sorter = new QuickSortAlgorithm(new DummyProgressMonitor()); - - double[] x = new double[coordinates.length]; - double[] y = new double[coordinates.length]; - for( int i = 0; i < x.length; i++ ) { - x[i] = coordinates[i].x; - y[i] = coordinates[i].y; - } - - sorter.sort(x, y); - - for( int i = 0; i < x.length; i++ ) { - coordinates[i].x = x[i]; - coordinates[i].y = y[i]; - } - } - - /** - * Joins two lines to a polygon. - * - * @param checkValid checks if the resulting polygon is valid. - * @param lines the lines to use. - * @return the joined polygon or null if something ugly happened. - */ - public static Polygon lines2Polygon( boolean checkValid, LineString... lines ) { - List coordinatesList = new ArrayList(); - - List linesList = new ArrayList(); - for( LineString tmpLine : lines ) { - linesList.add(tmpLine); - } - - LineString currentLine = linesList.get(0); - linesList.remove(0); - while( linesList.size() > 0 ) { - Coordinate[] coordinates = currentLine.getCoordinates(); - List tmpList = Arrays.asList(coordinates); - coordinatesList.addAll(tmpList); - - Point thePoint = currentLine.getEndPoint(); - - double minDistance = Double.MAX_VALUE; - LineString minDistanceLine = null; - boolean needFlip = false; - for( LineString tmpLine : linesList ) { - Point tmpStartPoint = tmpLine.getStartPoint(); - double distance = thePoint.distance(tmpStartPoint); - if (distance < minDistance) { - minDistance = distance; - minDistanceLine = tmpLine; - needFlip = false; - } - - Point tmpEndPoint = tmpLine.getEndPoint(); - distance = thePoint.distance(tmpEndPoint); - if (distance < minDistance) { - minDistance = distance; - minDistanceLine = tmpLine; - needFlip = true; - } - } - - linesList.remove(minDistanceLine); - - if (needFlip) { - minDistanceLine = (LineString) minDistanceLine.reverse(); - } - - currentLine = minDistanceLine; - - } - // add last - Coordinate[] coordinates = currentLine.getCoordinates(); - List tmpList = Arrays.asList(coordinates); - coordinatesList.addAll(tmpList); - - coordinatesList.add(coordinatesList.get(0)); - LinearRing linearRing = gf().createLinearRing(coordinatesList.toArray(new Coordinate[0])); - Polygon polygon = gf().createPolygon(linearRing, null); - - if (checkValid) { - if (!polygon.isValid()) { - return null; - } - } - return polygon; - } - - /** - * Returns the coordinates at a given interval along the line. - * - *

                - * Note that first and last coordinate are also added, making it - * likely that the interval between the last two coordinates is less - * than the supplied interval. - *

                - * - * - * @param line the line to use. - * @param interval the interval to use as distance between coordinates. Has to be > 0. - * @param keepExisting if true, keeps the existing coordinates in the generated list. - * Aslo in this case the interval around the existing points will not reflect the asked interval. - * @param startFrom if > 0, it defines the initial distance to jump. - * @param endAt if > 0, it defines where to end, even if the line is longer. - * @return the list of extracted coordinates. - */ - public static List getCoordinatesAtInterval( LineString line, double interval, boolean keepExisting, - double startFrom, double endAt ) { - if (interval <= 0) { - throw new IllegalArgumentException("Interval needs to be > 0."); - } - double length = line.getLength(); - if (startFrom < 0) { - startFrom = 0.0; - } - if (endAt < 0) { - endAt = length; - } - - List coordinatesList = new ArrayList(); - - LengthIndexedLine indexedLine = new LengthIndexedLine(line); - Coordinate[] existingCoordinates = null; - double[] indexOfExisting = null; - if (keepExisting) { - existingCoordinates = line.getCoordinates(); - indexOfExisting = new double[existingCoordinates.length]; - int i = 0; - for( Coordinate coordinate : existingCoordinates ) { - double indexOf = indexedLine.indexOf(coordinate); - indexOfExisting[i] = indexOf; - i++; - } - } - - double runningLength = startFrom; - int currentIndexOfexisting = 1; // jump first - while( runningLength < endAt ) { - if (keepExisting && currentIndexOfexisting < indexOfExisting.length - 1 - && runningLength > indexOfExisting[currentIndexOfexisting]) { - // add the existing - coordinatesList.add(existingCoordinates[currentIndexOfexisting]); - currentIndexOfexisting++; - continue; - } - - Coordinate extractedPoint = indexedLine.extractPoint(runningLength); - coordinatesList.add(extractedPoint); - runningLength = runningLength + interval; - } - Coordinate extractedPoint = indexedLine.extractPoint(endAt); - coordinatesList.add(extractedPoint); - - return coordinatesList; - } - - /** - * Extracts traversal sections of a given with from the supplied {@link Coordinate}s. - * - * @param coordinates the list of coordinates. - * @param width the total with of the sections. - * @return the list of {@link LineString sections}. - */ - public static List getSectionsFromCoordinates( List coordinates, double width ) { - - if (coordinates.size() < 3) { - throw new IllegalArgumentException("This method works only on lines with at least 3 coordinates."); - } - double halfWidth = width / 2.0; - List linesList = new ArrayList(); - // first section - Coordinate centerCoordinate = coordinates.get(0); - LineSegment l1 = new LineSegment(centerCoordinate, coordinates.get(1)); - Coordinate leftCoordinate = l1.pointAlongOffset(0.0, halfWidth); - Coordinate rightCoordinate = l1.pointAlongOffset(0.0, -halfWidth); - LineString lineString = geomFactory.createLineString(new Coordinate[]{leftCoordinate, centerCoordinate, rightCoordinate}); - linesList.add(lineString); - - for( int i = 1; i < coordinates.size() - 1; i++ ) { - Coordinate previous = coordinates.get(i - 1); - Coordinate current = coordinates.get(i); - Coordinate after = coordinates.get(i + 1); - - double firstAngle = azimuth(current, previous); - double secondAngle = azimuth(current, after); - - double a1 = min(firstAngle, secondAngle); - double a2 = max(firstAngle, secondAngle); - - double centerAngle = a1 + (a2 - a1) / 2.0; - - AffineTransformation rotationInstance = AffineTransformation.rotationInstance(-toRadians(centerAngle), current.x, - current.y); - - LineString vertical = geomFactory.createLineString(new Coordinate[]{new Coordinate(current.x, current.y + halfWidth), - current, new Coordinate(current.x, current.y - halfWidth)}); - Geometry transformed = rotationInstance.transform(vertical); - linesList.add((LineString) transformed); - } - - // last section - centerCoordinate = coordinates.get(coordinates.size() - 1); - LineSegment l2 = new LineSegment(centerCoordinate, coordinates.get(coordinates.size() - 2)); - leftCoordinate = l2.pointAlongOffset(0.0, halfWidth); - rightCoordinate = l2.pointAlongOffset(0.0, -halfWidth); - lineString = geomFactory.createLineString(new Coordinate[]{leftCoordinate, centerCoordinate, rightCoordinate}); - linesList.add(lineString); - - return linesList; - } - - /** - * Returns the section line at a given interval along the line. - * - *

                - * The returned lines are digitized from left to right and contain also the - * center point. - *

                - *

                - * Note that first and last coordinate's section are also added, making it - * likely that the interval between the last two coordinates is less - * than the supplied interval. - *

                - * - * - * @param line the line to use. - * @param interval the interval to use as distance between coordinates. Has to be > 0. - * @param width the total width of the section. - * @return the list of coordinates. - * @param startFrom if > 0, it defines the initial distance to jump. - * @param endAt if > 0, it defines where to end, even if the line is longer. - * @return the list of sections lines at a given interval. - */ - public static List getSectionsAtInterval( LineString line, double interval, double width, double startFrom, - double endAt ) { - if (interval <= 0) { - throw new IllegalArgumentException("Interval needs to be > 0."); - } - double length = line.getLength(); - if (startFrom < 0) { - startFrom = 0.0; - } - if (endAt < 0) { - endAt = length; - } - - double halfWidth = width / 2.0; - List linesList = new ArrayList(); - - LengthIndexedLine indexedLine = new LengthIndexedLine(line); - double runningLength = startFrom; - while( runningLength < endAt ) { - Coordinate centerCoordinate = indexedLine.extractPoint(runningLength); - Coordinate leftCoordinate = indexedLine.extractPoint(runningLength, -halfWidth); - Coordinate rightCoordinate = indexedLine.extractPoint(runningLength, halfWidth); - LineString lineString = geomFactory.createLineString(new Coordinate[]{leftCoordinate, centerCoordinate, - rightCoordinate}); - linesList.add(lineString); - runningLength = runningLength + interval; - } - Coordinate centerCoordinate = indexedLine.extractPoint(endAt); - Coordinate leftCoordinate = indexedLine.extractPoint(endAt, -halfWidth); - Coordinate rightCoordinate = indexedLine.extractPoint(endAt, halfWidth); - LineString lineString = geomFactory.createLineString(new Coordinate[]{leftCoordinate, centerCoordinate, rightCoordinate}); - linesList.add(lineString); - - return linesList; - } - - /** - * Pack a list of geometries in a {@link STRtree}. - * - *

                Note that the tree can't be modified once the query method has been called first.

                - * - * @param geometries the list of geometries. - * @return the {@link STRtree}. - */ - public static STRtree geometriesToSRTree( List geometries ) { - STRtree tree = new STRtree(geometries.size()); - for( Geometry geometry : geometries ) { - tree.insert(geometry.getEnvelopeInternal(), geometry); - } - return tree; - } - - /** - * {@link Polygon} by {@link LineString} split. - * - *

                From JTS ml: http://lists.refractions.net/pipermail/jts-devel/2008-September/002666.html

                - * - * @param polygon the input polygon. - * @param line the input line to use to split. - * @return the list of split polygons. - */ - public static List splitPolygon( Polygon polygon, LineString line ) { - /* - * Use MCIndexNoder to node the polygon and linestring together, - * Polygonizer to polygonize the noded edges, and then PointLocater - * to determine which of the resultant polygons correspond to - * the input polygon. - */ - IntersectionAdder _intersector = new IntersectionAdder(new RobustLineIntersector()); - MCIndexNoder mci = new MCIndexNoder(); - mci.setSegmentIntersector(_intersector); - NodedSegmentString pSeg = new NodedSegmentString(polygon.getCoordinates(), null); - NodedSegmentString lSeg = new NodedSegmentString(line.getCoordinates(), null); - List nodesSegmentStringList = new ArrayList(); - nodesSegmentStringList.add(pSeg); - nodesSegmentStringList.add(lSeg); - mci.computeNodes(nodesSegmentStringList); - Polygonizer polygonizer = new Polygonizer(); - List lsList = new ArrayList(); - for( Object o : mci.getMonotoneChains() ) { - MonotoneChain mtc = (MonotoneChain) o; - LineString l = gf().createLineString(mtc.getCoordinates()); - lsList.add(l); - } - Geometry nodedLineStrings = lsList.get(0); - for( int i = 1; i < lsList.size(); i++ ) { - nodedLineStrings = nodedLineStrings.union(lsList.get(i)); - } - polygonizer.add(nodedLineStrings); - @SuppressWarnings("unchecked") - Collection polygons = polygonizer.getPolygons(); - List newPolygons = new ArrayList(); - PointLocator pl = new PointLocator(); - for( Polygon p : polygons ) { - if (pl.locate(p.getInteriorPoint().getCoordinate(), p) == Location.INTERIOR) { - newPolygons.add(p); - } - } - return newPolygons; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.geometry; + +import static java.lang.Math.atan; +import static java.lang.Math.max; +import static java.lang.Math.min; +import static java.lang.Math.toDegrees; +import static java.lang.Math.toRadians; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.geotools.referencing.GeodeticCalculator; +import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; +import org.jgrasstools.gears.utils.math.NumericsUtilities; +import org.jgrasstools.gears.utils.sorting.QuickSortAlgorithm; +import org.opengis.feature.type.GeometryDescriptor; +import org.opengis.feature.type.GeometryType; + +import com.vividsolutions.jts.algorithm.PointLocator; +import com.vividsolutions.jts.algorithm.RobustLineIntersector; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineSegment; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.Location; +import com.vividsolutions.jts.geom.MultiLineString; +import com.vividsolutions.jts.geom.MultiPoint; +import com.vividsolutions.jts.geom.MultiPolygon; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; +import com.vividsolutions.jts.geom.PrecisionModel; +import com.vividsolutions.jts.geom.util.AffineTransformation; +import com.vividsolutions.jts.index.chain.MonotoneChain; +import com.vividsolutions.jts.index.strtree.STRtree; +import com.vividsolutions.jts.linearref.LengthIndexedLine; +import com.vividsolutions.jts.noding.IntersectionAdder; +import com.vividsolutions.jts.noding.MCIndexNoder; +import com.vividsolutions.jts.noding.NodedSegmentString; +import com.vividsolutions.jts.operation.polygonize.Polygonizer; + +/** + * Utilities related to {@link Geometry}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class GeometryUtilities { + + public static Geometry[] TYPE_GEOMETRY = new Geometry[0]; + public static Polygon[] TYPE_POLYGON = new Polygon[0]; + public static MultiPolygon[] TYPE_MULTIPOLYGON = new MultiPolygon[0]; + public static LineString[] TYPE_LINESTRING = new LineString[0]; + public static MultiLineString[] TYPE_MULTILINESTRING = new MultiLineString[0]; + public static Point[] TYPE_POINT = new Point[0]; + public static MultiPoint[] TYPE_MULTIPOINT = new MultiPoint[0]; + + /** + * Geometry types used by the utility. + */ + public static enum GEOMETRYTYPE { + POINT, MULTIPOINT, LINE, MULTILINE, POLYGON, MULTIPOLYGON, UNKNOWN + } + + private static GeometryFactory geomFactory; + private static PrecisionModel precModel; + + public static PrecisionModel basicPrecisionModel() { + return (pm()); + } + + public static GeometryFactory gf() { + if (geomFactory == null) { + geomFactory = new GeometryFactory(pm()); + } + return (geomFactory); + } + + public static PrecisionModel pm() { + if (precModel == null) { + precModel = new PrecisionModel(PrecisionModel.FLOATING); + } + return (precModel); + } + + /** + * Create a simple polygon (no holes). + * + * @param coords the coords of the polygon. + * @return the {@link Polygon}. + */ + public static Polygon createSimplePolygon( Coordinate[] coords ) { + LinearRing linearRing = gf().createLinearRing(coords); + return gf().createPolygon(linearRing, null); + } + + /** + * Creates a polygon that may help out as placeholder. + * + * @return a dummy {@link Polygon}. + */ + public static Polygon createDummyPolygon() { + Coordinate[] c = new Coordinate[]{new Coordinate(0.0, 0.0), new Coordinate(1.0, 1.0), new Coordinate(1.0, 0.0), + new Coordinate(0.0, 0.0)}; + LinearRing linearRing = gf().createLinearRing(c); + return gf().createPolygon(linearRing, null); + } + + /** + * Creates a line that may help out as placeholder. + * + * @return a dummy {@link LineString}. + */ + public static LineString createDummyLine() { + Coordinate[] c = new Coordinate[]{new Coordinate(0.0, 0.0), new Coordinate(1.0, 1.0), new Coordinate(1.0, 0.0)}; + LineString lineString = gf().createLineString(c); + return lineString; + } + + /** + * Creates a point that may help out as placeholder. + * + * @return a dummy {@link Point}. + */ + public static Point createDummyPoint() { + Point point = gf().createPoint(new Coordinate(0.0, 0.0)); + return point; + } + + public static Polygon createPolygonFromEnvelope( Envelope env ) { + Coordinate[] c = new Coordinate[]{new Coordinate(env.getMinX(), env.getMinY()), + new Coordinate(env.getMinX(), env.getMaxY()), new Coordinate(env.getMaxX(), env.getMaxY()), + new Coordinate(env.getMaxX(), env.getMinY()), new Coordinate(env.getMinX(), env.getMinY())}; + LinearRing linearRing = gf().createLinearRing(c); + return gf().createPolygon(linearRing, null); + } + + public static List extractSubGeometries( Geometry geometry ) { + List geometriesList = new ArrayList(); + int numGeometries = geometry.getNumGeometries(); + for( int i = 0; i < numGeometries; i++ ) { + Geometry geometryN = geometry.getGeometryN(i); + geometriesList.add(geometryN); + } + return geometriesList; + } + + /** + * Calculates the angle between two {@link LineSegment}s. + * + * @param l1 the first segment. + * @param l2 the second segment. + * @return the angle between the two segments, starting from the first segment + * moving clockwise. + */ + public static double angleBetween( LineSegment l1, LineSegment l2 ) { + double azimuth1 = azimuth(l1.p0, l1.p1); + double azimuth2 = azimuth(l2.p0, l2.p1); + + if (azimuth1 < azimuth2) { + return azimuth2 - azimuth1; + } else { + return 360 - azimuth1 + azimuth2; + } + } + + /** + * Calculates the azimuth in degrees given two {@link Coordinate} composing a line. + * + * Note that the coords order is important and will differ of 180. + * + * @param c1 first coordinate (used as origin). + * @param c2 second coordinate. + * @return the azimuth angle. + */ + public static double azimuth( Coordinate c1, Coordinate c2 ) { + // vertical + if (c1.x == c2.x) { + if (c1.y == c2.y) { + // same point + return Double.NaN; + } else if (c1.y < c2.y) { + return 0.0; + } else if (c1.y > c2.y) { + return 180.0; + } + } + // horiz + if (c1.y == c2.y) { + if (c1.x < c2.x) { + return 90.0; + } else if (c1.x > c2.x) { + return 270.0; + } + } + // -> / + if (c1.x < c2.x && c1.y < c2.y) { + double tanA = (c2.x - c1.x) / (c2.y - c1.y); + double atan = atan(tanA); + return toDegrees(atan); + } + // -> \ + if (c1.x < c2.x && c1.y > c2.y) { + double tanA = (c1.y - c2.y) / (c2.x - c1.x); + double atan = atan(tanA); + return toDegrees(atan) + 90.0; + } + // <- / + if (c1.x > c2.x && c1.y > c2.y) { + double tanA = (c1.x - c2.x) / (c1.y - c2.y); + double atan = atan(tanA); + return toDegrees(atan) + 180; + } + // <- \ + if (c1.x > c2.x && c1.y < c2.y) { + double tanA = (c2.y - c1.y) / (c1.x - c2.x); + double atan = atan(tanA); + return toDegrees(atan) + 270; + } + + return Double.NaN; + } + + /** + * Returns the {@link GEOMETRYTYPE} for a given {@link Geometry}. + * + * @param geometry the geometry to check. + * @return the type. + */ + public static GEOMETRYTYPE getGeometryType( Geometry geometry ) { + if (geometry instanceof LineString) { + return GEOMETRYTYPE.LINE; + } else if (geometry instanceof MultiLineString) { + return GEOMETRYTYPE.MULTILINE; + } else if (geometry instanceof Point) { + return GEOMETRYTYPE.POINT; + } else if (geometry instanceof MultiPoint) { + return GEOMETRYTYPE.MULTIPOINT; + } else if (geometry instanceof Polygon) { + return GEOMETRYTYPE.POLYGON; + } else if (geometry instanceof MultiPolygon) { + return GEOMETRYTYPE.MULTIPOLYGON; + } else { + return null; + } + } + + /** + * Returns the {@link GEOMETRYTYPE} for a given {@link GeometryType}. + * + * @param geometryType the geometry type to check. + * @return the type. + */ + public static GEOMETRYTYPE getGeometryType( GeometryType geometryType ) { + Class< ? > binding = geometryType.getBinding(); + + if (binding == LineString.class) { + return GEOMETRYTYPE.LINE; + } else if (binding == MultiLineString.class) { + return GEOMETRYTYPE.MULTILINE; + } else if (binding == Point.class) { + return GEOMETRYTYPE.POINT; + } else if (binding == MultiPoint.class) { + return GEOMETRYTYPE.MULTIPOINT; + } else if (binding == Polygon.class) { + return GEOMETRYTYPE.POLYGON; + } else if (binding == MultiPolygon.class) { + return GEOMETRYTYPE.MULTIPOLYGON; + } else { + return null; + } + } + + /** + * Checks if the given geometry is a {@link LineString} (or {@link MultiLineString}) geometry. + * + * @param geometry the geometry to check. + * @return true if there are lines in there. + */ + public static boolean isLine( Geometry geometry ) { + if (geometry instanceof LineString || geometry instanceof MultiLineString) { + return true; + } + return false; + } + + /** + * Checks if the given {@link GeometryDescriptor} is for {@link LineString} (or {@link MultiLineString}) geometry. + * + * @param geometryDescriptor the descriptor. + * @return true if there are points in there. + */ + public static boolean isLine( GeometryDescriptor geometryDescriptor ) { + GeometryType type = geometryDescriptor.getType(); + Class< ? > binding = type.getBinding(); + if (binding == MultiLineString.class || binding == LineString.class) { + return true; + } + return false; + } + + /** + * Checks if the given geometry is a {@link Polygon} (or {@link MultiPolygon}) geometry. + * + * @param geometry the geometry to check. + * @return true if there are polygons in there. + */ + public static boolean isPolygon( Geometry geometry ) { + if (geometry instanceof Polygon || geometry instanceof MultiPolygon) { + return true; + } + return false; + } + + /** + * Checks if the given {@link GeometryDescriptor} is for {@link Polygon} (or {@link MultiPolygon}) geometry. + * + * @param geometryDescriptor the descriptor. + * @return true if there are polygons in there. + */ + public static boolean isPolygon( GeometryDescriptor geometryDescriptor ) { + GeometryType type = geometryDescriptor.getType(); + Class< ? > binding = type.getBinding(); + if (binding == MultiPolygon.class || binding == Polygon.class) { + return true; + } + return false; + } + + /** + * Checks if the given geometry is a {@link Point} (or {@link MultiPoint}) geometry. + * + * @param geometry the geometry to check. + * @return true if there are points in there. + */ + public static boolean isPoint( Geometry geometry ) { + if (geometry instanceof Point || geometry instanceof MultiPoint) { + return true; + } + return false; + } + + /** + * Checks if the given {@link GeometryDescriptor} is for {@link Point} (or {@link MultiPoint}) geometry. + * + * @param geometryDescriptor the descriptor. + * @return true if there are points in there. + */ + public static boolean isPoint( GeometryDescriptor geometryDescriptor ) { + GeometryType type = geometryDescriptor.getType(); + Class< ? > binding = type.getBinding(); + if (binding == MultiPoint.class || binding == Point.class) { + return true; + } + return false; + } + + /** + * Calculates the area of a polygon from its vertices. + * + * @param x the array of x coordinates. + * @param y the array of y coordinates. + * @param N the number of sides of the polygon. + * @return the area of the polygon. + */ + public static double getPolygonArea( int[] x, int[] y, int N ) { + int i, j; + double area = 0; + + for( i = 0; i < N; i++ ) { + j = (i + 1) % N; + area += x[i] * y[j]; + area -= y[i] * x[j]; + } + + area /= 2; + return (area < 0 ? -area : area); + } + + /** + * Calculates the 3d distance between two coordinates that have an elevation information. + * + *

                Note that the {@link Coordinate#distance(Coordinate)} method does only 2d. + * + * @param c1 coordinate 1. + * @param c2 coordinate 2. + * @param geodeticCalculator If supplied it will be used for planar distance calculation. + * @return the distance considering also elevation. + */ + public static double distance3d( Coordinate c1, Coordinate c2, GeodeticCalculator geodeticCalculator ) { + if (Double.isNaN(c1.z) || Double.isNaN(c2.z)) { + throw new IllegalArgumentException("Missing elevation information in the supplied coordinates."); + } + double deltaElev = Math.abs(c1.z - c2.z); + double projectedDistance; + if (geodeticCalculator != null) { + geodeticCalculator.setStartingGeographicPoint(c1.x, c1.y); + geodeticCalculator.setDestinationGeographicPoint(c2.x, c2.y); + projectedDistance = geodeticCalculator.getOrthodromicDistance(); + } else { + projectedDistance = c1.distance(c2); + } + + double distance = NumericsUtilities.pythagoras(projectedDistance, deltaElev); + return distance; + } + + public static void sortHorizontal( Coordinate[] coordinates ) { + QuickSortAlgorithm sorter = new QuickSortAlgorithm(new DummyProgressMonitor()); + + double[] x = new double[coordinates.length]; + double[] y = new double[coordinates.length]; + for( int i = 0; i < x.length; i++ ) { + x[i] = coordinates[i].x; + y[i] = coordinates[i].y; + } + + sorter.sort(x, y); + + for( int i = 0; i < x.length; i++ ) { + coordinates[i].x = x[i]; + coordinates[i].y = y[i]; + } + } + + /** + * Joins two lines to a polygon. + * + * @param checkValid checks if the resulting polygon is valid. + * @param lines the lines to use. + * @return the joined polygon or null if something ugly happened. + */ + public static Polygon lines2Polygon( boolean checkValid, LineString... lines ) { + List coordinatesList = new ArrayList(); + + List linesList = new ArrayList(); + for( LineString tmpLine : lines ) { + linesList.add(tmpLine); + } + + LineString currentLine = linesList.get(0); + linesList.remove(0); + while( linesList.size() > 0 ) { + Coordinate[] coordinates = currentLine.getCoordinates(); + List tmpList = Arrays.asList(coordinates); + coordinatesList.addAll(tmpList); + + Point thePoint = currentLine.getEndPoint(); + + double minDistance = Double.MAX_VALUE; + LineString minDistanceLine = null; + boolean needFlip = false; + for( LineString tmpLine : linesList ) { + Point tmpStartPoint = tmpLine.getStartPoint(); + double distance = thePoint.distance(tmpStartPoint); + if (distance < minDistance) { + minDistance = distance; + minDistanceLine = tmpLine; + needFlip = false; + } + + Point tmpEndPoint = tmpLine.getEndPoint(); + distance = thePoint.distance(tmpEndPoint); + if (distance < minDistance) { + minDistance = distance; + minDistanceLine = tmpLine; + needFlip = true; + } + } + + linesList.remove(minDistanceLine); + + if (needFlip) { + minDistanceLine = (LineString) minDistanceLine.reverse(); + } + + currentLine = minDistanceLine; + + } + // add last + Coordinate[] coordinates = currentLine.getCoordinates(); + List tmpList = Arrays.asList(coordinates); + coordinatesList.addAll(tmpList); + + coordinatesList.add(coordinatesList.get(0)); + LinearRing linearRing = gf().createLinearRing(coordinatesList.toArray(new Coordinate[0])); + Polygon polygon = gf().createPolygon(linearRing, null); + + if (checkValid) { + if (!polygon.isValid()) { + return null; + } + } + return polygon; + } + + /** + * Returns the coordinates at a given interval along the line. + * + *

                + * Note that first and last coordinate are also added, making it + * likely that the interval between the last two coordinates is less + * than the supplied interval. + *

                + * + * + * @param line the line to use. + * @param interval the interval to use as distance between coordinates. Has to be > 0. + * @param keepExisting if true, keeps the existing coordinates in the generated list. + * Aslo in this case the interval around the existing points will not reflect the asked interval. + * @param startFrom if > 0, it defines the initial distance to jump. + * @param endAt if > 0, it defines where to end, even if the line is longer. + * @return the list of extracted coordinates. + */ + public static List getCoordinatesAtInterval( LineString line, double interval, boolean keepExisting, + double startFrom, double endAt ) { + if (interval <= 0) { + throw new IllegalArgumentException("Interval needs to be > 0."); + } + double length = line.getLength(); + if (startFrom < 0) { + startFrom = 0.0; + } + if (endAt < 0) { + endAt = length; + } + + List coordinatesList = new ArrayList(); + + LengthIndexedLine indexedLine = new LengthIndexedLine(line); + Coordinate[] existingCoordinates = null; + double[] indexOfExisting = null; + if (keepExisting) { + existingCoordinates = line.getCoordinates(); + indexOfExisting = new double[existingCoordinates.length]; + int i = 0; + for( Coordinate coordinate : existingCoordinates ) { + double indexOf = indexedLine.indexOf(coordinate); + indexOfExisting[i] = indexOf; + i++; + } + } + + double runningLength = startFrom; + int currentIndexOfexisting = 1; // jump first + while( runningLength < endAt ) { + if (keepExisting && currentIndexOfexisting < indexOfExisting.length - 1 + && runningLength > indexOfExisting[currentIndexOfexisting]) { + // add the existing + coordinatesList.add(existingCoordinates[currentIndexOfexisting]); + currentIndexOfexisting++; + continue; + } + + Coordinate extractedPoint = indexedLine.extractPoint(runningLength); + coordinatesList.add(extractedPoint); + runningLength = runningLength + interval; + } + Coordinate extractedPoint = indexedLine.extractPoint(endAt); + coordinatesList.add(extractedPoint); + + return coordinatesList; + } + + /** + * Extracts traversal sections of a given with from the supplied {@link Coordinate}s. + * + * @param coordinates the list of coordinates. + * @param width the total with of the sections. + * @return the list of {@link LineString sections}. + */ + public static List getSectionsFromCoordinates( List coordinates, double width ) { + + if (coordinates.size() < 3) { + throw new IllegalArgumentException("This method works only on lines with at least 3 coordinates."); + } + double halfWidth = width / 2.0; + List linesList = new ArrayList(); + // first section + Coordinate centerCoordinate = coordinates.get(0); + LineSegment l1 = new LineSegment(centerCoordinate, coordinates.get(1)); + Coordinate leftCoordinate = l1.pointAlongOffset(0.0, halfWidth); + Coordinate rightCoordinate = l1.pointAlongOffset(0.0, -halfWidth); + LineString lineString = geomFactory.createLineString(new Coordinate[]{leftCoordinate, centerCoordinate, rightCoordinate}); + linesList.add(lineString); + + for( int i = 1; i < coordinates.size() - 1; i++ ) { + Coordinate previous = coordinates.get(i - 1); + Coordinate current = coordinates.get(i); + Coordinate after = coordinates.get(i + 1); + + double firstAngle = azimuth(current, previous); + double secondAngle = azimuth(current, after); + + double a1 = min(firstAngle, secondAngle); + double a2 = max(firstAngle, secondAngle); + + double centerAngle = a1 + (a2 - a1) / 2.0; + + AffineTransformation rotationInstance = AffineTransformation.rotationInstance(-toRadians(centerAngle), current.x, + current.y); + + LineString vertical = geomFactory.createLineString(new Coordinate[]{new Coordinate(current.x, current.y + halfWidth), + current, new Coordinate(current.x, current.y - halfWidth)}); + Geometry transformed = rotationInstance.transform(vertical); + linesList.add((LineString) transformed); + } + + // last section + centerCoordinate = coordinates.get(coordinates.size() - 1); + LineSegment l2 = new LineSegment(centerCoordinate, coordinates.get(coordinates.size() - 2)); + leftCoordinate = l2.pointAlongOffset(0.0, halfWidth); + rightCoordinate = l2.pointAlongOffset(0.0, -halfWidth); + lineString = geomFactory.createLineString(new Coordinate[]{leftCoordinate, centerCoordinate, rightCoordinate}); + linesList.add(lineString); + + return linesList; + } + + /** + * Returns the section line at a given interval along the line. + * + *

                + * The returned lines are digitized from left to right and contain also the + * center point. + *

                + *

                + * Note that first and last coordinate's section are also added, making it + * likely that the interval between the last two coordinates is less + * than the supplied interval. + *

                + * + * + * @param line the line to use. + * @param interval the interval to use as distance between coordinates. Has to be > 0. + * @param width the total width of the section. + * @return the list of coordinates. + * @param startFrom if > 0, it defines the initial distance to jump. + * @param endAt if > 0, it defines where to end, even if the line is longer. + * @return the list of sections lines at a given interval. + */ + public static List getSectionsAtInterval( LineString line, double interval, double width, double startFrom, + double endAt ) { + if (interval <= 0) { + throw new IllegalArgumentException("Interval needs to be > 0."); + } + double length = line.getLength(); + if (startFrom < 0) { + startFrom = 0.0; + } + if (endAt < 0) { + endAt = length; + } + + double halfWidth = width / 2.0; + List linesList = new ArrayList(); + + LengthIndexedLine indexedLine = new LengthIndexedLine(line); + double runningLength = startFrom; + while( runningLength < endAt ) { + Coordinate centerCoordinate = indexedLine.extractPoint(runningLength); + Coordinate leftCoordinate = indexedLine.extractPoint(runningLength, -halfWidth); + Coordinate rightCoordinate = indexedLine.extractPoint(runningLength, halfWidth); + LineString lineString = geomFactory.createLineString(new Coordinate[]{leftCoordinate, centerCoordinate, + rightCoordinate}); + linesList.add(lineString); + runningLength = runningLength + interval; + } + Coordinate centerCoordinate = indexedLine.extractPoint(endAt); + Coordinate leftCoordinate = indexedLine.extractPoint(endAt, -halfWidth); + Coordinate rightCoordinate = indexedLine.extractPoint(endAt, halfWidth); + LineString lineString = geomFactory.createLineString(new Coordinate[]{leftCoordinate, centerCoordinate, rightCoordinate}); + linesList.add(lineString); + + return linesList; + } + + /** + * Pack a list of geometries in a {@link STRtree}. + * + *

                Note that the tree can't be modified once the query method has been called first.

                + * + * @param geometries the list of geometries. + * @return the {@link STRtree}. + */ + public static STRtree geometriesToSRTree( List geometries ) { + STRtree tree = new STRtree(geometries.size()); + for( Geometry geometry : geometries ) { + tree.insert(geometry.getEnvelopeInternal(), geometry); + } + return tree; + } + + /** + * {@link Polygon} by {@link LineString} split. + * + *

                From JTS ml: http://lists.refractions.net/pipermail/jts-devel/2008-September/002666.html

                + * + * @param polygon the input polygon. + * @param line the input line to use to split. + * @return the list of split polygons. + */ + public static List splitPolygon( Polygon polygon, LineString line ) { + /* + * Use MCIndexNoder to node the polygon and linestring together, + * Polygonizer to polygonize the noded edges, and then PointLocater + * to determine which of the resultant polygons correspond to + * the input polygon. + */ + IntersectionAdder _intersector = new IntersectionAdder(new RobustLineIntersector()); + MCIndexNoder mci = new MCIndexNoder(); + mci.setSegmentIntersector(_intersector); + NodedSegmentString pSeg = new NodedSegmentString(polygon.getCoordinates(), null); + NodedSegmentString lSeg = new NodedSegmentString(line.getCoordinates(), null); + List nodesSegmentStringList = new ArrayList(); + nodesSegmentStringList.add(pSeg); + nodesSegmentStringList.add(lSeg); + mci.computeNodes(nodesSegmentStringList); + Polygonizer polygonizer = new Polygonizer(); + List lsList = new ArrayList(); + for( Object o : mci.getMonotoneChains() ) { + MonotoneChain mtc = (MonotoneChain) o; + LineString l = gf().createLineString(mtc.getCoordinates()); + lsList.add(l); + } + Geometry nodedLineStrings = lsList.get(0); + for( int i = 1; i < lsList.size(); i++ ) { + nodedLineStrings = nodedLineStrings.union(lsList.get(i)); + } + polygonizer.add(nodedLineStrings); + @SuppressWarnings("unchecked") + Collection polygons = polygonizer.getPolygons(); + List newPolygons = new ArrayList(); + PointLocator pl = new PointLocator(); + for( Polygon p : polygons ) { + if (pl.locate(p.getInteriorPoint().getCoordinate(), p) == Location.INTERIOR) { + newPolygons.add(p); + } + } + return newPolygons; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/CoupledFieldsMoments.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/CoupledFieldsMoments.java index 85aade8e7..fe24d47bb 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/CoupledFieldsMoments.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/CoupledFieldsMoments.java @@ -1,152 +1,152 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.math; - -import static org.jgrasstools.gears.libs.modules.ModelsEngine.doubleNMoment; -import static org.jgrasstools.gears.libs.modules.ModelsEngine.split2realvectors; -import static org.jgrasstools.gears.libs.modules.ModelsEngine.vectorizeDoubleMatrix; - -import java.awt.image.RenderedImage; - -import org.jgrasstools.gears.i18n.GearsMessageHandler; -import org.jgrasstools.gears.libs.modules.SplitVectors; -import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; -import org.jgrasstools.gears.utils.sorting.QuickSortAlgorithm; - -/** - *

                - * The cb model (coupledfieldmoments). - * - *

                It - * calculates the histogram of a set of data contained in a matrix with respect - * to the set of data contained in another matrix. In substance, a map of - * R2 ⇒ R2, in which each point of a bidimensional - * system (identified by the values contained in a matrix) is mapped in a second - * bidimensional system, is produced. The data of the first set are then grouped - * in a prefixed number of intervals and the mean value of the independent - * variable for each interval is calculated. To every interval corresponds a - * certain set of values of the second set, of which the mean value is - * calculated, and a designate number of moments which can be either centered, - * if the functioning mode is ′histogram′, or non-centered, if the - * mode is ′moments′. If the number of intervals assigned is lesser - * than one, the data are subdivided in classes of data having the same - * abscissa.
                - *

                - *

                - *

                Inputs:
                - *
                - *
                  - *
                1. the file containing the data of the independent variable;
                2. - *
                3. the file containing the data which will be used as dependent variable;
                4. - *
                5. the first moment to calculate;
                6. - *
                7. the last moment to calculate;
                8. - *
                9. the insertion of an optional comment is also requested;
                10. - *
                - *

                - * - *

                Returns:
                - *
                - *
                - *
                  - *
                1. file containing: 1) the number of elements in each interval; 2) the mean - * value of the data in abscissa; 3) the mean value of the data in ordinate; - * n+2) the n-esimal moment of the data in ordinate.
                2. - *
                - *

                - *

                - *

                - * Note: The program uses the memory intensely. Therefore if we decide to have - * so many intervals as the data in abscissa, the program could not function - * correctly. Moreover the program assumes that the real data are preceded by - * two arrays, like in the files derived from a DEM. - *

                - */ -public class CoupledFieldsMoments { - public double[][] process( RenderedImage map1RI, RenderedImage map2RI, int pBins, int pFirst, int pLast, - IJGTProgressMonitor pm, int binmode ) { - if (map2RI == null) { - map2RI = map1RI; - } - GearsMessageHandler msg = GearsMessageHandler.getInstance(); - - pm.message(msg.message("cb.vectorize")); - double[] U = vectorizeDoubleMatrix(map1RI); - double[] T = null; - QuickSortAlgorithm t = new QuickSortAlgorithm(pm); - if (map2RI == null) { - T = U; - t.sort(U, null); - } else { - T = vectorizeDoubleMatrix(map2RI); - t.sort(U, T); - } - - SplitVectors theSplit = new SplitVectors(); - int num_max = 1000; - /* - * if (bintype == 1) { - */ - pm.message(msg.message("cb.splitvector")); - split2realvectors(U, T, theSplit, pBins, num_max, pm); - /* - * } else { delta = FluidUtils.exponentialsplit2realvectors(U, T, - * theSplit, N, num_max, base); } - */ - - pm.message(msg.message("cb.creatematrix")); - double[][] outCb = new double[theSplit.splitIndex.length][pLast - pFirst + 3]; - binmode = 1; // kept for future expansion - if (binmode == 1) // always true for now, other modes not implemented yet - { - for( int h = 0; h < theSplit.splitIndex.length; h++ ) { - outCb[h][0] = doubleNMoment(theSplit.splitValues1[h], (int) theSplit.splitIndex[h], 0.0, 1.0, pm); - outCb[h][1] = theSplit.splitIndex[h]; - outCb[h][2] = doubleNMoment(theSplit.splitValues2[h], (int) theSplit.splitIndex[h], 0.0, 1.0, pm); - if (pFirst == 1) - pFirst++; - for( int k = pFirst; k <= pLast; k++ ) { - outCb[h][k - pFirst + 3] = doubleNMoment(theSplit.splitValues2[h], (int) theSplit.splitIndex[h], outCb[h][1], - (double) k, pm); - } - } - } - // else if (binmode == 2) // why is this exactly the same as the mode - // // 'H' ??? - // { - // for( int h = 0; h < theSplit.splittedindex.length; h++ ) { - // moments[h][0] = - // FluidUtils.double_n_moment(theSplit.splittedvalues1[h], - // (int) theSplit.splittedindex[h], 0.0, 1.0); - // moments[h][1] = - // FluidUtils.double_n_moment(theSplit.splittedvalues2[h], - // (int) theSplit.splittedindex[h], 0.0, 1.0); - // - // if (firstmoment == 1) - // firstmoment++; - // for( int k = firstmoment; k <= secondmoment; k++ ) { - // moments[h][k - firstmoment + 2] = FluidUtils.double_n_moment( - // theSplit.splittedvalues2[h], (int) theSplit.splittedindex[h], - // moments[h][k - firstmoment + 1], (double) k); - // } - // } - // } - - return outCb; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.math; + +import static org.jgrasstools.gears.libs.modules.ModelsEngine.doubleNMoment; +import static org.jgrasstools.gears.libs.modules.ModelsEngine.split2realvectors; +import static org.jgrasstools.gears.libs.modules.ModelsEngine.vectorizeDoubleMatrix; + +import java.awt.image.RenderedImage; + +import org.jgrasstools.gears.i18n.GearsMessageHandler; +import org.jgrasstools.gears.libs.modules.SplitVectors; +import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor; +import org.jgrasstools.gears.utils.sorting.QuickSortAlgorithm; + +/** + *

                + * The cb model (coupledfieldmoments). + * + *

                It + * calculates the histogram of a set of data contained in a matrix with respect + * to the set of data contained in another matrix. In substance, a map of + * R2 ⇒ R2, in which each point of a bidimensional + * system (identified by the values contained in a matrix) is mapped in a second + * bidimensional system, is produced. The data of the first set are then grouped + * in a prefixed number of intervals and the mean value of the independent + * variable for each interval is calculated. To every interval corresponds a + * certain set of values of the second set, of which the mean value is + * calculated, and a designate number of moments which can be either centered, + * if the functioning mode is ′histogram′, or non-centered, if the + * mode is ′moments′. If the number of intervals assigned is lesser + * than one, the data are subdivided in classes of data having the same + * abscissa.
                + *

                + *

                + *

                Inputs:
                + *
                + *
                  + *
                1. the file containing the data of the independent variable;
                2. + *
                3. the file containing the data which will be used as dependent variable;
                4. + *
                5. the first moment to calculate;
                6. + *
                7. the last moment to calculate;
                8. + *
                9. the insertion of an optional comment is also requested;
                10. + *
                + *

                + * + *

                Returns:
                + *
                + *
                + *
                  + *
                1. file containing: 1) the number of elements in each interval; 2) the mean + * value of the data in abscissa; 3) the mean value of the data in ordinate; + * n+2) the n-esimal moment of the data in ordinate.
                2. + *
                + *

                + *

                + *

                + * Note: The program uses the memory intensely. Therefore if we decide to have + * so many intervals as the data in abscissa, the program could not function + * correctly. Moreover the program assumes that the real data are preceded by + * two arrays, like in the files derived from a DEM. + *

                + */ +public class CoupledFieldsMoments { + public double[][] process( RenderedImage map1RI, RenderedImage map2RI, int pBins, int pFirst, int pLast, + IJGTProgressMonitor pm, int binmode ) { + if (map2RI == null) { + map2RI = map1RI; + } + GearsMessageHandler msg = GearsMessageHandler.getInstance(); + + pm.message(msg.message("cb.vectorize")); + double[] U = vectorizeDoubleMatrix(map1RI); + double[] T = null; + QuickSortAlgorithm t = new QuickSortAlgorithm(pm); + if (map2RI == null) { + T = U; + t.sort(U, null); + } else { + T = vectorizeDoubleMatrix(map2RI); + t.sort(U, T); + } + + SplitVectors theSplit = new SplitVectors(); + int num_max = 1000; + /* + * if (bintype == 1) { + */ + pm.message(msg.message("cb.splitvector")); + split2realvectors(U, T, theSplit, pBins, num_max, pm); + /* + * } else { delta = FluidUtils.exponentialsplit2realvectors(U, T, + * theSplit, N, num_max, base); } + */ + + pm.message(msg.message("cb.creatematrix")); + double[][] outCb = new double[theSplit.splitIndex.length][pLast - pFirst + 3]; + binmode = 1; // kept for future expansion + if (binmode == 1) // always true for now, other modes not implemented yet + { + for( int h = 0; h < theSplit.splitIndex.length; h++ ) { + outCb[h][0] = doubleNMoment(theSplit.splitValues1[h], (int) theSplit.splitIndex[h], 0.0, 1.0, pm); + outCb[h][1] = theSplit.splitIndex[h]; + outCb[h][2] = doubleNMoment(theSplit.splitValues2[h], (int) theSplit.splitIndex[h], 0.0, 1.0, pm); + if (pFirst == 1) + pFirst++; + for( int k = pFirst; k <= pLast; k++ ) { + outCb[h][k - pFirst + 3] = doubleNMoment(theSplit.splitValues2[h], (int) theSplit.splitIndex[h], outCb[h][1], + (double) k, pm); + } + } + } + // else if (binmode == 2) // why is this exactly the same as the mode + // // 'H' ??? + // { + // for( int h = 0; h < theSplit.splittedindex.length; h++ ) { + // moments[h][0] = + // FluidUtils.double_n_moment(theSplit.splittedvalues1[h], + // (int) theSplit.splittedindex[h], 0.0, 1.0); + // moments[h][1] = + // FluidUtils.double_n_moment(theSplit.splittedvalues2[h], + // (int) theSplit.splittedindex[h], 0.0, 1.0); + // + // if (firstmoment == 1) + // firstmoment++; + // for( int k = firstmoment; k <= secondmoment; k++ ) { + // moments[h][k - firstmoment + 2] = FluidUtils.double_n_moment( + // theSplit.splittedvalues2[h], (int) theSplit.splittedindex[h], + // moments[h][k - firstmoment + 1], (double) k); + // } + // } + // } + + return outCb; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionDiffusionDischarge.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionDiffusionDischarge.java index 507b04215..5d8c80245 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionDiffusionDischarge.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionDiffusionDischarge.java @@ -1,69 +1,69 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.math.integration; - -import org.jgrasstools.gears.libs.modules.ModelsEngine; - -/** - * @author Andrea Antonello (www.hydrologis.com) - */ -public class ConvolutionDiffusionDischarge extends SimpsonIntegral implements IntegrableFunction { - - double[][] q = null; - private double D = 0f; - private double t = 0; - private double dist = 0; - private double c = 0; - - /** - */ - public ConvolutionDiffusionDischarge( double lowerintegrationlimit, double upperintegrationlimit, int maximalsteps, - double integrationaccuracy, double[][] discharge, double diffusionparam, double time, double distance, double celerity ) { - - lowerlimit = lowerintegrationlimit; - upperlimit = upperintegrationlimit; - maxsteps = maximalsteps; - accuracy = integrationaccuracy; - strapezoid = 0f; - q = discharge; - D = diffusionparam; - t = time; - c = celerity; - dist = distance; - - } - - public void updateTime( int newt ) { - t = newt; - } - - public double integrate() { - return simpson(); - - } - - protected double equation( double tau ) { - - double result = t <= tau ? 0.0 : tau > q[q.length - 1][0] ? 0.0 : 1 - / (Math.sqrt(4 * Math.PI * D * Math.pow((t - tau), 3))) * ModelsEngine.width_interpolate(q, tau, 0, 1) * dist - / (Math.exp(Math.pow(dist - c * (t - tau), 2) / (4 * D * (t - tau)))); - - return (double) result; - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.math.integration; + +import org.jgrasstools.gears.libs.modules.ModelsEngine; + +/** + * @author Andrea Antonello (www.hydrologis.com) + */ +public class ConvolutionDiffusionDischarge extends SimpsonIntegral implements IntegrableFunction { + + double[][] q = null; + private double D = 0f; + private double t = 0; + private double dist = 0; + private double c = 0; + + /** + */ + public ConvolutionDiffusionDischarge( double lowerintegrationlimit, double upperintegrationlimit, int maximalsteps, + double integrationaccuracy, double[][] discharge, double diffusionparam, double time, double distance, double celerity ) { + + lowerlimit = lowerintegrationlimit; + upperlimit = upperintegrationlimit; + maxsteps = maximalsteps; + accuracy = integrationaccuracy; + strapezoid = 0f; + q = discharge; + D = diffusionparam; + t = time; + c = celerity; + dist = distance; + + } + + public void updateTime( int newt ) { + t = newt; + } + + public double integrate() { + return simpson(); + + } + + protected double equation( double tau ) { + + double result = t <= tau ? 0.0 : tau > q[q.length - 1][0] ? 0.0 : 1 + / (Math.sqrt(4 * Math.PI * D * Math.pow((t - tau), 3))) * ModelsEngine.width_interpolate(q, tau, 0, 1) * dist + / (Math.exp(Math.pow(dist - c * (t - tau), 2) / (4 * D * (t - tau)))); + + return (double) result; + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionDiffusionWidth.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionDiffusionWidth.java index 265e91daf..3f523ccd7 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionDiffusionWidth.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionDiffusionWidth.java @@ -1,74 +1,74 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.math.integration; - -import org.jgrasstools.gears.libs.modules.ModelsEngine; - -/** - * @author Andrea Antonello (www.hydrologis.com) - */ -public class ConvolutionDiffusionWidth extends SimpsonIntegral implements IntegrableFunction { - - private double[][] ampi_diffusion = null; - - private double D = 0f; - - private double t = 0; - - /** - * Calculates the integral of the diffusion equation - * - * @param lowerintegrationlimit - the lower limit of integration - * @param upperintegrationlimit - the upper limit of integration - * @param maximalsteps- maximal number of bins in which to divide the interval - * @param integrationaccuracy - value of accuracy of integration - * @param ampiFunction - * @param diffusionparam - * @param time - * @param integrationtype - */ - public ConvolutionDiffusionWidth( double lowerintegrationlimit, double upperintegrationlimit, int maximalsteps, - double integrationaccuracy, double[][] ampiFunction, double diffusionparam, double time ) { - lowerlimit = lowerintegrationlimit; - upperlimit = upperintegrationlimit; - maxsteps = maximalsteps; - accuracy = integrationaccuracy; - strapezoid = 0f; - ampi_diffusion = ampiFunction; - D = diffusionparam; - t = time; - } - - public void updateTime( int newt ) { - t = newt; - } - - public double integrate() { - return simpson(); - } - - protected double equation( double x ) { - double result = x > ampi_diffusion[ampi_diffusion.length - 1][0] ? 0.0 : 1 - / Math.sqrt(4 * Math.PI * D * Math.pow(t, 3.0f)) * ModelsEngine.width_interpolate(ampi_diffusion, x, 0, 1) * x - / (Math.exp(Math.pow((x - t), 2) / (4 * D * t))); - - return result; - } - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.math.integration; + +import org.jgrasstools.gears.libs.modules.ModelsEngine; + +/** + * @author Andrea Antonello (www.hydrologis.com) + */ +public class ConvolutionDiffusionWidth extends SimpsonIntegral implements IntegrableFunction { + + private double[][] ampi_diffusion = null; + + private double D = 0f; + + private double t = 0; + + /** + * Calculates the integral of the diffusion equation + * + * @param lowerintegrationlimit - the lower limit of integration + * @param upperintegrationlimit - the upper limit of integration + * @param maximalsteps- maximal number of bins in which to divide the interval + * @param integrationaccuracy - value of accuracy of integration + * @param ampiFunction + * @param diffusionparam + * @param time + * @param integrationtype + */ + public ConvolutionDiffusionWidth( double lowerintegrationlimit, double upperintegrationlimit, int maximalsteps, + double integrationaccuracy, double[][] ampiFunction, double diffusionparam, double time ) { + lowerlimit = lowerintegrationlimit; + upperlimit = upperintegrationlimit; + maxsteps = maximalsteps; + accuracy = integrationaccuracy; + strapezoid = 0f; + ampi_diffusion = ampiFunction; + D = diffusionparam; + t = time; + } + + public void updateTime( int newt ) { + t = newt; + } + + public double integrate() { + return simpson(); + } + + protected double equation( double x ) { + double result = x > ampi_diffusion[ampi_diffusion.length - 1][0] ? 0.0 : 1 + / Math.sqrt(4 * Math.PI * D * Math.pow(t, 3.0f)) * ModelsEngine.width_interpolate(ampi_diffusion, x, 0, 1) * x + / (Math.exp(Math.pow((x - t), 2) / (4 * D * t))); + + return result; + } + } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionExponential.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionExponential.java index 5d15d1659..01d839578 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionExponential.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionExponential.java @@ -1,63 +1,63 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.math.integration; - -import org.jgrasstools.gears.utils.math.interpolation.LinearListInterpolator; - -/** - * @author Silvia Franceschi (www.hydrologis.com) - */ -public class ConvolutionExponential extends SimpsonIntegral implements IntegrableFunction { - - private double k = 0f; - private final LinearListInterpolator timeDischargeInterpolator; - - /** - * Calculates the integral of the exponential equation - * - * @param lowerintegrationlimit - * @param upperintegrationlimit - * @param maximalsteps - * @param integrationaccuracy - * @param invasoConstant - * @param timeDischargeInterpolator - */ - public ConvolutionExponential( double lowerintegrationlimit, double upperintegrationlimit, - int maximalsteps, double integrationaccuracy, double invasoConstant, - LinearListInterpolator timeDischargeInterpolator ) { - lowerlimit = lowerintegrationlimit; - upperlimit = upperintegrationlimit; - maxsteps = maximalsteps; - accuracy = integrationaccuracy; - this.timeDischargeInterpolator = timeDischargeInterpolator; - strapezoid = 0f; - k = invasoConstant; - } - - protected double equation( double time ) { - double d = (double) (1 / k * Math.exp(-(upperlimit - time) / k) * timeDischargeInterpolator - .linearInterpolateY(time).doubleValue()); - return d; - } - - public double integrate() { - return simpson(); - } - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.math.integration; + +import org.jgrasstools.gears.utils.math.interpolation.LinearListInterpolator; + +/** + * @author Silvia Franceschi (www.hydrologis.com) + */ +public class ConvolutionExponential extends SimpsonIntegral implements IntegrableFunction { + + private double k = 0f; + private final LinearListInterpolator timeDischargeInterpolator; + + /** + * Calculates the integral of the exponential equation + * + * @param lowerintegrationlimit + * @param upperintegrationlimit + * @param maximalsteps + * @param integrationaccuracy + * @param invasoConstant + * @param timeDischargeInterpolator + */ + public ConvolutionExponential( double lowerintegrationlimit, double upperintegrationlimit, + int maximalsteps, double integrationaccuracy, double invasoConstant, + LinearListInterpolator timeDischargeInterpolator ) { + lowerlimit = lowerintegrationlimit; + upperlimit = upperintegrationlimit; + maxsteps = maximalsteps; + accuracy = integrationaccuracy; + this.timeDischargeInterpolator = timeDischargeInterpolator; + strapezoid = 0f; + k = invasoConstant; + } + + protected double equation( double time ) { + double d = (double) (1 / k * Math.exp(-(upperlimit - time) / k) * timeDischargeInterpolator + .linearInterpolateY(time).doubleValue()); + return d; + } + + public double integrate() { + return simpson(); + } + } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionExponentialPeakflow.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionExponentialPeakflow.java index 94525f746..d8f3a012f 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionExponentialPeakflow.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/ConvolutionExponentialPeakflow.java @@ -1,63 +1,63 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.math.integration; - -import org.jgrasstools.gears.libs.modules.ModelsEngine; - -/** - * @author Silvia Franceschi (www.hydrologis.com) - */ -public class ConvolutionExponentialPeakflow extends SimpsonIntegral implements IntegrableFunction { - - private double k = 0f; - private double t = 0.0; - private final double[][] ampi_sub; - - /** - * Calculates the integral of the exponential equation - * - * @param lowerintegrationlimit - * @param upperintegrationlimit - * @param maximalsteps - * @param integrationaccuracy - * @param invasoConstant - * @param timeDischargeInterpolator - */ - public ConvolutionExponentialPeakflow( double lowerintegrationlimit, double upperintegrationlimit, int maximalsteps, - double integrationaccuracy, double[][] ampifunction, double invasoConstant, double time ) { - lowerlimit = lowerintegrationlimit; - upperlimit = upperintegrationlimit; - maxsteps = maximalsteps; - accuracy = integrationaccuracy; - ampi_sub = ampifunction; - strapezoid = 0f; - k = invasoConstant; - t = time; - } - - protected double equation( double time ) { - double d = 1.0 / k * Math.exp(-t / k) * ModelsEngine.width_interpolate(ampi_sub, time, 0, 1); - return d; - } - - public double integrate() { - return simpson(); - } - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.math.integration; + +import org.jgrasstools.gears.libs.modules.ModelsEngine; + +/** + * @author Silvia Franceschi (www.hydrologis.com) + */ +public class ConvolutionExponentialPeakflow extends SimpsonIntegral implements IntegrableFunction { + + private double k = 0f; + private double t = 0.0; + private final double[][] ampi_sub; + + /** + * Calculates the integral of the exponential equation + * + * @param lowerintegrationlimit + * @param upperintegrationlimit + * @param maximalsteps + * @param integrationaccuracy + * @param invasoConstant + * @param timeDischargeInterpolator + */ + public ConvolutionExponentialPeakflow( double lowerintegrationlimit, double upperintegrationlimit, int maximalsteps, + double integrationaccuracy, double[][] ampifunction, double invasoConstant, double time ) { + lowerlimit = lowerintegrationlimit; + upperlimit = upperintegrationlimit; + maxsteps = maximalsteps; + accuracy = integrationaccuracy; + ampi_sub = ampifunction; + strapezoid = 0f; + k = invasoConstant; + t = time; + } + + protected double equation( double time ) { + double d = 1.0 / k * Math.exp(-t / k) * ModelsEngine.width_interpolate(ampi_sub, time, 0, 1); + return d; + } + + public double integrate() { + return simpson(); + } + } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/IntegrableFunction.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/IntegrableFunction.java index 6b9d3c269..baefd5402 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/IntegrableFunction.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/IntegrableFunction.java @@ -1,32 +1,32 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.math.integration; - -/** - * @author Andrea Antonello (www.hydrologis.com) - */ -public interface IntegrableFunction { - /** - * Performs integration by means of the method of the function that - * implements it. - * - * @return the value of the integration - */ - double integrate(); -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.math.integration; + +/** + * @author Andrea Antonello (www.hydrologis.com) + */ +public interface IntegrableFunction { + /** + * Performs integration by means of the method of the function that + * implements it. + * + * @return the value of the integration + */ + double integrate(); +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/IntegralConstants.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/IntegralConstants.java index 63f3c8820..963e3759f 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/IntegralConstants.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/IntegralConstants.java @@ -1,38 +1,38 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.math.integration; - -/** - * @author Andrea Antonello (www.hydrologis.com) - */ -public interface IntegralConstants -{ - - /* - * convolution integral - */ - public double convolutionaccurancy = 0.0001; - public int convolutionmaxsteps = 20; - /* - * diffusion integral - */ - public double diffusionaccurancy = 0.0001; - public int diffusionmaxsteps = 25; - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.math.integration; + +/** + * @author Andrea Antonello (www.hydrologis.com) + */ +public interface IntegralConstants +{ + + /* + * convolution integral + */ + public double convolutionaccurancy = 0.0001; + public int convolutionmaxsteps = 20; + /* + * diffusion integral + */ + public double diffusionaccurancy = 0.0001; + public int diffusionmaxsteps = 25; + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/SimpsonIntegral.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/SimpsonIntegral.java index bb1e984ed..5b7b5beed 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/SimpsonIntegral.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/integration/SimpsonIntegral.java @@ -1,116 +1,116 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.math.integration; - -/** - * @author Andrea Antonello (www.hydrologis.com) - */ -public abstract class SimpsonIntegral { - - public static final int SIMPSON = 0; - public static final int TRAPEZOIDAL = 0; - - protected double strapezoid = 0f; - - protected double lowerlimit = 0f; - - protected double upperlimit = 0f; - - protected int maxsteps = 0; - - protected double accuracy = 0.0; - - /** - * Calculate the integral with the simpson method of the equation implemented in the method - * equation - * - * @return - * @throws Exception - */ - protected double simpson() { - double s = 0f; - double st = 0f; - double ost = 0f; - double os = 0f; - - for( int i = 1; i < maxsteps; i++ ) { - st = trapezoid(i); - - s = (4f * st - ost) / 3f; - - if (i > 5) { - if (Math.abs(s - os) < accuracy * Math.abs(os) || (s == 0f && os == 0f)) { - return s; - } - } - os = s; - ost = st; - - } - return 0d; - } - - /** - * Calculate the integral with the trapezoidal algorithm of the equation implemented in the - * method equation - * - * @param n - number of steps to perform - * @return - */ - protected double trapezoid( int n ) { - double x = 0; - double tnm = 0; - double sum = 0; - double del = 0; - int it = 0; - int j = 0; - - if (n == 1) { - strapezoid = 0.5f * (upperlimit - lowerlimit) - * (equation(lowerlimit) + equation(upperlimit)); - } else { - /* - * for (it = 1, j = 1; j < n - 1; j++) { it <<= 1; } - */ - it = (int) Math.pow(2.0, n - 1); - - tnm = (double) it; - del = (upperlimit - lowerlimit) / tnm; - x = lowerlimit + 0.5f * del; - for( sum = 0f, j = 1; j <= it; j++, x += del ) { - if (x >= upperlimit) { - System.out.println("hoi"); - } - sum += equation(x); - } - strapezoid = (double) (0.5f * (strapezoid + (upperlimit - lowerlimit) * sum / tnm)); - } - - return strapezoid; - } - - /** - * Equation to integrate - * - * @param x - point in which to calculate the function - * @return - */ - protected abstract double equation( double x ); - +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.math.integration; + +/** + * @author Andrea Antonello (www.hydrologis.com) + */ +public abstract class SimpsonIntegral { + + public static final int SIMPSON = 0; + public static final int TRAPEZOIDAL = 0; + + protected double strapezoid = 0f; + + protected double lowerlimit = 0f; + + protected double upperlimit = 0f; + + protected int maxsteps = 0; + + protected double accuracy = 0.0; + + /** + * Calculate the integral with the simpson method of the equation implemented in the method + * equation + * + * @return + * @throws Exception + */ + protected double simpson() { + double s = 0f; + double st = 0f; + double ost = 0f; + double os = 0f; + + for( int i = 1; i < maxsteps; i++ ) { + st = trapezoid(i); + + s = (4f * st - ost) / 3f; + + if (i > 5) { + if (Math.abs(s - os) < accuracy * Math.abs(os) || (s == 0f && os == 0f)) { + return s; + } + } + os = s; + ost = st; + + } + return 0d; + } + + /** + * Calculate the integral with the trapezoidal algorithm of the equation implemented in the + * method equation + * + * @param n - number of steps to perform + * @return + */ + protected double trapezoid( int n ) { + double x = 0; + double tnm = 0; + double sum = 0; + double del = 0; + int it = 0; + int j = 0; + + if (n == 1) { + strapezoid = 0.5f * (upperlimit - lowerlimit) + * (equation(lowerlimit) + equation(upperlimit)); + } else { + /* + * for (it = 1, j = 1; j < n - 1; j++) { it <<= 1; } + */ + it = (int) Math.pow(2.0, n - 1); + + tnm = (double) it; + del = (upperlimit - lowerlimit) / tnm; + x = lowerlimit + 0.5f * del; + for( sum = 0f, j = 1; j <= it; j++, x += del ) { + if (x >= upperlimit) { + System.out.println("hoi"); + } + sum += equation(x); + } + strapezoid = (double) (0.5f * (strapezoid + (upperlimit - lowerlimit) * sum / tnm)); + } + + return strapezoid; + } + + /** + * Equation to integrate + * + * @param x - point in which to calculate the function + * @return + */ + protected abstract double equation( double x ); + } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/interpolation/LinearListInterpolator.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/interpolation/LinearListInterpolator.java index 738b6fe05..4bbb3d24c 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/interpolation/LinearListInterpolator.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/interpolation/LinearListInterpolator.java @@ -1,132 +1,132 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.math.interpolation; - -import java.util.List; - -/** - * A class for doing linear interpolations on lists of X and Y. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class LinearListInterpolator implements Interpolator { - - private final List xList; - private final List yList; - private boolean isInverse = false; - - public LinearListInterpolator( List xList, List yList ) { - if (xList.size() != yList.size()) { - throw new IllegalArgumentException("The lists have to be of the same length."); - } - this.xList = xList; - this.yList = yList; - } - - /** - * A simple interpolation between existing numbers. - * - * @param xValue the value for which we want the y - * @return the y value - */ - public Double linearInterpolateY( Double xValue ) { - - Double first = xList.get(0); - Double last = xList.get(xList.size() - 1); - - // check out of range - if (first <= last) { - if (xValue < xList.get(0) || xValue > xList.get(xList.size() - 1)) { - return new Double(Double.NaN); - } - isInverse = false; - } else { - // inverse proportional - if (xValue > xList.get(0) || xValue < xList.get(xList.size() - 1)) { - return new Double(Double.NaN); - } - isInverse = true; - } - - for( int i = 0; i < xList.size(); i++ ) { - Double x2 = xList.get(i); - // if equal to a number in the list - if (x2.equals(xValue)) { - return yList.get(i); - }// else interpolate - else if ((!isInverse && x2 > xValue) || (isInverse && x2 < xValue)) { - double x1 = xList.get(i - 1); - double y1 = yList.get(i - 1); - double y2 = yList.get(i); - - double y = (y2 - y1) * (xValue - x1) / (x2 - x1) + y1; - return y; - } - } - return new Double(Double.NaN); - } - - /** - * A simple interpolation between existing numbers. - * - * @param yValue the value for which we want the x - * @return the x value - */ - public Double linearInterpolateX( Double yValue ) { - - Double first = yList.get(0); - Double last = yList.get(yList.size() - 1); - - // check out of range - if (first <= last) { - if (yValue < yList.get(0) || yValue > yList.get(yList.size() - 1)) { - return new Double(Double.NaN); - } - isInverse = false; - } else { - // inverse proportional - if (yValue > yList.get(0) || yValue < yList.get(yList.size() - 1)) { - return new Double(Double.NaN); - } - isInverse = true; - } - - for( int i = 0; i < yList.size(); i++ ) { - Double y2 = yList.get(i); - // if equal to a number in the list - if (y2.equals(yValue)) { - return xList.get(i); - }// else interpolate - else if ((!isInverse && y2 > yValue) || (isInverse && y2 < yValue)) { - double y1 = yList.get(i - 1); - double x1 = xList.get(i - 1); - double x2 = xList.get(i); - - double x = (x2 - x1) * (yValue - y1) / (y2 - y1) + x1; - return x; - } - } - return new Double(Double.NaN); - } - - public double getInterpolated( double x ) { - return linearInterpolateY(x); - } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.math.interpolation; + +import java.util.List; + +/** + * A class for doing linear interpolations on lists of X and Y. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class LinearListInterpolator implements Interpolator { + + private final List xList; + private final List yList; + private boolean isInverse = false; + + public LinearListInterpolator( List xList, List yList ) { + if (xList.size() != yList.size()) { + throw new IllegalArgumentException("The lists have to be of the same length."); + } + this.xList = xList; + this.yList = yList; + } + + /** + * A simple interpolation between existing numbers. + * + * @param xValue the value for which we want the y + * @return the y value + */ + public Double linearInterpolateY( Double xValue ) { + + Double first = xList.get(0); + Double last = xList.get(xList.size() - 1); + + // check out of range + if (first <= last) { + if (xValue < xList.get(0) || xValue > xList.get(xList.size() - 1)) { + return new Double(Double.NaN); + } + isInverse = false; + } else { + // inverse proportional + if (xValue > xList.get(0) || xValue < xList.get(xList.size() - 1)) { + return new Double(Double.NaN); + } + isInverse = true; + } + + for( int i = 0; i < xList.size(); i++ ) { + Double x2 = xList.get(i); + // if equal to a number in the list + if (x2.equals(xValue)) { + return yList.get(i); + }// else interpolate + else if ((!isInverse && x2 > xValue) || (isInverse && x2 < xValue)) { + double x1 = xList.get(i - 1); + double y1 = yList.get(i - 1); + double y2 = yList.get(i); + + double y = (y2 - y1) * (xValue - x1) / (x2 - x1) + y1; + return y; + } + } + return new Double(Double.NaN); + } + + /** + * A simple interpolation between existing numbers. + * + * @param yValue the value for which we want the x + * @return the x value + */ + public Double linearInterpolateX( Double yValue ) { + + Double first = yList.get(0); + Double last = yList.get(yList.size() - 1); + + // check out of range + if (first <= last) { + if (yValue < yList.get(0) || yValue > yList.get(yList.size() - 1)) { + return new Double(Double.NaN); + } + isInverse = false; + } else { + // inverse proportional + if (yValue > yList.get(0) || yValue < yList.get(yList.size() - 1)) { + return new Double(Double.NaN); + } + isInverse = true; + } + + for( int i = 0; i < yList.size(); i++ ) { + Double y2 = yList.get(i); + // if equal to a number in the list + if (y2.equals(yValue)) { + return xList.get(i); + }// else interpolate + else if ((!isInverse && y2 > yValue) || (isInverse && y2 < yValue)) { + double y1 = yList.get(i - 1); + double x1 = xList.get(i - 1); + double x2 = xList.get(i); + + double x = (x2 - x1) * (yValue - y1) / (y2 - y1) + x1; + return x; + } + } + return new Double(Double.NaN); + } + + public double getInterpolated( double x ) { + return linearInterpolateY(x); + } + +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/ColumnVector.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/ColumnVector.java index 21f1607d1..e16d929e4 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/ColumnVector.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/ColumnVector.java @@ -1,156 +1,156 @@ -package org.jgrasstools.gears.utils.math.matrixes; - -/** - * From: Java Number Cruncher - * The Java Programmer's Guide to Numerical Computation - * by Ronald Mak - * - * A column vector. - */ -public class ColumnVector extends Matrix -{ - //--------------// - // Constructors // - //--------------// - - /** - * Constructor. - * @param n the number of elements - */ - public ColumnVector(int n) { super(n, 1); } - - /** - * Constructor. - * @param values the array of values - */ - public ColumnVector(double values[]) { set(values); } - - /** - * Constructor. - * @param m the matrix (only the first column used) - */ - private ColumnVector(Matrix m) { set(m); } - - //---------// - // Getters // - //---------// - - /** - * Return this column vector's size. - */ - public int size() { return nRows; } - - /** - * Return the i'th value of the vector. - * @param i the index - * @return the value - */ - public double at(int i) { return values[i][0]; } - - /** - * Copy the values of this matrix. - * @return the copied values - */ - public double[] copyValues1D() - { - double v[] = new double[nRows]; - - for (int r = 0; r < nRows; ++r) { - v[r] = values[r][0]; - } - - return v; - } - - //---------// - // Setters // - //---------// - - /** - * Set this column vector from a matrix. - * Only the first column is used. - * @param m the matrix - */ - private void set(Matrix m) - { - this.nRows = m.nRows; - this.nCols = 1; - this.values = m.values; - } - - /** - * Set this column vector from an array of values. - * @param values the array of values - */ - protected void set(double values[]) - { - this.nRows = values.length; - this.nCols = 1; - this.values = new double[nRows][1]; - - for (int r = 0; r < nRows; ++r) { - this.values[r][0] = values[r]; - } - } - - /** - * Set the value of the i'th element. - * @param i the index - * @param value the value - */ - public void set(int i, double value) { values[i][0] = value; } - - //-------------------// - // Vector operations // - //-------------------// - - /** - * Add another column vector to this column vector. - * @param cv the other column vector - * @return the sum column vector - * @throws numbercruncher.MatrixException for invalid size - */ - public ColumnVector add(ColumnVector cv) throws MatrixException - { - return new ColumnVector(super.add(cv)); - } - - /** - * Subtract another column vector from this column vector. - * @param cv the other column vector - * @return the sum column vector - * @throws numbercruncher.MatrixException for invalid size - */ - public ColumnVector subtract(ColumnVector cv) - throws MatrixException - { - return new ColumnVector(super.subtract(cv)); - } - - /** - * Compute the Euclidean norm. - * @return the norm - */ - public double norm() - { - double t = 0; - - for (int r = 0; r < nRows; ++r) { - double v = values[r][0]; - t += v*v; - } - - return (double) Math.sqrt(t); - } - - /** - * Print the vector values. - */ - public void print() - { - for (int r = 0; r < nRows; ++r) { - System.out.print(" " + values[r][0]); - } - System.out.println(); - } +package org.jgrasstools.gears.utils.math.matrixes; + +/** + * From: Java Number Cruncher + * The Java Programmer's Guide to Numerical Computation + * by Ronald Mak + * + * A column vector. + */ +public class ColumnVector extends Matrix +{ + //--------------// + // Constructors // + //--------------// + + /** + * Constructor. + * @param n the number of elements + */ + public ColumnVector(int n) { super(n, 1); } + + /** + * Constructor. + * @param values the array of values + */ + public ColumnVector(double values[]) { set(values); } + + /** + * Constructor. + * @param m the matrix (only the first column used) + */ + private ColumnVector(Matrix m) { set(m); } + + //---------// + // Getters // + //---------// + + /** + * Return this column vector's size. + */ + public int size() { return nRows; } + + /** + * Return the i'th value of the vector. + * @param i the index + * @return the value + */ + public double at(int i) { return values[i][0]; } + + /** + * Copy the values of this matrix. + * @return the copied values + */ + public double[] copyValues1D() + { + double v[] = new double[nRows]; + + for (int r = 0; r < nRows; ++r) { + v[r] = values[r][0]; + } + + return v; + } + + //---------// + // Setters // + //---------// + + /** + * Set this column vector from a matrix. + * Only the first column is used. + * @param m the matrix + */ + private void set(Matrix m) + { + this.nRows = m.nRows; + this.nCols = 1; + this.values = m.values; + } + + /** + * Set this column vector from an array of values. + * @param values the array of values + */ + protected void set(double values[]) + { + this.nRows = values.length; + this.nCols = 1; + this.values = new double[nRows][1]; + + for (int r = 0; r < nRows; ++r) { + this.values[r][0] = values[r]; + } + } + + /** + * Set the value of the i'th element. + * @param i the index + * @param value the value + */ + public void set(int i, double value) { values[i][0] = value; } + + //-------------------// + // Vector operations // + //-------------------// + + /** + * Add another column vector to this column vector. + * @param cv the other column vector + * @return the sum column vector + * @throws numbercruncher.MatrixException for invalid size + */ + public ColumnVector add(ColumnVector cv) throws MatrixException + { + return new ColumnVector(super.add(cv)); + } + + /** + * Subtract another column vector from this column vector. + * @param cv the other column vector + * @return the sum column vector + * @throws numbercruncher.MatrixException for invalid size + */ + public ColumnVector subtract(ColumnVector cv) + throws MatrixException + { + return new ColumnVector(super.subtract(cv)); + } + + /** + * Compute the Euclidean norm. + * @return the norm + */ + public double norm() + { + double t = 0; + + for (int r = 0; r < nRows; ++r) { + double v = values[r][0]; + t += v*v; + } + + return (double) Math.sqrt(t); + } + + /** + * Print the vector values. + */ + public void print() + { + for (int r = 0; r < nRows; ++r) { + System.out.print(" " + values[r][0]); + } + System.out.println(); + } } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/IdentityMatrix.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/IdentityMatrix.java index eafcd6f57..c74b5dea7 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/IdentityMatrix.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/IdentityMatrix.java @@ -1,32 +1,32 @@ -package org.jgrasstools.gears.utils.math.matrixes; - -/** - * From: Java Number Cruncher - * The Java Programmer's Guide to Numerical Computation - * by Ronald Mak - */ -public class IdentityMatrix extends SquareMatrix -{ - /** - * Constructor. - * @param n the number of rows == the number of columns - */ - public IdentityMatrix(int n) - { - super(n); - for (int i = 0; i < n; ++i) values[i][i] = 1; - } - - /** - * Convert a square matrix into an identity matrix. - * @param sm the square matrix to convert - */ - public static void convert(SquareMatrix sm) - { - for (int r = 0; r < sm.nRows; ++r) { - for (int c = 0; c < sm.nCols; ++c) { - sm.values[r][c] = (r == c) ? 1 : 0; - } - } - } +package org.jgrasstools.gears.utils.math.matrixes; + +/** + * From: Java Number Cruncher + * The Java Programmer's Guide to Numerical Computation + * by Ronald Mak + */ +public class IdentityMatrix extends SquareMatrix +{ + /** + * Constructor. + * @param n the number of rows == the number of columns + */ + public IdentityMatrix(int n) + { + super(n); + for (int i = 0; i < n; ++i) values[i][i] = 1; + } + + /** + * Convert a square matrix into an identity matrix. + * @param sm the square matrix to convert + */ + public static void convert(SquareMatrix sm) + { + for (int r = 0; r < sm.nRows; ++r) { + for (int c = 0; c < sm.nCols; ++c) { + sm.values[r][c] = (r == c) ? 1 : 0; + } + } + } } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/Matrix.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/Matrix.java index 260530109..450656a6e 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/Matrix.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/Matrix.java @@ -1,400 +1,400 @@ -package org.jgrasstools.gears.utils.math.matrixes; - -/** - * From: Java Number Cruncher - * The Java Programmer's Guide to Numerical Computation - * by Ronald Mak - * - * - * The matrix class. - */ -public class Matrix -{ - /** number of rows */ protected int nRows; - /** number of columns */ protected int nCols; - /** 2-d array of values */ protected double values[][]; - - //--------------// - // Constructors // - //--------------// - - /** - * Default constructor. - */ - protected Matrix() {} - - /** - * Constructor. - * @param rowCount the number of rows - * @param colCount the number of columns - */ - public Matrix(int rowCount, int colCount) - { - nRows = (rowCount > 0) ? rowCount : 1; - nCols = (colCount > 0) ? colCount : 1; - values = new double[nRows][nCols]; - } - - /** - * Constructor. - * @param values the 2-d array of values - */ - public Matrix(double values[][]) { set(values); } - - //---------// - // Getters // - //---------// - - /** - * Get the row count. - * @return the row count - */ - public int rowCount() { return nRows; } - - /** - * Get the column count. - * @return the column count - */ - public int columnCount() { return nCols; } - - /** - * Get the value of element [r,c] in the matrix. - * @param r the row index - * @param c the column index - * @return the value - * @throws numbercruncher.MatrixException for an invalid index - */ - public double at(int r, int c) throws MatrixException - { - if ((r < 0) || (r >= nRows) || (c < 0) || (c >= nCols)) { - throw new MatrixException(MatrixException.INVALID_INDEX); - } - - return values[r][c]; - } - - /** - * Get a row of this matrix. - * @param r the row index - * @return the row as a row vector - * @throws numbercruncher.MatrixException for an invalid index - */ - public RowVector getRow(int r) throws MatrixException - { - if ((r < 0) || (r >= nRows)) { - throw new MatrixException(MatrixException.INVALID_INDEX); - } - - RowVector rv = new RowVector(nCols); - for (int c = 0; c < nCols; ++c) { - rv.values[0][c] = this.values[r][c]; - } - - return rv; - } - - /** - * Get a column of this matrix. - * @param c the column index - * @return the column as a column vector - * @throws numbercruncher.MatrixException for an invalid index - */ - public ColumnVector getColumn(int c) throws MatrixException - { - if ((c < 0) || (c >= nCols)) { - throw new MatrixException(MatrixException.INVALID_INDEX); - } - - ColumnVector cv = new ColumnVector(nRows); - for (int r = 0; r < nRows; ++r) { - cv.values[r][0] = this.values[r][c]; - } - - return cv; - } - - /** - * Copy the values of this matrix. - * @return the values - */ - public double[][] values() { return values; } - - /** - * Copy the values of this matrix. - * @return the copied values - */ - public double[][] copyValues2D() - { - double v[][] = new double[nRows][nCols]; - - for (int r = 0; r < nRows; ++r) { - for (int c = 0; c < nCols; ++c) { - v[r][c] = values[r][c]; - } - } - - return v; - } - - //---------// - // Setters // - //---------// - - /** - * Set the value of element [r,c]. - * @param r the row index - * @param c the column index - * @param value the value - * @throws numbercruncher.MatrixException for an invalid index - */ - public void set(int r, int c, double value) throws MatrixException - { - if ((r < 0) || (r >= nRows) || (c < 0) || (c >= nCols)) { - throw new MatrixException(MatrixException.INVALID_INDEX); - } - - values[r][c] = value; - } - - /** - * Set this matrix from a 2-d array of values. - * If the rows do not have the same length, then the matrix - * column count is the length of the shortest row. - * @param values the 2-d array of values - */ - protected void set(double values[][]) - { - this.nRows = values.length; - this.nCols = values[0].length; - this.values = values; - - for (int r = 1; r < nRows; ++r) { - nCols = Math.min(nCols, values[r].length); - } - } - - /** - * Set a row of this matrix from a row vector. - * @param rv the row vector - * @param r the row index - * @throws numbercruncher.MatrixException for an invalid index or - * an invalid vector size - */ - public void setRow(RowVector rv, int r) throws MatrixException - { - if ((r < 0) || (r >= nRows)) { - throw new MatrixException(MatrixException.INVALID_INDEX); - } - if (nCols != rv.nCols) { - throw new MatrixException( - MatrixException.INVALID_DIMENSIONS); - } - - for (int c = 0; c < nCols; ++c) { - this.values[r][c] = rv.values[0][c]; - } - } - - /** - * Set a column of this matrix from a column vector. - * @param cv the column vector - * @param c the column index - * @throws numbercruncher.MatrixException for an invalid index or - * an invalid vector size - */ - public void setColumn(ColumnVector cv, int c) - throws MatrixException - { - if ((c < 0) || (c >= nCols)) { - throw new MatrixException(MatrixException.INVALID_INDEX); - } - if (nRows != cv.nRows) { - throw new MatrixException( - MatrixException.INVALID_DIMENSIONS); - } - - for (int r = 0; r < nRows; ++r) { - this.values[r][c] = cv.values[r][0]; - } - } - - //-------------------// - // Matrix operations // - //-------------------// - - /** - * Return the transpose of this matrix. - * @return the transposed matrix - */ - public Matrix transpose() - { - double tv[][] = new double[nCols][nRows]; // transposed values - - // Set the values of the transpose. - for (int r = 0; r < nRows; ++r) { - for (int c = 0; c < nCols; ++c) { - tv[c][r] = values[r][c]; - } - } - - return new Matrix(tv); - } - - /** - * Add another matrix to this matrix. - * @param m the matrix addend - * @return the sum matrix - * @throws numbercruncher.MatrixException for invalid size - */ - public Matrix add(Matrix m) throws MatrixException - { - // Validate m's size. - if ((nRows != m.nRows) && (nCols != m.nCols)) { - throw new MatrixException( - MatrixException.INVALID_DIMENSIONS); - } - - double sv[][] = new double[nRows][nCols]; // sum values - - // Compute values of the sum. - for (int r = 0; r < nRows; ++r) { - for (int c = 0; c < nCols; ++c) { - sv[r][c] = values[r][c] + m.values[r][c]; - } - } - - return new Matrix(sv); - } - - /** - * Subtract another matrix from this matrix. - * @param m the matrix subrrahend - * @return the difference matrix - * @throws numbercruncher.MatrixException for invalid size - */ - public Matrix subtract(Matrix m) throws MatrixException - { - // Validate m's size. - if ((nRows != m.nRows) && (nCols != m.nCols)) { - throw new MatrixException( - MatrixException.INVALID_DIMENSIONS); - } - - double dv[][] = new double[nRows][nCols]; // difference values - - // Compute values of the difference. - for (int r = 0; r < nRows; ++r) { - for (int c = 0; c < nCols; ++c) { - dv[r][c] = values[r][c] - m.values[r][c]; - } - } - - return new Matrix(dv); - } - - /** - * Multiply this matrix by a constant. - * @param k the constant - * @return the product matrix - */ - public Matrix multiply(double k) - { - double pv[][] = new double[nRows][nCols]; // product values - - // Compute values of the product. - for (int r = 0; r < nRows; ++r) { - for (int c = 0; c < nCols; ++c) { - pv[r][c] = k*values[r][c]; - } - } - - return new Matrix(pv); - } - - /** - * Multiply this matrix by another matrix. - * @param m the matrix multiplier - * @return the product matrix - * @throws numbercruncher.MatrixException for invalid size - */ - public Matrix multiply(Matrix m) throws MatrixException - { - // Validate m's dimensions. - if (nCols != m.nRows) { - throw new MatrixException( - MatrixException.INVALID_DIMENSIONS); - } - - double pv[][] = new double[nRows][m.nCols]; // product values - - // Compute values of the product. - for (int r = 0; r < nRows; ++r) { - for (int c = 0; c < m.nCols; ++c) { - double dot = 0; - for (int k = 0; k < nCols; ++k) { - dot += values[r][k] * m.values[k][c]; - } - pv[r][c] = dot; - } - } - - return new Matrix(pv); - } - - /** - * Multiply this matrix by a column vector: this*cv - * @param cv the column vector - * @return the product column vector - * @throws numbercruncher.MatrixException for invalid size - */ - public ColumnVector multiply(ColumnVector cv) - throws MatrixException - { - // Validate cv's size. - if (nRows != cv.nRows) { - throw new MatrixException( - MatrixException.INVALID_DIMENSIONS); - } - - double pv[] = new double[nRows]; // product values - - // Compute the values of the product. - for (int r = 0; r < nRows; ++r) { - double dot = 0; - for (int c = 0; c < nCols; ++c) { - dot += values[r][c] * cv.values[c][0]; - } - pv[r] = dot; - } - - return new ColumnVector(pv); - } - - /** - * Multiply a row vector by this matrix: rv*this - * @param rv the row vector - * @return the product row vector - * @throws numbercruncher.MatrixException for invalid size - */ - public RowVector multiply(RowVector rv) throws MatrixException - { - // Validate rv's size. - if (nCols != rv.nCols) { - throw new MatrixException( - MatrixException.INVALID_DIMENSIONS); - } - - double pv[] = new double[nRows]; // product values - - // Compute the values of the product. - for (int c = 0; c < nCols; ++c) { - double dot = 0; - for (int r = 0; r < nRows; ++r) { - dot += rv.values[0][r] * values[r][c]; - } - pv[c] = dot; - } - - return new RowVector(pv); - } +package org.jgrasstools.gears.utils.math.matrixes; + +/** + * From: Java Number Cruncher + * The Java Programmer's Guide to Numerical Computation + * by Ronald Mak + * + * + * The matrix class. + */ +public class Matrix +{ + /** number of rows */ protected int nRows; + /** number of columns */ protected int nCols; + /** 2-d array of values */ protected double values[][]; + + //--------------// + // Constructors // + //--------------// + + /** + * Default constructor. + */ + protected Matrix() {} + + /** + * Constructor. + * @param rowCount the number of rows + * @param colCount the number of columns + */ + public Matrix(int rowCount, int colCount) + { + nRows = (rowCount > 0) ? rowCount : 1; + nCols = (colCount > 0) ? colCount : 1; + values = new double[nRows][nCols]; + } + + /** + * Constructor. + * @param values the 2-d array of values + */ + public Matrix(double values[][]) { set(values); } + + //---------// + // Getters // + //---------// + + /** + * Get the row count. + * @return the row count + */ + public int rowCount() { return nRows; } + + /** + * Get the column count. + * @return the column count + */ + public int columnCount() { return nCols; } + + /** + * Get the value of element [r,c] in the matrix. + * @param r the row index + * @param c the column index + * @return the value + * @throws numbercruncher.MatrixException for an invalid index + */ + public double at(int r, int c) throws MatrixException + { + if ((r < 0) || (r >= nRows) || (c < 0) || (c >= nCols)) { + throw new MatrixException(MatrixException.INVALID_INDEX); + } + + return values[r][c]; + } + + /** + * Get a row of this matrix. + * @param r the row index + * @return the row as a row vector + * @throws numbercruncher.MatrixException for an invalid index + */ + public RowVector getRow(int r) throws MatrixException + { + if ((r < 0) || (r >= nRows)) { + throw new MatrixException(MatrixException.INVALID_INDEX); + } + + RowVector rv = new RowVector(nCols); + for (int c = 0; c < nCols; ++c) { + rv.values[0][c] = this.values[r][c]; + } + + return rv; + } + + /** + * Get a column of this matrix. + * @param c the column index + * @return the column as a column vector + * @throws numbercruncher.MatrixException for an invalid index + */ + public ColumnVector getColumn(int c) throws MatrixException + { + if ((c < 0) || (c >= nCols)) { + throw new MatrixException(MatrixException.INVALID_INDEX); + } + + ColumnVector cv = new ColumnVector(nRows); + for (int r = 0; r < nRows; ++r) { + cv.values[r][0] = this.values[r][c]; + } + + return cv; + } + + /** + * Copy the values of this matrix. + * @return the values + */ + public double[][] values() { return values; } + + /** + * Copy the values of this matrix. + * @return the copied values + */ + public double[][] copyValues2D() + { + double v[][] = new double[nRows][nCols]; + + for (int r = 0; r < nRows; ++r) { + for (int c = 0; c < nCols; ++c) { + v[r][c] = values[r][c]; + } + } + + return v; + } + + //---------// + // Setters // + //---------// + + /** + * Set the value of element [r,c]. + * @param r the row index + * @param c the column index + * @param value the value + * @throws numbercruncher.MatrixException for an invalid index + */ + public void set(int r, int c, double value) throws MatrixException + { + if ((r < 0) || (r >= nRows) || (c < 0) || (c >= nCols)) { + throw new MatrixException(MatrixException.INVALID_INDEX); + } + + values[r][c] = value; + } + + /** + * Set this matrix from a 2-d array of values. + * If the rows do not have the same length, then the matrix + * column count is the length of the shortest row. + * @param values the 2-d array of values + */ + protected void set(double values[][]) + { + this.nRows = values.length; + this.nCols = values[0].length; + this.values = values; + + for (int r = 1; r < nRows; ++r) { + nCols = Math.min(nCols, values[r].length); + } + } + + /** + * Set a row of this matrix from a row vector. + * @param rv the row vector + * @param r the row index + * @throws numbercruncher.MatrixException for an invalid index or + * an invalid vector size + */ + public void setRow(RowVector rv, int r) throws MatrixException + { + if ((r < 0) || (r >= nRows)) { + throw new MatrixException(MatrixException.INVALID_INDEX); + } + if (nCols != rv.nCols) { + throw new MatrixException( + MatrixException.INVALID_DIMENSIONS); + } + + for (int c = 0; c < nCols; ++c) { + this.values[r][c] = rv.values[0][c]; + } + } + + /** + * Set a column of this matrix from a column vector. + * @param cv the column vector + * @param c the column index + * @throws numbercruncher.MatrixException for an invalid index or + * an invalid vector size + */ + public void setColumn(ColumnVector cv, int c) + throws MatrixException + { + if ((c < 0) || (c >= nCols)) { + throw new MatrixException(MatrixException.INVALID_INDEX); + } + if (nRows != cv.nRows) { + throw new MatrixException( + MatrixException.INVALID_DIMENSIONS); + } + + for (int r = 0; r < nRows; ++r) { + this.values[r][c] = cv.values[r][0]; + } + } + + //-------------------// + // Matrix operations // + //-------------------// + + /** + * Return the transpose of this matrix. + * @return the transposed matrix + */ + public Matrix transpose() + { + double tv[][] = new double[nCols][nRows]; // transposed values + + // Set the values of the transpose. + for (int r = 0; r < nRows; ++r) { + for (int c = 0; c < nCols; ++c) { + tv[c][r] = values[r][c]; + } + } + + return new Matrix(tv); + } + + /** + * Add another matrix to this matrix. + * @param m the matrix addend + * @return the sum matrix + * @throws numbercruncher.MatrixException for invalid size + */ + public Matrix add(Matrix m) throws MatrixException + { + // Validate m's size. + if ((nRows != m.nRows) && (nCols != m.nCols)) { + throw new MatrixException( + MatrixException.INVALID_DIMENSIONS); + } + + double sv[][] = new double[nRows][nCols]; // sum values + + // Compute values of the sum. + for (int r = 0; r < nRows; ++r) { + for (int c = 0; c < nCols; ++c) { + sv[r][c] = values[r][c] + m.values[r][c]; + } + } + + return new Matrix(sv); + } + + /** + * Subtract another matrix from this matrix. + * @param m the matrix subrrahend + * @return the difference matrix + * @throws numbercruncher.MatrixException for invalid size + */ + public Matrix subtract(Matrix m) throws MatrixException + { + // Validate m's size. + if ((nRows != m.nRows) && (nCols != m.nCols)) { + throw new MatrixException( + MatrixException.INVALID_DIMENSIONS); + } + + double dv[][] = new double[nRows][nCols]; // difference values + + // Compute values of the difference. + for (int r = 0; r < nRows; ++r) { + for (int c = 0; c < nCols; ++c) { + dv[r][c] = values[r][c] - m.values[r][c]; + } + } + + return new Matrix(dv); + } + + /** + * Multiply this matrix by a constant. + * @param k the constant + * @return the product matrix + */ + public Matrix multiply(double k) + { + double pv[][] = new double[nRows][nCols]; // product values + + // Compute values of the product. + for (int r = 0; r < nRows; ++r) { + for (int c = 0; c < nCols; ++c) { + pv[r][c] = k*values[r][c]; + } + } + + return new Matrix(pv); + } + + /** + * Multiply this matrix by another matrix. + * @param m the matrix multiplier + * @return the product matrix + * @throws numbercruncher.MatrixException for invalid size + */ + public Matrix multiply(Matrix m) throws MatrixException + { + // Validate m's dimensions. + if (nCols != m.nRows) { + throw new MatrixException( + MatrixException.INVALID_DIMENSIONS); + } + + double pv[][] = new double[nRows][m.nCols]; // product values + + // Compute values of the product. + for (int r = 0; r < nRows; ++r) { + for (int c = 0; c < m.nCols; ++c) { + double dot = 0; + for (int k = 0; k < nCols; ++k) { + dot += values[r][k] * m.values[k][c]; + } + pv[r][c] = dot; + } + } + + return new Matrix(pv); + } + + /** + * Multiply this matrix by a column vector: this*cv + * @param cv the column vector + * @return the product column vector + * @throws numbercruncher.MatrixException for invalid size + */ + public ColumnVector multiply(ColumnVector cv) + throws MatrixException + { + // Validate cv's size. + if (nRows != cv.nRows) { + throw new MatrixException( + MatrixException.INVALID_DIMENSIONS); + } + + double pv[] = new double[nRows]; // product values + + // Compute the values of the product. + for (int r = 0; r < nRows; ++r) { + double dot = 0; + for (int c = 0; c < nCols; ++c) { + dot += values[r][c] * cv.values[c][0]; + } + pv[r] = dot; + } + + return new ColumnVector(pv); + } + + /** + * Multiply a row vector by this matrix: rv*this + * @param rv the row vector + * @return the product row vector + * @throws numbercruncher.MatrixException for invalid size + */ + public RowVector multiply(RowVector rv) throws MatrixException + { + // Validate rv's size. + if (nCols != rv.nCols) { + throw new MatrixException( + MatrixException.INVALID_DIMENSIONS); + } + + double pv[] = new double[nRows]; // product values + + // Compute the values of the product. + for (int c = 0; c < nCols; ++c) { + double dot = 0; + for (int r = 0; r < nRows; ++r) { + dot += rv.values[0][r] * values[r][c]; + } + pv[c] = dot; + } + + return new RowVector(pv); + } } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/MatrixException.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/MatrixException.java index 87998a6e6..134401ae3 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/MatrixException.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/MatrixException.java @@ -1,26 +1,26 @@ -package org.jgrasstools.gears.utils.math.matrixes; - -/** - * From: Java Number Cruncher - * The Java Programmer's Guide to Numerical Computation - * by Ronald Mak - */ -public class MatrixException extends Exception -{ - public static final String INVALID_INDEX = - "Invalid index."; - public static final String INVALID_DIMENSIONS = - "Invalid matrix dimensions."; - public static final String ZERO_ROW = - "Matrix has a zero row."; - public static final String SINGULAR = - "Matrix is singular."; - public static final String NO_CONVERGENCE = - "Solution did not converge."; - - /** - * Constructor. - * @param msg the error message - */ - public MatrixException(String msg) { super(msg); } -} +package org.jgrasstools.gears.utils.math.matrixes; + +/** + * From: Java Number Cruncher + * The Java Programmer's Guide to Numerical Computation + * by Ronald Mak + */ +public class MatrixException extends Exception +{ + public static final String INVALID_INDEX = + "Invalid index."; + public static final String INVALID_DIMENSIONS = + "Invalid matrix dimensions."; + public static final String ZERO_ROW = + "Matrix has a zero row."; + public static final String SINGULAR = + "Matrix is singular."; + public static final String NO_CONVERGENCE = + "Solution did not converge."; + + /** + * Constructor. + * @param msg the error message + */ + public MatrixException(String msg) { super(msg); } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/SquareMatrix.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/SquareMatrix.java index 7f7b31858..e965cfc13 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/SquareMatrix.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/math/matrixes/SquareMatrix.java @@ -1,100 +1,100 @@ -package org.jgrasstools.gears.utils.math.matrixes; - -/** - * From: Java Number Cruncher - * The Java Programmer's Guide to Numerical Computation - * by Ronald Mak - * - * - * A square matrix. - */ -public class SquareMatrix extends Matrix -{ - //--------------// - // Constructors // - //--------------// - - /** - * Constructor. - * @param n the number of rows == the number of columns - */ - public SquareMatrix(int n) { super(n, n); } - - /** - * Constructor. - * @param m the matrix (only the upper left square used) - */ - private SquareMatrix(Matrix m) { set(m); } - - /** - * Constructor. - * @param values the array of values - */ - public SquareMatrix(double values[][]) { set(values); } - - //---------// - // Setters // - //---------// - - /** - * Set this square matrix from another matrix. Note that this - * matrix will reference the values of the argument matrix. If - * the values are not square, only the upper left square is used. - * @param values the 2-d array of values - */ - private void set(Matrix m) - { - this.nRows = this.nCols = Math.min(m.nRows, m.nCols); - this.values = m.values; - } - - /** - * Set this square matrix from a 2-d array of values. If the - * values are not square, only the upper left square is used. - * @param values the 2-d array of values - */ - protected void set(double values[][]) - { - super.set(values); - nRows = nCols = Math.min(nRows, nCols); - } - - //-------------------// - // Matrix operations // - //-------------------// - - /** - * Add another square matrix to this matrix. - * @param sm the square matrix addend - * @return the sum matrix - * @throws numbercruncher.MatrixException for invalid size - */ - public SquareMatrix add(SquareMatrix sm) throws MatrixException - { - return new SquareMatrix(super.add(sm)); - } - - /** - * Subtract another square matrix from this matrix. - * @param sm the square matrix subrrahend - * @return the difference matrix - * @throws numbercruncher.MatrixException for invalid size - */ - public SquareMatrix subtract(SquareMatrix sm) - throws MatrixException - { - return new SquareMatrix(super.subtract(sm)); - } - - /** - * Multiply this square matrix by another square matrix. - * @param sm the square matrix multiplier - * @return the product matrix - * @throws numbercruncher.MatrixException for invalid size - */ - public SquareMatrix multiply(SquareMatrix sm) - throws MatrixException - { - return new SquareMatrix(super.multiply(sm)); - } +package org.jgrasstools.gears.utils.math.matrixes; + +/** + * From: Java Number Cruncher + * The Java Programmer's Guide to Numerical Computation + * by Ronald Mak + * + * + * A square matrix. + */ +public class SquareMatrix extends Matrix +{ + //--------------// + // Constructors // + //--------------// + + /** + * Constructor. + * @param n the number of rows == the number of columns + */ + public SquareMatrix(int n) { super(n, n); } + + /** + * Constructor. + * @param m the matrix (only the upper left square used) + */ + private SquareMatrix(Matrix m) { set(m); } + + /** + * Constructor. + * @param values the array of values + */ + public SquareMatrix(double values[][]) { set(values); } + + //---------// + // Setters // + //---------// + + /** + * Set this square matrix from another matrix. Note that this + * matrix will reference the values of the argument matrix. If + * the values are not square, only the upper left square is used. + * @param values the 2-d array of values + */ + private void set(Matrix m) + { + this.nRows = this.nCols = Math.min(m.nRows, m.nCols); + this.values = m.values; + } + + /** + * Set this square matrix from a 2-d array of values. If the + * values are not square, only the upper left square is used. + * @param values the 2-d array of values + */ + protected void set(double values[][]) + { + super.set(values); + nRows = nCols = Math.min(nRows, nCols); + } + + //-------------------// + // Matrix operations // + //-------------------// + + /** + * Add another square matrix to this matrix. + * @param sm the square matrix addend + * @return the sum matrix + * @throws numbercruncher.MatrixException for invalid size + */ + public SquareMatrix add(SquareMatrix sm) throws MatrixException + { + return new SquareMatrix(super.add(sm)); + } + + /** + * Subtract another square matrix from this matrix. + * @param sm the square matrix subrrahend + * @return the difference matrix + * @throws numbercruncher.MatrixException for invalid size + */ + public SquareMatrix subtract(SquareMatrix sm) + throws MatrixException + { + return new SquareMatrix(super.subtract(sm)); + } + + /** + * Multiply this square matrix by another square matrix. + * @param sm the square matrix multiplier + * @return the product matrix + * @throws numbercruncher.MatrixException for invalid size + */ + public SquareMatrix multiply(SquareMatrix sm) + throws MatrixException + { + return new SquareMatrix(super.multiply(sm)); + } } \ No newline at end of file diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/sorting/OddEvenSortAlgorithm.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/sorting/OddEvenSortAlgorithm.java index e5c675b0f..2b6b4d12c 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/sorting/OddEvenSortAlgorithm.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/sorting/OddEvenSortAlgorithm.java @@ -1,173 +1,173 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.utils.sorting; - -import java.util.ArrayList; -import java.util.List; - -public class OddEvenSortAlgorithm { - - /** - * Sorts two arrays regarding to the sort of the first - * - * @param arrayToBeSorted the array on wich the sort is performed - * @param arrayThatFollowsTheSort the array that is sorted following the others array sort. Can - * be null - */ - public static void oddEvenSort( double arrayToBeSorted[], double[] arrayThatFollowsTheSort ) { - for( int i = 0; i < arrayToBeSorted.length / 2; i++ ) { - for( int j = 0; j + 1 < arrayToBeSorted.length; j += 2 ) - if (arrayToBeSorted[j] > arrayToBeSorted[j + 1]) { - double tmpa = arrayToBeSorted[j]; - arrayToBeSorted[j] = arrayToBeSorted[j + 1]; - arrayToBeSorted[j + 1] = tmpa; - if (arrayThatFollowsTheSort != null) { - double tmpb = arrayThatFollowsTheSort[j]; - arrayThatFollowsTheSort[j] = arrayThatFollowsTheSort[j + 1]; - arrayThatFollowsTheSort[j + 1] = tmpb; - } - } - for( int j = 1; j + 1 < arrayToBeSorted.length; j += 2 ) - if (arrayToBeSorted[j] > arrayToBeSorted[j + 1]) { - double tmpa = arrayToBeSorted[j]; - arrayToBeSorted[j] = arrayToBeSorted[j + 1]; - arrayToBeSorted[j + 1] = tmpa; - if (arrayThatFollowsTheSort != null) { - double tmpb = arrayThatFollowsTheSort[j]; - arrayThatFollowsTheSort[j] = arrayThatFollowsTheSort[j + 1]; - arrayThatFollowsTheSort[j + 1] = tmpb; - } - } - } - } - - /** - * Sorts two lists regarding to the sort of the first - * - * @param listToBeSorted the array on wich the sort is performed - * @param listThatFollowsTheSort the array that is sorted following the others list sort. Can be - * null, in which case it acts like a normal sorting algorithm - */ - public static void oddEvenSort( List listToBeSorted, List listThatFollowsTheSort ) { - for( int i = 0; i < listToBeSorted.size() / 2; i++ ) { - for( int j = 0; j + 1 < listToBeSorted.size(); j += 2 ) - if (listToBeSorted.get(j) > listToBeSorted.get(j + 1)) { - double tmpa = listToBeSorted.get(j); - listToBeSorted.set(j, listToBeSorted.get(j + 1)); - listToBeSorted.set(j + 1, tmpa); - if (listThatFollowsTheSort != null) { - double tmpb = listThatFollowsTheSort.get(j); - listThatFollowsTheSort.set(j, listThatFollowsTheSort.get(j + 1)); - listThatFollowsTheSort.set(j + 1, tmpb); - } - } - for( int j = 1; j + 1 < listToBeSorted.size(); j += 2 ) - if (listToBeSorted.get(j) > listToBeSorted.get(j + 1)) { - double tmpa = listToBeSorted.get(j); - listToBeSorted.set(j, listToBeSorted.get(j + 1)); - listToBeSorted.set(j + 1, tmpa); - if (listThatFollowsTheSort != null) { - double tmpb = listThatFollowsTheSort.get(j); - listThatFollowsTheSort.set(j, listThatFollowsTheSort.get(j + 1)); - listThatFollowsTheSort.set(j + 1, tmpb); - } - } - } - } - - // public static void main( String[] args ) { - // OddEvenSortAlgorithm sort = new OddEvenSortAlgorithm(); - // - // double[] tmp1 = {517.0, 515.0, 518.0, 509.0, 522.0, 505.0, 506.0, 507.0, 508.0, 510.0, - // 511.0, 512.0, 513.0, 514.0, 516.0, 519.0, 520.0, 521.0, 523.0, 524.0, 525.0}; - // - // double[] tmp2 = {175.4196, 175.0147, 175.6273, 174.246, 176.4338, 173.6218, 173.8197, - // 174.0276, 174.2274, 174.2604, 174.3958, 174.412, 174.6161, 174.8132, 175.2264, - // 175.8193, 176.0247, 176.222, 176.6479, 176.8464, 177.0386}; - // - // try { - // sort.oddEvenSort(tmp2, tmp1); - // } catch (Exception e) { - // e.printStackTrace(); - // } - // - // for( int i = 0; i < tmp2.length; i++ ) { - // System.out.println(tmp2[i] + " " + tmp1[i]); //$NON-NLS-1$ - // } - // } - - public static void main( String[] args ) { - - List a = new ArrayList(); - List b = new ArrayList(); - a.add(517.0); - a.add(515.0); - a.add(518.0); - a.add(509.0); - a.add(522.0); - a.add(505.0); - a.add(506.0); - a.add(507.0); - a.add(508.0); - a.add(510.0); - a.add(511.0); - a.add(512.0); - a.add(513.0); - a.add(514.0); - a.add(516.0); - a.add(519.0); - a.add(520.0); - a.add(521.0); - a.add(523.0); - a.add(524.0); - a.add(525.0); - - b.add(175.4196); - b.add(175.0147); - b.add(175.6273); - b.add(174.246); - b.add(176.4338); - b.add(173.6218); - b.add(173.8197); - b.add(174.0276); - b.add(174.2274); - b.add(174.2604); - b.add(174.3958); - b.add(174.412); - b.add(174.6161); - b.add(174.8132); - b.add(175.2264); - b.add(175.8193); - b.add(176.0247); - b.add(176.222); - b.add(176.6479); - b.add(176.8464); - b.add(177.0386); - - try { - oddEvenSort(b, a); - } catch (Exception e) { - e.printStackTrace(); - } - - for( int i = 0; i < a.size(); i++ ) { - System.out.println(b.get(i) + " " + a.get(i)); //$NON-NLS-1$ - } - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.utils.sorting; + +import java.util.ArrayList; +import java.util.List; + +public class OddEvenSortAlgorithm { + + /** + * Sorts two arrays regarding to the sort of the first + * + * @param arrayToBeSorted the array on wich the sort is performed + * @param arrayThatFollowsTheSort the array that is sorted following the others array sort. Can + * be null + */ + public static void oddEvenSort( double arrayToBeSorted[], double[] arrayThatFollowsTheSort ) { + for( int i = 0; i < arrayToBeSorted.length / 2; i++ ) { + for( int j = 0; j + 1 < arrayToBeSorted.length; j += 2 ) + if (arrayToBeSorted[j] > arrayToBeSorted[j + 1]) { + double tmpa = arrayToBeSorted[j]; + arrayToBeSorted[j] = arrayToBeSorted[j + 1]; + arrayToBeSorted[j + 1] = tmpa; + if (arrayThatFollowsTheSort != null) { + double tmpb = arrayThatFollowsTheSort[j]; + arrayThatFollowsTheSort[j] = arrayThatFollowsTheSort[j + 1]; + arrayThatFollowsTheSort[j + 1] = tmpb; + } + } + for( int j = 1; j + 1 < arrayToBeSorted.length; j += 2 ) + if (arrayToBeSorted[j] > arrayToBeSorted[j + 1]) { + double tmpa = arrayToBeSorted[j]; + arrayToBeSorted[j] = arrayToBeSorted[j + 1]; + arrayToBeSorted[j + 1] = tmpa; + if (arrayThatFollowsTheSort != null) { + double tmpb = arrayThatFollowsTheSort[j]; + arrayThatFollowsTheSort[j] = arrayThatFollowsTheSort[j + 1]; + arrayThatFollowsTheSort[j + 1] = tmpb; + } + } + } + } + + /** + * Sorts two lists regarding to the sort of the first + * + * @param listToBeSorted the array on wich the sort is performed + * @param listThatFollowsTheSort the array that is sorted following the others list sort. Can be + * null, in which case it acts like a normal sorting algorithm + */ + public static void oddEvenSort( List listToBeSorted, List listThatFollowsTheSort ) { + for( int i = 0; i < listToBeSorted.size() / 2; i++ ) { + for( int j = 0; j + 1 < listToBeSorted.size(); j += 2 ) + if (listToBeSorted.get(j) > listToBeSorted.get(j + 1)) { + double tmpa = listToBeSorted.get(j); + listToBeSorted.set(j, listToBeSorted.get(j + 1)); + listToBeSorted.set(j + 1, tmpa); + if (listThatFollowsTheSort != null) { + double tmpb = listThatFollowsTheSort.get(j); + listThatFollowsTheSort.set(j, listThatFollowsTheSort.get(j + 1)); + listThatFollowsTheSort.set(j + 1, tmpb); + } + } + for( int j = 1; j + 1 < listToBeSorted.size(); j += 2 ) + if (listToBeSorted.get(j) > listToBeSorted.get(j + 1)) { + double tmpa = listToBeSorted.get(j); + listToBeSorted.set(j, listToBeSorted.get(j + 1)); + listToBeSorted.set(j + 1, tmpa); + if (listThatFollowsTheSort != null) { + double tmpb = listThatFollowsTheSort.get(j); + listThatFollowsTheSort.set(j, listThatFollowsTheSort.get(j + 1)); + listThatFollowsTheSort.set(j + 1, tmpb); + } + } + } + } + + // public static void main( String[] args ) { + // OddEvenSortAlgorithm sort = new OddEvenSortAlgorithm(); + // + // double[] tmp1 = {517.0, 515.0, 518.0, 509.0, 522.0, 505.0, 506.0, 507.0, 508.0, 510.0, + // 511.0, 512.0, 513.0, 514.0, 516.0, 519.0, 520.0, 521.0, 523.0, 524.0, 525.0}; + // + // double[] tmp2 = {175.4196, 175.0147, 175.6273, 174.246, 176.4338, 173.6218, 173.8197, + // 174.0276, 174.2274, 174.2604, 174.3958, 174.412, 174.6161, 174.8132, 175.2264, + // 175.8193, 176.0247, 176.222, 176.6479, 176.8464, 177.0386}; + // + // try { + // sort.oddEvenSort(tmp2, tmp1); + // } catch (Exception e) { + // e.printStackTrace(); + // } + // + // for( int i = 0; i < tmp2.length; i++ ) { + // System.out.println(tmp2[i] + " " + tmp1[i]); //$NON-NLS-1$ + // } + // } + + public static void main( String[] args ) { + + List a = new ArrayList(); + List b = new ArrayList(); + a.add(517.0); + a.add(515.0); + a.add(518.0); + a.add(509.0); + a.add(522.0); + a.add(505.0); + a.add(506.0); + a.add(507.0); + a.add(508.0); + a.add(510.0); + a.add(511.0); + a.add(512.0); + a.add(513.0); + a.add(514.0); + a.add(516.0); + a.add(519.0); + a.add(520.0); + a.add(521.0); + a.add(523.0); + a.add(524.0); + a.add(525.0); + + b.add(175.4196); + b.add(175.0147); + b.add(175.6273); + b.add(174.246); + b.add(176.4338); + b.add(173.6218); + b.add(173.8197); + b.add(174.0276); + b.add(174.2274); + b.add(174.2604); + b.add(174.3958); + b.add(174.412); + b.add(174.6161); + b.add(174.8132); + b.add(175.2264); + b.add(175.8193); + b.add(176.0247); + b.add(176.222); + b.add(176.6479); + b.add(176.8464); + b.add(177.0386); + + try { + oddEvenSort(b, a); + } catch (Exception e) { + e.printStackTrace(); + } + + for( int i = 0; i < a.size(); i++ ) { + System.out.println(b.get(i) + " " + a.get(i)); //$NON-NLS-1$ + } + } +} diff --git a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/time/UtcTimeUtilities.java b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/time/UtcTimeUtilities.java index d1ec76440..f04b10686 100644 --- a/jgrassgears/src/main/java/org/jgrasstools/gears/utils/time/UtcTimeUtilities.java +++ b/jgrassgears/src/main/java/org/jgrasstools/gears/utils/time/UtcTimeUtilities.java @@ -1,101 +1,101 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.utils.time; - -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import org.joda.time.format.DateTimeFormatter; - -/** - * An utility class for time related issues, all in UTC timezone. - * - *

                This class is supposed to handle only the string - * format YYYY-MM-DD HH:MM:SS. If not explicitly defined, - * that format, with or without seconds, is used. - * - * @author Andrea Antonello (www.hydrologis.com) - * @since 0.7.0 - */ -public class UtcTimeUtilities { - - /** - * The formatter for YYYY-MM-DD HH:MM. - */ - private static DateTimeFormatter withMinutesformatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; - - /** - * The formatter for YYYY-MM-DD HH:MM:SS. - */ - private static DateTimeFormatter withSecondsformatter = JGTConstants.utcDateFormatterYYYYMMDDHHMMSS; - - /** - * Getter for the current time. - * - * @return the current time in utc. - */ - public static DateTime newDateTime() { - DateTime dt = new DateTime().withZone(DateTimeZone.UTC); - return dt; - } - - /** - * Get {@link DateTime} from date string of format: YYYY-MM-DD HH:MM:SS. - * - * @param dateTimeString the date string. - * @return the parsed datetime. - */ - public static DateTime fromStringWithSeconds( String dateTimeString ) { - DateTime dt = withSecondsformatter.parseDateTime(dateTimeString); - return dt; - } - - /** - * Get {@link DateTime} from date string of format: YYYY-MM-DD HH:MM. - * - * @param dateTimeString the date string. - * @return the parsed datetime. - */ - public static DateTime fromStringWithMinutes( String dateTimeString ) { - DateTime dt = withMinutesformatter.parseDateTime(dateTimeString); - return dt; - } - - /** - * Get String of format: YYYY-MM-DD HH:MM:SS from {@link DateTime}. - * - * @param dateTime the {@link DateTime}. - * @return the date string. - */ - public static String toStringWithSeconds( DateTime dateTime ) { - String dtStr = dateTime.toString(withSecondsformatter); - return dtStr; - } - - /** - * Get String of format: YYYY-MM-DD HH:MM from {@link DateTime}. - * - * @param dateTime the {@link DateTime}. - * @return the date string. - */ - public static String toStringWithMinutes( DateTime dateTime ) { - String dtStr = dateTime.toString(withMinutesformatter); - return dtStr; - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.utils.time; + +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import org.joda.time.format.DateTimeFormatter; + +/** + * An utility class for time related issues, all in UTC timezone. + * + *

                This class is supposed to handle only the string + * format YYYY-MM-DD HH:MM:SS. If not explicitly defined, + * that format, with or without seconds, is used. + * + * @author Andrea Antonello (www.hydrologis.com) + * @since 0.7.0 + */ +public class UtcTimeUtilities { + + /** + * The formatter for YYYY-MM-DD HH:MM. + */ + private static DateTimeFormatter withMinutesformatter = JGTConstants.utcDateFormatterYYYYMMDDHHMM; + + /** + * The formatter for YYYY-MM-DD HH:MM:SS. + */ + private static DateTimeFormatter withSecondsformatter = JGTConstants.utcDateFormatterYYYYMMDDHHMMSS; + + /** + * Getter for the current time. + * + * @return the current time in utc. + */ + public static DateTime newDateTime() { + DateTime dt = new DateTime().withZone(DateTimeZone.UTC); + return dt; + } + + /** + * Get {@link DateTime} from date string of format: YYYY-MM-DD HH:MM:SS. + * + * @param dateTimeString the date string. + * @return the parsed datetime. + */ + public static DateTime fromStringWithSeconds( String dateTimeString ) { + DateTime dt = withSecondsformatter.parseDateTime(dateTimeString); + return dt; + } + + /** + * Get {@link DateTime} from date string of format: YYYY-MM-DD HH:MM. + * + * @param dateTimeString the date string. + * @return the parsed datetime. + */ + public static DateTime fromStringWithMinutes( String dateTimeString ) { + DateTime dt = withMinutesformatter.parseDateTime(dateTimeString); + return dt; + } + + /** + * Get String of format: YYYY-MM-DD HH:MM:SS from {@link DateTime}. + * + * @param dateTime the {@link DateTime}. + * @return the date string. + */ + public static String toStringWithSeconds( DateTime dateTime ) { + String dtStr = dateTime.toString(withSecondsformatter); + return dtStr; + } + + /** + * Get String of format: YYYY-MM-DD HH:MM from {@link DateTime}. + * + * @param dateTime the {@link DateTime}. + * @return the date string. + */ + public static String toStringWithMinutes( DateTime dateTime ) { + String dtStr = dateTime.toString(withMinutesformatter); + return dtStr; + } + +} diff --git a/jgrassgears/src/main/resources/jg_messages.properties b/jgrassgears/src/main/resources/jg_messages.properties index 0fca51793..e23b5fbdb 100644 --- a/jgrassgears/src/main/resources/jg_messages.properties +++ b/jgrassgears/src/main/resources/jg_messages.properties @@ -1,21 +1,21 @@ -utils.numbering_stream = Numbering the stream... -utils.extracting_network_geometries = "Extracting the network geometries..." - -cb.vectorize = Vectorizing double vectors -cb.sortvector = Sorting double vectors -cb.splitvector = Splitting real vectors -cb.creatematrix = Creating new matrix -verifyStation.equalsStation1= Two station have the same coordiantes and rain value: -verifyStation.equalStation2= Two station have the same coordiantes: -verifyStation.run= Try to run ValidateStationModels before Kriging - -distanceToOutlet.workingon.meter=Calculating outlet distance in meter... - -grass.legacy.reading = Reading raster - -trentoP.error.bisection = Too many bisections -trentoP.error.braketed = Roots must be bracketed -trentoP.error.matrix = Matrix 1 and 2 have a different number of rows -trentoP.error.nCol = Wrong column number in input - +utils.numbering_stream = Numbering the stream... +utils.extracting_network_geometries = "Extracting the network geometries..." + +cb.vectorize = Vectorizing double vectors +cb.sortvector = Sorting double vectors +cb.splitvector = Splitting real vectors +cb.creatematrix = Creating new matrix +verifyStation.equalsStation1= Two station have the same coordiantes and rain value: +verifyStation.equalStation2= Two station have the same coordiantes: +verifyStation.run= Try to run ValidateStationModels before Kriging + +distanceToOutlet.workingon.meter=Calculating outlet distance in meter... + +grass.legacy.reading = Reading raster + +trentoP.error.bisection = Too many bisections +trentoP.error.braketed = Roots must be bracketed +trentoP.error.matrix = Matrix 1 and 2 have a different number of rows +trentoP.error.nCol = Wrong column number in input + rf.error.wrongSign = Sign error in root finding \ No newline at end of file diff --git a/jgrassgears/src/main/resources/jg_messages_it.properties b/jgrassgears/src/main/resources/jg_messages_it.properties index c969f212b..11cb787f7 100644 --- a/jgrassgears/src/main/resources/jg_messages_it.properties +++ b/jgrassgears/src/main/resources/jg_messages_it.properties @@ -1,10 +1,10 @@ -utils.numbering_stream = Numerazione della rete... -utils.extracting_network_geometries = "Estrazione delle geometrie della rete..." -kriging.equalsStation1 = Due stazioni hanno le stesse coordinate e valore di pioggia: -kriging.equalsStation2 = Due Stazioni hanno le stesse coordinate: - -trentoP.error.matrix = le due matrici hanno un numero di righe differente - -distanceToOutlet.workingon.meter= Sto calcolando le distanze in metri... - +utils.numbering_stream = Numerazione della rete... +utils.extracting_network_geometries = "Estrazione delle geometrie della rete..." +kriging.equalsStation1 = Due stazioni hanno le stesse coordinate e valore di pioggia: +kriging.equalsStation2 = Due Stazioni hanno le stesse coordinate: + +trentoP.error.matrix = le due matrici hanno un numero di righe differente + +distanceToOutlet.workingon.meter= Sto calcolando le distanze in metri... + rf.error.wrongSign = Errore di segno nel valutare la radice. \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/grasslegacy/modules/GrassMosaicLegacy.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/grasslegacy/modules/GrassMosaicLegacy.html index 93190ecae..b54be0611 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/grasslegacy/modules/GrassMosaicLegacy.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/grasslegacy/modules/GrassMosaicLegacy.html @@ -1,19 +1,19 @@ -Module for GRASS raster patching. Patches a set on input rasters into one single GRASS raster. -
                -
                -

                Inputs

                -
                  -
                • the list of maps that have to be patched (used if inGeodata is null)
                • -
                • the output file resolution in meters
                • -
                • the optional requested boundary coordinates as array of (n, s, w, e)
                • -
                -
                -
                -

                Output

                -
                  -
                • the GRASS file path to which to write to
                • -
                -
                -
                -

                Output

                +Module for GRASS raster patching. Patches a set on input rasters into one single GRASS raster. +
                +
                +

                Inputs

                +
                  +
                • the list of maps that have to be patched (used if inGeodata is null)
                • +
                • the output file resolution in meters
                • +
                • the optional requested boundary coordinates as array of (n, s, w, e)
                • +
                +
                +
                +

                Output

                +
                  +
                • the GRASS file path to which to write to
                • +
                +
                +
                +

                Output

                This module can be used instead of the Mosaic with big maps because it can work also with big data. \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/rasterreader/RasterReader.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/rasterreader/RasterReader.html index f63a583aa..55da2e281 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/rasterreader/RasterReader.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/rasterreader/RasterReader.html @@ -1,21 +1,21 @@ -Generic module for raster reader. Supported raster formats are: -
                  -
                • ESRI asci
                • -
                • GRASS binary format
                • -
                • tiff
                • -
                • adf (only if there is installed the needed library
                • -
                -The model recognize the raster type from the file extension, if you are not using a conventional extension you can force the program to read that format simply specifying the type. -
                -
                -

                Parameters

                -
                  -
                • the file path of the raster that has to be read
                • -
                • the file nodata
                • -
                • the output raster nodata
                • -
                • the optional coordinates of the boundaries of the raster (north, south, east and west)
                • -
                • the optional working resolution (in x and y)
                • -
                • the optional working number of columns and rows
                • -
                • the raster type to read: supported are: asc, tiff, grass, adf
                • -
                • the read output raster map
                • +Generic module for raster reader. Supported raster formats are: +
                    +
                  • ESRI asci
                  • +
                  • GRASS binary format
                  • +
                  • tiff
                  • +
                  • adf (only if there is installed the needed library
                  • +
                  +The model recognize the raster type from the file extension, if you are not using a conventional extension you can force the program to read that format simply specifying the type. +
                  +
                  +

                  Parameters

                  +
                    +
                  • the file path of the raster that has to be read
                  • +
                  • the file nodata
                  • +
                  • the output raster nodata
                  • +
                  • the optional coordinates of the boundaries of the raster (north, south, east and west)
                  • +
                  • the optional working resolution (in x and y)
                  • +
                  • the optional working number of columns and rows
                  • +
                  • the raster type to read: supported are: asc, tiff, grass, adf
                  • +
                  • the read output raster map
                  \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/rasterwriter/RasterWriter.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/rasterwriter/RasterWriter.html index eebb5455d..714894f0c 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/rasterwriter/RasterWriter.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/rasterwriter/RasterWriter.html @@ -1,15 +1,15 @@ -Raster writer module. Supported raster formats are: -
                    -
                  • ESRI asci
                  • -
                  • GRASS binary format
                  • -
                  • tiff
                  • -
                  -The model recognize the raster type from the file extension, if you are not using a conventional extension you can force the program to write that format simply specifying the type. -
                  -
                  -

                  Parameters

                  -
                    -
                  • the raster map to write
                  • -
                  • the raster type to write: supported are: asc, tiff, grass
                  • -
                  • the file to write the raster to
                  • +Raster writer module. Supported raster formats are: +
                      +
                    • ESRI asci
                    • +
                    • GRASS binary format
                    • +
                    • tiff
                    • +
                    +The model recognize the raster type from the file extension, if you are not using a conventional extension you can force the program to write that format simply specifying the type. +
                    +
                    +

                    Parameters

                    +
                      +
                    • the raster map to write
                    • +
                    • the raster type to write: supported are: asc, tiff, grass
                    • +
                    • the file to write the raster to
                    \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorReader.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorReader.html index 277b64543..d029b9aec 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorReader.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorReader.html @@ -1,20 +1,20 @@ -Utility class for reading data from a OMS formatted csv file. The file needs a metadata line containing the id of the station. The table is supposed to have a first column of timestamp and all other columns of data related to the ids defined. This reader reads a time series data file step by step, so it is time dependent, if you need to read a time series all in one please refer to TimeSeriesReader. -
                    -This model allow the user to aggregate data for working with different timesteps. This means that if you will work with a different timestep respect to the data original one, you simply need to specify the number of timesteps to aggregate (number of rows) as an integer value and the operation that you would do with the aggregated data, sum or average. -
                    -
                    -

                    Parameters

                    -
                      -
                    • the csv file to read from
                    • -
                    • the id metadata field
                    • -
                    • the file novalue to be translated into the internal novalue (defaults to -9999.0); it can be also a string.
                    • -
                    • the internal novalue to use (defaults to NaN, usually not changed)
                    • -
                    • the number of rows to aggregate (default is 1, i.e. no aggregation)
                    • -
                    • the aggregation type to use (0 = sum, 1 = avg)
                    • -
                    • the time at which start to read (format: yyyy-MM-dd HH:mm)
                    • -
                    • the time at which end to read (format: yyyy-MM-dd HH:mm)
                    • -
                    • the reading timestep in minutes
                    • -
                    • the current time read (format: yyyy-MM-dd HH:mm)
                    • -
                    • the previous time read (format: yyyy-MM-dd HH:mm)
                    • -
                    • the read map of ids and values
                    • +Utility class for reading data from a OMS formatted csv file. The file needs a metadata line containing the id of the station. The table is supposed to have a first column of timestamp and all other columns of data related to the ids defined. This reader reads a time series data file step by step, so it is time dependent, if you need to read a time series all in one please refer to TimeSeriesReader. +
                      +This model allow the user to aggregate data for working with different timesteps. This means that if you will work with a different timestep respect to the data original one, you simply need to specify the number of timesteps to aggregate (number of rows) as an integer value and the operation that you would do with the aggregated data, sum or average. +
                      +
                      +

                      Parameters

                      +
                        +
                      • the csv file to read from
                      • +
                      • the id metadata field
                      • +
                      • the file novalue to be translated into the internal novalue (defaults to -9999.0); it can be also a string.
                      • +
                      • the internal novalue to use (defaults to NaN, usually not changed)
                      • +
                      • the number of rows to aggregate (default is 1, i.e. no aggregation)
                      • +
                      • the aggregation type to use (0 = sum, 1 = avg)
                      • +
                      • the time at which start to read (format: yyyy-MM-dd HH:mm)
                      • +
                      • the time at which end to read (format: yyyy-MM-dd HH:mm)
                      • +
                      • the reading timestep in minutes
                      • +
                      • the current time read (format: yyyy-MM-dd HH:mm)
                      • +
                      • the previous time read (format: yyyy-MM-dd HH:mm)
                      • +
                      • the read map of ids and values
                      \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorWriter.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorWriter.html index 753936cd5..2edf7b002 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorWriter.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timedependent/TimeSeriesIteratorWriter.html @@ -1,12 +1,12 @@ -Utility class for writing a id2value map to a OMS formatted csv file. This writer writes a time series data file step by step, so it is time dependent, if you need to write a time series all in one please refer to TimeSeriesWriter. -
                      -
                      -

                      Parameters

                      -
                        -
                      • the table name
                      • -
                      • the map of ids and values to write
                      • -
                      • the start date, if available time is added as first column
                      • -
                      • the timestep
                      • -
                      • the novalue to use in the file (default is -9999.0)
                      • -
                      • the csv file to write to
                      • +Utility class for writing a id2value map to a OMS formatted csv file. This writer writes a time series data file step by step, so it is time dependent, if you need to write a time series all in one please refer to TimeSeriesWriter. +
                        +
                        +

                        Parameters

                        +
                          +
                        • the table name
                        • +
                        • the map of ids and values to write
                        • +
                        • the start date, if available time is added as first column
                        • +
                        • the timestep
                        • +
                        • the novalue to use in the file (default is -9999.0)
                        • +
                        • the csv file to write to
                        \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timeseries/TimeSeriesReader.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timeseries/TimeSeriesReader.html index 55d27b94a..5b0514fcf 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timeseries/TimeSeriesReader.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timeseries/TimeSeriesReader.html @@ -1,10 +1,10 @@ -Utility class for reading data from a OMS formatted csv file. The data is assumed to be first col a date and then al numbers. This reader reads a time series data file all in one, so it is not time dependent, for this you should look into TimeSeriesIteratorReader. -
                        -
                        -

                        Parameters

                        -
                          -
                        • the csv file to read from
                        • -
                        • the file novalue to be translated into the internal novalue (defaults to -9999.0); it can be also a string.
                        • -
                        • the internal novalue to use (defaults to NaN)
                        • -
                        • the list of timestamps read
                        • +Utility class for reading data from a OMS formatted csv file. The data is assumed to be first col a date and then al numbers. This reader reads a time series data file all in one, so it is not time dependent, for this you should look into TimeSeriesIteratorReader. +
                          +
                          +

                          Parameters

                          +
                            +
                          • the csv file to read from
                          • +
                          • the file novalue to be translated into the internal novalue (defaults to -9999.0); it can be also a string.
                          • +
                          • the internal novalue to use (defaults to NaN)
                          • +
                          • the list of timestamps read
                          \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timeseries/TimeSeriesWriter.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timeseries/TimeSeriesWriter.html index 1608f40ad..cd48ba35f 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timeseries/TimeSeriesWriter.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/timeseries/TimeSeriesWriter.html @@ -1,17 +1,17 @@ -Utility class for writing a set of timestamps and an array of values to an OMS formatted csv file. This writer writes a time series data file all in one, so it is not time dependent, for this you should look into TimeSeriesIteratorWriter. -
                          -
                          -

                          Parameters

                          -
                            -
                          • the csv file to write to
                          • -
                          • the table name
                          • -
                          • the hashmap of data to write
                          • -
                          • a switch that defines whether to write the timestamps as dates or as intervals of seconds if a date doesn't make sense
                          • -
                          • the comma separated list of column names
                          • -
                          • a map of lists of metadata that can be attached to the column of the csv file
                          • -
                          -
                          -
                          -

                          Notes

                          -
                            +Utility class for writing a set of timestamps and an array of values to an OMS formatted csv file. This writer writes a time series data file all in one, so it is not time dependent, for this you should look into TimeSeriesIteratorWriter. +
                            +
                            +

                            Parameters

                            +
                              +
                            • the csv file to write to
                            • +
                            • the table name
                            • +
                            • the hashmap of data to write
                            • +
                            • a switch that defines whether to write the timestamps as dates or as intervals of seconds if a date doesn't make sense
                            • +
                            • the comma separated list of column names
                            • +
                            • a map of lists of metadata that can be attached to the column of the csv file
                            • +
                            +
                            +
                            +

                            Notes

                            +
                              This model can be use for example to write output data from Peakflow. \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/vectorreader/VectorReader.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/vectorreader/VectorReader.html index 640fdef04..258886485 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/vectorreader/VectorReader.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/vectorreader/VectorReader.html @@ -1,24 +1,24 @@ -Vectors features reader module. Supported vector formats are: -
                                -
                              • ESRI shapefile
                              • -
                              • Properties file
                              • -
                              -
                              -

                              Properties files have a header like: -
                              -{{{ -_=id:Integer,name:String,geom:LineString -}}} -
                              -and the data in format: -
                              -{{{ -fid1=1|testname|LINESTRING (0 0, 40 40, 40 0) -}}} -
                              -

                              Parameters

                              -
                                -
                              • the file path of the vector that has to be read
                              • -
                              • the vector type to read
                              • -
                              • the read collection of features
                              • +Vectors features reader module. Supported vector formats are: +
                                  +
                                • ESRI shapefile
                                • +
                                • Properties file
                                • +
                                +
                                +

                                Properties files have a header like: +
                                +{{{ +_=id:Integer,name:String,geom:LineString +}}} +
                                +and the data in format: +
                                +{{{ +fid1=1|testname|LINESTRING (0 0, 40 40, 40 0) +}}} +
                                +

                                Parameters

                                +
                                  +
                                • the file path of the vector that has to be read
                                • +
                                • the vector type to read
                                • +
                                • the read collection of features
                                \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/vectorwriter/VectorWriter.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/vectorwriter/VectorWriter.html index 585a67582..c8caceeac 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/io/vectorwriter/VectorWriter.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/io/vectorwriter/VectorWriter.html @@ -1,12 +1,12 @@ -Vectors features writer to file module. Supported vector file formats are: -
                                  -
                                • ESRI shapefile
                                • -
                                -
                                -
                                -

                                Parameters

                                -
                                  -
                                • the feature collection to write (previously read by a reader)
                                • -
                                • the vector type to write, supported are: shapefile
                                • -
                                • the vector file to write the features
                                • +Vectors features writer to file module. Supported vector file formats are: +
                                    +
                                  • ESRI shapefile
                                  • +
                                  +
                                  +
                                  +

                                  Parameters

                                  +
                                    +
                                  • the feature collection to write (previously read by a reader)
                                  • +
                                  • the vector type to write, supported are: shapefile
                                  • +
                                  • the vector file to write the features
                                  \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/cutout/CutOut.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/cutout/CutOut.html index cd002e724..b43ac8a99 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/cutout/CutOut.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/cutout/CutOut.html @@ -1,22 +1,22 @@ -Extracts raster thresholding and masking: -
                                    -
                                  • extract map sub areas with values between the given lower and upper threshold
                                  • -
                                  • extract the map in the area defined of the mask map
                                  • -
                                  -
                                  -
                                  -

                                  Inputs

                                  -
                                    -
                                  • the file containing the map that has to be processed
                                  • -
                                  • the file containing the map to use as mask
                                  • -
                                  -
                                  -
                                  -

                                  Output

                                  -
                                    -
                                  • the file containing the result of thresholding or masking
                                  • -
                                  -
                                  -
                                  -

                                  Notes

                                  -The program can be used also to extract only the area outside the mask map using the inverse mode. +Extracts raster thresholding and masking: +
                                    +
                                  • extract map sub areas with values between the given lower and upper threshold
                                  • +
                                  • extract the map in the area defined of the mask map
                                  • +
                                  +
                                  +
                                  +

                                  Inputs

                                  +
                                    +
                                  • the file containing the map that has to be processed
                                  • +
                                  • the file containing the map to use as mask
                                  • +
                                  +
                                  +
                                  +

                                  Output

                                  +
                                    +
                                  • the file containing the result of thresholding or masking
                                  • +
                                  +
                                  +
                                  +

                                  Notes

                                  +The program can be used also to extract only the area outside the mask map using the inverse mode. diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/mapcalc/Mapcalc.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/mapcalc/Mapcalc.html index 4ee384ce9..1f6d20d64 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/mapcalc/Mapcalc.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/mapcalc/Mapcalc.html @@ -1,16 +1,16 @@ -Module for doing raster map algebra. -
                                  -The mapcalc refers to the Jiffle project. All the documentation about the supported functions and the module syntax is available at: Jiffle website. -
                                  -
                                  -

                                  Inputs

                                  -
                                    -
                                  • the list of maps that are used in the calculation
                                  • -
                                  • the function to process
                                  • -
                                  -
                                  -
                                  -

                                  Output

                                  -
                                    -
                                  • the resulting map picked from the inserted function
                                  • +Module for doing raster map algebra. +
                                    +The mapcalc refers to the Jiffle project. All the documentation about the supported functions and the module syntax is available at: Jiffle website. +
                                    +
                                    +

                                    Inputs

                                    +
                                      +
                                    • the list of maps that are used in the calculation
                                    • +
                                    • the function to process
                                    • +
                                    +
                                    +
                                    +

                                    Output

                                    +
                                      +
                                    • the resulting map picked from the inserted function
                                    \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/mosaic/Mosaic.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/mosaic/Mosaic.html index 5d15fe394..af4a0b3ac 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/mosaic/Mosaic.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/mosaic/Mosaic.html @@ -1,23 +1,23 @@ -Patches a set on input rasters into one single raster. -
                                    -
                                    -

                                    Inputs

                                    -
                                      -
                                    • the list of maps that have to be patched
                                    • -
                                    • the interpolation type to use
                                    • -
                                    -
                                    -
                                    -

                                    Output

                                    -
                                      -
                                    • the file containing the map the patched map
                                    • -
                                    -
                                    -
                                    -

                                    Notes

                                    -The supported interpolation types are: -
                                      -
                                    • 0: nearest neightbour(default)
                                    • -
                                    • 1: bilinear
                                    • -
                                    • 2: bicubic
                                    • +Patches a set on input rasters into one single raster. +
                                      +
                                      +

                                      Inputs

                                      +
                                        +
                                      • the list of maps that have to be patched
                                      • +
                                      • the interpolation type to use
                                      • +
                                      +
                                      +
                                      +

                                      Output

                                      +
                                        +
                                      • the file containing the map the patched map
                                      • +
                                      +
                                      +
                                      +

                                      Notes

                                      +The supported interpolation types are: +
                                        +
                                      • 0: nearest neightbour(default)
                                      • +
                                      • 1: bilinear
                                      • +
                                      • 2: bicubic
                                      \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rangelookup/RangeLookup.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rangelookup/RangeLookup.html index 9368cd84c..2d4b27a2d 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rangelookup/RangeLookup.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rangelookup/RangeLookup.html @@ -1,21 +1,21 @@ -Module for raster rangelookup usually used for raster reclassification. -
                                      -The ranges has to be defined using brackets, and the lower and upper bounds of the range may be open or closed. If closed they may include their defining value or exclude it. For example: in the form -[r1l -r1h), -[r2l -r2h]. -
                                      -
                                      -

                                      Inputs

                                      -
                                        -
                                      • the raster that has to be processed
                                      • -
                                      • the ranges in the form specified above
                                      • -
                                      • The classes to substitute in the same order of the ranges (in the form 1,2)
                                      • -
                                      -
                                      -
                                      -

                                      Output

                                      -
                                        -
                                      • the processed raster
                                      • +Module for raster rangelookup usually used for raster reclassification. +
                                        +The ranges has to be defined using brackets, and the lower and upper bounds of the range may be open or closed. If closed they may include their defining value or exclude it. For example: in the form +[r1l +r1h), +[r2l +r2h]. +
                                        +
                                        +

                                        Inputs

                                        +
                                          +
                                        • the raster that has to be processed
                                        • +
                                        • the ranges in the form specified above
                                        • +
                                        • The classes to substitute in the same order of the ranges (in the form 1,2)
                                        • +
                                        +
                                        +
                                        +

                                        Output

                                        +
                                          +
                                        • the processed raster
                                        \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rasterconverter/RasterConverter.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rasterconverter/RasterConverter.html index 8bb211d84..2e4a22dcf 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rasterconverter/RasterConverter.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rasterconverter/RasterConverter.html @@ -1,13 +1,13 @@ -Raster conversion module, it converts all kind of supported raster formats into an other of them. It can be used also to export data from GRASS Locations into ASCII or TIF. -
                                        -
                                        -

                                        Inputs

                                        -
                                          -
                                        • the input raster that has to be converted
                                        • -
                                        -
                                        -
                                        -

                                        Output

                                        -
                                          -
                                        • the output raster converted in a new format
                                        • +Raster conversion module, it converts all kind of supported raster formats into an other of them. It can be used also to export data from GRASS Locations into ASCII or TIF. +
                                          +
                                          +

                                          Inputs

                                          +
                                            +
                                          • the input raster that has to be converted
                                          • +
                                          +
                                          +
                                          +

                                          Output

                                          +
                                            +
                                          • the output raster converted in a new format
                                          \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rasterreprojector/RasterReprojector.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rasterreprojector/RasterReprojector.html index 0c34aa239..495a9a41d 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rasterreprojector/RasterReprojector.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/rasterreprojector/RasterReprojector.html @@ -1,21 +1,21 @@ -Module for raster reprojection. It can reproject also GRASS raster maps into a new Location with a different projection. -
                                          -
                                          -

                                          Inputs

                                          -
                                            -
                                          • the raster that has to be reprojected
                                          • -
                                          • the code defining the target coordinate reference system, composed by authority and code number (ex. EPSG:4328)
                                          • -
                                          • the interpolation type to use: -
                                              -
                                            • 0 : nearest neightbour
                                            • -
                                            • 1 : bilinear
                                            • -
                                            • 2 : bicubic
                                            • -
                                            -
                                          • -
                                          -
                                          -
                                          -

                                          Output

                                          -
                                            -
                                          • the output raster reprojected into the new coordinate reference system
                                          • +Module for raster reprojection. It can reproject also GRASS raster maps into a new Location with a different projection. +
                                            +
                                            +

                                            Inputs

                                            +
                                              +
                                            • the raster that has to be reprojected
                                            • +
                                            • the code defining the target coordinate reference system, composed by authority and code number (ex. EPSG:4328)
                                            • +
                                            • the interpolation type to use: +
                                                +
                                              • 0 : nearest neightbour
                                              • +
                                              • 1 : bilinear
                                              • +
                                              • 2 : bicubic
                                              • +
                                              +
                                            • +
                                            +
                                            +
                                            +

                                            Output

                                            +
                                              +
                                            • the output raster reprojected into the new coordinate reference system
                                            \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/scanline/ScanLineRasterizer.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/scanline/ScanLineRasterizer.html index 8e8c70695..44ba130dd 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/scanline/ScanLineRasterizer.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/scanline/ScanLineRasterizer.html @@ -1,15 +1,15 @@ -Module for polygon vector to raster conversion. It uses the ScanLine algorithm and it works only with polygon vectors. -
                                            -
                                            -

                                            Inputs

                                            -
                                              -
                                            • the polygon vector to rasterize
                                            • -
                                            • the value to use as raster value if no field is specified
                                            • -
                                            • the field to use to retrieve the category value for the raster
                                            • -
                                            -
                                            -
                                            -

                                            Output

                                            -
                                              -
                                            • the output raster
                                            • +Module for polygon vector to raster conversion. It uses the ScanLine algorithm and it works only with polygon vectors. +
                                              +
                                              +

                                              Inputs

                                              +
                                                +
                                              • the polygon vector to rasterize
                                              • +
                                              • the value to use as raster value if no field is specified
                                              • +
                                              • the field to use to retrieve the category value for the raster
                                              • +
                                              +
                                              +
                                              +

                                              Output

                                              +
                                                +
                                              • the output raster
                                              \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/summary/RasterSummary.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/summary/RasterSummary.html index a63992567..f88477270 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/summary/RasterSummary.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/r/summary/RasterSummary.html @@ -1,29 +1,29 @@ -Calculate a summary of the map with base statistics informations: -
                                                -
                                              • min value
                                              • -
                                              • max value
                                              • -
                                              • mean value
                                              • -
                                              • standard deviation
                                              • -
                                              • map name
                                              • -
                                              • map sum
                                              • -
                                              • map histogram: the calculated values are: -
                                                  -
                                                • the reference value of the bin (middlepoint)
                                                • -
                                                • the number of pixels in the bin
                                                • -
                                                • the percentage of the pixels in the bin over the total
                                                • -
                                                -
                                              • -
                                              • the number and percentage of nodata values NaN in the raster region
                                              • -
                                              -
                                              -
                                              -

                                              Inputs

                                              -
                                                -
                                              • the file containing the map that has to be processed
                                              • -
                                              -
                                              -
                                              -

                                              Output

                                              -
                                                -
                                              • a summary of base statistics for the current map on standard output
                                              • +Calculate a summary of the map with base statistics informations: +
                                                  +
                                                • min value
                                                • +
                                                • max value
                                                • +
                                                • mean value
                                                • +
                                                • standard deviation
                                                • +
                                                • map name
                                                • +
                                                • map sum
                                                • +
                                                • map histogram: the calculated values are: +
                                                    +
                                                  • the reference value of the bin (middlepoint)
                                                  • +
                                                  • the number of pixels in the bin
                                                  • +
                                                  • the percentage of the pixels in the bin over the total
                                                  • +
                                                  +
                                                • +
                                                • the number and percentage of nodata values NaN in the raster region
                                                • +
                                                +
                                                +
                                                +

                                                Inputs

                                                +
                                                  +
                                                • the file containing the map that has to be processed
                                                • +
                                                +
                                                +
                                                +

                                                Output

                                                +
                                                  +
                                                • a summary of base statistics for the current map on standard output
                                                \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/contoursextractor/ContourExtractor.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/contoursextractor/ContourExtractor.html index ace6cdfcb..94d4482ad 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/contoursextractor/ContourExtractor.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/contoursextractor/ContourExtractor.html @@ -1,22 +1,22 @@ -Module that extracts contour lines from a raster. Algorithm comes from jai-tools, which used the Conrec contouring subroutine. -
                                                -
                                                -

                                                Inputs

                                                -
                                                  -
                                                • the raster on which to calculate the contours
                                                • -
                                                • the minimum value for the contours
                                                • -
                                                • the maximum value for the contours
                                                • -
                                                • the contours interval
                                                • -
                                                -
                                                -
                                                -

                                                Output

                                                -
                                                  -
                                                • the generated contour lines vector
                                                • -
                                                -

                                                Notes

                                                -The module has a couple of known issues: -
                                                  -
                                                • it missbehaves if there are cell values that happen to be equal to the contour values (see above referenced article for further explanation).
                                                • -
                                                • isolines can accumulate at image borders
                                                • +Module that extracts contour lines from a raster. Algorithm comes from jai-tools, which used the Conrec contouring subroutine. +
                                                  +
                                                  +

                                                  Inputs

                                                  +
                                                    +
                                                  • the raster on which to calculate the contours
                                                  • +
                                                  • the minimum value for the contours
                                                  • +
                                                  • the maximum value for the contours
                                                  • +
                                                  • the contours interval
                                                  • +
                                                  +
                                                  +
                                                  +

                                                  Output

                                                  +
                                                    +
                                                  • the generated contour lines vector
                                                  • +
                                                  +

                                                  Notes

                                                  +The module has a couple of known issues: +
                                                    +
                                                  • it missbehaves if there are cell values that happen to be equal to the contour values (see above referenced article for further explanation).
                                                  • +
                                                  • isolines can accumulate at image borders
                                                  \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/rastercattofeatureattribute/RasterCatToFeatureAttribute.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/rastercattofeatureattribute/RasterCatToFeatureAttribute.html index 0c2d66645..f1402cf3d 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/rastercattofeatureattribute/RasterCatToFeatureAttribute.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/rastercattofeatureattribute/RasterCatToFeatureAttribute.html @@ -1,16 +1,16 @@ -Module that extracts raster categories and adds them to a feature collection. -
                                                  -
                                                  -

                                                  Inputs

                                                  -
                                                    -
                                                  • the raster on which to map the vector features
                                                  • -
                                                  • the vector to use for the geometric mapping
                                                  • -
                                                  • the name for the new field to create
                                                  • -
                                                  • the position of the coordinate to take in the case of multi geometries
                                                  • -
                                                  -
                                                  -
                                                  -

                                                  Output

                                                  -
                                                    -
                                                  • the extended vector
                                                  • +Module that extracts raster categories and adds them to a feature collection. +
                                                    +
                                                    +

                                                    Inputs

                                                    +
                                                      +
                                                    • the raster on which to map the vector features
                                                    • +
                                                    • the vector to use for the geometric mapping
                                                    • +
                                                    • the name for the new field to create
                                                    • +
                                                    • the position of the coordinate to take in the case of multi geometries
                                                    • +
                                                    +
                                                    +
                                                    +

                                                    Output

                                                    +
                                                      +
                                                    • the extended vector
                                                    \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/smoothing/LineSmootherJaitools.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/smoothing/LineSmootherJaitools.html index fafe0fb5f..42ffcf3d9 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/smoothing/LineSmootherJaitools.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/smoothing/LineSmootherJaitools.html @@ -1,14 +1,14 @@ -The line smoother from the Jaitools project that uses the Bezier curve to smooth. More info on the algorithm are available in Wikipedia -
                                                    -
                                                    -

                                                    Inputs

                                                    -
                                                      -
                                                    • the vector containing the lines to be smoothed
                                                    • -
                                                    • a value between 0 and 1 (inclusive) specifying the tightness of fit of the smoothed boundary (0 is loose - default)
                                                    • -
                                                    -
                                                    -
                                                    -

                                                    Output

                                                    -
                                                      -
                                                    • the vector with smoothed features
                                                    • +The line smoother from the Jaitools project that uses the Bezier curve to smooth. More info on the algorithm are available in Wikipedia +
                                                      +
                                                      +

                                                      Inputs

                                                      +
                                                        +
                                                      • the vector containing the lines to be smoothed
                                                      • +
                                                      • a value between 0 and 1 (inclusive) specifying the tightness of fit of the smoothed boundary (0 is loose - default)
                                                      • +
                                                      +
                                                      +
                                                      +

                                                      Output

                                                      +
                                                        +
                                                      • the vector with smoothed features
                                                      \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/smoothing/LineSmootherMcMaster.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/smoothing/LineSmootherMcMaster.html index f3a61ead6..113660337 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/smoothing/LineSmootherMcMaster.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/smoothing/LineSmootherMcMaster.html @@ -1,16 +1,16 @@ -The McMasters Sliding Averaging Algorithm smoothing algorithms. The new position of each point is the average of the pLookahead points around. Parameter pSlide is used for linear interpolation between old and new position. -
                                                      -
                                                      -

                                                      Inputs

                                                      -
                                                        -
                                                      • the vector containing the lines to be smoothed
                                                      • -
                                                      • the number of points to consider in every smoothing step
                                                      • -
                                                      • minimum length for a line to be smoothed
                                                      • -
                                                      • other model parameters like: slide parameter, densifier interval, simplifier tollerance
                                                      • -
                                                      -
                                                      -
                                                      -

                                                      Output

                                                      -
                                                        -
                                                      • the vector with smoothed features
                                                      • +The McMasters Sliding Averaging Algorithm smoothing algorithms. The new position of each point is the average of the pLookahead points around. Parameter pSlide is used for linear interpolation between old and new position. +
                                                        +
                                                        +

                                                        Inputs

                                                        +
                                                          +
                                                        • the vector containing the lines to be smoothed
                                                        • +
                                                        • the number of points to consider in every smoothing step
                                                        • +
                                                        • minimum length for a line to be smoothed
                                                        • +
                                                        • other model parameters like: slide parameter, densifier interval, simplifier tollerance
                                                        • +
                                                        +
                                                        +
                                                        +

                                                        Output

                                                        +
                                                          +
                                                        • the vector with smoothed features
                                                        \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorconverter/DwgConverter.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorconverter/DwgConverter.html index 190ce0c44..c015ceff5 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorconverter/DwgConverter.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorconverter/DwgConverter.html @@ -1,21 +1,21 @@ -Module to convert dxf files to geotools vecotors (based on jdwglib project). -
                                                        -Since geospatial vector layers can not contain all kind of features as in a dwg file, the output will be a set of vector containing the different geometry types present in the original dwg. Other three vector layers will be created from the original dwg to store the text, attribute and contours. -
                                                        -
                                                        -

                                                        Inputs

                                                        -
                                                          -
                                                        • the dwg input file
                                                        • -
                                                        • the code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328), applied in the case the prj file is missing
                                                        • -
                                                        -
                                                        -
                                                        -

                                                        Output

                                                        -
                                                          -
                                                        • the output point vector
                                                        • -
                                                        • the output line vector
                                                        • -
                                                        • the output polygon vector
                                                        • -
                                                        • the output text vector
                                                        • -
                                                        • the output attributes vector
                                                        • -
                                                        • the output contour vector
                                                        • +Module to convert dxf files to geotools vecotors (based on jdwglib project). +
                                                          +Since geospatial vector layers can not contain all kind of features as in a dwg file, the output will be a set of vector containing the different geometry types present in the original dwg. Other three vector layers will be created from the original dwg to store the text, attribute and contours. +
                                                          +
                                                          +

                                                          Inputs

                                                          +
                                                            +
                                                          • the dwg input file
                                                          • +
                                                          • the code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328), applied in the case the prj file is missing
                                                          • +
                                                          +
                                                          +
                                                          +

                                                          Output

                                                          +
                                                            +
                                                          • the output point vector
                                                          • +
                                                          • the output line vector
                                                          • +
                                                          • the output polygon vector
                                                          • +
                                                          • the output text vector
                                                          • +
                                                          • the output attributes vector
                                                          • +
                                                          • the output contour vector
                                                          \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorconverter/DxfConverter.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorconverter/DxfConverter.html index 4942147e9..196802d97 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorconverter/DxfConverter.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorconverter/DxfConverter.html @@ -1,18 +1,18 @@ -Module to convert dxf files to geotools vecotors (based on Michael Michauds work). -
                                                          -Since geospatial vector layers can not contain all kind of features as in a dxf file, the output will be a set of vector containing the different geometry types present in the original dxf. -
                                                          -
                                                          -

                                                          Inputs

                                                          -
                                                            -
                                                          • the dxf input file
                                                          • -
                                                          • the code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328), applied in the case the prj file is missing
                                                          • -
                                                          -
                                                          -
                                                          -

                                                          Output

                                                          -
                                                            -
                                                          • the output point vector
                                                          • -
                                                          • the output line vector
                                                          • -
                                                          • the output polygon vector
                                                          • +Module to convert dxf files to geotools vecotors (based on Michael Michauds work). +
                                                            +Since geospatial vector layers can not contain all kind of features as in a dxf file, the output will be a set of vector containing the different geometry types present in the original dxf. +
                                                            +
                                                            +

                                                            Inputs

                                                            +
                                                              +
                                                            • the dxf input file
                                                            • +
                                                            • the code defining the coordinate reference system, composed by authority and code number (ex. EPSG:4328), applied in the case the prj file is missing
                                                            • +
                                                            +
                                                            +
                                                            +

                                                            Output

                                                            +
                                                              +
                                                            • the output point vector
                                                            • +
                                                            • the output line vector
                                                            • +
                                                            • the output polygon vector
                                                            \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorfieldrounder/VectorFieldRounder.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorfieldrounder/VectorFieldRounder.html index f2ac4af44..bcb889041 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorfieldrounder/VectorFieldRounder.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorfieldrounder/VectorFieldRounder.html @@ -1,18 +1,18 @@ -Module that rounds a defined field attribute. The rounding pattern has to be provided with the standard Java convention. More information about how to use the patterns are available in the Java Almanac . -
                                                            -For example if you want to round values in a double field to have only two decimals you can use the following pattern #.## or #.00 -if you decide that the numbers have to have always two decimals, in case of just one a zero will be added at the end. -
                                                            -
                                                            -

                                                            Inputs

                                                            -
                                                              -
                                                            • the vector of which to round values of a numeric field
                                                            • -
                                                            • the double attribute field of the values to round
                                                            • -
                                                            • the rounding pattern
                                                            • -
                                                            -
                                                            -
                                                            -

                                                            Output

                                                            -
                                                              -
                                                            • the modified vector file
                                                            • -
                                                            +Module that rounds a defined field attribute. The rounding pattern has to be provided with the standard Java convention. More information about how to use the patterns are available in the Java Almanac . +
                                                            +For example if you want to round values in a double field to have only two decimals you can use the following pattern #.## or #.00 +if you decide that the numbers have to have always two decimals, in case of just one a zero will be added at the end. +
                                                            +
                                                            +

                                                            Inputs

                                                            +
                                                              +
                                                            • the vector of which to round values of a numeric field
                                                            • +
                                                            • the double attribute field of the values to round
                                                            • +
                                                            • the rounding pattern
                                                            • +
                                                            +
                                                            +
                                                            +

                                                            Output

                                                            +
                                                              +
                                                            • the modified vector file
                                                            • +
                                                            diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorfilter/VectorFilter.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorfilter/VectorFilter.html index c4c5560cc..f1c3d606c 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorfilter/VectorFilter.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorfilter/VectorFilter.html @@ -1,16 +1,16 @@ -Module that creates a subset of a vector based on a filtered vector. -
                                                            -The filter uses the ECQL or CQL language, please refer to the uDig user manual or the GeoTools documentation for more informations about the syntax and usability of the language. -
                                                            -
                                                            -

                                                            Inputs

                                                            -
                                                              -
                                                            • the vector to filter
                                                            • -
                                                            • the ECQL filter function
                                                            • -
                                                            -
                                                            -
                                                            -

                                                            Output

                                                            -
                                                              -
                                                            • the filtered vector
                                                            • +Module that creates a subset of a vector based on a filtered vector. +
                                                              +The filter uses the ECQL or CQL language, please refer to the uDig user manual or the GeoTools documentation for more informations about the syntax and usability of the language. +
                                                              +
                                                              +

                                                              Inputs

                                                              +
                                                                +
                                                              • the vector to filter
                                                              • +
                                                              • the ECQL filter function
                                                              • +
                                                              +
                                                              +
                                                              +

                                                              Output

                                                              +
                                                                +
                                                              • the filtered vector
                                                              \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorize/Vectorizer.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorize/Vectorizer.html index 384240ad0..14723e063 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorize/Vectorizer.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorize/Vectorizer.html @@ -1,16 +1,16 @@ -Module for raster to vector conversion. -
                                                              -
                                                              -

                                                              Inputs

                                                              -
                                                                -
                                                              • the raster that has to be converted
                                                              • -
                                                              • the value to use to trace the polygons, if it is null then all the values of the raster are used
                                                              • -
                                                              • the field name to use as to store the raster value in the vector
                                                              • -
                                                              • a threshold on cell number to filter away polygons with cells less than that
                                                              • -
                                                              -
                                                              -
                                                              -

                                                              Output

                                                              -
                                                                -
                                                              • the extracted vector
                                                              • +Module for raster to vector conversion. +
                                                                +
                                                                +

                                                                Inputs

                                                                +
                                                                  +
                                                                • the raster that has to be converted
                                                                • +
                                                                • the value to use to trace the polygons, if it is null then all the values of the raster are used
                                                                • +
                                                                • the field name to use as to store the raster value in the vector
                                                                • +
                                                                • a threshold on cell number to filter away polygons with cells less than that
                                                                • +
                                                                +
                                                                +
                                                                +

                                                                Output

                                                                +
                                                                  +
                                                                • the extracted vector
                                                                \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectormerger/VectorMerger.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectormerger/VectorMerger.html index 51df52085..389666c57 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectormerger/VectorMerger.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectormerger/VectorMerger.html @@ -1,15 +1,15 @@ -Module for merging vecotrs into one single. -
                                                                -The vectors to merge have to have the same attribute table, in this case all the features will be put together into the new vector updating also the attribute table. -
                                                                -
                                                                -

                                                                Inputs

                                                                -
                                                                  -
                                                                • the input vectors to be merged, a list of vectors comma separated
                                                                • -
                                                                -
                                                                -
                                                                -

                                                                Output

                                                                -
                                                                  -
                                                                • the output merged vector
                                                                • +Module for merging vecotrs into one single. +
                                                                  +The vectors to merge have to have the same attribute table, in this case all the features will be put together into the new vector updating also the attribute table. +
                                                                  +
                                                                  +

                                                                  Inputs

                                                                  +
                                                                    +
                                                                  • the input vectors to be merged, a list of vectors comma separated
                                                                  • +
                                                                  +
                                                                  +
                                                                  +

                                                                  Output

                                                                  +
                                                                    +
                                                                  • the output merged vector
                                                                  \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorreprojector/VectorReprojector.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorreprojector/VectorReprojector.html index 430d1d72c..934d77f92 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorreprojector/VectorReprojector.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorreprojector/VectorReprojector.html @@ -1,26 +1,26 @@ -Module for vector reprojection. -
                                                                    -
                                                                  • add one or more new columns to the vector table attribute
                                                                  • -
                                                                  • convert the geometry into a derived geometry (from polygons to points or to lines)
                                                                  • -
                                                                  • delete from the vector table attribute
                                                                  • -
                                                                  -
                                                                  -The model can run into two different modes: -
                                                                    -
                                                                  • using only the available parameters for the reprojection
                                                                  • -
                                                                  • forcing the model to use the most precise parameters for Datum transformation (the so called Bursa Wolf parameters), in this case the choosen CRS has to contain those parameters
                                                                  • -
                                                                    -
                                                                    -

                                                                    Inputs

                                                                    -
                                                                      -
                                                                    • the vector that has to be reprojected
                                                                    • -
                                                                    • the code defining the target coordinate reference system, composed by authority and code number (ex. EPSG:4328)
                                                                    • -
                                                                    • a coordinate reference system on which to force the input, composed by authority and code number (ex. EPSG:4328)
                                                                    • -
                                                                    • set to true this flag, the reprojection can have some error due to different datums, if set to false, it won't reproject without Bursa Wolf parameters
                                                                    • -
                                                                    -
                                                                    -
                                                                    -

                                                                    Output

                                                                    -
                                                                      -
                                                                    • the output reprojected vector
                                                                    • +Module for vector reprojection. +
                                                                        +
                                                                      • add one or more new columns to the vector table attribute
                                                                      • +
                                                                      • convert the geometry into a derived geometry (from polygons to points or to lines)
                                                                      • +
                                                                      • delete from the vector table attribute
                                                                      • +
                                                                      +
                                                                      +The model can run into two different modes: +
                                                                        +
                                                                      • using only the available parameters for the reprojection
                                                                      • +
                                                                      • forcing the model to use the most precise parameters for Datum transformation (the so called Bursa Wolf parameters), in this case the choosen CRS has to contain those parameters
                                                                      • +
                                                                        +
                                                                        +

                                                                        Inputs

                                                                        +
                                                                          +
                                                                        • the vector that has to be reprojected
                                                                        • +
                                                                        • the code defining the target coordinate reference system, composed by authority and code number (ex. EPSG:4328)
                                                                        • +
                                                                        • a coordinate reference system on which to force the input, composed by authority and code number (ex. EPSG:4328)
                                                                        • +
                                                                        • set to true this flag, the reprojection can have some error due to different datums, if set to false, it won't reproject without Bursa Wolf parameters
                                                                        • +
                                                                        +
                                                                        +
                                                                        +

                                                                        Output

                                                                        +
                                                                          +
                                                                        • the output reprojected vector
                                                                        \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorreshaper/VectorReshaper.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorreshaper/VectorReshaper.html index ad1db176c..b9f842991 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorreshaper/VectorReshaper.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorreshaper/VectorReshaper.html @@ -1,55 +1,55 @@ -Module to reshape vectors. The reshape operation includes the -possibility to: -
                                                                          -
                                                                        • add one or more new columns to the vector table attribute
                                                                        • -
                                                                        • convert the geometry into a derived geometry (from polygons to -points or to lines)
                                                                        • -
                                                                        • delete from the vector table attribute
                                                                        • -
                                                                        -
                                                                        -The reshape uses the ECQL language, please refer to the -uDig user manual or the -GeoTools documentation for more informations about the syntax and -usability of the language. -
                                                                        -
                                                                        -Geometry changing examples: -
                                                                        -To create a centroid layer from a polygon layer use:
                                                                        -
                                                                        - the_geom=centroid(the_geom)
                                                                        -
                                                                        -To create a buffer of 20 meters from a points layer use:
                                                                        -
                                                                        - the_geom=buffer(the_geom, 20.0)
                                                                        -
                                                                        -To create a convex hull from a points layer use:
                                                                        -
                                                                        - the_geom=convexHull(the_geom)
                                                                        -
                                                                        -Other examples: -
                                                                        -To create a two new field containing the perimeter and area of the -polygons in a layer:
                                                                        -
                                                                        - area=area(the_geom)
                                                                        - length=geomLength(the_geom)
                                                                        -
                                                                        -This is also the perfect way to create a new column in a shapefile -layer and assign it a new default value:
                                                                        -
                                                                        - newfield=-1
                                                                        -
                                                                        -
                                                                        -

                                                                        Inputs

                                                                        -
                                                                          -
                                                                        • the vector to reshape
                                                                        • -
                                                                        • the ECQL reshape function
                                                                        • -
                                                                        • the list of fields to remove, comma separated
                                                                        • -
                                                                        -
                                                                        -
                                                                        -

                                                                        Output

                                                                        -
                                                                          -
                                                                        • the new derived vector
                                                                        • +Module to reshape vectors. The reshape operation includes the +possibility to: +
                                                                            +
                                                                          • add one or more new columns to the vector table attribute
                                                                          • +
                                                                          • convert the geometry into a derived geometry (from polygons to +points or to lines)
                                                                          • +
                                                                          • delete from the vector table attribute
                                                                          • +
                                                                          +
                                                                          +The reshape uses the ECQL language, please refer to the +uDig user manual or the +GeoTools documentation for more informations about the syntax and +usability of the language. +
                                                                          +
                                                                          +Geometry changing examples: +
                                                                          +To create a centroid layer from a polygon layer use:
                                                                          +
                                                                          + the_geom=centroid(the_geom)
                                                                          +
                                                                          +To create a buffer of 20 meters from a points layer use:
                                                                          +
                                                                          + the_geom=buffer(the_geom, 20.0)
                                                                          +
                                                                          +To create a convex hull from a points layer use:
                                                                          +
                                                                          + the_geom=convexHull(the_geom)
                                                                          +
                                                                          +Other examples: +
                                                                          +To create a two new field containing the perimeter and area of the +polygons in a layer:
                                                                          +
                                                                          + area=area(the_geom)
                                                                          + length=geomLength(the_geom)
                                                                          +
                                                                          +This is also the perfect way to create a new column in a shapefile +layer and assign it a new default value:
                                                                          +
                                                                          + newfield=-1
                                                                          +
                                                                          +
                                                                          +

                                                                          Inputs

                                                                          +
                                                                            +
                                                                          • the vector to reshape
                                                                          • +
                                                                          • the ECQL reshape function
                                                                          • +
                                                                          • the list of fields to remove, comma separated
                                                                          • +
                                                                          +
                                                                          +
                                                                          +

                                                                          Output

                                                                          +
                                                                            +
                                                                          • the new derived vector
                                                                          \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorsimplifier/VectorSimplifier.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorsimplifier/VectorSimplifier.html index fa06b396d..88c198239 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorsimplifier/VectorSimplifier.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectorsimplifier/VectorSimplifier.html @@ -1,23 +1,23 @@ -Collection of vector simplification algorithms. This model works on all kind of feature types (point, line or polygon), obviously the simplification of a point layer is nonsense. -
                                                                          -Simplification is used to reducing the number of points in a geometry that is approximated by a series of points. -
                                                                          -There are two different simplification algorithms integrated in this module: -
                                                                            -
                                                                          • 0 : TopologyPreservingSimplifier: simplifies a geometry, ensuring that the result is a valid geometry having the same dimension and number of components as the input. The simplification uses a maximum distance difference algorithm similar to the one used in the Douglas-Peucker algorithm
                                                                          • -
                                                                          • 1 : Douglas Peucker: a detailed description of this method is available in Wikipedia
                                                                          • -
                                                                          -
                                                                          -
                                                                          -

                                                                          Inputs

                                                                          -
                                                                            -
                                                                          • the vector to be simplified
                                                                          • -
                                                                          • the simplification type: TopologyPreservingSimplifier (0), Douglas Peucker (1) (default = 0)
                                                                          • -
                                                                          • the distance tolerance for the simplification
                                                                          • -
                                                                          -
                                                                          -
                                                                          -

                                                                          Output

                                                                          -
                                                                            -
                                                                          • the simplified vector
                                                                          • +Collection of vector simplification algorithms. This model works on all kind of feature types (point, line or polygon), obviously the simplification of a point layer is nonsense. +
                                                                            +Simplification is used to reducing the number of points in a geometry that is approximated by a series of points. +
                                                                            +There are two different simplification algorithms integrated in this module: +
                                                                              +
                                                                            • 0 : TopologyPreservingSimplifier: simplifies a geometry, ensuring that the result is a valid geometry having the same dimension and number of components as the input. The simplification uses a maximum distance difference algorithm similar to the one used in the Douglas-Peucker algorithm
                                                                            • +
                                                                            • 1 : Douglas Peucker: a detailed description of this method is available in Wikipedia
                                                                            • +
                                                                            +
                                                                            +
                                                                            +

                                                                            Inputs

                                                                            +
                                                                              +
                                                                            • the vector to be simplified
                                                                            • +
                                                                            • the simplification type: TopologyPreservingSimplifier (0), Douglas Peucker (1) (default = 0)
                                                                            • +
                                                                            • the distance tolerance for the simplification
                                                                            • +
                                                                            +
                                                                            +
                                                                            +

                                                                            Output

                                                                            +
                                                                              +
                                                                            • the simplified vector
                                                                            \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectortablejoiner/VectorTableJoiner.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectortablejoiner/VectorTableJoiner.html index 297695192..7bcfbbee7 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectortablejoiner/VectorTableJoiner.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/modules/v/vectortablejoiner/VectorTableJoiner.html @@ -1,18 +1,18 @@ -Module that joins attributes from one vector into another based on a common field. The second attribute table can be a dbf related to a shapefile or just a dbf data file. -
                                                                            -The program will create a new vector file with the original and the new attributes fields. -
                                                                            -
                                                                            -

                                                                            Inputs

                                                                            -
                                                                              -
                                                                            • the vector to extend
                                                                            • -
                                                                            • the dbf tabledata to merge in
                                                                            • -
                                                                            • the common field used for joining the tables. If the name is different in the two sources, then write the two commaseparated, first the one of the shapefile, then the dbf field name
                                                                            • -
                                                                            • the commaseparated list of fields to merge in: it is possible to merge all the dbf table or just a selected set of them
                                                                            • -
                                                                            -
                                                                            -
                                                                            -

                                                                            Output

                                                                            -
                                                                              -
                                                                            • the modified joined vector
                                                                            • +Module that joins attributes from one vector into another based on a common field. The second attribute table can be a dbf related to a shapefile or just a dbf data file. +
                                                                              +The program will create a new vector file with the original and the new attributes fields. +
                                                                              +
                                                                              +

                                                                              Inputs

                                                                              +
                                                                                +
                                                                              • the vector to extend
                                                                              • +
                                                                              • the dbf tabledata to merge in
                                                                              • +
                                                                              • the common field used for joining the tables. If the name is different in the two sources, then write the two commaseparated, first the one of the shapefile, then the dbf field name
                                                                              • +
                                                                              • the commaseparated list of fields to merge in: it is possible to merge all the dbf table or just a selected set of them
                                                                              • +
                                                                              +
                                                                              +
                                                                              +

                                                                              Output

                                                                              +
                                                                                +
                                                                              • the modified joined vector
                                                                              \ No newline at end of file diff --git a/jgrassgears/src/main/resources/org/jgrasstools/gears/ui/MapsViewer.html b/jgrassgears/src/main/resources/org/jgrasstools/gears/ui/MapsViewer.html index ff6e99cb1..565ea248d 100644 --- a/jgrassgears/src/main/resources/org/jgrasstools/gears/ui/MapsViewer.html +++ b/jgrassgears/src/main/resources/org/jgrasstools/gears/ui/MapsViewer.html @@ -1,13 +1,13 @@ -This model is a simple geodata viewer and it can be used to visualize both vector and raster data. -
                                                                              -

                                                                              Parameters

                                                                              -
                                                                                -
                                                                              • a group or a single geodata (raster or vector) to visualize
                                                                              • -
                                                                              • in case of vector layer the style file to use for visualization
                                                                              • -
                                                                              -
                                                                              -
                                                                              -

                                                                              Note

                                                                              -
                                                                                -
                                                                              • the module will open a new window with the map view
                                                                              • +This model is a simple geodata viewer and it can be used to visualize both vector and raster data. +
                                                                                +

                                                                                Parameters

                                                                                +
                                                                                  +
                                                                                • a group or a single geodata (raster or vector) to visualize
                                                                                • +
                                                                                • in case of vector layer the style file to use for visualization
                                                                                • +
                                                                                +
                                                                                +
                                                                                +

                                                                                Note

                                                                                +
                                                                                  +
                                                                                • the module will open a new window with the map view
                                                                                \ No newline at end of file diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestBobTheBuilder.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestBobTheBuilder.java index f10edcdb3..fe77a1b36 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestBobTheBuilder.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestBobTheBuilder.java @@ -1,58 +1,58 @@ -///* -// * This file is part of JGrasstools (http://www.jgrasstools.org) -// * (C) HydroloGIS - www.hydrologis.com -// * -// * JGrasstools is free software: you can redistribute it and/or modify -// * it under the terms of the GNU General Public License as published by -// * the Free Software Foundation, either version 3 of the License, or -// * (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program. If not, see . -// */ -//package org.jgrasstools.gears.modules; -// -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.geotools.data.simple.SimpleFeatureCollection; -//import org.jgrasstools.gears.io.rasterreader.RasterReader; -//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; -//import org.jgrasstools.gears.io.vectorreader.VectorReader; -//import org.jgrasstools.gears.modules.r.bobthebuilder.BobTheBuilder; -//import org.jgrasstools.gears.utils.HMTestCase; -// -///** -// * Test for {@link BobTheBuilder} -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestBobTheBuilder extends HMTestCase { -// -// public void testBobTheBuilder() throws Exception { -// String area = "/home/moovida/data/hydrocareworkspace/grassdb/utm32n_etrf89/bobthebuilder/shapefiles/polygon.shp"; -// String points = "/home/moovida/data/hydrocareworkspace/grassdb/utm32n_etrf89/bobthebuilder/shapefiles/elevpoints.shp"; -// String dtm = "/home/moovida/data/hydrocareworkspace/grassdb/utm32n_etrf89/bobthebuilder/cell/dtm"; -// String outdtm = "/home/moovida/data/hydrocareworkspace/grassdb/utm32n_etrf89/bobthebuilder/cell/dtm_bob_erode"; -// -// GridCoverage2D inRaster = RasterReader.readRaster(dtm); -// SimpleFeatureCollection inArea = VectorReader.readVector(area); -// SimpleFeatureCollection inPoints = VectorReader.readVector(points); -// -// BobTheBuilder bob = new BobTheBuilder(); -// bob.pm = pm; -// bob.inRaster = inRaster; -// bob.inArea = inArea; -// bob.inElevations = inPoints; -// bob.doErode = true; -// bob.fElevation = "elev"; -// bob.process(); -// GridCoverage2D outRaster = bob.outRaster; -// -// RasterWriter.writeRaster(outdtm, outRaster); -// } -// -//} +///* +// * This file is part of JGrasstools (http://www.jgrasstools.org) +// * (C) HydroloGIS - www.hydrologis.com +// * +// * JGrasstools is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see . +// */ +//package org.jgrasstools.gears.modules; +// +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.geotools.data.simple.SimpleFeatureCollection; +//import org.jgrasstools.gears.io.rasterreader.RasterReader; +//import org.jgrasstools.gears.io.rasterwriter.RasterWriter; +//import org.jgrasstools.gears.io.vectorreader.VectorReader; +//import org.jgrasstools.gears.modules.r.bobthebuilder.BobTheBuilder; +//import org.jgrasstools.gears.utils.HMTestCase; +// +///** +// * Test for {@link BobTheBuilder} +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestBobTheBuilder extends HMTestCase { +// +// public void testBobTheBuilder() throws Exception { +// String area = "/home/moovida/data/hydrocareworkspace/grassdb/utm32n_etrf89/bobthebuilder/shapefiles/polygon.shp"; +// String points = "/home/moovida/data/hydrocareworkspace/grassdb/utm32n_etrf89/bobthebuilder/shapefiles/elevpoints.shp"; +// String dtm = "/home/moovida/data/hydrocareworkspace/grassdb/utm32n_etrf89/bobthebuilder/cell/dtm"; +// String outdtm = "/home/moovida/data/hydrocareworkspace/grassdb/utm32n_etrf89/bobthebuilder/cell/dtm_bob_erode"; +// +// GridCoverage2D inRaster = RasterReader.readRaster(dtm); +// SimpleFeatureCollection inArea = VectorReader.readVector(area); +// SimpleFeatureCollection inPoints = VectorReader.readVector(points); +// +// BobTheBuilder bob = new BobTheBuilder(); +// bob.pm = pm; +// bob.inRaster = inRaster; +// bob.inArea = inArea; +// bob.inElevations = inPoints; +// bob.doErode = true; +// bob.fElevation = "elev"; +// bob.process(); +// GridCoverage2D outRaster = bob.outRaster; +// +// RasterWriter.writeRaster(outdtm, outRaster); +// } +// +//} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestContourExtractor.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestContourExtractor.java index 8b425e749..e201c3fe0 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestContourExtractor.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestContourExtractor.java @@ -1,62 +1,62 @@ -///* -// * This file is part of JGrasstools (http://www.jgrasstools.org) -// * (C) HydroloGIS - www.hydrologis.com -// * -// * JGrasstools is free software: you can redistribute it and/or modify -// * it under the terms of the GNU General Public License as published by -// * the Free Software Foundation, either version 3 of the License, or -// * (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program. If not, see . -// */ -//package org.jgrasstools.gears.modules; -// -//import java.util.HashMap; -// -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.geotools.data.simple.SimpleFeatureCollection; -//import org.geotools.data.simple.SimpleFeatureIterator; -//import org.jgrasstools.gears.modules.v.contoursextractor.ContourExtractor; -//import org.jgrasstools.gears.utils.HMTestCase; -//import org.jgrasstools.gears.utils.HMTestMaps; -//import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -//import org.opengis.referencing.crs.CoordinateReferenceSystem; -// -//import com.vividsolutions.jts.geom.Geometry; -// -///** -// * Test for the {@link ContourExtractor}. -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestContourExtractor extends HMTestCase { -// public void testCountourExtractor() throws Exception { -// HashMap envelopeParams = HMTestMaps.envelopeParams; -// CoordinateReferenceSystem crs = HMTestMaps.crs; -// double[][] netData = HMTestMaps.contourExtractorData; -// GridCoverage2D cedCoverage = CoverageUtilities.buildCoverage("ced", netData, envelopeParams, crs, true); -// -// ContourExtractor extractor = new ContourExtractor(); -// extractor.inCoverage = cedCoverage; -// extractor.pMax = 95.0; -// extractor.pMin = 90.0; -// extractor.pInterval = 5.0; -// extractor.process(); -// -// SimpleFeatureCollection contours = extractor.outGeodata; -// assertTrue(contours.size() == 2); -// -// SimpleFeatureIterator featureIterator = contours.features(); -// Geometry geometry = (Geometry) featureIterator.next().getDefaultGeometry(); -// System.out.println(geometry.toText()); -// geometry = (Geometry) featureIterator.next().getDefaultGeometry(); -// System.out.println(geometry.toText()); -// } -// -//} +///* +// * This file is part of JGrasstools (http://www.jgrasstools.org) +// * (C) HydroloGIS - www.hydrologis.com +// * +// * JGrasstools is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see . +// */ +//package org.jgrasstools.gears.modules; +// +//import java.util.HashMap; +// +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.geotools.data.simple.SimpleFeatureCollection; +//import org.geotools.data.simple.SimpleFeatureIterator; +//import org.jgrasstools.gears.modules.v.contoursextractor.ContourExtractor; +//import org.jgrasstools.gears.utils.HMTestCase; +//import org.jgrasstools.gears.utils.HMTestMaps; +//import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +//import org.opengis.referencing.crs.CoordinateReferenceSystem; +// +//import com.vividsolutions.jts.geom.Geometry; +// +///** +// * Test for the {@link ContourExtractor}. +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestContourExtractor extends HMTestCase { +// public void testCountourExtractor() throws Exception { +// HashMap envelopeParams = HMTestMaps.envelopeParams; +// CoordinateReferenceSystem crs = HMTestMaps.crs; +// double[][] netData = HMTestMaps.contourExtractorData; +// GridCoverage2D cedCoverage = CoverageUtilities.buildCoverage("ced", netData, envelopeParams, crs, true); +// +// ContourExtractor extractor = new ContourExtractor(); +// extractor.inCoverage = cedCoverage; +// extractor.pMax = 95.0; +// extractor.pMin = 90.0; +// extractor.pInterval = 5.0; +// extractor.process(); +// +// SimpleFeatureCollection contours = extractor.outGeodata; +// assertTrue(contours.size() == 2); +// +// SimpleFeatureIterator featureIterator = contours.features(); +// Geometry geometry = (Geometry) featureIterator.next().getDefaultGeometry(); +// System.out.println(geometry.toText()); +// geometry = (Geometry) featureIterator.next().getDefaultGeometry(); +// System.out.println(geometry.toText()); +// } +// +//} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestCutOut.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestCutOut.java index 943e8fcd5..0b153dd94 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestCutOut.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestCutOut.java @@ -1,83 +1,83 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.modules.r.cutout.CutOut; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test for {@link CutOut} - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestCutOut extends HMTestCase { - - private GridCoverage2D inCoverage; - private GridCoverage2D inMask; - - protected void setUp() throws Exception { - double[][] inData = HMTestMaps.mapData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); - - double[][] maskData = HMTestMaps.extractNet0Data; - inMask = CoverageUtilities.buildCoverage("data", maskData, envelopeParams, crs, true); - } - - public void testCutout() throws Exception { - CutOut cutout = new CutOut(); - cutout.pm = pm; - cutout.inRaster = inCoverage; - cutout.inMask = inMask; - cutout.process(); - GridCoverage2D out = cutout.outRaster; - checkMatrixEqual(out.getRenderedImage(), HMTestMaps.cutoutData, 0); - } - - public void testCutoutInverse() throws Exception { - CutOut cutout = new CutOut(); - cutout.pm = pm; - cutout.inRaster = inCoverage; - cutout.inMask = inMask; - cutout.doInverse = true; - cutout.process(); - GridCoverage2D out = cutout.outRaster; - checkMatrixEqual(out.getRenderedImage(), HMTestMaps.cutoutDataInverse, 0); - } - - public void testCutoutInverseWithThresholds() throws Exception { - CutOut cutout = new CutOut(); - cutout.pm = pm; - cutout.inRaster = inCoverage; - cutout.inMask = inMask; - cutout.doInverse = true; - cutout.pMax = 1400.0; - cutout.pMin = 800.0; - cutout.process(); - GridCoverage2D out = cutout.outRaster; - checkMatrixEqual(out.getRenderedImage(), HMTestMaps.cutoutDataMaxMinInverse800_1400, 0); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.modules.r.cutout.CutOut; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test for {@link CutOut} + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestCutOut extends HMTestCase { + + private GridCoverage2D inCoverage; + private GridCoverage2D inMask; + + protected void setUp() throws Exception { + double[][] inData = HMTestMaps.mapData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); + + double[][] maskData = HMTestMaps.extractNet0Data; + inMask = CoverageUtilities.buildCoverage("data", maskData, envelopeParams, crs, true); + } + + public void testCutout() throws Exception { + CutOut cutout = new CutOut(); + cutout.pm = pm; + cutout.inRaster = inCoverage; + cutout.inMask = inMask; + cutout.process(); + GridCoverage2D out = cutout.outRaster; + checkMatrixEqual(out.getRenderedImage(), HMTestMaps.cutoutData, 0); + } + + public void testCutoutInverse() throws Exception { + CutOut cutout = new CutOut(); + cutout.pm = pm; + cutout.inRaster = inCoverage; + cutout.inMask = inMask; + cutout.doInverse = true; + cutout.process(); + GridCoverage2D out = cutout.outRaster; + checkMatrixEqual(out.getRenderedImage(), HMTestMaps.cutoutDataInverse, 0); + } + + public void testCutoutInverseWithThresholds() throws Exception { + CutOut cutout = new CutOut(); + cutout.pm = pm; + cutout.inRaster = inCoverage; + cutout.inMask = inMask; + cutout.doInverse = true; + cutout.pMax = 1400.0; + cutout.pMin = 800.0; + cutout.process(); + GridCoverage2D out = cutout.outRaster; + checkMatrixEqual(out.getRenderedImage(), HMTestMaps.cutoutDataMaxMinInverse800_1400, 0); + } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestDwgConverter.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestDwgConverter.java index 8d7841b9f..4bd9dae45 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestDwgConverter.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestDwgConverter.java @@ -1,64 +1,64 @@ -///* -// * This file is part of JGrasstools (http://www.jgrasstools.org) -// * (C) HydroloGIS - www.hydrologis.com -// * -// * JGrasstools is free software: you can redistribute it and/or modify -// * it under the terms of the GNU General Public License as published by -// * the Free Software Foundation, either version 3 of the License, or -// * (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program. If not, see . -// */ -//package org.jgrasstools.gears.modules; -// -//import java.io.File; -//import java.net.URL; -// -//import org.geotools.data.simple.SimpleFeatureCollection; -//import org.jgrasstools.gears.modules.v.vectorconverter.DwgConverter; -//import org.jgrasstools.gears.modules.v.vectorconverter.DxfConverter; -//import org.jgrasstools.gears.utils.HMTestCase; -//import org.opengis.feature.simple.SimpleFeature; -// -//import com.vividsolutions.jts.geom.Coordinate; -//import com.vividsolutions.jts.geom.Geometry; -///** -// * Test for the {@link DwgConverter} -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestDwgConverter extends HMTestCase { -// -// @SuppressWarnings("nls") -// public void testVectorFilter() throws Exception { -// URL testUrl = this.getClass().getClassLoader().getResource("test.dxf"); -// String dxfFile = new File(testUrl.toURI()).getAbsolutePath(); -// -// DwgConverter reader = new DwgConverter(); -// reader.file = dxfFile; -// reader.readFeatureCollection(); -// -// SimpleFeatureCollection pointsFC = reader.pointsFC; -// SimpleFeatureCollection linesFC = reader.lineFC; -// -// assertTrue(pointsFC.size() == 0); -// assertTrue(linesFC.size() == 1); -// -// SimpleFeature feature = linesFC.features().next(); -// Geometry geometry = (Geometry) feature.getDefaultGeometry(); -// Coordinate[] coordinates = geometry.getCoordinates(); -// -// double delta = 0.000001; -// assertEquals(coordinates[0].x, 0.0, delta); -// assertEquals(coordinates[0].y, 0.0, delta); -// assertEquals(coordinates[1].x, 10.0, delta); -// assertEquals(coordinates[1].y, 10.0, delta); -// -// } -// } +///* +// * This file is part of JGrasstools (http://www.jgrasstools.org) +// * (C) HydroloGIS - www.hydrologis.com +// * +// * JGrasstools is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see . +// */ +//package org.jgrasstools.gears.modules; +// +//import java.io.File; +//import java.net.URL; +// +//import org.geotools.data.simple.SimpleFeatureCollection; +//import org.jgrasstools.gears.modules.v.vectorconverter.DwgConverter; +//import org.jgrasstools.gears.modules.v.vectorconverter.DxfConverter; +//import org.jgrasstools.gears.utils.HMTestCase; +//import org.opengis.feature.simple.SimpleFeature; +// +//import com.vividsolutions.jts.geom.Coordinate; +//import com.vividsolutions.jts.geom.Geometry; +///** +// * Test for the {@link DwgConverter} +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestDwgConverter extends HMTestCase { +// +// @SuppressWarnings("nls") +// public void testVectorFilter() throws Exception { +// URL testUrl = this.getClass().getClassLoader().getResource("test.dxf"); +// String dxfFile = new File(testUrl.toURI()).getAbsolutePath(); +// +// DwgConverter reader = new DwgConverter(); +// reader.file = dxfFile; +// reader.readFeatureCollection(); +// +// SimpleFeatureCollection pointsFC = reader.pointsFC; +// SimpleFeatureCollection linesFC = reader.lineFC; +// +// assertTrue(pointsFC.size() == 0); +// assertTrue(linesFC.size() == 1); +// +// SimpleFeature feature = linesFC.features().next(); +// Geometry geometry = (Geometry) feature.getDefaultGeometry(); +// Coordinate[] coordinates = geometry.getCoordinates(); +// +// double delta = 0.000001; +// assertEquals(coordinates[0].x, 0.0, delta); +// assertEquals(coordinates[0].y, 0.0, delta); +// assertEquals(coordinates[1].x, 10.0, delta); +// assertEquals(coordinates[1].y, 10.0, delta); +// +// } +// } diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestDxfConverter.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestDxfConverter.java index eb7cc1c61..90dbb1069 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestDxfConverter.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestDxfConverter.java @@ -1,63 +1,63 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.io.File; -import java.net.URL; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.jgrasstools.gears.modules.v.vectorconverter.DxfConverter; -import org.jgrasstools.gears.utils.HMTestCase; -import org.opengis.feature.simple.SimpleFeature; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -/** - * Test for the {@link DxfConverter} - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestDxfConverter extends HMTestCase { - - @SuppressWarnings("nls") - public void testVectorFilter() throws Exception { - URL testUrl = this.getClass().getClassLoader().getResource("test.dxf"); - String dxfFile = new File(testUrl.toURI()).getAbsolutePath(); - - DxfConverter reader = new DxfConverter(); - reader.file = dxfFile; - reader.readFeatureCollection(); - - SimpleFeatureCollection pointsFC = reader.pointsVector; - SimpleFeatureCollection linesFC = reader.lineVector; - - assertTrue(pointsFC.size() == 0); - assertTrue(linesFC.size() == 1); - - SimpleFeature feature = linesFC.features().next(); - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - Coordinate[] coordinates = geometry.getCoordinates(); - - double delta = 0.000001; - assertEquals(coordinates[0].x, 0.0, delta); - assertEquals(coordinates[0].y, 0.0, delta); - assertEquals(coordinates[1].x, 10.0, delta); - assertEquals(coordinates[1].y, 10.0, delta); - - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.io.File; +import java.net.URL; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.jgrasstools.gears.modules.v.vectorconverter.DxfConverter; +import org.jgrasstools.gears.utils.HMTestCase; +import org.opengis.feature.simple.SimpleFeature; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +/** + * Test for the {@link DxfConverter} + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestDxfConverter extends HMTestCase { + + @SuppressWarnings("nls") + public void testVectorFilter() throws Exception { + URL testUrl = this.getClass().getClassLoader().getResource("test.dxf"); + String dxfFile = new File(testUrl.toURI()).getAbsolutePath(); + + DxfConverter reader = new DxfConverter(); + reader.file = dxfFile; + reader.readFeatureCollection(); + + SimpleFeatureCollection pointsFC = reader.pointsVector; + SimpleFeatureCollection linesFC = reader.lineVector; + + assertTrue(pointsFC.size() == 0); + assertTrue(linesFC.size() == 1); + + SimpleFeature feature = linesFC.features().next(); + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + Coordinate[] coordinates = geometry.getCoordinates(); + + double delta = 0.000001; + assertEquals(coordinates[0].x, 0.0, delta); + assertEquals(coordinates[0].y, 0.0, delta); + assertEquals(coordinates[1].x, 10.0, delta); + assertEquals(coordinates[1].y, 10.0, delta); + + } +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestFeatureTransformer.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestFeatureTransformer.java index 31cb97557..385fb12a3 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestFeatureTransformer.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestFeatureTransformer.java @@ -1,80 +1,80 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.modules; - -import java.util.List; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.jgrasstools.gears.modules.v.vectortransformer.VectorTransformer; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.features.FeatureMate; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.jgrasstools.gears.utils.math.NumericsUtilities; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -/** - * Test for the transformer module. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestFeatureTransformer extends HMTestCase { - - @SuppressWarnings("nls") - public void testFeatureTransformer() throws Exception { - - SimpleFeatureCollection testFC = HMTestMaps.testFC; - - VectorTransformer transformer = new VectorTransformer(); - transformer.inVector = testFC; - transformer.pTransX = 10.0; - transformer.pTransY = 10.0; - transformer.process(); - SimpleFeatureCollection outFC = transformer.outVector; - - List inMates = FeatureUtilities.featureCollectionToMatesList(testFC); - List outMates = FeatureUtilities.featureCollectionToMatesList(outFC); - - - Geometry inG = null; - for( FeatureMate featureMate : inMates ) { - Integer cat = featureMate.getAttribute("cat", Integer.class); - if (cat == 1) { - inG = featureMate.getGeometry(); - } - } - - Geometry outG = null; - for( FeatureMate featureMate : outMates ) { - Integer cat = featureMate.getAttribute("cat", Integer.class); - if (cat == 1) { - outG = featureMate.getGeometry(); - } - } - - Coordinate inCoord = inG.getCoordinate(); - Coordinate outCoord = outG.getCoordinate(); - - double distance = inCoord.distance(outCoord); - double checkDistance = NumericsUtilities.pythagoras(10, 10); - assertEquals(distance, checkDistance, 0.001); - - } -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.modules; + +import java.util.List; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.jgrasstools.gears.modules.v.vectortransformer.VectorTransformer; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.features.FeatureMate; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.jgrasstools.gears.utils.math.NumericsUtilities; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +/** + * Test for the transformer module. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestFeatureTransformer extends HMTestCase { + + @SuppressWarnings("nls") + public void testFeatureTransformer() throws Exception { + + SimpleFeatureCollection testFC = HMTestMaps.testFC; + + VectorTransformer transformer = new VectorTransformer(); + transformer.inVector = testFC; + transformer.pTransX = 10.0; + transformer.pTransY = 10.0; + transformer.process(); + SimpleFeatureCollection outFC = transformer.outVector; + + List inMates = FeatureUtilities.featureCollectionToMatesList(testFC); + List outMates = FeatureUtilities.featureCollectionToMatesList(outFC); + + + Geometry inG = null; + for( FeatureMate featureMate : inMates ) { + Integer cat = featureMate.getAttribute("cat", Integer.class); + if (cat == 1) { + inG = featureMate.getGeometry(); + } + } + + Geometry outG = null; + for( FeatureMate featureMate : outMates ) { + Integer cat = featureMate.getAttribute("cat", Integer.class); + if (cat == 1) { + outG = featureMate.getGeometry(); + } + } + + Coordinate inCoord = inG.getCoordinate(); + Coordinate outCoord = outG.getCoordinate(); + + double distance = inCoord.distance(outCoord); + double checkDistance = NumericsUtilities.pythagoras(10, 10); + assertEquals(distance, checkDistance, 0.001); + + } +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestGeotools.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestGeotools.java index a68ac51d6..1b994864e 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestGeotools.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestGeotools.java @@ -1,113 +1,113 @@ -///* -// * JGrass - Free Open Source Java GIS http://www.jgrass.org -// * (C) HydroloGIS - www.hydrologis.com -// * -// * This library is free software; you can redistribute it and/or modify it under -// * the terms of the GNU Library General Public License as published by the Free -// * Software Foundation; either version 2 of the License, or (at your option) any -// * later version. -// * -// * This library is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more -// * details. -// * -// * You should have received a copy of the GNU Library General Public License -// * along with this library; if not, write to the Free Foundation, Inc., 59 -// * Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -//package org.jgrasstools.gears.modules; -// -//import static java.lang.Double.NaN; -// -//import java.awt.image.ComponentSampleModel; -//import java.awt.image.DataBuffer; -//import java.awt.image.WritableRaster; -// -//import javax.media.jai.Interpolation; -//import javax.media.jai.RasterFactory; -// -//import org.geotools.coverage.CoverageFactoryFinder; -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.geotools.coverage.grid.GridCoverageFactory; -//import org.geotools.coverage.grid.GridEnvelope2D; -//import org.geotools.coverage.grid.GridGeometry2D; -//import org.geotools.coverage.grid.ViewType; -//import org.geotools.coverage.processing.CoverageProcessor; -//import org.geotools.geometry.Envelope2D; -//import org.geotools.referencing.CRS; -//import org.geotools.resources.image.ImageUtilities; -//import org.jgrasstools.gears.utils.HMTestCase; -//import org.opengis.coverage.processing.Operation; -//import org.opengis.geometry.Envelope; -//import org.opengis.parameter.ParameterValueGroup; -//import org.opengis.referencing.crs.CoordinateReferenceSystem; -///** -// * Test for the reprojection modules. -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestGeotools extends HMTestCase { -// -// public void testCoverageReprojector() throws Exception { -// double n = 5140020.0; -// double s = 5139780.0; -// double w = 1640650.0; -// double e = 1640950.0; -// int rows = 8; -// int cols = 10; -// -// double[][] elevationData = new double[][]{// -// {800, 900, 1000, 1000, 1200, 1250, 1300, 1350, 1450, 1500}, // -// {600, NaN, 750, 850, 860, 900, 1000, 1200, 1250, 1500}, // -// {500, 550, 700, 750, 800, 850, 900, 1000, 1100, 1500}, // -// {400, 410, 650, 700, 750, 800, 850, 490, 450, 1500}, // -// {450, 550, 430, 500, 600, 700, 800, 500, 450, 1500}, // -// {500, 600, 700, 750, 760, 770, 850, 1000, 1150, 1500}, // -// {600, 700, 750, 800, 780, 790, 1000, 1100, 1250, 1500}, // -// {800, 910, 980, 1001, 1150, 1200, 1250, 1300, 1450, 1500}}; -// -// CoordinateReferenceSystem crs = null; -// try { -// crs = CRS.decode("EPSG:32632"); -// } catch (Exception ex) { -// ex.printStackTrace(); -// } -// -// int height = elevationData.length; -// int width = elevationData[0].length; -// int dataType = DataBuffer.TYPE_DOUBLE; -// -// ComponentSampleModel sampleModel = new ComponentSampleModel(dataType, width, height, 1, width, new int[]{0}); -// WritableRaster raster = RasterFactory.createWritableRaster(sampleModel, null); -// for( int y = 0; y < height; y++ ) { -// for( int x = 0; x < width; x++ ) { -// raster.setSample(x, y, 0, elevationData[y][x]); -// } -// } -// -// Envelope2D writeEnvelope = new Envelope2D(crs, w, s, e - w, n - s); -// GridCoverageFactory factory = CoverageFactoryFinder.getGridCoverageFactory(null); -// GridCoverage2D elevationCoverage = factory.create("to_resample", raster, writeEnvelope); -// -// CoverageProcessor processor = CoverageProcessor.getInstance(); -// Operation resampleOp = processor.getOperation("Resample"); //$NON-NLS-1$ -// -// Envelope envelope = new Envelope2D(crs, w, s, e - w, n - s); -// GridEnvelope2D gridRange = new GridEnvelope2D(0, 0, cols / 2, rows / 2); -// GridGeometry2D newGridGeometry = new GridGeometry2D(gridRange, envelope); -// -// ParameterValueGroup param = resampleOp.getParameters(); -// param.parameter("Source").setValue(elevationCoverage.view(ViewType.GEOPHYSICS)); -// param.parameter("GridGeometry").setValue(newGridGeometry); -// param.parameter("CoordinateReferenceSystem").setValue(crs); -// -// Interpolation interpolation = Interpolation.getInstance(Interpolation.INTERP_BILINEAR); -// String interpolationType = ImageUtilities.getInterpolationName(interpolation); -// param.parameter("InterpolationType").setValue(interpolationType); -// -// GridCoverage2D outGeodata = (GridCoverage2D) processor.doOperation(param); -// outGeodata.getRenderedImage().getData(); -// } -// -//} +///* +// * JGrass - Free Open Source Java GIS http://www.jgrass.org +// * (C) HydroloGIS - www.hydrologis.com +// * +// * This library is free software; you can redistribute it and/or modify it under +// * the terms of the GNU Library General Public License as published by the Free +// * Software Foundation; either version 2 of the License, or (at your option) any +// * later version. +// * +// * This library is distributed in the hope that it will be useful, but WITHOUT +// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +// * details. +// * +// * You should have received a copy of the GNU Library General Public License +// * along with this library; if not, write to the Free Foundation, Inc., 59 +// * Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +//package org.jgrasstools.gears.modules; +// +//import static java.lang.Double.NaN; +// +//import java.awt.image.ComponentSampleModel; +//import java.awt.image.DataBuffer; +//import java.awt.image.WritableRaster; +// +//import javax.media.jai.Interpolation; +//import javax.media.jai.RasterFactory; +// +//import org.geotools.coverage.CoverageFactoryFinder; +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.geotools.coverage.grid.GridCoverageFactory; +//import org.geotools.coverage.grid.GridEnvelope2D; +//import org.geotools.coverage.grid.GridGeometry2D; +//import org.geotools.coverage.grid.ViewType; +//import org.geotools.coverage.processing.CoverageProcessor; +//import org.geotools.geometry.Envelope2D; +//import org.geotools.referencing.CRS; +//import org.geotools.resources.image.ImageUtilities; +//import org.jgrasstools.gears.utils.HMTestCase; +//import org.opengis.coverage.processing.Operation; +//import org.opengis.geometry.Envelope; +//import org.opengis.parameter.ParameterValueGroup; +//import org.opengis.referencing.crs.CoordinateReferenceSystem; +///** +// * Test for the reprojection modules. +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestGeotools extends HMTestCase { +// +// public void testCoverageReprojector() throws Exception { +// double n = 5140020.0; +// double s = 5139780.0; +// double w = 1640650.0; +// double e = 1640950.0; +// int rows = 8; +// int cols = 10; +// +// double[][] elevationData = new double[][]{// +// {800, 900, 1000, 1000, 1200, 1250, 1300, 1350, 1450, 1500}, // +// {600, NaN, 750, 850, 860, 900, 1000, 1200, 1250, 1500}, // +// {500, 550, 700, 750, 800, 850, 900, 1000, 1100, 1500}, // +// {400, 410, 650, 700, 750, 800, 850, 490, 450, 1500}, // +// {450, 550, 430, 500, 600, 700, 800, 500, 450, 1500}, // +// {500, 600, 700, 750, 760, 770, 850, 1000, 1150, 1500}, // +// {600, 700, 750, 800, 780, 790, 1000, 1100, 1250, 1500}, // +// {800, 910, 980, 1001, 1150, 1200, 1250, 1300, 1450, 1500}}; +// +// CoordinateReferenceSystem crs = null; +// try { +// crs = CRS.decode("EPSG:32632"); +// } catch (Exception ex) { +// ex.printStackTrace(); +// } +// +// int height = elevationData.length; +// int width = elevationData[0].length; +// int dataType = DataBuffer.TYPE_DOUBLE; +// +// ComponentSampleModel sampleModel = new ComponentSampleModel(dataType, width, height, 1, width, new int[]{0}); +// WritableRaster raster = RasterFactory.createWritableRaster(sampleModel, null); +// for( int y = 0; y < height; y++ ) { +// for( int x = 0; x < width; x++ ) { +// raster.setSample(x, y, 0, elevationData[y][x]); +// } +// } +// +// Envelope2D writeEnvelope = new Envelope2D(crs, w, s, e - w, n - s); +// GridCoverageFactory factory = CoverageFactoryFinder.getGridCoverageFactory(null); +// GridCoverage2D elevationCoverage = factory.create("to_resample", raster, writeEnvelope); +// +// CoverageProcessor processor = CoverageProcessor.getInstance(); +// Operation resampleOp = processor.getOperation("Resample"); //$NON-NLS-1$ +// +// Envelope envelope = new Envelope2D(crs, w, s, e - w, n - s); +// GridEnvelope2D gridRange = new GridEnvelope2D(0, 0, cols / 2, rows / 2); +// GridGeometry2D newGridGeometry = new GridGeometry2D(gridRange, envelope); +// +// ParameterValueGroup param = resampleOp.getParameters(); +// param.parameter("Source").setValue(elevationCoverage.view(ViewType.GEOPHYSICS)); +// param.parameter("GridGeometry").setValue(newGridGeometry); +// param.parameter("CoordinateReferenceSystem").setValue(crs); +// +// Interpolation interpolation = Interpolation.getInstance(Interpolation.INTERP_BILINEAR); +// String interpolationType = ImageUtilities.getInterpolationName(interpolation); +// param.parameter("InterpolationType").setValue(interpolationType); +// +// GridCoverage2D outGeodata = (GridCoverage2D) processor.doOperation(param); +// outGeodata.getRenderedImage().getData(); +// } +// +//} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestGridGenerator.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestGridGenerator.java index 81f2858f0..6a75784a2 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestGridGenerator.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestGridGenerator.java @@ -1,70 +1,70 @@ -//package org.jgrasstools.gears.modules; -///* -// * This file is part of JGrasstools (http://www.jgrasstools.org) -// * (C) HydroloGIS - www.hydrologis.com -// * -// * JGrasstools is free software: you can redistribute it and/or modify -// * it under the terms of the GNU General Public License as published by -// * the Free Software Foundation, either version 3 of the License, or -// * (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program. If not, see . -// */ -// -//import org.geotools.data.simple.SimpleFeatureCollection; -//import org.jgrasstools.gears.io.vectorreader.VectorReader; -//import org.jgrasstools.gears.io.vectorwriter.VectorWriter; -//import org.jgrasstools.gears.modules.v.grids.GridsGenerator; -//import org.jgrasstools.gears.utils.HMTestCase; -// -///** -// * Test for {@link GridsGenerator} -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestGridGenerator extends HMTestCase { -// -// public void testGridGenerator() throws Exception { -// String inVector = "/home/moovida/geologico2012/geologico_2012_data/THEBIG_PROCESSING/pl_10714_bosco.shp"; -// String outVector = "/home/moovida/geologico2012/geologico_2012_data/THEBIG_PROCESSING/divisione5x5.shp"; -// -// SimpleFeatureCollection inFC = VectorReader.readVector(inVector); -// -// GridsGenerator grid = new GridsGenerator(); -// grid.pm = pm; -// grid.inVector = inFC; -// -// grid.pCols = 5; -// grid.pRows = 5; -// -// grid.pType = 0; -// grid.process(); -// SimpleFeatureCollection outMap = grid.outMap; -// VectorWriter.writeVector(outVector, outMap); -// -// // GridsGenerator grid = new GridsGenerator(); -// // grid.pm = pm; -// // grid.pCode = "EPSG:32632"; -// // -// // double w = 653000.0; -// // double s = 5100000.0; -// // grid.pLon = w; -// // grid.pLat = s; -// // grid.pWidth = 20.0; -// // grid.pHeight = 10.0; -// // grid.pCols = 50; -// // grid.pRows = 100; -// // grid.pSpacing = 5.0; -// // grid.pType = 2; -// // grid.process(); -// // SimpleFeatureCollection outMap = grid.outMap; -// -// } -// -//} +//package org.jgrasstools.gears.modules; +///* +// * This file is part of JGrasstools (http://www.jgrasstools.org) +// * (C) HydroloGIS - www.hydrologis.com +// * +// * JGrasstools is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see . +// */ +// +//import org.geotools.data.simple.SimpleFeatureCollection; +//import org.jgrasstools.gears.io.vectorreader.VectorReader; +//import org.jgrasstools.gears.io.vectorwriter.VectorWriter; +//import org.jgrasstools.gears.modules.v.grids.GridsGenerator; +//import org.jgrasstools.gears.utils.HMTestCase; +// +///** +// * Test for {@link GridsGenerator} +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestGridGenerator extends HMTestCase { +// +// public void testGridGenerator() throws Exception { +// String inVector = "/home/moovida/geologico2012/geologico_2012_data/THEBIG_PROCESSING/pl_10714_bosco.shp"; +// String outVector = "/home/moovida/geologico2012/geologico_2012_data/THEBIG_PROCESSING/divisione5x5.shp"; +// +// SimpleFeatureCollection inFC = VectorReader.readVector(inVector); +// +// GridsGenerator grid = new GridsGenerator(); +// grid.pm = pm; +// grid.inVector = inFC; +// +// grid.pCols = 5; +// grid.pRows = 5; +// +// grid.pType = 0; +// grid.process(); +// SimpleFeatureCollection outMap = grid.outMap; +// VectorWriter.writeVector(outVector, outMap); +// +// // GridsGenerator grid = new GridsGenerator(); +// // grid.pm = pm; +// // grid.pCode = "EPSG:32632"; +// // +// // double w = 653000.0; +// // double s = 5100000.0; +// // grid.pLon = w; +// // grid.pLat = s; +// // grid.pWidth = 20.0; +// // grid.pHeight = 10.0; +// // grid.pCols = 50; +// // grid.pRows = 100; +// // grid.pSpacing = 5.0; +// // grid.pType = 2; +// // grid.process(); +// // SimpleFeatureCollection outMap = grid.outMap; +// +// } +// +//} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestLinesPolygonizer.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestLinesPolygonizer.java index 78db8f8ac..3a2c64bbf 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestLinesPolygonizer.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestLinesPolygonizer.java @@ -1,51 +1,51 @@ -///* -// * This file is part of JGrasstools (http://www.jgrasstools.org) -// * (C) HydroloGIS - www.hydrologis.com -// * -// * JGrasstools is free software: you can redistribute it and/or modify -// * it under the terms of the GNU General Public License as published by -// * the Free Software Foundation, either version 3 of the License, or -// * (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program. If not, see . -// */ -//package org.jgrasstools.gears.modules; -// -//import org.geotools.data.simple.SimpleFeatureCollection; -//import org.jgrasstools.gears.io.vectorreader.VectorReader; -//import org.jgrasstools.gears.io.vectorwriter.VectorWriter; -//import org.jgrasstools.gears.modules.v.polygonize.LinesPolygonizer; -//import org.jgrasstools.gears.utils.HMTestCase; -// -///** -// * Test for {@link LinesPolygonizer}. -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestLinesPolygonizer extends HMTestCase { -// public void testLinesPolygonizer() throws Exception { -// -// SimpleFeatureCollection lines = VectorReader.readVector("D:\\data\\dwg_dxf\\polygonizer\\pranzo_line.shp"); -// SimpleFeatureCollection points = VectorReader.readVector("D:\\data\\dwg_dxf\\polygonizer\\pranzo_point.shp"); -// -// LinesPolygonizer vectorizer = new LinesPolygonizer(); -// vectorizer.pm = pm; -// vectorizer.inMap = lines; -// vectorizer.inPoints = points; -// vectorizer.fId = "Text"; -// vectorizer.fNewId = "id"; -// vectorizer.process(); -// -// SimpleFeatureCollection outPolygons = vectorizer.outMap; -// -// VectorWriter.writeVector("D:\\data\\dwg_dxf\\polygonizer\\pranzo_poligoni.shp", outPolygons); -// -// } -// -//} +///* +// * This file is part of JGrasstools (http://www.jgrasstools.org) +// * (C) HydroloGIS - www.hydrologis.com +// * +// * JGrasstools is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see . +// */ +//package org.jgrasstools.gears.modules; +// +//import org.geotools.data.simple.SimpleFeatureCollection; +//import org.jgrasstools.gears.io.vectorreader.VectorReader; +//import org.jgrasstools.gears.io.vectorwriter.VectorWriter; +//import org.jgrasstools.gears.modules.v.polygonize.LinesPolygonizer; +//import org.jgrasstools.gears.utils.HMTestCase; +// +///** +// * Test for {@link LinesPolygonizer}. +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestLinesPolygonizer extends HMTestCase { +// public void testLinesPolygonizer() throws Exception { +// +// SimpleFeatureCollection lines = VectorReader.readVector("D:\\data\\dwg_dxf\\polygonizer\\pranzo_line.shp"); +// SimpleFeatureCollection points = VectorReader.readVector("D:\\data\\dwg_dxf\\polygonizer\\pranzo_point.shp"); +// +// LinesPolygonizer vectorizer = new LinesPolygonizer(); +// vectorizer.pm = pm; +// vectorizer.inMap = lines; +// vectorizer.inPoints = points; +// vectorizer.fId = "Text"; +// vectorizer.fNewId = "id"; +// vectorizer.process(); +// +// SimpleFeatureCollection outPolygons = vectorizer.outMap; +// +// VectorWriter.writeVector("D:\\data\\dwg_dxf\\polygonizer\\pranzo_poligoni.shp", outPolygons); +// +// } +// +//} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMapcalc.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMapcalc.java index 4abc7ef31..798b6893f 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMapcalc.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMapcalc.java @@ -1,108 +1,108 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.awt.image.RenderedImage; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.io.rasterreader.RasterReader; -import org.jgrasstools.gears.io.rasterwriter.RasterWriter; -import org.jgrasstools.gears.modules.r.mapcalc.Mapcalc; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test for {@link Mapcalc}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -@SuppressWarnings("nls") -public class TestMapcalc extends HMTestCase { - - public void testMapcalc() throws Exception { - - double[][] elevationData = HMTestMaps.pitData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("ele", elevationData, envelopeParams, crs, true); - - List maps = Arrays.asList(elevationCoverage); - - Mapcalc mapcalc = new Mapcalc(); - mapcalc.inRasters = maps; - mapcalc.pFunction = "images{ele=read; dest=write;} dest=ele*2-ele + sqrt(ele)^2-exp(log(ele));"; - mapcalc.process(); - - GridCoverage2D outMap = mapcalc.outRaster; - - RenderedImage renderedImage = outMap.getRenderedImage(); - // printImage(renderedImage); - checkMatrixEqual(renderedImage, HMTestMaps.pitData, 0.000000001); - } - - public void testMapcalc2() throws Exception { - - double[][] elevationData = HMTestMaps.flowData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("flow", elevationData, envelopeParams, crs, true); - - List maps = Arrays.asList(elevationCoverage); - - Mapcalc mapcalc = new Mapcalc(); - mapcalc.inRasters = maps; - mapcalc.pFunction = "images{flow=read; dest=write;} dest = (flow+flow)/2;"; - - mapcalc.process(); - - GridCoverage2D outMap = mapcalc.outRaster; - RenderedImage renderedImage = outMap.getRenderedImage(); - // printImage(renderedImage); - checkMatrixEqual(renderedImage, HMTestMaps.flowData, 0.000000001); - } - - public void testMapcalc3() throws Exception { - double[][] elevationData = HMTestMaps.pitData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("ele", elevationData, envelopeParams, crs, true); - - List maps = Arrays.asList(elevationCoverage); - - Mapcalc mapcalc = new Mapcalc(); - mapcalc.inRasters = maps; - mapcalc.pFunction = "images{ele=read; dest=write;} dest = xres()*yres();"; - mapcalc.process(); - - GridCoverage2D outMap = mapcalc.outRaster; - - RenderedImage renderedImage = outMap.getRenderedImage(); - // printImage(renderedImage); - - checkEqualsSinlgeValue(renderedImage, 900.0, 0.000000001); - } - - public static void main( String[] args ) throws Exception { - new TestMapcalc().testMapcalc(); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.awt.image.RenderedImage; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.io.rasterreader.RasterReader; +import org.jgrasstools.gears.io.rasterwriter.RasterWriter; +import org.jgrasstools.gears.modules.r.mapcalc.Mapcalc; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test for {@link Mapcalc}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +@SuppressWarnings("nls") +public class TestMapcalc extends HMTestCase { + + public void testMapcalc() throws Exception { + + double[][] elevationData = HMTestMaps.pitData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("ele", elevationData, envelopeParams, crs, true); + + List maps = Arrays.asList(elevationCoverage); + + Mapcalc mapcalc = new Mapcalc(); + mapcalc.inRasters = maps; + mapcalc.pFunction = "images{ele=read; dest=write;} dest=ele*2-ele + sqrt(ele)^2-exp(log(ele));"; + mapcalc.process(); + + GridCoverage2D outMap = mapcalc.outRaster; + + RenderedImage renderedImage = outMap.getRenderedImage(); + // printImage(renderedImage); + checkMatrixEqual(renderedImage, HMTestMaps.pitData, 0.000000001); + } + + public void testMapcalc2() throws Exception { + + double[][] elevationData = HMTestMaps.flowData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("flow", elevationData, envelopeParams, crs, true); + + List maps = Arrays.asList(elevationCoverage); + + Mapcalc mapcalc = new Mapcalc(); + mapcalc.inRasters = maps; + mapcalc.pFunction = "images{flow=read; dest=write;} dest = (flow+flow)/2;"; + + mapcalc.process(); + + GridCoverage2D outMap = mapcalc.outRaster; + RenderedImage renderedImage = outMap.getRenderedImage(); + // printImage(renderedImage); + checkMatrixEqual(renderedImage, HMTestMaps.flowData, 0.000000001); + } + + public void testMapcalc3() throws Exception { + double[][] elevationData = HMTestMaps.pitData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("ele", elevationData, envelopeParams, crs, true); + + List maps = Arrays.asList(elevationCoverage); + + Mapcalc mapcalc = new Mapcalc(); + mapcalc.inRasters = maps; + mapcalc.pFunction = "images{ele=read; dest=write;} dest = xres()*yres();"; + mapcalc.process(); + + GridCoverage2D outMap = mapcalc.outRaster; + + RenderedImage renderedImage = outMap.getRenderedImage(); + // printImage(renderedImage); + + checkEqualsSinlgeValue(renderedImage, 900.0, 0.000000001); + } + + public static void main( String[] args ) throws Exception { + new TestMapcalc().testMapcalc(); + } +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMarchingSquaresAndRasterizer.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMarchingSquaresAndRasterizer.java index 60923f542..54a5c8478 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMarchingSquaresAndRasterizer.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMarchingSquaresAndRasterizer.java @@ -1,367 +1,367 @@ -///* -// * JGrass - Free Open Source Java GIS http://www.jgrass.org -// * (C) HydroloGIS - www.hydrologis.com -// * -// * This library is free software; you can redistribute it and/or modify it under -// * the terms of the GNU Library General Public License as published by the Free -// * Software Foundation; either version 2 of the License, or (at your option) any -// * later version. -// * -// * This library is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more -// * details. -// * -// * You should have received a copy of the GNU Library General Public License -// * along with this library; if not, write to the Free Foundation, Inc., 59 -// * Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -//package org.jgrasstools.gears.modules; -// -//import java.awt.image.RenderedImage; -//import java.util.HashMap; -// -//import javax.media.jai.iterator.RectIter; -//import javax.media.jai.iterator.RectIterFactory; -// -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.geotools.coverage.grid.GridGeometry2D; -//import org.geotools.data.simple.SimpleFeatureCollection; -//import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; -//import org.jgrasstools.gears.modules.r.scanline.ScanLineRasterizer; -//import org.jgrasstools.gears.modules.v.marchingsquares.MarchingSquaresVectorializer; -//import org.jgrasstools.gears.utils.HMTestCase; -//import org.jgrasstools.gears.utils.HMTestMaps; -//import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.*; -//import org.opengis.referencing.crs.CoordinateReferenceSystem; -// -///** -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestMarchingSquaresAndRasterizer extends HMTestCase { -// -// private void setBounds( ScanLineRasterizer rast, GridGeometry2D gridGeom ) { -// HashMap envelopeParams = gridGeometry2RegionParamsMap(gridGeom); -// double west = envelopeParams.get(WEST); -// double south = envelopeParams.get(SOUTH); -// double east = envelopeParams.get(EAST); -// double north = envelopeParams.get(NORTH); -// int rows = envelopeParams.get(ROWS).intValue(); -// int cols = envelopeParams.get(COLS).intValue(); -// -// rast.north = north; -// rast.south = south; -// rast.east = east; -// rast.west = west; -// rast.cols = cols; -// rast.rows = rows; -// } -// -// public void testMarchingSquaresAndRasterizer1() throws Exception { -// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); -// -// /* -// * extract vectors -// */ -// double[][] extractNet1Data = HMTestMaps.marchingSq1; -// HashMap envelopeParams = HMTestMaps.envelopeParams; -// CoordinateReferenceSystem crs = HMTestMaps.crs; -// GridCoverage2D netCoverage = buildCoverage("net", extractNet1Data, envelopeParams, crs, true); -// GridCoverage2D geodata = netCoverage; -// -// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); -// squares.inGeodata = geodata; -// squares.pValue = 2.0; -// squares.pm = pm; -// -// squares.process(); -// -// SimpleFeatureCollection outGeodata = squares.outGeodata; -// -// /* -// * and rasterize back again -// */ -// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); -// rasterizer.inGeodata = outGeodata; -// rasterizer.pm = pm; -// setBounds(rasterizer, geodata.getGridGeometry()); -// rasterizer.pValue = 2.0; -// rasterizer.process(); -// -// GridCoverage2D outGeodata2 = rasterizer.outGeodata; -// -// RenderedImage renderedImage = outGeodata2.getRenderedImage(); -// -// // should be the same as before -// checkMatrixEqual(renderedImage, extractNet1Data, 0); -// -// } -// -// public void testMarchingSquaresAndRasterizer2() throws Exception { -// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); -// -// /* -// * extract vectors -// */ -// double[][] extractNet1Data = HMTestMaps.marchingSq2; -// HashMap envelopeParams = HMTestMaps.envelopeParams; -// CoordinateReferenceSystem crs = HMTestMaps.crs; -// GridCoverage2D netCoverage = buildCoverage("net", extractNet1Data, envelopeParams, crs, true); -// GridCoverage2D geodata = netCoverage; -// -// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); -// squares.inGeodata = geodata; -// squares.pValue = 2.0; -// squares.pm = pm; -// -// squares.process(); -// -// SimpleFeatureCollection outGeodata = squares.outGeodata; -// -// /* -// * and rasterize back again -// */ -// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); -// rasterizer.inGeodata = outGeodata; -// rasterizer.pm = pm; -// setBounds(rasterizer, geodata.getGridGeometry()); -// rasterizer.pValue = 2.0; -// rasterizer.process(); -// -// GridCoverage2D outGeodata2 = rasterizer.outGeodata; -// -// RenderedImage renderedImage = outGeodata2.getRenderedImage(); -// -// // should be the same as before -// checkMatrixEqual(renderedImage, extractNet1Data, 0); -// -// } -// -// public void testMarchingSquaresAndRasterizer3() throws Exception { -// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); -// -// /* -// * extract vectors -// */ -// double[][] extractData = HMTestMaps.marchingSq3; -// HashMap envelopeParams = HMTestMaps.envelopeParams; -// CoordinateReferenceSystem crs = HMTestMaps.crs; -// GridCoverage2D netCoverage = buildCoverage("net", extractData, envelopeParams, crs, true); -// GridCoverage2D geodata = netCoverage; -// -// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); -// squares.inGeodata = geodata; -// squares.pValue = 2.0; -// squares.pm = pm; -// -// squares.process(); -// -// SimpleFeatureCollection outGeodata = squares.outGeodata; -// -// /* -// * and rasterize back again -// */ -// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); -// rasterizer.inGeodata = outGeodata; -// rasterizer.pm = pm; -// setBounds(rasterizer, geodata.getGridGeometry()); -// rasterizer.pValue = 2.0; -// rasterizer.process(); -// -// GridCoverage2D outGeodata2 = rasterizer.outGeodata; -// -// RenderedImage renderedImage = outGeodata2.getRenderedImage(); -// -// RectIter iter = RectIterFactory.create(renderedImage, null); -// do { -// do { -// System.out.print(iter.getSampleDouble() + " "); -// } while( !iter.nextPixelDone() ); -// iter.startPixels(); -// System.out.println(); -// } while( !iter.nextLineDone() ); -// -// // should be the same as before -// checkMatrixEqual(renderedImage, extractData, 0); -// -// } -// -// public void testMarchingSquaresAndRasterizer4() throws Exception { -// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); -// -// /* -// * extract vectors -// */ -// double[][] extractData = HMTestMaps.marchingSq4; -// HashMap envelopeParams = HMTestMaps.envelopeParams; -// CoordinateReferenceSystem crs = HMTestMaps.crs; -// GridCoverage2D netCoverage = buildCoverage("net", extractData, envelopeParams, crs, true); -// GridCoverage2D geodata = netCoverage; -// -// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); -// squares.inGeodata = geodata; -// squares.pValue = 2.0; -// squares.pm = pm; -// -// squares.process(); -// -// SimpleFeatureCollection outGeodata = squares.outGeodata; -// -// /* -// * and rasterize back again -// */ -// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); -// rasterizer.inGeodata = outGeodata; -// rasterizer.pm = pm; -// setBounds(rasterizer, geodata.getGridGeometry()); -// rasterizer.pValue = 2.0; -// rasterizer.process(); -// -// GridCoverage2D outGeodata2 = rasterizer.outGeodata; -// -// RenderedImage renderedImage = outGeodata2.getRenderedImage(); -// -// RectIter iter = RectIterFactory.create(renderedImage, null); -// do { -// do { -// System.out.print(iter.getSampleDouble() + " "); -// } while( !iter.nextPixelDone() ); -// iter.startPixels(); -// System.out.println(); -// } while( !iter.nextLineDone() ); -// -// // should be the same as before -// checkMatrixEqual(renderedImage, extractData, 0); -// -// } -// -// public void testMarchingSquaresAndRasterizer5() throws Exception { -// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); -// -// /* -// * extract vectors -// */ -// double[][] extractData = HMTestMaps.marchingSq3; -// HashMap envelopeParams = HMTestMaps.envelopeParams; -// CoordinateReferenceSystem crs = HMTestMaps.crs; -// GridCoverage2D netCoverage = buildCoverage("net", extractData, envelopeParams, crs, true); -// GridCoverage2D geodata = netCoverage; -// -// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); -// squares.inGeodata = geodata; -// squares.pValue = 2.0; -// squares.pm = pm; -// -// squares.process(); -// -// SimpleFeatureCollection outGeodata = squares.outGeodata; -// -// /* -// * and rasterize back again -// */ -// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); -// rasterizer.inGeodata = outGeodata; -// rasterizer.pm = pm; -// setBounds(rasterizer, geodata.getGridGeometry()); -// rasterizer.pValue = 2.0; -// rasterizer.process(); -// -// GridCoverage2D outGeodata2 = rasterizer.outGeodata; -// -// RenderedImage renderedImage = outGeodata2.getRenderedImage(); -// -// RectIter iter = RectIterFactory.create(renderedImage, null); -// do { -// do { -// System.out.print(iter.getSampleDouble() + " "); -// } while( !iter.nextPixelDone() ); -// iter.startPixels(); -// System.out.println(); -// } while( !iter.nextLineDone() ); -// -// // should be the same as before -// checkMatrixEqual(renderedImage, extractData, 0); -// -// } -// -// public void testMarchingSquaresAndRasterizer6() throws Exception { -// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); -// -// /* -// * extract vectors -// */ -// double[][] extractData = HMTestMaps.marchingSq6; -// HashMap envelopeParams = HMTestMaps.envelopeParams; -// CoordinateReferenceSystem crs = HMTestMaps.crs; -// GridCoverage2D netCoverage = buildCoverage("net", extractData, envelopeParams, crs, true); -// GridCoverage2D geodata = netCoverage; -// -// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); -// squares.inGeodata = geodata; -// squares.pValue = null; -// squares.pm = pm; -// -// squares.process(); -// -// SimpleFeatureCollection outGeodata = squares.outGeodata; -// -// /* -// * and rasterize back again -// */ -// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); -// rasterizer.inGeodata = outGeodata; -// rasterizer.pm = pm; -// setBounds(rasterizer, geodata.getGridGeometry()); -// rasterizer.pValue = null; -// rasterizer.fCat = squares.defaultFeatureField; -// rasterizer.process(); -// -// GridCoverage2D outGeodata2 = rasterizer.outGeodata; -// -// RenderedImage renderedImage = outGeodata2.getRenderedImage(); -// -// // should be the same as before -// checkMatrixEqual(renderedImage, extractData, 0); -// -// } -// -// public void testMarchingSquaresAndRasterizer7() throws Exception { -// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); -// -// /* -// * extract vectors -// */ -// double[][] extractData = HMTestMaps.marchingSq7; -// HashMap envelopeParams = HMTestMaps.envelopeParams; -// CoordinateReferenceSystem crs = HMTestMaps.crs; -// GridCoverage2D netCoverage = buildCoverage("net", extractData, envelopeParams, crs, true); -// GridCoverage2D geodata = netCoverage; -// -// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); -// squares.inGeodata = geodata; -// squares.pValue = null; -// squares.pm = pm; -// -// squares.process(); -// -// SimpleFeatureCollection outGeodata = squares.outGeodata; -// -// /* -// * and rasterize back again -// */ -// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); -// rasterizer.inGeodata = outGeodata; -// rasterizer.pm = pm; -// setBounds(rasterizer, geodata.getGridGeometry()); -// rasterizer.pValue = null; -// rasterizer.fCat = squares.defaultFeatureField; -// rasterizer.process(); -// -// GridCoverage2D outGeodata2 = rasterizer.outGeodata; -// -// RenderedImage renderedImage = outGeodata2.getRenderedImage(); -// -// // should be the same as before -// checkMatrixEqual(renderedImage, extractData, 0); -// } -//} +///* +// * JGrass - Free Open Source Java GIS http://www.jgrass.org +// * (C) HydroloGIS - www.hydrologis.com +// * +// * This library is free software; you can redistribute it and/or modify it under +// * the terms of the GNU Library General Public License as published by the Free +// * Software Foundation; either version 2 of the License, or (at your option) any +// * later version. +// * +// * This library is distributed in the hope that it will be useful, but WITHOUT +// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +// * details. +// * +// * You should have received a copy of the GNU Library General Public License +// * along with this library; if not, write to the Free Foundation, Inc., 59 +// * Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +//package org.jgrasstools.gears.modules; +// +//import java.awt.image.RenderedImage; +//import java.util.HashMap; +// +//import javax.media.jai.iterator.RectIter; +//import javax.media.jai.iterator.RectIterFactory; +// +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.geotools.coverage.grid.GridGeometry2D; +//import org.geotools.data.simple.SimpleFeatureCollection; +//import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; +//import org.jgrasstools.gears.modules.r.scanline.ScanLineRasterizer; +//import org.jgrasstools.gears.modules.v.marchingsquares.MarchingSquaresVectorializer; +//import org.jgrasstools.gears.utils.HMTestCase; +//import org.jgrasstools.gears.utils.HMTestMaps; +//import static org.jgrasstools.gears.utils.coverage.CoverageUtilities.*; +//import org.opengis.referencing.crs.CoordinateReferenceSystem; +// +///** +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestMarchingSquaresAndRasterizer extends HMTestCase { +// +// private void setBounds( ScanLineRasterizer rast, GridGeometry2D gridGeom ) { +// HashMap envelopeParams = gridGeometry2RegionParamsMap(gridGeom); +// double west = envelopeParams.get(WEST); +// double south = envelopeParams.get(SOUTH); +// double east = envelopeParams.get(EAST); +// double north = envelopeParams.get(NORTH); +// int rows = envelopeParams.get(ROWS).intValue(); +// int cols = envelopeParams.get(COLS).intValue(); +// +// rast.north = north; +// rast.south = south; +// rast.east = east; +// rast.west = west; +// rast.cols = cols; +// rast.rows = rows; +// } +// +// public void testMarchingSquaresAndRasterizer1() throws Exception { +// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); +// +// /* +// * extract vectors +// */ +// double[][] extractNet1Data = HMTestMaps.marchingSq1; +// HashMap envelopeParams = HMTestMaps.envelopeParams; +// CoordinateReferenceSystem crs = HMTestMaps.crs; +// GridCoverage2D netCoverage = buildCoverage("net", extractNet1Data, envelopeParams, crs, true); +// GridCoverage2D geodata = netCoverage; +// +// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); +// squares.inGeodata = geodata; +// squares.pValue = 2.0; +// squares.pm = pm; +// +// squares.process(); +// +// SimpleFeatureCollection outGeodata = squares.outGeodata; +// +// /* +// * and rasterize back again +// */ +// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); +// rasterizer.inGeodata = outGeodata; +// rasterizer.pm = pm; +// setBounds(rasterizer, geodata.getGridGeometry()); +// rasterizer.pValue = 2.0; +// rasterizer.process(); +// +// GridCoverage2D outGeodata2 = rasterizer.outGeodata; +// +// RenderedImage renderedImage = outGeodata2.getRenderedImage(); +// +// // should be the same as before +// checkMatrixEqual(renderedImage, extractNet1Data, 0); +// +// } +// +// public void testMarchingSquaresAndRasterizer2() throws Exception { +// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); +// +// /* +// * extract vectors +// */ +// double[][] extractNet1Data = HMTestMaps.marchingSq2; +// HashMap envelopeParams = HMTestMaps.envelopeParams; +// CoordinateReferenceSystem crs = HMTestMaps.crs; +// GridCoverage2D netCoverage = buildCoverage("net", extractNet1Data, envelopeParams, crs, true); +// GridCoverage2D geodata = netCoverage; +// +// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); +// squares.inGeodata = geodata; +// squares.pValue = 2.0; +// squares.pm = pm; +// +// squares.process(); +// +// SimpleFeatureCollection outGeodata = squares.outGeodata; +// +// /* +// * and rasterize back again +// */ +// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); +// rasterizer.inGeodata = outGeodata; +// rasterizer.pm = pm; +// setBounds(rasterizer, geodata.getGridGeometry()); +// rasterizer.pValue = 2.0; +// rasterizer.process(); +// +// GridCoverage2D outGeodata2 = rasterizer.outGeodata; +// +// RenderedImage renderedImage = outGeodata2.getRenderedImage(); +// +// // should be the same as before +// checkMatrixEqual(renderedImage, extractNet1Data, 0); +// +// } +// +// public void testMarchingSquaresAndRasterizer3() throws Exception { +// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); +// +// /* +// * extract vectors +// */ +// double[][] extractData = HMTestMaps.marchingSq3; +// HashMap envelopeParams = HMTestMaps.envelopeParams; +// CoordinateReferenceSystem crs = HMTestMaps.crs; +// GridCoverage2D netCoverage = buildCoverage("net", extractData, envelopeParams, crs, true); +// GridCoverage2D geodata = netCoverage; +// +// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); +// squares.inGeodata = geodata; +// squares.pValue = 2.0; +// squares.pm = pm; +// +// squares.process(); +// +// SimpleFeatureCollection outGeodata = squares.outGeodata; +// +// /* +// * and rasterize back again +// */ +// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); +// rasterizer.inGeodata = outGeodata; +// rasterizer.pm = pm; +// setBounds(rasterizer, geodata.getGridGeometry()); +// rasterizer.pValue = 2.0; +// rasterizer.process(); +// +// GridCoverage2D outGeodata2 = rasterizer.outGeodata; +// +// RenderedImage renderedImage = outGeodata2.getRenderedImage(); +// +// RectIter iter = RectIterFactory.create(renderedImage, null); +// do { +// do { +// System.out.print(iter.getSampleDouble() + " "); +// } while( !iter.nextPixelDone() ); +// iter.startPixels(); +// System.out.println(); +// } while( !iter.nextLineDone() ); +// +// // should be the same as before +// checkMatrixEqual(renderedImage, extractData, 0); +// +// } +// +// public void testMarchingSquaresAndRasterizer4() throws Exception { +// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); +// +// /* +// * extract vectors +// */ +// double[][] extractData = HMTestMaps.marchingSq4; +// HashMap envelopeParams = HMTestMaps.envelopeParams; +// CoordinateReferenceSystem crs = HMTestMaps.crs; +// GridCoverage2D netCoverage = buildCoverage("net", extractData, envelopeParams, crs, true); +// GridCoverage2D geodata = netCoverage; +// +// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); +// squares.inGeodata = geodata; +// squares.pValue = 2.0; +// squares.pm = pm; +// +// squares.process(); +// +// SimpleFeatureCollection outGeodata = squares.outGeodata; +// +// /* +// * and rasterize back again +// */ +// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); +// rasterizer.inGeodata = outGeodata; +// rasterizer.pm = pm; +// setBounds(rasterizer, geodata.getGridGeometry()); +// rasterizer.pValue = 2.0; +// rasterizer.process(); +// +// GridCoverage2D outGeodata2 = rasterizer.outGeodata; +// +// RenderedImage renderedImage = outGeodata2.getRenderedImage(); +// +// RectIter iter = RectIterFactory.create(renderedImage, null); +// do { +// do { +// System.out.print(iter.getSampleDouble() + " "); +// } while( !iter.nextPixelDone() ); +// iter.startPixels(); +// System.out.println(); +// } while( !iter.nextLineDone() ); +// +// // should be the same as before +// checkMatrixEqual(renderedImage, extractData, 0); +// +// } +// +// public void testMarchingSquaresAndRasterizer5() throws Exception { +// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); +// +// /* +// * extract vectors +// */ +// double[][] extractData = HMTestMaps.marchingSq3; +// HashMap envelopeParams = HMTestMaps.envelopeParams; +// CoordinateReferenceSystem crs = HMTestMaps.crs; +// GridCoverage2D netCoverage = buildCoverage("net", extractData, envelopeParams, crs, true); +// GridCoverage2D geodata = netCoverage; +// +// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); +// squares.inGeodata = geodata; +// squares.pValue = 2.0; +// squares.pm = pm; +// +// squares.process(); +// +// SimpleFeatureCollection outGeodata = squares.outGeodata; +// +// /* +// * and rasterize back again +// */ +// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); +// rasterizer.inGeodata = outGeodata; +// rasterizer.pm = pm; +// setBounds(rasterizer, geodata.getGridGeometry()); +// rasterizer.pValue = 2.0; +// rasterizer.process(); +// +// GridCoverage2D outGeodata2 = rasterizer.outGeodata; +// +// RenderedImage renderedImage = outGeodata2.getRenderedImage(); +// +// RectIter iter = RectIterFactory.create(renderedImage, null); +// do { +// do { +// System.out.print(iter.getSampleDouble() + " "); +// } while( !iter.nextPixelDone() ); +// iter.startPixels(); +// System.out.println(); +// } while( !iter.nextLineDone() ); +// +// // should be the same as before +// checkMatrixEqual(renderedImage, extractData, 0); +// +// } +// +// public void testMarchingSquaresAndRasterizer6() throws Exception { +// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); +// +// /* +// * extract vectors +// */ +// double[][] extractData = HMTestMaps.marchingSq6; +// HashMap envelopeParams = HMTestMaps.envelopeParams; +// CoordinateReferenceSystem crs = HMTestMaps.crs; +// GridCoverage2D netCoverage = buildCoverage("net", extractData, envelopeParams, crs, true); +// GridCoverage2D geodata = netCoverage; +// +// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); +// squares.inGeodata = geodata; +// squares.pValue = null; +// squares.pm = pm; +// +// squares.process(); +// +// SimpleFeatureCollection outGeodata = squares.outGeodata; +// +// /* +// * and rasterize back again +// */ +// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); +// rasterizer.inGeodata = outGeodata; +// rasterizer.pm = pm; +// setBounds(rasterizer, geodata.getGridGeometry()); +// rasterizer.pValue = null; +// rasterizer.fCat = squares.defaultFeatureField; +// rasterizer.process(); +// +// GridCoverage2D outGeodata2 = rasterizer.outGeodata; +// +// RenderedImage renderedImage = outGeodata2.getRenderedImage(); +// +// // should be the same as before +// checkMatrixEqual(renderedImage, extractData, 0); +// +// } +// +// public void testMarchingSquaresAndRasterizer7() throws Exception { +// PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); +// +// /* +// * extract vectors +// */ +// double[][] extractData = HMTestMaps.marchingSq7; +// HashMap envelopeParams = HMTestMaps.envelopeParams; +// CoordinateReferenceSystem crs = HMTestMaps.crs; +// GridCoverage2D netCoverage = buildCoverage("net", extractData, envelopeParams, crs, true); +// GridCoverage2D geodata = netCoverage; +// +// MarchingSquaresVectorializer squares = new MarchingSquaresVectorializer(); +// squares.inGeodata = geodata; +// squares.pValue = null; +// squares.pm = pm; +// +// squares.process(); +// +// SimpleFeatureCollection outGeodata = squares.outGeodata; +// +// /* +// * and rasterize back again +// */ +// ScanLineRasterizer rasterizer = new ScanLineRasterizer(); +// rasterizer.inGeodata = outGeodata; +// rasterizer.pm = pm; +// setBounds(rasterizer, geodata.getGridGeometry()); +// rasterizer.pValue = null; +// rasterizer.fCat = squares.defaultFeatureField; +// rasterizer.process(); +// +// GridCoverage2D outGeodata2 = rasterizer.outGeodata; +// +// RenderedImage renderedImage = outGeodata2.getRenderedImage(); +// +// // should be the same as before +// checkMatrixEqual(renderedImage, extractData, 0); +// } +//} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMosaic.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMosaic.java index bc5e35bfb..1cc839fed 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMosaic.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestMosaic.java @@ -1,134 +1,134 @@ -/* - * JGrass - Free Open Source Java GIS http://www.jgrass.org - * (C) HydroloGIS - www.hydrologis.com - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Library General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more - * details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; if not, write to the Free Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.jgrasstools.gears.modules; - -import java.io.File; -import java.net.URL; -import java.util.Arrays; -import java.util.List; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.modules.r.mosaic.Mosaic; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -/** - * Test for the mosaic modules. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestMosaic extends HMTestCase { - public void testMosaic() throws Exception { - URL testUrl = this.getClass().getClassLoader().getResource("dtm_test_left.asc"); - File left = new File(testUrl.toURI()); - testUrl = this.getClass().getClassLoader().getResource("dtm_test_right.asc"); - File right = new File(testUrl.toURI()); - - List filesList = Arrays.asList(left, right); - - Mosaic mosaic = new Mosaic(); - mosaic.inFiles = filesList; - mosaic.pm = pm; - mosaic.process(); - GridCoverage2D readCoverage = mosaic.outRaster; - checkMatrixEqual(readCoverage.getRenderedImage(), HMTestMaps.mapData); - } - - // public void testGrassMosaicLegacy() throws Exception { - // - // FileIterator fiter = new FileIterator(); - // fiter.inFolder = "/home/moovida/DTM_TRENTINO/1x1/unzipped/"; - // fiter.pRegex = "asc"; - // fiter.pCode = "EPSG:32632"; - // fiter.process(); - // List filesList = fiter.filesList; - // for( File file : filesList ) { - // System.out.println(file.getAbsolutePath()); - // } - // PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); - // GrassMosaicLegacy mosaic = new GrassMosaicLegacy(); - // mosaic.inGeodataFiles = filesList; - // mosaic.pm = pm; - // mosaic.outFile = - // "/home/moovida/DTM_TRENTINO/grassdb/trentino/dtm2009/cell/dsm_all_1x1_right_wgs"; - // mosaic.pRes = 2.0; - // // left - // // mosaic.pBounds = new double[]{5158010.0, 5059990.0, 611990.0, 672000.0}; // n,s,w,e - // // right - // mosaic.pBounds = new double[]{5158010.0, 5059990.0, 672000.0, 732010.0}; - // - // // 1x1 upper left - // // mosaic.pBounds = new double[]{5158010.0, 5109000.0, 611990.0, 672000.0}; - // // 1x1 upper right - // // mosaic.pBounds = new double[]{5158010.0, 5109000.0, 672000.0, 732010.0}; - // // 1x1 lower left - // // mosaic.pBounds = new double[]{5109000.0, 5059990.0, 611990.0, 672000.0}; - // // 1x1 upper right - // // mosaic.pBounds = new double[]{5109000.0, 5059990.0, 672000.0, 732010.0}; - // mosaic.process(); - // - // // CoverageViewer cv = new CoverageViewer(); - // // cv.coverage = RasterReader - // // - // .readCoverage("/home/moovida/data/hydrocareworkspace/grassdb/utm32n_etrf89/aidi/cell/dsm_all_wgs"); - // // cv.viewCoverage(); - // } - - // public static void main( String[] args ) throws Exception { - // String in = - // "/home/moovida/development/jgrasstools-hg/jgrassgears/src/test/resources/dtm_test.asc"; - // String left = - // "/home/moovida/development/jgrasstools-hg/jgrassgears/src/test/resources/dtm_test_left.asc"; - // String right = - // "/home/moovida/development/jgrasstools-hg/jgrassgears/src/test/resources/dtm_test_right.asc"; - // - // double n = 5140020.0; - // double s = 5139780.0; - // double w = 1640650.0; - // double e = 1640920.0; - // double xres = 30.0; - // double yres = 30.0; - // RasterReader reader = new RasterReader(); - // reader.file = in; - // reader.pNorth = n; - // reader.pSouth = s; - // reader.pWest = w; - // reader.pEast = e; - // reader.pXres = xres; - // reader.pYres = yres; - // reader.process(); - // GridCoverage2D readCoverage = reader.geodata; - // RasterWriter.writeRaster(left, readCoverage); - // - // w = 1640920.0; - // e = 1640950.0; - // reader = new RasterReader(); - // reader.file = in; - // reader.pNorth = n; - // reader.pSouth = s; - // reader.pWest = w; - // reader.pEast = e; - // reader.pXres = xres; - // reader.pYres = yres; - // reader.process(); - // readCoverage = reader.geodata; - // RasterWriter.writeRaster(right, readCoverage); - // - // } - -} +/* + * JGrass - Free Open Source Java GIS http://www.jgrass.org + * (C) HydroloGIS - www.hydrologis.com + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more + * details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; if not, write to the Free Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.jgrasstools.gears.modules; + +import java.io.File; +import java.net.URL; +import java.util.Arrays; +import java.util.List; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.modules.r.mosaic.Mosaic; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +/** + * Test for the mosaic modules. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestMosaic extends HMTestCase { + public void testMosaic() throws Exception { + URL testUrl = this.getClass().getClassLoader().getResource("dtm_test_left.asc"); + File left = new File(testUrl.toURI()); + testUrl = this.getClass().getClassLoader().getResource("dtm_test_right.asc"); + File right = new File(testUrl.toURI()); + + List filesList = Arrays.asList(left, right); + + Mosaic mosaic = new Mosaic(); + mosaic.inFiles = filesList; + mosaic.pm = pm; + mosaic.process(); + GridCoverage2D readCoverage = mosaic.outRaster; + checkMatrixEqual(readCoverage.getRenderedImage(), HMTestMaps.mapData); + } + + // public void testGrassMosaicLegacy() throws Exception { + // + // FileIterator fiter = new FileIterator(); + // fiter.inFolder = "/home/moovida/DTM_TRENTINO/1x1/unzipped/"; + // fiter.pRegex = "asc"; + // fiter.pCode = "EPSG:32632"; + // fiter.process(); + // List filesList = fiter.filesList; + // for( File file : filesList ) { + // System.out.println(file.getAbsolutePath()); + // } + // PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.err); + // GrassMosaicLegacy mosaic = new GrassMosaicLegacy(); + // mosaic.inGeodataFiles = filesList; + // mosaic.pm = pm; + // mosaic.outFile = + // "/home/moovida/DTM_TRENTINO/grassdb/trentino/dtm2009/cell/dsm_all_1x1_right_wgs"; + // mosaic.pRes = 2.0; + // // left + // // mosaic.pBounds = new double[]{5158010.0, 5059990.0, 611990.0, 672000.0}; // n,s,w,e + // // right + // mosaic.pBounds = new double[]{5158010.0, 5059990.0, 672000.0, 732010.0}; + // + // // 1x1 upper left + // // mosaic.pBounds = new double[]{5158010.0, 5109000.0, 611990.0, 672000.0}; + // // 1x1 upper right + // // mosaic.pBounds = new double[]{5158010.0, 5109000.0, 672000.0, 732010.0}; + // // 1x1 lower left + // // mosaic.pBounds = new double[]{5109000.0, 5059990.0, 611990.0, 672000.0}; + // // 1x1 upper right + // // mosaic.pBounds = new double[]{5109000.0, 5059990.0, 672000.0, 732010.0}; + // mosaic.process(); + // + // // CoverageViewer cv = new CoverageViewer(); + // // cv.coverage = RasterReader + // // + // .readCoverage("/home/moovida/data/hydrocareworkspace/grassdb/utm32n_etrf89/aidi/cell/dsm_all_wgs"); + // // cv.viewCoverage(); + // } + + // public static void main( String[] args ) throws Exception { + // String in = + // "/home/moovida/development/jgrasstools-hg/jgrassgears/src/test/resources/dtm_test.asc"; + // String left = + // "/home/moovida/development/jgrasstools-hg/jgrassgears/src/test/resources/dtm_test_left.asc"; + // String right = + // "/home/moovida/development/jgrasstools-hg/jgrassgears/src/test/resources/dtm_test_right.asc"; + // + // double n = 5140020.0; + // double s = 5139780.0; + // double w = 1640650.0; + // double e = 1640920.0; + // double xres = 30.0; + // double yres = 30.0; + // RasterReader reader = new RasterReader(); + // reader.file = in; + // reader.pNorth = n; + // reader.pSouth = s; + // reader.pWest = w; + // reader.pEast = e; + // reader.pXres = xres; + // reader.pYres = yres; + // reader.process(); + // GridCoverage2D readCoverage = reader.geodata; + // RasterWriter.writeRaster(left, readCoverage); + // + // w = 1640920.0; + // e = 1640950.0; + // reader = new RasterReader(); + // reader.file = in; + // reader.pNorth = n; + // reader.pSouth = s; + // reader.pWest = w; + // reader.pEast = e; + // reader.pXres = xres; + // reader.pYres = yres; + // reader.process(); + // readCoverage = reader.geodata; + // RasterWriter.writeRaster(right, readCoverage); + // + // } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestProfile.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestProfile.java index d3de23034..0c22092f2 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestProfile.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestProfile.java @@ -1,100 +1,100 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.jgrasstools.gears.modules.r.profile.Profile; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.LineString; -/** - * Test for the {@link Profile} - * < - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestProfile extends HMTestCase { - private Coordinate westNorth = HMTestMaps.westNorth; - private Coordinate eastSouth = HMTestMaps.eastSouth; - private Coordinate centerCoord = HMTestMaps.centerCoord; - private RegionMap ep = HMTestMaps.envelopeParams; - - @SuppressWarnings("nls") - public void testProfile() throws Exception { - double[][] elevationData = HMTestMaps.mapData; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, ep, crs, true); - - String coords = (westNorth.x + ep.getXres() / 2) + "," + (centerCoord.y + ep.getYres() / 2) + "," - + (eastSouth.x - ep.getXres() / 2) + "," + (centerCoord.y + ep.getYres() / 2); - - Profile profile = new Profile(); - profile.inRaster = elevationCoverage; - profile.pm = pm; - profile.inCoordinates = coords; - profile.process(); - double[][] outProfile = profile.outProfile; - double[] result = {400, 410, 650, 700, 750, 800, 850, 490, 450, 1500}; - for( int i = 0; i < result.length; i++ ) { - assertEquals(result[i], outProfile[i][1], 0.000001); - } - - profile = new Profile(); - profile.inRaster = elevationCoverage; - profile.pm = pm; - profile.inVector = doCollection(); - profile.process(); - outProfile = profile.outProfile; - for( int i = 0; i < result.length; i++ ) { - assertEquals(result[i], outProfile[i][1], 0.000001); - } - - } - - private SimpleFeatureCollection doCollection() { - CoordinateReferenceSystem crs = HMTestMaps.crs; - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("typename"); - b.setCRS(crs); - b.add("the_geom", LineString.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - - Coordinate one = new Coordinate(westNorth.x + ep.getXres() / 2, centerCoord.y + ep.getYres() / 2); - Coordinate two = new Coordinate(eastSouth.x - ep.getXres() / 2, centerCoord.y + ep.getYres() / 2); - - LineString lineString = GeometryUtilities.gf().createLineString(new Coordinate[]{one, two}); - Object[] values = new Object[]{lineString}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(null); - SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); - newCollection.add(feature); - return newCollection; - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.jgrasstools.gears.modules.r.profile.Profile; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.LineString; +/** + * Test for the {@link Profile} + * < + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestProfile extends HMTestCase { + private Coordinate westNorth = HMTestMaps.westNorth; + private Coordinate eastSouth = HMTestMaps.eastSouth; + private Coordinate centerCoord = HMTestMaps.centerCoord; + private RegionMap ep = HMTestMaps.envelopeParams; + + @SuppressWarnings("nls") + public void testProfile() throws Exception { + double[][] elevationData = HMTestMaps.mapData; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, ep, crs, true); + + String coords = (westNorth.x + ep.getXres() / 2) + "," + (centerCoord.y + ep.getYres() / 2) + "," + + (eastSouth.x - ep.getXres() / 2) + "," + (centerCoord.y + ep.getYres() / 2); + + Profile profile = new Profile(); + profile.inRaster = elevationCoverage; + profile.pm = pm; + profile.inCoordinates = coords; + profile.process(); + double[][] outProfile = profile.outProfile; + double[] result = {400, 410, 650, 700, 750, 800, 850, 490, 450, 1500}; + for( int i = 0; i < result.length; i++ ) { + assertEquals(result[i], outProfile[i][1], 0.000001); + } + + profile = new Profile(); + profile.inRaster = elevationCoverage; + profile.pm = pm; + profile.inVector = doCollection(); + profile.process(); + outProfile = profile.outProfile; + for( int i = 0; i < result.length; i++ ) { + assertEquals(result[i], outProfile[i][1], 0.000001); + } + + } + + private SimpleFeatureCollection doCollection() { + CoordinateReferenceSystem crs = HMTestMaps.crs; + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("typename"); + b.setCRS(crs); + b.add("the_geom", LineString.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + + Coordinate one = new Coordinate(westNorth.x + ep.getXres() / 2, centerCoord.y + ep.getYres() / 2); + Coordinate two = new Coordinate(eastSouth.x - ep.getXres() / 2, centerCoord.y + ep.getYres() / 2); + + LineString lineString = GeometryUtilities.gf().createLineString(new Coordinate[]{one, two}); + Object[] values = new Object[]{lineString}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(null); + SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); + newCollection.add(feature); + return newCollection; + } +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRangeLookup.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRangeLookup.java index be432e0b6..967fdf2c4 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRangeLookup.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRangeLookup.java @@ -1,52 +1,52 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.modules.r.rangelookup.RangeLookup; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test for {@link RangeLookup} - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestRangeLookup extends HMTestCase { - - public void testRangeLookup() throws Exception { - double[][] inData = HMTestMaps.rangeLookupInData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); - - RangeLookup range = new RangeLookup(); - range.pm = pm; - range.inRaster = inCoverage; - range.pRanges = "[0 90),[90 180),[180 270),[270 360)"; - range.pClasses = "1,2,3,4"; - range.process(); - GridCoverage2D out = range.outRaster; - checkMatrixEqual(out.getRenderedImage(), HMTestMaps.rangeLookupOutData, 0); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.modules.r.rangelookup.RangeLookup; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test for {@link RangeLookup} + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestRangeLookup extends HMTestCase { + + public void testRangeLookup() throws Exception { + double[][] inData = HMTestMaps.rangeLookupInData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); + + RangeLookup range = new RangeLookup(); + range.pm = pm; + range.inRaster = inCoverage; + range.pRanges = "[0 90),[90 180),[180 270),[270 360)"; + range.pClasses = "1,2,3,4"; + range.process(); + GridCoverage2D out = range.outRaster; + checkMatrixEqual(out.getRenderedImage(), HMTestMaps.rangeLookupOutData, 0); + } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRaster2Xyz.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRaster2Xyz.java index b1cb171be..1d618649c 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRaster2Xyz.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRaster2Xyz.java @@ -1,52 +1,52 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.io.rasterreader.RasterReader; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.modules.r.raster2xyz.Raster2Xyz; -import org.jgrasstools.gears.modules.r.summary.RasterSummary; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test for {@link RasterSummary}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestRaster2Xyz extends HMTestCase { - public void testCoverageSummary() throws Exception { - - // String raster = "/home/moovida/TMP/dtm_utm12201/dtm_utm12201.asc"; - // String outFile = "/home/moovida/TMP/dtm_utm12201/dtm_utm12201.xyz"; - // GridCoverage2D inCoverage = RasterReader.readRaster(raster); - // - // Raster2Xyz raster2Xyz = new Raster2Xyz(); - // raster2Xyz.pm = pm; - // raster2Xyz.inRaster = inCoverage; - // raster2Xyz.inFile = outFile; - // raster2Xyz.process(); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.io.rasterreader.RasterReader; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.modules.r.raster2xyz.Raster2Xyz; +import org.jgrasstools.gears.modules.r.summary.RasterSummary; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test for {@link RasterSummary}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestRaster2Xyz extends HMTestCase { + public void testCoverageSummary() throws Exception { + + // String raster = "/home/moovida/TMP/dtm_utm12201/dtm_utm12201.asc"; + // String outFile = "/home/moovida/TMP/dtm_utm12201/dtm_utm12201.xyz"; + // GridCoverage2D inCoverage = RasterReader.readRaster(raster); + // + // Raster2Xyz raster2Xyz = new Raster2Xyz(); + // raster2Xyz.pm = pm; + // raster2Xyz.inRaster = inCoverage; + // raster2Xyz.inFile = outFile; + // raster2Xyz.process(); + + } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterCatToFeatureAttribute.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterCatToFeatureAttribute.java index ca7cdb2d1..576629230 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterCatToFeatureAttribute.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterCatToFeatureAttribute.java @@ -1,75 +1,75 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureIterator; -import org.jgrasstools.gears.modules.v.rastercattofeatureattribute.RasterCatToFeatureAttribute; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test for {@link RasterCatToFeatureAttribute}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestRasterCatToFeatureAttribute extends HMTestCase { - public void testMapcalc() throws Exception { - - double[][] elevationData = HMTestMaps.outPitData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); - - SimpleFeatureCollection inFC = HMTestMaps.testFC; - - RasterCatToFeatureAttribute rc2fa = new RasterCatToFeatureAttribute(); - rc2fa.pm = pm; - rc2fa.inRaster = elevationCoverage; - rc2fa.inVector = inFC; - rc2fa.fNew = "elev"; - rc2fa.process(); - - SimpleFeatureCollection outMap = rc2fa.outVector; - - FeatureIterator features = outMap.features(); - while( features.hasNext() ) { - SimpleFeature feature = features.next(); - Object attribute = feature.getAttribute("elev"); - double value = ((Number) attribute).doubleValue(); - - Object catObj = feature.getAttribute("cat"); - int cat = ((Number) catObj).intValue(); - if (cat == 1) { - assertEquals(800.0, value, 0.000001); - } else if (cat == 2) { - assertEquals(1500.0, value, 0.000001); - } else if (cat == 3) { - assertEquals(700.0, value, 0.000001); - } - } - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureIterator; +import org.jgrasstools.gears.modules.v.rastercattofeatureattribute.RasterCatToFeatureAttribute; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test for {@link RasterCatToFeatureAttribute}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestRasterCatToFeatureAttribute extends HMTestCase { + public void testMapcalc() throws Exception { + + double[][] elevationData = HMTestMaps.outPitData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); + + SimpleFeatureCollection inFC = HMTestMaps.testFC; + + RasterCatToFeatureAttribute rc2fa = new RasterCatToFeatureAttribute(); + rc2fa.pm = pm; + rc2fa.inRaster = elevationCoverage; + rc2fa.inVector = inFC; + rc2fa.fNew = "elev"; + rc2fa.process(); + + SimpleFeatureCollection outMap = rc2fa.outVector; + + FeatureIterator features = outMap.features(); + while( features.hasNext() ) { + SimpleFeature feature = features.next(); + Object attribute = feature.getAttribute("elev"); + double value = ((Number) attribute).doubleValue(); + + Object catObj = feature.getAttribute("cat"); + int cat = ((Number) catObj).intValue(); + if (cat == 1) { + assertEquals(800.0, value, 0.000001); + } else if (cat == 2) { + assertEquals(1500.0, value, 0.000001); + } else if (cat == 3) { + assertEquals(700.0, value, 0.000001); + } + } + + } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterCorrector.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterCorrector.java index bfffaff4a..792a29ff8 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterCorrector.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterCorrector.java @@ -1,64 +1,64 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import static java.lang.Double.NaN; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.modules.r.rastercorrector.RasterCorrector; -import org.jgrasstools.gears.modules.r.rasterreprojector.RasterReprojector; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test for {@link RasterCorrector}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestRasterCorrector extends HMTestCase { - public void testRasterCorrector() throws Exception { - - double[][] inData = HMTestMaps.mapData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); - - RasterCorrector reprojector = new RasterCorrector(); - reprojector.inRaster = inCoverage; - reprojector.pCorrections = "0,0,1.0, 5,5, 666"; - reprojector.process(); - GridCoverage2D outGeodata = reprojector.outRaster; - - double[][] correctedMapData = new double[][]{// - {1.0, 900, 1000, 1000, 1200, 1250, 1300, 1350, 1450, 1500}, // - {600, NaN, 750, 850, 860, 900, 1000, 1200, 1250, 1500}, // - {500, 550, 700, 750, 800, 850, 900, 1000, 1100, 1500}, // - {400, 410, 650, 700, 750, 800, 850, 490, 450, 1500}, // - {450, 550, 430, 500, 600, 700, 800, 500, 450, 1500}, // - {500, 600, 700, 750, 760, 666.0, 850, 1000, 1150, 1500}, // - {600, 700, 750, 800, 780, 790, 1000, 1100, 1250, 1500}, // - {800, 910, 980, 1001, 1150, 1200, 1250, 1300, 1450, 1500}}; - - checkMatrixEqual(outGeodata.getRenderedImage(), correctedMapData); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import static java.lang.Double.NaN; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.modules.r.rastercorrector.RasterCorrector; +import org.jgrasstools.gears.modules.r.rasterreprojector.RasterReprojector; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test for {@link RasterCorrector}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestRasterCorrector extends HMTestCase { + public void testRasterCorrector() throws Exception { + + double[][] inData = HMTestMaps.mapData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); + + RasterCorrector reprojector = new RasterCorrector(); + reprojector.inRaster = inCoverage; + reprojector.pCorrections = "0,0,1.0, 5,5, 666"; + reprojector.process(); + GridCoverage2D outGeodata = reprojector.outRaster; + + double[][] correctedMapData = new double[][]{// + {1.0, 900, 1000, 1000, 1200, 1250, 1300, 1350, 1450, 1500}, // + {600, NaN, 750, 850, 860, 900, 1000, 1200, 1250, 1500}, // + {500, 550, 700, 750, 800, 850, 900, 1000, 1100, 1500}, // + {400, 410, 650, 700, 750, 800, 850, 490, 450, 1500}, // + {450, 550, 430, 500, 600, 700, 800, 500, 450, 1500}, // + {500, 600, 700, 750, 760, 666.0, 850, 1000, 1150, 1500}, // + {600, 700, 750, 800, 780, 790, 1000, 1100, 1250, 1500}, // + {800, 910, 980, 1001, 1150, 1200, 1250, 1300, 1450, 1500}}; + + checkMatrixEqual(outGeodata.getRenderedImage(), correctedMapData); + } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterReprojector.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterReprojector.java index bed457a9d..645364a68 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterReprojector.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterReprojector.java @@ -1,57 +1,57 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.modules.r.rasterreprojector.RasterReprojector; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test for {@link RasterReprojector}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestRasterReprojector extends HMTestCase { - public void testRasterReprojector() throws Exception { - - double[][] inData = HMTestMaps.mapData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); - - RasterReprojector reprojector = new RasterReprojector(); - reprojector.inRaster = inCoverage; - reprojector.pCode = "EPSG:4326"; - reprojector.process(); - GridCoverage2D outGeodata = reprojector.outRaster; - - reprojector = new RasterReprojector(); - reprojector.inRaster = outGeodata; - reprojector.pCode = "EPSG:32632"; - reprojector.process(); - outGeodata = reprojector.outRaster; - - checkMatrixEqual(outGeodata.getRenderedImage(), HMTestMaps.mapData); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.modules.r.rasterreprojector.RasterReprojector; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test for {@link RasterReprojector}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestRasterReprojector extends HMTestCase { + public void testRasterReprojector() throws Exception { + + double[][] inData = HMTestMaps.mapData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); + + RasterReprojector reprojector = new RasterReprojector(); + reprojector.inRaster = inCoverage; + reprojector.pCode = "EPSG:4326"; + reprojector.process(); + GridCoverage2D outGeodata = reprojector.outRaster; + + reprojector = new RasterReprojector(); + reprojector.inRaster = outGeodata; + reprojector.pCode = "EPSG:32632"; + reprojector.process(); + outGeodata = reprojector.outRaster; + + checkMatrixEqual(outGeodata.getRenderedImage(), HMTestMaps.mapData); + } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterSummary.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterSummary.java index 05911e59a..93c631812 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterSummary.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterSummary.java @@ -1,80 +1,80 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.modules.r.summary.RasterSummary; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test for {@link RasterSummary}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestRasterSummary extends HMTestCase { - public void testCoverageSummary() throws Exception { - - double[][] inData = HMTestMaps.extractNet0Data; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); - - RasterSummary summary = new RasterSummary(); - summary.pm = pm; - summary.inRaster = inCoverage; - summary.doHistogram = true; - summary.pBins = 100; - summary.process(); - - double min = summary.outMin; - double max = summary.outMax; - double mean = summary.outMean; - double sdev = summary.outSdev; - double range = summary.outRange; - double sum = summary.outSum; - - assertEquals(2.0, min); - assertEquals(2.0, max); - assertEquals(2.0, mean); - assertEquals(0.0, sdev); - assertEquals(0.0, range); - assertEquals(18.0, sum); - - double[][] cb = summary.outCb; - // for( int i = 0; i < cb.length; i++ ) { - // System.out.println(cb[i][0] + "\t" + cb[i][1] + "\t" + cb[i][2] + "%"); - // } - - assertEquals(cb[0][0], 2.0); - assertEquals(cb[0][1], 9.0); - assertEquals(cb[0][2], 11.25); - assertTrue(JGTConstants.isNovalue(cb[cb.length - 1][0])); - assertEquals(cb[cb.length - 1][1], 71.00); - assertEquals(cb[cb.length - 1][2], 88.75); - - // System.out.println(); - - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.modules.r.summary.RasterSummary; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test for {@link RasterSummary}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestRasterSummary extends HMTestCase { + public void testCoverageSummary() throws Exception { + + double[][] inData = HMTestMaps.extractNet0Data; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); + + RasterSummary summary = new RasterSummary(); + summary.pm = pm; + summary.inRaster = inCoverage; + summary.doHistogram = true; + summary.pBins = 100; + summary.process(); + + double min = summary.outMin; + double max = summary.outMax; + double mean = summary.outMean; + double sdev = summary.outSdev; + double range = summary.outRange; + double sum = summary.outSum; + + assertEquals(2.0, min); + assertEquals(2.0, max); + assertEquals(2.0, mean); + assertEquals(0.0, sdev); + assertEquals(0.0, range); + assertEquals(18.0, sum); + + double[][] cb = summary.outCb; + // for( int i = 0; i < cb.length; i++ ) { + // System.out.println(cb[i][0] + "\t" + cb[i][1] + "\t" + cb[i][2] + "%"); + // } + + assertEquals(cb[0][0], 2.0); + assertEquals(cb[0][1], 9.0); + assertEquals(cb[0][2], 11.25); + assertTrue(JGTConstants.isNovalue(cb[cb.length - 1][0])); + assertEquals(cb[cb.length - 1][1], 71.00); + assertEquals(cb[cb.length - 1][2], 88.75); + + // System.out.println(); + + } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterVectorIntersector.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterVectorIntersector.java index 93a03facb..de86c3db1 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterVectorIntersector.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestRasterVectorIntersector.java @@ -1,77 +1,77 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.jgrasstools.gears.libs.modules.JGTConstants; -import org.jgrasstools.gears.modules.r.rastervectorintersection.RasterVectorIntersector; -import org.jgrasstools.gears.ui.MapsViewer; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; -/** - * Test for the {@link RasterVectorIntersector} - * < - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestRasterVectorIntersector extends HMTestCase { - - @SuppressWarnings("nls") - public void testRasterVectorIntersector() throws Exception { - RegionMap ep = HMTestMaps.envelopeParams; - SimpleFeatureCollection testLeftFC = HMTestMaps.testLeftFC; - - double[][] elevationData = HMTestMaps.mapData; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, ep, crs, true); - - double[][] test = new double[elevationData.length][elevationData[0].length]; - double[][] testInverse = new double[elevationData.length][elevationData[0].length]; - for( int i = 0; i < elevationData.length; i++ ) { - for( int j = 0; j < elevationData[0].length; j++ ) { - if (j < 5) { - // hirst half - test[i][j] = elevationData[i][j]; - testInverse[i][j] = JGTConstants.doubleNovalue; - } else { - test[i][j] = JGTConstants.doubleNovalue; - testInverse[i][j] = elevationData[i][j]; - } - } - } - - RasterVectorIntersector intersect = new RasterVectorIntersector(); - intersect.inRaster = elevationCoverage; - intersect.inVector = testLeftFC; - intersect.process(); - GridCoverage2D outRaster = intersect.outRaster; - checkMatrixEqual(outRaster.getRenderedImage(), test); - - intersect = new RasterVectorIntersector(); - intersect.inRaster = elevationCoverage; - intersect.inVector = testLeftFC; - intersect.doInverse = true; - intersect.process(); - outRaster = intersect.outRaster; - checkMatrixEqual(outRaster.getRenderedImage(), testInverse); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.jgrasstools.gears.libs.modules.JGTConstants; +import org.jgrasstools.gears.modules.r.rastervectorintersection.RasterVectorIntersector; +import org.jgrasstools.gears.ui.MapsViewer; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +/** + * Test for the {@link RasterVectorIntersector} + * < + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestRasterVectorIntersector extends HMTestCase { + + @SuppressWarnings("nls") + public void testRasterVectorIntersector() throws Exception { + RegionMap ep = HMTestMaps.envelopeParams; + SimpleFeatureCollection testLeftFC = HMTestMaps.testLeftFC; + + double[][] elevationData = HMTestMaps.mapData; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, ep, crs, true); + + double[][] test = new double[elevationData.length][elevationData[0].length]; + double[][] testInverse = new double[elevationData.length][elevationData[0].length]; + for( int i = 0; i < elevationData.length; i++ ) { + for( int j = 0; j < elevationData[0].length; j++ ) { + if (j < 5) { + // hirst half + test[i][j] = elevationData[i][j]; + testInverse[i][j] = JGTConstants.doubleNovalue; + } else { + test[i][j] = JGTConstants.doubleNovalue; + testInverse[i][j] = elevationData[i][j]; + } + } + } + + RasterVectorIntersector intersect = new RasterVectorIntersector(); + intersect.inRaster = elevationCoverage; + intersect.inVector = testLeftFC; + intersect.process(); + GridCoverage2D outRaster = intersect.outRaster; + checkMatrixEqual(outRaster.getRenderedImage(), test); + + intersect = new RasterVectorIntersector(); + intersect.inRaster = elevationCoverage; + intersect.inVector = testLeftFC; + intersect.doInverse = true; + intersect.process(); + outRaster = intersect.outRaster; + checkMatrixEqual(outRaster.getRenderedImage(), testInverse); + } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestResolutionResampler.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestResolutionResampler.java index 28a178245..320e79cc4 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestResolutionResampler.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestResolutionResampler.java @@ -1,75 +1,75 @@ -///* -// * JGrass - Free Open Source Java GIS http://www.jgrass.org -// * (C) HydroloGIS - www.hydrologis.com -// * -// * This library is free software; you can redistribute it and/or modify it under -// * the terms of the GNU Library General Public License as published by the Free -// * Software Foundation; either version 2 of the License, or (at your option) any -// * later version. -// * -// * This library is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more -// * details. -// * -// * You should have received a copy of the GNU Library General Public License -// * along with this library; if not, write to the Free Foundation, Inc., 59 -// * Temple Place, Suite 330, Boston, MA 02111-1307 USA -// */ -//package org.jgrasstools.gears.modules; -// -//import java.util.HashMap; -// -//import org.geotools.coverage.grid.GridCoverage2D; -//import org.geotools.data.simple.SimpleFeatureCollection; -//import org.geotools.feature.FeatureIterator; -//import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; -//import org.jgrasstools.gears.modules.r.rasterreprojector.RasterReprojector; -//import org.jgrasstools.gears.modules.r.transformer.RasterResolutionResampler; -//import org.jgrasstools.gears.modules.v.vectorreprojector.VectorReprojector; -//import org.jgrasstools.gears.utils.HMTestCase; -//import org.jgrasstools.gears.utils.HMTestMaps; -//import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -//import org.opengis.feature.simple.SimpleFeature; -//import org.opengis.referencing.crs.CoordinateReferenceSystem; -// -//import com.vividsolutions.jts.geom.Coordinate; -//import com.vividsolutions.jts.geom.Geometry; -///** -// * Test for the reprojection modules. -// * -// * @author Andrea Antonello (www.hydrologis.com) -// */ -//public class TestResolutionResampler extends HMTestCase { -// public void testCoverageReprojector() throws Exception { -// -// double[][] elevationData = HMTestMaps.mapData; -// HashMap envelopeParams = HMTestMaps.envelopeParams; -// int origRows = envelopeParams.get(CoverageUtilities.ROWS).intValue(); -// int origCols = envelopeParams.get(CoverageUtilities.COLS).intValue(); -// CoordinateReferenceSystem crs = HMTestMaps.crs; -// GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); -// -// RasterResolutionResampler reprojector = new RasterResolutionResampler(); -// reprojector.inGeodata = elevationCoverage; -// reprojector.pInterpolation = 1; -// reprojector.pXres = 60.0; -// reprojector.process(); -// -// GridCoverage2D outMap = reprojector.outGeodata; -// -// HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(outMap); -// double west = regionMap.get(CoverageUtilities.WEST); -// double south = regionMap.get(CoverageUtilities.SOUTH); -// double east = regionMap.get(CoverageUtilities.EAST); -// double north = regionMap.get(CoverageUtilities.NORTH); -// int rows = regionMap.get(CoverageUtilities.ROWS).intValue(); -// int cols = regionMap.get(CoverageUtilities.COLS).intValue(); -// -// assertEquals(rows, origRows / 2); -// assertEquals(cols, origCols / 2); -// -// checkMatrixEqual(outMap.getRenderedImage(), HMTestMaps.mapDataHalf, 0); -// } -// -//} +///* +// * JGrass - Free Open Source Java GIS http://www.jgrass.org +// * (C) HydroloGIS - www.hydrologis.com +// * +// * This library is free software; you can redistribute it and/or modify it under +// * the terms of the GNU Library General Public License as published by the Free +// * Software Foundation; either version 2 of the License, or (at your option) any +// * later version. +// * +// * This library is distributed in the hope that it will be useful, but WITHOUT +// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +// * details. +// * +// * You should have received a copy of the GNU Library General Public License +// * along with this library; if not, write to the Free Foundation, Inc., 59 +// * Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +//package org.jgrasstools.gears.modules; +// +//import java.util.HashMap; +// +//import org.geotools.coverage.grid.GridCoverage2D; +//import org.geotools.data.simple.SimpleFeatureCollection; +//import org.geotools.feature.FeatureIterator; +//import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; +//import org.jgrasstools.gears.modules.r.rasterreprojector.RasterReprojector; +//import org.jgrasstools.gears.modules.r.transformer.RasterResolutionResampler; +//import org.jgrasstools.gears.modules.v.vectorreprojector.VectorReprojector; +//import org.jgrasstools.gears.utils.HMTestCase; +//import org.jgrasstools.gears.utils.HMTestMaps; +//import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +//import org.opengis.feature.simple.SimpleFeature; +//import org.opengis.referencing.crs.CoordinateReferenceSystem; +// +//import com.vividsolutions.jts.geom.Coordinate; +//import com.vividsolutions.jts.geom.Geometry; +///** +// * Test for the reprojection modules. +// * +// * @author Andrea Antonello (www.hydrologis.com) +// */ +//public class TestResolutionResampler extends HMTestCase { +// public void testCoverageReprojector() throws Exception { +// +// double[][] elevationData = HMTestMaps.mapData; +// HashMap envelopeParams = HMTestMaps.envelopeParams; +// int origRows = envelopeParams.get(CoverageUtilities.ROWS).intValue(); +// int origCols = envelopeParams.get(CoverageUtilities.COLS).intValue(); +// CoordinateReferenceSystem crs = HMTestMaps.crs; +// GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); +// +// RasterResolutionResampler reprojector = new RasterResolutionResampler(); +// reprojector.inGeodata = elevationCoverage; +// reprojector.pInterpolation = 1; +// reprojector.pXres = 60.0; +// reprojector.process(); +// +// GridCoverage2D outMap = reprojector.outGeodata; +// +// HashMap regionMap = CoverageUtilities.getRegionParamsFromGridCoverage(outMap); +// double west = regionMap.get(CoverageUtilities.WEST); +// double south = regionMap.get(CoverageUtilities.SOUTH); +// double east = regionMap.get(CoverageUtilities.EAST); +// double north = regionMap.get(CoverageUtilities.NORTH); +// int rows = regionMap.get(CoverageUtilities.ROWS).intValue(); +// int cols = regionMap.get(CoverageUtilities.COLS).intValue(); +// +// assertEquals(rows, origRows / 2); +// assertEquals(cols, origCols / 2); +// +// checkMatrixEqual(outMap.getRenderedImage(), HMTestMaps.mapDataHalf, 0); +// } +// +//} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestScanLineRasterizer.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestScanLineRasterizer.java index c0e133c54..288724c5c 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestScanLineRasterizer.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestScanLineRasterizer.java @@ -1,98 +1,98 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.geotools.geometry.Envelope2D; -import org.jgrasstools.gears.modules.r.scanline.ScanLineRasterizer; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.RegionMap; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.jgrasstools.gears.utils.features.FeatureUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Polygon; -/** - * Test for the {@link ScanLineRasterizer} - * < - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestScanLineRasterizer extends HMTestCase { - - @SuppressWarnings("nls") - public void testScanLineRasterizer() throws Exception { - RegionMap ep = HMTestMaps.envelopeParams; - SimpleFeatureCollection newCollection = doCollection(ep); - - ScanLineRasterizer raster = new ScanLineRasterizer(); - raster.inVector = newCollection; - raster.pCols = ep.getCols(); - raster.pRows = ep.getRows(); - raster.pNorth = ep.getNorth(); - raster.pSouth = ep.getSouth(); - raster.pEast = ep.getEast(); - raster.pWest = ep.getWest(); - raster.pValue = 2.0; - raster.process(); - - GridCoverage2D outGeodata = raster.outRaster; - checkMatrixEqual(outGeodata.getRenderedImage(), HMTestMaps.all2Data); - - raster = new ScanLineRasterizer(); - raster.inVector = newCollection; - raster.pCols = ep.getCols(); - raster.pRows = ep.getRows(); - raster.pNorth = ep.getNorth(); - raster.pSouth = ep.getSouth(); - raster.pEast = ep.getEast(); - raster.pWest = ep.getWest(); - raster.fCat = "cat"; - raster.process(); - - outGeodata = raster.outRaster; - checkMatrixEqual(outGeodata.getRenderedImage(), HMTestMaps.all1Data); - } - - private SimpleFeatureCollection doCollection( RegionMap envelopeParams ) { - double[][] elevationData = HMTestMaps.mapData; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); - Envelope2D envelope = elevationCoverage.getEnvelope2D(); - Polygon polygon = FeatureUtilities.envelopeToPolygon(envelope); - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("typename"); - b.setCRS(crs); - b.add("the_geom", Polygon.class); - b.add("cat", Double.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - Object[] values = new Object[]{polygon, 1.0}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(null); - SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); - newCollection.add(feature); - return newCollection; - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.geotools.geometry.Envelope2D; +import org.jgrasstools.gears.modules.r.scanline.ScanLineRasterizer; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.RegionMap; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.jgrasstools.gears.utils.features.FeatureUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Polygon; +/** + * Test for the {@link ScanLineRasterizer} + * < + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestScanLineRasterizer extends HMTestCase { + + @SuppressWarnings("nls") + public void testScanLineRasterizer() throws Exception { + RegionMap ep = HMTestMaps.envelopeParams; + SimpleFeatureCollection newCollection = doCollection(ep); + + ScanLineRasterizer raster = new ScanLineRasterizer(); + raster.inVector = newCollection; + raster.pCols = ep.getCols(); + raster.pRows = ep.getRows(); + raster.pNorth = ep.getNorth(); + raster.pSouth = ep.getSouth(); + raster.pEast = ep.getEast(); + raster.pWest = ep.getWest(); + raster.pValue = 2.0; + raster.process(); + + GridCoverage2D outGeodata = raster.outRaster; + checkMatrixEqual(outGeodata.getRenderedImage(), HMTestMaps.all2Data); + + raster = new ScanLineRasterizer(); + raster.inVector = newCollection; + raster.pCols = ep.getCols(); + raster.pRows = ep.getRows(); + raster.pNorth = ep.getNorth(); + raster.pSouth = ep.getSouth(); + raster.pEast = ep.getEast(); + raster.pWest = ep.getWest(); + raster.fCat = "cat"; + raster.process(); + + outGeodata = raster.outRaster; + checkMatrixEqual(outGeodata.getRenderedImage(), HMTestMaps.all1Data); + } + + private SimpleFeatureCollection doCollection( RegionMap envelopeParams ) { + double[][] elevationData = HMTestMaps.mapData; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D elevationCoverage = CoverageUtilities.buildCoverage("elevation", elevationData, envelopeParams, crs, true); + Envelope2D envelope = elevationCoverage.getEnvelope2D(); + Polygon polygon = FeatureUtilities.envelopeToPolygon(envelope); + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("typename"); + b.setCRS(crs); + b.add("the_geom", Polygon.class); + b.add("cat", Double.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + Object[] values = new Object[]{polygon, 1.0}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(null); + SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); + newCollection.add(feature); + return newCollection; + } +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorFilter.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorFilter.java index 0cd081105..1795b57ea 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorFilter.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorFilter.java @@ -1,53 +1,53 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureIterator; -import org.jgrasstools.gears.modules.v.vectorfilter.VectorFilter; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.opengis.feature.simple.SimpleFeature; -/** - * Test for the {@link VectorFilter} - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestVectorFilter extends HMTestCase { - - @SuppressWarnings("nls") - public void testVectorFilter() throws Exception { - SimpleFeatureCollection testFC = HMTestMaps.testFC; - VectorFilter filter = new VectorFilter(); - filter.inVector = testFC; - filter.pCql = "cat > 2"; - filter.process(); - SimpleFeatureCollection outFC = filter.outVector; - - assertTrue(outFC.size() == 1); - - FeatureIterator featureIterator = outFC.features(); - SimpleFeature feature = featureIterator.next(); - assertNotNull(feature); - - Integer attribute = (Integer) feature.getAttribute("cat"); - assertEquals(3, attribute.intValue()); - featureIterator.close(); - - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureIterator; +import org.jgrasstools.gears.modules.v.vectorfilter.VectorFilter; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.opengis.feature.simple.SimpleFeature; +/** + * Test for the {@link VectorFilter} + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestVectorFilter extends HMTestCase { + + @SuppressWarnings("nls") + public void testVectorFilter() throws Exception { + SimpleFeatureCollection testFC = HMTestMaps.testFC; + VectorFilter filter = new VectorFilter(); + filter.inVector = testFC; + filter.pCql = "cat > 2"; + filter.process(); + SimpleFeatureCollection outFC = filter.outVector; + + assertTrue(outFC.size() == 1); + + FeatureIterator featureIterator = outFC.features(); + SimpleFeature feature = featureIterator.next(); + assertNotNull(feature); + + Integer attribute = (Integer) feature.getAttribute("cat"); + assertEquals(3, attribute.intValue()); + featureIterator.close(); + + } +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorMerger.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorMerger.java index 3f6b02021..96ef7ecb9 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorMerger.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorMerger.java @@ -1,46 +1,46 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.util.Arrays; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.jgrasstools.gears.modules.v.vectormerger.VectorMerger; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -/** - * Test for the {@link VectorMerger} - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestVectorMerger extends HMTestCase { - - @SuppressWarnings("nls") - public void testVectorMerger() throws Exception { - SimpleFeatureCollection testFC1 = HMTestMaps.testFC; - SimpleFeatureCollection testFC2 = HMTestMaps.testFC; - - VectorMerger filter = new VectorMerger(); - filter.pm = pm; - filter.inVectors = Arrays.asList(testFC1, testFC2); - filter.process(); - SimpleFeatureCollection outFC = filter.outVector; - - assertTrue(outFC.size() == 6); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.util.Arrays; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.jgrasstools.gears.modules.v.vectormerger.VectorMerger; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +/** + * Test for the {@link VectorMerger} + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestVectorMerger extends HMTestCase { + + @SuppressWarnings("nls") + public void testVectorMerger() throws Exception { + SimpleFeatureCollection testFC1 = HMTestMaps.testFC; + SimpleFeatureCollection testFC2 = HMTestMaps.testFC; + + VectorMerger filter = new VectorMerger(); + filter.pm = pm; + filter.inVectors = Arrays.asList(testFC1, testFC2); + filter.process(); + SimpleFeatureCollection outFC = filter.outVector; + + assertTrue(outFC.size() == 6); + } +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorReprojector.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorReprojector.java index 98d04e86a..08ce9a27b 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorReprojector.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorReprojector.java @@ -1,76 +1,76 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureIterator; -import org.geotools.feature.FeatureIterator; -import org.geotools.geometry.jts.JTS; -import org.geotools.referencing.CRS; -import org.jgrasstools.gears.modules.v.vectorreprojector.VectorReprojector; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.referencing.crs.CoordinateReferenceSystem; -import org.opengis.referencing.operation.MathTransform; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; - -/** - * Test for the {@link VectorReprojector}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestVectorReprojector extends HMTestCase { - private double delta = 0.0000001; - - public void testVectorReprojector() throws Exception { - - SimpleFeatureCollection testFC = HMTestMaps.testFC; - - VectorReprojector reprojector = new VectorReprojector(); - reprojector.inVector = testFC; - reprojector.pCode = "EPSG:4326"; - reprojector.pm = pm; - reprojector.process(); - - CoordinateReferenceSystem sourceCRS = HMTestMaps.crs; - CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326"); - - MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS); - - SimpleFeatureCollection outFC = reprojector.outVector; - FeatureIterator featureIterator = outFC.features(); - SimpleFeatureIterator originalFeatureIterator = testFC.features(); - while( featureIterator.hasNext() ) { - SimpleFeature feature = featureIterator.next(); - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - Coordinate coordinate = geometry.getCoordinate(); - - SimpleFeature originalFeature = originalFeatureIterator.next(); - Coordinate origCoord = ((Geometry) originalFeature.getDefaultGeometry()).getCoordinate(); - Coordinate reprojected = JTS.transform(origCoord, null, transform); - - assertEquals(reprojected.x, coordinate.x, delta); - assertEquals(reprojected.y, coordinate.y, delta); - } - featureIterator.close(); - - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.feature.FeatureIterator; +import org.geotools.geometry.jts.JTS; +import org.geotools.referencing.CRS; +import org.jgrasstools.gears.modules.v.vectorreprojector.VectorReprojector; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.opengis.referencing.operation.MathTransform; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Test for the {@link VectorReprojector}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestVectorReprojector extends HMTestCase { + private double delta = 0.0000001; + + public void testVectorReprojector() throws Exception { + + SimpleFeatureCollection testFC = HMTestMaps.testFC; + + VectorReprojector reprojector = new VectorReprojector(); + reprojector.inVector = testFC; + reprojector.pCode = "EPSG:4326"; + reprojector.pm = pm; + reprojector.process(); + + CoordinateReferenceSystem sourceCRS = HMTestMaps.crs; + CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326"); + + MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS); + + SimpleFeatureCollection outFC = reprojector.outVector; + FeatureIterator featureIterator = outFC.features(); + SimpleFeatureIterator originalFeatureIterator = testFC.features(); + while( featureIterator.hasNext() ) { + SimpleFeature feature = featureIterator.next(); + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + Coordinate coordinate = geometry.getCoordinate(); + + SimpleFeature originalFeature = originalFeatureIterator.next(); + Coordinate origCoord = ((Geometry) originalFeature.getDefaultGeometry()).getCoordinate(); + Coordinate reprojected = JTS.transform(origCoord, null, transform); + + assertEquals(reprojected.x, coordinate.x, delta); + assertEquals(reprojected.y, coordinate.y, delta); + } + featureIterator.close(); + + } +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorReshaper.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorReshaper.java index e2503ab89..ecd526e59 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorReshaper.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorReshaper.java @@ -1,131 +1,131 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.feature.FeatureCollections; -import org.geotools.feature.FeatureIterator; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.jgrasstools.gears.modules.v.vectorreshaper.VectorReshaper; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.geometry.GeometryUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.MultiPoint; -/** - * Test for the {@link VectorReshaper}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestVectorReshaper extends HMTestCase { - - @SuppressWarnings("nls") - public void testFeatureReshaper() throws Exception { - - SimpleFeatureCollection testFC = HMTestMaps.testFC; - - VectorReshaper reshaper = new VectorReshaper(); - reshaper.inVector = testFC; - reshaper.pCql = "newcat=cat*2 \n newcat2=cat*4"; - reshaper.process(); - SimpleFeatureCollection outFC = reshaper.outVector; - - FeatureIterator featureIterator = outFC.features(); - SimpleFeature feature = featureIterator.next(); - assertNotNull(feature); - - Integer attribute = (Integer) feature.getAttribute("cat"); - Double newAttribute = (Double) feature.getAttribute("newcat"); - Double newAttribute2 = (Double) feature.getAttribute("newcat2"); - assertEquals(attribute.intValue() * 2, newAttribute.intValue()); - assertEquals(attribute.intValue() * 4, newAttribute2.intValue()); - featureIterator.close(); - - } - - public void testBuffer() throws Exception { - String cql = "the_geom=buffer(the_geom, 20.0)"; - - SimpleFeatureCollection testFC = HMTestMaps.testFC; - VectorReshaper reshaper = new VectorReshaper(); - reshaper.inVector = testFC; - reshaper.pCql = cql; - reshaper.process(); - SimpleFeatureCollection outFC = reshaper.outVector; - FeatureIterator featureIterator = outFC.features(); - SimpleFeature feature = featureIterator.next(); - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - String geometryType = geometry.getGeometryType(); - assertTrue(geometryType.toUpperCase().equals("POLYGON")); - featureIterator.close(); - } - - public void testConvexHull() throws Exception { - String cql = "the_geom=convexHull(the_geom)"; - - GeometryFactory gf = GeometryUtilities.gf(); - MultiPoint multiPoint = gf.createMultiPoint(new Coordinate[]{HMTestMaps.westNorth, HMTestMaps.eastSouth, - HMTestMaps.eastNorth}); - SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); - b.setName("test"); - b.setCRS(HMTestMaps.crs); - b.add("the_geom", MultiPoint.class); - SimpleFeatureType type = b.buildFeatureType(); - SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); - Object[] values = new Object[]{multiPoint}; - builder.addAll(values); - SimpleFeature feature = builder.buildFeature(null); - SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); - newCollection.add(feature); - - VectorReshaper reshaper = new VectorReshaper(); - reshaper.inVector = newCollection; - reshaper.pCql = cql; - reshaper.process(); - SimpleFeatureCollection outFC = reshaper.outVector; - FeatureIterator featureIterator = outFC.features(); - SimpleFeature newFeature = featureIterator.next(); - Geometry geometry = (Geometry) newFeature.getDefaultGeometry(); - String geometryType = geometry.getGeometryType(); - assertTrue(geometryType.toUpperCase().equals("POLYGON")); - featureIterator.close(); - } - - public void testCentroid() throws Exception { - String cql = "the_geom=centroid(the_geom)"; - - SimpleFeatureCollection testFC = HMTestMaps.testLeftFC; - VectorReshaper reshaper = new VectorReshaper(); - reshaper.inVector = testFC; - reshaper.pCql = cql; - reshaper.process(); - SimpleFeatureCollection outFC = reshaper.outVector; - FeatureIterator featureIterator = outFC.features(); - SimpleFeature feature = featureIterator.next(); - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - String geometryType = geometry.getGeometryType(); - assertTrue(geometryType.toUpperCase().equals("POINT")); - featureIterator.close(); - } -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureIterator; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.jgrasstools.gears.modules.v.vectorreshaper.VectorReshaper; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.geometry.GeometryUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.MultiPoint; +/** + * Test for the {@link VectorReshaper}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestVectorReshaper extends HMTestCase { + + @SuppressWarnings("nls") + public void testFeatureReshaper() throws Exception { + + SimpleFeatureCollection testFC = HMTestMaps.testFC; + + VectorReshaper reshaper = new VectorReshaper(); + reshaper.inVector = testFC; + reshaper.pCql = "newcat=cat*2 \n newcat2=cat*4"; + reshaper.process(); + SimpleFeatureCollection outFC = reshaper.outVector; + + FeatureIterator featureIterator = outFC.features(); + SimpleFeature feature = featureIterator.next(); + assertNotNull(feature); + + Integer attribute = (Integer) feature.getAttribute("cat"); + Double newAttribute = (Double) feature.getAttribute("newcat"); + Double newAttribute2 = (Double) feature.getAttribute("newcat2"); + assertEquals(attribute.intValue() * 2, newAttribute.intValue()); + assertEquals(attribute.intValue() * 4, newAttribute2.intValue()); + featureIterator.close(); + + } + + public void testBuffer() throws Exception { + String cql = "the_geom=buffer(the_geom, 20.0)"; + + SimpleFeatureCollection testFC = HMTestMaps.testFC; + VectorReshaper reshaper = new VectorReshaper(); + reshaper.inVector = testFC; + reshaper.pCql = cql; + reshaper.process(); + SimpleFeatureCollection outFC = reshaper.outVector; + FeatureIterator featureIterator = outFC.features(); + SimpleFeature feature = featureIterator.next(); + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + String geometryType = geometry.getGeometryType(); + assertTrue(geometryType.toUpperCase().equals("POLYGON")); + featureIterator.close(); + } + + public void testConvexHull() throws Exception { + String cql = "the_geom=convexHull(the_geom)"; + + GeometryFactory gf = GeometryUtilities.gf(); + MultiPoint multiPoint = gf.createMultiPoint(new Coordinate[]{HMTestMaps.westNorth, HMTestMaps.eastSouth, + HMTestMaps.eastNorth}); + SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); + b.setName("test"); + b.setCRS(HMTestMaps.crs); + b.add("the_geom", MultiPoint.class); + SimpleFeatureType type = b.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + Object[] values = new Object[]{multiPoint}; + builder.addAll(values); + SimpleFeature feature = builder.buildFeature(null); + SimpleFeatureCollection newCollection = FeatureCollections.newCollection(); + newCollection.add(feature); + + VectorReshaper reshaper = new VectorReshaper(); + reshaper.inVector = newCollection; + reshaper.pCql = cql; + reshaper.process(); + SimpleFeatureCollection outFC = reshaper.outVector; + FeatureIterator featureIterator = outFC.features(); + SimpleFeature newFeature = featureIterator.next(); + Geometry geometry = (Geometry) newFeature.getDefaultGeometry(); + String geometryType = geometry.getGeometryType(); + assertTrue(geometryType.toUpperCase().equals("POLYGON")); + featureIterator.close(); + } + + public void testCentroid() throws Exception { + String cql = "the_geom=centroid(the_geom)"; + + SimpleFeatureCollection testFC = HMTestMaps.testLeftFC; + VectorReshaper reshaper = new VectorReshaper(); + reshaper.inVector = testFC; + reshaper.pCql = cql; + reshaper.process(); + SimpleFeatureCollection outFC = reshaper.outVector; + FeatureIterator featureIterator = outFC.features(); + SimpleFeature feature = featureIterator.next(); + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + String geometryType = geometry.getGeometryType(); + assertTrue(geometryType.toUpperCase().equals("POINT")); + featureIterator.close(); + } +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorizer.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorizer.java index 645b8193e..03ee3a224 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorizer.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestVectorizer.java @@ -1,69 +1,69 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.geotools.data.simple.SimpleFeatureCollection; -import org.geotools.data.simple.SimpleFeatureIterator; -import org.jgrasstools.gears.modules.v.vectorize.Vectorizer; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -import com.vividsolutions.jts.geom.Geometry; - -/** - * Test for {@link Vectorizer}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestVectorizer extends HMTestCase { - public void testCoverageSummary() throws Exception { - - double[][] inData = HMTestMaps.extractNet0Data; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); - - Vectorizer vectorizer = new Vectorizer(); - vectorizer.pm = pm; - vectorizer.inRaster = inCoverage; - vectorizer.pValue = 2.0; - vectorizer.pThres = 1; - vectorizer.fDefault = "rast"; - vectorizer.process(); - - SimpleFeatureCollection outGeodata = vectorizer.outVector; - assertEquals(1, outGeodata.size()); - - SimpleFeatureIterator featureIterator = outGeodata.features(); - assertTrue(featureIterator.hasNext()); - - SimpleFeature feature = featureIterator.next(); - double value = ((Number) feature.getAttribute("rast")).doubleValue(); - assertEquals(1.0, value, 0.0000001); - Geometry geometry = (Geometry) feature.getDefaultGeometry(); - double area = geometry.getArea(); - assertEquals(6300.0, area, 0.0000001); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.jgrasstools.gears.modules.v.vectorize.Vectorizer; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import com.vividsolutions.jts.geom.Geometry; + +/** + * Test for {@link Vectorizer}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestVectorizer extends HMTestCase { + public void testCoverageSummary() throws Exception { + + double[][] inData = HMTestMaps.extractNet0Data; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); + + Vectorizer vectorizer = new Vectorizer(); + vectorizer.pm = pm; + vectorizer.inRaster = inCoverage; + vectorizer.pValue = 2.0; + vectorizer.pThres = 1; + vectorizer.fDefault = "rast"; + vectorizer.process(); + + SimpleFeatureCollection outGeodata = vectorizer.outVector; + assertEquals(1, outGeodata.size()); + + SimpleFeatureIterator featureIterator = outGeodata.features(); + assertTrue(featureIterator.hasNext()); + + SimpleFeature feature = featureIterator.next(); + double value = ((Number) feature.getAttribute("rast")).doubleValue(); + assertEquals(1.0, value, 0.0000001); + Geometry geometry = (Geometry) feature.getDefaultGeometry(); + double area = geometry.getArea(); + assertEquals(6300.0, area, 0.0000001); + } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestWindowSampler.java b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestWindowSampler.java index 92e50fd98..faac99139 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestWindowSampler.java +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/modules/TestWindowSampler.java @@ -1,73 +1,73 @@ -/* - * This file is part of JGrasstools (http://www.jgrasstools.org) - * (C) HydroloGIS - www.hydrologis.com - * - * JGrasstools is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.jgrasstools.gears.modules; - -import java.util.HashMap; - -import org.geotools.coverage.grid.GridCoverage2D; -import org.jgrasstools.gears.modules.r.windowsampler.WindowSampler; -import org.jgrasstools.gears.utils.HMTestCase; -import org.jgrasstools.gears.utils.HMTestMaps; -import org.jgrasstools.gears.utils.coverage.CoverageUtilities; -import org.opengis.referencing.crs.CoordinateReferenceSystem; - -/** - * Test for {@link WindowSampler}. - * - * @author Andrea Antonello (www.hydrologis.com) - */ -public class TestWindowSampler extends HMTestCase { - public void testWindowSampler() throws Exception { - - double[][] inData = HMTestMaps.mapData; - HashMap envelopeParams = HMTestMaps.envelopeParams; - CoordinateReferenceSystem crs = HMTestMaps.crs; - GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); //$NON-NLS-1$ - - WindowSampler windowSampler = new WindowSampler(); - windowSampler.inGeodata = inCoverage; - windowSampler.pMode = 0; - windowSampler.pCols = 2; - windowSampler.pRows = 2; - windowSampler.process(); - GridCoverage2D outGeodata = windowSampler.outGeodata; - - double[][] res2x2 = {// - {766.6666666666666, 900.0, 1052.5, 1212.5, 1425.0}, // - {465.0, 700.0, 800.0, 810.0, 1137.5}, // - {525.0, 595.0, 707.5, 787.5, 1150.0}, // - {752.5, 882.75, 980.0, 1162.5, 1425.0}, // - }; - checkMatrixEqual(outGeodata.getRenderedImage(), res2x2, 0.000001); - - windowSampler = new WindowSampler(); - windowSampler.inGeodata = inCoverage; - windowSampler.pMode = 0; - windowSampler.pCols = 3; - windowSampler.pRows = 5; - windowSampler.process(); - outGeodata = windowSampler.outGeodata; - - double[][] res3x5 = {// - {620.7142857142857, 834.0, 939.3333333333334, 1500.0}, // - {726.6666666666666, 889.0, 1150.0, 1500.0} // - }; - checkMatrixEqual(outGeodata.getRenderedImage(), res3x5, 0.000001); - } - -} +/* + * This file is part of JGrasstools (http://www.jgrasstools.org) + * (C) HydroloGIS - www.hydrologis.com + * + * JGrasstools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jgrasstools.gears.modules; + +import java.util.HashMap; + +import org.geotools.coverage.grid.GridCoverage2D; +import org.jgrasstools.gears.modules.r.windowsampler.WindowSampler; +import org.jgrasstools.gears.utils.HMTestCase; +import org.jgrasstools.gears.utils.HMTestMaps; +import org.jgrasstools.gears.utils.coverage.CoverageUtilities; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +/** + * Test for {@link WindowSampler}. + * + * @author Andrea Antonello (www.hydrologis.com) + */ +public class TestWindowSampler extends HMTestCase { + public void testWindowSampler() throws Exception { + + double[][] inData = HMTestMaps.mapData; + HashMap envelopeParams = HMTestMaps.envelopeParams; + CoordinateReferenceSystem crs = HMTestMaps.crs; + GridCoverage2D inCoverage = CoverageUtilities.buildCoverage("data", inData, envelopeParams, crs, true); //$NON-NLS-1$ + + WindowSampler windowSampler = new WindowSampler(); + windowSampler.inGeodata = inCoverage; + windowSampler.pMode = 0; + windowSampler.pCols = 2; + windowSampler.pRows = 2; + windowSampler.process(); + GridCoverage2D outGeodata = windowSampler.outGeodata; + + double[][] res2x2 = {// + {766.6666666666666, 900.0, 1052.5, 1212.5, 1425.0}, // + {465.0, 700.0, 800.0, 810.0, 1137.5}, // + {525.0, 595.0, 707.5, 787.5, 1150.0}, // + {752.5, 882.75, 980.0, 1162.5, 1425.0}, // + }; + checkMatrixEqual(outGeodata.getRenderedImage(), res2x2, 0.000001); + + windowSampler = new WindowSampler(); + windowSampler.inGeodata = inCoverage; + windowSampler.pMode = 0; + windowSampler.pCols = 3; + windowSampler.pRows = 5; + windowSampler.process(); + outGeodata = windowSampler.outGeodata; + + double[][] res3x5 = {// + {620.7142857142857, 834.0, 939.3333333333334, 1500.0}, // + {726.6666666666666, 889.0, 1150.0, 1500.0} // + }; + checkMatrixEqual(outGeodata.getRenderedImage(), res3x5, 0.000001); + } + +} diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/CoverageConverter.jgrass b/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/CoverageConverter.jgrass index 7505a2ad7..6f27fd3bd 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/CoverageConverter.jgrass +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/CoverageConverter.jgrass @@ -1,27 +1,27 @@ -s = sb.sim(name:"ConvertAsciiToGeotiff") { - - // your folder here - def folder = new File("src/test/resources").absolutePath; - - model { - components { - reader 'RasterReader' - writer 'GeoTiffCoverageWriter' - } - - parameter { - 'reader.file' "$folder/dtm_test.asc" - 'writer.file' "$folder/dtm_test.tiff" - } - - connect { - 'reader.geodata' 'writer.geodata' - } - - } -} - -res = s.run(); - -println "Output gridcoverage:" +s = sb.sim(name:"ConvertAsciiToGeotiff") { + + // your folder here + def folder = new File("src/test/resources").absolutePath; + + model { + components { + reader 'RasterReader' + writer 'GeoTiffCoverageWriter' + } + + parameter { + 'reader.file' "$folder/dtm_test.asc" + 'writer.file' "$folder/dtm_test.tiff" + } + + connect { + 'reader.geodata' 'writer.geodata' + } + + } +} + +res = s.run(); + +println "Output gridcoverage:" println res.writer.geodata \ No newline at end of file diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/CoverageConverterInTwoSimulations.jgrass b/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/CoverageConverterInTwoSimulations.jgrass index e32901b95..edddaccc6 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/CoverageConverterInTwoSimulations.jgrass +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/CoverageConverterInTwoSimulations.jgrass @@ -1,69 +1,69 @@ -// your folder here -def folder = new File("src/test/resources").absolutePath; - - -s1 = sb.sim(name:"ReadAscii") { - - model { - components { - reader 'RasterReader' - viewer 'CoverageViewer' - } - - parameter { - 'reader.file' "$folder/dtm_test.asc" - } - - connect { - 'reader.geodata' 'viewer.coverage' - } - } -} - -res1 = s1.run(); - -println "Read gridcoverage:" -println res1.reader.geodata - -s2 = sb.sim(name:"WriteGeotiff") { - - model { - components { - writer 'GeoTiffCoverageWriter' - } - - parameter { - 'writer.geodata' $res1.reader.geodata - 'writer.file' "$folder/dtm_test.tiff" - } - - connect { - } - - } -} -res2 = s2.run(); - -println "Written gridcoverage:" -println res2.writer.geodata - -s3 = sb.sim(name:"ReadTiff") { - - model { - components { - reader 'RasterReader' - viewer 'CoverageViewer' - } - - parameter { - 'reader.file' "$folder/dtm_test.tiff" - } - - connect { - 'reader.geodata' 'viewer.coverage' - } - } -} -res3 = s3.run(); - - +// your folder here +def folder = new File("src/test/resources").absolutePath; + + +s1 = sb.sim(name:"ReadAscii") { + + model { + components { + reader 'RasterReader' + viewer 'CoverageViewer' + } + + parameter { + 'reader.file' "$folder/dtm_test.asc" + } + + connect { + 'reader.geodata' 'viewer.coverage' + } + } +} + +res1 = s1.run(); + +println "Read gridcoverage:" +println res1.reader.geodata + +s2 = sb.sim(name:"WriteGeotiff") { + + model { + components { + writer 'GeoTiffCoverageWriter' + } + + parameter { + 'writer.geodata' $res1.reader.geodata + 'writer.file' "$folder/dtm_test.tiff" + } + + connect { + } + + } +} +res2 = s2.run(); + +println "Written gridcoverage:" +println res2.writer.geodata + +s3 = sb.sim(name:"ReadTiff") { + + model { + components { + reader 'RasterReader' + viewer 'CoverageViewer' + } + + parameter { + 'reader.file' "$folder/dtm_test.tiff" + } + + connect { + 'reader.geodata' 'viewer.coverage' + } + } +} +res3 = s3.run(); + + diff --git a/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/FeatureReshaper.jgrass b/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/FeatureReshaper.jgrass index 42fd96ed5..4d03b9ebe 100644 --- a/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/FeatureReshaper.jgrass +++ b/jgrassgears/src/test/java/org/jgrasstools/gears/oms/scripts/FeatureReshaper.jgrass @@ -1,25 +1,25 @@ -sim(name:"Reshape") { - - // your folder here - def folder = "/home/moovida/TMP/review/"; - - model { - components { - reader 'ShapefileFeatureReader' - featureReshaper 'FeatureReshaper' - writer 'ShapefileFeatureWriter' - } - - parameter { - 'reader.file' "$folder/sorgenti_azim.shp" - 'writer.file' "$folder/sorgenti_azim_minus90.shp" - 'featureReshaper.pCql' "azimuth90=azimuth - 90" - } - - connect { - 'reader.geodata' 'featureReshaper.inFeatures' - 'featureReshaper.outFeatures' 'writer.geodata' - } - - } -} +sim(name:"Reshape") { + + // your folder here + def folder = "/home/moovida/TMP/review/"; + + model { + components { + reader 'ShapefileFeatureReader' + featureReshaper 'FeatureReshaper' + writer 'ShapefileFeatureWriter' + } + + parameter { + 'reader.file' "$folder/sorgenti_azim.shp" + 'writer.file' "$folder/sorgenti_azim_minus90.shp" + 'featureReshaper.pCql' "azimuth90=azimuth - 90" + } + + connect { + 'reader.geodata' 'featureReshaper.inFeatures' + 'featureReshaper.outFeatures' 'writer.geodata' + } + + } +} diff --git a/jgrassgears/src/test/resources/dtm_test.asc b/jgrassgears/src/test/resources/dtm_test.asc index e927d25eb..c8bdcffe1 100644 --- a/jgrassgears/src/test/resources/dtm_test.asc +++ b/jgrassgears/src/test/resources/dtm_test.asc @@ -1,14 +1,14 @@ -ncols 10 -nrows 8 -xllcorner 1640650.0 -yllcorner 5139780.0 -cellsize 30 -NODATA_value -9999.0 -800 900 1000 1000 1200 1250 1300 1350 1450 1500 -600 -9999.0 750 850 860 900 1000 1200 1250 1500 -500 550 700 750 800 850 900 1000 1100 1500 -400 410 650 700 750 800 850 490 450 1500 -450 550 430 500 600 700 800 500 450 1500 -500 600 700 750 760 770 850 1000 1150 1500 -600 700 750 800 780 790 1000 1100 1250 1500 -800 910 980 1001 1150 1200 1250 1300 1450 1500 +ncols 10 +nrows 8 +xllcorner 1640650.0 +yllcorner 5139780.0 +cellsize 30 +NODATA_value -9999.0 +800 900 1000 1000 1200 1250 1300 1350 1450 1500 +600 -9999.0 750 850 860 900 1000 1200 1250 1500 +500 550 700 750 800 850 900 1000 1100 1500 +400 410 650 700 750 800 850 490 450 1500 +450 550 430 500 600 700 800 500 450 1500 +500 600 700 750 760 770 850 1000 1150 1500 +600 700 750 800 780 790 1000 1100 1250 1500 +800 910 980 1001 1150 1200 1250 1300 1450 1500 diff --git a/jgrassgears/src/test/resources/dtm_test.prj b/jgrassgears/src/test/resources/dtm_test.prj index ded43d128..095d52524 100644 --- a/jgrassgears/src/test/resources/dtm_test.prj +++ b/jgrassgears/src/test/resources/dtm_test.prj @@ -1,21 +1,21 @@ -PROJCS["WGS 84 / UTM zone 32N", - GEOGCS["WGS 84", - DATUM["World Geodetic System 1984", - SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], - AUTHORITY["EPSG","6326"]], - PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], - UNIT["degree", 0.017453292519943295], - AXIS["Geodetic longitude", EAST], - AXIS["Geodetic latitude", NORTH], - AUTHORITY["EPSG","4326"]], - PROJECTION["Transverse_Mercator"], - PARAMETER["central_meridian", 9.0], - PARAMETER["latitude_of_origin", 0.0], - PARAMETER["scale_factor", 0.9996], - PARAMETER["false_easting", 500000.0], - PARAMETER["false_northing", 0.0], - UNIT["m", 1.0], - AXIS["Easting", EAST], - AXIS["Northing", NORTH], - AUTHORITY["EPSG","32632"]] - +PROJCS["WGS 84 / UTM zone 32N", + GEOGCS["WGS 84", + DATUM["World Geodetic System 1984", + SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], + AUTHORITY["EPSG","6326"]], + PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], + UNIT["degree", 0.017453292519943295], + AXIS["Geodetic longitude", EAST], + AXIS["Geodetic latitude", NORTH], + AUTHORITY["EPSG","4326"]], + PROJECTION["Transverse_Mercator"], + PARAMETER["central_meridian", 9.0], + PARAMETER["latitude_of_origin", 0.0], + PARAMETER["scale_factor", 0.9996], + PARAMETER["false_easting", 500000.0], + PARAMETER["false_northing", 0.0], + UNIT["m", 1.0], + AXIS["Easting", EAST], + AXIS["Northing", NORTH], + AUTHORITY["EPSG","32632"]] + diff --git a/jgrassgears/src/test/resources/gbovest/PERMANENT/PROJ_INFO.WKT b/jgrassgears/src/test/resources/gbovest/PERMANENT/PROJ_INFO.WKT index 6653d6c45..98b3002a8 100644 --- a/jgrassgears/src/test/resources/gbovest/PERMANENT/PROJ_INFO.WKT +++ b/jgrassgears/src/test/resources/gbovest/PERMANENT/PROJ_INFO.WKT @@ -1,21 +1,21 @@ -PROJCS["Monte Mario / Italy zone 1 - Peninsular Part/Accuracy 3-4m", - GEOGCS["Monte Mario", - DATUM["Monte Mario", - SPHEROID["International 1924", 6378388.0, 297.0, AUTHORITY["EPSG","7022"]], - TOWGS84[-104.1, -49.1, -9.9, 0.971, -2.917, 0.714, -11.68], - AUTHORITY["EPSG","6265"]], - PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], - UNIT["degree", 0.017453292519943295], - AXIS["Geodetic longitude", EAST], - AXIS["Geodetic latitude", NORTH], - AUTHORITY["EPSG","4265"]], - PROJECTION["Transverse_Mercator"], - PARAMETER["central_meridian", 9.0], - PARAMETER["latitude_of_origin", 0.0], - PARAMETER["scale_factor", 0.9996], - PARAMETER["false_easting", 1500000.0], - PARAMETER["false_northing", 0.0], - UNIT["m", 1.0], - AXIS["Easting", EAST], - AXIS["Northing", NORTH], +PROJCS["Monte Mario / Italy zone 1 - Peninsular Part/Accuracy 3-4m", + GEOGCS["Monte Mario", + DATUM["Monte Mario", + SPHEROID["International 1924", 6378388.0, 297.0, AUTHORITY["EPSG","7022"]], + TOWGS84[-104.1, -49.1, -9.9, 0.971, -2.917, 0.714, -11.68], + AUTHORITY["EPSG","6265"]], + PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], + UNIT["degree", 0.017453292519943295], + AXIS["Geodetic longitude", EAST], + AXIS["Geodetic latitude", NORTH], + AUTHORITY["EPSG","4265"]], + PROJECTION["Transverse_Mercator"], + PARAMETER["central_meridian", 9.0], + PARAMETER["latitude_of_origin", 0.0], + PARAMETER["scale_factor", 0.9996], + PARAMETER["false_easting", 1500000.0], + PARAMETER["false_northing", 0.0], + UNIT["m", 1.0], + AXIS["Easting", EAST], + AXIS["Northing", NORTH], AUTHORITY["EPSG","30031000"]] \ No newline at end of file diff --git a/jgrassgears/src/test/resources/test.prj b/jgrassgears/src/test/resources/test.prj index ded43d128..095d52524 100644 --- a/jgrassgears/src/test/resources/test.prj +++ b/jgrassgears/src/test/resources/test.prj @@ -1,21 +1,21 @@ -PROJCS["WGS 84 / UTM zone 32N", - GEOGCS["WGS 84", - DATUM["World Geodetic System 1984", - SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], - AUTHORITY["EPSG","6326"]], - PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], - UNIT["degree", 0.017453292519943295], - AXIS["Geodetic longitude", EAST], - AXIS["Geodetic latitude", NORTH], - AUTHORITY["EPSG","4326"]], - PROJECTION["Transverse_Mercator"], - PARAMETER["central_meridian", 9.0], - PARAMETER["latitude_of_origin", 0.0], - PARAMETER["scale_factor", 0.9996], - PARAMETER["false_easting", 500000.0], - PARAMETER["false_northing", 0.0], - UNIT["m", 1.0], - AXIS["Easting", EAST], - AXIS["Northing", NORTH], - AUTHORITY["EPSG","32632"]] - +PROJCS["WGS 84 / UTM zone 32N", + GEOGCS["WGS 84", + DATUM["World Geodetic System 1984", + SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], + AUTHORITY["EPSG","6326"]], + PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], + UNIT["degree", 0.017453292519943295], + AXIS["Geodetic longitude", EAST], + AXIS["Geodetic latitude", NORTH], + AUTHORITY["EPSG","4326"]], + PROJECTION["Transverse_Mercator"], + PARAMETER["central_meridian", 9.0], + PARAMETER["latitude_of_origin", 0.0], + PARAMETER["scale_factor", 0.9996], + PARAMETER["false_easting", 500000.0], + PARAMETER["false_northing", 0.0], + UNIT["m", 1.0], + AXIS["Easting", EAST], + AXIS["Northing", NORTH], + AUTHORITY["EPSG","32632"]] + diff --git a/jgrassgears/src/test/resources/timeseriesiteratorcomplexreader_test.csv b/jgrassgears/src/test/resources/timeseriesiteratorcomplexreader_test.csv index 3339e3e57..0510bfd5b 100644 --- a/jgrassgears/src/test/resources/timeseriesiteratorcomplexreader_test.csv +++ b/jgrassgears/src/test/resources/timeseriesiteratorcomplexreader_test.csv @@ -1,10 +1,10 @@ -@T,jami_out_temp -Created,09/23/10 11:45 AM -Author,HortonMachine library -@H,timestamp,value_1221A,value_1221B,value_1221C,value_1221D,value_1221E,value_1097A,value_1097B,value_1097C,value_1097D,value_1097E -ID,,1221,1221,1221,1221,1221,1097,1097,1097,1097,1097 -Type,Date,Double,Double,Double,Double,Double,Double,Double,Double,Double,Double -Format,yyyy-MM-dd HH:mm,,,,,,,,,, -,2005-05-01 00:00,8.64,7.34,7.16,6.01,3.03,6.88,6.39,5.89,4.27,2.61 -,2005-05-01 01:00,7.52,6.27,6.47,5.73,2.8,5.95,5.77,5.59,4.01,2.39 -,2005-05-01 02:00,6.87,5.64,6.05,5.37,2.4,5.44,5.5,5.55,4.07,2.54 +@T,jami_out_temp +Created,09/23/10 11:45 AM +Author,HortonMachine library +@H,timestamp,value_1221A,value_1221B,value_1221C,value_1221D,value_1221E,value_1097A,value_1097B,value_1097C,value_1097D,value_1097E +ID,,1221,1221,1221,1221,1221,1097,1097,1097,1097,1097 +Type,Date,Double,Double,Double,Double,Double,Double,Double,Double,Double,Double +Format,yyyy-MM-dd HH:mm,,,,,,,,,, +,2005-05-01 00:00,8.64,7.34,7.16,6.01,3.03,6.88,6.39,5.89,4.27,2.61 +,2005-05-01 01:00,7.52,6.27,6.47,5.73,2.8,5.95,5.77,5.59,4.01,2.39 +,2005-05-01 02:00,6.87,5.64,6.05,5.37,2.4,5.44,5.5,5.55,4.07,2.54 diff --git a/oms3/pom.xml b/oms3/pom.xml index 1c42b3ad5..6f3a689a1 100644 --- a/oms3/pom.xml +++ b/oms3/pom.xml @@ -1,50 +1,50 @@ - - - 4.0.0 - - org.jgrasstools - jgrasstools - 0.7.7-SNAPSHOT - - - org.jgrasstools - jgt-oms3 - 0.7.7-SNAPSHOT - jar - Object Modeling System (JGrasstools package) - - - - jfree - jfreechart - 1.0.13 - - - org.codehaus.groovy - groovy-all - 1.7.1 - - - org.fusesource.jansi - jansi - - - - - - org.fusesource.jansi - jansi - 1.2.1 - - - - com.sun.jna - jna - 3.0.9 - - - - - UTF-8 - - + + + 4.0.0 + + org.jgrasstools + jgrasstools + 0.7.7-SNAPSHOT + + + org.jgrasstools + jgt-oms3 + 0.7.7-SNAPSHOT + jar + Object Modeling System (JGrasstools package) + + + + jfree + jfreechart + 1.0.13 + + + org.codehaus.groovy + groovy-all + 1.7.1 + + + org.fusesource.jansi + jansi + + + + + + org.fusesource.jansi + jansi + 1.2.1 + + + + com.sun.jna + jna + 3.0.9 + + + + + UTF-8 + + diff --git a/oms3/src/main/java/oms3/annotations/Description.java b/oms3/src/main/java/oms3/annotations/Description.java index fb704fd67..989eac26a 100644 --- a/oms3/src/main/java/oms3/annotations/Description.java +++ b/oms3/src/main/java/oms3/annotations/Description.java @@ -1,134 +1,134 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** Description information for fields and components. - * - * @see In - * @author Olaf David - * @version $Id$ - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.FIELD, ElementType.TYPE}) -public @interface Description { - - /** The default value of a description - * - * @return the description string - */ - String value() default ""; - - // optional Localized descriptions below. - String ar() default ""; - - String be() default ""; - - String bg() default ""; - - String ca() default ""; - - String cs() default ""; - - String da() default ""; - - String de() default ""; - - String el() default ""; - - String en() default ""; - - String es() default ""; - - String et() default ""; - - String fi() default ""; - - String fr() default ""; - - String ga() default ""; - - String hi() default ""; - - String hr() default ""; - - String hu() default ""; - - String in() default ""; - - String is() default ""; - - String it() default ""; - - String iw() default ""; - - String ja() default ""; - - String ko() default ""; - - String lt() default ""; - - String lv() default ""; - - String mk() default ""; - - String ms() default ""; - - String mt() default ""; - - String nl() default ""; - - String no() default ""; - - String pl() default ""; - - String pt() default ""; - - String ro() default ""; - - String ru() default ""; - - String sk() default ""; - - String sl() default ""; - - String sq() default ""; - - String sr() default ""; - - String sv() default ""; - - String th() default ""; - - String tr() default ""; - - String uk() default ""; - - String vi() default ""; - - String zh() default ""; -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Description information for fields and components. + * + * @see In + * @author Olaf David + * @version $Id$ + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD, ElementType.TYPE}) +public @interface Description { + + /** The default value of a description + * + * @return the description string + */ + String value() default ""; + + // optional Localized descriptions below. + String ar() default ""; + + String be() default ""; + + String bg() default ""; + + String ca() default ""; + + String cs() default ""; + + String da() default ""; + + String de() default ""; + + String el() default ""; + + String en() default ""; + + String es() default ""; + + String et() default ""; + + String fi() default ""; + + String fr() default ""; + + String ga() default ""; + + String hi() default ""; + + String hr() default ""; + + String hu() default ""; + + String in() default ""; + + String is() default ""; + + String it() default ""; + + String iw() default ""; + + String ja() default ""; + + String ko() default ""; + + String lt() default ""; + + String lv() default ""; + + String mk() default ""; + + String ms() default ""; + + String mt() default ""; + + String nl() default ""; + + String no() default ""; + + String pl() default ""; + + String pt() default ""; + + String ro() default ""; + + String ru() default ""; + + String sk() default ""; + + String sl() default ""; + + String sq() default ""; + + String sr() default ""; + + String sv() default ""; + + String th() default ""; + + String tr() default ""; + + String uk() default ""; + + String vi() default ""; + + String zh() default ""; +} diff --git a/oms3/src/main/java/oms3/annotations/Execute.java b/oms3/src/main/java/oms3/annotations/Execute.java index 8d2db25a1..c7e0a87db 100644 --- a/oms3/src/main/java/oms3/annotations/Execute.java +++ b/oms3/src/main/java/oms3/annotations/Execute.java @@ -1,40 +1,40 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** Execute tag for a method. - * - * @see Initialize - * @see Finalize - * @author Olaf David - * @version $Id$ - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface Execute { -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Execute tag for a method. + * + * @see Initialize + * @see Finalize + * @author Olaf David + * @version $Id$ + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface Execute { +} diff --git a/oms3/src/main/java/oms3/annotations/Finalize.java b/oms3/src/main/java/oms3/annotations/Finalize.java index 41619aba8..021baff07 100644 --- a/oms3/src/main/java/oms3/annotations/Finalize.java +++ b/oms3/src/main/java/oms3/annotations/Finalize.java @@ -1,38 +1,38 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** Cleanup tag for methods - * - * @author Olaf David - * @version $Id$ - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface Finalize { -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Cleanup tag for methods + * + * @author Olaf David + * @version $Id$ + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface Finalize { +} diff --git a/oms3/src/main/java/oms3/annotations/In.java b/oms3/src/main/java/oms3/annotations/In.java index 61b630b8f..152cc6f3d 100644 --- a/oms3/src/main/java/oms3/annotations/In.java +++ b/oms3/src/main/java/oms3/annotations/In.java @@ -1,40 +1,40 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Input Tag for fields. - * - * @see Out - * @author Olaf David - * @version $Id$ - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -public @interface In { -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Input Tag for fields. + * + * @see Out + * @author Olaf David + * @version $Id$ + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface In { +} diff --git a/oms3/src/main/java/oms3/annotations/Initialize.java b/oms3/src/main/java/oms3/annotations/Initialize.java index 40b268baf..6e036a0e5 100644 --- a/oms3/src/main/java/oms3/annotations/Initialize.java +++ b/oms3/src/main/java/oms3/annotations/Initialize.java @@ -1,38 +1,38 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** Initialize tag for methods - * - * @author Olaf David - * @version $Id$ - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface Initialize { -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Initialize tag for methods + * + * @author Olaf David + * @version $Id$ + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface Initialize { +} diff --git a/oms3/src/main/java/oms3/annotations/Out.java b/oms3/src/main/java/oms3/annotations/Out.java index bb36eb6dc..5dde1a5e4 100644 --- a/oms3/src/main/java/oms3/annotations/Out.java +++ b/oms3/src/main/java/oms3/annotations/Out.java @@ -1,39 +1,39 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** Output tag for fields. - * - * @see In - * @author Olaf David - * @version $Id$ - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -public @interface Out { -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Output tag for fields. + * + * @see In + * @author Olaf David + * @version $Id$ + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface Out { +} diff --git a/oms3/src/main/java/oms3/annotations/Range.java b/oms3/src/main/java/oms3/annotations/Range.java index 6c3b03b22..9a2970d71 100644 --- a/oms3/src/main/java/oms3/annotations/Range.java +++ b/oms3/src/main/java/oms3/annotations/Range.java @@ -1,65 +1,65 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** Range Information for fields - * - * @author Olaf David - * @version $Id$ - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -public @interface Range { - - /** - * The minimum value - * @return the minimal value - */ - double min() default Double.MIN_VALUE; - - /** - * The maximum value - * @return the maximum value - */ - double max() default Double.MAX_VALUE; - - - /** - * Exclude the minimum value - * - * @return true if the minimum should be excluded - */ - boolean excl_min() default false; - - /** - * Exclude the maximum value - * - * @return true if the minimum should be excluded - */ - boolean excl_max() default false; -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Range Information for fields + * + * @author Olaf David + * @version $Id$ + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface Range { + + /** + * The minimum value + * @return the minimal value + */ + double min() default Double.MIN_VALUE; + + /** + * The maximum value + * @return the maximum value + */ + double max() default Double.MAX_VALUE; + + + /** + * Exclude the minimum value + * + * @return true if the minimum should be excluded + */ + boolean excl_min() default false; + + /** + * Exclude the maximum value + * + * @return true if the minimum should be excluded + */ + boolean excl_max() default false; +} diff --git a/oms3/src/main/java/oms3/annotations/Role.java b/oms3/src/main/java/oms3/annotations/Role.java index d68bbe568..109c6dc39 100644 --- a/oms3/src/main/java/oms3/annotations/Role.java +++ b/oms3/src/main/java/oms3/annotations/Role.java @@ -1,50 +1,50 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** Role information for fields. - * - * @see In - * @author Olaf David - * @version $Id$ - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -public @interface Role { - - public static final String STATE = "State "; - public static final String PARAMETER = "Parameter "; - public static final String VARIABLE = "Variable "; - public static final String OBSERVED = "Observed "; - public static final String OUTPUT = "Output "; - public static final String INPUT = "Input "; - public static final String SIMULATED = "Simulated "; - - - String value() default VARIABLE; -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Role information for fields. + * + * @see In + * @author Olaf David + * @version $Id$ + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface Role { + + public static final String STATE = "State "; + public static final String PARAMETER = "Parameter "; + public static final String VARIABLE = "Variable "; + public static final String OBSERVED = "Observed "; + public static final String OUTPUT = "Output "; + public static final String INPUT = "Input "; + public static final String SIMULATED = "Simulated "; + + + String value() default VARIABLE; +} diff --git a/oms3/src/main/java/oms3/annotations/Unit.java b/oms3/src/main/java/oms3/annotations/Unit.java index d7d51a7f0..2fb693061 100644 --- a/oms3/src/main/java/oms3/annotations/Unit.java +++ b/oms3/src/main/java/oms3/annotations/Unit.java @@ -1,41 +1,41 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.annotations; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** Unit information for fields. - * - * @see In - * @author Olaf David - * @version $Id$ - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -public @interface Unit { - - String value() default "unitless"; -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Unit information for fields. + * + * @see In + * @author Olaf David + * @version $Id$ + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface Unit { + + String value() default "unitless"; +} diff --git a/oms3/src/main/java/oms3/annotations/package-info.java b/oms3/src/main/java/oms3/annotations/package-info.java index f8735fade..17eec8cbb 100644 --- a/oms3/src/main/java/oms3/annotations/package-info.java +++ b/oms3/src/main/java/oms3/annotations/package-info.java @@ -1,30 +1,30 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -/** - * Component Annotations. - * - * @author Olaf David - * @version $Id$ - */ -package oms3.annotations; - +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +/** + * Component Annotations. + * + * @author Olaf David + * @version $Id$ + */ +package oms3.annotations; + diff --git a/oms3/src/main/java/oms3/control/Conditional.java b/oms3/src/main/java/oms3/control/Conditional.java index ebf4c2f6d..d404c60e5 100644 --- a/oms3/src/main/java/oms3/control/Conditional.java +++ b/oms3/src/main/java/oms3/control/Conditional.java @@ -1,51 +1,51 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.control; - -import oms3.Compound; -import oms3.annotations.Execute; -import oms3.annotations.In; - -/** - * Conditional Compound. - * - * @author Olaf David (olaf.david@ars.usda.gov) - * @version $Id$ - */ -public abstract class Conditional extends Compound { - - public static class Cond { - - @In public boolean alive = true; - - @Execute - public void execute() { - } - } - - protected Cond cond = new Cond(); - - protected void conditional(Object cmd, String bool) { - out2in(cmd, bool, cond, "alive"); - } -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.control; + +import oms3.Compound; +import oms3.annotations.Execute; +import oms3.annotations.In; + +/** + * Conditional Compound. + * + * @author Olaf David (olaf.david@ars.usda.gov) + * @version $Id$ + */ +public abstract class Conditional extends Compound { + + public static class Cond { + + @In public boolean alive = true; + + @Execute + public void execute() { + } + } + + protected Cond cond = new Cond(); + + protected void conditional(Object cmd, String bool) { + out2in(cmd, bool, cond, "alive"); + } +} diff --git a/oms3/src/main/java/oms3/control/If.java b/oms3/src/main/java/oms3/control/If.java index ce760cd3a..6bdc7671c 100644 --- a/oms3/src/main/java/oms3/control/If.java +++ b/oms3/src/main/java/oms3/control/If.java @@ -1,40 +1,40 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.control; - -/** - * 'If' control Component. - * - * @author od - * @version $Id$ - */ -public class If extends Conditional { - - @Override - public void execute() { - check(); - if (cond.alive) { - internalExec(); - } - } -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.control; + +/** + * 'If' control Component. + * + * @author od + * @version $Id$ + */ +public class If extends Conditional { + + @Override + public void execute() { + check(); + if (cond.alive) { + internalExec(); + } + } +} diff --git a/oms3/src/main/java/oms3/control/Iteration.java b/oms3/src/main/java/oms3/control/Iteration.java index 89e56d36e..cbb743541 100644 --- a/oms3/src/main/java/oms3/control/Iteration.java +++ b/oms3/src/main/java/oms3/control/Iteration.java @@ -1,34 +1,34 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.control; - -/** - * While Component. - * - * @author od - * @version $Id$ - */ -@Deprecated -public class Iteration extends While { - -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.control; + +/** + * While Component. + * + * @author od + * @version $Id$ + */ +@Deprecated +public class Iteration extends While { + +} diff --git a/oms3/src/main/java/oms3/control/Time.java b/oms3/src/main/java/oms3/control/Time.java index 8360ca4fb..2d597fe83 100644 --- a/oms3/src/main/java/oms3/control/Time.java +++ b/oms3/src/main/java/oms3/control/Time.java @@ -1,85 +1,85 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.control; - -import oms3.annotations.Execute; -import oms3.annotations.In; -import oms3.annotations.Out; -import java.util.GregorianCalendar; - -/** - * Time Control Component - * - * @author od - * @version $Id$ - */ -public class Time extends While { - - @In public GregorianCalendar start; - @In public GregorianCalendar end; - @In public int field; - @In public int amount; - - public static class TimeControl { - - @Out public boolean done; - @Out public GregorianCalendar current; - - @In public GregorianCalendar start; - @In public GregorianCalendar end; - @In public int field; - @In public int amount; - - TimeControl() { - current = start; - } - - public void initialize() { - current = start; - } - - @Execute - public void execute() { - if (current == null) { - current = start; - } - current.add(field, amount); - done = current.before(end); - } - } - - TimeControl tc = new TimeControl(); - - public Time() { - conditional(tc, "done"); - - in2in("start", tc, "start"); - in2in("end", tc, "end"); - in2in("field", tc, "field"); - in2in("amount", tc, "amount"); - } - - protected void connectTime(Object cmd, String curr) { - out2in(tc, "current", cmd, curr); - } -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.control; + +import oms3.annotations.Execute; +import oms3.annotations.In; +import oms3.annotations.Out; +import java.util.GregorianCalendar; + +/** + * Time Control Component + * + * @author od + * @version $Id$ + */ +public class Time extends While { + + @In public GregorianCalendar start; + @In public GregorianCalendar end; + @In public int field; + @In public int amount; + + public static class TimeControl { + + @Out public boolean done; + @Out public GregorianCalendar current; + + @In public GregorianCalendar start; + @In public GregorianCalendar end; + @In public int field; + @In public int amount; + + TimeControl() { + current = start; + } + + public void initialize() { + current = start; + } + + @Execute + public void execute() { + if (current == null) { + current = start; + } + current.add(field, amount); + done = current.before(end); + } + } + + TimeControl tc = new TimeControl(); + + public Time() { + conditional(tc, "done"); + + in2in("start", tc, "start"); + in2in("end", tc, "end"); + in2in("field", tc, "field"); + in2in("amount", tc, "amount"); + } + + protected void connectTime(Object cmd, String curr) { + out2in(tc, "current", cmd, curr); + } +} diff --git a/oms3/src/main/java/oms3/control/Until.java b/oms3/src/main/java/oms3/control/Until.java index c42225105..6f6190777 100644 --- a/oms3/src/main/java/oms3/control/Until.java +++ b/oms3/src/main/java/oms3/control/Until.java @@ -1,45 +1,45 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.control; - -import oms3.ComponentException; -import oms3.annotations.Execute; - -/** - * While Component. - * - * @author od - * @version $Id$ - */ -public class Until extends Conditional { - - @Override - @Execute - public void execute() throws ComponentException { - check(); - while (!cond.alive) { - internalExec(); - } - } - -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.control; + +import oms3.ComponentException; +import oms3.annotations.Execute; + +/** + * While Component. + * + * @author od + * @version $Id$ + */ +public class Until extends Conditional { + + @Override + @Execute + public void execute() throws ComponentException { + check(); + while (!cond.alive) { + internalExec(); + } + } + +} diff --git a/oms3/src/main/java/oms3/control/While.java b/oms3/src/main/java/oms3/control/While.java index 1817e7c81..5482656bc 100644 --- a/oms3/src/main/java/oms3/control/While.java +++ b/oms3/src/main/java/oms3/control/While.java @@ -1,44 +1,44 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.control; - -import oms3.ComponentException; -import oms3.annotations.Execute; - -/** - * While Component. - * - * @author od - * @version $Id$ - */ -public class While extends Conditional { - - @Override - @Execute - public void execute() throws ComponentException { - check(); - while (cond.alive) { - internalExec(); - } - } -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.control; + +import oms3.ComponentException; +import oms3.annotations.Execute; + +/** + * While Component. + * + * @author od + * @version $Id$ + */ +public class While extends Conditional { + + @Override + @Execute + public void execute() throws ComponentException { + check(); + while (cond.alive) { + internalExec(); + } + } +} diff --git a/oms3/src/main/java/oms3/control/package-info.java b/oms3/src/main/java/oms3/control/package-info.java index c3bf99ef6..372d99240 100644 --- a/oms3/src/main/java/oms3/control/package-info.java +++ b/oms3/src/main/java/oms3/control/package-info.java @@ -1,31 +1,31 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ - -/** - * Control Compounds. - * - * @author Olaf David (olaf.david@ars.usda.gov) - * @version $Id$ - */ -package oms3.control; - +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ + +/** + * Control Compounds. + * + * @author Olaf David (olaf.david@ars.usda.gov) + * @version $Id$ + */ +package oms3.control; + diff --git a/oms3/src/main/java/oms3/ds/Grid.java b/oms3/src/main/java/oms3/ds/Grid.java index e47ba5451..2869da4e1 100644 --- a/oms3/src/main/java/oms3/ds/Grid.java +++ b/oms3/src/main/java/oms3/ds/Grid.java @@ -1,91 +1,91 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.ds; - -import oms3.Compound; -import java.util.ArrayList; -import java.util.Iterator; - -/** - * Grid datastaructure. - * - * @author Olaf David (olaf.david@ars.usda.gov) - * @version $Id$ - */ -public class Grid extends ArrayList { - - private static final long serialVersionUID = -1159467302002888533L; - - - int cols; - int rows; - - public Grid(int width, int height) { - super(width * height); - this.cols = width; - this.rows = height; - } - - private int index(int x, int y) { - return x * cols + y; - } - - public void set(int x, int y, Compound w) { - super.set(index(x, y), w); - } - - public Compound get(int x, int y) { - return super.get(index(x, y)); - } - - public Iterator col_wise() { - - return new Iterator() { - - int y = 0; - int x = 0; - int idx = 0; - - public boolean hasNext() { - if ((x == cols-1) && (y < rows-1)) { - x = 0; - } - return true; - } - - public Compound next() { - idx++; - return get(x,y); - } - - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - - public Iterator row_wise() { - return super.iterator(); - } -} - +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.ds; + +import oms3.Compound; +import java.util.ArrayList; +import java.util.Iterator; + +/** + * Grid datastaructure. + * + * @author Olaf David (olaf.david@ars.usda.gov) + * @version $Id$ + */ +public class Grid extends ArrayList { + + private static final long serialVersionUID = -1159467302002888533L; + + + int cols; + int rows; + + public Grid(int width, int height) { + super(width * height); + this.cols = width; + this.rows = height; + } + + private int index(int x, int y) { + return x * cols + y; + } + + public void set(int x, int y, Compound w) { + super.set(index(x, y), w); + } + + public Compound get(int x, int y) { + return super.get(index(x, y)); + } + + public Iterator col_wise() { + + return new Iterator() { + + int y = 0; + int x = 0; + int idx = 0; + + public boolean hasNext() { + if ((x == cols-1) && (y < rows-1)) { + x = 0; + } + return true; + } + + public Compound next() { + idx++; + return get(x,y); + } + + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } + + public Iterator row_wise() { + return super.iterator(); + } +} + diff --git a/oms3/src/main/java/oms3/ds/Lookup.java b/oms3/src/main/java/oms3/ds/Lookup.java index c2536237e..1da93a3a2 100644 --- a/oms3/src/main/java/oms3/ds/Lookup.java +++ b/oms3/src/main/java/oms3/ds/Lookup.java @@ -1,35 +1,35 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.ds; - -import oms3.Compound; -import java.util.HashMap; - -/** Lookup storage of Compounds. - * - * @author Olaf David (olaf.david@ars.usda.gov) - * @version $Id$ - */ -public class Lookup extends HashMap { - private static final long serialVersionUID = 8955106752919862261L; -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.ds; + +import oms3.Compound; +import java.util.HashMap; + +/** Lookup storage of Compounds. + * + * @author Olaf David (olaf.david@ars.usda.gov) + * @version $Id$ + */ +public class Lookup extends HashMap { + private static final long serialVersionUID = 8955106752919862261L; +} diff --git a/oms3/src/main/java/oms3/ds/Tree.java b/oms3/src/main/java/oms3/ds/Tree.java index 9511824d0..d7fbb59ae 100644 --- a/oms3/src/main/java/oms3/ds/Tree.java +++ b/oms3/src/main/java/oms3/ds/Tree.java @@ -1,148 +1,148 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.ds; - -import oms3.Compound; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; - -/** - * Tree data structure. - * - * @author Olaf David (olaf.david@ars.usda.gov) - * @version $Id$ - */ -public class Tree { - - Map content = new HashMap(); - Compound root; - - public Tree(Compound root) { - content.put(root, new TreeNode(null)); - this.root = root; - } - - private TreeNode node(Compound c) { - TreeNode t = content.get(c); - if (t == null) { - throw new IllegalArgumentException("Not in tree " + c); - } - return t; - } - - public List children(Compound c) { - return node(c).children; - } - - public Compound parent(Compound c) { - return node(c).parent; - } - -// inorder -// postorder -// preorder -// levelorder (breadthfirst) - - /** Returns all compounds from the Compound argument to the root of - * the tree following the path. - * - * @param c the Compound to start with. - * @return the set of Compounds in the given order. - */ - public Iterator toRootOrder(final Compound c) { - return new Iterator() { - - Compound curr; - TreeNode n = node(c); - Compound parent = c; - - public boolean hasNext() { - return !n.isRoot(); - } - - public Compound next() { - if (hasNext()) { - curr = parent; - parent = n.parent; - n = node(n.parent); - return curr; - } else { - throw new NoSuchElementException(); - } - } - - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - - public void add(Compound parent, Compound child) { - TreeNode parentNode = content.get(parent); - if (parentNode == null) { - throw new IllegalArgumentException("no parent"); - } - TreeNode c = content.get(child); - if (c != null) { - throw new IllegalArgumentException("child already in."); - } - content.put(child, new TreeNode(parent)); - parentNode.children.add(child); - } - - public Compound getRoot() { - return root; - } - - public Collection content() { - return content.keySet(); - } -} - -/** - * - * @author Olaf David - */ -class TreeNode { - - Compound parent; - List children = new ArrayList(3); - - TreeNode(Compound parent) { - this.parent = parent; - } - - boolean isRoot() { - return parent == null; - } - - boolean hasChildren() { - return children.size() > 0; - } -} - +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.ds; + +import oms3.Compound; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; + +/** + * Tree data structure. + * + * @author Olaf David (olaf.david@ars.usda.gov) + * @version $Id$ + */ +public class Tree { + + Map content = new HashMap(); + Compound root; + + public Tree(Compound root) { + content.put(root, new TreeNode(null)); + this.root = root; + } + + private TreeNode node(Compound c) { + TreeNode t = content.get(c); + if (t == null) { + throw new IllegalArgumentException("Not in tree " + c); + } + return t; + } + + public List children(Compound c) { + return node(c).children; + } + + public Compound parent(Compound c) { + return node(c).parent; + } + +// inorder +// postorder +// preorder +// levelorder (breadthfirst) + + /** Returns all compounds from the Compound argument to the root of + * the tree following the path. + * + * @param c the Compound to start with. + * @return the set of Compounds in the given order. + */ + public Iterator toRootOrder(final Compound c) { + return new Iterator() { + + Compound curr; + TreeNode n = node(c); + Compound parent = c; + + public boolean hasNext() { + return !n.isRoot(); + } + + public Compound next() { + if (hasNext()) { + curr = parent; + parent = n.parent; + n = node(n.parent); + return curr; + } else { + throw new NoSuchElementException(); + } + } + + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } + + public void add(Compound parent, Compound child) { + TreeNode parentNode = content.get(parent); + if (parentNode == null) { + throw new IllegalArgumentException("no parent"); + } + TreeNode c = content.get(child); + if (c != null) { + throw new IllegalArgumentException("child already in."); + } + content.put(child, new TreeNode(parent)); + parentNode.children.add(child); + } + + public Compound getRoot() { + return root; + } + + public Collection content() { + return content.keySet(); + } +} + +/** + * + * @author Olaf David + */ +class TreeNode { + + Compound parent; + List children = new ArrayList(3); + + TreeNode(Compound parent) { + this.parent = parent; + } + + boolean isRoot() { + return parent == null; + } + + boolean hasChildren() { + return children.size() > 0; + } +} + diff --git a/oms3/src/main/java/oms3/ds/package-info.java b/oms3/src/main/java/oms3/ds/package-info.java index bbe750f90..30eb3790e 100644 --- a/oms3/src/main/java/oms3/ds/package-info.java +++ b/oms3/src/main/java/oms3/ds/package-info.java @@ -1,31 +1,31 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ - -/** - * Data structures that manage compounds. - * - * @author Olaf David (olaf.david@ars.usda.gov) - * @version $Id$ - */ -package oms3.ds; - +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ + +/** + * Data structures that manage compounds. + * + * @author Olaf David (olaf.david@ars.usda.gov) + * @version $Id$ + */ +package oms3.ds; + diff --git a/oms3/src/main/java/oms3/io/CSProperties.java b/oms3/src/main/java/oms3/io/CSProperties.java index d1a6de1cc..95729f7d9 100644 --- a/oms3/src/main/java/oms3/io/CSProperties.java +++ b/oms3/src/main/java/oms3/io/CSProperties.java @@ -1,61 +1,61 @@ -/* - * $Id:$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.io; - -import java.util.Map; - -/** Comma separated properties - * - * @author Olaf David - */ -public interface CSProperties extends Map { - - /** Get the name of the propertyset - * - * @return the name - */ - String getName(); - - /** - * Set the name - * @param name - */ - void setName(String name); - - /** Get the annotations for the propertyset. - * - * @return the info for the propertyset. - */ - Map getInfo(); - - /** Get the info for a property. - * - * @param propertyName - * @return the annotations for this property. - */ - Map getInfo(String propertyName); - - void setInfo(String propertyname, Map info); - - public void putAll(CSProperties p); -} +/* + * $Id:$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.io; + +import java.util.Map; + +/** Comma separated properties + * + * @author Olaf David + */ +public interface CSProperties extends Map { + + /** Get the name of the propertyset + * + * @return the name + */ + String getName(); + + /** + * Set the name + * @param name + */ + void setName(String name); + + /** Get the annotations for the propertyset. + * + * @return the info for the propertyset. + */ + Map getInfo(); + + /** Get the info for a property. + * + * @param propertyName + * @return the annotations for this property. + */ + Map getInfo(String propertyName); + + void setInfo(String propertyname, Map info); + + public void putAll(CSProperties p); +} diff --git a/oms3/src/main/java/oms3/io/CSTable.java b/oms3/src/main/java/oms3/io/CSTable.java index bfb6d67fa..eeba26b3f 100644 --- a/oms3/src/main/java/oms3/io/CSTable.java +++ b/oms3/src/main/java/oms3/io/CSTable.java @@ -1,80 +1,80 @@ -/* - * $Id:$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.io; - -import java.util.Map; - -/** Comma separated table. - * - * @author Olaf David - */ -public interface CSTable { - - /** Get the name of the table - * - * @return the name - */ - String getName(); - - /** Get the annotations for the table - * - * @return the annotations for the propertyset. - */ - Map getInfo(); - - /** - * Get the info for a column. - * - * @param column - * @return a map with KVP for column meta data. - */ - Map getColumnInfo(int column); - - /** - * Get the column name. - * @param column - * @return the column name. - */ - String getColumnName(int column); - - /** get the number of columns in the table - * - * @return the number of columns. - */ - int getColumnCount(); - - /** - * get the row iterator. - * @return row iterator - */ - Iterable rows(); - - /** - * get the row iterator and skip the first rows. - * @param skipRow the # rows to skip - * @return row iterator - */ - Iterable rows(final int skipRow); - - -} +/* + * $Id:$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.io; + +import java.util.Map; + +/** Comma separated table. + * + * @author Olaf David + */ +public interface CSTable { + + /** Get the name of the table + * + * @return the name + */ + String getName(); + + /** Get the annotations for the table + * + * @return the annotations for the propertyset. + */ + Map getInfo(); + + /** + * Get the info for a column. + * + * @param column + * @return a map with KVP for column meta data. + */ + Map getColumnInfo(int column); + + /** + * Get the column name. + * @param column + * @return the column name. + */ + String getColumnName(int column); + + /** get the number of columns in the table + * + * @return the number of columns. + */ + int getColumnCount(); + + /** + * get the row iterator. + * @return row iterator + */ + Iterable rows(); + + /** + * get the row iterator and skip the first rows. + * @param skipRow the # rows to skip + * @return row iterator + */ + Iterable rows(final int skipRow); + + +} diff --git a/oms3/src/main/java/oms3/io/CSVParser.java b/oms3/src/main/java/oms3/io/CSVParser.java index a4dc2119c..1b011dc54 100644 --- a/oms3/src/main/java/oms3/io/CSVParser.java +++ b/oms3/src/main/java/oms3/io/CSVParser.java @@ -1,633 +1,633 @@ -/* - * $Id:$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.io; - -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.io.StringWriter; -import java.util.ArrayList; - -/** - * Parses CSV files according to the specified configuration. - * - * Because CSV appears in many different dialects, the parser supports many - * configuration settings by allowing the specification of a {@link CSVStrategy}. - * - *

                                                                                Parsing of a csv-string having tabs as separators, - * '"' as an optional value encapsulator, and comments starting with '#':

                                                                                - *
                                                                                - *  String[][] data = 
                                                                                - *   (new CSVParser(new StringReader("a\tb\nc\td"), new CSVStrategy('\t','"','#'))).getAllValues();
                                                                                - * 
                                                                                - * - *

                                                                                Parsing of a csv-string in Excel CSV format

                                                                                - *
                                                                                - *  String[][] data =
                                                                                - *   (new CSVParser(new StringReader("a;b\nc;d"), CSVStrategy.EXCEL_STRATEGY)).getAllValues();
                                                                                - * 
                                                                                - * - *

                                                                                - * Internal parser state is completely covered by the strategy - * and the reader-state.

                                                                                - * - *

                                                                                see package documentation - * for more details

                                                                                - */ -class CSVParser { - - /** length of the initial token (content-)buffer */ - private static final int INITIAL_TOKEN_LENGTH = 50; - // the token types - /** Token has no valid content, i.e. is in its initilized state. */ - protected static final int TT_INVALID = -1; - /** Token with content, at beginning or in the middle of a line. */ - protected static final int TT_TOKEN = 0; - /** Token (which can have content) when end of file is reached. */ - protected static final int TT_EOF = 1; - /** Token with content when end of a line is reached. */ - protected static final int TT_EORECORD = 2; - /** Immutable empty String array. */ - private static final String[] EMPTY_STRING_ARRAY = new String[0]; - private static final String[][] EMPTY_DOUBLE_STRING_ARRAY = new String[0][0]; - - // the input stream - private final ExtendedBufferedReader in; - private CSVStrategy strategy; - // the following objects are shared to reduce garbage - /** A record buffer for getLine(). Grows as necessary and is reused. */ - private final ArrayList record = new ArrayList(); - private final Token reusableToken = new Token(); - private final CharBuffer wsBuf = new CharBuffer(); - private final CharBuffer code = new CharBuffer(4); - - /** - * Token is an internal token representation. - * - * It is used as contract between the lexer and the parser. - */ - static class Token { - - /** Token type, see TT_xxx constants. */ - int type = TT_INVALID; - /** The content buffer. */ - CharBuffer content = new CharBuffer(INITIAL_TOKEN_LENGTH); - /** Token ready flag: indicates a valid token with content (ready for the parser). */ - boolean isReady; - - Token reset() { - content.clear(); - type = TT_INVALID; - isReady = false; - return this; - } - } - - /** - * Customized CSV parser using the given {@link CSVStrategy} - * - * @param input a Reader containing "csv-formatted" input - * @param strategy the CSVStrategy used for CSV parsing - */ - CSVParser(Reader input, CSVStrategy strategy) { - this.in = new ExtendedBufferedReader(input); - this.strategy = strategy; - } - - CSVParser(Reader input, CSVStrategy strategy, int sz) { - this.in = new ExtendedBufferedReader(input, sz); - this.strategy = strategy; - } - - public void skipLines(int n) throws IOException { - for (int i = n; i > 0; i--) { - in.skipUntil('\n'); - in.skip(1); - } - } - - /** - * Parses the CSV according to the given strategy - * and returns the content as an array of records - * (whereas records are arrays of single values). - *

                                                                                - * The returned content starts at the current parse-position in - * the stream. - * - * @return matrix of records x values ('null' when end of file) - * @throws IOException on parse error or input read-failure - */ - public String[][] getAllValues() throws IOException { - ArrayList records = new ArrayList(); - String[] values; - String[][] ret = null; - while ((values = getLine()) != null) { - records.add(values); - } - if (records.size() > 0) { - ret = new String[records.size()][]; - records.toArray(ret); - } - return ret; - } - - /** - * Converts an array of string values into a single CSV line. All - * null values are converted to the string "null", - * all strings equal to "null" will additionally get quotes - * around. - * - * @param values the value array - * @return the CSV string, will be an empty string if the length of the - * value array is 0 - */ - public static String printLine(String... values) { - // set up a CSVUtils - StringWriter stringWriter = new StringWriter(); - CSVPrinter csvPrinter = new CSVPrinter(stringWriter); - - // check for null values an "null" as strings and convert them - // into the strings "null" and "\"null\"" - for (int i = 0; i < values.length; i++) { - if (values[i] == null) { - values[i] = "null"; - } else if (values[i].equals("null")) { - values[i] = "\"null\""; - } - } - - // convert to CSV - csvPrinter.println(values); - - // as the resulting string has \r\n at the end, we will trim that away - return stringWriter.toString().trim(); - } - - // ====================================================== - // static parsers - // ====================================================== - /** - * Parses the given String according to the default {@link CSVStrategy}. - * - * @param s CSV String to be parsed. - * @return parsed String matrix (which is never null) - * @throws IOException in case of error - */ - public static String[][] parse(String s) throws IOException { - if (s == null) { - throw new IllegalArgumentException("Null argument not allowed."); - } - String[][] result = (new CSVParser(new StringReader(s), CSVStrategy.DEFAULT_STRATEGY)).getAllValues(); - if (result == null) { - // since CSVStrategy ignores empty lines an empty array is returned - // (i.e. not "result = new String[][] {{""}};") - result = EMPTY_DOUBLE_STRING_ARRAY; - } - return result; - } - - /** - * Parses the first line only according to the default {@link CSVStrategy}. - * - * Parsing empty string will be handled as valid records containing zero - * elements, so the following property holds: parseLine("").length == 0. - * - * @param s CSV String to be parsed. - * @return parsed String vector (which is never null) - * @throws IOException in case of error - */ - public static String[] parseLine(String s) throws IOException { - if (s == null) { - throw new IllegalArgumentException("Null argument not allowed."); - } - // uh,jh: make sure that parseLine("").length == 0 - if (s.length() == 0) { - return EMPTY_STRING_ARRAY; - } - return (new CSVParser(new StringReader(s), CSVStrategy.DEFAULT_STRATEGY)).getLine(); - } - - /** - * Parses the CSV according to the given strategy - * and returns the next csv-value as string. - * - * @return next value in the input stream ('null' when end of file) - * @throws IOException on parse error or input read-failure - */ - public String nextValue() throws IOException { - Token tkn = nextToken(); - String ret = null; - switch (tkn.type) { - case TT_TOKEN: - case TT_EORECORD: - ret = tkn.content.toString(); - break; - case TT_EOF: - ret = null; - break; - case TT_INVALID: - default: - // error no token available (or error) - throw new IOException( - "(line " + getLineNumber() + ") invalid parse sequence"); - /// unreachable: break; - } - return ret; - } - - /** - * Parses from the current point in the stream til - * the end of the current line. - * - * @return array of values til end of line - * ('null' when end of file has been reached) - * @throws IOException on parse error or input read-failure - */ - public String[] getLine() throws IOException { - String[] ret = EMPTY_STRING_ARRAY; - record.clear(); - while (true) { - reusableToken.reset(); - nextToken(reusableToken); - switch (reusableToken.type) { - case TT_TOKEN: - record.add(reusableToken.content.toString()); - break; - case TT_EORECORD: - record.add(reusableToken.content.toString()); - break; - case TT_EOF: - if (reusableToken.isReady) { - record.add(reusableToken.content.toString()); - } else { - ret = null; - } - break; - case TT_INVALID: - default: - // error: throw IOException - throw new IOException("(line " + getLineNumber() + ") invalid parse sequence"); - // unreachable: break; - } - if (reusableToken.type != TT_TOKEN) { - break; - } - } - if (!record.isEmpty()) { - ret = (String[]) record.toArray(new String[record.size()]); - } - return ret; - } - - /** - * Returns the current line number in the input stream. - * - * ATTENTION: in case your csv has multiline-values the returned - * number does not correspond to the record-number - * - * @return current line number - */ - public int getLineNumber() { - return in.getLineNumber(); - } - - // ====================================================== - // the lexer(s) - // ====================================================== - /** - * Convenience method for nextToken(null). - */ - Token nextToken() throws IOException { - return nextToken(new Token()); - } - - /** - * Returns the next token. - * - * A token corresponds to a term, a record change or an - * end-of-file indicator. - * - * @param tkn an existing Token object to reuse. The caller is responsible to initialize the - * Token. - * @return the next token found - * @throws IOException on stream access error - */ - Token nextToken(Token tkn) throws IOException { - wsBuf.clear(); // resuse - - // get the last read char (required for empty line detection) - int lastChar = in.readAgain(); - - // read the next char and set eol - /* note: unfourtunately isEndOfLine may consumes a character silently. - * this has no effect outside of the method. so a simple workaround - * is to call 'readAgain' on the stream... - * uh: might using objects instead of base-types (jdk1.5 autoboxing!) - */ - int c = in.read(); - boolean eol = isEndOfLine(c); - c = in.readAgain(); - - // empty line detection: eol AND (last char was EOL or beginning) - while (strategy.getIgnoreEmptyLines() && eol && (lastChar == '\n' || lastChar == ExtendedBufferedReader.UNDEFINED) && !isEndOfFile(lastChar)) { - // go on char ahead ... - lastChar = c; - c = in.read(); - eol = isEndOfLine(c); - c = in.readAgain(); - // reached end of file without any content (empty line at the end) - if (isEndOfFile(c)) { - tkn.type = TT_EOF; - return tkn; - } - } - - // did we reached eof during the last iteration already ? TT_EOF - if (isEndOfFile(lastChar) || (lastChar != strategy.getDelimiter() && isEndOfFile(c))) { - tkn.type = TT_EOF; - return tkn; - } - - // important: make sure a new char gets consumed in each iteration - while (!tkn.isReady) { - // ignore whitespaces at beginning of a token - while (isWhitespace(c) && !eol) { - wsBuf.append((char) c); - c = in.read(); - eol = isEndOfLine(c); - } - // ok, start of token reached: comment, encapsulated, or token - if (c == strategy.getCommentStart()) { - // ignore everything till end of line and continue (incr linecount) - in.readLine(); - tkn = nextToken(tkn.reset()); - } else if (c == strategy.getDelimiter()) { - // empty token return TT_TOKEN("") - tkn.type = TT_TOKEN; - tkn.isReady = true; - } else if (eol) { - // empty token return TT_EORECORD("") - //noop: tkn.content.append(""); - tkn.type = TT_EORECORD; - tkn.isReady = true; - } else if (c == strategy.getEncapsulator()) { - // consume encapsulated token - encapsulatedTokenLexer(tkn, c); - } else if (isEndOfFile(c)) { - // end of file return TT_EOF() - //noop: tkn.content.append(""); - tkn.type = TT_EOF; - tkn.isReady = true; - } else { - // next token must be a simple token - // add removed blanks when not ignoring whitespace chars... - if (!strategy.getIgnoreLeadingWhitespaces()) { - tkn.content.append(wsBuf); - } - simpleTokenLexer(tkn, c); - } - } - return tkn; - } - - /** - * A simple token lexer - * - * Simple token are tokens which are not surrounded by encapsulators. - * A simple token might contain escaped delimiters (as \, or \;). The - * token is finished when one of the following conditions become true: - *

                                                                                  - *
                                                                                • end of line has been reached (TT_EORECORD)
                                                                                • - *
                                                                                • end of stream has been reached (TT_EOF)
                                                                                • - *
                                                                                • an unescaped delimiter has been reached (TT_TOKEN)
                                                                                • - *
                                                                                - * - * @param tkn the current token - * @param c the current character - * @return the filled token - * - * @throws IOException on stream access error - */ - private Token simpleTokenLexer(Token tkn, int c) throws IOException { - for (;;) { - if (isEndOfLine(c)) { - // end of record - tkn.type = TT_EORECORD; - tkn.isReady = true; - break; - } else if (isEndOfFile(c)) { - // end of file - tkn.type = TT_EOF; - tkn.isReady = true; - break; - } else if (c == strategy.getDelimiter()) { - // end of token - tkn.type = TT_TOKEN; - tkn.isReady = true; - break; - } else if (c == '\\' && strategy.getUnicodeEscapeInterpretation() && in.lookAhead() == 'u') { - // interpret unicode escaped chars (like \u0070 -> p) - tkn.content.append((char) unicodeEscapeLexer(c)); - } else if (c == strategy.getEscape()) { - tkn.content.append((char) readEscape(c)); - } else { - tkn.content.append((char) c); - } - - c = in.read(); - } - - if (strategy.getIgnoreTrailingWhitespaces()) { - tkn.content.trimTrailingWhitespace(); - } - - return tkn; - } - - /** - * An encapsulated token lexer - * - * Encapsulated tokens are surrounded by the given encapsulating-string. - * The encapsulator itself might be included in the token using a - * doubling syntax (as "", '') or using escaping (as in \", \'). - * Whitespaces before and after an encapsulated token are ignored. - * - * @param tkn the current token - * @param c the current character - * @return a valid token object - * @throws IOException on invalid state - */ - private Token encapsulatedTokenLexer(Token tkn, int c) throws IOException { - // save current line - int startLineNumber = getLineNumber(); - // ignore the given delimiter - // assert c == delimiter; - for (;;) { - c = in.read(); - - if (c == '\\' && strategy.getUnicodeEscapeInterpretation() && in.lookAhead() == 'u') { - tkn.content.append((char) unicodeEscapeLexer(c)); - } else if (c == strategy.getEscape()) { - tkn.content.append((char) readEscape(c)); - } else if (c == strategy.getEncapsulator()) { - if (in.lookAhead() == strategy.getEncapsulator()) { - // double or escaped encapsulator -> add single encapsulator to token - c = in.read(); - tkn.content.append((char) c); - } else { - // token finish mark (encapsulator) reached: ignore whitespace till delimiter - for (;;) { - c = in.read(); - if (c == strategy.getDelimiter()) { - tkn.type = TT_TOKEN; - tkn.isReady = true; - return tkn; - } else if (isEndOfFile(c)) { - tkn.type = TT_EOF; - tkn.isReady = true; - return tkn; - } else if (isEndOfLine(c)) { - // ok eo token reached - tkn.type = TT_EORECORD; - tkn.isReady = true; - return tkn; - } else if (!isWhitespace(c)) { - // error invalid char between token and next delimiter - throw new IOException( - "(line " + getLineNumber() + ") invalid char between encapsulated token end delimiter"); - } - } - } - } else if (isEndOfFile(c)) { - // error condition (end of file before end of token) - throw new IOException( - "(startline " + startLineNumber + ")" + "eof reached before encapsulated token finished"); - } else { - // consume character - tkn.content.append((char) c); - } - } - } - - /** - * Decodes Unicode escapes. - * - * Interpretation of "\\uXXXX" escape sequences - * where XXXX is a hex-number. - * @param c current char which is discarded because it's the "\\" of "\\uXXXX" - * @return the decoded character - * @throws IOException on wrong unicode escape sequence or read error - */ - protected int unicodeEscapeLexer(int c) throws IOException { - int ret = 0; - // ignore 'u' (assume c==\ now) and read 4 hex digits - c = in.read(); - code.clear(); - try { - for (int i = 0; i < 4; i++) { - c = in.read(); - if (isEndOfFile(c) || isEndOfLine(c)) { - throw new NumberFormatException("number too short"); - } - code.append((char) c); - } - ret = Integer.parseInt(code.toString(), 16); - } catch (NumberFormatException e) { - throw new IOException( - "(line " + getLineNumber() + ") Wrong unicode escape sequence found '" + code.toString() + "'" + e.toString()); - } - return ret; - } - - private int readEscape(int c) throws IOException { - // assume c is the escape char (normally a backslash) - c = in.read(); - int out; - switch (c) { - case 'r': - out = '\r'; - break; - case 'n': - out = '\n'; - break; - case 't': - out = '\t'; - break; - case 'b': - out = '\b'; - break; - case 'f': - out = '\f'; - break; - default: - out = c; - } - return out; - } - - // ====================================================== - // strategies - // ====================================================== - /** - * Obtain the specified CSV Strategy - * - * @return strategy currently being used - */ - public CSVStrategy getStrategy() { - return this.strategy; - } - - // ====================================================== - // Character class checker - // ====================================================== - /** - * @return true if the given char is a whitespace character - */ - private boolean isWhitespace(int c) { - return Character.isWhitespace((char) c) && (c != strategy.getDelimiter()); - } - - /** - * Greedy - accepts \n and \r\n - * This checker consumes silently the second control-character... - * - * @return true if the given character is a line-terminator - */ - private boolean isEndOfLine(int c) throws IOException { - // check if we have \r\n... - if (c == '\r') { - if (in.lookAhead() == '\n') { - // note: does not change c outside of this method !! - c = in.read(); - } - } - return (c == '\n'); - } - - /** - * @return true if the given character indicates end of file - */ - private boolean isEndOfFile(int c) { - return c == ExtendedBufferedReader.END_OF_STREAM; - } -} +/* + * $Id:$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.io; + +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.io.StringWriter; +import java.util.ArrayList; + +/** + * Parses CSV files according to the specified configuration. + * + * Because CSV appears in many different dialects, the parser supports many + * configuration settings by allowing the specification of a {@link CSVStrategy}. + * + *

                                                                                Parsing of a csv-string having tabs as separators, + * '"' as an optional value encapsulator, and comments starting with '#':

                                                                                + *
                                                                                + *  String[][] data = 
                                                                                + *   (new CSVParser(new StringReader("a\tb\nc\td"), new CSVStrategy('\t','"','#'))).getAllValues();
                                                                                + * 
                                                                                + * + *

                                                                                Parsing of a csv-string in Excel CSV format

                                                                                + *
                                                                                + *  String[][] data =
                                                                                + *   (new CSVParser(new StringReader("a;b\nc;d"), CSVStrategy.EXCEL_STRATEGY)).getAllValues();
                                                                                + * 
                                                                                + * + *

                                                                                + * Internal parser state is completely covered by the strategy + * and the reader-state.

                                                                                + * + *

                                                                                see package documentation + * for more details

                                                                                + */ +class CSVParser { + + /** length of the initial token (content-)buffer */ + private static final int INITIAL_TOKEN_LENGTH = 50; + // the token types + /** Token has no valid content, i.e. is in its initilized state. */ + protected static final int TT_INVALID = -1; + /** Token with content, at beginning or in the middle of a line. */ + protected static final int TT_TOKEN = 0; + /** Token (which can have content) when end of file is reached. */ + protected static final int TT_EOF = 1; + /** Token with content when end of a line is reached. */ + protected static final int TT_EORECORD = 2; + /** Immutable empty String array. */ + private static final String[] EMPTY_STRING_ARRAY = new String[0]; + private static final String[][] EMPTY_DOUBLE_STRING_ARRAY = new String[0][0]; + + // the input stream + private final ExtendedBufferedReader in; + private CSVStrategy strategy; + // the following objects are shared to reduce garbage + /** A record buffer for getLine(). Grows as necessary and is reused. */ + private final ArrayList record = new ArrayList(); + private final Token reusableToken = new Token(); + private final CharBuffer wsBuf = new CharBuffer(); + private final CharBuffer code = new CharBuffer(4); + + /** + * Token is an internal token representation. + * + * It is used as contract between the lexer and the parser. + */ + static class Token { + + /** Token type, see TT_xxx constants. */ + int type = TT_INVALID; + /** The content buffer. */ + CharBuffer content = new CharBuffer(INITIAL_TOKEN_LENGTH); + /** Token ready flag: indicates a valid token with content (ready for the parser). */ + boolean isReady; + + Token reset() { + content.clear(); + type = TT_INVALID; + isReady = false; + return this; + } + } + + /** + * Customized CSV parser using the given {@link CSVStrategy} + * + * @param input a Reader containing "csv-formatted" input + * @param strategy the CSVStrategy used for CSV parsing + */ + CSVParser(Reader input, CSVStrategy strategy) { + this.in = new ExtendedBufferedReader(input); + this.strategy = strategy; + } + + CSVParser(Reader input, CSVStrategy strategy, int sz) { + this.in = new ExtendedBufferedReader(input, sz); + this.strategy = strategy; + } + + public void skipLines(int n) throws IOException { + for (int i = n; i > 0; i--) { + in.skipUntil('\n'); + in.skip(1); + } + } + + /** + * Parses the CSV according to the given strategy + * and returns the content as an array of records + * (whereas records are arrays of single values). + *

                                                                                + * The returned content starts at the current parse-position in + * the stream. + * + * @return matrix of records x values ('null' when end of file) + * @throws IOException on parse error or input read-failure + */ + public String[][] getAllValues() throws IOException { + ArrayList records = new ArrayList(); + String[] values; + String[][] ret = null; + while ((values = getLine()) != null) { + records.add(values); + } + if (records.size() > 0) { + ret = new String[records.size()][]; + records.toArray(ret); + } + return ret; + } + + /** + * Converts an array of string values into a single CSV line. All + * null values are converted to the string "null", + * all strings equal to "null" will additionally get quotes + * around. + * + * @param values the value array + * @return the CSV string, will be an empty string if the length of the + * value array is 0 + */ + public static String printLine(String... values) { + // set up a CSVUtils + StringWriter stringWriter = new StringWriter(); + CSVPrinter csvPrinter = new CSVPrinter(stringWriter); + + // check for null values an "null" as strings and convert them + // into the strings "null" and "\"null\"" + for (int i = 0; i < values.length; i++) { + if (values[i] == null) { + values[i] = "null"; + } else if (values[i].equals("null")) { + values[i] = "\"null\""; + } + } + + // convert to CSV + csvPrinter.println(values); + + // as the resulting string has \r\n at the end, we will trim that away + return stringWriter.toString().trim(); + } + + // ====================================================== + // static parsers + // ====================================================== + /** + * Parses the given String according to the default {@link CSVStrategy}. + * + * @param s CSV String to be parsed. + * @return parsed String matrix (which is never null) + * @throws IOException in case of error + */ + public static String[][] parse(String s) throws IOException { + if (s == null) { + throw new IllegalArgumentException("Null argument not allowed."); + } + String[][] result = (new CSVParser(new StringReader(s), CSVStrategy.DEFAULT_STRATEGY)).getAllValues(); + if (result == null) { + // since CSVStrategy ignores empty lines an empty array is returned + // (i.e. not "result = new String[][] {{""}};") + result = EMPTY_DOUBLE_STRING_ARRAY; + } + return result; + } + + /** + * Parses the first line only according to the default {@link CSVStrategy}. + * + * Parsing empty string will be handled as valid records containing zero + * elements, so the following property holds: parseLine("").length == 0. + * + * @param s CSV String to be parsed. + * @return parsed String vector (which is never null) + * @throws IOException in case of error + */ + public static String[] parseLine(String s) throws IOException { + if (s == null) { + throw new IllegalArgumentException("Null argument not allowed."); + } + // uh,jh: make sure that parseLine("").length == 0 + if (s.length() == 0) { + return EMPTY_STRING_ARRAY; + } + return (new CSVParser(new StringReader(s), CSVStrategy.DEFAULT_STRATEGY)).getLine(); + } + + /** + * Parses the CSV according to the given strategy + * and returns the next csv-value as string. + * + * @return next value in the input stream ('null' when end of file) + * @throws IOException on parse error or input read-failure + */ + public String nextValue() throws IOException { + Token tkn = nextToken(); + String ret = null; + switch (tkn.type) { + case TT_TOKEN: + case TT_EORECORD: + ret = tkn.content.toString(); + break; + case TT_EOF: + ret = null; + break; + case TT_INVALID: + default: + // error no token available (or error) + throw new IOException( + "(line " + getLineNumber() + ") invalid parse sequence"); + /// unreachable: break; + } + return ret; + } + + /** + * Parses from the current point in the stream til + * the end of the current line. + * + * @return array of values til end of line + * ('null' when end of file has been reached) + * @throws IOException on parse error or input read-failure + */ + public String[] getLine() throws IOException { + String[] ret = EMPTY_STRING_ARRAY; + record.clear(); + while (true) { + reusableToken.reset(); + nextToken(reusableToken); + switch (reusableToken.type) { + case TT_TOKEN: + record.add(reusableToken.content.toString()); + break; + case TT_EORECORD: + record.add(reusableToken.content.toString()); + break; + case TT_EOF: + if (reusableToken.isReady) { + record.add(reusableToken.content.toString()); + } else { + ret = null; + } + break; + case TT_INVALID: + default: + // error: throw IOException + throw new IOException("(line " + getLineNumber() + ") invalid parse sequence"); + // unreachable: break; + } + if (reusableToken.type != TT_TOKEN) { + break; + } + } + if (!record.isEmpty()) { + ret = (String[]) record.toArray(new String[record.size()]); + } + return ret; + } + + /** + * Returns the current line number in the input stream. + * + * ATTENTION: in case your csv has multiline-values the returned + * number does not correspond to the record-number + * + * @return current line number + */ + public int getLineNumber() { + return in.getLineNumber(); + } + + // ====================================================== + // the lexer(s) + // ====================================================== + /** + * Convenience method for nextToken(null). + */ + Token nextToken() throws IOException { + return nextToken(new Token()); + } + + /** + * Returns the next token. + * + * A token corresponds to a term, a record change or an + * end-of-file indicator. + * + * @param tkn an existing Token object to reuse. The caller is responsible to initialize the + * Token. + * @return the next token found + * @throws IOException on stream access error + */ + Token nextToken(Token tkn) throws IOException { + wsBuf.clear(); // resuse + + // get the last read char (required for empty line detection) + int lastChar = in.readAgain(); + + // read the next char and set eol + /* note: unfourtunately isEndOfLine may consumes a character silently. + * this has no effect outside of the method. so a simple workaround + * is to call 'readAgain' on the stream... + * uh: might using objects instead of base-types (jdk1.5 autoboxing!) + */ + int c = in.read(); + boolean eol = isEndOfLine(c); + c = in.readAgain(); + + // empty line detection: eol AND (last char was EOL or beginning) + while (strategy.getIgnoreEmptyLines() && eol && (lastChar == '\n' || lastChar == ExtendedBufferedReader.UNDEFINED) && !isEndOfFile(lastChar)) { + // go on char ahead ... + lastChar = c; + c = in.read(); + eol = isEndOfLine(c); + c = in.readAgain(); + // reached end of file without any content (empty line at the end) + if (isEndOfFile(c)) { + tkn.type = TT_EOF; + return tkn; + } + } + + // did we reached eof during the last iteration already ? TT_EOF + if (isEndOfFile(lastChar) || (lastChar != strategy.getDelimiter() && isEndOfFile(c))) { + tkn.type = TT_EOF; + return tkn; + } + + // important: make sure a new char gets consumed in each iteration + while (!tkn.isReady) { + // ignore whitespaces at beginning of a token + while (isWhitespace(c) && !eol) { + wsBuf.append((char) c); + c = in.read(); + eol = isEndOfLine(c); + } + // ok, start of token reached: comment, encapsulated, or token + if (c == strategy.getCommentStart()) { + // ignore everything till end of line and continue (incr linecount) + in.readLine(); + tkn = nextToken(tkn.reset()); + } else if (c == strategy.getDelimiter()) { + // empty token return TT_TOKEN("") + tkn.type = TT_TOKEN; + tkn.isReady = true; + } else if (eol) { + // empty token return TT_EORECORD("") + //noop: tkn.content.append(""); + tkn.type = TT_EORECORD; + tkn.isReady = true; + } else if (c == strategy.getEncapsulator()) { + // consume encapsulated token + encapsulatedTokenLexer(tkn, c); + } else if (isEndOfFile(c)) { + // end of file return TT_EOF() + //noop: tkn.content.append(""); + tkn.type = TT_EOF; + tkn.isReady = true; + } else { + // next token must be a simple token + // add removed blanks when not ignoring whitespace chars... + if (!strategy.getIgnoreLeadingWhitespaces()) { + tkn.content.append(wsBuf); + } + simpleTokenLexer(tkn, c); + } + } + return tkn; + } + + /** + * A simple token lexer + * + * Simple token are tokens which are not surrounded by encapsulators. + * A simple token might contain escaped delimiters (as \, or \;). The + * token is finished when one of the following conditions become true: + *

                                                                                  + *
                                                                                • end of line has been reached (TT_EORECORD)
                                                                                • + *
                                                                                • end of stream has been reached (TT_EOF)
                                                                                • + *
                                                                                • an unescaped delimiter has been reached (TT_TOKEN)
                                                                                • + *
                                                                                + * + * @param tkn the current token + * @param c the current character + * @return the filled token + * + * @throws IOException on stream access error + */ + private Token simpleTokenLexer(Token tkn, int c) throws IOException { + for (;;) { + if (isEndOfLine(c)) { + // end of record + tkn.type = TT_EORECORD; + tkn.isReady = true; + break; + } else if (isEndOfFile(c)) { + // end of file + tkn.type = TT_EOF; + tkn.isReady = true; + break; + } else if (c == strategy.getDelimiter()) { + // end of token + tkn.type = TT_TOKEN; + tkn.isReady = true; + break; + } else if (c == '\\' && strategy.getUnicodeEscapeInterpretation() && in.lookAhead() == 'u') { + // interpret unicode escaped chars (like \u0070 -> p) + tkn.content.append((char) unicodeEscapeLexer(c)); + } else if (c == strategy.getEscape()) { + tkn.content.append((char) readEscape(c)); + } else { + tkn.content.append((char) c); + } + + c = in.read(); + } + + if (strategy.getIgnoreTrailingWhitespaces()) { + tkn.content.trimTrailingWhitespace(); + } + + return tkn; + } + + /** + * An encapsulated token lexer + * + * Encapsulated tokens are surrounded by the given encapsulating-string. + * The encapsulator itself might be included in the token using a + * doubling syntax (as "", '') or using escaping (as in \", \'). + * Whitespaces before and after an encapsulated token are ignored. + * + * @param tkn the current token + * @param c the current character + * @return a valid token object + * @throws IOException on invalid state + */ + private Token encapsulatedTokenLexer(Token tkn, int c) throws IOException { + // save current line + int startLineNumber = getLineNumber(); + // ignore the given delimiter + // assert c == delimiter; + for (;;) { + c = in.read(); + + if (c == '\\' && strategy.getUnicodeEscapeInterpretation() && in.lookAhead() == 'u') { + tkn.content.append((char) unicodeEscapeLexer(c)); + } else if (c == strategy.getEscape()) { + tkn.content.append((char) readEscape(c)); + } else if (c == strategy.getEncapsulator()) { + if (in.lookAhead() == strategy.getEncapsulator()) { + // double or escaped encapsulator -> add single encapsulator to token + c = in.read(); + tkn.content.append((char) c); + } else { + // token finish mark (encapsulator) reached: ignore whitespace till delimiter + for (;;) { + c = in.read(); + if (c == strategy.getDelimiter()) { + tkn.type = TT_TOKEN; + tkn.isReady = true; + return tkn; + } else if (isEndOfFile(c)) { + tkn.type = TT_EOF; + tkn.isReady = true; + return tkn; + } else if (isEndOfLine(c)) { + // ok eo token reached + tkn.type = TT_EORECORD; + tkn.isReady = true; + return tkn; + } else if (!isWhitespace(c)) { + // error invalid char between token and next delimiter + throw new IOException( + "(line " + getLineNumber() + ") invalid char between encapsulated token end delimiter"); + } + } + } + } else if (isEndOfFile(c)) { + // error condition (end of file before end of token) + throw new IOException( + "(startline " + startLineNumber + ")" + "eof reached before encapsulated token finished"); + } else { + // consume character + tkn.content.append((char) c); + } + } + } + + /** + * Decodes Unicode escapes. + * + * Interpretation of "\\uXXXX" escape sequences + * where XXXX is a hex-number. + * @param c current char which is discarded because it's the "\\" of "\\uXXXX" + * @return the decoded character + * @throws IOException on wrong unicode escape sequence or read error + */ + protected int unicodeEscapeLexer(int c) throws IOException { + int ret = 0; + // ignore 'u' (assume c==\ now) and read 4 hex digits + c = in.read(); + code.clear(); + try { + for (int i = 0; i < 4; i++) { + c = in.read(); + if (isEndOfFile(c) || isEndOfLine(c)) { + throw new NumberFormatException("number too short"); + } + code.append((char) c); + } + ret = Integer.parseInt(code.toString(), 16); + } catch (NumberFormatException e) { + throw new IOException( + "(line " + getLineNumber() + ") Wrong unicode escape sequence found '" + code.toString() + "'" + e.toString()); + } + return ret; + } + + private int readEscape(int c) throws IOException { + // assume c is the escape char (normally a backslash) + c = in.read(); + int out; + switch (c) { + case 'r': + out = '\r'; + break; + case 'n': + out = '\n'; + break; + case 't': + out = '\t'; + break; + case 'b': + out = '\b'; + break; + case 'f': + out = '\f'; + break; + default: + out = c; + } + return out; + } + + // ====================================================== + // strategies + // ====================================================== + /** + * Obtain the specified CSV Strategy + * + * @return strategy currently being used + */ + public CSVStrategy getStrategy() { + return this.strategy; + } + + // ====================================================== + // Character class checker + // ====================================================== + /** + * @return true if the given char is a whitespace character + */ + private boolean isWhitespace(int c) { + return Character.isWhitespace((char) c) && (c != strategy.getDelimiter()); + } + + /** + * Greedy - accepts \n and \r\n + * This checker consumes silently the second control-character... + * + * @return true if the given character is a line-terminator + */ + private boolean isEndOfLine(int c) throws IOException { + // check if we have \r\n... + if (c == '\r') { + if (in.lookAhead() == '\n') { + // note: does not change c outside of this method !! + c = in.read(); + } + } + return (c == '\n'); + } + + /** + * @return true if the given character indicates end of file + */ + private boolean isEndOfFile(int c) { + return c == ExtendedBufferedReader.END_OF_STREAM; + } +} diff --git a/oms3/src/main/java/oms3/io/CSVPrinter.java b/oms3/src/main/java/oms3/io/CSVPrinter.java index 5d79c4158..01d1d5572 100644 --- a/oms3/src/main/java/oms3/io/CSVPrinter.java +++ b/oms3/src/main/java/oms3/io/CSVPrinter.java @@ -1,284 +1,284 @@ -/* - * $Id:$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.io; - -import java.io.OutputStream; -import java.io.PrintWriter; -import java.io.Writer; - -/** - * Print values as a comma separated list. - */ -class CSVPrinter { - - /** The place that the values get written. */ - protected PrintWriter out; - /** True if we just began a new line. */ - protected boolean newLine = true; - private CSVStrategy strategy = CSVStrategy.DEFAULT_STRATEGY; - - /** - * Create a printer that will print values to the given - * stream. Character to byte conversion is done using - * the default character encoding. Comments will be - * written using the default comment character '#'. - * - * @param out stream to which to print. - */ - public CSVPrinter(OutputStream out) { - this.out = new PrintWriter(out); - } - - /** - * Create a printer that will print values to the given - * stream. Comments will be - * written using the default comment character '#'. - * - * @param out stream to which to print. - */ - public CSVPrinter(Writer out) { - if (out instanceof PrintWriter) { - this.out = (PrintWriter) out; - } else { - this.out = new PrintWriter(out); - } - } - - // ====================================================== - // strategies - // ====================================================== - /** - * Sets the specified CSV Strategy - * - * @return current instance of CSVParser to allow chained method calls - */ - public CSVPrinter setStrategy(CSVStrategy strategy) { - this.strategy = strategy; - return this; - } - - /** - * Obtain the specified CSV Strategy - * - * @return strategy currently being used - */ - public CSVStrategy getStrategy() { - return this.strategy; - } - - // ====================================================== - // printing implementation - // ====================================================== - /** - * Print the string as the last value on the line. The value - * will be quoted if needed. - * - * @param value value to be outputted. - */ - public void println(String value) { - print(value); - out.println(); - out.flush(); - newLine = true; - } - - /** - * Output a blank line - */ - public void println() { - out.println(); - out.flush(); - newLine = true; - } - - /** - * Print a single line of comma separated values. - * The values will be quoted if needed. Quotes and - * newLine characters will be escaped. - * - * @param values values to be outputted. - */ - public void println(String[] values) { - for (int i = 0; i < values.length; i++) { - print(values[i]); - } - out.println(); - out.flush(); - newLine = true; - } - - /** - * Print several lines of comma separated values. - * The values will be quoted if needed. Quotes and - * newLine characters will be escaped. - * - * @param values values to be outputted. - */ - public void println(String[][] values) { - for (int i = 0; i < values.length; i++) { - println(values[i]); - } - if (values.length == 0) { - out.println(); - } - out.flush(); - newLine = true; - } - - /** - * Put a comment among the comma separated values. - * Comments will always begin on a new line and occupy a - * least one full line. The character specified to star - * comments and a space will be inserted at the beginning of - * each new line in the comment. - * - * @param comment the comment to output - */ - public void printlnComment(String comment) { - if (this.strategy.isCommentingDisabled()) { - return; - } - if (!newLine) { - out.println(); - } - out.print(this.strategy.getCommentStart()); - out.print(' '); - for (int i = 0; i < comment.length(); i++) { - char c = comment.charAt(i); - switch (c) { - case '\r': - if (i + 1 < comment.length() && comment.charAt(i + 1) == '\n') { - i++; - } - // break intentionally excluded. - case '\n': - out.println(); - out.print(this.strategy.getCommentStart()); - out.print(' '); - break; - default: - out.print(c); - break; - } - } - out.println(); - out.flush(); - newLine = true; - } - - /** - * Print the string as the next value on the line. The value - * will be quoted if needed. - * - * @param value value to be outputted. - */ - public void print(String value) { - boolean quote = false; - if (value.length() > 0) { - char c = value.charAt(0); - if (newLine && (c < '0' || (c > '9' && c < 'A') || (c > 'Z' && c < 'a') || (c > 'z'))) { - quote = true; - } - if (c == ' ' || c == '\f' || c == '\t') { - quote = true; - } - for (int i = 0; i < value.length(); i++) { - c = value.charAt(i); - if (c == '"' || c == this.strategy.getDelimiter() || c == '\n' || c == '\r') { - quote = true; - c = value.charAt(value.length() - 1); - break; - } - } - if (c == ' ' || c == '\f' || c == '\t') { - quote = true; - } - } else if (newLine) { - // always quote an empty token that is the first - // on the line, as it may be the only thing on the - // line. If it were not quoted in that case, - // an empty line has no tokens. - quote = true; - } - if (newLine) { - newLine = false; - } else { - out.print(this.strategy.getDelimiter()); - } - if (quote) { - out.print(escapeAndQuote(value)); - } else { - out.print(value); - } - out.flush(); - } - - /** - * Enclose the value in quotes and escape the quote - * and comma characters that are inside. - * - * @param value needs to be escaped and quoted - * @return the value, escaped and quoted - */ - private String escapeAndQuote(String value) { - // the initial count is for the preceding and trailing quotes - int count = 2; - for (int i = 0; i < value.length(); i++) { - switch (value.charAt(i)) { - case '\"': - case '\n': - case '\r': - case '\\': - count++; - break; - default: - break; - } - } - StringBuffer sb = new StringBuffer(value.length() + count); - sb.append(strategy.getEncapsulator()); - for (int i = 0; i < value.length(); i++) { - char c = value.charAt(i); - - if (c == strategy.getEncapsulator()) { - sb.append('\\').append(c); - continue; - } - switch (c) { - case '\n': - sb.append("\\n"); - break; - case '\r': - sb.append("\\r"); - break; - case '\\': - sb.append("\\\\"); - break; - default: - sb.append(c); - } - } - sb.append(strategy.getEncapsulator()); - return sb.toString(); - } -} +/* + * $Id:$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.io; + +import java.io.OutputStream; +import java.io.PrintWriter; +import java.io.Writer; + +/** + * Print values as a comma separated list. + */ +class CSVPrinter { + + /** The place that the values get written. */ + protected PrintWriter out; + /** True if we just began a new line. */ + protected boolean newLine = true; + private CSVStrategy strategy = CSVStrategy.DEFAULT_STRATEGY; + + /** + * Create a printer that will print values to the given + * stream. Character to byte conversion is done using + * the default character encoding. Comments will be + * written using the default comment character '#'. + * + * @param out stream to which to print. + */ + public CSVPrinter(OutputStream out) { + this.out = new PrintWriter(out); + } + + /** + * Create a printer that will print values to the given + * stream. Comments will be + * written using the default comment character '#'. + * + * @param out stream to which to print. + */ + public CSVPrinter(Writer out) { + if (out instanceof PrintWriter) { + this.out = (PrintWriter) out; + } else { + this.out = new PrintWriter(out); + } + } + + // ====================================================== + // strategies + // ====================================================== + /** + * Sets the specified CSV Strategy + * + * @return current instance of CSVParser to allow chained method calls + */ + public CSVPrinter setStrategy(CSVStrategy strategy) { + this.strategy = strategy; + return this; + } + + /** + * Obtain the specified CSV Strategy + * + * @return strategy currently being used + */ + public CSVStrategy getStrategy() { + return this.strategy; + } + + // ====================================================== + // printing implementation + // ====================================================== + /** + * Print the string as the last value on the line. The value + * will be quoted if needed. + * + * @param value value to be outputted. + */ + public void println(String value) { + print(value); + out.println(); + out.flush(); + newLine = true; + } + + /** + * Output a blank line + */ + public void println() { + out.println(); + out.flush(); + newLine = true; + } + + /** + * Print a single line of comma separated values. + * The values will be quoted if needed. Quotes and + * newLine characters will be escaped. + * + * @param values values to be outputted. + */ + public void println(String[] values) { + for (int i = 0; i < values.length; i++) { + print(values[i]); + } + out.println(); + out.flush(); + newLine = true; + } + + /** + * Print several lines of comma separated values. + * The values will be quoted if needed. Quotes and + * newLine characters will be escaped. + * + * @param values values to be outputted. + */ + public void println(String[][] values) { + for (int i = 0; i < values.length; i++) { + println(values[i]); + } + if (values.length == 0) { + out.println(); + } + out.flush(); + newLine = true; + } + + /** + * Put a comment among the comma separated values. + * Comments will always begin on a new line and occupy a + * least one full line. The character specified to star + * comments and a space will be inserted at the beginning of + * each new line in the comment. + * + * @param comment the comment to output + */ + public void printlnComment(String comment) { + if (this.strategy.isCommentingDisabled()) { + return; + } + if (!newLine) { + out.println(); + } + out.print(this.strategy.getCommentStart()); + out.print(' '); + for (int i = 0; i < comment.length(); i++) { + char c = comment.charAt(i); + switch (c) { + case '\r': + if (i + 1 < comment.length() && comment.charAt(i + 1) == '\n') { + i++; + } + // break intentionally excluded. + case '\n': + out.println(); + out.print(this.strategy.getCommentStart()); + out.print(' '); + break; + default: + out.print(c); + break; + } + } + out.println(); + out.flush(); + newLine = true; + } + + /** + * Print the string as the next value on the line. The value + * will be quoted if needed. + * + * @param value value to be outputted. + */ + public void print(String value) { + boolean quote = false; + if (value.length() > 0) { + char c = value.charAt(0); + if (newLine && (c < '0' || (c > '9' && c < 'A') || (c > 'Z' && c < 'a') || (c > 'z'))) { + quote = true; + } + if (c == ' ' || c == '\f' || c == '\t') { + quote = true; + } + for (int i = 0; i < value.length(); i++) { + c = value.charAt(i); + if (c == '"' || c == this.strategy.getDelimiter() || c == '\n' || c == '\r') { + quote = true; + c = value.charAt(value.length() - 1); + break; + } + } + if (c == ' ' || c == '\f' || c == '\t') { + quote = true; + } + } else if (newLine) { + // always quote an empty token that is the first + // on the line, as it may be the only thing on the + // line. If it were not quoted in that case, + // an empty line has no tokens. + quote = true; + } + if (newLine) { + newLine = false; + } else { + out.print(this.strategy.getDelimiter()); + } + if (quote) { + out.print(escapeAndQuote(value)); + } else { + out.print(value); + } + out.flush(); + } + + /** + * Enclose the value in quotes and escape the quote + * and comma characters that are inside. + * + * @param value needs to be escaped and quoted + * @return the value, escaped and quoted + */ + private String escapeAndQuote(String value) { + // the initial count is for the preceding and trailing quotes + int count = 2; + for (int i = 0; i < value.length(); i++) { + switch (value.charAt(i)) { + case '\"': + case '\n': + case '\r': + case '\\': + count++; + break; + default: + break; + } + } + StringBuffer sb = new StringBuffer(value.length() + count); + sb.append(strategy.getEncapsulator()); + for (int i = 0; i < value.length(); i++) { + char c = value.charAt(i); + + if (c == strategy.getEncapsulator()) { + sb.append('\\').append(c); + continue; + } + switch (c) { + case '\n': + sb.append("\\n"); + break; + case '\r': + sb.append("\\r"); + break; + case '\\': + sb.append("\\\\"); + break; + default: + sb.append(c); + } + } + sb.append(strategy.getEncapsulator()); + return sb.toString(); + } +} diff --git a/oms3/src/main/java/oms3/io/CSVStrategy.java b/oms3/src/main/java/oms3/io/CSVStrategy.java index 1e7dd874f..8ba11f320 100644 --- a/oms3/src/main/java/oms3/io/CSVStrategy.java +++ b/oms3/src/main/java/oms3/io/CSVStrategy.java @@ -1,166 +1,166 @@ -/* - * $Id:$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.io; - -import java.io.Serializable; - -/** - * CSVStrategy - * - * Represents the strategy for a CSV. - */ -class CSVStrategy implements Cloneable, Serializable { - - private char delimiter; - private char encapsulator; - private char commentStart; - private char escape; - private boolean ignoreLeadingWhitespaces; - private boolean ignoreTrailingWhitespaces; - private boolean interpretUnicodeEscapes; - private boolean ignoreEmptyLines; - - // -2 is used to signal disabled, because it won't be confused with - // an EOF signal (-1), and because \ufffe in UTF-16 would be - // encoded as two chars (using surrogates) and thus there should never - // be a collision with a real text char. - public static char COMMENTS_DISABLED = (char) -2; - public static char ESCAPE_DISABLED = (char) -2; - public static CSVStrategy DEFAULT_STRATEGY = new CSVStrategy(',', '"', COMMENTS_DISABLED, ESCAPE_DISABLED, true, - true, false, true); - public static CSVStrategy EXCEL_STRATEGY = new CSVStrategy(',', '"', COMMENTS_DISABLED, ESCAPE_DISABLED, false, - false, false, false); - public static CSVStrategy TDF_STRATEGY = new CSVStrategy('\t', '"', COMMENTS_DISABLED, ESCAPE_DISABLED, true, - true, false, true); - - public static CSVStrategy OMS_STRATEGY = new CSVStrategy(',', '"', COMMENTS_DISABLED, ESCAPE_DISABLED, true, - true, false, true); - - /** - * Customized CSV strategy setter. - * - * @param delimiter a Char used for value separation - * @param encapsulator a Char used as value encapsulation marker - * @param commentStart a Char used for comment identification - * @param ignoreLeadingWhitespace TRUE when leading whitespaces should be - * ignored - * @param interpretUnicodeEscapes TRUE when unicode escapes should be - * interpreted - * @param ignoreEmptyLines TRUE when the parser should skip emtpy lines - */ - CSVStrategy( - char delimiter, - char encapsulator, - char commentStart, - char escape, - boolean ignoreLeadingWhitespace, - boolean ignoreTrailingWhitespace, - boolean interpretUnicodeEscapes, - boolean ignoreEmptyLines) { - setDelimiter(delimiter); - setEncapsulator(encapsulator); - setCommentStart(commentStart); - setEscape(escape); - setIgnoreLeadingWhitespaces(ignoreLeadingWhitespace); - setIgnoreTrailingWhitespaces(ignoreTrailingWhitespace); - setUnicodeEscapeInterpretation(interpretUnicodeEscapes); - setIgnoreEmptyLines(ignoreEmptyLines); - } - - public void setDelimiter(char delimiter) { - this.delimiter = delimiter; - } - - public char getDelimiter() { - return this.delimiter; - } - - public void setEncapsulator(char encapsulator) { - this.encapsulator = encapsulator; - } - - public char getEncapsulator() { - return this.encapsulator; - } - - public void setCommentStart(char commentStart) { - this.commentStart = commentStart; - } - - public char getCommentStart() { - return this.commentStart; - } - - public boolean isCommentingDisabled() { - return this.commentStart == COMMENTS_DISABLED; - } - - public void setEscape(char escape) { - this.escape = escape; - } - - public char getEscape() { - return this.escape; - } - - public void setIgnoreLeadingWhitespaces(boolean ignoreLeadingWhitespaces) { - this.ignoreLeadingWhitespaces = ignoreLeadingWhitespaces; - } - - public boolean getIgnoreLeadingWhitespaces() { - return this.ignoreLeadingWhitespaces; - } - - public void setIgnoreTrailingWhitespaces(boolean ignoreTrailingWhitespaces) { - this.ignoreTrailingWhitespaces = ignoreTrailingWhitespaces; - } - - public boolean getIgnoreTrailingWhitespaces() { - return this.ignoreTrailingWhitespaces; - } - - public void setUnicodeEscapeInterpretation(boolean interpretUnicodeEscapes) { - this.interpretUnicodeEscapes = interpretUnicodeEscapes; - } - - public boolean getUnicodeEscapeInterpretation() { - return this.interpretUnicodeEscapes; - } - - public void setIgnoreEmptyLines(boolean ignoreEmptyLines) { - this.ignoreEmptyLines = ignoreEmptyLines; - } - - public boolean getIgnoreEmptyLines() { - return this.ignoreEmptyLines; - } - - @Override - public Object clone() { - try { - return super.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); // impossible - } - } -} +/* + * $Id:$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.io; + +import java.io.Serializable; + +/** + * CSVStrategy + * + * Represents the strategy for a CSV. + */ +class CSVStrategy implements Cloneable, Serializable { + + private char delimiter; + private char encapsulator; + private char commentStart; + private char escape; + private boolean ignoreLeadingWhitespaces; + private boolean ignoreTrailingWhitespaces; + private boolean interpretUnicodeEscapes; + private boolean ignoreEmptyLines; + + // -2 is used to signal disabled, because it won't be confused with + // an EOF signal (-1), and because \ufffe in UTF-16 would be + // encoded as two chars (using surrogates) and thus there should never + // be a collision with a real text char. + public static char COMMENTS_DISABLED = (char) -2; + public static char ESCAPE_DISABLED = (char) -2; + public static CSVStrategy DEFAULT_STRATEGY = new CSVStrategy(',', '"', COMMENTS_DISABLED, ESCAPE_DISABLED, true, + true, false, true); + public static CSVStrategy EXCEL_STRATEGY = new CSVStrategy(',', '"', COMMENTS_DISABLED, ESCAPE_DISABLED, false, + false, false, false); + public static CSVStrategy TDF_STRATEGY = new CSVStrategy('\t', '"', COMMENTS_DISABLED, ESCAPE_DISABLED, true, + true, false, true); + + public static CSVStrategy OMS_STRATEGY = new CSVStrategy(',', '"', COMMENTS_DISABLED, ESCAPE_DISABLED, true, + true, false, true); + + /** + * Customized CSV strategy setter. + * + * @param delimiter a Char used for value separation + * @param encapsulator a Char used as value encapsulation marker + * @param commentStart a Char used for comment identification + * @param ignoreLeadingWhitespace TRUE when leading whitespaces should be + * ignored + * @param interpretUnicodeEscapes TRUE when unicode escapes should be + * interpreted + * @param ignoreEmptyLines TRUE when the parser should skip emtpy lines + */ + CSVStrategy( + char delimiter, + char encapsulator, + char commentStart, + char escape, + boolean ignoreLeadingWhitespace, + boolean ignoreTrailingWhitespace, + boolean interpretUnicodeEscapes, + boolean ignoreEmptyLines) { + setDelimiter(delimiter); + setEncapsulator(encapsulator); + setCommentStart(commentStart); + setEscape(escape); + setIgnoreLeadingWhitespaces(ignoreLeadingWhitespace); + setIgnoreTrailingWhitespaces(ignoreTrailingWhitespace); + setUnicodeEscapeInterpretation(interpretUnicodeEscapes); + setIgnoreEmptyLines(ignoreEmptyLines); + } + + public void setDelimiter(char delimiter) { + this.delimiter = delimiter; + } + + public char getDelimiter() { + return this.delimiter; + } + + public void setEncapsulator(char encapsulator) { + this.encapsulator = encapsulator; + } + + public char getEncapsulator() { + return this.encapsulator; + } + + public void setCommentStart(char commentStart) { + this.commentStart = commentStart; + } + + public char getCommentStart() { + return this.commentStart; + } + + public boolean isCommentingDisabled() { + return this.commentStart == COMMENTS_DISABLED; + } + + public void setEscape(char escape) { + this.escape = escape; + } + + public char getEscape() { + return this.escape; + } + + public void setIgnoreLeadingWhitespaces(boolean ignoreLeadingWhitespaces) { + this.ignoreLeadingWhitespaces = ignoreLeadingWhitespaces; + } + + public boolean getIgnoreLeadingWhitespaces() { + return this.ignoreLeadingWhitespaces; + } + + public void setIgnoreTrailingWhitespaces(boolean ignoreTrailingWhitespaces) { + this.ignoreTrailingWhitespaces = ignoreTrailingWhitespaces; + } + + public boolean getIgnoreTrailingWhitespaces() { + return this.ignoreTrailingWhitespaces; + } + + public void setUnicodeEscapeInterpretation(boolean interpretUnicodeEscapes) { + this.interpretUnicodeEscapes = interpretUnicodeEscapes; + } + + public boolean getUnicodeEscapeInterpretation() { + return this.interpretUnicodeEscapes; + } + + public void setIgnoreEmptyLines(boolean ignoreEmptyLines) { + this.ignoreEmptyLines = ignoreEmptyLines; + } + + public boolean getIgnoreEmptyLines() { + return this.ignoreEmptyLines; + } + + @Override + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); // impossible + } + } +} diff --git a/oms3/src/main/java/oms3/io/CharBuffer.java b/oms3/src/main/java/oms3/io/CharBuffer.java index f37f967b2..712f1b2e3 100644 --- a/oms3/src/main/java/oms3/io/CharBuffer.java +++ b/oms3/src/main/java/oms3/io/CharBuffer.java @@ -1,228 +1,228 @@ -/* - * $Id:$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.io; - -/** - * A simple StringBuffer replacement that aims to - * reduce copying as much as possible. The buffer - * grows as necessary. - * This class is not thread safe. - * - * @author Ortwin Gl�ck - */ -class CharBuffer { - - private char[] c; - /** - * Actually used number of characters in the array. - * It is also the index at which - * a new character will be inserted into c. - */ - private int length; - - /** - * Creates a new CharBuffer with an initial capacity of 32 characters. - */ - public CharBuffer() { - this(32); - } - - /** - * Creates a new CharBuffer with an initial capacity - * of length characters. - */ - public CharBuffer(final int length) { - if (length == 0) { - throw new IllegalArgumentException("Can't create an empty CharBuffer"); - } - this.c = new char[length]; - } - - /** - * Empties the buffer. The capacity still remains the same, so no memory is freed. - */ - public void clear() { - length = 0; - } - - /** - * Returns the number of characters in the buffer. - * @return the number of characters - */ - public int length() { - return length; - } - - /** - * Returns the current capacity of the buffer. - * @return the maximum number of characters that can be stored in this buffer without - * resizing it. - */ - public int capacity() { - return c.length; - } - - /** - * Appends the contents of cb to the end of this CharBuffer. - * @param cb the CharBuffer to append or null - */ - public void append(final CharBuffer cb) { - if (cb == null) { - return; - } - provideCapacity(length + cb.length); - System.arraycopy(cb.c, 0, c, length, cb.length); - length += cb.length; - } - - /** - * Appends s to the end of this CharBuffer. - * This method involves copying the new data once! - * @param s the String to append or null - */ - public void append(final String s) { - if (s == null) { - return; - } - append(s.toCharArray()); - } - - /** - * Appends sb to the end of this CharBuffer. - * This method involves copying the new data once! - * @param sb the StringBuffer to append or null - */ - public void append(final StringBuffer sb) { - if (sb == null) { - return; - } - provideCapacity(length + sb.length()); - sb.getChars(0, sb.length(), c, length); - length += sb.length(); - } - - /** - * Appends data to the end of this CharBuffer. - * This method involves copying the new data once! - * @param data the char[] to append or null - */ - public void append(final char[] data) { - if (data == null) { - return; - } - provideCapacity(length + data.length); - System.arraycopy(data, 0, c, length, data.length); - length += data.length; - } - - /** - * Appends a single character to the end of this CharBuffer. - * This method involves copying the new data once! - * @param data the char to append - */ - public void append(final char data) { - provideCapacity(length + 1); - c[length] = data; - length++; - } - - /** - * Shrinks the capacity of the buffer to the current length if necessary. - * This method involves copying the data once! - */ - public void shrink() { - if (c.length == length) { - return; - } - char[] newc = new char[length]; - System.arraycopy(c, 0, newc, 0, length); - c = newc; - } - - /** - * Removes trailing whitespace. - */ - public void trimTrailingWhitespace() { - while (length > 0 && Character.isWhitespace(c[length - 1])) { - length--; - } - } - - /** - * Returns the contents of the buffer as a char[]. The returned array may - * be the internal array of the buffer, so the caller must take care when - * modifying it. - * This method allows to avoid copying if the caller knows the exact capacity - * before. - * @return - */ - public char[] getCharacters() { - if (c.length == length) { - return c; - } - char[] chars = new char[length]; - System.arraycopy(c, 0, chars, 0, length); - return chars; - } - - /** - * Returns the character at the specified position. - */ - public char charAt(int pos) { - return c[pos]; - } - - /** - * Converts the contents of the buffer into a StringBuffer. - * This method involves copying the new data once! - * @return - */ - public StringBuffer toStringBuffer() { - StringBuffer sb = new StringBuffer(length); - sb.append(c, 0, length); - return sb; - } - - /** - * Converts the contents of the buffer into a StringBuffer. - * This method involves copying the new data once! - * @return - */ - public String toString() { - return new String(c, 0, length); - } - - /** - * Copies the data into a new array of at least capacity size. - * @param capacity - */ - public void provideCapacity(final int capacity) { - if (c.length >= capacity) { - return; - } - int newcapacity = ((capacity * 3) >> 1) + 1; - char[] newc = new char[newcapacity]; - System.arraycopy(c, 0, newc, 0, length); - c = newc; - } -} +/* + * $Id:$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.io; + +/** + * A simple StringBuffer replacement that aims to + * reduce copying as much as possible. The buffer + * grows as necessary. + * This class is not thread safe. + * + * @author Ortwin Gl�ck + */ +class CharBuffer { + + private char[] c; + /** + * Actually used number of characters in the array. + * It is also the index at which + * a new character will be inserted into c. + */ + private int length; + + /** + * Creates a new CharBuffer with an initial capacity of 32 characters. + */ + public CharBuffer() { + this(32); + } + + /** + * Creates a new CharBuffer with an initial capacity + * of length characters. + */ + public CharBuffer(final int length) { + if (length == 0) { + throw new IllegalArgumentException("Can't create an empty CharBuffer"); + } + this.c = new char[length]; + } + + /** + * Empties the buffer. The capacity still remains the same, so no memory is freed. + */ + public void clear() { + length = 0; + } + + /** + * Returns the number of characters in the buffer. + * @return the number of characters + */ + public int length() { + return length; + } + + /** + * Returns the current capacity of the buffer. + * @return the maximum number of characters that can be stored in this buffer without + * resizing it. + */ + public int capacity() { + return c.length; + } + + /** + * Appends the contents of cb to the end of this CharBuffer. + * @param cb the CharBuffer to append or null + */ + public void append(final CharBuffer cb) { + if (cb == null) { + return; + } + provideCapacity(length + cb.length); + System.arraycopy(cb.c, 0, c, length, cb.length); + length += cb.length; + } + + /** + * Appends s to the end of this CharBuffer. + * This method involves copying the new data once! + * @param s the String to append or null + */ + public void append(final String s) { + if (s == null) { + return; + } + append(s.toCharArray()); + } + + /** + * Appends sb to the end of this CharBuffer. + * This method involves copying the new data once! + * @param sb the StringBuffer to append or null + */ + public void append(final StringBuffer sb) { + if (sb == null) { + return; + } + provideCapacity(length + sb.length()); + sb.getChars(0, sb.length(), c, length); + length += sb.length(); + } + + /** + * Appends data to the end of this CharBuffer. + * This method involves copying the new data once! + * @param data the char[] to append or null + */ + public void append(final char[] data) { + if (data == null) { + return; + } + provideCapacity(length + data.length); + System.arraycopy(data, 0, c, length, data.length); + length += data.length; + } + + /** + * Appends a single character to the end of this CharBuffer. + * This method involves copying the new data once! + * @param data the char to append + */ + public void append(final char data) { + provideCapacity(length + 1); + c[length] = data; + length++; + } + + /** + * Shrinks the capacity of the buffer to the current length if necessary. + * This method involves copying the data once! + */ + public void shrink() { + if (c.length == length) { + return; + } + char[] newc = new char[length]; + System.arraycopy(c, 0, newc, 0, length); + c = newc; + } + + /** + * Removes trailing whitespace. + */ + public void trimTrailingWhitespace() { + while (length > 0 && Character.isWhitespace(c[length - 1])) { + length--; + } + } + + /** + * Returns the contents of the buffer as a char[]. The returned array may + * be the internal array of the buffer, so the caller must take care when + * modifying it. + * This method allows to avoid copying if the caller knows the exact capacity + * before. + * @return + */ + public char[] getCharacters() { + if (c.length == length) { + return c; + } + char[] chars = new char[length]; + System.arraycopy(c, 0, chars, 0, length); + return chars; + } + + /** + * Returns the character at the specified position. + */ + public char charAt(int pos) { + return c[pos]; + } + + /** + * Converts the contents of the buffer into a StringBuffer. + * This method involves copying the new data once! + * @return + */ + public StringBuffer toStringBuffer() { + StringBuffer sb = new StringBuffer(length); + sb.append(c, 0, length); + return sb; + } + + /** + * Converts the contents of the buffer into a StringBuffer. + * This method involves copying the new data once! + * @return + */ + public String toString() { + return new String(c, 0, length); + } + + /** + * Copies the data into a new array of at least capacity size. + * @param capacity + */ + public void provideCapacity(final int capacity) { + if (c.length >= capacity) { + return; + } + int newcapacity = ((capacity * 3) >> 1) + 1; + char[] newc = new char[newcapacity]; + System.arraycopy(c, 0, newc, 0, length); + c = newc; + } +} diff --git a/oms3/src/main/java/oms3/io/DataIO.java b/oms3/src/main/java/oms3/io/DataIO.java index 107cd921b..048c1d617 100644 --- a/oms3/src/main/java/oms3/io/DataIO.java +++ b/oms3/src/main/java/oms3/io/DataIO.java @@ -1,1870 +1,1870 @@ -/* - * $Id:$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.io; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.io.Reader; -import java.io.StringReader; -import java.lang.reflect.Array; -import java.net.URL; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.StringTokenizer; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.Arrays; -import javax.swing.event.TableModelListener; -import javax.swing.table.AbstractTableModel; -import javax.swing.table.TableModel; -import oms3.Conversions; - -/** Data Input/Output management. - * - * @author Olaf David - */ -public class DataIO { - - private static final String P = "@"; - public static final String TABLE = P + "T"; - public static final String HEADER = P + "H"; - public static final String PROPERTIES = P + "S"; - public static final String PROPERTY = P + "P"; - public static final String TABLE1 = P + "Table"; - public static final String HEADER1 = P + "Header"; - public static final String PROPERTIES1 = P + "Properties"; - public static final String PROPERTY1 = P + "Property"; - // - // - public static final String CSPROPERTIES_EXT = "csp"; - public static final String CSTABLE_EXT = "cst"; - // - private static final String ROOT_ANN = "___root___"; - private static final String COMMENT = "#"; - private static final Map NOINFO = Collections.unmodifiableMap(new HashMap()); - private static final Pattern varPattern = Pattern.compile("\\$\\{([^$}]+)\\}"); - /* some static helpers, might have to go somewhere else */ - private static final String ISO8601 = "yyyy-MM-dd'T'hh:mm:ss"; - // - // all meta data keys - public static final String KEY_CONVERTED_FROM = "converted_from"; - public static final String DATE_FORMAT = "date_format"; - public static final String DATE_START = "date_start"; - public static final String DATE_END = "date_end"; - public static final String KEY_CREATED_AT = "created_at"; - public static final String KEY_CREATED_BY = "created_by"; - public static final String KEY_UNIT = "unit"; - public static final String KEY_FORMAT = "format"; - public static final String KEY_TYPE = "type"; - public static final String KEY_NAME = "name"; - public static final String KEY_MISSING_VAL = "missing_value"; - public static final String KEY_FC_START = "forecast_start"; - public static final String KEY_FC_DAYS = "forecast_days"; - public static final String KEY_HIST_YEAR = "historical_year"; - public static final String KEY_DIGEST = "digest"; - public static final String VAL_DATE = "Date"; - //TimeStep Enumerations - public static final int DAILY = 0; - public static final int MEAN_MONTHLY = 1; - public static final int MONTHLY_MEAN = 2; - public static final int ANNUAL_MEAN = 3; - public static final int PERIOD_MEAN = 4; - public static final int PERIOD_MEDIAN = 5; - public static final int PERIOD_STANDARD_DEVIATION = 6; - public static final int PERIOD_MIN = 7; - public static final int PERIOD_MAX = 8; - - public static double[] getColumnDoubleValuesInterval(Date start, Date end, CSTable t, String columnName, int timeStep) { - - int col = columnIndex(t, columnName); - if (col == -1) { - throw new IllegalArgumentException("No such column: " + columnName); - } - - DateFormat fmt = lookupDateFormat(t, 1); - - boolean useOrigDaily = false; - switch (timeStep) { - case DAILY: - if (useOrigDaily) { - List l = new ArrayList(); - for (String[] row : t.rows()) { - try { - Date d = fmt.parse(row[1]); - if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { - l.add(new Double(row[col])); - } - } catch (ParseException ex) { - throw new RuntimeException(ex); - } - } - double[] arr = new double[l.size()]; - for (int i = 0; i < arr.length; i++) { - arr[i] = l.get(i); - } - return arr; - } - - case ANNUAL_MEAN: - case MONTHLY_MEAN: - case PERIOD_MEAN: { - - - int previousMonth = -1; - int previousYear = -1; - int previousDay = -1; - boolean previousValid = false; - boolean lastRow = false; - - boolean useYear = (timeStep == DAILY) || (timeStep == MONTHLY_MEAN) || (timeStep == ANNUAL_MEAN); - boolean useMonth = (timeStep == DAILY) || (timeStep == MONTHLY_MEAN); - boolean useDay = (timeStep == DAILY); - - List l = new ArrayList(); - double sum = 0; - int count = 0; - - - for (String[] row : t.rows()) { - try { - Date d = fmt.parse(row[1]); - if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { - int month = d.getMonth(); - int year = d.getYear(); - int day = d.getDay(); - double data = Double.parseDouble(row[col]); - - - - boolean newEntry = (previousValid && ((useYear && (year != previousYear)) - || (useMonth && (month != previousMonth)) - || (useDay && (day != previousDay)))); - - - - if (newEntry) { - l.add(sum / count); - sum = 0; - count = 0; - } - - sum += data; - count++; - - previousValid = true; - previousDay = day; - previousMonth = month; - previousYear = year; - } - } catch (ParseException ex) { - throw new RuntimeException(ex); - } - - } - l.add(sum / count); // add the final entry which wasn't yet added - // since it never hit a newEntry. - - // Copy the List to the output array. - double[] arr = new double[l.size()]; - for (int i = 0; i < arr.length; i++) { - arr[i] = l.get(i); - } - - return arr; - // break; - } - - case MEAN_MONTHLY: { - double[] arr = new double[12]; // 1 per month - - int[] count = new int[12]; - - for (int i = 0; i < 12; i++) { - arr[i] = 0; // initialize data to 0 - count[i] = 0; - } - - - for (String[] row : t.rows()) { - try { - Date d = fmt.parse(row[1]); - if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { - int month = d.getMonth(); - double data = Double.parseDouble(row[col]); - arr[month] = arr[month] + data; - count[month] = count[month] + 1; - if (month > 11) { - throw new RuntimeException("Month > 11 = " + month); - } - } - } catch (ParseException ex) { - throw new RuntimeException(ex); - } - } - - for (int i = 0; i < 12; i++) { - arr[i] = arr[i] / count[i]; - } - - return arr; - // break; - } - - case PERIOD_MIN: - case PERIOD_MAX: { - double min = -1; - double max = -1; - boolean previousValid = false; - - - for (String[] row : t.rows()) { - try { - Date d = fmt.parse(row[1]); - if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { - double data = Double.parseDouble(row[col]); - if (!previousValid) { - min = data; - max = data; - } else if ((timeStep == PERIOD_MIN) && (data < min)) { - min = data; - } else if ((timeStep == PERIOD_MAX) && (data > max)) { - max = data; - } - previousValid = true; - } - } catch (ParseException ex) { - throw new RuntimeException(ex); - } - } - double[] arr = new double[1]; - arr[0] = (timeStep == PERIOD_MIN) ? min : max; - return arr; - // break; - } - - case PERIOD_MEDIAN: { - // Put entire table into ArrayList - List l = new ArrayList(); - for (String[] row : t.rows()) { - try { - Date d = fmt.parse(row[1]); - if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { - l.add(new Double(row[col])); - } - } catch (ParseException ex) { - throw new RuntimeException(ex); - } - } - - //Copy to array of double - int lSize = l.size(); - if (lSize == 0) { - throw new RuntimeException("No data in file matched the specified period " + start + " to " + end); - } - double[] arr = new double[lSize]; - for (int i = 0; i < arr.length; i++) { - arr[i] = l.get(i); - } - - l.clear(); // Don't need l anymore so clear it. - - // Sort the Array - Arrays.sort(arr); - double median; - - // Pull out the Median - if (lSize % 2 == 1) { - median = arr[(lSize + 1) / 2 - 1]; - } else { - double lower = arr[(lSize / 2) - 1]; - double upper = arr[lSize / 2]; - median = (lower + upper) / 2.0; - } - - // return as an array with 1 entry. - double[] arr2 = new double[1]; - arr2[0] = median; - return arr2; - - //break; - } - - case PERIOD_STANDARD_DEVIATION: { - // kmolson TODO- is it better to read the file twice, or read - // it once and store the data for the 2nd pass while - // computing the mean? - - // Read file to get mean. - double sum = 0; - double sq_sum = 0; - double data = 0; - int count = 0; - for (String[] row : t.rows()) { - try { - Date d = fmt.parse(row[1]); - if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { - data = Double.parseDouble(row[col]); - sum += data; - sq_sum += (data * data); - count++; - } - - } catch (ParseException ex) { - throw new RuntimeException(ex); - } - } - - double mean = sum / count; - double variance = sq_sum / count - (mean * mean); - double standardDeviation = Math.sqrt(variance); - - double[] arr = new double[1]; - arr[0] = standardDeviation; - return arr; - } - - default: { - throw new IllegalArgumentException("timeStep " + timeStep + "not supported."); - } - } - } - - public static SimpleDateFormat lookupDateFormat(CSTable table, int col) { - if (col < 0 || col > table.getColumnCount()) { - throw new IllegalArgumentException("invalid column: " + col); - } - String format = table.getColumnInfo(col).get(KEY_FORMAT); - if (format == null) { - format = table.getInfo().get(DATE_FORMAT); - } - if (format == null) { - format = Conversions.ISO().toPattern(); - } - return new SimpleDateFormat(format); - } - - public static int findRowByDate(Date date, int dateColumn, CSTable table) { - String type = table.getColumnInfo(dateColumn).get(KEY_TYPE); - if ((type == null) || !type.equalsIgnoreCase(VAL_DATE)) { - throw new IllegalArgumentException(); - } - - DateFormat fmt = lookupDateFormat(table, dateColumn); - - int rowNo = 0; - for (String[] row : table.rows()) { - try { - Date d = fmt.parse(row[dateColumn]); - if (d.equals(date)) { - return rowNo; - } - rowNo++; - } catch (ParseException ex) { - throw new RuntimeException(ex); - } - } - throw new IllegalArgumentException(date.toString()); - } - - public static CSTable synthESPInput(CSTable table, Date iniStart, Date iniEnd, int fcDays, int year) { - - int dateColumn = 1; - - DateFormat hfmt = lookupDateFormat(table, dateColumn); - - // Forecast start = end of initialzation + 1 day - Calendar fcStartCal = new GregorianCalendar(); - fcStartCal.setTime(iniEnd); - fcStartCal.add(Calendar.DATE, 1); - Date fcStart = fcStartCal.getTime(); - - // get the initialization period - MemoryTable t = new MemoryTable(table); - int iniStartRow = findRowByDate(iniStart, dateColumn, t); - int iniEndRow = findRowByDate(iniEnd, dateColumn, t); - List iniRows = t.getRows(iniStartRow, iniEndRow); - - // set the historical date to the forcast date, but use the - // historical year. - Calendar histStart = new GregorianCalendar(); - histStart.setTime(fcStart); - histStart.set(Calendar.YEAR, year); - - // get the historical data - int histStartRow = findRowByDate(histStart.getTime(), dateColumn, t); - int histEndRow = histStartRow + (fcDays - 1); - List histRows = t.getRows(histStartRow, histEndRow); - - // create the new Table. - MemoryTable espTable = new MemoryTable(table); - espTable.getInfo().put(DATE_START, hfmt.format(iniStart)); - espTable.getInfo().put(KEY_FC_START, hfmt.format(fcStart)); - espTable.getInfo().put(KEY_FC_DAYS, Integer.toString(fcDays)); - espTable.getInfo().put(KEY_HIST_YEAR, Integer.toString(year)); - espTable.clearRows(); - espTable.addRows(iniRows); - espTable.addRows(histRows); - - // historical date -> forecast date. - Calendar fcCurrent = new GregorianCalendar(); - fcCurrent.setTime(fcStart); - - List espRows = espTable.getRows(); - int start = iniRows.size(); - for (int i = start; i <= start + (fcDays - 1); i++) { - espRows.get(i)[1] = hfmt.format(fcCurrent.getTime()); - fcCurrent.add(Calendar.DATE, 1); - } - fcCurrent.add(Calendar.DATE, -1); - espTable.getInfo().put(DATE_END, hfmt.format(fcCurrent.getTime())); - - return espTable; - } - - /** Get a slice of rows out of the table matching the time window - * - * @param table - * @param timeCol - * @param start - * @param end - * @return the first and last row that matches the time window start->end - */ - public static int[] sliceByTime(CSTable table, int timeCol, Date start, Date end) { - if (end.before(start)) { - throw new IllegalArgumentException("end rows = new ArrayList(); - for (String[] row : src.rows()) { - rows.add(row); - } - - return new TableModel() { - - @Override - public int getColumnCount() { - return src.getColumnCount(); - } - - @Override - public String getColumnName(int column) { - return src.getColumnName(column); - } - - @Override - public int getRowCount() { - return rows.size(); - } - - @Override - public Class getColumnClass(int columnIndex) { - return String.class; - } - - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - return false; - } - - @Override - public Object getValueAt(int rowIndex, int columnIndex) { - return rows.get(rowIndex)[columnIndex]; - } - - @Override - public void setValueAt(Object aValue, int rowIndex, int columnIndex) { -// rows.get(rowIndex)[columnIndex] = (String) aValue; - } - - @Override - public void addTableModelListener(TableModelListener l) { - } - - @Override - public void removeTableModelListener(TableModelListener l) { - } - }; - } - - /** - * Get the KVP as table. - * @param p - * @return an AbstractTableModel for properties (KVP) - */ - public static AbstractTableModel getProperties(final CSProperties p) { - - return new AbstractTableModel() { - - @Override - public int getRowCount() { - return p.keySet().size(); - } - - @Override - public int getColumnCount() { - return 2; - } - - @Override - public Object getValueAt(int rowIndex, int columnIndex) { - if (columnIndex == 0) { - return " " + p.keySet().toArray()[rowIndex]; - } else { - return p.values().toArray()[rowIndex]; - } - } - - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - return columnIndex == 1; - } - - @Override - public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - if (columnIndex == 1) { - String[] keys = p.keySet().toArray(new String[0]); - p.put(keys[rowIndex], aValue.toString()); - } - } - - @Override - public String getColumnName(int column) { - return column == 0 ? "Name" : "Value"; - } - - @Override - public Class getColumnClass(int columnIndex) { - return String.class; - } - }; - } - - public static AbstractTableModel get2DBounded(final CSProperties p, final String pname) throws ParseException { - - String m = p.getInfo(pname).get("bound"); - - String[] dims = m.split(","); - final int rows = DataIO.getInt(p, dims[0].trim()); - final int cols = DataIO.getInt(p, dims[1].trim()); - - return new AbstractTableModel() { - - @Override - public int getRowCount() { - return rows; - } - - @Override - public int getColumnCount() { - return cols; - } - - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - return true; - } - - @Override - public Object getValueAt(int row, int col) { - String[][] d = Conversions.convert(p.get(pname), String[][].class); - return d[row][col].trim(); - } - - @Override - public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - String[][] d = Conversions.convert(p.get(pname), String[][].class); - d[rowIndex][columnIndex] = aValue.toString().trim(); - String s = toArrayString(d); - p.put(pname, s); - } - - @Override - public String getColumnName(int column) { - return Integer.toString(column); - } - - @Override - public Class getColumnClass(int columnIndex) { - return String.class; - } - }; - } - - static public boolean playsRole(final CSProperties p, String key, String role) { - String r = p.getInfo(key).get("role"); - if (r == null) { - return false; - } - return r.contains(role); - } - - static public boolean isBound(final CSProperties p, String key, int dim) { - String bound = p.getInfo(key).get("bound"); - if (bound == null) { - return false; - } - StringTokenizer t = new StringTokenizer(bound, ","); - if (t.countTokens() == dim) { - return true; - } - return false; - } - - public static CSTable getTable(final CSProperties p, String boundName) { - MemoryTable m = new MemoryTable(); - List arr = keysByMeta(p, "bound", boundName); - for (String a : arr) { - } - return m; - } - - // 1D arrays - public static AbstractTableModel getBoundProperties(final CSProperties p, String boundName) throws ParseException { - - - final int rows = DataIO.getInt(p, boundName); - final List arr = keysByMeta(p, "bound", boundName); - - return new AbstractTableModel() { - - @Override - public int getRowCount() { - return rows; - } - - @Override - public int getColumnCount() { - return arr.size(); - } - - @Override - public Object getValueAt(int rowIndex, int columnIndex) { - String colname = arr.get(columnIndex); - String[] d = Conversions.convert(p.get(colname), String[].class); - return d[rowIndex].trim(); - } - - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - return true; - } - - @Override - public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - String colname = arr.get(columnIndex); - String[] d = Conversions.convert(p.get(colname), String[].class); - d[rowIndex] = aValue.toString().trim(); - String s = toArrayString(d); - p.put(colname, s); - } - - @Override - public String getColumnName(int column) { - return arr.get(column); - } - - @Override - public Class getColumnClass(int columnIndex) { - return String.class; - } - }; - } - - // unbound - public static AbstractTableModel getUnBoundProperties(final CSProperties p) throws ParseException { - - - final List arr = keysByNotMeta(p, "bound"); - - return new AbstractTableModel() { - - @Override - public int getRowCount() { - return arr.size(); - } - - @Override - public int getColumnCount() { - return 2; - } - - @Override - public Object getValueAt(int rowIndex, int columnIndex) { - if (columnIndex == 0) { - return arr.get(rowIndex); - } else { - return p.get(arr.get(rowIndex)); - } - } - - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - return columnIndex == 1; - } - - @Override - public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - p.put(arr.get(rowIndex), aValue.toString()); - } - - @Override - public String getColumnName(int column) { - return (column == 0) ? "Key" : "Value"; - } - - @Override - public Class getColumnClass(int columnIndex) { - return String.class; - } - }; - } - - /** - * Create array string. - * - * @param arr - * @return an array String. - */ - public static String toArrayString(String[] arr) { - StringBuilder b = new StringBuilder(); - b.append('{'); - for (int i = 0; i < arr.length; i++) { - b.append(arr[i]); - if (i < arr.length - 1) { - b.append(','); - } - } - b.append('}'); - return b.toString(); - } - - public static String toArrayString(String[][] arr) { - StringBuilder b = new StringBuilder(); - b.append('{'); - for (int i = 0; i < arr.length; i++) { - b.append('{'); - for (int j = 0; j < arr[i].length; j++) { - b.append(arr[i][j]); - if (j < arr[i].length - 1) { - b.append(','); - } - } - b.append('}'); - if (i < arr.length - 1) { - b.append(','); - } - } - b.append('}'); - return b.toString(); - } - - /** Returns a r/o table from a CSP file - * - * @param p - * @param dim - * @return a table model for properties with dimension. - */ - public static TableModel fromCSP(CSProperties p, final int dim) { - List dims = keysByMeta(p, "role", "dimension"); - if (dims.isEmpty()) { - return null; - } - for (String d : dims) { - if (Integer.parseInt(p.get(d).toString()) == dim) { - final List bounds = keysByMeta(p, "bound", d); - final List columns = new ArrayList(bounds.size()); - for (String bound : bounds) { - columns.add(Conversions.convert(p.get(bound), double[].class)); - } - - return new AbstractTableModel() { - - @Override - public int getRowCount() { - return dim; - } - - @Override - public int getColumnCount() { - return bounds.size(); - } - - @Override - public Object getValueAt(int rowIndex, int columnIndex) { - return Array.get(columns.get(columnIndex), rowIndex); - } - - @Override - public String getColumnName(int column) { - return bounds.get(column); - } - - @Override - public Class getColumnClass(int columnIndex) { - return Double.class; - } - }; - } - } - return null; - } - - /** - * - * @param csp - * @param mkey - * @param mval - * @return the list of property keys that have a meta data value. - */ - public static List keysByMeta(CSProperties csp, String mkey, String mval) { - List l = new ArrayList(); - for (String key : csp.keySet()) { - if (csp.getInfo(key).keySet().contains(mkey)) { - String role = csp.getInfo(key).get(mkey); - if (role.equals(mval)) { - l.add(key); - } - } - } - return l; - } - - public static List keysForBounds(CSProperties csp, int boundCount) { - List l = new ArrayList(); - for (String key : csp.keySet()) { - if (csp.getInfo(key).keySet().contains("bound")) { - String bound = csp.getInfo(key).get("bound"); - StringTokenizer t = new StringTokenizer(bound, ","); - if (t.countTokens() == boundCount) { - l.add(key); - } - } - } - return l; - } - - public static List keysByNotMeta(CSProperties csp, String mkey) { - List l = new ArrayList(); - for (String key : csp.keySet()) { - if (!csp.getInfo(key).keySet().contains(mkey)) { - l.add(key); - } - } - return l; - } - - - public static Date[] getColumnDateValues(CSTable t, String columnName) { - int col = columnIndex(t, columnName); - if (col == -1) { - throw new IllegalArgumentException("No such column: " + columnName); - } - - Conversions.Params p = new Conversions.Params(); - p.add(String.class, Date.class, lookupDateFormat(t, col)); - - List l = new ArrayList(); - for (String[] s : t.rows()) { - l.add(Conversions.convert(s[col], Date.class, p)); - } - return l.toArray(new Date[0]); - } - - /** - * Get a column as an int array. - * - * @param t - * @param columnName - * @return the column data as doubles. - */ - public static Double[] getColumnDoubleValues(CSTable t, String columnName) { - int col = columnIndex(t, columnName); - if (col == -1) { - throw new IllegalArgumentException("No such column: " + columnName); - } - List l = new ArrayList(); - for (String[] s : t.rows()) { - l.add(new Double(s[col])); - } - return l.toArray(new Double[0]); - } - - /** - * Get a value as date. - * - * @param p - * @param key - * @return a property as Date - * @throws java.text.ParseException - */ - public static Date getDate(CSProperties p, String key) throws ParseException { - String val = p.get(key).toString(); - if (val == null) { - throw new IllegalArgumentException(key); - } - String f = p.getInfo(key).get(KEY_FORMAT); - DateFormat fmt = new SimpleDateFormat(f == null ? ISO8601 : f); - return fmt.parse(val); - } - - /** - * Get a value as integer. - * @param p - * @param key - * @return a property value as integer. - * @throws java.text.ParseException - */ - public static int getInt(CSProperties p, String key) throws ParseException { - String val = p.get(key).toString(); - if (val == null) { - throw new IllegalArgumentException(key); - } - return Integer.parseInt(val); - } - - public static void save(CSProperties csp, File f, String title) { - PrintWriter w = null; - try { - if (csp instanceof BasicCSProperties) { - BasicCSProperties c = (BasicCSProperties) csp; - c.setName(title); - } - w = new PrintWriter(f); - DataIO.print(csp, w); - w.close(); - } catch (FileNotFoundException ex) { - ex.printStackTrace(); - } finally { - if (w != null) { - w.close(); - } - } - } - - /** - * Print CSProperties. - * @param props the Properties to print - * @param out the output writer to print to. - */ - public static void print(CSProperties props, PrintWriter out) { - out.println(PROPERTIES + "," + CSVParser.printLine(props.getName())); - for (String key : props.getInfo().keySet()) { - out.println(" " + CSVParser.printLine(key, props.getInfo().get(key))); - } - out.println(); - for (String key : props.keySet()) { - out.println(PROPERTY + "," + CSVParser.printLine(key, props.get(key).toString())); - for (String key1 : props.getInfo(key).keySet()) { - out.println(" " + CSVParser.printLine(key1, props.getInfo(key).get(key1))); - } - out.println(); - } - out.println(); - out.flush(); - } - - public static void print(Map props, String header, PrintWriter out) { - out.println(PROPERTIES + "," + header); - out.println(); - for (String key : props.keySet()) { - out.println(PROPERTY + "," + CSVParser.printLine(key, props.get(key).toString())); - } - out.println(); - out.flush(); - } - - /** - * Print a CSTable to a PrintWriter - * - * @param table the table to print - * @param out the writer to write to - */ - public static void print(CSTable table, PrintWriter out) { - out.println(TABLE + "," + CSVParser.printLine(table.getName())); - for (String key : table.getInfo().keySet()) { - out.println(CSVParser.printLine(key, table.getInfo().get(key))); - } - if (table.getColumnCount() < 1) { - out.flush(); - return; - } - out.print(HEADER); - for (int i = 1; i <= table.getColumnCount(); i++) { - out.print("," + table.getColumnName(i)); - } - out.println(); - Map m = table.getColumnInfo(1); - for (String key : m.keySet()) { - out.print(key); - for (int i = 1; i <= table.getColumnCount(); i++) { - out.print("," + table.getColumnInfo(i).get(key)); - } - out.println(); - } - for (String[] row : table.rows()) { - for (int i = 1; i < row.length; i++) { - out.print("," + row[i]); - } - out.println(); - } - out.println(); - out.flush(); - } - - /** Saves a table to a file. - * - * @param table the table to save - * @param file the file to store it in (overwritten, if exists) - * @throws IOException - */ - public static void save(CSTable table, File file) throws IOException { - PrintWriter w = new PrintWriter(file); - print(table, w); - w.close(); - } - - /** - * Parse properties from a reader - * - * @param r the Reader - * @param name the name of the properties - * @return properties from a file. - * @throws java.io.IOException - */ - public static CSProperties properties(Reader r, String name) throws IOException { - return new CSVProperties(r, name); - } - - /** - * Create a CSProperty from an array of reader. - * @param r - * @param name - * @return merged properties. - * @throws java.io.IOException - */ - public static CSProperties properties(Reader[] r, String name) throws IOException { - CSVProperties p = new CSVProperties(r[0], name); - for (int i = 1; i < r.length; i++) { - CSVParser csv = new CSVParser(r[i], CSVStrategy.DEFAULT_STRATEGY); - locate(csv, name, PROPERTIES, PROPERTIES1); - p.readProps(csv); - r[i].close(); - } - return p; - } - - /** - * Merges two Properties, respects permissions - * - * @param base - * @param overlay - */ - public static void merge(CSProperties base, CSProperties overlay) { - for (String key : overlay.keySet()) { - if (base.getInfo(key).containsKey("public")) { - base.put(key, overlay.get(key)); - } else { - throw new IllegalArgumentException("Not public: " + key); - } - } - } - - /** - * Convert CSProperties into Properties - * @param p - * @return the Properties. - */ - public static Properties properties(CSProperties p) { - Properties pr = new Properties(); - pr.putAll(p); - return pr; - } - - /** - * Convert Properties to CSProperties. - * @param p the Properties - * @return CSProperties - */ - public static CSProperties properties(Properties p) { - return new BasicCSProperties(p); - } - - /** Convert from a Map to properties. - * - * @param p the source map - * @return CSProperties - */ - public static CSProperties properties(Map p) { - return new BasicCSProperties(p); - } - - /** Create Empty properties - * @return get some empty properties. - */ - public static CSProperties properties() { - return new BasicCSProperties(); - } - - /** Parse the first table from a file - * - * @param file the file to parse - * @return the CSTable - * @throws IOException - */ - public static CSTable table(File file) throws IOException { - return table(file, null); - } - - /** Parse a table from a given File. - * @param file - * @param name - * @return a CSTable. - * @throws java.io.IOException - */ - public static CSTable table(File file, String name) throws IOException { - return new FileTable(file, name); - } - - /** Parse a table from a Reader. Find the first table - * - * @param s the Reader to read from - * @return the CSTable - * @throws IOException - */ - public static CSTable table(String s) throws IOException { - return table(s, null); - } - - /** Parse a table from a Reader. - * - * @param s the Reader to read from - * @param name the name of the table - * @return the CSTable - * @throws IOException - */ - public static CSTable table(String s, String name) throws IOException { - return new StringTable(s, name); - } - - /** Opens the first table found at the URL - * - * @param url the URL - * @return the CSTable - * @throws IOException - */ - public static CSTable table(URL url) throws IOException { - return table(url, null); - } - - /** Create a CSTable from a URL source. - * - * @param url the table URL - * @param name the name of the table - * @return a new CSTable - * @throws IOException - */ - public static CSTable table(URL url, String name) throws IOException { - return new URLTable(url, name); - } - - /** Check if a column exist in table. - * - * @param table the table to check - * @param name the name of the column - * @return - */ - public static boolean columnExist(CSTable table, String name) { - for (int i = 1; i <= table.getColumnCount(); i++) { - if (table.getColumnName(i).startsWith(name)) { - return true; - } - } - return false; - } - - /** Gets a column index by name - * - * @param table The table to check - * @param name the column name - * @return the index of the column - */ - public static int columnIndex(CSTable table, String name) { - for (int i = 1; i <= table.getColumnCount(); i++) { - if (table.getColumnName(i).equals(name)) { - return i; - } - } - return -1; - } - - - /** Get the column indexes for a given column name. - * (e.g. use tmin to fetch tmin[0], tmin[1]...) - * @param table - * @param name - * @return - */ - public static int[] columnIndexes(CSTable table, String name) { - List l = new ArrayList(); - for (int i = 1; i <= table.getColumnCount(); i++) { - if (table.getColumnName(i).startsWith(name)) { - l.add(i); - } - } - if (l.isEmpty()) { - return null; - } - int[] idx = new int[l.size()]; - for (int i = 0; i < idx.length; i++) { - idx[i] = l.get(i); - } - return idx; - } - - public static List columnNames(CSTable table, String name) { - List l = new ArrayList(); - for (int i = 1; i <= table.getColumnCount(); i++) { - if (table.getColumnName(i).startsWith(name)) { - l.add(table.getColumnName(i)); - } - } - if (l.isEmpty()) { - throw new IllegalArgumentException("No column(s) '" + name + "' in table: " + table.getName()); - } - - return l; - } - - public static void rowStringValues(String row[], int[] idx, String[] vals) { - for (int i = 0; i < vals.length; i++) { - vals[i] = row[idx[i]]; - } - } - - public static double[] rowDoubleValues(String row[], int[] idx, double[] vals) { - for (int i = 0; i < vals.length; i++) { - vals[i] = Double.parseDouble(row[idx[i]]); - } - return vals; - } - - public static double[] rowDoubleValues(String row[], int[] idx) { - double[] vals = new double[idx.length]; - return rowDoubleValues(row, idx, vals); - } - - /** Extract the columns and create another table. - * - * @param table the table - * @param colName the names of the columns to extract. - * @return A new Table with the Columns. - */ - public static CSTable extractColumns(CSTable table, String... colNames) { - int[] idx = {}; - - for (String name : colNames) { - idx = add(idx, columnIndexes(table, name)); - } - - if (idx.length == 0) { - throw new IllegalArgumentException("No such column names: " + Arrays.toString(colNames)); - } - - List cols = new ArrayList(); - for (String name : colNames) { - cols.addAll(columnNames(table, name)); - } - - MemoryTable t = new MemoryTable(); - t.setName(table.getName()); - t.getInfo().putAll(table.getInfo()); - - // header - t.setColumns(cols.toArray(new String[0])); - for (int i = 0; i < idx.length; i++) { - t.getColumnInfo(i + 1).putAll(table.getColumnInfo(idx[i])); - } - - String[] r = new String[idx.length]; - for (String[] row : table.rows()) { - rowStringValues(row, idx, r); - t.addRow((Object[]) r); - } - - return t; - } - - public static String diff(double[] o, double[] p) { - String status = "ok."; - if (o.length != p.length) { - status = "o.length != p.length"; - } else { - for (int i = 0; i < o.length; i++) { - if (o[i] != p[i]) { - status += "error"; - } - } - } - return status; - } - - public static CSTable asTable(CSProperties p, String dim) { - List arrays = DataIO.keysByMeta(p, "bound", dim); - if (arrays.isEmpty()) { - // nothing is bound to this - return null; - } - int len = 0; - List m = new ArrayList(); - for (String arr : arrays) { - String[] d = Conversions.convert(p.get(arr), String[].class); - len = d.length; - m.add(d); - } - MemoryTable table = new MemoryTable(); - table.getInfo().put("info", "Parameter bound by " + dim); - table.setName(dim); - table.setColumns(arrays.toArray(new String[m.size()])); - String row[] = new String[m.size()]; - for (int i = 0; i < len; i++) { - for (int j = 0; j < m.size(); j++) { - row[j] = m.get(j)[i].trim(); - } - table.addRow((Object[]) row); - } - return table; - } - - public static CSProperties fromTable(CSTable t) { - BasicCSProperties p = new BasicCSProperties(); - - Map> table = new HashMap>(); - for (int i = 1; i <= t.getColumnCount(); i++) { - table.put(i, new ArrayList()); - } - - for (String[] row : t.rows()) { - for (int i = 1; i < row.length; i++) { - table.get(i).add(row[i]); - } - } - - Map m = new HashMap(); - m.put("bound", t.getName()); - - for (int i = 1; i <= t.getColumnCount(); i++) { - String name = t.getColumnName(i); - p.put(name, table.get(i).toString().replace('[', '{').replace(']', '}')); - p.setInfo(name, m); - } - return p; - } - - /** Find all table names in a file. - * - * @param f the file to search in - * @return a list of table names found in that file. - */ - public static List tables(File f) throws IOException { - return findCSVElements(f, "@T"); - } - - /** Find all properties section names in a file. - * - * @param f the file to search in - * @return a list of section names found in that file. - */ - public static List properties(File f) throws IOException { - return findCSVElements(f, "@S"); - } - - static List findCSVElements(File f, String tag) throws IOException { - List l = new ArrayList(); - Reader r = new FileReader(f); - CSVParser csv = new CSVParser(r, CSVStrategy.DEFAULT_STRATEGY); - String[] line = null; - while ((line = csv.getLine()) != null) { - if (line.length == 2 && line[0].equals(tag)) { - l.add(line[1]); - } - } - r.close(); - return l; - } - - ///////////////////////////////////////////////////////////////////////////// - /// private - private static int[] add(int[] a, int[] b) { - int[] c = new int[a.length + b.length]; - System.arraycopy(a, 0, c, 0, a.length); - System.arraycopy(b, 0, c, a.length, b.length); - return c; - } - - private static String locate(CSVParser csv, String name, String... type) throws IOException { - if (name == null) { - // match anything - name = ".+"; - } - Pattern p = Pattern.compile(name); - String[] line = null; - while ((line = csv.getLine()) != null) { - if (line[0].startsWith(COMMENT) || !line[0].startsWith(P)) { -// if (line.length != 2 || line[0].startsWith(COMMENT) || !line[0].startsWith(P)) { - continue; - } - for (String s : type) { - if (line[0].equalsIgnoreCase(s) && p.matcher(line[1].trim()).matches()) { - return line[1]; - } - } - } - throw new IllegalArgumentException("Not found : " + type + ", " + name); - } - - @SuppressWarnings("serial") - private static class BasicCSProperties extends LinkedHashMap implements CSProperties { - - String name = ""; - Map> info = new HashMap>(); - - BasicCSProperties(Properties p) { - this(); - for (Object key : p.keySet()) { - put(key.toString(), p.getProperty(key.toString())); - } - } - - BasicCSProperties(Map p) { - this(); - for (String key : p.keySet()) { - put(key, p.get(key)); - } - } - - BasicCSProperties() { - info.put(ROOT_ANN, new HashMap()); - } - - @Override - public void putAll(CSProperties p) { - super.putAll(p); - for (String s : p.keySet()) { - Map m = p.getInfo(s); - setInfo(s, m); - } - getInfo().putAll(p.getInfo()); - } - - @Override - public String getName() { - return name; - } - - @Override - public void setName(String name) { - this.name = name; - } - - @Override - public Map getInfo(String property) { - Map im = info.get(property); - return (im == null) ? NOINFO : im; - } - - @Override - public Map getInfo() { - return getInfo(ROOT_ANN); - } - - @Override - public void setInfo(String propertyname, Map inf) { - info.put(propertyname, inf); - } - - @Override - public String get(Object key) { - Object val = super.get(key.toString()); - return resolve(val != null ? val.toString() : null); - } - - /** - * Resolve variable substitution. - * - * @P, dir, "/tmp/input" - * @P, file, "${dir}/test.txt" - * - * - The referenced key has to be in the same properties set. - * - there could be a chain of references, however, no recursion - * testing is implemented. - * - * @param str - * @return - */ - private String resolve(String str) { - if (str != null && str.contains("${")) { - Matcher ma = null; - while ((ma = varPattern.matcher(str)).find()) { - String key = ma.group(1); - String val = get(key); - if (val == null) { - throw new IllegalArgumentException("value substitution failed for " + key); - } - Pattern repl = Pattern.compile("\\$\\{" + key + "\\}"); - str = repl.matcher(str).replaceAll(val); - } - } - return str; - } - } - - /** - * Note: to keep the order of properties, it is sub-classed from - * LinkedHashMap - */ - @SuppressWarnings("serial") - private static class CSVProperties extends BasicCSProperties implements CSProperties { - - CSVProperties(Reader reader, String name) throws IOException { - super(); - CSVParser csv = new CSVParser(reader, CSVStrategy.DEFAULT_STRATEGY); - this.name = locate(csv, name, PROPERTIES, PROPERTIES1); - readProps(csv); - reader.close(); - } - - private void readProps(CSVParser csv) throws IOException { - Map propInfo = null; - String[] line = null; - String propKey = ROOT_ANN; - while ((line = csv.getLine()) != null - && !line[0].equalsIgnoreCase(PROPERTIES) - && !line[0].equalsIgnoreCase(PROPERTIES1) - && !line[0].equalsIgnoreCase(TABLE) - && !line[0].equalsIgnoreCase(TABLE1)) { - if (line[0].startsWith(COMMENT) || line[0].isEmpty()) { - continue; - } - if (line[0].equalsIgnoreCase(PROPERTY) || line[0].equalsIgnoreCase(PROPERTY1)) { - if (line.length < 2) { - throw new IOException("Expected property name in line " + csv.getLineNumber()); - } - propKey = line[1]; - // maybe there is no value for the property, so we add null - put(propKey, (line.length == 3) ? line[2] : null); - propInfo = null; - } else { - if (propInfo == null) { - info.put(propKey, propInfo = new HashMap()); - } - propInfo.put(line[0], (line.length > 1) ? line[1] : null); - } - } - } - } - - /** - * CSVTable implementation - */ - private static abstract class CSVTable implements CSTable { - - Map> info = new HashMap>(); - String name; - int colCount; - String columnNames[]; - int firstline; - CSVStrategy strategy = CSVStrategy.DEFAULT_STRATEGY; - - protected abstract Reader newReader(); - - protected void init(String tableName) throws IOException { - CSVParser csv = new CSVParser(newReader(), strategy); - name = locate(csv, tableName, TABLE, TABLE1); - firstline = readTableHeader(csv); - } - - private void skip0(CSVParser csv, int lines) { - try { - csv.skipLines(lines); - } catch (IOException ex) { - throw new RuntimeException(ex); - } - } - - private String[] readRow(CSVParser csv) { - try { - String[] r = csv.getLine(); - return r; - } catch (IOException ex) { - throw new RuntimeException(ex); - } - } - - /** - * Gets a row iterator. - * @return - */ - @Override - public Iterable rows() { - return rows(0); - } - - /** - * Gets a row iterator that starts at a give row. - * @param startRow the row to start parsing. - * @return - */ - @Override - public Iterable rows(final int startRow) { - if (startRow < 0) { - throw new IllegalArgumentException("startRow<0"); - } - - return new Iterable() { - - @Override - public Iterator iterator() { - final Reader r = newReader(); - final CSVParser csv = new CSVParser(r, strategy); - - skip0(csv, firstline); - skip0(csv, startRow); - - return new TableIterator() { - - String[] line = readRow(csv); - int row = startRow; - - public void close() throws IOException { - r.close(); - } - - @Override - public boolean hasNext() { - boolean hn = (line != null && line.length > 1 && line[0].isEmpty()); - if (!hn) { - try { - r.close(); - } catch (IOException E) { - } - } - return hn; - } - - @Override - public String[] next() { - String[] s = line; - s[0] = Integer.toString(++row); - line = readRow(csv); - return s; - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - - @Override - public void skip(int n) { - if (n < 1) { - throw new IllegalArgumentException("n<1 : " + n); - } - skip0(csv, n - 1); - line = readRow(csv); - row += n; - } - }; - } - }; - } - - private int readTableHeader(CSVParser csv) throws IOException { - Map tableInfo = new LinkedHashMap(); - info.put(-1, tableInfo); - String[] line = null; - while ((line = csv.getLine()) != null && !line[0].equalsIgnoreCase(HEADER)) { - if (line[0].startsWith(COMMENT)) { - continue; - } - tableInfo.put(line[0], line.length > 1 ? line[1] : null); - } - if (line == null) { - throw new IOException("Invalid table structure."); - } - colCount = line.length - 1; - columnNames = new String[line.length]; - columnNames[0] = "ROW"; - for (int i = 1; i < line.length; i++) { - columnNames[i] = line[i]; - info.put(i, new LinkedHashMap()); - } - while ((line = csv.getLine()) != null && !line[0].isEmpty()) { - if (line[0].startsWith(COMMENT)) { - continue; - } - for (int i = 1; i < line.length; i++) { - info.get(i).put(line[0], line[i]); - } - } - assert (line != null && line[0].isEmpty()); - return csv.getLineNumber() - 1; - } - - @Override - public String getName() { - return name; - } - - @Override - public Map getInfo() { - return getColumnInfo(-1); - } - - @Override - public Map getColumnInfo(int column) { - return Collections.unmodifiableMap(info.get(column)); - } - - @Override - public int getColumnCount() { - return colCount; - } - - @Override - public String getColumnName(int column) { - return columnNames[column]; - } - } - - private static class FileTable extends CSVTable { - - File f; - - FileTable(File f, String name) throws IOException { - this.f = f; - init(name); - } - - @Override - protected Reader newReader() { - try { - return new FileReader(f); - } catch (FileNotFoundException ex) { - throw new RuntimeException(ex); - } - } - } - - private static class StringTable extends CSVTable { - - String s; - - StringTable(String s, String name) throws IOException { - this.s = s; - init(name); - } - - @Override - protected Reader newReader() { - return new StringReader(s); - } - } - - private static class URLTable extends CSVTable { - - URL s; - - URLTable(URL s, String name) throws IOException { - this.s = s; - init(name); - } - - @Override - protected Reader newReader() { - try { - return new InputStreamReader(s.openStream()); - } catch (IOException ex) { - throw new RuntimeException(ex); - } - } - } - - public static void main(String[] args) throws IOException { -// String table = "@T, nhru\n" -// + "createdby, od\n" -// + "date, today\n" -// + "@H, hru_coeff, area, me\n" -// + "type, Double, Double, Double\n" -// + ",1.3,3.5,5.6\n" -// + ",1.3,3.5,5.6\n" -// + ",1.3,3.5,5.6\n" -// + "\n"; -// -// CSTable t = table(table, "nhru"); -// print(t, new PrintWriter(System.out)); -// -// CSProperties csp = fromTable(t); -// print(csp, new PrintWriter(System.out)); - } -} +/* + * $Id:$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.io; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.io.Reader; +import java.io.StringReader; +import java.lang.reflect.Array; +import java.net.URL; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.StringTokenizer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.Arrays; +import javax.swing.event.TableModelListener; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableModel; +import oms3.Conversions; + +/** Data Input/Output management. + * + * @author Olaf David + */ +public class DataIO { + + private static final String P = "@"; + public static final String TABLE = P + "T"; + public static final String HEADER = P + "H"; + public static final String PROPERTIES = P + "S"; + public static final String PROPERTY = P + "P"; + public static final String TABLE1 = P + "Table"; + public static final String HEADER1 = P + "Header"; + public static final String PROPERTIES1 = P + "Properties"; + public static final String PROPERTY1 = P + "Property"; + // + // + public static final String CSPROPERTIES_EXT = "csp"; + public static final String CSTABLE_EXT = "cst"; + // + private static final String ROOT_ANN = "___root___"; + private static final String COMMENT = "#"; + private static final Map NOINFO = Collections.unmodifiableMap(new HashMap()); + private static final Pattern varPattern = Pattern.compile("\\$\\{([^$}]+)\\}"); + /* some static helpers, might have to go somewhere else */ + private static final String ISO8601 = "yyyy-MM-dd'T'hh:mm:ss"; + // + // all meta data keys + public static final String KEY_CONVERTED_FROM = "converted_from"; + public static final String DATE_FORMAT = "date_format"; + public static final String DATE_START = "date_start"; + public static final String DATE_END = "date_end"; + public static final String KEY_CREATED_AT = "created_at"; + public static final String KEY_CREATED_BY = "created_by"; + public static final String KEY_UNIT = "unit"; + public static final String KEY_FORMAT = "format"; + public static final String KEY_TYPE = "type"; + public static final String KEY_NAME = "name"; + public static final String KEY_MISSING_VAL = "missing_value"; + public static final String KEY_FC_START = "forecast_start"; + public static final String KEY_FC_DAYS = "forecast_days"; + public static final String KEY_HIST_YEAR = "historical_year"; + public static final String KEY_DIGEST = "digest"; + public static final String VAL_DATE = "Date"; + //TimeStep Enumerations + public static final int DAILY = 0; + public static final int MEAN_MONTHLY = 1; + public static final int MONTHLY_MEAN = 2; + public static final int ANNUAL_MEAN = 3; + public static final int PERIOD_MEAN = 4; + public static final int PERIOD_MEDIAN = 5; + public static final int PERIOD_STANDARD_DEVIATION = 6; + public static final int PERIOD_MIN = 7; + public static final int PERIOD_MAX = 8; + + public static double[] getColumnDoubleValuesInterval(Date start, Date end, CSTable t, String columnName, int timeStep) { + + int col = columnIndex(t, columnName); + if (col == -1) { + throw new IllegalArgumentException("No such column: " + columnName); + } + + DateFormat fmt = lookupDateFormat(t, 1); + + boolean useOrigDaily = false; + switch (timeStep) { + case DAILY: + if (useOrigDaily) { + List l = new ArrayList(); + for (String[] row : t.rows()) { + try { + Date d = fmt.parse(row[1]); + if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { + l.add(new Double(row[col])); + } + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + } + double[] arr = new double[l.size()]; + for (int i = 0; i < arr.length; i++) { + arr[i] = l.get(i); + } + return arr; + } + + case ANNUAL_MEAN: + case MONTHLY_MEAN: + case PERIOD_MEAN: { + + + int previousMonth = -1; + int previousYear = -1; + int previousDay = -1; + boolean previousValid = false; + boolean lastRow = false; + + boolean useYear = (timeStep == DAILY) || (timeStep == MONTHLY_MEAN) || (timeStep == ANNUAL_MEAN); + boolean useMonth = (timeStep == DAILY) || (timeStep == MONTHLY_MEAN); + boolean useDay = (timeStep == DAILY); + + List l = new ArrayList(); + double sum = 0; + int count = 0; + + + for (String[] row : t.rows()) { + try { + Date d = fmt.parse(row[1]); + if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { + int month = d.getMonth(); + int year = d.getYear(); + int day = d.getDay(); + double data = Double.parseDouble(row[col]); + + + + boolean newEntry = (previousValid && ((useYear && (year != previousYear)) + || (useMonth && (month != previousMonth)) + || (useDay && (day != previousDay)))); + + + + if (newEntry) { + l.add(sum / count); + sum = 0; + count = 0; + } + + sum += data; + count++; + + previousValid = true; + previousDay = day; + previousMonth = month; + previousYear = year; + } + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + + } + l.add(sum / count); // add the final entry which wasn't yet added + // since it never hit a newEntry. + + // Copy the List to the output array. + double[] arr = new double[l.size()]; + for (int i = 0; i < arr.length; i++) { + arr[i] = l.get(i); + } + + return arr; + // break; + } + + case MEAN_MONTHLY: { + double[] arr = new double[12]; // 1 per month + + int[] count = new int[12]; + + for (int i = 0; i < 12; i++) { + arr[i] = 0; // initialize data to 0 + count[i] = 0; + } + + + for (String[] row : t.rows()) { + try { + Date d = fmt.parse(row[1]); + if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { + int month = d.getMonth(); + double data = Double.parseDouble(row[col]); + arr[month] = arr[month] + data; + count[month] = count[month] + 1; + if (month > 11) { + throw new RuntimeException("Month > 11 = " + month); + } + } + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + } + + for (int i = 0; i < 12; i++) { + arr[i] = arr[i] / count[i]; + } + + return arr; + // break; + } + + case PERIOD_MIN: + case PERIOD_MAX: { + double min = -1; + double max = -1; + boolean previousValid = false; + + + for (String[] row : t.rows()) { + try { + Date d = fmt.parse(row[1]); + if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { + double data = Double.parseDouble(row[col]); + if (!previousValid) { + min = data; + max = data; + } else if ((timeStep == PERIOD_MIN) && (data < min)) { + min = data; + } else if ((timeStep == PERIOD_MAX) && (data > max)) { + max = data; + } + previousValid = true; + } + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + } + double[] arr = new double[1]; + arr[0] = (timeStep == PERIOD_MIN) ? min : max; + return arr; + // break; + } + + case PERIOD_MEDIAN: { + // Put entire table into ArrayList + List l = new ArrayList(); + for (String[] row : t.rows()) { + try { + Date d = fmt.parse(row[1]); + if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { + l.add(new Double(row[col])); + } + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + } + + //Copy to array of double + int lSize = l.size(); + if (lSize == 0) { + throw new RuntimeException("No data in file matched the specified period " + start + " to " + end); + } + double[] arr = new double[lSize]; + for (int i = 0; i < arr.length; i++) { + arr[i] = l.get(i); + } + + l.clear(); // Don't need l anymore so clear it. + + // Sort the Array + Arrays.sort(arr); + double median; + + // Pull out the Median + if (lSize % 2 == 1) { + median = arr[(lSize + 1) / 2 - 1]; + } else { + double lower = arr[(lSize / 2) - 1]; + double upper = arr[lSize / 2]; + median = (lower + upper) / 2.0; + } + + // return as an array with 1 entry. + double[] arr2 = new double[1]; + arr2[0] = median; + return arr2; + + //break; + } + + case PERIOD_STANDARD_DEVIATION: { + // kmolson TODO- is it better to read the file twice, or read + // it once and store the data for the 2nd pass while + // computing the mean? + + // Read file to get mean. + double sum = 0; + double sq_sum = 0; + double data = 0; + int count = 0; + for (String[] row : t.rows()) { + try { + Date d = fmt.parse(row[1]); + if ((d.equals(start) || d.after(start)) && (d.equals(end) || d.before(end))) { + data = Double.parseDouble(row[col]); + sum += data; + sq_sum += (data * data); + count++; + } + + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + } + + double mean = sum / count; + double variance = sq_sum / count - (mean * mean); + double standardDeviation = Math.sqrt(variance); + + double[] arr = new double[1]; + arr[0] = standardDeviation; + return arr; + } + + default: { + throw new IllegalArgumentException("timeStep " + timeStep + "not supported."); + } + } + } + + public static SimpleDateFormat lookupDateFormat(CSTable table, int col) { + if (col < 0 || col > table.getColumnCount()) { + throw new IllegalArgumentException("invalid column: " + col); + } + String format = table.getColumnInfo(col).get(KEY_FORMAT); + if (format == null) { + format = table.getInfo().get(DATE_FORMAT); + } + if (format == null) { + format = Conversions.ISO().toPattern(); + } + return new SimpleDateFormat(format); + } + + public static int findRowByDate(Date date, int dateColumn, CSTable table) { + String type = table.getColumnInfo(dateColumn).get(KEY_TYPE); + if ((type == null) || !type.equalsIgnoreCase(VAL_DATE)) { + throw new IllegalArgumentException(); + } + + DateFormat fmt = lookupDateFormat(table, dateColumn); + + int rowNo = 0; + for (String[] row : table.rows()) { + try { + Date d = fmt.parse(row[dateColumn]); + if (d.equals(date)) { + return rowNo; + } + rowNo++; + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + } + throw new IllegalArgumentException(date.toString()); + } + + public static CSTable synthESPInput(CSTable table, Date iniStart, Date iniEnd, int fcDays, int year) { + + int dateColumn = 1; + + DateFormat hfmt = lookupDateFormat(table, dateColumn); + + // Forecast start = end of initialzation + 1 day + Calendar fcStartCal = new GregorianCalendar(); + fcStartCal.setTime(iniEnd); + fcStartCal.add(Calendar.DATE, 1); + Date fcStart = fcStartCal.getTime(); + + // get the initialization period + MemoryTable t = new MemoryTable(table); + int iniStartRow = findRowByDate(iniStart, dateColumn, t); + int iniEndRow = findRowByDate(iniEnd, dateColumn, t); + List iniRows = t.getRows(iniStartRow, iniEndRow); + + // set the historical date to the forcast date, but use the + // historical year. + Calendar histStart = new GregorianCalendar(); + histStart.setTime(fcStart); + histStart.set(Calendar.YEAR, year); + + // get the historical data + int histStartRow = findRowByDate(histStart.getTime(), dateColumn, t); + int histEndRow = histStartRow + (fcDays - 1); + List histRows = t.getRows(histStartRow, histEndRow); + + // create the new Table. + MemoryTable espTable = new MemoryTable(table); + espTable.getInfo().put(DATE_START, hfmt.format(iniStart)); + espTable.getInfo().put(KEY_FC_START, hfmt.format(fcStart)); + espTable.getInfo().put(KEY_FC_DAYS, Integer.toString(fcDays)); + espTable.getInfo().put(KEY_HIST_YEAR, Integer.toString(year)); + espTable.clearRows(); + espTable.addRows(iniRows); + espTable.addRows(histRows); + + // historical date -> forecast date. + Calendar fcCurrent = new GregorianCalendar(); + fcCurrent.setTime(fcStart); + + List espRows = espTable.getRows(); + int start = iniRows.size(); + for (int i = start; i <= start + (fcDays - 1); i++) { + espRows.get(i)[1] = hfmt.format(fcCurrent.getTime()); + fcCurrent.add(Calendar.DATE, 1); + } + fcCurrent.add(Calendar.DATE, -1); + espTable.getInfo().put(DATE_END, hfmt.format(fcCurrent.getTime())); + + return espTable; + } + + /** Get a slice of rows out of the table matching the time window + * + * @param table + * @param timeCol + * @param start + * @param end + * @return the first and last row that matches the time window start->end + */ + public static int[] sliceByTime(CSTable table, int timeCol, Date start, Date end) { + if (end.before(start)) { + throw new IllegalArgumentException("end rows = new ArrayList(); + for (String[] row : src.rows()) { + rows.add(row); + } + + return new TableModel() { + + @Override + public int getColumnCount() { + return src.getColumnCount(); + } + + @Override + public String getColumnName(int column) { + return src.getColumnName(column); + } + + @Override + public int getRowCount() { + return rows.size(); + } + + @Override + public Class getColumnClass(int columnIndex) { + return String.class; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + return rows.get(rowIndex)[columnIndex]; + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { +// rows.get(rowIndex)[columnIndex] = (String) aValue; + } + + @Override + public void addTableModelListener(TableModelListener l) { + } + + @Override + public void removeTableModelListener(TableModelListener l) { + } + }; + } + + /** + * Get the KVP as table. + * @param p + * @return an AbstractTableModel for properties (KVP) + */ + public static AbstractTableModel getProperties(final CSProperties p) { + + return new AbstractTableModel() { + + @Override + public int getRowCount() { + return p.keySet().size(); + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if (columnIndex == 0) { + return " " + p.keySet().toArray()[rowIndex]; + } else { + return p.values().toArray()[rowIndex]; + } + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return columnIndex == 1; + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + if (columnIndex == 1) { + String[] keys = p.keySet().toArray(new String[0]); + p.put(keys[rowIndex], aValue.toString()); + } + } + + @Override + public String getColumnName(int column) { + return column == 0 ? "Name" : "Value"; + } + + @Override + public Class getColumnClass(int columnIndex) { + return String.class; + } + }; + } + + public static AbstractTableModel get2DBounded(final CSProperties p, final String pname) throws ParseException { + + String m = p.getInfo(pname).get("bound"); + + String[] dims = m.split(","); + final int rows = DataIO.getInt(p, dims[0].trim()); + final int cols = DataIO.getInt(p, dims[1].trim()); + + return new AbstractTableModel() { + + @Override + public int getRowCount() { + return rows; + } + + @Override + public int getColumnCount() { + return cols; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return true; + } + + @Override + public Object getValueAt(int row, int col) { + String[][] d = Conversions.convert(p.get(pname), String[][].class); + return d[row][col].trim(); + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + String[][] d = Conversions.convert(p.get(pname), String[][].class); + d[rowIndex][columnIndex] = aValue.toString().trim(); + String s = toArrayString(d); + p.put(pname, s); + } + + @Override + public String getColumnName(int column) { + return Integer.toString(column); + } + + @Override + public Class getColumnClass(int columnIndex) { + return String.class; + } + }; + } + + static public boolean playsRole(final CSProperties p, String key, String role) { + String r = p.getInfo(key).get("role"); + if (r == null) { + return false; + } + return r.contains(role); + } + + static public boolean isBound(final CSProperties p, String key, int dim) { + String bound = p.getInfo(key).get("bound"); + if (bound == null) { + return false; + } + StringTokenizer t = new StringTokenizer(bound, ","); + if (t.countTokens() == dim) { + return true; + } + return false; + } + + public static CSTable getTable(final CSProperties p, String boundName) { + MemoryTable m = new MemoryTable(); + List arr = keysByMeta(p, "bound", boundName); + for (String a : arr) { + } + return m; + } + + // 1D arrays + public static AbstractTableModel getBoundProperties(final CSProperties p, String boundName) throws ParseException { + + + final int rows = DataIO.getInt(p, boundName); + final List arr = keysByMeta(p, "bound", boundName); + + return new AbstractTableModel() { + + @Override + public int getRowCount() { + return rows; + } + + @Override + public int getColumnCount() { + return arr.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + String colname = arr.get(columnIndex); + String[] d = Conversions.convert(p.get(colname), String[].class); + return d[rowIndex].trim(); + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return true; + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + String colname = arr.get(columnIndex); + String[] d = Conversions.convert(p.get(colname), String[].class); + d[rowIndex] = aValue.toString().trim(); + String s = toArrayString(d); + p.put(colname, s); + } + + @Override + public String getColumnName(int column) { + return arr.get(column); + } + + @Override + public Class getColumnClass(int columnIndex) { + return String.class; + } + }; + } + + // unbound + public static AbstractTableModel getUnBoundProperties(final CSProperties p) throws ParseException { + + + final List arr = keysByNotMeta(p, "bound"); + + return new AbstractTableModel() { + + @Override + public int getRowCount() { + return arr.size(); + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if (columnIndex == 0) { + return arr.get(rowIndex); + } else { + return p.get(arr.get(rowIndex)); + } + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return columnIndex == 1; + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + p.put(arr.get(rowIndex), aValue.toString()); + } + + @Override + public String getColumnName(int column) { + return (column == 0) ? "Key" : "Value"; + } + + @Override + public Class getColumnClass(int columnIndex) { + return String.class; + } + }; + } + + /** + * Create array string. + * + * @param arr + * @return an array String. + */ + public static String toArrayString(String[] arr) { + StringBuilder b = new StringBuilder(); + b.append('{'); + for (int i = 0; i < arr.length; i++) { + b.append(arr[i]); + if (i < arr.length - 1) { + b.append(','); + } + } + b.append('}'); + return b.toString(); + } + + public static String toArrayString(String[][] arr) { + StringBuilder b = new StringBuilder(); + b.append('{'); + for (int i = 0; i < arr.length; i++) { + b.append('{'); + for (int j = 0; j < arr[i].length; j++) { + b.append(arr[i][j]); + if (j < arr[i].length - 1) { + b.append(','); + } + } + b.append('}'); + if (i < arr.length - 1) { + b.append(','); + } + } + b.append('}'); + return b.toString(); + } + + /** Returns a r/o table from a CSP file + * + * @param p + * @param dim + * @return a table model for properties with dimension. + */ + public static TableModel fromCSP(CSProperties p, final int dim) { + List dims = keysByMeta(p, "role", "dimension"); + if (dims.isEmpty()) { + return null; + } + for (String d : dims) { + if (Integer.parseInt(p.get(d).toString()) == dim) { + final List bounds = keysByMeta(p, "bound", d); + final List columns = new ArrayList(bounds.size()); + for (String bound : bounds) { + columns.add(Conversions.convert(p.get(bound), double[].class)); + } + + return new AbstractTableModel() { + + @Override + public int getRowCount() { + return dim; + } + + @Override + public int getColumnCount() { + return bounds.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + return Array.get(columns.get(columnIndex), rowIndex); + } + + @Override + public String getColumnName(int column) { + return bounds.get(column); + } + + @Override + public Class getColumnClass(int columnIndex) { + return Double.class; + } + }; + } + } + return null; + } + + /** + * + * @param csp + * @param mkey + * @param mval + * @return the list of property keys that have a meta data value. + */ + public static List keysByMeta(CSProperties csp, String mkey, String mval) { + List l = new ArrayList(); + for (String key : csp.keySet()) { + if (csp.getInfo(key).keySet().contains(mkey)) { + String role = csp.getInfo(key).get(mkey); + if (role.equals(mval)) { + l.add(key); + } + } + } + return l; + } + + public static List keysForBounds(CSProperties csp, int boundCount) { + List l = new ArrayList(); + for (String key : csp.keySet()) { + if (csp.getInfo(key).keySet().contains("bound")) { + String bound = csp.getInfo(key).get("bound"); + StringTokenizer t = new StringTokenizer(bound, ","); + if (t.countTokens() == boundCount) { + l.add(key); + } + } + } + return l; + } + + public static List keysByNotMeta(CSProperties csp, String mkey) { + List l = new ArrayList(); + for (String key : csp.keySet()) { + if (!csp.getInfo(key).keySet().contains(mkey)) { + l.add(key); + } + } + return l; + } + + + public static Date[] getColumnDateValues(CSTable t, String columnName) { + int col = columnIndex(t, columnName); + if (col == -1) { + throw new IllegalArgumentException("No such column: " + columnName); + } + + Conversions.Params p = new Conversions.Params(); + p.add(String.class, Date.class, lookupDateFormat(t, col)); + + List l = new ArrayList(); + for (String[] s : t.rows()) { + l.add(Conversions.convert(s[col], Date.class, p)); + } + return l.toArray(new Date[0]); + } + + /** + * Get a column as an int array. + * + * @param t + * @param columnName + * @return the column data as doubles. + */ + public static Double[] getColumnDoubleValues(CSTable t, String columnName) { + int col = columnIndex(t, columnName); + if (col == -1) { + throw new IllegalArgumentException("No such column: " + columnName); + } + List l = new ArrayList(); + for (String[] s : t.rows()) { + l.add(new Double(s[col])); + } + return l.toArray(new Double[0]); + } + + /** + * Get a value as date. + * + * @param p + * @param key + * @return a property as Date + * @throws java.text.ParseException + */ + public static Date getDate(CSProperties p, String key) throws ParseException { + String val = p.get(key).toString(); + if (val == null) { + throw new IllegalArgumentException(key); + } + String f = p.getInfo(key).get(KEY_FORMAT); + DateFormat fmt = new SimpleDateFormat(f == null ? ISO8601 : f); + return fmt.parse(val); + } + + /** + * Get a value as integer. + * @param p + * @param key + * @return a property value as integer. + * @throws java.text.ParseException + */ + public static int getInt(CSProperties p, String key) throws ParseException { + String val = p.get(key).toString(); + if (val == null) { + throw new IllegalArgumentException(key); + } + return Integer.parseInt(val); + } + + public static void save(CSProperties csp, File f, String title) { + PrintWriter w = null; + try { + if (csp instanceof BasicCSProperties) { + BasicCSProperties c = (BasicCSProperties) csp; + c.setName(title); + } + w = new PrintWriter(f); + DataIO.print(csp, w); + w.close(); + } catch (FileNotFoundException ex) { + ex.printStackTrace(); + } finally { + if (w != null) { + w.close(); + } + } + } + + /** + * Print CSProperties. + * @param props the Properties to print + * @param out the output writer to print to. + */ + public static void print(CSProperties props, PrintWriter out) { + out.println(PROPERTIES + "," + CSVParser.printLine(props.getName())); + for (String key : props.getInfo().keySet()) { + out.println(" " + CSVParser.printLine(key, props.getInfo().get(key))); + } + out.println(); + for (String key : props.keySet()) { + out.println(PROPERTY + "," + CSVParser.printLine(key, props.get(key).toString())); + for (String key1 : props.getInfo(key).keySet()) { + out.println(" " + CSVParser.printLine(key1, props.getInfo(key).get(key1))); + } + out.println(); + } + out.println(); + out.flush(); + } + + public static void print(Map props, String header, PrintWriter out) { + out.println(PROPERTIES + "," + header); + out.println(); + for (String key : props.keySet()) { + out.println(PROPERTY + "," + CSVParser.printLine(key, props.get(key).toString())); + } + out.println(); + out.flush(); + } + + /** + * Print a CSTable to a PrintWriter + * + * @param table the table to print + * @param out the writer to write to + */ + public static void print(CSTable table, PrintWriter out) { + out.println(TABLE + "," + CSVParser.printLine(table.getName())); + for (String key : table.getInfo().keySet()) { + out.println(CSVParser.printLine(key, table.getInfo().get(key))); + } + if (table.getColumnCount() < 1) { + out.flush(); + return; + } + out.print(HEADER); + for (int i = 1; i <= table.getColumnCount(); i++) { + out.print("," + table.getColumnName(i)); + } + out.println(); + Map m = table.getColumnInfo(1); + for (String key : m.keySet()) { + out.print(key); + for (int i = 1; i <= table.getColumnCount(); i++) { + out.print("," + table.getColumnInfo(i).get(key)); + } + out.println(); + } + for (String[] row : table.rows()) { + for (int i = 1; i < row.length; i++) { + out.print("," + row[i]); + } + out.println(); + } + out.println(); + out.flush(); + } + + /** Saves a table to a file. + * + * @param table the table to save + * @param file the file to store it in (overwritten, if exists) + * @throws IOException + */ + public static void save(CSTable table, File file) throws IOException { + PrintWriter w = new PrintWriter(file); + print(table, w); + w.close(); + } + + /** + * Parse properties from a reader + * + * @param r the Reader + * @param name the name of the properties + * @return properties from a file. + * @throws java.io.IOException + */ + public static CSProperties properties(Reader r, String name) throws IOException { + return new CSVProperties(r, name); + } + + /** + * Create a CSProperty from an array of reader. + * @param r + * @param name + * @return merged properties. + * @throws java.io.IOException + */ + public static CSProperties properties(Reader[] r, String name) throws IOException { + CSVProperties p = new CSVProperties(r[0], name); + for (int i = 1; i < r.length; i++) { + CSVParser csv = new CSVParser(r[i], CSVStrategy.DEFAULT_STRATEGY); + locate(csv, name, PROPERTIES, PROPERTIES1); + p.readProps(csv); + r[i].close(); + } + return p; + } + + /** + * Merges two Properties, respects permissions + * + * @param base + * @param overlay + */ + public static void merge(CSProperties base, CSProperties overlay) { + for (String key : overlay.keySet()) { + if (base.getInfo(key).containsKey("public")) { + base.put(key, overlay.get(key)); + } else { + throw new IllegalArgumentException("Not public: " + key); + } + } + } + + /** + * Convert CSProperties into Properties + * @param p + * @return the Properties. + */ + public static Properties properties(CSProperties p) { + Properties pr = new Properties(); + pr.putAll(p); + return pr; + } + + /** + * Convert Properties to CSProperties. + * @param p the Properties + * @return CSProperties + */ + public static CSProperties properties(Properties p) { + return new BasicCSProperties(p); + } + + /** Convert from a Map to properties. + * + * @param p the source map + * @return CSProperties + */ + public static CSProperties properties(Map p) { + return new BasicCSProperties(p); + } + + /** Create Empty properties + * @return get some empty properties. + */ + public static CSProperties properties() { + return new BasicCSProperties(); + } + + /** Parse the first table from a file + * + * @param file the file to parse + * @return the CSTable + * @throws IOException + */ + public static CSTable table(File file) throws IOException { + return table(file, null); + } + + /** Parse a table from a given File. + * @param file + * @param name + * @return a CSTable. + * @throws java.io.IOException + */ + public static CSTable table(File file, String name) throws IOException { + return new FileTable(file, name); + } + + /** Parse a table from a Reader. Find the first table + * + * @param s the Reader to read from + * @return the CSTable + * @throws IOException + */ + public static CSTable table(String s) throws IOException { + return table(s, null); + } + + /** Parse a table from a Reader. + * + * @param s the Reader to read from + * @param name the name of the table + * @return the CSTable + * @throws IOException + */ + public static CSTable table(String s, String name) throws IOException { + return new StringTable(s, name); + } + + /** Opens the first table found at the URL + * + * @param url the URL + * @return the CSTable + * @throws IOException + */ + public static CSTable table(URL url) throws IOException { + return table(url, null); + } + + /** Create a CSTable from a URL source. + * + * @param url the table URL + * @param name the name of the table + * @return a new CSTable + * @throws IOException + */ + public static CSTable table(URL url, String name) throws IOException { + return new URLTable(url, name); + } + + /** Check if a column exist in table. + * + * @param table the table to check + * @param name the name of the column + * @return + */ + public static boolean columnExist(CSTable table, String name) { + for (int i = 1; i <= table.getColumnCount(); i++) { + if (table.getColumnName(i).startsWith(name)) { + return true; + } + } + return false; + } + + /** Gets a column index by name + * + * @param table The table to check + * @param name the column name + * @return the index of the column + */ + public static int columnIndex(CSTable table, String name) { + for (int i = 1; i <= table.getColumnCount(); i++) { + if (table.getColumnName(i).equals(name)) { + return i; + } + } + return -1; + } + + + /** Get the column indexes for a given column name. + * (e.g. use tmin to fetch tmin[0], tmin[1]...) + * @param table + * @param name + * @return + */ + public static int[] columnIndexes(CSTable table, String name) { + List l = new ArrayList(); + for (int i = 1; i <= table.getColumnCount(); i++) { + if (table.getColumnName(i).startsWith(name)) { + l.add(i); + } + } + if (l.isEmpty()) { + return null; + } + int[] idx = new int[l.size()]; + for (int i = 0; i < idx.length; i++) { + idx[i] = l.get(i); + } + return idx; + } + + public static List columnNames(CSTable table, String name) { + List l = new ArrayList(); + for (int i = 1; i <= table.getColumnCount(); i++) { + if (table.getColumnName(i).startsWith(name)) { + l.add(table.getColumnName(i)); + } + } + if (l.isEmpty()) { + throw new IllegalArgumentException("No column(s) '" + name + "' in table: " + table.getName()); + } + + return l; + } + + public static void rowStringValues(String row[], int[] idx, String[] vals) { + for (int i = 0; i < vals.length; i++) { + vals[i] = row[idx[i]]; + } + } + + public static double[] rowDoubleValues(String row[], int[] idx, double[] vals) { + for (int i = 0; i < vals.length; i++) { + vals[i] = Double.parseDouble(row[idx[i]]); + } + return vals; + } + + public static double[] rowDoubleValues(String row[], int[] idx) { + double[] vals = new double[idx.length]; + return rowDoubleValues(row, idx, vals); + } + + /** Extract the columns and create another table. + * + * @param table the table + * @param colName the names of the columns to extract. + * @return A new Table with the Columns. + */ + public static CSTable extractColumns(CSTable table, String... colNames) { + int[] idx = {}; + + for (String name : colNames) { + idx = add(idx, columnIndexes(table, name)); + } + + if (idx.length == 0) { + throw new IllegalArgumentException("No such column names: " + Arrays.toString(colNames)); + } + + List cols = new ArrayList(); + for (String name : colNames) { + cols.addAll(columnNames(table, name)); + } + + MemoryTable t = new MemoryTable(); + t.setName(table.getName()); + t.getInfo().putAll(table.getInfo()); + + // header + t.setColumns(cols.toArray(new String[0])); + for (int i = 0; i < idx.length; i++) { + t.getColumnInfo(i + 1).putAll(table.getColumnInfo(idx[i])); + } + + String[] r = new String[idx.length]; + for (String[] row : table.rows()) { + rowStringValues(row, idx, r); + t.addRow((Object[]) r); + } + + return t; + } + + public static String diff(double[] o, double[] p) { + String status = "ok."; + if (o.length != p.length) { + status = "o.length != p.length"; + } else { + for (int i = 0; i < o.length; i++) { + if (o[i] != p[i]) { + status += "error"; + } + } + } + return status; + } + + public static CSTable asTable(CSProperties p, String dim) { + List arrays = DataIO.keysByMeta(p, "bound", dim); + if (arrays.isEmpty()) { + // nothing is bound to this + return null; + } + int len = 0; + List m = new ArrayList(); + for (String arr : arrays) { + String[] d = Conversions.convert(p.get(arr), String[].class); + len = d.length; + m.add(d); + } + MemoryTable table = new MemoryTable(); + table.getInfo().put("info", "Parameter bound by " + dim); + table.setName(dim); + table.setColumns(arrays.toArray(new String[m.size()])); + String row[] = new String[m.size()]; + for (int i = 0; i < len; i++) { + for (int j = 0; j < m.size(); j++) { + row[j] = m.get(j)[i].trim(); + } + table.addRow((Object[]) row); + } + return table; + } + + public static CSProperties fromTable(CSTable t) { + BasicCSProperties p = new BasicCSProperties(); + + Map> table = new HashMap>(); + for (int i = 1; i <= t.getColumnCount(); i++) { + table.put(i, new ArrayList()); + } + + for (String[] row : t.rows()) { + for (int i = 1; i < row.length; i++) { + table.get(i).add(row[i]); + } + } + + Map m = new HashMap(); + m.put("bound", t.getName()); + + for (int i = 1; i <= t.getColumnCount(); i++) { + String name = t.getColumnName(i); + p.put(name, table.get(i).toString().replace('[', '{').replace(']', '}')); + p.setInfo(name, m); + } + return p; + } + + /** Find all table names in a file. + * + * @param f the file to search in + * @return a list of table names found in that file. + */ + public static List tables(File f) throws IOException { + return findCSVElements(f, "@T"); + } + + /** Find all properties section names in a file. + * + * @param f the file to search in + * @return a list of section names found in that file. + */ + public static List properties(File f) throws IOException { + return findCSVElements(f, "@S"); + } + + static List findCSVElements(File f, String tag) throws IOException { + List l = new ArrayList(); + Reader r = new FileReader(f); + CSVParser csv = new CSVParser(r, CSVStrategy.DEFAULT_STRATEGY); + String[] line = null; + while ((line = csv.getLine()) != null) { + if (line.length == 2 && line[0].equals(tag)) { + l.add(line[1]); + } + } + r.close(); + return l; + } + + ///////////////////////////////////////////////////////////////////////////// + /// private + private static int[] add(int[] a, int[] b) { + int[] c = new int[a.length + b.length]; + System.arraycopy(a, 0, c, 0, a.length); + System.arraycopy(b, 0, c, a.length, b.length); + return c; + } + + private static String locate(CSVParser csv, String name, String... type) throws IOException { + if (name == null) { + // match anything + name = ".+"; + } + Pattern p = Pattern.compile(name); + String[] line = null; + while ((line = csv.getLine()) != null) { + if (line[0].startsWith(COMMENT) || !line[0].startsWith(P)) { +// if (line.length != 2 || line[0].startsWith(COMMENT) || !line[0].startsWith(P)) { + continue; + } + for (String s : type) { + if (line[0].equalsIgnoreCase(s) && p.matcher(line[1].trim()).matches()) { + return line[1]; + } + } + } + throw new IllegalArgumentException("Not found : " + type + ", " + name); + } + + @SuppressWarnings("serial") + private static class BasicCSProperties extends LinkedHashMap implements CSProperties { + + String name = ""; + Map> info = new HashMap>(); + + BasicCSProperties(Properties p) { + this(); + for (Object key : p.keySet()) { + put(key.toString(), p.getProperty(key.toString())); + } + } + + BasicCSProperties(Map p) { + this(); + for (String key : p.keySet()) { + put(key, p.get(key)); + } + } + + BasicCSProperties() { + info.put(ROOT_ANN, new HashMap()); + } + + @Override + public void putAll(CSProperties p) { + super.putAll(p); + for (String s : p.keySet()) { + Map m = p.getInfo(s); + setInfo(s, m); + } + getInfo().putAll(p.getInfo()); + } + + @Override + public String getName() { + return name; + } + + @Override + public void setName(String name) { + this.name = name; + } + + @Override + public Map getInfo(String property) { + Map im = info.get(property); + return (im == null) ? NOINFO : im; + } + + @Override + public Map getInfo() { + return getInfo(ROOT_ANN); + } + + @Override + public void setInfo(String propertyname, Map inf) { + info.put(propertyname, inf); + } + + @Override + public String get(Object key) { + Object val = super.get(key.toString()); + return resolve(val != null ? val.toString() : null); + } + + /** + * Resolve variable substitution. + * + * @P, dir, "/tmp/input" + * @P, file, "${dir}/test.txt" + * + * - The referenced key has to be in the same properties set. + * - there could be a chain of references, however, no recursion + * testing is implemented. + * + * @param str + * @return + */ + private String resolve(String str) { + if (str != null && str.contains("${")) { + Matcher ma = null; + while ((ma = varPattern.matcher(str)).find()) { + String key = ma.group(1); + String val = get(key); + if (val == null) { + throw new IllegalArgumentException("value substitution failed for " + key); + } + Pattern repl = Pattern.compile("\\$\\{" + key + "\\}"); + str = repl.matcher(str).replaceAll(val); + } + } + return str; + } + } + + /** + * Note: to keep the order of properties, it is sub-classed from + * LinkedHashMap + */ + @SuppressWarnings("serial") + private static class CSVProperties extends BasicCSProperties implements CSProperties { + + CSVProperties(Reader reader, String name) throws IOException { + super(); + CSVParser csv = new CSVParser(reader, CSVStrategy.DEFAULT_STRATEGY); + this.name = locate(csv, name, PROPERTIES, PROPERTIES1); + readProps(csv); + reader.close(); + } + + private void readProps(CSVParser csv) throws IOException { + Map propInfo = null; + String[] line = null; + String propKey = ROOT_ANN; + while ((line = csv.getLine()) != null + && !line[0].equalsIgnoreCase(PROPERTIES) + && !line[0].equalsIgnoreCase(PROPERTIES1) + && !line[0].equalsIgnoreCase(TABLE) + && !line[0].equalsIgnoreCase(TABLE1)) { + if (line[0].startsWith(COMMENT) || line[0].isEmpty()) { + continue; + } + if (line[0].equalsIgnoreCase(PROPERTY) || line[0].equalsIgnoreCase(PROPERTY1)) { + if (line.length < 2) { + throw new IOException("Expected property name in line " + csv.getLineNumber()); + } + propKey = line[1]; + // maybe there is no value for the property, so we add null + put(propKey, (line.length == 3) ? line[2] : null); + propInfo = null; + } else { + if (propInfo == null) { + info.put(propKey, propInfo = new HashMap()); + } + propInfo.put(line[0], (line.length > 1) ? line[1] : null); + } + } + } + } + + /** + * CSVTable implementation + */ + private static abstract class CSVTable implements CSTable { + + Map> info = new HashMap>(); + String name; + int colCount; + String columnNames[]; + int firstline; + CSVStrategy strategy = CSVStrategy.DEFAULT_STRATEGY; + + protected abstract Reader newReader(); + + protected void init(String tableName) throws IOException { + CSVParser csv = new CSVParser(newReader(), strategy); + name = locate(csv, tableName, TABLE, TABLE1); + firstline = readTableHeader(csv); + } + + private void skip0(CSVParser csv, int lines) { + try { + csv.skipLines(lines); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } + + private String[] readRow(CSVParser csv) { + try { + String[] r = csv.getLine(); + return r; + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } + + /** + * Gets a row iterator. + * @return + */ + @Override + public Iterable rows() { + return rows(0); + } + + /** + * Gets a row iterator that starts at a give row. + * @param startRow the row to start parsing. + * @return + */ + @Override + public Iterable rows(final int startRow) { + if (startRow < 0) { + throw new IllegalArgumentException("startRow<0"); + } + + return new Iterable() { + + @Override + public Iterator iterator() { + final Reader r = newReader(); + final CSVParser csv = new CSVParser(r, strategy); + + skip0(csv, firstline); + skip0(csv, startRow); + + return new TableIterator() { + + String[] line = readRow(csv); + int row = startRow; + + public void close() throws IOException { + r.close(); + } + + @Override + public boolean hasNext() { + boolean hn = (line != null && line.length > 1 && line[0].isEmpty()); + if (!hn) { + try { + r.close(); + } catch (IOException E) { + } + } + return hn; + } + + @Override + public String[] next() { + String[] s = line; + s[0] = Integer.toString(++row); + line = readRow(csv); + return s; + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + + @Override + public void skip(int n) { + if (n < 1) { + throw new IllegalArgumentException("n<1 : " + n); + } + skip0(csv, n - 1); + line = readRow(csv); + row += n; + } + }; + } + }; + } + + private int readTableHeader(CSVParser csv) throws IOException { + Map tableInfo = new LinkedHashMap(); + info.put(-1, tableInfo); + String[] line = null; + while ((line = csv.getLine()) != null && !line[0].equalsIgnoreCase(HEADER)) { + if (line[0].startsWith(COMMENT)) { + continue; + } + tableInfo.put(line[0], line.length > 1 ? line[1] : null); + } + if (line == null) { + throw new IOException("Invalid table structure."); + } + colCount = line.length - 1; + columnNames = new String[line.length]; + columnNames[0] = "ROW"; + for (int i = 1; i < line.length; i++) { + columnNames[i] = line[i]; + info.put(i, new LinkedHashMap()); + } + while ((line = csv.getLine()) != null && !line[0].isEmpty()) { + if (line[0].startsWith(COMMENT)) { + continue; + } + for (int i = 1; i < line.length; i++) { + info.get(i).put(line[0], line[i]); + } + } + assert (line != null && line[0].isEmpty()); + return csv.getLineNumber() - 1; + } + + @Override + public String getName() { + return name; + } + + @Override + public Map getInfo() { + return getColumnInfo(-1); + } + + @Override + public Map getColumnInfo(int column) { + return Collections.unmodifiableMap(info.get(column)); + } + + @Override + public int getColumnCount() { + return colCount; + } + + @Override + public String getColumnName(int column) { + return columnNames[column]; + } + } + + private static class FileTable extends CSVTable { + + File f; + + FileTable(File f, String name) throws IOException { + this.f = f; + init(name); + } + + @Override + protected Reader newReader() { + try { + return new FileReader(f); + } catch (FileNotFoundException ex) { + throw new RuntimeException(ex); + } + } + } + + private static class StringTable extends CSVTable { + + String s; + + StringTable(String s, String name) throws IOException { + this.s = s; + init(name); + } + + @Override + protected Reader newReader() { + return new StringReader(s); + } + } + + private static class URLTable extends CSVTable { + + URL s; + + URLTable(URL s, String name) throws IOException { + this.s = s; + init(name); + } + + @Override + protected Reader newReader() { + try { + return new InputStreamReader(s.openStream()); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } + } + + public static void main(String[] args) throws IOException { +// String table = "@T, nhru\n" +// + "createdby, od\n" +// + "date, today\n" +// + "@H, hru_coeff, area, me\n" +// + "type, Double, Double, Double\n" +// + ",1.3,3.5,5.6\n" +// + ",1.3,3.5,5.6\n" +// + ",1.3,3.5,5.6\n" +// + "\n"; +// +// CSTable t = table(table, "nhru"); +// print(t, new PrintWriter(System.out)); +// +// CSProperties csp = fromTable(t); +// print(csp, new PrintWriter(System.out)); + } +} diff --git a/oms3/src/main/java/oms3/io/DatedData.java b/oms3/src/main/java/oms3/io/DatedData.java index 00a19da92..8f216433d 100644 --- a/oms3/src/main/java/oms3/io/DatedData.java +++ b/oms3/src/main/java/oms3/io/DatedData.java @@ -1,262 +1,262 @@ -/* - * $Id:$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.io; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -public class DatedData { - // holds date and data arrays so can fill from data then compute things - // like mean monthly based on date - - // Data TimeSteps - // kmolson TODO- move to SimConst? - public static final int Daily = 0; - public static final int MeanMonthly = 1; - public static final int MonthlyMean = 2; - public static final int AnnualMean = 3; - public static final int PeriodMedian = 4; - public static final int PeriodStandardDeviation = 5; - public static final int PeriodMininum = 6; - public static final int PeriodMaximum = 7; - - private List dates = new ArrayList(); - private List datas = new ArrayList(); - - - public DatedData() { - } - - public DatedData(Date date, Double data){ - dates.add(date); - datas.add(data); - } - - public void add(Date date, Double data) { - dates.add(date); - datas.add(data); - } - - public void addDate(Date date){ - dates.add(date); - } - - public void addData(Double data){ - datas.add(data); - } - - public Date getDate(int i) { - return dates.get(i); - } - public Double getData(int i) { - return datas.get(i); - } - - public int getNumDates() { - return dates.size(); - } - public int getNumData() { - return datas.size(); - } - - - public void writeDate(int i, Date date) { - dates.set(i, date); - } - public void writeData(int i, Double data) { - datas.set(i, data); - } - - - - // --------------------------------------------- - // TimeStep functions for data - // --------------------------------------------- - - - // --------------------------------------------- - public double[] getMeanMonthly () { - // --------------------------------------------- - // Provides a per-month mean of data (across all years for that month). - // e.g. 12 means returned- one for all days in January in all years, - // one for all dats in Feb in all years, etc. - - // Advance through all data, and sum each month's value. - int monthlyCount[]; //the number of entries per month - double monthlySum[]; //the sum of the data per month - double meanMonthly[]; // The mean value per month - - monthlyCount = new int[12]; // Just need count and sum for 12 months - monthlySum = new double[12]; - meanMonthly = new double[12]; - - // Init data to clear. - for (int i=0; i<12; i++) { - monthlyCount[i] = 0; - monthlySum[i] = 0; - meanMonthly[i] = 0; - } - - int totalCount = 0; - - for (int i=0; i this.getNumDates()) {throw new IllegalArgumentException("No date for data #" + i);} - - // Get month data out of date. - month = date.getMonth(); - - if (month > 11) {throw new IllegalArgumentException("Month number data out of range: " + month);} - - // Add to appropriate sum. - monthlyCount[month]++; - monthlySum[month] +=data; - totalCount++; - } - - if (totalCount == 0) {throw new IllegalArgumentException("No data used in Mean Montly calculation.");} - - for (int i=0; i<12; i++) { - meanMonthly[i] = monthlySum[i]/monthlyCount[i]; - } - - return meanMonthly; - - } - - - // --------------------------------------------- - public double[] getMonthlyMean () { - // --------------------------------------------- - // Provides a mean for days in each month/year pair. (12 months x N years of data) - // e.g. (12 x N years) of means returned- one for all days in January in 1990, - // one for all dats in Feb in 1990, ... one for all days in January 1991, etc. - // - // Sum the daily data until the month/year changes then - // store the mean. - - List monthlyMean = new ArrayList(); - - - int totalCount = 0; - int previousYear = -1; - int previousMonth = -1; - boolean currentValid = false; - - for (int i=0; i this.getNumDates()) {throw new IllegalArgumentException("No matching date info for data #" + i);} - - // Get month data out of date. - month = date.getMonth(); // kmolson TODO- use calendar instead? - year = date.getYear(); - - if (month > 11) {throw new IllegalArgumentException("Month number data out of range: " + month);} - - // Check if month or year advances. - - // This assumes data is in Chronological order. If not, we need to save and - // scan back for matching month/year pairs already written. - // Could add min and max year to data fields of DatedData class and allocate based on that. - // I was just worried about access efficiency... if data is in Chronological order, - // we don't need to worry about it, not keeping track is faster. - - boolean sameMonthYear = (month == previousMonth) && (year==previousYear); - - if (sameMonthYear) { - // Same month/year pair, so update current entry. - currentSum += data; - currentCount++; - currentValid = true; - } - - boolean isLastData = i==(this.getNumData()-1); - if (currentValid && (!sameMonthYear || isLastData)) { - // If moving to new month or year, or it is the last data, add the mean to the result array. - if (currentValid) { - double currentMean = currentSum/currentCount; - monthlyMean.add(currentMean); - } - - // Set current to new data and a count of 1 - currentCount = 1; - currentSum = data; - - } - - previousMonth = month; - previousYear = year; - // Add to appropriate sum - totalCount++; - } - - if (totalCount == 0) {throw new IllegalArgumentException("No data used in Mean Monthly calculation.");} - - // Assign MonthlyMean data to output array. - double[] arr = new double[monthlyMean.size()]; - for (int i=0; i < monthlyMean.size(); i++) { - arr[i] = monthlyMean.get(i); - } - return arr; - } - - - - public double[] getOriginalData() { - // Get source data as is, without any date-based computation. - double[] originalData = new double[this.datas.size()]; - return originalData; - } - public double[] getDailyData(){ - // kmoson TODO- Do we want to take the mean of the - // subdaily data if there is any, or is daily the mininum granularity? - double[] originalData = new double[this.datas.size()]; - return originalData; - } - - - public double[] computeData(int TimeStep) { - // kmolson- timestep originally comes from OF timestep in .luca file. - switch (TimeStep) { - case Daily : { return this.getDailyData(); } - case MeanMonthly : { return this.getMeanMonthly(); } - case MonthlyMean : { return this.getMonthlyMean(); } - default : return this.getOriginalData(); } - } -} - - - - +/* + * $Id:$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.io; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class DatedData { + // holds date and data arrays so can fill from data then compute things + // like mean monthly based on date + + // Data TimeSteps + // kmolson TODO- move to SimConst? + public static final int Daily = 0; + public static final int MeanMonthly = 1; + public static final int MonthlyMean = 2; + public static final int AnnualMean = 3; + public static final int PeriodMedian = 4; + public static final int PeriodStandardDeviation = 5; + public static final int PeriodMininum = 6; + public static final int PeriodMaximum = 7; + + private List dates = new ArrayList(); + private List datas = new ArrayList(); + + + public DatedData() { + } + + public DatedData(Date date, Double data){ + dates.add(date); + datas.add(data); + } + + public void add(Date date, Double data) { + dates.add(date); + datas.add(data); + } + + public void addDate(Date date){ + dates.add(date); + } + + public void addData(Double data){ + datas.add(data); + } + + public Date getDate(int i) { + return dates.get(i); + } + public Double getData(int i) { + return datas.get(i); + } + + public int getNumDates() { + return dates.size(); + } + public int getNumData() { + return datas.size(); + } + + + public void writeDate(int i, Date date) { + dates.set(i, date); + } + public void writeData(int i, Double data) { + datas.set(i, data); + } + + + + // --------------------------------------------- + // TimeStep functions for data + // --------------------------------------------- + + + // --------------------------------------------- + public double[] getMeanMonthly () { + // --------------------------------------------- + // Provides a per-month mean of data (across all years for that month). + // e.g. 12 means returned- one for all days in January in all years, + // one for all dats in Feb in all years, etc. + + // Advance through all data, and sum each month's value. + int monthlyCount[]; //the number of entries per month + double monthlySum[]; //the sum of the data per month + double meanMonthly[]; // The mean value per month + + monthlyCount = new int[12]; // Just need count and sum for 12 months + monthlySum = new double[12]; + meanMonthly = new double[12]; + + // Init data to clear. + for (int i=0; i<12; i++) { + monthlyCount[i] = 0; + monthlySum[i] = 0; + meanMonthly[i] = 0; + } + + int totalCount = 0; + + for (int i=0; i this.getNumDates()) {throw new IllegalArgumentException("No date for data #" + i);} + + // Get month data out of date. + month = date.getMonth(); + + if (month > 11) {throw new IllegalArgumentException("Month number data out of range: " + month);} + + // Add to appropriate sum. + monthlyCount[month]++; + monthlySum[month] +=data; + totalCount++; + } + + if (totalCount == 0) {throw new IllegalArgumentException("No data used in Mean Montly calculation.");} + + for (int i=0; i<12; i++) { + meanMonthly[i] = monthlySum[i]/monthlyCount[i]; + } + + return meanMonthly; + + } + + + // --------------------------------------------- + public double[] getMonthlyMean () { + // --------------------------------------------- + // Provides a mean for days in each month/year pair. (12 months x N years of data) + // e.g. (12 x N years) of means returned- one for all days in January in 1990, + // one for all dats in Feb in 1990, ... one for all days in January 1991, etc. + // + // Sum the daily data until the month/year changes then + // store the mean. + + List monthlyMean = new ArrayList(); + + + int totalCount = 0; + int previousYear = -1; + int previousMonth = -1; + boolean currentValid = false; + + for (int i=0; i this.getNumDates()) {throw new IllegalArgumentException("No matching date info for data #" + i);} + + // Get month data out of date. + month = date.getMonth(); // kmolson TODO- use calendar instead? + year = date.getYear(); + + if (month > 11) {throw new IllegalArgumentException("Month number data out of range: " + month);} + + // Check if month or year advances. + + // This assumes data is in Chronological order. If not, we need to save and + // scan back for matching month/year pairs already written. + // Could add min and max year to data fields of DatedData class and allocate based on that. + // I was just worried about access efficiency... if data is in Chronological order, + // we don't need to worry about it, not keeping track is faster. + + boolean sameMonthYear = (month == previousMonth) && (year==previousYear); + + if (sameMonthYear) { + // Same month/year pair, so update current entry. + currentSum += data; + currentCount++; + currentValid = true; + } + + boolean isLastData = i==(this.getNumData()-1); + if (currentValid && (!sameMonthYear || isLastData)) { + // If moving to new month or year, or it is the last data, add the mean to the result array. + if (currentValid) { + double currentMean = currentSum/currentCount; + monthlyMean.add(currentMean); + } + + // Set current to new data and a count of 1 + currentCount = 1; + currentSum = data; + + } + + previousMonth = month; + previousYear = year; + // Add to appropriate sum + totalCount++; + } + + if (totalCount == 0) {throw new IllegalArgumentException("No data used in Mean Monthly calculation.");} + + // Assign MonthlyMean data to output array. + double[] arr = new double[monthlyMean.size()]; + for (int i=0; i < monthlyMean.size(); i++) { + arr[i] = monthlyMean.get(i); + } + return arr; + } + + + + public double[] getOriginalData() { + // Get source data as is, without any date-based computation. + double[] originalData = new double[this.datas.size()]; + return originalData; + } + public double[] getDailyData(){ + // kmoson TODO- Do we want to take the mean of the + // subdaily data if there is any, or is daily the mininum granularity? + double[] originalData = new double[this.datas.size()]; + return originalData; + } + + + public double[] computeData(int TimeStep) { + // kmolson- timestep originally comes from OF timestep in .luca file. + switch (TimeStep) { + case Daily : { return this.getDailyData(); } + case MeanMonthly : { return this.getMeanMonthly(); } + case MonthlyMean : { return this.getMonthlyMean(); } + default : return this.getOriginalData(); } + } +} + + + + \ No newline at end of file diff --git a/oms3/src/main/java/oms3/io/ExtendedBufferedReader.java b/oms3/src/main/java/oms3/io/ExtendedBufferedReader.java index 1a01d0def..c91a4514c 100644 --- a/oms3/src/main/java/oms3/io/ExtendedBufferedReader.java +++ b/oms3/src/main/java/oms3/io/ExtendedBufferedReader.java @@ -1,317 +1,317 @@ -/* - * $Id:$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.io; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.Reader; - -/** - * ExtendedBufferedReader - * - * A special reader decorater which supports more - * sophisticated access to the underlying reader object. - * - * In particular the reader supports a look-ahead option, - * which allows you to see the next char returned by - * next(). - * Furthermore the skip-method supports skipping until - * (but excluding) a given char. Similar functionality - * is supported by the reader as well. - * - */ -class ExtendedBufferedReader extends BufferedReader { - - /** the end of stream symbol */ - public static final int END_OF_STREAM = -1; - /** undefined state for the lookahead char */ - public static final int UNDEFINED = -2; - /** the lookahead chars */ - private int lookaheadChar = UNDEFINED; - /** the last char returned */ - private int lastChar = UNDEFINED; - /** the line counter */ - private int lineCounter = 0; - private CharBuffer line = new CharBuffer(); - - /** - * Created extended buffered reader using default buffer-size - * - */ - public ExtendedBufferedReader(Reader r) { - super(r); - /* note uh: do not fetch the first char here, - * because this might block the method! - */ - } - - /** - * Create extended buffered reader using the given buffer-size - */ - public ExtendedBufferedReader(Reader r, int bufSize) { - super(r, bufSize); - /* note uh: do not fetch the first char here, - * because this might block the method! - */ - } - - /** - * Reads the next char from the input stream. - * @return the next char or END_OF_STREAM if end of stream has been reached. - */ - @Override - public int read() throws IOException { - // initalize the lookahead - if (lookaheadChar == UNDEFINED) { - lookaheadChar = super.read(); - } - lastChar = lookaheadChar; - if (super.ready()) { - lookaheadChar = super.read(); - } else { - lookaheadChar = UNDEFINED; - } - if (lastChar == '\n') { - lineCounter++; - } - return lastChar; - } - - /** - * Returns the last read character again. - * - * @return the last read char or UNDEFINED - */ - public int readAgain() { - return lastChar; - } - - /** - * Non-blocking reading of len chars into buffer buf starting - * at bufferposition off. - * - * performs an iteratative read on the underlying stream - * as long as the following conditions hold: - * - less than len chars have been read - * - end of stream has not been reached - * - next read is not blocking - * - * @return nof chars actually read or END_OF_STREAM - */ - public int read(char[] buf, int off, int len) throws IOException { - // do not claim if len == 0 - if (len == 0) { - return 0; - } - - // init lookahead, but do not block !! - if (lookaheadChar == UNDEFINED) { - if (ready()) { - lookaheadChar = super.read(); - } else { - return -1; - } - } - // 'first read of underlying stream' - if (lookaheadChar == -1) { - return -1; - } - // continue until the lookaheadChar would block - int cOff = off; - while (len > 0 && ready()) { - if (lookaheadChar == -1) { - // eof stream reached, do not continue - return cOff - off; - } else { - buf[cOff++] = (char) lookaheadChar; - if (lookaheadChar == '\n') { - lineCounter++; - } - lastChar = lookaheadChar; - lookaheadChar = super.read(); - len--; - } - } - return cOff - off; - } - - /** - * Reads all characters up to (but not including) the given character. - * - * @param c the character to read up to - * @return the string up to the character c - * @throws IOException - */ - public String readUntil(char c) throws IOException { - if (lookaheadChar == UNDEFINED) { - lookaheadChar = super.read(); - } - line.clear(); // reuse - while (lookaheadChar != c && lookaheadChar != END_OF_STREAM) { - line.append((char) lookaheadChar); - if (lookaheadChar == '\n') { - lineCounter++; - } - lastChar = lookaheadChar; - lookaheadChar = super.read(); - } - return line.toString(); - } - - /** - * @return A String containing the contents of the line, not - * including any line-termination characters, or null - * if the end of the stream has been reached - */ - public String readLine() throws IOException { - - if (lookaheadChar == UNDEFINED) { - lookaheadChar = super.read(); - } - - line.clear(); //reuse - - // return null if end of stream has been reached - if (lookaheadChar == END_OF_STREAM) { - return null; - } - // do we have a line termination already - char laChar = (char) lookaheadChar; - if (laChar == '\n' || laChar == '\r') { - lastChar = lookaheadChar; - lookaheadChar = super.read(); - // ignore '\r\n' as well - if ((char) lookaheadChar == '\n') { - lastChar = lookaheadChar; - lookaheadChar = super.read(); - } - lineCounter++; - return line.toString(); - } - - // create the rest-of-line return and update the lookahead - line.append(laChar); - String restOfLine = super.readLine(); // TODO involves copying - lastChar = lookaheadChar; - lookaheadChar = super.read(); - if (restOfLine != null) { - line.append(restOfLine); - } - lineCounter++; - return line.toString(); - } - - /** - * Skips char in the stream - * - * ATTENTION: invalidates the line-counter !!!!! - * - * @return nof skiped chars - */ - public long skip(long n) throws IllegalArgumentException, IOException { - - if (lookaheadChar == UNDEFINED) { - lookaheadChar = super.read(); - } - - // illegal argument - if (n < 0) { - throw new IllegalArgumentException("negative argument not supported"); - } - - // no skipping - if (n == 0 || lookaheadChar == END_OF_STREAM) { - return 0; - } - - // skip and reread the lookahead-char - long skiped = 0; - if (n > 1) { - skiped = super.skip(n - 1); - } - lookaheadChar = super.read(); - // fixme uh: we should check the skiped sequence for line-terminations... - lineCounter = Integer.MIN_VALUE; - return skiped + 1; - } - - /** - * Skips all chars in the input until (but excluding) the given char - * - * @param c - * @return - * @throws IllegalArgumentException - * @throws IOException - */ - public long skipUntil(char c) throws IllegalArgumentException, IOException { - if (lookaheadChar == UNDEFINED) { - lookaheadChar = super.read(); - } - long counter = 0; - while (lookaheadChar != c && lookaheadChar != END_OF_STREAM) { - if (lookaheadChar == '\n') { - lineCounter++; - } - lookaheadChar = super.read(); - counter++; - } - return counter; - } - - /** - * Returns the next char in the stream without consuming it. - * - * Remember the next char read by read(..) will always be - * identical to lookAhead(). - * - * @return the next char (without consuming it) or END_OF_STREAM - */ - public int lookAhead() throws IOException { - if (lookaheadChar == UNDEFINED) { - lookaheadChar = super.read(); - } - return lookaheadChar; - } - - /** - * Returns the nof line read - * ATTENTION: the skip-method does invalidate the line-number counter - * - * @return the current-line-number (or -1) - */ - public int getLineNumber() { - if (lineCounter > -1) { - return lineCounter; - } else { - return -1; - } - } - - @Override - public boolean markSupported() { - /* note uh: marking is not supported, cause we cannot - * see into the future... - */ - return false; - } -} +/* + * $Id:$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.io; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.Reader; + +/** + * ExtendedBufferedReader + * + * A special reader decorater which supports more + * sophisticated access to the underlying reader object. + * + * In particular the reader supports a look-ahead option, + * which allows you to see the next char returned by + * next(). + * Furthermore the skip-method supports skipping until + * (but excluding) a given char. Similar functionality + * is supported by the reader as well. + * + */ +class ExtendedBufferedReader extends BufferedReader { + + /** the end of stream symbol */ + public static final int END_OF_STREAM = -1; + /** undefined state for the lookahead char */ + public static final int UNDEFINED = -2; + /** the lookahead chars */ + private int lookaheadChar = UNDEFINED; + /** the last char returned */ + private int lastChar = UNDEFINED; + /** the line counter */ + private int lineCounter = 0; + private CharBuffer line = new CharBuffer(); + + /** + * Created extended buffered reader using default buffer-size + * + */ + public ExtendedBufferedReader(Reader r) { + super(r); + /* note uh: do not fetch the first char here, + * because this might block the method! + */ + } + + /** + * Create extended buffered reader using the given buffer-size + */ + public ExtendedBufferedReader(Reader r, int bufSize) { + super(r, bufSize); + /* note uh: do not fetch the first char here, + * because this might block the method! + */ + } + + /** + * Reads the next char from the input stream. + * @return the next char or END_OF_STREAM if end of stream has been reached. + */ + @Override + public int read() throws IOException { + // initalize the lookahead + if (lookaheadChar == UNDEFINED) { + lookaheadChar = super.read(); + } + lastChar = lookaheadChar; + if (super.ready()) { + lookaheadChar = super.read(); + } else { + lookaheadChar = UNDEFINED; + } + if (lastChar == '\n') { + lineCounter++; + } + return lastChar; + } + + /** + * Returns the last read character again. + * + * @return the last read char or UNDEFINED + */ + public int readAgain() { + return lastChar; + } + + /** + * Non-blocking reading of len chars into buffer buf starting + * at bufferposition off. + * + * performs an iteratative read on the underlying stream + * as long as the following conditions hold: + * - less than len chars have been read + * - end of stream has not been reached + * - next read is not blocking + * + * @return nof chars actually read or END_OF_STREAM + */ + public int read(char[] buf, int off, int len) throws IOException { + // do not claim if len == 0 + if (len == 0) { + return 0; + } + + // init lookahead, but do not block !! + if (lookaheadChar == UNDEFINED) { + if (ready()) { + lookaheadChar = super.read(); + } else { + return -1; + } + } + // 'first read of underlying stream' + if (lookaheadChar == -1) { + return -1; + } + // continue until the lookaheadChar would block + int cOff = off; + while (len > 0 && ready()) { + if (lookaheadChar == -1) { + // eof stream reached, do not continue + return cOff - off; + } else { + buf[cOff++] = (char) lookaheadChar; + if (lookaheadChar == '\n') { + lineCounter++; + } + lastChar = lookaheadChar; + lookaheadChar = super.read(); + len--; + } + } + return cOff - off; + } + + /** + * Reads all characters up to (but not including) the given character. + * + * @param c the character to read up to + * @return the string up to the character c + * @throws IOException + */ + public String readUntil(char c) throws IOException { + if (lookaheadChar == UNDEFINED) { + lookaheadChar = super.read(); + } + line.clear(); // reuse + while (lookaheadChar != c && lookaheadChar != END_OF_STREAM) { + line.append((char) lookaheadChar); + if (lookaheadChar == '\n') { + lineCounter++; + } + lastChar = lookaheadChar; + lookaheadChar = super.read(); + } + return line.toString(); + } + + /** + * @return A String containing the contents of the line, not + * including any line-termination characters, or null + * if the end of the stream has been reached + */ + public String readLine() throws IOException { + + if (lookaheadChar == UNDEFINED) { + lookaheadChar = super.read(); + } + + line.clear(); //reuse + + // return null if end of stream has been reached + if (lookaheadChar == END_OF_STREAM) { + return null; + } + // do we have a line termination already + char laChar = (char) lookaheadChar; + if (laChar == '\n' || laChar == '\r') { + lastChar = lookaheadChar; + lookaheadChar = super.read(); + // ignore '\r\n' as well + if ((char) lookaheadChar == '\n') { + lastChar = lookaheadChar; + lookaheadChar = super.read(); + } + lineCounter++; + return line.toString(); + } + + // create the rest-of-line return and update the lookahead + line.append(laChar); + String restOfLine = super.readLine(); // TODO involves copying + lastChar = lookaheadChar; + lookaheadChar = super.read(); + if (restOfLine != null) { + line.append(restOfLine); + } + lineCounter++; + return line.toString(); + } + + /** + * Skips char in the stream + * + * ATTENTION: invalidates the line-counter !!!!! + * + * @return nof skiped chars + */ + public long skip(long n) throws IllegalArgumentException, IOException { + + if (lookaheadChar == UNDEFINED) { + lookaheadChar = super.read(); + } + + // illegal argument + if (n < 0) { + throw new IllegalArgumentException("negative argument not supported"); + } + + // no skipping + if (n == 0 || lookaheadChar == END_OF_STREAM) { + return 0; + } + + // skip and reread the lookahead-char + long skiped = 0; + if (n > 1) { + skiped = super.skip(n - 1); + } + lookaheadChar = super.read(); + // fixme uh: we should check the skiped sequence for line-terminations... + lineCounter = Integer.MIN_VALUE; + return skiped + 1; + } + + /** + * Skips all chars in the input until (but excluding) the given char + * + * @param c + * @return + * @throws IllegalArgumentException + * @throws IOException + */ + public long skipUntil(char c) throws IllegalArgumentException, IOException { + if (lookaheadChar == UNDEFINED) { + lookaheadChar = super.read(); + } + long counter = 0; + while (lookaheadChar != c && lookaheadChar != END_OF_STREAM) { + if (lookaheadChar == '\n') { + lineCounter++; + } + lookaheadChar = super.read(); + counter++; + } + return counter; + } + + /** + * Returns the next char in the stream without consuming it. + * + * Remember the next char read by read(..) will always be + * identical to lookAhead(). + * + * @return the next char (without consuming it) or END_OF_STREAM + */ + public int lookAhead() throws IOException { + if (lookaheadChar == UNDEFINED) { + lookaheadChar = super.read(); + } + return lookaheadChar; + } + + /** + * Returns the nof line read + * ATTENTION: the skip-method does invalidate the line-number counter + * + * @return the current-line-number (or -1) + */ + public int getLineNumber() { + if (lineCounter > -1) { + return lineCounter; + } else { + return -1; + } + } + + @Override + public boolean markSupported() { + /* note uh: marking is not supported, cause we cannot + * see into the future... + */ + return false; + } +} diff --git a/oms3/src/main/java/oms3/util/Listeners.java b/oms3/src/main/java/oms3/util/Listeners.java index 44e946efa..339fcdb3b 100644 --- a/oms3/src/main/java/oms3/util/Listeners.java +++ b/oms3/src/main/java/oms3/util/Listeners.java @@ -1,163 +1,163 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.util; - -import java.util.EventObject; -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; -import oms3.Notification.*; - -import oms3.annotations.Range; -import oms3.annotations.Unit; - -/** - * Listener support classes. - * - * @author Olaf David - * @version $Id$ - */ -public class Listeners { - - /** - * Range checker. - * - * A range checker that checks for In/Out values tha have an additional - * "@Range" annotation. - */ - public static class RangeCheck implements Listener { - - @Override - public void notice(Type T, EventObject E) { - if (T == Type.IN || T == Type.OUT) { - DataflowEvent ce = (DataflowEvent) E; - if (ce.getValue() instanceof Number || ce.getValue() != null) { - Range range = ce.getAccess().getField().getAnnotation(Range.class); - if (range != null) { - Number v = (Number) ce.getValue(); - if (v != null) { - if (range.min() > v.doubleValue() || range.max() < v.doubleValue()) { - System.out.println(v + " not within expected range " + - range.min() + "..." + range.max() + " in " + ce.getAccess().getComponent() + ")"); - } - } else { - System.out.println("Null value"); - } - } - } - } - } - } - - /** - * Null checker. - * Check for 'null' being passed around as @In or @Out values. - */ - public static class NullCheck implements Listener { - - @Override - public void notice(Type T, EventObject E) { - if (T == Type.IN || T == Type.OUT) { - DataflowEvent ce = (DataflowEvent) E; - if (ce.getValue() == null) { - System.out.println("Null : " + ce.getAccess().getField().getName() + " in " + ce.getAccess().getComponent()); - } - } - } - } - - /** - * Unit converter. - */ - public static class UnitConverter implements Listener { - - // mapping data -> output unit - Map m = new HashMap(); - - @Override - public void notice(Type T, EventObject E) { - if (T == Type.OUT) { - DataflowEvent ce = (DataflowEvent) E; - Unit outUnit = ce.getAccess().getField().getAnnotation(Unit.class); - if (outUnit != null) { - m.put(ce.getValue(), outUnit.value()); - } - } else if (T == Type.IN) { - DataflowEvent ce = (DataflowEvent) E; - String out = m.get(ce.getValue()); - if (out != null) { - Unit inUnit = ce.getAccess().getField().getAnnotation(Unit.class); - if (inUnit != null) { - convert(out, inUnit.value(), ce.getValue()); - } - } - } - } - - private void convert(String out, String in, Object value) { - } - } - - public static class Printer implements Listener { - - @Override - public void notice(Type T, EventObject E) { - System.out.printf(" '%s' from %s\n", T, E.getSource()); - if (T == Type.EXCEPTION) { - ExceptionEvent ce = (ExceptionEvent) E; - System.out.printf(">>>>>>'%s' in %s\n", ce.getException()); - } - if (T == Type.OUT) { - DataflowEvent ce = (DataflowEvent) E; - System.out.printf(" '%s' -> \n", ce.getValue()); - } - if (T == Type.IN) { - DataflowEvent ce = (DataflowEvent) E; - System.out.printf(" -> '%s'\n", ce.getValue()); - } -// if (E.getEventType() == ExecutionEvent.Type.START && E.getCommand() == c.op1) { -// throw new InterruptedException("stop it."); -// } - } - } - - /** - * Simple Logging listener. - */ - public static class Logging implements Listener { - - Logger log; - Level level; - - public Logging(Logger log, Level level) { - this.log = log; - this.level = level; - } - - @Override - public void notice(Type T, EventObject E) { - log.log(level, T + ": " + E); - } - } -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.util; + +import java.util.EventObject; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; +import oms3.Notification.*; + +import oms3.annotations.Range; +import oms3.annotations.Unit; + +/** + * Listener support classes. + * + * @author Olaf David + * @version $Id$ + */ +public class Listeners { + + /** + * Range checker. + * + * A range checker that checks for In/Out values tha have an additional + * "@Range" annotation. + */ + public static class RangeCheck implements Listener { + + @Override + public void notice(Type T, EventObject E) { + if (T == Type.IN || T == Type.OUT) { + DataflowEvent ce = (DataflowEvent) E; + if (ce.getValue() instanceof Number || ce.getValue() != null) { + Range range = ce.getAccess().getField().getAnnotation(Range.class); + if (range != null) { + Number v = (Number) ce.getValue(); + if (v != null) { + if (range.min() > v.doubleValue() || range.max() < v.doubleValue()) { + System.out.println(v + " not within expected range " + + range.min() + "..." + range.max() + " in " + ce.getAccess().getComponent() + ")"); + } + } else { + System.out.println("Null value"); + } + } + } + } + } + } + + /** + * Null checker. + * Check for 'null' being passed around as @In or @Out values. + */ + public static class NullCheck implements Listener { + + @Override + public void notice(Type T, EventObject E) { + if (T == Type.IN || T == Type.OUT) { + DataflowEvent ce = (DataflowEvent) E; + if (ce.getValue() == null) { + System.out.println("Null : " + ce.getAccess().getField().getName() + " in " + ce.getAccess().getComponent()); + } + } + } + } + + /** + * Unit converter. + */ + public static class UnitConverter implements Listener { + + // mapping data -> output unit + Map m = new HashMap(); + + @Override + public void notice(Type T, EventObject E) { + if (T == Type.OUT) { + DataflowEvent ce = (DataflowEvent) E; + Unit outUnit = ce.getAccess().getField().getAnnotation(Unit.class); + if (outUnit != null) { + m.put(ce.getValue(), outUnit.value()); + } + } else if (T == Type.IN) { + DataflowEvent ce = (DataflowEvent) E; + String out = m.get(ce.getValue()); + if (out != null) { + Unit inUnit = ce.getAccess().getField().getAnnotation(Unit.class); + if (inUnit != null) { + convert(out, inUnit.value(), ce.getValue()); + } + } + } + } + + private void convert(String out, String in, Object value) { + } + } + + public static class Printer implements Listener { + + @Override + public void notice(Type T, EventObject E) { + System.out.printf(" '%s' from %s\n", T, E.getSource()); + if (T == Type.EXCEPTION) { + ExceptionEvent ce = (ExceptionEvent) E; + System.out.printf(">>>>>>'%s' in %s\n", ce.getException()); + } + if (T == Type.OUT) { + DataflowEvent ce = (DataflowEvent) E; + System.out.printf(" '%s' -> \n", ce.getValue()); + } + if (T == Type.IN) { + DataflowEvent ce = (DataflowEvent) E; + System.out.printf(" -> '%s'\n", ce.getValue()); + } +// if (E.getEventType() == ExecutionEvent.Type.START && E.getCommand() == c.op1) { +// throw new InterruptedException("stop it."); +// } + } + } + + /** + * Simple Logging listener. + */ + public static class Logging implements Listener { + + Logger log; + Level level; + + public Logging(Logger log, Level level) { + this.log = log; + this.level = level; + } + + @Override + public void notice(Type T, EventObject E) { + log.log(level, T + ": " + E); + } + } +} diff --git a/oms3/src/main/java/oms3/util/Threads.java b/oms3/src/main/java/oms3/util/Threads.java index f0c8e95f7..5024a01ae 100644 --- a/oms3/src/main/java/oms3/util/Threads.java +++ b/oms3/src/main/java/oms3/util/Threads.java @@ -1,162 +1,162 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ -package oms3.util; - -import java.util.ArrayList; -import java.util.Iterator; -import oms3.Compound; -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import oms3.ComponentAccess; -import oms3.annotations.Finalize; -import oms3.annotations.Initialize; - -/** - * Compound Execution utilities. - * - * @author Olaf David - * @version $Id$ - */ -public class Threads { - - public static abstract class CompList implements Iterable { - - List list; - public List p; - - public CompList(List list) { - this.list = list; - } - - public abstract Compound create(T src); - - List list() { - if (p == null) { - p = new ArrayList(); - for (T el : list) { - p.add(create(el)); - } - } - return p; - } - - @Override - public Iterator iterator() { - return list().iterator(); - } - } - - public static void seq_e(CompList t) { - for (Compound c : t) { - c.execute(); - } - } - - public static void seq_ief(CompList t) throws Exception { - for (Compound c : t) { - ComponentAccess.callAnnotated(c, Initialize.class, true); - c.execute(); - ComponentAccess.callAnnotated(c, Finalize.class, true); - } - } - - public static void par_ief(CompList t) throws Exception { - par_ief(t, Runtime.getRuntime().availableProcessors() + 1); - } - - public static ExecutorService e = Executors.newFixedThreadPool( - Runtime.getRuntime().availableProcessors() + 1); - - /** - * Runs a set of Compounds in parallel. there are always numproc + 1 threads active. - * @param comp - * @param numproc - * @throws java.lang.Exception - */ - private static void par_ief(CompList t, int numproc) throws Exception { - if (numproc < 1) { - throw new IllegalArgumentException("numproc"); - } - final CountDownLatch latch = new CountDownLatch(t.list().size()); -// final ExecutorService e = Executors.newFixedThreadPool(numproc); - for (final Compound c : t) { - e.submit(new Runnable() { - - @Override - public void run() { - try { - ComponentAccess.callAnnotated(c, Initialize.class, true); - c.execute(); - ComponentAccess.callAnnotated(c, Finalize.class, true); - } catch (Throwable E) { - e.shutdownNow(); - } - latch.countDown(); - } - }); - } - latch.await(); -// e.shutdown(); - } - - public static void par_e(CompList t) throws Exception { - par_e(t, Runtime.getRuntime().availableProcessors() + 1); - } - - public static void par_e(CompList t, int numproc) throws Exception { - if (numproc < 1) { - throw new IllegalArgumentException("numproc"); - } - final CountDownLatch latch = new CountDownLatch(t.list().size()); -// final ExecutorService e = Executors.newFixedThreadPool(numproc); - for (final Compound c : t) { - e.execute(new Runnable() { - - @Override - public void run() { - try { - c.execute(); - } catch (Throwable E) { - e.shutdownNow(); - } - latch.countDown(); - } - }); - } - latch.await(); -// e.shutdown(); - } - -// public static final Iterable it(final Iterator i) { -// return new Iterable() { -// -// @Override -// public Iterator iterator() { -// return i; -// } -// }; -// } - -} +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ +package oms3.util; + +import java.util.ArrayList; +import java.util.Iterator; +import oms3.Compound; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import oms3.ComponentAccess; +import oms3.annotations.Finalize; +import oms3.annotations.Initialize; + +/** + * Compound Execution utilities. + * + * @author Olaf David + * @version $Id$ + */ +public class Threads { + + public static abstract class CompList implements Iterable { + + List list; + public List p; + + public CompList(List list) { + this.list = list; + } + + public abstract Compound create(T src); + + List list() { + if (p == null) { + p = new ArrayList(); + for (T el : list) { + p.add(create(el)); + } + } + return p; + } + + @Override + public Iterator iterator() { + return list().iterator(); + } + } + + public static void seq_e(CompList t) { + for (Compound c : t) { + c.execute(); + } + } + + public static void seq_ief(CompList t) throws Exception { + for (Compound c : t) { + ComponentAccess.callAnnotated(c, Initialize.class, true); + c.execute(); + ComponentAccess.callAnnotated(c, Finalize.class, true); + } + } + + public static void par_ief(CompList t) throws Exception { + par_ief(t, Runtime.getRuntime().availableProcessors() + 1); + } + + public static ExecutorService e = Executors.newFixedThreadPool( + Runtime.getRuntime().availableProcessors() + 1); + + /** + * Runs a set of Compounds in parallel. there are always numproc + 1 threads active. + * @param comp + * @param numproc + * @throws java.lang.Exception + */ + private static void par_ief(CompList t, int numproc) throws Exception { + if (numproc < 1) { + throw new IllegalArgumentException("numproc"); + } + final CountDownLatch latch = new CountDownLatch(t.list().size()); +// final ExecutorService e = Executors.newFixedThreadPool(numproc); + for (final Compound c : t) { + e.submit(new Runnable() { + + @Override + public void run() { + try { + ComponentAccess.callAnnotated(c, Initialize.class, true); + c.execute(); + ComponentAccess.callAnnotated(c, Finalize.class, true); + } catch (Throwable E) { + e.shutdownNow(); + } + latch.countDown(); + } + }); + } + latch.await(); +// e.shutdown(); + } + + public static void par_e(CompList t) throws Exception { + par_e(t, Runtime.getRuntime().availableProcessors() + 1); + } + + public static void par_e(CompList t, int numproc) throws Exception { + if (numproc < 1) { + throw new IllegalArgumentException("numproc"); + } + final CountDownLatch latch = new CountDownLatch(t.list().size()); +// final ExecutorService e = Executors.newFixedThreadPool(numproc); + for (final Compound c : t) { + e.execute(new Runnable() { + + @Override + public void run() { + try { + c.execute(); + } catch (Throwable E) { + e.shutdownNow(); + } + latch.countDown(); + } + }); + } + latch.await(); +// e.shutdown(); + } + +// public static final Iterable it(final Iterator i) { +// return new Iterable() { +// +// @Override +// public Iterator iterator() { +// return i; +// } +// }; +// } + +} diff --git a/oms3/src/main/java/oms3/util/package-info.java b/oms3/src/main/java/oms3/util/package-info.java index fcd0ef42d..8b5646292 100644 --- a/oms3/src/main/java/oms3/util/package-info.java +++ b/oms3/src/main/java/oms3/util/package-info.java @@ -1,31 +1,31 @@ -/* - * $Id$ - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - */ - -/** - * Utilities. - * - * @author Olaf David (olaf.david@ars.usda.gov) - * @version $Id$ - */ -package oms3.util; - +/* + * $Id$ + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ + +/** + * Utilities. + * + * @author Olaf David (olaf.david@ars.usda.gov) + * @version $Id$ + */ +package oms3.util; + diff --git a/oms3/src/main/java/org/omscentral/modules/analysis/esp/Bundle.properties b/oms3/src/main/java/org/omscentral/modules/analysis/esp/Bundle.properties index f24508fca..874ea031c 100644 --- a/oms3/src/main/java/org/omscentral/modules/analysis/esp/Bundle.properties +++ b/oms3/src/main/java/org/omscentral/modules/analysis/esp/Bundle.properties @@ -1,37 +1,37 @@ -# Sample ResourceBundle properties file - -NewJPanel.tracePanel.border.title=Ensemble Traces - -NewJPanel.jLabel6.text=DMI End\: - -NewJPanel.jLabel5.text=DMI Start\: - -NewJPanel.dmiDatePanel.border.title=DMI Dates - -NewJPanel.initEndLabel.text=jLabel9 - -NewJPanel.initStartLabel.text=jLabel9 - -NewJPanel.jLabel8.text=Intialization End\: -NewJPanel.jLabel7.text=Init Period\: - -NewJPanel.ensembleEndLabel.text=jLabel5 - -NewJPanel.ensembleStartLabel.text=2004-01-01 - -NewJPanel.jLabel4.text=Analysis End\: -NewJPanel.jLabel3.text=Analysis Period\: - -NewJPanel.jLabel2.text=Forecast End\: -NewJPanel.jLabel1.text=Forecast Period\: - -NewJPanel.analysisDatePanel.border.title=Analysis Dates -NewJPanel.jRadioButton3.text=Year -NewJPanel.jRadioButton2.text=Peak -NewJPanel.jRadioButton1.text=Volume - -NewJPanel.rankPanel.border.title=Rank By -ESPToolPanel.reportButton.text=Report -ESPToolPanel.jLabel2.text=Sort by: -ESPToolPanel.resultPath.text=path ... -ESPToolPanel.jLabel4.text=Traces: +# Sample ResourceBundle properties file + +NewJPanel.tracePanel.border.title=Ensemble Traces + +NewJPanel.jLabel6.text=DMI End\: + +NewJPanel.jLabel5.text=DMI Start\: + +NewJPanel.dmiDatePanel.border.title=DMI Dates + +NewJPanel.initEndLabel.text=jLabel9 + +NewJPanel.initStartLabel.text=jLabel9 + +NewJPanel.jLabel8.text=Intialization End\: +NewJPanel.jLabel7.text=Init Period\: + +NewJPanel.ensembleEndLabel.text=jLabel5 + +NewJPanel.ensembleStartLabel.text=2004-01-01 + +NewJPanel.jLabel4.text=Analysis End\: +NewJPanel.jLabel3.text=Analysis Period\: + +NewJPanel.jLabel2.text=Forecast End\: +NewJPanel.jLabel1.text=Forecast Period\: + +NewJPanel.analysisDatePanel.border.title=Analysis Dates +NewJPanel.jRadioButton3.text=Year +NewJPanel.jRadioButton2.text=Peak +NewJPanel.jRadioButton1.text=Volume + +NewJPanel.rankPanel.border.title=Rank By +ESPToolPanel.reportButton.text=Report +ESPToolPanel.jLabel2.text=Sort by: +ESPToolPanel.resultPath.text=path ... +ESPToolPanel.jLabel4.text=Traces: diff --git a/pom.xml b/pom.xml index 0f0966d9f..7cd5569c9 100644 --- a/pom.xml +++ b/pom.xml @@ -1,220 +1,220 @@ - - - 4.0.0 - - - - 9.0-M0 - 1.3.0 - 0.2.1 - false - - - org.jgrasstools - jgrasstools - 0.7.7-SNAPSHOT - - pom - JGrasstools - uDig's geospatial toolbox (but not only) - http://www.jgrasstools.org - - - oms3 - jgrassgears - hortonmachine - grass - - - - http://code.google.com/p/jgrasstools/issues/list - - - - - jgrasstools - jgrasstools+subscribe@googlegroups.com - jgrasstools+unsubscribe@googlegroups.com - jgrasstools@googlegroups.com - http://groups.google.com/group/jgrasstools - - - - - scm:hg:http://jgrasstools.googlecode.com/hg/ - scm:hg:https://jgrasstools.googlecode.com/hg/ - http://code.google.com/p/jgrasstools/source/browse/ - - - - HydroloGIS - http://www.hydrologis.eu - - 2005 - - - - General Public License V.3 (GPL3) - http://www.gnu.org/licenses/gpl.html - repo - - - - - org.sonatype.oss - oss-parent - 6 - - - - - moovida - Andrea Antonello - andrea.antonello@gmail.com - HydroloGIS - http://www.hydrologis.eu/ - - - - - - - - - sonatype-nexus-snapshots - jgrasstools snapshots - http://oss.sonatype.org/content/repositories/snapshots - false - - - sonatype-nexus-staging - jgrasstools staging repository - http://oss.sonatype.org/service/local/staging/deploy/maven2 - - - - - - - - - - osgeo - Open Source Geospatial Foundation Repository - http://download.osgeo.org/webdav/geotools/ - - - - - true - - opengeo - OpenGeo Maven Repository - http://repo.opengeo.org - - - JBOSS - JBoss Repository - http://repository.jboss.org/maven2/ - - - - - true - - sonatype-nexus-snapshots - jgrasstools snapshots - http://oss.sonatype.org/content/repositories/snapshots - - - - - - - - - org.apache.maven.wagon - wagon-webdav - 1.0-beta-2 - - - - - maven-release-plugin - 2.0-beta-9 - - true - forked-path - - - - maven-compiler-plugin - - 1.6 - 1.6 - UTF-8 - - - - maven-resources-plugin - - UTF-8 - - - - - - - - - - release-sign-artifacts - - - performRelease - true - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.1 - - - sign-artifacts - verify - - sign - - - - - - - - - - - + + + 4.0.0 + + + + 9.0-M0 + 1.3.0 + 0.2.1 + false + + + org.jgrasstools + jgrasstools + 0.7.7-SNAPSHOT + + pom + JGrasstools - uDig's geospatial toolbox (but not only) + http://www.jgrasstools.org + + + oms3 + jgrassgears + hortonmachine + grass + + + + http://code.google.com/p/jgrasstools/issues/list + + + + + jgrasstools + jgrasstools+subscribe@googlegroups.com + jgrasstools+unsubscribe@googlegroups.com + jgrasstools@googlegroups.com + http://groups.google.com/group/jgrasstools + + + + + scm:hg:http://jgrasstools.googlecode.com/hg/ + scm:hg:https://jgrasstools.googlecode.com/hg/ + http://code.google.com/p/jgrasstools/source/browse/ + + + + HydroloGIS + http://www.hydrologis.eu + + 2005 + + + + General Public License V.3 (GPL3) + http://www.gnu.org/licenses/gpl.html + repo + + + + + org.sonatype.oss + oss-parent + 6 + + + + + moovida + Andrea Antonello + andrea.antonello@gmail.com + HydroloGIS + http://www.hydrologis.eu/ + + + + + + + + + sonatype-nexus-snapshots + jgrasstools snapshots + http://oss.sonatype.org/content/repositories/snapshots + false + + + sonatype-nexus-staging + jgrasstools staging repository + http://oss.sonatype.org/service/local/staging/deploy/maven2 + + + + + + + + + + osgeo + Open Source Geospatial Foundation Repository + http://download.osgeo.org/webdav/geotools/ + + + + + true + + opengeo + OpenGeo Maven Repository + http://repo.opengeo.org + + + JBOSS + JBoss Repository + http://repository.jboss.org/maven2/ + + + + + true + + sonatype-nexus-snapshots + jgrasstools snapshots + http://oss.sonatype.org/content/repositories/snapshots + + + + + + + + + org.apache.maven.wagon + wagon-webdav + 1.0-beta-2 + + + + + maven-release-plugin + 2.0-beta-9 + + true + forked-path + + + + maven-compiler-plugin + + 1.6 + 1.6 + UTF-8 + + + + maven-resources-plugin + + UTF-8 + + + + + + + + + + release-sign-artifacts + + + performRelease + true + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.1 + + + sign-artifacts + verify + + sign + + + + + + + + + + +